From 4719e7201311a6c78d26db4118a4d3f073c06360 Mon Sep 17 00:00:00 2001 From: Jeremy Whitlock Date: Sun, 2 Dec 2018 20:35:53 -0700 Subject: [PATCH] Rename `SwaggerApi` to `ApiDefinition` Part of #128 --- RELEASE_NOTES.md | 3 + browser/sway-min.js | 2 +- browser/sway-standalone-min.js | 2 +- browser/sway-standalone.js | 253 +++--- browser/sway.js | 253 +++--- docs/API.md | 478 +++++------ index.d.ts | 78 +- index.js | 32 +- lib/helpers.js | 8 +- lib/typedefs.js | 16 +- lib/types/{api.js => api-definition.js} | 78 +- lib/types/operation.js | 31 +- lib/types/parameter.js | 18 +- lib/types/path.js | 26 +- lib/types/response.js | 8 +- lib/validation/validators.js | 64 +- test/helpers.js | 68 +- test/{test-api.js => test-api-definition.js} | 798 +++++++++---------- test/test-format-generators.js | 28 +- test/test-format-validators.js | 40 +- test/test-issues.js | 140 ++-- test/test-operation.js | 156 ++-- test/test-parameter.js | 466 +++++------ test/test-path.js | 56 +- test/test-response.js | 138 ++-- test/test-sway.js | 26 +- 26 files changed, 1640 insertions(+), 1626 deletions(-) rename lib/types/{api.js => api-definition.js} (81%) rename test/{test-api.js => test-api-definition.js} (69%) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 37878adf..a4050f20 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -3,6 +3,9 @@ ### v3.0.0 (TBD) * OpenAPI _v3.x_ support *(Issue #128)* +* API Changes + * `Path.api` -> `Path.apiDefinition` + * `SwaggerApi` -> `ApiDefinition` ### v2.0.4 (2018-08-31) diff --git a/browser/sway-min.js b/browser/sway-min.js index e326310e..cf62f758 100644 --- a/browser/sway-min.js +++ b/browser/sway-min.js @@ -1 +1 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Sway=e()}}(function(){return function r(o,s,c){function u(t,e){if(!s[t]){if(!o[t]){var a="function"==typeof require&&require;if(!e&&a)return a(t,!0);if(p)return p(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=s[t]={exports:{}};o[t][0].call(i.exports,function(e){return u(o[t][1][e]||e)},i,i.exports,r,o,s,c)}return s[t].exports}for(var p="function"==typeof require&&require,e=0;e>16&255,r[o++]=t>>8&255,r[o++]=255&t;var u,p;2===i&&(t=l[e.charCodeAt(c)]<<2|l[e.charCodeAt(c+1)]>>4,r[o++]=255&t);1===i&&(t=l[e.charCodeAt(c)]<<10|l[e.charCodeAt(c+1)]<<4|l[e.charCodeAt(c+2)]>>2,r[o++]=t>>8&255,r[o++]=255&t);return r},a.fromByteArray=function(e){for(var t,a=e.length,n=a%3,i=[],r=0,o=a-n;r>2]+s[t<<4&63]+"==")):2===n&&(t=(e[a-2]<<8)+e[a-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")};for(var s=[],l=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,r=n.length;i>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return r.join("")}l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63},{}],17:[function(e,t,a){},{}],18:[function(e,t,a){},{}],19:[function(e,R,M){(function(z){"use strict";var B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e){var t="object"==(void 0===M?"undefined":B(M))&&M&&!M.nodeType&&M,a="object"==(void 0===R?"undefined":B(R))&&R&&!R.nodeType&&R,n="object"==(void 0===z?"undefined":B(z))&&z;n.global!==n&&n.window!==n&&n.self!==n||(e=n);var i,r,y=2147483647,v=36,w=1,b=26,o=38,s=700,x=72,A=128,E="-",c=/^xn--/,u=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=v-w,j=Math.floor,C=String.fromCharCode;function D(e){throw new RangeError(l[e])}function m(e,t){for(var a=e.length,n=[];a--;)n[a]=t(e[a]);return n}function d(e,t){var a=e.split("@"),n="";return 1>>10&1023|55296),e=56320|1023&e),t+=C(e)}).join("")}function F(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function _(e,t,a){var n=0;for(e=a?j(e/s):e>>1,e+=j(e/t);f*b>>1j((y-d)/o))&&D("overflow"),d+=c*o,!(c<(u=s<=g?w:g+b<=s?b:s-g));s+=v)o>j(y/(p=v-u))&&D("overflow"),o*=p;g=_(d-r,t=f.length+1,0==r),j(d/t)>y-h&&D("overflow"),h+=j(d/t),d%=t,f.splice(d++,0,h)}return k(f)}function g(e){var t,a,n,i,r,o,s,c,u,p,l,f,m,d,h,g=[];for(f=(e=S(e)).length,t=A,r=x,o=a=0;oj((y-a)/(m=n+1))&&D("overflow"),a+=(s-t)*m,t=s,o=0;oy&&D("overflow"),l==t){for(c=a,u=v;!(c<(p=u<=r?w:r+b<=u?b:u-r));u+=v)h=c-p,d=v-p,g.push(C(F(p+h%d,0))),c=j(h/d);g.push(C(F(c,0))),r=_(a,m,n==i),a=0,++n}++a,++t}return g.join("")}if(i={version:"1.4.1",ucs2:{decode:S,encode:k},decode:h,encode:g,toASCII:function(e){return d(e,function(e){return u.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return d(e,function(e){return c.test(e)?h(e.slice(4).toLowerCase()):e})}},t&&a)if(R.exports==t)a.exports=i;else for(r in i)i.hasOwnProperty(r)&&(t[r]=i[r]);else e.punycode=i}(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,a){"use strict";var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=e("base64-js"),r=e("ieee754");a.Buffer=f,a.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},a.INSPECT_MAX_BYTES=50;var i=2147483647;function o(e){if(i>>1;case"base64":return T(e).length;default:if(i)return n?-1:M(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,a){var n=e[t];e[t]=e[a],e[a]=n}function g(e,t,a,n,i){if(0===e.length)return-1;if("string"==typeof a?(n=a,a=0):2147483647=e.length){if(i)return-1;a=e.length-1}else if(a<0){if(!i)return-1;a=0}if("string"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:y(e,t,a,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):y(e,[t],a,n,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,a,n,i){var r,o=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s/=o=2,c/=2,a/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var p=-1;for(r=a;r>>10&1023|55296),p=56320|1023&p),n.push(p),i+=l}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var a="",n=0;for(;nthis.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,a);case"utf8":case"utf-8":return x(this,t,a);case"ascii":return E(this,t,a);case"latin1":case"binary":return j(this,t,a);case"base64":return b(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,a);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=a.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},f.prototype.compare=function(e,t,a,n,i){if(I(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(void 0===e?"undefined":l(e)));if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||a>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&a<=t)return 0;if(i<=n)return-1;if(a<=t)return 1;if(this===e)return 0;for(var r=(i>>>=0)-(n>>>=0),o=(a>>>=0)-(t>>>=0),s=Math.min(r,o),c=this.slice(n,i),u=e.slice(t,a),p=0;p>>=0,isFinite(a)?(a>>>=0,void 0===n&&(n="utf8")):(n=a,a=void 0)}var i=this.length-t;if((void 0===a||ithis.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var r,o,s,c,u,p,l,f,m,d=!1;;)switch(n){case"hex":return v(this,e,t,a);case"utf8":case"utf-8":return f=t,m=a,O(M(e,(l=this).length-f),l,f,m);case"ascii":return w(this,e,t,a);case"latin1":case"binary":return w(this,e,t,a);case"base64":return c=this,u=t,p=a,O(T(e),c,u,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=t,s=a,O(function(e,t){for(var a,n,i,r=[],o=0;o>8,i=a%256,r.push(i),r.push(n);return r}(e,(r=this).length-o),r,o,s);default:if(d)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),d=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function E(e,t,a){var n="";a=Math.min(e.length,a);for(var i=t;ie.length)throw new RangeError("Index out of range")}function F(e,t,a,n,i,r){if(a+n>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function _(e,t,a,n,i){return t=+t,a>>>=0,i||F(e,0,a,4),r.write(e,t,a,n,23,4),a+4}function z(e,t,a,n,i){return t=+t,a>>>=0,i||F(e,0,a,8),r.write(e,t,a,n,52,8),a+8}f.prototype.slice=function(e,t){var a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):a>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e],i=1,r=0;++r>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e+--t],i=1;0>>=0,t||S(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,a){e>>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e],i=1,r=0;++r>>=0,t>>>=0,a||S(e,t,this.length);for(var n=t,i=1,r=this[e+--n];0>>=0,t||S(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||S(e,2,this.length);var a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},f.prototype.readInt16BE=function(e,t){e>>>=0,t||S(e,2,this.length);var a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||S(e,4,this.length),r.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||S(e,4,this.length),r.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||S(e,8,this.length),r.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||S(e,8,this.length),r.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,a,n){(e=+e,t>>>=0,a>>>=0,n)||k(this,e,t,a,Math.pow(2,8*a)-1,0);var i=1,r=0;for(this[t]=255&e;++r>>=0,a>>>=0,n)||k(this,e,t,a,Math.pow(2,8*a)-1,0);var i=a-1,r=1;for(this[t+i]=255&e;0<=--i&&(r*=256);)this[t+i]=e/r&255;return t+a},f.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*a-1);k(this,e,t,a,i-1,-i)}var r=0,o=1,s=0;for(this[t]=255&e;++r>0)-s&255;return t+a},f.prototype.writeIntBE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*a-1);k(this,e,t,a,i-1,-i)}var r=a-1,o=1,s=0;for(this[t+r]=255&e;0<=--r&&(o*=256);)e<0&&0===s&&0!==this[t+r+1]&&(s=1),this[t+r]=(e/o>>0)-s&255;return t+a},f.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,a){return _(this,e,t,!0,a)},f.prototype.writeFloatBE=function(e,t,a){return _(this,e,t,!1,a)},f.prototype.writeDoubleLE=function(e,t,a){return z(this,e,t,!0,a)},f.prototype.writeDoubleBE=function(e,t,a){return z(this,e,t,!1,a)},f.prototype.copy=function(e,t,a,n){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),0=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(r=t;r>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;r.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return r}function T(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function O(e,t,a,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+a]=e[i];return i}function I(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}},{"base64-js":16,ieee754:164}],21:[function(e,t,a){"use strict";t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],22:[function(e,n,t){(function(e,t){"use strict";var a=t.process&&e.nextTick||t.setImmediate||function(e){setTimeout(e,0)};n.exports=function(t,e){return t?void e.then(function(e){a(function(){t(null,e)})},function(e){a(function(){t(e)})}):e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:235}],23:[function(e,t,n){(function(e){"use strict";var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e){return Object.prototype.toString.call(e)}n.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===a(e)},n.isBoolean=function(e){return"boolean"==typeof e},n.isNull=function(e){return null===e},n.isNullOrUndefined=function(e){return null==e},n.isNumber=function(e){return"number"==typeof e},n.isString=function(e){return"string"==typeof e},n.isSymbol=function(e){return"symbol"===(void 0===e?"undefined":t(e))},n.isUndefined=function(e){return void 0===e},n.isRegExp=function(e){return"[object RegExp]"===a(e)},n.isObject=function(e){return"object"===(void 0===e?"undefined":t(e))&&null!==e},n.isDate=function(e){return"[object Date]"===a(e)},n.isError=function(e){return"[object Error]"===a(e)||e instanceof Error},n.isFunction=function(e){return"function"==typeof e},n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===(void 0===e?"undefined":t(e))||void 0===e},n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":166}],24:[function(n,i,r){(function(t){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(){var e;try{e=r.storage.debug}catch(e){}return!e&&void 0!==t&&"env"in t&&(e=t.env.DEBUG),e}(r=i.exports=n("./debug")).log=function(){return"object"===("undefined"==typeof console?"undefined":e(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),!t)return;var a="color: "+this.color;e.splice(1,0,a,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(n++,"%c"===e&&(i=n))}),e.splice(i,0,a)},r.save=function(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(e){}},r.load=a,r.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(a())}).call(this,n("_process"))},{"./debug":25,_process:235}],25:[function(e,t,c){"use strict";function a(e){var n;function s(){if(s.enabled){var i=s,e=+new Date,t=e-(n||e);i.diff=t,i.prev=n,i.curr=e,n=e;for(var r=new Array(arguments.length),a=0;ae.high)}},{key:"touches",value:function(e){return!(this.high+1e.high)}},{key:"add",value:function(e){return new a(Math.min(this.low,e.low),Math.max(this.high,e.high))}},{key:"subtract",value:function(e){return e.low<=this.low&&e.high>=this.high?[]:e.low>this.low&&e.highi){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,"object"===("undefined"==typeof console?"undefined":c(console))&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else o=r[t]=a,++e._eventsCount;return e}function m(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t '+e+"x"+t+" ")}}},{}],50:[function(E,e,t){"use strict";function a(e){var a=this;e=e||{};var t=a.locales||e.locales||{},n=a.locale||e.locale||"en",i=a.localeFallback||e.localeFallback||"en";function r(t){return Object.keys(t).forEach(function(e){"function"==typeof t[e]&&(t[e]=t[e].bind(t))}),t}a.locales=t,a.locale=n,a.localeFallback=i,a.definitions={};var o=E("./fake");a.fake=new o(a).fake;var s=E("./random");a.random=r(new s(a));var c=E("./helpers");a.helpers=new c(a);var u=E("./name");a.name=r(new u(a));var p=E("./address");a.address=r(new p(a));var l=E("./company");a.company=r(new l(a));var f=E("./finance");a.finance=r(new f(a));var m=E("./image");a.image=r(new m(a));var d=E("./lorem");a.lorem=r(new d(a));var h=E("./hacker");a.hacker=r(new h(a));var g=E("./internet");a.internet=r(new g(a));var y=E("./database");a.database=r(new y(a));var v=E("./phone_number");a.phone=r(new v(a));var w=E("./date");a.date=r(new w(a));var b=E("./commerce");a.commerce=r(new b(a));var x=E("./system");a.system=r(new x(a));var A={name:["first_name","last_name","prefix","suffix","title","male_first_name","female_first_name","male_middle_name","female_middle_name","male_last_name","female_last_name"],address:["city_prefix","city_suffix","street_suffix","county","country","country_code","state","state_abbr","street_prefix","postcode"],company:["adjective","noun","descriptor","bs_adjective","bs_noun","bs_verb","suffix"],lorem:["words"],hacker:["abbreviation","adjective","noun","verb","ingverb"],phone_number:["formats"],finance:["account_type","transaction_type","currency","iban"],internet:["avatar_uri","domain_suffix","free_email","example_email","password"],commerce:["color","department","product_name","price","categories"],database:["collation","column","engine","type"],system:["mimeTypes"],date:["month","weekday"],title:"",separator:""};Object.keys(A).forEach(function(t){void 0===a.definitions[t]&&(a.definitions[t]={}),"string"!=typeof A[t]?A[t].forEach(function(e){Object.defineProperty(a.definitions[t],e,{get:function(){return void 0===a.locales[a.locale][t]||void 0===a.locales[a.locale][t][e]?a.locales[i][t][e]:a.locales[a.locale][t][e]}})}):a.definitions[t]=A[t]})}a.prototype.seed=function(e){var t=E("./random");this.seedValue=e,this.random=new t(this,this.seedValue)},e.exports=a},{"./address":39,"./commerce":40,"./company":41,"./database":42,"./date":43,"./fake":44,"./finance":45,"./hacker":46,"./helpers":47,"./image":49,"./internet":51,"./lorem":154,"./name":155,"./phone_number":156,"./random":157,"./system":158}],51:[function(e,t,a){"use strict";var i=e("../vendor/user-agent");t.exports=function(u){var n=this;n.avatar=function(){return u.random.arrayElement(u.definitions.internet.avatar_uri)},n.avatar.schema={description:"Generates a URL for an avatar.",sampleResults:["https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg"]},n.email=function(e,t,a){return a=a||u.random.arrayElement(u.definitions.internet.free_email),u.helpers.slugify(u.internet.userName(e,t))+"@"+a},n.email.schema={description:"Generates a valid email address based on optional input criteria",sampleResults:["foo.bar@gmail.com"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"},provider:{type:"string",required:!1,description:"The domain of the user"}}},n.exampleEmail=function(e,t){var a=u.random.arrayElement(u.definitions.internet.example_email);return n.email(e,t,a)},n.userName=function(e,t){var a;switch(e=e||u.name.firstName(),t=t||u.name.lastName(),u.random.number(2)){case 0:a=e+u.random.number(99);break;case 1:a=e+u.random.arrayElement([".","_"])+t;break;case 2:a=e+u.random.arrayElement([".","_"])+t+u.random.number(99)}return a=(a=a.toString().replace(/'/g,"")).replace(/ /g,"")},n.userName.schema={description:"Generates a username based on one of several patterns. The pattern is chosen randomly.",sampleResults:["Kirstin39","Kirstin.Smith","Kirstin.Smith39","KirstinSmith","KirstinSmith39"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"}}},n.protocol=function(){return u.random.arrayElement(["http","https"])},n.protocol.schema={description:"Randomly generates http or https",sampleResults:["https","http"]},n.url=function(){return u.internet.protocol()+"://"+u.internet.domainName()},n.url.schema={description:"Generates a random URL. The URL could be secure or insecure.",sampleResults:["http://rashawn.name","https://rashawn.name"]},n.domainName=function(){return u.internet.domainWord()+"."+u.internet.domainSuffix()},n.domainName.schema={description:"Generates a random domain name.",sampleResults:["marvin.org"]},n.domainSuffix=function(){return u.random.arrayElement(u.definitions.internet.domain_suffix)},n.domainSuffix.schema={description:"Generates a random domain suffix.",sampleResults:["net"]},n.domainWord=function(){return u.name.firstName().replace(/([\\~#&*{}/:<>?|\"'])/gi,"").toLowerCase()},n.domainWord.schema={description:"Generates a random domain word.",sampleResults:["alyce"]},n.ip=function(){for(var e=[],t=0;t<4;t++)e[t]=u.random.number(255).toFixed(0);return e.join(".")},n.ip.schema={description:"Generates a random IP.",sampleResults:["97.238.241.11"]},n.ipv6=function(){for(var e=function(){for(var e="",t=0;t<4;t++)e+=u.random.arrayElement(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);return e},t=[],a=0;a<8;a++)t[a]=e();return t.join(":")},n.ipv6.schema={description:"Generates a random IPv6 address.",sampleResults:["2001:0db8:6276:b1a7:5213:22f1:25df:c8a0"]},n.userAgent=function(){return i.generate()},n.userAgent.schema={description:"Generates a random user agent.",sampleResults:["Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1"]},n.color=function(e,t,a){e=e||0,t=t||0,a=a||0;var n=Math.floor((u.random.number(256)+e)/2),i=Math.floor((u.random.number(256)+t)/2),r=Math.floor((u.random.number(256)+a)/2),o=n.toString(16),s=i.toString(16),c=r.toString(16);return"#"+(1===o.length?"0":"")+o+(1===s.length?"0":"")+s+(1===c.length?"0":"")+c},n.color.schema={description:"Generates a random hexadecimal color.",sampleResults:["#06267f"],properties:{baseRed255:{type:"number",required:!1,description:"The red value. Valid values are 0 - 255."},baseGreen255:{type:"number",required:!1,description:"The green value. Valid values are 0 - 255."},baseBlue255:{type:"number",required:!1,description:"The blue value. Valid values are 0 - 255."}}},n.mac=function(){var e,t="";for(e=0;e<12;e++)t+=u.random.number(15).toString(16),e%2==1&&11!=e&&(t+=":");return t},n.mac.schema={description:"Generates a random mac address.",sampleResults:["78:06:cc:ae:b3:81"]},n.password=function(e,t,a,n){var s,c;return void 0===t&&(t=!1),c=/[aeiouAEIOU]$/,s=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,function e(t,a,n,i){var r,o;return null==t&&(t=10),null==a&&(a=!0),null==n&&(n=/\w/),null==i&&(i=""),i.length>=t?i:(a&&(n=i.match(s)?c:s),o=u.random.number(94)+33,r=String.fromCharCode(o),a&&(r=r.toLowerCase()),r.match(n)?e(t,a,n,""+i+r):e(t,a,n,i))}(e=e||15,t,a,n)},n.password.schema={description:"Generates a random password.",sampleResults:["AM7zl6Mg","susejofe"],properties:{length:{type:"number",required:!1,description:"The number of characters in the password."},memorable:{type:"boolean",required:!1,description:"Whether a password should be easy to remember."},pattern:{type:"regex",required:!1,description:"A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on."},prefix:{type:"string",required:!1,description:"A value to prepend to the generated password. The prefix counts towards the length of the password."}}}}},{"../vendor/user-agent":161}],52:[function(e,t,a){"use strict";t.exports=["#####","####","###"]},{}],53:[function(e,t,a){"use strict";t.exports=["#{city_prefix} #{Name.first_name}#{city_suffix}","#{city_prefix} #{Name.first_name}","#{Name.first_name}#{city_suffix}","#{Name.last_name}#{city_suffix}"]},{}],54:[function(e,t,a){"use strict";t.exports=["North","East","West","South","New","Lake","Port"]},{}],55:[function(e,t,a){"use strict";t.exports=["town","ton","land","ville","berg","burgh","borough","bury","view","port","mouth","stad","furt","chester","mouth","fort","haven","side","shire"]},{}],56:[function(e,t,a){"use strict";t.exports=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica (the territory South of 60 deg S)","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island (Bouvetoya)","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands Antilles","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestinian Territory","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia (Slovak Republic)","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"]},{}],57:[function(e,t,a){"use strict";t.exports=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},{}],58:[function(e,t,a){"use strict";t.exports=["Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire"]},{}],59:[function(e,t,a){"use strict";t.exports=["United States of America"]},{}],60:[function(e,t,a){"use strict";var n={};(t.exports=n).city_prefix=e("./city_prefix"),n.city_suffix=e("./city_suffix"),n.county=e("./county"),n.country=e("./country"),n.country_code=e("./country_code"),n.building_number=e("./building_number"),n.street_suffix=e("./street_suffix"),n.secondary_address=e("./secondary_address"),n.postcode=e("./postcode"),n.postcode_by_state=e("./postcode_by_state"),n.state=e("./state"),n.state_abbr=e("./state_abbr"),n.time_zone=e("./time_zone"),n.city=e("./city"),n.street_name=e("./street_name"),n.street_address=e("./street_address"),n.default_country=e("./default_country")},{"./building_number":52,"./city":53,"./city_prefix":54,"./city_suffix":55,"./country":56,"./country_code":57,"./county":58,"./default_country":59,"./postcode":61,"./postcode_by_state":62,"./secondary_address":63,"./state":64,"./state_abbr":65,"./street_address":66,"./street_name":67,"./street_suffix":68,"./time_zone":69}],61:[function(e,t,a){"use strict";t.exports=["#####","#####-####"]},{}],62:[function(e,t,a){"use strict";t.exports=["#####","#####-####"]},{}],63:[function(e,t,a){"use strict";t.exports=["Apt. ###","Suite ###"]},{}],64:[function(e,t,a){"use strict";t.exports=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]},{}],65:[function(e,t,a){"use strict";t.exports=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"]},{}],66:[function(e,t,a){"use strict";t.exports=["#{building_number} #{street_name}"]},{}],67:[function(e,t,a){"use strict";t.exports=["#{Name.first_name} #{street_suffix}","#{Name.last_name} #{street_suffix}"]},{}],68:[function(e,t,a){"use strict";t.exports=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Inlet","Island","Island","Islands","Islands","Isle","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Locks","Lodge","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Mission","Motorway","Mount","Mountain","Mountain","Mountains","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plains","Plaza","Plaza","Point","Points","Port","Port","Ports","Ports","Prairie","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Road","Roads","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Springs","Spur","Spurs","Square","Square","Squares","Squares","Station","Station","Stravenue","Stravenue","Stream","Stream","Street","Street","Streets","Summit","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Trail","Tunnel","Tunnel","Turnpike","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Village","Villages","Ville","Vista","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},{}],69:[function(e,t,a){"use strict";t.exports=["Pacific/Midway","Pacific/Pago_Pago","Pacific/Honolulu","America/Juneau","America/Los_Angeles","America/Tijuana","America/Denver","America/Phoenix","America/Chihuahua","America/Mazatlan","America/Chicago","America/Regina","America/Mexico_City","America/Mexico_City","America/Monterrey","America/Guatemala","America/New_York","America/Indiana/Indianapolis","America/Bogota","America/Lima","America/Lima","America/Halifax","America/Caracas","America/La_Paz","America/Santiago","America/St_Johns","America/Sao_Paulo","America/Argentina/Buenos_Aires","America/Guyana","America/Godthab","Atlantic/South_Georgia","Atlantic/Azores","Atlantic/Cape_Verde","Europe/Dublin","Europe/London","Europe/Lisbon","Europe/London","Africa/Casablanca","Africa/Monrovia","Etc/UTC","Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Prague","Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris","Europe/Amsterdam","Europe/Berlin","Europe/Berlin","Europe/Rome","Europe/Stockholm","Europe/Vienna","Africa/Algiers","Europe/Bucharest","Africa/Cairo","Europe/Helsinki","Europe/Kiev","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Vilnius","Europe/Athens","Europe/Istanbul","Europe/Minsk","Asia/Jerusalem","Africa/Harare","Africa/Johannesburg","Europe/Moscow","Europe/Moscow","Europe/Moscow","Asia/Kuwait","Asia/Riyadh","Africa/Nairobi","Asia/Baghdad","Asia/Tehran","Asia/Muscat","Asia/Muscat","Asia/Baku","Asia/Tbilisi","Asia/Yerevan","Asia/Kabul","Asia/Yekaterinburg","Asia/Karachi","Asia/Karachi","Asia/Tashkent","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kathmandu","Asia/Dhaka","Asia/Dhaka","Asia/Colombo","Asia/Almaty","Asia/Novosibirsk","Asia/Rangoon","Asia/Bangkok","Asia/Bangkok","Asia/Jakarta","Asia/Krasnoyarsk","Asia/Shanghai","Asia/Chongqing","Asia/Hong_Kong","Asia/Urumqi","Asia/Kuala_Lumpur","Asia/Singapore","Asia/Taipei","Australia/Perth","Asia/Irkutsk","Asia/Ulaanbaatar","Asia/Seoul","Asia/Tokyo","Asia/Tokyo","Asia/Tokyo","Asia/Yakutsk","Australia/Darwin","Australia/Adelaide","Australia/Melbourne","Australia/Melbourne","Australia/Sydney","Australia/Brisbane","Australia/Hobart","Asia/Vladivostok","Pacific/Guam","Pacific/Port_Moresby","Asia/Magadan","Asia/Magadan","Pacific/Noumea","Pacific/Fiji","Asia/Kamchatka","Pacific/Majuro","Pacific/Auckland","Pacific/Auckland","Pacific/Tongatapu","Pacific/Fakaofo","Pacific/Apia"]},{}],70:[function(e,t,a){"use strict";t.exports=["#{Name.name}","#{Company.name}"]},{}],71:[function(e,t,a){"use strict";var n={};(t.exports=n).name=e("./name"),n.version=e("./version"),n.author=e("./author")},{"./author":70,"./name":72,"./version":73}],72:[function(e,t,a){"use strict";t.exports=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"]},{}],73:[function(e,t,a){"use strict";t.exports=["0.#.#","0.##","#.##","#.#","#.#.#"]},{}],74:[function(e,t,a){"use strict";t.exports=["2011-10-12","2012-11-12","2015-11-11","2013-9-12"]},{}],75:[function(e,t,a){"use strict";t.exports=["1234-2121-1221-1211","1212-1221-1121-1234","1211-1221-1234-2201","1228-1221-1221-1431"]},{}],76:[function(e,t,a){"use strict";t.exports=["visa","mastercard","americanexpress","discover"]},{}],77:[function(e,t,a){"use strict";var n={};(t.exports=n).credit_card_numbers=e("./credit_card_numbers"),n.credit_card_expiry_dates=e("./credit_card_expiry_dates"),n.credit_card_types=e("./credit_card_types")},{"./credit_card_expiry_dates":74,"./credit_card_numbers":75,"./credit_card_types":76}],78:[function(e,t,a){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},{}],79:[function(e,t,a){"use strict";var n={};(t.exports=n).formats=e("./formats")},{"./formats":78}],80:[function(e,t,a){"use strict";t.exports=["red","green","blue","yellow","purple","mint green","teal","white","black","orange","pink","grey","maroon","violet","turquoise","tan","sky blue","salmon","plum","orchid","olive","magenta","lime","ivory","indigo","gold","fuchsia","cyan","azure","lavender","silver"]},{}],81:[function(e,t,a){"use strict";t.exports=["Books","Movies","Music","Games","Electronics","Computers","Home","Garden","Tools","Grocery","Health","Beauty","Toys","Kids","Baby","Clothing","Shoes","Jewelery","Sports","Outdoors","Automotive","Industrial"]},{}],82:[function(e,t,a){"use strict";var n={};(t.exports=n).color=e("./color"),n.department=e("./department"),n.product_name=e("./product_name")},{"./color":80,"./department":81,"./product_name":83}],83:[function(e,t,a){"use strict";t.exports={adjective:["Small","Ergonomic","Rustic","Intelligent","Gorgeous","Incredible","Fantastic","Practical","Sleek","Awesome","Generic","Handcrafted","Handmade","Licensed","Refined","Unbranded","Tasty"],material:["Steel","Wooden","Concrete","Plastic","Cotton","Granite","Rubber","Metal","Soft","Fresh","Frozen"],product:["Chair","Car","Computer","Keyboard","Mouse","Bike","Ball","Gloves","Pants","Shirt","Table","Shoes","Hat","Towels","Soap","Tuna","Chicken","Fish","Cheese","Bacon","Pizza","Salad","Sausages","Chips"]}},{}],84:[function(e,t,a){"use strict";t.exports=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","Decentralized","De-engineered","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Reactive","Realigned","Re-contextualized","Re-engineered","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Visionary","Vision-oriented"]},{}],85:[function(e,t,a){"use strict";t.exports=["clicks-and-mortar","value-added","vertical","proactive","robust","revolutionary","scalable","leading-edge","innovative","intuitive","strategic","e-business","mission-critical","sticky","one-to-one","24/7","end-to-end","global","B2B","B2C","granular","frictionless","virtual","viral","dynamic","24/365","best-of-breed","killer","magnetic","bleeding-edge","web-enabled","interactive","dot-com","sexy","back-end","real-time","efficient","front-end","distributed","seamless","extensible","turn-key","world-class","open-source","cross-platform","cross-media","synergistic","bricks-and-clicks","out-of-the-box","enterprise","integrated","impactful","wireless","transparent","next-generation","cutting-edge","user-centric","visionary","customized","ubiquitous","plug-and-play","collaborative","compelling","holistic","rich"]},{}],86:[function(e,t,a){"use strict";t.exports=["synergies","web-readiness","paradigms","markets","partnerships","infrastructures","platforms","initiatives","channels","eyeballs","communities","ROI","solutions","e-tailers","e-services","action-items","portals","niches","technologies","content","vortals","supply-chains","convergence","relationships","architectures","interfaces","e-markets","e-commerce","systems","bandwidth","infomediaries","models","mindshare","deliverables","users","schemas","networks","applications","metrics","e-business","functionalities","experiences","web services","methodologies"]},{}],87:[function(e,t,a){"use strict";t.exports=["implement","utilize","integrate","streamline","optimize","evolve","transform","embrace","enable","orchestrate","leverage","reinvent","aggregate","architect","enhance","incentivize","morph","empower","envisioneer","monetize","harness","facilitate","seize","disintermediate","synergize","strategize","deploy","brand","grow","target","syndicate","synthesize","deliver","mesh","incubate","engage","maximize","benchmark","expedite","reintermediate","whiteboard","visualize","repurpose","innovate","scale","unleash","drive","extend","engineer","revolutionize","generate","exploit","transition","e-enable","iterate","cultivate","matrix","productize","redefine","recontextualize"]},{}],88:[function(e,t,a){"use strict";t.exports=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","context-sensitive","contextually-based","content-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multimedia","multi-state","multi-tasking","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","systematic","systemic","system-worthy","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"]},{}],89:[function(e,t,a){"use strict";var n={};(t.exports=n).suffix=e("./suffix"),n.adjective=e("./adjective"),n.descriptor=e("./descriptor"),n.noun=e("./noun"),n.bs_verb=e("./bs_verb"),n.bs_adjective=e("./bs_adjective"),n.bs_noun=e("./bs_noun"),n.name=e("./name")},{"./adjective":84,"./bs_adjective":85,"./bs_noun":86,"./bs_verb":87,"./descriptor":88,"./name":90,"./noun":91,"./suffix":92}],90:[function(e,t,a){"use strict";t.exports=["#{Name.last_name} #{suffix}","#{Name.last_name}-#{Name.last_name}","#{Name.last_name}, #{Name.last_name} and #{Name.last_name}"]},{}],91:[function(e,t,a){"use strict";t.exports=["ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","artificial intelligence","array","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","database","data-warehouse","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","Graphic Interface","groupware","Graphical User Interface","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge user","knowledge base","local area network","leverage","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},{}],92:[function(e,t,a){"use strict";t.exports=["Inc","and Sons","LLC","Group"]},{}],93:[function(e,t,a){"use strict";t.exports=["/34##-######-####L/","/37##-######-####L/"]},{}],94:[function(e,t,a){"use strict";t.exports=["/30[0-5]#-######-###L/","/368#-######-###L/"]},{}],95:[function(e,t,a){"use strict";t.exports=["/6011-####-####-###L/","/65##-####-####-###L/","/64[4-9]#-####-####-###L/","/6011-62##-####-####-###L/","/65##-62##-####-####-###L/","/64[4-9]#-62##-####-####-###L/"]},{}],96:[function(e,t,a){"use strict";var n={};(t.exports=n).visa=e("./visa"),n.mastercard=e("./mastercard"),n.discover=e("./discover"),n.american_express=e("./american_express"),n.diners_club=e("./diners_club"),n.jcb=e("./jcb"),n.switch=e("./switch"),n.solo=e("./solo"),n.maestro=e("./maestro"),n.laser=e("./laser")},{"./american_express":93,"./diners_club":94,"./discover":95,"./jcb":97,"./laser":98,"./maestro":99,"./mastercard":100,"./solo":101,"./switch":102,"./visa":103}],97:[function(e,t,a){"use strict";t.exports=["/3528-####-####-###L/","/3529-####-####-###L/","/35[3-8]#-####-####-###L/"]},{}],98:[function(e,t,a){"use strict";t.exports=["/6304###########L/","/6706###########L/","/6771###########L/","/6709###########L/","/6304#########{5,6}L/","/6706#########{5,6}L/","/6771#########{5,6}L/","/6709#########{5,6}L/"]},{}],99:[function(e,t,a){"use strict";t.exports=["/50#{9,16}L/","/5[6-8]#{9,16}L/","/56##{9,16}L/"]},{}],100:[function(e,t,a){"use strict";t.exports=["/5[1-5]##-####-####-###L/","/6771-89##-####-###L/"]},{}],101:[function(e,t,a){"use strict";t.exports=["/6767-####-####-###L/","/6767-####-####-####-#L/","/6767-####-####-####-##L/"]},{}],102:[function(e,t,a){"use strict";t.exports=["/6759-####-####-###L/","/6759-####-####-####-#L/","/6759-####-####-####-##L/"]},{}],103:[function(e,t,a){"use strict";t.exports=["/4###########L/","/4###-####-####-###L/"]},{}],104:[function(e,t,a){"use strict";t.exports=["utf8_unicode_ci","utf8_general_ci","utf8_bin","ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci"]},{}],105:[function(e,t,a){"use strict";t.exports=["id","title","name","email","phone","token","group","category","password","comment","avatar","status","createdAt","updatedAt"]},{}],106:[function(e,t,a){"use strict";t.exports=["InnoDB","MyISAM","MEMORY","CSV","BLACKHOLE","ARCHIVE"]},{}],107:[function(e,t,a){"use strict";var n={};(t.exports=n).collation=e("./collation"),n.column=e("./column"),n.engine=e("./engine"),n.type=e("./type")},{"./collation":104,"./column":105,"./engine":106,"./type":108}],108:[function(e,t,a){"use strict";t.exports=["int","varchar","text","date","datetime","tinyint","time","timestamp","smallint","mediumint","bigint","decimal","float","double","real","bit","boolean","serial","blob","binary","enum","set","geometry","point"]},{}],109:[function(e,t,a){"use strict";var n={};(t.exports=n).month=e("./month"),n.weekday=e("./weekday")},{"./month":110,"./weekday":111}],110:[function(e,t,a){"use strict";t.exports={wide:["January","February","March","April","May","June","July","August","September","October","November","December"],wide_context:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],abbr_context:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}},{}],111:[function(e,t,a){"use strict";t.exports={wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],wide_context:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],abbr_context:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}},{}],112:[function(e,t,a){"use strict";t.exports=["Checking","Savings","Money Market","Investment","Home Loan","Credit Card","Auto Loan","Personal Loan"]},{}],113:[function(e,t,a){"use strict";t.exports={"UAE Dirham":{code:"AED",symbol:""},Afghani:{code:"AFN",symbol:"؋"},Lek:{code:"ALL",symbol:"Lek"},"Armenian Dram":{code:"AMD",symbol:""},"Netherlands Antillian Guilder":{code:"ANG",symbol:"ƒ"},Kwanza:{code:"AOA",symbol:""},"Argentine Peso":{code:"ARS",symbol:"$"},"Australian Dollar":{code:"AUD",symbol:"$"},"Aruban Guilder":{code:"AWG",symbol:"ƒ"},"Azerbaijanian Manat":{code:"AZN",symbol:"ман"},"Convertible Marks":{code:"BAM",symbol:"KM"},"Barbados Dollar":{code:"BBD",symbol:"$"},Taka:{code:"BDT",symbol:""},"Bulgarian Lev":{code:"BGN",symbol:"лв"},"Bahraini Dinar":{code:"BHD",symbol:""},"Burundi Franc":{code:"BIF",symbol:""},"Bermudian Dollar (customarily known as Bermuda Dollar)":{code:"BMD",symbol:"$"},"Brunei Dollar":{code:"BND",symbol:"$"},"Boliviano Mvdol":{code:"BOB BOV",symbol:"$b"},"Brazilian Real":{code:"BRL",symbol:"R$"},"Bahamian Dollar":{code:"BSD",symbol:"$"},Pula:{code:"BWP",symbol:"P"},"Belarussian Ruble":{code:"BYR",symbol:"p."},"Belize Dollar":{code:"BZD",symbol:"BZ$"},"Canadian Dollar":{code:"CAD",symbol:"$"},"Congolese Franc":{code:"CDF",symbol:""},"Swiss Franc":{code:"CHF",symbol:"CHF"},"Chilean Peso Unidades de fomento":{code:"CLP CLF",symbol:"$"},"Yuan Renminbi":{code:"CNY",symbol:"¥"},"Colombian Peso Unidad de Valor Real":{code:"COP COU",symbol:"$"},"Costa Rican Colon":{code:"CRC",symbol:"₡"},"Cuban Peso Peso Convertible":{code:"CUP CUC",symbol:"₱"},"Cape Verde Escudo":{code:"CVE",symbol:""},"Czech Koruna":{code:"CZK",symbol:"Kč"},"Djibouti Franc":{code:"DJF",symbol:""},"Danish Krone":{code:"DKK",symbol:"kr"},"Dominican Peso":{code:"DOP",symbol:"RD$"},"Algerian Dinar":{code:"DZD",symbol:""},Kroon:{code:"EEK",symbol:""},"Egyptian Pound":{code:"EGP",symbol:"£"},Nakfa:{code:"ERN",symbol:""},"Ethiopian Birr":{code:"ETB",symbol:""},Euro:{code:"EUR",symbol:"€"},"Fiji Dollar":{code:"FJD",symbol:"$"},"Falkland Islands Pound":{code:"FKP",symbol:"£"},"Pound Sterling":{code:"GBP",symbol:"£"},Lari:{code:"GEL",symbol:""},Cedi:{code:"GHS",symbol:""},"Gibraltar Pound":{code:"GIP",symbol:"£"},Dalasi:{code:"GMD",symbol:""},"Guinea Franc":{code:"GNF",symbol:""},Quetzal:{code:"GTQ",symbol:"Q"},"Guyana Dollar":{code:"GYD",symbol:"$"},"Hong Kong Dollar":{code:"HKD",symbol:"$"},Lempira:{code:"HNL",symbol:"L"},"Croatian Kuna":{code:"HRK",symbol:"kn"},"Gourde US Dollar":{code:"HTG USD",symbol:""},Forint:{code:"HUF",symbol:"Ft"},Rupiah:{code:"IDR",symbol:"Rp"},"New Israeli Sheqel":{code:"ILS",symbol:"₪"},"Indian Rupee":{code:"INR",symbol:""},"Indian Rupee Ngultrum":{code:"INR BTN",symbol:""},"Iraqi Dinar":{code:"IQD",symbol:""},"Iranian Rial":{code:"IRR",symbol:"﷼"},"Iceland Krona":{code:"ISK",symbol:"kr"},"Jamaican Dollar":{code:"JMD",symbol:"J$"},"Jordanian Dinar":{code:"JOD",symbol:""},Yen:{code:"JPY",symbol:"¥"},"Kenyan Shilling":{code:"KES",symbol:""},Som:{code:"KGS",symbol:"лв"},Riel:{code:"KHR",symbol:"៛"},"Comoro Franc":{code:"KMF",symbol:""},"North Korean Won":{code:"KPW",symbol:"₩"},Won:{code:"KRW",symbol:"₩"},"Kuwaiti Dinar":{code:"KWD",symbol:""},"Cayman Islands Dollar":{code:"KYD",symbol:"$"},Tenge:{code:"KZT",symbol:"лв"},Kip:{code:"LAK",symbol:"₭"},"Lebanese Pound":{code:"LBP",symbol:"£"},"Sri Lanka Rupee":{code:"LKR",symbol:"₨"},"Liberian Dollar":{code:"LRD",symbol:"$"},"Lithuanian Litas":{code:"LTL",symbol:"Lt"},"Latvian Lats":{code:"LVL",symbol:"Ls"},"Libyan Dinar":{code:"LYD",symbol:""},"Moroccan Dirham":{code:"MAD",symbol:""},"Moldovan Leu":{code:"MDL",symbol:""},"Malagasy Ariary":{code:"MGA",symbol:""},Denar:{code:"MKD",symbol:"ден"},Kyat:{code:"MMK",symbol:""},Tugrik:{code:"MNT",symbol:"₮"},Pataca:{code:"MOP",symbol:""},Ouguiya:{code:"MRO",symbol:""},"Mauritius Rupee":{code:"MUR",symbol:"₨"},Rufiyaa:{code:"MVR",symbol:""},Kwacha:{code:"MWK",symbol:""},"Mexican Peso Mexican Unidad de Inversion (UDI)":{code:"MXN MXV",symbol:"$"},"Malaysian Ringgit":{code:"MYR",symbol:"RM"},Metical:{code:"MZN",symbol:"MT"},Naira:{code:"NGN",symbol:"₦"},"Cordoba Oro":{code:"NIO",symbol:"C$"},"Norwegian Krone":{code:"NOK",symbol:"kr"},"Nepalese Rupee":{code:"NPR",symbol:"₨"},"New Zealand Dollar":{code:"NZD",symbol:"$"},"Rial Omani":{code:"OMR",symbol:"﷼"},"Balboa US Dollar":{code:"PAB USD",symbol:"B/."},"Nuevo Sol":{code:"PEN",symbol:"S/."},Kina:{code:"PGK",symbol:""},"Philippine Peso":{code:"PHP",symbol:"Php"},"Pakistan Rupee":{code:"PKR",symbol:"₨"},Zloty:{code:"PLN",symbol:"zł"},Guarani:{code:"PYG",symbol:"Gs"},"Qatari Rial":{code:"QAR",symbol:"﷼"},"New Leu":{code:"RON",symbol:"lei"},"Serbian Dinar":{code:"RSD",symbol:"Дин."},"Russian Ruble":{code:"RUB",symbol:"руб"},"Rwanda Franc":{code:"RWF",symbol:""},"Saudi Riyal":{code:"SAR",symbol:"﷼"},"Solomon Islands Dollar":{code:"SBD",symbol:"$"},"Seychelles Rupee":{code:"SCR",symbol:"₨"},"Sudanese Pound":{code:"SDG",symbol:""},"Swedish Krona":{code:"SEK",symbol:"kr"},"Singapore Dollar":{code:"SGD",symbol:"$"},"Saint Helena Pound":{code:"SHP",symbol:"£"},Leone:{code:"SLL",symbol:""},"Somali Shilling":{code:"SOS",symbol:"S"},"Surinam Dollar":{code:"SRD",symbol:"$"},Dobra:{code:"STD",symbol:""},"El Salvador Colon US Dollar":{code:"SVC USD",symbol:"$"},"Syrian Pound":{code:"SYP",symbol:"£"},Lilangeni:{code:"SZL",symbol:""},Baht:{code:"THB",symbol:"฿"},Somoni:{code:"TJS",symbol:""},Manat:{code:"TMT",symbol:""},"Tunisian Dinar":{code:"TND",symbol:""},"Pa'anga":{code:"TOP",symbol:""},"Turkish Lira":{code:"TRY",symbol:"TL"},"Trinidad and Tobago Dollar":{code:"TTD",symbol:"TT$"},"New Taiwan Dollar":{code:"TWD",symbol:"NT$"},"Tanzanian Shilling":{code:"TZS",symbol:""},Hryvnia:{code:"UAH",symbol:"₴"},"Uganda Shilling":{code:"UGX",symbol:""},"US Dollar":{code:"USD",symbol:"$"},"Peso Uruguayo Uruguay Peso en Unidades Indexadas":{code:"UYU UYI",symbol:"$U"},"Uzbekistan Sum":{code:"UZS",symbol:"лв"},"Bolivar Fuerte":{code:"VEF",symbol:"Bs"},Dong:{code:"VND",symbol:"₫"},Vatu:{code:"VUV",symbol:""},Tala:{code:"WST",symbol:""},"CFA Franc BEAC":{code:"XAF",symbol:""},Silver:{code:"XAG",symbol:""},Gold:{code:"XAU",symbol:""},"Bond Markets Units European Composite Unit (EURCO)":{code:"XBA",symbol:""},"European Monetary Unit (E.M.U.-6)":{code:"XBB",symbol:""},"European Unit of Account 9(E.U.A.-9)":{code:"XBC",symbol:""},"European Unit of Account 17(E.U.A.-17)":{code:"XBD",symbol:""},"East Caribbean Dollar":{code:"XCD",symbol:"$"},SDR:{code:"XDR",symbol:""},"UIC-Franc":{code:"XFU",symbol:""},"CFA Franc BCEAO":{code:"XOF",symbol:""},Palladium:{code:"XPD",symbol:""},"CFP Franc":{code:"XPF",symbol:""},Platinum:{code:"XPT",symbol:""},"Codes specifically reserved for testing purposes":{code:"XTS",symbol:""},"Yemeni Rial":{code:"YER",symbol:"﷼"},Rand:{code:"ZAR",symbol:"R"},"Rand Loti":{code:"ZAR LSL",symbol:""},"Rand Namibia Dollar":{code:"ZAR NAD",symbol:""},"Zambian Kwacha":{code:"ZMK",symbol:""},"Zimbabwe Dollar":{code:"ZWL",symbol:""}}},{}],114:[function(e,t,a){"use strict";var n={};(t.exports=n).account_type=e("./account_type"),n.transaction_type=e("./transaction_type"),n.currency=e("./currency")},{"./account_type":112,"./currency":113,"./transaction_type":115}],115:[function(e,t,a){"use strict";t.exports=["deposit","withdrawal","payment","invoice"]},{}],116:[function(e,t,a){"use strict";t.exports=["TCP","HTTP","SDD","RAM","GB","CSS","SSL","AGP","SQL","FTP","PCI","AI","ADP","RSS","XML","EXE","COM","HDD","THX","SMTP","SMS","USB","PNG","SAS","IB","SCSI","JSON","XSS","JBOD"]},{}],117:[function(e,t,a){"use strict";t.exports=["auxiliary","primary","back-end","digital","open-source","virtual","cross-platform","redundant","online","haptic","multi-byte","bluetooth","wireless","1080p","neural","optical","solid state","mobile"]},{}],118:[function(e,t,a){"use strict";var n={};(t.exports=n).abbreviation=e("./abbreviation"),n.adjective=e("./adjective"),n.noun=e("./noun"),n.verb=e("./verb"),n.ingverb=e("./ingverb")},{"./abbreviation":116,"./adjective":117,"./ingverb":119,"./noun":120,"./verb":121}],119:[function(e,t,a){"use strict";t.exports=["backing up","bypassing","hacking","overriding","compressing","copying","navigating","indexing","connecting","generating","quantifying","calculating","synthesizing","transmitting","programming","parsing"]},{}],120:[function(e,t,a){"use strict";t.exports=["driver","protocol","bandwidth","panel","microchip","program","port","card","array","interface","system","sensor","firewall","hard drive","pixel","alarm","feed","monitor","application","transmitter","bus","circuit","capacitor","matrix"]},{}],121:[function(e,t,a){"use strict";t.exports=["back up","bypass","hack","override","compress","copy","navigate","index","connect","generate","quantify","calculate","synthesize","input","transmit","program","reboot","parse"]},{}],122:[function(e,t,a){"use strict";var n={};(t.exports=n).title="English",n.separator=" & ",n.address=e("./address"),n.credit_card=e("./credit_card"),n.company=e("./company"),n.internet=e("./internet"),n.database=e("./database"),n.lorem=e("./lorem"),n.name=e("./name"),n.phone_number=e("./phone_number"),n.cell_phone=e("./cell_phone"),n.business=e("./business"),n.commerce=e("./commerce"),n.team=e("./team"),n.hacker=e("./hacker"),n.app=e("./app"),n.finance=e("./finance"),n.date=e("./date"),n.system=e("./system")},{"./address":60,"./app":71,"./business":77,"./cell_phone":79,"./commerce":82,"./company":89,"./credit_card":96,"./database":107,"./date":109,"./finance":114,"./hacker":118,"./internet":127,"./lorem":128,"./name":132,"./phone_number":139,"./system":140,"./team":143}],123:[function(e,t,a){"use strict";t.exports=["https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sprayaga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Skyhartman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moscoz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurafire/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/91bilal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malykhinv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kushsolitary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowshade/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heyimjuani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/envex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/unterdreht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/collegeman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peejfancher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andyisonline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ultragex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fuck_you_two/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adellecharles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ateneupopular/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetalpbalkan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Stievius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerem/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osvaldas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelceballos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrykoblentz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peterlandt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weglov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandclay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetsulek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolasfolliot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayrobinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michzen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markjenkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolai_larsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alagoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/idiot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadengle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutlu82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vocino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guiiipontes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soyjavi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshaustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomaslau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/langate/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cemshid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leemunroe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_shahedk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BillSKenney/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshhemsley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sindresorhus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soffes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/9lessons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linux29/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anaami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joreira/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shadeed9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottkclark/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jedbridges/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marakasina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BrianPurkiss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bublienko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devankoshal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ZacharyZorbas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timmillwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuasortino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/damenleeturks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomas_janousek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/RussellBishop/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brajeshwar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bermonpainter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdullindenis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suprb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yalozhkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chandlervdw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamgarth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_victa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/commadelimited/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roybarberuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/axel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladarbatov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ffbel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/syropian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ankitind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flashmurphy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ChrisFarina78/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baliomega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschamt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jm_denis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kennyadr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chatyrko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dingyi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mds/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terryxlife/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaroni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prrstn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eduardostuart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/GavicoInd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rohixx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakesimkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leeiio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjrus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uberschizo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefoundry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ripplemdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/exentrich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jakemoore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joaoedumedeiros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/poormini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tereshenkov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keryilmaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haydn_woods/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/llun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sgaurav_baghel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jamiebrittain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pifagor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agromov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/erwanhesry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diesellaws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiaha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/koridhandy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewcohen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smaczny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nandini_m/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sydlawrence/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdharrison/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgerken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lewisainslie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robbschiller/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flexrs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattdetails/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raquelwilson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrmartineau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/opnsrce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximseshuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxalex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samihah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chanpory/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sharvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josemarques/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jefffis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krystalfister/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lokesh_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dpmachado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/funwatercat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timothycd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/picard102/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcobarbosa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krasnoukhov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ademilter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickdt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/operatino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugomano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/logorado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dc_user/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/horaciobella/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SlaapMe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teeragit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqonicd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ilya_pestov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewarrow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssiskind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/HenryHoffman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdsaunders/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamsxu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousoffice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themadray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michigangraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kohette/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nickfratter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/runningskull/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madysondesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyshen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurtinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amanruzaini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyhaggard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronalfred/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jitachi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/therealmarvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pmeissner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ooomz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chacky14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jesseddy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shanehudson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/IsaryAmairani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arthurholcombe1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/boxmodel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ehsandiary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/LucasPerdidao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shalt0ni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swaplord/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaelifa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plbabin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guillemboti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arindam_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/renbyrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thiagovernetti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmillspaysbills/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikemai2awesome/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jervo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mekal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sta1ex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robergd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipecsl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrea211087/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/garand/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhooyenga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abovefunction/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pcridesagain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/randomlies/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BryanHorsey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dahparra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allthingssmitty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvernon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beweinreich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/increase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falvarad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxndrustinov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souuf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/orkuncaylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AM_Kn2/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gearpixels/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bassamology/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kosmar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrjamesnoble/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shaneIxD/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nacho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yigitpinarbasi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buzzusborne/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronkwhite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rmlewisuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giancarlon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nbirckel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_nny_m_cher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sdidonato/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atariboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abotap/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karalek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psdesignuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ludwiczakpawel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nemanjaivanovic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baluli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmadajmi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vovkasolovev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samgrover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonathansimmons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelsonjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/S0ufi4n3/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xtopherpaul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oaktreemedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nateschulte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/findingjenny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/namankreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/we_social/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leehambley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/solid_color/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abelcabans/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kkusaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jordyvdboom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosgavina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pechkinator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdbannon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/croakx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerihenare/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catadeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gcmorley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duivvv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorDubugras/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wintopia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattbilotti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taylorling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/megdraws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meln1ks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahmoudmetwally/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Silveredge9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travis_arnold/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artem_kostenko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adobi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daykiine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alek_djuric/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scips/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelmendes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alsobrooks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mcflydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/santi_urso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allfordesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stayuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bertboerland/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marosholly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamnac/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cynthiasavard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muringa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hiemil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jackiesaik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iduuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antjanus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aroon_sharma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dshster/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thehacker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelbrooksjr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanmclaughlin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/clubb3rry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taybenlor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xripunov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/myastro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/digitalmaverick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hjartstrorn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vaughanmoffitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdots/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isnifer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeysafonov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scrapdnb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrismj83/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sokaniwaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zaki3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/illyzoren/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mocabyte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/djsherman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidhemphill/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/waghner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/necodymiconer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/praveen_vijaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travishines/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kuldarkalvik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Elt_n/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/phillapier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okseanjay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/id835559/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kudretkeskin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anjhero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duck4fuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scott_riley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noufalibrahim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/h1brd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borges_marcos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devinhalladay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ciaranr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefooo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikebeecham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuaraichur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/irae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petrangr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmitriychuta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliegann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arashmanteghi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ainsleywagon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/svenlen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/faisalabid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beshur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlyson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dutchnadia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teddyzetterlund/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aoimedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/toddrew/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artvavs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benoitboucart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jomarmen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/creartinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/homka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gaborenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinclediere/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximsorokin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j2deme/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kapaluccio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/de_ascanio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dawidwu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpatey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/popey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_purplebunny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/1markiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ajaxy_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenmurrell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dudestein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskarlevinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorstuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nehfy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leandrovaranda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottgallant/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victor_haydin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawrb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryhanhassan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amayvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_brixen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karolkrakowiak_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herkulano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geran7/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cggaurav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_witko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/polarity/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattlat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonburke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teylorfeliz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigelimeliah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rachelreveley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reabo101/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rahmeen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickyyean/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spbroma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sebashton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpenico/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/francis_vega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oktayelipek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kikillo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbianz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrygerard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/0therplanet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilalsiddique1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ionuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grrr_nl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/liminha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rawdiggie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryandownie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sethlouey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pixage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arpitnj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/switmer777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/puzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/besbujupi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supjoey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lowie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linkibol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balintorosz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imcoding/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gusoto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasschrijer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/superoutman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kalmerrautam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielizalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gojeanyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidbaldie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_vojto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laurengray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mymyboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nellleo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marciotoledo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hasslunsford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muridrahhal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/levisan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grahamkennery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepetitogre/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antongenkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/safrankov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cocolero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dss49/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matt3224/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluesix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/quailandquasar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AlbertoCococi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepinski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhudobivnik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thibaut_re/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olgary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shojberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mtolokonnikov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bereto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naupintos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wegotvices/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xadhix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rodnylobos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madcampos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebyvadim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartoszdawydzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supervova/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markretzloff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vonachoo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darylws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mylesb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herbigt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/depaulawagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gizmeedevil1991/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_scottburgess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lisovsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidsasda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artd_sign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/YoungCutlass/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mgonto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorquinn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmond/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oksanafrewer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zauerkraut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkeithmason/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nitinhayaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lmjabreu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mandalareopens/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thinkleft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caseycavanagh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/luxe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dotgridline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spedwig/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madewulf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattsapii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/helderleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisstumph/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayphen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nsamoylov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisvanderkooi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justme_timothyg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/otozk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gu5taf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cyril_gaillard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_kobelyatsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daniloc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nwdsha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/romanbulah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dannol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thekevinjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jwalter14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timgthomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thatonetommy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diansigitp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adrienths/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klimmka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gkaam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekcramer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyyo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerrsoft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xalionmalik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edhenderson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keyuri85/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roxanejammet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kimcool/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edkf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alessandroribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacksonlatka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebronjennan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karlkanall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moynihan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danpliego/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wesleytrankin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fjaguero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mashaaaaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yassiryahya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dparrelli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fotomagin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aka_james/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqbalperkasa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jarsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_oy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malgordon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlfairclough/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelabehsera/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierrestoffe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enjoythetau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/loganjlambert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpeezy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyginnivan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michalhron/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lingeswaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolsvein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peter576/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reideiredale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joeymurdah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raphaelnikson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mvdheuvel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maxlinderman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jimmuirhead/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/begreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/frankiefreesbie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Talbi_ConSept/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/longlivemyword/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vanchesz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maiklam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hermanobrother/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rez___a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/greenbes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anthonysukow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fluidbrush/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dactrtr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jehnglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bergmartin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugocornejo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_kkga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dzantievm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonsgotwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byryan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vytautas_a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cicerobr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshelmersson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d33pthought/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davecraige/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nckjrvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexandermayes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bagawarman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rob_thomas10/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cofla/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maikelk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtgibbons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russell_baylis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhesslow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codysanfilippo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/webtanya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebybrenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dcalonaci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perfectflow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjsiii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kumarrajan12123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamsteffen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ceekaytweet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrybolt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/conspirator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dallasbpeters/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n3dmax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terpimost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byrnecore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j_drake_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hoangloi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tobysaxon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gofrasdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dimaposnyy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjisousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okandungel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/billyroshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskamaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/motionthinks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/knilob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashocka18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartjo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/omnizya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andreas_pr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edgarchris99/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasgeisen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joannefournier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/demersdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adammarsbar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nasirwd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n_tassone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themrdave/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicollerich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicoleglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/judzhin_miles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kianoshp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evandrix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alterchuca/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhrubo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ma_tiax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssbb_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mauriolg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mactopus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_winslet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joemdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacobbennett/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nfedoroff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamglimy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allagringaus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olaolusoga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wim1k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicklacke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/steynviljoen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/strikewan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryankirkman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewabogado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doooon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jagan123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariffsetiawan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elenadissi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mwarkentin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrymeier_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_garcia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmackerman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borantula/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spacewood_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryuchi311/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evanshajed/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tristanlegros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shoaib253/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aislinnkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okcoker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunshinedgirl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleclarsoniv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nomidesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petebernardo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottiedude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imsoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imammuht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nepdud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lanceguyatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bboy1895/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amywebbb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rweve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haruintesettden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ricburton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelshd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/batsirai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/primozcigler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/8d3k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geneseleznev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/al_li/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souperphly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mslarkina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/2fockus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdavis565/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/turkutuuli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxward/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebinoclard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauravjassal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidmerrique/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mdsisto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewofficer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kojourin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnirmal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aluisio_azevedo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cloudstudio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvierich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fran_mchamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perretmagali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cadikkara/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bpartridge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelkoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitor376/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/desastrozo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thimo_cz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lhausermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xravil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guischmitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vigobronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panghal0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelkooreman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/surgeonist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/christianoliff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caspergrl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ipavelek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierre_nel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sterlingrules/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elbuscainfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bennyjien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stushona/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/estebanuribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/embrcecreations/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danillos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charlesrpratt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosblanco_eu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leonfedotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rangafangs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_frees/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgormtx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bryan_topham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpscribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carbontwelve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamjdeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowwrite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/barputro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/drewbyreese/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bistrianiosip/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magoo04/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pehamondello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_harris88/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/algunsanabria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zforrester/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ovall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosjgsousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geobikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ah_lice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/looneydoodle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerdgr8/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ddggccaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zackeeler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/normanbox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/el_fuertisimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ismail_biltagi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juangomezw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jnmnrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/patrickcoombe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanjohnson_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeffgolenski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kvasnic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauchomatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/afusinatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okansurreel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamawesomeface/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emileboudeling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arishi_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juanmamartinez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mkginfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terrorpixel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousonaut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prheemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcolenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/foczzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martip07/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaodang17/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johncafazza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinlayfield/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/franciscoamk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdulhyeuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marklamb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edobene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresenfredrik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikaeljorhult/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisslowik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meelford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotnolten/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yehudab/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vijaykarthik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bfrohs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josep_martins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/attacks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sur4dye/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tumski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mangosango/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/paulfarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kazaky999/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kiwiupover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nvkznemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tom_even/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ratbus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshmedeski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thewillbeard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joe_black/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleinadsays/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcusgorillius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hota_v/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jghyllebert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shinze/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/janpalounek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/her_ruu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dansowter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipeapiress/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magugzbrand2d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/posterjob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nathalie_fs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobbytwoshoes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dreizle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elisabethkjaer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/notbadart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mohanrohith/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jlsolerdeltoro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itskawsar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/slowspock/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zvchkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craighenneberry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trubeatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juaumlol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samscouto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BenouarradeM/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gipsy_raf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/netonet_il/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arkokoley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itsajimithing/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smalonso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victordeanda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_dwite_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richardgarretts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregrwilkinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anatolinicolae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanotirloni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ostirbu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naitanamoreno/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcomiskey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcomano_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidcazalis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falconerie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregkilian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bcrad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bolzanmarco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/low_res/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vlajki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petar_prog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonkspr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmalfikri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mfacchinello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atanism/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/harry_sistalam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/murrayswift/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobwassermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gavr1l0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madshensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_subtle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salimianoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/twittypork/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/airskylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnezkumar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgajjar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salvafc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deeenright/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cybind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eyronn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vickyshits/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cboller1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresdjasso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/melvindidit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lvovenok/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giuliusa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/belyaev_rs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kamal_chaneman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/incubo82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hellofeverrrr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhaligowski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunlandictwin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bu7921/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andytlaw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/finchjke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manigm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/umurgdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ganserene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutu_krish/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jodytaggart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ntfblog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tanveerrao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hfalucas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxleroydeval/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kucingbelang4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bargaorobalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefrost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumannzone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcolberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachingawas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjshaw14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ramanathan_pdy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johndezember/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshoenson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonmorreale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nutzumi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeyalmone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klefue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kirangopal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumann_alex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matthewkay_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jay_wilburn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shesgared/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/apriendeau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnriordan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wake_gs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleksitappura/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emsgulam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xilantra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imomenui/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sircalebgrove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/newbrushes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hsinyo23/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/katiemdaly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ecommerceil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marlinjayakody/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swooshycueb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sangdth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coderdiaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sasha_shestakov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eugeneeweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgclegg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n1ght_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dixchen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakehawksworth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marclgonzales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yesmeck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doronmalki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruehldesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kijanmaharjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wearesavas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefvdham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tweetubhai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fiterik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyryndya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d00maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/theonlyzeke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manekenthe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reetajayendra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyshimko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrgraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanozoffoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrebay007/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shvelo96/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pyronite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedjpetersen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtyukmaev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_williamguerra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/albertaugustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinjohndayy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vj_demien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colirpixoil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/goddardlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laasli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jqiuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heycamtaylor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nastya_mane/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mastermindesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nyancecom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sandywoodruff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bighanddesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sbtransparent/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aviddayentonbay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richwild/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaysix_dizzy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tur8le/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/seyedhossein1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/privetwagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmandenn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dev_essentials/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmfsocial/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_yardenoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mateaodviteza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weavermedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mufaddal_mw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hafeeskhan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sulaqo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eddiechen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josecarlospsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vm_f/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enricocicconi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danmartin70/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gmourier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrxloka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_pedropinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eitarafa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oscarowusu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ralph_lam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panchajanyag/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodydotmx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marshallchen_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aio___/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaabane_wail/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/txcx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akashsharma39/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falling_soul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sainraja/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mugukamil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johannesneu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markwienands/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balakayuriy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alan_zhang_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/layerssss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaspernordkvist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VMilescu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aeon56/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sreejithexp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dicesales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhoot_amit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smenov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lonesomelemon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladimirdevic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelcipriano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haligaliharun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buleswapnil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/serefka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ifarafonow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikasvinfotech/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/urrutimeoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areandacom/128.jpg"]},{}],124:[function(e,t,a){"use strict";t.exports=["com","biz","info","name","net","org"]},{}],125:[function(e,t,a){"use strict";t.exports=["example.org","example.com","example.net"]},{}],126:[function(e,t,a){"use strict";t.exports=["gmail.com","yahoo.com","hotmail.com"]},{}],127:[function(e,t,a){"use strict";var n={};(t.exports=n).free_email=e("./free_email"),n.example_email=e("./example_email"),n.domain_suffix=e("./domain_suffix"),n.avatar_uri=e("./avatar_uri")},{"./avatar_uri":123,"./domain_suffix":124,"./example_email":125,"./free_email":126}],128:[function(e,t,a){"use strict";var n={};(t.exports=n).words=e("./words"),n.supplemental=e("./supplemental")},{"./supplemental":129,"./words":130}],129:[function(e,t,a){"use strict";t.exports=["abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accipio","accommodo","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","adultus","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alienus","alii","alioqui","aliqua","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","arcus","argentum","argumentum","arguo","arma","armarium","armo","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","aspicio","asporto","assentator","astrum","atavus","ater","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","auris","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","avoco","baiulus","balbus","barba","bardus","basium","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certo","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","colloco","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corpus","correptius","corrigo","corroboro","corrumpo","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cunabula","cunae","cunctatio","cupiditas","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","curvus","custodia","damnatio","damno","dapifer","debeo","debilito","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defigo","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delego","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","desidero","desino","desipio","desolo","desparatus","despecto","despirmatio","infit","inflammatio","paens","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecunia","pecus","peior","pel","ocer","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","temptatio","tempus","tenax","tendo","teneo","tener","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","triginta","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpe","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velociter","velum","velut","venia","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduata","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","vultuosus","xiphias"]},{}],130:[function(e,t,a){"use strict";t.exports=["alias","consequatur","aut","perferendis","sit","voluptatem","accusantium","doloremque","aperiam","eaque","ipsa","quae","ab","illo","inventore","veritatis","et","quasi","architecto","beatae","vitae","dicta","sunt","explicabo","aspernatur","aut","odit","aut","fugit","sed","quia","consequuntur","magni","dolores","eos","qui","ratione","voluptatem","sequi","nesciunt","neque","dolorem","ipsum","quia","dolor","sit","amet","consectetur","adipisci","velit","sed","quia","non","numquam","eius","modi","tempora","incidunt","ut","labore","et","dolore","magnam","aliquam","quaerat","voluptatem","ut","enim","ad","minima","veniam","quis","nostrum","exercitationem","ullam","corporis","nemo","enim","ipsam","voluptatem","quia","voluptas","sit","suscipit","laboriosam","nisi","ut","aliquid","ex","ea","commodi","consequatur","quis","autem","vel","eum","iure","reprehenderit","qui","in","ea","voluptate","velit","esse","quam","nihil","molestiae","et","iusto","odio","dignissimos","ducimus","qui","blanditiis","praesentium","laudantium","totam","rem","voluptatum","deleniti","atque","corrupti","quos","dolores","et","quas","molestias","excepturi","sint","occaecati","cupiditate","non","provident","sed","ut","perspiciatis","unde","omnis","iste","natus","error","similique","sunt","in","culpa","qui","officia","deserunt","mollitia","animi","id","est","laborum","et","dolorum","fuga","et","harum","quidem","rerum","facilis","est","et","expedita","distinctio","nam","libero","tempore","cum","soluta","nobis","est","eligendi","optio","cumque","nihil","impedit","quo","porro","quisquam","est","qui","minus","id","quod","maxime","placeat","facere","possimus","omnis","voluptas","assumenda","est","omnis","dolor","repellendus","temporibus","autem","quibusdam","et","aut","consequatur","vel","illum","qui","dolorem","eum","fugiat","quo","voluptas","nulla","pariatur","at","vero","eos","et","accusamus","officiis","debitis","aut","rerum","necessitatibus","saepe","eveniet","ut","et","voluptates","repudiandae","sint","et","molestiae","non","recusandae","itaque","earum","rerum","hic","tenetur","a","sapiente","delectus","ut","aut","reiciendis","voluptatibus","maiores","doloribus","asperiores","repellat"]},{}],131:[function(e,t,a){"use strict";t.exports=["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gay","Gayle","Gaylord","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"]},{}],132:[function(e,t,a){"use strict";var n={};(t.exports=n).first_name=e("./first_name"),n.last_name=e("./last_name"),n.prefix=e("./prefix"),n.suffix=e("./suffix"),n.title=e("./title"),n.name=e("./name")},{"./first_name":131,"./last_name":133,"./name":134,"./prefix":135,"./suffix":136,"./title":137}],133:[function(e,t,a){"use strict";t.exports=["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Eichmann","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Friesen","Fritsch","Funk","Gaylord","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},{}],134:[function(e,t,a){"use strict";t.exports=["#{prefix} #{first_name} #{last_name}","#{first_name} #{last_name} #{suffix}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}"]},{}],135:[function(e,t,a){"use strict";t.exports=["Mr.","Mrs.","Ms.","Miss","Dr."]},{}],136:[function(e,t,a){"use strict";t.exports=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"]},{}],137:[function(e,t,a){"use strict";t.exports={descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","Dynamic","International","Legacy","Forward","Internal","Human","Chief","Principal"],level:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"]}},{}],138:[function(e,t,a){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-#### x###","(###) ###-#### x###","1-###-###-#### x###","###.###.#### x###","###-###-#### x####","(###) ###-#### x####","1-###-###-#### x####","###.###.#### x####","###-###-#### x#####","(###) ###-#### x#####","1-###-###-#### x#####","###.###.#### x#####"]},{}],139:[function(e,t,a){"use strict";var n={};(t.exports=n).formats=e("./formats")},{"./formats":138}],140:[function(e,t,a){"use strict";var n={};(t.exports=n).mimeTypes=e("./mimeTypes")},{"./mimeTypes":141}],141:[function(e,t,a){"use strict";t.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana"},"application/3gpp-ims+xml":{source:"iana"},"application/a2l":{source:"iana"},"application/activemessage":{source:"iana"},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana"},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",extensions:["atomsvc"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana"},"application/bacnet-xdd+zip":{source:"iana"},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana"},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/cbor":{source:"iana"},"application/ccmp+xml":{source:"iana"},"application/ccxml+xml":{source:"iana",extensions:["ccxml"]},"application/cdfx+xml":{source:"iana"},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana"},"application/cellml+xml":{source:"iana"},"application/cfw":{source:"iana"},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana"},"application/cpl+xml":{source:"iana"},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana"},"application/cstadata+xml":{source:"iana"},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",extensions:["mdp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana"},"application/dicom":{source:"iana"},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/docbook+xml":{source:"apache",extensions:["dbk"]},"application/dskpp+xml":{source:"iana"},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/emergencycalldata.comment+xml":{source:"iana"},"application/emergencycalldata.deviceinfo+xml":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana"},"application/emergencycalldata.serviceinfo+xml":{source:"iana"},"application/emergencycalldata.subscriberinfo+xml":{source:"iana"},"application/emma+xml":{source:"iana",extensions:["emma"]},"application/emotionml+xml":{source:"iana"},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana"},"application/epub+zip":{source:"iana",extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana"},"application/fits":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1,extensions:["woff"]},"application/font-woff2":{compressible:!1,extensions:["woff2"]},"application/framework-attributes+xml":{source:"iana"},"application/gml+xml":{source:"apache",extensions:["gml"]},"application/gpx+xml":{source:"apache",extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1},"application/h224":{source:"iana"},"application/held+xml":{source:"iana"},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana"},"application/ibe-pkg-reply+xml":{source:"iana"},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana"},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana"},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana"},"application/kpml-response+xml":{source:"iana"},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana"},"application/lost+xml":{source:"iana",extensions:["lostxml"]},"application/lostsync+xml":{source:"iana"},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",extensions:["mads"]},"application/manifest+json":{charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",extensions:["mathml"]},"application/mathml-content+xml":{source:"iana"},"application/mathml-presentation+xml":{source:"iana"},"application/mbms-associated-procedure-description+xml":{source:"iana"},"application/mbms-deregister+xml":{source:"iana"},"application/mbms-envelope+xml":{source:"iana"},"application/mbms-msk+xml":{source:"iana"},"application/mbms-msk-response+xml":{source:"iana"},"application/mbms-protection-description+xml":{source:"iana"},"application/mbms-reception-report+xml":{source:"iana"},"application/mbms-register+xml":{source:"iana"},"application/mbms-register-response+xml":{source:"iana"},"application/mbms-schedule+xml":{source:"iana"},"application/mbms-user-service-description+xml":{source:"iana"},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana"},"application/media_control+xml":{source:"iana"},"application/mediaservercontrol+xml":{source:"iana",extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",extensions:["metalink"]},"application/metalink4+xml":{source:"iana",extensions:["meta4"]},"application/mets+xml":{source:"iana",extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mods+xml":{source:"iana",extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana"},"application/mrb-publish+xml":{source:"iana"},"application/msc-ivr+xml":{source:"iana"},"application/msc-mixer+xml":{source:"iana"},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mxf":{source:"iana",extensions:["mxf"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana"},"application/news-groupinfo":{source:"iana"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana"},"application/nss":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p2p-overlay+xml":{source:"iana"},"application/parityfec":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana"},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana"},"application/pidf-diff+xml":{source:"iana"},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",extensions:["pls"]},"application/poc-settings+xml":{source:"iana"},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/provenance+xml":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.hpub+zip":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana"},"application/pskc+xml":{source:"iana",extensions:["pskcxml"]},"application/qsig":{source:"iana"},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf"]},"application/reginfo+xml":{source:"iana",extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",extensions:["rld"]},"application/rfc+xml":{source:"iana"},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana"},"application/rls-services+xml":{source:"iana",extensions:["rs"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana"},"application/samlmetadata+xml":{source:"iana"},"application/sbml+xml":{source:"iana",extensions:["sbml"]},"application/scaip+xml":{source:"iana"},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/sep+xml":{source:"iana"},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",extensions:["shf"]},"application/sieve":{source:"iana"},"application/simple-filter+xml":{source:"iana"},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",extensions:["srx"]},"application/spirits-event+xml":{source:"iana"},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",extensions:["grxml"]},"application/sru+xml":{source:"iana",extensions:["sru"]},"application/ssdl+xml":{source:"apache",extensions:["ssdl"]},"application/ssml+xml":{source:"iana",extensions:["ssml"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/tei+xml":{source:"iana",extensions:["tei","teicorpus"]},"application/thraud+xml":{source:"iana",extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/ttml+xml":{source:"iana"},"application/tve-trigger":{source:"iana"},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana"},"application/urc-ressheet+xml":{source:"iana"},"application/urc-targetdesc+xml":{source:"iana"},"application/urc-uisocketdesc+xml":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana"},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.3gpp-prose+xml":{source:"iana"},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana"},"application/vnd.3gpp.bsf+xml":{source:"iana"},"application/vnd.3gpp.mid-call+xml":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana"},"application/vnd.3gpp.srvcc-info+xml":{source:"iana"},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana"},"application/vnd.3gpp.ussd+xml":{source:"iana"},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana"},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",extensions:["mpkg"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avistar+xml":{source:"iana"},"application/vnd.balsamiq.bmml+xml":{source:"iana"},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.biopax.rdf+xml":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",extensions:["cdxml"]},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana"},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",extensions:["wbs"]},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana"},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana"},"application/vnd.cybank":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume-movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana"},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana"},"application/vnd.dvb.notif-container+xml":{source:"iana"},"application/vnd.dvb.notif-generic+xml":{source:"iana"},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana"},"application/vnd.dvb.notif-init+xml":{source:"iana"},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana"},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana"},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.eszigno3+xml":{source:"iana",extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana"},"application/vnd.etsi.asic-e+zip":{source:"iana"},"application/vnd.etsi.asic-s+zip":{source:"iana"},"application/vnd.etsi.cug+xml":{source:"iana"},"application/vnd.etsi.iptvcommand+xml":{source:"iana"},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana"},"application/vnd.etsi.iptvprofile+xml":{source:"iana"},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana"},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana"},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana"},"application/vnd.etsi.iptvservice+xml":{source:"iana"},"application/vnd.etsi.iptvsync+xml":{source:"iana"},"application/vnd.etsi.iptvueprofile+xml":{source:"iana"},"application/vnd.etsi.mcid+xml":{source:"iana"},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana"},"application/vnd.etsi.pstn+xml":{source:"iana"},"application/vnd.etsi.sci+xml":{source:"iana"},"application/vnd.etsi.simservs+xml":{source:"iana"},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana"},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eudora.data":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana"},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana"},"application/vnd.gov.sk.e-form+zip":{source:"iana"},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana"},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana"},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana"},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana"},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana"},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana"},"application/vnd.iptc.g2.packageitem+xml":{source:"iana"},"application/vnd.iptc.g2.planningitem+xml":{source:"iana"},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las.las+xml":{source:"iana",extensions:["lasxml"]},"application/vnd.liberty-request+xml":{source:"iana"},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",extensions:["lbe"]},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana"},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana"},"application/vnd.marlin.drm.conftoken+xml":{source:"iana"},"application/vnd.marlin.drm.license+xml":{source:"iana"},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana"},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana"},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana"},"application/vnd.ms-printing.printticket+xml":{source:"apache"},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana"},"application/vnd.nokia.iptv.config+xml":{source:"iana"},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana"},"application/vnd.nokia.landmarkcollection+xml":{source:"iana"},"application/vnd.nokia.n-gage.ac+xml":{source:"iana"},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana"},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana"},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana"},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana"},"application/vnd.oipf.dae.xhtml+xml":{source:"iana"},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana"},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana"},"application/vnd.oipf.spdlist+xml":{source:"iana"},"application/vnd.oipf.ueprofile+xml":{source:"iana"},"application/vnd.oipf.userprofile+xml":{source:"iana"},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana"},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.imd+xml":{source:"iana"},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana"},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana"},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.sprov+xml":{source:"iana"},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana"},"application/vnd.oma.cab-feature-handler+xml":{source:"iana"},"application/vnd.oma.cab-pcc+xml":{source:"iana"},"application/vnd.oma.cab-subs-invite+xml":{source:"iana"},"application/vnd.oma.cab-user-prefs+xml":{source:"iana"},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana"},"application/vnd.oma.group-usage-list+xml":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana"},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana"},"application/vnd.oma.poc.final-report+xml":{source:"iana"},"application/vnd.oma.poc.groups+xml":{source:"iana"},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana"},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana"},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana"},"application/vnd.oma.xcap-directory+xml":{source:"iana"},"application/vnd.omads-email+xml":{source:"iana"},"application/vnd.omads-file+xml":{source:"iana"},"application/vnd.omads-folder+xml":{source:"iana"},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana"},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"apache",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"apache",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"apache",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana"},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana"},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana"},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana"},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana"},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos+xml":{source:"iana"},"application/vnd.paos.xml":{source:"apache"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana"},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana"},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana"},"application/vnd.radisys.msml+xml":{source:"iana"},"application/vnd.radisys.msml-audit+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana"},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana"},"application/vnd.radisys.msml-conf+xml":{source:"iana"},"application/vnd.radisys.msml-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana"},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.software602.filler.form+xml":{source:"iana"},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana"},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana"},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana"},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.tmd.mediaflex.api+xml":{source:"iana"},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana"},"application/vnd.wv.ssp+xml":{source:"iana"},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana"},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",extensions:["zaz"]},"application/voicexml+xml":{source:"iana",extensions:["vxml"]},"application/vq-rtcpxr":{source:"iana"},"application/watcherinfo+xml":{source:"iana"},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-otf":{source:"apache",compressible:!0,extensions:["otf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-ttf":{source:"apache",compressible:!0,extensions:["ttf","ttc"]},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"apache",extensions:["der","crt","pem"]},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana"},"application/xaml+xml":{source:"apache",extensions:["xaml"]},"application/xcap-att+xml":{source:"iana"},"application/xcap-caps+xml":{source:"iana"},"application/xcap-diff+xml":{source:"iana",extensions:["xdf"]},"application/xcap-el+xml":{source:"iana"},"application/xcap-error+xml":{source:"iana"},"application/xcap-ns+xml":{source:"iana"},"application/xcon-conference-info+xml":{source:"iana"},"application/xcon-conference-info-diff+xml":{source:"iana"},"application/xenc+xml":{source:"iana",extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache"},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana"},"application/xmpp+xml":{source:"iana"},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",extensions:["xpl"]},"application/xslt+xml":{source:"iana",extensions:["xslt"]},"application/xspf+xml":{source:"apache",extensions:["xspf"]},"application/xv+xml":{source:"iana",extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yin+xml":{source:"iana",extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana"},"audio/3gpp2":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana"},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana"},"audio/mp4":{source:"iana",compressible:!1,extensions:["mp4a","m4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tone":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/opentype":{compressible:!0,extensions:["otf"]},"image/bmp":{source:"apache",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/fits":{source:"iana"},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jp2":{source:"iana"},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jpm":{source:"iana"},"image/jpx":{source:"iana"},"image/ktx":{source:"iana",extensions:["ktx"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana"},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana"},"image/tiff":{source:"iana",compressible:!1,extensions:["tiff","tif"]},"image/tiff-fx":{source:"iana"},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana"},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana"},"image/vnd.valve.source.texture":{source:"iana"},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana"},"image/webp":{source:"apache",extensions:["webp"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana"},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana"},"message/global-delivery-status":{source:"iana"},"message/global-disposition-notification":{source:"iana"},"message/global-headers":{source:"iana"},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana"},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/vnd.collada+xml":{source:"iana",extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana"},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana"},"model/vnd.parasolid.transmit.binary":{source:"iana"},"model/vnd.parasolid.transmit.text":{source:"iana"},"model/vnd.valve.source.compiled-map":{source:"iana"},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana"},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana"},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana",compressible:!1},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/css":{source:"iana",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fwdred":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hjson":{extensions:["hjson"]},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{extensions:["less"]},"text/markdown":{source:"iana"},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["markdown","md","mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"apache"},"video/3gpp":{source:"apache",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"apache"},"video/3gpp2":{source:"apache",extensions:["3g2"]},"video/bmpeg":{source:"apache"},"video/bt656":{source:"apache"},"video/celb":{source:"apache"},"video/dv":{source:"apache"},"video/h261":{source:"apache",extensions:["h261"]},"video/h263":{source:"apache",extensions:["h263"]},"video/h263-1998":{source:"apache"},"video/h263-2000":{source:"apache"},"video/h264":{source:"apache",extensions:["h264"]},"video/h264-rcdo":{source:"apache"},"video/h264-svc":{source:"apache"},"video/jpeg":{source:"apache",extensions:["jpgv"]},"video/jpeg2000":{source:"apache"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/mj2":{source:"apache",extensions:["mj2","mjp2"]},"video/mp1s":{source:"apache"},"video/mp2p":{source:"apache"},"video/mp2t":{source:"apache",extensions:["ts"]},"video/mp4":{source:"apache",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"apache"},"video/mpeg":{source:"apache",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"apache"},"video/mpv":{source:"apache"},"video/nv":{source:"apache"},"video/ogg":{source:"apache",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"apache"},"video/pointer":{source:"apache"},"video/quicktime":{source:"apache",compressible:!1,extensions:["qt","mov"]},"video/raw":{source:"apache"},"video/rtp-enc-aescm128":{source:"apache"},"video/rtx":{source:"apache"},"video/smpte292m":{source:"apache"},"video/ulpfec":{source:"apache"},"video/vc1":{source:"apache"},"video/vnd.cctv":{source:"apache"},"video/vnd.dece.hd":{source:"apache",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"apache",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"apache"},"video/vnd.dece.pd":{source:"apache",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"apache",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"apache",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"apache"},"video/vnd.directv.mpeg-tts":{source:"apache"},"video/vnd.dlna.mpeg-tts":{source:"apache"},"video/vnd.dvb.file":{source:"apache",extensions:["dvb"]},"video/vnd.fvt":{source:"apache",extensions:["fvt"]},"video/vnd.hns.video":{source:"apache"},"video/vnd.iptvforum.1dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.1dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.2dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.2dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.ttsavc":{source:"apache"},"video/vnd.iptvforum.ttsmpeg2":{source:"apache"},"video/vnd.motorola.video":{source:"apache"},"video/vnd.motorola.videop":{source:"apache"},"video/vnd.mpegurl":{source:"apache",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"apache",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"apache"},"video/vnd.nokia.videovoip":{source:"apache"},"video/vnd.objectvideo":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"apache"},"video/vnd.sealed.mpeg4":{source:"apache"},"video/vnd.sealed.swf":{source:"apache"},"video/vnd.sealedmedia.softseal.mov":{source:"apache"},"video/vnd.uvvu.mp4":{source:"apache",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"apache",extensions:["viv"]},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}},{}],142:[function(e,t,a){"use strict";t.exports=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"]},{}],143:[function(e,t,a){"use strict";var n={};(t.exports=n).creature=e("./creature"),n.name=e("./name")},{"./creature":142,"./name":144}],144:[function(e,t,a){"use strict";t.exports=["#{Address.state} #{creature}"]},{}],145:[function(e,t,a){"use strict";t.exports=["United States","United States of America","USA"]},{}],146:[function(e,t,a){"use strict";var n={};(t.exports=n).default_country=e("./default_country"),n.postcode_by_state=e("./postcode_by_state")},{"./default_country":145,"./postcode_by_state":147}],147:[function(e,t,a){"use strict";t.exports={AL:"350##",AK:"995##",AS:"967##",AZ:"850##",AR:"717##",CA:"900##",CO:"800##",CT:"061##",DC:"204##",DE:"198##",FL:"322##",GA:"301##",HI:"967##",ID:"832##",IL:"600##",IN:"463##",IA:"510##",KS:"666##",KY:"404##",LA:"701##",ME:"042##",MD:"210##",MA:"026##",MI:"480##",MN:"555##",MS:"387##",MO:"650##",MT:"590##",NE:"688##",NV:"898##",NH:"036##",NJ:"076##",NM:"880##",NY:"122##",NC:"288##",ND:"586##",OH:"444##",OK:"730##",OR:"979##",PA:"186##",RI:"029##",SC:"299##",SD:"577##",TN:"383##",TX:"798##",UT:"847##",VT:"050##",VA:"222##",WA:"990##",WV:"247##",WI:"549##",WY:"831##"}},{}],148:[function(e,t,a){"use strict";var n={};(t.exports=n).title="United States (English)",n.internet=e("./internet"),n.address=e("./address"),n.phone_number=e("./phone_number")},{"./address":146,"./internet":150,"./phone_number":153}],149:[function(e,t,a){"use strict";t.exports=["com","us","biz","info","name","net","org"]},{}],150:[function(e,t,a){"use strict";var n={};(t.exports=n).domain_suffix=e("./domain_suffix")},{"./domain_suffix":149}],151:[function(e,t,a){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],152:[function(e,t,a){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],153:[function(e,t,a){"use strict";var n={};(t.exports=n).area_code=e("./area_code"),n.exchange_code=e("./exchange_code")},{"./area_code":151,"./exchange_code":152}],154:[function(e,t,a){"use strict";t.exports=function(n){var e=this,a=n.helpers;return e.word=function(e){return n.random.arrayElement(n.definitions.lorem.words)},e.words=function(e){void 0===e&&(e=3);for(var t=[],a=0;a>>n&1&&(a=p(a,u(t<>>30)),i),c[i]=u(4294967295&c[i])},this.init_by_array=function(e,t){var a,n,i,r,o;for(this.init_genrand(19650218),a=1,n=0,i=t>>30),1664525)),e[n]),n),c[a]=u(4294967295&c[a]),n++,s<=++a&&(c[0]=c[623],a=1),t<=n&&(n=0);for(i=623;i;i--)c[a]=(r=u((dbg=c[a])^l(u(c[a-1]^c[a-1]>>>30),1566083941)))<(o=a)?u(4294967296-(o-r)&4294967295):r-o,c[a]=u(4294967295&c[a]),s<=++a&&(c[0]=c[623],a=1);c[0]=2147483648};var r=[0,2567483615];this.genrand_int32=function(){var e;if(s<=i){var t;for(625==i&&this.init_genrand(5489),t=0;t<227;t++)e=u(c[t]&a|c[t+1]&n),c[t]=u(c[t+397]^e>>>1^r[1&e]);for(;t<623;t++)e=u(c[t]&a|c[t+1]&n),c[t]=u(c[t+-227]^e>>>1^r[1&e]);e=u(c[623]&a|c[0]&n),c[623]=u(c[396]^e>>>1^r[1&e]),i=0}return e=u((e=u((e=u((e=u((e=c[i++])^e>>>11))^e<<7&2636928640))^e<<15&4022730752))^e>>>18)},this.genrand_int31=function(){return this.genrand_int32()>>>1},this.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},this.genrand_real2=function(){return this.genrand_int32()*(1/4294967296)},this.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},this.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)}}var r=new(a.MersenneTwister19937=i);r.init_genrand((new Date).getTime()%1e9),a.rand=function(e,t){return void 0===e&&(t=0,e=32768),Math.floor(r.genrand_real2()*(e-t)+t)},a.seed=function(e){if("number"!=typeof e)throw new Error("seed(S) must take numeric argument; is "+(void 0===e?"undefined":n(e)));r.init_genrand(e)},a.seed_array=function(e){if("object"!=(void 0===e?"undefined":n(e)))throw new Error("seed_array(A) must take array of numbers; is "+(void 0===e?"undefined":n(e)));r.init_by_array(e)}},{}],161:[function(e,t,a){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(e=e||0,"number"==typeof(t=t||100)&&"number"==typeof e)return function(e,t){if(t>1,p=-7,l=a?i-1:0,f=a?-1:1,m=e[t+l];for(l+=f,r=m&(1<<-p)-1,m>>=-p,p+=s;0>=-p,p+=n;0>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:r-1,d=n?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=p):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),2<=(t+=1<=o+l?f/c:f*Math.pow(2,1-l))*c&&(o++,c/=2),p<=o+l?(s=0,o=p):1<=o+l?(s=(t*c-1)*Math.pow(2,i),o+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,i),o=0));8<=i;e[a+m]=255&s,m+=d,s/=256,i-=8);for(o=o<=n.flowLevel;switch(J(i,a,n.indent,t,function(e){return function(e,t){var a,n;for(a=0,n=e.implicitTypes.length;a"+V(i,n.indent)+Y(O(function(e,t){var a,n,i=/(\n+)([^\n]*)/g,r=(s=e.indexOf("\n"),s=-1!==s?s:e.length,i.lastIndex=s,Z(e.slice(0,s),t)),o="\n"===e[0]||" "===e[0];var s;for(;n=i.exec(e);){var c=n[1],u=n[2];a=" "===u[0],r+=c+(o||a||""===u?"":"\n")+Z(u,t),o=a}return r}(i,t),e));case H:return'"'+function(e){for(var t,a,n,i="",r=0;rt&&r tag resolver accepts not "'+c+'" style');n=s.represent[c](t,c)}e.dump=n}return!0}return!1}function Q(e,t,a,n,i,r){e.tag=null,e.dump=a,X(e,a,!1)||X(e,a,!0);var o=p.call(e.dump);n&&(n=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===o||"[object Array]"===o;if(u&&(c=-1!==(s=e.duplicates.indexOf(a))),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&0 "+e.dump)}return!0}function ee(e,t){var a,n,i=[],r=[];for(function e(t,a,n){var i,r,o;if(null!==t&&"object"===(void 0===t?"undefined":u(t)))if(-1!==(r=a.indexOf(t)))-1===n.indexOf(r)&&n.push(r);else if(a.push(t),Array.isArray(t))for(r=0,o=t.length;rt)&&0!==n)z(e,"bad indentation of a sequence entry");else if(e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt)&&(G(e,t,x,!0,i)&&(h?m=e.result:d=e.result),h||(O(e,p,l,f,m,d,r,o),f=m=d=null),L(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)z(e,"bad indentation of a mapping entry");else if(e.lineIndentp&&(p=e.lineIndent),C(r))l++;else{if(e.lineIndent>10),56320+(c-65536&1023)),e.position++}else z(e,"unknown escape sequence");a=n=e.position}else C(s)?(M(e,a,n,!0),N(e,L(e,!1,t)),a=n=e.position):e.position===e.lineStart&&P(e)?z(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}z(e,"unexpected end of the stream within a double quoted scalar")}(e,l)?h=!0:!function(e){var t,a,n;if(42!==(n=e.input.charCodeAt(e.position)))return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!S(n)&&!k(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&z(e,"name of an alias node must contain at least one character"),a=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(a)||z(e,'unidentified alias "'+a+'"'),e.result=e.anchorMap[a],L(e,!0,-1),!0}(e)?function(e,t,a){var n,i,r,o,s,c,u,p,l=e.kind,f=e.result;if(S(p=e.input.charCodeAt(e.position))||k(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(S(n=e.input.charCodeAt(e.position+1))||a&&k(n)))return!1;for(e.kind="scalar",e.result="",i=r=e.position,o=!1;0!==p;){if(58===p){if(S(n=e.input.charCodeAt(e.position+1))||a&&k(n))break}else if(35===p){if(S(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&P(e)||a&&k(p))break;if(C(p)){if(s=e.line,c=e.lineStart,u=e.lineIndent,L(e,!1,-1),e.lineIndent>=t){o=!0,p=e.input.charCodeAt(e.position);continue}e.position=r,e.line=s,e.lineStart=c,e.lineIndent=u;break}}o&&(M(e,i,r,!1),N(e,e.line-s),i=r=e.position,o=!1),D(p)||(r=e.position+1),p=e.input.charCodeAt(++e.position)}return M(e,i,r,!1),!!e.result||(e.kind=l,e.result=f,!1)}(e,l,v===a)&&(h=!0,null===e.tag&&(e.tag="?")):(h=!0,null===e.tag&&null===e.anchor||z(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===m&&(h=s&&U(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(c=0,u=e.implicitTypes.length;c tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result)?(e.result=p.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):z(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):z(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||h}function K(e){var t,a,n,i,r=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(i=e.input.charCodeAt(e.position))&&(L(e,!0,-1),i=e.input.charCodeAt(e.position),!(0t/2-1){a=" ... ",n+=5;break}for(i="",r=this.position;rt/2-1){i=" ... ",r-=5;break}return o=this.buffer.slice(n,r),s.repeat(" ",e)+a+o+i+"\n"+s.repeat(" ",e+this.position-n+a.length)+"^"},n.prototype.toString=function(e){var t,a="";return this.name&&(a+='in "'+this.name+'" '),a+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(a+=":\n"+t),a},t.exports=n},{"./common":170}],175:[function(e,t,a){"use strict";var n=e("./common"),i=e("./exception"),r=e("./type");function o(e,t,n){var i=[];return e.include.forEach(function(e){n=o(e,t,n)}),e[t].forEach(function(a){n.forEach(function(e,t){e.tag===a.tag&&e.kind===a.kind&&i.push(t)}),n.push(a)}),n.filter(function(e,t){return-1===i.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new i("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=o(this,"implicit",[]),this.compiledExplicit=o(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,a={scalar:{},sequence:{},mapping:{},fallback:{}};function n(e){a[e.kind][e.tag]=a.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|r.indexOf(n.charAt(t));return 0==(a=i%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===a?(s.push(o>>10&255),s.push(o>>2&255)):12===a&&s.push(o>>4&255),c?c.from?c.from(s):new c(s):s},predicate:function(e){return c&&c.isBuffer(e)},represent:function(e){var t,a,n="",i=0,r=e.length,o=u;for(t=0;t>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]),i=(i<<8)+e[t];return 0==(a=r%3)?(n+=o[i>>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]):2===a?(n+=o[i>>10&63],n+=o[i>>4&63],n+=o[i<<2&63],n+=o[64]):1===a&&(n+=o[i>>2&63],n+=o[i<<4&63],n+=o[64],n+=o[64]),n}})},{"../type":181}],183:[function(e,t,a){"use strict";var n=e("../type");t.exports=new n("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":181}],184:[function(e,t,a){"use strict";var n=e("../common"),i=e("../type"),r=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var o=/^[-+]?[0-9]+e/;t.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!r.test(e)||"_"===e[e.length-1])},construct:function(e){var t,a,n,i;return a="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,i=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1===a?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){i.unshift(parseFloat(e,10))}),t=0,n=1,i.forEach(function(e){t+=e*n,n*=60}),a*t):a*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||n.isNegativeZero(e))},represent:function(e,t){var a;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(e))return"-0.0";return a=e.toString(10),o.test(a)?a.replace("e",".e"):a},defaultStyle:"lowercase"})},{"../common":170,"../type":181}],185:[function(e,t,a){"use strict";var n=e("../common"),i=e("../type");t.exports=new i("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,a,n,i,r=e.length,o=0,s=!1;if(!r)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===r)return!0;if("b"===(t=e[++o])){for(o++;or&&(a.maxLength=r),o&&a.minLengthi&&(s=s.substr(0,i))}return s},merge:g,clean:function t(a,e,n){return a&&"object"===(void 0===a?"undefined":d(a))?Array.isArray(a)?a=a.map(function(e){return t(e,!0,n)}).filter(function(e){return void 0!==e}):(Object.keys(a).forEach(function(e){n&&-1!==n.indexOf(e)?a[e]=t(a[e]):Array.isArray(a[e])&&!a[e].length&&delete a[e]}),Object.keys(a).length||!e?a:void 0):a},short:function(e){var t=JSON.stringify(e),a=JSON.stringify(e,null,2);return 400a.maximum?0:t.maximum,a.exclusiveMinimum=!0),void 0!==t.minLength&&(a.maxLength=t.minLength),void 0!==t.maxLength&&(a.minLength=t.maxLength>a.maxLength?0:t.maxLength),t.type)a.type=z.pick(m.ALL_TYPES.filter(function(e){return"number"===e||"integer"===e?"number"!==t.type&&"integer"!==t.type:e!==t.type}));else if(t.enum){do{var n=y()}while(-1!==t.enum.indexOf(n));a.enum=[n]}return t.required&&a.properties&&t.required.forEach(function(e){delete a.properties[e]}),a},anyValue:y,validate:function(t,e){return!e.every(function(e){return void 0!==e.minimum&&t>=e.minimum||void 0!==e.maximum&&t<=e.maximum||void 0})},isKey:function(e){return"enum"===e||"default"===e||"required"===e||"definitions"===e}},R=function(n){function e(e,t){var a=n.call(this)||this;return a.path=t,Error.captureStackTrace&&Error.captureStackTrace(a,a.constructor),a.name="ParseError",a.message=e,a.path=t,a}return i.__extends(e,n),e}(Error),v={array:["additionalItems","items","maxItems","minItems","uniqueItems"],integer:["exclusiveMaximum","exclusiveMinimum","maximum","minimum","multipleOf"],object:["additionalProperties","dependencies","maxProperties","minProperties","patternProperties","properties","required"],string:["maxLength","minLength","pattern"]};v.number=v.integer;var w=["additionalItems","items","additionalProperties","dependencies","patternProperties","properties"];function b(e,a,n){return 0t&&(a=a.substr(0,t)),a}function S(){return z.date().toISOString()}var k={email:"[a-zA-Z\\d][a-zA-Z\\d-]{1,13}[a-zA-Z\\d]@{hostname}",hostname:"[a-zA-Z]{1,33}\\.[a-z]{2,4}",ipv6:"[a-f\\d]{4}(:[a-f\\d]{4}){7}",uri:"https?://[a-zA-Z][a-zA-Z0-9+-.]*","uri-reference":"(https?://|#|/|)[a-zA-Z][a-zA-Z0-9+-.]*"};function F(e,t){var a,n=l(e.format);if("function"==typeof n)return n(e);switch(e.format){case"date-time":case"datetime":return S();case"date":return S().slice(0,10);case"time":return S().slice(11);case"ipv4":return[0,0,0,0].map(function(){return z.number(0,255)}).join(".");case"regex":return".+?";case"email":case"hostname":case"ipv6":case"uri":case"uri-reference":return a=e.format,z.randexp(k[a]).replace(/\{(\w+)\}/,function(e,t){return z.randexp(k[t])});default:if(void 0!==n)throw new Error('unsupported format "'+e.format+'"');if(_("failOnInvalidFormat"))throw new Error("unknown registry key "+B.short(e.format));return t()}}var O={boolean:x,null:A,array:function(e,n,i,r){var t=[];if(!e.items&&!e.additionalItems){if(B.hasProperties(e,"minItems","maxItems","uniqueItems"))throw new R("missing items for "+B.short(e),n);return t}var a=e.items;if(a instanceof Array)return Array.prototype.concat.call(t,a.map(function(e,t){var a=n.concat(["items",t+""]);return r(e,a,i)}));var o=e.minItems,s=e.maxItems;_("minItems")&&void 0===o&&(o=s?Math.min(_("minItems"),s):_("minItems")),_("maxItems")&&(s&&s>_("maxItems")&&(s=_("maxItems")),o&&o>_("maxItems")&&(o=s));for(var c=!0===_("alwaysFakeOptionals")?1:_("optionalsProbability"),u=null!=s&&c?Math.round(s*c):z.number(o,s,1,5),p="object"===d(e.additionalItems)?e.additionalItems:{},l=t.length;lg){var S=0;do{if(1e3<(S+=1))break;var k=z.pick(u)}while(void 0!==i[k]);void 0===i[k]&&(i[k]=r[k],D+=1)}else{var F=M(1)+z.randexp("[a-f\\d]{1,3}");i[F]||(i[F]=m||T,D+=1)}p.forEach(function(e){var t=z.randexp(e);i[t]||(i[t]=o[e],D+=1)})}if(!c&&Dc.redirects)n(m({status:e.statusCode},"Error downloading %s. \nToo many redirects: \n %s",u[0],u.join(" \n ")));else{if(!e.headers.location)throw m({status:e.statusCode},"HTTP %d redirect with no location header",e.statusCode);h("HTTP %d redirect %s -> %s",e.statusCode,s.href,e.headers.location);var t=d.resolve(s,e.headers.location);o(t,c,u).then(a,n)}else a(e.body||new p(0))}).catch(function(e){n(m(e,"Error downloading",s.href))})})}(t,this)}}}).call(this,e("_process"),e("buffer").Buffer)},{"../util/debug":215,"../util/url":217,_process:235,buffer:20,http:271,https:163,ono:230}],215:[function(e,t,a){"use strict";var n=e("debug");t.exports=n("json-schema-ref-parser")},{debug:24}],216:[function(e,t,a){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m=e("./debug");function d(e,t,a,n){var i=e[t];if("function"==typeof i)return i.apply(e,[a,n]);if(!n){if(i instanceof RegExp)return i.test(a.url);if("string"==typeof i)return i===a.extension;if(Array.isArray(i))return-1!==i.indexOf(a.extension)}return i}a.all=function(t){return Object.keys(t).filter(function(e){return"object"===n(t[e])}).map(function(e){return t[e].name=e,t[e]})},a.filter=function(e,t,a){return e.filter(function(e){return!!d(e,t,a)})},a.sort=function(e){return e.forEach(function(e){e.order=e.order||Number.MAX_SAFE_INTEGER}),e.sort(function(e,t){return e.order-t.order})},a.run=function(s,c,u){var p,l,f=0;return new Promise(function(t,a){function n(){if(!(p=s[f++]))return a(l);try{m(" %s",p.name);var e=d(p,c,u,i);e&&"function"==typeof e.then?e.then(r,o):void 0!==e&&r(e)}catch(e){o(e)}}function i(e,t){e?o(e):r(t)}function r(e){m(" success"),t({plugin:p,result:e})}function o(e){m(" %s",e.message||e),l=e,n()}n()})}},{"./debug":215}],217:[function(e,t,u){(function(a){"use strict";var i=/^win/.test(a.platform),r=/\//g,n=/^(\w{2,}):\/\//i,o=t.exports,s=[/\?/g,"%3F",/\#/g,"%23"],c=[/\%23/g,"#",/\%24/g,"$",/\%26/g,"&",/\%2C/g,",",/\%40/g,"@"];u.parse=e("url").parse,u.resolve=e("url").resolve,u.cwd=function(){return a.browser?location.href:a.cwd()+"/"},u.getProtocol=function(e){var t=n.exec(e);if(t)return t[1].toLowerCase()},u.getExtension=function(e){var t=e.lastIndexOf(".");return 0<=t?e.substr(t).toLowerCase():""},u.getHash=function(e){var t=e.indexOf("#");return 0<=t?e.substr(t):"#"},u.stripHash=function(e){var t=e.indexOf("#");return 0<=t&&(e=e.substr(0,t)),e},u.isHttp=function(e){var t=o.getProtocol(e);return"http"===t||"https"===t||void 0===t&&a.browser},u.isFileSystemPath=function(e){if(a.browser)return!1;var t=o.getProtocol(e);return void 0===t||"file"===t},u.fromFileSystemPath=function(e){i&&(e=e.replace(/\\/g,"/")),e=encodeURI(e);for(var t=0;t=a||(R.lastCommentStart=a,r={type:e,value:t},s.range&&(r.range=[a,n]),s.loc&&(r.loc=i),s.comments.push(r),s.attachComment&&(s.leadingComments.push(r),s.trailingComments.push(r)))}function v(e){var t,a,n,i;for(t=F-e,a={start:{line:p,column:F-l-e}};F<_;)if(n=S.charCodeAt(F),++F,h(n))return s.comments&&(i=S.slice(t+e,F-1),a.end={line:p,column:F-l-1},u("Line",i,t,F-1,a)),13===n&&10===S.charCodeAt(F)&&++F,++p,void(l=F);s.comments&&(i=S.slice(t+e,F),a.end={line:p,column:F-l},u("Line",i,t,F,a))}function w(){var e,t,a,n;for(s.comments&&(e=F-2,t={start:{line:p,column:F-l-2}});F<_;)if(h(a=S.charCodeAt(F)))13===a&&10===S.charCodeAt(F+1)&&++F,++p,_<=(l=++F)&&H({},D.UnexpectedToken,"ILLEGAL");else if(42===a){if(47===S.charCodeAt(F+1))return++F,++F,void(s.comments&&(n=S.slice(e+2,F-2),t.end={line:p,column:F-l},u("Block",n,e,F,t)));++F}else++F;H({},D.UnexpectedToken,"ILLEGAL")}function T(){var e,t,a;for(t=0===F;F<_;)if(e=S.charCodeAt(F),32===(a=e)||9===a||11===a||12===a||160===a||5760<=a&&0<=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(a))++F;else if(h(e))++F,13===e&&10===S.charCodeAt(F)&&++F,++p,l=F,t=!0;else if(47===e)if(47===(e=S.charCodeAt(F+1)))++F,++F,v(2),t=!0;else{if(42!==e)break;++F,++F,w()}else if(t&&45===e){if(45!==S.charCodeAt(F+1)||62!==S.charCodeAt(F+2))break;F+=3,v(3)}else{if(60!==e)break;if("!--"!==S.slice(F+1,F+4))break;++F,++F,++F,++F,v(4)}}function b(e){var t,a,n,i=0;for(a="u"===e?4:2,t=0;t>>="===(n=S.substr(F,4))?(F+=4,{type:j.Punctuator,value:n,lineNumber:p,lineStart:l,start:i,end:F}):">>>"===(a=n.substr(0,3))||"<<="===a||">>="===a?(F+=3,{type:j.Punctuator,value:a,lineNumber:p,lineStart:l,start:i,end:F}):o===(t=a.substr(0,2))[1]&&0<="+-<>&|".indexOf(o)||"=>"===t?(F+=2,{type:j.Punctuator,value:t,lineNumber:p,lineStart:l,start:i,end:F}):0<="<>=!+-*%&|^/".indexOf(o)?(++F,{type:j.Punctuator,value:o,lineNumber:p,lineStart:l,start:i,end:F}):void H({},D.UnexpectedToken,"ILLEGAL")}function O(){var e,t,a;if(f(r((a=S[F]).charCodeAt(0))||"."===a,"Numeric literal must start with a decimal digit or a decimal point"),t=F,e="","."!==a){if(e=S[F++],a=S[F],"0"===e){if("x"===a||"X"===a)return++F,function(e){for(var t="";F<_&&o(S[F]);)t+=S[F++];return 0===t.length&&H({},D.UnexpectedToken,"ILLEGAL"),M(S.charCodeAt(F))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseInt("0x"+t,16),lineNumber:p,lineStart:l,start:e,end:F}}(t);if(m(a))return function(e){for(var t="0"+S[F++];F<_&&m(S[F]);)t+=S[F++];return(M(S.charCodeAt(F))||r(S.charCodeAt(F)))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseInt(t,8),octal:!0,lineNumber:p,lineStart:l,start:e,end:F}}(t);a&&r(a.charCodeAt(0))&&H({},D.UnexpectedToken,"ILLEGAL")}for(;r(S.charCodeAt(F));)e+=S[F++];a=S[F]}if("."===a){for(e+=S[F++];r(S.charCodeAt(F));)e+=S[F++];a=S[F]}if("e"===a||"E"===a)if(e+=S[F++],"+"!==(a=S[F])&&"-"!==a||(e+=S[F++]),r(S.charCodeAt(F)))for(;r(S.charCodeAt(F));)e+=S[F++];else H({},D.UnexpectedToken,"ILLEGAL");return M(S.charCodeAt(F))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseFloat(e),lineNumber:p,lineStart:l,start:t,end:F}}function I(){var e,t,a,n;return B=null,T(),e=F,t=function(){var e,t,a,n;for(f("/"===(e=S[F]),"Regular expression literal must start with a slash"),t=S[F++],n=a=!1;F<_;)if(t+=e=S[F++],"\\"===e)h((e=S[F++]).charCodeAt(0))&&H({},D.UnterminatedRegExp),t+=e;else if(h(e.charCodeAt(0)))H({},D.UnterminatedRegExp);else if(a)"]"===e&&(a=!1);else{if("/"===e){n=!0;break}"["===e&&(a=!0)}return n||H({},D.UnterminatedRegExp),{value:t.substr(1,t.length-2),literal:t}}(),a=function(){var e,t,a,n;for(a=t="";F<_&&c((e=S[F]).charCodeAt(0));)if(++F,"\\"===e&&F<_)if("u"===(e=S[F])){if(n=++F,e=b("u"))for(a+=e,t+="\\u";n":case"<=":case">=":case"instanceof":a=7;break;case"in":a=t?7:0;break;case"<<":case">>":case">>>":a=8;break;case"+":case"-":a=9;break;case"*":case"/":case"%":a=11}return a}function fe(){var e,t,a,n,i;return i=B,e=function(){var e,t,a,n,i,r,o,s,c,u;if(e=B,c=pe(),0===(i=le(n=B,R.allowIn)))return c;for(n.prec=i,U(),t=[e,B],r=[c,n,o=pe()];0<(i=le(B,R.allowIn));){for(;2>="!==r&&">>>="!==r&&"&="!==r&&"^="!==r&&"|="!==r||(ee(t)||J({},D.InvalidLHSInAssignment),k&&t.type===C.Identifier&&y(t.name)&&J(e,D.StrictLHSAssignment),e=U(),a=me(),n=z.markEnd(z.createAssignmentExpression(e.value,t,a),i)),n}function de(){var e,t=B;if(e=me(),Z(",")){for(e=z.createSequenceExpression([e]);F<_&&Z(",");)U(),e.expressions.push(me());z.markEnd(e,t)}return e}function he(){var e,t;return t=B,V("{"),e=function(){for(var e,t=[];F<_&&!Z("}")&&void 0!==(e=Ce());)t.push(e);return t}(),V("}"),z.markEnd(z.createBlockStatement(e),t)}function ge(){var e,t;return t=B,(e=U()).type!==j.Identifier&&W(e),z.markEnd(z.createIdentifier(e.value),t)}function ye(e){var t,a,n,i,r=[];do{if(r.push((t=e,i=n=a=void 0,i=null,n=B,a=ge(),k&&y(a.name)&&J({},D.StrictVarName),"const"===t?(V("="),i=me()):Z("=")&&(U(),i=me()),z.markEnd(z.createVariableDeclarator(a,i),n))),!Z(","))break;U()}while(F<_);return r}function ve(){var e,t,a,n,i,r,o,s,c,u;return e=t=a=null,Y("for"),V("("),Z(";")?U():(X("var")||X("let")?(R.allowIn=!1,u=B,s=U(),c=ye(),e=z.markEnd(z.createVariableDeclaration(c,s.value),u),R.allowIn=!0,1===e.declarations.length&&X("in")&&(U(),n=e,i=de(),e=null)):(R.allowIn=!1,e=de(),R.allowIn=!0,X("in")&&(ee(e)||J({},D.InvalidLHSInForIn),U(),n=e,i=de(),e=null)),void 0===n&&V(";")),void 0===n&&(Z(";")||(t=de()),V(";"),Z(")")||(a=de())),V(")"),o=R.inIteration,R.inIteration=!0,r=xe(),R.inIteration=o,void 0===n?z.createForStatement(e,t,a,r):z.createForInStatement(n,i,r)}function we(){var e,t,a,n=[];for(a=B,e=X("default")?(U(),null):(Y("case"),de()),V(":");F<_&&!(Z("}")||X("default")||X("case"));)t=xe(),n.push(t);return z.markEnd(z.createSwitchCase(e,n),a)}function be(){var e,t,a,n,i=[],r=null;return Y("try"),e=he(),X("catch")&&i.push((n=B,Y("catch"),V("("),Z(")")&&W(B),t=ge(),k&&y(t.name)&&J({},D.StrictCatchVariable),V(")"),a=he(),z.markEnd(z.createCatchClause(t,a),n))),X("finally")&&(U(),r=he()),0!==i.length||r||H({},D.NoCatchOrFinally),z.createTryStatement(e,[],i,r)}function xe(){var e,t,a,n,i,r,o,s,c,u,p,l,f,m,d,h,g,y,v,w,b,x,A,E=B.type;if(E===j.EOF&&W(B),E===j.Punctuator&&"{"===B.value)return he();if(n=B,E===j.Punctuator)switch(B.value){case";":return z.markEnd((V(";"),z.createEmptyStatement()),n);case"(":return z.markEnd((i=de(),Q(),z.createExpressionStatement(i)),n)}if(E===j.Keyword)switch(B.value){case"break":return z.markEnd((A=null,Y("break"),59===S.charCodeAt(F)?(U(),R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(null)):K()?(R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(null)):(B.type===j.Identifier&&(x="$"+(A=ge()).name,Object.prototype.hasOwnProperty.call(R.labelSet,x)||H({},D.UnknownLabel,A.name)),Q(),null!==A||R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(A))),n);case"continue":return z.markEnd((b=null,Y("continue"),59===S.charCodeAt(F)?(U(),R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(null)):K()?(R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(null)):(B.type===j.Identifier&&(w="$"+(b=ge()).name,Object.prototype.hasOwnProperty.call(R.labelSet,w)||H({},D.UnknownLabel,b.name)),Q(),null!==b||R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(b))),n);case"debugger":return z.markEnd((Y("debugger"),Q(),z.createDebuggerStatement()),n);case"do":return z.markEnd((Y("do"),v=R.inIteration,R.inIteration=!0,g=xe(),R.inIteration=v,Y("while"),V("("),y=de(),V(")"),Z(";")&&U(),z.createDoWhileStatement(g,y)),n);case"for":return z.markEnd(ve(),n);case"function":return z.markEnd(je(),n);case"if":return z.markEnd((Y("if"),V("("),m=de(),V(")"),d=xe(),h=X("else")?(U(),xe()):null,z.createIfStatement(m,d,h)),n);case"return":return z.markEnd((f=null,Y("return"),R.inFunctionBody||J({},D.IllegalReturn),32===S.charCodeAt(F)&&M(S.charCodeAt(F+1))?(f=de(),Q(),z.createReturnStatement(f)):K()?z.createReturnStatement(null):(Z(";")||Z("}")||B.type===j.EOF||(f=de()),Q(),z.createReturnStatement(f))),n);case"switch":return z.markEnd(function(){var e,t,a,n,i;if(Y("switch"),V("("),e=de(),V(")"),V("{"),t=[],Z("}"))return U(),z.createSwitchStatement(e,t);for(n=R.inSwitch,i=!(R.inSwitch=!0);F<_&&!Z("}");)null===(a=we()).test&&(i&&H({},D.MultipleDefaultsInSwitch),i=!0),t.push(a);return R.inSwitch=n,V("}"),z.createSwitchStatement(e,t)}(),n);case"throw":return z.markEnd((Y("throw"),K()&&H({},D.NewlineAfterThrow),l=de(),Q(),z.createThrowStatement(l)),n);case"try":return z.markEnd(be(),n);case"var":return z.markEnd((Y("var"),p=ye(),Q(),z.createVariableDeclaration(p,"var")),n);case"while":return z.markEnd((Y("while"),V("("),s=de(),V(")"),u=R.inIteration,R.inIteration=!0,c=xe(),R.inIteration=u,z.createWhileStatement(s,c)),n);case"with":return z.markEnd((k&&(T(),J({},D.StrictModeWith)),Y("with"),V("("),r=de(),V(")"),o=xe(),z.createWithStatement(r,o)),n)}return(e=de()).type===C.Identifier&&Z(":")?(U(),a="$"+e.name,Object.prototype.hasOwnProperty.call(R.labelSet,a)&&H({},D.Redeclaration,"Label",e.name),R.labelSet[a]=!0,t=xe(),delete R.labelSet[a],z.markEnd(z.createLabeledStatement(e,t),n)):(Q(),z.markEnd(z.createExpressionStatement(e),n))}function Ae(){var e,t,a,n,i,r,o,s,c=[];for(s=B,V("{");F<_&&B.type===j.StringLiteral&&(t=B,e=Ce(),c.push(e),e.expression.type===C.Literal);)"use strict"===S.slice(t.start+1,t.end-1)?(k=!0,a&&J(a,D.StrictOctalLiteral)):!a&&t.octal&&(a=t);for(n=R.labelSet,i=R.inIteration,r=R.inSwitch,o=R.inFunctionBody,R.labelSet={},R.inIteration=!1,R.inSwitch=!1,R.inFunctionBody=!0;F<_&&!Z("}")&&void 0!==(e=Ce());)c.push(e);return V("}"),R.labelSet=n,R.inIteration=i,R.inSwitch=r,R.inFunctionBody=o,z.markEnd(z.createBlockStatement(c),s)}function Ee(e){var t,a,n,i,r,o,s=[];if(V("("),!Z(")"))for(i={};F<_&&(a=B,t=ge(),r="$"+a.value,k?(y(a.value)&&(n=a,o=D.StrictParamName),Object.prototype.hasOwnProperty.call(i,r)&&(n=a,o=D.StrictParamDupe)):e||(y(a.value)?(e=a,o=D.StrictParamName):g(a.value)?(e=a,o=D.StrictReservedWord):Object.prototype.hasOwnProperty.call(i,r)&&(e=a,o=D.StrictParamDupe)),s.push(t),i[r]=!0,!Z(")"));)V(",");return V(")"),{params:s,stricted:n,firstRestricted:e,message:o}}function je(){var e,t,a,n,i,r,o,s,c,u;return u=B,Y("function"),n=B,e=ge(),k?y(n.value)&&J(n,D.StrictFunctionName):y(n.value)?(o=n,s=D.StrictFunctionName):g(n.value)&&(o=n,s=D.StrictReservedWord),t=(r=Ee(o)).params,i=r.stricted,o=r.firstRestricted,r.message&&(s=r.message),c=k,a=Ae(),k&&o&&H(o,s),k&&i&&J(i,s),k=c,z.markEnd(z.createFunctionDeclaration(e,t,[],a),u)}function Ce(){if(B.type===j.Keyword)switch(B.value){case"const":case"let":return e=B.value,a=B,Y(e),t=ye(e),Q(),z.markEnd(z.createVariableDeclaration(t,e),a);case"function":return je();default:return xe()}var e,t,a;if(B.type!==j.EOF)return xe()}function De(){var e,t;return T(),q(),t=B,k=!1,e=function(){for(var e,t,a,n=[];F<_&&(t=B).type===j.StringLiteral&&(e=Ce(),n.push(e),e.expression.type===C.Literal);)"use strict"===S.slice(t.start+1,t.end-1)?(k=!0,a&&J(a,D.StrictOctalLiteral)):!a&&t.octal&&(a=t);for(;F<_&&void 0!==(e=Ce());)n.push(e);return n}(),z.markEnd(z.createProgram(e),t)}function Se(){var e,t,a,n=[];for(e=0;e",n[j.Identifier]="Identifier",n[j.Keyword]="Keyword",n[j.NullLiteral]="Null",n[j.NumericLiteral]="Numeric",n[j.Punctuator]="Punctuator",n[j.StringLiteral]="String",n[j.RegularExpression]="RegularExpression",a=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],C={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},d={Data:1,Get:2,Set:4},D={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},t={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},i={name:"SyntaxTree",processComment:function(e){var t,a;if(!(e.type===C.Program&&0=e.range[1]?(a=s.trailingComments,s.trailingComments=[]):s.trailingComments.length=0:0=e.range[1]&&(a=s.bottomRightStack[s.bottomRightStack.length-1].trailingComments,delete s.bottomRightStack[s.bottomRightStack.length-1].trailingComments);0=e.range[0];)t=s.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):0t[0].length)){if(t=a,n=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(a,i[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return 0 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};i.readFileSync&&(r.moduleInclude=i.readFileSync(e.resolve("../include/module.js")),r.actionInclude=i.readFileSync(e.resolve("../include/action.js"))),t.exports=r},{"./dict":222,fs:18}],224:[function(s,e,t){"use strict";var c=s("./aesprim"),i=s("./slice"),a=s("static-eval"),n=s("underscore").uniq,r=function(){return this.initialize.apply(this,arguments)};function o(t,e,a){var n=s("./index"),i=m(c.parse(e).body[0].expression,{"@":t.value}),r=a.replace(/\{\{\s*value\s*\}\}/g,i),o=n.nodes(t.value,r);return o.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),o}function u(e){return Array.isArray(e)}function p(c){return function(e,n,i,r){var t=e.value,a=e.path,o=[],s=function(t,a){var e;u(t)?(t.forEach(function(e,t){o.length>=r||i(t,e,n)&&o.push({path:a.concat(t),value:e})}),t.forEach(function(e,t){o.length>=r||c&&s(e,a.concat(t))})):(e=t)&&!(e instanceof Array)&&e instanceof Object&&(this.keys(t).forEach(function(e){o.length>=r||i(e,t[e],n)&&o.push({path:a.concat(e),value:t[e]})}),this.keys(t).forEach(function(e){o.length>=r||c&&s(t[e],a.concat(e))}))}.bind(this);return s(t,a),o}}function l(n){return function(e,t,a){return this.descend(t,e.expression.value,n,a)}}function f(n){return function(e,t,a){return this.traverse(t,e.expression.value,n,a)}}function m(){try{return a.apply(this,arguments)}catch(e){}}function d(e){return e=e.filter(function(e){return e}),n(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function h(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}r.prototype.initialize=function(){this.traverse=p(!0),this.descend=p()},r.prototype.keys=Object.keys,r.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),a=this._fns[t];if(!a)throw new Error("couldn't resolve key: "+t);return a.bind(this)},r.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},(r.prototype._fns={"member-child-identifier":function(e,t){var a=e.expression.value,n=t.value;if(n instanceof Object&&a in n)return[{value:n[a],path:t.path.concat(a)}]},"member-descendant-identifier":f(function(e,t,a){return e==a}),"subscript-child-numeric_literal":l(function(e,t,a){return e===a}),"member-child-numeric_literal":l(function(e,t,a){return String(e)===String(a)}),"subscript-descendant-numeric_literal":f(function(e,t,a){return e===a}),"member-child-wildcard":l(function(){return!0}),"member-descendant-wildcard":f(function(){return!0}),"subscript-descendant-wildcard":f(function(){return!0}),"subscript-child-wildcard":l(function(){return!0}),"subscript-child-slice":function(e,a){if(u(a.value)){var t=e.expression.value.split(":").map(h),n=a.value.map(function(e,t){return{value:e,path:a.path.concat(t)}});return i.apply(null,[n].concat(t))}},"subscript-child-union":function(e,n){var i=[];return e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},a=this.resolve(t)(t,n);a&&(i=i.concat(a))},this),d(i)},"subscript-descendant-union":function(e,t,a){var n=s(".."),i=this,r=[];return n.nodes(t,"$..*").slice(1).forEach(function(n){r.length>=a||e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},a=i.resolve(t)(t,n);r=r.concat(a)})}),d(r)},"subscript-child-filter_expression":function(e,t,a){var n=e.expression.value.slice(2,-1),i=c.parse(n).body[0].expression;return this.descend(t,null,function(e,t){return m(i,{"@":t})},a)},"subscript-descendant-filter_expression":function(e,t,a){var n=e.expression.value.slice(2,-1),i=c.parse(n).body[0].expression;return this.traverse(t,null,function(e,t){return m(i,{"@":t})},a)},"subscript-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$..value")}})["subscript-child-string_literal"]=r.prototype._fns["member-child-identifier"],r.prototype._fns["member-descendant-numeric_literal"]=r.prototype._fns["subscript-descendant-string_literal"]=r.prototype._fns["member-descendant-identifier"],e.exports=r},{"..":221,"./aesprim":219,"./index":225,"./slice":227,"static-eval":255,underscore:281}],225:[function(e,t,a){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=e("assert"),i=e("./dict"),n=e("./parser"),r=e("./handlers"),s=function(){this.initialize.apply(this,arguments)};function c(e){return"[object String]"==Object.prototype.toString.call(e)}s.prototype.initialize=function(){this.parser=new n,this.handlers=new r},s.prototype.parse=function(e){return l.ok(c(e),"we need a path"),this.parser.parse(e)},s.prototype.parent=function(e,t){l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path");var a=this.nodes(e,t)[0];a.path.pop();return this.value(e,a.path)},s.prototype.apply=function(i,e,r){l.ok(i instanceof Object,"obj needs to be an object"),l.ok(e,"we need a path"),l.equal(void 0===r?"undefined":o(r),"function","fn needs to be function");var t=this.nodes(i,e).sort(function(e,t){return t.path.length-e.path.length});return t.forEach(function(e){var t=e.path.pop(),a=this.value(i,this.stringify(e.path)),n=e.value=r.call(i,a[t]);a[t]=n},this),t},s.prototype.value=function(e,t,a){if(l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),3<=arguments.length){var n=this.nodes(e,t).shift();if(!n)return this._vivify(e,t,a);var i=n.path.slice(-1).shift();this.parent(e,this.stringify(n.path))[i]=a}return this.query(e,this.stringify(t),1).shift()},s.prototype._vivify=function(r,e,t){var o=this;l.ok(r instanceof Object,"obj needs to be an object"),l.ok(e,"we need a path");return function e(t,a){var n=t.pop(),i=o.value(r,t);i||(e(t.concat(),"string"==typeof n?{}:[]),i=o.value(r,t)),i[n]=a}(this.parser.parse(e).map(function(e){return e.expression.value}),t),this.query(r,e)[0]},s.prototype.query=function(e,t,a){return l.ok(e instanceof Object,"obj needs to be an object"),l.ok(c(t),"we need a path"),this.nodes(e,t,a).map(function(e){return e.value})},s.prototype.paths=function(e,t,a){return l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),this.nodes(e,t,a).map(function(e){return e.path})},s.prototype.nodes=function(e,t,o){if(l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),0===o)return[];var s=this.parser.parse(t),c=this.handlers,u=[{path:["$"],value:e}],p=[];return s.length&&"root"==s[0].expression.type&&s.shift(),s.length?(s.forEach(function(a,n){if(!(p.length>=o)){var i=c.resolve(a),r=[];u.forEach(function(e){if(!(p.length>=o)){var t=i(a,e,o);n==s.length-1?p=p.concat(t||[]):r=r.concat(t||[])}}),u=r}}),o?p.slice(0,o):p):u},s.prototype.stringify=function(e){l.ok(e,"we need a path");var i="$",r={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return(e=this._normalize(e)).forEach(function(e){if("root"!=e.expression.type){var t,a=[e.scope,e.operation].join("-"),n=r[a];if(t="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!n)throw new Error("couldn't find template "+a);i+=n.replace(/{{value}}/,t)}}),i},s.prototype._normalize=function(e){if(l.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var n=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,t){if("$"!=e||0!==t)if("string"==typeof e&&e.match("^"+i.identifier+"$"))n.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var a="number"==typeof e?"numeric_literal":"string_literal";n.push({operation:"subscript",scope:"child",expression:{value:e,type:a}})}}),n}if(Array.isArray(e)&&"object"==o(e[0]))return e;throw new Error("couldn't understand path "+e)},s.Handlers=r,s.Parser=n;var u=new s;u.JSONPath=s,t.exports=u},{"./dict":222,"./handlers":224,"./parser":226,assert:12}],226:[function(e,t,a){"use strict";var n=e("./grammar"),i=e("../generated/parser"),r=function(){var e=new i.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};r.grammar=n,t.exports=r},{"../generated/parser":220,"./grammar":223}],227:[function(e,t,a){"use strict";function s(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,a,n){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof a)throw new Error("end cannot be a string");if("string"==typeof n)throw new Error("step cannot be a string");var i=e.length;if(0===n)throw new Error("step cannot be zero");if(n=n?s(n):1,a=a<0?i+a:a,t=s(0===(t=t<0?i+t:t)?0:t||(0t.highWaterMark&&(t.highWaterMark=(h<=(a=e)?a=h:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var a}function A(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(b("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?y.nextTick(E,e):E(e))}function E(e){b("emit readable"),e.emit("readable"),k(e)}function j(e,t){t.readingMore||(t.readingMore=!0,y.nextTick(C,e,t))}function C(e,t){for(var a=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(a=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):a=function(e,t,a){var n;er.length?r.length:e;if(o===r.length?i+=r:i+=r.slice(0,e),0===(e-=o)){o===r.length?(++n,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a).data=r.slice(o);break}++n}return t.length-=n,i}(e,t):function(e,t){var a=u.allocUnsafe(e),n=t.head,i=1;n.data.copy(a),e-=n.data.length;for(;n=n.next;){var r=n.data,o=e>r.length?r.length:e;if(r.copy(a,a.length-e,0,o),0===(e-=o)){o===r.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=r.slice(o);break}++i}return t.length-=i,a}(e,t);return n}(e,t.buffer,t.decoder),a);var a}function _(e){var t=e._readableState;if(0=t.highWaterMark||t.ended))return b("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?_(this):A(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&_(this),null;var n,i=t.needReadable;return b("need readable",i),(0===t.length||t.length-e>>0),r=this.head,o=0;r;)t=r.data,a=i,n=o,t.copy(a,n),o+=r.data.length,r=r.next;return i},e}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":254,util:17}],246:[function(e,t,a){"use strict";var r=e("process-nextick-args");function o(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var a=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(o,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(r.nextTick(o,a,e),a._writableState&&(a._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":234}],247:[function(e,t,a){"use strict";t.exports=e("events").EventEmitter},{events:38}],248:[function(e,t,a){"use strict";(((a=t.exports=e("./lib/_stream_readable.js")).Stream=a).Readable=a).Writable=e("./lib/_stream_writable.js"),a.Duplex=e("./lib/_stream_duplex.js"),a.Transform=e("./lib/_stream_transform.js"),a.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":240,"./lib/_stream_passthrough.js":241,"./lib/_stream_readable.js":242,"./lib/_stream_transform.js":243,"./lib/_stream_writable.js":244}],249:[function(e,t,a){"use strict";var y=e("./util"),v=e("./types"),w=e("./sets"),b=e("./positions");t.exports=function(t){var e,a,n=0,i={type:v.ROOT,stack:[]},r=i,o=i.stack,s=[],c=function(e){y.error(t,"Nothing to repeat at column "+(e-1))},u=y.strToChars(t);for(e=u.length;n"===p?u="===p?u<=o:"|"===p?o|u:"&"===p?o&u:"^"===p?o^u:"&&"===p?o&&u:"||"===p?o||u:D}if("Identifier"===t.type)return{}.hasOwnProperty.call(C,t.name)?C[t.name]:D;if("ThisExpression"===t.type)return{}.hasOwnProperty.call(C,"this")?C.this:D;if("CallExpression"===t.type){var l=e(t.callee);if(l===D)return D;if("function"!=typeof l)return D;var f=t.callee.object?e(t.callee.object):D;f===D&&(f=null);var m=[];for(r=0,o=t.arguments.length;r":c.Relational,"<=":c.Relational,">=":c.Relational,in:c.Relational,instanceof:c.Relational,"<<":c.BitwiseSHIFT,">>":c.BitwiseSHIFT,">>>":c.BitwiseSHIFT,"+":c.Additive,"-":c.Additive,"*":c.Multiplicative,"%":c.Multiplicative,"/":c.Multiplicative};var k=7,F=1;function _(e,t){var a="";for(t|=0;0>>=1,e+=e)1&t&&(a+=e);return a}function z(e){var t=e.length;return t&&h.code.isLineTerminator(e.charCodeAt(t-1))}function n(e,t){var a;for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a]);return e}function B(e,t){var a,n;function i(e){return"object"===(void 0===e?"undefined":X(e))&&e instanceof Object&&!(e instanceof RegExp)}for(a in t)t.hasOwnProperty(a)&&(i(n=t[a])?i(e[a])?B(e[a],n):e[a]=B({},n):e[a]=n);return e}function R(e,t){return 8232==(-2&e)?(t?"u":"\\u")+(8232===e?"2028":"2029"):10===e||13===e?(t?"":"\\")+(10===e?"n":"r"):String.fromCharCode(e)}function M(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function T(e,t){if(!C)return Array.isArray(e)?function e(t){var a,n,i,r="";for(a=0,n=t.length;a")),e.expression?(t.push(l),"{"===(a=this.generateExpression(e.body,c.Assignment,k)).toString().charAt(0)&&(a=["(",a,")"]),t.push(a)):t.push(this.maybeBlock(e.body,9)),t},K.prototype.generateIterationForStatement=function(e,t,a){var n=["for"+l+(t.await?"await"+l:"")+"("],i=this;return P(function(){t.left.type===d.VariableDeclaration?P(function(){n.push(t.left.kind+O()),n.push(i.generateStatement(t.left.declarations[0],0))}):n.push(i.generateExpression(t.left,c.Call,k)),n=[I(n=I(n,e),i.generateExpression(t.right,c.Sequence,k)),")"]}),n.push(this.maybeBlock(t.body,a)),n},K.prototype.generatePropertyKey=function(e,t){var a=[];return t&&a.push("["),a.push(this.generateExpression(e,c.Sequence,k)),t&&a.push("]"),a},K.prototype.generateAssignment=function(e,t,a,n,i){return c.Assignment=4.0"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.6.1"},repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.11.0"}},{}],258:[function(s,e,t){"use strict";var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function e(t){var a,g,c,n,i,o,y,v,w;function u(e){var t,a,n={};for(t in e)e.hasOwnProperty(t)&&("object"===(void 0===(a=e[t])?"undefined":f(a))&&null!==a?n[t]=u(a):n[t]=a);return n}function b(e,t){this.parent=e,this.key=t}function x(e,t,a,n){this.node=e,this.path=t,this.wrap=a,this.ref=n}function r(){}function A(e){return null!=e&&("object"===(void 0===e?"undefined":f(e))&&"string"==typeof e.type)}function E(e,t){return(e===a.ObjectExpression||e===a.ObjectPattern)&&"properties"===t}function p(e,t){return(new r).traverse(e,t)}function l(t,e){var a;return a=function(e,t){var a,n,i,r;for(n=e.length,i=0;n;)t(e[r=i+(a=n>>>1)])?n=a:(i=r+1,n-=a+1);return i}(e,function(e){return e.range[0]>t.range[0]}),t.extendedRange=[t.range[0],t.range[1]],a!==e.length&&(t.extendedRange[1]=e[a].range[0]),0<=(a-=1)&&(t.extendedRange[0]=e[a].range[1]),t}return(g=Array.isArray)||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),i=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}(),o=Object.keys||function(e){var t,a=[];for(t in e)a.push(t);return a},a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},n={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},c={Break:y={},Skip:v={},Remove:w={}},b.prototype.replace=function(e){this.parent[this.key]=e},b.prototype.remove=function(){return g(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},r.prototype.path=function(){var e,t,a,n,i;function r(e,t){if(g(t))for(a=0,n=t.length;ae.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),s.splice(o,1)):o+=1;return o===s.length?c.Break:s[o].extendedRange[0]>e.range[1]?c.Skip:void 0}}),o=0,p(e,{leave:function(e){for(var t;oe.range[1]?c.Skip:void 0}}),e},t.VisitorKeys=n,t.VisitorOption=c,t.Controller=r,t.cloneEnvironment=function(){return e({})},t}(t)},{"./package.json":259}],259:[function(e,t,a){t.exports={_from:"estraverse@^4.2.0",_id:"estraverse@4.2.0",_inBundle:!1,_integrity:"sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",_location:"/static-eval/estraverse",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"estraverse@^4.2.0",name:"estraverse",escapedName:"estraverse",rawSpec:"^4.2.0",saveSpec:null,fetchSpec:"^4.2.0"},_requiredBy:["/static-eval/escodegen"],_resolved:"https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",_shasum:"0dee3fed31fcd469618ce7342099fc1afa0bdb13",_spec:"estraverse@^4.2.0",_where:"/Users/jcwhitlock/development/sway/node_modules/static-eval/node_modules/escodegen",bugs:{url:"https://github.com/estools/estraverse/issues"},bundleDependencies:!1,deprecated:!1,description:"ECMAScript JS AST traversal functions",devDependencies:{"babel-preset-es2015":"^6.3.13","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.2.1",jshint:"^2.5.6",mocha:"^2.1.0"},engines:{node:">=0.10.0"},homepage:"https://github.com/estools/estraverse",license:"BSD-2-Clause",main:"estraverse.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"estraverse",repository:{type:"git",url:"git+ssh://git@github.com/estools/estraverse.git"},scripts:{lint:"jshint estraverse.js",test:"npm run-script lint && npm run-script unit-test","unit-test":"mocha --compilers js:babel-register"},version:"4.2.0"}},{}],260:[function(e,t,a){"use strict";var r=e("./util"),o=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function c(){this._array=[],this._set=s?new Map:Object.create(null)}c.fromArray=function(e,t){for(var a=new c,n=0,i=e.length;n>>=5)&&(t|=32),n+=p.encode(t),0>1,1==(1&r)?-o:o),a.rest=t}},{"./base64":262}],262:[function(e,t,a){"use strict";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");a.encode=function(e){if(0<=e&&e=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},m.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var a=this._findSourceIndex(e);if(0<=a)return this.sourcesContent[a];var n,i=e;if(null!=this.sourceRoot&&(i=w.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(n=w.urlParse(this.sourceRoot))){var r=i.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},m.prototype.generatedPositionFor=function(e){var t=w.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var a={source:t,originalLine:w.getArg(e,"line"),originalColumn:w.getArg(e,"column")},n=this._findMapping(a,this._originalMappings,"originalLine","originalColumn",w.compareByOriginalPositions,w.getArg(e,"bias",o.GREATEST_LOWER_BOUND));if(0<=n){var i=this._originalMappings[n];if(i.source===a.source)return{line:w.getArg(i,"generatedLine",null),column:w.getArg(i,"generatedColumn",null),lastColumn:w.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},a.BasicSourceMapConsumer=m,(n.prototype=Object.create(o.prototype)).constructor=o,n.prototype._version=3,Object.defineProperty(n.prototype,"sources",{get:function(){for(var e=[],t=0;tt._pos){var n=a.substr(t._pos);if("x-user-defined"===t._charset){for(var i=new l(n.length),r=0;rt._pos&&(t.push(new l(new Uint8Array(o.result.slice(t._pos)))),t._pos=o.result.byteLength)},o.onload=function(){t.push(null)},o.readAsArrayBuffer(a)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},a("buffer").Buffer)},{"./capability":272,_process:235,buffer:20,inherits:165,"readable-stream":248}],275:[function(e,t,a){"use strict";var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=p,this.end=l,t=3;break;default:return this.write=f,void(this.end=m)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,a=function(e,t,a){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1o[0]&&t[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}}},f=function(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,i,r=a.call(e),o=[];try{for(;(void 0===t||0>>1;a(e[s])":">",'"':""","'":"'","`":"`"},x=m.invert(b),A=function(t){var a=function(e){return t[e]},e="(?:"+m.keys(t).join("|")+")",n=RegExp(e),i=RegExp(e,"g");return function(e){return e=null==e?"":""+e,n.test(e)?e.replace(i,a):e}};m.escape=A(b),m.unescape=A(x),m.result=function(e,t){if(null!=e){var a=e[t];return m.isFunction(a)?e[t]():a}};var E=0;m.uniqueId=function(e){var t=++E+"";return e?e+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var j=/(.)^/,C={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,S=function(e){return"\\"+C[e]};m.template=function(r,e,t){!e&&t&&(e=t),e=m.defaults({},e,m.templateSettings);var a=RegExp([(e.escape||j).source,(e.interpolate||j).source,(e.evaluate||j).source].join("|")+"|$","g"),o=0,s="__p+='";r.replace(a,function(e,t,a,n,i){return s+=r.slice(o,i).replace(D,S),o=i+e.length,t?s+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":a?s+="'+\n((__t=("+a+"))==null?'':__t)+\n'":n&&(s+="';\n"+n+"\n__p+='"),e}),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var n=new Function(e.variable||"obj","_",s)}catch(e){throw e.source=s,e}var i=function(e){return n.call(this,e,m)},c=e.variable||"obj";return i.source="function("+c+"){\n"+s+"}",i},m.chain=function(e){var t=m(e);return t._chain=!0,t};var k=function(e){return this._chain?m(e).chain():e};m.mixin=function(a){m.each(m.functions(a),function(e){var t=m[e]=a[e];m.prototype[e]=function(){var e=[this._wrapped];return s.apply(e,arguments),k.call(this,t.apply(m,e))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var a=n[t];m.prototype[t]=function(){var e=this._wrapped;return a.apply(e,arguments),"shift"!==t&&"splice"!==t||0!==e.length||delete e[0],k.call(this,e)}}),m.each(["concat","join","slice"],function(e){var t=n[e];m.prototype[e]=function(){return k.call(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped}}).call(this)},{}],282:[function(e,t,a){"use strict";var R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M=e("punycode"),T=e("./util");function S(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}a.parse=r,a.resolve=function(e,t){return r(e,!1,!0).resolve(t)},a.resolveObject=function(e,t){return e?r(e,!1,!0).resolveObject(t):t},a.format=function(e){T.isString(e)&&(e=r(e));return e instanceof S?e.format():S.prototype.format.call(e)},a.Url=S;var O=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,I=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,i=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),L=["'"].concat(i),P=["%","/","?",";","#"].concat(L),N=["/","?","#"],U=/^[+a-z0-9A-Z_-]{0,63}$/,q=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,$={javascript:!0,"javascript:":!0},G={javascript:!0,"javascript:":!0},K={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},H=e("querystring");function r(e,t,a){if(e&&T.isObject(e)&&e instanceof S)return e;var n=new S;return n.parse(e,t,a),n}S.prototype.parse=function(e,t,a){if(!T.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+(void 0===e?"undefined":R(e)));var n=e.indexOf("?"),i=-1!==n&&n>16&255,r[o++]=t>>8&255,r[o++]=255&t;var u,p;2===i&&(t=l[e.charCodeAt(c)]<<2|l[e.charCodeAt(c+1)]>>4,r[o++]=255&t);1===i&&(t=l[e.charCodeAt(c)]<<10|l[e.charCodeAt(c+1)]<<4|l[e.charCodeAt(c+2)]>>2,r[o++]=t>>8&255,r[o++]=255&t);return r},a.fromByteArray=function(e){for(var t,a=e.length,n=a%3,i=[],r=0,o=a-n;r>2]+s[t<<4&63]+"==")):2===n&&(t=(e[a-2]<<8)+e[a-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")};for(var s=[],l=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,r=n.length;i>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return r.join("")}l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63},{}],17:[function(e,t,a){},{}],18:[function(e,t,a){},{}],19:[function(e,R,M){(function(z){"use strict";var B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e){var t="object"==(void 0===M?"undefined":B(M))&&M&&!M.nodeType&&M,a="object"==(void 0===R?"undefined":B(R))&&R&&!R.nodeType&&R,n="object"==(void 0===z?"undefined":B(z))&&z;n.global!==n&&n.window!==n&&n.self!==n||(e=n);var i,r,y=2147483647,v=36,w=1,b=26,o=38,s=700,x=72,A=128,E="-",c=/^xn--/,u=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=v-w,j=Math.floor,C=String.fromCharCode;function D(e){throw new RangeError(l[e])}function m(e,t){for(var a=e.length,n=[];a--;)n[a]=t(e[a]);return n}function d(e,t){var a=e.split("@"),n="";return 1>>10&1023|55296),e=56320|1023&e),t+=C(e)}).join("")}function F(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function _(e,t,a){var n=0;for(e=a?j(e/s):e>>1,e+=j(e/t);f*b>>1j((y-d)/o))&&D("overflow"),d+=c*o,!(c<(u=s<=g?w:g+b<=s?b:s-g));s+=v)o>j(y/(p=v-u))&&D("overflow"),o*=p;g=_(d-r,t=f.length+1,0==r),j(d/t)>y-h&&D("overflow"),h+=j(d/t),d%=t,f.splice(d++,0,h)}return k(f)}function g(e){var t,a,n,i,r,o,s,c,u,p,l,f,m,d,h,g=[];for(f=(e=S(e)).length,t=A,r=x,o=a=0;oj((y-a)/(m=n+1))&&D("overflow"),a+=(s-t)*m,t=s,o=0;oy&&D("overflow"),l==t){for(c=a,u=v;!(c<(p=u<=r?w:r+b<=u?b:u-r));u+=v)h=c-p,d=v-p,g.push(C(F(p+h%d,0))),c=j(h/d);g.push(C(F(c,0))),r=_(a,m,n==i),a=0,++n}++a,++t}return g.join("")}if(i={version:"1.4.1",ucs2:{decode:S,encode:k},decode:h,encode:g,toASCII:function(e){return d(e,function(e){return u.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return d(e,function(e){return c.test(e)?h(e.slice(4).toLowerCase()):e})}},t&&a)if(R.exports==t)a.exports=i;else for(r in i)i.hasOwnProperty(r)&&(t[r]=i[r]);else e.punycode=i}(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,a){"use strict";var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=e("base64-js"),r=e("ieee754");a.Buffer=f,a.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},a.INSPECT_MAX_BYTES=50;var i=2147483647;function o(e){if(i>>1;case"base64":return T(e).length;default:if(i)return n?-1:M(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,a){var n=e[t];e[t]=e[a],e[a]=n}function g(e,t,a,n,i){if(0===e.length)return-1;if("string"==typeof a?(n=a,a=0):2147483647=e.length){if(i)return-1;a=e.length-1}else if(a<0){if(!i)return-1;a=0}if("string"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:y(e,t,a,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):y(e,[t],a,n,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,a,n,i){var r,o=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s/=o=2,c/=2,a/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var p=-1;for(r=a;r>>10&1023|55296),p=56320|1023&p),n.push(p),i+=l}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var a="",n=0;for(;nthis.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,a);case"utf8":case"utf-8":return x(this,t,a);case"ascii":return E(this,t,a);case"latin1":case"binary":return j(this,t,a);case"base64":return b(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,a);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=a.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},f.prototype.compare=function(e,t,a,n,i){if(I(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(void 0===e?"undefined":l(e)));if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||a>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&a<=t)return 0;if(i<=n)return-1;if(a<=t)return 1;if(this===e)return 0;for(var r=(i>>>=0)-(n>>>=0),o=(a>>>=0)-(t>>>=0),s=Math.min(r,o),c=this.slice(n,i),u=e.slice(t,a),p=0;p>>=0,isFinite(a)?(a>>>=0,void 0===n&&(n="utf8")):(n=a,a=void 0)}var i=this.length-t;if((void 0===a||ithis.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var r,o,s,c,u,p,l,f,m,d=!1;;)switch(n){case"hex":return v(this,e,t,a);case"utf8":case"utf-8":return f=t,m=a,O(M(e,(l=this).length-f),l,f,m);case"ascii":return w(this,e,t,a);case"latin1":case"binary":return w(this,e,t,a);case"base64":return c=this,u=t,p=a,O(T(e),c,u,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=t,s=a,O(function(e,t){for(var a,n,i,r=[],o=0;o>8,i=a%256,r.push(i),r.push(n);return r}(e,(r=this).length-o),r,o,s);default:if(d)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),d=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function E(e,t,a){var n="";a=Math.min(e.length,a);for(var i=t;ie.length)throw new RangeError("Index out of range")}function F(e,t,a,n,i,r){if(a+n>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function _(e,t,a,n,i){return t=+t,a>>>=0,i||F(e,0,a,4),r.write(e,t,a,n,23,4),a+4}function z(e,t,a,n,i){return t=+t,a>>>=0,i||F(e,0,a,8),r.write(e,t,a,n,52,8),a+8}f.prototype.slice=function(e,t){var a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):a>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e],i=1,r=0;++r>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e+--t],i=1;0>>=0,t||S(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,a){e>>>=0,t>>>=0,a||S(e,t,this.length);for(var n=this[e],i=1,r=0;++r>>=0,t>>>=0,a||S(e,t,this.length);for(var n=t,i=1,r=this[e+--n];0>>=0,t||S(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||S(e,2,this.length);var a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},f.prototype.readInt16BE=function(e,t){e>>>=0,t||S(e,2,this.length);var a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||S(e,4,this.length),r.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||S(e,4,this.length),r.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||S(e,8,this.length),r.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||S(e,8,this.length),r.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,a,n){(e=+e,t>>>=0,a>>>=0,n)||k(this,e,t,a,Math.pow(2,8*a)-1,0);var i=1,r=0;for(this[t]=255&e;++r>>=0,a>>>=0,n)||k(this,e,t,a,Math.pow(2,8*a)-1,0);var i=a-1,r=1;for(this[t+i]=255&e;0<=--i&&(r*=256);)this[t+i]=e/r&255;return t+a},f.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*a-1);k(this,e,t,a,i-1,-i)}var r=0,o=1,s=0;for(this[t]=255&e;++r>0)-s&255;return t+a},f.prototype.writeIntBE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*a-1);k(this,e,t,a,i-1,-i)}var r=a-1,o=1,s=0;for(this[t+r]=255&e;0<=--r&&(o*=256);)e<0&&0===s&&0!==this[t+r+1]&&(s=1),this[t+r]=(e/o>>0)-s&255;return t+a},f.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||k(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,a){return _(this,e,t,!0,a)},f.prototype.writeFloatBE=function(e,t,a){return _(this,e,t,!1,a)},f.prototype.writeDoubleLE=function(e,t,a){return z(this,e,t,!0,a)},f.prototype.writeDoubleBE=function(e,t,a){return z(this,e,t,!1,a)},f.prototype.copy=function(e,t,a,n){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),0=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(r=t;r>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;r.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return r}function T(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function O(e,t,a,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+a]=e[i];return i}function I(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}},{"base64-js":16,ieee754:164}],21:[function(e,t,a){"use strict";t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],22:[function(e,n,t){(function(e,t){"use strict";var a=t.process&&e.nextTick||t.setImmediate||function(e){setTimeout(e,0)};n.exports=function(t,e){return t?void e.then(function(e){a(function(){t(null,e)})},function(e){a(function(){t(e)})}):e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:235}],23:[function(e,t,n){(function(e){"use strict";var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e){return Object.prototype.toString.call(e)}n.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===a(e)},n.isBoolean=function(e){return"boolean"==typeof e},n.isNull=function(e){return null===e},n.isNullOrUndefined=function(e){return null==e},n.isNumber=function(e){return"number"==typeof e},n.isString=function(e){return"string"==typeof e},n.isSymbol=function(e){return"symbol"===(void 0===e?"undefined":t(e))},n.isUndefined=function(e){return void 0===e},n.isRegExp=function(e){return"[object RegExp]"===a(e)},n.isObject=function(e){return"object"===(void 0===e?"undefined":t(e))&&null!==e},n.isDate=function(e){return"[object Date]"===a(e)},n.isError=function(e){return"[object Error]"===a(e)||e instanceof Error},n.isFunction=function(e){return"function"==typeof e},n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===(void 0===e?"undefined":t(e))||void 0===e},n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":166}],24:[function(n,i,r){(function(t){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(){var e;try{e=r.storage.debug}catch(e){}return!e&&void 0!==t&&"env"in t&&(e=t.env.DEBUG),e}(r=i.exports=n("./debug")).log=function(){return"object"===("undefined"==typeof console?"undefined":e(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),!t)return;var a="color: "+this.color;e.splice(1,0,a,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(n++,"%c"===e&&(i=n))}),e.splice(i,0,a)},r.save=function(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(e){}},r.load=a,r.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(a())}).call(this,n("_process"))},{"./debug":25,_process:235}],25:[function(e,t,c){"use strict";function a(e){var n;function s(){if(s.enabled){var i=s,e=+new Date,t=e-(n||e);i.diff=t,i.prev=n,i.curr=e,n=e;for(var r=new Array(arguments.length),a=0;ae.high)}},{key:"touches",value:function(e){return!(this.high+1e.high)}},{key:"add",value:function(e){return new a(Math.min(this.low,e.low),Math.max(this.high,e.high))}},{key:"subtract",value:function(e){return e.low<=this.low&&e.high>=this.high?[]:e.low>this.low&&e.highi){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,"object"===("undefined"==typeof console?"undefined":c(console))&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else o=r[t]=a,++e._eventsCount;return e}function m(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t '+e+"x"+t+" ")}}},{}],50:[function(E,e,t){"use strict";function a(e){var a=this;e=e||{};var t=a.locales||e.locales||{},n=a.locale||e.locale||"en",i=a.localeFallback||e.localeFallback||"en";function r(t){return Object.keys(t).forEach(function(e){"function"==typeof t[e]&&(t[e]=t[e].bind(t))}),t}a.locales=t,a.locale=n,a.localeFallback=i,a.definitions={};var o=E("./fake");a.fake=new o(a).fake;var s=E("./random");a.random=r(new s(a));var c=E("./helpers");a.helpers=new c(a);var u=E("./name");a.name=r(new u(a));var p=E("./address");a.address=r(new p(a));var l=E("./company");a.company=r(new l(a));var f=E("./finance");a.finance=r(new f(a));var m=E("./image");a.image=r(new m(a));var d=E("./lorem");a.lorem=r(new d(a));var h=E("./hacker");a.hacker=r(new h(a));var g=E("./internet");a.internet=r(new g(a));var y=E("./database");a.database=r(new y(a));var v=E("./phone_number");a.phone=r(new v(a));var w=E("./date");a.date=r(new w(a));var b=E("./commerce");a.commerce=r(new b(a));var x=E("./system");a.system=r(new x(a));var A={name:["first_name","last_name","prefix","suffix","title","male_first_name","female_first_name","male_middle_name","female_middle_name","male_last_name","female_last_name"],address:["city_prefix","city_suffix","street_suffix","county","country","country_code","state","state_abbr","street_prefix","postcode"],company:["adjective","noun","descriptor","bs_adjective","bs_noun","bs_verb","suffix"],lorem:["words"],hacker:["abbreviation","adjective","noun","verb","ingverb"],phone_number:["formats"],finance:["account_type","transaction_type","currency","iban"],internet:["avatar_uri","domain_suffix","free_email","example_email","password"],commerce:["color","department","product_name","price","categories"],database:["collation","column","engine","type"],system:["mimeTypes"],date:["month","weekday"],title:"",separator:""};Object.keys(A).forEach(function(t){void 0===a.definitions[t]&&(a.definitions[t]={}),"string"!=typeof A[t]?A[t].forEach(function(e){Object.defineProperty(a.definitions[t],e,{get:function(){return void 0===a.locales[a.locale][t]||void 0===a.locales[a.locale][t][e]?a.locales[i][t][e]:a.locales[a.locale][t][e]}})}):a.definitions[t]=A[t]})}a.prototype.seed=function(e){var t=E("./random");this.seedValue=e,this.random=new t(this,this.seedValue)},e.exports=a},{"./address":39,"./commerce":40,"./company":41,"./database":42,"./date":43,"./fake":44,"./finance":45,"./hacker":46,"./helpers":47,"./image":49,"./internet":51,"./lorem":154,"./name":155,"./phone_number":156,"./random":157,"./system":158}],51:[function(e,t,a){"use strict";var i=e("../vendor/user-agent");t.exports=function(u){var n=this;n.avatar=function(){return u.random.arrayElement(u.definitions.internet.avatar_uri)},n.avatar.schema={description:"Generates a URL for an avatar.",sampleResults:["https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg"]},n.email=function(e,t,a){return a=a||u.random.arrayElement(u.definitions.internet.free_email),u.helpers.slugify(u.internet.userName(e,t))+"@"+a},n.email.schema={description:"Generates a valid email address based on optional input criteria",sampleResults:["foo.bar@gmail.com"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"},provider:{type:"string",required:!1,description:"The domain of the user"}}},n.exampleEmail=function(e,t){var a=u.random.arrayElement(u.definitions.internet.example_email);return n.email(e,t,a)},n.userName=function(e,t){var a;switch(e=e||u.name.firstName(),t=t||u.name.lastName(),u.random.number(2)){case 0:a=e+u.random.number(99);break;case 1:a=e+u.random.arrayElement([".","_"])+t;break;case 2:a=e+u.random.arrayElement([".","_"])+t+u.random.number(99)}return a=(a=a.toString().replace(/'/g,"")).replace(/ /g,"")},n.userName.schema={description:"Generates a username based on one of several patterns. The pattern is chosen randomly.",sampleResults:["Kirstin39","Kirstin.Smith","Kirstin.Smith39","KirstinSmith","KirstinSmith39"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"}}},n.protocol=function(){return u.random.arrayElement(["http","https"])},n.protocol.schema={description:"Randomly generates http or https",sampleResults:["https","http"]},n.url=function(){return u.internet.protocol()+"://"+u.internet.domainName()},n.url.schema={description:"Generates a random URL. The URL could be secure or insecure.",sampleResults:["http://rashawn.name","https://rashawn.name"]},n.domainName=function(){return u.internet.domainWord()+"."+u.internet.domainSuffix()},n.domainName.schema={description:"Generates a random domain name.",sampleResults:["marvin.org"]},n.domainSuffix=function(){return u.random.arrayElement(u.definitions.internet.domain_suffix)},n.domainSuffix.schema={description:"Generates a random domain suffix.",sampleResults:["net"]},n.domainWord=function(){return u.name.firstName().replace(/([\\~#&*{}/:<>?|\"'])/gi,"").toLowerCase()},n.domainWord.schema={description:"Generates a random domain word.",sampleResults:["alyce"]},n.ip=function(){for(var e=[],t=0;t<4;t++)e[t]=u.random.number(255).toFixed(0);return e.join(".")},n.ip.schema={description:"Generates a random IP.",sampleResults:["97.238.241.11"]},n.ipv6=function(){for(var e=function(){for(var e="",t=0;t<4;t++)e+=u.random.arrayElement(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);return e},t=[],a=0;a<8;a++)t[a]=e();return t.join(":")},n.ipv6.schema={description:"Generates a random IPv6 address.",sampleResults:["2001:0db8:6276:b1a7:5213:22f1:25df:c8a0"]},n.userAgent=function(){return i.generate()},n.userAgent.schema={description:"Generates a random user agent.",sampleResults:["Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1"]},n.color=function(e,t,a){e=e||0,t=t||0,a=a||0;var n=Math.floor((u.random.number(256)+e)/2),i=Math.floor((u.random.number(256)+t)/2),r=Math.floor((u.random.number(256)+a)/2),o=n.toString(16),s=i.toString(16),c=r.toString(16);return"#"+(1===o.length?"0":"")+o+(1===s.length?"0":"")+s+(1===c.length?"0":"")+c},n.color.schema={description:"Generates a random hexadecimal color.",sampleResults:["#06267f"],properties:{baseRed255:{type:"number",required:!1,description:"The red value. Valid values are 0 - 255."},baseGreen255:{type:"number",required:!1,description:"The green value. Valid values are 0 - 255."},baseBlue255:{type:"number",required:!1,description:"The blue value. Valid values are 0 - 255."}}},n.mac=function(){var e,t="";for(e=0;e<12;e++)t+=u.random.number(15).toString(16),e%2==1&&11!=e&&(t+=":");return t},n.mac.schema={description:"Generates a random mac address.",sampleResults:["78:06:cc:ae:b3:81"]},n.password=function(e,t,a,n){var s,c;return void 0===t&&(t=!1),c=/[aeiouAEIOU]$/,s=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,function e(t,a,n,i){var r,o;return null==t&&(t=10),null==a&&(a=!0),null==n&&(n=/\w/),null==i&&(i=""),i.length>=t?i:(a&&(n=i.match(s)?c:s),o=u.random.number(94)+33,r=String.fromCharCode(o),a&&(r=r.toLowerCase()),r.match(n)?e(t,a,n,""+i+r):e(t,a,n,i))}(e=e||15,t,a,n)},n.password.schema={description:"Generates a random password.",sampleResults:["AM7zl6Mg","susejofe"],properties:{length:{type:"number",required:!1,description:"The number of characters in the password."},memorable:{type:"boolean",required:!1,description:"Whether a password should be easy to remember."},pattern:{type:"regex",required:!1,description:"A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on."},prefix:{type:"string",required:!1,description:"A value to prepend to the generated password. The prefix counts towards the length of the password."}}}}},{"../vendor/user-agent":161}],52:[function(e,t,a){"use strict";t.exports=["#####","####","###"]},{}],53:[function(e,t,a){"use strict";t.exports=["#{city_prefix} #{Name.first_name}#{city_suffix}","#{city_prefix} #{Name.first_name}","#{Name.first_name}#{city_suffix}","#{Name.last_name}#{city_suffix}"]},{}],54:[function(e,t,a){"use strict";t.exports=["North","East","West","South","New","Lake","Port"]},{}],55:[function(e,t,a){"use strict";t.exports=["town","ton","land","ville","berg","burgh","borough","bury","view","port","mouth","stad","furt","chester","mouth","fort","haven","side","shire"]},{}],56:[function(e,t,a){"use strict";t.exports=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica (the territory South of 60 deg S)","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island (Bouvetoya)","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands Antilles","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestinian Territory","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia (Slovak Republic)","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"]},{}],57:[function(e,t,a){"use strict";t.exports=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},{}],58:[function(e,t,a){"use strict";t.exports=["Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire"]},{}],59:[function(e,t,a){"use strict";t.exports=["United States of America"]},{}],60:[function(e,t,a){"use strict";var n={};(t.exports=n).city_prefix=e("./city_prefix"),n.city_suffix=e("./city_suffix"),n.county=e("./county"),n.country=e("./country"),n.country_code=e("./country_code"),n.building_number=e("./building_number"),n.street_suffix=e("./street_suffix"),n.secondary_address=e("./secondary_address"),n.postcode=e("./postcode"),n.postcode_by_state=e("./postcode_by_state"),n.state=e("./state"),n.state_abbr=e("./state_abbr"),n.time_zone=e("./time_zone"),n.city=e("./city"),n.street_name=e("./street_name"),n.street_address=e("./street_address"),n.default_country=e("./default_country")},{"./building_number":52,"./city":53,"./city_prefix":54,"./city_suffix":55,"./country":56,"./country_code":57,"./county":58,"./default_country":59,"./postcode":61,"./postcode_by_state":62,"./secondary_address":63,"./state":64,"./state_abbr":65,"./street_address":66,"./street_name":67,"./street_suffix":68,"./time_zone":69}],61:[function(e,t,a){"use strict";t.exports=["#####","#####-####"]},{}],62:[function(e,t,a){"use strict";t.exports=["#####","#####-####"]},{}],63:[function(e,t,a){"use strict";t.exports=["Apt. ###","Suite ###"]},{}],64:[function(e,t,a){"use strict";t.exports=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]},{}],65:[function(e,t,a){"use strict";t.exports=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"]},{}],66:[function(e,t,a){"use strict";t.exports=["#{building_number} #{street_name}"]},{}],67:[function(e,t,a){"use strict";t.exports=["#{Name.first_name} #{street_suffix}","#{Name.last_name} #{street_suffix}"]},{}],68:[function(e,t,a){"use strict";t.exports=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Inlet","Island","Island","Islands","Islands","Isle","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Locks","Lodge","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Mission","Motorway","Mount","Mountain","Mountain","Mountains","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plains","Plaza","Plaza","Point","Points","Port","Port","Ports","Ports","Prairie","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Road","Roads","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Springs","Spur","Spurs","Square","Square","Squares","Squares","Station","Station","Stravenue","Stravenue","Stream","Stream","Street","Street","Streets","Summit","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Trail","Tunnel","Tunnel","Turnpike","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Village","Villages","Ville","Vista","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},{}],69:[function(e,t,a){"use strict";t.exports=["Pacific/Midway","Pacific/Pago_Pago","Pacific/Honolulu","America/Juneau","America/Los_Angeles","America/Tijuana","America/Denver","America/Phoenix","America/Chihuahua","America/Mazatlan","America/Chicago","America/Regina","America/Mexico_City","America/Mexico_City","America/Monterrey","America/Guatemala","America/New_York","America/Indiana/Indianapolis","America/Bogota","America/Lima","America/Lima","America/Halifax","America/Caracas","America/La_Paz","America/Santiago","America/St_Johns","America/Sao_Paulo","America/Argentina/Buenos_Aires","America/Guyana","America/Godthab","Atlantic/South_Georgia","Atlantic/Azores","Atlantic/Cape_Verde","Europe/Dublin","Europe/London","Europe/Lisbon","Europe/London","Africa/Casablanca","Africa/Monrovia","Etc/UTC","Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Prague","Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris","Europe/Amsterdam","Europe/Berlin","Europe/Berlin","Europe/Rome","Europe/Stockholm","Europe/Vienna","Africa/Algiers","Europe/Bucharest","Africa/Cairo","Europe/Helsinki","Europe/Kiev","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Vilnius","Europe/Athens","Europe/Istanbul","Europe/Minsk","Asia/Jerusalem","Africa/Harare","Africa/Johannesburg","Europe/Moscow","Europe/Moscow","Europe/Moscow","Asia/Kuwait","Asia/Riyadh","Africa/Nairobi","Asia/Baghdad","Asia/Tehran","Asia/Muscat","Asia/Muscat","Asia/Baku","Asia/Tbilisi","Asia/Yerevan","Asia/Kabul","Asia/Yekaterinburg","Asia/Karachi","Asia/Karachi","Asia/Tashkent","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kathmandu","Asia/Dhaka","Asia/Dhaka","Asia/Colombo","Asia/Almaty","Asia/Novosibirsk","Asia/Rangoon","Asia/Bangkok","Asia/Bangkok","Asia/Jakarta","Asia/Krasnoyarsk","Asia/Shanghai","Asia/Chongqing","Asia/Hong_Kong","Asia/Urumqi","Asia/Kuala_Lumpur","Asia/Singapore","Asia/Taipei","Australia/Perth","Asia/Irkutsk","Asia/Ulaanbaatar","Asia/Seoul","Asia/Tokyo","Asia/Tokyo","Asia/Tokyo","Asia/Yakutsk","Australia/Darwin","Australia/Adelaide","Australia/Melbourne","Australia/Melbourne","Australia/Sydney","Australia/Brisbane","Australia/Hobart","Asia/Vladivostok","Pacific/Guam","Pacific/Port_Moresby","Asia/Magadan","Asia/Magadan","Pacific/Noumea","Pacific/Fiji","Asia/Kamchatka","Pacific/Majuro","Pacific/Auckland","Pacific/Auckland","Pacific/Tongatapu","Pacific/Fakaofo","Pacific/Apia"]},{}],70:[function(e,t,a){"use strict";t.exports=["#{Name.name}","#{Company.name}"]},{}],71:[function(e,t,a){"use strict";var n={};(t.exports=n).name=e("./name"),n.version=e("./version"),n.author=e("./author")},{"./author":70,"./name":72,"./version":73}],72:[function(e,t,a){"use strict";t.exports=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"]},{}],73:[function(e,t,a){"use strict";t.exports=["0.#.#","0.##","#.##","#.#","#.#.#"]},{}],74:[function(e,t,a){"use strict";t.exports=["2011-10-12","2012-11-12","2015-11-11","2013-9-12"]},{}],75:[function(e,t,a){"use strict";t.exports=["1234-2121-1221-1211","1212-1221-1121-1234","1211-1221-1234-2201","1228-1221-1221-1431"]},{}],76:[function(e,t,a){"use strict";t.exports=["visa","mastercard","americanexpress","discover"]},{}],77:[function(e,t,a){"use strict";var n={};(t.exports=n).credit_card_numbers=e("./credit_card_numbers"),n.credit_card_expiry_dates=e("./credit_card_expiry_dates"),n.credit_card_types=e("./credit_card_types")},{"./credit_card_expiry_dates":74,"./credit_card_numbers":75,"./credit_card_types":76}],78:[function(e,t,a){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},{}],79:[function(e,t,a){"use strict";var n={};(t.exports=n).formats=e("./formats")},{"./formats":78}],80:[function(e,t,a){"use strict";t.exports=["red","green","blue","yellow","purple","mint green","teal","white","black","orange","pink","grey","maroon","violet","turquoise","tan","sky blue","salmon","plum","orchid","olive","magenta","lime","ivory","indigo","gold","fuchsia","cyan","azure","lavender","silver"]},{}],81:[function(e,t,a){"use strict";t.exports=["Books","Movies","Music","Games","Electronics","Computers","Home","Garden","Tools","Grocery","Health","Beauty","Toys","Kids","Baby","Clothing","Shoes","Jewelery","Sports","Outdoors","Automotive","Industrial"]},{}],82:[function(e,t,a){"use strict";var n={};(t.exports=n).color=e("./color"),n.department=e("./department"),n.product_name=e("./product_name")},{"./color":80,"./department":81,"./product_name":83}],83:[function(e,t,a){"use strict";t.exports={adjective:["Small","Ergonomic","Rustic","Intelligent","Gorgeous","Incredible","Fantastic","Practical","Sleek","Awesome","Generic","Handcrafted","Handmade","Licensed","Refined","Unbranded","Tasty"],material:["Steel","Wooden","Concrete","Plastic","Cotton","Granite","Rubber","Metal","Soft","Fresh","Frozen"],product:["Chair","Car","Computer","Keyboard","Mouse","Bike","Ball","Gloves","Pants","Shirt","Table","Shoes","Hat","Towels","Soap","Tuna","Chicken","Fish","Cheese","Bacon","Pizza","Salad","Sausages","Chips"]}},{}],84:[function(e,t,a){"use strict";t.exports=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","Decentralized","De-engineered","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Reactive","Realigned","Re-contextualized","Re-engineered","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Visionary","Vision-oriented"]},{}],85:[function(e,t,a){"use strict";t.exports=["clicks-and-mortar","value-added","vertical","proactive","robust","revolutionary","scalable","leading-edge","innovative","intuitive","strategic","e-business","mission-critical","sticky","one-to-one","24/7","end-to-end","global","B2B","B2C","granular","frictionless","virtual","viral","dynamic","24/365","best-of-breed","killer","magnetic","bleeding-edge","web-enabled","interactive","dot-com","sexy","back-end","real-time","efficient","front-end","distributed","seamless","extensible","turn-key","world-class","open-source","cross-platform","cross-media","synergistic","bricks-and-clicks","out-of-the-box","enterprise","integrated","impactful","wireless","transparent","next-generation","cutting-edge","user-centric","visionary","customized","ubiquitous","plug-and-play","collaborative","compelling","holistic","rich"]},{}],86:[function(e,t,a){"use strict";t.exports=["synergies","web-readiness","paradigms","markets","partnerships","infrastructures","platforms","initiatives","channels","eyeballs","communities","ROI","solutions","e-tailers","e-services","action-items","portals","niches","technologies","content","vortals","supply-chains","convergence","relationships","architectures","interfaces","e-markets","e-commerce","systems","bandwidth","infomediaries","models","mindshare","deliverables","users","schemas","networks","applications","metrics","e-business","functionalities","experiences","web services","methodologies"]},{}],87:[function(e,t,a){"use strict";t.exports=["implement","utilize","integrate","streamline","optimize","evolve","transform","embrace","enable","orchestrate","leverage","reinvent","aggregate","architect","enhance","incentivize","morph","empower","envisioneer","monetize","harness","facilitate","seize","disintermediate","synergize","strategize","deploy","brand","grow","target","syndicate","synthesize","deliver","mesh","incubate","engage","maximize","benchmark","expedite","reintermediate","whiteboard","visualize","repurpose","innovate","scale","unleash","drive","extend","engineer","revolutionize","generate","exploit","transition","e-enable","iterate","cultivate","matrix","productize","redefine","recontextualize"]},{}],88:[function(e,t,a){"use strict";t.exports=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","context-sensitive","contextually-based","content-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multimedia","multi-state","multi-tasking","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","systematic","systemic","system-worthy","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"]},{}],89:[function(e,t,a){"use strict";var n={};(t.exports=n).suffix=e("./suffix"),n.adjective=e("./adjective"),n.descriptor=e("./descriptor"),n.noun=e("./noun"),n.bs_verb=e("./bs_verb"),n.bs_adjective=e("./bs_adjective"),n.bs_noun=e("./bs_noun"),n.name=e("./name")},{"./adjective":84,"./bs_adjective":85,"./bs_noun":86,"./bs_verb":87,"./descriptor":88,"./name":90,"./noun":91,"./suffix":92}],90:[function(e,t,a){"use strict";t.exports=["#{Name.last_name} #{suffix}","#{Name.last_name}-#{Name.last_name}","#{Name.last_name}, #{Name.last_name} and #{Name.last_name}"]},{}],91:[function(e,t,a){"use strict";t.exports=["ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","artificial intelligence","array","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","database","data-warehouse","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","Graphic Interface","groupware","Graphical User Interface","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge user","knowledge base","local area network","leverage","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},{}],92:[function(e,t,a){"use strict";t.exports=["Inc","and Sons","LLC","Group"]},{}],93:[function(e,t,a){"use strict";t.exports=["/34##-######-####L/","/37##-######-####L/"]},{}],94:[function(e,t,a){"use strict";t.exports=["/30[0-5]#-######-###L/","/368#-######-###L/"]},{}],95:[function(e,t,a){"use strict";t.exports=["/6011-####-####-###L/","/65##-####-####-###L/","/64[4-9]#-####-####-###L/","/6011-62##-####-####-###L/","/65##-62##-####-####-###L/","/64[4-9]#-62##-####-####-###L/"]},{}],96:[function(e,t,a){"use strict";var n={};(t.exports=n).visa=e("./visa"),n.mastercard=e("./mastercard"),n.discover=e("./discover"),n.american_express=e("./american_express"),n.diners_club=e("./diners_club"),n.jcb=e("./jcb"),n.switch=e("./switch"),n.solo=e("./solo"),n.maestro=e("./maestro"),n.laser=e("./laser")},{"./american_express":93,"./diners_club":94,"./discover":95,"./jcb":97,"./laser":98,"./maestro":99,"./mastercard":100,"./solo":101,"./switch":102,"./visa":103}],97:[function(e,t,a){"use strict";t.exports=["/3528-####-####-###L/","/3529-####-####-###L/","/35[3-8]#-####-####-###L/"]},{}],98:[function(e,t,a){"use strict";t.exports=["/6304###########L/","/6706###########L/","/6771###########L/","/6709###########L/","/6304#########{5,6}L/","/6706#########{5,6}L/","/6771#########{5,6}L/","/6709#########{5,6}L/"]},{}],99:[function(e,t,a){"use strict";t.exports=["/50#{9,16}L/","/5[6-8]#{9,16}L/","/56##{9,16}L/"]},{}],100:[function(e,t,a){"use strict";t.exports=["/5[1-5]##-####-####-###L/","/6771-89##-####-###L/"]},{}],101:[function(e,t,a){"use strict";t.exports=["/6767-####-####-###L/","/6767-####-####-####-#L/","/6767-####-####-####-##L/"]},{}],102:[function(e,t,a){"use strict";t.exports=["/6759-####-####-###L/","/6759-####-####-####-#L/","/6759-####-####-####-##L/"]},{}],103:[function(e,t,a){"use strict";t.exports=["/4###########L/","/4###-####-####-###L/"]},{}],104:[function(e,t,a){"use strict";t.exports=["utf8_unicode_ci","utf8_general_ci","utf8_bin","ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci"]},{}],105:[function(e,t,a){"use strict";t.exports=["id","title","name","email","phone","token","group","category","password","comment","avatar","status","createdAt","updatedAt"]},{}],106:[function(e,t,a){"use strict";t.exports=["InnoDB","MyISAM","MEMORY","CSV","BLACKHOLE","ARCHIVE"]},{}],107:[function(e,t,a){"use strict";var n={};(t.exports=n).collation=e("./collation"),n.column=e("./column"),n.engine=e("./engine"),n.type=e("./type")},{"./collation":104,"./column":105,"./engine":106,"./type":108}],108:[function(e,t,a){"use strict";t.exports=["int","varchar","text","date","datetime","tinyint","time","timestamp","smallint","mediumint","bigint","decimal","float","double","real","bit","boolean","serial","blob","binary","enum","set","geometry","point"]},{}],109:[function(e,t,a){"use strict";var n={};(t.exports=n).month=e("./month"),n.weekday=e("./weekday")},{"./month":110,"./weekday":111}],110:[function(e,t,a){"use strict";t.exports={wide:["January","February","March","April","May","June","July","August","September","October","November","December"],wide_context:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],abbr_context:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}},{}],111:[function(e,t,a){"use strict";t.exports={wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],wide_context:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],abbr_context:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}},{}],112:[function(e,t,a){"use strict";t.exports=["Checking","Savings","Money Market","Investment","Home Loan","Credit Card","Auto Loan","Personal Loan"]},{}],113:[function(e,t,a){"use strict";t.exports={"UAE Dirham":{code:"AED",symbol:""},Afghani:{code:"AFN",symbol:"؋"},Lek:{code:"ALL",symbol:"Lek"},"Armenian Dram":{code:"AMD",symbol:""},"Netherlands Antillian Guilder":{code:"ANG",symbol:"ƒ"},Kwanza:{code:"AOA",symbol:""},"Argentine Peso":{code:"ARS",symbol:"$"},"Australian Dollar":{code:"AUD",symbol:"$"},"Aruban Guilder":{code:"AWG",symbol:"ƒ"},"Azerbaijanian Manat":{code:"AZN",symbol:"ман"},"Convertible Marks":{code:"BAM",symbol:"KM"},"Barbados Dollar":{code:"BBD",symbol:"$"},Taka:{code:"BDT",symbol:""},"Bulgarian Lev":{code:"BGN",symbol:"лв"},"Bahraini Dinar":{code:"BHD",symbol:""},"Burundi Franc":{code:"BIF",symbol:""},"Bermudian Dollar (customarily known as Bermuda Dollar)":{code:"BMD",symbol:"$"},"Brunei Dollar":{code:"BND",symbol:"$"},"Boliviano Mvdol":{code:"BOB BOV",symbol:"$b"},"Brazilian Real":{code:"BRL",symbol:"R$"},"Bahamian Dollar":{code:"BSD",symbol:"$"},Pula:{code:"BWP",symbol:"P"},"Belarussian Ruble":{code:"BYR",symbol:"p."},"Belize Dollar":{code:"BZD",symbol:"BZ$"},"Canadian Dollar":{code:"CAD",symbol:"$"},"Congolese Franc":{code:"CDF",symbol:""},"Swiss Franc":{code:"CHF",symbol:"CHF"},"Chilean Peso Unidades de fomento":{code:"CLP CLF",symbol:"$"},"Yuan Renminbi":{code:"CNY",symbol:"¥"},"Colombian Peso Unidad de Valor Real":{code:"COP COU",symbol:"$"},"Costa Rican Colon":{code:"CRC",symbol:"₡"},"Cuban Peso Peso Convertible":{code:"CUP CUC",symbol:"₱"},"Cape Verde Escudo":{code:"CVE",symbol:""},"Czech Koruna":{code:"CZK",symbol:"Kč"},"Djibouti Franc":{code:"DJF",symbol:""},"Danish Krone":{code:"DKK",symbol:"kr"},"Dominican Peso":{code:"DOP",symbol:"RD$"},"Algerian Dinar":{code:"DZD",symbol:""},Kroon:{code:"EEK",symbol:""},"Egyptian Pound":{code:"EGP",symbol:"£"},Nakfa:{code:"ERN",symbol:""},"Ethiopian Birr":{code:"ETB",symbol:""},Euro:{code:"EUR",symbol:"€"},"Fiji Dollar":{code:"FJD",symbol:"$"},"Falkland Islands Pound":{code:"FKP",symbol:"£"},"Pound Sterling":{code:"GBP",symbol:"£"},Lari:{code:"GEL",symbol:""},Cedi:{code:"GHS",symbol:""},"Gibraltar Pound":{code:"GIP",symbol:"£"},Dalasi:{code:"GMD",symbol:""},"Guinea Franc":{code:"GNF",symbol:""},Quetzal:{code:"GTQ",symbol:"Q"},"Guyana Dollar":{code:"GYD",symbol:"$"},"Hong Kong Dollar":{code:"HKD",symbol:"$"},Lempira:{code:"HNL",symbol:"L"},"Croatian Kuna":{code:"HRK",symbol:"kn"},"Gourde US Dollar":{code:"HTG USD",symbol:""},Forint:{code:"HUF",symbol:"Ft"},Rupiah:{code:"IDR",symbol:"Rp"},"New Israeli Sheqel":{code:"ILS",symbol:"₪"},"Indian Rupee":{code:"INR",symbol:""},"Indian Rupee Ngultrum":{code:"INR BTN",symbol:""},"Iraqi Dinar":{code:"IQD",symbol:""},"Iranian Rial":{code:"IRR",symbol:"﷼"},"Iceland Krona":{code:"ISK",symbol:"kr"},"Jamaican Dollar":{code:"JMD",symbol:"J$"},"Jordanian Dinar":{code:"JOD",symbol:""},Yen:{code:"JPY",symbol:"¥"},"Kenyan Shilling":{code:"KES",symbol:""},Som:{code:"KGS",symbol:"лв"},Riel:{code:"KHR",symbol:"៛"},"Comoro Franc":{code:"KMF",symbol:""},"North Korean Won":{code:"KPW",symbol:"₩"},Won:{code:"KRW",symbol:"₩"},"Kuwaiti Dinar":{code:"KWD",symbol:""},"Cayman Islands Dollar":{code:"KYD",symbol:"$"},Tenge:{code:"KZT",symbol:"лв"},Kip:{code:"LAK",symbol:"₭"},"Lebanese Pound":{code:"LBP",symbol:"£"},"Sri Lanka Rupee":{code:"LKR",symbol:"₨"},"Liberian Dollar":{code:"LRD",symbol:"$"},"Lithuanian Litas":{code:"LTL",symbol:"Lt"},"Latvian Lats":{code:"LVL",symbol:"Ls"},"Libyan Dinar":{code:"LYD",symbol:""},"Moroccan Dirham":{code:"MAD",symbol:""},"Moldovan Leu":{code:"MDL",symbol:""},"Malagasy Ariary":{code:"MGA",symbol:""},Denar:{code:"MKD",symbol:"ден"},Kyat:{code:"MMK",symbol:""},Tugrik:{code:"MNT",symbol:"₮"},Pataca:{code:"MOP",symbol:""},Ouguiya:{code:"MRO",symbol:""},"Mauritius Rupee":{code:"MUR",symbol:"₨"},Rufiyaa:{code:"MVR",symbol:""},Kwacha:{code:"MWK",symbol:""},"Mexican Peso Mexican Unidad de Inversion (UDI)":{code:"MXN MXV",symbol:"$"},"Malaysian Ringgit":{code:"MYR",symbol:"RM"},Metical:{code:"MZN",symbol:"MT"},Naira:{code:"NGN",symbol:"₦"},"Cordoba Oro":{code:"NIO",symbol:"C$"},"Norwegian Krone":{code:"NOK",symbol:"kr"},"Nepalese Rupee":{code:"NPR",symbol:"₨"},"New Zealand Dollar":{code:"NZD",symbol:"$"},"Rial Omani":{code:"OMR",symbol:"﷼"},"Balboa US Dollar":{code:"PAB USD",symbol:"B/."},"Nuevo Sol":{code:"PEN",symbol:"S/."},Kina:{code:"PGK",symbol:""},"Philippine Peso":{code:"PHP",symbol:"Php"},"Pakistan Rupee":{code:"PKR",symbol:"₨"},Zloty:{code:"PLN",symbol:"zł"},Guarani:{code:"PYG",symbol:"Gs"},"Qatari Rial":{code:"QAR",symbol:"﷼"},"New Leu":{code:"RON",symbol:"lei"},"Serbian Dinar":{code:"RSD",symbol:"Дин."},"Russian Ruble":{code:"RUB",symbol:"руб"},"Rwanda Franc":{code:"RWF",symbol:""},"Saudi Riyal":{code:"SAR",symbol:"﷼"},"Solomon Islands Dollar":{code:"SBD",symbol:"$"},"Seychelles Rupee":{code:"SCR",symbol:"₨"},"Sudanese Pound":{code:"SDG",symbol:""},"Swedish Krona":{code:"SEK",symbol:"kr"},"Singapore Dollar":{code:"SGD",symbol:"$"},"Saint Helena Pound":{code:"SHP",symbol:"£"},Leone:{code:"SLL",symbol:""},"Somali Shilling":{code:"SOS",symbol:"S"},"Surinam Dollar":{code:"SRD",symbol:"$"},Dobra:{code:"STD",symbol:""},"El Salvador Colon US Dollar":{code:"SVC USD",symbol:"$"},"Syrian Pound":{code:"SYP",symbol:"£"},Lilangeni:{code:"SZL",symbol:""},Baht:{code:"THB",symbol:"฿"},Somoni:{code:"TJS",symbol:""},Manat:{code:"TMT",symbol:""},"Tunisian Dinar":{code:"TND",symbol:""},"Pa'anga":{code:"TOP",symbol:""},"Turkish Lira":{code:"TRY",symbol:"TL"},"Trinidad and Tobago Dollar":{code:"TTD",symbol:"TT$"},"New Taiwan Dollar":{code:"TWD",symbol:"NT$"},"Tanzanian Shilling":{code:"TZS",symbol:""},Hryvnia:{code:"UAH",symbol:"₴"},"Uganda Shilling":{code:"UGX",symbol:""},"US Dollar":{code:"USD",symbol:"$"},"Peso Uruguayo Uruguay Peso en Unidades Indexadas":{code:"UYU UYI",symbol:"$U"},"Uzbekistan Sum":{code:"UZS",symbol:"лв"},"Bolivar Fuerte":{code:"VEF",symbol:"Bs"},Dong:{code:"VND",symbol:"₫"},Vatu:{code:"VUV",symbol:""},Tala:{code:"WST",symbol:""},"CFA Franc BEAC":{code:"XAF",symbol:""},Silver:{code:"XAG",symbol:""},Gold:{code:"XAU",symbol:""},"Bond Markets Units European Composite Unit (EURCO)":{code:"XBA",symbol:""},"European Monetary Unit (E.M.U.-6)":{code:"XBB",symbol:""},"European Unit of Account 9(E.U.A.-9)":{code:"XBC",symbol:""},"European Unit of Account 17(E.U.A.-17)":{code:"XBD",symbol:""},"East Caribbean Dollar":{code:"XCD",symbol:"$"},SDR:{code:"XDR",symbol:""},"UIC-Franc":{code:"XFU",symbol:""},"CFA Franc BCEAO":{code:"XOF",symbol:""},Palladium:{code:"XPD",symbol:""},"CFP Franc":{code:"XPF",symbol:""},Platinum:{code:"XPT",symbol:""},"Codes specifically reserved for testing purposes":{code:"XTS",symbol:""},"Yemeni Rial":{code:"YER",symbol:"﷼"},Rand:{code:"ZAR",symbol:"R"},"Rand Loti":{code:"ZAR LSL",symbol:""},"Rand Namibia Dollar":{code:"ZAR NAD",symbol:""},"Zambian Kwacha":{code:"ZMK",symbol:""},"Zimbabwe Dollar":{code:"ZWL",symbol:""}}},{}],114:[function(e,t,a){"use strict";var n={};(t.exports=n).account_type=e("./account_type"),n.transaction_type=e("./transaction_type"),n.currency=e("./currency")},{"./account_type":112,"./currency":113,"./transaction_type":115}],115:[function(e,t,a){"use strict";t.exports=["deposit","withdrawal","payment","invoice"]},{}],116:[function(e,t,a){"use strict";t.exports=["TCP","HTTP","SDD","RAM","GB","CSS","SSL","AGP","SQL","FTP","PCI","AI","ADP","RSS","XML","EXE","COM","HDD","THX","SMTP","SMS","USB","PNG","SAS","IB","SCSI","JSON","XSS","JBOD"]},{}],117:[function(e,t,a){"use strict";t.exports=["auxiliary","primary","back-end","digital","open-source","virtual","cross-platform","redundant","online","haptic","multi-byte","bluetooth","wireless","1080p","neural","optical","solid state","mobile"]},{}],118:[function(e,t,a){"use strict";var n={};(t.exports=n).abbreviation=e("./abbreviation"),n.adjective=e("./adjective"),n.noun=e("./noun"),n.verb=e("./verb"),n.ingverb=e("./ingverb")},{"./abbreviation":116,"./adjective":117,"./ingverb":119,"./noun":120,"./verb":121}],119:[function(e,t,a){"use strict";t.exports=["backing up","bypassing","hacking","overriding","compressing","copying","navigating","indexing","connecting","generating","quantifying","calculating","synthesizing","transmitting","programming","parsing"]},{}],120:[function(e,t,a){"use strict";t.exports=["driver","protocol","bandwidth","panel","microchip","program","port","card","array","interface","system","sensor","firewall","hard drive","pixel","alarm","feed","monitor","application","transmitter","bus","circuit","capacitor","matrix"]},{}],121:[function(e,t,a){"use strict";t.exports=["back up","bypass","hack","override","compress","copy","navigate","index","connect","generate","quantify","calculate","synthesize","input","transmit","program","reboot","parse"]},{}],122:[function(e,t,a){"use strict";var n={};(t.exports=n).title="English",n.separator=" & ",n.address=e("./address"),n.credit_card=e("./credit_card"),n.company=e("./company"),n.internet=e("./internet"),n.database=e("./database"),n.lorem=e("./lorem"),n.name=e("./name"),n.phone_number=e("./phone_number"),n.cell_phone=e("./cell_phone"),n.business=e("./business"),n.commerce=e("./commerce"),n.team=e("./team"),n.hacker=e("./hacker"),n.app=e("./app"),n.finance=e("./finance"),n.date=e("./date"),n.system=e("./system")},{"./address":60,"./app":71,"./business":77,"./cell_phone":79,"./commerce":82,"./company":89,"./credit_card":96,"./database":107,"./date":109,"./finance":114,"./hacker":118,"./internet":127,"./lorem":128,"./name":132,"./phone_number":139,"./system":140,"./team":143}],123:[function(e,t,a){"use strict";t.exports=["https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sprayaga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Skyhartman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moscoz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurafire/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/91bilal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malykhinv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kushsolitary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowshade/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heyimjuani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/envex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/unterdreht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/collegeman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peejfancher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andyisonline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ultragex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fuck_you_two/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adellecharles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ateneupopular/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetalpbalkan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Stievius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerem/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osvaldas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelceballos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrykoblentz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peterlandt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weglov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandclay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetsulek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolasfolliot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayrobinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michzen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markjenkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolai_larsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alagoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/idiot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadengle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutlu82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vocino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guiiipontes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soyjavi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshaustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomaslau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/langate/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cemshid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leemunroe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_shahedk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BillSKenney/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshhemsley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sindresorhus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soffes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/9lessons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linux29/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anaami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joreira/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shadeed9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottkclark/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jedbridges/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marakasina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BrianPurkiss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bublienko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devankoshal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ZacharyZorbas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timmillwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuasortino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/damenleeturks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomas_janousek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/RussellBishop/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brajeshwar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bermonpainter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdullindenis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suprb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yalozhkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chandlervdw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamgarth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_victa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/commadelimited/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roybarberuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/axel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladarbatov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ffbel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/syropian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ankitind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flashmurphy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ChrisFarina78/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baliomega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschamt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jm_denis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kennyadr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chatyrko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dingyi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mds/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terryxlife/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaroni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prrstn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eduardostuart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/GavicoInd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rohixx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakesimkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leeiio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjrus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uberschizo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefoundry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ripplemdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/exentrich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jakemoore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joaoedumedeiros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/poormini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tereshenkov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keryilmaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haydn_woods/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/llun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sgaurav_baghel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jamiebrittain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pifagor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agromov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/erwanhesry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diesellaws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiaha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/koridhandy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewcohen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smaczny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nandini_m/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sydlawrence/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdharrison/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgerken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lewisainslie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robbschiller/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flexrs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattdetails/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raquelwilson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrmartineau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/opnsrce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximseshuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxalex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samihah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chanpory/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sharvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josemarques/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jefffis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krystalfister/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lokesh_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dpmachado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/funwatercat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timothycd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/picard102/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcobarbosa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krasnoukhov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ademilter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickdt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/operatino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugomano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/logorado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dc_user/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/horaciobella/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SlaapMe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teeragit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqonicd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ilya_pestov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewarrow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssiskind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/HenryHoffman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdsaunders/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamsxu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousoffice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themadray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michigangraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kohette/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nickfratter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/runningskull/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madysondesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyshen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurtinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amanruzaini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyhaggard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronalfred/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jitachi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/therealmarvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pmeissner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ooomz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chacky14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jesseddy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shanehudson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/IsaryAmairani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arthurholcombe1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/boxmodel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ehsandiary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/LucasPerdidao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shalt0ni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swaplord/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaelifa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plbabin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guillemboti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arindam_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/renbyrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thiagovernetti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmillspaysbills/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikemai2awesome/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jervo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mekal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sta1ex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robergd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipecsl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrea211087/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/garand/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhooyenga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abovefunction/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pcridesagain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/randomlies/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BryanHorsey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dahparra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allthingssmitty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvernon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beweinreich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/increase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falvarad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxndrustinov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souuf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/orkuncaylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AM_Kn2/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gearpixels/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bassamology/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kosmar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrjamesnoble/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shaneIxD/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nacho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yigitpinarbasi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buzzusborne/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronkwhite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rmlewisuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giancarlon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nbirckel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_nny_m_cher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sdidonato/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atariboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abotap/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karalek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psdesignuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ludwiczakpawel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nemanjaivanovic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baluli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmadajmi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vovkasolovev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samgrover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonathansimmons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelsonjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/S0ufi4n3/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xtopherpaul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oaktreemedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nateschulte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/findingjenny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/namankreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/we_social/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leehambley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/solid_color/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abelcabans/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kkusaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jordyvdboom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosgavina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pechkinator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdbannon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/croakx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerihenare/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catadeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gcmorley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duivvv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorDubugras/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wintopia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattbilotti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taylorling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/megdraws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meln1ks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahmoudmetwally/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Silveredge9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travis_arnold/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artem_kostenko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adobi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daykiine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alek_djuric/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scips/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelmendes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alsobrooks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mcflydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/santi_urso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allfordesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stayuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bertboerland/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marosholly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamnac/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cynthiasavard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muringa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hiemil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jackiesaik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iduuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antjanus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aroon_sharma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dshster/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thehacker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelbrooksjr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanmclaughlin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/clubb3rry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taybenlor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xripunov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/myastro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/digitalmaverick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hjartstrorn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vaughanmoffitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdots/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isnifer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeysafonov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scrapdnb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrismj83/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sokaniwaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zaki3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/illyzoren/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mocabyte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/djsherman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidhemphill/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/waghner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/necodymiconer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/praveen_vijaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travishines/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kuldarkalvik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Elt_n/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/phillapier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okseanjay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/id835559/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kudretkeskin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anjhero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duck4fuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scott_riley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noufalibrahim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/h1brd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borges_marcos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devinhalladay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ciaranr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefooo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikebeecham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuaraichur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/irae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petrangr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmitriychuta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliegann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arashmanteghi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ainsleywagon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/svenlen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/faisalabid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beshur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlyson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dutchnadia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teddyzetterlund/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aoimedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/toddrew/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artvavs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benoitboucart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jomarmen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/creartinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/homka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gaborenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinclediere/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximsorokin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j2deme/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kapaluccio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/de_ascanio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dawidwu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpatey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/popey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_purplebunny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/1markiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ajaxy_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenmurrell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dudestein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskarlevinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorstuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nehfy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leandrovaranda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottgallant/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victor_haydin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawrb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryhanhassan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amayvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_brixen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karolkrakowiak_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herkulano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geran7/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cggaurav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_witko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/polarity/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattlat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonburke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teylorfeliz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigelimeliah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rachelreveley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reabo101/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rahmeen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickyyean/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spbroma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sebashton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpenico/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/francis_vega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oktayelipek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kikillo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbianz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrygerard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/0therplanet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilalsiddique1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ionuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grrr_nl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/liminha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rawdiggie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryandownie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sethlouey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pixage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arpitnj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/switmer777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/puzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/besbujupi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supjoey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lowie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linkibol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balintorosz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imcoding/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gusoto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasschrijer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/superoutman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kalmerrautam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielizalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gojeanyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidbaldie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_vojto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laurengray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mymyboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nellleo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marciotoledo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hasslunsford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muridrahhal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/levisan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grahamkennery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepetitogre/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antongenkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/safrankov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cocolero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dss49/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matt3224/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluesix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/quailandquasar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AlbertoCococi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepinski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhudobivnik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thibaut_re/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olgary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shojberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mtolokonnikov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bereto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naupintos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wegotvices/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xadhix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rodnylobos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madcampos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebyvadim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartoszdawydzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supervova/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markretzloff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vonachoo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darylws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mylesb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herbigt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/depaulawagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gizmeedevil1991/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_scottburgess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lisovsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidsasda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artd_sign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/YoungCutlass/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mgonto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorquinn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmond/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oksanafrewer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zauerkraut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkeithmason/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nitinhayaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lmjabreu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mandalareopens/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thinkleft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caseycavanagh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/luxe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dotgridline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spedwig/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madewulf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattsapii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/helderleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisstumph/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayphen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nsamoylov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisvanderkooi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justme_timothyg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/otozk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gu5taf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cyril_gaillard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_kobelyatsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daniloc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nwdsha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/romanbulah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dannol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thekevinjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jwalter14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timgthomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thatonetommy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diansigitp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adrienths/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klimmka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gkaam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekcramer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyyo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerrsoft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xalionmalik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edhenderson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keyuri85/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roxanejammet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kimcool/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edkf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alessandroribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacksonlatka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebronjennan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karlkanall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moynihan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danpliego/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wesleytrankin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fjaguero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mashaaaaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yassiryahya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dparrelli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fotomagin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aka_james/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqbalperkasa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jarsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_oy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malgordon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlfairclough/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelabehsera/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierrestoffe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enjoythetau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/loganjlambert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpeezy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyginnivan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michalhron/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lingeswaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolsvein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peter576/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reideiredale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joeymurdah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raphaelnikson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mvdheuvel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maxlinderman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jimmuirhead/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/begreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/frankiefreesbie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Talbi_ConSept/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/longlivemyword/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vanchesz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maiklam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hermanobrother/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rez___a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/greenbes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anthonysukow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fluidbrush/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dactrtr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jehnglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bergmartin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugocornejo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_kkga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dzantievm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonsgotwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byryan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vytautas_a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cicerobr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshelmersson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d33pthought/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davecraige/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nckjrvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexandermayes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bagawarman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rob_thomas10/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cofla/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maikelk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtgibbons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russell_baylis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhesslow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codysanfilippo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/webtanya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebybrenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dcalonaci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perfectflow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjsiii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kumarrajan12123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamsteffen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ceekaytweet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrybolt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/conspirator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dallasbpeters/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n3dmax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terpimost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byrnecore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j_drake_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hoangloi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tobysaxon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gofrasdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dimaposnyy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjisousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okandungel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/billyroshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskamaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/motionthinks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/knilob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashocka18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartjo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/omnizya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andreas_pr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edgarchris99/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasgeisen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joannefournier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/demersdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adammarsbar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nasirwd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n_tassone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themrdave/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicollerich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicoleglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/judzhin_miles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kianoshp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evandrix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alterchuca/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhrubo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ma_tiax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssbb_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mauriolg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mactopus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_winslet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joemdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacobbennett/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nfedoroff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamglimy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allagringaus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olaolusoga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wim1k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicklacke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/steynviljoen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/strikewan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryankirkman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewabogado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doooon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jagan123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariffsetiawan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elenadissi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mwarkentin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrymeier_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_garcia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmackerman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borantula/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spacewood_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryuchi311/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evanshajed/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tristanlegros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shoaib253/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aislinnkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okcoker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunshinedgirl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleclarsoniv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nomidesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petebernardo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottiedude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imsoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imammuht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nepdud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lanceguyatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bboy1895/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amywebbb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rweve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haruintesettden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ricburton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelshd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/batsirai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/primozcigler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/8d3k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geneseleznev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/al_li/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souperphly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mslarkina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/2fockus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdavis565/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/turkutuuli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxward/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebinoclard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauravjassal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidmerrique/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mdsisto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewofficer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kojourin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnirmal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aluisio_azevedo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cloudstudio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvierich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fran_mchamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perretmagali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cadikkara/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bpartridge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelkoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitor376/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/desastrozo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thimo_cz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lhausermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xravil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guischmitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vigobronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panghal0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelkooreman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/surgeonist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/christianoliff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caspergrl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ipavelek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierre_nel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sterlingrules/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elbuscainfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bennyjien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stushona/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/estebanuribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/embrcecreations/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danillos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charlesrpratt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosblanco_eu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leonfedotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rangafangs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_frees/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgormtx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bryan_topham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpscribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carbontwelve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamjdeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowwrite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/barputro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/drewbyreese/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bistrianiosip/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magoo04/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pehamondello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_harris88/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/algunsanabria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zforrester/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ovall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosjgsousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geobikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ah_lice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/looneydoodle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerdgr8/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ddggccaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zackeeler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/normanbox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/el_fuertisimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ismail_biltagi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juangomezw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jnmnrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/patrickcoombe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanjohnson_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeffgolenski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kvasnic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauchomatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/afusinatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okansurreel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamawesomeface/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emileboudeling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arishi_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juanmamartinez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mkginfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terrorpixel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousonaut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prheemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcolenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/foczzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martip07/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaodang17/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johncafazza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinlayfield/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/franciscoamk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdulhyeuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marklamb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edobene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresenfredrik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikaeljorhult/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisslowik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meelford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotnolten/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yehudab/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vijaykarthik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bfrohs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josep_martins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/attacks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sur4dye/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tumski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mangosango/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/paulfarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kazaky999/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kiwiupover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nvkznemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tom_even/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ratbus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshmedeski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thewillbeard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joe_black/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleinadsays/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcusgorillius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hota_v/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jghyllebert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shinze/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/janpalounek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/her_ruu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dansowter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipeapiress/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magugzbrand2d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/posterjob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nathalie_fs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobbytwoshoes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dreizle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elisabethkjaer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/notbadart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mohanrohith/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jlsolerdeltoro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itskawsar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/slowspock/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zvchkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craighenneberry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trubeatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juaumlol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samscouto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BenouarradeM/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gipsy_raf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/netonet_il/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arkokoley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itsajimithing/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smalonso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victordeanda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_dwite_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richardgarretts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregrwilkinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anatolinicolae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanotirloni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ostirbu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naitanamoreno/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcomiskey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcomano_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidcazalis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falconerie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregkilian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bcrad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bolzanmarco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/low_res/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vlajki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petar_prog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonkspr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmalfikri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mfacchinello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atanism/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/harry_sistalam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/murrayswift/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobwassermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gavr1l0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madshensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_subtle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salimianoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/twittypork/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/airskylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnezkumar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgajjar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salvafc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deeenright/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cybind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eyronn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vickyshits/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cboller1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresdjasso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/melvindidit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lvovenok/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giuliusa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/belyaev_rs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kamal_chaneman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/incubo82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hellofeverrrr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhaligowski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunlandictwin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bu7921/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andytlaw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/finchjke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manigm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/umurgdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ganserene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutu_krish/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jodytaggart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ntfblog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tanveerrao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hfalucas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxleroydeval/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kucingbelang4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bargaorobalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefrost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumannzone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcolberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachingawas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjshaw14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ramanathan_pdy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johndezember/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshoenson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonmorreale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nutzumi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeyalmone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klefue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kirangopal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumann_alex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matthewkay_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jay_wilburn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shesgared/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/apriendeau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnriordan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wake_gs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleksitappura/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emsgulam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xilantra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imomenui/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sircalebgrove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/newbrushes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hsinyo23/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/katiemdaly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ecommerceil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marlinjayakody/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swooshycueb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sangdth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coderdiaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sasha_shestakov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eugeneeweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgclegg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n1ght_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dixchen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakehawksworth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marclgonzales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yesmeck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doronmalki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruehldesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kijanmaharjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wearesavas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefvdham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tweetubhai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fiterik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyryndya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d00maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/theonlyzeke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manekenthe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reetajayendra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyshimko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrgraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanozoffoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrebay007/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shvelo96/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pyronite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedjpetersen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtyukmaev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_williamguerra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/albertaugustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinjohndayy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vj_demien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colirpixoil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/goddardlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laasli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jqiuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heycamtaylor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nastya_mane/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mastermindesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nyancecom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sandywoodruff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bighanddesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sbtransparent/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aviddayentonbay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richwild/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaysix_dizzy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tur8le/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/seyedhossein1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/privetwagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmandenn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dev_essentials/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmfsocial/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_yardenoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mateaodviteza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weavermedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mufaddal_mw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hafeeskhan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sulaqo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eddiechen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josecarlospsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vm_f/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enricocicconi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danmartin70/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gmourier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrxloka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_pedropinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eitarafa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oscarowusu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ralph_lam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panchajanyag/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodydotmx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marshallchen_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aio___/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaabane_wail/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/txcx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akashsharma39/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falling_soul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sainraja/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mugukamil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johannesneu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markwienands/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balakayuriy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alan_zhang_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/layerssss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaspernordkvist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VMilescu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aeon56/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sreejithexp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dicesales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhoot_amit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smenov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lonesomelemon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladimirdevic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelcipriano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haligaliharun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buleswapnil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/serefka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ifarafonow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikasvinfotech/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/urrutimeoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areandacom/128.jpg"]},{}],124:[function(e,t,a){"use strict";t.exports=["com","biz","info","name","net","org"]},{}],125:[function(e,t,a){"use strict";t.exports=["example.org","example.com","example.net"]},{}],126:[function(e,t,a){"use strict";t.exports=["gmail.com","yahoo.com","hotmail.com"]},{}],127:[function(e,t,a){"use strict";var n={};(t.exports=n).free_email=e("./free_email"),n.example_email=e("./example_email"),n.domain_suffix=e("./domain_suffix"),n.avatar_uri=e("./avatar_uri")},{"./avatar_uri":123,"./domain_suffix":124,"./example_email":125,"./free_email":126}],128:[function(e,t,a){"use strict";var n={};(t.exports=n).words=e("./words"),n.supplemental=e("./supplemental")},{"./supplemental":129,"./words":130}],129:[function(e,t,a){"use strict";t.exports=["abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accipio","accommodo","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","adultus","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alienus","alii","alioqui","aliqua","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","arcus","argentum","argumentum","arguo","arma","armarium","armo","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","aspicio","asporto","assentator","astrum","atavus","ater","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","auris","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","avoco","baiulus","balbus","barba","bardus","basium","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certo","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","colloco","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corpus","correptius","corrigo","corroboro","corrumpo","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cunabula","cunae","cunctatio","cupiditas","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","curvus","custodia","damnatio","damno","dapifer","debeo","debilito","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defigo","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delego","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","desidero","desino","desipio","desolo","desparatus","despecto","despirmatio","infit","inflammatio","paens","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecunia","pecus","peior","pel","ocer","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","temptatio","tempus","tenax","tendo","teneo","tener","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","triginta","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpe","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velociter","velum","velut","venia","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduata","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","vultuosus","xiphias"]},{}],130:[function(e,t,a){"use strict";t.exports=["alias","consequatur","aut","perferendis","sit","voluptatem","accusantium","doloremque","aperiam","eaque","ipsa","quae","ab","illo","inventore","veritatis","et","quasi","architecto","beatae","vitae","dicta","sunt","explicabo","aspernatur","aut","odit","aut","fugit","sed","quia","consequuntur","magni","dolores","eos","qui","ratione","voluptatem","sequi","nesciunt","neque","dolorem","ipsum","quia","dolor","sit","amet","consectetur","adipisci","velit","sed","quia","non","numquam","eius","modi","tempora","incidunt","ut","labore","et","dolore","magnam","aliquam","quaerat","voluptatem","ut","enim","ad","minima","veniam","quis","nostrum","exercitationem","ullam","corporis","nemo","enim","ipsam","voluptatem","quia","voluptas","sit","suscipit","laboriosam","nisi","ut","aliquid","ex","ea","commodi","consequatur","quis","autem","vel","eum","iure","reprehenderit","qui","in","ea","voluptate","velit","esse","quam","nihil","molestiae","et","iusto","odio","dignissimos","ducimus","qui","blanditiis","praesentium","laudantium","totam","rem","voluptatum","deleniti","atque","corrupti","quos","dolores","et","quas","molestias","excepturi","sint","occaecati","cupiditate","non","provident","sed","ut","perspiciatis","unde","omnis","iste","natus","error","similique","sunt","in","culpa","qui","officia","deserunt","mollitia","animi","id","est","laborum","et","dolorum","fuga","et","harum","quidem","rerum","facilis","est","et","expedita","distinctio","nam","libero","tempore","cum","soluta","nobis","est","eligendi","optio","cumque","nihil","impedit","quo","porro","quisquam","est","qui","minus","id","quod","maxime","placeat","facere","possimus","omnis","voluptas","assumenda","est","omnis","dolor","repellendus","temporibus","autem","quibusdam","et","aut","consequatur","vel","illum","qui","dolorem","eum","fugiat","quo","voluptas","nulla","pariatur","at","vero","eos","et","accusamus","officiis","debitis","aut","rerum","necessitatibus","saepe","eveniet","ut","et","voluptates","repudiandae","sint","et","molestiae","non","recusandae","itaque","earum","rerum","hic","tenetur","a","sapiente","delectus","ut","aut","reiciendis","voluptatibus","maiores","doloribus","asperiores","repellat"]},{}],131:[function(e,t,a){"use strict";t.exports=["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gay","Gayle","Gaylord","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"]},{}],132:[function(e,t,a){"use strict";var n={};(t.exports=n).first_name=e("./first_name"),n.last_name=e("./last_name"),n.prefix=e("./prefix"),n.suffix=e("./suffix"),n.title=e("./title"),n.name=e("./name")},{"./first_name":131,"./last_name":133,"./name":134,"./prefix":135,"./suffix":136,"./title":137}],133:[function(e,t,a){"use strict";t.exports=["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Eichmann","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Friesen","Fritsch","Funk","Gaylord","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},{}],134:[function(e,t,a){"use strict";t.exports=["#{prefix} #{first_name} #{last_name}","#{first_name} #{last_name} #{suffix}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}"]},{}],135:[function(e,t,a){"use strict";t.exports=["Mr.","Mrs.","Ms.","Miss","Dr."]},{}],136:[function(e,t,a){"use strict";t.exports=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"]},{}],137:[function(e,t,a){"use strict";t.exports={descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","Dynamic","International","Legacy","Forward","Internal","Human","Chief","Principal"],level:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"]}},{}],138:[function(e,t,a){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-#### x###","(###) ###-#### x###","1-###-###-#### x###","###.###.#### x###","###-###-#### x####","(###) ###-#### x####","1-###-###-#### x####","###.###.#### x####","###-###-#### x#####","(###) ###-#### x#####","1-###-###-#### x#####","###.###.#### x#####"]},{}],139:[function(e,t,a){"use strict";var n={};(t.exports=n).formats=e("./formats")},{"./formats":138}],140:[function(e,t,a){"use strict";var n={};(t.exports=n).mimeTypes=e("./mimeTypes")},{"./mimeTypes":141}],141:[function(e,t,a){"use strict";t.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana"},"application/3gpp-ims+xml":{source:"iana"},"application/a2l":{source:"iana"},"application/activemessage":{source:"iana"},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana"},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",extensions:["atomsvc"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana"},"application/bacnet-xdd+zip":{source:"iana"},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana"},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/cbor":{source:"iana"},"application/ccmp+xml":{source:"iana"},"application/ccxml+xml":{source:"iana",extensions:["ccxml"]},"application/cdfx+xml":{source:"iana"},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana"},"application/cellml+xml":{source:"iana"},"application/cfw":{source:"iana"},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana"},"application/cpl+xml":{source:"iana"},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana"},"application/cstadata+xml":{source:"iana"},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",extensions:["mdp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana"},"application/dicom":{source:"iana"},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/docbook+xml":{source:"apache",extensions:["dbk"]},"application/dskpp+xml":{source:"iana"},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/emergencycalldata.comment+xml":{source:"iana"},"application/emergencycalldata.deviceinfo+xml":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana"},"application/emergencycalldata.serviceinfo+xml":{source:"iana"},"application/emergencycalldata.subscriberinfo+xml":{source:"iana"},"application/emma+xml":{source:"iana",extensions:["emma"]},"application/emotionml+xml":{source:"iana"},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana"},"application/epub+zip":{source:"iana",extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana"},"application/fits":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1,extensions:["woff"]},"application/font-woff2":{compressible:!1,extensions:["woff2"]},"application/framework-attributes+xml":{source:"iana"},"application/gml+xml":{source:"apache",extensions:["gml"]},"application/gpx+xml":{source:"apache",extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1},"application/h224":{source:"iana"},"application/held+xml":{source:"iana"},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana"},"application/ibe-pkg-reply+xml":{source:"iana"},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana"},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana"},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana"},"application/kpml-response+xml":{source:"iana"},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana"},"application/lost+xml":{source:"iana",extensions:["lostxml"]},"application/lostsync+xml":{source:"iana"},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",extensions:["mads"]},"application/manifest+json":{charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",extensions:["mathml"]},"application/mathml-content+xml":{source:"iana"},"application/mathml-presentation+xml":{source:"iana"},"application/mbms-associated-procedure-description+xml":{source:"iana"},"application/mbms-deregister+xml":{source:"iana"},"application/mbms-envelope+xml":{source:"iana"},"application/mbms-msk+xml":{source:"iana"},"application/mbms-msk-response+xml":{source:"iana"},"application/mbms-protection-description+xml":{source:"iana"},"application/mbms-reception-report+xml":{source:"iana"},"application/mbms-register+xml":{source:"iana"},"application/mbms-register-response+xml":{source:"iana"},"application/mbms-schedule+xml":{source:"iana"},"application/mbms-user-service-description+xml":{source:"iana"},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana"},"application/media_control+xml":{source:"iana"},"application/mediaservercontrol+xml":{source:"iana",extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",extensions:["metalink"]},"application/metalink4+xml":{source:"iana",extensions:["meta4"]},"application/mets+xml":{source:"iana",extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mods+xml":{source:"iana",extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana"},"application/mrb-publish+xml":{source:"iana"},"application/msc-ivr+xml":{source:"iana"},"application/msc-mixer+xml":{source:"iana"},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mxf":{source:"iana",extensions:["mxf"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana"},"application/news-groupinfo":{source:"iana"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana"},"application/nss":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p2p-overlay+xml":{source:"iana"},"application/parityfec":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana"},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana"},"application/pidf-diff+xml":{source:"iana"},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",extensions:["pls"]},"application/poc-settings+xml":{source:"iana"},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/provenance+xml":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.hpub+zip":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana"},"application/pskc+xml":{source:"iana",extensions:["pskcxml"]},"application/qsig":{source:"iana"},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf"]},"application/reginfo+xml":{source:"iana",extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",extensions:["rld"]},"application/rfc+xml":{source:"iana"},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana"},"application/rls-services+xml":{source:"iana",extensions:["rs"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana"},"application/samlmetadata+xml":{source:"iana"},"application/sbml+xml":{source:"iana",extensions:["sbml"]},"application/scaip+xml":{source:"iana"},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/sep+xml":{source:"iana"},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",extensions:["shf"]},"application/sieve":{source:"iana"},"application/simple-filter+xml":{source:"iana"},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",extensions:["srx"]},"application/spirits-event+xml":{source:"iana"},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",extensions:["grxml"]},"application/sru+xml":{source:"iana",extensions:["sru"]},"application/ssdl+xml":{source:"apache",extensions:["ssdl"]},"application/ssml+xml":{source:"iana",extensions:["ssml"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/tei+xml":{source:"iana",extensions:["tei","teicorpus"]},"application/thraud+xml":{source:"iana",extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/ttml+xml":{source:"iana"},"application/tve-trigger":{source:"iana"},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana"},"application/urc-ressheet+xml":{source:"iana"},"application/urc-targetdesc+xml":{source:"iana"},"application/urc-uisocketdesc+xml":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana"},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.3gpp-prose+xml":{source:"iana"},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana"},"application/vnd.3gpp.bsf+xml":{source:"iana"},"application/vnd.3gpp.mid-call+xml":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana"},"application/vnd.3gpp.srvcc-info+xml":{source:"iana"},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana"},"application/vnd.3gpp.ussd+xml":{source:"iana"},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana"},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",extensions:["mpkg"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avistar+xml":{source:"iana"},"application/vnd.balsamiq.bmml+xml":{source:"iana"},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.biopax.rdf+xml":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",extensions:["cdxml"]},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana"},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",extensions:["wbs"]},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana"},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana"},"application/vnd.cybank":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume-movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana"},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana"},"application/vnd.dvb.notif-container+xml":{source:"iana"},"application/vnd.dvb.notif-generic+xml":{source:"iana"},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana"},"application/vnd.dvb.notif-init+xml":{source:"iana"},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana"},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana"},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.eszigno3+xml":{source:"iana",extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana"},"application/vnd.etsi.asic-e+zip":{source:"iana"},"application/vnd.etsi.asic-s+zip":{source:"iana"},"application/vnd.etsi.cug+xml":{source:"iana"},"application/vnd.etsi.iptvcommand+xml":{source:"iana"},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana"},"application/vnd.etsi.iptvprofile+xml":{source:"iana"},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana"},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana"},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana"},"application/vnd.etsi.iptvservice+xml":{source:"iana"},"application/vnd.etsi.iptvsync+xml":{source:"iana"},"application/vnd.etsi.iptvueprofile+xml":{source:"iana"},"application/vnd.etsi.mcid+xml":{source:"iana"},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana"},"application/vnd.etsi.pstn+xml":{source:"iana"},"application/vnd.etsi.sci+xml":{source:"iana"},"application/vnd.etsi.simservs+xml":{source:"iana"},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana"},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eudora.data":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana"},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana"},"application/vnd.gov.sk.e-form+zip":{source:"iana"},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana"},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana"},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana"},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana"},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana"},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana"},"application/vnd.iptc.g2.packageitem+xml":{source:"iana"},"application/vnd.iptc.g2.planningitem+xml":{source:"iana"},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las.las+xml":{source:"iana",extensions:["lasxml"]},"application/vnd.liberty-request+xml":{source:"iana"},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",extensions:["lbe"]},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana"},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana"},"application/vnd.marlin.drm.conftoken+xml":{source:"iana"},"application/vnd.marlin.drm.license+xml":{source:"iana"},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana"},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana"},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana"},"application/vnd.ms-printing.printticket+xml":{source:"apache"},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana"},"application/vnd.nokia.iptv.config+xml":{source:"iana"},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana"},"application/vnd.nokia.landmarkcollection+xml":{source:"iana"},"application/vnd.nokia.n-gage.ac+xml":{source:"iana"},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana"},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana"},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana"},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana"},"application/vnd.oipf.dae.xhtml+xml":{source:"iana"},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana"},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana"},"application/vnd.oipf.spdlist+xml":{source:"iana"},"application/vnd.oipf.ueprofile+xml":{source:"iana"},"application/vnd.oipf.userprofile+xml":{source:"iana"},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana"},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.imd+xml":{source:"iana"},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana"},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana"},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.sprov+xml":{source:"iana"},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana"},"application/vnd.oma.cab-feature-handler+xml":{source:"iana"},"application/vnd.oma.cab-pcc+xml":{source:"iana"},"application/vnd.oma.cab-subs-invite+xml":{source:"iana"},"application/vnd.oma.cab-user-prefs+xml":{source:"iana"},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana"},"application/vnd.oma.group-usage-list+xml":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana"},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana"},"application/vnd.oma.poc.final-report+xml":{source:"iana"},"application/vnd.oma.poc.groups+xml":{source:"iana"},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana"},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana"},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana"},"application/vnd.oma.xcap-directory+xml":{source:"iana"},"application/vnd.omads-email+xml":{source:"iana"},"application/vnd.omads-file+xml":{source:"iana"},"application/vnd.omads-folder+xml":{source:"iana"},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana"},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"apache",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"apache",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"apache",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana"},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana"},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana"},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana"},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana"},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos+xml":{source:"iana"},"application/vnd.paos.xml":{source:"apache"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana"},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana"},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana"},"application/vnd.radisys.msml+xml":{source:"iana"},"application/vnd.radisys.msml-audit+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana"},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana"},"application/vnd.radisys.msml-conf+xml":{source:"iana"},"application/vnd.radisys.msml-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana"},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.software602.filler.form+xml":{source:"iana"},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana"},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana"},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana"},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.tmd.mediaflex.api+xml":{source:"iana"},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana"},"application/vnd.wv.ssp+xml":{source:"iana"},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana"},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",extensions:["zaz"]},"application/voicexml+xml":{source:"iana",extensions:["vxml"]},"application/vq-rtcpxr":{source:"iana"},"application/watcherinfo+xml":{source:"iana"},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-otf":{source:"apache",compressible:!0,extensions:["otf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-ttf":{source:"apache",compressible:!0,extensions:["ttf","ttc"]},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"apache",extensions:["der","crt","pem"]},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana"},"application/xaml+xml":{source:"apache",extensions:["xaml"]},"application/xcap-att+xml":{source:"iana"},"application/xcap-caps+xml":{source:"iana"},"application/xcap-diff+xml":{source:"iana",extensions:["xdf"]},"application/xcap-el+xml":{source:"iana"},"application/xcap-error+xml":{source:"iana"},"application/xcap-ns+xml":{source:"iana"},"application/xcon-conference-info+xml":{source:"iana"},"application/xcon-conference-info-diff+xml":{source:"iana"},"application/xenc+xml":{source:"iana",extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache"},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana"},"application/xmpp+xml":{source:"iana"},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",extensions:["xpl"]},"application/xslt+xml":{source:"iana",extensions:["xslt"]},"application/xspf+xml":{source:"apache",extensions:["xspf"]},"application/xv+xml":{source:"iana",extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yin+xml":{source:"iana",extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana"},"audio/3gpp2":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana"},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana"},"audio/mp4":{source:"iana",compressible:!1,extensions:["mp4a","m4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tone":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/opentype":{compressible:!0,extensions:["otf"]},"image/bmp":{source:"apache",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/fits":{source:"iana"},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jp2":{source:"iana"},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jpm":{source:"iana"},"image/jpx":{source:"iana"},"image/ktx":{source:"iana",extensions:["ktx"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana"},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana"},"image/tiff":{source:"iana",compressible:!1,extensions:["tiff","tif"]},"image/tiff-fx":{source:"iana"},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana"},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana"},"image/vnd.valve.source.texture":{source:"iana"},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana"},"image/webp":{source:"apache",extensions:["webp"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana"},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana"},"message/global-delivery-status":{source:"iana"},"message/global-disposition-notification":{source:"iana"},"message/global-headers":{source:"iana"},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana"},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/vnd.collada+xml":{source:"iana",extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana"},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana"},"model/vnd.parasolid.transmit.binary":{source:"iana"},"model/vnd.parasolid.transmit.text":{source:"iana"},"model/vnd.valve.source.compiled-map":{source:"iana"},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana"},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana"},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana",compressible:!1},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/css":{source:"iana",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fwdred":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hjson":{extensions:["hjson"]},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{extensions:["less"]},"text/markdown":{source:"iana"},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["markdown","md","mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"apache"},"video/3gpp":{source:"apache",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"apache"},"video/3gpp2":{source:"apache",extensions:["3g2"]},"video/bmpeg":{source:"apache"},"video/bt656":{source:"apache"},"video/celb":{source:"apache"},"video/dv":{source:"apache"},"video/h261":{source:"apache",extensions:["h261"]},"video/h263":{source:"apache",extensions:["h263"]},"video/h263-1998":{source:"apache"},"video/h263-2000":{source:"apache"},"video/h264":{source:"apache",extensions:["h264"]},"video/h264-rcdo":{source:"apache"},"video/h264-svc":{source:"apache"},"video/jpeg":{source:"apache",extensions:["jpgv"]},"video/jpeg2000":{source:"apache"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/mj2":{source:"apache",extensions:["mj2","mjp2"]},"video/mp1s":{source:"apache"},"video/mp2p":{source:"apache"},"video/mp2t":{source:"apache",extensions:["ts"]},"video/mp4":{source:"apache",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"apache"},"video/mpeg":{source:"apache",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"apache"},"video/mpv":{source:"apache"},"video/nv":{source:"apache"},"video/ogg":{source:"apache",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"apache"},"video/pointer":{source:"apache"},"video/quicktime":{source:"apache",compressible:!1,extensions:["qt","mov"]},"video/raw":{source:"apache"},"video/rtp-enc-aescm128":{source:"apache"},"video/rtx":{source:"apache"},"video/smpte292m":{source:"apache"},"video/ulpfec":{source:"apache"},"video/vc1":{source:"apache"},"video/vnd.cctv":{source:"apache"},"video/vnd.dece.hd":{source:"apache",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"apache",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"apache"},"video/vnd.dece.pd":{source:"apache",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"apache",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"apache",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"apache"},"video/vnd.directv.mpeg-tts":{source:"apache"},"video/vnd.dlna.mpeg-tts":{source:"apache"},"video/vnd.dvb.file":{source:"apache",extensions:["dvb"]},"video/vnd.fvt":{source:"apache",extensions:["fvt"]},"video/vnd.hns.video":{source:"apache"},"video/vnd.iptvforum.1dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.1dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.2dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.2dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.ttsavc":{source:"apache"},"video/vnd.iptvforum.ttsmpeg2":{source:"apache"},"video/vnd.motorola.video":{source:"apache"},"video/vnd.motorola.videop":{source:"apache"},"video/vnd.mpegurl":{source:"apache",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"apache",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"apache"},"video/vnd.nokia.videovoip":{source:"apache"},"video/vnd.objectvideo":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"apache"},"video/vnd.sealed.mpeg4":{source:"apache"},"video/vnd.sealed.swf":{source:"apache"},"video/vnd.sealedmedia.softseal.mov":{source:"apache"},"video/vnd.uvvu.mp4":{source:"apache",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"apache",extensions:["viv"]},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}},{}],142:[function(e,t,a){"use strict";t.exports=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"]},{}],143:[function(e,t,a){"use strict";var n={};(t.exports=n).creature=e("./creature"),n.name=e("./name")},{"./creature":142,"./name":144}],144:[function(e,t,a){"use strict";t.exports=["#{Address.state} #{creature}"]},{}],145:[function(e,t,a){"use strict";t.exports=["United States","United States of America","USA"]},{}],146:[function(e,t,a){"use strict";var n={};(t.exports=n).default_country=e("./default_country"),n.postcode_by_state=e("./postcode_by_state")},{"./default_country":145,"./postcode_by_state":147}],147:[function(e,t,a){"use strict";t.exports={AL:"350##",AK:"995##",AS:"967##",AZ:"850##",AR:"717##",CA:"900##",CO:"800##",CT:"061##",DC:"204##",DE:"198##",FL:"322##",GA:"301##",HI:"967##",ID:"832##",IL:"600##",IN:"463##",IA:"510##",KS:"666##",KY:"404##",LA:"701##",ME:"042##",MD:"210##",MA:"026##",MI:"480##",MN:"555##",MS:"387##",MO:"650##",MT:"590##",NE:"688##",NV:"898##",NH:"036##",NJ:"076##",NM:"880##",NY:"122##",NC:"288##",ND:"586##",OH:"444##",OK:"730##",OR:"979##",PA:"186##",RI:"029##",SC:"299##",SD:"577##",TN:"383##",TX:"798##",UT:"847##",VT:"050##",VA:"222##",WA:"990##",WV:"247##",WI:"549##",WY:"831##"}},{}],148:[function(e,t,a){"use strict";var n={};(t.exports=n).title="United States (English)",n.internet=e("./internet"),n.address=e("./address"),n.phone_number=e("./phone_number")},{"./address":146,"./internet":150,"./phone_number":153}],149:[function(e,t,a){"use strict";t.exports=["com","us","biz","info","name","net","org"]},{}],150:[function(e,t,a){"use strict";var n={};(t.exports=n).domain_suffix=e("./domain_suffix")},{"./domain_suffix":149}],151:[function(e,t,a){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],152:[function(e,t,a){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],153:[function(e,t,a){"use strict";var n={};(t.exports=n).area_code=e("./area_code"),n.exchange_code=e("./exchange_code")},{"./area_code":151,"./exchange_code":152}],154:[function(e,t,a){"use strict";t.exports=function(n){var e=this,a=n.helpers;return e.word=function(e){return n.random.arrayElement(n.definitions.lorem.words)},e.words=function(e){void 0===e&&(e=3);for(var t=[],a=0;a>>n&1&&(a=p(a,u(t<>>30)),i),c[i]=u(4294967295&c[i])},this.init_by_array=function(e,t){var a,n,i,r,o;for(this.init_genrand(19650218),a=1,n=0,i=t>>30),1664525)),e[n]),n),c[a]=u(4294967295&c[a]),n++,s<=++a&&(c[0]=c[623],a=1),t<=n&&(n=0);for(i=623;i;i--)c[a]=(r=u((dbg=c[a])^l(u(c[a-1]^c[a-1]>>>30),1566083941)))<(o=a)?u(4294967296-(o-r)&4294967295):r-o,c[a]=u(4294967295&c[a]),s<=++a&&(c[0]=c[623],a=1);c[0]=2147483648};var r=[0,2567483615];this.genrand_int32=function(){var e;if(s<=i){var t;for(625==i&&this.init_genrand(5489),t=0;t<227;t++)e=u(c[t]&a|c[t+1]&n),c[t]=u(c[t+397]^e>>>1^r[1&e]);for(;t<623;t++)e=u(c[t]&a|c[t+1]&n),c[t]=u(c[t+-227]^e>>>1^r[1&e]);e=u(c[623]&a|c[0]&n),c[623]=u(c[396]^e>>>1^r[1&e]),i=0}return e=u((e=u((e=u((e=u((e=c[i++])^e>>>11))^e<<7&2636928640))^e<<15&4022730752))^e>>>18)},this.genrand_int31=function(){return this.genrand_int32()>>>1},this.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},this.genrand_real2=function(){return this.genrand_int32()*(1/4294967296)},this.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},this.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)}}var r=new(a.MersenneTwister19937=i);r.init_genrand((new Date).getTime()%1e9),a.rand=function(e,t){return void 0===e&&(t=0,e=32768),Math.floor(r.genrand_real2()*(e-t)+t)},a.seed=function(e){if("number"!=typeof e)throw new Error("seed(S) must take numeric argument; is "+(void 0===e?"undefined":n(e)));r.init_genrand(e)},a.seed_array=function(e){if("object"!=(void 0===e?"undefined":n(e)))throw new Error("seed_array(A) must take array of numbers; is "+(void 0===e?"undefined":n(e)));r.init_by_array(e)}},{}],161:[function(e,t,a){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(e=e||0,"number"==typeof(t=t||100)&&"number"==typeof e)return function(e,t){if(t>1,p=-7,l=a?i-1:0,f=a?-1:1,m=e[t+l];for(l+=f,r=m&(1<<-p)-1,m>>=-p,p+=s;0>=-p,p+=n;0>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:r-1,d=n?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=p):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),2<=(t+=1<=o+l?f/c:f*Math.pow(2,1-l))*c&&(o++,c/=2),p<=o+l?(s=0,o=p):1<=o+l?(s=(t*c-1)*Math.pow(2,i),o+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,i),o=0));8<=i;e[a+m]=255&s,m+=d,s/=256,i-=8);for(o=o<=n.flowLevel;switch(J(i,a,n.indent,t,function(e){return function(e,t){var a,n;for(a=0,n=e.implicitTypes.length;a"+V(i,n.indent)+Y(O(function(e,t){var a,n,i=/(\n+)([^\n]*)/g,r=(s=e.indexOf("\n"),s=-1!==s?s:e.length,i.lastIndex=s,Z(e.slice(0,s),t)),o="\n"===e[0]||" "===e[0];var s;for(;n=i.exec(e);){var c=n[1],u=n[2];a=" "===u[0],r+=c+(o||a||""===u?"":"\n")+Z(u,t),o=a}return r}(i,t),e));case H:return'"'+function(e){for(var t,a,n,i="",r=0;rt&&r tag resolver accepts not "'+c+'" style');n=s.represent[c](t,c)}e.dump=n}return!0}return!1}function Q(e,t,a,n,i,r){e.tag=null,e.dump=a,X(e,a,!1)||X(e,a,!0);var o=p.call(e.dump);n&&(n=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===o||"[object Array]"===o;if(u&&(c=-1!==(s=e.duplicates.indexOf(a))),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&0 "+e.dump)}return!0}function ee(e,t){var a,n,i=[],r=[];for(function e(t,a,n){var i,r,o;if(null!==t&&"object"===(void 0===t?"undefined":u(t)))if(-1!==(r=a.indexOf(t)))-1===n.indexOf(r)&&n.push(r);else if(a.push(t),Array.isArray(t))for(r=0,o=t.length;rt)&&0!==n)z(e,"bad indentation of a sequence entry");else if(e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt)&&(G(e,t,x,!0,i)&&(h?m=e.result:d=e.result),h||(O(e,p,l,f,m,d,r,o),f=m=d=null),L(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)z(e,"bad indentation of a mapping entry");else if(e.lineIndentp&&(p=e.lineIndent),C(r))l++;else{if(e.lineIndent>10),56320+(c-65536&1023)),e.position++}else z(e,"unknown escape sequence");a=n=e.position}else C(s)?(M(e,a,n,!0),N(e,L(e,!1,t)),a=n=e.position):e.position===e.lineStart&&P(e)?z(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}z(e,"unexpected end of the stream within a double quoted scalar")}(e,l)?h=!0:!function(e){var t,a,n;if(42!==(n=e.input.charCodeAt(e.position)))return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!S(n)&&!k(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&z(e,"name of an alias node must contain at least one character"),a=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(a)||z(e,'unidentified alias "'+a+'"'),e.result=e.anchorMap[a],L(e,!0,-1),!0}(e)?function(e,t,a){var n,i,r,o,s,c,u,p,l=e.kind,f=e.result;if(S(p=e.input.charCodeAt(e.position))||k(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(S(n=e.input.charCodeAt(e.position+1))||a&&k(n)))return!1;for(e.kind="scalar",e.result="",i=r=e.position,o=!1;0!==p;){if(58===p){if(S(n=e.input.charCodeAt(e.position+1))||a&&k(n))break}else if(35===p){if(S(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&P(e)||a&&k(p))break;if(C(p)){if(s=e.line,c=e.lineStart,u=e.lineIndent,L(e,!1,-1),e.lineIndent>=t){o=!0,p=e.input.charCodeAt(e.position);continue}e.position=r,e.line=s,e.lineStart=c,e.lineIndent=u;break}}o&&(M(e,i,r,!1),N(e,e.line-s),i=r=e.position,o=!1),D(p)||(r=e.position+1),p=e.input.charCodeAt(++e.position)}return M(e,i,r,!1),!!e.result||(e.kind=l,e.result=f,!1)}(e,l,v===a)&&(h=!0,null===e.tag&&(e.tag="?")):(h=!0,null===e.tag&&null===e.anchor||z(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===m&&(h=s&&U(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(c=0,u=e.implicitTypes.length;c tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result)?(e.result=p.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):z(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):z(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||h}function K(e){var t,a,n,i,r=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(i=e.input.charCodeAt(e.position))&&(L(e,!0,-1),i=e.input.charCodeAt(e.position),!(0t/2-1){a=" ... ",n+=5;break}for(i="",r=this.position;rt/2-1){i=" ... ",r-=5;break}return o=this.buffer.slice(n,r),s.repeat(" ",e)+a+o+i+"\n"+s.repeat(" ",e+this.position-n+a.length)+"^"},n.prototype.toString=function(e){var t,a="";return this.name&&(a+='in "'+this.name+'" '),a+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(a+=":\n"+t),a},t.exports=n},{"./common":170}],175:[function(e,t,a){"use strict";var n=e("./common"),i=e("./exception"),r=e("./type");function o(e,t,n){var i=[];return e.include.forEach(function(e){n=o(e,t,n)}),e[t].forEach(function(a){n.forEach(function(e,t){e.tag===a.tag&&e.kind===a.kind&&i.push(t)}),n.push(a)}),n.filter(function(e,t){return-1===i.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new i("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=o(this,"implicit",[]),this.compiledExplicit=o(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,a={scalar:{},sequence:{},mapping:{},fallback:{}};function n(e){a[e.kind][e.tag]=a.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|r.indexOf(n.charAt(t));return 0==(a=i%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===a?(s.push(o>>10&255),s.push(o>>2&255)):12===a&&s.push(o>>4&255),c?c.from?c.from(s):new c(s):s},predicate:function(e){return c&&c.isBuffer(e)},represent:function(e){var t,a,n="",i=0,r=e.length,o=u;for(t=0;t>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]),i=(i<<8)+e[t];return 0==(a=r%3)?(n+=o[i>>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]):2===a?(n+=o[i>>10&63],n+=o[i>>4&63],n+=o[i<<2&63],n+=o[64]):1===a&&(n+=o[i>>2&63],n+=o[i<<4&63],n+=o[64],n+=o[64]),n}})},{"../type":181}],183:[function(e,t,a){"use strict";var n=e("../type");t.exports=new n("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":181}],184:[function(e,t,a){"use strict";var n=e("../common"),i=e("../type"),r=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var o=/^[-+]?[0-9]+e/;t.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!r.test(e)||"_"===e[e.length-1])},construct:function(e){var t,a,n,i;return a="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,i=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1===a?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){i.unshift(parseFloat(e,10))}),t=0,n=1,i.forEach(function(e){t+=e*n,n*=60}),a*t):a*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||n.isNegativeZero(e))},represent:function(e,t){var a;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(e))return"-0.0";return a=e.toString(10),o.test(a)?a.replace("e",".e"):a},defaultStyle:"lowercase"})},{"../common":170,"../type":181}],185:[function(e,t,a){"use strict";var n=e("../common"),i=e("../type");t.exports=new i("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,a,n,i,r=e.length,o=0,s=!1;if(!r)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===r)return!0;if("b"===(t=e[++o])){for(o++;or&&(a.maxLength=r),o&&a.minLengthi&&(s=s.substr(0,i))}return s},merge:g,clean:function t(a,e,n){return a&&"object"===(void 0===a?"undefined":d(a))?Array.isArray(a)?a=a.map(function(e){return t(e,!0,n)}).filter(function(e){return void 0!==e}):(Object.keys(a).forEach(function(e){n&&-1!==n.indexOf(e)?a[e]=t(a[e]):Array.isArray(a[e])&&!a[e].length&&delete a[e]}),Object.keys(a).length||!e?a:void 0):a},short:function(e){var t=JSON.stringify(e),a=JSON.stringify(e,null,2);return 400a.maximum?0:t.maximum,a.exclusiveMinimum=!0),void 0!==t.minLength&&(a.maxLength=t.minLength),void 0!==t.maxLength&&(a.minLength=t.maxLength>a.maxLength?0:t.maxLength),t.type)a.type=z.pick(m.ALL_TYPES.filter(function(e){return"number"===e||"integer"===e?"number"!==t.type&&"integer"!==t.type:e!==t.type}));else if(t.enum){do{var n=y()}while(-1!==t.enum.indexOf(n));a.enum=[n]}return t.required&&a.properties&&t.required.forEach(function(e){delete a.properties[e]}),a},anyValue:y,validate:function(t,e){return!e.every(function(e){return void 0!==e.minimum&&t>=e.minimum||void 0!==e.maximum&&t<=e.maximum||void 0})},isKey:function(e){return"enum"===e||"default"===e||"required"===e||"definitions"===e}},R=function(n){function e(e,t){var a=n.call(this)||this;return a.path=t,Error.captureStackTrace&&Error.captureStackTrace(a,a.constructor),a.name="ParseError",a.message=e,a.path=t,a}return i.__extends(e,n),e}(Error),v={array:["additionalItems","items","maxItems","minItems","uniqueItems"],integer:["exclusiveMaximum","exclusiveMinimum","maximum","minimum","multipleOf"],object:["additionalProperties","dependencies","maxProperties","minProperties","patternProperties","properties","required"],string:["maxLength","minLength","pattern"]};v.number=v.integer;var w=["additionalItems","items","additionalProperties","dependencies","patternProperties","properties"];function b(e,a,n){return 0t&&(a=a.substr(0,t)),a}function S(){return z.date().toISOString()}var k={email:"[a-zA-Z\\d][a-zA-Z\\d-]{1,13}[a-zA-Z\\d]@{hostname}",hostname:"[a-zA-Z]{1,33}\\.[a-z]{2,4}",ipv6:"[a-f\\d]{4}(:[a-f\\d]{4}){7}",uri:"https?://[a-zA-Z][a-zA-Z0-9+-.]*","uri-reference":"(https?://|#|/|)[a-zA-Z][a-zA-Z0-9+-.]*"};function F(e,t){var a,n=l(e.format);if("function"==typeof n)return n(e);switch(e.format){case"date-time":case"datetime":return S();case"date":return S().slice(0,10);case"time":return S().slice(11);case"ipv4":return[0,0,0,0].map(function(){return z.number(0,255)}).join(".");case"regex":return".+?";case"email":case"hostname":case"ipv6":case"uri":case"uri-reference":return a=e.format,z.randexp(k[a]).replace(/\{(\w+)\}/,function(e,t){return z.randexp(k[t])});default:if(void 0!==n)throw new Error('unsupported format "'+e.format+'"');if(_("failOnInvalidFormat"))throw new Error("unknown registry key "+B.short(e.format));return t()}}var O={boolean:x,null:A,array:function(e,n,i,r){var t=[];if(!e.items&&!e.additionalItems){if(B.hasProperties(e,"minItems","maxItems","uniqueItems"))throw new R("missing items for "+B.short(e),n);return t}var a=e.items;if(a instanceof Array)return Array.prototype.concat.call(t,a.map(function(e,t){var a=n.concat(["items",t+""]);return r(e,a,i)}));var o=e.minItems,s=e.maxItems;_("minItems")&&void 0===o&&(o=s?Math.min(_("minItems"),s):_("minItems")),_("maxItems")&&(s&&s>_("maxItems")&&(s=_("maxItems")),o&&o>_("maxItems")&&(o=s));for(var c=!0===_("alwaysFakeOptionals")?1:_("optionalsProbability"),u=null!=s&&c?Math.round(s*c):z.number(o,s,1,5),p="object"===d(e.additionalItems)?e.additionalItems:{},l=t.length;lg){var S=0;do{if(1e3<(S+=1))break;var k=z.pick(u)}while(void 0!==i[k]);void 0===i[k]&&(i[k]=r[k],D+=1)}else{var F=M(1)+z.randexp("[a-f\\d]{1,3}");i[F]||(i[F]=m||T,D+=1)}p.forEach(function(e){var t=z.randexp(e);i[t]||(i[t]=o[e],D+=1)})}if(!c&&Dc.redirects)n(m({status:e.statusCode},"Error downloading %s. \nToo many redirects: \n %s",u[0],u.join(" \n ")));else{if(!e.headers.location)throw m({status:e.statusCode},"HTTP %d redirect with no location header",e.statusCode);h("HTTP %d redirect %s -> %s",e.statusCode,s.href,e.headers.location);var t=d.resolve(s,e.headers.location);o(t,c,u).then(a,n)}else a(e.body||new p(0))}).catch(function(e){n(m(e,"Error downloading",s.href))})})}(t,this)}}}).call(this,e("_process"),e("buffer").Buffer)},{"../util/debug":215,"../util/url":217,_process:235,buffer:20,http:271,https:163,ono:230}],215:[function(e,t,a){"use strict";var n=e("debug");t.exports=n("json-schema-ref-parser")},{debug:24}],216:[function(e,t,a){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m=e("./debug");function d(e,t,a,n){var i=e[t];if("function"==typeof i)return i.apply(e,[a,n]);if(!n){if(i instanceof RegExp)return i.test(a.url);if("string"==typeof i)return i===a.extension;if(Array.isArray(i))return-1!==i.indexOf(a.extension)}return i}a.all=function(t){return Object.keys(t).filter(function(e){return"object"===n(t[e])}).map(function(e){return t[e].name=e,t[e]})},a.filter=function(e,t,a){return e.filter(function(e){return!!d(e,t,a)})},a.sort=function(e){return e.forEach(function(e){e.order=e.order||Number.MAX_SAFE_INTEGER}),e.sort(function(e,t){return e.order-t.order})},a.run=function(s,c,u){var p,l,f=0;return new Promise(function(t,a){function n(){if(!(p=s[f++]))return a(l);try{m(" %s",p.name);var e=d(p,c,u,i);e&&"function"==typeof e.then?e.then(r,o):void 0!==e&&r(e)}catch(e){o(e)}}function i(e,t){e?o(e):r(t)}function r(e){m(" success"),t({plugin:p,result:e})}function o(e){m(" %s",e.message||e),l=e,n()}n()})}},{"./debug":215}],217:[function(e,t,u){(function(a){"use strict";var i=/^win/.test(a.platform),r=/\//g,n=/^(\w{2,}):\/\//i,o=t.exports,s=[/\?/g,"%3F",/\#/g,"%23"],c=[/\%23/g,"#",/\%24/g,"$",/\%26/g,"&",/\%2C/g,",",/\%40/g,"@"];u.parse=e("url").parse,u.resolve=e("url").resolve,u.cwd=function(){return a.browser?location.href:a.cwd()+"/"},u.getProtocol=function(e){var t=n.exec(e);if(t)return t[1].toLowerCase()},u.getExtension=function(e){var t=e.lastIndexOf(".");return 0<=t?e.substr(t).toLowerCase():""},u.getHash=function(e){var t=e.indexOf("#");return 0<=t?e.substr(t):"#"},u.stripHash=function(e){var t=e.indexOf("#");return 0<=t&&(e=e.substr(0,t)),e},u.isHttp=function(e){var t=o.getProtocol(e);return"http"===t||"https"===t||void 0===t&&a.browser},u.isFileSystemPath=function(e){if(a.browser)return!1;var t=o.getProtocol(e);return void 0===t||"file"===t},u.fromFileSystemPath=function(e){i&&(e=e.replace(/\\/g,"/")),e=encodeURI(e);for(var t=0;t=a||(R.lastCommentStart=a,r={type:e,value:t},s.range&&(r.range=[a,n]),s.loc&&(r.loc=i),s.comments.push(r),s.attachComment&&(s.leadingComments.push(r),s.trailingComments.push(r)))}function v(e){var t,a,n,i;for(t=F-e,a={start:{line:p,column:F-l-e}};F<_;)if(n=S.charCodeAt(F),++F,h(n))return s.comments&&(i=S.slice(t+e,F-1),a.end={line:p,column:F-l-1},u("Line",i,t,F-1,a)),13===n&&10===S.charCodeAt(F)&&++F,++p,void(l=F);s.comments&&(i=S.slice(t+e,F),a.end={line:p,column:F-l},u("Line",i,t,F,a))}function w(){var e,t,a,n;for(s.comments&&(e=F-2,t={start:{line:p,column:F-l-2}});F<_;)if(h(a=S.charCodeAt(F)))13===a&&10===S.charCodeAt(F+1)&&++F,++p,_<=(l=++F)&&H({},D.UnexpectedToken,"ILLEGAL");else if(42===a){if(47===S.charCodeAt(F+1))return++F,++F,void(s.comments&&(n=S.slice(e+2,F-2),t.end={line:p,column:F-l},u("Block",n,e,F,t)));++F}else++F;H({},D.UnexpectedToken,"ILLEGAL")}function T(){var e,t,a;for(t=0===F;F<_;)if(e=S.charCodeAt(F),32===(a=e)||9===a||11===a||12===a||160===a||5760<=a&&0<=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(a))++F;else if(h(e))++F,13===e&&10===S.charCodeAt(F)&&++F,++p,l=F,t=!0;else if(47===e)if(47===(e=S.charCodeAt(F+1)))++F,++F,v(2),t=!0;else{if(42!==e)break;++F,++F,w()}else if(t&&45===e){if(45!==S.charCodeAt(F+1)||62!==S.charCodeAt(F+2))break;F+=3,v(3)}else{if(60!==e)break;if("!--"!==S.slice(F+1,F+4))break;++F,++F,++F,++F,v(4)}}function b(e){var t,a,n,i=0;for(a="u"===e?4:2,t=0;t>>="===(n=S.substr(F,4))?(F+=4,{type:j.Punctuator,value:n,lineNumber:p,lineStart:l,start:i,end:F}):">>>"===(a=n.substr(0,3))||"<<="===a||">>="===a?(F+=3,{type:j.Punctuator,value:a,lineNumber:p,lineStart:l,start:i,end:F}):o===(t=a.substr(0,2))[1]&&0<="+-<>&|".indexOf(o)||"=>"===t?(F+=2,{type:j.Punctuator,value:t,lineNumber:p,lineStart:l,start:i,end:F}):0<="<>=!+-*%&|^/".indexOf(o)?(++F,{type:j.Punctuator,value:o,lineNumber:p,lineStart:l,start:i,end:F}):void H({},D.UnexpectedToken,"ILLEGAL")}function O(){var e,t,a;if(f(r((a=S[F]).charCodeAt(0))||"."===a,"Numeric literal must start with a decimal digit or a decimal point"),t=F,e="","."!==a){if(e=S[F++],a=S[F],"0"===e){if("x"===a||"X"===a)return++F,function(e){for(var t="";F<_&&o(S[F]);)t+=S[F++];return 0===t.length&&H({},D.UnexpectedToken,"ILLEGAL"),M(S.charCodeAt(F))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseInt("0x"+t,16),lineNumber:p,lineStart:l,start:e,end:F}}(t);if(m(a))return function(e){for(var t="0"+S[F++];F<_&&m(S[F]);)t+=S[F++];return(M(S.charCodeAt(F))||r(S.charCodeAt(F)))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseInt(t,8),octal:!0,lineNumber:p,lineStart:l,start:e,end:F}}(t);a&&r(a.charCodeAt(0))&&H({},D.UnexpectedToken,"ILLEGAL")}for(;r(S.charCodeAt(F));)e+=S[F++];a=S[F]}if("."===a){for(e+=S[F++];r(S.charCodeAt(F));)e+=S[F++];a=S[F]}if("e"===a||"E"===a)if(e+=S[F++],"+"!==(a=S[F])&&"-"!==a||(e+=S[F++]),r(S.charCodeAt(F)))for(;r(S.charCodeAt(F));)e+=S[F++];else H({},D.UnexpectedToken,"ILLEGAL");return M(S.charCodeAt(F))&&H({},D.UnexpectedToken,"ILLEGAL"),{type:j.NumericLiteral,value:parseFloat(e),lineNumber:p,lineStart:l,start:t,end:F}}function I(){var e,t,a,n;return B=null,T(),e=F,t=function(){var e,t,a,n;for(f("/"===(e=S[F]),"Regular expression literal must start with a slash"),t=S[F++],n=a=!1;F<_;)if(t+=e=S[F++],"\\"===e)h((e=S[F++]).charCodeAt(0))&&H({},D.UnterminatedRegExp),t+=e;else if(h(e.charCodeAt(0)))H({},D.UnterminatedRegExp);else if(a)"]"===e&&(a=!1);else{if("/"===e){n=!0;break}"["===e&&(a=!0)}return n||H({},D.UnterminatedRegExp),{value:t.substr(1,t.length-2),literal:t}}(),a=function(){var e,t,a,n;for(a=t="";F<_&&c((e=S[F]).charCodeAt(0));)if(++F,"\\"===e&&F<_)if("u"===(e=S[F])){if(n=++F,e=b("u"))for(a+=e,t+="\\u";n":case"<=":case">=":case"instanceof":a=7;break;case"in":a=t?7:0;break;case"<<":case">>":case">>>":a=8;break;case"+":case"-":a=9;break;case"*":case"/":case"%":a=11}return a}function fe(){var e,t,a,n,i;return i=B,e=function(){var e,t,a,n,i,r,o,s,c,u;if(e=B,c=pe(),0===(i=le(n=B,R.allowIn)))return c;for(n.prec=i,U(),t=[e,B],r=[c,n,o=pe()];0<(i=le(B,R.allowIn));){for(;2>="!==r&&">>>="!==r&&"&="!==r&&"^="!==r&&"|="!==r||(ee(t)||J({},D.InvalidLHSInAssignment),k&&t.type===C.Identifier&&y(t.name)&&J(e,D.StrictLHSAssignment),e=U(),a=me(),n=z.markEnd(z.createAssignmentExpression(e.value,t,a),i)),n}function de(){var e,t=B;if(e=me(),Z(",")){for(e=z.createSequenceExpression([e]);F<_&&Z(",");)U(),e.expressions.push(me());z.markEnd(e,t)}return e}function he(){var e,t;return t=B,V("{"),e=function(){for(var e,t=[];F<_&&!Z("}")&&void 0!==(e=Ce());)t.push(e);return t}(),V("}"),z.markEnd(z.createBlockStatement(e),t)}function ge(){var e,t;return t=B,(e=U()).type!==j.Identifier&&W(e),z.markEnd(z.createIdentifier(e.value),t)}function ye(e){var t,a,n,i,r=[];do{if(r.push((t=e,i=n=a=void 0,i=null,n=B,a=ge(),k&&y(a.name)&&J({},D.StrictVarName),"const"===t?(V("="),i=me()):Z("=")&&(U(),i=me()),z.markEnd(z.createVariableDeclarator(a,i),n))),!Z(","))break;U()}while(F<_);return r}function ve(){var e,t,a,n,i,r,o,s,c,u;return e=t=a=null,Y("for"),V("("),Z(";")?U():(X("var")||X("let")?(R.allowIn=!1,u=B,s=U(),c=ye(),e=z.markEnd(z.createVariableDeclaration(c,s.value),u),R.allowIn=!0,1===e.declarations.length&&X("in")&&(U(),n=e,i=de(),e=null)):(R.allowIn=!1,e=de(),R.allowIn=!0,X("in")&&(ee(e)||J({},D.InvalidLHSInForIn),U(),n=e,i=de(),e=null)),void 0===n&&V(";")),void 0===n&&(Z(";")||(t=de()),V(";"),Z(")")||(a=de())),V(")"),o=R.inIteration,R.inIteration=!0,r=xe(),R.inIteration=o,void 0===n?z.createForStatement(e,t,a,r):z.createForInStatement(n,i,r)}function we(){var e,t,a,n=[];for(a=B,e=X("default")?(U(),null):(Y("case"),de()),V(":");F<_&&!(Z("}")||X("default")||X("case"));)t=xe(),n.push(t);return z.markEnd(z.createSwitchCase(e,n),a)}function be(){var e,t,a,n,i=[],r=null;return Y("try"),e=he(),X("catch")&&i.push((n=B,Y("catch"),V("("),Z(")")&&W(B),t=ge(),k&&y(t.name)&&J({},D.StrictCatchVariable),V(")"),a=he(),z.markEnd(z.createCatchClause(t,a),n))),X("finally")&&(U(),r=he()),0!==i.length||r||H({},D.NoCatchOrFinally),z.createTryStatement(e,[],i,r)}function xe(){var e,t,a,n,i,r,o,s,c,u,p,l,f,m,d,h,g,y,v,w,b,x,A,E=B.type;if(E===j.EOF&&W(B),E===j.Punctuator&&"{"===B.value)return he();if(n=B,E===j.Punctuator)switch(B.value){case";":return z.markEnd((V(";"),z.createEmptyStatement()),n);case"(":return z.markEnd((i=de(),Q(),z.createExpressionStatement(i)),n)}if(E===j.Keyword)switch(B.value){case"break":return z.markEnd((A=null,Y("break"),59===S.charCodeAt(F)?(U(),R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(null)):K()?(R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(null)):(B.type===j.Identifier&&(x="$"+(A=ge()).name,Object.prototype.hasOwnProperty.call(R.labelSet,x)||H({},D.UnknownLabel,A.name)),Q(),null!==A||R.inIteration||R.inSwitch||H({},D.IllegalBreak),z.createBreakStatement(A))),n);case"continue":return z.markEnd((b=null,Y("continue"),59===S.charCodeAt(F)?(U(),R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(null)):K()?(R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(null)):(B.type===j.Identifier&&(w="$"+(b=ge()).name,Object.prototype.hasOwnProperty.call(R.labelSet,w)||H({},D.UnknownLabel,b.name)),Q(),null!==b||R.inIteration||H({},D.IllegalContinue),z.createContinueStatement(b))),n);case"debugger":return z.markEnd((Y("debugger"),Q(),z.createDebuggerStatement()),n);case"do":return z.markEnd((Y("do"),v=R.inIteration,R.inIteration=!0,g=xe(),R.inIteration=v,Y("while"),V("("),y=de(),V(")"),Z(";")&&U(),z.createDoWhileStatement(g,y)),n);case"for":return z.markEnd(ve(),n);case"function":return z.markEnd(je(),n);case"if":return z.markEnd((Y("if"),V("("),m=de(),V(")"),d=xe(),h=X("else")?(U(),xe()):null,z.createIfStatement(m,d,h)),n);case"return":return z.markEnd((f=null,Y("return"),R.inFunctionBody||J({},D.IllegalReturn),32===S.charCodeAt(F)&&M(S.charCodeAt(F+1))?(f=de(),Q(),z.createReturnStatement(f)):K()?z.createReturnStatement(null):(Z(";")||Z("}")||B.type===j.EOF||(f=de()),Q(),z.createReturnStatement(f))),n);case"switch":return z.markEnd(function(){var e,t,a,n,i;if(Y("switch"),V("("),e=de(),V(")"),V("{"),t=[],Z("}"))return U(),z.createSwitchStatement(e,t);for(n=R.inSwitch,i=!(R.inSwitch=!0);F<_&&!Z("}");)null===(a=we()).test&&(i&&H({},D.MultipleDefaultsInSwitch),i=!0),t.push(a);return R.inSwitch=n,V("}"),z.createSwitchStatement(e,t)}(),n);case"throw":return z.markEnd((Y("throw"),K()&&H({},D.NewlineAfterThrow),l=de(),Q(),z.createThrowStatement(l)),n);case"try":return z.markEnd(be(),n);case"var":return z.markEnd((Y("var"),p=ye(),Q(),z.createVariableDeclaration(p,"var")),n);case"while":return z.markEnd((Y("while"),V("("),s=de(),V(")"),u=R.inIteration,R.inIteration=!0,c=xe(),R.inIteration=u,z.createWhileStatement(s,c)),n);case"with":return z.markEnd((k&&(T(),J({},D.StrictModeWith)),Y("with"),V("("),r=de(),V(")"),o=xe(),z.createWithStatement(r,o)),n)}return(e=de()).type===C.Identifier&&Z(":")?(U(),a="$"+e.name,Object.prototype.hasOwnProperty.call(R.labelSet,a)&&H({},D.Redeclaration,"Label",e.name),R.labelSet[a]=!0,t=xe(),delete R.labelSet[a],z.markEnd(z.createLabeledStatement(e,t),n)):(Q(),z.markEnd(z.createExpressionStatement(e),n))}function Ae(){var e,t,a,n,i,r,o,s,c=[];for(s=B,V("{");F<_&&B.type===j.StringLiteral&&(t=B,e=Ce(),c.push(e),e.expression.type===C.Literal);)"use strict"===S.slice(t.start+1,t.end-1)?(k=!0,a&&J(a,D.StrictOctalLiteral)):!a&&t.octal&&(a=t);for(n=R.labelSet,i=R.inIteration,r=R.inSwitch,o=R.inFunctionBody,R.labelSet={},R.inIteration=!1,R.inSwitch=!1,R.inFunctionBody=!0;F<_&&!Z("}")&&void 0!==(e=Ce());)c.push(e);return V("}"),R.labelSet=n,R.inIteration=i,R.inSwitch=r,R.inFunctionBody=o,z.markEnd(z.createBlockStatement(c),s)}function Ee(e){var t,a,n,i,r,o,s=[];if(V("("),!Z(")"))for(i={};F<_&&(a=B,t=ge(),r="$"+a.value,k?(y(a.value)&&(n=a,o=D.StrictParamName),Object.prototype.hasOwnProperty.call(i,r)&&(n=a,o=D.StrictParamDupe)):e||(y(a.value)?(e=a,o=D.StrictParamName):g(a.value)?(e=a,o=D.StrictReservedWord):Object.prototype.hasOwnProperty.call(i,r)&&(e=a,o=D.StrictParamDupe)),s.push(t),i[r]=!0,!Z(")"));)V(",");return V(")"),{params:s,stricted:n,firstRestricted:e,message:o}}function je(){var e,t,a,n,i,r,o,s,c,u;return u=B,Y("function"),n=B,e=ge(),k?y(n.value)&&J(n,D.StrictFunctionName):y(n.value)?(o=n,s=D.StrictFunctionName):g(n.value)&&(o=n,s=D.StrictReservedWord),t=(r=Ee(o)).params,i=r.stricted,o=r.firstRestricted,r.message&&(s=r.message),c=k,a=Ae(),k&&o&&H(o,s),k&&i&&J(i,s),k=c,z.markEnd(z.createFunctionDeclaration(e,t,[],a),u)}function Ce(){if(B.type===j.Keyword)switch(B.value){case"const":case"let":return e=B.value,a=B,Y(e),t=ye(e),Q(),z.markEnd(z.createVariableDeclaration(t,e),a);case"function":return je();default:return xe()}var e,t,a;if(B.type!==j.EOF)return xe()}function De(){var e,t;return T(),q(),t=B,k=!1,e=function(){for(var e,t,a,n=[];F<_&&(t=B).type===j.StringLiteral&&(e=Ce(),n.push(e),e.expression.type===C.Literal);)"use strict"===S.slice(t.start+1,t.end-1)?(k=!0,a&&J(a,D.StrictOctalLiteral)):!a&&t.octal&&(a=t);for(;F<_&&void 0!==(e=Ce());)n.push(e);return n}(),z.markEnd(z.createProgram(e),t)}function Se(){var e,t,a,n=[];for(e=0;e",n[j.Identifier]="Identifier",n[j.Keyword]="Keyword",n[j.NullLiteral]="Null",n[j.NumericLiteral]="Numeric",n[j.Punctuator]="Punctuator",n[j.StringLiteral]="String",n[j.RegularExpression]="RegularExpression",a=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],C={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},d={Data:1,Get:2,Set:4},D={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},t={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},i={name:"SyntaxTree",processComment:function(e){var t,a;if(!(e.type===C.Program&&0=e.range[1]?(a=s.trailingComments,s.trailingComments=[]):s.trailingComments.length=0:0=e.range[1]&&(a=s.bottomRightStack[s.bottomRightStack.length-1].trailingComments,delete s.bottomRightStack[s.bottomRightStack.length-1].trailingComments);0=e.range[0];)t=s.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):0t[0].length)){if(t=a,n=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(a,i[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return 0 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};i.readFileSync&&(r.moduleInclude=i.readFileSync(e.resolve("../include/module.js")),r.actionInclude=i.readFileSync(e.resolve("../include/action.js"))),t.exports=r},{"./dict":222,fs:18}],224:[function(s,e,t){"use strict";var c=s("./aesprim"),i=s("./slice"),a=s("static-eval"),n=s("underscore").uniq,r=function(){return this.initialize.apply(this,arguments)};function o(t,e,a){var n=s("./index"),i=m(c.parse(e).body[0].expression,{"@":t.value}),r=a.replace(/\{\{\s*value\s*\}\}/g,i),o=n.nodes(t.value,r);return o.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),o}function u(e){return Array.isArray(e)}function p(c){return function(e,n,i,r){var t=e.value,a=e.path,o=[],s=function(t,a){var e;u(t)?(t.forEach(function(e,t){o.length>=r||i(t,e,n)&&o.push({path:a.concat(t),value:e})}),t.forEach(function(e,t){o.length>=r||c&&s(e,a.concat(t))})):(e=t)&&!(e instanceof Array)&&e instanceof Object&&(this.keys(t).forEach(function(e){o.length>=r||i(e,t[e],n)&&o.push({path:a.concat(e),value:t[e]})}),this.keys(t).forEach(function(e){o.length>=r||c&&s(t[e],a.concat(e))}))}.bind(this);return s(t,a),o}}function l(n){return function(e,t,a){return this.descend(t,e.expression.value,n,a)}}function f(n){return function(e,t,a){return this.traverse(t,e.expression.value,n,a)}}function m(){try{return a.apply(this,arguments)}catch(e){}}function d(e){return e=e.filter(function(e){return e}),n(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function h(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}r.prototype.initialize=function(){this.traverse=p(!0),this.descend=p()},r.prototype.keys=Object.keys,r.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),a=this._fns[t];if(!a)throw new Error("couldn't resolve key: "+t);return a.bind(this)},r.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},(r.prototype._fns={"member-child-identifier":function(e,t){var a=e.expression.value,n=t.value;if(n instanceof Object&&a in n)return[{value:n[a],path:t.path.concat(a)}]},"member-descendant-identifier":f(function(e,t,a){return e==a}),"subscript-child-numeric_literal":l(function(e,t,a){return e===a}),"member-child-numeric_literal":l(function(e,t,a){return String(e)===String(a)}),"subscript-descendant-numeric_literal":f(function(e,t,a){return e===a}),"member-child-wildcard":l(function(){return!0}),"member-descendant-wildcard":f(function(){return!0}),"subscript-descendant-wildcard":f(function(){return!0}),"subscript-child-wildcard":l(function(){return!0}),"subscript-child-slice":function(e,a){if(u(a.value)){var t=e.expression.value.split(":").map(h),n=a.value.map(function(e,t){return{value:e,path:a.path.concat(t)}});return i.apply(null,[n].concat(t))}},"subscript-child-union":function(e,n){var i=[];return e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},a=this.resolve(t)(t,n);a&&(i=i.concat(a))},this),d(i)},"subscript-descendant-union":function(e,t,a){var n=s(".."),i=this,r=[];return n.nodes(t,"$..*").slice(1).forEach(function(n){r.length>=a||e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},a=i.resolve(t)(t,n);r=r.concat(a)})}),d(r)},"subscript-child-filter_expression":function(e,t,a){var n=e.expression.value.slice(2,-1),i=c.parse(n).body[0].expression;return this.descend(t,null,function(e,t){return m(i,{"@":t})},a)},"subscript-descendant-filter_expression":function(e,t,a){var n=e.expression.value.slice(2,-1),i=c.parse(n).body[0].expression;return this.traverse(t,null,function(e,t){return m(i,{"@":t})},a)},"subscript-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$..value")}})["subscript-child-string_literal"]=r.prototype._fns["member-child-identifier"],r.prototype._fns["member-descendant-numeric_literal"]=r.prototype._fns["subscript-descendant-string_literal"]=r.prototype._fns["member-descendant-identifier"],e.exports=r},{"..":221,"./aesprim":219,"./index":225,"./slice":227,"static-eval":255,underscore:281}],225:[function(e,t,a){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=e("assert"),i=e("./dict"),n=e("./parser"),r=e("./handlers"),s=function(){this.initialize.apply(this,arguments)};function c(e){return"[object String]"==Object.prototype.toString.call(e)}s.prototype.initialize=function(){this.parser=new n,this.handlers=new r},s.prototype.parse=function(e){return l.ok(c(e),"we need a path"),this.parser.parse(e)},s.prototype.parent=function(e,t){l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path");var a=this.nodes(e,t)[0];a.path.pop();return this.value(e,a.path)},s.prototype.apply=function(i,e,r){l.ok(i instanceof Object,"obj needs to be an object"),l.ok(e,"we need a path"),l.equal(void 0===r?"undefined":o(r),"function","fn needs to be function");var t=this.nodes(i,e).sort(function(e,t){return t.path.length-e.path.length});return t.forEach(function(e){var t=e.path.pop(),a=this.value(i,this.stringify(e.path)),n=e.value=r.call(i,a[t]);a[t]=n},this),t},s.prototype.value=function(e,t,a){if(l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),3<=arguments.length){var n=this.nodes(e,t).shift();if(!n)return this._vivify(e,t,a);var i=n.path.slice(-1).shift();this.parent(e,this.stringify(n.path))[i]=a}return this.query(e,this.stringify(t),1).shift()},s.prototype._vivify=function(r,e,t){var o=this;l.ok(r instanceof Object,"obj needs to be an object"),l.ok(e,"we need a path");return function e(t,a){var n=t.pop(),i=o.value(r,t);i||(e(t.concat(),"string"==typeof n?{}:[]),i=o.value(r,t)),i[n]=a}(this.parser.parse(e).map(function(e){return e.expression.value}),t),this.query(r,e)[0]},s.prototype.query=function(e,t,a){return l.ok(e instanceof Object,"obj needs to be an object"),l.ok(c(t),"we need a path"),this.nodes(e,t,a).map(function(e){return e.value})},s.prototype.paths=function(e,t,a){return l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),this.nodes(e,t,a).map(function(e){return e.path})},s.prototype.nodes=function(e,t,o){if(l.ok(e instanceof Object,"obj needs to be an object"),l.ok(t,"we need a path"),0===o)return[];var s=this.parser.parse(t),c=this.handlers,u=[{path:["$"],value:e}],p=[];return s.length&&"root"==s[0].expression.type&&s.shift(),s.length?(s.forEach(function(a,n){if(!(p.length>=o)){var i=c.resolve(a),r=[];u.forEach(function(e){if(!(p.length>=o)){var t=i(a,e,o);n==s.length-1?p=p.concat(t||[]):r=r.concat(t||[])}}),u=r}}),o?p.slice(0,o):p):u},s.prototype.stringify=function(e){l.ok(e,"we need a path");var i="$",r={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return(e=this._normalize(e)).forEach(function(e){if("root"!=e.expression.type){var t,a=[e.scope,e.operation].join("-"),n=r[a];if(t="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!n)throw new Error("couldn't find template "+a);i+=n.replace(/{{value}}/,t)}}),i},s.prototype._normalize=function(e){if(l.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var n=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,t){if("$"!=e||0!==t)if("string"==typeof e&&e.match("^"+i.identifier+"$"))n.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var a="number"==typeof e?"numeric_literal":"string_literal";n.push({operation:"subscript",scope:"child",expression:{value:e,type:a}})}}),n}if(Array.isArray(e)&&"object"==o(e[0]))return e;throw new Error("couldn't understand path "+e)},s.Handlers=r,s.Parser=n;var u=new s;u.JSONPath=s,t.exports=u},{"./dict":222,"./handlers":224,"./parser":226,assert:12}],226:[function(e,t,a){"use strict";var n=e("./grammar"),i=e("../generated/parser"),r=function(){var e=new i.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};r.grammar=n,t.exports=r},{"../generated/parser":220,"./grammar":223}],227:[function(e,t,a){"use strict";function s(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,a,n){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof a)throw new Error("end cannot be a string");if("string"==typeof n)throw new Error("step cannot be a string");var i=e.length;if(0===n)throw new Error("step cannot be zero");if(n=n?s(n):1,a=a<0?i+a:a,t=s(0===(t=t<0?i+t:t)?0:t||(0t.highWaterMark&&(t.highWaterMark=(h<=(a=e)?a=h:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var a}function A(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(b("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?y.nextTick(E,e):E(e))}function E(e){b("emit readable"),e.emit("readable"),k(e)}function j(e,t){t.readingMore||(t.readingMore=!0,y.nextTick(C,e,t))}function C(e,t){for(var a=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(a=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):a=function(e,t,a){var n;er.length?r.length:e;if(o===r.length?i+=r:i+=r.slice(0,e),0===(e-=o)){o===r.length?(++n,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a).data=r.slice(o);break}++n}return t.length-=n,i}(e,t):function(e,t){var a=u.allocUnsafe(e),n=t.head,i=1;n.data.copy(a),e-=n.data.length;for(;n=n.next;){var r=n.data,o=e>r.length?r.length:e;if(r.copy(a,a.length-e,0,o),0===(e-=o)){o===r.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=r.slice(o);break}++i}return t.length-=i,a}(e,t);return n}(e,t.buffer,t.decoder),a);var a}function _(e){var t=e._readableState;if(0=t.highWaterMark||t.ended))return b("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?_(this):A(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&_(this),null;var n,i=t.needReadable;return b("need readable",i),(0===t.length||t.length-e>>0),r=this.head,o=0;r;)t=r.data,a=i,n=o,t.copy(a,n),o+=r.data.length,r=r.next;return i},e}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":254,util:17}],246:[function(e,t,a){"use strict";var r=e("process-nextick-args");function o(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var a=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(o,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(r.nextTick(o,a,e),a._writableState&&(a._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":234}],247:[function(e,t,a){"use strict";t.exports=e("events").EventEmitter},{events:38}],248:[function(e,t,a){"use strict";(((a=t.exports=e("./lib/_stream_readable.js")).Stream=a).Readable=a).Writable=e("./lib/_stream_writable.js"),a.Duplex=e("./lib/_stream_duplex.js"),a.Transform=e("./lib/_stream_transform.js"),a.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":240,"./lib/_stream_passthrough.js":241,"./lib/_stream_readable.js":242,"./lib/_stream_transform.js":243,"./lib/_stream_writable.js":244}],249:[function(e,t,a){"use strict";var y=e("./util"),v=e("./types"),w=e("./sets"),b=e("./positions");t.exports=function(t){var e,a,n=0,i={type:v.ROOT,stack:[]},r=i,o=i.stack,s=[],c=function(e){y.error(t,"Nothing to repeat at column "+(e-1))},u=y.strToChars(t);for(e=u.length;n"===p?u="===p?u<=o:"|"===p?o|u:"&"===p?o&u:"^"===p?o^u:"&&"===p?o&&u:"||"===p?o||u:D}if("Identifier"===t.type)return{}.hasOwnProperty.call(C,t.name)?C[t.name]:D;if("ThisExpression"===t.type)return{}.hasOwnProperty.call(C,"this")?C.this:D;if("CallExpression"===t.type){var l=e(t.callee);if(l===D)return D;if("function"!=typeof l)return D;var f=t.callee.object?e(t.callee.object):D;f===D&&(f=null);var m=[];for(r=0,o=t.arguments.length;r":c.Relational,"<=":c.Relational,">=":c.Relational,in:c.Relational,instanceof:c.Relational,"<<":c.BitwiseSHIFT,">>":c.BitwiseSHIFT,">>>":c.BitwiseSHIFT,"+":c.Additive,"-":c.Additive,"*":c.Multiplicative,"%":c.Multiplicative,"/":c.Multiplicative};var k=7,F=1;function _(e,t){var a="";for(t|=0;0>>=1,e+=e)1&t&&(a+=e);return a}function z(e){var t=e.length;return t&&h.code.isLineTerminator(e.charCodeAt(t-1))}function n(e,t){var a;for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a]);return e}function B(e,t){var a,n;function i(e){return"object"===(void 0===e?"undefined":X(e))&&e instanceof Object&&!(e instanceof RegExp)}for(a in t)t.hasOwnProperty(a)&&(i(n=t[a])?i(e[a])?B(e[a],n):e[a]=B({},n):e[a]=n);return e}function R(e,t){return 8232==(-2&e)?(t?"u":"\\u")+(8232===e?"2028":"2029"):10===e||13===e?(t?"":"\\")+(10===e?"n":"r"):String.fromCharCode(e)}function M(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function T(e,t){if(!C)return Array.isArray(e)?function e(t){var a,n,i,r="";for(a=0,n=t.length;a")),e.expression?(t.push(l),"{"===(a=this.generateExpression(e.body,c.Assignment,k)).toString().charAt(0)&&(a=["(",a,")"]),t.push(a)):t.push(this.maybeBlock(e.body,9)),t},K.prototype.generateIterationForStatement=function(e,t,a){var n=["for"+l+(t.await?"await"+l:"")+"("],i=this;return P(function(){t.left.type===d.VariableDeclaration?P(function(){n.push(t.left.kind+O()),n.push(i.generateStatement(t.left.declarations[0],0))}):n.push(i.generateExpression(t.left,c.Call,k)),n=[I(n=I(n,e),i.generateExpression(t.right,c.Sequence,k)),")"]}),n.push(this.maybeBlock(t.body,a)),n},K.prototype.generatePropertyKey=function(e,t){var a=[];return t&&a.push("["),a.push(this.generateExpression(e,c.Sequence,k)),t&&a.push("]"),a},K.prototype.generateAssignment=function(e,t,a,n,i){return c.Assignment=4.0"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.6.1"},repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.11.0"}},{}],258:[function(s,e,t){"use strict";var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function e(t){var a,g,c,n,i,o,y,v,w;function u(e){var t,a,n={};for(t in e)e.hasOwnProperty(t)&&("object"===(void 0===(a=e[t])?"undefined":f(a))&&null!==a?n[t]=u(a):n[t]=a);return n}function b(e,t){this.parent=e,this.key=t}function x(e,t,a,n){this.node=e,this.path=t,this.wrap=a,this.ref=n}function r(){}function A(e){return null!=e&&("object"===(void 0===e?"undefined":f(e))&&"string"==typeof e.type)}function E(e,t){return(e===a.ObjectExpression||e===a.ObjectPattern)&&"properties"===t}function p(e,t){return(new r).traverse(e,t)}function l(t,e){var a;return a=function(e,t){var a,n,i,r;for(n=e.length,i=0;n;)t(e[r=i+(a=n>>>1)])?n=a:(i=r+1,n-=a+1);return i}(e,function(e){return e.range[0]>t.range[0]}),t.extendedRange=[t.range[0],t.range[1]],a!==e.length&&(t.extendedRange[1]=e[a].range[0]),0<=(a-=1)&&(t.extendedRange[0]=e[a].range[1]),t}return(g=Array.isArray)||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),i=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}(),o=Object.keys||function(e){var t,a=[];for(t in e)a.push(t);return a},a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},n={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},c={Break:y={},Skip:v={},Remove:w={}},b.prototype.replace=function(e){this.parent[this.key]=e},b.prototype.remove=function(){return g(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},r.prototype.path=function(){var e,t,a,n,i;function r(e,t){if(g(t))for(a=0,n=t.length;ae.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),s.splice(o,1)):o+=1;return o===s.length?c.Break:s[o].extendedRange[0]>e.range[1]?c.Skip:void 0}}),o=0,p(e,{leave:function(e){for(var t;oe.range[1]?c.Skip:void 0}}),e},t.VisitorKeys=n,t.VisitorOption=c,t.Controller=r,t.cloneEnvironment=function(){return e({})},t}(t)},{"./package.json":259}],259:[function(e,t,a){t.exports={_from:"estraverse@^4.2.0",_id:"estraverse@4.2.0",_inBundle:!1,_integrity:"sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",_location:"/static-eval/estraverse",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"estraverse@^4.2.0",name:"estraverse",escapedName:"estraverse",rawSpec:"^4.2.0",saveSpec:null,fetchSpec:"^4.2.0"},_requiredBy:["/static-eval/escodegen"],_resolved:"https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",_shasum:"0dee3fed31fcd469618ce7342099fc1afa0bdb13",_spec:"estraverse@^4.2.0",_where:"/Users/jcwhitlock/development/sway/node_modules/static-eval/node_modules/escodegen",bugs:{url:"https://github.com/estools/estraverse/issues"},bundleDependencies:!1,deprecated:!1,description:"ECMAScript JS AST traversal functions",devDependencies:{"babel-preset-es2015":"^6.3.13","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.2.1",jshint:"^2.5.6",mocha:"^2.1.0"},engines:{node:">=0.10.0"},homepage:"https://github.com/estools/estraverse",license:"BSD-2-Clause",main:"estraverse.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"estraverse",repository:{type:"git",url:"git+ssh://git@github.com/estools/estraverse.git"},scripts:{lint:"jshint estraverse.js",test:"npm run-script lint && npm run-script unit-test","unit-test":"mocha --compilers js:babel-register"},version:"4.2.0"}},{}],260:[function(e,t,a){"use strict";var r=e("./util"),o=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function c(){this._array=[],this._set=s?new Map:Object.create(null)}c.fromArray=function(e,t){for(var a=new c,n=0,i=e.length;n>>=5)&&(t|=32),n+=p.encode(t),0>1,1==(1&r)?-o:o),a.rest=t}},{"./base64":262}],262:[function(e,t,a){"use strict";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");a.encode=function(e){if(0<=e&&e=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},m.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var a=this._findSourceIndex(e);if(0<=a)return this.sourcesContent[a];var n,i=e;if(null!=this.sourceRoot&&(i=w.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(n=w.urlParse(this.sourceRoot))){var r=i.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},m.prototype.generatedPositionFor=function(e){var t=w.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var a={source:t,originalLine:w.getArg(e,"line"),originalColumn:w.getArg(e,"column")},n=this._findMapping(a,this._originalMappings,"originalLine","originalColumn",w.compareByOriginalPositions,w.getArg(e,"bias",o.GREATEST_LOWER_BOUND));if(0<=n){var i=this._originalMappings[n];if(i.source===a.source)return{line:w.getArg(i,"generatedLine",null),column:w.getArg(i,"generatedColumn",null),lastColumn:w.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},a.BasicSourceMapConsumer=m,(n.prototype=Object.create(o.prototype)).constructor=o,n.prototype._version=3,Object.defineProperty(n.prototype,"sources",{get:function(){for(var e=[],t=0;tt._pos){var n=a.substr(t._pos);if("x-user-defined"===t._charset){for(var i=new l(n.length),r=0;rt._pos&&(t.push(new l(new Uint8Array(o.result.slice(t._pos)))),t._pos=o.result.byteLength)},o.onload=function(){t.push(null)},o.readAsArrayBuffer(a)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},a("buffer").Buffer)},{"./capability":272,_process:235,buffer:20,inherits:165,"readable-stream":248}],275:[function(e,t,a){"use strict";var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=p,this.end=l,t=3;break;default:return this.write=f,void(this.end=m)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,a=function(e,t,a){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1o[0]&&t[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}}},f=function(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,i,r=a.call(e),o=[];try{for(;(void 0===t||0>>1;a(e[s])":">",'"':""","'":"'","`":"`"},x=m.invert(b),A=function(t){var a=function(e){return t[e]},e="(?:"+m.keys(t).join("|")+")",n=RegExp(e),i=RegExp(e,"g");return function(e){return e=null==e?"":""+e,n.test(e)?e.replace(i,a):e}};m.escape=A(b),m.unescape=A(x),m.result=function(e,t){if(null!=e){var a=e[t];return m.isFunction(a)?e[t]():a}};var E=0;m.uniqueId=function(e){var t=++E+"";return e?e+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var j=/(.)^/,C={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,S=function(e){return"\\"+C[e]};m.template=function(r,e,t){!e&&t&&(e=t),e=m.defaults({},e,m.templateSettings);var a=RegExp([(e.escape||j).source,(e.interpolate||j).source,(e.evaluate||j).source].join("|")+"|$","g"),o=0,s="__p+='";r.replace(a,function(e,t,a,n,i){return s+=r.slice(o,i).replace(D,S),o=i+e.length,t?s+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":a?s+="'+\n((__t=("+a+"))==null?'':__t)+\n'":n&&(s+="';\n"+n+"\n__p+='"),e}),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var n=new Function(e.variable||"obj","_",s)}catch(e){throw e.source=s,e}var i=function(e){return n.call(this,e,m)},c=e.variable||"obj";return i.source="function("+c+"){\n"+s+"}",i},m.chain=function(e){var t=m(e);return t._chain=!0,t};var k=function(e){return this._chain?m(e).chain():e};m.mixin=function(a){m.each(m.functions(a),function(e){var t=m[e]=a[e];m.prototype[e]=function(){var e=[this._wrapped];return s.apply(e,arguments),k.call(this,t.apply(m,e))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var a=n[t];m.prototype[t]=function(){var e=this._wrapped;return a.apply(e,arguments),"shift"!==t&&"splice"!==t||0!==e.length||delete e[0],k.call(this,e)}}),m.each(["concat","join","slice"],function(e){var t=n[e];m.prototype[e]=function(){return k.call(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped}}).call(this)},{}],282:[function(e,t,a){"use strict";var R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M=e("punycode"),T=e("./util");function S(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}a.parse=r,a.resolve=function(e,t){return r(e,!1,!0).resolve(t)},a.resolveObject=function(e,t){return e?r(e,!1,!0).resolveObject(t):t},a.format=function(e){T.isString(e)&&(e=r(e));return e instanceof S?e.format():S.prototype.format.call(e)},a.Url=S;var O=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,I=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,i=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),L=["'"].concat(i),P=["%","/","?",";","#"].concat(L),N=["/","?","#"],U=/^[+a-z0-9A-Z_-]{0,63}$/,q=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,$={javascript:!0,"javascript:":!0},G={javascript:!0,"javascript:":!0},K={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},H=e("querystring");function r(e,t,a){if(e&&T.isObject(e)&&e instanceof S)return e;var n=new S;return n.parse(e,t,a),n}S.prototype.parse=function(e,t,a){if(!T.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+(void 0===e?"undefined":R(e)));var n=e.indexOf("?"),i=-1!==n&&n>16&255,i[o++]=t>>8&255,i[o++]=255&t;var c,l;2===r&&(t=p[e.charCodeAt(u)]<<2|p[e.charCodeAt(u+1)]>>4,i[o++]=255&t);1===r&&(t=p[e.charCodeAt(u)]<<10|p[e.charCodeAt(u+1)]<<4|p[e.charCodeAt(u+2)]>>2,i[o++]=t>>8&255,i[o++]=255&t);return i},n.fromByteArray=function(e){for(var t,n=e.length,a=n%3,r=[],i=0,o=n-a;i>2]+s[t<<4&63]+"==")):2===a&&(t=(e[n-2]<<8)+e[n-1],r.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return r.join("")};for(var s=[],p=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=0,i=a.length;r>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r]);return i.join("")}p["-".charCodeAt(0)]=62,p["_".charCodeAt(0)]=63},{}],17:[function(e,t,n){},{}],18:[function(e,t,n){},{}],19:[function(e,R,B){(function(z){"use strict";var O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e){var t="object"==(void 0===B?"undefined":O(B))&&B&&!B.nodeType&&B,n="object"==(void 0===R?"undefined":O(R))&&R&&!R.nodeType&&R,a="object"==(void 0===z?"undefined":O(z))&&z;a.global!==a&&a.window!==a&&a.self!==a||(e=a);var r,i,y=2147483647,v=36,b=1,w=26,o=38,s=700,x=72,E=128,_="-",u=/^xn--/,c=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,p={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=v-b,A=Math.floor,S=String.fromCharCode;function C(e){throw new RangeError(p[e])}function d(e,t){for(var n=e.length,a=[];n--;)a[n]=t(e[n]);return a}function m(e,t){var n=e.split("@"),a="";return 1>>10&1023|55296),e=56320|1023&e),t+=S(e)}).join("")}function k(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function F(e,t,n){var a=0;for(e=n?A(e/s):e>>1,e+=A(e/t);f*w>>1A((y-m)/o))&&C("overflow"),m+=u*o,!(u<(c=s<=g?b:g+w<=s?w:s-g));s+=v)o>A(y/(l=v-c))&&C("overflow"),o*=l;g=F(m-i,t=f.length+1,0==i),A(m/t)>y-h&&C("overflow"),h+=A(m/t),m%=t,f.splice(m++,0,h)}return D(f)}function g(e){var t,n,a,r,i,o,s,u,c,l,p,f,d,m,h,g=[];for(f=(e=j(e)).length,t=E,i=x,o=n=0;oA((y-n)/(d=a+1))&&C("overflow"),n+=(s-t)*d,t=s,o=0;oy&&C("overflow"),p==t){for(u=n,c=v;!(u<(l=c<=i?b:i+w<=c?w:c-i));c+=v)h=u-l,m=v-l,g.push(S(k(l+h%m,0))),u=A(h/m);g.push(S(k(u,0))),i=F(n,d,a==r),n=0,++a}++n,++t}return g.join("")}if(r={version:"1.4.1",ucs2:{decode:j,encode:D},decode:h,encode:g,toASCII:function(e){return m(e,function(e){return c.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return m(e,function(e){return u.test(e)?h(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==O(define.amd)&&define.amd)define("punycode",function(){return r});else if(t&&n)if(R.exports==t)n.exports=r;else for(i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);else e.punycode=r}(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,n){"use strict";var p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=e("base64-js"),i=e("ieee754");n.Buffer=f,n.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},n.INSPECT_MAX_BYTES=50;var r=2147483647;function o(e){if(r>>1;case"base64":return T(e).length;default:if(r)return a?-1:B(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var a=e[t];e[t]=e[n],e[n]=a}function g(e,t,n,a,r){if(0===e.length)return-1;if("string"==typeof n?(a=n,n=0):2147483647=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=f.from(t,a)),f.isBuffer(t))return 0===t.length?-1:y(e,t,n,a,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,a,r);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,a,r){var i,o=1,s=e.length,u=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;s/=o=2,u/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){var l=-1;for(i=n;i>>10&1023|55296),l=56320|1023&l),a.push(l),r+=p}return function(e){var t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);var n="",a=0;for(;athis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return S(this,t,n);case"utf8":case"utf-8":return x(this,t,n);case"ascii":return _(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return w(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,n);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},f.prototype.compare=function(e,t,n,a,r){if(M(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(void 0===e?"undefined":p(e)));if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===a&&(a=0),void 0===r&&(r=this.length),t<0||n>e.length||a<0||r>this.length)throw new RangeError("out of range index");if(r<=a&&n<=t)return 0;if(r<=a)return-1;if(n<=t)return 1;if(this===e)return 0;for(var i=(r>>>=0)-(a>>>=0),o=(n>>>=0)-(t>>>=0),s=Math.min(i,o),u=this.slice(a,r),c=e.slice(t,n),l=0;l>>=0,isFinite(n)?(n>>>=0,void 0===a&&(a="utf8")):(a=n,n=void 0)}var r=this.length-t;if((void 0===n||rthis.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i,o,s,u,c,l,p,f,d,m=!1;;)switch(a){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return f=t,d=n,I(B(e,(p=this).length-f),p,f,d);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,l=n,I(T(e),u,c,l);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=t,s=n,I(function(e,t){for(var n,a,r,i=[],o=0;o>8,r=n%256,i.push(r),i.push(a);return i}(e,(i=this).length-o),i,o,s);default:if(m)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),m=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var E=4096;function _(e,t,n){var a="";n=Math.min(e.length,n);for(var r=t;re.length)throw new RangeError("Index out of range")}function k(e,t,n,a,r,i){if(n+a>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(e,t,n,a,r){return t=+t,n>>>=0,r||k(e,0,n,4),i.write(e,t,n,a,23,4),n+4}function z(e,t,n,a,r){return t=+t,n>>>=0,r||k(e,0,n,8),i.write(e,t,n,a,52,8),n+8}f.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):n>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e],r=1,i=0;++i>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e+--t],r=1;0>>=0,t||j(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e],r=1,i=0;++i>>=0,t>>>=0,n||j(e,t,this.length);for(var a=t,r=1,i=this[e+--a];0>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),i.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),i.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),i.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),i.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,n,a){(e=+e,t>>>=0,n>>>=0,a)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,a)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var r=n-1,i=1;for(this[t+r]=255&e;0<=--r&&(i*=256);)this[t+r]=e/i&255;return t+n},f.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,n,a){if(e=+e,t>>>=0,!a){var r=Math.pow(2,8*n-1);D(this,e,t,n,r-1,-r)}var i=0,o=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},f.prototype.writeIntBE=function(e,t,n,a){if(e=+e,t>>>=0,!a){var r=Math.pow(2,8*n-1);D(this,e,t,n,r-1,-r)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;0<=--i&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},f.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,n){return F(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){return F(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){return z(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){return z(this,e,t,!1,n)},f.prototype.copy=function(e,t,n,a){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),0=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function T(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function I(e,t,n,a){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function M(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function P(e){return e!=e}},{"base64-js":16,ieee754:185}],21:[function(e,t,n){"use strict";t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],22:[function(e,a,t){(function(e,t){"use strict";var n=t.process&&e.nextTick||t.setImmediate||function(e){setTimeout(e,0)};a.exports=function(t,e){return t?void e.then(function(e){n(function(){t(null,e)})},function(e){n(function(){t(e)})}):e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:264}],23:[function(e,t,n){"use strict";function a(e){if(e)return function(e){for(var t in a.prototype)e[t]=a.prototype[t];return e}(e)}void 0!==t&&(t.exports=a),a.prototype.on=a.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},a.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},a.prototype.off=a.prototype.removeListener=a.prototype.removeAllListeners=a.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,a=this._callbacks["$"+e];if(!a)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;re.high)}},{key:"touches",value:function(e){return!(this.high+1e.high)}},{key:"add",value:function(e){return new n(Math.min(this.low,e.low),Math.max(this.high,e.high))}},{key:"subtract",value:function(e){return e.low<=this.low&&e.high>=this.high?[]:e.low>this.low&&e.highr){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,"object"===("undefined"==typeof console?"undefined":u(console))&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else o=i[t]=n,++e._eventsCount;return e}function d(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t '+e+"x"+t+" ")}}},{}],51:[function(_,e,t){"use strict";function n(e){var n=this;e=e||{};var t=n.locales||e.locales||{},a=n.locale||e.locale||"en",r=n.localeFallback||e.localeFallback||"en";function i(t){return Object.keys(t).forEach(function(e){"function"==typeof t[e]&&(t[e]=t[e].bind(t))}),t}n.locales=t,n.locale=a,n.localeFallback=r,n.definitions={};var o=_("./fake");n.fake=new o(n).fake;var s=_("./random");n.random=i(new s(n));var u=_("./helpers");n.helpers=new u(n);var c=_("./name");n.name=i(new c(n));var l=_("./address");n.address=i(new l(n));var p=_("./company");n.company=i(new p(n));var f=_("./finance");n.finance=i(new f(n));var d=_("./image");n.image=i(new d(n));var m=_("./lorem");n.lorem=i(new m(n));var h=_("./hacker");n.hacker=i(new h(n));var g=_("./internet");n.internet=i(new g(n));var y=_("./database");n.database=i(new y(n));var v=_("./phone_number");n.phone=i(new v(n));var b=_("./date");n.date=i(new b(n));var w=_("./commerce");n.commerce=i(new w(n));var x=_("./system");n.system=i(new x(n));var E={name:["first_name","last_name","prefix","suffix","title","male_first_name","female_first_name","male_middle_name","female_middle_name","male_last_name","female_last_name"],address:["city_prefix","city_suffix","street_suffix","county","country","country_code","state","state_abbr","street_prefix","postcode"],company:["adjective","noun","descriptor","bs_adjective","bs_noun","bs_verb","suffix"],lorem:["words"],hacker:["abbreviation","adjective","noun","verb","ingverb"],phone_number:["formats"],finance:["account_type","transaction_type","currency","iban"],internet:["avatar_uri","domain_suffix","free_email","example_email","password"],commerce:["color","department","product_name","price","categories"],database:["collation","column","engine","type"],system:["mimeTypes"],date:["month","weekday"],title:"",separator:""};Object.keys(E).forEach(function(t){void 0===n.definitions[t]&&(n.definitions[t]={}),"string"!=typeof E[t]?E[t].forEach(function(e){Object.defineProperty(n.definitions[t],e,{get:function(){return void 0===n.locales[n.locale][t]||void 0===n.locales[n.locale][t][e]?n.locales[r][t][e]:n.locales[n.locale][t][e]}})}):n.definitions[t]=E[t]})}n.prototype.seed=function(e){var t=_("./random");this.seedValue=e,this.random=new t(this,this.seedValue)},e.exports=n},{"./address":40,"./commerce":41,"./company":42,"./database":43,"./date":44,"./fake":45,"./finance":46,"./hacker":47,"./helpers":48,"./image":50,"./internet":52,"./lorem":155,"./name":156,"./phone_number":157,"./random":158,"./system":159}],52:[function(e,t,n){"use strict";var r=e("../vendor/user-agent");t.exports=function(c){var a=this;a.avatar=function(){return c.random.arrayElement(c.definitions.internet.avatar_uri)},a.avatar.schema={description:"Generates a URL for an avatar.",sampleResults:["https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg"]},a.email=function(e,t,n){return n=n||c.random.arrayElement(c.definitions.internet.free_email),c.helpers.slugify(c.internet.userName(e,t))+"@"+n},a.email.schema={description:"Generates a valid email address based on optional input criteria",sampleResults:["foo.bar@gmail.com"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"},provider:{type:"string",required:!1,description:"The domain of the user"}}},a.exampleEmail=function(e,t){var n=c.random.arrayElement(c.definitions.internet.example_email);return a.email(e,t,n)},a.userName=function(e,t){var n;switch(e=e||c.name.firstName(),t=t||c.name.lastName(),c.random.number(2)){case 0:n=e+c.random.number(99);break;case 1:n=e+c.random.arrayElement([".","_"])+t;break;case 2:n=e+c.random.arrayElement([".","_"])+t+c.random.number(99)}return n=(n=n.toString().replace(/'/g,"")).replace(/ /g,"")},a.userName.schema={description:"Generates a username based on one of several patterns. The pattern is chosen randomly.",sampleResults:["Kirstin39","Kirstin.Smith","Kirstin.Smith39","KirstinSmith","KirstinSmith39"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"}}},a.protocol=function(){return c.random.arrayElement(["http","https"])},a.protocol.schema={description:"Randomly generates http or https",sampleResults:["https","http"]},a.url=function(){return c.internet.protocol()+"://"+c.internet.domainName()},a.url.schema={description:"Generates a random URL. The URL could be secure or insecure.",sampleResults:["http://rashawn.name","https://rashawn.name"]},a.domainName=function(){return c.internet.domainWord()+"."+c.internet.domainSuffix()},a.domainName.schema={description:"Generates a random domain name.",sampleResults:["marvin.org"]},a.domainSuffix=function(){return c.random.arrayElement(c.definitions.internet.domain_suffix)},a.domainSuffix.schema={description:"Generates a random domain suffix.",sampleResults:["net"]},a.domainWord=function(){return c.name.firstName().replace(/([\\~#&*{}/:<>?|\"'])/gi,"").toLowerCase()},a.domainWord.schema={description:"Generates a random domain word.",sampleResults:["alyce"]},a.ip=function(){for(var e=[],t=0;t<4;t++)e[t]=c.random.number(255).toFixed(0);return e.join(".")},a.ip.schema={description:"Generates a random IP.",sampleResults:["97.238.241.11"]},a.ipv6=function(){for(var e=function(){for(var e="",t=0;t<4;t++)e+=c.random.arrayElement(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);return e},t=[],n=0;n<8;n++)t[n]=e();return t.join(":")},a.ipv6.schema={description:"Generates a random IPv6 address.",sampleResults:["2001:0db8:6276:b1a7:5213:22f1:25df:c8a0"]},a.userAgent=function(){return r.generate()},a.userAgent.schema={description:"Generates a random user agent.",sampleResults:["Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1"]},a.color=function(e,t,n){e=e||0,t=t||0,n=n||0;var a=Math.floor((c.random.number(256)+e)/2),r=Math.floor((c.random.number(256)+t)/2),i=Math.floor((c.random.number(256)+n)/2),o=a.toString(16),s=r.toString(16),u=i.toString(16);return"#"+(1===o.length?"0":"")+o+(1===s.length?"0":"")+s+(1===u.length?"0":"")+u},a.color.schema={description:"Generates a random hexadecimal color.",sampleResults:["#06267f"],properties:{baseRed255:{type:"number",required:!1,description:"The red value. Valid values are 0 - 255."},baseGreen255:{type:"number",required:!1,description:"The green value. Valid values are 0 - 255."},baseBlue255:{type:"number",required:!1,description:"The blue value. Valid values are 0 - 255."}}},a.mac=function(){var e,t="";for(e=0;e<12;e++)t+=c.random.number(15).toString(16),e%2==1&&11!=e&&(t+=":");return t},a.mac.schema={description:"Generates a random mac address.",sampleResults:["78:06:cc:ae:b3:81"]},a.password=function(e,t,n,a){var s,u;return void 0===t&&(t=!1),u=/[aeiouAEIOU]$/,s=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,function e(t,n,a,r){var i,o;return null==t&&(t=10),null==n&&(n=!0),null==a&&(a=/\w/),null==r&&(r=""),r.length>=t?r:(n&&(a=r.match(s)?u:s),o=c.random.number(94)+33,i=String.fromCharCode(o),n&&(i=i.toLowerCase()),i.match(a)?e(t,n,a,""+r+i):e(t,n,a,r))}(e=e||15,t,n,a)},a.password.schema={description:"Generates a random password.",sampleResults:["AM7zl6Mg","susejofe"],properties:{length:{type:"number",required:!1,description:"The number of characters in the password."},memorable:{type:"boolean",required:!1,description:"Whether a password should be easy to remember."},pattern:{type:"regex",required:!1,description:"A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on."},prefix:{type:"string",required:!1,description:"A value to prepend to the generated password. The prefix counts towards the length of the password."}}}}},{"../vendor/user-agent":162}],53:[function(e,t,n){"use strict";t.exports=["#####","####","###"]},{}],54:[function(e,t,n){"use strict";t.exports=["#{city_prefix} #{Name.first_name}#{city_suffix}","#{city_prefix} #{Name.first_name}","#{Name.first_name}#{city_suffix}","#{Name.last_name}#{city_suffix}"]},{}],55:[function(e,t,n){"use strict";t.exports=["North","East","West","South","New","Lake","Port"]},{}],56:[function(e,t,n){"use strict";t.exports=["town","ton","land","ville","berg","burgh","borough","bury","view","port","mouth","stad","furt","chester","mouth","fort","haven","side","shire"]},{}],57:[function(e,t,n){"use strict";t.exports=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica (the territory South of 60 deg S)","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island (Bouvetoya)","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands Antilles","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestinian Territory","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia (Slovak Republic)","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"]},{}],58:[function(e,t,n){"use strict";t.exports=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},{}],59:[function(e,t,n){"use strict";t.exports=["Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire"]},{}],60:[function(e,t,n){"use strict";t.exports=["United States of America"]},{}],61:[function(e,t,n){"use strict";var a={};(t.exports=a).city_prefix=e("./city_prefix"),a.city_suffix=e("./city_suffix"),a.county=e("./county"),a.country=e("./country"),a.country_code=e("./country_code"),a.building_number=e("./building_number"),a.street_suffix=e("./street_suffix"),a.secondary_address=e("./secondary_address"),a.postcode=e("./postcode"),a.postcode_by_state=e("./postcode_by_state"),a.state=e("./state"),a.state_abbr=e("./state_abbr"),a.time_zone=e("./time_zone"),a.city=e("./city"),a.street_name=e("./street_name"),a.street_address=e("./street_address"),a.default_country=e("./default_country")},{"./building_number":53,"./city":54,"./city_prefix":55,"./city_suffix":56,"./country":57,"./country_code":58,"./county":59,"./default_country":60,"./postcode":62,"./postcode_by_state":63,"./secondary_address":64,"./state":65,"./state_abbr":66,"./street_address":67,"./street_name":68,"./street_suffix":69,"./time_zone":70}],62:[function(e,t,n){"use strict";t.exports=["#####","#####-####"]},{}],63:[function(e,t,n){"use strict";t.exports=["#####","#####-####"]},{}],64:[function(e,t,n){"use strict";t.exports=["Apt. ###","Suite ###"]},{}],65:[function(e,t,n){"use strict";t.exports=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]},{}],66:[function(e,t,n){"use strict";t.exports=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"]},{}],67:[function(e,t,n){"use strict";t.exports=["#{building_number} #{street_name}"]},{}],68:[function(e,t,n){"use strict";t.exports=["#{Name.first_name} #{street_suffix}","#{Name.last_name} #{street_suffix}"]},{}],69:[function(e,t,n){"use strict";t.exports=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Inlet","Island","Island","Islands","Islands","Isle","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Locks","Lodge","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Mission","Motorway","Mount","Mountain","Mountain","Mountains","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plains","Plaza","Plaza","Point","Points","Port","Port","Ports","Ports","Prairie","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Road","Roads","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Springs","Spur","Spurs","Square","Square","Squares","Squares","Station","Station","Stravenue","Stravenue","Stream","Stream","Street","Street","Streets","Summit","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Trail","Tunnel","Tunnel","Turnpike","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Village","Villages","Ville","Vista","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},{}],70:[function(e,t,n){"use strict";t.exports=["Pacific/Midway","Pacific/Pago_Pago","Pacific/Honolulu","America/Juneau","America/Los_Angeles","America/Tijuana","America/Denver","America/Phoenix","America/Chihuahua","America/Mazatlan","America/Chicago","America/Regina","America/Mexico_City","America/Mexico_City","America/Monterrey","America/Guatemala","America/New_York","America/Indiana/Indianapolis","America/Bogota","America/Lima","America/Lima","America/Halifax","America/Caracas","America/La_Paz","America/Santiago","America/St_Johns","America/Sao_Paulo","America/Argentina/Buenos_Aires","America/Guyana","America/Godthab","Atlantic/South_Georgia","Atlantic/Azores","Atlantic/Cape_Verde","Europe/Dublin","Europe/London","Europe/Lisbon","Europe/London","Africa/Casablanca","Africa/Monrovia","Etc/UTC","Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Prague","Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris","Europe/Amsterdam","Europe/Berlin","Europe/Berlin","Europe/Rome","Europe/Stockholm","Europe/Vienna","Africa/Algiers","Europe/Bucharest","Africa/Cairo","Europe/Helsinki","Europe/Kiev","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Vilnius","Europe/Athens","Europe/Istanbul","Europe/Minsk","Asia/Jerusalem","Africa/Harare","Africa/Johannesburg","Europe/Moscow","Europe/Moscow","Europe/Moscow","Asia/Kuwait","Asia/Riyadh","Africa/Nairobi","Asia/Baghdad","Asia/Tehran","Asia/Muscat","Asia/Muscat","Asia/Baku","Asia/Tbilisi","Asia/Yerevan","Asia/Kabul","Asia/Yekaterinburg","Asia/Karachi","Asia/Karachi","Asia/Tashkent","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kathmandu","Asia/Dhaka","Asia/Dhaka","Asia/Colombo","Asia/Almaty","Asia/Novosibirsk","Asia/Rangoon","Asia/Bangkok","Asia/Bangkok","Asia/Jakarta","Asia/Krasnoyarsk","Asia/Shanghai","Asia/Chongqing","Asia/Hong_Kong","Asia/Urumqi","Asia/Kuala_Lumpur","Asia/Singapore","Asia/Taipei","Australia/Perth","Asia/Irkutsk","Asia/Ulaanbaatar","Asia/Seoul","Asia/Tokyo","Asia/Tokyo","Asia/Tokyo","Asia/Yakutsk","Australia/Darwin","Australia/Adelaide","Australia/Melbourne","Australia/Melbourne","Australia/Sydney","Australia/Brisbane","Australia/Hobart","Asia/Vladivostok","Pacific/Guam","Pacific/Port_Moresby","Asia/Magadan","Asia/Magadan","Pacific/Noumea","Pacific/Fiji","Asia/Kamchatka","Pacific/Majuro","Pacific/Auckland","Pacific/Auckland","Pacific/Tongatapu","Pacific/Fakaofo","Pacific/Apia"]},{}],71:[function(e,t,n){"use strict";t.exports=["#{Name.name}","#{Company.name}"]},{}],72:[function(e,t,n){"use strict";var a={};(t.exports=a).name=e("./name"),a.version=e("./version"),a.author=e("./author")},{"./author":71,"./name":73,"./version":74}],73:[function(e,t,n){"use strict";t.exports=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"]},{}],74:[function(e,t,n){"use strict";t.exports=["0.#.#","0.##","#.##","#.#","#.#.#"]},{}],75:[function(e,t,n){"use strict";t.exports=["2011-10-12","2012-11-12","2015-11-11","2013-9-12"]},{}],76:[function(e,t,n){"use strict";t.exports=["1234-2121-1221-1211","1212-1221-1121-1234","1211-1221-1234-2201","1228-1221-1221-1431"]},{}],77:[function(e,t,n){"use strict";t.exports=["visa","mastercard","americanexpress","discover"]},{}],78:[function(e,t,n){"use strict";var a={};(t.exports=a).credit_card_numbers=e("./credit_card_numbers"),a.credit_card_expiry_dates=e("./credit_card_expiry_dates"),a.credit_card_types=e("./credit_card_types")},{"./credit_card_expiry_dates":75,"./credit_card_numbers":76,"./credit_card_types":77}],79:[function(e,t,n){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},{}],80:[function(e,t,n){"use strict";var a={};(t.exports=a).formats=e("./formats")},{"./formats":79}],81:[function(e,t,n){"use strict";t.exports=["red","green","blue","yellow","purple","mint green","teal","white","black","orange","pink","grey","maroon","violet","turquoise","tan","sky blue","salmon","plum","orchid","olive","magenta","lime","ivory","indigo","gold","fuchsia","cyan","azure","lavender","silver"]},{}],82:[function(e,t,n){"use strict";t.exports=["Books","Movies","Music","Games","Electronics","Computers","Home","Garden","Tools","Grocery","Health","Beauty","Toys","Kids","Baby","Clothing","Shoes","Jewelery","Sports","Outdoors","Automotive","Industrial"]},{}],83:[function(e,t,n){"use strict";var a={};(t.exports=a).color=e("./color"),a.department=e("./department"),a.product_name=e("./product_name")},{"./color":81,"./department":82,"./product_name":84}],84:[function(e,t,n){"use strict";t.exports={adjective:["Small","Ergonomic","Rustic","Intelligent","Gorgeous","Incredible","Fantastic","Practical","Sleek","Awesome","Generic","Handcrafted","Handmade","Licensed","Refined","Unbranded","Tasty"],material:["Steel","Wooden","Concrete","Plastic","Cotton","Granite","Rubber","Metal","Soft","Fresh","Frozen"],product:["Chair","Car","Computer","Keyboard","Mouse","Bike","Ball","Gloves","Pants","Shirt","Table","Shoes","Hat","Towels","Soap","Tuna","Chicken","Fish","Cheese","Bacon","Pizza","Salad","Sausages","Chips"]}},{}],85:[function(e,t,n){"use strict";t.exports=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","Decentralized","De-engineered","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Reactive","Realigned","Re-contextualized","Re-engineered","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Visionary","Vision-oriented"]},{}],86:[function(e,t,n){"use strict";t.exports=["clicks-and-mortar","value-added","vertical","proactive","robust","revolutionary","scalable","leading-edge","innovative","intuitive","strategic","e-business","mission-critical","sticky","one-to-one","24/7","end-to-end","global","B2B","B2C","granular","frictionless","virtual","viral","dynamic","24/365","best-of-breed","killer","magnetic","bleeding-edge","web-enabled","interactive","dot-com","sexy","back-end","real-time","efficient","front-end","distributed","seamless","extensible","turn-key","world-class","open-source","cross-platform","cross-media","synergistic","bricks-and-clicks","out-of-the-box","enterprise","integrated","impactful","wireless","transparent","next-generation","cutting-edge","user-centric","visionary","customized","ubiquitous","plug-and-play","collaborative","compelling","holistic","rich"]},{}],87:[function(e,t,n){"use strict";t.exports=["synergies","web-readiness","paradigms","markets","partnerships","infrastructures","platforms","initiatives","channels","eyeballs","communities","ROI","solutions","e-tailers","e-services","action-items","portals","niches","technologies","content","vortals","supply-chains","convergence","relationships","architectures","interfaces","e-markets","e-commerce","systems","bandwidth","infomediaries","models","mindshare","deliverables","users","schemas","networks","applications","metrics","e-business","functionalities","experiences","web services","methodologies"]},{}],88:[function(e,t,n){"use strict";t.exports=["implement","utilize","integrate","streamline","optimize","evolve","transform","embrace","enable","orchestrate","leverage","reinvent","aggregate","architect","enhance","incentivize","morph","empower","envisioneer","monetize","harness","facilitate","seize","disintermediate","synergize","strategize","deploy","brand","grow","target","syndicate","synthesize","deliver","mesh","incubate","engage","maximize","benchmark","expedite","reintermediate","whiteboard","visualize","repurpose","innovate","scale","unleash","drive","extend","engineer","revolutionize","generate","exploit","transition","e-enable","iterate","cultivate","matrix","productize","redefine","recontextualize"]},{}],89:[function(e,t,n){"use strict";t.exports=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","context-sensitive","contextually-based","content-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multimedia","multi-state","multi-tasking","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","systematic","systemic","system-worthy","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"]},{}],90:[function(e,t,n){"use strict";var a={};(t.exports=a).suffix=e("./suffix"),a.adjective=e("./adjective"),a.descriptor=e("./descriptor"),a.noun=e("./noun"),a.bs_verb=e("./bs_verb"),a.bs_adjective=e("./bs_adjective"),a.bs_noun=e("./bs_noun"),a.name=e("./name")},{"./adjective":85,"./bs_adjective":86,"./bs_noun":87,"./bs_verb":88,"./descriptor":89,"./name":91,"./noun":92,"./suffix":93}],91:[function(e,t,n){"use strict";t.exports=["#{Name.last_name} #{suffix}","#{Name.last_name}-#{Name.last_name}","#{Name.last_name}, #{Name.last_name} and #{Name.last_name}"]},{}],92:[function(e,t,n){"use strict";t.exports=["ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","artificial intelligence","array","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","database","data-warehouse","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","Graphic Interface","groupware","Graphical User Interface","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge user","knowledge base","local area network","leverage","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},{}],93:[function(e,t,n){"use strict";t.exports=["Inc","and Sons","LLC","Group"]},{}],94:[function(e,t,n){"use strict";t.exports=["/34##-######-####L/","/37##-######-####L/"]},{}],95:[function(e,t,n){"use strict";t.exports=["/30[0-5]#-######-###L/","/368#-######-###L/"]},{}],96:[function(e,t,n){"use strict";t.exports=["/6011-####-####-###L/","/65##-####-####-###L/","/64[4-9]#-####-####-###L/","/6011-62##-####-####-###L/","/65##-62##-####-####-###L/","/64[4-9]#-62##-####-####-###L/"]},{}],97:[function(e,t,n){"use strict";var a={};(t.exports=a).visa=e("./visa"),a.mastercard=e("./mastercard"),a.discover=e("./discover"),a.american_express=e("./american_express"),a.diners_club=e("./diners_club"),a.jcb=e("./jcb"),a.switch=e("./switch"),a.solo=e("./solo"),a.maestro=e("./maestro"),a.laser=e("./laser")},{"./american_express":94,"./diners_club":95,"./discover":96,"./jcb":98,"./laser":99,"./maestro":100,"./mastercard":101,"./solo":102,"./switch":103,"./visa":104}],98:[function(e,t,n){"use strict";t.exports=["/3528-####-####-###L/","/3529-####-####-###L/","/35[3-8]#-####-####-###L/"]},{}],99:[function(e,t,n){"use strict";t.exports=["/6304###########L/","/6706###########L/","/6771###########L/","/6709###########L/","/6304#########{5,6}L/","/6706#########{5,6}L/","/6771#########{5,6}L/","/6709#########{5,6}L/"]},{}],100:[function(e,t,n){"use strict";t.exports=["/50#{9,16}L/","/5[6-8]#{9,16}L/","/56##{9,16}L/"]},{}],101:[function(e,t,n){"use strict";t.exports=["/5[1-5]##-####-####-###L/","/6771-89##-####-###L/"]},{}],102:[function(e,t,n){"use strict";t.exports=["/6767-####-####-###L/","/6767-####-####-####-#L/","/6767-####-####-####-##L/"]},{}],103:[function(e,t,n){"use strict";t.exports=["/6759-####-####-###L/","/6759-####-####-####-#L/","/6759-####-####-####-##L/"]},{}],104:[function(e,t,n){"use strict";t.exports=["/4###########L/","/4###-####-####-###L/"]},{}],105:[function(e,t,n){"use strict";t.exports=["utf8_unicode_ci","utf8_general_ci","utf8_bin","ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci"]},{}],106:[function(e,t,n){"use strict";t.exports=["id","title","name","email","phone","token","group","category","password","comment","avatar","status","createdAt","updatedAt"]},{}],107:[function(e,t,n){"use strict";t.exports=["InnoDB","MyISAM","MEMORY","CSV","BLACKHOLE","ARCHIVE"]},{}],108:[function(e,t,n){"use strict";var a={};(t.exports=a).collation=e("./collation"),a.column=e("./column"),a.engine=e("./engine"),a.type=e("./type")},{"./collation":105,"./column":106,"./engine":107,"./type":109}],109:[function(e,t,n){"use strict";t.exports=["int","varchar","text","date","datetime","tinyint","time","timestamp","smallint","mediumint","bigint","decimal","float","double","real","bit","boolean","serial","blob","binary","enum","set","geometry","point"]},{}],110:[function(e,t,n){"use strict";var a={};(t.exports=a).month=e("./month"),a.weekday=e("./weekday")},{"./month":111,"./weekday":112}],111:[function(e,t,n){"use strict";t.exports={wide:["January","February","March","April","May","June","July","August","September","October","November","December"],wide_context:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],abbr_context:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}},{}],112:[function(e,t,n){"use strict";t.exports={wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],wide_context:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],abbr_context:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}},{}],113:[function(e,t,n){"use strict";t.exports=["Checking","Savings","Money Market","Investment","Home Loan","Credit Card","Auto Loan","Personal Loan"]},{}],114:[function(e,t,n){"use strict";t.exports={"UAE Dirham":{code:"AED",symbol:""},Afghani:{code:"AFN",symbol:"؋"},Lek:{code:"ALL",symbol:"Lek"},"Armenian Dram":{code:"AMD",symbol:""},"Netherlands Antillian Guilder":{code:"ANG",symbol:"ƒ"},Kwanza:{code:"AOA",symbol:""},"Argentine Peso":{code:"ARS",symbol:"$"},"Australian Dollar":{code:"AUD",symbol:"$"},"Aruban Guilder":{code:"AWG",symbol:"ƒ"},"Azerbaijanian Manat":{code:"AZN",symbol:"ман"},"Convertible Marks":{code:"BAM",symbol:"KM"},"Barbados Dollar":{code:"BBD",symbol:"$"},Taka:{code:"BDT",symbol:""},"Bulgarian Lev":{code:"BGN",symbol:"лв"},"Bahraini Dinar":{code:"BHD",symbol:""},"Burundi Franc":{code:"BIF",symbol:""},"Bermudian Dollar (customarily known as Bermuda Dollar)":{code:"BMD",symbol:"$"},"Brunei Dollar":{code:"BND",symbol:"$"},"Boliviano Mvdol":{code:"BOB BOV",symbol:"$b"},"Brazilian Real":{code:"BRL",symbol:"R$"},"Bahamian Dollar":{code:"BSD",symbol:"$"},Pula:{code:"BWP",symbol:"P"},"Belarussian Ruble":{code:"BYR",symbol:"p."},"Belize Dollar":{code:"BZD",symbol:"BZ$"},"Canadian Dollar":{code:"CAD",symbol:"$"},"Congolese Franc":{code:"CDF",symbol:""},"Swiss Franc":{code:"CHF",symbol:"CHF"},"Chilean Peso Unidades de fomento":{code:"CLP CLF",symbol:"$"},"Yuan Renminbi":{code:"CNY",symbol:"¥"},"Colombian Peso Unidad de Valor Real":{code:"COP COU",symbol:"$"},"Costa Rican Colon":{code:"CRC",symbol:"₡"},"Cuban Peso Peso Convertible":{code:"CUP CUC",symbol:"₱"},"Cape Verde Escudo":{code:"CVE",symbol:""},"Czech Koruna":{code:"CZK",symbol:"Kč"},"Djibouti Franc":{code:"DJF",symbol:""},"Danish Krone":{code:"DKK",symbol:"kr"},"Dominican Peso":{code:"DOP",symbol:"RD$"},"Algerian Dinar":{code:"DZD",symbol:""},Kroon:{code:"EEK",symbol:""},"Egyptian Pound":{code:"EGP",symbol:"£"},Nakfa:{code:"ERN",symbol:""},"Ethiopian Birr":{code:"ETB",symbol:""},Euro:{code:"EUR",symbol:"€"},"Fiji Dollar":{code:"FJD",symbol:"$"},"Falkland Islands Pound":{code:"FKP",symbol:"£"},"Pound Sterling":{code:"GBP",symbol:"£"},Lari:{code:"GEL",symbol:""},Cedi:{code:"GHS",symbol:""},"Gibraltar Pound":{code:"GIP",symbol:"£"},Dalasi:{code:"GMD",symbol:""},"Guinea Franc":{code:"GNF",symbol:""},Quetzal:{code:"GTQ",symbol:"Q"},"Guyana Dollar":{code:"GYD",symbol:"$"},"Hong Kong Dollar":{code:"HKD",symbol:"$"},Lempira:{code:"HNL",symbol:"L"},"Croatian Kuna":{code:"HRK",symbol:"kn"},"Gourde US Dollar":{code:"HTG USD",symbol:""},Forint:{code:"HUF",symbol:"Ft"},Rupiah:{code:"IDR",symbol:"Rp"},"New Israeli Sheqel":{code:"ILS",symbol:"₪"},"Indian Rupee":{code:"INR",symbol:""},"Indian Rupee Ngultrum":{code:"INR BTN",symbol:""},"Iraqi Dinar":{code:"IQD",symbol:""},"Iranian Rial":{code:"IRR",symbol:"﷼"},"Iceland Krona":{code:"ISK",symbol:"kr"},"Jamaican Dollar":{code:"JMD",symbol:"J$"},"Jordanian Dinar":{code:"JOD",symbol:""},Yen:{code:"JPY",symbol:"¥"},"Kenyan Shilling":{code:"KES",symbol:""},Som:{code:"KGS",symbol:"лв"},Riel:{code:"KHR",symbol:"៛"},"Comoro Franc":{code:"KMF",symbol:""},"North Korean Won":{code:"KPW",symbol:"₩"},Won:{code:"KRW",symbol:"₩"},"Kuwaiti Dinar":{code:"KWD",symbol:""},"Cayman Islands Dollar":{code:"KYD",symbol:"$"},Tenge:{code:"KZT",symbol:"лв"},Kip:{code:"LAK",symbol:"₭"},"Lebanese Pound":{code:"LBP",symbol:"£"},"Sri Lanka Rupee":{code:"LKR",symbol:"₨"},"Liberian Dollar":{code:"LRD",symbol:"$"},"Lithuanian Litas":{code:"LTL",symbol:"Lt"},"Latvian Lats":{code:"LVL",symbol:"Ls"},"Libyan Dinar":{code:"LYD",symbol:""},"Moroccan Dirham":{code:"MAD",symbol:""},"Moldovan Leu":{code:"MDL",symbol:""},"Malagasy Ariary":{code:"MGA",symbol:""},Denar:{code:"MKD",symbol:"ден"},Kyat:{code:"MMK",symbol:""},Tugrik:{code:"MNT",symbol:"₮"},Pataca:{code:"MOP",symbol:""},Ouguiya:{code:"MRO",symbol:""},"Mauritius Rupee":{code:"MUR",symbol:"₨"},Rufiyaa:{code:"MVR",symbol:""},Kwacha:{code:"MWK",symbol:""},"Mexican Peso Mexican Unidad de Inversion (UDI)":{code:"MXN MXV",symbol:"$"},"Malaysian Ringgit":{code:"MYR",symbol:"RM"},Metical:{code:"MZN",symbol:"MT"},Naira:{code:"NGN",symbol:"₦"},"Cordoba Oro":{code:"NIO",symbol:"C$"},"Norwegian Krone":{code:"NOK",symbol:"kr"},"Nepalese Rupee":{code:"NPR",symbol:"₨"},"New Zealand Dollar":{code:"NZD",symbol:"$"},"Rial Omani":{code:"OMR",symbol:"﷼"},"Balboa US Dollar":{code:"PAB USD",symbol:"B/."},"Nuevo Sol":{code:"PEN",symbol:"S/."},Kina:{code:"PGK",symbol:""},"Philippine Peso":{code:"PHP",symbol:"Php"},"Pakistan Rupee":{code:"PKR",symbol:"₨"},Zloty:{code:"PLN",symbol:"zł"},Guarani:{code:"PYG",symbol:"Gs"},"Qatari Rial":{code:"QAR",symbol:"﷼"},"New Leu":{code:"RON",symbol:"lei"},"Serbian Dinar":{code:"RSD",symbol:"Дин."},"Russian Ruble":{code:"RUB",symbol:"руб"},"Rwanda Franc":{code:"RWF",symbol:""},"Saudi Riyal":{code:"SAR",symbol:"﷼"},"Solomon Islands Dollar":{code:"SBD",symbol:"$"},"Seychelles Rupee":{code:"SCR",symbol:"₨"},"Sudanese Pound":{code:"SDG",symbol:""},"Swedish Krona":{code:"SEK",symbol:"kr"},"Singapore Dollar":{code:"SGD",symbol:"$"},"Saint Helena Pound":{code:"SHP",symbol:"£"},Leone:{code:"SLL",symbol:""},"Somali Shilling":{code:"SOS",symbol:"S"},"Surinam Dollar":{code:"SRD",symbol:"$"},Dobra:{code:"STD",symbol:""},"El Salvador Colon US Dollar":{code:"SVC USD",symbol:"$"},"Syrian Pound":{code:"SYP",symbol:"£"},Lilangeni:{code:"SZL",symbol:""},Baht:{code:"THB",symbol:"฿"},Somoni:{code:"TJS",symbol:""},Manat:{code:"TMT",symbol:""},"Tunisian Dinar":{code:"TND",symbol:""},"Pa'anga":{code:"TOP",symbol:""},"Turkish Lira":{code:"TRY",symbol:"TL"},"Trinidad and Tobago Dollar":{code:"TTD",symbol:"TT$"},"New Taiwan Dollar":{code:"TWD",symbol:"NT$"},"Tanzanian Shilling":{code:"TZS",symbol:""},Hryvnia:{code:"UAH",symbol:"₴"},"Uganda Shilling":{code:"UGX",symbol:""},"US Dollar":{code:"USD",symbol:"$"},"Peso Uruguayo Uruguay Peso en Unidades Indexadas":{code:"UYU UYI",symbol:"$U"},"Uzbekistan Sum":{code:"UZS",symbol:"лв"},"Bolivar Fuerte":{code:"VEF",symbol:"Bs"},Dong:{code:"VND",symbol:"₫"},Vatu:{code:"VUV",symbol:""},Tala:{code:"WST",symbol:""},"CFA Franc BEAC":{code:"XAF",symbol:""},Silver:{code:"XAG",symbol:""},Gold:{code:"XAU",symbol:""},"Bond Markets Units European Composite Unit (EURCO)":{code:"XBA",symbol:""},"European Monetary Unit (E.M.U.-6)":{code:"XBB",symbol:""},"European Unit of Account 9(E.U.A.-9)":{code:"XBC",symbol:""},"European Unit of Account 17(E.U.A.-17)":{code:"XBD",symbol:""},"East Caribbean Dollar":{code:"XCD",symbol:"$"},SDR:{code:"XDR",symbol:""},"UIC-Franc":{code:"XFU",symbol:""},"CFA Franc BCEAO":{code:"XOF",symbol:""},Palladium:{code:"XPD",symbol:""},"CFP Franc":{code:"XPF",symbol:""},Platinum:{code:"XPT",symbol:""},"Codes specifically reserved for testing purposes":{code:"XTS",symbol:""},"Yemeni Rial":{code:"YER",symbol:"﷼"},Rand:{code:"ZAR",symbol:"R"},"Rand Loti":{code:"ZAR LSL",symbol:""},"Rand Namibia Dollar":{code:"ZAR NAD",symbol:""},"Zambian Kwacha":{code:"ZMK",symbol:""},"Zimbabwe Dollar":{code:"ZWL",symbol:""}}},{}],115:[function(e,t,n){"use strict";var a={};(t.exports=a).account_type=e("./account_type"),a.transaction_type=e("./transaction_type"),a.currency=e("./currency")},{"./account_type":113,"./currency":114,"./transaction_type":116}],116:[function(e,t,n){"use strict";t.exports=["deposit","withdrawal","payment","invoice"]},{}],117:[function(e,t,n){"use strict";t.exports=["TCP","HTTP","SDD","RAM","GB","CSS","SSL","AGP","SQL","FTP","PCI","AI","ADP","RSS","XML","EXE","COM","HDD","THX","SMTP","SMS","USB","PNG","SAS","IB","SCSI","JSON","XSS","JBOD"]},{}],118:[function(e,t,n){"use strict";t.exports=["auxiliary","primary","back-end","digital","open-source","virtual","cross-platform","redundant","online","haptic","multi-byte","bluetooth","wireless","1080p","neural","optical","solid state","mobile"]},{}],119:[function(e,t,n){"use strict";var a={};(t.exports=a).abbreviation=e("./abbreviation"),a.adjective=e("./adjective"),a.noun=e("./noun"),a.verb=e("./verb"),a.ingverb=e("./ingverb")},{"./abbreviation":117,"./adjective":118,"./ingverb":120,"./noun":121,"./verb":122}],120:[function(e,t,n){"use strict";t.exports=["backing up","bypassing","hacking","overriding","compressing","copying","navigating","indexing","connecting","generating","quantifying","calculating","synthesizing","transmitting","programming","parsing"]},{}],121:[function(e,t,n){"use strict";t.exports=["driver","protocol","bandwidth","panel","microchip","program","port","card","array","interface","system","sensor","firewall","hard drive","pixel","alarm","feed","monitor","application","transmitter","bus","circuit","capacitor","matrix"]},{}],122:[function(e,t,n){"use strict";t.exports=["back up","bypass","hack","override","compress","copy","navigate","index","connect","generate","quantify","calculate","synthesize","input","transmit","program","reboot","parse"]},{}],123:[function(e,t,n){"use strict";var a={};(t.exports=a).title="English",a.separator=" & ",a.address=e("./address"),a.credit_card=e("./credit_card"),a.company=e("./company"),a.internet=e("./internet"),a.database=e("./database"),a.lorem=e("./lorem"),a.name=e("./name"),a.phone_number=e("./phone_number"),a.cell_phone=e("./cell_phone"),a.business=e("./business"),a.commerce=e("./commerce"),a.team=e("./team"),a.hacker=e("./hacker"),a.app=e("./app"),a.finance=e("./finance"),a.date=e("./date"),a.system=e("./system")},{"./address":61,"./app":72,"./business":78,"./cell_phone":80,"./commerce":83,"./company":90,"./credit_card":97,"./database":108,"./date":110,"./finance":115,"./hacker":119,"./internet":128,"./lorem":129,"./name":133,"./phone_number":140,"./system":141,"./team":144}],124:[function(e,t,n){"use strict";t.exports=["https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sprayaga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Skyhartman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moscoz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurafire/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/91bilal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malykhinv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kushsolitary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowshade/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heyimjuani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/envex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/unterdreht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/collegeman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peejfancher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andyisonline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ultragex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fuck_you_two/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adellecharles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ateneupopular/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetalpbalkan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Stievius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerem/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osvaldas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelceballos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrykoblentz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peterlandt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weglov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandclay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetsulek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolasfolliot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayrobinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michzen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markjenkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolai_larsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alagoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/idiot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadengle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutlu82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vocino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guiiipontes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soyjavi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshaustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomaslau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/langate/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cemshid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leemunroe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_shahedk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BillSKenney/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshhemsley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sindresorhus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soffes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/9lessons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linux29/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anaami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joreira/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shadeed9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottkclark/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jedbridges/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marakasina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BrianPurkiss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bublienko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devankoshal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ZacharyZorbas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timmillwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuasortino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/damenleeturks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomas_janousek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/RussellBishop/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brajeshwar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bermonpainter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdullindenis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suprb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yalozhkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chandlervdw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamgarth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_victa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/commadelimited/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roybarberuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/axel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladarbatov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ffbel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/syropian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ankitind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flashmurphy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ChrisFarina78/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baliomega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschamt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jm_denis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kennyadr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chatyrko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dingyi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mds/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terryxlife/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaroni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prrstn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eduardostuart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/GavicoInd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rohixx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakesimkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leeiio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjrus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uberschizo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefoundry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ripplemdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/exentrich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jakemoore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joaoedumedeiros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/poormini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tereshenkov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keryilmaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haydn_woods/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/llun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sgaurav_baghel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jamiebrittain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pifagor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agromov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/erwanhesry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diesellaws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiaha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/koridhandy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewcohen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smaczny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nandini_m/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sydlawrence/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdharrison/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgerken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lewisainslie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robbschiller/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flexrs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattdetails/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raquelwilson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrmartineau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/opnsrce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximseshuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxalex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samihah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chanpory/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sharvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josemarques/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jefffis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krystalfister/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lokesh_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dpmachado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/funwatercat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timothycd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/picard102/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcobarbosa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krasnoukhov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ademilter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickdt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/operatino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugomano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/logorado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dc_user/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/horaciobella/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SlaapMe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teeragit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqonicd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ilya_pestov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewarrow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssiskind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/HenryHoffman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdsaunders/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamsxu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousoffice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themadray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michigangraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kohette/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nickfratter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/runningskull/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madysondesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyshen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurtinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amanruzaini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyhaggard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronalfred/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jitachi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/therealmarvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pmeissner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ooomz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chacky14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jesseddy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shanehudson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/IsaryAmairani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arthurholcombe1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/boxmodel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ehsandiary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/LucasPerdidao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shalt0ni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swaplord/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaelifa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plbabin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guillemboti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arindam_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/renbyrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thiagovernetti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmillspaysbills/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikemai2awesome/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jervo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mekal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sta1ex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robergd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipecsl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrea211087/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/garand/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhooyenga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abovefunction/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pcridesagain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/randomlies/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BryanHorsey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dahparra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allthingssmitty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvernon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beweinreich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/increase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falvarad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxndrustinov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souuf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/orkuncaylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AM_Kn2/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gearpixels/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bassamology/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kosmar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrjamesnoble/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shaneIxD/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nacho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yigitpinarbasi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buzzusborne/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronkwhite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rmlewisuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giancarlon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nbirckel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_nny_m_cher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sdidonato/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atariboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abotap/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karalek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psdesignuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ludwiczakpawel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nemanjaivanovic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baluli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmadajmi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vovkasolovev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samgrover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonathansimmons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelsonjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/S0ufi4n3/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xtopherpaul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oaktreemedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nateschulte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/findingjenny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/namankreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/we_social/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leehambley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/solid_color/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abelcabans/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kkusaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jordyvdboom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosgavina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pechkinator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdbannon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/croakx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerihenare/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catadeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gcmorley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duivvv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorDubugras/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wintopia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattbilotti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taylorling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/megdraws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meln1ks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahmoudmetwally/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Silveredge9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travis_arnold/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artem_kostenko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adobi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daykiine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alek_djuric/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scips/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelmendes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alsobrooks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mcflydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/santi_urso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allfordesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stayuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bertboerland/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marosholly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamnac/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cynthiasavard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muringa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hiemil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jackiesaik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iduuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antjanus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aroon_sharma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dshster/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thehacker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelbrooksjr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanmclaughlin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/clubb3rry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taybenlor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xripunov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/myastro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/digitalmaverick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hjartstrorn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vaughanmoffitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdots/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isnifer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeysafonov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scrapdnb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrismj83/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sokaniwaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zaki3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/illyzoren/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mocabyte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/djsherman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidhemphill/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/waghner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/necodymiconer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/praveen_vijaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travishines/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kuldarkalvik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Elt_n/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/phillapier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okseanjay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/id835559/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kudretkeskin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anjhero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duck4fuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scott_riley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noufalibrahim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/h1brd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borges_marcos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devinhalladay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ciaranr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefooo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikebeecham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuaraichur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/irae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petrangr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmitriychuta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliegann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arashmanteghi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ainsleywagon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/svenlen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/faisalabid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beshur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlyson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dutchnadia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teddyzetterlund/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aoimedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/toddrew/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artvavs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benoitboucart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jomarmen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/creartinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/homka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gaborenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinclediere/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximsorokin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j2deme/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kapaluccio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/de_ascanio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dawidwu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpatey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/popey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_purplebunny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/1markiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ajaxy_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenmurrell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dudestein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskarlevinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorstuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nehfy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leandrovaranda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottgallant/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victor_haydin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawrb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryhanhassan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amayvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_brixen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karolkrakowiak_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herkulano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geran7/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cggaurav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_witko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/polarity/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattlat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonburke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teylorfeliz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigelimeliah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rachelreveley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reabo101/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rahmeen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickyyean/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spbroma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sebashton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpenico/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/francis_vega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oktayelipek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kikillo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbianz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrygerard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/0therplanet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilalsiddique1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ionuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grrr_nl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/liminha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rawdiggie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryandownie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sethlouey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pixage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arpitnj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/switmer777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/puzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/besbujupi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supjoey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lowie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linkibol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balintorosz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imcoding/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gusoto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasschrijer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/superoutman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kalmerrautam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielizalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gojeanyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidbaldie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_vojto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laurengray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mymyboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nellleo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marciotoledo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hasslunsford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muridrahhal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/levisan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grahamkennery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepetitogre/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antongenkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/safrankov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cocolero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dss49/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matt3224/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluesix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/quailandquasar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AlbertoCococi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepinski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhudobivnik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thibaut_re/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olgary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shojberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mtolokonnikov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bereto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naupintos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wegotvices/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xadhix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rodnylobos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madcampos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebyvadim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartoszdawydzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supervova/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markretzloff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vonachoo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darylws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mylesb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herbigt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/depaulawagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gizmeedevil1991/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_scottburgess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lisovsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidsasda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artd_sign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/YoungCutlass/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mgonto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorquinn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmond/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oksanafrewer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zauerkraut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkeithmason/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nitinhayaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lmjabreu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mandalareopens/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thinkleft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caseycavanagh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/luxe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dotgridline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spedwig/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madewulf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattsapii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/helderleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisstumph/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayphen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nsamoylov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisvanderkooi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justme_timothyg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/otozk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gu5taf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cyril_gaillard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_kobelyatsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daniloc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nwdsha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/romanbulah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dannol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thekevinjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jwalter14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timgthomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thatonetommy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diansigitp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adrienths/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klimmka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gkaam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekcramer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyyo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerrsoft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xalionmalik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edhenderson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keyuri85/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roxanejammet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kimcool/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edkf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alessandroribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacksonlatka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebronjennan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karlkanall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moynihan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danpliego/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wesleytrankin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fjaguero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mashaaaaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yassiryahya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dparrelli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fotomagin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aka_james/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqbalperkasa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jarsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_oy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malgordon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlfairclough/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelabehsera/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierrestoffe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enjoythetau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/loganjlambert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpeezy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyginnivan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michalhron/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lingeswaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolsvein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peter576/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reideiredale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joeymurdah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raphaelnikson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mvdheuvel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maxlinderman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jimmuirhead/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/begreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/frankiefreesbie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Talbi_ConSept/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/longlivemyword/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vanchesz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maiklam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hermanobrother/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rez___a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/greenbes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anthonysukow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fluidbrush/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dactrtr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jehnglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bergmartin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugocornejo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_kkga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dzantievm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonsgotwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byryan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vytautas_a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cicerobr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshelmersson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d33pthought/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davecraige/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nckjrvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexandermayes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bagawarman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rob_thomas10/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cofla/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maikelk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtgibbons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russell_baylis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhesslow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codysanfilippo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/webtanya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebybrenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dcalonaci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perfectflow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjsiii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kumarrajan12123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamsteffen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ceekaytweet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrybolt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/conspirator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dallasbpeters/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n3dmax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terpimost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byrnecore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j_drake_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hoangloi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tobysaxon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gofrasdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dimaposnyy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjisousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okandungel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/billyroshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskamaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/motionthinks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/knilob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashocka18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartjo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/omnizya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andreas_pr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edgarchris99/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasgeisen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joannefournier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/demersdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adammarsbar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nasirwd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n_tassone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themrdave/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicollerich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicoleglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/judzhin_miles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kianoshp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evandrix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alterchuca/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhrubo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ma_tiax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssbb_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mauriolg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mactopus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_winslet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joemdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacobbennett/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nfedoroff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamglimy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allagringaus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olaolusoga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wim1k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicklacke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/steynviljoen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/strikewan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryankirkman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewabogado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doooon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jagan123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariffsetiawan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elenadissi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mwarkentin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrymeier_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_garcia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmackerman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borantula/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spacewood_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryuchi311/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evanshajed/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tristanlegros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shoaib253/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aislinnkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okcoker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunshinedgirl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleclarsoniv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nomidesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petebernardo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottiedude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imsoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imammuht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nepdud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lanceguyatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bboy1895/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amywebbb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rweve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haruintesettden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ricburton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelshd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/batsirai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/primozcigler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/8d3k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geneseleznev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/al_li/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souperphly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mslarkina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/2fockus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdavis565/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/turkutuuli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxward/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebinoclard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauravjassal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidmerrique/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mdsisto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewofficer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kojourin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnirmal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aluisio_azevedo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cloudstudio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvierich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fran_mchamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perretmagali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cadikkara/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bpartridge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelkoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitor376/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/desastrozo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thimo_cz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lhausermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xravil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guischmitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vigobronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panghal0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelkooreman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/surgeonist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/christianoliff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caspergrl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ipavelek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierre_nel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sterlingrules/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elbuscainfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bennyjien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stushona/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/estebanuribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/embrcecreations/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danillos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charlesrpratt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosblanco_eu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leonfedotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rangafangs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_frees/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgormtx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bryan_topham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpscribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carbontwelve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamjdeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowwrite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/barputro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/drewbyreese/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bistrianiosip/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magoo04/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pehamondello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_harris88/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/algunsanabria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zforrester/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ovall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosjgsousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geobikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ah_lice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/looneydoodle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerdgr8/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ddggccaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zackeeler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/normanbox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/el_fuertisimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ismail_biltagi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juangomezw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jnmnrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/patrickcoombe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanjohnson_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeffgolenski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kvasnic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauchomatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/afusinatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okansurreel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamawesomeface/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emileboudeling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arishi_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juanmamartinez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mkginfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terrorpixel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousonaut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prheemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcolenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/foczzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martip07/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaodang17/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johncafazza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinlayfield/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/franciscoamk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdulhyeuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marklamb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edobene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresenfredrik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikaeljorhult/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisslowik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meelford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotnolten/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yehudab/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vijaykarthik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bfrohs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josep_martins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/attacks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sur4dye/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tumski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mangosango/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/paulfarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kazaky999/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kiwiupover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nvkznemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tom_even/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ratbus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshmedeski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thewillbeard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joe_black/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleinadsays/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcusgorillius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hota_v/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jghyllebert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shinze/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/janpalounek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/her_ruu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dansowter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipeapiress/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magugzbrand2d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/posterjob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nathalie_fs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobbytwoshoes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dreizle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elisabethkjaer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/notbadart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mohanrohith/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jlsolerdeltoro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itskawsar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/slowspock/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zvchkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craighenneberry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trubeatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juaumlol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samscouto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BenouarradeM/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gipsy_raf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/netonet_il/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arkokoley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itsajimithing/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smalonso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victordeanda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_dwite_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richardgarretts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregrwilkinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anatolinicolae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanotirloni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ostirbu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naitanamoreno/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcomiskey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcomano_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidcazalis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falconerie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregkilian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bcrad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bolzanmarco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/low_res/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vlajki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petar_prog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonkspr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmalfikri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mfacchinello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atanism/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/harry_sistalam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/murrayswift/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobwassermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gavr1l0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madshensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_subtle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salimianoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/twittypork/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/airskylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnezkumar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgajjar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salvafc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deeenright/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cybind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eyronn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vickyshits/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cboller1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresdjasso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/melvindidit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lvovenok/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giuliusa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/belyaev_rs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kamal_chaneman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/incubo82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hellofeverrrr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhaligowski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunlandictwin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bu7921/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andytlaw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/finchjke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manigm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/umurgdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ganserene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutu_krish/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jodytaggart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ntfblog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tanveerrao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hfalucas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxleroydeval/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kucingbelang4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bargaorobalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefrost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumannzone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcolberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachingawas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjshaw14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ramanathan_pdy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johndezember/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshoenson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonmorreale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nutzumi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeyalmone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klefue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kirangopal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumann_alex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matthewkay_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jay_wilburn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shesgared/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/apriendeau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnriordan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wake_gs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleksitappura/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emsgulam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xilantra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imomenui/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sircalebgrove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/newbrushes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hsinyo23/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/katiemdaly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ecommerceil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marlinjayakody/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swooshycueb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sangdth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coderdiaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sasha_shestakov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eugeneeweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgclegg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n1ght_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dixchen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakehawksworth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marclgonzales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yesmeck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doronmalki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruehldesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kijanmaharjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wearesavas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefvdham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tweetubhai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fiterik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyryndya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d00maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/theonlyzeke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manekenthe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reetajayendra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyshimko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrgraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanozoffoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrebay007/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shvelo96/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pyronite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedjpetersen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtyukmaev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_williamguerra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/albertaugustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinjohndayy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vj_demien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colirpixoil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/goddardlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laasli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jqiuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heycamtaylor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nastya_mane/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mastermindesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nyancecom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sandywoodruff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bighanddesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sbtransparent/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aviddayentonbay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richwild/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaysix_dizzy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tur8le/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/seyedhossein1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/privetwagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmandenn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dev_essentials/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmfsocial/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_yardenoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mateaodviteza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weavermedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mufaddal_mw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hafeeskhan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sulaqo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eddiechen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josecarlospsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vm_f/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enricocicconi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danmartin70/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gmourier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrxloka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_pedropinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eitarafa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oscarowusu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ralph_lam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panchajanyag/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodydotmx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marshallchen_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aio___/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaabane_wail/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/txcx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akashsharma39/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falling_soul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sainraja/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mugukamil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johannesneu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markwienands/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balakayuriy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alan_zhang_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/layerssss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaspernordkvist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VMilescu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aeon56/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sreejithexp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dicesales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhoot_amit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smenov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lonesomelemon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladimirdevic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelcipriano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haligaliharun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buleswapnil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/serefka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ifarafonow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikasvinfotech/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/urrutimeoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areandacom/128.jpg"]},{}],125:[function(e,t,n){"use strict";t.exports=["com","biz","info","name","net","org"]},{}],126:[function(e,t,n){"use strict";t.exports=["example.org","example.com","example.net"]},{}],127:[function(e,t,n){"use strict";t.exports=["gmail.com","yahoo.com","hotmail.com"]},{}],128:[function(e,t,n){"use strict";var a={};(t.exports=a).free_email=e("./free_email"),a.example_email=e("./example_email"),a.domain_suffix=e("./domain_suffix"),a.avatar_uri=e("./avatar_uri")},{"./avatar_uri":124,"./domain_suffix":125,"./example_email":126,"./free_email":127}],129:[function(e,t,n){"use strict";var a={};(t.exports=a).words=e("./words"),a.supplemental=e("./supplemental")},{"./supplemental":130,"./words":131}],130:[function(e,t,n){"use strict";t.exports=["abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accipio","accommodo","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","adultus","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alienus","alii","alioqui","aliqua","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","arcus","argentum","argumentum","arguo","arma","armarium","armo","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","aspicio","asporto","assentator","astrum","atavus","ater","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","auris","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","avoco","baiulus","balbus","barba","bardus","basium","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certo","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","colloco","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corpus","correptius","corrigo","corroboro","corrumpo","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cunabula","cunae","cunctatio","cupiditas","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","curvus","custodia","damnatio","damno","dapifer","debeo","debilito","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defigo","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delego","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","desidero","desino","desipio","desolo","desparatus","despecto","despirmatio","infit","inflammatio","paens","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecunia","pecus","peior","pel","ocer","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","temptatio","tempus","tenax","tendo","teneo","tener","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","triginta","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpe","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velociter","velum","velut","venia","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduata","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","vultuosus","xiphias"]},{}],131:[function(e,t,n){"use strict";t.exports=["alias","consequatur","aut","perferendis","sit","voluptatem","accusantium","doloremque","aperiam","eaque","ipsa","quae","ab","illo","inventore","veritatis","et","quasi","architecto","beatae","vitae","dicta","sunt","explicabo","aspernatur","aut","odit","aut","fugit","sed","quia","consequuntur","magni","dolores","eos","qui","ratione","voluptatem","sequi","nesciunt","neque","dolorem","ipsum","quia","dolor","sit","amet","consectetur","adipisci","velit","sed","quia","non","numquam","eius","modi","tempora","incidunt","ut","labore","et","dolore","magnam","aliquam","quaerat","voluptatem","ut","enim","ad","minima","veniam","quis","nostrum","exercitationem","ullam","corporis","nemo","enim","ipsam","voluptatem","quia","voluptas","sit","suscipit","laboriosam","nisi","ut","aliquid","ex","ea","commodi","consequatur","quis","autem","vel","eum","iure","reprehenderit","qui","in","ea","voluptate","velit","esse","quam","nihil","molestiae","et","iusto","odio","dignissimos","ducimus","qui","blanditiis","praesentium","laudantium","totam","rem","voluptatum","deleniti","atque","corrupti","quos","dolores","et","quas","molestias","excepturi","sint","occaecati","cupiditate","non","provident","sed","ut","perspiciatis","unde","omnis","iste","natus","error","similique","sunt","in","culpa","qui","officia","deserunt","mollitia","animi","id","est","laborum","et","dolorum","fuga","et","harum","quidem","rerum","facilis","est","et","expedita","distinctio","nam","libero","tempore","cum","soluta","nobis","est","eligendi","optio","cumque","nihil","impedit","quo","porro","quisquam","est","qui","minus","id","quod","maxime","placeat","facere","possimus","omnis","voluptas","assumenda","est","omnis","dolor","repellendus","temporibus","autem","quibusdam","et","aut","consequatur","vel","illum","qui","dolorem","eum","fugiat","quo","voluptas","nulla","pariatur","at","vero","eos","et","accusamus","officiis","debitis","aut","rerum","necessitatibus","saepe","eveniet","ut","et","voluptates","repudiandae","sint","et","molestiae","non","recusandae","itaque","earum","rerum","hic","tenetur","a","sapiente","delectus","ut","aut","reiciendis","voluptatibus","maiores","doloribus","asperiores","repellat"]},{}],132:[function(e,t,n){"use strict";t.exports=["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gay","Gayle","Gaylord","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"]},{}],133:[function(e,t,n){"use strict";var a={};(t.exports=a).first_name=e("./first_name"),a.last_name=e("./last_name"),a.prefix=e("./prefix"),a.suffix=e("./suffix"),a.title=e("./title"),a.name=e("./name")},{"./first_name":132,"./last_name":134,"./name":135,"./prefix":136,"./suffix":137,"./title":138}],134:[function(e,t,n){"use strict";t.exports=["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Eichmann","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Friesen","Fritsch","Funk","Gaylord","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},{}],135:[function(e,t,n){"use strict";t.exports=["#{prefix} #{first_name} #{last_name}","#{first_name} #{last_name} #{suffix}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}"]},{}],136:[function(e,t,n){"use strict";t.exports=["Mr.","Mrs.","Ms.","Miss","Dr."]},{}],137:[function(e,t,n){"use strict";t.exports=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"]},{}],138:[function(e,t,n){"use strict";t.exports={descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","Dynamic","International","Legacy","Forward","Internal","Human","Chief","Principal"],level:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"]}},{}],139:[function(e,t,n){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-#### x###","(###) ###-#### x###","1-###-###-#### x###","###.###.#### x###","###-###-#### x####","(###) ###-#### x####","1-###-###-#### x####","###.###.#### x####","###-###-#### x#####","(###) ###-#### x#####","1-###-###-#### x#####","###.###.#### x#####"]},{}],140:[function(e,t,n){"use strict";var a={};(t.exports=a).formats=e("./formats")},{"./formats":139}],141:[function(e,t,n){"use strict";var a={};(t.exports=a).mimeTypes=e("./mimeTypes")},{"./mimeTypes":142}],142:[function(e,t,n){"use strict";t.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana"},"application/3gpp-ims+xml":{source:"iana"},"application/a2l":{source:"iana"},"application/activemessage":{source:"iana"},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana"},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",extensions:["atomsvc"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana"},"application/bacnet-xdd+zip":{source:"iana"},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana"},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/cbor":{source:"iana"},"application/ccmp+xml":{source:"iana"},"application/ccxml+xml":{source:"iana",extensions:["ccxml"]},"application/cdfx+xml":{source:"iana"},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana"},"application/cellml+xml":{source:"iana"},"application/cfw":{source:"iana"},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana"},"application/cpl+xml":{source:"iana"},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana"},"application/cstadata+xml":{source:"iana"},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",extensions:["mdp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana"},"application/dicom":{source:"iana"},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/docbook+xml":{source:"apache",extensions:["dbk"]},"application/dskpp+xml":{source:"iana"},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/emergencycalldata.comment+xml":{source:"iana"},"application/emergencycalldata.deviceinfo+xml":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana"},"application/emergencycalldata.serviceinfo+xml":{source:"iana"},"application/emergencycalldata.subscriberinfo+xml":{source:"iana"},"application/emma+xml":{source:"iana",extensions:["emma"]},"application/emotionml+xml":{source:"iana"},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana"},"application/epub+zip":{source:"iana",extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana"},"application/fits":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1,extensions:["woff"]},"application/font-woff2":{compressible:!1,extensions:["woff2"]},"application/framework-attributes+xml":{source:"iana"},"application/gml+xml":{source:"apache",extensions:["gml"]},"application/gpx+xml":{source:"apache",extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1},"application/h224":{source:"iana"},"application/held+xml":{source:"iana"},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana"},"application/ibe-pkg-reply+xml":{source:"iana"},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana"},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana"},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana"},"application/kpml-response+xml":{source:"iana"},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana"},"application/lost+xml":{source:"iana",extensions:["lostxml"]},"application/lostsync+xml":{source:"iana"},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",extensions:["mads"]},"application/manifest+json":{charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",extensions:["mathml"]},"application/mathml-content+xml":{source:"iana"},"application/mathml-presentation+xml":{source:"iana"},"application/mbms-associated-procedure-description+xml":{source:"iana"},"application/mbms-deregister+xml":{source:"iana"},"application/mbms-envelope+xml":{source:"iana"},"application/mbms-msk+xml":{source:"iana"},"application/mbms-msk-response+xml":{source:"iana"},"application/mbms-protection-description+xml":{source:"iana"},"application/mbms-reception-report+xml":{source:"iana"},"application/mbms-register+xml":{source:"iana"},"application/mbms-register-response+xml":{source:"iana"},"application/mbms-schedule+xml":{source:"iana"},"application/mbms-user-service-description+xml":{source:"iana"},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana"},"application/media_control+xml":{source:"iana"},"application/mediaservercontrol+xml":{source:"iana",extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",extensions:["metalink"]},"application/metalink4+xml":{source:"iana",extensions:["meta4"]},"application/mets+xml":{source:"iana",extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mods+xml":{source:"iana",extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana"},"application/mrb-publish+xml":{source:"iana"},"application/msc-ivr+xml":{source:"iana"},"application/msc-mixer+xml":{source:"iana"},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mxf":{source:"iana",extensions:["mxf"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana"},"application/news-groupinfo":{source:"iana"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana"},"application/nss":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p2p-overlay+xml":{source:"iana"},"application/parityfec":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana"},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana"},"application/pidf-diff+xml":{source:"iana"},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",extensions:["pls"]},"application/poc-settings+xml":{source:"iana"},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/provenance+xml":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.hpub+zip":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana"},"application/pskc+xml":{source:"iana",extensions:["pskcxml"]},"application/qsig":{source:"iana"},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf"]},"application/reginfo+xml":{source:"iana",extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",extensions:["rld"]},"application/rfc+xml":{source:"iana"},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana"},"application/rls-services+xml":{source:"iana",extensions:["rs"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana"},"application/samlmetadata+xml":{source:"iana"},"application/sbml+xml":{source:"iana",extensions:["sbml"]},"application/scaip+xml":{source:"iana"},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/sep+xml":{source:"iana"},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",extensions:["shf"]},"application/sieve":{source:"iana"},"application/simple-filter+xml":{source:"iana"},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",extensions:["srx"]},"application/spirits-event+xml":{source:"iana"},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",extensions:["grxml"]},"application/sru+xml":{source:"iana",extensions:["sru"]},"application/ssdl+xml":{source:"apache",extensions:["ssdl"]},"application/ssml+xml":{source:"iana",extensions:["ssml"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/tei+xml":{source:"iana",extensions:["tei","teicorpus"]},"application/thraud+xml":{source:"iana",extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/ttml+xml":{source:"iana"},"application/tve-trigger":{source:"iana"},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana"},"application/urc-ressheet+xml":{source:"iana"},"application/urc-targetdesc+xml":{source:"iana"},"application/urc-uisocketdesc+xml":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana"},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.3gpp-prose+xml":{source:"iana"},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana"},"application/vnd.3gpp.bsf+xml":{source:"iana"},"application/vnd.3gpp.mid-call+xml":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana"},"application/vnd.3gpp.srvcc-info+xml":{source:"iana"},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana"},"application/vnd.3gpp.ussd+xml":{source:"iana"},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana"},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",extensions:["mpkg"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avistar+xml":{source:"iana"},"application/vnd.balsamiq.bmml+xml":{source:"iana"},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.biopax.rdf+xml":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",extensions:["cdxml"]},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana"},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",extensions:["wbs"]},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana"},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana"},"application/vnd.cybank":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume-movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana"},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana"},"application/vnd.dvb.notif-container+xml":{source:"iana"},"application/vnd.dvb.notif-generic+xml":{source:"iana"},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana"},"application/vnd.dvb.notif-init+xml":{source:"iana"},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana"},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana"},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.eszigno3+xml":{source:"iana",extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana"},"application/vnd.etsi.asic-e+zip":{source:"iana"},"application/vnd.etsi.asic-s+zip":{source:"iana"},"application/vnd.etsi.cug+xml":{source:"iana"},"application/vnd.etsi.iptvcommand+xml":{source:"iana"},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana"},"application/vnd.etsi.iptvprofile+xml":{source:"iana"},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana"},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana"},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana"},"application/vnd.etsi.iptvservice+xml":{source:"iana"},"application/vnd.etsi.iptvsync+xml":{source:"iana"},"application/vnd.etsi.iptvueprofile+xml":{source:"iana"},"application/vnd.etsi.mcid+xml":{source:"iana"},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana"},"application/vnd.etsi.pstn+xml":{source:"iana"},"application/vnd.etsi.sci+xml":{source:"iana"},"application/vnd.etsi.simservs+xml":{source:"iana"},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana"},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eudora.data":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana"},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana"},"application/vnd.gov.sk.e-form+zip":{source:"iana"},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana"},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana"},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana"},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana"},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana"},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana"},"application/vnd.iptc.g2.packageitem+xml":{source:"iana"},"application/vnd.iptc.g2.planningitem+xml":{source:"iana"},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las.las+xml":{source:"iana",extensions:["lasxml"]},"application/vnd.liberty-request+xml":{source:"iana"},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",extensions:["lbe"]},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana"},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana"},"application/vnd.marlin.drm.conftoken+xml":{source:"iana"},"application/vnd.marlin.drm.license+xml":{source:"iana"},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana"},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana"},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana"},"application/vnd.ms-printing.printticket+xml":{source:"apache"},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana"},"application/vnd.nokia.iptv.config+xml":{source:"iana"},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana"},"application/vnd.nokia.landmarkcollection+xml":{source:"iana"},"application/vnd.nokia.n-gage.ac+xml":{source:"iana"},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana"},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana"},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana"},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana"},"application/vnd.oipf.dae.xhtml+xml":{source:"iana"},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana"},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana"},"application/vnd.oipf.spdlist+xml":{source:"iana"},"application/vnd.oipf.ueprofile+xml":{source:"iana"},"application/vnd.oipf.userprofile+xml":{source:"iana"},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana"},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.imd+xml":{source:"iana"},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana"},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana"},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.sprov+xml":{source:"iana"},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana"},"application/vnd.oma.cab-feature-handler+xml":{source:"iana"},"application/vnd.oma.cab-pcc+xml":{source:"iana"},"application/vnd.oma.cab-subs-invite+xml":{source:"iana"},"application/vnd.oma.cab-user-prefs+xml":{source:"iana"},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana"},"application/vnd.oma.group-usage-list+xml":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana"},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana"},"application/vnd.oma.poc.final-report+xml":{source:"iana"},"application/vnd.oma.poc.groups+xml":{source:"iana"},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana"},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana"},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana"},"application/vnd.oma.xcap-directory+xml":{source:"iana"},"application/vnd.omads-email+xml":{source:"iana"},"application/vnd.omads-file+xml":{source:"iana"},"application/vnd.omads-folder+xml":{source:"iana"},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana"},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"apache",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"apache",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"apache",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana"},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana"},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana"},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana"},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana"},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos+xml":{source:"iana"},"application/vnd.paos.xml":{source:"apache"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana"},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana"},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana"},"application/vnd.radisys.msml+xml":{source:"iana"},"application/vnd.radisys.msml-audit+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana"},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana"},"application/vnd.radisys.msml-conf+xml":{source:"iana"},"application/vnd.radisys.msml-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana"},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.software602.filler.form+xml":{source:"iana"},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana"},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana"},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana"},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.tmd.mediaflex.api+xml":{source:"iana"},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana"},"application/vnd.wv.ssp+xml":{source:"iana"},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana"},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",extensions:["zaz"]},"application/voicexml+xml":{source:"iana",extensions:["vxml"]},"application/vq-rtcpxr":{source:"iana"},"application/watcherinfo+xml":{source:"iana"},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-otf":{source:"apache",compressible:!0,extensions:["otf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-ttf":{source:"apache",compressible:!0,extensions:["ttf","ttc"]},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"apache",extensions:["der","crt","pem"]},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana"},"application/xaml+xml":{source:"apache",extensions:["xaml"]},"application/xcap-att+xml":{source:"iana"},"application/xcap-caps+xml":{source:"iana"},"application/xcap-diff+xml":{source:"iana",extensions:["xdf"]},"application/xcap-el+xml":{source:"iana"},"application/xcap-error+xml":{source:"iana"},"application/xcap-ns+xml":{source:"iana"},"application/xcon-conference-info+xml":{source:"iana"},"application/xcon-conference-info-diff+xml":{source:"iana"},"application/xenc+xml":{source:"iana",extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache"},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana"},"application/xmpp+xml":{source:"iana"},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",extensions:["xpl"]},"application/xslt+xml":{source:"iana",extensions:["xslt"]},"application/xspf+xml":{source:"apache",extensions:["xspf"]},"application/xv+xml":{source:"iana",extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yin+xml":{source:"iana",extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana"},"audio/3gpp2":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana"},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana"},"audio/mp4":{source:"iana",compressible:!1,extensions:["mp4a","m4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tone":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/opentype":{compressible:!0,extensions:["otf"]},"image/bmp":{source:"apache",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/fits":{source:"iana"},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jp2":{source:"iana"},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jpm":{source:"iana"},"image/jpx":{source:"iana"},"image/ktx":{source:"iana",extensions:["ktx"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana"},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana"},"image/tiff":{source:"iana",compressible:!1,extensions:["tiff","tif"]},"image/tiff-fx":{source:"iana"},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana"},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana"},"image/vnd.valve.source.texture":{source:"iana"},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana"},"image/webp":{source:"apache",extensions:["webp"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana"},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana"},"message/global-delivery-status":{source:"iana"},"message/global-disposition-notification":{source:"iana"},"message/global-headers":{source:"iana"},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana"},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/vnd.collada+xml":{source:"iana",extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana"},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana"},"model/vnd.parasolid.transmit.binary":{source:"iana"},"model/vnd.parasolid.transmit.text":{source:"iana"},"model/vnd.valve.source.compiled-map":{source:"iana"},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana"},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana"},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana",compressible:!1},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/css":{source:"iana",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fwdred":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hjson":{extensions:["hjson"]},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{extensions:["less"]},"text/markdown":{source:"iana"},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["markdown","md","mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"apache"},"video/3gpp":{source:"apache",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"apache"},"video/3gpp2":{source:"apache",extensions:["3g2"]},"video/bmpeg":{source:"apache"},"video/bt656":{source:"apache"},"video/celb":{source:"apache"},"video/dv":{source:"apache"},"video/h261":{source:"apache",extensions:["h261"]},"video/h263":{source:"apache",extensions:["h263"]},"video/h263-1998":{source:"apache"},"video/h263-2000":{source:"apache"},"video/h264":{source:"apache",extensions:["h264"]},"video/h264-rcdo":{source:"apache"},"video/h264-svc":{source:"apache"},"video/jpeg":{source:"apache",extensions:["jpgv"]},"video/jpeg2000":{source:"apache"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/mj2":{source:"apache",extensions:["mj2","mjp2"]},"video/mp1s":{source:"apache"},"video/mp2p":{source:"apache"},"video/mp2t":{source:"apache",extensions:["ts"]},"video/mp4":{source:"apache",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"apache"},"video/mpeg":{source:"apache",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"apache"},"video/mpv":{source:"apache"},"video/nv":{source:"apache"},"video/ogg":{source:"apache",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"apache"},"video/pointer":{source:"apache"},"video/quicktime":{source:"apache",compressible:!1,extensions:["qt","mov"]},"video/raw":{source:"apache"},"video/rtp-enc-aescm128":{source:"apache"},"video/rtx":{source:"apache"},"video/smpte292m":{source:"apache"},"video/ulpfec":{source:"apache"},"video/vc1":{source:"apache"},"video/vnd.cctv":{source:"apache"},"video/vnd.dece.hd":{source:"apache",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"apache",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"apache"},"video/vnd.dece.pd":{source:"apache",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"apache",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"apache",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"apache"},"video/vnd.directv.mpeg-tts":{source:"apache"},"video/vnd.dlna.mpeg-tts":{source:"apache"},"video/vnd.dvb.file":{source:"apache",extensions:["dvb"]},"video/vnd.fvt":{source:"apache",extensions:["fvt"]},"video/vnd.hns.video":{source:"apache"},"video/vnd.iptvforum.1dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.1dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.2dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.2dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.ttsavc":{source:"apache"},"video/vnd.iptvforum.ttsmpeg2":{source:"apache"},"video/vnd.motorola.video":{source:"apache"},"video/vnd.motorola.videop":{source:"apache"},"video/vnd.mpegurl":{source:"apache",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"apache",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"apache"},"video/vnd.nokia.videovoip":{source:"apache"},"video/vnd.objectvideo":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"apache"},"video/vnd.sealed.mpeg4":{source:"apache"},"video/vnd.sealed.swf":{source:"apache"},"video/vnd.sealedmedia.softseal.mov":{source:"apache"},"video/vnd.uvvu.mp4":{source:"apache",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"apache",extensions:["viv"]},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}},{}],143:[function(e,t,n){"use strict";t.exports=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"]},{}],144:[function(e,t,n){"use strict";var a={};(t.exports=a).creature=e("./creature"),a.name=e("./name")},{"./creature":143,"./name":145}],145:[function(e,t,n){"use strict";t.exports=["#{Address.state} #{creature}"]},{}],146:[function(e,t,n){"use strict";t.exports=["United States","United States of America","USA"]},{}],147:[function(e,t,n){"use strict";var a={};(t.exports=a).default_country=e("./default_country"),a.postcode_by_state=e("./postcode_by_state")},{"./default_country":146,"./postcode_by_state":148}],148:[function(e,t,n){"use strict";t.exports={AL:"350##",AK:"995##",AS:"967##",AZ:"850##",AR:"717##",CA:"900##",CO:"800##",CT:"061##",DC:"204##",DE:"198##",FL:"322##",GA:"301##",HI:"967##",ID:"832##",IL:"600##",IN:"463##",IA:"510##",KS:"666##",KY:"404##",LA:"701##",ME:"042##",MD:"210##",MA:"026##",MI:"480##",MN:"555##",MS:"387##",MO:"650##",MT:"590##",NE:"688##",NV:"898##",NH:"036##",NJ:"076##",NM:"880##",NY:"122##",NC:"288##",ND:"586##",OH:"444##",OK:"730##",OR:"979##",PA:"186##",RI:"029##",SC:"299##",SD:"577##",TN:"383##",TX:"798##",UT:"847##",VT:"050##",VA:"222##",WA:"990##",WV:"247##",WI:"549##",WY:"831##"}},{}],149:[function(e,t,n){"use strict";var a={};(t.exports=a).title="United States (English)",a.internet=e("./internet"),a.address=e("./address"),a.phone_number=e("./phone_number")},{"./address":147,"./internet":151,"./phone_number":154}],150:[function(e,t,n){"use strict";t.exports=["com","us","biz","info","name","net","org"]},{}],151:[function(e,t,n){"use strict";var a={};(t.exports=a).domain_suffix=e("./domain_suffix")},{"./domain_suffix":150}],152:[function(e,t,n){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],153:[function(e,t,n){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],154:[function(e,t,n){"use strict";var a={};(t.exports=a).area_code=e("./area_code"),a.exchange_code=e("./exchange_code")},{"./area_code":152,"./exchange_code":153}],155:[function(e,t,n){"use strict";t.exports=function(a){var e=this,n=a.helpers;return e.word=function(e){return a.random.arrayElement(a.definitions.lorem.words)},e.words=function(e){void 0===e&&(e=3);for(var t=[],n=0;n>>a&1&&(n=l(n,c(t<>>30)),r),u[r]=c(4294967295&u[r])},this.init_by_array=function(e,t){var n,a,r,i,o;for(this.init_genrand(19650218),n=1,a=0,r=t>>30),1664525)),e[a]),a),u[n]=c(4294967295&u[n]),a++,s<=++n&&(u[0]=u[623],n=1),t<=a&&(a=0);for(r=623;r;r--)u[n]=(i=c((dbg=u[n])^p(c(u[n-1]^u[n-1]>>>30),1566083941)))<(o=n)?c(4294967296-(o-i)&4294967295):i-o,u[n]=c(4294967295&u[n]),s<=++n&&(u[0]=u[623],n=1);u[0]=2147483648};var i=[0,2567483615];this.genrand_int32=function(){var e;if(s<=r){var t;for(625==r&&this.init_genrand(5489),t=0;t<227;t++)e=c(u[t]&n|u[t+1]&a),u[t]=c(u[t+397]^e>>>1^i[1&e]);for(;t<623;t++)e=c(u[t]&n|u[t+1]&a),u[t]=c(u[t+-227]^e>>>1^i[1&e]);e=c(u[623]&n|u[0]&a),u[623]=c(u[396]^e>>>1^i[1&e]),r=0}return e=c((e=c((e=c((e=c((e=u[r++])^e>>>11))^e<<7&2636928640))^e<<15&4022730752))^e>>>18)},this.genrand_int31=function(){return this.genrand_int32()>>>1},this.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},this.genrand_real2=function(){return this.genrand_int32()*(1/4294967296)},this.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},this.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)}}var i=new(n.MersenneTwister19937=r);i.init_genrand((new Date).getTime()%1e9),n.rand=function(e,t){return void 0===e&&(t=0,e=32768),Math.floor(i.genrand_real2()*(e-t)+t)},n.seed=function(e){if("number"!=typeof e)throw new Error("seed(S) must take numeric argument; is "+(void 0===e?"undefined":a(e)));i.init_genrand(e)},n.seed_array=function(e){if("object"!=(void 0===e?"undefined":a(e)))throw new Error("seed_array(A) must take array of numbers; is "+(void 0===e?"undefined":a(e)));i.init_by_array(e)}},{}],162:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(e=e||0,"number"==typeof(t=t||100)&&"number"==typeof e)return function(e,t){if(tthis._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[n].priority+" New: "+t);this._arr[n].priority=t,this._decrease(n)},a.prototype._heapify=function(e){var t=this._arr,n=2*e,a=n+1,r=e;n>1].priority>1,l=-7,p=n?r-1:0,f=n?-1:1,d=e[t+p];for(p+=f,i=d&(1<<-l)-1,d>>=-l,l+=s;0>=-l,l+=a;0>1,f=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?0:i-1,m=a?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),2<=(t+=1<=o+p?f/u:f*Math.pow(2,1-p))*u&&(o++,u/=2),l<=o+p?(s=0,o=l):1<=o+p?(s=(t*u-1)*Math.pow(2,r),o+=p):(s=t*Math.pow(2,p-1)*Math.pow(2,r),o=0));8<=r;e[n+d]=255&s,d+=m,s/=256,r-=8);for(o=o<>>6)+fromCharCode(128|63&t):fromCharCode(224|t>>>12&15)+fromCharCode(128|t>>>6&63)+fromCharCode(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return fromCharCode(240|t>>>18&7)+fromCharCode(128|t>>>12&63)+fromCharCode(128|t>>>6&63)+fromCharCode(128|63&t)},re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(re_utob,cb_utob)},cb_encode=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(1>>18),b64chars.charAt(n>>>12&63),2<=t?"=":b64chars.charAt(n>>>6&63),1<=t?"=":b64chars.charAt(63&n)].join("")},btoa=global.btoa?function(e){return global.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},_encode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e)).toString("base64")}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e)).toString("base64")}:function(e){return btoa(utob(e))},encode=function(e,t){return t?_encode(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):_encode(String(e))},encodeURI=function(e){return encode(e,!0)},re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),cb_btou=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return fromCharCode(55296+(t>>>10))+fromCharCode(56320+(1023&t));case 3:return fromCharCode((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return fromCharCode((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(re_btou,cb_btou)},cb_decode=function(e){var t=e.length,n=t%4,a=(0>>16),fromCharCode(a>>>8&255),fromCharCode(255&a)];return r.length-=[0,0,2,1][n],r.join("")},atob=global.atob?function(e){return global.atob(e)}:function(e){return e.replace(/[\s\S]{1,4}/g,cb_decode)},_decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e,"base64")).toString()}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e,"base64")).toString()}:function(e){return btou(atob(e))},decode=function(e){return _decode(String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},noConflict=function(){var e=global.Base64;return global.Base64=_Base64,e};if(global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,__buffer__:buffer},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)})),Object.defineProperty(String.prototype,"toBase64",noEnum(function(e){return encode(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,!0)}))}}return global.Meteor&&(Base64=global.Base64),void 0!==module&&module.exports?module.exports.Base64=global.Base64:"function"==typeof define&&define.amd&&define([],function(){return global.Base64}),{Base64:global.Base64}},"object"===(void 0===exports?"undefined":_typeof(exports))&&void 0!==module?module.exports=J9(I9):"function"==typeof define&&define.amd?define(J9):J9(I9)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],190:[function(e,t,n){"use strict";var a=e("./lib/js-yaml.js");t.exports=a},{"./lib/js-yaml.js":191}],191:[function(e,t,n){"use strict";var a=e("./js-yaml/loader"),r=e("./js-yaml/dumper");function i(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=a.load,t.exports.loadAll=a.loadAll,t.exports.safeLoad=a.safeLoad,t.exports.safeLoadAll=a.safeLoadAll,t.exports.dump=r.dump,t.exports.safeDump=r.safeDump,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=i("scan"),t.exports.parse=i("parse"),t.exports.compose=i("compose"),t.exports.addConstructor=i("addConstructor")},{"./js-yaml/dumper":193,"./js-yaml/exception":194,"./js-yaml/loader":195,"./js-yaml/schema":197,"./js-yaml/schema/core":198,"./js-yaml/schema/default_full":199,"./js-yaml/schema/default_safe":200,"./js-yaml/schema/failsafe":201,"./js-yaml/schema/json":202,"./js-yaml/type":203}],192:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function r(e){return null==e}t.exports.isNothing=r,t.exports.isObject=function(e){return"object"===(void 0===e?"undefined":a(e))&&null!==e},t.exports.toArray=function(e){return Array.isArray(e)?e:r(e)?[]:[e]},t.exports.repeat=function(e,t){var n,a="";for(n=0;n=a.flowLevel;switch(W(r,n,a.indent,t,function(e){return function(e,t){var n,a;for(n=0,a=e.implicitTypes.length;n"+V(r,a.indent)+Y(I(function(e,t){var n,a,r=/(\n+)([^\n]*)/g,i=(s=e.indexOf("\n"),s=-1!==s?s:e.length,r.lastIndex=s,Z(e.slice(0,s),t)),o="\n"===e[0]||" "===e[0];var s;for(;a=r.exec(e);){var u=a[1],c=a[2];n=" "===c[0],i+=u+(o||n||""===c?"":"\n")+Z(c,t),o=n}return i}(r,t),e));case H:return'"'+function(e){for(var t,n,a,r="",i=0;it&&i tag resolver accepts not "'+u+'" style');a=s.represent[u](t,u)}e.dump=a}return!0}return!1}function Q(e,t,n,a,r,i){e.tag=null,e.dump=n,X(e,n,!1)||X(e,n,!0);var o=l.call(e.dump);a&&(a=e.flowLevel<0||e.flowLevel>t);var s,u,c="[object Object]"===o||"[object Array]"===o;if(c&&(u=-1!==(s=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||u||2!==e.indent&&0 "+e.dump)}return!0}function ee(e,t){var n,a,r=[],i=[];for(function e(t,n,a){var r,i,o;if(null!==t&&"object"===(void 0===t?"undefined":c(t)))if(-1!==(i=n.indexOf(t)))-1===a.indexOf(i)&&a.push(i);else if(n.push(t),Array.isArray(t))for(i=0,o=t.length;it)&&0!==a)z(e,"bad indentation of a sequence entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt)&&(G(e,t,x,!0,r)&&(h?d=e.result:m=e.result),h||(I(e,l,p,f,d,m,i,o),f=d=m=null),P(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)z(e,"bad indentation of a mapping entry");else if(e.lineIndentl&&(l=e.lineIndent),S(i))p++;else{if(e.lineIndent>10),56320+(u-65536&1023)),e.position++}else z(e,"unknown escape sequence");n=a=e.position}else S(s)?(B(e,n,a,!0),N(e,P(e,!1,t)),n=a=e.position):e.position===e.lineStart&&L(e)?z(e,"unexpected end of the document within a double quoted scalar"):(e.position++,a=e.position)}z(e,"unexpected end of the stream within a double quoted scalar")}(e,p)?h=!0:!function(e){var t,n,a;if(42!==(a=e.input.charCodeAt(e.position)))return!1;for(a=e.input.charCodeAt(++e.position),t=e.position;0!==a&&!j(a)&&!D(a);)a=e.input.charCodeAt(++e.position);return e.position===t&&z(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||z(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],P(e,!0,-1),!0}(e)?function(e,t,n){var a,r,i,o,s,u,c,l,p=e.kind,f=e.result;if(j(l=e.input.charCodeAt(e.position))||D(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(j(a=e.input.charCodeAt(e.position+1))||n&&D(a)))return!1;for(e.kind="scalar",e.result="",r=i=e.position,o=!1;0!==l;){if(58===l){if(j(a=e.input.charCodeAt(e.position+1))||n&&D(a))break}else if(35===l){if(j(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&L(e)||n&&D(l))break;if(S(l)){if(s=e.line,u=e.lineStart,c=e.lineIndent,P(e,!1,-1),e.lineIndent>=t){o=!0,l=e.input.charCodeAt(e.position);continue}e.position=i,e.line=s,e.lineStart=u,e.lineIndent=c;break}}o&&(B(e,r,i,!1),N(e,e.line-s),r=i=e.position,o=!1),C(l)||(i=e.position+1),l=e.input.charCodeAt(++e.position)}return B(e,r,i,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,p,v===n)&&(h=!0,null===e.tag&&(e.tag="?")):(h=!0,null===e.tag&&null===e.anchor||z(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(h=s&&U(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(u=0,c=e.implicitTypes.length;u tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):z(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):z(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||h}function K(e){var t,n,a,r,i=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(r=e.input.charCodeAt(e.position))&&(P(e,!0,-1),r=e.input.charCodeAt(e.position),!(0t/2-1){n=" ... ",a+=5;break}for(r="",i=this.position;it/2-1){r=" ... ",i-=5;break}return o=this.buffer.slice(a,i),s.repeat(" ",e)+n+o+r+"\n"+s.repeat(" ",e+this.position-a+n.length)+"^"},a.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},t.exports=a},{"./common":192}],197:[function(e,t,n){"use strict";var a=e("./common"),r=e("./exception"),i=e("./type");function o(e,t,a){var r=[];return e.include.forEach(function(e){a=o(e,t,a)}),e[t].forEach(function(n){a.forEach(function(e,t){e.tag===n.tag&&e.kind===n.kind&&r.push(t)}),a.push(n)}),a.filter(function(e,t){return-1===r.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new r("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=o(this,"implicit",[]),this.compiledExplicit=o(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{}};function a(e){n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|i.indexOf(a.charAt(t));return 0==(n=r%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===n?(s.push(o>>10&255),s.push(o>>2&255)):12===n&&s.push(o>>4&255),u?u.from?u.from(s):new u(s):s},predicate:function(e){return u&&u.isBuffer(e)},represent:function(e){var t,n,a="",r=0,i=e.length,o=c;for(t=0;t>18&63],a+=o[r>>12&63],a+=o[r>>6&63],a+=o[63&r]),r=(r<<8)+e[t];return 0==(n=i%3)?(a+=o[r>>18&63],a+=o[r>>12&63],a+=o[r>>6&63],a+=o[63&r]):2===n?(a+=o[r>>10&63],a+=o[r>>4&63],a+=o[r<<2&63],a+=o[64]):1===n&&(a+=o[r>>2&63],a+=o[r<<4&63],a+=o[64],a+=o[64]),a}})},{"../type":203}],205:[function(e,t,n){"use strict";var a=e("../type");t.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":203}],206:[function(e,t,n){"use strict";var a=e("../common"),r=e("../type"),i=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var o=/^[-+]?[0-9]+e/;t.exports=new r("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!i.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,a,r;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,r=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,a=1,r.forEach(function(e){t+=e*a,a*=60}),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||a.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(a.isNegativeZero(e))return"-0.0";return n=e.toString(10),o.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},{"../common":192,"../type":203}],207:[function(e,t,n){"use strict";var a=e("../common"),r=e("../type");t.exports=new r("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,a,r,i=e.length,o=0,s=!1;if(!i)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===i)return!0;if("b"===(t=e[++o])){for(o++;oi&&(n.maxLength=i),o&&n.minLengthr&&(s=s.substr(0,r))}return s},merge:g,clean:function t(n,e,a){return n&&"object"===(void 0===n?"undefined":m(n))?Array.isArray(n)?n=n.map(function(e){return t(e,!0,a)}).filter(function(e){return void 0!==e}):(Object.keys(n).forEach(function(e){a&&-1!==a.indexOf(e)?n[e]=t(n[e]):Array.isArray(n[e])&&!n[e].length&&delete n[e]}),Object.keys(n).length||!e?n:void 0):n},short:function(e){var t=JSON.stringify(e),n=JSON.stringify(e,null,2);return 400n.maximum?0:t.maximum,n.exclusiveMinimum=!0),void 0!==t.minLength&&(n.maxLength=t.minLength),void 0!==t.maxLength&&(n.minLength=t.maxLength>n.maxLength?0:t.maxLength),t.type)n.type=z.pick(d.ALL_TYPES.filter(function(e){return"number"===e||"integer"===e?"number"!==t.type&&"integer"!==t.type:e!==t.type}));else if(t.enum){do{var a=y()}while(-1!==t.enum.indexOf(a));n.enum=[a]}return t.required&&n.properties&&t.required.forEach(function(e){delete n.properties[e]}),n},anyValue:y,validate:function(t,e){return!e.every(function(e){return void 0!==e.minimum&&t>=e.minimum||void 0!==e.maximum&&t<=e.maximum||void 0})},isKey:function(e){return"enum"===e||"default"===e||"required"===e||"definitions"===e}},R=function(a){function e(e,t){var n=a.call(this)||this;return n.path=t,Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n.name="ParseError",n.message=e,n.path=t,n}return r.__extends(e,a),e}(Error),v={array:["additionalItems","items","maxItems","minItems","uniqueItems"],integer:["exclusiveMaximum","exclusiveMinimum","maximum","minimum","multipleOf"],object:["additionalProperties","dependencies","maxProperties","minProperties","patternProperties","properties","required"],string:["maxLength","minLength","pattern"]};v.number=v.integer;var b=["additionalItems","items","additionalProperties","dependencies","patternProperties","properties"];function w(e,n,a){return 0t&&(n=n.substr(0,t)),n}function j(){return z.date().toISOString()}var D={email:"[a-zA-Z\\d][a-zA-Z\\d-]{1,13}[a-zA-Z\\d]@{hostname}",hostname:"[a-zA-Z]{1,33}\\.[a-z]{2,4}",ipv6:"[a-f\\d]{4}(:[a-f\\d]{4}){7}",uri:"https?://[a-zA-Z][a-zA-Z0-9+-.]*","uri-reference":"(https?://|#|/|)[a-zA-Z][a-zA-Z0-9+-.]*"};function k(e,t){var n,a=p(e.format);if("function"==typeof a)return a(e);switch(e.format){case"date-time":case"datetime":return j();case"date":return j().slice(0,10);case"time":return j().slice(11);case"ipv4":return[0,0,0,0].map(function(){return z.number(0,255)}).join(".");case"regex":return".+?";case"email":case"hostname":case"ipv6":case"uri":case"uri-reference":return n=e.format,z.randexp(D[n]).replace(/\{(\w+)\}/,function(e,t){return z.randexp(D[t])});default:if(void 0!==a)throw new Error('unsupported format "'+e.format+'"');if(F("failOnInvalidFormat"))throw new Error("unknown registry key "+O.short(e.format));return t()}}var I={boolean:x,null:E,array:function(e,a,r,i){var t=[];if(!e.items&&!e.additionalItems){if(O.hasProperties(e,"minItems","maxItems","uniqueItems"))throw new R("missing items for "+O.short(e),a);return t}var n=e.items;if(n instanceof Array)return Array.prototype.concat.call(t,n.map(function(e,t){var n=a.concat(["items",t+""]);return i(e,n,r)}));var o=e.minItems,s=e.maxItems;F("minItems")&&void 0===o&&(o=s?Math.min(F("minItems"),s):F("minItems")),F("maxItems")&&(s&&s>F("maxItems")&&(s=F("maxItems")),o&&o>F("maxItems")&&(o=s));for(var u=!0===F("alwaysFakeOptionals")?1:F("optionalsProbability"),c=null!=s&&u?Math.round(s*u):z.number(o,s,1,5),l="object"===m(e.additionalItems)?e.additionalItems:{},p=t.length;pg){var j=0;do{if(1e3<(j+=1))break;var D=z.pick(c)}while(void 0!==r[D]);void 0===r[D]&&(r[D]=i[D],C+=1)}else{var k=B(1)+z.randexp("[a-f\\d]{1,3}");r[k]||(r[k]=d||T,C+=1)}l.forEach(function(e){var t=z.randexp(e);r[t]||(r[t]=o[e],C+=1)})}if(!u&&Cu.redirects)a(d({status:e.statusCode},"Error downloading %s. \nToo many redirects: \n %s",c[0],c.join(" \n ")));else{if(!e.headers.location)throw d({status:e.statusCode},"HTTP %d redirect with no location header",e.statusCode);h("HTTP %d redirect %s -> %s",e.statusCode,s.href,e.headers.location);var t=m.resolve(s,e.headers.location);o(t,u,c).then(n,a)}else n(e.body||new l(0))}).catch(function(e){a(d(e,"Error downloading",s.href))})})}(t,this)}}}).call(this,e("_process"),e("buffer").Buffer)},{"../util/debug":238,"../util/url":240,_process:264,buffer:20,http:301,https:184,ono:256}],238:[function(e,t,n){"use strict";var a=e("debug");t.exports=a("json-schema-ref-parser")},{debug:25}],239:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d=e("./debug");function m(e,t,n,a){var r=e[t];if("function"==typeof r)return r.apply(e,[n,a]);if(!a){if(r instanceof RegExp)return r.test(n.url);if("string"==typeof r)return r===n.extension;if(Array.isArray(r))return-1!==r.indexOf(n.extension)}return r}n.all=function(t){return Object.keys(t).filter(function(e){return"object"===a(t[e])}).map(function(e){return t[e].name=e,t[e]})},n.filter=function(e,t,n){return e.filter(function(e){return!!m(e,t,n)})},n.sort=function(e){return e.forEach(function(e){e.order=e.order||Number.MAX_SAFE_INTEGER}),e.sort(function(e,t){return e.order-t.order})},n.run=function(s,u,c){var l,p,f=0;return new Promise(function(t,n){function a(){if(!(l=s[f++]))return n(p);try{d(" %s",l.name);var e=m(l,u,c,r);e&&"function"==typeof e.then?e.then(i,o):void 0!==e&&i(e)}catch(e){o(e)}}function r(e,t){e?o(e):i(t)}function i(e){d(" success"),t({plugin:l,result:e})}function o(e){d(" %s",e.message||e),p=e,a()}a()})}},{"./debug":238}],240:[function(e,t,c){(function(n){"use strict";var r=/^win/.test(n.platform),i=/\//g,a=/^(\w{2,}):\/\//i,o=t.exports,s=[/\?/g,"%3F",/\#/g,"%23"],u=[/\%23/g,"#",/\%24/g,"$",/\%26/g,"&",/\%2C/g,",",/\%40/g,"@"];c.parse=e("url").parse,c.resolve=e("url").resolve,c.cwd=function(){return n.browser?location.href:n.cwd()+"/"},c.getProtocol=function(e){var t=a.exec(e);if(t)return t[1].toLowerCase()},c.getExtension=function(e){var t=e.lastIndexOf(".");return 0<=t?e.substr(t).toLowerCase():""},c.getHash=function(e){var t=e.indexOf("#");return 0<=t?e.substr(t):"#"},c.stripHash=function(e){var t=e.indexOf("#");return 0<=t&&(e=e.substr(0,t)),e},c.isHttp=function(e){var t=o.getProtocol(e);return"http"===t||"https"===t||void 0===t&&n.browser},c.isFileSystemPath=function(e){if(n.browser)return!1;var t=o.getProtocol(e);return void 0===t||"file"===t},c.fromFileSystemPath=function(e){r&&(e=e.replace(/\\/g,"/")),e=encodeURI(e);for(var t=0;t=n||(R.lastCommentStart=n,i={type:e,value:t},s.range&&(i.range=[n,a]),s.loc&&(i.loc=r),s.comments.push(i),s.attachComment&&(s.leadingComments.push(i),s.trailingComments.push(i)))}function v(e){var t,n,a,r;for(t=k-e,n={start:{line:l,column:k-p-e}};k>>="===(a=j.substr(k,4))?(k+=4,{type:A.Punctuator,value:a,lineNumber:l,lineStart:p,start:r,end:k}):">>>"===(n=a.substr(0,3))||"<<="===n||">>="===n?(k+=3,{type:A.Punctuator,value:n,lineNumber:l,lineStart:p,start:r,end:k}):o===(t=n.substr(0,2))[1]&&0<="+-<>&|".indexOf(o)||"=>"===t?(k+=2,{type:A.Punctuator,value:t,lineNumber:l,lineStart:p,start:r,end:k}):0<="<>=!+-*%&|^/".indexOf(o)?(++k,{type:A.Punctuator,value:o,lineNumber:l,lineStart:p,start:r,end:k}):void H({},C.UnexpectedToken,"ILLEGAL")}function I(){var e,t,n;if(f(i((n=j[k]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),t=k,e="","."!==n){if(e=j[k++],n=j[k],"0"===e){if("x"===n||"X"===n)return++k,function(e){for(var t="";k":case"<=":case">=":case"instanceof":n=7;break;case"in":n=t?7:0;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function fe(){var e,t,n,a,r;return r=O,e=function(){var e,t,n,a,r,i,o,s,u,c;if(e=O,u=le(),0===(r=pe(a=O,R.allowIn)))return u;for(a.prec=r,U(),t=[e,O],i=[u,a,o=le()];0<(r=pe(O,R.allowIn));){for(;2>="!==i&&">>>="!==i&&"&="!==i&&"^="!==i&&"|="!==i||(ee(t)||W({},C.InvalidLHSInAssignment),D&&t.type===S.Identifier&&y(t.name)&&W(e,C.StrictLHSAssignment),e=U(),n=de(),a=z.markEnd(z.createAssignmentExpression(e.value,t,n),r)),a}function me(){var e,t=O;if(e=de(),Z(",")){for(e=z.createSequenceExpression([e]);k",a[A.Identifier]="Identifier",a[A.Keyword]="Keyword",a[A.NullLiteral]="Null",a[A.NumericLiteral]="Numeric",a[A.Punctuator]="Punctuator",a[A.StringLiteral]="String",a[A.RegularExpression]="RegularExpression",n=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],S={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},m={Data:1,Get:2,Set:4},C={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},t={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},r={name:"SyntaxTree",processComment:function(e){var t,n;if(!(e.type===S.Program&&0=e.range[1]?(n=s.trailingComments,s.trailingComments=[]):s.trailingComments.length=0:0=e.range[1]&&(n=s.bottomRightStack[s.bottomRightStack.length-1].trailingComments,delete s.bottomRightStack[s.bottomRightStack.length-1].trailingComments);0=e.range[0];)t=s.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):0t[0].length)){if(t=n,a=i,this.options.backtrack_lexer){if(!1!==(e=this.test_match(n,r[i])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[a]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return 0 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};r.readFileSync&&(i.moduleInclude=r.readFileSync(e.resolve("../include/module.js")),i.actionInclude=r.readFileSync(e.resolve("../include/action.js"))),t.exports=i},{"./dict":245,fs:18}],247:[function(s,e,t){"use strict";var u=s("./aesprim"),r=s("./slice"),n=s("static-eval"),a=s("underscore").uniq,i=function(){return this.initialize.apply(this,arguments)};function o(t,e,n){var a=s("./index"),r=d(u.parse(e).body[0].expression,{"@":t.value}),i=n.replace(/\{\{\s*value\s*\}\}/g,r),o=a.nodes(t.value,i);return o.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),o}function c(e){return Array.isArray(e)}function l(u){return function(e,a,r,i){var t=e.value,n=e.path,o=[],s=function(t,n){var e;c(t)?(t.forEach(function(e,t){o.length>=i||r(t,e,a)&&o.push({path:n.concat(t),value:e})}),t.forEach(function(e,t){o.length>=i||u&&s(e,n.concat(t))})):(e=t)&&!(e instanceof Array)&&e instanceof Object&&(this.keys(t).forEach(function(e){o.length>=i||r(e,t[e],a)&&o.push({path:n.concat(e),value:t[e]})}),this.keys(t).forEach(function(e){o.length>=i||u&&s(t[e],n.concat(e))}))}.bind(this);return s(t,n),o}}function p(a){return function(e,t,n){return this.descend(t,e.expression.value,a,n)}}function f(a){return function(e,t,n){return this.traverse(t,e.expression.value,a,n)}}function d(){try{return n.apply(this,arguments)}catch(e){}}function m(e){return e=e.filter(function(e){return e}),a(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function h(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}i.prototype.initialize=function(){this.traverse=l(!0),this.descend=l()},i.prototype.keys=Object.keys,i.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),n=this._fns[t];if(!n)throw new Error("couldn't resolve key: "+t);return n.bind(this)},i.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},(i.prototype._fns={"member-child-identifier":function(e,t){var n=e.expression.value,a=t.value;if(a instanceof Object&&n in a)return[{value:a[n],path:t.path.concat(n)}]},"member-descendant-identifier":f(function(e,t,n){return e==n}),"subscript-child-numeric_literal":p(function(e,t,n){return e===n}),"member-child-numeric_literal":p(function(e,t,n){return String(e)===String(n)}),"subscript-descendant-numeric_literal":f(function(e,t,n){return e===n}),"member-child-wildcard":p(function(){return!0}),"member-descendant-wildcard":f(function(){return!0}),"subscript-descendant-wildcard":f(function(){return!0}),"subscript-child-wildcard":p(function(){return!0}),"subscript-child-slice":function(e,n){if(c(n.value)){var t=e.expression.value.split(":").map(h),a=n.value.map(function(e,t){return{value:e,path:n.path.concat(t)}});return r.apply(null,[a].concat(t))}},"subscript-child-union":function(e,a){var r=[];return e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},n=this.resolve(t)(t,a);n&&(r=r.concat(n))},this),m(r)},"subscript-descendant-union":function(e,t,n){var a=s(".."),r=this,i=[];return a.nodes(t,"$..*").slice(1).forEach(function(a){i.length>=n||e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},n=r.resolve(t)(t,a);i=i.concat(n)})}),m(i)},"subscript-child-filter_expression":function(e,t,n){var a=e.expression.value.slice(2,-1),r=u.parse(a).body[0].expression;return this.descend(t,null,function(e,t){return d(r,{"@":t})},n)},"subscript-descendant-filter_expression":function(e,t,n){var a=e.expression.value.slice(2,-1),r=u.parse(a).body[0].expression;return this.traverse(t,null,function(e,t){return d(r,{"@":t})},n)},"subscript-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$..value")}})["subscript-child-string_literal"]=i.prototype._fns["member-child-identifier"],i.prototype._fns["member-descendant-numeric_literal"]=i.prototype._fns["subscript-descendant-string_literal"]=i.prototype._fns["member-descendant-identifier"],e.exports=i},{"..":244,"./aesprim":242,"./index":248,"./slice":250,"static-eval":285,underscore:317}],248:[function(e,t,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p=e("assert"),r=e("./dict"),a=e("./parser"),i=e("./handlers"),s=function(){this.initialize.apply(this,arguments)};function u(e){return"[object String]"==Object.prototype.toString.call(e)}s.prototype.initialize=function(){this.parser=new a,this.handlers=new i},s.prototype.parse=function(e){return p.ok(u(e),"we need a path"),this.parser.parse(e)},s.prototype.parent=function(e,t){p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path");var n=this.nodes(e,t)[0];n.path.pop();return this.value(e,n.path)},s.prototype.apply=function(r,e,i){p.ok(r instanceof Object,"obj needs to be an object"),p.ok(e,"we need a path"),p.equal(void 0===i?"undefined":o(i),"function","fn needs to be function");var t=this.nodes(r,e).sort(function(e,t){return t.path.length-e.path.length});return t.forEach(function(e){var t=e.path.pop(),n=this.value(r,this.stringify(e.path)),a=e.value=i.call(r,n[t]);n[t]=a},this),t},s.prototype.value=function(e,t,n){if(p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),3<=arguments.length){var a=this.nodes(e,t).shift();if(!a)return this._vivify(e,t,n);var r=a.path.slice(-1).shift();this.parent(e,this.stringify(a.path))[r]=n}return this.query(e,this.stringify(t),1).shift()},s.prototype._vivify=function(i,e,t){var o=this;p.ok(i instanceof Object,"obj needs to be an object"),p.ok(e,"we need a path");return function e(t,n){var a=t.pop(),r=o.value(i,t);r||(e(t.concat(),"string"==typeof a?{}:[]),r=o.value(i,t)),r[a]=n}(this.parser.parse(e).map(function(e){return e.expression.value}),t),this.query(i,e)[0]},s.prototype.query=function(e,t,n){return p.ok(e instanceof Object,"obj needs to be an object"),p.ok(u(t),"we need a path"),this.nodes(e,t,n).map(function(e){return e.value})},s.prototype.paths=function(e,t,n){return p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),this.nodes(e,t,n).map(function(e){return e.path})},s.prototype.nodes=function(e,t,o){if(p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),0===o)return[];var s=this.parser.parse(t),u=this.handlers,c=[{path:["$"],value:e}],l=[];return s.length&&"root"==s[0].expression.type&&s.shift(),s.length?(s.forEach(function(n,a){if(!(l.length>=o)){var r=u.resolve(n),i=[];c.forEach(function(e){if(!(l.length>=o)){var t=r(n,e,o);a==s.length-1?l=l.concat(t||[]):i=i.concat(t||[])}}),c=i}}),o?l.slice(0,o):l):c},s.prototype.stringify=function(e){p.ok(e,"we need a path");var r="$",i={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return(e=this._normalize(e)).forEach(function(e){if("root"!=e.expression.type){var t,n=[e.scope,e.operation].join("-"),a=i[n];if(t="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!a)throw new Error("couldn't find template "+n);r+=a.replace(/{{value}}/,t)}}),r},s.prototype._normalize=function(e){if(p.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var a=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,t){if("$"!=e||0!==t)if("string"==typeof e&&e.match("^"+r.identifier+"$"))a.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var n="number"==typeof e?"numeric_literal":"string_literal";a.push({operation:"subscript",scope:"child",expression:{value:e,type:n}})}}),a}if(Array.isArray(e)&&"object"==o(e[0]))return e;throw new Error("couldn't understand path "+e)},s.Handlers=i,s.Parser=a;var c=new s;c.JSONPath=s,t.exports=c},{"./dict":245,"./handlers":247,"./parser":249,assert:12}],249:[function(e,t,n){"use strict";var a=e("./grammar"),r=e("../generated/parser"),i=function(){var e=new r.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};i.grammar=a,t.exports=i},{"../generated/parser":243,"./grammar":246}],250:[function(e,t,n){"use strict";function s(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,n,a){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof n)throw new Error("end cannot be a string");if("string"==typeof a)throw new Error("step cannot be a string");var r=e.length;if(0===a)throw new Error("step cannot be zero");if(a=a?s(a):1,n=n<0?r+n:n,t=s(0===(t=t<0?r+t:t)?0:t||(0"']/g,Uo=RegExp(Lo.source),$o=RegExp(No.source),qo=/<%-([\s\S]+?)%>/g,Go=/<%([\s\S]+?)%>/g,Ko=/<%=([\s\S]+?)%>/g,Ho=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wo=/^\w*$/,Jo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vo=/[\\^$.*+?()[\]{}|]/g,Yo=RegExp(Vo.source),Zo=/^\s+|\s+$/g,Xo=/^\s+/,Qo=/\s+$/,es=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ts=/\{\n\/\* \[wrapped with (.+)\] \*/,ns=/,? & /,as=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,rs=/\\(\\)?/g,is=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,os=/\w*$/,ss=/^[-+]0x[0-9a-f]+$/i,us=/^0b[01]+$/i,cs=/^\[object .+?Constructor\]$/,ls=/^0o[0-7]+$/i,ps=/^(?:0|[1-9]\d*)$/,fs=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ds=/($^)/,ms=/['\n\r\u2028\u2029\\]/g,e="\\ud800-\\udfff",t="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",n="\\u2700-\\u27bf",a="a-z\\xdf-\\xf6\\xf8-\\xff",r="A-Z\\xc0-\\xd6\\xd8-\\xde",i="\\ufe0e\\ufe0f",o="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",s="["+e+"]",u="["+o+"]",c="["+t+"]",l="\\d+",p="["+n+"]",f="["+a+"]",d="[^"+e+o+l+n+a+r+"]",m="\\ud83c[\\udffb-\\udfff]",h="[^"+e+"]",g="(?:\\ud83c[\\udde6-\\uddff]){2}",y="[\\ud800-\\udbff][\\udc00-\\udfff]",v="["+r+"]",b="(?:"+f+"|"+d+")",w="(?:"+v+"|"+d+")",x="(?:['’](?:d|ll|m|re|s|t|ve))?",E="(?:['’](?:D|LL|M|RE|S|T|VE))?",_="(?:"+c+"|"+m+")"+"?",A="["+i+"]?",S=A+_+("(?:\\u200d(?:"+[h,g,y].join("|")+")"+A+_+")*"),C="(?:"+[p,g,y].join("|")+")"+S,j="(?:"+[h+c+"?",c,g,y,s].join("|")+")",hs=RegExp("['’]","g"),gs=RegExp(c,"g"),D=RegExp(m+"(?="+m+")|"+j+S,"g"),ys=RegExp([v+"?"+f+"+"+x+"(?="+[u,v,"$"].join("|")+")",w+"+"+E+"(?="+[u,v+b,"$"].join("|")+")",v+"?"+b+"+"+x,v+"+"+E,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",l,C].join("|"),"g"),k=RegExp("[\\u200d"+e+t+i+"]"),vs=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,bs=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ws=-1,xs={};xs[jo]=xs[Do]=xs[ko]=xs[Fo]=xs[zo]=xs[Oo]=xs[Ro]=xs[Bo]=xs[To]=!0,xs[uo]=xs[co]=xs[So]=xs[lo]=xs[Co]=xs[po]=xs[fo]=xs[mo]=xs[go]=xs[yo]=xs[vo]=xs[wo]=xs[xo]=xs[Eo]=xs[Ao]=!1;var Es={};Es[uo]=Es[co]=Es[So]=Es[Co]=Es[lo]=Es[po]=Es[jo]=Es[Do]=Es[ko]=Es[Fo]=Es[zo]=Es[go]=Es[yo]=Es[vo]=Es[wo]=Es[xo]=Es[Eo]=Es[_o]=Es[Oo]=Es[Ro]=Es[Bo]=Es[To]=!0,Es[fo]=Es[mo]=Es[Ao]=!1;var F={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},_s=parseFloat,As=parseInt,z="object"==(void 0===L?"undefined":wu(L))&&L&&L.Object===Object&&L,O="object"==("undefined"==typeof self?"undefined":wu(self))&&self&&self.Object===Object&&self,Ss=z||O||Function("return this")(),R="object"==(void 0===U?"undefined":wu(U))&&U&&!U.nodeType&&U,B=R&&"object"==(void 0===N?"undefined":wu(N))&&N&&!N.nodeType&&N,Cs=B&&B.exports===R,T=Cs&&z.process,I=function(){try{var e=B&&B.require&&B.require("util").types;return e||T&&T.binding&&T.binding("util")}catch(e){}}(),js=I&&I.isArrayBuffer,Ds=I&&I.isDate,ks=I&&I.isMap,Fs=I&&I.isRegExp,zs=I&&I.isSet,Os=I&&I.isTypedArray;function Rs(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Bs(e,t,n,a){for(var r=-1,i=null==e?0:e.length;++r":">",'"':""","'":"'"});function cu(e){return"\\"+F[e]}function lu(e){return k.test(e)}function pu(e){var n=-1,a=Array(e.size);return e.forEach(function(e,t){a[++n]=[t,e]}),a}function fu(t,n){return function(e){return t(n(e))}}function du(e,t){for(var n=-1,a=e.length,r=0,i=[];++n",""":'"',"'":"'"});var bu=function e(t){var n,D=(t=null==t?Ss:bu.defaults(Ss.Object(),t,bu.pick(Ss,bs))).Array,a=t.Date,r=t.Error,g=t.Function,i=t.Math,A=t.Object,y=t.RegExp,l=t.String,k=t.TypeError,o=D.prototype,s=g.prototype,p=A.prototype,u=t["__core-js_shared__"],c=s.toString,S=p.hasOwnProperty,f=0,d=(n=/[^.]+$/.exec(u&&u.keys&&u.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",m=p.toString,h=c.call(A),v=Ss._,b=y("^"+c.call(S).replace(Vo,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),w=Cs?t.Buffer:eo,x=t.Symbol,E=t.Uint8Array,_=w?w.allocUnsafe:eo,C=fu(A.getPrototypeOf,A),j=A.create,F=p.propertyIsEnumerable,z=o.splice,O=x?x.isConcatSpreadable:eo,R=x?x.iterator:eo,B=x?x.toStringTag:eo,T=function(){try{var e=Nn(A,"defineProperty");return e({},"",{}),e}catch(e){}}(),I=t.clearTimeout!==Ss.clearTimeout&&t.clearTimeout,M=a&&a.now!==Ss.Date.now&&a.now,P=t.setTimeout!==Ss.setTimeout&&t.setTimeout,L=i.ceil,N=i.floor,U=A.getOwnPropertySymbols,$=w?w.isBuffer:eo,q=t.isFinite,G=o.join,K=fu(A.keys,A),H=i.max,W=i.min,J=a.now,V=t.parseInt,Y=i.random,Z=o.reverse,X=Nn(t,"DataView"),Q=Nn(t,"Map"),ee=Nn(t,"Promise"),te=Nn(t,"Set"),ne=Nn(t,"WeakMap"),ae=Nn(A,"create"),re=ne&&new ne,ie={},oe=da(X),se=da(Q),ue=da(ee),ce=da(te),le=da(ne),pe=x?x.prototype:eo,fe=pe?pe.valueOf:eo,de=pe?pe.toString:eo;function me(e){if(Fr(e)&&!br(e)&&!(e instanceof ve)){if(e instanceof ye)return e;if(S.call(e,"__wrapped__"))return ma(e)}return new ye(e)}var he=function(){function n(){}return function(e){if(!kr(e))return{};if(j)return j(e);n.prototype=e;var t=new n;return n.prototype=eo,t}}();function ge(){}function ye(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=eo}function ve(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=oo,this.__views__=[]}function be(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t>>0,t>>>=0;for(var i=D(r);++a>>1,o=e[i];null!==o&&!Mr(o)&&(n?o<=t:o>>0)?(e=Wr(e))&&("string"==typeof t||null!=t&&!Br(t))&&!(t=Mt(t))&&lu(e)?Vt(yu(e),0,n):e.split(t,n):[]},me.spread=function(a,r){if("function"!=typeof a)throw new k(to);return r=null==r?0:H(qr(r),0),At(function(e){var t=e[r],n=Vt(e,0,r);return t&&$s(n,t),Rs(a,this,n)})},me.tail=function(e){var t=null==e?0:e.length;return t?zt(e,1,t):[]},me.take=function(e,t,n){return e&&e.length?zt(e,0,(t=n||t===eo?1:qr(t))<0?0:t):[]},me.takeRight=function(e,t,n){var a=null==e?0:e.length;return a?zt(e,(t=a-(t=n||t===eo?1:qr(t)))<0?0:t,a):[]},me.takeRightWhile=function(e,t){return e&&e.length?Ut(e,Mn(t,3),!1,!0):[]},me.takeWhile=function(e,t){return e&&e.length?Ut(e,Mn(t,3)):[]},me.tap=function(e,t){return t(e),e},me.throttle=function(e,t,n){var a=!0,r=!0;if("function"!=typeof e)throw new k(to);return kr(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),or(e,t,{leading:a,maxWait:t,trailing:r})},me.thru=$a,me.toArray=Ur,me.toPairs=di,me.toPairsIn=mi,me.toPath=function(e){return br(e)?Us(e,fa):Mr(e)?[e]:an(pa(Wr(e)))},me.toPlainObject=Hr,me.transform=function(e,a,r){var t=br(e),n=t||_r(e)||Pr(e);if(a=Mn(a,4),null==r){var i=e&&e.constructor;r=n?t?new i:[]:kr(e)&&Cr(i)?he(C(e)):{}}return(n?Ts:Je)(e,function(e,t,n){return a(r,e,t,n)}),r},me.unary=function(e){return nr(e,1)},me.union=Fa,me.unionBy=za,me.unionWith=Oa,me.uniq=function(e){return e&&e.length?Pt(e):[]},me.uniqBy=function(e,t){return e&&e.length?Pt(e,Mn(t,2)):[]},me.uniqWith=function(e,t){return t="function"==typeof t?t:eo,e&&e.length?Pt(e,eo,t):[]},me.unset=function(e,t){return null==e||Lt(e,t)},me.unzip=Ra,me.unzipWith=Ba,me.update=function(e,t,n){return null==e?e:Nt(e,t,Ht(n))},me.updateWith=function(e,t,n,a){return a="function"==typeof a?a:eo,null==e?e:Nt(e,t,Ht(n),a)},me.values=hi,me.valuesIn=function(e){return null==e?[]:au(e,si(e))},me.without=Ta,me.words=Ci,me.wrap=function(e,t){return fr(Ht(t),e)},me.xor=Ia,me.xorBy=Ma,me.xorWith=Pa,me.zip=La,me.zipObject=function(e,t){return Gt(e||[],t||[],ke)},me.zipObjectDeep=function(e,t){return Gt(e||[],t||[],jt)},me.zipWith=Na,me.entries=di,me.entriesIn=mi,me.extend=Vr,me.extendWith=Yr,Ii(me,me),me.add=Hi,me.attempt=ji,me.camelCase=gi,me.capitalize=yi,me.ceil=Wi,me.clamp=function(e,t,n){return n===eo&&(n=t,t=eo),n!==eo&&(n=(n=Kr(n))==n?n:0),t!==eo&&(t=(t=Kr(t))==t?t:0),Te(Kr(e),t,n)},me.clone=function(e){return Ie(e,4)},me.cloneDeep=function(e){return Ie(e,5)},me.cloneDeepWith=function(e,t){return Ie(e,5,t="function"==typeof t?t:eo)},me.cloneWith=function(e,t){return Ie(e,4,t="function"==typeof t?t:eo)},me.conformsTo=function(e,t){return null==t||Me(e,t,oi(t))},me.deburr=vi,me.defaultTo=function(e,t){return null==e||e!=e?t:e},me.divide=Ji,me.endsWith=function(e,t,n){e=Wr(e),t=Mt(t);var a=e.length,r=n=n===eo?a:Te(qr(n),0,a);return 0<=(n-=t.length)&&e.slice(n,r)==t},me.eq=hr,me.escape=function(e){return(e=Wr(e))&&$o.test(e)?e.replace(No,uu):e},me.escapeRegExp=function(e){return(e=Wr(e))&&Yo.test(e)?e.replace(Vo,"\\$&"):e},me.every=function(e,t,n){var a=br(e)?Ms:$e;return n&&Jn(e,t,n)&&(t=eo),a(e,Mn(t,3))},me.find=Ka,me.findIndex=va,me.findKey=function(e,t){return Hs(e,Mn(t,3),Je)},me.findLast=Ha,me.findLastIndex=ba,me.findLastKey=function(e,t){return Hs(e,Mn(t,3),Ve)},me.floor=Vi,me.forEach=Wa,me.forEachRight=Ja,me.forIn=function(e,t){return null==e?e:He(e,Mn(t,3),si)},me.forInRight=function(e,t){return null==e?e:We(e,Mn(t,3),si)},me.forOwn=function(e,t){return e&&Je(e,Mn(t,3))},me.forOwnRight=function(e,t){return e&&Ve(e,Mn(t,3))},me.get=ti,me.gt=gr,me.gte=yr,me.has=function(e,t){return null!=e&&Gn(e,t,tt)},me.hasIn=ni,me.head=xa,me.identity=Oi,me.includes=function(e,t,n,a){e=xr(e)?e:hi(e),n=n&&!a?qr(n):0;var r=e.length;return n<0&&(n=H(r+n,0)),Ir(e)?n<=r&&-1=W(r=t,i=n)&&a=this.__values__.length;return{done:e,value:e?eo:this.__values__[this.__index__++]}},me.prototype.plant=function(e){for(var t,n=this;n instanceof ge;){var a=ma(n);a.__index__=0,a.__values__=eo,t?r.__wrapped__=a:t=a;var r=a;n=n.__wrapped__}return r.__wrapped__=e,t},me.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof ve){var t=e;return this.__actions__.length&&(t=new ve(this)),(t=t.reverse()).__actions__.push({func:$a,args:[ka],thisArg:eo}),new ye(t,this.__chain__)}return this.thru(ka)},me.prototype.toJSON=me.prototype.valueOf=me.prototype.value=function(){return $t(this.__wrapped__,this.__actions__)},me.prototype.first=me.prototype.head,R&&(me.prototype[R]=function(){return this}),me}();"function"==typeof define&&"object"==wu(define.amd)&&define.amd?(Ss._=bu,define(function(){return bu})):B?((B.exports=bu)._=bu,R._=bu):Ss._=bu}).call(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],254:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function i(e,t,n){if(!(et.highWaterMark&&(t.highWaterMark=(h<=(n=e)?n=h:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var n}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(w("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?y.nextTick(_,e):_(e))}function _(e){w("emit readable"),e.emit("readable"),D(e)}function A(e,t){t.readingMore||(t.readingMore=!0,y.nextTick(S,e,t))}function S(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var a;ei.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0===(e-=o)){o===i.length?(++a,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=i.slice(o);break}++a}return t.length-=a,r}(e,t):function(e,t){var n=c.allocUnsafe(e),a=t.head,r=1;a.data.copy(n),e-=a.data.length;for(;a=a.next;){var i=a.data,o=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,o),0===(e-=o)){o===i.length?(++r,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a).data=i.slice(o);break}++r}return t.length-=r,n}(e,t);return a}(e,t.buffer,t.decoder),n);var n}function F(e){var t=e._readableState;if(0=t.highWaterMark||t.ended))return w("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?F(this):E(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&F(this),null;var a,r=t.needReadable;return w("need readable",r),(0===t.length||t.length-e>>0),i=this.head,o=0;i;)t=i.data,n=r,a=o,t.copy(n,a),o+=i.data.length,i=i.next;return r},e}(),a&&a.inspect&&a.inspect.custom&&(t.exports.prototype[a.inspect.custom]=function(){var e=a.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":283,util:17}],275:[function(e,t,n){"use strict";var i=e("process-nextick-args");function o(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var n=this,a=this._readableState&&this._readableState.destroyed,r=this._writableState&&this._writableState.destroyed;return a||r?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||i.nextTick(o,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(i.nextTick(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":263}],276:[function(e,t,n){"use strict";t.exports=e("events").EventEmitter},{events:39}],277:[function(e,t,n){"use strict";(((n=t.exports=e("./lib/_stream_readable.js")).Stream=n).Readable=n).Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":269,"./lib/_stream_passthrough.js":270,"./lib/_stream_readable.js":271,"./lib/_stream_transform.js":272,"./lib/_stream_writable.js":273}],278:[function(e,t,n){"use strict";var y=e("./util"),v=e("./types"),b=e("./sets"),w=e("./positions");t.exports=function(t){var e,n,a=0,r={type:v.ROOT,stack:[]},i=r,o=r.stack,s=[],u=function(e){y.error(t,"Nothing to repeat at column "+(e-1))},c=y.strToChars(t);for(e=c.length;a"===l?c="===l?c<=o:"|"===l?o|c:"&"===l?o&c:"^"===l?o^c:"&&"===l?o&&c:"||"===l?o||c:C}if("Identifier"===t.type)return{}.hasOwnProperty.call(S,t.name)?S[t.name]:C;if("ThisExpression"===t.type)return{}.hasOwnProperty.call(S,"this")?S.this:C;if("CallExpression"===t.type){var p=e(t.callee);if(p===C)return C;if("function"!=typeof p)return C;var f=t.callee.object?e(t.callee.object):C;f===C&&(f=null);var d=[];for(i=0,o=t.arguments.length;i":u.Relational,"<=":u.Relational,">=":u.Relational,in:u.Relational,instanceof:u.Relational,"<<":u.BitwiseSHIFT,">>":u.BitwiseSHIFT,">>>":u.BitwiseSHIFT,"+":u.Additive,"-":u.Additive,"*":u.Multiplicative,"%":u.Multiplicative,"/":u.Multiplicative};var D=7,k=1;function F(e,t){var n="";for(t|=0;0>>=1,e+=e)1&t&&(n+=e);return n}function z(e){var t=e.length;return t&&h.code.isLineTerminator(e.charCodeAt(t-1))}function a(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function O(e,t){var n,a;function r(e){return"object"===(void 0===e?"undefined":X(e))&&e instanceof Object&&!(e instanceof RegExp)}for(n in t)t.hasOwnProperty(n)&&(r(a=t[n])?r(e[n])?O(e[n],a):e[n]=O({},a):e[n]=a);return e}function R(e,t){return 8232==(-2&e)?(t?"u":"\\u")+(8232===e?"2028":"2029"):10===e||13===e?(t?"":"\\")+(10===e?"n":"r"):String.fromCharCode(e)}function B(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function T(e,t){if(!S)return Array.isArray(e)?function e(t){var n,a,r,i="";for(n=0,a=t.length;n")),e.expression?(t.push(p),"{"===(n=this.generateExpression(e.body,u.Assignment,D)).toString().charAt(0)&&(n=["(",n,")"]),t.push(n)):t.push(this.maybeBlock(e.body,9)),t},K.prototype.generateIterationForStatement=function(e,t,n){var a=["for"+p+(t.await?"await"+p:"")+"("],r=this;return L(function(){t.left.type===m.VariableDeclaration?L(function(){a.push(t.left.kind+I()),a.push(r.generateStatement(t.left.declarations[0],0))}):a.push(r.generateExpression(t.left,u.Call,D)),a=[M(a=M(a,e),r.generateExpression(t.right,u.Sequence,D)),")"]}),a.push(this.maybeBlock(t.body,n)),a},K.prototype.generatePropertyKey=function(e,t){var n=[];return t&&n.push("["),n.push(this.generateExpression(e,u.Sequence,D)),t&&n.push("]"),n},K.prototype.generateAssignment=function(e,t,n,a,r){return u.Assignment=4.0"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.6.1"},repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.11.0"}},{}],288:[function(s,e,t){"use strict";var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function e(t){var n,g,u,a,r,o,y,v,b;function c(e){var t,n,a={};for(t in e)e.hasOwnProperty(t)&&("object"===(void 0===(n=e[t])?"undefined":f(n))&&null!==n?a[t]=c(n):a[t]=n);return a}function w(e,t){this.parent=e,this.key=t}function x(e,t,n,a){this.node=e,this.path=t,this.wrap=n,this.ref=a}function i(){}function E(e){return null!=e&&("object"===(void 0===e?"undefined":f(e))&&"string"==typeof e.type)}function _(e,t){return(e===n.ObjectExpression||e===n.ObjectPattern)&&"properties"===t}function l(e,t){return(new i).traverse(e,t)}function p(t,e){var n;return n=function(e,t){var n,a,r,i;for(a=e.length,r=0;a;)t(e[i=r+(n=a>>>1)])?a=n:(r=i+1,a-=n+1);return r}(e,function(e){return e.range[0]>t.range[0]}),t.extendedRange=[t.range[0],t.range[1]],n!==e.length&&(t.extendedRange[1]=e[n].range[0]),0<=(n-=1)&&(t.extendedRange[0]=e[n].range[1]),t}return(g=Array.isArray)||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),r=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}(),o=Object.keys||function(e){var t,n=[];for(t in e)n.push(t);return n},n={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},a={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},u={Break:y={},Skip:v={},Remove:b={}},w.prototype.replace=function(e){this.parent[this.key]=e},w.prototype.remove=function(){return g(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},i.prototype.path=function(){var e,t,n,a,r;function i(e,t){if(g(t))for(n=0,a=t.length;ne.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),s.splice(o,1)):o+=1;return o===s.length?u.Break:s[o].extendedRange[0]>e.range[1]?u.Skip:void 0}}),o=0,l(e,{leave:function(e){for(var t;oe.range[1]?u.Skip:void 0}}),e},t.VisitorKeys=a,t.VisitorOption=u,t.Controller=i,t.cloneEnvironment=function(){return e({})},t}(t)},{"./package.json":289}],289:[function(e,t,n){t.exports={_from:"estraverse@^4.2.0",_id:"estraverse@4.2.0",_inBundle:!1,_integrity:"sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",_location:"/static-eval/estraverse",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"estraverse@^4.2.0",name:"estraverse",escapedName:"estraverse",rawSpec:"^4.2.0",saveSpec:null,fetchSpec:"^4.2.0"},_requiredBy:["/static-eval/escodegen"],_resolved:"https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",_shasum:"0dee3fed31fcd469618ce7342099fc1afa0bdb13",_spec:"estraverse@^4.2.0",_where:"/Users/jcwhitlock/development/sway/node_modules/static-eval/node_modules/escodegen",bugs:{url:"https://github.com/estools/estraverse/issues"},bundleDependencies:!1,deprecated:!1,description:"ECMAScript JS AST traversal functions",devDependencies:{"babel-preset-es2015":"^6.3.13","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.2.1",jshint:"^2.5.6",mocha:"^2.1.0"},engines:{node:">=0.10.0"},homepage:"https://github.com/estools/estraverse",license:"BSD-2-Clause",main:"estraverse.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"estraverse",repository:{type:"git",url:"git+ssh://git@github.com/estools/estraverse.git"},scripts:{lint:"jshint estraverse.js",test:"npm run-script lint && npm run-script unit-test","unit-test":"mocha --compilers js:babel-register"},version:"4.2.0"}},{}],290:[function(e,t,n){"use strict";var i=e("./util"),o=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function u(){this._array=[],this._set=s?new Map:Object.create(null)}u.fromArray=function(e,t){for(var n=new u,a=0,r=e.length;a>>=5)&&(t|=32),a+=l.encode(t),0>1,1==(1&i)?-o:o),n.rest=t}},{"./base64":292}],292:[function(e,t,n){"use strict";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},d.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(0<=n)return this.sourcesContent[n];var a,r=e;if(null!=this.sourceRoot&&(r=b.relative(this.sourceRoot,r)),null!=this.sourceRoot&&(a=b.urlParse(this.sourceRoot))){var i=r.replace(/^file:\/\//,"");if("file"==a.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!a.path||"/"==a.path)&&this._sources.has("/"+r))return this.sourcesContent[this._sources.indexOf("/"+r)]}if(t)return null;throw new Error('"'+r+'" is not in the SourceMap.')},d.prototype.generatedPositionFor=function(e){var t=b.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:b.getArg(e,"line"),originalColumn:b.getArg(e,"column")},a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",b.compareByOriginalPositions,b.getArg(e,"bias",o.GREATEST_LOWER_BOUND));if(0<=a){var r=this._originalMappings[a];if(r.source===n.source)return{line:b.getArg(r,"generatedLine",null),column:b.getArg(r,"generatedColumn",null),lastColumn:b.getArg(r,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=d,(a.prototype=Object.create(o.prototype)).constructor=o,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;tt._pos){var a=n.substr(t._pos);if("x-user-defined"===t._charset){for(var r=new p(a.length),i=0;it._pos&&(t.push(new p(new Uint8Array(o.result.slice(t._pos)))),t._pos=o.result.byteLength)},o.onload=function(){t.push(null)},o.readAsArrayBuffer(n)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n("buffer").Buffer)},{"./capability":302,_process:264,buffer:20,inherits:186,"readable-stream":277}],305:[function(e,t,n){"use strict";var a=e("safe-buffer").Buffer,r=a.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(a.isEncoding===r||!r(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=p,t=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},i.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},i.prototype.then=function(e,t){if(!this._fullfilledPromise){var r=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,a){r.end(function(e,t){e?a(e):n(t)})})}return this._fullfilledPromise.then(e,t)},i.prototype.catch=function(e){return this.then(void 0,e)},i.prototype.use=function(e){return e(this),this},i.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},i.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},i.prototype.getHeader=i.prototype.get=function(e){return this._header[e.toLowerCase()]},i.prototype.set=function(e,t){if(r(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},i.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},i.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),r(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var a in t)this.field(e,t[a]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},i.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},i.prototype._auth=function(e,t,n,a){switch(n.type){case"basic":this.set("Authorization","Basic "+a(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},i.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},i.prototype.redirects=function(e){return this._maxRedirects=e,this},i.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},i.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},i.prototype.send=function(e){var t=r(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&r(this._data))for(var a in e)this._data[a]=e[a];else this._data="string"==typeof e?(n||this.type("form"),"application/x-www-form-urlencoded"==(n=this._header["content-type"])?this._data?this._data+"&"+e:e:(this._data||"")+e):e;return!t||this._isHost(e)||n||this.type("json"),this},i.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},i.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},i.prototype._appendQueryString=function(){console.trace("Unsupported")},i.prototype._timeoutError=function(e,t,n){if(!this._aborted){var a=new Error(e+t+"ms exceeded");a.timeout=t,a.code="ECONNABORTED",a.errno=n,this.timedout=!0,this.abort(),this.callback(a)}},i.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},{"./is-object":308}],310:[function(e,t,n){"use strict";var r=e("./utils");function a(e){if(e)return function(e){for(var t in a.prototype)e[t]=a.prototype[t];return e}(e)}(t.exports=a).prototype.get=function(e){return this.header[e.toLowerCase()]},a.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=r.type(t);var n=r.params(t);for(var a in n)this[a]=n[a];this.links={};try{e.link&&(this.links=r.parseLinks(e.link))}catch(e){}},a.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},{"./utils":311}],311:[function(e,t,n){"use strict";n.type=function(e){return e.split(/ *; */).shift()},n.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),a=n.shift(),r=n.shift();return a&&r&&(e[a]=r),e},{})},n.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),a=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=a,e},{})},n.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},{}],312:[function(e,t,n){"use strict";t.exports=["get","put","post","delete","options","head","patch"]},{}],313:[function(e,t,n){t.exports={title:"A JSON Schema for Swagger 2.0 API.",id:"http://swagger.io/v2/schema.json#",$schema:"http://json-schema.org/draft-04/schema#",type:"object",required:["swagger","info","paths"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{swagger:{type:"string",enum:["2.0"],description:"The Swagger version of this document."},info:{$ref:"#/definitions/info"},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:"The host (name or ip) of the API. Example: 'swagger.io'"},basePath:{type:"string",pattern:"^/",description:"The base path to the API. Example: '/api'."},schemes:{$ref:"#/definitions/schemesList"},consumes:{description:"A list of MIME types accepted by the API.",$ref:"#/definitions/mediaTypeList"},produces:{description:"A list of MIME types the API can produce.",$ref:"#/definitions/mediaTypeList"},paths:{$ref:"#/definitions/paths"},definitions:{$ref:"#/definitions/definitions"},parameters:{$ref:"#/definitions/parameterDefinitions"},responses:{$ref:"#/definitions/responseDefinitions"},security:{$ref:"#/definitions/security"},securityDefinitions:{$ref:"#/definitions/securityDefinitions"},tags:{type:"array",items:{$ref:"#/definitions/tag"},uniqueItems:!0},externalDocs:{$ref:"#/definitions/externalDocs"}},definitions:{info:{type:"object",description:"General information about the API.",required:["version","title"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{title:{type:"string",description:"A unique and precise title of the API."},version:{type:"string",description:"A semantic version number of the API."},description:{type:"string",description:"A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed."},termsOfService:{type:"string",description:"The terms of service for the API."},contact:{$ref:"#/definitions/contact"},license:{$ref:"#/definitions/license"}}},contact:{type:"object",description:"Contact information for the owners of the API.",additionalProperties:!1,properties:{name:{type:"string",description:"The identifying name of the contact person/organization."},url:{type:"string",description:"The URL pointing to the contact information.",format:"uri"},email:{type:"string",description:"The email address of the contact person/organization.",format:"email"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},license:{type:"object",required:["name"],additionalProperties:!1,properties:{name:{type:"string",description:"The name of the license type. It's encouraged to use an OSI compatible license."},url:{type:"string",description:"The URL pointing to the license.",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},paths:{type:"object",description:"Relative paths to the individual endpoints. They must be relative to the 'basePath'.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"},"^/":{$ref:"#/definitions/pathItem"}},additionalProperties:!1},definitions:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},description:"One or more JSON objects describing the schemas being consumed and produced by the API."},parameterDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/parameter"},description:"One or more JSON representations for parameters"},responseDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/response"},description:"One or more JSON representations for parameters"},externalDocs:{type:"object",additionalProperties:!1,description:"information about external documentation",required:["url"],properties:{description:{type:"string"},url:{type:"string",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},examples:{type:"object",additionalProperties:!0},mimeType:{type:"string",description:"The MIME type of the HTTP message."},operation:{type:"object",required:["responses"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{tags:{type:"array",items:{type:"string"},uniqueItems:!0},summary:{type:"string",description:"A brief summary of the operation."},description:{type:"string",description:"A longer description of the operation, GitHub Flavored Markdown is allowed."},externalDocs:{$ref:"#/definitions/externalDocs"},operationId:{type:"string",description:"A unique identifier of the operation."},produces:{description:"A list of MIME types the API can produce.",$ref:"#/definitions/mediaTypeList"},consumes:{description:"A list of MIME types the API can consume.",$ref:"#/definitions/mediaTypeList"},parameters:{$ref:"#/definitions/parametersList"},responses:{$ref:"#/definitions/responses"},schemes:{$ref:"#/definitions/schemesList"},deprecated:{type:"boolean",default:!1},security:{$ref:"#/definitions/security"}}},pathItem:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},get:{$ref:"#/definitions/operation"},put:{$ref:"#/definitions/operation"},post:{$ref:"#/definitions/operation"},delete:{$ref:"#/definitions/operation"},options:{$ref:"#/definitions/operation"},head:{$ref:"#/definitions/operation"},patch:{$ref:"#/definitions/operation"},parameters:{$ref:"#/definitions/parametersList"}}},responses:{type:"object",description:"Response objects names can either be any valid HTTP status code or 'default'.",minProperties:1,additionalProperties:!1,patternProperties:{"^([0-9]{3})$|^(default)$":{$ref:"#/definitions/responseValue"},"^x-":{$ref:"#/definitions/vendorExtension"}},not:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}}},responseValue:{oneOf:[{$ref:"#/definitions/response"},{$ref:"#/definitions/jsonReference"}]},response:{type:"object",required:["description"],properties:{description:{type:"string"},schema:{oneOf:[{$ref:"#/definitions/schema"},{$ref:"#/definitions/fileSchema"}]},headers:{$ref:"#/definitions/headers"},examples:{$ref:"#/definitions/examples"}},additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},headers:{type:"object",additionalProperties:{$ref:"#/definitions/header"}},header:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},vendorExtension:{description:"Any property starting with x- is valid.",additionalProperties:!0,additionalItems:!0},bodyParameter:{type:"object",required:["name","in","schema"],patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},in:{type:"string",description:"Determines the location of the parameter.",enum:["body"]},required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},schema:{$ref:"#/definitions/schema"}},additionalProperties:!1},headerParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["header"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},queryParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["query"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},formDataParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["formData"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array","file"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},pathParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["required"],properties:{required:{type:"boolean",enum:[!0],description:"Determines whether or not this parameter is required or optional."},in:{type:"string",description:"Determines the location of the parameter.",enum:["path"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},nonBodyParameter:{type:"object",required:["name","in","type"],oneOf:[{$ref:"#/definitions/headerParameterSubSchema"},{$ref:"#/definitions/formDataParameterSubSchema"},{$ref:"#/definitions/queryParameterSubSchema"},{$ref:"#/definitions/pathParameterSubSchema"}]},parameter:{oneOf:[{$ref:"#/definitions/bodyParameter"},{$ref:"#/definitions/nonBodyParameter"}]},schema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{$ref:"http://json-schema.org/draft-04/schema#/properties/multipleOf"},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},maxProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},additionalProperties:{anyOf:[{$ref:"#/definitions/schema"},{type:"boolean"}],default:{}},type:{$ref:"http://json-schema.org/draft-04/schema#/properties/type"},items:{anyOf:[{$ref:"#/definitions/schema"},{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}}],default:{}},allOf:{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}},properties:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},default:{}},discriminator:{type:"string"},readOnly:{type:"boolean",default:!1},xml:{$ref:"#/definitions/xml"},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},fileSchema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["type"],properties:{format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},type:{type:"string",enum:["file"]},readOnly:{type:"boolean",default:!1},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},primitivesItems:{type:"object",additionalProperties:!1,properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},security:{type:"array",items:{$ref:"#/definitions/securityRequirement"},uniqueItems:!0},securityRequirement:{type:"object",additionalProperties:{type:"array",items:{type:"string"},uniqueItems:!0}},xml:{type:"object",additionalProperties:!1,properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean",default:!1},wrapped:{type:"boolean",default:!1}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},tag:{type:"object",additionalProperties:!1,required:["name"],properties:{name:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/definitions/externalDocs"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},securityDefinitions:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/basicAuthenticationSecurity"},{$ref:"#/definitions/apiKeySecurity"},{$ref:"#/definitions/oauth2ImplicitSecurity"},{$ref:"#/definitions/oauth2PasswordSecurity"},{$ref:"#/definitions/oauth2ApplicationSecurity"},{$ref:"#/definitions/oauth2AccessCodeSecurity"}]}},basicAuthenticationSecurity:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["basic"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},apiKeySecurity:{type:"object",additionalProperties:!1,required:["type","name","in"],properties:{type:{type:"string",enum:["apiKey"]},name:{type:"string"},in:{type:"string",enum:["header","query"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ImplicitSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["implicit"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2PasswordSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["password"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ApplicationSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["application"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2AccessCodeSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["accessCode"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2Scopes:{type:"object",additionalProperties:{type:"string"}},mediaTypeList:{type:"array",items:{$ref:"#/definitions/mimeType"},uniqueItems:!0},parametersList:{type:"array",description:"The parameters needed to send a valid API call.",additionalItems:!1,items:{oneOf:[{$ref:"#/definitions/parameter"},{$ref:"#/definitions/jsonReference"}]},uniqueItems:!0},schemesList:{type:"array",description:"The transfer protocol of the API.",items:{type:"string",enum:["http","https","ws","wss"]},uniqueItems:!0},collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes"],default:"csv"},collectionFormatWithMulti:{type:"string",enum:["csv","ssv","tsv","pipes","multi"],default:"csv"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{$ref:"http://json-schema.org/draft-04/schema#/properties/multipleOf"},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},jsonReference:{type:"object",required:["$ref"],additionalProperties:!1,properties:{$ref:{type:"string"}}}}}},{}],314:[function(u,e,c){(function(e,t){"use strict";var a=u("process/browser.js").nextTick,n=Function.prototype.apply,r=Array.prototype.slice,i={},o=0;function s(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new s(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new s(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=o++,n=!(arguments.length<2)&&r.call(arguments,1);return i[t]=!0,a(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,u("timers").setImmediate,u("timers").clearImmediate)},{"process/browser.js":264,timers:314}],315:[function(e,t,n){"use strict";var r=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(r.isBuffer(e)){for(var t=new Uint8Array(e.length),n=e.length,a=0;ao[0]&&t[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}},f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var a,r,i=n.call(e),o=[];try{for(;(void 0===t||0>>1;n(e[s])":">",'"':""","'":"'","`":"`"},x=d.invert(w),E=function(t){var n=function(e){return t[e]},e="(?:"+d.keys(t).join("|")+")",a=RegExp(e),r=RegExp(e,"g");return function(e){return e=null==e?"":""+e,a.test(e)?e.replace(r,n):e}};d.escape=E(w),d.unescape=E(x),d.result=function(e,t){if(null!=e){var n=e[t];return d.isFunction(n)?e[t]():n}};var _=0;d.uniqueId=function(e){var t=++_+"";return e?e+t:t},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,S={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},C=/\\|'|\r|\n|\u2028|\u2029/g,j=function(e){return"\\"+S[e]};d.template=function(i,e,t){!e&&t&&(e=t),e=d.defaults({},e,d.templateSettings);var n=RegExp([(e.escape||A).source,(e.interpolate||A).source,(e.evaluate||A).source].join("|")+"|$","g"),o=0,s="__p+='";i.replace(n,function(e,t,n,a,r){return s+=i.slice(o,r).replace(C,j),o=r+e.length,t?s+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":n?s+="'+\n((__t=("+n+"))==null?'':__t)+\n'":a&&(s+="';\n"+a+"\n__p+='"),e}),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var a=new Function(e.variable||"obj","_",s)}catch(e){throw e.source=s,e}var r=function(e){return a.call(this,e,d)},u=e.variable||"obj";return r.source="function("+u+"){\n"+s+"}",r},d.chain=function(e){var t=d(e);return t._chain=!0,t};var D=function(e){return this._chain?d(e).chain():e};d.mixin=function(n){d.each(d.functions(n),function(e){var t=d[e]=n[e];d.prototype[e]=function(){var e=[this._wrapped];return s.apply(e,arguments),D.call(this,t.apply(d,e))}})},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var n=a[t];d.prototype[t]=function(){var e=this._wrapped;return n.apply(e,arguments),"shift"!==t&&"splice"!==t||0!==e.length||delete e[0],D.call(this,e)}}),d.each(["concat","join","slice"],function(e){var t=a[e];d.prototype[e]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return d})}).call(this)},{}],318:[function(e,t,n){"use strict";var a,r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};r=function(e){function R(){for(var e=arguments.length,t=Array(e),n=0;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=Math.floor,M=String.fromCharCode;function P(e){throw new RangeError(o[e])}function s(e,t){var n=e.split("@"),a="";return 1>1,e+=I(e/t);455I((T-r)/p))&&P("overflow"),r+=d*p;var m=f<=o?1:o+26<=f?26:f-o;if(dI(T/h)&&P("overflow"),p*=h}var g=n.length+1;o=U(r-l,g,0==l),I(r/g)>T-i&&P("overflow"),i+=I(r/g),r%=g,n.splice(r++,0,i)}return String.fromCodePoint.apply(String,n)},c=function(e){var t=[],n=(e=L(e)).length,a=128,r=0,i=72,o=!0,s=!1,u=void 0;try{for(var c,l=e[Symbol.iterator]();!(o=(c=l.next()).done);o=!0){var p=c.value;p<128&&t.push(M(p))}}catch(e){s=!0,u=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw u}}var f=t.length,d=f;for(f&&t.push("-");dI((T-r)/x)&&P("overflow"),r+=(m-a)*x,a=m;var E=!0,_=!1,A=void 0;try{for(var S,C=e[Symbol.iterator]();!(E=(S=C.next()).done);E=!0){var j=S.value;if(jT&&P("overflow"),j==a){for(var D=r,k=36;;k+=36){var F=k<=i?1:i+26<=k?26:k-i;if(D>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function g(e){for(var t="",n=0,a=e.length;nA-Z\\x5E-\\x7E]",'[\\"\\\\]'),K=new RegExp(O,"g"),H=new RegExp(q,"g"),W=new RegExp(R("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',G),"g"),J=new RegExp(R("[^]",O,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),V=J;function Y(e){var t=g(e);return t.match(K)?t:e}var Z={scheme:"mailto",parse:function(t,e){var n=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var a=!1,r={},i=t.query.split("&"),o=0,s=i.length;o\[\]\^\`\{\|\}\~\x7F-\xFF]/g,te={scheme:"urn",parse:function(e,t){var n=e.path&&e.path.match(Q);if(n){var a="urn:"+n[1].toLowerCase(),r=f[a];r||(r=f[a]={scheme:a,parse:function(e,t){return e},serialize:f.urn.serialize}),e.scheme=a,e.path=n[2],e=r.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e},serialize:function(e,t){var n=e.scheme||t.scheme;if(n&&"urn"!==n){var a=n.match(X)||["urn:"+n,n];e.scheme="urn",e.path=a[1]+":"+(e.path?e.path.replace(ee,m):"")}return e}},ne=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,ae={scheme:"urn:uuid",parse:function(e,t){return t.tolerant||e.path&&e.path.match(ne)||(e.error=e.error||"UUID is not valid."),e},serialize:function(e,t){return t.tolerant||e.path&&e.path.match(ne)?e.path=(e.path||"").toLowerCase():e.scheme=void 0,f.urn.serialize(e,t)}};f.http=k,f.https=F,f.mailto=Z,f.urn=te,f["urn:uuid"]=ae,e.SCHEMES=f,e.pctEncChar=m,e.pctDecChars=g,e.parse=w,e.removeDotSegments=S,e.serialize=C,e.resolveComponents=j,e.resolve=function(e,t,n){return C(j(w(e,n),w(t,n),n,!0),n)},e.normalize=function(e,t){return"string"==typeof e?e=C(w(e,t),t):"object"===a(e)&&(e=w(C(e,t),t)),e},e.equal=function(e,t,n){return"string"==typeof e?e=C(w(e,n),n):"object"===a(e)&&(e=C(e,n)),"string"==typeof t?t=C(w(t,n),n):"object"===a(t)&&(t=C(t,n)),e===t},e.escapeComponent=function(e,t){return e&&e.toString().replace(t&&t.iri?p.ESCAPE:l.ESCAPE,m)},e.unescapeComponent=D,Object.defineProperty(e,"__esModule",{value:!0})},"object"===((a=void 0)===n?"undefined":i(n))&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(a.URI=a.URI||{})},{}],319:[function(e,t,n){"use strict";var R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B=e("punycode"),T=e("./util");function j(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=i,n.resolve=function(e,t){return i(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?i(e,!1,!0).resolveObject(t):t},n.format=function(e){T.isString(e)&&(e=i(e));return e instanceof j?e.format():j.prototype.format.call(e)},n.Url=j;var I=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,M=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,r=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),P=["'"].concat(r),L=["%","/","?",";","#"].concat(P),N=["/","?","#"],U=/^[+a-z0-9A-Z_-]{0,63}$/,$=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,q={javascript:!0,"javascript:":!0},G={javascript:!0,"javascript:":!0},K={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},H=e("querystring");function i(e,t,n){if(e&&T.isObject(e)&&e instanceof j)return e;var a=new j;return a.parse(e,t,n),a}j.prototype.parse=function(e,t,n){if(!T.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+(void 0===e?"undefined":R(e)));var a=e.indexOf("?"),r=-1!==a&&a/g,">").replace(/\//g,"/").replace(/\\/g,"\").replace(/`/g,"`")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],328:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var t=1$/i,x=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,E=/^[a-z\d]+$/,_=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,A=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,S=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;t.exports=n.default},{"./isByteLength":335,"./isFQDN":343,"./isIP":350,"./util/assertString":394,"./util/merge":396}],342:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){return(0,a.default)(e),0===((t=(0,r.default)(t,o)).ignore_whitespace?e.trim().length:e.length)};var a=i(e("./util/assertString")),r=i(e("./util/merge"));function i(e){return e&&e.__esModule?e:{default:e}}var o={ignore_whitespace:!1};t.exports=n.default},{"./util/assertString":394,"./util/merge":396}],343:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){(0,s.default)(e),(t=(0,u.default)(t,c)).allow_trailing_dot&&"."===e[e.length-1]&&(e=e.substring(0,e.length-1));for(var n=e.split("."),a=0;a=t.min)&&(!t.hasOwnProperty("max")||a<=t.max)&&(!t.hasOwnProperty("lt")||at.gt)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a},o=e("./alpha");t.exports=n.default},{"./alpha":323,"./util/assertString":394}],345:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.fullWidth=void 0,n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=n.fullWidth=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/},{"./util/assertString":394}],346:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.halfWidth=void 0,n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=n.halfWidth=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/},{"./util/assertString":394}],347:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){return(0,i.default)(e),new RegExp("^[a-f0-9]{"+o[t]+"}$").test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o={md5:32,md4:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8};t.exports=n.default},{"./util/assertString":394}],348:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;t.exports=n.default},{"./util/assertString":394}],349:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[0-9A-F]+$/i;t.exports=n.default},{"./util/assertString":394}],350:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function e(t){var n=1s)return!1;if("::"===t)return!0;"::"===t.substr(0,2)?(r.shift(),r.shift(),i=!0):"::"===t.substr(t.length-2)&&(r.pop(),r.pop(),i=!0);for(var u=0;u=t.min,r=!t.hasOwnProperty("max")||e<=t.max,i=!t.hasOwnProperty("lt")||et.gt;return n.test(e)&&a&&r&&i&&o};var a,r=e("./util/assertString"),s=(a=r)&&a.__esModule?a:{default:a};var u=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,c=/^[-+]?[0-9]+$/;t.exports=n.default},{"./util/assertString":394}],361:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.defineProperty(n,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"===a(Symbol.iterator)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":void 0===e?"undefined":a(e)};n.default=function(e){(0,s.default)(e);try{var t=JSON.parse(e);return!!t&&"object"===(void 0===t?"undefined":r(t))}catch(e){}return!1};var i,o=e("./util/assertString"),s=(i=o)&&i.__esModule?i:{default:i};t.exports=n.default},{"./util/assertString":394}],362:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+$/;t.exports=n.default},{"./util/assertString":394}],363:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if((0,i.default)(e),!e.includes(","))return!1;var t=e.split(",");return o.test(t[0])&&s.test(t[1])};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/,s=/^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;t.exports=n.default},{"./util/assertString":394}],364:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"===a(Symbol.iterator)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":void 0===e?"undefined":a(e)};n.default=function(e,t){(0,s.default)(e);var n=void 0,a=void 0;a="object"===(void 0===t?"undefined":o(t))?(n=t.min||0,t.max):(n=t,arguments[2]);var r=e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],i=e.length-r.length;return n<=i&&(void 0===a||i<=a)};var r,i=e("./util/assertString"),s=(r=i)&&r.__esModule?r:{default:r};t.exports=n.default},{"./util/assertString":394}],365:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),e===e.toLowerCase()};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],366:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,i.default)(e),t&&t.no_colons)return s.test(e);return o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/,s=/^([0-9a-fA-F]){12}$/;t.exports=n.default},{"./util/assertString":394}],367:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[a-f0-9]{32}$/;t.exports=n.default},{"./util/assertString":394}],368:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e.trim())};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32,40}&dn=.+&tr=.+$/i;t.exports=n.default},{"./util/assertString":394}],369:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)||s.test(e)||u.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i,s=/^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i,u=/^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i;t.exports=n.default},{"./util/assertString":394}],370:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(n,e,t){if((0,i.default)(n),t&&t.strictMode&&!n.startsWith("+"))return!1;{if(Array.isArray(e))return e.some(function(e){if(o.hasOwnProperty(e)){var t=o[e];if(t.test(n))return!0}return!1});if(e in o)return o[e].test(n);if(!e||"any"===e){for(var a in o)if(o.hasOwnProperty(a)){var r=o[a];if(r.test(n))return!0}return!1}}throw new Error("Invalid locale '"+e+"'")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o={"ar-AE":/^((\+?971)|0)?5[024568]\d{7}$/,"ar-DZ":/^(\+?213|0)(5|6|7)\d{8}$/,"ar-EG":/^((\+?20)|0)?1[012]\d{8}$/,"ar-IQ":/^(\+?964|0)?7[0-9]\d{8}$/,"ar-JO":/^(\+?962|0)?7[789]\d{7}$/,"ar-KW":/^(\+?965)[569]\d{7}$/,"ar-SA":/^(!?(\+?966)|0)?5\d{8}$/,"ar-SY":/^(!?(\+?963)|0)?9\d{8}$/,"ar-TN":/^(\+?216)?[2459]\d{7}$/,"be-BY":/^(\+?375)?(24|25|29|33|44)\d{7}$/,"bg-BG":/^(\+?359|0)?8[789]\d{7}$/,"bn-BD":/\+?(88)?0?1[156789][0-9]{8}\b/,"cs-CZ":/^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"da-DK":/^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,"de-DE":/^(\+?49[ \.\-]?)?([\(]{1}[0-9]{1,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,"el-GR":/^(\+?30|0)?(69\d{8})$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-HK":/^(\+?852\-?)?[456789]\d{3}\-?\d{4}$/,"en-IN":/^(\+?91|0)?[6789]\d{9}$/,"en-KE":/^(\+?254|0)?[7]\d{8}$/,"en-NG":/^(\+?234|0)?[789]\d{9}$/,"en-NZ":/^(\+?64|0)[28]\d{7,9}$/,"en-PK":/^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$|^\d{11}$|^\d{4}-\d{7}$/,"en-RW":/^(\+?250|0)?[7]\d{8}$/,"en-SG":/^(\+65)?[89]\d{7}$/,"en-TZ":/^(\+?255|0)?[67]\d{8}$/,"en-UG":/^(\+?256|0)?[7]\d{8}$/,"en-US":/^(\+?1?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-ZM":/^(\+?26)?09[567]\d{7}$/,"es-ES":/^(\+?34)?(6\d{1}|7[1234])\d{7}$/,"es-MX":/^(\+?52)?(1|01)?\d{10,11}$/,"et-EE":/^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,"fa-IR":/^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,"fi-FI":/^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/,"fo-FO":/^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"he-IL":/^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}/,"hu-HU":/^(\+?36)(20|30|70)\d{7}$/,"id-ID":/^(\+?62|0)(0?8?\d\d\s?\d?)([\s?|\d]{7,12})$/,"it-IT":/^(\+?39)?\s?3\d{2} ?\d{6,7}$/,"ja-JP":/^(\+?81|0)[789]0[ \-]?[1-9]\d{2}[ \-]?\d{5}$/,"kk-KZ":/^(\+?7|8)?7\d{9}$/,"kl-GL":/^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"ko-KR":/^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,"lt-LT":/^(\+370|8)\d{8}$/,"ms-MY":/^(\+?6?01){1}(([145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/,"nb-NO":/^(\+?47)?[49]\d{7}$/,"nl-BE":/^(\+?32|0)4?\d{8}$/,"nn-NO":/^(\+?47)?[49]\d{7}$/,"pl-PL":/^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/,"pt-BR":/(?=^(\+?5{2}\-?|0)[1-9]{2}\-?\d{4}\-?\d{4}$)(^(\+?5{2}\-?|0)[1-9]{2}\-?[6-9]{1}\d{3}\-?\d{4}$)|(^(\+?5{2}\-?|0)[1-9]{2}\-?9[6-9]{1}\d{3}\-?\d{4}$)/,"pt-PT":/^(\+?351)?9[1236]\d{7}$/,"ro-RO":/^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/,"sk-SK":/^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"sr-RS":/^(\+3816|06)[- \d]{5,9}$/,"sv-SE":/^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,"th-TH":/^(\+66|66|0)\d{9}$/,"tr-TR":/^(\+?90|0)?5\d{9}$/,"uk-UA":/^(\+?38|8)?0\d{9}$/,"vi-VN":/^(\+?84|0)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,"zh-CN":/^((\+|00)86)?1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/,"zh-TW":/^(\+?886\-?|0)?9\d{8}$/};o["en-CA"]=o["en-US"],o["fr-BE"]=o["nl-BE"],o["zh-HK"]=o["en-HK"],t.exports=n.default},{"./util/assertString":394}],371:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,a.default)(e),(0,r.default)(e)&&24===e.length};var a=i(e("./util/assertString")),r=i(e("./isHexadecimal"));function i(e){return e&&e.__esModule?e:{default:e}}t.exports=n.default},{"./isHexadecimal":349,"./util/assertString":394}],372:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/[^\x00-\x7F]/;t.exports=n.default},{"./util/assertString":394}],373:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,i.default)(e),t&&t.no_symbols)return s.test(e);return o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[+-]?([0-9]*[.])?[0-9]+$/,s=/^[0-9]+$/;t.exports=n.default},{"./util/assertString":394}],374:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e,{min:0,max:65535})};var a,r=e("./isInt"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./isInt":360}],375:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.locales=void 0,n.default=function(e,t){if((0,i.default)(e),t in c)return c[t].test(e);if("any"!==t)throw new Error("Invalid locale '"+t+"'");for(var n in c){if(c.hasOwnProperty(n))if(c[n].test(e))return!0}return!1};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^\d{4}$/,s=/^\d{5}$/,u=/^\d{6}$/,c={AD:/^AD\d{3}$/,AT:o,AU:o,BE:o,BG:o,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:o,CZ:/^\d{3}\s?\d{2}$/,DE:s,DK:o,DZ:s,EE:s,ES:s,FI:s,FR:/^\d{2}\s?\d{3}$/,GB:/^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,GR:/^\d{3}\s?\d{2}$/,HR:/^([1-5]\d{4}$)/,HU:o,IL:s,IN:u,IS:/^\d{3}$/,IT:s,JP:/^\d{3}\-\d{4}$/,KE:s,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT\-\d{5}$/,LU:o,LV:/^LV\-\d{4}$/,MX:s,NL:/^\d{4}\s?[a-z]{2}$/i,NO:o,PL:/^\d{2}\-\d{3}$/,PT:/^\d{4}\-\d{3}?$/,RO:u,RU:u,SA:s,SE:/^\d{3}\s?\d{2}$/,SI:o,SK:/^\d{3}\s?\d{2}$/,TN:o,TW:/^\d{3}(\d{2})?$/,US:/^\d{5}(-\d{4})?$/,ZA:o,ZM:s};n.locales=Object.keys(c)},{"./util/assertString":394}],376:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),d.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/([01][0-9]|2[0-3])/,s=/[0-5][0-9]/,u=new RegExp("[-+]"+o.source+":"+s.source),c=new RegExp("([zZ]|"+u.source+")"),l=new RegExp(o.source+":"+s.source+":"+/([0-5][0-9]|60)/.source+/(\.[0-9]+)?/.source),p=new RegExp(/[0-9]{4}/.source+"-"+/(0[1-9]|1[0-2])/.source+"-"+/([12]\d|0[1-9]|3[01])/.source),f=new RegExp(""+l.source+c.source),d=new RegExp(p.source+"[ tT]"+f.source);t.exports=n.default},{"./util/assertString":394}],377:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;t.exports=n.default},{"./util/assertString":394}],378:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,p.default)(e),!e||2083<=e.length||/[\s<>]/.test(e))return!1;if(0===e.indexOf("mailto:"))return!1;t=(0,m.default)(t,h);var n=void 0,a=void 0,r=void 0,i=void 0,o=void 0,s=void 0,u=void 0,c=void 0;if(1<(u=(e=(u=(e=(u=e.split("#")).shift()).split("?")).shift()).split("://")).length){if(n=u.shift(),t.require_valid_protocol&&-1===t.protocols.indexOf(n))return!1}else{if(t.require_protocol)return!1;if("//"===e.substr(0,2)){if(!t.allow_protocol_relative_urls)return!1;u[0]=e.substr(2)}}if(""===(e=u.join("://")))return!1;if(""===(e=(u=e.split("/")).shift())&&!t.require_host)return!0;if(1<(u=e.split("@")).length&&0<=(a=u.shift()).indexOf(":")&&2").replace(///g,"/").replace(/\/g,"\\").replace(/`/g,"`")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],394:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if(!("string"==typeof e||e instanceof String))throw new TypeError("This library (validator.js) validates strings only")},t.exports=n.default},{}],395:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.default=function(e,t){return e.some(function(e){return t===e})},t.exports=n.default},{}],396:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(){var e=0t.maximum&&e.addError("MAXIMUM",[n,t.maximum],null,t):n>=t.maximum&&e.addError("MAXIMUM_EXCLUSIVE",[n,t.maximum],null,t))},exclusiveMaximum:function(){},minimum:function(e,t,n){"number"==typeof n&&(!0!==t.exclusiveMinimum?nt.maxLength&&e.addError("MAX_LENGTH",[n.length,t.maxLength],null,t)},minLength:function(e,t,n){"string"==typeof n&&m.ucs2decode(n).lengtht.items.length&&e.addError("ARRAY_ADDITIONAL_ITEMS",null,null,t)},items:function(){},maxItems:function(e,t,n){Array.isArray(n)&&n.length>t.maxItems&&e.addError("ARRAY_LENGTH_LONG",[n.length,t.maxItems],null,t)},minItems:function(e,t,n){Array.isArray(n)&&n.lengtht.maxProperties&&e.addError("OBJECT_PROPERTIES_MAXIMUM",[a,t.maxProperties],null,t)}},minProperties:function(e,t,n){if("object"===m.whatIs(n)){var a=Object.keys(n).length;a=this.reportOptions.maxErrors)){if(!t)throw new Error("No errorMessage known for code "+e);for(var i=(n=n||[]).length;i--;){var o=f.whatIs(n[i]),s="object"===o||"null"===o?JSON.stringify(n[i]):n[i];t=t.replace("{"+i+"}",s)}var u={code:e,params:n,message:t,path:this.getPath(this.options.reportPathAsArray),schemaId:this.getSchemaId()};if(r&&"string"==typeof r?u.description=r:r&&"object"===(void 0===r?"undefined":p(r))&&(r.title&&(u.title=r.title),r.description&&(u.description=r.description)),null!=a){for(Array.isArray(a)||(a=[a]),u.inner=[],i=a.length;i--;)for(var c=a[i],l=c.errors.length;l--;)u.inner.push(c.errors[l]);0===u.inner.length&&(u.inner=void 0)}this.errors.push(u)}},t.exports=a}).call(this,e("_process"))},{"./Errors":400,"./Utils":408,_process:264,"lodash.get":251}],405:[function(e,t,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=e("lodash.isequal"),g=e("./Report"),y=e("./SchemaCompilation"),v=e("./SchemaValidation"),i=e("./Utils");function b(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function w(e,t){if("object"===(void 0===e?"undefined":o(e))&&null!==e){if(!t)return e;if(e.id&&(e.id===t||"#"===e.id[0]&&e.id.substring(1)===t))return e;var n,a;if(Array.isArray(e)){for(n=e.length;n--;)if(a=w(e[n],t))return a}else{var r=Object.keys(e);for(n=r.length;n--;){var i=r[n];if(0!==i.indexOf("__$")&&(a=w(e[i],t)))return a}}}}n.cacheSchemaByUri=function(e,t){var n=b(e);n&&(this.cache[n]=t)},n.removeFromCacheByUri=function(e){var t=b(e);t&&delete this.cache[t]},n.checkCacheForUri=function(e){var t=b(e);return!!t&&null!=this.cache[t]},n.getSchema=function(e,t){return"object"===(void 0===t?"undefined":o(t))&&(t=n.getSchemaByReference.call(this,e,t)),"string"==typeof t&&(t=n.getSchemaByUri.call(this,e,t)),t},n.getSchemaByReference=function(e,t){for(var n=this.referenceCache.length;n--;)if(r(this.referenceCache[n][0],t))return this.referenceCache[n][1];var a=i.cloneDeep(t);return this.referenceCache.push([t,a]),a},n.getSchemaByUri=function(e,t,n){var a,r,i,o=b(t),s=-1===(r=(a=t).indexOf("#"))?void 0:a.slice(r+1),u=o?this.cache[o]:n;if(u&&o&&u!==n){e.path.push(o);var c=new g(e);if(y.compileSchema.call(this,c,u)){var l=this.options;try{this.options=u.__$validationOptions||this.options,v.validateSchema.call(this,c,u)}finally{this.options=l}}var p=c.isValid();if(p||e.addError("REMOTE_NOT_VALID",[t],c),e.path.pop(),!p)return}if(u&&s)for(var f=s.split("/"),d=0,m=f.length;u&&d>16&255,i[o++]=t>>8&255,i[o++]=255&t;var c,l;2===r&&(t=p[e.charCodeAt(u)]<<2|p[e.charCodeAt(u+1)]>>4,i[o++]=255&t);1===r&&(t=p[e.charCodeAt(u)]<<10|p[e.charCodeAt(u+1)]<<4|p[e.charCodeAt(u+2)]>>2,i[o++]=t>>8&255,i[o++]=255&t);return i},n.fromByteArray=function(e){for(var t,n=e.length,a=n%3,r=[],i=0,o=n-a;i>2]+s[t<<4&63]+"==")):2===a&&(t=(e[n-2]<<8)+e[n-1],r.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return r.join("")};for(var s=[],p=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=0,i=a.length;r>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r]);return i.join("")}p["-".charCodeAt(0)]=62,p["_".charCodeAt(0)]=63},{}],17:[function(e,t,n){},{}],18:[function(e,t,n){},{}],19:[function(e,R,B){(function(z){"use strict";var O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e){var t="object"==(void 0===B?"undefined":O(B))&&B&&!B.nodeType&&B,n="object"==(void 0===R?"undefined":O(R))&&R&&!R.nodeType&&R,a="object"==(void 0===z?"undefined":O(z))&&z;a.global!==a&&a.window!==a&&a.self!==a||(e=a);var r,i,y=2147483647,v=36,b=1,w=26,o=38,s=700,x=72,E=128,_="-",u=/^xn--/,c=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,p={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=v-b,A=Math.floor,S=String.fromCharCode;function C(e){throw new RangeError(p[e])}function d(e,t){for(var n=e.length,a=[];n--;)a[n]=t(e[n]);return a}function m(e,t){var n=e.split("@"),a="";return 1>>10&1023|55296),e=56320|1023&e),t+=S(e)}).join("")}function k(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function F(e,t,n){var a=0;for(e=n?A(e/s):e>>1,e+=A(e/t);f*w>>1A((y-m)/o))&&C("overflow"),m+=u*o,!(u<(c=s<=g?b:g+w<=s?w:s-g));s+=v)o>A(y/(l=v-c))&&C("overflow"),o*=l;g=F(m-i,t=f.length+1,0==i),A(m/t)>y-h&&C("overflow"),h+=A(m/t),m%=t,f.splice(m++,0,h)}return D(f)}function g(e){var t,n,a,r,i,o,s,u,c,l,p,f,d,m,h,g=[];for(f=(e=j(e)).length,t=E,i=x,o=n=0;oA((y-n)/(d=a+1))&&C("overflow"),n+=(s-t)*d,t=s,o=0;oy&&C("overflow"),p==t){for(u=n,c=v;!(u<(l=c<=i?b:i+w<=c?w:c-i));c+=v)h=u-l,m=v-l,g.push(S(k(l+h%m,0))),u=A(h/m);g.push(S(k(u,0))),i=F(n,d,a==r),n=0,++a}++n,++t}return g.join("")}if(r={version:"1.4.1",ucs2:{decode:j,encode:D},decode:h,encode:g,toASCII:function(e){return m(e,function(e){return c.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return m(e,function(e){return u.test(e)?h(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==O(define.amd)&&define.amd)define("punycode",function(){return r});else if(t&&n)if(R.exports==t)n.exports=r;else for(i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);else e.punycode=r}(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,n){"use strict";var p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=e("base64-js"),i=e("ieee754");n.Buffer=f,n.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},n.INSPECT_MAX_BYTES=50;var r=2147483647;function o(e){if(r>>1;case"base64":return T(e).length;default:if(r)return a?-1:B(e).length;t=(""+t).toLowerCase(),r=!0}}function h(e,t,n){var a=e[t];e[t]=e[n],e[n]=a}function g(e,t,n,a,r){if(0===e.length)return-1;if("string"==typeof n?(a=n,n=0):2147483647=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=f.from(t,a)),f.isBuffer(t))return 0===t.length?-1:y(e,t,n,a,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,a,r);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,a,r){var i,o=1,s=e.length,u=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;s/=o=2,u/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){var l=-1;for(i=n;i>>10&1023|55296),l=56320|1023&l),a.push(l),r+=p}return function(e){var t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);var n="",a=0;for(;athis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return S(this,t,n);case"utf8":case"utf-8":return x(this,t,n);case"ascii":return _(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return w(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,n);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},f.prototype.compare=function(e,t,n,a,r){if(M(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(void 0===e?"undefined":p(e)));if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===a&&(a=0),void 0===r&&(r=this.length),t<0||n>e.length||a<0||r>this.length)throw new RangeError("out of range index");if(r<=a&&n<=t)return 0;if(r<=a)return-1;if(n<=t)return 1;if(this===e)return 0;for(var i=(r>>>=0)-(a>>>=0),o=(n>>>=0)-(t>>>=0),s=Math.min(i,o),u=this.slice(a,r),c=e.slice(t,n),l=0;l>>=0,isFinite(n)?(n>>>=0,void 0===a&&(a="utf8")):(a=n,n=void 0)}var r=this.length-t;if((void 0===n||rthis.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i,o,s,u,c,l,p,f,d,m=!1;;)switch(a){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return f=t,d=n,I(B(e,(p=this).length-f),p,f,d);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,l=n,I(T(e),u,c,l);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=t,s=n,I(function(e,t){for(var n,a,r,i=[],o=0;o>8,r=n%256,i.push(r),i.push(a);return i}(e,(i=this).length-o),i,o,s);default:if(m)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),m=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var E=4096;function _(e,t,n){var a="";n=Math.min(e.length,n);for(var r=t;re.length)throw new RangeError("Index out of range")}function k(e,t,n,a,r,i){if(n+a>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(e,t,n,a,r){return t=+t,n>>>=0,r||k(e,0,n,4),i.write(e,t,n,a,23,4),n+4}function z(e,t,n,a,r){return t=+t,n>>>=0,r||k(e,0,n,8),i.write(e,t,n,a,52,8),n+8}f.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):n>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e],r=1,i=0;++i>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e+--t],r=1;0>>=0,t||j(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||j(e,t,this.length);for(var a=this[e],r=1,i=0;++i>>=0,t>>>=0,n||j(e,t,this.length);for(var a=t,r=1,i=this[e+--a];0>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),i.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),i.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),i.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),i.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,n,a){(e=+e,t>>>=0,n>>>=0,a)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,a)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var r=n-1,i=1;for(this[t+r]=255&e;0<=--r&&(i*=256);)this[t+r]=e/i&255;return t+n},f.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,n,a){if(e=+e,t>>>=0,!a){var r=Math.pow(2,8*n-1);D(this,e,t,n,r-1,-r)}var i=0,o=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},f.prototype.writeIntBE=function(e,t,n,a){if(e=+e,t>>>=0,!a){var r=Math.pow(2,8*n-1);D(this,e,t,n,r-1,-r)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;0<=--i&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},f.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,n){return F(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){return F(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){return z(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){return z(this,e,t,!1,n)},f.prototype.copy=function(e,t,n,a){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),0=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function T(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function I(e,t,n,a){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function M(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function P(e){return e!=e}},{"base64-js":16,ieee754:185}],21:[function(e,t,n){"use strict";t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],22:[function(e,a,t){(function(e,t){"use strict";var n=t.process&&e.nextTick||t.setImmediate||function(e){setTimeout(e,0)};a.exports=function(t,e){return t?void e.then(function(e){n(function(){t(null,e)})},function(e){n(function(){t(e)})}):e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:264}],23:[function(e,t,n){"use strict";function a(e){if(e)return function(e){for(var t in a.prototype)e[t]=a.prototype[t];return e}(e)}void 0!==t&&(t.exports=a),a.prototype.on=a.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},a.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},a.prototype.off=a.prototype.removeListener=a.prototype.removeAllListeners=a.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,a=this._callbacks["$"+e];if(!a)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;re.high)}},{key:"touches",value:function(e){return!(this.high+1e.high)}},{key:"add",value:function(e){return new n(Math.min(this.low,e.low),Math.max(this.high,e.high))}},{key:"subtract",value:function(e){return e.low<=this.low&&e.high>=this.high?[]:e.low>this.low&&e.highr){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,"object"===("undefined"==typeof console?"undefined":u(console))&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else o=i[t]=n,++e._eventsCount;return e}function d(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t '+e+"x"+t+" ")}}},{}],51:[function(_,e,t){"use strict";function n(e){var n=this;e=e||{};var t=n.locales||e.locales||{},a=n.locale||e.locale||"en",r=n.localeFallback||e.localeFallback||"en";function i(t){return Object.keys(t).forEach(function(e){"function"==typeof t[e]&&(t[e]=t[e].bind(t))}),t}n.locales=t,n.locale=a,n.localeFallback=r,n.definitions={};var o=_("./fake");n.fake=new o(n).fake;var s=_("./random");n.random=i(new s(n));var u=_("./helpers");n.helpers=new u(n);var c=_("./name");n.name=i(new c(n));var l=_("./address");n.address=i(new l(n));var p=_("./company");n.company=i(new p(n));var f=_("./finance");n.finance=i(new f(n));var d=_("./image");n.image=i(new d(n));var m=_("./lorem");n.lorem=i(new m(n));var h=_("./hacker");n.hacker=i(new h(n));var g=_("./internet");n.internet=i(new g(n));var y=_("./database");n.database=i(new y(n));var v=_("./phone_number");n.phone=i(new v(n));var b=_("./date");n.date=i(new b(n));var w=_("./commerce");n.commerce=i(new w(n));var x=_("./system");n.system=i(new x(n));var E={name:["first_name","last_name","prefix","suffix","title","male_first_name","female_first_name","male_middle_name","female_middle_name","male_last_name","female_last_name"],address:["city_prefix","city_suffix","street_suffix","county","country","country_code","state","state_abbr","street_prefix","postcode"],company:["adjective","noun","descriptor","bs_adjective","bs_noun","bs_verb","suffix"],lorem:["words"],hacker:["abbreviation","adjective","noun","verb","ingverb"],phone_number:["formats"],finance:["account_type","transaction_type","currency","iban"],internet:["avatar_uri","domain_suffix","free_email","example_email","password"],commerce:["color","department","product_name","price","categories"],database:["collation","column","engine","type"],system:["mimeTypes"],date:["month","weekday"],title:"",separator:""};Object.keys(E).forEach(function(t){void 0===n.definitions[t]&&(n.definitions[t]={}),"string"!=typeof E[t]?E[t].forEach(function(e){Object.defineProperty(n.definitions[t],e,{get:function(){return void 0===n.locales[n.locale][t]||void 0===n.locales[n.locale][t][e]?n.locales[r][t][e]:n.locales[n.locale][t][e]}})}):n.definitions[t]=E[t]})}n.prototype.seed=function(e){var t=_("./random");this.seedValue=e,this.random=new t(this,this.seedValue)},e.exports=n},{"./address":40,"./commerce":41,"./company":42,"./database":43,"./date":44,"./fake":45,"./finance":46,"./hacker":47,"./helpers":48,"./image":50,"./internet":52,"./lorem":155,"./name":156,"./phone_number":157,"./random":158,"./system":159}],52:[function(e,t,n){"use strict";var r=e("../vendor/user-agent");t.exports=function(c){var a=this;a.avatar=function(){return c.random.arrayElement(c.definitions.internet.avatar_uri)},a.avatar.schema={description:"Generates a URL for an avatar.",sampleResults:["https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg"]},a.email=function(e,t,n){return n=n||c.random.arrayElement(c.definitions.internet.free_email),c.helpers.slugify(c.internet.userName(e,t))+"@"+n},a.email.schema={description:"Generates a valid email address based on optional input criteria",sampleResults:["foo.bar@gmail.com"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"},provider:{type:"string",required:!1,description:"The domain of the user"}}},a.exampleEmail=function(e,t){var n=c.random.arrayElement(c.definitions.internet.example_email);return a.email(e,t,n)},a.userName=function(e,t){var n;switch(e=e||c.name.firstName(),t=t||c.name.lastName(),c.random.number(2)){case 0:n=e+c.random.number(99);break;case 1:n=e+c.random.arrayElement([".","_"])+t;break;case 2:n=e+c.random.arrayElement([".","_"])+t+c.random.number(99)}return n=(n=n.toString().replace(/'/g,"")).replace(/ /g,"")},a.userName.schema={description:"Generates a username based on one of several patterns. The pattern is chosen randomly.",sampleResults:["Kirstin39","Kirstin.Smith","Kirstin.Smith39","KirstinSmith","KirstinSmith39"],properties:{firstName:{type:"string",required:!1,description:"The first name of the user"},lastName:{type:"string",required:!1,description:"The last name of the user"}}},a.protocol=function(){return c.random.arrayElement(["http","https"])},a.protocol.schema={description:"Randomly generates http or https",sampleResults:["https","http"]},a.url=function(){return c.internet.protocol()+"://"+c.internet.domainName()},a.url.schema={description:"Generates a random URL. The URL could be secure or insecure.",sampleResults:["http://rashawn.name","https://rashawn.name"]},a.domainName=function(){return c.internet.domainWord()+"."+c.internet.domainSuffix()},a.domainName.schema={description:"Generates a random domain name.",sampleResults:["marvin.org"]},a.domainSuffix=function(){return c.random.arrayElement(c.definitions.internet.domain_suffix)},a.domainSuffix.schema={description:"Generates a random domain suffix.",sampleResults:["net"]},a.domainWord=function(){return c.name.firstName().replace(/([\\~#&*{}/:<>?|\"'])/gi,"").toLowerCase()},a.domainWord.schema={description:"Generates a random domain word.",sampleResults:["alyce"]},a.ip=function(){for(var e=[],t=0;t<4;t++)e[t]=c.random.number(255).toFixed(0);return e.join(".")},a.ip.schema={description:"Generates a random IP.",sampleResults:["97.238.241.11"]},a.ipv6=function(){for(var e=function(){for(var e="",t=0;t<4;t++)e+=c.random.arrayElement(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);return e},t=[],n=0;n<8;n++)t[n]=e();return t.join(":")},a.ipv6.schema={description:"Generates a random IPv6 address.",sampleResults:["2001:0db8:6276:b1a7:5213:22f1:25df:c8a0"]},a.userAgent=function(){return r.generate()},a.userAgent.schema={description:"Generates a random user agent.",sampleResults:["Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1"]},a.color=function(e,t,n){e=e||0,t=t||0,n=n||0;var a=Math.floor((c.random.number(256)+e)/2),r=Math.floor((c.random.number(256)+t)/2),i=Math.floor((c.random.number(256)+n)/2),o=a.toString(16),s=r.toString(16),u=i.toString(16);return"#"+(1===o.length?"0":"")+o+(1===s.length?"0":"")+s+(1===u.length?"0":"")+u},a.color.schema={description:"Generates a random hexadecimal color.",sampleResults:["#06267f"],properties:{baseRed255:{type:"number",required:!1,description:"The red value. Valid values are 0 - 255."},baseGreen255:{type:"number",required:!1,description:"The green value. Valid values are 0 - 255."},baseBlue255:{type:"number",required:!1,description:"The blue value. Valid values are 0 - 255."}}},a.mac=function(){var e,t="";for(e=0;e<12;e++)t+=c.random.number(15).toString(16),e%2==1&&11!=e&&(t+=":");return t},a.mac.schema={description:"Generates a random mac address.",sampleResults:["78:06:cc:ae:b3:81"]},a.password=function(e,t,n,a){var s,u;return void 0===t&&(t=!1),u=/[aeiouAEIOU]$/,s=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,function e(t,n,a,r){var i,o;return null==t&&(t=10),null==n&&(n=!0),null==a&&(a=/\w/),null==r&&(r=""),r.length>=t?r:(n&&(a=r.match(s)?u:s),o=c.random.number(94)+33,i=String.fromCharCode(o),n&&(i=i.toLowerCase()),i.match(a)?e(t,n,a,""+r+i):e(t,n,a,r))}(e=e||15,t,n,a)},a.password.schema={description:"Generates a random password.",sampleResults:["AM7zl6Mg","susejofe"],properties:{length:{type:"number",required:!1,description:"The number of characters in the password."},memorable:{type:"boolean",required:!1,description:"Whether a password should be easy to remember."},pattern:{type:"regex",required:!1,description:"A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on."},prefix:{type:"string",required:!1,description:"A value to prepend to the generated password. The prefix counts towards the length of the password."}}}}},{"../vendor/user-agent":162}],53:[function(e,t,n){"use strict";t.exports=["#####","####","###"]},{}],54:[function(e,t,n){"use strict";t.exports=["#{city_prefix} #{Name.first_name}#{city_suffix}","#{city_prefix} #{Name.first_name}","#{Name.first_name}#{city_suffix}","#{Name.last_name}#{city_suffix}"]},{}],55:[function(e,t,n){"use strict";t.exports=["North","East","West","South","New","Lake","Port"]},{}],56:[function(e,t,n){"use strict";t.exports=["town","ton","land","ville","berg","burgh","borough","bury","view","port","mouth","stad","furt","chester","mouth","fort","haven","side","shire"]},{}],57:[function(e,t,n){"use strict";t.exports=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica (the territory South of 60 deg S)","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island (Bouvetoya)","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands Antilles","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestinian Territory","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia (Slovak Republic)","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"]},{}],58:[function(e,t,n){"use strict";t.exports=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},{}],59:[function(e,t,n){"use strict";t.exports=["Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire"]},{}],60:[function(e,t,n){"use strict";t.exports=["United States of America"]},{}],61:[function(e,t,n){"use strict";var a={};(t.exports=a).city_prefix=e("./city_prefix"),a.city_suffix=e("./city_suffix"),a.county=e("./county"),a.country=e("./country"),a.country_code=e("./country_code"),a.building_number=e("./building_number"),a.street_suffix=e("./street_suffix"),a.secondary_address=e("./secondary_address"),a.postcode=e("./postcode"),a.postcode_by_state=e("./postcode_by_state"),a.state=e("./state"),a.state_abbr=e("./state_abbr"),a.time_zone=e("./time_zone"),a.city=e("./city"),a.street_name=e("./street_name"),a.street_address=e("./street_address"),a.default_country=e("./default_country")},{"./building_number":53,"./city":54,"./city_prefix":55,"./city_suffix":56,"./country":57,"./country_code":58,"./county":59,"./default_country":60,"./postcode":62,"./postcode_by_state":63,"./secondary_address":64,"./state":65,"./state_abbr":66,"./street_address":67,"./street_name":68,"./street_suffix":69,"./time_zone":70}],62:[function(e,t,n){"use strict";t.exports=["#####","#####-####"]},{}],63:[function(e,t,n){"use strict";t.exports=["#####","#####-####"]},{}],64:[function(e,t,n){"use strict";t.exports=["Apt. ###","Suite ###"]},{}],65:[function(e,t,n){"use strict";t.exports=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]},{}],66:[function(e,t,n){"use strict";t.exports=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"]},{}],67:[function(e,t,n){"use strict";t.exports=["#{building_number} #{street_name}"]},{}],68:[function(e,t,n){"use strict";t.exports=["#{Name.first_name} #{street_suffix}","#{Name.last_name} #{street_suffix}"]},{}],69:[function(e,t,n){"use strict";t.exports=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Inlet","Island","Island","Islands","Islands","Isle","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Locks","Lodge","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Mission","Motorway","Mount","Mountain","Mountain","Mountains","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plains","Plaza","Plaza","Point","Points","Port","Port","Ports","Ports","Prairie","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Road","Roads","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Springs","Spur","Spurs","Square","Square","Squares","Squares","Station","Station","Stravenue","Stravenue","Stream","Stream","Street","Street","Streets","Summit","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Trail","Tunnel","Tunnel","Turnpike","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Village","Villages","Ville","Vista","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},{}],70:[function(e,t,n){"use strict";t.exports=["Pacific/Midway","Pacific/Pago_Pago","Pacific/Honolulu","America/Juneau","America/Los_Angeles","America/Tijuana","America/Denver","America/Phoenix","America/Chihuahua","America/Mazatlan","America/Chicago","America/Regina","America/Mexico_City","America/Mexico_City","America/Monterrey","America/Guatemala","America/New_York","America/Indiana/Indianapolis","America/Bogota","America/Lima","America/Lima","America/Halifax","America/Caracas","America/La_Paz","America/Santiago","America/St_Johns","America/Sao_Paulo","America/Argentina/Buenos_Aires","America/Guyana","America/Godthab","Atlantic/South_Georgia","Atlantic/Azores","Atlantic/Cape_Verde","Europe/Dublin","Europe/London","Europe/Lisbon","Europe/London","Africa/Casablanca","Africa/Monrovia","Etc/UTC","Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Prague","Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris","Europe/Amsterdam","Europe/Berlin","Europe/Berlin","Europe/Rome","Europe/Stockholm","Europe/Vienna","Africa/Algiers","Europe/Bucharest","Africa/Cairo","Europe/Helsinki","Europe/Kiev","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Vilnius","Europe/Athens","Europe/Istanbul","Europe/Minsk","Asia/Jerusalem","Africa/Harare","Africa/Johannesburg","Europe/Moscow","Europe/Moscow","Europe/Moscow","Asia/Kuwait","Asia/Riyadh","Africa/Nairobi","Asia/Baghdad","Asia/Tehran","Asia/Muscat","Asia/Muscat","Asia/Baku","Asia/Tbilisi","Asia/Yerevan","Asia/Kabul","Asia/Yekaterinburg","Asia/Karachi","Asia/Karachi","Asia/Tashkent","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kolkata","Asia/Kathmandu","Asia/Dhaka","Asia/Dhaka","Asia/Colombo","Asia/Almaty","Asia/Novosibirsk","Asia/Rangoon","Asia/Bangkok","Asia/Bangkok","Asia/Jakarta","Asia/Krasnoyarsk","Asia/Shanghai","Asia/Chongqing","Asia/Hong_Kong","Asia/Urumqi","Asia/Kuala_Lumpur","Asia/Singapore","Asia/Taipei","Australia/Perth","Asia/Irkutsk","Asia/Ulaanbaatar","Asia/Seoul","Asia/Tokyo","Asia/Tokyo","Asia/Tokyo","Asia/Yakutsk","Australia/Darwin","Australia/Adelaide","Australia/Melbourne","Australia/Melbourne","Australia/Sydney","Australia/Brisbane","Australia/Hobart","Asia/Vladivostok","Pacific/Guam","Pacific/Port_Moresby","Asia/Magadan","Asia/Magadan","Pacific/Noumea","Pacific/Fiji","Asia/Kamchatka","Pacific/Majuro","Pacific/Auckland","Pacific/Auckland","Pacific/Tongatapu","Pacific/Fakaofo","Pacific/Apia"]},{}],71:[function(e,t,n){"use strict";t.exports=["#{Name.name}","#{Company.name}"]},{}],72:[function(e,t,n){"use strict";var a={};(t.exports=a).name=e("./name"),a.version=e("./version"),a.author=e("./author")},{"./author":71,"./name":73,"./version":74}],73:[function(e,t,n){"use strict";t.exports=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"]},{}],74:[function(e,t,n){"use strict";t.exports=["0.#.#","0.##","#.##","#.#","#.#.#"]},{}],75:[function(e,t,n){"use strict";t.exports=["2011-10-12","2012-11-12","2015-11-11","2013-9-12"]},{}],76:[function(e,t,n){"use strict";t.exports=["1234-2121-1221-1211","1212-1221-1121-1234","1211-1221-1234-2201","1228-1221-1221-1431"]},{}],77:[function(e,t,n){"use strict";t.exports=["visa","mastercard","americanexpress","discover"]},{}],78:[function(e,t,n){"use strict";var a={};(t.exports=a).credit_card_numbers=e("./credit_card_numbers"),a.credit_card_expiry_dates=e("./credit_card_expiry_dates"),a.credit_card_types=e("./credit_card_types")},{"./credit_card_expiry_dates":75,"./credit_card_numbers":76,"./credit_card_types":77}],79:[function(e,t,n){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},{}],80:[function(e,t,n){"use strict";var a={};(t.exports=a).formats=e("./formats")},{"./formats":79}],81:[function(e,t,n){"use strict";t.exports=["red","green","blue","yellow","purple","mint green","teal","white","black","orange","pink","grey","maroon","violet","turquoise","tan","sky blue","salmon","plum","orchid","olive","magenta","lime","ivory","indigo","gold","fuchsia","cyan","azure","lavender","silver"]},{}],82:[function(e,t,n){"use strict";t.exports=["Books","Movies","Music","Games","Electronics","Computers","Home","Garden","Tools","Grocery","Health","Beauty","Toys","Kids","Baby","Clothing","Shoes","Jewelery","Sports","Outdoors","Automotive","Industrial"]},{}],83:[function(e,t,n){"use strict";var a={};(t.exports=a).color=e("./color"),a.department=e("./department"),a.product_name=e("./product_name")},{"./color":81,"./department":82,"./product_name":84}],84:[function(e,t,n){"use strict";t.exports={adjective:["Small","Ergonomic","Rustic","Intelligent","Gorgeous","Incredible","Fantastic","Practical","Sleek","Awesome","Generic","Handcrafted","Handmade","Licensed","Refined","Unbranded","Tasty"],material:["Steel","Wooden","Concrete","Plastic","Cotton","Granite","Rubber","Metal","Soft","Fresh","Frozen"],product:["Chair","Car","Computer","Keyboard","Mouse","Bike","Ball","Gloves","Pants","Shirt","Table","Shoes","Hat","Towels","Soap","Tuna","Chicken","Fish","Cheese","Bacon","Pizza","Salad","Sausages","Chips"]}},{}],85:[function(e,t,n){"use strict";t.exports=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","Decentralized","De-engineered","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Reactive","Realigned","Re-contextualized","Re-engineered","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Visionary","Vision-oriented"]},{}],86:[function(e,t,n){"use strict";t.exports=["clicks-and-mortar","value-added","vertical","proactive","robust","revolutionary","scalable","leading-edge","innovative","intuitive","strategic","e-business","mission-critical","sticky","one-to-one","24/7","end-to-end","global","B2B","B2C","granular","frictionless","virtual","viral","dynamic","24/365","best-of-breed","killer","magnetic","bleeding-edge","web-enabled","interactive","dot-com","sexy","back-end","real-time","efficient","front-end","distributed","seamless","extensible","turn-key","world-class","open-source","cross-platform","cross-media","synergistic","bricks-and-clicks","out-of-the-box","enterprise","integrated","impactful","wireless","transparent","next-generation","cutting-edge","user-centric","visionary","customized","ubiquitous","plug-and-play","collaborative","compelling","holistic","rich"]},{}],87:[function(e,t,n){"use strict";t.exports=["synergies","web-readiness","paradigms","markets","partnerships","infrastructures","platforms","initiatives","channels","eyeballs","communities","ROI","solutions","e-tailers","e-services","action-items","portals","niches","technologies","content","vortals","supply-chains","convergence","relationships","architectures","interfaces","e-markets","e-commerce","systems","bandwidth","infomediaries","models","mindshare","deliverables","users","schemas","networks","applications","metrics","e-business","functionalities","experiences","web services","methodologies"]},{}],88:[function(e,t,n){"use strict";t.exports=["implement","utilize","integrate","streamline","optimize","evolve","transform","embrace","enable","orchestrate","leverage","reinvent","aggregate","architect","enhance","incentivize","morph","empower","envisioneer","monetize","harness","facilitate","seize","disintermediate","synergize","strategize","deploy","brand","grow","target","syndicate","synthesize","deliver","mesh","incubate","engage","maximize","benchmark","expedite","reintermediate","whiteboard","visualize","repurpose","innovate","scale","unleash","drive","extend","engineer","revolutionize","generate","exploit","transition","e-enable","iterate","cultivate","matrix","productize","redefine","recontextualize"]},{}],89:[function(e,t,n){"use strict";t.exports=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","context-sensitive","contextually-based","content-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multimedia","multi-state","multi-tasking","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","systematic","systemic","system-worthy","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"]},{}],90:[function(e,t,n){"use strict";var a={};(t.exports=a).suffix=e("./suffix"),a.adjective=e("./adjective"),a.descriptor=e("./descriptor"),a.noun=e("./noun"),a.bs_verb=e("./bs_verb"),a.bs_adjective=e("./bs_adjective"),a.bs_noun=e("./bs_noun"),a.name=e("./name")},{"./adjective":85,"./bs_adjective":86,"./bs_noun":87,"./bs_verb":88,"./descriptor":89,"./name":91,"./noun":92,"./suffix":93}],91:[function(e,t,n){"use strict";t.exports=["#{Name.last_name} #{suffix}","#{Name.last_name}-#{Name.last_name}","#{Name.last_name}, #{Name.last_name} and #{Name.last_name}"]},{}],92:[function(e,t,n){"use strict";t.exports=["ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","artificial intelligence","array","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","database","data-warehouse","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","Graphic Interface","groupware","Graphical User Interface","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge user","knowledge base","local area network","leverage","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},{}],93:[function(e,t,n){"use strict";t.exports=["Inc","and Sons","LLC","Group"]},{}],94:[function(e,t,n){"use strict";t.exports=["/34##-######-####L/","/37##-######-####L/"]},{}],95:[function(e,t,n){"use strict";t.exports=["/30[0-5]#-######-###L/","/368#-######-###L/"]},{}],96:[function(e,t,n){"use strict";t.exports=["/6011-####-####-###L/","/65##-####-####-###L/","/64[4-9]#-####-####-###L/","/6011-62##-####-####-###L/","/65##-62##-####-####-###L/","/64[4-9]#-62##-####-####-###L/"]},{}],97:[function(e,t,n){"use strict";var a={};(t.exports=a).visa=e("./visa"),a.mastercard=e("./mastercard"),a.discover=e("./discover"),a.american_express=e("./american_express"),a.diners_club=e("./diners_club"),a.jcb=e("./jcb"),a.switch=e("./switch"),a.solo=e("./solo"),a.maestro=e("./maestro"),a.laser=e("./laser")},{"./american_express":94,"./diners_club":95,"./discover":96,"./jcb":98,"./laser":99,"./maestro":100,"./mastercard":101,"./solo":102,"./switch":103,"./visa":104}],98:[function(e,t,n){"use strict";t.exports=["/3528-####-####-###L/","/3529-####-####-###L/","/35[3-8]#-####-####-###L/"]},{}],99:[function(e,t,n){"use strict";t.exports=["/6304###########L/","/6706###########L/","/6771###########L/","/6709###########L/","/6304#########{5,6}L/","/6706#########{5,6}L/","/6771#########{5,6}L/","/6709#########{5,6}L/"]},{}],100:[function(e,t,n){"use strict";t.exports=["/50#{9,16}L/","/5[6-8]#{9,16}L/","/56##{9,16}L/"]},{}],101:[function(e,t,n){"use strict";t.exports=["/5[1-5]##-####-####-###L/","/6771-89##-####-###L/"]},{}],102:[function(e,t,n){"use strict";t.exports=["/6767-####-####-###L/","/6767-####-####-####-#L/","/6767-####-####-####-##L/"]},{}],103:[function(e,t,n){"use strict";t.exports=["/6759-####-####-###L/","/6759-####-####-####-#L/","/6759-####-####-####-##L/"]},{}],104:[function(e,t,n){"use strict";t.exports=["/4###########L/","/4###-####-####-###L/"]},{}],105:[function(e,t,n){"use strict";t.exports=["utf8_unicode_ci","utf8_general_ci","utf8_bin","ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci"]},{}],106:[function(e,t,n){"use strict";t.exports=["id","title","name","email","phone","token","group","category","password","comment","avatar","status","createdAt","updatedAt"]},{}],107:[function(e,t,n){"use strict";t.exports=["InnoDB","MyISAM","MEMORY","CSV","BLACKHOLE","ARCHIVE"]},{}],108:[function(e,t,n){"use strict";var a={};(t.exports=a).collation=e("./collation"),a.column=e("./column"),a.engine=e("./engine"),a.type=e("./type")},{"./collation":105,"./column":106,"./engine":107,"./type":109}],109:[function(e,t,n){"use strict";t.exports=["int","varchar","text","date","datetime","tinyint","time","timestamp","smallint","mediumint","bigint","decimal","float","double","real","bit","boolean","serial","blob","binary","enum","set","geometry","point"]},{}],110:[function(e,t,n){"use strict";var a={};(t.exports=a).month=e("./month"),a.weekday=e("./weekday")},{"./month":111,"./weekday":112}],111:[function(e,t,n){"use strict";t.exports={wide:["January","February","March","April","May","June","July","August","September","October","November","December"],wide_context:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],abbr_context:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}},{}],112:[function(e,t,n){"use strict";t.exports={wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],wide_context:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],abbr_context:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}},{}],113:[function(e,t,n){"use strict";t.exports=["Checking","Savings","Money Market","Investment","Home Loan","Credit Card","Auto Loan","Personal Loan"]},{}],114:[function(e,t,n){"use strict";t.exports={"UAE Dirham":{code:"AED",symbol:""},Afghani:{code:"AFN",symbol:"؋"},Lek:{code:"ALL",symbol:"Lek"},"Armenian Dram":{code:"AMD",symbol:""},"Netherlands Antillian Guilder":{code:"ANG",symbol:"ƒ"},Kwanza:{code:"AOA",symbol:""},"Argentine Peso":{code:"ARS",symbol:"$"},"Australian Dollar":{code:"AUD",symbol:"$"},"Aruban Guilder":{code:"AWG",symbol:"ƒ"},"Azerbaijanian Manat":{code:"AZN",symbol:"ман"},"Convertible Marks":{code:"BAM",symbol:"KM"},"Barbados Dollar":{code:"BBD",symbol:"$"},Taka:{code:"BDT",symbol:""},"Bulgarian Lev":{code:"BGN",symbol:"лв"},"Bahraini Dinar":{code:"BHD",symbol:""},"Burundi Franc":{code:"BIF",symbol:""},"Bermudian Dollar (customarily known as Bermuda Dollar)":{code:"BMD",symbol:"$"},"Brunei Dollar":{code:"BND",symbol:"$"},"Boliviano Mvdol":{code:"BOB BOV",symbol:"$b"},"Brazilian Real":{code:"BRL",symbol:"R$"},"Bahamian Dollar":{code:"BSD",symbol:"$"},Pula:{code:"BWP",symbol:"P"},"Belarussian Ruble":{code:"BYR",symbol:"p."},"Belize Dollar":{code:"BZD",symbol:"BZ$"},"Canadian Dollar":{code:"CAD",symbol:"$"},"Congolese Franc":{code:"CDF",symbol:""},"Swiss Franc":{code:"CHF",symbol:"CHF"},"Chilean Peso Unidades de fomento":{code:"CLP CLF",symbol:"$"},"Yuan Renminbi":{code:"CNY",symbol:"¥"},"Colombian Peso Unidad de Valor Real":{code:"COP COU",symbol:"$"},"Costa Rican Colon":{code:"CRC",symbol:"₡"},"Cuban Peso Peso Convertible":{code:"CUP CUC",symbol:"₱"},"Cape Verde Escudo":{code:"CVE",symbol:""},"Czech Koruna":{code:"CZK",symbol:"Kč"},"Djibouti Franc":{code:"DJF",symbol:""},"Danish Krone":{code:"DKK",symbol:"kr"},"Dominican Peso":{code:"DOP",symbol:"RD$"},"Algerian Dinar":{code:"DZD",symbol:""},Kroon:{code:"EEK",symbol:""},"Egyptian Pound":{code:"EGP",symbol:"£"},Nakfa:{code:"ERN",symbol:""},"Ethiopian Birr":{code:"ETB",symbol:""},Euro:{code:"EUR",symbol:"€"},"Fiji Dollar":{code:"FJD",symbol:"$"},"Falkland Islands Pound":{code:"FKP",symbol:"£"},"Pound Sterling":{code:"GBP",symbol:"£"},Lari:{code:"GEL",symbol:""},Cedi:{code:"GHS",symbol:""},"Gibraltar Pound":{code:"GIP",symbol:"£"},Dalasi:{code:"GMD",symbol:""},"Guinea Franc":{code:"GNF",symbol:""},Quetzal:{code:"GTQ",symbol:"Q"},"Guyana Dollar":{code:"GYD",symbol:"$"},"Hong Kong Dollar":{code:"HKD",symbol:"$"},Lempira:{code:"HNL",symbol:"L"},"Croatian Kuna":{code:"HRK",symbol:"kn"},"Gourde US Dollar":{code:"HTG USD",symbol:""},Forint:{code:"HUF",symbol:"Ft"},Rupiah:{code:"IDR",symbol:"Rp"},"New Israeli Sheqel":{code:"ILS",symbol:"₪"},"Indian Rupee":{code:"INR",symbol:""},"Indian Rupee Ngultrum":{code:"INR BTN",symbol:""},"Iraqi Dinar":{code:"IQD",symbol:""},"Iranian Rial":{code:"IRR",symbol:"﷼"},"Iceland Krona":{code:"ISK",symbol:"kr"},"Jamaican Dollar":{code:"JMD",symbol:"J$"},"Jordanian Dinar":{code:"JOD",symbol:""},Yen:{code:"JPY",symbol:"¥"},"Kenyan Shilling":{code:"KES",symbol:""},Som:{code:"KGS",symbol:"лв"},Riel:{code:"KHR",symbol:"៛"},"Comoro Franc":{code:"KMF",symbol:""},"North Korean Won":{code:"KPW",symbol:"₩"},Won:{code:"KRW",symbol:"₩"},"Kuwaiti Dinar":{code:"KWD",symbol:""},"Cayman Islands Dollar":{code:"KYD",symbol:"$"},Tenge:{code:"KZT",symbol:"лв"},Kip:{code:"LAK",symbol:"₭"},"Lebanese Pound":{code:"LBP",symbol:"£"},"Sri Lanka Rupee":{code:"LKR",symbol:"₨"},"Liberian Dollar":{code:"LRD",symbol:"$"},"Lithuanian Litas":{code:"LTL",symbol:"Lt"},"Latvian Lats":{code:"LVL",symbol:"Ls"},"Libyan Dinar":{code:"LYD",symbol:""},"Moroccan Dirham":{code:"MAD",symbol:""},"Moldovan Leu":{code:"MDL",symbol:""},"Malagasy Ariary":{code:"MGA",symbol:""},Denar:{code:"MKD",symbol:"ден"},Kyat:{code:"MMK",symbol:""},Tugrik:{code:"MNT",symbol:"₮"},Pataca:{code:"MOP",symbol:""},Ouguiya:{code:"MRO",symbol:""},"Mauritius Rupee":{code:"MUR",symbol:"₨"},Rufiyaa:{code:"MVR",symbol:""},Kwacha:{code:"MWK",symbol:""},"Mexican Peso Mexican Unidad de Inversion (UDI)":{code:"MXN MXV",symbol:"$"},"Malaysian Ringgit":{code:"MYR",symbol:"RM"},Metical:{code:"MZN",symbol:"MT"},Naira:{code:"NGN",symbol:"₦"},"Cordoba Oro":{code:"NIO",symbol:"C$"},"Norwegian Krone":{code:"NOK",symbol:"kr"},"Nepalese Rupee":{code:"NPR",symbol:"₨"},"New Zealand Dollar":{code:"NZD",symbol:"$"},"Rial Omani":{code:"OMR",symbol:"﷼"},"Balboa US Dollar":{code:"PAB USD",symbol:"B/."},"Nuevo Sol":{code:"PEN",symbol:"S/."},Kina:{code:"PGK",symbol:""},"Philippine Peso":{code:"PHP",symbol:"Php"},"Pakistan Rupee":{code:"PKR",symbol:"₨"},Zloty:{code:"PLN",symbol:"zł"},Guarani:{code:"PYG",symbol:"Gs"},"Qatari Rial":{code:"QAR",symbol:"﷼"},"New Leu":{code:"RON",symbol:"lei"},"Serbian Dinar":{code:"RSD",symbol:"Дин."},"Russian Ruble":{code:"RUB",symbol:"руб"},"Rwanda Franc":{code:"RWF",symbol:""},"Saudi Riyal":{code:"SAR",symbol:"﷼"},"Solomon Islands Dollar":{code:"SBD",symbol:"$"},"Seychelles Rupee":{code:"SCR",symbol:"₨"},"Sudanese Pound":{code:"SDG",symbol:""},"Swedish Krona":{code:"SEK",symbol:"kr"},"Singapore Dollar":{code:"SGD",symbol:"$"},"Saint Helena Pound":{code:"SHP",symbol:"£"},Leone:{code:"SLL",symbol:""},"Somali Shilling":{code:"SOS",symbol:"S"},"Surinam Dollar":{code:"SRD",symbol:"$"},Dobra:{code:"STD",symbol:""},"El Salvador Colon US Dollar":{code:"SVC USD",symbol:"$"},"Syrian Pound":{code:"SYP",symbol:"£"},Lilangeni:{code:"SZL",symbol:""},Baht:{code:"THB",symbol:"฿"},Somoni:{code:"TJS",symbol:""},Manat:{code:"TMT",symbol:""},"Tunisian Dinar":{code:"TND",symbol:""},"Pa'anga":{code:"TOP",symbol:""},"Turkish Lira":{code:"TRY",symbol:"TL"},"Trinidad and Tobago Dollar":{code:"TTD",symbol:"TT$"},"New Taiwan Dollar":{code:"TWD",symbol:"NT$"},"Tanzanian Shilling":{code:"TZS",symbol:""},Hryvnia:{code:"UAH",symbol:"₴"},"Uganda Shilling":{code:"UGX",symbol:""},"US Dollar":{code:"USD",symbol:"$"},"Peso Uruguayo Uruguay Peso en Unidades Indexadas":{code:"UYU UYI",symbol:"$U"},"Uzbekistan Sum":{code:"UZS",symbol:"лв"},"Bolivar Fuerte":{code:"VEF",symbol:"Bs"},Dong:{code:"VND",symbol:"₫"},Vatu:{code:"VUV",symbol:""},Tala:{code:"WST",symbol:""},"CFA Franc BEAC":{code:"XAF",symbol:""},Silver:{code:"XAG",symbol:""},Gold:{code:"XAU",symbol:""},"Bond Markets Units European Composite Unit (EURCO)":{code:"XBA",symbol:""},"European Monetary Unit (E.M.U.-6)":{code:"XBB",symbol:""},"European Unit of Account 9(E.U.A.-9)":{code:"XBC",symbol:""},"European Unit of Account 17(E.U.A.-17)":{code:"XBD",symbol:""},"East Caribbean Dollar":{code:"XCD",symbol:"$"},SDR:{code:"XDR",symbol:""},"UIC-Franc":{code:"XFU",symbol:""},"CFA Franc BCEAO":{code:"XOF",symbol:""},Palladium:{code:"XPD",symbol:""},"CFP Franc":{code:"XPF",symbol:""},Platinum:{code:"XPT",symbol:""},"Codes specifically reserved for testing purposes":{code:"XTS",symbol:""},"Yemeni Rial":{code:"YER",symbol:"﷼"},Rand:{code:"ZAR",symbol:"R"},"Rand Loti":{code:"ZAR LSL",symbol:""},"Rand Namibia Dollar":{code:"ZAR NAD",symbol:""},"Zambian Kwacha":{code:"ZMK",symbol:""},"Zimbabwe Dollar":{code:"ZWL",symbol:""}}},{}],115:[function(e,t,n){"use strict";var a={};(t.exports=a).account_type=e("./account_type"),a.transaction_type=e("./transaction_type"),a.currency=e("./currency")},{"./account_type":113,"./currency":114,"./transaction_type":116}],116:[function(e,t,n){"use strict";t.exports=["deposit","withdrawal","payment","invoice"]},{}],117:[function(e,t,n){"use strict";t.exports=["TCP","HTTP","SDD","RAM","GB","CSS","SSL","AGP","SQL","FTP","PCI","AI","ADP","RSS","XML","EXE","COM","HDD","THX","SMTP","SMS","USB","PNG","SAS","IB","SCSI","JSON","XSS","JBOD"]},{}],118:[function(e,t,n){"use strict";t.exports=["auxiliary","primary","back-end","digital","open-source","virtual","cross-platform","redundant","online","haptic","multi-byte","bluetooth","wireless","1080p","neural","optical","solid state","mobile"]},{}],119:[function(e,t,n){"use strict";var a={};(t.exports=a).abbreviation=e("./abbreviation"),a.adjective=e("./adjective"),a.noun=e("./noun"),a.verb=e("./verb"),a.ingverb=e("./ingverb")},{"./abbreviation":117,"./adjective":118,"./ingverb":120,"./noun":121,"./verb":122}],120:[function(e,t,n){"use strict";t.exports=["backing up","bypassing","hacking","overriding","compressing","copying","navigating","indexing","connecting","generating","quantifying","calculating","synthesizing","transmitting","programming","parsing"]},{}],121:[function(e,t,n){"use strict";t.exports=["driver","protocol","bandwidth","panel","microchip","program","port","card","array","interface","system","sensor","firewall","hard drive","pixel","alarm","feed","monitor","application","transmitter","bus","circuit","capacitor","matrix"]},{}],122:[function(e,t,n){"use strict";t.exports=["back up","bypass","hack","override","compress","copy","navigate","index","connect","generate","quantify","calculate","synthesize","input","transmit","program","reboot","parse"]},{}],123:[function(e,t,n){"use strict";var a={};(t.exports=a).title="English",a.separator=" & ",a.address=e("./address"),a.credit_card=e("./credit_card"),a.company=e("./company"),a.internet=e("./internet"),a.database=e("./database"),a.lorem=e("./lorem"),a.name=e("./name"),a.phone_number=e("./phone_number"),a.cell_phone=e("./cell_phone"),a.business=e("./business"),a.commerce=e("./commerce"),a.team=e("./team"),a.hacker=e("./hacker"),a.app=e("./app"),a.finance=e("./finance"),a.date=e("./date"),a.system=e("./system")},{"./address":61,"./app":72,"./business":78,"./cell_phone":80,"./commerce":83,"./company":90,"./credit_card":97,"./database":108,"./date":110,"./finance":115,"./hacker":119,"./internet":128,"./lorem":129,"./name":133,"./phone_number":140,"./system":141,"./team":144}],124:[function(e,t,n){"use strict";t.exports=["https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sprayaga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Skyhartman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moscoz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurafire/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/91bilal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malykhinv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kushsolitary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowshade/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heyimjuani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/envex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/unterdreht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/collegeman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peejfancher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andyisonline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ultragex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fuck_you_two/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adellecharles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ateneupopular/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetalpbalkan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Stievius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerem/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osvaldas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelceballos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrykoblentz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peterlandt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weglov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandclay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmetsulek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolasfolliot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayrobinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michzen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markjenkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicolai_larsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alagoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/idiot/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadengle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutlu82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vocino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guiiipontes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soyjavi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshaustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomaslau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/langate/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cemshid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leemunroe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_shahedk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BillSKenney/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshhemsley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sindresorhus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/soffes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/9lessons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linux29/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anaami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joreira/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shadeed9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottkclark/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jedbridges/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marakasina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BrianPurkiss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bublienko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devankoshal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ZacharyZorbas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timmillwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuasortino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/damenleeturks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tomas_janousek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/RussellBishop/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brajeshwar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bermonpainter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdullindenis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suprb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yalozhkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chandlervdw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamgarth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_victa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/commadelimited/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roybarberuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/axel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladarbatov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ffbel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/syropian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ankitind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flashmurphy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ChrisFarina78/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baliomega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschamt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jm_denis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kennyadr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chatyrko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dingyi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mds/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terryxlife/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaroni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prrstn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eduardostuart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/GavicoInd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rohixx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakesimkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leeiio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjrus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uberschizo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefoundry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ripplemdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/exentrich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jakemoore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joaoedumedeiros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/poormini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tereshenkov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keryilmaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haydn_woods/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/llun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sgaurav_baghel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jamiebrittain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pifagor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agromov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/erwanhesry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diesellaws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiaha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/koridhandy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewcohen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smaczny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nandini_m/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sydlawrence/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdharrison/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgerken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lewisainslie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robbschiller/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/flexrs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattdetails/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raquelwilson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrmartineau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/opnsrce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximseshuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxalex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samihah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chanpory/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sharvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josemarques/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jefffis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krystalfister/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lokesh_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dpmachado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/funwatercat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timothycd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/picard102/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcobarbosa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/krasnoukhov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ademilter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickdt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/operatino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugomano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/logorado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dc_user/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/horaciobella/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SlaapMe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teeragit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqonicd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ilya_pestov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewarrow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssiskind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/HenryHoffman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdsaunders/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamsxu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousoffice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themadray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michigangraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kohette/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nickfratter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/runningskull/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madysondesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyshen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kurtinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amanruzaini/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyhaggard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronalfred/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jitachi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/therealmarvin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pmeissner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ooomz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chacky14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jesseddy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shanehudson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/IsaryAmairani/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arthurholcombe1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/boxmodel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ehsandiary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/LucasPerdidao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shalt0ni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swaplord/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaelifa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plbabin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guillemboti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arindam_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/renbyrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thiagovernetti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmillspaysbills/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikemai2awesome/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jervo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mekal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sta1ex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robergd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipecsl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrea211087/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/garand/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhooyenga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abovefunction/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pcridesagain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/randomlies/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BryanHorsey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dahparra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allthingssmitty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvernon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beweinreich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/increase/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falvarad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxndrustinov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souuf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/orkuncaylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AM_Kn2/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gearpixels/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bassamology/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kosmar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrjamesnoble/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shaneIxD/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nacho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yigitpinarbasi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buzzusborne/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aaronkwhite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rmlewisuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giancarlon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nbirckel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_nny_m_cher/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sdidonato/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atariboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abotap/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karalek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psdesignuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ludwiczakpawel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nemanjaivanovic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baluli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ahmadajmi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vovkasolovev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samgrover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonathansimmons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelsonjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/S0ufi4n3/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xtopherpaul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oaktreemedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nateschulte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/findingjenny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/namankreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/we_social/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leehambley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/solid_color/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abelcabans/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kkusaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jordyvdboom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosgavina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pechkinator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rdbannon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/croakx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/suribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kerihenare/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/catadeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gcmorley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duivvv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorDubugras/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wintopia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattbilotti/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taylorling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/megdraws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meln1ks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mahmoudmetwally/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Silveredge9/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travis_arnold/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artem_kostenko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adobi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daykiine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alek_djuric/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scips/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelmendes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alsobrooks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mcflydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/santi_urso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allfordesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stayuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bertboerland/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marosholly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamnac/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cynthiasavard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muringa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hiemil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jackiesaik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iduuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antjanus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aroon_sharma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dshster/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thehacker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelbrooksjr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanmclaughlin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/clubb3rry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/taybenlor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xripunov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/myastro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/digitalmaverick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hjartstrorn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vaughanmoffitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdots/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isnifer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeysafonov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scrapdnb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrismj83/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sokaniwaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zaki3d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/illyzoren/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mocabyte/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/djsherman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidhemphill/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/waghner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/necodymiconer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/praveen_vijaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/travishines/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kuldarkalvik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Elt_n/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/phillapier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okseanjay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/id835559/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kudretkeskin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anjhero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/duck4fuck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scott_riley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/noufalibrahim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/h1brd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borges_marcos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/devinhalladay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ciaranr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefooo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikebeecham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshuaraichur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/irae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petrangr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmitriychuta/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charliegann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arashmanteghi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ainsleywagon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/svenlen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/faisalabid/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/beshur/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlyson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dutchnadia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teddyzetterlund/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aoimedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/toddrew/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artvavs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benoitboucart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jomarmen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/creartinc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/homka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gaborenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinclediere/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maximsorokin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j2deme/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kapaluccio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/de_ascanio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dawidwu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpatey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/popey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_purplebunny/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/1markiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ajaxy_ru/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brenmurrell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dudestein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskarlevinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorstuber/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nehfy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leandrovaranda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottgallant/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victor_haydin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawrb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryhanhassan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amayvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_brixen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karolkrakowiak_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herkulano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geran7/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cggaurav/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_witko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/polarity/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattlat/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonburke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/teylorfeliz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigelimeliah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rachelreveley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reabo101/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rahmeen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rickyyean/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spbroma/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sebashton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpenico/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/francis_vega/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oktayelipek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kikillo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fabbianz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrygerard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/0therplanet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mbilalsiddique1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ionuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grrr_nl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/liminha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rawdiggie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryandownie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sethlouey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pixage/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arpitnj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/switmer777/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/puzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/besbujupi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supjoey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lowie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/linkibol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balintorosz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imcoding/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gusoto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasschrijer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/superoutman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kalmerrautam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielizalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gojeanyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidbaldie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_vojto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laurengray/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jydesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mymyboy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nellleo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marciotoledo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hasslunsford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/muridrahhal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/levisan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/grahamkennery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepetitogre/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antongenkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/safrankov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cocolero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dss49/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matt3224/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluesix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/quailandquasar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/AlbertoCococi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lepinski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhudobivnik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thibaut_re/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olgary/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shojberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mtolokonnikov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bereto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naupintos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wegotvices/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xadhix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rodnylobos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madcampos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebyvadim/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartoszdawydzik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/supervova/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markretzloff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vonachoo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darylws/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mylesb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/herbigt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/depaulawagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gizmeedevil1991/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_scottburgess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lisovsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidsasda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/artd_sign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/YoungCutlass/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mgonto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victorquinn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/osmond/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oksanafrewer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zauerkraut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkeithmason/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nitinhayaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lmjabreu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mandalareopens/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thinkleft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caseycavanagh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/luxe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dotgridline/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spedwig/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madewulf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mattsapii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/helderleal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisstumph/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jayphen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nsamoylov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisvanderkooi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justme_timothyg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/otozk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gu5taf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cyril_gaillard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d_kobelyatsky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/daniloc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nwdsha/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/romanbulah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dannol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thekevinjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jwalter14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timgthomas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thatonetommy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/diansigitp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adrienths/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klimmka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gkaam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/derekcramer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jennyyo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerrsoft/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xalionmalik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edhenderson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/keyuri85/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/roxanejammet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kimcool/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edkf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matkins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alessandroribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacksonlatka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebronjennan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karlkanall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/moynihan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danpliego/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wesleytrankin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fjaguero/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mashaaaaal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yassiryahya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dparrelli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fotomagin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aka_james/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iqbalperkasa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jarsen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_oy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/malgordon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlfairclough/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelabehsera/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierrestoffe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enjoythetau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/loganjlambert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rpeezy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coreyginnivan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michalhron/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lingeswaran/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kolsvein/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/peter576/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reideiredale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joeymurdah/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/raphaelnikson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mvdheuvel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maxlinderman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jimmuirhead/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/begreative/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/frankiefreesbie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Talbi_ConSept/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/longlivemyword/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vanchesz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maiklam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hermanobrother/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rez___a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/greenbes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anthonysukow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fluidbrush/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dactrtr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jehnglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bergmartin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hugocornejo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_kkga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dzantievm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonsgotwood/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byryan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vytautas_a/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cicerobr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshelmersson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d33pthought/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davecraige/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nckjrvs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexandermayes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bagawarman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rob_thomas10/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cofla/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/maikelk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtgibbons/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russell_baylis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhesslow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/codysanfilippo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/webtanya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madebybrenton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dcalonaci/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perfectflow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjsiii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kumarrajan12123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamsteffen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ceekaytweet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/larrybolt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/conspirator/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dallasbpeters/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n3dmax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terpimost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/byrnecore/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/j_drake_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/calebjoyce/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hoangloi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tobysaxon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gofrasdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dimaposnyy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tjisousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okandungel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/billyroshan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oskamaya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/motionthinks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/knilob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashocka18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bartjo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/omnizya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andreas_pr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edgarchris99/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thomasgeisen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joannefournier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/demersdesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adammarsbar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nasirwd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n_tassone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/themrdave/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicollerich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicoleglynn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/judzhin_miles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kianoshp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evandrix/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alterchuca/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhrubo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ma_tiax/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ssbb_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mauriolg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mactopus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/the_winslet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joemdesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jacobbennett/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nfedoroff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamglimy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/allagringaus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/olaolusoga/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wim1k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nicklacke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/steynviljoen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/strikewan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryankirkman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewabogado/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doooon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jagan123/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ariffsetiawan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elenadissi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mwarkentin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thierrymeier_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/r_garcia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dmackerman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/borantula/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/spacewood_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryuchi311/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/evanshajed/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tristanlegros/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shoaib253/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aislinnkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okcoker/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunshinedgirl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chadami/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleclarsoniv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nomidesigns/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petebernardo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottiedude/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imsoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imammuht/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nepdud/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lanceguyatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bboy1895/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/amywebbb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rweve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haruintesettden/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ricburton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nelshd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/batsirai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/primozcigler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/8d3k/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geneseleznev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/al_li/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/souperphly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mslarkina/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/2fockus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cdavis565/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/turkutuuli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/uxward/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lebinoclard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauravjassal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidmerrique/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mdsisto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andrewofficer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kojourin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnirmal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aluisio_azevedo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cloudstudio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danvierich/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fran_mchamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/perretmagali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cadikkara/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bpartridge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelkoper/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vitor376/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/desastrozo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thimo_cz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lhausermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xravil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/guischmitt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vigobronx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panghal0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/miguelkooreman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/surgeonist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/christianoliff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/caspergrl/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ipavelek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pierre_nel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sterlingrules/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elbuscainfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bennyjien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stushona/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/estebanuribe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/embrcecreations/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danillos/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/charlesrpratt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladyn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosblanco_eu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/leonfedotov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rangafangs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chris_frees/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tgormtx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bryan_topham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jpscribbles/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carbontwelve/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/iamjdeleon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/snowwrite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/barputro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/drewbyreese/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bistrianiosip/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magoo04/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pehamondello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/a_harris88/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/algunsanabria/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zforrester/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ovall/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosjgsousa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/geobikas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ah_lice/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/looneydoodle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nerdgr8/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ddggccaa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zackeeler/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/normanbox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/el_fuertisimo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ismail_biltagi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juangomezw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jnmnrd/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/patrickcoombe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ryanjohnson_me/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeffgolenski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kvasnic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gauchomatt/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/afusinatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/okansurreel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adamawesomeface/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emileboudeling/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arishi_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juanmamartinez/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mkginfo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/terrorpixel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/curiousonaut/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/prheemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcolenso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/foczzi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/martip07/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaodang17/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johncafazza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/robinlayfield/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/franciscoamk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/abdulhyeuk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marklamb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/edobene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresenfredrik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mikaeljorhult/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chrisslowik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/meelford/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elliotnolten/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yehudab/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vijaykarthik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bfrohs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josep_martins/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/attacks/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sur4dye/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tumski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mangosango/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/paulfarino/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kazaky999/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kiwiupover/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nvkznemo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tom_even/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ratbus/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joshmedeski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thewillbeard/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joe_black/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleinadsays/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcusgorillius/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hota_v/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jghyllebert/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shinze/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/janpalounek/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/her_ruu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dansowter/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/felipeapiress/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/magugzbrand2d/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/posterjob/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nathalie_fs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobbytwoshoes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dreizle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/elisabethkjaer/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/notbadart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mohanrohith/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jlsolerdeltoro/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itskawsar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/slowspock/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/zvchkelly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/craighenneberry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trubeatto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/juaumlol/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/samscouto/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/BenouarradeM/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gipsy_raf/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/netonet_il/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/arkokoley/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/itsajimithing/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smalonso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/victordeanda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_dwite_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richardgarretts/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregrwilkinson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anatolinicolae/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanotirloni/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ostirbu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/naitanamoreno/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/michaelcomiskey/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marcomano_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/davidcazalis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falconerie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gregkilian/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bcrad/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bolzanmarco/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/low_res/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vlajki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/petar_prog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jonkspr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akmalfikri/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mfacchinello/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/atanism/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/harry_sistalam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/murrayswift/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bobwassermann/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gavr1l0/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/madshensel/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mr_subtle/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salimianoff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/twittypork/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/airskylar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dnezkumar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgajjar/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/salvafc/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/deeenright/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cybind/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eyronn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vickyshits/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/cboller1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andresdjasso/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/melvindidit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lvovenok/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/giuliusa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/belyaev_rs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kamal_chaneman/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/incubo82/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hellofeverrrr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mhaligowski/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sunlandictwin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bu7921/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/andytlaw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremery/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/finchjke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manigm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/umurgdk/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ganserene/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mutu_krish/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jodytaggart/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ntfblog/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tanveerrao/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hfalucas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alxleroydeval/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kucingbelang4/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bargaorobalo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kylefrost/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumannzone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/angelcolberg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sachingawas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jjshaw14/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ramanathan_pdy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johndezember/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nilshoenson/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonmorreale/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nutzumi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sergeyalmone/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/klefue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kirangopal/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/baumann_alex/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/matthewkay_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jay_wilburn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shesgared/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/apriendeau/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johnriordan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wake_gs/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aleksitappura/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emsgulam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xilantra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/imomenui/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sircalebgrove/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/newbrushes/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hsinyo23/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/katiemdaly/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ecommerceil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marlinjayakody/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/swooshycueb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sangdth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/coderdiaz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sasha_shestakov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eugeneeweb/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dgclegg/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/n1ght_coder/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dixchen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/blakehawksworth/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marclgonzales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/yesmeck/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/doronmalki/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ruehldesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kijanmaharjan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/wearesavas/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefvdham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tweetubhai/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/fiterik/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/antonyryndya/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/d00maz/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/theonlyzeke/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/carlosm/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/manekenthe/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/reetajayendra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jeremyshimko/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/justinrgraham/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/stefanozoffoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/overra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrebay007/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/shvelo96/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/pyronite/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/thedjpetersen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/rtyukmaev/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_williamguerra/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/albertaugustin/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kevinjohndayy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vj_demien/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/colirpixoil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/goddardlewis/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/laasli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jqiuss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/heycamtaylor/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nastya_mane/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mastermindesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/nyancecom/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sandywoodruff/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/bighanddesign/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sbtransparent/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aviddayentonbay/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/richwild/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaysix_dizzy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/tur8le/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/seyedhossein1/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/privetwagner/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/emmandenn/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dev_essentials/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jmfsocial/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_yardenoon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mateaodviteza/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/weavermedia/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mufaddal_mw/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hafeeskhan/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sulaqo/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eddiechen/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/josecarlospsh/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vm_f/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/enricocicconi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/danmartin70/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/gmourier/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mrxloka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/_pedropinho/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/eitarafa/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/oscarowusu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ralph_lam/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/panchajanyag/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/woodydotmx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/marshallchen_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aio___/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/chaabane_wail/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/txcx/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/akashsharma39/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/falling_soul/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sainraja/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mugukamil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/johannesneu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/markwienands/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/balakayuriy/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/alan_zhang_/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/layerssss/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/kaspernordkvist/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/VMilescu/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/aeon56/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/sreejithexp/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dicesales/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/dhoot_amit/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/smenov/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/lonesomelemon/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vladimirdevic/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/joelcipriano/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/haligaliharun/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/buleswapnil/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/serefka/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/ifarafonow/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/vikasvinfotech/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/urrutimeoli/128.jpg","https://s3.amazonaws.com/uifaces/faces/twitter/areandacom/128.jpg"]},{}],125:[function(e,t,n){"use strict";t.exports=["com","biz","info","name","net","org"]},{}],126:[function(e,t,n){"use strict";t.exports=["example.org","example.com","example.net"]},{}],127:[function(e,t,n){"use strict";t.exports=["gmail.com","yahoo.com","hotmail.com"]},{}],128:[function(e,t,n){"use strict";var a={};(t.exports=a).free_email=e("./free_email"),a.example_email=e("./example_email"),a.domain_suffix=e("./domain_suffix"),a.avatar_uri=e("./avatar_uri")},{"./avatar_uri":124,"./domain_suffix":125,"./example_email":126,"./free_email":127}],129:[function(e,t,n){"use strict";var a={};(t.exports=a).words=e("./words"),a.supplemental=e("./supplemental")},{"./supplemental":130,"./words":131}],130:[function(e,t,n){"use strict";t.exports=["abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accipio","accommodo","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","adultus","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alienus","alii","alioqui","aliqua","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","arcus","argentum","argumentum","arguo","arma","armarium","armo","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","aspicio","asporto","assentator","astrum","atavus","ater","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","auris","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","avoco","baiulus","balbus","barba","bardus","basium","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certo","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","colloco","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corpus","correptius","corrigo","corroboro","corrumpo","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cunabula","cunae","cunctatio","cupiditas","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","curvus","custodia","damnatio","damno","dapifer","debeo","debilito","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defigo","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delego","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","desidero","desino","desipio","desolo","desparatus","despecto","despirmatio","infit","inflammatio","paens","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecunia","pecus","peior","pel","ocer","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","temptatio","tempus","tenax","tendo","teneo","tener","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","triginta","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpe","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velociter","velum","velut","venia","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduata","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","vultuosus","xiphias"]},{}],131:[function(e,t,n){"use strict";t.exports=["alias","consequatur","aut","perferendis","sit","voluptatem","accusantium","doloremque","aperiam","eaque","ipsa","quae","ab","illo","inventore","veritatis","et","quasi","architecto","beatae","vitae","dicta","sunt","explicabo","aspernatur","aut","odit","aut","fugit","sed","quia","consequuntur","magni","dolores","eos","qui","ratione","voluptatem","sequi","nesciunt","neque","dolorem","ipsum","quia","dolor","sit","amet","consectetur","adipisci","velit","sed","quia","non","numquam","eius","modi","tempora","incidunt","ut","labore","et","dolore","magnam","aliquam","quaerat","voluptatem","ut","enim","ad","minima","veniam","quis","nostrum","exercitationem","ullam","corporis","nemo","enim","ipsam","voluptatem","quia","voluptas","sit","suscipit","laboriosam","nisi","ut","aliquid","ex","ea","commodi","consequatur","quis","autem","vel","eum","iure","reprehenderit","qui","in","ea","voluptate","velit","esse","quam","nihil","molestiae","et","iusto","odio","dignissimos","ducimus","qui","blanditiis","praesentium","laudantium","totam","rem","voluptatum","deleniti","atque","corrupti","quos","dolores","et","quas","molestias","excepturi","sint","occaecati","cupiditate","non","provident","sed","ut","perspiciatis","unde","omnis","iste","natus","error","similique","sunt","in","culpa","qui","officia","deserunt","mollitia","animi","id","est","laborum","et","dolorum","fuga","et","harum","quidem","rerum","facilis","est","et","expedita","distinctio","nam","libero","tempore","cum","soluta","nobis","est","eligendi","optio","cumque","nihil","impedit","quo","porro","quisquam","est","qui","minus","id","quod","maxime","placeat","facere","possimus","omnis","voluptas","assumenda","est","omnis","dolor","repellendus","temporibus","autem","quibusdam","et","aut","consequatur","vel","illum","qui","dolorem","eum","fugiat","quo","voluptas","nulla","pariatur","at","vero","eos","et","accusamus","officiis","debitis","aut","rerum","necessitatibus","saepe","eveniet","ut","et","voluptates","repudiandae","sint","et","molestiae","non","recusandae","itaque","earum","rerum","hic","tenetur","a","sapiente","delectus","ut","aut","reiciendis","voluptatibus","maiores","doloribus","asperiores","repellat"]},{}],132:[function(e,t,n){"use strict";t.exports=["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gay","Gayle","Gaylord","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"]},{}],133:[function(e,t,n){"use strict";var a={};(t.exports=a).first_name=e("./first_name"),a.last_name=e("./last_name"),a.prefix=e("./prefix"),a.suffix=e("./suffix"),a.title=e("./title"),a.name=e("./name")},{"./first_name":132,"./last_name":134,"./name":135,"./prefix":136,"./suffix":137,"./title":138}],134:[function(e,t,n){"use strict";t.exports=["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Eichmann","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Friesen","Fritsch","Funk","Gaylord","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},{}],135:[function(e,t,n){"use strict";t.exports=["#{prefix} #{first_name} #{last_name}","#{first_name} #{last_name} #{suffix}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}","#{first_name} #{last_name}"]},{}],136:[function(e,t,n){"use strict";t.exports=["Mr.","Mrs.","Ms.","Miss","Dr."]},{}],137:[function(e,t,n){"use strict";t.exports=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"]},{}],138:[function(e,t,n){"use strict";t.exports={descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","Dynamic","International","Legacy","Forward","Internal","Human","Chief","Principal"],level:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"]}},{}],139:[function(e,t,n){"use strict";t.exports=["###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-####","(###) ###-####","1-###-###-####","###.###.####","###-###-#### x###","(###) ###-#### x###","1-###-###-#### x###","###.###.#### x###","###-###-#### x####","(###) ###-#### x####","1-###-###-#### x####","###.###.#### x####","###-###-#### x#####","(###) ###-#### x#####","1-###-###-#### x#####","###.###.#### x#####"]},{}],140:[function(e,t,n){"use strict";var a={};(t.exports=a).formats=e("./formats")},{"./formats":139}],141:[function(e,t,n){"use strict";var a={};(t.exports=a).mimeTypes=e("./mimeTypes")},{"./mimeTypes":142}],142:[function(e,t,n){"use strict";t.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana"},"application/3gpp-ims+xml":{source:"iana"},"application/a2l":{source:"iana"},"application/activemessage":{source:"iana"},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana"},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",extensions:["atomsvc"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana"},"application/bacnet-xdd+zip":{source:"iana"},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana"},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/cbor":{source:"iana"},"application/ccmp+xml":{source:"iana"},"application/ccxml+xml":{source:"iana",extensions:["ccxml"]},"application/cdfx+xml":{source:"iana"},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana"},"application/cellml+xml":{source:"iana"},"application/cfw":{source:"iana"},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana"},"application/cpl+xml":{source:"iana"},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana"},"application/cstadata+xml":{source:"iana"},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",extensions:["mdp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana"},"application/dicom":{source:"iana"},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/docbook+xml":{source:"apache",extensions:["dbk"]},"application/dskpp+xml":{source:"iana"},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/emergencycalldata.comment+xml":{source:"iana"},"application/emergencycalldata.deviceinfo+xml":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana"},"application/emergencycalldata.serviceinfo+xml":{source:"iana"},"application/emergencycalldata.subscriberinfo+xml":{source:"iana"},"application/emma+xml":{source:"iana",extensions:["emma"]},"application/emotionml+xml":{source:"iana"},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana"},"application/epub+zip":{source:"iana",extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana"},"application/fits":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1,extensions:["woff"]},"application/font-woff2":{compressible:!1,extensions:["woff2"]},"application/framework-attributes+xml":{source:"iana"},"application/gml+xml":{source:"apache",extensions:["gml"]},"application/gpx+xml":{source:"apache",extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1},"application/h224":{source:"iana"},"application/held+xml":{source:"iana"},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana"},"application/ibe-pkg-reply+xml":{source:"iana"},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana"},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana"},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana"},"application/kpml-response+xml":{source:"iana"},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana"},"application/lost+xml":{source:"iana",extensions:["lostxml"]},"application/lostsync+xml":{source:"iana"},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",extensions:["mads"]},"application/manifest+json":{charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",extensions:["mathml"]},"application/mathml-content+xml":{source:"iana"},"application/mathml-presentation+xml":{source:"iana"},"application/mbms-associated-procedure-description+xml":{source:"iana"},"application/mbms-deregister+xml":{source:"iana"},"application/mbms-envelope+xml":{source:"iana"},"application/mbms-msk+xml":{source:"iana"},"application/mbms-msk-response+xml":{source:"iana"},"application/mbms-protection-description+xml":{source:"iana"},"application/mbms-reception-report+xml":{source:"iana"},"application/mbms-register+xml":{source:"iana"},"application/mbms-register-response+xml":{source:"iana"},"application/mbms-schedule+xml":{source:"iana"},"application/mbms-user-service-description+xml":{source:"iana"},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana"},"application/media_control+xml":{source:"iana"},"application/mediaservercontrol+xml":{source:"iana",extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",extensions:["metalink"]},"application/metalink4+xml":{source:"iana",extensions:["meta4"]},"application/mets+xml":{source:"iana",extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mods+xml":{source:"iana",extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana"},"application/mrb-publish+xml":{source:"iana"},"application/msc-ivr+xml":{source:"iana"},"application/msc-mixer+xml":{source:"iana"},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mxf":{source:"iana",extensions:["mxf"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana"},"application/news-groupinfo":{source:"iana"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana"},"application/nss":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p2p-overlay+xml":{source:"iana"},"application/parityfec":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana"},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana"},"application/pidf-diff+xml":{source:"iana"},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",extensions:["pls"]},"application/poc-settings+xml":{source:"iana"},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/provenance+xml":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.hpub+zip":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana"},"application/pskc+xml":{source:"iana",extensions:["pskcxml"]},"application/qsig":{source:"iana"},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf"]},"application/reginfo+xml":{source:"iana",extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",extensions:["rld"]},"application/rfc+xml":{source:"iana"},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana"},"application/rls-services+xml":{source:"iana",extensions:["rs"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana"},"application/samlmetadata+xml":{source:"iana"},"application/sbml+xml":{source:"iana",extensions:["sbml"]},"application/scaip+xml":{source:"iana"},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/sep+xml":{source:"iana"},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",extensions:["shf"]},"application/sieve":{source:"iana"},"application/simple-filter+xml":{source:"iana"},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",extensions:["srx"]},"application/spirits-event+xml":{source:"iana"},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",extensions:["grxml"]},"application/sru+xml":{source:"iana",extensions:["sru"]},"application/ssdl+xml":{source:"apache",extensions:["ssdl"]},"application/ssml+xml":{source:"iana",extensions:["ssml"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/tei+xml":{source:"iana",extensions:["tei","teicorpus"]},"application/thraud+xml":{source:"iana",extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/ttml+xml":{source:"iana"},"application/tve-trigger":{source:"iana"},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana"},"application/urc-ressheet+xml":{source:"iana"},"application/urc-targetdesc+xml":{source:"iana"},"application/urc-uisocketdesc+xml":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana"},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.3gpp-prose+xml":{source:"iana"},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana"},"application/vnd.3gpp.bsf+xml":{source:"iana"},"application/vnd.3gpp.mid-call+xml":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana"},"application/vnd.3gpp.srvcc-info+xml":{source:"iana"},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana"},"application/vnd.3gpp.ussd+xml":{source:"iana"},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana"},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",extensions:["mpkg"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avistar+xml":{source:"iana"},"application/vnd.balsamiq.bmml+xml":{source:"iana"},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.biopax.rdf+xml":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",extensions:["cdxml"]},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana"},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",extensions:["wbs"]},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana"},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana"},"application/vnd.cybank":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume-movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana"},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana"},"application/vnd.dvb.notif-container+xml":{source:"iana"},"application/vnd.dvb.notif-generic+xml":{source:"iana"},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana"},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana"},"application/vnd.dvb.notif-init+xml":{source:"iana"},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana"},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana"},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.eszigno3+xml":{source:"iana",extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana"},"application/vnd.etsi.asic-e+zip":{source:"iana"},"application/vnd.etsi.asic-s+zip":{source:"iana"},"application/vnd.etsi.cug+xml":{source:"iana"},"application/vnd.etsi.iptvcommand+xml":{source:"iana"},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana"},"application/vnd.etsi.iptvprofile+xml":{source:"iana"},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana"},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana"},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana"},"application/vnd.etsi.iptvservice+xml":{source:"iana"},"application/vnd.etsi.iptvsync+xml":{source:"iana"},"application/vnd.etsi.iptvueprofile+xml":{source:"iana"},"application/vnd.etsi.mcid+xml":{source:"iana"},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana"},"application/vnd.etsi.pstn+xml":{source:"iana"},"application/vnd.etsi.sci+xml":{source:"iana"},"application/vnd.etsi.simservs+xml":{source:"iana"},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana"},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eudora.data":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana"},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana"},"application/vnd.gov.sk.e-form+zip":{source:"iana"},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana"},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana"},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana"},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana"},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana"},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsitem+xml":{source:"iana"},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana"},"application/vnd.iptc.g2.packageitem+xml":{source:"iana"},"application/vnd.iptc.g2.planningitem+xml":{source:"iana"},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las.las+xml":{source:"iana",extensions:["lasxml"]},"application/vnd.liberty-request+xml":{source:"iana"},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",extensions:["lbe"]},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana"},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana"},"application/vnd.marlin.drm.conftoken+xml":{source:"iana"},"application/vnd.marlin.drm.license+xml":{source:"iana"},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana"},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana"},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana"},"application/vnd.ms-printing.printticket+xml":{source:"apache"},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana"},"application/vnd.nokia.iptv.config+xml":{source:"iana"},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana"},"application/vnd.nokia.landmarkcollection+xml":{source:"iana"},"application/vnd.nokia.n-gage.ac+xml":{source:"iana"},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana"},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana"},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana"},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana"},"application/vnd.oipf.dae.xhtml+xml":{source:"iana"},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana"},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana"},"application/vnd.oipf.spdlist+xml":{source:"iana"},"application/vnd.oipf.ueprofile+xml":{source:"iana"},"application/vnd.oipf.userprofile+xml":{source:"iana"},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana"},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.imd+xml":{source:"iana"},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana"},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana"},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana"},"application/vnd.oma.bcast.sprov+xml":{source:"iana"},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana"},"application/vnd.oma.cab-feature-handler+xml":{source:"iana"},"application/vnd.oma.cab-pcc+xml":{source:"iana"},"application/vnd.oma.cab-subs-invite+xml":{source:"iana"},"application/vnd.oma.cab-user-prefs+xml":{source:"iana"},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana"},"application/vnd.oma.group-usage-list+xml":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana"},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana"},"application/vnd.oma.poc.final-report+xml":{source:"iana"},"application/vnd.oma.poc.groups+xml":{source:"iana"},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana"},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana"},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana"},"application/vnd.oma.xcap-directory+xml":{source:"iana"},"application/vnd.omads-email+xml":{source:"iana"},"application/vnd.omads-file+xml":{source:"iana"},"application/vnd.omads-folder+xml":{source:"iana"},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana"},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"apache",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"apache",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml-template":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"apache",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana"},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana"},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana"},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana"},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana"},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos+xml":{source:"iana"},"application/vnd.paos.xml":{source:"apache"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana"},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana"},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana"},"application/vnd.radisys.msml+xml":{source:"iana"},"application/vnd.radisys.msml-audit+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana"},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana"},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana"},"application/vnd.radisys.msml-conf+xml":{source:"iana"},"application/vnd.radisys.msml-dialog+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana"},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana"},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.software602.filler.form+xml":{source:"iana"},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana"},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana"},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana"},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.tmd.mediaflex.api+xml":{source:"iana"},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana"},"application/vnd.wv.ssp+xml":{source:"iana"},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana"},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",extensions:["zaz"]},"application/voicexml+xml":{source:"iana",extensions:["vxml"]},"application/vq-rtcpxr":{source:"iana"},"application/watcherinfo+xml":{source:"iana"},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-otf":{source:"apache",compressible:!0,extensions:["otf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-ttf":{source:"apache",compressible:!0,extensions:["ttf","ttc"]},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"apache",extensions:["der","crt","pem"]},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana"},"application/xaml+xml":{source:"apache",extensions:["xaml"]},"application/xcap-att+xml":{source:"iana"},"application/xcap-caps+xml":{source:"iana"},"application/xcap-diff+xml":{source:"iana",extensions:["xdf"]},"application/xcap-el+xml":{source:"iana"},"application/xcap-error+xml":{source:"iana"},"application/xcap-ns+xml":{source:"iana"},"application/xcon-conference-info+xml":{source:"iana"},"application/xcon-conference-info-diff+xml":{source:"iana"},"application/xenc+xml":{source:"iana",extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache"},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana"},"application/xmpp+xml":{source:"iana"},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",extensions:["xpl"]},"application/xslt+xml":{source:"iana",extensions:["xslt"]},"application/xspf+xml":{source:"apache",extensions:["xspf"]},"application/xv+xml":{source:"iana",extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yin+xml":{source:"iana",extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana"},"audio/3gpp2":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana"},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana"},"audio/mp4":{source:"iana",compressible:!1,extensions:["mp4a","m4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tone":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/opentype":{compressible:!0,extensions:["otf"]},"image/bmp":{source:"apache",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/fits":{source:"iana"},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jp2":{source:"iana"},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jpm":{source:"iana"},"image/jpx":{source:"iana"},"image/ktx":{source:"iana",extensions:["ktx"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana"},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana"},"image/tiff":{source:"iana",compressible:!1,extensions:["tiff","tif"]},"image/tiff-fx":{source:"iana"},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana"},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana"},"image/vnd.valve.source.texture":{source:"iana"},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana"},"image/webp":{source:"apache",extensions:["webp"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana"},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana"},"message/global-delivery-status":{source:"iana"},"message/global-disposition-notification":{source:"iana"},"message/global-headers":{source:"iana"},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana"},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/vnd.collada+xml":{source:"iana",extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana"},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana"},"model/vnd.parasolid.transmit.binary":{source:"iana"},"model/vnd.parasolid.transmit.text":{source:"iana"},"model/vnd.valve.source.compiled-map":{source:"iana"},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana"},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana"},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana",compressible:!1},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/css":{source:"iana",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fwdred":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hjson":{extensions:["hjson"]},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{extensions:["less"]},"text/markdown":{source:"iana"},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["markdown","md","mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"apache"},"video/3gpp":{source:"apache",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"apache"},"video/3gpp2":{source:"apache",extensions:["3g2"]},"video/bmpeg":{source:"apache"},"video/bt656":{source:"apache"},"video/celb":{source:"apache"},"video/dv":{source:"apache"},"video/h261":{source:"apache",extensions:["h261"]},"video/h263":{source:"apache",extensions:["h263"]},"video/h263-1998":{source:"apache"},"video/h263-2000":{source:"apache"},"video/h264":{source:"apache",extensions:["h264"]},"video/h264-rcdo":{source:"apache"},"video/h264-svc":{source:"apache"},"video/jpeg":{source:"apache",extensions:["jpgv"]},"video/jpeg2000":{source:"apache"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/mj2":{source:"apache",extensions:["mj2","mjp2"]},"video/mp1s":{source:"apache"},"video/mp2p":{source:"apache"},"video/mp2t":{source:"apache",extensions:["ts"]},"video/mp4":{source:"apache",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"apache"},"video/mpeg":{source:"apache",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"apache"},"video/mpv":{source:"apache"},"video/nv":{source:"apache"},"video/ogg":{source:"apache",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"apache"},"video/pointer":{source:"apache"},"video/quicktime":{source:"apache",compressible:!1,extensions:["qt","mov"]},"video/raw":{source:"apache"},"video/rtp-enc-aescm128":{source:"apache"},"video/rtx":{source:"apache"},"video/smpte292m":{source:"apache"},"video/ulpfec":{source:"apache"},"video/vc1":{source:"apache"},"video/vnd.cctv":{source:"apache"},"video/vnd.dece.hd":{source:"apache",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"apache",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"apache"},"video/vnd.dece.pd":{source:"apache",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"apache",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"apache",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"apache"},"video/vnd.directv.mpeg-tts":{source:"apache"},"video/vnd.dlna.mpeg-tts":{source:"apache"},"video/vnd.dvb.file":{source:"apache",extensions:["dvb"]},"video/vnd.fvt":{source:"apache",extensions:["fvt"]},"video/vnd.hns.video":{source:"apache"},"video/vnd.iptvforum.1dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.1dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.2dparityfec-1010":{source:"apache"},"video/vnd.iptvforum.2dparityfec-2005":{source:"apache"},"video/vnd.iptvforum.ttsavc":{source:"apache"},"video/vnd.iptvforum.ttsmpeg2":{source:"apache"},"video/vnd.motorola.video":{source:"apache"},"video/vnd.motorola.videop":{source:"apache"},"video/vnd.mpegurl":{source:"apache",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"apache",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"apache"},"video/vnd.nokia.videovoip":{source:"apache"},"video/vnd.objectvideo":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"apache"},"video/vnd.sealed.mpeg4":{source:"apache"},"video/vnd.sealed.swf":{source:"apache"},"video/vnd.sealedmedia.softseal.mov":{source:"apache"},"video/vnd.uvvu.mp4":{source:"apache",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"apache",extensions:["viv"]},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}},{}],143:[function(e,t,n){"use strict";t.exports=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"]},{}],144:[function(e,t,n){"use strict";var a={};(t.exports=a).creature=e("./creature"),a.name=e("./name")},{"./creature":143,"./name":145}],145:[function(e,t,n){"use strict";t.exports=["#{Address.state} #{creature}"]},{}],146:[function(e,t,n){"use strict";t.exports=["United States","United States of America","USA"]},{}],147:[function(e,t,n){"use strict";var a={};(t.exports=a).default_country=e("./default_country"),a.postcode_by_state=e("./postcode_by_state")},{"./default_country":146,"./postcode_by_state":148}],148:[function(e,t,n){"use strict";t.exports={AL:"350##",AK:"995##",AS:"967##",AZ:"850##",AR:"717##",CA:"900##",CO:"800##",CT:"061##",DC:"204##",DE:"198##",FL:"322##",GA:"301##",HI:"967##",ID:"832##",IL:"600##",IN:"463##",IA:"510##",KS:"666##",KY:"404##",LA:"701##",ME:"042##",MD:"210##",MA:"026##",MI:"480##",MN:"555##",MS:"387##",MO:"650##",MT:"590##",NE:"688##",NV:"898##",NH:"036##",NJ:"076##",NM:"880##",NY:"122##",NC:"288##",ND:"586##",OH:"444##",OK:"730##",OR:"979##",PA:"186##",RI:"029##",SC:"299##",SD:"577##",TN:"383##",TX:"798##",UT:"847##",VT:"050##",VA:"222##",WA:"990##",WV:"247##",WI:"549##",WY:"831##"}},{}],149:[function(e,t,n){"use strict";var a={};(t.exports=a).title="United States (English)",a.internet=e("./internet"),a.address=e("./address"),a.phone_number=e("./phone_number")},{"./address":147,"./internet":151,"./phone_number":154}],150:[function(e,t,n){"use strict";t.exports=["com","us","biz","info","name","net","org"]},{}],151:[function(e,t,n){"use strict";var a={};(t.exports=a).domain_suffix=e("./domain_suffix")},{"./domain_suffix":150}],152:[function(e,t,n){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],153:[function(e,t,n){"use strict";t.exports=["201","202","203","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","227","228","229","231","234","239","240","248","251","252","253","254","256","260","262","267","269","270","276","281","283","301","302","303","304","305","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","330","331","334","336","337","339","347","351","352","360","361","386","401","402","404","405","406","407","408","409","410","412","413","414","415","417","419","423","424","425","434","435","440","443","445","464","469","470","475","478","479","480","484","501","502","503","504","505","507","508","509","510","512","513","515","516","517","518","520","530","540","541","551","557","559","561","562","563","564","567","570","571","573","574","580","585","586","601","602","603","605","606","607","608","609","610","612","614","615","616","617","618","619","620","623","626","630","631","636","641","646","650","651","660","661","662","667","678","682","701","702","703","704","706","707","708","712","713","714","715","716","717","718","719","720","724","727","731","732","734","737","740","754","757","760","763","765","770","772","773","774","775","781","785","786","801","802","803","804","805","806","808","810","812","813","814","815","816","817","818","828","830","831","832","835","843","845","847","848","850","856","857","858","859","860","862","863","864","865","870","872","878","901","903","904","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","940","941","947","949","952","954","956","959","970","971","972","973","975","978","979","980","984","985","989"]},{}],154:[function(e,t,n){"use strict";var a={};(t.exports=a).area_code=e("./area_code"),a.exchange_code=e("./exchange_code")},{"./area_code":152,"./exchange_code":153}],155:[function(e,t,n){"use strict";t.exports=function(a){var e=this,n=a.helpers;return e.word=function(e){return a.random.arrayElement(a.definitions.lorem.words)},e.words=function(e){void 0===e&&(e=3);for(var t=[],n=0;n>>a&1&&(n=l(n,c(t<>>30)),r),u[r]=c(4294967295&u[r])},this.init_by_array=function(e,t){var n,a,r,i,o;for(this.init_genrand(19650218),n=1,a=0,r=t>>30),1664525)),e[a]),a),u[n]=c(4294967295&u[n]),a++,s<=++n&&(u[0]=u[623],n=1),t<=a&&(a=0);for(r=623;r;r--)u[n]=(i=c((dbg=u[n])^p(c(u[n-1]^u[n-1]>>>30),1566083941)))<(o=n)?c(4294967296-(o-i)&4294967295):i-o,u[n]=c(4294967295&u[n]),s<=++n&&(u[0]=u[623],n=1);u[0]=2147483648};var i=[0,2567483615];this.genrand_int32=function(){var e;if(s<=r){var t;for(625==r&&this.init_genrand(5489),t=0;t<227;t++)e=c(u[t]&n|u[t+1]&a),u[t]=c(u[t+397]^e>>>1^i[1&e]);for(;t<623;t++)e=c(u[t]&n|u[t+1]&a),u[t]=c(u[t+-227]^e>>>1^i[1&e]);e=c(u[623]&n|u[0]&a),u[623]=c(u[396]^e>>>1^i[1&e]),r=0}return e=c((e=c((e=c((e=c((e=u[r++])^e>>>11))^e<<7&2636928640))^e<<15&4022730752))^e>>>18)},this.genrand_int31=function(){return this.genrand_int32()>>>1},this.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},this.genrand_real2=function(){return this.genrand_int32()*(1/4294967296)},this.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},this.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)}}var i=new(n.MersenneTwister19937=r);i.init_genrand((new Date).getTime()%1e9),n.rand=function(e,t){return void 0===e&&(t=0,e=32768),Math.floor(i.genrand_real2()*(e-t)+t)},n.seed=function(e){if("number"!=typeof e)throw new Error("seed(S) must take numeric argument; is "+(void 0===e?"undefined":a(e)));i.init_genrand(e)},n.seed_array=function(e){if("object"!=(void 0===e?"undefined":a(e)))throw new Error("seed_array(A) must take array of numbers; is "+(void 0===e?"undefined":a(e)));i.init_by_array(e)}},{}],162:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(e=e||0,"number"==typeof(t=t||100)&&"number"==typeof e)return function(e,t){if(tthis._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[n].priority+" New: "+t);this._arr[n].priority=t,this._decrease(n)},a.prototype._heapify=function(e){var t=this._arr,n=2*e,a=n+1,r=e;n>1].priority>1,l=-7,p=n?r-1:0,f=n?-1:1,d=e[t+p];for(p+=f,i=d&(1<<-l)-1,d>>=-l,l+=s;0>=-l,l+=a;0>1,f=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?0:i-1,m=a?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),2<=(t+=1<=o+p?f/u:f*Math.pow(2,1-p))*u&&(o++,u/=2),l<=o+p?(s=0,o=l):1<=o+p?(s=(t*u-1)*Math.pow(2,r),o+=p):(s=t*Math.pow(2,p-1)*Math.pow(2,r),o=0));8<=r;e[n+d]=255&s,d+=m,s/=256,r-=8);for(o=o<>>6)+fromCharCode(128|63&t):fromCharCode(224|t>>>12&15)+fromCharCode(128|t>>>6&63)+fromCharCode(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return fromCharCode(240|t>>>18&7)+fromCharCode(128|t>>>12&63)+fromCharCode(128|t>>>6&63)+fromCharCode(128|63&t)},re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(re_utob,cb_utob)},cb_encode=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(1>>18),b64chars.charAt(n>>>12&63),2<=t?"=":b64chars.charAt(n>>>6&63),1<=t?"=":b64chars.charAt(63&n)].join("")},btoa=global.btoa?function(e){return global.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},_encode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e)).toString("base64")}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e)).toString("base64")}:function(e){return btoa(utob(e))},encode=function(e,t){return t?_encode(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):_encode(String(e))},encodeURI=function(e){return encode(e,!0)},re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),cb_btou=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return fromCharCode(55296+(t>>>10))+fromCharCode(56320+(1023&t));case 3:return fromCharCode((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return fromCharCode((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(re_btou,cb_btou)},cb_decode=function(e){var t=e.length,n=t%4,a=(0>>16),fromCharCode(a>>>8&255),fromCharCode(255&a)];return r.length-=[0,0,2,1][n],r.join("")},atob=global.atob?function(e){return global.atob(e)}:function(e){return e.replace(/[\s\S]{1,4}/g,cb_decode)},_decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e,"base64")).toString()}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e,"base64")).toString()}:function(e){return btou(atob(e))},decode=function(e){return _decode(String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},noConflict=function(){var e=global.Base64;return global.Base64=_Base64,e};if(global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,__buffer__:buffer},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)})),Object.defineProperty(String.prototype,"toBase64",noEnum(function(e){return encode(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,!0)}))}}return global.Meteor&&(Base64=global.Base64),void 0!==module&&module.exports?module.exports.Base64=global.Base64:"function"==typeof define&&define.amd&&define([],function(){return global.Base64}),{Base64:global.Base64}},"object"===(void 0===exports?"undefined":_typeof(exports))&&void 0!==module?module.exports=J9(I9):"function"==typeof define&&define.amd?define(J9):J9(I9)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],190:[function(e,t,n){"use strict";var a=e("./lib/js-yaml.js");t.exports=a},{"./lib/js-yaml.js":191}],191:[function(e,t,n){"use strict";var a=e("./js-yaml/loader"),r=e("./js-yaml/dumper");function i(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=a.load,t.exports.loadAll=a.loadAll,t.exports.safeLoad=a.safeLoad,t.exports.safeLoadAll=a.safeLoadAll,t.exports.dump=r.dump,t.exports.safeDump=r.safeDump,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=i("scan"),t.exports.parse=i("parse"),t.exports.compose=i("compose"),t.exports.addConstructor=i("addConstructor")},{"./js-yaml/dumper":193,"./js-yaml/exception":194,"./js-yaml/loader":195,"./js-yaml/schema":197,"./js-yaml/schema/core":198,"./js-yaml/schema/default_full":199,"./js-yaml/schema/default_safe":200,"./js-yaml/schema/failsafe":201,"./js-yaml/schema/json":202,"./js-yaml/type":203}],192:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function r(e){return null==e}t.exports.isNothing=r,t.exports.isObject=function(e){return"object"===(void 0===e?"undefined":a(e))&&null!==e},t.exports.toArray=function(e){return Array.isArray(e)?e:r(e)?[]:[e]},t.exports.repeat=function(e,t){var n,a="";for(n=0;n=a.flowLevel;switch(W(r,n,a.indent,t,function(e){return function(e,t){var n,a;for(n=0,a=e.implicitTypes.length;n"+V(r,a.indent)+Y(I(function(e,t){var n,a,r=/(\n+)([^\n]*)/g,i=(s=e.indexOf("\n"),s=-1!==s?s:e.length,r.lastIndex=s,Z(e.slice(0,s),t)),o="\n"===e[0]||" "===e[0];var s;for(;a=r.exec(e);){var u=a[1],c=a[2];n=" "===c[0],i+=u+(o||n||""===c?"":"\n")+Z(c,t),o=n}return i}(r,t),e));case H:return'"'+function(e){for(var t,n,a,r="",i=0;it&&i tag resolver accepts not "'+u+'" style');a=s.represent[u](t,u)}e.dump=a}return!0}return!1}function Q(e,t,n,a,r,i){e.tag=null,e.dump=n,X(e,n,!1)||X(e,n,!0);var o=l.call(e.dump);a&&(a=e.flowLevel<0||e.flowLevel>t);var s,u,c="[object Object]"===o||"[object Array]"===o;if(c&&(u=-1!==(s=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||u||2!==e.indent&&0 "+e.dump)}return!0}function ee(e,t){var n,a,r=[],i=[];for(function e(t,n,a){var r,i,o;if(null!==t&&"object"===(void 0===t?"undefined":c(t)))if(-1!==(i=n.indexOf(t)))-1===a.indexOf(i)&&a.push(i);else if(n.push(t),Array.isArray(t))for(i=0,o=t.length;it)&&0!==a)z(e,"bad indentation of a sequence entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt)&&(G(e,t,x,!0,r)&&(h?d=e.result:m=e.result),h||(I(e,l,p,f,d,m,i,o),f=d=m=null),P(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)z(e,"bad indentation of a mapping entry");else if(e.lineIndentl&&(l=e.lineIndent),S(i))p++;else{if(e.lineIndent>10),56320+(u-65536&1023)),e.position++}else z(e,"unknown escape sequence");n=a=e.position}else S(s)?(B(e,n,a,!0),N(e,P(e,!1,t)),n=a=e.position):e.position===e.lineStart&&L(e)?z(e,"unexpected end of the document within a double quoted scalar"):(e.position++,a=e.position)}z(e,"unexpected end of the stream within a double quoted scalar")}(e,p)?h=!0:!function(e){var t,n,a;if(42!==(a=e.input.charCodeAt(e.position)))return!1;for(a=e.input.charCodeAt(++e.position),t=e.position;0!==a&&!j(a)&&!D(a);)a=e.input.charCodeAt(++e.position);return e.position===t&&z(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||z(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],P(e,!0,-1),!0}(e)?function(e,t,n){var a,r,i,o,s,u,c,l,p=e.kind,f=e.result;if(j(l=e.input.charCodeAt(e.position))||D(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(j(a=e.input.charCodeAt(e.position+1))||n&&D(a)))return!1;for(e.kind="scalar",e.result="",r=i=e.position,o=!1;0!==l;){if(58===l){if(j(a=e.input.charCodeAt(e.position+1))||n&&D(a))break}else if(35===l){if(j(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&L(e)||n&&D(l))break;if(S(l)){if(s=e.line,u=e.lineStart,c=e.lineIndent,P(e,!1,-1),e.lineIndent>=t){o=!0,l=e.input.charCodeAt(e.position);continue}e.position=i,e.line=s,e.lineStart=u,e.lineIndent=c;break}}o&&(B(e,r,i,!1),N(e,e.line-s),r=i=e.position,o=!1),C(l)||(i=e.position+1),l=e.input.charCodeAt(++e.position)}return B(e,r,i,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,p,v===n)&&(h=!0,null===e.tag&&(e.tag="?")):(h=!0,null===e.tag&&null===e.anchor||z(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(h=s&&U(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(u=0,c=e.implicitTypes.length;u tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):z(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):z(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||h}function K(e){var t,n,a,r,i=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(r=e.input.charCodeAt(e.position))&&(P(e,!0,-1),r=e.input.charCodeAt(e.position),!(0t/2-1){n=" ... ",a+=5;break}for(r="",i=this.position;it/2-1){r=" ... ",i-=5;break}return o=this.buffer.slice(a,i),s.repeat(" ",e)+n+o+r+"\n"+s.repeat(" ",e+this.position-a+n.length)+"^"},a.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},t.exports=a},{"./common":192}],197:[function(e,t,n){"use strict";var a=e("./common"),r=e("./exception"),i=e("./type");function o(e,t,a){var r=[];return e.include.forEach(function(e){a=o(e,t,a)}),e[t].forEach(function(n){a.forEach(function(e,t){e.tag===n.tag&&e.kind===n.kind&&r.push(t)}),a.push(n)}),a.filter(function(e,t){return-1===r.indexOf(t)})}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new r("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=o(this,"implicit",[]),this.compiledExplicit=o(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{}};function a(e){n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|i.indexOf(a.charAt(t));return 0==(n=r%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===n?(s.push(o>>10&255),s.push(o>>2&255)):12===n&&s.push(o>>4&255),u?u.from?u.from(s):new u(s):s},predicate:function(e){return u&&u.isBuffer(e)},represent:function(e){var t,n,a="",r=0,i=e.length,o=c;for(t=0;t>18&63],a+=o[r>>12&63],a+=o[r>>6&63],a+=o[63&r]),r=(r<<8)+e[t];return 0==(n=i%3)?(a+=o[r>>18&63],a+=o[r>>12&63],a+=o[r>>6&63],a+=o[63&r]):2===n?(a+=o[r>>10&63],a+=o[r>>4&63],a+=o[r<<2&63],a+=o[64]):1===n&&(a+=o[r>>2&63],a+=o[r<<4&63],a+=o[64],a+=o[64]),a}})},{"../type":203}],205:[function(e,t,n){"use strict";var a=e("../type");t.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":203}],206:[function(e,t,n){"use strict";var a=e("../common"),r=e("../type"),i=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var o=/^[-+]?[0-9]+e/;t.exports=new r("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!i.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,a,r;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,r=[],0<="+-".indexOf(t[0])&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:0<=t.indexOf(":")?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,a=1,r.forEach(function(e){t+=e*a,a*=60}),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||a.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(a.isNegativeZero(e))return"-0.0";return n=e.toString(10),o.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},{"../common":192,"../type":203}],207:[function(e,t,n){"use strict";var a=e("../common"),r=e("../type");t.exports=new r("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,a,r,i=e.length,o=0,s=!1;if(!i)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===i)return!0;if("b"===(t=e[++o])){for(o++;oi&&(n.maxLength=i),o&&n.minLengthr&&(s=s.substr(0,r))}return s},merge:g,clean:function t(n,e,a){return n&&"object"===(void 0===n?"undefined":m(n))?Array.isArray(n)?n=n.map(function(e){return t(e,!0,a)}).filter(function(e){return void 0!==e}):(Object.keys(n).forEach(function(e){a&&-1!==a.indexOf(e)?n[e]=t(n[e]):Array.isArray(n[e])&&!n[e].length&&delete n[e]}),Object.keys(n).length||!e?n:void 0):n},short:function(e){var t=JSON.stringify(e),n=JSON.stringify(e,null,2);return 400n.maximum?0:t.maximum,n.exclusiveMinimum=!0),void 0!==t.minLength&&(n.maxLength=t.minLength),void 0!==t.maxLength&&(n.minLength=t.maxLength>n.maxLength?0:t.maxLength),t.type)n.type=z.pick(d.ALL_TYPES.filter(function(e){return"number"===e||"integer"===e?"number"!==t.type&&"integer"!==t.type:e!==t.type}));else if(t.enum){do{var a=y()}while(-1!==t.enum.indexOf(a));n.enum=[a]}return t.required&&n.properties&&t.required.forEach(function(e){delete n.properties[e]}),n},anyValue:y,validate:function(t,e){return!e.every(function(e){return void 0!==e.minimum&&t>=e.minimum||void 0!==e.maximum&&t<=e.maximum||void 0})},isKey:function(e){return"enum"===e||"default"===e||"required"===e||"definitions"===e}},R=function(a){function e(e,t){var n=a.call(this)||this;return n.path=t,Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n.name="ParseError",n.message=e,n.path=t,n}return r.__extends(e,a),e}(Error),v={array:["additionalItems","items","maxItems","minItems","uniqueItems"],integer:["exclusiveMaximum","exclusiveMinimum","maximum","minimum","multipleOf"],object:["additionalProperties","dependencies","maxProperties","minProperties","patternProperties","properties","required"],string:["maxLength","minLength","pattern"]};v.number=v.integer;var b=["additionalItems","items","additionalProperties","dependencies","patternProperties","properties"];function w(e,n,a){return 0t&&(n=n.substr(0,t)),n}function j(){return z.date().toISOString()}var D={email:"[a-zA-Z\\d][a-zA-Z\\d-]{1,13}[a-zA-Z\\d]@{hostname}",hostname:"[a-zA-Z]{1,33}\\.[a-z]{2,4}",ipv6:"[a-f\\d]{4}(:[a-f\\d]{4}){7}",uri:"https?://[a-zA-Z][a-zA-Z0-9+-.]*","uri-reference":"(https?://|#|/|)[a-zA-Z][a-zA-Z0-9+-.]*"};function k(e,t){var n,a=p(e.format);if("function"==typeof a)return a(e);switch(e.format){case"date-time":case"datetime":return j();case"date":return j().slice(0,10);case"time":return j().slice(11);case"ipv4":return[0,0,0,0].map(function(){return z.number(0,255)}).join(".");case"regex":return".+?";case"email":case"hostname":case"ipv6":case"uri":case"uri-reference":return n=e.format,z.randexp(D[n]).replace(/\{(\w+)\}/,function(e,t){return z.randexp(D[t])});default:if(void 0!==a)throw new Error('unsupported format "'+e.format+'"');if(F("failOnInvalidFormat"))throw new Error("unknown registry key "+O.short(e.format));return t()}}var I={boolean:x,null:E,array:function(e,a,r,i){var t=[];if(!e.items&&!e.additionalItems){if(O.hasProperties(e,"minItems","maxItems","uniqueItems"))throw new R("missing items for "+O.short(e),a);return t}var n=e.items;if(n instanceof Array)return Array.prototype.concat.call(t,n.map(function(e,t){var n=a.concat(["items",t+""]);return i(e,n,r)}));var o=e.minItems,s=e.maxItems;F("minItems")&&void 0===o&&(o=s?Math.min(F("minItems"),s):F("minItems")),F("maxItems")&&(s&&s>F("maxItems")&&(s=F("maxItems")),o&&o>F("maxItems")&&(o=s));for(var u=!0===F("alwaysFakeOptionals")?1:F("optionalsProbability"),c=null!=s&&u?Math.round(s*u):z.number(o,s,1,5),l="object"===m(e.additionalItems)?e.additionalItems:{},p=t.length;pg){var j=0;do{if(1e3<(j+=1))break;var D=z.pick(c)}while(void 0!==r[D]);void 0===r[D]&&(r[D]=i[D],C+=1)}else{var k=B(1)+z.randexp("[a-f\\d]{1,3}");r[k]||(r[k]=d||T,C+=1)}l.forEach(function(e){var t=z.randexp(e);r[t]||(r[t]=o[e],C+=1)})}if(!u&&Cu.redirects)a(d({status:e.statusCode},"Error downloading %s. \nToo many redirects: \n %s",c[0],c.join(" \n ")));else{if(!e.headers.location)throw d({status:e.statusCode},"HTTP %d redirect with no location header",e.statusCode);h("HTTP %d redirect %s -> %s",e.statusCode,s.href,e.headers.location);var t=m.resolve(s,e.headers.location);o(t,u,c).then(n,a)}else n(e.body||new l(0))}).catch(function(e){a(d(e,"Error downloading",s.href))})})}(t,this)}}}).call(this,e("_process"),e("buffer").Buffer)},{"../util/debug":238,"../util/url":240,_process:264,buffer:20,http:301,https:184,ono:256}],238:[function(e,t,n){"use strict";var a=e("debug");t.exports=a("json-schema-ref-parser")},{debug:25}],239:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d=e("./debug");function m(e,t,n,a){var r=e[t];if("function"==typeof r)return r.apply(e,[n,a]);if(!a){if(r instanceof RegExp)return r.test(n.url);if("string"==typeof r)return r===n.extension;if(Array.isArray(r))return-1!==r.indexOf(n.extension)}return r}n.all=function(t){return Object.keys(t).filter(function(e){return"object"===a(t[e])}).map(function(e){return t[e].name=e,t[e]})},n.filter=function(e,t,n){return e.filter(function(e){return!!m(e,t,n)})},n.sort=function(e){return e.forEach(function(e){e.order=e.order||Number.MAX_SAFE_INTEGER}),e.sort(function(e,t){return e.order-t.order})},n.run=function(s,u,c){var l,p,f=0;return new Promise(function(t,n){function a(){if(!(l=s[f++]))return n(p);try{d(" %s",l.name);var e=m(l,u,c,r);e&&"function"==typeof e.then?e.then(i,o):void 0!==e&&i(e)}catch(e){o(e)}}function r(e,t){e?o(e):i(t)}function i(e){d(" success"),t({plugin:l,result:e})}function o(e){d(" %s",e.message||e),p=e,a()}a()})}},{"./debug":238}],240:[function(e,t,c){(function(n){"use strict";var r=/^win/.test(n.platform),i=/\//g,a=/^(\w{2,}):\/\//i,o=t.exports,s=[/\?/g,"%3F",/\#/g,"%23"],u=[/\%23/g,"#",/\%24/g,"$",/\%26/g,"&",/\%2C/g,",",/\%40/g,"@"];c.parse=e("url").parse,c.resolve=e("url").resolve,c.cwd=function(){return n.browser?location.href:n.cwd()+"/"},c.getProtocol=function(e){var t=a.exec(e);if(t)return t[1].toLowerCase()},c.getExtension=function(e){var t=e.lastIndexOf(".");return 0<=t?e.substr(t).toLowerCase():""},c.getHash=function(e){var t=e.indexOf("#");return 0<=t?e.substr(t):"#"},c.stripHash=function(e){var t=e.indexOf("#");return 0<=t&&(e=e.substr(0,t)),e},c.isHttp=function(e){var t=o.getProtocol(e);return"http"===t||"https"===t||void 0===t&&n.browser},c.isFileSystemPath=function(e){if(n.browser)return!1;var t=o.getProtocol(e);return void 0===t||"file"===t},c.fromFileSystemPath=function(e){r&&(e=e.replace(/\\/g,"/")),e=encodeURI(e);for(var t=0;t=n||(R.lastCommentStart=n,i={type:e,value:t},s.range&&(i.range=[n,a]),s.loc&&(i.loc=r),s.comments.push(i),s.attachComment&&(s.leadingComments.push(i),s.trailingComments.push(i)))}function v(e){var t,n,a,r;for(t=k-e,n={start:{line:l,column:k-p-e}};k>>="===(a=j.substr(k,4))?(k+=4,{type:A.Punctuator,value:a,lineNumber:l,lineStart:p,start:r,end:k}):">>>"===(n=a.substr(0,3))||"<<="===n||">>="===n?(k+=3,{type:A.Punctuator,value:n,lineNumber:l,lineStart:p,start:r,end:k}):o===(t=n.substr(0,2))[1]&&0<="+-<>&|".indexOf(o)||"=>"===t?(k+=2,{type:A.Punctuator,value:t,lineNumber:l,lineStart:p,start:r,end:k}):0<="<>=!+-*%&|^/".indexOf(o)?(++k,{type:A.Punctuator,value:o,lineNumber:l,lineStart:p,start:r,end:k}):void H({},C.UnexpectedToken,"ILLEGAL")}function I(){var e,t,n;if(f(i((n=j[k]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),t=k,e="","."!==n){if(e=j[k++],n=j[k],"0"===e){if("x"===n||"X"===n)return++k,function(e){for(var t="";k":case"<=":case">=":case"instanceof":n=7;break;case"in":n=t?7:0;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function fe(){var e,t,n,a,r;return r=O,e=function(){var e,t,n,a,r,i,o,s,u,c;if(e=O,u=le(),0===(r=pe(a=O,R.allowIn)))return u;for(a.prec=r,U(),t=[e,O],i=[u,a,o=le()];0<(r=pe(O,R.allowIn));){for(;2>="!==i&&">>>="!==i&&"&="!==i&&"^="!==i&&"|="!==i||(ee(t)||W({},C.InvalidLHSInAssignment),D&&t.type===S.Identifier&&y(t.name)&&W(e,C.StrictLHSAssignment),e=U(),n=de(),a=z.markEnd(z.createAssignmentExpression(e.value,t,n),r)),a}function me(){var e,t=O;if(e=de(),Z(",")){for(e=z.createSequenceExpression([e]);k",a[A.Identifier]="Identifier",a[A.Keyword]="Keyword",a[A.NullLiteral]="Null",a[A.NumericLiteral]="Numeric",a[A.Punctuator]="Punctuator",a[A.StringLiteral]="String",a[A.RegularExpression]="RegularExpression",n=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],S={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},m={Data:1,Get:2,Set:4},C={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},t={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},r={name:"SyntaxTree",processComment:function(e){var t,n;if(!(e.type===S.Program&&0=e.range[1]?(n=s.trailingComments,s.trailingComments=[]):s.trailingComments.length=0:0=e.range[1]&&(n=s.bottomRightStack[s.bottomRightStack.length-1].trailingComments,delete s.bottomRightStack[s.bottomRightStack.length-1].trailingComments);0=e.range[0];)t=s.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):0t[0].length)){if(t=n,a=i,this.options.backtrack_lexer){if(!1!==(e=this.test_match(n,r[i])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[a]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return 0 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};r.readFileSync&&(i.moduleInclude=r.readFileSync(e.resolve("../include/module.js")),i.actionInclude=r.readFileSync(e.resolve("../include/action.js"))),t.exports=i},{"./dict":245,fs:18}],247:[function(s,e,t){"use strict";var u=s("./aesprim"),r=s("./slice"),n=s("static-eval"),a=s("underscore").uniq,i=function(){return this.initialize.apply(this,arguments)};function o(t,e,n){var a=s("./index"),r=d(u.parse(e).body[0].expression,{"@":t.value}),i=n.replace(/\{\{\s*value\s*\}\}/g,r),o=a.nodes(t.value,i);return o.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),o}function c(e){return Array.isArray(e)}function l(u){return function(e,a,r,i){var t=e.value,n=e.path,o=[],s=function(t,n){var e;c(t)?(t.forEach(function(e,t){o.length>=i||r(t,e,a)&&o.push({path:n.concat(t),value:e})}),t.forEach(function(e,t){o.length>=i||u&&s(e,n.concat(t))})):(e=t)&&!(e instanceof Array)&&e instanceof Object&&(this.keys(t).forEach(function(e){o.length>=i||r(e,t[e],a)&&o.push({path:n.concat(e),value:t[e]})}),this.keys(t).forEach(function(e){o.length>=i||u&&s(t[e],n.concat(e))}))}.bind(this);return s(t,n),o}}function p(a){return function(e,t,n){return this.descend(t,e.expression.value,a,n)}}function f(a){return function(e,t,n){return this.traverse(t,e.expression.value,a,n)}}function d(){try{return n.apply(this,arguments)}catch(e){}}function m(e){return e=e.filter(function(e){return e}),a(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function h(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}i.prototype.initialize=function(){this.traverse=l(!0),this.descend=l()},i.prototype.keys=Object.keys,i.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),n=this._fns[t];if(!n)throw new Error("couldn't resolve key: "+t);return n.bind(this)},i.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},(i.prototype._fns={"member-child-identifier":function(e,t){var n=e.expression.value,a=t.value;if(a instanceof Object&&n in a)return[{value:a[n],path:t.path.concat(n)}]},"member-descendant-identifier":f(function(e,t,n){return e==n}),"subscript-child-numeric_literal":p(function(e,t,n){return e===n}),"member-child-numeric_literal":p(function(e,t,n){return String(e)===String(n)}),"subscript-descendant-numeric_literal":f(function(e,t,n){return e===n}),"member-child-wildcard":p(function(){return!0}),"member-descendant-wildcard":f(function(){return!0}),"subscript-descendant-wildcard":f(function(){return!0}),"subscript-child-wildcard":p(function(){return!0}),"subscript-child-slice":function(e,n){if(c(n.value)){var t=e.expression.value.split(":").map(h),a=n.value.map(function(e,t){return{value:e,path:n.path.concat(t)}});return r.apply(null,[a].concat(t))}},"subscript-child-union":function(e,a){var r=[];return e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},n=this.resolve(t)(t,a);n&&(r=r.concat(n))},this),m(r)},"subscript-descendant-union":function(e,t,n){var a=s(".."),r=this,i=[];return a.nodes(t,"$..*").slice(1).forEach(function(a){i.length>=n||e.expression.value.forEach(function(e){var t={operation:"subscript",scope:"child",expression:e.expression},n=r.resolve(t)(t,a);i=i.concat(n)})}),m(i)},"subscript-child-filter_expression":function(e,t,n){var a=e.expression.value.slice(2,-1),r=u.parse(a).body[0].expression;return this.descend(t,null,function(e,t){return d(r,{"@":t})},n)},"subscript-descendant-filter_expression":function(e,t,n){var a=e.expression.value.slice(2,-1),r=u.parse(a).body[0].expression;return this.traverse(t,null,function(e,t){return d(r,{"@":t})},n)},"subscript-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return o(t,e.expression.value.slice(1,-1),"$..value")}})["subscript-child-string_literal"]=i.prototype._fns["member-child-identifier"],i.prototype._fns["member-descendant-numeric_literal"]=i.prototype._fns["subscript-descendant-string_literal"]=i.prototype._fns["member-descendant-identifier"],e.exports=i},{"..":244,"./aesprim":242,"./index":248,"./slice":250,"static-eval":285,underscore:317}],248:[function(e,t,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p=e("assert"),r=e("./dict"),a=e("./parser"),i=e("./handlers"),s=function(){this.initialize.apply(this,arguments)};function u(e){return"[object String]"==Object.prototype.toString.call(e)}s.prototype.initialize=function(){this.parser=new a,this.handlers=new i},s.prototype.parse=function(e){return p.ok(u(e),"we need a path"),this.parser.parse(e)},s.prototype.parent=function(e,t){p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path");var n=this.nodes(e,t)[0];n.path.pop();return this.value(e,n.path)},s.prototype.apply=function(r,e,i){p.ok(r instanceof Object,"obj needs to be an object"),p.ok(e,"we need a path"),p.equal(void 0===i?"undefined":o(i),"function","fn needs to be function");var t=this.nodes(r,e).sort(function(e,t){return t.path.length-e.path.length});return t.forEach(function(e){var t=e.path.pop(),n=this.value(r,this.stringify(e.path)),a=e.value=i.call(r,n[t]);n[t]=a},this),t},s.prototype.value=function(e,t,n){if(p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),3<=arguments.length){var a=this.nodes(e,t).shift();if(!a)return this._vivify(e,t,n);var r=a.path.slice(-1).shift();this.parent(e,this.stringify(a.path))[r]=n}return this.query(e,this.stringify(t),1).shift()},s.prototype._vivify=function(i,e,t){var o=this;p.ok(i instanceof Object,"obj needs to be an object"),p.ok(e,"we need a path");return function e(t,n){var a=t.pop(),r=o.value(i,t);r||(e(t.concat(),"string"==typeof a?{}:[]),r=o.value(i,t)),r[a]=n}(this.parser.parse(e).map(function(e){return e.expression.value}),t),this.query(i,e)[0]},s.prototype.query=function(e,t,n){return p.ok(e instanceof Object,"obj needs to be an object"),p.ok(u(t),"we need a path"),this.nodes(e,t,n).map(function(e){return e.value})},s.prototype.paths=function(e,t,n){return p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),this.nodes(e,t,n).map(function(e){return e.path})},s.prototype.nodes=function(e,t,o){if(p.ok(e instanceof Object,"obj needs to be an object"),p.ok(t,"we need a path"),0===o)return[];var s=this.parser.parse(t),u=this.handlers,c=[{path:["$"],value:e}],l=[];return s.length&&"root"==s[0].expression.type&&s.shift(),s.length?(s.forEach(function(n,a){if(!(l.length>=o)){var r=u.resolve(n),i=[];c.forEach(function(e){if(!(l.length>=o)){var t=r(n,e,o);a==s.length-1?l=l.concat(t||[]):i=i.concat(t||[])}}),c=i}}),o?l.slice(0,o):l):c},s.prototype.stringify=function(e){p.ok(e,"we need a path");var r="$",i={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return(e=this._normalize(e)).forEach(function(e){if("root"!=e.expression.type){var t,n=[e.scope,e.operation].join("-"),a=i[n];if(t="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!a)throw new Error("couldn't find template "+n);r+=a.replace(/{{value}}/,t)}}),r},s.prototype._normalize=function(e){if(p.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var a=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,t){if("$"!=e||0!==t)if("string"==typeof e&&e.match("^"+r.identifier+"$"))a.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var n="number"==typeof e?"numeric_literal":"string_literal";a.push({operation:"subscript",scope:"child",expression:{value:e,type:n}})}}),a}if(Array.isArray(e)&&"object"==o(e[0]))return e;throw new Error("couldn't understand path "+e)},s.Handlers=i,s.Parser=a;var c=new s;c.JSONPath=s,t.exports=c},{"./dict":245,"./handlers":247,"./parser":249,assert:12}],249:[function(e,t,n){"use strict";var a=e("./grammar"),r=e("../generated/parser"),i=function(){var e=new r.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};i.grammar=a,t.exports=i},{"../generated/parser":243,"./grammar":246}],250:[function(e,t,n){"use strict";function s(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,n,a){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof n)throw new Error("end cannot be a string");if("string"==typeof a)throw new Error("step cannot be a string");var r=e.length;if(0===a)throw new Error("step cannot be zero");if(a=a?s(a):1,n=n<0?r+n:n,t=s(0===(t=t<0?r+t:t)?0:t||(0"']/g,Uo=RegExp(Lo.source),$o=RegExp(No.source),qo=/<%-([\s\S]+?)%>/g,Go=/<%([\s\S]+?)%>/g,Ko=/<%=([\s\S]+?)%>/g,Ho=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wo=/^\w*$/,Jo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vo=/[\\^$.*+?()[\]{}|]/g,Yo=RegExp(Vo.source),Zo=/^\s+|\s+$/g,Xo=/^\s+/,Qo=/\s+$/,es=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ts=/\{\n\/\* \[wrapped with (.+)\] \*/,ns=/,? & /,as=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,rs=/\\(\\)?/g,is=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,os=/\w*$/,ss=/^[-+]0x[0-9a-f]+$/i,us=/^0b[01]+$/i,cs=/^\[object .+?Constructor\]$/,ls=/^0o[0-7]+$/i,ps=/^(?:0|[1-9]\d*)$/,fs=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ds=/($^)/,ms=/['\n\r\u2028\u2029\\]/g,e="\\ud800-\\udfff",t="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",n="\\u2700-\\u27bf",a="a-z\\xdf-\\xf6\\xf8-\\xff",r="A-Z\\xc0-\\xd6\\xd8-\\xde",i="\\ufe0e\\ufe0f",o="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",s="["+e+"]",u="["+o+"]",c="["+t+"]",l="\\d+",p="["+n+"]",f="["+a+"]",d="[^"+e+o+l+n+a+r+"]",m="\\ud83c[\\udffb-\\udfff]",h="[^"+e+"]",g="(?:\\ud83c[\\udde6-\\uddff]){2}",y="[\\ud800-\\udbff][\\udc00-\\udfff]",v="["+r+"]",b="(?:"+f+"|"+d+")",w="(?:"+v+"|"+d+")",x="(?:['’](?:d|ll|m|re|s|t|ve))?",E="(?:['’](?:D|LL|M|RE|S|T|VE))?",_="(?:"+c+"|"+m+")"+"?",A="["+i+"]?",S=A+_+("(?:\\u200d(?:"+[h,g,y].join("|")+")"+A+_+")*"),C="(?:"+[p,g,y].join("|")+")"+S,j="(?:"+[h+c+"?",c,g,y,s].join("|")+")",hs=RegExp("['’]","g"),gs=RegExp(c,"g"),D=RegExp(m+"(?="+m+")|"+j+S,"g"),ys=RegExp([v+"?"+f+"+"+x+"(?="+[u,v,"$"].join("|")+")",w+"+"+E+"(?="+[u,v+b,"$"].join("|")+")",v+"?"+b+"+"+x,v+"+"+E,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",l,C].join("|"),"g"),k=RegExp("[\\u200d"+e+t+i+"]"),vs=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,bs=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ws=-1,xs={};xs[jo]=xs[Do]=xs[ko]=xs[Fo]=xs[zo]=xs[Oo]=xs[Ro]=xs[Bo]=xs[To]=!0,xs[uo]=xs[co]=xs[So]=xs[lo]=xs[Co]=xs[po]=xs[fo]=xs[mo]=xs[go]=xs[yo]=xs[vo]=xs[wo]=xs[xo]=xs[Eo]=xs[Ao]=!1;var Es={};Es[uo]=Es[co]=Es[So]=Es[Co]=Es[lo]=Es[po]=Es[jo]=Es[Do]=Es[ko]=Es[Fo]=Es[zo]=Es[go]=Es[yo]=Es[vo]=Es[wo]=Es[xo]=Es[Eo]=Es[_o]=Es[Oo]=Es[Ro]=Es[Bo]=Es[To]=!0,Es[fo]=Es[mo]=Es[Ao]=!1;var F={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},_s=parseFloat,As=parseInt,z="object"==(void 0===L?"undefined":wu(L))&&L&&L.Object===Object&&L,O="object"==("undefined"==typeof self?"undefined":wu(self))&&self&&self.Object===Object&&self,Ss=z||O||Function("return this")(),R="object"==(void 0===U?"undefined":wu(U))&&U&&!U.nodeType&&U,B=R&&"object"==(void 0===N?"undefined":wu(N))&&N&&!N.nodeType&&N,Cs=B&&B.exports===R,T=Cs&&z.process,I=function(){try{var e=B&&B.require&&B.require("util").types;return e||T&&T.binding&&T.binding("util")}catch(e){}}(),js=I&&I.isArrayBuffer,Ds=I&&I.isDate,ks=I&&I.isMap,Fs=I&&I.isRegExp,zs=I&&I.isSet,Os=I&&I.isTypedArray;function Rs(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Bs(e,t,n,a){for(var r=-1,i=null==e?0:e.length;++r":">",'"':""","'":"'"});function cu(e){return"\\"+F[e]}function lu(e){return k.test(e)}function pu(e){var n=-1,a=Array(e.size);return e.forEach(function(e,t){a[++n]=[t,e]}),a}function fu(t,n){return function(e){return t(n(e))}}function du(e,t){for(var n=-1,a=e.length,r=0,i=[];++n",""":'"',"'":"'"});var bu=function e(t){var n,D=(t=null==t?Ss:bu.defaults(Ss.Object(),t,bu.pick(Ss,bs))).Array,a=t.Date,r=t.Error,g=t.Function,i=t.Math,A=t.Object,y=t.RegExp,l=t.String,k=t.TypeError,o=D.prototype,s=g.prototype,p=A.prototype,u=t["__core-js_shared__"],c=s.toString,S=p.hasOwnProperty,f=0,d=(n=/[^.]+$/.exec(u&&u.keys&&u.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",m=p.toString,h=c.call(A),v=Ss._,b=y("^"+c.call(S).replace(Vo,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),w=Cs?t.Buffer:eo,x=t.Symbol,E=t.Uint8Array,_=w?w.allocUnsafe:eo,C=fu(A.getPrototypeOf,A),j=A.create,F=p.propertyIsEnumerable,z=o.splice,O=x?x.isConcatSpreadable:eo,R=x?x.iterator:eo,B=x?x.toStringTag:eo,T=function(){try{var e=Nn(A,"defineProperty");return e({},"",{}),e}catch(e){}}(),I=t.clearTimeout!==Ss.clearTimeout&&t.clearTimeout,M=a&&a.now!==Ss.Date.now&&a.now,P=t.setTimeout!==Ss.setTimeout&&t.setTimeout,L=i.ceil,N=i.floor,U=A.getOwnPropertySymbols,$=w?w.isBuffer:eo,q=t.isFinite,G=o.join,K=fu(A.keys,A),H=i.max,W=i.min,J=a.now,V=t.parseInt,Y=i.random,Z=o.reverse,X=Nn(t,"DataView"),Q=Nn(t,"Map"),ee=Nn(t,"Promise"),te=Nn(t,"Set"),ne=Nn(t,"WeakMap"),ae=Nn(A,"create"),re=ne&&new ne,ie={},oe=da(X),se=da(Q),ue=da(ee),ce=da(te),le=da(ne),pe=x?x.prototype:eo,fe=pe?pe.valueOf:eo,de=pe?pe.toString:eo;function me(e){if(Fr(e)&&!br(e)&&!(e instanceof ve)){if(e instanceof ye)return e;if(S.call(e,"__wrapped__"))return ma(e)}return new ye(e)}var he=function(){function n(){}return function(e){if(!kr(e))return{};if(j)return j(e);n.prototype=e;var t=new n;return n.prototype=eo,t}}();function ge(){}function ye(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=eo}function ve(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=oo,this.__views__=[]}function be(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t>>0,t>>>=0;for(var i=D(r);++a>>1,o=e[i];null!==o&&!Mr(o)&&(n?o<=t:o>>0)?(e=Wr(e))&&("string"==typeof t||null!=t&&!Br(t))&&!(t=Mt(t))&&lu(e)?Vt(yu(e),0,n):e.split(t,n):[]},me.spread=function(a,r){if("function"!=typeof a)throw new k(to);return r=null==r?0:H(qr(r),0),At(function(e){var t=e[r],n=Vt(e,0,r);return t&&$s(n,t),Rs(a,this,n)})},me.tail=function(e){var t=null==e?0:e.length;return t?zt(e,1,t):[]},me.take=function(e,t,n){return e&&e.length?zt(e,0,(t=n||t===eo?1:qr(t))<0?0:t):[]},me.takeRight=function(e,t,n){var a=null==e?0:e.length;return a?zt(e,(t=a-(t=n||t===eo?1:qr(t)))<0?0:t,a):[]},me.takeRightWhile=function(e,t){return e&&e.length?Ut(e,Mn(t,3),!1,!0):[]},me.takeWhile=function(e,t){return e&&e.length?Ut(e,Mn(t,3)):[]},me.tap=function(e,t){return t(e),e},me.throttle=function(e,t,n){var a=!0,r=!0;if("function"!=typeof e)throw new k(to);return kr(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),or(e,t,{leading:a,maxWait:t,trailing:r})},me.thru=$a,me.toArray=Ur,me.toPairs=di,me.toPairsIn=mi,me.toPath=function(e){return br(e)?Us(e,fa):Mr(e)?[e]:an(pa(Wr(e)))},me.toPlainObject=Hr,me.transform=function(e,a,r){var t=br(e),n=t||_r(e)||Pr(e);if(a=Mn(a,4),null==r){var i=e&&e.constructor;r=n?t?new i:[]:kr(e)&&Cr(i)?he(C(e)):{}}return(n?Ts:Je)(e,function(e,t,n){return a(r,e,t,n)}),r},me.unary=function(e){return nr(e,1)},me.union=Fa,me.unionBy=za,me.unionWith=Oa,me.uniq=function(e){return e&&e.length?Pt(e):[]},me.uniqBy=function(e,t){return e&&e.length?Pt(e,Mn(t,2)):[]},me.uniqWith=function(e,t){return t="function"==typeof t?t:eo,e&&e.length?Pt(e,eo,t):[]},me.unset=function(e,t){return null==e||Lt(e,t)},me.unzip=Ra,me.unzipWith=Ba,me.update=function(e,t,n){return null==e?e:Nt(e,t,Ht(n))},me.updateWith=function(e,t,n,a){return a="function"==typeof a?a:eo,null==e?e:Nt(e,t,Ht(n),a)},me.values=hi,me.valuesIn=function(e){return null==e?[]:au(e,si(e))},me.without=Ta,me.words=Ci,me.wrap=function(e,t){return fr(Ht(t),e)},me.xor=Ia,me.xorBy=Ma,me.xorWith=Pa,me.zip=La,me.zipObject=function(e,t){return Gt(e||[],t||[],ke)},me.zipObjectDeep=function(e,t){return Gt(e||[],t||[],jt)},me.zipWith=Na,me.entries=di,me.entriesIn=mi,me.extend=Vr,me.extendWith=Yr,Ii(me,me),me.add=Hi,me.attempt=ji,me.camelCase=gi,me.capitalize=yi,me.ceil=Wi,me.clamp=function(e,t,n){return n===eo&&(n=t,t=eo),n!==eo&&(n=(n=Kr(n))==n?n:0),t!==eo&&(t=(t=Kr(t))==t?t:0),Te(Kr(e),t,n)},me.clone=function(e){return Ie(e,4)},me.cloneDeep=function(e){return Ie(e,5)},me.cloneDeepWith=function(e,t){return Ie(e,5,t="function"==typeof t?t:eo)},me.cloneWith=function(e,t){return Ie(e,4,t="function"==typeof t?t:eo)},me.conformsTo=function(e,t){return null==t||Me(e,t,oi(t))},me.deburr=vi,me.defaultTo=function(e,t){return null==e||e!=e?t:e},me.divide=Ji,me.endsWith=function(e,t,n){e=Wr(e),t=Mt(t);var a=e.length,r=n=n===eo?a:Te(qr(n),0,a);return 0<=(n-=t.length)&&e.slice(n,r)==t},me.eq=hr,me.escape=function(e){return(e=Wr(e))&&$o.test(e)?e.replace(No,uu):e},me.escapeRegExp=function(e){return(e=Wr(e))&&Yo.test(e)?e.replace(Vo,"\\$&"):e},me.every=function(e,t,n){var a=br(e)?Ms:$e;return n&&Jn(e,t,n)&&(t=eo),a(e,Mn(t,3))},me.find=Ka,me.findIndex=va,me.findKey=function(e,t){return Hs(e,Mn(t,3),Je)},me.findLast=Ha,me.findLastIndex=ba,me.findLastKey=function(e,t){return Hs(e,Mn(t,3),Ve)},me.floor=Vi,me.forEach=Wa,me.forEachRight=Ja,me.forIn=function(e,t){return null==e?e:He(e,Mn(t,3),si)},me.forInRight=function(e,t){return null==e?e:We(e,Mn(t,3),si)},me.forOwn=function(e,t){return e&&Je(e,Mn(t,3))},me.forOwnRight=function(e,t){return e&&Ve(e,Mn(t,3))},me.get=ti,me.gt=gr,me.gte=yr,me.has=function(e,t){return null!=e&&Gn(e,t,tt)},me.hasIn=ni,me.head=xa,me.identity=Oi,me.includes=function(e,t,n,a){e=xr(e)?e:hi(e),n=n&&!a?qr(n):0;var r=e.length;return n<0&&(n=H(r+n,0)),Ir(e)?n<=r&&-1=W(r=t,i=n)&&a=this.__values__.length;return{done:e,value:e?eo:this.__values__[this.__index__++]}},me.prototype.plant=function(e){for(var t,n=this;n instanceof ge;){var a=ma(n);a.__index__=0,a.__values__=eo,t?r.__wrapped__=a:t=a;var r=a;n=n.__wrapped__}return r.__wrapped__=e,t},me.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof ve){var t=e;return this.__actions__.length&&(t=new ve(this)),(t=t.reverse()).__actions__.push({func:$a,args:[ka],thisArg:eo}),new ye(t,this.__chain__)}return this.thru(ka)},me.prototype.toJSON=me.prototype.valueOf=me.prototype.value=function(){return $t(this.__wrapped__,this.__actions__)},me.prototype.first=me.prototype.head,R&&(me.prototype[R]=function(){return this}),me}();"function"==typeof define&&"object"==wu(define.amd)&&define.amd?(Ss._=bu,define(function(){return bu})):B?((B.exports=bu)._=bu,R._=bu):Ss._=bu}).call(void 0)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],254:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function i(e,t,n){if(!(et.highWaterMark&&(t.highWaterMark=(h<=(n=e)?n=h:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var n}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(w("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?y.nextTick(_,e):_(e))}function _(e){w("emit readable"),e.emit("readable"),D(e)}function A(e,t){t.readingMore||(t.readingMore=!0,y.nextTick(S,e,t))}function S(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var a;ei.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0===(e-=o)){o===i.length?(++a,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=i.slice(o);break}++a}return t.length-=a,r}(e,t):function(e,t){var n=c.allocUnsafe(e),a=t.head,r=1;a.data.copy(n),e-=a.data.length;for(;a=a.next;){var i=a.data,o=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,o),0===(e-=o)){o===i.length?(++r,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a).data=i.slice(o);break}++r}return t.length-=r,n}(e,t);return a}(e,t.buffer,t.decoder),n);var n}function F(e){var t=e._readableState;if(0=t.highWaterMark||t.ended))return w("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?F(this):E(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&F(this),null;var a,r=t.needReadable;return w("need readable",r),(0===t.length||t.length-e>>0),i=this.head,o=0;i;)t=i.data,n=r,a=o,t.copy(n,a),o+=i.data.length,i=i.next;return r},e}(),a&&a.inspect&&a.inspect.custom&&(t.exports.prototype[a.inspect.custom]=function(){var e=a.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":283,util:17}],275:[function(e,t,n){"use strict";var i=e("process-nextick-args");function o(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var n=this,a=this._readableState&&this._readableState.destroyed,r=this._writableState&&this._writableState.destroyed;return a||r?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||i.nextTick(o,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(i.nextTick(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":263}],276:[function(e,t,n){"use strict";t.exports=e("events").EventEmitter},{events:39}],277:[function(e,t,n){"use strict";(((n=t.exports=e("./lib/_stream_readable.js")).Stream=n).Readable=n).Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":269,"./lib/_stream_passthrough.js":270,"./lib/_stream_readable.js":271,"./lib/_stream_transform.js":272,"./lib/_stream_writable.js":273}],278:[function(e,t,n){"use strict";var y=e("./util"),v=e("./types"),b=e("./sets"),w=e("./positions");t.exports=function(t){var e,n,a=0,r={type:v.ROOT,stack:[]},i=r,o=r.stack,s=[],u=function(e){y.error(t,"Nothing to repeat at column "+(e-1))},c=y.strToChars(t);for(e=c.length;a"===l?c="===l?c<=o:"|"===l?o|c:"&"===l?o&c:"^"===l?o^c:"&&"===l?o&&c:"||"===l?o||c:C}if("Identifier"===t.type)return{}.hasOwnProperty.call(S,t.name)?S[t.name]:C;if("ThisExpression"===t.type)return{}.hasOwnProperty.call(S,"this")?S.this:C;if("CallExpression"===t.type){var p=e(t.callee);if(p===C)return C;if("function"!=typeof p)return C;var f=t.callee.object?e(t.callee.object):C;f===C&&(f=null);var d=[];for(i=0,o=t.arguments.length;i":u.Relational,"<=":u.Relational,">=":u.Relational,in:u.Relational,instanceof:u.Relational,"<<":u.BitwiseSHIFT,">>":u.BitwiseSHIFT,">>>":u.BitwiseSHIFT,"+":u.Additive,"-":u.Additive,"*":u.Multiplicative,"%":u.Multiplicative,"/":u.Multiplicative};var D=7,k=1;function F(e,t){var n="";for(t|=0;0>>=1,e+=e)1&t&&(n+=e);return n}function z(e){var t=e.length;return t&&h.code.isLineTerminator(e.charCodeAt(t-1))}function a(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function O(e,t){var n,a;function r(e){return"object"===(void 0===e?"undefined":X(e))&&e instanceof Object&&!(e instanceof RegExp)}for(n in t)t.hasOwnProperty(n)&&(r(a=t[n])?r(e[n])?O(e[n],a):e[n]=O({},a):e[n]=a);return e}function R(e,t){return 8232==(-2&e)?(t?"u":"\\u")+(8232===e?"2028":"2029"):10===e||13===e?(t?"":"\\")+(10===e?"n":"r"):String.fromCharCode(e)}function B(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function T(e,t){if(!S)return Array.isArray(e)?function e(t){var n,a,r,i="";for(n=0,a=t.length;n")),e.expression?(t.push(p),"{"===(n=this.generateExpression(e.body,u.Assignment,D)).toString().charAt(0)&&(n=["(",n,")"]),t.push(n)):t.push(this.maybeBlock(e.body,9)),t},K.prototype.generateIterationForStatement=function(e,t,n){var a=["for"+p+(t.await?"await"+p:"")+"("],r=this;return L(function(){t.left.type===m.VariableDeclaration?L(function(){a.push(t.left.kind+I()),a.push(r.generateStatement(t.left.declarations[0],0))}):a.push(r.generateExpression(t.left,u.Call,D)),a=[M(a=M(a,e),r.generateExpression(t.right,u.Sequence,D)),")"]}),a.push(this.maybeBlock(t.body,n)),a},K.prototype.generatePropertyKey=function(e,t){var n=[];return t&&n.push("["),n.push(this.generateExpression(e,u.Sequence,D)),t&&n.push("]"),n},K.prototype.generateAssignment=function(e,t,n,a,r){return u.Assignment=4.0"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.6.1"},repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.11.0"}},{}],288:[function(s,e,t){"use strict";var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function e(t){var n,g,u,a,r,o,y,v,b;function c(e){var t,n,a={};for(t in e)e.hasOwnProperty(t)&&("object"===(void 0===(n=e[t])?"undefined":f(n))&&null!==n?a[t]=c(n):a[t]=n);return a}function w(e,t){this.parent=e,this.key=t}function x(e,t,n,a){this.node=e,this.path=t,this.wrap=n,this.ref=a}function i(){}function E(e){return null!=e&&("object"===(void 0===e?"undefined":f(e))&&"string"==typeof e.type)}function _(e,t){return(e===n.ObjectExpression||e===n.ObjectPattern)&&"properties"===t}function l(e,t){return(new i).traverse(e,t)}function p(t,e){var n;return n=function(e,t){var n,a,r,i;for(a=e.length,r=0;a;)t(e[i=r+(n=a>>>1)])?a=n:(r=i+1,a-=n+1);return r}(e,function(e){return e.range[0]>t.range[0]}),t.extendedRange=[t.range[0],t.range[1]],n!==e.length&&(t.extendedRange[1]=e[n].range[0]),0<=(n-=1)&&(t.extendedRange[0]=e[n].range[1]),t}return(g=Array.isArray)||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),r=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}(),o=Object.keys||function(e){var t,n=[];for(t in e)n.push(t);return n},n={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},a={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},u={Break:y={},Skip:v={},Remove:b={}},w.prototype.replace=function(e){this.parent[this.key]=e},w.prototype.remove=function(){return g(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},i.prototype.path=function(){var e,t,n,a,r;function i(e,t){if(g(t))for(n=0,a=t.length;ne.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),s.splice(o,1)):o+=1;return o===s.length?u.Break:s[o].extendedRange[0]>e.range[1]?u.Skip:void 0}}),o=0,l(e,{leave:function(e){for(var t;oe.range[1]?u.Skip:void 0}}),e},t.VisitorKeys=a,t.VisitorOption=u,t.Controller=i,t.cloneEnvironment=function(){return e({})},t}(t)},{"./package.json":289}],289:[function(e,t,n){t.exports={_from:"estraverse@^4.2.0",_id:"estraverse@4.2.0",_inBundle:!1,_integrity:"sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",_location:"/static-eval/estraverse",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"estraverse@^4.2.0",name:"estraverse",escapedName:"estraverse",rawSpec:"^4.2.0",saveSpec:null,fetchSpec:"^4.2.0"},_requiredBy:["/static-eval/escodegen"],_resolved:"https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",_shasum:"0dee3fed31fcd469618ce7342099fc1afa0bdb13",_spec:"estraverse@^4.2.0",_where:"/Users/jcwhitlock/development/sway/node_modules/static-eval/node_modules/escodegen",bugs:{url:"https://github.com/estools/estraverse/issues"},bundleDependencies:!1,deprecated:!1,description:"ECMAScript JS AST traversal functions",devDependencies:{"babel-preset-es2015":"^6.3.13","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.2.1",jshint:"^2.5.6",mocha:"^2.1.0"},engines:{node:">=0.10.0"},homepage:"https://github.com/estools/estraverse",license:"BSD-2-Clause",main:"estraverse.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"estraverse",repository:{type:"git",url:"git+ssh://git@github.com/estools/estraverse.git"},scripts:{lint:"jshint estraverse.js",test:"npm run-script lint && npm run-script unit-test","unit-test":"mocha --compilers js:babel-register"},version:"4.2.0"}},{}],290:[function(e,t,n){"use strict";var i=e("./util"),o=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function u(){this._array=[],this._set=s?new Map:Object.create(null)}u.fromArray=function(e,t){for(var n=new u,a=0,r=e.length;a>>=5)&&(t|=32),a+=l.encode(t),0>1,1==(1&i)?-o:o),n.rest=t}},{"./base64":292}],292:[function(e,t,n){"use strict";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},d.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(0<=n)return this.sourcesContent[n];var a,r=e;if(null!=this.sourceRoot&&(r=b.relative(this.sourceRoot,r)),null!=this.sourceRoot&&(a=b.urlParse(this.sourceRoot))){var i=r.replace(/^file:\/\//,"");if("file"==a.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!a.path||"/"==a.path)&&this._sources.has("/"+r))return this.sourcesContent[this._sources.indexOf("/"+r)]}if(t)return null;throw new Error('"'+r+'" is not in the SourceMap.')},d.prototype.generatedPositionFor=function(e){var t=b.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:b.getArg(e,"line"),originalColumn:b.getArg(e,"column")},a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",b.compareByOriginalPositions,b.getArg(e,"bias",o.GREATEST_LOWER_BOUND));if(0<=a){var r=this._originalMappings[a];if(r.source===n.source)return{line:b.getArg(r,"generatedLine",null),column:b.getArg(r,"generatedColumn",null),lastColumn:b.getArg(r,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=d,(a.prototype=Object.create(o.prototype)).constructor=o,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;tt._pos){var a=n.substr(t._pos);if("x-user-defined"===t._charset){for(var r=new p(a.length),i=0;it._pos&&(t.push(new p(new Uint8Array(o.result.slice(t._pos)))),t._pos=o.result.byteLength)},o.onload=function(){t.push(null)},o.readAsArrayBuffer(n)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n("buffer").Buffer)},{"./capability":302,_process:264,buffer:20,inherits:186,"readable-stream":277}],305:[function(e,t,n){"use strict";var a=e("safe-buffer").Buffer,r=a.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(a.isEncoding===r||!r(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=p,t=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},i.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},i.prototype.then=function(e,t){if(!this._fullfilledPromise){var r=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,a){r.end(function(e,t){e?a(e):n(t)})})}return this._fullfilledPromise.then(e,t)},i.prototype.catch=function(e){return this.then(void 0,e)},i.prototype.use=function(e){return e(this),this},i.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},i.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},i.prototype.getHeader=i.prototype.get=function(e){return this._header[e.toLowerCase()]},i.prototype.set=function(e,t){if(r(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},i.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},i.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),r(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var a in t)this.field(e,t[a]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},i.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},i.prototype._auth=function(e,t,n,a){switch(n.type){case"basic":this.set("Authorization","Basic "+a(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},i.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},i.prototype.redirects=function(e){return this._maxRedirects=e,this},i.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},i.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},i.prototype.send=function(e){var t=r(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&r(this._data))for(var a in e)this._data[a]=e[a];else this._data="string"==typeof e?(n||this.type("form"),"application/x-www-form-urlencoded"==(n=this._header["content-type"])?this._data?this._data+"&"+e:e:(this._data||"")+e):e;return!t||this._isHost(e)||n||this.type("json"),this},i.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},i.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},i.prototype._appendQueryString=function(){console.trace("Unsupported")},i.prototype._timeoutError=function(e,t,n){if(!this._aborted){var a=new Error(e+t+"ms exceeded");a.timeout=t,a.code="ECONNABORTED",a.errno=n,this.timedout=!0,this.abort(),this.callback(a)}},i.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},{"./is-object":308}],310:[function(e,t,n){"use strict";var r=e("./utils");function a(e){if(e)return function(e){for(var t in a.prototype)e[t]=a.prototype[t];return e}(e)}(t.exports=a).prototype.get=function(e){return this.header[e.toLowerCase()]},a.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=r.type(t);var n=r.params(t);for(var a in n)this[a]=n[a];this.links={};try{e.link&&(this.links=r.parseLinks(e.link))}catch(e){}},a.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},{"./utils":311}],311:[function(e,t,n){"use strict";n.type=function(e){return e.split(/ *; */).shift()},n.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),a=n.shift(),r=n.shift();return a&&r&&(e[a]=r),e},{})},n.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),a=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=a,e},{})},n.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},{}],312:[function(e,t,n){"use strict";t.exports=["get","put","post","delete","options","head","patch"]},{}],313:[function(e,t,n){t.exports={title:"A JSON Schema for Swagger 2.0 API.",id:"http://swagger.io/v2/schema.json#",$schema:"http://json-schema.org/draft-04/schema#",type:"object",required:["swagger","info","paths"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{swagger:{type:"string",enum:["2.0"],description:"The Swagger version of this document."},info:{$ref:"#/definitions/info"},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:"The host (name or ip) of the API. Example: 'swagger.io'"},basePath:{type:"string",pattern:"^/",description:"The base path to the API. Example: '/api'."},schemes:{$ref:"#/definitions/schemesList"},consumes:{description:"A list of MIME types accepted by the API.",$ref:"#/definitions/mediaTypeList"},produces:{description:"A list of MIME types the API can produce.",$ref:"#/definitions/mediaTypeList"},paths:{$ref:"#/definitions/paths"},definitions:{$ref:"#/definitions/definitions"},parameters:{$ref:"#/definitions/parameterDefinitions"},responses:{$ref:"#/definitions/responseDefinitions"},security:{$ref:"#/definitions/security"},securityDefinitions:{$ref:"#/definitions/securityDefinitions"},tags:{type:"array",items:{$ref:"#/definitions/tag"},uniqueItems:!0},externalDocs:{$ref:"#/definitions/externalDocs"}},definitions:{info:{type:"object",description:"General information about the API.",required:["version","title"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{title:{type:"string",description:"A unique and precise title of the API."},version:{type:"string",description:"A semantic version number of the API."},description:{type:"string",description:"A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed."},termsOfService:{type:"string",description:"The terms of service for the API."},contact:{$ref:"#/definitions/contact"},license:{$ref:"#/definitions/license"}}},contact:{type:"object",description:"Contact information for the owners of the API.",additionalProperties:!1,properties:{name:{type:"string",description:"The identifying name of the contact person/organization."},url:{type:"string",description:"The URL pointing to the contact information.",format:"uri"},email:{type:"string",description:"The email address of the contact person/organization.",format:"email"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},license:{type:"object",required:["name"],additionalProperties:!1,properties:{name:{type:"string",description:"The name of the license type. It's encouraged to use an OSI compatible license."},url:{type:"string",description:"The URL pointing to the license.",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},paths:{type:"object",description:"Relative paths to the individual endpoints. They must be relative to the 'basePath'.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"},"^/":{$ref:"#/definitions/pathItem"}},additionalProperties:!1},definitions:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},description:"One or more JSON objects describing the schemas being consumed and produced by the API."},parameterDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/parameter"},description:"One or more JSON representations for parameters"},responseDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/response"},description:"One or more JSON representations for parameters"},externalDocs:{type:"object",additionalProperties:!1,description:"information about external documentation",required:["url"],properties:{description:{type:"string"},url:{type:"string",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},examples:{type:"object",additionalProperties:!0},mimeType:{type:"string",description:"The MIME type of the HTTP message."},operation:{type:"object",required:["responses"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{tags:{type:"array",items:{type:"string"},uniqueItems:!0},summary:{type:"string",description:"A brief summary of the operation."},description:{type:"string",description:"A longer description of the operation, GitHub Flavored Markdown is allowed."},externalDocs:{$ref:"#/definitions/externalDocs"},operationId:{type:"string",description:"A unique identifier of the operation."},produces:{description:"A list of MIME types the API can produce.",$ref:"#/definitions/mediaTypeList"},consumes:{description:"A list of MIME types the API can consume.",$ref:"#/definitions/mediaTypeList"},parameters:{$ref:"#/definitions/parametersList"},responses:{$ref:"#/definitions/responses"},schemes:{$ref:"#/definitions/schemesList"},deprecated:{type:"boolean",default:!1},security:{$ref:"#/definitions/security"}}},pathItem:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},get:{$ref:"#/definitions/operation"},put:{$ref:"#/definitions/operation"},post:{$ref:"#/definitions/operation"},delete:{$ref:"#/definitions/operation"},options:{$ref:"#/definitions/operation"},head:{$ref:"#/definitions/operation"},patch:{$ref:"#/definitions/operation"},parameters:{$ref:"#/definitions/parametersList"}}},responses:{type:"object",description:"Response objects names can either be any valid HTTP status code or 'default'.",minProperties:1,additionalProperties:!1,patternProperties:{"^([0-9]{3})$|^(default)$":{$ref:"#/definitions/responseValue"},"^x-":{$ref:"#/definitions/vendorExtension"}},not:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}}},responseValue:{oneOf:[{$ref:"#/definitions/response"},{$ref:"#/definitions/jsonReference"}]},response:{type:"object",required:["description"],properties:{description:{type:"string"},schema:{oneOf:[{$ref:"#/definitions/schema"},{$ref:"#/definitions/fileSchema"}]},headers:{$ref:"#/definitions/headers"},examples:{$ref:"#/definitions/examples"}},additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},headers:{type:"object",additionalProperties:{$ref:"#/definitions/header"}},header:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},vendorExtension:{description:"Any property starting with x- is valid.",additionalProperties:!0,additionalItems:!0},bodyParameter:{type:"object",required:["name","in","schema"],patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},in:{type:"string",description:"Determines the location of the parameter.",enum:["body"]},required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},schema:{$ref:"#/definitions/schema"}},additionalProperties:!1},headerParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["header"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},queryParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["query"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},formDataParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["formData"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array","file"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},pathParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["required"],properties:{required:{type:"boolean",enum:[!0],description:"Determines whether or not this parameter is required or optional."},in:{type:"string",description:"Determines the location of the parameter.",enum:["path"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},nonBodyParameter:{type:"object",required:["name","in","type"],oneOf:[{$ref:"#/definitions/headerParameterSubSchema"},{$ref:"#/definitions/formDataParameterSubSchema"},{$ref:"#/definitions/queryParameterSubSchema"},{$ref:"#/definitions/pathParameterSubSchema"}]},parameter:{oneOf:[{$ref:"#/definitions/bodyParameter"},{$ref:"#/definitions/nonBodyParameter"}]},schema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{$ref:"http://json-schema.org/draft-04/schema#/properties/multipleOf"},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},maxProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},additionalProperties:{anyOf:[{$ref:"#/definitions/schema"},{type:"boolean"}],default:{}},type:{$ref:"http://json-schema.org/draft-04/schema#/properties/type"},items:{anyOf:[{$ref:"#/definitions/schema"},{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}}],default:{}},allOf:{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}},properties:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},default:{}},discriminator:{type:"string"},readOnly:{type:"boolean",default:!1},xml:{$ref:"#/definitions/xml"},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},fileSchema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["type"],properties:{format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},type:{type:"string",enum:["file"]},readOnly:{type:"boolean",default:!1},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},primitivesItems:{type:"object",additionalProperties:!1,properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},security:{type:"array",items:{$ref:"#/definitions/securityRequirement"},uniqueItems:!0},securityRequirement:{type:"object",additionalProperties:{type:"array",items:{type:"string"},uniqueItems:!0}},xml:{type:"object",additionalProperties:!1,properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean",default:!1},wrapped:{type:"boolean",default:!1}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},tag:{type:"object",additionalProperties:!1,required:["name"],properties:{name:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/definitions/externalDocs"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},securityDefinitions:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/basicAuthenticationSecurity"},{$ref:"#/definitions/apiKeySecurity"},{$ref:"#/definitions/oauth2ImplicitSecurity"},{$ref:"#/definitions/oauth2PasswordSecurity"},{$ref:"#/definitions/oauth2ApplicationSecurity"},{$ref:"#/definitions/oauth2AccessCodeSecurity"}]}},basicAuthenticationSecurity:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["basic"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},apiKeySecurity:{type:"object",additionalProperties:!1,required:["type","name","in"],properties:{type:{type:"string",enum:["apiKey"]},name:{type:"string"},in:{type:"string",enum:["header","query"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ImplicitSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["implicit"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2PasswordSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["password"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ApplicationSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["application"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2AccessCodeSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl","tokenUrl"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["accessCode"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2Scopes:{type:"object",additionalProperties:{type:"string"}},mediaTypeList:{type:"array",items:{$ref:"#/definitions/mimeType"},uniqueItems:!0},parametersList:{type:"array",description:"The parameters needed to send a valid API call.",additionalItems:!1,items:{oneOf:[{$ref:"#/definitions/parameter"},{$ref:"#/definitions/jsonReference"}]},uniqueItems:!0},schemesList:{type:"array",description:"The transfer protocol of the API.",items:{type:"string",enum:["http","https","ws","wss"]},uniqueItems:!0},collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes"],default:"csv"},collectionFormatWithMulti:{type:"string",enum:["csv","ssv","tsv","pipes","multi"],default:"csv"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{$ref:"http://json-schema.org/draft-04/schema#/properties/multipleOf"},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},jsonReference:{type:"object",required:["$ref"],additionalProperties:!1,properties:{$ref:{type:"string"}}}}}},{}],314:[function(u,e,c){(function(e,t){"use strict";var a=u("process/browser.js").nextTick,n=Function.prototype.apply,r=Array.prototype.slice,i={},o=0;function s(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new s(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new s(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=o++,n=!(arguments.length<2)&&r.call(arguments,1);return i[t]=!0,a(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,u("timers").setImmediate,u("timers").clearImmediate)},{"process/browser.js":264,timers:314}],315:[function(e,t,n){"use strict";var r=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(r.isBuffer(e)){for(var t=new Uint8Array(e.length),n=e.length,a=0;ao[0]&&t[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}},f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var a,r,i=n.call(e),o=[];try{for(;(void 0===t||0>>1;n(e[s])":">",'"':""","'":"'","`":"`"},x=d.invert(w),E=function(t){var n=function(e){return t[e]},e="(?:"+d.keys(t).join("|")+")",a=RegExp(e),r=RegExp(e,"g");return function(e){return e=null==e?"":""+e,a.test(e)?e.replace(r,n):e}};d.escape=E(w),d.unescape=E(x),d.result=function(e,t){if(null!=e){var n=e[t];return d.isFunction(n)?e[t]():n}};var _=0;d.uniqueId=function(e){var t=++_+"";return e?e+t:t},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,S={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},C=/\\|'|\r|\n|\u2028|\u2029/g,j=function(e){return"\\"+S[e]};d.template=function(i,e,t){!e&&t&&(e=t),e=d.defaults({},e,d.templateSettings);var n=RegExp([(e.escape||A).source,(e.interpolate||A).source,(e.evaluate||A).source].join("|")+"|$","g"),o=0,s="__p+='";i.replace(n,function(e,t,n,a,r){return s+=i.slice(o,r).replace(C,j),o=r+e.length,t?s+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":n?s+="'+\n((__t=("+n+"))==null?'':__t)+\n'":a&&(s+="';\n"+a+"\n__p+='"),e}),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var a=new Function(e.variable||"obj","_",s)}catch(e){throw e.source=s,e}var r=function(e){return a.call(this,e,d)},u=e.variable||"obj";return r.source="function("+u+"){\n"+s+"}",r},d.chain=function(e){var t=d(e);return t._chain=!0,t};var D=function(e){return this._chain?d(e).chain():e};d.mixin=function(n){d.each(d.functions(n),function(e){var t=d[e]=n[e];d.prototype[e]=function(){var e=[this._wrapped];return s.apply(e,arguments),D.call(this,t.apply(d,e))}})},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var n=a[t];d.prototype[t]=function(){var e=this._wrapped;return n.apply(e,arguments),"shift"!==t&&"splice"!==t||0!==e.length||delete e[0],D.call(this,e)}}),d.each(["concat","join","slice"],function(e){var t=a[e];d.prototype[e]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return d})}).call(this)},{}],318:[function(e,t,n){"use strict";var a,r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};r=function(e){function R(){for(var e=arguments.length,t=Array(e),n=0;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=Math.floor,M=String.fromCharCode;function P(e){throw new RangeError(o[e])}function s(e,t){var n=e.split("@"),a="";return 1>1,e+=I(e/t);455I((T-r)/p))&&P("overflow"),r+=d*p;var m=f<=o?1:o+26<=f?26:f-o;if(dI(T/h)&&P("overflow"),p*=h}var g=n.length+1;o=U(r-l,g,0==l),I(r/g)>T-i&&P("overflow"),i+=I(r/g),r%=g,n.splice(r++,0,i)}return String.fromCodePoint.apply(String,n)},c=function(e){var t=[],n=(e=L(e)).length,a=128,r=0,i=72,o=!0,s=!1,u=void 0;try{for(var c,l=e[Symbol.iterator]();!(o=(c=l.next()).done);o=!0){var p=c.value;p<128&&t.push(M(p))}}catch(e){s=!0,u=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw u}}var f=t.length,d=f;for(f&&t.push("-");dI((T-r)/x)&&P("overflow"),r+=(m-a)*x,a=m;var E=!0,_=!1,A=void 0;try{for(var S,C=e[Symbol.iterator]();!(E=(S=C.next()).done);E=!0){var j=S.value;if(jT&&P("overflow"),j==a){for(var D=r,k=36;;k+=36){var F=k<=i?1:i+26<=k?26:k-i;if(D>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function g(e){for(var t="",n=0,a=e.length;nA-Z\\x5E-\\x7E]",'[\\"\\\\]'),K=new RegExp(O,"g"),H=new RegExp(q,"g"),W=new RegExp(R("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',G),"g"),J=new RegExp(R("[^]",O,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),V=J;function Y(e){var t=g(e);return t.match(K)?t:e}var Z={scheme:"mailto",parse:function(t,e){var n=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var a=!1,r={},i=t.query.split("&"),o=0,s=i.length;o\[\]\^\`\{\|\}\~\x7F-\xFF]/g,te={scheme:"urn",parse:function(e,t){var n=e.path&&e.path.match(Q);if(n){var a="urn:"+n[1].toLowerCase(),r=f[a];r||(r=f[a]={scheme:a,parse:function(e,t){return e},serialize:f.urn.serialize}),e.scheme=a,e.path=n[2],e=r.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e},serialize:function(e,t){var n=e.scheme||t.scheme;if(n&&"urn"!==n){var a=n.match(X)||["urn:"+n,n];e.scheme="urn",e.path=a[1]+":"+(e.path?e.path.replace(ee,m):"")}return e}},ne=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,ae={scheme:"urn:uuid",parse:function(e,t){return t.tolerant||e.path&&e.path.match(ne)||(e.error=e.error||"UUID is not valid."),e},serialize:function(e,t){return t.tolerant||e.path&&e.path.match(ne)?e.path=(e.path||"").toLowerCase():e.scheme=void 0,f.urn.serialize(e,t)}};f.http=k,f.https=F,f.mailto=Z,f.urn=te,f["urn:uuid"]=ae,e.SCHEMES=f,e.pctEncChar=m,e.pctDecChars=g,e.parse=w,e.removeDotSegments=S,e.serialize=C,e.resolveComponents=j,e.resolve=function(e,t,n){return C(j(w(e,n),w(t,n),n,!0),n)},e.normalize=function(e,t){return"string"==typeof e?e=C(w(e,t),t):"object"===a(e)&&(e=w(C(e,t),t)),e},e.equal=function(e,t,n){return"string"==typeof e?e=C(w(e,n),n):"object"===a(e)&&(e=C(e,n)),"string"==typeof t?t=C(w(t,n),n):"object"===a(t)&&(t=C(t,n)),e===t},e.escapeComponent=function(e,t){return e&&e.toString().replace(t&&t.iri?p.ESCAPE:l.ESCAPE,m)},e.unescapeComponent=D,Object.defineProperty(e,"__esModule",{value:!0})},"object"===((a=void 0)===n?"undefined":i(n))&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(a.URI=a.URI||{})},{}],319:[function(e,t,n){"use strict";var R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B=e("punycode"),T=e("./util");function j(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=i,n.resolve=function(e,t){return i(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?i(e,!1,!0).resolveObject(t):t},n.format=function(e){T.isString(e)&&(e=i(e));return e instanceof j?e.format():j.prototype.format.call(e)},n.Url=j;var I=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,M=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,r=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),P=["'"].concat(r),L=["%","/","?",";","#"].concat(P),N=["/","?","#"],U=/^[+a-z0-9A-Z_-]{0,63}$/,$=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,q={javascript:!0,"javascript:":!0},G={javascript:!0,"javascript:":!0},K={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},H=e("querystring");function i(e,t,n){if(e&&T.isObject(e)&&e instanceof j)return e;var a=new j;return a.parse(e,t,n),a}j.prototype.parse=function(e,t,n){if(!T.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+(void 0===e?"undefined":R(e)));var a=e.indexOf("?"),r=-1!==a&&a/g,">").replace(/\//g,"/").replace(/\\/g,"\").replace(/`/g,"`")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],328:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var t=1$/i,x=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,E=/^[a-z\d]+$/,_=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,A=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,S=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;t.exports=n.default},{"./isByteLength":335,"./isFQDN":343,"./isIP":350,"./util/assertString":394,"./util/merge":396}],342:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){return(0,a.default)(e),0===((t=(0,r.default)(t,o)).ignore_whitespace?e.trim().length:e.length)};var a=i(e("./util/assertString")),r=i(e("./util/merge"));function i(e){return e&&e.__esModule?e:{default:e}}var o={ignore_whitespace:!1};t.exports=n.default},{"./util/assertString":394,"./util/merge":396}],343:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){(0,s.default)(e),(t=(0,u.default)(t,c)).allow_trailing_dot&&"."===e[e.length-1]&&(e=e.substring(0,e.length-1));for(var n=e.split("."),a=0;a=t.min)&&(!t.hasOwnProperty("max")||a<=t.max)&&(!t.hasOwnProperty("lt")||at.gt)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a},o=e("./alpha");t.exports=n.default},{"./alpha":323,"./util/assertString":394}],345:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.fullWidth=void 0,n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=n.fullWidth=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/},{"./util/assertString":394}],346:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.halfWidth=void 0,n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=n.halfWidth=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/},{"./util/assertString":394}],347:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){return(0,i.default)(e),new RegExp("^[a-f0-9]{"+o[t]+"}$").test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o={md5:32,md4:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8};t.exports=n.default},{"./util/assertString":394}],348:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;t.exports=n.default},{"./util/assertString":394}],349:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[0-9A-F]+$/i;t.exports=n.default},{"./util/assertString":394}],350:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function e(t){var n=1s)return!1;if("::"===t)return!0;"::"===t.substr(0,2)?(r.shift(),r.shift(),i=!0):"::"===t.substr(t.length-2)&&(r.pop(),r.pop(),i=!0);for(var u=0;u=t.min,r=!t.hasOwnProperty("max")||e<=t.max,i=!t.hasOwnProperty("lt")||et.gt;return n.test(e)&&a&&r&&i&&o};var a,r=e("./util/assertString"),s=(a=r)&&a.__esModule?a:{default:a};var u=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,c=/^[-+]?[0-9]+$/;t.exports=n.default},{"./util/assertString":394}],361:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.defineProperty(n,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"===a(Symbol.iterator)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":void 0===e?"undefined":a(e)};n.default=function(e){(0,s.default)(e);try{var t=JSON.parse(e);return!!t&&"object"===(void 0===t?"undefined":r(t))}catch(e){}return!1};var i,o=e("./util/assertString"),s=(i=o)&&i.__esModule?i:{default:i};t.exports=n.default},{"./util/assertString":394}],362:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+$/;t.exports=n.default},{"./util/assertString":394}],363:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if((0,i.default)(e),!e.includes(","))return!1;var t=e.split(",");return o.test(t[0])&&s.test(t[1])};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/,s=/^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;t.exports=n.default},{"./util/assertString":394}],364:[function(e,t,n){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"===a(Symbol.iterator)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":void 0===e?"undefined":a(e)};n.default=function(e,t){(0,s.default)(e);var n=void 0,a=void 0;a="object"===(void 0===t?"undefined":o(t))?(n=t.min||0,t.max):(n=t,arguments[2]);var r=e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],i=e.length-r.length;return n<=i&&(void 0===a||i<=a)};var r,i=e("./util/assertString"),s=(r=i)&&r.__esModule?r:{default:r};t.exports=n.default},{"./util/assertString":394}],365:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),e===e.toLowerCase()};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],366:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,i.default)(e),t&&t.no_colons)return s.test(e);return o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/,s=/^([0-9a-fA-F]){12}$/;t.exports=n.default},{"./util/assertString":394}],367:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[a-f0-9]{32}$/;t.exports=n.default},{"./util/assertString":394}],368:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e.trim())};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32,40}&dn=.+&tr=.+$/i;t.exports=n.default},{"./util/assertString":394}],369:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)||s.test(e)||u.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i,s=/^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i,u=/^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i;t.exports=n.default},{"./util/assertString":394}],370:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(n,e,t){if((0,i.default)(n),t&&t.strictMode&&!n.startsWith("+"))return!1;{if(Array.isArray(e))return e.some(function(e){if(o.hasOwnProperty(e)){var t=o[e];if(t.test(n))return!0}return!1});if(e in o)return o[e].test(n);if(!e||"any"===e){for(var a in o)if(o.hasOwnProperty(a)){var r=o[a];if(r.test(n))return!0}return!1}}throw new Error("Invalid locale '"+e+"'")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o={"ar-AE":/^((\+?971)|0)?5[024568]\d{7}$/,"ar-DZ":/^(\+?213|0)(5|6|7)\d{8}$/,"ar-EG":/^((\+?20)|0)?1[012]\d{8}$/,"ar-IQ":/^(\+?964|0)?7[0-9]\d{8}$/,"ar-JO":/^(\+?962|0)?7[789]\d{7}$/,"ar-KW":/^(\+?965)[569]\d{7}$/,"ar-SA":/^(!?(\+?966)|0)?5\d{8}$/,"ar-SY":/^(!?(\+?963)|0)?9\d{8}$/,"ar-TN":/^(\+?216)?[2459]\d{7}$/,"be-BY":/^(\+?375)?(24|25|29|33|44)\d{7}$/,"bg-BG":/^(\+?359|0)?8[789]\d{7}$/,"bn-BD":/\+?(88)?0?1[156789][0-9]{8}\b/,"cs-CZ":/^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"da-DK":/^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,"de-DE":/^(\+?49[ \.\-]?)?([\(]{1}[0-9]{1,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,"el-GR":/^(\+?30|0)?(69\d{8})$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-HK":/^(\+?852\-?)?[456789]\d{3}\-?\d{4}$/,"en-IN":/^(\+?91|0)?[6789]\d{9}$/,"en-KE":/^(\+?254|0)?[7]\d{8}$/,"en-NG":/^(\+?234|0)?[789]\d{9}$/,"en-NZ":/^(\+?64|0)[28]\d{7,9}$/,"en-PK":/^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$|^\d{11}$|^\d{4}-\d{7}$/,"en-RW":/^(\+?250|0)?[7]\d{8}$/,"en-SG":/^(\+65)?[89]\d{7}$/,"en-TZ":/^(\+?255|0)?[67]\d{8}$/,"en-UG":/^(\+?256|0)?[7]\d{8}$/,"en-US":/^(\+?1?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-ZM":/^(\+?26)?09[567]\d{7}$/,"es-ES":/^(\+?34)?(6\d{1}|7[1234])\d{7}$/,"es-MX":/^(\+?52)?(1|01)?\d{10,11}$/,"et-EE":/^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,"fa-IR":/^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,"fi-FI":/^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/,"fo-FO":/^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"he-IL":/^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}/,"hu-HU":/^(\+?36)(20|30|70)\d{7}$/,"id-ID":/^(\+?62|0)(0?8?\d\d\s?\d?)([\s?|\d]{7,12})$/,"it-IT":/^(\+?39)?\s?3\d{2} ?\d{6,7}$/,"ja-JP":/^(\+?81|0)[789]0[ \-]?[1-9]\d{2}[ \-]?\d{5}$/,"kk-KZ":/^(\+?7|8)?7\d{9}$/,"kl-GL":/^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"ko-KR":/^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,"lt-LT":/^(\+370|8)\d{8}$/,"ms-MY":/^(\+?6?01){1}(([145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/,"nb-NO":/^(\+?47)?[49]\d{7}$/,"nl-BE":/^(\+?32|0)4?\d{8}$/,"nn-NO":/^(\+?47)?[49]\d{7}$/,"pl-PL":/^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/,"pt-BR":/(?=^(\+?5{2}\-?|0)[1-9]{2}\-?\d{4}\-?\d{4}$)(^(\+?5{2}\-?|0)[1-9]{2}\-?[6-9]{1}\d{3}\-?\d{4}$)|(^(\+?5{2}\-?|0)[1-9]{2}\-?9[6-9]{1}\d{3}\-?\d{4}$)/,"pt-PT":/^(\+?351)?9[1236]\d{7}$/,"ro-RO":/^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/,"sk-SK":/^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"sr-RS":/^(\+3816|06)[- \d]{5,9}$/,"sv-SE":/^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,"th-TH":/^(\+66|66|0)\d{9}$/,"tr-TR":/^(\+?90|0)?5\d{9}$/,"uk-UA":/^(\+?38|8)?0\d{9}$/,"vi-VN":/^(\+?84|0)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,"zh-CN":/^((\+|00)86)?1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/,"zh-TW":/^(\+?886\-?|0)?9\d{8}$/};o["en-CA"]=o["en-US"],o["fr-BE"]=o["nl-BE"],o["zh-HK"]=o["en-HK"],t.exports=n.default},{"./util/assertString":394}],371:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,a.default)(e),(0,r.default)(e)&&24===e.length};var a=i(e("./util/assertString")),r=i(e("./isHexadecimal"));function i(e){return e&&e.__esModule?e:{default:e}}t.exports=n.default},{"./isHexadecimal":349,"./util/assertString":394}],372:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/[^\x00-\x7F]/;t.exports=n.default},{"./util/assertString":394}],373:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,i.default)(e),t&&t.no_symbols)return s.test(e);return o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^[+-]?([0-9]*[.])?[0-9]+$/,s=/^[0-9]+$/;t.exports=n.default},{"./util/assertString":394}],374:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e,{min:0,max:65535})};var a,r=e("./isInt"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./isInt":360}],375:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.locales=void 0,n.default=function(e,t){if((0,i.default)(e),t in c)return c[t].test(e);if("any"!==t)throw new Error("Invalid locale '"+t+"'");for(var n in c){if(c.hasOwnProperty(n))if(c[n].test(e))return!0}return!1};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/^\d{4}$/,s=/^\d{5}$/,u=/^\d{6}$/,c={AD:/^AD\d{3}$/,AT:o,AU:o,BE:o,BG:o,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:o,CZ:/^\d{3}\s?\d{2}$/,DE:s,DK:o,DZ:s,EE:s,ES:s,FI:s,FR:/^\d{2}\s?\d{3}$/,GB:/^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,GR:/^\d{3}\s?\d{2}$/,HR:/^([1-5]\d{4}$)/,HU:o,IL:s,IN:u,IS:/^\d{3}$/,IT:s,JP:/^\d{3}\-\d{4}$/,KE:s,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT\-\d{5}$/,LU:o,LV:/^LV\-\d{4}$/,MX:s,NL:/^\d{4}\s?[a-z]{2}$/i,NO:o,PL:/^\d{2}\-\d{3}$/,PT:/^\d{4}\-\d{3}?$/,RO:u,RU:u,SA:s,SE:/^\d{3}\s?\d{2}$/,SI:o,SK:/^\d{3}\s?\d{2}$/,TN:o,TW:/^\d{3}(\d{2})?$/,US:/^\d{5}(-\d{4})?$/,ZA:o,ZM:s};n.locales=Object.keys(c)},{"./util/assertString":394}],376:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),d.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/([01][0-9]|2[0-3])/,s=/[0-5][0-9]/,u=new RegExp("[-+]"+o.source+":"+s.source),c=new RegExp("([zZ]|"+u.source+")"),l=new RegExp(o.source+":"+s.source+":"+/([0-5][0-9]|60)/.source+/(\.[0-9]+)?/.source),p=new RegExp(/[0-9]{4}/.source+"-"+/(0[1-9]|1[0-2])/.source+"-"+/([12]\d|0[1-9]|3[01])/.source),f=new RegExp(""+l.source+c.source),d=new RegExp(p.source+"[ tT]"+f.source);t.exports=n.default},{"./util/assertString":394}],377:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return(0,i.default)(e),o.test(e)};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};var o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;t.exports=n.default},{"./util/assertString":394}],378:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,t){if((0,p.default)(e),!e||2083<=e.length||/[\s<>]/.test(e))return!1;if(0===e.indexOf("mailto:"))return!1;t=(0,m.default)(t,h);var n=void 0,a=void 0,r=void 0,i=void 0,o=void 0,s=void 0,u=void 0,c=void 0;if(1<(u=(e=(u=(e=(u=e.split("#")).shift()).split("?")).shift()).split("://")).length){if(n=u.shift(),t.require_valid_protocol&&-1===t.protocols.indexOf(n))return!1}else{if(t.require_protocol)return!1;if("//"===e.substr(0,2)){if(!t.allow_protocol_relative_urls)return!1;u[0]=e.substr(2)}}if(""===(e=u.join("://")))return!1;if(""===(e=(u=e.split("/")).shift())&&!t.require_host)return!0;if(1<(u=e.split("@")).length&&0<=(a=u.shift()).indexOf(":")&&2").replace(///g,"/").replace(/\/g,"\\").replace(/`/g,"`")};var a,r=e("./util/assertString"),i=(a=r)&&a.__esModule?a:{default:a};t.exports=n.default},{"./util/assertString":394}],394:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if(!("string"==typeof e||e instanceof String))throw new TypeError("This library (validator.js) validates strings only")},t.exports=n.default},{}],395:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.default=function(e,t){return e.some(function(e){return t===e})},t.exports=n.default},{}],396:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(){var e=0t.maximum&&e.addError("MAXIMUM",[n,t.maximum],null,t):n>=t.maximum&&e.addError("MAXIMUM_EXCLUSIVE",[n,t.maximum],null,t))},exclusiveMaximum:function(){},minimum:function(e,t,n){"number"==typeof n&&(!0!==t.exclusiveMinimum?nt.maxLength&&e.addError("MAX_LENGTH",[n.length,t.maxLength],null,t)},minLength:function(e,t,n){"string"==typeof n&&m.ucs2decode(n).lengtht.items.length&&e.addError("ARRAY_ADDITIONAL_ITEMS",null,null,t)},items:function(){},maxItems:function(e,t,n){Array.isArray(n)&&n.length>t.maxItems&&e.addError("ARRAY_LENGTH_LONG",[n.length,t.maxItems],null,t)},minItems:function(e,t,n){Array.isArray(n)&&n.lengtht.maxProperties&&e.addError("OBJECT_PROPERTIES_MAXIMUM",[a,t.maxProperties],null,t)}},minProperties:function(e,t,n){if("object"===m.whatIs(n)){var a=Object.keys(n).length;a=this.reportOptions.maxErrors)){if(!t)throw new Error("No errorMessage known for code "+e);for(var i=(n=n||[]).length;i--;){var o=f.whatIs(n[i]),s="object"===o||"null"===o?JSON.stringify(n[i]):n[i];t=t.replace("{"+i+"}",s)}var u={code:e,params:n,message:t,path:this.getPath(this.options.reportPathAsArray),schemaId:this.getSchemaId()};if(r&&"string"==typeof r?u.description=r:r&&"object"===(void 0===r?"undefined":p(r))&&(r.title&&(u.title=r.title),r.description&&(u.description=r.description)),null!=a){for(Array.isArray(a)||(a=[a]),u.inner=[],i=a.length;i--;)for(var c=a[i],l=c.errors.length;l--;)u.inner.push(c.errors[l]);0===u.inner.length&&(u.inner=void 0)}this.errors.push(u)}},t.exports=a}).call(this,e("_process"))},{"./Errors":400,"./Utils":408,_process:264,"lodash.get":251}],405:[function(e,t,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=e("lodash.isequal"),g=e("./Report"),y=e("./SchemaCompilation"),v=e("./SchemaValidation"),i=e("./Utils");function b(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function w(e,t){if("object"===(void 0===e?"undefined":o(e))&&null!==e){if(!t)return e;if(e.id&&(e.id===t||"#"===e.id[0]&&e.id.substring(1)===t))return e;var n,a;if(Array.isArray(e)){for(n=e.length;n--;)if(a=w(e[n],t))return a}else{var r=Object.keys(e);for(n=r.length;n--;){var i=r[n];if(0!==i.indexOf("__$")&&(a=w(e[i],t)))return a}}}}n.cacheSchemaByUri=function(e,t){var n=b(e);n&&(this.cache[n]=t)},n.removeFromCacheByUri=function(e){var t=b(e);t&&delete this.cache[t]},n.checkCacheForUri=function(e){var t=b(e);return!!t&&null!=this.cache[t]},n.getSchema=function(e,t){return"object"===(void 0===t?"undefined":o(t))&&(t=n.getSchemaByReference.call(this,e,t)),"string"==typeof t&&(t=n.getSchemaByUri.call(this,e,t)),t},n.getSchemaByReference=function(e,t){for(var n=this.referenceCache.length;n--;)if(r(this.referenceCache[n][0],t))return this.referenceCache[n][1];var a=i.cloneDeep(t);return this.referenceCache.push([t,a]),a},n.getSchemaByUri=function(e,t,n){var a,r,i,o=b(t),s=-1===(r=(a=t).indexOf("#"))?void 0:a.slice(r+1),u=o?this.cache[o]:n;if(u&&o&&u!==n){e.path.push(o);var c=new g(e);if(y.compileSchema.call(this,c,u)){var l=this.options;try{this.options=u.__$validationOptions||this.options,v.validateSchema.call(this,c,u)}finally{this.options=l}}var p=c.isValid();if(p||e.addError("REMOTE_NOT_VALID",[t],c),e.path.pop(),!p)return}if(u&&s)for(var f=s.split("/"),d=0,m=f.length;u&&d} The promise + * @returns {Promise} The promise * * @example - * SwaggerApi.create({definition: 'http://petstore.swagger.io/v2/swagger.yaml'}) - * .then(function (api) { - * console.log('Documentation URL: ', api.documentationUrl); - * }, function (err) { - * console.error(err.stack); - * }); + * Sway.create({ + * definition: 'https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml' + * }) + * .then(function (apiDefinition) { + * console.log('Documentation URL: ', api.documentationUrl); + * }, function (err) { + * console.error(err.stack); + * }); */ module.exports.create = function (options) { var allTasks = Promise.resolve(); @@ -138,18 +140,18 @@ module.exports.create = function (options) { }); return { - // The original Swagger definition + // The original OpenAPI definition definition: _.isString(cOptions.definition) ? remoteResults.value : cOptions.definition, - // The original Swagger definition with its remote references resolved + // The original OpenAPI definition with its remote references resolved definitionRemotesResolved: remoteResults.resolved, - // The original Swagger definition with all its references resolved + // The original OpenAPI definition with all its references resolved definitionFullyResolved: results.resolved, // Merge the local reference details with the remote reference details refs: results.refs }; }); }) - // Process the Swagger document and return the API + // Process the OpenAPI document and return an ApiDefinition .then(function (results) { // We need to remove all circular objects as z-schema does not work with them: // https://github.com/zaggino/z-schema/issues/137 @@ -158,13 +160,13 @@ module.exports.create = function (options) { helpers.removeCirculars(results.definitionFullyResolved); // Create object model - return new SwaggerApi(results.definition, results.definitionRemotesResolved, results.definitionFullyResolved, results.refs, options); + return new ApiDefinition(results.definition, results.definitionRemotesResolved, results.definitionFullyResolved, results.refs, options); }); return allTasks; }; -},{"./lib/helpers":2,"./lib/types/api":3,"js-yaml":190,"json-refs":220,"lodash":253,"native-promise-only":255}],2:[function(require,module,exports){ +},{"./lib/helpers":2,"./lib/types/api-definition":3,"js-yaml":190,"json-refs":220,"lodash":253,"native-promise-only":255}],2:[function(require,module,exports){ /* * The MIT License (MIT) * @@ -218,7 +220,7 @@ var dateTimeRegExp = new RegExp('^' + '\\d{4}' + // year var collectionFormats = [undefined, 'csv', 'multi', 'pipes', 'ssv', 'tsv']; var jsonMocker; var jsonSchemaValidator = createJSONValidator(); -// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#parameter-object +// https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject var parameterSchemaProperties = ['allowEmptyValue', 'default', 'description', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'format', 'items', 'maxItems', 'maxLength', 'maximum', 'minItems', 'minLength', 'minimum', 'multipleOf', 'pattern', 'type', 'uniqueItems']; var types = ['array', 'boolean', 'integer', 'object', 'number', 'string']; @@ -320,9 +322,9 @@ function normalizeError(obj) { } /** - * Helper method to take a Swagger parameter definition and compute its schema. + * Helper method to take an OpenAPI Parameter Object definition and compute its schema. * - * For non-body Swagger parameters, the definition itself is not suitable as a JSON Schema so we must compute it. + * For non-body OpenAPI parameters, the definition itself is not suitable as a JSON Schema so we must compute it. * * @param {object} paramDef - The parameter definition * @@ -601,7 +603,7 @@ module.exports.parameterLocations = ['body', 'formData', 'header', 'path', 'quer * Process validators. * * @param {object|module:Sway~ServerResponseWrapper} target - The thing being validated - * @param {module:Sway~SwaggerApi|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ + * @param {module:Sway~ApiDefinition|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ * @param {module:Sway~DocumentValidationFunction[]|module:Sway~RequestValidationFunction[]|module:Sway~ResposeValidationFunction[]} validators - The validators * @param {module:Sway~ValidationResults} results - The cumulative validation results */ @@ -875,45 +877,44 @@ var Path = require('./path'); var validators = require('../validation/validators'); /** - * The Swagger API object. + * The OpenAPI Definition object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object). * - * @param {object} definition - The original Swagger definition - * @param {object} definitionRemotesResolved - The Swagger definition with all of its remote references resolved - * @param {object} definitionFullyResolved - The Swagger definition with all of its references resolved - * @param {object} references - The location and resolution of the resolved references in the Swagger definition - * @param {object} options - The options passed to swaggerApi.create + * @param {object} definition - The original OpenAPI definition + * @param {object} definitionRemotesResolved - The OpenAPI definition with all of its remote references resolved + * @param {object} definitionFullyResolved - The OpenAPI definition with all of its references resolved + * @param {object} references - The location and resolution of the resolved references in the OpenAPI definition + * @param {object} options - The options passed to ApiDefinition.create * * @property {object} customFormats - The key/value pair of custom formats *(The keys are the format name and the values * are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* * @property {object} customFormatGenerators - The key/value pair of custom format generators *(The keys are the format name and the values * are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* * @property {module:sway.DocumentValidationFunction[]} customValidators - The array of custom validators - * @property {object} definition - The original Swagger definition - * @property {object} definitionRemotesResolved - The Swagger definition with only its remote references resolved *(This + * @property {object} definition - The original OpenAPI definition + * @property {object} definitionRemotesResolved - The OpenAPI definition with only its remote references resolved *(This * means all references to external/remote documents are replaced with its dereferenced value but all local references * are left unresolved.)* - * @property {object} definitionFullyResolved - The Swagger definition with all of its resolvable references resolved + * @property {object} definitionFullyResolved - The OpenAPI definition with all of its resolvable references resolved * *(This means that all resolvable references are replaced with their dereferenced value.)* - * @property {string} documentationUrl - The URL to the Swagger documentation + * @property {string} documentationUrl - The URL to the OpenAPI documentation * @property {module:sway.Path[]} pathObjects - The unique `Path` objects * @property {object} options - The options passed to the constructor * @property {object} references - The reference metadata *(See [JsonRefs~ResolvedRefDetails](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..ResolvedRefDetails))* - * - * @property {string} version - The Swagger API version + * @property {string} version - The OpenAPI version * * @constructor * * @memberof module:sway */ -function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolved, references, options) { +function ApiDefinition(definition, definitionRemotesResolved, definitionFullyResolved, references, options) { var that = this; - debug('Creating SwaggerApi from %s', _.isString(options.definition) ? options.definition : 'the provided document'); + debug('Creating ApiDefinition from %s', _.isString(options.definition) ? options.definition : 'the provided OpenAPI definition'); // Assign this so other object can use it this._debug = debug; @@ -930,17 +931,17 @@ function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolv this.references = references; this.version = '2.0'; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Object definition _.assign(this, definition); // Register custom formats - _.each(options.customFormats, _.bind(SwaggerApi.prototype.registerFormat, this)); + _.each(options.customFormats, _.bind(ApiDefinition.prototype.registerFormat, this)); // Register custom formats - _.each(options.customFormatGenerators, _.bind(SwaggerApi.prototype.registerFormatGenerator, this)); + _.each(options.customFormatGenerators, _.bind(ApiDefinition.prototype.registerFormatGenerator, this)); // Register custom validators - _.each(options.customValidators, _.bind(SwaggerApi.prototype.registerValidator, this)); + _.each(options.customValidators, _.bind(ApiDefinition.prototype.registerValidator, this)); debug(' Paths:'); @@ -961,14 +962,14 @@ function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolv * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} idOrPathOrReq - The Swagger opeartion id, path string or the http client request *(or + * @param {string|object} idOrPathOrReq - The OpenAPI opeartion id, path string or the http client request *(or * equivalent)* - * @param {string} [method] - The Swagger operation method _(not used when providing an operation id)_ + * @param {string} [method] - The OpenAPI operation method _(not used when providing an operation id)_ * * @returns {module:sway.Operation} The `Operation` for the provided operation id, or path and method or `undefined` if * there is no operation for that operation id, or path and method combination */ -SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { +ApiDefinition.prototype.getOperation = function (idOrPathOrReq, method) { var pathObject; var operation; @@ -996,11 +997,11 @@ SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { /** * Returns all operations for the provided path or all operations in the API. * - * @param {string} [path] - The Swagger path + * @param {string} [path] - The OpenAPI path * * @returns {module:sway.Operation[]} All `Operation` objects for the provided path or all API operations */ -SwaggerApi.prototype.getOperations = function (path) { +ApiDefinition.prototype.getOperations = function (path) { var operations = []; var pathObject; @@ -1022,11 +1023,11 @@ SwaggerApi.prototype.getOperations = function (path) { /** * Returns all operations for the provided tag. * - * @param {string} [tag] - The Swagger tag + * @param {string} [tag] - The OpenAPI tag * * @returns {module:sway.Operation[]} All `Operation` objects for the provided tag */ -SwaggerApi.prototype.getOperationsByTag = function (tag) { +ApiDefinition.prototype.getOperationsByTag = function (tag) { return _.reduce(this.pathObjects, function (operations, pathObject) { operations.push.apply(operations, pathObject.getOperationsByTag(tag)); @@ -1044,11 +1045,11 @@ SwaggerApi.prototype.getOperationsByTag = function (tag) { * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} pathOrReq - The Swagger path string or the http client request *(or equivalent)* + * @param {string|object} pathOrReq - The OpenAPI path string or the http client request *(or equivalent)* * * @returns {module:sway.Path} The corresponding `Path` object for the requested path or request */ -SwaggerApi.prototype.getPath = function (pathOrReq) { +ApiDefinition.prototype.getPath = function (pathOrReq) { var lastIndex = -1; var nextIndex = -1; var matches; @@ -1114,11 +1115,11 @@ SwaggerApi.prototype.getPath = function (pathOrReq) { }; /** - * Returns all path objects for the Swagger API. + * Returns all path objects for the OpenAPI definition. * * @returns {module:sway.Path[]} The `Path` objects */ -SwaggerApi.prototype.getPaths = function () { +ApiDefinition.prototype.getPaths = function () { return this.pathObjects; }; @@ -1128,7 +1129,7 @@ SwaggerApi.prototype.getPaths = function () { * @param {string} name - The name of the format * @param {function} validator - The format validator *(See [ZSchema Custom Format](https://github.com/zaggino/z-schema#register-a-custom-format))* */ -SwaggerApi.prototype.registerFormat = function (name, validator) { +ApiDefinition.prototype.registerFormat = function (name, validator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -1150,7 +1151,7 @@ SwaggerApi.prototype.registerFormat = function (name, validator) { * @param {string} name - The name of the format * @param {function} formatGenerator - The format generator *(See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* */ -SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) { +ApiDefinition.prototype.registerFormatGenerator = function (name, formatGenerator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -1171,7 +1172,7 @@ SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) * * @param {string} name - The name of the format */ -SwaggerApi.prototype.unregisterFormat = function (name) { +ApiDefinition.prototype.unregisterFormat = function (name) { if (_.isString(name)) { delete this.customFormats[name]; @@ -1184,7 +1185,7 @@ SwaggerApi.prototype.unregisterFormat = function (name) { * * @param {string} name - The name of the format generator */ -SwaggerApi.prototype.unregisterFormatGenerator = function (name) { +ApiDefinition.prototype.unregisterFormatGenerator = function (name) { if (_.isString(name)) { delete this.customFormatGenerators[name]; @@ -1199,7 +1200,7 @@ SwaggerApi.prototype.unregisterFormatGenerator = function (name) { * * @throws {TypeError} If the validator is not a function */ -SwaggerApi.prototype.registerValidator = function (validator) { +ApiDefinition.prototype.registerValidator = function (validator) { if (_.isUndefined(validator)) { throw new TypeError('validator is required'); } else if (!_.isFunction(validator)) { @@ -1210,11 +1211,11 @@ SwaggerApi.prototype.registerValidator = function (validator) { }; /** - * Performs validation of the Swagger API document(s). + * Performs validation of the OpenAPI definition. * * @returns {module:sway.ValidationResults} The validation results */ -SwaggerApi.prototype.validate = function () { +ApiDefinition.prototype.validate = function () { var results = { errors: [], warnings: [] @@ -1235,7 +1236,7 @@ SwaggerApi.prototype.validate = function () { return results; }; -module.exports = SwaggerApi; +module.exports = ApiDefinition; },{"../helpers":2,"../validation/validators":11,"./path":7,"debug":25,"lodash":253,"url":319}],4:[function(require,module,exports){ /* @@ -1271,12 +1272,12 @@ var Response = require('./response'); var helpers = require('../helpers'); /** - * The Swagger Operation object. + * The OpenAPI Operation object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject). * * @param {module:sway.Path} pathObject - The Path object * @param {string} method - The operation method @@ -1304,20 +1305,20 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path var that = this; // Assign local properties - this.consumes = definitionFullyResolved.consumes || pathObject.api.consumes || []; + this.consumes = definitionFullyResolved.consumes || pathObject.apiDefinition.consumes || []; this.definition = _.cloneDeep(definition); // Clone so we do not alter the original this.definitionFullyResolved = _.cloneDeep(definitionFullyResolved); // Clone so we do not alter the original this.method = method; this.parameterObjects = []; // Computed below this.pathObject = pathObject; this.pathToDefinition = pathToDefinition; - this.produces = definitionFullyResolved.produces || pathObject.api.produces || []; + this.produces = definitionFullyResolved.produces || pathObject.apiDefinition.produces || []; this.ptr = JsonRefs.pathToPtr(pathToDefinition); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Operation Object definition _.assign(this, definitionFullyResolved); - this._debug = this.pathObject.api._debug; + this._debug = this.pathObject.apiDefinition._debug; // Add the Parameter objects from the Path object that were not redefined in the operation definition this.parameterObjects = _.map(pathObject.parameterObjects, function (parameterObject) { @@ -1340,7 +1341,7 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path var key = paramDef.in + ':' + paramDef.name; var seenIndex = seenParameters.indexOf(key); var pPath = pathToDefinition.concat(['parameters', index.toString()]); - var parameterObject = new Parameter(that, _.get(pathObject.api.definitionRemotesResolved, pPath), paramDef, pPath); + var parameterObject = new Parameter(that, _.get(pathObject.apiDefinition.definitionRemotesResolved, pPath), paramDef, pPath); if (seenIndex > -1) { that.parameterObjects[seenIndex] = parameterObject; @@ -1363,7 +1364,7 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path this.responseObjects = _.map(this.definitionFullyResolved.responses, function (responseDef, code) { var rPath = pathToDefinition.concat(['responses', code]); - return new Response(that, code, _.get(that.pathObject.api.definitionRemotesResolved, rPath), responseDef, rPath); + return new Response(that, code, _.get(that.pathObject.apiDefinition.definitionRemotesResolved, rPath), responseDef, rPath); }); this._debug(' Security:'); @@ -1371,11 +1372,11 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path // Bring in the security definitions for easier access // Override global security with locally defined - var security = this.security || pathObject.api.definitionFullyResolved.security; + var security = this.security || pathObject.apiDefinition.definitionFullyResolved.security; this.securityDefinitions = _.reduce(security, function (defs, reqs) { _.each(reqs, function (req, name) { - var def = pathObject.api.definitionFullyResolved.securityDefinitions ? pathObject.api.definitionFullyResolved.securityDefinitions[name] : undefined; + var def = pathObject.apiDefinition.definitionFullyResolved.securityDefinitions ? pathObject.apiDefinition.definitionFullyResolved.securityDefinitions[name] : undefined; if (!_.isUndefined(def)) { defs[name] = def; @@ -1450,7 +1451,7 @@ Operation.prototype.getResponses = function () { * @returns {object[]} The security for this operation */ Operation.prototype.getSecurity = function () { - return this.definitionFullyResolved.security || this.pathObject.api.definitionFullyResolved.security; + return this.definitionFullyResolved.security || this.pathObject.apiDefinition.definitionFullyResolved.security; }; /** @@ -1563,7 +1564,7 @@ Operation.prototype.validateResponse = function (res, options) { response = this.getResponse(realStatusCode); if (_.isUndefined(response)) { - // If there is no response for the requested status, use the default if there is one (This is Swagger's approach) + // If there is no response for the requested status, use the default if there is one (This is OpenAPI's approach) response = this.getResponse('default'); if (_.isUndefined(response)) { @@ -1840,12 +1841,12 @@ var ParameterValue = require('./parameter-value'); var parseUrl = require('url').parse; /** - * The Swagger Parameter object. + * The OpenAPI Parameter object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject). * * @param {module:sway.Operation|module:sway.Path} opOrPathObject - The `Operation` or `Path` object * @param {object} definition - The parameter definition *(The raw parameter definition __after__ remote references were @@ -1882,14 +1883,14 @@ function Parameter(opOrPathObject, definition, definitionFullyResolved, pathToDe this.pathObject = opOrPathObject; } - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Parameter Object definition _.assign(this, definitionFullyResolved); if (_.isUndefined(this.schema)) { this.schema = helpers.computeParameterSchema(definitionFullyResolved); } - this.pathObject.api._debug(' %s%s (in: %s) at %s', _.isUndefined(this.operationObject) ? '' : ' ', definitionFullyResolved.name, definitionFullyResolved.in, this.ptr); + this.pathObject.apiDefinition._debug(' %s%s (in: %s) at %s', _.isUndefined(this.operationObject) ? '' : ' ', definitionFullyResolved.name, definitionFullyResolved.in, this.ptr); } /** @@ -2055,16 +2056,16 @@ var supportedHttpMethods = require('swagger-methods'); * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Path Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject). * - * @param {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @param {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @param {string} path - The path string * @param {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @param {object} definitionFullyResolved - The path definition with all of its resolvable references resolved * @param {string[]} pathToDefinition - The path segments to the path definition * - * @property {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @property {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @property {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @property {object} definitionFullyResolved - The path definition with all of its resolvable references resolved @@ -2079,8 +2080,8 @@ var supportedHttpMethods = require('swagger-methods'); * * @memberof module:sway */ -function Path(api, path, definition, definitionFullyResolved, pathToDefinition) { - var basePathPrefix = api.definitionFullyResolved.basePath || '/'; +function Path(apiDefinition, path, definition, definitionFullyResolved, pathToDefinition) { + var basePathPrefix = apiDefinition.definitionFullyResolved.basePath || '/'; var that = this; var sanitizedPath; @@ -2091,7 +2092,7 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) basePathPrefix = basePathPrefix.substring(0, basePathPrefix.length - 1); } - // Converts Swagger parameters to Express-style parameters, and also escapes all path-to-regexp special characters + // Converts OpenAPI parameters to Express-style parameters, and also escapes all path-to-regexp special characters // // @see: https://github.com/pillarjs/path-to-regexp/issues/76#issuecomment-219085357 sanitizedPath = basePathPrefix + path.replace('(', '\\(') // path-to-regexp @@ -2100,11 +2101,11 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) .replace('*', '\\*') // path-to-regexp .replace('+', '\\+') // path-to-regexp .replace('?', '\\?') // path-to-regexp - .replace(/\{/g, ':') // Swagger -> Express-style - .replace(/\}/g, ''); // Swagger -> Express-style + .replace(/\{/g, ':') // OpenAPI -> Express-style + .replace(/\}/g, ''); // OpenAPI -> Express-style // Assign local properties - this.api = api; + this.apiDefinition = apiDefinition; this.definition = definition; this.definitionFullyResolved = definitionFullyResolved; this.path = path; @@ -2112,17 +2113,17 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.regexp = pathToRegexp(sanitizedPath, { sensitive: true }); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Path Object definition _.assign(this, definitionFullyResolved); - this._debug = this.api._debug; + this._debug = this.apiDefinition._debug; this._debug(' %s', this.path); this.parameterObjects = _.map(definitionFullyResolved.parameters, function (paramDef, index) { var pPath = pathToDefinition.concat(['parameters', index.toString()]); - return new Parameter(that, _.get(api.definitionRemotesResolved, pPath), paramDef, pPath); + return new Parameter(that, _.get(apiDefinition.definitionRemotesResolved, pPath), paramDef, pPath); }); this._debug(' Operations:'); @@ -2131,7 +2132,7 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) var oPath = pathToDefinition.concat(method); if (supportedHttpMethods.indexOf(method) > -1) { - operations.push(new Operation(that, method, _.get(api.definitionRemotesResolved, oPath), operationDef, oPath)); + operations.push(new Operation(that, method, _.get(apiDefinition.definitionRemotesResolved, oPath), operationDef, oPath)); } return operations; @@ -2219,12 +2220,12 @@ var JsonRefs = require('json-refs'); var YAML = require('js-yaml'); /** - * The Swagger Response object. + * The OpenAPI Response object. * * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Response Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject). * * @param {module:sway.Operation} operationObject - The `Operation` object * @param {string} statusCode - The status code @@ -2254,10 +2255,10 @@ function Response(operationObject, statusCode, definition, definitionFullyResolv this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.statusCode = statusCode; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Response Object definition _.assign(this, definitionFullyResolved); - this.operationObject.pathObject.api._debug(' %s at %s', statusCode, this.ptr); + this.operationObject.pathObject.apiDefinition._debug(' %s at %s', statusCode, this.ptr); } /** @@ -2633,14 +2634,14 @@ function walkSchema(api, blacklist, schema, path, handlers, response) { } /** - * Validates the resolved Swagger document against the Swagger 2.0 JSON Schema. + * Validates the resolved OpenAPI Definition against the OpenAPI 3.x JSON Schema. * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateStructure(api) { - var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), swaggerSchema, api.definitionFullyResolved); +function validateStructure(apiDefinition) { + var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), swaggerSchema, apiDefinition.definitionFullyResolved); // Make complex JSON Schema validation errors easier to understand (Issue 15) results.errors = results.errors.map(function (error) { @@ -2669,7 +2670,7 @@ function validateStructure(api) { }); // Treat invalid/missing references as structural errors - _.each(api.references, function (refDetails, refPtr) { + _.each(apiDefinition.references, function (refDetails, refPtr) { var refPath = JsonRefs.pathFromPtr(refPtr); var err; @@ -2753,11 +2754,11 @@ function validateSchemaProperties(api, response, schema, path) { * * Identifies unreferenced referenceable definitions * * Identifies unresolvable references * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateReferences(api) { +function validateReferences(apiDefinition) { var docReferences = {}; var inheritanceDetails = {}; var referenceable = []; @@ -2844,19 +2845,19 @@ function validateReferences(api) { } // Identify referenceable definitions - _.forEach(api.definitionFullyResolved.definitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['definitions', name])); }); - _.forEach(api.definitionFullyResolved.parameters, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.parameters, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['parameters', name])); }); - _.forEach(api.definitionFullyResolved.responses, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.responses, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['responses', name])); }); - _.forEach(api.definitionFullyResolved.securityDefinitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.securityDefinitions, function (def, name) { var sPath = ['securityDefinitions', name]; referenceable.push(JsonRefs.pathToPtr(sPath)); @@ -2871,7 +2872,7 @@ function validateReferences(api) { }); // Identify references and build inheritance model - _.forEach(api.references, function (metadata, ptr) { + _.forEach(apiDefinition.references, function (metadata, ptr) { var ptrPath = JsonRefs.pathFromPtr(ptr); if (!_.has(metadata, 'missing')) { @@ -2925,9 +2926,9 @@ function validateReferences(api) { }); // Identify references and validate missing references for non-JSON References (security) - _.forEach(api.definitionFullyResolved.security, createSecurityProcessor(['security'])); + _.forEach(apiDefinition.definitionFullyResolved.security, createSecurityProcessor(['security'])); - _.forEach(api.definitionFullyResolved.paths, function (pathDef, name) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, name) { var pPath = ['paths', name]; _.forEach(pathDef.security, createSecurityProcessor(pPath.concat('security'))); @@ -2962,13 +2963,13 @@ function validateReferences(api) { * (@see {@link https://github.com/swagger-api/swagger-spec/issues/174}) * * Validates that all default values are valid based on its respective schema * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateSchemaObjects(api) { +function validateSchemaObjects(apiDefinition) { // Build a blacklist to avoid cascading errors/warnings - var blacklist = _.reduce(api.references, function (list, metadata, ptr) { + var blacklist = _.reduce(apiDefinition.references, function (list, metadata, ptr) { var refPath = JsonRefs.pathFromPtr(ptr); list.push(JsonRefs.pathToPtr(refPath)); @@ -2996,7 +2997,7 @@ function validateSchemaObjects(api) { parameterDef = helpers.computeParameterSchema(parameterDef); } - walkSchema(api, blacklist, parameterDef, pPath, validators, response); + walkSchema(apiDefinition, blacklist, parameterDef, pPath, validators, response); }); } @@ -3005,28 +3006,28 @@ function validateSchemaObjects(api) { var rPath = path.concat(name); _.forEach(responseDef.headers, function (header, hName) { - walkSchema(api, blacklist, header, rPath.concat(['headers', hName]), validators, response); + walkSchema(apiDefinition, blacklist, header, rPath.concat(['headers', hName]), validators, response); }); if (!_.isUndefined(responseDef.schema)) { - walkSchema(api, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); + walkSchema(apiDefinition, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); } }); } // Validate definitions - _.forEach(api.definitionFullyResolved.definitions, function (definitionDef, name) { - walkSchema(api, blacklist, definitionDef, ['definitions', name], validators, response); + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (definitionDef, name) { + walkSchema(apiDefinition, blacklist, definitionDef, ['definitions', name], validators, response); }); // Validate global parameter definitions - validateParameters(api.definitionFullyResolved.parameters, ['parameters']); + validateParameters(apiDefinition.definitionFullyResolved.parameters, ['parameters']); // Validate global response definitions - validateResponses(api.definitionFullyResolved.responses, ['responses']); + validateResponses(apiDefinition.definitionFullyResolved.responses, ['responses']); // Validate paths and operations - _.forEach(api.definitionFullyResolved.paths, function (pathDef, path) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, path) { var pPath = ['paths', path]; // Validate path-level parameter definitions @@ -3063,11 +3064,11 @@ function validateSchemaObjects(api) { * * Ensure that all operation ids are unique * * Ensure that path parameters have a name * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validatePathsAndOperations(api) { +function validatePathsAndOperations(apiDefinition) { var response = { errors: [], warnings: [] @@ -3090,7 +3091,7 @@ function validatePathsAndOperations(api) { return seenParameters; } - _.reduce(api.definitionFullyResolved.paths, function (metadata, pathDef, path) { + _.reduce(apiDefinition.definitionFullyResolved.paths, function (metadata, pathDef, path) { var declaredPathParameters = []; var normalizedPath = path; var pPath = ['paths', path]; @@ -3123,7 +3124,7 @@ function validatePathsAndOperations(api) { metadata.paths.push(normalizedPath); } - // Identify duplicate path-level parameters (We do this manually since SwaggerApi#getOperation consolidates them) + // Identify duplicate path-level parameters (We do this manually since ApiDefinition#getOperation consolidates them) _.reduce(pathDef.parameters, function (seenParameters, parameter, index) { return validateDuplicateParameter(seenParameters, parameter, pPath.concat(['parameters', index.toString()])); }, []); @@ -3158,8 +3159,8 @@ function validatePathsAndOperations(api) { return validateDuplicateParameter(seenParameters, parameter, oPath.concat(['parameters', index.toString()])); }, []); - // Use SwaggerApi#getOperation to avoid having to consolidate parameters - parameters = api.getOperation(path, method).getParameters(); + // Use ApiDefinition#getOperation to avoid having to consolidate parameters + parameters = apiDefinition.getOperation(path, method).getParameters(); pathMetadata = _.reduce(parameters, function (pMetadata, parameter) { // Record path parameters @@ -83852,4 +83853,4 @@ module.exports={ },{}]},{},[1])(1) }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9oZWxwZXJzLmpzIiwibGliL3R5cGVzL2FwaS5qcyIsImxpYi90eXBlcy9vcGVyYXRpb24uanMiLCJsaWIvdHlwZXMvcGFyYW1ldGVyLXZhbHVlLmpzIiwibGliL3R5cGVzL3BhcmFtZXRlci5qcyIsImxpYi90eXBlcy9wYXRoLmpzIiwibGliL3R5cGVzL3Jlc3BvbnNlLmpzIiwibGliL3ZhbGlkYXRpb24vZm9ybWF0LWdlbmVyYXRvcnMuanMiLCJsaWIvdmFsaWRhdGlvbi9mb3JtYXQtdmFsaWRhdG9ycy5qcyIsImxpYi92YWxpZGF0aW9uL3ZhbGlkYXRvcnMuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L2Fzc2VydC5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Fzc2VydC9ub2RlX21vZHVsZXMvdXRpbC91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyLXJlc29sdmUvZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9saWIvX2VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3B1bnljb2RlL3B1bnljb2RlLmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWlsdGluLXN0YXR1cy1jb2Rlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NhbGwtbWUtbWF5YmUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29tcG9uZW50LWVtaXR0ZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9kZWVwLWV4dGVuZC9saWIvZGVlcC1leHRlbmQuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2Nsb25lLW9iai5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9maW5kLXJlZmVyZW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL25vcm1hbGl6ZS1zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvcmVzb2x2ZS1zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvZHJhbmdlL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9hc3QuanMiLCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIvY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9rZXl3b3JkLmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2FkZHJlc3MuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2NvbW1lcmNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9jb21wYW55LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9kYXRhYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZmFrZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZmluYW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaGFja2VyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pYmFuLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pbWFnZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2ludGVybmV0LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvYnVpbGRpbmdfbnVtYmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL2NpdHlfcHJlZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eV9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY291bnRyeV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY291bnR5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvZGVmYXVsdF9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9wb3N0Y29kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3Bvc3Rjb2RlX2J5X3N0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc2Vjb25kYXJ5X2FkZHJlc3MuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0YXRlX2FiYnIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdHJlZXRfYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0cmVldF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RyZWV0X3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3RpbWVfem9uZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvYXV0aG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF9leHBpcnlfZGF0ZXMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYnVzaW5lc3MvY3JlZGl0X2NhcmRfbnVtYmVycy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF90eXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jZWxsX3Bob25lL2Zvcm1hdHMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY2VsbF9waG9uZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21tZXJjZS9jb2xvci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21tZXJjZS9kZXBhcnRtZW50LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL3Byb2R1Y3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2FkamVjdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX2FkamVjdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX25vdW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9ic192ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvZGVzY3JpcHRvci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L25vdW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvYW1lcmljYW5fZXhwcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9kaW5lcnNfY2x1Yi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9kaXNjb3Zlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9qY2IuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvbGFzZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvbWFlc3Ryby5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9tYXN0ZXJjYXJkLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL3NvbG8uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvc3dpdGNoLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL3Zpc2EuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvY29sbGF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGFiYXNlL2NvbHVtbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9lbmdpbmUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGUvbW9udGguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0ZS93ZWVrZGF5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvYWNjb3VudF90eXBlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvY3VycmVuY3kuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9maW5hbmNlL3RyYW5zYWN0aW9uX3R5cGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaGFja2VyL2FiYnJldmlhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvaW5ndmVyYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvdmVyYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9hdmF0YXJfdXJpLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2RvbWFpbl9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvZXhhbXBsZV9lbWFpbC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9mcmVlX2VtYWlsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL3N1cHBsZW1lbnRhbC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9sb3JlbS93b3Jkcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2ZpcnN0X25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2xhc3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9wcmVmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS90aXRsZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9waG9uZV9udW1iZXIvZm9ybWF0cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9waG9uZV9udW1iZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vc3lzdGVtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3N5c3RlbS9taW1lVHlwZXMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vdGVhbS9jcmVhdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi90ZWFtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3RlYW0vbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9hZGRyZXNzL2RlZmF1bHRfY291bnRyeS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9hZGRyZXNzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvcG9zdGNvZGVfYnlfc3RhdGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvaW50ZXJuZXQvZG9tYWluX3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbnRlcm5ldC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9waG9uZV9udW1iZXIvYXJlYV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9leGNoYW5nZV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9yZW0uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL3Bob25lX251bWJlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvcmFuZG9tLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9zeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbG9jYWxlL2VuX1VTLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL3ZlbmRvci9tZXJzZW5uZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci92ZW5kb3IvdXNlci1hZ2VudC5qcyIsIm5vZGVfbW9kdWxlcy9mb3JtYXQtdXRpbC9mb3JtYXQuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9jb21wb25lbnRzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZGZzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZGlqa3N0cmEtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZGlqa3N0cmEuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9maW5kLWN5Y2xlcy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2Zsb3lkLXdhcnNoYWxsLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9pcy1hY3ljbGljLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvcG9zdG9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvcHJlb3JkZXIuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wcmltLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvdGFyamFuLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvdG9wc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvZGF0YS9wcmlvcml0eS1xdWV1ZS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvZ3JhcGguanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9qc29uLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9sb2Rhc2guanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL3ZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvaHR0cHMtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzLWJhc2U2NC9iYXNlNjQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvZHVtcGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvZXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbG9hZGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbWFyay5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9jb3JlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZmFpbHNhZmUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2JpbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvYm9vbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvZmxvYXQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2ludC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3JlZ2V4cC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9tYXAuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL21lcmdlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9udWxsLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9vbWFwLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9wYWlycy5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvc2VxLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3N0ci5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvdGltZXN0YW1wLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tcmVmcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1mYWtlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvYnVuZGxlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL2RlcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL25vcm1hbGl6ZS1hcmdzLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2UuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy9iaW5hcnkuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy9qc29uLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3BhcnNlcnMvdGV4dC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL3lhbWwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcG9pbnRlci5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZWYuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVmcy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZXNvbHZlLWV4dGVybmFsLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmVycy9maWxlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmVycy9odHRwLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwvZGVidWcuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC9wbHVnaW5zLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwvdXJsLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwveWFtbC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9nZW5lcmF0ZWQvYWVzcHJpbS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2dlbmVyYXRlZC9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2RpY3QuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2dyYW1tYXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2hhbmRsZXJzLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvcGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9zbGljZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2guZ2V0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC5pc2VxdWFsL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9sb2Rhc2guanMiLCJub2RlX21vZHVsZXMvbXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbmF0aXZlLXByb21pc2Utb25seS9saWIvbnBvLnNyYy5qcyIsIm5vZGVfbW9kdWxlcy9vbm8vbGliL29uby5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGF0aC1sb2FkZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGF0aC1sb2FkZXIvbGliL2xvYWRlcnMvZmlsZS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtbG9hZGVyL2xpYi9sb2FkZXJzL2h0dHAuanMiLCJub2RlX21vZHVsZXMvcGF0aC10by1yZWdleHAvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGF0aC10by1yZWdleHAvbm9kZV9tb2R1bGVzL2lzYXJyYXkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5nLWVzMy9kZWNvZGUuanMiLCJub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2VuY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmFuZGV4cC9saWIvcmFuZGV4cC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fd3JpdGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JldC9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi9wb3NpdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi9zZXRzLmpzIiwibm9kZV9tb2R1bGVzL3JldC9saWIvdHlwZXMuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3NsYXNoL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9lc2NvZGVnZW4vZXNjb2RlZ2VuLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9lc2NvZGVnZW4vcGFja2FnZS5qc29uIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9lc3RyYXZlcnNlL2VzdHJhdmVyc2UuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzdHJhdmVyc2UvcGFja2FnZS5qc29uIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9hcnJheS1zZXQuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2Jhc2U2NC12bHEuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2Jhc2U2NC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvbWFwcGluZy1saXN0LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9xdWljay1zb3J0LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvc291cmNlLW5vZGUuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvc291cmNlLW1hcC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9saWIvY2FwYWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9saWIvcmVxdWVzdC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9saWIvcmVzcG9uc2UuanMiLCJub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL2FnZW50LWJhc2UuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvY2xpZW50LmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL2lzLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9yZXF1ZXN0LWJhc2UuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvcmVzcG9uc2UtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9zd2FnZ2VyLW1ldGhvZHMvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N3YWdnZXItc2NoZW1hLW9mZmljaWFsL3NjaGVtYS5qc29uIiwibm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanMiLCJub2RlX21vZHVsZXMvdG8tYXJyYXlidWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuanMiLCJub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpzIiwibm9kZV9tb2R1bGVzL3VyaS1qcy9kaXN0L2VzNS91cmkuYWxsLmpzIiwibm9kZV9tb2R1bGVzL3VybC91cmwuanMiLCJub2RlX21vZHVsZXMvdXJsL3V0aWwuanMiLCJub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9hbHBoYS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2JsYWNrbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2NvbnRhaW5zLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvZXF1YWxzLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvZXNjYXBlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBZnRlci5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQWxwaGEuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0FscGhhbnVtZXJpYy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQXNjaWkuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Jhc2U2NC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQmVmb3JlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNCb29sZWFuLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNCeXRlTGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNDcmVkaXRDYXJkLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNDdXJyZW5jeS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRGF0YVVSSS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRGVjaW1hbC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRGl2aXNpYmxlQnkuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0VtYWlsLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNFbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRlFETi5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRmxvYXQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Z1bGxXaWR0aC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSGFsZldpZHRoLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNIYXNoLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNIZXhDb2xvci5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSGV4YWRlY2ltYWwuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lQLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJUFJhbmdlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU0JOLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU0lOLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU08zMTY2MUFscGhhMi5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPMzE2NjFBbHBoYTMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTTzg2MDEuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTUkMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTU04uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0luLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJbnQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0pTT04uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0pXVC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTGF0TG9uZy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNMb3dlcmNhc2UuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc01BQ0FkZHJlc3MuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc01ENS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTWFnbmV0VVJJLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNaW1lVHlwZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTW9iaWxlUGhvbmUuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc01vbmdvSWQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc011bHRpYnl0ZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTnVtZXJpYy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzUG9ydC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzUG9zdGFsQ29kZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzUkZDMzMzOS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzU3Vycm9nYXRlUGFpci5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzVVJMLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNVVUlELmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNVcHBlcmNhc2UuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1ZhcmlhYmxlV2lkdGguanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1doaXRlbGlzdGVkLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvbHRyaW0uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9tYXRjaGVzLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvbm9ybWFsaXplRW1haWwuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9ydHJpbS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3N0cmlwTG93LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9Cb29sZWFuLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9EYXRlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9GbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3RvSW50LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdHJpbS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3VuZXNjYXBlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdXRpbC9hc3NlcnRTdHJpbmcuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi91dGlsL2luY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdXRpbC9tZXJnZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvdG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi93aGl0ZWxpc3QuanMiLCJub2RlX21vZHVsZXMveHRlbmQvaW1tdXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9FcnJvcnMuanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL0Zvcm1hdFZhbGlkYXRvcnMuanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL0pzb25WYWxpZGF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9Qb2x5ZmlsbHMuanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL1JlcG9ydC5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvU2NoZW1hQ2FjaGUuanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL1NjaGVtYUNvbXBpbGF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9TY2hlbWFWYWxpZGF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9VdGlscy5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvWlNjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvc2NoZW1hcy9oeXBlci1zY2hlbWEuanNvbiIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvc2NoZW1hcy9zY2hlbWEuanNvbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7O0FBRUEsSUFBSSxJQUFJLFFBQVEsUUFBUixDQUFSO0FBQ0EsSUFBSSxVQUFVLFFBQVEsZUFBUixDQUFkO0FBQ0EsSUFBSSxXQUFXLFFBQVEsV0FBUixDQUFmO0FBQ0EsSUFBSSxhQUFhLFFBQVEsaUJBQVIsQ0FBakI7QUFDQSxJQUFJLE9BQU8sUUFBUSxTQUFSLENBQVg7O0FBRUE7QUFDQTtBQUNBLElBQUksT0FBTyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2xDLFVBQVEscUJBQVI7QUFDRDs7QUFFRDs7Ozs7O0FBTUE7Ozs7Ozs7Ozs7Ozs7OztBQWVBLE9BQU8sT0FBUCxDQUFlLE1BQWYsR0FBd0IsVUFBVSxPQUFWLEVBQW1CO0FBQ3pDLE1BQUksV0FBVyxRQUFRLE9BQVIsRUFBZjtBQUNBLE1BQUksUUFBSjs7QUFFQTtBQUNBLGFBQVcsU0FBUyxJQUFULENBQWMsWUFBWTtBQUNuQyxXQUFPLElBQUksT0FBSixDQUFZLFVBQVUsT0FBVixFQUFtQjtBQUNwQyxVQUFJLEVBQUUsV0FBRixDQUFj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RUFBRyxFQUFILENBQTVFLEVBQTdFLEVBQWlLLEVBQUMsR0FBRSxDQUFDLENBQUQsRUFBRyxDQUFILENBQUgsRUFBUyxHQUFFLEVBQVgsRUFBYyxHQUFFLEVBQWhCLEVBQW1CLEdBQUUsRUFBckIsRUFBd0IsR0FBRSxFQUExQixFQUE2QixJQUFHLEVBQWhDLEVBQW1DLElBQUcsRUFBdEMsRUFBeUMsSUFBRyxDQUFDLENBQUQsRUFBRyxFQUFILENBQTVDLEVBQW1ELElBQUcsQ0FBQyxDQUFELEVBQUcsRUFBSCxDQUF0RCxFQUE2RCxJQUFHLEVBQWhFLEVBQW1FLElBQUcsRUFBdEUsRUFBeUUsSUFBRyxDQUFDLENBQUQsRUFBRyxFQUFILENBQTVFLEVBQWpLLEVBQXFQLEVBQUMsR0FBRSxDQUFDLENBQUQsRUFBRyxFQUFILENBQUgsRUFBVSxJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBYixFQUFvQixJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBdkIsRUFBOEIsSUFBRyxDQUFDLENBQUQsRUFBRyxFQUFILENBQWpDLEVBQXJQLEVBQThSLEVBQUMsR0FBRSxDQUFDLENBQUQsRUFBRyxFQUFILENBQUgsRUFBVSxJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBYixFQUFvQixJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBdkIsRUFBOEIsSUFBRyxDQUFDLENBQUQsRUFBRyxFQUFILENBQWpDLEVBQTlSLEVBQXVVLEVBQUMsR0FBRSxDQUFDLENBQUQsRUFBRyxFQUFILENBQUgsRUFBVSxJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBYixFQUFvQixJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBdkIsRUFBOEIsSUFBRyxDQUFDLENBQUQsRUFBRyxFQUFILENBQWpDLEVBQXZVLEVBQWdYLEVBQUMsR0FBRSxDQUFDLENBQUQsRUFBRyxFQUFILENBQUgsRUFBVSxJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBYixFQUFvQixJQUFHLENBQUMsQ0FBRCxFQUFHLEVBQUgsQ0FBdkIsRUFBOEIs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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RqREEsSUFBSSxXQUFXLFFBQVEsb0JBQVIsRUFBOEIsUUFBN0M7QUFDQSxJQUFJLFFBQVEsU0FBUyxTQUFULENBQW1CLEtBQS9CO0FBQ0EsSUFBSSxRQUFRLE1BQU0sU0FBTixDQUFnQixLQUE1QjtBQUNBLElBQUksZUFBZSxFQUFuQjtBQUNBLElBQUksa0JBQWtCLENBQXRCOztBQUVBOztBQUVBLFFBQVEsVUFBUixHQUFxQixZQUFXO0FBQzlCLFNBQU8sSUFBSSxPQUFKLENBQVksTUFBTSxJQUFOLENBQVcsVUFBWCxFQUF1QixNQUF2QixFQUErQixTQUEvQixDQUFaLEVBQXVELFlBQXZELENBQVA7QUFDRCxDQUZEO0FBR0EsUUFBUSxXQUFSLEdBQXNCLFlBQVc7QUFDL0IsU0FBTyxJQUFJLE9BQUosQ0FBWSxNQUFNLElBQU4sQ0FBVyxXQUFYLEVBQXdCLE1BQXhCLEVBQWdDLFNBQWhDLENBQVosRUFBd0QsYUFBeEQsQ0FBUDtBQUNELENBRkQ7QUFHQSxRQUFRLFlBQVIsR0FDQSxRQUFRLGFBQVIsR0FBd0IsVUFBUyxPQUFULEVBQWtCO0FBQUUsVUFBUSxLQUFSO0FBQWtCLENBRDlEOztBQUdBLFNBQVMsT0FBVCxDQUFpQixFQUFqQixFQUFxQixPQUFyQixFQUE4QjtBQUM1QixPQUFLLEdBQUwsR0FBVyxFQUFYO0FBQ0EsT0FBSyxRQUFMLEdBQWdCLE9BQWhCO0FBQ0Q7QUFDRCxRQUFRLFNBQVIsQ0FBa0IsS0FBbEIsR0FBMEIsUUFBUSxTQUFSLENBQWtCLEdBQWxCLEdBQXdCLFlBQVcsQ0FBRSxDQUEvRDtBQUNBLFFBQVEsU0FBUixDQUFrQixLQUFsQixHQUEwQixZQUFXO0FBQ25DLE9BQUssUUFBTCxDQUFjLElBQWQsQ0FBbUIsTUFBbkIsRUFBMkIsS0FBSyxHQUFoQztBQUNELENBRkQ7O0FBSUE7QUFDQSxRQUFRLE1BQVIsR0FBaUIsVUFBUyxJQUFULEVBQWUsS0FBZixFQUFzQjtBQUNyQyxlQUFhLEtBQUssY0FBbEI7QUFDQSxPQUFLLFlBQUwsR0FBb0IsS0FBcEI7QUFDRCxDQUhEOztBQUtBLFFBQVEsUUFBUixHQUFtQixVQUFTLElBQVQsRUFBZTtBQUNoQyxlQUFhLEtBQUssY0FBbEI7QUFDQSxPQUFLLFlBQUwsR0FBb0IsQ0FBQyxDQUFyQjtBQUNELENBSEQ7O0FBS0EsUUFBUSxZQUFSLEdBQXVCLFFBQVEsTUFBUixHQUFpQixVQUFTLElBQVQsRUFBZTtBQUNyRCxlQUFhLEtBQUssY0FBbEI7O0FBRUEsTUFBSSxRQUFRLEtBQUssWUFBakI7QUFDQSxNQUFJLFNBQVMsQ0FBYixFQUFnQjtBQUNkLFNBQUssY0FBTCxHQUFzQixXQUFXLFNBQVMsU0FBVCxHQUFxQjtBQUNwRCxVQUFJLEtBQUssVUFBVCxFQUNFLEtBQUssVUFBTDtBQUNILEtBSHFCLEVBR25CLEtBSG1CLENBQXRCO0FBSUQ7QUFDRixDQVZEOztBQVlBO0FBQ0EsUUFBUSxZQUFSLEdBQXVCLE9BQU8sWUFBUCxLQUF3QixVQUF4QixHQUFxQyxZQUFyQyxHQUFvRCxVQUFTLEVBQVQsRUFBYTtBQUN0RixNQUFJLEtBQUssaUJBQVQ7QUFDQSxNQUFJLE9BQU8sVUFBVSxNQUFWLEdBQW1CLENBQW5CLEdBQXVCLEtBQXZCLEdBQStCLE1BQU0sSUFBTixDQUFXLFNBQVgsRUFBc0IsQ0FBdEIsQ0FBMUM7O0FBRUEsZUFBYSxFQUFiLElBQW1CLElBQW5COztBQUVBLFdBQVMsU0FBUyxVQUFULEdBQXNCO0FBQzdCLFFBQUksYUFBYSxFQUFiLENBQUosRUFBc0I7QUFDcEI7QUFDQTtBQUNBLFVBQUksSUFBSixFQUFVO0FBQ1IsV0FBRyxLQUFILENBQVMsSUFBVCxFQUFlLElBQWY7QUFDRCxPQUZELE1BRU87QUFDTCxXQUFHLElBQUgsQ0FBUSxJQUFSO0FBQ0Q7QUFDRDtBQUNBLGNBQVEsY0FBUixDQUF1QixFQUF2QjtBQUNEO0FBQ0YsR0FaRDs7QUFjQSxTQUFPLEVBQVA7QUFDRCxDQXJCRDs7QUF1QkEsUUFBUSxjQUFSLEdBQXlCLE9BQU8sY0FBUCxLQUEwQixVQUExQixHQUF1QyxjQUF2QyxHQUF3RCxVQUFTLEVBQVQsRUFBYTtBQUM1RixTQUFPLGFBQWEsRUFBYixDQUFQO0FBQ0QsQ0FGRDs7Ozs7OztBQ3pFQSxJQUFJLFNBQVMsUUFBUSxRQUFSLEVBQWtCLE1BQS9COztBQUVBLE9BQU8sT0FBUCxHQUFpQixVQUFVLEdBQVYsRUFBZTtBQUMvQjtBQUNBLEtBQUksZUFBZSxVQUFuQixFQUErQjtBQUM5QjtBQUNBLE1BQUksSUFBSSxVQUFKLEtBQW1CLENBQW5CLElBQXdCLElBQUksVUFBSixLQUFtQixJQUFJLE1BQUosQ0FBVyxVQUExRCxFQUFzRTtBQUNyRSxVQUFPLElBQUksTUFBWDtBQUNBLEdBRkQsTUFFTyxJQUFJLE9BQU8sSUFBSSxNQUFKLENBQVcsS0FBbEIsS0FBNEIsVUFBaEMsRUFBNEM7QUFDbEQ7QUFDQSxVQUFPLElBQUksTUFBSixDQUFXLEtBQVgsQ0FBaUIsSUFBSSxVQUFyQixFQUFpQyxJQUFJLFVBQUosR0FBaUIsSUFBSSxVQUF0RCxDQUFQO0FBQ0E7QUFDRDs7QUFFRCxLQUFJLE9BQU8sUUFBUCxDQUFnQixHQUFoQixDQUFKLEVBQTBCO0FBQ3pCO0FBQ0E7QUFDQSxNQUFJLFlBQVksSUFBSSxVQUFKLENBQWUsSUFBSSxNQUFuQixDQUFoQjtBQUNBLE1BQUksTUFBTSxJQUFJLE1BQWQ7QUFDQSxPQUFLLElBQUksSUFBSSxDQUFiLEVBQWdCLElBQUksR0FBcEIsRUFBeUIsR0FBekIsRUFBOEI7QUFDN0IsYUFBVSxDQUFWLElBQWUsSUFBSSxDQUFKLENBQWY7QUFDQTtBQUNELFNBQU8sVUFBVSxNQUFqQjtBQUNBLEVBVEQsTUFTTztBQUNOLFFBQU0sSUFBSSxLQUFKLENBQVUsMkJBQVYsQ0FBTjtBQUNBO0FBQ0QsQ0F4QkQ7Ozs7Ozs7O0FDRkE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQSxJQUFJLFNBQUo7QUFDQSxJQUFJLFFBQUo7QUFDQSxJQUFJLE1BQUo7QUFDQSxJQUFJLFVBQUo7QUFDQSxJQUFJLE9BQUo7QUFDQSxJQUFJLFVBQUo7QUFDQSxJQUFJLFNBQUo7QUFDQSxJQUFJLFdBQUo7QUFDQSxJQUFJLFlBQUo7QUFDQSxJQUFJLFFBQUo7QUFDQSxJQUFJLE1BQUo7QUFDQSxJQUFJLFFBQUo7QUFDQSxJQUFJLE1BQUo7QUFDQSxJQUFJLGdCQUFKO0FBQ0EsSUFBSSxnQkFBSjtBQUNBLElBQUksYUFBSjtBQUNBLElBQUksb0JBQUo7QUFDQSxJQUFJLFlBQUo7QUFDQSxJQUFJLGVBQUo7QUFDQSxDQUFDLFVBQVUsT0FBVixFQUFtQjtBQUNoQixRQUFJLE9BQU8sUUFBTyxNQUFQLHlDQUFPLE1BQVAsT0FBa0IsUUFBbEIsR0FBNkIsTUFBN0IsR0FBc0MsUUFBTyxJQUFQLHlDQUFPLElBQVAsT0FBZ0IsUUFBaEIsR0FBMkIsSUFBM0IsR0FBa0MsUUFBTyxJQUFQLE1BQWdCLFFBQWhCLEdBQTJCLElBQTNCLEdBQWtDLEVBQXJIO0FBQ0EsUUFBSSxPQUFPLE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0MsT0FBTyxHQUEzQyxFQUFnRDtBQUM1QyxlQUFPLE9BQVAsRUFBZ0IsQ0FBQyxTQUFELENBQWhCLEVBQTZCLFVBQVUsT0FBVixFQUFtQjtBQUFFLG9CQUFRLGVBQWUsSUFBZixFQUFxQixlQUFlLE9BQWYsQ0FBckIsQ0FBUjtBQUF5RCxTQUEzRztBQUNILEtBRkQsTUFHSyxJQUFJLFFBQU8sTUFBUCx5Q0FBTyxNQUFQLE9BQWtCLFFBQWxCLElBQThCLFFBQU8sT0FBTyxPQUFkLE1BQTBCLFFBQTVELEVBQXNFO0FBQ3ZFLGdCQUFRLGVBQWUsSUFBZixFQUFxQixlQUFlLE9BQU8sT0FBdEIsQ0FBckIsQ0FBUjtBQUNILEtBRkksTUFHQTtBQUNELGdCQUFRLGVBQWUsSUFBZixDQUFSO0FBQ0g7QUFDRCxhQUFTLGNBQVQsQ0FBd0IsT0FBeEIsRUFBaUMsUUFBakMsRUFBMkM7QUFDdkMsWUFBSSxZQUFZLElBQWhCLEVBQXNCO0FBQ2xCLGdCQUFJLE9BQU8sT0FBTyxNQUFkLEtBQXlCLFVBQTdCLEVBQXlDO0FBQ3JDLHVCQUFPLGNBQVAsQ0FBc0IsT0FBdEIsRUFBK0IsWUFBL0IsRUFBNkMsRUFBRSxPQUFPLElBQVQsRUFBN0M7QUFDSCxhQUZELE1BR0s7QUFDRCx3QkFBUSxVQUFSLEdBQXFCLElBQXJCO0FBQ0g7QUFDSjtBQUNELGVBQU8sVUFBVSxFQUFWLEVBQWMsQ0FBZCxFQUFpQjtBQUFFLG1CQUFPLFFBQVEsRUFBUixJQUFjLFdBQVcsU0FBUyxFQUFULEVBQWEsQ0FBYixDQUFYLEdBQTZCLENBQWxEO0FBQXNELFNBQWhGO0FBQ0g7QUFDSixDQXRCRCxFQXVCQyxVQUFVLFFBQVYsRUFBb0I7QUFDakIsUUFBSSxnQkFBZ0IsT0FBTyxjQUFQLElBQ2YsRUFBRSxXQUFXLEVBQWIsY0FBNkIsS0FBN0IsSUFBc0MsVUFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQjtBQUFFLFVBQUUsU0FBRixHQUFjLENBQWQ7QUFBa0IsS0FEM0QsSUFFaEIsVUFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQjtBQUFFLGFBQUssSUFBSSxDQUFULElBQWMsQ0FBZDtBQUFpQixnQkFBSSxFQUFFLGNBQUYsQ0FBaUIsQ0FBakIsQ0FBSixFQUF5QixFQUFFLENBQUYsSUFBTyxFQUFFLENBQUYsQ0FBUDtBQUExQztBQUF3RCxLQUY5RTs7QUFJQSxnQkFBWSxtQkFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQjtBQUN4QixzQkFBYyxDQUFkLEVBQWlCLENBQWpCO0FBQ0EsaUJBQVMsRUFBVCxHQUFjO0FBQUUsaUJBQUssV0FBTCxHQUFtQixDQUFuQjtBQUF1QjtBQUN2QyxVQUFFLFNBQUYsR0FBYyxNQUFNLElBQU4sR0FBYSxPQUFPLE1BQVAsQ0FBYyxDQUFkLENBQWIsSUFBaUMsR0FBRyxTQUFILEdBQWUsRUFBRSxTQUFqQixFQUE0QixJQUFJLEVBQUosRUFBN0QsQ0FBZDtBQUNILEtBSkQ7O0FBTUEsZUFBVyxPQUFPLE1BQVAsSUFBaUIsVUFBVSxDQUFWLEVBQWE7QUFDckMsYUFBSyxJQUFJLENBQUosRUFBTyxJQUFJLENBQVgsRUFBYyxJQUFJLFVBQVUsTUFBakMsRUFBeUMsSUFBSSxDQUE3QyxFQUFnRCxHQUFoRCxFQUFxRDtBQUNqRCxnQkFBSSxVQUFVLENBQVYsQ0FBSjtBQUNBLGlCQUFLLElBQUksQ0FBVCxJQUFjLENBQWQ7QUFBaUIsb0JBQUksT0FBTyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLElBQWhDLENBQXFDLENBQXJDLEVBQXdDLENBQXhDLENBQUosRUFBZ0QsRUFBRSxDQUFGLElBQU8sRUFBRSxDQUFGLENBQVA7QUFBakU7QUFDSDtBQUNELGVBQU8sQ0FBUDtBQUNILEtBTkQ7O0FBUUEsYUFBUyxnQkFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQjtBQUNyQixZQUFJLElBQUksRUFBUjtBQUNBLGFBQUssSUFBSSxDQUFULElBQWMsQ0FBZDtBQUFpQixnQkFBSSxPQUFPLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsSUFBaEMsQ0FBcUMsQ0FBckMsRUFBd0MsQ0FBeEMsS0FBOEMsRUFBRSxPQUFGLENBQVUsQ0FBVixJQUFlLENBQWpFLEVBQ2IsRUFBRSxDQUFGLElBQU8sRUFBRSxDQUFGLENBQVA7QUFESixTQUVBLElBQUksS0FBSyxJQUFMLElBQWEsT0FBTyxPQUFPLHFCQUFkLEtBQXdDLFVBQXpELEVBQ0ksS0FBSyxJQUFJLElBQUksQ0FBUixFQUFXLElBQUksT0FBTyxxQkFBUCxDQUE2QixDQUE3QixDQUFwQixFQUFxRCxJQUFJLEVBQUUsTUFBM0QsRUFBbUUsR0FBbkU7QUFBd0UsZ0JBQUksRUFBRSxPQUFGLENBQVUsRUFBRSxDQUFGLENBQVYsSUFBa0IsQ0FBdEIsRUFDcEUsRUFBRSxFQUFFLENBQUYsQ0FBRixJQUFVLEVBQUUsRUFBRSxDQUFGLENBQUYsQ0FBVjtBQURKLFNBRUosT0FBTyxDQUFQO0FBQ0gsS0FSRDs7QUFVQSxpQkFBYSxvQkFBVSxVQUFWLEVBQXNCLE1BQXRCLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDO0FBQ2xELFlBQUksSUFBSSxVQUFVLE1BQWxCO0FBQUEsWUFBMEIsSUFBSSxJQUFJLENBQUosR0FBUSxNQUFSLEdBQWlCLFNBQVMsSUFBVCxHQUFnQixPQUFPLE9BQU8sd0JBQVAsQ0FBZ0MsTUFBaEMsRUFBd0MsR0FBeEMsQ0FBdkIsR0FBc0UsSUFBckg7QUFBQSxZQUEySCxDQUEzSDtBQUNBLFlBQUksUUFBTyxPQUFQLHlDQUFPLE9BQVAsT0FBbUIsUUFBbkIsSUFBK0IsT0FBTyxRQUFRLFFBQWYsS0FBNEIsVUFBL0QsRUFBMkUsSUFBSSxRQUFRLFFBQVIsQ0FBaUIsVUFBakIsRUFBNkIsTUFBN0IsRUFBcUMsR0FBckMsRUFBMEMsSUFBMUMsQ0FBSixDQUEzRSxLQUNLLEtBQUssSUFBSSxJQUFJLFdBQVcsTUFBWCxHQUFvQixDQUFqQyxFQUFvQyxLQUFLLENBQXpDLEVBQTRDLEdBQTVDO0FBQWlELGdCQUFJLElBQUksV0FBVyxDQUFYLENBQVIsRUFBdUIsSUFBSSxDQUFDLElBQUksQ0FBSixHQUFRLEVBQUUsQ0FBRixDQUFSLEdBQWUsSUFBSSxDQUFKLEdBQVEsRUFBRSxNQUFGLEVBQVUsR0FBVixFQUFlLENBQWYsQ0FBUixHQUE0QixFQUFFLE1BQUYsRUFBVSxHQUFWLENBQTVDLEtBQStELENBQW5FO0FBQXhFLFNBQ0wsT0FBTyxJQUFJLENBQUosSUFBUyxDQUFULElBQWMsT0FBTyxjQUFQLENBQXNCLE1BQXRCLEVBQThCLEdBQTlCLEVBQW1DLENBQW5DLENBQWQsRUFBcUQsQ0FBNUQ7QUFDSCxLQUxEOztBQU9BLGNBQVUsaUJBQVUsVUFBVixFQUFzQixTQUF0QixFQUFpQztBQUN2QyxlQUFPLFVBQVUsTUFBVixFQUFrQixHQUFsQixFQUF1QjtBQUFFLHNCQUFVLE1BQVYsRUFBa0IsR0FBbEIsRUFBdUIsVUFBdkI7QUFBcUMsU0FBckU7QUFDSCxLQUZEOztBQUlBLGlCQUFhLG9CQUFVLFdBQVYsRUFBdUIsYUFBdkIsRUFBc0M7QUFDL0MsWUFBSSxRQUFPLE9BQVAseUNBQU8sT0FBUCxPQUFtQixRQUFuQixJQUErQixPQUFPLFFBQVEsUUFBZixLQUE0QixVQUEvRCxFQUEyRSxPQUFPLFFBQVEsUUFBUixDQUFpQixXQUFqQixFQUE4QixhQUE5QixDQUFQO0FBQzlFLEtBRkQ7O0FBSUEsZ0JBQVksbUJBQVUsT0FBVixFQUFtQixVQUFuQixFQUErQixDQUEvQixFQUFrQyxTQUFsQyxFQUE2QztBQUNyRCxlQUFPLEtBQUssTUFBTSxJQUFJLE9BQVYsQ0FBTCxFQUF5QixVQUFVLE9BQVYsRUFBbUIsTUFBbkIsRUFBMkI7QUFDdkQscUJBQVMsU0FBVCxDQUFtQixLQUFuQixFQUEwQjtBQUFFLG9CQUFJO0FBQUUseUJBQUssVUFBVSxJQUFWLENBQWUsS0FBZixDQUFMO0FBQThCLGlCQUFwQyxDQUFxQyxPQUFPLENBQVAsRUFBVTtBQUFFLDJCQUFPLENBQVA7QUFBWTtBQUFFO0FBQzNGLHFCQUFTLFFBQVQsQ0FBa0IsS0FBbEIsRUFBeUI7QUFBRSxvQkFBSTtBQUFFLHlCQUFLLFVBQVUsT0FBVixFQUFtQixLQUFuQixDQUFMO0FBQWtDLGlCQUF4QyxDQUF5QyxPQUFPLENBQVAsRUFBVTtBQUFFLDJCQUFPLENBQVA7QUFBWTtBQUFFO0FBQzlGLHFCQUFTLElBQVQsQ0FBYyxNQUFkLEVBQXNCO0FBQUUsdUJBQU8sSUFBUCxHQUFjLFFBQVEsT0FBTyxLQUFmLENBQWQsR0FBc0MsSUFBSSxDQUFKLENBQU0sVUFBVSxPQUFWLEVBQW1CO0FBQUUsNEJBQVEsT0FBTyxLQUFmO0FBQXdCLGlCQUFuRCxFQUFxRCxJQUFyRCxDQUEwRCxTQUExRCxFQUFxRSxRQUFyRSxDQUF0QztBQUF1SDtBQUMvSSxpQkFBSyxDQUFDLFlBQVksVUFBVSxLQUFWLENBQWdCLE9BQWhCLEVBQXlCLGNBQWMsRUFBdkMsQ0FBYixFQUF5RCxJQUF6RCxFQUFMO0FBQ0gsU0FMTSxDQUFQO0FBTUgsS0FQRDs7QUFTQSxrQkFBYyxxQkFBVSxPQUFWLEVBQW1CLElBQW5CLEVBQXlCO0FBQ25DLFlBQUksSUFBSSxFQUFFLE9BQU8sQ0FBVCxFQUFZLE1BQU0sZ0JBQVc7QUFBRSxvQkFBSSxFQUFFLENBQUYsSUFBTyxDQUFYLEVBQWMsTUFBTSxFQUFFLENBQUYsQ0FBTixDQUFZLE9BQU8sRUFBRSxDQUFGLENBQVA7QUFBYyxhQUF2RSxFQUF5RSxNQUFNLEVBQS9FLEVBQW1GLEtBQUssRUFBeEYsRUFBUjtBQUFBLFlBQXNHLENBQXRHO0FBQUEsWUFBeUcsQ0FBekc7QUFBQSxZQUE0RyxDQUE1RztBQUFBLFlBQStHLENBQS9HO0FBQ0EsZUFBTyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUwsQ0FBUixFQUFpQixTQUFTLEtBQUssQ0FBTCxDQUExQixFQUFtQyxVQUFVLEtBQUssQ0FBTCxDQUE3QyxFQUFKLEVBQTRELE9BQU8sTUFBUCxLQUFrQixVQUFsQixLQUFpQyxFQUFFLE9BQU8sUUFBVCxJQUFxQixZQUFXO0FBQUUsbUJBQU8sSUFBUDtBQUFjLFNBQWpGLENBQTVELEVBQWdKLENBQXZKO0FBQ0EsaUJBQVMsSUFBVCxDQUFjLENBQWQsRUFBaUI7QUFBRSxtQkFBTyxVQUFVLENBQVYsRUFBYTtBQUFFLHVCQUFPLEtBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFMLENBQVA7QUFBc0IsYUFBNUM7QUFBK0M7QUFDbEUsaUJBQVMsSUFBVCxDQUFjLEVBQWQsRUFBa0I7QUFDZCxnQkFBSSxDQUFKLEVBQU8sTUFBTSxJQUFJLFNBQUosQ0FBYyxpQ0FBZCxDQUFOO0FBQ1AsbUJBQU8sQ0FBUDtBQUFVLG9CQUFJO0FBQ1Ysd0JBQUksSUFBSSxDQUFKLEVBQU8sTUFBTSxJQUFJLEdBQUcsQ0FBSCxJQUFRLENBQVIsR0FBWSxFQUFFLFFBQUYsQ0FBWixHQUEwQixHQUFHLENBQUgsSUFBUSxFQUFFLE9BQUYsTUFBZSxDQUFDLElBQUksRUFBRSxRQUFGLENBQUwsS0FBcUIsRUFBRSxJQUFGLENBQU8sQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTRELEVBQUUsSUFBbEcsS0FBMkcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFGLENBQU8sQ0FBUCxFQUFVLEdBQUcsQ0FBSCxDQUFWLENBQUwsRUFBdUIsSUFBOUksRUFBb0osT0FBTyxDQUFQO0FBQ3BKLHdCQUFJLElBQUksQ0FBSixFQUFPLENBQVgsRUFBYyxLQUFLLENBQUMsR0FBRyxDQUFILElBQVEsQ0FBVCxFQUFZLEVBQUUsS0FBZCxDQUFMO0FBQ2QsNEJBQVEsR0FBRyxDQUFILENBQVI7QUFDSSw2QkFBSyxDQUFMLENBQVEsS0FBSyxDQUFMO0FBQVEsZ0NBQUksRUFBSixDQUFRO0FBQ3hCLDZCQUFLLENBQUw7QUFBUSw4QkFBRSxLQUFGLEdBQVcsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFILENBQVQsRUFBZ0IsTUFBTSxLQUF0QixFQUFQO0FBQ25CLDZCQUFLLENBQUw7QUFBUSw4QkFBRSxLQUFGLEdBQVcsSUFBSSxHQUFHLENBQUgsQ0FBSixDQUFXLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBVTtBQUN4Qyw2QkFBSyxDQUFMO0FBQVEsaUNBQUssRUFBRSxHQUFGLENBQU0sR0FBTixFQUFMLENBQWtCLEVBQUUsSUFBRixDQUFPLEdBQVAsR0FBYztBQUN4QztBQUNJLGdDQUFJLEVBQUUsSUFBSSxFQUFFLElBQU4sRUFBWSxJQUFJLEVBQUUsTUFBRixHQUFXLENBQVgsSUFBZ0IsRUFBRSxFQUFFLE1BQUYsR0FBVyxDQUFiLENBQWxDLE1BQXVELEdBQUcsQ0FBSCxNQUFVLENBQVYsSUFBZSxHQUFHLENBQUgsTUFBVSxDQUFoRixDQUFKLEVBQXdGO0FBQUUsb0NBQUksQ0FBSixDQUFPO0FBQVc7QUFDNUcsZ0NBQUksR0FBRyxDQUFILE1BQVUsQ0FBVixLQUFnQixDQUFDLENBQUQsSUFBTyxHQUFHLENBQUgsSUFBUSxFQUFFLENBQUYsQ0FBUixJQUFnQixHQUFHLENBQUgsSUFBUSxFQUFFLENBQUYsQ0FBL0MsQ0FBSixFQUEyRDtBQUFFLGtDQUFFLEtBQUYsR0FBVSxHQUFHLENBQUgsQ0FBVixDQUFpQjtBQUFRO0FBQ3RGLGdDQUFJLEdBQUcsQ0FBSCxNQUFVLENBQVYsSUFBZSxFQUFFLEtBQUYsR0FBVSxFQUFFLENBQUYsQ0FBN0IsRUFBbUM7QUFBRSxrQ0FBRSxLQUFGLEdBQVUsRUFBRSxDQUFGLENBQVYsQ0FBZ0IsSUFBSSxFQUFKLENBQVE7QUFBUTtBQUNyRSxnQ0FBSSxLQUFLLEVBQUUsS0FBRixHQUFVLEVBQUUsQ0FBRixDQUFuQixFQUF5QjtBQUFFLGtDQUFFLEtBQUYsR0FBVSxFQUFFLENBQUYsQ0FBVixDQUFnQixFQUFFLEdBQUYsQ0FBTSxJQUFOLENBQVcsRUFBWCxFQUFnQjtBQUFRO0FBQ25FLGdDQUFJLEVBQUUsQ0FBRixDQUFKLEVBQVUsRUFBRSxHQUFGLENBQU0sR0FBTjtBQUNWLDhCQUFFLElBQUYsQ0FBTyxHQUFQLEdBQWM7QUFYdEI7QUFhQSx5QkFBSyxLQUFLLElBQUwsQ0FBVSxPQUFWLEVBQW1CLENBQW5CLENBQUw7QUFDSCxpQkFqQlMsQ0FpQlIsT0FBTyxDQUFQLEVBQVU7QUFBRSx5QkFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUwsQ0FBYSxJQUFJLENBQUo7QUFBUSxpQkFqQnpCLFNBaUJrQztBQUFFLHdCQUFJLElBQUksQ0FBUjtBQUFZO0FBakIxRCxhQWtCQSxJQUFJLEdBQUcsQ0FBSCxJQUFRLENBQVosRUFBZSxNQUFNLEdBQUcsQ0FBSCxDQUFOLENBQWEsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFILElBQVEsR0FBRyxDQUFILENBQVIsR0FBZ0IsS0FBSyxDQUE5QixFQUFpQyxNQUFNLElBQXZDLEVBQVA7QUFDL0I7QUFDSixLQTFCRDs7QUE0QkEsbUJBQWUsc0JBQVUsQ0FBVixFQUFhLE9BQWIsRUFBc0I7QUFDakMsYUFBSyxJQUFJLENBQVQsSUFBYyxDQUFkO0FBQWlCLGdCQUFJLENBQUMsUUFBUSxjQUFSLENBQXVCLENBQXZCLENBQUwsRUFBZ0MsUUFBUSxDQUFSLElBQWEsRUFBRSxDQUFGLENBQWI7QUFBakQ7QUFDSCxLQUZEOztBQUlBLGVBQVcsa0JBQVUsQ0FBVixFQUFhO0FBQ3BCLFlBQUksSUFBSSxPQUFPLE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0MsRUFBRSxPQUFPLFFBQVQsQ0FBeEM7QUFBQSxZQUE0RCxJQUFJLENBQWhFO0FBQ0EsWUFBSSxDQUFKLEVBQU8sT0FBTyxFQUFFLElBQUYsQ0FBTyxDQUFQLENBQVA7QUFDUCxlQUFPO0FBQ0gsa0JBQU0sZ0JBQVk7QUFDZCxvQkFBSSxLQUFLLEtBQUssRUFBRSxNQUFoQixFQUF3QixJQUFJLEtBQUssQ0FBVDtBQUN4Qix1QkFBTyxFQUFFLE9BQU8sS0FBSyxFQUFFLEdBQUYsQ0FBZCxFQUFzQixNQUFNLENBQUMsQ0FBN0IsRUFBUDtBQUNIO0FBSkUsU0FBUDtBQU1ILEtBVEQ7O0FBV0EsYUFBUyxnQkFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQjtBQUNyQixZQUFJLElBQUksT0FBTyxNQUFQLEtBQWtCLFVBQWxCLElBQWdDLEVBQUUsT0FBTyxRQUFULENBQXhDO0FBQ0EsWUFBSSxDQUFDLENBQUwsRUFBUSxPQUFPLENBQVA7QUFDUixZQUFJLElBQUksRUFBRSxJQUFGLENBQU8sQ0FBUCxDQUFSO0FBQUEsWUFBbUIsQ0FBbkI7QUFBQSxZQUFzQixLQUFLLEVBQTNCO0FBQUEsWUFBK0IsQ0FBL0I7QUFDQSxZQUFJO0FBQ0EsbUJBQU8sQ0FBQyxNQUFNLEtBQUssQ0FBWCxJQUFnQixNQUFNLENBQXZCLEtBQTZCLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBRixFQUFMLEVBQWUsSUFBcEQ7QUFBMEQsbUJBQUcsSUFBSCxDQUFRLEVBQUUsS0FBVjtBQUExRDtBQUNILFNBRkQsQ0FHQSxPQUFPLEtBQVAsRUFBYztBQUFFLGdCQUFJLEVBQUUsT0FBTyxLQUFULEVBQUo7QUFBdUIsU0FIdkMsU0FJUTtBQUNKLGdCQUFJO0FBQ0Esb0JBQUksS0FBSyxDQUFDLEVBQUUsSUFBUixLQUFpQixJQUFJLEVBQUUsUUFBRixDQUFyQixDQUFKLEVBQXVDLEVBQUUsSUFBRixDQUFPLENBQVA7QUFDMUMsYUFGRCxTQUdRO0FBQUUsb0JBQUksQ0FBSixFQUFPLE1BQU0sRUFBRSxLQUFSO0FBQWdCO0FBQ3BDO0FBQ0QsZUFBTyxFQUFQO0FBQ0gsS0FmRDs7QUFpQkEsZUFBVyxvQkFBWTtBQUNuQixhQUFLLElBQUksS0FBSyxFQUFULEVBQWEsSUFBSSxDQUF0QixFQUF5QixJQUFJLFVBQVUsTUFBdkMsRUFBK0MsR0FBL0M7QUFDSSxpQkFBSyxHQUFHLE1BQUgsQ0FBVSxPQUFPLFVBQVUsQ0FBVixDQUFQLENBQVYsQ0FBTDtBQURKLFNBRUEsT0FBTyxFQUFQO0FBQ0gsS0FKRDs7QUFNQSxhQUFVLGlCQUFVLENBQVYsRUFBYTtBQUNuQixlQUFPLGdCQUFnQixNQUFoQixJQUEyQixLQUFLLENBQUwsR0FBUyxDQUFULEVBQVksSUFBdkMsSUFBK0MsSUFBSSxNQUFKLENBQVksQ0FBWixDQUF0RDtBQUNILEtBRkQ7O0FBSUEsdUJBQW1CLDBCQUFVLE9BQVYsRUFBbUIsVUFBbkIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDekQsWUFBSSxDQUFDLE9BQU8sYUFBWixFQUEyQixNQUFNLElBQUksU0FBSixDQUFjLHNDQUFkLENBQU47QUFDM0IsWUFBSSxJQUFJLFVBQVUsS0FBVixDQUFnQixPQUFoQixFQUF5QixjQUFjLEVBQXZDLENBQVI7QUFBQSxZQUFvRCxDQUFwRDtBQUFBLFlBQXVELElBQUksRUFBM0Q7QUFDQSxlQUFPLElBQUksRUFBSixFQUFRLEtBQUssTUFBTCxDQUFSLEVBQXNCLEtBQUssT0FBTCxDQUF0QixFQUFxQyxLQUFLLFFBQUwsQ0FBckMsRUFBcUQsRUFBRSxPQUFPLGFBQVQsSUFBMEIsWUFBWTtBQUFFLG1CQUFPLElBQVA7QUFBYyxTQUEzRyxFQUE2RyxDQUFwSDtBQUNBLGlCQUFTLElBQVQsQ0FBYyxDQUFkLEVBQWlCO0FBQUUsZ0JBQUksRUFBRSxDQUFGLENBQUosRUFBVSxFQUFFLENBQUYsSUFBTyxVQUFVLENBQVYsRUFBYTtBQUFFLHVCQUFPLElBQUksT0FBSixDQUFZLFVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0I7QUFBRSxzQkFBRSxJQUFGLENBQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLENBQVAsSUFBdUIsQ0FBdkIsSUFBNEIsT0FBTyxDQUFQLEVBQVUsQ0FBVixDQUE1QjtBQUEyQyxpQkFBekUsQ0FBUDtBQUFvRixhQUExRztBQUE2RztBQUMxSSxpQkFBUyxNQUFULENBQWdCLENBQWhCLEVBQW1CLENBQW5CLEVBQXNCO0FBQUUsZ0JBQUk7QUFBRSxxQkFBSyxFQUFFLENBQUYsRUFBSyxDQUFMLENBQUw7QUFBZ0IsYUFBdEIsQ0FBdUIsT0FBTyxDQUFQLEVBQVU7QUFBRSx1QkFBTyxFQUFFLENBQUYsRUFBSyxDQUFMLENBQVAsRUFBZ0IsQ0FBaEI7QUFBcUI7QUFBRTtBQUNsRixpQkFBUyxJQUFULENBQWMsQ0FBZCxFQUFpQjtBQUFFLGNBQUUsS0FBRixZQUFtQixNQUFuQixHQUE2QixRQUFRLE9BQVIsQ0FBZ0IsRUFBRSxLQUFGLENBQVEsQ0FBeEIsRUFBMkIsSUFBM0IsQ0FBZ0MsT0FBaEMsRUFBeUMsTUFBekMsQ0FBN0IsR0FBZ0YsT0FBTyxFQUFFLENBQUYsRUFBSyxDQUFMLENBQVAsRUFBZ0IsQ0FBaEIsQ0FBaEY7QUFBc0c7QUFDekgsaUJBQVMsT0FBVCxDQUFpQixLQUFqQixFQUF3QjtBQUFFLG1CQUFPLE1BQVAsRUFBZSxLQUFmO0FBQXdCO0FBQ2xELGlCQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsRUFBdUI7QUFBRSxtQkFBTyxPQUFQLEVBQWdCLEtBQWhCO0FBQXlCO0FBQ2xELGlCQUFTLE1BQVQsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0I7QUFBRSxnQkFBSSxFQUFFLENBQUYsR0FBTSxFQUFFLEtBQUYsRUFBTixFQUFpQixFQUFFLE1BQXZCLEVBQStCLE9BQU8sRUFBRSxDQUFGLEVBQUssQ0FBTCxDQUFQLEVBQWdCLEVBQUUsQ0FBRixFQUFLLENBQUwsQ0FBaEI7QUFBMkI7QUFDckYsS0FWRDs7QUFZQSx1QkFBbUIsMEJBQVUsQ0FBVixFQUFhO0FBQzVCLFlBQUksQ0FBSixFQUFPLENBQVA7QUFDQSxlQUFPLElBQUksRUFBSixFQUFRLEtBQUssTUFBTCxDQUFSLEVBQXNCLEtBQUssT0FBTCxFQUFjLFVBQVUsQ0FBVixFQUFhO0FBQUUsa0JBQU0sQ0FBTjtBQUFVLFNBQXZDLENBQXRCLEVBQWdFLEtBQUssUUFBTCxDQUFoRSxFQUFnRixFQUFFLE9BQU8sUUFBVCxJQUFxQixZQUFZO0FBQUUsbUJBQU8sSUFBUDtBQUFjLFNBQWpJLEVBQW1JLENBQTFJO0FBQ0EsaUJBQVMsSUFBVCxDQUFjLENBQWQsRUFBaUIsQ0FBakIsRUFBb0I7QUFBRSxjQUFFLENBQUYsSUFBTyxFQUFFLENBQUYsSUFBTyxVQUFVLENBQVYsRUFBYTtBQUFFLHVCQUFPLENBQUMsSUFBSSxDQUFDLENBQU4sSUFBVyxFQUFFLE9BQU8sT0FBUSxFQUFFLENBQUYsRUFBSyxDQUFMLENBQVIsQ0FBVCxFQUEyQixNQUFNLE1BQU0sUUFBdkMsRUFBWCxHQUErRCxJQUFJLEVBQUUsQ0FBRixDQUFKLEdBQVcsQ0FBakY7QUFBcUYsYUFBM0csR0FBOEcsQ0FBckg7QUFBeUg7QUFDbEosS0FKRDs7QUFNQSxvQkFBZ0IsdUJBQVUsQ0FBVixFQUFhO0FBQ3pCLFlBQUksQ0FBQyxPQUFPLGFBQVosRUFBMkIsTUFBTSxJQUFJLFNBQUosQ0FBYyxzQ0FBZCxDQUFOO0FBQzNCLFlBQUksSUFBSSxFQUFFLE9BQU8sYUFBVCxDQUFSO0FBQUEsWUFBaUMsQ0FBakM7QUFDQSxlQUFPLElBQUksRUFBRSxJQUFGLENBQU8sQ0FBUCxDQUFKLElBQWlCLElBQUksT0FBTyxRQUFQLEtBQW9CLFVBQXBCLEdBQWlDLFNBQVMsQ0FBVCxDQUFqQyxHQUErQyxFQUFFLE9BQU8sUUFBVCxHQUFuRCxFQUF5RSxJQUFJLEVBQTdFLEVBQWlGLEtBQUssTUFBTCxDQUFqRixFQUErRixLQUFLLE9BQUwsQ0FBL0YsRUFBOEcsS0FBSyxRQUFMLENBQTlHLEVBQThILEVBQUUsT0FBTyxhQUFULElBQTBCLFlBQVk7QUFBRSxtQkFBTyxJQUFQO0FBQWMsU0FBcEwsRUFBc0wsQ0FBdk0sQ0FBUDtBQUNBLGlCQUFTLElBQVQsQ0FBYyxDQUFkLEVBQWlCO0FBQUUsY0FBRSxDQUFGLElBQU8sRUFBRSxDQUFGLEtBQVEsVUFBVSxDQUFWLEVBQWE7QUFBRSx1QkFBTyxJQUFJLE9BQUosQ0FBWSxVQUFVLE9BQVYsRUFBbUIsTUFBbkIsRUFBMkI7QUFBRSx3QkFBSSxFQUFFLENBQUYsRUFBSyxDQUFMLENBQUosRUFBYSxPQUFPLE9BQVAsRUFBZ0IsTUFBaEIsRUFBd0IsRUFBRSxJQUExQixFQUFnQyxFQUFFLEtBQWxDLENBQWI7QUFBd0QsaUJBQWpHLENBQVA7QUFBNEcsYUFBMUk7QUFBNkk7QUFDaEssaUJBQVMsTUFBVCxDQUFnQixPQUFoQixFQUF5QixNQUF6QixFQUFpQyxDQUFqQyxFQUFvQyxDQUFwQyxFQUF1QztBQUFFLG9CQUFRLE9BQVIsQ0FBZ0IsQ0FBaEIsRUFBbUIsSUFBbkIsQ0FBd0IsVUFBUyxDQUFULEVBQVk7QUFBRSx3QkFBUSxFQUFFLE9BQU8sQ0FBVCxFQUFZLE1BQU0sQ0FBbEIsRUFBUjtBQUFpQyxhQUF2RSxFQUF5RSxNQUF6RTtBQUFtRjtBQUMvSCxLQU5EOztBQVFBLDJCQUF1Qiw4QkFBVSxNQUFWLEVBQWtCLEdBQWxCLEVBQXVCO0FBQzFDLFlBQUksT0FBTyxjQUFYLEVBQTJCO0FBQUUsbUJBQU8sY0FBUCxDQUFzQixNQUF0QixFQUE4QixLQUE5QixFQUFxQyxFQUFFLE9BQU8sR0FBVCxFQUFyQztBQUF1RCxTQUFwRixNQUEwRjtBQUFFLG1CQUFPLEdBQVAsR0FBYSxHQUFiO0FBQW1CO0FBQy9HLGVBQU8sTUFBUDtBQUNILEtBSEQ7O0FBS0EsbUJBQWUsc0JBQVUsR0FBVixFQUFlO0FBQzFCLFlBQUksT0FBTyxJQUFJLFVBQWYsRUFBMkIsT0FBTyxHQUFQO0FBQzNCLFlBQUksU0FBUyxFQUFiO0FBQ0EsWUFBSSxPQUFPLElBQVgsRUFBaUIsS0FBSyxJQUFJLENBQVQsSUFBYyxHQUFkO0FBQW1CLGdCQUFJLE9BQU8sY0FBUCxDQUFzQixJQUF0QixDQUEyQixHQUEzQixFQUFnQyxDQUFoQyxDQUFKLEVBQXdDLE9BQU8sQ0FBUCxJQUFZLElBQUksQ0FBSixDQUFaO0FBQTNELFNBQ2pCLE9BQU8sU0FBUCxJQUFvQixHQUFwQjtBQUNBLGVBQU8sTUFBUDtBQUNILEtBTkQ7O0FBUUEsc0JBQWtCLHlCQUFVLEdBQVYsRUFBZTtBQUM3QixlQUFRLE9BQU8sSUFBSSxVQUFaLEdBQTBCLEdBQTFCLEdBQWdDLEVBQUUsV0FBVyxHQUFiLEVBQXZDO0FBQ0gsS0FGRDs7QUFJQSxhQUFTLFdBQVQsRUFBc0IsU0FBdEI7QUFDQSxhQUFTLFVBQVQsRUFBcUIsUUFBckI7QUFDQSxhQUFTLFFBQVQsRUFBbUIsTUFBbkI7QUFDQSxhQUFTLFlBQVQsRUFBdUIsVUFBdkI7QUFDQSxhQUFTLFNBQVQsRUFBb0IsT0FBcEI7QUFDQSxhQUFTLFlBQVQsRUFBdUIsVUFBdkI7QUFDQSxhQUFTLFdBQVQsRUFBc0IsU0FBdEI7QUFDQSxhQUFTLGFBQVQsRUFBd0IsV0FBeEI7QUFDQSxhQUFTLGNBQVQsRUFBeUIsWUFBekI7QUFDQSxhQUFTLFVBQVQsRUFBcUIsUUFBckI7QUFDQSxhQUFTLFFBQVQsRUFBbUIsTUFBbkI7QUFDQSxhQUFTLFVBQVQsRUFBcUIsUUFBckI7QUFDQSxhQUFTLFNBQVQsRUFBb0IsTUFBcEI7QUFDQSxhQUFTLGtCQUFULEVBQTZCLGdCQUE3QjtBQUNBLGFBQVMsa0JBQVQsRUFBNkIsZ0JBQTdCO0FBQ0EsYUFBUyxlQUFULEVBQTBCLGFBQTFCO0FBQ0EsYUFBUyxzQkFBVCxFQUFpQyxvQkFBakM7QUFDQSxhQUFTLGNBQVQsRUFBeUIsWUFBekI7QUFDQSxhQUFTLGlCQUFULEVBQTRCLGVBQTVCO0FBQ0gsQ0FoTkQ7Ozs7O0FDbENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi9saWIvaGVscGVycycpO1xudmFyIEpzb25SZWZzID0gcmVxdWlyZSgnanNvbi1yZWZzJyk7XG52YXIgU3dhZ2dlckFwaSA9IHJlcXVpcmUoJy4vbGliL3R5cGVzL2FwaScpO1xudmFyIFlBTUwgPSByZXF1aXJlKCdqcy15YW1sJyk7XG5cbi8vIExvYWQgcHJvbWlzZXMgcG9seWZpbGwgaWYgbmVjZXNzYXJ5XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgcmVxdWlyZSgnbmF0aXZlLXByb21pc2Utb25seScpO1xufVxuXG4vKipcbiAqIEEgbGlicmFyeSBmb3Igc2ltcGxlciBbU3dhZ2dlcl0oaHR0cDovL3N3YWdnZXIuaW8vKSBpbnRlZ3JhdGlvbnMuXG4gKlxuICogQG1vZHVsZSBzd2F5XG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgU3dhZ2dlckFwaSBvYmplY3QgZnJvbSBpdHMgU3dhZ2dlciBkZWZpbml0aW9uKHMpLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuQ3JlYXRlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBsb2FkaW5nIHRoZSBkZWZpbml0aW9uKHMpXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8bW9kdWxlOnN3YXkuU3dhZ2dlckFwaT59IFRoZSBwcm9taXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIFN3YWdnZXJBcGkuY3JlYXRlKHtkZWZpbml0aW9uOiAnaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci55YW1sJ30pXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChhcGkpIHtcbiAqICAgICBjb25zb2xlLmxvZygnRG9jdW1lbnRhdGlvbiBVUkw6ICcsIGFwaS5kb2N1bWVudGF0aW9uVXJsKTtcbiAqICAgfSwgZnVuY3Rpb24gKGVycikge1xuICogICAgIGNvbnNvbGUuZXJyb3IoZXJyLnN0YWNrKTtcbiAqICAgfSk7XG4gKi9cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBhbGxUYXNrcyA9IFByb21pc2UucmVzb2x2ZSgpO1xuICB2YXIgY09wdGlvbnM7XG5cbiAgLy8gVmFsaWRhdGUgYXJndW1lbnRzXG4gIGFsbFRhc2tzID0gYWxsVGFza3MudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuZGVmaW5pdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5kZWZpbml0aW9uIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5kZWZpbml0aW9uKSAmJiAhXy5pc1N0cmluZyhvcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuZGVmaW5pdGlvbiBtdXN0IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgYSBzdHJpbmcnKTtcbiAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5qc29uUmVmcykgJiYgIV8uaXNQbGFpbk9iamVjdChvcHRpb25zLmpzb25SZWZzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmpzb25SZWZzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tRm9ybWF0cykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbUZvcm1hdHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tRm9ybWF0cyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9XG5cbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tRm9ybWF0cywgJ2N1c3RvbUZvcm1hdHMnKTtcbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycywgJ2N1c3RvbUZvcm1hdEdlbmVyYXRvcnMnKTtcbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgJ2N1c3RvbVZhbGlkYXRvcnMnKTtcblxuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBNYWtlIGEgY29weSBvZiB0aGUgaW5wdXQgb3B0aW9ucyBzbyBhcyBub3QgdG8gYWx0ZXIgdGhlbVxuICBjT3B0aW9ucyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMpO1xuXG4gIC8vXG4gIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAvLyBSZXNvbHZlIHJlbGF0aXZlL3JlbW90ZSByZWZlcmVuY2VzXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUHJlcGFyZSB0aGUganNvbi1yZWZzIG9wdGlvbnNcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzKSkge1xuICAgICAgICBjT3B0aW9ucy5qc29uUmVmcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICAvLyBJbmNsdWRlIGludmFsaWQgcmVmZXJlbmNlIGluZm9ybWF0aW9uXG4gICAgICBjT3B0aW9ucy5qc29uUmVmcy5pbmNsdWRlSW52YWxpZCA9IHRydWU7XG5cbiAgICAgIC8vIFJlc29sdmUgb25seSByZWxhdGl2ZS9yZW1vdGUgcmVmZXJlbmNlc1xuICAgICAgY09wdGlvbnMuanNvblJlZnMuZmlsdGVyID0gWydyZWxhdGl2ZScsICdyZW1vdGUnXTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBqc29uLXJlZnMgb3B0aW9ucyB0byBwcm9jZXNzIFlBTUxcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMpKSB7XG4gICAgICAgIGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQoY09wdGlvbnMuanNvblJlZnMubG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCkpIHtcbiAgICAgICAgY09wdGlvbnMuanNvblJlZnMubG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCA9IGZ1bmN0aW9uIChyZXMsIGNiKSB7XG4gICAgICAgICAgY2IodW5kZWZpbmVkLCBZQU1MLnNhZmVMb2FkKHJlcy50ZXh0KSk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdGhlIGFwcHJvcHJpYXRlIGpzb24tcmVmcyBBUElcbiAgICAgIGlmIChfLmlzU3RyaW5nKGNPcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmc0F0KGNPcHRpb25zLmRlZmluaXRpb24sIGNPcHRpb25zLmpzb25SZWZzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmcyhjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBSZXNvbHZlIGxvY2FsIHJlZmVyZW5jZXMgYW5kIG1lcmdlIHJlc3VsdHNcbiAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlUmVzdWx0cykge1xuICAgICAgLy8gUmVzb2x2ZSBsb2NhbCByZWZlcmVuY2VzIChSZW1vdGUgcmVmZXJlbmNlcyBzaG91bGQgaGFkIGFscmVhZHkgYmVlbiByZXNvbHZlZClcbiAgICAgIGNPcHRpb25zLmpzb25SZWZzLmZpbHRlciA9ICdsb2NhbCc7XG5cbiAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmcyhyZW1vdGVSZXN1bHRzLnJlc29sdmVkIHx8IGNPcHRpb25zLmRlZmluaXRpb24sIGNPcHRpb25zLmpzb25SZWZzKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgICAgIF8uZWFjaChyZW1vdGVSZXN1bHRzLnJlZnMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCByZWZQdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucmVmc1tyZWZQdHJdID0gcmVmRGV0YWlscztcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgU3dhZ2dlciBkZWZpbml0aW9uXG4gICAgICAgICAgICBkZWZpbml0aW9uOiBfLmlzU3RyaW5nKGNPcHRpb25zLmRlZmluaXRpb24pID8gcmVtb3RlUmVzdWx0cy52YWx1ZSA6IGNPcHRpb25zLmRlZmluaXRpb24sXG4gICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgU3dhZ2dlciBkZWZpbml0aW9uIHdpdGggaXRzIHJlbW90ZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gICAgICAgICAgICBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkOiByZW1vdGVSZXN1bHRzLnJlc29sdmVkLFxuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIFN3YWdnZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBpdHMgcmVmZXJlbmNlcyByZXNvbHZlZFxuICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ6IHJlc3VsdHMucmVzb2x2ZWQsXG4gICAgICAgICAgICAvLyBNZXJnZSB0aGUgbG9jYWwgcmVmZXJlbmNlIGRldGFpbHMgd2l0aCB0aGUgcmVtb3RlIHJlZmVyZW5jZSBkZXRhaWxzXG4gICAgICAgICAgICByZWZzOiByZXN1bHRzLnJlZnNcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLy8gUHJvY2VzcyB0aGUgU3dhZ2dlciBkb2N1bWVudCBhbmQgcmV0dXJuIHRoZSBBUElcbiAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgYWxsIGNpcmN1bGFyIG9iamVjdHMgYXMgei1zY2hlbWEgZG9lcyBub3Qgd29yayB3aXRoIHRoZW06XG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hL2lzc3Vlcy8xMzdcbiAgICAgIGhlbHBlcnMucmVtb3ZlQ2lyY3VsYXJzKHJlc3VsdHMuZGVmaW5pdGlvbik7XG4gICAgICBoZWxwZXJzLnJlbW92ZUNpcmN1bGFycyhyZXN1bHRzLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQpO1xuICAgICAgaGVscGVycy5yZW1vdmVDaXJjdWxhcnMocmVzdWx0cy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBvYmplY3QgbW9kZWxcbiAgICAgIHJldHVybiBuZXcgU3dhZ2dlckFwaShyZXN1bHRzLmRlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5yZWZzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMpO1xuICAgIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn07XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGZvcm1hdEdlbmVyYXRvcnMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb24vZm9ybWF0LWdlbmVyYXRvcnMnKTtcbnZhciBmb3JtYXRWYWxpZGF0b3JzID0gcmVxdWlyZSgnLi92YWxpZGF0aW9uL2Zvcm1hdC12YWxpZGF0b3JzJyk7XG52YXIgWlNjaGVtYSA9IHJlcXVpcmUoJ3otc2NoZW1hJyk7XG5cbi8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly94bWwycmZjLmlldGYub3JnL3B1YmxpYy9yZmMvaHRtbC9yZmMzMzM5Lmh0bWwjYW5jaG9yMTRcbnZhciBkYXRlUmVnRXhwID0gbmV3IFJlZ0V4cChcbiAgJ14nICtcbiAgJ1xcXFxkezR9JyArIC8vIHllYXJcbiAgJy0nICtcbiAgJyhbMF1cXFxcZHwxWzAxMl0pJyArIC8vIG1vbnRoXG4gICctJyArXG4gICcoMFsxLTldfFsxMl1cXFxcZHwzWzAxXSknICsgLy8gZGF5XG4gICckJyk7XG5cbi8vIGRhdGUtdGltZSBmcm9tIGh0dHA6Ly94bWwycmZjLmlldGYub3JnL3B1YmxpYy9yZmMvaHRtbC9yZmMzMzM5Lmh0bWwjYW5jaG9yMTRcbnZhciBkYXRlVGltZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICdeJyArXG4gICdcXFxcZHs0fScgKyAvLyB5ZWFyXG4gICctJyArXG4gICcoWzBdXFxcXGR8MVswMTJdKScgKyAvLyBtb250aFxuICAnLScgK1xuICAnKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pJyArIC8vIGRheVxuICAnVCcgK1xuICAnKFswMV1cXFxcZHwyWzAtM10pJyArIC8vIGhvdXJcbiAgJzonICtcbiAgJ1swLTVdXFxcXGQnICsgLy8gbWludXRlXG4gICc6JyArXG4gICdbMC01XVxcXFxkJyArIC8vIHNlY29uZFxuICAnKFxcXFwuXFxcXGQrKT8nICsgLy8gZnJhY3Rpb25hbCBzZWNvbmRzXG4gICcoWnwoXFxcXCt8LSkoWzAxXVxcXFxkfDJbMC00XSk6WzAtNV1cXFxcZCknICsgLy8gWiBvciB0aW1lIG9mZnNldFxuICAnJCcpO1xuXG52YXIgY29sbGVjdGlvbkZvcm1hdHMgPSBbdW5kZWZpbmVkLCAnY3N2JywgJ211bHRpJywgJ3BpcGVzJywgJ3NzdicsICd0c3YnXTtcbnZhciBqc29uTW9ja2VyO1xudmFyIGpzb25TY2hlbWFWYWxpZGF0b3IgPSBjcmVhdGVKU09OVmFsaWRhdG9yKCk7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNwYXJhbWV0ZXItb2JqZWN0XG52YXIgcGFyYW1ldGVyU2NoZW1hUHJvcGVydGllcyA9IFtcbiAgJ2FsbG93RW1wdHlWYWx1ZScsXG4gICdkZWZhdWx0JyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2VudW0nLFxuICAnZXhjbHVzaXZlTWF4aW11bScsXG4gICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgJ2Zvcm1hdCcsXG4gICdpdGVtcycsXG4gICdtYXhJdGVtcycsXG4gICdtYXhMZW5ndGgnLFxuICAnbWF4aW11bScsXG4gICdtaW5JdGVtcycsXG4gICdtaW5MZW5ndGgnLFxuICAnbWluaW11bScsXG4gICdtdWx0aXBsZU9mJyxcbiAgJ3BhdHRlcm4nLFxuICAndHlwZScsXG4gICd1bmlxdWVJdGVtcydcbl07XG52YXIgdHlwZXMgPSBbJ2FycmF5JywgJ2Jvb2xlYW4nLCAnaW50ZWdlcicsICdvYmplY3QnLCAnbnVtYmVyJywgJ3N0cmluZyddO1xuXG5mdW5jdGlvbiBjcmVhdGVKU09OTW9ja2VyIChtb2NrZXIpIHtcbiAgLy8gRXh0ZW5kIGZha2VyLmpzIHRvIG9ubHkgaW5jbHVkZSB0aGUgJ2VuJyBsb2NhbGVcbiAgdmFyIGZha2VyTG9jYWxlID0gcmVxdWlyZSgnZmFrZXIvbG9jYWxlL2VuX1VTJyk7XG5cbiAgbW9ja2VyLmV4dGVuZCgnZmFrZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyTG9jYWxlO1xuICB9KTtcblxuICAvLyBBZGQgdGhlIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yc1xuICBfLmVhY2goZm9ybWF0R2VuZXJhdG9ycywgZnVuY3Rpb24gKGdlbiwgbmFtZSkge1xuICAgIG1vY2tlci5mb3JtYXQobmFtZSwgZ2VuKG1vY2tlcikpO1xuICB9KTtcblxuICByZXR1cm4gbW9ja2VyO1xufVxuXG5mdW5jdGlvbiBmaW5kRXh0cmFQYXJhbWV0ZXJzIChleHBlY3RlZCwgYWN0dWFsLCBsb2NhdGlvbiwgcmVzdWx0cykge1xuICB2YXIgY29kZVN1ZmZpeCA9IGxvY2F0aW9uLnRvVXBwZXJDYXNlKCk7XG5cbiAgc3dpdGNoIChsb2NhdGlvbikge1xuICAgIGNhc2UgJ2Zvcm1EYXRhJzpcbiAgICAgIGNvZGVTdWZmaXggPSAnRk9STV9EQVRBJztcbiAgICAgIGxvY2F0aW9uID0gJ2Zvcm0gZGF0YSBmaWVsZCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdxdWVyeSc6XG4gICAgICBsb2NhdGlvbiA9ICdxdWVyeSBwYXJhbWV0ZXInO1xuICAgICAgYnJlYWs7XG5cbiAgICAvLyBubyBkZWZhdWx0XG4gIH1cblxuICBfLmVhY2goYWN0dWFsLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChleHBlY3RlZC5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdSRVFVRVNUX0FERElUSU9OQUxfJyArIGNvZGVTdWZmaXgsXG4gICAgICAgIG1lc3NhZ2U6ICdBZGRpdGlvbmFsICcgKyBsb2NhdGlvbiArICcgbm90IGFsbG93ZWQ6ICcgKyBuYW1lLFxuICAgICAgICBwYXRoOiBbXVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJGb3JtYXQgKG5hbWUsIHZhbGlkYXRvcikge1xuICBaU2NoZW1hLnJlZ2lzdGVyRm9ybWF0KG5hbWUsIHZhbGlkYXRvcik7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yIChuYW1lLCBmdW5jKSB7XG4gIGdldEpTT05TY2hlbWFNb2NrZXIoKS5mb3JtYXQobmFtZSwgZnVuYyk7XG59XG5cbmZ1bmN0aW9uIHVucmVnaXN0ZXJGb3JtYXQgKG5hbWUpIHtcbiAgWlNjaGVtYS51bnJlZ2lzdGVyRm9ybWF0KG5hbWUpO1xufVxuXG5mdW5jdGlvbiB1bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yIChuYW1lKSB7XG4gIGRlbGV0ZSBnZXRKU09OU2NoZW1hTW9ja2VyKCkuZm9ybWF0KClbbmFtZV07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUpTT05WYWxpZGF0b3IgKCkge1xuICB2YXIgdmFsaWRhdG9yID0gbmV3IFpTY2hlbWEoe1xuICAgIGJyZWFrT25GaXJzdEVycm9yOiBmYWxzZSxcbiAgICBpZ25vcmVVbmtub3duRm9ybWF0czogdHJ1ZSxcbiAgICByZXBvcnRQYXRoQXNBcnJheTogdHJ1ZVxuICB9KTtcblxuICAvLyBBZGQgdGhlIGN1c3RvbSB2YWxpZGF0b3JzXG4gIF8uZWFjaChmb3JtYXRWYWxpZGF0b3JzLCBmdW5jdGlvbiAoaGFuZGxlciwgbmFtZSkge1xuICAgIHJlZ2lzdGVyRm9ybWF0KG5hbWUsIGhhbmRsZXIpO1xuICB9KTtcblxuICByZXR1cm4gdmFsaWRhdG9yO1xufVxuXG5mdW5jdGlvbiBnZXRKU09OU2NoZW1hTW9ja2VyICgpIHtcbiAgdmFyIG1vY2tlcjtcblxuICBpZiAoIWpzb25Nb2NrZXIpIHtcbiAgICBtb2NrZXIgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1mYWtlci9saWInKTtcbiAgICBqc29uTW9ja2VyID0gY3JlYXRlSlNPTk1vY2tlcihtb2NrZXIpO1xuICB9XG5cbiAgcmV0dXJuIGpzb25Nb2NrZXI7XG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemVFcnJvciAob2JqKSB7XG4gIC8vIFJlbW92ZSBzdXBlcmZsdW91cyBlcnJvciBkZXRhaWxzXG4gIGlmIChfLmlzVW5kZWZpbmVkKG9iai5zY2hlbWFJZCkpIHtcbiAgICBkZWxldGUgb2JqLnNjaGVtYUlkO1xuICB9XG5cbiAgaWYgKG9iai5pbm5lcikge1xuICAgIF8uZWFjaChvYmouaW5uZXIsIGZ1bmN0aW9uIChuT2JqKSB7XG4gICAgICBub3JtYWxpemVFcnJvcihuT2JqKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBtZXRob2QgdG8gdGFrZSBhIFN3YWdnZXIgcGFyYW1ldGVyIGRlZmluaXRpb24gYW5kIGNvbXB1dGUgaXRzIHNjaGVtYS5cbiAqXG4gKiBGb3Igbm9uLWJvZHkgU3dhZ2dlciBwYXJhbWV0ZXJzLCB0aGUgZGVmaW5pdGlvbiBpdHNlbGYgaXMgbm90IHN1aXRhYmxlIGFzIGEgSlNPTiBTY2hlbWEgc28gd2UgbXVzdCBjb21wdXRlIGl0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbURlZiAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvblxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBjb21wdXRlZCBzY2hlbWFcbiAqL1xubW9kdWxlLmV4cG9ydHMuY29tcHV0ZVBhcmFtZXRlclNjaGVtYSA9IGZ1bmN0aW9uIChwYXJhbURlZikge1xuICB2YXIgc2NoZW1hO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmFtRGVmLnNjaGVtYSkpIHtcbiAgICBzY2hlbWEgPSB7fTtcblxuICAgIC8vIEJ1aWxkIHRoZSBzY2hlbWEgZnJvbSB0aGUgc2NoZW1hLWxpa2UgcGFyYW1ldGVyIHN0cnVjdHVyZVxuICAgIF8uZm9yRWFjaChwYXJhbWV0ZXJTY2hlbWFQcm9wZXJ0aWVzLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmFtRGVmW25hbWVdKSkge1xuICAgICAgICBzY2hlbWFbbmFtZV0gPSBwYXJhbURlZltuYW1lXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBzY2hlbWEgPSBwYXJhbURlZi5zY2hlbWE7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJhdyBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgSlNPTiBTY2hlbWEgdmFsdWUgYmFzZWQgb24gaXRzIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hIC0gVGhlIHNjaGVtYSBmb3IgdGhlIHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRoZSBjb252ZXJzaW9uIG9wdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jb2xsZWN0aW9uRm9ybWF0XSAtIFRoZSBjb2xsZWN0aW9uIGZvcm1hdFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmVuY29kaW5nXSAtIFRoZSBlbmNvZGluZyBpZiB0aGUgcmF3IHZhbHVlIGlzIGEgYEJ1ZmZlcmBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgY29udmVydGVkIHZhbHVlXG4gKlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJRiB0aGUgYGNvbGxlY3Rpb25Gb3JtYXRgIG9yIGB0eXBlYCBpcyBpbnZhbGlkIGZvciB0aGUgYHNjaGVtYWAsIG9yIGlmIGNvbnZlcnNpb24gZmFpbHNcbiAqL1xudmFyIGNvbnZlcnRWYWx1ZSA9IG1vZHVsZS5leHBvcnRzLmNvbnZlcnRWYWx1ZSA9IGZ1bmN0aW9uIChzY2hlbWEsIG9wdGlvbnMsIHZhbHVlKSB7XG4gIHZhciBvcmlnaW5hbFZhbHVlID0gdmFsdWU7IC8vIFVzZWQgaW4gZXJyb3IgcmVwb3J0aW5nIGZvciBpbnZhbGlkIHZhbHVlc1xuICB2YXIgdHlwZSA9IF8uaXNQbGFpbk9iamVjdChzY2hlbWEpID8gc2NoZW1hLnR5cGUgOiB1bmRlZmluZWQ7XG4gIHZhciBwVmFsdWUgPSB2YWx1ZTtcbiAgdmFyIHBUeXBlID0gdHlwZW9mIHBWYWx1ZTtcbiAgdmFyIGVycjtcbiAgdmFyIGlzRGF0ZTtcbiAgdmFyIGlzRGF0ZVRpbWU7XG5cbiAgLy8gSWYgdGhlcmUgaXMgYW4gZXhwbGljaXQgdHlwZSBwcm92aWRlZCwgbWFrZSBzdXJlIGl0J3Mgb25lIG9mIHRoZSBzdXBwb3J0ZWQgb25lc1xuICBpZiAoXy5oYXMoc2NoZW1hLCAndHlwZScpICYmIHR5cGVzLmluZGV4T2YodHlwZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBcXCd0eXBlXFwnIHZhbHVlOiAnICsgdHlwZSk7XG4gIH1cblxuICAvLyBTaW5jZSBKU09OIFNjaGVtYSBhbGxvd3MgeW91IHRvIG5vdCBzcGVjaWZ5IGEgdHlwZSBhbmQgaXQgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkIG9mIHNvcnRzLCB3ZSBzaG91bGQgbm90IGRvIGFueVxuICAvLyBjb2VyY2lvbiBmb3IgdGhlc2UgdHlwZXMgb2YgdmFsdWVzLlxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eXBlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVlLCBkbyBub3QgY29udmVydCBpdFxuICBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBDb252ZXJ0IEJ1ZmZlciB2YWx1ZSB0byBTdHJpbmdcbiAgLy8gKFdlIHVzZSB0aGlzIHR5cGUgb2YgY2hlY2sgdG8gaWRlbnRpZnkgQnVmZmVyIG9iamVjdHMuICBUaGUgYnJvd3NlciBkb2VzIG5vdCBoYXZlIGEgQnVmZmVyIHR5cGUgYW5kIHRvIGF2b2lkIGhhdmluZ1xuICAvLyAgaW1wb3J0IHRoZSBicm93c2VyaWZ5IGJ1ZmZlciBtb2R1bGUsIHdlIGp1c3QgZG8gYSBzaW1wbGUgY2hlY2suICBUaGlzIGlzIGJyaXR0bGUgYnV0IHNob3VsZCB3b3JrLilcbiAgaWYgKF8uaXNGdW5jdGlvbih2YWx1ZS5yZWFkVUludDgpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZyhvcHRpb25zLmVuY29kaW5nKTtcbiAgICBwVmFsdWUgPSB2YWx1ZTtcbiAgICBwVHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSB2YWx1ZSBpcyBlbXB0eSBhbmQgZW1wdHkgaXMgYWxsb3dlZCwgdXNlIGl0XG4gIGlmIChzY2hlbWEuYWxsb3dFbXB0eVZhbHVlICYmIHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIEF0dGVtcHQgdG8gcGFyc2UgdGhlIHN0cmluZyBhcyBKU09OIGlmIHRoZSB0eXBlIGlzIGFycmF5IG9yIG9iamVjdFxuICBpZiAoWydhcnJheScsICdvYmplY3QnXS5pbmRleE9mKHR5cGUpID4gLTEgJiYgXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICBpZiAoKHR5cGUgPT09ICdhcnJheScgJiYgdmFsdWUuaW5kZXhPZignWycpID09PSAwKSB8fCAodHlwZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuaW5kZXhPZigneycpID09PSAwKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUsIGp1c3QgZmFsbCB0aHJvdWdoXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gIGNhc2UgJ2FycmF5JzpcbiAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uRm9ybWF0cy5pbmRleE9mKG9wdGlvbnMuY29sbGVjdGlvbkZvcm1hdCkgPT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgXFwnY29sbGVjdGlvbkZvcm1hdFxcJyB2YWx1ZTogJyArIG9wdGlvbnMuY29sbGVjdGlvbkZvcm1hdCk7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAob3B0aW9ucy5jb2xsZWN0aW9uRm9ybWF0KSB7XG4gICAgICBjYXNlICdjc3YnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtdWx0aSc6XG4gICAgICAgIHZhbHVlID0gW3ZhbHVlXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwaXBlcyc6XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJ3wnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzc3YnOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcgJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHN2JzpcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnXFx0Jyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIG5vIGRlZmF1bHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSBfLm1hcCh2YWx1ZSwgZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWUoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykgPyBzY2hlbWEuaXRlbXNbaW5kZXhdIDogc2NoZW1hLml0ZW1zLCBvcHRpb25zLCBpdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGJyZWFrO1xuICBjYXNlICdib29sZWFuJzpcbiAgICBpZiAoIV8uaXNCb29sZWFuKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgdmFsdWUgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgYm9vbGVhbjogJyArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBicmVhaztcbiAgY2FzZSAnaW50ZWdlcic6XG4gICAgaWYgKCFfLmlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpICYmIF8udHJpbSh2YWx1ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gTmFOO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCBpbnRlZ2VyOiAnICsgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIGNhc2UgJ251bWJlcic6XG4gICAgaWYgKCFfLmlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpICYmIF8udHJpbSh2YWx1ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gTmFOO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCBudW1iZXI6ICcgKyBvcmlnaW5hbFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgJ3N0cmluZyc6XG4gICAgaWYgKFsnZGF0ZScsICdkYXRlLXRpbWUnXS5pbmRleE9mKHNjaGVtYS5mb3JtYXQpID4gLTEpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICBpc0RhdGUgPSBzY2hlbWEuZm9ybWF0ID09PSAnZGF0ZScgJiYgZGF0ZVJlZ0V4cC50ZXN0KHZhbHVlKTtcbiAgICAgICAgaXNEYXRlVGltZSA9IHNjaGVtYS5mb3JtYXQgPT09ICdkYXRlLXRpbWUnICYmIGRhdGVUaW1lUmVnRXhwLnRlc3QodmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNEYXRlICYmICFpc0RhdGVUaW1lKSB7XG4gICAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgJyArIHNjaGVtYS5mb3JtYXQgKyAnIHN0cmluZzogJyArIG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICAgIGVyci5jb2RlID0gJ0lOVkFMSURfRk9STUFUJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIV8uaXNEYXRlKHZhbHVlKSB8fCB2YWx1ZS50b1N0cmluZygpID09PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCAnICsgc2NoZW1hLmZvcm1hdCArICcgc3RyaW5nOiAnICsgb3JpZ2luYWxWYWx1ZSk7XG5cbiAgICAgICAgZXJyLmNvZGUgPSAnSU5WQUxJRF9GT1JNQVQnO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIV8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCBzdHJpbmc6ICcgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgYnJlYWs7XG5cbiAgICAvLyBubyBkZWZhdWx0XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQoZXJyKSkge1xuICAgIC8vIENvbnZlcnQgdGhlIGVycm9yIHRvIGJlIG1vcmUgbGlrZSBhIEpTT04gU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChlcnIuY29kZSkpIHtcbiAgICAgIGVyci5jb2RlID0gJ0lOVkFMSURfVFlQRSc7XG4gICAgICBlcnIubWVzc2FnZSA9ICdFeHBlY3RlZCB0eXBlICcgKyB0eXBlICsgJyBidXQgZm91bmQgdHlwZSAnICsgcFR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVyci5tZXNzYWdlID0gJ09iamVjdCBkaWRuXFwndCBwYXNzIHZhbGlkYXRpb24gZm9yIGZvcm1hdCAnICsgc2NoZW1hLmZvcm1hdCArICc6ICcgKyBwVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IGFuZCB0eXBlIGVycm9ycyByZXNlbWJsZSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yc1xuICAgIGVyci5mYWlsZWRWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBlcnIucGF0aCA9IFtdO1xuXG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm92aWRlZCBjb250ZW50IHR5cGUgb3IgYGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAqXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjNy5odG1sI3NlYzcuMi4xXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnMgLSBUaGUgaGVhZGVycyB0byBzZWFyY2hcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGVudCB0eXBlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldENvbnRlbnRUeXBlID0gZnVuY3Rpb24gKGhlYWRlcnMpIHtcbiAgcmV0dXJuIGdldEhlYWRlclZhbHVlKGhlYWRlcnMsICdjb250ZW50LXR5cGUnKSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaGVhZGVyIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2Ugb2YgdGhlIHByb3ZpZGVkL3JlcXVlc3RlZCBoZWFkZXIgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gaGVhZGVycyAtIFRoZSBoZWFkZXJzIHRvIHNlYXJjaFxuICogQHBhcmFtIHtzdHJpbmd9IGhlYWRlck5hbWUgLSBUaGUgaGVhZGVyIG5hbWVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaGVhZGVyIHZhbHVlIG9yIGB1bmRlZmluZWRgIGlmIGl0IGlzIG5vdCBmb3VuZFxuICovXG52YXIgZ2V0SGVhZGVyVmFsdWUgPSBtb2R1bGUuZXhwb3J0cy5nZXRIZWFkZXJWYWx1ZSA9IGZ1bmN0aW9uIChoZWFkZXJzLCBoZWFkZXJOYW1lKSB7XG4gIC8vIERlZmF1bHQgdG8gYW4gZW1wdHkgb2JqZWN0XG4gIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHt9O1xuXG4gIHZhciBsY0hlYWRlck5hbWUgPSBoZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHZhciByZWFsSGVhZGVyTmFtZSA9IF8uZmluZChPYmplY3Qua2V5cyhoZWFkZXJzKSwgZnVuY3Rpb24gKGhlYWRlcikge1xuICAgIHJldHVybiBoZWFkZXIudG9Mb3dlckNhc2UoKSA9PT0gbGNIZWFkZXJOYW1lO1xuICB9KTtcblxuICByZXR1cm4gaGVhZGVyc1tyZWFsSGVhZGVyTmFtZV07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGpzb24tc2NoZW1hLWZha2VyIG1vY2tlci5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUganNvbi1zY2hlbWEtZmFrZXIgbW9ja2VyIHRvIHVzZVxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRKU09OU2NoZW1hTW9ja2VyID0gZ2V0SlNPTlNjaGVtYU1vY2tlcjtcblxubW9kdWxlLmV4cG9ydHMuZ2V0U2FtcGxlID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICB2YXIgc2FtcGxlO1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEpKSB7XG4gICAgaWYgKHNjaGVtYS50eXBlID09PSAnZmlsZScpIHtcbiAgICAgIHNhbXBsZSA9ICdUaGlzIGlzIHNhbXBsZSBjb250ZW50IGZvciB0aGUgXCJmaWxlXCIgdHlwZS4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYW1wbGUgPSBnZXRKU09OU2NoZW1hTW9ja2VyKCkoc2NoZW1hKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2FtcGxlO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB6LXNjaGVtYSB2YWxpZGF0b3IuXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIHotc2NoZW1hIHZhbGlkYXRvciB0byB1c2VcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGpzb25TY2hlbWFWYWxpZGF0b3I7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5wYXJhbWV0ZXJMb2NhdGlvbnMgPSBbJ2JvZHknLCAnZm9ybURhdGEnLCAnaGVhZGVyJywgJ3BhdGgnLCAncXVlcnknXTtcblxuLyoqXG4gKiBQcm9jZXNzIHZhbGlkYXRvcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8bW9kdWxlOlN3YXl+U2VydmVyUmVzcG9uc2VXcmFwcGVyfSB0YXJnZXQgLSBUaGUgdGhpbmcgYmVpbmcgdmFsaWRhdGVkXG4gKiBAcGFyYW0ge21vZHVsZTpTd2F5flN3YWdnZXJBcGl8bW9kdWxlOlN3YXl+T3BlcmF0aW9ufG1vZHVsZTpTd2F5flJlc3BvbnNlfSBjYWxsZXIgLSBUaGUgb2JqZWN0IHJlcXVlc3RpbmcgdmFsaWRhdGlvbiBfKGNhbiBiZSBgdW5kZWZpbmVkYClfXG4gKiBAcGFyYW0ge21vZHVsZTpTd2F5fkRvY3VtZW50VmFsaWRhdGlvbkZ1bmN0aW9uW118bW9kdWxlOlN3YXl+UmVxdWVzdFZhbGlkYXRpb25GdW5jdGlvbltdfG1vZHVsZTpTd2F5flJlc3Bvc2VWYWxpZGF0aW9uRnVuY3Rpb25bXX0gdmFsaWRhdG9ycyAtIFRoZSB2YWxpZGF0b3JzXG4gKiBAcGFyYW0ge21vZHVsZTpTd2F5flZhbGlkYXRpb25SZXN1bHRzfSByZXN1bHRzIC0gVGhlIGN1bXVsYXRpdmUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbm1vZHVsZS5leHBvcnRzLnByb2Nlc3NWYWxpZGF0b3JzID0gZnVuY3Rpb24gKHRhcmdldCwgY2FsbGVyLCB2YWxpZGF0b3JzLCByZXN1bHRzKSB7XG4gIF8uZWFjaCh2YWxpZGF0b3JzLCBmdW5jdGlvbiAodmFsaWRhdG9yKSB7XG4gICAgdmFyIHZBcmdzID0gW3RhcmdldF07XG4gICAgdmFyIHZSZXN1bHRzO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGNhbGxlcikpIHtcbiAgICAgIHZBcmdzLnB1c2goY2FsbGVyKTtcbiAgICB9XG5cbiAgICB2UmVzdWx0cyA9IHZhbGlkYXRvci5hcHBseSh1bmRlZmluZWQsIHZBcmdzKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZCh2UmVzdWx0cykpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2UmVzdWx0cy5lcnJvcnMpICYmIHZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2guYXBwbHkocmVzdWx0cy5lcnJvcnMsIHZSZXN1bHRzLmVycm9ycyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2UmVzdWx0cy53YXJuaW5ncykgJiYgdlJlc3VsdHMud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLndhcm5pbmdzLnB1c2guYXBwbHkocmVzdWx0cy53YXJuaW5ncywgdlJlc3VsdHMud2FybmluZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRvciAtIFRoZSBmb3JtYXQgdmFsaWRhdG9yICooU2VlIFtaU2NoZW1hIEN1c3RvbSBGb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hI3JlZ2lzdGVyLWEtY3VzdG9tLWZvcm1hdCkpKlxuICovXG5tb2R1bGUuZXhwb3J0cy5yZWdpc3RlckZvcm1hdCA9IHJlZ2lzdGVyRm9ybWF0O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gZ2VuZXJhdG9yIC0gVGhlIGZvcm1hdCBnZW5lcmF0b3IgKihTZWUgW2pzb24tc2NoZW1hLW1vY2tlciBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vanNvbi1zY2hlbWEtZmFrZXIvanNvbi1zY2hlbWEtZmFrZXIjY3VzdG9tLWZvcm1hdHMpKSpcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgPSByZWdpc3RlckZvcm1hdEdlbmVyYXRvcjtcblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiB0aGUgcHJvdmlkZWQgb2JqZWN0IHdpdGggYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmogLSBUaGUgSmF2YVNjcmlwdCBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVtb3ZlQ2lyY3VsYXJzID0gZnVuY3Rpb24gKG9iaikge1xuICB3YWxrKG9iaiwgZnVuY3Rpb24gKG5vZGUsIHBhdGgsIGFuY2VzdG9ycykge1xuICAgIC8vIFJlcGxhY2UgY2lyY3VsYXJzIHdpdGgge31cbiAgICBpZiAoYW5jZXN0b3JzLmluZGV4T2Yobm9kZSkgPiAtMSkge1xuICAgICAgXy5zZXQob2JqLCBwYXRoLCB7fSk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKi9cbm1vZHVsZS5leHBvcnRzLnVucmVnaXN0ZXJGb3JtYXQgPSB1bnJlZ2lzdGVyRm9ybWF0O1xuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0IGdlbmVyYXRvclxuICovXG5tb2R1bGUuZXhwb3J0cy51bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gdW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvcjtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIHZhbHVlIGFnYWluc3QgdGhlIEpTT04gU2NoZW1hIGJ5IG5hbWUgb3IgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHZhbGlkYXRvciAtIFRoZSBKU09OIFNjaGVtYSB2YWxpZGF0b3IgY3JlYXRlZCB2aWEge0BsaW5rICNjcmVhdGVKU09OVmFsaWRhdG9yfVxuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYSAtIFRoZSBKU09OIFNjaGVtYVxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYSA9IGZ1bmN0aW9uICh2YWxpZGF0b3IsIHNjaGVtYSwgdmFsdWUpIHtcbiAgc2NoZW1hID0gXy5jbG9uZURlZXAoc2NoZW1hKTsgLy8gQ2xvbmUgdGhlIHNjaGVtYSBhcyB6LXNjaGVtYSBhbHRlcnMgdGhlIHByb3ZpZGVkIGRvY3VtZW50XG5cbiAgdmFyIHJlc3BvbnNlID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG5cbiAgaWYgKCF2YWxpZGF0b3IudmFsaWRhdGUodmFsdWUsIHNjaGVtYSkpIHtcbiAgICByZXNwb25zZS5lcnJvcnMgPSBfLm1hcCh2YWxpZGF0b3IuZ2V0TGFzdEVycm9ycygpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBub3JtYWxpemVFcnJvcihlcnIpO1xuXG4gICAgICByZXR1cm4gZXJyO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGNvbnRlbnQgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudFR5cGUgLSBUaGUgQ29udGVudC1UeXBlIHZhbHVlIG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBzdXBwb3J0ZWRUeXBlcyAtIFRoZSBzdXBwb3J0ZWQgKGRlY2xhcmVkKSBDb250ZW50LVR5cGUgdmFsdWVzIGZvciB0aGUgcmVxdWVzdC9yZXNwb25zZVxuICogQHBhcmFtIHtvYmplY3R9IHJlc3VsdHMgLSBUaGUgcmVzdWx0cyBvYmplY3QgdG8gdXBkYXRlIGluIHRoZSBldmVudCBvZiBhbiBpbnZhbGlkIGNvbnRlbnQgdHlwZVxuICovXG5tb2R1bGUuZXhwb3J0cy52YWxpZGF0ZUNvbnRlbnRUeXBlID0gZnVuY3Rpb24gKGNvbnRlbnRUeXBlLCBzdXBwb3J0ZWRUeXBlcywgcmVzdWx0cykge1xuICB2YXIgcmF3Q29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcblxuICBpZiAoIV8uaXNVbmRlZmluZWQoY29udGVudFR5cGUpKSB7XG4gICAgLy8gaHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxNC5odG1sI3NlYzE0LjE3XG4gICAgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdOyAvLyBTdHJpcCB0aGUgcGFyYW1ldGVyKHMpIGZyb20gdGhlIGNvbnRlbnQgdHlwZVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIGV4YWN0IG1hdGNoIG9yIG1pbWUtdHlwZSBvbmx5IG1hdGNoXG4gIGlmIChfLmluZGV4T2Yoc3VwcG9ydGVkVHlwZXMsIHJhd0NvbnRlbnRUeXBlKSA9PT0gLTEgJiYgXy5pbmRleE9mKHN1cHBvcnRlZFR5cGVzLCBjb250ZW50VHlwZSkgPT09IC0xKSB7XG4gICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICBjb2RlOiAnSU5WQUxJRF9DT05URU5UX1RZUEUnLFxuICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ29udGVudC1UeXBlICgnICsgY29udGVudFR5cGUgKyAnKS4gIFRoZXNlIGFyZSBzdXBwb3J0ZWQ6ICcgK1xuICAgICAgICBzdXBwb3J0ZWRUeXBlcy5qb2luKCcsICcpLFxuICAgICAgcGF0aDogW11cbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIGFuIG9iamVjdCBhbmQgaW52b2tlIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBmb3IgZWFjaCBub2RlLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIG9iamVjdCB0byB3YWxrXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbZm5dIC0gVGhlIGZ1bmN0aW9uIHRvIGludm9rZVxuICovXG52YXIgd2FsayA9IG1vZHVsZS5leHBvcnRzLndhbGsgPSBmdW5jdGlvbiAob2JqLCBmbikge1xuICB2YXIgY2FsbEZuID0gXy5pc0Z1bmN0aW9uKGZuKTtcblxuICBmdW5jdGlvbiBkb1dhbGsgKGFuY2VzdG9ycywgbm9kZSwgcGF0aCkge1xuICAgIGlmIChjYWxsRm4pIHtcbiAgICAgIGZuKG5vZGUsIHBhdGgsIGFuY2VzdG9ycyk7XG4gICAgfVxuXG4gICAgLy8gV2UgZG8gbm90IHByb2Nlc3MgY2lyY3VsYXIgb2JqZWN0cyBhZ2FpblxuICAgIGlmIChhbmNlc3RvcnMuaW5kZXhPZihub2RlKSA9PT0gLTEpIHtcbiAgICAgIGFuY2VzdG9ycy5wdXNoKG5vZGUpO1xuXG4gICAgICBpZiAoXy5pc0FycmF5KG5vZGUpIHx8IF8uaXNQbGFpbk9iamVjdChub2RlKSkge1xuICAgICAgICBfLmVhY2gobm9kZSwgZnVuY3Rpb24gKG1lbWJlciwgaW5kZXhPcktleSkge1xuICAgICAgICAgIGRvV2FsayhhbmNlc3RvcnMsIG1lbWJlciwgcGF0aC5jb25jYXQoaW5kZXhPcktleS50b1N0cmluZygpKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFuY2VzdG9ycy5wb3AoKTtcbiAgfVxuXG4gIGRvV2FsayhbXSwgb2JqLCBbXSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgZWFjaCBpdGVtIGluIHRoZSBhcnJheSBhcmUgb2YgdHlwZSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBhcnIgLSBUaGUgYXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbU5hbWUgLSBUaGUgcGFyYW1ldGVyIG5hbWVcbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zID0gZnVuY3Rpb24gKGFyciwgcGFyYW1OYW1lKSB7XG4gIF8uZm9yRWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLicgKyBwYXJhbU5hbWUgKyAnIGF0IGluZGV4ICcgKyBpbmRleCArICcgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlcXVlc3QvcmVzcG9uc2Ugc3RyaWN0bHkgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6U3dheX5PcGVyYXRpb258bW9kdWxlOlN3YXl+UmVzcG9uc2V9IG9wT3JSZXMgLSBUaGUgU3dheSBvcGVyYXRpb24gb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7b2JqZWN0fG1vZHVsZTpTd2F5flNlcnZlclJlc3BvbnNlV3JhcHBlcn0gcmVxT3JSZXMgLSBUaGUgaHR0cCBjbGllbnQgcmVxdWVzdCAqKG9yIGVxdWl2YWxlbnQpKiBvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSBvciAqKHJlc3BvbnNlIGxpa2Ugb2JqZWN0KSpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdHJpY3RNb2RlIC0gVGhlIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0cmljdCBtb2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZm9ybURhdGEgLSBXaGV0aGVyIG9yIG5vdCBmb3JtIGRhdGEgcGFyYW1ldGVycyBzaG91bGQgYmUgdmFsaWRhdGVkIHN0cmljdGx5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuaGVhZGVyIC0gV2hldGhlciBvciBub3QgaGVhZGVyIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzdHJpY3RseVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnF1ZXJ5IC0gV2hldGhlciBvciBub3QgcXVlcnkgcGFyYW1ldGVycyBzaG91bGQgYmUgdmFsaWRhdGVkIHN0cmljdGx5XG4gKiBAcGFyYW0ge21vZHVsZTpTd2F5flZhbGlkYXRpb25SZXN1bHRzfSByZXN1bHRzIC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5tb2R1bGUuZXhwb3J0cy52YWxpZGF0ZVN0cmljdE1vZGUgPSBmdW5jdGlvbiAob3BPclJlcywgcmVxT3JSZXMsIHN0cmljdE1vZGUsIHJlc3VsdHMpIHtcbiAgdmFyIGRlZmluZWRQYXJhbWV0ZXJzID0ge1xuICAgIGZvcm1EYXRhOiBbXSxcbiAgICBoZWFkZXI6IFtdLFxuICAgIHF1ZXJ5OiBbXVxuICB9O1xuICB2YXIgbW9kZSA9IG9wT3JSZXMuY29uc3RydWN0b3IubmFtZSA9PT0gJ09wZXJhdGlvbicgPyAncmVxJyA6ICdyZXMnO1xuICB2YXIgc3RyaWN0TW9kZVZhbGlkYXRpb24gPSB7XG4gICAgZm9ybURhdGE6IGZhbHNlLFxuICAgIGhlYWRlcjogZmFsc2UsXG4gICAgcXVlcnk6IGZhbHNlXG4gIH07XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0cmljdE1vZGUpKSB7XG4gICAgaWYgKCFfLmlzQm9vbGVhbihzdHJpY3RNb2RlKSAmJiAhXy5pc1BsYWluT2JqZWN0KHN0cmljdE1vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLnN0cmljdE1vZGUgbXVzdCBiZSBhIGJvb2xlYW4gb3IgYW4gb2JqZWN0Jyk7XG4gICAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qoc3RyaWN0TW9kZSkpIHtcbiAgICAgIF8uZWFjaChbJ2Zvcm1EYXRhJywgJ2hlYWRlcicsICdxdWVyeSddLCBmdW5jdGlvbiAobG9jYXRpb24pIHtcbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0cmljdE1vZGVbbG9jYXRpb25dKSkge1xuICAgICAgICAgIGlmICghXy5pc0Jvb2xlYW4oc3RyaWN0TW9kZVtsb2NhdGlvbl0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLnN0cmljdE1vZGUuJyArIGxvY2F0aW9uICsgJyBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbltsb2NhdGlvbl0gPSBzdHJpY3RNb2RlW2xvY2F0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3RyaWN0TW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24uZm9ybURhdGEgPSB0cnVlO1xuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24uaGVhZGVyID0gdHJ1ZTtcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLnF1ZXJ5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IHByb2Nlc3MgdGhlIHBhcmFtZXRlcnMgaWYgbmVjZXNzYXJ5XG4gIGlmIChzdHJpY3RNb2RlVmFsaWRhdGlvbi5mb3JtRGF0YSA9PT0gdHJ1ZSB8fFxuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24uaGVhZGVyID09PSB0cnVlIHx8XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5xdWVyeSA9PT0gdHJ1ZSkge1xuICAgIF8uZWFjaCgobW9kZSA9PT0gJ3JlcScgPyBvcE9yUmVzIDogb3BPclJlcy5vcGVyYXRpb25PYmplY3QpLmdldFBhcmFtZXRlcnMoKSwgZnVuY3Rpb24gKHBhcmFtZXRlcikge1xuICAgICAgaWYgKF8uaXNBcnJheShkZWZpbmVkUGFyYW1ldGVyc1twYXJhbWV0ZXIuaW5dKSkge1xuICAgICAgICBkZWZpbmVkUGFyYW1ldGVyc1twYXJhbWV0ZXIuaW5dLnB1c2gocGFyYW1ldGVyLm5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFsaWRhdGluZyBmb3JtIGRhdGEgb25seSBtYXR0ZXJzIGZvciByZXF1ZXN0c1xuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24uZm9ybURhdGEgPT09IHRydWUgJiYgbW9kZSA9PT0gJ3JlcScpIHtcbiAgICBmaW5kRXh0cmFQYXJhbWV0ZXJzKGRlZmluZWRQYXJhbWV0ZXJzLmZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1BsYWluT2JqZWN0KHJlcU9yUmVzLmJvZHkpID8gT2JqZWN0LmtleXMocmVxT3JSZXMuYm9keSkgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtRGF0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzKTtcbiAgfVxuXG4gIC8vIEFsd2F5cyB2YWxpZGF0ZSB0aGUgaGVhZGVycyBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlc1xuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24uaGVhZGVyID09PSB0cnVlKSB7XG4gICAgZmluZEV4dHJhUGFyYW1ldGVycyhkZWZpbmVkUGFyYW1ldGVycy5oZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmlzUGxhaW5PYmplY3QocmVxT3JSZXMuaGVhZGVycykgPyBPYmplY3Qua2V5cyhyZXFPclJlcy5oZWFkZXJzKSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpbmcgdGhlIHF1ZXJ5IHN0cmluZyBvbmx5IG1hdHRlcnMgZm9yIHJlcXVlc3RzXG4gIGlmIChzdHJpY3RNb2RlVmFsaWRhdGlvbi5xdWVyeSA9PT0gdHJ1ZSAmJiBtb2RlID09PSAncmVxJykge1xuICAgIGZpbmRFeHRyYVBhcmFtZXRlcnMoZGVmaW5lZFBhcmFtZXRlcnMucXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmlzUGxhaW5PYmplY3QocmVxT3JSZXMucXVlcnkpID8gT2JqZWN0LmtleXMocmVxT3JSZXMucXVlcnkpIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAncXVlcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7XG4gIH1cbn07XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnc3dheTphcGknKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgndXJsJykucGFyc2U7XG52YXIgUGF0aCA9IHJlcXVpcmUoJy4vcGF0aCcpO1xudmFyIHZhbGlkYXRvcnMgPSByZXF1aXJlKCcuLi92YWxpZGF0aW9uL3ZhbGlkYXRvcnMnKTtcblxuLyoqXG4gKiBUaGUgU3dhZ2dlciBBUEkgb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBEbyBub3QgdXNlIGRpcmVjdGx5LlxuICpcbiAqICoqRXh0cmEgUHJvcGVydGllczoqKiBPdGhlciB0aGFuIHRoZSBkb2N1bWVudGVkIHByb3BlcnRpZXMsIHRoaXMgb2JqZWN0IGFsc28gZXhwb3NlcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgZGVmaW5pdGlvblxuICogb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9yaWdpbmFsIFN3YWdnZXIgZGVmaW5pdGlvblxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQgLSBUaGUgU3dhZ2dlciBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZW1vdGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIFN3YWdnZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHBhcmFtIHtvYmplY3R9IHJlZmVyZW5jZXMgLSBUaGUgbG9jYXRpb24gYW5kIHJlc29sdXRpb24gb2YgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgaW4gdGhlIFN3YWdnZXIgZGVmaW5pdGlvblxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gc3dhZ2dlckFwaS5jcmVhdGVcbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gY3VzdG9tRm9ybWF0cyAtIFRoZSBrZXkvdmFsdWUgcGFpciBvZiBjdXN0b20gZm9ybWF0cyAqKFRoZSBrZXlzIGFyZSB0aGUgZm9ybWF0IG5hbWUgYW5kIHRoZSB2YWx1ZXNcbiAqIGFyZSBhc3luYyBmdW5jdGlvbnMuICBTZWUgW1pTY2hlbWEgQ3VzdG9tIEZvcm1hdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hI3JlZ2lzdGVyLWEtY3VzdG9tLWZvcm1hdCkpKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGN1c3RvbUZvcm1hdEdlbmVyYXRvcnMgLSBUaGUga2V5L3ZhbHVlIHBhaXIgb2YgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3JzICooVGhlIGtleXMgYXJlIHRoZSBmb3JtYXQgbmFtZSBhbmQgdGhlIHZhbHVlc1xuICogYXJlIGZ1bmN0aW9ucy4gIFNlZSBbanNvbi1zY2hlbWEtbW9ja2VyIEN1c3RvbSBGb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLXNjaGVtYS1mYWtlci9qc29uLXNjaGVtYS1mYWtlciNjdXN0b20tZm9ybWF0cykpKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5Eb2N1bWVudFZhbGlkYXRpb25GdW5jdGlvbltdfSBjdXN0b21WYWxpZGF0b3JzIC0gVGhlIGFycmF5IG9mIGN1c3RvbSB2YWxpZGF0b3JzXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcmlnaW5hbCBTd2FnZ2VyIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkIC0gVGhlIFN3YWdnZXIgZGVmaW5pdGlvbiB3aXRoIG9ubHkgaXRzIHJlbW90ZSByZWZlcmVuY2VzIHJlc29sdmVkICooVGhpc1xuICogbWVhbnMgYWxsIHJlZmVyZW5jZXMgdG8gZXh0ZXJuYWwvcmVtb3RlIGRvY3VtZW50cyBhcmUgcmVwbGFjZWQgd2l0aCBpdHMgZGVyZWZlcmVuY2VkIHZhbHVlIGJ1dCBhbGwgbG9jYWwgcmVmZXJlbmNlc1xuICogYXJlIGxlZnQgdW5yZXNvbHZlZC4pKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIFN3YWdnZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiAqKFRoaXMgbWVhbnMgdGhhdCBhbGwgcmVzb2x2YWJsZSByZWZlcmVuY2VzIGFyZSByZXBsYWNlZCB3aXRoIHRoZWlyIGRlcmVmZXJlbmNlZCB2YWx1ZS4pKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRvY3VtZW50YXRpb25VcmwgLSBUaGUgVVJMIHRvIHRoZSBTd2FnZ2VyIGRvY3VtZW50YXRpb25cbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGF0aFtdfSBwYXRoT2JqZWN0cyAtIFRoZSB1bmlxdWUgYFBhdGhgIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvclxuICogQHByb3BlcnR5IHtvYmplY3R9IHJlZmVyZW5jZXMgLSBUaGUgcmVmZXJlbmNlIG1ldGFkYXRhICooU2VlIFtKc29uUmVmc35SZXNvbHZlZFJlZkRldGFpbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS93aGl0bG9ja2pjL2pzb24tcmVmcy9ibG9iL21hc3Rlci9kb2NzL0FQSS5tZCNtb2R1bGVfSnNvblJlZnMuLlJlc29sdmVkUmVmRGV0YWlscykpKlxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gVGhlIFN3YWdnZXIgQVBJIHZlcnNpb25cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gU3dhZ2dlckFwaSAoZGVmaW5pdGlvbiwgZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHJlZmVyZW5jZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gIGRlYnVnKCdDcmVhdGluZyBTd2FnZ2VyQXBpIGZyb20gJXMnLCBfLmlzU3RyaW5nKG9wdGlvbnMuZGVmaW5pdGlvbikgPyBvcHRpb25zLmRlZmluaXRpb24gOiAndGhlIHByb3ZpZGVkIGRvY3VtZW50Jyk7XG5cbiAgLy8gQXNzaWduIHRoaXMgc28gb3RoZXIgb2JqZWN0IGNhbiB1c2UgaXRcbiAgdGhpcy5fZGVidWcgPSBkZWJ1ZztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmN1c3RvbUZvcm1hdHMgPSB7fTtcbiAgdGhpcy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzID0ge307XG4gIHRoaXMuY3VzdG9tVmFsaWRhdG9ycyA9IFtdO1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCA9IGRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQ7XG4gIHRoaXMuZG9jdW1lbnRhdGlvblVybCA9ICdodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCc7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gIHRoaXMudmVyc2lvbiA9ICcyLjAnO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiBwcm9wZXJ0aWVzXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb24pO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSBmb3JtYXRzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbUZvcm1hdHMsIF8uYmluZChTd2FnZ2VyQXBpLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdCwgdGhpcykpO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSBmb3JtYXRzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMsIF8uYmluZChTd2FnZ2VyQXBpLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciwgdGhpcykpO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSB2YWxpZGF0b3JzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsIF8uYmluZChTd2FnZ2VyQXBpLnByb3RvdHlwZS5yZWdpc3RlclZhbGlkYXRvciwgdGhpcykpO1xuXG4gIGRlYnVnKCcgIFBhdGhzOicpO1xuXG4gIC8vIENyZWF0ZSB0aGUgUGF0aCBvYmplY3RzXG4gIHRoaXMucGF0aE9iamVjdHMgPSBfLm1hcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKHBhdGhEZWYsIHBhdGgpIHtcbiAgICByZXR1cm4gbmV3IFBhdGgodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXy5nZXQoZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgWydwYXRocycsIHBhdGhdKSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aERlZixcbiAgICAgICAgICAgICAgICAgICAgWydwYXRocycsIHBhdGhdKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3BlcmF0aW9uIGZvciB0aGUgZ2l2ZW4gcGF0aCBhbmQgb3BlcmF0aW9uLlxuICpcbiAqICoqTm90ZToqKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHVzZWQgd2hlbiBgcmVxT3JQYXRoYCBpcyBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCAqKG9yIGVxdWl2YWxlbnQpKjpcbiAqXG4gKiAgICogYG1ldGhvZGBcbiAqICAgKiBgb3JpZ2luYWxVcmxgXG4gKiAgICogYHVybGBcbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpZE9yUGF0aE9yUmVxIC0gVGhlIFN3YWdnZXIgb3BlYXJ0aW9uIGlkLCBwYXRoIHN0cmluZyBvciB0aGUgaHR0cCBjbGllbnQgcmVxdWVzdCAqKG9yXG4gKiBlcXVpdmFsZW50KSpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWV0aG9kXSAtIFRoZSBTd2FnZ2VyIG9wZXJhdGlvbiBtZXRob2QgXyhub3QgdXNlZCB3aGVuIHByb3ZpZGluZyBhbiBvcGVyYXRpb24gaWQpX1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb259IFRoZSBgT3BlcmF0aW9uYCBmb3IgdGhlIHByb3ZpZGVkIG9wZXJhdGlvbiBpZCwgb3IgcGF0aCBhbmQgbWV0aG9kIG9yIGB1bmRlZmluZWRgIGlmXG4gKiB0aGVyZSBpcyBubyBvcGVyYXRpb24gZm9yIHRoYXQgb3BlcmF0aW9uIGlkLCBvciBwYXRoIGFuZCBtZXRob2QgY29tYmluYXRpb25cbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUuZ2V0T3BlcmF0aW9uID0gZnVuY3Rpb24gKGlkT3JQYXRoT3JSZXEsIG1ldGhvZCkge1xuICB2YXIgcGF0aE9iamVjdDtcbiAgdmFyIG9wZXJhdGlvbjtcblxuICBpZiAoXy5pc09iamVjdChpZE9yUGF0aE9yUmVxKSkge1xuICAgIG1ldGhvZCA9IGlkT3JQYXRoT3JSZXEubWV0aG9kO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQobWV0aG9kKSkge1xuICAgIF8uZWFjaCh0aGlzLmdldFBhdGhzKCksIGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcGVyYXRpb24pKSB7XG4gICAgICAgIG9wZXJhdGlvbiA9IHBhdGguZ2V0T3BlcmF0aW9uKGlkT3JQYXRoT3JSZXEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHBhdGhPYmplY3QgPSB0aGlzLmdldFBhdGgoaWRPclBhdGhPclJlcSk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocGF0aE9iamVjdCkpIHtcbiAgICAgIG9wZXJhdGlvbiA9IHBhdGhPYmplY3QuZ2V0T3BlcmF0aW9uKG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbjtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgb3BlcmF0aW9ucyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggb3IgYWxsIG9wZXJhdGlvbnMgaW4gdGhlIEFQSS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIFN3YWdnZXIgcGF0aFxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gQWxsIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoZSBwcm92aWRlZCBwYXRoIG9yIGFsbCBBUEkgb3BlcmF0aW9uc1xuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5nZXRPcGVyYXRpb25zID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgdmFyIG9wZXJhdGlvbnMgPSBbXTtcbiAgdmFyIHBhdGhPYmplY3Q7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGF0aCkpIHtcbiAgICBfLmVhY2godGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKHBPYmplY3QpIHtcbiAgICAgIG9wZXJhdGlvbnMucHVzaC5hcHBseShvcGVyYXRpb25zLCBwT2JqZWN0LmdldE9wZXJhdGlvbnMoKSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aE9iamVjdCA9IHRoaXMuZ2V0UGF0aChwYXRoKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXRoT2JqZWN0KSkge1xuICAgICAgb3BlcmF0aW9ucyA9IHBhdGhPYmplY3QuZ2V0T3BlcmF0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcGVyYXRpb25zO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBvcGVyYXRpb25zIGZvciB0aGUgcHJvdmlkZWQgdGFnLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGFnXSAtIFRoZSBTd2FnZ2VyIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gQWxsIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoZSBwcm92aWRlZCB0YWdcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUuZ2V0T3BlcmF0aW9uc0J5VGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gXy5yZWR1Y2UodGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbnMsIHBhdGhPYmplY3QpIHtcbiAgICBvcGVyYXRpb25zLnB1c2guYXBwbHkob3BlcmF0aW9ucywgcGF0aE9iamVjdC5nZXRPcGVyYXRpb25zQnlUYWcodGFnKSk7XG5cbiAgICByZXR1cm4gb3BlcmF0aW9ucztcbiAgfSwgW10pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgcmVxdWVzdC5cbiAqXG4gKiAqKk5vdGU6KiogQmVsb3cgaXMgdGhlIGxpc3Qgb2YgcHJvcGVydGllcyB1c2VkIHdoZW4gYHJlcU9yUGF0aGAgaXMgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgKihvciBlcXVpdmFsZW50KSo6XG4gKlxuICogICAqIGBvcmlnaW5hbFVybGBcbiAqICAgKiBgdXJsYFxuICpcbiAqICooU2VlOiB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2NsaWVudHJlcXVlc3R9KSpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHBhdGhPclJlcSAtIFRoZSBTd2FnZ2VyIHBhdGggc3RyaW5nIG9yIHRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhdGh9IFRoZSBjb3JyZXNwb25kaW5nIGBQYXRoYCBvYmplY3QgZm9yIHRoZSByZXF1ZXN0ZWQgcGF0aCBvciByZXF1ZXN0XG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAocGF0aE9yUmVxKSB7XG4gIHZhciBsYXN0SW5kZXggPSAtMTtcbiAgdmFyIG5leHRJbmRleCA9IC0xO1xuICB2YXIgbWF0Y2hlcztcbiAgdmFyIHVybDtcblxuICBpZiAoXy5pc09iamVjdChwYXRoT3JSZXEpKSB7XG4gICAgdXJsID0gcGFyc2VVcmwocGF0aE9yUmVxLm9yaWdpbmFsVXJsIHx8IHBhdGhPclJlcS51cmwpLnBhdGhuYW1lO1xuXG4gICAgLy8gRmluZCBhbGwgbWF0Y2hpbmcgcGF0aHNcbiAgICBtYXRjaGVzID0gXy5yZWR1Y2UodGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKG5ld01hdGNoZXMsIHBhdGhPYmplY3QsIGluZGV4KSB7XG4gICAgICB2YXIgaXNNYXRjaCA9IF8uaXNBcnJheShwYXRoT2JqZWN0LnJlZ2V4cC5leGVjKHVybCkpO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBuZXdNYXRjaGVzLnB1c2goe1xuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICBzZWdtZW50czogcGF0aE9iamVjdC5wYXRoLnNwbGl0KCcvJylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld01hdGNoZXM7XG4gICAgfSwgW10pO1xuXG4gICAgLy8gVE9ETzogTG9nIGFsbCBtYXRjaGVzXG5cbiAgICB3aGlsZSAobWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBtYXRjaGVzID0gXy5yZWR1Y2UobWF0Y2hlcywgZnVuY3Rpb24gKG5ld01hdGNoZXMsIG1hdGNoKSB7XG4gICAgICAgIHZhciBuZXdJbmRleCA9IF8uZmluZEluZGV4KG1hdGNoLnNlZ21lbnRzLCBmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgICAgIHJldHVybiBfLnN0YXJ0c1dpdGgoc2VnbWVudCwgJ3snKSAmJiBfLmVuZHNXaXRoKHNlZ21lbnQsICd9Jyk7XG4gICAgICAgIH0sIGxhc3RJbmRleCArIDEpO1xuXG4gICAgICAgIC8vIENvbXBsZXRlIHN0YXRpYyBtYXRjaCBzbyB1c2Ugc29tZSB2YWx1ZSB0aGF0IGNhbid0IGJlIGV4Y2VlZGVkXG4gICAgICAgIGlmIChuZXdJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBuZXdJbmRleCA9IEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0luZGV4ID4gbmV4dEluZGV4KSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgbmV3TWF0Y2hlcyA9IFttYXRjaF07XG4gICAgICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPT09IG5leHRJbmRleCkge1xuICAgICAgICAgIG5ld01hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3TWF0Y2hlcztcbiAgICAgIH0sIFtdKTtcblxuICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIHRyaWVkIHRvIGZpbHRlciB0aGUgbWF0Y2hlcyBidXQgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMgdGhhdCBhcmUgaWRlbnRpY2FsIGFuZCBjYW5ub3RcbiAgICAgIC8vIGJlIGZpbHRlcmVkIGZ1cnRoZXIuICBUaGUgb25seSBjaG9pY2UgaXMgdG8gY2hvb3NlIHRoZSBmaXJzdCBtYXRjaC5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IG5leHRJbmRleCkge1xuICAgICAgICBtYXRjaGVzLnNwbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgbGFzdEluZGV4ID0gbmV4dEluZGV4O1xuICAgIH1cblxuICAgIC8vIFRPRE86IExvZyBtYXRjaFxuXG4gICAgcmV0dXJuIG1hdGNoZXMubGVuZ3RoID4gMCA/IHRoaXMucGF0aE9iamVjdHNbbWF0Y2hlc1swXS5pbmRleF0gOiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIF8uZmluZCh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAocGF0aE9iamVjdCkge1xuICAgICAgcmV0dXJuIHBhdGhPclJlcSA9PT0gcGF0aE9iamVjdC5wYXRoO1xuICAgIH0pO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHBhdGggb2JqZWN0cyBmb3IgdGhlIFN3YWdnZXIgQVBJLlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXRoW119IFRoZSBgUGF0aGAgb2JqZWN0c1xuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5nZXRQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGF0aE9iamVjdHM7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB2YWxpZGF0b3IgLSBUaGUgZm9ybWF0IHZhbGlkYXRvciAqKFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYSNyZWdpc3Rlci1hLWN1c3RvbS1mb3JtYXQpKSpcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUucmVnaXN0ZXJGb3JtYXQgPSBmdW5jdGlvbiAobmFtZSwgdmFsaWRhdG9yKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdGhpcy5jdXN0b21Gb3JtYXRzW25hbWVdID0gdmFsaWRhdG9yO1xuXG4gIGhlbHBlcnMucmVnaXN0ZXJGb3JtYXQobmFtZSwgdmFsaWRhdG9yKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZvcm1hdEdlbmVyYXRvciAtIFRoZSBmb3JtYXQgZ2VuZXJhdG9yICooU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gZnVuY3Rpb24gKG5hbWUsIGZvcm1hdEdlbmVyYXRvcikge1xuICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoZm9ybWF0R2VuZXJhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Zvcm1hdEdlbmVyYXRvciBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzRnVuY3Rpb24oZm9ybWF0R2VuZXJhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Zvcm1hdEdlbmVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHRoaXMuY3VzdG9tRm9ybWF0R2VuZXJhdG9yc1tuYW1lXSA9IGZvcm1hdEdlbmVyYXRvcjtcblxuICBoZWxwZXJzLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yKG5hbWUsIGZvcm1hdEdlbmVyYXRvcik7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS51bnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKF8uaXNTdHJpbmcobmFtZSkpIHtcbiAgICBkZWxldGUgdGhpcy5jdXN0b21Gb3JtYXRzW25hbWVdO1xuXG4gICAgaGVscGVycy51bnJlZ2lzdGVyRm9ybWF0KG5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXQgZ2VuZXJhdG9yXG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLnVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIGRlbGV0ZSB0aGlzLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnNbbmFtZV07XG5cbiAgICBoZWxwZXJzLnVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IobmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gdmFsaWRhdG9yLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuRG9jdW1lbnRWYWxpZGF0aW9uRnVuY3Rpb259IHZhbGlkYXRvciAtIFRoZSB2YWxpZGF0b3JcbiAqXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIHRoZSB2YWxpZGF0b3IgaXMgbm90IGEgZnVuY3Rpb25cbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUucmVnaXN0ZXJWYWxpZGF0b3IgPSBmdW5jdGlvbiAodmFsaWRhdG9yKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc0Z1bmN0aW9uKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB0aGlzLmN1c3RvbVZhbGlkYXRvcnMucHVzaCh2YWxpZGF0b3IpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBTd2FnZ2VyIEFQSSBkb2N1bWVudChzKS5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuVmFsaWRhdGlvblJlc3VsdHN9IFRoZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciByZXN1bHRzID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG5cbiAgLy8gVmFsaWRhdGUgdGhlIGRvY3VtZW50IHN0cnVjdHVyYWxseVxuICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHRoaXMsIHVuZGVmaW5lZCwgW3ZhbGlkYXRvcnMuanNvblNjaGVtYVZhbGlkYXRvcl0sIHJlc3VsdHMpO1xuXG4gIC8vIFBlcmZvcm0gcmVtYWluaW5nIHZhbGlkYXRpb24gb25seSBpZiB0aGUgZG9jdW1lbnQgaXMgc3RydWN0dXJhbGx5IHZhbGlkXG4gIGlmIChyZXN1bHRzLmVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBSdW4gcGx1Z2luIHZhbGlkYXRvcnNcbiAgICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHRoaXMsIHVuZGVmaW5lZCwgdmFsaWRhdG9ycy5zZW1hbnRpY1ZhbGlkYXRvcnMsIHJlc3VsdHMpO1xuXG4gICAgLy8gUnVuIGN1c3RvbSB2YWxpZGF0b3JzXG4gICAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyh0aGlzLCB1bmRlZmluZWQsIHRoaXMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU3dhZ2dlckFwaTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgSnNvblJlZnMgPSByZXF1aXJlKCdqc29uLXJlZnMnKTtcbnZhciBQYXJhbWV0ZXIgPSByZXF1aXJlKCcuL3BhcmFtZXRlcicpO1xudmFyIFJlc3BvbnNlID0gcmVxdWlyZSgnLi9yZXNwb25zZScpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG5cbi8qKlxuICogVGhlIFN3YWdnZXIgT3BlcmF0aW9uIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGRlZmluaXRpb25cbiAqICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIFBhdGggb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBtZXRob2RcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uICooVGhlIHJhdyBvcGVyYXRpb24gZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiAqKFRoZSByYXcgb3BlcmF0aW9uIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB3ZXJlIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIGZvciB0aGlzIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIGBQYXRoYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IHBhcmFtZXRlck9iamVjdHMgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IHNlY3VyaXR5RGVmaW5pdGlvbnMgLSBUaGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGlzIG9wZXJhdGlvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBPcGVyYXRpb24gKHBhdGhPYmplY3QsIG1ldGhvZCwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgdmFyIHNlZW5QYXJhbWV0ZXJzID0gW107XG4gIHZhciB0aGF0ID0gdGhpcztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmNvbnN1bWVzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuY29uc3VtZXMgfHwgcGF0aE9iamVjdC5hcGkuY29uc3VtZXMgfHwgW107XG4gIHRoaXMuZGVmaW5pdGlvbiA9IF8uY2xvbmVEZWVwKGRlZmluaXRpb24pOyAvLyBDbG9uZSBzbyB3ZSBkbyBub3QgYWx0ZXIgdGhlIG9yaWdpbmFsXG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBfLmNsb25lRGVlcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7IC8vIENsb25lIHNvIHdlIGRvIG5vdCBhbHRlciB0aGUgb3JpZ2luYWxcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IFtdOyAvLyBDb21wdXRlZCBiZWxvd1xuICB0aGlzLnBhdGhPYmplY3QgPSBwYXRoT2JqZWN0O1xuICB0aGlzLnBhdGhUb0RlZmluaXRpb24gPSBwYXRoVG9EZWZpbml0aW9uO1xuICB0aGlzLnByb2R1Y2VzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucHJvZHVjZXMgfHwgcGF0aE9iamVjdC5hcGkucHJvZHVjZXMgfHwgW107XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiBwcm9wZXJ0aWVzXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICB0aGlzLl9kZWJ1ZyA9IHRoaXMucGF0aE9iamVjdC5hcGkuX2RlYnVnO1xuXG4gIC8vIEFkZCB0aGUgUGFyYW1ldGVyIG9iamVjdHMgZnJvbSB0aGUgUGF0aCBvYmplY3QgdGhhdCB3ZXJlIG5vdCByZWRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKHBhdGhPYmplY3QucGFyYW1ldGVyT2JqZWN0cywgZnVuY3Rpb24gKHBhcmFtZXRlck9iamVjdCkge1xuICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyT2JqZWN0LmluICsgJzonICsgcGFyYW1ldGVyT2JqZWN0Lm5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdDtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgJXMgYXQgJXMnLCB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnB0cik7XG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgQ29uc3VtZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMuY29uc3VtZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBQYXJhbWV0ZXJzOicpO1xuXG4gIC8vIENyZWF0ZSBQYXJhbWV0ZXIgb2JqZWN0cyBmcm9tIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgXy5lYWNoKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIga2V5ID0gcGFyYW1EZWYuaW4gKyAnOicgKyBwYXJhbURlZi5uYW1lO1xuICAgIHZhciBzZWVuSW5kZXggPSBzZWVuUGFyYW1ldGVycy5pbmRleE9mKGtleSk7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuICAgIHZhciBwYXJhbWV0ZXJPYmplY3QgPSBuZXcgUGFyYW1ldGVyKHRoYXQsIF8uZ2V0KHBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSwgcGFyYW1EZWYsIHBQYXRoKTtcblxuICAgIGlmIChzZWVuSW5kZXggPiAtMSkge1xuICAgICAgdGhhdC5wYXJhbWV0ZXJPYmplY3RzW3NlZW5JbmRleF0gPSBwYXJhbWV0ZXJPYmplY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQucGFyYW1ldGVyT2JqZWN0cy5wdXNoKHBhcmFtZXRlck9iamVjdCk7XG5cbiAgICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgUHJvZHVjZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMucHJvZHVjZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBSZXNwb25zZXM6Jyk7XG5cbiAgLy8gQ3JlYXRlIHJlc3BvbnNlIG9iamVjdHMgZnJvbSByZXNwb25zZXMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgdGhpcy5yZXNwb25zZU9iamVjdHMgPSBfLm1hcCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgZnVuY3Rpb24gKHJlc3BvbnNlRGVmLCBjb2RlKSB7XG4gICAgdmFyIHJQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydyZXNwb25zZXMnLCBjb2RlXSlcblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmdldCh0aGF0LnBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHJQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRGVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgclBhdGgpO1xuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgICAgIFNlY3VyaXR5OicpO1xuXG4gIC8vIEJyaW5nIGluIHRoZSBzZWN1cml0eSBkZWZpbml0aW9ucyBmb3IgZWFzaWVyIGFjY2Vzc1xuXG4gIC8vIE92ZXJyaWRlIGdsb2JhbCBzZWN1cml0eSB3aXRoIGxvY2FsbHkgZGVmaW5lZFxuICB2YXIgc2VjdXJpdHkgPSB0aGlzLnNlY3VyaXR5IHx8IHBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5O1xuXG4gIHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyA9IF8ucmVkdWNlKHNlY3VyaXR5LCBmdW5jdGlvbiAoZGVmcywgcmVxcykge1xuICAgIF8uZWFjaChyZXFzLCBmdW5jdGlvbiAocmVxLCBuYW1lKSB7XG4gICAgICB2YXIgZGVmID0gcGF0aE9iamVjdC5hcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2VjdXJpdHlEZWZpbml0aW9ucyA/XG4gICAgICAgICAgICBwYXRoT2JqZWN0LmFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eURlZmluaXRpb25zW25hbWVdIDpcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGRlZikpIHtcbiAgICAgICAgZGVmc1tuYW1lXSA9IGRlZjtcbiAgICAgIH1cblxuICAgICAgdGhhdC5fZGVidWcoJyAgICAgICAgICAgICVzICh0eXBlOiAlcyknLCBuYW1lLCBfLmlzVW5kZWZpbmVkKGRlZikgPyAnbWlzc2luZyc6IGRlZi50eXBlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkZWZzO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyYW1ldGVyIHdpdGggdGhlIHByb3ZpZGVkIG5hbWUgYW5kIGxvY2F0aW9uIHdoZW4gcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xvY2F0aW9uXSAtIFRoZSBsb2NhdGlvbiAqKGBpbmApKiBvZiB0aGUgcGFyYW1ldGVyICooVXNlZCBmb3IgZGlzYW1iaWd1YXRpb24pKlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IFRoZSBgUGFyYW1ldGVyYCBtYXRjaGluZyB0aGUgbG9jYXRpb24gYW5kIG5hbWUgY29tYmluYXRpb24gb3IgYHVuZGVmaW5lZGAgaWYgdGhlcmVcbiAqIGlzIG5vIG1hdGNoXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUuZ2V0UGFyYW1ldGVyID0gZnVuY3Rpb24gKG5hbWUsIGxvY2F0aW9uKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5wYXJhbWV0ZXJPYmplY3RzLCBmdW5jdGlvbiAocGFyYW1ldGVyT2JqZWN0KSB7XG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdC5uYW1lID09PSBuYW1lICYmIChfLmlzVW5kZWZpbmVkKGxvY2F0aW9uKSA/IHRydWUgOiBwYXJhbWV0ZXJPYmplY3QuaW4gPT09IGxvY2F0aW9uKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBBbGwgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhlIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cyBjb2RlIG9yIHRoZSBkZWZhdWx0IHJlc3BvbnNlICooaWYgYXZhaWxhYmxlKSogaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtzdGF0dXNDb2RlPSdkZWZhdWx0J10gLSBUaGUgc3RhdHVzIGNvZGVcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUmVzcG9uc2V9IFRoZSBgUmVzcG9uc2VgIG9yIGB1bmRlZmluZWRgIGlmIG9uZSBjYW5ub3QgYmUgZm91bmRcbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRSZXNwb25zZSA9IGZ1bmN0aW9uIChzdGF0dXNDb2RlKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHN0YXR1c0NvZGUpKSB7XG4gICAgc3RhdHVzQ29kZSA9ICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChfLmlzTnVtYmVyKHN0YXR1c0NvZGUpKSB7XG4gICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiBfLmZpbmQodGhpcy5nZXRSZXNwb25zZXMoKSwgZnVuY3Rpb24gKHJlc3BvbnNlT2JqZWN0KSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0LnN0YXR1c0NvZGUgPT09IHN0YXR1c0NvZGU7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCByZXNwb25zZXMgZm9yIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlJlc3BvbnNlW119IEFsbCBgUmVzcG9uc2VgIG9iamVjdHMgZm9yIHRoZSBvcGVyYXRpb25cbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRSZXNwb25zZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlc3BvbnNlT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY29tcG9zaXRlIHNlY3VyaXR5IGRlZmluaXRpb25zIGZvciB0aGlzIG9wZXJhdGlvbi5cbiAqXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgQVBJIGFuZCBgdGhpcy5zZWN1cml0eWAgaXMgdGhhdCBgdGhpcy5zZWN1cml0eWAgaXMgdGhlIHJhdyBgc2VjdXJpdHlgIHZhbHVlIGZvciB0aGVcbiAqIG9wZXJhdGlvbiB3aGVyZSBhcyB0aGlzIEFQSSB3aWxsIHJldHVybiB0aGUgZ2xvYmFsIGBzZWN1cml0eWAgdmFsdWUgd2hlbiBhdmFpbGFibGUgYW5kIHRoaXMgb3BlcmF0aW9uJ3Mgc2VjdXJpdHlcbiAqIGlzIHVuZGVmaW5lZC5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0W119IFRoZSBzZWN1cml0eSBmb3IgdGhpcyBvcGVyYXRpb25cbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRTZWN1cml0eSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2VjdXJpdHkgfHwgdGhpcy5wYXRoT2JqZWN0LmFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlcXVlc3QuXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIGByZXFgIHByb3BlcnRpZXMgdXNlZCAqKHJlcSBzaG91bGQgYmUgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgb3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgYm9keWA6IFVzZWQgZm9yIGBib2R5YCBhbmQgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzXG4gKiAgICogYGZpbGVzYDogVXNlZCBmb3IgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzIHdob3NlIGB0eXBlYCBpcyBgZmlsZWBcbiAqICAgKiBgaGVhZGVyc2A6IFVzZWQgZm9yIGBoZWFkZXJgIHBhcmFtZXRlcnMgYW5kIGNvbnN1bWVzXG4gKiAgICogYG9yaWdpbmFsVXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqICAgKiBgcXVlcnlgOiBVc2VkIGZvciBgcXVlcnlgIHBhcmFtZXRlcnNcbiAqICAgKiBgdXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqXG4gKiBGb3IgYHBhdGhgIHBhcmFtZXRlcnMsIHdlIHdpbGwgdXNlIHRoZSBvcGVyYXRpb24ncyBgcmVnZXhwYCBwcm9wZXJ0eSB0byBwYXJzZSBvdXQgcGF0aCBwYXJhbWV0ZXJzIHVzaW5nIHRoZVxuICogYG9yaWdpbmFsVXJsYCBvciBgdXJsYCBwcm9wZXJ0eS5cbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcSAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlJlcXVlc3RWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLnZhbGlkYXRlUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXEsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgQ29udGVudC1UeXBlIGlmIHRoZXJlIGlzIGEgc2V0IG9mIGV4cGVjdGVkIGNvbnN1bWVzIGFuZCB0aGVyZSBpcyBhIGJvZHlcbiAgaWYgKHRoaXMuY29uc3VtZXMubGVuZ3RoID4gMCAmJiAhXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICBoZWxwZXJzLnZhbGlkYXRlQ29udGVudFR5cGUoaGVscGVycy5nZXRDb250ZW50VHlwZShyZXEuaGVhZGVycyksIHRoaXMuY29uc3VtZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgXy5lYWNoKHRoaXMuZ2V0UGFyYW1ldGVycygpLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICB2YXIgcGFyYW1WYWx1ZSA9IHBhcmFtLmdldFZhbHVlKHJlcSk7XG4gICAgdmFyIHZFcnI7XG5cbiAgICBpZiAoIXBhcmFtVmFsdWUudmFsaWQpIHtcbiAgICAgIHZFcnIgPSB7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFUVVFU1RfUEFSQU1FVEVSJyxcbiAgICAgICAgZXJyb3JzOiBwYXJhbVZhbHVlLmVycm9yLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogcGFyYW1WYWx1ZS5lcnJvci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbjogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QuaW4sXG4gICAgICAgIC8vIFJlcG9ydCB0aGUgYWN0dWFsIGVycm9yIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLiAgT3RoZXJ3aXNlLCByZXBvcnQgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBwYXJhbWV0ZXIgKCcgKyBwYXJhbS5uYW1lICsgJyk6ICcgKyAoKHBhcmFtVmFsdWUuZXJyb3JzIHx8IFtdKS5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlKSxcbiAgICAgICAgbmFtZTogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QubmFtZSxcbiAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICB9O1xuXG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHZFcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgc3RyaWN0IG1vZGVcbiAgaGVscGVycy52YWxpZGF0ZVN0cmljdE1vZGUodGhpcywgcmVxLCBvcHRpb25zLnN0cmljdE1vZGUsIHJlc3VsdHMpO1xuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIHZhbGlkYXRvcnNcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyhyZXEsIHRoaXMsIG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcyAtIFRoZSByZXNwb25zZSBvciByZXNwb25zZSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHttb2R1bGU6c3dheS5SZXNwb25zZVZhbGlkYXRpb25PcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgdmFsaWRhdGlvbiBvcHRpb25zXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHJlYWxTdGF0dXNDb2RlO1xuICB2YXIgcmVzcG9uc2U7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIHJlYWxTdGF0dXNDb2RlID0gcmVzLnN0YXR1c0NvZGUgfHwgJ2RlZmF1bHQnO1xuICByZXNwb25zZSA9IHRoaXMuZ2V0UmVzcG9uc2UocmVhbFN0YXR1c0NvZGUpO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlc3BvbnNlKSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cywgdXNlIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlzIG9uZSAoVGhpcyBpcyBTd2FnZ2VyJ3MgYXBwcm9hY2gpXG4gICAgcmVzcG9uc2UgPSB0aGlzLmdldFJlc3BvbnNlKCdkZWZhdWx0Jyk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9DT0RFJyxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYSBkZWZpbmVkIFxcJycgK1xuICAgICAgICAgICAgICAgICAgIChyZWFsU3RhdHVzQ29kZSA9PT0gJ2RlZmF1bHQnID9cbiAgICAgICAgICAgICAgICAgICAgcmVhbFN0YXR1c0NvZGUgOlxuICAgICAgICAgICAgICAgICAgICByZWFsU3RhdHVzQ29kZSArICdcXCcgb3IgXFwnZGVmYXVsdCcpICsgJ1xcJyByZXNwb25zZSBjb2RlJyxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICByZXN1bHRzID0gcmVzcG9uc2UudmFsaWRhdGVSZXNwb25zZShyZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9wZXJhdGlvbjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xuXG4vKipcbiAqIE9iamVjdCByZXByZXNlbnRpbmcgYSBwYXJhbWV0ZXIgdmFsdWUuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IHBhcmFtZXRlck9iamVjdCAtIFRoZSBgUGFyYW1ldGVyYCBvYmplY3RcbiAqIEBwYXJhbSB7Kn0gcmF3IC0gVGhlIG9yaWdpbmFsL3JhdyB2YWx1ZVxuICpcbiAqIEBwcm9wZXJ0eSB7RXJyb3J9IGVycm9yIC0gVGhlIGVycm9yKHMpIGVuY291bnRlcmVkIGR1cmluZyBwcm9jZXNzaW5nL3ZhbGlkYXRpbmcgdGhlIHBhcmFtZXRlciB2YWx1ZVxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IHBhcmFtZXRlck9iamVjdCAtIFRoZSBgUGFyYW1ldGVyYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7Kn0gcmF3IC0gVGhlIG9yaWdpbmFsIHBhcmFtZXRlciB2YWx1ZSAqKERvZXMgbm90IHRha2UgZGVmYXVsdCB2YWx1ZXMgaW50byBhY2NvdW50KSpcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdmFsaWQgLSBXaGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyB2YWxpZCBiYXNlZCBvbiBpdHMgSlNPTiBTY2hlbWFcbiAqIEBwcm9wZXJ0eSB7Kn0gdmFsdWUgLSBUaGUgcHJvY2Vzc2VkIHZhbHVlICooVGFrZXMgZGVmYXVsdCB2YWx1ZXMgaW50byBhY2NvdW50IGFuZCBkb2VzIHR5cGUgY29lcmNpb24gd2hlbiBuZWNlc3NhcnlcbiAqIGFuZCBwb3NzaWJsZSkqLiAgVGhpcyBjYW4gdGhlIG9yaWdpbmFsIHZhbHVlIGluIHRoZSBldmVudCB0aGF0IHByb2Nlc3NpbmcgdGhlIHZhbHVlIGlzIGltcG9zc2libGVcbiAqICoobWlzc2luZyBzY2hlbWEgdHlwZSkqIG9yIGB1bmRlZmluZWRgIGlmIHByb2Nlc3NpbmcgdGhlIHZhbHVlIGZhaWxlZCAqKGludmFsaWQgdHlwZXMsIGV0Yy4pKi5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUGFyYW1ldGVyVmFsdWUgKHBhcmFtZXRlck9iamVjdCwgcmF3KSB7XG4gIHZhciBwUGF0aCA9IEpzb25SZWZzLnBhdGhGcm9tUHRyKHBhcmFtZXRlck9iamVjdC5wdHIpO1xuICB2YXIgcHJvY2Vzc2VkID0gZmFsc2U7XG4gIHZhciBzY2hlbWEgPSBwYXJhbWV0ZXJPYmplY3Quc2NoZW1hO1xuICB2YXIgZXJyb3I7XG4gIHZhciBpc1ZhbGlkO1xuICB2YXIgcHJvY2Vzc2VkVmFsdWU7XG5cbiAgdGhpcy5wYXJhbWV0ZXJPYmplY3QgPSBwYXJhbWV0ZXJPYmplY3Q7XG4gIHRoaXMucmF3ID0gcmF3O1xuXG4gIC8vIFVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgZm9yICd2YWx1ZScgdG8gYWxsb3cgZm9yIGxhenkgcHJvY2Vzc2luZyBvZiB0aGUgcmF3IHZhbHVlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICBlcnJvcjoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBBbHdheXMgY2FsbCB0aGlzLnZhbGlkIHRvIGVuc3VyZSB3ZSB2YWxpZGF0ZSB0aGUgdmFsdWUgcHJpb3IgdG8gcmV0dXJuaW5nIGFueSB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMudmFsaWQgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWQ6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgIHdhcm5pbmdzOiBbXVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2tpcFZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICB2YXIgdkVycm9yO1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGlzVmFsaWQpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZXJyb3IpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZG5lc3NcbiAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiBfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQgYnV0IHdhcyBub3QgcHJvdmlkZWQnKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ1JFUVVJUkVEJztcblxuICAgICAgICAgICAgICAgIHRocm93IHZFcnJvcjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIENhc2VzIHdlIGRvIG5vdCB3YW50IHRvIGRvIHNjaGVtYSB2YWxpZGF0aW9uOlxuICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBleHBsaWNpdGx5IGFsbG93cyBlbXB0eSB2YWx1ZXMgYW5kIHRoZSB2YWx1ZSBpcyBlbXB0eVxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBhbGxvdyBvcHRpb25hbCB2YWx1ZXMgYW5kIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgZGVmaW5lcyBhIGZpbGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGlzIGZvciBhIHN0cmluZyB0eXBlIHdpdGggZGF0ZS9kYXRlLXRpbWUgZm9ybWF0IGFuZCB0aGUgdmFsdWUgaXMgYSBkYXRlXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGlzIGZvciBhIHN0cmluZyB0eXBlIGFuZCB0aGUgdmFsdWUgaXMgYSBCdWZmZXJcbiAgICAgICAgICAgICAgaWYgKChfLmlzVW5kZWZpbmVkKHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCkgfHwgcGFyYW1ldGVyT2JqZWN0LnJlcXVpcmVkID09PSBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5hbGxvd0VtcHR5VmFsdWUgPT09IHRydWUgJiYgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlck9iamVjdC50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKFsnZGF0ZScsICdkYXRlLXRpbWUnXS5pbmRleE9mKHNjaGVtYS5mb3JtYXQpID4gLTEgJiYgXy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEudHlwZSA9PT0gJ3N0cmluZycgJiYgXy5pc0Z1bmN0aW9uKHZhbHVlLnJlYWRVSW50OCkpIHtcbiAgICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgYWdhaW5zdCBKU09OIFNjaGVtYVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpLCBwYXJhbWV0ZXJPYmplY3Quc2NoZW1hLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdkVycm9yID0gbmV3IEVycm9yKCdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgdkVycm9yLmNvZGUgPSAnU0NIRU1BX1ZBTElEQVRJT05fRkFJTEVEJztcbiAgICAgICAgICAgICAgICB2RXJyb3IuZXJyb3JzID0gcmVzdWx0LmVycm9ycztcblxuICAgICAgICAgICAgICAgIHRocm93IHZFcnJvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGVyci5mYWlsZWRWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZXJyLnBhdGggPSBwUGF0aDtcblxuICAgICAgICAgICAgICBlcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWx1ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdkVycm9yO1xuXG4gICAgICAgIGlmICghcHJvY2Vzc2VkKSB7XG4gICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gcmF3O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0L0NvZXJjZSB0aGUgcmF3IHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgb2JqZWN0XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSBlbXB0aW5lc3MgKHByaW9yIHRvIGNvZXJjaW9uIGZvciBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcpXG4gICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJPYmplY3QuYWxsb3dFbXB0eVZhbHVlID09PSBmYWxzZSAmJiByYXcgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdkVycm9yID0gbmV3IEVycm9yKCdWYWx1ZSBpcyBub3QgYWxsb3dlZCB0byBiZSBlbXB0eScpO1xuXG4gICAgICAgICAgICAgICAgdkVycm9yLmNvZGUgPSAnRU1QVFlfTk9UX0FMTE9XRUQnO1xuXG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBlcnJvciBpcyBub3QgYSBjb2VyY2lvbiBlcnJvciwgdGhlIHZhbHVlIGlzIHNldCB0byByYXdcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHJhdztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IGhlbHBlcnMuY29udmVydFZhbHVlKHNjaGVtYSwge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Gb3JtYXQ6IHBhcmFtZXRlck9iamVjdC5jb2xsZWN0aW9uRm9ybWF0XG4gICAgICAgICAgICAgIH0sIHJhdyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0aWxsIG5vIHZhbHVlIGFuZCB0aGVyZSBhcmUgbm8gZXJyb3JzLCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUgaWYgYXZhaWxhYmxlIChubyBjb2VyY2lvbilcbiAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHByb2Nlc3NlZFZhbHVlKSAmJiBfLmlzVW5kZWZpbmVkKGVycm9yKSkge1xuICAgICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gXy5yZWR1Y2Uoc2NoZW1hLml0ZW1zLCBmdW5jdGlvbiAoaXRlbXMsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtLmRlZmF1bHQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgcmVzZXQgdGhlIHByb2Nlc3NlZCB2YWx1ZSB0byAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgaWYgKF8uZXZlcnkocHJvY2Vzc2VkVmFsdWUsIF8uaXNVbmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSAmJiAhXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMuZGVmYXVsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBbc2NoZW1hLml0ZW1zLmRlZmF1bHRdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZSBwcm9jZXNzZWQgdmFsdWUgaXMgc3RpbGwgdW5kZWZpbmVkIGFuZCBpZiB0aGVyZSdzIGEgZ2xvYmFsIGRlZmF1bHQgc2V0XG4gICAgICAgICAgICAgIC8vIGZvciB0aGUgYXJyYXksIHdlIHVzZSBpdFxuICAgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChwcm9jZXNzZWRWYWx1ZSkgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBzY2hlbWEuZGVmYXVsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQYXJhbWV0ZXJWYWx1ZTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xudmFyIFBhcmFtZXRlclZhbHVlID0gcmVxdWlyZSgnLi9wYXJhbWV0ZXItdmFsdWUnKTtcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xuXG4vKipcbiAqIFRoZSBTd2FnZ2VyIFBhcmFtZXRlciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBkZWZpbml0aW9uXG4gKiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5PcGVyYXRpb258bW9kdWxlOnN3YXkuUGF0aH0gb3BPclBhdGhPYmplY3QgLSBUaGUgYE9wZXJhdGlvbmAgb3IgYFBhdGhgIG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gKihUaGUgcmF3IHBhcmFtZXRlciBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aFRvRGVmaW5pdGlvbiAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhcmFtZXRlciBkZWZpbml0aW9uICooVGhlIHJhdyBwYXJhbWV0ZXIgZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXNcbiAqIHdlcmUgcmVzb2x2ZWQpKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIHBhcmFtZXRlciBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9ufSBvcGVyYXRpb25PYmplY3QgLSBUaGUgYE9wZXJhdGlvbmAgb2JqZWN0IHRoZSBwYXJhbWV0ZXIgYmVsb25ncyB0byAqKENhbiBiZVxuICogYHVuZGVmaW5lZGAgZm9yIHBhdGgtbGV2ZWwgcGFyYW1ldGVycykqXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LlBhdGh9IHBhdGhPYmplY3QgLSBUaGUgYFBhdGhgIG9iamVjdCB0aGUgcGFyYW1ldGVyIGJlbG9uZ3MgdG9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwdHIgLSBUaGUgSlNPTiBQb2ludGVyIHRvIHRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IHNjaGVtYSAtIFRoZSBKU09OIFNjaGVtYSBmb3IgdGhlIHBhcmFtZXRlciAqKEZvciBub24tYm9keSBwYXJhbWV0ZXJzLCB0aGlzIGlzIGEgY29tcHV0ZWQgdmFsdWUpKlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBQYXJhbWV0ZXIgKG9wT3JQYXRoT2JqZWN0LCBkZWZpbml0aW9uLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcGF0aFRvRGVmaW5pdGlvbikge1xuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMucGF0aFRvRGVmaW5pdGlvbiA9IHBhdGhUb0RlZmluaXRpb247XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuXG4gIGlmIChfLmhhcyhvcE9yUGF0aE9iamVjdCwgJ2NvbnN1bWVzJykpIHtcbiAgICB0aGlzLm9wZXJhdGlvbk9iamVjdCA9IG9wT3JQYXRoT2JqZWN0O1xuICAgIHRoaXMucGF0aE9iamVjdCA9IG9wT3JQYXRoT2JqZWN0LnBhdGhPYmplY3Q7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5vcGVyYXRpb25PYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYXRoT2JqZWN0ID0gb3BPclBhdGhPYmplY3Q7XG4gIH1cblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllcyBmcm9tIHRoZSBTd2FnZ2VyIGRlZmluaXRpb24gcHJvcGVydGllc1xuICBfLmFzc2lnbih0aGlzLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5zY2hlbWEpKSB7XG4gICAgdGhpcy5zY2hlbWEgPSBoZWxwZXJzLmNvbXB1dGVQYXJhbWV0ZXJTY2hlbWEoZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuICB9XG5cbiAgdGhpcy5wYXRoT2JqZWN0LmFwaS5fZGVidWcoJyAgICAgICAgICAlcyVzIChpbjogJXMpIGF0ICVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh0aGlzLm9wZXJhdGlvbk9iamVjdCkgPyAnJyA6ICcgICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25GdWxseVJlc29sdmVkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25GdWxseVJlc29sdmVkLmluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0cik7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHNhbXBsZSB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBiYXNlZCBvbiBpdHMgc2NoZW1hO1xuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgc2FtcGxlIHZhbHVlXG4gKi9cblBhcmFtZXRlci5wcm90b3R5cGUuZ2V0U2FtcGxlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGVscGVycy5nZXRTYW1wbGUodGhpcy5zY2hlbWEpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdC5cbiAqXG4gKiAqKk5vdGU6KiogQmVsb3cgaXMgdGhlIGxpc3Qgb2YgYHJlcWAgcHJvcGVydGllcyB1c2VkICoocmVxIHNob3VsZCBiZSBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCBvciBlcXVpdmFsZW50KSo6XG4gKlxuICogICAqIGBib2R5YDogVXNlZCBmb3IgYGJvZHlgIGFuZCBgZm9ybURhdGFgIHBhcmFtZXRlcnNcbiAqICAgKiBgZmlsZXNgOiBVc2VkIGZvciBgZm9ybURhdGFgIHBhcmFtZXRlcnMgd2hvc2UgYHR5cGVgIGlzIGBmaWxlYFxuICogICAqIGBoZWFkZXJzYDogVXNlZCBmb3IgYGhlYWRlcmAgcGFyYW1ldGVyc1xuICogICAqIGBvcmlnaW5hbFVybGA6IHVzZWQgZm9yIGBwYXRoYCBwYXJhbWV0ZXJzXG4gKiAgICogYHF1ZXJ5YDogVXNlZCBmb3IgYHF1ZXJ5YCBwYXJhbWV0ZXJzXG4gKiAgICogYHVybGA6IHVzZWQgZm9yIGBwYXRoYCBwYXJhbWV0ZXJzXG4gKlxuICogRm9yIGBwYXRoYCBwYXJhbWV0ZXJzLCB3ZSB3aWxsIHVzZSB0aGUgb3BlcmF0aW9uJ3MgYHJlZ2V4cGAgcHJvcGVydHkgdG8gcGFyc2Ugb3V0IHBhdGggcGFyYW1ldGVycyB1c2luZyB0aGVcbiAqIGBvcmlnaW5hbFVybGAgb3IgYHVybGAgcHJvcGVydHkuXG4gKlxuICogKihTZWU6IHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX2NsYXNzX2h0dHBfY2xpZW50cmVxdWVzdH0pKlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXEgLSBUaGUgaHR0cCBjbGllbnQgcmVxdWVzdCAqKG9yIGVxdWl2YWxlbnQpKlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJWYWx1ZX0gVGhlIHBhcmFtZXRlciB2YWx1ZSBvYmplY3RcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGBpbmAgdmFsdWUgb2YgdGhlIHBhcmFtZXRlcidzIHNjaGVtYSBpcyBub3QgdmFsaWQgb3IgaWYgdGhlIGByZXFgIHByb3BlcnR5IHRvIHJldHJpZXZlIHRoZVxuICogcGFyYW1ldGVyIGlzIG1pc3NpbmdcbiAqL1xuUGFyYW1ldGVyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIChyZXEpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXEgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfSBlbHNlIGlmIChoZWxwZXJzLnBhcmFtZXRlckxvY2F0aW9ucy5pbmRleE9mKHRoaXMuaW4pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBcXCdpblxcJyB2YWx1ZTogJyArIHRoaXMuaW4pO1xuICB9XG5cbiAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayB0aGUgdHlwZSBvZiByZXFcblxuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciB0eXBlID0gdGhpcy5zY2hlbWEudHlwZTtcbiAgdmFyIHBhdGhNYXRjaDtcbiAgdmFyIHZhbHVlO1xuXG4gIHN3aXRjaCAodGhpcy5pbikge1xuICBjYXNlICdib2R5JzpcbiAgICB2YWx1ZSA9IHJlcS5ib2R5O1xuICAgIGJyZWFrO1xuICBjYXNlICdmb3JtRGF0YSc6XG4gICAgLy8gRm9yIGZvcm1EYXRhLCBlaXRoZXIgdGhlIHZhbHVlIGlzIGEgZmlsZSBvciBhIHByb3BlcnR5IG9mIHJlcS5ib2R5LiAgcmVxLmJvZHkgYXMgYSB3aG9sZSBjYW4gbmV2ZXIgYmUgdGhlXG4gICAgLy8gdmFsdWUgc2luY2UgdGhlIEpTT04gU2NoZW1hIGZvciBmb3JtRGF0YSBwYXJhbWV0ZXJzIGRvZXMgbm90IGFsbG93IGEgdHlwZSBvZiAnb2JqZWN0Jy5cbiAgICBpZiAodHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuZmlsZXMpKSB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEuZmlsZXMgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwnZm9ybURhdGFcXCcgcGFyYW1ldGVycyBvZiB0eXBlIFxcJ2ZpbGVcXCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IHJlcS5maWxlc1t0aGlzLm5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5ib2R5IG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ2Zvcm1EYXRhXFwnIHBhcmFtZXRlcnMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFsdWUgPSByZXEuYm9keVt0aGlzLm5hbWVdO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAnaGVhZGVyJzpcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuaGVhZGVycykpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLmhlYWRlcnMgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwnaGVhZGVyXFwnIHBhcmFtZXRlcnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gaGVscGVycy5nZXRIZWFkZXJWYWx1ZShyZXEuaGVhZGVycywgdGhpcy5uYW1lKTtcbiAgICBicmVhaztcbiAgY2FzZSAncGF0aCc6XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLm9yaWdpbmFsVXJsKSAmJiBfLmlzVW5kZWZpbmVkKHJlcS51cmwpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5vcmlnaW5hbFVybCBvciByZXEudXJsIG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ3BhdGhcXCcgcGFyYW1ldGVycycpO1xuICAgIH1cblxuICAgIHBhdGhNYXRjaCA9IHRoaXMucGF0aE9iamVjdC5yZWdleHAuZXhlYyhwYXJzZVVybChyZXEub3JpZ2luYWxVcmwgfHwgcmVxLnVybCkucGF0aG5hbWUpO1xuXG4gICAgaWYgKHBhdGhNYXRjaCkge1xuICAgICAgLy8gZGVjb2RlIFVSSSBjb21wb25lbnQgaGVyZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBlbmNvZGVkIHNsYXNoZXNcbiAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhNYXRjaFtfLmZpbmRJbmRleCh0aGlzLnBhdGhPYmplY3QucmVnZXhwLmtleXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleS5uYW1lID09PSB0aGF0Lm5hbWU7XG4gICAgICB9KSArIDFdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgJ3F1ZXJ5JzpcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEucXVlcnkpKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5xdWVyeSBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdxdWVyeVxcJyBwYXJhbWV0ZXJzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWx1ZSA9IF8uZ2V0KHJlcS5xdWVyeSwgdGhpcy5uYW1lKTtcblxuICAgIGJyZWFrO1xuXG4gICAgLy8gbm8gZGVmYXVsdFxuICB9XG5cbiAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJWYWx1ZSh0aGlzLCB2YWx1ZSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcmFtZXRlcjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgSnNvblJlZnMgPSByZXF1aXJlKCdqc29uLXJlZnMnKTtcbnZhciBPcGVyYXRpb24gPSByZXF1aXJlKCcuL29wZXJhdGlvbicpO1xudmFyIFBhcmFtZXRlciA9IHJlcXVpcmUoJy4vcGFyYW1ldGVyJyk7XG52YXIgcGF0aFRvUmVnZXhwID0gcmVxdWlyZSgncGF0aC10by1yZWdleHAnKTtcbnZhciBzdXBwb3J0ZWRIdHRwTWV0aG9kcyA9IHJlcXVpcmUoJ3N3YWdnZXItbWV0aG9kcycpO1xuXG4vKipcbiAqIFRoZSBQYXRoIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5Td2FnZ2VyQXBpfSBhcGkgLSBUaGUgYFN3YWdnZXJBcGlgIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5Td2FnZ2VyQXBpfSBhcGkgLSBUaGUgYFN3YWdnZXJBcGlgIG9iamVjdFxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcGF0aCBkZWZpbml0aW9uICooVGhlIHJhdyBwYXRoIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBwYXRoIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gb3BlcmF0aW9uT2JqZWN0cyAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBwYXJhbWV0ZXJPYmplY3RzIC0gVGhlIHBhdGgtbGV2ZWwgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3B0cn0gcHRyIC0gVGhlIEpTT04gUG9pbnRlciB0byB0aGUgcGF0aFxuICogQHByb3BlcnR5IHtyZWdleHB9IHJlZ2V4cCAtIFRoZSBgUmVnRXhwYCB1c2VkIHRvIG1hdGNoIHJlcXVlc3QgcGF0aHMgYWdhaW5zdCB0aGlzIHBhdGhcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUGF0aCAoYXBpLCBwYXRoLCBkZWZpbml0aW9uLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcGF0aFRvRGVmaW5pdGlvbikge1xuICB2YXIgYmFzZVBhdGhQcmVmaXggPSBhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuYmFzZVBhdGggfHwgJy8nO1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBzYW5pdGl6ZWRQYXRoO1xuXG4gIC8vIFRPRE86IFdlIGNvdWxkL3Nob3VsZCByZWZhY3RvciB0aGlzIHRvIHVzZSB0aGUgcGF0aCBtb2R1bGVcblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgYmFzZVBhdGhQcmVmaXggc28gd2UgZG8gbm90IGVuZCB1cCB3aXRoIGRvdWJsZSBzbGFzaGVzXG4gIGlmIChiYXNlUGF0aFByZWZpeC5jaGFyQXQoYmFzZVBhdGhQcmVmaXgubGVuZ3RoIC0gMSkgPT09ICcvJykge1xuICAgIGJhc2VQYXRoUHJlZml4ID0gYmFzZVBhdGhQcmVmaXguc3Vic3RyaW5nKDAsIGJhc2VQYXRoUHJlZml4Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgLy8gQ29udmVydHMgU3dhZ2dlciBwYXJhbWV0ZXJzIHRvIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycywgYW5kIGFsc28gZXNjYXBlcyBhbGwgcGF0aC10by1yZWdleHAgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gIC8vXG4gIC8vIEBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waWxsYXJqcy9wYXRoLXRvLXJlZ2V4cC9pc3N1ZXMvNzYjaXNzdWVjb21tZW50LTIxOTA4NTM1N1xuICBzYW5pdGl6ZWRQYXRoID0gYmFzZVBhdGhQcmVmaXggKyBwYXRoLnJlcGxhY2UoJygnLCAnXFxcXCgnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyknLCAnXFxcXCknKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJzonLCAnXFxcXDonKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyonLCAnXFxcXConKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJysnLCAnXFxcXCsnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJz8nLCAnXFxcXD8nKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnOicpIC8vIFN3YWdnZXIgLT4gRXhwcmVzcy1zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcfS9nLCAnJyk7IC8vIFN3YWdnZXIgLT4gRXhwcmVzcy1zdHlsZVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuYXBpID0gYXBpO1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucGF0aFRvRGVmaW5pdGlvbiA9IHBhdGhUb0RlZmluaXRpb247XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuICB0aGlzLnJlZ2V4cCA9IHBhdGhUb1JlZ2V4cChzYW5pdGl6ZWRQYXRoLCB7c2Vuc2l0aXZlOiB0cnVlfSk7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgU3dhZ2dlciBkZWZpbml0aW9uIHByb3BlcnRpZXNcbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5hcGkuX2RlYnVnO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgJXMnLCB0aGlzLnBhdGgpO1xuXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIgcFBhdGggPSBwYXRoVG9EZWZpbml0aW9uLmNvbmNhdChbJ3BhcmFtZXRlcnMnLCBpbmRleC50b1N0cmluZygpXSk7XG5cbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlcih0aGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIF8uZ2V0KGFwaS5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBwUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1EZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcFBhdGgpO1xuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgT3BlcmF0aW9uczonKTtcblxuICB0aGlzLm9wZXJhdGlvbk9iamVjdHMgPSBfLnJlZHVjZShkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgZnVuY3Rpb24gKG9wZXJhdGlvbnMsIG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgdmFyIG9QYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQobWV0aG9kKTtcblxuICAgIGlmIChzdXBwb3J0ZWRIdHRwTWV0aG9kcy5pbmRleE9mKG1ldGhvZCkgPiAtMSkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKG5ldyBPcGVyYXRpb24odGhhdCwgbWV0aG9kLCBfLmdldChhcGkuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgb1BhdGgpLCBvcGVyYXRpb25EZWYsIG9QYXRoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnM7XG4gIH0sIFtdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbiBmb3IgdGhpcyBwYXRoIGFuZCBvcGVyYXRpb24gaWQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBpZCBvciBtZXRob2RcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGggYW5kIG1ldGhvZCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub1xuICogb3BlcmF0aW9uIGZvciB0aGUgcHJvdmlkZWQgbWV0aG9kXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbiA9IGZ1bmN0aW9uIChpZE9yTWV0aG9kKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5vcGVyYXRpb25PYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9uT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9wZXJhdGlvbk9iamVjdC5vcGVyYXRpb25JZCA9PT0gaWRPck1ldGhvZCB8fCBvcGVyYXRpb25PYmplY3QubWV0aG9kID09PSBpZE9yTWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcGF0aC5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGhcbiAqL1xuUGF0aC5wcm90b3R5cGUuZ2V0T3BlcmF0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMub3BlcmF0aW9uT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBvcGVyYXRpb25zIGZvciB0aGlzIHBhdGggYW5kIHRhZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gVGhlIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoaXMgcGF0aCBhbmQgdGFnXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbnNCeVRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMub3BlcmF0aW9uT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbk9iamVjdCkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKG9wZXJhdGlvbk9iamVjdC50YWdzLCB0YWcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIHBhdGguXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhpcyBwYXRoXG4gKi9cblBhdGgucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhdGg7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIganNvblZhbGlkYXRvciA9IGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpO1xudmFyIEpzb25SZWZzID0gcmVxdWlyZSgnanNvbi1yZWZzJyk7XG52YXIgWUFNTCA9IHJlcXVpcmUoJ2pzLXlhbWwnKTtcblxuLyoqXG4gKiBUaGUgU3dhZ2dlciBSZXNwb25zZSBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9ufSBvcGVyYXRpb25PYmplY3QgLSBUaGUgYE9wZXJhdGlvbmAgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzQ29kZSAtIFRoZSBzdGF0dXMgY29kZVxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcmVzcG9uc2UgZGVmaW5pdGlvbiAqKFRoZSByYXcgcmVzcG9uc2UgZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aFRvRGVmaW5pdGlvbiAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHRoZSBwYXRoIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSByZXNwb25zZSBkZWZpbml0aW9uICooVGhlIHJhdyByZXNwb25zZWRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSByZXNwb25zZSBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9ufSBvcGVyYXRpb25PYmplY3QgLSBUaGUgT3BlcmF0aW9uIG9iamVjdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gcGF0aFRvRGVmaW5pdGlvbiAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHRoZSBwYXRoIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwdHIgLSBUaGUgSlNPTiBQb2ludGVyIHRvIHRoZSByZXNwb25zZSBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3RhdHVzQ29kZSAtIFRoZSBzdGF0dXMgY29kZVxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBSZXNwb25zZSAob3BlcmF0aW9uT2JqZWN0LCBzdGF0dXNDb2RlLCBkZWZpbml0aW9uLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcGF0aFRvRGVmaW5pdGlvbikge1xuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMub3BlcmF0aW9uT2JqZWN0ID0gb3BlcmF0aW9uT2JqZWN0O1xuICB0aGlzLnBhdGhUb0RlZmluaXRpb24gPSBwYXRoVG9EZWZpbml0aW9uO1xuICB0aGlzLnB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihwYXRoVG9EZWZpbml0aW9uKTtcbiAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllcyBmcm9tIHRoZSBTd2FnZ2VyIGRlZmluaXRpb24gcHJvcGVydGllc1xuICBfLmFzc2lnbih0aGlzLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgdGhpcy5vcGVyYXRpb25PYmplY3QucGF0aE9iamVjdC5hcGkuX2RlYnVnKCcgICAgICAgICAgICAlcyBhdCAlcycsIHN0YXR1c0NvZGUsIHRoaXMucHRyKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZXNwb25zZSBleGFtcGxlIGZvciB0aGUgbWltZS10eXBlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWltZVR5cGVdIC0gVGhlIG1pbWUgdHlwZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSByZXNwb25zZSBleGFtcGxlIGFzIGEgc3RyaW5nIG9yIGB1bmRlZmluZWRgIGlmIHRoZSByZXNwb25zZSBjb2RlIGFuZC9vciBtaW1lLXR5cGUgaXMgbWlzc2luZ1xuICovXG5SZXNwb25zZS5wcm90b3R5cGUuZ2V0RXhhbXBsZSA9IGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICB2YXIgZXhhbXBsZTtcblxuICBpZiAoXy5pc1BsYWluT2JqZWN0KHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuZXhhbXBsZXMpKSB7XG4gICAgZXhhbXBsZSA9IHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuZXhhbXBsZXNbbWltZVR5cGVdO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGV4YW1wbGUpICYmICFfLmlzU3RyaW5nKGV4YW1wbGUpKSB7XG4gICAgaWYgKG1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicpIHtcbiAgICAgIGV4YW1wbGUgPSBKU09OLnN0cmluZ2lmeShleGFtcGxlLCBudWxsLCAyKTtcbiAgICB9IGVsc2UgaWYgKG1pbWVUeXBlID09PSAnYXBwbGljYXRpb24veC15YW1sJykge1xuICAgICAgZXhhbXBsZSA9IFlBTUwuc2FmZUR1bXAoZXhhbXBsZSwge2luZGVudDogMn0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleGFtcGxlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgc2FtcGxlIHZhbHVlLlxuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgc2FtcGxlIHZhbHVlIGZvciB0aGUgcmVzcG9uc2UsIHdoaWNoIGNhbiBiZSB1bmRlZmluZWQgaWYgdGhlIHJlc3BvbnNlIHNjaGVtYSBpcyBub3QgcHJvdmlkZWRcbiAqL1xuUmVzcG9uc2UucHJvdG90eXBlLmdldFNhbXBsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGhlbHBlcnMuZ2V0U2FtcGxlKHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2NoZW1hKTtcbn07XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlNlcnZlclJlc3BvbnNlV3JhcHBlcn0gcmVzIC0gVGhlIHJlc3BvbnNlIG9yIHJlc3BvbnNlIGxpa2Ugb2JqZWN0XG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlJlc3BvbnNlVmFsaWRhdGlvbk9wdGlvbnN9IFtvcHRpb25zXSAtIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuVmFsaWRhdGlvblJlc3VsdHN9IFRoZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqL1xuUmVzcG9uc2UucHJvdG90eXBlLnZhbGlkYXRlUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzLCBvcHRpb25zKSB7XG4gIHZhciByZXN1bHRzID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG4gIHZhciBib2R5VmFsdWU7XG4gIHZhciBidlJlc3VsdHM7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zKSAmJiAhXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycykpIHtcbiAgICAgaWYgKCFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgfVxuXG4gICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgJ2N1c3RvbVZhbGlkYXRvcnMnKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzLmhlYWRlcnMpKSB7XG4gICAgcmVzLmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSBDb250ZW50LVR5cGUgZXhjZXB0IGZvciB2b2lkIHJlc3BvbnNlcywgMjA0IHJlc3BvbnNlcyBhbmQgMzA0IHJlc3BvbnNlcyBhcyB0aGV5IGhhdmUgbm8gYm9keVxuICBpZiAodGhpcy5vcGVyYXRpb25PYmplY3QucHJvZHVjZXMubGVuZ3RoID4gMCAmJiAhXy5pc1VuZGVmaW5lZChyZXMuYm9keSkgJiZcbiAgICAgICAgIV8uaXNVbmRlZmluZWQodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEpICYmIF8uaW5kZXhPZihbJzIwNCcsICczMDQnXSwgdGhpcy5zdGF0dXNDb2RlKSA9PT0gLTEpIHtcbiAgICBoZWxwZXJzLnZhbGlkYXRlQ29udGVudFR5cGUoaGVscGVycy5nZXRDb250ZW50VHlwZShyZXMuaGVhZGVycyksIHRoaXMub3BlcmF0aW9uT2JqZWN0LnByb2R1Y2VzLCByZXN1bHRzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBoZWFkZXJzXG4gIF8uZm9yRWFjaCh0aGlzLmhlYWRlcnMsIGZ1bmN0aW9uIChzY2hlbWEsIG5hbWUpIHtcbiAgICB2YXIgaGVhZGVyVmFsdWU7XG4gICAgdmFyIGh2UmVzdWx0cztcblxuICAgIHRyeSB7XG4gICAgICBoZWFkZXJWYWx1ZSA9IGhlbHBlcnMuY29udmVydFZhbHVlKHNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Gb3JtYXQ6IHNjaGVtYS5jb2xsZWN0aW9uRm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJseSBjYXV0aW91c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuaGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5oZWFkZXJzW25hbWVdIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYS5kZWZhdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9IRUFERVInLFxuICAgICAgICBlcnJvcnM6IGVyci5lcnJvcnMgfHwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6IGVyci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICBwYXRoOiBlcnIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaGVhZGVyICgnICsgbmFtZSArICcpOiAnICsgZXJyLm1lc3NhZ2UsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHBhdGg6IGVyci5wYXRoXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gYW1iaWd1aXR5IGluIHRoZSBTd2FnZ2VyIDIuMCBTcGVjaWZpY2F0aW9uIChodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjL2lzc3Vlcy8zMjEpLCBpdFxuICAgIC8vIGlzIHByb2JhYmx5IG5vdCBhIGdvb2QgaWRlYSB0byBkbyByZXF1aXJlZG5lc3MgY2hlY2tzIGZvciByZXNwb25zZSBoZWFkZXJzLiAgVGhpcyBtZWFucyB3ZSB3aWxsIHZhbGlkYXRlXG4gICAgLy8gZXhpc3RpbmcgaGVhZGVycyBidXQgd2lsbCBub3QgdGhyb3cgYW4gZXJyb3IgaWYgYSBoZWFkZXIgaXMgZGVmaW5lZCBpbiBhIHJlc3BvbnNlIHNjaGVtYSBidXQgbm90IGluIHRoZSByZXNwb25zZS5cbiAgICAvL1xuICAgIC8vIFdlIGFsc28gZG8gbm90IHdhbnQgdG8gdmFsaWRhdGUgZGF0ZSBvYmplY3RzIGJlY2F1c2UgaXQgaXMgcmVkdW5kYW50LiAgSWYgd2UgaGF2ZSBhbHJlYWR5IGNvbnZlcnRlZCB0aGUgdmFsdWVcbiAgICAvLyBmcm9tIGEgc3RyaW5nK2Zvcm1hdCB0byBhIGRhdGUsIHdlIGtub3cgaXQgcGFzc2VzIHNjaGVtYSB2YWxpZGF0aW9uLlxuICAgIGlmICghXy5pc1VuZGVmaW5lZChoZWFkZXJWYWx1ZSkgJiYgIV8uaXNEYXRlKGhlYWRlclZhbHVlKSkge1xuICAgICAgaHZSZXN1bHRzID0gaGVscGVycy52YWxpZGF0ZUFnYWluc3RTY2hlbWEoanNvblZhbGlkYXRvciwgc2NoZW1hLCBoZWFkZXJWYWx1ZSk7XG5cbiAgICAgIGlmIChodlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ0lOVkFMSURfUkVTUE9OU0VfSEVBREVSJyxcbiAgICAgICAgICBlcnJvcnM6IGh2UmVzdWx0cy5lcnJvcnMsXG4gICAgICAgICAgLy8gUmVwb3J0IHRoZSBhY3R1YWwgZXJyb3IgaWYgdGhlcmUgaXMgb25seSBvbmUgZXJyb3IuICBPdGhlcndpc2UsIHJlcG9ydCBhIEpTT04gU2NoZW1hXG4gICAgICAgICAgLy8gdmFsaWRhdGlvbiBlcnJvci5cbiAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBoZWFkZXIgKCcgKyBuYW1lICsgJyk6ICcgKyAoaHZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZhbHVlIGZhaWxlZCBKU09OIFNjaGVtYSB2YWxpZGF0aW9uJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2UmVzdWx0cy5lcnJvcnNbMF0ubWVzc2FnZSksXG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBwYXRoOiBbXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIFZhbGlkYXRlIHJlc3BvbnNlIGZvciBub24tdm9pZCByZXNwb25zZXNcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2NoZW1hKSAmJiBfLmluZGV4T2YoWycyMDQnLCAnMzA0J10sIHRoaXMuc3RhdHVzQ29kZSkgPT09IC0xKSB7XG4gICAgdHJ5IHtcbiAgICAgIGJvZHlWYWx1ZSA9IGhlbHBlcnMuY29udmVydFZhbHVlKHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2NoZW1hLCB7XG4gICAgICAgIGVuY29kaW5nOiByZXMuZW5jb2RpbmdcbiAgICAgIH0sIHJlcy5ib2R5KTtcbiAgICAgIGJ2UmVzdWx0cyA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGpzb25WYWxpZGF0b3IsIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2NoZW1hLCBib2R5VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYnZSZXN1bHRzID0ge1xuICAgICAgICBlcnJvcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogZXJyLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGJ2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFU1BPTlNFX0JPRFknLFxuICAgICAgICBlcnJvcnM6IGJ2UmVzdWx0cy5lcnJvcnMsXG4gICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGJvZHk6ICcgKyAoYnZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZmFpbGVkIEpTT04gU2NoZW1hIHZhbGlkYXRpb24nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidlJlc3VsdHMuZXJyb3JzWzBdLm1lc3NhZ2UpLFxuICAgICAgICBwYXRoOiBbXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmFsaWRhdGUgc3RyaWN0IG1vZGVcbiAgaGVscGVycy52YWxpZGF0ZVN0cmljdE1vZGUodGhpcywgcmVzLCBvcHRpb25zLnN0cmljdE1vZGUsIHJlc3VsdHMpO1xuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIHZhbGlkYXRvcnNcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyhyZXMsIHRoaXMsIG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlc3BvbnNlO1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcbnZhciBCYXNlNjQgPSByZXF1aXJlKCdqcy1iYXNlNjQnKTtcblxuLy8gRHVlIHRvIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgbm9kZS5qcyBhbmQgdGhlIGJyb3dzZXIgdXNlIGpzLWJhc2U2NCwgd2UgbmVlZCB0aGlzIGhhY2tcbmlmICh0eXBlb2YgQmFzZTY0LkJhc2U2NCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgQmFzZTY0ID0gQmFzZTY0LkJhc2U2NDtcbn1cblxuLyoqXG4gKiBXZSBoYXZlIHRvIGZpbHRlciB0aGUgc2NoZW1hIHRvIGF2b2lkIGEgbWF4aW11bSBjYWxsc3RhY2sgaXNzdWUgYnkgZGVsZXRpbmcgdGhlIGZvcm1hdCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hIC0gVGhlIEpTT04gU2NoZW1hIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBmaWx0ZXJlZCBzY2hlbWFcbiAqL1xuZnVuY3Rpb24gZmlsdGVyU2NoZW1hIChzY2hlbWEpIHtcbiAgdmFyIGNTY2hlbWEgPSBfLmNsb25lRGVlcChzY2hlbWEpO1xuXG4gIGRlbGV0ZSBjU2NoZW1hLmZvcm1hdDtcblxuICByZXR1cm4gY1NjaGVtYTtcbn1cblxuLy8gQnVpbGQgdGhlIGxpc3Qgb2YgY3VzdG9tIEpTT04gU2NoZW1hIGdlbmVyYXRvciBmb3JtYXRzXG5tb2R1bGUuZXhwb3J0cy5ieXRlID0gZnVuY3Rpb24gKG1vY2tlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKG1vY2tlcihmaWx0ZXJTY2hlbWEoc2NoZW1hKSkpO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMucGFzc3dvcmQgPSBmdW5jdGlvbiAobW9ja2VyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgcmV0dXJuIG1vY2tlcihmaWx0ZXJTY2hlbWEoc2NoZW1hKSk7XG4gIH1cbn07XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuXG5mdW5jdGlvbiByZXR1cm5UcnVlICgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzLmludDMyID0gbW9kdWxlLmV4cG9ydHMuaW50NjQgPSBmdW5jdGlvbiAodmFsKSB7XG4gIC8vIHotc2NoZW1hIHNlZW1zIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIGZvcm1hdCBldmVuIHdoZW4gdGhlIHR5cGUgaXMga25vd24gdG8gYmUgaW52YWxpZCBzbyB3ZSBtdXN0IGRvIGEgdHlwZVxuICAvLyBjaGVjayBwcmlvciB0byB2YWxpZGF0aW5nIHRoaXMgZm9ybWF0LlxuICByZXR1cm4gXy5pc051bWJlcih2YWwpICYmIHZhbCAlIDEgPT09IDA7XG59O1xuXG4vLyBUaGVzZSBmb3JtYXQgdmFsaWRhdG9ycyB3aWxsIGFsd2F5cyByZXR1cm4gJ3RydWUnIGJlY2F1c2UgdGhleSBhcmUgYWxyZWFkeSB0eXBlIHZhbGlkIGFuZCB0aGVyZSBhcmUgbm8gY29uc3RyYWludHNcbi8vIG9uIHRoZSBmb3JtYXQgdGhhdCB3b3VsZCBwcm9kdWNlIGFuIGludmFsaWQgdmFsdWUuXG5tb2R1bGUuZXhwb3J0cy5ieXRlID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLmRvdWJsZSA9IHJldHVyblRydWU7XG5tb2R1bGUuZXhwb3J0cy5mbG9hdCA9IHJldHVyblRydWU7XG5tb2R1bGUuZXhwb3J0cy5wYXNzd29yZCA9IHJldHVyblRydWU7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIgSnNvblJlZnMgPSByZXF1aXJlKCdqc29uLXJlZnMnKTtcbnZhciBzdXBwb3J0ZWRIdHRwTWV0aG9kcyA9IHJlcXVpcmUoJ3N3YWdnZXItbWV0aG9kcycpO1xudmFyIHN3YWdnZXJTY2hlbWEgPSByZXF1aXJlKCdzd2FnZ2VyLXNjaGVtYS1vZmZpY2lhbC9zY2hlbWEnKTtcblxuZnVuY3Rpb24gZ2V0U2NoZW1hUHJvcGVydGllcyAoc2NoZW1hKSB7XG4gIHZhciBwcm9wZXJ0aWVzID0gXy5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzKTsgLy8gU3RhcnQgd2l0aCB0aGUgZGVmaW5lZCBwcm9wZXJ0aWVzXG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgZGVmaW5lZCBpbiB0aGUgcGFyZW50XG4gIF8uZm9yRWFjaChzY2hlbWEuYWxsT2YsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICBfLmZvckVhY2goZ2V0U2NoZW1hUHJvcGVydGllcyhwYXJlbnQpLCBmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChfLmluZGV4T2YocHJvcGVydGllcywgcHJvcGVydHkpID09PSAtMSkge1xuICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZnVuY3Rpb24gd2Fsa1NjaGVtYSAoYXBpLCBibGFja2xpc3QsIHNjaGVtYSwgcGF0aCwgaGFuZGxlcnMsIHJlc3BvbnNlKSB7XG4gIHZhciB0eXBlID0gc2NoZW1hLnR5cGUgfHwgJ29iamVjdCc7XG5cbiAgZnVuY3Rpb24gc2hvdWxkU2tpcCAoY1BhdGgpIHtcbiAgICByZXR1cm4gXy5pbmRleE9mKGJsYWNrbGlzdCwgSnNvblJlZnMucGF0aFRvUHRyKGNQYXRoKSkgPiAtMTtcbiAgfVxuXG4gIC8vIERvIG5vdCBwcm9jZXNzIGl0ZW1zIGluIHRoZSBibGFja2xpc3QgYXMgdGhleSd2ZSBiZWVuIHByb2Nlc3NlZCBhbHJlYWR5XG4gIGlmIChzaG91bGRTa2lwKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2Fsa2VyIChwU2NoZW1hLCBwUGF0aCkge1xuICAgIC8vIERvIG5vdCBwcm9jZXNzIGl0ZW1zIGluIHRoZSBibGFja2xpc3QgYXMgdGhleSd2ZSBiZWVuIHByb2Nlc3NlZCBhbHJlYWR5XG4gICAgaWYgKHNob3VsZFNraXAocFBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgXy5mb3JFYWNoKHBTY2hlbWEsIGZ1bmN0aW9uIChpdGVtLCBuYW1lKSB7XG4gICAgICBpZiAoXy5pc051bWJlcihuYW1lKSkge1xuICAgICAgICBuYW1lID0gbmFtZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBpdGVtLCBwUGF0aC5jb25jYXQobmFtZSksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLnNjaGVtYSkpIHtcbiAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBzY2hlbWEuc2NoZW1hLCBwYXRoLmNvbmNhdCgnc2NoZW1hJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5JyAmJiAhXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMpKSB7XG4gICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICB3YWxrZXIoc2NoZW1hLml0ZW1zLCBwYXRoLmNvbmNhdCgnaXRlbXMnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHNjaGVtYS5pdGVtcywgcGF0aC5jb25jYXQoJ2l0ZW1zJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcywgcGF0aC5jb25jYXQoJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfVxuXG4gICAgXy5mb3JFYWNoKFsnYWxsT2YnLCAncHJvcGVydGllcyddLCBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWFbcHJvcE5hbWVdKSkge1xuICAgICAgICB3YWxrZXIoc2NoZW1hW3Byb3BOYW1lXSwgcGF0aC5jb25jYXQocHJvcE5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF8uZm9yRWFjaChoYW5kbGVycywgZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICBoYW5kbGVyKGFwaSwgcmVzcG9uc2UsIHNjaGVtYSwgcGF0aCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzb2x2ZWQgU3dhZ2dlciBkb2N1bWVudCBhZ2FpbnN0IHRoZSBTd2FnZ2VyIDIuMCBKU09OIFNjaGVtYS5cbiAqXG4gKiBAcGFyYW0ge1N3YWdnZXJBcGl9IGFwaSAtIFRoZSBTd2FnZ2VyQXBpIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU3RydWN0dXJlIChhcGkpIHtcbiAgdmFyIHJlc3VsdHMgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKSwgc3dhZ2dlclNjaGVtYSwgYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICAvLyBNYWtlIGNvbXBsZXggSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBlcnJvcnMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgKElzc3VlIDE1KVxuICByZXN1bHRzLmVycm9ycyA9IHJlc3VsdHMuZXJyb3JzLm1hcChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICB2YXIgZGVmVHlwZSA9IFsnYWRkaXRpb25hbFByb3BlcnRpZXMnLCAnaXRlbXMnXS5pbmRleE9mKGVycm9yLnBhdGhbZXJyb3IucGF0aC5sZW5ndGggLSAxXSkgPiAtMSA/XG4gICAgICAgICAgJ3NjaGVtYScgOlxuICAgICAgICAgIGVycm9yLnBhdGhbZXJyb3IucGF0aC5sZW5ndGggLSAyXTtcblxuICAgIGlmIChbJ0FOWV9PRl9NSVNTSU5HJywgJ09ORV9PRl9NSVNTSU5HJ10uaW5kZXhPZihlcnJvci5jb2RlKSA+IC0xKSB7XG4gICAgICBzd2l0Y2ggKGRlZlR5cGUpIHtcbiAgICAgIGNhc2UgJ3BhcmFtZXRlcnMnOlxuICAgICAgICBkZWZUeXBlID0gJ3BhcmFtZXRlcic7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNwb25zZXMnOlxuICAgICAgICBkZWZUeXBlID0gJ3Jlc3BvbnNlJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NjaGVtYSc6XG4gICAgICAgIGRlZlR5cGUgKz0gJyAnICsgZXJyb3IucGF0aFtlcnJvci5wYXRoLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIC8vIG5vIGRlZmF1bHRcbiAgICAgIH1cblxuICAgICAgZXJyb3IubWVzc2FnZSA9ICdOb3QgYSB2YWxpZCAnICsgZGVmVHlwZSArICcgZGVmaW5pdGlvbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9yO1xuICB9KTtcblxuICAvLyBUcmVhdCBpbnZhbGlkL21pc3NpbmcgcmVmZXJlbmNlcyBhcyBzdHJ1Y3R1cmFsIGVycm9yc1xuICBfLmVhY2goYXBpLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCByZWZQdHIpIHtcbiAgICB2YXIgcmVmUGF0aCA9IEpzb25SZWZzLnBhdGhGcm9tUHRyKHJlZlB0cik7XG4gICAgdmFyIGVycjtcblxuICAgIGlmIChyZWZEZXRhaWxzLm1pc3NpbmcpIHtcbiAgICAgIGVyciA9IHtcbiAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICBtZXNzYWdlOiAnUmVmZXJlbmNlIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJyArIHJlZkRldGFpbHMudXJpLFxuICAgICAgICBwYXRoOiByZWZQYXRoLmNvbmNhdCgnJHJlZicpXG4gICAgICB9O1xuXG4gICAgICBpZiAoXy5oYXMocmVmRGV0YWlscywgJ2Vycm9yJykpIHtcbiAgICAgICAgZXJyLmVycm9yID0gcmVmRGV0YWlscy5lcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaChlcnIpO1xuICAgIH0gZWxzZSBpZiAocmVmRGV0YWlscy50eXBlID09PSAnaW52YWxpZCcpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRUZFUkVOQ0UnLFxuICAgICAgICBtZXNzYWdlOiByZWZEZXRhaWxzLmVycm9yIHx8ICdJbnZhbGlkIEpTT04gUmVmZXJlbmNlJyxcbiAgICAgICAgcGF0aDogcmVmUGF0aC5jb25jYXQoJyRyZWYnKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChfLmhhcyhyZWZEZXRhaWxzLCAnd2FybmluZycpKSB7XG4gICAgICAvLyBqc29uLXJlZnMgb25seSBjcmVhdGVzIHdhcm5pbmdzIGZvciBKU09OIFJlZmVyZW5jZXMgd2l0aCBzdXBlcmZsdW91cyBwcm9wZXJ0aWVzIHdoaWNoIHdpbGwgYmUgaWdub3JlZFxuICAgICAgcmVzdWx0cy53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0VYVFJBX1JFRkVSRU5DRV9QUk9QRVJUSUVTJyxcbiAgICAgICAgbWVzc2FnZTogcmVmRGV0YWlscy53YXJuaW5nLFxuICAgICAgICBwYXRoOiByZWZQYXRoXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKiBTY2hlbWEgT2JqZWN0IFZhbGlkYXRvcnMgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVBcnJheVR5cGVJdGVtc0V4aXN0ZW5jZSAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIGlmIChzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyAmJiBfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykpIHtcbiAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICBjb2RlOiAnT0JKRUNUX01JU1NJTkdfUkVRVUlSRURfUFJPUEVSVFknLFxuICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGl0ZW1zJyxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURlZmF1bHRWYWx1ZSAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIHZhciByZXN1bHQ7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkge1xuICAgIHJlc3VsdCA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpLCBzY2hlbWEsIHNjaGVtYS5kZWZhdWx0KTtcblxuICAgIF8uZm9yRWFjaChyZXN1bHQuZXJyb3JzLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGVycm9yLnBhdGggPSBwYXRoLmNvbmNhdChlcnJvci5wYXRoLmNvbmNhdCgnZGVmYXVsdCcpKTtcblxuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgXy5mb3JFYWNoKHJlc3VsdC53YXJuaW5ncywgZnVuY3Rpb24gKHdhcm5pbmcpIHtcbiAgICAgIHdhcm5pbmcucGF0aCA9IHBhdGguY29uY2F0KHdhcm5pbmcucGF0aC5wdXNoKCdkZWZhdWx0JykpO1xuXG4gICAgICByZXNwb25zZS53YXJuaW5ncy5wdXNoKHdhcm5pbmcpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hUHJvcGVydGllcyAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIF8uZm9yRWFjaChfLmRpZmZlcmVuY2Uoc2NoZW1hLnJlcXVpcmVkIHx8IFtdLCBnZXRTY2hlbWFQcm9wZXJ0aWVzKHNjaGVtYSkpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgIGNvZGU6ICdPQkpFQ1RfTUlTU0lOR19SRVFVSVJFRF9QUk9QRVJUWV9ERUZJTklUSU9OJyxcbiAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IGRlZmluaXRpb246ICcgKyBuYW1lLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYWxsIHJlZmVyZW5jZXMuXG4gKlxuICogKiBJZGVudGlmaWVzIGNpcmN1bGFyIGluaGVyaXRhbmNlIHJlZmVyZW5jZXNcbiAqICogSWRlbnRpZmllcyB1bnJlZmVyZW5jZWQgcmVmZXJlbmNlYWJsZSBkZWZpbml0aW9uc1xuICogKiBJZGVudGlmaWVzIHVucmVzb2x2YWJsZSByZWZlcmVuY2VzXG4gKlxuICogQHBhcmFtIHtTd2FnZ2VyQXBpfSBhcGkgLSBUaGUgU3dhZ2dlckFwaSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVJlZmVyZW5jZXMgKGFwaSkge1xuICB2YXIgZG9jUmVmZXJlbmNlcyA9IHt9O1xuICB2YXIgaW5oZXJpdGFuY2VEZXRhaWxzID0ge307XG4gIHZhciByZWZlcmVuY2VhYmxlID0gW107XG4gIHZhciByZWZlcmVuY2VzID0ge307XG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZEFuY2VzdG9yIChkc2MsIGFuYykge1xuICAgIGlmICghXy5oYXMoaW5oZXJpdGFuY2VEZXRhaWxzLCBkc2MpKSB7XG4gICAgICBpbmhlcml0YW5jZURldGFpbHNbZHNjXSA9IHtcbiAgICAgICAgbGluZWFnZTogW10sXG4gICAgICAgIHBhcmVudHM6IFtcbiAgICAgICAgICBhbmNcbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5oZXJpdGFuY2VEZXRhaWxzW2RzY10ucGFyZW50cy5wdXNoKGFuYyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkUmVmZXJlbmNlIChyZWYsIHB0cikge1xuICAgIGlmIChfLmluZGV4T2YocmVmZXJlbmNlcywgcmVmKSA9PT0gLTEpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlZmVyZW5jZXNbcmVmXSkpIHtcbiAgICAgICAgcmVmZXJlbmNlc1tyZWZdID0gW107XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCByZWZlcmVuY2VzIHRvIGFuY2VzdG9yc1xuICAgICAgaWYgKHJlZi5pbmRleE9mKCdhbGxPZicpID4gLTEpIHtcbiAgICAgICAgYWRkUmVmZXJlbmNlKHJlZi5zdWJzdHJpbmcoMCwgcmVmLmxhc3RJbmRleE9mKCcvYWxsT2YnKSkpO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VzW3JlZl0ucHVzaChwdHIpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVNlY3VyaXR5UHJvY2Vzc29yIChwYXRoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZWN1cml0eSwgaW5kZXgpIHtcbiAgICAgIF8uZm9yRWFjaChzZWN1cml0eSwgZnVuY3Rpb24gKHNjb3BlcywgbmFtZSkge1xuICAgICAgICB2YXIgc2RQYXRoID0gWydzZWN1cml0eURlZmluaXRpb25zJywgbmFtZV07XG4gICAgICAgIHZhciBzZFB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihzZFBhdGgpO1xuICAgICAgICB2YXIgc3JQYXRoID0gcGF0aC5jb25jYXQoW2luZGV4LnRvU3RyaW5nKCksIG5hbWVdKTtcblxuICAgICAgICAvLyBJZGVudGlmeSBtaXNzaW5nIHJlZmVyZW5jZSB0byB0aGUgc2VjdXJpdHkgZGVmaW5pdGlvblxuICAgICAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZWFibGUsIHNkUHRyKSA9PT0gLTEpIHtcbiAgICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiAnVU5SRVNPTFZBQkxFX1JFRkVSRU5DRScsXG4gICAgICAgICAgICBtZXNzYWdlOiAnU2VjdXJpdHkgZGVmaW5pdGlvbiBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICcgKyBuYW1lLFxuICAgICAgICAgICAgcGF0aDogc3JQYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkUmVmZXJlbmNlKHNkUHRyLCBKc29uUmVmcy5wYXRoVG9QdHIoc3JQYXRoKSk7XG5cbiAgICAgICAgICBfLmZvckVhY2goc2NvcGVzLCBmdW5jdGlvbiAoc2NvcGUsIHNJbmRleCkge1xuICAgICAgICAgICAgdmFyIHNzclBhdGggPSBzclBhdGguY29uY2F0KHNJbmRleC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHZhciBzc3JQdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoLmNvbmNhdChbJ3Njb3BlcycsIHNjb3BlXSkpO1xuXG4gICAgICAgICAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZWFibGUsIHNzclB0cikgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnVU5SRVNPTFZBQkxFX1JFRkVSRU5DRScsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1NlY3VyaXR5IHNjb3BlIGRlZmluaXRpb24gY291bGQgbm90IGJlIHJlc29sdmVkOiAnICsgc2NvcGUsXG4gICAgICAgICAgICAgICAgcGF0aDogc3NyUGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFkZFJlZmVyZW5jZShKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoLmNvbmNhdChbJ3Njb3BlcycsIHNjb3BlXSkpLCBzc3JQdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd2Fsa0xpbmVhZ2UgKHJvb3QsIGlkLCBsaW5lYWdlKSB7XG4gICAgdmFyIGRldGFpbHMgPSBpbmhlcml0YW5jZURldGFpbHNbaWQgfHwgcm9vdF07XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgXy5lYWNoKGRldGFpbHMucGFyZW50cywgZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICBsaW5lYWdlLnB1c2gocGFyZW50KTtcblxuICAgICAgICBpZiAocm9vdCAhPT0gcGFyZW50KSB7XG4gICAgICAgICAgd2Fsa0xpbmVhZ2Uocm9vdCwgcGFyZW50LCBsaW5lYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWRlbnRpZnkgcmVmZXJlbmNlYWJsZSBkZWZpbml0aW9uc1xuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLmRlZmluaXRpb25zLCBmdW5jdGlvbiAoZGVmLCBuYW1lKSB7XG4gICAgcmVmZXJlbmNlYWJsZS5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihbJ2RlZmluaXRpb25zJywgbmFtZV0pKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAoZGVmLCBuYW1lKSB7XG4gICAgcmVmZXJlbmNlYWJsZS5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihbJ3BhcmFtZXRlcnMnLCBuYW1lXSkpO1xuICB9KTtcblxuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoWydyZXNwb25zZXMnLCBuYW1lXSkpO1xuICB9KTtcblxuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5RGVmaW5pdGlvbnMsIGZ1bmN0aW9uIChkZWYsIG5hbWUpIHtcbiAgICB2YXIgc1BhdGggPSBbJ3NlY3VyaXR5RGVmaW5pdGlvbnMnLCBuYW1lXTtcblxuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoc1BhdGgpKTtcblxuICAgIF8uZm9yRWFjaChkZWYuc2NvcGVzLCBmdW5jdGlvbiAoZGVzY3JpcHRpb24sIHNjb3BlKSB7XG4gICAgICB2YXIgcHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHNQYXRoLmNvbmNhdChbJ3Njb3BlcycsIHNjb3BlXSkpO1xuXG4gICAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZWFibGUsIHB0cikgPT09IC0xKSB7XG4gICAgICAgIHJlZmVyZW5jZWFibGUucHVzaChwdHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvLyBJZGVudGlmeSByZWZlcmVuY2VzIGFuZCBidWlsZCBpbmhlcml0YW5jZSBtb2RlbFxuICBfLmZvckVhY2goYXBpLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChtZXRhZGF0YSwgcHRyKSB7XG4gICAgdmFyIHB0clBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpO1xuXG4gICAgaWYgKCFfLmhhcyhtZXRhZGF0YSwgJ21pc3NpbmcnKSkge1xuICAgICAgLy8gVGhpcyByZWZlcmVuY2UgaXMgYSBkb2N1bWVudCByZWZlcmVuY2UsIHJlY29yZCBpdCBmb3IgbGF0ZXJcbiAgICAgIGlmIChbJ3JlbGF0aXZlJywgJ3JlbW90ZSddLmluZGV4T2YobWV0YWRhdGEudHlwZSkgPiAtMSAmJiBtZXRhZGF0YS5mcVVSSS5pbmRleE9mKCcjJykgPT09IC0xKSB7XG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGRvY1JlZmVyZW5jZXNbbWV0YWRhdGEuZnFVUkldKSkge1xuICAgICAgICAgIGRvY1JlZmVyZW5jZXNbbWV0YWRhdGEuZnFVUkldID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBkb2NSZWZlcmVuY2VzW21ldGFkYXRhLmZxVVJJXS5wdXNoKHB0cik7XG4gICAgICB9XG5cbiAgICAgIGFkZFJlZmVyZW5jZShtZXRhZGF0YS5mcVVSSSwgcHRyKTtcblxuICAgICAgaWYgKHB0clBhdGhbcHRyUGF0aC5sZW5ndGggLSAyXSA9PT0gJ2FsbE9mJykge1xuICAgICAgICBhZGRBbmNlc3RvcihKc29uUmVmcy5wYXRoVG9QdHIocHRyUGF0aC5zbGljZSgwLCBwdHJQYXRoLmxlbmd0aCAtIDIpKSwgbWV0YWRhdGEudXJpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIGpzb24tcmVmcyBvbmx5IHByb2Nlc3NlcyBlYWNoIHJlZmVyZW5jZWQgZG9jdW1lbnQgb25jZSwgbm8gbWF0dGVyIGhvdyBtYW55IHBsYWNlcyB0aGF0IGRvY3VtZW50IGlzIHJlZmVyZW5jZWQgZnJvbS5cbiAgLy8gVG8gZW5zdXJlIHRoYXQgYWxsIHBsYWNlcyB3aGVyZSByZWZlcmVuY2VhYmxlIG9iamVjdHMgYXJlIHJlZmVyZW5jZWQgY2FuIGJlIGlkZW50aWZpZWQsIHdlIG5lZWQgb3QgcG9zdC1wcm9jZXNzIHRoZVxuICAvLyByZWZlcmVuY2UgbW9kZWwgY3JlYXRlZCBhYm92ZSBhbmQgcmVjb3JkIGVhY2ggcmVmZXJlbmNlIHdpdGhpbiBhIHJlbGF0aXZlL3JlbW90ZSBkb2N1bWVudCByZWxhdGl2ZSB0byB3aGVyZSB0aGVcbiAgLy8gY29udGFpbmluZyBkb2N1bWVudCB3YXMgcmVmZXJlbmNlZC5cbiAgcmVmZXJlbmNlcyA9IF8ucmVkdWNlKHJlZmVyZW5jZXMsIGZ1bmN0aW9uIChhbGxSZWZzLCBmcm9tLCB0bykge1xuICAgIHZhciB0b1BhcnRzID0gdG8uc3BsaXQoJyMnKTtcblxuICAgIGlmICh0b1BhcnRzWzBdICE9PSAnJyAmJiB0b1BhcnRzWzFdICE9PSAnJykge1xuICAgICAgXy5mb3JFYWNoKGRvY1JlZmVyZW5jZXNbdG9QYXJ0c1swXV0sIGZ1bmN0aW9uIChkRnJvbSkge1xuICAgICAgICBhbGxSZWZzW1tkRnJvbSwgdG9QYXJ0c1sxXV0uam9pbignJyldID0gZnJvbTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGxSZWZzW3RvXSA9IGZyb207XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJlZnM7XG4gIH0sIHt9KTtcblxuICAvLyBJZGVudGlmeSBjaXJjdWxhciBpbmhlcml0YW5jZVxuICBfLmZvckVhY2goaW5oZXJpdGFuY2VEZXRhaWxzLCBmdW5jdGlvbiAoZGV0YWlscywgcHRyKSB7XG4gICAgd2Fsa0xpbmVhZ2UocHRyLCB1bmRlZmluZWQsIGRldGFpbHMubGluZWFnZSk7XG5cbiAgICBpZiAoZGV0YWlscy5saW5lYWdlLmxlbmd0aCA+IDEgJiYgZGV0YWlscy5saW5lYWdlW2RldGFpbHMubGluZWFnZS5sZW5ndGggLSAxXSA9PT0gcHRyIHx8XG4gICAgICAgIGRldGFpbHMucGFyZW50c1swXSA9PT0gcHRyKSB7XG4gICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdDSVJDVUxBUl9JTkhFUklUQU5DRScsXG4gICAgICAgIGxpbmVhZ2U6IFtwdHJdLmNvbmNhdChkZXRhaWxzLmxpbmVhZ2UpLFxuICAgICAgICBtZXNzYWdlOiAnU2NoZW1hIG9iamVjdCBpbmhlcml0cyBmcm9tIGl0c2VsZjogJyArIHB0cixcbiAgICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIocHRyKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBJZGVudGlmeSByZWZlcmVuY2VzIGFuZCB2YWxpZGF0ZSBtaXNzaW5nIHJlZmVyZW5jZXMgZm9yIG5vbi1KU09OIFJlZmVyZW5jZXMgKHNlY3VyaXR5KVxuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5LCBjcmVhdGVTZWN1cml0eVByb2Nlc3NvcihbJ3NlY3VyaXR5J10pKTtcblxuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAocGF0aERlZiwgbmFtZSkge1xuICAgIHZhciBwUGF0aCA9IFsncGF0aHMnLCBuYW1lXTtcblxuICAgIF8uZm9yRWFjaChwYXRoRGVmLnNlY3VyaXR5LCBjcmVhdGVTZWN1cml0eVByb2Nlc3NvcihwUGF0aC5jb25jYXQoJ3NlY3VyaXR5JykpKTtcblxuICAgIF8uZm9yRWFjaChwYXRoRGVmLCBmdW5jdGlvbiAob3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIG5vbi1vcGVyYXRpb25zXG4gICAgICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZEh0dHBNZXRob2RzLCBtZXRob2QpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF8uZm9yRWFjaChvcGVyYXRpb25EZWYuc2VjdXJpdHksXG4gICAgICAgICAgICAgICAgY3JlYXRlU2VjdXJpdHlQcm9jZXNzb3IocFBhdGguY29uY2F0KFttZXRob2QsICdzZWN1cml0eSddKSkpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBJZGVudGlmeSB1bnVzZWQgcmVmZXJlbmNlcyAobWlzc2luZyByZWZlcmVuY2VzIGFyZSBhbHJlYWR5IGhhbmRsZWQgYWJvdmUpXG4gIF8uZm9yRWFjaChfLmRpZmZlcmVuY2UocmVmZXJlbmNlYWJsZSwgT2JqZWN0LmtleXMocmVmZXJlbmNlcykpLCBmdW5jdGlvbiAocHRyKSB7XG4gICAgcmVzcG9uc2Uud2FybmluZ3MucHVzaCh7XG4gICAgICBjb2RlOiAnVU5VU0VEX0RFRklOSVRJT04nLFxuICAgICAgbWVzc2FnZTogJ0RlZmluaXRpb24gaXMgbm90IHVzZWQ6ICcgKyBwdHIsXG4gICAgICBwYXRoOiBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYWxsIHNjaGVtYSBvYmplY3RzIGFuZCBzY2hlbWEtbGlrZSBvYmplY3RzIChub24tYm9keSBwYXRoIHBhcmFtZXRlcnMpLlxuICpcbiAqICogVmFsaWRhdGVzIGNpcmN1bGFyIHJlZmVyZW5jZXMgcmVsYXRlZCB0byBjb21wb3NpdGlvbi9pbmhlcml0YW5jZVxuICogKiBWYWxpZGF0ZXMgdGhhdCBhbGwgYXJyYXkgdHlwZXMgaGF2ZSB0aGVpciByZXF1aXJlZCBpdGVtcyBwcm9wZXJ0eVxuICogICAgIChAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjL2lzc3Vlcy8xNzR9KVxuICogKiBWYWxpZGF0ZXMgdGhhdCBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIHZhbGlkIGJhc2VkIG9uIGl0cyByZXNwZWN0aXZlIHNjaGVtYVxuICpcbiAqIEBwYXJhbSB7U3dhZ2dlckFwaX0gYXBpIC0gVGhlIFN3YWdnZXJBcGkgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3Mgb2YgdGhlIHZhbGlkYXRpb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWFPYmplY3RzIChhcGkpIHtcbiAgLy8gQnVpbGQgYSBibGFja2xpc3QgdG8gYXZvaWQgY2FzY2FkaW5nIGVycm9ycy93YXJuaW5nc1xuICB2YXIgYmxhY2tsaXN0ID0gXy5yZWR1Y2UoYXBpLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChsaXN0LCBtZXRhZGF0YSwgcHRyKSB7XG4gICAgdmFyIHJlZlBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpO1xuXG4gICAgbGlzdC5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihyZWZQYXRoKSk7XG5cbiAgICByZXR1cm4gbGlzdDtcbiAgfSwgW10pO1xuICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHZhbGlkYXRvcnMgPSBbXG4gICAgdmFsaWRhdGVBcnJheVR5cGVJdGVtc0V4aXN0ZW5jZSxcbiAgICB2YWxpZGF0ZURlZmF1bHRWYWx1ZSxcbiAgICB2YWxpZGF0ZVNjaGVtYVByb3BlcnRpZXNcbiAgXTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVBhcmFtZXRlcnMgKHBhcmFtZXRlcnMsIHBhdGgpIHtcbiAgICBfLmZvckVhY2gocGFyYW1ldGVycywgZnVuY3Rpb24gKHBhcmFtZXRlckRlZiwgbmFtZSkge1xuICAgICAgdmFyIHBQYXRoO1xuXG4gICAgICBpZiAoXy5pc051bWJlcihuYW1lKSkge1xuICAgICAgICBuYW1lID0gbmFtZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBwUGF0aCA9IHBhdGguY29uY2F0KG5hbWUpO1xuXG4gICAgICAvLyBDcmVhdGUgSlNPTiBTY2hlbWEgZm9yIG5vbi1ib2R5IHBhcmFtZXRlcnNcbiAgICAgIGlmIChwYXJhbWV0ZXJEZWYuaW4gIT09ICdib2R5Jykge1xuICAgICAgICBwYXJhbWV0ZXJEZWYgPSBoZWxwZXJzLmNvbXB1dGVQYXJhbWV0ZXJTY2hlbWEocGFyYW1ldGVyRGVmKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgcGFyYW1ldGVyRGVmLCBwUGF0aCwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZXMgKHJlc3BvbnNlcywgcGF0aCkge1xuICAgIF8uZm9yRWFjaChyZXNwb25zZXMsIGZ1bmN0aW9uIChyZXNwb25zZURlZiwgbmFtZSkge1xuICAgICAgdmFyIHJQYXRoID0gcGF0aC5jb25jYXQobmFtZSk7XG5cbiAgICAgIF8uZm9yRWFjaChyZXNwb25zZURlZi5oZWFkZXJzLCBmdW5jdGlvbiAoaGVhZGVyLCBoTmFtZSkge1xuICAgICAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBoZWFkZXIsIHJQYXRoLmNvbmNhdChbJ2hlYWRlcnMnLCBoTmFtZV0pLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJlc3BvbnNlRGVmLnNjaGVtYSkpIHtcbiAgICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgcmVzcG9uc2VEZWYuc2NoZW1hLCByUGF0aC5jb25jYXQoJ3NjaGVtYScpLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBkZWZpbml0aW9uc1xuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLmRlZmluaXRpb25zLCBmdW5jdGlvbiAoZGVmaW5pdGlvbkRlZiwgbmFtZSkge1xuICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIGRlZmluaXRpb25EZWYsIFsnZGVmaW5pdGlvbnMnLCBuYW1lXSwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICB9KTtcblxuICAvLyBWYWxpZGF0ZSBnbG9iYWwgcGFyYW1ldGVyIGRlZmluaXRpb25zXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGFyYW1ldGVycywgWydwYXJhbWV0ZXJzJ10pO1xuXG4gIC8vIFZhbGlkYXRlIGdsb2JhbCByZXNwb25zZSBkZWZpbml0aW9uc1xuICB2YWxpZGF0ZVJlc3BvbnNlcyhhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucmVzcG9uc2VzLCBbJ3Jlc3BvbnNlcyddKTtcblxuICAvLyBWYWxpZGF0ZSBwYXRocyBhbmQgb3BlcmF0aW9uc1xuICBfLmZvckVhY2goYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAocGF0aERlZiwgcGF0aCkge1xuICAgIHZhciBwUGF0aCA9IFsncGF0aHMnLCBwYXRoXTtcblxuICAgIC8vIFZhbGlkYXRlIHBhdGgtbGV2ZWwgcGFyYW1ldGVyIGRlZmluaXRpb25zXG4gICAgdmFsaWRhdGVQYXJhbWV0ZXJzKHBhdGhEZWYucGFyYW1ldGVycywgcFBhdGguY29uY2F0KCdwYXJhbWV0ZXJzJykpO1xuXG4gICAgXy5mb3JFYWNoKHBhdGhEZWYsIGZ1bmN0aW9uIChvcGVyYXRpb25EZWYsIG1ldGhvZCkge1xuICAgICAgdmFyIG9QYXRoID0gcFBhdGguY29uY2F0KG1ldGhvZCk7XG5cbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIG5vbi1vcGVyYXRpb25zXG4gICAgICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZEh0dHBNZXRob2RzLCBtZXRob2QpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIG9wZXJhdGlvbiBwYXJhbWV0ZXIgZGVmaW5pdGlvbnNcbiAgICAgIHZhbGlkYXRlUGFyYW1ldGVycyhvcGVyYXRpb25EZWYucGFyYW1ldGVycywgb1BhdGguY29uY2F0KCdwYXJhbWV0ZXJzJykpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBvcGVyYXRpb24gcmVzcG9uc2UgZGVmaW5pdGlvbnNcbiAgICAgIHZhbGlkYXRlUmVzcG9uc2VzKG9wZXJhdGlvbkRlZi5yZXNwb25zZXMsIG9QYXRoLmNvbmNhdCgncmVzcG9uc2VzJykpO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHBhdGhzIGFuZCBvcGVyYXRpb25zIChXcml0dGVuIGFzIG9uZSB2YWxpZGF0b3IgdG8gYXZvaWQgbXVsdGlwbGUgcGFzc2VzKVxuICpcbiAqICogRW5zdXJlIHRoYXQgcGF0aCBwYXJhbWV0ZXJzIGFyZSBkZWZpbmVkIGZvciBlYWNoIHBhdGggcGFyYW1ldGVyIGRlY2xhcmF0aW9uXG4gKiAqIEVuc3VyZSB0aGF0IGRlZmluZWQgcGF0aCBwYXJhbWV0ZXJzIG1hdGNoIGEgZGVjbGFyZWQgcGF0aCBwYXJhbWV0ZXJcbiAqICogRW5zdXJlIHRoYXQgcGF0aHMgYXJlIGZ1bmN0aW9uYWxseSBkaWZmZXJlbnRcbiAqICogRW5zdXJlIHRoYXQgYW4gb3BlcmF0aW9uIG9ubHkgaGFzIG9uZSBib2R5IHBhcmFtZXRlclxuICogKiBFbnN1cmUgdGhhdCBhbiBvcGVyYXRpb24gaGFzIG9ubHkgYSBib2R5IG9yIGZvcm1EYXRhIHBhcmFtZXRlciBidXQgbm90IGJvdGhcbiAqICogRW5zdXJlIHRoYXQgYWxsIG9wZXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSB1bmlxdWUgKGluICsgbmFtZSlcbiAqICogRW5zdXJlIHRoYXQgYWxsIG9wZXJhdGlvbiBpZHMgYXJlIHVuaXF1ZVxuICogKiBFbnN1cmUgdGhhdCBwYXRoIHBhcmFtZXRlcnMgaGF2ZSBhIG5hbWVcbiAqXG4gKiBAcGFyYW0ge1N3YWdnZXJBcGl9IGFwaSAtIFRoZSBTd2FnZ2VyQXBpIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGF0aHNBbmRPcGVyYXRpb25zIChhcGkpIHtcbiAgdmFyIHJlc3BvbnNlID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVEdXBsaWNhdGVQYXJhbWV0ZXIgKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIHBhdGgpIHtcbiAgICB2YXIgcE5hbWUgPSBwYXJhbWV0ZXIuaW4gKyAnOicgKyBwYXJhbWV0ZXIubmFtZTtcblxuICAgIC8vIElkZW50aWZ5IGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXNcbiAgICBpZiAoXy5pbmRleE9mKHNlZW5QYXJhbWV0ZXJzLCBwTmFtZSkgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRFVQTElDQVRFX1BBUkFNRVRFUicsXG4gICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY2Fubm90IGhhdmUgZHVwbGljYXRlIHBhcmFtZXRlcnM6ICcgKyBKc29uUmVmcy5wYXRoVG9QdHIocGF0aCksXG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWVuUGFyYW1ldGVycy5wdXNoKHBOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VlblBhcmFtZXRlcnM7XG4gIH1cblxuICBfLnJlZHVjZShhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGF0aHMsIGZ1bmN0aW9uIChtZXRhZGF0YSwgcGF0aERlZiwgcGF0aCkge1xuICAgIHZhciBkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzID0gW107XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gcGF0aDtcbiAgICB2YXIgcFBhdGggPSBbJ3BhdGhzJywgcGF0aF07XG5cbiAgICBfLmZvckVhY2gocGF0aC5tYXRjaCgvXFx7KC4qPylcXH0vZyksIGZ1bmN0aW9uIChhcmcsIGluZGV4KSB7XG4gICAgICAvLyBSZWNvcmQgdGhlIHBhdGggcGFyYW1ldGVyIG5hbWVcbiAgICAgIGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMucHVzaChhcmcucmVwbGFjZSgvW3t9XS9nLCAnJykpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIG5vcm1hbGl6ZWQgcGF0aFxuICAgICAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKGFyZywgJ2FyZycgKyBpbmRleCk7XG4gICAgfSk7XG5cbiAgICAvLyBJZGVudGlmeSBwYXRocyB3aXRoIGVtcHR5IHBhcmFtZXRlciBkZWNsYXJhdGlvbnNcbiAgICBpZiAoZGVjbGFyZWRQYXRoUGFyYW1ldGVycy5pbmRleE9mKCcnKSA+IC0xKSB7XG4gICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdFTVBUWV9QQVRIX1BBUkFNRVRFUl9ERUNMQVJBVElPTicsXG4gICAgICAgIG1lc3NhZ2U6ICdQYXRoIHBhcmFtZXRlciBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgZW1wdHk6ICcgKyBwYXRoLFxuICAgICAgICBwYXRoOiBbJ3BhdGhzJywgcGF0aF1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIElkZW5maXR5IHBhdGhzIHRoYXQgYXJlIGZ1bmN0aW9uYWxseSB0aGUgc2FtZVxuICAgIGlmIChfLmluZGV4T2YobWV0YWRhdGEucGF0aHMsIG5vcm1hbGl6ZWRQYXRoKSA+IC0xKSB7XG4gICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdFUVVJVkFMRU5UX1BBVEgnLFxuICAgICAgICBtZXNzYWdlOiAnRXF1aXZhbGVudCBwYXRoIGFscmVhZHkgZXhpc3RzOiAnICsgcGF0aCxcbiAgICAgICAgcGF0aDogcFBhdGhcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXRhZGF0YS5wYXRocy5wdXNoKG5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgcGF0aC1sZXZlbCBwYXJhbWV0ZXJzIChXZSBkbyB0aGlzIG1hbnVhbGx5IHNpbmNlIFN3YWdnZXJBcGkjZ2V0T3BlcmF0aW9uIGNvbnNvbGlkYXRlcyB0aGVtKVxuICAgIF8ucmVkdWNlKHBhdGhEZWYucGFyYW1ldGVycywgZnVuY3Rpb24gKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIGluZGV4KSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVEdXBsaWNhdGVQYXJhbWV0ZXIoc2VlblBhcmFtZXRlcnMsIHBhcmFtZXRlciwgcFBhdGguY29uY2F0KFsncGFyYW1ldGVycycsIGluZGV4LnRvU3RyaW5nKCldKSk7XG4gICAgfSwgW10pO1xuXG4gICAgXy5mb3JFYWNoKHBhdGhEZWYsIGZ1bmN0aW9uIChvcGVyYXRpb25EZWYsIG1ldGhvZCkge1xuICAgICAgdmFyIGRlZmluZWRQYXRoUGFyYW1ldGVycyA9IHt9O1xuICAgICAgdmFyIG9QYXRoID0gcFBhdGguY29uY2F0KG1ldGhvZCk7XG4gICAgICB2YXIgb3BlcmF0aW9uSWQgPSBvcGVyYXRpb25EZWYub3BlcmF0aW9uSWQ7XG4gICAgICB2YXIgcGF0aE1ldGFkYXRhO1xuICAgICAgdmFyIHBhcmFtZXRlcnM7XG5cbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIG5vbi1vcGVyYXRpb25zXG4gICAgICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZEh0dHBNZXRob2RzLCBtZXRob2QpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIElkZW50aWZ5IGR1cGxpY2F0ZSBvcGVyYXRpb25JZHNcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChvcGVyYXRpb25JZCkpIHtcbiAgICAgICAgaWYgKF8uaW5kZXhPZihtZXRhZGF0YS5vcGVyYXRpb25JZHMsIG9wZXJhdGlvbklkKSAhPT0gLTEpIHtcbiAgICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiAnRFVQTElDQVRFX09QRVJBVElPTklEJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdDYW5ub3QgaGF2ZSBtdWx0aXBsZSBvcGVyYXRpb25zIHdpdGggdGhlIHNhbWUgb3BlcmF0aW9uSWQ6ICcgKyBvcGVyYXRpb25JZCxcbiAgICAgICAgICAgIHBhdGg6IG9QYXRoLmNvbmNhdChbJ29wZXJhdGlvbklkJ10pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWV0YWRhdGEub3BlcmF0aW9uSWRzLnB1c2gob3BlcmF0aW9uSWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElkZW50aWZ5IGR1cGxpY2F0ZSBvcGVyYXRpb24tbGV2ZWwgcGFyYW1ldGVycyAoV2UgZG8gdGhpcyBtYW51YWxseSBmb3IgdGhlIHNhbWUgcmVhc29ucyBhYm92ZSlcbiAgICAgIF8ucmVkdWNlKG9wZXJhdGlvbkRlZi5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAoc2VlblBhcmFtZXRlcnMsIHBhcmFtZXRlciwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRHVwbGljYXRlUGFyYW1ldGVyKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIG9QYXRoLmNvbmNhdChbJ3BhcmFtZXRlcnMnLCBpbmRleC50b1N0cmluZygpXSkpO1xuICAgICAgfSwgW10pO1xuXG4gICAgICAvLyBVc2UgU3dhZ2dlckFwaSNnZXRPcGVyYXRpb24gdG8gYXZvaWQgaGF2aW5nIHRvIGNvbnNvbGlkYXRlIHBhcmFtZXRlcnNcbiAgICAgIHBhcmFtZXRlcnMgPSBhcGkuZ2V0T3BlcmF0aW9uKHBhdGgsIG1ldGhvZCkuZ2V0UGFyYW1ldGVycygpO1xuXG4gICAgICBwYXRoTWV0YWRhdGEgPSBfLnJlZHVjZShwYXJhbWV0ZXJzLCBmdW5jdGlvbiAocE1ldGFkYXRhLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgLy8gUmVjb3JkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgICBpZiAocGFyYW1ldGVyLmluID09PSAncGF0aCcpIHtcbiAgICAgICAgICBkZWZpbmVkUGF0aFBhcmFtZXRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyLnB0cjtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIuaW4gPT09ICdib2R5Jykge1xuICAgICAgICAgIHBNZXRhZGF0YS5ib2R5UGFyYW1ldGV0ZXJzICs9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLmluID09PSAnZm9ybURhdGEnKSB7XG4gICAgICAgICAgcE1ldGFkYXRhLmZvcm1QYXJhbWV0ZXJzICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcE1ldGFkYXRhO1xuICAgICAgfSwge2JvZHlQYXJhbWV0ZXRlcnM6IDAsIGZvcm1QYXJhbWV0ZXJzOiAwfSk7XG5cbiAgICAgIC8vIElkZW50aWZ5IG11bHRpcGxlIGJvZHkgcGFyYW1ldGVyc1xuICAgICAgaWYgKHBhdGhNZXRhZGF0YS5ib2R5UGFyYW1ldGV0ZXJzID4gMSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ01VTFRJUExFX0JPRFlfUEFSQU1FVEVSUycsXG4gICAgICAgICAgbWVzc2FnZTogJ09wZXJhdGlvbiBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBib2R5IHBhcmFtZXRlcnMnLFxuICAgICAgICAgIHBhdGg6IG9QYXRoXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBoYXZpbmcgYm90aCBhIGJvZHkgYW5kIGEgZm9ybSBwYXJhbWV0ZXJcbiAgICAgIGlmIChwYXRoTWV0YWRhdGEuYm9keVBhcmFtZXRldGVycyA+IDAgJiYgcGF0aE1ldGFkYXRhLmZvcm1QYXJhbWV0ZXJzID4gMCkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ0lOVkFMSURfUEFSQU1FVEVSX0NPTUJJTkFUSU9OJyxcbiAgICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNhbm5vdCBoYXZlIGEgYm9keSBwYXJhbWV0ZXIgYW5kIGEgZm9ybURhdGEgcGFyYW1ldGVyJyxcbiAgICAgICAgICBwYXRoOiBvUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgdW5kZWZpbmVkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzLCBfLmtleXMoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzKSksIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnTUlTU0lOR19QQVRIX1BBUkFNRVRFUl9ERUZJTklUSU9OJyxcbiAgICAgICAgICBtZXNzYWdlOiAnUGF0aCBwYXJhbWV0ZXIgaXMgZGVjbGFyZWQgYnV0IGlzIG5vdCBkZWZpbmVkOiAnICsgbmFtZSxcbiAgICAgICAgICBwYXRoOiBvUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZGVudGlmeSB1bmRlY2xhcmVkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShfLmtleXMoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzKSwgZGVjbGFyZWRQYXRoUGFyYW1ldGVycyksIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnTUlTU0lOR19QQVRIX1BBUkFNRVRFUl9ERUNMQVJBVElPTicsXG4gICAgICAgICAgbWVzc2FnZTogJ1BhdGggcGFyYW1ldGVyIGlzIGRlZmluZWQgYnV0IGlzIG5vdCBkZWNsYXJlZDogJyArIG5hbWUsXG4gICAgICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzW25hbWVdKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9LCB7cGF0aHM6IFtdLCBvcGVyYXRpb25JZHM6IFtdfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAganNvblNjaGVtYVZhbGlkYXRvcjogdmFsaWRhdGVTdHJ1Y3R1cmUsXG4gIHNlbWFudGljVmFsaWRhdG9yczogW1xuICAgIHZhbGlkYXRlUmVmZXJlbmNlcyxcbiAgICB2YWxpZGF0ZVNjaGVtYU9iamVjdHMsXG4gICAgdmFsaWRhdGVQYXRoc0FuZE9wZXJhdGlvbnNcbiAgXVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gY29tcGFyZSBhbmQgaXNCdWZmZXIgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9ibG9iLzY4MGU5ZTVlNDg4ZjIyYWFjMjc1OTlhNTdkYzg0NGE2MzE1OTI4ZGQvaW5kZXguanNcbi8vIG9yaWdpbmFsIG5vdGljZTpcblxuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgeCA9IGEubGVuZ3RoO1xuICB2YXIgeSA9IGIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldO1xuICAgICAgeSA9IGJbaV07XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKHkgPCB4KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBpc0J1ZmZlcihiKSB7XG4gIGlmIChnbG9iYWwuQnVmZmVyICYmIHR5cGVvZiBnbG9iYWwuQnVmZmVyLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoYik7XG4gIH1cbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcik7XG59XG5cbi8vIGJhc2VkIG9uIG5vZGUgYXNzZXJ0LCBvcmlnaW5hbCBub3RpY2U6XG5cbi8vIGh0dHA6Ly93aWtpLmNvbW1vbmpzLm9yZy93aWtpL1VuaXRfVGVzdGluZy8xLjBcbi8vXG4vLyBUSElTIElTIE5PVCBURVNURUQgTk9SIExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghXG4vL1xuLy8gT3JpZ2luYWxseSBmcm9tIG5hcndoYWwuanMgKGh0dHA6Ly9uYXJ3aGFsanMub3JnKVxuLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0b1xuLy8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU5cbi8vIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT05cbi8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwvJyk7XG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwU2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgZnVuY3Rpb25zSGF2ZU5hbWVzID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbygpIHt9Lm5hbWUgPT09ICdmb28nO1xufSgpKTtcbmZ1bmN0aW9uIHBUb1N0cmluZyAob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcbn1cbmZ1bmN0aW9uIGlzVmlldyhhcnJidWYpIHtcbiAgaWYgKGlzQnVmZmVyKGFycmJ1ZikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGFycmJ1Zik7XG4gIH1cbiAgaWYgKCFhcnJidWYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGFycmJ1ZiBpbnN0YW5jZW9mIERhdGFWaWV3KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGFycmJ1Zi5idWZmZXIgJiYgYXJyYnVmLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gMS4gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3dcbi8vIEFzc2VydGlvbkVycm9yJ3Mgd2hlbiBwYXJ0aWN1bGFyIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuIFRoZVxuLy8gYXNzZXJ0IG1vZHVsZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGZvbGxvd2luZyBpbnRlcmZhY2UuXG5cbnZhciBhc3NlcnQgPSBtb2R1bGUuZXhwb3J0cyA9IG9rO1xuXG4vLyAyLiBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBhc3NlcnQuXG4vLyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogbWVzc2FnZSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IGFjdHVhbCxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgfSlcblxudmFyIHJlZ2V4ID0gL1xccypmdW5jdGlvblxccysoW15cXChcXHNdKilcXHMqLztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUvYmxvYi9hZGVlZWVjOGJmY2M2MDY4YjE4N2Q3ZDlmYjNkNWJiMWQzYTMwODk5L2ltcGxlbWVudGF0aW9uLmpzXG5mdW5jdGlvbiBnZXROYW1lKGZ1bmMpIHtcbiAgaWYgKCF1dGlsLmlzRnVuY3Rpb24oZnVuYykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcykge1xuICAgIHJldHVybiBmdW5jLm5hbWU7XG4gIH1cbiAgdmFyIHN0ciA9IGZ1bmMudG9TdHJpbmcoKTtcbiAgdmFyIG1hdGNoID0gc3RyLm1hdGNoKHJlZ2V4KTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xufVxuYXNzZXJ0LkFzc2VydGlvbkVycm9yID0gZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Iob3B0aW9ucykge1xuICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICB0aGlzLmFjdHVhbCA9IG9wdGlvbnMuYWN0dWFsO1xuICB0aGlzLmV4cGVjdGVkID0gb3B0aW9ucy5leHBlY3RlZDtcbiAgdGhpcy5vcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3I7XG4gIGlmIChvcHRpb25zLm1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2U7XG4gICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0TWVzc2FnZSh0aGlzKTtcbiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICB9XG4gIHZhciBzdGFja1N0YXJ0RnVuY3Rpb24gPSBvcHRpb25zLnN0YWNrU3RhcnRGdW5jdGlvbiB8fCBmYWlsO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBzdGFja1N0YXJ0RnVuY3Rpb24pO1xuICB9IGVsc2Uge1xuICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJhY2VcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG4gICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgdmFyIG91dCA9IGVyci5zdGFjaztcblxuICAgICAgLy8gdHJ5IHRvIHN0cmlwIHVzZWxlc3MgZnJhbWVzXG4gICAgICB2YXIgZm5fbmFtZSA9IGdldE5hbWUoc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgICAgIHZhciBpZHggPSBvdXQuaW5kZXhPZignXFxuJyArIGZuX25hbWUpO1xuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIC8vIG9uY2Ugd2UgaGF2ZSBsb2NhdGVkIHRoZSBmdW5jdGlvbiBmcmFtZVxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHN0cmlwIG91dCBldmVyeXRoaW5nIGJlZm9yZSBpdCAoYW5kIGl0cyBsaW5lKVxuICAgICAgICB2YXIgbmV4dF9saW5lID0gb3V0LmluZGV4T2YoJ1xcbicsIGlkeCArIDEpO1xuICAgICAgICBvdXQgPSBvdXQuc3Vic3RyaW5nKG5leHRfbGluZSArIDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YWNrID0gb3V0O1xuICAgIH1cbiAgfVxufTtcblxuLy8gYXNzZXJ0LkFzc2VydGlvbkVycm9yIGluc3RhbmNlb2YgRXJyb3JcbnV0aWwuaW5oZXJpdHMoYXNzZXJ0LkFzc2VydGlvbkVycm9yLCBFcnJvcik7XG5cbmZ1bmN0aW9uIHRydW5jYXRlKHMsIG4pIHtcbiAgaWYgKHR5cGVvZiBzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuZnVuY3Rpb24gaW5zcGVjdChzb21ldGhpbmcpIHtcbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcyB8fCAhdXRpbC5pc0Z1bmN0aW9uKHNvbWV0aGluZykpIHtcbiAgICByZXR1cm4gdXRpbC5pbnNwZWN0KHNvbWV0aGluZyk7XG4gIH1cbiAgdmFyIHJhd25hbWUgPSBnZXROYW1lKHNvbWV0aGluZyk7XG4gIHZhciBuYW1lID0gcmF3bmFtZSA/ICc6ICcgKyByYXduYW1lIDogJyc7XG4gIHJldHVybiAnW0Z1bmN0aW9uJyArICBuYW1lICsgJ10nO1xufVxuZnVuY3Rpb24gZ2V0TWVzc2FnZShzZWxmKSB7XG4gIHJldHVybiB0cnVuY2F0ZShpbnNwZWN0KHNlbGYuYWN0dWFsKSwgMTI4KSArICcgJyArXG4gICAgICAgICBzZWxmLm9wZXJhdG9yICsgJyAnICtcbiAgICAgICAgIHRydW5jYXRlKGluc3BlY3Qoc2VsZi5leHBlY3RlZCksIDEyOCk7XG59XG5cbi8vIEF0IHByZXNlbnQgb25seSB0aGUgdGhyZWUga2V5cyBtZW50aW9uZWQgYWJvdmUgYXJlIHVzZWQgYW5kXG4vLyB1bmRlcnN0b29kIGJ5IHRoZSBzcGVjLiBJbXBsZW1lbnRhdGlvbnMgb3Igc3ViIG1vZHVsZXMgY2FuIHBhc3Ncbi8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3MgY29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmVcbi8vIGlnbm9yZWQuXG5cbi8vIDMuIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yXG4vLyB3aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2UgdGhhdFxuLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuICBBbGwgYXNzZXJ0aW9uIG1ldGhvZHMgcHJvdmlkZVxuLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3Jcbi8vIGRpc3BsYXkgcHVycG9zZXMuXG5cbmZ1bmN0aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRGdW5jdGlvbikge1xuICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGFjdHVhbDogYWN0dWFsLFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFja1N0YXJ0RnVuY3Rpb25cbiAgfSk7XG59XG5cbi8vIEVYVEVOU0lPTiEgYWxsb3dzIGZvciB3ZWxsIGJlaGF2ZWQgZXJyb3JzIGRlZmluZWQgZWxzZXdoZXJlLlxuYXNzZXJ0LmZhaWwgPSBmYWlsO1xuXG4vLyA0LiBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBhcyBkZXRlcm1pbmVkXG4vLyBieSAhIWd1YXJkLlxuLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdlX29wdCk7XG4vLyBUaGlzIHN0YXRlbWVudCBpcyBlcXVpdmFsZW50IHRvIGFzc2VydC5lcXVhbCh0cnVlLCAhIWd1YXJkLFxuLy8gbWVzc2FnZV9vcHQpOy4gVG8gdGVzdCBzdHJpY3RseSBmb3IgdGhlIHZhbHVlIHRydWUsIHVzZVxuLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNzYWdlX29wdCk7LlxuXG5mdW5jdGlvbiBvayh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAoIXZhbHVlKSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spO1xufVxuYXNzZXJ0Lm9rID0gb2s7XG5cbi8vIDUuIFRoZSBlcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgc2hhbGxvdywgY29lcmNpdmUgZXF1YWxpdHkgd2l0aFxuLy8gPT0uXG4vLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTtcbn07XG5cbi8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBvYmplY3RzIGFyZSBub3QgZXF1YWxcbi8vIHdpdGggIT0gYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT0nLCBhc3NlcnQubm90RXF1YWwpO1xuICB9XG59O1xuXG4vLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi5cbi8vIGFzc2VydC5kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGZhbHNlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBFcXVhbCcsIGFzc2VydC5kZWVwRXF1YWwpO1xuICB9XG59O1xuXG5hc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnZGVlcFN0cmljdEVxdWFsJywgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcykge1xuICAvLyA3LjEuIEFsbCBpZGVudGljYWwgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICYmIGlzQnVmZmVyKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBjb21wYXJlKGFjdHVhbCwgZXhwZWN0ZWQpID09PSAwO1xuXG4gIC8vIDcuMi4gSWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgRGF0ZSBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgRGF0ZSBvYmplY3QgdGhhdCByZWZlcnMgdG8gdGhlIHNhbWUgdGltZS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzRGF0ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBhY3R1YWwuZ2V0VGltZSgpID09PSBleHBlY3RlZC5nZXRUaW1lKCk7XG5cbiAgLy8gNy4zIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgUmVnRXhwIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNvdXJjZSBhbmRcbiAgLy8gcHJvcGVydGllcyAoYGdsb2JhbGAsIGBtdWx0aWxpbmVgLCBgbGFzdEluZGV4YCwgYGlnbm9yZUNhc2VgKS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkgJiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gYWN0dWFsLnNvdXJjZSA9PT0gZXhwZWN0ZWQuc291cmNlICYmXG4gICAgICAgICAgIGFjdHVhbC5nbG9iYWwgPT09IGV4cGVjdGVkLmdsb2JhbCAmJlxuICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5tdWx0aWxpbmUgJiZcbiAgICAgICAgICAgYWN0dWFsLmxhc3RJbmRleCA9PT0gZXhwZWN0ZWQubGFzdEluZGV4ICYmXG4gICAgICAgICAgIGFjdHVhbC5pZ25vcmVDYXNlID09PSBleHBlY3RlZC5pZ25vcmVDYXNlO1xuXG4gIC8vIDcuNC4gT3RoZXIgcGFpcnMgdGhhdCBkbyBub3QgYm90aCBwYXNzIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyxcbiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS5cbiAgfSBlbHNlIGlmICgoYWN0dWFsID09PSBudWxsIHx8IHR5cGVvZiBhY3R1YWwgIT09ICdvYmplY3QnKSAmJlxuICAgICAgICAgICAgIChleHBlY3RlZCA9PT0gbnVsbCB8fCB0eXBlb2YgZXhwZWN0ZWQgIT09ICdvYmplY3QnKSkge1xuICAgIHJldHVybiBzdHJpY3QgPyBhY3R1YWwgPT09IGV4cGVjdGVkIDogYWN0dWFsID09IGV4cGVjdGVkO1xuXG4gIC8vIElmIGJvdGggdmFsdWVzIGFyZSBpbnN0YW5jZXMgb2YgdHlwZWQgYXJyYXlzLCB3cmFwIHRoZWlyIHVuZGVybHlpbmdcbiAgLy8gQXJyYXlCdWZmZXJzIGluIGEgQnVmZmVyIGVhY2ggdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2VcbiAgLy8gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhlIGFycmF5cyB0byBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgY2hlY2tlZCBieVxuICAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIChha2EgcFRvU3RyaW5nKS4gTmV2ZXIgcGVyZm9ybSBiaW5hcnlcbiAgLy8gY29tcGFyaXNvbnMgZm9yIEZsb2F0KkFycmF5cywgdGhvdWdoLCBzaW5jZSBlLmcuICswID09PSAtMCBidXQgdGhlaXJcbiAgLy8gYml0IHBhdHRlcm5zIGFyZSBub3QgaWRlbnRpY2FsLlxuICB9IGVsc2UgaWYgKGlzVmlldyhhY3R1YWwpICYmIGlzVmlldyhleHBlY3RlZCkgJiZcbiAgICAgICAgICAgICBwVG9TdHJpbmcoYWN0dWFsKSA9PT0gcFRvU3RyaW5nKGV4cGVjdGVkKSAmJlxuICAgICAgICAgICAgICEoYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG4gICAgICAgICAgICAgICBhY3R1YWwgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYWN0dWFsLmJ1ZmZlciksXG4gICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyKSkgPT09IDA7XG5cbiAgLy8gNy41IEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywgZXF1aXZhbGVuY2UgaXNcbiAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkXG4gIC8vIHdpdGggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKSwgdGhlIHNhbWUgc2V0IG9mIGtleXNcbiAgLy8gKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeVxuICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpc1xuICAvLyBhY2NvdW50cyBmb3IgYm90aCBuYW1lZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy5cbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICE9PSBpc0J1ZmZlcihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgbWVtb3MgPSBtZW1vcyB8fCB7YWN0dWFsOiBbXSwgZXhwZWN0ZWQ6IFtdfTtcblxuICAgIHZhciBhY3R1YWxJbmRleCA9IG1lbW9zLmFjdHVhbC5pbmRleE9mKGFjdHVhbCk7XG4gICAgaWYgKGFjdHVhbEluZGV4ICE9PSAtMSkge1xuICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBtZW1vcy5leHBlY3RlZC5pbmRleE9mKGV4cGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vcy5hY3R1YWwucHVzaChhY3R1YWwpO1xuICAgIG1lbW9zLmV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpO1xuXG4gICAgcmV0dXJuIG9iakVxdWl2KGFjdHVhbCwgZXhwZWN0ZWQsIHN0cmljdCwgbWVtb3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIHN0cmljdCwgYWN0dWFsVmlzaXRlZE9iamVjdHMpIHtcbiAgaWYgKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy8gaWYgb25lIGlzIGEgcHJpbWl0aXZlLCB0aGUgb3RoZXIgbXVzdCBiZSBzYW1lXG4gIGlmICh1dGlsLmlzUHJpbWl0aXZlKGEpIHx8IHV0aWwuaXNQcmltaXRpdmUoYikpXG4gICAgcmV0dXJuIGEgPT09IGI7XG4gIGlmIChzdHJpY3QgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYikpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB2YXIgYUlzQXJncyA9IGlzQXJndW1lbnRzKGEpO1xuICB2YXIgYklzQXJncyA9IGlzQXJndW1lbnRzKGIpO1xuICBpZiAoKGFJc0FyZ3MgJiYgIWJJc0FyZ3MpIHx8ICghYUlzQXJncyAmJiBiSXNBcmdzKSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChhSXNBcmdzKSB7XG4gICAgYSA9IHBTbGljZS5jYWxsKGEpO1xuICAgIGIgPSBwU2xpY2UuY2FsbChiKTtcbiAgICByZXR1cm4gX2RlZXBFcXVhbChhLCBiLCBzdHJpY3QpO1xuICB9XG4gIHZhciBrYSA9IG9iamVjdEtleXMoYSk7XG4gIHZhciBrYiA9IG9iamVjdEtleXMoYik7XG4gIHZhciBrZXksIGk7XG4gIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXNcbiAgLy8gaGFzT3duUHJvcGVydHkpXG4gIGlmIChrYS5sZW5ndGggIT09IGtiLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG4gIC8vdGhlIHNhbWUgc2V0IG9mIGtleXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksXG4gIGthLnNvcnQoKTtcbiAga2Iuc29ydCgpO1xuICAvL35+fmNoZWFwIGtleSB0ZXN0XG4gIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGthW2ldICE9PSBrYltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvL2VxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kXG4gIC8vfn5+cG9zc2libHkgZXhwZW5zaXZlIGRlZXAgdGVzdFxuICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGtleSA9IGthW2ldO1xuICAgIGlmICghX2RlZXBFcXVhbChhW2tleV0sIGJba2V5XSwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIDguIFRoZSBub24tZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGZvciBhbnkgZGVlcCBpbmVxdWFsaXR5LlxuLy8gYXNzZXJ0Lm5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3REZWVwRXF1YWwgPSBmdW5jdGlvbiBub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBmYWxzZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQubm90RGVlcEVxdWFsKTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbCA9IG5vdERlZXBTdHJpY3RFcXVhbDtcbmZ1bmN0aW9uIG5vdERlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcFN0cmljdEVxdWFsJywgbm90RGVlcFN0cmljdEVxdWFsKTtcbiAgfVxufVxuXG5cbi8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4vLyBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnPT09JywgYXNzZXJ0LnN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuLy8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0IGluZXF1YWxpdHksIGFzXG4vLyBkZXRlcm1pbmVkIGJ5ICE9PS4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3RTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICchPT0nLCBhc3NlcnQubm90U3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7XG4gIGlmICghYWN0dWFsIHx8ICFleHBlY3RlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXhwZWN0ZWQpID09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7XG4gICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJZ25vcmUuICBUaGUgaW5zdGFuY2VvZiBjaGVjayBkb2Vzbid0IHdvcmsgZm9yIGFycm93IGZ1bmN0aW9ucy5cbiAgfVxuXG4gIGlmIChFcnJvci5pc1Byb3RvdHlwZU9mKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiBfdHJ5QmxvY2soYmxvY2spIHtcbiAgdmFyIGVycm9yO1xuICB0cnkge1xuICAgIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBfdGhyb3dzKHNob3VsZFRocm93LCBibG9jaywgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGFjdHVhbDtcblxuICBpZiAodHlwZW9mIGJsb2NrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJibG9ja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gZXhwZWN0ZWQ7XG4gICAgZXhwZWN0ZWQgPSBudWxsO1xuICB9XG5cbiAgYWN0dWFsID0gX3RyeUJsb2NrKGJsb2NrKTtcblxuICBtZXNzYWdlID0gKGV4cGVjdGVkICYmIGV4cGVjdGVkLm5hbWUgPyAnICgnICsgZXhwZWN0ZWQubmFtZSArICcpLicgOiAnLicpICtcbiAgICAgICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7XG5cbiAgaWYgKHNob3VsZFRocm93ICYmICFhY3R1YWwpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTtcbiAgfVxuXG4gIHZhciB1c2VyUHJvdmlkZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnO1xuICB2YXIgaXNVbndhbnRlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiB1dGlsLmlzRXJyb3IoYWN0dWFsKTtcbiAgdmFyIGlzVW5leHBlY3RlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgIWV4cGVjdGVkO1xuXG4gIGlmICgoaXNVbndhbnRlZEV4Y2VwdGlvbiAmJlxuICAgICAgdXNlclByb3ZpZGVkTWVzc2FnZSAmJlxuICAgICAgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8XG4gICAgICBpc1VuZXhwZWN0ZWRFeGNlcHRpb24pIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdHb3QgdW53YW50ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpO1xuICB9XG5cbiAgaWYgKChzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgZXhwZWN0ZWQgJiZcbiAgICAgICFleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1YWwpKSB7XG4gICAgdGhyb3cgYWN0dWFsO1xuICB9XG59XG5cbi8vIDExLiBFeHBlY3RlZCB0byB0aHJvdyBhbiBlcnJvcjpcbi8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQudGhyb3dzID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7XG4gIF90aHJvd3ModHJ1ZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTtcbn07XG5cbi8vIEVYVEVOU0lPTiEgVGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLlxuYXNzZXJ0LmRvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkge1xuICBfdGhyb3dzKGZhbHNlLCBibG9jaywgZXJyb3IsIG1lc3NhZ2UpO1xufTtcblxuYXNzZXJ0LmlmRXJyb3IgPSBmdW5jdGlvbihlcnIpIHsgaWYgKGVycikgdGhyb3cgZXJyOyB9O1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiBrZXlzO1xufTtcbiIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlcihhcmcpIHtcbiAgcmV0dXJuIGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0J1xuICAgICYmIHR5cGVvZiBhcmcuY29weSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcuZmlsbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcucmVhZFVJbnQ4ID09PSAnZnVuY3Rpb24nO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZm9ybWF0UmVnRXhwID0gLyVbc2RqJV0vZztcbmV4cG9ydHMuZm9ybWF0ID0gZnVuY3Rpb24oZikge1xuICBpZiAoIWlzU3RyaW5nKGYpKSB7XG4gICAgdmFyIG9iamVjdHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgb2JqZWN0cy5wdXNoKGluc3BlY3QoYXJndW1lbnRzW2ldKSk7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHZhciBpID0gMTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIHN0ciA9IFN0cmluZyhmKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24oeCkge1xuICAgIGlmICh4ID09PSAnJSUnKSByZXR1cm4gJyUnO1xuICAgIGlmIChpID49IGxlbikgcmV0dXJuIHg7XG4gICAgc3dpdGNoICh4KSB7XG4gICAgICBjYXNlICclcyc6IHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWonOlxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICB9KTtcbiAgZm9yICh2YXIgeCA9IGFyZ3NbaV07IGkgPCBsZW47IHggPSBhcmdzWysraV0pIHtcbiAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVjdCh4KSkge1xuICAgICAgc3RyICs9ICcgJyArIHg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciArPSAnICcgKyBpbnNwZWN0KHgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufTtcblxuXG4vLyBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLlxuLy8gUmV0dXJucyBhIG1vZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC5cbi8vIElmIC0tbm8tZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG5leHBvcnRzLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKGZuLCBtc2cpIHtcbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKGlzVW5kZWZpbmVkKGdsb2JhbC5wcm9jZXNzKSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZnVuY3Rpb24gaXNBcnJheShhcikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcik7XG59XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7XG59XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcblxuZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGwgPSBpc051bGw7XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5leHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiBpc09iamVjdChyZSkgJiYgb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gaXNPYmplY3QoZSkgJiZcbiAgICAgIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IHJlcXVpcmUoJy4vc3VwcG9ydC9pc0J1ZmZlcicpO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG5cblxuZnVuY3Rpb24gcGFkKG4pIHtcbiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJpbmcoMTApIDogbi50b1N0cmluZygxMCk7XG59XG5cblxudmFyIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLFxuICAgICAgICAgICAgICAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuLy8gMjYgRmViIDE2OjE5OjM0XG5mdW5jdGlvbiB0aW1lc3RhbXAoKSB7XG4gIHZhciBkID0gbmV3IERhdGUoKTtcbiAgdmFyIHRpbWUgPSBbcGFkKGQuZ2V0SG91cnMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldE1pbnV0ZXMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTtcbiAgcmV0dXJuIFtkLmdldERhdGUoKSwgbW9udGhzW2QuZ2V0TW9udGgoKV0sIHRpbWVdLmpvaW4oJyAnKTtcbn1cblxuXG4vLyBsb2cgaXMganVzdCBhIHRoaW4gd3JhcHBlciB0byBjb25zb2xlLmxvZyB0aGF0IHByZXBlbmRzIGEgdGltZXN0YW1wXG5leHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkge1xuICBjb25zb2xlLmxvZygnJXMgLSAlcycsIHRpbWVzdGFtcCgpLCBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpKTtcbn07XG5cblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuXG4gKlxuICogVGhlIEZ1bmN0aW9uLnByb3RvdHlwZS5pbmhlcml0cyBmcm9tIGxhbmcuanMgcmV3cml0dGVuIGFzIGEgc3RhbmRhbG9uZVxuICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkXG4gKiBkdXJpbmcgYm9vdHN0cmFwcGluZyB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJld3JpdHRlbiB1c2luZyBzb21lIG5hdGl2ZVxuICogZnVuY3Rpb25zIGFzIHByb3RvdHlwZSBzZXR1cCB1c2luZyBub3JtYWwgSmF2YVNjcmlwdCBkb2VzIG5vdCB3b3JrIGFzXG4gKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBpbiByMTE0OTAzKS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHdoaWNoIG5lZWRzIHRvIGluaGVyaXQgdGhlXG4gKiAgICAgcHJvdG90eXBlLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHRvIGluaGVyaXQgcHJvdG90eXBlIGZyb20uXG4gKi9cbmV4cG9ydHMuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5leHBvcnRzLl9leHRlbmQgPSBmdW5jdGlvbihvcmlnaW4sIGFkZCkge1xuICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBhZGQgaXNuJ3QgYW4gb2JqZWN0XG4gIGlmICghYWRkIHx8ICFpc09iamVjdChhZGQpKSByZXR1cm4gb3JpZ2luO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWRkKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIG9yaWdpbltrZXlzW2ldXSA9IGFkZFtrZXlzW2ldXTtcbiAgfVxuICByZXR1cm4gb3JpZ2luO1xufTtcblxuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsoXG4gICAgICB1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpXG4gICAgKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbVpwYkdVaU9pSmxiWEIwZVM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbVpwYkdVaU9pSmZaVzF3ZEhrdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXMTE5IiwiLyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjEgYnkgQG1hdGhpYXMgKi9cbjsoZnVuY3Rpb24ocm9vdCkge1xuXG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZXMgKi9cblx0dmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJlxuXHRcdCFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cdHZhciBmcmVlTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiZcblx0XHQhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblx0dmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbDtcblx0aWYgKFxuXHRcdGZyZWVHbG9iYWwuZ2xvYmFsID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC53aW5kb3cgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLnNlbGYgPT09IGZyZWVHbG9iYWxcblx0KSB7XG5cdFx0cm9vdCA9IGZyZWVHbG9iYWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwdW55Y29kZWAgb2JqZWN0LlxuXHQgKiBAbmFtZSBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdHZhciBwdW55Y29kZSxcblxuXHQvKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5cdG1heEludCA9IDIxNDc0ODM2NDcsIC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuXHQvKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG5cdGJhc2UgPSAzNixcblx0dE1pbiA9IDEsXG5cdHRNYXggPSAyNixcblx0c2tldyA9IDM4LFxuXHRkYW1wID0gNzAwLFxuXHRpbml0aWFsQmlhcyA9IDcyLFxuXHRpbml0aWFsTiA9IDEyOCwgLy8gMHg4MFxuXHRkZWxpbWl0ZXIgPSAnLScsIC8vICdcXHgyRCdcblxuXHQvKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xuXHRyZWdleFB1bnljb2RlID0gL154bi0tLyxcblx0cmVnZXhOb25BU0NJSSA9IC9bXlxceDIwLVxceDdFXS8sIC8vIHVucHJpbnRhYmxlIEFTQ0lJIGNoYXJzICsgbm9uLUFTQ0lJIGNoYXJzXG5cdHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2csIC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuXHQvKiogRXJyb3IgbWVzc2FnZXMgKi9cblx0ZXJyb3JzID0ge1xuXHRcdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdFx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0XHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xuXHR9LFxuXG5cdC8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cblx0YmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluLFxuXHRmbG9vciA9IE1hdGguZmxvb3IsXG5cdHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsXG5cblx0LyoqIFRlbXBvcmFyeSB2YXJpYWJsZSAqL1xuXHRrZXk7XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cblx0ICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXJyb3IodHlwZSkge1xuXHRcdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG5cdH1cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuXHQgKiBpdGVtLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0XHR2YXIgcmVzdWx0ID0gW107XG5cdFx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuXHQgKiBhZGRyZXNzZXMuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuXHQgKiBjaGFyYWN0ZXIuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG5cdCAqIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0XHR2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0XHR2YXIgcmVzdWx0ID0gJyc7XG5cdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRcdHN0cmluZyA9IHBhcnRzWzFdO1xuXHRcdH1cblx0XHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdFx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0XHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdFx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRcdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcblx0ICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuXHQgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuXHQgKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcblx0ICogbWF0Y2hpbmcgVVRGLTE2LlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGRlY29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgY291bnRlciA9IDAsXG5cdFx0ICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG5cdFx0ICAgIHZhbHVlLFxuXHRcdCAgICBleHRyYTtcblx0XHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0dmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0XHQvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcblx0XHRcdFx0ZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcblx0XHRcdFx0XHQvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcblx0XHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZW5jb2RlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcblx0XHRyZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuXHRcdFx0dmFyIG91dHB1dCA9ICcnO1xuXHRcdFx0aWYgKHZhbHVlID4gMHhGRkZGKSB7XG5cdFx0XHRcdHZhbHVlIC09IDB4MTAwMDA7XG5cdFx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApO1xuXHRcdFx0XHR2YWx1ZSA9IDB4REMwMCB8IHZhbHVlICYgMHgzRkY7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlKTtcblx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuXHQgKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuXHQgKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcblx0XHRpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDIyO1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDY1O1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDk3O1xuXHRcdH1cblx0XHRyZXR1cm4gYmFzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuXHQgKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcblx0ICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcblx0ICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cblx0ICovXG5cdGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHRcdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdFx0Ly8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG5cdFx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuXHQgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdFx0dmFyIGsgPSAwO1xuXHRcdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdFx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRcdGZvciAoLyogbm8gaW5pdGlhbGl6YXRpb24gKi87IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdFx0fVxuXHRcdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG5cdCAqIHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHRcdC8vIERvbid0IHVzZSBVQ1MtMlxuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG5cdFx0ICAgIG91dCxcblx0XHQgICAgaSA9IDAsXG5cdFx0ICAgIG4gPSBpbml0aWFsTixcblx0XHQgICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuXHRcdCAgICBiYXNpYyxcblx0XHQgICAgaixcblx0XHQgICAgaW5kZXgsXG5cdFx0ICAgIG9sZGksXG5cdFx0ICAgIHcsXG5cdFx0ICAgIGssXG5cdFx0ICAgIGRpZ2l0LFxuXHRcdCAgICB0LFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgYmFzZU1pbnVzVDtcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHRcdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdFx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0XHRiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdFx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdFx0YmFzaWMgPSAwO1xuXHRcdH1cblxuXHRcdGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdFx0ZXJyb3IoJ25vdC1iYXNpYycpO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHRcdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0XHRmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0XHRmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdFx0fVxuXG5cdFx0XHRvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0XHRpICU9IG91dDtcblxuXHRcdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuXHRcdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuXHQgKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0XHR2YXIgbixcblx0XHQgICAgZGVsdGEsXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50LFxuXHRcdCAgICBiYXNpY0xlbmd0aCxcblx0XHQgICAgYmlhcyxcblx0XHQgICAgaixcblx0XHQgICAgbSxcblx0XHQgICAgcSxcblx0XHQgICAgayxcblx0XHQgICAgdCxcblx0XHQgICAgY3VycmVudFZhbHVlLFxuXHRcdCAgICBvdXRwdXQgPSBbXSxcblx0XHQgICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cblx0XHQgICAgaW5wdXRMZW5ndGgsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG5cdFx0ICAgIGJhc2VNaW51c1QsXG5cdFx0ICAgIHFNaW51c1Q7XG5cblx0XHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG5cdFx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHRcdC8vIENhY2hlIHRoZSBsZW5ndGhcblx0XHRpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHRcdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG5cdFx0biA9IGluaXRpYWxOO1xuXHRcdGRlbHRhID0gMDtcblx0XHRiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG5cdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG5cdFx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdFx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdFx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG5cdFx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0XHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdFx0Zm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuXHRcdFx0aGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0XHRuID0gbTtcblxuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcblx0XHRcdFx0XHRmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQrK2RlbHRhO1xuXHRcdFx0KytuO1xuXG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuXHQgKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG5cdCAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuXHQgKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogY29udmVydCB0byBVbmljb2RlLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcblx0ICogc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcblx0ICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG5cdCAqIEFTQ0lJLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcblx0ICogVW5pY29kZSBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3Jcblx0ICogZW1haWwgYWRkcmVzcy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuXHRwdW55Y29kZSA9IHtcblx0XHQvKipcblx0XHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgU3RyaW5nXG5cdFx0ICovXG5cdFx0J3ZlcnNpb24nOiAnMS40LjEnLFxuXHRcdC8qKlxuXHRcdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdFx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0XHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBPYmplY3Rcblx0XHQgKi9cblx0XHQndWNzMic6IHtcblx0XHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0XHR9LFxuXHRcdCdkZWNvZGUnOiBkZWNvZGUsXG5cdFx0J2VuY29kZSc6IGVuY29kZSxcblx0XHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdFx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxuXHR9O1xuXG5cdC8qKiBFeHBvc2UgYHB1bnljb2RlYCAqL1xuXHQvLyBTb21lIEFNRCBidWlsZCBvcHRpbWl6ZXJzLCBsaWtlIHIuanMsIGNoZWNrIGZvciBzcGVjaWZpYyBjb25kaXRpb24gcGF0dGVybnNcblx0Ly8gbGlrZSB0aGUgZm9sbG93aW5nOlxuXHRpZiAoXG5cdFx0dHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0dHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiZcblx0XHRkZWZpbmUuYW1kXG5cdCkge1xuXHRcdGRlZmluZSgncHVueWNvZGUnLCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBwdW55Y29kZTtcblx0XHR9KTtcblx0fSBlbHNlIGlmIChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlKSB7XG5cdFx0aWYgKG1vZHVsZS5leHBvcnRzID09IGZyZWVFeHBvcnRzKSB7XG5cdFx0XHQvLyBpbiBOb2RlLmpzLCBpby5qcywgb3IgUmluZ29KUyB2MC44LjArXG5cdFx0XHRmcmVlTW9kdWxlLmV4cG9ydHMgPSBwdW55Y29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW4gTmFyd2hhbCBvciBSaW5nb0pTIHYwLjcuMC1cblx0XHRcdGZvciAoa2V5IGluIHB1bnljb2RlKSB7XG5cdFx0XHRcdHB1bnljb2RlLmhhc093blByb3BlcnR5KGtleSkgJiYgKGZyZWVFeHBvcnRzW2tleV0gPSBwdW55Y29kZVtrZXldKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaW4gUmhpbm8gb3IgYSB3ZWIgYnJvd3NlclxuXHRcdHJvb3QucHVueWNvZGUgPSBwdW55Y29kZTtcblx0fVxuXG59KHRoaXMpKTtcbiIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG52YXIgS19NQVhfTEVOR1RIID0gMHg3ZmZmZmZmZlxuZXhwb3J0cy5rTWF4TGVuZ3RoID0gS19NQVhfTEVOR1RIXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFByaW50IHdhcm5pbmcgYW5kIHJlY29tbWVuZCB1c2luZyBgYnVmZmVyYCB2NC54IHdoaWNoIGhhcyBhbiBPYmplY3RcbiAqICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIFdlIHJlcG9ydCB0aGF0IHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGlmIHRoZSBhcmUgbm90IHN1YmNsYXNzYWJsZVxuICogdXNpbmcgX19wcm90b19fLiBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YFxuICogKFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4KS4gSUUgMTAgbGFja3Mgc3VwcG9ydFxuICogZm9yIF9fcHJvdG9fXyBhbmQgaGFzIGEgYnVnZ3kgdHlwZWQgYXJyYXkgaW1wbGVtZW50YXRpb24uXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5pZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gIGNvbnNvbGUuZXJyb3IoXG4gICAgJ1RoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSAnICtcbiAgICAnYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC4nXG4gIClcbn1cblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICAvLyBDYW4gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWQ/XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHsgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9IH1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MlxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdwYXJlbnQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAnb2Zmc2V0Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ5dGVPZmZzZXRcbiAgfVxufSlcblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKGxlbmd0aCA+IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgbGVuZ3RoICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgYnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGJ1ZlxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKGFyZylcbiAgfVxuICByZXR1cm4gZnJvbShhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAhPSBudWxsICYmXG4gICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgdmFsdWU6IG51bGwsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICAgIClcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlKHZhbHVlLCBBcnJheUJ1ZmZlcikgfHxcbiAgICAgICh2YWx1ZSAmJiBpc0luc3RhbmNlKHZhbHVlLmJ1ZmZlciwgQXJyYXlCdWZmZXIpKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICApXG4gIH1cblxuICB2YXIgdmFsdWVPZiA9IHZhbHVlLnZhbHVlT2YgJiYgdmFsdWUudmFsdWVPZigpXG4gIGlmICh2YWx1ZU9mICE9IG51bGwgJiYgdmFsdWVPZiAhPT0gdmFsdWUpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVPZiwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgdmFyIGIgPSBmcm9tT2JqZWN0KHZhbHVlKVxuICBpZiAoYikgcmV0dXJuIGJcblxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvUHJpbWl0aXZlICE9IG51bGwgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFxuICAgICAgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJyksIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aFxuICAgIClcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5CdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG5CdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHZhciBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSBidWYud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIGJ1ZiA9IGJ1Zi5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICBidWZbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIHZhciBidWZcbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIGJ1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAob2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHZhciBidWYgPSBjcmVhdGVCdWZmZXIobGVuKVxuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWZcbiAgICB9XG5cbiAgICBvYmouY29weShidWYsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBpZiAob2JqLmxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBudW1iZXJJc05hTihvYmoubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmopXG4gIH1cblxuICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqLmRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IEtfTUFYX0xFTkdUSGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsgS19NQVhfTEVOR1RILnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyID09PSB0cnVlICYmXG4gICAgYiAhPT0gQnVmZmVyLnByb3RvdHlwZSAvLyBzbyBCdWZmZXIuaXNCdWZmZXIoQnVmZmVyLnByb3RvdHlwZSkgd2lsbCBiZSBmYWxzZVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGlzSW5zdGFuY2UoYSwgVWludDhBcnJheSkpIGEgPSBCdWZmZXIuZnJvbShhLCBhLm9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBpZiAoaXNJbnN0YW5jZShiLCBVaW50OEFycmF5KSkgYiA9IEJ1ZmZlci5mcm9tKGIsIGIub2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknXG4gICAgKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKGlzSW5zdGFuY2UoYnVmLCBVaW50OEFycmF5KSkge1xuICAgICAgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBpc0luc3RhbmNlKHN0cmluZywgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHN0cmluZ1xuICAgIClcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBtdXN0TWF0Y2ggPSAoYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdID09PSB0cnVlKVxuICBpZiAoIW11c3RNYXRjaCAmJiBsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHtcbiAgICAgICAgICByZXR1cm4gbXVzdE1hdGNoID8gLTEgOiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICB9XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIChhbmQgdGhlIGBpcy1idWZmZXJgIG5wbSBwYWNrYWdlKVxuLy8gdG8gZGV0ZWN0IGEgQnVmZmVyIGluc3RhbmNlLiBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGluc3RhbmNlb2YgQnVmZmVyYFxuLy8gcmVsaWFibHkgaW4gYSBicm93c2VyaWZ5IGNvbnRleHQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnRcbi8vIGNvcGllcyBvZiB0aGUgJ2J1ZmZlcicgcGFja2FnZSBpbiB1c2UuIFRoaXMgbWV0aG9kIHdvcmtzIGV2ZW4gZm9yIEJ1ZmZlclxuLy8gaW5zdGFuY2VzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gYW5vdGhlciBjb3B5IG9mIHRoZSBgYnVmZmVyYCBwYWNrYWdlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTU0XG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nID0gQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZ1xuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLnJlcGxhY2UoLyguezJ9KS9nLCAnJDEgJykudHJpbSgpXG4gIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKGlzSW5zdGFuY2UodGFyZ2V0LCBVaW50OEFycmF5KSkge1xuICAgIHRhcmdldCA9IEJ1ZmZlci5mcm9tKHRhcmdldCwgdGFyZ2V0Lm9mZnNldCwgdGFyZ2V0LmJ5dGVMZW5ndGgpXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB0YXJnZXQpXG4gICAgKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAobnVtYmVySXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmICh0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAobnVtYmVySXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPj4+IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyAoYnl0ZXNbaSArIDFdICogMjU2KSlcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyJylcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVc2UgYnVpbHQtaW4gd2hlbiBhdmFpbGFibGUsIG1pc3NpbmcgZnJvbSBJRTExXG4gICAgdGhpcy5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2UgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZCksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoKGVuY29kaW5nID09PSAndXRmOCcgJiYgY29kZSA8IDEyOCkgfHxcbiAgICAgICAgICBlbmNvZGluZyA9PT0gJ2xhdGluMScpIHtcbiAgICAgICAgLy8gRmFzdCBwYXRoOiBJZiBgdmFsYCBmaXRzIGludG8gYSBzaW5nbGUgYnl0ZSwgdXNlIHRoYXQgbnVtZXJpYyB2YWx1ZS5cbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGlmIChsZW4gPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyB2YWwgK1xuICAgICAgICAnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJylcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSB0YWtlcyBlcXVhbCBzaWducyBhcyBlbmQgb2YgdGhlIEJhc2U2NCBlbmNvZGluZ1xuICBzdHIgPSBzdHIuc3BsaXQoJz0nKVswXVxuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbi8vIEFycmF5QnVmZmVyIG9yIFVpbnQ4QXJyYXkgb2JqZWN0cyBmcm9tIG90aGVyIGNvbnRleHRzIChpLmUuIGlmcmFtZXMpIGRvIG5vdCBwYXNzXG4vLyB0aGUgYGluc3RhbmNlb2ZgIGNoZWNrIGJ1dCB0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGFzIG9mIHRoYXQgdHlwZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE2NlxuZnVuY3Rpb24gaXNJbnN0YW5jZSAob2JqLCB0eXBlKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiB0eXBlIHx8XG4gICAgKG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9IG51bGwgJiZcbiAgICAgIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSB0eXBlLm5hbWUpXG59XG5mdW5jdGlvbiBudW1iZXJJc05hTiAob2JqKSB7XG4gIC8vIEZvciBJRTExIHN1cHBvcnRcbiAgcmV0dXJuIG9iaiAhPT0gb2JqIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCIxMDBcIjogXCJDb250aW51ZVwiLFxuICBcIjEwMVwiOiBcIlN3aXRjaGluZyBQcm90b2NvbHNcIixcbiAgXCIxMDJcIjogXCJQcm9jZXNzaW5nXCIsXG4gIFwiMjAwXCI6IFwiT0tcIixcbiAgXCIyMDFcIjogXCJDcmVhdGVkXCIsXG4gIFwiMjAyXCI6IFwiQWNjZXB0ZWRcIixcbiAgXCIyMDNcIjogXCJOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvblwiLFxuICBcIjIwNFwiOiBcIk5vIENvbnRlbnRcIixcbiAgXCIyMDVcIjogXCJSZXNldCBDb250ZW50XCIsXG4gIFwiMjA2XCI6IFwiUGFydGlhbCBDb250ZW50XCIsXG4gIFwiMjA3XCI6IFwiTXVsdGktU3RhdHVzXCIsXG4gIFwiMjA4XCI6IFwiQWxyZWFkeSBSZXBvcnRlZFwiLFxuICBcIjIyNlwiOiBcIklNIFVzZWRcIixcbiAgXCIzMDBcIjogXCJNdWx0aXBsZSBDaG9pY2VzXCIsXG4gIFwiMzAxXCI6IFwiTW92ZWQgUGVybWFuZW50bHlcIixcbiAgXCIzMDJcIjogXCJGb3VuZFwiLFxuICBcIjMwM1wiOiBcIlNlZSBPdGhlclwiLFxuICBcIjMwNFwiOiBcIk5vdCBNb2RpZmllZFwiLFxuICBcIjMwNVwiOiBcIlVzZSBQcm94eVwiLFxuICBcIjMwN1wiOiBcIlRlbXBvcmFyeSBSZWRpcmVjdFwiLFxuICBcIjMwOFwiOiBcIlBlcm1hbmVudCBSZWRpcmVjdFwiLFxuICBcIjQwMFwiOiBcIkJhZCBSZXF1ZXN0XCIsXG4gIFwiNDAxXCI6IFwiVW5hdXRob3JpemVkXCIsXG4gIFwiNDAyXCI6IFwiUGF5bWVudCBSZXF1aXJlZFwiLFxuICBcIjQwM1wiOiBcIkZvcmJpZGRlblwiLFxuICBcIjQwNFwiOiBcIk5vdCBGb3VuZFwiLFxuICBcIjQwNVwiOiBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiLFxuICBcIjQwNlwiOiBcIk5vdCBBY2NlcHRhYmxlXCIsXG4gIFwiNDA3XCI6IFwiUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWRcIixcbiAgXCI0MDhcIjogXCJSZXF1ZXN0IFRpbWVvdXRcIixcbiAgXCI0MDlcIjogXCJDb25mbGljdFwiLFxuICBcIjQxMFwiOiBcIkdvbmVcIixcbiAgXCI0MTFcIjogXCJMZW5ndGggUmVxdWlyZWRcIixcbiAgXCI0MTJcIjogXCJQcmVjb25kaXRpb24gRmFpbGVkXCIsXG4gIFwiNDEzXCI6IFwiUGF5bG9hZCBUb28gTGFyZ2VcIixcbiAgXCI0MTRcIjogXCJVUkkgVG9vIExvbmdcIixcbiAgXCI0MTVcIjogXCJVbnN1cHBvcnRlZCBNZWRpYSBUeXBlXCIsXG4gIFwiNDE2XCI6IFwiUmFuZ2UgTm90IFNhdGlzZmlhYmxlXCIsXG4gIFwiNDE3XCI6IFwiRXhwZWN0YXRpb24gRmFpbGVkXCIsXG4gIFwiNDE4XCI6IFwiSSdtIGEgdGVhcG90XCIsXG4gIFwiNDIxXCI6IFwiTWlzZGlyZWN0ZWQgUmVxdWVzdFwiLFxuICBcIjQyMlwiOiBcIlVucHJvY2Vzc2FibGUgRW50aXR5XCIsXG4gIFwiNDIzXCI6IFwiTG9ja2VkXCIsXG4gIFwiNDI0XCI6IFwiRmFpbGVkIERlcGVuZGVuY3lcIixcbiAgXCI0MjVcIjogXCJVbm9yZGVyZWQgQ29sbGVjdGlvblwiLFxuICBcIjQyNlwiOiBcIlVwZ3JhZGUgUmVxdWlyZWRcIixcbiAgXCI0MjhcIjogXCJQcmVjb25kaXRpb24gUmVxdWlyZWRcIixcbiAgXCI0MjlcIjogXCJUb28gTWFueSBSZXF1ZXN0c1wiLFxuICBcIjQzMVwiOiBcIlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2VcIixcbiAgXCI0NTFcIjogXCJVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29uc1wiLFxuICBcIjUwMFwiOiBcIkludGVybmFsIFNlcnZlciBFcnJvclwiLFxuICBcIjUwMVwiOiBcIk5vdCBJbXBsZW1lbnRlZFwiLFxuICBcIjUwMlwiOiBcIkJhZCBHYXRld2F5XCIsXG4gIFwiNTAzXCI6IFwiU2VydmljZSBVbmF2YWlsYWJsZVwiLFxuICBcIjUwNFwiOiBcIkdhdGV3YXkgVGltZW91dFwiLFxuICBcIjUwNVwiOiBcIkhUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkXCIsXG4gIFwiNTA2XCI6IFwiVmFyaWFudCBBbHNvIE5lZ290aWF0ZXNcIixcbiAgXCI1MDdcIjogXCJJbnN1ZmZpY2llbnQgU3RvcmFnZVwiLFxuICBcIjUwOFwiOiBcIkxvb3AgRGV0ZWN0ZWRcIixcbiAgXCI1MDlcIjogXCJCYW5kd2lkdGggTGltaXQgRXhjZWVkZWRcIixcbiAgXCI1MTBcIjogXCJOb3QgRXh0ZW5kZWRcIixcbiAgXCI1MTFcIjogXCJOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkXCJcbn1cbiIsIlwidXNlIHN0cmljdFwiXG5cbnZhciBuZXh0ID0gKGdsb2JhbC5wcm9jZXNzICYmIHByb2Nlc3MubmV4dFRpY2spIHx8IGdsb2JhbC5zZXRJbW1lZGlhdGUgfHwgZnVuY3Rpb24gKGYpIHtcbiAgc2V0VGltZW91dChmLCAwKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1heWJlIChjYiwgcHJvbWlzZSkge1xuICBpZiAoY2IpIHtcbiAgICBwcm9taXNlXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIG5leHQoZnVuY3Rpb24gKCkgeyBjYihudWxsLCByZXN1bHQpIH0pXG4gICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIG5leHQoZnVuY3Rpb24gKCkgeyBjYihlcnIpIH0pXG4gICAgICB9KVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG59XG4iLCJcclxuLyoqXHJcbiAqIEV4cG9zZSBgRW1pdHRlcmAuXHJcbiAqL1xyXG5cclxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgbW9kdWxlLmV4cG9ydHMgPSBFbWl0dGVyO1xyXG59XHJcblxyXG4vKipcclxuICogSW5pdGlhbGl6ZSBhIG5ldyBgRW1pdHRlcmAuXHJcbiAqXHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gRW1pdHRlcihvYmopIHtcclxuICBpZiAob2JqKSByZXR1cm4gbWl4aW4ob2JqKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNaXhpbiB0aGUgZW1pdHRlciBwcm9wZXJ0aWVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXHJcbiAqIEByZXR1cm4ge09iamVjdH1cclxuICogQGFwaSBwcml2YXRlXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gbWl4aW4ob2JqKSB7XHJcbiAgZm9yICh2YXIga2V5IGluIEVtaXR0ZXIucHJvdG90eXBlKSB7XHJcbiAgICBvYmpba2V5XSA9IEVtaXR0ZXIucHJvdG90eXBlW2tleV07XHJcbiAgfVxyXG4gIHJldHVybiBvYmo7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMaXN0ZW4gb24gdGhlIGdpdmVuIGBldmVudGAgd2l0aCBgZm5gLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cclxuICogQHJldHVybiB7RW1pdHRlcn1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5vbiA9XHJcbkVtaXR0ZXIucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZm4pe1xyXG4gIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcclxuICAodGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XSA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF0gfHwgW10pXHJcbiAgICAucHVzaChmbik7XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogQWRkcyBhbiBgZXZlbnRgIGxpc3RlbmVyIHRoYXQgd2lsbCBiZSBpbnZva2VkIGEgc2luZ2xlXHJcbiAqIHRpbWUgdGhlbiBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxyXG4gKiBAcmV0dXJuIHtFbWl0dGVyfVxyXG4gKiBAYXBpIHB1YmxpY1xyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbihldmVudCwgZm4pe1xyXG4gIGZ1bmN0aW9uIG9uKCkge1xyXG4gICAgdGhpcy5vZmYoZXZlbnQsIG9uKTtcclxuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgfVxyXG5cclxuICBvbi5mbiA9IGZuO1xyXG4gIHRoaXMub24oZXZlbnQsIG9uKTtcclxuICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGdpdmVuIGNhbGxiYWNrIGZvciBgZXZlbnRgIG9yIGFsbFxyXG4gKiByZWdpc3RlcmVkIGNhbGxiYWNrcy5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXHJcbiAqIEByZXR1cm4ge0VtaXR0ZXJ9XHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuRW1pdHRlci5wcm90b3R5cGUub2ZmID1cclxuRW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxyXG5FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxyXG5FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGZuKXtcclxuICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307XHJcblxyXG4gIC8vIGFsbFxyXG4gIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvLyBzcGVjaWZpYyBldmVudFxyXG4gIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG4gIGlmICghY2FsbGJhY2tzKSByZXR1cm4gdGhpcztcclxuXHJcbiAgLy8gcmVtb3ZlIGFsbCBoYW5kbGVyc1xyXG4gIGlmICgxID09IGFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvLyByZW1vdmUgc3BlY2lmaWMgaGFuZGxlclxyXG4gIHZhciBjYjtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgY2IgPSBjYWxsYmFja3NbaV07XHJcbiAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xyXG4gICAgICBjYWxsYmFja3Muc3BsaWNlKGksIDEpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogRW1pdCBgZXZlbnRgIHdpdGggdGhlIGdpdmVuIGFyZ3MuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcGFyYW0ge01peGVkfSAuLi5cclxuICogQHJldHVybiB7RW1pdHRlcn1cclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24oZXZlbnQpe1xyXG4gIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcclxuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKVxyXG4gICAgLCBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG5cclxuICBpZiAoY2FsbGJhY2tzKSB7XHJcbiAgICBjYWxsYmFja3MgPSBjYWxsYmFja3Muc2xpY2UoMCk7XHJcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gY2FsbGJhY2tzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XHJcbiAgICAgIGNhbGxiYWNrc1tpXS5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybiBhcnJheSBvZiBjYWxsYmFja3MgZm9yIGBldmVudGAuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcmV0dXJuIHtBcnJheX1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudCl7XHJcbiAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xyXG4gIHJldHVybiB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdIHx8IFtdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIHRoaXMgZW1pdHRlciBoYXMgYGV2ZW50YCBoYW5kbGVycy5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEByZXR1cm4ge0Jvb2xlYW59XHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuRW1pdHRlci5wcm90b3R5cGUuaGFzTGlzdGVuZXJzID0gZnVuY3Rpb24oZXZlbnQpe1xyXG4gIHJldHVybiAhISB0aGlzLmxpc3RlbmVycyhldmVudCkubGVuZ3RoO1xyXG59O1xyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCIvKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9ICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWVcbiAgICAgICAgICAgICAgICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWUuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgPyBjaHJvbWUuc3RvcmFnZS5sb2NhbFxuICAgICAgICAgICAgICAgICAgOiBsb2NhbHN0b3JhZ2UoKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbXG4gICcjMDAwMENDJywgJyMwMDAwRkYnLCAnIzAwMzNDQycsICcjMDAzM0ZGJywgJyMwMDY2Q0MnLCAnIzAwNjZGRicsICcjMDA5OUNDJyxcbiAgJyMwMDk5RkYnLCAnIzAwQ0MwMCcsICcjMDBDQzMzJywgJyMwMENDNjYnLCAnIzAwQ0M5OScsICcjMDBDQ0NDJywgJyMwMENDRkYnLFxuICAnIzMzMDBDQycsICcjMzMwMEZGJywgJyMzMzMzQ0MnLCAnIzMzMzNGRicsICcjMzM2NkNDJywgJyMzMzY2RkYnLCAnIzMzOTlDQycsXG4gICcjMzM5OUZGJywgJyMzM0NDMDAnLCAnIzMzQ0MzMycsICcjMzNDQzY2JywgJyMzM0NDOTknLCAnIzMzQ0NDQycsICcjMzNDQ0ZGJyxcbiAgJyM2NjAwQ0MnLCAnIzY2MDBGRicsICcjNjYzM0NDJywgJyM2NjMzRkYnLCAnIzY2Q0MwMCcsICcjNjZDQzMzJywgJyM5OTAwQ0MnLFxuICAnIzk5MDBGRicsICcjOTkzM0NDJywgJyM5OTMzRkYnLCAnIzk5Q0MwMCcsICcjOTlDQzMzJywgJyNDQzAwMDAnLCAnI0NDMDAzMycsXG4gICcjQ0MwMDY2JywgJyNDQzAwOTknLCAnI0NDMDBDQycsICcjQ0MwMEZGJywgJyNDQzMzMDAnLCAnI0NDMzMzMycsICcjQ0MzMzY2JyxcbiAgJyNDQzMzOTknLCAnI0NDMzNDQycsICcjQ0MzM0ZGJywgJyNDQzY2MDAnLCAnI0NDNjYzMycsICcjQ0M5OTAwJywgJyNDQzk5MzMnLFxuICAnI0NDQ0MwMCcsICcjQ0NDQzMzJywgJyNGRjAwMDAnLCAnI0ZGMDAzMycsICcjRkYwMDY2JywgJyNGRjAwOTknLCAnI0ZGMDBDQycsXG4gICcjRkYwMEZGJywgJyNGRjMzMDAnLCAnI0ZGMzMzMycsICcjRkYzMzY2JywgJyNGRjMzOTknLCAnI0ZGMzNDQycsICcjRkYzM0ZGJyxcbiAgJyNGRjY2MDAnLCAnI0ZGNjYzMycsICcjRkY5OTAwJywgJyNGRjk5MzMnLCAnI0ZGQ0MwMCcsICcjRkZDQzMzJ1xuXTtcblxuLyoqXG4gKiBDdXJyZW50bHkgb25seSBXZWJLaXQtYmFzZWQgV2ViIEluc3BlY3RvcnMsIEZpcmVmb3ggPj0gdjMxLFxuICogYW5kIHRoZSBGaXJlYnVnIGV4dGVuc2lvbiAoYW55IEZpcmVmb3ggdmVyc2lvbikgYXJlIGtub3duXG4gKiB0byBzdXBwb3J0IFwiJWNcIiBDU1MgY3VzdG9taXphdGlvbnMuXG4gKlxuICogVE9ETzogYWRkIGEgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgdG8gZXhwbGljaXRseSBlbmFibGUvZGlzYWJsZSBjb2xvcnNcbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG4gIC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcbiAgLy8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2VcbiAgLy8gZXhwbGljaXRseVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBpcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuICAvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuICByZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcbiAgICAvLyBpcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG4gICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcbiAgICAvLyBpcyBmaXJlZm94ID49IHYzMT9cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcbiAgICAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcbiAgICAvLyBkb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbih2KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyLm1lc3NhZ2U7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcbiAgdmFyIHVzZUNvbG9ycyA9IHRoaXMudXNlQ29sb3JzO1xuXG4gIGFyZ3NbMF0gPSAodXNlQ29sb3JzID8gJyVjJyA6ICcnKVxuICAgICsgdGhpcy5uYW1lc3BhY2VcbiAgICArICh1c2VDb2xvcnMgPyAnICVjJyA6ICcgJylcbiAgICArIGFyZ3NbMF1cbiAgICArICh1c2VDb2xvcnMgPyAnJWMgJyA6ICcgJylcbiAgICArICcrJyArIGV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuICBpZiAoIXVzZUNvbG9ycykgcmV0dXJuO1xuXG4gIHZhciBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcbiAgYXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0JylcblxuICAvLyB0aGUgZmluYWwgXCIlY1wiIGlzIHNvbWV3aGF0IHRyaWNreSwgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlclxuICAvLyBhcmd1bWVudHMgcGFzc2VkIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlICVjLCBzbyB3ZSBuZWVkIHRvXG4gIC8vIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgaW5kZXggdG8gaW5zZXJ0IHRoZSBDU1MgaW50b1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEMgPSAwO1xuICBhcmdzWzBdLnJlcGxhY2UoLyVbYS16QS1aJV0vZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICBpZiAoJyUlJyA9PT0gbWF0Y2gpIHJldHVybjtcbiAgICBpbmRleCsrO1xuICAgIGlmICgnJWMnID09PSBtYXRjaCkge1xuICAgICAgLy8gd2Ugb25seSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgKmxhc3QqICVjXG4gICAgICAvLyAodGhlIHVzZXIgbWF5IGhhdmUgcHJvdmlkZWQgdGhlaXIgb3duKVxuICAgICAgbGFzdEMgPSBpbmRleDtcbiAgICB9XG4gIH0pO1xuXG4gIGFyZ3Muc3BsaWNlKGxhc3RDLCAwLCBjKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGBjb25zb2xlLmxvZygpYCB3aGVuIGF2YWlsYWJsZS5cbiAqIE5vLW9wIHdoZW4gYGNvbnNvbGUubG9nYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBsb2coKSB7XG4gIC8vIHRoaXMgaGFja2VyeSBpcyByZXF1aXJlZCBmb3IgSUU4LzksIHdoZXJlXG4gIC8vIHRoZSBgY29uc29sZS5sb2dgIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSAnYXBwbHknXG4gIHJldHVybiAnb2JqZWN0JyA9PT0gdHlwZW9mIGNvbnNvbGVcbiAgICAmJiBjb25zb2xlLmxvZ1xuICAgICYmIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGUubG9nLCBjb25zb2xlLCBhcmd1bWVudHMpO1xufVxuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzYXZlKG5hbWVzcGFjZXMpIHtcbiAgdHJ5IHtcbiAgICBpZiAobnVsbCA9PSBuYW1lc3BhY2VzKSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5zdG9yYWdlLmRlYnVnID0gbmFtZXNwYWNlcztcbiAgICB9XG4gIH0gY2F0Y2goZSkge31cbn1cblxuLyoqXG4gKiBMb2FkIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybnMgdGhlIHByZXZpb3VzbHkgcGVyc2lzdGVkIGRlYnVnIG1vZGVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkKCkge1xuICB2YXIgcjtcbiAgdHJ5IHtcbiAgICByID0gZXhwb3J0cy5zdG9yYWdlLmRlYnVnO1xuICB9IGNhdGNoKGUpIHt9XG5cbiAgLy8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuICBpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcbiAgICByID0gcHJvY2Vzcy5lbnYuREVCVUc7XG4gIH1cblxuICByZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBFbmFibGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gYGxvY2FsU3RvcmFnZS5kZWJ1Z2AgaW5pdGlhbGx5LlxuICovXG5cbmV4cG9ydHMuZW5hYmxlKGxvYWQoKSk7XG5cbi8qKlxuICogTG9jYWxzdG9yYWdlIGF0dGVtcHRzIHRvIHJldHVybiB0aGUgbG9jYWxzdG9yYWdlLlxuICpcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc2FmYXJpIHRocm93c1xuICogd2hlbiBhIHVzZXIgZGlzYWJsZXMgY29va2llcy9sb2NhbHN0b3JhZ2VcbiAqIGFuZCB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgaXQuXG4gKlxuICogQHJldHVybiB7TG9jYWxTdG9yYWdlfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9jYWxzdG9yYWdlKCkge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xuICB9IGNhdGNoIChlKSB7fVxufVxuIiwiXG4vKipcbiAqIFRoaXMgaXMgdGhlIGNvbW1vbiBsb2dpYyBmb3IgYm90aCB0aGUgTm9kZS5qcyBhbmQgd2ViIGJyb3dzZXJcbiAqIGltcGxlbWVudGF0aW9ucyBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZURlYnVnLmRlYnVnID0gY3JlYXRlRGVidWdbJ2RlZmF1bHQnXSA9IGNyZWF0ZURlYnVnO1xuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5leHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5leHBvcnRzLmVuYWJsZWQgPSBlbmFibGVkO1xuZXhwb3J0cy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cbi8qKlxuICogQWN0aXZlIGBkZWJ1Z2AgaW5zdGFuY2VzLlxuICovXG5leHBvcnRzLmluc3RhbmNlcyA9IFtdO1xuXG4vKipcbiAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGRlYnVnIG1vZGUgbmFtZXMsIGFuZCBuYW1lcyB0byBza2lwLlxuICovXG5cbmV4cG9ydHMubmFtZXMgPSBbXTtcbmV4cG9ydHMuc2tpcHMgPSBbXTtcblxuLyoqXG4gKiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG4gKlxuICogVmFsaWQga2V5IG5hbWVzIGFyZSBhIHNpbmdsZSwgbG93ZXIgb3IgdXBwZXItY2FzZSBsZXR0ZXIsIGkuZS4gXCJuXCIgYW5kIFwiTlwiLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycyA9IHt9O1xuXG4vKipcbiAqIFNlbGVjdCBhIGNvbG9yLlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG4gIHZhciBoYXNoID0gMCwgaTtcblxuICBmb3IgKGkgaW4gbmFtZXNwYWNlKSB7XG4gICAgaGFzaCAgPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cblxuICByZXR1cm4gZXhwb3J0cy5jb2xvcnNbTWF0aC5hYnMoaGFzaCkgJSBleHBvcnRzLmNvbG9ycy5sZW5ndGhdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRlYnVnZ2VyIHdpdGggdGhlIGdpdmVuIGBuYW1lc3BhY2VgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblxuICB2YXIgcHJldlRpbWU7XG5cbiAgZnVuY3Rpb24gZGVidWcoKSB7XG4gICAgLy8gZGlzYWJsZWQ/XG4gICAgaWYgKCFkZWJ1Zy5lbmFibGVkKSByZXR1cm47XG5cbiAgICB2YXIgc2VsZiA9IGRlYnVnO1xuXG4gICAgLy8gc2V0IGBkaWZmYCB0aW1lc3RhbXBcbiAgICB2YXIgY3VyciA9ICtuZXcgRGF0ZSgpO1xuICAgIHZhciBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG4gICAgc2VsZi5kaWZmID0gbXM7XG4gICAgc2VsZi5wcmV2ID0gcHJldlRpbWU7XG4gICAgc2VsZi5jdXJyID0gY3VycjtcbiAgICBwcmV2VGltZSA9IGN1cnI7XG5cbiAgICAvLyB0dXJuIHRoZSBgYXJndW1lbnRzYCBpbnRvIGEgcHJvcGVyIEFycmF5XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIGFyZ3NbMF0gPSBleHBvcnRzLmNvZXJjZShhcmdzWzBdKTtcblxuICAgIGlmICgnc3RyaW5nJyAhPT0gdHlwZW9mIGFyZ3NbMF0pIHtcbiAgICAgIC8vIGFueXRoaW5nIGVsc2UgbGV0J3MgaW5zcGVjdCB3aXRoICVPXG4gICAgICBhcmdzLnVuc2hpZnQoJyVPJyk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgYW55IGBmb3JtYXR0ZXJzYCB0cmFuc2Zvcm1hdGlvbnNcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGFyZ3NbMF0gPSBhcmdzWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCBmdW5jdGlvbihtYXRjaCwgZm9ybWF0KSB7XG4gICAgICAvLyBpZiB3ZSBlbmNvdW50ZXIgYW4gZXNjYXBlZCAlIHRoZW4gZG9uJ3QgaW5jcmVhc2UgdGhlIGFycmF5IGluZGV4XG4gICAgICBpZiAobWF0Y2ggPT09ICclJScpIHJldHVybiBtYXRjaDtcbiAgICAgIGluZGV4Kys7XG4gICAgICB2YXIgZm9ybWF0dGVyID0gZXhwb3J0cy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG4gICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGZvcm1hdHRlcikge1xuICAgICAgICB2YXIgdmFsID0gYXJnc1tpbmRleF07XG4gICAgICAgIG1hdGNoID0gZm9ybWF0dGVyLmNhbGwoc2VsZiwgdmFsKTtcblxuICAgICAgICAvLyBub3cgd2UgbmVlZCB0byByZW1vdmUgYGFyZ3NbaW5kZXhdYCBzaW5jZSBpdCdzIGlubGluZWQgaW4gdGhlIGBmb3JtYXRgXG4gICAgICAgIGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcblxuICAgIC8vIGFwcGx5IGVudi1zcGVjaWZpYyBmb3JtYXR0aW5nIChjb2xvcnMsIGV0Yy4pXG4gICAgZXhwb3J0cy5mb3JtYXRBcmdzLmNhbGwoc2VsZiwgYXJncyk7XG5cbiAgICB2YXIgbG9nRm4gPSBkZWJ1Zy5sb2cgfHwgZXhwb3J0cy5sb2cgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKTtcbiAgICBsb2dGbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgZGVidWcuZW5hYmxlZCA9IGV4cG9ydHMuZW5hYmxlZChuYW1lc3BhY2UpO1xuICBkZWJ1Zy51c2VDb2xvcnMgPSBleHBvcnRzLnVzZUNvbG9ycygpO1xuICBkZWJ1Zy5jb2xvciA9IHNlbGVjdENvbG9yKG5hbWVzcGFjZSk7XG4gIGRlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXG4gIC8vIGVudi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgZGVidWcgaW5zdGFuY2VzXG4gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZXhwb3J0cy5pbml0KSB7XG4gICAgZXhwb3J0cy5pbml0KGRlYnVnKTtcbiAgfVxuXG4gIGV4cG9ydHMuaW5zdGFuY2VzLnB1c2goZGVidWcpO1xuXG4gIHJldHVybiBkZWJ1Zztcbn1cblxuZnVuY3Rpb24gZGVzdHJveSAoKSB7XG4gIHZhciBpbmRleCA9IGV4cG9ydHMuaW5zdGFuY2VzLmluZGV4T2YodGhpcyk7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBleHBvcnRzLmluc3RhbmNlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEVuYWJsZXMgYSBkZWJ1ZyBtb2RlIGJ5IG5hbWVzcGFjZXMuIFRoaXMgY2FuIGluY2x1ZGUgbW9kZXNcbiAqIHNlcGFyYXRlZCBieSBhIGNvbG9uIGFuZCB3aWxkY2FyZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZW5hYmxlKG5hbWVzcGFjZXMpIHtcbiAgZXhwb3J0cy5zYXZlKG5hbWVzcGFjZXMpO1xuXG4gIGV4cG9ydHMubmFtZXMgPSBbXTtcbiAgZXhwb3J0cy5za2lwcyA9IFtdO1xuXG4gIHZhciBpO1xuICB2YXIgc3BsaXQgPSAodHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcyA6ICcnKS5zcGxpdCgvW1xccyxdKy8pO1xuICB2YXIgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmICghc3BsaXRbaV0pIGNvbnRpbnVlOyAvLyBpZ25vcmUgZW1wdHkgc3RyaW5nc1xuICAgIG5hbWVzcGFjZXMgPSBzcGxpdFtpXS5yZXBsYWNlKC9cXCovZywgJy4qPycpO1xuICAgIGlmIChuYW1lc3BhY2VzWzBdID09PSAnLScpIHtcbiAgICAgIGV4cG9ydHMuc2tpcHMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMuc3Vic3RyKDEpICsgJyQnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cG9ydHMubmFtZXMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMgKyAnJCcpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhwb3J0cy5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBleHBvcnRzLmluc3RhbmNlc1tpXTtcbiAgICBpbnN0YW5jZS5lbmFibGVkID0gZXhwb3J0cy5lbmFibGVkKGluc3RhbmNlLm5hbWVzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gIGV4cG9ydHMuZW5hYmxlKCcnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZWQobmFtZSkge1xuICBpZiAobmFtZVtuYW1lLmxlbmd0aCAtIDFdID09PSAnKicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaSwgbGVuO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBleHBvcnRzLnNraXBzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGV4cG9ydHMuc2tpcHNbaV0udGVzdChuYW1lKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBmb3IgKGkgPSAwLCBsZW4gPSBleHBvcnRzLm5hbWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGV4cG9ydHMubmFtZXNbaV0udGVzdChuYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb2VyY2UgYHZhbGAuXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gdmFsXG4gKiBAcmV0dXJuIHtNaXhlZH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvZXJjZSh2YWwpIHtcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSByZXR1cm4gdmFsLnN0YWNrIHx8IHZhbC5tZXNzYWdlO1xuICByZXR1cm4gdmFsO1xufVxuIiwiLyohXG4gKiBAZGVzY3JpcHRpb24gUmVjdXJzaXZlIG9iamVjdCBleHRlbmRpbmdcbiAqIEBhdXRob3IgVmlhY2hlc2xhdiBMb3RzbWFub3YgPGxvdHNtYW5vdjg5QGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICpcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE4IFZpYWNoZXNsYXYgTG90c21hbm92XG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxuICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpblxuICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0b1xuICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2ZcbiAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbyxcbiAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTU1xuICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SXG4gKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVJcbiAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOXG4gKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gaXNTcGVjaWZpY1ZhbHVlKHZhbCkge1xuXHRyZXR1cm4gKFxuXHRcdHZhbCBpbnN0YW5jZW9mIEJ1ZmZlclxuXHRcdHx8IHZhbCBpbnN0YW5jZW9mIERhdGVcblx0XHR8fCB2YWwgaW5zdGFuY2VvZiBSZWdFeHBcblx0KSA/IHRydWUgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2xvbmVTcGVjaWZpY1ZhbHVlKHZhbCkge1xuXHRpZiAodmFsIGluc3RhbmNlb2YgQnVmZmVyKSB7XG5cdFx0dmFyIHggPSBCdWZmZXIuYWxsb2Ncblx0XHRcdD8gQnVmZmVyLmFsbG9jKHZhbC5sZW5ndGgpXG5cdFx0XHQ6IG5ldyBCdWZmZXIodmFsLmxlbmd0aCk7XG5cdFx0dmFsLmNvcHkoeCk7XG5cdFx0cmV0dXJuIHg7XG5cdH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdHJldHVybiBuZXcgRGF0ZSh2YWwuZ2V0VGltZSgpKTtcblx0fSBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRyZXR1cm4gbmV3IFJlZ0V4cCh2YWwpO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBzaXR1YXRpb24nKTtcblx0fVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBjbG9uaW5nIGFycmF5LlxuICovXG5mdW5jdGlvbiBkZWVwQ2xvbmVBcnJheShhcnIpIHtcblx0dmFyIGNsb25lID0gW107XG5cdGFyci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuXHRcdGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcblx0XHRcdFx0Y2xvbmVbaW5kZXhdID0gZGVlcENsb25lQXJyYXkoaXRlbSk7XG5cdFx0XHR9IGVsc2UgaWYgKGlzU3BlY2lmaWNWYWx1ZShpdGVtKSkge1xuXHRcdFx0XHRjbG9uZVtpbmRleF0gPSBjbG9uZVNwZWNpZmljVmFsdWUoaXRlbSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZVtpbmRleF0gPSBkZWVwRXh0ZW5kKHt9LCBpdGVtKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2xvbmVbaW5kZXhdID0gaXRlbTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gY2xvbmU7XG59XG5cbmZ1bmN0aW9uIHNhZmVHZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5KSB7XG5cdHJldHVybiBwcm9wZXJ0eSA9PT0gJ19fcHJvdG9fXycgPyB1bmRlZmluZWQgOiBvYmplY3RbcHJvcGVydHldO1xufVxuXG4vKipcbiAqIEV4dGVuaW5nIG9iamVjdCB0aGF0IGVudGVyZWQgaW4gZmlyc3QgYXJndW1lbnQuXG4gKlxuICogUmV0dXJucyBleHRlbmRlZCBvYmplY3Qgb3IgZmFsc2UgaWYgaGF2ZSBubyB0YXJnZXQgb2JqZWN0IG9yIGluY29ycmVjdCB0eXBlLlxuICpcbiAqIElmIHlvdSB3aXNoIHRvIGNsb25lIHNvdXJjZSBvYmplY3QgKHdpdGhvdXQgbW9kaWZ5IGl0KSwganVzdCB1c2UgZW1wdHkgbmV3XG4gKiBvYmplY3QgYXMgZmlyc3QgYXJndW1lbnQsIGxpa2UgdGhpczpcbiAqICAgZGVlcEV4dGVuZCh7fSwgeW91ck9ial8xLCBbeW91ck9ial9OXSk7XG4gKi9cbnZhciBkZWVwRXh0ZW5kID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoLypvYmpfMSwgW29ial8yXSwgW29ial9OXSovKSB7XG5cdGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSB8fCB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuXHRcdHJldHVybiBhcmd1bWVudHNbMF07XG5cdH1cblxuXHR2YXIgdGFyZ2V0ID0gYXJndW1lbnRzWzBdO1xuXG5cdC8vIGNvbnZlcnQgYXJndW1lbnRzIHRvIGFycmF5IGFuZCBjdXQgb2ZmIHRhcmdldCBvYmplY3Rcblx0dmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG5cdHZhciB2YWwsIHNyYywgY2xvbmU7XG5cblx0YXJncy5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcblx0XHQvLyBza2lwIGFyZ3VtZW50IGlmIGlzbid0IGFuIG9iamVjdCwgaXMgbnVsbCwgb3IgaXMgYW4gYXJyYXlcblx0XHRpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRzcmMgPSBzYWZlR2V0UHJvcGVydHkodGFyZ2V0LCBrZXkpOyAvLyBzb3VyY2UgdmFsdWVcblx0XHRcdHZhbCA9IHNhZmVHZXRQcm9wZXJ0eShvYmosIGtleSk7IC8vIG5ldyB2YWx1ZVxuXG5cdFx0XHQvLyByZWN1cnNpb24gcHJldmVudGlvblxuXHRcdFx0aWYgKHZhbCA9PT0gdGFyZ2V0KSB7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBpZiBuZXcgdmFsdWUgaXNuJ3Qgb2JqZWN0IHRoZW4ganVzdCBvdmVyd3JpdGUgYnkgbmV3IHZhbHVlXG5cdFx0XHQgKiBpbnN0ZWFkIG9mIGV4dGVuZGluZy5cblx0XHRcdCAqL1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0JyB8fCB2YWwgPT09IG51bGwpIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSB2YWw7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8ganVzdCBjbG9uZSBhcnJheXMgKGFuZCByZWN1cnNpdmUgY2xvbmUgb2JqZWN0cyBpbnNpZGUpXG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGRlZXBDbG9uZUFycmF5KHZhbCk7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8gY3VzdG9tIGNsb25pbmcgYW5kIG92ZXJ3cml0ZSBmb3Igc3BlY2lmaWMgb2JqZWN0c1xuXHRcdFx0fSBlbHNlIGlmIChpc1NwZWNpZmljVmFsdWUodmFsKSkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGNsb25lU3BlY2lmaWNWYWx1ZSh2YWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8vIG92ZXJ3cml0ZSBieSBuZXcgdmFsdWUgaWYgc291cmNlIGlzbid0IG9iamVjdCBvciBhcnJheVxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygc3JjICE9PSAnb2JqZWN0JyB8fCBzcmMgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShzcmMpKSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gZGVlcEV4dGVuZCh7fSwgdmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBzb3VyY2UgdmFsdWUgYW5kIG5ldyB2YWx1ZSBpcyBvYmplY3RzIGJvdGgsIGV4dGVuZGluZy4uLlxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSBkZWVwRXh0ZW5kKHNyYywgdmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL3V0aWwvaGVscGVycycpO1xuXG4kLmZpbmRCeVJlZiA9IHJlcXVpcmUoJy4vdXRpbC9maW5kLXJlZmVyZW5jZScpO1xuJC5yZXNvbHZlU2NoZW1hID0gcmVxdWlyZSgnLi91dGlsL3Jlc29sdmUtc2NoZW1hJyk7XG4kLm5vcm1hbGl6ZVNjaGVtYSA9IHJlcXVpcmUoJy4vdXRpbC9ub3JtYWxpemUtc2NoZW1hJyk7XG5cbnZhciBpbnN0YW5jZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZikge1xuICBmdW5jdGlvbiAkcmVmKGZha2Vyb290LCBzY2hlbWEsIHJlZnMsIGV4KSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlcm9vdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGV4ID0gcmVmcztcbiAgICAgIHJlZnMgPSBzY2hlbWE7XG4gICAgICBzY2hlbWEgPSBmYWtlcm9vdDtcbiAgICAgIGZha2Vyb290ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2NoZW1hICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZnMgPT09ICdvYmplY3QnICYmIHJlZnMgIT09IG51bGwpIHtcbiAgICAgIHZhciBhdXggPSByZWZzO1xuXG4gICAgICByZWZzID0gW107XG5cbiAgICAgIGZvciAodmFyIGsgaW4gYXV4KSB7XG4gICAgICAgIGF1eFtrXS5pZCA9IGF1eFtrXS5pZCB8fCBrO1xuICAgICAgICByZWZzLnB1c2goYXV4W2tdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZnMgIT09ICd1bmRlZmluZWQnICYmICFBcnJheS5pc0FycmF5KHJlZnMpKSB7XG4gICAgICBleCA9ICEhcmVmcztcbiAgICAgIHJlZnMgPSBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoKHJlZikge1xuICAgICAgaWYgKHR5cGVvZiByZWYuaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBpZCA9ICQucmVzb2x2ZVVSTChmYWtlcm9vdCwgcmVmLmlkKS5yZXBsYWNlKC9cXC8jPyQvLCAnJyk7XG5cbiAgICAgICAgaWYgKGlkLmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICAgICAgdmFyIHBhcnRzID0gaWQuc3BsaXQoJyMnKTtcblxuICAgICAgICAgIGlmIChwYXJ0c1sxXS5jaGFyQXQoKSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBpZCA9IHBhcnRzWzBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZCA9IHBhcnRzWzFdIHx8IHBhcnRzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghJHJlZi5yZWZzW2lkXSkge1xuICAgICAgICAgICRyZWYucmVmc1tpZF0gPSByZWY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAocmVmcyB8fCBbXSkuY29uY2F0KFtzY2hlbWFdKS5mb3JFYWNoKGZ1bmN0aW9uKHJlZikge1xuICAgICAgc2NoZW1hID0gJC5ub3JtYWxpemVTY2hlbWEoZmFrZXJvb3QsIHJlZiwgcHVzaCk7XG4gICAgICBwdXNoKHNjaGVtYSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gJC5yZXNvbHZlU2NoZW1hKHNjaGVtYSwgJHJlZi5yZWZzLCBleCwgZik7XG4gIH1cblxuICAkcmVmLnJlZnMgPSB7fTtcbiAgJHJlZi51dGlsID0gJDtcblxuICByZXR1cm4gJHJlZjtcbn07XG5cbmluc3RhbmNlLnV0aWwgPSAkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2xvbmUgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iaiwgc2Vlbikge1xuICBzZWVuID0gc2VlbiB8fCBbXTtcblxuICBpZiAoc2Vlbi5pbmRleE9mKG9iaikgPiAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIGRlcmVmZXJlbmNlIGNpcmN1bGFyIHN0cnVjdHVyZXMnKTtcbiAgfVxuXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHNlZW4gPSBzZWVuLmNvbmNhdChbb2JqXSk7XG5cbiAgdmFyIHRhcmdldCA9IEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XG5cbiAgZnVuY3Rpb24gY29weShrZXksIHZhbHVlKSB7XG4gICAgdGFyZ2V0W2tleV0gPSBjbG9uZSh2YWx1ZSwgc2Vlbik7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgb2JqLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgY29weShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICBjb3B5KGtleSwgb2JqW2tleV0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG5cbmZ1bmN0aW9uIGdldChvYmosIHBhdGgpIHtcbiAgdmFyIGhhc2ggPSBwYXRoLnNwbGl0KCcjJylbMV07XG5cbiAgdmFyIHBhcnRzID0gaGFzaC5zcGxpdCgnLycpLnNsaWNlKDEpO1xuXG4gIHdoaWxlIChwYXJ0cy5sZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhcnRzLnNoaWZ0KCkpLnJlcGxhY2UoL34xL2csICcvJykucmVwbGFjZSgvfjAvZywgJ34nKTtcblxuICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pTT04gcG9pbnRlciBub3QgZm91bmQ6ICcgKyBwYXRoKTtcbiAgICB9XG5cbiAgICBvYmogPSBvYmpba2V5XTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbnZhciBmaW5kID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpZCwgcmVmcywgZmlsdGVyKSB7XG4gIHZhciB0YXJnZXQgPSByZWZzW2lkXSB8fCByZWZzW2lkLnNwbGl0KCcjJylbMV1dIHx8IHJlZnNbJC5nZXREb2N1bWVudFVSSShpZCldO1xuXG4gIHRyeSB7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ID0gaWQuaW5kZXhPZignIy8nKSA+IC0xID8gZ2V0KHRhcmdldCwgaWQpIDogdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcmVmcykge1xuICAgICAgICBpZiAoJC5yZXNvbHZlVVJMKHJlZnNba2V5XS5pZCwgaWQpID09PSByZWZzW2tleV0uaWQpIHtcbiAgICAgICAgICB0YXJnZXQgPSByZWZzW2tleV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGFyZ2V0ID0gZmlsdGVyKGlkLCByZWZzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVmZXJlbmNlIG5vdCBmb3VuZDogJyArIGlkKTtcbiAgfVxuXG4gIHdoaWxlICh0YXJnZXQuJHJlZikge1xuICAgIHRhcmdldCA9IGZpbmQodGFyZ2V0LiRyZWYsIHJlZnMpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3BqdDMzL2VmYjJmMTEzNGJhYjk4NjExM2ZkXG5cbmZ1bmN0aW9uIFVSTFV0aWxzKHVybCwgYmFzZVVSTCkge1xuICAvLyByZW1vdmUgbGVhZGluZyAuL1xuICB1cmwgPSB1cmwucmVwbGFjZSgvXlxcLlxcLy8sICcnKTtcblxuICB2YXIgbSA9IFN0cmluZyh1cmwpLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKS5tYXRjaCgvXihbXjpcXC8/I10rOik/KD86XFwvXFwvKD86KFteOkBdKikoPzo6KFteOkBdKikpP0ApPygoW146XFwvPyNdKikoPzo6KFxcZCopKT8pKT8oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8pO1xuICBpZiAoIW0pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigpO1xuICB9XG4gIHZhciBocmVmID0gbVswXSB8fCAnJztcbiAgdmFyIHByb3RvY29sID0gbVsxXSB8fCAnJztcbiAgdmFyIHVzZXJuYW1lID0gbVsyXSB8fCAnJztcbiAgdmFyIHBhc3N3b3JkID0gbVszXSB8fCAnJztcbiAgdmFyIGhvc3QgPSBtWzRdIHx8ICcnO1xuICB2YXIgaG9zdG5hbWUgPSBtWzVdIHx8ICcnO1xuICB2YXIgcG9ydCA9IG1bNl0gfHwgJyc7XG4gIHZhciBwYXRobmFtZSA9IG1bN10gfHwgJyc7XG4gIHZhciBzZWFyY2ggPSBtWzhdIHx8ICcnO1xuICB2YXIgaGFzaCA9IG1bOV0gfHwgJyc7XG4gIGlmIChiYXNlVVJMICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgYmFzZSA9IG5ldyBVUkxVdGlscyhiYXNlVVJMKTtcbiAgICB2YXIgZmxhZyA9IHByb3RvY29sID09PSAnJyAmJiBob3N0ID09PSAnJyAmJiB1c2VybmFtZSA9PT0gJyc7XG4gICAgaWYgKGZsYWcgJiYgcGF0aG5hbWUgPT09ICcnICYmIHNlYXJjaCA9PT0gJycpIHtcbiAgICAgIHNlYXJjaCA9IGJhc2Uuc2VhcmNoO1xuICAgIH1cbiAgICBpZiAoZmxhZyAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykge1xuICAgICAgcGF0aG5hbWUgPSAocGF0aG5hbWUgIT09ICcnID8gKGJhc2UucGF0aG5hbWUuc2xpY2UoMCwgYmFzZS5wYXRobmFtZS5sYXN0SW5kZXhPZignLycpICsgMSkgKyBwYXRobmFtZSkgOiBiYXNlLnBhdGhuYW1lKTtcbiAgICB9XG4gICAgLy8gZG90IHNlZ21lbnRzIHJlbW92YWxcbiAgICB2YXIgb3V0cHV0ID0gW107XG5cbiAgICBwYXRobmFtZS5yZXBsYWNlKC9cXC8/W15cXC9dKy9nLCBmdW5jdGlvbihwKSB7XG4gICAgICBpZiAocCA9PT0gJy8uLicpIHtcbiAgICAgICAgb3V0cHV0LnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2gocCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXRobmFtZSA9IG91dHB1dC5qb2luKCcnKSB8fCAnLyc7XG5cbiAgICBpZiAoZmxhZykge1xuICAgICAgcG9ydCA9IGJhc2UucG9ydDtcbiAgICAgIGhvc3RuYW1lID0gYmFzZS5ob3N0bmFtZTtcbiAgICAgIGhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICBwYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICB1c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgfVxuICAgIGlmIChwcm90b2NvbCA9PT0gJycpIHtcbiAgICAgIHByb3RvY29sID0gYmFzZS5wcm90b2NvbDtcbiAgICB9XG4gICAgaHJlZiA9IHByb3RvY29sICsgKGhvc3QgIT09ICcnID8gJy8vJyA6ICcnKSArICh1c2VybmFtZSAhPT0gJycgPyB1c2VybmFtZSArIChwYXNzd29yZCAhPT0gJycgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJyA6ICcnKSArIGhvc3QgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gIH1cbiAgdGhpcy5ocmVmID0gaHJlZjtcbiAgdGhpcy5vcmlnaW4gPSBwcm90b2NvbCArIChob3N0ICE9PSAnJyA/ICcvLycgKyBob3N0IDogJycpO1xuICB0aGlzLnByb3RvY29sID0gcHJvdG9jb2w7XG4gIHRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgdGhpcy5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICB0aGlzLmhvc3QgPSBob3N0O1xuICB0aGlzLmhvc3RuYW1lID0gaG9zdG5hbWU7XG4gIHRoaXMucG9ydCA9IHBvcnQ7XG4gIHRoaXMucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgdGhpcy5zZWFyY2ggPSBzZWFyY2g7XG4gIHRoaXMuaGFzaCA9IGhhc2g7XG59XG5cbmZ1bmN0aW9uIGlzVVJMKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJyAmJiAvXlxcdys6XFwvXFwvLy50ZXN0KHBhdGgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VVUkkoaHJlZiwgYmFzZSkge1xuICByZXR1cm4gbmV3IFVSTFV0aWxzKGhyZWYsIGJhc2UpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVVJMKGJhc2UsIGhyZWYpIHtcbiAgYmFzZSA9IGJhc2UgfHwgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIyc7XG5cbiAgaHJlZiA9IHBhcnNlVVJJKGhyZWYsIGJhc2UpO1xuICBiYXNlID0gcGFyc2VVUkkoYmFzZSk7XG5cbiAgaWYgKGJhc2UuaGFzaCAmJiAhaHJlZi5oYXNoKSB7XG4gICAgcmV0dXJuIGhyZWYuaHJlZiArIGJhc2UuaGFzaDtcbiAgfVxuXG4gIHJldHVybiBocmVmLmhyZWY7XG59XG5cbmZ1bmN0aW9uIGdldERvY3VtZW50VVJJKHVyaSkge1xuICByZXR1cm4gdHlwZW9mIHVyaSA9PT0gJ3N0cmluZycgJiYgdXJpLnNwbGl0KCcjJylbMF07XG59XG5cbmZ1bmN0aW9uIGlzS2V5d29yZChwcm9wKSB7XG4gIHJldHVybiBwcm9wID09PSAnZW51bScgfHwgcHJvcCA9PT0gJ2RlZmF1bHQnIHx8IHByb3AgPT09ICdyZXF1aXJlZCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1VSTDogaXNVUkwsXG4gIHBhcnNlVVJJOiBwYXJzZVVSSSxcbiAgaXNLZXl3b3JkOiBpc0tleXdvcmQsXG4gIHJlc29sdmVVUkw6IHJlc29sdmVVUkwsXG4gIGdldERvY3VtZW50VVJJOiBnZXREb2N1bWVudFVSSVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIGNsb25lT2JqID0gcmVxdWlyZSgnLi9jbG9uZS1vYmonKTtcblxudmFyIFNDSEVNQV9VUkkgPSBbXG4gICdodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYSMnLFxuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEnLFxuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjJyxcbiAgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hJ1xuXTtcblxuZnVuY3Rpb24gZXhwYW5kKG9iaiwgcGFyZW50LCBjYWxsYmFjaykge1xuICBpZiAob2JqKSB7XG4gICAgdmFyIGlkID0gdHlwZW9mIG9iai5pZCA9PT0gJ3N0cmluZycgPyBvYmouaWQgOiAnIyc7XG5cbiAgICBpZiAoISQuaXNVUkwoaWQpKSB7XG4gICAgICBpZCA9ICQucmVzb2x2ZVVSTChwYXJlbnQgPT09IGlkID8gbnVsbCA6IHBhcmVudCwgaWQpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqLiRyZWYgPT09ICdzdHJpbmcnICYmICEkLmlzVVJMKG9iai4kcmVmKSkge1xuICAgICAgb2JqLiRyZWYgPSAkLnJlc29sdmVVUkwoaWQsIG9iai4kcmVmKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iai5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iai5pZCA9IHBhcmVudCA9IGlkO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICEkLmlzS2V5d29yZChrZXkpKSB7XG4gICAgICBleHBhbmQodmFsdWUsIHBhcmVudCwgY2FsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayhvYmopO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZmFrZXJvb3QsIHNjaGVtYSwgcHVzaCkge1xuICBpZiAodHlwZW9mIGZha2Vyb290ID09PSAnb2JqZWN0Jykge1xuICAgIHB1c2ggPSBzY2hlbWE7XG4gICAgc2NoZW1hID0gZmFrZXJvb3Q7XG4gICAgZmFrZXJvb3QgPSBudWxsO1xuICB9XG5cbiAgdmFyIGJhc2UgPSBmYWtlcm9vdCB8fCAnJyxcbiAgICAgIGNvcHkgPSBjbG9uZU9iaihzY2hlbWEpO1xuXG4gIGlmIChjb3B5LiRzY2hlbWEgJiYgU0NIRU1BX1VSSS5pbmRleE9mKGNvcHkuJHNjaGVtYSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzY2hlbWEgdmVyc2lvbiAodjQgb25seSknKTtcbiAgfVxuXG4gIGJhc2UgPSAkLnJlc29sdmVVUkwoY29weS4kc2NoZW1hIHx8IFNDSEVNQV9VUklbMF0sIGJhc2UpO1xuXG4gIGV4cGFuZChjb3B5LCAkLnJlc29sdmVVUkwoY29weS5pZCB8fCAnIycsIGJhc2UpLCBwdXNoKTtcblxuICBjb3B5LmlkID0gY29weS5pZCB8fCBiYXNlO1xuXG4gIHJldHVybiBjb3B5O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIGZpbmQgPSByZXF1aXJlKCcuL2ZpbmQtcmVmZXJlbmNlJyk7XG5cbnZhciBkZWVwRXh0ZW5kID0gcmVxdWlyZSgnZGVlcC1leHRlbmQnKTtcblxuZnVuY3Rpb24gY29weShfLCBvYmosIHJlZnMsIHBhcmVudCwgcmVzb2x2ZSwgY2FsbGJhY2spIHtcbiAgdmFyIHRhcmdldCA9ICBBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9O1xuXG4gIGlmICh0eXBlb2Ygb2JqLiRyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGlkID0gb2JqLiRyZWY7XG4gICAgdmFyIGJhc2UgPSAkLmdldERvY3VtZW50VVJJKGlkKTtcbiAgICB2YXIgbG9jYWwgPSBpZC5pbmRleE9mKCcjLycpID4gLTE7XG5cbiAgICBpZiAobG9jYWwgfHwgKHJlc29sdmUgJiYgYmFzZSAhPT0gcGFyZW50KSkge1xuICAgICAgdmFyIGZpeGVkID0gZmluZChpZCwgcmVmcywgY2FsbGJhY2spO1xuXG4gICAgICBkZWVwRXh0ZW5kKG9iaiwgZml4ZWQpO1xuXG4gICAgICBkZWxldGUgb2JqLiRyZWY7XG4gICAgICBkZWxldGUgb2JqLmlkO1xuICAgIH1cblxuICAgIGlmIChfW2lkXSA+IDEwKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIGlmIChfW2lkXSkge1xuICAgICAgX1tpZF0gKz0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgX1tpZF0gPSAxO1xuICAgIH1cbiAgfVxuXG5cbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcblxuICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BdID09PSAnb2JqZWN0JyAmJiBvYmpbcHJvcF0gIT09IG51bGwgJiYgISQuaXNLZXl3b3JkKHByb3ApKSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSBjb3B5KF8sIG9ialtwcm9wXSwgcmVmcywgcGFyZW50LCByZXNvbHZlLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldFtwcm9wXSA9IG9ialtwcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iaiwgcmVmcywgcmVzb2x2ZSwgY2FsbGJhY2spIHtcbiAgdmFyIGZpeGVkSWQgPSAkLnJlc29sdmVVUkwob2JqLiRzY2hlbWEsIG9iai5pZCksXG4gICAgICBwYXJlbnQgPSAkLmdldERvY3VtZW50VVJJKGZpeGVkSWQpO1xuXG4gIHJldHVybiBjb3B5KHt9LCBvYmosIHJlZnMsIHBhcmVudCwgcmVzb2x2ZSwgY2FsbGJhY2spO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludCBpbmRlbnQ6IDQgKi9cblxuXG4vLyBQcml2YXRlIGhlbHBlciBjbGFzc1xuY2xhc3MgU3ViUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKGxvdywgaGlnaCkge1xuICAgICAgICB0aGlzLmxvdyA9IGxvdztcbiAgICAgICAgdGhpcy5oaWdoID0gaGlnaDtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAxICsgaGlnaCAtIGxvdztcbiAgICB9XG5cbiAgICBvdmVybGFwcyhyYW5nZSkge1xuICAgICAgICByZXR1cm4gISh0aGlzLmhpZ2ggPCByYW5nZS5sb3cgfHwgdGhpcy5sb3cgPiByYW5nZS5oaWdoKTtcbiAgICB9XG5cbiAgICB0b3VjaGVzKHJhbmdlKSB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuaGlnaCArIDEgPCByYW5nZS5sb3cgfHwgdGhpcy5sb3cgLSAxID4gcmFuZ2UuaGlnaCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBpbmNsdXNpdmUgY29tYmluYXRpb24gb2YgU3ViUmFuZ2VzIGFzIGEgU3ViUmFuZ2UuXG4gICAgYWRkKHJhbmdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3ViUmFuZ2UoXG4gICAgICAgICAgICBNYXRoLm1pbih0aGlzLmxvdywgcmFuZ2UubG93KSxcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuaGlnaCwgcmFuZ2UuaGlnaClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHN1YnRyYWN0aW9uIG9mIFN1YlJhbmdlcyBhcyBhbiBhcnJheSBvZiBTdWJSYW5nZXMuXG4gICAgLy8gKFRoZXJlJ3MgYSBjYXNlIHdoZXJlIHN1YnRyYWN0aW9uIGRpdmlkZXMgaXQgaW4gMilcbiAgICBzdWJ0cmFjdChyYW5nZSkge1xuICAgICAgICBpZiAocmFuZ2UubG93IDw9IHRoaXMubG93ICYmIHJhbmdlLmhpZ2ggPj0gdGhpcy5oaWdoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSBpZiAocmFuZ2UubG93ID4gdGhpcy5sb3cgJiYgcmFuZ2UuaGlnaCA8IHRoaXMuaGlnaCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBuZXcgU3ViUmFuZ2UodGhpcy5sb3csIHJhbmdlLmxvdyAtIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBTdWJSYW5nZShyYW5nZS5oaWdoICsgMSwgdGhpcy5oaWdoKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmIChyYW5nZS5sb3cgPD0gdGhpcy5sb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3IFN1YlJhbmdlKHJhbmdlLmhpZ2ggKyAxLCB0aGlzLmhpZ2gpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3IFN1YlJhbmdlKHRoaXMubG93LCByYW5nZS5sb3cgLSAxKV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG93ID09IHRoaXMuaGlnaCA/XG4gICAgICAgICAgICB0aGlzLmxvdy50b1N0cmluZygpIDogdGhpcy5sb3cgKyAnLScgKyB0aGlzLmhpZ2g7XG4gICAgfVxufVxuXG5cbmNsYXNzIERSYW5nZSB7XG4gICAgY29uc3RydWN0b3IoYSwgYikge1xuICAgICAgICB0aGlzLnJhbmdlcyA9IFtdO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHRoaXMuYWRkKGEsIGIpO1xuICAgIH1cblxuICAgIF91cGRhdGVfbGVuZ3RoKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IHRoaXMucmFuZ2VzLnJlZHVjZSgocHJldmlvdXMsIHJhbmdlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgKyByYW5nZS5sZW5ndGg7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHZhciBfYWRkID0gKHN1YnJhbmdlKSA9PiB7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiAhc3VicmFuZ2UudG91Y2hlcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5yYW5nZXMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiBzdWJyYW5nZS50b3VjaGVzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIHN1YnJhbmdlID0gc3VicmFuZ2UuYWRkKHRoaXMucmFuZ2VzW2ldKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdSYW5nZXMucHVzaChzdWJyYW5nZSk7XG4gICAgICAgICAgICB0aGlzLnJhbmdlcyA9IG5ld1Jhbmdlcy5jb25jYXQodGhpcy5yYW5nZXMuc2xpY2UoaSkpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlX2xlbmd0aCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgICAgICAgIGEucmFuZ2VzLmZvckVhY2goX2FkZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYiA9PSBudWxsKSBiID0gYTtcbiAgICAgICAgICAgIF9hZGQobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdWJ0cmFjdChhLCBiKSB7XG4gICAgICAgIHZhciBfc3VidHJhY3QgPSAoc3VicmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmICFzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5yYW5nZXMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiBzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBuZXdSYW5nZXMgPSBuZXdSYW5nZXMuY29uY2F0KHRoaXMucmFuZ2VzW2ldLnN1YnRyYWN0KHN1YnJhbmdlKSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yYW5nZXMgPSBuZXdSYW5nZXMuY29uY2F0KHRoaXMucmFuZ2VzLnNsaWNlKGkpKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZV9sZW5ndGgoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERSYW5nZSkge1xuICAgICAgICAgICAgYS5yYW5nZXMuZm9yRWFjaChfc3VidHJhY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGIgPT0gbnVsbCkgYiA9IGE7XG4gICAgICAgICAgICBfc3VidHJhY3QobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpbnRlcnNlY3QoYSwgYikge1xuICAgICAgICB2YXIgbmV3UmFuZ2VzID0gW107XG4gICAgICAgIHZhciBfaW50ZXJzZWN0ID0gKHN1YnJhbmdlKSA9PiB7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiAhc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxvdyA9IE1hdGgubWF4KHRoaXMucmFuZ2VzW2ldLmxvdywgc3VicmFuZ2UubG93KTtcbiAgICAgICAgICAgICAgICB2YXIgaGlnaCA9IE1hdGgubWluKHRoaXMucmFuZ2VzW2ldLmhpZ2gsIHN1YnJhbmdlLmhpZ2gpO1xuICAgICAgICAgICAgICAgIG5ld1Jhbmdlcy5wdXNoKG5ldyBTdWJSYW5nZShsb3csIGhpZ2gpKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgICAgICAgIGEucmFuZ2VzLmZvckVhY2goX2ludGVyc2VjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYiA9PSBudWxsKSBiID0gYTtcbiAgICAgICAgICAgIF9pbnRlcnNlY3QobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJhbmdlcyA9IG5ld1JhbmdlcztcbiAgICAgICAgdGhpcy5fdXBkYXRlX2xlbmd0aCgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpbmRleChpbmRleCkge1xuICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmIHRoaXMucmFuZ2VzW2ldLmxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICAgICAgaW5kZXggLT0gdGhpcy5yYW5nZXNbaV0ubGVuZ3RoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlc1tpXS5sb3cgKyBpbmRleDtcbiAgICB9XG5cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuICdbICcgKyB0aGlzLnJhbmdlcy5qb2luKCcsICcpICsgJyBdJztcbiAgICB9XG5cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUmFuZ2UodGhpcyk7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERSYW5nZTtcbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAnQVMgSVMnXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaXNFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0FycmF5RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdBc3NpZ25tZW50RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdCaW5hcnlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NhbGxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnSWRlbnRpZmllcic6XG4gICAgICAgICAgICBjYXNlICdMaXRlcmFsJzpcbiAgICAgICAgICAgIGNhc2UgJ0xvZ2ljYWxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnTmV3RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdPYmplY3RFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1NlcXVlbmNlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdUaGlzRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdVbmFyeUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnVXBkYXRlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSXRlcmF0aW9uU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0RvV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9ySW5TdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9yU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnQnJlYWtTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnQ29udGludWVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRGVidWdnZXJTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRG9XaGlsZVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdFbXB0eVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdFeHByZXNzaW9uU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvckluU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvclN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdJZlN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMYWJlbGVkU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1JldHVyblN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdTd2l0Y2hTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnVGhyb3dTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnVHJ5U3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnV2l0aFN0YXRlbWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU291cmNlRWxlbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gaXNTdGF0ZW1lbnQobm9kZSkgfHwgbm9kZSAhPSBudWxsICYmIG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYWlsaW5nU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnSWZTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hbHRlcm5hdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jb25zZXF1ZW50O1xuXG4gICAgICAgIGNhc2UgJ0xhYmVsZWRTdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdGb3JTdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdGb3JJblN0YXRlbWVudCc6XG4gICAgICAgIGNhc2UgJ1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgY2FzZSAnV2l0aFN0YXRlbWVudCc6XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5ib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudChub2RlKSB7XG4gICAgICAgIHZhciBjdXJyZW50O1xuXG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09ICdJZlN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5hbHRlcm5hdGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBub2RlLmNvbnNlcXVlbnQ7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdJZlN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5hbHRlcm5hdGUgPT0gbnVsbCkgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudCA9IHRyYWlsaW5nU3RhdGVtZW50KGN1cnJlbnQpO1xuICAgICAgICB9IHdoaWxlIChjdXJyZW50KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGlzRXhwcmVzc2lvbjogaXNFeHByZXNzaW9uLFxuICAgICAgICBpc1N0YXRlbWVudDogaXNTdGF0ZW1lbnQsXG4gICAgICAgIGlzSXRlcmF0aW9uU3RhdGVtZW50OiBpc0l0ZXJhdGlvblN0YXRlbWVudCxcbiAgICAgICAgaXNTb3VyY2VFbGVtZW50OiBpc1NvdXJjZUVsZW1lbnQsXG4gICAgICAgIGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudDogaXNQcm9ibGVtYXRpY0lmU3RhdGVtZW50LFxuXG4gICAgICAgIHRyYWlsaW5nU3RhdGVtZW50OiB0cmFpbGluZ1N0YXRlbWVudFxuICAgIH07XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDE0IEl2YW4gTmlrdWxpbiA8aWZhYWFuQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBFUzZSZWdleCwgRVM1UmVnZXgsIE5PTl9BU0NJSV9XSElURVNQQUNFUywgSURFTlRJRklFUl9TVEFSVCwgSURFTlRJRklFUl9QQVJULCBjaDtcblxuICAgIC8vIFNlZSBgdG9vbHMvZ2VuZXJhdGUtaWRlbnRpZmllci1yZWdleC5qc2AuXG4gICAgRVM1UmVnZXggPSB7XG4gICAgICAgIC8vIEVDTUFTY3JpcHQgNS4xL1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OlxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCMlxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3QURcXHVBN0IwXFx1QTdCMVxcdUE3RjctXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdLyxcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA1LjEvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDpcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwLVxcdTA4QjJcXHUwOEU0LVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTBBMDEtXFx1MEEwM1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTY2LVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkMtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQjAxLVxcdTBCMDNcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzQy1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU2XFx1MEI1N1xcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYzXFx1MEI2Ni1cXHUwQjZGXFx1MEI3MVxcdTBCODJcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCQkUtXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDRFxcdTBCRDBcXHUwQkQ3XFx1MEJFNi1cXHUwQkVGXFx1MEMwMC1cXHUwQzAzXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRC1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzU4XFx1MEM1OVxcdTBDNjAtXFx1MEM2M1xcdTBDNjYtXFx1MEM2RlxcdTBDODEtXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMS1cXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENjAtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOUQ5XFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFBQjAtXFx1MUFCRFxcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFDRjhcXHUxQ0Y5XFx1MUQwMC1cXHUxREY1XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5XFx1MzA5QVxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTY5RFxcdUE2OUYtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdBRFxcdUE3QjBcXHVBN0IxXFx1QTdGNy1cXHVBODI3XFx1QTg0MC1cXHVBODczXFx1QTg4MC1cXHVBOEM0XFx1QThEMC1cXHVBOEQ5XFx1QThFMC1cXHVBOEY3XFx1QThGQlxcdUE5MDAtXFx1QTkyRFxcdUE5MzAtXFx1QTk1M1xcdUE5NjAtXFx1QTk3Q1xcdUE5ODAtXFx1QTlDMFxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlGRVxcdUFBMDAtXFx1QUEzNlxcdUFBNDAtXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0EtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRFxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYxMC1cXHVGRjE5XFx1RkYyMS1cXHVGRjNBXFx1RkYzRlxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10vXG4gICAgfTtcblxuICAgIEVTNlJlZ2V4ID0ge1xuICAgICAgICAvLyBFQ01BU2NyaXB0IDYvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEIyXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REQ0MC1cXHVERDc0XFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYzMC1cXHVERjRBXFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OF18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDUwLVxcdURENzJcXHVERDc2XFx1REQ4My1cXHVEREIyXFx1RERDMS1cXHVEREM0XFx1REREQVxcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1RC1cXHVERjYxXXxcXHVEODA1W1xcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0RGXFx1RENGRlxcdURFQzAtXFx1REVGOF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOThdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXXxbXFx1RDgwQ1xcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MFxcdURGOTMtXFx1REY5Rl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdLyxcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA2L1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6IC9bXFx4QUFcXHhCNVxceEI3XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4Ni1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0ODMtXFx1MDQ4N1xcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjEwLVxcdTA2MUFcXHUwNjIwLVxcdTA2NjlcXHUwNjZFLVxcdTA2RDNcXHUwNkQ1LVxcdTA2RENcXHUwNkRGLVxcdTA2RThcXHUwNkVBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMC1cXHUwNzRBXFx1MDc0RC1cXHUwN0IxXFx1MDdDMC1cXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgyRFxcdTA4NDAtXFx1MDg1QlxcdTA4QTAtXFx1MDhCMlxcdTA4RTQtXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5NzEtXFx1MDk4M1xcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkMtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNFXFx1MDlEN1xcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUzXFx1MDlFNi1cXHUwOUYxXFx1MEEwMS1cXHUwQTAzXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCQy1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFEMFxcdTBBRTAtXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAwLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNThcXHUwQzU5XFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MS1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAxLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU3XFx1MEQ2MC1cXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4MlxcdTBEODNcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREU2LVxcdTBERUZcXHUwREYyXFx1MERGM1xcdTBFMDEtXFx1MEUzQVxcdTBFNDAtXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUI5XFx1MEVCQi1cXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0UtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGNzEtXFx1MEY4NFxcdTBGODYtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDAwLVxcdTEwNDlcXHUxMDUwLVxcdTEwOURcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM1RC1cXHUxMzVGXFx1MTM2OS1cXHUxMzcxXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzE0XFx1MTcyMC1cXHUxNzM0XFx1MTc0MC1cXHUxNzUzXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc3MlxcdTE3NzNcXHUxNzgwLVxcdTE3RDNcXHUxN0Q3XFx1MTdEQ1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODEwLVxcdTE4MTlcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxOUQwLVxcdTE5REFcXHUxQTAwLVxcdTFBMUJcXHUxQTIwLVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUE3XFx1MUFCMC1cXHUxQUJEXFx1MUIwMC1cXHUxQjRCXFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQkYzXFx1MUMwMC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM0RC1cXHUxQzdEXFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0Y2XFx1MUNGOFxcdTFDRjlcXHUxRDAwLVxcdTFERjVcXHUxREZDLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjAwQ1xcdTIwMERcXHUyMDNGXFx1MjA0MFxcdTIwNTRcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE4LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ3Ri1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkRFMC1cXHUyREZGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OS1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjJCXFx1QTY0MC1cXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY3Ri1cXHVBNjlEXFx1QTY5Ri1cXHVBNkYxXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzRcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QTlFMC1cXHVBOUZFXFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QS1cXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVGXFx1QUFGMi1cXHVBQUY2XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJEXFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjEwLVxcdUZGMTlcXHVGRjIxLVxcdUZGM0FcXHVGRjNGXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REQ0MC1cXHVERDc0XFx1RERGRFxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURFRTBcXHVERjAwLVxcdURGMUZcXHVERjMwLVxcdURGNEFcXHVERjUwLVxcdURGN0FcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1RENBMC1cXHVEQ0E5XFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDAtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNlxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzQ2XFx1REM2Ni1cXHVEQzZGXFx1REM3Ri1cXHVEQ0JBXFx1RENEMC1cXHVEQ0U4XFx1RENGMC1cXHVEQ0Y5XFx1REQwMC1cXHVERDM0XFx1REQzNi1cXHVERDNGXFx1REQ1MC1cXHVERDczXFx1REQ3NlxcdUREODAtXFx1RERDNFxcdURERDAtXFx1REREQVxcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUzN1xcdURFQjAtXFx1REVFQVxcdURFRjAtXFx1REVGOVxcdURGMDEtXFx1REYwM1xcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNDLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjVELVxcdURGNjNcXHVERjY2LVxcdURGNkNcXHVERjcwLVxcdURGNzRdfFxcdUQ4MDVbXFx1REM4MC1cXHVEQ0M1XFx1RENDN1xcdURDRDAtXFx1RENEOVxcdUREODAtXFx1RERCNVxcdUREQjgtXFx1RERDMFxcdURFMDAtXFx1REU0MFxcdURFNDRcXHVERTUwLVxcdURFNTlcXHVERTgwLVxcdURFQjdcXHVERUMwLVxcdURFQzldfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0U5XFx1RENGRlxcdURFQzAtXFx1REVGOF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOThdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXXxbXFx1RDgwQ1xcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERTYwLVxcdURFNjlcXHVERUQwLVxcdURFRURcXHVERUYwLVxcdURFRjRcXHVERjAwLVxcdURGMzZcXHVERjQwLVxcdURGNDNcXHVERjUwLVxcdURGNTlcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MC1cXHVERjdFXFx1REY4Ri1cXHVERjlGXXxcXHVEODJDW1xcdURDMDBcXHVEQzAxXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OVxcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjUtXFx1REQ2OVxcdURENkQtXFx1REQ3MlxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXFx1REZDRS1cXHVERkZGXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdURDRDAtXFx1RENENl18XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVENlxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1REI0MFtcXHVERDAwLVxcdURERUZdL1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gMHgzMCA8PSBjaCAmJiBjaCA8PSAweDM5OyAgLy8gMC4uOVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSGV4RGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuIDB4MzAgPD0gY2ggJiYgY2ggPD0gMHgzOSB8fCAgLy8gMC4uOVxuICAgICAgICAgICAgMHg2MSA8PSBjaCAmJiBjaCA8PSAweDY2IHx8ICAgICAvLyBhLi5mXG4gICAgICAgICAgICAweDQxIDw9IGNoICYmIGNoIDw9IDB4NDY7ICAgICAgIC8vIEEuLkZcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09jdGFsRGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoID49IDB4MzAgJiYgY2ggPD0gMHgzNzsgIC8vIDAuLjdcbiAgICB9XG5cbiAgICAvLyA3LjIgV2hpdGUgU3BhY2VcblxuICAgIE5PTl9BU0NJSV9XSElURVNQQUNFUyA9IFtcbiAgICAgICAgMHgxNjgwLCAweDE4MEUsXG4gICAgICAgIDB4MjAwMCwgMHgyMDAxLCAweDIwMDIsIDB4MjAwMywgMHgyMDA0LCAweDIwMDUsIDB4MjAwNiwgMHgyMDA3LCAweDIwMDgsIDB4MjAwOSwgMHgyMDBBLFxuICAgICAgICAweDIwMkYsIDB4MjA1RixcbiAgICAgICAgMHgzMDAwLFxuICAgICAgICAweEZFRkZcbiAgICBdO1xuXG4gICAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA9PT0gMHgyMCB8fCBjaCA9PT0gMHgwOSB8fCBjaCA9PT0gMHgwQiB8fCBjaCA9PT0gMHgwQyB8fCBjaCA9PT0gMHhBMCB8fFxuICAgICAgICAgICAgY2ggPj0gMHgxNjgwICYmIE5PTl9BU0NJSV9XSElURVNQQUNFUy5pbmRleE9mKGNoKSA+PSAwO1xuICAgIH1cblxuICAgIC8vIDcuMyBMaW5lIFRlcm1pbmF0b3JzXG5cbiAgICBmdW5jdGlvbiBpc0xpbmVUZXJtaW5hdG9yKGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA9PT0gMHgwQSB8fCBjaCA9PT0gMHgwRCB8fCBjaCA9PT0gMHgyMDI4IHx8IGNoID09PSAweDIwMjk7XG4gICAgfVxuXG4gICAgLy8gNy42IElkZW50aWZpZXIgTmFtZXMgYW5kIElkZW50aWZpZXJzXG5cbiAgICBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KGNwKSB7XG4gICAgICAgIGlmIChjcCA8PSAweEZGRkYpIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3ApOyB9XG4gICAgICAgIHZhciBjdTEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGguZmxvb3IoKGNwIC0gMHgxMDAwMCkgLyAweDQwMCkgKyAweEQ4MDApO1xuICAgICAgICB2YXIgY3UyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGNwIC0gMHgxMDAwMCkgJSAweDQwMCkgKyAweERDMDApO1xuICAgICAgICByZXR1cm4gY3UxICsgY3UyO1xuICAgIH1cblxuICAgIElERU5USUZJRVJfU1RBUlQgPSBuZXcgQXJyYXkoMHg4MCk7XG4gICAgZm9yKGNoID0gMDsgY2ggPCAweDgwOyArK2NoKSB7XG4gICAgICAgIElERU5USUZJRVJfU1RBUlRbY2hdID1cbiAgICAgICAgICAgIGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSB8fCAgLy8gYS4uelxuICAgICAgICAgICAgY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBIHx8ICAvLyBBLi5aXG4gICAgICAgICAgICBjaCA9PT0gMHgyNCB8fCBjaCA9PT0gMHg1RjsgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2NvcmUpXG4gICAgfVxuXG4gICAgSURFTlRJRklFUl9QQVJUID0gbmV3IEFycmF5KDB4ODApO1xuICAgIGZvcihjaCA9IDA7IGNoIDwgMHg4MDsgKytjaCkge1xuICAgICAgICBJREVOVElGSUVSX1BBUlRbY2hdID1cbiAgICAgICAgICAgIGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSB8fCAgLy8gYS4uelxuICAgICAgICAgICAgY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBIHx8ICAvLyBBLi5aXG4gICAgICAgICAgICBjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkgfHwgIC8vIDAuLjlcbiAgICAgICAgICAgIGNoID09PSAweDI0IHx8IGNoID09PSAweDVGOyAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydEVTNShjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9TVEFSVFtjaF0gOiBFUzVSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0RVM1KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1BBUlRbY2hdIDogRVM1UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydEVTNihjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9TVEFSVFtjaF0gOiBFUzZSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0RVM2KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1BBUlRbY2hdIDogRVM2UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNEZWNpbWFsRGlnaXQ6IGlzRGVjaW1hbERpZ2l0LFxuICAgICAgICBpc0hleERpZ2l0OiBpc0hleERpZ2l0LFxuICAgICAgICBpc09jdGFsRGlnaXQ6IGlzT2N0YWxEaWdpdCxcbiAgICAgICAgaXNXaGl0ZVNwYWNlOiBpc1doaXRlU3BhY2UsXG4gICAgICAgIGlzTGluZVRlcm1pbmF0b3I6IGlzTGluZVRlcm1pbmF0b3IsXG4gICAgICAgIGlzSWRlbnRpZmllclN0YXJ0RVM1OiBpc0lkZW50aWZpZXJTdGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyUGFydEVTNTogaXNJZGVudGlmaWVyUGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyU3RhcnRFUzY6IGlzSWRlbnRpZmllclN0YXJ0RVM2LFxuICAgICAgICBpc0lkZW50aWZpZXJQYXJ0RVM2OiBpc0lkZW50aWZpZXJQYXJ0RVM2XG4gICAgfTtcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEzIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBjb2RlID0gcmVxdWlyZSgnLi9jb2RlJyk7XG5cbiAgICBmdW5jdGlvbiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmRFUzYoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdpbXBsZW1lbnRzJzpcbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQnOlxuICAgICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICBjYXNlICdzdGF0aWMnOlxuICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmRFUzUoaWQsIHN0cmljdCkge1xuICAgICAgICAvLyB5aWVsZCBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMga2V5d29yZCB1bmRlciBub24tc3RyaWN0IG1vZGUuXG4gICAgICAgIGlmICghc3RyaWN0ICYmIGlkID09PSAneWllbGQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzS2V5d29yZEVTNihpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmRFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZEVTNihpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChpZC5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2lmJykgfHwgKGlkID09PSAnaW4nKSB8fCAoaWQgPT09ICdkbycpO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAndmFyJykgfHwgKGlkID09PSAnZm9yJykgfHwgKGlkID09PSAnbmV3JykgfHwgKGlkID09PSAndHJ5Jyk7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd0aGlzJykgfHwgKGlkID09PSAnZWxzZScpIHx8IChpZCA9PT0gJ2Nhc2UnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9PT0gJ2NhdGNoJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNoJykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2Z1bmN0aW9uJykgfHwgKGlkID09PSAnY29udGludWUnKSB8fCAoaWQgPT09ICdkZWJ1Z2dlcicpO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnbnVsbCcgfHwgaWQgPT09ICd0cnVlJyB8fCBpZCA9PT0gJ2ZhbHNlJyB8fCBpc0tleXdvcmRFUzUoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZXNlcnZlZFdvcmRFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaWQgPT09ICdudWxsJyB8fCBpZCA9PT0gJ3RydWUnIHx8IGlkID09PSAnZmFsc2UnIHx8IGlzS2V5d29yZEVTNihpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc3RyaWN0ZWRXb3JkKGlkKSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJOYW1lRVM1KGlkKSB7XG4gICAgICAgIHZhciBpLCBpeiwgY2g7XG5cbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGlmICghY29kZS5pc0lkZW50aWZpZXJTdGFydEVTNShjaCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDEsIGl6ID0gaWQubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgY2ggPSBpZC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKCFjb2RlLmlzSWRlbnRpZmllclBhcnRFUzUoY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlY29kZVV0ZjE2KGxlYWQsIHRyYWlsKSB7XG4gICAgICAgIHJldHVybiAobGVhZCAtIDB4RDgwMCkgKiAweDQwMCArICh0cmFpbCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWVFUzYoaWQpIHtcbiAgICAgICAgdmFyIGksIGl6LCBjaCwgbG93Q2gsIGNoZWNrO1xuXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY2hlY2sgPSBjb2RlLmlzSWRlbnRpZmllclN0YXJ0RVM2O1xuICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGlkLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGNoID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKSB7XG4gICAgICAgICAgICAgICAgKytpO1xuICAgICAgICAgICAgICAgIGlmIChpID49IGl6KSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICAgICAgICAgIGxvd0NoID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgICAgICBpZiAoISgweERDMDAgPD0gbG93Q2ggJiYgbG93Q2ggPD0gMHhERkZGKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNoID0gZGVjb2RlVXRmMTYoY2gsIGxvd0NoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2hlY2soY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hlY2sgPSBjb2RlLmlzSWRlbnRpZmllclBhcnRFUzY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlzSWRlbnRpZmllck5hbWVFUzUoaWQpICYmICFpc1Jlc2VydmVkV29yZEVTNShpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaXNJZGVudGlmaWVyTmFtZUVTNihpZCkgJiYgIWlzUmVzZXJ2ZWRXb3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0ge1xuICAgICAgICBpc0tleXdvcmRFUzU6IGlzS2V5d29yZEVTNSxcbiAgICAgICAgaXNLZXl3b3JkRVM2OiBpc0tleXdvcmRFUzYsXG4gICAgICAgIGlzUmVzZXJ2ZWRXb3JkRVM1OiBpc1Jlc2VydmVkV29yZEVTNSxcbiAgICAgICAgaXNSZXNlcnZlZFdvcmRFUzY6IGlzUmVzZXJ2ZWRXb3JkRVM2LFxuICAgICAgICBpc1Jlc3RyaWN0ZWRXb3JkOiBpc1Jlc3RyaWN0ZWRXb3JkLFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM1OiBpc0lkZW50aWZpZXJOYW1lRVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM2OiBpc0lkZW50aWZpZXJOYW1lRVM2LFxuICAgICAgICBpc0lkZW50aWZpZXJFUzU6IGlzSWRlbnRpZmllckVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyRVM2OiBpc0lkZW50aWZpZXJFUzZcbiAgICB9O1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBleHBvcnRzLmFzdCA9IHJlcXVpcmUoJy4vYXN0Jyk7XG4gICAgZXhwb3J0cy5jb2RlID0gcmVxdWlyZSgnLi9jb2RlJyk7XG4gICAgZXhwb3J0cy5rZXl3b3JkID0gcmVxdWlyZSgnLi9rZXl3b3JkJyk7XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCBvYmplY3RDcmVhdGVQb2x5ZmlsbFxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBvYmplY3RLZXlzUG9seWZpbGxcbnZhciBiaW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgZnVuY3Rpb25CaW5kUG9seWZpbGxcblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsICdfZXZlbnRzJykpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxudmFyIGhhc0RlZmluZVByb3BlcnR5O1xudHJ5IHtcbiAgdmFyIG8gPSB7fTtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sICd4JywgeyB2YWx1ZTogMCB9KTtcbiAgaGFzRGVmaW5lUHJvcGVydHkgPSBvLnggPT09IDA7XG59IGNhdGNoIChlcnIpIHsgaGFzRGVmaW5lUHJvcGVydHkgPSBmYWxzZSB9XG5pZiAoaGFzRGVmaW5lUHJvcGVydHkpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgaW5wdXQgaXMgYSBwb3NpdGl2ZSBudW1iZXIgKHdob3NlIHZhbHVlIGlzIHplcm8gb3JcbiAgICAgIC8vIGdyZWF0ZXIgYW5kIG5vdCBhIE5hTikuXG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBhcmcgIT09IGFyZylcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBkZWZhdWx0TWF4TGlzdGVuZXJzO1xufVxuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiblwiIGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiAkZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiAkZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuLy8gVGhlc2Ugc3RhbmRhbG9uZSBlbWl0KiBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gb3B0aW1pemUgY2FsbGluZyBvZiBldmVudFxuLy8gaGFuZGxlcnMgZm9yIGZhc3QgY2FzZXMgYmVjYXVzZSBlbWl0KCkgaXRzZWxmIG9mdGVuIGhhcyBhIHZhcmlhYmxlIG51bWJlciBvZlxuLy8gYXJndW1lbnRzIGFuZCBjYW4gYmUgZGVvcHRpbWl6ZWQgYmVjYXVzZSBvZiB0aGF0LiBUaGVzZSBmdW5jdGlvbnMgYWx3YXlzIGhhdmVcbi8vIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHRodXMgZG8gbm90IGdldCBkZW9wdGltaXplZCwgc28gdGhlIGNvZGVcbi8vIGluc2lkZSB0aGVtIGNhbiBleGVjdXRlIGZhc3Rlci5cbmZ1bmN0aW9uIGVtaXROb25lKGhhbmRsZXIsIGlzRm4sIHNlbGYpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5jYWxsKHNlbGYpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmNhbGwoc2VsZik7XG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRPbmUoaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJnMSkge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZiwgYXJnMSk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmLCBhcmcxKTtcbiAgfVxufVxuZnVuY3Rpb24gZW1pdFR3byhoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmcxLCBhcmcyKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuY2FsbChzZWxmLCBhcmcxLCBhcmcyKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5jYWxsKHNlbGYsIGFyZzEsIGFyZzIpO1xuICB9XG59XG5mdW5jdGlvbiBlbWl0VGhyZWUoaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJnMSwgYXJnMiwgYXJnMykge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZiwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0TWFueShoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmdzKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuYXBwbHkoc2VsZiwgYXJncyk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkoc2VsZiwgYXJncyk7XG4gIH1cbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBldmVudHM7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cylcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09IG51bGwpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSlcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmICghaGFuZGxlcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGlzRm4gPSB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJztcbiAgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgc3dpdGNoIChsZW4pIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICBjYXNlIDE6XG4gICAgICBlbWl0Tm9uZShoYW5kbGVyLCBpc0ZuLCB0aGlzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIGVtaXRPbmUoaGFuZGxlciwgaXNGbiwgdGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIGVtaXRUd28oaGFuZGxlciwgaXNGbiwgdGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgZW1pdFRocmVlKGhhbmRsZXIsIGlzRm4sIHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdLCBhcmd1bWVudHNbM10pO1xuICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICBkZWZhdWx0OlxuICAgICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICBlbWl0TWFueShoYW5kbGVyLCBpc0ZuLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKCFldmVudHMpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmICghZXhpc3RpbmcpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgICAgaWYgKHByZXBlbmQpIHtcbiAgICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIGlmICghZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBtID0gJGdldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgICAgaWYgKG0gJiYgbSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSkge1xuICAgICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgXCInICsgU3RyaW5nKHR5cGUpICsgJ1wiIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQuJyk7XG4gICAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ29iamVjdCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCclczogJXMnLCB3Lm5hbWUsIHcubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsIGFyZ3VtZW50c1swXSk7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKTtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCwgYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sXG4gICAgICAgICAgICBhcmd1bWVudHNbMl0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSlcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gYmluZC5jYWxsKG9uY2VXcmFwcGVyLCBzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKCFldmVudHMpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKCFsaXN0KVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKCFldmVudHMpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoIWV2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IG9iamVjdEtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycykge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoIWV2ZW50cylcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmICghZXZsaXN0ZW5lcilcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID8gdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuLy8gQWJvdXQgMS41eCBmYXN0ZXIgdGhhbiB0aGUgdHdvLWFyZyB2ZXJzaW9uIG9mIEFycmF5I3NwbGljZSgpLlxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAodmFyIGkgPSBpbmRleCwgayA9IGkgKyAxLCBuID0gbGlzdC5sZW5ndGg7IGsgPCBuOyBpICs9IDEsIGsgKz0gMSlcbiAgICBsaXN0W2ldID0gbGlzdFtrXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBvYmplY3RDcmVhdGVQb2x5ZmlsbChwcm90bykge1xuICB2YXIgRiA9IGZ1bmN0aW9uKCkge307XG4gIEYucHJvdG90eXBlID0gcHJvdG87XG4gIHJldHVybiBuZXcgRjtcbn1cbmZ1bmN0aW9uIG9iamVjdEtleXNQb2x5ZmlsbChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIgayBpbiBvYmopIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrKSkge1xuICAgIGtleXMucHVzaChrKTtcbiAgfVxuICByZXR1cm4gaztcbn1cbmZ1bmN0aW9uIGZ1bmN0aW9uQmluZFBvbHlmaWxsKGNvbnRleHQpIHtcbiAgdmFyIGZuID0gdGhpcztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuYWRkcmVzc1xuICovXG5mdW5jdGlvbiBBZGRyZXNzIChmYWtlcikge1xuICB2YXIgZiA9IGZha2VyLmZha2UsXG4gICAgICBIZWxwZXJzID0gZmFrZXIuaGVscGVycztcblxuICAvKipcbiAgICogR2VuZXJhdGVzIHJhbmRvbSB6aXBjb2RlIGZyb20gZm9ybWF0LiBJZiBmb3JtYXQgaXMgbm90IHNwZWNpZmllZCwgdGhlXG4gICAqIGxvY2FsZSdzIHppcCBmb3JtYXQgaXMgdXNlZC5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnppcENvZGVcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgdGhpcy56aXBDb2RlID0gZnVuY3Rpb24oZm9ybWF0KSB7XG4gICAgLy8gaWYgemlwIGZvcm1hdCBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIHppcCBmb3JtYXQgZGVmaW5lZCBmb3IgdGhlIGxvY2FsZVxuICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIGxvY2FsZUZvcm1hdCA9IGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MucG9zdGNvZGU7XG4gICAgICBpZiAodHlwZW9mIGxvY2FsZUZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZm9ybWF0ID0gbG9jYWxlRm9ybWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChsb2NhbGVGb3JtYXQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9scyhmb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJhbmRvbSBsb2NhbGl6ZWQgY2l0eSBuYW1lLiBUaGUgZm9ybWF0IHN0cmluZyBjYW4gY29udGFpbiBhbnlcbiAgICogbWV0aG9kIHByb3ZpZGVkIGJ5IGZha2VyIHdyYXBwZWQgaW4gYHt7fX1gLCBlLmcuIGB7e25hbWUuZmlyc3ROYW1lfX1gIGluXG4gICAqIG9yZGVyIHRvIGJ1aWxkIHRoZSBjaXR5IG5hbWUuXG4gICAqXG4gICAqIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgcmFuZG9tbHkgdXNlZDpcbiAgICogXG4gICAqICogYHt7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fWBcbiAgICogKiBge3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX1gXG4gICAqICogYHt7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX1gXG4gICAqICogYHt7bmFtZS5sYXN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fWBcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNpdHlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgdGhpcy5jaXR5ID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgIHZhciBmb3JtYXRzID0gW1xuICAgICAgJ3t7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fScsXG4gICAgICAne3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX0nLFxuICAgICAgJ3t7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX0nLFxuICAgICAgJ3t7bmFtZS5sYXN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fSdcbiAgICBdO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvcm1hdCA9IGZha2VyLnJhbmRvbS5udW1iZXIoZm9ybWF0cy5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZihmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmFuZG9tIGxvY2FsaXplZCBjaXR5IHByZWZpeFxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY2l0eVByZWZpeFxuICAgKi9cbiAgdGhpcy5jaXR5UHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY2l0eV9wcmVmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJhbmRvbSBsb2NhbGl6ZWQgY2l0eSBzdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNpdHlTdWZmaXhcbiAgICovXG4gIHRoaXMuY2l0eVN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNpdHlfc3VmZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmFuZG9tIGxvY2FsaXplZCBzdHJlZXQgbmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZVxuICAgKi9cbiAgdGhpcy5zdHJlZXROYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHZhciBzdWZmaXggPSBmYWtlci5hZGRyZXNzLnN0cmVldFN1ZmZpeCgpO1xuICAgICAgaWYgKHN1ZmZpeCAhPT0gXCJcIikge1xuICAgICAgICAgIHN1ZmZpeCA9IFwiIFwiICsgc3VmZml4XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZmFrZXIucmFuZG9tLm51bWJlcigxKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJlc3VsdCA9IGZha2VyLm5hbWUubGFzdE5hbWUoKSArIHN1ZmZpeDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXN1bHQgPSBmYWtlci5uYW1lLmZpcnN0TmFtZSgpICsgc3VmZml4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vXG4gIC8vIFRPRE86IGNoYW5nZSBhbGwgdGhlc2UgbWV0aG9kcyB0aGF0IGFjY2VwdCBhIGJvb2xlYW4gdG8gaW5zdGVhZCBhY2NlcHQgYW4gb3B0aW9ucyBoYXNoLlxuICAvL1xuICAvKipcbiAgICogUmV0dXJucyBhIHJhbmRvbSBsb2NhbGl6ZWQgc3RyZWV0IGFkZHJlc3NcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldEFkZHJlc3NcbiAgICogQHBhcmFtIHtCb29sZWFufSB1c2VGdWxsQWRkcmVzc1xuICAgKi9cbiAgdGhpcy5zdHJlZXRBZGRyZXNzID0gZnVuY3Rpb24gKHVzZUZ1bGxBZGRyZXNzKSB7XG4gICAgICBpZiAodXNlRnVsbEFkZHJlc3MgPT09IHVuZGVmaW5lZCkgeyB1c2VGdWxsQWRkcmVzcyA9IGZhbHNlOyB9XG4gICAgICB2YXIgYWRkcmVzcyA9IFwiXCI7XG4gICAgICBzd2l0Y2ggKGZha2VyLnJhbmRvbS5udW1iZXIoMikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjIyMjXCIpICsgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjIyNcIikgKyAgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjI1wiKSArIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXNlRnVsbEFkZHJlc3MgPyAoYWRkcmVzcyArIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCkpIDogYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdHJlZXRTdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldFN1ZmZpeFxuICAgKi9cbiAgdGhpcy5zdHJlZXRTdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0cmVldF9zdWZmaXgpO1xuICB9XG4gIFxuICAvKipcbiAgICogc3RyZWV0UHJlZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdHJlZXRQcmVmaXhcbiAgICovXG4gIHRoaXMuc3RyZWV0UHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5zdHJlZXRfcHJlZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWNvbmRhcnlBZGRyZXNzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzXG4gICAqL1xuICB0aGlzLnNlY29uZGFyeUFkZHJlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFxuICAgICAgICAgIFtcbiAgICAgICAgICAgICAgJ0FwdC4gIyMjJyxcbiAgICAgICAgICAgICAgJ1N1aXRlICMjIydcbiAgICAgICAgICBdXG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3VudHlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNvdW50eVxuICAgKi9cbiAgdGhpcy5jb3VudHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jb3VudHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvdW50cnlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNvdW50cnlcbiAgICovXG4gIHRoaXMuY291bnRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNvdW50cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvdW50cnlDb2RlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jb3VudHJ5Q29kZVxuICAgKi9cbiAgdGhpcy5jb3VudHJ5Q29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNvdW50cnlfY29kZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhdGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0YXRlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdXNlQWJiclxuICAgKi9cbiAgdGhpcy5zdGF0ZSA9IGZ1bmN0aW9uICh1c2VBYmJyKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGF0ZUFiYnJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0YXRlQWJiclxuICAgKi9cbiAgdGhpcy5zdGF0ZUFiYnIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0YXRlX2FiYnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxhdGl0dWRlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5sYXRpdHVkZVxuICAgKi9cbiAgdGhpcy5sYXRpdHVkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoZmFrZXIucmFuZG9tLm51bWJlcigxODAgKiAxMDAwMCkgLyAxMDAwMC4wIC0gOTAuMCkudG9GaXhlZCg0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb25naXR1ZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmxvbmdpdHVkZVxuICAgKi9cbiAgdGhpcy5sb25naXR1ZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKGZha2VyLnJhbmRvbS5udW1iZXIoMzYwICogMTAwMDApIC8gMTAwMDAuMCAtIDE4MC4wKS50b0ZpeGVkKDQpO1xuICB9XG4gIFxuICByZXR1cm4gdGhpcztcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IEFkZHJlc3M7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmNvbW1lcmNlXG4gKi9cbnZhciBDb21tZXJjZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIGNvbG9yXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UuY29sb3JcbiAgICovXG4gIHNlbGYuY29sb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmNvbG9yKTtcbiAgfTtcblxuICAvKipcbiAgICogZGVwYXJ0bWVudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLmRlcGFydG1lbnRcbiAgICovXG4gIHNlbGYuZGVwYXJ0bWVudCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UuZGVwYXJ0bWVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3ROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJvZHVjdE5hbWVcbiAgICovXG4gIHNlbGYucHJvZHVjdE5hbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5jb21tZXJjZS5wcm9kdWN0QWRqZWN0aXZlKCkgKyBcIiBcIiArXG4gICAgICAgICAgICAgIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RNYXRlcmlhbCgpICsgXCIgXCIgK1xuICAgICAgICAgICAgICBmYWtlci5jb21tZXJjZS5wcm9kdWN0KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByaWNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJpY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pblxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbFxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBzZWxmLnByaWNlID0gZnVuY3Rpb24obWluLCBtYXgsIGRlYywgc3ltYm9sKSB7XG4gICAgICBtaW4gPSBtaW4gfHwgMDtcbiAgICAgIG1heCA9IG1heCB8fCAxMDAwO1xuICAgICAgZGVjID0gZGVjID09PSB1bmRlZmluZWQgPyAyIDogZGVjO1xuICAgICAgc3ltYm9sID0gc3ltYm9sIHx8ICcnO1xuXG4gICAgICBpZiAobWluIDwgMCB8fCBtYXggPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIHN5bWJvbCArIDAuMDA7XG4gICAgICB9XG5cbiAgICAgIHZhciByYW5kVmFsdWUgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBtYXgsIG1pbjogbWluIH0pO1xuXG4gICAgICByZXR1cm4gc3ltYm9sICsgKE1hdGgucm91bmQocmFuZFZhbHVlICogTWF0aC5wb3coMTAsIGRlYykpIC8gTWF0aC5wb3coMTAsIGRlYykpLnRvRml4ZWQoZGVjKTtcbiAgfTtcblxuICAvKlxuICBzZWxmLmNhdGVnb3JpZXMgPSBmdW5jdGlvbihudW0pIHtcbiAgICAgIHZhciBjYXRlZ29yaWVzID0gW107XG5cbiAgICAgIGRvIHtcbiAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmRlcGFydG1lbnQpO1xuICAgICAgICAgIGlmKGNhdGVnb3JpZXMuaW5kZXhPZihjYXRlZ29yeSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XG4gICAgICAgICAgfVxuICAgICAgfSB3aGlsZShjYXRlZ29yaWVzLmxlbmd0aCA8IG51bSk7XG5cbiAgICAgIHJldHVybiBjYXRlZ29yaWVzO1xuICB9O1xuXG4gICovXG4gIC8qXG4gIHNlbGYubWVyZ2VDYXRlZ29yaWVzID0gZnVuY3Rpb24oY2F0ZWdvcmllcykge1xuICAgICAgdmFyIHNlcGFyYXRvciA9IGZha2VyLmRlZmluaXRpb25zLnNlcGFyYXRvciB8fCBcIiAmXCI7XG4gICAgICAvLyBUT0RPOiBmaW5kIHVuZGVmaW5lZCBoZXJlXG4gICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcyB8fCBmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5jYXRlZ29yaWVzO1xuICAgICAgdmFyIGNvbW1hU2VwYXJhdGVkID0gY2F0ZWdvcmllcy5zbGljZSgwLCAtMSkuam9pbignLCAnKTtcblxuICAgICAgcmV0dXJuIFtjb21tYVNlcGFyYXRlZCwgY2F0ZWdvcmllc1tjYXRlZ29yaWVzLmxlbmd0aCAtIDFdXS5qb2luKHNlcGFyYXRvciArIFwiIFwiKTtcbiAgfTtcbiAgKi9cblxuICAvKipcbiAgICogcHJvZHVjdEFkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RBZGplY3RpdmVcbiAgICovXG4gIHNlbGYucHJvZHVjdEFkamVjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UucHJvZHVjdF9uYW1lLmFkamVjdGl2ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3RNYXRlcmlhbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RNYXRlcmlhbFxuICAgKi9cbiAgc2VsZi5wcm9kdWN0TWF0ZXJpYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLnByb2R1Y3RfbmFtZS5tYXRlcmlhbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3RcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcm9kdWN0XG4gICAqL1xuICBzZWxmLnByb2R1Y3QgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLnByb2R1Y3RfbmFtZS5wcm9kdWN0KTtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gQ29tbWVyY2U7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmNvbXBhbnlcbiAqL1xudmFyIENvbXBhbnkgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGYgPSBmYWtlci5mYWtlO1xuICBcbiAgLyoqXG4gICAqIHN1ZmZpeGVzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5zdWZmaXhlc1xuICAgKi9cbiAgdGhpcy5zdWZmaXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBEb24ndCB3YW50IHRoZSBzb3VyY2UgYXJyYXkgZXhwb3NlZCB0byBtb2RpZmljYXRpb24sIHNvIHJldHVybiBhIGNvcHlcbiAgICByZXR1cm4gZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5zdWZmaXguc2xpY2UoMCk7XG4gIH1cblxuICAvKipcbiAgICogY29tcGFueU5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICovXG4gIHRoaXMuY29tcGFueU5hbWUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG5cbiAgICB2YXIgZm9ybWF0cyA9IFtcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSB7e2NvbXBhbnkuY29tcGFueVN1ZmZpeH19JyxcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSAtIHt7bmFtZS5sYXN0TmFtZX19JyxcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSwge3tuYW1lLmxhc3ROYW1lfX0gYW5kIHt7bmFtZS5sYXN0TmFtZX19J1xuICAgIF07XG5cbiAgICBpZiAodHlwZW9mIGZvcm1hdCAhPT0gXCJudW1iZXJcIikge1xuICAgICAgZm9ybWF0ID0gZmFrZXIucmFuZG9tLm51bWJlcihmb3JtYXRzLmxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBmKGZvcm1hdHNbZm9ybWF0XSk7XG4gIH1cblxuICAvKipcbiAgICogY29tcGFueVN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY29tcGFueVN1ZmZpeFxuICAgKi9cbiAgdGhpcy5jb21wYW55U3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuY29tcGFueS5zdWZmaXhlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VcbiAgICovXG4gIHRoaXMuY2F0Y2hQaHJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGYoJ3t7Y29tcGFueS5jYXRjaFBocmFzZUFkamVjdGl2ZX19IHt7Y29tcGFueS5jYXRjaFBocmFzZURlc2NyaXB0b3J9fSB7e2NvbXBhbnkuY2F0Y2hQaHJhc2VOb3VufX0nKVxuICB9XG5cbiAgLyoqXG4gICAqIGJzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic1xuICAgKi9cbiAgdGhpcy5icyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZigne3tjb21wYW55LmJzQWRqZWN0aXZlfX0ge3tjb21wYW55LmJzQnV6en19IHt7Y29tcGFueS5ic05vdW59fScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlQWRqZWN0aXZlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZUFkamVjdGl2ZVxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZUFkamVjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYWRqZWN0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZURlc2NyaXB0b3JcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlRGVzY3JpcHRvclxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZURlc2NyaXB0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmRlc2NyaXB0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlTm91blxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VOb3VuXG4gICAqL1xuICB0aGlzLmNhdGNoUGhyYXNlTm91biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkubm91bik7XG4gIH1cblxuICAvKipcbiAgICogYnNBZGplY3RpdmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmJzQWRqZWN0aXZlXG4gICAqL1xuICB0aGlzLmJzQWRqZWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ic19hZGplY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIGJzQnV6elxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuYnNCdXp6XG4gICAqL1xuICB0aGlzLmJzQnV6eiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYnNfdmVyYik7XG4gIH1cblxuICAvKipcbiAgICogYnNOb3VuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic05vdW5cbiAgICovXG4gIHRoaXMuYnNOb3VuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ic19ub3VuKTtcbiAgfVxuICBcbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBDb21wYW55OyIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuZGF0YWJhc2VcbiAqL1xudmFyIERhdGFiYXNlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIGNvbHVtblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLmNvbHVtblxuICAgKi9cbiAgc2VsZi5jb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5kYXRhYmFzZS5jb2x1bW4pO1xuICB9O1xuXG4gIHNlbGYuY29sdW1uLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgY29sdW1uIG5hbWUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImlkXCIsIFwidGl0bGVcIiwgXCJjcmVhdGVkQXRcIl1cbiAgfTtcblxuICAvKipcbiAgICogdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLnR5cGVcbiAgICovXG4gIHNlbGYudHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLnR5cGUpO1xuICB9O1xuXG4gIHNlbGYudHlwZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIGNvbHVtbiB0eXBlLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJieXRlXCIsIFwiaW50XCIsIFwidmFyY2hhclwiLCBcInRpbWVzdGFtcFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBjb2xsYXRpb25cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRhYmFzZS5jb2xsYXRpb25cbiAgICovXG4gIHNlbGYuY29sbGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZGF0YWJhc2UuY29sbGF0aW9uKTtcbiAgfTtcblxuICBzZWxmLmNvbGxhdGlvbi5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIGNvbGxhdGlvbi5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1widXRmOF91bmljb2RlX2NpXCIsIFwidXRmOF9iaW5cIl1cbiAgfTtcblxuICAvKipcbiAgICogZW5naW5lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0YWJhc2UuZW5naW5lXG4gICAqL1xuICBzZWxmLmVuZ2luZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLmVuZ2luZSk7XG4gIH07XG5cbiAgc2VsZi5lbmdpbmUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBzdG9yYWdlIGVuZ2luZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiTXlJU0FNXCIsIFwiSW5ub0RCXCJdXG4gIH07XG59O1xuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gRGF0YWJhc2U7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmRhdGVcbiAqL1xudmFyIF9EYXRlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIHBhc3RcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLnBhc3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHllYXJzXG4gICAqIEBwYXJhbSB7ZGF0ZX0gcmVmRGF0ZVxuICAgKi9cbiAgc2VsZi5wYXN0ID0gZnVuY3Rpb24gKHllYXJzLCByZWZEYXRlKSB7XG4gICAgICB2YXIgZGF0ZSA9IChyZWZEYXRlKSA/IG5ldyBEYXRlKERhdGUucGFyc2UocmVmRGF0ZSkpIDogbmV3IERhdGUoKTtcbiAgICAgIHZhciByYW5nZSA9IHtcbiAgICAgICAgbWluOiAxMDAwLFxuICAgICAgICBtYXg6ICh5ZWFycyB8fCAxKSAqIDM2NSAqIDI0ICogMzYwMCAqIDEwMDBcbiAgICAgIH07XG5cbiAgICAgIHZhciBwYXN0ID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICBwYXN0IC09IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiB5ZWFycyBhZ28sIGluIG1pbGxpc2Vjb25kc1xuICAgICAgZGF0ZS5zZXRUaW1lKHBhc3QpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogZnV0dXJlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5mdXR1cmVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHllYXJzXG4gICAqIEBwYXJhbSB7ZGF0ZX0gcmVmRGF0ZVxuICAgKi9cbiAgc2VsZi5mdXR1cmUgPSBmdW5jdGlvbiAoeWVhcnMsIHJlZkRhdGUpIHtcbiAgICAgIHZhciBkYXRlID0gKHJlZkRhdGUpID8gbmV3IERhdGUoRGF0ZS5wYXJzZShyZWZEYXRlKSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgdmFyIHJhbmdlID0ge1xuICAgICAgICBtaW46IDEwMDAsXG4gICAgICAgIG1heDogKHllYXJzIHx8IDEpICogMzY1ICogMjQgKiAzNjAwICogMTAwMFxuICAgICAgfTtcblxuICAgICAgdmFyIGZ1dHVyZSA9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgZnV0dXJlICs9IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiB5ZWFycyBsYXRlciwgaW4gbWlsbGlzZWNvbmRzXG4gICAgICBkYXRlLnNldFRpbWUoZnV0dXJlKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGJldHdlZW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLmJldHdlZW5cbiAgICogQHBhcmFtIHtkYXRlfSBmcm9tXG4gICAqIEBwYXJhbSB7ZGF0ZX0gdG9cbiAgICovXG4gIHNlbGYuYmV0d2VlbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgICAgdmFyIGZyb21NaWxsaSA9IERhdGUucGFyc2UoZnJvbSk7XG4gICAgICB2YXIgZGF0ZU9mZnNldCA9IGZha2VyLnJhbmRvbS5udW1iZXIoRGF0ZS5wYXJzZSh0bykgLSBmcm9tTWlsbGkpO1xuXG4gICAgICB2YXIgbmV3RGF0ZSA9IG5ldyBEYXRlKGZyb21NaWxsaSArIGRhdGVPZmZzZXQpO1xuXG4gICAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogcmVjZW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5yZWNlbnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRheXNcbiAgICovXG4gIHNlbGYucmVjZW50ID0gZnVuY3Rpb24gKGRheXMpIHtcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIHZhciByYW5nZSA9IHtcbiAgICAgICAgbWluOiAxMDAwLFxuICAgICAgICBtYXg6IChkYXlzIHx8IDEpICogMjQgKiAzNjAwICogMTAwMFxuICAgICAgfTtcblxuICAgICAgdmFyIGZ1dHVyZSA9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgZnV0dXJlIC09IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiBkYXlzIGFnbywgaW4gbWlsbGlzZWNvbmRzXG4gICAgICBkYXRlLnNldFRpbWUoZnV0dXJlKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIG1vbnRoXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5tb250aFxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgc2VsZi5tb250aCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgdmFyIHR5cGUgPSAnd2lkZSc7XG4gICAgICBpZiAob3B0aW9ucy5hYmJyKSB7XG4gICAgICAgICAgdHlwZSA9ICdhYmJyJztcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLmRhdGUubW9udGhbdHlwZSArICdfY29udGV4dCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHR5cGUgKz0gJ19jb250ZXh0JztcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IGZha2VyLmRlZmluaXRpb25zLmRhdGUubW9udGhbdHlwZV07XG5cbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHNvdXJjZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHdlZWtkYXlcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLndlZWtkYXlcbiAgICovXG4gIHNlbGYud2Vla2RheSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgdmFyIHR5cGUgPSAnd2lkZSc7XG4gICAgICBpZiAob3B0aW9ucy5hYmJyKSB7XG4gICAgICAgICAgdHlwZSA9ICdhYmJyJztcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLmRhdGUud2Vla2RheVt0eXBlICsgJ19jb250ZXh0J10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdHlwZSArPSAnX2NvbnRleHQnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gZmFrZXIuZGVmaW5pdGlvbnMuZGF0ZS53ZWVrZGF5W3R5cGVdO1xuXG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChzb3VyY2UpO1xuICB9O1xuICBcbiAgcmV0dXJuIHNlbGY7XG4gIFxufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBfRGF0ZTsiLCIvKlxuICBmYWtlLmpzIC0gZ2VuZXJhdG9yIG1ldGhvZCBmb3IgY29tYmluaW5nIGZha2VyIG1ldGhvZHMgYmFzZWQgb24gc3RyaW5nIGlucHV0XG5cbiovXG5cbmZ1bmN0aW9uIEZha2UgKGZha2VyKSB7XG4gIFxuICAvKipcbiAgICogR2VuZXJhdG9yIG1ldGhvZCBmb3IgY29tYmluaW5nIGZha2VyIG1ldGhvZHMgYmFzZWQgb24gc3RyaW5nIGlucHV0XG4gICAqXG4gICAqIF9fRXhhbXBsZTpfX1xuICAgKlxuICAgKiBgYGBcbiAgICogY29uc29sZS5sb2coZmFrZXIuZmFrZSgne3tuYW1lLmxhc3ROYW1lfX0sIHt7bmFtZS5maXJzdE5hbWV9fSB7e25hbWUuc3VmZml4fX0nKSk7XG4gICAqIC8vb3V0cHV0czogXCJNYXJrcywgRGVhbiBTci5cIlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyB3aWxsIGludGVycG9sYXRlIHRoZSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIHZhbHVlIG9mIG1ldGhvZHNcbiAgICogW25hbWUubGFzdE5hbWVde0BsaW5rIGZha2VyLm5hbWUubGFzdE5hbWV9LCBbbmFtZS5maXJzdE5hbWVde0BsaW5rIGZha2VyLm5hbWUuZmlyc3ROYW1lfSxcbiAgICogYW5kIFtuYW1lLnN1ZmZpeF17QGxpbmsgZmFrZXIubmFtZS5zdWZmaXh9XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmFrZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAqL1xuICB0aGlzLmZha2UgPSBmdW5jdGlvbiBmYWtlIChzdHIpIHtcbiAgICAvLyBzZXR1cCBkZWZhdWx0IHJlc3BvbnNlIGFzIGVtcHR5IHN0cmluZ1xuICAgIHZhciByZXMgPSAnJztcblxuICAgIC8vIGlmIGluY29taW5nIHN0ciBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCByZXR1cm4gZXJyb3IgbWVzc2FnZVxuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXMgPSAnc3RyaW5nIHBhcmFtZXRlciBpcyByZXF1aXJlZCEnO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBmaW5kIGZpcnN0IG1hdGNoaW5nIHt7IGFuZCB9fVxuICAgIHZhciBzdGFydCA9IHN0ci5zZWFyY2goJ3t7Jyk7XG4gICAgdmFyIGVuZCA9IHN0ci5zZWFyY2goJ319Jyk7XG5cbiAgICAvLyBpZiBubyB7eyBhbmQgfX0gaXMgZm91bmQsIHdlIGFyZSBkb25lXG4gICAgaWYgKHN0YXJ0ID09PSAtMSAmJiBlbmQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKCdhdHRlbXB0aW5nIHRvIHBhcnNlJywgc3RyKTtcblxuICAgIC8vIGV4dHJhY3QgbWV0aG9kIG5hbWUgZnJvbSBiZXR3ZWVuIHRoZSB7eyB9fSB0aGF0IHdlIGZvdW5kXG4gICAgLy8gZm9yIGV4YW1wbGU6IHt7bmFtZS5maXJzdE5hbWV9fVxuICAgIHZhciB0b2tlbiA9IHN0ci5zdWJzdHIoc3RhcnQgKyAyLCAgZW5kIC0gc3RhcnQgLSAyKTtcbiAgICB2YXIgbWV0aG9kID0gdG9rZW4ucmVwbGFjZSgnfX0nLCAnJykucmVwbGFjZSgne3snLCAnJyk7XG5cbiAgICAvLyBjb25zb2xlLmxvZygnbWV0aG9kJywgbWV0aG9kKVxuXG4gICAgLy8gZXh0cmFjdCBtZXRob2QgcGFyYW1ldGVyc1xuICAgIHZhciByZWdFeHAgPSAvXFwoKFteKV0rKVxcKS87XG4gICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyhtZXRob2QpO1xuICAgIHZhciBwYXJhbWV0ZXJzID0gJyc7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIG1ldGhvZCA9IG1ldGhvZC5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuICAgICAgcGFyYW1ldGVycyA9IG1hdGNoZXNbMV07XG4gICAgfVxuXG4gICAgLy8gc3BsaXQgdGhlIG1ldGhvZCBpbnRvIG1vZHVsZSBhbmQgZnVuY3Rpb25cbiAgICB2YXIgcGFydHMgPSBtZXRob2Quc3BsaXQoJy4nKTtcblxuICAgIGlmICh0eXBlb2YgZmFrZXJbcGFydHNbMF1dID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlOiAnICsgcGFydHNbMF0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmFrZXJbcGFydHNbMF1dW3BhcnRzWzFdXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1ldGhvZDogJyArIHBhcnRzWzBdICsgXCIuXCIgKyBwYXJ0c1sxXSk7XG4gICAgfVxuXG4gICAgLy8gYXNzaWduIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUuZnVuY3Rpb24gbmFtZXNwYWNlXG4gICAgdmFyIGZuID0gZmFrZXJbcGFydHNbMF1dW3BhcnRzWzFdXTtcblxuICAgIC8vIElmIHBhcmFtZXRlcnMgYXJlIHBvcHVsYXRlZCBoZXJlLCB0aGV5IGFyZSBhbHdheXMgZ29pbmcgdG8gYmUgb2Ygc3RyaW5nIHR5cGVcbiAgICAvLyBzaW5jZSB3ZSBtaWdodCBhY3R1YWxseSBiZSBkZWFsaW5nIHdpdGggYW4gb2JqZWN0IG9yIGFycmF5LFxuICAgIC8vIHdlIGFsd2F5cyBhdHRlbXB0IHRvIHRoZSBwYXJzZSB0aGUgaW5jb21pbmcgcGFyYW1ldGVycyBpbnRvIEpTT05cbiAgICB2YXIgcGFyYW1zO1xuICAgIC8vIE5vdGU6IHdlIGV4cGVyaWVuY2UgYSBzbWFsbCBwZXJmb3JtYW5jZSBoaXQgaGVyZSBkdWUgdG8gSlNPTi5wYXJzZSB0cnkgLyBjYXRjaFxuICAgIC8vIElmIGFueW9uZSBhY3R1YWxseSBuZWVkcyB0byBvcHRpbWl6ZSB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCwgcGxlYXNlIG9wZW4gYSBzdXBwb3J0IGlzc3VlIG9uIGdpdGh1YlxuICAgIHRyeSB7XG4gICAgICBwYXJhbXMgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBzaW5jZSBKU09OLnBhcnNlIHRocmV3IGFuIGVycm9yLCBhc3N1bWUgcGFyYW1ldGVycyB3YXMgYWN0dWFsbHkgYSBzdHJpbmdcbiAgICAgIHBhcmFtcyA9IHBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIiAmJiBwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSBmbi5jYWxsKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBmbi5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLy8gcmVwbGFjZSB0aGUgZm91bmQgdGFnIHdpdGggdGhlIHJldHVybmVkIGZha2UgdmFsdWVcbiAgICByZXMgPSBzdHIucmVwbGFjZSgne3snICsgdG9rZW4gKyAnfX0nLCByZXN1bHQpO1xuXG4gICAgLy8gcmV0dXJuIHRoZSByZXNwb25zZSByZWN1cnNpdmVseSB1bnRpbCB3ZSBhcmUgZG9uZSBmaW5kaW5nIGFsbCB0YWdzXG4gICAgcmV0dXJuIGZha2UocmVzKTsgICAgXG4gIH1cbiAgXG4gIHJldHVybiB0aGlzO1xuICBcbiAgXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gRmFrZTsiLCIvKipcbiAqIEBuYW1lc3BhY2UgZmFrZXIuZmluYW5jZVxuICovXG52YXIgRmluYW5jZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgaWJhbkxpYiA9IHJlcXVpcmUoXCIuL2liYW5cIik7XG4gIHZhciBIZWxwZXJzID0gZmFrZXIuaGVscGVycyxcbiAgICAgIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBhY2NvdW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hY2NvdW50XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAgICovXG4gIHNlbGYuYWNjb3VudCA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcblxuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHx8IDg7XG5cbiAgICAgIHZhciB0ZW1wbGF0ZSA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSArICcjJztcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG51bGw7XG4gICAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcih0ZW1wbGF0ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFjY291bnROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hY2NvdW50TmFtZVxuICAgKi9cbiAgc2VsZi5hY2NvdW50TmFtZSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgcmV0dXJuIFtIZWxwZXJzLnJhbmRvbWl6ZShmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmFjY291bnRfdHlwZSksICdBY2NvdW50J10uam9pbignICcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtYXNrXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5tYXNrXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAgICogQHBhcmFtIHtib29sZWFufSBwYXJlbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbGxpcHNpc1xuICAgKi9cbiAgc2VsZi5tYXNrID0gZnVuY3Rpb24gKGxlbmd0aCwgcGFyZW5zLCBlbGxpcHNpcykge1xuXG4gICAgICAvL3NldCBkZWZhdWx0c1xuICAgICAgbGVuZ3RoID0gKGxlbmd0aCA9PSAwIHx8ICFsZW5ndGggfHwgdHlwZW9mIGxlbmd0aCA9PSAndW5kZWZpbmVkJykgPyA0IDogbGVuZ3RoO1xuICAgICAgcGFyZW5zID0gKHBhcmVucyA9PT0gbnVsbCkgPyB0cnVlIDogcGFyZW5zO1xuICAgICAgZWxsaXBzaXMgPSAoZWxsaXBzaXMgPT09IG51bGwpID8gdHJ1ZSA6IGVsbGlwc2lzO1xuXG4gICAgICAvL2NyZWF0ZSBhIHRlbXBsYXRlIGZvciBsZW5ndGhcbiAgICAgIHZhciB0ZW1wbGF0ZSA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSArICcjJztcbiAgICAgIH1cblxuICAgICAgLy9wcmVmaXggd2l0aCBlbGxpcHNpc1xuICAgICAgdGVtcGxhdGUgPSAoZWxsaXBzaXMpID8gWycuLi4nLCB0ZW1wbGF0ZV0uam9pbignJykgOiB0ZW1wbGF0ZTtcblxuICAgICAgdGVtcGxhdGUgPSAocGFyZW5zKSA/IFsnKCcsIHRlbXBsYXRlLCAnKSddLmpvaW4oJycpIDogdGVtcGxhdGU7XG5cbiAgICAgIC8vZ2VuZXJhdGUgcmFuZG9tIG51bWJlcnNcbiAgICAgIHRlbXBsYXRlID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcih0ZW1wbGF0ZSk7XG5cbiAgICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfTtcblxuICAvL21pbiBhbmQgbWF4IHRha2UgaW4gbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnRzLCBkZWMgaXMgdGhlIGRlY2ltYWwgcGxhY2UgeW91IHdhbnQgcm91bmRlZCB0bywgc3ltYm9sIGlzICQsIOKCrCwgwqMsIGV0Y1xuICAvL05PVEU6IHRoaXMgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUsIGlmIHlvdSB3YW50IGEgbnVtYmVyIHVzZSBwYXJzZUZsb2F0IGFuZCBubyBzeW1ib2xcblxuICAvKipcbiAgICogYW1vdW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hbW91bnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pblxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbFxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBzZWxmLmFtb3VudCA9IGZ1bmN0aW9uIChtaW4sIG1heCwgZGVjLCBzeW1ib2wpIHtcblxuICAgICAgbWluID0gbWluIHx8IDA7XG4gICAgICBtYXggPSBtYXggfHwgMTAwMDtcbiAgICAgIGRlYyA9IGRlYyA9PT0gdW5kZWZpbmVkID8gMiA6IGRlYztcbiAgICAgIHN5bWJvbCA9IHN5bWJvbCB8fCAnJztcbiAgICAgIHZhciByYW5kVmFsdWUgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBtYXgsIG1pbjogbWluLCBwcmVjaXNpb246IE1hdGgucG93KDEwLCAtZGVjKSB9KTtcblxuICAgICAgcmV0dXJuIHN5bWJvbCArIHJhbmRWYWx1ZS50b0ZpeGVkKGRlYyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHRyYW5zYWN0aW9uVHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UudHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBzZWxmLnRyYW5zYWN0aW9uVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBIZWxwZXJzLnJhbmRvbWl6ZShmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLnRyYW5zYWN0aW9uX3R5cGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjdXJyZW5jeUNvZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmN1cnJlbmN5Q29kZVxuICAgKi9cbiAgc2VsZi5jdXJyZW5jeUNvZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS5jdXJyZW5jeSlbJ2NvZGUnXTtcbiAgfTtcblxuICAvKipcbiAgICogY3VycmVuY3lOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5jdXJyZW5jeU5hbWVcbiAgICovXG4gIHNlbGYuY3VycmVuY3lOYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5vYmplY3RFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UuY3VycmVuY3ksICdrZXknKTtcbiAgfTtcblxuICAvKipcbiAgICogY3VycmVuY3lTeW1ib2xcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmN1cnJlbmN5U3ltYm9sXG4gICAqL1xuICBzZWxmLmN1cnJlbmN5U3ltYm9sID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN5bWJvbDtcblxuICAgICAgd2hpbGUgKCFzeW1ib2wpIHtcbiAgICAgICAgICBzeW1ib2wgPSBmYWtlci5yYW5kb20ub2JqZWN0RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmN1cnJlbmN5KVsnc3ltYm9sJ107XG4gICAgICB9XG4gICAgICByZXR1cm4gc3ltYm9sO1xuICB9O1xuXG4gIC8qKlxuICAgKiBiaXRjb2luQWRkcmVzc1xuICAgKlxuICAgKiBAbWV0aG9kICBmYWtlci5maW5hbmNlLmJpdGNvaW5BZGRyZXNzXG4gICAqL1xuICBzZWxmLmJpdGNvaW5BZGRyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhZGRyZXNzTGVuZ3RoID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMjcsIG1heDogMzQgfSk7XG5cbiAgICB2YXIgYWRkcmVzcyA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoWycxJywgJzMnXSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZHJlc3NMZW5ndGggLSAxOyBpKyspXG4gICAgICBhZGRyZXNzICs9IGZha2VyLnJhbmRvbS5hbHBoYU51bWVyaWMoKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGFkZHJlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIGliYW5cbiAgICpcbiAgICogQG1ldGhvZCAgZmFrZXIuZmluYW5jZS5pYmFuXG4gICAqL1xuICBzZWxmLmliYW4gPSBmdW5jdGlvbiAoZm9ybWF0dGVkKSB7XG4gICAgICB2YXIgaWJhbkZvcm1hdCA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5mb3JtYXRzKTtcbiAgICAgIHZhciBzID0gXCJcIjtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3IgKHZhciBiID0gMDsgYiA8IGliYW5Gb3JtYXQuYmJhbi5sZW5ndGg7IGIrKykge1xuICAgICAgICAgIHZhciBiYmFuID0gaWJhbkZvcm1hdC5iYmFuW2JdO1xuICAgICAgICAgIHZhciBjID0gYmJhbi5jb3VudDtcbiAgICAgICAgICBjb3VudCArPSBiYmFuLmNvdW50O1xuICAgICAgICAgIHdoaWxlIChjID4gMCkge1xuICAgICAgICAgICAgICBpZiAoYmJhbi50eXBlID09IFwiYVwiKSB7XG4gICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5hbHBoYSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmJhbi50eXBlID09IFwiY1wiKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmFrZXIucmFuZG9tLm51bWJlcigxMDApIDwgODApIHtcbiAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5udW1iZXIoOSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmFscGhhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGlmIChjID49IDMgJiYgZmFrZXIucmFuZG9tLm51bWJlcigxMDApIDwgMzApIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFrZXIucmFuZG9tLmJvb2xlYW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5wYXR0ZXJuMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAyO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLnBhdHRlcm4xMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMtLTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjLS07XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBjb3VudCk7XG4gICAgICB9XG4gICAgICB2YXIgY2hlY2tzdW0gPSA5OCAtIGliYW5MaWIubW9kOTcoaWJhbkxpYi50b0RpZ2l0U3RyaW5nKHMgKyBpYmFuRm9ybWF0LmNvdW50cnkgKyBcIjAwXCIpKTtcbiAgICAgIGlmIChjaGVja3N1bSA8IDEwKSB7XG4gICAgICAgICAgY2hlY2tzdW0gPSBcIjBcIiArIGNoZWNrc3VtO1xuICAgICAgfVxuICAgICAgdmFyIGliYW4gPSBpYmFuRm9ybWF0LmNvdW50cnkgKyBjaGVja3N1bSArIHM7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkID8gaWJhbi5tYXRjaCgvLnsxLDR9L2cpLmpvaW4oXCIgXCIpIDogaWJhbjtcbiAgfTtcblxuICAvKipcbiAgICogYmljXG4gICAqXG4gICAqIEBtZXRob2QgIGZha2VyLmZpbmFuY2UuYmljXG4gICAqL1xuICBzZWxmLmJpYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2b3dlbHMgPSBbXCJBXCIsIFwiRVwiLCBcIklcIiwgXCJPXCIsIFwiVVwiXTtcbiAgICAgIHZhciBwcm9iID0gZmFrZXIucmFuZG9tLm51bWJlcigxMDApO1xuICAgICAgcmV0dXJuIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoXCI/Pz9cIikgK1xuICAgICAgICAgIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodm93ZWxzKSArXG4gICAgICAgICAgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmlzbzMxNjYpICtcbiAgICAgICAgICBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKFwiP1wiKSArIFwiMVwiICtcbiAgICAgICAgICAocHJvYiA8IDEwID9cbiAgICAgICAgICAgICAgSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIj9cIiArIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodm93ZWxzKSArIFwiP1wiKSA6XG4gICAgICAgICAgcHJvYiA8IDQwID9cbiAgICAgICAgICAgICAgSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIiMjI1wiKSA6IFwiXCIpO1xuICB9O1xufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBGaW5hbmNlO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5oYWNrZXJcbiAqL1xudmFyIEhhY2tlciA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIFxuICAvKipcbiAgICogYWJicmV2aWF0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLmFiYnJldmlhdGlvblxuICAgKi9cbiAgc2VsZi5hYmJyZXZpYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLmFiYnJldmlhdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5hZGplY3RpdmVcbiAgICovXG4gIHNlbGYuYWRqZWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci5hZGplY3RpdmUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBub3VuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLm5vdW5cbiAgICovXG4gIHNlbGYubm91biA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIubm91bik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHZlcmJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIudmVyYlxuICAgKi9cbiAgc2VsZi52ZXJiID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci52ZXJiKTtcbiAgfTtcblxuICAvKipcbiAgICogaW5ndmVyYlxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5pbmd2ZXJiXG4gICAqL1xuICBzZWxmLmluZ3ZlcmIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLmluZ3ZlcmIpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwaHJhc2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIucGhyYXNlXG4gICAqL1xuICBzZWxmLnBocmFzZSA9IGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgYWJicmV2aWF0aW9uOiBzZWxmLmFiYnJldmlhdGlvbixcbiAgICAgIGFkamVjdGl2ZTogc2VsZi5hZGplY3RpdmUsXG4gICAgICBpbmd2ZXJiOiBzZWxmLmluZ3ZlcmIsXG4gICAgICBub3VuOiBzZWxmLm5vdW4sXG4gICAgICB2ZXJiOiBzZWxmLnZlcmJcbiAgICB9O1xuXG4gICAgdmFyIHBocmFzZSA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoWyBcIklmIHdlIHt7dmVyYn19IHRoZSB7e25vdW59fSwgd2UgY2FuIGdldCB0byB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSB0aHJvdWdoIHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcIldlIG5lZWQgdG8ge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiVHJ5IHRvIHt7dmVyYn19IHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19LCBtYXliZSBpdCB3aWxsIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7bm91bn19IVwiLFxuICAgICAgXCJZb3UgY2FuJ3Qge3t2ZXJifX0gdGhlIHt7bm91bn19IHdpdGhvdXQge3tpbmd2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiVXNlIHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0sIHRoZW4geW91IGNhbiB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e25vdW59fSFcIixcbiAgICAgIFwiVGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0gaXMgZG93biwge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3tub3VufX0gc28gd2UgY2FuIHt7dmVyYn19IHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJ7e2luZ3ZlcmJ9fSB0aGUge3tub3VufX0gd29uJ3QgZG8gYW55dGhpbmcsIHdlIG5lZWQgdG8ge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiSSdsbCB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19LCB0aGF0IHNob3VsZCB7e25vdW59fSB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIlxuICAgXSk7XG5cbiAgIHJldHVybiBmYWtlci5oZWxwZXJzLm11c3RhY2hlKHBocmFzZSwgZGF0YSk7XG5cbiAgfTtcbiAgXG4gIHJldHVybiBzZWxmO1xufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBIYWNrZXI7IiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5oZWxwZXJzXG4gKi9cbnZhciBIZWxwZXJzID0gZnVuY3Rpb24gKGZha2VyKSB7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBiYWNrd29yZC1jb21wYXRpYmlsaXR5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5yYW5kb21pemVcbiAgICogQHBhcmFtIHthcnJheX0gYXJyYXlcbiAgICovXG4gIHNlbGYucmFuZG9taXplID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICBhcnJheSA9IGFycmF5IHx8IFtcImFcIiwgXCJiXCIsIFwiY1wiXTtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGFycmF5KTtcbiAgfTtcblxuICAvKipcbiAgICogc2x1Z2lmaWVzIHN0cmluZ1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuc2x1Z2lmeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gICAqL1xuICBzZWxmLnNsdWdpZnkgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvIC9nLCAnLScpLnJlcGxhY2UoL1teXFx3XFwuXFwtXSsvZywgJycpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJzZXMgc3RyaW5nIGZvciBhIHN5bWJvbCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgcmFuZG9tIG51bWJlciBmcm9tIDEtMTBcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBkZWZhdWx0cyB0byBgXCIjXCJgXG4gICAqL1xuICBzZWxmLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyID0gZnVuY3Rpb24gKHN0cmluZywgc3ltYm9sKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIC8vIGRlZmF1bHQgc3ltYm9sIGlzICcjJ1xuICAgICAgaWYgKHN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3ltYm9sID0gJyMnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RyID0gJyc7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09IHN5bWJvbCkge1xuICAgICAgICAgICAgICBzdHIgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHIgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJzZXMgc3RyaW5nIGZvciBzeW1ib2xzIChudW1iZXJzIG9yIGxldHRlcnMpIGFuZCByZXBsYWNlcyB0aGVtIGFwcHJvcHJpYXRlbHlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICovXG4gIHNlbGYucmVwbGFjZVN5bWJvbHMgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIHZhciBhbHBoYSA9IFsnQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsJ04nLCdPJywnUCcsJ1EnLCdSJywnUycsJ1QnLCdVJywnVicsJ1cnLCdYJywnWScsJ1onXVxuICAgICAgdmFyIHN0ciA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09IFwiI1wiKSB7XG4gICAgICAgICAgICAgIHN0ciArPSBmYWtlci5yYW5kb20ubnVtYmVyKDkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nLmNoYXJBdChpKSA9PSBcIj9cIikge1xuICAgICAgICAgICAgICBzdHIgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChhbHBoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RyICs9IHN0cmluZy5jaGFyQXQoaSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogdGFrZXMgYW4gYXJyYXkgYW5kIHJldHVybnMgaXQgcmFuZG9taXplZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuc2h1ZmZsZVxuICAgKiBAcGFyYW0ge2FycmF5fSBvXG4gICAqL1xuICBzZWxmLnNodWZmbGUgPSBmdW5jdGlvbiAobykge1xuICAgICAgaWYgKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyB8fCBvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvID0gbyB8fCBbXCJhXCIsIFwiYlwiLCBcImNcIl07XG4gICAgICBmb3IgKHZhciBqLCB4LCBpID0gby5sZW5ndGgtMTsgaTsgaiA9IGZha2VyLnJhbmRvbS5udW1iZXIoaSksIHggPSBvWy0taV0sIG9baV0gPSBvW2pdLCBvW2pdID0geCk7XG4gICAgICByZXR1cm4gbztcbiAgfTtcblxuICAvKipcbiAgICogbXVzdGFjaGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLm11c3RhY2hlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGRhdGFcbiAgICovXG4gIHNlbGYubXVzdGFjaGUgPSBmdW5jdGlvbiAoc3RyLCBkYXRhKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZvcih2YXIgcCBpbiBkYXRhKSB7XG4gICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKCd7eycgKyBwICsgJ319JywgJ2cnKVxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UocmUsIGRhdGFbcF0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjcmVhdGVDYXJkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5jcmVhdGVDYXJkXG4gICAqL1xuICBzZWxmLmNyZWF0ZUNhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5uYW1lLmZpbmROYW1lKCksXG4gICAgICAgICAgXCJ1c2VybmFtZVwiOiBmYWtlci5pbnRlcm5ldC51c2VyTmFtZSgpLFxuICAgICAgICAgIFwiZW1haWxcIjogZmFrZXIuaW50ZXJuZXQuZW1haWwoKSxcbiAgICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgICBcInN0cmVldEFcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCksXG4gICAgICAgICAgICAgIFwic3RyZWV0QlwiOiBmYWtlci5hZGRyZXNzLnN0cmVldEFkZHJlc3MoKSxcbiAgICAgICAgICAgICAgXCJzdHJlZXRDXCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0QWRkcmVzcyh0cnVlKSxcbiAgICAgICAgICAgICAgXCJzdHJlZXREXCI6IGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzcygpLFxuICAgICAgICAgICAgICBcImNpdHlcIjogZmFrZXIuYWRkcmVzcy5jaXR5KCksXG4gICAgICAgICAgICAgIFwic3RhdGVcIjogZmFrZXIuYWRkcmVzcy5zdGF0ZSgpLFxuICAgICAgICAgICAgICBcImNvdW50cnlcIjogZmFrZXIuYWRkcmVzcy5jb3VudHJ5KCksXG4gICAgICAgICAgICAgIFwiemlwY29kZVwiOiBmYWtlci5hZGRyZXNzLnppcENvZGUoKSxcbiAgICAgICAgICAgICAgXCJnZW9cIjoge1xuICAgICAgICAgICAgICAgICAgXCJsYXRcIjogZmFrZXIuYWRkcmVzcy5sYXRpdHVkZSgpLFxuICAgICAgICAgICAgICAgICAgXCJsbmdcIjogZmFrZXIuYWRkcmVzcy5sb25naXR1ZGUoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBob25lXCI6IGZha2VyLnBob25lLnBob25lTnVtYmVyKCksXG4gICAgICAgICAgXCJ3ZWJzaXRlXCI6IGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKSxcbiAgICAgICAgICBcImNvbXBhbnlcIjoge1xuICAgICAgICAgICAgICBcIm5hbWVcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgICAgICAgICBcImNhdGNoUGhyYXNlXCI6IGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2UoKSxcbiAgICAgICAgICAgICAgXCJic1wiOiBmYWtlci5jb21wYW55LmJzKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicG9zdHNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBcIndvcmRzXCI6IGZha2VyLmxvcmVtLndvcmRzKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlc1wiOiBmYWtlci5sb3JlbS5zZW50ZW5jZXMoKSxcbiAgICAgICAgICAgICAgICAgIFwicGFyYWdyYXBoXCI6IGZha2VyLmxvcmVtLnBhcmFncmFwaCgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFwid29yZHNcIjogZmFrZXIubG9yZW0ud29yZHMoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VcIjogZmFrZXIubG9yZW0uc2VudGVuY2UoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VzXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlcygpLFxuICAgICAgICAgICAgICAgICAgXCJwYXJhZ3JhcGhcIjogZmFrZXIubG9yZW0ucGFyYWdyYXBoKClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgXCJ3b3Jkc1wiOiBmYWtlci5sb3JlbS53b3JkcygpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZVwiOiBmYWtlci5sb3JlbS5zZW50ZW5jZSgpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZXNcIjogZmFrZXIubG9yZW0uc2VudGVuY2VzKCksXG4gICAgICAgICAgICAgICAgICBcInBhcmFncmFwaFwiOiBmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImFjY291bnRIaXN0b3J5XCI6IFtmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uKCksIGZha2VyLmhlbHBlcnMuY3JlYXRlVHJhbnNhY3Rpb24oKSwgZmFrZXIuaGVscGVycy5jcmVhdGVUcmFuc2FjdGlvbigpXVxuICAgICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY29udGV4dHVhbENhcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLmNvbnRleHR1YWxDYXJkXG4gICAqL1xuICBzZWxmLmNvbnRleHR1YWxDYXJkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuYW1lID0gZmFrZXIubmFtZS5maXJzdE5hbWUoKSxcbiAgICAgICAgdXNlck5hbWUgPSBmYWtlci5pbnRlcm5ldC51c2VyTmFtZShuYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBcIm5hbWVcIjogbmFtZSxcbiAgICAgICAgXCJ1c2VybmFtZVwiOiB1c2VyTmFtZSxcbiAgICAgICAgXCJhdmF0YXJcIjogZmFrZXIuaW50ZXJuZXQuYXZhdGFyKCksXG4gICAgICAgIFwiZW1haWxcIjogZmFrZXIuaW50ZXJuZXQuZW1haWwodXNlck5hbWUpLFxuICAgICAgICBcImRvYlwiOiBmYWtlci5kYXRlLnBhc3QoNTAsIG5ldyBEYXRlKFwiU2F0IFNlcCAyMCAxOTkyIDIxOjM1OjAyIEdNVCswMjAwIChDRVNUKVwiKSksXG4gICAgICAgIFwicGhvbmVcIjogZmFrZXIucGhvbmUucGhvbmVOdW1iZXIoKSxcbiAgICAgICAgXCJhZGRyZXNzXCI6IHtcbiAgICAgICAgICAgIFwic3RyZWV0XCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSh0cnVlKSxcbiAgICAgICAgICAgIFwic3VpdGVcIjogZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCksXG4gICAgICAgICAgICBcImNpdHlcIjogZmFrZXIuYWRkcmVzcy5jaXR5KCksXG4gICAgICAgICAgICBcInppcGNvZGVcIjogZmFrZXIuYWRkcmVzcy56aXBDb2RlKCksXG4gICAgICAgICAgICBcImdlb1wiOiB7XG4gICAgICAgICAgICAgICAgXCJsYXRcIjogZmFrZXIuYWRkcmVzcy5sYXRpdHVkZSgpLFxuICAgICAgICAgICAgICAgIFwibG5nXCI6IGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJzaXRlXCI6IGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKSxcbiAgICAgICAgXCJjb21wYW55XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lKCksXG4gICAgICAgICAgICBcImNhdGNoUGhyYXNlXCI6IGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2UoKSxcbiAgICAgICAgICAgIFwiYnNcIjogZmFrZXIuY29tcGFueS5icygpXG4gICAgICAgIH1cbiAgICB9O1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIHVzZXJDYXJkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy51c2VyQ2FyZFxuICAgKi9cbiAgc2VsZi51c2VyQ2FyZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICAgXCJuYW1lXCI6IGZha2VyLm5hbWUuZmluZE5hbWUoKSxcbiAgICAgICAgICBcInVzZXJuYW1lXCI6IGZha2VyLmludGVybmV0LnVzZXJOYW1lKCksXG4gICAgICAgICAgXCJlbWFpbFwiOiBmYWtlci5pbnRlcm5ldC5lbWFpbCgpLFxuICAgICAgICAgIFwiYWRkcmVzc1wiOiB7XG4gICAgICAgICAgICAgIFwic3RyZWV0XCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSh0cnVlKSxcbiAgICAgICAgICAgICAgXCJzdWl0ZVwiOiBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3MoKSxcbiAgICAgICAgICAgICAgXCJjaXR5XCI6IGZha2VyLmFkZHJlc3MuY2l0eSgpLFxuICAgICAgICAgICAgICBcInppcGNvZGVcIjogZmFrZXIuYWRkcmVzcy56aXBDb2RlKCksXG4gICAgICAgICAgICAgIFwiZ2VvXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibGF0XCI6IGZha2VyLmFkZHJlc3MubGF0aXR1ZGUoKSxcbiAgICAgICAgICAgICAgICAgIFwibG5nXCI6IGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwaG9uZVwiOiBmYWtlci5waG9uZS5waG9uZU51bWJlcigpLFxuICAgICAgICAgIFwid2Vic2l0ZVwiOiBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCksXG4gICAgICAgICAgXCJjb21wYW55XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWUoKSxcbiAgICAgICAgICAgICAgXCJjYXRjaFBocmFzZVwiOiBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlKCksXG4gICAgICAgICAgICAgIFwiYnNcIjogZmFrZXIuY29tcGFueS5icygpXG4gICAgICAgICAgfVxuICAgICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY3JlYXRlVHJhbnNhY3Rpb25cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uXG4gICAqL1xuICBzZWxmLmNyZWF0ZVRyYW5zYWN0aW9uID0gZnVuY3Rpb24oKXtcbiAgICByZXR1cm4ge1xuICAgICAgXCJhbW91bnRcIiA6IGZha2VyLmZpbmFuY2UuYW1vdW50KCksXG4gICAgICBcImRhdGVcIiA6IG5ldyBEYXRlKDIwMTIsIDEsIDIpLCAgLy9UT0RPOiBhZGQgYSByYW5nZWQgZGF0ZSBtZXRob2RcbiAgICAgIFwiYnVzaW5lc3NcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgXCJuYW1lXCI6IFtmYWtlci5maW5hbmNlLmFjY291bnROYW1lKCksIGZha2VyLmZpbmFuY2UubWFzaygpXS5qb2luKCcgJyksXG4gICAgICBcInR5cGVcIiA6IHNlbGYucmFuZG9taXplKGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UudHJhbnNhY3Rpb25fdHlwZSksXG4gICAgICBcImFjY291bnRcIiA6IGZha2VyLmZpbmFuY2UuYWNjb3VudCgpXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcblxufTtcblxuXG4vKlxuU3RyaW5nLnByb3RvdHlwZS5jYXBpdGFsaXplID0gZnVuY3Rpb24gKCkgeyAvL3YxLjBcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9cXHcrL2csIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHJldHVybiBhLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgYS5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcbn07XG4qL1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEhlbHBlcnM7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBhbHBoYTogW1xuICAgICdBJywnQicsJ0MnLCdEJywnRScsJ0YnLCdHJywnSCcsJ0knLCdKJywnSycsJ0wnLCdNJywnTicsJ08nLCdQJywnUScsJ1InLCdTJywnVCcsJ1UnLCdWJywnVycsJ1gnLCdZJywnWidcbiAgXSxcbiAgcGF0dGVybjEwOiBbXG4gICAgXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgXCIwNFwiLCBcIjA1XCIsIFwiMDZcIiwgXCIwN1wiLCBcIjA4XCIsIFwiMDlcIlxuICBdLFxuICBwYXR0ZXJuMTAwOiBbXG4gICAgXCIwMDFcIiwgXCIwMDJcIiwgXCIwMDNcIiwgXCIwMDRcIiwgXCIwMDVcIiwgXCIwMDZcIiwgXCIwMDdcIiwgXCIwMDhcIiwgXCIwMDlcIlxuICBdLFxuICB0b0RpZ2l0U3RyaW5nOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tBLVpdL2dpLCBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgICAgIHJldHVybiBtYXRjaC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCkgLSA1NTtcbiAgICAgIH0pO1xuICB9LFxuICBtb2Q5NzogZnVuY3Rpb24gKGRpZ2l0U3RyKSB7XG4gICAgICB2YXIgbSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0U3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbSA9ICgobSAqIDEwKSArIChkaWdpdFN0cltpXSB8MCkpICUgOTc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbTtcbiAgfSxcbiAgZm9ybWF0czogW1xuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQUxcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBTGtrIGJiYnMgc3NzeCBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQURcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBRGtrIGJiYmIgc3NzcyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFUXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQVRrayBiYmJiIGJjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQVpcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMjBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBWmtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQkhcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTRcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCSGtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCRVwiLFxuICAgICAgdG90YWw6IDE2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA5XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkVrayBiYmJjIGNjY2MgY2N4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJBXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkFrayBiYmJzIHNzY2MgY2NjYyBjY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQlJcIixcbiAgICAgIHRvdGFsOiAyOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCUmtrIGJiYmIgYmJiYiBzc3NzIHNjY2MgY2NjYyBjY2N0IG5cIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCR1wiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJHa2sgYmJiYiBzc3NzIGRkY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkNSXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE0XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ1JrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJIUlwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkhSa2sgYmJiYiBiYmJjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ1lcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDWWtrIGJiYnMgc3NzcyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ1pcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ1prayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJES1wiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkRLa2sgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJET1wiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkRPa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJUTFwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlRMa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJFRVwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkVFa2sgYmJzcyBjY2NjIGNjY2MgY2NjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkZPXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRk9rayBiYmJiIGNjY2MgY2NjYyBjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkZJXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJGSWtrIGJiYmIgYmJjYyBjY2NjIGN4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRlJcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkZSa2sgYmJiYiBiZ2dnIGdnY2MgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdFXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0VrayBiYmNjIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiREVcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJERWtrIGJiYmIgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHSVwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdJa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHUlwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdSa2sgYmJicyBzc3NjIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdMXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0xrayBiYmJiIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdUXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdUa2sgYmJiYiBtbXR0IGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJIVVwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkhVa2sgYmJicyBzc3NrIGNjY2MgY2NjYyBjY2NjIGNjY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJU1wiLFxuICAgICAgdG90YWw6IDI2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklTa2sgYmJiYiBzc2NjIGNjY2MgaWlpaSBpaWlpIGlpXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSUVcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJJRWtrIGFhYWEgYmJiYiBiYmNjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJTFwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklMa2sgYmJibiBubmNjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJVFwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSVRrayB4YWFhIGFhYmIgYmJiYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSk9cIixcbiAgICAgIHRvdGFsOiAzMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSk9rayBiYmJiIG5ubm4gY2NjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIktaXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiS1prayBiYmJjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiWEtcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJYS2trIGJiYmIgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJLV1wiLFxuICAgICAgdG90YWw6IDMwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIktXa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMVlwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxWa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTEJcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMjBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMQmtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTElcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMSWtrIGJiYmIgYmNjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxUXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTFRrayBiYmJiIGJjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTFVcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMVWtrIGJiYmMgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNS1wiLFxuICAgICAgdG90YWw6IDE5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNS2trIGJiYmMgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1UXCIsXG4gICAgICB0b3RhbDogMzEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Ua2sgYmJiYiBzc3NzIHNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTVJcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTVJrayBiYmJiIGJzc3Mgc3NjYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTVVcIixcbiAgICAgIHRvdGFsOiAzMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Va2sgYmJiYiBiYnNzIGNjY2MgY2NjYyBjY2NjIDAwMGQgZGRcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNQ1wiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTUNrayBiYmJiIGJzc3Mgc3NjYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTURcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNRGtrIGJiY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1FXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTUVrayBiYmJjIGNjY2MgY2NjYyBjY2NjIHh4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTkxcIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJOTGtrIGJiYmIgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTk9cIixcbiAgICAgIHRvdGFsOiAxNSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogN1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk5Pa2sgYmJiYiBjY2NjIGNjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlBLXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUEtrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQU1wiLFxuICAgICAgdG90YWw6IDI5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA5XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJQU2trIGJiYmIgeHh4eCB4eHh4IHhjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQTFwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBMa2sgYmJicyBzc3N4IGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQVFwiLFxuICAgICAgdG90YWw6IDI1LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBUa2sgYmJiYiBzc3NzIGNjY2MgY2NjYyBjY2N4IHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJRQVwiLFxuICAgICAgdG90YWw6IDI5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyMVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlFBa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlJPXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUk9rayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTTVwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU01rayB4YWFhIGFhYmIgYmJiYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0FcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTQWtrIGJiY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlJTXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUlNrayBiYmJjIGNjY2MgY2NjYyBjY2NjIHh4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0tcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU0trayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTSVwiLFxuICAgICAgdG90YWw6IDE5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNJa2sgYmJzcyBzY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRVNcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRVNrayBiYmJiIGdnZ2cgeHhjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTRVwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxN1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNFa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ0hcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDSGtrIGJiYmIgYmNjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlROXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiVE5rayBiYnNzIHNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJUUlwiLFxuICAgICAgdG90YWw6IDI2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJUUmtrIGJiYmIgYnhjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFFXCIsXG4gICAgICB0b3RhbDogMjMsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQUVrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdCXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0JrayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiVkdcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJWR2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfVxuICBdLFxuICBpc28zMTY2OiBbXG4gICAgXCJBQ1wiLCBcIkFEXCIsIFwiQUVcIiwgXCJBRlwiLCBcIkFHXCIsIFwiQUlcIiwgXCJBTFwiLCBcIkFNXCIsIFwiQU5cIiwgXCJBT1wiLCBcIkFRXCIsIFwiQVJcIiwgXCJBU1wiLFxuICAgIFwiQVRcIiwgXCJBVVwiLCBcIkFXXCIsIFwiQVhcIiwgXCJBWlwiLCBcIkJBXCIsIFwiQkJcIiwgXCJCRFwiLCBcIkJFXCIsIFwiQkZcIiwgXCJCR1wiLCBcIkJIXCIsIFwiQklcIixcbiAgICBcIkJKXCIsIFwiQkxcIiwgXCJCTVwiLCBcIkJOXCIsIFwiQk9cIiwgXCJCUVwiLCBcIkJSXCIsIFwiQlNcIiwgXCJCVFwiLCBcIkJVXCIsIFwiQlZcIiwgXCJCV1wiLCBcIkJZXCIsXG4gICAgXCJCWlwiLCBcIkNBXCIsIFwiQ0NcIiwgXCJDRFwiLCBcIkNFXCIsIFwiQ0ZcIiwgXCJDR1wiLCBcIkNIXCIsIFwiQ0lcIiwgXCJDS1wiLCBcIkNMXCIsIFwiQ01cIiwgXCJDTlwiLFxuICAgIFwiQ09cIiwgXCJDUFwiLCBcIkNSXCIsIFwiQ1NcIiwgXCJDU1wiLCBcIkNVXCIsIFwiQ1ZcIiwgXCJDV1wiLCBcIkNYXCIsIFwiQ1lcIiwgXCJDWlwiLCBcIkREXCIsIFwiREVcIixcbiAgICBcIkRHXCIsIFwiREpcIiwgXCJES1wiLCBcIkRNXCIsIFwiRE9cIiwgXCJEWlwiLCBcIkVBXCIsIFwiRUNcIiwgXCJFRVwiLCBcIkVHXCIsIFwiRUhcIiwgXCJFUlwiLCBcIkVTXCIsXG4gICAgXCJFVFwiLCBcIkVVXCIsIFwiRklcIiwgXCJGSlwiLCBcIkZLXCIsIFwiRk1cIiwgXCJGT1wiLCBcIkZSXCIsIFwiRlhcIiwgXCJHQVwiLCBcIkdCXCIsIFwiR0RcIiwgXCJHRVwiLFxuICAgIFwiR0ZcIiwgXCJHR1wiLCBcIkdIXCIsIFwiR0lcIiwgXCJHTFwiLCBcIkdNXCIsIFwiR05cIiwgXCJHUFwiLCBcIkdRXCIsIFwiR1JcIiwgXCJHU1wiLCBcIkdUXCIsIFwiR1VcIixcbiAgICBcIkdXXCIsIFwiR1lcIiwgXCJIS1wiLCBcIkhNXCIsIFwiSE5cIiwgXCJIUlwiLCBcIkhUXCIsIFwiSFVcIiwgXCJJQ1wiLCBcIklEXCIsIFwiSUVcIiwgXCJJTFwiLCBcIklNXCIsXG4gICAgXCJJTlwiLCBcIklPXCIsIFwiSVFcIiwgXCJJUlwiLCBcIklTXCIsIFwiSVRcIiwgXCJKRVwiLCBcIkpNXCIsIFwiSk9cIiwgXCJKUFwiLCBcIktFXCIsIFwiS0dcIiwgXCJLSFwiLFxuICAgIFwiS0lcIiwgXCJLTVwiLCBcIktOXCIsIFwiS1BcIiwgXCJLUlwiLCBcIktXXCIsIFwiS1lcIiwgXCJLWlwiLCBcIkxBXCIsIFwiTEJcIiwgXCJMQ1wiLCBcIkxJXCIsIFwiTEtcIixcbiAgICBcIkxSXCIsIFwiTFNcIiwgXCJMVFwiLCBcIkxVXCIsIFwiTFZcIiwgXCJMWVwiLCBcIk1BXCIsIFwiTUNcIiwgXCJNRFwiLCBcIk1FXCIsIFwiTUZcIiwgXCJNR1wiLCBcIk1IXCIsXG4gICAgXCJNS1wiLCBcIk1MXCIsIFwiTU1cIiwgXCJNTlwiLCBcIk1PXCIsIFwiTVBcIiwgXCJNUVwiLCBcIk1SXCIsIFwiTVNcIiwgXCJNVFwiLCBcIk1VXCIsIFwiTVZcIiwgXCJNV1wiLFxuICAgIFwiTVhcIiwgXCJNWVwiLCBcIk1aXCIsIFwiTkFcIiwgXCJOQ1wiLCBcIk5FXCIsIFwiTkZcIiwgXCJOR1wiLCBcIk5JXCIsIFwiTkxcIiwgXCJOT1wiLCBcIk5QXCIsIFwiTlJcIixcbiAgICBcIk5UXCIsIFwiTlVcIiwgXCJOWlwiLCBcIk9NXCIsIFwiUEFcIiwgXCJQRVwiLCBcIlBGXCIsIFwiUEdcIiwgXCJQSFwiLCBcIlBLXCIsIFwiUExcIiwgXCJQTVwiLCBcIlBOXCIsXG4gICAgXCJQUlwiLCBcIlBTXCIsIFwiUFRcIiwgXCJQV1wiLCBcIlBZXCIsIFwiUUFcIiwgXCJSRVwiLCBcIlJPXCIsIFwiUlNcIiwgXCJSVVwiLCBcIlJXXCIsIFwiU0FcIiwgXCJTQlwiLFxuICAgIFwiU0NcIiwgXCJTRFwiLCBcIlNFXCIsIFwiU0dcIiwgXCJTSFwiLCBcIlNJXCIsIFwiU0pcIiwgXCJTS1wiLCBcIlNMXCIsIFwiU01cIiwgXCJTTlwiLCBcIlNPXCIsIFwiU1JcIixcbiAgICBcIlNTXCIsIFwiU1RcIiwgXCJTVVwiLCBcIlNWXCIsIFwiU1hcIiwgXCJTWVwiLCBcIlNaXCIsIFwiVEFcIiwgXCJUQ1wiLCBcIlREXCIsIFwiVEZcIiwgXCJUR1wiLCBcIlRIXCIsXG4gICAgXCJUSlwiLCBcIlRLXCIsIFwiVExcIiwgXCJUTVwiLCBcIlROXCIsIFwiVE9cIiwgXCJUUlwiLCBcIlRUXCIsIFwiVFZcIiwgXCJUV1wiLCBcIlRaXCIsIFwiVUFcIiwgXCJVR1wiLFxuICAgIFwiVU1cIiwgXCJVU1wiLCBcIlVZXCIsIFwiVVpcIiwgXCJWQVwiLCBcIlZDXCIsIFwiVkVcIiwgXCJWR1wiLCBcIlZJXCIsIFwiVk5cIiwgXCJWVVwiLCBcIldGXCIsIFwiV1NcIixcbiAgICBcIllFXCIsIFwiWVRcIiwgXCJZVVwiLCBcIlpBXCIsIFwiWk1cIiwgXCJaUlwiLCBcIlpXXCJcbiAgXVxufSIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaW1hZ2VcbiAqL1xudmFyIEltYWdlID0gZnVuY3Rpb24gKGZha2VyKSB7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmltYWdlXG4gICAqL1xuICBzZWxmLmltYWdlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHZhciBjYXRlZ29yaWVzID0gW1wiYWJzdHJhY3RcIiwgXCJhbmltYWxzXCIsIFwiYnVzaW5lc3NcIiwgXCJjYXRzXCIsIFwiY2l0eVwiLCBcImZvb2RcIiwgXCJuaWdodGxpZmVcIiwgXCJmYXNoaW9uXCIsIFwicGVvcGxlXCIsIFwibmF0dXJlXCIsIFwic3BvcnRzXCIsIFwidGVjaG5pY3NcIiwgXCJ0cmFuc3BvcnRcIl07XG4gICAgcmV0dXJuIHNlbGZbZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChjYXRlZ29yaWVzKV0od2lkdGgsIGhlaWdodCwgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGF2YXRhclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmF2YXRhclxuICAgKi9cbiAgc2VsZi5hdmF0YXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLmludGVybmV0LmF2YXRhcigpO1xuICB9O1xuICAvKipcbiAgICogaW1hZ2VVcmxcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhdGVnb3J5XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuaW1hZ2VVcmxcbiAgICovXG4gIHNlbGYuaW1hZ2VVcmwgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgY2F0ZWdvcnksIHJhbmRvbWl6ZSwgaHR0cHMpIHtcbiAgICAgIHZhciB3aWR0aCA9IHdpZHRoIHx8IDY0MDtcbiAgICAgIHZhciBoZWlnaHQgPSBoZWlnaHQgfHwgNDgwO1xuICAgICAgdmFyIHByb3RvY29sID0gJ2h0dHA6Ly8nO1xuICAgICAgaWYgKHR5cGVvZiBodHRwcyAhPT0gJ3VuZGVmaW5lZCcgJiYgaHR0cHMgPT09IHRydWUpIHtcbiAgICAgICAgcHJvdG9jb2wgPSAnaHR0cHM6Ly8nO1xuICAgICAgfVxuICAgICAgdmFyIHVybCA9IHByb3RvY29sICsgJ2xvcmVtcGl4ZWwuY29tLycgKyB3aWR0aCArICcvJyArIGhlaWdodDtcbiAgICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHVybCArPSAnLycgKyBjYXRlZ29yeTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmRvbWl6ZSkge1xuICAgICAgICB1cmwgKz0gJz8nICsgZmFrZXIucmFuZG9tLm51bWJlcigpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1cmw7XG4gIH07XG4gIC8qKlxuICAgKiBhYnN0cmFjdFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmFic3RyYWN0XG4gICAqL1xuICBzZWxmLmFic3RyYWN0ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnYWJzdHJhY3QnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogYW5pbWFsc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmFuaW1hbHNcbiAgICovXG4gIHNlbGYuYW5pbWFscyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2FuaW1hbHMnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogYnVzaW5lc3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5idXNpbmVzc1xuICAgKi9cbiAgc2VsZi5idXNpbmVzcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2J1c2luZXNzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGNhdHNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5jYXRzXG4gICAqL1xuICBzZWxmLmNhdHMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdjYXRzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGNpdHlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5jaXR5XG4gICAqL1xuICBzZWxmLmNpdHkgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdjaXR5JywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGZvb2RcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5mb29kXG4gICAqL1xuICBzZWxmLmZvb2QgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdmb29kJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIG5pZ2h0bGlmZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLm5pZ2h0bGlmZVxuICAgKi9cbiAgc2VsZi5uaWdodGxpZmUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICduaWdodGxpZmUnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogZmFzaGlvblxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmZhc2hpb25cbiAgICovXG4gIHNlbGYuZmFzaGlvbiA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2Zhc2hpb24nLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogcGVvcGxlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UucGVvcGxlXG4gICAqL1xuICBzZWxmLnBlb3BsZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3Blb3BsZScsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBuYXR1cmVcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5uYXR1cmVcbiAgICovXG4gIHNlbGYubmF0dXJlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnbmF0dXJlJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHNwb3J0c1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnNwb3J0c1xuICAgKi9cbiAgc2VsZi5zcG9ydHMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdzcG9ydHMnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogdGVjaG5pY3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS50ZWNobmljc1xuICAgKi9cbiAgc2VsZi50ZWNobmljcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3RlY2huaWNzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHRyYW5zcG9ydFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnRyYW5zcG9ydFxuICAgKi9cbiAgc2VsZi50cmFuc3BvcnQgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICd0cmFuc3BvcnQnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogZGF0YVVyaVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmRhdGF1cmxcbiAgICovXG4gIHNlbGYuZGF0YVVyaSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIHJhd1ByZWZpeCA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwnO1xuICAgIHZhciBzdmdTdHJpbmcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmVyc2lvbj1cIjEuMVwiIGJhc2VQcm9maWxlPVwiZnVsbFwiIHdpZHRoPVwiJyArIHdpZHRoICsgJ1wiIGhlaWdodD1cIicgKyBoZWlnaHQgKyAnXCI+IDxyZWN0IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBmaWxsPVwiZ3JleVwiLz4gIDx0ZXh0IHg9XCIwXCIgeT1cIjIwXCIgZm9udC1zaXplPVwiMjBcIiB0ZXh0LWFuY2hvcj1cInN0YXJ0XCIgZmlsbD1cIndoaXRlXCI+JyArIHdpZHRoICsgJ3gnICsgaGVpZ2h0ICsgJzwvdGV4dD4gPC9zdmc+JztcbiAgICByZXR1cm4gcmF3UHJlZml4ICsgZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cmluZyk7XG4gIH07XG59XG5cbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBJbWFnZTsiLCIvKlxuXG4gICB0aGlzIGluZGV4LmpzIGZpbGUgaXMgdXNlZCBmb3IgaW5jbHVkaW5nIHRoZSBmYWtlciBsaWJyYXJ5IGFzIGEgQ29tbW9uSlMgbW9kdWxlLCBpbnN0ZWFkIG9mIGEgYnVuZGxlXG5cbiAgIHlvdSBjYW4gaW5jbHVkZSB0aGUgZmFrZXIgbGlicmFyeSBpbnRvIHlvdXIgZXhpc3Rpbmcgbm9kZS5qcyBhcHBsaWNhdGlvbiBieSByZXF1aXJpbmcgdGhlIGVudGlyZSAvZmFrZXIgZGlyZWN0b3J5XG5cbiAgICB2YXIgZmFrZXIgPSByZXF1aXJlKC4vZmFrZXIpO1xuICAgIHZhciByYW5kb21OYW1lID0gZmFrZXIubmFtZS5maW5kTmFtZSgpO1xuXG4gICB5b3UgY2FuIGFsc28gc2ltcGx5IGluY2x1ZGUgdGhlIFwiZmFrZXIuanNcIiBmaWxlIHdoaWNoIGlzIHRoZSBhdXRvLWdlbmVyYXRlZCBidW5kbGVkIHZlcnNpb24gb2YgdGhlIGZha2VyIGxpYnJhcnlcblxuICAgIHZhciBmYWtlciA9IHJlcXVpcmUoLi9jdXN0b21BcHBQYXRoL2Zha2VyKTtcbiAgICB2YXIgcmFuZG9tTmFtZSA9IGZha2VyLm5hbWUuZmluZE5hbWUoKTtcblxuXG4gIGlmIHlvdSBwbGFuIG9uIG1vZGlmeWluZyB0aGUgZmFrZXIgbGlicmFyeSB5b3Ugc2hvdWxkIGJlIHBlcmZvcm1pbmcgeW91ciBjaGFuZ2VzIGluIHRoZSAvbGliLyBkaXJlY3RvcnlcblxuKi9cblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlclxuICovXG5mdW5jdGlvbiBGYWtlciAob3B0cykge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICBvcHRzID0gb3B0cyB8fCB7fTtcblxuICAvLyBhc3NpZ24gb3B0aW9uc1xuICB2YXIgbG9jYWxlcyA9IHNlbGYubG9jYWxlcyB8fCBvcHRzLmxvY2FsZXMgfHwge307XG4gIHZhciBsb2NhbGUgPSBzZWxmLmxvY2FsZSB8fCBvcHRzLmxvY2FsZSB8fCBcImVuXCI7XG4gIHZhciBsb2NhbGVGYWxsYmFjayA9IHNlbGYubG9jYWxlRmFsbGJhY2sgfHwgb3B0cy5sb2NhbGVGYWxsYmFjayB8fCBcImVuXCI7XG5cbiAgc2VsZi5sb2NhbGVzID0gbG9jYWxlcztcbiAgc2VsZi5sb2NhbGUgPSBsb2NhbGU7XG4gIHNlbGYubG9jYWxlRmFsbGJhY2sgPSBsb2NhbGVGYWxsYmFjaztcblxuICBzZWxmLmRlZmluaXRpb25zID0ge307XG5cbiAgZnVuY3Rpb24gYmluZEFsbChvYmopIHtcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihtZXRoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBvYmpbbWV0aF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgb2JqW21ldGhdID0gb2JqW21ldGhdLmJpbmQob2JqKTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgRmFrZSA9IHJlcXVpcmUoJy4vZmFrZScpO1xuICBzZWxmLmZha2UgPSBuZXcgRmFrZShzZWxmKS5mYWtlO1xuXG4gIHZhciBSYW5kb20gPSByZXF1aXJlKCcuL3JhbmRvbScpO1xuICBzZWxmLnJhbmRvbSA9IGJpbmRBbGwobmV3IFJhbmRvbShzZWxmKSk7XG5cbiAgdmFyIEhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcbiAgc2VsZi5oZWxwZXJzID0gbmV3IEhlbHBlcnMoc2VsZik7XG5cbiAgdmFyIE5hbWUgPSByZXF1aXJlKCcuL25hbWUnKTtcbiAgc2VsZi5uYW1lID0gYmluZEFsbChuZXcgTmFtZShzZWxmKSk7XG5cbiAgdmFyIEFkZHJlc3MgPSByZXF1aXJlKCcuL2FkZHJlc3MnKTtcbiAgc2VsZi5hZGRyZXNzID0gYmluZEFsbChuZXcgQWRkcmVzcyhzZWxmKSk7XG5cbiAgdmFyIENvbXBhbnkgPSByZXF1aXJlKCcuL2NvbXBhbnknKTtcbiAgc2VsZi5jb21wYW55ID0gYmluZEFsbChuZXcgQ29tcGFueShzZWxmKSk7XG5cbiAgdmFyIEZpbmFuY2UgPSByZXF1aXJlKCcuL2ZpbmFuY2UnKTtcbiAgc2VsZi5maW5hbmNlID0gYmluZEFsbChuZXcgRmluYW5jZShzZWxmKSk7XG5cbiAgdmFyIEltYWdlID0gcmVxdWlyZSgnLi9pbWFnZScpO1xuICBzZWxmLmltYWdlID0gYmluZEFsbChuZXcgSW1hZ2Uoc2VsZikpO1xuXG4gIHZhciBMb3JlbSA9IHJlcXVpcmUoJy4vbG9yZW0nKTtcbiAgc2VsZi5sb3JlbSA9IGJpbmRBbGwobmV3IExvcmVtKHNlbGYpKTtcblxuICB2YXIgSGFja2VyID0gcmVxdWlyZSgnLi9oYWNrZXInKTtcbiAgc2VsZi5oYWNrZXIgPSBiaW5kQWxsKG5ldyBIYWNrZXIoc2VsZikpO1xuXG4gIHZhciBJbnRlcm5ldCA9IHJlcXVpcmUoJy4vaW50ZXJuZXQnKTtcbiAgc2VsZi5pbnRlcm5ldCA9IGJpbmRBbGwobmV3IEludGVybmV0KHNlbGYpKTtcblxuICB2YXIgRGF0YWJhc2UgPSByZXF1aXJlKCcuL2RhdGFiYXNlJyk7XG4gIHNlbGYuZGF0YWJhc2UgPSBiaW5kQWxsKG5ldyBEYXRhYmFzZShzZWxmKSk7XG5cbiAgdmFyIFBob25lID0gcmVxdWlyZSgnLi9waG9uZV9udW1iZXInKTtcbiAgc2VsZi5waG9uZSA9IGJpbmRBbGwobmV3IFBob25lKHNlbGYpKTtcblxuICB2YXIgX0RhdGUgPSByZXF1aXJlKCcuL2RhdGUnKTtcbiAgc2VsZi5kYXRlID0gYmluZEFsbChuZXcgX0RhdGUoc2VsZikpO1xuXG4gIHZhciBDb21tZXJjZSA9IHJlcXVpcmUoJy4vY29tbWVyY2UnKTtcbiAgc2VsZi5jb21tZXJjZSA9IGJpbmRBbGwobmV3IENvbW1lcmNlKHNlbGYpKTtcblxuICB2YXIgU3lzdGVtID0gcmVxdWlyZSgnLi9zeXN0ZW0nKTtcbiAgc2VsZi5zeXN0ZW0gPSBiaW5kQWxsKG5ldyBTeXN0ZW0oc2VsZikpO1xuXG4gIHZhciBfZGVmaW5pdGlvbnMgPSB7XG4gICAgXCJuYW1lXCI6IFtcImZpcnN0X25hbWVcIiwgXCJsYXN0X25hbWVcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJ0aXRsZVwiLCBcIm1hbGVfZmlyc3RfbmFtZVwiLCBcImZlbWFsZV9maXJzdF9uYW1lXCIsIFwibWFsZV9taWRkbGVfbmFtZVwiLCBcImZlbWFsZV9taWRkbGVfbmFtZVwiLCBcIm1hbGVfbGFzdF9uYW1lXCIsIFwiZmVtYWxlX2xhc3RfbmFtZVwiXSxcbiAgICBcImFkZHJlc3NcIjogW1wiY2l0eV9wcmVmaXhcIiwgXCJjaXR5X3N1ZmZpeFwiLCBcInN0cmVldF9zdWZmaXhcIiwgXCJjb3VudHlcIiwgXCJjb3VudHJ5XCIsIFwiY291bnRyeV9jb2RlXCIsIFwic3RhdGVcIiwgXCJzdGF0ZV9hYmJyXCIsIFwic3RyZWV0X3ByZWZpeFwiLCBcInBvc3Rjb2RlXCJdLFxuICAgIFwiY29tcGFueVwiOiBbXCJhZGplY3RpdmVcIiwgXCJub3VuXCIsIFwiZGVzY3JpcHRvclwiLCBcImJzX2FkamVjdGl2ZVwiLCBcImJzX25vdW5cIiwgXCJic192ZXJiXCIsIFwic3VmZml4XCJdLFxuICAgIFwibG9yZW1cIjogW1wid29yZHNcIl0sXG4gICAgXCJoYWNrZXJcIjogW1wiYWJicmV2aWF0aW9uXCIsIFwiYWRqZWN0aXZlXCIsIFwibm91blwiLCBcInZlcmJcIiwgXCJpbmd2ZXJiXCJdLFxuICAgIFwicGhvbmVfbnVtYmVyXCI6IFtcImZvcm1hdHNcIl0sXG4gICAgXCJmaW5hbmNlXCI6IFtcImFjY291bnRfdHlwZVwiLCBcInRyYW5zYWN0aW9uX3R5cGVcIiwgXCJjdXJyZW5jeVwiLCBcImliYW5cIl0sXG4gICAgXCJpbnRlcm5ldFwiOiBbXCJhdmF0YXJfdXJpXCIsIFwiZG9tYWluX3N1ZmZpeFwiLCBcImZyZWVfZW1haWxcIiwgXCJleGFtcGxlX2VtYWlsXCIsIFwicGFzc3dvcmRcIl0sXG4gICAgXCJjb21tZXJjZVwiOiBbXCJjb2xvclwiLCBcImRlcGFydG1lbnRcIiwgXCJwcm9kdWN0X25hbWVcIiwgXCJwcmljZVwiLCBcImNhdGVnb3JpZXNcIl0sXG4gICAgXCJkYXRhYmFzZVwiOiBbXCJjb2xsYXRpb25cIiwgXCJjb2x1bW5cIiwgXCJlbmdpbmVcIiwgXCJ0eXBlXCJdLFxuICAgIFwic3lzdGVtXCI6IFtcIm1pbWVUeXBlc1wiXSxcbiAgICBcImRhdGVcIjogW1wibW9udGhcIiwgXCJ3ZWVrZGF5XCJdLFxuICAgIFwidGl0bGVcIjogXCJcIixcbiAgICBcInNlcGFyYXRvclwiOiBcIlwiXG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgR2V0dGVyIGZvciBhbGwgZGVmaW5pdGlvbnMuZm9vLmJhciBwcm9wZXJ0aWVzXG4gIE9iamVjdC5rZXlzKF9kZWZpbml0aW9ucykuZm9yRWFjaChmdW5jdGlvbihkKXtcbiAgICBpZiAodHlwZW9mIHNlbGYuZGVmaW5pdGlvbnNbZF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHNlbGYuZGVmaW5pdGlvbnNbZF0gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9kZWZpbml0aW9uc1tkXSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzZWxmLmRlZmluaXRpb25zW2RdID0gX2RlZmluaXRpb25zW2RdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9kZWZpbml0aW9uc1tkXS5mb3JFYWNoKGZ1bmN0aW9uKHApe1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuZGVmaW5pdGlvbnNbZF0sIHAsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLmxvY2FsZXNbc2VsZi5sb2NhbGVdW2RdID09PSBcInVuZGVmaW5lZFwiIHx8IHR5cGVvZiBzZWxmLmxvY2FsZXNbc2VsZi5sb2NhbGVdW2RdW3BdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAvLyBjZXJ0YWluIGxvY2FsaXphdGlvbiBzZXRzIGNvbnRhaW4gbGVzcyBkYXRhIHRoZW4gb3RoZXJzLlxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgYSBtaXNzaW5nIGRlZmluaXRpb24sIHVzZSB0aGUgZGVmYXVsdCBsb2NhbGVGYWxsYmFjayB0byBzdWJzdGl0dXRlIHRoZSBtaXNzaW5nIHNldCBkYXRhXG4gICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcHJvcGVydHkgJyArIGQgKyBwKVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9jYWxlc1tsb2NhbGVGYWxsYmFja11bZF1bcF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBsb2NhbGl6ZWQgZGF0YVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9jYWxlc1tzZWxmLmxvY2FsZV1bZF1bcF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn07XG5cbkZha2VyLnByb3RvdHlwZS5zZWVkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIFJhbmRvbSA9IHJlcXVpcmUoJy4vcmFuZG9tJyk7XG4gIHRoaXMuc2VlZFZhbHVlID0gdmFsdWU7XG4gIHRoaXMucmFuZG9tID0gbmV3IFJhbmRvbSh0aGlzLCB0aGlzLnNlZWRWYWx1ZSk7XG59XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEZha2VyO1xuIiwidmFyIHJhbmRvbV91YSA9IHJlcXVpcmUoJy4uL3ZlbmRvci91c2VyLWFnZW50Jyk7XG5cbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaW50ZXJuZXRcbiAqL1xudmFyIEludGVybmV0ID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIGF2YXRhclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmF2YXRhclxuICAgKi9cbiAgc2VsZi5hdmF0YXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5pbnRlcm5ldC5hdmF0YXJfdXJpKTtcbiAgfTtcblxuICBzZWxmLmF2YXRhci5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIFVSTCBmb3IgYW4gYXZhdGFyLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lnb3JnYXJ5YmFsZGkvMTI4LmpwZ1wiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBlbWFpbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmVtYWlsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm92aWRlclxuICAgKi9cbiAgc2VsZi5lbWFpbCA9IGZ1bmN0aW9uIChmaXJzdE5hbWUsIGxhc3ROYW1lLCBwcm92aWRlcikge1xuICAgICAgcHJvdmlkZXIgPSBwcm92aWRlciB8fCBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmZyZWVfZW1haWwpO1xuICAgICAgcmV0dXJuICBmYWtlci5oZWxwZXJzLnNsdWdpZnkoZmFrZXIuaW50ZXJuZXQudXNlck5hbWUoZmlyc3ROYW1lLCBsYXN0TmFtZSkpICsgXCJAXCIgKyBwcm92aWRlcjtcbiAgfTtcblxuICBzZWxmLmVtYWlsLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgdmFsaWQgZW1haWwgYWRkcmVzcyBiYXNlZCBvbiBvcHRpb25hbCBpbnB1dCBjcml0ZXJpYVwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJmb28uYmFyQGdtYWlsLmNvbVwiXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJmaXJzdE5hbWVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBmaXJzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH0sXG4gICAgICBcImxhc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbGFzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZG9tYWluIG9mIHRoZSB1c2VyXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBleGFtcGxlRW1haWxcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5leGFtcGxlRW1haWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICovXG4gIHNlbGYuZXhhbXBsZUVtYWlsID0gZnVuY3Rpb24gKGZpcnN0TmFtZSwgbGFzdE5hbWUpIHtcbiAgICAgIHZhciBwcm92aWRlciA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaW50ZXJuZXQuZXhhbXBsZV9lbWFpbCk7XG4gICAgICByZXR1cm4gc2VsZi5lbWFpbChmaXJzdE5hbWUsIGxhc3ROYW1lLCBwcm92aWRlcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZXJOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQudXNlck5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICovXG4gIHNlbGYudXNlck5hbWUgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSkge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGZpcnN0TmFtZSA9IGZpcnN0TmFtZSB8fCBmYWtlci5uYW1lLmZpcnN0TmFtZSgpO1xuICAgICAgbGFzdE5hbWUgPSBsYXN0TmFtZSB8fCBmYWtlci5uYW1lLmxhc3ROYW1lKCk7XG4gICAgICBzd2l0Y2ggKGZha2VyLnJhbmRvbS5udW1iZXIoMikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXN1bHQgPSBmaXJzdE5hbWUgKyBmYWtlci5yYW5kb20ubnVtYmVyKDk5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXN1bHQgPSBmaXJzdE5hbWUgKyBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIi5cIiwgXCJfXCJdKSArIGxhc3ROYW1lO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAgIHJlc3VsdCA9IGZpcnN0TmFtZSArIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoW1wiLlwiLCBcIl9cIl0pICsgbGFzdE5hbWUgKyBmYWtlci5yYW5kb20ubnVtYmVyKDk5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1N0cmluZygpLnJlcGxhY2UoLycvZywgXCJcIik7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvIC9nLCBcIlwiKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgc2VsZi51c2VyTmFtZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHVzZXJuYW1lIGJhc2VkIG9uIG9uZSBvZiBzZXZlcmFsIHBhdHRlcm5zLiBUaGUgcGF0dGVybiBpcyBjaG9zZW4gcmFuZG9tbHkuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcbiAgICAgIFwiS2lyc3RpbjM5XCIsXG4gICAgICBcIktpcnN0aW4uU21pdGhcIixcbiAgICAgIFwiS2lyc3Rpbi5TbWl0aDM5XCIsXG4gICAgICBcIktpcnN0aW5TbWl0aFwiLFxuICAgICAgXCJLaXJzdGluU21pdGgzOVwiLFxuICAgIF0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiZmlyc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZmlyc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9LFxuICAgICAgXCJsYXN0TmFtZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGxhc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBwcm90b2NvbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnByb3RvY29sXG4gICAqL1xuICBzZWxmLnByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb3RvY29scyA9IFsnaHR0cCcsJ2h0dHBzJ107XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChwcm90b2NvbHMpO1xuICB9O1xuXG4gIHNlbGYucHJvdG9jb2wuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJSYW5kb21seSBnZW5lcmF0ZXMgaHR0cCBvciBodHRwc1wiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJodHRwc1wiLCBcImh0dHBcIl1cbiAgfTtcblxuICAvKipcbiAgICogdXJsXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQudXJsXG4gICAqL1xuICBzZWxmLnVybCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5pbnRlcm5ldC5wcm90b2NvbCgpICsgJzovLycgKyBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCk7XG4gIH07XG5cbiAgc2VsZi51cmwuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gVVJMLiBUaGUgVVJMIGNvdWxkIGJlIHNlY3VyZSBvciBpbnNlY3VyZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1xuICAgICAgXCJodHRwOi8vcmFzaGF3bi5uYW1lXCIsXG4gICAgICBcImh0dHBzOi8vcmFzaGF3bi5uYW1lXCJcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIGRvbWFpbk5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lXG4gICAqL1xuICBzZWxmLmRvbWFpbk5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIuaW50ZXJuZXQuZG9tYWluV29yZCgpICsgXCIuXCIgKyBmYWtlci5pbnRlcm5ldC5kb21haW5TdWZmaXgoKTtcbiAgfTtcblxuICBzZWxmLmRvbWFpbk5hbWUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gZG9tYWluIG5hbWUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIm1hcnZpbi5vcmdcIl1cbiAgfTtcblxuICAvKipcbiAgICogZG9tYWluU3VmZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZG9tYWluU3VmZml4XG4gICAqL1xuICBzZWxmLmRvbWFpblN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmRvbWFpbl9zdWZmaXgpO1xuICB9O1xuXG4gIHNlbGYuZG9tYWluU3VmZml4LnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGRvbWFpbiBzdWZmaXguXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIm5ldFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBkb21haW5Xb3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZG9tYWluV29yZFxuICAgKi9cbiAgc2VsZi5kb21haW5Xb3JkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLm5hbWUuZmlyc3ROYW1lKCkucmVwbGFjZSgvKFtcXFxcfiMmKnt9Lzo8Pj98XFxcIiddKS9pZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH07XG5cbiAgc2VsZi5kb21haW5Xb3JkLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGRvbWFpbiB3b3JkLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJhbHljZVwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBpcFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmlwXG4gICAqL1xuICBzZWxmLmlwID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJhbmROdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIChmYWtlci5yYW5kb20ubnVtYmVyKDI1NSkpLnRvRml4ZWQoMCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgIHJlc3VsdFtpXSA9IHJhbmROdW0oKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKFwiLlwiKTtcbiAgfTtcblxuICBzZWxmLmlwLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIElQLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCI5Ny4yMzguMjQxLjExXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGlwdjZcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5pcHY2XG4gICAqL1xuICBzZWxmLmlwdjYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmFuZEhhc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAoZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiYVwiLCBcImJcIiwgXCJjXCIsIFwiZFwiLCBcImVcIiwgXCJmXCJdKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH07XG5cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IHJhbmRIYXNoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0LmpvaW4oXCI6XCIpO1xuICB9O1xuXG4gIHNlbGYuaXB2Ni5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBJUHY2IGFkZHJlc3MuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIjIwMDE6MGRiODo2Mjc2OmIxYTc6NTIxMzoyMmYxOjI1ZGY6YzhhMFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiB1c2VyQWdlbnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC51c2VyQWdlbnRcbiAgICovXG4gIHNlbGYudXNlckFnZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByYW5kb21fdWEuZ2VuZXJhdGUoKTtcbiAgfTtcblxuICBzZWxmLnVzZXJBZ2VudC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSB1c2VyIGFnZW50LlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFggMTBfN181IHJ2OjYuMDsgU0wpIEFwcGxlV2ViS2l0LzUzMi4wLjEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzcuMS42IFNhZmFyaS81MzIuMC4xXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbG9yXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuY29sb3JcbiAgICogQHBhcmFtIHtudW1iZXJ9IGJhc2VSZWQyNTVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGJhc2VHcmVlbjI1NVxuICAgKiBAcGFyYW0ge251bWJlcn0gYmFzZUJsdWUyNTVcbiAgICovXG4gIHNlbGYuY29sb3IgPSBmdW5jdGlvbiAoYmFzZVJlZDI1NSwgYmFzZUdyZWVuMjU1LCBiYXNlQmx1ZTI1NSkge1xuICAgICAgYmFzZVJlZDI1NSA9IGJhc2VSZWQyNTUgfHwgMDtcbiAgICAgIGJhc2VHcmVlbjI1NSA9IGJhc2VHcmVlbjI1NSB8fCAwO1xuICAgICAgYmFzZUJsdWUyNTUgPSBiYXNlQmx1ZTI1NSB8fCAwO1xuICAgICAgLy8gYmFzZWQgb24gYXdlc29tZSByZXNwb25zZSA6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDMwNDQvYWxnb3JpdGhtLXRvLXJhbmRvbWx5LWdlbmVyYXRlLWFuLWFlc3RoZXRpY2FsbHktcGxlYXNpbmctY29sb3ItcGFsZXR0ZVxuICAgICAgdmFyIHJlZCA9IE1hdGguZmxvb3IoKGZha2VyLnJhbmRvbS5udW1iZXIoMjU2KSArIGJhc2VSZWQyNTUpIC8gMik7XG4gICAgICB2YXIgZ3JlZW4gPSBNYXRoLmZsb29yKChmYWtlci5yYW5kb20ubnVtYmVyKDI1NikgKyBiYXNlR3JlZW4yNTUpIC8gMik7XG4gICAgICB2YXIgYmx1ZSA9IE1hdGguZmxvb3IoKGZha2VyLnJhbmRvbS5udW1iZXIoMjU2KSArIGJhc2VCbHVlMjU1KSAvIDIpO1xuICAgICAgdmFyIHJlZFN0ciA9IHJlZC50b1N0cmluZygxNik7XG4gICAgICB2YXIgZ3JlZW5TdHIgPSBncmVlbi50b1N0cmluZygxNik7XG4gICAgICB2YXIgYmx1ZVN0ciA9IGJsdWUudG9TdHJpbmcoMTYpO1xuICAgICAgcmV0dXJuICcjJyArXG4gICAgICAgIChyZWRTdHIubGVuZ3RoID09PSAxID8gJzAnIDogJycpICsgcmVkU3RyICtcbiAgICAgICAgKGdyZWVuU3RyLmxlbmd0aCA9PT0gMSA/ICcwJyA6ICcnKSArIGdyZWVuU3RyICtcbiAgICAgICAgKGJsdWVTdHIubGVuZ3RoID09PSAxID8gJzAnOiAnJykgKyBibHVlU3RyO1xuXG4gIH07XG5cbiAgc2VsZi5jb2xvci5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBoZXhhZGVjaW1hbCBjb2xvci5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiIzA2MjY3ZlwiXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJiYXNlUmVkMjU1XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgcmVkIHZhbHVlLiBWYWxpZCB2YWx1ZXMgYXJlIDAgLSAyNTUuXCJcbiAgICAgIH0sXG4gICAgICBcImJhc2VHcmVlbjI1NVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGdyZWVuIHZhbHVlLiBWYWxpZCB2YWx1ZXMgYXJlIDAgLSAyNTUuXCJcbiAgICAgIH0sXG4gICAgICBcImJhc2VCbHVlMjU1XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgYmx1ZSB2YWx1ZS4gVmFsaWQgdmFsdWVzIGFyZSAwIC0gMjU1LlwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBtYWNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5tYWNcbiAgICovXG4gIHNlbGYubWFjID0gZnVuY3Rpb24oKXtcbiAgICAgIHZhciBpLCBtYWMgPSBcIlwiO1xuICAgICAgZm9yIChpPTA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgbWFjKz0gZmFrZXIucmFuZG9tLm51bWJlcigxNSkudG9TdHJpbmcoMTYpO1xuICAgICAgICAgIGlmIChpJTI9PTEgJiYgaSAhPSAxMSkge1xuICAgICAgICAgICAgICBtYWMrPVwiOlwiO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtYWM7XG4gIH07XG5cbiAgc2VsZi5tYWMuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gbWFjIGFkZHJlc3MuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIjc4OjA2OmNjOmFlOmIzOjgxXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIHBhc3N3b3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQucGFzc3dvcmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1lbW9yYWJsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0dGVyblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqL1xuICAgc2VsZi5wYXNzd29yZCA9IGZ1bmN0aW9uIChsZW4sIG1lbW9yYWJsZSwgcGF0dGVybiwgcHJlZml4KSB7XG4gICAgIGxlbiA9IGxlbiB8fCAxNTtcbiAgICAgaWYgKHR5cGVvZiBtZW1vcmFibGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICBtZW1vcmFibGUgPSBmYWxzZTtcbiAgICAgfVxuICAgICAvKlxuICAgICAgKiBwYXNzd29yZC1nZW5lcmF0b3IgKCBmdW5jdGlvbiApXG4gICAgICAqIENvcHlyaWdodChjKSAyMDExLTIwMTMgQmVybWkgRmVycmVyIDxiZXJtaUBiZXJtaWxhYnMuY29tPlxuICAgICAgKiBNSVQgTGljZW5zZWRcbiAgICAgICovXG4gICAgIHZhciBjb25zb25hbnQsIGxldHRlciwgcGFzc3dvcmQsIHZvd2VsO1xuICAgICBsZXR0ZXIgPSAvW2EtekEtWl0kLztcbiAgICAgdm93ZWwgPSAvW2FlaW91QUVJT1VdJC87XG4gICAgIGNvbnNvbmFudCA9IC9bYmNkZmdoamtsbW5wcXJzdHZ3eHl6QkNERkdISktMTU5QUVJTVFZXWFlaXSQvO1xuICAgICB2YXIgX3Bhc3N3b3JkID0gZnVuY3Rpb24gKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpIHtcbiAgICAgICB2YXIgY2hhciwgbjtcbiAgICAgICBpZiAobGVuZ3RoID09IG51bGwpIHtcbiAgICAgICAgIGxlbmd0aCA9IDEwO1xuICAgICAgIH1cbiAgICAgICBpZiAobWVtb3JhYmxlID09IG51bGwpIHtcbiAgICAgICAgIG1lbW9yYWJsZSA9IHRydWU7XG4gICAgICAgfVxuICAgICAgIGlmIChwYXR0ZXJuID09IG51bGwpIHtcbiAgICAgICAgIHBhdHRlcm4gPSAvXFx3LztcbiAgICAgICB9XG4gICAgICAgaWYgKHByZWZpeCA9PSBudWxsKSB7XG4gICAgICAgICBwcmVmaXggPSAnJztcbiAgICAgICB9XG4gICAgICAgaWYgKHByZWZpeC5sZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgICAgIH1cbiAgICAgICBpZiAobWVtb3JhYmxlKSB7XG4gICAgICAgICBpZiAocHJlZml4Lm1hdGNoKGNvbnNvbmFudCkpIHtcbiAgICAgICAgICAgcGF0dGVybiA9IHZvd2VsO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgcGF0dGVybiA9IGNvbnNvbmFudDtcbiAgICAgICAgIH1cbiAgICAgICB9XG4gICAgICAgbiA9IGZha2VyLnJhbmRvbS5udW1iZXIoOTQpICsgMzM7XG4gICAgICAgY2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobik7XG4gICAgICAgaWYgKG1lbW9yYWJsZSkge1xuICAgICAgICAgY2hhciA9IGNoYXIudG9Mb3dlckNhc2UoKTtcbiAgICAgICB9XG4gICAgICAgaWYgKCFjaGFyLm1hdGNoKHBhdHRlcm4pKSB7XG4gICAgICAgICByZXR1cm4gX3Bhc3N3b3JkKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpO1xuICAgICAgIH1cbiAgICAgICByZXR1cm4gX3Bhc3N3b3JkKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBcIlwiICsgcHJlZml4ICsgY2hhcik7XG4gICAgIH07XG4gICAgIHJldHVybiBfcGFzc3dvcmQobGVuLCBtZW1vcmFibGUsIHBhdHRlcm4sIHByZWZpeCk7XG4gICB9XG5cbiAgc2VsZi5wYXNzd29yZC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBwYXNzd29yZC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1xuICAgICAgXCJBTTd6bDZNZ1wiLFxuICAgICAgXCJzdXNlam9mZVwiXG4gICAgXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJsZW5ndGhcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgcGFzc3dvcmQuXCJcbiAgICAgIH0sXG4gICAgICBcIm1lbW9yYWJsZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgYSBwYXNzd29yZCBzaG91bGQgYmUgZWFzeSB0byByZW1lbWJlci5cIlxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInJlZ2V4XCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHJlZ2V4IHRvIG1hdGNoIGVhY2ggY2hhcmFjdGVyIG9mIHRoZSBwYXNzd29yZCBhZ2FpbnN0LiBUaGlzIHBhcmFtZXRlciB3aWxsIGJlIG5lZ2F0ZWQgaWYgdGhlIG1lbW9yYWJsZSBzZXR0aW5nIGlzIHR1cm5lZCBvbi5cIlxuICAgICAgfSxcbiAgICAgIFwicHJlZml4XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHZhbHVlIHRvIHByZXBlbmQgdG8gdGhlIGdlbmVyYXRlZCBwYXNzd29yZC4gVGhlIHByZWZpeCBjb3VudHMgdG93YXJkcyB0aGUgbGVuZ3RoIG9mIHRoZSBwYXNzd29yZC5cIlxuICAgICAgfVxuICAgIH1cbiAgfTtcblxufTtcblxuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gSW50ZXJuZXQ7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIyMjXCIsXG4gIFwiIyMjI1wiLFxuICBcIiMjI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje2NpdHlfcHJlZml4fSAje05hbWUuZmlyc3RfbmFtZX0je2NpdHlfc3VmZml4fVwiLFxuICBcIiN7Y2l0eV9wcmVmaXh9ICN7TmFtZS5maXJzdF9uYW1lfVwiLFxuICBcIiN7TmFtZS5maXJzdF9uYW1lfSN7Y2l0eV9zdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0je2NpdHlfc3VmZml4fVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJOb3J0aFwiLFxuICBcIkVhc3RcIixcbiAgXCJXZXN0XCIsXG4gIFwiU291dGhcIixcbiAgXCJOZXdcIixcbiAgXCJMYWtlXCIsXG4gIFwiUG9ydFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJ0b3duXCIsXG4gIFwidG9uXCIsXG4gIFwibGFuZFwiLFxuICBcInZpbGxlXCIsXG4gIFwiYmVyZ1wiLFxuICBcImJ1cmdoXCIsXG4gIFwiYm9yb3VnaFwiLFxuICBcImJ1cnlcIixcbiAgXCJ2aWV3XCIsXG4gIFwicG9ydFwiLFxuICBcIm1vdXRoXCIsXG4gIFwic3RhZFwiLFxuICBcImZ1cnRcIixcbiAgXCJjaGVzdGVyXCIsXG4gIFwibW91dGhcIixcbiAgXCJmb3J0XCIsXG4gIFwiaGF2ZW5cIixcbiAgXCJzaWRlXCIsXG4gIFwic2hpcmVcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWZnaGFuaXN0YW5cIixcbiAgXCJBbGJhbmlhXCIsXG4gIFwiQWxnZXJpYVwiLFxuICBcIkFtZXJpY2FuIFNhbW9hXCIsXG4gIFwiQW5kb3JyYVwiLFxuICBcIkFuZ29sYVwiLFxuICBcIkFuZ3VpbGxhXCIsXG4gIFwiQW50YXJjdGljYSAodGhlIHRlcnJpdG9yeSBTb3V0aCBvZiA2MCBkZWcgUylcIixcbiAgXCJBbnRpZ3VhIGFuZCBCYXJidWRhXCIsXG4gIFwiQXJnZW50aW5hXCIsXG4gIFwiQXJtZW5pYVwiLFxuICBcIkFydWJhXCIsXG4gIFwiQXVzdHJhbGlhXCIsXG4gIFwiQXVzdHJpYVwiLFxuICBcIkF6ZXJiYWlqYW5cIixcbiAgXCJCYWhhbWFzXCIsXG4gIFwiQmFocmFpblwiLFxuICBcIkJhbmdsYWRlc2hcIixcbiAgXCJCYXJiYWRvc1wiLFxuICBcIkJlbGFydXNcIixcbiAgXCJCZWxnaXVtXCIsXG4gIFwiQmVsaXplXCIsXG4gIFwiQmVuaW5cIixcbiAgXCJCZXJtdWRhXCIsXG4gIFwiQmh1dGFuXCIsXG4gIFwiQm9saXZpYVwiLFxuICBcIkJvc25pYSBhbmQgSGVyemVnb3ZpbmFcIixcbiAgXCJCb3Rzd2FuYVwiLFxuICBcIkJvdXZldCBJc2xhbmQgKEJvdXZldG95YSlcIixcbiAgXCJCcmF6aWxcIixcbiAgXCJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnkgKENoYWdvcyBBcmNoaXBlbGFnbylcIixcbiAgXCJCcnVuZWkgRGFydXNzYWxhbVwiLFxuICBcIkJ1bGdhcmlhXCIsXG4gIFwiQnVya2luYSBGYXNvXCIsXG4gIFwiQnVydW5kaVwiLFxuICBcIkNhbWJvZGlhXCIsXG4gIFwiQ2FtZXJvb25cIixcbiAgXCJDYW5hZGFcIixcbiAgXCJDYXBlIFZlcmRlXCIsXG4gIFwiQ2F5bWFuIElzbGFuZHNcIixcbiAgXCJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWNcIixcbiAgXCJDaGFkXCIsXG4gIFwiQ2hpbGVcIixcbiAgXCJDaGluYVwiLFxuICBcIkNocmlzdG1hcyBJc2xhbmRcIixcbiAgXCJDb2NvcyAoS2VlbGluZykgSXNsYW5kc1wiLFxuICBcIkNvbG9tYmlhXCIsXG4gIFwiQ29tb3Jvc1wiLFxuICBcIkNvbmdvXCIsXG4gIFwiQ29vayBJc2xhbmRzXCIsXG4gIFwiQ29zdGEgUmljYVwiLFxuICBcIkNvdGUgZCdJdm9pcmVcIixcbiAgXCJDcm9hdGlhXCIsXG4gIFwiQ3ViYVwiLFxuICBcIkN5cHJ1c1wiLFxuICBcIkN6ZWNoIFJlcHVibGljXCIsXG4gIFwiRGVubWFya1wiLFxuICBcIkRqaWJvdXRpXCIsXG4gIFwiRG9taW5pY2FcIixcbiAgXCJEb21pbmljYW4gUmVwdWJsaWNcIixcbiAgXCJFY3VhZG9yXCIsXG4gIFwiRWd5cHRcIixcbiAgXCJFbCBTYWx2YWRvclwiLFxuICBcIkVxdWF0b3JpYWwgR3VpbmVhXCIsXG4gIFwiRXJpdHJlYVwiLFxuICBcIkVzdG9uaWFcIixcbiAgXCJFdGhpb3BpYVwiLFxuICBcIkZhcm9lIElzbGFuZHNcIixcbiAgXCJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcylcIixcbiAgXCJGaWppXCIsXG4gIFwiRmlubGFuZFwiLFxuICBcIkZyYW5jZVwiLFxuICBcIkZyZW5jaCBHdWlhbmFcIixcbiAgXCJGcmVuY2ggUG9seW5lc2lhXCIsXG4gIFwiRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzXCIsXG4gIFwiR2Fib25cIixcbiAgXCJHYW1iaWFcIixcbiAgXCJHZW9yZ2lhXCIsXG4gIFwiR2VybWFueVwiLFxuICBcIkdoYW5hXCIsXG4gIFwiR2licmFsdGFyXCIsXG4gIFwiR3JlZWNlXCIsXG4gIFwiR3JlZW5sYW5kXCIsXG4gIFwiR3JlbmFkYVwiLFxuICBcIkd1YWRlbG91cGVcIixcbiAgXCJHdWFtXCIsXG4gIFwiR3VhdGVtYWxhXCIsXG4gIFwiR3Vlcm5zZXlcIixcbiAgXCJHdWluZWFcIixcbiAgXCJHdWluZWEtQmlzc2F1XCIsXG4gIFwiR3V5YW5hXCIsXG4gIFwiSGFpdGlcIixcbiAgXCJIZWFyZCBJc2xhbmQgYW5kIE1jRG9uYWxkIElzbGFuZHNcIixcbiAgXCJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKVwiLFxuICBcIkhvbmR1cmFzXCIsXG4gIFwiSG9uZyBLb25nXCIsXG4gIFwiSHVuZ2FyeVwiLFxuICBcIkljZWxhbmRcIixcbiAgXCJJbmRpYVwiLFxuICBcIkluZG9uZXNpYVwiLFxuICBcIklyYW5cIixcbiAgXCJJcmFxXCIsXG4gIFwiSXJlbGFuZFwiLFxuICBcIklzbGUgb2YgTWFuXCIsXG4gIFwiSXNyYWVsXCIsXG4gIFwiSXRhbHlcIixcbiAgXCJKYW1haWNhXCIsXG4gIFwiSmFwYW5cIixcbiAgXCJKZXJzZXlcIixcbiAgXCJKb3JkYW5cIixcbiAgXCJLYXpha2hzdGFuXCIsXG4gIFwiS2VueWFcIixcbiAgXCJLaXJpYmF0aVwiLFxuICBcIkRlbW9jcmF0aWMgUGVvcGxlJ3MgUmVwdWJsaWMgb2YgS29yZWFcIixcbiAgXCJSZXB1YmxpYyBvZiBLb3JlYVwiLFxuICBcIkt1d2FpdFwiLFxuICBcIkt5cmd5eiBSZXB1YmxpY1wiLFxuICBcIkxhbyBQZW9wbGUncyBEZW1vY3JhdGljIFJlcHVibGljXCIsXG4gIFwiTGF0dmlhXCIsXG4gIFwiTGViYW5vblwiLFxuICBcIkxlc290aG9cIixcbiAgXCJMaWJlcmlhXCIsXG4gIFwiTGlieWFuIEFyYWIgSmFtYWhpcml5YVwiLFxuICBcIkxpZWNodGVuc3RlaW5cIixcbiAgXCJMaXRodWFuaWFcIixcbiAgXCJMdXhlbWJvdXJnXCIsXG4gIFwiTWFjYW9cIixcbiAgXCJNYWNlZG9uaWFcIixcbiAgXCJNYWRhZ2FzY2FyXCIsXG4gIFwiTWFsYXdpXCIsXG4gIFwiTWFsYXlzaWFcIixcbiAgXCJNYWxkaXZlc1wiLFxuICBcIk1hbGlcIixcbiAgXCJNYWx0YVwiLFxuICBcIk1hcnNoYWxsIElzbGFuZHNcIixcbiAgXCJNYXJ0aW5pcXVlXCIsXG4gIFwiTWF1cml0YW5pYVwiLFxuICBcIk1hdXJpdGl1c1wiLFxuICBcIk1heW90dGVcIixcbiAgXCJNZXhpY29cIixcbiAgXCJNaWNyb25lc2lhXCIsXG4gIFwiTW9sZG92YVwiLFxuICBcIk1vbmFjb1wiLFxuICBcIk1vbmdvbGlhXCIsXG4gIFwiTW9udGVuZWdyb1wiLFxuICBcIk1vbnRzZXJyYXRcIixcbiAgXCJNb3JvY2NvXCIsXG4gIFwiTW96YW1iaXF1ZVwiLFxuICBcIk15YW5tYXJcIixcbiAgXCJOYW1pYmlhXCIsXG4gIFwiTmF1cnVcIixcbiAgXCJOZXBhbFwiLFxuICBcIk5ldGhlcmxhbmRzIEFudGlsbGVzXCIsXG4gIFwiTmV0aGVybGFuZHNcIixcbiAgXCJOZXcgQ2FsZWRvbmlhXCIsXG4gIFwiTmV3IFplYWxhbmRcIixcbiAgXCJOaWNhcmFndWFcIixcbiAgXCJOaWdlclwiLFxuICBcIk5pZ2VyaWFcIixcbiAgXCJOaXVlXCIsXG4gIFwiTm9yZm9sayBJc2xhbmRcIixcbiAgXCJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHNcIixcbiAgXCJOb3J3YXlcIixcbiAgXCJPbWFuXCIsXG4gIFwiUGFraXN0YW5cIixcbiAgXCJQYWxhdVwiLFxuICBcIlBhbGVzdGluaWFuIFRlcnJpdG9yeVwiLFxuICBcIlBhbmFtYVwiLFxuICBcIlBhcHVhIE5ldyBHdWluZWFcIixcbiAgXCJQYXJhZ3VheVwiLFxuICBcIlBlcnVcIixcbiAgXCJQaGlsaXBwaW5lc1wiLFxuICBcIlBpdGNhaXJuIElzbGFuZHNcIixcbiAgXCJQb2xhbmRcIixcbiAgXCJQb3J0dWdhbFwiLFxuICBcIlB1ZXJ0byBSaWNvXCIsXG4gIFwiUWF0YXJcIixcbiAgXCJSZXVuaW9uXCIsXG4gIFwiUm9tYW5pYVwiLFxuICBcIlJ1c3NpYW4gRmVkZXJhdGlvblwiLFxuICBcIlJ3YW5kYVwiLFxuICBcIlNhaW50IEJhcnRoZWxlbXlcIixcbiAgXCJTYWludCBIZWxlbmFcIixcbiAgXCJTYWludCBLaXR0cyBhbmQgTmV2aXNcIixcbiAgXCJTYWludCBMdWNpYVwiLFxuICBcIlNhaW50IE1hcnRpblwiLFxuICBcIlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb25cIixcbiAgXCJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lc1wiLFxuICBcIlNhbW9hXCIsXG4gIFwiU2FuIE1hcmlub1wiLFxuICBcIlNhbyBUb21lIGFuZCBQcmluY2lwZVwiLFxuICBcIlNhdWRpIEFyYWJpYVwiLFxuICBcIlNlbmVnYWxcIixcbiAgXCJTZXJiaWFcIixcbiAgXCJTZXljaGVsbGVzXCIsXG4gIFwiU2llcnJhIExlb25lXCIsXG4gIFwiU2luZ2Fwb3JlXCIsXG4gIFwiU2xvdmFraWEgKFNsb3ZhayBSZXB1YmxpYylcIixcbiAgXCJTbG92ZW5pYVwiLFxuICBcIlNvbG9tb24gSXNsYW5kc1wiLFxuICBcIlNvbWFsaWFcIixcbiAgXCJTb3V0aCBBZnJpY2FcIixcbiAgXCJTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kc1wiLFxuICBcIlNwYWluXCIsXG4gIFwiU3JpIExhbmthXCIsXG4gIFwiU3VkYW5cIixcbiAgXCJTdXJpbmFtZVwiLFxuICBcIlN2YWxiYXJkICYgSmFuIE1heWVuIElzbGFuZHNcIixcbiAgXCJTd2F6aWxhbmRcIixcbiAgXCJTd2VkZW5cIixcbiAgXCJTd2l0emVybGFuZFwiLFxuICBcIlN5cmlhbiBBcmFiIFJlcHVibGljXCIsXG4gIFwiVGFpd2FuXCIsXG4gIFwiVGFqaWtpc3RhblwiLFxuICBcIlRhbnphbmlhXCIsXG4gIFwiVGhhaWxhbmRcIixcbiAgXCJUaW1vci1MZXN0ZVwiLFxuICBcIlRvZ29cIixcbiAgXCJUb2tlbGF1XCIsXG4gIFwiVG9uZ2FcIixcbiAgXCJUcmluaWRhZCBhbmQgVG9iYWdvXCIsXG4gIFwiVHVuaXNpYVwiLFxuICBcIlR1cmtleVwiLFxuICBcIlR1cmttZW5pc3RhblwiLFxuICBcIlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kc1wiLFxuICBcIlR1dmFsdVwiLFxuICBcIlVnYW5kYVwiLFxuICBcIlVrcmFpbmVcIixcbiAgXCJVbml0ZWQgQXJhYiBFbWlyYXRlc1wiLFxuICBcIlVuaXRlZCBLaW5nZG9tXCIsXG4gIFwiVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhXCIsXG4gIFwiVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzXCIsXG4gIFwiVXJ1Z3VheVwiLFxuICBcIlV6YmVraXN0YW5cIixcbiAgXCJWYW51YXR1XCIsXG4gIFwiVmVuZXp1ZWxhXCIsXG4gIFwiVmlldG5hbVwiLFxuICBcIlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoXCIsXG4gIFwiVmlyZ2luIElzbGFuZHMsIFUuUy5cIixcbiAgXCJXYWxsaXMgYW5kIEZ1dHVuYVwiLFxuICBcIldlc3Rlcm4gU2FoYXJhXCIsXG4gIFwiWWVtZW5cIixcbiAgXCJaYW1iaWFcIixcbiAgXCJaaW1iYWJ3ZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBRFwiLFxuICBcIkFFXCIsXG4gIFwiQUZcIixcbiAgXCJBR1wiLFxuICBcIkFJXCIsXG4gIFwiQUxcIixcbiAgXCJBTVwiLFxuICBcIkFPXCIsXG4gIFwiQVFcIixcbiAgXCJBUlwiLFxuICBcIkFTXCIsXG4gIFwiQVRcIixcbiAgXCJBVVwiLFxuICBcIkFXXCIsXG4gIFwiQVhcIixcbiAgXCJBWlwiLFxuICBcIkJBXCIsXG4gIFwiQkJcIixcbiAgXCJCRFwiLFxuICBcIkJFXCIsXG4gIFwiQkZcIixcbiAgXCJCR1wiLFxuICBcIkJIXCIsXG4gIFwiQklcIixcbiAgXCJCSlwiLFxuICBcIkJMXCIsXG4gIFwiQk1cIixcbiAgXCJCTlwiLFxuICBcIkJPXCIsXG4gIFwiQlFcIixcbiAgXCJCUVwiLFxuICBcIkJSXCIsXG4gIFwiQlNcIixcbiAgXCJCVFwiLFxuICBcIkJWXCIsXG4gIFwiQldcIixcbiAgXCJCWVwiLFxuICBcIkJaXCIsXG4gIFwiQ0FcIixcbiAgXCJDQ1wiLFxuICBcIkNEXCIsXG4gIFwiQ0ZcIixcbiAgXCJDR1wiLFxuICBcIkNIXCIsXG4gIFwiQ0lcIixcbiAgXCJDS1wiLFxuICBcIkNMXCIsXG4gIFwiQ01cIixcbiAgXCJDTlwiLFxuICBcIkNPXCIsXG4gIFwiQ1JcIixcbiAgXCJDVVwiLFxuICBcIkNWXCIsXG4gIFwiQ1dcIixcbiAgXCJDWFwiLFxuICBcIkNZXCIsXG4gIFwiQ1pcIixcbiAgXCJERVwiLFxuICBcIkRKXCIsXG4gIFwiREtcIixcbiAgXCJETVwiLFxuICBcIkRPXCIsXG4gIFwiRFpcIixcbiAgXCJFQ1wiLFxuICBcIkVFXCIsXG4gIFwiRUdcIixcbiAgXCJFSFwiLFxuICBcIkVSXCIsXG4gIFwiRVNcIixcbiAgXCJFVFwiLFxuICBcIkZJXCIsXG4gIFwiRkpcIixcbiAgXCJGS1wiLFxuICBcIkZNXCIsXG4gIFwiRk9cIixcbiAgXCJGUlwiLFxuICBcIkdBXCIsXG4gIFwiR0JcIixcbiAgXCJHRFwiLFxuICBcIkdFXCIsXG4gIFwiR0ZcIixcbiAgXCJHR1wiLFxuICBcIkdIXCIsXG4gIFwiR0lcIixcbiAgXCJHTFwiLFxuICBcIkdNXCIsXG4gIFwiR05cIixcbiAgXCJHUFwiLFxuICBcIkdRXCIsXG4gIFwiR1JcIixcbiAgXCJHU1wiLFxuICBcIkdUXCIsXG4gIFwiR1VcIixcbiAgXCJHV1wiLFxuICBcIkdZXCIsXG4gIFwiSEtcIixcbiAgXCJITVwiLFxuICBcIkhOXCIsXG4gIFwiSFJcIixcbiAgXCJIVFwiLFxuICBcIkhVXCIsXG4gIFwiSURcIixcbiAgXCJJRVwiLFxuICBcIklMXCIsXG4gIFwiSU1cIixcbiAgXCJJTlwiLFxuICBcIklPXCIsXG4gIFwiSVFcIixcbiAgXCJJUlwiLFxuICBcIklTXCIsXG4gIFwiSVRcIixcbiAgXCJKRVwiLFxuICBcIkpNXCIsXG4gIFwiSk9cIixcbiAgXCJKUFwiLFxuICBcIktFXCIsXG4gIFwiS0dcIixcbiAgXCJLSFwiLFxuICBcIktJXCIsXG4gIFwiS01cIixcbiAgXCJLTlwiLFxuICBcIktQXCIsXG4gIFwiS1JcIixcbiAgXCJLV1wiLFxuICBcIktZXCIsXG4gIFwiS1pcIixcbiAgXCJMQVwiLFxuICBcIkxCXCIsXG4gIFwiTENcIixcbiAgXCJMSVwiLFxuICBcIkxLXCIsXG4gIFwiTFJcIixcbiAgXCJMU1wiLFxuICBcIkxUXCIsXG4gIFwiTFVcIixcbiAgXCJMVlwiLFxuICBcIkxZXCIsXG4gIFwiTUFcIixcbiAgXCJNQ1wiLFxuICBcIk1EXCIsXG4gIFwiTUVcIixcbiAgXCJNRlwiLFxuICBcIk1HXCIsXG4gIFwiTUhcIixcbiAgXCJNS1wiLFxuICBcIk1MXCIsXG4gIFwiTU1cIixcbiAgXCJNTlwiLFxuICBcIk1PXCIsXG4gIFwiTVBcIixcbiAgXCJNUVwiLFxuICBcIk1SXCIsXG4gIFwiTVNcIixcbiAgXCJNVFwiLFxuICBcIk1VXCIsXG4gIFwiTVZcIixcbiAgXCJNV1wiLFxuICBcIk1YXCIsXG4gIFwiTVlcIixcbiAgXCJNWlwiLFxuICBcIk5BXCIsXG4gIFwiTkNcIixcbiAgXCJORVwiLFxuICBcIk5GXCIsXG4gIFwiTkdcIixcbiAgXCJOSVwiLFxuICBcIk5MXCIsXG4gIFwiTk9cIixcbiAgXCJOUFwiLFxuICBcIk5SXCIsXG4gIFwiTlVcIixcbiAgXCJOWlwiLFxuICBcIk9NXCIsXG4gIFwiUEFcIixcbiAgXCJQRVwiLFxuICBcIlBGXCIsXG4gIFwiUEdcIixcbiAgXCJQSFwiLFxuICBcIlBLXCIsXG4gIFwiUExcIixcbiAgXCJQTVwiLFxuICBcIlBOXCIsXG4gIFwiUFJcIixcbiAgXCJQU1wiLFxuICBcIlBUXCIsXG4gIFwiUFdcIixcbiAgXCJQWVwiLFxuICBcIlFBXCIsXG4gIFwiUkVcIixcbiAgXCJST1wiLFxuICBcIlJTXCIsXG4gIFwiUlVcIixcbiAgXCJSV1wiLFxuICBcIlNBXCIsXG4gIFwiU0JcIixcbiAgXCJTQ1wiLFxuICBcIlNEXCIsXG4gIFwiU0VcIixcbiAgXCJTR1wiLFxuICBcIlNIXCIsXG4gIFwiU0lcIixcbiAgXCJTSlwiLFxuICBcIlNLXCIsXG4gIFwiU0xcIixcbiAgXCJTTVwiLFxuICBcIlNOXCIsXG4gIFwiU09cIixcbiAgXCJTUlwiLFxuICBcIlNTXCIsXG4gIFwiU1RcIixcbiAgXCJTVlwiLFxuICBcIlNYXCIsXG4gIFwiU1lcIixcbiAgXCJTWlwiLFxuICBcIlRDXCIsXG4gIFwiVERcIixcbiAgXCJURlwiLFxuICBcIlRHXCIsXG4gIFwiVEhcIixcbiAgXCJUSlwiLFxuICBcIlRLXCIsXG4gIFwiVExcIixcbiAgXCJUTVwiLFxuICBcIlROXCIsXG4gIFwiVE9cIixcbiAgXCJUUlwiLFxuICBcIlRUXCIsXG4gIFwiVFZcIixcbiAgXCJUV1wiLFxuICBcIlRaXCIsXG4gIFwiVUFcIixcbiAgXCJVR1wiLFxuICBcIlVNXCIsXG4gIFwiVVNcIixcbiAgXCJVWVwiLFxuICBcIlVaXCIsXG4gIFwiVkFcIixcbiAgXCJWQ1wiLFxuICBcIlZFXCIsXG4gIFwiVkdcIixcbiAgXCJWSVwiLFxuICBcIlZOXCIsXG4gIFwiVlVcIixcbiAgXCJXRlwiLFxuICBcIldTXCIsXG4gIFwiWUVcIixcbiAgXCJZVFwiLFxuICBcIlpBXCIsXG4gIFwiWk1cIixcbiAgXCJaV1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBdm9uXCIsXG4gIFwiQmVkZm9yZHNoaXJlXCIsXG4gIFwiQmVya3NoaXJlXCIsXG4gIFwiQm9yZGVyc1wiLFxuICBcIkJ1Y2tpbmdoYW1zaGlyZVwiLFxuICBcIkNhbWJyaWRnZXNoaXJlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiXG5dO1xuIiwidmFyIGFkZHJlc3MgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYWRkcmVzcztcbmFkZHJlc3MuY2l0eV9wcmVmaXggPSByZXF1aXJlKFwiLi9jaXR5X3ByZWZpeFwiKTtcbmFkZHJlc3MuY2l0eV9zdWZmaXggPSByZXF1aXJlKFwiLi9jaXR5X3N1ZmZpeFwiKTtcbmFkZHJlc3MuY291bnR5ID0gcmVxdWlyZShcIi4vY291bnR5XCIpO1xuYWRkcmVzcy5jb3VudHJ5ID0gcmVxdWlyZShcIi4vY291bnRyeVwiKTtcbmFkZHJlc3MuY291bnRyeV9jb2RlID0gcmVxdWlyZShcIi4vY291bnRyeV9jb2RlXCIpO1xuYWRkcmVzcy5idWlsZGluZ19udW1iZXIgPSByZXF1aXJlKFwiLi9idWlsZGluZ19udW1iZXJcIik7XG5hZGRyZXNzLnN0cmVldF9zdWZmaXggPSByZXF1aXJlKFwiLi9zdHJlZXRfc3VmZml4XCIpO1xuYWRkcmVzcy5zZWNvbmRhcnlfYWRkcmVzcyA9IHJlcXVpcmUoXCIuL3NlY29uZGFyeV9hZGRyZXNzXCIpO1xuYWRkcmVzcy5wb3N0Y29kZSA9IHJlcXVpcmUoXCIuL3Bvc3Rjb2RlXCIpO1xuYWRkcmVzcy5wb3N0Y29kZV9ieV9zdGF0ZSA9IHJlcXVpcmUoXCIuL3Bvc3Rjb2RlX2J5X3N0YXRlXCIpO1xuYWRkcmVzcy5zdGF0ZSA9IHJlcXVpcmUoXCIuL3N0YXRlXCIpO1xuYWRkcmVzcy5zdGF0ZV9hYmJyID0gcmVxdWlyZShcIi4vc3RhdGVfYWJiclwiKTtcbmFkZHJlc3MudGltZV96b25lID0gcmVxdWlyZShcIi4vdGltZV96b25lXCIpO1xuYWRkcmVzcy5jaXR5ID0gcmVxdWlyZShcIi4vY2l0eVwiKTtcbmFkZHJlc3Muc3RyZWV0X25hbWUgPSByZXF1aXJlKFwiLi9zdHJlZXRfbmFtZVwiKTtcbmFkZHJlc3Muc3RyZWV0X2FkZHJlc3MgPSByZXF1aXJlKFwiLi9zdHJlZXRfYWRkcmVzc1wiKTtcbmFkZHJlc3MuZGVmYXVsdF9jb3VudHJ5ID0gcmVxdWlyZShcIi4vZGVmYXVsdF9jb3VudHJ5XCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMjI1wiLFxuICBcIiMjIyMjLSMjIyNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjIyNcIixcbiAgXCIjIyMjIy0jIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFwdC4gIyMjXCIsXG4gIFwiU3VpdGUgIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFsYWJhbWFcIixcbiAgXCJBbGFza2FcIixcbiAgXCJBcml6b25hXCIsXG4gIFwiQXJrYW5zYXNcIixcbiAgXCJDYWxpZm9ybmlhXCIsXG4gIFwiQ29sb3JhZG9cIixcbiAgXCJDb25uZWN0aWN1dFwiLFxuICBcIkRlbGF3YXJlXCIsXG4gIFwiRmxvcmlkYVwiLFxuICBcIkdlb3JnaWFcIixcbiAgXCJIYXdhaWlcIixcbiAgXCJJZGFob1wiLFxuICBcIklsbGlub2lzXCIsXG4gIFwiSW5kaWFuYVwiLFxuICBcIklvd2FcIixcbiAgXCJLYW5zYXNcIixcbiAgXCJLZW50dWNreVwiLFxuICBcIkxvdWlzaWFuYVwiLFxuICBcIk1haW5lXCIsXG4gIFwiTWFyeWxhbmRcIixcbiAgXCJNYXNzYWNodXNldHRzXCIsXG4gIFwiTWljaGlnYW5cIixcbiAgXCJNaW5uZXNvdGFcIixcbiAgXCJNaXNzaXNzaXBwaVwiLFxuICBcIk1pc3NvdXJpXCIsXG4gIFwiTW9udGFuYVwiLFxuICBcIk5lYnJhc2thXCIsXG4gIFwiTmV2YWRhXCIsXG4gIFwiTmV3IEhhbXBzaGlyZVwiLFxuICBcIk5ldyBKZXJzZXlcIixcbiAgXCJOZXcgTWV4aWNvXCIsXG4gIFwiTmV3IFlvcmtcIixcbiAgXCJOb3J0aCBDYXJvbGluYVwiLFxuICBcIk5vcnRoIERha290YVwiLFxuICBcIk9oaW9cIixcbiAgXCJPa2xhaG9tYVwiLFxuICBcIk9yZWdvblwiLFxuICBcIlBlbm5zeWx2YW5pYVwiLFxuICBcIlJob2RlIElzbGFuZFwiLFxuICBcIlNvdXRoIENhcm9saW5hXCIsXG4gIFwiU291dGggRGFrb3RhXCIsXG4gIFwiVGVubmVzc2VlXCIsXG4gIFwiVGV4YXNcIixcbiAgXCJVdGFoXCIsXG4gIFwiVmVybW9udFwiLFxuICBcIlZpcmdpbmlhXCIsXG4gIFwiV2FzaGluZ3RvblwiLFxuICBcIldlc3QgVmlyZ2luaWFcIixcbiAgXCJXaXNjb25zaW5cIixcbiAgXCJXeW9taW5nXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFMXCIsXG4gIFwiQUtcIixcbiAgXCJBWlwiLFxuICBcIkFSXCIsXG4gIFwiQ0FcIixcbiAgXCJDT1wiLFxuICBcIkNUXCIsXG4gIFwiREVcIixcbiAgXCJGTFwiLFxuICBcIkdBXCIsXG4gIFwiSElcIixcbiAgXCJJRFwiLFxuICBcIklMXCIsXG4gIFwiSU5cIixcbiAgXCJJQVwiLFxuICBcIktTXCIsXG4gIFwiS1lcIixcbiAgXCJMQVwiLFxuICBcIk1FXCIsXG4gIFwiTURcIixcbiAgXCJNQVwiLFxuICBcIk1JXCIsXG4gIFwiTU5cIixcbiAgXCJNU1wiLFxuICBcIk1PXCIsXG4gIFwiTVRcIixcbiAgXCJORVwiLFxuICBcIk5WXCIsXG4gIFwiTkhcIixcbiAgXCJOSlwiLFxuICBcIk5NXCIsXG4gIFwiTllcIixcbiAgXCJOQ1wiLFxuICBcIk5EXCIsXG4gIFwiT0hcIixcbiAgXCJPS1wiLFxuICBcIk9SXCIsXG4gIFwiUEFcIixcbiAgXCJSSVwiLFxuICBcIlNDXCIsXG4gIFwiU0RcIixcbiAgXCJUTlwiLFxuICBcIlRYXCIsXG4gIFwiVVRcIixcbiAgXCJWVFwiLFxuICBcIlZBXCIsXG4gIFwiV0FcIixcbiAgXCJXVlwiLFxuICBcIldJXCIsXG4gIFwiV1lcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tidWlsZGluZ19udW1iZXJ9ICN7c3RyZWV0X25hbWV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7TmFtZS5maXJzdF9uYW1lfSAje3N0cmVldF9zdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0gI3tzdHJlZXRfc3VmZml4fVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBbGxleVwiLFxuICBcIkF2ZW51ZVwiLFxuICBcIkJyYW5jaFwiLFxuICBcIkJyaWRnZVwiLFxuICBcIkJyb29rXCIsXG4gIFwiQnJvb2tzXCIsXG4gIFwiQnVyZ1wiLFxuICBcIkJ1cmdzXCIsXG4gIFwiQnlwYXNzXCIsXG4gIFwiQ2FtcFwiLFxuICBcIkNhbnlvblwiLFxuICBcIkNhcGVcIixcbiAgXCJDYXVzZXdheVwiLFxuICBcIkNlbnRlclwiLFxuICBcIkNlbnRlcnNcIixcbiAgXCJDaXJjbGVcIixcbiAgXCJDaXJjbGVzXCIsXG4gIFwiQ2xpZmZcIixcbiAgXCJDbGlmZnNcIixcbiAgXCJDbHViXCIsXG4gIFwiQ29tbW9uXCIsXG4gIFwiQ29ybmVyXCIsXG4gIFwiQ29ybmVyc1wiLFxuICBcIkNvdXJzZVwiLFxuICBcIkNvdXJ0XCIsXG4gIFwiQ291cnRzXCIsXG4gIFwiQ292ZVwiLFxuICBcIkNvdmVzXCIsXG4gIFwiQ3JlZWtcIixcbiAgXCJDcmVzY2VudFwiLFxuICBcIkNyZXN0XCIsXG4gIFwiQ3Jvc3NpbmdcIixcbiAgXCJDcm9zc3JvYWRcIixcbiAgXCJDdXJ2ZVwiLFxuICBcIkRhbGVcIixcbiAgXCJEYW1cIixcbiAgXCJEaXZpZGVcIixcbiAgXCJEcml2ZVwiLFxuICBcIkRyaXZlXCIsXG4gIFwiRHJpdmVzXCIsXG4gIFwiRXN0YXRlXCIsXG4gIFwiRXN0YXRlc1wiLFxuICBcIkV4cHJlc3N3YXlcIixcbiAgXCJFeHRlbnNpb25cIixcbiAgXCJFeHRlbnNpb25zXCIsXG4gIFwiRmFsbFwiLFxuICBcIkZhbGxzXCIsXG4gIFwiRmVycnlcIixcbiAgXCJGaWVsZFwiLFxuICBcIkZpZWxkc1wiLFxuICBcIkZsYXRcIixcbiAgXCJGbGF0c1wiLFxuICBcIkZvcmRcIixcbiAgXCJGb3Jkc1wiLFxuICBcIkZvcmVzdFwiLFxuICBcIkZvcmdlXCIsXG4gIFwiRm9yZ2VzXCIsXG4gIFwiRm9ya1wiLFxuICBcIkZvcmtzXCIsXG4gIFwiRm9ydFwiLFxuICBcIkZyZWV3YXlcIixcbiAgXCJHYXJkZW5cIixcbiAgXCJHYXJkZW5zXCIsXG4gIFwiR2F0ZXdheVwiLFxuICBcIkdsZW5cIixcbiAgXCJHbGVuc1wiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZW5zXCIsXG4gIFwiR3JvdmVcIixcbiAgXCJHcm92ZXNcIixcbiAgXCJIYXJib3JcIixcbiAgXCJIYXJib3JzXCIsXG4gIFwiSGF2ZW5cIixcbiAgXCJIZWlnaHRzXCIsXG4gIFwiSGlnaHdheVwiLFxuICBcIkhpbGxcIixcbiAgXCJIaWxsc1wiLFxuICBcIkhvbGxvd1wiLFxuICBcIklubGV0XCIsXG4gIFwiSW5sZXRcIixcbiAgXCJJc2xhbmRcIixcbiAgXCJJc2xhbmRcIixcbiAgXCJJc2xhbmRzXCIsXG4gIFwiSXNsYW5kc1wiLFxuICBcIklzbGVcIixcbiAgXCJJc2xlXCIsXG4gIFwiSnVuY3Rpb25cIixcbiAgXCJKdW5jdGlvbnNcIixcbiAgXCJLZXlcIixcbiAgXCJLZXlzXCIsXG4gIFwiS25vbGxcIixcbiAgXCJLbm9sbHNcIixcbiAgXCJMYWtlXCIsXG4gIFwiTGFrZXNcIixcbiAgXCJMYW5kXCIsXG4gIFwiTGFuZGluZ1wiLFxuICBcIkxhbmVcIixcbiAgXCJMaWdodFwiLFxuICBcIkxpZ2h0c1wiLFxuICBcIkxvYWZcIixcbiAgXCJMb2NrXCIsXG4gIFwiTG9ja3NcIixcbiAgXCJMb2Nrc1wiLFxuICBcIkxvZGdlXCIsXG4gIFwiTG9kZ2VcIixcbiAgXCJMb29wXCIsXG4gIFwiTWFsbFwiLFxuICBcIk1hbm9yXCIsXG4gIFwiTWFub3JzXCIsXG4gIFwiTWVhZG93XCIsXG4gIFwiTWVhZG93c1wiLFxuICBcIk1ld3NcIixcbiAgXCJNaWxsXCIsXG4gIFwiTWlsbHNcIixcbiAgXCJNaXNzaW9uXCIsXG4gIFwiTWlzc2lvblwiLFxuICBcIk1vdG9yd2F5XCIsXG4gIFwiTW91bnRcIixcbiAgXCJNb3VudGFpblwiLFxuICBcIk1vdW50YWluXCIsXG4gIFwiTW91bnRhaW5zXCIsXG4gIFwiTW91bnRhaW5zXCIsXG4gIFwiTmVja1wiLFxuICBcIk9yY2hhcmRcIixcbiAgXCJPdmFsXCIsXG4gIFwiT3ZlcnBhc3NcIixcbiAgXCJQYXJrXCIsXG4gIFwiUGFya3NcIixcbiAgXCJQYXJrd2F5XCIsXG4gIFwiUGFya3dheXNcIixcbiAgXCJQYXNzXCIsXG4gIFwiUGFzc2FnZVwiLFxuICBcIlBhdGhcIixcbiAgXCJQaWtlXCIsXG4gIFwiUGluZVwiLFxuICBcIlBpbmVzXCIsXG4gIFwiUGxhY2VcIixcbiAgXCJQbGFpblwiLFxuICBcIlBsYWluc1wiLFxuICBcIlBsYWluc1wiLFxuICBcIlBsYXphXCIsXG4gIFwiUGxhemFcIixcbiAgXCJQb2ludFwiLFxuICBcIlBvaW50c1wiLFxuICBcIlBvcnRcIixcbiAgXCJQb3J0XCIsXG4gIFwiUG9ydHNcIixcbiAgXCJQb3J0c1wiLFxuICBcIlByYWlyaWVcIixcbiAgXCJQcmFpcmllXCIsXG4gIFwiUmFkaWFsXCIsXG4gIFwiUmFtcFwiLFxuICBcIlJhbmNoXCIsXG4gIFwiUmFwaWRcIixcbiAgXCJSYXBpZHNcIixcbiAgXCJSZXN0XCIsXG4gIFwiUmlkZ2VcIixcbiAgXCJSaWRnZXNcIixcbiAgXCJSaXZlclwiLFxuICBcIlJvYWRcIixcbiAgXCJSb2FkXCIsXG4gIFwiUm9hZHNcIixcbiAgXCJSb2Fkc1wiLFxuICBcIlJvdXRlXCIsXG4gIFwiUm93XCIsXG4gIFwiUnVlXCIsXG4gIFwiUnVuXCIsXG4gIFwiU2hvYWxcIixcbiAgXCJTaG9hbHNcIixcbiAgXCJTaG9yZVwiLFxuICBcIlNob3Jlc1wiLFxuICBcIlNreXdheVwiLFxuICBcIlNwcmluZ1wiLFxuICBcIlNwcmluZ3NcIixcbiAgXCJTcHJpbmdzXCIsXG4gIFwiU3B1clwiLFxuICBcIlNwdXJzXCIsXG4gIFwiU3F1YXJlXCIsXG4gIFwiU3F1YXJlXCIsXG4gIFwiU3F1YXJlc1wiLFxuICBcIlNxdWFyZXNcIixcbiAgXCJTdGF0aW9uXCIsXG4gIFwiU3RhdGlvblwiLFxuICBcIlN0cmF2ZW51ZVwiLFxuICBcIlN0cmF2ZW51ZVwiLFxuICBcIlN0cmVhbVwiLFxuICBcIlN0cmVhbVwiLFxuICBcIlN0cmVldFwiLFxuICBcIlN0cmVldFwiLFxuICBcIlN0cmVldHNcIixcbiAgXCJTdW1taXRcIixcbiAgXCJTdW1taXRcIixcbiAgXCJUZXJyYWNlXCIsXG4gIFwiVGhyb3VnaHdheVwiLFxuICBcIlRyYWNlXCIsXG4gIFwiVHJhY2tcIixcbiAgXCJUcmFmZmljd2F5XCIsXG4gIFwiVHJhaWxcIixcbiAgXCJUcmFpbFwiLFxuICBcIlR1bm5lbFwiLFxuICBcIlR1bm5lbFwiLFxuICBcIlR1cm5waWtlXCIsXG4gIFwiVHVybnBpa2VcIixcbiAgXCJVbmRlcnBhc3NcIixcbiAgXCJVbmlvblwiLFxuICBcIlVuaW9uc1wiLFxuICBcIlZhbGxleVwiLFxuICBcIlZhbGxleXNcIixcbiAgXCJWaWFcIixcbiAgXCJWaWFkdWN0XCIsXG4gIFwiVmlld1wiLFxuICBcIlZpZXdzXCIsXG4gIFwiVmlsbGFnZVwiLFxuICBcIlZpbGxhZ2VcIixcbiAgXCJWaWxsYWdlc1wiLFxuICBcIlZpbGxlXCIsXG4gIFwiVmlzdGFcIixcbiAgXCJWaXN0YVwiLFxuICBcIldhbGtcIixcbiAgXCJXYWxrc1wiLFxuICBcIldhbGxcIixcbiAgXCJXYXlcIixcbiAgXCJXYXlzXCIsXG4gIFwiV2VsbFwiLFxuICBcIldlbGxzXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlBhY2lmaWMvTWlkd2F5XCIsXG4gIFwiUGFjaWZpYy9QYWdvX1BhZ29cIixcbiAgXCJQYWNpZmljL0hvbm9sdWx1XCIsXG4gIFwiQW1lcmljYS9KdW5lYXVcIixcbiAgXCJBbWVyaWNhL0xvc19BbmdlbGVzXCIsXG4gIFwiQW1lcmljYS9UaWp1YW5hXCIsXG4gIFwiQW1lcmljYS9EZW52ZXJcIixcbiAgXCJBbWVyaWNhL1Bob2VuaXhcIixcbiAgXCJBbWVyaWNhL0NoaWh1YWh1YVwiLFxuICBcIkFtZXJpY2EvTWF6YXRsYW5cIixcbiAgXCJBbWVyaWNhL0NoaWNhZ29cIixcbiAgXCJBbWVyaWNhL1JlZ2luYVwiLFxuICBcIkFtZXJpY2EvTWV4aWNvX0NpdHlcIixcbiAgXCJBbWVyaWNhL01leGljb19DaXR5XCIsXG4gIFwiQW1lcmljYS9Nb250ZXJyZXlcIixcbiAgXCJBbWVyaWNhL0d1YXRlbWFsYVwiLFxuICBcIkFtZXJpY2EvTmV3X1lvcmtcIixcbiAgXCJBbWVyaWNhL0luZGlhbmEvSW5kaWFuYXBvbGlzXCIsXG4gIFwiQW1lcmljYS9Cb2dvdGFcIixcbiAgXCJBbWVyaWNhL0xpbWFcIixcbiAgXCJBbWVyaWNhL0xpbWFcIixcbiAgXCJBbWVyaWNhL0hhbGlmYXhcIixcbiAgXCJBbWVyaWNhL0NhcmFjYXNcIixcbiAgXCJBbWVyaWNhL0xhX1BhelwiLFxuICBcIkFtZXJpY2EvU2FudGlhZ29cIixcbiAgXCJBbWVyaWNhL1N0X0pvaG5zXCIsXG4gIFwiQW1lcmljYS9TYW9fUGF1bG9cIixcbiAgXCJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXNcIixcbiAgXCJBbWVyaWNhL0d1eWFuYVwiLFxuICBcIkFtZXJpY2EvR29kdGhhYlwiLFxuICBcIkF0bGFudGljL1NvdXRoX0dlb3JnaWFcIixcbiAgXCJBdGxhbnRpYy9Bem9yZXNcIixcbiAgXCJBdGxhbnRpYy9DYXBlX1ZlcmRlXCIsXG4gIFwiRXVyb3BlL0R1YmxpblwiLFxuICBcIkV1cm9wZS9Mb25kb25cIixcbiAgXCJFdXJvcGUvTGlzYm9uXCIsXG4gIFwiRXVyb3BlL0xvbmRvblwiLFxuICBcIkFmcmljYS9DYXNhYmxhbmNhXCIsXG4gIFwiQWZyaWNhL01vbnJvdmlhXCIsXG4gIFwiRXRjL1VUQ1wiLFxuICBcIkV1cm9wZS9CZWxncmFkZVwiLFxuICBcIkV1cm9wZS9CcmF0aXNsYXZhXCIsXG4gIFwiRXVyb3BlL0J1ZGFwZXN0XCIsXG4gIFwiRXVyb3BlL0xqdWJsamFuYVwiLFxuICBcIkV1cm9wZS9QcmFndWVcIixcbiAgXCJFdXJvcGUvU2FyYWpldm9cIixcbiAgXCJFdXJvcGUvU2tvcGplXCIsXG4gIFwiRXVyb3BlL1dhcnNhd1wiLFxuICBcIkV1cm9wZS9aYWdyZWJcIixcbiAgXCJFdXJvcGUvQnJ1c3NlbHNcIixcbiAgXCJFdXJvcGUvQ29wZW5oYWdlblwiLFxuICBcIkV1cm9wZS9NYWRyaWRcIixcbiAgXCJFdXJvcGUvUGFyaXNcIixcbiAgXCJFdXJvcGUvQW1zdGVyZGFtXCIsXG4gIFwiRXVyb3BlL0JlcmxpblwiLFxuICBcIkV1cm9wZS9CZXJsaW5cIixcbiAgXCJFdXJvcGUvUm9tZVwiLFxuICBcIkV1cm9wZS9TdG9ja2hvbG1cIixcbiAgXCJFdXJvcGUvVmllbm5hXCIsXG4gIFwiQWZyaWNhL0FsZ2llcnNcIixcbiAgXCJFdXJvcGUvQnVjaGFyZXN0XCIsXG4gIFwiQWZyaWNhL0NhaXJvXCIsXG4gIFwiRXVyb3BlL0hlbHNpbmtpXCIsXG4gIFwiRXVyb3BlL0tpZXZcIixcbiAgXCJFdXJvcGUvUmlnYVwiLFxuICBcIkV1cm9wZS9Tb2ZpYVwiLFxuICBcIkV1cm9wZS9UYWxsaW5uXCIsXG4gIFwiRXVyb3BlL1ZpbG5pdXNcIixcbiAgXCJFdXJvcGUvQXRoZW5zXCIsXG4gIFwiRXVyb3BlL0lzdGFuYnVsXCIsXG4gIFwiRXVyb3BlL01pbnNrXCIsXG4gIFwiQXNpYS9KZXJ1c2FsZW1cIixcbiAgXCJBZnJpY2EvSGFyYXJlXCIsXG4gIFwiQWZyaWNhL0pvaGFubmVzYnVyZ1wiLFxuICBcIkV1cm9wZS9Nb3Njb3dcIixcbiAgXCJFdXJvcGUvTW9zY293XCIsXG4gIFwiRXVyb3BlL01vc2Nvd1wiLFxuICBcIkFzaWEvS3V3YWl0XCIsXG4gIFwiQXNpYS9SaXlhZGhcIixcbiAgXCJBZnJpY2EvTmFpcm9iaVwiLFxuICBcIkFzaWEvQmFnaGRhZFwiLFxuICBcIkFzaWEvVGVocmFuXCIsXG4gIFwiQXNpYS9NdXNjYXRcIixcbiAgXCJBc2lhL011c2NhdFwiLFxuICBcIkFzaWEvQmFrdVwiLFxuICBcIkFzaWEvVGJpbGlzaVwiLFxuICBcIkFzaWEvWWVyZXZhblwiLFxuICBcIkFzaWEvS2FidWxcIixcbiAgXCJBc2lhL1lla2F0ZXJpbmJ1cmdcIixcbiAgXCJBc2lhL0thcmFjaGlcIixcbiAgXCJBc2lhL0thcmFjaGlcIixcbiAgXCJBc2lhL1Rhc2hrZW50XCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9LYXRobWFuZHVcIixcbiAgXCJBc2lhL0RoYWthXCIsXG4gIFwiQXNpYS9EaGFrYVwiLFxuICBcIkFzaWEvQ29sb21ib1wiLFxuICBcIkFzaWEvQWxtYXR5XCIsXG4gIFwiQXNpYS9Ob3Zvc2liaXJza1wiLFxuICBcIkFzaWEvUmFuZ29vblwiLFxuICBcIkFzaWEvQmFuZ2tva1wiLFxuICBcIkFzaWEvQmFuZ2tva1wiLFxuICBcIkFzaWEvSmFrYXJ0YVwiLFxuICBcIkFzaWEvS3Jhc25veWFyc2tcIixcbiAgXCJBc2lhL1NoYW5naGFpXCIsXG4gIFwiQXNpYS9DaG9uZ3FpbmdcIixcbiAgXCJBc2lhL0hvbmdfS29uZ1wiLFxuICBcIkFzaWEvVXJ1bXFpXCIsXG4gIFwiQXNpYS9LdWFsYV9MdW1wdXJcIixcbiAgXCJBc2lhL1NpbmdhcG9yZVwiLFxuICBcIkFzaWEvVGFpcGVpXCIsXG4gIFwiQXVzdHJhbGlhL1BlcnRoXCIsXG4gIFwiQXNpYS9Jcmt1dHNrXCIsXG4gIFwiQXNpYS9VbGFhbmJhYXRhclwiLFxuICBcIkFzaWEvU2VvdWxcIixcbiAgXCJBc2lhL1Rva3lvXCIsXG4gIFwiQXNpYS9Ub2t5b1wiLFxuICBcIkFzaWEvVG9reW9cIixcbiAgXCJBc2lhL1lha3V0c2tcIixcbiAgXCJBdXN0cmFsaWEvRGFyd2luXCIsXG4gIFwiQXVzdHJhbGlhL0FkZWxhaWRlXCIsXG4gIFwiQXVzdHJhbGlhL01lbGJvdXJuZVwiLFxuICBcIkF1c3RyYWxpYS9NZWxib3VybmVcIixcbiAgXCJBdXN0cmFsaWEvU3lkbmV5XCIsXG4gIFwiQXVzdHJhbGlhL0JyaXNiYW5lXCIsXG4gIFwiQXVzdHJhbGlhL0hvYmFydFwiLFxuICBcIkFzaWEvVmxhZGl2b3N0b2tcIixcbiAgXCJQYWNpZmljL0d1YW1cIixcbiAgXCJQYWNpZmljL1BvcnRfTW9yZXNieVwiLFxuICBcIkFzaWEvTWFnYWRhblwiLFxuICBcIkFzaWEvTWFnYWRhblwiLFxuICBcIlBhY2lmaWMvTm91bWVhXCIsXG4gIFwiUGFjaWZpYy9GaWppXCIsXG4gIFwiQXNpYS9LYW1jaGF0a2FcIixcbiAgXCJQYWNpZmljL01hanVyb1wiLFxuICBcIlBhY2lmaWMvQXVja2xhbmRcIixcbiAgXCJQYWNpZmljL0F1Y2tsYW5kXCIsXG4gIFwiUGFjaWZpYy9Ub25nYXRhcHVcIixcbiAgXCJQYWNpZmljL0Zha2FvZm9cIixcbiAgXCJQYWNpZmljL0FwaWFcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tOYW1lLm5hbWV9XCIsXG4gIFwiI3tDb21wYW55Lm5hbWV9XCJcbl07XG4iLCJ2YXIgYXBwID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGFwcDtcbmFwcC5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbmFwcC52ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKTtcbmFwcC5hdXRob3IgPSByZXF1aXJlKFwiLi9hdXRob3JcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlJlZGhvbGRcIixcbiAgXCJUcmVlZmxleFwiLFxuICBcIlRyaXBwbGVkZXhcIixcbiAgXCJLYW5sYW1cIixcbiAgXCJCaWd0YXhcIixcbiAgXCJEYWx0ZnJlc2hcIixcbiAgXCJUb3VnaGpveWZheFwiLFxuICBcIk1hdCBMYW0gVGFtXCIsXG4gIFwiT3Rjb21cIixcbiAgXCJUcmVzLVphcFwiLFxuICBcIlktU29sb3dhcm1cIixcbiAgXCJUcmVzb21cIixcbiAgXCJWb2x0c2lsbGFtXCIsXG4gIFwiQmlvZGV4XCIsXG4gIFwiR3JlZW5sYW1cIixcbiAgXCJWaXZhXCIsXG4gIFwiTWF0c29mdFwiLFxuICBcIlRlbXBcIixcbiAgXCJab29sYWJcIixcbiAgXCJTdWJpblwiLFxuICBcIlJhbmtcIixcbiAgXCJKb2JcIixcbiAgXCJTdHJpbmd0b3VnaFwiLFxuICBcIlRpblwiLFxuICBcIkl0XCIsXG4gIFwiSG9tZSBJbmdcIixcbiAgXCJaYW1pdFwiLFxuICBcIlNvbnNpbmdcIixcbiAgXCJLb25rbGFiXCIsXG4gIFwiQWxwaGFcIixcbiAgXCJMYXRsdXhcIixcbiAgXCJWb3lhdG91Y2hcIixcbiAgXCJBbHBoYXphcFwiLFxuICBcIkhvbGRsYW1pc1wiLFxuICBcIlphYW0tRG94XCIsXG4gIFwiU3ViLUV4XCIsXG4gIFwiUXVvIEx1eFwiLFxuICBcIkJhbWl0eVwiLFxuICBcIlZlbnRvc2FuemFwXCIsXG4gIFwiTG90c3RyaW5nXCIsXG4gIFwiSGF0aXR5XCIsXG4gIFwiVGVtcHNvZnRcIixcbiAgXCJPdmVyaG9sZFwiLFxuICBcIkZpeGZsZXhcIixcbiAgXCJLb25rbHV4XCIsXG4gIFwiWm9udHJheFwiLFxuICBcIlRhbXBmbGV4XCIsXG4gIFwiU3BhblwiLFxuICBcIk5hbWZpeFwiLFxuICBcIlRyYW5zY29mXCIsXG4gIFwiU3RpbVwiLFxuICBcIkZpeCBTYW5cIixcbiAgXCJTb25haXJcIixcbiAgXCJTdHJvbmdob2xkXCIsXG4gIFwiRmludG9uZVwiLFxuICBcIlktZmluZFwiLFxuICBcIk9wZWxhXCIsXG4gIFwiTG90bHV4XCIsXG4gIFwiUm9uc3RyaW5nXCIsXG4gIFwiWmF0aGluXCIsXG4gIFwiRHVvYmFtXCIsXG4gIFwiS2V5bGV4XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjAuIy4jXCIsXG4gIFwiMC4jI1wiLFxuICBcIiMuIyNcIixcbiAgXCIjLiNcIixcbiAgXCIjLiMuI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyMDExLTEwLTEyXCIsXG4gIFwiMjAxMi0xMS0xMlwiLFxuICBcIjIwMTUtMTEtMTFcIixcbiAgXCIyMDEzLTktMTJcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMTIzNC0yMTIxLTEyMjEtMTIxMVwiLFxuICBcIjEyMTItMTIyMS0xMTIxLTEyMzRcIixcbiAgXCIxMjExLTEyMjEtMTIzNC0yMjAxXCIsXG4gIFwiMTIyOC0xMjIxLTEyMjEtMTQzMVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJ2aXNhXCIsXG4gIFwibWFzdGVyY2FyZFwiLFxuICBcImFtZXJpY2FuZXhwcmVzc1wiLFxuICBcImRpc2NvdmVyXCJcbl07XG4iLCJ2YXIgYnVzaW5lc3MgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYnVzaW5lc3M7XG5idXNpbmVzcy5jcmVkaXRfY2FyZF9udW1iZXJzID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRfbnVtYmVyc1wiKTtcbmJ1c2luZXNzLmNyZWRpdF9jYXJkX2V4cGlyeV9kYXRlcyA9IHJlcXVpcmUoXCIuL2NyZWRpdF9jYXJkX2V4cGlyeV9kYXRlc1wiKTtcbmJ1c2luZXNzLmNyZWRpdF9jYXJkX3R5cGVzID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRfdHlwZXNcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIy0jIyMtIyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyNcIlxuXTtcbiIsInZhciBjZWxsX3Bob25lID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNlbGxfcGhvbmU7XG5jZWxsX3Bob25lLmZvcm1hdHMgPSByZXF1aXJlKFwiLi9mb3JtYXRzXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJyZWRcIixcbiAgXCJncmVlblwiLFxuICBcImJsdWVcIixcbiAgXCJ5ZWxsb3dcIixcbiAgXCJwdXJwbGVcIixcbiAgXCJtaW50IGdyZWVuXCIsXG4gIFwidGVhbFwiLFxuICBcIndoaXRlXCIsXG4gIFwiYmxhY2tcIixcbiAgXCJvcmFuZ2VcIixcbiAgXCJwaW5rXCIsXG4gIFwiZ3JleVwiLFxuICBcIm1hcm9vblwiLFxuICBcInZpb2xldFwiLFxuICBcInR1cnF1b2lzZVwiLFxuICBcInRhblwiLFxuICBcInNreSBibHVlXCIsXG4gIFwic2FsbW9uXCIsXG4gIFwicGx1bVwiLFxuICBcIm9yY2hpZFwiLFxuICBcIm9saXZlXCIsXG4gIFwibWFnZW50YVwiLFxuICBcImxpbWVcIixcbiAgXCJpdm9yeVwiLFxuICBcImluZGlnb1wiLFxuICBcImdvbGRcIixcbiAgXCJmdWNoc2lhXCIsXG4gIFwiY3lhblwiLFxuICBcImF6dXJlXCIsXG4gIFwibGF2ZW5kZXJcIixcbiAgXCJzaWx2ZXJcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQm9va3NcIixcbiAgXCJNb3ZpZXNcIixcbiAgXCJNdXNpY1wiLFxuICBcIkdhbWVzXCIsXG4gIFwiRWxlY3Ryb25pY3NcIixcbiAgXCJDb21wdXRlcnNcIixcbiAgXCJIb21lXCIsXG4gIFwiR2FyZGVuXCIsXG4gIFwiVG9vbHNcIixcbiAgXCJHcm9jZXJ5XCIsXG4gIFwiSGVhbHRoXCIsXG4gIFwiQmVhdXR5XCIsXG4gIFwiVG95c1wiLFxuICBcIktpZHNcIixcbiAgXCJCYWJ5XCIsXG4gIFwiQ2xvdGhpbmdcIixcbiAgXCJTaG9lc1wiLFxuICBcIkpld2VsZXJ5XCIsXG4gIFwiU3BvcnRzXCIsXG4gIFwiT3V0ZG9vcnNcIixcbiAgXCJBdXRvbW90aXZlXCIsXG4gIFwiSW5kdXN0cmlhbFwiXG5dO1xuIiwidmFyIGNvbW1lcmNlID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNvbW1lcmNlO1xuY29tbWVyY2UuY29sb3IgPSByZXF1aXJlKFwiLi9jb2xvclwiKTtcbmNvbW1lcmNlLmRlcGFydG1lbnQgPSByZXF1aXJlKFwiLi9kZXBhcnRtZW50XCIpO1xuY29tbWVyY2UucHJvZHVjdF9uYW1lID0gcmVxdWlyZShcIi4vcHJvZHVjdF9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgXCJhZGplY3RpdmVcIjogW1xuICAgIFwiU21hbGxcIixcbiAgICBcIkVyZ29ub21pY1wiLFxuICAgIFwiUnVzdGljXCIsXG4gICAgXCJJbnRlbGxpZ2VudFwiLFxuICAgIFwiR29yZ2VvdXNcIixcbiAgICBcIkluY3JlZGlibGVcIixcbiAgICBcIkZhbnRhc3RpY1wiLFxuICAgIFwiUHJhY3RpY2FsXCIsXG4gICAgXCJTbGVla1wiLFxuICAgIFwiQXdlc29tZVwiLFxuICAgIFwiR2VuZXJpY1wiLFxuICAgIFwiSGFuZGNyYWZ0ZWRcIixcbiAgICBcIkhhbmRtYWRlXCIsXG4gICAgXCJMaWNlbnNlZFwiLFxuICAgIFwiUmVmaW5lZFwiLFxuICAgIFwiVW5icmFuZGVkXCIsXG4gICAgXCJUYXN0eVwiXG4gIF0sXG4gIFwibWF0ZXJpYWxcIjogW1xuICAgIFwiU3RlZWxcIixcbiAgICBcIldvb2RlblwiLFxuICAgIFwiQ29uY3JldGVcIixcbiAgICBcIlBsYXN0aWNcIixcbiAgICBcIkNvdHRvblwiLFxuICAgIFwiR3Jhbml0ZVwiLFxuICAgIFwiUnViYmVyXCIsXG4gICAgXCJNZXRhbFwiLFxuICAgIFwiU29mdFwiLFxuICAgIFwiRnJlc2hcIixcbiAgICBcIkZyb3plblwiXG4gIF0sXG4gIFwicHJvZHVjdFwiOiBbXG4gICAgXCJDaGFpclwiLFxuICAgIFwiQ2FyXCIsXG4gICAgXCJDb21wdXRlclwiLFxuICAgIFwiS2V5Ym9hcmRcIixcbiAgICBcIk1vdXNlXCIsXG4gICAgXCJCaWtlXCIsXG4gICAgXCJCYWxsXCIsXG4gICAgXCJHbG92ZXNcIixcbiAgICBcIlBhbnRzXCIsXG4gICAgXCJTaGlydFwiLFxuICAgIFwiVGFibGVcIixcbiAgICBcIlNob2VzXCIsXG4gICAgXCJIYXRcIixcbiAgICBcIlRvd2Vsc1wiLFxuICAgIFwiU29hcFwiLFxuICAgIFwiVHVuYVwiLFxuICAgIFwiQ2hpY2tlblwiLFxuICAgIFwiRmlzaFwiLFxuICAgIFwiQ2hlZXNlXCIsXG4gICAgXCJCYWNvblwiLFxuICAgIFwiUGl6emFcIixcbiAgICBcIlNhbGFkXCIsXG4gICAgXCJTYXVzYWdlc1wiLFxuICAgIFwiQ2hpcHNcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBZGFwdGl2ZVwiLFxuICBcIkFkdmFuY2VkXCIsXG4gIFwiQW1lbGlvcmF0ZWRcIixcbiAgXCJBc3NpbWlsYXRlZFwiLFxuICBcIkF1dG9tYXRlZFwiLFxuICBcIkJhbGFuY2VkXCIsXG4gIFwiQnVzaW5lc3MtZm9jdXNlZFwiLFxuICBcIkNlbnRyYWxpemVkXCIsXG4gIFwiQ2xvbmVkXCIsXG4gIFwiQ29tcGF0aWJsZVwiLFxuICBcIkNvbmZpZ3VyYWJsZVwiLFxuICBcIkNyb3NzLWdyb3VwXCIsXG4gIFwiQ3Jvc3MtcGxhdGZvcm1cIixcbiAgXCJDdXN0b21lci1mb2N1c2VkXCIsXG4gIFwiQ3VzdG9taXphYmxlXCIsXG4gIFwiRGVjZW50cmFsaXplZFwiLFxuICBcIkRlLWVuZ2luZWVyZWRcIixcbiAgXCJEZXZvbHZlZFwiLFxuICBcIkRpZ2l0aXplZFwiLFxuICBcIkRpc3RyaWJ1dGVkXCIsXG4gIFwiRGl2ZXJzZVwiLFxuICBcIkRvd24tc2l6ZWRcIixcbiAgXCJFbmhhbmNlZFwiLFxuICBcIkVudGVycHJpc2Utd2lkZVwiLFxuICBcIkVyZ29ub21pY1wiLFxuICBcIkV4Y2x1c2l2ZVwiLFxuICBcIkV4cGFuZGVkXCIsXG4gIFwiRXh0ZW5kZWRcIixcbiAgXCJGYWNlIHRvIGZhY2VcIixcbiAgXCJGb2N1c2VkXCIsXG4gIFwiRnJvbnQtbGluZVwiLFxuICBcIkZ1bGx5LWNvbmZpZ3VyYWJsZVwiLFxuICBcIkZ1bmN0aW9uLWJhc2VkXCIsXG4gIFwiRnVuZGFtZW50YWxcIixcbiAgXCJGdXR1cmUtcHJvb2ZlZFwiLFxuICBcIkdyYXNzLXJvb3RzXCIsXG4gIFwiSG9yaXpvbnRhbFwiLFxuICBcIkltcGxlbWVudGVkXCIsXG4gIFwiSW5ub3ZhdGl2ZVwiLFxuICBcIkludGVncmF0ZWRcIixcbiAgXCJJbnR1aXRpdmVcIixcbiAgXCJJbnZlcnNlXCIsXG4gIFwiTWFuYWdlZFwiLFxuICBcIk1hbmRhdG9yeVwiLFxuICBcIk1vbml0b3JlZFwiLFxuICBcIk11bHRpLWNoYW5uZWxsZWRcIixcbiAgXCJNdWx0aS1sYXRlcmFsXCIsXG4gIFwiTXVsdGktbGF5ZXJlZFwiLFxuICBcIk11bHRpLXRpZXJlZFwiLFxuICBcIk5ldHdvcmtlZFwiLFxuICBcIk9iamVjdC1iYXNlZFwiLFxuICBcIk9wZW4tYXJjaGl0ZWN0ZWRcIixcbiAgXCJPcGVuLXNvdXJjZVwiLFxuICBcIk9wZXJhdGl2ZVwiLFxuICBcIk9wdGltaXplZFwiLFxuICBcIk9wdGlvbmFsXCIsXG4gIFwiT3JnYW5pY1wiLFxuICBcIk9yZ2FuaXplZFwiLFxuICBcIlBlcnNldmVyaW5nXCIsXG4gIFwiUGVyc2lzdGVudFwiLFxuICBcIlBoYXNlZFwiLFxuICBcIlBvbGFyaXNlZFwiLFxuICBcIlByZS1lbXB0aXZlXCIsXG4gIFwiUHJvYWN0aXZlXCIsXG4gIFwiUHJvZml0LWZvY3VzZWRcIixcbiAgXCJQcm9mb3VuZFwiLFxuICBcIlByb2dyYW1tYWJsZVwiLFxuICBcIlByb2dyZXNzaXZlXCIsXG4gIFwiUHVibGljLWtleVwiLFxuICBcIlF1YWxpdHktZm9jdXNlZFwiLFxuICBcIlJlYWN0aXZlXCIsXG4gIFwiUmVhbGlnbmVkXCIsXG4gIFwiUmUtY29udGV4dHVhbGl6ZWRcIixcbiAgXCJSZS1lbmdpbmVlcmVkXCIsXG4gIFwiUmVkdWNlZFwiLFxuICBcIlJldmVyc2UtZW5naW5lZXJlZFwiLFxuICBcIlJpZ2h0LXNpemVkXCIsXG4gIFwiUm9idXN0XCIsXG4gIFwiU2VhbWxlc3NcIixcbiAgXCJTZWN1cmVkXCIsXG4gIFwiU2VsZi1lbmFibGluZ1wiLFxuICBcIlNoYXJhYmxlXCIsXG4gIFwiU3RhbmQtYWxvbmVcIixcbiAgXCJTdHJlYW1saW5lZFwiLFxuICBcIlN3aXRjaGFibGVcIixcbiAgXCJTeW5jaHJvbmlzZWRcIixcbiAgXCJTeW5lcmdpc3RpY1wiLFxuICBcIlN5bmVyZ2l6ZWRcIixcbiAgXCJUZWFtLW9yaWVudGVkXCIsXG4gIFwiVG90YWxcIixcbiAgXCJUcmlwbGUtYnVmZmVyZWRcIixcbiAgXCJVbml2ZXJzYWxcIixcbiAgXCJVcC1zaXplZFwiLFxuICBcIlVwZ3JhZGFibGVcIixcbiAgXCJVc2VyLWNlbnRyaWNcIixcbiAgXCJVc2VyLWZyaWVuZGx5XCIsXG4gIFwiVmVyc2F0aWxlXCIsXG4gIFwiVmlydHVhbFwiLFxuICBcIlZpc2lvbmFyeVwiLFxuICBcIlZpc2lvbi1vcmllbnRlZFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJjbGlja3MtYW5kLW1vcnRhclwiLFxuICBcInZhbHVlLWFkZGVkXCIsXG4gIFwidmVydGljYWxcIixcbiAgXCJwcm9hY3RpdmVcIixcbiAgXCJyb2J1c3RcIixcbiAgXCJyZXZvbHV0aW9uYXJ5XCIsXG4gIFwic2NhbGFibGVcIixcbiAgXCJsZWFkaW5nLWVkZ2VcIixcbiAgXCJpbm5vdmF0aXZlXCIsXG4gIFwiaW50dWl0aXZlXCIsXG4gIFwic3RyYXRlZ2ljXCIsXG4gIFwiZS1idXNpbmVzc1wiLFxuICBcIm1pc3Npb24tY3JpdGljYWxcIixcbiAgXCJzdGlja3lcIixcbiAgXCJvbmUtdG8tb25lXCIsXG4gIFwiMjQvN1wiLFxuICBcImVuZC10by1lbmRcIixcbiAgXCJnbG9iYWxcIixcbiAgXCJCMkJcIixcbiAgXCJCMkNcIixcbiAgXCJncmFudWxhclwiLFxuICBcImZyaWN0aW9ubGVzc1wiLFxuICBcInZpcnR1YWxcIixcbiAgXCJ2aXJhbFwiLFxuICBcImR5bmFtaWNcIixcbiAgXCIyNC8zNjVcIixcbiAgXCJiZXN0LW9mLWJyZWVkXCIsXG4gIFwia2lsbGVyXCIsXG4gIFwibWFnbmV0aWNcIixcbiAgXCJibGVlZGluZy1lZGdlXCIsXG4gIFwid2ViLWVuYWJsZWRcIixcbiAgXCJpbnRlcmFjdGl2ZVwiLFxuICBcImRvdC1jb21cIixcbiAgXCJzZXh5XCIsXG4gIFwiYmFjay1lbmRcIixcbiAgXCJyZWFsLXRpbWVcIixcbiAgXCJlZmZpY2llbnRcIixcbiAgXCJmcm9udC1lbmRcIixcbiAgXCJkaXN0cmlidXRlZFwiLFxuICBcInNlYW1sZXNzXCIsXG4gIFwiZXh0ZW5zaWJsZVwiLFxuICBcInR1cm4ta2V5XCIsXG4gIFwid29ybGQtY2xhc3NcIixcbiAgXCJvcGVuLXNvdXJjZVwiLFxuICBcImNyb3NzLXBsYXRmb3JtXCIsXG4gIFwiY3Jvc3MtbWVkaWFcIixcbiAgXCJzeW5lcmdpc3RpY1wiLFxuICBcImJyaWNrcy1hbmQtY2xpY2tzXCIsXG4gIFwib3V0LW9mLXRoZS1ib3hcIixcbiAgXCJlbnRlcnByaXNlXCIsXG4gIFwiaW50ZWdyYXRlZFwiLFxuICBcImltcGFjdGZ1bFwiLFxuICBcIndpcmVsZXNzXCIsXG4gIFwidHJhbnNwYXJlbnRcIixcbiAgXCJuZXh0LWdlbmVyYXRpb25cIixcbiAgXCJjdXR0aW5nLWVkZ2VcIixcbiAgXCJ1c2VyLWNlbnRyaWNcIixcbiAgXCJ2aXNpb25hcnlcIixcbiAgXCJjdXN0b21pemVkXCIsXG4gIFwidWJpcXVpdG91c1wiLFxuICBcInBsdWctYW5kLXBsYXlcIixcbiAgXCJjb2xsYWJvcmF0aXZlXCIsXG4gIFwiY29tcGVsbGluZ1wiLFxuICBcImhvbGlzdGljXCIsXG4gIFwicmljaFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJzeW5lcmdpZXNcIixcbiAgXCJ3ZWItcmVhZGluZXNzXCIsXG4gIFwicGFyYWRpZ21zXCIsXG4gIFwibWFya2V0c1wiLFxuICBcInBhcnRuZXJzaGlwc1wiLFxuICBcImluZnJhc3RydWN0dXJlc1wiLFxuICBcInBsYXRmb3Jtc1wiLFxuICBcImluaXRpYXRpdmVzXCIsXG4gIFwiY2hhbm5lbHNcIixcbiAgXCJleWViYWxsc1wiLFxuICBcImNvbW11bml0aWVzXCIsXG4gIFwiUk9JXCIsXG4gIFwic29sdXRpb25zXCIsXG4gIFwiZS10YWlsZXJzXCIsXG4gIFwiZS1zZXJ2aWNlc1wiLFxuICBcImFjdGlvbi1pdGVtc1wiLFxuICBcInBvcnRhbHNcIixcbiAgXCJuaWNoZXNcIixcbiAgXCJ0ZWNobm9sb2dpZXNcIixcbiAgXCJjb250ZW50XCIsXG4gIFwidm9ydGFsc1wiLFxuICBcInN1cHBseS1jaGFpbnNcIixcbiAgXCJjb252ZXJnZW5jZVwiLFxuICBcInJlbGF0aW9uc2hpcHNcIixcbiAgXCJhcmNoaXRlY3R1cmVzXCIsXG4gIFwiaW50ZXJmYWNlc1wiLFxuICBcImUtbWFya2V0c1wiLFxuICBcImUtY29tbWVyY2VcIixcbiAgXCJzeXN0ZW1zXCIsXG4gIFwiYmFuZHdpZHRoXCIsXG4gIFwiaW5mb21lZGlhcmllc1wiLFxuICBcIm1vZGVsc1wiLFxuICBcIm1pbmRzaGFyZVwiLFxuICBcImRlbGl2ZXJhYmxlc1wiLFxuICBcInVzZXJzXCIsXG4gIFwic2NoZW1hc1wiLFxuICBcIm5ldHdvcmtzXCIsXG4gIFwiYXBwbGljYXRpb25zXCIsXG4gIFwibWV0cmljc1wiLFxuICBcImUtYnVzaW5lc3NcIixcbiAgXCJmdW5jdGlvbmFsaXRpZXNcIixcbiAgXCJleHBlcmllbmNlc1wiLFxuICBcIndlYiBzZXJ2aWNlc1wiLFxuICBcIm1ldGhvZG9sb2dpZXNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaW1wbGVtZW50XCIsXG4gIFwidXRpbGl6ZVwiLFxuICBcImludGVncmF0ZVwiLFxuICBcInN0cmVhbWxpbmVcIixcbiAgXCJvcHRpbWl6ZVwiLFxuICBcImV2b2x2ZVwiLFxuICBcInRyYW5zZm9ybVwiLFxuICBcImVtYnJhY2VcIixcbiAgXCJlbmFibGVcIixcbiAgXCJvcmNoZXN0cmF0ZVwiLFxuICBcImxldmVyYWdlXCIsXG4gIFwicmVpbnZlbnRcIixcbiAgXCJhZ2dyZWdhdGVcIixcbiAgXCJhcmNoaXRlY3RcIixcbiAgXCJlbmhhbmNlXCIsXG4gIFwiaW5jZW50aXZpemVcIixcbiAgXCJtb3JwaFwiLFxuICBcImVtcG93ZXJcIixcbiAgXCJlbnZpc2lvbmVlclwiLFxuICBcIm1vbmV0aXplXCIsXG4gIFwiaGFybmVzc1wiLFxuICBcImZhY2lsaXRhdGVcIixcbiAgXCJzZWl6ZVwiLFxuICBcImRpc2ludGVybWVkaWF0ZVwiLFxuICBcInN5bmVyZ2l6ZVwiLFxuICBcInN0cmF0ZWdpemVcIixcbiAgXCJkZXBsb3lcIixcbiAgXCJicmFuZFwiLFxuICBcImdyb3dcIixcbiAgXCJ0YXJnZXRcIixcbiAgXCJzeW5kaWNhdGVcIixcbiAgXCJzeW50aGVzaXplXCIsXG4gIFwiZGVsaXZlclwiLFxuICBcIm1lc2hcIixcbiAgXCJpbmN1YmF0ZVwiLFxuICBcImVuZ2FnZVwiLFxuICBcIm1heGltaXplXCIsXG4gIFwiYmVuY2htYXJrXCIsXG4gIFwiZXhwZWRpdGVcIixcbiAgXCJyZWludGVybWVkaWF0ZVwiLFxuICBcIndoaXRlYm9hcmRcIixcbiAgXCJ2aXN1YWxpemVcIixcbiAgXCJyZXB1cnBvc2VcIixcbiAgXCJpbm5vdmF0ZVwiLFxuICBcInNjYWxlXCIsXG4gIFwidW5sZWFzaFwiLFxuICBcImRyaXZlXCIsXG4gIFwiZXh0ZW5kXCIsXG4gIFwiZW5naW5lZXJcIixcbiAgXCJyZXZvbHV0aW9uaXplXCIsXG4gIFwiZ2VuZXJhdGVcIixcbiAgXCJleHBsb2l0XCIsXG4gIFwidHJhbnNpdGlvblwiLFxuICBcImUtZW5hYmxlXCIsXG4gIFwiaXRlcmF0ZVwiLFxuICBcImN1bHRpdmF0ZVwiLFxuICBcIm1hdHJpeFwiLFxuICBcInByb2R1Y3RpemVcIixcbiAgXCJyZWRlZmluZVwiLFxuICBcInJlY29udGV4dHVhbGl6ZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyNCBob3VyXCIsXG4gIFwiMjQvN1wiLFxuICBcIjNyZCBnZW5lcmF0aW9uXCIsXG4gIFwiNHRoIGdlbmVyYXRpb25cIixcbiAgXCI1dGggZ2VuZXJhdGlvblwiLFxuICBcIjZ0aCBnZW5lcmF0aW9uXCIsXG4gIFwiYWN0dWF0aW5nXCIsXG4gIFwiYW5hbHl6aW5nXCIsXG4gIFwiYXN5bW1ldHJpY1wiLFxuICBcImFzeW5jaHJvbm91c1wiLFxuICBcImF0dGl0dWRlLW9yaWVudGVkXCIsXG4gIFwiYmFja2dyb3VuZFwiLFxuICBcImJhbmR3aWR0aC1tb25pdG9yZWRcIixcbiAgXCJiaS1kaXJlY3Rpb25hbFwiLFxuICBcImJpZnVyY2F0ZWRcIixcbiAgXCJib3R0b20tbGluZVwiLFxuICBcImNsZWFyLXRoaW5raW5nXCIsXG4gIFwiY2xpZW50LWRyaXZlblwiLFxuICBcImNsaWVudC1zZXJ2ZXJcIixcbiAgXCJjb2hlcmVudFwiLFxuICBcImNvaGVzaXZlXCIsXG4gIFwiY29tcG9zaXRlXCIsXG4gIFwiY29udGV4dC1zZW5zaXRpdmVcIixcbiAgXCJjb250ZXh0dWFsbHktYmFzZWRcIixcbiAgXCJjb250ZW50LWJhc2VkXCIsXG4gIFwiZGVkaWNhdGVkXCIsXG4gIFwiZGVtYW5kLWRyaXZlblwiLFxuICBcImRpZGFjdGljXCIsXG4gIFwiZGlyZWN0aW9uYWxcIixcbiAgXCJkaXNjcmV0ZVwiLFxuICBcImRpc2ludGVybWVkaWF0ZVwiLFxuICBcImR5bmFtaWNcIixcbiAgXCJlY28tY2VudHJpY1wiLFxuICBcImVtcG93ZXJpbmdcIixcbiAgXCJlbmNvbXBhc3NpbmdcIixcbiAgXCJldmVuLWtlZWxlZFwiLFxuICBcImV4ZWN1dGl2ZVwiLFxuICBcImV4cGxpY2l0XCIsXG4gIFwiZXh1ZGluZ1wiLFxuICBcImZhdWx0LXRvbGVyYW50XCIsXG4gIFwiZm9yZWdyb3VuZFwiLFxuICBcImZyZXNoLXRoaW5raW5nXCIsXG4gIFwiZnVsbC1yYW5nZVwiLFxuICBcImdsb2JhbFwiLFxuICBcImdyaWQtZW5hYmxlZFwiLFxuICBcImhldXJpc3RpY1wiLFxuICBcImhpZ2gtbGV2ZWxcIixcbiAgXCJob2xpc3RpY1wiLFxuICBcImhvbW9nZW5lb3VzXCIsXG4gIFwiaHVtYW4tcmVzb3VyY2VcIixcbiAgXCJoeWJyaWRcIixcbiAgXCJpbXBhY3RmdWxcIixcbiAgXCJpbmNyZW1lbnRhbFwiLFxuICBcImludGFuZ2libGVcIixcbiAgXCJpbnRlcmFjdGl2ZVwiLFxuICBcImludGVybWVkaWF0ZVwiLFxuICBcImxlYWRpbmcgZWRnZVwiLFxuICBcImxvY2FsXCIsXG4gIFwibG9naXN0aWNhbFwiLFxuICBcIm1heGltaXplZFwiLFxuICBcIm1ldGhvZGljYWxcIixcbiAgXCJtaXNzaW9uLWNyaXRpY2FsXCIsXG4gIFwibW9iaWxlXCIsXG4gIFwibW9kdWxhclwiLFxuICBcIm1vdGl2YXRpbmdcIixcbiAgXCJtdWx0aW1lZGlhXCIsXG4gIFwibXVsdGktc3RhdGVcIixcbiAgXCJtdWx0aS10YXNraW5nXCIsXG4gIFwibmF0aW9uYWxcIixcbiAgXCJuZWVkcy1iYXNlZFwiLFxuICBcIm5ldXRyYWxcIixcbiAgXCJuZXh0IGdlbmVyYXRpb25cIixcbiAgXCJub24tdm9sYXRpbGVcIixcbiAgXCJvYmplY3Qtb3JpZW50ZWRcIixcbiAgXCJvcHRpbWFsXCIsXG4gIFwib3B0aW1pemluZ1wiLFxuICBcInJhZGljYWxcIixcbiAgXCJyZWFsLXRpbWVcIixcbiAgXCJyZWNpcHJvY2FsXCIsXG4gIFwicmVnaW9uYWxcIixcbiAgXCJyZXNwb25zaXZlXCIsXG4gIFwic2NhbGFibGVcIixcbiAgXCJzZWNvbmRhcnlcIixcbiAgXCJzb2x1dGlvbi1vcmllbnRlZFwiLFxuICBcInN0YWJsZVwiLFxuICBcInN0YXRpY1wiLFxuICBcInN5c3RlbWF0aWNcIixcbiAgXCJzeXN0ZW1pY1wiLFxuICBcInN5c3RlbS13b3J0aHlcIixcbiAgXCJ0YW5naWJsZVwiLFxuICBcInRlcnRpYXJ5XCIsXG4gIFwidHJhbnNpdGlvbmFsXCIsXG4gIFwidW5pZm9ybVwiLFxuICBcInVwd2FyZC10cmVuZGluZ1wiLFxuICBcInVzZXItZmFjaW5nXCIsXG4gIFwidmFsdWUtYWRkZWRcIixcbiAgXCJ3ZWItZW5hYmxlZFwiLFxuICBcIndlbGwtbW9kdWxhdGVkXCIsXG4gIFwiemVybyBhZG1pbmlzdHJhdGlvblwiLFxuICBcInplcm8gZGVmZWN0XCIsXG4gIFwiemVybyB0b2xlcmFuY2VcIlxuXTtcbiIsInZhciBjb21wYW55ID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNvbXBhbnk7XG5jb21wYW55LnN1ZmZpeCA9IHJlcXVpcmUoXCIuL3N1ZmZpeFwiKTtcbmNvbXBhbnkuYWRqZWN0aXZlID0gcmVxdWlyZShcIi4vYWRqZWN0aXZlXCIpO1xuY29tcGFueS5kZXNjcmlwdG9yID0gcmVxdWlyZShcIi4vZGVzY3JpcHRvclwiKTtcbmNvbXBhbnkubm91biA9IHJlcXVpcmUoXCIuL25vdW5cIik7XG5jb21wYW55LmJzX3ZlcmIgPSByZXF1aXJlKFwiLi9ic192ZXJiXCIpO1xuY29tcGFueS5ic19hZGplY3RpdmUgPSByZXF1aXJlKFwiLi9ic19hZGplY3RpdmVcIik7XG5jb21wYW55LmJzX25vdW4gPSByZXF1aXJlKFwiLi9ic19ub3VuXCIpO1xuY29tcGFueS5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0gI3tzdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0tI3tOYW1lLmxhc3RfbmFtZX1cIixcbiAgXCIje05hbWUubGFzdF9uYW1lfSwgI3tOYW1lLmxhc3RfbmFtZX0gYW5kICN7TmFtZS5sYXN0X25hbWV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFiaWxpdHlcIixcbiAgXCJhY2Nlc3NcIixcbiAgXCJhZGFwdGVyXCIsXG4gIFwiYWxnb3JpdGhtXCIsXG4gIFwiYWxsaWFuY2VcIixcbiAgXCJhbmFseXplclwiLFxuICBcImFwcGxpY2F0aW9uXCIsXG4gIFwiYXBwcm9hY2hcIixcbiAgXCJhcmNoaXRlY3R1cmVcIixcbiAgXCJhcmNoaXZlXCIsXG4gIFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIixcbiAgXCJhcnJheVwiLFxuICBcImF0dGl0dWRlXCIsXG4gIFwiYmVuY2htYXJrXCIsXG4gIFwiYnVkZ2V0YXJ5IG1hbmFnZW1lbnRcIixcbiAgXCJjYXBhYmlsaXR5XCIsXG4gIFwiY2FwYWNpdHlcIixcbiAgXCJjaGFsbGVuZ2VcIixcbiAgXCJjaXJjdWl0XCIsXG4gIFwiY29sbGFib3JhdGlvblwiLFxuICBcImNvbXBsZXhpdHlcIixcbiAgXCJjb25jZXB0XCIsXG4gIFwiY29uZ2xvbWVyYXRpb25cIixcbiAgXCJjb250aW5nZW5jeVwiLFxuICBcImNvcmVcIixcbiAgXCJjdXN0b21lciBsb3lhbHR5XCIsXG4gIFwiZGF0YWJhc2VcIixcbiAgXCJkYXRhLXdhcmVob3VzZVwiLFxuICBcImRlZmluaXRpb25cIixcbiAgXCJlbXVsYXRpb25cIixcbiAgXCJlbmNvZGluZ1wiLFxuICBcImVuY3J5cHRpb25cIixcbiAgXCJleHRyYW5ldFwiLFxuICBcImZpcm13YXJlXCIsXG4gIFwiZmxleGliaWxpdHlcIixcbiAgXCJmb2N1cyBncm91cFwiLFxuICBcImZvcmVjYXN0XCIsXG4gIFwiZnJhbWVcIixcbiAgXCJmcmFtZXdvcmtcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcImZ1bmN0aW9uYWxpdGllc1wiLFxuICBcIkdyYXBoaWMgSW50ZXJmYWNlXCIsXG4gIFwiZ3JvdXB3YXJlXCIsXG4gIFwiR3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlXCIsXG4gIFwiaGFyZHdhcmVcIixcbiAgXCJoZWxwLWRlc2tcIixcbiAgXCJoaWVyYXJjaHlcIixcbiAgXCJodWJcIixcbiAgXCJpbXBsZW1lbnRhdGlvblwiLFxuICBcImluZm8tbWVkaWFyaWVzXCIsXG4gIFwiaW5mcmFzdHJ1Y3R1cmVcIixcbiAgXCJpbml0aWF0aXZlXCIsXG4gIFwiaW5zdGFsbGF0aW9uXCIsXG4gIFwiaW5zdHJ1Y3Rpb24gc2V0XCIsXG4gIFwiaW50ZXJmYWNlXCIsXG4gIFwiaW50ZXJuZXQgc29sdXRpb25cIixcbiAgXCJpbnRyYW5ldFwiLFxuICBcImtub3dsZWRnZSB1c2VyXCIsXG4gIFwia25vd2xlZGdlIGJhc2VcIixcbiAgXCJsb2NhbCBhcmVhIG5ldHdvcmtcIixcbiAgXCJsZXZlcmFnZVwiLFxuICBcIm1hdHJpY2VzXCIsXG4gIFwibWF0cml4XCIsXG4gIFwibWV0aG9kb2xvZ3lcIixcbiAgXCJtaWRkbGV3YXJlXCIsXG4gIFwibWlncmF0aW9uXCIsXG4gIFwibW9kZWxcIixcbiAgXCJtb2RlcmF0b3JcIixcbiAgXCJtb25pdG9yaW5nXCIsXG4gIFwibW9yYXRvcml1bVwiLFxuICBcIm5ldXJhbC1uZXRcIixcbiAgXCJvcGVuIGFyY2hpdGVjdHVyZVwiLFxuICBcIm9wZW4gc3lzdGVtXCIsXG4gIFwib3JjaGVzdHJhdGlvblwiLFxuICBcInBhcmFkaWdtXCIsXG4gIFwicGFyYWxsZWxpc21cIixcbiAgXCJwb2xpY3lcIixcbiAgXCJwb3J0YWxcIixcbiAgXCJwcmljaW5nIHN0cnVjdHVyZVwiLFxuICBcInByb2Nlc3MgaW1wcm92ZW1lbnRcIixcbiAgXCJwcm9kdWN0XCIsXG4gIFwicHJvZHVjdGl2aXR5XCIsXG4gIFwicHJvamVjdFwiLFxuICBcInByb2plY3Rpb25cIixcbiAgXCJwcm90b2NvbFwiLFxuICBcInNlY3VyZWQgbGluZVwiLFxuICBcInNlcnZpY2UtZGVza1wiLFxuICBcInNvZnR3YXJlXCIsXG4gIFwic29sdXRpb25cIixcbiAgXCJzdGFuZGFyZGl6YXRpb25cIixcbiAgXCJzdHJhdGVneVwiLFxuICBcInN0cnVjdHVyZVwiLFxuICBcInN1Y2Nlc3NcIixcbiAgXCJzdXBlcnN0cnVjdHVyZVwiLFxuICBcInN1cHBvcnRcIixcbiAgXCJzeW5lcmd5XCIsXG4gIFwic3lzdGVtIGVuZ2luZVwiLFxuICBcInRhc2stZm9yY2VcIixcbiAgXCJ0aHJvdWdocHV0XCIsXG4gIFwidGltZS1mcmFtZVwiLFxuICBcInRvb2xzZXRcIixcbiAgXCJ1dGlsaXNhdGlvblwiLFxuICBcIndlYnNpdGVcIixcbiAgXCJ3b3JrZm9yY2VcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiSW5jXCIsXG4gIFwiYW5kIFNvbnNcIixcbiAgXCJMTENcIixcbiAgXCJHcm91cFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzQjIy0jIyMjIyMtIyMjI0wvXCIsXG4gIFwiLzM3IyMtIyMjIyMjLSMjIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzBbMC01XSMtIyMjIyMjLSMjI0wvXCIsXG4gIFwiLzM2OCMtIyMjIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82MDExLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NSMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NFs0LTldIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjAxMS02MiMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NSMjLTYyIyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY0WzQtOV0jLTYyIyMtIyMjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJ2YXIgY3JlZGl0X2NhcmQgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gY3JlZGl0X2NhcmQ7XG5jcmVkaXRfY2FyZC52aXNhID0gcmVxdWlyZShcIi4vdmlzYVwiKTtcbmNyZWRpdF9jYXJkLm1hc3RlcmNhcmQgPSByZXF1aXJlKFwiLi9tYXN0ZXJjYXJkXCIpO1xuY3JlZGl0X2NhcmQuZGlzY292ZXIgPSByZXF1aXJlKFwiLi9kaXNjb3ZlclwiKTtcbmNyZWRpdF9jYXJkLmFtZXJpY2FuX2V4cHJlc3MgPSByZXF1aXJlKFwiLi9hbWVyaWNhbl9leHByZXNzXCIpO1xuY3JlZGl0X2NhcmQuZGluZXJzX2NsdWIgPSByZXF1aXJlKFwiLi9kaW5lcnNfY2x1YlwiKTtcbmNyZWRpdF9jYXJkLmpjYiA9IHJlcXVpcmUoXCIuL2pjYlwiKTtcbmNyZWRpdF9jYXJkLnN3aXRjaCA9IHJlcXVpcmUoXCIuL3N3aXRjaFwiKTtcbmNyZWRpdF9jYXJkLnNvbG8gPSByZXF1aXJlKFwiLi9zb2xvXCIpO1xuY3JlZGl0X2NhcmQubWFlc3RybyA9IHJlcXVpcmUoXCIuL21hZXN0cm9cIik7XG5jcmVkaXRfY2FyZC5sYXNlciA9IHJlcXVpcmUoXCIuL2xhc2VyXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzUyOC0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvMzUyOS0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvMzVbMy04XSMtIyMjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82MzA0IyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzA2IyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzcxIyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzA5IyMjIyMjIyMjIyNML1wiLFxuICBcIi82MzA0IyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzA2IyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzcxIyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzA5IyMjIyMjIyMjezUsNn1ML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNTAjezksMTZ9TC9cIixcbiAgXCIvNVs2LThdI3s5LDE2fUwvXCIsXG4gIFwiLzU2IyN7OSwxNn1ML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNVsxLTVdIyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY3NzEtODkjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82NzY3LSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NzY3LSMjIyMtIyMjIy0jIyMjLSNML1wiLFxuICBcIi82NzY3LSMjIyMtIyMjIy0jIyMjLSMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjIyMtI0wvXCIsXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjIyMtIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNCMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNCMjIy0jIyMjLSMjIyMtIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwidXRmOF91bmljb2RlX2NpXCIsXG4gIFwidXRmOF9nZW5lcmFsX2NpXCIsXG4gIFwidXRmOF9iaW5cIixcbiAgXCJhc2NpaV9iaW5cIixcbiAgXCJhc2NpaV9nZW5lcmFsX2NpXCIsXG4gIFwiY3AxMjUwX2JpblwiLFxuICBcImNwMTI1MF9nZW5lcmFsX2NpXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImlkXCIsXG4gIFwidGl0bGVcIixcbiAgXCJuYW1lXCIsXG4gIFwiZW1haWxcIixcbiAgXCJwaG9uZVwiLFxuICBcInRva2VuXCIsXG4gIFwiZ3JvdXBcIixcbiAgXCJjYXRlZ29yeVwiLFxuICBcInBhc3N3b3JkXCIsXG4gIFwiY29tbWVudFwiLFxuICBcImF2YXRhclwiLFxuICBcInN0YXR1c1wiLFxuICBcImNyZWF0ZWRBdFwiLFxuICBcInVwZGF0ZWRBdFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJJbm5vREJcIixcbiAgXCJNeUlTQU1cIixcbiAgXCJNRU1PUllcIixcbiAgXCJDU1ZcIixcbiAgXCJCTEFDS0hPTEVcIixcbiAgXCJBUkNISVZFXCJcbl07XG4iLCJ2YXIgZGF0YWJhc2UgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZGF0YWJhc2U7XG5kYXRhYmFzZS5jb2xsYXRpb24gPSByZXF1aXJlKFwiLi9jb2xsYXRpb25cIik7XG5kYXRhYmFzZS5jb2x1bW4gPSByZXF1aXJlKFwiLi9jb2x1bW5cIik7XG5kYXRhYmFzZS5lbmdpbmUgPSByZXF1aXJlKFwiLi9lbmdpbmVcIik7XG5kYXRhYmFzZS50eXBlID0gcmVxdWlyZShcIi4vdHlwZVwiKTsiLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImludFwiLFxuICBcInZhcmNoYXJcIixcbiAgXCJ0ZXh0XCIsXG4gIFwiZGF0ZVwiLFxuICBcImRhdGV0aW1lXCIsXG4gIFwidGlueWludFwiLFxuICBcInRpbWVcIixcbiAgXCJ0aW1lc3RhbXBcIixcbiAgXCJzbWFsbGludFwiLFxuICBcIm1lZGl1bWludFwiLFxuICBcImJpZ2ludFwiLFxuICBcImRlY2ltYWxcIixcbiAgXCJmbG9hdFwiLFxuICBcImRvdWJsZVwiLFxuICBcInJlYWxcIixcbiAgXCJiaXRcIixcbiAgXCJib29sZWFuXCIsXG4gIFwic2VyaWFsXCIsXG4gIFwiYmxvYlwiLFxuICBcImJpbmFyeVwiLFxuICBcImVudW1cIixcbiAgXCJzZXRcIixcbiAgXCJnZW9tZXRyeVwiLFxuICBcInBvaW50XCJcbl07XG4iLCJ2YXIgZGF0ZSA9IHt9O1xubW9kdWxlW1wiZXhwb3J0c1wiXSA9IGRhdGU7XG5kYXRlLm1vbnRoID0gcmVxdWlyZShcIi4vbW9udGhcIik7XG5kYXRlLndlZWtkYXkgPSByZXF1aXJlKFwiLi93ZWVrZGF5XCIpO1xuIiwiLy8gU291cmNlOiBodHRwOi8vdW5pY29kZS5vcmcvY2xkci90cmFjL2Jyb3dzZXIvdGFncy9yZWxlYXNlLTI3L2NvbW1vbi9tYWluL2VuLnhtbCNMMTc5OVxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgd2lkZTogW1xuICAgIFwiSmFudWFyeVwiLFxuICAgIFwiRmVicnVhcnlcIixcbiAgICBcIk1hcmNoXCIsXG4gICAgXCJBcHJpbFwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5lXCIsXG4gICAgXCJKdWx5XCIsXG4gICAgXCJBdWd1c3RcIixcbiAgICBcIlNlcHRlbWJlclwiLFxuICAgIFwiT2N0b2JlclwiLFxuICAgIFwiTm92ZW1iZXJcIixcbiAgICBcIkRlY2VtYmVyXCJcbiAgXSxcbiAgLy8gUHJvcGVydHkgXCJ3aWRlX2NvbnRleHRcIiBpcyBvcHRpb25hbCwgaWYgbm90IHNldCB0aGVuIFwid2lkZVwiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gIC8vIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdvcmQgaW4gY29udGV4dCwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIGEgc3RhbmQtYWxvbmUgd29yZFxuICB3aWRlX2NvbnRleHQ6IFtcbiAgICBcIkphbnVhcnlcIixcbiAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgXCJNYXJjaFwiLFxuICAgIFwiQXByaWxcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuZVwiLFxuICAgIFwiSnVseVwiLFxuICAgIFwiQXVndXN0XCIsXG4gICAgXCJTZXB0ZW1iZXJcIixcbiAgICBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsXG4gICAgXCJEZWNlbWJlclwiXG4gIF0sXG4gIGFiYnI6IFtcbiAgICBcIkphblwiLFxuICAgIFwiRmViXCIsXG4gICAgXCJNYXJcIixcbiAgICBcIkFwclwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5cIixcbiAgICBcIkp1bFwiLFxuICAgIFwiQXVnXCIsXG4gICAgXCJTZXBcIixcbiAgICBcIk9jdFwiLFxuICAgIFwiTm92XCIsXG4gICAgXCJEZWNcIlxuICBdLFxuICAvLyBQcm9wZXJ0eSBcImFiYnJfY29udGV4dFwiIGlzIG9wdGlvbmFsLCBpZiBub3Qgc2V0IHRoZW4gXCJhYmJyXCIgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgLy8gSXQgaXMgdXNlZCB0byBzcGVjaWZ5IGEgd29yZCBpbiBjb250ZXh0LCB3aGljaCBtYXkgZGlmZmVyIGZyb20gYSBzdGFuZC1hbG9uZSB3b3JkXG4gIGFiYnJfY29udGV4dDogW1xuICAgIFwiSmFuXCIsXG4gICAgXCJGZWJcIixcbiAgICBcIk1hclwiLFxuICAgIFwiQXByXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1blwiLFxuICAgIFwiSnVsXCIsXG4gICAgXCJBdWdcIixcbiAgICBcIlNlcFwiLFxuICAgIFwiT2N0XCIsXG4gICAgXCJOb3ZcIixcbiAgICBcIkRlY1wiXG4gIF1cbn07XG4iLCIvLyBTb3VyY2U6IGh0dHA6Ly91bmljb2RlLm9yZy9jbGRyL3RyYWMvYnJvd3Nlci90YWdzL3JlbGVhc2UtMjcvY29tbW9uL21haW4vZW4ueG1sI0wxODQ3XG5tb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICB3aWRlOiBbXG4gICAgXCJTdW5kYXlcIixcbiAgICBcIk1vbmRheVwiLFxuICAgIFwiVHVlc2RheVwiLFxuICAgIFwiV2VkbmVzZGF5XCIsXG4gICAgXCJUaHVyc2RheVwiLFxuICAgIFwiRnJpZGF5XCIsXG4gICAgXCJTYXR1cmRheVwiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwid2lkZV9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcIndpZGVcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgd2lkZV9jb250ZXh0OiBbXG4gICAgXCJTdW5kYXlcIixcbiAgICBcIk1vbmRheVwiLFxuICAgIFwiVHVlc2RheVwiLFxuICAgIFwiV2VkbmVzZGF5XCIsXG4gICAgXCJUaHVyc2RheVwiLFxuICAgIFwiRnJpZGF5XCIsXG4gICAgXCJTYXR1cmRheVwiXG4gIF0sXG4gIGFiYnI6IFtcbiAgICBcIlN1blwiLFxuICAgIFwiTW9uXCIsXG4gICAgXCJUdWVcIixcbiAgICBcIldlZFwiLFxuICAgIFwiVGh1XCIsXG4gICAgXCJGcmlcIixcbiAgICBcIlNhdFwiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwiYWJicl9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcImFiYnJcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgYWJicl9jb250ZXh0OiBbXG4gICAgXCJTdW5cIixcbiAgICBcIk1vblwiLFxuICAgIFwiVHVlXCIsXG4gICAgXCJXZWRcIixcbiAgICBcIlRodVwiLFxuICAgIFwiRnJpXCIsXG4gICAgXCJTYXRcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJDaGVja2luZ1wiLFxuICBcIlNhdmluZ3NcIixcbiAgXCJNb25leSBNYXJrZXRcIixcbiAgXCJJbnZlc3RtZW50XCIsXG4gIFwiSG9tZSBMb2FuXCIsXG4gIFwiQ3JlZGl0IENhcmRcIixcbiAgXCJBdXRvIExvYW5cIixcbiAgXCJQZXJzb25hbCBMb2FuXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBcIlVBRSBEaXJoYW1cIjoge1xuICAgIFwiY29kZVwiOiBcIkFFRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJBZmdoYW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJBRk5cIixcbiAgICBcInN5bWJvbFwiOiBcItiLXCJcbiAgfSxcbiAgXCJMZWtcIjoge1xuICAgIFwiY29kZVwiOiBcIkFMTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTGVrXCJcbiAgfSxcbiAgXCJBcm1lbmlhbiBEcmFtXCI6IHtcbiAgICBcImNvZGVcIjogXCJBTURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTmV0aGVybGFuZHMgQW50aWxsaWFuIEd1aWxkZXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkFOR1wiLFxuICAgIFwic3ltYm9sXCI6IFwixpJcIlxuICB9LFxuICBcIkt3YW56YVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQU9BXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkFyZ2VudGluZSBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJBUlNcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkF1c3RyYWxpYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJBVURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkFydWJhbiBHdWlsZGVyXCI6IHtcbiAgICBcImNvZGVcIjogXCJBV0dcIixcbiAgICBcInN5bWJvbFwiOiBcIsaSXCJcbiAgfSxcbiAgXCJBemVyYmFpamFuaWFuIE1hbmF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJBWk5cIixcbiAgICBcInN5bWJvbFwiOiBcItC80LDQvVwiXG4gIH0sXG4gIFwiQ29udmVydGlibGUgTWFya3NcIjoge1xuICAgIFwiY29kZVwiOiBcIkJBTVwiLFxuICAgIFwic3ltYm9sXCI6IFwiS01cIlxuICB9LFxuICBcIkJhcmJhZG9zIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkJEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJUYWthXCI6IHtcbiAgICBcImNvZGVcIjogXCJCRFRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQnVsZ2FyaWFuIExldlwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkdOXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJCYWhyYWluaSBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkhEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJ1cnVuZGkgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkJJRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCZXJtdWRpYW4gRG9sbGFyIChjdXN0b21hcmlseSBrbm93biBhcyBCZXJtdWRhIERvbGxhcilcIjoge1xuICAgIFwiY29kZVwiOiBcIkJNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQnJ1bmVpIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQk5EXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJCb2xpdmlhbm8gTXZkb2xcIjoge1xuICAgIFwiY29kZVwiOiBcIkJPQiBCT1ZcIixcbiAgICBcInN5bWJvbFwiOiBcIiRiXCJcbiAgfSxcbiAgXCJCcmF6aWxpYW4gUmVhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQlJMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSJFwiXG4gIH0sXG4gIFwiQmFoYW1pYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlB1bGFcIjoge1xuICAgIFwiY29kZVwiOiBcIkJXUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiUFwiXG4gIH0sXG4gIFwiQmVsYXJ1c3NpYW4gUnVibGVcIjoge1xuICAgIFwiY29kZVwiOiBcIkJZUlwiLFxuICAgIFwic3ltYm9sXCI6IFwicC5cIlxuICB9LFxuICBcIkJlbGl6ZSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJaRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiQlokXCJcbiAgfSxcbiAgXCJDYW5hZGlhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkNBRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQ29uZ29sZXNlIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJDREZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU3dpc3MgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkNIRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiQ0hGXCJcbiAgfSxcbiAgXCJDaGlsZWFuIFBlc28gVW5pZGFkZXMgZGUgZm9tZW50b1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ0xQIENMRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiWXVhbiBSZW5taW5iaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ05ZXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCpVwiXG4gIH0sXG4gIFwiQ29sb21iaWFuIFBlc28gVW5pZGFkIGRlIFZhbG9yIFJlYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIkNPUCBDT1VcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkNvc3RhIFJpY2FuIENvbG9uXCI6IHtcbiAgICBcImNvZGVcIjogXCJDUkNcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCoVwiXG4gIH0sXG4gIFwiQ3ViYW4gUGVzbyBQZXNvIENvbnZlcnRpYmxlXCI6IHtcbiAgICBcImNvZGVcIjogXCJDVVAgQ1VDXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigrFcIlxuICB9LFxuICBcIkNhcGUgVmVyZGUgRXNjdWRvXCI6IHtcbiAgICBcImNvZGVcIjogXCJDVkVcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ3plY2ggS29ydW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJDWktcIixcbiAgICBcInN5bWJvbFwiOiBcIkvEjVwiXG4gIH0sXG4gIFwiRGppYm91dGkgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkRKRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJEYW5pc2ggS3JvbmVcIjoge1xuICAgIFwiY29kZVwiOiBcIkRLS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia3JcIlxuICB9LFxuICBcIkRvbWluaWNhbiBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJET1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlJEJFwiXG4gIH0sXG4gIFwiQWxnZXJpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkRaRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJLcm9vblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRUVLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkVneXB0aWFuIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJFR1BcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJOYWtmYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRVJOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV0aGlvcGlhbiBCaXJyXCI6IHtcbiAgICBcImNvZGVcIjogXCJFVEJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXVyb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiRVVSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqxcIlxuICB9LFxuICBcIkZpamkgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJGSkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkZhbGtsYW5kIElzbGFuZHMgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIkZLUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIlBvdW5kIFN0ZXJsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJHQlBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJMYXJpXCI6IHtcbiAgICBcImNvZGVcIjogXCJHRUxcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ2VkaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0hTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkdpYnJhbHRhciBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0lQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiRGFsYXNpXCI6IHtcbiAgICBcImNvZGVcIjogXCJHTURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiR3VpbmVhIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJHTkZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUXVldHphbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR1RRXCIsXG4gICAgXCJzeW1ib2xcIjogXCJRXCJcbiAgfSxcbiAgXCJHdXlhbmEgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJHWURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkhvbmcgS29uZyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkhLRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiTGVtcGlyYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSE5MXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMXCJcbiAgfSxcbiAgXCJDcm9hdGlhbiBLdW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJIUktcIixcbiAgICBcInN5bWJvbFwiOiBcImtuXCJcbiAgfSxcbiAgXCJHb3VyZGUgVVMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJIVEcgVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkZvcmludFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSFVGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJGdFwiXG4gIH0sXG4gIFwiUnVwaWFoXCI6IHtcbiAgICBcImNvZGVcIjogXCJJRFJcIixcbiAgICBcInN5bWJvbFwiOiBcIlJwXCJcbiAgfSxcbiAgXCJOZXcgSXNyYWVsaSBTaGVxZWxcIjoge1xuICAgIFwiY29kZVwiOiBcIklMU1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKqXCJcbiAgfSxcbiAgXCJJbmRpYW4gUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIklOUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJJbmRpYW4gUnVwZWUgTmd1bHRydW1cIjoge1xuICAgIFwiY29kZVwiOiBcIklOUiBCVE5cIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSXJhcWkgRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIklRRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJJcmFuaWFuIFJpYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIklSUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJJY2VsYW5kIEtyb25hXCI6IHtcbiAgICBcImNvZGVcIjogXCJJU0tcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJKYW1haWNhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkpNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiSiRcIlxuICB9LFxuICBcIkpvcmRhbmlhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSk9EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlllblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSlBZXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCpVwiXG4gIH0sXG4gIFwiS2VueWFuIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJLRVNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU29tXCI6IHtcbiAgICBcImNvZGVcIjogXCJLR1NcIixcbiAgICBcInN5bWJvbFwiOiBcItC70LJcIlxuICB9LFxuICBcIlJpZWxcIjoge1xuICAgIFwiY29kZVwiOiBcIktIUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4Z+bXCJcbiAgfSxcbiAgXCJDb21vcm8gRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIktNRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJOb3J0aCBLb3JlYW4gV29uXCI6IHtcbiAgICBcImNvZGVcIjogXCJLUFdcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqVwiXG4gIH0sXG4gIFwiV29uXCI6IHtcbiAgICBcImNvZGVcIjogXCJLUldcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqVwiXG4gIH0sXG4gIFwiS3V3YWl0aSBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1dEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNheW1hbiBJc2xhbmRzIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1lEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJUZW5nZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1pUXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJLaXBcIjoge1xuICAgIFwiY29kZVwiOiBcIkxBS1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKtXCJcbiAgfSxcbiAgXCJMZWJhbmVzZSBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTEJQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiU3JpIExhbmthIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJMS1JcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiTGliZXJpYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJMUkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkxpdGh1YW5pYW4gTGl0YXNcIjoge1xuICAgIFwiY29kZVwiOiBcIkxUTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTHRcIlxuICB9LFxuICBcIkxhdHZpYW4gTGF0c1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTFZMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMc1wiXG4gIH0sXG4gIFwiTGlieWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJMWURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTW9yb2NjYW4gRGlyaGFtXCI6IHtcbiAgICBcImNvZGVcIjogXCJNQURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTW9sZG92YW4gTGV1XCI6IHtcbiAgICBcImNvZGVcIjogXCJNRExcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTWFsYWdhc3kgQXJpYXJ5XCI6IHtcbiAgICBcImNvZGVcIjogXCJNR0FcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRGVuYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIk1LRFwiLFxuICAgIFwic3ltYm9sXCI6IFwi0LTQtdC9XCJcbiAgfSxcbiAgXCJLeWF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJNTUtcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVncmlrXCI6IHtcbiAgICBcImNvZGVcIjogXCJNTlRcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCrlwiXG4gIH0sXG4gIFwiUGF0YWNhXCI6IHtcbiAgICBcImNvZGVcIjogXCJNT1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiT3VndWl5YVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVJPXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1hdXJpdGl1cyBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVVSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIlJ1Zml5YWFcIjoge1xuICAgIFwiY29kZVwiOiBcIk1WUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJLd2FjaGFcIjoge1xuICAgIFwiY29kZVwiOiBcIk1XS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNZXhpY2FuIFBlc28gTWV4aWNhbiBVbmlkYWQgZGUgSW52ZXJzaW9uIChVREkpXCI6IHtcbiAgICBcImNvZGVcIjogXCJNWE4gTVhWXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJNYWxheXNpYW4gUmluZ2dpdFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVlSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSTVwiXG4gIH0sXG4gIFwiTWV0aWNhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVpOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJNVFwiXG4gIH0sXG4gIFwiTmFpcmFcIjoge1xuICAgIFwiY29kZVwiOiBcIk5HTlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKmXCJcbiAgfSxcbiAgXCJDb3Jkb2JhIE9yb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTklPXCIsXG4gICAgXCJzeW1ib2xcIjogXCJDJFwiXG4gIH0sXG4gIFwiTm9yd2VnaWFuIEtyb25lXCI6IHtcbiAgICBcImNvZGVcIjogXCJOT0tcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJOZXBhbGVzZSBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTlBSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIk5ldyBaZWFsYW5kIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTlpEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJSaWFsIE9tYW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJPTVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiQmFsYm9hIFVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEFCIFVTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiQi8uXCJcbiAgfSxcbiAgXCJOdWV2byBTb2xcIjoge1xuICAgIFwiY29kZVwiOiBcIlBFTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiUy8uXCJcbiAgfSxcbiAgXCJLaW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJQR0tcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUGhpbGlwcGluZSBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJQSFBcIixcbiAgICBcInN5bWJvbFwiOiBcIlBocFwiXG4gIH0sXG4gIFwiUGFraXN0YW4gUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIlBLUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJabG90eVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUExOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJ6xYJcIlxuICB9LFxuICBcIkd1YXJhbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIlBZR1wiLFxuICAgIFwic3ltYm9sXCI6IFwiR3NcIlxuICB9LFxuICBcIlFhdGFyaSBSaWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJRQVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiTmV3IExldVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUk9OXCIsXG4gICAgXCJzeW1ib2xcIjogXCJsZWlcIlxuICB9LFxuICBcIlNlcmJpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlJTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwi0JTQuNC9LlwiXG4gIH0sXG4gIFwiUnVzc2lhbiBSdWJsZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUlVCXCIsXG4gICAgXCJzeW1ib2xcIjogXCLRgNGD0LFcIlxuICB9LFxuICBcIlJ3YW5kYSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiUldGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlNhdWRpIFJpeWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJTQVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiU29sb21vbiBJc2xhbmRzIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0JEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTZXljaGVsbGVzIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJTQ1JcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiU3VkYW5lc2UgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIlNER1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTd2VkaXNoIEtyb25hXCI6IHtcbiAgICBcImNvZGVcIjogXCJTRUtcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJTaW5nYXBvcmUgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJTR0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlNhaW50IEhlbGVuYSBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0hQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTGVvbmVcIjoge1xuICAgIFwiY29kZVwiOiBcIlNMTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTb21hbGkgU2hpbGxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIlNPU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiU1wiXG4gIH0sXG4gIFwiU3VyaW5hbSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNSRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiRG9icmFcIjoge1xuICAgIFwiY29kZVwiOiBcIlNURFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFbCBTYWx2YWRvciBDb2xvbiBVUyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNWQyBVU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlN5cmlhbiBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1lQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTGlsYW5nZW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJTWkxcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQmFodFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVEhCXCIsXG4gICAgXCJzeW1ib2xcIjogXCLguL9cIlxuICB9LFxuICBcIlNvbW9uaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVEpTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1hbmF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJUTVRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVuaXNpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlRORFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQYSdhbmdhXCI6IHtcbiAgICBcImNvZGVcIjogXCJUT1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVya2lzaCBMaXJhXCI6IHtcbiAgICBcImNvZGVcIjogXCJUUllcIixcbiAgICBcInN5bWJvbFwiOiBcIlRMXCJcbiAgfSxcbiAgXCJUcmluaWRhZCBhbmQgVG9iYWdvIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVFREXCIsXG4gICAgXCJzeW1ib2xcIjogXCJUVCRcIlxuICB9LFxuICBcIk5ldyBUYWl3YW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJUV0RcIixcbiAgICBcInN5bWJvbFwiOiBcIk5UJFwiXG4gIH0sXG4gIFwiVGFuemFuaWFuIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJUWlNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSHJ5dm5pYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVUFIXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigrRcIlxuICB9LFxuICBcIlVnYW5kYSBTaGlsbGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVUdYXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJQZXNvIFVydWd1YXlvIFVydWd1YXkgUGVzbyBlbiBVbmlkYWRlcyBJbmRleGFkYXNcIjoge1xuICAgIFwiY29kZVwiOiBcIlVZVSBVWUlcIixcbiAgICBcInN5bWJvbFwiOiBcIiRVXCJcbiAgfSxcbiAgXCJVemJla2lzdGFuIFN1bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVVpTXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJCb2xpdmFyIEZ1ZXJ0ZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVkVGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJCc1wiXG4gIH0sXG4gIFwiRG9uZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVk5EXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqtcIlxuICB9LFxuICBcIlZhdHVcIjoge1xuICAgIFwiY29kZVwiOiBcIlZVVlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJUYWxhXCI6IHtcbiAgICBcImNvZGVcIjogXCJXU1RcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ0ZBIEZyYW5jIEJFQUNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhBRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTaWx2ZXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlhBR1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJHb2xkXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQVVcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQm9uZCBNYXJrZXRzIFVuaXRzIEV1cm9wZWFuIENvbXBvc2l0ZSBVbml0IChFVVJDTylcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBNb25ldGFyeSBVbml0IChFLk0uVS4tNilcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBVbml0IG9mIEFjY291bnQgOShFLlUuQS4tOSlcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQ1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBVbml0IG9mIEFjY291bnQgMTcoRS5VLkEuLTE3KVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEJEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkVhc3QgQ2FyaWJiZWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWENEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTRFJcIjoge1xuICAgIFwiY29kZVwiOiBcIlhEUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJVSUMtRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhGVVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDRkEgRnJhbmMgQkNFQU9cIjoge1xuICAgIFwiY29kZVwiOiBcIlhPRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQYWxsYWRpdW1cIjoge1xuICAgIFwiY29kZVwiOiBcIlhQRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDRlAgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhQRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQbGF0aW51bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFBUXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNvZGVzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3IgdGVzdGluZyBwdXJwb3Nlc1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFRTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlllbWVuaSBSaWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJZRVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiUmFuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWkFSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSXCJcbiAgfSxcbiAgXCJSYW5kIExvdGlcIjoge1xuICAgIFwiY29kZVwiOiBcIlpBUiBMU0xcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUmFuZCBOYW1pYmlhIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWkFSIE5BRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJaYW1iaWFuIEt3YWNoYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWk1LXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlppbWJhYndlIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWldMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9XG59O1xuIiwidmFyIGZpbmFuY2UgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZmluYW5jZTtcbmZpbmFuY2UuYWNjb3VudF90eXBlID0gcmVxdWlyZShcIi4vYWNjb3VudF90eXBlXCIpO1xuZmluYW5jZS50cmFuc2FjdGlvbl90eXBlID0gcmVxdWlyZShcIi4vdHJhbnNhY3Rpb25fdHlwZVwiKTtcbmZpbmFuY2UuY3VycmVuY3kgPSByZXF1aXJlKFwiLi9jdXJyZW5jeVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZGVwb3NpdFwiLFxuICBcIndpdGhkcmF3YWxcIixcbiAgXCJwYXltZW50XCIsXG4gIFwiaW52b2ljZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJUQ1BcIixcbiAgXCJIVFRQXCIsXG4gIFwiU0REXCIsXG4gIFwiUkFNXCIsXG4gIFwiR0JcIixcbiAgXCJDU1NcIixcbiAgXCJTU0xcIixcbiAgXCJBR1BcIixcbiAgXCJTUUxcIixcbiAgXCJGVFBcIixcbiAgXCJQQ0lcIixcbiAgXCJBSVwiLFxuICBcIkFEUFwiLFxuICBcIlJTU1wiLFxuICBcIlhNTFwiLFxuICBcIkVYRVwiLFxuICBcIkNPTVwiLFxuICBcIkhERFwiLFxuICBcIlRIWFwiLFxuICBcIlNNVFBcIixcbiAgXCJTTVNcIixcbiAgXCJVU0JcIixcbiAgXCJQTkdcIixcbiAgXCJTQVNcIixcbiAgXCJJQlwiLFxuICBcIlNDU0lcIixcbiAgXCJKU09OXCIsXG4gIFwiWFNTXCIsXG4gIFwiSkJPRFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhdXhpbGlhcnlcIixcbiAgXCJwcmltYXJ5XCIsXG4gIFwiYmFjay1lbmRcIixcbiAgXCJkaWdpdGFsXCIsXG4gIFwib3Blbi1zb3VyY2VcIixcbiAgXCJ2aXJ0dWFsXCIsXG4gIFwiY3Jvc3MtcGxhdGZvcm1cIixcbiAgXCJyZWR1bmRhbnRcIixcbiAgXCJvbmxpbmVcIixcbiAgXCJoYXB0aWNcIixcbiAgXCJtdWx0aS1ieXRlXCIsXG4gIFwiYmx1ZXRvb3RoXCIsXG4gIFwid2lyZWxlc3NcIixcbiAgXCIxMDgwcFwiLFxuICBcIm5ldXJhbFwiLFxuICBcIm9wdGljYWxcIixcbiAgXCJzb2xpZCBzdGF0ZVwiLFxuICBcIm1vYmlsZVwiXG5dO1xuIiwidmFyIGhhY2tlciA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBoYWNrZXI7XG5oYWNrZXIuYWJicmV2aWF0aW9uID0gcmVxdWlyZShcIi4vYWJicmV2aWF0aW9uXCIpO1xuaGFja2VyLmFkamVjdGl2ZSA9IHJlcXVpcmUoXCIuL2FkamVjdGl2ZVwiKTtcbmhhY2tlci5ub3VuID0gcmVxdWlyZShcIi4vbm91blwiKTtcbmhhY2tlci52ZXJiID0gcmVxdWlyZShcIi4vdmVyYlwiKTtcbmhhY2tlci5pbmd2ZXJiID0gcmVxdWlyZShcIi4vaW5ndmVyYlwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYmFja2luZyB1cFwiLFxuICBcImJ5cGFzc2luZ1wiLFxuICBcImhhY2tpbmdcIixcbiAgXCJvdmVycmlkaW5nXCIsXG4gIFwiY29tcHJlc3NpbmdcIixcbiAgXCJjb3B5aW5nXCIsXG4gIFwibmF2aWdhdGluZ1wiLFxuICBcImluZGV4aW5nXCIsXG4gIFwiY29ubmVjdGluZ1wiLFxuICBcImdlbmVyYXRpbmdcIixcbiAgXCJxdWFudGlmeWluZ1wiLFxuICBcImNhbGN1bGF0aW5nXCIsXG4gIFwic3ludGhlc2l6aW5nXCIsXG4gIFwidHJhbnNtaXR0aW5nXCIsXG4gIFwicHJvZ3JhbW1pbmdcIixcbiAgXCJwYXJzaW5nXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImRyaXZlclwiLFxuICBcInByb3RvY29sXCIsXG4gIFwiYmFuZHdpZHRoXCIsXG4gIFwicGFuZWxcIixcbiAgXCJtaWNyb2NoaXBcIixcbiAgXCJwcm9ncmFtXCIsXG4gIFwicG9ydFwiLFxuICBcImNhcmRcIixcbiAgXCJhcnJheVwiLFxuICBcImludGVyZmFjZVwiLFxuICBcInN5c3RlbVwiLFxuICBcInNlbnNvclwiLFxuICBcImZpcmV3YWxsXCIsXG4gIFwiaGFyZCBkcml2ZVwiLFxuICBcInBpeGVsXCIsXG4gIFwiYWxhcm1cIixcbiAgXCJmZWVkXCIsXG4gIFwibW9uaXRvclwiLFxuICBcImFwcGxpY2F0aW9uXCIsXG4gIFwidHJhbnNtaXR0ZXJcIixcbiAgXCJidXNcIixcbiAgXCJjaXJjdWl0XCIsXG4gIFwiY2FwYWNpdG9yXCIsXG4gIFwibWF0cml4XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImJhY2sgdXBcIixcbiAgXCJieXBhc3NcIixcbiAgXCJoYWNrXCIsXG4gIFwib3ZlcnJpZGVcIixcbiAgXCJjb21wcmVzc1wiLFxuICBcImNvcHlcIixcbiAgXCJuYXZpZ2F0ZVwiLFxuICBcImluZGV4XCIsXG4gIFwiY29ubmVjdFwiLFxuICBcImdlbmVyYXRlXCIsXG4gIFwicXVhbnRpZnlcIixcbiAgXCJjYWxjdWxhdGVcIixcbiAgXCJzeW50aGVzaXplXCIsXG4gIFwiaW5wdXRcIixcbiAgXCJ0cmFuc21pdFwiLFxuICBcInByb2dyYW1cIixcbiAgXCJyZWJvb3RcIixcbiAgXCJwYXJzZVwiXG5dO1xuIiwidmFyIGVuID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGVuO1xuZW4udGl0bGUgPSBcIkVuZ2xpc2hcIjtcbmVuLnNlcGFyYXRvciA9IFwiICYgXCI7XG5lbi5hZGRyZXNzID0gcmVxdWlyZShcIi4vYWRkcmVzc1wiKTtcbmVuLmNyZWRpdF9jYXJkID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRcIik7XG5lbi5jb21wYW55ID0gcmVxdWlyZShcIi4vY29tcGFueVwiKTtcbmVuLmludGVybmV0ID0gcmVxdWlyZShcIi4vaW50ZXJuZXRcIik7XG5lbi5kYXRhYmFzZSA9IHJlcXVpcmUoXCIuL2RhdGFiYXNlXCIpO1xuZW4ubG9yZW0gPSByZXF1aXJlKFwiLi9sb3JlbVwiKTtcbmVuLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuZW4ucGhvbmVfbnVtYmVyID0gcmVxdWlyZShcIi4vcGhvbmVfbnVtYmVyXCIpO1xuZW4uY2VsbF9waG9uZSA9IHJlcXVpcmUoXCIuL2NlbGxfcGhvbmVcIik7XG5lbi5idXNpbmVzcyA9IHJlcXVpcmUoXCIuL2J1c2luZXNzXCIpO1xuZW4uY29tbWVyY2UgPSByZXF1aXJlKFwiLi9jb21tZXJjZVwiKTtcbmVuLnRlYW0gPSByZXF1aXJlKFwiLi90ZWFtXCIpO1xuZW4uaGFja2VyID0gcmVxdWlyZShcIi4vaGFja2VyXCIpO1xuZW4uYXBwID0gcmVxdWlyZShcIi4vYXBwXCIpO1xuZW4uZmluYW5jZSA9IHJlcXVpcmUoXCIuL2ZpbmFuY2VcIik7XG5lbi5kYXRlID0gcmVxdWlyZShcIi4vZGF0ZVwiKTtcbmVuLnN5c3RlbSA9IHJlcXVpcmUoXCIuL3N5c3RlbVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXJqYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFoZGlmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NwcmF5YWdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1emluYXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2t5aGFydG1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb3Njb3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VyYWZpcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvOTFiaWxhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZ29yZ2FyeWJhbGRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhbGVib2dkZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFseWtoaW52LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZWxoZWxpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdXNoc29saXRhcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29yZXl3ZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc25vd3NoYWRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyZXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvbGRlbndlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXlpbWp1YW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VudmV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3VudGVyZHJlaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29sbGVnZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWVqZmFuY2hlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmR5aXNvbmxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdWx0cmFnZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnVja195b3VfdHdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkZWxsZWNoYXJsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXRlbmV1cG9wdWxhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haG1ldGFscGJhbGthbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TdGlldml1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXJlbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc3ZhbGRhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmdlbGNlYmFsbG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWVycnlrb2JsZW50ei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRlcmxhbmR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhdGFyaW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlZ2xvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZGNsYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWhtZXRzdWxlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGFzZm9sbGlvdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlyb2JpbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3Jlcml4b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29sYWdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2h6ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya2plbmtpbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmljb2xhaV9sYXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm94ZHppbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxhZ29vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZGlvdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXprby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFkZW5nbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXV0bHU4Mi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaW1vYmVuc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm9jaW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1aWlpcG9udGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NveWphdmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaGF1c3Rpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b21hc2xhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9WaW5UaG9tYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvTWFuaWtSYXRoZWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFuZ2F0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZW1zaGlkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlZW11bnJvZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fc2hhaGVkay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbmRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0JpbGxTS2VubmV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpdnlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2hoZW1zbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbmRyZXNvcmh1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb2ZmZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvOWxlc3NvbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGludXgyOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9DaGFraW50b3NoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuYWFtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3JlaXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYWRlZWQ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0a2NsYXJrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plZGJyaWRnZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FsbGVlZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmFrYXNpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJpaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQnJpYW5QdXJraXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxtYXJ0aW5oby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idWJsaWVua28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGV2YW5rb3NoYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvWmFjaGFyeVpvcmJhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1taWxsd29vZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NodWFzb3J0aW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbWVubGVldHVya3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9tYXNfamFub3VzZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVycmhhYXNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1J1c3NlbGxCaXNob3AvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhamVzaHdhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYnJhY2NvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlcm1vbnBhaW50ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJkdWxsaW5kZW5pcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc2Fjb3N0YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXByYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95YWxvemhraW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhbmRsZXJ2ZHcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtZ2FydGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3ZpY3RhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbW1hZGVsaW1pdGVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JveWJhcmJlcnVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F4ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhZGFyYmF0b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmZiZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3lyb3BpYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5raXRpbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJhbmVibG93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZsYXNobXVycGh5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0NocmlzRmFyaW5hNzgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsaW9tZWdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhc2NoYW10LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ptX2RlbmlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fub2ZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlbm55YWRyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXR5cmtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rpbmd5aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVycnl4bGlmZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYXJvbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2luZGF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BycnN0bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZHVhcmRvc3R1YXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RoaWxpcHNpdmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvR2F2aWNvSW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhaXJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2hpeHgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlnbWFuY2hvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JsYWtlc2lta2lucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWVpaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGpydXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdWJlcnNjaGl6by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9reWxlZm91bmRyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jbGF1ZGlvZ3VnbGllcmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlwcGxlbWRrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V4ZW50cmljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWtlbW9vcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9hb2VkdW1lZGVpcm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Bvb3JtaW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlcmVzaGVua292LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlcnlpbG1hei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXlkbl93b29kcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydWRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xsdW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2dhdXJhdl9iYWdoZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFtaWVicml0dGFpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWRsaXR0bGVkdWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpZmFnb3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWdyb21vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5lZnJpdHovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXJ3YW5oZXNyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWVzZWxsYXdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVtaWFoYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb3JpZGhhbmR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWVuc2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2NvaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NtYWN6bnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ29uemFsb3JvYmFpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFuZGluaV9tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N5ZGxhd3JlbmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NkaGFycmlzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGdlcmtlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXdpc2FpbnNsaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhcmxpZWN3YWl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2Jic2NoaWxsZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmxleHJzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRkZXRhaWxzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhcXVlbHdpbHNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcm1hcnRpbmVhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vcG5zcmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hnaGFycnlnby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXhpbXNlc2h1ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91eGFsZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FtaWhhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFucG9yeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFydmluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2VtYXJxdWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plZmZmaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3J5c3RhbGZpc3Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb2tlc2hfY29kZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlZGFtaWFuaGRlei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcG1hY2hhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnVud2F0ZXJjYXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltb3RoeWNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l2YW5maWxpcG92YmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGljYXJkMTAyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNvYmFyYm9zYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rcmFzbm91a2hvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nM2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRlbWlsdGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2tkdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vcGVyYXRpbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVuZ2l3YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaHVnb21hbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9nb3JhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGNfdXNlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob3JhY2lvYmVsbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2xhYXBNZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZWVyYWdpdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcW9uaWNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lseWFfcGVzdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2Fycm93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NzaXNraW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvSGVucnlIb2ZmbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jkc2F1bmRlcnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbXN4dS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jdXJpb3Vzb2ZmaWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW1hZHJheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoaWdhbmdyYWhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2hldHRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY2tmcmF0dGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1bm5pbmdza3VsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWR5c29uZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmVudG9uX2NsYXJrZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZW5ueXNoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhZGVuaGFtbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdXJ0aW5jLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FtYW5ydXphaW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvcmV5aGFnZ2FyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9LYXJpbW1vdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWFyb25hbGZyZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd3Ryc2xkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ppdGFjaGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlcmVhbG1hcnZpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wbWVpc3NuZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb29vbXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhY2t5MTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVzc2VkZHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhbmVodWRzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWttdXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvSXNhcnlBbWFpcmFuaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnRodXJob2xjb21iZTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm94bW9kZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWhzYW5kaWFyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9MdWNhc1BlcmRpZGFvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYWx0MG5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N3YXBsb3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thZWxpZmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGxiYWJpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndWlsbGVtYm90aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmluZGFtXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZW5ieXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWFnb3Zlcm5ldHRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ptaWxsc3BheXNiaWxscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWtlbWFpMmF3ZXNvbWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVydm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVrYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RhMWV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYmVyZ2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmVsaXBlY3NsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJlYTIxMTA4Ny8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXJhbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhvb3llbmdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fib3ZlZnVuY3Rpb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGNyaWRlc2FnYWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbmRvbWxpZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQnJ5YW5Ib3JzZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGV5a2VubmV0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYWhwYXJyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGx0aGluZ3NzbWl0dHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFudmVybm9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jld2VpbnJlaWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2luY3JlYXNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhbHZhcmFkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FseG5kcnVzdGlub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc291dWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3JrdW5jYXlsYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQU1fS24yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlYXJwaXhlbHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFzc2Ftb2xvZ3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmltYXJldGhvbWFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvc21hci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TVUxpaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJqYW1lc25vYmxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbHZhbm11aGxlbWFubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFuZUl4RC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYWNoby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95aWdpdHBpbmFyYmFzaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idXp6dXNib3JuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYXJvbmt3aGl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ybWxld2lzdWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2lhbmNhcmxvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYmlyY2tlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kX25ueV9tX2NoZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2RpZG9uYXRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0YXJpYm95LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fib3RhcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJhbGVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BzZGVzaWdudWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbHVkd2ljemFrcGF3ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVtYW5qYWl2YW5vdmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbHVsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haG1hZGFqbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm92a2Fzb2xvdmV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbWdyb3Zlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJpZW56bzc3Ny8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25hdGhhbnNpbW1vbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsc29uam95Y2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvUzB1Zmk0bjMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveHRvcGhlcnBhdWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2FrdHJlZW1lZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hdGVzY2h1bHRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZpbmRpbmdqZW5ueS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYW1hbmtyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudG9ueXpvdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlX3NvY2lhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWVoYW1ibGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvbGlkX2NvbG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FiZWxjYWJhbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWJpbGRlcmJhY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2t1c2FhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvcmR5dmRib29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmxvc2dhdmluYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWNoa2luYXRvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YzI3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JkYmFubm9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nyb2FreC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXJpYmJsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2VyaWhlbmFyZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXRhZGVsZW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2djbW9ybGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1aXZ2di8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXNjaGFkcm9zdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yRHVidWdyYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2ludG9waWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dGJpbG90dGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGF5bG9ybGluZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWdkcmF3cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWxuMWtzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21haG1vdWRtZXR3YWxseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TaWx2ZXJlZGdlOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJla2VicmFkbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhcHB5cGV0ZXIxOTgzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RyYXZpc19hcm5vbGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJ0ZW1fa29zdGVua28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRvYmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF5a2lpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxla19kanVyaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NpcHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlndWVsbWVuZGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1c3RpbnJoZWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxzb2Jyb29rcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcm9ueC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tY2ZseWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW50aV91cnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsbGZvcmRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGF5dWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJ0Ym9lcmxhbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyb3Nob2xseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGFtbmFjLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N5bnRoaWFzYXZhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVyaW5nYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5yby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oaWVtaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFja2llc2Fpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZHV1Y2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50amFudXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJvb25fc2hhcm1hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RzaHN0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlaGFja2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxicm9va3Nqci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFubWNsYXVnaGxpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jbHViYjNycnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGF5YmVubG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hyaXB1bm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL215YXN0cm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRpdHlhc3V0b21vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpZ2l0YWxtYXZlcmljay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oamFydHN0cm9ybi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdG9sbWFjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YXVnaGFubW9mZml0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmRvdHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNuaWZlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXJnZXlzYWZvbm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY3JhcGRuYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc21qODMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdml0b3JsZWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nva2FuaXdhYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemFraTNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lsbHl6b3Jlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb2NhYnl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc21hbmluY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGpzaGVybWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkaGVtcGhpbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2FnaG5lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWNvZHltaWNvbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByYXZlZW5fdmlqYXlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhYmJydWNjaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmF2aXNoaW5lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdWxkYXJrYWx2aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvRWx0X24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGhpbGxhcGllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va3NlYW5qYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWQ4MzU1NTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VkcmV0a2Vza2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fuamhlcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHVjazRmdWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0X3JpbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25vdWZhbGlicmFoaW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaDFicmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9yZ2VzX21hcmNvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZpbmhhbGxhZGF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NpYXJhbnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlZm9vby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWtlYmVlY2hhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b255bWlsbGlvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NodWFyYWljaHVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lyYWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0cmFuZ3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG1pdHJpeWNodXRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXJsaWVnYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyYXNobWFudGVnaGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRoYW1kYW5uYXdheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haW5zbGV5d2Fnb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Zlbmxlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWlzYWxhYmlkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlc2h1ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJseXNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdXRjaG5hZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlZGR5emV0dGVybHVuZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW11ZWxrcmFmdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hb2ltZWRpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b2RkcmV3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZGVwb2V0X3J1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FydHZhdnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVub2l0Ym91Y2FydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb21hcm1lbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2xtYXJsb3Blei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmVhcnRpbmMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG9ta2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2Fib3JlbnRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JpbmNsZWRpZXJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21heGltc29yb2tpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wbGFzdGljaW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2oyZGVtZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWFjaGFuYW5yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcGFsdWNjaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVfYXNjYW5pby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWthcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXdpZHd1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNvcmFtaXJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmdlbGNyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JwYXRleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb3BleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZWhhdGthdGh1cmlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZV9wdXJwbGVidW5ueS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci8xbWFya2l6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FqYXh5X3J1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyZW5tdXJyZWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1ZGVzdGVpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc2thcmxldmluc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcnN0dWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWhmeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWNpdmFkZWxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVhbmRyb3ZhcmFuZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRnYWxsYW50LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3Rvcl9oYXlkaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2F3cmIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnloYW5oYXNzYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW1heXZzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FfYnJpeGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcm9sa3Jha293aWFrXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJrdWxhbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VyYW43LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NnZ2F1cmF2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzX3dpdGtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvc29zaW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BvbGFyaXR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRsYXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhbmRvbmJ1cmtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbnN0YW50eC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXlsb3JmZWxpei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmFpZ2VsaW1lbGlhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYWNoZWxyZXZlbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlYWJvMTAxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhaG1lZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlja3l5ZWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2owNG50b2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Bicm9tYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZWJhc2h0b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanBlbmljby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcmFuY2lzX3ZlZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2t0YXllbGlwZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lraWxsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWJiaWFuei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXJyeWdlcmFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9Ccm91bWlZb3Vzc2VmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzB0aGVycGxhbmV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21iaWxhbHNpZGRpcXVlMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pb251c3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3Jycl9ubC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saW1pbmhhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jhd2RpZ2dpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFuZG93bmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NldGhsb3VleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waXhhZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJwaXRuai8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd2l0bWVyNzc3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2V2bmNsY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FuaWNrYWlyYWovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHV6aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGJha2Rlc2lnbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVzYnVqdXBpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cGpvZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG93aWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGlua2lib2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsaW50b3Jvc3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1jb2RpbmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWd1c3RpbmNydWl6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1c290by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aG9tYXNzY2hyaWplci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXBlcm91dG1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYWxtZXJyYXV0YW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2FicmllbGl6YWxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvamVhbnluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkYmFsZGllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL192b2p0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXVyZW5ncmF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p5ZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL215bXlib3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsbGxlby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjaW90b2xlZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmluamFkM20wLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvX3NvaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhc3NsdW5zZm9yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXJpZHJhaGhhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXZpc2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyYWhhbWtlbm5lcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVwZXRpdG9ncmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50b25nZW5raW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVzc29pbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW1hbmRhYnV6YXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhZnJhbmtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2NvbGVyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kc3M0OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0MzIyNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibHVlc2l4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3F1YWlsYW5kcXVhc2FyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0FsYmVydG9Db2NvY2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVwaW5za2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VtZW50aXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWh1ZG9iaXZuaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpYmF1dF9yZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vbGdhcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hvamJlcmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXRvbG9rb25uaWtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJldG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmF1cGludG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlZ290dmljZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGFkaGl4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hY3hpbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2RueWxvYm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZGNhbXBvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRlYnl2YWRpbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJ0b3N6ZGF3eWR6aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VwZXJ2b3ZhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtyZXR6bG9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92b25hY2hvby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXJ5bHdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXZlZGVzaWduZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXlsZXNiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcmJpZ3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVwYXVsYXdhZ25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZXNoYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2l6bWVlZGV2aWwxOTkxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19zY290dGJ1cmdlc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGlzb3Zza3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRzYXNkYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnRkX3NpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvWW91bmdDdXRsYXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21nb250by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdHN0b3RhbGx5YW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcnF1aW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zbW9uZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va3NhbmFmcmV3ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemF1ZXJrcmF1dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1rZWl0aG1hc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pdGluaGF5YXJhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sbWphYnJldS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYW5kYWxhcmVvcGVucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGlua2xlZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9uY2hvbWVuZGl2aWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhbXBlcnJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JydW5vZGVzaWduMTIwNi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXNleWNhdmFuYWdoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2x1eGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG90Z3JpZGxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3BlZHdpZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRld3VsZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0c2FwaWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVsZGVybGVhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3N0dW1waC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlwaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25zYW1veWxvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3ZhbmRlcmtvb2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdG1lX3RpbW90aHlnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL290b3prLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaW56YWRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1NXRhZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jeXJpbF9nYWlsbGFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kX2tvYmVseWF0c2t5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhbmlsb2MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbndkc2hhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvbWFuYnVsYWgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2traXJpbG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R2ZHdpbmRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5ub2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhla2V2aW5qb25lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qd2FsdGVyMTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltZ3Rob21hcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idWRkaGFzb3VyY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXhwaXBlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGF0b25ldG9tbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGlhbnNpZ2l0cC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZHJpZW50aHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2xpbW1rYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9na2FhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJla2NyYW1lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZW5ueXlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lcnJzb2Z0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hhbGlvbm1hbGlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkaGVuZGVyc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tleXVyaTg1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JveGFuZWphbW1ldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raW1jb29sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vka2YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0a2lucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVzc2FuZHJvcmliZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWNrc29ubGF0a2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVicm9uamVubmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvc3Rhc3B0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcmxrYW5hbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW95bmloYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFucGxpZWdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhdWxpaGlydmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VzbGV5dHJhbmtpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mamFndWVyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3dicmljay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXNoYWFhYWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3lhc3NpcnlhaHlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RwYXJyZWxsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mb3RvbWFnaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWthX2phbWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlbmlzZXBpcmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lxYmFscGVya2FzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJ0aW5hbnN0eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcl9veS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdXN0aW5yb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2FicmllbHJvc3Nlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWxnb3Jkb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybGZhaXJjbG91Z2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGFiZWhzZXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpZXJyZXN0b2ZmZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbmpveXRoZXRhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb2dhbmpsYW1iZXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JwZWV6eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb3JleWdpbm5pdmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhbGhyb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXN2ZWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpbmdlc3dhcmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvbHN2ZWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldGVyNTc2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlaWRlaXJlZGFsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2V5bXVyZGFoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhcGhhZWxuaWtzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXZkaGV1dmVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21heGxpbmRlcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qaW1tdWlyaGVhZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZWdyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5raWVmcmVlc2JpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2J0dXJsaW5ja3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvVGFsYmlfQ29uU2VwdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb25nbGl2ZW15d29yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YW5jaGVzei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWlrbGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcm1hbm9icm90aGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jlel9fX2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JlZ3NxdWVlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVlbmJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fcmFnem9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudGhvbnlzdWtvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mbHVpZGJydXNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhY3RydHIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVobmdseW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlcmdtYXJ0aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaHVnb2Nvcm5lam8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX2trZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHphbnRpZXZtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhd2FsYXphci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3Zlc292ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25zZ290d29vZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ieXJ5YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdnl0YXV0YXNfYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXpoZ2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NpY2Vyb2JyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pbHNoZWxtZXJzc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2QzM3B0aG91Z2h0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmVjcmFpZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmNranJ2cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGV4YW5kZXJtYXllcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qY3ViaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JhaWdyY29sZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFnYXdhcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JfdGhvbWFzMTAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29mbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFpa2Vsay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydGdpYmJvbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVzc2VsbF9iYXlsaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWhlc3Nsb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29keXNhbmZpbGlwcG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VidGFueWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkZWJ5YnJlbnRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kY2Fsb25hY2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVyZmVjdGZsb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvampzaWlpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhYXJhYnByZWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1bWFycmFqYW4xMjEyMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1zdGVmZmVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW1pa2VuYWdsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZWVrYXl0d2VldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXJyeWJvbHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29uc3BpcmF0b3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFsbGFzYnBldGVycy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uM2RtYXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVycGltb3N0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J5cm5lY29yZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qX2RyYWtlXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYWxlYmpveWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1c3NvZWR1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvYW5nbG9pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvYnlzYXhvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nb2ZyYXNkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGltYXBvc255eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90amlzb3VzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va2FuZHVuZ2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JpbGx5cm9zaGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29za2FtYXlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21vdGlvbnRoaW5rcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rbmlsb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXNob2NrYTE4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnJpbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFydGpvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29tbml6eWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXJuZXN0c2VtZXJkYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZWFzX3ByLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkZ2FyY2hyaXM5OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aG9tYXNnZWlzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3NlZ3Vpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2FubmVmb3Vybmllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZW1lcnNkZXNpZ25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkYW1tYXJzYmFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hc2lyd2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbl90YXNzb25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phdm9yc3preS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVtcmRhdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWVjaWRzbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGxlcmljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYW5hcHVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY29sZWdseW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1ZHpoaW5fbWlsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVzaWduZXJ2em0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lhbm9zaHAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXZhbmRyaXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx0ZXJjaHVjYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaHJ1Ym8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFfdGlheC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zc2JiX21lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RvcnBoZXJuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdXJpb2xnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JydW5vX21hcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFjdG9wdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlX3dpbnNsZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9lbWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TaHJpaWlpaW1wLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phY29iYmVubmV0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZmVkb3JvZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtZ2xpbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxsYWdyaW5nYXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FpaWFpaWFpaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vbGFvbHVzb2dhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1cnlha25pY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2ltMWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmlja2xhY2tlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ExY2hhcG9uZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGV5bnZpbGpvZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RyaWtld2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5raXJrbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2Fib2dhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG9vb29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phZ2FuMTIzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaWZmc2V0aWF3YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxlbmFkaXNzaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9td2Fya2VudGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWVycnltZWllcl8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcl9nYXJjaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG1hY2tlcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3JhbnR1bGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29udXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3BhY2V3b29kXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeXVjaGkzMTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXZhbnNoYWplZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmlzdGFubGVncm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nob2FpYjI1My8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haXNsaW5ua2VsbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2tjb2tlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1wZXRyaWNvbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Vuc2hpbmVkZ2lybC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFkYW1pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWNsYXJzb25pdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub21pZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRlYmVybmFyZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRpZWR1ZGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlsbGluZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1zb3Blci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbWFtbXVodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5qYW1pbl9rbmlnaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVwZHVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pva2k0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhbmNlZ3V5YXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jib3kxODk1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FteXdlYmJiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J3ZXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhcnVpbnRlc2V0dGRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNidXJ0b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsc2hkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhdHNpcmFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaW1vemNpZ2xlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZmZncmRuci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci84ZDNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlbmVzZWxlem5ldi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbF9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3VwZXJwaGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21zbGFya2luYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci8yZm9ja3VzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NkYXZpczU2NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94aWVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R1cmt1dHV1bGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXh3YXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlYmlub2NsYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhdXJhdmphc3NhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZG1lcnJpcXVlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21kc2lzdG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmV3b2ZmaWNlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2pvdXJpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kbmlybWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yX3NoaXpuaXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx1aXNpb19hemV2ZWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nsb3Vkc3R1ZGlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnZpZXJpY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxleGl2YW5pY2hraW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJhbl9tY2hhbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVycmV0bWFnYWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JldHJheWRhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYWRpa2thcmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0YmVlZG90Y29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVteXdvcmJveXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnBhcnRyaWRnZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsa29wZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2lsdjNyZ3ZuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZXZpemlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5zbWl0aGFnZW5jeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXdsYndveS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aXRvcjM3Ni8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXNhc3Ryb3pvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaW1vX2N6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phc29ubWFya2pvbmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xoYXVzZXJtYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hyYXZpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndWlzY2htaXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpZ29icm9ueC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYW5naGFsMC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWd1ZWxrb29yZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXJnZW9uaXN0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzdGlhbm9saWZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhc3BlcmdybC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1rYXJuYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcGF2ZWxlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waWVycmVfbmVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3kyZ3JhcGhpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVybGluZ3J1bGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsYnVzY2FpbmZvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlbm55amllbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdHVzaG9uYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lc3RlYmFudXJpYmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1icmNlY3JlYXRpb25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbmlsbG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsbGlvdGxld2lzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXJsZXNycHJhdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhZHluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtbWVmZmVzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NibGFuY29fZXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVvbmZlZG90b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFuZ2FmYW5ncy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc19mcmVlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90Z29ybXR4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyeWFuX3RvcGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qcHNjcmliYmxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWdodHk1NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJib250d2VsdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNhYWNmaWZ0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1qZGVsZW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nub3d3cml0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJwdXRyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcmV3YnlyZWVzZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWNoYWNvcmF6emkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlzdHJpYW5pb3NpcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWdvbzA0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlaGFtb25kZWxsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95YXl0ZWVqYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYV9oYXJyaXM4OC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGd1bnNhbmFicmlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3pmb3JyZXN0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3ZhbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybG9zamdzb3VzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZW9iaWthcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haF9saWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvb25leWRvb2RsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXJkZ3I4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RkZ2djY2FhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3phY2tlZWxlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3JtYW5ib3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxfZnVlcnRpc2ltby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc21haWxfYmlsdGFnaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWFuZ29tZXp3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pubW5yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYXRyaWNrY29vbWJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5qb2huc29uX21lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtvbHNjaGVza3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVmZmdvbGVuc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t2YXNuaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2F1Y2hvbWF0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZnVzaW5hdHRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmlub2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2thbnN1cnJlZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbWF3ZXNvbWVmYWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtaWxlYm91ZGVsaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaXNoaV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhbm1hbWFydGluZXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2lraXppbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnRobXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWtnaW5mby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXJyb3JwaXhlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jdXJpb3Vzb25hdXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJoZWVtby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsY29sZW5zby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mb2N6emkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFydGlwMDcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhhb2RhbmcxNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2huY2FmYXp6YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JpbmxheWZpZWxkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5jaXNjb2Ftay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmR1bGh5ZXVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtsYW1iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vkb2JlbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVzZW5mcmVkcmlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pa2FlbGpvcmh1bHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNzbG93aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmluY2lhcnRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lZWxmb3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsbGlvdG5vbHRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95ZWh1ZGFiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpamF5a2FydGhpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZnJvaHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zZXBfbWFydGlucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdHRhY2tzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cjRkeWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHVtc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2luc3RhbG94LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmdvc2FuZ28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGF1bGZhcmluby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXpha3k5OTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2l3aXVwb3Zlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9udmt6bmVtby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b21fZXZlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYXRidXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd29vZHNtYW4wMDEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaG1lZGVza2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhld2lsbGJlYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BzYWlrYWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZV9ibGFjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVpbmFkc2F5cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjdXNnb3JpbGxpdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG90YV92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pnaHlsbGViZXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoaW56ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYW5wYWxvdW5lay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbWllc3Bva2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcl9ydXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFuc293dGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZlbGlwZWFwaXJlc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFndWd6YnJhbmQyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb3N0ZXJqb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmF0aGFsaWVfZnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9iYnl0d29zaG9lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcmVpemxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVteW1vdXRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGlzYWJldGhramFlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3RiYWRhcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW9oYW5yb2hpdGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamxzb2xlcmRlbHRvcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXRza2F3c2FyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nsb3dzcG9jay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96dmNoa2VsbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2lsamFuc2xvZnN0cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JhaWdoZW5uZWJlcnJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RydWJlYXR0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWF1bWxvbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW1zY291dG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQmVub3VhcnJhZGVNLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dpcHN5X3JhZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXRvbmV0X2lsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fya29rb2xleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdHNhamltaXRoaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NtYWxvbnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcmRlYW5kYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fZHdpdGVfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2hhcmRnYXJyZXR0cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVncndpbGtpbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmF0b2xpbmljb2xhZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdTRzaDFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZhbm90aXJsb25pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zdGlyYnUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFyY3lzdG9uZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFpdGFuYW1vcmVuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsY29taXNrZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRoaWFyZGFuYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjb21hbm9fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkY2F6YWxpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWxjb25lcmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyZWdraWxpYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmNyYWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9semFubWFyY28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG93X3Jlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFqa2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0YXJfcHJvZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25rc3ByLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrbWFsZmlrcmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWZhY2NoaW5lbGxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0YW5pc20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFycnlfc2lzdGFsYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVycmF5c3dpZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9id2Fzc2VybWFubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXZyMWwwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZHNoZW5zZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJfc3VidGxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RldmlsamhvXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWxpbWlhbm9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2V0cnVlc2RlbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHdpdHR5cG9yay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haXJza3lsYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG5lemt1bWFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RnYWpqYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hlcmlmX2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FsdmFmYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb3Vpc19jdXJyaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVlZW5yaWdodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jeWJpbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXlyb25uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY2t5c2hpdHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3dlZXRkZWxpc2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2JvbGxlcjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVzZGphc3NvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lbHZpbmRpZGl0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHlzb2xvbW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoYWlzc2VsZW5hdG9yXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdm92ZW5vay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9naXVsaXVzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZWx5YWV2X3JzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL292ZXJjbG9hY2tlZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYW1hbF9jaGFuZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbmN1Ym84Mi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZWxsb2ZldmVycnJyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21oYWxpZ293c2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1bmxhbmRpY3R3aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnU3OTIxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHl0bGF3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVtZXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZpbmNoamtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmlnbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91bXVyZ2RrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0ZmVsdGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYW5zZXJlbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXV0dV9rcmlzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2R5dGFnZ2FydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9udGZibG9nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RhbnZlZXJyYW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGZhbHVjYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx4bGVyb3lkZXZhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdWNpbmdiZWxhbmc0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jhcmdhb3JvYmFsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2xncnV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YWxld2luZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9reWxlZnJvc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmF1bWFubnpvbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5nZWxjb2xiZXJnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhY2hpbmdhd2FzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pqc2hhdzE0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbWFuYXRoYW5fcGR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5kZXplbWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWxzaG9lbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZG9ubW9ycmVhbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnV0enVtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZG9uZmxhdHNvZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VyZ2V5YWxtb25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tsZWZ1ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raXJhbmdvcGFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhdW1hbm5fYWxleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0aGV3a2F5Xy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlfd2lsYnVybi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGVzZ2FyZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXByaWVuZGVhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2hucmlvcmRhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93YWtlX2dzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWtzaXRhcHB1cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1zZ3VsYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGlsYW50cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1vbWVudWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2lyY2FsZWJncm92ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXdicnVzaGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hzaW55bzIzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL200cmlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thdGllbWRhbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvczRmMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lY29tbWVyY2VpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJsaW5qYXlha29keS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd29vc2h5Y3VlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW5nZHRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZGVyZGlhei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibHVlZnhfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpdmVrcHJ2ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXNoYV9zaGVzdGFrb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXVnZW5lZXdlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZ2NsZWdnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL24xZ2h0X2NvZGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpeGNoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmxha2VoYXdrc3dvcnRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RydWVibG9vZF8zMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYWlfbmluaF9uZ3V5ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY2xnb256YWxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95ZXNtZWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXBoY291ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb3Jvbm1hbGtpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1ZWhsZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuYXNuYWthd2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lqYW5tYWhhcmphbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWFyZXNhdmFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZ2ZGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90d2VldHViaGFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWNhcnBlbnRpZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZml0ZXJpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRvbnlyeW5keWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZDAwbWF6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW9ubHl6ZWtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pc3NhYWFteS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmVrZW50aGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVldGFqYXllbmRyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbXlzaGlta28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdGlucmdyYWhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVmYW5vem9mZm9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vdmVycmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJlYmF5MDA3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NodmVsbzk2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3B5cm9uaXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZWRqcGV0ZXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnR5dWttYWV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL193aWxsaWFtZ3VlcnJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsYmVydGF1Z3VzdGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Zpa2FzaHBhdGhhazE4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmluam9obmRheXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmpfZGVtaWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbGlycGl4b2lsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvZGRhcmRsZXdpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYWFzbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanFpdXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hleWNhbXRheWxvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXN0eWFfbWFuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXN0ZXJtaW5kZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2Npbm9qYXNzbzEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnlhbmNlY29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbmR5d29vZHJ1ZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlnaGFuZGRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYnRyYW5zcGFyZW50LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F2aWRkYXllbnRvbmJheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNod2lsZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXlzaXhfZGl6enkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHVyOGxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NleWVkaG9zc2VpbjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJpdmV0d2FnbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtbWFuZGVubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZfZXNzZW50aWFscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbWZzb2NpYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3lhcmRlbm9vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXRlYW9kdml0ZXphLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlYXZlcm1lZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211ZmFkZGFsX213LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhZmVlc2toYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXNoZXJuYXRhbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VsYXFvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkZGllY2hlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NlY2FybG9zcHNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZtX2YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW5yaWNvY2ljY29uaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5tYXJ0aW43MC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nbW91cmllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb25qYWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yeGxva2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3BlZHJvcGluaG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWl0YXJhZmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3NjYXJvd3VzdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYWxwaF9sYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGFuY2hhamFueWFnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dvb2R5ZG90bXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVycnliYWkxOTA3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnNoYWxsY2hlbl8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGFtb3JlcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haW9fX18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhYWJhbmVfd2FpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90eGN4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrYXNoc2hhcm1hMzkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFsbGluZ19zb3VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhaW5yYWphLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211Z3VrYW1pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2hhbm5lc25ldS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJrd2llbmFuZHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FydGhpcGFucmFqLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbGFrYXl1cml5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsYW5femhhbmdfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xheWVyc3Nzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXNwZXJub3Jka3Zpc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlyZmFucXVyZXNoaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYW5uYV9zbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvVk1pbGVzY3UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWVvbjU2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21fa2FsaWJyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcmVlaml0aGV4cC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWNlc2FsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhvb3RfYW1pdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbWVub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9uZXNvbWVsZW1vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFkaW1pcmRldmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZWxjaXByaWFuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYWxpZ2FsaWhhcnVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1bGVzd2FwbmlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlcmVma2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWZhcmFmb25vdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWthc3ZpbmZvdGVjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91cnJ1dGltZW9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmVhbmRhY29tLzEyOC5qcGdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiY29tXCIsXG4gIFwiYml6XCIsXG4gIFwiaW5mb1wiLFxuICBcIm5hbWVcIixcbiAgXCJuZXRcIixcbiAgXCJvcmdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZXhhbXBsZS5vcmdcIixcbiAgXCJleGFtcGxlLmNvbVwiLFxuICBcImV4YW1wbGUubmV0XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImdtYWlsLmNvbVwiLFxuICBcInlhaG9vLmNvbVwiLFxuICBcImhvdG1haWwuY29tXCJcbl07XG4iLCJ2YXIgaW50ZXJuZXQgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gaW50ZXJuZXQ7XG5pbnRlcm5ldC5mcmVlX2VtYWlsID0gcmVxdWlyZShcIi4vZnJlZV9lbWFpbFwiKTtcbmludGVybmV0LmV4YW1wbGVfZW1haWwgPSByZXF1aXJlKFwiLi9leGFtcGxlX2VtYWlsXCIpO1xuaW50ZXJuZXQuZG9tYWluX3N1ZmZpeCA9IHJlcXVpcmUoXCIuL2RvbWFpbl9zdWZmaXhcIik7XG5pbnRlcm5ldC5hdmF0YXJfdXJpID0gcmVxdWlyZShcIi4vYXZhdGFyX3VyaVwiKTtcbiIsInZhciBsb3JlbSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBsb3JlbTtcbmxvcmVtLndvcmRzID0gcmVxdWlyZShcIi4vd29yZHNcIik7XG5sb3JlbS5zdXBwbGVtZW50YWwgPSByZXF1aXJlKFwiLi9zdXBwbGVtZW50YWxcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFiYmFzXCIsXG4gIFwiYWJkdWNvXCIsXG4gIFwiYWJlb1wiLFxuICBcImFic2NpZG9cIixcbiAgXCJhYnNjb25kaXR1c1wiLFxuICBcImFic2Vuc1wiLFxuICBcImFic29yYmVvXCIsXG4gIFwiYWJzcXVlXCIsXG4gIFwiYWJzdGVyZ29cIixcbiAgXCJhYnN1bVwiLFxuICBcImFidW5kYW5zXCIsXG4gIFwiYWJ1dG9yXCIsXG4gIFwiYWNjZWRvXCIsXG4gIFwiYWNjZW5kb1wiLFxuICBcImFjY2VwdHVzXCIsXG4gIFwiYWNjaXBpb1wiLFxuICBcImFjY29tbW9kb1wiLFxuICBcImFjY3VzYXRvclwiLFxuICBcImFjZXJcIixcbiAgXCJhY2VyYml0YXNcIixcbiAgXCJhY2VydnVzXCIsXG4gIFwiYWNpZHVzXCIsXG4gIFwiYWNpZXNcIixcbiAgXCJhY3F1aXJvXCIsXG4gIFwiYWNzaVwiLFxuICBcImFkYW1vXCIsXG4gIFwiYWRhdWdlb1wiLFxuICBcImFkZG9cIixcbiAgXCJhZGR1Y29cIixcbiAgXCJhZGVtcHRpb1wiLFxuICBcImFkZW9cIixcbiAgXCJhZGVwdGlvXCIsXG4gIFwiYWRmZWN0dXNcIixcbiAgXCJhZGZlcm9cIixcbiAgXCJhZGZpY2lvXCIsXG4gIFwiYWRmbGljdG9cIixcbiAgXCJhZGhhZXJvXCIsXG4gIFwiYWRodWNcIixcbiAgXCJhZGljaW9cIixcbiAgXCJhZGltcGxlb1wiLFxuICBcImFkaW52ZW50aXRpYXNcIixcbiAgXCJhZGlwaXNjb3JcIixcbiAgXCJhZGl1dm9cIixcbiAgXCJhZG1pbmlzdHJhdGlvXCIsXG4gIFwiYWRtaXJhdGlvXCIsXG4gIFwiYWRtaXR0b1wiLFxuICBcImFkbW9uZW9cIixcbiAgXCJhZG1vdmVvXCIsXG4gIFwiYWRudW9cIixcbiAgXCJhZG9wdG9cIixcbiAgXCJhZHNpZHVlXCIsXG4gIFwiYWRzdHJpbmdvXCIsXG4gIFwiYWRzdWVzY29cIixcbiAgXCJhZHN1bVwiLFxuICBcImFkdWxhdGlvXCIsXG4gIFwiYWR1bGVzY2Vuc1wiLFxuICBcImFkdWx0dXNcIixcbiAgXCJhZHVyb1wiLFxuICBcImFkdmVuaW9cIixcbiAgXCJhZHZlcnN1c1wiLFxuICBcImFkdm9jb1wiLFxuICBcImFlZGlmaWNpdW1cIixcbiAgXCJhZWdlclwiLFxuICBcImFlZ3JlXCIsXG4gIFwiYWVncm90YXRpb1wiLFxuICBcImFlZ3J1c1wiLFxuICBcImFlbmV1c1wiLFxuICBcImFlcXVpdGFzXCIsXG4gIFwiYWVxdXVzXCIsXG4gIFwiYWVyXCIsXG4gIFwiYWVzdGFzXCIsXG4gIFwiYWVzdGl2dXNcIixcbiAgXCJhZXN0dXNcIixcbiAgXCJhZXRhc1wiLFxuICBcImFldGVybnVzXCIsXG4gIFwiYWdlclwiLFxuICBcImFnZ2Vyb1wiLFxuICBcImFnZ3JlZGlvclwiLFxuICBcImFnbml0aW9cIixcbiAgXCJhZ25vc2NvXCIsXG4gIFwiYWdvXCIsXG4gIFwiYWl0XCIsXG4gIFwiYWl1bnRcIixcbiAgXCJhbGllbnVzXCIsXG4gIFwiYWxpaVwiLFxuICBcImFsaW9xdWlcIixcbiAgXCJhbGlxdWFcIixcbiAgXCJhbGl1c1wiLFxuICBcImFsbGF0dXNcIixcbiAgXCJhbG9cIixcbiAgXCJhbHRlclwiLFxuICBcImFsdHVzXCIsXG4gIFwiYWx2ZXVzXCIsXG4gIFwiYW1hcml0dWRvXCIsXG4gIFwiYW1iaXR1c1wiLFxuICBcImFtYnVsb1wiLFxuICBcImFtaWNpdGlhXCIsXG4gIFwiYW1pY3VsdW1cIixcbiAgXCJhbWlzc2lvXCIsXG4gIFwiYW1pdGFcIixcbiAgXCJhbWl0dG9cIixcbiAgXCJhbW9cIixcbiAgXCJhbW9yXCIsXG4gIFwiYW1vdmVvXCIsXG4gIFwiYW1wbGV4dXNcIixcbiAgXCJhbXBsaXR1ZG9cIixcbiAgXCJhbXBsdXNcIixcbiAgXCJhbmNpbGxhXCIsXG4gIFwiYW5nZWx1c1wiLFxuICBcImFuZ3VsdXNcIixcbiAgXCJhbmd1c3R1c1wiLFxuICBcImFuaW1hZHZlcnRvXCIsXG4gIFwiYW5pbWlcIixcbiAgXCJhbmltdXNcIixcbiAgXCJhbm51c1wiLFxuICBcImFuc2VyXCIsXG4gIFwiYW50ZVwiLFxuICBcImFudGVhXCIsXG4gIFwiYW50ZXBvbm9cIixcbiAgXCJhbnRpcXV1c1wiLFxuICBcImFwZXJpb1wiLFxuICBcImFwZXJ0ZVwiLFxuICBcImFwb3N0b2x1c1wiLFxuICBcImFwcGFyYXR1c1wiLFxuICBcImFwcGVsbG9cIixcbiAgXCJhcHBvbm9cIixcbiAgXCJhcHBvc2l0dXNcIixcbiAgXCJhcHByb2JvXCIsXG4gIFwiYXB0b1wiLFxuICBcImFwdHVzXCIsXG4gIFwiYXB1ZFwiLFxuICBcImFxdWFcIixcbiAgXCJhcmFcIixcbiAgXCJhcmFuZWFcIixcbiAgXCJhcmJpdHJvXCIsXG4gIFwiYXJib3JcIixcbiAgXCJhcmJ1c3R1bVwiLFxuICBcImFyY2FcIixcbiAgXCJhcmNlb1wiLFxuICBcImFyY2Vzc29cIixcbiAgXCJhcmN1c1wiLFxuICBcImFyZ2VudHVtXCIsXG4gIFwiYXJndW1lbnR1bVwiLFxuICBcImFyZ3VvXCIsXG4gIFwiYXJtYVwiLFxuICBcImFybWFyaXVtXCIsXG4gIFwiYXJtb1wiLFxuICBcImFyb1wiLFxuICBcImFyc1wiLFxuICBcImFydGljdWx1c1wiLFxuICBcImFydGlmaWNpb3NlXCIsXG4gIFwiYXJ0b1wiLFxuICBcImFyeFwiLFxuICBcImFzY2lzY29cIixcbiAgXCJhc2NpdFwiLFxuICBcImFzcGVyXCIsXG4gIFwiYXNwaWNpb1wiLFxuICBcImFzcG9ydG9cIixcbiAgXCJhc3NlbnRhdG9yXCIsXG4gIFwiYXN0cnVtXCIsXG4gIFwiYXRhdnVzXCIsXG4gIFwiYXRlclwiLFxuICBcImF0cXVpXCIsXG4gIFwiYXRyb2NpdGFzXCIsXG4gIFwiYXRyb3hcIixcbiAgXCJhdHRlcm9cIixcbiAgXCJhdHRvbGxvXCIsXG4gIFwiYXR0b25iaXR1c1wiLFxuICBcImF1Y3RvclwiLFxuICBcImF1Y3R1c1wiLFxuICBcImF1ZGFjaWFcIixcbiAgXCJhdWRheFwiLFxuICBcImF1ZGVudGlhXCIsXG4gIFwiYXVkZW9cIixcbiAgXCJhdWRpb1wiLFxuICBcImF1ZGl0b3JcIixcbiAgXCJhdWZlcm9cIixcbiAgXCJhdXJldXNcIixcbiAgXCJhdXJpc1wiLFxuICBcImF1cnVtXCIsXG4gIFwiYXV0XCIsXG4gIFwiYXV0ZW1cIixcbiAgXCJhdXR1c1wiLFxuICBcImF1eGlsaXVtXCIsXG4gIFwiYXZhcml0aWFcIixcbiAgXCJhdmFydXNcIixcbiAgXCJhdmVob1wiLFxuICBcImF2ZXJ0b1wiLFxuICBcImF2b2NvXCIsXG4gIFwiYmFpdWx1c1wiLFxuICBcImJhbGJ1c1wiLFxuICBcImJhcmJhXCIsXG4gIFwiYmFyZHVzXCIsXG4gIFwiYmFzaXVtXCIsXG4gIFwiYmVhdHVzXCIsXG4gIFwiYmVsbGljdXNcIixcbiAgXCJiZWxsdW1cIixcbiAgXCJiZW5lXCIsXG4gIFwiYmVuZWZpY2l1bVwiLFxuICBcImJlbmV2b2xlbnRpYVwiLFxuICBcImJlbmlnbmVcIixcbiAgXCJiZXN0aWFcIixcbiAgXCJiaWJvXCIsXG4gIFwiYmlzXCIsXG4gIFwiYmxhbmRpb3JcIixcbiAgXCJib251c1wiLFxuICBcImJvc1wiLFxuICBcImJyZXZpc1wiLFxuICBcImNhZG9cIixcbiAgXCJjYWVjdXNcIixcbiAgXCJjYWVsZXN0aXNcIixcbiAgXCJjYWVsdW1cIixcbiAgXCJjYWxhbWl0YXNcIixcbiAgXCJjYWxjYXJcIixcbiAgXCJjYWxjb1wiLFxuICBcImNhbGN1bHVzXCIsXG4gIFwiY2FsbGlkZVwiLFxuICBcImNhbXBhbmFcIixcbiAgXCJjYW5kaWR1c1wiLFxuICBcImNhbmlzXCIsXG4gIFwiY2Fub25pY3VzXCIsXG4gIFwiY2FudG9cIixcbiAgXCJjYXBpbGx1c1wiLFxuICBcImNhcGlvXCIsXG4gIFwiY2FwaXR1bHVzXCIsXG4gIFwiY2FwdG9cIixcbiAgXCJjYXB1dFwiLFxuICBcImNhcmJvXCIsXG4gIFwiY2FyY2VyXCIsXG4gIFwiY2FyZW9cIixcbiAgXCJjYXJpZXNcIixcbiAgXCJjYXJpb3N1c1wiLFxuICBcImNhcml0YXNcIixcbiAgXCJjYXJtZW5cIixcbiAgXCJjYXJwb1wiLFxuICBcImNhcnVzXCIsXG4gIFwiY2Fzc29cIixcbiAgXCJjYXN0ZVwiLFxuICBcImNhc3VzXCIsXG4gIFwiY2F0ZW5hXCIsXG4gIFwiY2F0ZXJ2YVwiLFxuICBcImNhdHR1c1wiLFxuICBcImNhdWRhXCIsXG4gIFwiY2F1c2FcIixcbiAgXCJjYXV0ZVwiLFxuICBcImNhdmVvXCIsXG4gIFwiY2F2dXNcIixcbiAgXCJjZWRvXCIsXG4gIFwiY2VsZWJyZXJcIixcbiAgXCJjZWxlclwiLFxuICBcImNlbG9cIixcbiAgXCJjZW5hXCIsXG4gIFwiY2VuYWN1bHVtXCIsXG4gIFwiY2Vub1wiLFxuICBcImNlbnN1cmFcIixcbiAgXCJjZW50dW1cIixcbiAgXCJjZXJub1wiLFxuICBcImNlcm51dXNcIixcbiAgXCJjZXJ0ZVwiLFxuICBcImNlcnRvXCIsXG4gIFwiY2VydHVzXCIsXG4gIFwiY2VydnVzXCIsXG4gIFwiY2V0ZXJhXCIsXG4gIFwiY2hhcmlzbWFcIixcbiAgXCJjaGlyb2dyYXBodW1cIixcbiAgXCJjaWJvXCIsXG4gIFwiY2lidXNcIixcbiAgXCJjaWN1dGFcIixcbiAgXCJjaWxpY2l1bVwiLFxuICBcImNpbWVudGFyaXVzXCIsXG4gIFwiY2ltaW5hdGlvXCIsXG4gIFwiY2luaXNcIixcbiAgXCJjaXJjdW12ZW5pb1wiLFxuICBcImNpdG9cIixcbiAgXCJjaXZpc1wiLFxuICBcImNpdml0YXNcIixcbiAgXCJjbGFtXCIsXG4gIFwiY2xhbW9cIixcbiAgXCJjbGFyb1wiLFxuICBcImNsYXJ1c1wiLFxuICBcImNsYXVkZW9cIixcbiAgXCJjbGF1c3RydW1cIixcbiAgXCJjbGVtZW50aWFcIixcbiAgXCJjbGliYW51c1wiLFxuICBcImNvYWR1bmF0aW9cIixcbiAgXCJjb2FlZ3Jlc2NvXCIsXG4gIFwiY29lcGlcIixcbiAgXCJjb2VyY2VvXCIsXG4gIFwiY29naXRvXCIsXG4gIFwiY29nbmF0dXNcIixcbiAgXCJjb2dub21lblwiLFxuICBcImNvZ29cIixcbiAgXCJjb2hhZXJvXCIsXG4gIFwiY29oaWJlb1wiLFxuICBcImNvaG9yc1wiLFxuICBcImNvbGxpZ29cIixcbiAgXCJjb2xsb2NvXCIsXG4gIFwiY29sbHVtXCIsXG4gIFwiY29sb1wiLFxuICBcImNvbG9yXCIsXG4gIFwiY29tYVwiLFxuICBcImNvbWJpYm9cIixcbiAgXCJjb21idXJvXCIsXG4gIFwiY29tZWRvXCIsXG4gIFwiY29tZXNcIixcbiAgXCJjb21ldGVzXCIsXG4gIFwiY29taXNcIixcbiAgXCJjb21pdGF0dXNcIixcbiAgXCJjb21tZW1vcm9cIixcbiAgXCJjb21taW5vclwiLFxuICBcImNvbW1vZG9cIixcbiAgXCJjb21tdW5pc1wiLFxuICBcImNvbXBhcm9cIixcbiAgXCJjb21wZWxsb1wiLFxuICBcImNvbXBsZWN0dXNcIixcbiAgXCJjb21wb25vXCIsXG4gIFwiY29tcHJlaGVuZG9cIixcbiAgXCJjb21wdHVzXCIsXG4gIFwiY29uYXR1c1wiLFxuICBcImNvbmNlZG9cIixcbiAgXCJjb25jaWRvXCIsXG4gIFwiY29uY3VsY29cIixcbiAgXCJjb25kaWNvXCIsXG4gIFwiY29uZHVjb1wiLFxuICBcImNvbmZlcm9cIixcbiAgXCJjb25maWRvXCIsXG4gIFwiY29uZm9ydG9cIixcbiAgXCJjb25mdWdvXCIsXG4gIFwiY29uZ3JlZ2F0aW9cIixcbiAgXCJjb25pY2lvXCIsXG4gIFwiY29uaWVjdG9cIixcbiAgXCJjb25pdG9yXCIsXG4gIFwiY29uaXVyYXRpb1wiLFxuICBcImNvbm9yXCIsXG4gIFwiY29ucXVlcm9yXCIsXG4gIFwiY29uc2NlbmRvXCIsXG4gIFwiY29uc2Vydm9cIixcbiAgXCJjb25zaWRlcm9cIixcbiAgXCJjb25zcGVyZ29cIixcbiAgXCJjb25zdGFuc1wiLFxuICBcImNvbnN1YXNvclwiLFxuICBcImNvbnRhYmVzY29cIixcbiAgXCJjb250ZWdvXCIsXG4gIFwiY29udGlnb1wiLFxuICBcImNvbnRyYVwiLFxuICBcImNvbnR1cmJvXCIsXG4gIFwiY29udmVudHVzXCIsXG4gIFwiY29udm9jb1wiLFxuICBcImNvcGlhXCIsXG4gIFwiY29waW9zZVwiLFxuICBcImNvcm51XCIsXG4gIFwiY29yb25hXCIsXG4gIFwiY29ycHVzXCIsXG4gIFwiY29ycmVwdGl1c1wiLFxuICBcImNvcnJpZ29cIixcbiAgXCJjb3Jyb2Jvcm9cIixcbiAgXCJjb3JydW1wb1wiLFxuICBcImNvcnVzY3VzXCIsXG4gIFwiY290aWRpZVwiLFxuICBcImNyYXB1bGFcIixcbiAgXCJjcmFzXCIsXG4gIFwiY3Jhc3RpbnVzXCIsXG4gIFwiY3JlYXRvclwiLFxuICBcImNyZWJlclwiLFxuICBcImNyZWJyb1wiLFxuICBcImNyZWRvXCIsXG4gIFwiY3Jlb1wiLFxuICBcImNyZXB0aW9cIixcbiAgXCJjcmVwdXNjdWx1bVwiLFxuICBcImNyZXNjb1wiLFxuICBcImNyZXRhXCIsXG4gIFwiY3JpYnJvXCIsXG4gIFwiY3JpbmlzXCIsXG4gIFwiY3J1Y2lhbWVudHVtXCIsXG4gIFwiY3J1ZGVsaXNcIixcbiAgXCJjcnVlbnR1c1wiLFxuICBcImNydXJcIixcbiAgXCJjcnVzdHVsdW1cIixcbiAgXCJjcnV4XCIsXG4gIFwiY3ViaWN1bGFyaXNcIixcbiAgXCJjdWJpdHVtXCIsXG4gIFwiY3Vib1wiLFxuICBcImN1aVwiLFxuICBcImN1aXVzXCIsXG4gIFwiY3VscGFcIixcbiAgXCJjdWxwb1wiLFxuICBcImN1bHRlbGx1c1wiLFxuICBcImN1bHR1cmFcIixcbiAgXCJjdW1cIixcbiAgXCJjdW5hYnVsYVwiLFxuICBcImN1bmFlXCIsXG4gIFwiY3VuY3RhdGlvXCIsXG4gIFwiY3VwaWRpdGFzXCIsXG4gIFwiY3VwaW9cIixcbiAgXCJjdXBwZWRpYVwiLFxuICBcImN1cHJlc3N1c1wiLFxuICBcImN1clwiLFxuICBcImN1cmFcIixcbiAgXCJjdXJhdGlvXCIsXG4gIFwiY3VyaWFcIixcbiAgXCJjdXJpb3NpdGFzXCIsXG4gIFwiY3VyaXNcIixcbiAgXCJjdXJvXCIsXG4gIFwiY3VycmljdWx1bVwiLFxuICBcImN1cnJ1c1wiLFxuICBcImN1cnNpbVwiLFxuICBcImN1cnNvXCIsXG4gIFwiY3Vyc3VzXCIsXG4gIFwiY3VydG9cIixcbiAgXCJjdXJ0dXNcIixcbiAgXCJjdXJ2b1wiLFxuICBcImN1cnZ1c1wiLFxuICBcImN1c3RvZGlhXCIsXG4gIFwiZGFtbmF0aW9cIixcbiAgXCJkYW1ub1wiLFxuICBcImRhcGlmZXJcIixcbiAgXCJkZWJlb1wiLFxuICBcImRlYmlsaXRvXCIsXG4gIFwiZGVjZW5zXCIsXG4gIFwiZGVjZXJub1wiLFxuICBcImRlY2V0XCIsXG4gIFwiZGVjaW11c1wiLFxuICBcImRlY2lwaW9cIixcbiAgXCJkZWNvclwiLFxuICBcImRlY3JldHVtXCIsXG4gIFwiZGVjdW1ib1wiLFxuICBcImRlZGVjb3JcIixcbiAgXCJkZWRpY29cIixcbiAgXCJkZWR1Y29cIixcbiAgXCJkZWZhZWNvXCIsXG4gIFwiZGVmZW5kb1wiLFxuICBcImRlZmVyb1wiLFxuICBcImRlZmVzc3VzXCIsXG4gIFwiZGVmZXRpc2NvclwiLFxuICBcImRlZmljaW9cIixcbiAgXCJkZWZpZ29cIixcbiAgXCJkZWZsZW9cIixcbiAgXCJkZWZsdW9cIixcbiAgXCJkZWZ1bmdvXCIsXG4gIFwiZGVnZW5lcm9cIixcbiAgXCJkZWdlcm9cIixcbiAgXCJkZWd1c3RvXCIsXG4gIFwiZGVpbmRlXCIsXG4gIFwiZGVsZWN0YXRpb1wiLFxuICBcImRlbGVnb1wiLFxuICBcImRlbGVvXCIsXG4gIFwiZGVsaWJlcm9cIixcbiAgXCJkZWxpY2F0ZVwiLFxuICBcImRlbGlucXVvXCIsXG4gIFwiZGVsdWRvXCIsXG4gIFwiZGVtZW5zXCIsXG4gIFwiZGVtZXJnb1wiLFxuICBcImRlbWl0dG9cIixcbiAgXCJkZW1vXCIsXG4gIFwiZGVtb25zdHJvXCIsXG4gIFwiZGVtb3JvclwiLFxuICBcImRlbXVsY2VvXCIsXG4gIFwiZGVtdW1cIixcbiAgXCJkZW5lZ29cIixcbiAgXCJkZW5pcXVlXCIsXG4gIFwiZGVuc1wiLFxuICBcImRlbnVuY2lvXCIsXG4gIFwiZGVudW9cIixcbiAgXCJkZW9yc3VtXCIsXG4gIFwiZGVwZXJlb1wiLFxuICBcImRlcG9ub1wiLFxuICBcImRlcG9wdWxvXCIsXG4gIFwiZGVwb3J0b1wiLFxuICBcImRlcHJhZWRvclwiLFxuICBcImRlcHJlY2F0b3JcIixcbiAgXCJkZXByaW1vXCIsXG4gIFwiZGVwcm9tb1wiLFxuICBcImRlcHVsc29cIixcbiAgXCJkZXB1dG9cIixcbiAgXCJkZXJlbGlucXVvXCIsXG4gIFwiZGVyaWRlb1wiLFxuICBcImRlcmlwaW9cIixcbiAgXCJkZXNpZGVyb1wiLFxuICBcImRlc2lub1wiLFxuICBcImRlc2lwaW9cIixcbiAgXCJkZXNvbG9cIixcbiAgXCJkZXNwYXJhdHVzXCIsXG4gIFwiZGVzcGVjdG9cIixcbiAgXCJkZXNwaXJtYXRpb1wiLFxuICBcImluZml0XCIsXG4gIFwiaW5mbGFtbWF0aW9cIixcbiAgXCJwYWVuc1wiLFxuICBcInBhdGlvclwiLFxuICBcInBhdHJpYVwiLFxuICBcInBhdHJvY2lub3JcIixcbiAgXCJwYXRydXVzXCIsXG4gIFwicGF1Y2lcIixcbiAgXCJwYXVsYXRpbVwiLFxuICBcInBhdXBlclwiLFxuICBcInBheFwiLFxuICBcInBlY2NhdHVzXCIsXG4gIFwicGVjY29cIixcbiAgXCJwZWN0b1wiLFxuICBcInBlY3R1c1wiLFxuICBcInBlY3VuaWFcIixcbiAgXCJwZWN1c1wiLFxuICBcInBlaW9yXCIsXG4gIFwicGVsXCIsXG4gIFwib2NlclwiLFxuICBcInNvY2l1c1wiLFxuICBcInNvZGFsaXRhc1wiLFxuICBcInNvbFwiLFxuICBcInNvbGVvXCIsXG4gIFwic29saW9cIixcbiAgXCJzb2xpdHVkb1wiLFxuICBcInNvbGl1bVwiLFxuICBcInNvbGxlcnNcIixcbiAgXCJzb2xsaWNpdG9cIixcbiAgXCJzb2x1bVwiLFxuICBcInNvbHVzXCIsXG4gIFwic29sdXRpb1wiLFxuICBcInNvbHZvXCIsXG4gIFwic29tbmljdWxvc3VzXCIsXG4gIFwic29tbnVzXCIsXG4gIFwic29uaXR1c1wiLFxuICBcInNvbm9cIixcbiAgXCJzb3BoaXNtYXRhXCIsXG4gIFwic29wb3JcIixcbiAgXCJzb3JkZW9cIixcbiAgXCJzb3J0aXR1c1wiLFxuICBcInNwYXJnb1wiLFxuICBcInNwZWNpb3N1c1wiLFxuICBcInNwZWN0YWN1bHVtXCIsXG4gIFwic3BlY3VsdW1cIixcbiAgXCJzcGVybm9cIixcbiAgXCJzcGVyb1wiLFxuICBcInNwZXNcIixcbiAgXCJzcGljdWx1bVwiLFxuICBcInNwaXJpdHVzXCIsXG4gIFwic3BvbGlhdGlvXCIsXG4gIFwic3BvbnRlXCIsXG4gIFwic3RhYmlsaXNcIixcbiAgXCJzdGF0aW1cIixcbiAgXCJzdGF0dWFcIixcbiAgXCJzdGVsbGFcIixcbiAgXCJzdGlsbGljaWRpdW1cIixcbiAgXCJzdGlwZXNcIixcbiAgXCJzdGlwc1wiLFxuICBcInN0b1wiLFxuICBcInN0cmVudXVzXCIsXG4gIFwic3RydWVzXCIsXG4gIFwic3R1ZGlvXCIsXG4gIFwic3R1bHR1c1wiLFxuICBcInN1YWRlb1wiLFxuICBcInN1YXNvcmlhXCIsXG4gIFwic3ViXCIsXG4gIFwic3ViaXRvXCIsXG4gIFwic3ViaXVuZ29cIixcbiAgXCJzdWJsaW1lXCIsXG4gIFwic3VibmVjdG9cIixcbiAgXCJzdWJzZWNvXCIsXG4gIFwic3Vic3RhbnRpYVwiLFxuICBcInN1YnZlbmlvXCIsXG4gIFwic3VjY2Vkb1wiLFxuICBcInN1Y2N1cnJvXCIsXG4gIFwic3VmZmljaW9cIixcbiAgXCJzdWZmb2NvXCIsXG4gIFwic3VmZnJhZ2l1bVwiLFxuICBcInN1Z2dlcm9cIixcbiAgXCJzdWlcIixcbiAgXCJzdWx1bVwiLFxuICBcInN1bVwiLFxuICBcInN1bW1hXCIsXG4gIFwic3VtbWlzc2VcIixcbiAgXCJzdW1tb3BlcmVcIixcbiAgXCJzdW1vXCIsXG4gIFwic3VtcHR1c1wiLFxuICBcInN1cGVsbGV4XCIsXG4gIFwic3VwZXJcIixcbiAgXCJzdXBwZWxsZXhcIixcbiAgXCJzdXBwbGFudG9cIixcbiAgXCJzdXBwb25vXCIsXG4gIFwic3VwcmFcIixcbiAgXCJzdXJjdWx1c1wiLFxuICBcInN1cmdvXCIsXG4gIFwic3Vyc3VtXCIsXG4gIFwic3VzY2lwaW9cIixcbiAgXCJzdXNwZW5kb1wiLFxuICBcInN1c3RpbmVvXCIsXG4gIFwic3V1c1wiLFxuICBcInN5bmFnb2dhXCIsXG4gIFwidGFiZWxsYVwiLFxuICBcInRhYmVybnVzXCIsXG4gIFwidGFiZXNjb1wiLFxuICBcInRhYmdvXCIsXG4gIFwidGFidWxhXCIsXG4gIFwidGFjZW9cIixcbiAgXCJ0YWN0dXNcIixcbiAgXCJ0YWVkaXVtXCIsXG4gIFwidGFsaW9cIixcbiAgXCJ0YWxpc1wiLFxuICBcInRhbHVzXCIsXG4gIFwidGFtXCIsXG4gIFwidGFtZGl1XCIsXG4gIFwidGFtZW5cIixcbiAgXCJ0YW1ldHNpXCIsXG4gIFwidGFtaXNpdW1cIixcbiAgXCJ0YW1xdWFtXCIsXG4gIFwidGFuZGVtXCIsXG4gIFwidGFudGlsbHVzXCIsXG4gIFwidGFudHVtXCIsXG4gIFwidGFyZHVzXCIsXG4gIFwidGVnb1wiLFxuICBcInRlbWVyaXRhc1wiLFxuICBcInRlbXBlcmFudGlhXCIsXG4gIFwidGVtcGx1bVwiLFxuICBcInRlbXB0YXRpb1wiLFxuICBcInRlbXB1c1wiLFxuICBcInRlbmF4XCIsXG4gIFwidGVuZG9cIixcbiAgXCJ0ZW5lb1wiLFxuICBcInRlbmVyXCIsXG4gIFwidGVudWlzXCIsXG4gIFwidGVudXNcIixcbiAgXCJ0ZXBlc2NvXCIsXG4gIFwidGVwaWR1c1wiLFxuICBcInRlclwiLFxuICBcInRlcmVicm9cIixcbiAgXCJ0ZXJlc1wiLFxuICBcInRlcmdhXCIsXG4gIFwidGVyZ2VvXCIsXG4gIFwidGVyZ2l2ZXJzYXRpb1wiLFxuICBcInRlcmdvXCIsXG4gIFwidGVyZ3VtXCIsXG4gIFwidGVybWVzXCIsXG4gIFwidGVybWluYXRpb1wiLFxuICBcInRlcm9cIixcbiAgXCJ0ZXJyYVwiLFxuICBcInRlcnJlb1wiLFxuICBcInRlcnJpdG9cIixcbiAgXCJ0ZXJyb3JcIixcbiAgXCJ0ZXJzdXNcIixcbiAgXCJ0ZXJ0aXVzXCIsXG4gIFwidGVzdGltb25pdW1cIixcbiAgXCJ0ZXhvXCIsXG4gIFwidGV4dGlsaXNcIixcbiAgXCJ0ZXh0b3JcIixcbiAgXCJ0ZXh0dXNcIixcbiAgXCJ0aGFsYXNzaW51c1wiLFxuICBcInRoZWF0cnVtXCIsXG4gIFwidGhlY2FcIixcbiAgXCJ0aGVtYVwiLFxuICBcInRoZW9sb2d1c1wiLFxuICBcInRoZXJtYWVcIixcbiAgXCJ0aGVzYXVydXNcIixcbiAgXCJ0aGVzaXNcIixcbiAgXCJ0aG9yYXhcIixcbiAgXCJ0aHltYnJhXCIsXG4gIFwidGh5bXVtXCIsXG4gIFwidGliaVwiLFxuICBcInRpbWlkdXNcIixcbiAgXCJ0aW1vclwiLFxuICBcInRpdHVsdXNcIixcbiAgXCJ0b2xlcm9cIixcbiAgXCJ0b2xsb1wiLFxuICBcInRvbmRlb1wiLFxuICBcInRvbnNvclwiLFxuICBcInRvcnF1ZW9cIixcbiAgXCJ0b3JyZW5zXCIsXG4gIFwidG90XCIsXG4gIFwidG90aWRlbVwiLFxuICBcInRvdGllc1wiLFxuICBcInRvdHVzXCIsXG4gIFwidHJhY3RvXCIsXG4gIFwidHJhZG9cIixcbiAgXCJ0cmFob1wiLFxuICBcInRyYW5zXCIsXG4gIFwidHJlZGVjaW1cIixcbiAgXCJ0cmVtb1wiLFxuICBcInRyZXBpZGVcIixcbiAgXCJ0cmVzXCIsXG4gIFwidHJpYnVvXCIsXG4gIFwidHJpY2VzaW11c1wiLFxuICBcInRyaWR1YW5hXCIsXG4gIFwidHJpZ2ludGFcIixcbiAgXCJ0cmlwdWRpb1wiLFxuICBcInRyaXN0aXNcIixcbiAgXCJ0cml1bXBodXNcIixcbiAgXCJ0cnVjaWRvXCIsXG4gIFwidHJ1Y3VsZW50ZXJcIixcbiAgXCJ0dWJpbmV1c1wiLFxuICBcInR1aVwiLFxuICBcInR1bVwiLFxuICBcInR1bXVsdHVzXCIsXG4gIFwidHVuY1wiLFxuICBcInR1cmJhXCIsXG4gIFwidHVyYm9cIixcbiAgXCJ0dXJwZVwiLFxuICBcInR1cnBpc1wiLFxuICBcInR1dGFtZW5cIixcbiAgXCJ0dXRpc1wiLFxuICBcInR5cmFubnVzXCIsXG4gIFwidWJlcnJpbWVcIixcbiAgXCJ1YmlcIixcbiAgXCJ1bGNpc2NvclwiLFxuICBcInVsbHVzXCIsXG4gIFwidWx0ZXJpdXNcIixcbiAgXCJ1bHRpb1wiLFxuICBcInVsdHJhXCIsXG4gIFwidW1icmFcIixcbiAgXCJ1bWVydXNcIixcbiAgXCJ1bXF1YW1cIixcbiAgXCJ1bmFcIixcbiAgXCJ1bmRlXCIsXG4gIFwidW5kaXF1ZVwiLFxuICBcInVuaXZlcnNlXCIsXG4gIFwidW51c1wiLFxuICBcInVyYmFudXNcIixcbiAgXCJ1cmJzXCIsXG4gIFwidXJlZG9cIixcbiAgXCJ1c2l0YXNcIixcbiAgXCJ1c3F1ZVwiLFxuICBcInVzdGlsb1wiLFxuICBcInVzdHVsb1wiLFxuICBcInVzdXNcIixcbiAgXCJ1dGVyXCIsXG4gIFwidXRlcnF1ZVwiLFxuICBcInV0aWxpc1wiLFxuICBcInV0aXF1ZVwiLFxuICBcInV0b3JcIixcbiAgXCJ1dHBvdGVcIixcbiAgXCJ1dHJpbXF1ZVwiLFxuICBcInV0cm9xdWVcIixcbiAgXCJ1dHJ1bVwiLFxuICBcInV4b3JcIixcbiAgXCJ2YWNvXCIsXG4gIFwidmFjdXVzXCIsXG4gIFwidmFkb1wiLFxuICBcInZhZVwiLFxuICBcInZhbGRlXCIsXG4gIFwidmFsZW5zXCIsXG4gIFwidmFsZW9cIixcbiAgXCJ2YWxldHVkb1wiLFxuICBcInZhbGlkdXNcIixcbiAgXCJ2YWxsdW1cIixcbiAgXCJ2YXB1bHVzXCIsXG4gIFwidmFyaWV0YXNcIixcbiAgXCJ2YXJpdXNcIixcbiAgXCJ2ZWhlbWVuc1wiLFxuICBcInZlbFwiLFxuICBcInZlbG9jaXRlclwiLFxuICBcInZlbHVtXCIsXG4gIFwidmVsdXRcIixcbiAgXCJ2ZW5pYVwiLFxuICBcInZlbmlvXCIsXG4gIFwidmVudGl0b1wiLFxuICBcInZlbnRvc3VzXCIsXG4gIFwidmVudHVzXCIsXG4gIFwidmVudXN0YXNcIixcbiAgXCJ2ZXJcIixcbiAgXCJ2ZXJiZXJhXCIsXG4gIFwidmVyYnVtXCIsXG4gIFwidmVyZVwiLFxuICBcInZlcmVjdW5kaWFcIixcbiAgXCJ2ZXJlb3JcIixcbiAgXCJ2ZXJnb1wiLFxuICBcInZlcml0YXNcIixcbiAgXCJ2ZXJvXCIsXG4gIFwidmVyc3VzXCIsXG4gIFwidmVydG9cIixcbiAgXCJ2ZXJ1bXRhbWVuXCIsXG4gIFwidmVydXNcIixcbiAgXCJ2ZXNjb1wiLFxuICBcInZlc2ljYVwiLFxuICBcInZlc3BlclwiLFxuICBcInZlc3BpbGxvXCIsXG4gIFwidmVzdGVyXCIsXG4gIFwidmVzdGlnaXVtXCIsXG4gIFwidmVzdHJ1bVwiLFxuICBcInZldHVzXCIsXG4gIFwidmlhXCIsXG4gIFwidmljaW51c1wiLFxuICBcInZpY2lzc2l0dWRvXCIsXG4gIFwidmljdG9yaWFcIixcbiAgXCJ2aWN0dXNcIixcbiAgXCJ2aWRlbGljZXRcIixcbiAgXCJ2aWRlb1wiLFxuICBcInZpZHVhdGFcIixcbiAgXCJ2aWR1b1wiLFxuICBcInZpZ2lsb1wiLFxuICBcInZpZ29yXCIsXG4gIFwidmlsaWN1c1wiLFxuICBcInZpbGlzXCIsXG4gIFwidmlsaXRhc1wiLFxuICBcInZpbGxhXCIsXG4gIFwidmluY29cIixcbiAgXCJ2aW5jdWx1bVwiLFxuICBcInZpbmRpY29cIixcbiAgXCJ2aW5pdG9yXCIsXG4gIFwidmludW1cIixcbiAgXCJ2aXJcIixcbiAgXCJ2aXJnYVwiLFxuICBcInZpcmdvXCIsXG4gIFwidmlyaWRpc1wiLFxuICBcInZpcmlsaXRlclwiLFxuICBcInZpcnR1c1wiLFxuICBcInZpc1wiLFxuICBcInZpc2N1c1wiLFxuICBcInZpdGFcIixcbiAgXCJ2aXRpb3N1c1wiLFxuICBcInZpdGl1bVwiLFxuICBcInZpdG9cIixcbiAgXCJ2aXZvXCIsXG4gIFwidml4XCIsXG4gIFwidm9iaXNcIixcbiAgXCJ2b2NpZmVyb3JcIixcbiAgXCJ2b2NvXCIsXG4gIFwidm9sYXRpY3VzXCIsXG4gIFwidm9sb1wiLFxuICBcInZvbHViaWxpc1wiLFxuICBcInZvbHVudGFyaXVzXCIsXG4gIFwidm9sdXBcIixcbiAgXCJ2b2x1dGFicnVtXCIsXG4gIFwidm9sdmFcIixcbiAgXCJ2b21lclwiLFxuICBcInZvbWljYVwiLFxuICBcInZvbWl0b1wiLFxuICBcInZvcmFnb1wiLFxuICBcInZvcmF4XCIsXG4gIFwidm9yb1wiLFxuICBcInZvc1wiLFxuICBcInZvdHVtXCIsXG4gIFwidm92ZW9cIixcbiAgXCJ2b3hcIixcbiAgXCJ2dWxhcml0ZXJcIixcbiAgXCJ2dWxnYXJpc1wiLFxuICBcInZ1bGdpdmFndXNcIixcbiAgXCJ2dWxnb1wiLFxuICBcInZ1bGd1c1wiLFxuICBcInZ1bG5lcm9cIixcbiAgXCJ2dWxudXNcIixcbiAgXCJ2dWxwZXNcIixcbiAgXCJ2dWx0aWN1bHVzXCIsXG4gIFwidnVsdHVvc3VzXCIsXG4gIFwieGlwaGlhc1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhbGlhc1wiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwiYXV0XCIsXG4gIFwicGVyZmVyZW5kaXNcIixcbiAgXCJzaXRcIixcbiAgXCJ2b2x1cHRhdGVtXCIsXG4gIFwiYWNjdXNhbnRpdW1cIixcbiAgXCJkb2xvcmVtcXVlXCIsXG4gIFwiYXBlcmlhbVwiLFxuICBcImVhcXVlXCIsXG4gIFwiaXBzYVwiLFxuICBcInF1YWVcIixcbiAgXCJhYlwiLFxuICBcImlsbG9cIixcbiAgXCJpbnZlbnRvcmVcIixcbiAgXCJ2ZXJpdGF0aXNcIixcbiAgXCJldFwiLFxuICBcInF1YXNpXCIsXG4gIFwiYXJjaGl0ZWN0b1wiLFxuICBcImJlYXRhZVwiLFxuICBcInZpdGFlXCIsXG4gIFwiZGljdGFcIixcbiAgXCJzdW50XCIsXG4gIFwiZXhwbGljYWJvXCIsXG4gIFwiYXNwZXJuYXR1clwiLFxuICBcImF1dFwiLFxuICBcIm9kaXRcIixcbiAgXCJhdXRcIixcbiAgXCJmdWdpdFwiLFxuICBcInNlZFwiLFxuICBcInF1aWFcIixcbiAgXCJjb25zZXF1dW50dXJcIixcbiAgXCJtYWduaVwiLFxuICBcImRvbG9yZXNcIixcbiAgXCJlb3NcIixcbiAgXCJxdWlcIixcbiAgXCJyYXRpb25lXCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInNlcXVpXCIsXG4gIFwibmVzY2l1bnRcIixcbiAgXCJuZXF1ZVwiLFxuICBcImRvbG9yZW1cIixcbiAgXCJpcHN1bVwiLFxuICBcInF1aWFcIixcbiAgXCJkb2xvclwiLFxuICBcInNpdFwiLFxuICBcImFtZXRcIixcbiAgXCJjb25zZWN0ZXR1clwiLFxuICBcImFkaXBpc2NpXCIsXG4gIFwidmVsaXRcIixcbiAgXCJzZWRcIixcbiAgXCJxdWlhXCIsXG4gIFwibm9uXCIsXG4gIFwibnVtcXVhbVwiLFxuICBcImVpdXNcIixcbiAgXCJtb2RpXCIsXG4gIFwidGVtcG9yYVwiLFxuICBcImluY2lkdW50XCIsXG4gIFwidXRcIixcbiAgXCJsYWJvcmVcIixcbiAgXCJldFwiLFxuICBcImRvbG9yZVwiLFxuICBcIm1hZ25hbVwiLFxuICBcImFsaXF1YW1cIixcbiAgXCJxdWFlcmF0XCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInV0XCIsXG4gIFwiZW5pbVwiLFxuICBcImFkXCIsXG4gIFwibWluaW1hXCIsXG4gIFwidmVuaWFtXCIsXG4gIFwicXVpc1wiLFxuICBcIm5vc3RydW1cIixcbiAgXCJleGVyY2l0YXRpb25lbVwiLFxuICBcInVsbGFtXCIsXG4gIFwiY29ycG9yaXNcIixcbiAgXCJuZW1vXCIsXG4gIFwiZW5pbVwiLFxuICBcImlwc2FtXCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInF1aWFcIixcbiAgXCJ2b2x1cHRhc1wiLFxuICBcInNpdFwiLFxuICBcInN1c2NpcGl0XCIsXG4gIFwibGFib3Jpb3NhbVwiLFxuICBcIm5pc2lcIixcbiAgXCJ1dFwiLFxuICBcImFsaXF1aWRcIixcbiAgXCJleFwiLFxuICBcImVhXCIsXG4gIFwiY29tbW9kaVwiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwicXVpc1wiLFxuICBcImF1dGVtXCIsXG4gIFwidmVsXCIsXG4gIFwiZXVtXCIsXG4gIFwiaXVyZVwiLFxuICBcInJlcHJlaGVuZGVyaXRcIixcbiAgXCJxdWlcIixcbiAgXCJpblwiLFxuICBcImVhXCIsXG4gIFwidm9sdXB0YXRlXCIsXG4gIFwidmVsaXRcIixcbiAgXCJlc3NlXCIsXG4gIFwicXVhbVwiLFxuICBcIm5paGlsXCIsXG4gIFwibW9sZXN0aWFlXCIsXG4gIFwiZXRcIixcbiAgXCJpdXN0b1wiLFxuICBcIm9kaW9cIixcbiAgXCJkaWduaXNzaW1vc1wiLFxuICBcImR1Y2ltdXNcIixcbiAgXCJxdWlcIixcbiAgXCJibGFuZGl0aWlzXCIsXG4gIFwicHJhZXNlbnRpdW1cIixcbiAgXCJsYXVkYW50aXVtXCIsXG4gIFwidG90YW1cIixcbiAgXCJyZW1cIixcbiAgXCJ2b2x1cHRhdHVtXCIsXG4gIFwiZGVsZW5pdGlcIixcbiAgXCJhdHF1ZVwiLFxuICBcImNvcnJ1cHRpXCIsXG4gIFwicXVvc1wiLFxuICBcImRvbG9yZXNcIixcbiAgXCJldFwiLFxuICBcInF1YXNcIixcbiAgXCJtb2xlc3RpYXNcIixcbiAgXCJleGNlcHR1cmlcIixcbiAgXCJzaW50XCIsXG4gIFwib2NjYWVjYXRpXCIsXG4gIFwiY3VwaWRpdGF0ZVwiLFxuICBcIm5vblwiLFxuICBcInByb3ZpZGVudFwiLFxuICBcInNlZFwiLFxuICBcInV0XCIsXG4gIFwicGVyc3BpY2lhdGlzXCIsXG4gIFwidW5kZVwiLFxuICBcIm9tbmlzXCIsXG4gIFwiaXN0ZVwiLFxuICBcIm5hdHVzXCIsXG4gIFwiZXJyb3JcIixcbiAgXCJzaW1pbGlxdWVcIixcbiAgXCJzdW50XCIsXG4gIFwiaW5cIixcbiAgXCJjdWxwYVwiLFxuICBcInF1aVwiLFxuICBcIm9mZmljaWFcIixcbiAgXCJkZXNlcnVudFwiLFxuICBcIm1vbGxpdGlhXCIsXG4gIFwiYW5pbWlcIixcbiAgXCJpZFwiLFxuICBcImVzdFwiLFxuICBcImxhYm9ydW1cIixcbiAgXCJldFwiLFxuICBcImRvbG9ydW1cIixcbiAgXCJmdWdhXCIsXG4gIFwiZXRcIixcbiAgXCJoYXJ1bVwiLFxuICBcInF1aWRlbVwiLFxuICBcInJlcnVtXCIsXG4gIFwiZmFjaWxpc1wiLFxuICBcImVzdFwiLFxuICBcImV0XCIsXG4gIFwiZXhwZWRpdGFcIixcbiAgXCJkaXN0aW5jdGlvXCIsXG4gIFwibmFtXCIsXG4gIFwibGliZXJvXCIsXG4gIFwidGVtcG9yZVwiLFxuICBcImN1bVwiLFxuICBcInNvbHV0YVwiLFxuICBcIm5vYmlzXCIsXG4gIFwiZXN0XCIsXG4gIFwiZWxpZ2VuZGlcIixcbiAgXCJvcHRpb1wiLFxuICBcImN1bXF1ZVwiLFxuICBcIm5paGlsXCIsXG4gIFwiaW1wZWRpdFwiLFxuICBcInF1b1wiLFxuICBcInBvcnJvXCIsXG4gIFwicXVpc3F1YW1cIixcbiAgXCJlc3RcIixcbiAgXCJxdWlcIixcbiAgXCJtaW51c1wiLFxuICBcImlkXCIsXG4gIFwicXVvZFwiLFxuICBcIm1heGltZVwiLFxuICBcInBsYWNlYXRcIixcbiAgXCJmYWNlcmVcIixcbiAgXCJwb3NzaW11c1wiLFxuICBcIm9tbmlzXCIsXG4gIFwidm9sdXB0YXNcIixcbiAgXCJhc3N1bWVuZGFcIixcbiAgXCJlc3RcIixcbiAgXCJvbW5pc1wiLFxuICBcImRvbG9yXCIsXG4gIFwicmVwZWxsZW5kdXNcIixcbiAgXCJ0ZW1wb3JpYnVzXCIsXG4gIFwiYXV0ZW1cIixcbiAgXCJxdWlidXNkYW1cIixcbiAgXCJldFwiLFxuICBcImF1dFwiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwidmVsXCIsXG4gIFwiaWxsdW1cIixcbiAgXCJxdWlcIixcbiAgXCJkb2xvcmVtXCIsXG4gIFwiZXVtXCIsXG4gIFwiZnVnaWF0XCIsXG4gIFwicXVvXCIsXG4gIFwidm9sdXB0YXNcIixcbiAgXCJudWxsYVwiLFxuICBcInBhcmlhdHVyXCIsXG4gIFwiYXRcIixcbiAgXCJ2ZXJvXCIsXG4gIFwiZW9zXCIsXG4gIFwiZXRcIixcbiAgXCJhY2N1c2FtdXNcIixcbiAgXCJvZmZpY2lpc1wiLFxuICBcImRlYml0aXNcIixcbiAgXCJhdXRcIixcbiAgXCJyZXJ1bVwiLFxuICBcIm5lY2Vzc2l0YXRpYnVzXCIsXG4gIFwic2FlcGVcIixcbiAgXCJldmVuaWV0XCIsXG4gIFwidXRcIixcbiAgXCJldFwiLFxuICBcInZvbHVwdGF0ZXNcIixcbiAgXCJyZXB1ZGlhbmRhZVwiLFxuICBcInNpbnRcIixcbiAgXCJldFwiLFxuICBcIm1vbGVzdGlhZVwiLFxuICBcIm5vblwiLFxuICBcInJlY3VzYW5kYWVcIixcbiAgXCJpdGFxdWVcIixcbiAgXCJlYXJ1bVwiLFxuICBcInJlcnVtXCIsXG4gIFwiaGljXCIsXG4gIFwidGVuZXR1clwiLFxuICBcImFcIixcbiAgXCJzYXBpZW50ZVwiLFxuICBcImRlbGVjdHVzXCIsXG4gIFwidXRcIixcbiAgXCJhdXRcIixcbiAgXCJyZWljaWVuZGlzXCIsXG4gIFwidm9sdXB0YXRpYnVzXCIsXG4gIFwibWFpb3Jlc1wiLFxuICBcImRvbG9yaWJ1c1wiLFxuICBcImFzcGVyaW9yZXNcIixcbiAgXCJyZXBlbGxhdFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBYWxpeWFoXCIsXG4gIFwiQWFyb25cIixcbiAgXCJBYmFnYWlsXCIsXG4gIFwiQWJiZXlcIixcbiAgXCJBYmJpZVwiLFxuICBcIkFiYmlnYWlsXCIsXG4gIFwiQWJieVwiLFxuICBcIkFiZGllbFwiLFxuICBcIkFiZHVsXCIsXG4gIFwiQWJkdWxsYWhcIixcbiAgXCJBYmVcIixcbiAgXCJBYmVsXCIsXG4gIFwiQWJlbGFyZG9cIixcbiAgXCJBYmlnYWlsXCIsXG4gIFwiQWJpZ2FsZVwiLFxuICBcIkFiaWdheWxlXCIsXG4gIFwiQWJuZXJcIixcbiAgXCJBYnJhaGFtXCIsXG4gIFwiQWRhXCIsXG4gIFwiQWRhaFwiLFxuICBcIkFkYWxiZXJ0b1wiLFxuICBcIkFkYWxpbmVcIixcbiAgXCJBZGFtXCIsXG4gIFwiQWRhblwiLFxuICBcIkFkZGllXCIsXG4gIFwiQWRkaXNvblwiLFxuICBcIkFkZWxhXCIsXG4gIFwiQWRlbGJlcnRcIixcbiAgXCJBZGVsZVwiLFxuICBcIkFkZWxpYVwiLFxuICBcIkFkZWxpbmVcIixcbiAgXCJBZGVsbFwiLFxuICBcIkFkZWxsYVwiLFxuICBcIkFkZWxsZVwiLFxuICBcIkFkaXR5YVwiLFxuICBcIkFkb2xmXCIsXG4gIFwiQWRvbGZvXCIsXG4gIFwiQWRvbHBoXCIsXG4gIFwiQWRvbHBodXNcIixcbiAgXCJBZG9uaXNcIixcbiAgXCJBZHJhaW5cIixcbiAgXCJBZHJpYW5cIixcbiAgXCJBZHJpYW5hXCIsXG4gIFwiQWRyaWFubmFcIixcbiAgXCJBZHJpZWxcIixcbiAgXCJBZHJpZW5cIixcbiAgXCJBZHJpZW5uZVwiLFxuICBcIkFmdG9uXCIsXG4gIFwiQWdsYWVcIixcbiAgXCJBZ25lc1wiLFxuICBcIkFndXN0aW5cIixcbiAgXCJBZ3VzdGluYVwiLFxuICBcIkFobWFkXCIsXG4gIFwiQWhtZWRcIixcbiAgXCJBaWRhXCIsXG4gIFwiQWlkYW5cIixcbiAgXCJBaWRlblwiLFxuICBcIkFpbGVlblwiLFxuICBcIkFpbWVlXCIsXG4gIFwiQWlzaGFcIixcbiAgXCJBaXlhbmFcIixcbiAgXCJBa2VlbVwiLFxuICBcIkFsXCIsXG4gIFwiQWxhaW5hXCIsXG4gIFwiQWxhblwiLFxuICBcIkFsYW5hXCIsXG4gIFwiQWxhbmlzXCIsXG4gIFwiQWxhbm5hXCIsXG4gIFwiQWxheW5hXCIsXG4gIFwiQWxiYVwiLFxuICBcIkFsYmVydFwiLFxuICBcIkFsYmVydGFcIixcbiAgXCJBbGJlcnRoYVwiLFxuICBcIkFsYmVydG9cIixcbiAgXCJBbGJpblwiLFxuICBcIkFsYmluYVwiLFxuICBcIkFsZGFcIixcbiAgXCJBbGRlblwiLFxuICBcIkFsZWNcIixcbiAgXCJBbGVlblwiLFxuICBcIkFsZWphbmRyYVwiLFxuICBcIkFsZWphbmRyaW5cIixcbiAgXCJBbGVrXCIsXG4gIFwiQWxlbmFcIixcbiAgXCJBbGVuZVwiLFxuICBcIkFsZXNzYW5kcmFcIixcbiAgXCJBbGVzc2FuZHJvXCIsXG4gIFwiQWxlc3NpYVwiLFxuICBcIkFsZXRoYVwiLFxuICBcIkFsZXhcIixcbiAgXCJBbGV4YVwiLFxuICBcIkFsZXhhbmRlclwiLFxuICBcIkFsZXhhbmRyYVwiLFxuICBcIkFsZXhhbmRyZVwiLFxuICBcIkFsZXhhbmRyZWFcIixcbiAgXCJBbGV4YW5kcmlhXCIsXG4gIFwiQWxleGFuZHJpbmVcIixcbiAgXCJBbGV4YW5kcm9cIixcbiAgXCJBbGV4YW5lXCIsXG4gIFwiQWxleGFubmVcIixcbiAgXCJBbGV4aWVcIixcbiAgXCJBbGV4aXNcIixcbiAgXCJBbGV4eXNcIixcbiAgXCJBbGV4emFuZGVyXCIsXG4gIFwiQWxmXCIsXG4gIFwiQWxmb25zb1wiLFxuICBcIkFsZm9uem9cIixcbiAgXCJBbGZvcmRcIixcbiAgXCJBbGZyZWRcIixcbiAgXCJBbGZyZWRhXCIsXG4gIFwiQWxmcmVkb1wiLFxuICBcIkFsaVwiLFxuICBcIkFsaWFcIixcbiAgXCJBbGljZVwiLFxuICBcIkFsaWNpYVwiLFxuICBcIkFsaXNhXCIsXG4gIFwiQWxpc2hhXCIsXG4gIFwiQWxpc29uXCIsXG4gIFwiQWxpdmlhXCIsXG4gIFwiQWxpeWFcIixcbiAgXCJBbGl5YWhcIixcbiAgXCJBbGl6YVwiLFxuICBcIkFsaXplXCIsXG4gIFwiQWxsYW5cIixcbiAgXCJBbGxlblwiLFxuICBcIkFsbGVuZVwiLFxuICBcIkFsbGllXCIsXG4gIFwiQWxsaXNvblwiLFxuICBcIkFsbHlcIixcbiAgXCJBbHBob25zb1wiLFxuICBcIkFsdGFcIixcbiAgXCJBbHRoZWFcIixcbiAgXCJBbHZhXCIsXG4gIFwiQWx2YWhcIixcbiAgXCJBbHZlbmFcIixcbiAgXCJBbHZlcmFcIixcbiAgXCJBbHZlcnRhXCIsXG4gIFwiQWx2aW5hXCIsXG4gIFwiQWx2aXNcIixcbiAgXCJBbHljZVwiLFxuICBcIkFseWNpYVwiLFxuICBcIkFseXNhXCIsXG4gIFwiQWx5c2hhXCIsXG4gIFwiQWx5c29uXCIsXG4gIFwiQWx5c3NvblwiLFxuICBcIkFtYWxpYVwiLFxuICBcIkFtYW5kYVwiLFxuICBcIkFtYW5pXCIsXG4gIFwiQW1hcmFcIixcbiAgXCJBbWFyaVwiLFxuICBcIkFtYXlhXCIsXG4gIFwiQW1iZXJcIixcbiAgXCJBbWJyb3NlXCIsXG4gIFwiQW1lbGlhXCIsXG4gIFwiQW1lbGllXCIsXG4gIFwiQW1lbHlcIixcbiAgXCJBbWVyaWNhXCIsXG4gIFwiQW1lcmljb1wiLFxuICBcIkFtaWVcIixcbiAgXCJBbWluYVwiLFxuICBcIkFtaXJcIixcbiAgXCJBbWlyYVwiLFxuICBcIkFtaXlhXCIsXG4gIFwiQW1vc1wiLFxuICBcIkFtcGFyb1wiLFxuICBcIkFteVwiLFxuICBcIkFteWFcIixcbiAgXCJBbmFcIixcbiAgXCJBbmFiZWxcIixcbiAgXCJBbmFiZWxsZVwiLFxuICBcIkFuYWhpXCIsXG4gIFwiQW5haXNcIixcbiAgXCJBbmFzdGFjaW9cIixcbiAgXCJBbmFzdGFzaWFcIixcbiAgXCJBbmRlcnNvblwiLFxuICBcIkFuZHJlXCIsXG4gIFwiQW5kcmVhbmVcIixcbiAgXCJBbmRyZWFubmVcIixcbiAgXCJBbmRyZXNcIixcbiAgXCJBbmRyZXdcIixcbiAgXCJBbmR5XCIsXG4gIFwiQW5nZWxcIixcbiAgXCJBbmdlbGFcIixcbiAgXCJBbmdlbGljYVwiLFxuICBcIkFuZ2VsaW5hXCIsXG4gIFwiQW5nZWxpbmVcIixcbiAgXCJBbmdlbGl0YVwiLFxuICBcIkFuZ2Vsb1wiLFxuICBcIkFuZ2llXCIsXG4gIFwiQW5ndXNcIixcbiAgXCJBbmliYWxcIixcbiAgXCJBbmlrYVwiLFxuICBcIkFuaXNzYVwiLFxuICBcIkFuaXRhXCIsXG4gIFwiQW5peWFcIixcbiAgXCJBbml5YWhcIixcbiAgXCJBbmphbGlcIixcbiAgXCJBbm5hXCIsXG4gIFwiQW5uYWJlbFwiLFxuICBcIkFubmFiZWxsXCIsXG4gIFwiQW5uYWJlbGxlXCIsXG4gIFwiQW5uYWxpc2VcIixcbiAgXCJBbm5hbWFlXCIsXG4gIFwiQW5uYW1hcmllXCIsXG4gIFwiQW5uZVwiLFxuICBcIkFubmV0dGFcIixcbiAgXCJBbm5ldHRlXCIsXG4gIFwiQW5uaWVcIixcbiAgXCJBbnNlbFwiLFxuICBcIkFuc2xleVwiLFxuICBcIkFudGhvbnlcIixcbiAgXCJBbnRvaW5ldHRlXCIsXG4gIFwiQW50b25lXCIsXG4gIFwiQW50b25ldHRhXCIsXG4gIFwiQW50b25ldHRlXCIsXG4gIFwiQW50b25pYVwiLFxuICBcIkFudG9uaWV0dGFcIixcbiAgXCJBbnRvbmluYVwiLFxuICBcIkFudG9uaW9cIixcbiAgXCJBbnR3YW5cIixcbiAgXCJBbnR3b25cIixcbiAgXCJBbnlhXCIsXG4gIFwiQXByaWxcIixcbiAgXCJBcmFcIixcbiAgXCJBcmFjZWxpXCIsXG4gIFwiQXJhY2VseVwiLFxuICBcIkFyY2hcIixcbiAgXCJBcmNoaWJhbGRcIixcbiAgXCJBcmRlbGxhXCIsXG4gIFwiQXJkZW5cIixcbiAgXCJBcmRpdGhcIixcbiAgXCJBcmVseVwiLFxuICBcIkFyaVwiLFxuICBcIkFyaWFuZVwiLFxuICBcIkFyaWFubmFcIixcbiAgXCJBcmljXCIsXG4gIFwiQXJpZWxcIixcbiAgXCJBcmllbGxlXCIsXG4gIFwiQXJqdW5cIixcbiAgXCJBcmxlbmVcIixcbiAgXCJBcmxpZVwiLFxuICBcIkFybG9cIixcbiAgXCJBcm1hbmRcIixcbiAgXCJBcm1hbmRvXCIsXG4gIFwiQXJtYW5pXCIsXG4gIFwiQXJuYWxkb1wiLFxuICBcIkFybmVcIixcbiAgXCJBcm5vXCIsXG4gIFwiQXJub2xkXCIsXG4gIFwiQXJub2xkb1wiLFxuICBcIkFybnVsZm9cIixcbiAgXCJBcm9uXCIsXG4gIFwiQXJ0XCIsXG4gIFwiQXJ0aHVyXCIsXG4gIFwiQXJ0dXJvXCIsXG4gIFwiQXJ2ZWxcIixcbiAgXCJBcnZpZFwiLFxuICBcIkFydmlsbGFcIixcbiAgXCJBcnlhbm5hXCIsXG4gIFwiQXNhXCIsXG4gIFwiQXNoYVwiLFxuICBcIkFzaGxlZVwiLFxuICBcIkFzaGxlaWdoXCIsXG4gIFwiQXNobGV5XCIsXG4gIFwiQXNobHlcIixcbiAgXCJBc2hseW5uXCIsXG4gIFwiQXNodG9uXCIsXG4gIFwiQXNodHluXCIsXG4gIFwiQXNpYVwiLFxuICBcIkFzc3VudGFcIixcbiAgXCJBc3RyaWRcIixcbiAgXCJBdGhlbmFcIixcbiAgXCJBdWJyZWVcIixcbiAgXCJBdWJyZXlcIixcbiAgXCJBdWRpZVwiLFxuICBcIkF1ZHJhXCIsXG4gIFwiQXVkcmVhbm5lXCIsXG4gIFwiQXVkcmV5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiQXVndXN0YVwiLFxuICBcIkF1Z3VzdGluZVwiLFxuICBcIkF1Z3VzdHVzXCIsXG4gIFwiQXVyZWxpYVwiLFxuICBcIkF1cmVsaWVcIixcbiAgXCJBdXJlbGlvXCIsXG4gIFwiQXVyb3JlXCIsXG4gIFwiQXVzdGVuXCIsXG4gIFwiQXVzdGluXCIsXG4gIFwiQXVzdHluXCIsXG4gIFwiQXV0dW1uXCIsXG4gIFwiQXZhXCIsXG4gIFwiQXZlcnlcIixcbiAgXCJBdmlzXCIsXG4gIFwiQXhlbFwiLFxuICBcIkF5YW5hXCIsXG4gIFwiQXlkZW5cIixcbiAgXCJBeWxhXCIsXG4gIFwiQXlsaW5cIixcbiAgXCJCYWJ5XCIsXG4gIFwiQmFpbGVlXCIsXG4gIFwiQmFpbGV5XCIsXG4gIFwiQmFyYmFyYVwiLFxuICBcIkJhcm5leVwiLFxuICBcIkJhcm9uXCIsXG4gIFwiQmFycmV0dFwiLFxuICBcIkJhcnJ5XCIsXG4gIFwiQmFydFwiLFxuICBcIkJhcnRob2xvbWVcIixcbiAgXCJCYXJ0b25cIixcbiAgXCJCYXlsZWVcIixcbiAgXCJCZWF0cmljZVwiLFxuICBcIkJlYXVcIixcbiAgXCJCZWF1bGFoXCIsXG4gIFwiQmVsbFwiLFxuICBcIkJlbGxhXCIsXG4gIFwiQmVsbGVcIixcbiAgXCJCZW5cIixcbiAgXCJCZW5lZGljdFwiLFxuICBcIkJlbmphbWluXCIsXG4gIFwiQmVubmV0dFwiLFxuICBcIkJlbm5pZVwiLFxuICBcIkJlbm55XCIsXG4gIFwiQmVudG9uXCIsXG4gIFwiQmVyZW5pY2VcIixcbiAgXCJCZXJuYWRldHRlXCIsXG4gIFwiQmVybmFkaW5lXCIsXG4gIFwiQmVybmFyZFwiLFxuICBcIkJlcm5hcmRvXCIsXG4gIFwiQmVybmVpY2VcIixcbiAgXCJCZXJuaGFyZFwiLFxuICBcIkJlcm5pY2VcIixcbiAgXCJCZXJuaWVcIixcbiAgXCJCZXJuaWVjZVwiLFxuICBcIkJlcm5pdGFcIixcbiAgXCJCZXJyeVwiLFxuICBcIkJlcnRcIixcbiAgXCJCZXJ0YVwiLFxuICBcIkJlcnRoYVwiLFxuICBcIkJlcnRyYW1cIixcbiAgXCJCZXJ0cmFuZFwiLFxuICBcIkJlcnlsXCIsXG4gIFwiQmVzc2llXCIsXG4gIFwiQmV0aFwiLFxuICBcIkJldGhhbnlcIixcbiAgXCJCZXRoZWxcIixcbiAgXCJCZXRzeVwiLFxuICBcIkJldHRlXCIsXG4gIFwiQmV0dGllXCIsXG4gIFwiQmV0dHlcIixcbiAgXCJCZXR0eWVcIixcbiAgXCJCZXVsYWhcIixcbiAgXCJCZXZlcmx5XCIsXG4gIFwiQmlhbmthXCIsXG4gIFwiQmlsbFwiLFxuICBcIkJpbGxpZVwiLFxuICBcIkJpbGx5XCIsXG4gIFwiQmlyZGllXCIsXG4gIFwiQmxhaXJcIixcbiAgXCJCbGFpc2VcIixcbiAgXCJCbGFrZVwiLFxuICBcIkJsYW5jYVwiLFxuICBcIkJsYW5jaGVcIixcbiAgXCJCbGF6ZVwiLFxuICBcIkJvXCIsXG4gIFwiQm9iYmllXCIsXG4gIFwiQm9iYnlcIixcbiAgXCJCb25pdGFcIixcbiAgXCJCb25uaWVcIixcbiAgXCJCb3Jpc1wiLFxuICBcIkJveWRcIixcbiAgXCJCcmFkXCIsXG4gIFwiQnJhZGVuXCIsXG4gIFwiQnJhZGZvcmRcIixcbiAgXCJCcmFkbGV5XCIsXG4gIFwiQnJhZGx5XCIsXG4gIFwiQnJhZHlcIixcbiAgXCJCcmFlZGVuXCIsXG4gIFwiQnJhaW5cIixcbiAgXCJCcmFuZGlcIixcbiAgXCJCcmFuZG9cIixcbiAgXCJCcmFuZG9uXCIsXG4gIFwiQnJhbmR0XCIsXG4gIFwiQnJhbmR5XCIsXG4gIFwiQnJhbmR5blwiLFxuICBcIkJyYW5ub25cIixcbiAgXCJCcmFuc29uXCIsXG4gIFwiQnJhbnRcIixcbiAgXCJCcmF1bGlvXCIsXG4gIFwiQnJheHRvblwiLFxuICBcIkJyYXlhblwiLFxuICBcIkJyZWFuYVwiLFxuICBcIkJyZWFubmFcIixcbiAgXCJCcmVhbm5lXCIsXG4gIFwiQnJlbmRhXCIsXG4gIFwiQnJlbmRhblwiLFxuICBcIkJyZW5kZW5cIixcbiAgXCJCcmVuZG9uXCIsXG4gIFwiQnJlbm5hXCIsXG4gIFwiQnJlbm5hblwiLFxuICBcIkJyZW5ub25cIixcbiAgXCJCcmVudFwiLFxuICBcIkJyZXRcIixcbiAgXCJCcmV0dFwiLFxuICBcIkJyaWFcIixcbiAgXCJCcmlhblwiLFxuICBcIkJyaWFuYVwiLFxuICBcIkJyaWFubmVcIixcbiAgXCJCcmljZVwiLFxuICBcIkJyaWRnZXRcIixcbiAgXCJCcmlkZ2V0dGVcIixcbiAgXCJCcmlkaWVcIixcbiAgXCJCcmllbGxlXCIsXG4gIFwiQnJpZ2l0dGVcIixcbiAgXCJCcmlvbm5hXCIsXG4gIFwiQnJpc2FcIixcbiAgXCJCcml0bmV5XCIsXG4gIFwiQnJpdHRhbnlcIixcbiAgXCJCcm9ja1wiLFxuICBcIkJyb2Rlcmlja1wiLFxuICBcIkJyb2R5XCIsXG4gIFwiQnJvb2tcIixcbiAgXCJCcm9va2VcIixcbiAgXCJCcm9va2x5blwiLFxuICBcIkJyb29rc1wiLFxuICBcIkJyb3duXCIsXG4gIFwiQnJ1Y2VcIixcbiAgXCJCcnlhbmFcIixcbiAgXCJCcnljZVwiLFxuICBcIkJyeWNlblwiLFxuICBcIkJyeW9uXCIsXG4gIFwiQnVja1wiLFxuICBcIkJ1ZFwiLFxuICBcIkJ1ZGR5XCIsXG4gIFwiQnVmb3JkXCIsXG4gIFwiQnVsYWhcIixcbiAgXCJCdXJkZXR0ZVwiLFxuICBcIkJ1cmxleVwiLFxuICBcIkJ1cm5pY2VcIixcbiAgXCJCdXN0ZXJcIixcbiAgXCJDYWRlXCIsXG4gIFwiQ2FkZW5cIixcbiAgXCJDYWVzYXJcIixcbiAgXCJDYWl0bHluXCIsXG4gIFwiQ2FsZVwiLFxuICBcIkNhbGViXCIsXG4gIFwiQ2FsZWlnaFwiLFxuICBcIkNhbGlcIixcbiAgXCJDYWxpc3RhXCIsXG4gIFwiQ2FsbGllXCIsXG4gIFwiQ2FtZGVuXCIsXG4gIFwiQ2FtZXJvblwiLFxuICBcIkNhbWlsYVwiLFxuICBcIkNhbWlsbGFcIixcbiAgXCJDYW1pbGxlXCIsXG4gIFwiQ2FtcmVuXCIsXG4gIFwiQ2Ftcm9uXCIsXG4gIFwiQ2FtcnluXCIsXG4gIFwiQ2FteWxsZVwiLFxuICBcIkNhbmRhY2VcIixcbiAgXCJDYW5kZWxhcmlvXCIsXG4gIFwiQ2FuZGljZVwiLFxuICBcIkNhbmRpZGFcIixcbiAgXCJDYW5kaWRvXCIsXG4gIFwiQ2FyYVwiLFxuICBcIkNhcmV5XCIsXG4gIFwiQ2FyaXNzYVwiLFxuICBcIkNhcmxlZVwiLFxuICBcIkNhcmxldG9uXCIsXG4gIFwiQ2FybGV5XCIsXG4gIFwiQ2FybGlcIixcbiAgXCJDYXJsaWVcIixcbiAgXCJDYXJsb1wiLFxuICBcIkNhcmxvc1wiLFxuICBcIkNhcmxvdHRhXCIsXG4gIFwiQ2FybWVsXCIsXG4gIFwiQ2FybWVsYVwiLFxuICBcIkNhcm1lbGxhXCIsXG4gIFwiQ2FybWVsb1wiLFxuICBcIkNhcm1lblwiLFxuICBcIkNhcm1pbmVcIixcbiAgXCJDYXJvbFwiLFxuICBcIkNhcm9sYW5uZVwiLFxuICBcIkNhcm9sZVwiLFxuICBcIkNhcm9saW5hXCIsXG4gIFwiQ2Fyb2xpbmVcIixcbiAgXCJDYXJvbHluXCIsXG4gIFwiQ2Fyb2x5bmVcIixcbiAgXCJDYXJyaWVcIixcbiAgXCJDYXJyb2xsXCIsXG4gIFwiQ2Fyc29uXCIsXG4gIFwiQ2FydGVyXCIsXG4gIFwiQ2FyeVwiLFxuICBcIkNhc2FuZHJhXCIsXG4gIFwiQ2FzZXlcIixcbiAgXCJDYXNpbWVyXCIsXG4gIFwiQ2FzaW1pclwiLFxuICBcIkNhc3BlclwiLFxuICBcIkNhc3NhbmRyYVwiLFxuICBcIkNhc3NhbmRyZVwiLFxuICBcIkNhc3NpZHlcIixcbiAgXCJDYXNzaWVcIixcbiAgXCJDYXRhbGluYVwiLFxuICBcIkNhdGVyaW5hXCIsXG4gIFwiQ2F0aGFyaW5lXCIsXG4gIFwiQ2F0aGVyaW5lXCIsXG4gIFwiQ2F0aHJpbmVcIixcbiAgXCJDYXRocnluXCIsXG4gIFwiQ2F0aHlcIixcbiAgXCJDYXlsYVwiLFxuICBcIkNlYXNhclwiLFxuICBcIkNlY2VsaWFcIixcbiAgXCJDZWNpbFwiLFxuICBcIkNlY2lsZVwiLFxuICBcIkNlY2lsaWFcIixcbiAgXCJDZWRyaWNrXCIsXG4gIFwiQ2VsZXN0aW5lXCIsXG4gIFwiQ2VsZXN0aW5vXCIsXG4gIFwiQ2VsaWFcIixcbiAgXCJDZWxpbmVcIixcbiAgXCJDZXNhclwiLFxuICBcIkNoYWRcIixcbiAgXCJDaGFkZFwiLFxuICBcIkNoYWRyaWNrXCIsXG4gIFwiQ2hhaW1cIixcbiAgXCJDaGFuY2VcIixcbiAgXCJDaGFuZGxlclwiLFxuICBcIkNoYW5lbFwiLFxuICBcIkNoYW5lbGxlXCIsXG4gIFwiQ2hhcml0eVwiLFxuICBcIkNoYXJsZW5lXCIsXG4gIFwiQ2hhcmxlc1wiLFxuICBcIkNoYXJsZXlcIixcbiAgXCJDaGFybGllXCIsXG4gIFwiQ2hhcmxvdHRlXCIsXG4gIFwiQ2hhc2VcIixcbiAgXCJDaGFzaXR5XCIsXG4gIFwiQ2hhdW5jZXlcIixcbiAgXCJDaGF5YVwiLFxuICBcIkNoYXpcIixcbiAgXCJDaGVsc2VhXCIsXG4gIFwiQ2hlbHNleVwiLFxuICBcIkNoZWxzaWVcIixcbiAgXCJDaGVzbGV5XCIsXG4gIFwiQ2hlc3RlclwiLFxuICBcIkNoZXRcIixcbiAgXCJDaGV5YW5uZVwiLFxuICBcIkNoZXllbm5lXCIsXG4gIFwiQ2hsb2VcIixcbiAgXCJDaHJpc1wiLFxuICBcIkNocmlzdFwiLFxuICBcIkNocmlzdGFcIixcbiAgXCJDaHJpc3RlbGxlXCIsXG4gIFwiQ2hyaXN0aWFuXCIsXG4gIFwiQ2hyaXN0aWFuYVwiLFxuICBcIkNocmlzdGluYVwiLFxuICBcIkNocmlzdGluZVwiLFxuICBcIkNocmlzdG9wXCIsXG4gIFwiQ2hyaXN0b3BoZVwiLFxuICBcIkNocmlzdG9waGVyXCIsXG4gIFwiQ2hyaXN0eVwiLFxuICBcIkNoeW5hXCIsXG4gIFwiQ2lhcmFcIixcbiAgXCJDaWNlcm9cIixcbiAgXCJDaWVsb1wiLFxuICBcIkNpZXJyYVwiLFxuICBcIkNpbmR5XCIsXG4gIFwiQ2l0bGFsbGlcIixcbiAgXCJDbGFpclwiLFxuICBcIkNsYWlyZVwiLFxuICBcIkNsYXJhXCIsXG4gIFwiQ2xhcmFiZWxsZVwiLFxuICBcIkNsYXJlXCIsXG4gIFwiQ2xhcmlzc2FcIixcbiAgXCJDbGFya1wiLFxuICBcIkNsYXVkXCIsXG4gIFwiQ2xhdWRlXCIsXG4gIFwiQ2xhdWRpYVwiLFxuICBcIkNsYXVkaWVcIixcbiAgXCJDbGF1ZGluZVwiLFxuICBcIkNsYXlcIixcbiAgXCJDbGVtZW5zXCIsXG4gIFwiQ2xlbWVudFwiLFxuICBcIkNsZW1lbnRpbmFcIixcbiAgXCJDbGVtZW50aW5lXCIsXG4gIFwiQ2xlbW1pZVwiLFxuICBcIkNsZW9cIixcbiAgXCJDbGVvcmFcIixcbiAgXCJDbGV0YVwiLFxuICBcIkNsZXR1c1wiLFxuICBcIkNsZXZlXCIsXG4gIFwiQ2xldmVsYW5kXCIsXG4gIFwiQ2xpZmZvcmRcIixcbiAgXCJDbGlmdG9uXCIsXG4gIFwiQ2xpbnRcIixcbiAgXCJDbGludG9uXCIsXG4gIFwiQ2xvdGlsZGVcIixcbiAgXCJDbG92aXNcIixcbiAgXCJDbG95ZFwiLFxuICBcIkNseWRlXCIsXG4gIFwiQ29ieVwiLFxuICBcIkNvZHlcIixcbiAgXCJDb2xieVwiLFxuICBcIkNvbGVcIixcbiAgXCJDb2xlbWFuXCIsXG4gIFwiQ29saW5cIixcbiAgXCJDb2xsZWVuXCIsXG4gIFwiQ29sbGluXCIsXG4gIFwiQ29sdFwiLFxuICBcIkNvbHRlblwiLFxuICBcIkNvbHRvblwiLFxuICBcIkNvbHVtYnVzXCIsXG4gIFwiQ29uY2VwY2lvblwiLFxuICBcIkNvbm5lclwiLFxuICBcIkNvbm5pZVwiLFxuICBcIkNvbm5vclwiLFxuICBcIkNvbm9yXCIsXG4gIFwiQ29ucmFkXCIsXG4gIFwiQ29uc3RhbmNlXCIsXG4gIFwiQ29uc3RhbnRpblwiLFxuICBcIkNvbnN1ZWxvXCIsXG4gIFwiQ29vcGVyXCIsXG4gIFwiQ29yYVwiLFxuICBcIkNvcmFsaWVcIixcbiAgXCJDb3JiaW5cIixcbiAgXCJDb3JkZWxpYVwiLFxuICBcIkNvcmRlbGxcIixcbiAgXCJDb3JkaWFcIixcbiAgXCJDb3JkaWVcIixcbiAgXCJDb3JlbmVcIixcbiAgXCJDb3JpbmVcIixcbiAgXCJDb3JuZWxpdXNcIixcbiAgXCJDb3JuZWxsXCIsXG4gIFwiQ29ycmluZVwiLFxuICBcIkNvcnRlelwiLFxuICBcIkNvcnRuZXlcIixcbiAgXCJDb3J5XCIsXG4gIFwiQ290eVwiLFxuICBcIkNvdXJ0bmV5XCIsXG4gIFwiQ295XCIsXG4gIFwiQ3JhaWdcIixcbiAgXCJDcmF3Zm9yZFwiLFxuICBcIkNyZW9sYVwiLFxuICBcIkNyaXN0YWxcIixcbiAgXCJDcmlzdGlhblwiLFxuICBcIkNyaXN0aW5hXCIsXG4gIFwiQ3Jpc3RvYmFsXCIsXG4gIFwiQ3Jpc3RvcGhlclwiLFxuICBcIkNydXpcIixcbiAgXCJDcnlzdGFsXCIsXG4gIFwiQ3J5c3RlbFwiLFxuICBcIkN1bGxlblwiLFxuICBcIkN1cnRcIixcbiAgXCJDdXJ0aXNcIixcbiAgXCJDeWRuZXlcIixcbiAgXCJDeW50aGlhXCIsXG4gIFwiQ3lyaWxcIixcbiAgXCJDeXJ1c1wiLFxuICBcIkRhZ21hclwiLFxuICBcIkRhaGxpYVwiLFxuICBcIkRhaWphXCIsXG4gIFwiRGFpc2hhXCIsXG4gIFwiRGFpc3lcIixcbiAgXCJEYWtvdGFcIixcbiAgXCJEYWxlXCIsXG4gIFwiRGFsbGFzXCIsXG4gIFwiRGFsbGluXCIsXG4gIFwiRGFsdG9uXCIsXG4gIFwiRGFtYXJpc1wiLFxuICBcIkRhbWVvblwiLFxuICBcIkRhbWlhblwiLFxuICBcIkRhbWllblwiLFxuICBcIkRhbWlvblwiLFxuICBcIkRhbW9uXCIsXG4gIFwiRGFuXCIsXG4gIFwiRGFuYVwiLFxuICBcIkRhbmRyZVwiLFxuICBcIkRhbmVcIixcbiAgXCJEJ2FuZ2Vsb1wiLFxuICBcIkRhbmdlbG9cIixcbiAgXCJEYW5pYWxcIixcbiAgXCJEYW5pZWxhXCIsXG4gIFwiRGFuaWVsbGFcIixcbiAgXCJEYW5pZWxsZVwiLFxuICBcIkRhbmlrYVwiLFxuICBcIkRhbm5pZVwiLFxuICBcIkRhbm55XCIsXG4gIFwiRGFudGVcIixcbiAgXCJEYW55a2FcIixcbiAgXCJEYXBobmVcIixcbiAgXCJEYXBobmVlXCIsXG4gIFwiRGFwaG5leVwiLFxuICBcIkRhcmJ5XCIsXG4gIFwiRGFyZW5cIixcbiAgXCJEYXJpYW5cIixcbiAgXCJEYXJpYW5hXCIsXG4gIFwiRGFyaWVuXCIsXG4gIFwiRGFyaW9cIixcbiAgXCJEYXJpb25cIixcbiAgXCJEYXJpdXNcIixcbiAgXCJEYXJsZW5lXCIsXG4gIFwiRGFyb25cIixcbiAgXCJEYXJyZWxcIixcbiAgXCJEYXJyZWxsXCIsXG4gIFwiRGFycmVuXCIsXG4gIFwiRGFycmlja1wiLFxuICBcIkRhcnJpblwiLFxuICBcIkRhcnJpb25cIixcbiAgXCJEYXJyb25cIixcbiAgXCJEYXJyeWxcIixcbiAgXCJEYXJ3aW5cIixcbiAgXCJEYXJ5bFwiLFxuICBcIkRhc2hhd25cIixcbiAgXCJEYXNpYVwiLFxuICBcIkRhdmVcIixcbiAgXCJEYXZpZFwiLFxuICBcIkRhdmluXCIsXG4gIFwiRGF2aW9uXCIsXG4gIFwiRGF2b25cIixcbiAgXCJEYXZvbnRlXCIsXG4gIFwiRGF3blwiLFxuICBcIkRhd3NvblwiLFxuICBcIkRheFwiLFxuICBcIkRheWFuYVwiLFxuICBcIkRheW5hXCIsXG4gIFwiRGF5bmVcIixcbiAgXCJEYXl0b25cIixcbiAgXCJEZWFuXCIsXG4gIFwiRGVhbmdlbG9cIixcbiAgXCJEZWFubmFcIixcbiAgXCJEZWJvcmFoXCIsXG4gIFwiRGVjbGFuXCIsXG4gIFwiRGVkcmljXCIsXG4gIFwiRGVkcmlja1wiLFxuICBcIkRlZVwiLFxuICBcIkRlaW9uXCIsXG4gIFwiRGVqYVwiLFxuICBcIkRlamFoXCIsXG4gIFwiRGVqb25cIixcbiAgXCJEZWp1YW5cIixcbiAgXCJEZWxhbmV5XCIsXG4gIFwiRGVsYmVydFwiLFxuICBcIkRlbGZpbmFcIixcbiAgXCJEZWxpYVwiLFxuICBcIkRlbGlsYWhcIixcbiAgXCJEZWxsXCIsXG4gIFwiRGVsbGFcIixcbiAgXCJEZWxtZXJcIixcbiAgXCJEZWxvcmVzXCIsXG4gIFwiRGVscGhhXCIsXG4gIFwiRGVscGhpYVwiLFxuICBcIkRlbHBoaW5lXCIsXG4gIFwiRGVsdGFcIixcbiAgXCJEZW1hcmNvXCIsXG4gIFwiRGVtYXJjdXNcIixcbiAgXCJEZW1hcmlvXCIsXG4gIFwiRGVtZXRyaXNcIixcbiAgXCJEZW1ldHJpdXNcIixcbiAgXCJEZW1vbmRcIixcbiAgXCJEZW5hXCIsXG4gIFwiRGVuaXNcIixcbiAgXCJEZW5uaXNcIixcbiAgXCJEZW9uXCIsXG4gIFwiRGVvbmRyZVwiLFxuICBcIkRlb250YWVcIixcbiAgXCJEZW9udGVcIixcbiAgXCJEZXJlY2tcIixcbiAgXCJEZXJla1wiLFxuICBcIkRlcmlja1wiLFxuICBcIkRlcm9uXCIsXG4gIFwiRGVycmlja1wiLFxuICBcIkRlc2hhdW5cIixcbiAgXCJEZXNoYXduXCIsXG4gIFwiRGVzaXJlZVwiLFxuICBcIkRlc21vbmRcIixcbiAgXCJEZXNzaWVcIixcbiAgXCJEZXN0YW55XCIsXG4gIFwiRGVzdGluXCIsXG4gIFwiRGVzdGluZWVcIixcbiAgXCJEZXN0aW5leVwiLFxuICBcIkRlc3RpbmlcIixcbiAgXCJEZXN0aW55XCIsXG4gIFwiRGV2YW5cIixcbiAgXCJEZXZhbnRlXCIsXG4gIFwiRGV2ZW5cIixcbiAgXCJEZXZpblwiLFxuICBcIkRldm9uXCIsXG4gIFwiRGV2b250ZVwiLFxuICBcIkRldnluXCIsXG4gIFwiRGV3YXluZVwiLFxuICBcIkRld2l0dFwiLFxuICBcIkRleHRlclwiLFxuICBcIkRpYW1vbmRcIixcbiAgXCJEaWFuYVwiLFxuICBcIkRpYW5uYVwiLFxuICBcIkRpZWdvXCIsXG4gIFwiRGlsbGFuXCIsXG4gIFwiRGlsbG9uXCIsXG4gIFwiRGltaXRyaVwiLFxuICBcIkRpbmFcIixcbiAgXCJEaW5vXCIsXG4gIFwiRGlvblwiLFxuICBcIkRpeGllXCIsXG4gIFwiRG9ja1wiLFxuICBcIkRvbGx5XCIsXG4gIFwiRG9sb3Jlc1wiLFxuICBcIkRvbWVuaWNcIixcbiAgXCJEb21lbmljYVwiLFxuICBcIkRvbWVuaWNrXCIsXG4gIFwiRG9tZW5pY29cIixcbiAgXCJEb21pbmdvXCIsXG4gIFwiRG9taW5pY1wiLFxuICBcIkRvbWluaXF1ZVwiLFxuICBcIkRvblwiLFxuICBcIkRvbmFsZFwiLFxuICBcIkRvbmF0b1wiLFxuICBcIkRvbmF2b25cIixcbiAgXCJEb25uYVwiLFxuICBcIkRvbm5lbGxcIixcbiAgXCJEb25uaWVcIixcbiAgXCJEb25ueVwiLFxuICBcIkRvcmFcIixcbiAgXCJEb3JjYXNcIixcbiAgXCJEb3JpYW5cIixcbiAgXCJEb3Jpc1wiLFxuICBcIkRvcm90aGVhXCIsXG4gIFwiRG9yb3RoeVwiLFxuICBcIkRvcnJpc1wiLFxuICBcIkRvcnRoYVwiLFxuICBcIkRvcnRoeVwiLFxuICBcIkRvdWdcIixcbiAgXCJEb3VnbGFzXCIsXG4gIFwiRG92aWVcIixcbiAgXCJEb3lsZVwiLFxuICBcIkRyYWtlXCIsXG4gIFwiRHJld1wiLFxuICBcIkR1YW5lXCIsXG4gIFwiRHVkbGV5XCIsXG4gIFwiRHVsY2VcIixcbiAgXCJEdW5jYW5cIixcbiAgXCJEdXJ3YXJkXCIsXG4gIFwiRHVzdGluXCIsXG4gIFwiRHVzdHlcIixcbiAgXCJEd2lnaHRcIixcbiAgXCJEeWxhblwiLFxuICBcIkVhcmxcIixcbiAgXCJFYXJsZW5lXCIsXG4gIFwiRWFybGluZVwiLFxuICBcIkVhcm5lc3RcIixcbiAgXCJFYXJuZXN0aW5lXCIsXG4gIFwiRWFzdGVyXCIsXG4gIFwiRWFzdG9uXCIsXG4gIFwiRWJiYVwiLFxuICBcIkVib255XCIsXG4gIFwiRWRcIixcbiAgXCJFZGFcIixcbiAgXCJFZGRcIixcbiAgXCJFZGRpZVwiLFxuICBcIkVkZW5cIixcbiAgXCJFZGdhclwiLFxuICBcIkVkZ2FyZG9cIixcbiAgXCJFZGlzb25cIixcbiAgXCJFZG1vbmRcIixcbiAgXCJFZG11bmRcIixcbiAgXCJFZG5hXCIsXG4gIFwiRWR1YXJkb1wiLFxuICBcIkVkd2FyZFwiLFxuICBcIkVkd2FyZG9cIixcbiAgXCJFZHdpblwiLFxuICBcIkVkd2luYVwiLFxuICBcIkVkeXRoXCIsXG4gIFwiRWR5dGhlXCIsXG4gIFwiRWZmaWVcIixcbiAgXCJFZnJhaW5cIixcbiAgXCJFZnJlblwiLFxuICBcIkVpbGVlblwiLFxuICBcIkVpbmFyXCIsXG4gIFwiRWlub1wiLFxuICBcIkVsYWRpb1wiLFxuICBcIkVsYWluYVwiLFxuICBcIkVsYmVydFwiLFxuICBcIkVsZGFcIixcbiAgXCJFbGRvblwiLFxuICBcIkVsZG9yYVwiLFxuICBcIkVsZHJlZFwiLFxuICBcIkVsZHJpZGdlXCIsXG4gIFwiRWxlYW5vcmFcIixcbiAgXCJFbGVhbm9yZVwiLFxuICBcIkVsZWF6YXJcIixcbiAgXCJFbGVjdGFcIixcbiAgXCJFbGVuYVwiLFxuICBcIkVsZW5vclwiLFxuICBcIkVsZW5vcmFcIixcbiAgXCJFbGVvbm9yZVwiLFxuICBcIkVsZnJpZWRhXCIsXG4gIFwiRWxpXCIsXG4gIFwiRWxpYW5cIixcbiAgXCJFbGlhbmVcIixcbiAgXCJFbGlhc1wiLFxuICBcIkVsaWV6ZXJcIixcbiAgXCJFbGlqYWhcIixcbiAgXCJFbGlub3JcIixcbiAgXCJFbGlub3JlXCIsXG4gIFwiRWxpc2FcIixcbiAgXCJFbGlzYWJldGhcIixcbiAgXCJFbGlzZVwiLFxuICBcIkVsaXNlb1wiLFxuICBcIkVsaXNoYVwiLFxuICBcIkVsaXNzYVwiLFxuICBcIkVsaXphXCIsXG4gIFwiRWxpemFiZXRoXCIsXG4gIFwiRWxsYVwiLFxuICBcIkVsbGVuXCIsXG4gIFwiRWxsaWVcIixcbiAgXCJFbGxpb3RcIixcbiAgXCJFbGxpb3R0XCIsXG4gIFwiRWxsaXNcIixcbiAgXCJFbGxzd29ydGhcIixcbiAgXCJFbG1lclwiLFxuICBcIkVsbWlyYVwiLFxuICBcIkVsbW9cIixcbiAgXCJFbG1vcmVcIixcbiAgXCJFbG5hXCIsXG4gIFwiRWxub3JhXCIsXG4gIFwiRWxvZHlcIixcbiAgXCJFbG9pc2FcIixcbiAgXCJFbG9pc2VcIixcbiAgXCJFbG91aXNlXCIsXG4gIFwiRWxveVwiLFxuICBcIkVscm95XCIsXG4gIFwiRWxzYVwiLFxuICBcIkVsc2VcIixcbiAgXCJFbHNpZVwiLFxuICBcIkVsdGFcIixcbiAgXCJFbHRvblwiLFxuICBcIkVsdmFcIixcbiAgXCJFbHZlcmFcIixcbiAgXCJFbHZpZVwiLFxuICBcIkVsdmlzXCIsXG4gIFwiRWx3aW5cIixcbiAgXCJFbHd5blwiLFxuICBcIkVseXNlXCIsXG4gIFwiRWx5c3NhXCIsXG4gIFwiRWx6YVwiLFxuICBcIkVtYW51ZWxcIixcbiAgXCJFbWVsaWFcIixcbiAgXCJFbWVsaWVcIixcbiAgXCJFbWVseVwiLFxuICBcIkVtZXJhbGRcIixcbiAgXCJFbWVyc29uXCIsXG4gIFwiRW1lcnlcIixcbiAgXCJFbWllXCIsXG4gIFwiRW1pbFwiLFxuICBcIkVtaWxlXCIsXG4gIFwiRW1pbGlhXCIsXG4gIFwiRW1pbGlhbm9cIixcbiAgXCJFbWlsaWVcIixcbiAgXCJFbWlsaW9cIixcbiAgXCJFbWlseVwiLFxuICBcIkVtbWFcIixcbiAgXCJFbW1hbGVlXCIsXG4gIFwiRW1tYW51ZWxcIixcbiAgXCJFbW1hbnVlbGxlXCIsXG4gIFwiRW1tZXRcIixcbiAgXCJFbW1ldHRcIixcbiAgXCJFbW1pZVwiLFxuICBcIkVtbWl0dFwiLFxuICBcIkVtbXlcIixcbiAgXCJFbW9yeVwiLFxuICBcIkVuYVwiLFxuICBcIkVuaWRcIixcbiAgXCJFbm9jaFwiLFxuICBcIkVub2xhXCIsXG4gIFwiRW5vc1wiLFxuICBcIkVucmljb1wiLFxuICBcIkVucmlxdWVcIixcbiAgXCJFcGhyYWltXCIsXG4gIFwiRXJhXCIsXG4gIFwiRXJpYmVydG9cIixcbiAgXCJFcmljXCIsXG4gIFwiRXJpY2FcIixcbiAgXCJFcmljaFwiLFxuICBcIkVyaWNrXCIsXG4gIFwiRXJpY2thXCIsXG4gIFwiRXJpa1wiLFxuICBcIkVyaWthXCIsXG4gIFwiRXJpblwiLFxuICBcIkVybGluZ1wiLFxuICBcIkVybmFcIixcbiAgXCJFcm5lc3RcIixcbiAgXCJFcm5lc3RpbmFcIixcbiAgXCJFcm5lc3RpbmVcIixcbiAgXCJFcm5lc3RvXCIsXG4gIFwiRXJuaWVcIixcbiAgXCJFcnZpblwiLFxuICBcIkVyd2luXCIsXG4gIFwiRXJ5blwiLFxuICBcIkVzbWVyYWxkYVwiLFxuICBcIkVzcGVyYW56YVwiLFxuICBcIkVzdGFcIixcbiAgXCJFc3RlYmFuXCIsXG4gIFwiRXN0ZWZhbmlhXCIsXG4gIFwiRXN0ZWxcIixcbiAgXCJFc3RlbGxcIixcbiAgXCJFc3RlbGxhXCIsXG4gIFwiRXN0ZWxsZVwiLFxuICBcIkVzdGV2YW5cIixcbiAgXCJFc3RoZXJcIixcbiAgXCJFc3RyZWxsYVwiLFxuICBcIkV0aGFcIixcbiAgXCJFdGhhblwiLFxuICBcIkV0aGVsXCIsXG4gIFwiRXRoZWx5blwiLFxuICBcIkV0aHlsXCIsXG4gIFwiRXR0aWVcIixcbiAgXCJFdWRvcmFcIixcbiAgXCJFdWdlbmVcIixcbiAgXCJFdWdlbmlhXCIsXG4gIFwiRXVsYVwiLFxuICBcIkV1bGFoXCIsXG4gIFwiRXVsYWxpYVwiLFxuICBcIkV1bmFcIixcbiAgXCJFdW5pY2VcIixcbiAgXCJFdXNlYmlvXCIsXG4gIFwiRXZhXCIsXG4gIFwiRXZhbHluXCIsXG4gIFwiRXZhblwiLFxuICBcIkV2YW5nZWxpbmVcIixcbiAgXCJFdmFuc1wiLFxuICBcIkV2ZVwiLFxuICBcIkV2ZWxpbmVcIixcbiAgXCJFdmVseW5cIixcbiAgXCJFdmVyYXJkb1wiLFxuICBcIkV2ZXJldHRcIixcbiAgXCJFdmVyZXR0ZVwiLFxuICBcIkV2ZXJ0XCIsXG4gIFwiRXZpZVwiLFxuICBcIkV3YWxkXCIsXG4gIFwiRXdlbGxcIixcbiAgXCJFemVraWVsXCIsXG4gIFwiRXplcXVpZWxcIixcbiAgXCJFenJhXCIsXG4gIFwiRmFiaWFuXCIsXG4gIFwiRmFiaW9sYVwiLFxuICBcIkZhZVwiLFxuICBcIkZhbm5pZVwiLFxuICBcIkZhbm55XCIsXG4gIFwiRmF0aW1hXCIsXG4gIFwiRmF1c3Rpbm9cIixcbiAgXCJGYXVzdG9cIixcbiAgXCJGYXZpYW5cIixcbiAgXCJGYXlcIixcbiAgXCJGYXllXCIsXG4gIFwiRmVkZXJpY29cIixcbiAgXCJGZWxpY2lhXCIsXG4gIFwiRmVsaWNpdGFcIixcbiAgXCJGZWxpY2l0eVwiLFxuICBcIkZlbGlwYVwiLFxuICBcIkZlbGlwZVwiLFxuICBcIkZlbGl4XCIsXG4gIFwiRmVsdG9uXCIsXG4gIFwiRmVybWluXCIsXG4gIFwiRmVyblwiLFxuICBcIkZlcm5hbmRvXCIsXG4gIFwiRmVybmVcIixcbiAgXCJGaWRlbFwiLFxuICBcIkZpbGliZXJ0b1wiLFxuICBcIkZpbG9tZW5hXCIsXG4gIFwiRmlublwiLFxuICBcIkZpb25hXCIsXG4gIFwiRmxhdmllXCIsXG4gIFwiRmxhdmlvXCIsXG4gIFwiRmxldGFcIixcbiAgXCJGbGV0Y2hlclwiLFxuICBcIkZsb1wiLFxuICBcIkZsb3JlbmNlXCIsXG4gIFwiRmxvcmVuY2lvXCIsXG4gIFwiRmxvcmlhblwiLFxuICBcIkZsb3JpZGFcIixcbiAgXCJGbG9yaW5lXCIsXG4gIFwiRmxvc3NpZVwiLFxuICBcIkZsb3lcIixcbiAgXCJGbG95ZFwiLFxuICBcIkZvcmRcIixcbiAgXCJGb3Jlc3RcIixcbiAgXCJGb3JyZXN0XCIsXG4gIFwiRm9zdGVyXCIsXG4gIFwiRnJhbmNlc1wiLFxuICBcIkZyYW5jZXNjYVwiLFxuICBcIkZyYW5jZXNjb1wiLFxuICBcIkZyYW5jaXNcIixcbiAgXCJGcmFuY2lzY2FcIixcbiAgXCJGcmFuY2lzY29cIixcbiAgXCJGcmFuY29cIixcbiAgXCJGcmFua1wiLFxuICBcIkZyYW5raWVcIixcbiAgXCJGcmFuelwiLFxuICBcIkZyZWRcIixcbiAgXCJGcmVkYVwiLFxuICBcIkZyZWRkaWVcIixcbiAgXCJGcmVkZHlcIixcbiAgXCJGcmVkZXJpY1wiLFxuICBcIkZyZWRlcmlja1wiLFxuICBcIkZyZWRlcmlrXCIsXG4gIFwiRnJlZGVyaXF1ZVwiLFxuICBcIkZyZWRyaWNrXCIsXG4gIFwiRnJlZHlcIixcbiAgXCJGcmVlZGFcIixcbiAgXCJGcmVlbWFuXCIsXG4gIFwiRnJlaWRhXCIsXG4gIFwiRnJpZGFcIixcbiAgXCJGcmllZGFcIixcbiAgXCJGcmllZHJpY2hcIixcbiAgXCJGcml0elwiLFxuICBcIkZ1cm1hblwiLFxuICBcIkdhYmVcIixcbiAgXCJHYWJyaWVsXCIsXG4gIFwiR2FicmllbGxhXCIsXG4gIFwiR2FicmllbGxlXCIsXG4gIFwiR2FldGFub1wiLFxuICBcIkdhZ2VcIixcbiAgXCJHYWlsXCIsXG4gIFwiR2FyZG5lclwiLFxuICBcIkdhcmV0dFwiLFxuICBcIkdhcmZpZWxkXCIsXG4gIFwiR2FybGFuZFwiLFxuICBcIkdhcm5ldFwiLFxuICBcIkdhcm5ldHRcIixcbiAgXCJHYXJyZXRcIixcbiAgXCJHYXJyZXR0XCIsXG4gIFwiR2Fycmlja1wiLFxuICBcIkdhcnJpc29uXCIsXG4gIFwiR2FycnlcIixcbiAgXCJHYXJ0aFwiLFxuICBcIkdhc3RvblwiLFxuICBcIkdhdmluXCIsXG4gIFwiR2F5XCIsXG4gIFwiR2F5bGVcIixcbiAgXCJHYXlsb3JkXCIsXG4gIFwiR2VuZVwiLFxuICBcIkdlbmVyYWxcIixcbiAgXCJHZW5lc2lzXCIsXG4gIFwiR2VuZXZpZXZlXCIsXG4gIFwiR2VubmFyb1wiLFxuICBcIkdlbm92ZXZhXCIsXG4gIFwiR2VvXCIsXG4gIFwiR2VvZmZyZXlcIixcbiAgXCJHZW9yZ2VcIixcbiAgXCJHZW9yZ2V0dGVcIixcbiAgXCJHZW9yZ2lhbmFcIixcbiAgXCJHZW9yZ2lhbm5hXCIsXG4gIFwiR2VvdmFubmlcIixcbiAgXCJHZW92YW5ueVwiLFxuICBcIkdlb3ZhbnlcIixcbiAgXCJHZXJhbGRcIixcbiAgXCJHZXJhbGRpbmVcIixcbiAgXCJHZXJhcmRcIixcbiAgXCJHZXJhcmRvXCIsXG4gIFwiR2VyZGFcIixcbiAgXCJHZXJoYXJkXCIsXG4gIFwiR2VybWFpbmVcIixcbiAgXCJHZXJtYW5cIixcbiAgXCJHZXJyeVwiLFxuICBcIkdlcnNvblwiLFxuICBcIkdlcnRydWRlXCIsXG4gIFwiR2lhXCIsXG4gIFwiR2lhbm5pXCIsXG4gIFwiR2lkZW9uXCIsXG4gIFwiR2lsYmVydFwiLFxuICBcIkdpbGJlcnRvXCIsXG4gIFwiR2lsZGFcIixcbiAgXCJHaWxlc1wiLFxuICBcIkdpbGxpYW5cIixcbiAgXCJHaW5hXCIsXG4gIFwiR2lub1wiLFxuICBcIkdpb3ZhbmlcIixcbiAgXCJHaW92YW5uYVwiLFxuICBcIkdpb3Zhbm5pXCIsXG4gIFwiR2lvdmFubnlcIixcbiAgXCJHaXNzZWxsZVwiLFxuICBcIkdpdXNlcHBlXCIsXG4gIFwiR2xhZHljZVwiLFxuICBcIkdsYWR5c1wiLFxuICBcIkdsZW5cIixcbiAgXCJHbGVuZGFcIixcbiAgXCJHbGVubmFcIixcbiAgXCJHbGVubmllXCIsXG4gIFwiR2xvcmlhXCIsXG4gIFwiR29kZnJleVwiLFxuICBcIkdvbGRhXCIsXG4gIFwiR29sZGVuXCIsXG4gIFwiR29uemFsb1wiLFxuICBcIkdvcmRvblwiLFxuICBcIkdyYWNlXCIsXG4gIFwiR3JhY2llXCIsXG4gIFwiR3JhY2llbGFcIixcbiAgXCJHcmFkeVwiLFxuICBcIkdyYWhhbVwiLFxuICBcIkdyYW50XCIsXG4gIFwiR3JhbnZpbGxlXCIsXG4gIFwiR3JheWNlXCIsXG4gIFwiR3JheXNvblwiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZ1wiLFxuICBcIkdyZWdnXCIsXG4gIFwiR3JlZ29yaWFcIixcbiAgXCJHcmVnb3Jpb1wiLFxuICBcIkdyZWdvcnlcIixcbiAgXCJHcmV0YVwiLFxuICBcIkdyZXRjaGVuXCIsXG4gIFwiR3JleXNvblwiLFxuICBcIkdyaWZmaW5cIixcbiAgXCJHcm92ZXJcIixcbiAgXCJHdWFkYWx1cGVcIixcbiAgXCJHdWRydW5cIixcbiAgXCJHdWlkb1wiLFxuICBcIkd1aWxsZXJtb1wiLFxuICBcIkd1aXNlcHBlXCIsXG4gIFwiR3VubmFyXCIsXG4gIFwiR3VubmVyXCIsXG4gIFwiR3VzXCIsXG4gIFwiR3Vzc2llXCIsXG4gIFwiR3VzdFwiLFxuICBcIkd1c3RhdmVcIixcbiAgXCJHdXlcIixcbiAgXCJHd2VuXCIsXG4gIFwiR3dlbmRvbHluXCIsXG4gIFwiSGFkbGV5XCIsXG4gIFwiSGFpbGVlXCIsXG4gIFwiSGFpbGV5XCIsXG4gIFwiSGFpbGllXCIsXG4gIFwiSGFsXCIsXG4gIFwiSGFsZWlnaFwiLFxuICBcIkhhbGV5XCIsXG4gIFwiSGFsaWVcIixcbiAgXCJIYWxsZVwiLFxuICBcIkhhbGxpZVwiLFxuICBcIkhhbmtcIixcbiAgXCJIYW5uYVwiLFxuICBcIkhhbm5haFwiLFxuICBcIkhhbnNcIixcbiAgXCJIYXJkeVwiLFxuICBcIkhhcmxleVwiLFxuICBcIkhhcm1vblwiLFxuICBcIkhhcm1vbnlcIixcbiAgXCJIYXJvbGRcIixcbiAgXCJIYXJyaXNvblwiLFxuICBcIkhhcnJ5XCIsXG4gIFwiSGFydmV5XCIsXG4gIFwiSGFza2VsbFwiLFxuICBcIkhhc3NhblwiLFxuICBcIkhhc3NpZVwiLFxuICBcIkhhdHRpZVwiLFxuICBcIkhhdmVuXCIsXG4gIFwiSGF5ZGVuXCIsXG4gIFwiSGF5bGVlXCIsXG4gIFwiSGF5bGV5XCIsXG4gIFwiSGF5bGllXCIsXG4gIFwiSGF6ZWxcIixcbiAgXCJIYXpsZVwiLFxuICBcIkhlYXRoXCIsXG4gIFwiSGVhdGhlclwiLFxuICBcIkhlYXZlblwiLFxuICBcIkhlYmVyXCIsXG4gIFwiSGVjdG9yXCIsXG4gIFwiSGVpZGlcIixcbiAgXCJIZWxlblwiLFxuICBcIkhlbGVuYVwiLFxuICBcIkhlbGVuZVwiLFxuICBcIkhlbGdhXCIsXG4gIFwiSGVsbGVuXCIsXG4gIFwiSGVsbWVyXCIsXG4gIFwiSGVsb2lzZVwiLFxuICBcIkhlbmRlcnNvblwiLFxuICBcIkhlbnJpXCIsXG4gIFwiSGVucmlldHRlXCIsXG4gIFwiSGVucnlcIixcbiAgXCJIZXJiZXJ0XCIsXG4gIFwiSGVybWFuXCIsXG4gIFwiSGVybWFublwiLFxuICBcIkhlcm1pbmFcIixcbiAgXCJIZXJtaW5pYVwiLFxuICBcIkhlcm1pbmlvXCIsXG4gIFwiSGVyc2hlbFwiLFxuICBcIkhlcnRhXCIsXG4gIFwiSGVydGhhXCIsXG4gIFwiSGVzdGVyXCIsXG4gIFwiSGV0dGllXCIsXG4gIFwiSGlsYXJpb1wiLFxuICBcIkhpbGJlcnRcIixcbiAgXCJIaWxkYVwiLFxuICBcIkhpbGRlZ2FyZFwiLFxuICBcIkhpbGxhcmRcIixcbiAgXCJIaWxsYXJ5XCIsXG4gIFwiSGlsbWFcIixcbiAgXCJIaWx0b25cIixcbiAgXCJIaXBvbGl0b1wiLFxuICBcIkhpcmFtXCIsXG4gIFwiSG9iYXJ0XCIsXG4gIFwiSG9sZGVuXCIsXG4gIFwiSG9sbGllXCIsXG4gIFwiSG9sbGlzXCIsXG4gIFwiSG9sbHlcIixcbiAgXCJIb3BlXCIsXG4gIFwiSG9yYWNlXCIsXG4gIFwiSG9yYWNpb1wiLFxuICBcIkhvcnRlbnNlXCIsXG4gIFwiSG9zZWFcIixcbiAgXCJIb3VzdG9uXCIsXG4gIFwiSG93YXJkXCIsXG4gIFwiSG93ZWxsXCIsXG4gIFwiSG95dFwiLFxuICBcIkh1YmVydFwiLFxuICBcIkh1ZHNvblwiLFxuICBcIkh1Z2hcIixcbiAgXCJIdWxkYVwiLFxuICBcIkh1bWJlcnRvXCIsXG4gIFwiSHVudGVyXCIsXG4gIFwiSHltYW5cIixcbiAgXCJJYW5cIixcbiAgXCJJYnJhaGltXCIsXG4gIFwiSWNpZVwiLFxuICBcIklkYVwiLFxuICBcIklkZWxsXCIsXG4gIFwiSWRlbGxhXCIsXG4gIFwiSWduYWNpb1wiLFxuICBcIklnbmF0aXVzXCIsXG4gIFwiSWtlXCIsXG4gIFwiSWxhXCIsXG4gIFwiSWxlbmVcIixcbiAgXCJJbGlhbmFcIixcbiAgXCJJbWFcIixcbiAgXCJJbWFuaVwiLFxuICBcIkltZWxkYVwiLFxuICBcIkltbWFudWVsXCIsXG4gIFwiSW1vZ2VuZVwiLFxuICBcIkluZXNcIixcbiAgXCJJcm1hXCIsXG4gIFwiSXJ2aW5nXCIsXG4gIFwiSXJ3aW5cIixcbiAgXCJJc2FhY1wiLFxuICBcIklzYWJlbFwiLFxuICBcIklzYWJlbGxcIixcbiAgXCJJc2FiZWxsYVwiLFxuICBcIklzYWJlbGxlXCIsXG4gIFwiSXNhY1wiLFxuICBcIklzYWRvcmVcIixcbiAgXCJJc2FpXCIsXG4gIFwiSXNhaWFoXCIsXG4gIFwiSXNhaWFzXCIsXG4gIFwiSXNpZHJvXCIsXG4gIFwiSXNtYWVsXCIsXG4gIFwiSXNvYmVsXCIsXG4gIFwiSXNvbVwiLFxuICBcIklzcmFlbFwiLFxuICBcIklzc2FjXCIsXG4gIFwiSXR6ZWxcIixcbiAgXCJJdmFcIixcbiAgXCJJdmFoXCIsXG4gIFwiSXZvcnlcIixcbiAgXCJJdnlcIixcbiAgXCJJemFiZWxsYVwiLFxuICBcIkl6YWlhaFwiLFxuICBcIkphYmFyaVwiLFxuICBcIkphY2VcIixcbiAgXCJKYWNleVwiLFxuICBcIkphY2ludGhlXCIsXG4gIFwiSmFjaW50b1wiLFxuICBcIkphY2tcIixcbiAgXCJKYWNrZWxpbmVcIixcbiAgXCJKYWNraWVcIixcbiAgXCJKYWNrbHluXCIsXG4gIFwiSmFja3NvblwiLFxuICBcIkphY2t5XCIsXG4gIFwiSmFjbHluXCIsXG4gIFwiSmFjcXVlbHluXCIsXG4gIFwiSmFjcXVlc1wiLFxuICBcIkphY3ludGhlXCIsXG4gIFwiSmFkYVwiLFxuICBcIkphZGVcIixcbiAgXCJKYWRlblwiLFxuICBcIkphZG9uXCIsXG4gIFwiSmFkeW5cIixcbiAgXCJKYWVkZW5cIixcbiAgXCJKYWlkYVwiLFxuICBcIkphaWRlblwiLFxuICBcIkphaWx5blwiLFxuICBcIkphaW1lXCIsXG4gIFwiSmFpcm9cIixcbiAgXCJKYWtheWxhXCIsXG4gIFwiSmFrZVwiLFxuICBcIkpha29iXCIsXG4gIFwiSmFsZWVsXCIsXG4gIFwiSmFsZW5cIixcbiAgXCJKYWxvblwiLFxuICBcIkphbHluXCIsXG4gIFwiSmFtYWFsXCIsXG4gIFwiSmFtYWxcIixcbiAgXCJKYW1hclwiLFxuICBcIkphbWFyY3VzXCIsXG4gIFwiSmFtZWxcIixcbiAgXCJKYW1lc29uXCIsXG4gIFwiSmFtZXlcIixcbiAgXCJKYW1pZVwiLFxuICBcIkphbWlsXCIsXG4gIFwiSmFtaXJcIixcbiAgXCJKYW1pc29uXCIsXG4gIFwiSmFtbWllXCIsXG4gIFwiSmFuXCIsXG4gIFwiSmFuYVwiLFxuICBcIkphbmFlXCIsXG4gIFwiSmFuZVwiLFxuICBcIkphbmVsbGVcIixcbiAgXCJKYW5lc3NhXCIsXG4gIFwiSmFuZXRcIixcbiAgXCJKYW5pY2VcIixcbiAgXCJKYW5pY2tcIixcbiAgXCJKYW5pZVwiLFxuICBcIkphbmlzXCIsXG4gIFwiSmFuaXlhXCIsXG4gIFwiSmFubmllXCIsXG4gIFwiSmFueVwiLFxuICBcIkphcXVhblwiLFxuICBcIkphcXVlbGluXCIsXG4gIFwiSmFxdWVsaW5lXCIsXG4gIFwiSmFyZWRcIixcbiAgXCJKYXJlblwiLFxuICBcIkphcm9kXCIsXG4gIFwiSmFyb25cIixcbiAgXCJKYXJyZWRcIixcbiAgXCJKYXJyZWxsXCIsXG4gIFwiSmFycmV0XCIsXG4gIFwiSmFycmV0dFwiLFxuICBcIkphcnJvZFwiLFxuICBcIkphcnZpc1wiLFxuICBcIkphc2VuXCIsXG4gIFwiSmFzbWluXCIsXG4gIFwiSmFzb25cIixcbiAgXCJKYXNwZXJcIixcbiAgXCJKYXVuaXRhXCIsXG4gIFwiSmF2aWVyXCIsXG4gIFwiSmF2b25cIixcbiAgXCJKYXZvbnRlXCIsXG4gIFwiSmF5XCIsXG4gIFwiSmF5Y2VcIixcbiAgXCJKYXljZWVcIixcbiAgXCJKYXlkYVwiLFxuICBcIkpheWRlXCIsXG4gIFwiSmF5ZGVuXCIsXG4gIFwiSmF5ZG9uXCIsXG4gIFwiSmF5bGFuXCIsXG4gIFwiSmF5bGVuXCIsXG4gIFwiSmF5bGluXCIsXG4gIFwiSmF5bG9uXCIsXG4gIFwiSmF5bWVcIixcbiAgXCJKYXluZVwiLFxuICBcIkpheXNvblwiLFxuICBcIkphemx5blwiLFxuICBcIkphem1pblwiLFxuICBcIkphem15blwiLFxuICBcIkphem15bmVcIixcbiAgXCJKZWFuXCIsXG4gIFwiSmVhbmV0dGVcIixcbiAgXCJKZWFuaWVcIixcbiAgXCJKZWFubmVcIixcbiAgXCJKZWRcIixcbiAgXCJKZWRlZGlhaFwiLFxuICBcIkplZGlkaWFoXCIsXG4gIFwiSmVmZlwiLFxuICBcIkplZmZlcmV5XCIsXG4gIFwiSmVmZmVyeVwiLFxuICBcIkplZmZyZXlcIixcbiAgXCJKZWZmcnlcIixcbiAgXCJKZW5hXCIsXG4gIFwiSmVuaWZlclwiLFxuICBcIkplbm5pZVwiLFxuICBcIkplbm5pZmVyXCIsXG4gIFwiSmVubmluZ3NcIixcbiAgXCJKZW5ueWZlclwiLFxuICBcIkplbnNlblwiLFxuICBcIkplcmFkXCIsXG4gIFwiSmVyYWxkXCIsXG4gIFwiSmVyYW1pZVwiLFxuICBcIkplcmFteVwiLFxuICBcIkplcmVsXCIsXG4gIFwiSmVyZW1pZVwiLFxuICBcIkplcmVteVwiLFxuICBcIkplcm1haW5cIixcbiAgXCJKZXJtYWluZVwiLFxuICBcIkplcm1leVwiLFxuICBcIkplcm9kXCIsXG4gIFwiSmVyb21lXCIsXG4gIFwiSmVyb215XCIsXG4gIFwiSmVycmVsbFwiLFxuICBcIkplcnJvZFwiLFxuICBcIkplcnJvbGRcIixcbiAgXCJKZXJyeVwiLFxuICBcIkplc3NcIixcbiAgXCJKZXNzZVwiLFxuICBcIkplc3NpY2FcIixcbiAgXCJKZXNzaWVcIixcbiAgXCJKZXNzaWthXCIsXG4gIFwiSmVzc3lcIixcbiAgXCJKZXNzeWNhXCIsXG4gIFwiSmVzdXNcIixcbiAgXCJKZXR0XCIsXG4gIFwiSmV0dGllXCIsXG4gIFwiSmV2b25cIixcbiAgXCJKZXdlbFwiLFxuICBcIkpld2VsbFwiLFxuICBcIkppbGxpYW5cIixcbiAgXCJKaW1taWVcIixcbiAgXCJKaW1teVwiLFxuICBcIkpvXCIsXG4gIFwiSm9hblwiLFxuICBcIkpvYW5hXCIsXG4gIFwiSm9hbmllXCIsXG4gIFwiSm9hbm5lXCIsXG4gIFwiSm9hbm5pZVwiLFxuICBcIkpvYW5ueVwiLFxuICBcIkpvYW55XCIsXG4gIFwiSm9hcXVpblwiLFxuICBcIkpvY2VseW5cIixcbiAgXCJKb2RpZVwiLFxuICBcIkpvZHlcIixcbiAgXCJKb2VcIixcbiAgXCJKb2VsXCIsXG4gIFwiSm9lbGxlXCIsXG4gIFwiSm9lc3BoXCIsXG4gIFwiSm9leVwiLFxuICBcIkpvaGFuXCIsXG4gIFwiSm9oYW5uXCIsXG4gIFwiSm9oYW5uYVwiLFxuICBcIkpvaGF0aGFuXCIsXG4gIFwiSm9oblwiLFxuICBcIkpvaG5hdGhhblwiLFxuICBcIkpvaG5hdGhvblwiLFxuICBcIkpvaG5uaWVcIixcbiAgXCJKb2hubnlcIixcbiAgXCJKb2hucGF1bFwiLFxuICBcIkpvaG5zb25cIixcbiAgXCJKb2xpZVwiLFxuICBcIkpvblwiLFxuICBcIkpvbmFzXCIsXG4gIFwiSm9uYXRhblwiLFxuICBcIkpvbmF0aGFuXCIsXG4gIFwiSm9uYXRob25cIixcbiAgXCJKb3JkYW5cIixcbiAgXCJKb3JkYW5lXCIsXG4gIFwiSm9yZGlcIixcbiAgXCJKb3Jkb25cIixcbiAgXCJKb3JkeVwiLFxuICBcIkpvcmR5blwiLFxuICBcIkpvcmdlXCIsXG4gIFwiSm9zZVwiLFxuICBcIkpvc2VmYVwiLFxuICBcIkpvc2VmaW5hXCIsXG4gIFwiSm9zZXBoXCIsXG4gIFwiSm9zZXBoaW5lXCIsXG4gIFwiSm9zaFwiLFxuICBcIkpvc2h1YVwiLFxuICBcIkpvc2h1YWhcIixcbiAgXCJKb3NpYWhcIixcbiAgXCJKb3NpYW5lXCIsXG4gIFwiSm9zaWFubmVcIixcbiAgXCJKb3NpZVwiLFxuICBcIkpvc3VlXCIsXG4gIFwiSm92YW5cIixcbiAgXCJKb3ZhbmlcIixcbiAgXCJKb3Zhbm55XCIsXG4gIFwiSm92YW55XCIsXG4gIFwiSm95XCIsXG4gIFwiSm95Y2VcIixcbiAgXCJKdWFuYVwiLFxuICBcIkp1YW5pdGFcIixcbiAgXCJKdWRhaFwiLFxuICBcIkp1ZGRcIixcbiAgXCJKdWRlXCIsXG4gIFwiSnVkZ2VcIixcbiAgXCJKdWRzb25cIixcbiAgXCJKdWR5XCIsXG4gIFwiSnVsZXNcIixcbiAgXCJKdWxpYVwiLFxuICBcIkp1bGlhblwiLFxuICBcIkp1bGlhbmFcIixcbiAgXCJKdWxpYW5uZVwiLFxuICBcIkp1bGllXCIsXG4gIFwiSnVsaWVuXCIsXG4gIFwiSnVsaWV0XCIsXG4gIFwiSnVsaW9cIixcbiAgXCJKdWxpdXNcIixcbiAgXCJKdW5lXCIsXG4gIFwiSnVuaW9yXCIsXG4gIFwiSnVuaXVzXCIsXG4gIFwiSnVzdGVuXCIsXG4gIFwiSnVzdGljZVwiLFxuICBcIkp1c3RpbmFcIixcbiAgXCJKdXN0aW5lXCIsXG4gIFwiSnVzdG9uXCIsXG4gIFwiSnVzdHVzXCIsXG4gIFwiSnVzdHluXCIsXG4gIFwiSnV2ZW5hbFwiLFxuICBcIkp1d2FuXCIsXG4gIFwiS2FjZXlcIixcbiAgXCJLYWNpXCIsXG4gIFwiS2FjaWVcIixcbiAgXCJLYWRlXCIsXG4gIFwiS2FkZW5cIixcbiAgXCJLYWRpblwiLFxuICBcIkthZWxhXCIsXG4gIFwiS2FlbHluXCIsXG4gIFwiS2FpYVwiLFxuICBcIkthaWxlZVwiLFxuICBcIkthaWxleVwiLFxuICBcIkthaWx5blwiLFxuICBcIkthaXRsaW5cIixcbiAgXCJLYWl0bHluXCIsXG4gIFwiS2FsZVwiLFxuICBcIkthbGViXCIsXG4gIFwiS2FsZWlnaFwiLFxuICBcIkthbGV5XCIsXG4gIFwiS2FsaVwiLFxuICBcIkthbGxpZVwiLFxuICBcIkthbWVyb25cIixcbiAgXCJLYW1pbGxlXCIsXG4gIFwiS2FtcmVuXCIsXG4gIFwiS2Ftcm9uXCIsXG4gIFwiS2FtcnluXCIsXG4gIFwiS2FuZVwiLFxuICBcIkthcmFcIixcbiAgXCJLYXJlZW1cIixcbiAgXCJLYXJlbGxlXCIsXG4gIFwiS2FyZW5cIixcbiAgXCJLYXJpXCIsXG4gIFwiS2FyaWFuZVwiLFxuICBcIkthcmlhbm5lXCIsXG4gIFwiS2FyaW5hXCIsXG4gIFwiS2FyaW5lXCIsXG4gIFwiS2FybFwiLFxuICBcIkthcmxlZVwiLFxuICBcIkthcmxleVwiLFxuICBcIkthcmxpXCIsXG4gIFwiS2FybGllXCIsXG4gIFwiS2Fyb2xhbm5cIixcbiAgXCJLYXJzb25cIixcbiAgXCJLYXNhbmRyYVwiLFxuICBcIkthc2V5XCIsXG4gIFwiS2Fzc2FuZHJhXCIsXG4gIFwiS2F0YXJpbmFcIixcbiAgXCJLYXRlbGluXCIsXG4gIFwiS2F0ZWx5blwiLFxuICBcIkthdGVseW5uXCIsXG4gIFwiS2F0aGFyaW5hXCIsXG4gIFwiS2F0aGVyaW5lXCIsXG4gIFwiS2F0aGVyeW5cIixcbiAgXCJLYXRobGVlblwiLFxuICBcIkthdGhseW5cIixcbiAgXCJLYXRocnluXCIsXG4gIFwiS2F0aHJ5bmVcIixcbiAgXCJLYXRseW5cIixcbiAgXCJLYXRseW5uXCIsXG4gIFwiS2F0cmluYVwiLFxuICBcIkthdHJpbmVcIixcbiAgXCJLYXR0aWVcIixcbiAgXCJLYXZvblwiLFxuICBcIktheVwiLFxuICBcIktheWFcIixcbiAgXCJLYXljZWVcIixcbiAgXCJLYXlkZW5cIixcbiAgXCJLYXlsYVwiLFxuICBcIktheWxhaFwiLFxuICBcIktheWxlZVwiLFxuICBcIktheWxlaWdoXCIsXG4gIFwiS2F5bGV5XCIsXG4gIFwiS2F5bGlcIixcbiAgXCJLYXlsaWVcIixcbiAgXCJLYXlsaW5cIixcbiAgXCJLZWFnYW5cIixcbiAgXCJLZWFudVwiLFxuICBcIktlYXJhXCIsXG4gIFwiS2VhdG9uXCIsXG4gIFwiS2VlZ2FuXCIsXG4gIFwiS2VlbGV5XCIsXG4gIFwiS2VlbHlcIixcbiAgXCJLZWVuYW5cIixcbiAgXCJLZWlyYVwiLFxuICBcIktlaXRoXCIsXG4gIFwiS2VsbGVuXCIsXG4gIFwiS2VsbGV5XCIsXG4gIFwiS2VsbGlcIixcbiAgXCJLZWxsaWVcIixcbiAgXCJLZWxseVwiLFxuICBcIktlbHNpXCIsXG4gIFwiS2Vsc2llXCIsXG4gIFwiS2VsdG9uXCIsXG4gIFwiS2VsdmluXCIsXG4gIFwiS2VuXCIsXG4gIFwiS2VuZGFsbFwiLFxuICBcIktlbmRyYVwiLFxuICBcIktlbmRyaWNrXCIsXG4gIFwiS2VubmFcIixcbiAgXCJLZW5uZWRpXCIsXG4gIFwiS2VubmVkeVwiLFxuICBcIktlbm5ldGhcIixcbiAgXCJLZW5uaXRoXCIsXG4gIFwiS2VubnlcIixcbiAgXCJLZW50b25cIixcbiAgXCJLZW55YVwiLFxuICBcIktlbnlhdHRhXCIsXG4gIFwiS2VueW9uXCIsXG4gIFwiS2VvblwiLFxuICBcIktlc2hhdW5cIixcbiAgXCJLZXNoYXduXCIsXG4gIFwiS2V2ZW5cIixcbiAgXCJLZXZpblwiLFxuICBcIktldm9uXCIsXG4gIFwiS2V5b25cIixcbiAgXCJLZXlzaGF3blwiLFxuICBcIktoYWxpZFwiLFxuICBcIktoYWxpbFwiLFxuICBcIktpYW5cIixcbiAgXCJLaWFuYVwiLFxuICBcIktpYW5uYVwiLFxuICBcIktpYXJhXCIsXG4gIFwiS2lhcnJhXCIsXG4gIFwiS2llbFwiLFxuICBcIktpZXJhXCIsXG4gIFwiS2llcmFuXCIsXG4gIFwiS2lsZXlcIixcbiAgXCJLaW1cIixcbiAgXCJLaW1iZXJseVwiLFxuICBcIktpbmdcIixcbiAgXCJLaXBcIixcbiAgXCJLaXJhXCIsXG4gIFwiS2lya1wiLFxuICBcIktpcnN0ZW5cIixcbiAgXCJLaXJzdGluXCIsXG4gIFwiS2l0dHlcIixcbiAgXCJLb2JlXCIsXG4gIFwiS29ieVwiLFxuICBcIktvZHlcIixcbiAgXCJLb2xieVwiLFxuICBcIktvbGVcIixcbiAgXCJLb3JiaW5cIixcbiAgXCJLb3JleVwiLFxuICBcIktvcnlcIixcbiAgXCJLcmFpZ1wiLFxuICBcIktyaXNcIixcbiAgXCJLcmlzdGFcIixcbiAgXCJLcmlzdGlhblwiLFxuICBcIktyaXN0aW5cIixcbiAgXCJLcmlzdGluYVwiLFxuICBcIktyaXN0b2ZlclwiLFxuICBcIktyaXN0b2ZmZXJcIixcbiAgXCJLcmlzdG9waGVyXCIsXG4gIFwiS3Jpc3R5XCIsXG4gIFwiS3J5c3RhbFwiLFxuICBcIktyeXN0ZWxcIixcbiAgXCJLcnlzdGluYVwiLFxuICBcIkt1cnRcIixcbiAgXCJLdXJ0aXNcIixcbiAgXCJLeWxhXCIsXG4gIFwiS3lsZVwiLFxuICBcIkt5bGVlXCIsXG4gIFwiS3lsZWlnaFwiLFxuICBcIkt5bGVyXCIsXG4gIFwiS3lsaWVcIixcbiAgXCJLeXJhXCIsXG4gIFwiTGFjZXlcIixcbiAgXCJMYWN5XCIsXG4gIFwiTGFkYXJpdXNcIixcbiAgXCJMYWZheWV0dGVcIixcbiAgXCJMYWlsYVwiLFxuICBcIkxhaXNoYVwiLFxuICBcIkxhbWFyXCIsXG4gIFwiTGFtYmVydFwiLFxuICBcIkxhbW9udFwiLFxuICBcIkxhbmNlXCIsXG4gIFwiTGFuZGVuXCIsXG4gIFwiTGFuZVwiLFxuICBcIkxhbmV5XCIsXG4gIFwiTGFyaXNzYVwiLFxuICBcIkxhcm9uXCIsXG4gIFwiTGFycnlcIixcbiAgXCJMYXJ1ZVwiLFxuICBcIkxhdXJhXCIsXG4gIFwiTGF1cmVsXCIsXG4gIFwiTGF1cmVuXCIsXG4gIFwiTGF1cmVuY2VcIixcbiAgXCJMYXVyZXR0YVwiLFxuICBcIkxhdXJpYW5lXCIsXG4gIFwiTGF1cmlhbm5lXCIsXG4gIFwiTGF1cmllXCIsXG4gIFwiTGF1cmluZVwiLFxuICBcIkxhdXJ5XCIsXG4gIFwiTGF1cnluXCIsXG4gIFwiTGF2YWRhXCIsXG4gIFwiTGF2ZXJuXCIsXG4gIFwiTGF2ZXJuYVwiLFxuICBcIkxhdmVybmVcIixcbiAgXCJMYXZpbmFcIixcbiAgXCJMYXZpbmlhXCIsXG4gIFwiTGF2b25cIixcbiAgXCJMYXZvbm5lXCIsXG4gIFwiTGF3cmVuY2VcIixcbiAgXCJMYXdzb25cIixcbiAgXCJMYXlsYVwiLFxuICBcIkxheW5lXCIsXG4gIFwiTGF6YXJvXCIsXG4gIFwiTGVhXCIsXG4gIFwiTGVhbm5cIixcbiAgXCJMZWFubmFcIixcbiAgXCJMZWFubmVcIixcbiAgXCJMZWF0aGFcIixcbiAgXCJMZWRhXCIsXG4gIFwiTGVlXCIsXG4gIFwiTGVpZlwiLFxuICBcIkxlaWxhXCIsXG4gIFwiTGVpbGFuaVwiLFxuICBcIkxlbGFcIixcbiAgXCJMZWxhaFwiLFxuICBcIkxlbGFuZFwiLFxuICBcIkxlbGlhXCIsXG4gIFwiTGVtcGlcIixcbiAgXCJMZW11ZWxcIixcbiAgXCJMZW5uYVwiLFxuICBcIkxlbm5pZVwiLFxuICBcIkxlbm55XCIsXG4gIFwiTGVub3JhXCIsXG4gIFwiTGVub3JlXCIsXG4gIFwiTGVvXCIsXG4gIFwiTGVvbGFcIixcbiAgXCJMZW9uXCIsXG4gIFwiTGVvbmFyZFwiLFxuICBcIkxlb25hcmRvXCIsXG4gIFwiTGVvbmVcIixcbiAgXCJMZW9uZWxcIixcbiAgXCJMZW9uaWVcIixcbiAgXCJMZW9ub3JcIixcbiAgXCJMZW9ub3JhXCIsXG4gIFwiTGVvcG9sZFwiLFxuICBcIkxlb3BvbGRvXCIsXG4gIFwiTGVvcmFcIixcbiAgXCJMZXJhXCIsXG4gIFwiTGVzbGV5XCIsXG4gIFwiTGVzbGllXCIsXG4gIFwiTGVzbHlcIixcbiAgXCJMZXNzaWVcIixcbiAgXCJMZXN0ZXJcIixcbiAgXCJMZXRhXCIsXG4gIFwiTGV0aGFcIixcbiAgXCJMZXRpdGlhXCIsXG4gIFwiTGV2aVwiLFxuICBcIkxld1wiLFxuICBcIkxld2lzXCIsXG4gIFwiTGV4aVwiLFxuICBcIkxleGllXCIsXG4gIFwiTGV4dXNcIixcbiAgXCJMaWFcIixcbiAgXCJMaWFtXCIsXG4gIFwiTGlhbmFcIixcbiAgXCJMaWJiaWVcIixcbiAgXCJMaWJieVwiLFxuICBcIkxpbGFcIixcbiAgXCJMaWxpYW5cIixcbiAgXCJMaWxpYW5hXCIsXG4gIFwiTGlsaWFuZVwiLFxuICBcIkxpbGxhXCIsXG4gIFwiTGlsbGlhblwiLFxuICBcIkxpbGxpYW5hXCIsXG4gIFwiTGlsbGllXCIsXG4gIFwiTGlsbHlcIixcbiAgXCJMaWx5XCIsXG4gIFwiTGlseWFuXCIsXG4gIFwiTGluYVwiLFxuICBcIkxpbmNvbG5cIixcbiAgXCJMaW5kYVwiLFxuICBcIkxpbmRzYXlcIixcbiAgXCJMaW5kc2V5XCIsXG4gIFwiTGlubmVhXCIsXG4gIFwiTGlubmllXCIsXG4gIFwiTGlud29vZFwiLFxuICBcIkxpb25lbFwiLFxuICBcIkxpc2FcIixcbiAgXCJMaXNhbmRyb1wiLFxuICBcIkxpc2V0dGVcIixcbiAgXCJMaXR6eVwiLFxuICBcIkxpemFcIixcbiAgXCJMaXpldGhcIixcbiAgXCJMaXp6aWVcIixcbiAgXCJMbGV3ZWxseW5cIixcbiAgXCJMbG95ZFwiLFxuICBcIkxvZ2FuXCIsXG4gIFwiTG9pc1wiLFxuICBcIkxvbGFcIixcbiAgXCJMb2xpdGFcIixcbiAgXCJMb21hXCIsXG4gIFwiTG9uXCIsXG4gIFwiTG9uZG9uXCIsXG4gIFwiTG9uaWVcIixcbiAgXCJMb25uaWVcIixcbiAgXCJMb25ueVwiLFxuICBcIkxvbnpvXCIsXG4gIFwiTG9yYVwiLFxuICBcIkxvcmFpbmVcIixcbiAgXCJMb3JlblwiLFxuICBcIkxvcmVuYVwiLFxuICBcIkxvcmVuelwiLFxuICBcIkxvcmVuemFcIixcbiAgXCJMb3JlbnpvXCIsXG4gIFwiTG9yaVwiLFxuICBcIkxvcmluZVwiLFxuICBcIkxvcm5hXCIsXG4gIFwiTG90dGllXCIsXG4gIFwiTG91XCIsXG4gIFwiTG91aWVcIixcbiAgXCJMb3Vpc2FcIixcbiAgXCJMb3VyZGVzXCIsXG4gIFwiTG91dmVuaWFcIixcbiAgXCJMb3dlbGxcIixcbiAgXCJMb3lcIixcbiAgXCJMb3lhbFwiLFxuICBcIkxveWNlXCIsXG4gIFwiTHVjYXNcIixcbiAgXCJMdWNpYW5vXCIsXG4gIFwiTHVjaWVcIixcbiAgXCJMdWNpZW5uZVwiLFxuICBcIkx1Y2lsZVwiLFxuICBcIkx1Y2luZGFcIixcbiAgXCJMdWNpb1wiLFxuICBcIkx1Y2lvdXNcIixcbiAgXCJMdWNpdXNcIixcbiAgXCJMdWN5XCIsXG4gIFwiTHVkaWVcIixcbiAgXCJMdWR3aWdcIixcbiAgXCJMdWVcIixcbiAgXCJMdWVsbGFcIixcbiAgXCJMdWlnaVwiLFxuICBcIkx1aXNcIixcbiAgXCJMdWlzYVwiLFxuICBcIkx1a2FzXCIsXG4gIFwiTHVsYVwiLFxuICBcIkx1bHVcIixcbiAgXCJMdW5hXCIsXG4gIFwiTHVwZVwiLFxuICBcIkx1cmFcIixcbiAgXCJMdXJsaW5lXCIsXG4gIFwiTHV0aGVyXCIsXG4gIFwiTHV6XCIsXG4gIFwiTHlkYVwiLFxuICBcIkx5ZGlhXCIsXG4gIFwiTHlsYVwiLFxuICBcIkx5bm5cIixcbiAgXCJMeXJpY1wiLFxuICBcIkx5c2FubmVcIixcbiAgXCJNYWJlbFwiLFxuICBcIk1hYmVsbGVcIixcbiAgXCJNYWJsZVwiLFxuICBcIk1hY1wiLFxuICBcIk1hY2V5XCIsXG4gIFwiTWFjaVwiLFxuICBcIk1hY2llXCIsXG4gIFwiTWFja1wiLFxuICBcIk1hY2tlbnppZVwiLFxuICBcIk1hY3lcIixcbiAgXCJNYWRhbGluZVwiLFxuICBcIk1hZGFseW5cIixcbiAgXCJNYWRkaXNvblwiLFxuICBcIk1hZGVsaW5lXCIsXG4gIFwiTWFkZWx5blwiLFxuICBcIk1hZGVseW5uXCIsXG4gIFwiTWFkZ2VcIixcbiAgXCJNYWRpZVwiLFxuICBcIk1hZGlseW5cIixcbiAgXCJNYWRpc2VuXCIsXG4gIFwiTWFkaXNvblwiLFxuICBcIk1hZGlzeW5cIixcbiAgXCJNYWRvbm5hXCIsXG4gIFwiTWFkeXNvblwiLFxuICBcIk1hZVwiLFxuICBcIk1hZWdhblwiLFxuICBcIk1hZXZlXCIsXG4gIFwiTWFmYWxkYVwiLFxuICBcIk1hZ2FsaVwiLFxuICBcIk1hZ2RhbGVuXCIsXG4gIFwiTWFnZGFsZW5hXCIsXG4gIFwiTWFnZ2llXCIsXG4gIFwiTWFnbm9saWFcIixcbiAgXCJNYWdudXNcIixcbiAgXCJNYWlhXCIsXG4gIFwiTWFpZGFcIixcbiAgXCJNYWl5YVwiLFxuICBcIk1ham9yXCIsXG4gIFwiTWFrYXlsYVwiLFxuICBcIk1ha2VubmFcIixcbiAgXCJNYWtlbnppZVwiLFxuICBcIk1hbGFjaGlcIixcbiAgXCJNYWxjb2xtXCIsXG4gIFwiTWFsaWthXCIsXG4gIFwiTWFsaW5kYVwiLFxuICBcIk1hbGxpZVwiLFxuICBcIk1hbGxvcnlcIixcbiAgXCJNYWx2aW5hXCIsXG4gIFwiTWFuZHlcIixcbiAgXCJNYW5sZXlcIixcbiAgXCJNYW51ZWxcIixcbiAgXCJNYW51ZWxhXCIsXG4gIFwiTWFyYVwiLFxuICBcIk1hcmNcIixcbiAgXCJNYXJjZWxcIixcbiAgXCJNYXJjZWxpbmFcIixcbiAgXCJNYXJjZWxpbm9cIixcbiAgXCJNYXJjZWxsYVwiLFxuICBcIk1hcmNlbGxlXCIsXG4gIFwiTWFyY2VsbHVzXCIsXG4gIFwiTWFyY2Vsb1wiLFxuICBcIk1hcmNpYVwiLFxuICBcIk1hcmNvXCIsXG4gIFwiTWFyY29zXCIsXG4gIFwiTWFyY3VzXCIsXG4gIFwiTWFyZ2FyZXRcIixcbiAgXCJNYXJnYXJldGVcIixcbiAgXCJNYXJnYXJldHRcIixcbiAgXCJNYXJnYXJldHRhXCIsXG4gIFwiTWFyZ2FyZXR0ZVwiLFxuICBcIk1hcmdhcml0YVwiLFxuICBcIk1hcmdlXCIsXG4gIFwiTWFyZ2llXCIsXG4gIFwiTWFyZ290XCIsXG4gIFwiTWFyZ3JldFwiLFxuICBcIk1hcmd1ZXJpdGVcIixcbiAgXCJNYXJpYVwiLFxuICBcIk1hcmlhaFwiLFxuICBcIk1hcmlhbVwiLFxuICBcIk1hcmlhblwiLFxuICBcIk1hcmlhbmFcIixcbiAgXCJNYXJpYW5lXCIsXG4gIFwiTWFyaWFubmFcIixcbiAgXCJNYXJpYW5uZVwiLFxuICBcIk1hcmlhbm9cIixcbiAgXCJNYXJpYmVsXCIsXG4gIFwiTWFyaWVcIixcbiAgXCJNYXJpZWxhXCIsXG4gIFwiTWFyaWVsbGVcIixcbiAgXCJNYXJpZXR0YVwiLFxuICBcIk1hcmlsaWVcIixcbiAgXCJNYXJpbG91XCIsXG4gIFwiTWFyaWx5bmVcIixcbiAgXCJNYXJpbmFcIixcbiAgXCJNYXJpb1wiLFxuICBcIk1hcmlvblwiLFxuICBcIk1hcmlzYVwiLFxuICBcIk1hcmlzb2xcIixcbiAgXCJNYXJpdHphXCIsXG4gIFwiTWFyam9sYWluZVwiLFxuICBcIk1hcmpvcmllXCIsXG4gIFwiTWFyam9yeVwiLFxuICBcIk1hcmtcIixcbiAgXCJNYXJrdXNcIixcbiAgXCJNYXJsZWVcIixcbiAgXCJNYXJsZW5cIixcbiAgXCJNYXJsZW5lXCIsXG4gIFwiTWFybGV5XCIsXG4gIFwiTWFybGluXCIsXG4gIFwiTWFybG9uXCIsXG4gIFwiTWFycXVlc1wiLFxuICBcIk1hcnF1aXNcIixcbiAgXCJNYXJxdWlzZVwiLFxuICBcIk1hcnNoYWxsXCIsXG4gIFwiTWFydGFcIixcbiAgXCJNYXJ0aW5cIixcbiAgXCJNYXJ0aW5hXCIsXG4gIFwiTWFydGluZVwiLFxuICBcIk1hcnR5XCIsXG4gIFwiTWFydmluXCIsXG4gIFwiTWFyeVwiLFxuICBcIk1hcnlhbVwiLFxuICBcIk1hcnlqYW5lXCIsXG4gIFwiTWFyeXNlXCIsXG4gIFwiTWFzb25cIixcbiAgXCJNYXRlb1wiLFxuICBcIk1hdGhld1wiLFxuICBcIk1hdGhpYXNcIixcbiAgXCJNYXRoaWxkZVwiLFxuICBcIk1hdGlsZGFcIixcbiAgXCJNYXRpbGRlXCIsXG4gIFwiTWF0dFwiLFxuICBcIk1hdHRlb1wiLFxuICBcIk1hdHRpZVwiLFxuICBcIk1hdWRcIixcbiAgXCJNYXVkZVwiLFxuICBcIk1hdWRpZVwiLFxuICBcIk1hdXJlZW5cIixcbiAgXCJNYXVyaWNlXCIsXG4gIFwiTWF1cmljaW9cIixcbiAgXCJNYXVyaW5lXCIsXG4gIFwiTWF2ZXJpY2tcIixcbiAgXCJNYXZpc1wiLFxuICBcIk1heFwiLFxuICBcIk1heGllXCIsXG4gIFwiTWF4aW1lXCIsXG4gIFwiTWF4aW1pbGlhblwiLFxuICBcIk1heGltaWxsaWFcIixcbiAgXCJNYXhpbWlsbGlhblwiLFxuICBcIk1heGltb1wiLFxuICBcIk1heGltdXNcIixcbiAgXCJNYXhpbmVcIixcbiAgXCJNYXh3ZWxsXCIsXG4gIFwiTWF5XCIsXG4gIFwiTWF5YVwiLFxuICBcIk1heWJlbGxcIixcbiAgXCJNYXliZWxsZVwiLFxuICBcIk1heWVcIixcbiAgXCJNYXltaWVcIixcbiAgXCJNYXluYXJkXCIsXG4gIFwiTWF5cmFcIixcbiAgXCJNYXppZVwiLFxuICBcIk1ja2F5bGFcIixcbiAgXCJNY2tlbm5hXCIsXG4gIFwiTWNrZW56aWVcIixcbiAgXCJNZWFnYW5cIixcbiAgXCJNZWFnaGFuXCIsXG4gIFwiTWVkYVwiLFxuICBcIk1lZ2FuZVwiLFxuICBcIk1lZ2dpZVwiLFxuICBcIk1lZ2hhblwiLFxuICBcIk1la2hpXCIsXG4gIFwiTWVsYW55XCIsXG4gIFwiTWVsYmFcIixcbiAgXCJNZWxpc2FcIixcbiAgXCJNZWxpc3NhXCIsXG4gIFwiTWVsbGllXCIsXG4gIFwiTWVsb2R5XCIsXG4gIFwiTWVsdmluXCIsXG4gIFwiTWVsdmluYVwiLFxuICBcIk1lbHluYVwiLFxuICBcIk1lbHlzc2FcIixcbiAgXCJNZXJjZWRlc1wiLFxuICBcIk1lcmVkaXRoXCIsXG4gIFwiTWVybFwiLFxuICBcIk1lcmxlXCIsXG4gIFwiTWVybGluXCIsXG4gIFwiTWVycml0dFwiLFxuICBcIk1lcnRpZVwiLFxuICBcIk1lcnZpblwiLFxuICBcIk1ldGFcIixcbiAgXCJNaWFcIixcbiAgXCJNaWNhZWxhXCIsXG4gIFwiTWljYWhcIixcbiAgXCJNaWNoYWVsXCIsXG4gIFwiTWljaGFlbGFcIixcbiAgXCJNaWNoYWxlXCIsXG4gIFwiTWljaGVhbFwiLFxuICBcIk1pY2hlbFwiLFxuICBcIk1pY2hlbGVcIixcbiAgXCJNaWNoZWxsZVwiLFxuICBcIk1pZ3VlbFwiLFxuICBcIk1pa2F5bGFcIixcbiAgXCJNaWtlXCIsXG4gIFwiTWlrZWxcIixcbiAgXCJNaWxhblwiLFxuICBcIk1pbGVzXCIsXG4gIFwiTWlsZm9yZFwiLFxuICBcIk1pbGxlclwiLFxuICBcIk1pbGxpZVwiLFxuICBcIk1pbG9cIixcbiAgXCJNaWx0b25cIixcbiAgXCJNaW5hXCIsXG4gIFwiTWluZXJ2YVwiLFxuICBcIk1pbm5pZVwiLFxuICBcIk1pcmFjbGVcIixcbiAgXCJNaXJlaWxsZVwiLFxuICBcIk1pcmV5YVwiLFxuICBcIk1pc2FlbFwiLFxuICBcIk1pc3NvdXJpXCIsXG4gIFwiTWlzdHlcIixcbiAgXCJNaXRjaGVsXCIsXG4gIFwiTWl0Y2hlbGxcIixcbiAgXCJNaXR0aWVcIixcbiAgXCJNb2Rlc3RhXCIsXG4gIFwiTW9kZXN0b1wiLFxuICBcIk1vaGFtZWRcIixcbiAgXCJNb2hhbW1hZFwiLFxuICBcIk1vaGFtbWVkXCIsXG4gIFwiTW9pc2VzXCIsXG4gIFwiTW9sbGllXCIsXG4gIFwiTW9sbHlcIixcbiAgXCJNb25hXCIsXG4gIFwiTW9uaWNhXCIsXG4gIFwiTW9uaXF1ZVwiLFxuICBcIk1vbnJvZVwiLFxuICBcIk1vbnNlcnJhdFwiLFxuICBcIk1vbnNlcnJhdGVcIixcbiAgXCJNb250YW5hXCIsXG4gIFwiTW9udGVcIixcbiAgXCJNb250eVwiLFxuICBcIk1vcmdhblwiLFxuICBcIk1vcmlhaFwiLFxuICBcIk1vcnJpc1wiLFxuICBcIk1vcnRpbWVyXCIsXG4gIFwiTW9ydG9uXCIsXG4gIFwiTW9zZVwiLFxuICBcIk1vc2VzXCIsXG4gIFwiTW9zaGVcIixcbiAgXCJNb3NzaWVcIixcbiAgXCJNb3plbGxcIixcbiAgXCJNb3plbGxlXCIsXG4gIFwiTXVoYW1tYWRcIixcbiAgXCJNdXJpZWxcIixcbiAgXCJNdXJsXCIsXG4gIFwiTXVycGh5XCIsXG4gIFwiTXVycmF5XCIsXG4gIFwiTXVzdGFmYVwiLFxuICBcIk15YVwiLFxuICBcIk15YWhcIixcbiAgXCJNeWxlbmVcIixcbiAgXCJNeWxlc1wiLFxuICBcIk15cmFcIixcbiAgXCJNeXJpYW1cIixcbiAgXCJNeXJsXCIsXG4gIFwiTXlybmFcIixcbiAgXCJNeXJvblwiLFxuICBcIk15cnRpY2VcIixcbiAgXCJNeXJ0aWVcIixcbiAgXCJNeXJ0aXNcIixcbiAgXCJNeXJ0bGVcIixcbiAgXCJOYWRpYVwiLFxuICBcIk5ha2lhXCIsXG4gIFwiTmFtZVwiLFxuICBcIk5hbm5pZVwiLFxuICBcIk5hb21pXCIsXG4gIFwiTmFvbWllXCIsXG4gIFwiTmFwb2xlb25cIixcbiAgXCJOYXJjaXNvXCIsXG4gIFwiTmFzaFwiLFxuICBcIk5hc2lyXCIsXG4gIFwiTmF0XCIsXG4gIFwiTmF0YWxpYVwiLFxuICBcIk5hdGFsaWVcIixcbiAgXCJOYXRhc2hhXCIsXG4gIFwiTmF0aGFuXCIsXG4gIFwiTmF0aGFuYWVsXCIsXG4gIFwiTmF0aGFuaWFsXCIsXG4gIFwiTmF0aGFuaWVsXCIsXG4gIFwiTmF0aGVuXCIsXG4gIFwiTmF5ZWxpXCIsXG4gIFwiTmVhbFwiLFxuICBcIk5lZFwiLFxuICBcIk5lZHJhXCIsXG4gIFwiTmVoYVwiLFxuICBcIk5laWxcIixcbiAgXCJOZWxkYVwiLFxuICBcIk5lbGxhXCIsXG4gIFwiTmVsbGVcIixcbiAgXCJOZWxsaWVcIixcbiAgXCJOZWxzXCIsXG4gIFwiTmVsc29uXCIsXG4gIFwiTmVvbWFcIixcbiAgXCJOZXN0b3JcIixcbiAgXCJOZXR0aWVcIixcbiAgXCJOZXZhXCIsXG4gIFwiTmV3ZWxsXCIsXG4gIFwiTmV3dG9uXCIsXG4gIFwiTmlhXCIsXG4gIFwiTmljaG9sYXNcIixcbiAgXCJOaWNob2xhdXNcIixcbiAgXCJOaWNob2xlXCIsXG4gIFwiTmlja1wiLFxuICBcIk5pY2tsYXVzXCIsXG4gIFwiTmlja29sYXNcIixcbiAgXCJOaWNvXCIsXG4gIFwiTmljb2xhXCIsXG4gIFwiTmljb2xhc1wiLFxuICBcIk5pY29sZVwiLFxuICBcIk5pY29sZXR0ZVwiLFxuICBcIk5pZ2VsXCIsXG4gIFwiTmlraXRhXCIsXG4gIFwiTmlra2lcIixcbiAgXCJOaWtrb1wiLFxuICBcIk5pa29cIixcbiAgXCJOaWtvbGFzXCIsXG4gIFwiTmlsc1wiLFxuICBcIk5pbmFcIixcbiAgXCJOb2FoXCIsXG4gIFwiTm9ibGVcIixcbiAgXCJOb2VcIixcbiAgXCJOb2VsXCIsXG4gIFwiTm9lbGlhXCIsXG4gIFwiTm9lbWlcIixcbiAgXCJOb2VtaWVcIixcbiAgXCJOb2VteVwiLFxuICBcIk5vbGFcIixcbiAgXCJOb2xhblwiLFxuICBcIk5vbmFcIixcbiAgXCJOb3JhXCIsXG4gIFwiTm9yYmVydFwiLFxuICBcIk5vcmJlcnRvXCIsXG4gIFwiTm9yZW5lXCIsXG4gIFwiTm9ybWFcIixcbiAgXCJOb3JyaXNcIixcbiAgXCJOb3J2YWxcIixcbiAgXCJOb3J3b29kXCIsXG4gIFwiTm92YVwiLFxuICBcIk5vdmVsbGFcIixcbiAgXCJOeWFcIixcbiAgXCJOeWFoXCIsXG4gIFwiTnlhc2lhXCIsXG4gIFwiT2JpZVwiLFxuICBcIk9jZWFuZVwiLFxuICBcIk9jaWVcIixcbiAgXCJPY3RhdmlhXCIsXG4gIFwiT2RhXCIsXG4gIFwiT2RlbGxcIixcbiAgXCJPZGVzc2FcIixcbiAgXCJPZGllXCIsXG4gIFwiT2ZlbGlhXCIsXG4gIFwiT2tleVwiLFxuICBcIk9sYVwiLFxuICBcIk9sYWZcIixcbiAgXCJPbGVcIixcbiAgXCJPbGVuXCIsXG4gIFwiT2xldGFcIixcbiAgXCJPbGdhXCIsXG4gIFwiT2xpblwiLFxuICBcIk9saXZlclwiLFxuICBcIk9sbGllXCIsXG4gIFwiT21hXCIsXG4gIFwiT21hcmlcIixcbiAgXCJPbWVyXCIsXG4gIFwiT25hXCIsXG4gIFwiT25pZVwiLFxuICBcIk9wYWxcIixcbiAgXCJPcGhlbGlhXCIsXG4gIFwiT3JhXCIsXG4gIFwiT3JhbFwiLFxuICBcIk9yYW5cIixcbiAgXCJPcmVuXCIsXG4gIFwiT3JpZVwiLFxuICBcIk9yaW5cIixcbiAgXCJPcmlvblwiLFxuICBcIk9ybGFuZFwiLFxuICBcIk9ybGFuZG9cIixcbiAgXCJPcmxvXCIsXG4gIFwiT3JwaGFcIixcbiAgXCJPcnJpblwiLFxuICBcIk9ydmFsXCIsXG4gIFwiT3J2aWxsZVwiLFxuICBcIk9zYmFsZG9cIixcbiAgXCJPc2Jvcm5lXCIsXG4gIFwiT3NjYXJcIixcbiAgXCJPc3ZhbGRvXCIsXG4gIFwiT3N3YWxkXCIsXG4gIFwiT3N3YWxkb1wiLFxuICBcIk90aGFcIixcbiAgXCJPdGhvXCIsXG4gIFwiT3RpbGlhXCIsXG4gIFwiT3Rpc1wiLFxuICBcIk90dGlsaWVcIixcbiAgXCJPdHRpc1wiLFxuICBcIk90dG9cIixcbiAgXCJPdmFcIixcbiAgXCJPd2VuXCIsXG4gIFwiT3plbGxhXCIsXG4gIFwiUGFibG9cIixcbiAgXCJQYWlnZVwiLFxuICBcIlBhbG1hXCIsXG4gIFwiUGFtZWxhXCIsXG4gIFwiUGFuc3lcIixcbiAgXCJQYW9sb1wiLFxuICBcIlBhcmlzXCIsXG4gIFwiUGFya2VyXCIsXG4gIFwiUGFzY2FsZVwiLFxuICBcIlBhc3F1YWxlXCIsXG4gIFwiUGF0XCIsXG4gIFwiUGF0aWVuY2VcIixcbiAgXCJQYXRyaWNpYVwiLFxuICBcIlBhdHJpY2tcIixcbiAgXCJQYXRzeVwiLFxuICBcIlBhdHRpZVwiLFxuICBcIlBhdWxcIixcbiAgXCJQYXVsYVwiLFxuICBcIlBhdWxpbmVcIixcbiAgXCJQYXh0b25cIixcbiAgXCJQYXl0b25cIixcbiAgXCJQZWFybFwiLFxuICBcIlBlYXJsaWVcIixcbiAgXCJQZWFybGluZVwiLFxuICBcIlBlZHJvXCIsXG4gIFwiUGVnZ2llXCIsXG4gIFwiUGVuZWxvcGVcIixcbiAgXCJQZXJjaXZhbFwiLFxuICBcIlBlcmN5XCIsXG4gIFwiUGVycnlcIixcbiAgXCJQZXRlXCIsXG4gIFwiUGV0ZXJcIixcbiAgXCJQZXRyYVwiLFxuICBcIlBleXRvblwiLFxuICBcIlBoaWxpcFwiLFxuICBcIlBob2ViZVwiLFxuICBcIlBoeWxsaXNcIixcbiAgXCJQaWVyY2VcIixcbiAgXCJQaWVycmVcIixcbiAgXCJQaWV0cm9cIixcbiAgXCJQaW5rXCIsXG4gIFwiUGlua2llXCIsXG4gIFwiUGlwZXJcIixcbiAgXCJQb2xseVwiLFxuICBcIlBvcnRlclwiLFxuICBcIlByZWNpb3VzXCIsXG4gIFwiUHJlc2xleVwiLFxuICBcIlByZXN0b25cIixcbiAgXCJQcmljZVwiLFxuICBcIlByaW5jZVwiLFxuICBcIlByaW5jZXNzXCIsXG4gIFwiUHJpc2NpbGxhXCIsXG4gIFwiUHJvdmlkZW5jaVwiLFxuICBcIlBydWRlbmNlXCIsXG4gIFwiUXVlZW5cIixcbiAgXCJRdWVlbmllXCIsXG4gIFwiUXVlbnRpblwiLFxuICBcIlF1aW5jeVwiLFxuICBcIlF1aW5uXCIsXG4gIFwiUXVpbnRlblwiLFxuICBcIlF1aW50b25cIixcbiAgXCJSYWNoYWVsXCIsXG4gIFwiUmFjaGVsXCIsXG4gIFwiUmFjaGVsbGVcIixcbiAgXCJSYWVcIixcbiAgXCJSYWVnYW5cIixcbiAgXCJSYWZhZWxcIixcbiAgXCJSYWZhZWxhXCIsXG4gIFwiUmFoZWVtXCIsXG4gIFwiUmFoc2FhblwiLFxuICBcIlJhaHVsXCIsXG4gIFwiUmFpbmFcIixcbiAgXCJSYWxlaWdoXCIsXG4gIFwiUmFscGhcIixcbiAgXCJSYW1pcm9cIixcbiAgXCJSYW1vblwiLFxuICBcIlJhbW9uYVwiLFxuICBcIlJhbmRhbFwiLFxuICBcIlJhbmRhbGxcIixcbiAgXCJSYW5kaVwiLFxuICBcIlJhbmR5XCIsXG4gIFwiUmFuc29tXCIsXG4gIFwiUmFvdWxcIixcbiAgXCJSYXBoYWVsXCIsXG4gIFwiUmFwaGFlbGxlXCIsXG4gIFwiUmFxdWVsXCIsXG4gIFwiUmFzaGFkXCIsXG4gIFwiUmFzaGF3blwiLFxuICBcIlJhc2hlZWRcIixcbiAgXCJSYXVsXCIsXG4gIFwiUmF2ZW5cIixcbiAgXCJSYXlcIixcbiAgXCJSYXltb25kXCIsXG4gIFwiUmF5bXVuZG9cIixcbiAgXCJSZWFnYW5cIixcbiAgXCJSZWFubmFcIixcbiAgXCJSZWJhXCIsXG4gIFwiUmViZWNhXCIsXG4gIFwiUmViZWNjYVwiLFxuICBcIlJlYmVrYVwiLFxuICBcIlJlYmVrYWhcIixcbiAgXCJSZWVjZVwiLFxuICBcIlJlZWRcIixcbiAgXCJSZWVzZVwiLFxuICBcIlJlZ2FuXCIsXG4gIFwiUmVnZ2llXCIsXG4gIFwiUmVnaW5hbGRcIixcbiAgXCJSZWlkXCIsXG4gIFwiUmVpbGx5XCIsXG4gIFwiUmVpbmFcIixcbiAgXCJSZWluaG9sZFwiLFxuICBcIlJlbWluZ3RvblwiLFxuICBcIlJlbmVcIixcbiAgXCJSZW5lZVwiLFxuICBcIlJlc3NpZVwiLFxuICBcIlJldGFcIixcbiAgXCJSZXRoYVwiLFxuICBcIlJldHRhXCIsXG4gIFwiUmV1YmVuXCIsXG4gIFwiUmV2YVwiLFxuICBcIlJleFwiLFxuICBcIlJleVwiLFxuICBcIlJleWVzXCIsXG4gIFwiUmV5bXVuZG9cIixcbiAgXCJSZXluYVwiLFxuICBcIlJleW5vbGRcIixcbiAgXCJSaGVhXCIsXG4gIFwiUmhldHRcIixcbiAgXCJSaGlhbm5hXCIsXG4gIFwiUmhpYW5ub25cIixcbiAgXCJSaG9kYVwiLFxuICBcIlJpY2FyZG9cIixcbiAgXCJSaWNoYXJkXCIsXG4gIFwiUmljaGllXCIsXG4gIFwiUmljaG1vbmRcIixcbiAgXCJSaWNrXCIsXG4gIFwiUmlja2V5XCIsXG4gIFwiUmlja2llXCIsXG4gIFwiUmlja3lcIixcbiAgXCJSaWNvXCIsXG4gIFwiUmlnb2JlcnRvXCIsXG4gIFwiUmlsZXlcIixcbiAgXCJSaXRhXCIsXG4gIFwiUml2ZXJcIixcbiAgXCJSb2JiXCIsXG4gIFwiUm9iYmllXCIsXG4gIFwiUm9iZXJ0XCIsXG4gIFwiUm9iZXJ0YVwiLFxuICBcIlJvYmVydG9cIixcbiAgXCJSb2JpblwiLFxuICBcIlJvYnluXCIsXG4gIFwiUm9jaW9cIixcbiAgXCJSb2NreVwiLFxuICBcIlJvZFwiLFxuICBcIlJvZGVyaWNrXCIsXG4gIFwiUm9kZ2VyXCIsXG4gIFwiUm9kb2xmb1wiLFxuICBcIlJvZHJpY2tcIixcbiAgXCJSb2RyaWdvXCIsXG4gIFwiUm9lbFwiLFxuICBcIlJvZ2VsaW9cIixcbiAgXCJSb2dlclwiLFxuICBcIlJvZ2Vyc1wiLFxuICBcIlJvbGFuZG9cIixcbiAgXCJSb2xsaW5cIixcbiAgXCJSb21hXCIsXG4gIFwiUm9tYWluZVwiLFxuICBcIlJvbWFuXCIsXG4gIFwiUm9uXCIsXG4gIFwiUm9uYWxkb1wiLFxuICBcIlJvbm55XCIsXG4gIFwiUm9vc2V2ZWx0XCIsXG4gIFwiUm9yeVwiLFxuICBcIlJvc2FcIixcbiAgXCJSb3NhbGVlXCIsXG4gIFwiUm9zYWxpYVwiLFxuICBcIlJvc2FsaW5kXCIsXG4gIFwiUm9zYWxpbmRhXCIsXG4gIFwiUm9zYWx5blwiLFxuICBcIlJvc2Ftb25kXCIsXG4gIFwiUm9zYW5uYVwiLFxuICBcIlJvc2FyaW9cIixcbiAgXCJSb3Njb2VcIixcbiAgXCJSb3NlXCIsXG4gIFwiUm9zZWxsYVwiLFxuICBcIlJvc2VseW5cIixcbiAgXCJSb3NlbWFyaWVcIixcbiAgXCJSb3NlbWFyeVwiLFxuICBcIlJvc2VuZG9cIixcbiAgXCJSb3NldHRhXCIsXG4gIFwiUm9zaWVcIixcbiAgXCJSb3NpbmFcIixcbiAgXCJSb3NseW5cIixcbiAgXCJSb3NzXCIsXG4gIFwiUm9zc2llXCIsXG4gIFwiUm93YW5cIixcbiAgXCJSb3dlbmFcIixcbiAgXCJSb3dsYW5kXCIsXG4gIFwiUm94YW5lXCIsXG4gIFwiUm94YW5uZVwiLFxuICBcIlJveVwiLFxuICBcIlJveWFsXCIsXG4gIFwiUm95Y2VcIixcbiAgXCJSb3plbGxhXCIsXG4gIFwiUnViZW5cIixcbiAgXCJSdWJpZVwiLFxuICBcIlJ1YnlcIixcbiAgXCJSdWJ5ZVwiLFxuICBcIlJ1ZG9scGhcIixcbiAgXCJSdWR5XCIsXG4gIFwiUnVwZXJ0XCIsXG4gIFwiUnVzc1wiLFxuICBcIlJ1c3NlbFwiLFxuICBcIlJ1c3NlbGxcIixcbiAgXCJSdXN0eVwiLFxuICBcIlJ1dGhcIixcbiAgXCJSdXRoZVwiLFxuICBcIlJ1dGhpZVwiLFxuICBcIlJ5YW5cIixcbiAgXCJSeWFublwiLFxuICBcIlJ5ZGVyXCIsXG4gIFwiUnlsYW5cIixcbiAgXCJSeWxlZVwiLFxuICBcIlJ5bGVpZ2hcIixcbiAgXCJSeWxleVwiLFxuICBcIlNhYmluYVwiLFxuICBcIlNhYnJpbmFcIixcbiAgXCJTYWJyeW5hXCIsXG4gIFwiU2FkaWVcIixcbiAgXCJTYWR5ZVwiLFxuICBcIlNhZ2VcIixcbiAgXCJTYWlnZVwiLFxuICBcIlNhbGxpZVwiLFxuICBcIlNhbGx5XCIsXG4gIFwiU2FsbWFcIixcbiAgXCJTYWx2YWRvclwiLFxuICBcIlNhbHZhdG9yZVwiLFxuICBcIlNhbVwiLFxuICBcIlNhbWFudGFcIixcbiAgXCJTYW1hbnRoYVwiLFxuICBcIlNhbWFyYVwiLFxuICBcIlNhbWlyXCIsXG4gIFwiU2FtbWllXCIsXG4gIFwiU2FtbXlcIixcbiAgXCJTYW1zb25cIixcbiAgXCJTYW5kcmFcIixcbiAgXCJTYW5kcmluZVwiLFxuICBcIlNhbmR5XCIsXG4gIFwiU2FuZm9yZFwiLFxuICBcIlNhbnRhXCIsXG4gIFwiU2FudGlhZ29cIixcbiAgXCJTYW50aW5hXCIsXG4gIFwiU2FudGlub1wiLFxuICBcIlNhbnRvc1wiLFxuICBcIlNhcmFoXCIsXG4gIFwiU2FyYWlcIixcbiAgXCJTYXJpbmFcIixcbiAgXCJTYXNoYVwiLFxuICBcIlNhdWxcIixcbiAgXCJTYXZhbmFoXCIsXG4gIFwiU2F2YW5uYVwiLFxuICBcIlNhdmFubmFoXCIsXG4gIFwiU2F2aW9uXCIsXG4gIFwiU2NhcmxldHRcIixcbiAgXCJTY2h1eWxlclwiLFxuICBcIlNjb3RcIixcbiAgXCJTY290dGllXCIsXG4gIFwiU2NvdHR5XCIsXG4gIFwiU2VhbXVzXCIsXG4gIFwiU2VhblwiLFxuICBcIlNlYmFzdGlhblwiLFxuICBcIlNlZHJpY2tcIixcbiAgXCJTZWxlbmFcIixcbiAgXCJTZWxpbmFcIixcbiAgXCJTZWxtZXJcIixcbiAgXCJTZXJlbmFcIixcbiAgXCJTZXJlbml0eVwiLFxuICBcIlNldGhcIixcbiAgXCJTaGFkXCIsXG4gIFwiU2hhaW5hXCIsXG4gIFwiU2hha2lyYVwiLFxuICBcIlNoYW5hXCIsXG4gIFwiU2hhbmVcIixcbiAgXCJTaGFuZWxcIixcbiAgXCJTaGFuZWxsZVwiLFxuICBcIlNoYW5pYVwiLFxuICBcIlNoYW5pZVwiLFxuICBcIlNoYW5peWFcIixcbiAgXCJTaGFubmFcIixcbiAgXCJTaGFubm9uXCIsXG4gIFwiU2hhbm55XCIsXG4gIFwiU2hhbm9uXCIsXG4gIFwiU2hhbnlcIixcbiAgXCJTaGFyb25cIixcbiAgXCJTaGF1blwiLFxuICBcIlNoYXduXCIsXG4gIFwiU2hhd25hXCIsXG4gIFwiU2hheWxlZVwiLFxuICBcIlNoYXluYVwiLFxuICBcIlNoYXluZVwiLFxuICBcIlNoZWFcIixcbiAgXCJTaGVpbGFcIixcbiAgXCJTaGVsZG9uXCIsXG4gIFwiU2hlbWFyXCIsXG4gIFwiU2hlcmlkYW5cIixcbiAgXCJTaGVybWFuXCIsXG4gIFwiU2hlcndvb2RcIixcbiAgXCJTaGlybGV5XCIsXG4gIFwiU2h5YW5uXCIsXG4gIFwiU2h5YW5uZVwiLFxuICBcIlNpYnlsXCIsXG4gIFwiU2lkXCIsXG4gIFwiU2lkbmV5XCIsXG4gIFwiU2llbm5hXCIsXG4gIFwiU2llcnJhXCIsXG4gIFwiU2lnbXVuZFwiLFxuICBcIlNpZ3JpZFwiLFxuICBcIlNpZ3VyZFwiLFxuICBcIlNpbGFzXCIsXG4gIFwiU2ltXCIsXG4gIFwiU2ltZW9uXCIsXG4gIFwiU2ltb25lXCIsXG4gIFwiU2luY2VyZVwiLFxuICBcIlNpc3RlclwiLFxuICBcIlNreWVcIixcbiAgXCJTa3lsYVwiLFxuICBcIlNreWxhclwiLFxuICBcIlNvZmlhXCIsXG4gIFwiU29sZWRhZFwiLFxuICBcIlNvbG9uXCIsXG4gIFwiU29uaWFcIixcbiAgXCJTb25ueVwiLFxuICBcIlNvbnlhXCIsXG4gIFwiU29waGlhXCIsXG4gIFwiU29waGllXCIsXG4gIFwiU3BlbmNlclwiLFxuICBcIlN0YWNleVwiLFxuICBcIlN0YWN5XCIsXG4gIFwiU3RhblwiLFxuICBcIlN0YW5mb3JkXCIsXG4gIFwiU3RhbmxleVwiLFxuICBcIlN0YW50b25cIixcbiAgXCJTdGVmYW5cIixcbiAgXCJTdGVmYW5pZVwiLFxuICBcIlN0ZWxsYVwiLFxuICBcIlN0ZXBoYW5cIixcbiAgXCJTdGVwaGFuaWFcIixcbiAgXCJTdGVwaGFuaWVcIixcbiAgXCJTdGVwaGFueVwiLFxuICBcIlN0ZXBoZW5cIixcbiAgXCJTdGVwaG9uXCIsXG4gIFwiU3RlcmxpbmdcIixcbiAgXCJTdGV2ZVwiLFxuICBcIlN0ZXZpZVwiLFxuICBcIlN0ZXdhcnRcIixcbiAgXCJTdG9uZVwiLFxuICBcIlN0dWFydFwiLFxuICBcIlN1bW1lclwiLFxuICBcIlN1bm55XCIsXG4gIFwiU3VzYW5cIixcbiAgXCJTdXNhbmFcIixcbiAgXCJTdXNhbm5hXCIsXG4gIFwiU3VzaWVcIixcbiAgXCJTdXphbm5lXCIsXG4gIFwiU3ZlblwiLFxuICBcIlN5YmxlXCIsXG4gIFwiU3lkbmVlXCIsXG4gIFwiU3lkbmV5XCIsXG4gIFwiU3lkbmlcIixcbiAgXCJTeWRuaWVcIixcbiAgXCJTeWx2YW5cIixcbiAgXCJTeWx2ZXN0ZXJcIixcbiAgXCJTeWx2aWFcIixcbiAgXCJUYWJpdGhhXCIsXG4gIFwiVGFkXCIsXG4gIFwiVGFsaWFcIixcbiAgXCJUYWxvblwiLFxuICBcIlRhbWFyYVwiLFxuICBcIlRhbWlhXCIsXG4gIFwiVGFuaWFcIixcbiAgXCJUYW5uZXJcIixcbiAgXCJUYW55YVwiLFxuICBcIlRhcmFcIixcbiAgXCJUYXJ5blwiLFxuICBcIlRhdGVcIixcbiAgXCJUYXR1bVwiLFxuICBcIlRhdHlhbmFcIixcbiAgXCJUYXVyZWFuXCIsXG4gIFwiVGF2YXJlc1wiLFxuICBcIlRheWFcIixcbiAgXCJUYXlsb3JcIixcbiAgXCJUZWFnYW5cIixcbiAgXCJUZWRcIixcbiAgXCJUZWxseVwiLFxuICBcIlRlcmVuY2VcIixcbiAgXCJUZXJlc2FcIixcbiAgXCJUZXJyYW5jZVwiLFxuICBcIlRlcnJlbGxcIixcbiAgXCJUZXJyZW5jZVwiLFxuICBcIlRlcnJpbGxcIixcbiAgXCJUZXJyeVwiLFxuICBcIlRlc3NcIixcbiAgXCJUZXNzaWVcIixcbiAgXCJUZXZpblwiLFxuICBcIlRoYWRcIixcbiAgXCJUaGFkZGV1c1wiLFxuICBcIlRoYWxpYVwiLFxuICBcIlRoZWFcIixcbiAgXCJUaGVsbWFcIixcbiAgXCJUaGVvXCIsXG4gIFwiVGhlb2RvcmFcIixcbiAgXCJUaGVvZG9yZVwiLFxuICBcIlRoZXJlc2FcIixcbiAgXCJUaGVyZXNlXCIsXG4gIFwiVGhlcmVzaWFcIixcbiAgXCJUaGVyb25cIixcbiAgXCJUaG9tYXNcIixcbiAgXCJUaG9yYVwiLFxuICBcIlRodXJtYW5cIixcbiAgXCJUaWFcIixcbiAgXCJUaWFuYVwiLFxuICBcIlRpYW5uYVwiLFxuICBcIlRpYXJhXCIsXG4gIFwiVGllcnJhXCIsXG4gIFwiVGlmZmFueVwiLFxuICBcIlRpbGxtYW5cIixcbiAgXCJUaW1tb3RoeVwiLFxuICBcIlRpbW15XCIsXG4gIFwiVGltb3RoeVwiLFxuICBcIlRpbmFcIixcbiAgXCJUaXRvXCIsXG4gIFwiVGl0dXNcIixcbiAgXCJUb2JpblwiLFxuICBcIlRvYnlcIixcbiAgXCJUb2RcIixcbiAgXCJUb21cIixcbiAgXCJUb21hc1wiLFxuICBcIlRvbWFzYVwiLFxuICBcIlRvbW1pZVwiLFxuICBcIlRvbmV5XCIsXG4gIFwiVG9uaVwiLFxuICBcIlRvbnlcIixcbiAgXCJUb3JleVwiLFxuICBcIlRvcnJhbmNlXCIsXG4gIFwiVG9ycmV5XCIsXG4gIFwiVG95XCIsXG4gIFwiVHJhY2VcIixcbiAgXCJUcmFjZXlcIixcbiAgXCJUcmFjeVwiLFxuICBcIlRyYXZpc1wiLFxuICBcIlRyYXZvblwiLFxuICBcIlRyZVwiLFxuICBcIlRyZW1haW5lXCIsXG4gIFwiVHJlbWF5bmVcIixcbiAgXCJUcmVudFwiLFxuICBcIlRyZW50b25cIixcbiAgXCJUcmVzc2FcIixcbiAgXCJUcmVzc2llXCIsXG4gIFwiVHJldmFcIixcbiAgXCJUcmV2ZXJcIixcbiAgXCJUcmV2aW9uXCIsXG4gIFwiVHJldm9yXCIsXG4gIFwiVHJleVwiLFxuICBcIlRyaW5pdHlcIixcbiAgXCJUcmlzaGFcIixcbiAgXCJUcmlzdGlhblwiLFxuICBcIlRyaXN0aW5cIixcbiAgXCJUcmlzdG9uXCIsXG4gIFwiVHJveVwiLFxuICBcIlRydWRpZVwiLFxuICBcIlRyeWNpYVwiLFxuICBcIlRyeXN0YW5cIixcbiAgXCJUdXJuZXJcIixcbiAgXCJUd2lsYVwiLFxuICBcIlR5bGVyXCIsXG4gIFwiVHlyYVwiLFxuICBcIlR5cmVlXCIsXG4gIFwiVHlyZWVrXCIsXG4gIFwiVHlyZWxcIixcbiAgXCJUeXJlbGxcIixcbiAgXCJUeXJlc2VcIixcbiAgXCJUeXJpcXVlXCIsXG4gIFwiVHlzaGF3blwiLFxuICBcIlR5c29uXCIsXG4gIFwiVWJhbGRvXCIsXG4gIFwiVWxpY2VzXCIsXG4gIFwiVWxpc2VzXCIsXG4gIFwiVW5hXCIsXG4gIFwiVW5pcXVlXCIsXG4gIFwiVXJiYW5cIixcbiAgXCJVcmlhaFwiLFxuICBcIlVyaWVsXCIsXG4gIFwiVXJzdWxhXCIsXG4gIFwiVmFkYVwiLFxuICBcIlZhbGVudGluXCIsXG4gIFwiVmFsZW50aW5hXCIsXG4gIFwiVmFsZW50aW5lXCIsXG4gIFwiVmFsZXJpZVwiLFxuICBcIlZhbGxpZVwiLFxuICBcIlZhblwiLFxuICBcIlZhbmNlXCIsXG4gIFwiVmFuZXNzYVwiLFxuICBcIlZhdWdoblwiLFxuICBcIlZlZGFcIixcbiAgXCJWZWxkYVwiLFxuICBcIlZlbGxhXCIsXG4gIFwiVmVsbWFcIixcbiAgXCJWZWx2YVwiLFxuICBcIlZlbmFcIixcbiAgXCJWZXJkYVwiLFxuICBcIlZlcmRpZVwiLFxuICBcIlZlcmdpZVwiLFxuICBcIlZlcmxhXCIsXG4gIFwiVmVybGllXCIsXG4gIFwiVmVyblwiLFxuICBcIlZlcm5hXCIsXG4gIFwiVmVybmVyXCIsXG4gIFwiVmVybmljZVwiLFxuICBcIlZlcm5pZVwiLFxuICBcIlZlcm5vblwiLFxuICBcIlZlcm9uYVwiLFxuICBcIlZlcm9uaWNhXCIsXG4gIFwiVmVzdGFcIixcbiAgXCJWaWNlbnRhXCIsXG4gIFwiVmljZW50ZVwiLFxuICBcIlZpY2tpZVwiLFxuICBcIlZpY2t5XCIsXG4gIFwiVmljdG9yXCIsXG4gIFwiVmljdG9yaWFcIixcbiAgXCJWaWRhXCIsXG4gIFwiVmlkYWxcIixcbiAgXCJWaWxtYVwiLFxuICBcIlZpbmNlXCIsXG4gIFwiVmluY2VudFwiLFxuICBcIlZpbmNlbnphXCIsXG4gIFwiVmluY2Vuem9cIixcbiAgXCJWaW5uaWVcIixcbiAgXCJWaW9sYVwiLFxuICBcIlZpb2xldFwiLFxuICBcIlZpb2xldHRlXCIsXG4gIFwiVmlyZ2llXCIsXG4gIFwiVmlyZ2lsXCIsXG4gIFwiVmlyZ2luaWFcIixcbiAgXCJWaXJnaW5pZVwiLFxuICBcIlZpdGFcIixcbiAgXCJWaXRvXCIsXG4gIFwiVml2YVwiLFxuICBcIlZpdmlhblwiLFxuICBcIlZpdmlhbmVcIixcbiAgXCJWaXZpYW5uZVwiLFxuICBcIlZpdmllblwiLFxuICBcIlZpdmllbm5lXCIsXG4gIFwiVmxhZGltaXJcIixcbiAgXCJXYWRlXCIsXG4gIFwiV2Fpbm9cIixcbiAgXCJXYWxkb1wiLFxuICBcIldhbGtlclwiLFxuICBcIldhbGxhY2VcIixcbiAgXCJXYWx0ZXJcIixcbiAgXCJXYWx0b25cIixcbiAgXCJXYW5kYVwiLFxuICBcIldhcmRcIixcbiAgXCJXYXJyZW5cIixcbiAgXCJXYXRzb25cIixcbiAgXCJXYXZhXCIsXG4gIFwiV2F5bG9uXCIsXG4gIFwiV2F5bmVcIixcbiAgXCJXZWJzdGVyXCIsXG4gIFwiV2VsZG9uXCIsXG4gIFwiV2VsbGluZ3RvblwiLFxuICBcIldlbmRlbGxcIixcbiAgXCJXZW5keVwiLFxuICBcIldlcm5lclwiLFxuICBcIldlc3RsZXlcIixcbiAgXCJXZXN0b25cIixcbiAgXCJXaGl0bmV5XCIsXG4gIFwiV2lsYmVyXCIsXG4gIFwiV2lsYmVydFwiLFxuICBcIldpbGJ1cm5cIixcbiAgXCJXaWxleVwiLFxuICBcIldpbGZvcmRcIixcbiAgXCJXaWxmcmVkXCIsXG4gIFwiV2lsZnJlZG9cIixcbiAgXCJXaWxmcmlkXCIsXG4gIFwiV2lsaGVsbVwiLFxuICBcIldpbGhlbG1pbmVcIixcbiAgXCJXaWxsXCIsXG4gIFwiV2lsbGFcIixcbiAgXCJXaWxsYXJkXCIsXG4gIFwiV2lsbGlhbVwiLFxuICBcIldpbGxpZVwiLFxuICBcIldpbGxpc1wiLFxuICBcIldpbGxvd1wiLFxuICBcIldpbGx5XCIsXG4gIFwiV2lsbWFcIixcbiAgXCJXaWxtZXJcIixcbiAgXCJXaWxzb25cIixcbiAgXCJXaWx0b25cIixcbiAgXCJXaW5maWVsZFwiLFxuICBcIldpbmlmcmVkXCIsXG4gIFwiV2lubmlmcmVkXCIsXG4gIFwiV2lub25hXCIsXG4gIFwiV2luc3RvblwiLFxuICBcIldvb2Ryb3dcIixcbiAgXCJXeWF0dFwiLFxuICBcIld5bWFuXCIsXG4gIFwiWGFuZGVyXCIsXG4gIFwiWGF2aWVyXCIsXG4gIFwiWHphdmllclwiLFxuICBcIllhZGlyYVwiLFxuICBcIllhc21lZW5cIixcbiAgXCJZYXNtaW5cIixcbiAgXCJZYXNtaW5lXCIsXG4gIFwiWWF6bWluXCIsXG4gIFwiWWVzZW5pYVwiLFxuICBcIlllc3NlbmlhXCIsXG4gIFwiWW9sYW5kYVwiLFxuICBcIllvc2hpa29cIixcbiAgXCJZdmV0dGVcIixcbiAgXCJZdm9ubmVcIixcbiAgXCJaYWNoYXJpYWhcIixcbiAgXCJaYWNoYXJ5XCIsXG4gIFwiWmFjaGVyeVwiLFxuICBcIlphY2tcIixcbiAgXCJaYWNrYXJ5XCIsXG4gIFwiWmFja2VyeVwiLFxuICBcIlpha2FyeVwiLFxuICBcIlphbmRlclwiLFxuICBcIlphbmVcIixcbiAgXCJaYXJpYVwiLFxuICBcIlplY2hhcmlhaFwiLFxuICBcIlplbGRhXCIsXG4gIFwiWmVsbGFcIixcbiAgXCJaZWxtYVwiLFxuICBcIlplbmFcIixcbiAgXCJaZXR0YVwiLFxuICBcIlppb25cIixcbiAgXCJaaXRhXCIsXG4gIFwiWm9lXCIsXG4gIFwiWm9leVwiLFxuICBcIlpvaWVcIixcbiAgXCJab2lsYVwiLFxuICBcIlpvbGFcIixcbiAgXCJab3JhXCIsXG4gIFwiWnVsYVwiXG5dO1xuIiwidmFyIG5hbWUgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gbmFtZTtcbm5hbWUuZmlyc3RfbmFtZSA9IHJlcXVpcmUoXCIuL2ZpcnN0X25hbWVcIik7XG5uYW1lLmxhc3RfbmFtZSA9IHJlcXVpcmUoXCIuL2xhc3RfbmFtZVwiKTtcbm5hbWUucHJlZml4ID0gcmVxdWlyZShcIi4vcHJlZml4XCIpO1xubmFtZS5zdWZmaXggPSByZXF1aXJlKFwiLi9zdWZmaXhcIik7XG5uYW1lLnRpdGxlID0gcmVxdWlyZShcIi4vdGl0bGVcIik7XG5uYW1lLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBYmJvdHRcIixcbiAgXCJBYmVybmF0aHlcIixcbiAgXCJBYnNoaXJlXCIsXG4gIFwiQWRhbXNcIixcbiAgXCJBbHRlbndlcnRoXCIsXG4gIFwiQW5kZXJzb25cIixcbiAgXCJBbmt1bmRpbmdcIixcbiAgXCJBcm1zdHJvbmdcIixcbiAgXCJBdWVyXCIsXG4gIFwiQXVmZGVyaGFyXCIsXG4gIFwiQmFocmluZ2VyXCIsXG4gIFwiQmFpbGV5XCIsXG4gIFwiQmFsaXN0cmVyaVwiLFxuICBcIkJhcnJvd3NcIixcbiAgXCJCYXJ0ZWxsXCIsXG4gIFwiQmFydG9sZXR0aVwiLFxuICBcIkJhcnRvblwiLFxuICBcIkJhc2hpcmlhblwiLFxuICBcIkJhdHpcIixcbiAgXCJCYXVjaFwiLFxuICBcIkJhdW1iYWNoXCIsXG4gIFwiQmF5ZXJcIixcbiAgXCJCZWFoYW5cIixcbiAgXCJCZWF0dHlcIixcbiAgXCJCZWNodGVsYXJcIixcbiAgXCJCZWNrZXJcIixcbiAgXCJCZWRuYXJcIixcbiAgXCJCZWVyXCIsXG4gIFwiQmVpZXJcIixcbiAgXCJCZXJnZVwiLFxuICBcIkJlcmduYXVtXCIsXG4gIFwiQmVyZ3N0cm9tXCIsXG4gIFwiQmVybmhhcmRcIixcbiAgXCJCZXJuaWVyXCIsXG4gIFwiQmluc1wiLFxuICBcIkJsYW5kYVwiLFxuICBcIkJsaWNrXCIsXG4gIFwiQmxvY2tcIixcbiAgXCJCb2RlXCIsXG4gIFwiQm9laG1cIixcbiAgXCJCb2dhblwiLFxuICBcIkJvZ2lzaWNoXCIsXG4gIFwiQm9yZXJcIixcbiAgXCJCb3Njb1wiLFxuICBcIkJvdHNmb3JkXCIsXG4gIFwiQm95ZXJcIixcbiAgXCJCb3lsZVwiLFxuICBcIkJyYWR0a2VcIixcbiAgXCJCcmFrdXNcIixcbiAgXCJCcmF1blwiLFxuICBcIkJyZWl0ZW5iZXJnXCIsXG4gIFwiQnJla2tlXCIsXG4gIFwiQnJvd25cIixcbiAgXCJCcnVlblwiLFxuICBcIkJ1Y2tyaWRnZVwiLFxuICBcIkNhcnJvbGxcIixcbiAgXCJDYXJ0ZXJcIixcbiAgXCJDYXJ0d3JpZ2h0XCIsXG4gIFwiQ2FzcGVyXCIsXG4gIFwiQ2Fzc2luXCIsXG4gIFwiQ2hhbXBsaW5cIixcbiAgXCJDaHJpc3RpYW5zZW5cIixcbiAgXCJDb2xlXCIsXG4gIFwiQ29sbGllclwiLFxuICBcIkNvbGxpbnNcIixcbiAgXCJDb25uXCIsXG4gIFwiQ29ubmVsbHlcIixcbiAgXCJDb25yb3lcIixcbiAgXCJDb25zaWRpbmVcIixcbiAgXCJDb3JrZXJ5XCIsXG4gIFwiQ29ybWllclwiLFxuICBcIkNvcndpblwiLFxuICBcIkNyZW1pblwiLFxuICBcIkNyaXN0XCIsXG4gIFwiQ3JvbmFcIixcbiAgXCJDcm9uaW5cIixcbiAgXCJDcm9va3NcIixcbiAgXCJDcnVpY2tzaGFua1wiLFxuICBcIkN1bW1lcmF0YVwiLFxuICBcIkN1bW1pbmdzXCIsXG4gIFwiRGFjaFwiLFxuICBcIkQnQW1vcmVcIixcbiAgXCJEYW5pZWxcIixcbiAgXCJEYXJlXCIsXG4gIFwiRGF1Z2hlcnR5XCIsXG4gIFwiRGF2aXNcIixcbiAgXCJEZWNrb3dcIixcbiAgXCJEZW5lc2lrXCIsXG4gIFwiRGliYmVydFwiLFxuICBcIkRpY2tlbnNcIixcbiAgXCJEaWNraVwiLFxuICBcIkRpY2tpbnNvblwiLFxuICBcIkRpZXRyaWNoXCIsXG4gIFwiRG9ubmVsbHlcIixcbiAgXCJEb29sZXlcIixcbiAgXCJEb3VnbGFzXCIsXG4gIFwiRG95bGVcIixcbiAgXCJEdUJ1cXVlXCIsXG4gIFwiRHVyZ2FuXCIsXG4gIFwiRWJlcnRcIixcbiAgXCJFZmZlcnR6XCIsXG4gIFwiRWljaG1hbm5cIixcbiAgXCJFbWFyZFwiLFxuICBcIkVtbWVyaWNoXCIsXG4gIFwiRXJkbWFuXCIsXG4gIFwiRXJuc2VyXCIsXG4gIFwiRmFkZWxcIixcbiAgXCJGYWhleVwiLFxuICBcIkZhcnJlbGxcIixcbiAgXCJGYXlcIixcbiAgXCJGZWVuZXlcIixcbiAgXCJGZWVzdFwiLFxuICBcIkZlaWxcIixcbiAgXCJGZXJyeVwiLFxuICBcIkZpc2hlclwiLFxuICBcIkZsYXRsZXlcIixcbiAgXCJGcmFtaVwiLFxuICBcIkZyYW5lY2tpXCIsXG4gIFwiRnJpZXNlblwiLFxuICBcIkZyaXRzY2hcIixcbiAgXCJGdW5rXCIsXG4gIFwiR2F5bG9yZFwiLFxuICBcIkdlcmhvbGRcIixcbiAgXCJHZXJsYWNoXCIsXG4gIFwiR2lic29uXCIsXG4gIFwiR2lzbGFzb25cIixcbiAgXCJHbGVhc29uXCIsXG4gIFwiR2xlaWNobmVyXCIsXG4gIFwiR2xvdmVyXCIsXG4gIFwiR29sZG5lclwiLFxuICBcIkdvb2R3aW5cIixcbiAgXCJHb3JjemFueVwiLFxuICBcIkdvdHRsaWViXCIsXG4gIFwiR295ZXR0ZVwiLFxuICBcIkdyYWR5XCIsXG4gIFwiR3JhaGFtXCIsXG4gIFwiR3JhbnRcIixcbiAgXCJHcmVlblwiLFxuICBcIkdyZWVuZmVsZGVyXCIsXG4gIFwiR3JlZW5ob2x0XCIsXG4gIFwiR3JpbWVzXCIsXG4gIFwiR3VsZ293c2tpXCIsXG4gIFwiR3VzaWtvd3NraVwiLFxuICBcIkd1dGtvd3NraVwiLFxuICBcIkd1dG1hbm5cIixcbiAgXCJIYWFnXCIsXG4gIFwiSGFja2V0dFwiLFxuICBcIkhhZ2VuZXNcIixcbiAgXCJIYWhuXCIsXG4gIFwiSGFsZXlcIixcbiAgXCJIYWx2b3Jzb25cIixcbiAgXCJIYW1pbGxcIixcbiAgXCJIYW1tZXNcIixcbiAgXCJIYW5kXCIsXG4gIFwiSGFuZVwiLFxuICBcIkhhbnNlblwiLFxuICBcIkhhcmJlclwiLFxuICBcIkhhcnJpc1wiLFxuICBcIkhhcnRtYW5uXCIsXG4gIFwiSGFydmV5XCIsXG4gIFwiSGF1Y2tcIixcbiAgXCJIYXllc1wiLFxuICBcIkhlYW5leVwiLFxuICBcIkhlYXRoY290ZVwiLFxuICBcIkhlZ21hbm5cIixcbiAgXCJIZWlkZW5yZWljaFwiLFxuICBcIkhlbGxlclwiLFxuICBcIkhlcm1hblwiLFxuICBcIkhlcm1hbm5cIixcbiAgXCJIZXJtaXN0b25cIixcbiAgXCJIZXJ6b2dcIixcbiAgXCJIZXNzZWxcIixcbiAgXCJIZXR0aW5nZXJcIixcbiAgXCJIaWNrbGVcIixcbiAgXCJIaWxsbFwiLFxuICBcIkhpbGxzXCIsXG4gIFwiSGlscGVydFwiLFxuICBcIkhpbnR6XCIsXG4gIFwiSGlydGhlXCIsXG4gIFwiSG9ka2lld2ljelwiLFxuICBcIkhvZWdlclwiLFxuICBcIkhvbWVuaWNrXCIsXG4gIFwiSG9wcGVcIixcbiAgXCJIb3dlXCIsXG4gIFwiSG93ZWxsXCIsXG4gIFwiSHVkc29uXCIsXG4gIFwiSHVlbFwiLFxuICBcIkh1ZWxzXCIsXG4gIFwiSHlhdHRcIixcbiAgXCJKYWNvYmlcIixcbiAgXCJKYWNvYnNcIixcbiAgXCJKYWNvYnNvblwiLFxuICBcIkpha3Vib3dza2lcIixcbiAgXCJKYXNrb2xza2lcIixcbiAgXCJKYXN0XCIsXG4gIFwiSmVua2luc1wiLFxuICBcIkplcmRlXCIsXG4gIFwiSm9obnNcIixcbiAgXCJKb2huc29uXCIsXG4gIFwiSm9obnN0b25cIixcbiAgXCJKb25lc1wiLFxuICBcIkthc3N1bGtlXCIsXG4gIFwiS2F1dHplclwiLFxuICBcIktlZWJsZXJcIixcbiAgXCJLZWVsaW5nXCIsXG4gIFwiS2VtbWVyXCIsXG4gIFwiS2VybHVrZVwiLFxuICBcIktlcnR6bWFublwiLFxuICBcIktlc3NsZXJcIixcbiAgXCJLaWVoblwiLFxuICBcIktpaG5cIixcbiAgXCJLaWxiYWNrXCIsXG4gIFwiS2luZ1wiLFxuICBcIktpcmxpblwiLFxuICBcIktsZWluXCIsXG4gIFwiS2xpbmdcIixcbiAgXCJLbG9ja29cIixcbiAgXCJLb2NoXCIsXG4gIFwiS29lbHBpblwiLFxuICBcIktvZXBwXCIsXG4gIFwiS29obGVyXCIsXG4gIFwiS29ub3BlbHNraVwiLFxuICBcIktvc3NcIixcbiAgXCJLb3ZhY2VrXCIsXG4gIFwiS296ZXlcIixcbiAgXCJLcmFqY2lrXCIsXG4gIFwiS3JlaWdlclwiLFxuICBcIktyaXNcIixcbiAgXCJLc2hsZXJpblwiLFxuICBcIkt1YlwiLFxuICBcIkt1aGljXCIsXG4gIFwiS3VobG1hblwiLFxuICBcIkt1aG5cIixcbiAgXCJLdWxhc1wiLFxuICBcIkt1bmRlXCIsXG4gIFwiS3VuemVcIixcbiAgXCJLdXBoYWxcIixcbiAgXCJLdXRjaFwiLFxuICBcIkt1dmFsaXNcIixcbiAgXCJMYWJhZGllXCIsXG4gIFwiTGFraW5cIixcbiAgXCJMYW5nXCIsXG4gIFwiTGFuZ29zaFwiLFxuICBcIkxhbmd3b3J0aFwiLFxuICBcIkxhcmtpblwiLFxuICBcIkxhcnNvblwiLFxuICBcIkxlYW5ub25cIixcbiAgXCJMZWJzYWNrXCIsXG4gIFwiTGVkbmVyXCIsXG4gIFwiTGVmZmxlclwiLFxuICBcIkxlZ3Jvc1wiLFxuICBcIkxlaG5lclwiLFxuICBcIkxlbWtlXCIsXG4gIFwiTGVzY2hcIixcbiAgXCJMZXVzY2hrZVwiLFxuICBcIkxpbmRcIixcbiAgXCJMaW5kZ3JlblwiLFxuICBcIkxpdHRlbFwiLFxuICBcIkxpdHRsZVwiLFxuICBcIkxvY2ttYW5cIixcbiAgXCJMb3dlXCIsXG4gIFwiTHVib3dpdHpcIixcbiAgXCJMdWVpbHdpdHpcIixcbiAgXCJMdWV0dGdlblwiLFxuICBcIkx5bmNoXCIsXG4gIFwiTWFjZWprb3ZpY1wiLFxuICBcIk1hY0d5dmVyXCIsXG4gIFwiTWFnZ2lvXCIsXG4gIFwiTWFublwiLFxuICBcIk1hbnRlXCIsXG4gIFwiTWFya3NcIixcbiAgXCJNYXJxdWFyZHRcIixcbiAgXCJNYXJ2aW5cIixcbiAgXCJNYXllclwiLFxuICBcIk1heWVydFwiLFxuICBcIk1jQ2x1cmVcIixcbiAgXCJNY0N1bGxvdWdoXCIsXG4gIFwiTWNEZXJtb3R0XCIsXG4gIFwiTWNHbHlublwiLFxuICBcIk1jS2VuemllXCIsXG4gIFwiTWNMYXVnaGxpblwiLFxuICBcIk1lZGh1cnN0XCIsXG4gIFwiTWVydHpcIixcbiAgXCJNZXR6XCIsXG4gIFwiTWlsbGVyXCIsXG4gIFwiTWlsbHNcIixcbiAgXCJNaXRjaGVsbFwiLFxuICBcIk1vZW5cIixcbiAgXCJNb2hyXCIsXG4gIFwiTW9uYWhhblwiLFxuICBcIk1vb3JlXCIsXG4gIFwiTW9yYXJcIixcbiAgXCJNb3Jpc3NldHRlXCIsXG4gIFwiTW9zY2lza2lcIixcbiAgXCJNcmF6XCIsXG4gIFwiTXVlbGxlclwiLFxuICBcIk11bGxlclwiLFxuICBcIk11cmF6aWtcIixcbiAgXCJNdXJwaHlcIixcbiAgXCJNdXJyYXlcIixcbiAgXCJOYWRlclwiLFxuICBcIk5pY29sYXNcIixcbiAgXCJOaWVub3dcIixcbiAgXCJOaWtvbGF1c1wiLFxuICBcIk5pdHpzY2hlXCIsXG4gIFwiTm9sYW5cIixcbiAgXCJPYmVyYnJ1bm5lclwiLFxuICBcIk8nQ29ubmVsbFwiLFxuICBcIk8nQ29ubmVyXCIsXG4gIFwiTydIYXJhXCIsXG4gIFwiTydLZWVmZVwiLFxuICBcIk8nS29uXCIsXG4gIFwiT2t1bmV2YVwiLFxuICBcIk9sc29uXCIsXG4gIFwiT25kcmlja2FcIixcbiAgXCJPJ1JlaWxseVwiLFxuICBcIk9yblwiLFxuICBcIk9ydGl6XCIsXG4gIFwiT3NpbnNraVwiLFxuICBcIlBhY29jaGFcIixcbiAgXCJQYWRiZXJnXCIsXG4gIFwiUGFnYWNcIixcbiAgXCJQYXJpc2lhblwiLFxuICBcIlBhcmtlclwiLFxuICBcIlBhdWNla1wiLFxuICBcIlBmYW5uZXJzdGlsbFwiLFxuICBcIlBmZWZmZXJcIixcbiAgXCJQb2xsaWNoXCIsXG4gIFwiUG91cm9zXCIsXG4gIFwiUG93bG93c2tpXCIsXG4gIFwiUHJlZG92aWNcIixcbiAgXCJQcmljZVwiLFxuICBcIlByb2hhc2thXCIsXG4gIFwiUHJvc2FjY29cIixcbiAgXCJQdXJkeVwiLFxuICBcIlF1aWdsZXlcIixcbiAgXCJRdWl0em9uXCIsXG4gIFwiUmF0aFwiLFxuICBcIlJhdGtlXCIsXG4gIFwiUmF1XCIsXG4gIFwiUmF5bm9yXCIsXG4gIFwiUmVpY2hlbFwiLFxuICBcIlJlaWNoZXJ0XCIsXG4gIFwiUmVpbGx5XCIsXG4gIFwiUmVpbmdlclwiLFxuICBcIlJlbXBlbFwiLFxuICBcIlJlbm5lclwiLFxuICBcIlJleW5vbGRzXCIsXG4gIFwiUmljZVwiLFxuICBcIlJpcHBpblwiLFxuICBcIlJpdGNoaWVcIixcbiAgXCJSb2JlbFwiLFxuICBcIlJvYmVydHNcIixcbiAgXCJSb2RyaWd1ZXpcIixcbiAgXCJSb2dhaG5cIixcbiAgXCJSb2hhblwiLFxuICBcIlJvbGZzb25cIixcbiAgXCJSb21hZ3VlcmFcIixcbiAgXCJSb29iXCIsXG4gIFwiUm9zZW5iYXVtXCIsXG4gIFwiUm93ZVwiLFxuICBcIlJ1ZWNrZXJcIixcbiAgXCJSdW5vbGZzZG90dGlyXCIsXG4gIFwiUnVub2xmc3NvblwiLFxuICBcIlJ1bnRlXCIsXG4gIFwiUnVzc2VsXCIsXG4gIFwiUnV0aGVyZm9yZFwiLFxuICBcIlJ5YW5cIixcbiAgXCJTYW5mb3JkXCIsXG4gIFwiU2F0dGVyZmllbGRcIixcbiAgXCJTYXVlclwiLFxuICBcIlNhd2F5blwiLFxuICBcIlNjaGFkZW5cIixcbiAgXCJTY2hhZWZlclwiLFxuICBcIlNjaGFtYmVyZ2VyXCIsXG4gIFwiU2NoaWxsZXJcIixcbiAgXCJTY2hpbW1lbFwiLFxuICBcIlNjaGlubmVyXCIsXG4gIFwiU2NobWVsZXJcIixcbiAgXCJTY2htaWR0XCIsXG4gIFwiU2NobWl0dFwiLFxuICBcIlNjaG5laWRlclwiLFxuICBcIlNjaG9lblwiLFxuICBcIlNjaG93YWx0ZXJcIixcbiAgXCJTY2hyb2VkZXJcIixcbiAgXCJTY2h1bGlzdFwiLFxuICBcIlNjaHVsdHpcIixcbiAgXCJTY2h1bW1cIixcbiAgXCJTY2h1cHBlXCIsXG4gIFwiU2NodXN0ZXJcIixcbiAgXCJTZW5nZXJcIixcbiAgXCJTaGFuYWhhblwiLFxuICBcIlNoaWVsZHNcIixcbiAgXCJTaW1vbmlzXCIsXG4gIFwiU2lwZXNcIixcbiAgXCJTa2lsZXNcIixcbiAgXCJTbWl0aFwiLFxuICBcIlNtaXRoYW1cIixcbiAgXCJTcGVuY2VyXCIsXG4gIFwiU3BpbmthXCIsXG4gIFwiU3BvcmVyXCIsXG4gIFwiU3RhbW1cIixcbiAgXCJTdGFudG9uXCIsXG4gIFwiU3RhcmtcIixcbiAgXCJTdGVoclwiLFxuICBcIlN0ZXViZXJcIixcbiAgXCJTdGllZGVtYW5uXCIsXG4gIFwiU3Rva2VzXCIsXG4gIFwiU3RvbHRlbmJlcmdcIixcbiAgXCJTdHJhY2tlXCIsXG4gIFwiU3RyZWljaFwiLFxuICBcIlN0cm9tYW5cIixcbiAgXCJTdHJvc2luXCIsXG4gIFwiU3dhbmlhd3NraVwiLFxuICBcIlN3aWZ0XCIsXG4gIFwiVGVycnlcIixcbiAgXCJUaGllbFwiLFxuICBcIlRob21wc29uXCIsXG4gIFwiVGlsbG1hblwiLFxuICBcIlRvcnBcIixcbiAgXCJUb3JwaHlcIixcbiAgXCJUb3duZVwiLFxuICBcIlRveVwiLFxuICBcIlRyYW50b3dcIixcbiAgXCJUcmVtYmxheVwiLFxuICBcIlRyZXV0ZWxcIixcbiAgXCJUcm9tcFwiLFxuICBcIlR1cmNvdHRlXCIsXG4gIFwiVHVybmVyXCIsXG4gIFwiVWxscmljaFwiLFxuICBcIlVwdG9uXCIsXG4gIFwiVmFuZGVydm9ydFwiLFxuICBcIlZldW1cIixcbiAgXCJWb2xrbWFuXCIsXG4gIFwiVm9uXCIsXG4gIFwiVm9uUnVlZGVuXCIsXG4gIFwiV2FlbGNoaVwiLFxuICBcIldhbGtlclwiLFxuICBcIldhbHNoXCIsXG4gIFwiV2FsdGVyXCIsXG4gIFwiV2FyZFwiLFxuICBcIldhdGVyc1wiLFxuICBcIldhdHNpY2FcIixcbiAgXCJXZWJlclwiLFxuICBcIldlaG5lclwiLFxuICBcIldlaW1hbm5cIixcbiAgXCJXZWlzc25hdFwiLFxuICBcIldlbGNoXCIsXG4gIFwiV2VzdFwiLFxuICBcIldoaXRlXCIsXG4gIFwiV2llZ2FuZFwiLFxuICBcIldpbGRlcm1hblwiLFxuICBcIldpbGtpbnNvblwiLFxuICBcIldpbGxcIixcbiAgXCJXaWxsaWFtc29uXCIsXG4gIFwiV2lsbG1zXCIsXG4gIFwiV2luZGxlclwiLFxuICBcIldpbnRoZWlzZXJcIixcbiAgXCJXaXNva3lcIixcbiAgXCJXaXNvemtcIixcbiAgXCJXaXR0aW5nXCIsXG4gIFwiV2l6YVwiLFxuICBcIldvbGZcIixcbiAgXCJXb2xmZlwiLFxuICBcIld1Y2tlcnRcIixcbiAgXCJXdW5zY2hcIixcbiAgXCJXeW1hblwiLFxuICBcIllvc3RcIixcbiAgXCJZdW5kdFwiLFxuICBcIlpib25jYWtcIixcbiAgXCJaZW1sYWtcIixcbiAgXCJaaWVtYW5uXCIsXG4gIFwiWmllbWVcIixcbiAgXCJadWxhdWZcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3twcmVmaXh9ICN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX0gI3tzdWZmaXh9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiTXIuXCIsXG4gIFwiTXJzLlwiLFxuICBcIk1zLlwiLFxuICBcIk1pc3NcIixcbiAgXCJEci5cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiSnIuXCIsXG4gIFwiU3IuXCIsXG4gIFwiSVwiLFxuICBcIklJXCIsXG4gIFwiSUlJXCIsXG4gIFwiSVZcIixcbiAgXCJWXCIsXG4gIFwiTURcIixcbiAgXCJERFNcIixcbiAgXCJQaERcIixcbiAgXCJEVk1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiZGVzY3JpcHRvclwiOiBbXG4gICAgXCJMZWFkXCIsXG4gICAgXCJTZW5pb3JcIixcbiAgICBcIkRpcmVjdFwiLFxuICAgIFwiQ29ycG9yYXRlXCIsXG4gICAgXCJEeW5hbWljXCIsXG4gICAgXCJGdXR1cmVcIixcbiAgICBcIlByb2R1Y3RcIixcbiAgICBcIk5hdGlvbmFsXCIsXG4gICAgXCJSZWdpb25hbFwiLFxuICAgIFwiRGlzdHJpY3RcIixcbiAgICBcIkNlbnRyYWxcIixcbiAgICBcIkdsb2JhbFwiLFxuICAgIFwiQ3VzdG9tZXJcIixcbiAgICBcIkludmVzdG9yXCIsXG4gICAgXCJEeW5hbWljXCIsXG4gICAgXCJJbnRlcm5hdGlvbmFsXCIsXG4gICAgXCJMZWdhY3lcIixcbiAgICBcIkZvcndhcmRcIixcbiAgICBcIkludGVybmFsXCIsXG4gICAgXCJIdW1hblwiLFxuICAgIFwiQ2hpZWZcIixcbiAgICBcIlByaW5jaXBhbFwiXG4gIF0sXG4gIFwibGV2ZWxcIjogW1xuICAgIFwiU29sdXRpb25zXCIsXG4gICAgXCJQcm9ncmFtXCIsXG4gICAgXCJCcmFuZFwiLFxuICAgIFwiU2VjdXJpdHlcIixcbiAgICBcIlJlc2VhcmNoXCIsXG4gICAgXCJNYXJrZXRpbmdcIixcbiAgICBcIkRpcmVjdGl2ZXNcIixcbiAgICBcIkltcGxlbWVudGF0aW9uXCIsXG4gICAgXCJJbnRlZ3JhdGlvblwiLFxuICAgIFwiRnVuY3Rpb25hbGl0eVwiLFxuICAgIFwiUmVzcG9uc2VcIixcbiAgICBcIlBhcmFkaWdtXCIsXG4gICAgXCJUYWN0aWNzXCIsXG4gICAgXCJJZGVudGl0eVwiLFxuICAgIFwiTWFya2V0c1wiLFxuICAgIFwiR3JvdXBcIixcbiAgICBcIkRpdmlzaW9uXCIsXG4gICAgXCJBcHBsaWNhdGlvbnNcIixcbiAgICBcIk9wdGltaXphdGlvblwiLFxuICAgIFwiT3BlcmF0aW9uc1wiLFxuICAgIFwiSW5mcmFzdHJ1Y3R1cmVcIixcbiAgICBcIkludHJhbmV0XCIsXG4gICAgXCJDb21tdW5pY2F0aW9uc1wiLFxuICAgIFwiV2ViXCIsXG4gICAgXCJCcmFuZGluZ1wiLFxuICAgIFwiUXVhbGl0eVwiLFxuICAgIFwiQXNzdXJhbmNlXCIsXG4gICAgXCJNb2JpbGl0eVwiLFxuICAgIFwiQWNjb3VudHNcIixcbiAgICBcIkRhdGFcIixcbiAgICBcIkNyZWF0aXZlXCIsXG4gICAgXCJDb25maWd1cmF0aW9uXCIsXG4gICAgXCJBY2NvdW50YWJpbGl0eVwiLFxuICAgIFwiSW50ZXJhY3Rpb25zXCIsXG4gICAgXCJGYWN0b3JzXCIsXG4gICAgXCJVc2FiaWxpdHlcIixcbiAgICBcIk1ldHJpY3NcIlxuICBdLFxuICBcImpvYlwiOiBbXG4gICAgXCJTdXBlcnZpc29yXCIsXG4gICAgXCJBc3NvY2lhdGVcIixcbiAgICBcIkV4ZWN1dGl2ZVwiLFxuICAgIFwiTGlhaXNvblwiLFxuICAgIFwiT2ZmaWNlclwiLFxuICAgIFwiTWFuYWdlclwiLFxuICAgIFwiRW5naW5lZXJcIixcbiAgICBcIlNwZWNpYWxpc3RcIixcbiAgICBcIkRpcmVjdG9yXCIsXG4gICAgXCJDb29yZGluYXRvclwiLFxuICAgIFwiQWRtaW5pc3RyYXRvclwiLFxuICAgIFwiQXJjaGl0ZWN0XCIsXG4gICAgXCJBbmFseXN0XCIsXG4gICAgXCJEZXNpZ25lclwiLFxuICAgIFwiUGxhbm5lclwiLFxuICAgIFwiT3JjaGVzdHJhdG9yXCIsXG4gICAgXCJUZWNobmljaWFuXCIsXG4gICAgXCJEZXZlbG9wZXJcIixcbiAgICBcIlByb2R1Y2VyXCIsXG4gICAgXCJDb25zdWx0YW50XCIsXG4gICAgXCJBc3Npc3RhbnRcIixcbiAgICBcIkZhY2lsaXRhdG9yXCIsXG4gICAgXCJBZ2VudFwiLFxuICAgIFwiUmVwcmVzZW50YXRpdmVcIixcbiAgICBcIlN0cmF0ZWdpc3RcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMtIyMjLSMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjXCIsXG4gIFwiIyMjLSMjIy0jIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjI1wiLFxuICBcIiMjIy0jIyMtIyMjIyB4IyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyMgeCMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjIHgjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyMgeCMjI1wiLFxuICBcIiMjIy0jIyMtIyMjIyB4IyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjIHgjIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyMgeCMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyMgeCMjIyNcIixcbiAgXCIjIyMtIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjIHgjIyMjI1wiXG5dO1xuIiwidmFyIHBob25lX251bWJlciA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBwaG9uZV9udW1iZXI7XG5waG9uZV9udW1iZXIuZm9ybWF0cyA9IHJlcXVpcmUoXCIuL2Zvcm1hdHNcIik7XG4iLCJ2YXIgc3lzdGVtID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHN5c3RlbTtcbnN5c3RlbS5taW1lVHlwZXMgPSByZXF1aXJlKFwiLi9taW1lVHlwZXNcIik7IiwiLypcblxuVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbkNvcHlyaWdodCAoYykgMjAxNCBKb25hdGhhbiBPbmcgbWVAam9uZ2xlYmVycnkuY29tXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cblxuRGVmaW5pdGlvbnMgZnJvbSBtaW1lLWRiIHYxLjIxLjBcbkZvciB1cGRhdGVzIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL21pbWUtZGIvYmxvYi9tYXN0ZXIvZGIuanNvblxuXG4qL1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHtcbiAgXCJhcHBsaWNhdGlvbi8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vM2dwZGFzaC1xb2UtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwLWltcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYTJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FjdGl2ZW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXBmaWx0ZXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZGlyZWN0b3J5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludGNvc3RwYXJhbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRwcm9wK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcHBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lcnJvcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1uZXR3b3JrbWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXBmaWx0ZXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FwcGxlZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdGZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWNhdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tY2F0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWRlbGV0ZWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21pY21haWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbXN2Yyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tc3ZjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXR4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXV0aC1wb2xpY3kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JhY25ldC14ZGQremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JhdGNoLXNtdHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmRvY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZWVwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxlbmRhcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsZW5kYXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbGwtY29tcGxldGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxzLTE4NDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jY21wK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jY3htbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjY3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkZngreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktZG9tYWluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1xdWV1ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RuaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2VhLTIwMTgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlbGxtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2Z3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbnJwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb2FwLWdyb3VwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb21tb25ncm91bmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29uZmVyZW5jZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jcGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzcmF0dHJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzdGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3ZtK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jdS1zZWVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jeWJlcmNhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFydFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFzaGRlbHRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhdm1vdW50XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNhLXJmdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGVjLWR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpYWxvZy1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kb2Nib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGJrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNrcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rzc2MrZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHNzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rzc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRzc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kdmNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGktY29uc2VudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGkteDEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaWZhY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29tbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZGV2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEucHJvdmlkZXJpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zZXJ2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuc3Vic2NyaWJlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtbWEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1tYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Vtb3Rpb25tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lcHViK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVwdWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0c29hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mZHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZpdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC1zZm50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZnJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3b2ZmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC13b2ZmMlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndvZmYyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZnJhbWV3b3JrLWF0dHJpYnV0ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dweCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdweFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2d4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9oMjI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2hlbGQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2h0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUta2V5LXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1wa2ctcmVwbHkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1wcC1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lnZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW0taXNjb21wb3NpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LmNtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5vYmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgucmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgudm5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lua21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlua1wiLFwiaW5rbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pb3RwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lwZml4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBmaXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXN1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFyXCIsXCJ3YXJcIixcImVhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtdm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vam9zZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanJkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25cIixcIm1hcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb24tcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb24tc2VxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb241XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbjVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29ubWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29ubWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd2sranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3ay1zZXQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9rcG1sLXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2twbWwtcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25sZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xpbmstZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvYWQtY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsb3N0eG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdHN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2x4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHByb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3B0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjd3JpdGVpaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYm1hbmlmZXN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1yY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXJjeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFcIixcIm5iXCIsXCJtYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYXRobWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aG1sLXByZXNlbnRhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1hc3NvY2lhdGVkLXByb2NlZHVyZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1kZXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLWVudmVsb3BlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLW1zayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2stcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcHJvdGVjdGlvbi1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1yZWNlcHRpb24tcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXNjaGVkdWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXVzZXItc2VydmljZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ib3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZWRpYS1wb2xpY3ktZGF0YXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFfY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFzZXJ2ZXJjb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zY21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVyZ2UtcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YWxpbmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YTRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ldHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWlrZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9kcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zcy1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3Mtc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3NrZXktZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3Nza2V5LXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXAyMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0yMVwiLFwibXAyMVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNHNcIixcIm00cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtaW9kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWlvZC14bXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXJiLWNvbnN1bWVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcmItcHVibGlzaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLWl2cit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLW1peGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NcIixcImRvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL214ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL25hc2RhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmV3cy1jaGVja2dyb3Vwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLWdyb3VwaW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLXRyYW5zbWlzc2lvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ubHNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbnNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jc3AtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3NwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJpblwiLFwiZG1zXCIsXCJscmZcIixcIm1hclwiLFwic29cIixcImRpc3RcIixcImRpc3R6XCIsXCJwa2dcIixcImJwa1wiLFwiZHVtcFwiLFwiZWxjXCIsXCJkZXBsb3lcIixcImV4ZVwiLFwiZGxsXCIsXCJkZWJcIixcImRtZ1wiLFwiaXNvXCIsXCJpbWdcIixcIm1zaVwiLFwibXNwXCIsXCJtc21cIixcImJ1ZmZlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29kYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29keFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9wZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9neFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29tZG9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib21kb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbmVub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvbmV0b2NcIixcIm9uZXRvYzJcIixcIm9uZXRtcFwiLFwib25lcGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb3hwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm94cHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wMnAtb3ZlcmxheSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBncFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhc2NcIixcInNpZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpY3MtcnVsZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDEwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LW1pbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN21cIixcInA3Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2VyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1jcmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcmxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lwYXRoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeGNtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBraVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bscyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb2Mtc2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpXCIsXCJlcHNcIixcInBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmFsdmVzdHJhbmQudGl0cmF4LXNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5jd3dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjd3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuaHB1Yit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLm5wcmVuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMucGx1Y2tlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMucmRmLXhtbC1jcnlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMueHNmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wc2tjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBza2N4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9xc2lnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZGFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVtb3RlLXByaW50aW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlcHV0b24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jpc2Nvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybG1pK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLWdob3N0YnVzdGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdiclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLXJvYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJvYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktdXBkb3duXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJzZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jzcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FtbGFzc2VydGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FtbG1ldGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNibWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY2FpcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NpbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlcC1leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vzc2lvbi1pbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXRwYXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNldHJlZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2dtbC1vcGVuLWNhdGFsb2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2hmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpZXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZS1maWx0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZS1tZXNzYWdlLXN1bW1hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2ltcGxlc3ltYm9sY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtaWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc21pbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbWlcIixcInNtaWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbXB0ZTMzNm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCtmYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zb2FwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Bpcml0cy1ldmVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NyZ3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncmFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Jncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncnhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NydSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zc2RsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NzbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtYXBleC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWNvbW11bml0eS11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWVycm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0LWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90ZWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGVpXCIsXCJ0ZWljb3JwdXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aHJhdWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGZpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXBseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXBlZC1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHZlLXRyaWdnZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy1ncnBzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXVpc29ja2V0ZGVzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdmNhcmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjYXJkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92ZW1taVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZS1wYzNjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuYWNjZXNzLXRyYW5zZmVyLWV2ZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuYnNmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5taWQtY2FsbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LWxhcmdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB2YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1leHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnN0YXRlLWFuZC1ldmVudC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC51c3NkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuYmNtY3NpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGNhcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHduXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW1wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWN1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdGNcIixcImFjdXRjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmFpci1hcHBsaWNhdGlvbi1pbnN0YWxsZXItcGFja2FnZSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mbGFzaC5tb3ZpZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZm9ybXNjZW50cmFsLmZjZHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmY2R0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ4cFwiLFwiZnhwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5wYXJ0aWFsLXVwbG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGZkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZXRoZXIuaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haC1iYXJjb2RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haGVhZC5zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFoZWFkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhenNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhendcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1lcmljYW5keW5hbWljcy5hY2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYW1pXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtdW5kc2VuLm1hemUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFua2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1jZXJ0aWZpY2F0ZS1pc3N1ZS1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2lpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuY29tcGFjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBrZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTN1OFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa3Bhc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJhc3RyYS5zd2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFyaXN0YW5ldHdvcmtzLnN3aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN3aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcnRzcXVhcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFzdHJhZWEtc29mdHdhcmUuaW90YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlvdGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFlcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdXRvcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXZpc3Rhcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibXByXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iZWtpdHp1ci1zdGVjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJpb3BheC5yZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGguZXAub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGgubGUub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhYi1qc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYW5vbi1jcGRsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYW5vbi1saXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jZW5kaW8udGhpbmxpbmMuY2xpZW50Y29uZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2VudHVyeS1zeXN0ZW1zLnRjcF9zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNoZW1kcmF3K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpbmRlcmVsbGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2lycGFjay5pc2RuLWV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2l0YXRpb25zdHlsZXMuc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbGF5bW9yZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwOVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzRnXCIsXCJjNGRcIixcImM0ZlwiLFwiYzRwXCIsXCJjNHVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImMxMWFtY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnLXBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImMxMWFtelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2ZmZWVzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLmRvYytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ubmV4dCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbW1lcmNlLWJhdHRlbGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGJjbXNnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvc21vY2FsbGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGtrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpdGljYWx0b29scy53YnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2JzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN0Yy1wb3NtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdGN0LndzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwucGN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjdXJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5YW4uZGVhbi5yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3liYW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYXJ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRhdGEtdmlzaW9uLnJkelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJkelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWJpYW4uYmluYXJ5LXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2ZlwiLFwidXZ2ZlwiLFwidXZkXCIsXCJ1dnZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnRcIixcInV2dnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2eFwiLFwidXZ2eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2elwiLFwidXZ2elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmVfbGF1bmNoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlc211bWUtbW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRpci1iaS5wbGF0ZS1kbC1ub3N1ZmZpeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG0uZGVsZWdhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRuYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2N1bWVudCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tb2JpbGUuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9yZW1pci5zY29yZWNsb3VkLWJpbmFyeS1kb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZmFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRyaXZlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtweHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuZmxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWl0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5kdmJqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZXNnY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2RmdG5vdGlmYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ2FjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3MyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ3BkZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNyb2FtaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1iYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1lbmhhbmNlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWFnZ3JlZ2F0ZS1yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWNvbnRhaW5lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1nZW5lcmljK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLW1zZ2xpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWluaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIucGZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuc2VydmljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5keHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR5bmFnZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHpyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lYXN5a2FyYW9rZS5jZGdkb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNkaXMtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmZpbGVyZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc3JlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXN1cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVtY2xpZW50LmFjY2Vzc3JlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVucGhhc2UuZW52b3lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwcmludHMuZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2x0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcmljc3Nvbi5xdWlja2NhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzM1wiLFwiZXQzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYW9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hc2ljLWUremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtcyt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuY3VnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2Y29tbWFuZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmRpc2NvdmVyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtYmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtY29kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLW5wdnIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzZXJ2aWNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c3luYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnVlcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWNpZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWhlZzVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kub3ZlcmxvYWQtY29udHJvbC1wb2xpY3ktZGF0YXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kucHN0bit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuc2NpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zaW1zZXJ2cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudGltZXN0YW1wLXRva2VuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsLmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXVkb3JhLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXoyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlejNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZi1zZWN1cmUubW9iaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mYXN0Y29weS1kaXNrLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZWVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlZWRcIixcImRhdGFsZXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZmc25zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maWxtaXQuemZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maW50c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmlyZW1vbmtleXMuY2xvdWRjZWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3BoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZsdXh0aW1lLmNsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZm9udC1mb250Zm9yZ2Utc2ZkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZm1cIixcImZyYW1lXCIsXCJtYWtlclwiLFwiYm9va1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmx0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mc2Mud2VibGF1bmNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c2dwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmc1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNwcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiaDJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydC1leFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmhicGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1dC1taXNuZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1enp5c2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmenNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9jdWJlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdnYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2V4XCIsXCJncmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvbmV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd4dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzJ3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzN3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlcmJlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ214XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ214XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLmRvY3VtZW50XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2xpZGVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3NoZWV0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2suZS1mb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay54bWxkYXRhY29udGFpbmVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3FmXCIsXCJncXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3JpZG1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtYWNjb3VudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaGVscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdoZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdpbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncnZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhhbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInptbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYmNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGJjaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oY2wtYmlyZXBvcnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oZXJva3UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBpZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpsdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNseGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2x4bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5odHRwaG9uZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlkcm9zdGF0aXguc29mLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZmQtaGRzdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlwZXJkcml2ZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh6bi0zZC1jcm9zc3dvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5hZnBsaW5lZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLmVsZWN0cm9uaWMtbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXB5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZnBcIixcImxpc3RhZnBcIixcImxpc3QzODIwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uc2VjdXJlLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2NcIixcImljbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pZWVlLjE5MDVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlnbG9hZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIml2cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdnVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmxpcy52Mi5yZXN1bHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xjb25zdW1lcnByb2ZpbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHByb3h5LmlkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3MranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncy5zaW1wbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvcm1lZGNvbnRyb2wucm1zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtaXgtdmlzaW9uYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5ub3BhdGgud2FtcC5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluc29ycy5pZ21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwd1wiLFwieHB4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaTJnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3QuZGlnaWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJ0cnVzdC5ubmNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFib1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFmeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNhdGFsb2dpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5jb25jZXB0aXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIua25vd2xlZGdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLm5ld3NtZXNzYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wYWNrYWdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGxhbm5pbmdpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmNwcm9maWxlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXJwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlzLXhwclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pc2FjLmZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZjc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtZGlyZWN0b3J5LXNlcnZpY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWpwbnN0b3JlLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcGF5bWVudC13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXJlZ2lzdHJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcmVnaXN0cmF0aW9uLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtc2V0c3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC12ZXJpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXZlcmlmaWNhdGlvbi13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qaXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamlzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqb2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpzay5pc2RuLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2Fob290elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0elwiLFwia3RyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rYXJib25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrYXJib25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtjaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNocnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtmb3JtdWxhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2ZvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5raXZpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua29udG91clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtvblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtwclwiLFwia3B0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rc3ByZWFkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3NwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt3ZFwiLFwia3d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodGtlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtpZHNwaXJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtpYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5raW5hclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtuZVwiLFwia25wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtvYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJza3BcIixcInNrZFwiLFwic2t0XCIsXCJza21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua29kYWstZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhc3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5saWJlcnR5LXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGJkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxiZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjEyM1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1mcmVlbGFuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtb3JnYW5pemVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3JnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXNjcmVlbmNhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHdwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3J0cGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5hY3Rpb250b2tlbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uY29uZnRva2VuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5saWNlbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5tZGNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXNvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1heG1pbmQubWF4bWluZC1kYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGNhbGNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWMxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNka2V5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lcmlkaWFuLXNsaW5nc2hvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm13ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbG9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LnBvcnRhYmxlLWV4ZWN1dGFibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pZWxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pbmlzb2Z0LWhwMzAwMC1zYXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taXRzdWJpc2hpLm1pc3R5LWd1YXJkLnRydXN0d2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGFmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkaXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1ia1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ia1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXF5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXF5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMudHhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHhmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuYWRzaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmZpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmdvdGFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUua21yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUudHRjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUud2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5pcHJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh1bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy0zbWZkb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtYXJ0Z2FscnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtYXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1jb2xvci5pY2Nwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzXCIsXCJ4bG1cIixcInhsYVwiLFwieGxjXCIsXCJ4bHRcIixcInhsd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsc21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGx0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlb3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtaHRtbGhlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtaW1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW1zXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWxybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZleCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGhteFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBhY2thZ2Uub2JmdXNjYXRlZC1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBsYXlyZWFkeS5pbml0aWF0b3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0XCIsXCJwcHNcIixcInBvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRkZXZpY2VjYXBhYmlsaXRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludGluZy5wcmludHRpY2tldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJvamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wcFwiLFwibXB0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXRuZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5ud3ByaW50aW5nLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5wcmludGVycGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy53c2Qub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5saWMtY2hsZy1yZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5tZXRlci1jaGxnLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG90bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndwc1wiLFwid2tzXCIsXCJ3Y21cIixcIndkYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNhLWRpc2staW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2VxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zaWduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11bHRpYWQuY3JlYXRvci5jaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljLW5pZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXN0eVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5teW5mY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRhZ2xldFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uY2QuY29udHJvbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmNkLnJlZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmVydmFuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmV0ZnB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5sdVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaW50ZW5kby5uaXRyby5yb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLnNuZXMucm9tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnRmXCIsXCJuaXRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5uZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm53XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNhdGFsb2dzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY29ubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pcHR2LmNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmlzZHMtcmFkaW8tcHJlc2V0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmsrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmtjb2xsZWN0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmFjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuZ2RhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2Uuc3ltYmlhbi5pbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibi1nYWdlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm5jZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycHN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycHNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXh0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5jb250ZW50LXNoYXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuZmlsZS10cmFuc2ZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLm9nd19yZW1vdGUtYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuc2lwLXRhX3JlbW90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV90Y3Bfc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYS10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbi10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2R0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LW1hc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2JuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vZnRuLmwxMG4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3Nkb3dubG9hZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY29udGVudGFjY2Vzc3N0cmVhbWluZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY3NwZy1oZXhiaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnN2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnhodG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5taXBwdmNvbnRyb2xtZXNzYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5wYWUuZ2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGlzY292ZXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5zcGRsaXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi51ZXByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVzZXJwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtaHR0cC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuYXNzb2NpYXRlZC1wcm9jZWR1cmUtcGFyYW1ldGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmRybS10cmlnZ2VyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmltZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5sdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Qubm90aWZpY2F0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnByb3Zpc2lvbmluZ3RyaWdnZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2Jvb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2RkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zaW1wbGUtc3ltYm9sLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNtYXJ0Y2FyZC10cmlnZ2VyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNwcm92K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnN0a21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItYWRkcmVzcy1ib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1mZWF0dXJlLWhhbmRsZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXBjYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItc3Vicy1pbnZpdGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXVzZXItcHJlZnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRkMit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZDJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRybS5yaXNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmdyb3VwLXVzYWdlLWxpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucGFsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5kZXRhaWxlZC1wcm9ncmVzcy1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmZpbmFsLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZ3JvdXBzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5pbnZvY2F0aW9uLWRlc2NyaXB0b3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLm9wdGltaXplZC1wcm9ncmVzcy1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucHVzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnNjaWRtLm1lc3NhZ2VzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnhjYXAtZGlyZWN0b3J5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZW1haWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWFkcy1maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZm9sZGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hbG9jLXN1cGwtaW5pdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUtYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuZXllLm9lYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm94dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbXhtbHByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1jb2xvcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWxheW91dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRhdXRob3JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5oYW5kb3V0bWFzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNtYXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5ub3Rlc3NsaWRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24ubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNwcm9wcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xkeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbGF5b3V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVtYXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdy5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGV1cGRhdGVpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFibGVzdHlsZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnZpZXdwcm9wcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY2NoYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbGxpbmsreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Y2FjaGVkZWZpbml0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdGNhY2hlcmVjb3Jkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3R0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucXVlcnl0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25oZWFkZXJzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkc3RyaW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVzaW5nbGVjZWxscyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC51c2VybmFtZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlZGVwZW5kZW5jaWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lb3ZlcnJpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxkcmF3aW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5nbG9zc2FyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZW5kbm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvbnR0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9vdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290bm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLm51bWJlcmluZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC53ZWJzZXR0aW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5kaWdpdGFsLXNpZ25hdHVyZS14bWxzaWduYXR1cmUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcmFjbGUucmVzb3VyY2UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcmFuZ2UuaW5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2EubmV0ZGVwbG95XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWdwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuYnVuZGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5zdWJzeXN0ZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlc2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Rwcy5jdC1raXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5veGxpLmNvdW50Z3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhZ2VyZHV0eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGJcIixcInBxYVwiLFwib3ByY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW5vcGx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW9zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFvcy54bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGF3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBjb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0clwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlaTZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGlhY2Nlc3MuYXBwbGljYXRpb24tbGljZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGljc2VsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWZpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wbWkud2lkZ2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG9jLmdyb3VwLWFkdmVydGlzZW1lbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb2NrZXRsZWFyblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGJkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjYtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyN1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNy1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3NVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzUtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJlbWluZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcm90ZXVzLm1hZ2F6aW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWd6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB1Ymxpc2hhcmUtZGVsdGEtdHJlZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdGlkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB3Zy1tdWx0aXBsZXhlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVhbGNvbW0uYnJldy1hcHAtcmVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInF4ZFwiLFwicXh0XCIsXCJxd2RcIixcInF3dFwiLFwicXhsXCIsXCJxeGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVvYmplY3QtcXVveGRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1vbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1jb25uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWRpYWxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1zdHJlYW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWJhc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1kZXRlY3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1zZW5kcmVjdit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZ3JvdXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXNwZWVjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctdHJhbnNmb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFpbnN0b3IuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFwaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlYWx2bmMuYmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzaWN4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVubGVhcm4ucmxwcmludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnlwdG9ub3RlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJpbS5jb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNvZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYS12YnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtdmJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucm91dGU2Ni5saW5rNjYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGluazY2XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJzLTI3NHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJ1Y2t1cy5kb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuczNzbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNhaWxpbmd0cmFja2VyLnRyYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2JtLmNpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2JtLm1pZDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNjcmlidXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC4zZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5jc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5kb2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5lbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5taHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5uZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5wcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC50aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQueGxzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlZW1haWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmludGVyY2hhbmdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpcGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHdkXCIsXCJ0d2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNpcmVuK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1tZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC5ub3RlYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hcnQudGVhY2hlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlYWNoZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2Z0d2FyZTYwMi5maWxsZXIuZm9ybS14bWwtemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2xlbnQuc2RrbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGttXCIsXCJzZGtkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWR0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLW50ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHdcIixcInZvclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic216aXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0cmVldC1zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi53YWRsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3R3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1c1wiLFwic3VzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3dpZnR2aWV3LWljc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXNcIixcInNpc3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0rd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0ubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZHMubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjYXBcIixcImNhcFwiLFwiZG1wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtZC5tZWRpYWZsZXguYXBpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRtb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cmlkLnRwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRwdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJ1ZWFwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRyYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cnVlZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51Ymlzb2Z0LndlYnBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWZkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVmZFwiLFwidWZkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51aXEudGhlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW1hamluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW1qXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVuaXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW5pdHl3ZWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW9tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1b21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnQtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYmVhcmVyLWNob2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNhY2hlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2FjaGVvcC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNoYW5uZWwtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RjbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdGNtZC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5zaWduYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVyaS1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZhbHZlLnNvdXJjZS5tYXRlcmlhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmN4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZkLXN0dWR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZWN0b3J3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVyaW1hdHJpeC52Y2FzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aWRzb2Z0LnZpZGNvbmZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNkXCIsXCJ2c3RcIixcInZzc1wiLFwidnN3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZpc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudnNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC5zaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC5zbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndieG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbHNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3RiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS5wMnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS53c2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud21jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWYuYm9vdHN0cmFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmJwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndxZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndxZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53cnEtaHAzMDAwLWxhYmVsbGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3YuY3NwK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5jc3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5zc3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54YWNtbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhhcmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGZkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhmZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGZkbC53ZWJmb3JtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5jcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5kcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS54bGltXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtZGljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NmcHZnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5yZW1vdGUtc2V0dXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLWF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2FmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLXBocmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEudGhyb3VnaC1uZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50dW5uZWwtdWRwZW5jYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhb3dlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnllbGxvd3JpdmVyLWN1c3RvbS1tZW51XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnp1bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppclwiLFwiemlyelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInphelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZvaWNleG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92cS1ydGNweHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dob2lzcHAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2hvaXNwcC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aW5obHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhscFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dpdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd29yZHBlcmZlY3Q1LjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd3NkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3c2RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3Nwb2xpY3lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjd6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hYml3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYndcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXBwbGUtZGlza2ltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkbWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWJcIixcIngzMlwiLFwidTMyXCIsXCJ2b3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYmRvY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRvcnJlbnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibGJcIixcImJsb3JiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJielwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYnppcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ6MlwiLFwiYm96XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jYnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNiclwiLFwiY2JhXCIsXCJjYnRcIixcImNielwiLFwiY2I3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jZGxpbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNmc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2hhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb25cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvY29hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29tcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5zY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3NoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc2hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZWJcIixcInVkZWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZ2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkaXJcIixcImRjclwiLFwiZHhyXCIsXCJjc3RcIixcImNjdFwiLFwiY3h0XCIsXCJ3M2RcIixcImZnZFwiLFwic3dhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kb29tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5jeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJyZXNvdXJjZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHZpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWVudm95XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldnlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWV2YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXZhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWJkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWRvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1mcmFtZW1ha2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWdob3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtbGliZ3J4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LW90ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtcGNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc25mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc3BlZWRvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXN1bm9zLW5ld3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtdHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR0ZlwiLFwidHRjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXR5cGUxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZmFcIixcInBmYlwiLFwicGZtXCIsXCJhZm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtdmZvbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZyZWVhcmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFyY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZnV0dXJlc3BsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnY2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdsdWx4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdudW1lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbnVtZXJpY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3JhbXBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ndGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1oZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwaHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWluc3RhbGwtaW5zdHJ1Y3Rpb25zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbnN0YWxsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpc29cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphcmRpZmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbmxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1sYXRleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGF0ZXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx1YWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWx6aC1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsemhcIixcImxoYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbWFrZXNlbGZcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnVuXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1taWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJjXCIsXCJtb2JpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcGVndXJsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtYXBwbGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGxpY2F0aW9uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy1zaG9ydGN1dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibG5rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy13bWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtd216XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXhiYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG9zLXByb2dyYW1cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4ZVwiLFwiZGxsXCIsXCJjb21cIixcImJhdFwiLFwibXNpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21lZGlhdmlld1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXZiXCIsXCJtMTNcIixcIm0xNFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21mXCIsXCJ3bXpcIixcImVtZlwiLFwiZW16XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21vbmV5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbnlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3dyaXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW5ldGNkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmNcIixcImNkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1uemJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm56YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGVybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbFwiLFwicG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBpbG90XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByY1wiLFwicGRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMlwiLFwicGZ4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0aWZpY2F0ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3YlwiLFwic3BjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmVzZWFyY2gtaW5mby1zeXN0ZW1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNlYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN3ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNxbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3FsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdHVmZml0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN0dWZmaXR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdWJyaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNydFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3Y0Y3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3Y0Y3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3Y0Y3JjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdjRjcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXQzdm0taW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInQzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10YWRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRjbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGNsXCIsXCJ0a1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRleC10Zm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRmbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4aW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGV4aW5mb1wiLFwidGV4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGdpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JqXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC11c3RhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXN0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvblwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2ViYXBwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRlclwiLFwiY3J0XCIsXCJwZW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhmaWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZpZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteGxpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6MVwiLFwiejJcIixcInozXCIsXCJ6NFwiLFwiejVcIixcIno2XCIsXCJ6N1wiLFwiejhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94NDAwLWJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hhY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtYXR0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVycm9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y29uLWNvbmZlcmVuY2UtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8tZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGVuYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZW5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGh0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aHRtbFwiLFwieGh0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGh0bWwtdm9pY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIixcInhzbFwiLFwieHNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLWR0ZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLXBhdGNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94b3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4b3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94cHJvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hzbHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNsdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hzcGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhtbFwiLFwieGh2bWxcIixcInh2bWxcIixcInh2bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3lhbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5YW5nXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlpblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3psaWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzMya2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzNncHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vM2dwcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYWMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZHBcIl1cbiAgfSxcbiAgXCJhdWRpby9hbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYW1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Ftci13YitcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXB0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hc2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXRyYWMtYWR2YW5jZWQtbG9zc2xlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXRyYWMteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYzNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYmFzaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdVwiLFwic25kXCJdXG4gIH0sXG4gIFwiYXVkaW8vYnYxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9idjMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2NsZWFybW9kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9jblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kYXQxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kbHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAxMTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjA1MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIyMTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2aTRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZWFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMtcWNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjYjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNudzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY3diMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2IxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9md2RyZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcxMS0wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MTlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIyMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtMTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi0yNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtNDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjkxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nc20tZWZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbS1oci0wOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9pbGJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2lwLW1yX3YyLjVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vaXNhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL2wxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9sMjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbDI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL2w4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2xwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWRcIixcIm1pZGlcIixcImthclwiLFwicm1pXCJdXG4gIH0sXG4gIFwiYXVkaW8vbW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRhXCIsXCJtNGFcIl1cbiAgfSxcbiAgXCJhdWRpby9tcDRhLWxhdG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wYS1yb2J1c3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wZ2FcIixcIm1wMlwiLFwibXAyYVwiLFwibXAzXCIsXCJtMmFcIixcIm0zYVwiXVxuICB9LFxuICBcImF1ZGlvL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXVzZXBhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhdWRpby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ2FcIixcIm9nZ1wiLFwic3B4XCJdXG4gIH0sXG4gIFwiYXVkaW8vb3B1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY21hLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbXVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtdS13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wcnMuc2lkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3FjZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9yZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHAtbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vczNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzM21cIl1cbiAgfSxcbiAgXCJhdWRpby9zaWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaWxcIl1cbiAgfSxcbiAgXCJhdWRpby9zbXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc212LXFjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zbXYwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3NwLW1pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc3BlZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDE0MGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3RlbGVwaG9uZS1ldmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90b25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3VlbWNsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZkdmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC4zZ3BwLml1ZnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLjRzYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuYXVkaW9rb3pcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNpc2NvLm5zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY21sZXMucmFkaW8tZXZlbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbnMuYW5wMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY25zLmluZjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRlY2UuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmFcIixcInV2dmFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZGlnaXRhbC13aW5kc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVvbFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kbG5hLmFkdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LmhlYWFjLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LmhlYWFjLjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkubXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnB1bHNlLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRyYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRyYVwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdHNcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzLmhkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRzaGRcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHZiLmZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmV2ZXJhZC5wbGpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmhucy5hdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubHVjZW50LnZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHZwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJweWFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubm9raWEubW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubm9ydGVsLnZia1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA0ODAwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNzQ3MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwNzQ3MFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDk2MDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDk2MDBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQub2N0ZWwuc2JjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5xY2VscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucmhldG9yZXguMzJrYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJpcFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5ybi1yZWFsYXVkaW9cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnZteC5jdnNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC53YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL3ZvcmJpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby92b3JiaXMtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3dhdlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhdlwiXVxuICB9LFxuICBcImF1ZGlvL3dhdmVcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby93ZWJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1hYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtYWlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWlmXCIsXCJhaWZmXCIsXCJhaWZjXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1jYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhZlwiXVxuICB9LFxuICBcImF1ZGlvL3gtZmxhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxhY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtbTRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTN1XCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tcy13YXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndheFwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXMtd21hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFtXCIsXCJyYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm1wXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1yZWFsYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXR0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL3gtd2F2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby94bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG1cIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2R4XCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNpZlwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY21kZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21kZlwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWxcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNzbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzbWxcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LXBkYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImNoZW1pY2FsL3gteHl6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4eXpcIl1cbiAgfSxcbiAgXCJmb250L29wZW50eXBlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGZcIl1cbiAgfSxcbiAgXCJpbWFnZS9ibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1wXCJdXG4gIH0sXG4gIFwiaW1hZ2UvY2dtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2dtXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZml0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9nM2ZheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImczXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZ2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2lmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvaWVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWVmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvanAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL2pwZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcGVnXCIsXCJqcGdcIixcImpwZVwiXVxuICB9LFxuICBcImltYWdlL2pwbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9qcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uva3R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3R4XCJdXG4gIH0sXG4gIFwiaW1hZ2UvbmFwbHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3BqcGVnXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImltYWdlL3BuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBuZ1wiXVxuICB9LFxuICBcImltYWdlL3Bycy5idGlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnRpZlwiXVxuICB9LFxuICBcImltYWdlL3Bycy5wdGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvcHdnLXJhc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9zZ2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnaVwiXVxuICB9LFxuICBcImltYWdlL3N2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Z1wiLFwic3ZnelwiXVxuICB9LFxuICBcImltYWdlL3QzOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS90aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGlmZlwiLFwidGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvdGlmZi1meFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuYWRvYmUucGhvdG9zaG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2RcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuY25zLmluZjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aVwiLFwidXZ2aVwiLFwidXZnXCIsXCJ1dnZnXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRqdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkanZ1XCIsXCJkanZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR3Z1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR3Z1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5keGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkeGZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZmFzdGJpZHNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmJzXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZweFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmc3RcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbXJcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1ybGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybGNcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZ2xvYmFsZ3JhcGhpY3MucGdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubWl4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5tb3ppbGxhLmFwbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1zLW1vZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGlcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtcGhvdG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndkcFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5uZXQtZnB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnB4XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnJhZGlhbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWQucG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5naWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmpwZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc3ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC50ZW5jZW50LnRhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQudmFsdmUuc291cmNlLnRleHR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLndhcC53Ym1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2JtcFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC54aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnpicnVzaC5wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvd2VicFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2VicFwiXVxuICB9LFxuICBcImltYWdlL3gtM2RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZHNcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWNtdS1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhc1wiXVxuICB9LFxuICBcImltYWdlL3gtY214XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbXhcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWZyZWVoYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaFwiLFwiZmhjXCIsXCJmaDRcIixcImZoNVwiLFwiZmg3XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1pY29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljb1wiXVxuICB9LFxuICBcImltYWdlL3gtam5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpuZ1wiXVxuICB9LFxuICBcImltYWdlL3gtbXJzaWQtaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpZFwiXVxuICB9LFxuICBcImltYWdlL3gtbXMtYm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1wXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjeFwiXVxuICB9LFxuICBcImltYWdlL3gtcGljdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGljXCIsXCJwY3RcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWFueW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5tXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBibVwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGdtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwbVwiXVxuICB9LFxuICBcImltYWdlL3gtcmdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZ2JcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXRnYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGdhXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC14Yml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Ym1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXhjZlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJpbWFnZS94LXhwaXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbVwiXVxuICB9LFxuICBcImltYWdlL3gteHdpbmRvd2R1bXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh3ZFwiXVxuICB9LFxuICBcIm1lc3NhZ2UvY3BpbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2V4dGVybmFsLWJvZHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9mZWVkYmFjay1yZXBvcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbC1oZWFkZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvaHR0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtZXNzYWdlL2ltZG4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwibWVzc2FnZS9uZXdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvcGFydGlhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtZXNzYWdlL3JmYzgyMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1sXCIsXCJtaW1lXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9zLWh0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBmcmFnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvdHJhY2tpbmctc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvdm5kLnNpLnNpbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS92bmQud2ZhLndzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC9pZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdzXCIsXCJpZ2VzXCJdXG4gIH0sXG4gIFwibW9kZWwvbWVzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zaFwiLFwibWVzaFwiLFwic2lsb1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5jb2xsYWRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhZVwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5kd2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2ZcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuZmxhdGxhbmQuM2RtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RsXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdzLWdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5ncy5nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLmd0d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0d1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5tb21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQubXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXRzXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLm9wZW5nZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC50ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC52YWx2ZS5zb3VyY2UuY29tcGlsZWQtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC52dHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2dHVcIl1cbiAgfSxcbiAgXCJtb2RlbC92cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3JsXCIsXCJ2cm1sXCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK2JpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkYlwiLFwieDNkYnpcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QrZmFzdGluZm9zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwveDNkK3ZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIngzZHZcIixcIngzZHZ6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkXCIsXCJ4M2R6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkLXZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2FsdGVybmF0aXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9hcHBsZWRvdWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYnl0ZXJhbmdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvZGlnZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvaGVhZGVyLXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvbWl4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3BhcmFsbGVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9yZWxhdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9yZXBvcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3NpZ25lZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvdm9pY2UtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvY2FjaGUtbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGNhY2hlXCIsXCJtYW5pZmVzdFwiXVxuICB9LFxuICBcInRleHQvY2FsZW5kYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY3NcIixcImlmYlwiXVxuICB9LFxuICBcInRleHQvY2FsZW5kZXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L2NtZFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQvY29mZmVlc2NyaXB0XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY29mZmVlXCIsXCJsaXRjb2ZmZWVcIl1cbiAgfSxcbiAgXCJ0ZXh0L2Nzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NzXCJdXG4gIH0sXG4gIFwidGV4dC9jc3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzdlwiXVxuICB9LFxuICBcInRleHQvY3N2LXNjaGVtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2RpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VjbWFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VucmljaGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZndkcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZ3JhbW1hci1yZWYtbGlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2hqc29uXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGpzb25cIl1cbiAgfSxcbiAgXCJ0ZXh0L2h0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0bWxcIixcImh0bVwiLFwic2h0bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L2phZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYWRlXCJdXG4gIH0sXG4gIFwidGV4dC9qYXZhc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9qY3ItY25kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvanN4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc3hcIl1cbiAgfSxcbiAgXCJ0ZXh0L2xlc3NcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsZXNzXCJdXG4gIH0sXG4gIFwidGV4dC9tYXJrZG93blwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L21hdGhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L21pemFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvbjNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm4zXCJdXG4gIH0sXG4gIFwidGV4dC9wYXJhbWV0ZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcGxhaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4dFwiLFwidGV4dFwiLFwiY29uZlwiLFwiZGVmXCIsXCJsaXN0XCIsXCJsb2dcIixcImluXCIsXCJpbmlcIl1cbiAgfSxcbiAgXCJ0ZXh0L3Byb3ZlbmFuY2Utbm90YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9wcnMuZmFsbGVuc3RlaW4ucnN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcHJzLmxpbmVzLnRhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRzY1wiXVxuICB9LFxuICBcInRleHQvcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcmZjODIyLWhlYWRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yaWNodGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnR4XCJdXG4gIH0sXG4gIFwidGV4dC9ydGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0ZlwiXVxuICB9LFxuICBcInRleHQvcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvc2dtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnbWxcIixcInNnbVwiXVxuICB9LFxuICBcInRleHQvc3R5bHVzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3R5bHVzXCIsXCJzdHlsXCJdXG4gIH0sXG4gIFwidGV4dC90MTQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzdlwiXVxuICB9LFxuICBcInRleHQvdHJvZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0XCIsXCJ0clwiLFwicm9mZlwiLFwibWFuXCIsXCJtZVwiLFwibXNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3R1cnRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR0bFwiXVxuICB9LFxuICBcInRleHQvdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdXJpLWxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVyaVwiLFwidXJpc1wiLFwidXJsc1wiXVxuICB9LFxuICBcInRleHQvdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjYXJkXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsLmRjdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmN1cmwubWN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1jdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5zY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2N1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kZWJpYW4uY29weXJpZ2h0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmRtY2xpZW50c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmR2Yi5zdWJ0aXRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1YlwiXVxuICB9LFxuICBcInRleHQvdm5kLmVzbWVydGVjLnRoZW1lLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuZmx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx5XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZm1pLmZsZXhzdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx4XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZ3JhcGh2aXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndlwiXVxuICB9LFxuICBcInRleHQvdm5kLmluM2QuM2RtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNkbWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pbjNkLnNwb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcG90XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuaXB0Yy5uZXdzbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuaXB0Yy5uaXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmxhdGV4LXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubW90b3JvbGEucmVmbGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLm1zLW1lZGlhcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5uZXQycGhvbmUuY29tbWNlbnRlci5jb21tYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnJhZGlzeXMubXNtbC1iYXNpYy1sYXlvdXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuc2kudXJpY2F0YWxvZ3VlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFkXCJdXG4gIH0sXG4gIFwidGV4dC92bmQudHJvbGx0ZWNoLmxpbmd1aXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLndhcC5zaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAuc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLndtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbFwiXVxuICB9LFxuICBcInRleHQvdm5kLndhcC53bWxzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzXCJdXG4gIH0sXG4gIFwidGV4dC92dHRcIjoge1xuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnR0XCJdXG4gIH0sXG4gIFwidGV4dC94LWFzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic1wiLFwiYXNtXCJdXG4gIH0sXG4gIFwidGV4dC94LWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNcIixcImNjXCIsXCJjeHhcIixcImNwcFwiLFwiaFwiLFwiaGhcIixcImRpY1wiXVxuICB9LFxuICBcInRleHQveC1jb21wb25lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHRjXCJdXG4gIH0sXG4gIFwidGV4dC94LWZvcnRyYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZcIixcImZvclwiLFwiZjc3XCIsXCJmOTBcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtZ3d0LXJwY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGJzXCJdXG4gIH0sXG4gIFwidGV4dC94LWphdmEtc291cmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYXZhXCJdXG4gIH0sXG4gIFwidGV4dC94LWpxdWVyeS10bXBsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC94LWx1YVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx1YVwiXVxuICB9LFxuICBcInRleHQveC1tYXJrZG93blwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFya2Rvd25cIixcIm1kXCIsXCJta2RcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuZm9cIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtb3BtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3BtbFwiXVxuICB9LFxuICBcInRleHQveC1wYXNjYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBcIixcInBhc1wiXVxuICB9LFxuICBcInRleHQveC1wcm9jZXNzaW5nXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Fzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNhc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Nzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2V0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Z2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc3VzZS15bXBcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInltcFwiXVxuICB9LFxuICBcInRleHQveC11dWVuY29kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZlwiXVxuICB9LFxuICBcInRleHQveG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3htbC1leHRlcm5hbC1wYXJzZWQtZW50aXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQveWFtbFwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlhbWxcIixcInltbFwiXVxuICB9LFxuICBcInZpZGVvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvLzNncHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNncFwiLFwiM2dwcFwiXVxuICB9LFxuICBcInZpZGVvLzNncHAtdHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby8zZ3BwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2cyXCJdXG4gIH0sXG4gIFwidmlkZW8vYm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9idDY1NlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2NlbGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9kdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjFcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjYzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoMjYzXCJdXG4gIH0sXG4gIFwidmlkZW8vaDI2My0xOTk4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2My0yMDAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2NFwiXVxuICB9LFxuICBcInZpZGVvL2gyNjQtcmNkb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjQtc3ZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vanBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBndlwiXVxuICB9LFxuICBcInZpZGVvL2pwZWcyMDAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vanBtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcG1cIixcImpwZ21cIl1cbiAgfSxcbiAgXCJ2aWRlby9tajJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1qMlwiLFwibWpwMlwiXVxuICB9LFxuICBcInZpZGVvL21wMXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcDJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXAydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHNcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNFwiLFwibXA0dlwiLFwibXBnNFwiXVxuICB9LFxuICBcInZpZGVvL21wNHYtZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGVnXCIsXCJtcGdcIixcIm1wZVwiLFwibTF2XCIsXCJtMnZcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXB2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbnZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9ndlwiXVxuICB9LFxuICBcInZpZGVvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3BvaW50ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9xdWlja3RpbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInF0XCIsXCJtb3ZcIl1cbiAgfSxcbiAgXCJ2aWRlby9yYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vc21wdGUyOTJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmNjdHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5oZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZoXCIsXCJ1dnZoXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UubW9iaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dm1cIixcInV2dm1cIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5wZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZwXCIsXCJ1dnZwXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2Uuc2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2c1wiLFwidXZ2c1wiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnZcIixcInV2dnZcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGlyZWN0di5tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGxuYS5tcGVnLXR0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kdmIuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHZiXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmZ2dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnZ0XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmhucy52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMTAxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMmRwYXJpdHlmZWMtMTAxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMmRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzYXZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS50dHNtcGVnMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXh1XCIsXCJtNHVcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHl2XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLm5va2lhLmludGVybGVhdmVkLW11bHRpbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubm9raWEudmlkZW92b2lwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm9iamVjdHZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZC5tcGVnMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWQubXBlZzRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLnN3ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tb3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQudXZ2dS5tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dVwiLFwidXZ2dVwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC52aXZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aXZcIl1cbiAgfSxcbiAgXCJ2aWRlby93ZWJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJtXCJdXG4gIH0sXG4gIFwidmlkZW8veC1mNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImY0dlwiXVxuICB9LFxuICBcInZpZGVvL3gtZmxpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbGlcIl1cbiAgfSxcbiAgXCJ2aWRlby94LWZsdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx2XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00dlwiXVxuICB9LFxuICBcInZpZGVvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rdlwiLFwibWszZFwiLFwibWtzXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1uZ1wiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtYXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhc2ZcIixcImFzeFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtdm9iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2b2JcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bVwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid214XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13dnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInd2eFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXN2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXZpXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zZ2ktbW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1vdmllXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zbXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtdlwiXVxuICB9LFxuICBcIngtY29uZmVyZW5jZS94LWNvb2x0YWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2VcIl1cbiAgfSxcbiAgXCJ4LXNoYWRlci94LWZyYWdtZW50XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwieC1zaGFkZXIveC12ZXJ0ZXhcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfVxufSIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYW50c1wiLFxuICBcImJhdHNcIixcbiAgXCJiZWFyc1wiLFxuICBcImJlZXNcIixcbiAgXCJiaXJkc1wiLFxuICBcImJ1ZmZhbG9cIixcbiAgXCJjYXRzXCIsXG4gIFwiY2hpY2tlbnNcIixcbiAgXCJjYXR0bGVcIixcbiAgXCJkb2dzXCIsXG4gIFwiZG9scGhpbnNcIixcbiAgXCJkdWNrc1wiLFxuICBcImVsZXBoYW50c1wiLFxuICBcImZpc2hlc1wiLFxuICBcImZveGVzXCIsXG4gIFwiZnJvZ3NcIixcbiAgXCJnZWVzZVwiLFxuICBcImdvYXRzXCIsXG4gIFwiaG9yc2VzXCIsXG4gIFwia2FuZ2Fyb29zXCIsXG4gIFwibGlvbnNcIixcbiAgXCJtb25rZXlzXCIsXG4gIFwib3dsc1wiLFxuICBcIm94ZW5cIixcbiAgXCJwZW5ndWluc1wiLFxuICBcInBlb3BsZVwiLFxuICBcInBpZ3NcIixcbiAgXCJyYWJiaXRzXCIsXG4gIFwic2hlZXBcIixcbiAgXCJ0aWdlcnNcIixcbiAgXCJ3aGFsZXNcIixcbiAgXCJ3b2x2ZXNcIixcbiAgXCJ6ZWJyYXNcIixcbiAgXCJiYW5zaGVlc1wiLFxuICBcImNyb3dzXCIsXG4gIFwiYmxhY2sgY2F0c1wiLFxuICBcImNoaW1lcmFzXCIsXG4gIFwiZ2hvc3RzXCIsXG4gIFwiY29uc3BpcmF0b3JzXCIsXG4gIFwiZHJhZ29uc1wiLFxuICBcImR3YXJ2ZXNcIixcbiAgXCJlbHZlc1wiLFxuICBcImVuY2hhbnRlcnNcIixcbiAgXCJleG9yY2lzdHNcIixcbiAgXCJzb25zXCIsXG4gIFwiZm9lc1wiLFxuICBcImdpYW50c1wiLFxuICBcImdub21lc1wiLFxuICBcImdvYmxpbnNcIixcbiAgXCJnb29zZXNcIixcbiAgXCJncmlmZmluc1wiLFxuICBcImx5Y2FudGhyb3Blc1wiLFxuICBcIm5lbWVzaXNcIixcbiAgXCJvZ3Jlc1wiLFxuICBcIm9yYWNsZXNcIixcbiAgXCJwcm9waGV0c1wiLFxuICBcInNvcmNlcm9yc1wiLFxuICBcInNwaWRlcnNcIixcbiAgXCJzcGlyaXRzXCIsXG4gIFwidmFtcGlyZXNcIixcbiAgXCJ3YXJsb2Nrc1wiLFxuICBcInZpeGVuc1wiLFxuICBcIndlcmV3b2x2ZXNcIixcbiAgXCJ3aXRjaGVzXCIsXG4gIFwid29yc2hpcGVyc1wiLFxuICBcInpvbWJpZXNcIixcbiAgXCJkcnVpZHNcIlxuXTtcbiIsInZhciB0ZWFtID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHRlYW07XG50ZWFtLmNyZWF0dXJlID0gcmVxdWlyZShcIi4vY3JlYXR1cmVcIik7XG50ZWFtLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje0FkZHJlc3Muc3RhdGV9ICN7Y3JlYXR1cmV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlVuaXRlZCBTdGF0ZXNcIixcbiAgXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIixcbiAgXCJVU0FcIlxuXTtcbiIsInZhciBhZGRyZXNzID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGFkZHJlc3M7XG5hZGRyZXNzLmRlZmF1bHRfY291bnRyeSA9IHJlcXVpcmUoXCIuL2RlZmF1bHRfY291bnRyeVwiKTtcbmFkZHJlc3MucG9zdGNvZGVfYnlfc3RhdGUgPSByZXF1aXJlKFwiLi9wb3N0Y29kZV9ieV9zdGF0ZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiQUxcIjogXCIzNTAjI1wiLFxuICBcIkFLXCI6IFwiOTk1IyNcIixcbiAgXCJBU1wiOiBcIjk2NyMjXCIsXG4gIFwiQVpcIjogXCI4NTAjI1wiLFxuICBcIkFSXCI6IFwiNzE3IyNcIixcbiAgXCJDQVwiOiBcIjkwMCMjXCIsXG4gIFwiQ09cIjogXCI4MDAjI1wiLFxuICBcIkNUXCI6IFwiMDYxIyNcIixcbiAgXCJEQ1wiOiBcIjIwNCMjXCIsXG4gIFwiREVcIjogXCIxOTgjI1wiLFxuICBcIkZMXCI6IFwiMzIyIyNcIixcbiAgXCJHQVwiOiBcIjMwMSMjXCIsXG4gIFwiSElcIjogXCI5NjcjI1wiLFxuICBcIklEXCI6IFwiODMyIyNcIixcbiAgXCJJTFwiOiBcIjYwMCMjXCIsXG4gIFwiSU5cIjogXCI0NjMjI1wiLFxuICBcIklBXCI6IFwiNTEwIyNcIixcbiAgXCJLU1wiOiBcIjY2NiMjXCIsXG4gIFwiS1lcIjogXCI0MDQjI1wiLFxuICBcIkxBXCI6IFwiNzAxIyNcIixcbiAgXCJNRVwiOiBcIjA0MiMjXCIsXG4gIFwiTURcIjogXCIyMTAjI1wiLFxuICBcIk1BXCI6IFwiMDI2IyNcIixcbiAgXCJNSVwiOiBcIjQ4MCMjXCIsXG4gIFwiTU5cIjogXCI1NTUjI1wiLFxuICBcIk1TXCI6IFwiMzg3IyNcIixcbiAgXCJNT1wiOiBcIjY1MCMjXCIsXG4gIFwiTVRcIjogXCI1OTAjI1wiLFxuICBcIk5FXCI6IFwiNjg4IyNcIixcbiAgXCJOVlwiOiBcIjg5OCMjXCIsXG4gIFwiTkhcIjogXCIwMzYjI1wiLFxuICBcIk5KXCI6IFwiMDc2IyNcIixcbiAgXCJOTVwiOiBcIjg4MCMjXCIsXG4gIFwiTllcIjogXCIxMjIjI1wiLFxuICBcIk5DXCI6IFwiMjg4IyNcIixcbiAgXCJORFwiOiBcIjU4NiMjXCIsXG4gIFwiT0hcIjogXCI0NDQjI1wiLFxuICBcIk9LXCI6IFwiNzMwIyNcIixcbiAgXCJPUlwiOiBcIjk3OSMjXCIsXG4gIFwiUEFcIjogXCIxODYjI1wiLFxuICBcIlJJXCI6IFwiMDI5IyNcIixcbiAgXCJTQ1wiOiBcIjI5OSMjXCIsXG4gIFwiU0RcIjogXCI1NzcjI1wiLFxuICBcIlROXCI6IFwiMzgzIyNcIixcbiAgXCJUWFwiOiBcIjc5OCMjXCIsXG4gIFwiVVRcIjogXCI4NDcjI1wiLFxuICBcIlZUXCI6IFwiMDUwIyNcIixcbiAgXCJWQVwiOiBcIjIyMiMjXCIsXG4gIFwiV0FcIjogXCI5OTAjI1wiLFxuICBcIldWXCI6IFwiMjQ3IyNcIixcbiAgXCJXSVwiOiBcIjU0OSMjXCIsXG4gIFwiV1lcIjogXCI4MzEjI1wiXG59O1xuIiwidmFyIGVuX1VTID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGVuX1VTO1xuZW5fVVMudGl0bGUgPSBcIlVuaXRlZCBTdGF0ZXMgKEVuZ2xpc2gpXCI7XG5lbl9VUy5pbnRlcm5ldCA9IHJlcXVpcmUoXCIuL2ludGVybmV0XCIpO1xuZW5fVVMuYWRkcmVzcyA9IHJlcXVpcmUoXCIuL2FkZHJlc3NcIik7XG5lbl9VUy5waG9uZV9udW1iZXIgPSByZXF1aXJlKFwiLi9waG9uZV9udW1iZXJcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImNvbVwiLFxuICBcInVzXCIsXG4gIFwiYml6XCIsXG4gIFwiaW5mb1wiLFxuICBcIm5hbWVcIixcbiAgXCJuZXRcIixcbiAgXCJvcmdcIlxuXTtcbiIsInZhciBpbnRlcm5ldCA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBpbnRlcm5ldDtcbmludGVybmV0LmRvbWFpbl9zdWZmaXggPSByZXF1aXJlKFwiLi9kb21haW5fc3VmZml4XCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyMDFcIixcbiAgXCIyMDJcIixcbiAgXCIyMDNcIixcbiAgXCIyMDVcIixcbiAgXCIyMDZcIixcbiAgXCIyMDdcIixcbiAgXCIyMDhcIixcbiAgXCIyMDlcIixcbiAgXCIyMTBcIixcbiAgXCIyMTJcIixcbiAgXCIyMTNcIixcbiAgXCIyMTRcIixcbiAgXCIyMTVcIixcbiAgXCIyMTZcIixcbiAgXCIyMTdcIixcbiAgXCIyMThcIixcbiAgXCIyMTlcIixcbiAgXCIyMjRcIixcbiAgXCIyMjVcIixcbiAgXCIyMjdcIixcbiAgXCIyMjhcIixcbiAgXCIyMjlcIixcbiAgXCIyMzFcIixcbiAgXCIyMzRcIixcbiAgXCIyMzlcIixcbiAgXCIyNDBcIixcbiAgXCIyNDhcIixcbiAgXCIyNTFcIixcbiAgXCIyNTJcIixcbiAgXCIyNTNcIixcbiAgXCIyNTRcIixcbiAgXCIyNTZcIixcbiAgXCIyNjBcIixcbiAgXCIyNjJcIixcbiAgXCIyNjdcIixcbiAgXCIyNjlcIixcbiAgXCIyNzBcIixcbiAgXCIyNzZcIixcbiAgXCIyODFcIixcbiAgXCIyODNcIixcbiAgXCIzMDFcIixcbiAgXCIzMDJcIixcbiAgXCIzMDNcIixcbiAgXCIzMDRcIixcbiAgXCIzMDVcIixcbiAgXCIzMDdcIixcbiAgXCIzMDhcIixcbiAgXCIzMDlcIixcbiAgXCIzMTBcIixcbiAgXCIzMTJcIixcbiAgXCIzMTNcIixcbiAgXCIzMTRcIixcbiAgXCIzMTVcIixcbiAgXCIzMTZcIixcbiAgXCIzMTdcIixcbiAgXCIzMThcIixcbiAgXCIzMTlcIixcbiAgXCIzMjBcIixcbiAgXCIzMjFcIixcbiAgXCIzMjNcIixcbiAgXCIzMzBcIixcbiAgXCIzMzFcIixcbiAgXCIzMzRcIixcbiAgXCIzMzZcIixcbiAgXCIzMzdcIixcbiAgXCIzMzlcIixcbiAgXCIzNDdcIixcbiAgXCIzNTFcIixcbiAgXCIzNTJcIixcbiAgXCIzNjBcIixcbiAgXCIzNjFcIixcbiAgXCIzODZcIixcbiAgXCI0MDFcIixcbiAgXCI0MDJcIixcbiAgXCI0MDRcIixcbiAgXCI0MDVcIixcbiAgXCI0MDZcIixcbiAgXCI0MDdcIixcbiAgXCI0MDhcIixcbiAgXCI0MDlcIixcbiAgXCI0MTBcIixcbiAgXCI0MTJcIixcbiAgXCI0MTNcIixcbiAgXCI0MTRcIixcbiAgXCI0MTVcIixcbiAgXCI0MTdcIixcbiAgXCI0MTlcIixcbiAgXCI0MjNcIixcbiAgXCI0MjRcIixcbiAgXCI0MjVcIixcbiAgXCI0MzRcIixcbiAgXCI0MzVcIixcbiAgXCI0NDBcIixcbiAgXCI0NDNcIixcbiAgXCI0NDVcIixcbiAgXCI0NjRcIixcbiAgXCI0NjlcIixcbiAgXCI0NzBcIixcbiAgXCI0NzVcIixcbiAgXCI0NzhcIixcbiAgXCI0NzlcIixcbiAgXCI0ODBcIixcbiAgXCI0ODRcIixcbiAgXCI1MDFcIixcbiAgXCI1MDJcIixcbiAgXCI1MDNcIixcbiAgXCI1MDRcIixcbiAgXCI1MDVcIixcbiAgXCI1MDdcIixcbiAgXCI1MDhcIixcbiAgXCI1MDlcIixcbiAgXCI1MTBcIixcbiAgXCI1MTJcIixcbiAgXCI1MTNcIixcbiAgXCI1MTVcIixcbiAgXCI1MTZcIixcbiAgXCI1MTdcIixcbiAgXCI1MThcIixcbiAgXCI1MjBcIixcbiAgXCI1MzBcIixcbiAgXCI1NDBcIixcbiAgXCI1NDFcIixcbiAgXCI1NTFcIixcbiAgXCI1NTdcIixcbiAgXCI1NTlcIixcbiAgXCI1NjFcIixcbiAgXCI1NjJcIixcbiAgXCI1NjNcIixcbiAgXCI1NjRcIixcbiAgXCI1NjdcIixcbiAgXCI1NzBcIixcbiAgXCI1NzFcIixcbiAgXCI1NzNcIixcbiAgXCI1NzRcIixcbiAgXCI1ODBcIixcbiAgXCI1ODVcIixcbiAgXCI1ODZcIixcbiAgXCI2MDFcIixcbiAgXCI2MDJcIixcbiAgXCI2MDNcIixcbiAgXCI2MDVcIixcbiAgXCI2MDZcIixcbiAgXCI2MDdcIixcbiAgXCI2MDhcIixcbiAgXCI2MDlcIixcbiAgXCI2MTBcIixcbiAgXCI2MTJcIixcbiAgXCI2MTRcIixcbiAgXCI2MTVcIixcbiAgXCI2MTZcIixcbiAgXCI2MTdcIixcbiAgXCI2MThcIixcbiAgXCI2MTlcIixcbiAgXCI2MjBcIixcbiAgXCI2MjNcIixcbiAgXCI2MjZcIixcbiAgXCI2MzBcIixcbiAgXCI2MzFcIixcbiAgXCI2MzZcIixcbiAgXCI2NDFcIixcbiAgXCI2NDZcIixcbiAgXCI2NTBcIixcbiAgXCI2NTFcIixcbiAgXCI2NjBcIixcbiAgXCI2NjFcIixcbiAgXCI2NjJcIixcbiAgXCI2NjdcIixcbiAgXCI2NzhcIixcbiAgXCI2ODJcIixcbiAgXCI3MDFcIixcbiAgXCI3MDJcIixcbiAgXCI3MDNcIixcbiAgXCI3MDRcIixcbiAgXCI3MDZcIixcbiAgXCI3MDdcIixcbiAgXCI3MDhcIixcbiAgXCI3MTJcIixcbiAgXCI3MTNcIixcbiAgXCI3MTRcIixcbiAgXCI3MTVcIixcbiAgXCI3MTZcIixcbiAgXCI3MTdcIixcbiAgXCI3MThcIixcbiAgXCI3MTlcIixcbiAgXCI3MjBcIixcbiAgXCI3MjRcIixcbiAgXCI3MjdcIixcbiAgXCI3MzFcIixcbiAgXCI3MzJcIixcbiAgXCI3MzRcIixcbiAgXCI3MzdcIixcbiAgXCI3NDBcIixcbiAgXCI3NTRcIixcbiAgXCI3NTdcIixcbiAgXCI3NjBcIixcbiAgXCI3NjNcIixcbiAgXCI3NjVcIixcbiAgXCI3NzBcIixcbiAgXCI3NzJcIixcbiAgXCI3NzNcIixcbiAgXCI3NzRcIixcbiAgXCI3NzVcIixcbiAgXCI3ODFcIixcbiAgXCI3ODVcIixcbiAgXCI3ODZcIixcbiAgXCI4MDFcIixcbiAgXCI4MDJcIixcbiAgXCI4MDNcIixcbiAgXCI4MDRcIixcbiAgXCI4MDVcIixcbiAgXCI4MDZcIixcbiAgXCI4MDhcIixcbiAgXCI4MTBcIixcbiAgXCI4MTJcIixcbiAgXCI4MTNcIixcbiAgXCI4MTRcIixcbiAgXCI4MTVcIixcbiAgXCI4MTZcIixcbiAgXCI4MTdcIixcbiAgXCI4MThcIixcbiAgXCI4MjhcIixcbiAgXCI4MzBcIixcbiAgXCI4MzFcIixcbiAgXCI4MzJcIixcbiAgXCI4MzVcIixcbiAgXCI4NDNcIixcbiAgXCI4NDVcIixcbiAgXCI4NDdcIixcbiAgXCI4NDhcIixcbiAgXCI4NTBcIixcbiAgXCI4NTZcIixcbiAgXCI4NTdcIixcbiAgXCI4NThcIixcbiAgXCI4NTlcIixcbiAgXCI4NjBcIixcbiAgXCI4NjJcIixcbiAgXCI4NjNcIixcbiAgXCI4NjRcIixcbiAgXCI4NjVcIixcbiAgXCI4NzBcIixcbiAgXCI4NzJcIixcbiAgXCI4NzhcIixcbiAgXCI5MDFcIixcbiAgXCI5MDNcIixcbiAgXCI5MDRcIixcbiAgXCI5MDZcIixcbiAgXCI5MDdcIixcbiAgXCI5MDhcIixcbiAgXCI5MDlcIixcbiAgXCI5MTBcIixcbiAgXCI5MTJcIixcbiAgXCI5MTNcIixcbiAgXCI5MTRcIixcbiAgXCI5MTVcIixcbiAgXCI5MTZcIixcbiAgXCI5MTdcIixcbiAgXCI5MThcIixcbiAgXCI5MTlcIixcbiAgXCI5MjBcIixcbiAgXCI5MjVcIixcbiAgXCI5MjhcIixcbiAgXCI5MzFcIixcbiAgXCI5MzZcIixcbiAgXCI5MzdcIixcbiAgXCI5NDBcIixcbiAgXCI5NDFcIixcbiAgXCI5NDdcIixcbiAgXCI5NDlcIixcbiAgXCI5NTJcIixcbiAgXCI5NTRcIixcbiAgXCI5NTZcIixcbiAgXCI5NTlcIixcbiAgXCI5NzBcIixcbiAgXCI5NzFcIixcbiAgXCI5NzJcIixcbiAgXCI5NzNcIixcbiAgXCI5NzVcIixcbiAgXCI5NzhcIixcbiAgXCI5NzlcIixcbiAgXCI5ODBcIixcbiAgXCI5ODRcIixcbiAgXCI5ODVcIixcbiAgXCI5ODlcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMjAxXCIsXG4gIFwiMjAyXCIsXG4gIFwiMjAzXCIsXG4gIFwiMjA1XCIsXG4gIFwiMjA2XCIsXG4gIFwiMjA3XCIsXG4gIFwiMjA4XCIsXG4gIFwiMjA5XCIsXG4gIFwiMjEwXCIsXG4gIFwiMjEyXCIsXG4gIFwiMjEzXCIsXG4gIFwiMjE0XCIsXG4gIFwiMjE1XCIsXG4gIFwiMjE2XCIsXG4gIFwiMjE3XCIsXG4gIFwiMjE4XCIsXG4gIFwiMjE5XCIsXG4gIFwiMjI0XCIsXG4gIFwiMjI1XCIsXG4gIFwiMjI3XCIsXG4gIFwiMjI4XCIsXG4gIFwiMjI5XCIsXG4gIFwiMjMxXCIsXG4gIFwiMjM0XCIsXG4gIFwiMjM5XCIsXG4gIFwiMjQwXCIsXG4gIFwiMjQ4XCIsXG4gIFwiMjUxXCIsXG4gIFwiMjUyXCIsXG4gIFwiMjUzXCIsXG4gIFwiMjU0XCIsXG4gIFwiMjU2XCIsXG4gIFwiMjYwXCIsXG4gIFwiMjYyXCIsXG4gIFwiMjY3XCIsXG4gIFwiMjY5XCIsXG4gIFwiMjcwXCIsXG4gIFwiMjc2XCIsXG4gIFwiMjgxXCIsXG4gIFwiMjgzXCIsXG4gIFwiMzAxXCIsXG4gIFwiMzAyXCIsXG4gIFwiMzAzXCIsXG4gIFwiMzA0XCIsXG4gIFwiMzA1XCIsXG4gIFwiMzA3XCIsXG4gIFwiMzA4XCIsXG4gIFwiMzA5XCIsXG4gIFwiMzEwXCIsXG4gIFwiMzEyXCIsXG4gIFwiMzEzXCIsXG4gIFwiMzE0XCIsXG4gIFwiMzE1XCIsXG4gIFwiMzE2XCIsXG4gIFwiMzE3XCIsXG4gIFwiMzE4XCIsXG4gIFwiMzE5XCIsXG4gIFwiMzIwXCIsXG4gIFwiMzIxXCIsXG4gIFwiMzIzXCIsXG4gIFwiMzMwXCIsXG4gIFwiMzMxXCIsXG4gIFwiMzM0XCIsXG4gIFwiMzM2XCIsXG4gIFwiMzM3XCIsXG4gIFwiMzM5XCIsXG4gIFwiMzQ3XCIsXG4gIFwiMzUxXCIsXG4gIFwiMzUyXCIsXG4gIFwiMzYwXCIsXG4gIFwiMzYxXCIsXG4gIFwiMzg2XCIsXG4gIFwiNDAxXCIsXG4gIFwiNDAyXCIsXG4gIFwiNDA0XCIsXG4gIFwiNDA1XCIsXG4gIFwiNDA2XCIsXG4gIFwiNDA3XCIsXG4gIFwiNDA4XCIsXG4gIFwiNDA5XCIsXG4gIFwiNDEwXCIsXG4gIFwiNDEyXCIsXG4gIFwiNDEzXCIsXG4gIFwiNDE0XCIsXG4gIFwiNDE1XCIsXG4gIFwiNDE3XCIsXG4gIFwiNDE5XCIsXG4gIFwiNDIzXCIsXG4gIFwiNDI0XCIsXG4gIFwiNDI1XCIsXG4gIFwiNDM0XCIsXG4gIFwiNDM1XCIsXG4gIFwiNDQwXCIsXG4gIFwiNDQzXCIsXG4gIFwiNDQ1XCIsXG4gIFwiNDY0XCIsXG4gIFwiNDY5XCIsXG4gIFwiNDcwXCIsXG4gIFwiNDc1XCIsXG4gIFwiNDc4XCIsXG4gIFwiNDc5XCIsXG4gIFwiNDgwXCIsXG4gIFwiNDg0XCIsXG4gIFwiNTAxXCIsXG4gIFwiNTAyXCIsXG4gIFwiNTAzXCIsXG4gIFwiNTA0XCIsXG4gIFwiNTA1XCIsXG4gIFwiNTA3XCIsXG4gIFwiNTA4XCIsXG4gIFwiNTA5XCIsXG4gIFwiNTEwXCIsXG4gIFwiNTEyXCIsXG4gIFwiNTEzXCIsXG4gIFwiNTE1XCIsXG4gIFwiNTE2XCIsXG4gIFwiNTE3XCIsXG4gIFwiNTE4XCIsXG4gIFwiNTIwXCIsXG4gIFwiNTMwXCIsXG4gIFwiNTQwXCIsXG4gIFwiNTQxXCIsXG4gIFwiNTUxXCIsXG4gIFwiNTU3XCIsXG4gIFwiNTU5XCIsXG4gIFwiNTYxXCIsXG4gIFwiNTYyXCIsXG4gIFwiNTYzXCIsXG4gIFwiNTY0XCIsXG4gIFwiNTY3XCIsXG4gIFwiNTcwXCIsXG4gIFwiNTcxXCIsXG4gIFwiNTczXCIsXG4gIFwiNTc0XCIsXG4gIFwiNTgwXCIsXG4gIFwiNTg1XCIsXG4gIFwiNTg2XCIsXG4gIFwiNjAxXCIsXG4gIFwiNjAyXCIsXG4gIFwiNjAzXCIsXG4gIFwiNjA1XCIsXG4gIFwiNjA2XCIsXG4gIFwiNjA3XCIsXG4gIFwiNjA4XCIsXG4gIFwiNjA5XCIsXG4gIFwiNjEwXCIsXG4gIFwiNjEyXCIsXG4gIFwiNjE0XCIsXG4gIFwiNjE1XCIsXG4gIFwiNjE2XCIsXG4gIFwiNjE3XCIsXG4gIFwiNjE4XCIsXG4gIFwiNjE5XCIsXG4gIFwiNjIwXCIsXG4gIFwiNjIzXCIsXG4gIFwiNjI2XCIsXG4gIFwiNjMwXCIsXG4gIFwiNjMxXCIsXG4gIFwiNjM2XCIsXG4gIFwiNjQxXCIsXG4gIFwiNjQ2XCIsXG4gIFwiNjUwXCIsXG4gIFwiNjUxXCIsXG4gIFwiNjYwXCIsXG4gIFwiNjYxXCIsXG4gIFwiNjYyXCIsXG4gIFwiNjY3XCIsXG4gIFwiNjc4XCIsXG4gIFwiNjgyXCIsXG4gIFwiNzAxXCIsXG4gIFwiNzAyXCIsXG4gIFwiNzAzXCIsXG4gIFwiNzA0XCIsXG4gIFwiNzA2XCIsXG4gIFwiNzA3XCIsXG4gIFwiNzA4XCIsXG4gIFwiNzEyXCIsXG4gIFwiNzEzXCIsXG4gIFwiNzE0XCIsXG4gIFwiNzE1XCIsXG4gIFwiNzE2XCIsXG4gIFwiNzE3XCIsXG4gIFwiNzE4XCIsXG4gIFwiNzE5XCIsXG4gIFwiNzIwXCIsXG4gIFwiNzI0XCIsXG4gIFwiNzI3XCIsXG4gIFwiNzMxXCIsXG4gIFwiNzMyXCIsXG4gIFwiNzM0XCIsXG4gIFwiNzM3XCIsXG4gIFwiNzQwXCIsXG4gIFwiNzU0XCIsXG4gIFwiNzU3XCIsXG4gIFwiNzYwXCIsXG4gIFwiNzYzXCIsXG4gIFwiNzY1XCIsXG4gIFwiNzcwXCIsXG4gIFwiNzcyXCIsXG4gIFwiNzczXCIsXG4gIFwiNzc0XCIsXG4gIFwiNzc1XCIsXG4gIFwiNzgxXCIsXG4gIFwiNzg1XCIsXG4gIFwiNzg2XCIsXG4gIFwiODAxXCIsXG4gIFwiODAyXCIsXG4gIFwiODAzXCIsXG4gIFwiODA0XCIsXG4gIFwiODA1XCIsXG4gIFwiODA2XCIsXG4gIFwiODA4XCIsXG4gIFwiODEwXCIsXG4gIFwiODEyXCIsXG4gIFwiODEzXCIsXG4gIFwiODE0XCIsXG4gIFwiODE1XCIsXG4gIFwiODE2XCIsXG4gIFwiODE3XCIsXG4gIFwiODE4XCIsXG4gIFwiODI4XCIsXG4gIFwiODMwXCIsXG4gIFwiODMxXCIsXG4gIFwiODMyXCIsXG4gIFwiODM1XCIsXG4gIFwiODQzXCIsXG4gIFwiODQ1XCIsXG4gIFwiODQ3XCIsXG4gIFwiODQ4XCIsXG4gIFwiODUwXCIsXG4gIFwiODU2XCIsXG4gIFwiODU3XCIsXG4gIFwiODU4XCIsXG4gIFwiODU5XCIsXG4gIFwiODYwXCIsXG4gIFwiODYyXCIsXG4gIFwiODYzXCIsXG4gIFwiODY0XCIsXG4gIFwiODY1XCIsXG4gIFwiODcwXCIsXG4gIFwiODcyXCIsXG4gIFwiODc4XCIsXG4gIFwiOTAxXCIsXG4gIFwiOTAzXCIsXG4gIFwiOTA0XCIsXG4gIFwiOTA2XCIsXG4gIFwiOTA3XCIsXG4gIFwiOTA4XCIsXG4gIFwiOTA5XCIsXG4gIFwiOTEwXCIsXG4gIFwiOTEyXCIsXG4gIFwiOTEzXCIsXG4gIFwiOTE0XCIsXG4gIFwiOTE1XCIsXG4gIFwiOTE2XCIsXG4gIFwiOTE3XCIsXG4gIFwiOTE4XCIsXG4gIFwiOTE5XCIsXG4gIFwiOTIwXCIsXG4gIFwiOTI1XCIsXG4gIFwiOTI4XCIsXG4gIFwiOTMxXCIsXG4gIFwiOTM2XCIsXG4gIFwiOTM3XCIsXG4gIFwiOTQwXCIsXG4gIFwiOTQxXCIsXG4gIFwiOTQ3XCIsXG4gIFwiOTQ5XCIsXG4gIFwiOTUyXCIsXG4gIFwiOTU0XCIsXG4gIFwiOTU2XCIsXG4gIFwiOTU5XCIsXG4gIFwiOTcwXCIsXG4gIFwiOTcxXCIsXG4gIFwiOTcyXCIsXG4gIFwiOTczXCIsXG4gIFwiOTc1XCIsXG4gIFwiOTc4XCIsXG4gIFwiOTc5XCIsXG4gIFwiOTgwXCIsXG4gIFwiOTg0XCIsXG4gIFwiOTg1XCIsXG4gIFwiOTg5XCJcbl07XG4iLCJ2YXIgcGhvbmVfbnVtYmVyID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHBob25lX251bWJlcjtcbnBob25lX251bWJlci5hcmVhX2NvZGUgPSByZXF1aXJlKFwiLi9hcmVhX2NvZGVcIik7XG5waG9uZV9udW1iZXIuZXhjaGFuZ2VfY29kZSA9IHJlcXVpcmUoXCIuL2V4Y2hhbmdlX2NvZGVcIik7XG4iLCJcbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIubG9yZW1cbiAqL1xudmFyIExvcmVtID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIEhlbHBlcnMgPSBmYWtlci5oZWxwZXJzO1xuXG4gIC8qKlxuICAgKiB3b3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ud29yZFxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtXG4gICAqL1xuICBzZWxmLndvcmQgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubG9yZW0ud29yZHMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiB3b3Jkc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLndvcmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gbnVtYmVyIG9mIHdvcmRzLCBkZWZhdWx0cyB0byAzXG4gICAqL1xuICBzZWxmLndvcmRzID0gZnVuY3Rpb24gKG51bSkge1xuICAgICAgaWYgKHR5cGVvZiBudW0gPT0gJ3VuZGVmaW5lZCcpIHsgbnVtID0gMzsgfVxuICAgICAgdmFyIHdvcmRzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgICAgIHdvcmRzLnB1c2goZmFrZXIubG9yZW0ud29yZCgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3b3Jkcy5qb2luKCcgJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNlbnRlbmNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0uc2VudGVuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdvcmRDb3VudCBkZWZhdWx0cyB0byBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAzIGFuZCAxMFxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFuZ2VcbiAgICovXG4gIHNlbGYuc2VudGVuY2UgPSBmdW5jdGlvbiAod29yZENvdW50LCByYW5nZSkge1xuICAgICAgaWYgKHR5cGVvZiB3b3JkQ291bnQgPT0gJ3VuZGVmaW5lZCcpIHsgd29yZENvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMywgbWF4OiAxMCB9KTsgfVxuICAgICAgLy8gaWYgKHR5cGVvZiByYW5nZSA9PSAndW5kZWZpbmVkJykgeyByYW5nZSA9IDc7IH1cblxuICAgICAgLy8gc3RyYW5nZSBpc3N1ZSB3aXRoIHRoZSBub2RlX21pbl90ZXN0IGZhaWxpbmcgZm9yIGNhcHRpYWxpemUsIHBsZWFzZSBmaXggYW5kIGFkZCBmYWtlci5sb3JlbS5iYWNrXG4gICAgICAvL3JldHVybiAgZmFrZXIubG9yZW0ud29yZHMod29yZENvdW50ICsgSGVscGVycy5yYW5kb21OdW1iZXIocmFuZ2UpKS5qb2luKCcgJykuY2FwaXRhbGl6ZSgpO1xuXG4gICAgICB2YXIgc2VudGVuY2UgPSBmYWtlci5sb3JlbS53b3Jkcyh3b3JkQ291bnQpO1xuICAgICAgcmV0dXJuIHNlbnRlbmNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VudGVuY2Uuc2xpY2UoMSkgKyAnLic7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNsdWdcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5zbHVnXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3b3JkQ291bnQgbnVtYmVyIG9mIHdvcmRzLCBkZWZhdWx0cyB0byAzXG4gICAqL1xuICBzZWxmLnNsdWcgPSBmdW5jdGlvbiAod29yZENvdW50KSB7XG4gICAgICB2YXIgd29yZHMgPSBmYWtlci5sb3JlbS53b3Jkcyh3b3JkQ291bnQpO1xuICAgICAgcmV0dXJuIEhlbHBlcnMuc2x1Z2lmeSh3b3Jkcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNlbnRlbmNlc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnNlbnRlbmNlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gc2VudGVuY2VDb3VudCBkZWZhdXRscyB0byBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAyIGFuZCA2XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgICovXG4gIHNlbGYuc2VudGVuY2VzID0gZnVuY3Rpb24gKHNlbnRlbmNlQ291bnQsIHNlcGFyYXRvcikge1xuICAgICAgaWYgKHR5cGVvZiBzZW50ZW5jZUNvdW50ID09PSAndW5kZWZpbmVkJykgeyBzZW50ZW5jZUNvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMiwgbWF4OiA2IH0pO31cbiAgICAgIGlmICh0eXBlb2Ygc2VwYXJhdG9yID09ICd1bmRlZmluZWQnKSB7IHNlcGFyYXRvciA9IFwiIFwiOyB9XG4gICAgICB2YXIgc2VudGVuY2VzID0gW107XG4gICAgICBmb3IgKHNlbnRlbmNlQ291bnQ7IHNlbnRlbmNlQ291bnQgPiAwOyBzZW50ZW5jZUNvdW50LS0pIHtcbiAgICAgICAgc2VudGVuY2VzLnB1c2goZmFrZXIubG9yZW0uc2VudGVuY2UoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VudGVuY2VzLmpvaW4oc2VwYXJhdG9yKTtcbiAgfTtcblxuICAvKipcbiAgICogcGFyYWdyYXBoXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ucGFyYWdyYXBoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZW50ZW5jZUNvdW50IGRlZmF1bHRzIHRvIDNcbiAgICovXG4gIHNlbGYucGFyYWdyYXBoID0gZnVuY3Rpb24gKHNlbnRlbmNlQ291bnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VudGVuY2VDb3VudCA9PSAndW5kZWZpbmVkJykgeyBzZW50ZW5jZUNvdW50ID0gMzsgfVxuICAgICAgcmV0dXJuIGZha2VyLmxvcmVtLnNlbnRlbmNlcyhzZW50ZW5jZUNvdW50ICsgZmFrZXIucmFuZG9tLm51bWJlcigzKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhcmFncmFwaHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5wYXJhZ3JhcGhzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhZ3JhcGhDb3VudCBkZWZhdWx0cyB0byAzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYCdcXG4gXFxyJ2BcbiAgICovXG4gIHNlbGYucGFyYWdyYXBocyA9IGZ1bmN0aW9uIChwYXJhZ3JhcGhDb3VudCwgc2VwYXJhdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBzZXBhcmF0b3IgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHNlcGFyYXRvciA9IFwiXFxuIFxcclwiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBhcmFncmFwaENvdW50ID09ICd1bmRlZmluZWQnKSB7IHBhcmFncmFwaENvdW50ID0gMzsgfVxuICAgIHZhciBwYXJhZ3JhcGhzID0gW107XG4gICAgZm9yIChwYXJhZ3JhcGhDb3VudDsgcGFyYWdyYXBoQ291bnQgPiAwOyBwYXJhZ3JhcGhDb3VudC0tKSB7XG4gICAgICAgIHBhcmFncmFwaHMucHVzaChmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhZ3JhcGhzLmpvaW4oc2VwYXJhdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHJhbmRvbSB0ZXh0IGJhc2VkIG9uIGEgcmFuZG9tIGxvcmVtIG1ldGhvZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnRleHRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVzXG4gICAqL1xuICBzZWxmLnRleHQgPSBmdW5jdGlvbiBsb3JlbVRleHQgKHRpbWVzKSB7XG4gICAgdmFyIGxvcmVtTWV0aG9kcyA9IFsnbG9yZW0ud29yZCcsICdsb3JlbS53b3JkcycsICdsb3JlbS5zZW50ZW5jZScsICdsb3JlbS5zZW50ZW5jZXMnLCAnbG9yZW0ucGFyYWdyYXBoJywgJ2xvcmVtLnBhcmFncmFwaHMnLCAnbG9yZW0ubGluZXMnXTtcbiAgICB2YXIgcmFuZG9tTG9yZW1NZXRob2QgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGxvcmVtTWV0aG9kcyk7XG4gICAgcmV0dXJuIGZha2VyLmZha2UoJ3t7JyArIHJhbmRvbUxvcmVtTWV0aG9kICsgJ319Jyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgbGluZXMgb2YgbG9yZW0gc2VwYXJhdGVkIGJ5IGAnXFxuJ2BcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5saW5lc1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGluZUNvdW50IGRlZmF1bHRzIHRvIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIDEgYW5kIDVcbiAgICovXG4gIHNlbGYubGluZXMgPSBmdW5jdGlvbiBsaW5lcyAobGluZUNvdW50KSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lQ291bnQgPT09ICd1bmRlZmluZWQnKSB7IGxpbmVDb3VudCA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtaW46IDEsIG1heDogNSB9KTt9XG4gICAgcmV0dXJuIGZha2VyLmxvcmVtLnNlbnRlbmNlcyhsaW5lQ291bnQsICdcXG4nKVxuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufTtcblxuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gTG9yZW07XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLm5hbWVcbiAqL1xuZnVuY3Rpb24gTmFtZSAoZmFrZXIpIHtcblxuICAvKipcbiAgICogZmlyc3ROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5maXJzdE5hbWUgPSBmdW5jdGlvbiAoZ2VuZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLm1hbGVfZmlyc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5mZW1hbGVfZmlyc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgLy8gc29tZSBsb2NhbGUgZGF0YXNldHMgKCBsaWtlIHJ1ICkgaGF2ZSBmaXJzdF9uYW1lIHNwbGl0IGJ5IGdlbmRlci4gc2luY2UgdGhlIG5hbWUuZmlyc3RfbmFtZSBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGVzZSBkYXRhc2V0cyxcbiAgICAgIC8vIHdlIG11c3QgcmFuZG9tbHkgcGljayBhIG5hbWUgZnJvbSBlaXRoZXIgZ2VuZGVyIGFycmF5IHNvIGZha2VyLm5hbWUuZmlyc3ROYW1lIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGxvY2FsZSBkYXRhICggYW5kIG5vdCBmYWxsYmFjayApXG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGlmIChnZW5kZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUubWFsZV9maXJzdF9uYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUuZmVtYWxlX2ZpcnN0X25hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZpcnN0X25hbWUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBsYXN0TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGxhc3ROYW1lXG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5sYXN0TmFtZSA9IGZ1bmN0aW9uIChnZW5kZXIpIHtcbiAgICBpZiAodHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUubWFsZV9sYXN0X25hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUuZmVtYWxlX2xhc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgLy8gc29tZSBsb2NhbGUgZGF0YXNldHMgKCBsaWtlIHJ1ICkgaGF2ZSBsYXN0X25hbWUgc3BsaXQgYnkgZ2VuZGVyLiBpIGhhdmUgbm8gaWRlYSBob3cgbGFzdCBuYW1lcyBjYW4gaGF2ZSBnZW5kZXJzLCBidXQgYWxzbyBpIGRvIG5vdCBzcGVhayBydXNzaWFuXG4gICAgICAvLyBzZWUgYWJvdmUgY29tbWVudCBvZiBmaXJzdE5hbWUgbWV0aG9kXG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGlmIChnZW5kZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUubWFsZV9sYXN0X25hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUuZmVtYWxlX2xhc3RfbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUubGFzdF9uYW1lKTtcbiAgfTtcblxuICAvKipcbiAgICogZmluZE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmaW5kTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYXN0TmFtZVxuICAgKiBAcGFyYW0ge21peGVkfSBnZW5kZXJcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuZmluZE5hbWUgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZ2VuZGVyKSB7XG4gICAgICB2YXIgciA9IGZha2VyLnJhbmRvbS5udW1iZXIoOCk7XG4gICAgICB2YXIgcHJlZml4LCBzdWZmaXg7XG4gICAgICAvLyBpbiBwYXJ0aWN1bGFyIGxvY2FsZXMgZmlyc3QgYW5kIGxhc3QgbmFtZXMgc3BsaXQgYnkgZ2VuZGVyLFxuICAgICAgLy8gdGh1cyB3ZSBrZWVwIGNvbnNpc3RlbmN5IGJ5IHBhc3NpbmcgMCBhcyBtYWxlIGFuZCAxIGFzIGZlbWFsZVxuICAgICAgaWYgKHR5cGVvZiBnZW5kZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGdlbmRlciA9IGZha2VyLnJhbmRvbS5udW1iZXIoMSk7XG4gICAgICB9XG4gICAgICBmaXJzdE5hbWUgPSBmaXJzdE5hbWUgfHwgZmFrZXIubmFtZS5maXJzdE5hbWUoZ2VuZGVyKTtcbiAgICAgIGxhc3ROYW1lID0gbGFzdE5hbWUgfHwgZmFrZXIubmFtZS5sYXN0TmFtZShnZW5kZXIpO1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgICAgcHJlZml4ID0gZmFrZXIubmFtZS5wcmVmaXgoZ2VuZGVyKTtcbiAgICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBcIiBcIiArIGZpcnN0TmFtZSArIFwiIFwiICsgbGFzdE5hbWU7XG4gICAgICAgICAgfVxuICAgICAgY2FzZSAxOlxuICAgICAgICAgIHN1ZmZpeCA9IGZha2VyLm5hbWUuc3VmZml4KGdlbmRlcik7XG4gICAgICAgICAgaWYgKHN1ZmZpeCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmlyc3ROYW1lICsgXCIgXCIgKyBsYXN0TmFtZSArIFwiIFwiICsgc3VmZml4O1xuICAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpcnN0TmFtZSArIFwiIFwiICsgbGFzdE5hbWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYlRpdGxlXG4gICAqXG4gICAqIEBtZXRob2Qgam9iVGl0bGVcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuam9iVGl0bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICBmYWtlci5uYW1lLmpvYkRlc2NyaXB0b3IoKSArIFwiIFwiICtcbiAgICAgIGZha2VyLm5hbWUuam9iQXJlYSgpICsgXCIgXCIgK1xuICAgICAgZmFrZXIubmFtZS5qb2JUeXBlKCk7XG4gIH07XG4gIFxuICAvKipcbiAgICogcHJlZml4XG4gICAqXG4gICAqIEBtZXRob2QgcHJlZml4XG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5wcmVmaXggPSBmdW5jdGlvbiAoZ2VuZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLm1hbGVfcHJlZml4ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZlbWFsZV9wcmVmaXggIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2VuZGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICBnZW5kZXIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEpO1xuICAgICAgfVxuICAgICAgaWYgKGdlbmRlciA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5tYWxlX3ByZWZpeCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5mZW1hbGVfcHJlZml4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5wcmVmaXgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBzdWZmaXhcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuc3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5zdWZmaXgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiB0aXRsZVxuICAgKlxuICAgKiBAbWV0aG9kIHRpdGxlXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLnRpdGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciAgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuZGVzY3JpcHRvciksXG4gICAgICAgICAgbGV2ZWwgICAgICAgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUubGV2ZWwpLFxuICAgICAgICAgIGpvYiAgICAgICAgID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmpvYik7XG5cbiAgICAgIHJldHVybiBkZXNjcmlwdG9yICsgXCIgXCIgKyBsZXZlbCArIFwiIFwiICsgam9iO1xuICB9O1xuXG4gIC8qKlxuICAgKiBqb2JEZXNjcmlwdG9yXG4gICAqXG4gICAqIEBtZXRob2Qgam9iRGVzY3JpcHRvclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5qb2JEZXNjcmlwdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuZGVzY3JpcHRvcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYkFyZWFcbiAgICpcbiAgICogQG1ldGhvZCBqb2JBcmVhXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYkFyZWEgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5sZXZlbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYlR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBqb2JUeXBlXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYlR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5qb2IpO1xuICB9O1xuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gTmFtZTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIucGhvbmVcbiAqL1xudmFyIFBob25lID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogcGhvbmVOdW1iZXJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5waG9uZS5waG9uZU51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0XG4gICAqL1xuICBzZWxmLnBob25lTnVtYmVyID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8IGZha2VyLnBob25lLnBob25lRm9ybWF0cygpO1xuICAgICAgcmV0dXJuIGZha2VyLmhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoZm9ybWF0KTtcbiAgfTtcblxuICAvLyBGSVhNRTogdGhpcyBpcyBzdHJhbmdlIHBhc3NpbmcgaW4gYW4gYXJyYXkgaW5kZXguXG4gIC8qKlxuICAgKiBwaG9uZU51bWJlckZvcm1hdFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnBob25lLnBob25lRm9ybWF0c0FycmF5SW5kZXhcbiAgICogQHBhcmFtIHBob25lRm9ybWF0c0FycmF5SW5kZXhcbiAgICovXG4gIHNlbGYucGhvbmVOdW1iZXJGb3JtYXQgPSBmdW5jdGlvbiAocGhvbmVGb3JtYXRzQXJyYXlJbmRleCkge1xuICAgICAgcGhvbmVGb3JtYXRzQXJyYXlJbmRleCA9IHBob25lRm9ybWF0c0FycmF5SW5kZXggfHwgMDtcbiAgICAgIHJldHVybiBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKGZha2VyLmRlZmluaXRpb25zLnBob25lX251bWJlci5mb3JtYXRzW3Bob25lRm9ybWF0c0FycmF5SW5kZXhdKTtcbiAgfTtcblxuICAvKipcbiAgICogcGhvbmVGb3JtYXRzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucGhvbmUucGhvbmVGb3JtYXRzXG4gICAqL1xuICBzZWxmLnBob25lRm9ybWF0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5waG9uZV9udW1iZXIuZm9ybWF0cyk7XG4gIH07XG4gIFxuICByZXR1cm4gc2VsZjtcblxufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBQaG9uZTsiLCJ2YXIgbWVyc2VubmUgPSByZXF1aXJlKCcuLi92ZW5kb3IvbWVyc2VubmUnKTtcblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5yYW5kb21cbiAqL1xuZnVuY3Rpb24gUmFuZG9tIChmYWtlciwgc2VlZCkge1xuICAvLyBVc2UgYSB1c2VyIHByb3ZpZGVkIHNlZWQgaWYgaXQgZXhpc3RzXG4gIGlmIChzZWVkKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VlZCkgJiYgc2VlZC5sZW5ndGgpIHtcbiAgICAgIG1lcnNlbm5lLnNlZWRfYXJyYXkoc2VlZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbWVyc2VubmUuc2VlZChzZWVkKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIHJldHVybnMgYSBzaW5nbGUgcmFuZG9tIG51bWJlciBiYXNlZCBvbiBhIG1heCBudW1iZXIgb3IgcmFuZ2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ubnVtYmVyXG4gICAqIEBwYXJhbSB7bWl4ZWR9IG9wdGlvbnNcbiAgICovXG4gIHRoaXMubnVtYmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgbWF4OiBvcHRpb25zXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1pbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgb3B0aW9ucy5taW4gPSAwO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXggPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG9wdGlvbnMubWF4ID0gOTk5OTk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG9wdGlvbnMucHJlY2lzaW9uID0gMTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHRoZSByYW5nZSBpbmNsdXNpdmUgb2YgdGhlIG1heCB2YWx1ZVxuICAgIHZhciBtYXggPSBvcHRpb25zLm1heDtcbiAgICBpZiAobWF4ID49IDApIHtcbiAgICAgIG1heCArPSBvcHRpb25zLnByZWNpc2lvbjtcbiAgICB9XG5cbiAgICB2YXIgcmFuZG9tTnVtYmVyID0gb3B0aW9ucy5wcmVjaXNpb24gKiBNYXRoLmZsb29yKFxuICAgICAgbWVyc2VubmUucmFuZChtYXggLyBvcHRpb25zLnByZWNpc2lvbiwgb3B0aW9ucy5taW4gLyBvcHRpb25zLnByZWNpc2lvbikpO1xuXG4gICAgcmV0dXJuIHJhbmRvbU51bWJlcjtcblxuICB9XG5cbiAgLyoqXG4gICAqIHRha2VzIGFuIGFycmF5IGFuZCByZXR1cm5zIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhlIGFycmF5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudFxuICAgKiBAcGFyYW0ge2FycmF5fSBhcnJheVxuICAgKi9cbiAgdGhpcy5hcnJheUVsZW1lbnQgPSBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgIGFycmF5ID0gYXJyYXkgfHwgW1wiYVwiLCBcImJcIiwgXCJjXCJdO1xuICAgICAgdmFyIHIgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBhcnJheS5sZW5ndGggLSAxIH0pO1xuICAgICAgcmV0dXJuIGFycmF5W3JdO1xuICB9XG5cbiAgLyoqXG4gICAqIHRha2VzIGFuIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmFuZG9tbHkga2V5IG9yIHZhbHVlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge21peGVkfSBmaWVsZFxuICAgKi9cbiAgdGhpcy5vYmplY3RFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCwgZmllbGQpIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdCB8fCB7IFwiZm9vXCI6IFwiYmFyXCIsIFwidG9vXCI6IFwiY2FyXCIgfTtcbiAgICAgIHZhciBhcnJheSA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgICB2YXIga2V5ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChhcnJheSk7XG5cbiAgICAgIHJldHVybiBmaWVsZCA9PT0gXCJrZXlcIiA/IGtleSA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIHV1aWRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20udXVpZFxuICAgKi9cbiAgdGhpcy51dWlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIFJGQzQxMjJfVEVNUExBVEUgPSAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4JztcbiAgICAgIHZhciByZXBsYWNlUGxhY2Vob2xkZXJzID0gZnVuY3Rpb24gKHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgdmFyIHJhbmRvbSA9IHNlbGYubnVtYmVyKHsgbWluOiAwLCBtYXg6IDE1IH0pO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHBsYWNlaG9sZGVyID09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJjB4MyB8IDB4OCk7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gUkZDNDEyMl9URU1QTEFURS5yZXBsYWNlKC9beHldL2csIHJlcGxhY2VQbGFjZWhvbGRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGJvb2xlYW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uYm9vbGVhblxuICAgKi9cbiAgdGhpcy5ib29sZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICEhZmFrZXIucmFuZG9tLm51bWJlcigxKVxuICB9XG5cbiAgLy8gVE9ETzogaGF2ZSBhYmlsaXR5IHRvIHJldHVybiBzcGVjaWZpYyB0eXBlIG9mIHdvcmQ/IEFzIGluOiBub3VuLCBhZGplY3RpdmUsIHZlcmIsIGV0Y1xuICAvKipcbiAgICogd29yZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS53b3JkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLndvcmQgPSBmdW5jdGlvbiByYW5kb21Xb3JkICh0eXBlKSB7XG5cbiAgICB2YXIgd29yZE1ldGhvZHMgPSBbXG4gICAgJ2NvbW1lcmNlLmRlcGFydG1lbnQnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0TmFtZScsXG4gICAgJ2NvbW1lcmNlLnByb2R1Y3RBZGplY3RpdmUnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0TWF0ZXJpYWwnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0JyxcbiAgICAnY29tbWVyY2UuY29sb3InLFxuXG4gICAgJ2NvbXBhbnkuY2F0Y2hQaHJhc2VBZGplY3RpdmUnLFxuICAgICdjb21wYW55LmNhdGNoUGhyYXNlRGVzY3JpcHRvcicsXG4gICAgJ2NvbXBhbnkuY2F0Y2hQaHJhc2VOb3VuJyxcbiAgICAnY29tcGFueS5ic0FkamVjdGl2ZScsXG4gICAgJ2NvbXBhbnkuYnNCdXp6JyxcbiAgICAnY29tcGFueS5ic05vdW4nLFxuICAgICdhZGRyZXNzLnN0cmVldFN1ZmZpeCcsXG4gICAgJ2FkZHJlc3MuY291bnR5JyxcbiAgICAnYWRkcmVzcy5jb3VudHJ5JyxcbiAgICAnYWRkcmVzcy5zdGF0ZScsXG5cbiAgICAnZmluYW5jZS5hY2NvdW50TmFtZScsXG4gICAgJ2ZpbmFuY2UudHJhbnNhY3Rpb25UeXBlJyxcbiAgICAnZmluYW5jZS5jdXJyZW5jeU5hbWUnLFxuXG4gICAgJ2hhY2tlci5ub3VuJyxcbiAgICAnaGFja2VyLnZlcmInLFxuICAgICdoYWNrZXIuYWRqZWN0aXZlJyxcbiAgICAnaGFja2VyLmluZ3ZlcmInLFxuICAgICdoYWNrZXIuYWJicmV2aWF0aW9uJyxcblxuICAgICduYW1lLmpvYkRlc2NyaXB0b3InLFxuICAgICduYW1lLmpvYkFyZWEnLFxuICAgICduYW1lLmpvYlR5cGUnXTtcblxuICAgIC8vIHJhbmRvbWx5IHBpY2sgZnJvbSB0aGUgbWFueSBmYWtlciBtZXRob2RzIHRoYXQgY2FuIGdlbmVyYXRlIHdvcmRzXG4gICAgdmFyIHJhbmRvbVdvcmRNZXRob2QgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHdvcmRNZXRob2RzKTtcbiAgICByZXR1cm4gZmFrZXIuZmFrZSgne3snICsgcmFuZG9tV29yZE1ldGhvZCArICd9fScpO1xuXG4gIH1cblxuICAvKipcbiAgICogcmFuZG9tV29yZHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ud29yZHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IGRlZmF1bHRzIHRvIGEgcmFuZG9tIHZhbHVlIGJldHdlZW4gMSBhbmQgM1xuICAgKi9cbiAgdGhpcy53b3JkcyA9IGZ1bmN0aW9uIHJhbmRvbVdvcmRzIChjb3VudCkge1xuICAgIHZhciB3b3JkcyA9IFtdO1xuICAgIGlmICh0eXBlb2YgY291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7bWluOjEsIG1heDogM30pO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaTxjb3VudDsgaSsrKSB7XG4gICAgICB3b3Jkcy5wdXNoKGZha2VyLnJhbmRvbS53b3JkKCkpO1xuICAgIH1cbiAgICByZXR1cm4gd29yZHMuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxvY2FsZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5pbWFnZVxuICAgKi9cbiAgdGhpcy5pbWFnZSA9IGZ1bmN0aW9uIHJhbmRvbUltYWdlICgpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb2NhbGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ubG9jYWxlXG4gICAqL1xuICB0aGlzLmxvY2FsZSA9IGZ1bmN0aW9uIHJhbmRvbUxvY2FsZSAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoT2JqZWN0LmtleXMoZmFrZXIubG9jYWxlcykpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhbHBoYU51bWVyaWNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uYWxwaGFOdW1lcmljXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBkZWZhdWx0cyB0byAxXG4gICAqL1xuICB0aGlzLmFscGhhTnVtZXJpYyA9IGZ1bmN0aW9uIGFscGhhTnVtZXJpYyhjb3VudCkge1xuICAgIGlmICh0eXBlb2YgY291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvdW50ID0gMTtcbiAgICB9XG5cbiAgICB2YXIgd2hvbGVTdHJpbmcgPSBcIlwiO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICB3aG9sZVN0cmluZyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCJhXCIsIFwiYlwiLCBcImNcIiwgXCJkXCIsIFwiZVwiLCBcImZcIiwgXCJnXCIsIFwiaFwiLCBcImlcIiwgXCJqXCIsIFwia1wiLCBcImxcIiwgXCJtXCIsIFwiblwiLCBcIm9cIiwgXCJwXCIsIFwicVwiLCBcInJcIiwgXCJzXCIsIFwidFwiLCBcInVcIiwgXCJ2XCIsIFwid1wiLCBcInhcIiwgXCJ5XCIsIFwielwiXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdob2xlU3RyaW5nO1xuICB9O1xuXG4gIHJldHVybiB0aGlzO1xuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gUmFuZG9tO1xuIiwiLy8gZ2VuZXJhdGVzIGZha2UgZGF0YSBmb3IgbWFueSBjb21wdXRlciBzeXN0ZW1zIHByb3BlcnRpZXNcblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5zeXN0ZW1cbiAqL1xuZnVuY3Rpb24gU3lzdGVtIChmYWtlcikge1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBmaWxlIG5hbWUgd2l0aCBleHRlbnNpb24gb3Igb3B0aW9uYWwgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLmZpbGVOYW1lID0gZnVuY3Rpb24gKGV4dCwgdHlwZSkge1xuICAgIHZhciBzdHIgPSBmYWtlci5mYWtlKFwie3tyYW5kb20ud29yZHN9fS57e3N5c3RlbS5maWxlRXh0fX1cIik7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyAvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwsL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLS9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXFxcL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbW1vbkZpbGVOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmNvbW1vbkZpbGVOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICovXG4gIHRoaXMuY29tbW9uRmlsZU5hbWUgPSBmdW5jdGlvbiAoZXh0LCB0eXBlKSB7XG4gICAgdmFyIHN0ciA9IGZha2VyLnJhbmRvbS53b3JkcygpICsgXCIuXCIgKyAoZXh0IHx8IGZha2VyLnN5c3RlbS5jb21tb25GaWxlRXh0KCkpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8gL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC0vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxcXC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC8vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtaW1lVHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5taW1lVHlwZVxuICAgKi9cbiAgdGhpcy5taW1lVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChPYmplY3Qua2V5cyhmYWtlci5kZWZpbml0aW9ucy5zeXN0ZW0ubWltZVR5cGVzKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBjb21tb25seSB1c2VkIGZpbGUgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5jb21tb25GaWxlVHlwZVxuICAgKi9cbiAgdGhpcy5jb21tb25GaWxlVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZXMgPSBbJ3ZpZGVvJywgJ2F1ZGlvJywgJ2ltYWdlJywgJ3RleHQnLCAnYXBwbGljYXRpb24nXTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh0eXBlcylcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBhIGNvbW1vbmx5IHVzZWQgZmlsZSBleHRlbnNpb24gYmFzZWQgb24gb3B0aW9uYWwgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5jb21tb25GaWxlRXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLmNvbW1vbkZpbGVFeHQgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHZhciB0eXBlcyA9IFtcbiAgICAgICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgJ2F1ZGlvL21wZWcnLFxuICAgICAgJ2F1ZGlvL3dhdicsXG4gICAgICAnaW1hZ2UvcG5nJyxcbiAgICAgICdpbWFnZS9qcGVnJyxcbiAgICAgICdpbWFnZS9naWYnLFxuICAgICAgJ3ZpZGVvL21wNCcsXG4gICAgICAndmlkZW8vbXBlZycsXG4gICAgICAndGV4dC9odG1sJ1xuICAgIF07XG4gICAgcmV0dXJuIGZha2VyLnN5c3RlbS5maWxlRXh0KGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodHlwZXMpKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGFueSBmaWxlIHR5cGUgYXZhaWxhYmxlIGFzIG1pbWUtdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlVHlwZVxuICAgKi9cbiAgdGhpcy5maWxlVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZXMgPSBbXTtcbiAgICB2YXIgbWltZXMgPSBmYWtlci5kZWZpbml0aW9ucy5zeXN0ZW0ubWltZVR5cGVzO1xuICAgIE9iamVjdC5rZXlzKG1pbWVzKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe1xuICAgICAgdmFyIHBhcnRzID0gbS5zcGxpdCgnLycpO1xuICAgICAgaWYgKHR5cGVzLmluZGV4T2YocGFydHNbMF0pID09PSAtMSkge1xuICAgICAgICB0eXBlcy5wdXNoKHBhcnRzWzBdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh0eXBlcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZpbGVFeHRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZmlsZUV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGVcbiAgICovXG4gIHRoaXMuZmlsZUV4dCA9IGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHZhciBleHRzID0gW107XG4gICAgdmFyIG1pbWVzID0gZmFrZXIuZGVmaW5pdGlvbnMuc3lzdGVtLm1pbWVUeXBlcztcblxuICAgIC8vIGdldCBzcGVjaWZpYyBleHQgYnkgbWltZS10eXBlXG4gICAgaWYgKHR5cGVvZiBtaW1lc1ttaW1lVHlwZV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KG1pbWVzW21pbWVUeXBlXS5leHRlbnNpb25zKTtcbiAgICB9XG5cbiAgICAvLyByZWR1Y2UgbWltZS10eXBlcyB0byB0aG9zZSB3aXRoIGZpbGUtZXh0ZW5zaW9uc1xuICAgIE9iamVjdC5rZXlzKG1pbWVzKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe1xuICAgICAgaWYgKG1pbWVzW21dLmV4dGVuc2lvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBtaW1lc1ttXS5leHRlbnNpb25zLmZvckVhY2goZnVuY3Rpb24oZXh0KXtcbiAgICAgICAgICBleHRzLnB1c2goZXh0KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChleHRzKTtcbiAgfTtcblxuICAvKipcbiAgICogbm90IHlldCBpbXBsZW1lbnRlZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5kaXJlY3RvcnlQYXRoXG4gICAqL1xuICB0aGlzLmRpcmVjdG9yeVBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gVE9ET1xuICB9O1xuXG4gIC8qKlxuICAgKiBub3QgeWV0IGltcGxlbWVudGVkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmZpbGVQYXRoXG4gICAqL1xuICB0aGlzLmZpbGVQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE9cbiAgfTtcblxuICAvKipcbiAgICogc2VtdmVyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLnNlbXZlclxuICAgKi9cbiAgdGhpcy5zZW12ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gW2Zha2VyLnJhbmRvbS5udW1iZXIoOSksXG4gICAgICAgICAgICAgIGZha2VyLnJhbmRvbS5udW1iZXIoOSksXG4gICAgICAgICAgICAgIGZha2VyLnJhbmRvbS5udW1iZXIoOSldLmpvaW4oJy4nKTtcbiAgfVxuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gU3lzdGVtO1xuIiwidmFyIEZha2VyID0gcmVxdWlyZSgnLi4vbGliJyk7XG52YXIgZmFrZXIgPSBuZXcgRmFrZXIoeyBsb2NhbGU6ICdlbl9VUycsIGxvY2FsZUZhbGxiYWNrOiAnZW4nIH0pO1xuZmFrZXIubG9jYWxlc1snZW5fVVMnXSA9IHJlcXVpcmUoJy4uL2xpYi9sb2NhbGVzL2VuX1VTJyk7XG5mYWtlci5sb2NhbGVzWydlbiddID0gcmVxdWlyZSgnLi4vbGliL2xvY2FsZXMvZW4nKTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZmFrZXI7XG4iLCIvLyB0aGlzIHByb2dyYW0gaXMgYSBKYXZhU2NyaXB0IHZlcnNpb24gb2YgTWVyc2VubmUgVHdpc3Rlciwgd2l0aCBjb25jZWFsbWVudCBhbmQgZW5jYXBzdWxhdGlvbiBpbiBjbGFzcyxcbi8vIGFuIGFsbW9zdCBzdHJhaWdodCBjb252ZXJzaW9uIGZyb20gdGhlIG9yaWdpbmFsIHByb2dyYW0sIG10MTk5Mzdhci5jLFxuLy8gdHJhbnNsYXRlZCBieSB5LiBva2FkYSBvbiBKdWx5IDE3LCAyMDA2LlxuLy8gYW5kIG1vZGlmaWVkIGEgbGl0dGxlIGF0IGp1bHkgMjAsIDIwMDYsIGJ1dCB0aGVyZSBhcmUgbm90IGFueSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlcy5cbi8vIGluIHRoaXMgcHJvZ3JhbSwgcHJvY2VkdXJlIGRlc2NyaXB0aW9ucyBhbmQgY29tbWVudHMgb2Ygb3JpZ2luYWwgc291cmNlIGNvZGUgd2VyZSBub3QgcmVtb3ZlZC5cbi8vIGxpbmVzIGNvbW1lbnRlZCB3aXRoIC8vYy8vIHdlcmUgb3JpZ2luYWxseSBkZXNjcmlwdGlvbnMgb2YgYyBwcm9jZWR1cmUuIGFuZCBhIGZldyBmb2xsb3dpbmcgbGluZXMgYXJlIGFwcHJvcHJpYXRlIEphdmFTY3JpcHQgZGVzY3JpcHRpb25zLlxuLy8gbGluZXMgY29tbWVudGVkIHdpdGggLyogYW5kICovIGFyZSBvcmlnaW5hbCBjb21tZW50cy5cbi8vIGxpbmVzIGNvbW1lbnRlZCB3aXRoIC8vIGFyZSBhZGRpdGlvbmFsIGNvbW1lbnRzIGluIHRoaXMgSmF2YVNjcmlwdCB2ZXJzaW9uLlxuLy8gYmVmb3JlIHVzaW5nIHRoaXMgdmVyc2lvbiwgY3JlYXRlIGF0IGxlYXN0IG9uZSBpbnN0YW5jZSBvZiBNZXJzZW5uZVR3aXN0ZXIxOTkzNyBjbGFzcywgYW5kIGluaXRpYWxpemUgdGhlIGVhY2ggc3RhdGUsIGdpdmVuIGJlbG93IGluIGMgY29tbWVudHMsIG9mIGFsbCB0aGUgaW5zdGFuY2VzLlxuLypcbiAgIEEgQy1wcm9ncmFtIGZvciBNVDE5OTM3LCB3aXRoIGluaXRpYWxpemF0aW9uIGltcHJvdmVkIDIwMDIvMS8yNi5cbiAgIENvZGVkIGJ5IFRha3VqaSBOaXNoaW11cmEgYW5kIE1ha290byBNYXRzdW1vdG8uXG5cbiAgIEJlZm9yZSB1c2luZywgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgYnkgdXNpbmcgaW5pdF9nZW5yYW5kKHNlZWQpXG4gICBvciBpbml0X2J5X2FycmF5KGluaXRfa2V5LCBrZXlfbGVuZ3RoKS5cblxuICAgQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAwMiwgTWFrb3RvIE1hdHN1bW90byBhbmQgVGFrdWppIE5pc2hpbXVyYSxcbiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICBhcmUgbWV0OlxuXG4gICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAgMy4gVGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZVxuICAgICAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW5cbiAgICAgICAgcGVybWlzc2lvbi5cblxuICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICAgXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1JcbiAgIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLFxuICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cblxuXG4gICBBbnkgZmVlZGJhY2sgaXMgdmVyeSB3ZWxjb21lLlxuICAgaHR0cDovL3d3dy5tYXRoLnNjaS5oaXJvc2hpbWEtdS5hYy5qcC9+bS1tYXQvTVQvZW10Lmh0bWxcbiAgIGVtYWlsOiBtLW1hdCBAIG1hdGguc2NpLmhpcm9zaGltYS11LmFjLmpwIChyZW1vdmUgc3BhY2UpXG4qL1xuXG5mdW5jdGlvbiBNZXJzZW5uZVR3aXN0ZXIxOTkzNygpXG57XG5cdC8qIGNvbnN0YW50cyBzaG91bGQgYmUgc2NvcGVkIGluc2lkZSB0aGUgY2xhc3MgKi9cblx0dmFyIE4sIE0sIE1BVFJJWF9BLCBVUFBFUl9NQVNLLCBMT1dFUl9NQVNLO1xuXHQvKiBQZXJpb2QgcGFyYW1ldGVycyAqL1xuXHQvL2MvLyNkZWZpbmUgTiA2MjRcblx0Ly9jLy8jZGVmaW5lIE0gMzk3XG5cdC8vYy8vI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqL1xuXHQvL2MvLyNkZWZpbmUgVVBQRVJfTUFTSyAweDgwMDAwMDAwVUwgLyogbW9zdCBzaWduaWZpY2FudCB3LXIgYml0cyAqL1xuXHQvL2MvLyNkZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZmZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovXG5cdE4gPSA2MjQ7XG5cdE0gPSAzOTc7XG5cdE1BVFJJWF9BID0gMHg5OTA4YjBkZjsgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqL1xuXHRVUFBFUl9NQVNLID0gMHg4MDAwMDAwMDsgLyogbW9zdCBzaWduaWZpY2FudCB3LXIgYml0cyAqL1xuXHRMT1dFUl9NQVNLID0gMHg3ZmZmZmZmZjsgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovXG5cdC8vYy8vc3RhdGljIHVuc2lnbmVkIGxvbmcgbXRbTl07IC8qIHRoZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZlY3RvciAgKi9cblx0Ly9jLy9zdGF0aWMgaW50IG10aT1OKzE7IC8qIG10aT09TisxIG1lYW5zIG10W05dIGlzIG5vdCBpbml0aWFsaXplZCAqL1xuXHR2YXIgbXQgPSBuZXcgQXJyYXkoTik7ICAgLyogdGhlIGFycmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqL1xuXHR2YXIgbXRpID0gTisxOyAgICAgICAgICAgLyogbXRpPT1OKzEgbWVhbnMgbXRbTl0gaXMgbm90IGluaXRpYWxpemVkICovXG5cblx0ZnVuY3Rpb24gdW5zaWduZWQzMiAobjEpIC8vIHJldHVybnMgYSAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciBmcm9tIGFuIG9wZXJhbmQgdG8gd2hpY2ggYXBwbGllZCBhIGJpdCBvcGVyYXRvci5cblx0e1xuXHRcdHJldHVybiBuMSA8IDAgPyAobjEgXiBVUFBFUl9NQVNLKSArIFVQUEVSX01BU0sgOiBuMTtcblx0fVxuXG5cdGZ1bmN0aW9uIHN1YnRyYWN0aW9uMzIgKG4xLCBuMikgLy8gZW11bGF0ZXMgbG93ZXJmbG93IG9mIGEgYyAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciB2YXJpYWJsZSwgaW5zdGVhZCBvZiB0aGUgb3BlcmF0b3IgLS4gdGhlc2UgYm90aCBhcmd1bWVudHMgbXVzdCBiZSBub24tbmVnYXRpdmUgaW50ZWdlcnMgZXhwcmVzc2libGUgdXNpbmcgdW5zaWduZWQgMzIgYml0cy5cblx0e1xuXHRcdHJldHVybiBuMSA8IG4yID8gdW5zaWduZWQzMigoMHgxMDAwMDAwMDAgLSAobjIgLSBuMSkpICYgMHhmZmZmZmZmZikgOiBuMSAtIG4yO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkaXRpb24zMiAobjEsIG4yKSAvLyBlbXVsYXRlcyBvdmVyZmxvdyBvZiBhIGMgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgdmFyaWFibGUsIGluc3RlYWQgb2YgdGhlIG9wZXJhdG9yICsuIHRoZXNlIGJvdGggYXJndW1lbnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGV4cHJlc3NpYmxlIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMuXG5cdHtcblx0XHRyZXR1cm4gdW5zaWduZWQzMigobjEgKyBuMikgJiAweGZmZmZmZmZmKVxuXHR9XG5cblx0ZnVuY3Rpb24gbXVsdGlwbGljYXRpb24zMiAobjEsIG4yKSAvLyBlbXVsYXRlcyBvdmVyZmxvdyBvZiBhIGMgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgdmFyaWFibGUsIGluc3RlYWQgb2YgdGhlIG9wZXJhdG9yICouIHRoZXNlIGJvdGggYXJndW1lbnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGV4cHJlc3NpYmxlIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMuXG5cdHtcblx0XHR2YXIgc3VtID0gMDtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDMyOyArK2kpe1xuXHRcdFx0aWYgKChuMSA+Pj4gaSkgJiAweDEpe1xuXHRcdFx0XHRzdW0gPSBhZGRpdGlvbjMyKHN1bSwgdW5zaWduZWQzMihuMiA8PCBpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdW07XG5cdH1cblxuXHQvKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEgc2VlZCAqL1xuXHQvL2MvL3ZvaWQgaW5pdF9nZW5yYW5kKHVuc2lnbmVkIGxvbmcgcylcblx0dGhpcy5pbml0X2dlbnJhbmQgPSBmdW5jdGlvbiAocylcblx0e1xuXHRcdC8vYy8vbXRbMF09IHMgJiAweGZmZmZmZmZmO1xuXHRcdG10WzBdPSB1bnNpZ25lZDMyKHMgJiAweGZmZmZmZmZmKTtcblx0XHRmb3IgKG10aT0xOyBtdGk8TjsgbXRpKyspIHtcblx0XHRcdG10W210aV0gPVxuXHRcdFx0Ly9jLy8oMTgxMjQzMzI1MyAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkpO1xuXHRcdFx0YWRkaXRpb24zMihtdWx0aXBsaWNhdGlvbjMyKDE4MTI0MzMyNTMsIHVuc2lnbmVkMzIobXRbbXRpLTFdIF4gKG10W210aS0xXSA+Pj4gMzApKSksIG10aSk7XG5cdFx0XHQvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVsdGlwbGllci4gKi9cblx0XHRcdC8qIEluIHRoZSBwcmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAqL1xuXHRcdFx0Lyogb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtdLiAgICAgICAgICAgICAgICAgICAgICAgICovXG5cdFx0XHQvKiAyMDAyLzAxLzA5IG1vZGlmaWVkIGJ5IE1ha290byBNYXRzdW1vdG8gICAgICAgICAgICAgKi9cblx0XHRcdC8vYy8vbXRbbXRpXSAmPSAweGZmZmZmZmZmO1xuXHRcdFx0bXRbbXRpXSA9IHVuc2lnbmVkMzIobXRbbXRpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0LyogZm9yID4zMiBiaXQgbWFjaGluZXMgKi9cblx0XHR9XG5cdH1cblxuXHQvKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICovXG5cdC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi9cblx0Lyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovXG5cdC8qIHNsaWdodCBjaGFuZ2UgZm9yIEMrKywgMjAwNC8yLzI2ICovXG5cdC8vYy8vdm9pZCBpbml0X2J5X2FycmF5KHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSwgaW50IGtleV9sZW5ndGgpXG5cdHRoaXMuaW5pdF9ieV9hcnJheSA9IGZ1bmN0aW9uIChpbml0X2tleSwga2V5X2xlbmd0aClcblx0e1xuXHRcdC8vYy8vaW50IGksIGosIGs7XG5cdFx0dmFyIGksIGosIGs7XG5cdFx0Ly9jLy9pbml0X2dlbnJhbmQoMTk2NTAyMTgpO1xuXHRcdHRoaXMuaW5pdF9nZW5yYW5kKDE5NjUwMjE4KTtcblx0XHRpPTE7IGo9MDtcblx0XHRrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTtcblx0XHRmb3IgKDsgazsgay0tKSB7XG5cdFx0XHQvL2MvL210W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjUpKVxuXHRcdFx0Ly9jLy9cdCsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICovXG5cdFx0XHRtdFtpXSA9IGFkZGl0aW9uMzIoYWRkaXRpb24zMih1bnNpZ25lZDMyKG10W2ldIF4gbXVsdGlwbGljYXRpb24zMih1bnNpZ25lZDMyKG10W2ktMV0gXiAobXRbaS0xXSA+Pj4gMzApKSwgMTY2NDUyNSkpLCBpbml0X2tleVtqXSksIGopO1xuXHRcdFx0bXRbaV0gPVxuXHRcdFx0Ly9jLy9tdFtpXSAmPSAweGZmZmZmZmZmOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqL1xuXHRcdFx0dW5zaWduZWQzMihtdFtpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0aSsrOyBqKys7XG5cdFx0XHRpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfVxuXHRcdFx0aWYgKGo+PWtleV9sZW5ndGgpIGo9MDtcblx0XHR9XG5cdFx0Zm9yIChrPU4tMTsgazsgay0tKSB7XG5cdFx0XHQvL2MvL210W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE1NjYwODM5NDEpKVxuXHRcdFx0Ly9jLy8tIGk7IC8qIG5vbiBsaW5lYXIgKi9cblx0XHRcdG10W2ldID0gc3VidHJhY3Rpb24zMih1bnNpZ25lZDMyKChkYmc9bXRbaV0pIF4gbXVsdGlwbGljYXRpb24zMih1bnNpZ25lZDMyKG10W2ktMV0gXiAobXRbaS0xXSA+Pj4gMzApKSwgMTU2NjA4Mzk0MSkpLCBpKTtcblx0XHRcdC8vYy8vbXRbaV0gJj0gMHhmZmZmZmZmZjsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi9cblx0XHRcdG10W2ldID0gdW5zaWduZWQzMihtdFtpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0aSsrO1xuXHRcdFx0aWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH1cblx0XHR9XG5cdFx0bXRbMF0gPSAweDgwMDAwMDAwOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqL1xuXHR9XG5cbiAgICAvKiBtb3ZlZCBvdXRzaWRlIG9mIGdlbnJhbmRfaW50MzIoKSBieSBqd2F0dGUgMjAxMC0xMS0xNzsgZ2VuZXJhdGUgbGVzcyBnYXJiYWdlICovXG4gICAgdmFyIG1hZzAxID0gWzB4MCwgTUFUUklYX0FdO1xuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50ZXJ2YWwgKi9cblx0Ly9jLy91bnNpZ25lZCBsb25nIGdlbnJhbmRfaW50MzIodm9pZClcblx0dGhpcy5nZW5yYW5kX2ludDMyID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vdW5zaWduZWQgbG9uZyB5O1xuXHRcdC8vYy8vc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07XG5cdFx0dmFyIHk7XG5cdFx0LyogbWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqL1xuXG5cdFx0aWYgKG10aSA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi9cblx0XHRcdC8vYy8vaW50IGtrO1xuXHRcdFx0dmFyIGtrO1xuXG5cdFx0XHRpZiAobXRpID09IE4rMSkgICAvKiBpZiBpbml0X2dlbnJhbmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqL1xuXHRcdFx0XHQvL2MvL2luaXRfZ2VucmFuZCg1NDg5KTsgLyogYSBkZWZhdWx0IGluaXRpYWwgc2VlZCBpcyB1c2VkICovXG5cdFx0XHRcdHRoaXMuaW5pdF9nZW5yYW5kKDU0ODkpOyAvKiBhIGRlZmF1bHQgaW5pdGlhbCBzZWVkIGlzIHVzZWQgKi9cblxuXHRcdFx0Zm9yIChraz0wO2trPE4tTTtraysrKSB7XG5cdFx0XHRcdC8vYy8veSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spO1xuXHRcdFx0XHQvL2MvL210W2trXSA9IG10W2trK01dIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxXTtcblx0XHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSykpO1xuXHRcdFx0XHRtdFtra10gPSB1bnNpZ25lZDMyKG10W2trK01dIF4gKHkgPj4+IDEpIF4gbWFnMDFbeSAmIDB4MV0pO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICg7a2s8Ti0xO2trKyspIHtcblx0XHRcdFx0Ly9jLy95ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7XG5cdFx0XHRcdC8vYy8vbXRba2tdID0gbXRba2srKE0tTildIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxXTtcblx0XHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSykpO1xuXHRcdFx0XHRtdFtra10gPSB1bnNpZ25lZDMyKG10W2trKyhNLU4pXSBeICh5ID4+PiAxKSBeIG1hZzAxW3kgJiAweDFdKTtcblx0XHRcdH1cblx0XHRcdC8vYy8veSA9IChtdFtOLTFdJlVQUEVSX01BU0spfChtdFswXSZMT1dFUl9NQVNLKTtcblx0XHRcdC8vYy8vbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFdO1xuXHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spKTtcblx0XHRcdG10W04tMV0gPSB1bnNpZ25lZDMyKG10W00tMV0gXiAoeSA+Pj4gMSkgXiBtYWcwMVt5ICYgMHgxXSk7XG5cdFx0XHRtdGkgPSAwO1xuXHRcdH1cblxuXHRcdHkgPSBtdFttdGkrK107XG5cblx0XHQvKiBUZW1wZXJpbmcgKi9cblx0XHQvL2MvL3kgXj0gKHkgPj4gMTEpO1xuXHRcdC8vYy8veSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODA7XG5cdFx0Ly9jLy95IF49ICh5IDw8IDE1KSAmIDB4ZWZjNjAwMDA7XG5cdFx0Ly9jLy95IF49ICh5ID4+IDE4KTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKHkgPj4+IDExKSk7XG5cdFx0eSA9IHVuc2lnbmVkMzIoeSBeICgoeSA8PCA3KSAmIDB4OWQyYzU2ODApKTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKCh5IDw8IDE1KSAmIDB4ZWZjNjAwMDApKTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKHkgPj4+IDE4KSk7XG5cblx0XHRyZXR1cm4geTtcblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHg3ZmZmZmZmZl0taW50ZXJ2YWwgKi9cblx0Ly9jLy9sb25nIGdlbnJhbmRfaW50MzEodm9pZClcblx0dGhpcy5nZW5yYW5kX2ludDMxID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vcmV0dXJuIChnZW5yYW5kX2ludDMyKCk+PjEpO1xuXHRcdHJldHVybiAodGhpcy5nZW5yYW5kX2ludDMyKCk+Pj4xKTtcblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMV0tcmVhbC1pbnRlcnZhbCAqL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlYWwxKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZWFsMSA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApO1xuXHRcdHJldHVybiB0aGlzLmdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTUuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyLTEgKi9cblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlYWwyKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZWFsMiA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApO1xuXHRcdHJldHVybiB0aGlzLmdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyICovXG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uICgwLDEpLXJlYWwtaW50ZXJ2YWwgKi9cblx0Ly9jLy9kb3VibGUgZ2VucmFuZF9yZWFsMyh2b2lkKVxuXHR0aGlzLmdlbnJhbmRfcmVhbDMgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy9yZXR1cm4gKChnZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0cmV0dXJuICgodGhpcy5nZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyICovXG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDEpIHdpdGggNTMtYml0IHJlc29sdXRpb24qL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlczUzKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZXM1MyA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3Vuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKCk+PjUsIGI9Z2VucmFuZF9pbnQzMigpPj42O1xuXHRcdHZhciBhPXRoaXMuZ2VucmFuZF9pbnQzMigpPj4+NSwgYj10aGlzLmdlbnJhbmRfaW50MzIoKT4+PjY7XG5cdFx0cmV0dXJuKGEqNjcxMDg4NjQuMCtiKSooMS4wLzkwMDcxOTkyNTQ3NDA5OTIuMCk7XG5cdH1cblx0LyogVGhlc2UgcmVhbCB2ZXJzaW9ucyBhcmUgZHVlIHRvIElzYWt1IFdhZGEsIDIwMDIvMDEvMDkgYWRkZWQgKi9cbn1cblxuLy8gIEV4cG9ydHM6IFB1YmxpYyBBUElcblxuLy8gIEV4cG9ydCB0aGUgdHdpc3RlciBjbGFzc1xuZXhwb3J0cy5NZXJzZW5uZVR3aXN0ZXIxOTkzNyA9IE1lcnNlbm5lVHdpc3RlcjE5OTM3O1xuXG4vLyAgRXhwb3J0IGEgc2ltcGxpZmllZCBmdW5jdGlvbiB0byBnZW5lcmF0ZSByYW5kb20gbnVtYmVyc1xudmFyIGdlbiA9IG5ldyBNZXJzZW5uZVR3aXN0ZXIxOTkzNztcbmdlbi5pbml0X2dlbnJhbmQoKG5ldyBEYXRlKS5nZXRUaW1lKCkgJSAxMDAwMDAwMDAwKTtcblxuLy8gQWRkZWQgbWF4LCBtaW4gcmFuZ2UgZnVuY3Rpb25hbGl0eSwgTWFyYWsgU3F1aXJlcyBTZXB0IDExIDIwMTRcbmV4cG9ydHMucmFuZCA9IGZ1bmN0aW9uKG1heCwgbWluKSB7XG4gICAgaWYgKG1heCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgIG1pbiA9IDA7XG4gICAgICAgIG1heCA9IDMyNzY4O1xuICAgICAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZ2VuLmdlbnJhbmRfcmVhbDIoKSAqIChtYXggLSBtaW4pICsgbWluKTtcbn1cbmV4cG9ydHMuc2VlZCA9IGZ1bmN0aW9uKFMpIHtcbiAgICBpZiAodHlwZW9mKFMpICE9ICdudW1iZXInKVxuICAgICAgICB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNlZWQoUykgbXVzdCB0YWtlIG51bWVyaWMgYXJndW1lbnQ7IGlzIFwiICsgdHlwZW9mKFMpKTtcbiAgICAgICAgfVxuICAgIGdlbi5pbml0X2dlbnJhbmQoUyk7XG59XG5leHBvcnRzLnNlZWRfYXJyYXkgPSBmdW5jdGlvbihBKSB7XG4gICAgaWYgKHR5cGVvZihBKSAhPSAnb2JqZWN0JylcbiAgICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZWVkX2FycmF5KEEpIG11c3QgdGFrZSBhcnJheSBvZiBudW1iZXJzOyBpcyBcIiArIHR5cGVvZihBKSk7XG4gICAgICAgIH1cbiAgICBnZW4uaW5pdF9ieV9hcnJheShBKTtcbn1cbiIsIi8qXG5cbkNvcHlyaWdodCAoYykgMjAxMi0yMDE0IEplZmZyZXkgTWVhbG9cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkXG5kb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxudGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZFxudG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGVcblNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG5XQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbkNPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbk9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkJhc2VkIGxvb3NlbHkgb24gTHVrYSBQdXNpYydzIFBIUCBTY3JpcHQ6IGh0dHA6Ly8zNjBwZXJjZW50cy5jb20vcG9zdHMvcGhwLXJhbmRvbS11c2VyLWFnZW50LWdlbmVyYXRvci9cblxuVGhlIGxpY2Vuc2UgZm9yIHRoYXQgc2NyaXB0IGlzIGFzIGZvbGxvd3M6XG5cblwiVEhFIEJFRVItV0FSRSBMSUNFTlNFXCIgKFJldmlzaW9uIDQyKTpcblxuPHB1c2ljOTNAZ21haWwuY29tPiB3cm90ZSB0aGlzIGZpbGUuIEFzIGxvbmcgYXMgeW91IHJldGFpbiB0aGlzIG5vdGljZSB5b3UgY2FuIGRvIHdoYXRldmVyIHlvdSB3YW50IHdpdGggdGhpcyBzdHVmZi5cbklmIHdlIG1lZXQgc29tZSBkYXksIGFuZCB5b3UgdGhpbmsgdGhpcyBzdHVmZiBpcyB3b3J0aCBpdCwgeW91IGNhbiBidXkgbWUgYSBiZWVyIGluIHJldHVybi4gTHVrYSBQdXNpY1xuKi9cblxuZnVuY3Rpb24gcm5kKGEsIGIpIHtcbiAgICAvL2NhbGxpbmcgcm5kKCkgd2l0aCBubyBhcmd1bWVudHMgaXMgaWRlbnRpY2FsIHRvIHJuZCgwLCAxMDApXG4gICAgYSA9IGEgfHwgMDtcbiAgICBiID0gYiB8fCAxMDA7XG5cbiAgICBpZiAodHlwZW9mIGIgPT09ICdudW1iZXInICYmIHR5cGVvZiBhID09PSAnbnVtYmVyJykge1xuICAgICAgICAvL3JuZChpbnQgbWluLCBpbnQgbWF4KSByZXR1cm5zIGludGVnZXIgYmV0d2VlbiBtaW4sIG1heFxuICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIChtaW4sIG1heCkge1xuICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBlY3RlZCBtaW4gPD0gbWF4OyBnb3QgbWluID0gJyArIG1pbiArICcsIG1heCA9ICcgKyBtYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG4gICAgICAgIH0oYSwgYikpO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkgPT09IFwiW29iamVjdCBBcnJheV1cIikge1xuICAgICAgICAvL3JldHVybnMgYSByYW5kb20gZWxlbWVudCBmcm9tIGFycmF5IChhKSwgZXZlbiB3ZWlnaHRpbmdcbiAgICAgICAgcmV0dXJuIGFbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYS5sZW5ndGgpXTtcbiAgICB9XG5cbiAgICBpZiAoYSAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy9yZXR1cm5zIGEgcmFuZG9tIGtleSBmcm9tIHRoZSBwYXNzZWQgb2JqZWN0OyBrZXlzIGFyZSB3ZWlnaHRlZCBieSB0aGUgZGVjaW1hbCBwcm9iYWJpbGl0eSBpbiB0aGVpciB2YWx1ZVxuICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciByYW5kID0gcm5kKDAsIDEwMCkgLyAxMDAsIG1pbiA9IDAsIG1heCA9IDAsIGtleSwgcmV0dXJuX3ZhbDtcblxuICAgICAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heCA9IG9ialtrZXldICsgbWluO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFuZCA+PSBtaW4gJiYgcmFuZCA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IG1pbiArIG9ialtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJldHVybl92YWw7XG4gICAgICAgIH0oYSkpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBybmQuICgnICsgKGIgPyBhICsgJywgJyArIGIgOiBhKSArICcpJyk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbUxhbmcoKSB7XG4gICAgcmV0dXJuIHJuZChbJ0FCJywgJ0FGJywgJ0FOJywgJ0FSJywgJ0FTJywgJ0FaJywgJ0JFJywgJ0JHJywgJ0JOJywgJ0JPJywgJ0JSJywgJ0JTJywgJ0NBJywgJ0NFJywgJ0NPJywgJ0NTJyxcbiAgICAgICAgICAgICAgICAnQ1UnLCAnQ1knLCAnREEnLCAnREUnLCAnRUwnLCAnRU4nLCAnRU8nLCAnRVMnLCAnRVQnLCAnRVUnLCAnRkEnLCAnRkknLCAnRkonLCAnRk8nLCAnRlInLCAnRlknLFxuICAgICAgICAgICAgICAgICdHQScsICdHRCcsICdHTCcsICdHVicsICdIRScsICdISScsICdIUicsICdIVCcsICdIVScsICdIWScsICdJRCcsICdJUycsICdJVCcsICdKQScsICdKVicsICdLQScsXG4gICAgICAgICAgICAgICAgJ0tHJywgJ0tPJywgJ0tVJywgJ0tXJywgJ0tZJywgJ0xBJywgJ0xCJywgJ0xJJywgJ0xOJywgJ0xUJywgJ0xWJywgJ01HJywgJ01LJywgJ01OJywgJ01PJywgJ01TJyxcbiAgICAgICAgICAgICAgICAnTVQnLCAnTVknLCAnTkInLCAnTkUnLCAnTkwnLCAnTk4nLCAnTk8nLCAnT0MnLCAnUEwnLCAnUFQnLCAnUk0nLCAnUk8nLCAnUlUnLCAnU0MnLCAnU0UnLCAnU0snLFxuICAgICAgICAgICAgICAgICdTTCcsICdTTycsICdTUScsICdTUicsICdTVicsICdTVycsICdUSycsICdUUicsICdUWScsICdVSycsICdVUicsICdVWicsICdWSScsICdWTycsICdZSScsICdaSCddKTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnJvd3NlckFuZE9TKCkge1xuICAgIHZhciBicm93c2VyID0gcm5kKHtcbiAgICAgICAgY2hyb21lOiAgICAuNDUxMzI4MTA1NjYsXG4gICAgICAgIGlleHBsb3JlcjogLjI3NDc3MDYxODM2LFxuICAgICAgICBmaXJlZm94OiAgIC4xOTM4NDE3MDYwOCxcbiAgICAgICAgc2FmYXJpOiAgICAuMDYxODY3ODExMTgsXG4gICAgICAgIG9wZXJhOiAgICAgLjAxNTc0MjM2OTU1XG4gICAgfSksXG4gICAgb3MgPSB7XG4gICAgICAgIGNocm9tZTogIHt3aW46IC44OSwgIG1hYzogLjA5ICwgbGluOiAuMDJ9LFxuICAgICAgICBmaXJlZm94OiB7d2luOiAuODMsICBtYWM6IC4xNiwgIGxpbjogLjAxfSxcbiAgICAgICAgb3BlcmE6ICAge3dpbjogLjkxLCAgbWFjOiAuMDMgLCBsaW46IC4wNn0sXG4gICAgICAgIHNhZmFyaTogIHt3aW46IC4wNCAsIG1hYzogLjk2ICB9LFxuICAgICAgICBpZXhwbG9yZXI6IFsnd2luJ11cbiAgICB9O1xuXG4gICAgcmV0dXJuIFticm93c2VyLCBybmQob3NbYnJvd3Nlcl0pXTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tUHJvYyhhcmNoKSB7XG4gICAgdmFyIHByb2NzID0ge1xuICAgICAgICBsaW46WydpNjg2JywgJ3g4Nl82NCddLFxuICAgICAgICBtYWM6IHsnSW50ZWwnIDogLjQ4LCAnUFBDJzogLjAxLCAnVTsgSW50ZWwnOi40OCwgJ1U7IFBQQycgOi4wMX0sXG4gICAgICAgIHdpbjpbJycsICdXT1c2NCcsICdXaW42NDsgeDY0J11cbiAgICB9O1xuICAgIHJldHVybiBybmQocHJvY3NbYXJjaF0pO1xufVxuXG5mdW5jdGlvbiByYW5kb21SZXZpc2lvbihkb3RzKSB7XG4gICAgdmFyIHJldHVybl92YWwgPSAnJztcbiAgICAvL2dlbmVyYXRlIGEgcmFuZG9tIHJldmlzaW9uXG4gICAgLy9kb3RzID0gMiByZXR1cm5zIC54Lnkgd2hlcmUgeCAmIHkgYXJlIGJldHdlZW4gMCBhbmQgOVxuICAgIGZvciAodmFyIHggPSAwOyB4IDwgZG90czsgeCsrKSB7XG4gICAgICAgIHJldHVybl92YWwgKz0gJy4nICsgcm5kKDAsIDkpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuX3ZhbDtcbn1cblxudmFyIHZlcnNpb25fc3RyaW5nID0ge1xuICAgIG5ldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3JuZCgxLCA0KSwgcm5kKDAsIDkpLCBybmQoMTAwMDAsIDk5OTk5KSwgcm5kKDAsIDkpXS5qb2luKCcuJyk7XG4gICAgfSxcbiAgICBudDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDUsIDYpICsgJy4nICsgcm5kKDAsIDMpO1xuICAgIH0sXG4gICAgaWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCg3LCAxMSk7XG4gICAgfSxcbiAgICB0cmlkZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoMywgNykgKyAnLicgKyBybmQoMCwgMSk7XG4gICAgfSxcbiAgICBvc3g6IGZ1bmN0aW9uIChkZWxpbSkge1xuICAgICAgICByZXR1cm4gWzEwLCBybmQoNSwgMTApLCBybmQoMCwgOSldLmpvaW4oZGVsaW0gfHwgJy4nKTtcbiAgICB9LFxuICAgIGNocm9tZTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3JuZCgxMywgMzkpLCAwLCBybmQoODAwLCA4OTkpLCAwXS5qb2luKCcuJyk7XG4gICAgfSxcbiAgICBwcmVzdG86IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcyLjkuJyArIHJuZCgxNjAsIDE5MCk7XG4gICAgfSxcbiAgICBwcmVzdG8yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoMTAsIDEyKSArICcuMDAnO1xuICAgIH0sXG4gICAgc2FmYXJpOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoNTMxLCA1MzgpICsgJy4nICsgcm5kKDAsIDIpICsgJy4nICsgcm5kKDAsMik7XG4gICAgfVxufTtcblxudmFyIGJyb3dzZXIgPSB7XG4gICAgZmlyZWZveDogZnVuY3Rpb24gZmlyZWZveChhcmNoKSB7XG4gICAgICAgIC8vaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HZWNrb191c2VyX2FnZW50X3N0cmluZ19yZWZlcmVuY2VcbiAgICAgICAgdmFyIGZpcmVmb3hfdmVyID0gcm5kKDUsIDE1KSArIHJhbmRvbVJldmlzaW9uKDIpLFxuICAgICAgICAgICAgZ2Vja29fdmVyID0gJ0dlY2tvLzIwMTAwMTAxIEZpcmVmb3gvJyArIGZpcmVmb3hfdmVyLFxuICAgICAgICAgICAgcHJvYyA9IHJhbmRvbVByb2MoYXJjaCksXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ3dpbicpID8gJyhXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgKChwcm9jKSA/ICc7ICcgKyBwcm9jIDogJycpXG4gICAgICAgICAgICA6IChhcmNoID09PSAnbWFjJykgPyAnKE1hY2ludG9zaDsgJyArIHByb2MgKyAnIE1hYyBPUyBYICcgKyB2ZXJzaW9uX3N0cmluZy5vc3goKVxuICAgICAgICAgICAgOiAnKFgxMTsgTGludXggJyArIHByb2M7XG5cbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAnICsgb3NfdmVyICsgJzsgcnY6JyArIGZpcmVmb3hfdmVyLnNsaWNlKDAsIC0yKSArICcpICcgKyBnZWNrb192ZXI7XG4gICAgfSxcblxuICAgIGlleHBsb3JlcjogZnVuY3Rpb24gaWV4cGxvcmVyKCkge1xuICAgICAgICB2YXIgdmVyID0gdmVyc2lvbl9zdHJpbmcuaWUoKTtcblxuICAgICAgICBpZiAodmVyID49IDExKSB7XG4gICAgICAgICAgICAvL2h0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDg2OTMwMSh2PXZzLjg1KS5hc3B4XG4gICAgICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDYuJyArIHJuZCgxLDMpICsgJzsgVHJpZGVudC83LjA7ICcgKyBybmQoWydUb3VjaDsgJywgJyddKSArICdydjoxMS4wKSBsaWtlIEdlY2tvJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL21zNTM3NTAzKHY9dnMuODUpLmFzcHhcbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSAnICsgdmVyICsgJy4wOyBXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJzsgVHJpZGVudC8nICtcbiAgICAgICAgICAgIHZlcnNpb25fc3RyaW5nLnRyaWRlbnQoKSArICgocm5kKDAsIDEpID09PSAxKSA/ICc7IC5ORVQgQ0xSICcgKyB2ZXJzaW9uX3N0cmluZy5uZXQoKSA6ICcnKSArICcpJztcbiAgICB9LFxuXG4gICAgb3BlcmE6IGZ1bmN0aW9uIG9wZXJhKGFyY2gpIHtcbiAgICAgICAgLy9odHRwOi8vd3d3Lm9wZXJhLmNvbS9kb2NzL2hpc3RvcnkvXG4gICAgICAgIHZhciBwcmVzdG9fdmVyID0gJyBQcmVzdG8vJyArIHZlcnNpb25fc3RyaW5nLnByZXN0bygpICsgJyBWZXJzaW9uLycgKyB2ZXJzaW9uX3N0cmluZy5wcmVzdG8yKCkgKyAnKScsXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ3dpbicpID8gJyhXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJzsgVTsgJyArIHJhbmRvbUxhbmcoKSArIHByZXN0b192ZXJcbiAgICAgICAgICAgIDogKGFyY2ggPT09ICdsaW4nKSA/ICcoWDExOyBMaW51eCAnICsgcmFuZG9tUHJvYyhhcmNoKSArICc7IFU7ICcgKyByYW5kb21MYW5nKCkgKyBwcmVzdG9fdmVyXG4gICAgICAgICAgICA6ICcoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAnICsgdmVyc2lvbl9zdHJpbmcub3N4KCkgKyAnIFU7ICcgKyByYW5kb21MYW5nKCkgKyAnIFByZXN0by8nICtcbiAgICAgICAgICAgIHZlcnNpb25fc3RyaW5nLnByZXN0bygpICsgJyBWZXJzaW9uLycgKyB2ZXJzaW9uX3N0cmluZy5wcmVzdG8yKCkgKyAnKSc7XG5cbiAgICAgICAgcmV0dXJuICdPcGVyYS8nICsgcm5kKDksIDE0KSArICcuJyArIHJuZCgwLCA5OSkgKyAnICcgKyBvc192ZXI7XG4gICAgfSxcblxuICAgIHNhZmFyaTogZnVuY3Rpb24gc2FmYXJpKGFyY2gpIHtcbiAgICAgICAgdmFyIHNhZmFyaSA9IHZlcnNpb25fc3RyaW5nLnNhZmFyaSgpLFxuICAgICAgICAgICAgdmVyID0gcm5kKDQsIDcpICsgJy4nICsgcm5kKDAsMSkgKyAnLicgKyBybmQoMCwxMCksXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ21hYycpID8gJyhNYWNpbnRvc2g7ICcgKyByYW5kb21Qcm9jKCdtYWMnKSArICcgTWFjIE9TIFggJysgdmVyc2lvbl9zdHJpbmcub3N4KCdfJykgKyAnIHJ2OicgKyBybmQoMiwgNikgKyAnLjA7ICcrIHJhbmRvbUxhbmcoKSArICcpICdcbiAgICAgICAgICAgIDogJyhXaW5kb3dzOyBVOyBXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJyknO1xuXG4gICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgJyArIG9zX3ZlciArICdBcHBsZVdlYktpdC8nICsgc2FmYXJpICsgJyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vJyArIHZlciArICcgU2FmYXJpLycgKyBzYWZhcmk7XG4gICAgfSxcblxuICAgIGNocm9tZTogZnVuY3Rpb24gY2hyb21lKGFyY2gpIHtcbiAgICAgICAgdmFyIHNhZmFyaSA9IHZlcnNpb25fc3RyaW5nLnNhZmFyaSgpLFxuICAgICAgICAgICAgb3NfdmVyID0gKGFyY2ggPT09ICdtYWMnKSA/ICcoTWFjaW50b3NoOyAnICsgcmFuZG9tUHJvYygnbWFjJykgKyAnIE1hYyBPUyBYICcgKyB2ZXJzaW9uX3N0cmluZy5vc3goJ18nKSArICcpICdcbiAgICAgICAgICAgIDogKGFyY2ggPT09ICd3aW4nKSA/ICcoV2luZG93czsgVTsgV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICcpJ1xuICAgICAgICAgICAgOiAnKFgxMTsgTGludXggJyArIHJhbmRvbVByb2MoYXJjaCk7XG5cbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAnICsgb3NfdmVyICsgJyBBcHBsZVdlYktpdC8nICsgc2FmYXJpICsgJyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8nICsgdmVyc2lvbl9zdHJpbmcuY2hyb21lKCkgKyAnIFNhZmFyaS8nICsgc2FmYXJpO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZSgpIHtcbiAgICB2YXIgcmFuZG9tID0gcmFuZG9tQnJvd3NlckFuZE9TKCk7XG4gICAgcmV0dXJuIGJyb3dzZXJbcmFuZG9tWzBdXShyYW5kb21bMV0pO1xufTtcbiIsImZ1bmN0aW9uIGZvcm1hdChmbXQpIHtcbiAgdmFyIHJlID0gLyglPykoJShbamRzXSkpL2dcbiAgICAsIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICBpZihhcmdzLmxlbmd0aCkge1xuICAgIGZtdCA9IGZtdC5yZXBsYWNlKHJlLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlZCwgcHRuLCBmbGFnKSB7XG4gICAgICB2YXIgYXJnID0gYXJncy5zaGlmdCgpO1xuICAgICAgc3dpdGNoKGZsYWcpIHtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgYXJnID0gJycgKyBhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgIGFyZyA9IE51bWJlcihhcmcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICBhcmcgPSBKU09OLnN0cmluZ2lmeShhcmcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYoIWVzY2FwZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyZzsgXG4gICAgICB9XG4gICAgICBhcmdzLnVuc2hpZnQoYXJnKTtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KVxuICB9XG5cbiAgLy8gYXJndW1lbnRzIHJlbWFpbiBhZnRlciBmb3JtYXR0aW5nXG4gIGlmKGFyZ3MubGVuZ3RoKSB7XG4gICAgZm10ICs9ICcgJyArIGFyZ3Muam9pbignICcpO1xuICB9XG5cbiAgLy8gdXBkYXRlIGVzY2FwZWQgJSUgdmFsdWVzXG4gIGZtdCA9IGZtdC5yZXBsYWNlKC8lezIsMn0vZywgJyUnKTtcblxuICByZXR1cm4gJycgKyBmbXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9ybWF0O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENocmlzIFBldHRpdHRcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG52YXIgbGliID0gcmVxdWlyZShcIi4vbGliXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IGxpYi5HcmFwaCxcbiAganNvbjogcmVxdWlyZShcIi4vbGliL2pzb25cIiksXG4gIGFsZzogcmVxdWlyZShcIi4vbGliL2FsZ1wiKSxcbiAgdmVyc2lvbjogbGliLnZlcnNpb25cbn07XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge30sXG4gICAgICBjbXB0cyA9IFtdLFxuICAgICAgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZnM7XG5cbi8qXG4gKiBBIGhlbHBlciB0aGF0IHByZWZvcm1zIGEgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCByZXR1cm5zIHRoZSBub2RlcyBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHZpc2l0ZWQuIElmIHRoZSBncmFwaCBpc1xuICogdW5kaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgbmVpZ2hib3JzLiBJZiB0aGUgZ3JhcGhcbiAqIGlzIGRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBzdWNjZXNzb3JzLlxuICpcbiAqIE9yZGVyIG11c3QgYmUgb25lIG9mIFwicHJlXCIgb3IgXCJwb3N0XCIuXG4gKi9cbmZ1bmN0aW9uIGRmcyhnLCB2cywgb3JkZXIpIHtcbiAgaWYgKCFfLmlzQXJyYXkodnMpKSB7XG4gICAgdnMgPSBbdnNdO1xuICB9XG5cbiAgdmFyIG5hdmlnYXRpb24gPSAoZy5pc0RpcmVjdGVkKCkgPyBnLnN1Y2Nlc3NvcnMgOiBnLm5laWdoYm9ycykuYmluZChnKTtcblxuICB2YXIgYWNjID0gW10sXG4gICAgICB2aXNpdGVkID0ge307XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmICghZy5oYXNOb2RlKHYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6IFwiICsgdik7XG4gICAgfVxuXG4gICAgZG9EZnMoZywgdiwgb3JkZXIgPT09IFwicG9zdFwiLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICB9KTtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gZG9EZnMoZywgdiwgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpIHtcbiAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgaWYgKCFwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgICBfLmVhY2gobmF2aWdhdGlvbih2KSwgZnVuY3Rpb24odykge1xuICAgICAgZG9EZnMoZywgdywgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICAgIH0pO1xuICAgIGlmIChwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgfVxufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gICAgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpLFxuICAgIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkaWprc3RyYTtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBkaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkRpamtzdHJhKGcsIFN0cmluZyhzb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICAgICAgICAgICAgICAgICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge30sXG4gICAgICBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCksXG4gICAgICB2LCB2RW50cnk7XG5cbiAgdmFyIHVwZGF0ZU5laWdoYm9ycyA9IGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiAhPT0gdiA/IGVkZ2UudiA6IGVkZ2UudyxcbiAgICAgICAgd0VudHJ5ID0gcmVzdWx0c1t3XSxcbiAgICAgICAgd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSksXG4gICAgICAgIGRpc3RhbmNlID0gdkVudHJ5LmRpc3RhbmNlICsgd2VpZ2h0O1xuXG4gICAgaWYgKHdlaWdodCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiQmFkIGVkZ2U6IFwiICsgZWRnZSArIFwiIFdlaWdodDogXCIgKyB3ZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChkaXN0YW5jZSA8IHdFbnRyeS5kaXN0YW5jZSkge1xuICAgICAgd0VudHJ5LmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB3RW50cnkucHJlZGVjZXNzb3IgPSB2O1xuICAgICAgcHEuZGVjcmVhc2UodywgZGlzdGFuY2UpO1xuICAgIH1cbiAgfTtcblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpLFxuICAgIHRhcmphbiA9IHJlcXVpcmUoXCIuL3RhcmphblwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kQ3ljbGVzO1xuXG5mdW5jdGlvbiBmaW5kQ3ljbGVzKGcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRhcmphbihnKSwgZnVuY3Rpb24oY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge30sXG4gICAgICBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICByZXN1bHRzW3ZdID0ge307XG4gICAgcmVzdWx0c1t2XVt2XSA9IHsgZGlzdGFuY2U6IDAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICh2ICE9PSB3KSB7XG4gICAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudixcbiAgICAgICAgICBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgdmFyIHJvd0sgPSByZXN1bHRzW2tdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgdmFyIHJvd0kgPSByZXN1bHRzW2ldO1xuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29tcG9uZW50czogcmVxdWlyZShcIi4vY29tcG9uZW50c1wiKSxcbiAgZGlqa3N0cmE6IHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpLFxuICBkaWprc3RyYUFsbDogcmVxdWlyZShcIi4vZGlqa3N0cmEtYWxsXCIpLFxuICBmaW5kQ3ljbGVzOiByZXF1aXJlKFwiLi9maW5kLWN5Y2xlc1wiKSxcbiAgZmxveWRXYXJzaGFsbDogcmVxdWlyZShcIi4vZmxveWQtd2Fyc2hhbGxcIiksXG4gIGlzQWN5Y2xpYzogcmVxdWlyZShcIi4vaXMtYWN5Y2xpY1wiKSxcbiAgcG9zdG9yZGVyOiByZXF1aXJlKFwiLi9wb3N0b3JkZXJcIiksXG4gIHByZW9yZGVyOiByZXF1aXJlKFwiLi9wcmVvcmRlclwiKSxcbiAgcHJpbTogcmVxdWlyZShcIi4vcHJpbVwiKSxcbiAgdGFyamFuOiByZXF1aXJlKFwiLi90YXJqYW5cIiksXG4gIHRvcHNvcnQ6IHJlcXVpcmUoXCIuL3RvcHNvcnRcIilcbn07XG4iLCJ2YXIgdG9wc29ydCA9IHJlcXVpcmUoXCIuL3RvcHNvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBY3ljbGljO1xuXG5mdW5jdGlvbiBpc0FjeWNsaWMoZykge1xuICB0cnkge1xuICAgIHRvcHNvcnQoZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zdG9yZGVyO1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwb3N0XCIpO1xufVxuIiwidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmVvcmRlcjtcblxuZnVuY3Rpb24gcHJlb3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwcmVcIik7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIiksXG4gICAgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIiksXG4gICAgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCksXG4gICAgICBwYXJlbnRzID0ge30sXG4gICAgICBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCksXG4gICAgICB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnYsXG4gICAgICAgIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIHN0YWNrID0gW10sXG4gICAgICB2aXNpdGVkID0ge30sIC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gICAgICByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW10sXG4gICAgICAgICAgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9LFxuICAgICAgc3RhY2sgPSB7fSxcbiAgICAgIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcmlvcml0eVF1ZXVlO1xuXG4vKipcbiAqIEEgbWluLXByaW9yaXR5IHF1ZXVlIGRhdGEgc3RydWN0dXJlLiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQ29ybWVuLFxuICogZXQgYWwuLCBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuIFRoZSBiYXNpYyBpZGVhIG9mIGEgbWluLXByaW9yaXR5XG4gKiBxdWV1ZSBpcyB0aGF0IHlvdSBjYW4gZWZmaWNpZW50bHkgKGluIE8oMSkgdGltZSkgZ2V0IHRoZSBzbWFsbGVzdCBrZXkgaW5cbiAqIHRoZSBxdWV1ZS4gQWRkaW5nIGFuZCByZW1vdmluZyBlbGVtZW50cyB0YWtlcyBPKGxvZyBuKSB0aW1lLiBBIGtleSBjYW5cbiAqIGhhdmUgaXRzIHByaW9yaXR5IGRlY3JlYXNlZCBpbiBPKGxvZyBuKSB0aW1lLlxuICovXG5mdW5jdGlvbiBQcmlvcml0eVF1ZXVlKCkge1xuICB0aGlzLl9hcnIgPSBbXTtcbiAgdGhpcy5fa2V5SW5kaWNlcyA9IHt9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5rZXk7IH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICByZXR1cm4gXy5oYXModGhpcy5fa2V5SW5kaWNlcywga2V5KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiouIElmICoqa2V5KiogaXMgbm90IHByZXNlbnQgaW4gdGhlIHF1ZXVlXG4gKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wcmlvcml0eSA9IGZ1bmN0aW9uKGtleSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5IGZvciB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoaXMgcXVldWUuIElmIHRoZSBxdWV1ZSBpc1xuICogZW1wdHkgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYW4gRXJyb3IuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUXVldWUgdW5kZXJmbG93XCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xufTtcblxuLyoqXG4gKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICogdGhlIHF1ZXVlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgOyBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYHRydWVgLlxuICogVGFrZXMgYE8obilgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IHRvIGFkZFxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBpbml0aWFsIHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgaW5kZXggPSBhcnIubGVuZ3RoO1xuICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgIGFyci5wdXNoKHtrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5fSk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fc3dhcCgwLCB0aGlzLl9hcnIubGVuZ3RoIC0gMSk7XG4gIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW21pbi5rZXldO1xuICB0aGlzLl9oZWFwaWZ5KDApO1xuICByZXR1cm4gbWluLmtleTtcbn07XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAqIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgcHJpb3JpdHksIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBFcnJvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIG5ldyBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZSA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAocHJpb3JpdHkgPiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBcIiArXG4gICAgICAgIFwiS2V5OiBcIiArIGtleSArIFwiIE9sZDogXCIgKyB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ICsgXCIgTmV3OiBcIiArIHByaW9yaXR5KTtcbiAgfVxuICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgbCA9IDIgKiBpLFxuICAgICAgciA9IGwgKyAxLFxuICAgICAgbGFyZ2VzdCA9IGk7XG4gIGlmIChsIDwgYXJyLmxlbmd0aCkge1xuICAgIGxhcmdlc3QgPSBhcnJbbF0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyBsIDogbGFyZ2VzdDtcbiAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgIGxhcmdlc3QgPSBhcnJbcl0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyByIDogbGFyZ2VzdDtcbiAgICB9XG4gICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgIHRoaXMuX3N3YXAoaSwgbGFyZ2VzdCk7XG4gICAgICB0aGlzLl9oZWFwaWZ5KGxhcmdlc3QpO1xuICAgIH1cbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2RlY3JlYXNlID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIHByaW9yaXR5ID0gYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgdmFyIHBhcmVudDtcbiAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgcGFyZW50ID0gaW5kZXggPj4gMTtcbiAgICBpZiAoYXJyW3BhcmVudF0ucHJpb3JpdHkgPCBwcmlvcml0eSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3N3YXAoaW5kZXgsIHBhcmVudCk7XG4gICAgaW5kZXggPSBwYXJlbnQ7XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9zd2FwID0gZnVuY3Rpb24oaSwgaikge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIHZhciBvcmlnQXJySSA9IGFycltpXTtcbiAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICBhcnJbaV0gPSBvcmlnQXJySjtcbiAgYXJyW2pdID0gb3JpZ0Fyckk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckkua2V5XSA9IGo7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEdyYXBoO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSBcIlxceDAwXCIsXG4gICAgR1JBUEhfTk9ERSA9IFwiXFx4MDBcIixcbiAgICBFREdFX0tFWV9ERUxJTSA9IFwiXFx4MDFcIjtcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuZnVuY3Rpb24gR3JhcGgob3B0cykge1xuICB0aGlzLl9pc0RpcmVjdGVkID0gXy5oYXMob3B0cywgXCJkaXJlY3RlZFwiKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICB0aGlzLl9pc011bHRpZ3JhcGggPSBfLmhhcyhvcHRzLCBcIm11bHRpZ3JhcGhcIikgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgdGhpcy5faXNDb21wb3VuZCA9IF8uaGFzKG9wdHMsIFwiY29tcG91bmRcIikgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgLy8gTGFiZWwgZm9yIHRoZSBncmFwaCBpdHNlbGZcbiAgdGhpcy5fbGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgZWRnZVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gdiAtPiBsYWJlbFxuICB0aGlzLl9ub2RlcyA9IHt9O1xuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgLy8gdiAtPiBwYXJlbnRcbiAgICB0aGlzLl9wYXJlbnQgPSB7fTtcblxuICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdID0ge307XG4gIH1cblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5faW4gPSB7fTtcblxuICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gIHRoaXMuX3ByZWRzID0ge307XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX291dCA9IHt9O1xuXG4gIC8vIHYgLT4gdyAtPiBOdW1iZXJcbiAgdGhpcy5fc3VjcyA9IHt9O1xuXG4gIC8vIGUgLT4gZWRnZU9ialxuICB0aGlzLl9lZGdlT2JqcyA9IHt9O1xuXG4gIC8vIGUgLT4gbGFiZWxcbiAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cblxuLyogPT09IEdyYXBoIGZ1bmN0aW9ucyA9PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLmlzRGlyZWN0ZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNDb21wb3VuZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRHcmFwaCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9sYWJlbDtcbn07XG5cblxuLyogPT09IE5vZGUgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8ua2V5cyh0aGlzLl9ub2Rlcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX2luW3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2lua3MgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9vdXRbdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlcyA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldE5vZGUodik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uKHYsIHZhbHVlKSB7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IEdSQVBIX05PREU7XG4gICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXVt2XSA9IHRydWU7XG4gIH1cbiAgdGhpcy5faW5bdl0gPSB7fTtcbiAgdGhpcy5fcHJlZHNbdl0gPSB7fTtcbiAgdGhpcy5fb3V0W3ZdID0ge307XG4gIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgKyt0aGlzLl9ub2RlQ291bnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiB0aGlzLl9ub2Rlc1t2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gXy5oYXModGhpcy5fbm9kZXMsIHYpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZU5vZGUgPSAgZnVuY3Rpb24odikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICB2YXIgcmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKGUpIHsgc2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKTsgfTtcbiAgICBkZWxldGUgdGhpcy5fbm9kZXNbdl07XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFt2XTtcbiAgICAgIF8uZWFjaCh0aGlzLmNoaWxkcmVuKHYpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICBzZWxmLnNldFBhcmVudChjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICB9XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9pblt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt2XTtcbiAgICBkZWxldGUgdGhpcy5fcHJlZHNbdl07XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9vdXRbdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9zdWNzW3ZdO1xuICAgIC0tdGhpcy5fbm9kZUNvdW50O1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhcmVudCA9IGZ1bmN0aW9uKHYsIHBhcmVudCkge1xuICBpZiAoIXRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaFwiKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICBwYXJlbnQgPSBHUkFQSF9OT0RFO1xuICB9IGVsc2Uge1xuICAgIC8vIENvZXJjZSBwYXJlbnQgdG8gc3RyaW5nXG4gICAgcGFyZW50ICs9IFwiXCI7XG4gICAgZm9yICh2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG4gICAgICAgICAhXy5pc1VuZGVmaW5lZChhbmNlc3Rvcik7XG4gICAgICAgICBhbmNlc3RvciA9IHRoaXMucGFyZW50KGFuY2VzdG9yKSkge1xuICAgICAgaWYgKGFuY2VzdG9yID09PSB2KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldHRpbmcgXCIgKyBwYXJlbnQrIFwiIGFzIHBhcmVudCBvZiBcIiArIHYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgd291bGQgY3JlYXRlIGEgY3ljbGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gIH1cblxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICB0aGlzLl9wYXJlbnRbdl0gPSBwYXJlbnQ7XG4gIHRoaXMuX2NoaWxkcmVuW3BhcmVudF1bdl0gPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QgPSBmdW5jdGlvbih2KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5fcGFyZW50W3ZdO1xuICAgIGlmIChwYXJlbnQgIT09IEdSQVBIX05PREUpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbih2KSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHYpKSB7XG4gICAgdiA9IEdSQVBIX05PREU7XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgcmV0dXJuIF8ua2V5cyhjaGlsZHJlbik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHYgPT09IEdSQVBIX05PREUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpO1xuICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzViA9IHRoaXMuX3ByZWRzW3ZdO1xuICBpZiAocHJlZHNWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhwcmVkc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHN1Y3NWID0gdGhpcy5fc3Vjc1t2XTtcbiAgaWYgKHN1Y3NWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhzdWNzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5uZWlnaGJvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkcyA9IHRoaXMucHJlZGVjZXNzb3JzKHYpO1xuICBpZiAocHJlZHMpIHtcbiAgICByZXR1cm4gXy51bmlvbihwcmVkcywgdGhpcy5zdWNjZXNzb3JzKHYpKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTGVhZiA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBuZWlnaGJvcnM7XG4gIGlmICh0aGlzLmlzRGlyZWN0ZWQoKSkge1xuICAgIG5laWdoYm9ycyA9IHRoaXMuc3VjY2Vzc29ycyh2KTtcbiAgfSBlbHNlIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLm5laWdoYm9ycyh2KTtcbiAgfVxuICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5maWx0ZXJOb2RlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xuICB2YXIgY29weSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHtcbiAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICBtdWx0aWdyYXBoOiB0aGlzLl9pc011bHRpZ3JhcGgsXG4gICAgY29tcG91bmQ6IHRoaXMuX2lzQ29tcG91bmRcbiAgfSk7XG5cbiAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHRoaXMuX25vZGVzLCBmdW5jdGlvbih2YWx1ZSwgdikge1xuICAgIGlmIChmaWx0ZXIodikpIHtcbiAgICAgIGNvcHkuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcblxuICBfLmVhY2godGhpcy5fZWRnZU9ianMsIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoY29weS5oYXNOb2RlKGUudikgJiYgY29weS5oYXNOb2RlKGUudykpIHtcbiAgICAgIGNvcHkuc2V0RWRnZShlLCBzZWxmLmVkZ2UoZSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHBhcmVudHMgPSB7fTtcbiAgZnVuY3Rpb24gZmluZFBhcmVudCh2KSB7XG4gICAgdmFyIHBhcmVudCA9IHNlbGYucGFyZW50KHYpO1xuICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCBjb3B5Lmhhc05vZGUocGFyZW50KSkge1xuICAgICAgcGFyZW50c1t2XSA9IHBhcmVudDtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgaW4gcGFyZW50cykge1xuICAgICAgcmV0dXJuIHBhcmVudHNbcGFyZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIF8uZWFjaChjb3B5Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGNvcHkuc2V0UGFyZW50KHYsIGZpbmRQYXJlbnQodikpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuXG4vKiA9PT0gRWRnZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhdGggPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgXy5yZWR1Y2UodnMsIGZ1bmN0aW9uKHYsIHcpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldEVkZ2UodiwgdywgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldEVkZ2Uodiwgdyk7XG4gICAgfVxuICAgIHJldHVybiB3O1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKlxuICogc2V0RWRnZSh2LCB3LCBbdmFsdWUsIFtuYW1lXV0pXG4gKiBzZXRFZGdlKHsgdiwgdywgW25hbWVdIH0sIFt2YWx1ZV0pXG4gKi9cbkdyYXBoLnByb3RvdHlwZS5zZXRFZGdlID0gZnVuY3Rpb24oKSB7XG4gIHZhciB2LCB3LCBuYW1lLCB2YWx1ZSxcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gZmFsc2UsXG4gICAgICBhcmcwID0gYXJndW1lbnRzWzBdO1xuXG4gIGlmICh0eXBlb2YgYXJnMCA9PT0gXCJvYmplY3RcIiAmJiBhcmcwICE9PSBudWxsICYmIFwidlwiIGluIGFyZzApIHtcbiAgICB2ID0gYXJnMC52O1xuICAgIHcgPSBhcmcwLnc7XG4gICAgbmFtZSA9IGFyZzAubmFtZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHYgPSBhcmcwO1xuICAgIHcgPSBhcmd1bWVudHNbMV07XG4gICAgbmFtZSA9IGFyZ3VtZW50c1szXTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzJdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHYgPSBcIlwiICsgdjtcbiAgdyA9IFwiXCIgKyB3O1xuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBuYW1lID0gXCJcIiArIG5hbWU7XG4gIH1cblxuICB2YXIgZSA9IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgaWYgKF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpKSB7XG4gICAgaWYgKHZhbHVlU3BlY2lmaWVkKSB7XG4gICAgICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpICYmICF0aGlzLl9pc011bHRpZ3JhcGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlXCIpO1xuICB9XG5cbiAgLy8gSXQgZGlkbid0IGV4aXN0LCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC5cbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBub2RlcyBleGlzdC5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLnNldE5vZGUodyk7XG5cbiAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlU3BlY2lmaWVkID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odiwgdywgbmFtZSk7XG5cbiAgdmFyIGVkZ2VPYmogPSBlZGdlQXJnc1RvT2JqKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAvLyBFbnN1cmUgd2UgYWRkIHVuZGlyZWN0ZWQgZWRnZXMgaW4gYSBjb25zaXN0ZW50IHdheS5cbiAgdiA9IGVkZ2VPYmoudjtcbiAgdyA9IGVkZ2VPYmoudztcblxuICBPYmplY3QuZnJlZXplKGVkZ2VPYmopO1xuICB0aGlzLl9lZGdlT2Jqc1tlXSA9IGVkZ2VPYmo7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gIHRoaXMuX2luW3ddW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fb3V0W3ZdW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fZWRnZUNvdW50Kys7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgICAgICAgICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tlXTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICAgICAgICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgICAgICAgICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpLFxuICAgICAgZWRnZSA9IHRoaXMuX2VkZ2VPYmpzW2VdO1xuICBpZiAoZWRnZSkge1xuICAgIHYgPSBlZGdlLnY7XG4gICAgdyA9IGVkZ2UudztcbiAgICBkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tlXTtcbiAgICBkZWxldGUgdGhpcy5fZWRnZU9ianNbZV07XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgICBkZWxldGUgdGhpcy5faW5bd11bZV07XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XVtlXTtcbiAgICB0aGlzLl9lZGdlQ291bnQtLTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pbkVkZ2VzID0gZnVuY3Rpb24odiwgdSkge1xuICB2YXIgaW5WID0gdGhpcy5faW5bdl07XG4gIGlmIChpblYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhpblYpO1xuICAgIGlmICghdSkge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudiA9PT0gdTsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5vdXRFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIG91dFYgPSB0aGlzLl9vdXRbdl07XG4gIGlmIChvdXRWKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMob3V0Vik7XG4gICAgaWYgKCF3KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS53ID09PSB3OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIGluRWRnZXMgPSB0aGlzLmluRWRnZXModiwgdyk7XG4gIGlmIChpbkVkZ2VzKSB7XG4gICAgcmV0dXJuIGluRWRnZXMuY29uY2F0KHRoaXMub3V0RWRnZXModiwgdykpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBpbmNyZW1lbnRPckluaXRFbnRyeShtYXAsIGspIHtcbiAgaWYgKG1hcFtrXSkge1xuICAgIG1hcFtrXSsrO1xuICB9IGVsc2Uge1xuICAgIG1hcFtrXSA9IDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjcmVtZW50T3JSZW1vdmVFbnRyeShtYXAsIGspIHtcbiAgaWYgKCEtLW1hcFtrXSkgeyBkZWxldGUgbWFwW2tdOyB9XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiB2ICsgRURHRV9LRVlfREVMSU0gKyB3ICsgRURHRV9LRVlfREVMSU0gK1xuICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKG5hbWUpID8gREVGQVVMVF9FREdFX05BTUUgOiBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb09iaihpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHZhciBlZGdlT2JqID0gIHsgdjogdiwgdzogdyB9O1xuICBpZiAobmFtZSkge1xuICAgIGVkZ2VPYmoubmFtZSA9IG5hbWU7XG4gIH1cbiAgcmV0dXJuIGVkZ2VPYmo7XG59XG5cbmZ1bmN0aW9uIGVkZ2VPYmpUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmopIHtcbiAgcmV0dXJuIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqLnYsIGVkZ2VPYmoudywgZWRnZU9iai5uYW1lKTtcbn1cbiIsIi8vIEluY2x1ZGVzIG9ubHkgdGhlIFwiY29yZVwiIG9mIGdyYXBobGliXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IHJlcXVpcmUoXCIuL2dyYXBoXCIpLFxuICB2ZXJzaW9uOiByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG59O1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIiksXG4gICAgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdyaXRlOiB3cml0ZSxcbiAgcmVhZDogcmVhZFxufTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpXG4gICAgfSxcbiAgICBub2Rlczogd3JpdGVOb2RlcyhnKSxcbiAgICBlZGdlczogd3JpdGVFZGdlcyhnKVxuICB9O1xuICBpZiAoIV8uaXNVbmRlZmluZWQoZy5ncmFwaCgpKSkge1xuICAgIGpzb24udmFsdWUgPSBfLmNsb25lKGcuZ3JhcGgoKSk7XG4gIH1cbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIHdyaXRlTm9kZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KSxcbiAgICAgICAgcGFyZW50ID0gZy5wYXJlbnQodiksXG4gICAgICAgIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2VWYWx1ZSA9IGcuZWRnZShlKSxcbiAgICAgICAgZWRnZSA9IHsgdjogZS52LCB3OiBlLncgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSkge1xuICAgICAgZWRnZS5uYW1lID0gZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZWRnZVZhbHVlKSkge1xuICAgICAgZWRnZS52YWx1ZSA9IGVkZ2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkKGpzb24pIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoanNvbi5vcHRpb25zKS5zZXRHcmFwaChqc29uLnZhbHVlKTtcbiAgXy5lYWNoKGpzb24ubm9kZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXROb2RlKGVudHJ5LnYsIGVudHJ5LnZhbHVlKTtcbiAgICBpZiAoZW50cnkucGFyZW50KSB7XG4gICAgICBnLnNldFBhcmVudChlbnRyeS52LCBlbnRyeS5wYXJlbnQpO1xuICAgIH1cbiAgfSk7XG4gIF8uZWFjaChqc29uLmVkZ2VzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuaWYgKCFsb2Rhc2gpIHtcbiAgbG9kYXNoID0gd2luZG93Ll87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG9kYXNoO1xuIiwibW9kdWxlLmV4cG9ydHMgPSAnMi4xLjUnO1xuIiwidmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJylcbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxuXG52YXIgaHR0cHMgPSBtb2R1bGUuZXhwb3J0c1xuXG5mb3IgKHZhciBrZXkgaW4gaHR0cCkge1xuICBpZiAoaHR0cC5oYXNPd25Qcm9wZXJ0eShrZXkpKSBodHRwc1trZXldID0gaHR0cFtrZXldXG59XG5cbmh0dHBzLnJlcXVlc3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLnJlcXVlc3QuY2FsbCh0aGlzLCBwYXJhbXMsIGNiKVxufVxuXG5odHRwcy5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLmdldC5jYWxsKHRoaXMsIHBhcmFtcywgY2IpXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyYW1zIChwYXJhbXMpIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcGFyYW1zID0gdXJsLnBhcnNlKHBhcmFtcylcbiAgfVxuICBpZiAoIXBhcmFtcy5wcm90b2NvbCkge1xuICAgIHBhcmFtcy5wcm90b2NvbCA9ICdodHRwczonXG4gIH1cbiAgaWYgKHBhcmFtcy5wcm90b2NvbCAhPT0gJ2h0dHBzOicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3RvY29sIFwiJyArIHBhcmFtcy5wcm90b2NvbCArICdcIiBub3Qgc3VwcG9ydGVkLiBFeHBlY3RlZCBcImh0dHBzOlwiJylcbiAgfVxuICByZXR1cm4gcGFyYW1zXG59XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiLypcbiAqICBiYXNlNjQuanNcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEJTRCAzLUNsYXVzZSBMaWNlbnNlLlxuICogICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqICBSZWZlcmVuY2VzOlxuICogICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcbiAqL1xuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KGdsb2JhbClcbiAgICAgICAgOiB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWRcbiAgICAgICAgPyBkZWZpbmUoZmFjdG9yeSkgOiBmYWN0b3J5KGdsb2JhbClcbn0oKFxuICAgIHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGZcbiAgICAgICAgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvd1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsXG46IHRoaXNcbiksIGZ1bmN0aW9uKGdsb2JhbCkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICAvLyBleGlzdGluZyB2ZXJzaW9uIGZvciBub0NvbmZsaWN0KClcbiAgICB2YXIgX0Jhc2U2NCA9IGdsb2JhbC5CYXNlNjQ7XG4gICAgdmFyIHZlcnNpb24gPSBcIjIuNC45XCI7XG4gICAgLy8gaWYgbm9kZS5qcyBhbmQgTk9UIFJlYWN0IE5hdGl2ZSwgd2UgdXNlIEJ1ZmZlclxuICAgIHZhciBidWZmZXI7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBidWZmZXIgPSBldmFsKFwicmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXCIpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBjb25zdGFudHNcbiAgICB2YXIgYjY0Y2hhcnNcbiAgICAgICAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG4gICAgdmFyIGI2NHRhYiA9IGZ1bmN0aW9uKGJpbikge1xuICAgICAgICB2YXIgdCA9IHt9O1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGJpbi5sZW5ndGg7IGkgPCBsOyBpKyspIHRbYmluLmNoYXJBdChpKV0gPSBpO1xuICAgICAgICByZXR1cm4gdDtcbiAgICB9KGI2NGNoYXJzKTtcbiAgICB2YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgICAvLyBlbmNvZGVyIHN0dWZmXG4gICAgdmFyIGNiX3V0b2IgPSBmdW5jdGlvbihjKSB7XG4gICAgICAgIGlmIChjLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHZhciBjYyA9IGMuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIHJldHVybiBjYyA8IDB4ODAgPyBjXG4gICAgICAgICAgICAgICAgOiBjYyA8IDB4ODAwID8gKGZyb21DaGFyQ29kZSgweGMwIHwgKGNjID4+PiA2KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmcm9tQ2hhckNvZGUoMHg4MCB8IChjYyAmIDB4M2YpKSlcbiAgICAgICAgICAgICAgICA6IChmcm9tQ2hhckNvZGUoMHhlMCB8ICgoY2MgPj4+IDEyKSAmIDB4MGYpKVxuICAgICAgICAgICAgICAgICAgICsgZnJvbUNoYXJDb2RlKDB4ODAgfCAoKGNjID4+PiAgNikgJiAweDNmKSlcbiAgICAgICAgICAgICAgICAgICArIGZyb21DaGFyQ29kZSgweDgwIHwgKCBjYyAgICAgICAgICYgMHgzZikpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjYyA9IDB4MTAwMDBcbiAgICAgICAgICAgICAgICArIChjLmNoYXJDb2RlQXQoMCkgLSAweEQ4MDApICogMHg0MDBcbiAgICAgICAgICAgICAgICArIChjLmNoYXJDb2RlQXQoMSkgLSAweERDMDApO1xuICAgICAgICAgICAgcmV0dXJuIChmcm9tQ2hhckNvZGUoMHhmMCB8ICgoY2MgPj4+IDE4KSAmIDB4MDcpKVxuICAgICAgICAgICAgICAgICAgICArIGZyb21DaGFyQ29kZSgweDgwIHwgKChjYyA+Pj4gMTIpICYgMHgzZikpXG4gICAgICAgICAgICAgICAgICAgICsgZnJvbUNoYXJDb2RlKDB4ODAgfCAoKGNjID4+PiAgNikgJiAweDNmKSlcbiAgICAgICAgICAgICAgICAgICAgKyBmcm9tQ2hhckNvZGUoMHg4MCB8ICggY2MgICAgICAgICAmIDB4M2YpKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciByZV91dG9iID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRkZdfFteXFx4MDAtXFx4N0ZdL2c7XG4gICAgdmFyIHV0b2IgPSBmdW5jdGlvbih1KSB7XG4gICAgICAgIHJldHVybiB1LnJlcGxhY2UocmVfdXRvYiwgY2JfdXRvYik7XG4gICAgfTtcbiAgICB2YXIgY2JfZW5jb2RlID0gZnVuY3Rpb24oY2NjKSB7XG4gICAgICAgIHZhciBwYWRsZW4gPSBbMCwgMiwgMV1bY2NjLmxlbmd0aCAlIDNdLFxuICAgICAgICBvcmQgPSBjY2MuY2hhckNvZGVBdCgwKSA8PCAxNlxuICAgICAgICAgICAgfCAoKGNjYy5sZW5ndGggPiAxID8gY2NjLmNoYXJDb2RlQXQoMSkgOiAwKSA8PCA4KVxuICAgICAgICAgICAgfCAoKGNjYy5sZW5ndGggPiAyID8gY2NjLmNoYXJDb2RlQXQoMikgOiAwKSksXG4gICAgICAgIGNoYXJzID0gW1xuICAgICAgICAgICAgYjY0Y2hhcnMuY2hhckF0KCBvcmQgPj4+IDE4KSxcbiAgICAgICAgICAgIGI2NGNoYXJzLmNoYXJBdCgob3JkID4+PiAxMikgJiA2MyksXG4gICAgICAgICAgICBwYWRsZW4gPj0gMiA/ICc9JyA6IGI2NGNoYXJzLmNoYXJBdCgob3JkID4+PiA2KSAmIDYzKSxcbiAgICAgICAgICAgIHBhZGxlbiA+PSAxID8gJz0nIDogYjY0Y2hhcnMuY2hhckF0KG9yZCAmIDYzKVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gICAgfTtcbiAgICB2YXIgYnRvYSA9IGdsb2JhbC5idG9hID8gZnVuY3Rpb24oYikge1xuICAgICAgICByZXR1cm4gZ2xvYmFsLmJ0b2EoYik7XG4gICAgfSA6IGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgcmV0dXJuIGIucmVwbGFjZSgvW1xcc1xcU117MSwzfS9nLCBjYl9lbmNvZGUpO1xuICAgIH07XG4gICAgdmFyIF9lbmNvZGUgPSBidWZmZXIgP1xuICAgICAgICBidWZmZXIuZnJvbSAmJiBVaW50OEFycmF5ICYmIGJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb21cbiAgICAgICAgPyBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuICh1LmNvbnN0cnVjdG9yID09PSBidWZmZXIuY29uc3RydWN0b3IgPyB1IDogYnVmZmVyLmZyb20odSkpXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgICB9XG4gICAgICAgIDogIGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gKHUuY29uc3RydWN0b3IgPT09IGJ1ZmZlci5jb25zdHJ1Y3RvciA/IHUgOiBuZXcgIGJ1ZmZlcih1KSlcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIH1cbiAgICAgICAgOiBmdW5jdGlvbiAodSkgeyByZXR1cm4gYnRvYSh1dG9iKHUpKSB9XG4gICAgO1xuICAgIHZhciBlbmNvZGUgPSBmdW5jdGlvbih1LCB1cmlzYWZlKSB7XG4gICAgICAgIHJldHVybiAhdXJpc2FmZVxuICAgICAgICAgICAgPyBfZW5jb2RlKFN0cmluZyh1KSlcbiAgICAgICAgICAgIDogX2VuY29kZShTdHJpbmcodSkpLnJlcGxhY2UoL1srXFwvXS9nLCBmdW5jdGlvbihtMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtMCA9PSAnKycgPyAnLScgOiAnXyc7XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC89L2csICcnKTtcbiAgICB9O1xuICAgIHZhciBlbmNvZGVVUkkgPSBmdW5jdGlvbih1KSB7IHJldHVybiBlbmNvZGUodSwgdHJ1ZSkgfTtcbiAgICAvLyBkZWNvZGVyIHN0dWZmXG4gICAgdmFyIHJlX2J0b3UgPSBuZXcgUmVnRXhwKFtcbiAgICAgICAgJ1tcXHhDMC1cXHhERl1bXFx4ODAtXFx4QkZdJyxcbiAgICAgICAgJ1tcXHhFMC1cXHhFRl1bXFx4ODAtXFx4QkZdezJ9JyxcbiAgICAgICAgJ1tcXHhGMC1cXHhGN11bXFx4ODAtXFx4QkZdezN9J1xuICAgIF0uam9pbignfCcpLCAnZycpO1xuICAgIHZhciBjYl9idG91ID0gZnVuY3Rpb24oY2NjYykge1xuICAgICAgICBzd2l0Y2goY2NjYy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgdmFyIGNwID0gKCgweDA3ICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCAxOClcbiAgICAgICAgICAgICAgICB8ICAgICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgMTIpXG4gICAgICAgICAgICAgICAgfCAgICAoKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMikpIDw8ICA2KVxuICAgICAgICAgICAgICAgIHwgICAgICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDMpKSxcbiAgICAgICAgICAgIG9mZnNldCA9IGNwIC0gMHgxMDAwMDtcbiAgICAgICAgICAgIHJldHVybiAoZnJvbUNoYXJDb2RlKChvZmZzZXQgID4+PiAxMCkgKyAweEQ4MDApXG4gICAgICAgICAgICAgICAgICAgICsgZnJvbUNoYXJDb2RlKChvZmZzZXQgJiAweDNGRikgKyAweERDMDApKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShcbiAgICAgICAgICAgICAgICAoKDB4MGYgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDEyKVxuICAgICAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgNilcbiAgICAgICAgICAgICAgICAgICAgfCAgKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMikpXG4gICAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICBmcm9tQ2hhckNvZGUoXG4gICAgICAgICAgICAgICAgKCgweDFmICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCA2KVxuICAgICAgICAgICAgICAgICAgICB8ICAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBidG91ID0gZnVuY3Rpb24oYikge1xuICAgICAgICByZXR1cm4gYi5yZXBsYWNlKHJlX2J0b3UsIGNiX2J0b3UpO1xuICAgIH07XG4gICAgdmFyIGNiX2RlY29kZSA9IGZ1bmN0aW9uKGNjY2MpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNjY2MubGVuZ3RoLFxuICAgICAgICBwYWRsZW4gPSBsZW4gJSA0LFxuICAgICAgICBuID0gKGxlbiA+IDAgPyBiNjR0YWJbY2NjYy5jaGFyQXQoMCldIDw8IDE4IDogMClcbiAgICAgICAgICAgIHwgKGxlbiA+IDEgPyBiNjR0YWJbY2NjYy5jaGFyQXQoMSldIDw8IDEyIDogMClcbiAgICAgICAgICAgIHwgKGxlbiA+IDIgPyBiNjR0YWJbY2NjYy5jaGFyQXQoMildIDw8ICA2IDogMClcbiAgICAgICAgICAgIHwgKGxlbiA+IDMgPyBiNjR0YWJbY2NjYy5jaGFyQXQoMyldICAgICAgIDogMCksXG4gICAgICAgIGNoYXJzID0gW1xuICAgICAgICAgICAgZnJvbUNoYXJDb2RlKCBuID4+PiAxNiksXG4gICAgICAgICAgICBmcm9tQ2hhckNvZGUoKG4gPj4+ICA4KSAmIDB4ZmYpLFxuICAgICAgICAgICAgZnJvbUNoYXJDb2RlKCBuICAgICAgICAgJiAweGZmKVxuICAgICAgICBdO1xuICAgICAgICBjaGFycy5sZW5ndGggLT0gWzAsIDAsIDIsIDFdW3BhZGxlbl07XG4gICAgICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgICB9O1xuICAgIHZhciBhdG9iID0gZ2xvYmFsLmF0b2IgPyBmdW5jdGlvbihhKSB7XG4gICAgICAgIHJldHVybiBnbG9iYWwuYXRvYihhKTtcbiAgICB9IDogZnVuY3Rpb24oYSl7XG4gICAgICAgIHJldHVybiBhLnJlcGxhY2UoL1tcXHNcXFNdezEsNH0vZywgY2JfZGVjb2RlKTtcbiAgICB9O1xuICAgIHZhciBfZGVjb2RlID0gYnVmZmVyID9cbiAgICAgICAgYnVmZmVyLmZyb20gJiYgVWludDhBcnJheSAmJiBidWZmZXIuZnJvbSAhPT0gVWludDhBcnJheS5mcm9tXG4gICAgICAgID8gZnVuY3Rpb24oYSkge1xuICAgICAgICAgICAgcmV0dXJuIChhLmNvbnN0cnVjdG9yID09PSBidWZmZXIuY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgICAgICAgPyBhIDogYnVmZmVyLmZyb20oYSwgJ2Jhc2U2NCcpKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIDogZnVuY3Rpb24oYSkge1xuICAgICAgICAgICAgcmV0dXJuIChhLmNvbnN0cnVjdG9yID09PSBidWZmZXIuY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgICAgICAgPyBhIDogbmV3IGJ1ZmZlcihhLCAnYmFzZTY0JykpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgOiBmdW5jdGlvbihhKSB7IHJldHVybiBidG91KGF0b2IoYSkpIH07XG4gICAgdmFyIGRlY29kZSA9IGZ1bmN0aW9uKGEpe1xuICAgICAgICByZXR1cm4gX2RlY29kZShcbiAgICAgICAgICAgIFN0cmluZyhhKS5yZXBsYWNlKC9bLV9dL2csIGZ1bmN0aW9uKG0wKSB7IHJldHVybiBtMCA9PSAnLScgPyAnKycgOiAnLycgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW15BLVphLXowLTlcXCtcXC9dL2csICcnKVxuICAgICAgICApO1xuICAgIH07XG4gICAgdmFyIG5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIEJhc2U2NCA9IGdsb2JhbC5CYXNlNjQ7XG4gICAgICAgIGdsb2JhbC5CYXNlNjQgPSBfQmFzZTY0O1xuICAgICAgICByZXR1cm4gQmFzZTY0O1xuICAgIH07XG4gICAgLy8gZXhwb3J0IEJhc2U2NFxuICAgIGdsb2JhbC5CYXNlNjQgPSB7XG4gICAgICAgIFZFUlNJT046IHZlcnNpb24sXG4gICAgICAgIGF0b2I6IGF0b2IsXG4gICAgICAgIGJ0b2E6IGJ0b2EsXG4gICAgICAgIGZyb21CYXNlNjQ6IGRlY29kZSxcbiAgICAgICAgdG9CYXNlNjQ6IGVuY29kZSxcbiAgICAgICAgdXRvYjogdXRvYixcbiAgICAgICAgZW5jb2RlOiBlbmNvZGUsXG4gICAgICAgIGVuY29kZVVSSTogZW5jb2RlVVJJLFxuICAgICAgICBidG91OiBidG91LFxuICAgICAgICBkZWNvZGU6IGRlY29kZSxcbiAgICAgICAgbm9Db25mbGljdDogbm9Db25mbGljdCxcbiAgICAgICAgX19idWZmZXJfXzogYnVmZmVyXG4gICAgfTtcbiAgICAvLyBpZiBFUzUgaXMgYXZhaWxhYmxlLCBtYWtlIEJhc2U2NC5leHRlbmRTdHJpbmcoKSBhdmFpbGFibGVcbiAgICBpZiAodHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgbm9FbnVtID0gZnVuY3Rpb24odil7XG4gICAgICAgICAgICByZXR1cm4ge3ZhbHVlOnYsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtcbiAgICAgICAgfTtcbiAgICAgICAgZ2xvYmFsLkJhc2U2NC5leHRlbmRTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgU3RyaW5nLnByb3RvdHlwZSwgJ2Zyb21CYXNlNjQnLCBub0VudW0oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlKHRoaXMpXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFxuICAgICAgICAgICAgICAgIFN0cmluZy5wcm90b3R5cGUsICd0b0Jhc2U2NCcsIG5vRW51bShmdW5jdGlvbiAodXJpc2FmZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlKHRoaXMsIHVyaXNhZmUpXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFxuICAgICAgICAgICAgICAgIFN0cmluZy5wcm90b3R5cGUsICd0b0Jhc2U2NFVSSScsIG5vRW51bShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGUodGhpcywgdHJ1ZSlcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vXG4gICAgLy8gZXhwb3J0IEJhc2U2NCB0byB0aGUgbmFtZXNwYWNlXG4gICAgLy9cbiAgICBpZiAoZ2xvYmFsWydNZXRlb3InXSkgeyAvLyBNZXRlb3IuanNcbiAgICAgICAgQmFzZTY0ID0gZ2xvYmFsLkJhc2U2NDtcbiAgICB9XG4gICAgLy8gbW9kdWxlLmV4cG9ydHMgYW5kIEFNRCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuICAgIC8vIG1vZHVsZS5leHBvcnRzIGhhcyBwcmVjZWRlbmNlLlxuICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cy5CYXNlNjQgPSBnbG9iYWwuQmFzZTY0O1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLlxuICAgICAgICBkZWZpbmUoW10sIGZ1bmN0aW9uKCl7IHJldHVybiBnbG9iYWwuQmFzZTY0IH0pO1xuICAgIH1cbiAgICAvLyB0aGF0J3MgaXQhXG4gICAgcmV0dXJuIHtCYXNlNjQ6IGdsb2JhbC5CYXNlNjR9XG59KSk7XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIHlhbWwgPSByZXF1aXJlKCcuL2xpYi9qcy15YW1sLmpzJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB5YW1sO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBsb2FkZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvbG9hZGVyJyk7XG52YXIgZHVtcGVyID0gcmVxdWlyZSgnLi9qcy15YW1sL2R1bXBlcicpO1xuXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZWQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gJyArIG5hbWUgKyAnIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkLicpO1xuICB9O1xufVxuXG5cbm1vZHVsZS5leHBvcnRzLlR5cGUgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvdHlwZScpO1xubW9kdWxlLmV4cG9ydHMuU2NoZW1hICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEnKTtcbm1vZHVsZS5leHBvcnRzLkZBSUxTQUZFX1NDSEVNQSAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlJyk7XG5tb2R1bGUuZXhwb3J0cy5KU09OX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9qc29uJyk7XG5tb2R1bGUuZXhwb3J0cy5DT1JFX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9jb3JlJyk7XG5tb2R1bGUuZXhwb3J0cy5ERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xubW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgICAgICAgICA9IGxvYWRlci5sb2FkO1xubW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgICAgICAgICA9IGxvYWRlci5sb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkQWxsICAgICAgICAgPSBsb2FkZXIuc2FmZUxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5kdW1wICAgICAgICAgICAgICAgID0gZHVtcGVyLmR1bXA7XG5tb2R1bGUuZXhwb3J0cy5zYWZlRHVtcCAgICAgICAgICAgID0gZHVtcGVyLnNhZmVEdW1wO1xubW9kdWxlLmV4cG9ydHMuWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9leGNlcHRpb24nKTtcblxuLy8gRGVwcmVjYXRlZCBzY2hlbWEgbmFtZXMgZnJvbSBKUy1ZQU1MIDIuMC54XG5tb2R1bGUuZXhwb3J0cy5NSU5JTUFMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTtcbm1vZHVsZS5leHBvcnRzLlNBRkVfU0NIRU1BICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcblxuLy8gRGVwcmVjYXRlZCBmdW5jdGlvbnMgZnJvbSBKUy1ZQU1MIDEueC54XG5tb2R1bGUuZXhwb3J0cy5zY2FuICAgICAgICAgICA9IGRlcHJlY2F0ZWQoJ3NjYW4nKTtcbm1vZHVsZS5leHBvcnRzLnBhcnNlICAgICAgICAgID0gZGVwcmVjYXRlZCgncGFyc2UnKTtcbm1vZHVsZS5leHBvcnRzLmNvbXBvc2UgICAgICAgID0gZGVwcmVjYXRlZCgnY29tcG9zZScpO1xubW9kdWxlLmV4cG9ydHMuYWRkQ29uc3RydWN0b3IgPSBkZXByZWNhdGVkKCdhZGRDb25zdHJ1Y3RvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbmZ1bmN0aW9uIGlzTm90aGluZyhzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICd1bmRlZmluZWQnKSB8fCAoc3ViamVjdCA9PT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gaXNPYmplY3Qoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAnb2JqZWN0JykgJiYgKHN1YmplY3QgIT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIHRvQXJyYXkoc2VxdWVuY2UpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VxdWVuY2UpKSByZXR1cm4gc2VxdWVuY2U7XG4gIGVsc2UgaWYgKGlzTm90aGluZyhzZXF1ZW5jZSkpIHJldHVybiBbXTtcblxuICByZXR1cm4gWyBzZXF1ZW5jZSBdO1xufVxuXG5cbmZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwga2V5LCBzb3VyY2VLZXlzO1xuXG4gIGlmIChzb3VyY2UpIHtcbiAgICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5cbmZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIGNvdW50KSB7XG4gIHZhciByZXN1bHQgPSAnJywgY3ljbGU7XG5cbiAgZm9yIChjeWNsZSA9IDA7IGN5Y2xlIDwgY291bnQ7IGN5Y2xlICs9IDEpIHtcbiAgICByZXN1bHQgKz0gc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlWmVybyhudW1iZXIpIHtcbiAgcmV0dXJuIChudW1iZXIgPT09IDApICYmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IDEgLyBudW1iZXIpO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzLmlzTm90aGluZyAgICAgID0gaXNOb3RoaW5nO1xubW9kdWxlLmV4cG9ydHMuaXNPYmplY3QgICAgICAgPSBpc09iamVjdDtcbm1vZHVsZS5leHBvcnRzLnRvQXJyYXkgICAgICAgID0gdG9BcnJheTtcbm1vZHVsZS5leHBvcnRzLnJlcGVhdCAgICAgICAgID0gcmVwZWF0O1xubW9kdWxlLmV4cG9ydHMuaXNOZWdhdGl2ZVplcm8gPSBpc05lZ2F0aXZlWmVybztcbm1vZHVsZS5leHBvcnRzLmV4dGVuZCAgICAgICAgID0gZXh0ZW5kO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lKi9cblxudmFyIGNvbW1vbiAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gICAgICAgPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIERFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcbnZhciBERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG5cbnZhciBfdG9TdHJpbmcgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBDSEFSX1RBQiAgICAgICAgICAgICAgICAgID0gMHgwOTsgLyogVGFiICovXG52YXIgQ0hBUl9MSU5FX0ZFRUQgICAgICAgICAgICA9IDB4MEE7IC8qIExGICovXG52YXIgQ0hBUl9TUEFDRSAgICAgICAgICAgICAgICA9IDB4MjA7IC8qIFNwYWNlICovXG52YXIgQ0hBUl9FWENMQU1BVElPTiAgICAgICAgICA9IDB4MjE7IC8qICEgKi9cbnZhciBDSEFSX0RPVUJMRV9RVU9URSAgICAgICAgID0gMHgyMjsgLyogXCIgKi9cbnZhciBDSEFSX1NIQVJQICAgICAgICAgICAgICAgID0gMHgyMzsgLyogIyAqL1xudmFyIENIQVJfUEVSQ0VOVCAgICAgICAgICAgICAgPSAweDI1OyAvKiAlICovXG52YXIgQ0hBUl9BTVBFUlNBTkQgICAgICAgICAgICA9IDB4MjY7IC8qICYgKi9cbnZhciBDSEFSX1NJTkdMRV9RVU9URSAgICAgICAgID0gMHgyNzsgLyogJyAqL1xudmFyIENIQVJfQVNURVJJU0sgICAgICAgICAgICAgPSAweDJBOyAvKiAqICovXG52YXIgQ0hBUl9DT01NQSAgICAgICAgICAgICAgICA9IDB4MkM7IC8qICwgKi9cbnZhciBDSEFSX01JTlVTICAgICAgICAgICAgICAgID0gMHgyRDsgLyogLSAqL1xudmFyIENIQVJfQ09MT04gICAgICAgICAgICAgICAgPSAweDNBOyAvKiA6ICovXG52YXIgQ0hBUl9HUkVBVEVSX1RIQU4gICAgICAgICA9IDB4M0U7IC8qID4gKi9cbnZhciBDSEFSX1FVRVNUSU9OICAgICAgICAgICAgID0gMHgzRjsgLyogPyAqL1xudmFyIENIQVJfQ09NTUVSQ0lBTF9BVCAgICAgICAgPSAweDQwOyAvKiBAICovXG52YXIgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUICA9IDB4NUI7IC8qIFsgKi9cbnZhciBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUID0gMHg1RDsgLyogXSAqL1xudmFyIENIQVJfR1JBVkVfQUNDRU5UICAgICAgICAgPSAweDYwOyAvKiBgICovXG52YXIgQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVQgICA9IDB4N0I7IC8qIHsgKi9cbnZhciBDSEFSX1ZFUlRJQ0FMX0xJTkUgICAgICAgID0gMHg3QzsgLyogfCAqL1xudmFyIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVCAgPSAweDdEOyAvKiB9ICovXG5cbnZhciBFU0NBUEVfU0VRVUVOQ0VTID0ge307XG5cbkVTQ0FQRV9TRVFVRU5DRVNbMHgwMF0gICA9ICdcXFxcMCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDddICAgPSAnXFxcXGEnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA4XSAgID0gJ1xcXFxiJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwOV0gICA9ICdcXFxcdCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MEFdICAgPSAnXFxcXG4nO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBCXSAgID0gJ1xcXFx2JztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQ10gICA9ICdcXFxcZic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MERdICAgPSAnXFxcXHInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDFCXSAgID0gJ1xcXFxlJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMl0gICA9ICdcXFxcXCInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDVDXSAgID0gJ1xcXFxcXFxcJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHg4NV0gICA9ICdcXFxcTic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4QTBdICAgPSAnXFxcXF8nO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIwMjhdID0gJ1xcXFxMJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMDI5XSA9ICdcXFxcUCc7XG5cbnZhciBERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWCA9IFtcbiAgJ3knLCAnWScsICd5ZXMnLCAnWWVzJywgJ1lFUycsICdvbicsICdPbicsICdPTicsXG4gICduJywgJ04nLCAnbm8nLCAnTm8nLCAnTk8nLCAnb2ZmJywgJ09mZicsICdPRkYnXG5dO1xuXG5mdW5jdGlvbiBjb21waWxlU3R5bGVNYXAoc2NoZW1hLCBtYXApIHtcbiAgdmFyIHJlc3VsdCwga2V5cywgaW5kZXgsIGxlbmd0aCwgdGFnLCBzdHlsZSwgdHlwZTtcblxuICBpZiAobWFwID09PSBudWxsKSByZXR1cm4ge307XG5cbiAgcmVzdWx0ID0ge307XG4gIGtleXMgPSBPYmplY3Qua2V5cyhtYXApO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0YWcgPSBrZXlzW2luZGV4XTtcbiAgICBzdHlsZSA9IFN0cmluZyhtYXBbdGFnXSk7XG5cbiAgICBpZiAodGFnLnNsaWNlKDAsIDIpID09PSAnISEnKSB7XG4gICAgICB0YWcgPSAndGFnOnlhbWwub3JnLDIwMDI6JyArIHRhZy5zbGljZSgyKTtcbiAgICB9XG4gICAgdHlwZSA9IHNjaGVtYS5jb21waWxlZFR5cGVNYXBbJ2ZhbGxiYWNrJ11bdGFnXTtcblxuICAgIGlmICh0eXBlICYmIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHR5cGUuc3R5bGVBbGlhc2VzLCBzdHlsZSkpIHtcbiAgICAgIHN0eWxlID0gdHlwZS5zdHlsZUFsaWFzZXNbc3R5bGVdO1xuICAgIH1cblxuICAgIHJlc3VsdFt0YWddID0gc3R5bGU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVIZXgoY2hhcmFjdGVyKSB7XG4gIHZhciBzdHJpbmcsIGhhbmRsZSwgbGVuZ3RoO1xuXG4gIHN0cmluZyA9IGNoYXJhY3Rlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblxuICBpZiAoY2hhcmFjdGVyIDw9IDB4RkYpIHtcbiAgICBoYW5kbGUgPSAneCc7XG4gICAgbGVuZ3RoID0gMjtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGKSB7XG4gICAgaGFuZGxlID0gJ3UnO1xuICAgIGxlbmd0aCA9IDQ7XG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyIDw9IDB4RkZGRkZGRkYpIHtcbiAgICBoYW5kbGUgPSAnVSc7XG4gICAgbGVuZ3RoID0gODtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignY29kZSBwb2ludCB3aXRoaW4gYSBzdHJpbmcgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gMHhGRkZGRkZGRicpO1xuICB9XG5cbiAgcmV0dXJuICdcXFxcJyArIGhhbmRsZSArIGNvbW1vbi5yZXBlYXQoJzAnLCBsZW5ndGggLSBzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn1cblxuZnVuY3Rpb24gU3RhdGUob3B0aW9ucykge1xuICB0aGlzLnNjaGVtYSAgICAgICA9IG9wdGlvbnNbJ3NjaGVtYSddIHx8IERFRkFVTFRfRlVMTF9TQ0hFTUE7XG4gIHRoaXMuaW5kZW50ICAgICAgID0gTWF0aC5tYXgoMSwgKG9wdGlvbnNbJ2luZGVudCddIHx8IDIpKTtcbiAgdGhpcy5za2lwSW52YWxpZCAgPSBvcHRpb25zWydza2lwSW52YWxpZCddIHx8IGZhbHNlO1xuICB0aGlzLmZsb3dMZXZlbCAgICA9IChjb21tb24uaXNOb3RoaW5nKG9wdGlvbnNbJ2Zsb3dMZXZlbCddKSA/IC0xIDogb3B0aW9uc1snZmxvd0xldmVsJ10pO1xuICB0aGlzLnN0eWxlTWFwICAgICA9IGNvbXBpbGVTdHlsZU1hcCh0aGlzLnNjaGVtYSwgb3B0aW9uc1snc3R5bGVzJ10gfHwgbnVsbCk7XG4gIHRoaXMuc29ydEtleXMgICAgID0gb3B0aW9uc1snc29ydEtleXMnXSB8fCBmYWxzZTtcbiAgdGhpcy5saW5lV2lkdGggICAgPSBvcHRpb25zWydsaW5lV2lkdGgnXSB8fCA4MDtcbiAgdGhpcy5ub1JlZnMgICAgICAgPSBvcHRpb25zWydub1JlZnMnXSB8fCBmYWxzZTtcbiAgdGhpcy5ub0NvbXBhdE1vZGUgPSBvcHRpb25zWydub0NvbXBhdE1vZGUnXSB8fCBmYWxzZTtcbiAgdGhpcy5jb25kZW5zZUZsb3cgPSBvcHRpb25zWydjb25kZW5zZUZsb3cnXSB8fCBmYWxzZTtcblxuICB0aGlzLmltcGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0O1xuICB0aGlzLmV4cGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEV4cGxpY2l0O1xuXG4gIHRoaXMudGFnID0gbnVsbDtcbiAgdGhpcy5yZXN1bHQgPSAnJztcblxuICB0aGlzLmR1cGxpY2F0ZXMgPSBbXTtcbiAgdGhpcy51c2VkRHVwbGljYXRlcyA9IG51bGw7XG59XG5cbi8vIEluZGVudHMgZXZlcnkgbGluZSBpbiBhIHN0cmluZy4gRW1wdHkgbGluZXMgKFxcbiBvbmx5KSBhcmUgbm90IGluZGVudGVkLlxuZnVuY3Rpb24gaW5kZW50U3RyaW5nKHN0cmluZywgc3BhY2VzKSB7XG4gIHZhciBpbmQgPSBjb21tb24ucmVwZWF0KCcgJywgc3BhY2VzKSxcbiAgICAgIHBvc2l0aW9uID0gMCxcbiAgICAgIG5leHQgPSAtMSxcbiAgICAgIHJlc3VsdCA9ICcnLFxuICAgICAgbGluZSxcbiAgICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoKSB7XG4gICAgbmV4dCA9IHN0cmluZy5pbmRleE9mKCdcXG4nLCBwb3NpdGlvbik7XG4gICAgaWYgKG5leHQgPT09IC0xKSB7XG4gICAgICBsaW5lID0gc3RyaW5nLnNsaWNlKHBvc2l0aW9uKTtcbiAgICAgIHBvc2l0aW9uID0gbGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lID0gc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBuZXh0ICsgMSk7XG4gICAgICBwb3NpdGlvbiA9IG5leHQgKyAxO1xuICAgIH1cblxuICAgIGlmIChsaW5lLmxlbmd0aCAmJiBsaW5lICE9PSAnXFxuJykgcmVzdWx0ICs9IGluZDtcblxuICAgIHJlc3VsdCArPSBsaW5lO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpIHtcbiAgcmV0dXJuICdcXG4nICsgY29tbW9uLnJlcGVhdCgnICcsIHN0YXRlLmluZGVudCAqIGxldmVsKTtcbn1cblxuZnVuY3Rpb24gdGVzdEltcGxpY2l0UmVzb2x2aW5nKHN0YXRlLCBzdHIpIHtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIHR5cGU7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW2luZGV4XTtcblxuICAgIGlmICh0eXBlLnJlc29sdmUoc3RyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBbMzNdIHMtd2hpdGUgOjo9IHMtc3BhY2UgfCBzLXRhYlxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMpIHtcbiAgcmV0dXJuIGMgPT09IENIQVJfU1BBQ0UgfHwgYyA9PT0gQ0hBUl9UQUI7XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGNhbiBiZSBwcmludGVkIHdpdGhvdXQgZXNjYXBpbmcuXG4vLyBGcm9tIFlBTUwgMS4yOiBcImFueSBhbGxvd2VkIGNoYXJhY3RlcnMga25vd24gdG8gYmUgbm9uLXByaW50YWJsZVxuLy8gc2hvdWxkIGFsc28gYmUgZXNjYXBlZC4gW0hvd2V2ZXIsXSBUaGlzIGlzbuKAmXQgbWFuZGF0b3J5XCJcbi8vIERlcml2ZWQgZnJvbSBuYi1jaGFyIC0gXFx0IC0gI3g4NSAtICN4QTAgLSAjeDIwMjggLSAjeDIwMjkuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShjKSB7XG4gIHJldHVybiAgKDB4MDAwMjAgPD0gYyAmJiBjIDw9IDB4MDAwMDdFKVxuICAgICAgfHwgKCgweDAwMEExIDw9IGMgJiYgYyA8PSAweDAwRDdGRikgJiYgYyAhPT0gMHgyMDI4ICYmIGMgIT09IDB4MjAyOSlcbiAgICAgIHx8ICgoMHgwRTAwMCA8PSBjICYmIGMgPD0gMHgwMEZGRkQpICYmIGMgIT09IDB4RkVGRiAvKiBCT00gKi8pXG4gICAgICB8fCAgKDB4MTAwMDAgPD0gYyAmJiBjIDw9IDB4MTBGRkZGKTtcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLlxuZnVuY3Rpb24gaXNQbGFpblNhZmUoYykge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5iLWNoYXIgLSBjLWZsb3ctaW5kaWNhdG9yIC0gXCI6XCIgLSBcIiNcIlxuICAvLyB3aGVyZSBuYi1jaGFyIDo6PSBjLXByaW50YWJsZSAtIGItY2hhciAtIGMtYnl0ZS1vcmRlci1tYXJrLlxuICByZXR1cm4gaXNQcmludGFibGUoYykgJiYgYyAhPT0gMHhGRUZGXG4gICAgLy8gLSBjLWZsb3ctaW5kaWNhdG9yXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIC0gXCI6XCIgLSBcIiNcIlxuICAgICYmIGMgIT09IENIQVJfQ09MT05cbiAgICAmJiBjICE9PSBDSEFSX1NIQVJQO1xufVxuXG4vLyBTaW1wbGlmaWVkIHRlc3QgZm9yIHZhbHVlcyBhbGxvd2VkIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUuXG5mdW5jdGlvbiBpc1BsYWluU2FmZUZpcnN0KGMpIHtcbiAgLy8gVXNlcyBhIHN1YnNldCBvZiBucy1jaGFyIC0gYy1pbmRpY2F0b3JcbiAgLy8gd2hlcmUgbnMtY2hhciA9IG5iLWNoYXIgLSBzLXdoaXRlLlxuICByZXR1cm4gaXNQcmludGFibGUoYykgJiYgYyAhPT0gMHhGRUZGXG4gICAgJiYgIWlzV2hpdGVzcGFjZShjKSAvLyAtIHMtd2hpdGVcbiAgICAvLyAtIChjLWluZGljYXRvciA6Oj1cbiAgICAvLyDigJwt4oCdIHwg4oCcP+KAnSB8IOKAnDrigJ0gfCDigJws4oCdIHwg4oCcW+KAnSB8IOKAnF3igJ0gfCDigJx74oCdIHwg4oCcfeKAnVxuICAgICYmIGMgIT09IENIQVJfTUlOVVNcbiAgICAmJiBjICE9PSBDSEFSX1FVRVNUSU9OXG4gICAgJiYgYyAhPT0gQ0hBUl9DT0xPTlxuICAgICYmIGMgIT09IENIQVJfQ09NTUFcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVRcbiAgICAvLyB8IOKAnCPigJ0gfCDigJwm4oCdIHwg4oCcKuKAnSB8IOKAnCHigJ0gfCDigJx84oCdIHwg4oCcPuKAnSB8IOKAnCfigJ0gfCDigJxcIuKAnVxuICAgICYmIGMgIT09IENIQVJfU0hBUlBcbiAgICAmJiBjICE9PSBDSEFSX0FNUEVSU0FORFxuICAgICYmIGMgIT09IENIQVJfQVNURVJJU0tcbiAgICAmJiBjICE9PSBDSEFSX0VYQ0xBTUFUSU9OXG4gICAgJiYgYyAhPT0gQ0hBUl9WRVJUSUNBTF9MSU5FXG4gICAgJiYgYyAhPT0gQ0hBUl9HUkVBVEVSX1RIQU5cbiAgICAmJiBjICE9PSBDSEFSX1NJTkdMRV9RVU9URVxuICAgICYmIGMgIT09IENIQVJfRE9VQkxFX1FVT1RFXG4gICAgLy8gfCDigJwl4oCdIHwg4oCcQOKAnSB8IOKAnGDigJ0pXG4gICAgJiYgYyAhPT0gQ0hBUl9QRVJDRU5UXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NRVJDSUFMX0FUXG4gICAgJiYgYyAhPT0gQ0hBUl9HUkFWRV9BQ0NFTlQ7XG59XG5cbi8vIERldGVybWluZXMgd2hldGhlciBibG9jayBpbmRlbnRhdGlvbiBpbmRpY2F0b3IgaXMgcmVxdWlyZWQuXG5mdW5jdGlvbiBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykge1xuICB2YXIgbGVhZGluZ1NwYWNlUmUgPSAvXlxcbiogLztcbiAgcmV0dXJuIGxlYWRpbmdTcGFjZVJlLnRlc3Qoc3RyaW5nKTtcbn1cblxudmFyIFNUWUxFX1BMQUlOICAgPSAxLFxuICAgIFNUWUxFX1NJTkdMRSAgPSAyLFxuICAgIFNUWUxFX0xJVEVSQUwgPSAzLFxuICAgIFNUWUxFX0ZPTERFRCAgPSA0LFxuICAgIFNUWUxFX0RPVUJMRSAgPSA1O1xuXG4vLyBEZXRlcm1pbmVzIHdoaWNoIHNjYWxhciBzdHlsZXMgYXJlIHBvc3NpYmxlIGFuZCByZXR1cm5zIHRoZSBwcmVmZXJyZWQgc3R5bGUuXG4vLyBsaW5lV2lkdGggPSAtMSA9PiBubyBsaW1pdC5cbi8vIFByZS1jb25kaXRpb25zOiBzdHIubGVuZ3RoID4gMC5cbi8vIFBvc3QtY29uZGl0aW9uczpcbi8vICAgIFNUWUxFX1BMQUlOIG9yIFNUWUxFX1NJTkdMRSA9PiBubyBcXG4gYXJlIGluIHRoZSBzdHJpbmcuXG4vLyAgICBTVFlMRV9MSVRFUkFMID0+IG5vIGxpbmVzIGFyZSBzdWl0YWJsZSBmb3IgZm9sZGluZyAob3IgbGluZVdpZHRoIGlzIC0xKS5cbi8vICAgIFNUWUxFX0ZPTERFRCA9PiBhIGxpbmUgPiBsaW5lV2lkdGggYW5kIGNhbiBiZSBmb2xkZWQgKGFuZCBsaW5lV2lkdGggIT0gLTEpLlxuZnVuY3Rpb24gY2hvb3NlU2NhbGFyU3R5bGUoc3RyaW5nLCBzaW5nbGVMaW5lT25seSwgaW5kZW50UGVyTGV2ZWwsIGxpbmVXaWR0aCwgdGVzdEFtYmlndW91c1R5cGUpIHtcbiAgdmFyIGk7XG4gIHZhciBjaGFyO1xuICB2YXIgaGFzTGluZUJyZWFrID0gZmFsc2U7XG4gIHZhciBoYXNGb2xkYWJsZUxpbmUgPSBmYWxzZTsgLy8gb25seSBjaGVja2VkIGlmIHNob3VsZFRyYWNrV2lkdGhcbiAgdmFyIHNob3VsZFRyYWNrV2lkdGggPSBsaW5lV2lkdGggIT09IC0xO1xuICB2YXIgcHJldmlvdXNMaW5lQnJlYWsgPSAtMTsgLy8gY291bnQgdGhlIGZpcnN0IGxpbmUgY29ycmVjdGx5XG4gIHZhciBwbGFpbiA9IGlzUGxhaW5TYWZlRmlyc3Qoc3RyaW5nLmNoYXJDb2RlQXQoMCkpXG4gICAgICAgICAgJiYgIWlzV2hpdGVzcGFjZShzdHJpbmcuY2hhckNvZGVBdChzdHJpbmcubGVuZ3RoIC0gMSkpO1xuXG4gIGlmIChzaW5nbGVMaW5lT25seSkge1xuICAgIC8vIENhc2U6IG5vIGJsb2NrIHN0eWxlcy5cbiAgICAvLyBDaGVjayBmb3IgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIHJ1bGUgb3V0IHBsYWluIGFuZCBzaW5nbGUuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKCFpc1ByaW50YWJsZShjaGFyKSkge1xuICAgICAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICAgICAgfVxuICAgICAgcGxhaW4gPSBwbGFpbiAmJiBpc1BsYWluU2FmZShjaGFyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2FzZTogYmxvY2sgc3R5bGVzIHBlcm1pdHRlZC5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoY2hhciA9PT0gQ0hBUl9MSU5FX0ZFRUQpIHtcbiAgICAgICAgaGFzTGluZUJyZWFrID0gdHJ1ZTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGxpbmUgY2FuIGJlIGZvbGRlZC5cbiAgICAgICAgaWYgKHNob3VsZFRyYWNrV2lkdGgpIHtcbiAgICAgICAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHxcbiAgICAgICAgICAgIC8vIEZvbGRhYmxlIGxpbmUgPSB0b28gbG9uZywgYW5kIG5vdCBtb3JlLWluZGVudGVkLlxuICAgICAgICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiZcbiAgICAgICAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKTtcbiAgICAgICAgICBwcmV2aW91c0xpbmVCcmVhayA9IGk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIpO1xuICAgIH1cbiAgICAvLyBpbiBjYXNlIHRoZSBlbmQgaXMgbWlzc2luZyBhIFxcblxuICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fCAoc2hvdWxkVHJhY2tXaWR0aCAmJlxuICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiZcbiAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKSk7XG4gIH1cbiAgLy8gQWx0aG91Z2ggZXZlcnkgc3R5bGUgY2FuIHJlcHJlc2VudCBcXG4gd2l0aG91dCBlc2NhcGluZywgcHJlZmVyIGJsb2NrIHN0eWxlc1xuICAvLyBmb3IgbXVsdGlsaW5lLCBzaW5jZSB0aGV5J3JlIG1vcmUgcmVhZGFibGUgYW5kIHRoZXkgZG9uJ3QgYWRkIGVtcHR5IGxpbmVzLlxuICAvLyBBbHNvIHByZWZlciBmb2xkaW5nIGEgc3VwZXItbG9uZyBsaW5lLlxuICBpZiAoIWhhc0xpbmVCcmVhayAmJiAhaGFzRm9sZGFibGVMaW5lKSB7XG4gICAgLy8gU3RyaW5ncyBpbnRlcnByZXRhYmxlIGFzIGFub3RoZXIgdHlwZSBoYXZlIHRvIGJlIHF1b3RlZDtcbiAgICAvLyBlLmcuIHRoZSBzdHJpbmcgJ3RydWUnIHZzLiB0aGUgYm9vbGVhbiB0cnVlLlxuICAgIHJldHVybiBwbGFpbiAmJiAhdGVzdEFtYmlndW91c1R5cGUoc3RyaW5nKVxuICAgICAgPyBTVFlMRV9QTEFJTiA6IFNUWUxFX1NJTkdMRTtcbiAgfVxuICAvLyBFZGdlIGNhc2U6IGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBjYW4gb25seSBoYXZlIG9uZSBkaWdpdC5cbiAgaWYgKGluZGVudFBlckxldmVsID4gOSAmJiBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykpIHtcbiAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICB9XG4gIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyBibG9jayBzdHlsZXMgYXJlIHZhbGlkLlxuICAvLyBQcmVmZXIgbGl0ZXJhbCBzdHlsZSB1bmxlc3Mgd2Ugd2FudCB0byBmb2xkLlxuICByZXR1cm4gaGFzRm9sZGFibGVMaW5lID8gU1RZTEVfRk9MREVEIDogU1RZTEVfTElURVJBTDtcbn1cblxuLy8gTm90ZTogbGluZSBicmVha2luZy9mb2xkaW5nIGlzIGltcGxlbWVudGVkIGZvciBvbmx5IHRoZSBmb2xkZWQgc3R5bGUuXG4vLyBOQi4gV2UgZHJvcCB0aGUgbGFzdCB0cmFpbGluZyBuZXdsaW5lIChpZiBhbnkpIG9mIGEgcmV0dXJuZWQgYmxvY2sgc2NhbGFyXG4vLyAgc2luY2UgdGhlIGR1bXBlciBhZGRzIGl0cyBvd24gbmV3bGluZS4gVGhpcyBhbHdheXMgd29ya3M6XG4vLyAgICDigKIgTm8gZW5kaW5nIG5ld2xpbmUgPT4gdW5hZmZlY3RlZDsgYWxyZWFkeSB1c2luZyBzdHJpcCBcIi1cIiBjaG9tcGluZy5cbi8vICAgIOKAoiBFbmRpbmcgbmV3bGluZSAgICA9PiByZW1vdmVkIHRoZW4gcmVzdG9yZWQuXG4vLyAgSW1wb3J0YW50bHksIHRoaXMga2VlcHMgdGhlIFwiK1wiIGNob21wIGluZGljYXRvciBmcm9tIGdhaW5pbmcgYW4gZXh0cmEgbGluZS5cbmZ1bmN0aW9uIHdyaXRlU2NhbGFyKHN0YXRlLCBzdHJpbmcsIGxldmVsLCBpc2tleSkge1xuICBzdGF0ZS5kdW1wID0gKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiJydcIjtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5ub0NvbXBhdE1vZGUgJiZcbiAgICAgICAgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVguaW5kZXhPZihzdHJpbmcpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIFwiJ1wiICsgc3RyaW5nICsgXCInXCI7XG4gICAgfVxuXG4gICAgdmFyIGluZGVudCA9IHN0YXRlLmluZGVudCAqIE1hdGgubWF4KDEsIGxldmVsKTsgLy8gbm8gMC1pbmRlbnQgc2NhbGFyc1xuICAgIC8vIEFzIGluZGVudGF0aW9uIGdldHMgZGVlcGVyLCBsZXQgdGhlIHdpZHRoIGRlY3JlYXNlIG1vbm90b25pY2FsbHlcbiAgICAvLyB0byB0aGUgbG93ZXIgYm91bmQgbWluKHN0YXRlLmxpbmVXaWR0aCwgNDApLlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGltcGxpZXNcbiAgICAvLyAgc3RhdGUubGluZVdpZHRoIOKJpCA0MCArIHN0YXRlLmluZGVudDogd2lkdGggaXMgZml4ZWQgYXQgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vICBzdGF0ZS5saW5lV2lkdGggPiA0MCArIHN0YXRlLmluZGVudDogd2lkdGggZGVjcmVhc2VzIHVudGlsIHRoZSBsb3dlciBib3VuZC5cbiAgICAvLyBUaGlzIGJlaGF2ZXMgYmV0dGVyIHRoYW4gYSBjb25zdGFudCBtaW5pbXVtIHdpZHRoIHdoaWNoIGRpc2FsbG93cyBuYXJyb3dlciBvcHRpb25zLFxuICAgIC8vIG9yIGFuIGluZGVudCB0aHJlc2hvbGQgd2hpY2ggY2F1c2VzIHRoZSB3aWR0aCB0byBzdWRkZW5seSBpbmNyZWFzZS5cbiAgICB2YXIgbGluZVdpZHRoID0gc3RhdGUubGluZVdpZHRoID09PSAtMVxuICAgICAgPyAtMSA6IE1hdGgubWF4KE1hdGgubWluKHN0YXRlLmxpbmVXaWR0aCwgNDApLCBzdGF0ZS5saW5lV2lkdGggLSBpbmRlbnQpO1xuXG4gICAgLy8gV2l0aG91dCBrbm93aW5nIGlmIGtleXMgYXJlIGltcGxpY2l0L2V4cGxpY2l0LCBhc3N1bWUgaW1wbGljaXQgZm9yIHNhZmV0eS5cbiAgICB2YXIgc2luZ2xlTGluZU9ubHkgPSBpc2tleVxuICAgICAgLy8gTm8gYmxvY2sgc3R5bGVzIGluIGZsb3cgbW9kZS5cbiAgICAgIHx8IChzdGF0ZS5mbG93TGV2ZWwgPiAtMSAmJiBsZXZlbCA+PSBzdGF0ZS5mbG93TGV2ZWwpO1xuICAgIGZ1bmN0aW9uIHRlc3RBbWJpZ3VpdHkoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdGVzdEltcGxpY2l0UmVzb2x2aW5nKHN0YXRlLCBzdHJpbmcpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY2hvb3NlU2NhbGFyU3R5bGUoc3RyaW5nLCBzaW5nbGVMaW5lT25seSwgc3RhdGUuaW5kZW50LCBsaW5lV2lkdGgsIHRlc3RBbWJpZ3VpdHkpKSB7XG4gICAgICBjYXNlIFNUWUxFX1BMQUlOOlxuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgY2FzZSBTVFlMRV9TSU5HTEU6XG4gICAgICAgIHJldHVybiBcIidcIiArIHN0cmluZy5yZXBsYWNlKC8nL2csIFwiJydcIikgKyBcIidcIjtcbiAgICAgIGNhc2UgU1RZTEVfTElURVJBTDpcbiAgICAgICAgcmV0dXJuICd8JyArIGJsb2NrSGVhZGVyKHN0cmluZywgc3RhdGUuaW5kZW50KVxuICAgICAgICAgICsgZHJvcEVuZGluZ05ld2xpbmUoaW5kZW50U3RyaW5nKHN0cmluZywgaW5kZW50KSk7XG4gICAgICBjYXNlIFNUWUxFX0ZPTERFRDpcbiAgICAgICAgcmV0dXJuICc+JyArIGJsb2NrSGVhZGVyKHN0cmluZywgc3RhdGUuaW5kZW50KVxuICAgICAgICAgICsgZHJvcEVuZGluZ05ld2xpbmUoaW5kZW50U3RyaW5nKGZvbGRTdHJpbmcoc3RyaW5nLCBsaW5lV2lkdGgpLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRE9VQkxFOlxuICAgICAgICByZXR1cm4gJ1wiJyArIGVzY2FwZVN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCkgKyAnXCInO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2ltcG9zc2libGUgZXJyb3I6IGludmFsaWQgc2NhbGFyIHN0eWxlJyk7XG4gICAgfVxuICB9KCkpO1xufVxuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyaW5nIGlzIHZhbGlkIGZvciBhIGJsb2NrIHNjYWxhciwgMSA8PSBpbmRlbnRQZXJMZXZlbCA8PSA5LlxuZnVuY3Rpb24gYmxvY2tIZWFkZXIoc3RyaW5nLCBpbmRlbnRQZXJMZXZlbCkge1xuICB2YXIgaW5kZW50SW5kaWNhdG9yID0gbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpID8gU3RyaW5nKGluZGVudFBlckxldmVsKSA6ICcnO1xuXG4gIC8vIG5vdGUgdGhlIHNwZWNpYWwgY2FzZTogdGhlIHN0cmluZyAnXFxuJyBjb3VudHMgYXMgYSBcInRyYWlsaW5nXCIgZW1wdHkgbGluZS5cbiAgdmFyIGNsaXAgPSAgICAgICAgICBzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDFdID09PSAnXFxuJztcbiAgdmFyIGtlZXAgPSBjbGlwICYmIChzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDJdID09PSAnXFxuJyB8fCBzdHJpbmcgPT09ICdcXG4nKTtcbiAgdmFyIGNob21wID0ga2VlcCA/ICcrJyA6IChjbGlwID8gJycgOiAnLScpO1xuXG4gIHJldHVybiBpbmRlbnRJbmRpY2F0b3IgKyBjaG9tcCArICdcXG4nO1xufVxuXG4vLyAoU2VlIHRoZSBub3RlIGZvciB3cml0ZVNjYWxhci4pXG5mdW5jdGlvbiBkcm9wRW5kaW5nTmV3bGluZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nID8gc3RyaW5nLnNsaWNlKDAsIC0xKSA6IHN0cmluZztcbn1cblxuLy8gTm90ZTogYSBsb25nIGxpbmUgd2l0aG91dCBhIHN1aXRhYmxlIGJyZWFrIHBvaW50IHdpbGwgZXhjZWVkIHRoZSB3aWR0aCBsaW1pdC5cbi8vIFByZS1jb25kaXRpb25zOiBldmVyeSBjaGFyIGluIHN0ciBpc1ByaW50YWJsZSwgc3RyLmxlbmd0aCA+IDAsIHdpZHRoID4gMC5cbmZ1bmN0aW9uIGZvbGRTdHJpbmcoc3RyaW5nLCB3aWR0aCkge1xuICAvLyBJbiBmb2xkZWQgc3R5bGUsICRrJCBjb25zZWN1dGl2ZSBuZXdsaW5lcyBvdXRwdXQgYXMgJGsrMSQgbmV3bGluZXPigJRcbiAgLy8gdW5sZXNzIHRoZXkncmUgYmVmb3JlIG9yIGFmdGVyIGEgbW9yZS1pbmRlbnRlZCBsaW5lLCBvciBhdCB0aGUgdmVyeVxuICAvLyBiZWdpbm5pbmcgb3IgZW5kLCBpbiB3aGljaCBjYXNlICRrJCBtYXBzIHRvICRrJC5cbiAgLy8gVGhlcmVmb3JlLCBwYXJzZSBlYWNoIGNodW5rIGFzIG5ld2xpbmUocykgZm9sbG93ZWQgYnkgYSBjb250ZW50IGxpbmUuXG4gIHZhciBsaW5lUmUgPSAvKFxcbispKFteXFxuXSopL2c7XG5cbiAgLy8gZmlyc3QgbGluZSAocG9zc2libHkgYW4gZW1wdHkgbGluZSlcbiAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5leHRMRiA9IHN0cmluZy5pbmRleE9mKCdcXG4nKTtcbiAgICBuZXh0TEYgPSBuZXh0TEYgIT09IC0xID8gbmV4dExGIDogc3RyaW5nLmxlbmd0aDtcbiAgICBsaW5lUmUubGFzdEluZGV4ID0gbmV4dExGO1xuICAgIHJldHVybiBmb2xkTGluZShzdHJpbmcuc2xpY2UoMCwgbmV4dExGKSwgd2lkdGgpO1xuICB9KCkpO1xuICAvLyBJZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSB5ZXQsIGRvbid0IGFkZCBhbiBleHRyYSBcXG4uXG4gIHZhciBwcmV2TW9yZUluZGVudGVkID0gc3RyaW5nWzBdID09PSAnXFxuJyB8fCBzdHJpbmdbMF0gPT09ICcgJztcbiAgdmFyIG1vcmVJbmRlbnRlZDtcblxuICAvLyByZXN0IG9mIHRoZSBsaW5lc1xuICB2YXIgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBsaW5lUmUuZXhlYyhzdHJpbmcpKSkge1xuICAgIHZhciBwcmVmaXggPSBtYXRjaFsxXSwgbGluZSA9IG1hdGNoWzJdO1xuICAgIG1vcmVJbmRlbnRlZCA9IChsaW5lWzBdID09PSAnICcpO1xuICAgIHJlc3VsdCArPSBwcmVmaXhcbiAgICAgICsgKCFwcmV2TW9yZUluZGVudGVkICYmICFtb3JlSW5kZW50ZWQgJiYgbGluZSAhPT0gJydcbiAgICAgICAgPyAnXFxuJyA6ICcnKVxuICAgICAgKyBmb2xkTGluZShsaW5lLCB3aWR0aCk7XG4gICAgcHJldk1vcmVJbmRlbnRlZCA9IG1vcmVJbmRlbnRlZDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdyZWVkeSBsaW5lIGJyZWFraW5nLlxuLy8gUGlja3MgdGhlIGxvbmdlc3QgbGluZSB1bmRlciB0aGUgbGltaXQgZWFjaCB0aW1lLFxuLy8gb3RoZXJ3aXNlIHNldHRsZXMgZm9yIHRoZSBzaG9ydGVzdCBsaW5lIG92ZXIgdGhlIGxpbWl0LlxuLy8gTkIuIE1vcmUtaW5kZW50ZWQgbGluZXMgKmNhbm5vdCogYmUgZm9sZGVkLCBhcyB0aGF0IHdvdWxkIGFkZCBhbiBleHRyYSBcXG4uXG5mdW5jdGlvbiBmb2xkTGluZShsaW5lLCB3aWR0aCkge1xuICBpZiAobGluZSA9PT0gJycgfHwgbGluZVswXSA9PT0gJyAnKSByZXR1cm4gbGluZTtcblxuICAvLyBTaW5jZSBhIG1vcmUtaW5kZW50ZWQgbGluZSBhZGRzIGEgXFxuLCBicmVha3MgY2FuJ3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZS5cbiAgdmFyIGJyZWFrUmUgPSAvIFteIF0vZzsgLy8gbm90ZTogdGhlIG1hdGNoIGluZGV4IHdpbGwgYWx3YXlzIGJlIDw9IGxlbmd0aC0yLlxuICB2YXIgbWF0Y2g7XG4gIC8vIHN0YXJ0IGlzIGFuIGluY2x1c2l2ZSBpbmRleC4gZW5kLCBjdXJyLCBhbmQgbmV4dCBhcmUgZXhjbHVzaXZlLlxuICB2YXIgc3RhcnQgPSAwLCBlbmQsIGN1cnIgPSAwLCBuZXh0ID0gMDtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIC8vIEludmFyaWFudHM6IDAgPD0gc3RhcnQgPD0gbGVuZ3RoLTEuXG4gIC8vICAgMCA8PSBjdXJyIDw9IG5leHQgPD0gbWF4KDAsIGxlbmd0aC0yKS4gY3VyciAtIHN0YXJ0IDw9IHdpZHRoLlxuICAvLyBJbnNpZGUgdGhlIGxvb3A6XG4gIC8vICAgQSBtYXRjaCBpbXBsaWVzIGxlbmd0aCA+PSAyLCBzbyBjdXJyIGFuZCBuZXh0IGFyZSA8PSBsZW5ndGgtMi5cbiAgd2hpbGUgKChtYXRjaCA9IGJyZWFrUmUuZXhlYyhsaW5lKSkpIHtcbiAgICBuZXh0ID0gbWF0Y2guaW5kZXg7XG4gICAgLy8gbWFpbnRhaW4gaW52YXJpYW50OiBjdXJyIC0gc3RhcnQgPD0gd2lkdGhcbiAgICBpZiAobmV4dCAtIHN0YXJ0ID4gd2lkdGgpIHtcbiAgICAgIGVuZCA9IChjdXJyID4gc3RhcnQpID8gY3VyciA6IG5leHQ7IC8vIGRlcml2ZSBlbmQgPD0gbGVuZ3RoLTJcbiAgICAgIHJlc3VsdCArPSAnXFxuJyArIGxpbmUuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAvLyBza2lwIHRoZSBzcGFjZSB0aGF0IHdhcyBvdXRwdXQgYXMgXFxuXG4gICAgICBzdGFydCA9IGVuZCArIDE7ICAgICAgICAgICAgICAgICAgICAvLyBkZXJpdmUgc3RhcnQgPD0gbGVuZ3RoLTFcbiAgICB9XG4gICAgY3VyciA9IG5leHQ7XG4gIH1cblxuICAvLyBCeSB0aGUgaW52YXJpYW50cywgc3RhcnQgPD0gbGVuZ3RoLTEsIHNvIHRoZXJlIGlzIHNvbWV0aGluZyBsZWZ0IG92ZXIuXG4gIC8vIEl0IGlzIGVpdGhlciB0aGUgd2hvbGUgc3RyaW5nIG9yIGEgcGFydCBzdGFydGluZyBmcm9tIG5vbi13aGl0ZXNwYWNlLlxuICByZXN1bHQgKz0gJ1xcbic7XG4gIC8vIEluc2VydCBhIGJyZWFrIGlmIHRoZSByZW1haW5kZXIgaXMgdG9vIGxvbmcgYW5kIHRoZXJlIGlzIGEgYnJlYWsgYXZhaWxhYmxlLlxuICBpZiAobGluZS5sZW5ndGggLSBzdGFydCA+IHdpZHRoICYmIGN1cnIgPiBzdGFydCkge1xuICAgIHJlc3VsdCArPSBsaW5lLnNsaWNlKHN0YXJ0LCBjdXJyKSArICdcXG4nICsgbGluZS5zbGljZShjdXJyICsgMSk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5zbGljZSgxKTsgLy8gZHJvcCBleHRyYSBcXG4gam9pbmVyXG59XG5cbi8vIEVzY2FwZXMgYSBkb3VibGUtcXVvdGVkIHN0cmluZy5cbmZ1bmN0aW9uIGVzY2FwZVN0cmluZyhzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgY2hhciwgbmV4dENoYXI7XG4gIHZhciBlc2NhcGVTZXE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gQ2hlY2sgZm9yIHN1cnJvZ2F0ZSBwYWlycyAocmVmZXJlbmNlIFVuaWNvZGUgMy4wIHNlY3Rpb24gXCIzLjcgU3Vycm9nYXRlc1wiKS5cbiAgICBpZiAoY2hhciA+PSAweEQ4MDAgJiYgY2hhciA8PSAweERCRkYvKiBoaWdoIHN1cnJvZ2F0ZSAqLykge1xuICAgICAgbmV4dENoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICBpZiAobmV4dENoYXIgPj0gMHhEQzAwICYmIG5leHRDaGFyIDw9IDB4REZGRi8qIGxvdyBzdXJyb2dhdGUgKi8pIHtcbiAgICAgICAgLy8gQ29tYmluZSB0aGUgc3Vycm9nYXRlIHBhaXIgYW5kIHN0b3JlIGl0IGVzY2FwZWQuXG4gICAgICAgIHJlc3VsdCArPSBlbmNvZGVIZXgoKGNoYXIgLSAweEQ4MDApICogMHg0MDAgKyBuZXh0Q2hhciAtIDB4REMwMCArIDB4MTAwMDApO1xuICAgICAgICAvLyBBZHZhbmNlIGluZGV4IG9uZSBleHRyYSBzaW5jZSB3ZSBhbHJlYWR5IHVzZWQgdGhhdCBjaGFyIGhlcmUuXG4gICAgICAgIGkrKzsgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGVzY2FwZVNlcSA9IEVTQ0FQRV9TRVFVRU5DRVNbY2hhcl07XG4gICAgcmVzdWx0ICs9ICFlc2NhcGVTZXEgJiYgaXNQcmludGFibGUoY2hhcilcbiAgICAgID8gc3RyaW5nW2ldXG4gICAgICA6IGVzY2FwZVNlcSB8fCBlbmNvZGVIZXgoY2hhcik7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB3cml0ZUZsb3dTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCA9ICcnLFxuICAgICAgX3RhZyAgICA9IHN0YXRlLnRhZyxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMuXG4gICAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdFtpbmRleF0sIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGlmIChpbmRleCAhPT0gMCkgX3Jlc3VsdCArPSAnLCcgKyAoIXN0YXRlLmNvbmRlbnNlRmxvdyA/ICcgJyA6ICcnKTtcbiAgICAgIF9yZXN1bHQgKz0gc3RhdGUuZHVtcDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gJ1snICsgX3Jlc3VsdCArICddJztcbn1cblxuZnVuY3Rpb24gd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBjb21wYWN0KSB7XG4gIHZhciBfcmVzdWx0ID0gJycsXG4gICAgICBfdGFnICAgID0gc3RhdGUudGFnLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdFtpbmRleF0sIHRydWUsIHRydWUpKSB7XG4gICAgICBpZiAoIWNvbXBhY3QgfHwgaW5kZXggIT09IDApIHtcbiAgICAgICAgX3Jlc3VsdCArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgX3Jlc3VsdCArPSAnLSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0ICs9ICctICc7XG4gICAgICB9XG5cbiAgICAgIF9yZXN1bHQgKz0gc3RhdGUuZHVtcDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAnW10nOyAvLyBFbXB0eSBzZXF1ZW5jZSBpZiBubyB2YWxpZCB2YWx1ZXMuXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvd01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QpIHtcbiAgdmFyIF9yZXN1bHQgICAgICAgPSAnJyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgb2JqZWN0S2V5LFxuICAgICAgb2JqZWN0VmFsdWUsXG4gICAgICBwYWlyQnVmZmVyO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyQnVmZmVyID0gc3RhdGUuY29uZGVuc2VGbG93ID8gJ1wiJyA6ICcnO1xuXG4gICAgaWYgKGluZGV4ICE9PSAwKSBwYWlyQnVmZmVyICs9ICcsICc7XG5cbiAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTtcbiAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RLZXksIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5O1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpIHBhaXJCdWZmZXIgKz0gJz8gJztcblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcCArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnXCInIDogJycpICsgJzonICsgKHN0YXRlLmNvbmRlbnNlRmxvdyA/ICcnIDogJyAnKTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0VmFsdWUsIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gJ3snICsgX3Jlc3VsdCArICd9Jztcbn1cblxuZnVuY3Rpb24gd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgICAgICAgPSAnJyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgb2JqZWN0S2V5LFxuICAgICAgb2JqZWN0VmFsdWUsXG4gICAgICBleHBsaWNpdFBhaXIsXG4gICAgICBwYWlyQnVmZmVyO1xuXG4gIC8vIEFsbG93IHNvcnRpbmcga2V5cyBzbyB0aGF0IHRoZSBvdXRwdXQgZmlsZSBpcyBkZXRlcm1pbmlzdGljXG4gIGlmIChzdGF0ZS5zb3J0S2V5cyA9PT0gdHJ1ZSkge1xuICAgIC8vIERlZmF1bHQgc29ydGluZ1xuICAgIG9iamVjdEtleUxpc3Quc29ydCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzdGF0ZS5zb3J0S2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gICAgb2JqZWN0S2V5TGlzdC5zb3J0KHN0YXRlLnNvcnRLZXlzKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5zb3J0S2V5cykge1xuICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZ1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpckJ1ZmZlciA9ICcnO1xuXG4gICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7XG4gICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICB9XG5cbiAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTtcbiAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0S2V5LCB0cnVlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXkuXG4gICAgfVxuXG4gICAgZXhwbGljaXRQYWlyID0gKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHxcbiAgICAgICAgICAgICAgICAgICAoc3RhdGUuZHVtcCAmJiBzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpO1xuXG4gICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBwYWlyQnVmZmVyICs9ICc/JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhaXJCdWZmZXIgKz0gJz8gJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICBpZiAoZXhwbGljaXRQYWlyKSB7XG4gICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RWYWx1ZSwgdHJ1ZSwgZXhwbGljaXRQYWlyKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS5cbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBwYWlyQnVmZmVyICs9ICc6JztcbiAgICB9IGVsc2Uge1xuICAgICAgcGFpckJ1ZmZlciArPSAnOiAnO1xuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuXG4gICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyO1xuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9IF9yZXN1bHQgfHwgJ3t9JzsgLy8gRW1wdHkgbWFwcGluZyBpZiBubyB2YWxpZCBwYWlycy5cbn1cblxuZnVuY3Rpb24gZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBleHBsaWNpdCkge1xuICB2YXIgX3Jlc3VsdCwgdHlwZUxpc3QsIGluZGV4LCBsZW5ndGgsIHR5cGUsIHN0eWxlO1xuXG4gIHR5cGVMaXN0ID0gZXhwbGljaXQgPyBzdGF0ZS5leHBsaWNpdFR5cGVzIDogc3RhdGUuaW1wbGljaXRUeXBlcztcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gdHlwZUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHR5cGUgPSB0eXBlTGlzdFtpbmRleF07XG5cbiAgICBpZiAoKHR5cGUuaW5zdGFuY2VPZiAgfHwgdHlwZS5wcmVkaWNhdGUpICYmXG4gICAgICAgICghdHlwZS5pbnN0YW5jZU9mIHx8ICgodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpICYmIChvYmplY3QgaW5zdGFuY2VvZiB0eXBlLmluc3RhbmNlT2YpKSkgJiZcbiAgICAgICAgKCF0eXBlLnByZWRpY2F0ZSAgfHwgdHlwZS5wcmVkaWNhdGUob2JqZWN0KSkpIHtcblxuICAgICAgc3RhdGUudGFnID0gZXhwbGljaXQgPyB0eXBlLnRhZyA6ICc/JztcblxuICAgICAgaWYgKHR5cGUucmVwcmVzZW50KSB7XG4gICAgICAgIHN0eWxlID0gc3RhdGUuc3R5bGVNYXBbdHlwZS50YWddIHx8IHR5cGUuZGVmYXVsdFN0eWxlO1xuXG4gICAgICAgIGlmIChfdG9TdHJpbmcuY2FsbCh0eXBlLnJlcHJlc2VudCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnQob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5yZXByZXNlbnQsIHN0eWxlKSkge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudFtzdHlsZV0ob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJyE8JyArIHR5cGUudGFnICsgJz4gdGFnIHJlc29sdmVyIGFjY2VwdHMgbm90IFwiJyArIHN0eWxlICsgJ1wiIHN0eWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5kdW1wID0gX3Jlc3VsdDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTZXJpYWxpemVzIGBvYmplY3RgIGFuZCB3cml0ZXMgaXQgdG8gZ2xvYmFsIGByZXN1bHRgLlxuLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIG9yIGZhbHNlIG9uIGludmFsaWQgb2JqZWN0LlxuLy9cbmZ1bmN0aW9uIHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgYmxvY2ssIGNvbXBhY3QsIGlza2V5KSB7XG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmR1bXAgPSBvYmplY3Q7XG5cbiAgaWYgKCFkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIGZhbHNlKSkge1xuICAgIGRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgdHJ1ZSk7XG4gIH1cblxuICB2YXIgdHlwZSA9IF90b1N0cmluZy5jYWxsKHN0YXRlLmR1bXApO1xuXG4gIGlmIChibG9jaykge1xuICAgIGJsb2NrID0gKHN0YXRlLmZsb3dMZXZlbCA8IDAgfHwgc3RhdGUuZmxvd0xldmVsID4gbGV2ZWwpO1xuICB9XG5cbiAgdmFyIG9iamVjdE9yQXJyYXkgPSB0eXBlID09PSAnW29iamVjdCBPYmplY3RdJyB8fCB0eXBlID09PSAnW29iamVjdCBBcnJheV0nLFxuICAgICAgZHVwbGljYXRlSW5kZXgsXG4gICAgICBkdXBsaWNhdGU7XG5cbiAgaWYgKG9iamVjdE9yQXJyYXkpIHtcbiAgICBkdXBsaWNhdGVJbmRleCA9IHN0YXRlLmR1cGxpY2F0ZXMuaW5kZXhPZihvYmplY3QpO1xuICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZUluZGV4ICE9PSAtMTtcbiAgfVxuXG4gIGlmICgoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB8fCBkdXBsaWNhdGUgfHwgKHN0YXRlLmluZGVudCAhPT0gMiAmJiBsZXZlbCA+IDApKSB7XG4gICAgY29tcGFjdCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGR1cGxpY2F0ZSAmJiBzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0pIHtcbiAgICBzdGF0ZS5kdW1wID0gJypyZWZfJyArIGR1cGxpY2F0ZUluZGV4O1xuICB9IGVsc2Uge1xuICAgIGlmIChvYmplY3RPckFycmF5ICYmIGR1cGxpY2F0ZSAmJiAhc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7XG4gICAgICBzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgIGlmIChibG9jayAmJiAoT2JqZWN0LmtleXMoc3RhdGUuZHVtcCkubGVuZ3RoICE9PSAwKSkge1xuICAgICAgICB3cml0ZUJsb2NrTWFwcGluZyhzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlRmxvd01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wKTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyAnICcgKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICBpZiAoYmxvY2sgJiYgKHN0YXRlLmR1bXAubGVuZ3RoICE9PSAwKSkge1xuICAgICAgICB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUZsb3dTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXApO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICBpZiAoc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgICAgd3JpdGVTY2FsYXIoc3RhdGUsIHN0YXRlLmR1bXAsIGxldmVsLCBpc2tleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS5za2lwSW52YWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ3VuYWNjZXB0YWJsZSBraW5kIG9mIGFuIG9iamVjdCB0byBkdW1wICcgKyB0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB7XG4gICAgICBzdGF0ZS5kdW1wID0gJyE8JyArIHN0YXRlLnRhZyArICc+ICcgKyBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKG9iamVjdCwgc3RhdGUpIHtcbiAgdmFyIG9iamVjdHMgPSBbXSxcbiAgICAgIGR1cGxpY2F0ZXNJbmRleGVzID0gW10sXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpbnNwZWN0Tm9kZShvYmplY3QsIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gZHVwbGljYXRlc0luZGV4ZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHN0YXRlLmR1cGxpY2F0ZXMucHVzaChvYmplY3RzW2R1cGxpY2F0ZXNJbmRleGVzW2luZGV4XV0pO1xuICB9XG4gIHN0YXRlLnVzZWREdXBsaWNhdGVzID0gbmV3IEFycmF5KGxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpIHtcbiAgdmFyIG9iamVjdEtleUxpc3QsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpZiAob2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgaW5kZXggPSBvYmplY3RzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAoZHVwbGljYXRlc0luZGV4ZXMuaW5kZXhPZihpbmRleCkgPT09IC0xKSB7XG4gICAgICAgIGR1cGxpY2F0ZXNJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3RzLnB1c2gob2JqZWN0KTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3RbaW5kZXhdLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3Rbb2JqZWN0S2V5TGlzdFtpbmRleF1dLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZHVtcChpbnB1dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICB2YXIgc3RhdGUgPSBuZXcgU3RhdGUob3B0aW9ucyk7XG5cbiAgaWYgKCFzdGF0ZS5ub1JlZnMpIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMoaW5wdXQsIHN0YXRlKTtcblxuICBpZiAod3JpdGVOb2RlKHN0YXRlLCAwLCBpbnB1dCwgdHJ1ZSwgdHJ1ZSkpIHJldHVybiBzdGF0ZS5kdW1wICsgJ1xcbic7XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBzYWZlRHVtcChpbnB1dCwgb3B0aW9ucykge1xuICByZXR1cm4gZHVtcChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmR1bXAgICAgID0gZHVtcDtcbm1vZHVsZS5leHBvcnRzLnNhZmVEdW1wID0gc2FmZUR1bXA7XG4iLCIvLyBZQU1MIGVycm9yIGNsYXNzLiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg0NTg5ODRcbi8vXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIFlBTUxFeGNlcHRpb24ocmVhc29uLCBtYXJrKSB7XG4gIC8vIFN1cGVyIGNvbnN0cnVjdG9yXG4gIEVycm9yLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5uYW1lID0gJ1lBTUxFeGNlcHRpb24nO1xuICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgdGhpcy5tYXJrID0gbWFyaztcbiAgdGhpcy5tZXNzYWdlID0gKHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJykgKyAodGhpcy5tYXJrID8gJyAnICsgdGhpcy5tYXJrLnRvU3RyaW5nKCkgOiAnJyk7XG5cbiAgLy8gSW5jbHVkZSBzdGFjayB0cmFjZSBpbiBlcnJvciBvYmplY3RcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgLy8gQ2hyb21lIGFuZCBOb2RlSlNcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGRiwgSUUgMTArIGFuZCBTYWZhcmkgNisuIEZhbGxiYWNrIGZvciBvdGhlcnNcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjayB8fCAnJztcbiAgfVxufVxuXG5cbi8vIEluaGVyaXQgZnJvbSBFcnJvclxuWUFNTEV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFlBTUxFeGNlcHRpb247XG5cblxuWUFNTEV4Y2VwdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhjb21wYWN0KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLm5hbWUgKyAnOiAnO1xuXG4gIHJlc3VsdCArPSB0aGlzLnJlYXNvbiB8fCAnKHVua25vd24gcmVhc29uKSc7XG5cbiAgaWYgKCFjb21wYWN0ICYmIHRoaXMubWFyaykge1xuICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLm1hcmsudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gWUFNTEV4Y2VwdGlvbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuLG5vLXVzZS1iZWZvcmUtZGVmaW5lKi9cblxudmFyIGNvbW1vbiAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gICAgICAgPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIE1hcmsgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL21hcmsnKTtcbnZhciBERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG52YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xuXG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5cbnZhciBDT05URVhUX0ZMT1dfSU4gICA9IDE7XG52YXIgQ09OVEVYVF9GTE9XX09VVCAgPSAyO1xudmFyIENPTlRFWFRfQkxPQ0tfSU4gID0gMztcbnZhciBDT05URVhUX0JMT0NLX09VVCA9IDQ7XG5cblxudmFyIENIT01QSU5HX0NMSVAgID0gMTtcbnZhciBDSE9NUElOR19TVFJJUCA9IDI7XG52YXIgQ0hPTVBJTkdfS0VFUCAgPSAzO1xuXG5cbnZhciBQQVRURVJOX05PTl9QUklOVEFCTEUgICAgICAgICA9IC9bXFx4MDAtXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUZcXHg3Ri1cXHg4NFxceDg2LVxceDlGXFx1RkZGRVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdLztcbnZhciBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUyA9IC9bXFx4ODVcXHUyMDI4XFx1MjAyOV0vO1xudmFyIFBBVFRFUk5fRkxPV19JTkRJQ0FUT1JTICAgICAgID0gL1ssXFxbXFxdXFx7XFx9XS87XG52YXIgUEFUVEVSTl9UQUdfSEFORExFICAgICAgICAgICAgPSAvXig/OiF8ISF8IVthLXpcXC1dKyEpJC9pO1xudmFyIFBBVFRFUk5fVEFHX1VSSSAgICAgICAgICAgICAgID0gL14oPzohfFteLFxcW1xcXVxce1xcfV0pKD86JVswLTlhLWZdezJ9fFswLTlhLXpcXC0jO1xcL1xcPzpAJj1cXCtcXCQsX1xcLiF+XFwqJ1xcKFxcKVxcW1xcXV0pKiQvaTtcblxuXG5mdW5jdGlvbiBpc19FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MEEvKiBMRiAqLykgfHwgKGMgPT09IDB4MEQvKiBDUiAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX1dISVRFX1NQQUNFKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fCAoYyA9PT0gMHgyMC8qIFNwYWNlICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV1NfT1JfRU9MKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBBLyogTEYgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfRkxPV19JTkRJQ0FUT1IoYykge1xuICByZXR1cm4gYyA9PT0gMHgyQy8qICwgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUIvKiBbICovIHx8XG4gICAgICAgICBjID09PSAweDVELyogXSAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3Qi8qIHsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4N0QvKiB9ICovO1xufVxuXG5mdW5jdGlvbiBmcm9tSGV4Q29kZShjKSB7XG4gIHZhciBsYztcblxuICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkge1xuICAgIHJldHVybiBjIC0gMHgzMDtcbiAgfVxuXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSovXG4gIGxjID0gYyB8IDB4MjA7XG5cbiAgaWYgKCgweDYxLyogYSAqLyA8PSBsYykgJiYgKGxjIDw9IDB4NjYvKiBmICovKSkge1xuICAgIHJldHVybiBsYyAtIDB4NjEgKyAxMDtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlZEhleExlbihjKSB7XG4gIGlmIChjID09PSAweDc4LyogeCAqLykgeyByZXR1cm4gMjsgfVxuICBpZiAoYyA9PT0gMHg3NS8qIHUgKi8pIHsgcmV0dXJuIDQ7IH1cbiAgaWYgKGMgPT09IDB4NTUvKiBVICovKSB7IHJldHVybiA4OyB9XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBmcm9tRGVjaW1hbENvZGUoYykge1xuICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkge1xuICAgIHJldHVybiBjIC0gMHgzMDtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRXNjYXBlU2VxdWVuY2UoYykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBpbmRlbnQgKi9cbiAgcmV0dXJuIChjID09PSAweDMwLyogMCAqLykgPyAnXFx4MDAnIDpcbiAgICAgICAgKGMgPT09IDB4NjEvKiBhICovKSA/ICdcXHgwNycgOlxuICAgICAgICAoYyA9PT0gMHg2Mi8qIGIgKi8pID8gJ1xceDA4JyA6XG4gICAgICAgIChjID09PSAweDc0LyogdCAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4MDkvKiBUYWIgKi8pID8gJ1xceDA5JyA6XG4gICAgICAgIChjID09PSAweDZFLyogbiAqLykgPyAnXFx4MEEnIDpcbiAgICAgICAgKGMgPT09IDB4NzYvKiB2ICovKSA/ICdcXHgwQicgOlxuICAgICAgICAoYyA9PT0gMHg2Ni8qIGYgKi8pID8gJ1xceDBDJyA6XG4gICAgICAgIChjID09PSAweDcyLyogciAqLykgPyAnXFx4MEQnIDpcbiAgICAgICAgKGMgPT09IDB4NjUvKiBlICovKSA/ICdcXHgxQicgOlxuICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSA/ICcgJyA6XG4gICAgICAgIChjID09PSAweDIyLyogXCIgKi8pID8gJ1xceDIyJyA6XG4gICAgICAgIChjID09PSAweDJGLyogLyAqLykgPyAnLycgOlxuICAgICAgICAoYyA9PT0gMHg1Qy8qIFxcICovKSA/ICdcXHg1QycgOlxuICAgICAgICAoYyA9PT0gMHg0RS8qIE4gKi8pID8gJ1xceDg1JyA6XG4gICAgICAgIChjID09PSAweDVGLyogXyAqLykgPyAnXFx4QTAnIDpcbiAgICAgICAgKGMgPT09IDB4NEMvKiBMICovKSA/ICdcXHUyMDI4JyA6XG4gICAgICAgIChjID09PSAweDUwLyogUCAqLykgPyAnXFx1MjAyOScgOiAnJztcbn1cblxuZnVuY3Rpb24gY2hhckZyb21Db2RlcG9pbnQoYykge1xuICBpZiAoYyA8PSAweEZGRkYpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgfVxuICAvLyBFbmNvZGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNiNDb2RlX3BvaW50c19VLjJCMDEwMDAwX3RvX1UuMkIxMEZGRkZcbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoXG4gICAgKChjIC0gMHgwMTAwMDApID4+IDEwKSArIDB4RDgwMCxcbiAgICAoKGMgLSAweDAxMDAwMCkgJiAweDAzRkYpICsgMHhEQzAwXG4gICk7XG59XG5cbnZhciBzaW1wbGVFc2NhcGVDaGVjayA9IG5ldyBBcnJheSgyNTYpOyAvLyBpbnRlZ2VyLCBmb3IgZmFzdCBhY2Nlc3NcbnZhciBzaW1wbGVFc2NhcGVNYXAgPSBuZXcgQXJyYXkoMjU2KTtcbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgc2ltcGxlRXNjYXBlQ2hlY2tbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKSA/IDEgOiAwO1xuICBzaW1wbGVFc2NhcGVNYXBbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKTtcbn1cblxuXG5mdW5jdGlvbiBTdGF0ZShpbnB1dCwgb3B0aW9ucykge1xuICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgdGhpcy5maWxlbmFtZSAgPSBvcHRpb25zWydmaWxlbmFtZSddICB8fCBudWxsO1xuICB0aGlzLnNjaGVtYSAgICA9IG9wdGlvbnNbJ3NjaGVtYSddICAgIHx8IERFRkFVTFRfRlVMTF9TQ0hFTUE7XG4gIHRoaXMub25XYXJuaW5nID0gb3B0aW9uc1snb25XYXJuaW5nJ10gfHwgbnVsbDtcbiAgdGhpcy5sZWdhY3kgICAgPSBvcHRpb25zWydsZWdhY3knXSAgICB8fCBmYWxzZTtcbiAgdGhpcy5qc29uICAgICAgPSBvcHRpb25zWydqc29uJ10gICAgICB8fCBmYWxzZTtcbiAgdGhpcy5saXN0ZW5lciAgPSBvcHRpb25zWydsaXN0ZW5lciddICB8fCBudWxsO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMudHlwZU1hcCAgICAgICA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkVHlwZU1hcDtcblxuICB0aGlzLmxlbmd0aCAgICAgPSBpbnB1dC5sZW5ndGg7XG4gIHRoaXMucG9zaXRpb24gICA9IDA7XG4gIHRoaXMubGluZSAgICAgICA9IDA7XG4gIHRoaXMubGluZVN0YXJ0ICA9IDA7XG4gIHRoaXMubGluZUluZGVudCA9IDA7XG5cbiAgdGhpcy5kb2N1bWVudHMgPSBbXTtcblxuICAvKlxuICB0aGlzLnZlcnNpb247XG4gIHRoaXMuY2hlY2tMaW5lQnJlYWtzO1xuICB0aGlzLnRhZ01hcDtcbiAgdGhpcy5hbmNob3JNYXA7XG4gIHRoaXMudGFnO1xuICB0aGlzLmFuY2hvcjtcbiAgdGhpcy5raW5kO1xuICB0aGlzLnJlc3VsdDsqL1xuXG59XG5cblxuZnVuY3Rpb24gZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICByZXR1cm4gbmV3IFlBTUxFeGNlcHRpb24oXG4gICAgbWVzc2FnZSxcbiAgICBuZXcgTWFyayhzdGF0ZS5maWxlbmFtZSwgc3RhdGUuaW5wdXQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5saW5lLCAoc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnQpKSk7XG59XG5cbmZ1bmN0aW9uIHRocm93RXJyb3Ioc3RhdGUsIG1lc3NhZ2UpIHtcbiAgdGhyb3cgZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIHRocm93V2FybmluZyhzdGF0ZSwgbWVzc2FnZSkge1xuICBpZiAoc3RhdGUub25XYXJuaW5nKSB7XG4gICAgc3RhdGUub25XYXJuaW5nLmNhbGwobnVsbCwgZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSkpO1xuICB9XG59XG5cblxudmFyIGRpcmVjdGl2ZUhhbmRsZXJzID0ge1xuXG4gIFlBTUw6IGZ1bmN0aW9uIGhhbmRsZVlhbWxEaXJlY3RpdmUoc3RhdGUsIG5hbWUsIGFyZ3MpIHtcblxuICAgIHZhciBtYXRjaCwgbWFqb3IsIG1pbm9yO1xuXG4gICAgaWYgKHN0YXRlLnZlcnNpb24gIT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiAlWUFNTCBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdZQU1MIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgbWF0Y2ggPSAvXihbMC05XSspXFwuKFswLTldKykkLy5leGVjKGFyZ3NbMF0pO1xuXG4gICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCBhcmd1bWVudCBvZiB0aGUgWUFNTCBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBtYWpvciA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgbWlub3IgPSBwYXJzZUludChtYXRjaFsyXSwgMTApO1xuXG4gICAgaWYgKG1ham9yICE9PSAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS52ZXJzaW9uID0gYXJnc1swXTtcbiAgICBzdGF0ZS5jaGVja0xpbmVCcmVha3MgPSAobWlub3IgPCAyKTtcblxuICAgIGlmIChtaW5vciAhPT0gMSAmJiBtaW5vciAhPT0gMikge1xuICAgICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAndW5zdXBwb3J0ZWQgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cbiAgfSxcblxuICBUQUc6IGZ1bmN0aW9uIGhhbmRsZVRhZ0RpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIGhhbmRsZSwgcHJlZml4O1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnVEFHIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgdHdvIGFyZ3VtZW50cycpO1xuICAgIH1cblxuICAgIGhhbmRsZSA9IGFyZ3NbMF07XG4gICAgcHJlZml4ID0gYXJnc1sxXTtcblxuICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QoaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgdGFnIGhhbmRsZSAoZmlyc3QgYXJndW1lbnQpIG9mIHRoZSBUQUcgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnRhZ01hcCwgaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZXJlIGlzIGEgcHJldmlvdXNseSBkZWNsYXJlZCBzdWZmaXggZm9yIFwiJyArIGhhbmRsZSArICdcIiB0YWcgaGFuZGxlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQQVRURVJOX1RBR19VUkkudGVzdChwcmVmaXgpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgcHJlZml4IChzZWNvbmQgYXJndW1lbnQpIG9mIHRoZSBUQUcgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgc3RhdGUudGFnTWFwW2hhbmRsZV0gPSBwcmVmaXg7XG4gIH1cbn07XG5cblxuZnVuY3Rpb24gY2FwdHVyZVNlZ21lbnQoc3RhdGUsIHN0YXJ0LCBlbmQsIGNoZWNrSnNvbikge1xuICB2YXIgX3Bvc2l0aW9uLCBfbGVuZ3RoLCBfY2hhcmFjdGVyLCBfcmVzdWx0O1xuXG4gIGlmIChzdGFydCA8IGVuZCkge1xuICAgIF9yZXN1bHQgPSBzdGF0ZS5pbnB1dC5zbGljZShzdGFydCwgZW5kKTtcblxuICAgIGlmIChjaGVja0pzb24pIHtcbiAgICAgIGZvciAoX3Bvc2l0aW9uID0gMCwgX2xlbmd0aCA9IF9yZXN1bHQubGVuZ3RoOyBfcG9zaXRpb24gPCBfbGVuZ3RoOyBfcG9zaXRpb24gKz0gMSkge1xuICAgICAgICBfY2hhcmFjdGVyID0gX3Jlc3VsdC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG4gICAgICAgIGlmICghKF9jaGFyYWN0ZXIgPT09IDB4MDkgfHxcbiAgICAgICAgICAgICAgKDB4MjAgPD0gX2NoYXJhY3RlciAmJiBfY2hhcmFjdGVyIDw9IDB4MTBGRkZGKSkpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgdmFsaWQgSlNPTiBjaGFyYWN0ZXInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoUEFUVEVSTl9OT05fUFJJTlRBQkxFLnRlc3QoX3Jlc3VsdCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGUgc3RyZWFtIGNvbnRhaW5zIG5vbi1wcmludGFibGUgY2hhcmFjdGVycycpO1xuICAgIH1cblxuICAgIHN0YXRlLnJlc3VsdCArPSBfcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWFwcGluZ3Moc3RhdGUsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG92ZXJyaWRhYmxlS2V5cykge1xuICB2YXIgc291cmNlS2V5cywga2V5LCBpbmRleCwgcXVhbnRpdHk7XG5cbiAgaWYgKCFjb21tb24uaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW5ub3QgbWVyZ2UgbWFwcGluZ3M7IHRoZSBwcm92aWRlZCBzb3VyY2Ugb2JqZWN0IGlzIHVuYWNjZXB0YWJsZScpO1xuICB9XG5cbiAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcblxuICAgIGlmICghX2hhc093blByb3BlcnR5LmNhbGwoZGVzdGluYXRpb24sIGtleSkpIHtcbiAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIG92ZXJyaWRhYmxlS2V5c1trZXldID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgc3RhcnRMaW5lLCBzdGFydFBvcykge1xuICB2YXIgaW5kZXgsIHF1YW50aXR5O1xuXG4gIGtleU5vZGUgPSBTdHJpbmcoa2V5Tm9kZSk7XG5cbiAgaWYgKF9yZXN1bHQgPT09IG51bGwpIHtcbiAgICBfcmVzdWx0ID0ge307XG4gIH1cblxuICBpZiAoa2V5VGFnID09PSAndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVOb2RlKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gdmFsdWVOb2RlLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgICAgICBtZXJnZU1hcHBpbmdzKHN0YXRlLCBfcmVzdWx0LCB2YWx1ZU5vZGVbaW5kZXhdLCBvdmVycmlkYWJsZUtleXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZU1hcHBpbmdzKHN0YXRlLCBfcmVzdWx0LCB2YWx1ZU5vZGUsIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghc3RhdGUuanNvbiAmJlxuICAgICAgICAhX2hhc093blByb3BlcnR5LmNhbGwob3ZlcnJpZGFibGVLZXlzLCBrZXlOb2RlKSAmJlxuICAgICAgICBfaGFzT3duUHJvcGVydHkuY2FsbChfcmVzdWx0LCBrZXlOb2RlKSkge1xuICAgICAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSB8fCBzdGF0ZS5saW5lO1xuICAgICAgc3RhdGUucG9zaXRpb24gPSBzdGFydFBvcyB8fCBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGVkIG1hcHBpbmcga2V5Jyk7XG4gICAgfVxuICAgIF9yZXN1bHRba2V5Tm9kZV0gPSB2YWx1ZU5vZGU7XG4gICAgZGVsZXRlIG92ZXJyaWRhYmxlS2V5c1trZXlOb2RlXTtcbiAgfVxuXG4gIHJldHVybiBfcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZWFkTGluZUJyZWFrKHN0YXRlKSB7XG4gIHZhciBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgwRC8qIENSICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgICBpZiAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MEEvKiBMRiAqLykge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2EgbGluZSBicmVhayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgc3RhdGUubGluZSArPSAxO1xuICBzdGF0ZS5saW5lU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbn1cblxuZnVuY3Rpb24gc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgYWxsb3dDb21tZW50cywgY2hlY2tJbmRlbnQpIHtcbiAgdmFyIGxpbmVCcmVha3MgPSAwLFxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFsbG93Q29tbWVudHMgJiYgY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICBkbyB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH0gd2hpbGUgKGNoICE9PSAweDBBLyogTEYgKi8gJiYgY2ggIT09IDB4MEQvKiBDUiAqLyAmJiBjaCAhPT0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgbGluZUJyZWFrcysrO1xuICAgICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICAgIHdoaWxlIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSB7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQrKztcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tJbmRlbnQgIT09IC0xICYmIGxpbmVCcmVha3MgIT09IDAgJiYgc3RhdGUubGluZUluZGVudCA8IGNoZWNrSW5kZW50KSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnZGVmaWNpZW50IGluZGVudGF0aW9uJyk7XG4gIH1cblxuICByZXR1cm4gbGluZUJyZWFrcztcbn1cblxuZnVuY3Rpb24gdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuXG4gIC8vIENvbmRpdGlvbiBzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0IGlzIHRlc3RlZFxuICAvLyBpbiBwYXJlbnQgb24gZWFjaCBjYWxsLCBmb3IgZWZmaWNpZW5jeS4gTm8gbmVlZHMgdG8gdGVzdCBoZXJlIGFnYWluLlxuICBpZiAoKGNoID09PSAweDJELyogLSAqLyB8fCBjaCA9PT0gMHgyRS8qIC4gKi8pICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAxKSAmJlxuICAgICAgY2ggPT09IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMikpIHtcblxuICAgIF9wb3NpdGlvbiArPSAzO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDAgfHwgaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBjb3VudCkge1xuICBpZiAoY291bnQgPT09IDEpIHtcbiAgICBzdGF0ZS5yZXN1bHQgKz0gJyAnO1xuICB9IGVsc2UgaWYgKGNvdW50ID4gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBjb3VudCAtIDEpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gcmVhZFBsYWluU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50LCB3aXRoaW5GbG93Q29sbGVjdGlvbikge1xuICB2YXIgcHJlY2VkaW5nLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgY2FwdHVyZVN0YXJ0LFxuICAgICAgY2FwdHVyZUVuZCxcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50LFxuICAgICAgX2xpbmUsXG4gICAgICBfbGluZVN0YXJ0LFxuICAgICAgX2xpbmVJbmRlbnQsXG4gICAgICBfa2luZCA9IHN0YXRlLmtpbmQsXG4gICAgICBfcmVzdWx0ID0gc3RhdGUucmVzdWx0LFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoaXNfV1NfT1JfRU9MKGNoKSAgICAgIHx8XG4gICAgICBpc19GTE9XX0lORElDQVRPUihjaCkgfHxcbiAgICAgIGNoID09PSAweDIzLyogIyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjYvKiAmICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyQS8qICogKi8gICAgfHxcbiAgICAgIGNoID09PSAweDIxLyogISAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4N0MvKiB8ICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgzRS8qID4gKi8gICAgfHxcbiAgICAgIGNoID09PSAweDI3LyogJyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjIvKiBcIiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjUvKiAlICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg0MC8qIEAgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDYwLyogYCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gMHgzRi8qID8gKi8gfHwgY2ggPT09IDB4MkQvKiAtICovKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpIHx8XG4gICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihmb2xsb3dpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIHByZWNlZGluZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gLSAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChwcmVjZWRpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB8fFxuICAgICAgICAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgICBicmVhaztcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgICAgX2xpbmVTdGFydCA9IHN0YXRlLmxpbmVTdGFydDtcbiAgICAgIF9saW5lSW5kZW50ID0gc3RhdGUubGluZUluZGVudDtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCAtMSk7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID49IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uID0gY2FwdHVyZUVuZDtcbiAgICAgICAgc3RhdGUubGluZSA9IF9saW5lO1xuICAgICAgICBzdGF0ZS5saW5lU3RhcnQgPSBfbGluZVN0YXJ0O1xuICAgICAgICBzdGF0ZS5saW5lSW5kZW50ID0gX2xpbmVJbmRlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNQZW5kaW5nQ29udGVudCkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc3RhdGUubGluZSAtIF9saW5lKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbiArIDE7XG4gICAgfVxuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuXG4gIGlmIChzdGF0ZS5yZXN1bHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSBfa2luZDtcbiAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjaCxcbiAgICAgIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNy8qICcgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBzdGF0ZS5wb3NpdGlvbisrO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKChjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pKSAhPT0gMCkge1xuICAgIGlmIChjaCA9PT0gMHgyNy8qICcgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhcicpO1xufVxuXG5mdW5jdGlvbiByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGV4TGVuZ3RoLFxuICAgICAgaGV4UmVzdWx0LFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjIvKiBcIiAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDIyLyogXCIgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4NUMvKiBcXCAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCk7XG5cbiAgICAgICAgLy8gVE9ETzogcmV3b3JrIHRvIGlubGluZSBmbiB3aXRoIG5vIHR5cGUgY2FzdD9cbiAgICAgIH0gZWxzZSBpZiAoY2ggPCAyNTYgJiYgc2ltcGxlRXNjYXBlQ2hlY2tbY2hdKSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBzaW1wbGVFc2NhcGVNYXBbY2hdO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2UgaWYgKCh0bXAgPSBlc2NhcGVkSGV4TGVuKGNoKSkgPiAwKSB7XG4gICAgICAgIGhleExlbmd0aCA9IHRtcDtcbiAgICAgICAgaGV4UmVzdWx0ID0gMDtcblxuICAgICAgICBmb3IgKDsgaGV4TGVuZ3RoID4gMDsgaGV4TGVuZ3RoLS0pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoKHRtcCA9IGZyb21IZXhDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgICAgICAgaGV4UmVzdWx0ID0gKGhleFJlc3VsdCA8PCA0KSArIHRtcDtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNoYXJGcm9tQ29kZXBvaW50KGhleFJlc3VsdCk7XG5cbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gZXNjYXBlIHNlcXVlbmNlJyk7XG4gICAgICB9XG5cbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgcmVhZE5leHQgPSB0cnVlLFxuICAgICAgX2xpbmUsXG4gICAgICBfdGFnICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9yZXN1bHQsXG4gICAgICBfYW5jaG9yICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIHRlcm1pbmF0b3IsXG4gICAgICBpc1BhaXIsXG4gICAgICBpc0V4cGxpY2l0UGFpcixcbiAgICAgIGlzTWFwcGluZyxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IHt9LFxuICAgICAga2V5Tm9kZSxcbiAgICAgIGtleVRhZyxcbiAgICAgIHZhbHVlTm9kZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDVCLyogWyAqLykge1xuICAgIHRlcm1pbmF0b3IgPSAweDVEOy8qIF0gKi9cbiAgICBpc01hcHBpbmcgPSBmYWxzZTtcbiAgICBfcmVzdWx0ID0gW107XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4N0IvKiB7ICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4N0Q7LyogfSAqL1xuICAgIGlzTWFwcGluZyA9IHRydWU7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSB0ZXJtaW5hdG9yKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICBzdGF0ZS5raW5kID0gaXNNYXBwaW5nID8gJ21hcHBpbmcnIDogJ3NlcXVlbmNlJztcbiAgICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFyZWFkTmV4dCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ21pc3NlZCBjb21tYSBiZXR3ZWVuIGZsb3cgY29sbGVjdGlvbiBlbnRyaWVzJyk7XG4gICAgfVxuXG4gICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSBmYWxzZTtcblxuICAgIGlmIChjaCA9PT0gMHgzRi8qID8gKi8pIHtcbiAgICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBrZXlUYWcgPSBzdGF0ZS50YWc7XG4gICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoKGlzRXhwbGljaXRQYWlyIHx8IHN0YXRlLmxpbmUgPT09IF9saW5lKSAmJiBjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGlzUGFpciA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAoaXNNYXBwaW5nKSB7XG4gICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFpcikge1xuICAgICAgX3Jlc3VsdC5wdXNoKHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIG51bGwsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3Jlc3VsdC5wdXNoKGtleU5vZGUpO1xuICAgIH1cblxuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMHgyQy8qICwgKi8pIHtcbiAgICAgIHJlYWROZXh0ID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhZE5leHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBmb2xkaW5nLFxuICAgICAgY2hvbXBpbmcgICAgICAgPSBDSE9NUElOR19DTElQLFxuICAgICAgZGlkUmVhZENvbnRlbnQgPSBmYWxzZSxcbiAgICAgIGRldGVjdGVkSW5kZW50ID0gZmFsc2UsXG4gICAgICB0ZXh0SW5kZW50ICAgICA9IG5vZGVJbmRlbnQsXG4gICAgICBlbXB0eUxpbmVzICAgICA9IDAsXG4gICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlLFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4N0MvKiB8ICovKSB7XG4gICAgZm9sZGluZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDNFLyogPiAqLykge1xuICAgIGZvbGRpbmcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJCLyogKyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICAgIGlmIChDSE9NUElOR19DTElQID09PSBjaG9tcGluZykge1xuICAgICAgICBjaG9tcGluZyA9IChjaCA9PT0gMHgyQi8qICsgKi8pID8gQ0hPTVBJTkdfS0VFUCA6IENIT01QSU5HX1NUUklQO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3JlcGVhdCBvZiBhIGNob21waW5nIG1vZGUgaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgodG1wID0gZnJvbURlY2ltYWxDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgaWYgKHRtcCA9PT0gMCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGV4cGxpY2l0IGluZGVudGF0aW9uIHdpZHRoIG9mIGEgYmxvY2sgc2NhbGFyOyBpdCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9uZScpO1xuICAgICAgfSBlbHNlIGlmICghZGV0ZWN0ZWRJbmRlbnQpIHtcbiAgICAgICAgdGV4dEluZGVudCA9IG5vZGVJbmRlbnQgKyB0bXAgLSAxO1xuICAgICAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGFuIGluZGVudGF0aW9uIHdpZHRoIGlkZW50aWZpZXInKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKTtcblxuICAgIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG4gICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgd2hpbGUgKCghZGV0ZWN0ZWRJbmRlbnQgfHwgc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpICYmXG4gICAgICAgICAgIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSkge1xuICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmICghZGV0ZWN0ZWRJbmRlbnQgJiYgc3RhdGUubGluZUluZGVudCA+IHRleHRJbmRlbnQpIHtcbiAgICAgIHRleHRJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgIH1cblxuICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBlbXB0eUxpbmVzKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBFbmQgb2YgdGhlIHNjYWxhci5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpIHtcblxuICAgICAgLy8gUGVyZm9ybSB0aGUgY2hvbXBpbmcuXG4gICAgICBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0tFRVApIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0NMSVApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB0aGUgc2NhbGFyIGlzIG5vdCBlbXB0eS5cbiAgICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQnJlYWsgdGhpcyBgd2hpbGVgIGN5Y2xlIGFuZCBnbyB0byB0aGUgZnVuY2l0b24ncyBlcGlsb2d1ZS5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEZvbGRlZCBzdHlsZTogdXNlIGZhbmN5IHJ1bGVzIHRvIGhhbmRsZSBsaW5lIGJyZWFrcy5cbiAgICBpZiAoZm9sZGluZykge1xuXG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgKG1vcmUtaW5kZW50ZWQgbGluZXMpIGFyZSBub3QgZm9sZGVkLlxuICAgICAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSAoY2YuIEV4YW1wbGUgOC4xKVxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuXG4gICAgICAvLyBFbmQgb2YgbW9yZS1pbmRlbnRlZCBibG9jay5cbiAgICAgIH0gZWxzZSBpZiAoYXRNb3JlSW5kZW50ZWQpIHtcbiAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMgKyAxKTtcblxuICAgICAgLy8gSnVzdCBvbmUgbGluZSBicmVhayAtIHBlcmNlaXZlIGFzIHRoZSBzYW1lIGxpbmUuXG4gICAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXMgPT09IDApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB3ZSBoYXZlIGFscmVhZHkgcmVhZCBzb21lIHNjYWxhciBjb250ZW50LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgLy8gU2V2ZXJhbCBsaW5lIGJyZWFrcyAtIHBlcmNlaXZlIGFzIGRpZmZlcmVudCBsaW5lcy5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBlbXB0eUxpbmVzKTtcbiAgICAgIH1cblxuICAgIC8vIExpdGVyYWwgc3R5bGU6IGp1c3QgYWRkIGV4YWN0IG51bWJlciBvZiBsaW5lIGJyZWFrcyBiZXR3ZWVuIGNvbnRlbnQgbGluZXMuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtlZXAgYWxsIGxpbmUgYnJlYWtzIGV4Y2VwdCB0aGUgaGVhZGVyIGxpbmUgYnJlYWsuXG4gICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgIH1cblxuICAgIGRpZFJlYWRDb250ZW50ID0gdHJ1ZTtcbiAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgZW1wdHlMaW5lcyA9IDA7XG4gICAgY2FwdHVyZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCBmYWxzZSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIF9saW5lLFxuICAgICAgX3RhZyAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgX3Jlc3VsdCAgID0gW10sXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBkZXRlY3RlZCAgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuXG4gICAgaWYgKGNoICE9PSAweDJELyogLSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKCFpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA8PSBub2RlSW5kZW50KSB7XG4gICAgICAgIF9yZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgX3Jlc3VsdC5wdXNoKHN0YXRlLnJlc3VsdCk7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgaW5kZW50YXRpb24gb2YgYSBzZXF1ZW5jZSBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ3NlcXVlbmNlJztcbiAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgbm9kZUluZGVudCwgZmxvd0luZGVudCkge1xuICB2YXIgZm9sbG93aW5nLFxuICAgICAgYWxsb3dDb21wYWN0LFxuICAgICAgX2xpbmUsXG4gICAgICBfcG9zLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9hbmNob3IgICAgICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgICAgID0ge30sXG4gICAgICBvdmVycmlkYWJsZUtleXMgPSB7fSxcbiAgICAgIGtleVRhZyAgICAgICAgPSBudWxsLFxuICAgICAga2V5Tm9kZSAgICAgICA9IG51bGwsXG4gICAgICB2YWx1ZU5vZGUgICAgID0gbnVsbCxcbiAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZSxcbiAgICAgIGRldGVjdGVkICAgICAgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS5cbiAgICBfcG9zID0gc3RhdGUucG9zaXRpb247XG5cbiAgICAvL1xuICAgIC8vIEV4cGxpY2l0IG5vdGF0aW9uIGNhc2UuIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgYmxvY2tzOlxuICAgIC8vIGZpcnN0IGZvciB0aGUga2V5IChkZW5vdGVkIGJ5IFwiP1wiKSBhbmQgc2Vjb25kIGZvciB0aGUgdmFsdWUgKGRlbm90ZWQgYnkgXCI6XCIpXG4gICAgLy9cbiAgICBpZiAoKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgzQS8qIDogKi8pICYmIGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgzRi8qID8gKi8pIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCk7XG4gICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2UgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgLy8gaS5lLiAweDNBLyogOiAqLyA9PT0gY2hhcmFjdGVyIGFmdGVyIHRoZSBleHBsaWNpdCBrZXkuXG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2luY29tcGxldGUgZXhwbGljaXQgbWFwcGluZyBwYWlyOyBhIGtleSBub2RlIGlzIG1pc3NlZDsgb3IgZm9sbG93ZWQgYnkgYSBub24tdGFidWxhdGVkIGVtcHR5IGxpbmUnKTtcbiAgICAgIH1cblxuICAgICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgICAgIGNoID0gZm9sbG93aW5nO1xuXG4gICAgLy9cbiAgICAvLyBJbXBsaWNpdCBub3RhdGlvbiBjYXNlLiBGbG93LXN0eWxlIG5vZGUgYXMgdGhlIGtleSBmaXJzdCwgdGhlbiBcIjpcIiwgYW5kIHRoZSB2YWx1ZS5cbiAgICAvL1xuICAgIH0gZWxzZSBpZiAoY29tcG9zZU5vZGUoc3RhdGUsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19PVVQsIGZhbHNlLCB0cnVlKSkge1xuXG4gICAgICBpZiAoc3RhdGUubGluZSA9PT0gX2xpbmUpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICghaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Egd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgZXhwZWN0ZWQgYWZ0ZXIgdGhlIGtleS12YWx1ZSBzZXBhcmF0b3Igd2l0aGluIGEgYmxvY2sgbWFwcGluZycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCk7XG4gICAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICAgIGFsbG93Q29tcGFjdCA9IGZhbHNlO1xuICAgICAgICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuXG4gICAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGFuIGltcGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBjb2xvbiBpcyBtaXNzZWQnKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTsgYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5Jyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhazsgLy8gUmVhZGluZyBpcyBkb25lLiBHbyB0byB0aGUgZXBpbG9ndWUuXG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBDb21tb24gcmVhZGluZyBjb2RlIGZvciBib3RoIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBub3RhdGlvbnMuXG4gICAgLy9cbiAgICBpZiAoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpIHtcbiAgICAgIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19PVVQsIHRydWUsIGFsbG93Q29tcGFjdCkpIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2xpbmUsIF9wb3MpO1xuICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIG1hcHBpbmcgZW50cnknKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvL1xuICAvLyBFcGlsb2d1ZS5cbiAgLy9cblxuICAvLyBTcGVjaWFsIGNhc2U6IGxhc3QgbWFwcGluZydzIG5vZGUgY29udGFpbnMgb25seSB0aGUga2V5IGluIGV4cGxpY2l0IG5vdGF0aW9uLlxuICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgfVxuXG4gIC8vIEV4cG9zZSB0aGUgcmVzdWx0aW5nIG1hcHBpbmcuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ21hcHBpbmcnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZGV0ZWN0ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLFxuICAgICAgaXNWZXJiYXRpbSA9IGZhbHNlLFxuICAgICAgaXNOYW1lZCAgICA9IGZhbHNlLFxuICAgICAgdGFnSGFuZGxlLFxuICAgICAgdGFnTmFtZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDIxLyogISAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS50YWcgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHknKTtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4M0MvKiA8ICovKSB7XG4gICAgaXNWZXJiYXRpbSA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgaXNOYW1lZCA9IHRydWU7XG4gICAgdGFnSGFuZGxlID0gJyEhJztcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIHtcbiAgICB0YWdIYW5kbGUgPSAnISc7XG4gIH1cblxuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSAweDNFLyogPiAqLyk7XG5cbiAgICBpZiAoc3RhdGUucG9zaXRpb24gPCBzdGF0ZS5sZW5ndGgpIHtcbiAgICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgICAgIGlmICghaXNOYW1lZCkge1xuICAgICAgICAgIHRhZ0hhbmRsZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiAtIDEsIHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgICAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KHRhZ0hhbmRsZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lZCB0YWcgaGFuZGxlIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVycycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlzTmFtZWQgPSB0cnVlO1xuICAgICAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrcycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICB0YWdOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoUEFUVEVSTl9GTE9XX0lORElDQVRPUlMudGVzdCh0YWdOYW1lKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgbmFtZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnM6ICcgKyB0YWdOYW1lKTtcbiAgfVxuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgc3RhdGUudGFnID0gdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnRhZ01hcCwgdGFnSGFuZGxlKSkge1xuICAgIHN0YXRlLnRhZyA9IHN0YXRlLnRhZ01hcFt0YWdIYW5kbGVdICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEnKSB7XG4gICAgc3RhdGUudGFnID0gJyEnICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEhJykge1xuICAgIHN0YXRlLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnTmFtZTtcblxuICB9IGVsc2Uge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmRlY2xhcmVkIHRhZyBoYW5kbGUgXCInICsgdGFnSGFuZGxlICsgJ1wiJyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNi8qICYgKi8pIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mIGFuIGFuY2hvciBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYW5jaG9yIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIHN0YXRlLmFuY2hvciA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFsaWFzKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sIGFsaWFzLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MkEvKiAqICovKSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYWxpYXMgbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgYWxpYXMgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoIXN0YXRlLmFuY2hvck1hcC5oYXNPd25Qcm9wZXJ0eShhbGlhcykpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5pZGVudGlmaWVkIGFsaWFzIFwiJyArIGFsaWFzICsgJ1wiJyk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bHQgPSBzdGF0ZS5hbmNob3JNYXBbYWxpYXNdO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb21wb3NlTm9kZShzdGF0ZSwgcGFyZW50SW5kZW50LCBub2RlQ29udGV4dCwgYWxsb3dUb1NlZWssIGFsbG93Q29tcGFjdCkge1xuICB2YXIgYWxsb3dCbG9ja1N0eWxlcyxcbiAgICAgIGFsbG93QmxvY2tTY2FsYXJzLFxuICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zLFxuICAgICAgaW5kZW50U3RhdHVzID0gMSwgLy8gMTogdGhpcz5wYXJlbnQsIDA6IHRoaXM9cGFyZW50LCAtMTogdGhpczxwYXJlbnRcbiAgICAgIGF0TmV3TGluZSAgPSBmYWxzZSxcbiAgICAgIGhhc0NvbnRlbnQgPSBmYWxzZSxcbiAgICAgIHR5cGVJbmRleCxcbiAgICAgIHR5cGVRdWFudGl0eSxcbiAgICAgIHR5cGUsXG4gICAgICBmbG93SW5kZW50LFxuICAgICAgYmxvY2tJbmRlbnQ7XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ29wZW4nLCBzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS50YWcgICAgPSBudWxsO1xuICBzdGF0ZS5hbmNob3IgPSBudWxsO1xuICBzdGF0ZS5raW5kICAgPSBudWxsO1xuICBzdGF0ZS5yZXN1bHQgPSBudWxsO1xuXG4gIGFsbG93QmxvY2tTdHlsZXMgPSBhbGxvd0Jsb2NrU2NhbGFycyA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9XG4gICAgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0IHx8XG4gICAgQ09OVEVYVF9CTE9DS19JTiAgPT09IG5vZGVDb250ZXh0O1xuXG4gIGlmIChhbGxvd1RvU2Vlaykge1xuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGF0TmV3TGluZSA9IHRydWU7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICB3aGlsZSAocmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB8fCByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpKSB7XG4gICAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICAgIGF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGFsbG93QmxvY2tTdHlsZXM7XG5cbiAgICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zKSB7XG4gICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYXROZXdMaW5lIHx8IGFsbG93Q29tcGFjdDtcbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEgfHwgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgaWYgKENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQgfHwgQ09OVEVYVF9GTE9XX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQgKyAxO1xuICAgIH1cblxuICAgIGJsb2NrSW5kZW50ID0gc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnQ7XG5cbiAgICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmXG4gICAgICAgICAgKHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCkgfHxcbiAgICAgICAgICAgcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgYmxvY2tJbmRlbnQsIGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGFsbG93QmxvY2tTY2FsYXJzICYmIHJlYWRCbG9ja1NjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgICByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSB8fFxuICAgICAgICAgICAgcmVhZERvdWJsZVF1b3RlZFNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRBbGlhcyhzdGF0ZSkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgfHwgc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYWxpYXMgbm9kZSBzaG91bGQgbm90IGhhdmUgYW55IHByb3BlcnRpZXMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkUGxhaW5TY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc3RhdGUudGFnID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS50YWcgPSAnPyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbmRlbnRTdGF0dXMgPT09IDApIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZTogYmxvY2sgc2VxdWVuY2VzIGFyZSBhbGxvd2VkIHRvIGhhdmUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbCBhcyB0aGUgcGFyZW50LlxuICAgICAgLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyNzk5Nzg0XG4gICAgICBoYXNDb250ZW50ID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmIHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICchJykge1xuICAgIGlmIChzdGF0ZS50YWcgPT09ICc/Jykge1xuICAgICAgZm9yICh0eXBlSW5kZXggPSAwLCB0eXBlUXVhbnRpdHkgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzLmxlbmd0aDsgdHlwZUluZGV4IDwgdHlwZVF1YW50aXR5OyB0eXBlSW5kZXggKz0gMSkge1xuICAgICAgICB0eXBlID0gc3RhdGUuaW1wbGljaXRUeXBlc1t0eXBlSW5kZXhdO1xuXG4gICAgICAgIC8vIEltcGxpY2l0IHJlc29sdmluZyBpcyBub3QgYWxsb3dlZCBmb3Igbm9uLXNjYWxhciB0eXBlcywgYW5kICc/J1xuICAgICAgICAvLyBub24tc3BlY2lmaWMgdGFnIGlzIG9ubHkgYXNzaWduZWQgdG8gcGxhaW4gc2NhbGFycy4gU28sIGl0IGlzbid0XG4gICAgICAgIC8vIG5lZWRlZCB0byBjaGVjayBmb3IgJ2tpbmQnIGNvbmZvcm1pdHkuXG5cbiAgICAgICAgaWYgKHR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICAgIHN0YXRlLnJlc3VsdCA9IHR5cGUuY29uc3RydWN0KHN0YXRlLnJlc3VsdCk7XG4gICAgICAgICAgc3RhdGUudGFnID0gdHlwZS50YWc7XG4gICAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ10sIHN0YXRlLnRhZykpIHtcbiAgICAgIHR5cGUgPSBzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ11bc3RhdGUudGFnXTtcblxuICAgICAgaWYgKHN0YXRlLnJlc3VsdCAhPT0gbnVsbCAmJiB0eXBlLmtpbmQgIT09IHN0YXRlLmtpbmQpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBub2RlIGtpbmQgZm9yICE8JyArIHN0YXRlLnRhZyArICc+IHRhZzsgaXQgc2hvdWxkIGJlIFwiJyArIHR5cGUua2luZCArICdcIiwgbm90IFwiJyArIHN0YXRlLmtpbmQgKyAnXCInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0eXBlLnJlc29sdmUoc3RhdGUucmVzdWx0KSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCByZXNvbHZlIGEgbm9kZSB3aXRoICE8JyArIHN0YXRlLnRhZyArICc+IGV4cGxpY2l0IHRhZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIHRhZyAhPCcgKyBzdGF0ZS50YWcgKyAnPicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5saXN0ZW5lciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmxpc3RlbmVyKCdjbG9zZScsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gc3RhdGUudGFnICE9PSBudWxsIHx8ICBzdGF0ZS5hbmNob3IgIT09IG51bGwgfHwgaGFzQ29udGVudDtcbn1cblxuZnVuY3Rpb24gcmVhZERvY3VtZW50KHN0YXRlKSB7XG4gIHZhciBkb2N1bWVudFN0YXJ0ID0gc3RhdGUucG9zaXRpb24sXG4gICAgICBfcG9zaXRpb24sXG4gICAgICBkaXJlY3RpdmVOYW1lLFxuICAgICAgZGlyZWN0aXZlQXJncyxcbiAgICAgIGhhc0RpcmVjdGl2ZXMgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIHN0YXRlLnZlcnNpb24gPSBudWxsO1xuICBzdGF0ZS5jaGVja0xpbmVCcmVha3MgPSBzdGF0ZS5sZWdhY3k7XG4gIHN0YXRlLnRhZ01hcCA9IHt9O1xuICBzdGF0ZS5hbmNob3JNYXAgPSB7fTtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gMCB8fCBjaCAhPT0gMHgyNS8qICUgKi8pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGRpcmVjdGl2ZU5hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICBkaXJlY3RpdmVBcmdzID0gW107XG5cbiAgICBpZiAoZGlyZWN0aXZlTmFtZS5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoJyk7XG4gICAgfVxuXG4gICAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX0VPTChjaCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzX0VPTChjaCkpIGJyZWFrO1xuXG4gICAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgZGlyZWN0aXZlQXJncy5wdXNoKHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoY2ggIT09IDApIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKGRpcmVjdGl2ZUhhbmRsZXJzLCBkaXJlY3RpdmVOYW1lKSkge1xuICAgICAgZGlyZWN0aXZlSGFuZGxlcnNbZGlyZWN0aXZlTmFtZV0oc3RhdGUsIGRpcmVjdGl2ZU5hbWUsIGRpcmVjdGl2ZUFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bmtub3duIGRvY3VtZW50IGRpcmVjdGl2ZSBcIicgKyBkaXJlY3RpdmVOYW1lICsgJ1wiJyk7XG4gICAgfVxuICB9XG5cbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSAwICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSAgICAgPT09IDB4MkQvKiAtICovICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSkgPT09IDB4MkQvKiAtICovICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMikgPT09IDB4MkQvKiAtICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24gKz0gMztcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgfSBlbHNlIGlmIChoYXNEaXJlY3RpdmVzKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2RpcmVjdGl2ZXMgZW5kIG1hcmsgaXMgZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGNvbXBvc2VOb2RlKHN0YXRlLCBzdGF0ZS5saW5lSW5kZW50IC0gMSwgQ09OVEVYVF9CTE9DS19PVVQsIGZhbHNlLCB0cnVlKTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIGlmIChzdGF0ZS5jaGVja0xpbmVCcmVha3MgJiZcbiAgICAgIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTLnRlc3Qoc3RhdGUuaW5wdXQuc2xpY2UoZG9jdW1lbnRTdGFydCwgc3RhdGUucG9zaXRpb24pKSkge1xuICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ25vbi1BU0NJSSBsaW5lIGJyZWFrcyBhcmUgaW50ZXJwcmV0ZWQgYXMgY29udGVudCcpO1xuICB9XG5cbiAgc3RhdGUuZG9jdW1lbnRzLnB1c2goc3RhdGUucmVzdWx0KTtcblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG5cbiAgICBpZiAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MkUvKiAuICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPCAoc3RhdGUubGVuZ3RoIC0gMSkpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZW5kIG9mIHRoZSBzdHJlYW0gb3IgYSBkb2N1bWVudCBzZXBhcmF0b3IgaXMgZXhwZWN0ZWQnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKSB7XG4gIGlucHV0ID0gU3RyaW5nKGlucHV0KTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCAhPT0gMCkge1xuXG4gICAgLy8gQWRkIHRhaWxpbmcgYFxcbmAgaWYgbm90IGV4aXN0c1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBBLyogTEYgKi8gJiZcbiAgICAgICAgaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMHgwRC8qIENSICovKSB7XG4gICAgICBpbnB1dCArPSAnXFxuJztcbiAgICB9XG5cbiAgICAvLyBTdHJpcCBCT01cbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDEpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgLy8gVXNlIDAgYXMgc3RyaW5nIHRlcm1pbmF0b3IuIFRoYXQgc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIGJvdW5kcyBjaGVjay5cbiAgc3RhdGUuaW5wdXQgKz0gJ1xcMCc7XG5cbiAgd2hpbGUgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICBzdGF0ZS5saW5lSW5kZW50ICs9IDE7XG4gICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHJlYWREb2N1bWVudChzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGUuZG9jdW1lbnRzO1xufVxuXG5cbmZ1bmN0aW9uIGxvYWRBbGwoaW5wdXQsIGl0ZXJhdG9yLCBvcHRpb25zKSB7XG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKSwgaW5kZXgsIGxlbmd0aDtcblxuICBpZiAodHlwZW9mIGl0ZXJhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50cztcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBkb2N1bWVudHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGl0ZXJhdG9yKGRvY3VtZW50c1tpbmRleF0pO1xuICB9XG59XG5cblxuZnVuY3Rpb24gbG9hZChpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG5cbiAgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAvKmVzbGludC1kaXNhYmxlIG5vLXVuZGVmaW5lZCovXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50c1swXTtcbiAgfVxuICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignZXhwZWN0ZWQgYSBzaW5nbGUgZG9jdW1lbnQgaW4gdGhlIHN0cmVhbSwgYnV0IGZvdW5kIG1vcmUnKTtcbn1cblxuXG5mdW5jdGlvbiBzYWZlTG9hZEFsbChpbnB1dCwgb3V0cHV0LCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbG9hZEFsbChpbnB1dCwgb3V0cHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbG9hZEFsbChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzYWZlTG9hZChpbnB1dCwgb3B0aW9ucykge1xuICByZXR1cm4gbG9hZChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG59XG5cblxubW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgPSBsb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgPSBsb2FkO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgPSBzYWZlTG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkICAgID0gc2FmZUxvYWQ7XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG5cblxuZnVuY3Rpb24gTWFyayhuYW1lLCBidWZmZXIsIHBvc2l0aW9uLCBsaW5lLCBjb2x1bW4pIHtcbiAgdGhpcy5uYW1lICAgICA9IG5hbWU7XG4gIHRoaXMuYnVmZmVyICAgPSBidWZmZXI7XG4gIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgdGhpcy5saW5lICAgICA9IGxpbmU7XG4gIHRoaXMuY29sdW1uICAgPSBjb2x1bW47XG59XG5cblxuTWFyay5wcm90b3R5cGUuZ2V0U25pcHBldCA9IGZ1bmN0aW9uIGdldFNuaXBwZXQoaW5kZW50LCBtYXhMZW5ndGgpIHtcbiAgdmFyIGhlYWQsIHN0YXJ0LCB0YWlsLCBlbmQsIHNuaXBwZXQ7XG5cbiAgaWYgKCF0aGlzLmJ1ZmZlcikgcmV0dXJuIG51bGw7XG5cbiAgaW5kZW50ID0gaW5kZW50IHx8IDQ7XG4gIG1heExlbmd0aCA9IG1heExlbmd0aCB8fCA3NTtcblxuICBoZWFkID0gJyc7XG4gIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbjtcblxuICB3aGlsZSAoc3RhcnQgPiAwICYmICdcXHgwMFxcclxcblxceDg1XFx1MjAyOFxcdTIwMjknLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KHN0YXJ0IC0gMSkpID09PSAtMSkge1xuICAgIHN0YXJ0IC09IDE7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gLSBzdGFydCA+IChtYXhMZW5ndGggLyAyIC0gMSkpIHtcbiAgICAgIGhlYWQgPSAnIC4uLiAnO1xuICAgICAgc3RhcnQgKz0gNTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRhaWwgPSAnJztcbiAgZW5kID0gdGhpcy5wb3NpdGlvbjtcblxuICB3aGlsZSAoZW5kIDwgdGhpcy5idWZmZXIubGVuZ3RoICYmICdcXHgwMFxcclxcblxceDg1XFx1MjAyOFxcdTIwMjknLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KGVuZCkpID09PSAtMSkge1xuICAgIGVuZCArPSAxO1xuICAgIGlmIChlbmQgLSB0aGlzLnBvc2l0aW9uID4gKG1heExlbmd0aCAvIDIgLSAxKSkge1xuICAgICAgdGFpbCA9ICcgLi4uICc7XG4gICAgICBlbmQgLT0gNTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNuaXBwZXQgPSB0aGlzLmJ1ZmZlci5zbGljZShzdGFydCwgZW5kKTtcblxuICByZXR1cm4gY29tbW9uLnJlcGVhdCgnICcsIGluZGVudCkgKyBoZWFkICsgc25pcHBldCArIHRhaWwgKyAnXFxuJyArXG4gICAgICAgICBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50ICsgdGhpcy5wb3NpdGlvbiAtIHN0YXJ0ICsgaGVhZC5sZW5ndGgpICsgJ14nO1xufTtcblxuXG5NYXJrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgdmFyIHNuaXBwZXQsIHdoZXJlID0gJyc7XG5cbiAgaWYgKHRoaXMubmFtZSkge1xuICAgIHdoZXJlICs9ICdpbiBcIicgKyB0aGlzLm5hbWUgKyAnXCIgJztcbiAgfVxuXG4gIHdoZXJlICs9ICdhdCBsaW5lICcgKyAodGhpcy5saW5lICsgMSkgKyAnLCBjb2x1bW4gJyArICh0aGlzLmNvbHVtbiArIDEpO1xuXG4gIGlmICghY29tcGFjdCkge1xuICAgIHNuaXBwZXQgPSB0aGlzLmdldFNuaXBwZXQoKTtcblxuICAgIGlmIChzbmlwcGV0KSB7XG4gICAgICB3aGVyZSArPSAnOlxcbicgKyBzbmlwcGV0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aGVyZTtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBNYXJrO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xuXG52YXIgY29tbW9uICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgVHlwZSAgICAgICAgICA9IHJlcXVpcmUoJy4vdHlwZScpO1xuXG5cbmZ1bmN0aW9uIGNvbXBpbGVMaXN0KHNjaGVtYSwgbmFtZSwgcmVzdWx0KSB7XG4gIHZhciBleGNsdWRlID0gW107XG5cbiAgc2NoZW1hLmluY2x1ZGUuZm9yRWFjaChmdW5jdGlvbiAoaW5jbHVkZWRTY2hlbWEpIHtcbiAgICByZXN1bHQgPSBjb21waWxlTGlzdChpbmNsdWRlZFNjaGVtYSwgbmFtZSwgcmVzdWx0KTtcbiAgfSk7XG5cbiAgc2NoZW1hW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKGN1cnJlbnRUeXBlKSB7XG4gICAgcmVzdWx0LmZvckVhY2goZnVuY3Rpb24gKHByZXZpb3VzVHlwZSwgcHJldmlvdXNJbmRleCkge1xuICAgICAgaWYgKHByZXZpb3VzVHlwZS50YWcgPT09IGN1cnJlbnRUeXBlLnRhZyAmJiBwcmV2aW91c1R5cGUua2luZCA9PT0gY3VycmVudFR5cGUua2luZCkge1xuICAgICAgICBleGNsdWRlLnB1c2gocHJldmlvdXNJbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXN1bHQucHVzaChjdXJyZW50VHlwZSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uICh0eXBlLCBpbmRleCkge1xuICAgIHJldHVybiBleGNsdWRlLmluZGV4T2YoaW5kZXgpID09PSAtMTtcbiAgfSk7XG59XG5cblxuZnVuY3Rpb24gY29tcGlsZU1hcCgvKiBsaXN0cy4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICBzY2FsYXI6IHt9LFxuICAgICAgICBzZXF1ZW5jZToge30sXG4gICAgICAgIG1hcHBpbmc6IHt9LFxuICAgICAgICBmYWxsYmFjazoge31cbiAgICAgIH0sIGluZGV4LCBsZW5ndGg7XG5cbiAgZnVuY3Rpb24gY29sbGVjdFR5cGUodHlwZSkge1xuICAgIHJlc3VsdFt0eXBlLmtpbmRdW3R5cGUudGFnXSA9IHJlc3VsdFsnZmFsbGJhY2snXVt0eXBlLnRhZ10gPSB0eXBlO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgYXJndW1lbnRzW2luZGV4XS5mb3JFYWNoKGNvbGxlY3RUeXBlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIFNjaGVtYShkZWZpbml0aW9uKSB7XG4gIHRoaXMuaW5jbHVkZSAgPSBkZWZpbml0aW9uLmluY2x1ZGUgIHx8IFtdO1xuICB0aGlzLmltcGxpY2l0ID0gZGVmaW5pdGlvbi5pbXBsaWNpdCB8fCBbXTtcbiAgdGhpcy5leHBsaWNpdCA9IGRlZmluaXRpb24uZXhwbGljaXQgfHwgW107XG5cbiAgdGhpcy5pbXBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgaWYgKHR5cGUubG9hZEtpbmQgJiYgdHlwZS5sb2FkS2luZCAhPT0gJ3NjYWxhcicpIHtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuY29tcGlsZWRJbXBsaWNpdCA9IGNvbXBpbGVMaXN0KHRoaXMsICdpbXBsaWNpdCcsIFtdKTtcbiAgdGhpcy5jb21waWxlZEV4cGxpY2l0ID0gY29tcGlsZUxpc3QodGhpcywgJ2V4cGxpY2l0JywgW10pO1xuICB0aGlzLmNvbXBpbGVkVHlwZU1hcCAgPSBjb21waWxlTWFwKHRoaXMuY29tcGlsZWRJbXBsaWNpdCwgdGhpcy5jb21waWxlZEV4cGxpY2l0KTtcbn1cblxuXG5TY2hlbWEuREVGQVVMVCA9IG51bGw7XG5cblxuU2NoZW1hLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYSgpIHtcbiAgdmFyIHNjaGVtYXMsIHR5cGVzO1xuXG4gIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHNjaGVtYXMgPSBTY2hlbWEuREVGQVVMVDtcbiAgICAgIHR5cGVzID0gYXJndW1lbnRzWzBdO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDI6XG4gICAgICBzY2hlbWFzID0gYXJndW1lbnRzWzBdO1xuICAgICAgdHlwZXMgPSBhcmd1bWVudHNbMV07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgU2NoZW1hLmNyZWF0ZSBmdW5jdGlvbicpO1xuICB9XG5cbiAgc2NoZW1hcyA9IGNvbW1vbi50b0FycmF5KHNjaGVtYXMpO1xuICB0eXBlcyA9IGNvbW1vbi50b0FycmF5KHR5cGVzKTtcblxuICBpZiAoIXNjaGVtYXMuZXZlcnkoZnVuY3Rpb24gKHNjaGVtYSkgeyByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgU2NoZW1hOyB9KSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBzdXBlciBzY2hlbWFzIChvciBhIHNpbmdsZSBTY2hlbWEgb2JqZWN0KSBjb250YWlucyBhIG5vbi1TY2hlbWEgb2JqZWN0LicpO1xuICB9XG5cbiAgaWYgKCF0eXBlcy5ldmVyeShmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIFR5cGU7IH0pKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4nKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU2NoZW1hKHtcbiAgICBpbmNsdWRlOiBzY2hlbWFzLFxuICAgIGV4cGxpY2l0OiB0eXBlc1xuICB9KTtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWE7XG4iLCIvLyBTdGFuZGFyZCBZQU1MJ3MgQ29yZSBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDQ5MjNcbi8vXG4vLyBOT1RFOiBKUy1ZQU1MIGRvZXMgbm90IHN1cHBvcnQgc2NoZW1hLXNwZWNpZmljIHRhZyByZXNvbHV0aW9uIHJlc3RyaWN0aW9ucy5cbi8vIFNvLCBDb3JlIHNjaGVtYSBoYXMgbm8gZGlzdGluY3Rpb25zIGZyb20gSlNPTiBzY2hlbWEgaXMgSlMtWUFNTC5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2pzb24nKVxuICBdXG59KTtcbiIsIi8vIEpTLVlBTUwncyBkZWZhdWx0IHNjaGVtYSBmb3IgYGxvYWRgIGZ1bmN0aW9uLlxuLy8gSXQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoaXMgc2NoZW1hIGlzIGJhc2VkIG9uIEpTLVlBTUwncyBkZWZhdWx0IHNhZmUgc2NoZW1hIGFuZCBpbmNsdWRlc1xuLy8gSmF2YVNjcmlwdC1zcGVjaWZpYyB0eXBlczogISFqcy91bmRlZmluZWQsICEhanMvcmVnZXhwIGFuZCAhIWpzL2Z1bmN0aW9uLlxuLy9cbi8vIEFsc28gdGhpcyBzY2hlbWEgaXMgdXNlZCBhcyBkZWZhdWx0IGJhc2Ugc2NoZW1hIGF0IGBTY2hlbWEuY3JlYXRlYCBmdW5jdGlvbi5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU2NoZW1hLkRFRkFVTFQgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vZGVmYXVsdF9zYWZlJylcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL3VuZGVmaW5lZCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvcmVnZXhwJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9mdW5jdGlvbicpXG4gIF1cbn0pO1xuIiwiLy8gSlMtWUFNTCdzIGRlZmF1bHQgc2NoZW1hIGZvciBgc2FmZUxvYWRgIGZ1bmN0aW9uLlxuLy8gSXQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoaXMgc2NoZW1hIGlzIGJhc2VkIG9uIHN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYSBhbmQgaW5jbHVkZXMgbW9zdCBvZlxuLy8gZXh0cmEgdHlwZXMgZGVzY3JpYmVkIGF0IFlBTUwgdGFnIHJlcG9zaXRvcnkuIChodHRwOi8veWFtbC5vcmcvdHlwZS8pXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9jb3JlJylcbiAgXSxcbiAgaW1wbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL3RpbWVzdGFtcCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvbWVyZ2UnKVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvYmluYXJ5JyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9vbWFwJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9wYWlycycpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvc2V0JylcbiAgXVxufSk7XG4iLCIvLyBTdGFuZGFyZCBZQU1MJ3MgRmFpbHNhZmUgc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODAyMzQ2XG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvc3RyJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zZXEnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL21hcCcpXG4gIF1cbn0pO1xuIiwiLy8gU3RhbmRhcmQgWUFNTCdzIEpTT04gc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODAzMjMxXG4vL1xuLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuXG4vLyBTbywgdGhpcyBzY2hlbWEgaXMgbm90IHN1Y2ggc3RyaWN0IGFzIGRlZmluZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vIEl0IGFsbG93cyBudW1iZXJzIGluIGJpbmFyeSBub3RhaW9uLCB1c2UgYE51bGxgIGFuZCBgTlVMTGAgYXMgYG51bGxgLCBldGMuXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9mYWlsc2FmZScpXG4gIF0sXG4gIGltcGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9udWxsJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9ib29sJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9pbnQnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2Zsb2F0JylcbiAgXVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBZQU1MRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcblxudmFyIFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUyA9IFtcbiAgJ2tpbmQnLFxuICAncmVzb2x2ZScsXG4gICdjb25zdHJ1Y3QnLFxuICAnaW5zdGFuY2VPZicsXG4gICdwcmVkaWNhdGUnLFxuICAncmVwcmVzZW50JyxcbiAgJ2RlZmF1bHRTdHlsZScsXG4gICdzdHlsZUFsaWFzZXMnXG5dO1xuXG52YXIgWUFNTF9OT0RFX0tJTkRTID0gW1xuICAnc2NhbGFyJyxcbiAgJ3NlcXVlbmNlJyxcbiAgJ21hcHBpbmcnXG5dO1xuXG5mdW5jdGlvbiBjb21waWxlU3R5bGVBbGlhc2VzKG1hcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG5cbiAgaWYgKG1hcCAhPT0gbnVsbCkge1xuICAgIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGUpIHtcbiAgICAgIG1hcFtzdHlsZV0uZm9yRWFjaChmdW5jdGlvbiAoYWxpYXMpIHtcbiAgICAgICAgcmVzdWx0W1N0cmluZyhhbGlhcyldID0gc3R5bGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFR5cGUodGFnLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAoVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVW5rbm93biBvcHRpb24gXCInICsgbmFtZSArICdcIiBpcyBtZXQgaW4gZGVmaW5pdGlvbiBvZiBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVE9ETzogQWRkIHRhZyBmb3JtYXQgY2hlY2suXG4gIHRoaXMudGFnICAgICAgICAgID0gdGFnO1xuICB0aGlzLmtpbmQgICAgICAgICA9IG9wdGlvbnNbJ2tpbmQnXSAgICAgICAgIHx8IG51bGw7XG4gIHRoaXMucmVzb2x2ZSAgICAgID0gb3B0aW9uc1sncmVzb2x2ZSddICAgICAgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgdGhpcy5jb25zdHJ1Y3QgICAgPSBvcHRpb25zWydjb25zdHJ1Y3QnXSAgICB8fCBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YTsgfTtcbiAgdGhpcy5pbnN0YW5jZU9mICAgPSBvcHRpb25zWydpbnN0YW5jZU9mJ10gICB8fCBudWxsO1xuICB0aGlzLnByZWRpY2F0ZSAgICA9IG9wdGlvbnNbJ3ByZWRpY2F0ZSddICAgIHx8IG51bGw7XG4gIHRoaXMucmVwcmVzZW50ICAgID0gb3B0aW9uc1sncmVwcmVzZW50J10gICAgfHwgbnVsbDtcbiAgdGhpcy5kZWZhdWx0U3R5bGUgPSBvcHRpb25zWydkZWZhdWx0U3R5bGUnXSB8fCBudWxsO1xuICB0aGlzLnN0eWxlQWxpYXNlcyA9IGNvbXBpbGVTdHlsZUFsaWFzZXMob3B0aW9uc1snc3R5bGVBbGlhc2VzJ10gfHwgbnVsbCk7XG5cbiAgaWYgKFlBTUxfTk9ERV9LSU5EUy5pbmRleE9mKHRoaXMua2luZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1Vua25vd24ga2luZCBcIicgKyB0aGlzLmtpbmQgKyAnXCIgaXMgc3BlY2lmaWVkIGZvciBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVHlwZTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cblxudmFyIE5vZGVCdWZmZXI7XG5cbnRyeSB7XG4gIC8vIEEgdHJpY2sgZm9yIGJyb3dzZXJpZmllZCB2ZXJzaW9uLCB0byBub3QgaW5jbHVkZSBgQnVmZmVyYCBzaGltXG4gIHZhciBfcmVxdWlyZSA9IHJlcXVpcmU7XG4gIE5vZGVCdWZmZXIgPSBfcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xufSBjYXRjaCAoX18pIHt9XG5cbnZhciBUeXBlICAgICAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5cbi8vIFsgNjQsIDY1LCA2NiBdIC0+IFsgcGFkZGluZywgQ1IsIExGIF1cbnZhciBCQVNFNjRfTUFQID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XFxuXFxyJztcblxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJpbmFyeShkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGNvZGUsIGlkeCwgYml0bGVuID0gMCwgbWF4ID0gZGF0YS5sZW5ndGgsIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBvbmUgYnkgb25lLlxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBjb2RlID0gbWFwLmluZGV4T2YoZGF0YS5jaGFyQXQoaWR4KSk7XG5cbiAgICAvLyBTa2lwIENSL0xGXG4gICAgaWYgKGNvZGUgPiA2NCkgY29udGludWU7XG5cbiAgICAvLyBGYWlsIG9uIGlsbGVnYWwgY2hhcmFjdGVyc1xuICAgIGlmIChjb2RlIDwgMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgYml0bGVuICs9IDY7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgYW55IGJpdHMgbGVmdCwgc291cmNlIHdhcyBjb3JydXB0ZWRcbiAgcmV0dXJuIChiaXRsZW4gJSA4KSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJpbmFyeShkYXRhKSB7XG4gIHZhciBpZHgsIHRhaWxiaXRzLFxuICAgICAgaW5wdXQgPSBkYXRhLnJlcGxhY2UoL1tcXHJcXG49XS9nLCAnJyksIC8vIHJlbW92ZSBDUi9MRiAmIHBhZGRpbmcgdG8gc2ltcGxpZnkgc2NhblxuICAgICAgbWF4ID0gaW5wdXQubGVuZ3RoLFxuICAgICAgbWFwID0gQkFTRTY0X01BUCxcbiAgICAgIGJpdHMgPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgLy8gQ29sbGVjdCBieSA2KjQgYml0cyAoMyBieXRlcylcblxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoKGlkeCAlIDQgPT09IDApICYmIGlkeCkge1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhGRik7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4RkYpO1xuICAgICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA2KSB8IG1hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpZHgpKTtcbiAgfVxuXG4gIC8vIER1bXAgdGFpbFxuXG4gIHRhaWxiaXRzID0gKG1heCAlIDQpICogNjtcblxuICBpZiAodGFpbGJpdHMgPT09IDApIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweEZGKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTgpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxMCkgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAyKSAmIDB4RkYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxMikge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDQpICYgMHhGRik7XG4gIH1cblxuICAvLyBXcmFwIGludG8gQnVmZmVyIGZvciBOb2RlSlMgYW5kIGxlYXZlIEFycmF5IGZvciBicm93c2VyXG4gIGlmIChOb2RlQnVmZmVyKSB7XG4gICAgLy8gU3VwcG9ydCBub2RlIDYuKyBCdWZmZXIgQVBJIHdoZW4gYXZhaWxhYmxlXG4gICAgcmV0dXJuIE5vZGVCdWZmZXIuZnJvbSA/IE5vZGVCdWZmZXIuZnJvbShyZXN1bHQpIDogbmV3IE5vZGVCdWZmZXIocmVzdWx0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxCaW5hcnkob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHZhciByZXN1bHQgPSAnJywgYml0cyA9IDAsIGlkeCwgdGFpbCxcbiAgICAgIG1heCA9IG9iamVjdC5sZW5ndGgsXG4gICAgICBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgZXZlcnkgdGhyZWUgYnl0ZXMgdG8gNCBBU0NJSSBjaGFyYWN0ZXJzLlxuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmICgoaWR4ICUgMyA9PT0gMCkgJiYgaWR4KSB7XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNikgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA4KSArIG9iamVjdFtpZHhdO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdGFpbCA9IG1heCAlIDM7XG5cbiAgaWYgKHRhaWwgPT09IDApIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDIpIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEwKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMSkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDQpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc0JpbmFyeShvYmplY3QpIHtcbiAgcmV0dXJuIE5vZGVCdWZmZXIgJiYgTm9kZUJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnknLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEJpbmFyeSxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQmluYXJ5LFxuICBwcmVkaWNhdGU6IGlzQmluYXJ5LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxCaW5hcnlcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCb29sZWFuKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGg7XG5cbiAgcmV0dXJuIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICd0cnVlJyB8fCBkYXRhID09PSAnVHJ1ZScgfHwgZGF0YSA9PT0gJ1RSVUUnKSkgfHxcbiAgICAgICAgIChtYXggPT09IDUgJiYgKGRhdGEgPT09ICdmYWxzZScgfHwgZGF0YSA9PT0gJ0ZhbHNlJyB8fCBkYXRhID09PSAnRkFMU0UnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxCb29sZWFuKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgPT09ICd0cnVlJyB8fFxuICAgICAgICAgZGF0YSA9PT0gJ1RydWUnIHx8XG4gICAgICAgICBkYXRhID09PSAnVFJVRSc7XG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBCb29sZWFuXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJvb2wnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEJvb2xlYW4sXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJvb2xlYW4sXG4gIHByZWRpY2F0ZTogaXNCb29sZWFuLFxuICByZXByZXNlbnQ6IHtcbiAgICBsb3dlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICd0cnVlJyA6ICdmYWxzZSc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVFJVRScgOiAnRkFMU0UnOyB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ1RydWUnIDogJ0ZhbHNlJzsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIFR5cGUgICA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIFlBTUxfRkxPQVRfUEFUVEVSTiA9IG5ldyBSZWdFeHAoXG4gIC8vIDIuNWU0LCAyLjUgYW5kIGludGVnZXJzXG4gICdeKD86Wy0rXT8oPzowfFsxLTldWzAtOV9dKikoPzpcXFxcLlswLTlfXSopPyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIC4yZTQsIC4yXG4gIC8vIHNwZWNpYWwgY2FzZSwgc2VlbXMgbm90IGZyb20gc3BlY1xuICAnfFxcXFwuWzAtOV9dKyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIDIwOjU5XG4gICd8Wy0rXT9bMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pK1xcXFwuWzAtOV9dKicgK1xuICAvLyAuaW5mXG4gICd8Wy0rXT9cXFxcLig/OmluZnxJbmZ8SU5GKScgK1xuICAvLyAubmFuXG4gICd8XFxcXC4oPzpuYW58TmFOfE5BTikpJCcpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEZsb2F0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICBpZiAoIVlBTUxfRkxPQVRfUEFUVEVSTi50ZXN0KGRhdGEpIHx8XG4gICAgICAvLyBRdWljayBoYWNrIHRvIG5vdCBhbGxvdyBpbnRlZ2VycyBlbmQgd2l0aCBgX2BcbiAgICAgIC8vIFByb2JhYmx5IHNob3VsZCB1cGRhdGUgcmVnZXhwICYgY2hlY2sgc3BlZWRcbiAgICAgIGRhdGFbZGF0YS5sZW5ndGggLSAxXSA9PT0gJ18nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxGbG9hdChkYXRhKSB7XG4gIHZhciB2YWx1ZSwgc2lnbiwgYmFzZSwgZGlnaXRzO1xuXG4gIHZhbHVlICA9IGRhdGEucmVwbGFjZSgvXy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgc2lnbiAgID0gdmFsdWVbMF0gPT09ICctJyA/IC0xIDogMTtcbiAgZGlnaXRzID0gW107XG5cbiAgaWYgKCcrLScuaW5kZXhPZih2YWx1ZVswXSkgPj0gMCkge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcuaW5mJykge1xuICAgIHJldHVybiAoc2lnbiA9PT0gMSkgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG5cbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJy5uYW4nKSB7XG4gICAgcmV0dXJuIE5hTjtcblxuICB9IGVsc2UgaWYgKHZhbHVlLmluZGV4T2YoJzonKSA+PSAwKSB7XG4gICAgdmFsdWUuc3BsaXQoJzonKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICBkaWdpdHMudW5zaGlmdChwYXJzZUZsb2F0KHYsIDEwKSk7XG4gICAgfSk7XG5cbiAgICB2YWx1ZSA9IDAuMDtcbiAgICBiYXNlID0gMTtcblxuICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICB2YWx1ZSArPSBkICogYmFzZTtcbiAgICAgIGJhc2UgKj0gNjA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbiAqIHZhbHVlO1xuXG4gIH1cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUZsb2F0KHZhbHVlLCAxMCk7XG59XG5cblxudmFyIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QgPSAvXlstK10/WzAtOV0rZS87XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxGbG9hdChvYmplY3QsIHN0eWxlKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKGlzTmFOKG9iamVjdCkpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5uYW4nO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuTkFOJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLk5hTic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcuaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLS5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICctLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy0uSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpIHtcbiAgICByZXR1cm4gJy0wLjAnO1xuICB9XG5cbiAgcmVzID0gb2JqZWN0LnRvU3RyaW5nKDEwKTtcblxuICAvLyBKUyBzdHJpbmdpZmllciBjYW4gYnVpbGQgc2NpZW50aWZpYyBmb3JtYXQgd2l0aG91dCBkb3RzOiA1ZS0xMDAsXG4gIC8vIHdoaWxlIFlBTUwgcmVxdXJlcyBkb3Q6IDUuZS0xMDAuIEZpeCBpdCB3aXRoIHNpbXBsZSBoYWNrXG5cbiAgcmV0dXJuIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QudGVzdChyZXMpID8gcmVzLnJlcGxhY2UoJ2UnLCAnLmUnKSA6IHJlcztcbn1cblxuZnVuY3Rpb24gaXNGbG9hdChvYmplY3QpIHtcbiAgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXScpICYmXG4gICAgICAgICAob2JqZWN0ICUgMSAhPT0gMCB8fCBjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxGbG9hdCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sRmxvYXQsXG4gIHByZWRpY2F0ZTogaXNGbG9hdCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sRmxvYXQsXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiBpc0hleENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHx8XG4gICAgICAgICAoKDB4NDEvKiBBICovIDw9IGMpICYmIChjIDw9IDB4NDYvKiBGICovKSkgfHxcbiAgICAgICAgICgoMHg2MS8qIGEgKi8gPD0gYykgJiYgKGMgPD0gMHg2Ni8qIGYgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNPY3RDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzNy8qIDcgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNEZWNDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGgsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBoYXNEaWdpdHMgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmICghbWF4KSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBkYXRhW2luZGV4XTtcblxuICAvLyBzaWduXG4gIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG4gIH1cblxuICBpZiAoY2ggPT09ICcwJykge1xuICAgIC8vIDBcbiAgICBpZiAoaW5kZXggKyAxID09PSBtYXgpIHJldHVybiB0cnVlO1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcblxuICAgIC8vIGJhc2UgMiwgYmFzZSA4LCBiYXNlIDE2XG5cbiAgICBpZiAoY2ggPT09ICdiJykge1xuICAgICAgLy8gYmFzZSAyXG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY2ggIT09ICcwJyAmJiBjaCAhPT0gJzEnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gICAgfVxuXG5cbiAgICBpZiAoY2ggPT09ICd4Jykge1xuICAgICAgLy8gYmFzZSAxNlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFpc0hleENvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cbiAgICAvLyBiYXNlIDhcbiAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICBpZiAoIWlzT2N0Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICB9XG5cbiAgLy8gYmFzZSAxMCAoZXhjZXB0IDApIG9yIGJhc2UgNjBcblxuICAvLyB2YWx1ZSBzaG91bGQgbm90IHN0YXJ0IHdpdGggYF9gO1xuICBpZiAoY2ggPT09ICdfJykgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgIGlmIChjaCA9PT0gJzonKSBicmVhaztcbiAgICBpZiAoIWlzRGVjQ29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICB9XG5cbiAgLy8gU2hvdWxkIGhhdmUgZGlnaXRzIGFuZCBzaG91bGQgbm90IGVuZCB3aXRoIGBfYFxuICBpZiAoIWhhc0RpZ2l0cyB8fCBjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gaWYgIWJhc2U2MCAtIGRvbmU7XG4gIGlmIChjaCAhPT0gJzonKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBiYXNlNjAgYWxtb3N0IG5vdCB1c2VkLCBubyBuZWVkcyB0byBvcHRpbWl6ZVxuICByZXR1cm4gL14oOlswLTVdP1swLTldKSskLy50ZXN0KGRhdGEuc2xpY2UoaW5kZXgpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEludGVnZXIoZGF0YSkge1xuICB2YXIgdmFsdWUgPSBkYXRhLCBzaWduID0gMSwgY2gsIGJhc2UsIGRpZ2l0cyA9IFtdO1xuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCdfJykgIT09IC0xKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9fL2csICcnKTtcbiAgfVxuXG4gIGNoID0gdmFsdWVbMF07XG5cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGlmIChjaCA9PT0gJy0nKSBzaWduID0gLTE7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgICBjaCA9IHZhbHVlWzBdO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiAwO1xuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgaWYgKHZhbHVlWzFdID09PSAnYicpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDIpO1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gJ3gnKSByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxNik7XG4gICAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgOCk7XG4gIH1cblxuICBpZiAodmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkge1xuICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VJbnQodiwgMTApKTtcbiAgICB9KTtcblxuICAgIHZhbHVlID0gMDtcbiAgICBiYXNlID0gMTtcblxuICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICB2YWx1ZSArPSAoZCAqIGJhc2UpO1xuICAgICAgYmFzZSAqPSA2MDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduICogdmFsdWU7XG5cbiAgfVxuXG4gIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDEwKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKG9iamVjdCkge1xuICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpKSA9PT0gJ1tvYmplY3QgTnVtYmVyXScgJiZcbiAgICAgICAgIChvYmplY3QgJSAxID09PSAwICYmICFjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sSW50ZWdlcixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sSW50ZWdlcixcbiAgcHJlZGljYXRlOiBpc0ludGVnZXIsXG4gIHJlcHJlc2VudDoge1xuICAgIGJpbmFyeTogICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwYicgKyBvYmoudG9TdHJpbmcoMikgOiAnLTBiJyArIG9iai50b1N0cmluZygyKS5zbGljZSgxKTsgfSxcbiAgICBvY3RhbDogICAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMCcgICsgb2JqLnRvU3RyaW5nKDgpIDogJy0wJyAgKyBvYmoudG9TdHJpbmcoOCkuc2xpY2UoMSk7IH0sXG4gICAgZGVjaW1hbDogICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iai50b1N0cmluZygxMCk7IH0sXG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIGhleGFkZWNpbWFsOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcweCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgOiAgJy0weCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSk7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnZGVjaW1hbCcsXG4gIHN0eWxlQWxpYXNlczoge1xuICAgIGJpbmFyeTogICAgICBbIDIsICAnYmluJyBdLFxuICAgIG9jdGFsOiAgICAgICBbIDgsICAnb2N0JyBdLFxuICAgIGRlY2ltYWw6ICAgICBbIDEwLCAnZGVjJyBdLFxuICAgIGhleGFkZWNpbWFsOiBbIDE2LCAnaGV4JyBdXG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZXNwcmltYTtcblxuLy8gQnJvd3NlcmlmaWVkIHZlcnNpb24gZG9lcyBub3QgaGF2ZSBlc3ByaW1hXG4vL1xuLy8gMS4gRm9yIG5vZGUuanMganVzdCByZXF1aXJlIG1vZHVsZSBhcyBkZXBzXG4vLyAyLiBGb3IgYnJvd3NlciB0cnkgdG8gcmVxdWlyZSBtdWR1bGUgdmlhIGV4dGVybmFsIEFNRCBzeXN0ZW0uXG4vLyAgICBJZiBub3QgZm91bmQgLSB0cnkgdG8gZmFsbGJhY2sgdG8gd2luZG93LmVzcHJpbWEuIElmIG5vdFxuLy8gICAgZm91bmQgdG9vIC0gdGhlbiBmYWlsIHRvIHBhcnNlLlxuLy9cbnRyeSB7XG4gIC8vIHdvcmthcm91bmQgdG8gZXhjbHVkZSBwYWNrYWdlIGZyb20gYnJvd3NlcmlmeSBsaXN0LlxuICB2YXIgX3JlcXVpcmUgPSByZXF1aXJlO1xuICBlc3ByaW1hID0gX3JlcXVpcmUoJ2VzcHJpbWEnKTtcbn0gY2F0Y2ggKF8pIHtcbiAgLypnbG9iYWwgd2luZG93ICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgZXNwcmltYSA9IHdpbmRvdy5lc3ByaW1hO1xufVxuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICB2YXIgc291cmNlID0gJygnICsgZGF0YSArICcpJyxcbiAgICAgICAgYXN0ICAgID0gZXNwcmltYS5wYXJzZShzb3VyY2UsIHsgcmFuZ2U6IHRydWUgfSk7XG5cbiAgICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHxcbiAgICAgICAgYXN0LmJvZHkubGVuZ3RoICAgICAgICAgICAgICE9PSAxICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgYXN0LmJvZHlbMF0udHlwZSAgICAgICAgICAgICE9PSAnRXhwcmVzc2lvblN0YXRlbWVudCcgfHxcbiAgICAgICAgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyAmJlxuICAgICAgICAgIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Z1bmN0aW9uRXhwcmVzc2lvbicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RKYXZhc2NyaXB0RnVuY3Rpb24oZGF0YSkge1xuICAvKmpzbGludCBldmlsOnRydWUqL1xuXG4gIHZhciBzb3VyY2UgPSAnKCcgKyBkYXRhICsgJyknLFxuICAgICAgYXN0ICAgID0gZXNwcmltYS5wYXJzZShzb3VyY2UsIHsgcmFuZ2U6IHRydWUgfSksXG4gICAgICBwYXJhbXMgPSBbXSxcbiAgICAgIGJvZHk7XG5cbiAgaWYgKGFzdC50eXBlICAgICAgICAgICAgICAgICAgICAhPT0gJ1Byb2dyYW0nICAgICAgICAgICAgIHx8XG4gICAgICBhc3QuYm9keS5sZW5ndGggICAgICAgICAgICAgIT09IDEgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgYXN0LmJvZHlbMF0udHlwZSAgICAgICAgICAgICE9PSAnRXhwcmVzc2lvblN0YXRlbWVudCcgfHxcbiAgICAgIChhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbicgJiZcbiAgICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBhc3QuYm9keVswXS5leHByZXNzaW9uLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHBhcmFtcy5wdXNoKHBhcmFtLm5hbWUpO1xuICB9KTtcblxuICBib2R5ID0gYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnJhbmdlO1xuXG4gIC8vIEVzcHJpbWEncyByYW5nZXMgaW5jbHVkZSB0aGUgZmlyc3QgJ3snIGFuZCB0aGUgbGFzdCAnfScgY2hhcmFjdGVycyBvblxuICAvLyBmdW5jdGlvbiBleHByZXNzaW9ucy4gU28gY3V0IHRoZW0gb3V0LlxuICBpZiAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpIHtcbiAgICAvKmVzbGludC1kaXNhYmxlIG5vLW5ldy1mdW5jKi9cbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgc291cmNlLnNsaWNlKGJvZHlbMF0gKyAxLCBib2R5WzFdIC0gMSkpO1xuICB9XG4gIC8vIEVTNiBhcnJvdyBmdW5jdGlvbnMgY2FuIG9taXQgdGhlIEJsb2NrU3RhdGVtZW50LiBJbiB0aGF0IGNhc2UsIGp1c3QgcmV0dXJuXG4gIC8vIHRoZSBib2R5LlxuICAvKmVzbGludC1kaXNhYmxlIG5vLW5ldy1mdW5jKi9cbiAgcmV0dXJuIG5ldyBGdW5jdGlvbihwYXJhbXMsICdyZXR1cm4gJyArIHNvdXJjZS5zbGljZShib2R5WzBdLCBib2R5WzFdKSk7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvbihvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgcmV0dXJuIG9iamVjdC50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL2Z1bmN0aW9uJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZUphdmFzY3JpcHRGdW5jdGlvbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0RnVuY3Rpb24sXG4gIHByZWRpY2F0ZTogaXNGdW5jdGlvbixcbiAgcmVwcmVzZW50OiByZXByZXNlbnRKYXZhc2NyaXB0RnVuY3Rpb25cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRSZWdFeHAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICB2YXIgcmVnZXhwID0gZGF0YSxcbiAgICAgIHRhaWwgICA9IC9cXC8oW2dpbV0qKSQvLmV4ZWMoZGF0YSksXG4gICAgICBtb2RpZmllcnMgPSAnJztcblxuICAvLyBpZiByZWdleHAgc3RhcnRzIHdpdGggJy8nIGl0IGNhbiBoYXZlIG1vZGlmaWVycyBhbmQgbXVzdCBiZSBwcm9wZXJseSBjbG9zZWRcbiAgLy8gYC9mb28vZ2ltYCAtIG1vZGlmaWVycyB0YWlsIGNhbiBiZSBtYXhpbXVtIDMgY2hhcnNcbiAgaWYgKHJlZ2V4cFswXSA9PT0gJy8nKSB7XG4gICAgaWYgKHRhaWwpIG1vZGlmaWVycyA9IHRhaWxbMV07XG5cbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA+IDMpIHJldHVybiBmYWxzZTtcbiAgICAvLyBpZiBleHByZXNzaW9uIHN0YXJ0cyB3aXRoIC8sIGlzIHNob3VsZCBiZSBwcm9wZXJseSB0ZXJtaW5hdGVkXG4gICAgaWYgKHJlZ2V4cFtyZWdleHAubGVuZ3RoIC0gbW9kaWZpZXJzLmxlbmd0aCAtIDFdICE9PSAnLycpIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RKYXZhc2NyaXB0UmVnRXhwKGRhdGEpIHtcbiAgdmFyIHJlZ2V4cCA9IGRhdGEsXG4gICAgICB0YWlsICAgPSAvXFwvKFtnaW1dKikkLy5leGVjKGRhdGEpLFxuICAgICAgbW9kaWZpZXJzID0gJyc7XG5cbiAgLy8gYC9mb28vZ2ltYCAtIHRhaWwgY2FuIGJlIG1heGltdW0gNCBjaGFyc1xuICBpZiAocmVnZXhwWzBdID09PSAnLycpIHtcbiAgICBpZiAodGFpbCkgbW9kaWZpZXJzID0gdGFpbFsxXTtcbiAgICByZWdleHAgPSByZWdleHAuc2xpY2UoMSwgcmVnZXhwLmxlbmd0aCAtIG1vZGlmaWVycy5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4cCwgbW9kaWZpZXJzKTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdFJlZ0V4cChvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcvJyArIG9iamVjdC5zb3VyY2UgKyAnLyc7XG5cbiAgaWYgKG9iamVjdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmIChvYmplY3QubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAob2JqZWN0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL3JlZ2V4cCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0UmVnRXhwLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAsXG4gIHByZWRpY2F0ZTogaXNSZWdFeHAsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdFJlZ0V4cFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQoKSB7XG4gIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi9cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy91bmRlZmluZWQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0VW5kZWZpbmVkLFxuICBwcmVkaWNhdGU6IGlzVW5kZWZpbmVkLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRVbmRlZmluZWRcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWFwJywge1xuICBraW5kOiAnbWFwcGluZycsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307IH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxNZXJnZShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAnPDwnIHx8IGRhdGEgPT09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxNZXJnZVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE51bGwoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSAxICYmIGRhdGEgPT09ICd+JykgfHxcbiAgICAgICAgIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnTnVsbCcgfHwgZGF0YSA9PT0gJ05VTEwnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxOdWxsLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxOdWxsLFxuICBwcmVkaWNhdGU6IGlzTnVsbCxcbiAgcmVwcmVzZW50OiB7XG4gICAgY2Fub25pY2FsOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnfic7ICAgIH0sXG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTlVMTCc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTnVsbCc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfdG9TdHJpbmcgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE9tYXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG9iamVjdEtleXMgPSBbXSwgaW5kZXgsIGxlbmd0aCwgcGFpciwgcGFpcktleSwgcGFpckhhc0tleSxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG4gICAgcGFpckhhc0tleSA9IGZhbHNlO1xuXG4gICAgaWYgKF90b1N0cmluZy5jYWxsKHBhaXIpICE9PSAnW29iamVjdCBPYmplY3RdJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChwYWlyS2V5IGluIHBhaXIpIHtcbiAgICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChwYWlyLCBwYWlyS2V5KSkge1xuICAgICAgICBpZiAoIXBhaXJIYXNLZXkpIHBhaXJIYXNLZXkgPSB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBhaXJIYXNLZXkpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmplY3RLZXlzLmluZGV4T2YocGFpcktleSkgPT09IC0xKSBvYmplY3RLZXlzLnB1c2gocGFpcktleSk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE9tYXAoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6b21hcCcsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxPbWFwLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxPbWFwXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFBhaXJzKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGlmIChfdG9TdHJpbmcuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTtcblxuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmVzdWx0W2luZGV4XSA9IFsga2V5c1swXSwgcGFpcltrZXlzWzBdXSBdO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxQYWlycyhkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuXG4gICAgcmVzdWx0W2luZGV4XSA9IFsga2V5c1swXSwgcGFpcltrZXlzWzBdXSBdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6cGFpcnMnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sUGFpcnMsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFBhaXJzXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNlcScsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTsgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxTZXQoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGtleSwgb2JqZWN0ID0gZGF0YTtcblxuICBmb3IgKGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICBpZiAob2JqZWN0W2tleV0gIT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFNldChkYXRhKSB7XG4gIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzZXQnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxTZXQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFNldFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6ICcnOyB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBZQU1MX0RBVEVfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XSkkJyk7ICAgICAgICAgICAgICAgICAgIC8vIFszXSBkYXlcblxudmFyIFlBTUxfVElNRVNUQU1QX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhclxuICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbM10gZGF5XG4gICcoPzpbVHRdfFsgXFxcXHRdKyknICAgICAgICAgICAgICAgICArIC8vIC4uLlxuICAnKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgICsgLy8gWzRdIGhvdXJcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs1XSBtaW51dGVcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs2XSBzZWNvbmRcbiAgJyg/OlxcXFwuKFswLTldKikpPycgICAgICAgICAgICAgICAgICsgLy8gWzddIGZyYWN0aW9uXG4gICcoPzpbIFxcXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pJyArIC8vIFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXJcbiAgJyg/OjooWzAtOV1bMC05XSkpPykpPyQnKTsgICAgICAgICAgIC8vIFsxMV0gdHpfbWludXRlXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIGlmIChZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFRpbWVzdGFtcChkYXRhKSB7XG4gIHZhciBtYXRjaCwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uID0gMCxcbiAgICAgIGRlbHRhID0gbnVsbCwgdHpfaG91ciwgdHpfbWludXRlLCBkYXRlO1xuXG4gIG1hdGNoID0gWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpO1xuICBpZiAobWF0Y2ggPT09IG51bGwpIG1hdGNoID0gWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSk7XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ0RhdGUgcmVzb2x2ZSBlcnJvcicpO1xuXG4gIC8vIG1hdGNoOiBbMV0geWVhciBbMl0gbW9udGggWzNdIGRheVxuXG4gIHllYXIgPSArKG1hdGNoWzFdKTtcbiAgbW9udGggPSArKG1hdGNoWzJdKSAtIDE7IC8vIEpTIG1vbnRoIHN0YXJ0cyB3aXRoIDBcbiAgZGF5ID0gKyhtYXRjaFszXSk7XG5cbiAgaWYgKCFtYXRjaFs0XSkgeyAvLyBubyBob3VyXG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbNF0gaG91ciBbNV0gbWludXRlIFs2XSBzZWNvbmQgWzddIGZyYWN0aW9uXG5cbiAgaG91ciA9ICsobWF0Y2hbNF0pO1xuICBtaW51dGUgPSArKG1hdGNoWzVdKTtcbiAgc2Vjb25kID0gKyhtYXRjaFs2XSk7XG5cbiAgaWYgKG1hdGNoWzddKSB7XG4gICAgZnJhY3Rpb24gPSBtYXRjaFs3XS5zbGljZSgwLCAzKTtcbiAgICB3aGlsZSAoZnJhY3Rpb24ubGVuZ3RoIDwgMykgeyAvLyBtaWxsaS1zZWNvbmRzXG4gICAgICBmcmFjdGlvbiArPSAnMCc7XG4gICAgfVxuICAgIGZyYWN0aW9uID0gK2ZyYWN0aW9uO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXIgWzExXSB0el9taW51dGVcblxuICBpZiAobWF0Y2hbOV0pIHtcbiAgICB0el9ob3VyID0gKyhtYXRjaFsxMF0pO1xuICAgIHR6X21pbnV0ZSA9ICsobWF0Y2hbMTFdIHx8IDApO1xuICAgIGRlbHRhID0gKHR6X2hvdXIgKiA2MCArIHR6X21pbnV0ZSkgKiA2MDAwMDsgLy8gZGVsdGEgaW4gbWlsaS1zZWNvbmRzXG4gICAgaWYgKG1hdGNoWzldID09PSAnLScpIGRlbHRhID0gLWRlbHRhO1xuICB9XG5cbiAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbikpO1xuXG4gIGlmIChkZWx0YSkgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpIC0gZGVsdGEpO1xuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sVGltZXN0YW1wKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvSVNPU3RyaW5nKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sVGltZXN0YW1wLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAsXG4gIGluc3RhbmNlT2Y6IERhdGUsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbFRpbWVzdGFtcFxufSk7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IEplcmVteSBXaGl0bG9ja1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGdsID0gcmVxdWlyZSgnZ3JhcGhsaWInKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIFBhdGhMb2FkZXIgPSByZXF1aXJlKCdwYXRoLWxvYWRlcicpO1xudmFyIHFzID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKTtcbnZhciBzbGFzaCA9IHJlcXVpcmUoJ3NsYXNoJyk7XG52YXIgVVJJID0gcmVxdWlyZSgndXJpLWpzJyk7XG5cbnZhciBiYWRQdHJUb2tlblJlZ2V4ID0gL34oPzpbXjAxXXwkKS9nO1xudmFyIHJlbW90ZUNhY2hlID0ge307XG52YXIgcmVtb3RlVHlwZXMgPSBbJ3JlbGF0aXZlJywgJ3JlbW90ZSddO1xudmFyIHJlbW90ZVVyaVR5cGVzID0gWydhYnNvbHV0ZScsICd1cmknXTtcbnZhciB1cmlEZXRhaWxzQ2FjaGUgPSB7fTtcblxuLy8gTG9hZCBwcm9taXNlcyBwb2x5ZmlsbCBpZiBuZWNlc3Nhcnlcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJykge1xuICByZXF1aXJlKCduYXRpdmUtcHJvbWlzZS1vbmx5Jyk7XG59XG5cbi8qIEludGVybmFsIEZ1bmN0aW9ucyAqL1xuXG5mdW5jdGlvbiBjb21iaW5lUXVlcnlQYXJhbXMgKHFzMSwgcXMyKSB7XG4gIHZhciBjb21iaW5lZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIG1lcmdlUXVlcnlQYXJhbXMgKG9iaikge1xuICAgIF8uZm9yT3duKG9iaiwgZnVuY3Rpb24gKHZhbCwga2V5KSB7XG4gICAgICBjb21iaW5lZFtrZXldID0gdmFsO1xuICAgIH0pO1xuICB9XG5cbiAgbWVyZ2VRdWVyeVBhcmFtcyhxcy5wYXJzZShxczEgfHwgJycpKTtcbiAgbWVyZ2VRdWVyeVBhcmFtcyhxcy5wYXJzZShxczIgfHwgJycpKTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoY29tYmluZWQpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHFzLnN0cmluZ2lmeShjb21iaW5lZCk7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVVUklzICh1MSwgdTIpIHtcbiAgLy8gQ29udmVydCBXaW5kb3dzIHBhdGhzXG4gIGlmIChfLmlzU3RyaW5nKHUxKSkge1xuICAgIHUxID0gc2xhc2godTEpO1xuICB9XG5cbiAgaWYgKF8uaXNTdHJpbmcodTIpKSB7XG4gICAgdTIgPSBzbGFzaCh1Mik7XG4gIH1cblxuICB2YXIgdTJEZXRhaWxzID0gcGFyc2VVUkkoXy5pc1VuZGVmaW5lZCh1MikgPyAnJyA6IHUyKTtcbiAgdmFyIHUxRGV0YWlscztcbiAgdmFyIGNvbWJpbmVkRGV0YWlscztcblxuICBpZiAocmVtb3RlVXJpVHlwZXMuaW5kZXhPZih1MkRldGFpbHMucmVmZXJlbmNlKSA+IC0xKSB7XG4gICAgY29tYmluZWREZXRhaWxzID0gdTJEZXRhaWxzO1xuICB9IGVsc2Uge1xuICAgIHUxRGV0YWlscyA9IF8uaXNVbmRlZmluZWQodTEpID8gdW5kZWZpbmVkIDogcGFyc2VVUkkodTEpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHUxRGV0YWlscykpIHtcbiAgICAgIGNvbWJpbmVkRGV0YWlscyA9IHUxRGV0YWlscztcblxuICAgICAgLy8gSm9pbiB0aGUgcGF0aHNcbiAgICAgIGNvbWJpbmVkRGV0YWlscy5wYXRoID0gc2xhc2gocGF0aC5qb2luKHUxRGV0YWlscy5wYXRoLCB1MkRldGFpbHMucGF0aCkpO1xuXG4gICAgICAvLyBKb2luIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgIGNvbWJpbmVkRGV0YWlscy5xdWVyeSA9IGNvbWJpbmVRdWVyeVBhcmFtcyh1MURldGFpbHMucXVlcnksIHUyRGV0YWlscy5xdWVyeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJpbmVkRGV0YWlscyA9IHUyRGV0YWlscztcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGZyYWdtZW50XG4gIGNvbWJpbmVkRGV0YWlscy5mcmFnbWVudCA9IHVuZGVmaW5lZDtcblxuICAvLyBGb3IgcmVsYXRpdmUgVVJJcywgYWRkIGJhY2sgdGhlICcuLicgc2luY2UgaXQgd2FzIHJlbW92ZWQgYWJvdmVcbiAgcmV0dXJuIChyZW1vdGVVcmlUeXBlcy5pbmRleE9mKGNvbWJpbmVkRGV0YWlscy5yZWZlcmVuY2UpID09PSAtMSAmJlxuICAgICAgICAgIGNvbWJpbmVkRGV0YWlscy5wYXRoLmluZGV4T2YoJy4uLycpID09PSAwID8gJy4uLycgOiAnJykgKyBVUkkuc2VyaWFsaXplKGNvbWJpbmVkRGV0YWlscyk7XG59XG5cbmZ1bmN0aW9uIGZpbmRBbmNlc3RvcnMgKG9iaiwgcGF0aCkge1xuICB2YXIgYW5jZXN0b3JzID0gW107XG4gIHZhciBub2RlO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBub2RlID0gb2JqO1xuXG4gICAgcGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCAtIDEpLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgICAgaWYgKHNlZyBpbiBub2RlKSB7XG4gICAgICAgIG5vZGUgPSBub2RlW3NlZ107XG5cbiAgICAgICAgYW5jZXN0b3JzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYW5jZXN0b3JzO1xufVxuXG5mdW5jdGlvbiBpc1JlbW90ZSAocmVmRGV0YWlscykge1xuICByZXR1cm4gcmVtb3RlVHlwZXMuaW5kZXhPZihnZXRSZWZUeXBlKHJlZkRldGFpbHMpKSA+IC0xO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkIChyZWZEZXRhaWxzKSB7XG4gIHJldHVybiBfLmlzVW5kZWZpbmVkKHJlZkRldGFpbHMuZXJyb3IpICYmIHJlZkRldGFpbHMudHlwZSAhPT0gJ2ludmFsaWQnO1xufVxuXG5mdW5jdGlvbiBmaW5kVmFsdWUgKG9iaiwgcGF0aCkge1xuICB2YXIgdmFsdWUgPSBvYmo7XG5cbiAgLy8gVXNpbmcgdGhpcyBtYW51YWwgYXBwcm9hY2ggaW5zdGVhZCBvZiBfLmdldCBzaW5jZSB3ZSBoYXZlIHRvIGRlY29kZVVSSSB0aGUgc2VnbWVudHNcbiAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uIChzZWcpIHtcbiAgICBpZiAoc2VnIGluIHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlW3NlZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKCdKU09OIFBvaW50ZXIgcG9pbnRzIHRvIG1pc3NpbmcgbG9jYXRpb246ICcgKyBwYXRoVG9QdHIocGF0aCkpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVJlZktleXMgKHJlZikge1xuICByZXR1cm4gT2JqZWN0LmtleXMocmVmKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkgIT09ICckcmVmJztcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFJlZlR5cGUgKHJlZkRldGFpbHMpIHtcbiAgdmFyIHR5cGU7XG5cbiAgLy8gQ29udmVydCB0aGUgVVJJIHJlZmVyZW5jZSB0byBvbmUgb2Ygb3VyIHR5cGVzXG4gIHN3aXRjaCAocmVmRGV0YWlscy51cmlEZXRhaWxzLnJlZmVyZW5jZSkge1xuICBjYXNlICdhYnNvbHV0ZSc6XG4gIGNhc2UgJ3VyaSc6XG4gICAgdHlwZSA9ICdyZW1vdGUnO1xuICAgIGJyZWFrO1xuICBjYXNlICdzYW1lLWRvY3VtZW50JzpcbiAgICB0eXBlID0gJ2xvY2FsJztcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0eXBlID0gcmVmRGV0YWlscy51cmlEZXRhaWxzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBnZXRSZW1vdGVEb2N1bWVudCAodXJsLCBvcHRpb25zKSB7XG4gIHZhciBjYWNoZUVudHJ5ID0gcmVtb3RlQ2FjaGVbdXJsXTtcbiAgdmFyIGFsbFRhc2tzID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHZhciBsb2FkZXJPcHRpb25zID0gXy5jbG9uZURlZXAob3B0aW9ucy5sb2FkZXJPcHRpb25zIHx8IHt9KTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChjYWNoZUVudHJ5KSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIGNvbnRlbnQgcHJvY2Vzc29yLCBkZWZhdWx0IHRvIHByb2Nlc3NpbmcgdGhlIHJhdyByZXNwb25zZSBhcyBKU09OXG4gICAgaWYgKF8uaXNVbmRlZmluZWQobG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCkpIHtcbiAgICAgIGxvYWRlck9wdGlvbnMucHJvY2Vzc0NvbnRlbnQgPSBmdW5jdGlvbiAocmVzLCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIEpTT04ucGFyc2UocmVzLnRleHQpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQXR0ZW1wdCB0byBsb2FkIHRoZSByZXNvdXJjZSB1c2luZyBwYXRoLWxvYWRlclxuICAgIGFsbFRhc2tzID0gUGF0aExvYWRlci5sb2FkKGRlY29kZVVSSSh1cmwpLCBsb2FkZXJPcHRpb25zKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVcbiAgICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHJlbW90ZUNhY2hlW3VybF0gPSB7XG4gICAgICAgICAgdmFsdWU6IHJlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmVtb3RlQ2FjaGVbdXJsXSA9IHtcbiAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgdmVyc2lvblxuICAgIGFsbFRhc2tzID0gYWxsVGFza3MudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoXy5pc0Vycm9yKGNhY2hlRW50cnkuZXJyb3IpKSB7XG4gICAgICAgIHRocm93IGNhY2hlRW50cnkuZXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2FjaGVFbnRyeS52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJldHVybiBhIGNsb25lZCB2ZXJzaW9uIHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBjYWNoZVxuICBhbGxUYXNrcyA9IGFsbFRhc2tzLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgIHJldHVybiBfLmNsb25lRGVlcChyZXMpO1xuICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59XG5cbmZ1bmN0aW9uIGlzUmVmTGlrZSAob2JqLCB0aHJvd1dpdGhEZXRhaWxzKSB7XG4gIHZhciByZWZMaWtlID0gdHJ1ZTtcblxuICB0cnkge1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KG9iaikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb2JqIGlzIG5vdCBhbiBPYmplY3QnKTtcbiAgICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKG9iai4kcmVmKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvYmouJHJlZiBpcyBub3QgYSBTdHJpbmcnKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0aHJvd1dpdGhEZXRhaWxzKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcmVmTGlrZSA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHJlZkxpa2U7XG59XG5cbmZ1bmN0aW9uIG1ha2VBYnNvbHV0ZSAobG9jYXRpb24pIHtcbiAgaWYgKGxvY2F0aW9uLmluZGV4T2YoJzovLycpID09PSAtMSAmJiAhcGF0aC5pc0Fic29sdXRlKGxvY2F0aW9uKSkge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbG9jYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhdGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVmRmlsdGVyIChvcHRpb25zKSB7XG4gIHZhciByZWZGaWx0ZXI7XG4gIHZhciB2YWxpZFR5cGVzO1xuXG4gIGlmIChfLmlzQXJyYXkob3B0aW9ucy5maWx0ZXIpIHx8IF8uaXNTdHJpbmcob3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgdmFsaWRUeXBlcyA9IF8uaXNTdHJpbmcob3B0aW9ucy5maWx0ZXIpID8gW29wdGlvbnMuZmlsdGVyXSA6IG9wdGlvbnMuZmlsdGVyO1xuICAgIHJlZkZpbHRlciA9IGZ1bmN0aW9uIChyZWZEZXRhaWxzKSB7XG4gICAgICAvLyBDaGVjayB0aGUgZXhhY3QgdHlwZSBvciBmb3IgaW52YWxpZCBVUklzLCBjaGVjayBpdHMgb3JpZ2luYWwgdHlwZVxuICAgICAgcmV0dXJuIHZhbGlkVHlwZXMuaW5kZXhPZihyZWZEZXRhaWxzLnR5cGUpID4gLTEgfHwgdmFsaWRUeXBlcy5pbmRleE9mKGdldFJlZlR5cGUocmVmRGV0YWlscykpID4gLTE7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChfLmlzRnVuY3Rpb24ob3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgcmVmRmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmZpbHRlcikpIHtcbiAgICByZWZGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCBwYXRoKSB7XG4gICAgcmV0dXJuIChyZWZEZXRhaWxzLnR5cGUgIT09ICdpbnZhbGlkJyB8fCBvcHRpb25zLmluY2x1ZGVJbnZhbGlkID09PSB0cnVlKSAmJiByZWZGaWx0ZXIocmVmRGV0YWlscywgcGF0aCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG1ha2VTdWJEb2NQYXRoIChvcHRpb25zKSB7XG4gIHZhciBzdWJEb2NQYXRoO1xuXG4gIGlmIChfLmlzQXJyYXkob3B0aW9ucy5zdWJEb2NQYXRoKSkge1xuICAgIHN1YkRvY1BhdGggPSBvcHRpb25zLnN1YkRvY1BhdGg7XG4gIH0gZWxzZSBpZiAoXy5pc1N0cmluZyhvcHRpb25zLnN1YkRvY1BhdGgpKSB7XG4gICAgc3ViRG9jUGF0aCA9IHBhdGhGcm9tUHRyKG9wdGlvbnMuc3ViRG9jUGF0aCk7XG4gIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLnN1YkRvY1BhdGgpKSB7XG4gICAgc3ViRG9jUGF0aCA9IFtdO1xuICB9XG5cbiAgcmV0dXJuIHN1YkRvY1BhdGg7XG59XG5cbmZ1bmN0aW9uIG1hcmtNaXNzaW5nIChyZWZEZXRhaWxzLCBlcnIpIHtcbiAgcmVmRGV0YWlscy5lcnJvciA9IGVyci5tZXNzYWdlO1xuICByZWZEZXRhaWxzLm1pc3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVSSSAodXJpKSB7XG4gIC8vIFdlIGRlY29kZSBmaXJzdCB0byBhdm9pZCBkb3VibHkgZW5jb2RpbmdcbiAgcmV0dXJuIFVSSS5wYXJzZSh1cmkpO1xufVxuXG5mdW5jdGlvbiBidWlsZFJlZk1vZGVsIChkb2N1bWVudCwgb3B0aW9ucywgbWV0YWRhdGEpIHtcbiAgdmFyIGFsbFRhc2tzID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHZhciBzdWJEb2NQdHIgPSBwYXRoVG9QdHIob3B0aW9ucy5zdWJEb2NQYXRoKTtcbiAgdmFyIGFic0xvY2F0aW9uID0gbWFrZUFic29sdXRlKG9wdGlvbnMubG9jYXRpb24pO1xuICB2YXIgcmVsYXRpdmVCYXNlID0gcGF0aC5kaXJuYW1lKG9wdGlvbnMubG9jYXRpb24pO1xuICB2YXIgZG9jRGVwS2V5ID0gYWJzTG9jYXRpb24gKyBzdWJEb2NQdHI7XG4gIHZhciByZWZzO1xuICB2YXIgck9wdGlvbnM7XG5cbiAgLy8gU3RvcmUgdGhlIGRvY3VtZW50IGluIHRoZSBtZXRhZGF0YSBpZiBuZWNlc3NhcnlcbiAgaWYgKF8uaXNVbmRlZmluZWQobWV0YWRhdGEuZG9jc1thYnNMb2NhdGlvbl0pKSB7XG4gICAgbWV0YWRhdGEuZG9jc1thYnNMb2NhdGlvbl0gPSBkb2N1bWVudDtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgc3RvcmVkIGZvciB0aGUgbG9jYXRpb24rc3ViRG9jUGF0aCwgd2UndmUgbmV2ZXIgc2VlbiBpdCBiZWZvcmUgYW5kIHdpbGwgcHJvY2VzcyBpdFxuICBpZiAoXy5pc1VuZGVmaW5lZChtZXRhZGF0YS5kZXBzW2RvY0RlcEtleV0pKSB7XG4gICAgbWV0YWRhdGEuZGVwc1tkb2NEZXBLZXldID0ge307XG5cbiAgICAvLyBGaW5kIHRoZSByZWZlcmVuY2VzIGJhc2VkIG9uIHRoZSBvcHRpb25zXG4gICAgcmVmcyA9IGZpbmRSZWZzKGRvY3VtZW50LCBvcHRpb25zKTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVmZXJlbmNlcyBhbmQgcHJvY2Vzc1xuICAgIF8uZm9yT3duKHJlZnMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCByZWZQdHIpIHtcbiAgICAgIHZhciByZWZLZXkgPSBtYWtlQWJzb2x1dGUob3B0aW9ucy5sb2NhdGlvbikgKyByZWZQdHI7XG4gICAgICB2YXIgcmVmZEtleSA9IHJlZkRldGFpbHMucmVmZElkID0gZGVjb2RlVVJJKG1ha2VBYnNvbHV0ZShpc1JlbW90ZShyZWZEZXRhaWxzKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZVVSSXMocmVsYXRpdmVCYXNlLCByZWZEZXRhaWxzLnVyaSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9jYXRpb24pICsgJyMnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWZEZXRhaWxzLnVyaS5pbmRleE9mKCcjJykgPiAtMSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZEZXRhaWxzLnVyaS5zcGxpdCgnIycpWzFdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKSk7XG5cbiAgICAgIC8vIFJlY29yZCByZWZlcmVuY2UgbWV0YWRhdGFcbiAgICAgIG1ldGFkYXRhLnJlZnNbcmVmS2V5XSA9IHJlZkRldGFpbHM7XG5cbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIGludmFsaWQgcmVmZXJlbmNlc1xuICAgICAgaWYgKCFpc1ZhbGlkKHJlZkRldGFpbHMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUmVjb3JkIHRoZSBmdWxseS1xdWFsaWZpZWQgVVJJXG4gICAgICByZWZEZXRhaWxzLmZxVVJJID0gcmVmZEtleTtcblxuICAgICAgLy8gUmVjb3JkIGRlcGVuZGVuY3kgKHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIHN1Yi1kb2N1bWVudCBwYXRoKVxuICAgICAgbWV0YWRhdGEuZGVwc1tkb2NEZXBLZXldW3JlZlB0ciA9PT0gc3ViRG9jUHRyID8gJyMnIDogcmVmUHRyLnJlcGxhY2Uoc3ViRG9jUHRyICsgJy8nLCAnIy8nKV0gPSByZWZkS2V5O1xuXG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBkaXJlY3RseS1jaXJjdWxhciByZWZlcmVuY2VzICh0byBhbiBhbmNlc3RvciBvciBzZWxmKVxuICAgICAgaWYgKHJlZktleS5pbmRleE9mKHJlZmRLZXkgKyAnLycpID09PSAwKSB7XG4gICAgICAgIHJlZkRldGFpbHMuY2lyY3VsYXIgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJlcGFyZSB0aGUgb3B0aW9ucyBmb3Igc3Vic2VxdWVudCBwcm9jZXNzRG9jdW1lbnQgY2FsbHNcbiAgICAgIHJPcHRpb25zID0gXy5jbG9uZURlZXAob3B0aW9ucyk7XG5cbiAgICAgIHJPcHRpb25zLnN1YkRvY1BhdGggPSBfLmlzVW5kZWZpbmVkKHJlZkRldGFpbHMudXJpRGV0YWlscy5mcmFnbWVudCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbVB0cihkZWNvZGVVUkkocmVmRGV0YWlscy51cmlEZXRhaWxzLmZyYWdtZW50KSk7XG5cbiAgICAgIC8vIFJlc29sdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgaWYgKGlzUmVtb3RlKHJlZkRldGFpbHMpKSB7XG4gICAgICAgIC8vIERlbGV0ZSBmaWx0ZXIub3B0aW9ucyBiZWNhdXNlIGFsbCByZW1vdGUgcmVmZXJlbmNlcyBzaG91bGQgYmUgZnVsbHkgcmVzb2x2ZWRcbiAgICAgICAgZGVsZXRlIHJPcHRpb25zLmZpbHRlcjtcbiAgICAgICAgLy8gVGhlIG5ldyBsb2NhdGlvbiBiZWluZyByZWZlcmVuY2VkXG4gICAgICAgIHJPcHRpb25zLmxvY2F0aW9uID0gcmVmZEtleS5zcGxpdCgnIycpWzBdO1xuXG4gICAgICAgIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAobk1ldGFkYXRhLCBuT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIHJBYnNMb2NhdGlvbiA9IG1ha2VBYnNvbHV0ZShuT3B0aW9ucy5sb2NhdGlvbik7XG4gICAgICAgICAgICAgIHZhciByRG9jID0gbk1ldGFkYXRhLmRvY3NbckFic0xvY2F0aW9uXTtcblxuICAgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChyRG9jKSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gY2FjaGUgc28gd2UgbXVzdCByZXRyaWV2ZSB0aGUgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UmVtb3RlRG9jdW1lbnQockFic0xvY2F0aW9uLCBuT3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSByZXNwb25zZSBpbiB0aGUgZG9jdW1lbnQgY2FjaGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbk1ldGFkYXRhLmRvY3NbckFic0xvY2F0aW9uXSA9IGVycjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGVycm9yIHRvIGFsbG93IHRoZSBzdWJzZXF1ZW50IGB0aGVuYCB0byBoYW5kbGUgYm90aCBlcnJvcnMgYW5kIHN1Y2Nlc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IHJldHJpZXZlZCAob3IgYXR0ZW1wdGVkIHRvKSB0aGUgZG9jdW1lbnQgYW5kIHNob3VsZCB1c2UgdGhlIGNhY2hlZCB2ZXJzaW9uIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIG1ldGFkYXRhIHNpbmNlIGl0IGNvdWxkIGFscmVhZHkgYmUgcHJvY2Vzc2VkIHNvbWUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByRG9jO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfShtZXRhZGF0YSwgck9wdGlvbnMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIHJlbW90ZSBkb2N1bWVudCBvciB0aGUgcmVmZXJlbmNlZCBwb3J0aW9uIG9mIHRoZSBsb2NhbCBkb2N1bWVudFxuICAgICAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgICAgICAudGhlbihmdW5jdGlvbiAobk1ldGFkYXRhLCBuT3B0aW9ucywgblJlZkRldGFpbHMpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGRvYykge1xuICAgICAgICAgICAgaWYgKF8uaXNFcnJvcihkb2MpKSB7XG4gICAgICAgICAgICAgIG1hcmtNaXNzaW5nKG5SZWZEZXRhaWxzLCBkb2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gV3JhcHBlZCBpbiBhIHRyeS9jYXRjaCBzaW5jZSBmaW5kUmVmcyB0aHJvd3NcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRSZWZNb2RlbChkb2MsIG5PcHRpb25zLCBuTWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgICAgICBtYXJrTWlzc2luZyhuUmVmRGV0YWlscywgZXJyKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBtYXJrTWlzc2luZyhuUmVmRGV0YWlscywgZXJyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0obWV0YWRhdGEsIHJPcHRpb25zLCByZWZEZXRhaWxzKSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYWxsVGFza3M7XG59XG5cbmZ1bmN0aW9uIHNldFZhbHVlIChvYmosIHJlZlBhdGgsIHZhbHVlKSB7XG4gIGZpbmRWYWx1ZShvYmosIHJlZlBhdGguc2xpY2UoMCwgcmVmUGF0aC5sZW5ndGggLSAxKSlbcmVmUGF0aFtyZWZQYXRoLmxlbmd0aCAtIDFdXSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiB3YWxrIChhbmNlc3RvcnMsIG5vZGUsIHBhdGgsIGZuKSB7XG4gIHZhciBwcm9jZXNzQ2hpbGRyZW4gPSB0cnVlO1xuXG4gIGZ1bmN0aW9uIHdhbGtJdGVtIChpdGVtLCBzZWdtZW50KSB7XG4gICAgcGF0aC5wdXNoKHNlZ21lbnQpO1xuICAgIHdhbGsoYW5jZXN0b3JzLCBpdGVtLCBwYXRoLCBmbik7XG4gICAgcGF0aC5wb3AoKTtcbiAgfVxuXG4gIC8vIENhbGwgdGhlIGl0ZXJhdGVlXG4gIGlmIChfLmlzRnVuY3Rpb24oZm4pKSB7XG4gICAgcHJvY2Vzc0NoaWxkcmVuID0gZm4oYW5jZXN0b3JzLCBub2RlLCBwYXRoKTtcbiAgfVxuXG4gIC8vIFdlIGRvIG5vdCBwcm9jZXNzIGNpcmN1bGFyIG9iamVjdHMgYWdhaW5cbiAgaWYgKGFuY2VzdG9ycy5pbmRleE9mKG5vZGUpID09PSAtMSkge1xuICAgIGFuY2VzdG9ycy5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKHByb2Nlc3NDaGlsZHJlbiAhPT0gZmFsc2UpIHtcbiAgICAgIGlmIChfLmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgbm9kZS5mb3JFYWNoKGZ1bmN0aW9uIChtZW1iZXIsIGluZGV4KSB7XG4gICAgICAgICAgd2Fsa0l0ZW0obWVtYmVyLCBpbmRleC50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3Qobm9kZSkpIHtcbiAgICAgICAgXy5mb3JPd24obm9kZSwgZnVuY3Rpb24gKGNOb2RlLCBrZXkpIHtcbiAgICAgICAgICB3YWxrSXRlbShjTm9kZSwga2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYW5jZXN0b3JzLnBvcCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3B0aW9ucyAob3B0aW9ucywgb2JqKSB7XG4gIHZhciBsb2NhdGlvblBhcnRzO1xuICB2YXIgc2hvdWxkRGVjb2RlO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMpKSB7XG4gICAgLy8gRGVmYXVsdCB0byBhbiBlbXB0eSBvcHRpb25zIG9iamVjdFxuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDbG9uZSB0aGUgb3B0aW9ucyBzbyB3ZSBkbyBub3QgYWx0ZXIgdGhlIG9uZXMgcGFzc2VkIGluXG4gICAgb3B0aW9ucyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKCFfLmlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIE9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMucmVzb2x2ZUNpcmN1bGFycykgJiZcbiAgICAgICAgICAgICAhXy5pc0Jvb2xlYW4ob3B0aW9ucy5yZXNvbHZlQ2lyY3VsYXJzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMucmVzb2x2ZUNpcmN1bGFycyBtdXN0IGJlIGEgQm9vbGVhbicpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuZmlsdGVyKSAmJlxuICAgICAgICAgICAgICFfLmlzQXJyYXkob3B0aW9ucy5maWx0ZXIpICYmXG4gICAgICAgICAgICAgIV8uaXNGdW5jdGlvbihvcHRpb25zLmZpbHRlcikgJiZcbiAgICAgICAgICAgICAhXy5pc1N0cmluZyhvcHRpb25zLmZpbHRlcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmZpbHRlciBtdXN0IGJlIGFuIEFycmF5LCBhIEZ1bmN0aW9uIG9mIGEgU3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5pbmNsdWRlSW52YWxpZCkgJiZcbiAgICAgICAgICAgICAhXy5pc0Jvb2xlYW4ob3B0aW9ucy5pbmNsdWRlSW52YWxpZCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmluY2x1ZGVJbnZhbGlkIG11c3QgYmUgYSBCb29sZWFuJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5sb2NhdGlvbikgJiZcbiAgICAgICAgICAgICAhXy5pc1N0cmluZyhvcHRpb25zLmxvY2F0aW9uKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMubG9jYXRpb24gbXVzdCBiZSBhIFN0cmluZycpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMucmVmUHJlUHJvY2Vzc29yKSAmJlxuICAgICAgICAgICAgICFfLmlzRnVuY3Rpb24ob3B0aW9ucy5yZWZQcmVQcm9jZXNzb3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5yZWZQcmVQcm9jZXNzb3IgbXVzdCBiZSBhIEZ1bmN0aW9uJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5yZWZQb3N0UHJvY2Vzc29yKSAmJlxuICAgICAgICAgICAgICFfLmlzRnVuY3Rpb24ob3B0aW9ucy5yZWZQb3N0UHJvY2Vzc29yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMucmVmUG9zdFByb2Nlc3NvciBtdXN0IGJlIGEgRnVuY3Rpb24nKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLnN1YkRvY1BhdGgpICYmXG4gICAgICAgICAgICAgIV8uaXNBcnJheShvcHRpb25zLnN1YkRvY1BhdGgpICYmXG4gICAgICAgICAgICAgIWlzUHRyKG9wdGlvbnMuc3ViRG9jUGF0aCkpIHtcbiAgICAvLyBJZiBhIHBvaW50ZXIgaXMgcHJvdmlkZWQsIHRocm93IGFuIGVycm9yIGlmIGl0J3Mgbm90IHRoZSBwcm9wZXIgdHlwZVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuc3ViRG9jUGF0aCBtdXN0IGJlIGFuIEFycmF5IG9mIHBhdGggc2VnbWVudHMgb3IgYSB2YWxpZCBKU09OIFBvaW50ZXInKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gZmFsc2UgZm9yIGFsbG93aW5nIGNpcmN1bGFyc1xuICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLnJlc29sdmVDaXJjdWxhcnMpKSB7XG4gICAgb3B0aW9ucy5yZXNvbHZlQ2lyY3VsYXJzID0gZmFsc2U7XG4gIH1cblxuICBvcHRpb25zLmZpbHRlciA9IG1ha2VSZWZGaWx0ZXIob3B0aW9ucyk7XG5cbiAgLy8gb3B0aW9ucy5sb2NhdGlvbiBpcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgeWV0IGJ1dCB3aWxsIGJlIHdoZW4gSXNzdWUgODggaXMgY29tcGxldGVcbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5sb2NhdGlvbikpIHtcbiAgICBvcHRpb25zLmxvY2F0aW9uID0gbWFrZUFic29sdXRlKCcuL3Jvb3QuanNvbicpO1xuICB9XG5cbiAgbG9jYXRpb25QYXJ0cyA9IG9wdGlvbnMubG9jYXRpb24uc3BsaXQoJyMnKTtcblxuICAvLyBJZiBvcHRpb25zLmxvY2F0aW9uIGNvbnRhaW5zIGEgZnJhZ21lbnQsIHR1cm4gaXQgaW50byBhbiBvcHRpb25zLnN1YkRvY1BhdGhcbiAgaWYgKGxvY2F0aW9uUGFydHMubGVuZ3RoID4gMSkge1xuICAgIG9wdGlvbnMuc3ViRG9jUGF0aCA9ICcjJyArIGxvY2F0aW9uUGFydHNbMV07XG4gIH1cblxuICBzaG91bGREZWNvZGUgPSBkZWNvZGVVUkkob3B0aW9ucy5sb2NhdGlvbikgPT09IG9wdGlvbnMubG9jYXRpb247XG5cbiAgLy8gSnVzdCB0byBiZSBzYWZlLCByZW1vdmUgYW55IGFjY2lkZW50YWwgZnJhZ21lbnQgYXMgaXQgd291bGQgYnJlYWsgdGhpbmdzXG4gIG9wdGlvbnMubG9jYXRpb24gPSBjb21iaW5lVVJJcyhvcHRpb25zLmxvY2F0aW9uLCB1bmRlZmluZWQpO1xuXG4gIC8vIElmIHRoZSBsb2NhdGlvbiB3YXMgbm90IGVuY29kZWQsIG1la2Ugc3VyZSBpdCdzIG5vdCB3aGVuIHdlIGdldCBpdCBiYWNrIChJc3N1ZSAjMTM4KVxuICBpZiAoc2hvdWxkRGVjb2RlKSB7XG4gICAgb3B0aW9ucy5sb2NhdGlvbiA9IGRlY29kZVVSSShvcHRpb25zLmxvY2F0aW9uKTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgc3ViRG9jUGF0aCB0byBhdm9pZCBldmVyeW9uZSBlbHNlIGhhdmluZyB0byBjb21wdXRlIGl0XG4gIG9wdGlvbnMuc3ViRG9jUGF0aCA9IG1ha2VTdWJEb2NQYXRoKG9wdGlvbnMpO1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChvYmopKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZpbmRWYWx1ZShvYmosIG9wdGlvbnMuc3ViRG9jUGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnIubWVzc2FnZSA9IGVyci5tZXNzYWdlLnJlcGxhY2UoJ0pTT04gUG9pbnRlcicsICdvcHRpb25zLnN1YkRvY1BhdGgnKTtcblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVQYXRoIChwYXRoKSB7XG4gIGlmICghXy5pc0FycmF5KHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGF0aCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICByZXR1cm4gcGF0aC5tYXAoZnVuY3Rpb24gKHNlZykge1xuICAgIGlmICghXy5pc1N0cmluZyhzZWcpKSB7XG4gICAgICBzZWcgPSBKU09OLnN0cmluZ2lmeShzZWcpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWcucmVwbGFjZSgvfjEvZywgJy8nKS5yZXBsYWNlKC9+MC9nLCAnficpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZW5jb2RlUGF0aCAocGF0aCkge1xuICBpZiAoIV8uaXNBcnJheShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhdGggbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGgubWFwKGZ1bmN0aW9uIChzZWcpIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcoc2VnKSkge1xuICAgICAgc2VnID0gSlNPTi5zdHJpbmdpZnkoc2VnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VnLnJlcGxhY2UoL34vZywgJ34wJykucmVwbGFjZSgvXFwvL2csICd+MScpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlZnMgKG9iaiwgb3B0aW9ucykge1xuICB2YXIgcmVmcyA9IHt9O1xuXG4gIC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBkb2N1bWVudFxuICBpZiAoIV8uaXNBcnJheShvYmopICYmICFfLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvYmogbXVzdCBiZSBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIG9wdGlvbnNcbiAgb3B0aW9ucyA9IHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zLCBvYmopO1xuXG4gIC8vIFdhbGsgdGhlIGRvY3VtZW50IChvciBzdWIgZG9jdW1lbnQpIGFuZCBmaW5kIGFsbCBKU09OIFJlZmVyZW5jZXNcbiAgd2FsayhmaW5kQW5jZXN0b3JzKG9iaiwgb3B0aW9ucy5zdWJEb2NQYXRoKSxcbiAgICAgICBmaW5kVmFsdWUob2JqLCBvcHRpb25zLnN1YkRvY1BhdGgpLFxuICAgICAgIF8uY2xvbmVEZWVwKG9wdGlvbnMuc3ViRG9jUGF0aCksXG4gICAgICAgZnVuY3Rpb24gKGFuY2VzdG9ycywgbm9kZSwgcGF0aCkge1xuICAgICAgICAgdmFyIHByb2Nlc3NDaGlsZHJlbiA9IHRydWU7XG4gICAgICAgICB2YXIgcmVmRGV0YWlscztcbiAgICAgICAgIHZhciByZWZQdHI7XG5cbiAgICAgICAgIGlmIChpc1JlZkxpa2Uobm9kZSkpIHtcbiAgICAgICAgICAgLy8gUHJlLXByb2Nlc3MgdGhlIG5vZGUgd2hlbiBuZWNlc3NhcnlcbiAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMucmVmUHJlUHJvY2Vzc29yKSkge1xuICAgICAgICAgICAgIG5vZGUgPSBvcHRpb25zLnJlZlByZVByb2Nlc3NvcihfLmNsb25lRGVlcChub2RlKSwgcGF0aCk7XG4gICAgICAgICAgIH1cblxuICAgICAgICAgICByZWZEZXRhaWxzID0gZ2V0UmVmRGV0YWlscyhub2RlKTtcblxuICAgICAgICAgICAvLyBQb3N0LXByb2Nlc3MgdGhlIHJlZmVyZW5jZSBkZXRhaWxzXG4gICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLnJlZlBvc3RQcm9jZXNzb3IpKSB7XG4gICAgICAgICAgICAgcmVmRGV0YWlscyA9IG9wdGlvbnMucmVmUG9zdFByb2Nlc3NvcihyZWZEZXRhaWxzLCBwYXRoKTtcbiAgICAgICAgICAgfVxuXG4gICAgICAgICAgIGlmIChvcHRpb25zLmZpbHRlcihyZWZEZXRhaWxzLCBwYXRoKSkge1xuICAgICAgICAgICAgIHJlZlB0ciA9IHBhdGhUb1B0cihwYXRoKTtcblxuICAgICAgICAgICAgIHJlZnNbcmVmUHRyXSA9IHJlZkRldGFpbHM7XG4gICAgICAgICAgIH1cblxuICAgICAgICAgICAvLyBXaGVuZXZlciBhIEpTT04gUmVmZXJlbmNlIGhhcyBleHRyYSBjaGlsZHJlbiwgaXRzIGNoaWxkcmVuIHNob3VsZCBub3QgYmUgcHJvY2Vzc2VkLlxuICAgICAgICAgICAvLyAgIFNlZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcGJyeWFuLXp5cC1qc29uLXJlZi0wMyNzZWN0aW9uLTNcbiAgICAgICAgICAgaWYgKGdldEV4dHJhUmVmS2V5cyhub2RlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgcHJvY2Vzc0NoaWxkcmVuID0gZmFsc2U7XG4gICAgICAgICAgIH1cbiAgICAgICAgIH1cblxuICAgICAgICAgcmV0dXJuIHByb2Nlc3NDaGlsZHJlbjtcbiAgICAgICB9KTtcblxuICByZXR1cm4gcmVmcztcbn1cblxuZnVuY3Rpb24gZmluZFJlZnNBdCAobG9jYXRpb24sIG9wdGlvbnMpIHtcbiAgdmFyIGFsbFRhc2tzID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgICAgaWYgKCFfLmlzU3RyaW5nKGxvY2F0aW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdsb2NhdGlvbiBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgLy8gQWRkIHRoZSBsb2NhdGlvbiB0byB0aGUgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy92YWxpZGF0aW9uXG4gICAgICAgIG9wdGlvbnMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgb3B0aW9uc1xuICAgICAgb3B0aW9ucyA9IHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGdldFJlbW90ZURvY3VtZW50KG9wdGlvbnMubG9jYXRpb24sIG9wdGlvbnMpO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGNhY2hlRW50cnkgPSBfLmNsb25lRGVlcChyZW1vdGVDYWNoZVtvcHRpb25zLmxvY2F0aW9uXSk7XG4gICAgICB2YXIgY09wdGlvbnMgPSBfLmNsb25lRGVlcChvcHRpb25zKTtcbiAgICAgIHZhciB1cmlEZXRhaWxzID0gcGFyc2VVUkkob3B0aW9ucy5sb2NhdGlvbik7XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNhY2hlRW50cnkucmVmcykpIHtcbiAgICAgICAgLy8gRG8gbm90IGZpbHRlciBhbnkgcmVmZXJlbmNlcyBzbyB0aGUgY2FjaGUgaXMgY29tcGxldGVcbiAgICAgICAgZGVsZXRlIGNPcHRpb25zLmZpbHRlcjtcbiAgICAgICAgZGVsZXRlIGNPcHRpb25zLnN1YkRvY1BhdGg7XG5cbiAgICAgICAgY09wdGlvbnMuaW5jbHVkZUludmFsaWQgPSB0cnVlO1xuXG4gICAgICAgIHJlbW90ZUNhY2hlW29wdGlvbnMubG9jYXRpb25dLnJlZnMgPSBmaW5kUmVmcyhyZXMsIGNPcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHRoZSBmaWx0ZXIgb3B0aW9ucyBiYWNrXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIGNPcHRpb25zLmZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQodXJpRGV0YWlscy5mcmFnbWVudCkpIHtcbiAgICAgICAgY09wdGlvbnMuc3ViRG9jUGF0aCA9IHBhdGhGcm9tUHRyKGRlY29kZVVSSSh1cmlEZXRhaWxzLmZyYWdtZW50KSk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKHVyaURldGFpbHMuc3ViRG9jUGF0aCkpIHtcbiAgICAgICAgY09wdGlvbnMuc3ViRG9jUGF0aCA9IG9wdGlvbnMuc3ViRG9jUGF0aDtcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyB3aWxsIHVzZSB0aGUgY2FjaGUgc28gZG9uJ3Qgd29ycnkgYWJvdXQgY2FsbGluZyBpdCB0d2ljZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVmczogZmluZFJlZnMocmVzLCBjT3B0aW9ucyksXG4gICAgICAgIHZhbHVlOiByZXNcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgcmV0dXJuIGFsbFRhc2tzO1xufVxuXG5mdW5jdGlvbiBnZXRSZWZEZXRhaWxzIChvYmopIHtcbiAgdmFyIGRldGFpbHMgPSB7XG4gICAgZGVmOiBvYmpcbiAgfTtcbiAgdmFyIGNhY2hlS2V5O1xuICB2YXIgZXh0cmFLZXlzO1xuICB2YXIgdXJpRGV0YWlscztcblxuICB0cnkge1xuICAgIGlmIChpc1JlZkxpa2Uob2JqLCB0cnVlKSkge1xuICAgICAgY2FjaGVLZXkgPSBvYmouJHJlZjtcbiAgICAgIHVyaURldGFpbHMgPSB1cmlEZXRhaWxzQ2FjaGVbY2FjaGVLZXldO1xuXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1cmlEZXRhaWxzKSkge1xuICAgICAgICB1cmlEZXRhaWxzID0gdXJpRGV0YWlsc0NhY2hlW2NhY2hlS2V5XSA9IHBhcnNlVVJJKGNhY2hlS2V5KTtcbiAgICAgIH1cblxuICAgICAgZGV0YWlscy51cmkgPSBjYWNoZUtleTtcbiAgICAgIGRldGFpbHMudXJpRGV0YWlscyA9IHVyaURldGFpbHM7XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHVyaURldGFpbHMuZXJyb3IpKSB7XG4gICAgICAgIGRldGFpbHMudHlwZSA9IGdldFJlZlR5cGUoZGV0YWlscyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIEpTT04gUG9pbnRlclxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChbJyMnLCAnLyddLmluZGV4T2YoY2FjaGVLZXlbMF0pID4gLTEpIHtcbiAgICAgICAgICAgIGlzUHRyKGNhY2hlS2V5LCB0cnVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlS2V5LmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICAgICAgICBpc1B0cih1cmlEZXRhaWxzLmZyYWdtZW50LCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGRldGFpbHMuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBkZXRhaWxzLnR5cGUgPSAnaW52YWxpZCc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRldGFpbHMuZXJyb3IgPSBkZXRhaWxzLnVyaURldGFpbHMuZXJyb3I7XG4gICAgICAgIGRldGFpbHMudHlwZSA9ICdpbnZhbGlkJztcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgd2FybmluZ1xuICAgICAgZXh0cmFLZXlzID0gZ2V0RXh0cmFSZWZLZXlzKG9iaik7XG5cbiAgICAgIGlmIChleHRyYUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLndhcm5pbmcgPSAnRXh0cmEgSlNPTiBSZWZlcmVuY2UgcHJvcGVydGllcyB3aWxsIGJlIGlnbm9yZWQ6ICcgKyBleHRyYUtleXMuam9pbignLCAnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGV0YWlscy50eXBlID0gJ2ludmFsaWQnO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGV0YWlscy5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgIGRldGFpbHMudHlwZSA9ICdpbnZhbGlkJztcbiAgfVxuXG4gIHJldHVybiBkZXRhaWxzO1xufVxuXG5mdW5jdGlvbiBpc1B0ciAocHRyLCB0aHJvd1dpdGhEZXRhaWxzKSB7XG4gIHZhciB2YWxpZCA9IHRydWU7XG4gIHZhciBmaXJzdENoYXI7XG5cbiAgdHJ5IHtcbiAgICBpZiAoXy5pc1N0cmluZyhwdHIpKSB7XG4gICAgICBpZiAocHRyICE9PSAnJykge1xuICAgICAgICBmaXJzdENoYXIgPSBwdHIuY2hhckF0KDApO1xuXG4gICAgICAgIGlmIChbJyMnLCAnLyddLmluZGV4T2YoZmlyc3RDaGFyKSA9PT0gLTEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3B0ciBtdXN0IHN0YXJ0IHdpdGggYSAvIG9yICMvJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlyc3RDaGFyID09PSAnIycgJiYgcHRyICE9PSAnIycgJiYgcHRyLmNoYXJBdCgxKSAhPT0gJy8nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwdHIgbXVzdCBzdGFydCB3aXRoIGEgLyBvciAjLycpO1xuICAgICAgICB9IGVsc2UgaWYgKHB0ci5tYXRjaChiYWRQdHJUb2tlblJlZ2V4KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHRyIGhhcyBpbnZhbGlkIHRva2VuKHMpJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwdHIgaXMgbm90IGEgU3RyaW5nJyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodGhyb3dXaXRoRGV0YWlscyA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbmZ1bmN0aW9uIGlzUmVmIChvYmosIHRocm93V2l0aERldGFpbHMpIHtcbiAgcmV0dXJuIGlzUmVmTGlrZShvYmosIHRocm93V2l0aERldGFpbHMpICYmIGdldFJlZkRldGFpbHMob2JqLCB0aHJvd1dpdGhEZXRhaWxzKS50eXBlICE9PSAnaW52YWxpZCc7XG59XG5cbmZ1bmN0aW9uIHBhdGhGcm9tUHRyIChwdHIpIHtcbiAgdHJ5IHtcbiAgICBpc1B0cihwdHIsIHRydWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3B0ciBtdXN0IGJlIGEgSlNPTiBQb2ludGVyOiAnICsgZXJyLm1lc3NhZ2UpO1xuICB9XG5cbiAgdmFyIHNlZ21lbnRzID0gcHRyLnNwbGl0KCcvJyk7XG5cbiAgLy8gUmVtb3ZlIHRoZSBmaXJzdCBzZWdtZW50XG4gIHNlZ21lbnRzLnNoaWZ0KCk7XG5cbiAgcmV0dXJuIGRlY29kZVBhdGgoc2VnbWVudHMpO1xufVxuXG5mdW5jdGlvbiBwYXRoVG9QdHIgKHBhdGgsIGhhc2hQcmVmaXgpIHtcbiAgaWYgKCFfLmlzQXJyYXkocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdGggbXVzdCBiZSBhbiBBcnJheScpO1xuICB9XG5cbiAgLy8gRW5jb2RlIGVhY2ggc2VnbWVudCBhbmQgcmV0dXJuXG4gIHJldHVybiAoaGFzaFByZWZpeCAhPT0gZmFsc2UgPyAnIycgOiAnJykgKyAocGF0aC5sZW5ndGggPiAwID8gJy8nIDogJycpICsgZW5jb2RlUGF0aChwYXRoKS5qb2luKCcvJyk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVSZWZzIChvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFsbFRhc2tzID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBkb2N1bWVudFxuICAgICAgaWYgKCFfLmlzQXJyYXkob2JqKSAmJiAhXy5pc09iamVjdChvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29iaiBtdXN0IGJlIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBvcHRpb25zXG4gICAgICBvcHRpb25zID0gdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMsIG9iaik7XG5cbiAgICAgIC8vIENsb25lIHRoZSBpbnB1dCBzbyB3ZSBkbyBub3QgYWx0ZXIgaXRcbiAgICAgIG9iaiA9IF8uY2xvbmVEZWVwKG9iaik7XG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbWV0YWRhdGEgPSB7XG4gICAgICAgIGRlcHM6IHt9LCAvLyBUbyBhdm9pZCBwcm9jZXNzaW5nIHRoZSBzYW1lIHJlZmVybmVjZSB0d2ljZSwgYW5kIGZvciBjaXJjdWxhciByZWZlcmVuY2UgaWRlbnRpZmljYXRpb25cbiAgICAgICAgZG9jczoge30sIC8vIENhY2hlIHRvIGF2b2lkIHByb2Nlc3NpbmcgdGhlIHNhbWUgZG9jdW1lbnQgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgcmVmczoge30gLy8gUmVmZXJlbmNlIGxvY2F0aW9ucyBhbmQgdGhlaXIgbWV0YWRhdGFcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBidWlsZFJlZk1vZGVsKG9iaiwgb3B0aW9ucywgbWV0YWRhdGEpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIHZhciBhbGxSZWZzID0ge307XG4gICAgICB2YXIgY2lyY3VsYXJQYXRocyA9IFtdO1xuICAgICAgdmFyIGNpcmN1bGFycyA9IFtdO1xuICAgICAgdmFyIGRlcEdyYXBoID0gbmV3IGdsLkdyYXBoKCk7XG4gICAgICB2YXIgZnVsbExvY2F0aW9uID0gbWFrZUFic29sdXRlKG9wdGlvbnMubG9jYXRpb24pO1xuICAgICAgdmFyIHJlZnNSb290ID0gZnVsbExvY2F0aW9uICsgcGF0aFRvUHRyKG9wdGlvbnMuc3ViRG9jUGF0aCk7XG4gICAgICB2YXIgcmVsYXRpdmVCYXNlID0gcGF0aC5kaXJuYW1lKGZ1bGxMb2NhdGlvbik7XG5cbiAgICAgIC8vIElkZW50aWZ5IGNpcmN1bGFyc1xuXG4gICAgICAvLyBBZGQgbm9kZXMgZmlyc3RcbiAgICAgIE9iamVjdC5rZXlzKHJlc3VsdHMuZGVwcykuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBkZXBHcmFwaC5zZXROb2RlKG5vZGUpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBlZGdlc1xuICAgICAgXy5mb3JPd24ocmVzdWx0cy5kZXBzLCBmdW5jdGlvbiAocHJvcHMsIG5vZGUpIHtcbiAgICAgICAgXy5mb3JPd24ocHJvcHMsIGZ1bmN0aW9uIChkZXApIHtcbiAgICAgICAgICBkZXBHcmFwaC5zZXRFZGdlKG5vZGUsIGRlcCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNpcmN1bGFyUGF0aHMgPSBnbC5hbGcuZmluZEN5Y2xlcyhkZXBHcmFwaCk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBsaXN0IG9mIGNpcmN1bGFyc1xuICAgICAgY2lyY3VsYXJQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIHBhdGguZm9yRWFjaChmdW5jdGlvbiAoc2VnKSB7XG4gICAgICAgICAgaWYgKGNpcmN1bGFycy5pbmRleE9mKHNlZykgPT09IC0xKSB7XG4gICAgICAgICAgICBjaXJjdWxhcnMucHVzaChzZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSWRlbnRpZnkgY2lyY3VsYXJzXG4gICAgICBfLmZvck93bihyZXN1bHRzLmRlcHMsIGZ1bmN0aW9uIChwcm9wcywgbm9kZSkge1xuICAgICAgICBfLmZvck93bihwcm9wcywgZnVuY3Rpb24gKGRlcCwgcHJvcCkge1xuICAgICAgICAgIHZhciBpc0NpcmN1bGFyID0gZmFsc2U7XG4gICAgICAgICAgdmFyIHJlZlB0ciA9IG5vZGUgKyBwcm9wLnNsaWNlKDEpO1xuICAgICAgICAgIHZhciByZWZEZXRhaWxzID0gcmVzdWx0cy5yZWZzW25vZGUgKyBwcm9wLnNsaWNlKDEpXTtcbiAgICAgICAgICB2YXIgcmVtb3RlID0gaXNSZW1vdGUocmVmRGV0YWlscyk7XG4gICAgICAgICAgdmFyIHBhdGhJbmRleDtcblxuICAgICAgICAgIGlmIChjaXJjdWxhcnMuaW5kZXhPZihkZXApID4gLTEpIHtcbiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIGNpcmN1bGFyIGlzIHBhcnQgb2YgYSBjaXJjdWxhciBjaGFpbiBvciBqdXN0IGEgcmVmZXJlbmNlIHRvIGEgY2lyY3VsYXJcbiAgICAgICAgICAgIGNpcmN1bGFyUGF0aHMuZm9yRWFjaChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAgICAgICAvLyBTaG9ydCBjaXJjdWl0XG4gICAgICAgICAgICAgIGlmIChpc0NpcmN1bGFyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcGF0aEluZGV4ID0gcGF0aC5pbmRleE9mKGRlcCk7XG5cbiAgICAgICAgICAgICAgaWYgKHBhdGhJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZWFjaCBwYXRoIHNlZ21lbnQgdG8gc2VlIGlmIHRoZSByZWZlcmVuY2UgbG9jYXRpb24gaXMgYmVuZWF0aCBvbmUgb2YgaXRzIHNlZ21lbnRzXG4gICAgICAgICAgICAgICAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uIChzZWcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXRcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NpcmN1bGFyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZlB0ci5pbmRleE9mKHNlZyArICcvJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBsb2NhbCwgbWFyayBpdCBhcyBjaXJjdWxhciBidXQgaWYgaXQncyBhIHJlbW90ZSByZWZlcmVuY2UsIG9ubHkgbWFyayBpdFxuICAgICAgICAgICAgICAgICAgICAvLyBjaXJjdWxhciBpZiB0aGUgbWF0Y2hpbmcgcGF0aCBpcyB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgb3IgaXRzIG1hdGNoIGlzIG5vdCB0byBhIGRvY3VtZW50IHJvb3RcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZW1vdGUgfHwgcGF0aEluZGV4ID09PSBwYXRoLmxlbmd0aCAtIDEgfHwgZGVwW2RlcC5sZW5ndGggLSAxXSAhPT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNDaXJjdWxhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGwgcmVmZXJlbmNlcyBhbmQgcmVmZXJlbmNlIGRldGFpbHNcbiAgICAgICAgICAgIHJlZkRldGFpbHMuY2lyY3VsYXIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmZXJlbmNlcyBpbiByZXZlcnNlIG9yZGVyIHNpbmNlIHRoZSBjdXJyZW50IG9yZGVyIGlzIHRvcC1kb3duXG4gICAgICBfLmZvck93bihPYmplY3Qua2V5cyhyZXN1bHRzLmRlcHMpLnJldmVyc2UoKSwgZnVuY3Rpb24gKHBhcmVudFB0cikge1xuICAgICAgICB2YXIgZGVwcyA9IHJlc3VsdHMuZGVwc1twYXJlbnRQdHJdO1xuICAgICAgICB2YXIgcFB0clBhcnRzID0gcGFyZW50UHRyLnNwbGl0KCcjJyk7XG4gICAgICAgIHZhciBwRG9jdW1lbnQgPSByZXN1bHRzLmRvY3NbcFB0clBhcnRzWzBdXTtcbiAgICAgICAgdmFyIHBQdHJQYXRoID0gcGF0aEZyb21QdHIocFB0clBhcnRzWzFdKTtcblxuICAgICAgICBfLmZvck93bihkZXBzLCBmdW5jdGlvbiAoZGVwLCBwcm9wKSB7XG4gICAgICAgICAgdmFyIGRlcFBhcnRzID0gZGVwLnNwbGl0KCcjJyk7XG4gICAgICAgICAgdmFyIGREb2N1bWVudCA9IHJlc3VsdHMuZG9jc1tkZXBQYXJ0c1swXV07XG4gICAgICAgICAgdmFyIGRQdHJQYXRoID0gcFB0clBhdGguY29uY2F0KHBhdGhGcm9tUHRyKHByb3ApKTtcbiAgICAgICAgICB2YXIgcmVmRGV0YWlscyA9IHJlc3VsdHMucmVmc1twUHRyUGFydHNbMF0gKyBwYXRoVG9QdHIoZFB0clBhdGgpXTtcblxuICAgICAgICAgIC8vIFJlc29sdmUgcmVmZXJlbmNlIGlmIHZhbGlkXG4gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQocmVmRGV0YWlscy5lcnJvcikgJiYgXy5pc1VuZGVmaW5lZChyZWZEZXRhaWxzLm1pc3NpbmcpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMucmVzb2x2ZUNpcmN1bGFycyAmJiByZWZEZXRhaWxzLmNpcmN1bGFyKSB7XG4gICAgICAgICAgICAgIHJlZkRldGFpbHMudmFsdWUgPSByZWZEZXRhaWxzLmRlZjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVmRGV0YWlscy52YWx1ZSA9IGZpbmRWYWx1ZShkRG9jdW1lbnQsIHBhdGhGcm9tUHRyKGRlcFBhcnRzWzFdKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIG1hcmtNaXNzaW5nKHJlZkRldGFpbHMsIGVycik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGF0IHRoZSByb290IG9mIHRoZSBkb2N1bWVudCwgcmVwbGFjZSB0aGUgZG9jdW1lbnQgaW4gdGhlIGNhY2hlLiAgT3RoZXJ3aXNlLCByZXBsYWNlXG4gICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBpbiB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gaW4gdGhlIGRvY3VtZW50IGNhY2hlLlxuICAgICAgICAgICAgICBpZiAocFB0clBhcnRzWzFdID09PSAnJyAmJiBwcm9wID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzLmRvY3NbcFB0clBhcnRzWzBdXSA9IHJlZkRldGFpbHMudmFsdWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUocERvY3VtZW50LCBkUHRyUGF0aCwgcmVmRGV0YWlscy52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGZ1bmN0aW9uIHdhbGtSZWZzIChyb290LCByZWZQdHIsIHJlZlBhdGgpIHtcbiAgICAgICAgdmFyIHJlZlB0clBhcnRzID0gcmVmUHRyLnNwbGl0KCcjJyk7XG4gICAgICAgIHZhciByZWZEZXRhaWxzID0gcmVzdWx0cy5yZWZzW3JlZlB0cl07XG4gICAgICAgIHZhciByZWZEZXBzO1xuXG4gICAgICAgIC8vIFJlY29yZCB0aGUgcmVmZXJlbmNlIChyZWxhdGl2ZSB0byB0aGUgcm9vdCBkb2N1bWVudCB1bmxlc3MgdGhlIHJlZmVyZW5jZSBpcyBpbiB0aGUgcm9vdCBkb2N1bWVudClcbiAgICAgICAgYWxsUmVmc1tyZWZQdHJQYXJ0c1swXSA9PT0gb3B0aW9ucy5sb2NhdGlvbiA/XG4gICAgICAgICAgICAgICAgICAnIycgKyByZWZQdHJQYXJ0c1sxXSA6XG4gICAgICAgICAgICAgICAgICBwYXRoVG9QdHIob3B0aW9ucy5zdWJEb2NQYXRoLmNvbmNhdChyZWZQYXRoKSldID0gcmVmRGV0YWlscztcblxuICAgICAgICAvLyBEbyBub3Qgd2FsayBpbnZhbGlkIHJlZmVyZW5jZXNcbiAgICAgICAgaWYgKHJlZkRldGFpbHMuY2lyY3VsYXIgfHwgIWlzVmFsaWQocmVmRGV0YWlscykpIHtcbiAgICAgICAgICAvLyBTYW5pdGl6ZSBlcnJvcnNcbiAgICAgICAgICBpZiAoIXJlZkRldGFpbHMuY2lyY3VsYXIgJiYgcmVmRGV0YWlscy5lcnJvcikge1xuICAgICAgICAgICAgLy8gVGhlIHdheSB3ZSB1c2UgZmluZFJlZnMgbm93IHJlc3VsdHMgaW4gYW4gZXJyb3IgdGhhdCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RhdGlvblxuICAgICAgICAgICAgcmVmRGV0YWlscy5lcnJvciA9IHJlZkRldGFpbHMuZXJyb3IucmVwbGFjZSgnb3B0aW9ucy5zdWJEb2NQYXRoJywgJ0pTT04gUG9pbnRlcicpO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGVycm9yIHRvIHVzZSB0aGUgYXBwcm9wcmlhdGUgSlNPTiBQb2ludGVyXG4gICAgICAgICAgICBpZiAocmVmRGV0YWlscy5lcnJvci5pbmRleE9mKCcjJykgPiAtMSkge1xuICAgICAgICAgICAgICByZWZEZXRhaWxzLmVycm9yID0gcmVmRGV0YWlscy5lcnJvci5yZXBsYWNlKHJlZkRldGFpbHMudXJpLnN1YnN0cihyZWZEZXRhaWxzLnVyaS5pbmRleE9mKCcjJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkRldGFpbHMudXJpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVwb3J0IGVycm9ycyBvcGVuaW5nIGZpbGVzIGFzIEpTT04gUG9pbnRlciBlcnJvcnNcbiAgICAgICAgICAgIGlmIChyZWZEZXRhaWxzLmVycm9yLmluZGV4T2YoJ0VOT0VOVDonKSA9PT0gMCB8fCByZWZEZXRhaWxzLmVycm9yLmluZGV4T2YoJ05vdCBGb3VuZCcpID09PSAwKSB7XG4gICAgICAgICAgICAgIHJlZkRldGFpbHMuZXJyb3IgPSAnSlNPTiBQb2ludGVyIHBvaW50cyB0byBtaXNzaW5nIGxvY2F0aW9uOiAnICsgcmVmRGV0YWlscy51cmk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVmRGVwcyA9IHJlc3VsdHMuZGVwc1tyZWZEZXRhaWxzLnJlZmRJZF07XG5cbiAgICAgICAgaWYgKHJlZkRldGFpbHMucmVmZElkLmluZGV4T2Yocm9vdCkgIT09IDApIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhyZWZEZXBzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgICAgICB3YWxrUmVmcyhyZWZEZXRhaWxzLnJlZmRJZCwgcmVmRGV0YWlscy5yZWZkSWQgKyBwcm9wLnN1YnN0cigxKSwgcmVmUGF0aC5jb25jYXQocGF0aEZyb21QdHIocHJvcCkpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2Ugb25seSBwcm9jZXNzIGEgZG9jdW1lbnQgKG9yIHN1YiBkb2N1bWVudCkgYW5kIGVhY2ggcmVmZXJlbmNlIG9uY2UgZXZlci4gIFRoaXMgbWVhbnNcbiAgICAgIC8vIHRoYXQgaWYgd2Ugd2FudCB0byBwcm92aWRlIHRoZSBmdWxsIHBpY3R1cmUgYXMgdG8gd2hhdCBwYXRocyBpbiB0aGUgcmVzb2x2ZWQgZG9jdW1lbnQgd2VyZSBjcmVhdGVkIGFzIGEgcmVzdWx0XG4gICAgICAvLyBvZiBhIHJlZmVyZW5jZSwgd2UgaGF2ZSB0byB0YWtlIG91ciBmdWxseS1xdWFsaWZpZWQgcmVmZXJlbmNlIGxvY2F0aW9ucyBhbmQgZXhwYW5kIHRoZW0gdG8gYmUgYWxsIGxvY2FsIGJhc2VkXG4gICAgICAvLyBvbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuXG4gICAgICBPYmplY3Qua2V5cyhyZXN1bHRzLnJlZnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZlB0cikge1xuICAgICAgICB2YXIgcmVmRGV0YWlscyA9IHJlc3VsdHMucmVmc1tyZWZQdHJdO1xuICAgICAgICB2YXIgZnFVUklTZWdtZW50cztcbiAgICAgICAgdmFyIHVyaVNlZ21lbnRzO1xuXG4gICAgICAgIC8vIE1ha2UgYWxsIGZ1bGx5LXF1YWxpZmllZCByZWZlcmVuY2UgVVJJcyByZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQgcm9vdCAoaWYgbmVjZXNzYXJ5KS4gIFRoaXMgc3RlcCBpcyBkb25lIGhlcmVcbiAgICAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgaW5zdGVhZCBvZiBiZWxvdyB3aGVuIHRoZSBvZmZpY2lhbCBzYW5pdGl6YXRpb24gcHJvY2VzcyBydW5zLlxuICAgICAgICBpZiAocmVmRGV0YWlscy50eXBlICE9PSAnaW52YWxpZCcpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGhhc2ggZnJvbSBkb2N1bWVudCByb290IHJlZmVyZW5jZXMgaWYgdGhleSB3ZXJlbid0IGluIHRoZSBvcmlnaW5hbCBVUklcbiAgICAgICAgICBpZiAocmVmRGV0YWlscy5mcVVSSVtyZWZEZXRhaWxzLmZxVVJJLmxlbmd0aCAtIDFdID09PSAnIycgJiZcbiAgICAgICAgICAgICAgICByZWZEZXRhaWxzLnVyaVtyZWZEZXRhaWxzLnVyaS5sZW5ndGggLSAxXSAhPT0gJyMnKSB7XG4gICAgICAgICAgICByZWZEZXRhaWxzLmZxVVJJID0gcmVmRGV0YWlscy5mcVVSSS5zdWJzdHIoMCwgcmVmRGV0YWlscy5mcVVSSS5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmcVVSSVNlZ21lbnRzID0gcmVmRGV0YWlscy5mcVVSSS5zcGxpdCgnLycpO1xuICAgICAgICAgIHVyaVNlZ21lbnRzID0gcmVmRGV0YWlscy51cmkuc3BsaXQoJy8nKTtcblxuICAgICAgICAgIC8vIFRoZSBmdWxseS1xdWFsaWZpZWQgVVJJIGlzIHVuZW5jb2RlZCBzbyB0byBrZWVwIHRoZSBvcmlnaW5hbCBmb3JtYXR0aW5nIG9mIHRoZSBVUkkgKGVuY29kZWQgdnMuIHVuZW5jb2RlZCksXG4gICAgICAgICAgLy8gd2UgbmVlZCB0byByZXBsYWNlIGVhY2ggVVJJIHNlZ21lbnQgaW4gcmV2ZXJzZSBvcmRlci5cbiAgICAgICAgICBfLnRpbWVzKHVyaVNlZ21lbnRzLmxlbmd0aCAtIDEsIGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgICAgICAgICB2YXIgblNlZyA9IHVyaVNlZ21lbnRzW3VyaVNlZ21lbnRzLmxlbmd0aCAtIHRpbWUgLSAxXTtcbiAgICAgICAgICAgIHZhciBmcVNlZ0luZGV4ID0gZnFVUklTZWdtZW50cy5sZW5ndGggLSB0aW1lIC0gMTtcbiAgICAgICAgICAgIHZhciBmcVNlZyA9IGZxVVJJU2VnbWVudHNbZnFTZWdJbmRleF07XG5cbiAgICAgICAgICAgIGlmIChuU2VnID09PSAnLicgfHwgblNlZyA9PT0gJy4uJykge1xuICAgICAgICAgICAgICBuU2VnID0gZnFTZWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZxVVJJU2VnbWVudHNbZnFTZWdJbmRleF0gPSBuU2VnO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmVmRGV0YWlscy5mcVVSSSA9IGZxVVJJU2VnbWVudHMuam9pbignLycpO1xuXG4gICAgICAgICAgLy8gTWFrZSB0aGUgZnVsbHktcXVhbGlmaWVkIFVSSXMgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IHJvb3RcbiAgICAgICAgICBpZiAocmVmRGV0YWlscy5mcVVSSS5pbmRleE9mKGZ1bGxMb2NhdGlvbikgPT09IDApIHtcbiAgICAgICAgICAgIHJlZkRldGFpbHMuZnFVUkkgPSByZWZEZXRhaWxzLmZxVVJJLnJlcGxhY2UoZnVsbExvY2F0aW9uLCAnJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZWZEZXRhaWxzLmZxVVJJLmluZGV4T2YocmVsYXRpdmVCYXNlKSA9PT0gMCkge1xuICAgICAgICAgICAgcmVmRGV0YWlscy5mcVVSSSA9IHJlZkRldGFpbHMuZnFVUkkucmVwbGFjZShyZWxhdGl2ZUJhc2UsICcnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVmRGV0YWlscy5mcVVSSVswXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICByZWZEZXRhaWxzLmZxVVJJID0gJy4nICsgcmVmRGV0YWlscy5mcVVSSTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gcHJvY2VzcyByZWZlcmVuY2VzIGZvdW5kIGF0IG9yIGJlbmVhdGggdGhlIHByb3ZpZGVkIGRvY3VtZW50IGFuZCBzdWItZG9jdW1lbnQgcGF0aFxuICAgICAgICBpZiAocmVmUHRyLmluZGV4T2YocmVmc1Jvb3QpICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgd2Fsa1JlZnMocmVmc1Jvb3QsIHJlZlB0ciwgcGF0aEZyb21QdHIocmVmUHRyLnN1YnN0cihyZWZzUm9vdC5sZW5ndGgpKSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2FuaXRpemUgdGhlIHJlZmVyZW5jZSBkZXRhaWxzXG4gICAgICBfLmZvck93bihyZXN1bHRzLnJlZnMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzKSB7XG4gICAgICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGlkIHVzZWQgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmcgYW5kIGNpcmN1bGFyIGlkZW50aWZpY2F0aW9uXG4gICAgICAgIGRlbGV0ZSByZWZEZXRhaWxzLnJlZmRJZDtcblxuICAgICAgICAvLyBUbyBhdm9pZCB0aGUgZXJyb3IgbWVzc2FnZSBiZWluZyBVUkkgZW5jb2RlZC9kZWNvZGVkIGJ5IG1pc3Rha2UsIHJlcGxhY2UgdGhlIGN1cnJlbnQgSlNPTiBQb2ludGVyIHdpdGggdGhlXG4gICAgICAgIC8vIHZhbHVlIGluIHRoZSBKU09OIFJlZmVyZW5jZSBkZWZpbml0aW9uLlxuICAgICAgICBpZiAocmVmRGV0YWlscy5taXNzaW5nKSB7XG4gICAgICAgICAgcmVmRGV0YWlscy5lcnJvciA9IHJlZkRldGFpbHMuZXJyb3Iuc3BsaXQoJzogJylbMF0gKyAnOiAnICsgcmVmRGV0YWlscy5kZWYuJHJlZjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlZnM6IGFsbFJlZnMsXG4gICAgICAgIHJlc29sdmVkOiByZXN1bHRzLmRvY3NbZnVsbExvY2F0aW9uXVxuICAgICAgfTtcbiAgICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVSZWZzQXQgKGxvY2F0aW9uLCBvcHRpb25zKSB7XG4gIHZhciBhbGxUYXNrcyA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICAgIGlmICghXy5pc1N0cmluZyhsb2NhdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbG9jYXRpb24gbXVzdCBiZSBhIHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIC8vIEFkZCB0aGUgbG9jYXRpb24gdG8gdGhlIG9wdGlvbnMgZm9yIHByb2Nlc3NpbmcvdmFsaWRhdGlvblxuICAgICAgICBvcHRpb25zLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIG9wdGlvbnNcbiAgICAgIG9wdGlvbnMgPSB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBnZXRSZW1vdGVEb2N1bWVudChvcHRpb25zLmxvY2F0aW9uLCBvcHRpb25zKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBjT3B0aW9ucyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMpO1xuICAgICAgdmFyIHVyaURldGFpbHMgPSBwYXJzZVVSSShvcHRpb25zLmxvY2F0aW9uKTtcblxuICAgICAgLy8gU2V0IHRoZSBzdWIgZG9jdW1lbnQgcGF0aCBpZiBuZWNlc3NhcnlcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh1cmlEZXRhaWxzLmZyYWdtZW50KSkge1xuICAgICAgICBjT3B0aW9ucy5zdWJEb2NQYXRoID0gcGF0aEZyb21QdHIoZGVjb2RlVVJJKHVyaURldGFpbHMuZnJhZ21lbnQpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmVSZWZzKHJlcywgY09wdGlvbnMpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlZnM6IHJlczIucmVmcyxcbiAgICAgICAgICAgIHJlc29sdmVkOiByZXMyLnJlc29sdmVkLFxuICAgICAgICAgICAgdmFsdWU6IHJlc1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn1cblxuLyoqXG4gKiBWYXJpb3VzIHV0aWxpdGllcyBmb3IgSlNPTiBSZWZlcmVuY2VzICooaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcGJyeWFuLXp5cC1qc29uLXJlZi0wMykqIGFuZFxuICogSlNPTiBQb2ludGVycyAqKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxKSouXG4gKlxuICogQG1vZHVsZSBqc29uLXJlZnNcbiAqL1xuXG4vKipcbiAqIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBiZWxvdyBhcmUgdXNlZCB3aXRoaW4gdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4gIFR5cGljYWxseSwgSSB3b3VsZCB1c2UgYSBmdW5jdGlvblxuICogZGVjbGFyYXRpb24gXyh3aXRoIGRvY3VtZW5hdGlvbilfIGFib3ZlIGFuZCB0aGVuIGp1c3QgZXhwb3J0IGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiBidXQgZHVlIHRvIGEgYnVnIGluIEpTRG9jXG4gKiAoaHR0cHM6Ly9naXRodWIuY29tL2pzZG9jMy9qc2RvYy9pc3N1ZXMvNjc5KSwgdGhpcyBicmVha3MgdGhlIGdlbmVyYXRlZCBBUEkgZG9jdW1lbnRhdGlvbiBhbmQgVHlwZVNjcmlwdFxuICogZGVjbGFyYXRpb25zLiAgU28gdGhhdCdzIHdoeSBlYWNoIGBtb2R1bGUuZXhwb3J0c2AgYmVsb3cgYmFzaWNhbGx5IGp1c3Qgd3JhcHMgYSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbi5cbiAqL1xuXG4gLyoqXG4gKiBDbGVhcnMgdGhlIGludGVybmFsIGNhY2hlIG9mIHJlbW90ZSBkb2N1bWVudHMsIHJlZmVyZW5jZSBkZXRhaWxzLCBldGMuXG4gKi9cbm1vZHVsZS5leHBvcnRzLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJlbW90ZUNhY2hlID0ge307XG59O1xuXG4vKipcbiAqIFRha2VzIGFuIGFycmF5IG9mIHBhdGggc2VnbWVudHMgYW5kIGRlY29kZXMgdGhlIEpTT04gUG9pbnRlciB0b2tlbnMgaW4gdGhlbS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIC0gVGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHNcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cyB3aXRoIHRoZWlyIEpTT04gUG9pbnRlciB0b2tlbnMgZGVjb2RlZFxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgcGF0aCBpcyBub3QgYW4gYEFycmF5YFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxI3NlY3Rpb24tM31cbiAqL1xubW9kdWxlLmV4cG9ydHMuZGVjb2RlUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIHJldHVybiBkZWNvZGVQYXRoKHBhdGgpO1xufTtcblxuLyoqXG4gKiBUYWtlcyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzIGFuZCBlbmNvZGVzIHRoZSBzcGVjaWFsIEpTT04gUG9pbnRlciBjaGFyYWN0ZXJzIGluIHRoZW0uXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIFRoZSBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHMgd2l0aCB0aGVpciBKU09OIFBvaW50ZXIgdG9rZW5zIGVuY29kZWRcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIHBhdGggaXMgbm90IGFuIGBBcnJheWBcbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMSNzZWN0aW9uLTN9XG4gKi9cbm1vZHVsZS5leHBvcnRzLmVuY29kZVBhdGggPSBmdW5jdGlvbiAocGF0aCkge1xuICByZXR1cm4gZW5jb2RlUGF0aChwYXRoKTtcbn07XG5cbi8qKlxuICogRmluZHMgSlNPTiBSZWZlcmVuY2VzIGRlZmluZWQgd2l0aGluIHRoZSBwcm92aWRlZCBhcnJheS9vYmplY3QuXG4gKlxuICogQHBhcmFtIHthcnJheXxvYmplY3R9IG9iaiAtIFRoZSBzdHJ1Y3R1cmUgdG8gZmluZCBKU09OIFJlZmVyZW5jZXMgd2l0aGluXG4gKiBAcGFyYW0ge21vZHVsZTpqc29uLXJlZnN+SnNvblJlZnNPcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgSnNvblJlZnMgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBKU09OIFBvaW50ZXJzICooZnJhZ21lbnQgdmVyc2lvbikqIHRvIHdoZXJlIHRoZSBKU09OIFJlZmVyZW5jZSBpcyBkZWZpbmVkXG4gKiBhbmQgd2hvc2UgdmFsdWVzIGFyZSB7QGxpbmsgVW5yZXNvbHZlZFJlZkRldGFpbHN9LlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSB3aGVuIHRoZSBpbnB1dCBhcmd1bWVudHMgZmFpbCB2YWxpZGF0aW9uIG9yIGlmIGBvcHRpb25zLnN1YkRvY1BhdGhgIHBvaW50cyB0byBhbiBpbnZhbGlkIGxvY2F0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZpbmRpbmcgYWxsIHZhbGlkIHJlZmVyZW5jZXNcbiAqIHZhciBhbGxSZWZzID0gSnNvblJlZnMuZmluZFJlZnMob2JqKTtcbiAqIC8vIEZpbmRpbmcgYWxsIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB2YXIgcmVtb3RlUmVmcyA9IEpzb25SZWZzLmZpbmRSZWZzKG9iaiwge2ZpbHRlcjogWydyZWxhdGl2ZScsICdyZW1vdGUnXX0pO1xuICogLy8gRmluZGluZyBhbGwgaW52YWxpZCByZWZlcmVuY2VzXG4gKiB2YXIgaW52YWxpZFJlZnMgPSBKc29uUmVmcy5maW5kUmVmcyhvYmosIHtmaWx0ZXI6ICdpbnZhbGlkJywgaW5jbHVkZUludmFsaWQ6IHRydWV9KTtcbiAqL1xubW9kdWxlLmV4cG9ydHMuZmluZFJlZnMgPSBmdW5jdGlvbiAob2JqLCBvcHRpb25zKSB7XG4gIHJldHVybiBmaW5kUmVmcyhvYmosIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBGaW5kcyBKU09OIFJlZmVyZW5jZXMgZGVmaW5lZCB3aXRoaW4gdGhlIGRvY3VtZW50IGF0IHRoZSBwcm92aWRlZCBsb2NhdGlvbi5cbiAqXG4gKiBUaGlzIEFQSSBpcyBpZGVudGljYWwgdG8ge0BsaW5rIGZpbmRSZWZzfSBleGNlcHQgdGhpcyBBUEkgd2lsbCByZXRyaWV2ZSBhIHJlbW90ZSBkb2N1bWVudCBhbmQgdGhlblxuICogcmV0dXJuIHRoZSByZXN1bHQgb2Yge0BsaW5rIGZpbmRSZWZzfSBvbiB0aGUgcmV0cmlldmVkIGRvY3VtZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiAtIFRoZSBsb2NhdGlvbiB0byByZXRyaWV2ZSAqKENhbiBiZSByZWxhdGl2ZSBvciBhYnNvbHV0ZSwganVzdCBtYWtlIHN1cmUgeW91IGxvb2sgYXQgdGhlXG4gKiB7QGxpbmsgbW9kdWxlOmpzb24tcmVmc35Kc29uUmVmc09wdGlvbnN8b3B0aW9ucyBkb2N1bWVudGF0aW9ufSB0byBzZWUgaG93IHJlbGF0aXZlIHJlZmVyZW5jZXMgYXJlIGhhbmRsZWQuKSpcbiAqIEBwYXJhbSB7bW9kdWxlOmpzb24tcmVmc35Kc29uUmVmc09wdGlvbnN9IFtvcHRpb25zXSAtIFRoZSBKc29uUmVmcyBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8bW9kdWxlOmpzb24tcmVmc35SZXRyaWV2ZWRSZWZzUmVzdWx0cz59IGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGFcbiAqIHtAbGluayBtb2R1bGU6anNvbi1yZWZzflJldHJpZXZlZFJlZnNSZXN1bHRzfSBhbmQgcmVqZWN0cyB3aXRoIGFuIGBFcnJvcmAgd2hlbiB0aGUgaW5wdXQgYXJndW1lbnRzIGZhaWwgdmFsaWRhdGlvbixcbiAqIHdoZW4gYG9wdGlvbnMuc3ViRG9jUGF0aGAgcG9pbnRzIHRvIGFuIGludmFsaWQgbG9jYXRpb24gb3Igd2hlbiB0aGUgbG9jYXRpb24gYXJndW1lbnQgcG9pbnRzIHRvIGFuIHVubG9hZGFibGVcbiAqIHJlc291cmNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEV4YW1wbGUgdGhhdCBvbmx5IHJlc29sdmVzIHJlZmVyZW5jZXMgd2l0aGluIGEgc3ViIGRvY3VtZW50XG4gKiBKc29uUmVmcy5maW5kUmVmc0F0KCdodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24nLCB7XG4gKiAgICAgc3ViRG9jUGF0aDogJyMvZGVmaW5pdGlvbnMnXG4gKiAgIH0pXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAqICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3BvbnNlXG4gKiAgICAgIC8vXG4gKiAgICAgIC8vIHJlcy5yZWZzOiBKU09OIFJlZmVyZW5jZSBsb2NhdGlvbnMgYW5kIGRldGFpbHNcbiAqICAgICAgLy8gcmVzLnZhbHVlOiBUaGUgcmV0cmlldmVkIGRvY3VtZW50XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIuc3RhY2spO1xuICogICB9KTtcbiAqL1xubW9kdWxlLmV4cG9ydHMuZmluZFJlZnNBdCA9IGZ1bmN0aW9uIChsb2NhdGlvbiwgb3B0aW9ucykge1xuICByZXR1cm4gZmluZFJlZnNBdChsb2NhdGlvbiwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEpTT04gUmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmogLSBUaGUgSlNPTiBSZWZlcmVuY2UgZGVmaW5pdGlvblxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6anNvbi1yZWZzflVucmVzb2x2ZWRSZWZEZXRhaWxzfSB0aGUgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0UmVmRGV0YWlscyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIGdldFJlZkRldGFpbHMob2JqKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBhcmd1bWVudCByZXByZXNlbnRzIGEgSlNPTiBQb2ludGVyLlxuICpcbiAqIEEgc3RyaW5nIGlzIGEgSlNPTiBQb2ludGVyIGlmIHRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0cnVlOlxuICpcbiAqICAgKiBUaGUgc3RyaW5nIGlzIG9mIHR5cGUgYFN0cmluZ2BcbiAqICAgKiBUaGUgc3RyaW5nIG11c3QgYmUgZW1wdHksIGAjYCBvciBzdGFydCB3aXRoIGEgYC9gIG9yIGAjL2BcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHRyIC0gVGhlIHN0cmluZyB0byBjaGVja1xuICogQHBhcmFtIHtib29sZWFufSBbdGhyb3dXaXRoRGV0YWlscz1mYWxzZV0gLSBXaGV0aGVyIG9yIG5vdCB0byB0aHJvdyBhbiBgRXJyb3JgIHdpdGggdGhlIGRldGFpbHMgYXMgdG8gd2h5IHRoZSB2YWx1ZVxuICogcHJvdmlkZWQgaXMgaW52YWxpZFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSB0aGUgcmVzdWx0IG9mIHRoZSBjaGVja1xuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSB3aGVuIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBpbnZhbGlkIGFuZCB0aGUgYHRocm93V2l0aERldGFpbHNgIGFyZ3VtZW50IGlzIGB0cnVlYFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxI3NlY3Rpb24tM31cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2VwYXJhdGluZyB0aGUgZGlmZmVyZW50IHdheXMgdG8gaW52b2tlIGlzUHRyIGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzXG4gKiBpZiAoaXNQdHIoc3RyKSkge1xuICogICAvLyBIYW5kbGUgYSB2YWxpZCBKU09OIFBvaW50ZXJcbiAqIH0gZWxzZSB7XG4gKiAgIC8vIEdldCB0aGUgcmVhc29uIGFzIHRvIHdoeSB0aGUgdmFsdWUgaXMgbm90IGEgSlNPTiBQb2ludGVyIHNvIHlvdSBjYW4gZml4L3JlcG9ydCBpdFxuICogICB0cnkge1xuICogICAgIGlzUHRyKHN0ciwgdHJ1ZSk7XG4gKiAgIH0gY2F0Y2ggKGVycikge1xuICogICAgIC8vIFRoZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5zIHRoZSBkZXRhaWxzIGFzIHRvIHdoeSB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgbm90IGEgSlNPTiBQb2ludGVyXG4gKiAgIH1cbiAqIH1cbiAqL1xubW9kdWxlLmV4cG9ydHMuaXNQdHIgPSBmdW5jdGlvbiAocHRyLCB0aHJvd1dpdGhEZXRhaWxzKSB7XG4gIHJldHVybiBpc1B0cihwdHIsIHRocm93V2l0aERldGFpbHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGFyZ3VtZW50IHJlcHJlc2VudHMgYSBKU09OIFJlZmVyZW5jZS5cbiAqXG4gKiBBbiBvYmplY3QgaXMgYSBKU09OIFJlZmVyZW5jZSBvbmx5IGlmIHRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0cnVlOlxuICpcbiAqICAgKiBUaGUgb2JqZWN0IGlzIG9mIHR5cGUgYE9iamVjdGBcbiAqICAgKiBUaGUgb2JqZWN0IGhhcyBhIGAkcmVmYCBwcm9wZXJ0eVxuICogICAqIFRoZSBgJHJlZmAgcHJvcGVydHkgaXMgYSB2YWxpZCBVUkkgKihXZSBkbyBub3QgcmVxdWlyZSAxMDAlIHN0cmljdCBVUklzIGFuZCB3aWxsIGhhbmRsZSB1bmVzY2FwZWQgc3BlY2lhbFxuICogICAgIGNoYXJhY3RlcnMuKSpcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqIC0gVGhlIG9iamVjdCB0byBjaGVja1xuICogQHBhcmFtIHtib29sZWFufSBbdGhyb3dXaXRoRGV0YWlscz1mYWxzZV0gLSBXaGV0aGVyIG9yIG5vdCB0byB0aHJvdyBhbiBgRXJyb3JgIHdpdGggdGhlIGRldGFpbHMgYXMgdG8gd2h5IHRoZSB2YWx1ZVxuICogcHJvdmlkZWQgaXMgaW52YWxpZFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSB0aGUgcmVzdWx0IG9mIHRoZSBjaGVja1xuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSB3aGVuIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBpbnZhbGlkIGFuZCB0aGUgYHRocm93V2l0aERldGFpbHNgIGFyZ3VtZW50IGlzIGB0cnVlYFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXBicnlhbi16eXAtanNvbi1yZWYtMDMjc2VjdGlvbi0zfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXBhcmF0aW5nIHRoZSBkaWZmZXJlbnQgd2F5cyB0byBpbnZva2UgaXNSZWYgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXNcbiAqIGlmIChpc1JlZihvYmopKSB7XG4gKiAgIC8vIEhhbmRsZSBhIHZhbGlkIEpTT04gUmVmZXJlbmNlXG4gKiB9IGVsc2Uge1xuICogICAvLyBHZXQgdGhlIHJlYXNvbiBhcyB0byB3aHkgdGhlIHZhbHVlIGlzIG5vdCBhIEpTT04gUmVmZXJlbmNlIHNvIHlvdSBjYW4gZml4L3JlcG9ydCBpdFxuICogICB0cnkge1xuICogICAgIGlzUmVmKHN0ciwgdHJ1ZSk7XG4gKiAgIH0gY2F0Y2ggKGVycikge1xuICogICAgIC8vIFRoZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5zIHRoZSBkZXRhaWxzIGFzIHRvIHdoeSB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgbm90IGEgSlNPTiBSZWZlcmVuY2VcbiAqICAgfVxuICogfVxuICovXG5tb2R1bGUuZXhwb3J0cy5pc1JlZiA9IGZ1bmN0aW9uIChvYmosIHRocm93V2l0aERldGFpbHMpIHtcbiAgcmV0dXJuIGlzUmVmKG9iaiwgdGhyb3dXaXRoRGV0YWlscyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cyBmb3IgdGhlIHByb3ZpZGVkIEpTT04gUG9pbnRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHRyIC0gVGhlIEpTT04gUG9pbnRlclxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gdGhlIHBhdGggc2VnbWVudHNcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIHByb3ZpZGVkIGBwdHJgIGFyZ3VtZW50IGlzIG5vdCBhIEpTT04gUG9pbnRlclxuICovXG5tb2R1bGUuZXhwb3J0cy5wYXRoRnJvbVB0ciA9IGZ1bmN0aW9uIChwdHIpIHtcbiAgcmV0dXJuIHBhdGhGcm9tUHRyKHB0cik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBKU09OIFBvaW50ZXIgZm9yIHRoZSBwcm92aWRlZCBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLlxuICpcbiAqICoqTm90ZToqKiBJZiBhIHBhdGggc2VnbWVudCBpbiBgcGF0aGAgaXMgbm90IGEgYFN0cmluZ2AsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIG9uZSB1c2luZyBgSlNPTi5zdHJpbmdpZnlgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggLSBUaGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50c1xuICogQHBhcmFtIHtib29sZWFufSBbaGFzaFByZWZpeD10cnVlXSAtIFdoZXRoZXIgb3Igbm90IGNyZWF0ZSBhIGhhc2gtcHJlZml4ZWQgSlNPTiBQb2ludGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGNvcnJlc3BvbmRpbmcgSlNPTiBQb2ludGVyXG4gKlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBgcGF0aGAgYXJndW1lbnQgaXMgbm90IGFuIGFycmF5XG4gKi9cbm1vZHVsZS5leHBvcnRzLnBhdGhUb1B0ciA9IGZ1bmN0aW9uIChwYXRoLCBoYXNoUHJlZml4KSB7XG4gIHJldHVybiBwYXRoVG9QdHIocGF0aCwgaGFzaFByZWZpeCk7XG59O1xuXG4vKipcbiAqIEZpbmRzIEpTT04gUmVmZXJlbmNlcyBkZWZpbmVkIHdpdGhpbiB0aGUgcHJvdmlkZWQgYXJyYXkvb2JqZWN0IGFuZCByZXNvbHZlcyB0aGVtLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl8b2JqZWN0fSBvYmogLSBUaGUgc3RydWN0dXJlIHRvIGZpbmQgSlNPTiBSZWZlcmVuY2VzIHdpdGhpblxuICogQHBhcmFtIHttb2R1bGU6anNvbi1yZWZzfkpzb25SZWZzT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIEpzb25SZWZzIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxtb2R1bGU6anNvbi1yZWZzflJlc29sdmVkUmVmc1Jlc3VsdHM+fSBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBhXG4gKiB7QGxpbmsgbW9kdWxlOmpzb24tcmVmc35SZXNvbHZlZFJlZnNSZXN1bHRzfSBhbmQgcmVqZWN0cyB3aXRoIGFuIGBFcnJvcmAgd2hlbiB0aGUgaW5wdXQgYXJndW1lbnRzIGZhaWwgdmFsaWRhdGlvbixcbiAqIHdoZW4gYG9wdGlvbnMuc3ViRG9jUGF0aGAgcG9pbnRzIHRvIGFuIGludmFsaWQgbG9jYXRpb24gb3Igd2hlbiB0aGUgbG9jYXRpb24gYXJndW1lbnQgcG9pbnRzIHRvIGFuIHVubG9hZGFibGVcbiAqIHJlc291cmNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEV4YW1wbGUgdGhhdCBvbmx5IHJlc29sdmVzIHJlbGF0aXZlIGFuZCByZW1vdGUgcmVmZXJlbmNlc1xuICogSnNvblJlZnMucmVzb2x2ZVJlZnMoc3dhZ2dlck9iaiwge1xuICogICAgIGZpbHRlcjogWydyZWxhdGl2ZScsICdyZW1vdGUnXVxuICogICB9KVxuICogICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gKiAgICAgIC8vIERvIHNvbWV0aGluZyB3aXRoIHRoZSByZXNwb25zZVxuICogICAgICAvL1xuICogICAgICAvLyByZXMucmVmczogSlNPTiBSZWZlcmVuY2UgbG9jYXRpb25zIGFuZCBkZXRhaWxzXG4gKiAgICAgIC8vIHJlcy5yZXNvbHZlZDogVGhlIGRvY3VtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIEpTT04gUmVmZXJlbmNlcyByZXNvbHZlZFxuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyLnN0YWNrKTtcbiAqICAgfSk7XG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlc29sdmVSZWZzID0gZnVuY3Rpb24gKG9iaiwgb3B0aW9ucykge1xuICByZXR1cm4gcmVzb2x2ZVJlZnMob2JqLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgSlNPTiBSZWZlcmVuY2VzIGRlZmluZWQgd2l0aGluIHRoZSBkb2N1bWVudCBhdCB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogVGhpcyBBUEkgaXMgaWRlbnRpY2FsIHRvIHtAbGluayBtb2R1bGU6anNvbi1yZWZzLnJlc29sdmVSZWZzfSBleGNlcHQgdGhpcyBBUEkgd2lsbCByZXRyaWV2ZSBhIHJlbW90ZSBkb2N1bWVudCBhbmRcbiAqIHRoZW4gcmV0dXJuIHRoZSByZXN1bHQgb2Yge0BsaW5rIG1vZHVsZTpqc29uLXJlZnMucmVzb2x2ZVJlZnN9IG9uIHRoZSByZXRyaWV2ZWQgZG9jdW1lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIC0gVGhlIGxvY2F0aW9uIHRvIHJldHJpZXZlICooQ2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlLCBqdXN0IG1ha2Ugc3VyZSB5b3UgbG9vayBhdCB0aGVcbiAqIHtAbGluayBtb2R1bGU6anNvbi1yZWZzfkpzb25SZWZzT3B0aW9uc3xvcHRpb25zIGRvY3VtZW50YXRpb259IHRvIHNlZSBob3cgcmVsYXRpdmUgcmVmZXJlbmNlcyBhcmUgaGFuZGxlZC4pKlxuICogQHBhcmFtIHttb2R1bGU6anNvbi1yZWZzfkpzb25SZWZzT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIEpzb25SZWZzIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxtb2R1bGU6anNvbi1yZWZzflJldHJpZXZlZFJlc29sdmVkUmVmc1Jlc3VsdHM+fSBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBhXG4gKiB7QGxpbmsgbW9kdWxlOmpzb24tcmVmc35SZXRyaWV2ZWRSZXNvbHZlZFJlZnNSZXN1bHRzfSBhbmQgcmVqZWN0cyB3aXRoIGFuIGBFcnJvcmAgd2hlbiB0aGUgaW5wdXQgYXJndW1lbnRzIGZhaWxcbiAqIHZhbGlkYXRpb24sIHdoZW4gYG9wdGlvbnMuc3ViRG9jUGF0aGAgcG9pbnRzIHRvIGFuIGludmFsaWQgbG9jYXRpb24gb3Igd2hlbiB0aGUgbG9jYXRpb24gYXJndW1lbnQgcG9pbnRzIHRvIGFuXG4gKiB1bmxvYWRhYmxlIHJlc291cmNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEV4YW1wbGUgdGhhdCBsb2FkcyBhIEpTT04gZG9jdW1lbnQgKE5vIG9wdGlvbnMubG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCByZXF1aXJlZCkgYW5kIHJlc29sdmVzIGFsbCByZWZlcmVuY2VzXG4gKiBKc29uUmVmcy5yZXNvbHZlUmVmc0F0KCcuL3N3YWdnZXIuanNvbicpXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAqICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3BvbnNlXG4gKiAgICAgIC8vXG4gKiAgICAgIC8vIHJlcy5yZWZzOiBKU09OIFJlZmVyZW5jZSBsb2NhdGlvbnMgYW5kIGRldGFpbHNcbiAqICAgICAgLy8gcmVzLnJlc29sdmVkOiBUaGUgZG9jdW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgSlNPTiBSZWZlcmVuY2VzIHJlc29sdmVkXG4gKiAgICAgIC8vIHJlcy52YWx1ZTogVGhlIHJldHJpZXZlZCBkb2N1bWVudFxuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyLnN0YWNrKTtcbiAqICAgfSk7XG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlc29sdmVSZWZzQXQgPSBmdW5jdGlvbiAobG9jYXRpb24sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHJlc29sdmVSZWZzQXQobG9jYXRpb24sIG9wdGlvbnMpO1xufTtcbiIsImZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfVxuXG52YXIgdHNsaWJfMSA9IHJlcXVpcmUoJ3RzbGliJyk7XG52YXIgUmFuZEV4cCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdyYW5kZXhwJykpO1xudmFyIGRlcmVmID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ2RlcmVmJykpO1xudmFyIGpzb25wYXRoID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ2pzb25wYXRoJykpO1xudmFyICRSZWZQYXJzZXIgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnanNvbi1zY2hlbWEtcmVmLXBhcnNlcicpKTtcblxuZnVuY3Rpb24gdGVtcGxhdGUodmFsdWUsIHNjaGVtYSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB0ZW1wbGF0ZSh4LCBzY2hlbWEpOyB9KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8jXFx7KFtcXHcuLV0rKVxcfS9nLCBmdW5jdGlvbiAoXywgJDEpIHsgcmV0dXJuIHNjaGVtYVskMV07IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG4vLyBkeW5hbWljIHByb3h5IGZvciBjdXN0b20gZ2VuZXJhdG9yc1xuZnVuY3Rpb24gcHJveHkoZ2VuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hLCBwcm9wZXJ0eSwgcm9vdFNjaGVtYSkge1xuICAgICAgICB2YXIgZm4gPSB2YWx1ZTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgLy8gc3VwcG9ydCBmb3IgbmVzdGVkIG9iamVjdCwgZmlyc3Qta2V5IGlzIHRoZSBnZW5lcmF0b3JcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGZuID0gT2JqZWN0LmtleXModmFsdWUpWzBdO1xuICAgICAgICAgICAgLy8gdHJlYXQgdGhlIGdpdmVuIGFycmF5IGFzIGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlW2ZuXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZ2VuZXJhdG9yIGlzIGV4cGVjdGluZyBhcnJheXMgdGhleSBzaG91bGQgYmUgbmVzdGVkLCBlLmcuIGBbWzEsIDIsIDNdLCB0cnVlLCAuLi5dYFxuICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZVtmbl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2godmFsdWVbZm5dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzdXBwb3J0IGZvciBrZXlwYXRocywgZS5nLiBcImludGVybmV0LmVtYWlsXCJcbiAgICAgICAgdmFyIHByb3BzID0gZm4uc3BsaXQoJy4nKTtcbiAgICAgICAgLy8gcmV0cmlldmUgYSBmcmVzaCBkZXBlbmRlbmN5XG4gICAgICAgIHZhciBjdHggPSBnZW4oKTtcbiAgICAgICAgd2hpbGUgKHByb3BzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGN0eCA9IGN0eFtwcm9wcy5zaGlmdCgpXTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXRyaWV2ZSBsYXN0IHZhbHVlIGZyb20gY29udGV4dCBvYmplY3RcbiAgICAgICAgdmFsdWUgPSB0eXBlb2YgY3R4ID09PSAnb2JqZWN0JyA/IGN0eFtwcm9wc1swXV0gOiBjdHg7XG4gICAgICAgIC8vIGludm9rZSBkeW5hbWljIGdlbmVyYXRvcnNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5hcHBseShjdHgsIGFyZ3MubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB0ZW1wbGF0ZSh4LCByb290U2NoZW1hKTsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRlc3QgZm9yIHBlbmRpbmcgY2FsbGJhY2tzXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlc29sdmUgdmFsdWUgZm9yIFwiJyArIHByb3BlcnR5ICsgJzogJyArIGZuICsgJ1wiLCBnaXZlbjogJyArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59XG4vKipcbiAqIENvbnRhaW5lciBpcyB1c2VkIHRvIHdyYXAgZXh0ZXJuYWwgZ2VuZXJhdG9ycyAoZmFrZXIsIGNoYW5jZSwgY2FzdWFsLCBldGMuKSBhbmQgaXRzIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAtIGBqc2YuZXh0ZW5kKCdmYWtlcicpYCB3aWxsIGVuaGFuY2Ugb3IgZGVmaW5lIHRoZSBnaXZlbiBkZXBlbmRlbmN5LlxuICogLSBganNmLmRlZmluZSgnZmFrZXInKWAgd2lsbCBwcm92aWRlIHRoZSBcImZha2VyXCIga2V5d29yZCBzdXBwb3J0LlxuICpcbiAqIFJhbmRFeHAgaXMgbm90IGxvbmdlciBjb25zaWRlcmVkIGFuIFwiZXh0ZW5zaW9uXCIuXG4gKi9cbnZhciBDb250YWluZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyKCkge1xuICAgICAgICAvLyBkeW5hbWljIHJlcXVpcmVzIC0gaGFuZGxlIGFsbCBkZXBlbmRlbmNpZXNcbiAgICAgICAgLy8gdGhleSB3aWxsIE5PVCBiZSBpbmNsdWRlZCBvbiB0aGUgYnVuZGxlXG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSB7fTtcbiAgICAgICAgdGhpcy5zdXBwb3J0ID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIGRlcGVuZGVuY3kgZ2l2ZW4gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5yZWdpc3RyeVtuYW1lXSA9IGNhbGxiYWNrKHRoaXMucmVnaXN0cnlbbmFtZV0pO1xuICAgICAgICAvLyBidWlsdC1pbiBwcm94eSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAgICAgIGlmICghdGhpcy5zdXBwb3J0W25hbWVdKSB7XG4gICAgICAgICAgICB0aGlzLnN1cHBvcnRbbmFtZV0gPSBwcm94eShmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5yZWdpc3RyeVtuYW1lXTsgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNldCBrZXl3b3JkIHN1cHBvcnQgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5kZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0W25hbWVdID0gY2FsbGJhY2s7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRlcGVuZGVuY3kgZ2l2ZW4gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHJldHVybnMge0RlcGVuZGVuY3l9XG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVnaXN0cnlbbmFtZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoJ1wiJyArIG5hbWUgKyAnXCIgZGVwZW5kZW5jeSBkb2VzblxcJ3QgZXhpc3QuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnlbbmFtZV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBcHBseSBhIGN1c3RvbSBrZXl3b3JkXG4gICAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgICAgdmFyIGZuID0ga2V5c1tsZW5ndGhdLnJlcGxhY2UoL154LS8sICcnKTtcbiAgICAgICAgICAgIHZhciBnZW4gPSB0aGlzLnN1cHBvcnRbZm5dO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2NoZW1hLCAnZ2VuZXJhdGUnLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAocm9vdFNjaGVtYSkgeyByZXR1cm4gZ2VuLmNhbGwoY29udGV4dCwgc2NoZW1hW2tleXNbbGVuZ3RoXV0sIHNjaGVtYSwga2V5c1tsZW5ndGhdLCByb290U2NoZW1hKTsgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lcjtcbn0oKSk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcmVnaXN0cnkgZm9yIGN1c3RvbSBmb3JtYXRzIHVzZWQgd2l0aGluIEpTRi5cbiAqL1xudmFyIFJlZ2lzdHJ5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlZ2lzdHJ5KCkge1xuICAgICAgICAvLyBlbXB0eSBieSBkZWZhdWx0XG4gICAgICAgIHRoaXMuZGF0YSA9IHt9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgY3VzdG9tIGZvcm1hdFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmRhdGFbbmFtZV0gPSBjYWxsYmFjaztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIG1hbnkgZm9ybWF0cyBhdCBvbmUgc2hvdFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlck1hbnkgPSBmdW5jdGlvbiAoZm9ybWF0cykge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IGZvcm1hdHNbbmFtZV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgZWxlbWVudCBieSByZWdpc3RyeSBrZXlcbiAgICAgKi9cbiAgICBSZWdpc3RyeS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuZGF0YVtuYW1lXTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdob2xlIHJlZ2lzdHJ5IGNvbnRlbnRcbiAgICAgKi9cbiAgICBSZWdpc3RyeS5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9O1xuICAgIHJldHVybiBSZWdpc3RyeTtcbn0oKSk7XG5cbi8vIGluc3RhbnRpYXRlXG52YXIgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTtcbi8qKlxuICogQ3VzdG9tIGZvcm1hdCBBUElcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLXNjaGVtYS1mYWtlci9qc29uLXNjaGVtYS1mYWtlciNjdXN0b20tZm9ybWF0c1xuICogQHBhcmFtIG5hbWVPckZvcm1hdE1hcFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBmb3JtYXRBUEkobmFtZU9yRm9ybWF0TWFwLCBjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgbmFtZU9yRm9ybWF0TWFwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gcmVnaXN0cnkubGlzdCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgbmFtZU9yRm9ybWF0TWFwID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlcihuYW1lT3JGb3JtYXRNYXAsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWdpc3RyeS5nZXQobmFtZU9yRm9ybWF0TWFwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJNYW55KG5hbWVPckZvcm1hdE1hcCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoaXMgY2xhc3MgZGVmaW5lcyBhIHJlZ2lzdHJ5IGZvciBjdXN0b20gc2V0dGluZ3MgdXNlZCB3aXRoaW4gSlNGLlxuICovXG52YXIgT3B0aW9uUmVnaXN0cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgdHNsaWJfMS5fX2V4dGVuZHMoT3B0aW9uUmVnaXN0cnksIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gT3B0aW9uUmVnaXN0cnkoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBfdGhpcy5kZWZhdWx0cztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT3B0aW9uUmVnaXN0cnkucHJvdG90eXBlLCBcImRlZmF1bHRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgICAgZGF0YVsnZGVmYXVsdEludmFsaWRUeXBlUHJvZHVjdCddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ2RlZmF1bHRSYW5kRXhwTWF4J10gPSAxMDtcbiAgICAgICAgICAgIGRhdGFbJ2lnbm9yZVByb3BlcnRpZXMnXSA9IFtdO1xuICAgICAgICAgICAgZGF0YVsnaWdub3JlTWlzc2luZ1JlZnMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnZmFpbE9uSW52YWxpZFR5cGVzJ10gPSB0cnVlO1xuICAgICAgICAgICAgZGF0YVsnZmFpbE9uSW52YWxpZEZvcm1hdCddID0gdHJ1ZTtcbiAgICAgICAgICAgIGRhdGFbJ2Fsd2F5c0Zha2VPcHRpb25hbHMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnb3B0aW9uYWxzUHJvYmFiaWxpdHknXSA9IDAuMDtcbiAgICAgICAgICAgIGRhdGFbJ3VzZURlZmF1bHRWYWx1ZSddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydyZXF1aXJlZE9ubHknXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnbWluSXRlbXMnXSA9IDA7XG4gICAgICAgICAgICBkYXRhWydtYXhJdGVtcyddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ21heExlbmd0aCddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ3Jlc29sdmVKc29uUGF0aCddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydyZXVzZVByb3BlcnRpZXMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnZmlsbFByb3BlcnRpZXMnXSA9IHRydWU7XG4gICAgICAgICAgICBkYXRhWydyYW5kb20nXSA9IE1hdGgucmFuZG9tO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBPcHRpb25SZWdpc3RyeTtcbn0oUmVnaXN0cnkpKTtcblxuLy8gaW5zdGFudGlhdGVcbnZhciByZWdpc3RyeSQxID0gbmV3IE9wdGlvblJlZ2lzdHJ5KCk7XG4vKipcbiAqIEN1c3RvbSBvcHRpb24gQVBJXG4gKlxuICogQHBhcmFtIG5hbWVPck9wdGlvbk1hcFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gb3B0aW9uQVBJKG5hbWVPck9wdGlvbk1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZU9yT3B0aW9uTWFwID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcmVnaXN0cnkkMS5nZXQobmFtZU9yT3B0aW9uTWFwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeSQxLnJlZ2lzdGVyTWFueShuYW1lT3JPcHRpb25NYXApO1xuICAgIH1cbn1cbm9wdGlvbkFQSS5nZXREZWZhdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlZ2lzdHJ5JDEuZGVmYXVsdHM7IH07XG5cbnZhciBBTExfVFlQRVMgPSBbJ2FycmF5JywgJ29iamVjdCcsICdpbnRlZ2VyJywgJ251bWJlcicsICdzdHJpbmcnLCAnYm9vbGVhbicsICdudWxsJ107XG52YXIgTU9TVF9ORUFSX0RBVEVUSU1FID0gMjUyNDYwODAwMDAwMDtcbnZhciBNSU5fSU5URUdFUiA9IC0xMDAwMDAwMDA7XG52YXIgTUFYX0lOVEVHRVIgPSAxMDAwMDAwMDA7XG52YXIgTUlOX05VTUJFUiA9IC0xMDA7XG52YXIgTUFYX05VTUJFUiA9IDEwMDtcbnZhciBlbnYgPSB7XG4gICAgQUxMX1RZUEVTOiBBTExfVFlQRVMsXG4gICAgTUlOX05VTUJFUjogTUlOX05VTUJFUixcbiAgICBNQVhfTlVNQkVSOiBNQVhfTlVNQkVSLFxuICAgIE1JTl9JTlRFR0VSOiBNSU5fSU5URUdFUixcbiAgICBNQVhfSU5URUdFUjogTUFYX0lOVEVHRVIsXG4gICAgTU9TVF9ORUFSX0RBVEVUSU1FOiBNT1NUX05FQVJfREFURVRJTUUsXG59O1xuXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vaW5kZXguZC50c1wiIC8+XG5mdW5jdGlvbiBfcmFuZGV4cCh2YWx1ZSkge1xuICAgIC8vIHNldCBtYXhpbXVtIGRlZmF1bHQsIHNlZSAjMTkzXG4gICAgUmFuZEV4cC5wcm90b3R5cGUubWF4ID0gb3B0aW9uQVBJKCdkZWZhdWx0UmFuZEV4cE1heCcpO1xuICAgIC8vIHNhbWUgaW1wbGVtZW50YXRpb24gYXMgdGhlIG9yaWdpbmFsIGV4Y2VwdCB1c2luZyBvdXIgcmFuZG9tXG4gICAgUmFuZEV4cC5wcm90b3R5cGUucmFuZEludCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhICsgTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiAoMSArIGIgLSBhKSk7XG4gICAgfTtcbiAgICB2YXIgcmUgPSBuZXcgUmFuZEV4cCh2YWx1ZSk7XG4gICAgcmV0dXJuIHJlLmdlbigpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHJhbmRvbSBlbGVtZW50IG9mIGEgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZnVuY3Rpb24gcGljayhjb2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25bTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiBjb2xsZWN0aW9uLmxlbmd0aCldO1xufVxuLyoqXG4gKiBSZXR1cm5zIHNodWZmbGVkIGNvbGxlY3Rpb24gb2YgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvblxuICogQHJldHVybnMge1RbXX1cbiAqL1xuZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgdmFyIHRtcCwga2V5LCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgpLCBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICBmb3IgKDsgbGVuZ3RoID4gMDspIHtcbiAgICAgICAga2V5ID0gTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiBsZW5ndGgpO1xuICAgICAgICAvLyBzd2FwXG4gICAgICAgIHRtcCA9IGNvcHlbLS1sZW5ndGhdO1xuICAgICAgICBjb3B5W2xlbmd0aF0gPSBjb3B5W2tleV07XG4gICAgICAgIGNvcHlba2V5XSA9IHRtcDtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59XG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIG1pbiAoaW5jbHVzaXZlKSBhbmQgbWF4IChpbmNsdXNpdmUpXG4gKiBVc2luZyBNYXRoLnJvdW5kKCkgd2lsbCBnaXZlIHlvdSBhIG5vbi11bmlmb3JtIGRpc3RyaWJ1dGlvbiFcbiAqIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUyNzgyMC83NjkzODRcbiAqL1xuZnVuY3Rpb24gZ2V0UmFuZG9tKG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIChtYXggLSBtaW4pICsgbWluO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9tIG51bWJlciBhY2NvcmRpbmcgdG8gcGFyYW1ldGVycyBwYXNzZWRcbiAqXG4gKiBAcGFyYW0gbWluXG4gKiBAcGFyYW0gbWF4XG4gKiBAcGFyYW0gZGVmTWluXG4gKiBAcGFyYW0gZGVmTWF4XG4gKiBAcGFyYW0gaGFzUHJlY2lzaW9uXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBudW1iZXIobWluLCBtYXgsIGRlZk1pbiwgZGVmTWF4LCBoYXNQcmVjaXNpb24pIHtcbiAgICBpZiAoaGFzUHJlY2lzaW9uID09PSB2b2lkIDApIHsgaGFzUHJlY2lzaW9uID0gZmFsc2U7IH1cbiAgICBkZWZNaW4gPSB0eXBlb2YgZGVmTWluID09PSAndW5kZWZpbmVkJyA/IGVudi5NSU5fTlVNQkVSIDogZGVmTWluO1xuICAgIGRlZk1heCA9IHR5cGVvZiBkZWZNYXggPT09ICd1bmRlZmluZWQnID8gZW52Lk1BWF9OVU1CRVIgOiBkZWZNYXg7XG4gICAgbWluID0gdHlwZW9mIG1pbiA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZNaW4gOiBtaW47XG4gICAgbWF4ID0gdHlwZW9mIG1heCA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZNYXggOiBtYXg7XG4gICAgaWYgKG1heCA8IG1pbikge1xuICAgICAgICBtYXggKz0gbWluO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gZ2V0UmFuZG9tKG1pbiwgbWF4KTtcbiAgICBpZiAoIWhhc1ByZWNpc2lvbikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gYnkodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMCwgNjApICogNjA7XG4gICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigxNSwgNTApICogNjEyO1xuICAgICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDEyLCA3MikgKiAzNjEyMztcbiAgICAgICAgY2FzZSAnZGF5cyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDcsIDMwKSAqIDg2NDEyMzQ1O1xuICAgICAgICBjYXNlICd3ZWVrcyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDQsIDUyKSAqIDYwNDgxMjM0NTtcbiAgICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMiwgMTMpICogMjU5MjAxMjM0NTtcbiAgICAgICAgY2FzZSAneWVhcnMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigxLCAyMCkgKiAzMTEwNDAxMjM0NTtcbiAgICB9XG59XG5mdW5jdGlvbiBkYXRlKHN0ZXApIHtcbiAgICBpZiAoc3RlcCkge1xuICAgICAgICByZXR1cm4gYnkoc3RlcCk7XG4gICAgfVxuICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIHZhciBkYXlzID0gbnVtYmVyKC0xMDAwLCBlbnYuTU9TVF9ORUFSX0RBVEVUSU1FKTtcbiAgICBub3cuc2V0VGltZShub3cuZ2V0VGltZSgpIC0gZGF5cyk7XG4gICAgcmV0dXJuIG5vdztcbn1cbnZhciByYW5kb20gPSB7XG4gICAgcGljazogcGljayxcbiAgICBkYXRlOiBkYXRlLFxuICAgIHJhbmRleHA6IF9yYW5kZXhwLFxuICAgIHNodWZmbGU6IHNodWZmbGUsXG4gICAgbnVtYmVyOiBudW1iZXIsXG59O1xuXG5mdW5jdGlvbiBnZXRTdWJBdHRyaWJ1dGUob2JqLCBkb3RTZXBhcmF0ZWRLZXkpIHtcbiAgICB2YXIga2V5RWxlbWVudHMgPSBkb3RTZXBhcmF0ZWRLZXkuc3BsaXQoJy4nKTtcbiAgICB3aGlsZSAoa2V5RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBwcm9wID0ga2V5RWxlbWVudHMuc2hpZnQoKTtcbiAgICAgICAgaWYgKCFvYmpbcHJvcF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iaiA9IG9ialtwcm9wXTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlL2ZhbHNlIHdoZXRoZXIgdGhlIG9iamVjdCBwYXJhbWV0ZXIgaGFzIGl0cyBvd24gcHJvcGVydGllcyBkZWZpbmVkXG4gKlxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNQcm9wZXJ0aWVzKG9iaikge1xuICAgIHZhciBwcm9wZXJ0aWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcHJvcGVydGllc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmpba2V5XSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfSkubGVuZ3RoID4gMDtcbn1cbi8qKlxuICogUmV0dXJucyB0eXBlY2FzdGVkIHZhbHVlLlxuICogRXh0ZXJuYWwgZ2VuZXJhdG9ycyAoZmFrZXIsIGNoYW5jZSwgY2FzdWFsKSBtYXkgcmV0dXJuIGRhdGEgaW4gbm9uLWV4cGVjdGVkIGZvcm1hdHMsIHN1Y2ggYXMgc3RyaW5nLCB3aGVuIHlvdSBtaWdodCBleHBlY3QgYW5cbiAqIGludGVnZXIuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmb3JjZSB0aGUgdHlwZWNhc3QuIFRoaXMgaXMgdGhlIGJhc2UgZm9ybWF0dGVyIGZvciBhbGwgcmVzdWx0IHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIHR5cGVjYXN0KHNjaGVtYSwgY2FsbGJhY2spIHtcbiAgICB2YXIgcGFyYW1zID0ge307XG4gICAgLy8gbm9ybWFsaXplIGNvbnN0cmFpbnRzXG4gICAgc3dpdGNoIChzY2hlbWEudHlwZSkge1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1pbmltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbmltdW0gPSBzY2hlbWEubWluaW11bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1heGltdW0gPSBzY2hlbWEubWF4aW11bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY2hlbWEuZW51bSkge1xuICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1heChwYXJhbXMubWluaW11bSB8fCAwLCAwKTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gTWF0aC5taW4ocGFyYW1zLm1heGltdW0gfHwgSW5maW5pdHksIEluZmluaXR5KTtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gJiYgbWluID09PSBzY2hlbWEubWluaW11bSkge1xuICAgICAgICAgICAgICAgICAgICBtaW4gKz0gc2NoZW1hLm11bHRpcGxlT2YgfHwgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICYmIG1heCA9PT0gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4IC09IHNjaGVtYS5tdWx0aXBsZU9mIHx8IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgb3V0LW9mLWJvdW5kcyBlbnVtZXJhdGlvbnNcbiAgICAgICAgICAgICAgICBzY2hlbWEuZW51bSA9IHNjaGVtYS5lbnVtLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoeCA+PSBtaW4gJiYgeCA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWluTGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5taW5MZW5ndGggPSBzY2hlbWEubWluTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4TGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXhMZW5ndGggPSBzY2hlbWEubWF4TGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9tYXhMZW5ndGggPSBvcHRpb25BUEkoJ21heExlbmd0aCcpO1xuICAgICAgICAgICAgdmFyIF9taW5MZW5ndGggPSBvcHRpb25BUEkoJ21pbkxlbmd0aCcpO1xuICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdXNlciB0byBzZXQgbWF4IGxlbmd0aCBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICAgICAgaWYgKF9tYXhMZW5ndGggJiYgcGFyYW1zLm1heExlbmd0aCA+IF9tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWF4TGVuZ3RoID0gX21heExlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1pbiBsZW5ndGggYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgICAgIGlmIChfbWluTGVuZ3RoICYmIHBhcmFtcy5taW5MZW5ndGggPCBfbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbkxlbmd0aCA9IF9taW5MZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gZXhlY3V0ZSBnZW5lcmF0b3JcbiAgICB2YXIgdmFsdWUgPSBjYWxsYmFjayhwYXJhbXMpO1xuICAgIC8vIG5vcm1hbGl6ZSBvdXRwdXQgdmFsdWVcbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgdmFsdWUgPSAhIXZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB2YXIgbWluID0gTWF0aC5tYXgocGFyYW1zLm1pbkxlbmd0aCB8fCAwLCAwKTtcbiAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1pbihwYXJhbXMubWF4TGVuZ3RoIHx8IEluZmluaXR5LCBJbmZpbml0eSk7XG4gICAgICAgICAgICB3aGlsZSAodmFsdWUubGVuZ3RoIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJyAnICsgdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHIoMCwgbWF4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiW2tleV0gIT09ICdvYmplY3QnIHx8IGJba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYVtrZXldID0gYltrZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYltrZXldKSkge1xuICAgICAgICAgICAgYVtrZXldID0gYVtrZXldIHx8IFtdO1xuICAgICAgICAgICAgLy8gZml4ICMyOTIgLSBza2lwIGR1cGxpY2F0ZWQgdmFsdWVzIGZyb20gbWVyZ2Ugb2JqZWN0IChiKVxuICAgICAgICAgICAgYltrZXldLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFba2V5XS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhW2tleV0gIT09ICdvYmplY3QnIHx8IGFba2V5XSA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KGFba2V5XSkpIHtcbiAgICAgICAgICAgIGFba2V5XSA9IG1lcmdlKHt9LCBiW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYVtrZXldID0gbWVyZ2UoYVtrZXldLCBiW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gY2xlYW4ob2JqLCBpc0FycmF5LCByZXF1aXJlZFByb3BzKSB7XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmogPSBvYmpcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBjbGVhbih2YWx1ZSwgdHJ1ZSwgcmVxdWlyZWRQcm9wcyk7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJzsgfSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAoIXJlcXVpcmVkUHJvcHMgfHwgcmVxdWlyZWRQcm9wcy5pbmRleE9mKGspID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqW2tdKSAmJiAhb2JqW2tdLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvYmpba10gPSBjbGVhbihvYmpba10pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAmJiBpc0FycmF5KSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBzaG9ydChzY2hlbWEpIHtcbiAgICB2YXIgcyA9IEpTT04uc3RyaW5naWZ5KHNjaGVtYSk7XG4gICAgdmFyIGwgPSBKU09OLnN0cmluZ2lmeShzY2hlbWEsIG51bGwsIDIpO1xuICAgIHJldHVybiBzLmxlbmd0aCA+IDQwMCA/IGwuc3Vic3RyKDAsIDQwMCkgKyAnLi4uJyA6IGw7XG59XG5mdW5jdGlvbiBhbnlWYWx1ZSgpIHtcbiAgICByZXR1cm4gcmFuZG9tLnBpY2soW1xuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgLTEsXG4gICAgICAgIE5hTixcbiAgICAgICAgTWF0aC5QSSxcbiAgICAgICAgSW5maW5pdHksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgW10sXG4gICAgICAgIHt9LFxuICAgICAgICBNYXRoLnJhbmRvbSgpLFxuICAgICAgICBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiksXG4gICAgXSk7XG59XG5mdW5jdGlvbiBub3RWYWx1ZShzY2hlbWEsIHBhcmVudCkge1xuICAgIHZhciBjb3B5ID0gbWVyZ2Uoe30sIHBhcmVudCk7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5tYXhpbXVtID0gc2NoZW1hLm1pbmltdW07XG4gICAgICAgIGNvcHkuZXhjbHVzaXZlTWF4aW11bSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWluaW11bSA9IHNjaGVtYS5tYXhpbXVtID4gY29weS5tYXhpbXVtID8gMCA6IHNjaGVtYS5tYXhpbXVtO1xuICAgICAgICBjb3B5LmV4Y2x1c2l2ZU1pbmltdW0gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5MZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWF4TGVuZ3RoID0gc2NoZW1hLm1pbkxlbmd0aDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4TGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb3B5Lm1pbkxlbmd0aCA9IHNjaGVtYS5tYXhMZW5ndGggPiBjb3B5Lm1heExlbmd0aCA/IDAgOiBzY2hlbWEubWF4TGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLnR5cGUpIHtcbiAgICAgICAgY29weS50eXBlID0gcmFuZG9tLnBpY2soZW52LkFMTF9UWVBFUy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIC8vIHRyZWF0IGJvdGggdHlwZXMgYXMgX3NpbWlsYXIgZW5vdWdoXyB0byBiZSBza2lwcGVkIGVxdWFsXG4gICAgICAgICAgICBpZiAoeCA9PT0gJ251bWJlcicgfHwgeCA9PT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS50eXBlICE9PSAnbnVtYmVyJyAmJiBzY2hlbWEudHlwZSAhPT0gJ2ludGVnZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHggIT09IHNjaGVtYS50eXBlO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFueVZhbHVlKCk7XG4gICAgICAgIH0gd2hpbGUgKHNjaGVtYS5lbnVtLmluZGV4T2YodmFsdWUpICE9PSAtMSk7XG4gICAgICAgIGNvcHkuZW51bSA9IFt2YWx1ZV07XG4gICAgfVxuICAgIGlmIChzY2hlbWEucmVxdWlyZWQgJiYgY29weS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgICAgICBkZWxldGUgY29weS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gVE9ETzogZXhwbG9yZSBtb3JlIHNjZW5hcmlvc1xuICAgIHJldHVybiBjb3B5O1xufVxuLy8gRklYTUU6IGV2YWx1YXRlIG1vcmUgY29uc3RyYWludHM/XG5mdW5jdGlvbiB2YWxpZGF0ZSh2YWx1ZSwgc2NoZW1hcykge1xuICAgIHJldHVybiAhc2NoZW1hcy5ldmVyeShmdW5jdGlvbiAoeCkge1xuICAgICAgICBpZiAodHlwZW9mIHgubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgPj0geC5taW5pbXVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHgubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgPD0geC5tYXhpbXVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNLZXkocHJvcCkge1xuICAgIHJldHVybiBwcm9wID09PSAnZW51bScgfHwgcHJvcCA9PT0gJ2RlZmF1bHQnIHx8IHByb3AgPT09ICdyZXF1aXJlZCcgfHwgcHJvcCA9PT0gJ2RlZmluaXRpb25zJztcbn1cbmZ1bmN0aW9uIG9taXRQcm9wcyhvYmosIHByb3BzKSB7XG4gICAgdmFyIGNvcHkgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgaWYgKHByb3BzLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba10pKSB7XG4gICAgICAgICAgICAgICAgY29weVtrXSA9IG9ialtrXS5zbGljZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29weVtrXSA9IHR5cGVvZiBvYmpba10gPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgID8gbWVyZ2Uoe30sIG9ialtrXSlcbiAgICAgICAgICAgICAgICAgICAgOiBvYmpba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY29weTtcbn1cbnZhciB1dGlscyA9IHtcbiAgICBnZXRTdWJBdHRyaWJ1dGU6IGdldFN1YkF0dHJpYnV0ZSxcbiAgICBoYXNQcm9wZXJ0aWVzOiBoYXNQcm9wZXJ0aWVzLFxuICAgIG9taXRQcm9wczogb21pdFByb3BzLFxuICAgIHR5cGVjYXN0OiB0eXBlY2FzdCxcbiAgICBtZXJnZTogbWVyZ2UsXG4gICAgY2xlYW46IGNsZWFuLFxuICAgIHNob3J0OiBzaG9ydCxcbiAgICBub3RWYWx1ZTogbm90VmFsdWUsXG4gICAgYW55VmFsdWU6IGFueVZhbHVlLFxuICAgIHZhbGlkYXRlOiB2YWxpZGF0ZSxcbiAgICBpc0tleTogaXNLZXksXG59O1xuXG52YXIgUGFyc2VFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICB0c2xpYl8xLl9fZXh0ZW5kcyhQYXJzZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBhcnNlRXJyb3IobWVzc2FnZSwgcGF0aCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfdGhpcywgX3RoaXMuY29uc3RydWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLm5hbWUgPSAnUGFyc2VFcnJvcic7XG4gICAgICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBfdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gUGFyc2VFcnJvcjtcbn0oRXJyb3IpKTtcblxudmFyIGluZmVycmVkUHJvcGVydGllcyA9IHtcbiAgICBhcnJheTogW1xuICAgICAgICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgICAgICAgJ2l0ZW1zJyxcbiAgICAgICAgJ21heEl0ZW1zJyxcbiAgICAgICAgJ21pbkl0ZW1zJyxcbiAgICAgICAgJ3VuaXF1ZUl0ZW1zJ1xuICAgIF0sXG4gICAgaW50ZWdlcjogW1xuICAgICAgICAnZXhjbHVzaXZlTWF4aW11bScsXG4gICAgICAgICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgICAgICAgJ21heGltdW0nLFxuICAgICAgICAnbWluaW11bScsXG4gICAgICAgICdtdWx0aXBsZU9mJ1xuICAgIF0sXG4gICAgb2JqZWN0OiBbXG4gICAgICAgICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICAgICAgICdkZXBlbmRlbmNpZXMnLFxuICAgICAgICAnbWF4UHJvcGVydGllcycsXG4gICAgICAgICdtaW5Qcm9wZXJ0aWVzJyxcbiAgICAgICAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgICAgICAgJ3Byb3BlcnRpZXMnLFxuICAgICAgICAncmVxdWlyZWQnXG4gICAgXSxcbiAgICBzdHJpbmc6IFtcbiAgICAgICAgJ21heExlbmd0aCcsXG4gICAgICAgICdtaW5MZW5ndGgnLFxuICAgICAgICAncGF0dGVybidcbiAgICBdXG59O1xuaW5mZXJyZWRQcm9wZXJ0aWVzLm51bWJlciA9IGluZmVycmVkUHJvcGVydGllcy5pbnRlZ2VyO1xudmFyIHN1YnNjaGVtYVByb3BlcnRpZXMgPSBbXG4gICAgJ2FkZGl0aW9uYWxJdGVtcycsXG4gICAgJ2l0ZW1zJyxcbiAgICAnYWRkaXRpb25hbFByb3BlcnRpZXMnLFxuICAgICdkZXBlbmRlbmNpZXMnLFxuICAgICdwYXR0ZXJuUHJvcGVydGllcycsXG4gICAgJ3Byb3BlcnRpZXMnXG5dO1xuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCBrZXlzIG9mIGBvYmpgIGFuZDpcbiAqIC0gY2hlY2tzIHdoZXRoZXIgdGhvc2Uga2V5cyBtYXRjaCBwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gaW5mZXJyZWQgdHlwZVxuICogLSBtYWtlcyBzdXJlIHRoYXQgYG9iamAgaXMgbm90IGEgc3Vic2NoZW1hOyBfRG8gbm90IGF0dGVtcHQgdG8gaW5mZXIgcHJvcGVydGllcyBuYW1lZCBhcyBzdWJzY2hlbWEgY29udGFpbmVycy4gVGhlXG4gKiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBhbnkgcHJvcGVydHkgbmFtZSB3aXRoaW4gdGhvc2UgY29udGFpbmVycyB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIHVzZWQgZm9yXG4gKiBpbmZlcnJpbmcgbWlzc2luZyB0eXBlIHZhbHVlcyBjYXVzZXMgdGhlIGNvbnRhaW5lciBpdHNlbGYgdG8gZ2V0IHByb2Nlc3NlZCB3aGljaCBsZWFkcyB0byBpbnZhbGlkIG91dHB1dC4gKElzc3VlIDYyKV9cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1R5cGUob2JqLCBsYXN0RWxlbWVudEluUGF0aCwgaW5mZXJyZWRUeXBlUHJvcGVydGllcykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICB2YXIgaXNTdWJzY2hlbWEgPSBzdWJzY2hlbWFQcm9wZXJ0aWVzLmluZGV4T2YobGFzdEVsZW1lbnRJblBhdGgpID4gLTEsIGluZmVycmVkUHJvcGVydHlGb3VuZCA9IGluZmVycmVkVHlwZVByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA+IC0xO1xuICAgICAgICBpZiAoaW5mZXJyZWRQcm9wZXJ0eUZvdW5kICYmICFpc1N1YnNjaGVtYSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9KS5sZW5ndGggPiAwO1xufVxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBnaXZlbiBgb2JqYCB0eXBlIG1pZ2h0IGJlIGluZmVycmVkLiBUaGUgbWVjaGFuaXNtIGl0ZXJhdGVzIHRocm91Z2ggYWxsIGluZmVycmVkIHR5cGVzIGRlZmluaXRpb25zLFxuICogdHJpZXMgdG8gbWF0Y2ggYWxsb3dlZCBwcm9wZXJ0aWVzIHdpdGggcHJvcGVydGllcyBvZiBnaXZlbiBgb2JqYC4gUmV0dXJucyB0eXBlIG5hbWUsIGlmIGluZmVycmVkLCBvciBudWxsLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd8bnVsbH1cbiAqL1xuZnVuY3Rpb24gaW5mZXJUeXBlKG9iaiwgc2NoZW1hUGF0aCkge1xuICAgIGZvciAodmFyIHR5cGVOYW1lIGluIGluZmVycmVkUHJvcGVydGllcykge1xuICAgICAgICB2YXIgbGFzdEVsZW1lbnRJblBhdGggPSBzY2hlbWFQYXRoW3NjaGVtYVBhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChtYXRjaGVzVHlwZShvYmosIGxhc3RFbGVtZW50SW5QYXRoLCBpbmZlcnJlZFByb3BlcnRpZXNbdHlwZU5hbWVdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGJvb2xlYW5HZW5lcmF0b3IoKSB7XG4gICAgcmV0dXJuIG9wdGlvbkFQSSgncmFuZG9tJykoKSA+IDAuNTtcbn1cblxudmFyIGJvb2xlYW5UeXBlID0gYm9vbGVhbkdlbmVyYXRvcjtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgbnVsbCB2YWx1ZS5cbiAqXG4gKiBAcmV0dXJucyB7bnVsbH1cbiAqL1xuZnVuY3Rpb24gbnVsbEdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbn1cblxudmFyIG51bGxUeXBlID0gbnVsbEdlbmVyYXRvcjtcblxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiB1bmlxdWUocGF0aCwgaXRlbXMsIHZhbHVlLCBzYW1wbGUsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spIHtcbiAgICB2YXIgdG1wID0gW10sIHNlZW4gPSBbXTtcbiAgICBmdW5jdGlvbiB3YWxrKG9iaikge1xuICAgICAgICB2YXIganNvbiA9IEpTT04uc3RyaW5naWZ5KG9iaik7XG4gICAgICAgIGlmIChzZWVuLmluZGV4T2YoanNvbikgPT09IC0xKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goanNvbik7XG4gICAgICAgICAgICB0bXAucHVzaChvYmopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGl0ZW1zLmZvckVhY2god2Fsayk7XG4gICAgLy8gVE9ETzogZmluZCBhIGJldHRlciBzb2x1dGlvbj9cbiAgICB2YXIgbGltaXQgPSAxMDA7XG4gICAgd2hpbGUgKHRtcC5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICB3YWxrKHRyYXZlcnNlQ2FsbGJhY2sodmFsdWUuaXRlbXMgfHwgc2FtcGxlLCBwYXRoLCByZXNvbHZlKSk7XG4gICAgICAgIGlmICghbGltaXQtLSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRtcDtcbn1cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xudmFyIGFycmF5VHlwZSA9IGZ1bmN0aW9uIGFycmF5VHlwZSh2YWx1ZSwgcGF0aCwgcmVzb2x2ZSwgdHJhdmVyc2VDYWxsYmFjaykge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIGlmICghKHZhbHVlLml0ZW1zIHx8IHZhbHVlLmFkZGl0aW9uYWxJdGVtcykpIHtcbiAgICAgICAgaWYgKHV0aWxzLmhhc1Byb3BlcnRpZXModmFsdWUsICdtaW5JdGVtcycsICdtYXhJdGVtcycsICd1bmlxdWVJdGVtcycpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcignbWlzc2luZyBpdGVtcyBmb3IgJyArIHV0aWxzLnNob3J0KHZhbHVlKSwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICAvLyBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzgzNTUyMjgvNzY5Mzg0XG4gICAgLy8gYWZ0ZXIgdHlwZSBndWFyZHMgc3VwcG9ydCBzdWJwcm9wZXJ0aWVzIChpbiBUUyAyLjApIHdlIGNhbiBzaW1wbGlmeSBiZWxvdyB0byAodmFsdWUuaXRlbXMgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAvLyBzbyB0aGF0IHZhbHVlLml0ZW1zLm1hcCBiZWNvbWVzIHJlY29nbml6ZWQgZm9yIHR5cGVzY3JpcHQgY29tcGlsZXJcbiAgICB2YXIgdG1wSXRlbXMgPSB2YWx1ZS5pdGVtcztcbiAgICBpZiAodG1wSXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKGl0ZW1zLCB0bXBJdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0sIGtleSkge1xuICAgICAgICAgICAgdmFyIGl0ZW1TdWJwYXRoID0gcGF0aC5jb25jYXQoWydpdGVtcycsIGtleSArICcnXSk7XG4gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VDYWxsYmFjayhpdGVtLCBpdGVtU3VicGF0aCwgcmVzb2x2ZSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgdmFyIG1pbkl0ZW1zID0gdmFsdWUubWluSXRlbXM7XG4gICAgdmFyIG1heEl0ZW1zID0gdmFsdWUubWF4SXRlbXM7XG4gICAgaWYgKG9wdGlvbkFQSSgnbWluSXRlbXMnKSAmJiBtaW5JdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpeCBib3VuZGFyaWVzXG4gICAgICAgIG1pbkl0ZW1zID0gIW1heEl0ZW1zXG4gICAgICAgICAgICA/IG9wdGlvbkFQSSgnbWluSXRlbXMnKVxuICAgICAgICAgICAgOiBNYXRoLm1pbihvcHRpb25BUEkoJ21pbkl0ZW1zJyksIG1heEl0ZW1zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbkFQSSgnbWF4SXRlbXMnKSkge1xuICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtYXggaXRlbXMgYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgaWYgKG1heEl0ZW1zICYmIG1heEl0ZW1zID4gb3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgICBtYXhJdGVtcyA9IG9wdGlvbkFQSSgnbWF4SXRlbXMnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtaW4gaXRlbXMgYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgaWYgKG1pbkl0ZW1zICYmIG1pbkl0ZW1zID4gb3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgICBtaW5JdGVtcyA9IG1heEl0ZW1zO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBvcHRpb25hbHNQcm9iYWJpbGl0eSA9IG9wdGlvbkFQSSgnYWx3YXlzRmFrZU9wdGlvbmFscycpID09PSB0cnVlID8gMS4wIDogb3B0aW9uQVBJKCdvcHRpb25hbHNQcm9iYWJpbGl0eScpO1xuICAgIHZhciBsZW5ndGggPSAobWF4SXRlbXMgIT0gbnVsbCAmJiBvcHRpb25hbHNQcm9iYWJpbGl0eSlcbiAgICAgICAgPyBNYXRoLnJvdW5kKG1heEl0ZW1zICogb3B0aW9uYWxzUHJvYmFiaWxpdHkpXG4gICAgICAgIDogcmFuZG9tLm51bWJlcihtaW5JdGVtcywgbWF4SXRlbXMsIDEsIDUpLCBcbiAgICAvLyBUT0RPIGJlbG93IGxvb2tzIGJhZC4gU2hvdWxkIGFkZGl0aW9uYWxJdGVtcyBiZSBjb3BpZWQgYXMtaXM/XG4gICAgc2FtcGxlID0gdHlwZW9mIHZhbHVlLmFkZGl0aW9uYWxJdGVtcyA9PT0gJ29iamVjdCcgPyB2YWx1ZS5hZGRpdGlvbmFsSXRlbXMgOiB7fTtcbiAgICBmb3IgKHZhciBjdXJyZW50ID0gaXRlbXMubGVuZ3RoOyBjdXJyZW50IDwgbGVuZ3RoOyBjdXJyZW50KyspIHtcbiAgICAgICAgdmFyIGl0ZW1TdWJwYXRoID0gcGF0aC5jb25jYXQoWydpdGVtcycsIGN1cnJlbnQgKyAnJ10pO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRyYXZlcnNlQ2FsbGJhY2sodmFsdWUuaXRlbXMgfHwgc2FtcGxlLCBpdGVtU3VicGF0aCwgcmVzb2x2ZSk7XG4gICAgICAgIGl0ZW1zLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS51bmlxdWVJdGVtcykge1xuICAgICAgICByZXR1cm4gdW5pcXVlKHBhdGguY29uY2F0KFsnaXRlbXMnXSksIGl0ZW1zLCB2YWx1ZSwgc2FtcGxlLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xufTtcblxudmFyIG51bWJlclR5cGUgPSBmdW5jdGlvbiBudW1iZXJUeXBlKHZhbHVlKSB7XG4gICAgdmFyIG1pbiA9IHR5cGVvZiB2YWx1ZS5taW5pbXVtID09PSAndW5kZWZpbmVkJyA/IGVudi5NSU5fSU5URUdFUiA6IHZhbHVlLm1pbmltdW0sIG1heCA9IHR5cGVvZiB2YWx1ZS5tYXhpbXVtID09PSAndW5kZWZpbmVkJyA/IGVudi5NQVhfSU5URUdFUiA6IHZhbHVlLm1heGltdW0sIG11bHRpcGxlT2YgPSB2YWx1ZS5tdWx0aXBsZU9mO1xuICAgIGlmIChtdWx0aXBsZU9mKSB7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4IC8gbXVsdGlwbGVPZikgKiBtdWx0aXBsZU9mO1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluIC8gbXVsdGlwbGVPZikgKiBtdWx0aXBsZU9mO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZXhjbHVzaXZlTWluaW11bSAmJiBtaW4gPT09IHZhbHVlLm1pbmltdW0pIHtcbiAgICAgICAgbWluICs9IG11bHRpcGxlT2YgfHwgMTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmV4Y2x1c2l2ZU1heGltdW0gJiYgbWF4ID09PSB2YWx1ZS5tYXhpbXVtKSB7XG4gICAgICAgIG1heCAtPSBtdWx0aXBsZU9mIHx8IDE7XG4gICAgfVxuICAgIGlmIChtaW4gPiBtYXgpIHtcbiAgICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgaWYgKG11bHRpcGxlT2YpIHtcbiAgICAgICAgaWYgKFN0cmluZyhtdWx0aXBsZU9mKS5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgICAgICAgICB2YXIgYmFzZSA9IHJhbmRvbS5udW1iZXIoTWF0aC5mbG9vcihtaW4gLyBtdWx0aXBsZU9mKSwgTWF0aC5mbG9vcihtYXggLyBtdWx0aXBsZU9mKSkgKiBtdWx0aXBsZU9mO1xuICAgICAgICAgICAgd2hpbGUgKGJhc2UgPCBtaW4pIHtcbiAgICAgICAgICAgICAgICBiYXNlICs9IHZhbHVlLm11bHRpcGxlT2Y7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm91bmRhcnkgPSAobWF4IC0gbWluKSAvIG11bHRpcGxlT2Y7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHZhciBudW0gPSByYW5kb20ubnVtYmVyKDAsIGJvdW5kYXJ5KSAqIG11bHRpcGxlT2Y7XG4gICAgICAgICAgICB2YXIgZml4ID0gKG51bSAvIG11bHRpcGxlT2YpICUgMTtcbiAgICAgICAgfSB3aGlsZSAoZml4ICE9PSAwKTtcbiAgICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gICAgcmV0dXJuIHJhbmRvbS5udW1iZXIobWluLCBtYXgsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcbn07XG5cbi8vIFRoZSBgaW50ZWdlcmAgdHlwZSBpcyBqdXN0IGEgd3JhcHBlciBmb3IgdGhlIGBudW1iZXJgIHR5cGUuIFRoZSBgbnVtYmVyYCB0eXBlXG4vLyByZXR1cm5zIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZCBgaW50ZWdlcmAgdHlwZSB0cnVuY2F0ZXMgdGhlIGZyYWN0aW9uXG4vLyBwYXJ0LCBsZWF2aW5nIHRoZSByZXN1bHQgYXMgYW4gaW50ZWdlci5cbnZhciBpbnRlZ2VyVHlwZSA9IGZ1bmN0aW9uIGludGVnZXJUeXBlKHZhbHVlKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IG51bWJlclR5cGUodmFsdWUpO1xuICAgIC8vIHdoZXRoZXIgdGhlIGdlbmVyYXRlZCBudW1iZXIgaXMgcG9zaXRpdmUgb3IgbmVnYXRpdmUsIG5lZWQgdG8gdXNlIGVpdGhlclxuICAgIC8vIGZsb29yIChwb3NpdGl2ZSkgb3IgY2VpbCAobmVnYXRpdmUpIGZ1bmN0aW9uIHRvIGdldCByaWQgb2YgdGhlIGZyYWN0aW9uXG4gICAgcmV0dXJuIGdlbmVyYXRlZCA+IDAgPyBNYXRoLmZsb29yKGdlbmVyYXRlZCkgOiBNYXRoLmNlaWwoZ2VuZXJhdGVkKTtcbn07XG5cbnZhciBMSVBTVU1fV09SRFMgPSAoJ0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlJ1xuICAgICsgJyBldCBkb2xvcmUgbWFnbmEgYWxpcXVhIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSdcbiAgICArICcgY29tbW9kbyBjb25zZXF1YXQgRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEnXG4gICAgKyAnIHBhcmlhdHVyIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QnXG4gICAgKyAnIGxhYm9ydW0nKS5zcGxpdCgnICcpO1xuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBhcnJheSBvZiBzaW5nbGUgbG9yZW0gaXBzdW0gd29yZHMuXG4gKlxuICogQHBhcmFtIGxlbmd0aFxuICogQHJldHVybnMge0FycmF5LjxzdHJpbmc+fVxuICovXG5mdW5jdGlvbiB3b3Jkc0dlbmVyYXRvcihsZW5ndGgpIHtcbiAgICB2YXIgd29yZHMgPSByYW5kb20uc2h1ZmZsZShMSVBTVU1fV09SRFMpO1xuICAgIHJldHVybiB3b3Jkcy5zbGljZSgwLCBsZW5ndGgpO1xufVxuXG4vLyBmYWxsYmFjayBnZW5lcmF0b3JcbnZhciBhbnlUeXBlID0geyB0eXBlOiBbJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJ10gfTtcbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xudmFyIG9iamVjdFR5cGUgPSBmdW5jdGlvbiBvYmplY3RUeXBlKHZhbHVlLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKSB7XG4gICAgdmFyIHByb3BzID0ge307XG4gICAgdmFyIHByb3BlcnRpZXMgPSB2YWx1ZS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBwYXR0ZXJuUHJvcGVydGllcyA9IHZhbHVlLnBhdHRlcm5Qcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciByZXF1aXJlZFByb3BlcnRpZXMgPSAodmFsdWUucmVxdWlyZWQgfHwgW10pLnNsaWNlKCk7XG4gICAgdmFyIGFsbG93c0FkZGl0aW9uYWwgPSB2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpO1xuICAgIHZhciBwYXR0ZXJuUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMocGF0dGVyblByb3BlcnRpZXMpO1xuICAgIHZhciBvcHRpb25hbFByb3BlcnRpZXMgPSBwcm9wZXJ0eUtleXMuY29uY2F0KHBhdHRlcm5Qcm9wZXJ0eUtleXMpLnJlZHVjZShmdW5jdGlvbiAoX3Jlc3BvbnNlLCBfa2V5KSB7XG4gICAgICAgIGlmIChyZXF1aXJlZFByb3BlcnRpZXMuaW5kZXhPZihfa2V5KSA9PT0gLTEpXG4gICAgICAgICAgICBfcmVzcG9uc2UucHVzaChfa2V5KTtcbiAgICAgICAgcmV0dXJuIF9yZXNwb25zZTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGFsbFByb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnRpZXMuY29uY2F0KG9wdGlvbmFsUHJvcGVydGllcyk7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gYWxsb3dzQWRkaXRpb25hbFxuICAgICAgICA/ICh2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdHJ1ZSA/IHt9IDogdmFsdWUuYWRkaXRpb25hbFByb3BlcnRpZXMpXG4gICAgICAgIDogbnVsbDtcbiAgICBpZiAoIWFsbG93c0FkZGl0aW9uYWwgJiZcbiAgICAgICAgcHJvcGVydHlLZXlzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICB1dGlscy5oYXNQcm9wZXJ0aWVzKHZhbHVlLCAnbWluUHJvcGVydGllcycsICdtYXhQcm9wZXJ0aWVzJywgJ2RlcGVuZGVuY2llcycsICdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIGp1c3Qgbm90aGluZ1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvcHRpb25BUEkoJ3JlcXVpcmVkT25seScpID09PSB0cnVlKSB7XG4gICAgICAgIHJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRyYXZlcnNlQ2FsbGJhY2socHJvcHMsIHBhdGguY29uY2F0KFsncHJvcGVydGllcyddKSwgcmVzb2x2ZSk7XG4gICAgfVxuICAgIHZhciBvcHRpb25hbHNQcm9iYWJpbGl0eSA9IG9wdGlvbkFQSSgnYWx3YXlzRmFrZU9wdGlvbmFscycpID09PSB0cnVlID8gMS4wIDogb3B0aW9uQVBJKCdvcHRpb25hbHNQcm9iYWJpbGl0eScpO1xuICAgIHZhciBpZ25vcmVQcm9wZXJ0aWVzID0gb3B0aW9uQVBJKCdpZ25vcmVQcm9wZXJ0aWVzJykgfHwgW107XG4gICAgdmFyIG1pbiA9IE1hdGgubWF4KHZhbHVlLm1pblByb3BlcnRpZXMgfHwgMCwgcmVxdWlyZWRQcm9wZXJ0aWVzLmxlbmd0aCk7XG4gICAgdmFyIG1heCA9IE1hdGgubWF4KHZhbHVlLm1heFByb3BlcnRpZXMgfHwgYWxsUHJvcGVydGllcy5sZW5ndGgpO1xuICAgIHZhciBuZWVkZWRFeHRyYXMgPSBNYXRoLnJvdW5kKChtaW4gLSByZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKSArIG9wdGlvbmFsc1Byb2JhYmlsaXR5ICogKG1heCAtIG1pbikpO1xuICAgIHZhciBleHRyYVByb3BlcnRpZXNSYW5kb21PcmRlciA9IHJhbmRvbS5zaHVmZmxlKG9wdGlvbmFsUHJvcGVydGllcykuc2xpY2UoMCwgbmVlZGVkRXh0cmFzKTtcbiAgICB2YXIgZXh0cmFQcm9wZXJ0aWVzID0gb3B0aW9uYWxQcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAoX2l0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGV4dHJhUHJvcGVydGllc1JhbmRvbU9yZGVyLmluZGV4T2YoX2l0ZW0pICE9PSAtMTtcbiAgICB9KTtcbiAgICAvLyBwcm9wZXJ0aWVzIGFyZSByZWFkIGZyb20gcmlnaHQtdG8tbGVmdFxuICAgIHZhciBfcHJvcHMgPSByZXF1aXJlZFByb3BlcnRpZXMuY29uY2F0KGV4dHJhUHJvcGVydGllcykuc2xpY2UoMCwgbWF4KTtcbiAgICB2YXIgc2tpcHBlZCA9IFtdO1xuICAgIHZhciBtaXNzaW5nID0gW107XG4gICAgX3Byb3BzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlnbm9yZVByb3BlcnRpZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmICgoaWdub3JlUHJvcGVydGllc1tpXSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiBpZ25vcmVQcm9wZXJ0aWVzW2ldLnRlc3Qoa2V5KSlcbiAgICAgICAgICAgICAgICB8fCAodHlwZW9mIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09ICdzdHJpbmcnICYmIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09IGtleSlcbiAgICAgICAgICAgICAgICB8fCAodHlwZW9mIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09ICdmdW5jdGlvbicgJiYgaWdub3JlUHJvcGVydGllc1tpXShwcm9wZXJ0aWVzW2tleV0sIGtleSkpKSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGZpcnN0IG9uZXMgYXJlIHRoZSByZXF1aXJlZCBwcm9wZXJpZXNcbiAgICAgICAgaWYgKHByb3BlcnRpZXNba2V5XSkge1xuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgIC8vIHRoZW4gdHJ5IHBhdHRlcm5Qcm9wZXJ0aWVzXG4gICAgICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmZvckVhY2goZnVuY3Rpb24gKF9rZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5Lm1hdGNoKG5ldyBSZWdFeHAoX2tleSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcmFuZG9tLnJhbmRleHAoa2V5KV0gPSBwYXR0ZXJuUHJvcGVydGllc1tfa2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyB0cnkgcGF0dGVyblByb3BlcnRpZXMgYWdhaW4sXG4gICAgICAgICAgICAgICAgdmFyIHN1YnNjaGVtYSA9IHBhdHRlcm5Qcm9wZXJ0aWVzW2tleV0gfHwgYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgLy8gRklYTUU6IGFsbG93IGFueVR5cGUgYXMgZmFsbGJhY2sgd2hlbiBubyBzdWJzY2hlbWEgaXMgZ2l2ZW4/XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2UgY2FuIHVzZSBhZGRpdGlvbmFsUHJvcGVydGllcz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcGF0dGVyblByb3BlcnRpZXNba2V5XSA/IHJhbmRvbS5yYW5kZXhwKGtleSkgOiBrZXldID0gc3Vic2NoZW1hO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZpbGxQcm9wcyA9IG9wdGlvbkFQSSgnZmlsbFByb3BlcnRpZXMnKTtcbiAgICB2YXIgcmV1c2VQcm9wcyA9IG9wdGlvbkFQSSgncmV1c2VQcm9wZXJ0aWVzJyk7XG4gICAgLy8gZGlzY2FyZCBhbHJlYWR5IGlnbm9yZWQgcHJvcHMgaWYgdGhleSdyZSBub3QgcmVxdWlyZWQgdG8gYmUgZmlsbGVkLi4uXG4gICAgdmFyIGN1cnJlbnQgPSBPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoICsgKGZpbGxQcm9wcyA/IDAgOiBza2lwcGVkLmxlbmd0aCk7XG4gICAgd2hpbGUgKGZpbGxQcm9wcykge1xuICAgICAgICBpZiAoIShwYXR0ZXJuUHJvcGVydHlLZXlzLmxlbmd0aCB8fCBhbGxvd3NBZGRpdGlvbmFsKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnQgPj0gbWluKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dzQWRkaXRpb25hbCkge1xuICAgICAgICAgICAgaWYgKHJldXNlUHJvcHMgJiYgKChwcm9wZXJ0eUtleXMubGVuZ3RoIC0gY3VycmVudCkgPiBtaW4pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgbGFyZ2Ugb2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAxMDAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gcmFuZG9tLnBpY2socHJvcGVydHlLZXlzKTtcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB3b3JkID0gd29yZHNHZW5lcmF0b3IoMSkgKyByYW5kb20ucmFuZGV4cCgnW2EtZlxcXFxkXXsxLDN9Jyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wc1t3b3JkXSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1t3b3JkXSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHx8IGFueVR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVyblByb3BlcnR5S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChfa2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZCA9IHJhbmRvbS5yYW5kZXhwKF9rZXkpO1xuICAgICAgICAgICAgaWYgKCFwcm9wc1t3b3JkXSkge1xuICAgICAgICAgICAgICAgIHByb3BzW3dvcmRdID0gcGF0dGVyblByb3BlcnRpZXNbX2tleV07XG4gICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFhbGxvd3NBZGRpdGlvbmFsICYmIGN1cnJlbnQgPCBtaW4pIHtcbiAgICAgICAgaWYgKG1pc3NpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcigncHJvcGVydGllcyBcIicgKyBtaXNzaW5nLmpvaW4oJywgJykgKyAnXCIgd2VyZSBub3QgZm91bmQgd2hpbGUgYWRkaXRpb25hbFByb3BlcnRpZXMgaXMgZmFsc2U6XFxuJyArXG4gICAgICAgICAgICAgICAgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcigncHJvcGVydGllcyBjb25zdHJhaW50cyB3ZXJlIHRvbyBzdHJvbmcgdG8gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlIGEgdmFsaWQgb2JqZWN0IGZvcjpcXG4nICtcbiAgICAgICAgICAgIHV0aWxzLnNob3J0KHZhbHVlKSwgcGF0aCk7XG4gICAgfVxuICAgIHJldHVybiB0cmF2ZXJzZUNhbGxiYWNrKHByb3BzLCBwYXRoLmNvbmNhdChbJ3Byb3BlcnRpZXMnXSksIHJlc29sdmUpO1xufTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0aHVua0dlbmVyYXRvciB0byBwcm9kdWNlIHNvbWUgd29yZHMgZm9yIHRoZSBmaW5hbCByZXN1bHQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcHJvZHVjZSgpIHtcbiAgICB2YXIgbGVuZ3RoID0gcmFuZG9tLm51bWJlcigxLCA1KTtcbiAgICByZXR1cm4gd29yZHNHZW5lcmF0b3IobGVuZ3RoKS5qb2luKCcgJyk7XG59XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGNvbmNhdGVuYXRlZCBzdHJpbmcgYmFzZWQgb24gd29yZHMgZ2VuZXJhdG9yLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRodW5rR2VuZXJhdG9yKG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gdm9pZCAwKSB7IG1pbiA9IDA7IH1cbiAgICBpZiAobWF4ID09PSB2b2lkIDApIHsgbWF4ID0gMTQwOyB9XG4gICAgdmFyIG1pbiA9IE1hdGgubWF4KDAsIG1pbiksIG1heCA9IHJhbmRvbS5udW1iZXIobWluLCBtYXgpLCByZXN1bHQgPSBwcm9kdWNlKCk7XG4gICAgLy8gYXBwZW5kIHVudGlsIGxlbmd0aCBpcyByZWFjaGVkXG4gICAgd2hpbGUgKHJlc3VsdC5sZW5ndGggPCBtaW4pIHtcbiAgICAgICAgcmVzdWx0ICs9IHByb2R1Y2UoKTtcbiAgICB9XG4gICAgLy8gY3V0IGlmIG5lZWRlZFxuICAgIGlmIChyZXN1bHQubGVuZ3RoID4gbWF4KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHIoMCwgbWF4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBpcHY0IGFkZHJlc3MuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gaXB2NEdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gWzAsIDAsIDAsIDBdLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByYW5kb20ubnVtYmVyKDAsIDI1NSk7XG4gICAgfSkuam9pbignLicpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGRhdGUgdGltZSBJU08gZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gcmFuZG9tLmRhdGUoKS50b0lTT1N0cmluZygpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGRhdGUgZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBkYXRlR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpLnNsaWNlKDAsIDEwKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCB0aW1lIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdGltZUdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gZGF0ZVRpbWVHZW5lcmF0b3IoKS5zbGljZSgxMSk7XG59XG5cbi8qKlxuICogUHJlZGVmaW5lZCBjb3JlIGZvcm1hdHNcbiAqIEB0eXBlIHtba2V5OiBzdHJpbmddOiBzdHJpbmd9XG4gKi9cbnZhciByZWdleHBzID0ge1xuICAgIGVtYWlsOiAnW2EtekEtWlxcXFxkXVthLXpBLVpcXFxcZC1dezEsMTN9W2EtekEtWlxcXFxkXUB7aG9zdG5hbWV9JyxcbiAgICBob3N0bmFtZTogJ1thLXpBLVpdezEsMzN9XFxcXC5bYS16XXsyLDR9JyxcbiAgICBpcHY2OiAnW2EtZlxcXFxkXXs0fSg6W2EtZlxcXFxkXXs0fSl7N30nLFxuICAgIHVyaTogJ2h0dHBzPzovL1thLXpBLVpdW2EtekEtWjAtOSstLl0qJyxcbiAgICAndXJpLXJlZmVyZW5jZSc6ICcoaHR0cHM/Oi8vfCN8L3wpW2EtekEtWl1bYS16QS1aMC05Ky0uXSonLFxufTtcbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgc3RyaW5nIGJhc2luZyBvbiBhIGJ1aWx0LWluIHJlZ2V4IGZvcm1hdFxuICpcbiAqIEBwYXJhbSBjb3JlRm9ybWF0XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb3JlRm9ybWF0R2VuZXJhdG9yKGNvcmVGb3JtYXQpIHtcbiAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAocmVnZXhwc1tjb3JlRm9ybWF0XSkucmVwbGFjZSgvXFx7KFxcdyspXFx9LywgZnVuY3Rpb24gKG1hdGNoLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbS5yYW5kZXhwKHJlZ2V4cHNba2V5XSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRm9ybWF0KHZhbHVlLCBpbnZhbGlkKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gZm9ybWF0QVBJKHZhbHVlLmZvcm1hdCk7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsdWUpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHZhbHVlLmZvcm1hdCkge1xuICAgICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWVHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgIHJldHVybiB0aW1lR2VuZXJhdG9yKCk7XG4gICAgICAgIGNhc2UgJ2lwdjQnOlxuICAgICAgICAgICAgcmV0dXJuIGlwdjRHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAncmVnZXgnOlxuICAgICAgICAgICAgLy8gVE9ETzogZGlzY3Vzc1xuICAgICAgICAgICAgcmV0dXJuICcuKz8nO1xuICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIGNhc2UgJ2hvc3RuYW1lJzpcbiAgICAgICAgY2FzZSAnaXB2Nic6XG4gICAgICAgIGNhc2UgJ3VyaSc6XG4gICAgICAgIGNhc2UgJ3VyaS1yZWZlcmVuY2UnOlxuICAgICAgICAgICAgcmV0dXJuIGNvcmVGb3JtYXRHZW5lcmF0b3IodmFsdWUuZm9ybWF0KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbkFQSSgnZmFpbE9uSW52YWxpZEZvcm1hdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biByZWdpc3RyeSBrZXkgJyArIHV0aWxzLnNob3J0KHZhbHVlLmZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIGZvcm1hdCBcIicgKyB2YWx1ZS5mb3JtYXQgKyAnXCInKTtcbiAgICB9XG59XG52YXIgc3RyaW5nVHlwZSA9IGZ1bmN0aW9uIHN0cmluZ1R5cGUodmFsdWUpIHtcbiAgICB2YXIgb3V0cHV0O1xuICAgIG91dHB1dCA9IHV0aWxzLnR5cGVjYXN0KHZhbHVlLCBmdW5jdGlvbiAob3B0cykge1xuICAgICAgICBpZiAodmFsdWUuZm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtYXQodmFsdWUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRodW5rR2VuZXJhdG9yKG9wdHMubWluTGVuZ3RoLCBvcHRzLm1heExlbmd0aCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5wYXR0ZXJuKSB7XG4gICAgICAgICAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAodmFsdWUucGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRodW5rR2VuZXJhdG9yKG9wdHMubWluTGVuZ3RoLCBvcHRzLm1heExlbmd0aCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dHB1dDtcbn07XG5cbnZhciB0eXBlTWFwID0ge1xuICAgIGJvb2xlYW46IGJvb2xlYW5UeXBlLFxuICAgIG51bGw6IG51bGxUeXBlLFxuICAgIGFycmF5OiBhcnJheVR5cGUsXG4gICAgaW50ZWdlcjogaW50ZWdlclR5cGUsXG4gICAgbnVtYmVyOiBudW1iZXJUeXBlLFxuICAgIG9iamVjdDogb2JqZWN0VHlwZSxcbiAgICBzdHJpbmc6IHN0cmluZ1R5cGVcbn07XG5cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xuZnVuY3Rpb24gdHJhdmVyc2Uoc2NoZW1hLCBwYXRoLCByZXNvbHZlLCByb290U2NoZW1hKSB7XG4gICAgc2NoZW1hID0gcmVzb2x2ZShzY2hlbWEpO1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB2YWx1ZXMgaGFzIGhpZ2hlciBwcmVjZWRlbmNlXG4gICAgaWYgKG9wdGlvbkFQSSgndXNlRGVmYXVsdFZhbHVlJykgJiYgJ2RlZmF1bHQnIGluIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmRlZmF1bHQ7XG4gICAgfVxuICAgIGlmIChzY2hlbWEubm90ICYmIHR5cGVvZiBzY2hlbWEubm90ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBzY2hlbWEgPSB1dGlscy5ub3RWYWx1ZShzY2hlbWEubm90LCB1dGlscy5vbWl0UHJvcHMoc2NoZW1hLCBbJ25vdCddKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5lbnVtKSkge1xuICAgICAgICByZXR1cm4gdXRpbHMudHlwZWNhc3Qoc2NoZW1hLCBmdW5jdGlvbiAoKSB7IHJldHVybiByYW5kb20ucGljayhzY2hlbWEuZW51bSk7IH0pO1xuICAgIH1cbiAgICAvLyB0aHVua3MgY2FuIHJldHVybiBzdWItc2NoZW1hc1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hLnRodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0cmF2ZXJzZShzY2hlbWEudGh1bmsoKSwgcGF0aCwgcmVzb2x2ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLmdlbmVyYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB1dGlscy50eXBlY2FzdChzY2hlbWEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjaGVtYS5nZW5lcmF0ZShyb290U2NoZW1hKTsgfSk7XG4gICAgfVxuICAgIC8vIFRPRE8gcmVtb3ZlIHRoZSB1Z2x5IG92ZXJjb21lXG4gICAgdmFyIHR5cGUgPSBzY2hlbWEudHlwZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICB0eXBlID0gcmFuZG9tLnBpY2sodHlwZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGluZmVyIHRoZSB0eXBlXG4gICAgICAgIHR5cGUgPSBpbmZlclR5cGUoc2NoZW1hLCBwYXRoKSB8fCB0eXBlO1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgc2NoZW1hLnR5cGUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCF0eXBlTWFwW3R5cGVdKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uQVBJKCdmYWlsT25JbnZhbGlkVHlwZXMnKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCd1bmtub3duIHByaW1pdGl2ZSAnICsgdXRpbHMuc2hvcnQodHlwZSksIHBhdGguY29uY2F0KFsndHlwZSddKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uQVBJKCdkZWZhdWx0SW52YWxpZFR5cGVQcm9kdWN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0eXBlTWFwW3R5cGVdKHNjaGVtYSwgcGF0aCwgcmVzb2x2ZSwgdHJhdmVyc2UpO1xuICAgICAgICAgICAgICAgIHZhciByZXF1aXJlZCA9IHNjaGVtYS5pdGVtc1xuICAgICAgICAgICAgICAgICAgICA/IHNjaGVtYS5pdGVtcy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICA6IHNjaGVtYS5yZXF1aXJlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMuY2xlYW4ocmVzdWx0LCBudWxsLCByZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZS5wYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihlLm1lc3NhZ2UsIHBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBjb3B5ID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICBjb3B5ID0gW107XG4gICAgfVxuICAgIGZvciAodmFyIHByb3AgaW4gc2NoZW1hKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hW3Byb3BdID09PSAnb2JqZWN0JyAmJiBwcm9wICE9PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICBjb3B5W3Byb3BdID0gdHJhdmVyc2Uoc2NoZW1hW3Byb3BdLCBwYXRoLmNvbmNhdChbcHJvcF0pLCByZXNvbHZlLCBjb3B5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvcHlbcHJvcF0gPSBzY2hlbWFbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHBpY2skMShkYXRhKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgPyByYW5kb20ucGljayhkYXRhKVxuICAgICAgICA6IGRhdGE7XG59XG5mdW5jdGlvbiBjeWNsZShkYXRhLCByZXZlcnNlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB2YXIgdmFsdWUgPSByZXZlcnNlXG4gICAgICAgID8gZGF0YS5wb3AoKVxuICAgICAgICA6IGRhdGEuc2hpZnQoKTtcbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBkYXRhLnVuc2hpZnQodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZGF0YS5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZShvYmosIGRhdGEsIHZhbHVlcywgcHJvcGVydHkpIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSB7fTtcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIGRhdGEgPSBvYmo7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG9iai5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHJlc29sdmUoeCwgZGF0YSwgdmFsdWVzLCBwcm9wZXJ0eSk7IH0pO1xuICAgIH1cbiAgICBpZiAob2JqLmpzb25QYXRoKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSB0eXBlb2Ygb2JqLmpzb25QYXRoICE9PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB7IHBhdGg6IG9iai5qc29uUGF0aCB9XG4gICAgICAgICAgICA6IG9iai5qc29uUGF0aDtcbiAgICAgICAgcGFyYW1zLmdyb3VwID0gb2JqLmdyb3VwIHx8IHBhcmFtcy5ncm91cCB8fCBwcm9wZXJ0eTtcbiAgICAgICAgcGFyYW1zLmN5Y2xlID0gb2JqLmN5Y2xlIHx8IHBhcmFtcy5jeWNsZSB8fCBmYWxzZTtcbiAgICAgICAgcGFyYW1zLnJldmVyc2UgPSBvYmoucmV2ZXJzZSB8fCBwYXJhbXMucmV2ZXJzZSB8fCBmYWxzZTtcbiAgICAgICAgcGFyYW1zLmNvdW50ID0gb2JqLmNvdW50IHx8IHBhcmFtcy5jb3VudCB8fCAxO1xuICAgICAgICB2YXIga2V5ID0gcGFyYW1zLmdyb3VwICsgXCJfX1wiICsgcGFyYW1zLnBhdGg7XG4gICAgICAgIGlmICghdmFsdWVzW2tleV0pIHtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBqc29ucGF0aC5xdWVyeShkYXRhLCBwYXJhbXMucGF0aCwgcGFyYW1zLmNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlc1trZXldID0ganNvbnBhdGgudmFsdWUoZGF0YSwgcGFyYW1zLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMuY3ljbGUgfHwgcGFyYW1zLnJldmVyc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBjeWNsZSh2YWx1ZXNba2V5XSwgcGFyYW1zLnJldmVyc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaWNrJDEodmFsdWVzW2tleV0pO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgb2JqW2tdID0gcmVzb2x2ZShvYmpba10sIGRhdGEsIHZhbHVlcywgayk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iajtcbn1cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xuZnVuY3Rpb24gcnVuKHJlZnMsIHNjaGVtYSwgY29udGFpbmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlKHNjaGVtYSwgW10sIGZ1bmN0aW9uIHJlZHVjZShzdWIsIG1heFJlZHVjZURlcHRoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1heFJlZHVjZURlcHRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIG1heFJlZHVjZURlcHRoID0gcmFuZG9tLm51bWJlcigxLCAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3ViKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1Yi5nZW5lcmF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjbGVhbnVwXG4gICAgICAgICAgICBpZiAoc3ViLmlkICYmIHR5cGVvZiBzdWIuaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5pZDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLiRzY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1Yi4kcmVmID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChzdWIuJHJlZiA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHJlZjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi4kcmVmLmluZGV4T2YoJyMvJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBkZXJlZi51dGlsLmZpbmRCeVJlZihzdWIuJHJlZiwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZmVyZW5jZSBub3QgZm91bmQ6ICcgKyBzdWIuJHJlZik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8ganVzdCByZW1vdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHJlZjtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLmFsbE9mKSkge1xuICAgICAgICAgICAgICAgIHZhciBzY2hlbWFzID0gc3ViLmFsbE9mO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuYWxsT2Y7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgb25seSBjYXNlIHdoZXJlIGFsbCBzdWItc2NoZW1hc1xuICAgICAgICAgICAgICAgIC8vIG11c3QgYmUgcmVzb2x2ZWQgYmVmb3JlIGFueSBtZXJnZVxuICAgICAgICAgICAgICAgIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoc3ViU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfc3ViID0gcmVkdWNlKHN1YlNjaGVtYSwgbWF4UmVkdWNlRGVwdGggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBnaXZlbiB0aHVua3MgaWYgcHJlc2VudFxuICAgICAgICAgICAgICAgICAgICB1dGlscy5tZXJnZShzdWIsIHR5cGVvZiBfc3ViLnRodW5rID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9zdWIudGh1bmsoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfc3ViKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5vbmVPZiB8fCBzdWIuYW55T2YpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1peCA9IHN1Yi5vbmVPZiB8fCBzdWIuYW55T2Y7XG4gICAgICAgICAgICAgICAgLy8gdGVzdCBldmVyeSB2YWx1ZSBmcm9tIHRoZSBlbnVtIGFnYWluc3QgZWFjaC1vbmVPZlxuICAgICAgICAgICAgICAgIC8vIHNjaGVtYSwgb25seSB2YWx1ZXMgdGhhdCB2YWxpZGF0ZSBvbmNlIGFyZSBrZXB0XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi5lbnVtICYmIHN1Yi5vbmVPZikge1xuICAgICAgICAgICAgICAgICAgICBzdWIuZW51bSA9IHN1Yi5lbnVtLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gdXRpbHMudmFsaWRhdGUoeCwgbWl4KTsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuYW55T2Y7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5vbmVPZjtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aHVuazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvcHkgPSB1dGlscy5tZXJnZSh7fSwgc3ViKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLm1lcmdlKGNvcHksIHJhbmRvbS5waWNrKG1peCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gc3ViKSB7XG4gICAgICAgICAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KHN1Yltwcm9wXSkgfHwgdHlwZW9mIHN1Yltwcm9wXSA9PT0gJ29iamVjdCcpICYmICF1dGlscy5pc0tleShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICBzdWJbcHJvcF0gPSByZWR1Y2Uoc3ViW3Byb3BdLCBtYXhSZWR1Y2VEZXB0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci53cmFwKHN1Yik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9uQVBJKCdyZXNvbHZlSnNvblBhdGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS5wYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlICsgJyBpbiAnICsgJy8nICsgZS5wYXRoLmpvaW4oJy8nKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG52YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpO1xuZnVuY3Rpb24gZ2V0UmVmcyhyZWZzKSB7XG4gICAgdmFyICRyZWZzID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmcykpIHtcbiAgICAgICAgcmVmcy5tYXAoZGVyZWYudXRpbC5ub3JtYWxpemVTY2hlbWEpLmZvckVhY2goZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgICAgICAgICAgJHJlZnNbc2NoZW1hLmlkXSA9IHNjaGVtYTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAkcmVmcyA9IHJlZnMgfHwge307XG4gICAgfVxuICAgIHJldHVybiAkcmVmcztcbn1cbmZ1bmN0aW9uIHdhbGsob2JqLCBjYikge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICB2YXIgcmV0dmFsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICByZXR2YWwgPSBjYihvYmpba2V5c1tpXV0sIGtleXNbaV0sIG9iaik7XG4gICAgICAgIGlmICghcmV0dmFsICYmIG9ialtrZXlzW2ldXSAmJiAhQXJyYXkuaXNBcnJheShvYmpba2V5c1tpXV0pICYmIHR5cGVvZiBvYmpba2V5c1tpXV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR2YWwgPSB3YWxrKG9ialtrZXlzW2ldXSwgY2IpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcmV0dmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbnZhciBqc2YgPSBmdW5jdGlvbiAoc2NoZW1hLCByZWZzKSB7XG4gICAgdmFyIGlnbm9yZSA9IG9wdGlvbkFQSSgnaWdub3JlTWlzc2luZ1JlZnMnKTtcbiAgICB2YXIgJCA9IGRlcmVmKGZ1bmN0aW9uIChpZCwgcmVmcykge1xuICAgICAgICAvLyBGSVhNRTogYWxsb3cgY3VzdG9tIGNhbGxiYWNrP1xuICAgICAgICBpZiAoaWdub3JlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgJHJlZnMgPSBnZXRSZWZzKHJlZnMpO1xuICAgIHJldHVybiBydW4oJHJlZnMsICQoc2NoZW1hLCAkcmVmcywgdHJ1ZSksIGNvbnRhaW5lcik7XG59O1xuanNmLnJlc29sdmUgPSBmdW5jdGlvbiAoc2NoZW1hLCByZWZzLCBjd2QpIHtcbiAgICBpZiAodHlwZW9mIHJlZnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGN3ZCA9IHJlZnM7XG4gICAgICAgIHJlZnMgPSB7fTtcbiAgICB9XG4gICAgLy8gbm9ybWFsaXplIGJhc2VkaXIgKGJyb3dzZXIgYXdhcmUpXG4gICAgY3dkID0gY3dkIHx8ICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgPyBwcm9jZXNzLmN3ZCgpIDogJycpO1xuICAgIGN3ZCA9IGN3ZC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJztcbiAgICB2YXIgJHJlZnMgPSBnZXRSZWZzKHJlZnMpO1xuICAgIC8vIGlkZW50aWNhbCBzZXR1cCBhcyBqc29uLXNjaGVtYS1zZXF1ZWxpemVyXG4gICAgdmFyIGZpeGVkUmVmcyA9IHtcbiAgICAgICAgb3JkZXI6IDMwMCxcbiAgICAgICAgY2FuUmVhZDogdHJ1ZSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB2YXIgaWQgPSBjd2QgIT09ICcvJ1xuICAgICAgICAgICAgICAgID8gZmlsZS51cmwucmVwbGFjZShjd2QsICcnKVxuICAgICAgICAgICAgICAgIDogZmlsZS51cmw7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGRlcmVmLnV0aWwuZmluZEJ5UmVmKGlkLCAkcmVmcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2FsayhzY2hlbWEsIGZ1bmN0aW9uICh2LCBrLCBzdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT09ICdpZCcgJiYgdiA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gJFJlZlBhcnNlclxuICAgICAgICAuZGVyZWZlcmVuY2UoY3dkLCBzY2hlbWEsIHtcbiAgICAgICAgcmVzb2x2ZTogeyBmaXhlZFJlZnM6IGZpeGVkUmVmcyB9LFxuICAgICAgICBkZXJlZmVyZW5jZToge1xuICAgICAgICAgICAgY2lyY3VsYXI6ICdpZ25vcmUnLFxuICAgICAgICB9LFxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gcnVuKCRyZWZzLCBzdWIsIGNvbnRhaW5lcik7IH0pO1xufTtcbmpzZi5mb3JtYXQgPSBmb3JtYXRBUEk7XG5qc2Yub3B0aW9uID0gb3B0aW9uQVBJO1xuanNmLnJhbmRvbSA9IHJhbmRvbTtcbi8vIGJ1aWx0LWluIHN1cHBvcnRcbmNvbnRhaW5lci5kZWZpbmUoJ3BhdHRlcm4nLCByYW5kb20ucmFuZGV4cCk7XG4vLyBza2lwIGRlZmF1bHQgZ2VuZXJhdG9yc1xuY29udGFpbmVyLmRlZmluZSgnanNvblBhdGgnLCBmdW5jdGlvbiAodmFsdWUsIHNjaGVtYSkge1xuICAgIGRlbGV0ZSBzY2hlbWEudHlwZTtcbiAgICByZXR1cm4gc2NoZW1hO1xufSk7XG4vLyBzYWZlIGF1dG8taW5jcmVtZW50IHZhbHVlc1xuY29udGFpbmVyLmRlZmluZSgnYXV0b0luY3JlbWVudCcsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKCF0aGlzLm9mZnNldCkge1xuICAgICAgICB2YXIgbWluID0gc2NoZW1hLm1pbmltdW0gfHwgMTtcbiAgICAgICAgdmFyIG1heCA9IG1pbiArIGVudi5NQVhfTlVNQkVSO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdmFsdWUuaW5pdGlhbE9mZnNldCB8fCBzY2hlbWEuaW5pdGlhbE9mZnNldDtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQgfHwgcmFuZG9tLm51bWJlcihtaW4sIG1heCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQrKztcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn0pO1xuLy8gc2FmZS1hbmQtc2VxdWVudGlhbCBkYXRlc1xuY29udGFpbmVyLmRlZmluZSgnc2VxdWVudGlhbERhdGUnLCBmdW5jdGlvbiAodmFsdWUsIHNjaGVtYSkge1xuICAgIGlmICghdGhpcy5ub3cpIHtcbiAgICAgICAgdGhpcy5ub3cgPSByYW5kb20uZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgc2NoZW1hID0gdGhpcy5ub3cudG9JU09TdHJpbmcoKTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyAnZGF5cydcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgIGlmIChbJ3NlY29uZHMnLCAnbWludXRlcycsICdob3VycycsICdkYXlzJywgJ3dlZWtzJywgJ21vbnRocycsICd5ZWFycyddLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgaW5jcmVtZW50IGJ5IFwiICsgdXRpbHMuc2hvcnQodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdy5zZXRUaW1lKHRoaXMubm93LmdldFRpbWUoKSArIHJhbmRvbS5kYXRlKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWE7XG59KTtcbi8vIHJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZ1xuanNmLmV4dGVuZCA9IGZ1bmN0aW9uIChuYW1lLCBjYikge1xuICAgIGNvbnRhaW5lci5leHRlbmQobmFtZSwgY2IpO1xuICAgIHJldHVybiBqc2Y7XG59O1xuanNmLmRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBjYikge1xuICAgIGNvbnRhaW5lci5kZWZpbmUobmFtZSwgY2IpO1xuICAgIHJldHVybiBqc2Y7XG59O1xuanNmLmxvY2F0ZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5nZXQobmFtZSk7XG59O1xudmFyIFZFUlNJT049XCIwLjUuMC1yYzE1XCI7XG5qc2YudmVyc2lvbiA9IFZFUlNJT047XG5cbm1vZHVsZS5leHBvcnRzID0ganNmO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXG4gICAgUG9pbnRlciA9IHJlcXVpcmUoJy4vcG9pbnRlcicpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1bmRsZTtcblxuLyoqXG4gKiBCdW5kbGVzIGFsbCBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMgaW50byB0aGUgbWFpbiBKU09OIHNjaGVtYSwgdGh1cyByZXN1bHRpbmcgaW4gYSBzY2hlbWEgdGhhdFxuICogb25seSBoYXMgKmludGVybmFsKiByZWZlcmVuY2VzLCBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIEpTT04gc2NoZW1hIG9iamVjdCwgYWRkaW5nIG5ldyByZWZlcmVuY2VzIGFuZCByZS1tYXBwaW5nIGV4aXN0aW5nIG9uZXMuXG4gKlxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gYnVuZGxlIChwYXJzZXIsIG9wdGlvbnMpIHtcbiAgZGVidWcoJ0J1bmRsaW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xuXG4gIC8vIEJ1aWxkIGFuIGludmVudG9yeSBvZiBhbGwgJHJlZiBwb2ludGVycyBpbiB0aGUgSlNPTiBTY2hlbWFcbiAgdmFyIGludmVudG9yeSA9IFtdO1xuICBjcmF3bChwYXJzZXIsICdzY2hlbWEnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGggKyAnIycsICcjJywgMCwgaW52ZW50b3J5LCBwYXJzZXIuJHJlZnMsIG9wdGlvbnMpO1xuXG4gIC8vIFJlbWFwIGFsbCAkcmVmIHBvaW50ZXJzXG4gIHJlbWFwKGludmVudG9yeSk7XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIGludmVudG9yaWVzIGFsbCBKU09OIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmVudCAtIFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gY3Jhd2wuIElmIHRoZSB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0IG9yIGFycmF5LCBpdCB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHByb3BlcnR5IGtleSBvZiBgcGFyZW50YCB0byBiZSBjcmF3bGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIHByb3BlcnR5IGJlaW5nIGNyYXdsZWQsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgYmVpbmcgY3Jhd2xlZCwgZnJvbSB0aGUgc2NoZW1hIHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0W119IGludmVudG9yeSAtIEFuIGFycmF5IG9mIGFscmVhZHktaW52ZW50b3JpZWQgJHJlZiBwb2ludGVyc1xuICogQHBhcmFtIHskUmVmc30gJHJlZnNcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gY3Jhd2wgKHBhcmVudCwga2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgb2JqID0ga2V5ID09PSBudWxsID8gcGFyZW50IDogcGFyZW50W2tleV07XG5cbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYob2JqKSkge1xuICAgICAgaW52ZW50b3J5JFJlZihwYXJlbnQsIGtleSwgcGF0aCwgcGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIENyYXdsIHRoZSBvYmplY3QgaW4gYSBzcGVjaWZpYyBvcmRlciB0aGF0J3Mgb3B0aW1pemVkIGZvciBidW5kbGluZy5cbiAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgZGV0ZXJtaW5lcyBob3cgYHBhdGhGcm9tUm9vdGAgZ2V0cyBidWlsdCxcbiAgICAgIC8vIHdoaWNoIGxhdGVyIGRldGVybWluZXMgd2hpY2gga2V5cyBnZXQgZGVyZWZlcmVuY2VkIGFuZCB3aGljaCBvbmVzIGdldCByZW1hcHBlZFxuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgLy8gTW9zdCBwZW9wbGUgd2lsbCBleHBlY3QgcmVmZXJlbmNlcyB0byBiZSBidW5kbGVkIGludG8gdGhlIHRoZSBcImRlZmluaXRpb25zXCIgcHJvcGVydHksXG4gICAgICAgICAgLy8gc28gd2UgYWx3YXlzIGNyYXdsIHRoYXQgcHJvcGVydHkgZmlyc3QsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICBpZiAoYSA9PT0gJ2RlZmluaXRpb25zJykge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChiID09PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNyYXdsIHRoZSBrZXlzIGJhc2VkIG9uIHRoZWlyIGxlbmd0aC5cbiAgICAgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIGJ1bmRsZWQgcmVmZXJlbmNlc1xuICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcbiAgICAgICAgdmFyIGtleVBhdGhGcm9tUm9vdCA9IFBvaW50ZXIuam9pbihwYXRoRnJvbVJvb3QsIGtleSk7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYodmFsdWUpKSB7XG4gICAgICAgICAgaW52ZW50b3J5JFJlZihvYmosIGtleSwgcGF0aCwga2V5UGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNyYXdsKG9iaiwga2V5LCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludmVudG9yaWVzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSAoaS5lLiByZWNvcmRzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGl0IHNvIHdlIGNhblxuICogb3B0aW1pemUgYWxsICRyZWZzIGluIHRoZSBzY2hlbWEpLCBhbmQgdGhlbiBjcmF3bHMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmUGFyZW50IC0gVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgSlNPTiBSZWZlcmVuY2UgYXMgb25lIG9mIGl0cyBrZXlzXG4gKiBAcGFyYW0ge3N0cmluZ30gJHJlZktleSAtIFRoZSBrZXkgaW4gYCRyZWZQYXJlbnRgIHRoYXQgaXMgYSBKU09OIFJlZmVyZW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIHRoZSBKU09OIFJlZmVyZW5jZSBhdCBgJHJlZktleWAsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiB0aGUgSlNPTiBSZWZlcmVuY2UgYXQgYCRyZWZLZXlgLCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxuICogQHBhcmFtIHtvYmplY3RbXX0gaW52ZW50b3J5IC0gQW4gYXJyYXkgb2YgYWxyZWFkeS1pbnZlbnRvcmllZCAkcmVmIHBvaW50ZXJzXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBpbnZlbnRvcnkkUmVmICgkcmVmUGFyZW50LCAkcmVmS2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgJHJlZiA9ICRyZWZLZXkgPT09IG51bGwgPyAkcmVmUGFyZW50IDogJHJlZlBhcmVudFskcmVmS2V5XTtcbiAgdmFyICRyZWZQYXRoID0gdXJsLnJlc29sdmUocGF0aCwgJHJlZi4kcmVmKTtcbiAgdmFyIHBvaW50ZXIgPSAkcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XG4gIHZhciBkZXB0aCA9IFBvaW50ZXIucGFyc2UocGF0aEZyb21Sb290KS5sZW5ndGg7XG4gIHZhciBmaWxlID0gdXJsLnN0cmlwSGFzaChwb2ludGVyLnBhdGgpO1xuICB2YXIgaGFzaCA9IHVybC5nZXRIYXNoKHBvaW50ZXIucGF0aCk7XG4gIHZhciBleHRlcm5hbCA9IGZpbGUgIT09ICRyZWZzLl9yb290JFJlZi5wYXRoO1xuICB2YXIgZXh0ZW5kZWQgPSAkUmVmLmlzRXh0ZW5kZWQkUmVmKCRyZWYpO1xuICBpbmRpcmVjdGlvbnMgKz0gcG9pbnRlci5pbmRpcmVjdGlvbnM7XG5cbiAgdmFyIGV4aXN0aW5nRW50cnkgPSBmaW5kSW5JbnZlbnRvcnkoaW52ZW50b3J5LCAkcmVmUGFyZW50LCAkcmVmS2V5KTtcbiAgaWYgKGV4aXN0aW5nRW50cnkpIHtcbiAgICAvLyBUaGlzICRSZWYgaGFzIGFscmVhZHkgYmVlbiBpbnZlbnRvcmllZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIGl0IGFnYWluXG4gICAgaWYgKGRlcHRoIDwgZXhpc3RpbmdFbnRyeS5kZXB0aCB8fCBpbmRpcmVjdGlvbnMgPCBleGlzdGluZ0VudHJ5LmluZGlyZWN0aW9ucykge1xuICAgICAgcmVtb3ZlRnJvbUludmVudG9yeShpbnZlbnRvcnksIGV4aXN0aW5nRW50cnkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpbnZlbnRvcnkucHVzaCh7XG4gICAgJHJlZjogJHJlZiwgICAgICAgICAgICAgICAgICAgLy8gVGhlIEpTT04gUmVmZXJlbmNlIChlLmcuIHskcmVmOiBzdHJpbmd9KVxuICAgIHBhcmVudDogJHJlZlBhcmVudCwgICAgICAgICAgIC8vIFRoZSBvYmplY3QgdGhhdCBjb250YWlucyB0aGlzICRyZWYgcG9pbnRlclxuICAgIGtleTogJHJlZktleSwgICAgICAgICAgICAgICAgIC8vIFRoZSBrZXkgaW4gYHBhcmVudGAgdGhhdCBpcyB0aGUgJHJlZiBwb2ludGVyXG4gICAgcGF0aEZyb21Sb290OiBwYXRoRnJvbVJvb3QsICAgLy8gVGhlIHBhdGggdG8gdGhlICRyZWYgcG9pbnRlciwgZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdFxuICAgIGRlcHRoOiBkZXB0aCwgICAgICAgICAgICAgICAgIC8vIEhvdyBmYXIgZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdCBpcyB0aGlzICRyZWYgcG9pbnRlcj9cbiAgICBmaWxlOiBmaWxlLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSB0aGF0IHRoZSAkcmVmIHBvaW50ZXIgcmVzb2x2ZXMgdG9cbiAgICBoYXNoOiBoYXNoLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCB3aXRoaW4gYGZpbGVgIHRoYXQgdGhlICRyZWYgcG9pbnRlciByZXNvbHZlcyB0b1xuICAgIHZhbHVlOiBwb2ludGVyLnZhbHVlLCAgICAgICAgIC8vIFRoZSByZXNvbHZlZCB2YWx1ZSBvZiB0aGUgJHJlZiBwb2ludGVyXG4gICAgY2lyY3VsYXI6IHBvaW50ZXIuY2lyY3VsYXIsICAgLy8gSXMgdGhpcyAkcmVmIHBvaW50ZXIgRElSRUNUTFkgY2lyY3VsYXI/IChpLmUuIGl0IHJlZmVyZW5jZXMgaXRzZWxmKVxuICAgIGV4dGVuZGVkOiBleHRlbmRlZCwgICAgICAgICAgIC8vIERvZXMgdGhpcyAkcmVmIGV4dGVuZCBpdHMgcmVzb2x2ZWQgdmFsdWU/IChpLmUuIGl0IGhhcyBleHRyYSBwcm9wZXJ0aWVzLCBpbiBhZGRpdGlvbiB0byBcIiRyZWZcIilcbiAgICBleHRlcm5hbDogZXh0ZXJuYWwsICAgICAgICAgICAvLyBEb2VzIHRoaXMgJHJlZiBwb2ludGVyIHBvaW50IHRvIGEgZmlsZSBvdGhlciB0aGFuIHRoZSBtYWluIEpTT04gU2NoZW1hIGZpbGU/XG4gICAgaW5kaXJlY3Rpb25zOiBpbmRpcmVjdGlvbnMsICAgLy8gVGhlIG51bWJlciBvZiBpbmRpcmVjdCByZWZlcmVuY2VzIHRoYXQgd2VyZSB0cmF2ZXJzZWQgdG8gcmVzb2x2ZSB0aGUgdmFsdWVcbiAgfSk7XG5cbiAgLy8gUmVjdXJzaXZlbHkgY3Jhd2wgdGhlIHJlc29sdmVkIHZhbHVlXG4gIGNyYXdsKHBvaW50ZXIudmFsdWUsIG51bGwsIHBvaW50ZXIucGF0aCwgcGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMgKyAxLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZS1tYXBzIGV2ZXJ5ICRyZWYgcG9pbnRlciwgc28gdGhhdCB0aGV5J3JlIGFsbCByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgSlNPTiBTY2hlbWEuXG4gKiBFYWNoIHJlZmVyZW5jZWQgdmFsdWUgaXMgZGVyZWZlcmVuY2VkIEVYQUNUTFkgT05DRS4gIEFsbCBzdWJzZXF1ZW50IHJlZmVyZW5jZXMgdG8gdGhlIHNhbWVcbiAqIHZhbHVlIGFyZSByZS1tYXBwZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHJlZmVyZW5jZS5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBmaXJzdDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9zb21lL3BhcnQgfSxcbiAqICAgIHNlY29uZDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9hbm90aGVyL3BhcnQgfSxcbiAqICAgIHRoaXJkOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24gfSxcbiAqICAgIGZvdXJ0aDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9zb21lL3BhcnQvc3ViL3BhcnQgfVxuICogIH1cbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIHRoZXJlIGFyZSBmb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSwgYnV0IHNpbmNlIHRoZSB0aGlyZCByZWZlcmVuY2UgcG9pbnRzXG4gKiB0byB0aGUgRU5USVJFIGZpbGUsIHRoYXQncyB0aGUgb25seSBvbmUgd2UgbmVlZCB0byBkZXJlZmVyZW5jZS4gIFRoZSBvdGhlciB0aHJlZSBjYW4ganVzdCBiZVxuICogcmVtYXBwZWQgdG8gcG9pbnQgaW5zaWRlIHRoZSB0aGlyZCBvbmUuXG4gKlxuICogT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSB0aGlyZCByZWZlcmVuY2UgRElETidUIGV4aXN0LCB0aGVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIHdvdWxkIGJvdGggbmVlZFxuICogdG8gYmUgZGVyZWZlcmVuY2VkLCBzaW5jZSB0aGV5IHBvaW50IHRvIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgZmlsZS4gVGhlIGZvdXJ0aCByZWZlcmVuY2UgZG9lcyBOT1RcbiAqIG5lZWQgdG8gYmUgZGVyZWZlcmVuY2VkLCBiZWNhdXNlIGl0IGNhbiBiZSByZW1hcHBlZCB0byBwb2ludCBpbnNpZGUgdGhlIGZpcnN0IG9uZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbnZlbnRvcnlcbiAqL1xuZnVuY3Rpb24gcmVtYXAgKGludmVudG9yeSkge1xuICAvLyBHcm91cCAmIHNvcnQgYWxsIHRoZSAkcmVmIHBvaW50ZXJzLCBzbyB0aGV5J3JlIGluIHRoZSBvcmRlciB0aGF0IHdlIG5lZWQgdG8gZGVyZWZlcmVuY2UvcmVtYXAgdGhlbVxuICBpbnZlbnRvcnkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIGlmIChhLmZpbGUgIT09IGIuZmlsZSkge1xuICAgICAgLy8gR3JvdXAgYWxsIHRoZSAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIGZpbGVcbiAgICAgIHJldHVybiBhLmZpbGUgPCBiLmZpbGUgPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmhhc2ggIT09IGIuaGFzaCkge1xuICAgICAgLy8gR3JvdXAgYWxsIHRoZSAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIHBhcnQgb2YgdGhlIGZpbGVcbiAgICAgIHJldHVybiBhLmhhc2ggPCBiLmhhc2ggPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmNpcmN1bGFyICE9PSBiLmNpcmN1bGFyKSB7XG4gICAgICAvLyBJZiB0aGUgJHJlZiBwb2ludHMgdG8gaXRzZWxmLCB0aGVuIHNvcnQgaXQgaGlnaGVyIHRoYW4gb3RoZXIgJHJlZnMgdGhhdCBwb2ludCB0byB0aGlzICRyZWZcbiAgICAgIHJldHVybiBhLmNpcmN1bGFyID8gLTEgOiArMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYS5leHRlbmRlZCAhPT0gYi5leHRlbmRlZCkge1xuICAgICAgLy8gSWYgdGhlICRyZWYgZXh0ZW5kcyB0aGUgcmVzb2x2ZWQgdmFsdWUsIHRoZW4gc29ydCBpdCBsb3dlciB0aGFuIG90aGVyICRyZWZzIHRoYXQgZG9uJ3QgZXh0ZW5kIHRoZSB2YWx1ZVxuICAgICAgcmV0dXJuIGEuZXh0ZW5kZWQgPyArMSA6IC0xO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmluZGlyZWN0aW9ucyAhPT0gYi5pbmRpcmVjdGlvbnMpIHtcbiAgICAgIC8vIFNvcnQgZGlyZWN0IHJlZmVyZW5jZXMgaGlnaGVyIHRoYW4gaW5kaXJlY3QgcmVmZXJlbmNlc1xuICAgICAgcmV0dXJuIGEuaW5kaXJlY3Rpb25zIC0gYi5pbmRpcmVjdGlvbnM7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuZGVwdGggIT09IGIuZGVwdGgpIHtcbiAgICAgIC8vIFNvcnQgJHJlZnMgYnkgaG93IGNsb3NlIHRoZXkgYXJlIHRvIHRoZSBKU09OIFNjaGVtYSByb290XG4gICAgICByZXR1cm4gYS5kZXB0aCAtIGIuZGVwdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gRGV0ZXJtaW5lIGhvdyBmYXIgZWFjaCAkcmVmIGlzIGZyb20gdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eS5cbiAgICAgIC8vIE1vc3QgcGVvcGxlIHdpbGwgZXhwZWN0IHJlZmVyZW5jZXMgdG8gYmUgYnVuZGxlZCBpbnRvIHRoZSB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5IGlmIHBvc3NpYmxlLlxuICAgICAgdmFyIGFEZWZpbml0aW9uc0luZGV4ID0gYS5wYXRoRnJvbVJvb3QubGFzdEluZGV4T2YoJy9kZWZpbml0aW9ucycpO1xuICAgICAgdmFyIGJEZWZpbml0aW9uc0luZGV4ID0gYi5wYXRoRnJvbVJvb3QubGFzdEluZGV4T2YoJy9kZWZpbml0aW9ucycpO1xuXG4gICAgICBpZiAoYURlZmluaXRpb25zSW5kZXggIT09IGJEZWZpbml0aW9uc0luZGV4KSB7XG4gICAgICAgIC8vIEdpdmUgaGlnaGVyIHByaW9yaXR5IHRvIHRoZSAkcmVmIHRoYXQncyBjbG9zZXIgdG8gdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eVxuICAgICAgICByZXR1cm4gYkRlZmluaXRpb25zSW5kZXggLSBhRGVmaW5pdGlvbnNJbmRleDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBBbGwgZWxzZSBpcyBlcXVhbCwgc28gdXNlIHRoZSBzaG9ydGVyIHBhdGgsIHdoaWNoIHdpbGwgcHJvZHVjZSB0aGUgc2hvcnRlc3QgcG9zc2libGUgcmVmZXJlbmNlXG4gICAgICAgIHJldHVybiBhLnBhdGhGcm9tUm9vdC5sZW5ndGggLSBiLnBhdGhGcm9tUm9vdC5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB2YXIgZmlsZSwgaGFzaCwgcGF0aEZyb21Sb290O1xuICBpbnZlbnRvcnkuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBkZWJ1ZygnUmUtbWFwcGluZyAkcmVmIHBvaW50ZXIgXCIlc1wiIGF0ICVzJywgZW50cnkuJHJlZi4kcmVmLCBlbnRyeS5wYXRoRnJvbVJvb3QpO1xuXG4gICAgaWYgKCFlbnRyeS5leHRlcm5hbCkge1xuICAgICAgLy8gVGhpcyAkcmVmIGFscmVhZHkgcmVzb2x2ZXMgdG8gdGhlIG1haW4gSlNPTiBTY2hlbWEgZmlsZVxuICAgICAgZW50cnkuJHJlZi4kcmVmID0gZW50cnkuaGFzaDtcbiAgICB9XG4gICAgZWxzZSBpZiAoZW50cnkuZmlsZSA9PT0gZmlsZSAmJiBlbnRyeS5oYXNoID09PSBoYXNoKSB7XG4gICAgICAvLyBUaGlzICRyZWYgcG9pbnRzIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBwcmV2b3VzICRyZWYsIHNvIHJlbWFwIGl0IHRvIHRoZSBzYW1lIHBhdGhcbiAgICAgIGVudHJ5LiRyZWYuJHJlZiA9IHBhdGhGcm9tUm9vdDtcbiAgICB9XG4gICAgZWxzZSBpZiAoZW50cnkuZmlsZSA9PT0gZmlsZSAmJiBlbnRyeS5oYXNoLmluZGV4T2YoaGFzaCArICcvJykgPT09IDApIHtcbiAgICAgIC8vIFRoaXMgJHJlZiBwb2ludHMgdG8gdGhlIGEgc3ViLXZhbHVlIGFzIHRoZSBwcmV2b3VzICRyZWYsIHNvIHJlbWFwIGl0IGJlbmVhdGggdGhhdCBwYXRoXG4gICAgICBlbnRyeS4kcmVmLiRyZWYgPSBQb2ludGVyLmpvaW4ocGF0aEZyb21Sb290LCBQb2ludGVyLnBhcnNlKGVudHJ5Lmhhc2gpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBXZSd2ZSBtb3ZlZCB0byBhIG5ldyBmaWxlIG9yIG5ldyBoYXNoXG4gICAgICBmaWxlID0gZW50cnkuZmlsZTtcbiAgICAgIGhhc2ggPSBlbnRyeS5oYXNoO1xuICAgICAgcGF0aEZyb21Sb290ID0gZW50cnkucGF0aEZyb21Sb290O1xuXG4gICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAkcmVmIHRvIHBvaW50IHRvIHRoaXMgdmFsdWUsIHNvIGRlcmVmZXJlbmNlIHRoZSB2YWx1ZS5cbiAgICAgIC8vIEFueSBvdGhlciAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIHZhbHVlIHdpbGwgcG9pbnQgdG8gdGhpcyAkcmVmIGluc3RlYWRcbiAgICAgIGVudHJ5LiRyZWYgPSBlbnRyeS5wYXJlbnRbZW50cnkua2V5XSA9ICRSZWYuZGVyZWZlcmVuY2UoZW50cnkuJHJlZiwgZW50cnkudmFsdWUpO1xuXG4gICAgICBpZiAoZW50cnkuY2lyY3VsYXIpIHtcbiAgICAgICAgLy8gVGhpcyAkcmVmIHBvaW50cyB0byBpdHNlbGZcbiAgICAgICAgZW50cnkuJHJlZi4kcmVmID0gZW50cnkucGF0aEZyb21Sb290O1xuICAgICAgfVxuICAgIH1cblxuICAgIGRlYnVnKCcgICAgbmV3IHZhbHVlOiAlcycsIChlbnRyeS4kcmVmICYmIGVudHJ5LiRyZWYuJHJlZikgPyBlbnRyeS4kcmVmLiRyZWYgOiAnW29iamVjdCBPYmplY3RdJyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRPRE9cbiAqL1xuZnVuY3Rpb24gZmluZEluSW52ZW50b3J5IChpbnZlbnRvcnksICRyZWZQYXJlbnQsICRyZWZLZXkpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnZlbnRvcnkubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZXhpc3RpbmdFbnRyeSA9IGludmVudG9yeVtpXTtcbiAgICBpZiAoZXhpc3RpbmdFbnRyeS5wYXJlbnQgPT09ICRyZWZQYXJlbnQgJiYgZXhpc3RpbmdFbnRyeS5rZXkgPT09ICRyZWZLZXkpIHtcbiAgICAgIHJldHVybiBleGlzdGluZ0VudHJ5O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVGcm9tSW52ZW50b3J5IChpbnZlbnRvcnksIGVudHJ5KSB7XG4gIHZhciBpbmRleCA9IGludmVudG9yeS5pbmRleE9mKGVudHJ5KTtcbiAgaW52ZW50b3J5LnNwbGljZShpbmRleCwgMSk7XG59XG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXHJcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXHJcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcclxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXHJcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRlcmVmZXJlbmNlO1xyXG5cclxuLyoqXHJcbiAqIENyYXdscyB0aGUgSlNPTiBzY2hlbWEsIGZpbmRzIGFsbCBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlbS5cclxuICogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgSlNPTiBzY2hlbWEgb2JqZWN0LCByZXBsYWNpbmcgSlNPTiByZWZlcmVuY2VzIHdpdGggdGhlaXIgcmVzb2x2ZWQgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlcn0gcGFyc2VyXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcclxuICovXHJcbmZ1bmN0aW9uIGRlcmVmZXJlbmNlIChwYXJzZXIsIG9wdGlvbnMpIHtcclxuICBkZWJ1ZygnRGVyZWZlcmVuY2luZyAkcmVmIHBvaW50ZXJzIGluICVzJywgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoKTtcclxuICB2YXIgZGVyZWZlcmVuY2VkID0gY3Jhd2wocGFyc2VyLnNjaGVtYSwgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoLCAnIycsIFtdLCBwYXJzZXIuJHJlZnMsIG9wdGlvbnMpO1xyXG4gIHBhcnNlci4kcmVmcy5jaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICBwYXJzZXIuc2NoZW1hID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIGRlcmVmZXJlbmNlcyBhbnkgSlNPTiByZWZlcmVuY2VzLlxyXG4gKlxyXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSB2YWx1ZSB0byBjcmF3bC4gSWYgaXQncyBub3QgYW4gb2JqZWN0IG9yIGFycmF5LCBpdCB3aWxsIGJlIGlnbm9yZWQuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgb2JqYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aEZyb21Sb290IC0gVGhlIHBhdGggb2YgYG9iamAgZnJvbSB0aGUgc2NoZW1hIHJvb3RcclxuICogQHBhcmFtIHtvYmplY3RbXX0gcGFyZW50cyAtIEFuIGFycmF5IG9mIHRoZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRlcmVmZXJlbmNlZFxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHt7dmFsdWU6IG9iamVjdCwgY2lyY3VsYXI6IGJvb2xlYW59fVxyXG4gKi9cclxuZnVuY3Rpb24gY3Jhd2wgKG9iaiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucykge1xyXG4gIHZhciBkZXJlZmVyZW5jZWQ7XHJcbiAgdmFyIHJlc3VsdCA9IHtcclxuICAgIHZhbHVlOiBvYmosXHJcbiAgICBjaXJjdWxhcjogZmFsc2VcclxuICB9O1xyXG5cclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XHJcbiAgICBwYXJlbnRzLnB1c2gob2JqKTtcclxuXHJcbiAgICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKG9iaiwgb3B0aW9ucykpIHtcclxuICAgICAgZGVyZWZlcmVuY2VkID0gZGVyZWZlcmVuY2UkUmVmKG9iaiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgIHJlc3VsdC5jaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICAgICAgcmVzdWx0LnZhbHVlID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcclxuICAgICAgICB2YXIga2V5UGF0aEZyb21Sb290ID0gUG9pbnRlci5qb2luKHBhdGhGcm9tUm9vdCwga2V5KTtcclxuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcclxuICAgICAgICB2YXIgY2lyY3VsYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZih2YWx1ZSwgb3B0aW9ucykpIHtcclxuICAgICAgICAgIGRlcmVmZXJlbmNlZCA9IGRlcmVmZXJlbmNlJFJlZih2YWx1ZSwga2V5UGF0aCwga2V5UGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICBjaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICAgICAgICAgIG9ialtrZXldID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChwYXJlbnRzLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICBkZXJlZmVyZW5jZWQgPSBjcmF3bCh2YWx1ZSwga2V5UGF0aCwga2V5UGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICAgICAgICBvYmpba2V5XSA9IGRlcmVmZXJlbmNlZC52YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjaXJjdWxhciA9IGZvdW5kQ2lyY3VsYXJSZWZlcmVuY2Uoa2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBcImlzQ2lyY3VsYXJcIiBmbGFnIGlmIHRoaXMgb3IgYW55IG90aGVyIHByb3BlcnR5IGlzIGNpcmN1bGFyXHJcbiAgICAgICAgcmVzdWx0LmNpcmN1bGFyID0gcmVzdWx0LmNpcmN1bGFyIHx8IGNpcmN1bGFyO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJlbnRzLnBvcCgpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlcmVmZXJlbmNlcyB0aGUgZ2l2ZW4gSlNPTiBSZWZlcmVuY2UsIGFuZCB0aGVuIGNyYXdscyB0aGUgcmVzdWx0aW5nIHZhbHVlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3skcmVmOiBzdHJpbmd9fSAkcmVmIC0gVGhlIEpTT04gUmVmZXJlbmNlIHRvIHJlc29sdmVcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGAkcmVmYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aEZyb21Sb290IC0gVGhlIHBhdGggb2YgYCRyZWZgIGZyb20gdGhlIHNjaGVtYSByb290XHJcbiAqIEBwYXJhbSB7b2JqZWN0W119IHBhcmVudHMgLSBBbiBhcnJheSBvZiB0aGUgcGFyZW50IG9iamVjdHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkZXJlZmVyZW5jZWRcclxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7e3ZhbHVlOiBvYmplY3QsIGNpcmN1bGFyOiBib29sZWFufX1cclxuICovXHJcbmZ1bmN0aW9uIGRlcmVmZXJlbmNlJFJlZiAoJHJlZiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucykge1xyXG4gIGRlYnVnKCdEZXJlZmVyZW5jaW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCAkcmVmLiRyZWYsIHBhdGgpO1xyXG5cclxuICB2YXIgJHJlZlBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xyXG4gIHZhciBwb2ludGVyID0gJHJlZnMuX3Jlc29sdmUoJHJlZlBhdGgsIG9wdGlvbnMpO1xyXG5cclxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlc1xyXG4gIHZhciBkaXJlY3RDaXJjdWxhciA9IHBvaW50ZXIuY2lyY3VsYXI7XHJcbiAgdmFyIGNpcmN1bGFyID0gZGlyZWN0Q2lyY3VsYXIgfHwgcGFyZW50cy5pbmRleE9mKHBvaW50ZXIudmFsdWUpICE9PSAtMTtcclxuICBjaXJjdWxhciAmJiBmb3VuZENpcmN1bGFyUmVmZXJlbmNlKHBhdGgsICRyZWZzLCBvcHRpb25zKTtcclxuXHJcbiAgLy8gRGVyZWZlcmVuY2UgdGhlIEpTT04gcmVmZXJlbmNlXHJcbiAgdmFyIGRlcmVmZXJlbmNlZFZhbHVlID0gJFJlZi5kZXJlZmVyZW5jZSgkcmVmLCBwb2ludGVyLnZhbHVlKTtcclxuXHJcbiAgLy8gQ3Jhd2wgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZSAodW5sZXNzIGl0J3MgY2lyY3VsYXIpXHJcbiAgaWYgKCFjaXJjdWxhcikge1xyXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBkZXJlZmVyZW5jZWQgdmFsdWUgaXMgY2lyY3VsYXJcclxuICAgIHZhciBkZXJlZmVyZW5jZWQgPSBjcmF3bChkZXJlZmVyZW5jZWRWYWx1ZSwgcG9pbnRlci5wYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBpZiAoY2lyY3VsYXIgJiYgIWRpcmVjdENpcmN1bGFyICYmIG9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIgPT09ICdpZ25vcmUnKSB7XHJcbiAgICAvLyBUaGUgdXNlciBoYXMgY2hvc2VuIHRvIFwiaWdub3JlXCIgY2lyY3VsYXIgcmVmZXJlbmNlcywgc28gZG9uJ3QgY2hhbmdlIHRoZSB2YWx1ZVxyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUgPSAkcmVmO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRpcmVjdENpcmN1bGFyKSB7XHJcbiAgICAvLyBUaGUgcG9pbnRlciBpcyBhIERJUkVDVCBjaXJjdWxhciByZWZlcmVuY2UgKGkuZS4gaXQgcmVmZXJlbmNlcyBpdHNlbGYpLlxyXG4gICAgLy8gU28gcmVwbGFjZSB0aGUgJHJlZiBwYXRoIHdpdGggdGhlIGFic29sdXRlIHBhdGggZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdFxyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUuJHJlZiA9IHBhdGhGcm9tUm9vdDtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBjaXJjdWxhcjogY2lyY3VsYXIsXHJcbiAgICB2YWx1ZTogZGVyZWZlcmVuY2VkVmFsdWVcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ2FsbGVkIHdoZW4gYSBjaXJjdWxhciByZWZlcmVuY2UgaXMgZm91bmQuXHJcbiAqIEl0IHNldHMgdGhlIHtAbGluayAkUmVmcyNjaXJjdWxhcn0gZmxhZywgYW5kIHRocm93cyBhbiBlcnJvciBpZiBvcHRpb25zLmRlcmVmZXJlbmNlLmNpcmN1bGFyIGlzIGZhbHNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5UGF0aCAtIFRoZSBKU09OIFJlZmVyZW5jZSBwYXRoIG9mIHRoZSBjaXJjdWxhciByZWZlcmVuY2VcclxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBhbHdheXMgcmV0dXJucyB0cnVlLCB0byBpbmRpY2F0ZSB0aGF0IGEgY2lyY3VsYXIgcmVmZXJlbmNlIHdhcyBmb3VuZFxyXG4gKi9cclxuZnVuY3Rpb24gZm91bmRDaXJjdWxhclJlZmVyZW5jZSAoa2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpIHtcclxuICAkcmVmcy5jaXJjdWxhciA9IHRydWU7XHJcbiAgaWYgKCFvcHRpb25zLmRlcmVmZXJlbmNlLmNpcmN1bGFyKSB7XHJcbiAgICB0aHJvdyBvbm8ucmVmZXJlbmNlKCdDaXJjdWxhciAkcmVmIHBvaW50ZXIgZm91bmQgYXQgJXMnLCBrZXlQYXRoKTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgT3B0aW9ucyA9IHJlcXVpcmUoJy4vb3B0aW9ucycpLFxuICAgICRSZWZzID0gcmVxdWlyZSgnLi9yZWZzJyksXG4gICAgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyksXG4gICAgbm9ybWFsaXplQXJncyA9IHJlcXVpcmUoJy4vbm9ybWFsaXplLWFyZ3MnKSxcbiAgICByZXNvbHZlRXh0ZXJuYWwgPSByZXF1aXJlKCcuL3Jlc29sdmUtZXh0ZXJuYWwnKSxcbiAgICBidW5kbGUgPSByZXF1aXJlKCcuL2J1bmRsZScpLFxuICAgIGRlcmVmZXJlbmNlID0gcmVxdWlyZSgnLi9kZXJlZmVyZW5jZScpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKSxcbiAgICBtYXliZSA9IHJlcXVpcmUoJ2NhbGwtbWUtbWF5YmUnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMuWUFNTCA9IHJlcXVpcmUoJy4vdXRpbC95YW1sJyk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBwYXJzZXMgYSBKU09OIHNjaGVtYSwgYnVpbGRzIGEgbWFwIG9mIGl0cyBKU09OIHJlZmVyZW5jZXMgYW5kIHRoZWlyIHJlc29sdmVkIHZhbHVlcyxcbiAqIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvciB0cmF2ZXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBkZXJlZmVyZW5jaW5nIHRob3NlIHJlZmVyZW5jZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWZQYXJzZXIgKCkge1xuICAvKipcbiAgICogVGhlIHBhcnNlZCAoYW5kIHBvc3NpYmx5IGRlcmVmZXJlbmNlZCkgSlNPTiBzY2hlbWEgb2JqZWN0XG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEByZWFkb25seVxuICAgKi9cbiAgdGhpcy5zY2hlbWEgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gICAqXG4gICAqIEB0eXBlIHskUmVmc31cbiAgICogQHJlYWRvbmx5XG4gICAqL1xuICB0aGlzLiRyZWZzID0gbmV3ICRSZWZzKCk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYS5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJlc29sdmUgYW55IEpTT04gcmVmZXJlbmNlcy5cbiAqIEl0IGp1c3QgcmVhZHMgYSBzaW5nbGUgZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LCBhbmQgcGFyc2UgaXQgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wYXJzZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UucGFyc2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEuXG4gKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCByZXNvbHZlIGFueSBKU09OIHJlZmVyZW5jZXMuXG4gKiBJdCBqdXN0IHJlYWRzIGEgc2luZ2xlIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCwgYW5kIHBhcnNlIGl0IGFzIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghYXJncy5wYXRoICYmICFhcmdzLnNjaGVtYSkge1xuICAgIHZhciBlcnIgPSBvbm8oJ0V4cGVjdGVkIGEgZmlsZSBwYXRoLCBVUkwsIG9yIG9iamVjdC4gR290ICVzJywgYXJncy5wYXRoIHx8IGFyZ3Muc2NoZW1hKTtcbiAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gIH1cblxuICAvLyBSZXNldCBldmVyeXRoaW5nXG4gIHRoaXMuc2NoZW1hID0gbnVsbDtcbiAgdGhpcy4kcmVmcyA9IG5ldyAkUmVmcygpO1xuXG4gIC8vIElmIHRoZSBwYXRoIGlzIGEgZmlsZXN5c3RlbSBwYXRoLCB0aGVuIGNvbnZlcnQgaXQgdG8gYSBVUkwuXG4gIC8vIE5PVEU6IEFjY29yZGluZyB0byB0aGUgSlNPTiBSZWZlcmVuY2Ugc3BlYywgdGhlc2Ugc2hvdWxkIGFscmVhZHkgYmUgVVJMcyxcbiAgLy8gYnV0LCBpbiBwcmFjdGljZSwgbWFueSBwZW9wbGUgdXNlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHMgaW5zdGVhZC5cbiAgLy8gU28gd2UncmUgYmVpbmcgZ2VuZXJvdXMgaGVyZSBhbmQgZG9pbmcgdGhlIGNvbnZlcnNpb24gYXV0b21hdGljYWxseS5cbiAgLy8gVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYSAxMDAlIGJ1bGxldHByb29mIHNvbHV0aW9uLlxuICAvLyBJZiBpdCBkb2Vzbid0IHdvcmsgZm9yIHlvdXIgdXNlLWNhc2UsIHRoZW4gdXNlIGEgVVJMIGluc3RlYWQuXG4gIHZhciBwYXRoVHlwZSA9ICdodHRwJztcbiAgaWYgKHVybC5pc0ZpbGVTeXN0ZW1QYXRoKGFyZ3MucGF0aCkpIHtcbiAgICBhcmdzLnBhdGggPSB1cmwuZnJvbUZpbGVTeXN0ZW1QYXRoKGFyZ3MucGF0aCk7XG4gICAgcGF0aFR5cGUgPSAnZmlsZSc7XG4gIH1cblxuICAvLyBSZXNvbHZlIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzY2hlbWFcbiAgYXJncy5wYXRoID0gdXJsLnJlc29sdmUodXJsLmN3ZCgpLCBhcmdzLnBhdGgpO1xuXG4gIGlmIChhcmdzLnNjaGVtYSAmJiB0eXBlb2YgYXJncy5zY2hlbWEgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gQSBzY2hlbWEgb2JqZWN0IHdhcyBwYXNzZWQtaW4uXG4gICAgLy8gU28gaW1tZWRpYXRlbHkgYWRkIGEgbmV3ICRSZWYgd2l0aCB0aGUgc2NoZW1hIG9iamVjdCBhcyBpdHMgdmFsdWVcbiAgICB2YXIgJHJlZiA9IHRoaXMuJHJlZnMuX2FkZChhcmdzLnBhdGgpO1xuICAgICRyZWYudmFsdWUgPSBhcmdzLnNjaGVtYTtcbiAgICAkcmVmLnBhdGhUeXBlID0gcGF0aFR5cGU7XG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhcmdzLnNjaGVtYSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gUGFyc2UgdGhlIHNjaGVtYSBmaWxlL3VybFxuICAgIHByb21pc2UgPSBwYXJzZShhcmdzLnBhdGgsIHRoaXMuJHJlZnMsIGFyZ3Mub3B0aW9ucyk7XG4gIH1cblxuICB2YXIgbWUgPSB0aGlzO1xuICByZXR1cm4gcHJvbWlzZVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGlmICghcmVzdWx0IHx8IHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnIHx8IEJ1ZmZlci5pc0J1ZmZlcihyZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG9uby5zeW50YXgoJ1wiJXNcIiBpcyBub3QgYSB2YWxpZCBKU09OIFNjaGVtYScsIG1lLiRyZWZzLl9yb290JFJlZi5wYXRoIHx8IHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbWUuc2NoZW1hID0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZSkpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hIGFuZCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBpbmNsdWRpbmcgcmVmZXJlbmNlcyBpblxuICogZXh0ZXJuYWxseS1yZWZlcmVuY2VkIGZpbGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQgYW5kIHJlc29sdmVkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdXG4gKiAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIHtAbGluayAkUmVmc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIEpTT04gcmVmZXJlbmNlc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayAkUmVmc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIEpTT04gcmVmZXJlbmNlc1xuICovXG4kUmVmUGFyc2VyLnJlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgQ2xhc3MgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtdGhpc1xuICB2YXIgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoKTtcbiAgcmV0dXJuIGluc3RhbmNlLnJlc29sdmUuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEgYW5kIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGluY2x1ZGluZyByZWZlcmVuY2VzIGluXG4gKiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCBhbmQgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja11cbiAqIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcblxuICByZXR1cm4gdGhpcy5wYXJzZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVFeHRlcm5hbChtZSwgYXJncy5vcHRpb25zKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlc29sdmUobWUuJHJlZnMpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBidW5kbGVzIGFsbCBleHRlcm5hbCByZWZlcmVuY2VzXG4gKiBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLiBUaGlzIHByb2R1Y2VzIGEgSlNPTiBzY2hlbWEgdGhhdCBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsXG4gKiBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLmJ1bmRsZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UuYnVuZGxlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBhbmQgYnVuZGxlcyBhbGwgZXh0ZXJuYWwgcmVmZXJlbmNlc1xuICogaW50byB0aGUgbWFpbiBKU09OIHNjaGVtYS4gVGhpcyBwcm9kdWNlcyBhIEpTT04gc2NoZW1hIHRoYXQgb25seSBoYXMgKmludGVybmFsKiByZWZlcmVuY2VzLFxuICogbm90IGFueSAqZXh0ZXJuYWwqIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBidW5kbGVkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUuYnVuZGxlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHRoaXMucmVzb2x2ZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYnVuZGxlKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS5zY2hlbWEpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlIEpTT04gc2NoZW1hLlxuICogVGhhdCBpcywgYWxsIEpTT04gcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIuZGVyZWZlcmVuY2UgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgQ2xhc3MgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtdGhpc1xuICB2YXIgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoKTtcbiAgcmV0dXJuIGluc3RhbmNlLmRlcmVmZXJlbmNlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBhbmQgZGVyZWZlcmVuY2VzIHRoZSBKU09OIHNjaGVtYS5cbiAqIFRoYXQgaXMsIGFsbCBKU09OIHJlZmVyZW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQsIHJlc29sdmVkLCBhbmQgZGVyZWZlcmVuY2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBkZXJlZmVyZW5jZWQgSlNPTiBzY2hlbWEgb2JqZWN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBkZXJlZmVyZW5jZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnByb3RvdHlwZS5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBtZSA9IHRoaXM7XG4gIHZhciBhcmdzID0gbm9ybWFsaXplQXJncyhhcmd1bWVudHMpO1xuXG4gIHJldHVybiB0aGlzLnJlc29sdmUoYXJncy5wYXRoLCBhcmdzLnNjaGVtYSwgYXJncy5vcHRpb25zKVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcmVmZXJlbmNlKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS5zY2hlbWEpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgT3B0aW9ucyA9IHJlcXVpcmUoJy4vb3B0aW9ucycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZUFyZ3M7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhY2NvdW50aW5nIGZvciBvcHRpb25hbCBhcmdzLlxuICpcbiAqIEBwYXJhbSB7QXJndW1lbnRzfSBhcmdzXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBcmdzIChhcmdzKSB7XG4gIHZhciBwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrO1xuICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7XG5cbiAgaWYgKHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGUgbGFzdCBwYXJhbWV0ZXIgaXMgYSBjYWxsYmFjayBmdW5jdGlvblxuICAgIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBwYXRoXG4gICAgcGF0aCA9IGFyZ3NbMF07XG4gICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHNjaGVtYSwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgdGhlIG9wdGlvbnNcbiAgICAgIHNjaGVtYSA9IGFyZ3NbMV07XG4gICAgICBvcHRpb25zID0gYXJnc1syXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgb3B0aW9uc1xuICAgICAgc2NoZW1hID0gdW5kZWZpbmVkO1xuICAgICAgb3B0aW9ucyA9IGFyZ3NbMV07XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIC8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHNjaGVtYVxuICAgIHBhdGggPSAnJztcbiAgICBzY2hlbWEgPSBhcmdzWzBdO1xuICAgIG9wdGlvbnMgPSBhcmdzWzFdO1xuICB9XG5cbiAgaWYgKCEob3B0aW9ucyBpbnN0YW5jZW9mIE9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IG5ldyBPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gIH07XG59XG4iLCIvKiBlc2xpbnQgbGluZXMtYXJvdW5kLWNvbW1lbnQ6IFsyLCB7YmVmb3JlQmxvY2tDb21tZW50OiBmYWxzZX1dICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBqc29uUGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL2pzb24nKSxcbiAgICB5YW1sUGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL3lhbWwnKSxcbiAgICB0ZXh0UGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL3RleHQnKSxcbiAgICBiaW5hcnlQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvYmluYXJ5JyksXG4gICAgZmlsZVJlc29sdmVyID0gcmVxdWlyZSgnLi9yZXNvbHZlcnMvZmlsZScpLFxuICAgIGh0dHBSZXNvbHZlciA9IHJlcXVpcmUoJy4vcmVzb2x2ZXJzL2h0dHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmUGFyc2VyT3B0aW9ucztcblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyBKU09OIHNjaGVtYXMgYXJlIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE92ZXJyaWRkZW4gb3B0aW9uc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWZQYXJzZXJPcHRpb25zIChvcHRpb25zKSB7XG4gIG1lcmdlKHRoaXMsICRSZWZQYXJzZXJPcHRpb25zLmRlZmF1bHRzKTtcbiAgbWVyZ2UodGhpcywgb3B0aW9ucyk7XG59XG5cbiRSZWZQYXJzZXJPcHRpb25zLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgZGlmZmVyZW50IHR5cGVzIG9mIGZpbGVzIHdpbGwgYmUgcGFyc2VkLlxuICAgKlxuICAgKiBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIHBhcnNlcnMgb2YgeW91ciBvd24sIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIHdpdGhcbiAgICogeW91ciBvd24gaW1wbGVtZW5hdGlvbiwgb3IgZGlzYWJsZSBhbnkgcGFyc2VyIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXG4gICAqL1xuICBwYXJzZToge1xuICAgIGpzb246IGpzb25QYXJzZXIsXG4gICAgeWFtbDogeWFtbFBhcnNlcixcbiAgICB0ZXh0OiB0ZXh0UGFyc2VyLFxuICAgIGJpbmFyeTogYmluYXJ5UGFyc2VyLFxuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBKU09OIFJlZmVyZW5jZXMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICpcbiAgICogWW91IGNhbiBhZGQgYWRkaXRpb25hbCByZXNvbHZlcnMgb2YgeW91ciBvd24sIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIHdpdGhcbiAgICogeW91ciBvd24gaW1wbGVtZW5hdGlvbiwgb3IgZGlzYWJsZSBhbnkgcmVzb2x2ZXIgYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cbiAgICovXG4gIHJlc29sdmU6IHtcbiAgICBmaWxlOiBmaWxlUmVzb2x2ZXIsXG4gICAgaHR0cDogaHR0cFJlc29sdmVyLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGV4dGVybmFsICRyZWYgcG9pbnRlcnMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgdGhlbiBub25lIG9mIGFib3ZlIHJlc29sdmVycyB3aWxsIGJlIGNhbGxlZC5cbiAgICAgKiBJbnN0ZWFkLCBleHRlcm5hbCAkcmVmIHBvaW50ZXJzIHdpbGwgc2ltcGx5IGJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBleHRlcm5hbDogdHJ1ZSxcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdHlwZXMgb2YgSlNPTiByZWZlcmVuY2VzIHRoYXQgYXJlIGFsbG93ZWQuXG4gICAqL1xuICBkZXJlZmVyZW5jZToge1xuICAgIC8qKlxuICAgICAqIERlcmVmZXJlbmNlIGNpcmN1bGFyIChyZWN1cnNpdmUpIEpTT04gcmVmZXJlbmNlcz9cbiAgICAgKiBJZiBmYWxzZSwgdGhlbiBhIHtAbGluayBSZWZlcmVuY2VFcnJvcn0gd2lsbCBiZSB0aHJvd24gaWYgYSBjaXJjdWxhciByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogSWYgXCJpZ25vcmVcIiwgdGhlbiBjaXJjdWxhciByZWZlcmVuY2VzIHdpbGwgbm90IGJlIGRlcmVmZXJlbmNlZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufHN0cmluZ31cbiAgICAgKi9cbiAgICBjaXJjdWxhcjogdHJ1ZVxuICB9LFxufTtcblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBvYmplY3QgaW50byB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0IC0gVGhlIG9iamVjdCB0aGF0IHdlJ3JlIHBvcHVsYXRpbmdcbiAqIEBwYXJhbSB7P29iamVjdH0gc291cmNlIC0gVGhlIG9wdGlvbnMgdGhhdCBhcmUgYmVpbmcgbWVyZ2VkXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBtZXJnZSAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKGlzTWVyZ2VhYmxlKHNvdXJjZSkpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciBzb3VyY2VTZXR0aW5nID0gc291cmNlW2tleV07XG4gICAgICB2YXIgdGFyZ2V0U2V0dGluZyA9IHRhcmdldFtrZXldO1xuXG4gICAgICBpZiAoaXNNZXJnZWFibGUoc291cmNlU2V0dGluZykpIHtcbiAgICAgICAgLy8gSXQncyBhIG5lc3RlZCBvYmplY3QsIHNvIG1lcmdlIGl0IHJlY3Vyc2l2ZWx5XG4gICAgICAgIHRhcmdldFtrZXldID0gbWVyZ2UodGFyZ2V0U2V0dGluZyB8fCB7fSwgc291cmNlU2V0dGluZyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChzb3VyY2VTZXR0aW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gSXQncyBhIHNjYWxhciB2YWx1ZSwgZnVuY3Rpb24sIG9yIGFycmF5LiBObyBtZXJnaW5nIG5lY2Vzc2FyeS4gSnVzdCBvdmVyd3JpdGUgdGhlIHRhcmdldCB2YWx1ZS5cbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2VTZXR0aW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIG1lcmdlZCxcbiAqIG9yIGlmIGl0IGlzIGEgc2NhbGFyIHZhbHVlIHRoYXQgc2hvdWxkIGp1c3Qgb3ZlcnJpZGUgdGhlIHRhcmdldCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gICB7Kn0gIHZhbFxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTWVyZ2VhYmxlICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAmJlxuICAgICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JykgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWwpICYmXG4gICAgISh2YWwgaW5zdGFuY2VvZiBSZWdFeHApICYmXG4gICAgISh2YWwgaW5zdGFuY2VvZiBEYXRlKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpLFxuICAgIHBsdWdpbnMgPSByZXF1aXJlKCcuL3V0aWwvcGx1Z2lucycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgdGhlIHNwZWNpZmllZCBmaWxlIHBhdGggb3IgVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhpcyBwYXRoIE1VU1QgYWxyZWFkeSBiZSByZXNvbHZlZCwgc2luY2UgYHJlYWRgIGRvZXNuJ3Qga25vdyB0aGUgcmVzb2x1dGlvbiBjb250ZXh0XG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIGZpbGUgY29udGVudHMsIE5PVCB0aGUgcmF3IChCdWZmZXIpIGNvbnRlbnRzLlxuICovXG5mdW5jdGlvbiBwYXJzZSAocGF0aCwgJHJlZnMsIG9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICAvLyBSZW1vdmUgdGhlIFVSTCBmcmFnbWVudCwgaWYgYW55XG4gICAgcGF0aCA9IHVybC5zdHJpcEhhc2gocGF0aCk7XG5cbiAgICAvLyBBZGQgYSBuZXcgJFJlZiBmb3IgdGhpcyBmaWxlLCBldmVuIHRob3VnaCB3ZSBkb24ndCBoYXZlIHRoZSB2YWx1ZSB5ZXQuXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3Qgc2ltdWx0YW5lb3VzbHkgcmVhZCAmIHBhcnNlIHRoZSBzYW1lIGZpbGUgbXVsdGlwbGUgdGltZXNcbiAgICB2YXIgJHJlZiA9ICRyZWZzLl9hZGQocGF0aCk7XG5cbiAgICAvLyBUaGlzIFwiZmlsZSBvYmplY3RcIiB3aWxsIGJlIHBhc3NlZCB0byBhbGwgcmVzb2x2ZXJzIGFuZCBwYXJzZXJzLlxuICAgIHZhciBmaWxlID0ge1xuICAgICAgdXJsOiBwYXRoLFxuICAgICAgZXh0ZW5zaW9uOiB1cmwuZ2V0RXh0ZW5zaW9uKHBhdGgpLFxuICAgIH07XG5cbiAgICAvLyBSZWFkIHRoZSBmaWxlIGFuZCB0aGVuIHBhcnNlIHRoZSBkYXRhXG4gICAgcmV0dXJuIHJlYWRGaWxlKGZpbGUsIG9wdGlvbnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzb2x2ZXIpIHtcbiAgICAgICAgJHJlZi5wYXRoVHlwZSA9IHJlc29sdmVyLnBsdWdpbi5uYW1lO1xuICAgICAgICBmaWxlLmRhdGEgPSByZXNvbHZlci5yZXN1bHQ7XG4gICAgICAgIHJldHVybiBwYXJzZUZpbGUoZmlsZSwgb3B0aW9ucyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHBhcnNlcikge1xuICAgICAgICAkcmVmLnZhbHVlID0gcGFyc2VyLnJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZXN1bHQ7XG4gICAgICB9KTtcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBnaXZlbiBmaWxlLCB1c2luZyB0aGUgY29uZmlndXJlZCByZXNvbHZlciBwbHVnaW5zXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSByYXcgZmlsZSBjb250ZW50cyBhbmQgdGhlIHJlc29sdmVyIHRoYXQgd2FzIHVzZWQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRGaWxlIChmaWxlLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ1JlYWRpbmcgJXMnLCBmaWxlLnVybCk7XG5cbiAgICAvLyBGaW5kIHRoZSByZXNvbHZlcnMgdGhhdCBjYW4gcmVhZCB0aGlzIGZpbGVcbiAgICB2YXIgcmVzb2x2ZXJzID0gcGx1Z2lucy5hbGwob3B0aW9ucy5yZXNvbHZlKTtcbiAgICByZXNvbHZlcnMgPSBwbHVnaW5zLmZpbHRlcihyZXNvbHZlcnMsICdjYW5SZWFkJywgZmlsZSk7XG5cbiAgICAvLyBSdW4gdGhlIHJlc29sdmVycywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHN1Y2NlZWRzXG4gICAgcGx1Z2lucy5zb3J0KHJlc29sdmVycyk7XG4gICAgcGx1Z2lucy5ydW4ocmVzb2x2ZXJzLCAncmVhZCcsIGZpbGUpXG4gICAgICAudGhlbihyZXNvbHZlLCBvbkVycm9yKTtcblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgLy8gVGhyb3cgdGhlIG9yaWdpbmFsIGVycm9yLCBpZiBpdCdzIG9uZSBvZiBvdXIgb3duICh1c2VyLWZyaWVuZGx5KSBlcnJvcnMuXG4gICAgICAvLyBPdGhlcndpc2UsIHRocm93IGEgZ2VuZXJpYywgZnJpZW5kbHkgZXJyb3IuXG4gICAgICBpZiAoZXJyICYmICEoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlamVjdChvbm8uc3ludGF4KCdVbmFibGUgdG8gcmVzb2x2ZSAkcmVmIHBvaW50ZXIgXCIlc1wiJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gZmlsZSdzIGNvbnRlbnRzLCB1c2luZyB0aGUgY29uZmlndXJlZCBwYXJzZXIgcGx1Z2lucy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBmaWxlIGNvbnRlbnRzIGFuZCB0aGUgcGFyc2VyIHRoYXQgd2FzIHVzZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmlsZSAoZmlsZSwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGRlYnVnKCdQYXJzaW5nICVzJywgZmlsZS51cmwpO1xuXG4gICAgLy8gRmluZCB0aGUgcGFyc2VycyB0aGF0IGNhbiByZWFkIHRoaXMgZmlsZSB0eXBlLlxuICAgIC8vIElmIG5vbmUgb2YgdGhlIHBhcnNlcnMgYXJlIGFuIGV4YWN0IG1hdGNoIGZvciB0aGlzIGZpbGUsIHRoZW4gd2UnbGwgdHJ5IEFMTCBvZiB0aGVtLlxuICAgIC8vIFRoaXMgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBmaWxlIElTIGEgc3VwcG9ydGVkIHR5cGUsIGp1c3Qgd2l0aCBhbiB1bmtub3duIGV4dGVuc2lvbi5cbiAgICB2YXIgYWxsUGFyc2VycyA9IHBsdWdpbnMuYWxsKG9wdGlvbnMucGFyc2UpO1xuICAgIHZhciBmaWx0ZXJlZFBhcnNlcnMgPSBwbHVnaW5zLmZpbHRlcihhbGxQYXJzZXJzLCAnY2FuUGFyc2UnLCBmaWxlKTtcbiAgICB2YXIgcGFyc2VycyA9IGZpbHRlcmVkUGFyc2Vycy5sZW5ndGggPiAwID8gZmlsdGVyZWRQYXJzZXJzIDogYWxsUGFyc2VycztcblxuICAgIC8vIFJ1biB0aGUgcGFyc2VycywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHN1Y2NlZWRzXG4gICAgcGx1Z2lucy5zb3J0KHBhcnNlcnMpO1xuICAgIHBsdWdpbnMucnVuKHBhcnNlcnMsICdwYXJzZScsIGZpbGUpXG4gICAgICAudGhlbihvblBhcnNlZCwgb25FcnJvcik7XG5cbiAgICBmdW5jdGlvbiBvblBhcnNlZCAocGFyc2VyKSB7XG4gICAgICBpZiAoIXBhcnNlci5wbHVnaW4uYWxsb3dFbXB0eSAmJiBpc0VtcHR5KHBhcnNlci5yZXN1bHQpKSB7XG4gICAgICAgIHJlamVjdChvbm8uc3ludGF4KCdFcnJvciBwYXJzaW5nIFwiJXNcIiBhcyAlcy4gXFxuUGFyc2VkIHZhbHVlIGlzIGVtcHR5JywgZmlsZS51cmwsIHBhcnNlci5wbHVnaW4ubmFtZSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlc29sdmUocGFyc2VyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkVycm9yIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZXJyID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoZXJyLCAnRXJyb3IgcGFyc2luZyAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ1VuYWJsZSB0byBwYXJzZSAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhcnNlZCB2YWx1ZSBpcyBcImVtcHR5XCIuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkgKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB8fFxuICAgIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCSU5BUllfUkVHRVhQID0gL1xcLihqcGVnfGpwZ3xnaWZ8cG5nfGJtcHxpY28pJC9pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcGFyc2VyIHdpbGwgcnVuLCBpbiByZWxhdGlvbiB0byBvdGhlciBwYXJzZXJzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgb3JkZXI6IDQwMCxcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBcImVtcHR5XCIgZmlsZXMgKHplcm8gYnl0ZXMpLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIGJlIHNraXBwZWQsIFVOTEVTUyBhbGwgcGFyc2VycyByZXR1cm5lZCBmYWxzZSwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGlzQmluYXJ5IChmaWxlKSB7XG4gICAgLy8gVXNlIHRoaXMgcGFyc2VyIGlmIHRoZSBmaWxlIGlzIGEgQnVmZmVyLCBhbmQgaGFzIGEga25vd24gYmluYXJ5IGV4dGVuc2lvblxuICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSAmJiBCSU5BUllfUkVHRVhQLnRlc3QoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGRhdGEgYXMgYSBCdWZmZXIgKGJ5dGUgYXJyYXkpLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZUJpbmFyeSAoZmlsZSkge1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZpbGUuZGF0YTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGlzIHdpbGwgcmVqZWN0IGlmIGRhdGEgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBhIHN0cmluZyBvciB0eXBlZCBhcnJheVxuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIoZmlsZS5kYXRhKTtcbiAgICB9XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMTAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcy4gVGhpcyBpbmNsdWRlcyB6ZXJvLWJ5dGUgZmlsZXMsIGFzIHdlbGwgYXMgZW1wdHkgSlNPTiBvYmplY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IG1hdGNoIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IGRvbid0IG1hdGNoIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIG5vbmUgb2YgdGhlIHBhcnNlcnMgbWF0Y2gsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtSZWdFeHB8c3RyaW5nW118ZnVuY3Rpb259XG4gICAqL1xuICBjYW5QYXJzZTogJy5qc29uJyxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIEpTT05cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlSlNPTiAoZmlsZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGZpbGUuZGF0YTtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZGF0YS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpOyAgLy8gVGhpcyBtaXJyb3JzIHRoZSBZQU1MIGJlaGF2aW9yXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGRhdGEgaXMgYWxyZWFkeSBhIEphdmFTY3JpcHQgdmFsdWUgKG9iamVjdCwgYXJyYXksIG51bWJlciwgbnVsbCwgTmFOLCBldGMuKVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVEVYVF9SRUdFWFAgPSAvXFwuKHR4dHxodG18aHRtbHxtZHx4bWx8anN8bWlufG1hcHxjc3N8c2Nzc3xsZXNzfHN2ZykkL2k7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMzAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcyAoemVybyBieXRlcykuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogVGhlIGVuY29kaW5nIHRoYXQgdGhlIHRleHQgaXMgZXhwZWN0ZWQgdG8gYmUgaW4uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBlbmNvZGluZzogJ3V0ZjgnLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyBwYXJzZXIgY2FuIHBhcnNlIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFBhcnNlcnMgdGhhdCByZXR1cm4gdHJ1ZSB3aWxsIGJlIHRyaWVkLCBpbiBvcmRlciwgdW50aWwgb25lIHN1Y2Nlc3NmdWxseSBwYXJzZXMgdGhlIGZpbGUuXG4gICAqIFBhcnNlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBiZSBza2lwcGVkLCBVTkxFU1MgYWxsIHBhcnNlcnMgcmV0dXJuZWQgZmFsc2UsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblBhcnNlOiBmdW5jdGlvbiBpc1RleHQgKGZpbGUpIHtcbiAgICAvLyBVc2UgdGhpcyBwYXJzZXIgaWYgdGhlIGZpbGUgaXMgYSBzdHJpbmcgb3IgQnVmZmVyLCBhbmQgaGFzIGEga25vd24gdGV4dC1iYXNlZCBleHRlbnNpb25cbiAgICByZXR1cm4gKHR5cGVvZiBmaWxlLmRhdGEgPT09ICdzdHJpbmcnIHx8IEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSAmJiBURVhUX1JFR0VYUC50ZXN0KGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIHRleHRcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VUZXh0IChmaWxlKSB7XG4gICAgaWYgKHR5cGVvZiBmaWxlLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhO1xuICAgIH1cbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZpbGUuZGF0YS50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgaXMgbm90IHRleHQnKTtcbiAgICB9XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBZQU1MID0gcmVxdWlyZSgnLi4vdXRpbC95YW1sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMjAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcy4gVGhpcyBpbmNsdWRlcyB6ZXJvLWJ5dGUgZmlsZXMsIGFzIHdlbGwgYXMgZW1wdHkgSlNPTiBvYmplY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IG1hdGNoIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IGRvbid0IG1hdGNoIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIG5vbmUgb2YgdGhlIHBhcnNlcnMgbWF0Y2gsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtSZWdFeHB8c3RyaW5nW118ZnVuY3Rpb259XG4gICAqL1xuICBjYW5QYXJzZTogWycueWFtbCcsICcueW1sJywgJy5qc29uJ10sICAvLyBKU09OIGlzIHZhbGlkIFlBTUxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIFlBTUxcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlWUFNTCAoZmlsZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGZpbGUuZGF0YTtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXNvbHZlKFlBTUwucGFyc2UoZGF0YSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGRhdGEgaXMgYWxyZWFkeSBhIEphdmFTY3JpcHQgdmFsdWUgKG9iamVjdCwgYXJyYXksIG51bWJlciwgbnVsbCwgTmFOLCBldGMuKVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvaW50ZXI7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgc2xhc2hlcyA9IC9cXC8vZyxcbiAgICB0aWxkZXMgPSAvfi9nLFxuICAgIGVzY2FwZWRTbGFzaCA9IC9+MS9nLFxuICAgIGVzY2FwZWRUaWxkZSA9IC9+MC9nO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbmdsZSBKU09OIHBvaW50ZXIgYW5kIGl0cyByZXNvbHZlZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0geyRSZWZ9ICRyZWZcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZyaWVuZGx5UGF0aF0gLSBUaGUgb3JpZ2luYWwgdXNlci1zcGVjaWZpZWQgcGF0aCAodXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gUG9pbnRlciAoJHJlZiwgcGF0aCwgZnJpZW5kbHlQYXRoKSB7XG4gIC8qKlxuICAgKiBUaGUge0BsaW5rICRSZWZ9IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMge0BsaW5rIFBvaW50ZXJ9IG9iamVjdC5cbiAgICogQHR5cGUgeyRSZWZ9XG4gICAqL1xuICB0aGlzLiRyZWYgPSAkcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIG9yIFVSTCwgY29udGFpbmluZyB0aGUgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIHBhdGggb2YgdGhlIG1haW4gSlNPTiBzY2hlbWEgZmlsZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHRoaXMucGF0aCA9IHBhdGg7XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBwYXRoIG9yIFVSTCwgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLm9yaWdpbmFsUGF0aCA9IGZyaWVuZGx5UGF0aCB8fCBwYXRoO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIEpTT04gcG9pbnRlci5cbiAgICogQ2FuIGJlIGFueSBKU09OIHR5cGUsIG5vdCBqdXN0IG9iamVjdHMuIFVua25vd24gZmlsZSB0eXBlcyBhcmUgcmVwcmVzZW50ZWQgYXMgQnVmZmVycyAoYnl0ZSBhcnJheXMpLlxuICAgKiBAdHlwZSB7Pyp9XG4gICAqL1xuICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcG9pbnRlciByZWZlcmVuY2VzIGl0c2VsZi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICB0aGlzLmNpcmN1bGFyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaW5kaXJlY3QgcmVmZXJlbmNlcyB0aGF0IHdlcmUgdHJhdmVyc2VkIHRvIHJlc29sdmUgdGhlIHZhbHVlLlxuICAgKiBSZXNvbHZpbmcgYSBzaW5nbGUgcG9pbnRlciBtYXkgcmVxdWlyZSByZXNvbHZpbmcgbXVsdGlwbGUgJFJlZnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICB0aGlzLmluZGlyZWN0aW9ucyA9IDA7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IHdpdGhpbiB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgY3Jhd2xlZFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxuICogUmV0dXJucyBhIEpTT04gcG9pbnRlciB3aG9zZSB7QGxpbmsgUG9pbnRlciN2YWx1ZX0gaXMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogSWYgcmVzb2x2aW5nIHRoaXMgdmFsdWUgcmVxdWlyZWQgcmVzb2x2aW5nIG90aGVyIEpTT04gcmVmZXJlbmNlcywgdGhlblxuICogdGhlIHtAbGluayBQb2ludGVyIyRyZWZ9IGFuZCB7QGxpbmsgUG9pbnRlciNwYXRofSB3aWxsIHJlZmxlY3QgdGhlIHJlc29sdXRpb24gcGF0aFxuICogb2YgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5Qb2ludGVyLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKG9iaiwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gUG9pbnRlci5wYXJzZSh0aGlzLnBhdGgpO1xuXG4gIC8vIENyYXdsIHRoZSBvYmplY3QsIG9uZSB0b2tlbiBhdCBhIHRpbWVcbiAgdGhpcy52YWx1ZSA9IG9iajtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKSkge1xuICAgICAgLy8gVGhlICRyZWYgcGF0aCBoYXMgY2hhbmdlZCwgc28gYXBwZW5kIHRoZSByZW1haW5pbmcgdG9rZW5zIHRvIHRoZSBwYXRoXG4gICAgICB0aGlzLnBhdGggPSBQb2ludGVyLmpvaW4odGhpcy5wYXRoLCB0b2tlbnMuc2xpY2UoaSkpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICBpZiAodGhpcy52YWx1ZVt0b2tlbl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgb25vLnN5bnRheCgnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblRva2VuIFwiJXNcIiBkb2VzIG5vdCBleGlzdC4nLCB0aGlzLm9yaWdpbmFsUGF0aCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlW3Rva2VuXTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNvbHZlIHRoZSBmaW5hbCB2YWx1ZVxuICByZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBjcmF3bGVkXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gdGhlIHZhbHVlIHRvIGFzc2lnblxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHsqfVxuICogUmV0dXJucyB0aGUgbW9kaWZpZWQgb2JqZWN0LCBvciBhbiBlbnRpcmVseSBuZXcgb2JqZWN0IGlmIHRoZSBlbnRpcmUgb2JqZWN0IGlzIG92ZXJ3cml0dGVuLlxuICovXG5Qb2ludGVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2JqLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gUG9pbnRlci5wYXJzZSh0aGlzLnBhdGgpO1xuICB2YXIgdG9rZW47XG5cbiAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBUaGVyZSBhcmUgbm8gdG9rZW5zLCByZXBsYWNlIHRoZSBlbnRpcmUgb2JqZWN0IHdpdGggdGhlIG5ldyB2YWx1ZVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBDcmF3bCB0aGUgb2JqZWN0LCBvbmUgdG9rZW4gYXQgYSB0aW1lXG4gIHRoaXMudmFsdWUgPSBvYmo7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIHJlc29sdmVJZiRSZWYodGhpcywgb3B0aW9ucyk7XG5cbiAgICB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW3Rva2VuXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBUaGUgdG9rZW4gZXhpc3RzXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZVt0b2tlbl07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gVGhlIHRva2VuIGRvZXNuJ3QgZXhpc3QsIHNvIGNyZWF0ZSBpdFxuICAgICAgdGhpcy52YWx1ZSA9IHNldFZhbHVlKHRoaXMsIHRva2VuLCB7fSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZmluYWwgdG9rZW5cbiAgcmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKTtcbiAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICBzZXRWYWx1ZSh0aGlzLCB0b2tlbiwgdmFsdWUpO1xuXG4gIC8vIFJldHVybiB0aGUgdXBkYXRlZCBvYmplY3RcbiAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEgSlNPTiBwb2ludGVyIChvciBhIHBhdGggY29udGFpbmluZyBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaClcbiAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBwb2ludGVyJ3MgdG9rZW5zLlxuICogKGUuZy4gXCJzY2hlbWEuanNvbiMvZGVmaW5pdGlvbnMvcGVyc29uL25hbWVcIiA9PiBbXCJkZWZpbml0aW9uc1wiLCBcInBlcnNvblwiLCBcIm5hbWVcIl0pXG4gKlxuICogVGhlIHBvaW50ZXIgaXMgcGFyc2VkIGFjY29yZGluZyB0byBSRkMgNjkwMVxuICoge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxI3NlY3Rpb24tM31cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ1tdfVxuICovXG5Qb2ludGVyLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgLy8gR2V0IHRoZSBKU09OIHBvaW50ZXIgZnJvbSB0aGUgcGF0aCdzIGhhc2hcbiAgdmFyIHBvaW50ZXIgPSB1cmwuZ2V0SGFzaChwYXRoKS5zdWJzdHIoMSk7XG5cbiAgLy8gSWYgdGhlcmUncyBubyBwb2ludGVyLCB0aGVuIHRoZXJlIGFyZSBubyB0b2tlbnMsXG4gIC8vIHNvIHJldHVybiBhbiBlbXB0eSBhcnJheVxuICBpZiAoIXBvaW50ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBTcGxpdCBpbnRvIGFuIGFycmF5XG4gIHBvaW50ZXIgPSBwb2ludGVyLnNwbGl0KCcvJyk7XG5cbiAgLy8gRGVjb2RlIGVhY2ggcGFydCwgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlci5sZW5ndGg7IGkrKykge1xuICAgIHBvaW50ZXJbaV0gPSBkZWNvZGVVUklDb21wb25lbnQocG9pbnRlcltpXS5yZXBsYWNlKGVzY2FwZWRTbGFzaCwgJy8nKS5yZXBsYWNlKGVzY2FwZWRUaWxkZSwgJ34nKSk7XG4gIH1cblxuICBpZiAocG9pbnRlclswXSAhPT0gJycpIHtcbiAgICB0aHJvdyBvbm8uc3ludGF4KCdJbnZhbGlkICRyZWYgcG9pbnRlciBcIiVzXCIuIFBvaW50ZXJzIG11c3QgYmVnaW4gd2l0aCBcIiMvXCInLCBwb2ludGVyKTtcbiAgfVxuXG4gIHJldHVybiBwb2ludGVyLnNsaWNlKDEpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgSlNPTiBwb2ludGVyIHBhdGgsIGJ5IGpvaW5pbmcgb25lIG9yIG1vcmUgdG9rZW5zIHRvIGEgYmFzZSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIC0gVGhlIGJhc2UgcGF0aCAoZS5nLiBcInNjaGVtYS5qc29uIy9kZWZpbml0aW9ucy9wZXJzb25cIilcbiAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSB0b2tlbnMgLSBUaGUgdG9rZW4ocykgdG8gYXBwZW5kIChlLmcuIFtcIm5hbWVcIiwgXCJmaXJzdFwiXSlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblBvaW50ZXIuam9pbiA9IGZ1bmN0aW9uIChiYXNlLCB0b2tlbnMpIHtcbiAgLy8gRW5zdXJlIHRoYXQgdGhlIGJhc2UgcGF0aCBjb250YWlucyBhIGhhc2hcbiAgaWYgKGJhc2UuaW5kZXhPZignIycpID09PSAtMSkge1xuICAgIGJhc2UgKz0gJyMnO1xuICB9XG5cbiAgLy8gQXBwZW5kIGVhY2ggdG9rZW4gdG8gdGhlIGJhc2UgcGF0aFxuICB0b2tlbnMgPSBBcnJheS5pc0FycmF5KHRva2VucykgPyB0b2tlbnMgOiBbdG9rZW5zXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgLy8gRW5jb2RlIHRoZSB0b2tlbiwgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gICAgYmFzZSArPSAnLycgKyBlbmNvZGVVUklDb21wb25lbnQodG9rZW4ucmVwbGFjZSh0aWxkZXMsICd+MCcpLnJlcGxhY2Uoc2xhc2hlcywgJ34xJykpO1xuICB9XG5cbiAgcmV0dXJuIGJhc2U7XG59O1xuXG4vKipcbiAqIElmIHRoZSBnaXZlbiBwb2ludGVyJ3Mge0BsaW5rIFBvaW50ZXIjdmFsdWV9IGlzIGEgSlNPTiByZWZlcmVuY2UsXG4gKiB0aGVuIHRoZSByZWZlcmVuY2UgaXMgcmVzb2x2ZWQgYW5kIHtAbGluayBQb2ludGVyI3ZhbHVlfSBpcyByZXBsYWNlZCB3aXRoIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEluIGFkZGl0aW9uLCB7QGxpbmsgUG9pbnRlciNwYXRofSBhbmQge0BsaW5rIFBvaW50ZXIjJHJlZn0gYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGVcbiAqIHJlc29sdXRpb24gcGF0aCBvZiB0aGUgbmV3IHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7UG9pbnRlcn0gcG9pbnRlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlc29sdXRpb24gcGF0aCBjaGFuZ2VkXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVJZiRSZWYgKHBvaW50ZXIsIG9wdGlvbnMpIHtcbiAgLy8gSXMgdGhlIHZhbHVlIGEgSlNPTiByZWZlcmVuY2U/IChhbmQgYWxsb3dlZD8pXG5cbiAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZihwb2ludGVyLnZhbHVlLCBvcHRpb25zKSkge1xuICAgIHZhciAkcmVmUGF0aCA9IHVybC5yZXNvbHZlKHBvaW50ZXIucGF0aCwgcG9pbnRlci52YWx1ZS4kcmVmKTtcblxuICAgIGlmICgkcmVmUGF0aCA9PT0gcG9pbnRlci5wYXRoKSB7XG4gICAgICAvLyBUaGUgdmFsdWUgaXMgYSByZWZlcmVuY2UgdG8gaXRzZWxmLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uXG4gICAgICBwb2ludGVyLmNpcmN1bGFyID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgcmVzb2x2ZWQgPSBwb2ludGVyLiRyZWYuJHJlZnMuX3Jlc29sdmUoJHJlZlBhdGgsIG9wdGlvbnMpO1xuICAgICAgcG9pbnRlci5pbmRpcmVjdGlvbnMgKz0gcmVzb2x2ZWQuaW5kaXJlY3Rpb25zICsgMTtcblxuICAgICAgaWYgKCRSZWYuaXNFeHRlbmRlZCRSZWYocG9pbnRlci52YWx1ZSkpIHtcbiAgICAgICAgLy8gVGhpcyBKU09OIHJlZmVyZW5jZSBcImV4dGVuZHNcIiB0aGUgcmVzb2x2ZWQgdmFsdWUsIHJhdGhlciB0aGFuIHNpbXBseSBwb2ludGluZyB0byBpdC5cbiAgICAgICAgLy8gU28gdGhlIHJlc29sdmVkIHBhdGggZG9lcyBOT1QgY2hhbmdlLiAgSnVzdCB0aGUgdmFsdWUgZG9lcy5cbiAgICAgICAgcG9pbnRlci52YWx1ZSA9ICRSZWYuZGVyZWZlcmVuY2UocG9pbnRlci52YWx1ZSwgcmVzb2x2ZWQudmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgIHBvaW50ZXIuJHJlZiA9IHJlc29sdmVkLiRyZWY7XG4gICAgICAgIHBvaW50ZXIucGF0aCA9IHJlc29sdmVkLnBhdGg7XG4gICAgICAgIHBvaW50ZXIudmFsdWUgPSByZXNvbHZlZC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2V0cyB0aGUgc3BlY2lmaWVkIHRva2VuIHZhbHVlIG9mIHRoZSB7QGxpbmsgUG9pbnRlciN2YWx1ZX0uXG4gKlxuICogVGhlIHRva2VuIGlzIGV2YWx1YXRlZCBhY2NvcmRpbmcgdG8gUkZDIDY5MDEuXG4gKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi00fVxuICpcbiAqIEBwYXJhbSB7UG9pbnRlcn0gcG9pbnRlciAtIFRoZSBKU09OIFBvaW50ZXIgd2hvc2UgdmFsdWUgd2lsbCBiZSBtb2RpZmllZFxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIC0gQSBKU09OIFBvaW50ZXIgdG9rZW4gdGhhdCBpbmRpY2F0ZXMgaG93IHRvIG1vZGlmeSBgb2JqYFxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIGFzc2lnbmVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNldFZhbHVlIChwb2ludGVyLCB0b2tlbiwgdmFsdWUpIHtcbiAgaWYgKHBvaW50ZXIudmFsdWUgJiYgdHlwZW9mIHBvaW50ZXIudmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKHRva2VuID09PSAnLScgJiYgQXJyYXkuaXNBcnJheShwb2ludGVyLnZhbHVlKSkge1xuICAgICAgcG9pbnRlci52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBwb2ludGVyLnZhbHVlW3Rva2VuXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBvbm8uc3ludGF4KCdFcnJvciBhc3NpZ25pbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuQ2Fubm90IHNldCBcIiVzXCIgb2YgYSBub24tb2JqZWN0LicsIHBvaW50ZXIucGF0aCwgdG9rZW4pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmO1xuXG52YXIgUG9pbnRlciA9IHJlcXVpcmUoJy4vcG9pbnRlcicpO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbmdsZSBKU09OIHJlZmVyZW5jZSBhbmQgaXRzIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiAkUmVmICgpIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGUuXG4gICAqIFRoaXMgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGF0aCBvZiB0aGUgbWFpbiBKU09OIHNjaGVtYSBmaWxlLlxuICAgKlxuICAgKiBUaGlzIHBhdGggZG9lcyBOT1QgY29udGFpbiBkb2N1bWVudCBmcmFnbWVudHMgKEpTT04gcG9pbnRlcnMpLiBJdCBhbHdheXMgcmVmZXJlbmNlcyBhbiBFTlRJUkUgZmlsZS5cbiAgICogVXNlIG1ldGhvZHMgc3VjaCBhcyB7QGxpbmsgJFJlZiNnZXR9LCB7QGxpbmsgJFJlZiNyZXNvbHZlfSwgYW5kIHtAbGluayAkUmVmI2V4aXN0c30gdG8gZ2V0XG4gICAqIHNwZWNpZmljIEpTT04gcG9pbnRlcnMgd2l0aGluIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5wYXRoID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIEpTT04gcmVmZXJlbmNlLlxuICAgKiBDYW4gYmUgYW55IEpTT04gdHlwZSwgbm90IGp1c3Qgb2JqZWN0cy4gVW5rbm93biBmaWxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBhcyBCdWZmZXJzIChieXRlIGFycmF5cykuXG4gICAqIEB0eXBlIHs/Kn1cbiAgICovXG4gIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgJFJlZnN9IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMge0BsaW5rICRSZWZ9IG9iamVjdC5cbiAgICogQHR5cGUgeyRSZWZzfVxuICAgKi9cbiAgdGhpcy4kcmVmcyA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHtAbGluayAkUmVmI3BhdGh9IChlLmcuIFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcbiAgICogQHR5cGUgez9zdHJpbmd9XG4gICAqL1xuICB0aGlzLnBhdGhUeXBlID0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UgZXhpc3RzIHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgdGhpcy5yZXNvbHZlKHBhdGgsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0gYW5kIHJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZVxuICovXG4kUmVmLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5yZXNvbHZlKHBhdGgsIG9wdGlvbnMpLnZhbHVlO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2Ugd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZyaWVuZGx5UGF0aF0gLSBUaGUgb3JpZ2luYWwgdXNlci1zcGVjaWZpZWQgcGF0aCAodXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcmV0dXJucyB7UG9pbnRlcn1cbiAqL1xuJFJlZi5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zLCBmcmllbmRseVBhdGgpIHtcbiAgdmFyIHBvaW50ZXIgPSBuZXcgUG9pbnRlcih0aGlzLCBwYXRoLCBmcmllbmRseVBhdGgpO1xuICByZXR1cm4gcG9pbnRlci5yZXNvbHZlKHRoaXMudmFsdWUsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXG4gKiBJZiB0aGUgcHJvcGVydHksIG9yIGFueSBvZiBpdHMgcGFyZW50cyBkb24ndCBleGlzdCwgdGhleSB3aWxsIGJlIGNyZWF0ZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cbiAqL1xuJFJlZi5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHBhdGgsIHZhbHVlKSB7XG4gIHZhciBwb2ludGVyID0gbmV3IFBvaW50ZXIodGhpcywgcGF0aCk7XG4gIHRoaXMudmFsdWUgPSBwb2ludGVyLnNldCh0aGlzLnZhbHVlLCB2YWx1ZSk7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZS5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUuJHJlZiA9PT0gJ3N0cmluZycgJiYgdmFsdWUuJHJlZi5sZW5ndGggPiAwO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXNFeHRlcm5hbCRSZWYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuICRSZWYuaXMkUmVmKHZhbHVlKSAmJiB2YWx1ZS4kcmVmWzBdICE9PSAnIyc7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZSwgYW5kIHdoZXRoZXIgaXQgaXMgYWxsb3dlZCBieSB0aGUgb3B0aW9ucy5cbiAqIEZvciBleGFtcGxlLCBpZiBpdCByZWZlcmVuY2VzIGFuIGV4dGVybmFsIGZpbGUsIHRoZW4gb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsIG11c3QgYmUgdHJ1ZS5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzQWxsb3dlZCRSZWYgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCRSZWYuaXMkUmVmKHZhbHVlKSkge1xuICAgIGlmICh2YWx1ZS4kcmVmLnN1YnN0cigwLCAyKSA9PT0gJyMvJyB8fCB2YWx1ZS4kcmVmID09PSAnIycpIHtcbiAgICAgIC8vIEl0J3MgYSBKU09OIFBvaW50ZXIgcmVmZXJlbmNlLCB3aGljaCBpcyBhbHdheXMgYWxsb3dlZFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLiRyZWZbMF0gIT09ICcjJyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsKSkge1xuICAgICAgLy8gSXQncyBhbiBleHRlcm5hbCByZWZlcmVuY2UsIHdoaWNoIGlzIGFsbG93ZWQgYnkgdGhlIG9wdGlvbnNcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgSlNPTiByZWZlcmVuY2UgdGhhdCBcImV4dGVuZHNcIiBpdHMgcmVzb2x2ZWQgdmFsdWUuXG4gKiBUaGF0IGlzLCBpdCBoYXMgZXh0cmEgcHJvcGVydGllcyAoaW4gYWRkaXRpb24gdG8gXCIkcmVmXCIpLCBzbyByYXRoZXIgdGhhbiBzaW1wbHkgcG9pbnRpbmcgdG9cbiAqIGFuIGV4aXN0aW5nIHZhbHVlLCB0aGlzICRyZWYgYWN0dWFsbHkgY3JlYXRlcyBhIE5FVyB2YWx1ZSB0aGF0IGlzIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSByZXNvbHZlZFxuICogdmFsdWUsIHBsdXMgdGhlIGV4dHJhIHByb3BlcnRpZXMuXG4gKlxuICogQGV4YW1wbGU6XG4gKiAge1xuICogICAgcGVyc29uOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICBmaXJzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICB9XG4gKiAgICB9XG4gKiAgICBlbXBsb3llZToge1xuICogICAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgICAgJHJlZjogIy9wZXJzb24vcHJvcGVydGllc1xuICogICAgICAgIHNhbGFyeTogeyB0eXBlOiBudW1iZXIgfVxuICogICAgICB9XG4gKiAgICB9XG4gKiAgfVxuICpcbiAqICBJbiB0aGlzIGV4YW1wbGUsIFwiZW1wbG95ZWVcIiBpcyBhbiBleHRlbmRlZCAkcmVmLCBzaW5jZSBpdCBleHRlbmRzIFwicGVyc29uXCIgd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiAgcHJvcGVydHkgKHNhbGFyeSkuICBUaGUgcmVzdWx0IGlzIGEgTkVXIHZhbHVlIHRoYXQgbG9va3MgbGlrZSB0aGlzOlxuICpcbiAqICB7XG4gKiAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBpbnNwZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5pc0V4dGVuZGVkJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gJFJlZi5pcyRSZWYodmFsdWUpICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZSBvZiBhIEpTT04gUmVmZXJlbmNlLlxuICogSWYgbmVjZXNzYXJ5LCB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgbWVyZ2VkIHdpdGggdGhlIEpTT04gUmVmZXJlbmNlIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBwZXJzb246IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICAgIGVtcGxveWVlOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICAkcmVmOiAjL3BlcnNvbi9wcm9wZXJ0aWVzXG4gKiAgICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogIFdoZW4gXCJwZXJzb25cIiBhbmQgXCJlbXBsb3llZVwiIGFyZSBtZXJnZWQsIHlvdSBlbmQgdXAgd2l0aCB0aGUgZm9sbG93aW5nIG9iamVjdDpcbiAqXG4gKiAge1xuICogICAgcHJvcGVydGllczoge1xuICogICAgICBmaXJzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgbGFzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICB9XG4gKiAgfVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmIC0gVGhlIEpTT04gcmVmZXJlbmNlIG9iamVjdCAodGhlIG9uZSB3aXRoIHRoZSBcIiRyZWZcIiBwcm9wZXJ0eSlcbiAqIEBwYXJhbSB7Kn0gcmVzb2x2ZWRWYWx1ZSAtIFRoZSByZXNvbHZlZCB2YWx1ZSwgd2hpY2ggY2FuIGJlIGFueSB0eXBlXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSBkZXJlZmVyZW5jZWQgdmFsdWVcbiAqL1xuJFJlZi5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uICgkcmVmLCByZXNvbHZlZFZhbHVlKSB7XG4gIGlmIChyZXNvbHZlZFZhbHVlICYmIHR5cGVvZiByZXNvbHZlZFZhbHVlID09PSAnb2JqZWN0JyAmJiAkUmVmLmlzRXh0ZW5kZWQkUmVmKCRyZWYpKSB7XG4gICAgdmFyIG1lcmdlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKCRyZWYpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKGtleSAhPT0gJyRyZWYnKSB7XG4gICAgICAgIG1lcmdlZFtrZXldID0gJHJlZltrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHJlc29sdmVkVmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKCEoa2V5IGluIG1lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSByZXNvbHZlZFZhbHVlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBDb21wbGV0ZWx5IHJlcGxhY2UgdGhlIG9yaWdpbmFsIHJlZmVyZW5jZSB3aXRoIHRoZSByZXNvbHZlZCB2YWx1ZVxuICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxyXG4gICAgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXHJcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZzO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY2xhc3MgaXMgYSBtYXAgb2YgSlNPTiByZWZlcmVuY2VzIGFuZCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiAkUmVmcyAoKSB7XHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNjaGVtYSBjb250YWlucyBhbnkgY2lyY3VsYXIgcmVmZXJlbmNlcy5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqL1xyXG4gIHRoaXMuY2lyY3VsYXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBtYXAgb2YgcGF0aHMvdXJscyB0byB7QGxpbmsgJFJlZn0gb2JqZWN0c1xyXG4gICAqXHJcbiAgICogQHR5cGUge29iamVjdH1cclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgdGhpcy5fJHJlZnMgPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHtAbGluayAkUmVmfSBvYmplY3QgdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgSlNPTiBzY2hlbWEuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7JFJlZn1cclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgdGhpcy5fcm9vdCRSZWYgPSBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgcGF0aHMgb2YgYWxsIHRoZSBmaWxlcy9VUkxzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIEpTT04gc2NoZW1hLFxyXG4gKiBpbmNsdWRpbmcgdGhlIHNjaGVtYSBpdHNlbGYuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcGF0aHMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5wYXRocyA9IGZ1bmN0aW9uICh0eXBlcykge1xyXG4gIHZhciBwYXRocyA9IGdldFBhdGhzKHRoaXMuXyRyZWZzLCBhcmd1bWVudHMpO1xyXG4gIHJldHVybiBwYXRocy5tYXAoZnVuY3Rpb24gKHBhdGgpIHtcclxuICAgIHJldHVybiBwYXRoLmRlY29kZWQ7XHJcbiAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgbWFwIG9mIEpTT04gcmVmZXJlbmNlcyBhbmQgdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLlxyXG4gKlxyXG4gKiBAcGFyYW0gey4uLnN0cmluZ3xzdHJpbmdbXX0gW3R5cGVzXSAtIE9ubHkgcmV0dXJuIHJlZmVyZW5jZXMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtvYmplY3R9XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKHR5cGVzKSB7XHJcbiAgdmFyICRyZWZzID0gdGhpcy5fJHJlZnM7XHJcbiAgdmFyIHBhdGhzID0gZ2V0UGF0aHMoJHJlZnMsIGFyZ3VtZW50cyk7XHJcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZShmdW5jdGlvbiAob2JqLCBwYXRoKSB7XHJcbiAgICBvYmpbcGF0aC5kZWNvZGVkXSA9ICRyZWZzW3BhdGguZW5jb2RlZF0udmFsdWU7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH0sIHt9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgUE9KTyAocGxhaW4gb2xkIEphdmFTY3JpcHQgb2JqZWN0KSBmb3Igc2VyaWFsaXphdGlvbiBhcyBKU09OLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLnRvSlNPTiA9ICRSZWZzLnByb3RvdHlwZS52YWx1ZXM7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBleGlzdHMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc11cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcclxuICB0cnkge1xyXG4gICAgdGhpcy5fcmVzb2x2ZShwYXRoLCBvcHRpb25zKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBjYXRjaCAoZSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UgYW5kIHJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXVxyXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XHJcbiAgcmV0dXJuIHRoaXMuX3Jlc29sdmUocGF0aCwgb3B0aW9ucykudmFsdWU7XHJcbn07XHJcblxyXG4vKipcclxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxyXG4gKiBJZiB0aGUgcHJvcGVydHksIG9yIGFueSBvZiBpdHMgcGFyZW50cyBkb24ndCBleGlzdCwgdGhleSB3aWxsIGJlIGNyZWF0ZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYXNzaWduXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHBhdGgsIHZhbHVlKSB7XHJcbiAgdmFyIGFic1BhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKGFic1BhdGgpO1xyXG4gIHZhciAkcmVmID0gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG5cclxuICBpZiAoISRyZWYpIHtcclxuICAgIHRocm93IG9ubygnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblwiJXNcIiBub3QgZm91bmQuJywgcGF0aCwgd2l0aG91dEhhc2gpO1xyXG4gIH1cclxuXHJcbiAgJHJlZi5zZXQoYWJzUGF0aCwgdmFsdWUpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rICRSZWZ9IG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGlzIHtAbGluayAkUmVmc30gb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAgLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX2FkZCA9IGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcclxuXHJcbiAgdmFyICRyZWYgPSBuZXcgJFJlZigpO1xyXG4gICRyZWYucGF0aCA9IHdpdGhvdXRIYXNoO1xyXG4gICRyZWYuJHJlZnMgPSB0aGlzO1xyXG5cclxuICB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF0gPSAkcmVmO1xyXG4gIHRoaXMuX3Jvb3QkUmVmID0gdGhpcy5fcm9vdCRSZWYgfHwgJHJlZjtcclxuXHJcbiAgcmV0dXJuICRyZWY7XHJcbn07XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdXHJcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxyXG4gKiBAcHJvdGVjdGVkXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX3Jlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xyXG4gIHZhciBhYnNQYXRoID0gdXJsLnJlc29sdmUodGhpcy5fcm9vdCRSZWYucGF0aCwgcGF0aCk7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChhYnNQYXRoKTtcclxuICB2YXIgJHJlZiA9IHRoaXMuXyRyZWZzW3dpdGhvdXRIYXNoXTtcclxuXHJcbiAgaWYgKCEkcmVmKSB7XHJcbiAgICB0aHJvdyBvbm8oJ0Vycm9yIHJlc29sdmluZyAkcmVmIHBvaW50ZXIgXCIlc1wiLiBcXG5cIiVzXCIgbm90IGZvdW5kLicsIHBhdGgsIHdpdGhvdXRIYXNoKTtcclxuICB9XHJcblxyXG4gIHJldHVybiAkcmVmLnJlc29sdmUoYWJzUGF0aCwgb3B0aW9ucywgcGF0aCk7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHtAbGluayAkUmVmfSBvYmplY3QsIG9yIHVuZGVmaW5lZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEByZXR1cm5zIHskUmVmfHVuZGVmaW5lZH1cclxuICogQHByb3RlY3RlZFxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLl9nZXQkUmVmID0gZnVuY3Rpb24gKHBhdGgpIHtcclxuICBwYXRoID0gdXJsLnJlc29sdmUodGhpcy5fcm9vdCRSZWYucGF0aCwgcGF0aCk7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcclxuICByZXR1cm4gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGVuY29kZWQgYW5kIGRlY29kZWQgcGF0aHMga2V5cyBvZiB0aGUgZ2l2ZW4gb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge29iamVjdH0gJHJlZnMgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIFVSTC1lbmNvZGVkIHBhdGhzXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcGF0aHMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtvYmplY3RbXX1cclxuICovXHJcbmZ1bmN0aW9uIGdldFBhdGhzICgkcmVmcywgdHlwZXMpIHtcclxuICB2YXIgcGF0aHMgPSBPYmplY3Qua2V5cygkcmVmcyk7XHJcblxyXG4gIC8vIEZpbHRlciB0aGUgcGF0aHMgYnkgdHlwZVxyXG4gIHR5cGVzID0gQXJyYXkuaXNBcnJheSh0eXBlc1swXSkgPyB0eXBlc1swXSA6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHR5cGVzKTtcclxuICBpZiAodHlwZXMubGVuZ3RoID4gMCAmJiB0eXBlc1swXSkge1xyXG4gICAgcGF0aHMgPSBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICByZXR1cm4gdHlwZXMuaW5kZXhPZigkcmVmc1trZXldLnBhdGhUeXBlKSAhPT0gLTE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIERlY29kZSBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXHJcbiAgcmV0dXJuIHBhdGhzLm1hcChmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZW5jb2RlZDogcGF0aCxcclxuICAgICAgZGVjb2RlZDogJHJlZnNbcGF0aF0ucGF0aFR5cGUgPT09ICdmaWxlJyA/IHVybC50b0ZpbGVTeXN0ZW1QYXRoKHBhdGgsIHRydWUpIDogcGF0aFxyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXG4gICAgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZUV4dGVybmFsO1xuXG4vKipcbiAqIENyYXdscyB0aGUgSlNPTiBzY2hlbWEsIGZpbmRzIGFsbCBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMsIGFuZCByZXNvbHZlcyB0aGVpciB2YWx1ZXMuXG4gKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBtdXRhdGUgdGhlIEpTT04gc2NoZW1hLiBUaGUgcmVzb2x2ZWQgdmFsdWVzIGFyZSBhZGRlZCB0byB7QGxpbmsgJFJlZlBhcnNlciMkcmVmc30uXG4gKlxuICogTk9URTogV2Ugb25seSBjYXJlIGFib3V0IEVYVEVSTkFMIHJlZmVyZW5jZXMgaGVyZS4gSU5URVJOQUwgcmVmZXJlbmNlcyBhcmUgb25seSByZWxldmFudCB3aGVuIGRlcmVmZXJlbmNpbmcuXG4gKlxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIG9uY2UgYWxsIEpTT04gcmVmZXJlbmNlcyBpbiB0aGUgc2NoZW1hIGhhdmUgYmVlbiByZXNvbHZlZCxcbiAqIGluY2x1ZGluZyBuZXN0ZWQgcmVmZXJlbmNlcyB0aGF0IGFyZSBjb250YWluZWQgaW4gZXh0ZXJuYWxseS1yZWZlcmVuY2VkIGZpbGVzLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRXh0ZXJuYWwgKHBhcnNlciwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMucmVzb2x2ZS5leHRlcm5hbCkge1xuICAgIC8vIE5vdGhpbmcgdG8gcmVzb2x2ZSwgc28gZXhpdCBlYXJseVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgZGVidWcoJ1Jlc29sdmluZyAkcmVmIHBvaW50ZXJzIGluICVzJywgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoKTtcbiAgICB2YXIgcHJvbWlzZXMgPSBjcmF3bChwYXJzZXIuc2NoZW1hLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGggKyAnIycsIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGNyYXdscyB0aGUgZ2l2ZW4gdmFsdWUsIGFuZCByZXNvbHZlcyBhbnkgZXh0ZXJuYWwgSlNPTiByZWZlcmVuY2VzLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIHZhbHVlIHRvIGNyYXdsLiBJZiBpdCdzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgb2JqYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZVtdfVxuICogUmV0dXJucyBhbiBhcnJheSBvZiBwcm9taXNlcy4gVGhlcmUgd2lsbCBiZSBvbmUgcHJvbWlzZSBmb3IgZWFjaCBKU09OIHJlZmVyZW5jZSBpbiBgb2JqYC5cbiAqIElmIGBvYmpgIGRvZXMgbm90IGNvbnRhaW4gYW55IEpTT04gcmVmZXJlbmNlcywgdGhlbiB0aGUgYXJyYXkgd2lsbCBiZSBlbXB0eS5cbiAqIElmIGFueSBvZiB0aGUgSlNPTiByZWZlcmVuY2VzIHBvaW50IHRvIGZpbGVzIHRoYXQgY29udGFpbiBhZGRpdGlvbmFsIEpTT04gcmVmZXJlbmNlcyxcbiAqIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgcHJvbWlzZSB3aWxsIGludGVybmFsbHkgcmVmZXJlbmNlIGFuIGFycmF5IG9mIHByb21pc2VzLlxuICovXG5mdW5jdGlvbiBjcmF3bCAob2JqLCBwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgcHJvbWlzZXMgPSBbXTtcblxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCRSZWYuaXNFeHRlcm5hbCRSZWYob2JqKSkge1xuICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlJFJlZihvYmosIHBhdGgsICRyZWZzLCBvcHRpb25zKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKCRSZWYuaXNFeHRlcm5hbCRSZWYodmFsdWUpKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlJFJlZih2YWx1ZSwga2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBwcm9taXNlcyA9IHByb21pc2VzLmNvbmNhdChjcmF3bCh2YWx1ZSwga2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb21pc2VzO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSwgYW5kIHRoZW4gY3Jhd2xzIHRoZSByZXN1bHRpbmcgdmFsdWUuXG4gKlxuICogQHBhcmFtIHt7JHJlZjogc3RyaW5nfX0gJHJlZiAtIFRoZSBKU09OIFJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgYCRyZWZgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgb25jZSBhbGwgSlNPTiByZWZlcmVuY2VzIGluIHRoZSBvYmplY3QgaGF2ZSBiZWVuIHJlc29sdmVkLFxuICogaW5jbHVkaW5nIG5lc3RlZCByZWZlcmVuY2VzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmUkUmVmICgkcmVmLCBwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCAkcmVmLiRyZWYsIHBhdGgpO1xuXG4gIHZhciByZXNvbHZlZFBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHJlc29sdmVkUGF0aCk7XG5cbiAgLy8gRG8gd2UgYWxyZWFkeSBoYXZlIHRoaXMgJHJlZj9cbiAgJHJlZiA9ICRyZWZzLl8kcmVmc1t3aXRob3V0SGFzaF07XG4gIGlmICgkcmVmKSB7XG4gICAgLy8gV2UndmUgYWxyZWFkeSBwYXJzZWQgdGhpcyAkcmVmLCBzbyB1c2UgdGhlIGV4aXN0aW5nIHZhbHVlXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgkcmVmLnZhbHVlKTtcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSAkcmVmZXJlbmNlZCBmaWxlL3VybFxuICByZXR1cm4gcGFyc2UocmVzb2x2ZWRQYXRoLCAkcmVmcywgb3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAvLyBDcmF3bCB0aGUgcGFyc2VkIHZhbHVlXG4gICAgICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCB3aXRob3V0SGFzaCk7XG4gICAgICB2YXIgcHJvbWlzZXMgPSBjcmF3bChyZXN1bHQsIHdpdGhvdXRIYXNoICsgJyMnLCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuLi91dGlsL3VybCcpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi4vdXRpbC9kZWJ1ZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcmVzb2x2ZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHJlc29sdmVycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAxMDAsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHJlc29sdmVyIGNhbiByZWFkIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHJlc29sdmVzIHRoZSBmaWxlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBub3QgYmUgZ2l2ZW4gYSBjaGFuY2UgdG8gcmVzb2x2ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblJlYWQ6IGZ1bmN0aW9uIGlzRmlsZSAoZmlsZSkge1xuICAgIHJldHVybiB1cmwuaXNGaWxlU3lzdGVtUGF0aChmaWxlLnVybCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBnaXZlbiBmaWxlIGFuZCByZXR1cm5zIGl0cyByYXcgY29udGVudHMgYXMgYSBCdWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHJlYWQ6IGZ1bmN0aW9uIHJlYWRGaWxlIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGF0aCA9IHVybC50b0ZpbGVTeXN0ZW1QYXRoKGZpbGUudXJsKTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9uby51cmkoZXJyLCAnTWFsZm9ybWVkIFVSSTogJXMnLCBmaWxlLnVybCkpO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnT3BlbmluZyBmaWxlOiAlcycsIHBhdGgpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmcy5yZWFkRmlsZShwYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBvcGVuaW5nIGZpbGUgXCIlc1wiJywgcGF0aCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBvcGVuaW5nIGZpbGUgXCIlc1wiJywgcGF0aCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSxcbiAgICBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi4vdXRpbC91cmwnKSxcbiAgICBkZWJ1ZyA9IHJlcXVpcmUoJy4uL3V0aWwvZGVidWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHJlc29sdmVyIHdpbGwgcnVuLCBpbiByZWxhdGlvbiB0byBvdGhlciByZXNvbHZlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMjAwLFxuXG4gIC8qKlxuICAgKiBIVFRQIGhlYWRlcnMgdG8gc2VuZCB3aGVuIGRvd25sb2FkaW5nIGZpbGVzLlxuICAgKlxuICAgKiBAZXhhbXBsZTpcbiAgICoge1xuICAgKiAgIFwiVXNlci1BZ2VudFwiOiBcIkpTT04gU2NoZW1hICRSZWYgUGFyc2VyXCIsXG4gICAqICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgKiB9XG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqL1xuICBoZWFkZXJzOiBudWxsLFxuXG4gIC8qKlxuICAgKiBIVFRQIHJlcXVlc3QgdGltZW91dCAoaW4gbWlsbGlzZWNvbmRzKS5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHRpbWVvdXQ6IDUwMDAsIC8vIDUgc2Vjb25kc1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUCByZWRpcmVjdHMgdG8gZm9sbG93LlxuICAgKiBUbyBkaXNhYmxlIGF1dG9tYXRpYyBmb2xsb3dpbmcgb2YgcmVkaXJlY3RzLCBzZXQgdGhpcyB0byB6ZXJvLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgcmVkaXJlY3RzOiA1LFxuXG4gIC8qKlxuICAgKiBUaGUgYHdpdGhDcmVkZW50aWFsc2Agb3B0aW9uIG9mIFhNTEh0dHBSZXF1ZXN0LlxuICAgKiBTZXQgdGhpcyB0byBgdHJ1ZWAgaWYgeW91J3JlIGRvd25sb2FkaW5nIGZpbGVzIGZyb20gYSBDT1JTLWVuYWJsZWQgc2VydmVyIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyByZXNvbHZlciBjYW4gcmVhZCBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gdHJ1ZSB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHJlc29sdmVzIHRoZSBmaWxlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBub3QgYmUgZ2l2ZW4gYSBjaGFuY2UgdG8gcmVzb2x2ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblJlYWQ6IGZ1bmN0aW9uIGlzSHR0cCAoZmlsZSkge1xuICAgIHJldHVybiB1cmwuaXNIdHRwKGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIGdpdmVuIFVSTCBhbmQgcmV0dXJucyBpdHMgcmF3IGNvbnRlbnRzIGFzIGEgQnVmZmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59XG4gICAqL1xuICByZWFkOiBmdW5jdGlvbiByZWFkSHR0cCAoZmlsZSkge1xuICAgIHZhciB1ID0gdXJsLnBhcnNlKGZpbGUudXJsKTtcblxuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIgJiYgIXUucHJvdG9jb2wpIHtcbiAgICAgIC8vIFVzZSB0aGUgcHJvdG9jb2wgb2YgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgdS5wcm90b2NvbCA9IHVybC5wYXJzZShsb2NhdGlvbi5ocmVmKS5wcm90b2NvbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZG93bmxvYWQodSwgdGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogRG93bmxvYWRzIHRoZSBnaXZlbiBmaWxlLlxuICpcbiAqIEBwYXJhbSB7VXJsfHN0cmluZ30gdSAgICAgICAgLSBUaGUgdXJsIHRvIGRvd25sb2FkIChjYW4gYmUgYSBwYXJzZWQge0BsaW5rIFVybH0gb2JqZWN0KVxuICogQHBhcmFtIHtvYmplY3R9IGh0dHBPcHRpb25zICAtIFRoZSBgb3B0aW9ucy5yZXNvbHZlLmh0dHBgIG9iamVjdFxuICogQHBhcmFtIHtudW1iZXJ9IFtyZWRpcmVjdHNdICAtIFRoZSByZWRpcmVjdCBVUkxzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZm9sbG93ZWRcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcmF3IGRvd25sb2FkZWQgZGF0YSwgb3IgcmVqZWN0cyBpZiB0aGVyZSBpcyBhbiBIVFRQIGVycm9yLlxuICovXG5mdW5jdGlvbiBkb3dubG9hZCAodSwgaHR0cE9wdGlvbnMsIHJlZGlyZWN0cykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHUgPSB1cmwucGFyc2UodSk7XG4gICAgcmVkaXJlY3RzID0gcmVkaXJlY3RzIHx8IFtdO1xuICAgIHJlZGlyZWN0cy5wdXNoKHUuaHJlZik7XG5cbiAgICBnZXQodSwgaHR0cE9wdGlvbnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgICAgICB0aHJvdyBvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdIVFRQIEVSUk9SICVkJywgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlcy5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgICAgIGlmIChyZWRpcmVjdHMubGVuZ3RoID4gaHR0cE9wdGlvbnMucmVkaXJlY3RzKSB7XG4gICAgICAgICAgICByZWplY3Qob25vKHsgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSB9LCAnRXJyb3IgZG93bmxvYWRpbmcgJXMuIFxcblRvbyBtYW55IHJlZGlyZWN0czogXFxuICAlcycsXG4gICAgICAgICAgICAgIHJlZGlyZWN0c1swXSwgcmVkaXJlY3RzLmpvaW4oJyBcXG4gICcpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFyZXMuaGVhZGVycy5sb2NhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgb25vKHsgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSB9LCAnSFRUUCAlZCByZWRpcmVjdCB3aXRoIG5vIGxvY2F0aW9uIGhlYWRlcicsIHJlcy5zdGF0dXNDb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWJ1ZygnSFRUUCAlZCByZWRpcmVjdCAlcyAtPiAlcycsIHJlcy5zdGF0dXNDb2RlLCB1LmhyZWYsIHJlcy5oZWFkZXJzLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIHZhciByZWRpcmVjdFRvID0gdXJsLnJlc29sdmUodSwgcmVzLmhlYWRlcnMubG9jYXRpb24pO1xuICAgICAgICAgICAgZG93bmxvYWQocmVkaXJlY3RUbywgaHR0cE9wdGlvbnMsIHJlZGlyZWN0cykudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcy5ib2R5IHx8IG5ldyBCdWZmZXIoMCkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBkb3dubG9hZGluZycsIHUuaHJlZikpO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFNlbmRzIGFuIEhUVFAgR0VUIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtVcmx9IHUgLSBBIHBhcnNlZCB7QGxpbmsgVXJsfSBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBodHRwT3B0aW9ucyAtIFRoZSBgb3B0aW9ucy5yZXNvbHZlLmh0dHBgIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3BvbnNlPn1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIEhUVFAgUmVzcG9uc2Ugb2JqZWN0LlxuICovXG5mdW5jdGlvbiBnZXQgKHUsIGh0dHBPcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ0dFVCcsIHUuaHJlZik7XG5cbiAgICB2YXIgcHJvdG9jb2wgPSB1LnByb3RvY29sID09PSAnaHR0cHM6JyA/IGh0dHBzIDogaHR0cDtcbiAgICB2YXIgcmVxID0gcHJvdG9jb2wuZ2V0KHtcbiAgICAgIGhvc3RuYW1lOiB1Lmhvc3RuYW1lLFxuICAgICAgcG9ydDogdS5wb3J0LFxuICAgICAgcGF0aDogdS5wYXRoLFxuICAgICAgYXV0aDogdS5hdXRoLFxuICAgICAgcHJvdG9jb2w6IHUucHJvdG9jb2wsXG4gICAgICBoZWFkZXJzOiBodHRwT3B0aW9ucy5oZWFkZXJzIHx8IHt9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBodHRwT3B0aW9ucy53aXRoQ3JlZGVudGlhbHNcbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgcmVxLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlcS5zZXRUaW1lb3V0KGh0dHBPcHRpb25zLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIHJlcS5vbigndGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcS5hYm9ydCgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7XG5cbiAgICByZXEub25jZSgncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICByZXMuYm9keSA9IG5ldyBCdWZmZXIoMCk7XG5cbiAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHJlcy5ib2R5ID0gQnVmZmVyLmNvbmNhdChbcmVzLmJvZHksIG5ldyBCdWZmZXIoZGF0YSldKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXMub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgICAgcmVzLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKTtcblxuLyoqXG4gKiBXcml0ZXMgbWVzc2FnZXMgdG8gc3Rkb3V0LlxuICogTG9nIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBERUJVRyB2YXJpYWJsZS5cbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBkZWJ1ZygnanNvbi1zY2hlbWEtcmVmLXBhcnNlcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVidWcgPSByZXF1aXJlKCcuL2RlYnVnJyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZ2l2ZW4gcGx1Z2lucyBhcyBhbiBhcnJheSwgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IG1hcC5cbiAqIEFsbCBvdGhlciBtZXRob2RzIGluIHRoaXMgbW9kdWxlIGV4cGVjdCBhbiBhcnJheSBvZiBwbHVnaW5zIHJhdGhlciB0aGFuIGFuIG9iamVjdCBtYXAuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSBwbHVnaW5zIC0gQSBtYXAgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnRzLmFsbCA9IGZ1bmN0aW9uIChwbHVnaW5zKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhwbHVnaW5zKVxuICAgIC5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBwbHVnaW5zW2tleV0gPT09ICdvYmplY3QnO1xuICAgIH0pXG4gICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBwbHVnaW5zW2tleV0ubmFtZSA9IGtleTtcbiAgICAgIHJldHVybiBwbHVnaW5zW2tleV07XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIEZpbHRlcnMgdGhlIGdpdmVuIHBsdWdpbnMsIHJldHVybmluZyBvbmx5IHRoZSBvbmVzIHJldHVybiBgdHJ1ZWAgZm9yIHRoZSBnaXZlbiBtZXRob2QuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0W119IHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHBhcmFtICB7c3RyaW5nfSAgIG1ldGhvZCAgLSBUaGUgbmFtZSBvZiB0aGUgZmlsdGVyIG1ldGhvZCB0byBpbnZva2UgZm9yIGVhY2ggcGx1Z2luXG4gKiBAcGFyYW0gIHtvYmplY3R9ICAgZmlsZSAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZWFjaCBtZXRob2RcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnRzLmZpbHRlciA9IGZ1bmN0aW9uIChwbHVnaW5zLCBtZXRob2QsIGZpbGUpIHtcbiAgcmV0dXJuIHBsdWdpbnNcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIHJldHVybiAhIWdldFJlc3VsdChwbHVnaW4sIG1ldGhvZCwgZmlsZSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFNvcnRzIHRoZSBnaXZlbiBwbHVnaW5zLCBpbiBwbGFjZSwgYnkgdGhlaXIgYG9yZGVyYCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBwbHVnaW5zIC0gQW4gYXJyYXkgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEByZXR1cm5zIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0cy5zb3J0ID0gZnVuY3Rpb24gKHBsdWdpbnMpIHtcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICBwbHVnaW4ub3JkZXIgPSBwbHVnaW4ub3JkZXIgfHwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gIH0pO1xuXG4gIHJldHVybiBwbHVnaW5zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyOyB9KTtcbn07XG5cbi8qKlxuICogUnVucyB0aGUgc3BlY2lmaWVkIG1ldGhvZCBvZiB0aGUgZ2l2ZW4gcGx1Z2lucywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHJldHVybnMgYSBzdWNjZXNzZnVsIHJlc3VsdC5cbiAqIEVhY2ggbWV0aG9kIGNhbiByZXR1cm4gYSBzeW5jaHJvbm91cyB2YWx1ZSwgYSBQcm9taXNlLCBvciBjYWxsIGFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLlxuICogSWYgdGhlIHByb21pc2UgcmVzb2x2ZXMgc3VjY2Vzc2Z1bGx5LCBvciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gdGhlIHJlc3VsdFxuICogaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgYW5kIG5vIGZ1cnRoZXIgcGx1Z2lucyBhcmUgY2FsbGVkLlxuICogSWYgdGhlIHByb21pc2UgcmVqZWN0cywgb3IgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGFuIGVycm9yLCB0aGVuIHRoZSBuZXh0IHBsdWdpbiBpcyBjYWxsZWQuXG4gKiBJZiBBTEwgcGx1Z2lucyBmYWlsLCB0aGVuIHRoZSBsYXN0IGVycm9yIGlzIHRocm93bi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSAgcGx1Z2lucyAtIEFuIGFycmF5IG9mIHBsdWdpbiBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgbWV0aG9kICAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIGZvciBlYWNoIHBsdWdpblxuICogQHBhcmFtIHtvYmplY3R9ICAgIGZpbGUgICAgLSBBIGZpbGUgaW5mbyBvYmplY3QsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGVhY2ggbWV0aG9kXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqL1xuZXhwb3J0cy5ydW4gPSBmdW5jdGlvbiAocGx1Z2lucywgbWV0aG9kLCBmaWxlKSB7XG4gIHZhciBwbHVnaW4sIGxhc3RFcnJvciwgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcnVuTmV4dFBsdWdpbigpO1xuXG4gICAgZnVuY3Rpb24gcnVuTmV4dFBsdWdpbiAoKSB7XG4gICAgICBwbHVnaW4gPSBwbHVnaW5zW2luZGV4KytdO1xuICAgICAgaWYgKCFwbHVnaW4pIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG1vcmUgZnVuY3Rpb25zLCBzbyByZS10aHJvdyB0aGUgbGFzdCBlcnJvclxuICAgICAgICByZXR1cm4gcmVqZWN0KGxhc3RFcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGRlYnVnKCcgICVzJywgcGx1Z2luLm5hbWUpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0UmVzdWx0KHBsdWdpbiwgbWV0aG9kLCBmaWxlLCBjYWxsYmFjayk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgLy8gQSBwcm9taXNlIHdhcyByZXR1cm5lZFxuICAgICAgICAgIHJlc3VsdC50aGVuKG9uU3VjY2Vzcywgb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBBIHN5bmNocm9ub3VzIHJlc3VsdCB3YXMgcmV0dXJuZWRcbiAgICAgICAgICBvblN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlIHsgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIH1cbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsbGJhY2sgKGVyciwgcmVzdWx0KSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblN1Y2Nlc3MgKHJlc3VsdCkge1xuICAgICAgZGVidWcoJyAgICBzdWNjZXNzJyk7XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgcGx1Z2luOiBwbHVnaW4sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkVycm9yIChlcnIpIHtcbiAgICAgIGRlYnVnKCcgICAgJXMnLCBlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgbGFzdEVycm9yID0gZXJyO1xuICAgICAgcnVuTmV4dFBsdWdpbigpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGlzIHJldHVybmVkLlxuICogSWYgdGhlIHZhbHVlIGlzIGEgUmVnRXhwLCB0aGVuIGl0IHdpbGwgYmUgdGVzdGVkIGFnYWluc3QgdGhlIGZpbGUgVVJMLlxuICogSWYgdGhlIHZhbHVlIGlzIGFuIGFyYXksIHRoZW4gaXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgIG9iaiAgICAgICAgLSBUaGUgb2JqZWN0IHdob3NlIHByb3BlcnR5L21ldGhvZCBpcyBjYWxsZWRcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICAgcHJvcCAgICAgICAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS9tZXRob2QgdG8gaW52b2tlXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgIGZpbGUgICAgICAgLSBBIGZpbGUgaW5mbyBvYmplY3QsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBtZXRob2RcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBtZXRob2RcbiAqIEByZXR1cm5zIHsqfVxuICovXG5mdW5jdGlvbiBnZXRSZXN1bHQgKG9iaiwgcHJvcCwgZmlsZSwgY2FsbGJhY2spIHtcbiAgdmFyIHZhbHVlID0gb2JqW3Byb3BdO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWUuYXBwbHkob2JqLCBbZmlsZSwgY2FsbGJhY2tdKTtcbiAgfVxuXG4gIGlmICghY2FsbGJhY2spIHtcbiAgICAvLyBUaGUgc3luY2hyb25vdXMgcGx1Z2luIGZ1bmN0aW9ucyAoY2FuUGFyc2UgYW5kIGNhblJlYWQpXG4gICAgLy8gYWxsb3cgYSBcInNob3J0aGFuZFwiIHN5bnRheCwgd2hlcmUgdGhlIHVzZXIgY2FuIG1hdGNoXG4gICAgLy8gZmlsZXMgYnkgUmVnRXhwIG9yIGJ5IGZpbGUgZXh0ZW5zaW9uLlxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRlc3QoZmlsZS51cmwpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IGZpbGUuZXh0ZW5zaW9uO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZmlsZS5leHRlbnNpb24pICE9PSAtMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc1dpbmRvd3MgPSAvXndpbi8udGVzdChwcm9jZXNzLnBsYXRmb3JtKSxcbiAgICBmb3J3YXJkU2xhc2hQYXR0ZXJuID0gL1xcLy9nLFxuICAgIHByb3RvY29sUGF0dGVybiA9IC9eKFxcd3syLH0pOlxcL1xcLy9pLFxuICAgIHVybCA9IG1vZHVsZS5leHBvcnRzO1xuXG4vLyBSZWdFeHAgcGF0dGVybnMgdG8gVVJMLWVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gbG9jYWwgZmlsZXN5c3RlbSBwYXRoc1xudmFyIHVybEVuY29kZVBhdHRlcm5zID0gW1xuICAvXFw/L2csICclM0YnLFxuICAvXFwjL2csICclMjMnLFxuXTtcblxuLy8gUmVnRXhwIHBhdHRlcm5zIHRvIFVSTC1kZWNvZGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZvciBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXG52YXIgdXJsRGVjb2RlUGF0dGVybnMgPSBbXG4gIC9cXCUyMy9nLCAnIycsXG4gIC9cXCUyNC9nLCAnJCcsXG4gIC9cXCUyNi9nLCAnJicsXG4gIC9cXCUyQy9nLCAnLCcsXG4gIC9cXCU0MC9nLCAnQCdcbl07XG5cbmV4cG9ydHMucGFyc2UgPSByZXF1aXJlKCd1cmwnKS5wYXJzZTtcbmV4cG9ydHMucmVzb2x2ZSA9IHJlcXVpcmUoJ3VybCcpLnJlc29sdmU7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAoaW4gTm9kZSkgb3IgdGhlIGN1cnJlbnQgcGFnZSBVUkwgKGluIGJyb3dzZXJzKS5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLmN3ZCA9IGZ1bmN0aW9uIGN3ZCAoKSB7XG4gIHJldHVybiBwcm9jZXNzLmJyb3dzZXIgPyBsb2NhdGlvbi5ocmVmIDogcHJvY2Vzcy5jd2QoKSArICcvJztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdG9jb2wgb2YgdGhlIGdpdmVuIFVSTCwgb3IgYHVuZGVmaW5lZGAgaWYgaXQgaGFzIG5vIHByb3RvY29sLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHs/c3RyaW5nfVxuICovXG5leHBvcnRzLmdldFByb3RvY29sID0gZnVuY3Rpb24gZ2V0UHJvdG9jb2wgKHBhdGgpIHtcbiAgdmFyIG1hdGNoID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocGF0aCk7XG4gIGlmIChtYXRjaCkge1xuICAgIHJldHVybiBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIFVSTCxcbiAqIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBpdCBoYXMgbm8gZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0RXh0ZW5zaW9uID0gZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uIChwYXRoKSB7XG4gIHZhciBsYXN0RG90ID0gcGF0aC5sYXN0SW5kZXhPZignLicpO1xuICBpZiAobGFzdERvdCA+PSAwKSB7XG4gICAgcmV0dXJuIHBhdGguc3Vic3RyKGxhc3REb3QpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuICcnO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoYXNoIChVUkwgZnJhZ21lbnQpLCBvZiB0aGUgZ2l2ZW4gcGF0aC5cbiAqIElmIHRoZXJlIGlzIG5vIGhhc2gsIHRoZW4gdGhlIHJvb3QgaGFzaCAoXCIjXCIpIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0SGFzaCA9IGZ1bmN0aW9uIGdldEhhc2ggKHBhdGgpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpO1xuICBpZiAoaGFzaEluZGV4ID49IDApIHtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHIoaGFzaEluZGV4KTtcbiAgfVxuICByZXR1cm4gJyMnO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBoYXNoIChVUkwgZnJhZ21lbnQpLCBpZiBhbnksIGZyb20gdGhlIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5zdHJpcEhhc2ggPSBmdW5jdGlvbiBzdHJpcEhhc2ggKHBhdGgpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpO1xuICBpZiAoaGFzaEluZGV4ID49IDApIHtcbiAgICBwYXRoID0gcGF0aC5zdWJzdHIoMCwgaGFzaEluZGV4KTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBwYXRoIGlzIGFuIEhUVFAoUykgVVJMLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnRzLmlzSHR0cCA9IGZ1bmN0aW9uIGlzSHR0cCAocGF0aCkge1xuICB2YXIgcHJvdG9jb2wgPSB1cmwuZ2V0UHJvdG9jb2wocGF0aCk7XG4gIGlmIChwcm90b2NvbCA9PT0gJ2h0dHAnIHx8IHByb3RvY29sID09PSAnaHR0cHMnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZWxzZSBpZiAocHJvdG9jb2wgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFRoZXJlIGlzIG5vIHByb3RvY29sLiAgSWYgd2UncmUgcnVubmluZyBpbiBhIGJyb3dzZXIsIHRoZW4gYXNzdW1lIGl0J3MgSFRUUC5cbiAgICByZXR1cm4gcHJvY2Vzcy5icm93c2VyO1xuICB9XG4gIGVsc2Uge1xuICAgIC8vIEl0J3Mgc29tZSBvdGhlciBwcm90b2NvbCwgc3VjaCBhcyBcImZ0cDovL1wiLCBcIm1vbmdvZGI6Ly9cIiwgZXRjLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgYSBmaWxlc3lzdGVtIHBhdGguXG4gKiBUaGlzIGluY2x1ZGVzIFwiZmlsZTovL1wiIFVSTHMuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNGaWxlU3lzdGVtUGF0aCA9IGZ1bmN0aW9uIGlzRmlsZVN5c3RlbVBhdGggKHBhdGgpIHtcbiAgaWYgKHByb2Nlc3MuYnJvd3Nlcikge1xuICAgIC8vIFdlJ3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyLCBzbyBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXJlIFVSTHMuXG4gICAgLy8gVGhpcyB3YXksIGV2ZW4gcmVsYXRpdmUgcGF0aHMgd2lsbCBiZSB0cmVhdGVkIGFzIFVSTHMgcmF0aGVyIHRoYW4gYXMgZmlsZXN5c3RlbSBwYXRoc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHVybC5nZXRQcm90b2NvbChwYXRoKTtcbiAgcmV0dXJuIHByb3RvY29sID09PSB1bmRlZmluZWQgfHwgcHJvdG9jb2wgPT09ICdmaWxlJztcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlc3lzdGVtIHBhdGggdG8gYSBwcm9wZXJseS1lbmNvZGVkIFVSTC5cbiAqXG4gKiBUaGlzIGlzIGludGVuZGVkIHRvIGhhbmRsZSBzaXR1YXRpb25zIHdoZXJlIEpTT04gU2NoZW1hICRSZWYgUGFyc2VyIGlzIGNhbGxlZFxuICogd2l0aCBhIGZpbGVzeXN0ZW0gcGF0aCB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgd2hpY2ggYXJlIG5vdCBhbGxvd2VkIGluIFVSTHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIFRoZSBmb2xsb3dpbmcgZmlsZXN5c3RlbSBwYXRocyB3b3VsZCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGZvbGxvd2luZyBVUkxzOlxuICpcbiAqICAgIDxcIiFAIyQlXiYqKz0/Jz4uanNvbiAgICAgICAgICAgICAgPT0+ICAgJTNDJTIyIUAlMjMkJTI1JTVFJiorPSUzRlxcJyUzRS5qc29uXG4gKiAgICBDOlxcXFxNeSBEb2N1bWVudHNcXFxcRmlsZSAoMSkuanNvbiAgID09PiAgIEM6L015JTIwRG9jdW1lbnRzL0ZpbGUlMjAoMSkuanNvblxuICogICAgZmlsZTovL1Byb2plY3QgIzQyL2ZpbGUuanNvbiAgICAgID09PiAgIGZpbGU6Ly9Qcm9qZWN0JTIwJTIzNDIvZmlsZS5qc29uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZnJvbUZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gZnJvbUZpbGVTeXN0ZW1QYXRoIChwYXRoKSB7XG4gIC8vIFN0ZXAgMTogT24gV2luZG93cywgcmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcyxcbiAgLy8gcmF0aGVyIHRoYW4gZW5jb2RpbmcgdGhlbSBhcyBcIiU1Q1wiXG4gIGlmIChpc1dpbmRvd3MpIHtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIH1cblxuICAvLyBTdGVwIDI6IGBlbmNvZGVVUklgIHdpbGwgdGFrZSBjYXJlIG9mIE1PU1QgY2hhcmFjdGVyc1xuICBwYXRoID0gZW5jb2RlVVJJKHBhdGgpO1xuXG4gIC8vIFN0ZXAgMzogTWFudWFsbHkgZW5jb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGVuY29kZWQgYnkgYGVuY29kZVVSSWAuXG4gIC8vIFRoaXMgaW5jbHVkZXMgY2hhcmFjdGVycyBzdWNoIGFzIFwiI1wiIGFuZCBcIj9cIiwgd2hpY2ggaGF2ZSBzcGVjaWFsIG1lYW5pbmcgaW4gVVJMcyxcbiAgLy8gYnV0IGFyZSBqdXN0IG5vcm1hbCBjaGFyYWN0ZXJzIGluIGEgZmlsZXN5c3RlbSBwYXRoLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybEVuY29kZVBhdHRlcm5zLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSh1cmxFbmNvZGVQYXR0ZXJuc1tpXSwgdXJsRW5jb2RlUGF0dGVybnNbaSArIDFdKTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVSTCB0byBhIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gIHBhdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2tlZXBGaWxlUHJvdG9jb2xdIC0gSWYgdHJ1ZSwgdGhlbiBcImZpbGU6Ly9cIiB3aWxsIE5PVCBiZSBzdHJpcHBlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy50b0ZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gdG9GaWxlU3lzdGVtUGF0aCAocGF0aCwga2VlcEZpbGVQcm90b2NvbCkge1xuICAvLyBTdGVwIDE6IGBkZWNvZGVVUklgIHdpbGwgZGVjb2RlIGNoYXJhY3RlcnMgc3VjaCBhcyBDeXJpbGxpYyBjaGFyYWN0ZXJzLCBzcGFjZXMsIGV0Yy5cbiAgcGF0aCA9IGRlY29kZVVSSShwYXRoKTtcblxuICAvLyBTdGVwIDI6IE1hbnVhbGx5IGRlY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBkZWNvZGVkIGJ5IGBkZWNvZGVVUklgLlxuICAvLyBUaGlzIGluY2x1ZGVzIGNoYXJhY3RlcnMgc3VjaCBhcyBcIiNcIiBhbmQgXCI/XCIsIHdoaWNoIGhhdmUgc3BlY2lhbCBtZWFuaW5nIGluIFVSTHMsXG4gIC8vIGJ1dCBhcmUganVzdCBub3JtYWwgY2hhcmFjdGVycyBpbiBhIGZpbGVzeXN0ZW0gcGF0aC5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxEZWNvZGVQYXR0ZXJucy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UodXJsRGVjb2RlUGF0dGVybnNbaV0sIHVybERlY29kZVBhdHRlcm5zW2kgKyAxXSk7XG4gIH1cblxuICAvLyBTdGVwIDM6IElmIGl0J3MgYSBcImZpbGU6Ly9cIiBVUkwsIHRoZW4gZm9ybWF0IGl0IGNvbnNpc3RlbnRseVxuICAvLyBvciBjb252ZXJ0IGl0IHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoXG4gIHZhciBpc0ZpbGVVcmwgPSBwYXRoLnN1YnN0cigwLCA3KS50b0xvd2VyQ2FzZSgpID09PSAnZmlsZTovLyc7XG4gIGlmIChpc0ZpbGVVcmwpIHtcbiAgICAvLyBTdHJpcC1vZmYgdGhlIHByb3RvY29sLCBhbmQgdGhlIGluaXRpYWwgXCIvXCIsIGlmIHRoZXJlIGlzIG9uZVxuICAgIHBhdGggPSBwYXRoWzddID09PSAnLycgPyBwYXRoLnN1YnN0cig4KSA6IHBhdGguc3Vic3RyKDcpO1xuXG4gICAgLy8gaW5zZXJ0IGEgY29sb24gKFwiOlwiKSBhZnRlciB0aGUgZHJpdmUgbGV0dGVyIG9uIFdpbmRvd3NcbiAgICBpZiAoaXNXaW5kb3dzICYmIHBhdGhbMV0gPT09ICcvJykge1xuICAgICAgcGF0aCA9IHBhdGhbMF0gKyAnOicgKyBwYXRoLnN1YnN0cigxKTtcbiAgICB9XG5cbiAgICBpZiAoa2VlcEZpbGVQcm90b2NvbCkge1xuICAgICAgLy8gUmV0dXJuIHRoZSBjb25zaXN0ZW50bHktZm9ybWF0dGVkIFwiZmlsZTovL1wiIFVSTFxuICAgICAgcGF0aCA9ICdmaWxlOi8vLycgKyBwYXRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIENvbnZlcnQgdGhlIFwiZmlsZTovL1wiIFVSTCB0byBhIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aC5cbiAgICAgIC8vIE9uIFdpbmRvd3MsIGl0IHdpbGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgbGlrZSBcIkM6L1wiLlxuICAgICAgLy8gT24gUG9zaXgsIGl0IHdpbGwgc3RhcnQgd2l0aCBcIi9cIlxuICAgICAgaXNGaWxlVXJsID0gZmFsc2U7XG4gICAgICBwYXRoID0gaXNXaW5kb3dzID8gcGF0aCA6ICcvJyArIHBhdGg7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RlcCA0OiBOb3JtYWxpemUgV2luZG93cyBwYXRocyAodW5sZXNzIGl0J3MgYSBcImZpbGU6Ly9cIiBVUkwpXG4gIGlmIChpc1dpbmRvd3MgJiYgIWlzRmlsZVVybCkge1xuICAgIC8vIFJlcGxhY2UgZm9yd2FyZCBzbGFzaGVzIHdpdGggYmFja3NsYXNoZXNcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGZvcndhcmRTbGFzaFBhdHRlcm4sICdcXFxcJyk7XG5cbiAgICAvLyBDYXBpdGFsaXplIHRoZSBkcml2ZSBsZXR0ZXJcbiAgICBpZiAocGF0aC5zdWJzdHIoMSwgMikgPT09ICc6XFxcXCcpIHtcbiAgICAgIHBhdGggPSBwYXRoWzBdLnRvVXBwZXJDYXNlKCkgKyBwYXRoLnN1YnN0cigxKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn07XG4iLCIvKiBlc2xpbnQgbGluZXMtYXJvdW5kLWNvbW1lbnQ6IFsyLCB7YmVmb3JlQmxvY2tDb21tZW50OiBmYWxzZX1dICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciB5YW1sID0gcmVxdWlyZSgnanMteWFtbCcpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpO1xuXG4vKipcbiAqIFNpbXBsZSBZQU1MIHBhcnNpbmcgZnVuY3Rpb25zLCBzaW1pbGFyIHRvIHtAbGluayBKU09OLnBhcnNlfSBhbmQge0BsaW5rIEpTT04uc3RyaW5naWZ5fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFBhcnNlcyBhIFlBTUwgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgWUFNTCBzdHJpbmcgdG8gYmUgcGFyc2VkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtyZXZpdmVyXSAtIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiBQcm92aWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB7QGxpbmsgSlNPTi5wYXJzZX1cbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24geWFtbFBhcnNlICh0ZXh0LCByZXZpdmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB5YW1sLnNhZmVMb2FkKHRleHQpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9pc3N1ZXMvMTUzXG4gICAgICAgIHRocm93IG9ubyhlLCBlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ29udmVydHMgYSBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgWUFNTCBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSAgIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIFlBTUxcbiAgICogQHBhcmFtICAge2Z1bmN0aW9ufGFycmF5fSByZXBsYWNlciAtIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiBQcm92aWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB7QGxpbmsgSlNPTi5zdHJpbmdpZnl9XG4gICAqIEBwYXJhbSAgIHtzdHJpbmd8bnVtYmVyfSBzcGFjZSAtIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIHVzZSBmb3IgaW5kZW50YXRpb24sIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzcGFjZXMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHlhbWxTdHJpbmdpZnkgKHZhbHVlLCByZXBsYWNlciwgc3BhY2UpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGluZGVudCA9ICh0eXBlb2Ygc3BhY2UgPT09ICdzdHJpbmcnID8gc3BhY2UubGVuZ3RoIDogc3BhY2UpIHx8IDI7XG4gICAgICByZXR1cm4geWFtbC5zYWZlRHVtcCh2YWx1ZSwgeyBpbmRlbnQ6IGluZGVudCB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvaXNzdWVzLzE1M1xuICAgICAgICB0aHJvdyBvbm8oZSwgZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMyBUaGFkZGVlIFR5bCA8dGhhZGRlZS50eWxAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEpvb3N0LVdpbSBCb2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgS3JpcyBLb3dhbCA8a3Jpcy5rb3dhbEBjaXhhci5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDExIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbi8qanNsaW50IGJpdHdpc2U6dHJ1ZSBwbHVzcGx1czp0cnVlICovXG4vKmdsb2JhbCBlc3ByaW1hOnRydWUsIGRlZmluZTp0cnVlLCBleHBvcnRzOnRydWUsIHdpbmRvdzogdHJ1ZSxcbnRocm93RXJyb3JUb2xlcmFudDogdHJ1ZSxcbnRocm93RXJyb3I6IHRydWUsIGdlbmVyYXRlU3RhdGVtZW50OiB0cnVlLCBwZWVrOiB0cnVlLFxucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbjogdHJ1ZSwgcGFyc2VCbG9jazogdHJ1ZSwgcGFyc2VFeHByZXNzaW9uOiB0cnVlLFxucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uOiB0cnVlLCBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50czogdHJ1ZSwgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXI6IHRydWUsXG5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb246IHRydWUsXG5wYXJzZVVuYXJ5RXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQ6IHRydWUgKi9cblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8gVW5pdmVyc2FsIE1vZHVsZSBEZWZpbml0aW9uIChVTUQpIHRvIHN1cHBvcnQgQU1ELCBDb21tb25KUy9Ob2RlLmpzLFxuICAgIC8vIFJoaW5vLCBhbmQgcGxhaW4gYnJvd3NlciBsb2FkaW5nLlxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZmFjdG9yeShleHBvcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5KChyb290LmVzcHJpbWEgPSB7fSkpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgVG9rZW4sXG4gICAgICAgIFRva2VuTmFtZSxcbiAgICAgICAgRm5FeHByVG9rZW5zLFxuICAgICAgICBTeW50YXgsXG4gICAgICAgIFByb3BlcnR5S2luZCxcbiAgICAgICAgTWVzc2FnZXMsXG4gICAgICAgIFJlZ2V4LFxuICAgICAgICBTeW50YXhUcmVlRGVsZWdhdGUsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgc3RyaWN0LFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbGluZU51bWJlcixcbiAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICBsZW5ndGgsXG4gICAgICAgIGRlbGVnYXRlLFxuICAgICAgICBsb29rYWhlYWQsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRyYTtcblxuICAgIFRva2VuID0ge1xuICAgICAgICBCb29sZWFuTGl0ZXJhbDogMSxcbiAgICAgICAgRU9GOiAyLFxuICAgICAgICBJZGVudGlmaWVyOiAzLFxuICAgICAgICBLZXl3b3JkOiA0LFxuICAgICAgICBOdWxsTGl0ZXJhbDogNSxcbiAgICAgICAgTnVtZXJpY0xpdGVyYWw6IDYsXG4gICAgICAgIFB1bmN0dWF0b3I6IDcsXG4gICAgICAgIFN0cmluZ0xpdGVyYWw6IDgsXG4gICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uOiA5XG4gICAgfTtcblxuICAgIFRva2VuTmFtZSA9IHt9O1xuICAgIFRva2VuTmFtZVtUb2tlbi5Cb29sZWFuTGl0ZXJhbF0gPSAnQm9vbGVhbic7XG4gICAgVG9rZW5OYW1lW1Rva2VuLkVPRl0gPSAnPGVuZD4nO1xuICAgIFRva2VuTmFtZVtUb2tlbi5JZGVudGlmaWVyXSA9ICdJZGVudGlmaWVyJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uS2V5d29yZF0gPSAnS2V5d29yZCc7XG4gICAgVG9rZW5OYW1lW1Rva2VuLk51bGxMaXRlcmFsXSA9ICdOdWxsJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uTnVtZXJpY0xpdGVyYWxdID0gJ051bWVyaWMnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5QdW5jdHVhdG9yXSA9ICdQdW5jdHVhdG9yJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uU3RyaW5nTGl0ZXJhbF0gPSAnU3RyaW5nJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uUmVndWxhckV4cHJlc3Npb25dID0gJ1JlZ3VsYXJFeHByZXNzaW9uJztcblxuICAgIC8vIEEgZnVuY3Rpb24gZm9sbG93aW5nIG9uZSBvZiB0aG9zZSB0b2tlbnMgaXMgYW4gZXhwcmVzc2lvbi5cbiAgICBGbkV4cHJUb2tlbnMgPSBbJygnLCAneycsICdbJywgJ2luJywgJ3R5cGVvZicsICdpbnN0YW5jZW9mJywgJ25ldycsXG4gICAgICAgICAgICAgICAgICAgICdyZXR1cm4nLCAnY2FzZScsICdkZWxldGUnLCAndGhyb3cnLCAndm9pZCcsXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3JzXG4gICAgICAgICAgICAgICAgICAgICc9JywgJys9JywgJy09JywgJyo9JywgJy89JywgJyU9JywgJzw8PScsICc+Pj0nLCAnPj4+PScsXG4gICAgICAgICAgICAgICAgICAgICcmPScsICd8PScsICdePScsICcsJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5L3VuYXJ5IG9wZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgICAnKycsICctJywgJyonLCAnLycsICclJywgJysrJywgJy0tJywgJzw8JywgJz4+JywgJz4+PicsICcmJyxcbiAgICAgICAgICAgICAgICAgICAgJ3wnLCAnXicsICchJywgJ34nLCAnJiYnLCAnfHwnLCAnPycsICc6JywgJz09PScsICc9PScsICc+PScsXG4gICAgICAgICAgICAgICAgICAgICc8PScsICc8JywgJz4nLCAnIT0nLCAnIT09J107XG5cbiAgICBTeW50YXggPSB7XG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4cHJlc3Npb24nLFxuICAgICAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24nLFxuICAgICAgICBCbG9ja1N0YXRlbWVudDogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogJ0JyZWFrU3RhdGVtZW50JyxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246ICdDYWxsRXhwcmVzc2lvbicsXG4gICAgICAgIENhdGNoQ2xhdXNlOiAnQ2F0Y2hDbGF1c2UnLFxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICdDb25kaXRpb25hbEV4cHJlc3Npb24nLFxuICAgICAgICBDb250aW51ZVN0YXRlbWVudDogJ0NvbnRpbnVlU3RhdGVtZW50JyxcbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogJ0RvV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudDogJ0RlYnVnZ2VyU3RhdGVtZW50JyxcbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6ICdFbXB0eVN0YXRlbWVudCcsXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6ICdFeHByZXNzaW9uU3RhdGVtZW50JyxcbiAgICAgICAgRm9yU3RhdGVtZW50OiAnRm9yU3RhdGVtZW50JyxcbiAgICAgICAgRm9ySW5TdGF0ZW1lbnQ6ICdGb3JJblN0YXRlbWVudCcsXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246ICdGdW5jdGlvbkRlY2xhcmF0aW9uJyxcbiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHByZXNzaW9uJyxcbiAgICAgICAgSWRlbnRpZmllcjogJ0lkZW50aWZpZXInLFxuICAgICAgICBJZlN0YXRlbWVudDogJ0lmU3RhdGVtZW50JyxcbiAgICAgICAgTGl0ZXJhbDogJ0xpdGVyYWwnLFxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiAnTGFiZWxlZFN0YXRlbWVudCcsXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLFxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgIE5ld0V4cHJlc3Npb246ICdOZXdFeHByZXNzaW9uJyxcbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogJ09iamVjdEV4cHJlc3Npb24nLFxuICAgICAgICBQcm9ncmFtOiAnUHJvZ3JhbScsXG4gICAgICAgIFByb3BlcnR5OiAnUHJvcGVydHknLFxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6ICdSZXR1cm5TdGF0ZW1lbnQnLFxuICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246ICdTZXF1ZW5jZUV4cHJlc3Npb24nLFxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICdTd2l0Y2hTdGF0ZW1lbnQnLFxuICAgICAgICBTd2l0Y2hDYXNlOiAnU3dpdGNoQ2FzZScsXG4gICAgICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4cHJlc3Npb24nLFxuICAgICAgICBUaHJvd1N0YXRlbWVudDogJ1Rocm93U3RhdGVtZW50JyxcbiAgICAgICAgVHJ5U3RhdGVtZW50OiAnVHJ5U3RhdGVtZW50JyxcbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiAnVW5hcnlFeHByZXNzaW9uJyxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogJ1VwZGF0ZUV4cHJlc3Npb24nLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAnVmFyaWFibGVEZWNsYXJhdGlvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogJ1ZhcmlhYmxlRGVjbGFyYXRvcicsXG4gICAgICAgIFdoaWxlU3RhdGVtZW50OiAnV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBXaXRoU3RhdGVtZW50OiAnV2l0aFN0YXRlbWVudCdcbiAgICB9O1xuXG4gICAgUHJvcGVydHlLaW5kID0ge1xuICAgICAgICBEYXRhOiAxLFxuICAgICAgICBHZXQ6IDIsXG4gICAgICAgIFNldDogNFxuICAgIH07XG5cbiAgICAvLyBFcnJvciBtZXNzYWdlcyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIFY4LlxuICAgIE1lc3NhZ2VzID0ge1xuICAgICAgICBVbmV4cGVjdGVkVG9rZW46ICAnVW5leHBlY3RlZCB0b2tlbiAlMCcsXG4gICAgICAgIFVuZXhwZWN0ZWROdW1iZXI6ICAnVW5leHBlY3RlZCBudW1iZXInLFxuICAgICAgICBVbmV4cGVjdGVkU3RyaW5nOiAgJ1VuZXhwZWN0ZWQgc3RyaW5nJyxcbiAgICAgICAgVW5leHBlY3RlZElkZW50aWZpZXI6ICAnVW5leHBlY3RlZCBpZGVudGlmaWVyJyxcbiAgICAgICAgVW5leHBlY3RlZFJlc2VydmVkOiAgJ1VuZXhwZWN0ZWQgcmVzZXJ2ZWQgd29yZCcsXG4gICAgICAgIFVuZXhwZWN0ZWRFT1M6ICAnVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQnLFxuICAgICAgICBOZXdsaW5lQWZ0ZXJUaHJvdzogICdJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3cnLFxuICAgICAgICBJbnZhbGlkUmVnRXhwOiAnSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24nLFxuICAgICAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICAnSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgLycsXG4gICAgICAgIEludmFsaWRMSFNJbkFzc2lnbm1lbnQ6ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBhc3NpZ25tZW50JyxcbiAgICAgICAgSW52YWxpZExIU0luRm9ySW46ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3ItaW4nLFxuICAgICAgICBNdWx0aXBsZURlZmF1bHRzSW5Td2l0Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQnLFxuICAgICAgICBOb0NhdGNoT3JGaW5hbGx5OiAgJ01pc3NpbmcgY2F0Y2ggb3IgZmluYWxseSBhZnRlciB0cnknLFxuICAgICAgICBVbmtub3duTGFiZWw6ICdVbmRlZmluZWQgbGFiZWwgXFwnJTBcXCcnLFxuICAgICAgICBSZWRlY2xhcmF0aW9uOiAnJTAgXFwnJTFcXCcgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCcsXG4gICAgICAgIElsbGVnYWxDb250aW51ZTogJ0lsbGVnYWwgY29udGludWUgc3RhdGVtZW50JyxcbiAgICAgICAgSWxsZWdhbEJyZWFrOiAnSWxsZWdhbCBicmVhayBzdGF0ZW1lbnQnLFxuICAgICAgICBJbGxlZ2FsUmV0dXJuOiAnSWxsZWdhbCByZXR1cm4gc3RhdGVtZW50JyxcbiAgICAgICAgU3RyaWN0TW9kZVdpdGg6ICAnU3RyaWN0IG1vZGUgY29kZSBtYXkgbm90IGluY2x1ZGUgYSB3aXRoIHN0YXRlbWVudCcsXG4gICAgICAgIFN0cmljdENhdGNoVmFyaWFibGU6ICAnQ2F0Y2ggdmFyaWFibGUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIFN0cmljdFZhck5hbWU6ICAnVmFyaWFibGUgbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UGFyYW1OYW1lOiAgJ1BhcmFtZXRlciBuYW1lIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UGFyYW1EdXBlOiAnU3RyaWN0IG1vZGUgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMnLFxuICAgICAgICBTdHJpY3RGdW5jdGlvbk5hbWU6ICAnRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0T2N0YWxMaXRlcmFsOiAgJ09jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4nLFxuICAgICAgICBTdHJpY3REZWxldGU6ICAnRGVsZXRlIG9mIGFuIHVucXVhbGlmaWVkIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUuJyxcbiAgICAgICAgU3RyaWN0RHVwbGljYXRlUHJvcGVydHk6ICAnRHVwbGljYXRlIGRhdGEgcHJvcGVydHkgaW4gb2JqZWN0IGxpdGVyYWwgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBBY2Nlc3NvckRhdGFQcm9wZXJ0eTogICdPYmplY3QgbGl0ZXJhbCBtYXkgbm90IGhhdmUgZGF0YSBhbmQgYWNjZXNzb3IgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lJyxcbiAgICAgICAgQWNjZXNzb3JHZXRTZXQ6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIG11bHRpcGxlIGdldC9zZXQgYWNjZXNzb3JzIHdpdGggdGhlIHNhbWUgbmFtZScsXG4gICAgICAgIFN0cmljdExIU0Fzc2lnbm1lbnQ6ICAnQXNzaWdubWVudCB0byBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIFN0cmljdExIU1Bvc3RmaXg6ICAnUG9zdGZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0TEhTUHJlZml4OiAgJ1ByZWZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UmVzZXJ2ZWRXb3JkOiAgJ1VzZSBvZiBmdXR1cmUgcmVzZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZSdcbiAgICB9O1xuXG4gICAgLy8gU2VlIGFsc28gdG9vbHMvZ2VuZXJhdGUtdW5pY29kZS1yZWdleC5weS5cbiAgICBSZWdleCA9IHtcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6IG5ldyBSZWdFeHAoJ1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyN1xcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMFxcdTA4QTItXFx1MDhBQ1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTc3XFx1MDk3OS1cXHUwOTdGXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkYwXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OTdcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTgwLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10nKSxcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogbmV3IFJlZ0V4cCgnW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzAwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4My1cXHUwNDg3XFx1MDQ4QS1cXHUwNTI3XFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MTAtXFx1MDYxQVxcdTA2MjAtXFx1MDY2OVxcdTA2NkUtXFx1MDZEM1xcdTA2RDUtXFx1MDZEQ1xcdTA2REYtXFx1MDZFOFxcdTA2RUEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwLVxcdTA3NEFcXHUwNzRELVxcdTA3QjFcXHUwN0MwLVxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODJEXFx1MDg0MC1cXHUwODVCXFx1MDhBMFxcdTA4QTItXFx1MDhBQ1xcdTA4RTQtXFx1MDhGRVxcdTA5MDAtXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5NzEtXFx1MDk3N1xcdTA5NzktXFx1MDk3RlxcdTA5ODEtXFx1MDk4M1xcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkMtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNFXFx1MDlEN1xcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUzXFx1MDlFNi1cXHUwOUYxXFx1MEEwMS1cXHUwQTAzXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCQy1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFEMFxcdTBBRTAtXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAxLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNThcXHUwQzU5XFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MlxcdTBDODNcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JDLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDREVcXHUwQ0UwLVxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwQ0YxXFx1MENGMlxcdTBEMDJcXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENjAtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGMFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOUQ5XFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFEMDAtXFx1MURFNlxcdTFERkMtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OVxcdTMwOUFcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2OTdcXHVBNjlGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzRcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0JcXHVBQTgwLVxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUZcXHVBQUYyLVxcdUFBRjZcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQkMwLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTI2XFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjEwLVxcdUZGMTlcXHVGRjIxLVxcdUZGM0FcXHVGRjNGXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXScpXG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB0aGUgY29uZGl0aW9uIGlzIHRydWUsIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cbiAgICAvLyBUaGlzIGlzIG9ubHkgdG8gaGF2ZSBhIGJldHRlciBjb250cmFjdCBzZW1hbnRpYywgaS5lLiBhbm90aGVyIHNhZmV0eSBuZXRcbiAgICAvLyB0byBjYXRjaCBhIGxvZ2ljIGVycm9yLiBUaGUgY29uZGl0aW9uIHNoYWxsIGJlIGZ1bGZpbGxlZCBpbiBub3JtYWwgY2FzZS5cbiAgICAvLyBEbyBOT1QgdXNlIHRoaXMgdG8gZW5mb3JjZSBhIGNlcnRhaW4gY29uZGl0aW9uIG9uIGFueSB1c2VyIGlucHV0LlxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVNTRVJUOiAnICsgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID49IDQ4ICYmIGNoIDw9IDU3KTsgICAvLyAwLi45XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNIZXhEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gJzAxMjM0NTY3ODlhYmNkZWZBQkNERUYnLmluZGV4T2YoY2gpID49IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPY3RhbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAnMDEyMzQ1NjcnLmluZGV4T2YoY2gpID49IDA7XG4gICAgfVxuXG5cbiAgICAvLyA3LjIgV2hpdGUgU3BhY2VcblxuICAgIGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDIwKSB8fCAoY2ggPT09IDB4MDkpIHx8IChjaCA9PT0gMHgwQikgfHwgKGNoID09PSAweDBDKSB8fCAoY2ggPT09IDB4QTApIHx8XG4gICAgICAgICAgICAoY2ggPj0gMHgxNjgwICYmIFsweDE2ODAsIDB4MTgwRSwgMHgyMDAwLCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLCAweDIwMDQsIDB4MjAwNSwgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsIDB4MjAyRiwgMHgyMDVGLCAweDMwMDAsIDB4RkVGRl0uaW5kZXhPZihjaCkgPj0gMCk7XG4gICAgfVxuXG4gICAgLy8gNy4zIExpbmUgVGVybWluYXRvcnNcblxuICAgIGZ1bmN0aW9uIGlzTGluZVRlcm1pbmF0b3IoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgwQSkgfHwgKGNoID09PSAweDBEKSB8fCAoY2ggPT09IDB4MjAyOCkgfHwgKGNoID09PSAweDIwMjkpO1xuICAgIH1cblxuICAgIC8vIDcuNiBJZGVudGlmaWVyIE5hbWVzIGFuZCBJZGVudGlmaWVyc1xuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnQoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PSAweDQwKSB8fCAgKGNoID09PSAweDI0KSB8fCAoY2ggPT09IDB4NUYpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAgICAgICAvLyBBLi5aXG4gICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAgICAgICAgIC8vIGEuLnpcbiAgICAgICAgICAgIChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAgICAgLy8gXFwgKGJhY2tzbGFzaClcbiAgICAgICAgICAgICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgyNCkgfHwgKGNoID09PSAweDVGKSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSlcbiAgICAgICAgICAgIChjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEpIHx8ICAgICAgICAgLy8gQS4uWlxuICAgICAgICAgICAgKGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSkgfHwgICAgICAgICAvLyBhLi56XG4gICAgICAgICAgICAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5KSB8fCAgICAgICAgIC8vIDAuLjlcbiAgICAgICAgICAgIChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAgICAgLy8gXFwgKGJhY2tzbGFzaClcbiAgICAgICAgICAgICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7XG4gICAgfVxuXG4gICAgLy8gNy42LjEuMiBGdXR1cmUgUmVzZXJ2ZWQgV29yZHNcblxuICAgIGZ1bmN0aW9uIGlzRnV0dXJlUmVzZXJ2ZWRXb3JkKGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgY2FzZSAnZXh0ZW5kcyc6XG4gICAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgIGNhc2UgJ3N1cGVyJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgY2FzZSAnaW1wbGVtZW50cyc6XG4gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG4gICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuICAgICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkJzpcbiAgICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgY2FzZSAnc3RhdGljJzpcbiAgICAgICAgY2FzZSAneWllbGQnOlxuICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc3RyaWN0ZWRXb3JkKGlkKSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJztcbiAgICB9XG5cbiAgICAvLyA3LjYuMS4xIEtleXdvcmRzXG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmQoaWQpIHtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdjb25zdCcgaXMgc3BlY2lhbGl6ZWQgYXMgS2V5d29yZCBpbiBWOC5cbiAgICAgICAgLy8gJ3lpZWxkJyBhbmQgJ2xldCcgYXJlIGZvciBjb21wYXRpYmxpdHkgd2l0aCBTcGlkZXJNb25rZXkgYW5kIEVTLm5leHQuXG4gICAgICAgIC8vIFNvbWUgb3RoZXJzIGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZlZCB3b3Jkcy5cblxuICAgICAgICBzd2l0Y2ggKGlkLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnaWYnKSB8fCAoaWQgPT09ICdpbicpIHx8IChpZCA9PT0gJ2RvJyk7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAoaWQgPT09ICduZXcnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3RyeScpIHx8IChpZCA9PT0gJ2xldCcpO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAndGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8IChpZCA9PT0gJ2VudW0nKTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8IChpZCA9PT0gJ3lpZWxkJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8IChpZCA9PT0gJ3N1cGVyJyk7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdyZXR1cm4nKSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3N3aXRjaCcpIHx8IChpZCA9PT0gJ2V4cG9ydCcpIHx8IChpZCA9PT0gJ2ltcG9ydCcpO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnZGVmYXVsdCcpIHx8IChpZCA9PT0gJ2ZpbmFsbHknKSB8fCAoaWQgPT09ICdleHRlbmRzJyk7XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicpIHx8IChpZCA9PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXInKTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpbnN0YW5jZW9mJyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA3LjQgQ29tbWVudHNcblxuICAgIGZ1bmN0aW9uIGFkZENvbW1lbnQodHlwZSwgdmFsdWUsIHN0YXJ0LCBlbmQsIGxvYykge1xuICAgICAgICB2YXIgY29tbWVudCwgYXR0YWNoZXI7XG5cbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicsICdDb21tZW50IG11c3QgaGF2ZSB2YWxpZCBwb3NpdGlvbicpO1xuXG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIHdheSB0aGUgYWN0dWFsIHRva2VuIGlzIHNjYW5uZWQsIG9mdGVuIHRoZSBjb21tZW50c1xuICAgICAgICAvLyAoaWYgYW55KSBhcmUgc2tpcHBlZCB0d2ljZSBkdXJpbmcgdGhlIGxleGljYWwgYW5hbHlzaXMuXG4gICAgICAgIC8vIFRodXMsIHdlIG5lZWQgdG8gc2tpcCBhZGRpbmcgYSBjb21tZW50IGlmIHRoZSBjb21tZW50IGFycmF5IGFscmVhZHlcbiAgICAgICAgLy8gaGFuZGxlZCBpdC5cbiAgICAgICAgaWYgKHN0YXRlLmxhc3RDb21tZW50U3RhcnQgPj0gc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sYXN0Q29tbWVudFN0YXJ0ID0gc3RhcnQ7XG5cbiAgICAgICAgY29tbWVudCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICBjb21tZW50LnJhbmdlID0gW3N0YXJ0LCBlbmRdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHRyYS5sb2MpIHtcbiAgICAgICAgICAgIGNvbW1lbnQubG9jID0gbG9jO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7XG4gICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBTaW5nbGVMaW5lQ29tbWVudChvZmZzZXQpIHtcbiAgICAgICAgdmFyIHN0YXJ0LCBsb2MsIGNoLCBjb21tZW50O1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXggLSBvZmZzZXQ7XG4gICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gb2Zmc2V0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIG9mZnNldCwgaW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBhZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQsIGluZGV4IC0gMSwgbG9jKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAxMyAmJiBzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyBvZmZzZXQsIGluZGV4KTtcbiAgICAgICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWRkQ29tbWVudCgnTGluZScsIGNvbW1lbnQsIHN0YXJ0LCBpbmRleCwgbG9jKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBNdWx0aUxpbmVDb21tZW50KCkge1xuICAgICAgICB2YXIgc3RhcnQsIGxvYywgY2gsIGNvbW1lbnQ7XG5cbiAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICBzdGFydCA9IGluZGV4IC0gMjtcbiAgICAgICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4MEEpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyQSkge1xuICAgICAgICAgICAgICAgIC8vIEJsb2NrIGNvbW1lbnQgZW5kcyB3aXRoICcqLycuXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4MkYpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgMiwgaW5kZXggLSAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tbWVudCgnQmxvY2snLCBjb21tZW50LCBzdGFydCwgaW5kZXgsIGxvYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBDb21tZW50KCkge1xuICAgICAgICB2YXIgY2gsIHN0YXJ0O1xuXG4gICAgICAgIHN0YXJ0ID0gKGluZGV4ID09PSAwKTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcblxuICAgICAgICAgICAgaWYgKGlzV2hpdGVTcGFjZShjaCkpIHtcbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgwQSkge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7XG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyRikgeyAvLyBVKzAwMkYgaXMgJy8nXG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMHgyRikge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoMik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJBKSB7ICAvLyBVKzAwMkEgaXMgJyonXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHNraXBNdWx0aUxpbmVDb21tZW50KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydCAmJiBjaCA9PT0gMHgyRCkgeyAvLyBVKzAwMkQgaXMgJy0nXG4gICAgICAgICAgICAgICAgLy8gVSswMDNFIGlzICc+J1xuICAgICAgICAgICAgICAgIGlmICgoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgyRCkgJiYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMikgPT09IDB4M0UpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICctLT4nIGlzIGEgc2luZ2xlLWxpbmUgY29tbWVudFxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAzO1xuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoMyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgzQykgeyAvLyBVKzAwM0MgaXMgJzwnXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNCkgPT09ICchLS0nKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGA8YFxuICAgICAgICAgICAgICAgICAgICArK2luZGV4OyAvLyBgIWBcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1gXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAtYFxuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5IZXhFc2NhcGUocHJlZml4KSB7XG4gICAgICAgIHZhciBpLCBsZW4sIGNoLCBjb2RlID0gMDtcblxuICAgICAgICBsZW4gPSAocHJlZml4ID09PSAndScpID8gNCA6IDI7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzSGV4RGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDE2ICsgJzAxMjM0NTY3ODlhYmNkZWYnLmluZGV4T2YoY2gudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFc2NhcGVkSWRlbnRpZmllcigpIHtcbiAgICAgICAgdmFyIGNoLCBpZDtcblxuICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KyspO1xuICAgICAgICBpZCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuXG4gICAgICAgIC8vICdcXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKGNoID09PSAweDVDKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAweDc1KSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGNoID0gc2NhbkhleEVzY2FwZSgndScpO1xuICAgICAgICAgICAgaWYgKCFjaCB8fCBjaCA9PT0gJ1xcXFwnIHx8ICFpc0lkZW50aWZpZXJTdGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlkID0gY2g7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJQYXJ0KGNoKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuXG4gICAgICAgICAgICAvLyAnXFx1JyAoVSswMDVDLCBVKzAwNzUpIGRlbm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAgICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGlkLnN1YnN0cigwLCBpZC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAweDc1KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnXFxcXCcgfHwgIWlzSWRlbnRpZmllclBhcnQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZCArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGNoO1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXgrKztcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gMHg1Qykge1xuICAgICAgICAgICAgICAgIC8vIEJsYWNrc2xhc2ggKFUrMDA1QykgbWFya3MgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXG4gICAgICAgICAgICAgICAgaW5kZXggPSBzdGFydDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RXNjYXBlZElkZW50aWZpZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJQYXJ0KGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5JZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGlkLCB0eXBlO1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXg7XG5cbiAgICAgICAgLy8gQmFja3NsYXNoIChVKzAwNUMpIHN0YXJ0cyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgaWQgPSAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDVDKSA/IGdldEVzY2FwZWRJZGVudGlmaWVyKCkgOiBnZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgLy8gVGhlcmUgaXMgbm8ga2V5d29yZCBvciBsaXRlcmFsIHdpdGggb25seSBvbmUgY2hhcmFjdGVyLlxuICAgICAgICAvLyBUaHVzLCBpdCBtdXN0IGJlIGFuIGlkZW50aWZpZXIuXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5JZGVudGlmaWVyO1xuICAgICAgICB9IGVsc2UgaWYgKGlzS2V5d29yZChpZCkpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5LZXl3b3JkO1xuICAgICAgICB9IGVsc2UgaWYgKGlkID09PSAnbnVsbCcpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5OdWxsTGl0ZXJhbDtcbiAgICAgICAgfSBlbHNlIGlmIChpZCA9PT0gJ3RydWUnIHx8IGlkID09PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW4uQm9vbGVhbkxpdGVyYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW4uSWRlbnRpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgdmFsdWU6IGlkLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuXG4gICAgLy8gNy43IFB1bmN0dWF0b3JzXG5cbiAgICBmdW5jdGlvbiBzY2FuUHVuY3R1YXRvcigpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gaW5kZXgsXG4gICAgICAgICAgICBjb2RlID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpLFxuICAgICAgICAgICAgY29kZTIsXG4gICAgICAgICAgICBjaDEgPSBzb3VyY2VbaW5kZXhdLFxuICAgICAgICAgICAgY2gyLFxuICAgICAgICAgICAgY2gzLFxuICAgICAgICAgICAgY2g0O1xuXG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5nbGUtY2hhcmFjdGVyIHB1bmN0dWF0b3JzLlxuICAgICAgICBjYXNlIDB4MkU6ICAvLyAuIGRvdFxuICAgICAgICBjYXNlIDB4Mjg6ICAvLyAoIG9wZW4gYnJhY2tldFxuICAgICAgICBjYXNlIDB4Mjk6ICAvLyApIGNsb3NlIGJyYWNrZXRcbiAgICAgICAgY2FzZSAweDNCOiAgLy8gOyBzZW1pY29sb25cbiAgICAgICAgY2FzZSAweDJDOiAgLy8gLCBjb21tYVxuICAgICAgICBjYXNlIDB4N0I6ICAvLyB7IG9wZW4gY3VybHkgYnJhY2VcbiAgICAgICAgY2FzZSAweDdEOiAgLy8gfSBjbG9zZSBjdXJseSBicmFjZVxuICAgICAgICBjYXNlIDB4NUI6ICAvLyBbXG4gICAgICAgIGNhc2UgMHg1RDogIC8vIF1cbiAgICAgICAgY2FzZSAweDNBOiAgLy8gOlxuICAgICAgICBjYXNlIDB4M0Y6ICAvLyA/XG4gICAgICAgIGNhc2UgMHg3RTogIC8vIH5cbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyOCkge1xuICAgICAgICAgICAgICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IGV4dHJhLnRva2Vucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDdCKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSksXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY29kZTIgPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpO1xuXG4gICAgICAgICAgICAvLyAnPScgKFUrMDAzRCkgbWFya3MgYW4gYXNzaWdubWVudCBvciBjb21wYXJpc29uIG9wZXJhdG9yLlxuICAgICAgICAgICAgaWYgKGNvZGUyID09PSAweDNEKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAweDJCOiAgLy8gK1xuICAgICAgICAgICAgICAgIGNhc2UgMHgyRDogIC8vIC1cbiAgICAgICAgICAgICAgICBjYXNlIDB4MkY6ICAvLyAvXG4gICAgICAgICAgICAgICAgY2FzZSAweDNDOiAgLy8gPFxuICAgICAgICAgICAgICAgIGNhc2UgMHgzRTogIC8vID5cbiAgICAgICAgICAgICAgICBjYXNlIDB4NUU6ICAvLyBeXG4gICAgICAgICAgICAgICAgY2FzZSAweDdDOiAgLy8gfFxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNTogIC8vICVcbiAgICAgICAgICAgICAgICBjYXNlIDB4MjY6ICAvLyAmXG4gICAgICAgICAgICAgICAgY2FzZSAweDJBOiAgLy8gKlxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpICsgU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlMiksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjYXNlIDB4MjE6IC8vICFcbiAgICAgICAgICAgICAgICBjYXNlIDB4M0Q6IC8vID1cbiAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjtcblxuICAgICAgICAgICAgICAgICAgICAvLyAhPT0gYW5kID09PVxuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDNEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQtY2hhcmFjdGVyIHB1bmN0dWF0b3I6ID4+Pj1cblxuICAgICAgICBjaDQgPSBzb3VyY2Uuc3Vic3RyKGluZGV4LCA0KTtcblxuICAgICAgICBpZiAoY2g0ID09PSAnPj4+PScpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IDQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNoNCxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy1jaGFyYWN0ZXIgcHVuY3R1YXRvcnM6ID09PSAhPT0gPj4+IDw8PSA+Pj1cblxuICAgICAgICBjaDMgPSBjaDQuc3Vic3RyKDAsIDMpO1xuXG4gICAgICAgIGlmIChjaDMgPT09ICc+Pj4nIHx8IGNoMyA9PT0gJzw8PScgfHwgY2gzID09PSAnPj49Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gMztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2gzLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlciAyLWNoYXJhY3RlciBwdW5jdHVhdG9yczogKysgLS0gPDwgPj4gJiYgfHxcbiAgICAgICAgY2gyID0gY2gzLnN1YnN0cigwLCAyKTtcblxuICAgICAgICBpZiAoKGNoMSA9PT0gY2gyWzFdICYmICgnKy08PiZ8Jy5pbmRleE9mKGNoMSkgPj0gMCkpIHx8IGNoMiA9PT0gJz0+Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2gyLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPCA+ID0gISArIC0gKiAlICYgfCBeIC9cbiAgICAgICAgaWYgKCc8Pj0hKy0qJSZ8Xi8nLmluZGV4T2YoY2gxKSA+PSAwKSB7XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDEsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICB9XG5cbiAgICAvLyA3LjguMyBOdW1lcmljIExpdGVyYWxzXG5cbiAgICBmdW5jdGlvbiBzY2FuSGV4TGl0ZXJhbChzdGFydCkge1xuICAgICAgICB2YXIgbnVtYmVyID0gJyc7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoIWlzSGV4RGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobnVtYmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbi5OdW1lcmljTGl0ZXJhbCxcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCgnMHgnICsgbnVtYmVyLCAxNiksXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2Nhbk9jdGFsTGl0ZXJhbChzdGFydCkge1xuICAgICAgICB2YXIgbnVtYmVyID0gJzAnICsgc291cmNlW2luZGV4KytdO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghaXNPY3RhbERpZ2l0KHNvdXJjZVtpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkgfHwgaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KG51bWJlciwgOCksXG4gICAgICAgICAgICBvY3RhbDogdHJ1ZSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuTnVtZXJpY0xpdGVyYWwoKSB7XG4gICAgICAgIHZhciBudW1iZXIsIHN0YXJ0LCBjaDtcblxuICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydChpc0RlY2ltYWxEaWdpdChjaC5jaGFyQ29kZUF0KDApKSB8fCAoY2ggPT09ICcuJyksXG4gICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIGRlY2ltYWwgZGlnaXQgb3IgYSBkZWNpbWFsIHBvaW50Jyk7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcbiAgICAgICAgbnVtYmVyID0gJyc7XG4gICAgICAgIGlmIChjaCAhPT0gJy4nKSB7XG4gICAgICAgICAgICBudW1iZXIgPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG5cbiAgICAgICAgICAgIC8vIEhleCBudW1iZXIgc3RhcnRzIHdpdGggJzB4Jy5cbiAgICAgICAgICAgIC8vIE9jdGFsIG51bWJlciBzdGFydHMgd2l0aCAnMCcuXG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAnMCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd4JyB8fCBjaCA9PT0gJ1gnKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuSGV4TGl0ZXJhbChzdGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBkZWNpbWFsIG51bWJlciBzdGFydHMgd2l0aCAnMCcgc3VjaCBhcyAnMDknIGlzIGlsbGVnYWwuXG4gICAgICAgICAgICAgICAgaWYgKGNoICYmIGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdoaWxlIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAnZScgfHwgY2ggPT09ICdFJykge1xuICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcblxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnKycgfHwgY2ggPT09ICctJykge1xuICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlRmxvYXQobnVtYmVyKSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyA3LjguNCBTdHJpbmcgTGl0ZXJhbHNcblxuICAgIGZ1bmN0aW9uIHNjYW5TdHJpbmdMaXRlcmFsKCkge1xuICAgICAgICB2YXIgc3RyID0gJycsIHF1b3RlLCBzdGFydCwgY2gsIGNvZGUsIHVuZXNjYXBlZCwgcmVzdG9yZSwgb2N0YWwgPSBmYWxzZSwgc3RhcnRMaW5lTnVtYmVyLCBzdGFydExpbmVTdGFydDtcbiAgICAgICAgc3RhcnRMaW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnRMaW5lU3RhcnQgPSBsaW5lU3RhcnQ7XG5cbiAgICAgICAgcXVvdGUgPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICBhc3NlcnQoKHF1b3RlID09PSAnXFwnJyB8fCBxdW90ZSA9PT0gJ1wiJyksXG4gICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWwgbXVzdCBzdGFydHMgd2l0aCBhIHF1b3RlJyk7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcbiAgICAgICAgKytpbmRleDtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgICAgICBpZiAoY2ggPT09IHF1b3RlKSB7XG4gICAgICAgICAgICAgICAgcXVvdGUgPSAnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIGlmICghY2ggfHwgIWlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4RXNjYXBlKGNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmVzY2FwZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdW5lc2NhcGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXGInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXGYnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHgwQic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxcMCBpcyBub3Qgb2N0YWwgZXNjYXBlIHNlcXVlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDggKyAnMDEyMzQ1NjcnLmluZGV4T2Yoc291cmNlW2luZGV4KytdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzIGRpZ2l0cyBhcmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0YXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIDAsIDEsIDIsIDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcwMTIzJy5pbmRleE9mKGNoKSA+PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBsZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAgJ1xccicgJiYgc291cmNlW2luZGV4XSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChxdW90ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbi5TdHJpbmdMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHN0cixcbiAgICAgICAgICAgIG9jdGFsOiBvY3RhbCxcbiAgICAgICAgICAgIHN0YXJ0TGluZU51bWJlcjogc3RhcnRMaW5lTnVtYmVyLFxuICAgICAgICAgICAgc3RhcnRMaW5lU3RhcnQ6IHN0YXJ0TGluZVN0YXJ0LFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRlc3RSZWdFeHAocGF0dGVybiwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZFJlZ0V4cCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBCb2R5KCkge1xuICAgICAgICB2YXIgY2gsIHN0ciwgY2xhc3NNYXJrZXIsIHRlcm1pbmF0ZWQsIGJvZHk7XG5cbiAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICBhc3NlcnQoY2ggPT09ICcvJywgJ1JlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoJyk7XG4gICAgICAgIHN0ciA9IHNvdXJjZVtpbmRleCsrXTtcblxuICAgICAgICBjbGFzc01hcmtlciA9IGZhbHNlO1xuICAgICAgICB0ZXJtaW5hdGVkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIC8vIEVDTUEtMjYyIDcuOC41XG4gICAgICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xhc3NNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc01hcmtlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdbJykge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc01hcmtlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXhjbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaC5cbiAgICAgICAgYm9keSA9IHN0ci5zdWJzdHIoMSwgc3RyLmxlbmd0aCAtIDIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IGJvZHksXG4gICAgICAgICAgICBsaXRlcmFsOiBzdHJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmVnRXhwRmxhZ3MoKSB7XG4gICAgICAgIHZhciBjaCwgc3RyLCBmbGFncywgcmVzdG9yZTtcblxuICAgICAgICBzdHIgPSAnJztcbiAgICAgICAgZmxhZ3MgPSAnJztcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3UnKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY2ggPSBzY2FuSGV4RXNjYXBlKCd1Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHN0ciArPSAnXFxcXHUnOyByZXN0b3JlIDwgaW5kZXg7ICsrcmVzdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzb3VyY2VbcmVzdG9yZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSAndSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFx1JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZsYWdzICs9IGNoO1xuICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogZmxhZ3MsXG4gICAgICAgICAgICBsaXRlcmFsOiBzdHJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmVnRXhwKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGJvZHksIGZsYWdzLCBwYXR0ZXJuLCB2YWx1ZTtcblxuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBzdGFydCA9IGluZGV4O1xuXG4gICAgICAgIGJvZHkgPSBzY2FuUmVnRXhwQm9keSgpO1xuICAgICAgICBmbGFncyA9IHNjYW5SZWdFeHBGbGFncygpO1xuICAgICAgICB2YWx1ZSA9IHRlc3RSZWdFeHAoYm9keS52YWx1ZSwgZmxhZ3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5SZWd1bGFyRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaXRlcmFsOiBib2R5LmxpdGVyYWwgKyBmbGFncy5saXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbGxlY3RSZWdleCgpIHtcbiAgICAgICAgdmFyIHBvcywgbG9jLCByZWdleCwgdG9rZW47XG5cbiAgICAgICAgc2tpcENvbW1lbnQoKTtcblxuICAgICAgICBwb3MgPSBpbmRleDtcbiAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZWdleCA9IHNjYW5SZWdFeHAoKTtcbiAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgIH07XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgd2hpY2ggaXMgbGlrZWx5ICcvJyBvciAnLz0nXG4gICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS50b2tlbnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnJhbmdlWzBdID09PSBwb3MgJiYgdG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJy8nIHx8IHRva2VuLnZhbHVlID09PSAnLz0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUmVndWxhckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiByZWdleC5saXRlcmFsLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbcG9zLCBpbmRleF0sXG4gICAgICAgICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWUodG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLktleXdvcmQgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLkJvb2xlYW5MaXRlcmFsIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbi5OdWxsTGl0ZXJhbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZHZhbmNlU2xhc2goKSB7XG4gICAgICAgIHZhciBwcmV2VG9rZW4sXG4gICAgICAgICAgICBjaGVja1Rva2VuO1xuICAgICAgICAvLyBVc2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc3dlZXQuanMvd2lraS9kZXNpZ25cbiAgICAgICAgcHJldlRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCFwcmV2VG9rZW4pIHtcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgYmVmb3JlIHRoYXQ6IGl0IGNhbm5vdCBiZSBhIGRpdmlzaW9uLlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7XG4gICAgICAgICAgICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmV2VG9rZW4udmFsdWUgPT09ICcpJykge1xuICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlblBhcmVuVG9rZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tUb2tlbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi50eXBlID09PSAnS2V5d29yZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja1Rva2VuLnZhbHVlID09PSAnaWYnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3doaWxlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09ICdmb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3dpdGgnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJ30nKSB7XG4gICAgICAgICAgICAgICAgLy8gRGl2aWRpbmcgYSBmdW5jdGlvbiBieSBhbnl0aGluZyBtYWtlcyBsaXR0bGUgc2Vuc2UsXG4gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoYXQuXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDNdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSAzXS50eXBlID09PSAnS2V5d29yZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQW5vbnltb3VzIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XS50eXBlID09PSAnS2V5d29yZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA1XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY2hlY2tUb2tlbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzXG4gICAgICAgICAgICAgICAgLy8gYSBkZWNsYXJhdGlvbiBvciBhbiBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgIGlmIChGbkV4cHJUb2tlbnMuaW5kZXhPZihjaGVja1Rva2VuLnZhbHVlKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGFuIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIGRlY2xhcmF0aW9uLlxuICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJldlRva2VuLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkdmFuY2UoKSB7XG4gICAgICAgIHZhciBjaDtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuXG4gICAgICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uRU9GLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IGluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbklkZW50aWZpZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZlcnkgY29tbW9uOiAoIGFuZCApIGFuZCA7XG4gICAgICAgIGlmIChjaCA9PT0gMHgyOCB8fCBjaCA9PT0gMHgyOSB8fCBjaCA9PT0gMHgzQikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdHJpbmcgbGl0ZXJhbCBzdGFydHMgd2l0aCBzaW5nbGUgcXVvdGUgKFUrMDAyNykgb3IgZG91YmxlIHF1b3RlIChVKzAwMjIpLlxuICAgICAgICBpZiAoY2ggPT09IDB4MjcgfHwgY2ggPT09IDB4MjIpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FuU3RyaW5nTGl0ZXJhbCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyBEb3QgKC4pIFUrMDAyRSBjYW4gYWxzbyBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciwgaGVuY2UgdGhlIG5lZWRcbiAgICAgICAgLy8gdG8gY2hlY2sgdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoY2ggPT09IDB4MkUpIHtcbiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuTnVtZXJpY0xpdGVyYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2xhc2ggKC8pIFUrMDAyRiBjYW4gYWxzbyBzdGFydCBhIHJlZ2V4LlxuICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUgJiYgY2ggPT09IDB4MkYpIHtcbiAgICAgICAgICAgIHJldHVybiBhZHZhbmNlU2xhc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbGxlY3RUb2tlbigpIHtcbiAgICAgICAgdmFyIGxvYywgdG9rZW4sIHJhbmdlLCB2YWx1ZTtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBsb2MgPSB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRva2VuID0gYWR2YW5jZSgpO1xuICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKTtcbiAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbk5hbWVbdG9rZW4udHlwZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbdG9rZW4uc3RhcnQsIHRva2VuLmVuZF0sXG4gICAgICAgICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBpbmRleCA9IHRva2VuLmVuZDtcbiAgICAgICAgbGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7XG4gICAgICAgIGxpbmVTdGFydCA9IHRva2VuLmxpbmVTdGFydDtcblxuICAgICAgICBsb29rYWhlYWQgPSAodHlwZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpID8gY29sbGVjdFRva2VuKCkgOiBhZHZhbmNlKCk7XG5cbiAgICAgICAgaW5kZXggPSB0b2tlbi5lbmQ7XG4gICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7XG5cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBlZWsoKSB7XG4gICAgICAgIHZhciBwb3MsIGxpbmUsIHN0YXJ0O1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsaW5lID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2UoKTtcbiAgICAgICAgaW5kZXggPSBwb3M7XG4gICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBQb3NpdGlvbihsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgbGluZSwgY29sdW1uKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgUG9zaXRpb24oc3RhcnRMaW5lLCBzdGFydENvbHVtbik7XG4gICAgICAgIHRoaXMuZW5kID0gbmV3IFBvc2l0aW9uKGxpbmUsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgU3ludGF4VHJlZURlbGVnYXRlID0ge1xuXG4gICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJyxcblxuICAgICAgICBwcm9jZXNzQ29tbWVudDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQsIHRyYWlsaW5nQ29tbWVudHM7XG5cbiAgICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuYm9keS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEudHJhaWxpbmdDb21tZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBleHRyYS50cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFpbGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFYXRpbmcgdGhlIHN0YWNrLlxuICAgICAgICAgICAgd2hpbGUgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJiBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgIGxhc3RDaGlsZCA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAobGFzdENoaWxkLmxlYWRpbmdDb21tZW50cyAmJiBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzW2xhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoIC0gMV0ucmFuZ2VbMV0gPD0gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDAgJiYgZXh0cmEubGVhZGluZ0NvbW1lbnRzW2V4dHJhLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBleHRyYS5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgZXh0cmEubGVhZGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKHRyYWlsaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMgPSB0cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWFya0VuZDogZnVuY3Rpb24gKG5vZGUsIHN0YXJ0VG9rZW4pIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5yYW5nZSkge1xuICAgICAgICAgICAgICAgIG5vZGUucmFuZ2UgPSBbc3RhcnRUb2tlbi5zdGFydCwgaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgICAgIG5vZGUubG9jID0gbmV3IFNvdXJjZUxvY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0TGluZU51bWJlciA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGluZU51bWJlciA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0IC0gKHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQgPT09IHVuZGVmaW5lZCA/ICBzdGFydFRva2VuLmxpbmVTdGFydCA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQpLFxuICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0UHJvY2Vzcyhub2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NDb21tZW50KG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcG9zdFByb2Nlc3M6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmEuc291cmNlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sb2Muc291cmNlID0gZXh0cmEuc291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQXJyYXlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFycmF5RXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBlbGVtZW50czogZWxlbWVudHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFzc2lnbm1lbnRFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVCaW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IChvcGVyYXRvciA9PT0gJ3x8JyB8fCBvcGVyYXRvciA9PT0gJyYmJykgPyBTeW50YXguTG9naWNhbEV4cHJlc3Npb24gOlxuICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4LkJpbmFyeUV4cHJlc3Npb247XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiAoYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQmxvY2tTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVCcmVha1N0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5CcmVha1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNhbGxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNhbGxlZTogY2FsbGVlLFxuICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNhdGNoQ2xhdXNlOiBmdW5jdGlvbiAocGFyYW0sIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNhdGNoQ2xhdXNlLFxuICAgICAgICAgICAgICAgIHBhcmFtOiBwYXJhbSxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbjogZnVuY3Rpb24gKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudCxcbiAgICAgICAgICAgICAgICBhbHRlcm5hdGU6IGFsdGVybmF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVDb250aW51ZVN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db250aW51ZVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRGVidWdnZXJTdGF0ZW1lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkRlYnVnZ2VyU3RhdGVtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChib2R5LCB0ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Eb1doaWxlU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVFbXB0eVN0YXRlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRW1wdHlTdGF0ZW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudDogZnVuY3Rpb24gKGV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVGb3JTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZvclN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBpbml0OiBpbml0LFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGUsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVGb3JJblN0YXRlbWVudDogZnVuY3Rpb24gKGxlZnQsIHJpZ2h0LCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Gb3JJblN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgIGVhY2g6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uIChpZCwgcGFyYW1zLCBkZWZhdWx0cywgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgcmVzdDogbnVsbCxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5jdGlvbkV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgIHJlc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVJZGVudGlmaWVyOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUlmU3RhdGVtZW50OiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZlN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQsXG4gICAgICAgICAgICAgICAgYWx0ZXJuYXRlOiBhbHRlcm5hdGVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5MYWJlbGVkU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUxpdGVyYWw6IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguTGl0ZXJhbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICAgICAgICAgICAgcmF3OiBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQsIHRva2VuLmVuZClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTWVtYmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFjY2Vzc29yLCBvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5NZW1iZXJFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBhY2Nlc3NvciA9PT0gJ1snLFxuICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0LFxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVOZXdFeHByZXNzaW9uOiBmdW5jdGlvbiAoY2FsbGVlLCBhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5OZXdFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNhbGxlZTogY2FsbGVlLFxuICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb246IGZ1bmN0aW9uIChwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5PYmplY3RFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUG9zdGZpeEV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudCxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByb2dyYW06IGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Qcm9ncmFtLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUHJvcGVydHk6IGZ1bmN0aW9uIChraW5kLCBrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAga2luZDoga2luZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguUmV0dXJuU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByZXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU2VxdWVuY2VFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiBleHByZXNzaW9uc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTd2l0Y2hDYXNlOiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoQ2FzZSxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlU3dpdGNoU3RhdGVtZW50OiBmdW5jdGlvbiAoZGlzY3JpbWluYW50LCBjYXNlcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmFudDogZGlzY3JpbWluYW50LFxuICAgICAgICAgICAgICAgIGNhc2VzOiBjYXNlc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVUaGlzRXhwcmVzc2lvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGhpc0V4cHJlc3Npb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVGhyb3dTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGhyb3dTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVRyeVN0YXRlbWVudDogZnVuY3Rpb24gKGJsb2NrLCBndWFyZGVkSGFuZGxlcnMsIGhhbmRsZXJzLCBmaW5hbGl6ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRyeVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBibG9jazogYmxvY2ssXG4gICAgICAgICAgICAgICAgZ3VhcmRlZEhhbmRsZXJzOiBndWFyZGVkSGFuZGxlcnMsXG4gICAgICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplcjogZmluYWxpemVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVVuYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBhcmd1bWVudCkge1xuICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnKysnIHx8IG9wZXJhdG9yID09PSAnLS0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVW5hcnlFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsXG4gICAgICAgICAgICAgICAgcHJlZml4OiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb246IGZ1bmN0aW9uIChkZWNsYXJhdGlvbnMsIGtpbmQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgICAgZGVjbGFyYXRpb25zOiBkZWNsYXJhdGlvbnMsXG4gICAgICAgICAgICAgICAga2luZDoga2luZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVWYXJpYWJsZURlY2xhcmF0b3I6IGZ1bmN0aW9uIChpZCwgaW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVmFyaWFibGVEZWNsYXJhdG9yLFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBpbml0OiBpbml0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVdoaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAodGVzdCwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguV2hpbGVTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVdpdGhTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChvYmplY3QsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LldpdGhTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGxpbmUgdGVybWluYXRvciBiZWZvcmUgdGhlIG5leHQgdG9rZW4uXG5cbiAgICBmdW5jdGlvbiBwZWVrTGluZVRlcm1pbmF0b3IoKSB7XG4gICAgICAgIHZhciBwb3MsIGxpbmUsIHN0YXJ0LCBmb3VuZDtcblxuICAgICAgICBwb3MgPSBpbmRleDtcbiAgICAgICAgbGluZSA9IGxpbmVOdW1iZXI7XG4gICAgICAgIHN0YXJ0ID0gbGluZVN0YXJ0O1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBmb3VuZCA9IGxpbmVOdW1iZXIgIT09IGxpbmU7XG4gICAgICAgIGluZGV4ID0gcG9zO1xuICAgICAgICBsaW5lTnVtYmVyID0gbGluZTtcbiAgICAgICAgbGluZVN0YXJ0ID0gc3RhcnQ7XG5cbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cblxuICAgIC8vIFRocm93IGFuIGV4Y2VwdGlvblxuXG4gICAgZnVuY3Rpb24gdGhyb3dFcnJvcih0b2tlbiwgbWVzc2FnZUZvcm1hdCkge1xuICAgICAgICB2YXIgZXJyb3IsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSxcbiAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2VGb3JtYXQucmVwbGFjZShcbiAgICAgICAgICAgICAgICAvJShcXGQpL2csXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdob2xlLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBhc3NlcnQoaW5kZXggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUgaW4gcmFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbi5saW5lTnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIHRva2VuLmxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTtcbiAgICAgICAgICAgIGVycm9yLmluZGV4ID0gdG9rZW4uc3RhcnQ7XG4gICAgICAgICAgICBlcnJvci5saW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJlcjtcbiAgICAgICAgICAgIGVycm9yLmNvbHVtbiA9IHRva2VuLnN0YXJ0IC0gbGluZVN0YXJ0ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKCdMaW5lICcgKyBsaW5lTnVtYmVyICsgJzogJyArIG1zZyk7XG4gICAgICAgICAgICBlcnJvci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgZXJyb3IubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gICAgICAgICAgICBlcnJvci5jb2x1bW4gPSBpbmRleCAtIGxpbmVTdGFydCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvci5kZXNjcmlwdGlvbiA9IG1zZztcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGhyb3dFcnJvclRvbGVyYW50KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhyb3dFcnJvci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuZXJyb3JzLnB1c2goZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIHRoZSB0b2tlbi5cblxuICAgIGZ1bmN0aW9uIHRocm93VW5leHBlY3RlZCh0b2tlbikge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkRU9TKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5OdW1lcmljTGl0ZXJhbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZElkZW50aWZpZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIGlmIChpc0Z1dHVyZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkUmVzZXJ2ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJvb2xlYW5MaXRlcmFsLCBOdWxsTGl0ZXJhbCwgb3IgUHVuY3R1YXRvci5cbiAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci5cbiAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cblxuICAgIGZ1bmN0aW9uIGV4cGVjdCh2YWx1ZSkge1xuICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgfHwgdG9rZW4udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5d29yZC5cbiAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cblxuICAgIGZ1bmN0aW9uIGV4cGVjdEtleXdvcmQoa2V5d29yZCkge1xuICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQgfHwgdG9rZW4udmFsdWUgIT09IGtleXdvcmQpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci5cblxuICAgIGZ1bmN0aW9uIG1hdGNoKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudmFsdWUgPT09IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXl3b3JkXG5cbiAgICBmdW5jdGlvbiBtYXRjaEtleXdvcmQoa2V5d29yZCkge1xuICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQgJiYgbG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIGlzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIG1hdGNoQXNzaWduKCkge1xuICAgICAgICB2YXIgb3A7XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb3AgPSBsb29rYWhlYWQudmFsdWU7XG4gICAgICAgIHJldHVybiBvcCA9PT0gJz0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJyo9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICcvPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnJT0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJys9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICctPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnPDw9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICc+Pj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJz4+Pj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJyY9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICdePScgfHxcbiAgICAgICAgICAgIG9wID09PSAnfD0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnN1bWVTZW1pY29sb24oKSB7XG4gICAgICAgIHZhciBsaW5lO1xuXG4gICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWljb2xvbiAoVSswMDNCKS5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQiB8fCBtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyO1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBpZiAobGluZU51bWJlciAhPT0gbGluZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YgJiYgIW1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgcHJvdmlkZWQgZXhwcmVzc2lvbiBpcyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uXG5cbiAgICBmdW5jdGlvbiBpc0xlZnRIYW5kU2lkZShleHByKSB7XG4gICAgICAgIHJldHVybiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyIHx8IGV4cHIudHlwZSA9PT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgLy8gMTEuMS40IEFycmF5IEluaXRpYWxpc2VyXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IFtdLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdCgnWycpO1xuXG4gICAgICAgIHdoaWxlICghbWF0Y2goJ10nKSkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCddJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMS41IE9iamVjdCBJbml0aWFsaXNlclxuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHBhcmFtLCBmaXJzdCkge1xuICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QsIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKGZpcnN0ICYmIHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtWzBdLm5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3QsIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBwYXJhbSwgW10sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCkge1xuICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcblxuICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gcGFyc2VPYmplY3RQcm9wZXJ0eSgpLCB3aGVyZVxuICAgICAgICAvLyBFT0YgYW5kIFB1bmN0dWF0b3IgdG9rZW5zIGFyZSBhbHJlYWR5IGZpbHRlcmVkIG91dC5cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCB8fCB0b2tlbi50eXBlID09PSBUb2tlbi5OdW1lcmljTGl0ZXJhbCkge1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiB0b2tlbi5vY3RhbCkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5KCkge1xuICAgICAgICB2YXIgdG9rZW4sIGtleSwgaWQsIHZhbHVlLCBwYXJhbSwgc3RhcnRUb2tlbjtcblxuICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuXG4gICAgICAgICAgICBpZCA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcblxuICAgICAgICAgICAgLy8gUHJvcGVydHkgQXNzaWdubWVudDogR2V0dGVyIGFuZCBTZXR0ZXIuXG5cbiAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ2dldCcgJiYgIW1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24oW10pO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdzZXQnICYmICFtYXRjaCgnOicpKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnKCcpO1xuICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgdG9rZW4udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihbXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBbIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgXTtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHBhcmFtLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdzZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBpZCwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uRU9GIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdEluaXRpYWxpc2VyKCkge1xuICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtdLCBwcm9wZXJ0eSwgbmFtZSwga2V5LCBraW5kLCBtYXAgPSB7fSwgdG9TdHJpbmcgPSBTdHJpbmcsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICB3aGlsZSAoIW1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eSgpO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHkua2V5LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IHByb3BlcnR5LmtleS5uYW1lO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gdG9TdHJpbmcocHJvcGVydHkua2V5LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtpbmQgPSAocHJvcGVydHkua2luZCA9PT0gJ2luaXQnKSA/IFByb3BlcnR5S2luZC5EYXRhIDogKHByb3BlcnR5LmtpbmQgPT09ICdnZXQnKSA/IFByb3BlcnR5S2luZC5HZXQgOiBQcm9wZXJ0eUtpbmQuU2V0O1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBuYW1lO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtYXAsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFwW2tleV0gPT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYga2luZCA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0RHVwbGljYXRlUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgIT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5BY2Nlc3NvckRhdGFQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwW2tleV0gJiBraW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yR2V0U2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYXBba2V5XSB8PSBraW5kO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXBba2V5XSA9IGtpbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIGlmICghbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0KCd9Jyk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMS42IFRoZSBHcm91cGluZyBPcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gcGFyc2VHcm91cEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cblxuICAgIC8vIDExLjEgUHJpbWFyeSBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHR5cGUsIHRva2VuLCBleHByLCBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmIChtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VHcm91cEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJheUluaXRpYWxpc2VyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBsb29rYWhlYWQudHlwZTtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgZXhwciA9ICBkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKGxleCgpLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGxvb2thaGVhZC5vY3RhbCkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChsb29rYWhlYWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChsZXgoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndGhpcycpKSB7XG4gICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVRoaXNFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwpIHtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICB0b2tlbi52YWx1ZSA9ICh0b2tlbi52YWx1ZSA9PT0gJ3RydWUnKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5OdWxsTGl0ZXJhbCkge1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnLycpIHx8IG1hdGNoKCcvPScpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChjb2xsZWN0UmVnZXgoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHNjYW5SZWdFeHAoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWVrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMiBMZWZ0LUhhbmQtU2lkZSBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2goJyknKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIGlmICghaXNJZGVudGlmaWVyTmFtZSh0b2tlbikpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpIHtcbiAgICAgICAgZXhwZWN0KCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSB7XG4gICAgICAgIHZhciBleHByO1xuXG4gICAgICAgIGV4cGVjdCgnWycpO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJ10nKTtcblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBjYWxsZWUsIGFyZ3MsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnbmV3Jyk7XG4gICAgICAgIGNhbGxlZSA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpO1xuICAgICAgICBhcmdzID0gbWF0Y2goJygnKSA/IHBhcnNlQXJndW1lbnRzKCkgOiBbXTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVOZXdFeHByZXNzaW9uKGNhbGxlZSwgYXJncyksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgYXJncywgcHJvcGVydHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTtcbiAgICAgICAgZXhwciA9IG1hdGNoS2V5d29yZCgnbmV3JykgPyBwYXJzZU5ld0V4cHJlc3Npb24oKSA6IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcblxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJy4nKSkge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICAgICAgYXJncyA9IHBhcnNlQXJndW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGV4cHIsIGFyZ3MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgcHJvcGVydHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luO1xuXG4gICAgICAgIHdoaWxlIChtYXRjaCgnLicpIHx8IG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjMgUG9zdGZpeCBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHIsIHRva2VuLCBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwoKTtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIGlmICgobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpICYmICFwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgICAgIC8vIDExLjMuMSwgMTEuMy4yXG4gICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdExIU1Bvc3RmaXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghaXNMZWZ0SGFuZFNpZGUoZXhwcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBvc3RmaXhFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICAvLyAxMS40IFVuYXJ5IE9wZXJhdG9yc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VVbmFyeUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgZXhwciwgc3RhcnRUb2tlbjtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnR5cGUgIT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpIHtcbiAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAvLyAxMS40LjQsIDExLjQuNVxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUHJlZml4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJysnKSB8fCBtYXRjaCgnLScpIHx8IG1hdGNoKCd+JykgfHwgbWF0Y2goJyEnKSkge1xuICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8fCBtYXRjaEtleXdvcmQoJ3ZvaWQnKSB8fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7XG4gICAgICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci5vcGVyYXRvciA9PT0gJ2RlbGV0ZScgJiYgZXhwci5hcmd1bWVudC50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0RGVsZXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBhbGxvd0luKSB7XG4gICAgICAgIHZhciBwcmVjID0gMDtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciAmJiB0b2tlbi50eXBlICE9PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnfHwnOlxuICAgICAgICAgICAgcHJlYyA9IDE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcmJic6XG4gICAgICAgICAgICBwcmVjID0gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgcHJlYyA9IDM7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdeJzpcbiAgICAgICAgICAgIHByZWMgPSA0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnJic6XG4gICAgICAgICAgICBwcmVjID0gNTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJz09JzpcbiAgICAgICAgY2FzZSAnIT0nOlxuICAgICAgICBjYXNlICc9PT0nOlxuICAgICAgICBjYXNlICchPT0nOlxuICAgICAgICAgICAgcHJlYyA9IDY7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FzZSAnPic6XG4gICAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgY2FzZSAnPj0nOlxuICAgICAgICBjYXNlICdpbnN0YW5jZW9mJzpcbiAgICAgICAgICAgIHByZWMgPSA3O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnaW4nOlxuICAgICAgICAgICAgcHJlYyA9IGFsbG93SW4gPyA3IDogMDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJzw8JzpcbiAgICAgICAgY2FzZSAnPj4nOlxuICAgICAgICBjYXNlICc+Pj4nOlxuICAgICAgICAgICAgcHJlYyA9IDg7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICBwcmVjID0gOTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICBjYXNlICcvJzpcbiAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICBwcmVjID0gMTE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJlYztcbiAgICB9XG5cbiAgICAvLyAxMS41IE11bHRpcGxpY2F0aXZlIE9wZXJhdG9yc1xuICAgIC8vIDExLjYgQWRkaXRpdmUgT3BlcmF0b3JzXG4gICAgLy8gMTEuNyBCaXR3aXNlIFNoaWZ0IE9wZXJhdG9yc1xuICAgIC8vIDExLjggUmVsYXRpb25hbCBPcGVyYXRvcnNcbiAgICAvLyAxMS45IEVxdWFsaXR5IE9wZXJhdG9yc1xuICAgIC8vIDExLjEwIEJpbmFyeSBCaXR3aXNlIE9wZXJhdG9yc1xuICAgIC8vIDExLjExIEJpbmFyeSBMb2dpY2FsIE9wZXJhdG9yc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgbWFya2VyLCBtYXJrZXJzLCBleHByLCB0b2tlbiwgcHJlYywgc3RhY2ssIHJpZ2h0LCBvcGVyYXRvciwgbGVmdCwgaTtcblxuICAgICAgICBtYXJrZXIgPSBsb29rYWhlYWQ7XG4gICAgICAgIGxlZnQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBwcmVjID0gYmluYXJ5UHJlY2VkZW5jZSh0b2tlbiwgc3RhdGUuYWxsb3dJbik7XG4gICAgICAgIGlmIChwcmVjID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdDtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbi5wcmVjID0gcHJlYztcbiAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgbWFya2VycyA9IFttYXJrZXIsIGxvb2thaGVhZF07XG4gICAgICAgIHJpZ2h0ID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcblxuICAgICAgICBzdGFjayA9IFtsZWZ0LCB0b2tlbiwgcmlnaHRdO1xuXG4gICAgICAgIHdoaWxlICgocHJlYyA9IGJpbmFyeVByZWNlZGVuY2UobG9va2FoZWFkLCBzdGF0ZS5hbGxvd0luKSkgPiAwKSB7XG5cbiAgICAgICAgICAgIC8vIFJlZHVjZTogbWFrZSBhIGJpbmFyeSBleHByZXNzaW9uIGZyb20gdGhlIHRocmVlIHRvcG1vc3QgZW50cmllcy5cbiAgICAgICAgICAgIHdoaWxlICgoc3RhY2subGVuZ3RoID4gMikgJiYgKHByZWMgPD0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMl0ucHJlYykpIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gc3RhY2sucG9wKCkudmFsdWU7XG4gICAgICAgICAgICAgICAgbGVmdCA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICAgICAgbWFya2Vycy5wb3AoKTtcbiAgICAgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJzW21hcmtlcnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBtYXJrZXIpO1xuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goZXhwcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNoaWZ0LlxuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnByZWMgPSBwcmVjO1xuICAgICAgICAgICAgc3RhY2sucHVzaCh0b2tlbik7XG4gICAgICAgICAgICBtYXJrZXJzLnB1c2gobG9va2FoZWFkKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmFsIHJlZHVjZSB0byBjbGVhbi11cCB0aGUgc3RhY2suXG4gICAgICAgIGkgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBleHByID0gc3RhY2tbaV07XG4gICAgICAgIG1hcmtlcnMucG9wKCk7XG4gICAgICAgIHdoaWxlIChpID4gMSkge1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oc3RhY2tbaSAtIDFdLnZhbHVlLCBzdGFja1tpIC0gMl0sIGV4cHIpO1xuICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgbWFya2VyID0gbWFya2Vycy5wb3AoKTtcbiAgICAgICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgbWFya2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuXG4gICAgLy8gMTEuMTIgQ29uZGl0aW9uYWwgT3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgZXhwciwgcHJldmlvdXNBbGxvd0luLCBjb25zZXF1ZW50LCBhbHRlcm5hdGUsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHByID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCc/JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcHJldmlvdXNBbGxvd0luID0gc3RhdGUuYWxsb3dJbjtcbiAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuICAgICAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcblxuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihleHByLCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpO1xuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjEzIEFzc2lnbm1lbnQgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgdG9rZW4sIGxlZnQsIHJpZ2h0LCBub2RlLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIG5vZGUgPSBsZWZ0ID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2hBc3NpZ24oKSkge1xuICAgICAgICAgICAgLy8gTGVmdEhhbmRTaWRlRXhwcmVzc2lvblxuICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShsZWZ0KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIDExLjEzLjFcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbGVmdC50eXBlID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGxlZnQubmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdExIU0Fzc2lnbm1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBub2RlID0gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgbGVmdCwgcmlnaHQpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIC8vIDExLjE0IENvbW1hIE9wZXJhdG9yXG5cbiAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByLCBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24oWyBleHByIF0pO1xuXG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgIGV4cHIuZXhwcmVzc2lvbnMucHVzaChwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTIuMSBCbG9ja1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRMaXN0KCkge1xuICAgICAgICB2YXIgbGlzdCA9IFtdLFxuICAgICAgICAgICAgc3RhdGVtZW50O1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaXN0LnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKSB7XG4gICAgICAgIHZhciBibG9jaywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICBibG9jayA9IHBhcnNlU3RhdGVtZW50TGlzdCgpO1xuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUJsb2NrU3RhdGVtZW50KGJsb2NrKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTIuMiBWYXJpYWJsZSBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oa2luZCkge1xuICAgICAgICB2YXIgaW5pdCA9IG51bGwsIGlkLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICAvLyAxMi4yLjFcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGlkLm5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdFZhck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtpbmQgPT09ICdjb25zdCcpIHtcbiAgICAgICAgICAgIGV4cGVjdCgnPScpO1xuICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnPScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQpIHtcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBsaXN0LnB1c2gocGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gbGlzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgZGVjbGFyYXRpb25zO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3ZhcicpO1xuXG4gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCAndmFyJyk7XG4gICAgfVxuXG4gICAgLy8ga2luZCBtYXkgYmUgYGNvbnN0YCBvciBgbGV0YFxuICAgIC8vIEJvdGggYXJlIGV4cGVyaW1lbnRhbCBhbmQgbm90IGluIHRoZSBzcGVjaWZpY2F0aW9uIHlldC5cbiAgICAvLyBzZWUgaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTpjb25zdFxuICAgIC8vIGFuZCBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmxldFxuICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbihraW5kKSB7XG4gICAgICAgIHZhciBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKGtpbmQpO1xuXG4gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qoa2luZCk7XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTIuMyBFbXB0eSBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSB7XG4gICAgICAgIGV4cGVjdCgnOycpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRW1wdHlTdGF0ZW1lbnQoKTtcbiAgICB9XG5cbiAgICAvLyAxMi40IEV4cHJlc3Npb24gU3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcik7XG4gICAgfVxuXG4gICAgLy8gMTIuNSBJZiBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGU7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnaWYnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZWxzZScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbHRlcm5hdGUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUlmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7XG4gICAgfVxuXG4gICAgLy8gMTIuNiBJdGVyYXRpb24gU3RhdGVtZW50c1xuXG4gICAgZnVuY3Rpb24gcGFyc2VEb1doaWxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgYm9keSwgdGVzdCwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZG8nKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBpZiAobWF0Y2goJzsnKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChib2R5LCB0ZXN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVdoaWxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgdGVzdCwgYm9keSwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnd2hpbGUnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjtcbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuXG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVdoaWxlU3RhdGVtZW50KHRlc3QsIGJvZHkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRm9yVmFyaWFibGVEZWNsYXJhdGlvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCB0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRm9yU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgaW5pdCwgdGVzdCwgdXBkYXRlLCBsZWZ0LCByaWdodCwgYm9keSwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgaW5pdCA9IHRlc3QgPSB1cGRhdGUgPSBudWxsO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2ZvcicpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGlmIChtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ3ZhcicpIHx8IG1hdGNoS2V5d29yZCgnbGV0JykpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaW5pdCA9IHBhcnNlRm9yVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGluaXQuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBtYXRjaEtleXdvcmQoJ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0O1xuICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpbml0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdpbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExlZnRIYW5kU2lkZUV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShpbml0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JJbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnOycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuXG4gICAgICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHBlY3QoJzsnKTtcblxuICAgICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICByZXR1cm4gKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykgP1xuICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNyZWF0ZUZvclN0YXRlbWVudChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpIDpcbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5jcmVhdGVGb3JJblN0YXRlbWVudChsZWZ0LCByaWdodCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gMTIuNyBUaGUgY29udGludWUgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBrZXk7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnY29udGludWUnKTtcblxuICAgICAgICAvLyBPcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gZm9ybTogJ2NvbnRpbnVlOycuXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0IpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBpZiAoIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICBpZiAoIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsYWJlbCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgaWYgKGxhYmVsID09PSBudWxsICYmICFzdGF0ZS5pbkl0ZXJhdGlvbikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gMTIuOCBUaGUgYnJlYWsgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUJyZWFrU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBrZXk7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnYnJlYWsnKTtcblxuICAgICAgICAvLyBDYXRjaCB0aGUgdmVyeSBjb21tb24gY2FzZSBmaXJzdDogaW1tZWRpYXRlbHkgYSBzZW1pY29sb24gKFUrMDAzQikuXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0IpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBpZiAoIShzdGF0ZS5pbkl0ZXJhdGlvbiB8fCBzdGF0ZS5pblN3aXRjaCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIGlmICghKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgbGFiZWwgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBsYWJlbC5uYW1lO1xuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdGUubGFiZWxTZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Vbmtub3duTGFiZWwsIGxhYmVsLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIGlmIChsYWJlbCA9PT0gbnVsbCAmJiAhKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChsYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gMTIuOSBUaGUgcmV0dXJuIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBhcmd1bWVudCA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgncmV0dXJuJyk7XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5pbkZ1bmN0aW9uQm9keSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbGxlZ2FsUmV0dXJuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdyZXR1cm4nIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYW5kIGFuIGlkZW50aWZpZXIgaXMgdmVyeSBjb21tb24uXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4MjApIHtcbiAgICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBpZiAoIW1hdGNoKCd9JykgJiYgbG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVudCk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTAgVGhlIHdpdGggc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZVdpdGhTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBvYmplY3QsIGJvZHk7XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgLy8gVE9ETyhpa2FyaWVuYXRvcik6IFNob3VsZCB3ZSB1cGRhdGUgdGhlIHRlc3QgY2FzZXMgaW5zdGVhZD9cbiAgICAgICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdE1vZGVXaXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3dpdGgnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBvYmplY3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkpO1xuICAgIH1cblxuICAgIC8vIDEyLjEwIFRoZSBzd2l0aCBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpIHtcbiAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQgPSBbXSwgc3RhdGVtZW50LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICB0ZXN0ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2Nhc2UnKTtcbiAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuICAgICAgICBleHBlY3QoJzonKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnfScpIHx8IG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpIHx8IG1hdGNoS2V5d29yZCgnY2FzZScpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgY29uc2VxdWVudC5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hDYXNlKHRlc3QsIGNvbnNlcXVlbnQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGRpc2NyaW1pbmFudCwgY2FzZXMsIGNsYXVzZSwgb2xkSW5Td2l0Y2gsIGRlZmF1bHRGb3VuZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBkaXNjcmltaW5hbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICBjYXNlcyA9IFtdO1xuXG4gICAgICAgIGlmIChtYXRjaCgnfScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRJblN3aXRjaCA9IHN0YXRlLmluU3dpdGNoO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IHRydWU7XG4gICAgICAgIGRlZmF1bHRGb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsYXVzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKGNsYXVzZS50ZXN0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5NdWx0aXBsZURlZmF1bHRzSW5Td2l0Y2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZXMucHVzaChjbGF1c2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuaW5Td2l0Y2ggPSBvbGRJblN3aXRjaDtcblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlU3dpdGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpO1xuICAgIH1cblxuICAgIC8vIDEyLjEzIFRoZSB0aHJvdyBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlVGhyb3dTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBhcmd1bWVudDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd0aHJvdycpO1xuXG4gICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTmV3bGluZUFmdGVyVGhyb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVRocm93U3RhdGVtZW50KGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICAvLyAxMi4xNCBUaGUgdHJ5IHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VDYXRjaENsYXVzZSgpIHtcbiAgICAgICAgdmFyIHBhcmFtLCBib2R5LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2NhdGNoJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcbiAgICAgICAgLy8gMTIuMTQuMVxuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQocGFyYW0ubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0Q2F0Y2hWYXJpYWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgYm9keSA9IHBhcnNlQmxvY2soKTtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQ2F0Y2hDbGF1c2UocGFyYW0sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVRyeVN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGJsb2NrLCBoYW5kbGVycyA9IFtdLCBmaW5hbGl6ZXIgPSBudWxsO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3RyeScpO1xuXG4gICAgICAgIGJsb2NrID0gcGFyc2VCbG9jaygpO1xuXG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2NhdGNoJykpIHtcbiAgICAgICAgICAgIGhhbmRsZXJzLnB1c2gocGFyc2VDYXRjaENsYXVzZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2ZpbmFsbHknKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICBmaW5hbGl6ZXIgPSBwYXJzZUJsb2NrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFuZGxlcnMubGVuZ3RoID09PSAwICYmICFmaW5hbGl6ZXIpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk5vQ2F0Y2hPckZpbmFsbHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVRyeVN0YXRlbWVudChibG9jaywgW10sIGhhbmRsZXJzLCBmaW5hbGl6ZXIpO1xuICAgIH1cblxuICAgIC8vIDEyLjE1IFRoZSBkZWJ1Z2dlciBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSB7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2RlYnVnZ2VyJyk7XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVEZWJ1Z2dlclN0YXRlbWVudCgpO1xuICAgIH1cblxuICAgIC8vIDEyIFN0YXRlbWVudHNcblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgdHlwZSA9IGxvb2thaGVhZC50eXBlLFxuICAgICAgICAgICAgZXhwcixcbiAgICAgICAgICAgIGxhYmVsZWRCb2R5LFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgc3RhcnRUb2tlbjtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC52YWx1ZSA9PT0gJ3snKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzsnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICcoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdicmVhayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VCcmVha1N0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRpbnVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUNvbnRpbnVlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZGVidWdnZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdkbyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VEb1doaWxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZm9yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZvclN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdpZic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VJZlN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3JldHVybic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdzd2l0Y2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlU3dpdGNoU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAndGhyb3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVGhyb3dTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd0cnknOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVHJ5U3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAndmFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnd2hpbGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd3aXRoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVdpdGhTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIC8vIDEyLjEyIExhYmVsbGVkIFN0YXRlbWVudHNcbiAgICAgICAgaWYgKChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSAmJiBtYXRjaCgnOicpKSB7XG4gICAgICAgICAgICBsZXgoKTtcblxuICAgICAgICAgICAga2V5ID0gJyQnICsgZXhwci5uYW1lO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlJlZGVjbGFyYXRpb24sICdMYWJlbCcsIGV4cHIubmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXRlLmxhYmVsU2V0W2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgbGFiZWxlZEJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmxhYmVsU2V0W2tleV07XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVMYWJlbGVkU3RhdGVtZW50KGV4cHIsIGxhYmVsZWRCb2R5KSwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTMgRnVuY3Rpb24gRGVmaW5pdGlvblxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCkge1xuICAgICAgICB2YXIgc291cmNlRWxlbWVudCwgc291cmNlRWxlbWVudHMgPSBbXSwgdG9rZW4sIGRpcmVjdGl2ZSwgZmlyc3RSZXN0cmljdGVkLFxuICAgICAgICAgICAgb2xkTGFiZWxTZXQsIG9sZEluSXRlcmF0aW9uLCBvbGRJblN3aXRjaCwgb2xkSW5GdW5jdGlvbkJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0KCd7Jyk7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50cy5wdXNoKHNvdXJjZUVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQuZXhwcmVzc2lvbi50eXBlICE9PSBTeW50YXguTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IGRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlyZWN0aXZlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0ICsgMSwgdG9rZW4uZW5kIC0gMSk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlID09PSAndXNlIHN0cmljdCcpIHtcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGZpcnN0UmVzdHJpY3RlZCwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZmlyc3RSZXN0cmljdGVkICYmIHRva2VuLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9sZExhYmVsU2V0ID0gc3RhdGUubGFiZWxTZXQ7XG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7XG4gICAgICAgIG9sZEluRnVuY3Rpb25Cb2R5ID0gc3RhdGUuaW5GdW5jdGlvbkJvZHk7XG5cbiAgICAgICAgc3RhdGUubGFiZWxTZXQgPSB7fTtcbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBmYWxzZTtcbiAgICAgICAgc3RhdGUuaW5Td2l0Y2ggPSBmYWxzZTtcbiAgICAgICAgc3RhdGUuaW5GdW5jdGlvbkJvZHkgPSB0cnVlO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICBzdGF0ZS5sYWJlbFNldCA9IG9sZExhYmVsU2V0O1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoO1xuICAgICAgICBzdGF0ZS5pbkZ1bmN0aW9uQm9keSA9IG9sZEluRnVuY3Rpb25Cb2R5O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUJsb2NrU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgIHZhciBwYXJhbSwgcGFyYW1zID0gW10sIHRva2VuLCBzdHJpY3RlZCwgcGFyYW1TZXQsIGtleSwgbWVzc2FnZTtcbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICBwYXJhbVNldCA9IHt9O1xuICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgICAgIGtleSA9ICckJyArIHRva2VuLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pO1xuICAgICAgICAgICAgICAgIHBhcmFtU2V0W2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgIHN0cmljdGVkOiBzdHJpY3RlZCxcbiAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZDogZmlyc3RSZXN0cmljdGVkLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpIHtcbiAgICAgICAgdmFyIGlkLCBwYXJhbXMgPSBbXSwgYm9keSwgdG9rZW4sIHN0cmljdGVkLCB0bXAsIGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSwgcHJldmlvdXNTdHJpY3QsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpO1xuICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRtcCA9IHBhcnNlUGFyYW1zKGZpcnN0UmVzdHJpY3RlZCk7XG4gICAgICAgIHBhcmFtcyA9IHRtcC5wYXJhbXM7XG4gICAgICAgIHN0cmljdGVkID0gdG1wLnN0cmljdGVkO1xuICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0bXAuZmlyc3RSZXN0cmljdGVkO1xuICAgICAgICBpZiAodG1wLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB0bXAubWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0O1xuICAgICAgICBib2R5ID0gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCk7XG4gICAgICAgIGlmIChzdHJpY3QgJiYgZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmljdCAmJiBzdHJpY3RlZCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgaWQgPSBudWxsLCBzdHJpY3RlZCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCB0bXAsIHBhcmFtcyA9IFtdLCBib2R5LCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpO1xuXG4gICAgICAgIGlmICghbWF0Y2goJygnKSkge1xuICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTtcbiAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtcztcbiAgICAgICAgc3RyaWN0ZWQgPSB0bXAuc3RyaWN0ZWQ7XG4gICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7XG4gICAgICAgIGlmICh0bXAubWVzc2FnZSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5tZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaWN0ICYmIHN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihpZCwgcGFyYW1zLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIC8vIDE0IFByb2dyYW1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnY29uc3QnOlxuICAgICAgICAgICAgY2FzZSAnbGV0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGxvb2thaGVhZC52YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudHMoKSB7XG4gICAgICAgIHZhciBzb3VyY2VFbGVtZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwgZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0ZWQ7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5TdHJpbmdMaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQgLSAxKTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykge1xuICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3RSZXN0cmljdGVkLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdFJlc3RyaWN0ZWQgJiYgdG9rZW4ub2N0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlUHJvZ3JhbSgpIHtcbiAgICAgICAgdmFyIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc2tpcENvbW1lbnQoKTtcbiAgICAgICAgcGVlaygpO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTb3VyY2VFbGVtZW50cygpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9ncmFtKGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJUb2tlbkxvY2F0aW9uKCkge1xuICAgICAgICB2YXIgaSwgZW50cnksIHRva2VuLCB0b2tlbnMgPSBbXTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEudG9rZW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBlbnRyeSA9IGV4dHJhLnRva2Vuc1tpXTtcbiAgICAgICAgICAgIHRva2VuID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IGVudHJ5LnR5cGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVudHJ5LnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucmFuZ2UgPSBlbnRyeS5yYW5nZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRyYS5sb2MpIHtcbiAgICAgICAgICAgICAgICB0b2tlbi5sb2MgPSBlbnRyeS5sb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBleHRyYS50b2tlbnMgPSB0b2tlbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9rZW5pemUoY29kZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgdG9TdHJpbmcsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIHRva2VucztcblxuICAgICAgICB0b1N0cmluZyA9IFN0cmluZztcbiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAhKGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb2RlID0gdG9TdHJpbmcoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRyZWVEZWxlZ2F0ZTtcbiAgICAgICAgc291cmNlID0gY29kZTtcbiAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICAgICAgICBsaW5lU3RhcnQgPSAwO1xuICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgIGFsbG93SW46IHRydWUsXG4gICAgICAgICAgICBsYWJlbFNldDoge30sXG4gICAgICAgICAgICBpbkZ1bmN0aW9uQm9keTogZmFsc2UsXG4gICAgICAgICAgICBpbkl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsXG4gICAgICAgICAgICBsYXN0Q29tbWVudFN0YXJ0OiAtMVxuICAgICAgICB9O1xuXG4gICAgICAgIGV4dHJhID0ge307XG5cbiAgICAgICAgLy8gT3B0aW9ucyBtYXRjaGluZy5cbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgLy8gT2YgY291cnNlIHdlIGNvbGxlY3QgdG9rZW5zIGhlcmUuXG4gICAgICAgIG9wdGlvbnMudG9rZW5zID0gdHJ1ZTtcbiAgICAgICAgZXh0cmEudG9rZW5zID0gW107XG4gICAgICAgIGV4dHJhLnRva2VuaXplID0gdHJ1ZTtcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gZmllbGRzIGFyZSBuZWNlc3NhcnkgdG8gY29tcHV0ZSB0aGUgUmVnZXggdG9rZW5zLlxuICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IC0xO1xuICAgICAgICBleHRyYS5vcGVuQ3VybHlUb2tlbiA9IC0xO1xuXG4gICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7XG4gICAgICAgIGV4dHJhLmxvYyA9ICh0eXBlb2Ygb3B0aW9ucy5sb2MgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5sb2M7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIGV4dHJhLmNvbW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2xlcmFudCkge1xuICAgICAgICAgICAgZXh0cmEuZXJyb3JzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGVlaygpO1xuICAgICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXh0cmEudG9rZW5zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgd2hpbGUgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGxleEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMucHVzaChsZXhFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGJyZWFrIG9uIHRoZSBmaXJzdCBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGxleEVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0aW9uKCk7XG4gICAgICAgICAgICB0b2tlbnMgPSBleHRyYS50b2tlbnM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRva2Vucy5jb21tZW50cyA9IGV4dHJhLmNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5lcnJvcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLmVycm9ycyA9IGV4dHJhLmVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGV4dHJhID0ge307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZShjb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBwcm9ncmFtLCB0b1N0cmluZztcblxuICAgICAgICB0b1N0cmluZyA9IFN0cmluZztcbiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAhKGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb2RlID0gdG9TdHJpbmcoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRyZWVEZWxlZ2F0ZTtcbiAgICAgICAgc291cmNlID0gY29kZTtcbiAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICAgICAgICBsaW5lU3RhcnQgPSAwO1xuICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgIGFsbG93SW46IHRydWUsXG4gICAgICAgICAgICBsYWJlbFNldDoge30sXG4gICAgICAgICAgICBpbkZ1bmN0aW9uQm9keTogZmFsc2UsXG4gICAgICAgICAgICBpbkl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsXG4gICAgICAgICAgICBsYXN0Q29tbWVudFN0YXJ0OiAtMVxuICAgICAgICB9O1xuXG4gICAgICAgIGV4dHJhID0ge307XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7XG4gICAgICAgICAgICBleHRyYS5sb2MgPSAodHlwZW9mIG9wdGlvbnMubG9jID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMubG9jO1xuICAgICAgICAgICAgZXh0cmEuYXR0YWNoQ29tbWVudCA9ICh0eXBlb2Ygb3B0aW9ucy5hdHRhY2hDb21tZW50ID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMuYXR0YWNoQ29tbWVudDtcblxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYyAmJiBvcHRpb25zLnNvdXJjZSAhPT0gbnVsbCAmJiBvcHRpb25zLnNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuc291cmNlID0gdG9TdHJpbmcob3B0aW9ucy5zb3VyY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9rZW5zID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2tlbnMpIHtcbiAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb21tZW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2xlcmFudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMudG9sZXJhbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7XG4gICAgICAgICAgICAgICAgZXh0cmEucmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGV4dHJhLmNvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9ncmFtID0gcGFyc2VQcm9ncmFtKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHByb2dyYW0uY29tbWVudHMgPSBleHRyYS5jb21tZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZpbHRlclRva2VuTG9jYXRpb24oKTtcbiAgICAgICAgICAgICAgICBwcm9ncmFtLnRva2VucyA9IGV4dHJhLnRva2VucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuZXJyb3JzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHByb2dyYW0uZXJyb3JzID0gZXh0cmEuZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9ncmFtO1xuICAgIH1cblxuICAgIC8vIFN5bmMgd2l0aCAqLmpzb24gbWFuaWZlc3RzLlxuICAgIGV4cG9ydHMudmVyc2lvbiA9ICcxLjIuMic7XG5cbiAgICBleHBvcnRzLnRva2VuaXplID0gdG9rZW5pemU7XG5cbiAgICBleHBvcnRzLnBhcnNlID0gcGFyc2U7XG5cbiAgICAvLyBEZWVwIGNvcHkuXG4gICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGV4cG9ydHMuU3ludGF4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5hbWUsIHR5cGVzID0ge307XG5cbiAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKG5hbWUgaW4gU3ludGF4KSB7XG4gICAgICAgICAgICBpZiAoU3ludGF4Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdHlwZXNbbmFtZV0gPSBTeW50YXhbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5mcmVlemUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIE9iamVjdC5mcmVlemUodHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH0oKSk7XG5cbn0pKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG5cbiIsIi8qIHBhcnNlciBnZW5lcmF0ZWQgYnkgamlzb24gMC40LjEzICovXG4vKlxuICBSZXR1cm5zIGEgUGFyc2VyIG9iamVjdCBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcblxuICBQYXJzZXI6IHtcbiAgICB5eToge31cbiAgfVxuXG4gIFBhcnNlci5wcm90b3R5cGU6IHtcbiAgICB5eToge30sXG4gICAgdHJhY2U6IGZ1bmN0aW9uKCksXG4gICAgc3ltYm9sc186IHthc3NvY2lhdGl2ZSBsaXN0OiBuYW1lID09PiBudW1iZXJ9LFxuICAgIHRlcm1pbmFsc186IHthc3NvY2lhdGl2ZSBsaXN0OiBudW1iZXIgPT0+IG5hbWV9LFxuICAgIHByb2R1Y3Rpb25zXzogWy4uLl0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCksXG4gICAgdGFibGU6IFsuLi5dLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7Li4ufSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbihzdHIsIGhhc2gpLFxuICAgIHBhcnNlOiBmdW5jdGlvbihpbnB1dCksXG5cbiAgICBsZXhlcjoge1xuICAgICAgICBFT0Y6IDEsXG4gICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uKHN0ciwgaGFzaCksXG4gICAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCksXG4gICAgICAgIGlucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICB1bnB1dDogZnVuY3Rpb24oc3RyKSxcbiAgICAgICAgbW9yZTogZnVuY3Rpb24oKSxcbiAgICAgICAgbGVzczogZnVuY3Rpb24obiksXG4gICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSxcbiAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSxcbiAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpLFxuICAgICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihyZWdleF9tYXRjaF9hcnJheSwgcnVsZV9pbmRleCksXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIGxleDogZnVuY3Rpb24oKSxcbiAgICAgICAgYmVnaW46IGZ1bmN0aW9uKGNvbmRpdGlvbiksXG4gICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbigpLFxuICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbigpLFxuICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24oKSxcbiAgICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbihjb25kaXRpb24pLFxuXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHJhbmdlczogYm9vbGVhbiAgICAgICAgICAgKG9wdGlvbmFsOiB0cnVlID09PiB0b2tlbiBsb2NhdGlvbiBpbmZvIHdpbGwgaW5jbHVkZSBhIC5yYW5nZVtdIG1lbWJlcilcbiAgICAgICAgICAgIGZsZXg6IGJvb2xlYW4gICAgICAgICAgICAgKG9wdGlvbmFsOiB0cnVlID09PiBmbGV4LWxpa2UgbGV4aW5nIGJlaGF2aW91ciB3aGVyZSB0aGUgcnVsZXMgYXJlIHRlc3RlZCBleGhhdXN0aXZlbHkgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaClcbiAgICAgICAgICAgIGJhY2t0cmFja19sZXhlcjogYm9vbGVhbiAgKG9wdGlvbmFsOiB0cnVlID09PiBsZXhlciByZWdleGVzIGFyZSB0ZXN0ZWQgaW4gb3JkZXIgYW5kIGZvciBlYWNoIG1hdGNoaW5nIHJlZ2V4IHRoZSBhY3Rpb24gY29kZSBpcyBpbnZva2VkOyB0aGUgbGV4ZXIgdGVybWluYXRlcyB0aGUgc2NhbiB3aGVuIGEgdG9rZW4gaXMgcmV0dXJuZWQgYnkgdGhlIGFjdGlvbiBjb2RlKVxuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSxcbiAgICAgICAgcnVsZXM6IFsuLi5dLFxuICAgICAgICBjb25kaXRpb25zOiB7YXNzb2NpYXRpdmUgbGlzdDogbmFtZSA9PT4gc2V0fSxcbiAgICB9XG4gIH1cblxuXG4gIHRva2VuIGxvY2F0aW9uIGluZm8gKEAkLCBfJCwgZXRjLik6IHtcbiAgICBmaXJzdF9saW5lOiBuLFxuICAgIGxhc3RfbGluZTogbixcbiAgICBmaXJzdF9jb2x1bW46IG4sXG4gICAgbGFzdF9jb2x1bW46IG4sXG4gICAgcmFuZ2U6IFtzdGFydF9udW1iZXIsIGVuZF9udW1iZXJdICAgICAgICh3aGVyZSB0aGUgbnVtYmVycyBhcmUgaW5kZXhlcyBpbnRvIHRoZSBpbnB1dCBzdHJpbmcsIHJlZ3VsYXIgemVyby1iYXNlZClcbiAgfVxuXG5cbiAgdGhlIHBhcnNlRXJyb3IgZnVuY3Rpb24gcmVjZWl2ZXMgYSAnaGFzaCcgb2JqZWN0IHdpdGggdGhlc2UgbWVtYmVycyBmb3IgbGV4ZXIgYW5kIHBhcnNlciBlcnJvcnM6IHtcbiAgICB0ZXh0OiAgICAgICAgKG1hdGNoZWQgdGV4dClcbiAgICB0b2tlbjogICAgICAgKHRoZSBwcm9kdWNlZCB0ZXJtaW5hbCB0b2tlbiwgaWYgYW55KVxuICAgIGxpbmU6ICAgICAgICAoeXlsaW5lbm8pXG4gIH1cbiAgd2hpbGUgcGFyc2VyIChncmFtbWFyKSBlcnJvcnMgd2lsbCBhbHNvIHByb3ZpZGUgdGhlc2UgbWVtYmVycywgaS5lLiBwYXJzZXIgZXJyb3JzIGRlbGl2ZXIgYSBzdXBlcnNldCBvZiBhdHRyaWJ1dGVzOiB7XG4gICAgbG9jOiAgICAgICAgICh5eWxsb2MpXG4gICAgZXhwZWN0ZWQ6ICAgIChzdHJpbmcgZGVzY3JpYmluZyB0aGUgc2V0IG9mIGV4cGVjdGVkIHRva2VucylcbiAgICByZWNvdmVyYWJsZTogKGJvb2xlYW46IFRSVUUgd2hlbiB0aGUgcGFyc2VyIGhhcyBhIGVycm9yIHJlY292ZXJ5IHJ1bGUgYXZhaWxhYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgZXJyb3IpXG4gIH1cbiovXG52YXIgcGFyc2VyID0gKGZ1bmN0aW9uKCl7XG52YXIgcGFyc2VyID0ge3RyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHsgfSxcbnl5OiB7fSxcbnN5bWJvbHNfOiB7XCJlcnJvclwiOjIsXCJKU09OX1BBVEhcIjozLFwiRE9MTEFSXCI6NCxcIlBBVEhfQ09NUE9ORU5UU1wiOjUsXCJMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OXCI6NixcIlBBVEhfQ09NUE9ORU5UXCI6NyxcIk1FTUJFUl9DT01QT05FTlRcIjo4LFwiU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjksXCJDSElMRF9NRU1CRVJfQ09NUE9ORU5UXCI6MTAsXCJERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlRcIjoxMSxcIkRPVFwiOjEyLFwiTUVNQkVSX0VYUFJFU1NJT05cIjoxMyxcIkRPVF9ET1RcIjoxNCxcIlNUQVJcIjoxNSxcIklERU5USUZJRVJcIjoxNixcIlNDUklQVF9FWFBSRVNTSU9OXCI6MTcsXCJJTlRFR0VSXCI6MTgsXCJFTkRcIjoxOSxcIkNISUxEX1NVQlNDUklQVF9DT01QT05FTlRcIjoyMCxcIkRFU0NFTkRBTlRfU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjIxLFwiW1wiOjIyLFwiU1VCU0NSSVBUXCI6MjMsXCJdXCI6MjQsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTlwiOjI1LFwiU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVFwiOjI2LFwiU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEVcIjoyNyxcIixcIjoyOCxcIlNUUklOR19MSVRFUkFMXCI6MjksXCJBUlJBWV9TTElDRVwiOjMwLFwiRklMVEVSX0VYUFJFU1NJT05cIjozMSxcIlFRX1NUUklOR1wiOjMyLFwiUV9TVFJJTkdcIjozMyxcIiRhY2NlcHRcIjowLFwiJGVuZFwiOjF9LFxudGVybWluYWxzXzogezI6XCJlcnJvclwiLDQ6XCJET0xMQVJcIiwxMjpcIkRPVFwiLDE0OlwiRE9UX0RPVFwiLDE1OlwiU1RBUlwiLDE2OlwiSURFTlRJRklFUlwiLDE3OlwiU0NSSVBUX0VYUFJFU1NJT05cIiwxODpcIklOVEVHRVJcIiwxOTpcIkVORFwiLDIyOlwiW1wiLDI0OlwiXVwiLDI4OlwiLFwiLDMwOlwiQVJSQVlfU0xJQ0VcIiwzMTpcIkZJTFRFUl9FWFBSRVNTSU9OXCIsMzI6XCJRUV9TVFJJTkdcIiwzMzpcIlFfU1RSSU5HXCJ9LFxucHJvZHVjdGlvbnNfOiBbMCxbMywxXSxbMywyXSxbMywxXSxbMywyXSxbNSwxXSxbNSwyXSxbNywxXSxbNywxXSxbOCwxXSxbOCwxXSxbMTAsMl0sWzYsMV0sWzExLDJdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzksMV0sWzksMV0sWzIwLDNdLFsyMSw0XSxbMjMsMV0sWzIzLDFdLFsyNiwxXSxbMjYsM10sWzI3LDFdLFsyNywxXSxbMjcsMV0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI5LDFdLFsyOSwxXV0sXG5wZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSAvKiBhY3Rpb25bMV0gKi8sICQkIC8qIHZzdGFjayAqLywgXyQgLyogbHN0YWNrICovXG4vKiovKSB7XG4vKiB0aGlzID09IHl5dmFsICovXG5pZiAoIXl5LmFzdCkge1xuICAgIHl5LmFzdCA9IF9hc3Q7XG4gICAgX2FzdC5pbml0aWFsaXplKCk7XG59XG5cbnZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG5zd2l0Y2ggKHl5c3RhdGUpIHtcbmNhc2UgMTp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQkWyQwXSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSAyOnl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJCRbJDAtMV0gfSB9KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpXG5icmVhaztcbmNhc2UgMzp5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSA0Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIsIHNjb3BlOiBcImNoaWxkXCIsIGV4cHJlc3Npb246IHsgdHlwZTogXCJpZGVudGlmaWVyXCIsIHZhbHVlOiAkJFskMC0xXSB9fSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDU6XG5icmVhaztcbmNhc2UgNjpcbmJyZWFrO1xuY2FzZSA3Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIgfSk7IHl5LmFzdC5wdXNoKClcbmJyZWFrO1xuY2FzZSA4Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwic3Vic2NyaXB0XCIgfSk7IHl5LmFzdC5wdXNoKCkgXG5icmVhaztcbmNhc2UgOTp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KVxuYnJlYWs7XG5jYXNlIDEwOnl5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSlcbmJyZWFrO1xuY2FzZSAxMTpcbmJyZWFrO1xuY2FzZSAxMjp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiwgb3BlcmF0aW9uOiBcIm1lbWJlclwiIH0pXG5icmVhaztcbmNhc2UgMTM6XG5icmVhaztcbmNhc2UgMTQ6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNTp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQkWyQwXSB9IH0pXG5icmVhaztcbmNhc2UgMTY6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzY3JpcHRfZXhwcmVzc2lvblwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNzp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJCRbJDBdKSB9IH0pXG5icmVhaztcbmNhc2UgMTg6XG5icmVhaztcbmNhc2UgMTk6eXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSlcbmJyZWFrO1xuY2FzZSAyMDp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiZGVzY2VuZGFudFwiIH0pXG5icmVhaztcbmNhc2UgMjE6XG5icmVhaztcbmNhc2UgMjI6XG5icmVhaztcbmNhc2UgMjM6XG5icmVhaztcbmNhc2UgMjQ6JCRbJDBdLmxlbmd0aCA+IDE/IHl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwidW5pb25cIiwgdmFsdWU6ICQkWyQwXSB9IH0pIDogdGhpcy4kID0gJCRbJDBdXG5icmVhaztcbmNhc2UgMjU6dGhpcy4kID0gWyQkWyQwXV1cbmJyZWFrO1xuY2FzZSAyNjp0aGlzLiQgPSAkJFskMC0yXS5jb25jYXQoJCRbJDBdKVxuYnJlYWs7XG5jYXNlIDI3OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJCRbJDBdKSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDI4OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInN0cmluZ19saXRlcmFsXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAyOTp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzbGljZVwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzA6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwid2lsZGNhcmRcIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDMxOnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMjp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJmaWx0ZXJfZXhwcmVzc2lvblwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzM6dGhpcy4kID0gJCRbJDBdXG5icmVhaztcbmNhc2UgMzQ6dGhpcy4kID0gJCRbJDBdXG5icmVhaztcbn1cbn0sXG50YWJsZTogW3szOjEsNDpbMSwyXSw2OjMsMTM6NCwxNTpbMSw1XSwxNjpbMSw2XSwxNzpbMSw3XSwxODpbMSw4XSwxOTpbMSw5XX0sezE6WzNdfSx7MTpbMiwxXSw1OjEwLDc6MTEsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiwzXSw1OjIxLDc6MTEsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiwxMl0sMTI6WzIsMTJdLDE0OlsyLDEyXSwyMjpbMiwxMl19LHsxOlsyLDE0XSwxMjpbMiwxNF0sMTQ6WzIsMTRdLDIyOlsyLDE0XX0sezE6WzIsMTVdLDEyOlsyLDE1XSwxNDpbMiwxNV0sMjI6WzIsMTVdfSx7MTpbMiwxNl0sMTI6WzIsMTZdLDE0OlsyLDE2XSwyMjpbMiwxNl19LHsxOlsyLDE3XSwxMjpbMiwxN10sMTQ6WzIsMTddLDIyOlsyLDE3XX0sezE6WzIsMThdLDEyOlsyLDE4XSwxNDpbMiwxOF0sMjI6WzIsMThdfSx7MTpbMiwyXSw3OjIyLDg6MTIsOToxMywxMDoxNCwxMToxNSwxMjpbMSwxOF0sMTQ6WzEsMTldLDIwOjE2LDIxOjE3LDIyOlsxLDIwXX0sezE6WzIsNV0sMTI6WzIsNV0sMTQ6WzIsNV0sMjI6WzIsNV19LHsxOlsyLDddLDEyOlsyLDddLDE0OlsyLDddLDIyOlsyLDddfSx7MTpbMiw4XSwxMjpbMiw4XSwxNDpbMiw4XSwyMjpbMiw4XX0sezE6WzIsOV0sMTI6WzIsOV0sMTQ6WzIsOV0sMjI6WzIsOV19LHsxOlsyLDEwXSwxMjpbMiwxMF0sMTQ6WzIsMTBdLDIyOlsyLDEwXX0sezE6WzIsMTldLDEyOlsyLDE5XSwxNDpbMiwxOV0sMjI6WzIsMTldfSx7MTpbMiwyMF0sMTI6WzIsMjBdLDE0OlsyLDIwXSwyMjpbMiwyMF19LHsxMzoyMywxNTpbMSw1XSwxNjpbMSw2XSwxNzpbMSw3XSwxODpbMSw4XSwxOTpbMSw5XX0sezEzOjI0LDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldLDIyOlsxLDI1XX0sezE1OlsxLDI5XSwxNzpbMSwzMF0sMTg6WzEsMzNdLDIzOjI2LDI1OjI3LDI2OjI4LDI3OjMyLDI5OjM0LDMwOlsxLDM1XSwzMTpbMSwzMV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezE6WzIsNF0sNzoyMiw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDZdLDEyOlsyLDZdLDE0OlsyLDZdLDIyOlsyLDZdfSx7MTpbMiwxMV0sMTI6WzIsMTFdLDE0OlsyLDExXSwyMjpbMiwxMV19LHsxOlsyLDEzXSwxMjpbMiwxM10sMTQ6WzIsMTNdLDIyOlsyLDEzXX0sezE1OlsxLDI5XSwxNzpbMSwzMF0sMTg6WzEsMzNdLDIzOjM4LDI1OjI3LDI2OjI4LDI3OjMyLDI5OjM0LDMwOlsxLDM1XSwzMTpbMSwzMV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezI0OlsxLDM5XX0sezI0OlsyLDIzXX0sezI0OlsyLDI0XSwyODpbMSw0MF19LHsyNDpbMiwzMF19LHsyNDpbMiwzMV19LHsyNDpbMiwzMl19LHsyNDpbMiwyNV0sMjg6WzIsMjVdfSx7MjQ6WzIsMjddLDI4OlsyLDI3XX0sezI0OlsyLDI4XSwyODpbMiwyOF19LHsyNDpbMiwyOV0sMjg6WzIsMjldfSx7MjQ6WzIsMzNdLDI4OlsyLDMzXX0sezI0OlsyLDM0XSwyODpbMiwzNF19LHsyNDpbMSw0MV19LHsxOlsyLDIxXSwxMjpbMiwyMV0sMTQ6WzIsMjFdLDIyOlsyLDIxXX0sezE4OlsxLDMzXSwyNzo0MiwyOTozNCwzMDpbMSwzNV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezE6WzIsMjJdLDEyOlsyLDIyXSwxNDpbMiwyMl0sMjI6WzIsMjJdfSx7MjQ6WzIsMjZdLDI4OlsyLDI2XX1dLFxuZGVmYXVsdEFjdGlvbnM6IHsyNzpbMiwyM10sMjk6WzIsMzBdLDMwOlsyLDMxXSwzMTpbMiwzMl19LFxucGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgfVxufSxcbnBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gJycsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpO1xuICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5O1xuICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyO1xuICAgIHRoaXMueXkucGFyc2VyID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMubGV4ZXIueXlsbG9jID0ge307XG4gICAgfVxuICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7XG4gICAgICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuO1xuICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47XG4gICAgICAgIGxzdGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCBFT0Y7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG4gICAgdmFyIHN5bWJvbCwgcHJlRXJyb3JTeW1ib2wsIHN0YXRlLCBhY3Rpb24sIGEsIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAnJztcbiAgICAgICAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCdcXCcnICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgJ1xcJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAnUGFyc2UgZXJyb3Igb24gbGluZSAnICsgKHl5bGluZW5vICsgMSkgKyAnOlxcbicgKyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgJ1xcbkV4cGVjdGluZyAnICsgZXhwZWN0ZWQuam9pbignLCAnKSArICcsIGdvdCBcXCcnICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAnXFwnJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAnUGFyc2UgZXJyb3Igb24gbGluZSAnICsgKHl5bGluZW5vICsgMSkgKyAnOiBVbmV4cGVjdGVkICcgKyAoc3ltYm9sID09IEVPRiA/ICdlbmQgb2YgaW5wdXQnIDogJ1xcJycgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICdcXCcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxleGVyLm1hdGNoLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLFxuICAgICAgICAgICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAnICsgc3RhdGUgKyAnLCB0b2tlbjogJyArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2godGhpcy5sZXhlci55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHtcbiAgICAgICAgICAgICAgICB5eWxlbmcgPSB0aGlzLmxleGVyLnl5bGVuZztcbiAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDtcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIueXlsaW5lbm87XG4gICAgICAgICAgICAgICAgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmluZy0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gcHJlRXJyb3JTeW1ib2w7XG4gICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgICB0aGlzLnl5LFxuICAgICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufX07XG52YXIgX2FzdCA9IHtcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2RlcyA9IFtdO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgICB0aGlzLl9zdGFzaCA9IFtdO1xuICB9LFxuXG4gIHNldDogZnVuY3Rpb24ocHJvcHMpIHtcbiAgICBmb3IgKHZhciBrIGluIHByb3BzKSB0aGlzLl9ub2RlW2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH0sXG5cbiAgbm9kZTogZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHRoaXMuX25vZGUgPSBvYmo7XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH0sXG5cbiAgcHVzaDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbm9kZXMucHVzaCh0aGlzLl9ub2RlKTtcbiAgICB0aGlzLl9ub2RlID0ge307XG4gIH0sXG5cbiAgdW5zaGlmdDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbm9kZXMudW5zaGlmdCh0aGlzLl9ub2RlKTtcbiAgICB0aGlzLl9ub2RlID0ge307XG4gIH0sXG5cbiAgeWllbGQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBfbm9kZXMgPSB0aGlzLl9ub2RlcztcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICByZXR1cm4gX25vZGVzO1xuICB9XG59O1xuLyogZ2VuZXJhdGVkIGJ5IGppc29uLWxleCAwLjIuMSAqL1xudmFyIGxleGVyID0gKGZ1bmN0aW9uKCl7XG52YXIgbGV4ZXIgPSB7XG5cbkVPRjoxLFxuXG5wYXJzZUVycm9yOmZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuc2V0SW5wdXQ6ZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuaW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICB9LFxuXG4vLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG51bnB1dDpmdW5jdGlvbiAoY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcblxuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbiAtIDEpO1xuICAgICAgICAvL3RoaXMueXlsZW5nIC09IGxlbjtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcblxuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG5cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID9cbiAgICAgICAgICAgICAgICAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKVxuICAgICAgICAgICAgICAgICArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG5tb3JlOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG5yZWplY3Q6ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxubGVzczpmdW5jdGlvbiAobikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnBhc3RJbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyAnLi4uJzonJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICB9LFxuXG4vLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnVwY29taW5nSW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMC1uZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICB9LFxuXG4vLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG5zaG93UG9zaXRpb246ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgIH0sXG5cbi8vIHRlc3QgdGhlIGxleGVkIHRva2VuOiByZXR1cm4gRkFMU0Ugd2hlbiBub3QgYSBtYXRjaCwgb3RoZXJ3aXNlIHJldHVybiB0b2tlblxudGVzdF9tYXRjaDpmdW5jdGlvbiAobWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBsaW5lcyxcbiAgICAgICAgICAgIGJhY2t1cDtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgLy8gc2F2ZSBjb250ZXh0XG4gICAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgIC8vIHJlY292ZXIgY29udGV4dFxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgdGhlIG5leHQgcnVsZSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbi8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG5uZXh0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgIHRlbXBNYXRjaCxcbiAgICAgICAgICAgIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgYSBydWxlIE1JU21hdGNoLlxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5yZWNvZ25pemVkIHRleHQuXFxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxubGV4OmZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuYmVnaW46ZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgIH0sXG5cbi8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG5wb3BTdGF0ZTpmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG5fY3VycmVudFJ1bGVzOmZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxudG9wU3RhdGU6ZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxucHVzaFN0YXRlOmZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgIH0sXG5cbi8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG5zdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgIH0sXG5vcHRpb25zOiB7fSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSx5eV8sJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucyxZWV9TVEFSVFxuLyoqLykge1xuXG52YXIgWVlTVEFURT1ZWV9TVEFSVDtcbnN3aXRjaCgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7XG5jYXNlIDA6cmV0dXJuIDRcbmJyZWFrO1xuY2FzZSAxOnJldHVybiAxNFxuYnJlYWs7XG5jYXNlIDI6cmV0dXJuIDEyXG5icmVhaztcbmNhc2UgMzpyZXR1cm4gMTVcbmJyZWFrO1xuY2FzZSA0OnJldHVybiAxNlxuYnJlYWs7XG5jYXNlIDU6cmV0dXJuIDIyXG5icmVhaztcbmNhc2UgNjpyZXR1cm4gMjRcbmJyZWFrO1xuY2FzZSA3OnJldHVybiAyOFxuYnJlYWs7XG5jYXNlIDg6cmV0dXJuIDMwXG5icmVhaztcbmNhc2UgOTpyZXR1cm4gMThcbmJyZWFrO1xuY2FzZSAxMDp5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSx5eV8ueXlsZW5nLTIpOyByZXR1cm4gMzI7XG5icmVhaztcbmNhc2UgMTE6eXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKDEseXlfLnl5bGVuZy0yKTsgcmV0dXJuIDMzO1xuYnJlYWs7XG5jYXNlIDEyOnJldHVybiAxN1xuYnJlYWs7XG5jYXNlIDEzOnJldHVybiAzMVxuYnJlYWs7XG59XG59LFxucnVsZXM6IFsvXig/OlxcJCkvLC9eKD86XFwuXFwuKS8sL14oPzpcXC4pLywvXig/OlxcKikvLC9eKD86W2EtekEtWl9dK1thLXpBLVowLTlfXSopLywvXig/OlxcWykvLC9eKD86XFxdKS8sL14oPzosKS8sL14oPzooKC0/KD86MHxbMS05XVswLTldKikpKT9cXDooKC0/KD86MHxbMS05XVswLTldKikpKT8oXFw6KCgtPyg/OjB8WzEtOV1bMC05XSopKSk/KT8pLywvXig/OigtPyg/OjB8WzEtOV1bMC05XSopKSkvLC9eKD86XCIoPzpcXFxcW1wiYmZucnQvXFxcXF18XFxcXHVbYS1mQS1GMC05XXs0fXxbXlwiXFxcXF0pKlwiKS8sL14oPzonKD86XFxcXFsnYmZucnQvXFxcXF18XFxcXHVbYS1mQS1GMC05XXs0fXxbXidcXFxcXSkqJykvLC9eKD86XFwoLis/XFwpKD89XFxdKSkvLC9eKD86XFw/XFwoLis/XFwpKD89XFxdKSkvXSxcbmNvbmRpdGlvbnM6IHtcIklOSVRJQUxcIjp7XCJydWxlc1wiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzXSxcImluY2x1c2l2ZVwiOnRydWV9fVxufTtcbnJldHVybiBsZXhlcjtcbn0pKCk7XG5wYXJzZXIubGV4ZXIgPSBsZXhlcjtcbmZ1bmN0aW9uIFBhcnNlciAoKSB7XG4gIHRoaXMueXkgPSB7fTtcbn1cblBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbnJldHVybiBuZXcgUGFyc2VyO1xufSkoKTtcblxuXG5pZiAodHlwZW9mIHJlcXVpcmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuZXhwb3J0cy5wYXJzZXIgPSBwYXJzZXI7XG5leHBvcnRzLlBhcnNlciA9IHBhcnNlci5QYXJzZXI7XG5leHBvcnRzLnBhcnNlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VyLnBhcnNlLmFwcGx5KHBhcnNlciwgYXJndW1lbnRzKTsgfTtcbmV4cG9ydHMubWFpbiA9IGZ1bmN0aW9uIGNvbW1vbmpzTWFpbihhcmdzKSB7XG4gICAgaWYgKCFhcmdzWzFdKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdVc2FnZTogJythcmdzWzBdKycgRklMRScpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICAgIHZhciBzb3VyY2UgPSByZXF1aXJlKCdmcycpLnJlYWRGaWxlU3luYyhyZXF1aXJlKCdwYXRoJykubm9ybWFsaXplKGFyZ3NbMV0pLCBcInV0ZjhcIik7XG4gICAgcmV0dXJuIGV4cG9ydHMucGFyc2VyLnBhcnNlKHNvdXJjZSk7XG59O1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGV4cG9ydHMubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpO1xufVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9pbmRleCcpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlkZW50aWZpZXI6IFwiW2EtekEtWl9dK1thLXpBLVowLTlfXSpcIixcbiAgaW50ZWdlcjogXCItPyg/OjB8WzEtOV1bMC05XSopXCIsXG4gIHFxX3N0cmluZzogXCJcXFwiKD86XFxcXFxcXFxbXFxcImJmbnJ0L1xcXFxcXFxcXXxcXFxcXFxcXHVbYS1mQS1GMC05XXs0fXxbXlxcXCJcXFxcXFxcXF0pKlxcXCJcIixcbiAgcV9zdHJpbmc6IFwiJyg/OlxcXFxcXFxcW1xcJ2JmbnJ0L1xcXFxcXFxcXXxcXFxcXFxcXHVbYS1mQS1GMC05XXs0fXxbXlxcJ1xcXFxcXFxcXSkqJ1wiXG59O1xuIiwidmFyIGRpY3QgPSByZXF1aXJlKCcuL2RpY3QnKTtcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG52YXIgZ3JhbW1hciA9IHtcblxuICAgIGxleDoge1xuXG4gICAgICAgIG1hY3Jvczoge1xuICAgICAgICAgICAgZXNjOiBcIlxcXFxcXFxcXCIsXG4gICAgICAgICAgICBpbnQ6IGRpY3QuaW50ZWdlclxuICAgICAgICB9LFxuXG4gICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICBbXCJcXFxcJFwiLCBcInJldHVybiAnRE9MTEFSJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFwuXFxcXC5cIiwgXCJyZXR1cm4gJ0RPVF9ET1QnXCJdLFxuICAgICAgICAgICAgW1wiXFxcXC5cIiwgXCJyZXR1cm4gJ0RPVCdcIl0sXG4gICAgICAgICAgICBbXCJcXFxcKlwiLCBcInJldHVybiAnU1RBUidcIl0sXG4gICAgICAgICAgICBbZGljdC5pZGVudGlmaWVyLCBcInJldHVybiAnSURFTlRJRklFUidcIl0sXG4gICAgICAgICAgICBbXCJcXFxcW1wiLCBcInJldHVybiAnWydcIl0sXG4gICAgICAgICAgICBbXCJcXFxcXVwiLCBcInJldHVybiAnXSdcIl0sXG4gICAgICAgICAgICBbXCIsXCIsIFwicmV0dXJuICcsJ1wiXSxcbiAgICAgICAgICAgIFtcIih7aW50fSk/XFxcXDooe2ludH0pPyhcXFxcOih7aW50fSk/KT9cIiwgXCJyZXR1cm4gJ0FSUkFZX1NMSUNFJ1wiXSxcbiAgICAgICAgICAgIFtcIntpbnR9XCIsIFwicmV0dXJuICdJTlRFR0VSJ1wiXSxcbiAgICAgICAgICAgIFtkaWN0LnFxX3N0cmluZywgXCJ5eXRleHQgPSB5eXRleHQuc3Vic3RyKDEseXlsZW5nLTIpOyByZXR1cm4gJ1FRX1NUUklORyc7XCJdLFxuICAgICAgICAgICAgW2RpY3QucV9zdHJpbmcsIFwieXl0ZXh0ID0geXl0ZXh0LnN1YnN0cigxLHl5bGVuZy0yKTsgcmV0dXJuICdRX1NUUklORyc7XCJdLFxuICAgICAgICAgICAgW1wiXFxcXCguKz9cXFxcKSg/PVxcXFxdKVwiLCBcInJldHVybiAnU0NSSVBUX0VYUFJFU1NJT04nXCJdLFxuICAgICAgICAgICAgW1wiXFxcXD9cXFxcKC4rP1xcXFwpKD89XFxcXF0pXCIsIFwicmV0dXJuICdGSUxURVJfRVhQUkVTU0lPTidcIl1cbiAgICAgICAgXVxuICAgIH0sXG5cbiAgICBzdGFydDogXCJKU09OX1BBVEhcIixcblxuICAgIGJuZjoge1xuXG4gICAgICAgIEpTT05fUEFUSDogW1xuICAgICAgICAgICAgICAgIFsgJ0RPTExBUicsICAgICAgICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiAkMSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnRE9MTEFSIFBBVEhfQ09NUE9ORU5UUycsICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQxIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OJywgICAgICAgICAgICAgICAgICd5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnTEVBRElOR19DSElMRF9NRU1CRVJfRVhQUkVTU0lPTiBQQVRIX0NPTVBPTkVOVFMnLCAneXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiwgc2NvcGU6IFwiY2hpbGRcIiwgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQxIH19KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpJyBdIF0sXG5cbiAgICAgICAgUEFUSF9DT01QT05FTlRTOiBbXG4gICAgICAgICAgICAgICAgWyAnUEFUSF9DT01QT05FTlQnLCAgICAgICAgICAgICAgICAgJycgXSxcbiAgICAgICAgICAgICAgICBbICdQQVRIX0NPTVBPTkVOVFMgUEFUSF9DT01QT05FTlQnLCAnJyBdIF0sXG5cbiAgICAgICAgUEFUSF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdNRU1CRVJfQ09NUE9ORU5UJywgICAgJ3l5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIgfSk7IHl5LmFzdC5wdXNoKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0NPTVBPTkVOVCcsICd5eS5hc3Quc2V0KHsgb3BlcmF0aW9uOiBcInN1YnNjcmlwdFwiIH0pOyB5eS5hc3QucHVzaCgpICcgXSBdLFxuXG4gICAgICAgIE1FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdDSElMRF9NRU1CRVJfQ09NUE9ORU5UJywgICAgICAneXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnREVTQ0VOREFOVF9NRU1CRVJfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSknIF0gXSxcblxuICAgICAgICBDSElMRF9NRU1CRVJfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9UIE1FTUJFUl9FWFBSRVNTSU9OJywgJycgXSBdLFxuXG4gICAgICAgIExFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT046IFtcbiAgICAgICAgICAgICAgICBbICdNRU1CRVJfRVhQUkVTU0lPTicsICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiwgb3BlcmF0aW9uOiBcIm1lbWJlclwiIH0pJyBdIF0sXG5cbiAgICAgICAgREVTQ0VOREFOVF9NRU1CRVJfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9UX0RPVCBNRU1CRVJfRVhQUkVTU0lPTicsICcnIF0gXSxcblxuICAgICAgICBNRU1CRVJfRVhQUkVTU0lPTjogW1xuICAgICAgICAgICAgICAgIFsgJ1NUQVInLCAgICAgICAgICAgICAgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwid2lsZGNhcmRcIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnSURFTlRJRklFUicsICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJpZGVudGlmaWVyXCIsIHZhbHVlOiAkMSB9IH0pJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NDUklQVF9FWFBSRVNTSU9OJywgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnSU5URUdFUicsICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJudW1lcmljX2xpdGVyYWxcIiwgdmFsdWU6IHBhcnNlSW50KCQxKSB9IH0pJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0VORCcsICAgICAgICAgICAgICAgJycgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdDSElMRF9TVUJTQ1JJUFRfQ09NUE9ORU5UJywgICAgICAneXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnREVTQ0VOREFOVF9TVUJTQ1JJUFRfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSknIF0gXSxcblxuICAgICAgICBDSElMRF9TVUJTQ1JJUFRfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnWyBTVUJTQ1JJUFQgXScsICcnIF0gXSxcblxuICAgICAgICBERVNDRU5EQU5UX1NVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1RfRE9UIFsgU1VCU0NSSVBUIF0nLCAnJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUOiBbXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT04nLCAnJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1QnLCAnJDEubGVuZ3RoID4gMT8geXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ1bmlvblwiLCB2YWx1ZTogJDEgfSB9KSA6ICQkID0gJDEnIF0gXSxcblxuICAgICAgICBTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUOiBbXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEUnLCAnJCQgPSBbJDFdJ10sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVCAsIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1RBQkxFJywgJyQkID0gJDEuY29uY2F0KCQzKScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1RBQkxFOiBbXG4gICAgICAgICAgICAgICAgWyAnSU5URUdFUicsICAgICAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJudW1lcmljX2xpdGVyYWxcIiwgdmFsdWU6IHBhcnNlSW50KCQxKSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NUUklOR19MSVRFUkFMJywgICAgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic3RyaW5nX2xpdGVyYWxcIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnQVJSQVlfU0xJQ0UnLCAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzbGljZVwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OOiBbXG4gICAgICAgICAgICAgICAgWyAnU1RBUicsICAgICAgICAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSxcbiAgICAgICAgICAgICAgICBbICdTQ1JJUFRfRVhQUkVTU0lPTicsICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0ZJTFRFUl9FWFBSRVNTSU9OJywgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwiZmlsdGVyX2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0gXSxcblxuICAgICAgICBTVFJJTkdfTElURVJBTDogW1xuICAgICAgICAgICAgICAgIFsgJ1FRX1NUUklORycsIFwiJCQgPSAkMVwiIF0sXG4gICAgICAgICAgICAgICAgWyAnUV9TVFJJTkcnLCAgXCIkJCA9ICQxXCIgXSBdXG4gICAgfVxufTtcbmlmIChmcy5yZWFkRmlsZVN5bmMpIHtcbiAgZ3JhbW1hci5tb2R1bGVJbmNsdWRlID0gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZShcIi4uL2luY2x1ZGUvbW9kdWxlLmpzXCIpKTtcbiAgZ3JhbW1hci5hY3Rpb25JbmNsdWRlID0gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZShcIi4uL2luY2x1ZGUvYWN0aW9uLmpzXCIpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncmFtbWFyO1xuIiwidmFyIGFlc3ByaW0gPSByZXF1aXJlKCcuL2Flc3ByaW0nKTtcbnZhciBzbGljZSA9IHJlcXVpcmUoJy4vc2xpY2UnKTtcbnZhciBfZXZhbHVhdGUgPSByZXF1aXJlKCdzdGF0aWMtZXZhbCcpO1xudmFyIF91bmlxID0gcmVxdWlyZSgndW5kZXJzY29yZScpLnVuaXE7XG5cbnZhciBIYW5kbGVycyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMudHJhdmVyc2UgPSB0cmF2ZXJzZXIodHJ1ZSk7XG4gIHRoaXMuZGVzY2VuZCA9IHRyYXZlcnNlcigpO1xufVxuXG5IYW5kbGVycy5wcm90b3R5cGUua2V5cyA9IE9iamVjdC5rZXlzO1xuXG5IYW5kbGVycy5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKGNvbXBvbmVudCkge1xuXG4gIHZhciBrZXkgPSBbIGNvbXBvbmVudC5vcGVyYXRpb24sIGNvbXBvbmVudC5zY29wZSwgY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSBdLmpvaW4oJy0nKTtcbiAgdmFyIG1ldGhvZCA9IHRoaXMuX2Zuc1trZXldO1xuXG4gIGlmICghbWV0aG9kKSB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCByZXNvbHZlIGtleTogXCIgKyBrZXkpO1xuICByZXR1cm4gbWV0aG9kLmJpbmQodGhpcyk7XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbihrZXksIGhhbmRsZXIpIHtcblxuICBpZiAoIWhhbmRsZXIgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImhhbmRsZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgdGhpcy5fZm5zW2tleV0gPSBoYW5kbGVyO1xufTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnMgPSB7XG5cbiAgJ21lbWJlci1jaGlsZC1pZGVudGlmaWVyJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsKSB7XG4gICAgdmFyIGtleSA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlO1xuICAgIHZhciB2YWx1ZSA9IHBhcnRpYWwudmFsdWU7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIGtleSBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIFsgeyB2YWx1ZTogdmFsdWVba2V5XSwgcGF0aDogcGFydGlhbC5wYXRoLmNvbmNhdChrZXkpIH0gXVxuICAgIH1cbiAgfSxcblxuICAnbWVtYmVyLWRlc2NlbmRhbnQtaWRlbnRpZmllcic6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKGtleSwgdmFsdWUsIHJlZikgeyByZXR1cm4ga2V5ID09IHJlZiB9KSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT09IHJlZiB9KSxcblxuICAnbWVtYmVyLWNoaWxkLW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBTdHJpbmcoa2V5KSA9PT0gU3RyaW5nKHJlZikgfSksXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKGtleSwgdmFsdWUsIHJlZikgeyByZXR1cm4ga2V5ID09PSByZWYgfSksXG5cbiAgJ21lbWJlci1jaGlsZC13aWxkY2FyZCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC13aWxkY2FyZCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZSB9KSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtd2lsZGNhcmQnOlxuICAgIF90cmF2ZXJzZShmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC13aWxkY2FyZCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtc2xpY2UnOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICBpZiAoaXNfYXJyYXkocGFydGlhbC52YWx1ZSkpIHtcbiAgICAgIHZhciBhcmdzID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc3BsaXQoJzonKS5tYXAoX3BhcnNlX251bGxhYmxlX2ludCk7XG4gICAgICB2YXIgdmFsdWVzID0gcGFydGlhbC52YWx1ZS5tYXAoZnVuY3Rpb24odiwgaSkgeyByZXR1cm4geyB2YWx1ZTogdiwgcGF0aDogcGFydGlhbC5wYXRoLmNvbmNhdChpKSB9IH0pO1xuICAgICAgcmV0dXJuIHNsaWNlLmFwcGx5KG51bGwsIFt2YWx1ZXNdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtdW5pb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50KSB7XG4gICAgICB2YXIgX2NvbXBvbmVudCA9IHsgb3BlcmF0aW9uOiAnc3Vic2NyaXB0Jywgc2NvcGU6ICdjaGlsZCcsIGV4cHJlc3Npb246IGNvbXBvbmVudC5leHByZXNzaW9uIH07XG4gICAgICB2YXIgaGFuZGxlciA9IHRoaXMucmVzb2x2ZShfY29tcG9uZW50KTtcbiAgICAgIHZhciBfcmVzdWx0cyA9IGhhbmRsZXIoX2NvbXBvbmVudCwgcGFydGlhbCk7XG4gICAgICBpZiAoX3Jlc3VsdHMpIHtcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KF9yZXN1bHRzKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcblxuICAgIHJldHVybiB1bmlxdWUocmVzdWx0cyk7XG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LXVuaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgdmFyIGpwID0gcmVxdWlyZSgnLi4nKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIHZhciBub2RlcyA9IGpwLm5vZGVzKHBhcnRpYWwsICckLi4qJykuc2xpY2UoMSk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgcmV0dXJuO1xuICAgICAgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB7IG9wZXJhdGlvbjogJ3N1YnNjcmlwdCcsIHNjb3BlOiAnY2hpbGQnLCBleHByZXNzaW9uOiBjb21wb25lbnQuZXhwcmVzc2lvbiB9O1xuICAgICAgICB2YXIgaGFuZGxlciA9IHNlbGYucmVzb2x2ZShfY29tcG9uZW50KTtcbiAgICAgICAgdmFyIF9yZXN1bHRzID0gaGFuZGxlcihfY29tcG9uZW50LCBub2RlKTtcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KF9yZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVuaXF1ZShyZXN1bHRzKTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLWZpbHRlcl9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgLy8gc2xpY2Ugb3V0IHRoZSBleHByZXNzaW9uIGZyb20gPyhleHByZXNzaW9uKVxuICAgIHZhciBzcmMgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgyLCAtMSk7XG4gICAgdmFyIGFzdCA9IGFlc3ByaW0ucGFyc2Uoc3JjKS5ib2R5WzBdLmV4cHJlc3Npb247XG5cbiAgICB2YXIgcGFzc2FibGUgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gZXZhbHVhdGUoYXN0LCB7ICdAJzogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChwYXJ0aWFsLCBudWxsLCBwYXNzYWJsZSwgY291bnQpO1xuXG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LWZpbHRlcl9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgLy8gc2xpY2Ugb3V0IHRoZSBleHByZXNzaW9uIGZyb20gPyhleHByZXNzaW9uKVxuICAgIHZhciBzcmMgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgyLCAtMSk7XG4gICAgdmFyIGFzdCA9IGFlc3ByaW0ucGFyc2Uoc3JjKS5ib2R5WzBdLmV4cHJlc3Npb247XG5cbiAgICB2YXIgcGFzc2FibGUgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gZXZhbHVhdGUoYXN0LCB7ICdAJzogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJhdmVyc2UocGFydGlhbCwgbnVsbCwgcGFzc2FibGUsIGNvdW50KTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLXNjcmlwdF9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsKSB7XG4gICAgdmFyIGV4cCA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICByZXR1cm4gZXZhbF9yZWN1cnNlKHBhcnRpYWwsIGV4cCwgJyRbe3t2YWx1ZX19XScpO1xuICB9LFxuXG4gICdtZW1iZXItY2hpbGQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJC57e3ZhbHVlfX0nKTtcbiAgfSxcblxuICAnbWVtYmVyLWRlc2NlbmRhbnQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJC4udmFsdWUnKTtcbiAgfVxufTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ3N1YnNjcmlwdC1jaGlsZC1zdHJpbmdfbGl0ZXJhbCddID1cblx0SGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1jaGlsZC1pZGVudGlmaWVyJ107XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5fZm5zWydtZW1iZXItZGVzY2VuZGFudC1udW1lcmljX2xpdGVyYWwnXSA9XG4gICAgSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ3N1YnNjcmlwdC1kZXNjZW5kYW50LXN0cmluZ19saXRlcmFsJ10gPVxuICAgIEhhbmRsZXJzLnByb3RvdHlwZS5fZm5zWydtZW1iZXItZGVzY2VuZGFudC1pZGVudGlmaWVyJ107XG5cbmZ1bmN0aW9uIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBzcmMsIHRlbXBsYXRlKSB7XG5cbiAgdmFyIGpwID0gcmVxdWlyZSgnLi9pbmRleCcpO1xuICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcbiAgdmFyIHZhbHVlID0gZXZhbHVhdGUoYXN0LCB7ICdAJzogcGFydGlhbC52YWx1ZSB9KTtcbiAgdmFyIHBhdGggPSB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHtcXHtcXHMqdmFsdWVcXHMqXFx9XFx9L2csIHZhbHVlKTtcblxuICB2YXIgcmVzdWx0cyA9IGpwLm5vZGVzKHBhcnRpYWwudmFsdWUsIHBhdGgpO1xuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24ocikge1xuICAgIHIucGF0aCA9IHBhcnRpYWwucGF0aC5jb25jYXQoci5wYXRoLnNsaWNlKDEpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGlzX2FycmF5KHZhbCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xufVxuXG5mdW5jdGlvbiBpc19vYmplY3QodmFsKSB7XG4gIC8vIGlzIHRoaXMgYSBub24tYXJyYXksIG5vbi1udWxsIG9iamVjdD9cbiAgcmV0dXJuIHZhbCAmJiAhKHZhbCBpbnN0YW5jZW9mIEFycmF5KSAmJiB2YWwgaW5zdGFuY2VvZiBPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYXZlcnNlcihyZWN1cnNlKSB7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHBhcnRpYWwsIHJlZiwgcGFzc2FibGUsIGNvdW50KSB7XG5cbiAgICB2YXIgdmFsdWUgPSBwYXJ0aWFsLnZhbHVlO1xuICAgIHZhciBwYXRoID0gcGFydGlhbC5wYXRoO1xuXG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICAgIHZhciBkZXNjZW5kID0gZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcblxuICAgICAgaWYgKGlzX2FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4KSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSB7IHJldHVybiB9XG4gICAgICAgICAgaWYgKHBhc3NhYmxlKGluZGV4LCBlbGVtZW50LCByZWYpKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2goeyBwYXRoOiBwYXRoLmNvbmNhdChpbmRleCksIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocmVjdXJzZSkge1xuICAgICAgICAgICAgZGVzY2VuZChlbGVtZW50LCBwYXRoLmNvbmNhdChpbmRleCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzX29iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocGFzc2FibGUoaywgdmFsdWVba10sIHJlZikpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7IHBhdGg6IHBhdGguY29uY2F0KGspLCB2YWx1ZTogdmFsdWVba10gfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgICAgICBkZXNjZW5kKHZhbHVlW2tdLCBwYXRoLmNvbmNhdChrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LmJpbmQodGhpcyk7XG4gICAgZGVzY2VuZCh2YWx1ZSwgcGF0aCk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2Rlc2NlbmQocGFzc2FibGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCwgY291bnQpIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKHBhcnRpYWwsIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLCBwYXNzYWJsZSwgY291bnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShwYXNzYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuICAgIHJldHVybiB0aGlzLnRyYXZlcnNlKHBhcnRpYWwsIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLCBwYXNzYWJsZSwgY291bnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2YWx1YXRlKCkge1xuICB0cnkgeyByZXR1cm4gX2V2YWx1YXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICBjYXRjaCAoZSkgeyB9XG59XG5cbmZ1bmN0aW9uIHVuaXF1ZShyZXN1bHRzKSB7XG4gIHJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVybiBkIH0pXG4gIHJldHVybiBfdW5pcShcbiAgICByZXN1bHRzLFxuICAgIGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIucGF0aC5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gU3RyaW5nKGMpLnJlcGxhY2UoJy0nLCAnLS0nKSB9KS5qb2luKCctJykgfVxuICApO1xufVxuXG5mdW5jdGlvbiBfcGFyc2VfbnVsbGFibGVfaW50KHZhbCkge1xuICB2YXIgc3ZhbCA9IFN0cmluZyh2YWwpO1xuICByZXR1cm4gc3ZhbC5tYXRjaCgvXi0/WzAtOV0rJC8pID8gcGFyc2VJbnQoc3ZhbCkgOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhbmRsZXJzO1xuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xudmFyIGRpY3QgPSByZXF1aXJlKCcuL2RpY3QnKTtcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpO1xudmFyIEhhbmRsZXJzID0gcmVxdWlyZSgnLi9oYW5kbGVycycpO1xuXG52YXIgSlNPTlBhdGggPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnBhcnNlciA9IG5ldyBQYXJzZXIoKTtcbiAgdGhpcy5oYW5kbGVycyA9IG5ldyBIYW5kbGVycygpO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGFzc2VydC5vayhfaXNfc3RyaW5nKHN0cmluZyksIFwid2UgbmVlZCBhIHBhdGhcIik7XG4gIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShzdHJpbmcpO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nKSB7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBub2RlID0gdGhpcy5ub2RlcyhvYmosIHN0cmluZylbMF07XG4gIHZhciBrZXkgPSBub2RlLnBhdGgucG9wKCk7IC8qIGpzaGludCB1bnVzZWQ6ZmFsc2UgKi9cbiAgcmV0dXJuIHRoaXMudmFsdWUob2JqLCBub2RlLnBhdGgpO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgZm4pIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG4gIGFzc2VydC5lcXVhbCh0eXBlb2YgZm4sIFwiZnVuY3Rpb25cIiwgXCJmbiBuZWVkcyB0byBiZSBmdW5jdGlvblwiKVxuXG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcpLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIC8vIHNvcnQgbm9kZXMgc28gd2UgYXBwbHkgZnJvbSB0aGUgYm90dG9tIHVwXG4gICAgcmV0dXJuIGIucGF0aC5sZW5ndGggLSBhLnBhdGgubGVuZ3RoO1xuICB9KTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIga2V5ID0gbm9kZS5wYXRoLnBvcCgpO1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnZhbHVlKG9iaiwgdGhpcy5zdHJpbmdpZnkobm9kZS5wYXRoKSk7XG4gICAgdmFyIHZhbCA9IG5vZGUudmFsdWUgPSBmbi5jYWxsKG9iaiwgcGFyZW50W2tleV0pO1xuICAgIHBhcmVudFtrZXldID0gdmFsO1xuICB9LCB0aGlzKTtcblxuICByZXR1cm4gbm9kZXM7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKG9iaiwgcGF0aCwgdmFsdWUpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMubm9kZXMob2JqLCBwYXRoKS5zaGlmdCgpO1xuICAgIGlmICghbm9kZSkgcmV0dXJuIHRoaXMuX3ZpdmlmeShvYmosIHBhdGgsIHZhbHVlKTtcbiAgICB2YXIga2V5ID0gbm9kZS5wYXRoLnNsaWNlKC0xKS5zaGlmdCgpO1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudChvYmosIHRoaXMuc3RyaW5naWZ5KG5vZGUucGF0aCkpO1xuICAgIHBhcmVudFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXMucXVlcnkob2JqLCB0aGlzLnN0cmluZ2lmeShwYXRoKSwgMSkuc2hpZnQoKTtcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLl92aXZpZnkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgdmFsdWUpIHtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBwYXRoID0gdGhpcy5wYXJzZXIucGFyc2Uoc3RyaW5nKVxuICAgIC5tYXAoZnVuY3Rpb24oY29tcG9uZW50KSB7IHJldHVybiBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZSB9KTtcblxuICB2YXIgc2V0VmFsdWUgPSBmdW5jdGlvbihwYXRoLCB2YWx1ZSkge1xuICAgIHZhciBrZXkgPSBwYXRoLnBvcCgpO1xuICAgIHZhciBub2RlID0gc2VsZi52YWx1ZShvYmosIHBhdGgpO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgc2V0VmFsdWUocGF0aC5jb25jYXQoKSwgdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyB7fSA6IFtdKTtcbiAgICAgIG5vZGUgPSBzZWxmLnZhbHVlKG9iaiwgcGF0aCk7XG4gICAgfVxuICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICB9XG4gIHNldFZhbHVlKHBhdGgsIHZhbHVlKTtcbiAgcmV0dXJuIHRoaXMucXVlcnkob2JqLCBzdHJpbmcpWzBdO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgY291bnQpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhfaXNfc3RyaW5nKHN0cmluZyksIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHJlc3VsdHMgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nLCBjb3VudClcbiAgICAubWFwKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIudmFsdWUgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGF0aHMgPSBmdW5jdGlvbihvYmosIHN0cmluZywgY291bnQpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHJlc3VsdHMgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nLCBjb3VudClcbiAgICAubWFwKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIucGF0aCB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5ub2RlcyA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICBpZiAoY291bnQgPT09IDApIHJldHVybiBbXTtcblxuICB2YXIgcGF0aCA9IHRoaXMucGFyc2VyLnBhcnNlKHN0cmluZyk7XG4gIHZhciBoYW5kbGVycyA9IHRoaXMuaGFuZGxlcnM7XG5cbiAgdmFyIHBhcnRpYWxzID0gWyB7IHBhdGg6IFsnJCddLCB2YWx1ZTogb2JqIH0gXTtcbiAgdmFyIG1hdGNoZXMgPSBbXTtcblxuICBpZiAocGF0aC5sZW5ndGggJiYgcGF0aFswXS5leHByZXNzaW9uLnR5cGUgPT0gJ3Jvb3QnKSBwYXRoLnNoaWZ0KCk7XG5cbiAgaWYgKCFwYXRoLmxlbmd0aCkgcmV0dXJuIHBhcnRpYWxzO1xuXG4gIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQsIGluZGV4KSB7XG5cbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggPj0gY291bnQpIHJldHVybjtcbiAgICB2YXIgaGFuZGxlciA9IGhhbmRsZXJzLnJlc29sdmUoY29tcG9uZW50KTtcbiAgICB2YXIgX3BhcnRpYWxzID0gW107XG5cbiAgICBwYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcblxuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID49IGNvdW50KSByZXR1cm47XG4gICAgICB2YXIgcmVzdWx0cyA9IGhhbmRsZXIoY29tcG9uZW50LCBwLCBjb3VudCk7XG5cbiAgICAgIGlmIChpbmRleCA9PSBwYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gaWYgd2UncmUgdGhyb3VnaCB0aGUgY29tcG9uZW50cyB3ZSdyZSBkb25lXG4gICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzLmNvbmNhdChyZXN1bHRzIHx8IFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG90aGVyd2lzZSBhY2N1bXVsYXRlIGFuZCBjYXJyeSBvbiB0aHJvdWdoXG4gICAgICAgIF9wYXJ0aWFscyA9IF9wYXJ0aWFscy5jb25jYXQocmVzdWx0cyB8fCBbXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXJ0aWFscyA9IF9wYXJ0aWFscztcblxuICB9KTtcblxuICByZXR1cm4gY291bnQgPyBtYXRjaGVzLnNsaWNlKDAsIGNvdW50KSA6IG1hdGNoZXM7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUuc3RyaW5naWZ5ID0gZnVuY3Rpb24ocGF0aCkge1xuXG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBzdHJpbmcgPSAnJCc7XG5cbiAgdmFyIHRlbXBsYXRlcyA9IHtcbiAgICAnZGVzY2VuZGFudC1tZW1iZXInOiAnLi57e3ZhbHVlfX0nLFxuICAgICdjaGlsZC1tZW1iZXInOiAnLnt7dmFsdWV9fScsXG4gICAgJ2Rlc2NlbmRhbnQtc3Vic2NyaXB0JzogJy4uW3t7dmFsdWV9fV0nLFxuICAgICdjaGlsZC1zdWJzY3JpcHQnOiAnW3t7dmFsdWV9fV0nXG4gIH07XG5cbiAgcGF0aCA9IHRoaXMuX25vcm1hbGl6ZShwYXRoKTtcblxuICBwYXRoLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50KSB7XG5cbiAgICBpZiAoY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSA9PSAncm9vdCcpIHJldHVybjtcblxuICAgIHZhciBrZXkgPSBbY29tcG9uZW50LnNjb3BlLCBjb21wb25lbnQub3BlcmF0aW9uXS5qb2luKCctJyk7XG4gICAgdmFyIHRlbXBsYXRlID0gdGVtcGxhdGVzW2tleV07XG4gICAgdmFyIHZhbHVlO1xuXG4gICAgaWYgKGNvbXBvbmVudC5leHByZXNzaW9uLnR5cGUgPT0gJ3N0cmluZ19saXRlcmFsJykge1xuICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRlbXBsYXRlKSB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCBmaW5kIHRlbXBsYXRlIFwiICsga2V5KTtcblxuICAgIHN0cmluZyArPSB0ZW1wbGF0ZS5yZXBsYWNlKC97e3ZhbHVlfX0vLCB2YWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuXG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PSBcInN0cmluZ1wiKSB7XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGFyc2UocGF0aCk7XG5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhdGgpICYmIHR5cGVvZiBwYXRoWzBdID09IFwic3RyaW5nXCIpIHtcblxuICAgIHZhciBfcGF0aCA9IFsgeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogXCIkXCIgfSB9IF07XG5cbiAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50LCBpbmRleCkge1xuXG4gICAgICBpZiAoY29tcG9uZW50ID09ICckJyAmJiBpbmRleCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCA9PSBcInN0cmluZ1wiICYmIGNvbXBvbmVudC5tYXRjaChcIl5cIiArIGRpY3QuaWRlbnRpZmllciArIFwiJFwiKSkge1xuXG4gICAgICAgIF9wYXRoLnB1c2goe1xuICAgICAgICAgIG9wZXJhdGlvbjogJ21lbWJlcicsXG4gICAgICAgICAgc2NvcGU6ICdjaGlsZCcsXG4gICAgICAgICAgZXhwcmVzc2lvbjogeyB2YWx1ZTogY29tcG9uZW50LCB0eXBlOiAnaWRlbnRpZmllcicgfVxuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBjb21wb25lbnQgPT0gXCJudW1iZXJcIiA/XG4gICAgICAgICAgJ251bWVyaWNfbGl0ZXJhbCcgOiAnc3RyaW5nX2xpdGVyYWwnO1xuXG4gICAgICAgIF9wYXRoLnB1c2goe1xuICAgICAgICAgIG9wZXJhdGlvbjogJ3N1YnNjcmlwdCcsXG4gICAgICAgICAgc2NvcGU6ICdjaGlsZCcsXG4gICAgICAgICAgZXhwcmVzc2lvbjogeyB2YWx1ZTogY29tcG9uZW50LCB0eXBlOiB0eXBlIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3BhdGg7XG5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhdGgpICYmIHR5cGVvZiBwYXRoWzBdID09IFwib2JqZWN0XCIpIHtcblxuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCB1bmRlcnN0YW5kIHBhdGggXCIgKyBwYXRoKTtcbn1cblxuZnVuY3Rpb24gX2lzX3N0cmluZyhvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0IFN0cmluZ10nO1xufVxuXG5KU09OUGF0aC5IYW5kbGVycyA9IEhhbmRsZXJzO1xuSlNPTlBhdGguUGFyc2VyID0gUGFyc2VyO1xuXG52YXIgaW5zdGFuY2UgPSBuZXcgSlNPTlBhdGg7XG5pbnN0YW5jZS5KU09OUGF0aCA9IEpTT05QYXRoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbmNlO1xuIiwidmFyIGdyYW1tYXIgPSByZXF1aXJlKCcuL2dyYW1tYXInKTtcbnZhciBncGFyc2VyID0gcmVxdWlyZSgnLi4vZ2VuZXJhdGVkL3BhcnNlcicpO1xuXG52YXIgUGFyc2VyID0gZnVuY3Rpb24oKSB7XG5cbiAgdmFyIHBhcnNlciA9IG5ldyBncGFyc2VyLlBhcnNlcigpO1xuXG4gIHZhciBfcGFyc2VFcnJvciA9IHBhcnNlci5wYXJzZUVycm9yO1xuICBwYXJzZXIueXkucGFyc2VFcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChwYXJzZXIueXkuYXN0KSB7XG4gICAgICBwYXJzZXIueXkuYXN0LmluaXRpYWxpemUoKTtcbiAgICB9XG4gICAgX3BhcnNlRXJyb3IuYXBwbHkocGFyc2VyLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlcjtcblxufTtcblxuUGFyc2VyLmdyYW1tYXIgPSBncmFtbWFyO1xubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgc3RhcnQsIGVuZCwgc3RlcCkge1xuXG4gIGlmICh0eXBlb2Ygc3RhcnQgPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInN0YXJ0IGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcbiAgaWYgKHR5cGVvZiBlbmQgPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcImVuZCBjYW5ub3QgYmUgYSBzdHJpbmdcIik7XG4gIGlmICh0eXBlb2Ygc3RlcCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgYSBzdHJpbmdcIik7XG5cbiAgdmFyIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgaWYgKHN0ZXAgPT09IDApIHRocm93IG5ldyBFcnJvcihcInN0ZXAgY2Fubm90IGJlIHplcm9cIik7XG4gIHN0ZXAgPSBzdGVwID8gaW50ZWdlcihzdGVwKSA6IDE7XG5cbiAgLy8gbm9ybWFsaXplIG5lZ2F0aXZlIHZhbHVlc1xuICBzdGFydCA9IHN0YXJ0IDwgMCA/IGxlbiArIHN0YXJ0IDogc3RhcnQ7XG4gIGVuZCA9IGVuZCA8IDAgPyBsZW4gKyBlbmQgOiBlbmQ7XG5cbiAgLy8gZGVmYXVsdCBleHRlbnRzIHRvIGV4dGVudHNcbiAgc3RhcnQgPSBpbnRlZ2VyKHN0YXJ0ID09PSAwID8gMCA6ICFzdGFydCA/IChzdGVwID4gMCA/IDAgOiBsZW4gLSAxKSA6IHN0YXJ0KTtcbiAgZW5kID0gaW50ZWdlcihlbmQgPT09IDAgPyAwIDogIWVuZCA/IChzdGVwID4gMCA/IGxlbiA6IC0xKSA6IGVuZCk7XG5cbiAgLy8gY2xhbXAgZXh0ZW50c1xuICBzdGFydCA9IHN0ZXAgPiAwID8gTWF0aC5tYXgoMCwgc3RhcnQpIDogTWF0aC5taW4obGVuLCBzdGFydCk7XG4gIGVuZCA9IHN0ZXAgPiAwID8gTWF0aC5taW4oZW5kLCBsZW4pIDogTWF0aC5tYXgoLTEsIGVuZCk7XG5cbiAgLy8gcmV0dXJuIGVtcHR5IGlmIGV4dGVudHMgYXJlIGJhY2t3YXJkc1xuICBpZiAoc3RlcCA+IDAgJiYgZW5kIDw9IHN0YXJ0KSByZXR1cm4gW107XG4gIGlmIChzdGVwIDwgMCAmJiBzdGFydCA8PSBlbmQpIHJldHVybiBbXTtcblxuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpICE9IGVuZDsgaSArPSBzdGVwKSB7XG4gICAgaWYgKChzdGVwIDwgMCAmJiBpIDw9IGVuZCkgfHwgKHN0ZXAgPiAwICYmIGkgPj0gZW5kKSkgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2goYXJyW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGludGVnZXIodmFsKSB7XG4gIHJldHVybiBTdHJpbmcodmFsKS5tYXRjaCgvXlswLTldKyQvKSA/IHBhcnNlSW50KHZhbCkgOlxuICAgIE51bWJlci5pc0Zpbml0ZSh2YWwpID8gcGFyc2VJbnQodmFsLCAxMCkgOiAwO1xufVxuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBgVHlwZUVycm9yYCBtZXNzYWdlIGZvciBcIkZ1bmN0aW9uc1wiIG1ldGhvZHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgcmVMZWFkaW5nRG90ID0gL15cXC4vLFxuICAgIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0IGluIElFIDwgOS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGhvc3Qgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSG9zdE9iamVjdCh2YWx1ZSkge1xuICAvLyBNYW55IGhvc3Qgb2JqZWN0cyBhcmUgYE9iamVjdGAgb2JqZWN0cyB0aGF0IGNhbiBjb2VyY2UgdG8gc3RyaW5nc1xuICAvLyBkZXNwaXRlIGhhdmluZyBpbXByb3Blcmx5IGRlZmluZWQgYHRvU3RyaW5nYCBtZXRob2RzLlxuICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gIGlmICh2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9ICEhKHZhbHVlICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2wsXG4gICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpLFxuICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICByZXR1cm4gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPyBlbnRyaWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA/IGVudHJpZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGlzS2V5KHBhdGgsIG9iamVjdCkgPyBbcGF0aF0gOiBjYXN0UGF0aChwYXRoKTtcblxuICB2YXIgaW5kZXggPSAwLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgfVxuICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IChpc0Z1bmN0aW9uKHZhbHVlKSB8fCBpc0hvc3RPYmplY3QodmFsdWUpKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogc3RyaW5nVG9QYXRoKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplKGZ1bmN0aW9uKHN0cmluZykge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHJlTGVhZGluZ0RvdC50ZXN0KHN0cmluZykpIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gKlxuICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIHZhbHVlcyhvdGhlcik7XG4gKiAvLyA9PiBbMywgNF1cbiAqXG4gKiBvYmplY3QuYSA9IDI7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddXG4gKlxuICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gKi9cbmZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBBc3NpZ24gY2FjaGUgdG8gYF8ubWVtb2l6ZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA4LTkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGlzT2JqZWN0KHZhbHVlKSA/IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuNy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAqXG4gKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICogLy8gPT4gM1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAqIC8vID0+ICdkZWZhdWx0J1xuICovXG5mdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0O1xuIiwiLyoqXG4gKiBMb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanMuZm91bmRhdGlvbi8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgU3ltYm9sID0gcm9vdC5TeW1ib2wsXG4gICAgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheSxcbiAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG4gICAgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKSxcbiAgICBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpLFxuICAgIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKSxcbiAgICBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpLFxuICAgIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKSxcbiAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICB9XG59XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gIGlmIChzdGFja2VkICYmIHN0YWNrLmdldChvdGhlcikpIHtcbiAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8IHJlSXNVaW50LnRlc3QodmFsdWUpKSAmJlxuICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbi8qKlxuICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICogZXF1aXZhbGVudC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogb2JqZWN0ID09PSBvdGhlcjtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXF1YWw7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pzLmZvdW5kYXRpb24vPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG47KGZ1bmN0aW9uKCkge1xuXG4gIC8qKiBVc2VkIGFzIGEgc2FmZSByZWZlcmVuY2UgZm9yIGB1bmRlZmluZWRgIGluIHByZS1FUzUgZW52aXJvbm1lbnRzLiAqL1xuICB2YXIgdW5kZWZpbmVkO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci4gKi9cbiAgdmFyIFZFUlNJT04gPSAnNC4xNy4xMCc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG4gIHZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4gIC8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbiAgdmFyIENPUkVfRVJST1JfVEVYVCA9ICdVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4nLFxuICAgICAgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4gIC8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbiAgdmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbiAgdmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIGludGVybmFsIGFyZ3VtZW50IHBsYWNlaG9sZGVyLiAqL1xuICB2YXIgUExBQ0VIT0xERVIgPSAnX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyc7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbiAgdmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbiAgdmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICB2YXIgV1JBUF9CSU5EX0ZMQUcgPSAxLFxuICAgICAgV1JBUF9CSU5EX0tFWV9GTEFHID0gMixcbiAgICAgIFdSQVBfQ1VSUllfQk9VTkRfRkxBRyA9IDQsXG4gICAgICBXUkFQX0NVUlJZX0ZMQUcgPSA4LFxuICAgICAgV1JBUF9DVVJSWV9SSUdIVF9GTEFHID0gMTYsXG4gICAgICBXUkFQX1BBUlRJQUxfRkxBRyA9IDMyLFxuICAgICAgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcgPSA2NCxcbiAgICAgIFdSQVBfQVJZX0ZMQUcgPSAxMjgsXG4gICAgICBXUkFQX1JFQVJHX0ZMQUcgPSAyNTYsXG4gICAgICBXUkFQX0ZMSVBfRkxBRyA9IDUxMjtcblxuICAvKiogVXNlZCBhcyBkZWZhdWx0IG9wdGlvbnMgZm9yIGBfLnRydW5jYXRlYC4gKi9cbiAgdmFyIERFRkFVTFRfVFJVTkNfTEVOR1RIID0gMzAsXG4gICAgICBERUZBVUxUX1RSVU5DX09NSVNTSU9OID0gJy4uLic7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xuICB2YXIgSE9UX0NPVU5UID0gODAwLFxuICAgICAgSE9UX1NQQU4gPSAxNjtcblxuICAvKiogVXNlZCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBsYXp5IGl0ZXJhdGVlcy4gKi9cbiAgdmFyIExBWllfRklMVEVSX0ZMQUcgPSAxLFxuICAgICAgTEFaWV9NQVBfRkxBRyA9IDIsXG4gICAgICBMQVpZX1dISUxFX0ZMQUcgPSAzO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xuICB2YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICAgIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxLFxuICAgICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCxcbiAgICAgIE5BTiA9IDAgLyAwO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG4gIHZhciBNQVhfQVJSQVlfTEVOR1RIID0gNDI5NDk2NzI5NSxcbiAgICAgIE1BWF9BUlJBWV9JTkRFWCA9IE1BWF9BUlJBWV9MRU5HVEggLSAxLFxuICAgICAgSEFMRl9NQVhfQVJSQVlfTEVOR1RIID0gTUFYX0FSUkFZX0xFTkdUSCA+Pj4gMTtcblxuICAvKiogVXNlZCB0byBhc3NvY2lhdGUgd3JhcCBtZXRob2RzIHdpdGggdGhlaXIgYml0IGZsYWdzLiAqL1xuICB2YXIgd3JhcEZsYWdzID0gW1xuICAgIFsnYXJ5JywgV1JBUF9BUllfRkxBR10sXG4gICAgWydiaW5kJywgV1JBUF9CSU5EX0ZMQUddLFxuICAgIFsnYmluZEtleScsIFdSQVBfQklORF9LRVlfRkxBR10sXG4gICAgWydjdXJyeScsIFdSQVBfQ1VSUllfRkxBR10sXG4gICAgWydjdXJyeVJpZ2h0JywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHXSxcbiAgICBbJ2ZsaXAnLCBXUkFQX0ZMSVBfRkxBR10sXG4gICAgWydwYXJ0aWFsJywgV1JBUF9QQVJUSUFMX0ZMQUddLFxuICAgIFsncGFydGlhbFJpZ2h0JywgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUddLFxuICAgIFsncmVhcmcnLCBXUkFQX1JFQVJHX0ZMQUddXG4gIF07XG5cbiAgLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuICB2YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgICAgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICAgIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICAgIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XScsXG4gICAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nLFxuICAgICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJyxcbiAgICAgIHdlYWtTZXRUYWcgPSAnW29iamVjdCBXZWFrU2V0XSc7XG5cbiAgdmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBlbXB0eSBzdHJpbmcgbGl0ZXJhbHMgaW4gY29tcGlsZWQgdGVtcGxhdGUgc291cmNlLiAqL1xuICB2YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmcgPSAvXFxiX19wIFxcKz0gJyc7L2csXG4gICAgICByZUVtcHR5U3RyaW5nTWlkZGxlID0gL1xcYihfX3AgXFwrPSkgJycgXFwrL2csXG4gICAgICByZUVtcHR5U3RyaW5nVHJhaWxpbmcgPSAvKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlZEh0bWwgPSAvJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csXG4gICAgICByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICAgIHJlSGFzRXNjYXBlZEh0bWwgPSBSZWdFeHAocmVFc2NhcGVkSHRtbC5zb3VyY2UpLFxuICAgICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG4gIHZhciByZUVzY2FwZSA9IC88JS0oW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVFdmFsdWF0ZSA9IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUludGVycG9sYXRlID0gLzwlPShbXFxzXFxTXSs/KSU+L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLyxcbiAgICAgIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAgICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gICAqL1xuICB2YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nLFxuICAgICAgcmVIYXNSZWdFeHBDaGFyID0gUmVnRXhwKHJlUmVnRXhwQ2hhci5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZyxcbiAgICAgIHJlVHJpbVN0YXJ0ID0gL15cXHMrLyxcbiAgICAgIHJlVHJpbUVuZCA9IC9cXHMrJC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggd3JhcCBkZXRhaWwgY29tbWVudHMuICovXG4gIHZhciByZVdyYXBDb21tZW50ID0gL1xceyg/OlxcblxcL1xcKiBcXFt3cmFwcGVkIHdpdGggLitcXF0gXFwqXFwvKT9cXG4/LyxcbiAgICAgIHJlV3JhcERldGFpbHMgPSAvXFx7XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAoLispXFxdIFxcKi8sXG4gICAgICByZVNwbGl0RGV0YWlscyA9IC8sPyAmIC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggd29yZHMgY29tcG9zZWQgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUFzY2lpV29yZCA9IC9bXlxceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceDdmXSsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoXG4gICAqIFtFUyB0ZW1wbGF0ZSBkZWxpbWl0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10ZW1wbGF0ZS1saXRlcmFsLWxleGljYWwtY29tcG9uZW50cykuXG4gICAqL1xuICB2YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbiAgdmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuICAvKiogVXNlZCB0byBtYXRjaCBMYXRpbiBVbmljb2RlIGxldHRlcnMgKGV4Y2x1ZGluZyBtYXRoZW1hdGljYWwgb3BlcmF0b3JzKS4gKi9cbiAgdmFyIHJlTGF0aW4gPSAvW1xceGMwLVxceGQ2XFx4ZDgtXFx4ZjZcXHhmOC1cXHhmZlxcdTAxMDAtXFx1MDE3Zl0vZztcblxuICAvKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG4gIHZhciByZU5vTWF0Y2ggPSAvKCReKS87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdW5lc2NhcGVkIGNoYXJhY3RlcnMgaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xuICB2YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xuICB2YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICAgIHJzRGluZ2JhdFJhbmdlID0gJ1xcXFx1MjcwMC1cXFxcdTI3YmYnLFxuICAgICAgcnNMb3dlclJhbmdlID0gJ2EtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZicsXG4gICAgICByc01hdGhPcFJhbmdlID0gJ1xcXFx4YWNcXFxceGIxXFxcXHhkN1xcXFx4ZjcnLFxuICAgICAgcnNOb25DaGFyUmFuZ2UgPSAnXFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmJyxcbiAgICAgIHJzUHVuY3R1YXRpb25SYW5nZSA9ICdcXFxcdTIwMDAtXFxcXHUyMDZmJyxcbiAgICAgIHJzU3BhY2VSYW5nZSA9ICcgXFxcXHRcXFxceDBiXFxcXGZcXFxceGEwXFxcXHVmZWZmXFxcXG5cXFxcclxcXFx1MjAyOFxcXFx1MjAyOVxcXFx1MTY4MFxcXFx1MTgwZVxcXFx1MjAwMFxcXFx1MjAwMVxcXFx1MjAwMlxcXFx1MjAwM1xcXFx1MjAwNFxcXFx1MjAwNVxcXFx1MjAwNlxcXFx1MjAwN1xcXFx1MjAwOFxcXFx1MjAwOVxcXFx1MjAwYVxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMCcsXG4gICAgICByc1VwcGVyUmFuZ2UgPSAnQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlJyxcbiAgICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJyxcbiAgICAgIHJzQnJlYWtSYW5nZSA9IHJzTWF0aE9wUmFuZ2UgKyByc05vbkNoYXJSYW5nZSArIHJzUHVuY3R1YXRpb25SYW5nZSArIHJzU3BhY2VSYW5nZTtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG4gIHZhciByc0Fwb3MgPSBcIlsnXFx1MjAxOV1cIixcbiAgICAgIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzQnJlYWsgPSAnWycgKyByc0JyZWFrUmFuZ2UgKyAnXScsXG4gICAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgICAgcnNEaWdpdHMgPSAnXFxcXGQrJyxcbiAgICAgIHJzRGluZ2JhdCA9ICdbJyArIHJzRGluZ2JhdFJhbmdlICsgJ10nLFxuICAgICAgcnNMb3dlciA9ICdbJyArIHJzTG93ZXJSYW5nZSArICddJyxcbiAgICAgIHJzTWlzYyA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgcnNCcmVha1JhbmdlICsgcnNEaWdpdHMgKyByc0RpbmdiYXRSYW5nZSArIHJzTG93ZXJSYW5nZSArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgICAgcnNVcHBlciA9ICdbJyArIHJzVXBwZXJSYW5nZSArICddJyxcbiAgICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG4gIHZhciByc01pc2NMb3dlciA9ICcoPzonICsgcnNMb3dlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICAgIHJzTWlzY1VwcGVyID0gJyg/OicgKyByc1VwcGVyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNPcHRDb250ckxvd2VyID0gJyg/OicgKyByc0Fwb3MgKyAnKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPycsXG4gICAgICByc09wdENvbnRyVXBwZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpEfExMfE18UkV8U3xUfFZFKSk/JyxcbiAgICAgIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgICAgcnNPcmRMb3dlciA9ICdcXFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXFxcZHRoKSg/PVxcXFxifFtBLVpfXSknLFxuICAgICAgcnNPcmRVcHBlciA9ICdcXFxcZCooPzoxU1R8Mk5EfDNSRHwoPyFbMTIzXSlcXFxcZFRIKSg/PVxcXFxifFthLXpfXSknLFxuICAgICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgICAgcnNFbW9qaSA9ICcoPzonICsgW3JzRGluZ2JhdCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNTZXEsXG4gICAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBhcG9zdHJvcGhlcy4gKi9cbiAgdmFyIHJlQXBvcyA9IFJlZ0V4cChyc0Fwb3MsICdnJyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKSBhbmRcbiAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzX2Zvcl9TeW1ib2xzKS5cbiAgICovXG4gIHZhciByZUNvbWJvTWFyayA9IFJlZ0V4cChyc0NvbWJvLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG4gIHZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBjb21wbGV4IG9yIGNvbXBvdW5kIHdvcmRzLiAqL1xuICB2YXIgcmVVbmljb2RlV29yZCA9IFJlZ0V4cChbXG4gICAgcnNVcHBlciArICc/JyArIHJzTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIgKyAnKD89JyArIFtyc0JyZWFrLCByc1VwcGVyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc01pc2NVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIgKyByc01pc2NMb3dlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gICAgcnNVcHBlciArICc/JyArIHJzTWlzY0xvd2VyICsgJysnICsgcnNPcHRDb250ckxvd2VyLFxuICAgIHJzVXBwZXIgKyAnKycgKyByc09wdENvbnRyVXBwZXIsXG4gICAgcnNPcmRVcHBlcixcbiAgICByc09yZExvd2VyLFxuICAgIHJzRGlnaXRzLFxuICAgIHJzRW1vamlcbiAgXS5qb2luKCd8JyksICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG4gIHZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHRoYXQgbmVlZCBhIG1vcmUgcm9idXN0IHJlZ2V4cCB0byBtYXRjaCB3b3Jkcy4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZVdvcmQgPSAvW2Etel1bQS1aXXxbQS1aXXsyLH1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87XG5cbiAgLyoqIFVzZWQgdG8gYXNzaWduIGRlZmF1bHQgYGNvbnRleHRgIG9iamVjdCBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgY29udGV4dFByb3BzID0gW1xuICAgICdBcnJheScsICdCdWZmZXInLCAnRGF0YVZpZXcnLCAnRGF0ZScsICdFcnJvcicsICdGbG9hdDMyQXJyYXknLCAnRmxvYXQ2NEFycmF5JyxcbiAgICAnRnVuY3Rpb24nLCAnSW50OEFycmF5JywgJ0ludDE2QXJyYXknLCAnSW50MzJBcnJheScsICdNYXAnLCAnTWF0aCcsICdPYmplY3QnLFxuICAgICdQcm9taXNlJywgJ1JlZ0V4cCcsICdTZXQnLCAnU3RyaW5nJywgJ1N5bWJvbCcsICdUeXBlRXJyb3InLCAnVWludDhBcnJheScsXG4gICAgJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ1VpbnQxNkFycmF5JywgJ1VpbnQzMkFycmF5JywgJ1dlYWtNYXAnLFxuICAgICdfJywgJ2NsZWFyVGltZW91dCcsICdpc0Zpbml0ZScsICdwYXJzZUludCcsICdzZXRUaW1lb3V0J1xuICBdO1xuXG4gIC8qKiBVc2VkIHRvIG1ha2UgdGVtcGxhdGUgc291cmNlVVJMcyBlYXNpZXIgdG8gaWRlbnRpZnkuICovXG4gIHZhciB0ZW1wbGF0ZUNvdW50ZXIgPSAtMTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG4gIHZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xuICB0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICB0eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbiAgdmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbiAgY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbiAgY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBMYXRpbiBVbmljb2RlIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy4gKi9cbiAgdmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgYmxvY2suXG4gICAgJ1xceGMwJzogJ0EnLCAgJ1xceGMxJzogJ0EnLCAnXFx4YzInOiAnQScsICdcXHhjMyc6ICdBJywgJ1xceGM0JzogJ0EnLCAnXFx4YzUnOiAnQScsXG4gICAgJ1xceGUwJzogJ2EnLCAgJ1xceGUxJzogJ2EnLCAnXFx4ZTInOiAnYScsICdcXHhlMyc6ICdhJywgJ1xceGU0JzogJ2EnLCAnXFx4ZTUnOiAnYScsXG4gICAgJ1xceGM3JzogJ0MnLCAgJ1xceGU3JzogJ2MnLFxuICAgICdcXHhkMCc6ICdEJywgICdcXHhmMCc6ICdkJyxcbiAgICAnXFx4YzgnOiAnRScsICAnXFx4YzknOiAnRScsICdcXHhjYSc6ICdFJywgJ1xceGNiJzogJ0UnLFxuICAgICdcXHhlOCc6ICdlJywgICdcXHhlOSc6ICdlJywgJ1xceGVhJzogJ2UnLCAnXFx4ZWInOiAnZScsXG4gICAgJ1xceGNjJzogJ0knLCAgJ1xceGNkJzogJ0knLCAnXFx4Y2UnOiAnSScsICdcXHhjZic6ICdJJyxcbiAgICAnXFx4ZWMnOiAnaScsICAnXFx4ZWQnOiAnaScsICdcXHhlZSc6ICdpJywgJ1xceGVmJzogJ2knLFxuICAgICdcXHhkMSc6ICdOJywgICdcXHhmMSc6ICduJyxcbiAgICAnXFx4ZDInOiAnTycsICAnXFx4ZDMnOiAnTycsICdcXHhkNCc6ICdPJywgJ1xceGQ1JzogJ08nLCAnXFx4ZDYnOiAnTycsICdcXHhkOCc6ICdPJyxcbiAgICAnXFx4ZjInOiAnbycsICAnXFx4ZjMnOiAnbycsICdcXHhmNCc6ICdvJywgJ1xceGY1JzogJ28nLCAnXFx4ZjYnOiAnbycsICdcXHhmOCc6ICdvJyxcbiAgICAnXFx4ZDknOiAnVScsICAnXFx4ZGEnOiAnVScsICdcXHhkYic6ICdVJywgJ1xceGRjJzogJ1UnLFxuICAgICdcXHhmOSc6ICd1JywgICdcXHhmYSc6ICd1JywgJ1xceGZiJzogJ3UnLCAnXFx4ZmMnOiAndScsXG4gICAgJ1xceGRkJzogJ1knLCAgJ1xceGZkJzogJ3knLCAnXFx4ZmYnOiAneScsXG4gICAgJ1xceGM2JzogJ0FlJywgJ1xceGU2JzogJ2FlJyxcbiAgICAnXFx4ZGUnOiAnVGgnLCAnXFx4ZmUnOiAndGgnLFxuICAgICdcXHhkZic6ICdzcycsXG4gICAgLy8gTGF0aW4gRXh0ZW5kZWQtQSBibG9jay5cbiAgICAnXFx1MDEwMCc6ICdBJywgICdcXHUwMTAyJzogJ0EnLCAnXFx1MDEwNCc6ICdBJyxcbiAgICAnXFx1MDEwMSc6ICdhJywgICdcXHUwMTAzJzogJ2EnLCAnXFx1MDEwNSc6ICdhJyxcbiAgICAnXFx1MDEwNic6ICdDJywgICdcXHUwMTA4JzogJ0MnLCAnXFx1MDEwYSc6ICdDJywgJ1xcdTAxMGMnOiAnQycsXG4gICAgJ1xcdTAxMDcnOiAnYycsICAnXFx1MDEwOSc6ICdjJywgJ1xcdTAxMGInOiAnYycsICdcXHUwMTBkJzogJ2MnLFxuICAgICdcXHUwMTBlJzogJ0QnLCAgJ1xcdTAxMTAnOiAnRCcsICdcXHUwMTBmJzogJ2QnLCAnXFx1MDExMSc6ICdkJyxcbiAgICAnXFx1MDExMic6ICdFJywgICdcXHUwMTE0JzogJ0UnLCAnXFx1MDExNic6ICdFJywgJ1xcdTAxMTgnOiAnRScsICdcXHUwMTFhJzogJ0UnLFxuICAgICdcXHUwMTEzJzogJ2UnLCAgJ1xcdTAxMTUnOiAnZScsICdcXHUwMTE3JzogJ2UnLCAnXFx1MDExOSc6ICdlJywgJ1xcdTAxMWInOiAnZScsXG4gICAgJ1xcdTAxMWMnOiAnRycsICAnXFx1MDExZSc6ICdHJywgJ1xcdTAxMjAnOiAnRycsICdcXHUwMTIyJzogJ0cnLFxuICAgICdcXHUwMTFkJzogJ2cnLCAgJ1xcdTAxMWYnOiAnZycsICdcXHUwMTIxJzogJ2cnLCAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDEyNCc6ICdIJywgICdcXHUwMTI2JzogJ0gnLCAnXFx1MDEyNSc6ICdoJywgJ1xcdTAxMjcnOiAnaCcsXG4gICAgJ1xcdTAxMjgnOiAnSScsICAnXFx1MDEyYSc6ICdJJywgJ1xcdTAxMmMnOiAnSScsICdcXHUwMTJlJzogJ0knLCAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDEyOSc6ICdpJywgICdcXHUwMTJiJzogJ2knLCAnXFx1MDEyZCc6ICdpJywgJ1xcdTAxMmYnOiAnaScsICdcXHUwMTMxJzogJ2knLFxuICAgICdcXHUwMTM0JzogJ0onLCAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxMzYnOiAnSycsICAnXFx1MDEzNyc6ICdrJywgJ1xcdTAxMzgnOiAnaycsXG4gICAgJ1xcdTAxMzknOiAnTCcsICAnXFx1MDEzYic6ICdMJywgJ1xcdTAxM2QnOiAnTCcsICdcXHUwMTNmJzogJ0wnLCAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDEzYSc6ICdsJywgICdcXHUwMTNjJzogJ2wnLCAnXFx1MDEzZSc6ICdsJywgJ1xcdTAxNDAnOiAnbCcsICdcXHUwMTQyJzogJ2wnLFxuICAgICdcXHUwMTQzJzogJ04nLCAgJ1xcdTAxNDUnOiAnTicsICdcXHUwMTQ3JzogJ04nLCAnXFx1MDE0YSc6ICdOJyxcbiAgICAnXFx1MDE0NCc6ICduJywgICdcXHUwMTQ2JzogJ24nLCAnXFx1MDE0OCc6ICduJywgJ1xcdTAxNGInOiAnbicsXG4gICAgJ1xcdTAxNGMnOiAnTycsICAnXFx1MDE0ZSc6ICdPJywgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxNGQnOiAnbycsICAnXFx1MDE0Zic6ICdvJywgJ1xcdTAxNTEnOiAnbycsXG4gICAgJ1xcdTAxNTQnOiAnUicsICAnXFx1MDE1Nic6ICdSJywgJ1xcdTAxNTgnOiAnUicsXG4gICAgJ1xcdTAxNTUnOiAncicsICAnXFx1MDE1Nyc6ICdyJywgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAxNWEnOiAnUycsICAnXFx1MDE1Yyc6ICdTJywgJ1xcdTAxNWUnOiAnUycsICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUwMTViJzogJ3MnLCAgJ1xcdTAxNWQnOiAncycsICdcXHUwMTVmJzogJ3MnLCAnXFx1MDE2MSc6ICdzJyxcbiAgICAnXFx1MDE2Mic6ICdUJywgICdcXHUwMTY0JzogJ1QnLCAnXFx1MDE2Nic6ICdUJyxcbiAgICAnXFx1MDE2Myc6ICd0JywgICdcXHUwMTY1JzogJ3QnLCAnXFx1MDE2Nyc6ICd0JyxcbiAgICAnXFx1MDE2OCc6ICdVJywgICdcXHUwMTZhJzogJ1UnLCAnXFx1MDE2Yyc6ICdVJywgJ1xcdTAxNmUnOiAnVScsICdcXHUwMTcwJzogJ1UnLCAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MDE2OSc6ICd1JywgICdcXHUwMTZiJzogJ3UnLCAnXFx1MDE2ZCc6ICd1JywgJ1xcdTAxNmYnOiAndScsICdcXHUwMTcxJzogJ3UnLCAnXFx1MDE3Myc6ICd1JyxcbiAgICAnXFx1MDE3NCc6ICdXJywgICdcXHUwMTc1JzogJ3cnLFxuICAgICdcXHUwMTc2JzogJ1knLCAgJ1xcdTAxNzcnOiAneScsICdcXHUwMTc4JzogJ1knLFxuICAgICdcXHUwMTc5JzogJ1onLCAgJ1xcdTAxN2InOiAnWicsICdcXHUwMTdkJzogJ1onLFxuICAgICdcXHUwMTdhJzogJ3onLCAgJ1xcdTAxN2MnOiAneicsICdcXHUwMTdlJzogJ3onLFxuICAgICdcXHUwMTMyJzogJ0lKJywgJ1xcdTAxMzMnOiAnaWonLFxuICAgICdcXHUwMTUyJzogJ09lJywgJ1xcdTAxNTMnOiAnb2UnLFxuICAgICdcXHUwMTQ5JzogXCInblwiLCAnXFx1MDE3Zic6ICdzJ1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG4gIHZhciBodG1sRXNjYXBlcyA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgaHRtbFVuZXNjYXBlcyA9IHtcbiAgICAnJmFtcDsnOiAnJicsXG4gICAgJyZsdDsnOiAnPCcsXG4gICAgJyZndDsnOiAnPicsXG4gICAgJyZxdW90Oyc6ICdcIicsXG4gICAgJyYjMzk7JzogXCInXCJcbiAgfTtcblxuICAvKiogVXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xccic6ICdyJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbiAgdmFyIGZyZWVQYXJzZUZsb2F0ID0gcGFyc2VGbG9hdCxcbiAgICAgIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xuICB2YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuICAvKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbiAgdmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbiAgdmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbiAgdmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuICAvKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xuICB2YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbiAgLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG4gIHZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgICAgaWYgKHR5cGVzKSB7XG4gICAgICAgIHJldHVybiB0eXBlcztcbiAgICAgIH1cblxuICAgICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9KCkpO1xuXG4gIC8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG4gIHZhciBub2RlSXNBcnJheUJ1ZmZlciA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzQXJyYXlCdWZmZXIsXG4gICAgICBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlLFxuICAgICAgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXAsXG4gICAgICBub2RlSXNSZWdFeHAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1JlZ0V4cCxcbiAgICAgIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0LFxuICAgICAgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUFnZ3JlZ2F0b3JgIGZvciBhcnJheXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5QWdncmVnYXRvcihhcnJheSwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2hSaWdodChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZXZlcnlgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RXZlcnkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoIXByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2VSaWdodChhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbLS1sZW5ndGhdO1xuICAgIH1cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIHZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhbiBBU0NJSSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZUFzY2lpV29yZCkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmZpbmRLZXlgIGFuZCBgXy5maW5kTGFzdEtleWAsXG4gICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmBcbiAgICogdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZm91bmQgZWxlbWVudCBvciBpdHMga2V5LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBlYWNoRnVuYykge1xuICAgIHZhciByZXN1bHQ7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXN1bHQgPSBrZXk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlSW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2ZXaXRoKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVhbmAgYW5kIGBfLm1lYW5CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZU1lYW4oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyAoYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIC8gbGVuZ3RoKSA6IE5BTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eU9mYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHlPZihvYmplY3QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICAgKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaW5pdEFjY3VtXG4gICAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICAgKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gICAqIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc3VtYCBhbmQgYF8uc3VtQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgcmVzdWx0LFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBpdGVyYXRlZShhcnJheVtpbmRleF0pO1xuICAgICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGN1cnJlbnQgOiAocmVzdWx0ICsgY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICAgKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvUGFpcnNgIGFuZCBgXy50b1BhaXJzSW5gIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXlcbiAgICogb2Yga2V5LXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRvUGFpcnMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gW2tleSwgb2JqZWN0W2tleV1dO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBrZXkgPT0gJ19fcHJvdG9fXydcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gICAgICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgICAgIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmRlbGF5YCBhbmQgYF8uZGVmZXJgIHdoaWNoIGFjY2VwdHMgYGFyZ3NgXG4gICAgICogdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGVsYXkoZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsgfSwgd2FpdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPT0gbnVsbCA/IHZhbHVlIDogaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlc0luZGV4ID0gdmFsdWVzTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hSaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2hSaWdodCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd25SaWdodCwgdHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ldmVyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFdmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9ICEhcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gICAgICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsbGAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gbGVuZ3RoKSA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVuZCA9IHN0YXJ0ID4gZW5kID8gMCA6IHRvTGVuZ3RoKGVuZCk7XG4gICAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcbiAgICAgICAgYXJyYXlbc3RhcnQrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gICAgICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICAgICAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUZvcmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzXG4gICAgICogaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yUmlnaHQgPSBjcmVhdGVCYXNlRm9yKHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93blJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JSaWdodChvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mdW5jdGlvbnNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBgb2JqZWN0YCBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmaWx0ZXJlZCBmcm9tIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCwgcHJvcHMpIHtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iamVjdFtrZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gICAgICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICAgIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICAgIH1cbiAgICAgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICAgICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pblJhbmdlYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBudW1iZXIgPj0gbmF0aXZlTWluKHN0YXJ0LCBlbmQpICYmIG51bWJlciA8IG5hdGl2ZU1heChzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHNoYXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5jbHVkZXMgPSBjb21wYXJhdG9yID8gYXJyYXlJbmNsdWRlc1dpdGggOiBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aCxcbiAgICAgICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAob3RoSW5kZXggJiYgaXRlcmF0ZWUpIHtcbiAgICAgICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXhMZW5ndGggPSBuYXRpdmVNaW4oYXJyYXkubGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgICAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgcmVzdWx0Lmxlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmICghKHNlZW5cbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhyZXN1bHQsIGNvbXB1dGVkLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgtLW90aEluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgICAgID8gY2FjaGVIYXMoY2FjaGUsIGNvbXB1dGVkKVxuICAgICAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludmVydGAgYW5kIGBfLmludmVydEJ5YCB3aGljaCBpbnZlcnRzXG4gICAgICogYG9iamVjdGAgd2l0aCB2YWx1ZXMgdHJhbnNmb3JtZWQgYnkgYGl0ZXJhdGVlYCBhbmQgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0gdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCBpdGVyYXRlZSh2YWx1ZSksIGtleSwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludm9rZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogbWV0aG9kIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgdmFyIGZ1bmMgPSBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYXBwbHkoZnVuYywgb2JqZWN0LCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcnJheUJ1ZmZlclRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gZGF0ZVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gICAgICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gICAgICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICAgICAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gICAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICAgICAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICAgICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgICAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICAgICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzU2FtZVRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICAgICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSByZWdleHBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICAgICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gICAgICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgICAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCAoc3JjSW5kZXggJiYgaXNGdW5jdGlvbihvYmpWYWx1ZSkpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMubGVuZ3RoID8gaXRlcmF0ZWVzIDogW2lkZW50aXR5XSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgICAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICogc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4T2YgPSBjb21wYXJhdG9yID8gYmFzZUluZGV4T2ZXaXRoIDogYmFzZUluZGV4T2YsXG4gICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHNlZW4gPSBhcnJheTtcblxuICAgICAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICAgICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSBhcnJheSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXMgVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBpbmRleCwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93ZXIgVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcikge1xuICAgICAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAgICAgKiBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ICs9IHN0ZXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLCBuKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAoIXN0cmluZyB8fCBuIDwgMSB8fCBuID4gTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgLy8gTGV2ZXJhZ2UgdGhlIGV4cG9uZW50aWF0aW9uIGJ5IHNxdWFyaW5nIGFsZ29yaXRobSBmb3IgYSBmYXN0ZXIgcmVwZWF0LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWF0aW9uX2J5X3NxdWFyaW5nIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuICUgMikge1xuICAgICAgICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbiA9IG5hdGl2ZUZsb29yKG4gLyAyKTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICBzdHJpbmcgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlU2l6ZWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuKSB7XG4gICAgICB2YXIgYXJyYXkgPSB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gICAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkge1xuICAgICAgbWV0YU1hcC5zZXQoZnVuYywgZGF0YSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zaHVmZmxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgICAgIHN0YXJ0ID4+Pj0gMDtcblxuICAgICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvbWVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gIXJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4YCB3aGljaFxuICAgICAqIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBvZiBgYXJyYXlgIHRvIGRldGVybWluZSB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gbG93IDogYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkge1xuICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgIHZhciBtaWQgPSAobG93ICsgaGlnaCkgPj4+IDEsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTtcblxuICAgICAgICAgIGlmIChjb21wdXRlZCAhPT0gbnVsbCAmJiAhaXNTeW1ib2woY29tcHV0ZWQpICYmXG4gICAgICAgICAgICAgIChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWdoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4QnlgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhCeWBcbiAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgKiB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHZhbElzTmFOID0gdmFsdWUgIT09IHZhbHVlLFxuICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpLFxuICAgICAgICAgIHZhbElzVW5kZWZpbmVkID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgdmFyIG1pZCA9IG5hdGl2ZUZsb29yKChsb3cgKyBoaWdoKSAvIDIpLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZShhcnJheVttaWRdKSxcbiAgICAgICAgICAgIG90aElzRGVmaW5lZCA9IGNvbXB1dGVkICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBjb21wdXRlZCA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gY29tcHV0ZWQgPT09IGNvbXB1dGVkLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChjb21wdXRlZCk7XG5cbiAgICAgICAgaWYgKHZhbElzTmFOKSB7XG4gICAgICAgICAgdmFyIHNldExvdyA9IHJldEhpZ2hlc3QgfHwgb3RoSXNSZWZsZXhpdmU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNVbmRlZmluZWQpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiAocmV0SGlnaGVzdCB8fCBvdGhJc0RlZmluZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzTnVsbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNOdWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAhb3RoSXNOdWxsICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc1N5bWJvbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3RoSXNOdWxsIHx8IG90aElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0TG93ID0gcmV0SGlnaGVzdCA/IChjb21wdXRlZCA8PSB2YWx1ZSkgOiAoY29tcHV0ZWQgPCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldExvdykge1xuICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZU1pbihoaWdoLCBNQVhfQVJSQVlfSU5ERVgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZFVuaXFgIGFuZCBgXy5zb3J0ZWRVbmlxQnlgIHdpdGhvdXRcbiAgICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIGlmICghaW5kZXggfHwgIWVxKGNvbXB1dGVkLCBzZWVuKSkge1xuICAgICAgICAgIHZhciBzZWVuID0gY29tcHV0ZWQ7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9OdW1iZXJgIHdoaWNoIGRvZXNuJ3QgZW5zdXJlIGNvcnJlY3RcbiAgICAgKiBjb252ZXJzaW9ucyBvZiBiaW5hcnksIGhleGFkZWNpbWFsLCBvciBvY3RhbCBzdHJpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgcmV0dXJuICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAgICAgKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuaXFCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoc2VlbltzZWVuSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHNlZW4sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHByb3BlcnR5IHBhdGggdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCB8fCBkZWxldGUgb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51cGRhdGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1cGRhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHJldHVybiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdXBkYXRlcihiYXNlR2V0KG9iamVjdCwgcGF0aCkpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZHJvcFdoaWxlYCBhbmQgYF8udGFrZVdoaWxlYFxuICAgICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRHJvcF0gU3BlY2lmeSBkcm9wcGluZyBlbGVtZW50cyBpbnN0ZWFkIG9mIHRha2luZyB0aGVtLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV2hpbGUoYXJyYXksIHByZWRpY2F0ZSwgaXNEcm9wLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMTtcblxuICAgICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkgJiZcbiAgICAgICAgcHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge31cblxuICAgICAgcmV0dXJuIGlzRHJvcFxuICAgICAgICA/IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IDAgOiBpbmRleCksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiBsZW5ndGgpKVxuICAgICAgICA6IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IDApLCAoZnJvbVJpZ2h0ID8gbGVuZ3RoIDogaW5kZXgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgd3JhcHBlclZhbHVlYCB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2ZcbiAgICAgKiBwZXJmb3JtaW5nIGEgc2VxdWVuY2Ugb2YgYWN0aW9ucyBvbiB0aGUgdW53cmFwcGVkIGB2YWx1ZWAsIHdoZXJlIGVhY2hcbiAgICAgKiBzdWNjZXNzaXZlIGFjdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFjdGlvbnMgQWN0aW9ucyB0byBwZXJmb3JtIHRvIHJlc29sdmUgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdyYXBwZXJWYWx1ZSh2YWx1ZSwgYWN0aW9ucykge1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC52YWx1ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKGFjdGlvbnMsIGZ1bmN0aW9uKHJlc3VsdCwgYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb24uZnVuYy5hcHBseShhY3Rpb24udGhpc0FyZywgYXJyYXlQdXNoKFtyZXN1bHRdLCBhY3Rpb24uYXJncykpO1xuICAgICAgfSwgcmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ueG9yYCwgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWG9yKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VVbmlxKGFycmF5c1swXSkgOiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tpbmRleF0sXG4gICAgICAgICAgICBvdGhJbmRleCA9IC0xO1xuXG4gICAgICAgIHdoaWxlICgrK290aEluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKG90aEluZGV4ICE9IGluZGV4KSB7XG4gICAgICAgICAgICByZXN1bHRbaW5kZXhdID0gYmFzZURpZmZlcmVuY2UocmVzdWx0W2luZGV4XSB8fCBhcnJheSwgYXJyYXlzW290aEluZGV4XSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKHJlc3VsdCwgMSksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uemlwT2JqZWN0YCB3aGljaCBhc3NpZ25zIHZhbHVlcyB1c2luZyBgYXNzaWduRnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGFzc2lnbkZ1bmMocmVzdWx0LCBwcm9wc1tpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhbiBlbXB0eSBhcnJheSBpZiBpdCdzIG5vdCBhbiBhcnJheSBsaWtlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgYGJhc2VSZXN0YCBhbGlhcyB3aGljaCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBgaWRlbnRpdHlgIGJ5IG1vZHVsZVxuICAgICAqIHJlcGxhY2VtZW50IHBsdWdpbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIHZhciBjYXN0UmVzdCA9IGJhc2VSZXN0O1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYGFycmF5YCB0byBhIHNsaWNlIGlmIGl0J3MgbmVlZGVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3Qgc2xpY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQ7XG4gICAgICByZXR1cm4gKCFzdGFydCAmJiBlbmQgPj0gbGVuZ3RoKSA/IGFycmF5IDogYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgY2xlYXJUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vY2xlYXJUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ8T2JqZWN0fSBpZCBUaGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3Qgb2YgdGhlIHRpbWVyIHRvIGNsZWFyLlxuICAgICAqL1xuICAgIHZhciBjbGVhclRpbWVvdXQgPSBjdHhDbGVhclRpbWVvdXQgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICAgIHJldHVybiByb290LmNsZWFyVGltZW91dChpZCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICBidWZmZXIuY29weShyZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gICAgICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB2YWx1ZXMgdG8gc29ydCB0aGVtIGluIGFzY2VuZGluZyBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBc2NlbmRpbmcodmFsdWUsIG90aGVyKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgICAgIHZhciB2YWxJc0RlZmluZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpO1xuXG4gICAgICAgIHZhciBvdGhJc0RlZmluZWQgPSBvdGhlciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IG90aGVyID09PSBvdGhlcixcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2wob3RoZXIpO1xuXG4gICAgICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICAgICAodmFsSXNTeW1ib2wgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlICYmICFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sKSB8fFxuICAgICAgICAgICAgKHZhbElzTnVsbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICF2YWxJc1JlZmxleGl2ZSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wgJiYgIW90aElzU3ltYm9sICYmIHZhbHVlIDwgb3RoZXIpIHx8XG4gICAgICAgICAgICAob3RoSXNTeW1ib2wgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlICYmICF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sKSB8fFxuICAgICAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAoIW90aElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICFvdGhJc1JlZmxleGl2ZSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gICAgICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gICAgICpcbiAgICAgKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICAgICAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAgICAgKiBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgICAgIGxlbmd0aCA9IG9iakNyaXRlcmlhLmxlbmd0aCxcbiAgICAgICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY29tcGFyZUFzY2VuZGluZyhvYmpDcml0ZXJpYVtpbmRleF0sIG90aENyaXRlcmlhW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgICAgIHJldHVybiByZXN1bHQgKiAob3JkZXIgPT0gJ2Rlc2MnID8gLTEgOiAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRml4ZXMgYW4gYEFycmF5I3NvcnRgIGJ1ZyBpbiB0aGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIGFwcGxpY2F0aW9uc1xuICAgICAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgICAgIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIC8vXG4gICAgICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTkwIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMsXG4gICAgICogcGxhY2Vob2xkZXJzLCBhbmQgcHJvdmlkZWQgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgYXJyYXkgb2YgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJncyhhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgIHJhbmdlTGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3NMZW5ndGggLSBob2xkZXJzTGVuZ3RoLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZWZ0TGVuZ3RoICsgcmFuZ2VMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4XSA9IHBhcnRpYWxzW2xlZnRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W2hvbGRlcnNbYXJnc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChyYW5nZUxlbmd0aC0tKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXgrK10gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBjb21wb3NlQXJnc2AgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50cyBjb21wb3NpdGlvblxuICAgICAqIGlzIHRhaWxvcmVkIGZvciBgXy5wYXJ0aWFsUmlnaHRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzSW5kZXggPSAtMSxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgcmlnaHRJbmRleCA9IC0xLFxuICAgICAgICAgIHJpZ2h0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgIHJhbmdlTGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3NMZW5ndGggLSBob2xkZXJzTGVuZ3RoLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShyYW5nZUxlbmd0aCArIHJpZ2h0TGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IHJhbmdlTGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFthcmdzSW5kZXhdID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgfVxuICAgICAgdmFyIG9mZnNldCA9IGFyZ3NJbmRleDtcbiAgICAgIHdoaWxlICgrK3JpZ2h0SW5kZXggPCByaWdodExlbmd0aCkge1xuICAgICAgICByZXN1bHRbb2Zmc2V0ICsgcmlnaHRJbmRleF0gPSBwYXJ0aWFsc1tyaWdodEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2hvbGRlcnNJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbb2Zmc2V0ICsgaG9sZGVyc1tob2xkZXJzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICAgICAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgICAgIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05ldykge1xuICAgICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5ncm91cEJ5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpbml0aWFsaXplcl0gVGhlIGFjY3VtdWxhdG9yIG9iamVjdCBpbml0aWFsaXplci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhZ2dyZWdhdG9yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFnZ3JlZ2F0b3Ioc2V0dGVyLCBpbml0aWFsaXplcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5QWdncmVnYXRvciA6IGJhc2VBZ2dyZWdhdG9yLFxuICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBpbml0aWFsaXplciA/IGluaXRpYWxpemVyKCkgOiB7fTtcblxuICAgICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBzZXR0ZXIsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYWNjdW11bGF0b3IpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICAgICAgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgb3B0aW9uYWwgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiBgdGhpc0FyZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKSB7XG4gICAgICB2YXIgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkoaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5sb3dlckZpcnN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBTdHJpbmdgIGNhc2UgbWV0aG9kIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNhc2VGaXJzdChtZXRob2ROYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG5cbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgICAgICA/IHN0cmluZ1RvQXJyYXkoc3RyaW5nKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHZhciBjaHIgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBzdHJTeW1ib2xzWzBdXG4gICAgICAgICAgOiBzdHJpbmcuY2hhckF0KDApO1xuXG4gICAgICAgIHZhciB0cmFpbGluZyA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAxKS5qb2luKCcnKVxuICAgICAgICAgIDogc3RyaW5nLnNsaWNlKDEpO1xuXG4gICAgICAgIHJldHVybiBjaHJbbWV0aG9kTmFtZV0oKSArIHRyYWlsaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5jYW1lbENhc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY29tYmluZSBlYWNoIHdvcmQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG91bmRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDb21wb3VuZGVyKGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBhcnJheVJlZHVjZSh3b3JkcyhkZWJ1cnIoc3RyaW5nKS5yZXBsYWNlKHJlQXBvcywgJycpKSwgY2FsbGJhY2ssICcnKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgYW4gaW5zdGFuY2Ugb2YgYEN0b3JgIHJlZ2FyZGxlc3Mgb2ZcbiAgICAgKiB3aGV0aGVyIGl0IHdhcyBpbnZva2VkIGFzIHBhcnQgb2YgYSBgbmV3YCBleHByZXNzaW9uIG9yIGJ5IGBjYWxsYCBvciBgYXBwbHlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDdG9yIFRoZSBjb25zdHJ1Y3RvciB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3RvcihDdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIFVzZSBhIGBzd2l0Y2hgIHN0YXRlbWVudCB0byB3b3JrIHdpdGggY2xhc3MgY29uc3RydWN0b3JzLiBTZWVcbiAgICAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNhbGwtdGhpc2FyZ3VtZW50LWFyZ3VtZW50c2xpc3RcbiAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQ3RvcjtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdKTtcbiAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdKTtcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdKTtcbiAgICAgICAgICBjYXNlIDc6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdLCBhcmdzWzZdKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBiYXNlQ3JlYXRlKEN0b3IucHJvdG90eXBlKSxcbiAgICAgICAgICAgIHJlc3VsdCA9IEN0b3IuYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuXG4gICAgICAgIC8vIE1pbWljIHRoZSBjb25zdHJ1Y3RvcidzIGByZXR1cm5gIGJlaGF2aW9yLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTMuMi4yIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogdGhpc0JpbmRpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBlbmFibGUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXJpdHkgVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KSB7XG4gICAgICB2YXIgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gZ2V0SG9sZGVyKHdyYXBwZXIpO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHZhciBob2xkZXJzID0gKGxlbmd0aCA8IDMgJiYgYXJnc1swXSAhPT0gcGxhY2Vob2xkZXIgJiYgYXJnc1tsZW5ndGggLSAxXSAhPT0gcGxhY2Vob2xkZXIpXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuXG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA8IGFyaXR5KSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3VycnkoXG4gICAgICAgICAgICBmdW5jLCBiaXRtYXNrLCBjcmVhdGVIeWJyaWQsIHdyYXBwZXIucGxhY2Vob2xkZXIsIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGFyZ3MsIGhvbGRlcnMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSAtIGxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCB0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbmRJbmRleEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gaW5kZXguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgICB2YXIgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICB2YXIgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgICAgIHByZWRpY2F0ZSA9IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSk7IH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgICAgIHJldHVybiBpbmRleCA+IC0xID8gaXRlcmFibGVbaXRlcmF0ZWUgPyBjb2xsZWN0aW9uW2luZGV4XSA6IGluZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZsb3dgIG9yIGBfLmZsb3dSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsb3cgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmxvdyhmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihmdW5jcykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gZnVuY3MubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwcmVyZXEgPSBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZS50aHJ1O1xuXG4gICAgICAgIGlmIChmcm9tUmlnaHQpIHtcbiAgICAgICAgICBmdW5jcy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICB2YXIgZnVuYyA9IGZ1bmNzW2luZGV4XTtcbiAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJlcmVxICYmICF3cmFwcGVyICYmIGdldEZ1bmNOYW1lKGZ1bmMpID09ICd3cmFwcGVyJykge1xuICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBuZXcgTG9kYXNoV3JhcHBlcihbXSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gd3JhcHBlciA/IGluZGV4IDogbGVuZ3RoO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGZ1bmMgPSBmdW5jc1tpbmRleF07XG5cbiAgICAgICAgICB2YXIgZnVuY05hbWUgPSBnZXRGdW5jTmFtZShmdW5jKSxcbiAgICAgICAgICAgICAgZGF0YSA9IGZ1bmNOYW1lID09ICd3cmFwcGVyJyA/IGdldERhdGEoZnVuYykgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoZGF0YSAmJiBpc0xhemlhYmxlKGRhdGFbMF0pICYmXG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSAmJlxuICAgICAgICAgICAgICAgICFkYXRhWzRdLmxlbmd0aCAmJiBkYXRhWzldID09IDFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gd3JhcHBlcltnZXRGdW5jTmFtZShkYXRhWzBdKV0uYXBwbHkod3JhcHBlciwgZGF0YVszXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSAoZnVuYy5sZW5ndGggPT0gMSAmJiBpc0xhemlhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICA/IHdyYXBwZXJbZnVuY05hbWVdKClcbiAgICAgICAgICAgICAgOiB3cmFwcGVyLnRocnUoZnVuYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgICAgdmFsdWUgPSBhcmdzWzBdO1xuXG4gICAgICAgICAgaWYgKHdyYXBwZXIgJiYgYXJncy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIucGxhbnQodmFsdWUpLnZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGxlbmd0aCA/IGZ1bmNzW2luZGV4XS5hcHBseSh0aGlzLCBhcmdzKSA6IHZhbHVlO1xuXG4gICAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmNzW2luZGV4XS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggb3B0aW9uYWwgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiBgdGhpc0FyZ2AsIHBhcnRpYWwgYXBwbGljYXRpb24sIGFuZCBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzUmlnaHRdIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkXG4gICAgICogIHRvIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNSaWdodF0gVGhlIGBwYXJ0aWFsc1JpZ2h0YCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUh5YnJpZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0FyeSA9IGJpdG1hc2sgJiBXUkFQX0FSWV9GTEFHLFxuICAgICAgICAgIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHLFxuICAgICAgICAgIGlzQ3VycmllZCA9IGJpdG1hc2sgJiAoV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSxcbiAgICAgICAgICBpc0ZsaXAgPSBiaXRtYXNrICYgV1JBUF9GTElQX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDdXJyaWVkKSB7XG4gICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gZ2V0SG9sZGVyKHdyYXBwZXIpLFxuICAgICAgICAgICAgICBob2xkZXJzQ291bnQgPSBjb3VudEhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFscykge1xuICAgICAgICAgIGFyZ3MgPSBjb21wb3NlQXJncyhhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHNSaWdodCkge1xuICAgICAgICAgIGFyZ3MgPSBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgaXNDdXJyaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBsZW5ndGggLT0gaG9sZGVyc0NvdW50O1xuICAgICAgICBpZiAoaXNDdXJyaWVkICYmIGxlbmd0aCA8IGFyaXR5KSB7XG4gICAgICAgICAgdmFyIG5ld0hvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3VycnkoXG4gICAgICAgICAgICBmdW5jLCBiaXRtYXNrLCBjcmVhdGVIeWJyaWQsIHdyYXBwZXIucGxhY2Vob2xkZXIsIHRoaXNBcmcsXG4gICAgICAgICAgICBhcmdzLCBuZXdIb2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkgLSBsZW5ndGhcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLFxuICAgICAgICAgICAgZm4gPSBpc0JpbmRLZXkgPyB0aGlzQmluZGluZ1tmdW5jXSA6IGZ1bmM7XG5cbiAgICAgICAgbGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gICAgICAgIGlmIChhcmdQb3MpIHtcbiAgICAgICAgICBhcmdzID0gcmVvcmRlcihhcmdzLCBhcmdQb3MpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRmxpcCAmJiBsZW5ndGggPiAxKSB7XG4gICAgICAgICAgYXJncy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJ5ICYmIGFyeSA8IGxlbmd0aCkge1xuICAgICAgICAgIGFyZ3MubGVuZ3RoID0gYXJ5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpIHtcbiAgICAgICAgICBmbiA9IEN0b3IgfHwgY3JlYXRlQ3Rvcihmbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmludmVydEJ5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRvSXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludmVydGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmVydGVyKHNldHRlciwgdG9JdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgdG9JdGVyYXRlZShpdGVyYXRlZSksIHt9KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSB1c2VkIGZvciBgdW5kZWZpbmVkYCBhcmd1bWVudHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVNYXRoT3BlcmF0aW9uKG9wZXJhdG9yLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgb3RoZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9TdHJpbmcob3RoZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb051bWJlcihvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ub3ZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFycmF5RnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBvdmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU92ZXIoYXJyYXlGdW5jKSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oaXRlcmF0ZWVzKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICB2YXIgdGhpc0FyZyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIGFycmF5RnVuYyhpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkoaXRlcmF0ZWUsIHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgIGJhc2VkIG9uIGBsZW5ndGhgLiBUaGUgYGNoYXJzYCBzdHJpbmdcbiAgICAgKiBpcyB0cnVuY2F0ZWQgaWYgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGV4Y2VlZHMgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWRkaW5nKGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIGNoYXJzID0gY2hhcnMgPT09IHVuZGVmaW5lZCA/ICcgJyA6IGJhc2VUb1N0cmluZyhjaGFycyk7XG5cbiAgICAgIHZhciBjaGFyc0xlbmd0aCA9IGNoYXJzLmxlbmd0aDtcbiAgICAgIGlmIChjaGFyc0xlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJzTGVuZ3RoID8gYmFzZVJlcGVhdChjaGFycywgbGVuZ3RoKSA6IGNoYXJzO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VSZXBlYXQoY2hhcnMsIG5hdGl2ZUNlaWwobGVuZ3RoIC8gc3RyaW5nU2l6ZShjaGFycykpKTtcbiAgICAgIHJldHVybiBoYXNVbmljb2RlKGNoYXJzKVxuICAgICAgICA/IGNhc3RTbGljZShzdHJpbmdUb0FycmF5KHJlc3VsdCksIDAsIGxlbmd0aCkuam9pbignJylcbiAgICAgICAgOiByZXN1bHQuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nXG4gICAgICogb2YgYHRoaXNBcmdgIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZWZ0TGVuZ3RoICsgYXJnc0xlbmd0aCksXG4gICAgICAgICAgICBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG5cbiAgICAgICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgICAgIGFyZ3NbbGVmdEluZGV4XSA9IHBhcnRpYWxzW2xlZnRJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGFyZ3NMZW5ndGgtLSkge1xuICAgICAgICAgIGFyZ3NbbGVmdEluZGV4KytdID0gYXJndW1lbnRzWysrYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICAgICAgaWYgKHN0ZXAgJiYgdHlwZW9mIHN0ZXAgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RhcnQsIGVuZCwgc3RlcCkpIHtcbiAgICAgICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgICAgIHJldHVybiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSByZWxhdGlvbmFsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlbGF0aW9uYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24ob3BlcmF0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgICAgaWYgKCEodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnICYmIHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICBvdGhlciA9IHRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGNvbnRpbnVlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgYGZ1bmNgIHdyYXBwZXIuXG4gICAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlY3VycnkoZnVuYywgYml0bWFzaywgd3JhcEZ1bmMsIHBsYWNlaG9sZGVyLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNDdXJyeSA9IGJpdG1hc2sgJiBXUkFQX0NVUlJZX0ZMQUcsXG4gICAgICAgICAgbmV3SG9sZGVycyA9IGlzQ3VycnkgPyBob2xkZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIG5ld0hvbGRlcnNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBob2xkZXJzLFxuICAgICAgICAgIG5ld1BhcnRpYWxzID0gaXNDdXJyeSA/IHBhcnRpYWxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIG5ld1BhcnRpYWxzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogcGFydGlhbHM7XG5cbiAgICAgIGJpdG1hc2sgfD0gKGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfRkxBRyA6IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKTtcbiAgICAgIGJpdG1hc2sgJj0gfihpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcgOiBXUkFQX1BBUlRJQUxfRkxBRyk7XG5cbiAgICAgIGlmICghKGJpdG1hc2sgJiBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyk7XG4gICAgICB9XG4gICAgICB2YXIgbmV3RGF0YSA9IFtcbiAgICAgICAgZnVuYywgYml0bWFzaywgdGhpc0FyZywgbmV3UGFydGlhbHMsIG5ld0hvbGRlcnMsIG5ld1BhcnRpYWxzUmlnaHQsXG4gICAgICAgIG5ld0hvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5XG4gICAgICBdO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gd3JhcEZ1bmMuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcbiAgICAgIGlmIChpc0xhemlhYmxlKGZ1bmMpKSB7XG4gICAgICAgIHNldERhdGEocmVzdWx0LCBuZXdEYXRhKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHNldFdyYXBUb1N0cmluZyhyZXN1bHQsIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLnJvdW5kYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBNYXRoYCBtZXRob2QgdG8gdXNlIHdoZW4gcm91bmRpbmcuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcm91bmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUm91bmQobWV0aG9kTmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBNYXRoW21ldGhvZE5hbWVdO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG51bWJlciwgcHJlY2lzaW9uKSB7XG4gICAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIHByZWNpc2lvbiA9IHByZWNpc2lvbiA9PSBudWxsID8gMCA6IG5hdGl2ZU1pbih0b0ludGVnZXIocHJlY2lzaW9uKSwgMjkyKTtcbiAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gICAgICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gICAgICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgICAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgICAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmXG4gICAgICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCB1bmRlZmluZWQsIGZsYXR0ZW4pLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0luLCBnZXRTeW1ib2xzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGdldERhdGEgPSAhbWV0YU1hcCA/IG5vb3AgOiBmdW5jdGlvbihmdW5jKSB7XG4gICAgICByZXR1cm4gbWV0YU1hcC5nZXQoZnVuYyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5hbWUgb2YgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEZ1bmNOYW1lKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSAoZnVuYy5uYW1lICsgJycpLFxuICAgICAgICAgIGFycmF5ID0gcmVhbE5hbWVzW3Jlc3VsdF0sXG4gICAgICAgICAgbGVuZ3RoID0gaGFzT3duUHJvcGVydHkuY2FsbChyZWFsTmFtZXMsIHJlc3VsdCkgPyBhcnJheS5sZW5ndGggOiAwO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBhcnJheVtsZW5ndGhdLFxuICAgICAgICAgICAgb3RoZXJGdW5jID0gZGF0YS5mdW5jO1xuICAgICAgICBpZiAob3RoZXJGdW5jID09IG51bGwgfHwgb3RoZXJGdW5jID09IGZ1bmMpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YS5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFyZ3VtZW50IHBsYWNlaG9sZGVyIHZhbHVlIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEhvbGRlcihmdW5jKSB7XG4gICAgICB2YXIgb2JqZWN0ID0gaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gsICdwbGFjZWhvbGRlcicpID8gbG9kYXNoIDogZnVuYztcbiAgICAgIHJldHVybiBvYmplY3QucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXBwcm9wcmlhdGUgXCJpdGVyYXRlZVwiIGZ1bmN0aW9uLiBJZiBgXy5pdGVyYXRlZWAgaXMgY3VzdG9taXplZCxcbiAgICAgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1c3RvbSBtZXRob2QsIG90aGVyd2lzZSBpdCByZXR1cm5zIGBiYXNlSXRlcmF0ZWVgLlxuICAgICAqIElmIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQsIHRoZSBjaG9zZW4gZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIHRoZW0gYW5kXG4gICAgICogaXRzIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWVdIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiB0aGUgY3JlYXRlZCBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNob3NlbiBmdW5jdGlvbiBvciBpdHMgcmVzdWx0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEl0ZXJhdGVlKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaC5pdGVyYXRlZSB8fCBpdGVyYXRlZTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCA9PT0gaXRlcmF0ZWUgPyBiYXNlSXRlcmF0ZWUgOiByZXN1bHQ7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHJlc3VsdChhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXSkgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgICAgIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgICAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgICAgICA6IGRhdGEubWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gICAgICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICAgICAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgaWYgKHVubWFza2VkKSB7XG4gICAgICAgIGlmIChpc093bikge1xuICAgICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gICAgICovXG4gICAgdmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gICAgICovXG4gICAgdmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICB3aGlsZSAob2JqZWN0KSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIHZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4gICAgLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuICAgIGlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAgICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgICAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAgICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICAgICAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgICAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZpZXcsIGFwcGx5aW5nIGFueSBgdHJhbnNmb3Jtc2AgdG8gdGhlIGBzdGFydGAgYW5kIGBlbmRgIHBvc2l0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdHJhbnNmb3JtcyBUaGUgdHJhbnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSB2aWV3LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGBzdGFydGAgYW5kIGBlbmRgXG4gICAgICogIHBvc2l0aW9ucyBvZiB0aGUgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRWaWV3KHN0YXJ0LCBlbmQsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHRyYW5zZm9ybXMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZGF0YSA9IHRyYW5zZm9ybXNbaW5kZXhdLFxuICAgICAgICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2Ryb3AnOiAgICAgIHN0YXJ0ICs9IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Ryb3BSaWdodCc6IGVuZCAtPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICd0YWtlJzogICAgICBlbmQgPSBuYXRpdmVNaW4oZW5kLCBzdGFydCArIHNpemUpOyBicmVhaztcbiAgICAgICAgICBjYXNlICd0YWtlUmlnaHQnOiBzdGFydCA9IG5hdGl2ZU1heChzdGFydCwgZW5kIC0gc2l6ZSk7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyAnc3RhcnQnOiBzdGFydCwgJ2VuZCc6IGVuZCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHdyYXBwZXIgZGV0YWlscyBmcm9tIHRoZSBgc291cmNlYCBib2R5IGNvbW1lbnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd3JhcHBlciBkZXRhaWxzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFdyYXBEZXRhaWxzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoID0gc291cmNlLm1hdGNoKHJlV3JhcERldGFpbHMpO1xuICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0uc3BsaXQocmVTcGxpdERldGFpbHMpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICAgICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICAgICAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gICAgICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgICAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICAgICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgICAgIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICAgICAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBib29sVGFnOlxuICAgICAgICBjYXNlIGRhdGVUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgICAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyB3cmFwcGVyIGBkZXRhaWxzYCBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgYHNvdXJjZWAgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gaW5zZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIGRldGFpbHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBkZXRhaWxzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGRldGFpbHNbbGFzdEluZGV4XSA9IChsZW5ndGggPiAxID8gJyYgJyA6ICcnKSArIGRldGFpbHNbbGFzdEluZGV4XTtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmpvaW4obGVuZ3RoID4gMiA/ICcsICcgOiAnICcpO1xuICAgICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKHJlV3JhcENvbW1lbnQsICd7XFxuLyogW3dyYXBwZWQgd2l0aCAnICsgZGV0YWlscyArICddICovXFxuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICAgICAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICAgICApIHtcbiAgICAgICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgICAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICAgICAgOiAodmFsdWUgPT09IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMYXppYWJsZShmdW5jKSB7XG4gICAgICB2YXIgZnVuY05hbWUgPSBnZXRGdW5jTmFtZShmdW5jKSxcbiAgICAgICAgICBvdGhlciA9IGxvZGFzaFtmdW5jTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2Ygb3RoZXIgIT0gJ2Z1bmN0aW9uJyB8fCAhKGZ1bmNOYW1lIGluIExhenlXcmFwcGVyLnByb3RvdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZ1bmMgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGRhdGEgPSBnZXREYXRhKG90aGVyKTtcbiAgICAgIHJldHVybiAhIWRhdGEgJiYgZnVuYyA9PT0gZGF0YVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2FibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICB2YXIgaXNNYXNrYWJsZSA9IGNvcmVKc0RhdGEgPyBpc0Z1bmN0aW9uIDogc3R1YkZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICAgICAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICAgICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gICAgICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBtYXRjaGVzUHJvcGVydHlgIGZvciBzb3VyY2UgdmFsdWVzIHN1aXRhYmxlXG4gICAgICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gICAgICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIHRoZSBmdW5jdGlvbiBtZXRhZGF0YSBvZiBgc291cmNlYCBpbnRvIGBkYXRhYC5cbiAgICAgKlxuICAgICAqIE1lcmdpbmcgbWV0YWRhdGEgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIHVzZWQgdG8gaW52b2tlIGEgZnVuY3Rpb24uXG4gICAgICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1ldGhvZHMgbGlrZSBgXy5iaW5kYCwgYF8uY3VycnlgLCBhbmQgYF8ucGFydGlhbGBcbiAgICAgKiBtYXkgYmUgYXBwbGllZCByZWdhcmRsZXNzIG9mIGV4ZWN1dGlvbiBvcmRlci4gTWV0aG9kcyBsaWtlIGBfLmFyeWAgYW5kXG4gICAgICogYF8ucmVhcmdgIG1vZGlmeSBmdW5jdGlvbiBhcmd1bWVudHMsIG1ha2luZyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmVcbiAgICAgKiBleGVjdXRlZCBpbXBvcnRhbnQsIHByZXZlbnRpbmcgdGhlIG1lcmdpbmcgb2YgbWV0YWRhdGEuIEhvd2V2ZXIsIHdlIG1ha2VcbiAgICAgKiBhbiBleGNlcHRpb24gZm9yIGEgc2FmZSBjb21iaW5lZCBjYXNlIHdoZXJlIGN1cnJpZWQgZnVuY3Rpb25zIGhhdmUgYF8uYXJ5YFxuICAgICAqIGFuZCBvciBgXy5yZWFyZ2AgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gZGF0YSBUaGUgZGVzdGluYXRpb24gbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBzb3VyY2UgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkYXRhYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZXJnZURhdGEoZGF0YSwgc291cmNlKSB7XG4gICAgICB2YXIgYml0bWFzayA9IGRhdGFbMV0sXG4gICAgICAgICAgc3JjQml0bWFzayA9IHNvdXJjZVsxXSxcbiAgICAgICAgICBuZXdCaXRtYXNrID0gYml0bWFzayB8IHNyY0JpdG1hc2ssXG4gICAgICAgICAgaXNDb21tb24gPSBuZXdCaXRtYXNrIDwgKFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHIHwgV1JBUF9BUllfRkxBRyk7XG5cbiAgICAgIHZhciBpc0NvbWJvID1cbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX1JFQVJHX0ZMQUcpICYmIChkYXRhWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpKSAmJiAoc291cmNlWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpO1xuXG4gICAgICAvLyBFeGl0IGVhcmx5IGlmIG1ldGFkYXRhIGNhbid0IGJlIG1lcmdlZC5cbiAgICAgIGlmICghKGlzQ29tbW9uIHx8IGlzQ29tYm8pKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgdGhpc0FyZ2AgaWYgYXZhaWxhYmxlLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICBkYXRhWzJdID0gc291cmNlWzJdO1xuICAgICAgICAvLyBTZXQgd2hlbiBjdXJyeWluZyBhIGJvdW5kIGZ1bmN0aW9uLlxuICAgICAgICBuZXdCaXRtYXNrIHw9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyA/IDAgOiBXUkFQX0NVUlJZX0JPVU5EX0ZMQUc7XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgYXJndW1lbnRzLlxuICAgICAgdmFyIHZhbHVlID0gc291cmNlWzNdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHZhciBwYXJ0aWFscyA9IGRhdGFbM107XG4gICAgICAgIGRhdGFbM10gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzKHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzRdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzRdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzNdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNF07XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgcmlnaHQgYXJndW1lbnRzLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbNV07XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcGFydGlhbHMgPSBkYXRhWzVdO1xuICAgICAgICBkYXRhWzVdID0gcGFydGlhbHMgPyBjb21wb3NlQXJnc1JpZ2h0KHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzZdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzZdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzVdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNl07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcmdQb3NgIGlmIGF2YWlsYWJsZS5cbiAgICAgIHZhbHVlID0gc291cmNlWzddO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGRhdGFbN10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyeWAgaWYgaXQncyBzbWFsbGVyLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0FSWV9GTEFHKSB7XG4gICAgICAgIGRhdGFbOF0gPSBkYXRhWzhdID09IG51bGwgPyBzb3VyY2VbOF0gOiBuYXRpdmVNaW4oZGF0YVs4XSwgc291cmNlWzhdKTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyaXR5YCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgICAgaWYgKGRhdGFbOV0gPT0gbnVsbCkge1xuICAgICAgICBkYXRhWzldID0gc291cmNlWzldO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgZnVuY2AgYW5kIG1lcmdlIGJpdG1hc2tzLlxuICAgICAgZGF0YVswXSA9IHNvdXJjZVswXTtcbiAgICAgIGRhdGFbMV0gPSBuZXdCaXRtYXNrO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAgICAgKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICAgICAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlb3JkZXIgYGFycmF5YCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBpbmRleGVzIHdoZXJlIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIGZpcnN0IGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBmaXJzdCBlbGVtZW50LCB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBzZWNvbmQgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIHNlY29uZCBlbGVtZW50LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byByZW9yZGVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFycmF5IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVvcmRlcihhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4oaW5kZXhlcy5sZW5ndGgsIGFyckxlbmd0aCksXG4gICAgICAgICAgb2xkQXJyYXkgPSBjb3B5QXJyYXkoYXJyYXkpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBhcnJheVtsZW5ndGhdID0gaXNJbmRleChpbmRleCwgYXJyTGVuZ3RoKSA/IG9sZEFycmF5W2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgdGhpcyBmdW5jdGlvbiBiZWNvbWVzIGhvdCwgaS5lLiBpcyBpbnZva2VkIGEgbG90IGluIGEgc2hvcnRcbiAgICAgKiBwZXJpb2Qgb2YgdGltZSwgaXQgd2lsbCB0cmlwIGl0cyBicmVha2VyIGFuZCB0cmFuc2l0aW9uIHRvIGFuIGlkZW50aXR5XG4gICAgICogZnVuY3Rpb24gdG8gYXZvaWQgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhdXNlcyBpbiBWOC4gU2VlXG4gICAgICogW1Y4IGlzc3VlIDIwNzBdKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIwNzApXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXREYXRhID0gc2hvcnRPdXQoYmFzZVNldERhdGEpO1xuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYHNldFRpbWVvdXRgXShodHRwczovL21kbi5pby9zZXRUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIHNldFRpbWVvdXQgPSBjdHhTZXRUaW1lb3V0IHx8IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICAgIHJldHVybiByb290LnNldFRpbWVvdXQoZnVuYywgd2FpdCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGB3cmFwcGVyYCB0byBtaW1pYyB0aGUgc291cmNlIG9mIGByZWZlcmVuY2VgXG4gICAgICogd2l0aCB3cmFwcGVyIGRldGFpbHMgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwcGVyIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYHdyYXBwZXJgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdyYXBUb1N0cmluZyh3cmFwcGVyLCByZWZlcmVuY2UsIGJpdG1hc2spIHtcbiAgICAgIHZhciBzb3VyY2UgPSAocmVmZXJlbmNlICsgJycpO1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKHdyYXBwZXIsIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgdXBkYXRlV3JhcERldGFpbHMoZ2V0V3JhcERldGFpbHMoc291cmNlKSwgYml0bWFzaykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAgICAgKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAgICAgKiBtaWxsaXNlY29uZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gICAgICB2YXIgY291bnQgPSAwLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgd2hpY2ggbXV0YXRlcyBhbmQgc2V0cyB0aGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9YXJyYXkubGVuZ3RoXSBUaGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGVTZWxmKGFycmF5LCBzaXplKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICAgICAgc2l6ZSA9IHNpemUgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHNpemU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IHNpemUpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBiYXNlUmFuZG9tKGluZGV4LCBsYXN0SW5kZXgpLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtyYW5kXTtcblxuICAgICAgICBhcnJheVtyYW5kXSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBhcnJheS5sZW5ndGggPSBzaXplO1xuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIHZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICAgIH1cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyBrZXkgaWYgaXQncyBub3QgYSBzdHJpbmcgb3Igc3ltYm9sLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9LZXkodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gICAgICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHdyYXBwZXIgYGRldGFpbHNgIGJhc2VkIG9uIGBiaXRtYXNrYCBmbGFncy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGV0YWlsc2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV3JhcERldGFpbHMoZGV0YWlscywgYml0bWFzaykge1xuICAgICAgYXJyYXlFYWNoKHdyYXBGbGFncywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICB2YXIgdmFsdWUgPSAnXy4nICsgcGFpclswXTtcbiAgICAgICAgaWYgKChiaXRtYXNrICYgcGFpclsxXSkgJiYgIWFycmF5SW5jbHVkZXMoZGV0YWlscywgdmFsdWUpKSB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZGV0YWlscy5zb3J0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB3cmFwcGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHdyYXBwZXIgVGhlIHdyYXBwZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHdyYXBwZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNsb25lKHdyYXBwZXIpIHtcbiAgICAgIGlmICh3cmFwcGVyIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXIuY2xvbmUoKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVyLl9fd3JhcHBlZF9fLCB3cmFwcGVyLl9fY2hhaW5fXyk7XG4gICAgICByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkod3JhcHBlci5fX2FjdGlvbnNfXyk7XG4gICAgICByZXN1bHQuX19pbmRleF9fICA9IHdyYXBwZXIuX19pbmRleF9fO1xuICAgICAgcmVzdWx0Ll9fdmFsdWVzX18gPSB3cmFwcGVyLl9fdmFsdWVzX187XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byBncm91cHMgdGhlIGxlbmd0aCBvZiBgc2l6ZWAuXG4gICAgICogSWYgYGFycmF5YCBjYW4ndCBiZSBzcGxpdCBldmVubHksIHRoZSBmaW5hbCBjaHVuayB3aWxsIGJlIHRoZSByZW1haW5pbmdcbiAgICAgKiBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT0xXSBUaGUgbGVuZ3RoIG9mIGVhY2ggY2h1bmtcbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNodW5rcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMik7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsnYycsICdkJ11dXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAzKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InLCAnYyddLCBbJ2QnXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjaHVuayhhcnJheSwgc2l6ZSwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgc2l6ZSwgZ3VhcmQpIDogc2l6ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBzaXplID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpemUgPSBuYXRpdmVNYXgodG9JbnRlZ2VyKHNpemUpLCAwKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoIHx8IHNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KG5hdGl2ZUNlaWwobGVuZ3RoIC8gc2l6ZSkpO1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gYmFzZVNsaWNlKGFycmF5LCBpbmRleCwgKGluZGV4ICs9IHNpemUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSB3aXRoIGFsbCBmYWxzZXkgdmFsdWVzIHJlbW92ZWQuIFRoZSB2YWx1ZXMgYGZhbHNlYCwgYG51bGxgLFxuICAgICAqIGAwYCwgYFwiXCJgLCBgdW5kZWZpbmVkYCwgYW5kIGBOYU5gIGFyZSBmYWxzZXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY29tcGFjdChbMCwgMSwgZmFsc2UsIDIsICcnLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFjdChhcnJheSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgY29uY2F0ZW5hdGluZyBgYXJyYXlgIHdpdGggYW55IGFkZGl0aW9uYWwgYXJyYXlzXG4gICAgICogYW5kL29yIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgY29uY2F0ZW5hdGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMV07XG4gICAgICogdmFyIG90aGVyID0gXy5jb25jYXQoYXJyYXksIDIsIFszXSwgW1s0XV0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob3RoZXIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF1dXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uY2F0KCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgYXJncyA9IEFycmF5KGxlbmd0aCAtIDEpLFxuICAgICAgICAgIGFycmF5ID0gYXJndW1lbnRzWzBdLFxuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICBhcmdzW2luZGV4IC0gMV0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5UHVzaChpc0FycmF5KGFycmF5KSA/IGNvcHlBcnJheShhcnJheSkgOiBbYXJyYXldLCBiYXNlRmxhdHRlbihhcmdzLCAxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBgYXJyYXlgIHZhbHVlcyBub3QgaW5jbHVkZWQgaW4gdGhlIG90aGVyIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy53aXRob3V0LCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2UoWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgYW5kIGB2YWx1ZXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbEJ5YCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kaWZmZXJlbmNlQnkoW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCBbeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2VCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAgdG8gYHZhbHVlc2AuIFRoZSBvcmRlciBhbmRcbiAgICAgKiByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvclxuICAgICAqIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsV2l0aGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2VXaXRoKG9iamVjdHMsIFt7ICd4JzogMSwgJ3knOiAyIH1dLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2VXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoY29tcGFyYXRvcikpIHtcbiAgICAgICAgY29tcGFyYXRvciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRyb3AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRyb3AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCAwLCBuIDwgMCA/IDAgOiBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0V2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCB0cnVlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wV2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGxzIGVsZW1lbnRzIG9mIGBhcnJheWAgd2l0aCBgdmFsdWVgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdFxuICAgICAqIGluY2x1ZGluZywgYGVuZGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLmZpbGwoYXJyYXksICdhJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYScsICdhJywgJ2EnXVxuICAgICAqXG4gICAgICogXy5maWxsKEFycmF5KDMpLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgMiwgMl1cbiAgICAgKlxuICAgICAqIF8uZmlsbChbNCwgNiwgOCwgMTBdLCAnKicsIDEsIDMpO1xuICAgICAqIC8vID0+IFs0LCAnKicsICcqJywgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCAmJiB0eXBlb2Ygc3RhcnQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHZhbHVlLCBzdGFydCkpIHtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICBlbmQgPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHNcbiAgICAgKiBvZiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ3BlYmJsZXMnOyB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4IDwgMFxuICAgICAgICAgID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKVxuICAgICAgICAgIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlZXAoWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgNCwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVlcChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCBJTkZJTklUWSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVuIGBhcnJheWAgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVwdGg9MV0gVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIFsyLCBbMywgWzRdXSwgNV1dO1xuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZXB0aChhcnJheSwgZGVwdGgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8udG9QYWlyc2A7IHRoaXMgbWV0aG9kIHJldHVybnMgYW4gb2JqZWN0IGNvbXBvc2VkXG4gICAgICogZnJvbSBrZXktdmFsdWUgYHBhaXJzYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mcm9tUGFpcnMoW1snYScsIDFdLCBbJ2InLCAyXV0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZyb21QYWlycyhwYWlycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGFpcnMgPT0gbnVsbCA/IDAgOiBwYWlycy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICByZXN1bHRbcGFpclswXV0gPSBwYWlyWzFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZmlyc3RcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5oZWFkKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogXy5oZWFkKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoZWFkKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBhcnJheVswXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBgdmFsdWVgIGlzIGZvdW5kIGluIGBhcnJheWBcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhcyB0aGVcbiAgICAgKiBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5pdGlhbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRpYWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDAsIC0xKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBhbGwgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMl1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZClcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uaW50ZXJzZWN0aW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgaWYgKGl0ZXJhdGVlID09PSBsYXN0KG1hcHBlZCkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXBwZWQucG9wKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzXG4gICAgICogb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25XaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25XaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBtYXBwZWQucG9wKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGFsbCBlbGVtZW50cyBpbiBgYXJyYXlgIGludG8gYSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9JywnXSBUaGUgZWxlbWVudCBzZXBhcmF0b3IuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgam9pbmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5qb2luKFsnYScsICdiJywgJ2MnXSwgJ34nKTtcbiAgICAgKiAvLyA9PiAnYX5ifmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gam9pbihhcnJheSwgc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/ICcnIDogbmF0aXZlSm9pbi5jYWxsKGFycmF5LCBzZXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgYXJyYXlgIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aDtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGluZGV4IDwgMCA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCkgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgICA/IHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpXG4gICAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBpbmRleCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZWxlbWVudCBhdCBpbmRleCBgbmAgb2YgYGFycmF5YC4gSWYgYG5gIGlzIG5lZ2F0aXZlLCB0aGUgbnRoXG4gICAgICogZWxlbWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKlxuICAgICAqIF8ubnRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIF8ubnRoKGFycmF5LCAtMik7XG4gICAgICogLy8gPT4gJ2MnO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aChhcnJheSwgbikge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZU50aChhcnJheSwgdG9JbnRlZ2VyKG4pKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBnaXZlbiB2YWx1ZXMgZnJvbSBgYXJyYXlgIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLndpdGhvdXRgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuIFVzZSBgXy5yZW1vdmVgXG4gICAgICogdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgcHJlZGljYXRlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2EnLCAnYicsICdjJ107XG4gICAgICpcbiAgICAgKiBfLnB1bGwoYXJyYXksICdhJywgJ2MnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIHZhciBwdWxsID0gYmFzZVJlc3QocHVsbEFsbCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2EnLCAnYicsICdjJ107XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGwoYXJyYXksIFsnYScsICdjJ10pO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbChhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgYW5kIGB2YWx1ZXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZUJ5YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEgfSwgeyAneCc6IDIgfSwgeyAneCc6IDMgfSwgeyAneCc6IDEgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxCeShhcnJheSwgW3sgJ3gnOiAxIH0sIHsgJ3gnOiAzIH1dLCAneCcpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsQnkoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAgdG8gYHZhbHVlc2AuIFRoZSBjb21wYXJhdG9yIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VXaXRoYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAzLCAneSc6IDQgfSwgeyAneCc6IDUsICd5JzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbFdpdGgoYXJyYXksIFt7ICd4JzogMywgJ3knOiA0IH1dLCBfLmlzRXF1YWwpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogNSwgJ3knOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbFdpdGgoYXJyYXksIHZhbHVlcywgY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgZWxlbWVudHMgZnJvbSBgYXJyYXlgIGNvcnJlc3BvbmRpbmcgdG8gYGluZGV4ZXNgIGFuZCByZXR1cm5zIGFuXG4gICAgICogYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uYXRgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IFtpbmRleGVzXSBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICogdmFyIHB1bGxlZCA9IF8ucHVsbEF0KGFycmF5LCBbMSwgM10pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYScsICdjJ11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKHB1bGxlZCk7XG4gICAgICogLy8gPT4gWydiJywgJ2QnXVxuICAgICAqL1xuICAgIHZhciBwdWxsQXQgPSBmbGF0UmVzdChmdW5jdGlvbihhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGJhc2VBdChhcnJheSwgaW5kZXhlcyk7XG5cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGFycmF5TWFwKGluZGV4ZXMsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpc0luZGV4KGluZGV4LCBsZW5ndGgpID8gK2luZGV4IDogaW5kZXg7XG4gICAgICB9KS5zb3J0KGNvbXBhcmVBc2NlbmRpbmcpKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gYGFycmF5YCB0aGF0IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvclxuICAgICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSByZW1vdmVkIGVsZW1lbnRzLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5maWx0ZXJgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuIFVzZSBgXy5wdWxsYFxuICAgICAqIHRvIHB1bGwgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzLCA0XTtcbiAgICAgKiB2YXIgZXZlbnMgPSBfLnJlbW92ZShhcnJheSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhldmVucyk7XG4gICAgICogLy8gPT4gWzIsIDRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgaW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIGBhcnJheWAgc28gdGhhdCB0aGUgZmlyc3QgZWxlbWVudCBiZWNvbWVzIHRoZSBsYXN0LCB0aGUgc2Vjb25kXG4gICAgICogZWxlbWVudCBiZWNvbWVzIHRoZSBzZWNvbmQgdG8gbGFzdCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YCBhbmQgaXMgYmFzZWQgb25cbiAgICAgKiBbYEFycmF5I3JldmVyc2VgXShodHRwczovL21kbi5pby9BcnJheS9yZXZlcnNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8ucmV2ZXJzZShhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmV2ZXJzZShhcnJheSkge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyBhcnJheSA6IG5hdGl2ZVJldmVyc2UuY2FsbChhcnJheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAgICogW2BBcnJheSNzbGljZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3NsaWNlKSB0byBlbnN1cmUgZGVuc2UgYXJyYXlzIGFyZVxuICAgICAqIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQgJiYgdHlwZW9mIGVuZCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICBlbmQgPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3RhcnQgPSBzdGFydCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VzIGEgYmluYXJ5IHNlYXJjaCB0byBkZXRlcm1pbmUgdGhlIGxvd2VzdCBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXgoWzMwLCA1MF0sIDQwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgJ3gnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleE9mKFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBoaWdoZXN0XG4gICAgICogaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvXG4gICAgICogbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleChbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXgoYXJyYXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRMYXN0SW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgJ3gnKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmxhc3RJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleE9mKFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKSAtIDE7XG4gICAgICAgIGlmIChlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRVbmlxKFsxLCAxLCAyXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcShhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXkpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxQnlgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRVbmlxQnkoWzEuMSwgMS4yLCAyLjMsIDIuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjEsIDIuM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWlsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFpbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMSwgbGVuZ3RoKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2UoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCAwLCBuIDwgMCA/IDAgOiBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBlbmQuIEVsZW1lbnRzIGFyZVxuICAgICAqIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0V2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBmYWxzZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGJlZ2lubmluZy4gRWxlbWVudHNcbiAgICAgKiBhcmUgdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlV2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tIHRoZSBmaXJzdFxuICAgICAqIGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlvbkJ5KFsyLjFdLCBbMS4yLCAyLjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xLCAxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnVuaW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb21cbiAgICAgKiB0aGUgZmlyc3QgYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8udW5pb25XaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25XaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5LCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpbiB3aGljaCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggZWxlbWVudFxuICAgICAqIGlzIGtlcHQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXJcbiAgICAgKiBpbiB0aGUgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxKFsyLCAxLCAyXSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcShhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGVcbiAgICAgKiBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxQnkoWzIuMSwgMS4yLCAyLjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xLCAxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnVuaXFCeShbeyAneCc6IDEgfSwgeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8udW5pcVdpdGgob2JqZWN0cywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcVdpdGgoYXJyYXksIGNvbXBhcmF0b3IpIHtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgZ3JvdXBlZFxuICAgICAqIGVsZW1lbnRzIGFuZCBjcmVhdGVzIGFuIGFycmF5IHJlZ3JvdXBpbmcgdGhlIGVsZW1lbnRzIHRvIHRoZWlyIHByZS16aXBcbiAgICAgKiBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqXG4gICAgICogXy51bnppcCh6aXBwZWQpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXAoYXJyYXkpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgICBhcnJheSA9IGFycmF5RmlsdGVyKGFycmF5LCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoZ3JvdXApKSB7XG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGdyb3VwLmxlbmd0aCwgbGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmFzZVRpbWVzKGxlbmd0aCwgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKGFycmF5LCBiYXNlUHJvcGVydHkoaW5kZXgpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IHJlZ3JvdXBlZCB2YWx1ZXMgc2hvdWxkIGJlIGNvbWJpbmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRoZVxuICAgICAqIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXA6ICguLi5ncm91cCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICByZWdyb3VwZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0pO1xuICAgICAqIC8vID0+IFtbMSwgMTAsIDEwMF0sIFsyLCAyMCwgMjAwXV1cbiAgICAgKlxuICAgICAqIF8udW56aXBXaXRoKHppcHBlZCwgXy5hZGQpO1xuICAgICAqIC8vID0+IFszLCAzMCwgMzAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwV2l0aChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHVuemlwKGFycmF5KTtcbiAgICAgIGlmIChpdGVyYXRlZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlNYXAocmVzdWx0LCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICByZXR1cm4gYXBwbHkoaXRlcmF0ZWUsIHVuZGVmaW5lZCwgZ3JvdXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBleGNsdWRpbmcgYWxsIGdpdmVuIHZhbHVlcyB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53aXRob3V0KFsyLCAxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICovXG4gICAgdmFyIHdpdGhvdXQgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGlzIHRoZVxuICAgICAqIFtzeW1tZXRyaWMgZGlmZmVyZW5jZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltbWV0cmljX2RpZmZlcmVuY2UpXG4gICAgICogb2YgdGhlIGdpdmVuIGFycmF5cy4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXJcbiAgICAgKiB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLndpdGhvdXRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy54b3IoWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqL1xuICAgIHZhciB4b3IgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZFxuICAgICAqIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lXG4gICAgICogYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy54b3JCeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4yLCAzLjRdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnhvckJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB4b3JCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ueG9yV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB4b3JXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogZmlyc3QgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGFycmF5cywgdGhlIHNlY29uZCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBzZWNvbmQgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGFycmF5cywgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICovXG4gICAgdmFyIHppcCA9IGJhc2VSZXN0KHVuemlwKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZnJvbVBhaXJzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIHR3byBhcnJheXMsXG4gICAgICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzPVtdXSBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwT2JqZWN0KFsnYScsICdiJ10sIFsxLCAyXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gemlwT2JqZWN0KHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcE9iamVjdGAgZXhjZXB0IHRoYXQgaXQgc3VwcG9ydHMgcHJvcGVydHkgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzPVtdXSBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwT2JqZWN0RGVlcChbJ2EuYlswXS5jJywgJ2EuYlsxXS5kJ10sIFsxLCAyXSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiBbeyAnYyc6IDEgfSwgeyAnZCc6IDIgfV0gfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gemlwT2JqZWN0RGVlcChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBiYXNlU2V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgZ3JvdXBlZCB2YWx1ZXMgc2hvdWxkIGJlIGNvbWJpbmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRoZVxuICAgICAqIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXA6ICguLi5ncm91cCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIGdyb3VwZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwV2l0aChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdLCBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gYSArIGIgKyBjO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IFsxMTEsIDIyMl1cbiAgICAgKi9cbiAgICB2YXIgemlwV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgaXRlcmF0ZWUgPSBsZW5ndGggPiAxID8gYXJyYXlzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpdGVyYXRlZSA9IHR5cGVvZiBpdGVyYXRlZSA9PSAnZnVuY3Rpb24nID8gKGFycmF5cy5wb3AoKSwgaXRlcmF0ZWUpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHVuemlwV2l0aChhcnJheXMsIGl0ZXJhdGVlKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlIHRoYXQgd3JhcHMgYHZhbHVlYCB3aXRoIGV4cGxpY2l0IG1ldGhvZFxuICAgICAqIGNoYWluIHNlcXVlbmNlcyBlbmFibGVkLiBUaGUgcmVzdWx0IG9mIHN1Y2ggc2VxdWVuY2VzIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICogd2l0aCBgXyN2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogdmFyIHlvdW5nZXN0ID0gX1xuICAgICAqICAgLmNoYWluKHVzZXJzKVxuICAgICAqICAgLnNvcnRCeSgnYWdlJylcbiAgICAgKiAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAqICAgICByZXR1cm4gby51c2VyICsgJyBpcyAnICsgby5hZ2U7XG4gICAgICogICB9KVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMgaXMgMSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjaGFpbih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaCh2YWx1ZSk7XG4gICAgICByZXN1bHQuX19jaGFpbl9fID0gdHJ1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaW52b2tlcyBgaW50ZXJjZXB0b3JgIGFuZCByZXR1cm5zIGB2YWx1ZWAuIFRoZSBpbnRlcmNlcHRvclxuICAgICAqIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvXG4gICAgICogXCJ0YXAgaW50b1wiIGEgbWV0aG9kIGNoYWluIHNlcXVlbmNlIGluIG9yZGVyIHRvIG1vZGlmeSBpbnRlcm1lZGlhdGUgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSlcbiAgICAgKiAgLnRhcChmdW5jdGlvbihhcnJheSkge1xuICAgICAqICAgIC8vIE11dGF0ZSBpbnB1dCBhcnJheS5cbiAgICAgKiAgICBhcnJheS5wb3AoKTtcbiAgICAgKiAgfSlcbiAgICAgKiAgLnJldmVyc2UoKVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YXAodmFsdWUsIGludGVyY2VwdG9yKSB7XG4gICAgICBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy50YXBgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIFwicGFzcyB0aHJ1XCIgdmFsdWVzIHJlcGxhY2luZyBpbnRlcm1lZGlhdGVcbiAgICAgKiByZXN1bHRzIGluIGEgbWV0aG9kIGNoYWluIHNlcXVlbmNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXygnICBhYmMgICcpXG4gICAgICogIC5jaGFpbigpXG4gICAgICogIC50cmltKClcbiAgICAgKiAgLnRocnUoZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICAgKiAgfSlcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocnUodmFsdWUsIGludGVyY2VwdG9yKSB7XG4gICAgICByZXR1cm4gaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8uYXRgLlxuICAgICAqXG4gICAgICogQG5hbWUgYXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXyhvYmplY3QpLmF0KFsnYVswXS5iLmMnLCAnYVsxXSddKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqL1xuICAgIHZhciB3cmFwcGVyQXQgPSBmbGF0UmVzdChmdW5jdGlvbihwYXRocykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICBzdGFydCA9IGxlbmd0aCA/IHBhdGhzWzBdIDogMCxcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGJhc2VBdChvYmplY3QsIHBhdGhzKTsgfTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDEgfHwgdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGggfHxcbiAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHx8ICFpc0luZGV4KHN0YXJ0KSkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3RhcnQsICtzdGFydCArIChsZW5ndGggPyAxIDogMCkpO1xuICAgICAgdmFsdWUuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICdmdW5jJzogdGhydSxcbiAgICAgICAgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLFxuICAgICAgICAndGhpc0FyZyc6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUsIHRoaXMuX19jaGFpbl9fKS50aHJ1KGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICAgIGlmIChsZW5ndGggJiYgIWFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGFycmF5LnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlIHdpdGggZXhwbGljaXQgbWV0aG9kIGNoYWluIHNlcXVlbmNlcyBlbmFibGVkLlxuICAgICAqXG4gICAgICogQG5hbWUgY2hhaW5cbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRob3V0IGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpLmhlYWQoKTtcbiAgICAgKiAvLyA9PiB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGggZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycylcbiAgICAgKiAgIC5jaGFpbigpXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAucGljaygndXNlcicpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiB7ICd1c2VyJzogJ2Jhcm5leScgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDaGFpbigpIHtcbiAgICAgIHJldHVybiBjaGFpbih0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgYW5kIHJldHVybnMgdGhlIHdyYXBwZWQgcmVzdWx0LlxuICAgICAqXG4gICAgICogQG5hbWUgY29tbWl0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyXTtcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oYXJyYXkpLnB1c2goMyk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkID0gd3JhcHBlZC5jb21taXQoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkLmxhc3QoKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNvbW1pdCgpIHtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih0aGlzLnZhbHVlKCksIHRoaXMuX19jaGFpbl9fKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuZXh0IHZhbHVlIG9uIGEgd3JhcHBlZCBvYmplY3QgZm9sbG93aW5nIHRoZVxuICAgICAqIFtpdGVyYXRvciBwcm90b2NvbF0oaHR0cHM6Ly9tZG4uaW8vaXRlcmF0aW9uX3Byb3RvY29scyNpdGVyYXRvcikuXG4gICAgICpcbiAgICAgKiBAbmFtZSBuZXh0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV4dCBpdGVyYXRvciB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDEgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAyIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiB0cnVlLCAndmFsdWUnOiB1bmRlZmluZWQgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJOZXh0KCkge1xuICAgICAgaWYgKHRoaXMuX192YWx1ZXNfXyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHRvQXJyYXkodGhpcy52YWx1ZSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciBkb25lID0gdGhpcy5fX2luZGV4X18gPj0gdGhpcy5fX3ZhbHVlc19fLmxlbmd0aCxcbiAgICAgICAgICB2YWx1ZSA9IGRvbmUgPyB1bmRlZmluZWQgOiB0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK107XG5cbiAgICAgIHJldHVybiB7ICdkb25lJzogZG9uZSwgJ3ZhbHVlJzogdmFsdWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIHRoZSB3cmFwcGVyIHRvIGJlIGl0ZXJhYmxlLlxuICAgICAqXG4gICAgICogQG5hbWUgU3ltYm9sLml0ZXJhdG9yXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgd3JhcHBlciBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZFtTeW1ib2wuaXRlcmF0b3JdKCkgPT09IHdyYXBwZWQ7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogQXJyYXkuZnJvbSh3cmFwcGVkKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVG9JdGVyYXRvcigpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgY2hhaW4gc2VxdWVuY2UgcGxhbnRpbmcgYHZhbHVlYCBhcyB0aGUgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHBsYW50XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGxhbnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSkubWFwKHNxdWFyZSk7XG4gICAgICogdmFyIG90aGVyID0gd3JhcHBlZC5wbGFudChbMywgNF0pO1xuICAgICAqXG4gICAgICogb3RoZXIudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbOSwgMTZdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclBsYW50KHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgIHBhcmVudCA9IHRoaXM7XG5cbiAgICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBiYXNlTG9kYXNoKSB7XG4gICAgICAgIHZhciBjbG9uZSA9IHdyYXBwZXJDbG9uZShwYXJlbnQpO1xuICAgICAgICBjbG9uZS5fX2luZGV4X18gPSAwO1xuICAgICAgICBjbG9uZS5fX3ZhbHVlc19fID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcHJldmlvdXMuX193cmFwcGVkX18gPSBjbG9uZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBjbG9uZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXMgPSBjbG9uZTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50Ll9fd3JhcHBlZF9fO1xuICAgICAgfVxuICAgICAgcHJldmlvdXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5yZXZlcnNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIHRoZSB3cmFwcGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfKGFycmF5KS5yZXZlcnNlKCkudmFsdWUoKVxuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJSZXZlcnNlKCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXztcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHZhciB3cmFwcGVkID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCkge1xuICAgICAgICAgIHdyYXBwZWQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgd3JhcHBlZCA9IHdyYXBwZWQucmV2ZXJzZSgpO1xuICAgICAgICB3cmFwcGVkLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAgICdmdW5jJzogdGhydSxcbiAgICAgICAgICAnYXJncyc6IFtyZXZlcnNlXSxcbiAgICAgICAgICAndGhpc0FyZyc6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZWQsIHRoaXMuX19jaGFpbl9fKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRocnUocmV2ZXJzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIHRvIHJlc29sdmUgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHZhbHVlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgdG9KU09OLCB2YWx1ZU9mXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJWYWx1ZSgpIHtcbiAgICAgIHJldHVybiBiYXNlV3JhcHBlclZhbHVlKHRoaXMuX193cmFwcGVkX18sIHRoaXMuX19hY3Rpb25zX18pO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGtleSB3YXMgcmV0dXJuZWQgYnkgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb3VudEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IDEsICc2JzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmNvdW50QnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogMiwgJzUnOiAxIH1cbiAgICAgKi9cbiAgICB2YXIgY291bnRCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgKytyZXN1bHRba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYWxsKiogZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogW2VtcHR5IGNvbGxlY3Rpb25zXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbXB0eV9zZXQpIGJlY2F1c2VcbiAgICAgKiBbZXZlcnl0aGluZyBpcyB0cnVlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWN1b3VzX3RydXRoKSBvZlxuICAgICAqIGVsZW1lbnRzIG9mIGVtcHR5IGNvbGxlY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ldmVyeShbdHJ1ZSwgMSwgbnVsbCwgJ3llcyddLCBCb29sZWFuKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFdmVyeSA6IGJhc2VFdmVyeTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICAgICAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucmVtb3ZlYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8ucmVqZWN0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgNDBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVHJpbSwgJycpO1xuICAgICAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgICAgIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgICAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICAgICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICAgICAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc2FmZSBpbnRlZ2VyLiBBIHNhZmUgaW50ZWdlciBjYW4gYmUgY29tcGFyZWQgYW5kXG4gICAgICogcmVwcmVzZW50ZWQgY29ycmVjdGx5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA5MDA3MTk5MjU0NzQwOTkxXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpXG4gICAgICAgIDogKHZhbHVlID09PSAwID8gdmFsdWUgOiAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICAgICAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcobnVsbCk7XG4gICAgICogLy8gPT4gJydcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcoLTApO1xuICAgICAqIC8vID0+ICctMCdcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAnMSwyLDMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlXG4gICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogU3Vic2VxdWVudCBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAgYW5kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYE9iamVjdC5hc3NpZ25gXShodHRwczovL21kbi5pby9PYmplY3QvYXNzaWduKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGlmIChpc1Byb3RvdHlwZShzb3VyY2UpIHx8IGlzQXJyYXlMaWtlKHNvdXJjZSkpIHtcbiAgICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIHNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduSW4oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzLCAnZCc6IDQgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFdpdGhcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbkluV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW5XaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25XaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBgcGF0aHNgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfLmF0KG9iamVjdCwgWydhWzBdLmIuYycsICdhWzFdJ10pO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqL1xuICAgIHZhciBhdCA9IGZsYXRSZXN0KGJhc2VBdCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGBwcm90b3R5cGVgIG9iamVjdC4gSWYgYVxuICAgICAqIGBwcm9wZXJ0aWVzYCBvYmplY3QgaXMgZ2l2ZW4sIGl0cyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllc1xuICAgICAqIGFyZSBhc3NpZ25lZCB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZSBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3Byb3BlcnRpZXNdIFRoZSBwcm9wZXJ0aWVzIHRvIGFzc2lnbiB0byB0aGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIFNoYXBlKCkge1xuICAgICAqICAgdGhpcy54ID0gMDtcbiAgICAgKiAgIHRoaXMueSA9IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAqICAgU2hhcGUuY2FsbCh0aGlzKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBDaXJjbGUucHJvdG90eXBlID0gXy5jcmVhdGUoU2hhcGUucHJvdG90eXBlLCB7XG4gICAgICogICAnY29uc3RydWN0b3InOiBDaXJjbGVcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHZhciBjaXJjbGUgPSBuZXcgQ2lyY2xlO1xuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIENpcmNsZTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBTaGFwZTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlKHByb3RvdHlwZSwgcHJvcGVydGllcykge1xuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VDcmVhdGUocHJvdG90eXBlKTtcbiAgICAgIHJldHVybiBwcm9wZXJ0aWVzID09IG51bGwgPyByZXN1bHQgOiBiYXNlQXNzaWduKHJlc3VsdCwgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICAgICAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICAgICAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBPbmNlIGEgcHJvcGVydHkgaXMgc2V0LCBhZGRpdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2FtZSBwcm9wZXJ0eSBhcmUgaWdub3JlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHMgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIHZhciBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aDtcbiAgICAgIHZhciBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgdmFyIHByb3BzID0ga2V5c0luKHNvdXJjZSk7XG4gICAgICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgICAgIHZhciBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoKytwcm9wc0luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICAgICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRlZmF1bHRzYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBhc3NpZ25zXG4gICAgICogZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5kZWZhdWx0c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzRGVlcCh7ICdhJzogeyAnYic6IDIgfSB9LCB7ICdhJzogeyAnYic6IDEsICdjJzogMyB9IH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogMiwgJ2MnOiAzIH0gfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0c0RlZXAgPSBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICBhcmdzLnB1c2godW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlKTtcbiAgICAgIHJldHVybiBhcHBseShtZXJnZVdpdGgsIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGtleSBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFJldHVybnMgdGhlIGtleSBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50LFxuICAgICAqICBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnYmFybmV5JzogIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgJ2ZyZWQnOiAgICB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uZmluZEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leScgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93bik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kS2V5YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYSBjb2xsZWN0aW9uIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFJldHVybnMgdGhlIGtleSBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50LFxuICAgICAqICBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnYmFybmV5JzogIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgJ2ZyZWQnOiAgICB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IHJldHVybnMgJ3BlYmJsZXMnIGFzc3VtaW5nIGBfLmZpbmRLZXlgIHJldHVybnMgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRMYXN0S2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhblxuICAgICAqIG9iamVjdCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gICAgICogaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JJblJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScsICdiJywgdGhlbiAnYycgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW4ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgICAgID8gb2JqZWN0XG4gICAgICAgIDogYmFzZUZvcihvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvckluYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJblJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYycsICdiJywgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9ySW5gIGxvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgICAgID8gb2JqZWN0XG4gICAgICAgIDogYmFzZUZvclJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGFuZFxuICAgICAqIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb25cbiAgICAgKiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93bihvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JPd25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd25SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2InIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvck93bmAgbG9ncyAnYScgdGhlbiAnYicuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZnJvbSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzXG4gICAgICogb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gXy5jb25zdGFudCgnYScpO1xuICAgICAqICAgdGhpcy5iID0gXy5jb25zdGFudCgnYicpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IF8uY29uc3RhbnQoJ2MnKTtcbiAgICAgKlxuICAgICAqIF8uZnVuY3Rpb25zKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VGdW5jdGlvbnMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZnJvbSBvd24gYW5kIGluaGVyaXRlZFxuICAgICAqIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gXy5jb25zdGFudCgnYScpO1xuICAgICAqICAgdGhpcy5iID0gXy5jb25zdGFudCgnYicpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IF8uY29uc3RhbnQoJ2MnKTtcbiAgICAgKlxuICAgICAqIF8uZnVuY3Rpb25zSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VGdW5jdGlvbnMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAgICAgKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICAgICAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG90aGVyLCAnYScpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGludmVydGVkIGtleXMgYW5kIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKiBJZiBgb2JqZWN0YCBjb250YWlucyBkdXBsaWNhdGUgdmFsdWVzLCBzdWJzZXF1ZW50IHZhbHVlcyBvdmVyd3JpdGVcbiAgICAgKiBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydChvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzEnOiAnYycsICcyJzogJ2InIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdFt2YWx1ZV0gPSBrZXk7XG4gICAgfSwgY29uc3RhbnQoaWRlbnRpdHkpKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW52ZXJ0YCBleGNlcHQgdGhhdCB0aGUgaW52ZXJ0ZWQgb2JqZWN0IGlzIGdlbmVyYXRlZFxuICAgICAqIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZyBlYWNoIGVsZW1lbnQgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBjb3JyZXNwb25kaW5nIGludmVydGVkIHZhbHVlIG9mIGVhY2ggaW52ZXJ0ZWQga2V5IGlzIGFuIGFycmF5IG9mIGtleXNcbiAgICAgKiByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgaW52ZXJ0ZWQgdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludmVydC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuICdncm91cCcgKyB2YWx1ZTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdncm91cDEnOiBbJ2EnLCAnYyddLCAnZ3JvdXAyJzogWydiJ10gfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnRCeSA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIHZhbHVlKSkge1xuICAgICAgICByZXN1bHRbdmFsdWVdLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0gPSBba2V5XTtcbiAgICAgIH1cbiAgICB9LCBnZXRJdGVyYXRlZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogWzEsIDIsIDMsIDRdIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uaW52b2tlKG9iamVjdCwgJ2FbMF0uYi5jLnNsaWNlJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICovXG4gICAgdmFyIGludm9rZSA9IGJhc2VSZXN0KGJhc2VJbnZva2UpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICAgICAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8ua2V5cygnaGknKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMSddXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWFwVmFsdWVzYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgKiBzYW1lIHZhbHVlcyBhcyBgb2JqZWN0YCBhbmQga2V5cyBnZW5lcmF0ZWQgYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlXG4gICAgICogc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwVmFsdWVzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwS2V5cyh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIHJldHVybiBrZXkgKyB2YWx1ZTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhMSc6IDEsICdiMic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcEtleXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhcyBgb2JqZWN0YCBhbmQgdmFsdWVzIGdlbmVyYXRlZFxuICAgICAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcEtleXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCAnYWdlJyk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcFZhbHVlcyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gICAgICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAgICAgKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAgICAgKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgb3RoZXIgPSB7XG4gICAgICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAgICAgKiBwcm9wZXJ0aWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgbWVyZ2luZyBpcyBoYW5kbGVkIGJ5IHRoZVxuICAgICAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICAgICAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gICAgICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBwYXRocyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gYF8ucGlja2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBvbWl0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0KG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgdmFyIG9taXQgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0RlZXAgPSBmYWxzZTtcbiAgICAgIHBhdGhzID0gYXJyYXlNYXAocGF0aHMsIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICAgIGlzRGVlcCB8fCAoaXNEZWVwID0gcGF0aC5sZW5ndGggPiAxKTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICB9KTtcbiAgICAgIGNvcHlPYmplY3Qob2JqZWN0LCBnZXRBbGxLZXlzSW4ob2JqZWN0KSwgcmVzdWx0KTtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBiYXNlVW5zZXQocmVzdWx0LCBwYXRoc1tsZW5ndGhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2ZcbiAgICAgKiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0XG4gICAgICogYHByZWRpY2F0ZWAgZG9lc24ndCByZXR1cm4gdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdEJ5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gb21pdEJ5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gcGlja0J5KG9iamVjdCwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGBvYmplY3RgIHByb3BlcnRpZXMgYHByZWRpY2F0ZWAgcmV0dXJuc1xuICAgICAqIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrQnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwaWNrQnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICB2YXIgcHJvcHMgPSBhcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSwgZnVuY3Rpb24ocHJvcCkge1xuICAgICAgICByZXR1cm4gW3Byb3BdO1xuICAgICAgfSk7XG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUpO1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwcm9wcywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSwgcGF0aFswXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmdldGAgZXhjZXB0IHRoYXQgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFcbiAgICAgKiBmdW5jdGlvbiBpdCdzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgaXRzIHBhcmVudCBvYmplY3QgYW5kXG4gICAgICogaXRzIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHJlc29sdmUuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjMSc6IDMsICdjMic6IF8uY29uc3RhbnQoNCkgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMxJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMyJyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsIF8uY29uc3RhbnQoJ2RlZmF1bHQnKSk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdWx0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbG9vcCBpcyBlbnRlcmVkIHdoZW4gcGF0aCBpcyBlbXB0eS5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICAgIG9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXhdKV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG4gICAgICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZS5jYWxsKG9iamVjdCkgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiBhIHBvcnRpb24gb2YgYHBhdGhgIGRvZXNuJ3QgZXhpc3QsXG4gICAgICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gICAgICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAgICAgKiBgcGF0aGAgY3JlYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8uc2V0V2l0aChvYmplY3QsICdbMF1bMV0nLCAnYScsIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V2l0aChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YFxuICAgICAqIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcCBvciBzZXQsIGl0c1xuICAgICAqIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl1dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnMgPSBjcmVhdGVUb1BhaXJzKGtleXMpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlyc1xuICAgICAqIGZvciBgb2JqZWN0YCB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXBcbiAgICAgKiBvciBzZXQsIGl0cyBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzSW5cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXSwgWydjJywgM11dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnNJbiA9IGNyZWF0ZVRvUGFpcnMoa2V5c0luKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAgICAgKiBgYWNjdW11bGF0b3JgIG9iamVjdCB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgZWFjaCBvZiBpdHMgb3duXG4gICAgICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gICAgICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICAgICAqIHByb3ZpZGVkLCBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBgW1tQcm90b3R5cGVdXWAgd2lsbCBiZSB1c2VkLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gICAgICogICByZXN1bHQucHVzaChuICo9IG4pO1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA5XVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIGlzQXJyTGlrZSA9IGlzQXJyIHx8IGlzQnVmZmVyKG9iamVjdCkgfHwgaXNUeXBlZEFycmF5KG9iamVjdCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpO1xuICAgICAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICAgICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgICBpZiAoaXNBcnJMaWtlKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwcm9wZXJ0eSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiA3IH0gfV0gfTtcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqXG4gICAgICogXy51bnNldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB0cnVlIDogYmFzZVVuc2V0KG9iamVjdCwgcGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGFjY2VwdHMgYHVwZGF0ZXJgIHRvIHByb2R1Y2UgdGhlXG4gICAgICogdmFsdWUgdG8gc2V0LiBVc2UgYF8udXBkYXRlV2l0aGAgdG8gY3VzdG9taXplIGBwYXRoYCBjcmVhdGlvbi4gVGhlIGB1cGRhdGVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAnYVswXS5iLmMnLCBmdW5jdGlvbihuKSB7IHJldHVybiBuICogbjsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICd4WzBdLnkueicsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPyBuICsgMSA6IDA7IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udXBkYXRlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy51cGRhdGVXaXRoKG9iamVjdCwgJ1swXVsxXScsIF8uY29uc3RhbnQoJ2EnKSwgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXaXRoKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy52YWx1ZXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWydoJywgJ2knXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENsYW1wcyBgbnVtYmVyYCB3aXRoaW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoLTEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gLTVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSB0b051bWJlcih1cHBlcik7XG4gICAgICAgIHVwcGVyID0gdXBwZXIgPT09IHVwcGVyID8gdXBwZXIgOiAwO1xuICAgICAgfVxuICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSB0b051bWJlcihsb3dlcik7XG4gICAgICAgIGxvd2VyID0gbG93ZXIgPT09IGxvd2VyID8gbG93ZXIgOiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VDbGFtcCh0b051bWJlcihudW1iZXIpLCBsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgbmAgaXMgYmV0d2VlbiBgc3RhcnRgIGFuZCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBJZlxuICAgICAqIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAgICAgKiBJZiBgc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBgZW5kYCB0aGUgcGFyYW1zIGFyZSBzd2FwcGVkIHRvIHN1cHBvcnRcbiAgICAgKiBuZWdhdGl2ZSByYW5nZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ucmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMywgMiwgNCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDgpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDIsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMS4yLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNS4yLCA0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKC0zLCAtMiwgLTYpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICB9XG4gICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgcmV0dXJuIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZHVjZXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKiBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwcm92aWRlZCBhIG51bWJlciBiZXR3ZWVuIGAwYCBhbmQgdGhlIGdpdmVuIG51bWJlclxuICAgICAqIGlzIHJldHVybmVkLiBJZiBgZmxvYXRpbmdgIGlzIGB0cnVlYCwgb3IgZWl0aGVyIGBsb3dlcmAgb3IgYHVwcGVyYCBhcmVcbiAgICAgKiBmbG9hdHMsIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIHJldHVybmVkIGluc3RlYWQgb2YgYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXI9MF0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdXBwZXI9MV0gVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zsb2F0aW5nXSBTcGVjaWZ5IHJldHVybmluZyBhIGZsb2F0aW5nLXBvaW50IG51bWJlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgwLCA1KTtcbiAgICAgKiAvLyA9PiBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSk7XG4gICAgICogLy8gPT4gYWxzbyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSwgdHJ1ZSk7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgxLjIsIDUuMik7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAxLjIgYW5kIDUuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJhbmRvbShsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSB7XG4gICAgICBpZiAoZmxvYXRpbmcgJiYgdHlwZW9mIGZsb2F0aW5nICE9ICdib29sZWFuJyAmJiBpc0l0ZXJhdGVlQ2FsbChsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSkge1xuICAgICAgICB1cHBlciA9IGZsb2F0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cHBlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IHVwcGVyO1xuICAgICAgICAgIHVwcGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb3dlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPT09IHVuZGVmaW5lZCAmJiB1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgdXBwZXIgPSAxO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGxvd2VyID0gdG9GaW5pdGUobG93ZXIpO1xuICAgICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwcGVyID0gdG9GaW5pdGUodXBwZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPiB1cHBlcikge1xuICAgICAgICB2YXIgdGVtcCA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVwcGVyO1xuICAgICAgICB1cHBlciA9IHRlbXA7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgfHwgbG93ZXIgJSAxIHx8IHVwcGVyICUgMSkge1xuICAgICAgICB2YXIgcmFuZCA9IG5hdGl2ZVJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlTWluKGxvd2VyICsgKHJhbmQgKiAodXBwZXIgLSBsb3dlciArIGZyZWVQYXJzZUZsb2F0KCcxZS0nICsgKChyYW5kICsgJycpLmxlbmd0aCAtIDEpKSkpLCB1cHBlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJhbmRvbShsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIFtjYW1lbCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYW1lbENhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FtZWwgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKi9cbiAgICB2YXIgY2FtZWxDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICB3b3JkID0gd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/IGNhcGl0YWxpemUod29yZCkgOiB3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZSBhbmQgdGhlIHJlbWFpbmluZ1xuICAgICAqIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYXBpdGFsaXplZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FwaXRhbGl6ZSgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdXBwZXJGaXJzdCh0b1N0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlYnVycnMgYHN0cmluZ2AgYnkgY29udmVydGluZ1xuICAgICAqIFtMYXRpbi0xIFN1cHBsZW1lbnRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluLTFfU3VwcGxlbWVudF8oVW5pY29kZV9ibG9jaykjQ2hhcmFjdGVyX3RhYmxlKVxuICAgICAqIGFuZCBbTGF0aW4gRXh0ZW5kZWQtQV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fRXh0ZW5kZWQtQSlcbiAgICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMgYW5kIHJlbW92aW5nXG4gICAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBkZWJ1cnIuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlYnVycignZMOpasOgIHZ1Jyk7XG4gICAgICogLy8gPT4gJ2RlamEgdnUnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVidXJyKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiBzdHJpbmcgJiYgc3RyaW5nLnJlcGxhY2UocmVMYXRpbiwgZGVidXJyTGV0dGVyKS5yZXBsYWNlKHJlQ29tYm9NYXJrLCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj1zdHJpbmcubGVuZ3RoXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBlbmRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2MnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcblxuICAgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBsZW5ndGhcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgbGVuZ3RoKTtcblxuICAgICAgdmFyIGVuZCA9IHBvc2l0aW9uO1xuICAgICAgcG9zaXRpb24gLT0gdGFyZ2V0Lmxlbmd0aDtcbiAgICAgIHJldHVybiBwb3NpdGlvbiA+PSAwICYmIHN0cmluZy5zbGljZShwb3NpdGlvbiwgZW5kKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gICAgICogY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gICAgICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gICAgICpcbiAgICAgKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gICAgICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAgICAgKiB1bmxlc3MgdGhleSdyZSBwYXJ0IG9mIGEgdGFnIG9yIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS4gU2VlXG4gICAgICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICAgICAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICAgICAqIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZykgdG8gcmVkdWNlXG4gICAgICogWFNTIHZlY3RvcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZXMgdGhlIGBSZWdFeHBgIHNwZWNpYWwgY2hhcmFjdGVycyBcIl5cIiwgXCIkXCIsIFwiXFxcIiwgXCIuXCIsIFwiKlwiLCBcIitcIixcbiAgICAgKiBcIj9cIiwgXCIoXCIsIFwiKVwiLCBcIltcIiwgXCJdXCIsIFwie1wiLCBcIn1cIiwgYW5kIFwifFwiIGluIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGVSZWdFeHAoJ1tsb2Rhc2hdKGh0dHBzOi8vbG9kYXNoLmNvbS8pJyk7XG4gICAgICogLy8gPT4gJ1xcW2xvZGFzaFxcXVxcKGh0dHBzOi8vbG9kYXNoXFwuY29tL1xcKSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNSZWdFeHBDaGFyLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtrZWJhYiBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTcGVjaWFsX2Nhc2Vfc3R5bGVzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGtlYmFiIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqL1xuICAgIHZhciBrZWJhYkNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnLScgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbG93ZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdmUkVEJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckZpcnN0ID0gY3JlYXRlQ2FzZUZpcnN0KCd0b0xvd2VyQ2FzZScpO1xuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuXG4gICAgICogUGFkZGluZyBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBjYW4ndCBiZSBldmVubHkgZGl2aWRlZCBieSBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCk7XG4gICAgICogLy8gPT4gJyAgYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgsICdfLScpO1xuICAgICAqIC8vID0+ICdfLWFiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzdHJMZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgbWlkID0gKGxlbmd0aCAtIHN0ckxlbmd0aCkgLyAyO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVGbG9vcihtaWQpLCBjaGFycykgK1xuICAgICAgICBzdHJpbmcgK1xuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUNlaWwobWlkKSwgY2hhcnMpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIHJpZ2h0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICdhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ2FiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZEVuZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKHN0cmluZyArIGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnICAgYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tX2FiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpICsgc3RyaW5nKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBpbnRlZ2VyIG9mIHRoZSBzcGVjaWZpZWQgcmFkaXguIElmIGByYWRpeGAgaXNcbiAgICAgKiBgdW5kZWZpbmVkYCBvciBgMGAsIGEgYHJhZGl4YCBvZiBgMTBgIGlzIHVzZWQgdW5sZXNzIGB2YWx1ZWAgaXMgYVxuICAgICAqIGhleGFkZWNpbWFsLCBpbiB3aGljaCBjYXNlIGEgYHJhZGl4YCBvZiBgMTZgIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgYWxpZ25zIHdpdGggdGhlXG4gICAgICogW0VTNSBpbXBsZW1lbnRhdGlvbl0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTUuMS4yLjIpIG9mIGBwYXJzZUludGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpeD0xMF0gVGhlIHJhZGl4IHRvIGludGVycHJldCBgdmFsdWVgIGJ5LlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFyc2VJbnQoJzA4Jyk7XG4gICAgICogLy8gPT4gOFxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzA4JywgJzEwJ10sIF8ucGFyc2VJbnQpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4LCBndWFyZCkge1xuICAgICAgaWYgKGd1YXJkIHx8IHJhZGl4ID09IG51bGwpIHtcbiAgICAgICAgcmFkaXggPSAwO1xuICAgICAgfSBlbHNlIGlmIChyYWRpeCkge1xuICAgICAgICByYWRpeCA9ICtyYWRpeDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVQYXJzZUludCh0b1N0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKSwgcmFkaXggfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwZWF0cyB0aGUgZ2l2ZW4gc3RyaW5nIGBuYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCcqJywgMyk7XG4gICAgICogLy8gPT4gJyoqKidcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAyKTtcbiAgICAgKiAvLyA9PiAnYWJjYWJjJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDApO1xuICAgICAqIC8vID0+ICcnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSZXBlYXQodG9TdHJpbmcoc3RyaW5nKSwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgbWF0Y2hlcyBmb3IgYHBhdHRlcm5gIGluIGBzdHJpbmdgIHdpdGggYHJlcGxhY2VtZW50YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3JlcGxhY2VgXShodHRwczovL21kbi5pby9TdHJpbmcvcmVwbGFjZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgbWF0Y2ggcmVwbGFjZW1lbnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGxhY2UoJ0hpIEZyZWQnLCAnRnJlZCcsICdCYXJuZXknKTtcbiAgICAgKiAvLyA9PiAnSGkgQmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGxhY2UoKSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhhcmdzWzBdKTtcblxuICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoIDwgMyA/IHN0cmluZyA6IHN0cmluZy5yZXBsYWNlKGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3NuYWtlIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NuYWtlX2Nhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc25ha2UgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJy0tRk9PLUJBUi0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICovXG4gICAgdmFyIHNuYWtlQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICdfJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3NwbGl0YF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3NwbGl0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHNlcGFyYXRvciBUaGUgc2VwYXJhdG9yIHBhdHRlcm4gdG8gc3BsaXQgYnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW1pdF0gVGhlIGxlbmd0aCB0byB0cnVuY2F0ZSByZXN1bHRzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc3RyaW5nIHNlZ21lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNwbGl0KCdhLWItYycsICctJywgMik7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNwbGl0KHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgaWYgKGxpbWl0ICYmIHR5cGVvZiBsaW1pdCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGxpbWl0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX0FSUkFZX0xFTkdUSCA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKCFsaW1pdCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoXG4gICAgICAgICAgICB0eXBlb2Ygc2VwYXJhdG9yID09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAoc2VwYXJhdG9yICE9IG51bGwgJiYgIWlzUmVnRXhwKHNlcGFyYXRvcikpXG4gICAgICAgICAgKSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKCFzZXBhcmF0b3IgJiYgaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJpbmdUb0FycmF5KHN0cmluZyksIDAsIGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzdGFydCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTdHlsaXN0aWNfb3Jfc3BlY2lhbGlzZWRfdXNhZ2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RhcnQgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqL1xuICAgIHZhciBzdGFydENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB1cHBlckZpcnN0KHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPTBdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT0gbnVsbFxuICAgICAgICA/IDBcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgc3RyaW5nLmxlbmd0aCk7XG5cbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHN0cmluZy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyB0YXJnZXQubGVuZ3RoKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICAgICAqIGluIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXJzLCBIVE1MLWVzY2FwZSBpbnRlcnBvbGF0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluXG4gICAgICogXCJlc2NhcGVcIiBkZWxpbWl0ZXJzLCBhbmQgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLiBEYXRhXG4gICAgICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAgICAgKiBvYmplY3QgaXMgZ2l2ZW4sIGl0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgXy50ZW1wbGF0ZVNldHRpbmdzYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICAgICAqIFtzb3VyY2VVUkxzXShodHRwOi8vd3d3Lmh0bWw1cm9ja3MuY29tL2VuL3R1dG9yaWFscy9kZXZlbG9wZXJ0b29scy9zb3VyY2VtYXBzLyN0b2Mtc291cmNldXJsKVxuICAgICAqIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcHJlY29tcGlsaW5nIHRlbXBsYXRlcyBzZWVcbiAgICAgKiBbbG9kYXNoJ3MgY3VzdG9tIGJ1aWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL2xvZGFzaC5jb20vY3VzdG9tLWJ1aWxkcykuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBDaHJvbWUgZXh0ZW5zaW9uIHNhbmRib3hlcyBzZWVcbiAgICAgKiBbQ2hyb21lJ3MgZXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvc2FuZGJveGluZ0V2YWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgdGVtcGxhdGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5lc2NhcGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmVzY2FwZV1cbiAgICAgKiAgVGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAgICAgKiAgVGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmltcG9ydHM9Xy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNdXG4gICAgICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmludGVycG9sYXRlPV8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZV1cbiAgICAgKiAgVGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0nbG9kYXNoLnRlbXBsYXRlU291cmNlc1tuXSddXG4gICAgICogIFRoZSBzb3VyY2VVUkwgb2YgdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAgICAgKiAgVGhlIGRhdGEgb2JqZWN0IHZhcmlhYmxlIG5hbWUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdmcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIgdG8gZXNjYXBlIGRhdGEgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICc8c2NyaXB0PicgfSk7XG4gICAgICogLy8gPT4gJzxiPiZsdDtzY3JpcHQmZ3Q7PC9iPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlciB0byBleGVjdXRlIEphdmFTY3JpcHQgYW5kIGdlbmVyYXRlIEhUTUwuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgXy5mb3JFYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBwcmludChcImhlbGxvIFwiICsgdXNlcik7ICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnYmFybmV5JyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgRVMgdGVtcGxhdGUgbGl0ZXJhbCBkZWxpbWl0ZXIgYXMgYW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvICR7IHVzZXIgfSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ3BlYmJsZXMnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSBiYWNrc2xhc2hlcyB0byB0cmVhdCBkZWxpbWl0ZXJzIGFzIHBsYWluIHRleHQuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJ2lnbm9yZWQnIH0pO1xuICAgICAqIC8vID0+ICc8JS0gdmFsdWUgJT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBpbXBvcnRzYCBvcHRpb24gdG8gaW1wb3J0IGBqUXVlcnlgIGFzIGBqcWAuXG4gICAgICogdmFyIHRleHQgPSAnPCUganEuZWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+JztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlVVJMYCBvcHRpb24gdG8gc3BlY2lmeSBhIGN1c3RvbSBzb3VyY2VVUkwgZm9yIHRoZSB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnLCB7ICdzb3VyY2VVUkwnOiAnL2Jhc2ljL2dyZWV0aW5nLmpzdCcgfSk7XG4gICAgICogY29tcGlsZWQoZGF0YSk7XG4gICAgICogLy8gPT4gRmluZCB0aGUgc291cmNlIG9mIFwiZ3JlZXRpbmcuanN0XCIgdW5kZXIgdGhlIFNvdXJjZXMgdGFiIG9yIFJlc291cmNlcyBwYW5lbCBvZiB0aGUgd2ViIGluc3BlY3Rvci5cbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGkgPCU9IGRhdGEudXNlciAlPiEnLCB7ICd2YXJpYWJsZSc6ICdkYXRhJyB9KTtcbiAgICAgKiBjb21waWxlZC5zb3VyY2U7XG4gICAgICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICAgICAqIC8vICAgdmFyIF9fdCwgX19wID0gJyc7XG4gICAgICogLy8gICBfX3AgKz0gJ2hpICcgKyAoKF9fdCA9ICggZGF0YS51c2VyICkpID09IG51bGwgPyAnJyA6IF9fdCkgKyAnISc7XG4gICAgICogLy8gICByZXR1cm4gX19wO1xuICAgICAqIC8vIH1cbiAgICAgKlxuICAgICAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAgICAgKiBfLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGUgPSAve3soW1xcc1xcU10rPyl9fS9nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIHt7IHVzZXIgfX0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIG11c3RhY2hlISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICAgICAqIC8vIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzLlxuICAgICAqIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdqc3QuanMnKSwgJ1xcXG4gICAgICogICB2YXIgSlNUID0ge1xcXG4gICAgICogICAgIFwibWFpblwiOiAnICsgXy50ZW1wbGF0ZShtYWluVGV4dCkuc291cmNlICsgJ1xcXG4gICAgICogICB9O1xcXG4gICAgICogJyk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkge1xuICAgICAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gKGh0dHA6Ly9lam9obi5vcmcvYmxvZy9qYXZhc2NyaXB0LW1pY3JvLXRlbXBsYXRpbmcvKVxuICAgICAgLy8gYW5kIExhdXJhIERva3Rvcm92YSdzIGRvVC5qcyAoaHR0cHM6Ly9naXRodWIuY29tL29sYWRvL2RvVCkuXG4gICAgICB2YXIgc2V0dGluZ3MgPSBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncztcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgb3B0aW9ucyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucywgc2V0dGluZ3MsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pO1xuXG4gICAgICB2YXIgaW1wb3J0cyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucy5pbXBvcnRzLCBzZXR0aW5ncy5pbXBvcnRzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxcbiAgICAgICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICAgICAgaW1wb3J0c1ZhbHVlcyA9IGJhc2VWYWx1ZXMoaW1wb3J0cywgaW1wb3J0c0tleXMpO1xuXG4gICAgICB2YXIgaXNFc2NhcGluZyxcbiAgICAgICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICAgICAgaW5kZXggPSAwLFxuICAgICAgICAgIGludGVycG9sYXRlID0gb3B0aW9ucy5pbnRlcnBvbGF0ZSB8fCByZU5vTWF0Y2gsXG4gICAgICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gICAgICAvLyBDb21waWxlIHRoZSByZWdleHAgdG8gbWF0Y2ggZWFjaCBkZWxpbWl0ZXIuXG4gICAgICB2YXIgcmVEZWxpbWl0ZXJzID0gUmVnRXhwKFxuICAgICAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICBpbnRlcnBvbGF0ZS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAoaW50ZXJwb2xhdGUgPT09IHJlSW50ZXJwb2xhdGUgPyByZUVzVGVtcGxhdGUgOiByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAgICAgLCAnZycpO1xuXG4gICAgICAvLyBVc2UgYSBzb3VyY2VVUkwgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICB2YXIgc291cmNlVVJMID0gJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgICgnc291cmNlVVJMJyBpbiBvcHRpb25zXG4gICAgICAgICAgPyBvcHRpb25zLnNvdXJjZVVSTFxuICAgICAgICAgIDogKCdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWycgKyAoKyt0ZW1wbGF0ZUNvdW50ZXIpICsgJ10nKVxuICAgICAgICApICsgJ1xcbic7XG5cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgICAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgICAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICAgICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICAgICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gICAgICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gICAgICB2YXIgdmFyaWFibGUgPSBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbcHJlZGljYXRlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBwcmVkaWNhdGVzIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckV2ZXJ5KFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBvdmVyRXZlcnkgPSBjcmVhdGVPdmVyKGFycmF5RXZlcnkpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmICoqYW55Kiogb2YgdGhlIGBwcmVkaWNhdGVzYCByZXR1cm5cbiAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSAobG9kYXNoRnVuYy5uYW1lICsgJycpLFxuICAgICAgICAgICAgbmFtZXMgPSByZWFsTmFtZXNba2V5XSB8fCAocmVhbE5hbWVzW2tleV0gPSBbXSk7XG5cbiAgICAgICAgbmFtZXMucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCIvKipcbiAqIEhlbHBlcnMuXG4gKi9cblxudmFyIHMgPSAxMDAwO1xudmFyIG0gPSBzICogNjA7XG52YXIgaCA9IG0gKiA2MDtcbnZhciBkID0gaCAqIDI0O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IHRocm93IGFuIGVycm9yIGlmIHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgbnVtYmVyXG4gKiBAcmV0dXJuIHtTdHJpbmd8TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2UodmFsKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBvcHRpb25zLmxvbmcgPyBmbXRMb25nKHZhbCkgOiBmbXRTaG9ydCh2YWwpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAndmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0nICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbClcbiAgKTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHN0ci5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG1hdGNoID0gL14oKD86XFxkKyk/XFwuP1xcZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhcbiAgICBzdHJcbiAgKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICd5ZWFycyc6XG4gICAgY2FzZSAneWVhcic6XG4gICAgY2FzZSAneXJzJzpcbiAgICBjYXNlICd5cic6XG4gICAgY2FzZSAneSc6XG4gICAgICByZXR1cm4gbiAqIHk7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRTaG9ydChtcykge1xuICBpZiAobXMgPj0gZCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gZCkgKyAnZCc7XG4gIH1cbiAgaWYgKG1zID49IGgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGgpICsgJ2gnO1xuICB9XG4gIGlmIChtcyA+PSBtKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBtKSArICdtJztcbiAgfVxuICBpZiAobXMgPj0gcykge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gcykgKyAncyc7XG4gIH1cbiAgcmV0dXJuIG1zICsgJ21zJztcbn1cblxuLyoqXG4gKiBMb25nIGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdExvbmcobXMpIHtcbiAgcmV0dXJuIHBsdXJhbChtcywgZCwgJ2RheScpIHx8XG4gICAgcGx1cmFsKG1zLCBoLCAnaG91cicpIHx8XG4gICAgcGx1cmFsKG1zLCBtLCAnbWludXRlJykgfHxcbiAgICBwbHVyYWwobXMsIHMsICdzZWNvbmQnKSB8fFxuICAgIG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBuLCBuYW1lKSB7XG4gIGlmIChtcyA8IG4pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1zIDwgbiAqIDEuNSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKG1zIC8gbikgKyAnICcgKyBuYW1lO1xuICB9XG4gIHJldHVybiBNYXRoLmNlaWwobXMgLyBuKSArICcgJyArIG5hbWUgKyAncyc7XG59XG4iLCIvKiEgTmF0aXZlIFByb21pc2UgT25seVxuICAgIHYwLjguMSAoYykgS3lsZSBTaW1wc29uXG4gICAgTUlUIExpY2Vuc2U6IGh0dHA6Ly9nZXRpZnkubWl0LWxpY2Vuc2Uub3JnXG4qL1xuXG4oZnVuY3Rpb24gVU1EKG5hbWUsY29udGV4dCxkZWZpbml0aW9uKXtcblx0Ly8gc3BlY2lhbCBmb3JtIG9mIFVNRCBmb3IgcG9seWZpbGxpbmcgYWNyb3NzIGV2aXJvbm1lbnRzXG5cdGNvbnRleHRbbmFtZV0gPSBjb250ZXh0W25hbWVdIHx8IGRlZmluaXRpb24oKTtcblx0aWYgKHR5cGVvZiBtb2R1bGUgIT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUuZXhwb3J0cykgeyBtb2R1bGUuZXhwb3J0cyA9IGNvbnRleHRbbmFtZV07IH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkgeyBkZWZpbmUoZnVuY3Rpb24gJEFNRCQoKXsgcmV0dXJuIGNvbnRleHRbbmFtZV07IH0pOyB9XG59KShcIlByb21pc2VcIix0eXBlb2YgZ2xvYmFsICE9IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0aGlzLGZ1bmN0aW9uIERFRigpe1xuXHQvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgYnVpbHRJblByb3AsIGN5Y2xlLCBzY2hlZHVsaW5nX3F1ZXVlLFxuXHRcdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxcblx0XHR0aW1lciA9ICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9IFwidW5kZWZpbmVkXCIpID9cblx0XHRcdGZ1bmN0aW9uIHRpbWVyKGZuKSB7IHJldHVybiBzZXRJbW1lZGlhdGUoZm4pOyB9IDpcblx0XHRcdHNldFRpbWVvdXRcblx0O1xuXG5cdC8vIGRhbW1pdCwgSUU4LlxuXHR0cnkge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInhcIix7fSk7XG5cdFx0YnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosbmFtZSx2YWwsY29uZmlnKSB7XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaixuYW1lLHtcblx0XHRcdFx0dmFsdWU6IHZhbCxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogY29uZmlnICE9PSBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0fTtcblx0fVxuXHRjYXRjaCAoZXJyKSB7XG5cdFx0YnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosbmFtZSx2YWwpIHtcblx0XHRcdG9ialtuYW1lXSA9IHZhbDtcblx0XHRcdHJldHVybiBvYmo7XG5cdFx0fTtcblx0fVxuXG5cdC8vIE5vdGU6IHVzaW5nIGEgcXVldWUgaW5zdGVhZCBvZiBhcnJheSBmb3IgZWZmaWNpZW5jeVxuXHRzY2hlZHVsaW5nX3F1ZXVlID0gKGZ1bmN0aW9uIFF1ZXVlKCkge1xuXHRcdHZhciBmaXJzdCwgbGFzdCwgaXRlbTtcblxuXHRcdGZ1bmN0aW9uIEl0ZW0oZm4sc2VsZikge1xuXHRcdFx0dGhpcy5mbiA9IGZuO1xuXHRcdFx0dGhpcy5zZWxmID0gc2VsZjtcblx0XHRcdHRoaXMubmV4dCA9IHZvaWQgMDtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YWRkOiBmdW5jdGlvbiBhZGQoZm4sc2VsZikge1xuXHRcdFx0XHRpdGVtID0gbmV3IEl0ZW0oZm4sc2VsZik7XG5cdFx0XHRcdGlmIChsYXN0KSB7XG5cdFx0XHRcdFx0bGFzdC5uZXh0ID0gaXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRmaXJzdCA9IGl0ZW07XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFzdCA9IGl0ZW07XG5cdFx0XHRcdGl0ZW0gPSB2b2lkIDA7XG5cdFx0XHR9LFxuXHRcdFx0ZHJhaW46IGZ1bmN0aW9uIGRyYWluKCkge1xuXHRcdFx0XHR2YXIgZiA9IGZpcnN0O1xuXHRcdFx0XHRmaXJzdCA9IGxhc3QgPSBjeWNsZSA9IHZvaWQgMDtcblxuXHRcdFx0XHR3aGlsZSAoZikge1xuXHRcdFx0XHRcdGYuZm4uY2FsbChmLnNlbGYpO1xuXHRcdFx0XHRcdGYgPSBmLm5leHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9KSgpO1xuXG5cdGZ1bmN0aW9uIHNjaGVkdWxlKGZuLHNlbGYpIHtcblx0XHRzY2hlZHVsaW5nX3F1ZXVlLmFkZChmbixzZWxmKTtcblx0XHRpZiAoIWN5Y2xlKSB7XG5cdFx0XHRjeWNsZSA9IHRpbWVyKHNjaGVkdWxpbmdfcXVldWUuZHJhaW4pO1xuXHRcdH1cblx0fVxuXG5cdC8vIHByb21pc2UgZHVjayB0eXBpbmdcblx0ZnVuY3Rpb24gaXNUaGVuYWJsZShvKSB7XG5cdFx0dmFyIF90aGVuLCBvX3R5cGUgPSB0eXBlb2YgbztcblxuXHRcdGlmIChvICE9IG51bGwgJiZcblx0XHRcdChcblx0XHRcdFx0b190eXBlID09IFwib2JqZWN0XCIgfHwgb190eXBlID09IFwiZnVuY3Rpb25cIlxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0X3RoZW4gPSBvLnRoZW47XG5cdFx0fVxuXHRcdHJldHVybiB0eXBlb2YgX3RoZW4gPT0gXCJmdW5jdGlvblwiID8gX3RoZW4gOiBmYWxzZTtcblx0fVxuXG5cdGZ1bmN0aW9uIG5vdGlmeSgpIHtcblx0XHRmb3IgKHZhciBpPTA7IGk8dGhpcy5jaGFpbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0bm90aWZ5SXNvbGF0ZWQoXG5cdFx0XHRcdHRoaXMsXG5cdFx0XHRcdCh0aGlzLnN0YXRlID09PSAxKSA/IHRoaXMuY2hhaW5baV0uc3VjY2VzcyA6IHRoaXMuY2hhaW5baV0uZmFpbHVyZSxcblx0XHRcdFx0dGhpcy5jaGFpbltpXVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5jaGFpbi5sZW5ndGggPSAwO1xuXHR9XG5cblx0Ly8gTk9URTogVGhpcyBpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGlzb2xhdGVcblx0Ly8gdGhlIGB0cnkuLmNhdGNoYCBzbyB0aGF0IG90aGVyIGNvZGUgY2FuIGJlXG5cdC8vIG9wdGltaXplZCBiZXR0ZXJcblx0ZnVuY3Rpb24gbm90aWZ5SXNvbGF0ZWQoc2VsZixjYixjaGFpbikge1xuXHRcdHZhciByZXQsIF90aGVuO1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2IgPT09IGZhbHNlKSB7XG5cdFx0XHRcdGNoYWluLnJlamVjdChzZWxmLm1zZyk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKGNiID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0cmV0ID0gc2VsZi5tc2c7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cmV0ID0gY2IuY2FsbCh2b2lkIDAsc2VsZi5tc2cpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJldCA9PT0gY2hhaW4ucHJvbWlzZSkge1xuXHRcdFx0XHRcdGNoYWluLnJlamVjdChUeXBlRXJyb3IoXCJQcm9taXNlLWNoYWluIGN5Y2xlXCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChfdGhlbiA9IGlzVGhlbmFibGUocmV0KSkge1xuXHRcdFx0XHRcdF90aGVuLmNhbGwocmV0LGNoYWluLnJlc29sdmUsY2hhaW4ucmVqZWN0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjaGFpbi5yZXNvbHZlKHJldCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0Y2hhaW4ucmVqZWN0KGVycik7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gcmVzb2x2ZShtc2cpIHtcblx0XHR2YXIgX3RoZW4sIHNlbGYgPSB0aGlzO1xuXG5cdFx0Ly8gYWxyZWFkeSB0cmlnZ2VyZWQ/XG5cdFx0aWYgKHNlbGYudHJpZ2dlcmVkKSB7IHJldHVybjsgfVxuXG5cdFx0c2VsZi50cmlnZ2VyZWQgPSB0cnVlO1xuXG5cdFx0Ly8gdW53cmFwXG5cdFx0aWYgKHNlbGYuZGVmKSB7XG5cdFx0XHRzZWxmID0gc2VsZi5kZWY7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGlmIChfdGhlbiA9IGlzVGhlbmFibGUobXNnKSkge1xuXHRcdFx0XHRzY2hlZHVsZShmdW5jdGlvbigpe1xuXHRcdFx0XHRcdHZhciBkZWZfd3JhcHBlciA9IG5ldyBNYWtlRGVmV3JhcHBlcihzZWxmKTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0X3RoZW4uY2FsbChtc2csXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICRyZXNvbHZlJCgpeyByZXNvbHZlLmFwcGx5KGRlZl93cmFwcGVyLGFyZ3VtZW50cyk7IH0sXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICRyZWplY3QkKCl7IHJlamVjdC5hcHBseShkZWZfd3JhcHBlcixhcmd1bWVudHMpOyB9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QuY2FsbChkZWZfd3JhcHBlcixlcnIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRzZWxmLm1zZyA9IG1zZztcblx0XHRcdFx0c2VsZi5zdGF0ZSA9IDE7XG5cdFx0XHRcdGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzY2hlZHVsZShub3RpZnksc2VsZik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0cmVqZWN0LmNhbGwobmV3IE1ha2VEZWZXcmFwcGVyKHNlbGYpLGVycik7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gcmVqZWN0KG1zZykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblxuXHRcdC8vIGFscmVhZHkgdHJpZ2dlcmVkP1xuXHRcdGlmIChzZWxmLnRyaWdnZXJlZCkgeyByZXR1cm47IH1cblxuXHRcdHNlbGYudHJpZ2dlcmVkID0gdHJ1ZTtcblxuXHRcdC8vIHVud3JhcFxuXHRcdGlmIChzZWxmLmRlZikge1xuXHRcdFx0c2VsZiA9IHNlbGYuZGVmO1xuXHRcdH1cblxuXHRcdHNlbGYubXNnID0gbXNnO1xuXHRcdHNlbGYuc3RhdGUgPSAyO1xuXHRcdGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcblx0XHRcdHNjaGVkdWxlKG5vdGlmeSxzZWxmKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsYXJyLHJlc29sdmVyLHJlamVjdGVyKSB7XG5cdFx0Zm9yICh2YXIgaWR4PTA7IGlkeDxhcnIubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0KGZ1bmN0aW9uIElJRkUoaWR4KXtcblx0XHRcdFx0Q29uc3RydWN0b3IucmVzb2x2ZShhcnJbaWR4XSlcblx0XHRcdFx0LnRoZW4oXG5cdFx0XHRcdFx0ZnVuY3Rpb24gJHJlc29sdmVyJChtc2cpe1xuXHRcdFx0XHRcdFx0cmVzb2x2ZXIoaWR4LG1zZyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRyZWplY3RlclxuXHRcdFx0XHQpO1xuXHRcdFx0fSkoaWR4KTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBNYWtlRGVmV3JhcHBlcihzZWxmKSB7XG5cdFx0dGhpcy5kZWYgPSBzZWxmO1xuXHRcdHRoaXMudHJpZ2dlcmVkID0gZmFsc2U7XG5cdH1cblxuXHRmdW5jdGlvbiBNYWtlRGVmKHNlbGYpIHtcblx0XHR0aGlzLnByb21pc2UgPSBzZWxmO1xuXHRcdHRoaXMuc3RhdGUgPSAwO1xuXHRcdHRoaXMudHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0dGhpcy5jaGFpbiA9IFtdO1xuXHRcdHRoaXMubXNnID0gdm9pZCAwO1xuXHR9XG5cblx0ZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuXHRcdGlmICh0eXBlb2YgZXhlY3V0b3IgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fX05QT19fICE9PSAwKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBwcm9taXNlXCIpO1xuXHRcdH1cblxuXHRcdC8vIGluc3RhbmNlIHNoYWRvd2luZyB0aGUgaW5oZXJpdGVkIFwiYnJhbmRcIlxuXHRcdC8vIHRvIHNpZ25hbCBhbiBhbHJlYWR5IFwiaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cdFx0dGhpcy5fX05QT19fID0gMTtcblxuXHRcdHZhciBkZWYgPSBuZXcgTWFrZURlZih0aGlzKTtcblxuXHRcdHRoaXNbXCJ0aGVuXCJdID0gZnVuY3Rpb24gdGhlbihzdWNjZXNzLGZhaWx1cmUpIHtcblx0XHRcdHZhciBvID0ge1xuXHRcdFx0XHRzdWNjZXNzOiB0eXBlb2Ygc3VjY2VzcyA9PSBcImZ1bmN0aW9uXCIgPyBzdWNjZXNzIDogdHJ1ZSxcblx0XHRcdFx0ZmFpbHVyZTogdHlwZW9mIGZhaWx1cmUgPT0gXCJmdW5jdGlvblwiID8gZmFpbHVyZSA6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdFx0Ly8gTm90ZTogYHRoZW4oLi4pYCBpdHNlbGYgY2FuIGJlIGJvcnJvd2VkIHRvIGJlIHVzZWQgYWdhaW5zdFxuXHRcdFx0Ly8gYSBkaWZmZXJlbnQgcHJvbWlzZSBjb25zdHJ1Y3RvciBmb3IgbWFraW5nIHRoZSBjaGFpbmVkIHByb21pc2UsXG5cdFx0XHQvLyBieSBzdWJzdGl0dXRpbmcgYSBkaWZmZXJlbnQgYHRoaXNgIGJpbmRpbmcuXG5cdFx0XHRvLnByb21pc2UgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihmdW5jdGlvbiBleHRyYWN0Q2hhaW4ocmVzb2x2ZSxyZWplY3QpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0by5yZXNvbHZlID0gcmVzb2x2ZTtcblx0XHRcdFx0by5yZWplY3QgPSByZWplY3Q7XG5cdFx0XHR9KTtcblx0XHRcdGRlZi5jaGFpbi5wdXNoKG8pO1xuXG5cdFx0XHRpZiAoZGVmLnN0YXRlICE9PSAwKSB7XG5cdFx0XHRcdHNjaGVkdWxlKG5vdGlmeSxkZWYpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gby5wcm9taXNlO1xuXHRcdH07XG5cdFx0dGhpc1tcImNhdGNoXCJdID0gZnVuY3Rpb24gJGNhdGNoJChmYWlsdXJlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxmYWlsdXJlKTtcblx0XHR9O1xuXG5cdFx0dHJ5IHtcblx0XHRcdGV4ZWN1dG9yLmNhbGwoXG5cdFx0XHRcdHZvaWQgMCxcblx0XHRcdFx0ZnVuY3Rpb24gcHVibGljUmVzb2x2ZShtc2cpe1xuXHRcdFx0XHRcdHJlc29sdmUuY2FsbChkZWYsbXNnKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZnVuY3Rpb24gcHVibGljUmVqZWN0KG1zZykge1xuXHRcdFx0XHRcdHJlamVjdC5jYWxsKGRlZixtc2cpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRyZWplY3QuY2FsbChkZWYsZXJyKTtcblx0XHR9XG5cdH1cblxuXHR2YXIgUHJvbWlzZVByb3RvdHlwZSA9IGJ1aWx0SW5Qcm9wKHt9LFwiY29uc3RydWN0b3JcIixQcm9taXNlLFxuXHRcdC8qY29uZmlndXJhYmxlPSovZmFsc2Vcblx0KTtcblxuXHQvLyBOb3RlOiBBbmRyb2lkIDQgY2Fubm90IHVzZSBgT2JqZWN0LmRlZmluZVByb3BlcnR5KC4uKWAgaGVyZVxuXHRQcm9taXNlLnByb3RvdHlwZSA9IFByb21pc2VQcm90b3R5cGU7XG5cblx0Ly8gYnVpbHQtaW4gXCJicmFuZFwiIHRvIHNpZ25hbCBhbiBcInVuaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2VQcm90b3R5cGUsXCJfX05QT19fXCIsMCxcblx0XHQvKmNvbmZpZ3VyYWJsZT0qL2ZhbHNlXG5cdCk7XG5cblx0YnVpbHRJblByb3AoUHJvbWlzZSxcInJlc29sdmVcIixmdW5jdGlvbiBQcm9taXNlJHJlc29sdmUobXNnKSB7XG5cdFx0dmFyIENvbnN0cnVjdG9yID0gdGhpcztcblxuXHRcdC8vIHNwZWMgbWFuZGF0ZWQgY2hlY2tzXG5cdFx0Ly8gbm90ZTogYmVzdCBcImlzUHJvbWlzZVwiIGNoZWNrIHRoYXQncyBwcmFjdGljYWwgZm9yIG5vd1xuXHRcdGlmIChtc2cgJiYgdHlwZW9mIG1zZyA9PSBcIm9iamVjdFwiICYmIG1zZy5fX05QT19fID09PSAxKSB7XG5cdFx0XHRyZXR1cm4gbXNnO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzb2x2ZShtc2cpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwicmVqZWN0XCIsZnVuY3Rpb24gUHJvbWlzZSRyZWplY3QobXNnKSB7XG5cdFx0cmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdHJlamVjdChtc2cpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwiYWxsXCIsZnVuY3Rpb24gUHJvbWlzZSRhbGwoYXJyKSB7XG5cdFx0dmFyIENvbnN0cnVjdG9yID0gdGhpcztcblxuXHRcdC8vIHNwZWMgbWFuZGF0ZWQgY2hlY2tzXG5cdFx0aWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcblx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcblx0XHR9XG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvci5yZXNvbHZlKFtdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBsZW4gPSBhcnIubGVuZ3RoLCBtc2dzID0gQXJyYXkobGVuKSwgY291bnQgPSAwO1xuXG5cdFx0XHRpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsYXJyLGZ1bmN0aW9uIHJlc29sdmVyKGlkeCxtc2cpIHtcblx0XHRcdFx0bXNnc1tpZHhdID0gbXNnO1xuXHRcdFx0XHRpZiAoKytjb3VudCA9PT0gbGVuKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZShtc2dzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxyZWplY3QpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwicmFjZVwiLGZ1bmN0aW9uIFByb21pc2UkcmFjZShhcnIpIHtcblx0XHR2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG5cdFx0Ly8gc3BlYyBtYW5kYXRlZCBjaGVja3Ncblx0XHRpZiAoVG9TdHJpbmcuY2FsbChhcnIpICE9IFwiW29iamVjdCBBcnJheV1cIikge1xuXHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yLnJlamVjdChUeXBlRXJyb3IoXCJOb3QgYW4gYXJyYXlcIikpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0aXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLGFycixmdW5jdGlvbiByZXNvbHZlcihpZHgsbXNnKXtcblx0XHRcdFx0cmVzb2x2ZShtc2cpO1xuXHRcdFx0fSxyZWplY3QpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRyZXR1cm4gUHJvbWlzZTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9ybWF0ID0gcmVxdWlyZSgnZm9ybWF0LXV0aWwnKTtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBwcm90ZWN0ZWRQcm9wZXJ0aWVzID0gWyduYW1lJywgJ21lc3NhZ2UnLCAnc3RhY2snXTtcbnZhciBlcnJvclByb3RvdHlwZVByb3BlcnRpZXMgPSBbXG4gICduYW1lJywgJ21lc3NhZ2UnLCAnZGVzY3JpcHRpb24nLCAnbnVtYmVyJywgJ2NvZGUnLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdjb2x1bW5OdW1iZXInLFxuICAnc291cmNlVVJMJywgJ2xpbmUnLCAnY29sdW1uJywgJ3N0YWNrJ1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuZXJyb3IgPSBjcmVhdGUoRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuZXZhbCA9IGNyZWF0ZShFdmFsRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMucmFuZ2UgPSBjcmVhdGUoUmFuZ2VFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5yZWZlcmVuY2UgPSBjcmVhdGUoUmVmZXJlbmNlRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuc3ludGF4ID0gY3JlYXRlKFN5bnRheEVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSBjcmVhdGUoVHlwZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnVyaSA9IGNyZWF0ZShVUklFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5mb3JtYXR0ZXIgPSBmb3JtYXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgb25vfSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGdpdmVuIEVycm9yIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7Q2xhc3N9IEtsYXNzIC0gVGhlIEVycm9yIHN1YmNsYXNzIHRvIGNyZWF0ZVxuICogQHJldHVybnMge29ub31cbiAqL1xuZnVuY3Rpb24gY3JlYXRlIChLbGFzcykge1xuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gICBbZXJyXSAgICAgLSBUaGUgb3JpZ2luYWwgZXJyb3IsIGlmIGFueVxuICAgKiBAcGFyYW0ge29iamVjdH0gIFtwcm9wc10gICAtIEFuIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGVycm9yIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFttZXNzYWdlXSAtIFRoZSBlcnJvciBtZXNzYWdlLiBNYXkgY29udGFpbiB7QGxpbmsgdXRpbCNmb3JtYXR9IHBsYWNlaG9sZGVyc1xuICAgKiBAcGFyYW0gey4uLip9ICAgIFtwYXJhbXNdICAtIFBhcmFtZXRlcnMgdGhhdCBtYXAgdG8gdGhlIGBtZXNzYWdlYCBwbGFjZWhvbGRlcnNcbiAgICogQHJldHVybnMge0Vycm9yfVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIG9ub0ZhY3RvcnkgKGVyciwgcHJvcHMsIG1lc3NhZ2UsIHBhcmFtcykgeyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgZm9ybWF0QXJncyA9IFtdO1xuICAgIHZhciBmb3JtYXR0ZWRNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggYXJndW1lbnRzIHdlcmUgYWN0dWFsbHkgc3BlY2lmaWVkXG4gICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtYXRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgZXJyID0gcHJvcHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdEFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICBwcm9wcyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtYXRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgZm9ybWF0IGFyZ3VtZW50cywgdGhlbiBmb3JtYXQgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICBpZiAoZm9ybWF0QXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JtYXR0ZWRNZXNzYWdlID0gbW9kdWxlLmV4cG9ydHMuZm9ybWF0dGVyLmFwcGx5KG51bGwsIGZvcm1hdEFyZ3MpO1xuICAgIH1cblxuICAgIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UpIHtcbiAgICAgIC8vIFRoZSBpbm5lci1lcnJvcidzIG1lc3NhZ2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgbmV3IG1lc3NhZ2VcbiAgICAgIGZvcm1hdHRlZE1lc3NhZ2UgKz0gKGZvcm1hdHRlZE1lc3NhZ2UgPyAnIFxcbicgOiAnJykgKyBlcnIubWVzc2FnZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG5ldyBlcnJvclxuICAgIC8vIE5PVEU6IERPTidUIG1vdmUgdGhpcyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uISBXZSBkb24ndCB3YW50IHRvIHBvbGx1dGUgdGhlIHN0YWNrIHRyYWNlXG4gICAgdmFyIG5ld0Vycm9yID0gbmV3IEtsYXNzKGZvcm1hdHRlZE1lc3NhZ2UpO1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBuZXcgZXJyb3Igd2l0aCB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgZXh0ZW5kRXJyb3IobmV3RXJyb3IsIGVycik7ICAgLy8gQ29weSBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBlcnJvclxuICAgIGV4dGVuZFRvSlNPTihuZXdFcnJvcik7ICAgICAgIC8vIFJlcGxhY2UgdGhlIG9yaWdpbmFsIHRvSlNPTiBtZXRob2RcbiAgICBleHRlbmQobmV3RXJyb3IsIHByb3BzKTsgICAgICAvLyBDb3B5IGN1c3RvbSBwcm9wZXJ0aWVzLCBwb3NzaWJseSBpbmNsdWRpbmcgYSBjdXN0b20gdG9KU09OIG1ldGhvZFxuXG4gICAgcmV0dXJuIG5ld0Vycm9yO1xuICB9O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgdGhlIHRhcmdldEVycm9yIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBlcnJvci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSAgIHRhcmdldEVycm9yIC0gVGhlIGVycm9yIG9iamVjdCB0byBleHRlbmRcbiAqIEBwYXJhbSB7P0Vycm9yfSAgc291cmNlRXJyb3IgLSBUaGUgc291cmNlIGVycm9yIG9iamVjdCwgaWYgYW55XG4gKi9cbmZ1bmN0aW9uIGV4dGVuZEVycm9yICh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpIHtcbiAgZXh0ZW5kU3RhY2sodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKTtcbiAgZXh0ZW5kKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcik7XG59XG5cbi8qKlxuICogSmF2YVNjcmlwdCBlbmdpbmVzIGRpZmZlciBpbiBob3cgZXJyb3JzIGFyZSBzZXJpYWxpemVkIHRvIEpTT04gLSBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXNcbiAqIHRvIGN1c3RvbSBlcnJvciBwcm9wZXJ0aWVzIGFuZCBzdGFjayB0cmFjZXMuICBTbyB3ZSBhZGQgb3VyIG93biB0b0pTT04gbWV0aG9kIHRoYXQgQUxXQVlTXG4gKiBvdXRwdXRzIGV2ZXJ5IHByb3BlcnR5IG9mIHRoZSBlcnJvci5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5kVG9KU09OIChlcnJvcikge1xuICBlcnJvci50b0pTT04gPSBlcnJvclRvSlNPTjtcblxuICAvLyBBbHNvIGFkZCBhbiBpbnNwZWN0KCkgbWV0aG9kLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE5vZGUuanMnIGB1dGlsLmluc3BlY3QoKWAgbWV0aG9kXG4gIGVycm9yLmluc3BlY3QgPSBlcnJvclRvU3RyaW5nO1xufVxuXG4vKipcbiAqIEV4dGVuZHMgdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc291cmNlIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gIHRhcmdldCAtIFRoZSBvYmplY3QgdG8gZXh0ZW5kXG4gKiBAcGFyYW0gez9zb3VyY2V9IHNvdXJjZSAtIFRoZSBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhcmUgY29waWVkXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICAvLyBEb24ndCBjb3B5IFwicHJvdGVjdGVkXCIgcHJvcGVydGllcywgc2luY2UgdGhleSBoYXZlIHNwZWNpYWwgbWVhbmluZy9iZWhhdmlvclxuICAgICAgLy8gYW5kIGFyZSBzZXQgYnkgdGhlIG9ub0ZhY3RvcnkgZnVuY3Rpb25cbiAgICAgIGlmIChwcm90ZWN0ZWRQcm9wZXJ0aWVzLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyByZWFkLW9ubHksIHNvIGl0IGNhbid0IGJlIGNvcGllZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEN1c3RvbSBKU09OIHNlcmlhbGl6ZXIgZm9yIEVycm9yIG9iamVjdHMuXG4gKiBSZXR1cm5zIGFsbCBidWlsdC1pbiBlcnJvciBwcm9wZXJ0aWVzLCBhcyB3ZWxsIGFzIGV4dGVuZGVkIHByb3BlcnRpZXMuXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZXJyb3JUb0pTT04gKCkge1xuICB2YXIganNvbiA9IHt9O1xuXG4gIC8vIEdldCBhbGwgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBlcnJvclxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuXG4gIC8vIEFsc28gaW5jbHVkZSBwcm9wZXJ0aWVzIGZyb20gdGhlIEVycm9yIHByb3RvdHlwZVxuICBrZXlzID0ga2V5cy5jb25jYXQoZXJyb3JQcm90b3R5cGVQcm9wZXJ0aWVzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsdWUgPSB0aGlzW2tleV07XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgaWYgKHR5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGpzb25ba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqc29uO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgRXJyb3Igb2JqZWN0cyBhcyBodW1hbi1yZWFkYWJsZSBKU09OIHN0cmluZ3MgZm9yIGRlYnVnZ2luZy9sb2dnaW5nIHB1cnBvc2VzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVycm9yVG9TdHJpbmcgKCkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgbnVsbCwgMikucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEV4dGVuZCB0aGUgZXJyb3Igc3RhY2sgdG8gaW5jbHVkZSBpdHMgY2F1c2VcbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSB0YXJnZXRFcnJvclxuICogQHBhcmFtIHtFcnJvcn0gc291cmNlRXJyb3JcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kU3RhY2sgKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcikge1xuICBpZiAoaGFzTGF6eVN0YWNrKHRhcmdldEVycm9yKSkge1xuICAgIGlmIChzb3VyY2VFcnJvcikge1xuICAgICAgbGF6eUpvaW5TdGFja3ModGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsYXp5UG9wU3RhY2sodGFyZ2V0RXJyb3IpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoc291cmNlRXJyb3IpIHtcbiAgICAgIHRhcmdldEVycm9yLnN0YWNrID0gam9pblN0YWNrcyh0YXJnZXRFcnJvci5zdGFjaywgc291cmNlRXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRhcmdldEVycm9yLnN0YWNrID0gcG9wU3RhY2sodGFyZ2V0RXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZHMgdGhlIG9yaWdpbmFsIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgdG8gdGhlIG5ldyBFcnJvcidzIHN0YWNrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RhY2tcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGpvaW5TdGFja3MgKG5ld1N0YWNrLCBvcmlnaW5hbFN0YWNrKSB7XG4gIG5ld1N0YWNrID0gcG9wU3RhY2sobmV3U3RhY2spO1xuXG4gIGlmIChuZXdTdGFjayAmJiBvcmlnaW5hbFN0YWNrKSB7XG4gICAgcmV0dXJuIG5ld1N0YWNrICsgJ1xcblxcbicgKyBvcmlnaW5hbFN0YWNrO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBuZXdTdGFjayB8fCBvcmlnaW5hbFN0YWNrO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBPbm8gZnJvbSB0aGUgc3RhY2ssIHNvIHRoYXQgdGhlIHN0YWNrIHN0YXJ0cyBhdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhY2tcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvcFN0YWNrIChzdGFjaykge1xuICBpZiAoc3RhY2spIHtcbiAgICB2YXIgbGluZXMgPSBzdGFjay5zcGxpdCgnXFxuJyk7XG5cbiAgICBpZiAobGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgLy8gVGhlIHN0YWNrIG9ubHkgaGFzIG9uZSBsaW5lLCBzbyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIHJlbW92ZVxuICAgICAgcmV0dXJuIHN0YWNrO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGBvbm9GYWN0b3J5YCBjYWxsIGluIHRoZSBzdGFjaywgYW5kIHJlbW92ZSBpdFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaW5lID0gbGluZXNbaV07XG4gICAgICBpZiAobGluZS5pbmRleE9mKCdvbm9GYWN0b3J5JykgPj0gMCkge1xuICAgICAgICBsaW5lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgc3RhY2sgZG9lc24ndCBjb250YWluIGEgY2FsbCB0byBgb25vRmFjdG9yeWAuXG4gICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIG1pbmlmaWNhdGlvbiBvciBzb21lIG9wdGltaXphdGlvbiBvZiB0aGUgSlMgZW5naW5lLlxuICAgIC8vIFNvIGp1c3QgcmV0dXJuIHRoZSBzdGFjayBhcy1pcy5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2VzIGEgb25lLXRpbWUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHRoaXMgSmF2YVNjcmlwdCBlbmdpbmVcbiAqIHN1cHBvcnRzIGxhenkgYEVycm9yLnN0YWNrYCBwcm9wZXJ0aWVzLlxuICovXG52YXIgc3VwcG9ydHNMYXp5U3RhY2sgPSAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISEoXG4gICAgLy8gRVM1IHByb3BlcnR5IGRlc2NyaXB0b3JzIG11c3QgYmUgc3VwcG9ydGVkXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiZcblxuICAgIC8vIENocm9tZSBvbiBBbmRyb2lkIGRvZXNuJ3Qgc3VwcG9ydCBsYXp5IHN0YWNrcyA6KFxuICAgICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJyB8fCAhL0FuZHJvaWQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpXG4gICk7XG59KCkpO1xuXG4vKipcbiAqIERvZXMgdGhpcyBlcnJvciBoYXZlIGEgbGF6eSBzdGFjayBwcm9wZXJ0eT9cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNMYXp5U3RhY2sgKGVycikge1xuICBpZiAoIXN1cHBvcnRzTGF6eVN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVyciwgJ3N0YWNrJyk7XG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIENhbGxzIHtAbGluayBqb2luU3RhY2tzfSBsYXppbHksIHdoZW4gdGhlIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gdGFyZ2V0RXJyb3JcbiAqIEBwYXJhbSB7RXJyb3J9IHNvdXJjZUVycm9yXG4gKi9cbmZ1bmN0aW9uIGxhenlKb2luU3RhY2tzICh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpIHtcbiAgdmFyIHRhcmdldFN0YWNrID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXRFcnJvciwgJ3N0YWNrJyk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldEVycm9yLCAnc3RhY2snLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gam9pblN0YWNrcyh0YXJnZXRTdGFjay5nZXQuYXBwbHkodGFyZ2V0RXJyb3IpLCBzb3VyY2VFcnJvci5zdGFjayk7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogQ2FsbHMge0BsaW5rIHBvcFN0YWNrfSBsYXppbHksIHdoZW4gdGhlIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAqL1xuZnVuY3Rpb24gbGF6eVBvcFN0YWNrIChlcnJvcikge1xuICB2YXIgdGFyZ2V0U3RhY2sgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVycm9yLCAnc3RhY2snKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBwb3BTdGFjayh0YXJnZXRTdGFjay5nZXQuYXBwbHkoZXJyb3IpKTtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiIsIi8vIC5kaXJuYW1lLCAuYmFzZW5hbWUsIGFuZCAuZXh0bmFtZSBtZXRob2RzIGFyZSBleHRyYWN0ZWQgZnJvbSBOb2RlLmpzIHY4LjExLjEsXG4vLyBiYWNrcG9ydGVkIGFuZCB0cmFuc3BsaXRlZCB3aXRoIEJhYmVsLCB3aXRoIGJhY2t3YXJkcy1jb21wYXQgZml4ZXNcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIHJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCBhcnJheSB3aXRoIGRpcmVjdG9yeSBuYW1lcyB0aGVyZVxuLy8gbXVzdCBiZSBubyBzbGFzaGVzLCBlbXB0eSBlbGVtZW50cywgb3IgZGV2aWNlIG5hbWVzIChjOlxcKSBpbiB0aGUgYXJyYXlcbi8vIChzbyBhbHNvIG5vIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMgLSBpdCBkb2VzIG5vdCBkaXN0aW5ndWlzaFxuLy8gcmVsYXRpdmUgYW5kIGFic29sdXRlIHBhdGhzKVxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXkocGFydHMsIGFsbG93QWJvdmVSb290KSB7XG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBsYXN0ID0gcGFydHNbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgdmFyIGhhc1Jvb3QgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBoYXNSb290ID8gJy8nIDogJy4nO1xuICBpZiAoaGFzUm9vdCAmJiBlbmQgPT09IDEpIHtcbiAgICAvLyByZXR1cm4gJy8vJztcbiAgICAvLyBCYWNrd2FyZHMtY29tcGF0IGZpeDpcbiAgICByZXR1cm4gJy8nO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKDAsIGVuZCk7XG59O1xuXG5mdW5jdGlvbiBiYXNlbmFtZShwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG5cbiAgdmFyIHN0YXJ0ID0gMDtcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgdmFyIGk7XG5cbiAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaSkgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZCk7XG59XG5cbi8vIFVzZXMgYSBtaXhlZCBhcHByb2FjaCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIGFzIGV4dCBiZWhhdmlvciBjaGFuZ2VkXG4vLyBpbiBuZXcgTm9kZS5qcyB2ZXJzaW9ucywgc28gb25seSBiYXNlbmFtZSgpIGFib3ZlIGlzIGJhY2twb3J0ZWQgaGVyZVxuZXhwb3J0cy5iYXNlbmFtZSA9IGZ1bmN0aW9uIChwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBiYXNlbmFtZShwYXRoKTtcbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn07XG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG4gIHZhciBzdGFydERvdCA9IC0xO1xuICB2YXIgc3RhcnRQYXJ0ID0gMDtcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpXG4gICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSlcbiAgICAgICAgICBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgcHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59O1xuXG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJ1xuICAgID8gZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9XG4gICAgOiBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEplcmVteSBXaGl0bG9ja1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3VwcG9ydGVkTG9hZGVycyA9IHtcbiAgZmlsZTogcmVxdWlyZSgnLi9saWIvbG9hZGVycy9maWxlJyksXG4gIGh0dHA6IHJlcXVpcmUoJy4vbGliL2xvYWRlcnMvaHR0cCcpLFxuICBodHRwczogcmVxdWlyZSgnLi9saWIvbG9hZGVycy9odHRwJylcbn07XG52YXIgZGVmYXVsdExvYWRlciA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBpbXBvcnRTY3JpcHRzID09PSAnZnVuY3Rpb24nID9cbiAgICAgIHN1cHBvcnRlZExvYWRlcnMuaHR0cCA6XG4gICAgICBzdXBwb3J0ZWRMb2FkZXJzLmZpbGU7XG5cbi8vIExvYWQgcHJvbWlzZXMgcG9seWZpbGwgaWYgbmVjZXNzYXJ5XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgcmVxdWlyZSgnbmF0aXZlLXByb21pc2Utb25seScpO1xufVxuXG5mdW5jdGlvbiBnZXRTY2hlbWUgKGxvY2F0aW9uKSB7XG4gIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbi5pbmRleE9mKCc6Ly8nKSA9PT0gLTEgPyAnJyA6IGxvY2F0aW9uLnNwbGl0KCc6Ly8nKVswXTtcbiAgfVxuXG4gIHJldHVybiBsb2NhdGlvbjtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IHRoYXQgcHJvdmlkZXMgYSBzaW5nbGUgQVBJIGZvciBsb2FkaW5nIHRoZSBjb250ZW50IG9mIGEgcGF0aC9VUkwuXG4gKlxuICogQG1vZHVsZSBwYXRoLWxvYWRlclxuICovXG5cbmZ1bmN0aW9uIGdldExvYWRlciAobG9jYXRpb24pIHtcbiAgdmFyIHNjaGVtZSA9IGdldFNjaGVtZShsb2NhdGlvbik7XG4gIHZhciBsb2FkZXIgPSBzdXBwb3J0ZWRMb2FkZXJzW3NjaGVtZV07XG5cbiAgaWYgKHR5cGVvZiBsb2FkZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHNjaGVtZSA9PT0gJycpIHtcbiAgICAgIGxvYWRlciA9IGRlZmF1bHRMb2FkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc2NoZW1lOiAnICsgc2NoZW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9hZGVyO1xufVxuXG4vKipcbiAqIExvYWRzIGEgZG9jdW1lbnQgYXQgdGhlIHByb3ZpZGVkIGxvY2F0aW9uIGFuZCByZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIHttb2R1bGU6cGF0aC1sb2FkZXJ+TG9hZE9wdGlvbnN9IGxvY2F0aW9uIC0gVGhlIGxvY2F0aW9uIHRvIHRoZSBkb2N1bWVudFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPCo+fSBBbHdheXMgcmV0dXJucyBhIHByb21pc2UgZXZlbiBpZiB0aGVyZSBpcyBhIGNhbGxiYWNrIHByb3ZpZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEV4YW1wbGUgdXNpbmcgUHJvbWlzZXNcbiAqXG4gKiBQYXRoTG9hZGVyXG4gKiAgIC5sb2FkKCcuL3BhY2thZ2UuanNvbicpXG4gKiAgIC50aGVuKEpTT04ucGFyc2UpXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICogICAgIGNvbnNvbGUubG9nKGRvY3VtZW50Lm5hbWUgKyAnICgnICsgZG9jdW1lbnQudmVyc2lvbiArICcpOiAnICsgZG9jdW1lbnQuZGVzY3JpcHRpb24pO1xuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICogICB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB1c2luZyBvcHRpb25zLnByZXBhcmVSZXF1ZXN0IHRvIHByb3ZpZGUgYXV0aGVudGljYXRpb24gZGV0YWlscyBmb3IgYSByZW1vdGVseSBzZWN1cmUgVVJMXG4gKlxuICogUGF0aExvYWRlclxuICogICAubG9hZCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93aGl0bG9ja2pjL3BhdGgtbG9hZGVyJywge1xuICogICAgIHByZXBhcmVSZXF1ZXN0OiBmdW5jdGlvbiAocmVxLCBjYWxsYmFjaykge1xuICogICAgICAgcmVxLmF1dGgoJ215LXVzZXJuYW1lJywgJ215LXBhc3N3b3JkJyk7XG4gKiAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIHJlcSk7XG4gKiAgICAgfVxuICogICB9KVxuICogICAudGhlbihKU09OLnBhcnNlKVxuICogICAudGhlbihmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAqICAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5mdWxsX25hbWUgKyAnOiAnICsgZG9jdW1lbnQuZGVzY3JpcHRpb24pO1xuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICogICB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSBsb2FkaW5nIGEgWUFNTCBmaWxlXG4gKlxuICogUGF0aExvYWRlclxuICogICAubG9hZCgnL1VzZXJzL25vdC15b3UvcHJvamVjdHMvcGF0aC1sb2FkZXIvLnRyYXZpcy55bWwnKVxuICogICAudGhlbihZQU1MLnNhZmVMb2FkKVxuICogICAudGhlbihmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAqICAgICBjb25zb2xlLmxvZygncGF0aC1sb2FkZXIgdXNlcyB0aGUnLCBkb2N1bWVudC5sYW5ndWFnZSwgJ2xhbmd1YWdlLicpO1xuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICogICB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSBsb2FkaW5nIGEgWUFNTCBmaWxlIHdpdGggb3B0aW9ucy5wcm9jZXNzQ29udGVudCAoVXNlZnVsIGlmIHlvdSBuZWVkIGluZm9ybWF0aW9uIGluIHRoZSByYXcgcmVzcG9uc2UpXG4gKlxuICogUGF0aExvYWRlclxuICogICAubG9hZCgnL1VzZXJzL25vdC15b3UvcHJvamVjdHMvcGF0aC1sb2FkZXIvLnRyYXZpcy55bWwnLCB7XG4gKiAgICAgcHJvY2Vzc0NvbnRlbnQ6IGZ1bmN0aW9uIChyZXMsIGNhbGxiYWNrKSB7XG4gKiAgICAgICBjYWxsYmFjayhZQU1MLnNhZmVMb2FkKHJlcy50ZXh0KSk7XG4gKiAgICAgfVxuICogICB9KVxuICogICAudGhlbihmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAqICAgICBjb25zb2xlLmxvZygncGF0aC1sb2FkZXIgdXNlcyB0aGUnLCBkb2N1bWVudC5sYW5ndWFnZSwgJ2xhbmd1YWdlLicpO1xuICogICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICogICB9KTtcbiAqL1xubW9kdWxlLmV4cG9ydHMubG9hZCA9IGZ1bmN0aW9uIChsb2NhdGlvbiwgb3B0aW9ucykge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvLyBEZWZhdWx0IG9wdGlvbnMgdG8gZW1wdHkgb2JqZWN0XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBhcmd1bWVudHNcbiAgYWxsVGFza3MgPSBhbGxUYXNrcy50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbG9jYXRpb24gaXMgcmVxdWlyZWQnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2xvY2F0aW9uIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMucHJvY2Vzc0NvbnRlbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRpb25zLnByb2Nlc3NDb250ZW50ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMucHJvY2Vzc0NvbnRlbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBMb2FkIHRoZSBkb2N1bWVudCBmcm9tIHRoZSBwcm92aWRlZCBsb2NhdGlvbiBhbmQgcHJvY2VzcyBpdFxuICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIGxvYWRlciA9IGdldExvYWRlcihsb2NhdGlvbik7XG5cbiAgICAgICAgbG9hZGVyLmxvYWQobG9jYXRpb24sIG9wdGlvbnMgfHwge30sIGZ1bmN0aW9uIChlcnIsIGRvY3VtZW50KSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoZG9jdW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIGlmIChvcHRpb25zLnByb2Nlc3NDb250ZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgLy8gRm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gZmlsZSBhbmQgaHR0cCwgYWx3YXlzIHNlbmQgYW4gb2JqZWN0IHdpdGggYSAndGV4dCcgcHJvcGVydHkgY29udGFpbmluZyB0aGUgcmF3XG4gICAgICAgICAgLy8gc3RyaW5nIHZhbHVlIGJlaW5nIHByb2Nlc3NlZC5cbiAgICAgICAgICBvcHRpb25zLnByb2Nlc3NDb250ZW50KHR5cGVvZiByZXMgPT09ICdvYmplY3QnID8gcmVzIDoge3RleHQ6IHJlc30sIGZ1bmN0aW9uIChlcnIsIHByb2Nlc3NlZCkge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocHJvY2Vzc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVyZSB3YXMgbm8gY29udGVudCBwcm9jZXNzb3IsIHdlIHdpbGwgYXNzdW1lIHRoYXQgZm9yIGFsbCBvYmplY3RzIHRoYXQgaXQgaXMgYSBTdXBlcmFnZW50IHJlc3BvbnNlXG4gICAgICAgIC8vIGFuZCB3aWxsIHJldHVybiBpdHMgYHRleHRgIHByb3BlcnR5IHZhbHVlLiAgT3RoZXJ3aXNlLCB3ZSB3aWxsIHJldHVybiB0aGUgcmF3IHJlc3BvbnNlLlxuICAgICAgICByZXR1cm4gdHlwZW9mIHJlcyA9PT0gJ29iamVjdCcgPyByZXMudGV4dCA6IHJlcztcbiAgICAgIH1cbiAgICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBKZXJlbXkgV2hpdGxvY2tcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHVuc3VwcG9ydGVkRXJyb3IgPSBuZXcgVHlwZUVycm9yKCdUaGUgXFwnZmlsZVxcJyBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgYnJvd3NlcicpO1xuXG4vKipcbiAqIFRoZSBmaWxlIGxvYWRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyLlxuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSB0aGUgZmlsZSBsb2FkZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgYnJvd3NlclxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRCYXNlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyB1bnN1cHBvcnRlZEVycm9yO1xufTtcblxuLyoqXG4gKiBUaGUgZmlsZSBsb2FkZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgYnJvd3Nlci5cbiAqL1xubW9kdWxlLmV4cG9ydHMubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGZuID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcblxuICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4odW5zdXBwb3J0ZWRFcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgdW5zdXBwb3J0ZWRFcnJvcjtcbiAgfVxufTtcbiIsIi8qIGVzbGludC1lbnYgbm9kZSwgYnJvd3NlciAqL1xuXG4vKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEplcmVteSBXaGl0bG9ja1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVxdWVzdCA9IHJlcXVpcmUoJ3N1cGVyYWdlbnQnKTtcblxudmFyIHN1cHBvcnRlZEh0dHBNZXRob2RzID0gWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncGF0Y2gnLCAncG9zdCcsICdwdXQnXTtcblxuLyoqXG4gKiBMb2FkcyBhIGZpbGUgZnJvbSBhbiBodHRwIG9yIGh0dHBzIFVSTC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gLSBUaGUgZG9jdW1lbnQgVVJMIChJZiByZWxhdGl2ZSwgbG9jYXRpb24gaXMgcmVsYXRpdmUgdG8gd2luZG93LmxvY2F0aW9uLm9yaWdpbikuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRoZSBsb2FkZXIgb3B0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm1ldGhvZD1nZXRdIC0gVGhlIEhUVFAgbWV0aG9kIHRvIHVzZSBmb3IgdGhlIHJlcXVlc3RcbiAqIEBwYXJhbSB7bW9kdWxlOlBhdGhMb2FkZXJ+UHJlcGFyZVJlcXVlc3RDYWxsYmFja30gW29wdGlvbnMucHJlcGFyZVJlcXVlc3RdIC0gVGhlIGNhbGxiYWNrIHVzZWQgdG8gcHJlcGFyZSBhIHJlcXVlc3RcbiAqIEBwYXJhbSB7bW9kdWxlOlBhdGhMb2FkZXJ+UHJvY2Vzc1Jlc3BvbnNlQ2FsbGJhY2t9IFtvcHRpb25zLnByb2Nlc3NDb250ZW50XSAtIFRoZSBjYWxsYmFjayB1c2VkIHRvIHByb2Nlc3MgdGhlXG4gKiByZXNwb25zZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBUaGUgZXJyb3ItZmlyc3QgY2FsbGJhY2tcbiAqL1xubW9kdWxlLmV4cG9ydHMubG9hZCA9IGZ1bmN0aW9uIChsb2NhdGlvbiwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIHJlYWxNZXRob2QgPSBvcHRpb25zLm1ldGhvZCA/IG9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCkgOiAnZ2V0JztcbiAgdmFyIGVycjtcbiAgdmFyIHJlYWxSZXF1ZXN0O1xuXG4gIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0IChlcnIsIHJlcSkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGJ1ZmZlcigpIGlzIG9ubHkgYXZhaWxhYmxlIGluIE5vZGUuanNcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnID8gcHJvY2VzcyA6IDApID09PSAnW29iamVjdCBwcm9jZXNzXScgJiZcbiAgICAgICAgICB0eXBlb2YgcmVxLmJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXEuYnVmZmVyKHRydWUpO1xuICAgICAgfVxuXG4gICAgICByZXFcbiAgICAgICAgLmVuZChmdW5jdGlvbiAoZXJyMiwgcmVzKSB7XG4gICAgICAgICAgaWYgKGVycjIpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGVycjIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMubWV0aG9kICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tZXRob2QgIT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdvcHRpb25zLm1ldGhvZCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0ZWRIdHRwTWV0aG9kcy5pbmRleE9mKG9wdGlvbnMubWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMubWV0aG9kIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICcgK1xuICAgICAgICBzdXBwb3J0ZWRIdHRwTWV0aG9kcy5zbGljZSgwLCBzdXBwb3J0ZWRIdHRwTWV0aG9kcy5sZW5ndGggLSAxKS5qb2luKCcsICcpICsgJyBvciAnICtcbiAgICAgICAgc3VwcG9ydGVkSHR0cE1ldGhvZHNbc3VwcG9ydGVkSHR0cE1ldGhvZHMubGVuZ3RoIC0gMV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5wcmVwYXJlUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdGlvbnMucHJlcGFyZVJlcXVlc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdvcHRpb25zLnByZXBhcmVSZXF1ZXN0IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKCFlcnIpIHtcbiAgICByZWFsUmVxdWVzdCA9IHJlcXVlc3RbcmVhbE1ldGhvZCA9PT0gJ2RlbGV0ZScgPyAnZGVsJyA6IHJlYWxNZXRob2RdKGxvY2F0aW9uKTtcblxuICAgIGlmIChvcHRpb25zLnByZXBhcmVSZXF1ZXN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBvcHRpb25zLnByZXBhcmVSZXF1ZXN0KHJlYWxSZXF1ZXN0LCBtYWtlUmVxdWVzdCk7XG4gICAgICB9IGNhdGNoIChlcnIyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycjIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYWtlUmVxdWVzdCh1bmRlZmluZWQsIHJlYWxSZXF1ZXN0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxufTtcbiIsInZhciBpc2FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbi8qKlxuICogRXhwb3NlIGBwYXRoVG9SZWdleHBgLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGhUb1JlZ2V4cFxubW9kdWxlLmV4cG9ydHMucGFyc2UgPSBwYXJzZVxubW9kdWxlLmV4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGVcbm1vZHVsZS5leHBvcnRzLnRva2Vuc1RvRnVuY3Rpb24gPSB0b2tlbnNUb0Z1bmN0aW9uXG5tb2R1bGUuZXhwb3J0cy50b2tlbnNUb1JlZ0V4cCA9IHRva2Vuc1RvUmVnRXhwXG5cbi8qKlxuICogVGhlIG1haW4gcGF0aCBtYXRjaGluZyByZWdleHAgdXRpbGl0eS5cbiAqXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG52YXIgUEFUSF9SRUdFWFAgPSBuZXcgUmVnRXhwKFtcbiAgLy8gTWF0Y2ggZXNjYXBlZCBjaGFyYWN0ZXJzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGFwcGVhciBpbiBmdXR1cmUgbWF0Y2hlcy5cbiAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IHdvbid0IHRyYW5zZm9ybS5cbiAgJyhcXFxcXFxcXC4pJyxcbiAgLy8gTWF0Y2ggRXhwcmVzcy1zdHlsZSBwYXJhbWV0ZXJzIGFuZCB1bi1uYW1lZCBwYXJhbWV0ZXJzIHdpdGggYSBwcmVmaXhcbiAgLy8gYW5kIG9wdGlvbmFsIHN1ZmZpeGVzLiBNYXRjaGVzIGFwcGVhciBhczpcbiAgLy9cbiAgLy8gXCIvOnRlc3QoXFxcXGQrKT9cIiA9PiBbXCIvXCIsIFwidGVzdFwiLCBcIlxcZCtcIiwgdW5kZWZpbmVkLCBcIj9cIiwgdW5kZWZpbmVkXVxuICAvLyBcIi9yb3V0ZShcXFxcZCspXCIgID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBcIlxcZCtcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gIC8vIFwiLypcIiAgICAgICAgICAgID0+IFtcIi9cIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBcIipcIl1cbiAgJyhbXFxcXC8uXSk/KD86KD86XFxcXDooXFxcXHcrKSg/OlxcXFwoKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKCldKSspXFxcXCkpP3xcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKShbKyo/XSk/fChcXFxcKikpJ1xuXS5qb2luKCd8JyksICdnJylcblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBmb3IgdGhlIHJhdyB0b2tlbnMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshQXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChzdHIsIG9wdGlvbnMpIHtcbiAgdmFyIHRva2VucyA9IFtdXG4gIHZhciBrZXkgPSAwXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIHBhdGggPSAnJ1xuICB2YXIgZGVmYXVsdERlbGltaXRlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWxpbWl0ZXIgfHwgJy8nXG4gIHZhciByZXNcblxuICB3aGlsZSAoKHJlcyA9IFBBVEhfUkVHRVhQLmV4ZWMoc3RyKSkgIT0gbnVsbCkge1xuICAgIHZhciBtID0gcmVzWzBdXG4gICAgdmFyIGVzY2FwZWQgPSByZXNbMV1cbiAgICB2YXIgb2Zmc2V0ID0gcmVzLmluZGV4XG4gICAgcGF0aCArPSBzdHIuc2xpY2UoaW5kZXgsIG9mZnNldClcbiAgICBpbmRleCA9IG9mZnNldCArIG0ubGVuZ3RoXG5cbiAgICAvLyBJZ25vcmUgYWxyZWFkeSBlc2NhcGVkIHNlcXVlbmNlcy5cbiAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgcGF0aCArPSBlc2NhcGVkWzFdXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHZhciBuZXh0ID0gc3RyW2luZGV4XVxuICAgIHZhciBwcmVmaXggPSByZXNbMl1cbiAgICB2YXIgbmFtZSA9IHJlc1szXVxuICAgIHZhciBjYXB0dXJlID0gcmVzWzRdXG4gICAgdmFyIGdyb3VwID0gcmVzWzVdXG4gICAgdmFyIG1vZGlmaWVyID0gcmVzWzZdXG4gICAgdmFyIGFzdGVyaXNrID0gcmVzWzddXG5cbiAgICAvLyBQdXNoIHRoZSBjdXJyZW50IHBhdGggb250byB0aGUgdG9rZW5zLlxuICAgIGlmIChwYXRoKSB7XG4gICAgICB0b2tlbnMucHVzaChwYXRoKVxuICAgICAgcGF0aCA9ICcnXG4gICAgfVxuXG4gICAgdmFyIHBhcnRpYWwgPSBwcmVmaXggIT0gbnVsbCAmJiBuZXh0ICE9IG51bGwgJiYgbmV4dCAhPT0gcHJlZml4XG4gICAgdmFyIHJlcGVhdCA9IG1vZGlmaWVyID09PSAnKycgfHwgbW9kaWZpZXIgPT09ICcqJ1xuICAgIHZhciBvcHRpb25hbCA9IG1vZGlmaWVyID09PSAnPycgfHwgbW9kaWZpZXIgPT09ICcqJ1xuICAgIHZhciBkZWxpbWl0ZXIgPSByZXNbMl0gfHwgZGVmYXVsdERlbGltaXRlclxuICAgIHZhciBwYXR0ZXJuID0gY2FwdHVyZSB8fCBncm91cFxuXG4gICAgdG9rZW5zLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSB8fCBrZXkrKyxcbiAgICAgIHByZWZpeDogcHJlZml4IHx8ICcnLFxuICAgICAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsXG4gICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICByZXBlYXQ6IHJlcGVhdCxcbiAgICAgIHBhcnRpYWw6IHBhcnRpYWwsXG4gICAgICBhc3RlcmlzazogISFhc3RlcmlzayxcbiAgICAgIHBhdHRlcm46IHBhdHRlcm4gPyBlc2NhcGVHcm91cChwYXR0ZXJuKSA6IChhc3RlcmlzayA/ICcuKicgOiAnW14nICsgZXNjYXBlU3RyaW5nKGRlbGltaXRlcikgKyAnXSs/JylcbiAgICB9KVxuICB9XG5cbiAgLy8gTWF0Y2ggYW55IGNoYXJhY3RlcnMgc3RpbGwgcmVtYWluaW5nLlxuICBpZiAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgcGF0aCArPSBzdHIuc3Vic3RyKGluZGV4KVxuICB9XG5cbiAgLy8gSWYgdGhlIHBhdGggZXhpc3RzLCBwdXNoIGl0IG9udG8gdGhlIGVuZC5cbiAgaWYgKHBhdGgpIHtcbiAgICB0b2tlbnMucHVzaChwYXRoKVxuICB9XG5cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG4vKipcbiAqIENvbXBpbGUgYSBzdHJpbmcgdG8gYSB0ZW1wbGF0ZSBmdW5jdGlvbiBmb3IgdGhlIHBhdGguXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICBzdHJcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IWZ1bmN0aW9uKE9iamVjdD0sIE9iamVjdD0pfVxuICovXG5mdW5jdGlvbiBjb21waWxlIChzdHIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRva2Vuc1RvRnVuY3Rpb24ocGFyc2Uoc3RyLCBvcHRpb25zKSlcbn1cblxuLyoqXG4gKiBQcmV0dGllciBlbmNvZGluZyBvZiBVUkkgcGF0aCBzZWdtZW50cy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZVVSSUNvbXBvbmVudFByZXR0eSAoc3RyKSB7XG4gIHJldHVybiBlbmNvZGVVUkkoc3RyKS5yZXBsYWNlKC9bXFwvPyNdL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuICclJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICB9KVxufVxuXG4vKipcbiAqIEVuY29kZSB0aGUgYXN0ZXJpc2sgcGFyYW1ldGVyLiBTaW1pbGFyIHRvIGBwcmV0dHlgLCBidXQgYWxsb3dzIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlbmNvZGVBc3RlcmlzayAoc3RyKSB7XG4gIHJldHVybiBlbmNvZGVVUkkoc3RyKS5yZXBsYWNlKC9bPyNdL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuICclJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICB9KVxufVxuXG4vKipcbiAqIEV4cG9zZSBhIG1ldGhvZCBmb3IgdHJhbnNmb3JtaW5nIHRva2VucyBpbnRvIHRoZSBwYXRoIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiB0b2tlbnNUb0Z1bmN0aW9uICh0b2tlbnMpIHtcbiAgLy8gQ29tcGlsZSBhbGwgdGhlIHRva2VucyBpbnRvIHJlZ2V4cHMuXG4gIHZhciBtYXRjaGVzID0gbmV3IEFycmF5KHRva2Vucy5sZW5ndGgpXG5cbiAgLy8gQ29tcGlsZSBhbGwgdGhlIHBhdHRlcm5zIGJlZm9yZSBjb21waWxhdGlvbi5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodHlwZW9mIHRva2Vuc1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG1hdGNoZXNbaV0gPSBuZXcgUmVnRXhwKCdeKD86JyArIHRva2Vuc1tpXS5wYXR0ZXJuICsgJykkJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKG9iaiwgb3B0cykge1xuICAgIHZhciBwYXRoID0gJydcbiAgICB2YXIgZGF0YSA9IG9iaiB8fCB7fVxuICAgIHZhciBvcHRpb25zID0gb3B0cyB8fCB7fVxuICAgIHZhciBlbmNvZGUgPSBvcHRpb25zLnByZXR0eSA/IGVuY29kZVVSSUNvbXBvbmVudFByZXR0eSA6IGVuY29kZVVSSUNvbXBvbmVudFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXVxuXG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXRoICs9IHRva2VuXG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlID0gZGF0YVt0b2tlbi5uYW1lXVxuICAgICAgdmFyIHNlZ21lbnRcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgLy8gUHJlcGVuZCBwYXJ0aWFsIHNlZ21lbnQgcHJlZml4ZXMuXG4gICAgICAgICAgaWYgKHRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIGJlIGRlZmluZWQnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc2FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAoIXRva2VuLnJlcGVhdCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IHJlcGVhdCwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgJ2AnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBub3QgYmUgZW1wdHknKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBzZWdtZW50ID0gZW5jb2RlKHZhbHVlW2pdKVxuXG4gICAgICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsbCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG1hdGNoIFwiJyArIHRva2VuLnBhdHRlcm4gKyAnXCIsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHNlZ21lbnQpICsgJ2AnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGggKz0gKGogPT09IDAgPyB0b2tlbi5wcmVmaXggOiB0b2tlbi5kZWxpbWl0ZXIpICsgc2VnbWVudFxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCA9IHRva2VuLmFzdGVyaXNrID8gZW5jb2RlQXN0ZXJpc2sodmFsdWUpIDogZW5jb2RlKHZhbHVlKVxuXG4gICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG1hdGNoIFwiJyArIHRva2VuLnBhdHRlcm4gKyAnXCIsIGJ1dCByZWNlaXZlZCBcIicgKyBzZWdtZW50ICsgJ1wiJylcbiAgICAgIH1cblxuICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXggKyBzZWdtZW50XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhcbiAgfVxufVxuXG4vKipcbiAqIEVzY2FwZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZXNjYXBlU3RyaW5nIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWy4rKj89XiE6JHt9KClbXFxdfFxcL1xcXFxdKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBFc2NhcGUgdGhlIGNhcHR1cmluZyBncm91cCBieSBlc2NhcGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgYW5kIG1lYW5pbmcuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBncm91cFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVHcm91cCAoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLnJlcGxhY2UoLyhbPSE6JFxcLygpXSkvZywgJ1xcXFwkMScpXG59XG5cbi8qKlxuICogQXR0YWNoIHRoZSBrZXlzIGFzIGEgcHJvcGVydHkgb2YgdGhlIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshUmVnRXhwfSByZVxuICogQHBhcmFtICB7QXJyYXl9ICAga2V5c1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gYXR0YWNoS2V5cyAocmUsIGtleXMpIHtcbiAgcmUua2V5cyA9IGtleXNcbiAgcmV0dXJuIHJlXG59XG5cbi8qKlxuICogR2V0IHRoZSBmbGFncyBmb3IgYSByZWdleHAgZnJvbSB0aGUgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmxhZ3MgKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMuc2Vuc2l0aXZlID8gJycgOiAnaSdcbn1cblxuLyoqXG4gKiBQdWxsIG91dCBrZXlzIGZyb20gYSByZWdleHAuXG4gKlxuICogQHBhcmFtICB7IVJlZ0V4cH0gcGF0aFxuICogQHBhcmFtICB7IUFycmF5fSAga2V5c1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gcmVnZXhwVG9SZWdleHAgKHBhdGgsIGtleXMpIHtcbiAgLy8gVXNlIGEgbmVnYXRpdmUgbG9va2FoZWFkIHRvIG1hdGNoIG9ubHkgY2FwdHVyaW5nIGdyb3Vwcy5cbiAgdmFyIGdyb3VwcyA9IHBhdGguc291cmNlLm1hdGNoKC9cXCgoPyFcXD8pL2cpXG5cbiAgaWYgKGdyb3Vwcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXlzLnB1c2goe1xuICAgICAgICBuYW1lOiBpLFxuICAgICAgICBwcmVmaXg6IG51bGwsXG4gICAgICAgIGRlbGltaXRlcjogbnVsbCxcbiAgICAgICAgb3B0aW9uYWw6IGZhbHNlLFxuICAgICAgICByZXBlYXQ6IGZhbHNlLFxuICAgICAgICBwYXJ0aWFsOiBmYWxzZSxcbiAgICAgICAgYXN0ZXJpc2s6IGZhbHNlLFxuICAgICAgICBwYXR0ZXJuOiBudWxsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdHRhY2hLZXlzKHBhdGgsIGtleXMpXG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGFuIGFycmF5IGludG8gYSByZWdleHAuXG4gKlxuICogQHBhcmFtICB7IUFycmF5fSAgcGF0aFxuICogQHBhcmFtICB7QXJyYXl9ICAga2V5c1xuICogQHBhcmFtICB7IU9iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gYXJyYXlUb1JlZ2V4cCAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICB2YXIgcGFydHMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIHBhcnRzLnB1c2gocGF0aFRvUmVnZXhwKHBhdGhbaV0sIGtleXMsIG9wdGlvbnMpLnNvdXJjZSlcbiAgfVxuXG4gIHZhciByZWdleHAgPSBuZXcgUmVnRXhwKCcoPzonICsgcGFydHMuam9pbignfCcpICsgJyknLCBmbGFncyhvcHRpb25zKSlcblxuICByZXR1cm4gYXR0YWNoS2V5cyhyZWdleHAsIGtleXMpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcGF0aCByZWdleHAgZnJvbSBzdHJpbmcgaW5wdXQuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgcGF0aFxuICogQHBhcmFtICB7IUFycmF5fSAga2V5c1xuICogQHBhcmFtICB7IU9iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9SZWdleHAgKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRva2Vuc1RvUmVnRXhwKHBhcnNlKHBhdGgsIG9wdGlvbnMpLCBrZXlzLCBvcHRpb25zKVxufVxuXG4vKipcbiAqIEV4cG9zZSBhIGZ1bmN0aW9uIGZvciB0YWtpbmcgdG9rZW5zIGFuZCByZXR1cm5pbmcgYSBSZWdFeHAuXG4gKlxuICogQHBhcmFtICB7IUFycmF5fSAgICAgICAgICB0b2tlbnNcbiAqIEBwYXJhbSAgeyhBcnJheXxPYmplY3QpPX0ga2V5c1xuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiB0b2tlbnNUb1JlZ0V4cCAodG9rZW5zLCBrZXlzLCBvcHRpb25zKSB7XG4gIGlmICghaXNhcnJheShrZXlzKSkge1xuICAgIG9wdGlvbnMgPSAvKiogQHR5cGUgeyFPYmplY3R9ICovIChrZXlzIHx8IG9wdGlvbnMpXG4gICAga2V5cyA9IFtdXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuXG4gIHZhciBzdHJpY3QgPSBvcHRpb25zLnN0cmljdFxuICB2YXIgZW5kID0gb3B0aW9ucy5lbmQgIT09IGZhbHNlXG4gIHZhciByb3V0ZSA9ICcnXG5cbiAgLy8gSXRlcmF0ZSBvdmVyIHRoZSB0b2tlbnMgYW5kIGNyZWF0ZSBvdXIgcmVnZXhwIHN0cmluZy5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV1cblxuICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICByb3V0ZSArPSBlc2NhcGVTdHJpbmcodG9rZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwcmVmaXggPSBlc2NhcGVTdHJpbmcodG9rZW4ucHJlZml4KVxuICAgICAgdmFyIGNhcHR1cmUgPSAnKD86JyArIHRva2VuLnBhdHRlcm4gKyAnKSdcblxuICAgICAga2V5cy5wdXNoKHRva2VuKVxuXG4gICAgICBpZiAodG9rZW4ucmVwZWF0KSB7XG4gICAgICAgIGNhcHR1cmUgKz0gJyg/OicgKyBwcmVmaXggKyBjYXB0dXJlICsgJykqJ1xuICAgICAgfVxuXG4gICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgaWYgKCF0b2tlbi5wYXJ0aWFsKSB7XG4gICAgICAgICAgY2FwdHVyZSA9ICcoPzonICsgcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpKT8nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FwdHVyZSA9IHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKT8nXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcHR1cmUgPSBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJyknXG4gICAgICB9XG5cbiAgICAgIHJvdXRlICs9IGNhcHR1cmVcbiAgICB9XG4gIH1cblxuICB2YXIgZGVsaW1pdGVyID0gZXNjYXBlU3RyaW5nKG9wdGlvbnMuZGVsaW1pdGVyIHx8ICcvJylcbiAgdmFyIGVuZHNXaXRoRGVsaW1pdGVyID0gcm91dGUuc2xpY2UoLWRlbGltaXRlci5sZW5ndGgpID09PSBkZWxpbWl0ZXJcblxuICAvLyBJbiBub24tc3RyaWN0IG1vZGUgd2UgYWxsb3cgYSBzbGFzaCBhdCB0aGUgZW5kIG9mIG1hdGNoLiBJZiB0aGUgcGF0aCB0b1xuICAvLyBtYXRjaCBhbHJlYWR5IGVuZHMgd2l0aCBhIHNsYXNoLCB3ZSByZW1vdmUgaXQgZm9yIGNvbnNpc3RlbmN5LiBUaGUgc2xhc2hcbiAgLy8gaXMgdmFsaWQgYXQgdGhlIGVuZCBvZiBhIHBhdGggbWF0Y2gsIG5vdCBpbiB0aGUgbWlkZGxlLiBUaGlzIGlzIGltcG9ydGFudFxuICAvLyBpbiBub24tZW5kaW5nIG1vZGUsIHdoZXJlIFwiL3Rlc3QvXCIgc2hvdWxkbid0IG1hdGNoIFwiL3Rlc3QvL3JvdXRlXCIuXG4gIGlmICghc3RyaWN0KSB7XG4gICAgcm91dGUgPSAoZW5kc1dpdGhEZWxpbWl0ZXIgPyByb3V0ZS5zbGljZSgwLCAtZGVsaW1pdGVyLmxlbmd0aCkgOiByb3V0ZSkgKyAnKD86JyArIGRlbGltaXRlciArICcoPz0kKSk/J1xuICB9XG5cbiAgaWYgKGVuZCkge1xuICAgIHJvdXRlICs9ICckJ1xuICB9IGVsc2Uge1xuICAgIC8vIEluIG5vbi1lbmRpbmcgbW9kZSwgd2UgbmVlZCB0aGUgY2FwdHVyaW5nIGdyb3VwcyB0byBtYXRjaCBhcyBtdWNoIGFzXG4gICAgLy8gcG9zc2libGUgYnkgdXNpbmcgYSBwb3NpdGl2ZSBsb29rYWhlYWQgdG8gdGhlIGVuZCBvciBuZXh0IHBhdGggc2VnbWVudC5cbiAgICByb3V0ZSArPSBzdHJpY3QgJiYgZW5kc1dpdGhEZWxpbWl0ZXIgPyAnJyA6ICcoPz0nICsgZGVsaW1pdGVyICsgJ3wkKSdcbiAgfVxuXG4gIHJldHVybiBhdHRhY2hLZXlzKG5ldyBSZWdFeHAoJ14nICsgcm91dGUsIGZsYWdzKG9wdGlvbnMpKSwga2V5cylcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGdpdmVuIHBhdGggc3RyaW5nLCByZXR1cm5pbmcgYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQW4gZW1wdHkgYXJyYXkgY2FuIGJlIHBhc3NlZCBpbiBmb3IgdGhlIGtleXMsIHdoaWNoIHdpbGwgaG9sZCB0aGVcbiAqIHBsYWNlaG9sZGVyIGtleSBkZXNjcmlwdGlvbnMuIEZvciBleGFtcGxlLCB1c2luZyBgL3VzZXIvOmlkYCwgYGtleXNgIHdpbGxcbiAqIGNvbnRhaW4gYFt7IG5hbWU6ICdpZCcsIGRlbGltaXRlcjogJy8nLCBvcHRpb25hbDogZmFsc2UsIHJlcGVhdDogZmFsc2UgfV1gLlxuICpcbiAqIEBwYXJhbSAgeyhzdHJpbmd8UmVnRXhwfEFycmF5KX0gcGF0aFxuICogQHBhcmFtICB7KEFycmF5fE9iamVjdCk9fSAgICAgICBrZXlzXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHBhdGhUb1JlZ2V4cCAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICBpZiAoIWlzYXJyYXkoa2V5cykpIHtcbiAgICBvcHRpb25zID0gLyoqIEB0eXBlIHshT2JqZWN0fSAqLyAoa2V5cyB8fCBvcHRpb25zKVxuICAgIGtleXMgPSBbXVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICBpZiAocGF0aCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIHJldHVybiByZWdleHBUb1JlZ2V4cChwYXRoLCAvKiogQHR5cGUgeyFBcnJheX0gKi8gKGtleXMpKVxuICB9XG5cbiAgaWYgKGlzYXJyYXkocGF0aCkpIHtcbiAgICByZXR1cm4gYXJyYXlUb1JlZ2V4cCgvKiogQHR5cGUgeyFBcnJheX0gKi8gKHBhdGgpLCAvKiogQHR5cGUgeyFBcnJheX0gKi8gKGtleXMpLCBvcHRpb25zKVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZ1RvUmVnZXhwKC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocGF0aCksIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cyksIG9wdGlvbnMpXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmICghcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0geyBuZXh0VGljazogbmV4dFRpY2sgfTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzc1xufVxuXG5mdW5jdGlvbiBuZXh0VGljayhmbiwgYXJnMSwgYXJnMiwgYXJnMykge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYWxsYmFja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG4gIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgYXJncywgaTtcbiAgc3dpdGNoIChsZW4pIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZm4pO1xuICBjYXNlIDI6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrT25lKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxKTtcbiAgICB9KTtcbiAgY2FzZSAzOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1R3bygpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMik7XG4gICAgfSk7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUaHJlZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgfSk7XG4gIGRlZmF1bHQ6XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICBhcmdzW2krK10gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGljaygpIHtcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG59XG5cbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBJZiBvYmouaGFzT3duUHJvcGVydHkgaGFzIGJlZW4gb3ZlcnJpZGRlbiwgdGhlbiBjYWxsaW5nXG4vLyBvYmouaGFzT3duUHJvcGVydHkocHJvcCkgd2lsbCBicmVhay5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy8xNzA3XG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHFzLCBzZXAsIGVxLCBvcHRpb25zKSB7XG4gIHNlcCA9IHNlcCB8fCAnJic7XG4gIGVxID0gZXEgfHwgJz0nO1xuICB2YXIgb2JqID0ge307XG5cbiAgaWYgKHR5cGVvZiBxcyAhPT0gJ3N0cmluZycgfHwgcXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHZhciByZWdleHAgPSAvXFwrL2c7XG4gIHFzID0gcXMuc3BsaXQoc2VwKTtcblxuICB2YXIgbWF4S2V5cyA9IDEwMDA7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLm1heEtleXMgPT09ICdudW1iZXInKSB7XG4gICAgbWF4S2V5cyA9IG9wdGlvbnMubWF4S2V5cztcbiAgfVxuXG4gIHZhciBsZW4gPSBxcy5sZW5ndGg7XG4gIC8vIG1heEtleXMgPD0gMCBtZWFucyB0aGF0IHdlIHNob3VsZCBub3QgbGltaXQga2V5cyBjb3VudFxuICBpZiAobWF4S2V5cyA+IDAgJiYgbGVuID4gbWF4S2V5cykge1xuICAgIGxlbiA9IG1heEtleXM7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFyIHggPSBxc1tpXS5yZXBsYWNlKHJlZ2V4cCwgJyUyMCcpLFxuICAgICAgICBpZHggPSB4LmluZGV4T2YoZXEpLFxuICAgICAgICBrc3RyLCB2c3RyLCBrLCB2O1xuXG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICBrc3RyID0geC5zdWJzdHIoMCwgaWR4KTtcbiAgICAgIHZzdHIgPSB4LnN1YnN0cihpZHggKyAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAga3N0ciA9IHg7XG4gICAgICB2c3RyID0gJyc7XG4gICAgfVxuXG4gICAgayA9IGRlY29kZVVSSUNvbXBvbmVudChrc3RyKTtcbiAgICB2ID0gZGVjb2RlVVJJQ29tcG9uZW50KHZzdHIpO1xuXG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eShvYmosIGspKSB7XG4gICAgICBvYmpba10gPSB2O1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShvYmpba10pKSB7XG4gICAgICBvYmpba10ucHVzaCh2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2tdID0gW29ialtrXSwgdl07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoeHMpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4cykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeVByaW1pdGl2ZSA9IGZ1bmN0aW9uKHYpIHtcbiAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4gdjtcblxuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgcmV0dXJuIHYgPyAndHJ1ZScgOiAnZmFsc2UnO1xuXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiBpc0Zpbml0ZSh2KSA/IHYgOiAnJztcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqLCBzZXAsIGVxLCBuYW1lKSB7XG4gIHNlcCA9IHNlcCB8fCAnJic7XG4gIGVxID0gZXEgfHwgJz0nO1xuICBpZiAob2JqID09PSBudWxsKSB7XG4gICAgb2JqID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG1hcChvYmplY3RLZXlzKG9iaiksIGZ1bmN0aW9uKGspIHtcbiAgICAgIHZhciBrcyA9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUoaykpICsgZXE7XG4gICAgICBpZiAoaXNBcnJheShvYmpba10pKSB7XG4gICAgICAgIHJldHVybiBtYXAob2JqW2tdLCBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZSh2KSk7XG4gICAgICAgIH0pLmpvaW4oc2VwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqW2tdKSk7XG4gICAgICB9XG4gICAgfSkuam9pbihzZXApO1xuXG4gIH1cblxuICBpZiAoIW5hbWUpIHJldHVybiAnJztcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUobmFtZSkpICsgZXEgK1xuICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmopKTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoeHMpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4cykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG5mdW5jdGlvbiBtYXAgKHhzLCBmKSB7XG4gIGlmICh4cy5tYXApIHJldHVybiB4cy5tYXAoZik7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5wdXNoKGYoeHNbaV0sIGkpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHJlcy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuZGVjb2RlID0gZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJy4vZGVjb2RlJyk7XG5leHBvcnRzLmVuY29kZSA9IGV4cG9ydHMuc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9lbmNvZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcmV0ICAgID0gcmVxdWlyZSgncmV0Jyk7XG5jb25zdCBEUmFuZ2UgPSByZXF1aXJlKCdkcmFuZ2UnKTtcbmNvbnN0IHR5cGVzICA9IHJldC50eXBlcztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFJhbmRFeHAge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gcmVnZXhwXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtXG4gICAqL1xuICBjb25zdHJ1Y3RvcihyZWdleHAsIG0pIHtcbiAgICB0aGlzLl9zZXREZWZhdWx0cyhyZWdleHApO1xuICAgIGlmIChyZWdleHAgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHRoaXMuaWdub3JlQ2FzZSA9IHJlZ2V4cC5pZ25vcmVDYXNlO1xuICAgICAgdGhpcy5tdWx0aWxpbmUgPSByZWdleHAubXVsdGlsaW5lO1xuICAgICAgcmVnZXhwID0gcmVnZXhwLnNvdXJjZTtcblxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuaWdub3JlQ2FzZSA9IG0gJiYgbS5pbmRleE9mKCdpJykgIT09IC0xO1xuICAgICAgdGhpcy5tdWx0aWxpbmUgPSBtICYmIG0uaW5kZXhPZignbScpICE9PSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIHJlZ2V4cCBvciBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICB0aGlzLnRva2VucyA9IHJldChyZWdleHApO1xuICB9XG5cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHNvbWUgY3VzdG9tIHByb3BlcnRpZXMgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyByZWdleHAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmFuZEV4cH0gcmFuZGV4cFxuICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwXG4gICAqL1xuICBfc2V0RGVmYXVsdHMocmVnZXhwKSB7XG4gICAgLy8gV2hlbiBhIHJlcGV0aXRpb25hbCB0b2tlbiBoYXMgaXRzIG1heCBzZXQgdG8gSW5maW5pdGUsXG4gICAgLy8gcmFuZGV4cCB3b24ndCBhY3R1YWxseSBnZW5lcmF0ZSBhIHJhbmRvbSBhbW91bnQgYmV0d2VlbiBtaW4gYW5kIEluZmluaXRlXG4gICAgLy8gaW5zdGVhZCBpdCB3aWxsIHNlZSBJbmZpbml0ZSBhcyBtaW4gKyAxMDAuXG4gICAgdGhpcy5tYXggPSByZWdleHAubWF4ICE9IG51bGwgPyByZWdleHAubWF4IDpcbiAgICAgIFJhbmRFeHAucHJvdG90eXBlLm1heCAhPSBudWxsID8gUmFuZEV4cC5wcm90b3R5cGUubWF4IDogMTAwO1xuXG4gICAgLy8gVGhpcyBhbGxvd3MgZXhwYW5kaW5nIHRvIGluY2x1ZGUgYWRkaXRpb25hbCBjaGFyYWN0ZXJzXG4gICAgLy8gZm9yIGluc3RhbmNlOiBSYW5kRXhwLmRlZmF1bHRSYW5nZS5hZGQoMCwgNjU1MzUpO1xuICAgIHRoaXMuZGVmYXVsdFJhbmdlID0gcmVnZXhwLmRlZmF1bHRSYW5nZSA/XG4gICAgICByZWdleHAuZGVmYXVsdFJhbmdlIDogdGhpcy5kZWZhdWx0UmFuZ2UuY2xvbmUoKTtcblxuICAgIGlmIChyZWdleHAucmFuZEludCkge1xuICAgICAgdGhpcy5yYW5kSW50ID0gcmVnZXhwLnJhbmRJbnQ7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSByYW5kb20gc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqL1xuICBnZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dlbih0aGlzLnRva2VucywgW10pO1xuICB9XG5cblxuICAvKipcbiAgICogR2VuZXJhdGUgcmFuZG9tIHN0cmluZyBtb2RlbGVkIGFmdGVyIGdpdmVuIHRva2Vucy5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGdyb3Vwc1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqL1xuICBfZ2VuKHRva2VuLCBncm91cHMpIHtcbiAgICB2YXIgc3RhY2ssIHN0ciwgbiwgaSwgbDtcblxuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgY2FzZSB0eXBlcy5ST09UOlxuICAgICAgY2FzZSB0eXBlcy5HUk9VUDpcbiAgICAgICAgLy8gSWdub3JlIGxvb2thaGVhZHMgZm9yIG5vdy5cbiAgICAgICAgaWYgKHRva2VuLmZvbGxvd2VkQnkgfHwgdG9rZW4ubm90Rm9sbG93ZWRCeSkgeyByZXR1cm4gJyc7IH1cblxuICAgICAgICAvLyBJbnNlcnQgcGxhY2Vob2xkZXIgdW50aWwgZ3JvdXAgc3RyaW5nIGlzIGdlbmVyYXRlZC5cbiAgICAgICAgaWYgKHRva2VuLnJlbWVtYmVyICYmIHRva2VuLmdyb3VwTnVtYmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0b2tlbi5ncm91cE51bWJlciA9IGdyb3Vwcy5wdXNoKG51bGwpIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YWNrID0gdG9rZW4ub3B0aW9ucyA/XG4gICAgICAgICAgdGhpcy5fcmFuZFNlbGVjdCh0b2tlbi5vcHRpb25zKSA6IHRva2VuLnN0YWNrO1xuXG4gICAgICAgIHN0ciA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gc3RhY2subGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgc3RyICs9IHRoaXMuX2dlbihzdGFja1tpXSwgZ3JvdXBzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi5yZW1lbWJlcikge1xuICAgICAgICAgIGdyb3Vwc1t0b2tlbi5ncm91cE51bWJlcl0gPSBzdHI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcblxuICAgICAgY2FzZSB0eXBlcy5QT1NJVElPTjpcbiAgICAgICAgLy8gRG8gbm90aGluZyBmb3Igbm93LlxuICAgICAgICByZXR1cm4gJyc7XG5cbiAgICAgIGNhc2UgdHlwZXMuU0VUOlxuICAgICAgICB2YXIgZXhwYW5kZWRTZXQgPSB0aGlzLl9leHBhbmQodG9rZW4pO1xuICAgICAgICBpZiAoIWV4cGFuZGVkU2V0Lmxlbmd0aCkgeyByZXR1cm4gJyc7IH1cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5fcmFuZFNlbGVjdChleHBhbmRlZFNldCkpO1xuXG4gICAgICBjYXNlIHR5cGVzLlJFUEVUSVRJT046XG4gICAgICAgIC8vIFJhbmRvbWx5IGdlbmVyYXRlIG51bWJlciBiZXR3ZWVuIG1pbiBhbmQgbWF4LlxuICAgICAgICBuID0gdGhpcy5yYW5kSW50KHRva2VuLm1pbixcbiAgICAgICAgICB0b2tlbi5tYXggPT09IEluZmluaXR5ID8gdG9rZW4ubWluICsgdGhpcy5tYXggOiB0b2tlbi5tYXgpO1xuXG4gICAgICAgIHN0ciA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgc3RyICs9IHRoaXMuX2dlbih0b2tlbi52YWx1ZSwgZ3JvdXBzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHI7XG5cbiAgICAgIGNhc2UgdHlwZXMuUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gZ3JvdXBzW3Rva2VuLnZhbHVlIC0gMV0gfHwgJyc7XG5cbiAgICAgIGNhc2UgdHlwZXMuQ0hBUjpcbiAgICAgICAgdmFyIGNvZGUgPSB0aGlzLmlnbm9yZUNhc2UgJiYgdGhpcy5fcmFuZEJvb2woKSA/XG4gICAgICAgICAgdGhpcy5fdG9PdGhlckNhc2UodG9rZW4udmFsdWUpIDogdG9rZW4udmFsdWU7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIElmIGNvZGUgaXMgYWxwaGFiZXRpYywgY29udmVydHMgdG8gb3RoZXIgY2FzZS5cbiAgICogSWYgbm90IGFscGhhYmV0aWMsIHJldHVybnMgYmFjayBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gY29kZVxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBfdG9PdGhlckNhc2UoY29kZSkge1xuICAgIHJldHVybiBjb2RlICsgKDk3IDw9IGNvZGUgJiYgY29kZSA8PSAxMjIgPyAtMzIgOlxuICAgICAgNjUgPD0gY29kZSAmJiBjb2RlIDw9IDkwICA/ICAzMiA6IDApO1xuICB9XG5cblxuICAvKipcbiAgICogUmFuZG9tbHkgcmV0dXJucyBhIHRydWUgb3IgZmFsc2UgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqL1xuICBfcmFuZEJvb2woKSB7XG4gICAgcmV0dXJuICF0aGlzLnJhbmRJbnQoMCwgMSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSYW5kb21seSBzZWxlY3RzIGFuZCByZXR1cm5zIGEgdmFsdWUgZnJvbSB0aGUgYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXkuPE9iamVjdD59IGFyclxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBfcmFuZFNlbGVjdChhcnIpIHtcbiAgICBpZiAoYXJyIGluc3RhbmNlb2YgRFJhbmdlKSB7XG4gICAgICByZXR1cm4gYXJyLmluZGV4KHRoaXMucmFuZEludCgwLCBhcnIubGVuZ3RoIC0gMSkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyW3RoaXMucmFuZEludCgwLCBhcnIubGVuZ3RoIC0gMSldO1xuICB9XG5cblxuICAvKipcbiAgICogZXhwYW5kcyBhIHRva2VuIHRvIGEgRGlzY29udGludW91c1JhbmdlIG9mIGNoYXJhY3RlcnMgd2hpY2ggaGFzIGFcbiAgICogbGVuZ3RoIGFuZCBhbiBpbmRleCBmdW5jdGlvbiAoZm9yIHJhbmRvbSBzZWxlY3RpbmcpXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0b2tlblxuICAgKiBAcmV0dXJuIHtEaXNjb250aW51b3VzUmFuZ2V9XG4gICAqL1xuICBfZXhwYW5kKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnR5cGUgPT09IHJldC50eXBlcy5DSEFSKSB7XG4gICAgICByZXR1cm4gbmV3IERSYW5nZSh0b2tlbi52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSByZXQudHlwZXMuUkFOR0UpIHtcbiAgICAgIHJldHVybiBuZXcgRFJhbmdlKHRva2VuLmZyb20sIHRva2VuLnRvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRyYW5nZSA9IG5ldyBEUmFuZ2UoKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBzdWJyYW5nZSA9IHRoaXMuX2V4cGFuZCh0b2tlbi5zZXRbaV0pO1xuICAgICAgICBkcmFuZ2UuYWRkKHN1YnJhbmdlKTtcbiAgICAgICAgaWYgKHRoaXMuaWdub3JlQ2FzZSkge1xuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc3VicmFuZ2UubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGxldCBjb2RlID0gc3VicmFuZ2UuaW5kZXgoaik7XG4gICAgICAgICAgICBsZXQgb3RoZXJDYXNlQ29kZSA9IHRoaXMuX3RvT3RoZXJDYXNlKGNvZGUpO1xuICAgICAgICAgICAgaWYgKGNvZGUgIT09IG90aGVyQ2FzZUNvZGUpIHtcbiAgICAgICAgICAgICAgZHJhbmdlLmFkZChvdGhlckNhc2VDb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0b2tlbi5ub3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFJhbmdlLmNsb25lKCkuc3VidHJhY3QoZHJhbmdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRSYW5nZS5jbG9uZSgpLmludGVyc2VjdChkcmFuZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJhbmRvbWx5IGdlbmVyYXRlcyBhbmQgcmV0dXJucyBhIG51bWJlciBiZXR3ZWVuIGEgYW5kIGIgKGluY2x1c2l2ZSkuXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBiXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIHJhbmRJbnQoYSwgYikge1xuICAgIHJldHVybiBhICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDEgKyBiIC0gYSkpO1xuICB9XG5cblxuICAvKipcbiAgICogRGVmYXVsdCByYW5nZSBvZiBjaGFyYWN0ZXJzIHRvIGdlbmVyYXRlIGZyb20uXG4gICAqL1xuICBnZXQgZGVmYXVsdFJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSA9IHRoaXMuX3JhbmdlIHx8IG5ldyBEUmFuZ2UoMzIsIDEyNik7XG4gIH1cblxuICBzZXQgZGVmYXVsdFJhbmdlKHJhbmdlKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEVuYWJsZXMgdXNlIG9mIHJhbmRleHAgd2l0aCBhIHNob3J0ZXIgY2FsbC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfCByZWdleHB9XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIHN0YXRpYyByYW5kZXhwKHJlZ2V4cCwgbSkge1xuICAgIHZhciByYW5kZXhwO1xuICAgIGlmKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCwgbSk7XG4gICAgfVxuXG4gICAgaWYgKHJlZ2V4cC5fcmFuZGV4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByYW5kZXhwID0gbmV3IFJhbmRFeHAocmVnZXhwLCBtKTtcbiAgICAgIHJlZ2V4cC5fcmFuZGV4cCA9IHJhbmRleHA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmRleHAgPSByZWdleHAuX3JhbmRleHA7XG4gICAgICByYW5kZXhwLl9zZXREZWZhdWx0cyhyZWdleHApO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZGV4cC5nZW4oKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc3VnYXJ5IC9yZWdleHAvLmdlbiBzeW50YXguXG4gICAqL1xuICBzdGF0aWMgc3VnYXIoKSB7XG4gICAgLyogZXNoaW50IGZyZWV6ZTpmYWxzZSAqL1xuICAgIFJlZ0V4cC5wcm90b3R5cGUuZ2VuID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUmFuZEV4cC5yYW5kZXhwKHRoaXMpO1xuICAgIH07XG4gIH1cbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG57XG4gIC8vIGF2b2lkIHNjb3BlIGNyZWVwLCB0aGUga2V5cyBhcnJheSBjYW4gdGhlbiBiZSBjb2xsZWN0ZWRcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gdGhlIG5vLWhhbGYtb3BlbiBlbmZvcmNlclxuZnVuY3Rpb24gb25lbmQoKSB7XG4gIC8vIGlmIHdlIGFsbG93IGhhbGYtb3BlbiBzdGF0ZSwgb3IgaWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsXG4gIC8vIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLmFsbG93SGFsZk9wZW4gfHwgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkgcmV0dXJuO1xuXG4gIC8vIG5vIG1vcmUgZGF0YSBjYW4gYmUgd3JpdHRlbi5cbiAgLy8gQnV0IGFsbG93IG1vcmUgd3JpdGVzIHRvIGhhcHBlbiBpbiB0aGlzIHRpY2suXG4gIHBuYS5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cblxuZnVuY3Rpb24gb25FbmROVChzZWxmKSB7XG4gIHNlbGYuZW5kKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbkR1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIHRoaXMuZW5kKCk7XG5cbiAgcG5hLm5leHRUaWNrKGNiLCBlcnIpO1xufTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5Jyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuUmVhZGFibGUuUmVhZGFibGVTdGF0ZSA9IFJlYWRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9O1xuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG5cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgZGVidWdVdGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIGRlYnVnID0gdm9pZCAwO1xuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiAoKSB7fTtcbn1cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Jyk7XG52YXIgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpO1xudmFyIFN0cmluZ0RlY29kZXI7XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFN0cmVhbSk7XG5cbnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107XG5cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd25cbiAgLy8gZXZlbnQgZW1pdHRlciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZW0uXG4gIGlmICh0eXBlb2YgZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuXG4gIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgLy8gdXNlcmxhbmQgb25lcy4gIE5FVkVSIERPIFRISVMuIFRoaXMgaXMgaGVyZSBvbmx5IGJlY2F1c2UgdGhpcyBjb2RlIG5lZWRzXG4gIC8vIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBOb2RlLmpzIHRoYXQgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkgZW1pdHRlci5vbihldmVudCwgZm4pO2Vsc2UgaWYgKGlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0udW5zaGlmdChmbik7ZWxzZSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdID0gW2ZuLCBlbWl0dGVyLl9ldmVudHNbZXZlbnRdXTtcbn1cblxuZnVuY3Rpb24gUmVhZGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcuIFVzZWQgdG8gbWFrZSByZWFkKG4pIGlnbm9yZSBuIGFuZCB0b1xuICAvLyBtYWtlIGFsbCB0aGUgYnVmZmVyIG1lcmdpbmcgYW5kIGxlbmd0aCBjaGVja3MgZ28gYXdheVxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIHJlYWRhYmxlSHdtID0gb3B0aW9ucy5yZWFkYWJsZUhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG5cbiAgaWYgKGh3bSB8fCBod20gPT09IDApIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bTtlbHNlIGlmIChpc0R1cGxleCAmJiAocmVhZGFibGVId20gfHwgcmVhZGFibGVId20gPT09IDApKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSByZWFkYWJsZUh3bTtlbHNlIHRoaXMuaGlnaFdhdGVyTWFyayA9IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBNYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayk7XG5cbiAgLy8gQSBsaW5rZWQgbGlzdCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEgY2h1bmtzIGluc3RlYWQgb2YgYW4gYXJyYXkgYmVjYXVzZSB0aGVcbiAgLy8gbGlua2VkIGxpc3QgY2FuIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgZmFzdGVyIHRoYW5cbiAgLy8gYXJyYXkuc2hpZnQoKVxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5waXBlcyA9IG51bGw7XG4gIHRoaXMucGlwZXNDb3VudCA9IDA7XG4gIHRoaXMuZmxvd2luZyA9IG51bGw7XG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIGV2ZW50ICdyZWFkYWJsZScvJ2RhdGEnIGlzIGVtaXR0ZWRcbiAgLy8gaW1tZWRpYXRlbHksIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2VcbiAgLy8gYW55IGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHJlYWQgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG4gIHRoaXMuYXdhaXREcmFpbiA9IDA7XG5cbiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuICB0aGlzLnJlYWRpbmdNb3JlID0gZmFsc2U7XG5cbiAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgdGhpcy5lbmNvZGluZyA9IG51bGw7XG4gIGlmIChvcHRpb25zLmVuY29kaW5nKSB7XG4gICAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihvcHRpb25zLmVuY29kaW5nKTtcbiAgICB0aGlzLmVuY29kaW5nID0gb3B0aW9ucy5lbmNvZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBSZWFkYWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKTtcblxuICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7XG5cbiAgLy8gbGVnYWN5XG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnJlYWQgPT09ICdmdW5jdGlvbicpIHRoaXMuX3JlYWQgPSBvcHRpb25zLnJlYWQ7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZGVzdHJveSA9IG9wdGlvbnMuZGVzdHJveTtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgY2IoZXJyKTtcbn07XG5cbi8vIE1hbnVhbGx5IHNob3ZlIHNvbWV0aGluZyBpbnRvIHRoZSByZWFkKCkgYnVmZmVyLlxuLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIGhpZ2hXYXRlck1hcmsgaGFzIG5vdCBiZWVuIGhpdCB5ZXQsXG4vLyBzaW1pbGFyIHRvIGhvdyBXcml0YWJsZS53cml0ZSgpIHJldHVybnMgdHJ1ZSBpZiB5b3Ugc2hvdWxkXG4vLyB3cml0ZSgpIHNvbWUgbW9yZS5cblJlYWRhYmxlLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgc2tpcENodW5rQ2hlY2s7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuICAgICAgaWYgKGVuY29kaW5nICE9PSBzdGF0ZS5lbmNvZGluZykge1xuICAgICAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gICAgICAgIGVuY29kaW5nID0gJyc7XG4gICAgICB9XG4gICAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UsIHNraXBDaHVua0NoZWNrKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgbnVsbCwgdHJ1ZSwgZmFsc2UpO1xufTtcblxuZnVuY3Rpb24gcmVhZGFibGVBZGRDaHVuayhzdHJlYW0sIGNodW5rLCBlbmNvZGluZywgYWRkVG9Gcm9udCwgc2tpcENodW5rQ2hlY2spIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZXI7XG4gICAgaWYgKCFza2lwQ2h1bmtDaGVjaykgZXIgPSBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKTtcbiAgICBpZiAoZXIpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGNodW5rKSAhPT0gQnVmZmVyLnByb3RvdHlwZSkge1xuICAgICAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWRkVG9Gcm9udCkge1xuICAgICAgICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpKTtlbHNlIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kZWQpIHtcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgICAgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuay5sZW5ndGggIT09IDApIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBmYWxzZSk7ZWxzZSBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFhZGRUb0Zyb250KSB7XG4gICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5lZWRNb3JlRGF0YShzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBhZGRUb0Zyb250KSB7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICB9IGVsc2Uge1xuICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG5cbiAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgfVxuICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlcjtcbiAgaWYgKCFfaXNVaW50OEFycmF5KGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICByZXR1cm4gZXI7XG59XG5cbi8vIGlmIGl0J3MgcGFzdCB0aGUgaGlnaCB3YXRlciBtYXJrLCB3ZSBjYW4gcHVzaCBpbiBzb21lIG1vcmUuXG4vLyBBbHNvLCBpZiB3ZSBoYXZlIG5vIGRhdGEgeWV0LCB3ZSBjYW4gc3RhbmQgc29tZVxuLy8gbW9yZSBieXRlcy4gIFRoaXMgaXMgdG8gd29yayBhcm91bmQgY2FzZXMgd2hlcmUgaHdtPTAsXG4vLyBzdWNoIGFzIHRoZSByZXBsLiAgQWxzbywgaWYgdGhlIHB1c2goKSB0cmlnZ2VyZWQgYVxuLy8gcmVhZGFibGUgZXZlbnQsIGFuZCB0aGUgdXNlciBjYWxsZWQgcmVhZChsYXJnZU51bWJlcikgc3VjaCB0aGF0XG4vLyBuZWVkUmVhZGFibGUgd2FzIHNldCwgdGhlbiB3ZSBvdWdodCB0byBwdXNoIG1vcmUsIHNvIHRoYXQgYW5vdGhlclxuLy8gJ3JlYWRhYmxlJyBldmVudCB3aWxsIGJlIHRyaWdnZXJlZC5cbmZ1bmN0aW9uIG5lZWRNb3JlRGF0YShzdGF0ZSkge1xuICByZXR1cm4gIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5uZWVkUmVhZGFibGUgfHwgc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5sZW5ndGggPT09IDApO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTtcblxuLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5SZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDhNQlxudmFyIE1BWF9IV00gPSAweDgwMDAwMDtcbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIG47XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcbiAgaWYgKG4gIT09IG4pIHtcbiAgICAvLyBPbmx5IGZsb3cgb25lIGJ1ZmZlciBhdCBhIHRpbWVcbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgLy8gSWYgd2UncmUgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgaHdtLCB0aGVuIHJhaXNlIHRoZSBod20uXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuO1xuICAvLyBEb24ndCBoYXZlIGVub3VnaFxuICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufVxuXG4vLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuUmVhZGFibGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAobikge1xuICBkZWJ1ZygncmVhZCcsIG4pO1xuICBuID0gcGFyc2VJbnQobiwgMTApO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgbk9yaWcgPSBuO1xuXG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcblxuICAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoc3RhdGUubGVuZ3RoID49IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpO1xuXG4gIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmVcbiAgLy8gKmJlbG93KiB0aGUgY2FsbCB0byBfcmVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCBpbiBjZXJ0YWluXG4gIC8vIHN5bnRoZXRpYyBzdHJlYW0gY2FzZXMsIHN1Y2ggYXMgcGFzc3Rocm91Z2ggc3RyZWFtcywgX3JlYWRcbiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZVxuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgYnVmZmVyLCBwcm92aWRpbmcgZW5vdWdoIGRhdGEgd2hlblxuICAvLyBiZWZvcmUgdGhlcmUgd2FzICpub3QqIGVub3VnaC5cbiAgLy9cbiAgLy8gU28sIHRoZSBzdGVwcyBhcmU6XG4gIC8vIDEuIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc3RhdGUgb2YgdGhpbmdzIHdpbGwgYmUgYWZ0ZXIgd2UgZG9cbiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci5cbiAgLy9cbiAgLy8gMi4gSWYgdGhhdCByZXN1bHRpbmcgc3RhdGUgd2lsbCB0cmlnZ2VyIGEgX3JlYWQsIHRoZW4gY2FsbCBfcmVhZC5cbiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzXG4gIC8vIGRlZXBseSB1Z2x5IHRvIHdyaXRlIEFQSXMgdGhpcyB3YXksIGJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3QgbWVhblxuICAvLyB0aGF0IHRoZSBSZWFkYWJsZSBjbGFzcyBzaG91bGQgYmVoYXZlIGltcHJvcGVybHksIGFzIHN0cmVhbXMgYXJlXG4gIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuXG4gIC8vIFRha2Ugbm90ZSBpZiB0aGUgX3JlYWQgY2FsbCBpcyBzeW5jIG9yIGFzeW5jIChpZSwgaWYgdGhlIHJlYWQgY2FsbFxuICAvLyBoYXMgcmV0dXJuZWQgeWV0KSwgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgb3Igbm90IGl0J3Mgc2FmZSB0byBlbWl0XG4gIC8vICdyZWFkYWJsZScgZXRjLlxuICAvL1xuICAvLyAzLiBBY3R1YWxseSBwdWxsIHRoZSByZXF1ZXN0ZWQgY2h1bmtzIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZXR1cm4uXG5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7XG5cbiAgLy8gaWYgd2UgY3VycmVudGx5IGhhdmUgbGVzcyB0aGFuIHRoZSBoaWdoV2F0ZXJNYXJrLCB0aGVuIGFsc28gcmVhZCBzb21lXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH1cblxuICAvLyBob3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBhbmQgaWYgd2UncmUgYWxyZWFkeVxuICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7XG4gICAgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIHN0YXRlLnN5bmMgPSBmYWxzZTtcbiAgICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cbiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG4gIH1cblxuICB2YXIgcmV0O1xuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKTtlbHNlIHJldCA9IG51bGw7XG5cbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuXG4gIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbn1cblxuLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBpZiAoc3RhdGUuc3luYykgcG5hLm5leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgZGVidWcoJ2VtaXQgcmVhZGFibGUnKTtcbiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gIGZsb3coc3RyZWFtKTtcbn1cblxuLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nTW9yZSkge1xuICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5lbmRlZCAmJiBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKVxuICAgICAgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2U7XG59XG5cbi8vIGFic3RyYWN0IG1ldGhvZC4gIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguXG4vLyBmb3IgdmlydHVhbCAobm9uLXN0cmluZywgbm9uLWJ1ZmZlcikgc3RyZWFtcywgXCJsZW5ndGhcIiBpcyBzb21ld2hhdFxuLy8gYXJiaXRyYXJ5LCBhbmQgcGVyaGFwcyBub3QgdmVyeSBtZWFuaW5nZnVsLlxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcblxuICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyO1xuXG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiB1bnBpcGU7XG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwbmEubmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcblxuICBkZXN0Lm9uKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7XG4gICAgZGVidWcoJ29udW5waXBlJyk7XG4gICAgaWYgKHJlYWRhYmxlID09PSBzcmMpIHtcbiAgICAgIGlmICh1bnBpcGVJbmZvICYmIHVucGlwZUluZm8uaGFzVW5waXBlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdW5waXBlSW5mby5oYXNVbnBpcGVkID0gdHJ1ZTtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGRlYnVnKCdvbmVuZCcpO1xuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuICAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyXG4gIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAvLyBoYW5kbGVyIGluIGZsb3coKSwgYnV0IGFkZGluZyBhbmQgcmVtb3ZpbmcgcmVwZWF0ZWRseSBpc1xuICAvLyB0b28gc2xvdy5cbiAgdmFyIG9uZHJhaW4gPSBwaXBlT25EcmFpbihzcmMpO1xuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpO1xuICAgIC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgdW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuXG4gICAgY2xlYW5lZFVwID0gdHJ1ZTtcblxuICAgIC8vIGlmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXBcbiAgLy8gaW4gb25kYXRhIGFnYWluLiBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gaW5jcmVhc2UgYXdhaXREcmFpbiBvbmNlIGJlY2F1c2VcbiAgLy8gZGVzdCB3aWxsIG9ubHkgZW1pdCBvbmUgJ2RyYWluJyBldmVudCBmb3IgdGhlIG11bHRpcGxlIHdyaXRlcy5cbiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLlxuICB2YXIgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICBzcmMub24oJ2RhdGEnLCBvbmRhdGEpO1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBpZiAoZmFsc2UgPT09IHJldCAmJiAhaW5jcmVhc2VkQXdhaXREcmFpbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pO1xuICAgICAgICBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHVucGlwZUluZm8gPSB7IGhhc1VucGlwZWQ6IGZhbHNlIH07XG5cbiAgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7XG5cbiAgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzO1xuXG4gICAgLy8gZ290IGEgbWF0Y2guXG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICBpZiAoZGVzdCkgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHNsb3cgY2FzZS4gbXVsdGlwbGUgcGlwZSBkZXN0aW5hdGlvbnMuXG5cbiAgaWYgKCFkZXN0KSB7XG4gICAgLy8gcmVtb3ZlIGFsbC5cbiAgICB2YXIgZGVzdHMgPSBzdGF0ZS5waXBlcztcbiAgICB2YXIgbGVuID0gc3RhdGUucGlwZXNDb3VudDtcbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdHNbaV0uZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgfXJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGluZGV4ID0gaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzO1xuXG4gIHN0YXRlLnBpcGVzLnNwbGljZShpbmRleCwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG5cbiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgIC8vIFN0YXJ0IGZsb3dpbmcgb24gbmV4dCB0aWNrIGlmIHN0cmVhbSBpc24ndCBleHBsaWNpdGx5IHBhdXNlZFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7XG4gICAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIGlmICghc3RhdGUucmVhZGluZykge1xuICAgICAgICBwbmEubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5SZWFkYWJsZS5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBSZWFkYWJsZS5wcm90b3R5cGUub247XG5cbmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikge1xuICBkZWJ1ZygncmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwJyk7XG4gIHNlbGYucmVhZCgwKTtcbn1cblxuLy8gcGF1c2UoKSBhbmQgcmVzdW1lKCkgYXJlIHJlbW5hbnRzIG9mIHRoZSBsZWdhY3kgcmVhZGFibGUgc3RyZWFtIEFQSVxuLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLlxuUmVhZGFibGUucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpO1xuICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiByZXN1bWUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkge1xuICAgIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKHJlc3VtZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICB9XG5cbiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHN0YXRlLmF3YWl0RHJhaW4gPSAwO1xuICBzdHJlYW0uZW1pdCgncmVzdW1lJyk7XG4gIGZsb3coc3RyZWFtKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpO1xuICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZsb3coc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2Zsb3cnLCBzdGF0ZS5mbG93aW5nKTtcbiAgd2hpbGUgKHN0YXRlLmZsb3dpbmcgJiYgc3RyZWFtLnJlYWQoKSAhPT0gbnVsbCkge31cbn1cblxuLy8gd3JhcCBhbiBvbGQtc3R5bGUgc3RyZWFtIGFzIHRoZSBhc3luYyBkYXRhIHNvdXJjZS5cbi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS5cbi8vIEl0IGlzIGFuIHVnbHkgdW5mb3J0dW5hdGUgbWVzcyBvZiBoaXN0b3J5LlxuUmVhZGFibGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHBhdXNlZCA9IGZhbHNlO1xuXG4gIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIGRlYnVnKCd3cmFwcGVkIGVuZCcpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIF90aGlzLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIF90aGlzLnB1c2gobnVsbCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgIGRlYnVnKCd3cmFwcGVkIGRhdGEnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLndyaXRlKGNodW5rKTtcblxuICAgIC8vIGRvbid0IHNraXAgb3ZlciBmYWxzeSB2YWx1ZXMgaW4gb2JqZWN0TW9kZVxuICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlICYmIChjaHVuayA9PT0gbnVsbCB8fCBjaHVuayA9PT0gdW5kZWZpbmVkKSkgcmV0dXJuO2Vsc2UgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmICghY2h1bmsgfHwgIWNodW5rLmxlbmd0aCkpIHJldHVybjtcblxuICAgIHZhciByZXQgPSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICBpZiAoIXJldCkge1xuICAgICAgcGF1c2VkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5wYXVzZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gcHJveHkgYWxsIHRoZSBvdGhlciBtZXRob2RzLlxuICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy5cbiAgZm9yICh2YXIgaSBpbiBzdHJlYW0pIHtcbiAgICBpZiAodGhpc1tpXSA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBzdHJlYW1baV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNbaV0gPSBmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbVttZXRob2RdLmFwcGx5KHN0cmVhbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oaSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJveHkgY2VydGFpbiBpbXBvcnRhbnQgZXZlbnRzLlxuICBmb3IgKHZhciBuID0gMDsgbiA8IGtQcm94eUV2ZW50cy5sZW5ndGg7IG4rKykge1xuICAgIHN0cmVhbS5vbihrUHJveHlFdmVudHNbbl0sIHRoaXMuZW1pdC5iaW5kKHRoaXMsIGtQcm94eUV2ZW50c1tuXSkpO1xuICB9XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuUmVhZGFibGUuX2Zyb21MaXN0ID0gZnJvbUxpc3Q7XG5cbi8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy5cbi8vIExlbmd0aCBpcyB0aGUgY29tYmluZWQgbGVuZ3RocyBvZiBhbGwgdGhlIGJ1ZmZlcnMgaW4gdGhlIGxpc3QuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGZyb21MaXN0KG4sIHN0YXRlKSB7XG4gIC8vIG5vdGhpbmcgYnVmZmVyZWRcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIHJldDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7XG4gICAgLy8gcmVhZCBpdCBhbGwsIHRydW5jYXRlIHRoZSBsaXN0XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIHJldCA9IHN0YXRlLmJ1ZmZlci5qb2luKCcnKTtlbHNlIGlmIChzdGF0ZS5idWZmZXIubGVuZ3RoID09PSAxKSByZXQgPSBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhO2Vsc2UgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbmNhdChzdGF0ZS5sZW5ndGgpO1xuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQgcGFydCBvZiBsaXN0XG4gICAgcmV0ID0gZnJvbUxpc3RQYXJ0aWFsKG4sIHN0YXRlLmJ1ZmZlciwgc3RhdGUuZGVjb2Rlcik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vLyBFeHRyYWN0cyBvbmx5IGVub3VnaCBidWZmZXJlZCBkYXRhIHRvIHNhdGlzZnkgdGhlIGFtb3VudCByZXF1ZXN0ZWQuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGZyb21MaXN0UGFydGlhbChuLCBsaXN0LCBoYXNTdHJpbmdzKSB7XG4gIHZhciByZXQ7XG4gIGlmIChuIDwgbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gc2xpY2UgaXMgdGhlIHNhbWUgZm9yIGJ1ZmZlcnMgYW5kIHN0cmluZ3NcbiAgICByZXQgPSBsaXN0LmhlYWQuZGF0YS5zbGljZSgwLCBuKTtcbiAgICBsaXN0LmhlYWQuZGF0YSA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKG4pO1xuICB9IGVsc2UgaWYgKG4gPT09IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIGZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaFxuICAgIHJldCA9IGxpc3Quc2hpZnQoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZXN1bHQgc3BhbnMgbW9yZSB0aGFuIG9uZSBidWZmZXJcbiAgICByZXQgPSBoYXNTdHJpbmdzID8gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkgOiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vLyBDb3BpZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhXG4vLyBjaHVua3MuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIHtcbiAgdmFyIHAgPSBsaXN0LmhlYWQ7XG4gIHZhciBjID0gMTtcbiAgdmFyIHJldCA9IHAuZGF0YTtcbiAgbiAtPSByZXQubGVuZ3RoO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHZhciBzdHIgPSBwLmRhdGE7XG4gICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjtcbiAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHJldCArPSBzdHI7ZWxzZSByZXQgKz0gc3RyLnNsaWNlKDAsIG4pO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBzdHIuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG4vLyBDb3BpZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YSBjaHVua3MuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpIHtcbiAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuKTtcbiAgdmFyIHAgPSBsaXN0LmhlYWQ7XG4gIHZhciBjID0gMTtcbiAgcC5kYXRhLmNvcHkocmV0KTtcbiAgbiAtPSBwLmRhdGEubGVuZ3RoO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHZhciBidWYgPSBwLmRhdGE7XG4gICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjtcbiAgICBidWYuY29weShyZXQsIHJldC5sZW5ndGggLSBuLCAwLCBuYik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IGJ1Zi5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG5cbiAgLy8gSWYgd2UgZ2V0IGhlcmUgYmVmb3JlIGNvbnN1bWluZyBhbGwgdGhlIGJ5dGVzLCB0aGVuIHRoYXQgaXMgYVxuICAvLyBidWcgaW4gbm9kZS4gIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gIGlmIChzdGF0ZS5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJ1wiZW5kUmVhZGFibGUoKVwiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7XG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKHN0YXRlLCBzdHJlYW0pIHtcbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh4c1tpXSA9PT0geCkgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvXG4vLyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YS4gIFNvbWV0aW1lcyBpdCdzIGNhbGxlZCBhIFwiZmlsdGVyXCIsXG4vLyBidXQgdGhhdCdzIG5vdCBhIGdyZWF0IG5hbWUgZm9yIGl0LCBzaW5jZSB0aGF0IGltcGxpZXMgYSB0aGluZyB3aGVyZVxuLy8gc29tZSBiaXRzIHBhc3MgdGhyb3VnaCwgYW5kIG90aGVycyBhcmUgc2ltcGx5IGlnbm9yZWQuICAoVGhhdCB3b3VsZFxuLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKVxuLy9cbi8vIFdoaWxlIHRoZSBvdXRwdXQgaXMgY2F1c2FsbHkgcmVsYXRlZCB0byB0aGUgaW5wdXQsIGl0J3Mgbm90IGFcbi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLFxuLy8gYSB6bGliIHN0cmVhbSBtaWdodCB0YWtlIG11bHRpcGxlIHBsYWluLXRleHQgd3JpdGVzKCksIGFuZCB0aGVuXG4vLyBlbWl0IGEgc2luZ2xlIGNvbXByZXNzZWQgY2h1bmsgc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuXG4vL1xuLy8gSGVyZSdzIGhvdyB0aGlzIHdvcmtzOlxuLy9cbi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZVxuLy8gc3RyZWFtIGNsYXNzZXMuICBXaGVuIHlvdSB3cml0ZShjaHVuayksIHRoYXQgY2FsbHMgX3dyaXRlKGNodW5rLGNiKVxuLy8gaW50ZXJuYWxseSwgYW5kIHJldHVybnMgZmFsc2UgaWYgdGhlcmUncyBhIGxvdCBvZiBwZW5kaW5nIHdyaXRlc1xuLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbFxuLy8gdGhlcmUncyBlbm91Z2ggcGVuZGluZyByZWFkYWJsZSBkYXRhIGJ1ZmZlcmVkIHVwLlxuLy9cbi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuXG4vLyBfcmVhZChuKSBpcyBjYWxsZWQsIGl0IHRyYW5zZm9ybXMgdGhlIHF1ZXVlZCB1cCBkYXRhLCBjYWxsaW5nIHRoZVxuLy8gYnVmZmVyZWQgX3dyaXRlIGNiJ3MgYXMgaXQgY29uc3VtZXMgY2h1bmtzLiAgSWYgY29uc3VtaW5nIGEgc2luZ2xlXG4vLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdFxuLy8gb3V0cHV0dGVkIGJpdCBjYWxscyB0aGUgcmVhZGNiLCBhbmQgc3Vic2VxdWVudCBjaHVua3MganVzdCBnbyBpbnRvXG4vLyB0aGUgcmVhZCBidWZmZXIsIGFuZCB3aWxsIGNhdXNlIGl0IHRvIGVtaXQgJ3JlYWRhYmxlJyBpZiBuZWNlc3NhcnkuXG4vL1xuLy8gVGhpcyB3YXksIGJhY2stcHJlc3N1cmUgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgcmVhZGluZyBzaWRlLFxuLy8gc2luY2UgX3JlYWQgaGFzIHRvIGJlIGNhbGxlZCB0byBzdGFydCBwcm9jZXNzaW5nIGEgbmV3IGNodW5rLiAgSG93ZXZlcixcbi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmdcbi8vIGhlcmUuICBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIHN0cmVhbSB3aGVyZSBldmVyeSBieXRlIG9mIGlucHV0IGlzXG4vLyBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyIGZyb20gMC0yNTUsIGFuZCB0aGVuIHJlc3VsdHMgaW4gdGhhdCBtYW55XG4vLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluXG4vLyAxa2Igb2YgZGF0YSBiZWluZyBvdXRwdXQuICBJbiB0aGlzIGNhc2UsIHlvdSBjb3VsZCB3cml0ZSBhIHZlcnkgc21hbGxcbi8vIGFtb3VudCBvZiBpbnB1dCwgYW5kIGVuZCB1cCB3aXRoIGEgdmVyeSBsYXJnZSBhbW91bnQgb2Ygb3V0cHV0LiAgSW5cbi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbFxuLy8gdGhlIHN5c3RlbSB0byBzdG9wIGRvaW5nIHRoZSB0cmFuc2Zvcm0uICBBIHNpbmdsZSA0TUIgd3JpdGUgY291bGRcbi8vIGNhdXNlIHRoZSBzeXN0ZW0gdG8gcnVuIG91dCBvZiBtZW1vcnkuXG4vL1xuLy8gSG93ZXZlciwgZXZlbiBpbiBzdWNoIGEgcGF0aG9sb2dpY2FsIGNhc2UsIG9ubHkgYSBzaW5nbGUgd3JpdHRlbiBjaHVua1xuLy8gd291bGQgYmUgY29uc3VtZWQsIGFuZCB0aGVuIHRoZSByZXN0IHdvdWxkIHdhaXQgKHVuLXRyYW5zZm9ybWVkKSB1bnRpbFxuLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBEdXBsZXggPSByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcblxuICB2YXIgY2IgPSB0cy53cml0ZWNiO1xuXG4gIGlmICghY2IpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignd3JpdGUgY2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzJykpO1xuICB9XG5cbiAgdHMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRzLndyaXRlY2IgPSBudWxsO1xuXG4gIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYFxuICAgIHRoaXMucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcnMucmVhZGluZyA9IGZhbHNlO1xuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTtcblxuICBEdXBsZXguY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IHtcbiAgICBhZnRlclRyYW5zZm9ybTogYWZ0ZXJUcmFuc2Zvcm0uYmluZCh0aGlzKSxcbiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1pbmc6IGZhbHNlLFxuICAgIHdyaXRlY2I6IG51bGwsXG4gICAgd3JpdGVjaHVuazogbnVsbCxcbiAgICB3cml0ZWVuY29kaW5nOiBudWxsXG4gIH07XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdGhpcy5vbigncHJlZmluaXNoJywgcHJlZmluaXNoKTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLl9mbHVzaChmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpO1xuICB9XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ190cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLndyaXRlY2IgPSBjYjtcbiAgdHMud3JpdGVjaHVuayA9IGNodW5rO1xuICB0cy53cml0ZWVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIGlmICghdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufTtcblxuLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgYXJncyBhcmUgaGVyZS5cbi8vIF90cmFuc2Zvcm0gZG9lcyBhbGwgdGhlIHdvcmsuXG4vLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLlxuVHJhbnNmb3JtLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuXG4gIGlmICh0cy53cml0ZWNodW5rICE9PSBudWxsICYmIHRzLndyaXRlY2IgJiYgIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHRzLnRyYW5zZm9ybWluZyA9IHRydWU7XG4gICAgdGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssIHRzLndyaXRlZW5jb2RpbmcsIHRzLmFmdGVyVHJhbnNmb3JtKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBtYXJrIHRoYXQgd2UgbmVlZCBhIHRyYW5zZm9ybSwgc28gdGhhdCBhbnkgZGF0YSB0aGF0IGNvbWVzIGluXG4gICAgLy8gd2lsbCBnZXQgcHJvY2Vzc2VkLCBub3cgdGhhdCB3ZSd2ZSBhc2tlZCBmb3IgaXQuXG4gICAgdHMubmVlZFRyYW5zZm9ybSA9IHRydWU7XG4gIH1cbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICBEdXBsZXgucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcywgZXJyLCBmdW5jdGlvbiAoZXJyMikge1xuICAgIGNiKGVycjIpO1xuICAgIF90aGlzMi5lbWl0KCdjbG9zZScpO1xuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGRvbmUoc3RyZWFtLCBlciwgZGF0YSkge1xuICBpZiAoZXIpIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgc3RyZWFtLnB1c2goZGF0YSk7XG5cbiAgLy8gaWYgdGhlcmUncyBub3RoaW5nIGluIHRoZSB3cml0ZSBidWZmZXIsIHRoZW4gdGhhdCBtZWFuc1xuICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWRcbiAgaWYgKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwJyk7XG5cbiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTtcblxuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuXG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICAgIG9uQ29ya2VkRmluaXNoKF90aGlzLCBzdGF0ZSk7XG4gIH07XG59XG4vKiA8L3JlcGxhY2VtZW50PiAqL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGFzeW5jV3JpdGUgPSAhcHJvY2Vzcy5icm93c2VyICYmIFsndjAuMTAnLCAndjAuOS4nXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLCA1KSkgPiAtMSA/IHNldEltbWVkaWF0ZSA6IHBuYS5uZXh0VGljaztcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGludGVybmFsVXRpbCA9IHtcbiAgZGVwcmVjYXRlOiByZXF1aXJlKCd1dGlsLWRlcHJlY2F0ZScpXG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtXG4gIC8vIGNvbnRhaW5zIGJ1ZmZlcnMgb3Igb2JqZWN0cy5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIHdyaXRhYmxlSHdtID0gb3B0aW9ucy53cml0YWJsZUhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG5cbiAgaWYgKGh3bSB8fCBod20gPT09IDApIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bTtlbHNlIGlmIChpc0R1cGxleCAmJiAod3JpdGFibGVId20gfHwgd3JpdGFibGVId20gPT09IDApKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSB3cml0YWJsZUh3bTtlbHNlIHRoaXMuaGlnaFdhdGVyTWFyayA9IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBNYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayk7XG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7XG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcbiAgdGhpcy5lbmRpbmcgPSBmYWxzZTtcbiAgLy8gd2hlbiBlbmQoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZCByZXR1cm5lZFxuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuXG4gIC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcbiAgdGhpcy5jb3JrZWQgPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcblxuICAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG4gIHRoaXMud3JpdGVsZW4gPSAwO1xuXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcbiAgdGhpcy5wZW5kaW5nY2IgPSAwO1xuXG4gIC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG5cbiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicsICdERVAwMDAzJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbi8vIFRlc3QgX3dyaXRhYmxlU3RhdGUgZm9yIGluaGVyaXRhbmNlIHRvIGFjY291bnQgZm9yIER1cGxleCBzdHJlYW1zLFxuLy8gd2hvc2UgcHJvdG90eXBlIGNoYWluIG9ubHkgcG9pbnRzIHRvIFJlYWRhYmxlLlxudmFyIHJlYWxIYXNJbnN0YW5jZTtcbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5oYXNJbnN0YW5jZSAmJiB0eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RhdGU7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICBpZiAoIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSB7XG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgfVxuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKTtcbiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcbiAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbn1cblxuLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuICB2YXIgaXNCdWYgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBfaXNVaW50OEFycmF5KGNodW5rKTtcblxuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBpZiAoIWlzQnVmKSB7XG4gICAgdmFyIG5ld0NodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG4gICAgaWYgKGNodW5rICE9PSBuZXdDaHVuaykge1xuICAgICAgaXNCdWYgPSB0cnVlO1xuICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgICAgIGNodW5rID0gbmV3Q2h1bms7XG4gICAgfVxuICB9XG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuXG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7XG4gICAgICBjaHVuazogY2h1bmssXG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICBpc0J1ZjogaXNCdWYsXG4gICAgICBjYWxsYmFjazogY2IsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuXG4gIGlmIChzeW5jKSB7XG4gICAgLy8gZGVmZXIgdGhlIGNhbGxiYWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgc3luY2hyb25vdXNseVxuICAgIC8vIHRvIGF2b2lkIHBpbGluZyB1cCB0aGluZ3Mgb24gdGhlIHN0YWNrXG4gICAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuICAgIHBuYS5uZXh0VGljayhmaW5pc2hNYXliZSwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYnV0IGZpbmlzaCBtdXN0XG4gICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvclxuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cblxuZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHN5bmMgPSBzdGF0ZS5zeW5jO1xuICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiO1xuXG4gIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSk7XG5cbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gICAgaWYgKCFmaW5pc2hlZCAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8qPHJlcGxhY2VtZW50PiovXG4gICAgICBhc3luY1dyaXRlKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki9cbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHZhciBhbGxCdWZmZXJzID0gdHJ1ZTtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcblxuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTtcblxuICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gZW50cnk7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTtcblxuICAvLyAuZW5kKCkgZnVsbHkgdW5jb3Jrc1xuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9XG5cbiAgLy8gaWdub3JlIHVubmVjZXNzYXJ5IGVuZCgpIGNhbGxzLlxuICBpZiAoIXN0YXRlLmVuZGluZyAmJiAhc3RhdGUuZmluaXNoZWQpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH1cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICAgIHN0YXRlLmZpbmFsQ2FsbGVkID0gdHJ1ZTtcbiAgICAgIHBuYS5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcG5hLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cbiAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkge1xuICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0ID0gY29ya1JlcTtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBjb3JrUmVxO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5lbmQoKTtcbiAgY2IoZXJyKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIHNyYy5jb3B5KHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gdW5zaGlmdCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgLS10aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgfXJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgcCA9IHAubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICByZXR1cm4gQnVmZmVyTGlzdDtcbn0oKTtcblxuaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHtcbiAgbW9kdWxlLmV4cG9ydHMucHJvdG90eXBlW3V0aWwuaW5zcGVjdC5jdXN0b21dID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSB1dGlsLmluc3BlY3QoeyBsZW5ndGg6IHRoaXMubGVuZ3RoIH0pO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vLyB1bmRvY3VtZW50ZWQgY2IoKSBBUEksIG5lZWRlZCBmb3IgY29yZSwgbm90IGZvciBwdWJsaWMgQVBJXG5mdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB2YXIgd3JpdGFibGVEZXN0cm95ZWQgPSB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuXG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVyciAmJiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUgfHwgIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSkge1xuICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCB0aGlzLCBlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHdlIHNldCBkZXN0cm95ZWQgdG8gdHJ1ZSBiZWZvcmUgZmlyaW5nIGVycm9yIGNhbGxiYWNrcyBpbiBvcmRlclxuICAvLyB0byBtYWtlIGl0IHJlLWVudHJhbmNlIHNhZmUgaW4gY2FzZSBkZXN0cm95KCkgaXMgY2FsbGVkIHdpdGhpbiBjYWxsYmFja3NcblxuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIGlmIHRoaXMgaXMgYSBkdXBsZXggc3RyZWFtIG1hcmsgdGhlIHdyaXRhYmxlIHBhcnQgYXMgZGVzdHJveWVkIGFzIHdlbGxcbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKCFjYiAmJiBlcnIpIHtcbiAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgX3RoaXMsIGVycik7XG4gICAgICBpZiAoX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgX3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHVuZGVzdHJveSgpIHtcbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgc2VsZi5lbWl0KCdlcnJvcicsIGVycik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZXN0cm95OiBkZXN0cm95LFxuICB1bmRlc3Ryb3k6IHVuZGVzdHJveVxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcmVhZGFibGUuanMnKTtcbmV4cG9ydHMuU3RyZWFtID0gZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG4iLCJjb25zdCB1dGlsICAgICAgPSByZXF1aXJlKCcuL3V0aWwnKTtcbmNvbnN0IHR5cGVzICAgICA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcbmNvbnN0IHNldHMgICAgICA9IHJlcXVpcmUoJy4vc2V0cycpO1xuY29uc3QgcG9zaXRpb25zID0gcmVxdWlyZSgnLi9wb3NpdGlvbnMnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IChyZWdleHBTdHIpID0+IHtcbiAgdmFyIGkgPSAwLCBsLCBjLFxuICAgIHN0YXJ0ID0geyB0eXBlOiB0eXBlcy5ST09ULCBzdGFjazogW119LFxuXG4gICAgLy8gS2VlcCB0cmFjayBvZiBsYXN0IGNsYXVzZS9ncm91cCBhbmQgc3RhY2suXG4gICAgbGFzdEdyb3VwID0gc3RhcnQsXG4gICAgbGFzdCA9IHN0YXJ0LnN0YWNrLFxuICAgIGdyb3VwU3RhY2sgPSBbXTtcblxuXG4gIHZhciByZXBlYXRFcnIgPSAoaSkgPT4ge1xuICAgIHV0aWwuZXJyb3IocmVnZXhwU3RyLCBgTm90aGluZyB0byByZXBlYXQgYXQgY29sdW1uICR7aSAtIDF9YCk7XG4gIH07XG5cbiAgLy8gRGVjb2RlIGEgZmV3IGVzY2FwZWQgY2hhcmFjdGVycy5cbiAgdmFyIHN0ciA9IHV0aWwuc3RyVG9DaGFycyhyZWdleHBTdHIpO1xuICBsID0gc3RyLmxlbmd0aDtcblxuICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBjaGFyYWN0ZXIgaW4gc3RyaW5nLlxuICB3aGlsZSAoaSA8IGwpIHtcbiAgICBjID0gc3RyW2krK107XG5cbiAgICBzd2l0Y2ggKGMpIHtcbiAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIGNoYXJhY3RlcnMsIGluY2x1ZXMgYSBmZXcgc2V0cy5cbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICBjID0gc3RyW2krK107XG5cbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSAnYic6XG4gICAgICAgICAgICBsYXN0LnB1c2gocG9zaXRpb25zLndvcmRCb3VuZGFyeSgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnQic6XG4gICAgICAgICAgICBsYXN0LnB1c2gocG9zaXRpb25zLm5vbldvcmRCb3VuZGFyeSgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy53b3JkcygpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy5ub3RXb3JkcygpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy5pbnRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLm5vdEludHMoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMud2hpdGVzcGFjZSgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy5ub3RXaGl0ZXNwYWNlKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYyBpcyBpbnRlZ2VyLlxuICAgICAgICAgICAgLy8gSW4gd2hpY2ggY2FzZSBpdCdzIGEgcmVmZXJlbmNlLlxuICAgICAgICAgICAgaWYgKC9cXGQvLnRlc3QoYykpIHtcbiAgICAgICAgICAgICAgbGFzdC5wdXNoKHsgdHlwZTogdHlwZXMuUkVGRVJFTkNFLCB2YWx1ZTogcGFyc2VJbnQoYywgMTApIH0pO1xuXG4gICAgICAgICAgICAvLyBFc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxhc3QucHVzaCh7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiBjLmNoYXJDb2RlQXQoMCkgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBQb3NpdGlvbmFscy5cbiAgICAgIGNhc2UgJ14nOlxuICAgICAgICBsYXN0LnB1c2gocG9zaXRpb25zLmJlZ2luKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnJCc6XG4gICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMuZW5kKCkpO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBIYW5kbGUgY3VzdG9tIHNldHMuXG4gICAgICBjYXNlICdbJzpcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBjbGFzcyBpcyAnYW50aScgaS5lLiBbXmFiY10uXG4gICAgICAgIHZhciBub3Q7XG4gICAgICAgIGlmIChzdHJbaV0gPT09ICdeJykge1xuICAgICAgICAgIG5vdCA9IHRydWU7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vdCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IGFsbCB0aGUgY2hhcmFjdGVycyBpbiBjbGFzcy5cbiAgICAgICAgdmFyIGNsYXNzVG9rZW5zID0gdXRpbC50b2tlbml6ZUNsYXNzKHN0ci5zbGljZShpKSwgcmVnZXhwU3RyKTtcblxuICAgICAgICAvLyBJbmNyZWFzZSBpbmRleCBieSBsZW5ndGggb2YgY2xhc3MuXG4gICAgICAgIGkgKz0gY2xhc3NUb2tlbnNbMV07XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuU0VULFxuICAgICAgICAgIHNldDogY2xhc3NUb2tlbnNbMF0sXG4gICAgICAgICAgbm90LFxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBDbGFzcyBvZiBhbnkgY2hhcmFjdGVyIGV4Y2VwdCBcXG4uXG4gICAgICBjYXNlICcuJzpcbiAgICAgICAgbGFzdC5wdXNoKHNldHMuYW55Q2hhcigpKTtcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gUHVzaCBncm91cCBvbnRvIHN0YWNrLlxuICAgICAgY2FzZSAnKCc6XG4gICAgICAgIC8vIENyZWF0ZSBncm91cC5cbiAgICAgICAgdmFyIGdyb3VwID0ge1xuICAgICAgICAgIHR5cGU6IHR5cGVzLkdST1VQLFxuICAgICAgICAgIHN0YWNrOiBbXSxcbiAgICAgICAgICByZW1lbWJlcjogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBjID0gc3RyW2ldO1xuXG4gICAgICAgIC8vIElmIGlmIHRoaXMgaXMgYSBzcGVjaWFsIGtpbmQgb2YgZ3JvdXAuXG4gICAgICAgIGlmIChjID09PSAnPycpIHtcbiAgICAgICAgICBjID0gc3RyW2kgKyAxXTtcbiAgICAgICAgICBpICs9IDI7XG5cbiAgICAgICAgICAvLyBNYXRjaCBpZiBmb2xsb3dlZCBieS5cbiAgICAgICAgICBpZiAoYyA9PT0gJz0nKSB7XG4gICAgICAgICAgICBncm91cC5mb2xsb3dlZEJ5ID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIE1hdGNoIGlmIG5vdCBmb2xsb3dlZCBieS5cbiAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09ICchJykge1xuICAgICAgICAgICAgZ3JvdXAubm90Rm9sbG93ZWRCeSA9IHRydWU7XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGMgIT09ICc6Jykge1xuICAgICAgICAgICAgdXRpbC5lcnJvcihyZWdleHBTdHIsXG4gICAgICAgICAgICAgIGBJbnZhbGlkIGdyb3VwLCBjaGFyYWN0ZXIgJyR7Y30nYCArXG4gICAgICAgICAgICAgIGAgYWZ0ZXIgJz8nIGF0IGNvbHVtbiAke2kgLSAxfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGdyb3VwLnJlbWVtYmVyID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbnNlcnQgc3ViZ3JvdXAgaW50byBjdXJyZW50IGdyb3VwIHN0YWNrLlxuICAgICAgICBsYXN0LnB1c2goZ3JvdXApO1xuXG4gICAgICAgIC8vIFJlbWVtYmVyIHRoZSBjdXJyZW50IGdyb3VwIGZvciB3aGVuIHRoZSBncm91cCBjbG9zZXMuXG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChsYXN0R3JvdXApO1xuXG4gICAgICAgIC8vIE1ha2UgdGhpcyBuZXcgZ3JvdXAgdGhlIGN1cnJlbnQgZ3JvdXAuXG4gICAgICAgIGxhc3RHcm91cCA9IGdyb3VwO1xuICAgICAgICBsYXN0ID0gZ3JvdXAuc3RhY2s7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFBvcCBncm91cCBvdXQgb2Ygc3RhY2suXG4gICAgICBjYXNlICcpJzpcbiAgICAgICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdXRpbC5lcnJvcihyZWdleHBTdHIsIGBVbm1hdGNoZWQgKSBhdCBjb2x1bW4gJHtpIC0gMX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0R3JvdXAgPSBncm91cFN0YWNrLnBvcCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgZ3JvdXAgaGFzIGEgUElQRS5cbiAgICAgICAgLy8gVG8gZ2V0IGJhY2sgdGhlIGNvcnJlY3QgbGFzdCBzdGFjay5cbiAgICAgICAgbGFzdCA9IGxhc3RHcm91cC5vcHRpb25zID9cbiAgICAgICAgICBsYXN0R3JvdXAub3B0aW9uc1tsYXN0R3JvdXAub3B0aW9ucy5sZW5ndGggLSAxXSA6IGxhc3RHcm91cC5zdGFjaztcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gVXNlIHBpcGUgY2hhcmFjdGVyIHRvIGdpdmUgbW9yZSBjaG9pY2VzLlxuICAgICAgY2FzZSAnfCc6XG4gICAgICAgIC8vIENyZWF0ZSBhcnJheSB3aGVyZSBvcHRpb25zIGFyZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCBQSVBFXG4gICAgICAgIC8vIGluIHRoaXMgY2xhdXNlLlxuICAgICAgICBpZiAoIWxhc3RHcm91cC5vcHRpb25zKSB7XG4gICAgICAgICAgbGFzdEdyb3VwLm9wdGlvbnMgPSBbbGFzdEdyb3VwLnN0YWNrXTtcbiAgICAgICAgICBkZWxldGUgbGFzdEdyb3VwLnN0YWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHN0YWNrIGFuZCBhZGQgdG8gb3B0aW9ucyBmb3IgcmVzdCBvZiBjbGF1c2UuXG4gICAgICAgIHZhciBzdGFjayA9IFtdO1xuICAgICAgICBsYXN0R3JvdXAub3B0aW9ucy5wdXNoKHN0YWNrKTtcbiAgICAgICAgbGFzdCA9IHN0YWNrO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBSZXBldGl0aW9uLlxuICAgICAgLy8gRm9yIGV2ZXJ5IHJlcGV0aXRpb24sIHJlbW92ZSBsYXN0IGVsZW1lbnQgZnJvbSBsYXN0IHN0YWNrXG4gICAgICAvLyB0aGVuIGluc2VydCBiYWNrIGEgUkFOR0Ugb2JqZWN0LlxuICAgICAgLy8gVGhpcyBkZXNpZ24gaXMgY2hvc2VuIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbW9yZSB0aGFuXG4gICAgICAvLyBvbmUgcmVwZXRpdGlvbiBzeW1ib2xzIGluIGEgcmVnZXggaS5lLiBgYT8rezIsM31gLlxuICAgICAgY2FzZSAneyc6XG4gICAgICAgIHZhciBycyA9IC9eKFxcZCspKCwoXFxkKyk/KT9cXH0vLmV4ZWMoc3RyLnNsaWNlKGkpKSwgbWluLCBtYXg7XG4gICAgICAgIGlmIChycyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChsYXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVwZWF0RXJyKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtaW4gPSBwYXJzZUludChyc1sxXSwgMTApO1xuICAgICAgICAgIG1heCA9IHJzWzJdID8gcnNbM10gPyBwYXJzZUludChyc1szXSwgMTApIDogSW5maW5pdHkgOiBtaW47XG4gICAgICAgICAgaSArPSByc1swXS5sZW5ndGg7XG5cbiAgICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgICAgdHlwZTogdHlwZXMuUkVQRVRJVElPTixcbiAgICAgICAgICAgIG1pbixcbiAgICAgICAgICAgIG1heCxcbiAgICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlcy5DSEFSLFxuICAgICAgICAgICAgdmFsdWU6IDEyMyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnPyc6XG4gICAgICAgIGlmIChsYXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJlcGVhdEVycihpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLlJFUEVUSVRJT04sXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICB2YWx1ZTogbGFzdC5wb3AoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICcrJzpcbiAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVwZWF0RXJyKGkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuUkVQRVRJVElPTixcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiBJbmZpbml0eSxcbiAgICAgICAgICB2YWx1ZTogbGFzdC5wb3AoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVwZWF0RXJyKGkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuUkVQRVRJVElPTixcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiBJbmZpbml0eSxcbiAgICAgICAgICB2YWx1ZTogbGFzdC5wb3AoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIERlZmF1bHQgaXMgYSBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgYFxcW10oKXt9PysqXiRgLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5DSEFSLFxuICAgICAgICAgIHZhbHVlOiBjLmNoYXJDb2RlQXQoMCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYW55IGdyb3VwcyBoYXZlIG5vdCBiZWVuIGNsb3NlZC5cbiAgaWYgKGdyb3VwU3RhY2subGVuZ3RoICE9PSAwKSB7XG4gICAgdXRpbC5lcnJvcihyZWdleHBTdHIsICdVbnRlcm1pbmF0ZWQgZ3JvdXAnKTtcbiAgfVxuXG4gIHJldHVybiBzdGFydDtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnR5cGVzID0gdHlwZXM7XG4iLCJjb25zdCB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcbmV4cG9ydHMud29yZEJvdW5kYXJ5ID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnYicgfSk7XG5leHBvcnRzLm5vbldvcmRCb3VuZGFyeSA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlBPU0lUSU9OLCB2YWx1ZTogJ0InIH0pO1xuZXhwb3J0cy5iZWdpbiA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlBPU0lUSU9OLCB2YWx1ZTogJ14nIH0pO1xuZXhwb3J0cy5lbmQgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5QT1NJVElPTiwgdmFsdWU6ICckJyB9KTtcbiIsImNvbnN0IHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xuXG5jb25zdCBJTlRTID0gKCkgPT4gW3sgdHlwZTogdHlwZXMuUkFOR0UgLCBmcm9tOiA0OCwgdG86IDU3IH1dO1xuXG5jb25zdCBXT1JEUyA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA5NSB9LFxuICAgIHsgdHlwZTogdHlwZXMuUkFOR0UsIGZyb206IDk3LCB0bzogMTIyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5SQU5HRSwgZnJvbTogNjUsIHRvOiA5MCB9XG4gIF0uY29uY2F0KElOVFMoKSk7XG59O1xuXG5jb25zdCBXSElURVNQQUNFID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDkgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMCB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDExIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMyB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDMyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTYwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogNTc2MCB9LFxuICAgIHsgdHlwZTogdHlwZXMuUkFOR0UsIGZyb206IDgxOTIsIHRvOiA4MjAyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzMgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjM5IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODI4NyB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEyMjg4IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogNjUyNzkgfVxuICBdO1xufTtcblxuY29uc3QgTk9UQU5ZQ0hBUiA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMCB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEzIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzMgfSxcbiAgXTtcbn07XG5cbi8vIFByZWRlZmluZWQgY2xhc3Mgb2JqZWN0cy5cbmV4cG9ydHMud29yZHMgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogV09SRFMoKSwgbm90OiBmYWxzZSB9KTtcbmV4cG9ydHMubm90V29yZHMgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogV09SRFMoKSwgbm90OiB0cnVlIH0pO1xuZXhwb3J0cy5pbnRzID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IElOVFMoKSwgbm90OiBmYWxzZSB9KTtcbmV4cG9ydHMubm90SW50cyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBJTlRTKCksIG5vdDogdHJ1ZSB9KTtcbmV4cG9ydHMud2hpdGVzcGFjZSA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXSElURVNQQUNFKCksIG5vdDogZmFsc2UgfSk7XG5leHBvcnRzLm5vdFdoaXRlc3BhY2UgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogV0hJVEVTUEFDRSgpLCBub3Q6IHRydWUgfSk7XG5leHBvcnRzLmFueUNoYXIgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogTk9UQU5ZQ0hBUigpLCBub3Q6IHRydWUgfSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgUk9PVCAgICAgICA6IDAsXG4gIEdST1VQICAgICAgOiAxLFxuICBQT1NJVElPTiAgIDogMixcbiAgU0VUICAgICAgICA6IDMsXG4gIFJBTkdFICAgICAgOiA0LFxuICBSRVBFVElUSU9OIDogNSxcbiAgUkVGRVJFTkNFICA6IDYsXG4gIENIQVIgICAgICAgOiA3LFxufTtcbiIsImNvbnN0IHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xuY29uc3Qgc2V0cyAgPSByZXF1aXJlKCcuL3NldHMnKTtcblxuXG5jb25zdCBDVFJMID0gJ0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXFxcXV4gPyc7XG5jb25zdCBTTFNIID0geyAnMCc6IDAsICd0JzogOSwgJ24nOiAxMCwgJ3YnOiAxMSwgJ2YnOiAxMiwgJ3InOiAxMyB9O1xuXG4vKipcbiAqIEZpbmRzIGNoYXJhY3RlciByZXByZXNlbnRhdGlvbnMgaW4gc3RyIGFuZCBjb252ZXJ0IGFsbCB0b1xuICogdGhlaXIgcmVzcGVjdGl2ZSBjaGFyYWN0ZXJzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnRzLnN0clRvQ2hhcnMgPSBmdW5jdGlvbihzdHIpIHtcbiAgLyoganNoaW50IG1heGxlbjogZmFsc2UgKi9cbiAgdmFyIGNoYXJzX3JlZ2V4ID0gLyhcXFtcXFxcYlxcXSl8KFxcXFwpP1xcXFwoPzp1KFtBLUYwLTldezR9KXx4KFtBLUYwLTldezJ9KXwoMD9bMC03XXsyfSl8YyhbQEEtWltcXFxcXFxdXj9dKXwoWzB0bnZmcl0pKS9nO1xuICBzdHIgPSBzdHIucmVwbGFjZShjaGFyc19yZWdleCwgZnVuY3Rpb24ocywgYiwgbGJzLCBhMTYsIGIxNiwgYzgsIGRjdHJsLCBlc2xzaCkge1xuICAgIGlmIChsYnMpIHtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHZhciBjb2RlID0gYiA/IDggOlxuICAgICAgYTE2ICAgPyBwYXJzZUludChhMTYsIDE2KSA6XG4gICAgICBiMTYgICA/IHBhcnNlSW50KGIxNiwgMTYpIDpcbiAgICAgIGM4ICAgID8gcGFyc2VJbnQoYzgsICAgOCkgOlxuICAgICAgZGN0cmwgPyBDVFJMLmluZGV4T2YoZGN0cmwpIDpcbiAgICAgIFNMU0hbZXNsc2hdO1xuXG4gICAgdmFyIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuXG4gICAgLy8gRXNjYXBlIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVycy5cbiAgICBpZiAoL1tbXFxde31eJC58PyorKCldLy50ZXN0KGMpKSB7XG4gICAgICBjID0gJ1xcXFwnICsgYztcbiAgICB9XG5cbiAgICByZXR1cm4gYztcbiAgfSk7XG5cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLyoqXG4gKiB0dXJucyBjbGFzcyBpbnRvIHRva2Vuc1xuICogcmVhZHMgc3RyIHVudGlsIGl0IGVuY291bnRlcnMgYSBdIG5vdCBwcmVjZWVkZWQgYnkgYSBcXFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSByZWdleHBTdHJcbiAqIEByZXR1cm4ge0FycmF5LjxBcnJheS48T2JqZWN0PiwgTnVtYmVyPn1cbiAqL1xuZXhwb3J0cy50b2tlbml6ZUNsYXNzID0gKHN0ciwgcmVnZXhwU3RyKSA9PiB7XG4gIC8qIGpzaGludCBtYXhsZW46IGZhbHNlICovXG4gIHZhciB0b2tlbnMgPSBbXTtcbiAgdmFyIHJlZ2V4cCA9IC9cXFxcKD86KHcpfChkKXwocyl8KFcpfChEKXwoUykpfCgoPzooPzpcXFxcKSguKXwoW15cXF1cXFxcXSkpLSg/OlxcXFwpPyhbXlxcXV0pKXwoXFxdKXwoPzpcXFxcKT8oW15dKS9nO1xuICB2YXIgcnMsIGM7XG5cblxuICB3aGlsZSAoKHJzID0gcmVnZXhwLmV4ZWMoc3RyKSkgIT0gbnVsbCkge1xuICAgIGlmIChyc1sxXSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy53b3JkcygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbMl0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMuaW50cygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbM10pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMud2hpdGVzcGFjZSgpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbNF0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMubm90V29yZHMoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzVdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLm5vdEludHMoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzZdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLm5vdFdoaXRlc3BhY2UoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzddKSB7XG4gICAgICB0b2tlbnMucHVzaCh7XG4gICAgICAgIHR5cGU6IHR5cGVzLlJBTkdFLFxuICAgICAgICBmcm9tOiAocnNbOF0gfHwgcnNbOV0pLmNoYXJDb2RlQXQoMCksXG4gICAgICAgIHRvOiByc1sxMF0uY2hhckNvZGVBdCgwKSxcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIGlmICgoYyA9IHJzWzEyXSkpIHtcbiAgICAgIHRva2Vucy5wdXNoKHtcbiAgICAgICAgdHlwZTogdHlwZXMuQ0hBUixcbiAgICAgICAgdmFsdWU6IGMuY2hhckNvZGVBdCgwKSxcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbdG9rZW5zLCByZWdleHAubGFzdEluZGV4XTtcbiAgICB9XG4gIH1cblxuICBleHBvcnRzLmVycm9yKHJlZ2V4cFN0ciwgJ1VudGVybWluYXRlZCBjaGFyYWN0ZXIgY2xhc3MnKTtcbn07XG5cblxuLyoqXG4gKiBTaG9ydGN1dCB0byB0aHJvdyBlcnJvcnMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJlZ2V4cFxuICogQHBhcmFtIHtTdHJpbmd9IG1zZ1xuICovXG5leHBvcnRzLmVycm9yID0gKHJlZ2V4cCwgbXNnKSA9PiB7XG4gIHRocm93IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IC8nICsgcmVnZXhwICsgJy86ICcgKyBtc2cpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIpIHtcblx0dmFyIGlzRXh0ZW5kZWRMZW5ndGhQYXRoID0gL15cXFxcXFxcXFxcP1xcXFwvLnRlc3Qoc3RyKTtcblx0dmFyIGhhc05vbkFzY2lpID0gL1teXFx4MDAtXFx4ODBdKy8udGVzdChzdHIpO1xuXG5cdGlmIChpc0V4dGVuZGVkTGVuZ3RoUGF0aCB8fCBoYXNOb25Bc2NpaSkge1xuXHRcdHJldHVybiBzdHI7XG5cdH1cblxuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbn07XG4iLCJ2YXIgdW5wYXJzZSA9IHJlcXVpcmUoJ2VzY29kZWdlbicpLmdlbmVyYXRlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhc3QsIHZhcnMpIHtcbiAgICBpZiAoIXZhcnMpIHZhcnMgPSB7fTtcbiAgICB2YXIgRkFJTCA9IHt9O1xuICAgIFxuICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24gd2FsayAobm9kZSwgc2NvcGVWYXJzKSB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdMaXRlcmFsJykge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnVW5hcnlFeHByZXNzaW9uJyl7XG4gICAgICAgICAgICB2YXIgdmFsID0gd2Fsayhub2RlLmFyZ3VtZW50KVxuICAgICAgICAgICAgaWYgKG5vZGUub3BlcmF0b3IgPT09ICcrJykgcmV0dXJuICt2YWxcbiAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdG9yID09PSAnLScpIHJldHVybiAtdmFsXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJ34nKSByZXR1cm4gfnZhbFxuICAgICAgICAgICAgaWYgKG5vZGUub3BlcmF0b3IgPT09ICchJykgcmV0dXJuICF2YWxcbiAgICAgICAgICAgIHJldHVybiBGQUlMXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnQXJyYXlFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIHhzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuZWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHggPSB3YWxrKG5vZGUuZWxlbWVudHNbaV0pO1xuICAgICAgICAgICAgICAgIGlmICh4ID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgICAgICB4cy5wdXNoKHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHhzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ09iamVjdEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgb2JqID0ge307XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gbm9kZS5wcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3AudmFsdWUgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogd2Fsayhwcm9wLnZhbHVlKVxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIG9ialtwcm9wLmtleS52YWx1ZSB8fCBwcm9wLmtleS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdCaW5hcnlFeHByZXNzaW9uJyB8fFxuICAgICAgICAgICAgICAgICBub2RlLnR5cGUgPT09ICdMb2dpY2FsRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBsID0gd2Fsayhub2RlLmxlZnQpO1xuICAgICAgICAgICAgaWYgKGwgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgdmFyIHIgPSB3YWxrKG5vZGUucmlnaHQpO1xuICAgICAgICAgICAgaWYgKHIgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIgb3AgPSBub2RlLm9wZXJhdG9yO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPT0nKSByZXR1cm4gbCA9PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPT09JykgcmV0dXJuIGwgPT09IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICchPScpIHJldHVybiBsICE9IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICchPT0nKSByZXR1cm4gbCAhPT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJysnKSByZXR1cm4gbCArIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICctJykgcmV0dXJuIGwgLSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnKicpIHJldHVybiBsICogcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJy8nKSByZXR1cm4gbCAvIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICclJykgcmV0dXJuIGwgJSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPCcpIHJldHVybiBsIDwgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJzw9JykgcmV0dXJuIGwgPD0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJz4nKSByZXR1cm4gbCA+IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc+PScpIHJldHVybiBsID49IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICd8JykgcmV0dXJuIGwgfCByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnJicpIHJldHVybiBsICYgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJ14nKSByZXR1cm4gbCBeIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcmJicpIHJldHVybiBsICYmIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICd8fCcpIHJldHVybiBsIHx8IHI7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBGQUlMO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbCh2YXJzLCBub2RlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcnNbbm9kZS5uYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIEZBSUw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnVGhpc0V4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbCh2YXJzLCAndGhpcycpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcnNbJ3RoaXMnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIEZBSUw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnQ2FsbEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgY2FsbGVlID0gd2Fsayhub2RlLmNhbGxlZSk7XG4gICAgICAgICAgICBpZiAoY2FsbGVlID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGVlICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIGN0eCA9IG5vZGUuY2FsbGVlLm9iamVjdCA/IHdhbGsobm9kZS5jYWxsZWUub2JqZWN0KSA6IEZBSUw7XG4gICAgICAgICAgICBpZiAoY3R4ID09PSBGQUlMKSBjdHggPSBudWxsO1xuXG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLmFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IHdhbGsobm9kZS5hcmd1bWVudHNbaV0pO1xuICAgICAgICAgICAgICAgIGlmICh4ID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2FsbGVlLmFwcGx5KGN0eCwgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBvYmogPSB3YWxrKG5vZGUub2JqZWN0KTtcbiAgICAgICAgICAgIC8vIGRvIG5vdCBhbGxvdyBhY2Nlc3MgdG8gbWV0aG9kcyBvbiBGdW5jdGlvbiBcbiAgICAgICAgICAgIGlmKChvYmogPT09IEZBSUwpIHx8ICh0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlLnByb3BlcnR5LnR5cGUgPT09ICdJZGVudGlmaWVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmpbbm9kZS5wcm9wZXJ0eS5uYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwcm9wID0gd2Fsayhub2RlLnByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIHZhbCA9IHdhbGsobm9kZS50ZXN0KVxuICAgICAgICAgICAgaWYgKHZhbCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICByZXR1cm4gdmFsID8gd2Fsayhub2RlLmNvbnNlcXVlbnQpIDogd2Fsayhub2RlLmFsdGVybmF0ZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdFeHByZXNzaW9uU3RhdGVtZW50Jykge1xuICAgICAgICAgICAgdmFyIHZhbCA9IHdhbGsobm9kZS5leHByZXNzaW9uKVxuICAgICAgICAgICAgaWYgKHZhbCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1JldHVyblN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3YWxrKG5vZGUuYXJndW1lbnQpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnRnVuY3Rpb25FeHByZXNzaW9uJykge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIgYm9kaWVzID0gbm9kZS5ib2R5LmJvZHk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIFwic2NvcGVcIiBmb3Igb3VyIGFyZ3VtZW50c1xuICAgICAgICAgICAgdmFyIG9sZFZhcnMgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhcnMpLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCl7XG4gICAgICAgICAgICAgICAgb2xkVmFyc1tlbGVtZW50XSA9IHZhcnNbZWxlbWVudF07XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBub2RlLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgICAgIGlmKGtleS50eXBlID09ICdJZGVudGlmaWVyJyl7XG4gICAgICAgICAgICAgICAgICB2YXJzW2tleS5uYW1lXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IodmFyIGkgaW4gYm9kaWVzKXtcbiAgICAgICAgICAgICAgICBpZih3YWxrKGJvZGllc1tpXSkgPT09IEZBSUwpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXN0b3JlIHRoZSB2YXJzIGFuZCBzY29wZSBhZnRlciB3ZSB3YWxrXG4gICAgICAgICAgICB2YXJzID0gb2xkVmFycztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YXJzKTtcbiAgICAgICAgICAgIHZhciB2YWxzID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcnNba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGtleXMuam9pbignLCAnKSwgJ3JldHVybiAnICsgdW5wYXJzZShub2RlKSkuYXBwbHkobnVsbCwgdmFscyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnVGVtcGxhdGVMaXRlcmFsJykge1xuICAgICAgICAgICAgdmFyIHN0ciA9ICcnO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmV4cHJlc3Npb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IHdhbGsobm9kZS5xdWFzaXNbaV0pO1xuICAgICAgICAgICAgICAgIHN0ciArPSB3YWxrKG5vZGUuZXhwcmVzc2lvbnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RyICs9IHdhbGsobm9kZS5xdWFzaXNbaV0pO1xuICAgICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgdGFnID0gd2Fsayhub2RlLnRhZyk7XG4gICAgICAgICAgICB2YXIgcXVhc2kgPSBub2RlLnF1YXNpO1xuICAgICAgICAgICAgdmFyIHN0cmluZ3MgPSBxdWFzaS5xdWFzaXMubWFwKHdhbGspO1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IHF1YXNpLmV4cHJlc3Npb25zLm1hcCh3YWxrKTtcbiAgICAgICAgICAgIHJldHVybiB0YWcuYXBwbHkobnVsbCwgW3N0cmluZ3NdLmNvbmNhdCh2YWx1ZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUZW1wbGF0ZUVsZW1lbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZS5jb29rZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSByZXR1cm4gRkFJTDtcbiAgICB9KShhc3QpO1xuICAgIFxuICAgIHJldHVybiByZXN1bHQgPT09IEZBSUwgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG59O1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTUgSW5ndmFyIFN0ZXBhbnlhbiA8bWVAcnJldmVyc2VyLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDE0IEl2YW4gTmlrdWxpbiA8aWZhYWFuQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTWljaGFlbCBGaWNhcnJhIDxlc2NvZGVnZW4uY29weXJpZ2h0QG1pY2hhZWwuZmljYXJyYS5tZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEzIElyYWtsaSBHb3phbGlzaHZpbGkgPHJmb2JpY0BnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBSb2JlcnQgR3VzdC1CYXJkb24gPGRvbmF0ZUByb2JlcnQuZ3VzdC1iYXJkb24ub3JnPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgSm9obiBGcmVlbWFuIDxqZnJlZW1hbjA4QGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBKb29zdC1XaW0gQm9la2VzdGVpam4gPGpvb3N0LXdpbUBib2VrZXN0ZWlqbi5ubD5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEtyaXMgS293YWwgPGtyaXMua293YWxAY2l4YXIuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJwYWQgQm9yc29zIDxhcnBhZC5ib3Jzb3NAZ29vZ2xlbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLypnbG9iYWwgZXhwb3J0czp0cnVlLCByZXF1aXJlOnRydWUsIGdsb2JhbDp0cnVlKi9cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIFN5bnRheCxcbiAgICAgICAgUHJlY2VkZW5jZSxcbiAgICAgICAgQmluYXJ5UHJlY2VkZW5jZSxcbiAgICAgICAgU291cmNlTm9kZSxcbiAgICAgICAgZXN0cmF2ZXJzZSxcbiAgICAgICAgZXN1dGlscyxcbiAgICAgICAgYmFzZSxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBqc29uLFxuICAgICAgICByZW51bWJlcixcbiAgICAgICAgaGV4YWRlY2ltYWwsXG4gICAgICAgIHF1b3RlcyxcbiAgICAgICAgZXNjYXBlbGVzcyxcbiAgICAgICAgbmV3bGluZSxcbiAgICAgICAgc3BhY2UsXG4gICAgICAgIHBhcmVudGhlc2VzLFxuICAgICAgICBzZW1pY29sb25zLFxuICAgICAgICBzYWZlQ29uY2F0ZW5hdGlvbixcbiAgICAgICAgZGlyZWN0aXZlLFxuICAgICAgICBleHRyYSxcbiAgICAgICAgcGFyc2UsXG4gICAgICAgIHNvdXJjZU1hcCxcbiAgICAgICAgc291cmNlQ29kZSxcbiAgICAgICAgcHJlc2VydmVCbGFua0xpbmVzLFxuICAgICAgICBGT1JNQVRfTUlOSUZZLFxuICAgICAgICBGT1JNQVRfREVGQVVMVFM7XG5cbiAgICBlc3RyYXZlcnNlID0gcmVxdWlyZSgnZXN0cmF2ZXJzZScpO1xuICAgIGVzdXRpbHMgPSByZXF1aXJlKCdlc3V0aWxzJyk7XG5cbiAgICBTeW50YXggPSBlc3RyYXZlcnNlLlN5bnRheDtcblxuICAgIC8vIEdlbmVyYXRpb24gaXMgZG9uZSBieSBnZW5lcmF0ZUV4cHJlc3Npb24uXG4gICAgZnVuY3Rpb24gaXNFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIENvZGVHZW5lcmF0b3IuRXhwcmVzc2lvbi5oYXNPd25Qcm9wZXJ0eShub2RlLnR5cGUpO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRpb24gaXMgZG9uZSBieSBnZW5lcmF0ZVN0YXRlbWVudC5cbiAgICBmdW5jdGlvbiBpc1N0YXRlbWVudChub2RlKSB7XG4gICAgICAgIHJldHVybiBDb2RlR2VuZXJhdG9yLlN0YXRlbWVudC5oYXNPd25Qcm9wZXJ0eShub2RlLnR5cGUpO1xuICAgIH1cblxuICAgIFByZWNlZGVuY2UgPSB7XG4gICAgICAgIFNlcXVlbmNlOiAwLFxuICAgICAgICBZaWVsZDogMSxcbiAgICAgICAgQXdhaXQ6IDEsXG4gICAgICAgIEFzc2lnbm1lbnQ6IDEsXG4gICAgICAgIENvbmRpdGlvbmFsOiAyLFxuICAgICAgICBBcnJvd0Z1bmN0aW9uOiAyLFxuICAgICAgICBMb2dpY2FsT1I6IDMsXG4gICAgICAgIExvZ2ljYWxBTkQ6IDQsXG4gICAgICAgIEJpdHdpc2VPUjogNSxcbiAgICAgICAgQml0d2lzZVhPUjogNixcbiAgICAgICAgQml0d2lzZUFORDogNyxcbiAgICAgICAgRXF1YWxpdHk6IDgsXG4gICAgICAgIFJlbGF0aW9uYWw6IDksXG4gICAgICAgIEJpdHdpc2VTSElGVDogMTAsXG4gICAgICAgIEFkZGl0aXZlOiAxMSxcbiAgICAgICAgTXVsdGlwbGljYXRpdmU6IDEyLFxuICAgICAgICBVbmFyeTogMTMsXG4gICAgICAgIFBvc3RmaXg6IDE0LFxuICAgICAgICBDYWxsOiAxNSxcbiAgICAgICAgTmV3OiAxNixcbiAgICAgICAgVGFnZ2VkVGVtcGxhdGU6IDE3LFxuICAgICAgICBNZW1iZXI6IDE4LFxuICAgICAgICBQcmltYXJ5OiAxOVxuICAgIH07XG5cbiAgICBCaW5hcnlQcmVjZWRlbmNlID0ge1xuICAgICAgICAnfHwnOiBQcmVjZWRlbmNlLkxvZ2ljYWxPUixcbiAgICAgICAgJyYmJzogUHJlY2VkZW5jZS5Mb2dpY2FsQU5ELFxuICAgICAgICAnfCc6IFByZWNlZGVuY2UuQml0d2lzZU9SLFxuICAgICAgICAnXic6IFByZWNlZGVuY2UuQml0d2lzZVhPUixcbiAgICAgICAgJyYnOiBQcmVjZWRlbmNlLkJpdHdpc2VBTkQsXG4gICAgICAgICc9PSc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICchPSc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICc9PT0nOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnIT09JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJ2lzJzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJ2lzbnQnOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnPCc6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJz4nOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICc8PSc6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJz49JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnaW4nOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICdpbnN0YW5jZW9mJzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPDwnOiBQcmVjZWRlbmNlLkJpdHdpc2VTSElGVCxcbiAgICAgICAgJz4+JzogUHJlY2VkZW5jZS5CaXR3aXNlU0hJRlQsXG4gICAgICAgICc+Pj4nOiBQcmVjZWRlbmNlLkJpdHdpc2VTSElGVCxcbiAgICAgICAgJysnOiBQcmVjZWRlbmNlLkFkZGl0aXZlLFxuICAgICAgICAnLSc6IFByZWNlZGVuY2UuQWRkaXRpdmUsXG4gICAgICAgICcqJzogUHJlY2VkZW5jZS5NdWx0aXBsaWNhdGl2ZSxcbiAgICAgICAgJyUnOiBQcmVjZWRlbmNlLk11bHRpcGxpY2F0aXZlLFxuICAgICAgICAnLyc6IFByZWNlZGVuY2UuTXVsdGlwbGljYXRpdmVcbiAgICB9O1xuXG4gICAgLy9GbGFnc1xuICAgIHZhciBGX0FMTE9XX0lOID0gMSxcbiAgICAgICAgRl9BTExPV19DQUxMID0gMSA8PCAxLFxuICAgICAgICBGX0FMTE9XX1VOUEFSQVRIX05FVyA9IDEgPDwgMixcbiAgICAgICAgRl9GVU5DX0JPRFkgPSAxIDw8IDMsXG4gICAgICAgIEZfRElSRUNUSVZFX0NUWCA9IDEgPDwgNCxcbiAgICAgICAgRl9TRU1JQ09MT05fT1BUID0gMSA8PCA1O1xuXG4gICAgLy9FeHByZXNzaW9uIGZsYWcgc2V0c1xuICAgIC8vTk9URTogRmxhZyBvcmRlcjpcbiAgICAvLyBGX0FMTE9XX0lOXG4gICAgLy8gRl9BTExPV19DQUxMXG4gICAgLy8gRl9BTExPV19VTlBBUkFUSF9ORVdcbiAgICB2YXIgRV9GVFQgPSBGX0FMTE9XX0NBTEwgfCBGX0FMTE9XX1VOUEFSQVRIX05FVyxcbiAgICAgICAgRV9UVEYgPSBGX0FMTE9XX0lOIHwgRl9BTExPV19DQUxMLFxuICAgICAgICBFX1RUVCA9IEZfQUxMT1dfSU4gfCBGX0FMTE9XX0NBTEwgfCBGX0FMTE9XX1VOUEFSQVRIX05FVyxcbiAgICAgICAgRV9URkYgPSBGX0FMTE9XX0lOLFxuICAgICAgICBFX0ZGVCA9IEZfQUxMT1dfVU5QQVJBVEhfTkVXLFxuICAgICAgICBFX1RGVCA9IEZfQUxMT1dfSU4gfCBGX0FMTE9XX1VOUEFSQVRIX05FVztcblxuICAgIC8vU3RhdGVtZW50IGZsYWcgc2V0c1xuICAgIC8vTk9URTogRmxhZyBvcmRlcjpcbiAgICAvLyBGX0FMTE9XX0lOXG4gICAgLy8gRl9GVU5DX0JPRFlcbiAgICAvLyBGX0RJUkVDVElWRV9DVFhcbiAgICAvLyBGX1NFTUlDT0xPTl9PUFRcbiAgICB2YXIgU19URkZGID0gRl9BTExPV19JTixcbiAgICAgICAgU19URkZUID0gRl9BTExPV19JTiB8IEZfU0VNSUNPTE9OX09QVCxcbiAgICAgICAgU19GRkZGID0gMHgwMCxcbiAgICAgICAgU19URlRGID0gRl9BTExPV19JTiB8IEZfRElSRUNUSVZFX0NUWCxcbiAgICAgICAgU19UVEZGID0gRl9BTExPV19JTiB8IEZfRlVOQ19CT0RZO1xuXG4gICAgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gICAgICAgIC8vIGRlZmF1bHQgb3B0aW9uc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5kZW50OiBudWxsLFxuICAgICAgICAgICAgYmFzZTogbnVsbCxcbiAgICAgICAgICAgIHBhcnNlOiBudWxsLFxuICAgICAgICAgICAgY29tbWVudDogZmFsc2UsXG4gICAgICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgICAgICBpbmRlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICcgICAgJyxcbiAgICAgICAgICAgICAgICAgICAgYmFzZTogMCxcbiAgICAgICAgICAgICAgICAgICAgYWRqdXN0TXVsdGlsaW5lQ29tbWVudDogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5ld2xpbmU6ICdcXG4nLFxuICAgICAgICAgICAgICAgIHNwYWNlOiAnICcsXG4gICAgICAgICAgICAgICAganNvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVudW1iZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhleGFkZWNpbWFsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBxdW90ZXM6ICdzaW5nbGUnLFxuICAgICAgICAgICAgICAgIGVzY2FwZWxlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmVudGhlc2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNlbWljb2xvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgc2FmZUNvbmNhdGVuYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIHByZXNlcnZlQmxhbmtMaW5lczogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb3o6IHtcbiAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uRXhwcmVzc2lvblN0YXJ0c1dpdGhBc3NpZ25tZW50OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzdGFybGVzc0dlbmVyYXRvcjogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzb3VyY2VNYXA6IG51bGwsXG4gICAgICAgICAgICBzb3VyY2VNYXBSb290OiBudWxsLFxuICAgICAgICAgICAgc291cmNlTWFwV2l0aENvZGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlyZWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJhdzogdHJ1ZSxcbiAgICAgICAgICAgIHZlcmJhdGltOiBudWxsLFxuICAgICAgICAgICAgc291cmNlQ29kZTogbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0cmluZ1JlcGVhdChzdHIsIG51bSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgICAgICAgZm9yIChudW0gfD0gMDsgbnVtID4gMDsgbnVtID4+Pj0gMSwgc3RyICs9IHN0cikge1xuICAgICAgICAgICAgaWYgKG51bSAmIDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc3RyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNMaW5lVGVybWluYXRvcihzdHIpIHtcbiAgICAgICAgcmV0dXJuICgvW1xcclxcbl0vZykudGVzdChzdHIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZHNXaXRoTGluZVRlcm1pbmF0b3Ioc3RyKSB7XG4gICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoO1xuICAgICAgICByZXR1cm4gbGVuICYmIGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKHN0ci5jaGFyQ29kZUF0KGxlbiAtIDEpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZSh0YXJnZXQsIG92ZXJyaWRlKSB7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoa2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgICAgICBpZiAob3ZlcnJpZGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gb3ZlcnJpZGVba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZURlZXBseSh0YXJnZXQsIG92ZXJyaWRlKSB7XG4gICAgICAgIHZhciBrZXksIHZhbDtcblxuICAgICAgICBmdW5jdGlvbiBpc0hhc2hPYmplY3QodGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgdGFyZ2V0IGluc3RhbmNlb2YgT2JqZWN0ICYmICEodGFyZ2V0IGluc3RhbmNlb2YgUmVnRXhwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoa2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgICAgICBpZiAob3ZlcnJpZGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGlzSGFzaE9iamVjdCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hhc2hPYmplY3QodGFyZ2V0W2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEZWVwbHkodGFyZ2V0W2tleV0sIHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHVwZGF0ZURlZXBseSh7fSwgdmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlTnVtYmVyKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQsIHBvaW50LCB0ZW1wLCBleHBvbmVudCwgcG9zO1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTnVtZXJpYyBsaXRlcmFsIHdob3NlIHZhbHVlIGlzIE5hTicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWVyaWMgbGl0ZXJhbCB3aG9zZSB2YWx1ZSBpcyBuZWdhdGl2ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSAxIC8gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGpzb24gPyAnbnVsbCcgOiByZW51bWJlciA/ICcxZTQwMCcgOiAnMWUrNDAwJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9ICcnICsgdmFsdWU7XG4gICAgICAgIGlmICghcmVudW1iZXIgfHwgcmVzdWx0Lmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludCA9IHJlc3VsdC5pbmRleE9mKCcuJyk7XG4gICAgICAgIGlmICghanNvbiAmJiByZXN1bHQuY2hhckNvZGVBdCgwKSA9PT0gMHgzMCAgLyogMCAqLyAmJiBwb2ludCA9PT0gMSkge1xuICAgICAgICAgICAgcG9pbnQgPSAwO1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIHRlbXAgPSByZXN1bHQ7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKCdlKycsICdlJyk7XG4gICAgICAgIGV4cG9uZW50ID0gMDtcbiAgICAgICAgaWYgKChwb3MgPSB0ZW1wLmluZGV4T2YoJ2UnKSkgPiAwKSB7XG4gICAgICAgICAgICBleHBvbmVudCA9ICt0ZW1wLnNsaWNlKHBvcyArIDEpO1xuICAgICAgICAgICAgdGVtcCA9IHRlbXAuc2xpY2UoMCwgcG9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9pbnQgPj0gMCkge1xuICAgICAgICAgICAgZXhwb25lbnQgLT0gdGVtcC5sZW5ndGggLSBwb2ludCAtIDE7XG4gICAgICAgICAgICB0ZW1wID0gKyh0ZW1wLnNsaWNlKDAsIHBvaW50KSArIHRlbXAuc2xpY2UocG9pbnQgKyAxKSkgKyAnJztcbiAgICAgICAgfVxuICAgICAgICBwb3MgPSAwO1xuICAgICAgICB3aGlsZSAodGVtcC5jaGFyQ29kZUF0KHRlbXAubGVuZ3RoICsgcG9zIC0gMSkgPT09IDB4MzAgIC8qIDAgKi8pIHtcbiAgICAgICAgICAgIC0tcG9zO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3MgIT09IDApIHtcbiAgICAgICAgICAgIGV4cG9uZW50IC09IHBvcztcbiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLnNsaWNlKDAsIHBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cG9uZW50ICE9PSAwKSB7XG4gICAgICAgICAgICB0ZW1wICs9ICdlJyArIGV4cG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICgodGVtcC5sZW5ndGggPCByZXN1bHQubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgIChoZXhhZGVjaW1hbCAmJiB2YWx1ZSA+IDFlMTIgJiYgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlICYmICh0ZW1wID0gJzB4JyArIHZhbHVlLnRvU3RyaW5nKDE2KSkubGVuZ3RoIDwgcmVzdWx0Lmxlbmd0aCkpICYmXG4gICAgICAgICAgICAgICAgK3RlbXAgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0ZW1wO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSB2YWxpZCBSZWdFeHAgZXhwcmVzc2lvbi5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9Db25zdGVsbGF0aW9uL2l2IEVuZ2luZVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwQ2hhcmFjdGVyKGNoLCBwcmV2aW91c0lzQmFja3NsYXNoKSB7XG4gICAgICAgIC8vIG5vdCBoYW5kbGluZyAnXFwnIGFuZCBoYW5kbGluZyBcXHUyMDI4IG9yIFxcdTIwMjkgdG8gdW5pY29kZSBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgaWYgKChjaCAmIH4xKSA9PT0gMHgyMDI4KSB7XG4gICAgICAgICAgICByZXR1cm4gKHByZXZpb3VzSXNCYWNrc2xhc2ggPyAndScgOiAnXFxcXHUnKSArICgoY2ggPT09IDB4MjAyOCkgPyAnMjAyOCcgOiAnMjAyOScpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAxMCB8fCBjaCA9PT0gMTMpIHsgIC8vIFxcbiwgXFxyXG4gICAgICAgICAgICByZXR1cm4gKHByZXZpb3VzSXNCYWNrc2xhc2ggPyAnJyA6ICdcXFxcJykgKyAoKGNoID09PSAxMCkgPyAnbicgOiAncicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVJlZ0V4cChyZWcpIHtcbiAgICAgICAgdmFyIG1hdGNoLCByZXN1bHQsIGZsYWdzLCBpLCBpeiwgY2gsIGNoYXJhY3RlckluQnJhY2ssIHByZXZpb3VzSXNCYWNrc2xhc2g7XG5cbiAgICAgICAgcmVzdWx0ID0gcmVnLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgaWYgKHJlZy5zb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIGV4dHJhY3QgZmxhZyBmcm9tIHRvU3RyaW5nIHJlc3VsdFxuICAgICAgICAgICAgbWF0Y2ggPSByZXN1bHQubWF0Y2goL1xcLyhbXi9dKikkLyk7XG4gICAgICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmxhZ3MgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIHJlc3VsdCA9ICcnO1xuXG4gICAgICAgICAgICBjaGFyYWN0ZXJJbkJyYWNrID0gZmFsc2U7XG4gICAgICAgICAgICBwcmV2aW91c0lzQmFja3NsYXNoID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHJlZy5zb3VyY2UubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIGNoID0gcmVnLnNvdXJjZS5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0lzQmFja3NsYXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJJbkJyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDkzKSB7ICAvLyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVySW5CcmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSA0NykgeyAgLy8gL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXFxcXCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSA5MSkgeyAgLy8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckluQnJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBlc2NhcGVSZWdFeHBDaGFyYWN0ZXIoY2gsIHByZXZpb3VzSXNCYWNrc2xhc2gpO1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0lzQmFja3NsYXNoID0gY2ggPT09IDkyOyAgLy8gXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBuZXcgUmVnRXhwKFwiXFxcXFxcbicpIGlzIHByb3ZpZGVkLCBjcmVhdGUgL1xcbi9cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZVJlZ0V4cENoYXJhY3RlcihjaCwgcHJldmlvdXNJc0JhY2tzbGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgbGlrZSAvXFxcXFsvXS9cbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJc0JhY2tzbGFzaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICcvJyArIHJlc3VsdCArICcvJyArIGZsYWdzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVBbGxvd2VkQ2hhcmFjdGVyKGNvZGUsIG5leHQpIHtcbiAgICAgICAgdmFyIGhleDtcblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwOCAgLyogXFxiICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxiJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDBDICAvKiBcXGYgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXGYnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MDkgIC8qIFxcdCAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcdCc7XG4gICAgICAgIH1cblxuICAgICAgICBoZXggPSBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZiAoanNvbiB8fCBjb2RlID4gMHhGRikge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcdScgKyAnMDAwMCcuc2xpY2UoaGV4Lmxlbmd0aCkgKyBoZXg7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgwMDAwICYmICFlc3V0aWxzLmNvZGUuaXNEZWNpbWFsRGlnaXQobmV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MDAwQiAgLyogXFx2ICovKSB7IC8vICdcXHYnXG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx4MEInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxceCcgKyAnMDAnLnNsaWNlKGhleC5sZW5ndGgpICsgaGV4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlRGlzYWxsb3dlZENoYXJhY3Rlcihjb2RlKSB7XG4gICAgICAgIGlmIChjb2RlID09PSAweDVDICAvKiBcXCAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcXFxcXCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwQSAgLyogXFxuICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxuJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDBEICAvKiBcXHIgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHInO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MjAyOCkge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcdTIwMjgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MjAyOSkge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcdTIwMjknO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3RseSBjbGFzc2lmaWVkIGNoYXJhY3RlcicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVzY2FwZURpcmVjdGl2ZShzdHIpIHtcbiAgICAgICAgdmFyIGksIGl6LCBjb2RlLCBxdW90ZTtcblxuICAgICAgICBxdW90ZSA9IHF1b3RlcyA9PT0gJ2RvdWJsZScgPyAnXCInIDogJ1xcJyc7XG4gICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RyLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAweDI3ICAvKiAnICovKSB7XG4gICAgICAgICAgICAgICAgcXVvdGUgPSAnXCInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDIyICAvKiBcIiAqLykge1xuICAgICAgICAgICAgICAgIHF1b3RlID0gJ1xcJyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4NUMgIC8qIFxcICovKSB7XG4gICAgICAgICAgICAgICAgKytpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1b3RlICsgc3RyICsgcXVvdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJycsIGksIGxlbiwgY29kZSwgc2luZ2xlUXVvdGVzID0gMCwgZG91YmxlUXVvdGVzID0gMCwgc2luZ2xlLCBxdW90ZTtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAweDI3ICAvKiAnICovKSB7XG4gICAgICAgICAgICAgICAgKytzaW5nbGVRdW90ZXM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MjIgIC8qIFwiICovKSB7XG4gICAgICAgICAgICAgICAgKytkb3VibGVRdW90ZXM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MkYgIC8qIC8gKi8gJiYganNvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXFxcXCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGNvZGUpIHx8IGNvZGUgPT09IDB4NUMgIC8qIFxcICovKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZURpc2FsbG93ZWRDaGFyYWN0ZXIoY29kZSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShjb2RlKSAmJiAoanNvbiAmJiBjb2RlIDwgMHgyMCAgLyogU1AgKi8gfHwgIWpzb24gJiYgIWVzY2FwZWxlc3MgJiYgKGNvZGUgPCAweDIwICAvKiBTUCAqLyB8fCBjb2RlID4gMHg3RSAgLyogfiAqLykpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZUFsbG93ZWRDaGFyYWN0ZXIoY29kZSwgc3RyLmNoYXJDb2RlQXQoaSArIDEpKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2luZ2xlID0gIShxdW90ZXMgPT09ICdkb3VibGUnIHx8IChxdW90ZXMgPT09ICdhdXRvJyAmJiBkb3VibGVRdW90ZXMgPCBzaW5nbGVRdW90ZXMpKTtcbiAgICAgICAgcXVvdGUgPSBzaW5nbGUgPyAnXFwnJyA6ICdcIic7XG5cbiAgICAgICAgaWYgKCEoc2luZ2xlID8gc2luZ2xlUXVvdGVzIDogZG91YmxlUXVvdGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHF1b3RlICsgcmVzdWx0ICsgcXVvdGU7XG4gICAgICAgIH1cblxuICAgICAgICBzdHIgPSByZXN1bHQ7XG4gICAgICAgIHJlc3VsdCA9IHF1b3RlO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKChjb2RlID09PSAweDI3ICAvKiAnICovICYmIHNpbmdsZSkgfHwgKGNvZGUgPT09IDB4MjIgIC8qIFwiICovICYmICFzaW5nbGUpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXFxcJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCArIHF1b3RlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZsYXR0ZW4gYW4gYXJyYXkgdG8gYSBzdHJpbmcsIHdoZXJlIHRoZSBhcnJheSBjYW4gY29udGFpblxuICAgICAqIGVpdGhlciBzdHJpbmdzIG9yIG5lc3RlZCBhcnJheXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuVG9TdHJpbmcoYXJyKSB7XG4gICAgICAgIHZhciBpLCBpeiwgZWxlbSwgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDAsIGl6ID0gYXJyLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGVsZW0gPSBhcnJbaV07XG4gICAgICAgICAgICByZXN1bHQgKz0gQXJyYXkuaXNBcnJheShlbGVtKSA/IGZsYXR0ZW5Ub1N0cmluZyhlbGVtKSA6IGVsZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0IGdlbmVyYXRlZCB0byBhIFNvdXJjZU5vZGUgd2hlbiBzb3VyY2UgbWFwcyBhcmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGdlbmVyYXRlZCwgbm9kZSkge1xuICAgICAgICBpZiAoIXNvdXJjZU1hcCkge1xuICAgICAgICAgICAgLy8gd2l0aCBubyBzb3VyY2UgbWFwcywgZ2VuZXJhdGVkIGlzIGVpdGhlciBhblxuICAgICAgICAgICAgLy8gYXJyYXkgb3IgYSBzdHJpbmcuICBpZiBhbiBhcnJheSwgZmxhdHRlbiBpdC5cbiAgICAgICAgICAgIC8vIGlmIGEgc3RyaW5nLCBqdXN0IHJldHVybiBpdFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ2VuZXJhdGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmbGF0dGVuVG9TdHJpbmcoZ2VuZXJhdGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZ2VuZXJhdGVkIGluc3RhbmNlb2YgU291cmNlTm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5sb2MgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKG51bGwsIG51bGwsIHNvdXJjZU1hcCwgZ2VuZXJhdGVkLCBub2RlLm5hbWUgfHwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKG5vZGUubG9jLnN0YXJ0LmxpbmUsIG5vZGUubG9jLnN0YXJ0LmNvbHVtbiwgKHNvdXJjZU1hcCA9PT0gdHJ1ZSA/IG5vZGUubG9jLnNvdXJjZSB8fCBudWxsIDogc291cmNlTWFwKSwgZ2VuZXJhdGVkLCBub2RlLm5hbWUgfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9FbXB0eVNwYWNlKCkge1xuICAgICAgICByZXR1cm4gKHNwYWNlKSA/IHNwYWNlIDogJyAnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGpvaW4obGVmdCwgcmlnaHQpIHtcbiAgICAgICAgdmFyIGxlZnRTb3VyY2UsXG4gICAgICAgICAgICByaWdodFNvdXJjZSxcbiAgICAgICAgICAgIGxlZnRDaGFyQ29kZSxcbiAgICAgICAgICAgIHJpZ2h0Q2hhckNvZGU7XG5cbiAgICAgICAgbGVmdFNvdXJjZSA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQobGVmdCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKGxlZnRTb3VyY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3JpZ2h0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJpZ2h0U291cmNlID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyaWdodCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJpZ2h0U291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtsZWZ0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnRDaGFyQ29kZSA9IGxlZnRTb3VyY2UuY2hhckNvZGVBdChsZWZ0U291cmNlLmxlbmd0aCAtIDEpO1xuICAgICAgICByaWdodENoYXJDb2RlID0gcmlnaHRTb3VyY2UuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICBpZiAoKGxlZnRDaGFyQ29kZSA9PT0gMHgyQiAgLyogKyAqLyB8fCBsZWZ0Q2hhckNvZGUgPT09IDB4MkQgIC8qIC0gKi8pICYmIGxlZnRDaGFyQ29kZSA9PT0gcmlnaHRDaGFyQ29kZSB8fFxuICAgICAgICAgICAgZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUobGVmdENoYXJDb2RlKSAmJiBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShyaWdodENoYXJDb2RlKSB8fFxuICAgICAgICAgICAgbGVmdENoYXJDb2RlID09PSAweDJGICAvKiAvICovICYmIHJpZ2h0Q2hhckNvZGUgPT09IDB4NjkgIC8qIGkgKi8pIHsgLy8gaW5maXggd29yZCBvcGVyYXRvcnMgYWxsIHN0YXJ0IHdpdGggYGlgXG4gICAgICAgICAgICByZXR1cm4gW2xlZnQsIG5vRW1wdHlTcGFjZSgpLCByaWdodF07XG4gICAgICAgIH0gZWxzZSBpZiAoZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShsZWZ0Q2hhckNvZGUpIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGxlZnRDaGFyQ29kZSkgfHxcbiAgICAgICAgICAgICAgICBlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKHJpZ2h0Q2hhckNvZGUpIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKHJpZ2h0Q2hhckNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gW2xlZnQsIHJpZ2h0XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2xlZnQsIHNwYWNlLCByaWdodF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkSW5kZW50KHN0bXQpIHtcbiAgICAgICAgcmV0dXJuIFtiYXNlLCBzdG10XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3aXRoSW5kZW50KGZuKSB7XG4gICAgICAgIHZhciBwcmV2aW91c0Jhc2U7XG4gICAgICAgIHByZXZpb3VzQmFzZSA9IGJhc2U7XG4gICAgICAgIGJhc2UgKz0gaW5kZW50O1xuICAgICAgICBmbihiYXNlKTtcbiAgICAgICAgYmFzZSA9IHByZXZpb3VzQmFzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVTcGFjZXMoc3RyKSB7XG4gICAgICAgIHZhciBpO1xuICAgICAgICBmb3IgKGkgPSBzdHIubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgIGlmIChlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihzdHIuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHN0ci5sZW5ndGggLSAxKSAtIGk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRqdXN0TXVsdGlsaW5lQ29tbWVudCh2YWx1ZSwgc3BlY2lhbEJhc2UpIHtcbiAgICAgICAgdmFyIGFycmF5LCBpLCBsZW4sIGxpbmUsIGosIHNwYWNlcywgcHJldmlvdXNCYXNlLCBzbjtcblxuICAgICAgICBhcnJheSA9IHZhbHVlLnNwbGl0KC9cXHJcXG58W1xcclxcbl0vKTtcbiAgICAgICAgc3BhY2VzID0gTnVtYmVyLk1BWF9WQUxVRTtcblxuICAgICAgICAvLyBmaXJzdCBsaW5lIGRvZXNuJ3QgaGF2ZSBpbmRlbnRhdGlvblxuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgbGluZSA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaiA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaiA8IGxpbmUubGVuZ3RoICYmIGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UobGluZS5jaGFyQ29kZUF0KGopKSkge1xuICAgICAgICAgICAgICAgICsrajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzcGFjZXMgPiBqKSB7XG4gICAgICAgICAgICAgICAgc3BhY2VzID0gajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3BlY2lhbEJhc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBwYXR0ZXJuIGxpa2VcbiAgICAgICAgICAgIC8vIHtcbiAgICAgICAgICAgIC8vICAgdmFyIHQgPSAyMDsgIC8qXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgKiB0aGlzIGlzIGNvbW1lbnRcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgcHJldmlvdXNCYXNlID0gYmFzZTtcbiAgICAgICAgICAgIGlmIChhcnJheVsxXVtzcGFjZXNdID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICBzcGVjaWFsQmFzZSArPSAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlID0gc3BlY2lhbEJhc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3BhY2VzICYgMSkge1xuICAgICAgICAgICAgICAgIC8vIC8qXG4gICAgICAgICAgICAgICAgLy8gICpcbiAgICAgICAgICAgICAgICAvLyAgKi9cbiAgICAgICAgICAgICAgICAvLyBJZiBzcGFjZXMgYXJlIG9kZCBudW1iZXIsIGFib3ZlIHBhdHRlcm4gaXMgY29uc2lkZXJlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSB3YXN0ZSAxIHNwYWNlLlxuICAgICAgICAgICAgICAgIC0tc3BhY2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldmlvdXNCYXNlID0gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBzbiA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQoYWRkSW5kZW50KGFycmF5W2ldLnNsaWNlKHNwYWNlcykpKTtcbiAgICAgICAgICAgIGFycmF5W2ldID0gc291cmNlTWFwID8gc24uam9pbignJykgOiBzbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJhc2UgPSBwcmV2aW91c0Jhc2U7XG5cbiAgICAgICAgcmV0dXJuIGFycmF5LmpvaW4oJ1xcbicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlQ29tbWVudChjb21tZW50LCBzcGVjaWFsQmFzZSkge1xuICAgICAgICBpZiAoY29tbWVudC50eXBlID09PSAnTGluZScpIHtcbiAgICAgICAgICAgIGlmIChlbmRzV2l0aExpbmVUZXJtaW5hdG9yKGNvbW1lbnQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcvLycgKyBjb21tZW50LnZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgdXNlIExpbmVUZXJtaW5hdG9yXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICcvLycgKyBjb21tZW50LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICghcHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0cmEuZm9ybWF0LmluZGVudC5hZGp1c3RNdWx0aWxpbmVDb21tZW50ICYmIC9bXFxuXFxyXS8udGVzdChjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFkanVzdE11bHRpbGluZUNvbW1lbnQoJy8qJyArIGNvbW1lbnQudmFsdWUgKyAnKi8nLCBzcGVjaWFsQmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcvKicgKyBjb21tZW50LnZhbHVlICsgJyovJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRDb21tZW50cyhzdG10LCByZXN1bHQpIHtcbiAgICAgICAgdmFyIGksIGxlbiwgY29tbWVudCwgc2F2ZSwgdGFpbGluZ1RvU3RhdGVtZW50LCBzcGVjaWFsQmFzZSwgZnJhZ21lbnQsXG4gICAgICAgICAgICBleHRSYW5nZSwgcmFuZ2UsIHByZXZSYW5nZSwgcHJlZml4LCBpbmZpeCwgc3VmZml4LCBjb3VudDtcblxuICAgICAgICBpZiAoc3RtdC5sZWFkaW5nQ29tbWVudHMgJiYgc3RtdC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2F2ZSA9IHJlc3VsdDtcblxuICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1swXTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgICAgICAgICAgIGV4dFJhbmdlID0gY29tbWVudC5leHRlbmRlZFJhbmdlO1xuICAgICAgICAgICAgICAgIHJhbmdlID0gY29tbWVudC5yYW5nZTtcblxuICAgICAgICAgICAgICAgIHByZWZpeCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKGV4dFJhbmdlWzBdLCByYW5nZVswXSk7XG4gICAgICAgICAgICAgICAgY291bnQgPSAocHJlZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0cmluZ1JlcGVhdCgnXFxuJywgY291bnQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KGdlbmVyYXRlQ29tbWVudChjb21tZW50KSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHByZWZpeCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlQ29tbWVudChjb21tZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJldlJhbmdlID0gcmFuZ2U7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSBzdG10LmxlYWRpbmdDb21tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC5sZWFkaW5nQ29tbWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIHJhbmdlID0gY29tbWVudC5yYW5nZTtcblxuICAgICAgICAgICAgICAgICAgICBpbmZpeCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKHByZXZSYW5nZVsxXSwgcmFuZ2VbMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb3VudCA9IChpbmZpeC5tYXRjaCgvXFxuL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0cmluZ1JlcGVhdCgnXFxuJywgY291bnQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KGdlbmVyYXRlQ29tbWVudChjb21tZW50KSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHByZXZSYW5nZSA9IHJhbmdlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKHJhbmdlWzFdLCBleHRSYW5nZVsxXSk7XG4gICAgICAgICAgICAgICAgY291bnQgPSAoc3VmZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdHJpbmdSZXBlYXQoJ1xcbicsIGNvdW50KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1swXTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoc2FmZUNvbmNhdGVuYXRpb24gJiYgc3RtdC50eXBlID09PSBTeW50YXguUHJvZ3JhbSAmJiBzdG10LmJvZHkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSBzdG10LmxlYWRpbmdDb21tZW50cy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC5sZWFkaW5nQ29tbWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gW2dlbmVyYXRlQ29tbWVudChjb21tZW50KV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQucHVzaCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KGZyYWdtZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoc2F2ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0bXQudHJhaWxpbmdDb21tZW50cykge1xuXG4gICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQudHJhaWxpbmdDb21tZW50c1swXTtcbiAgICAgICAgICAgICAgICBleHRSYW5nZSA9IGNvbW1lbnQuZXh0ZW5kZWRSYW5nZTtcbiAgICAgICAgICAgICAgICByYW5nZSA9IGNvbW1lbnQucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICBwcmVmaXggPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhleHRSYW5nZVswXSwgcmFuZ2VbMF0pO1xuICAgICAgICAgICAgICAgIGNvdW50ID0gKHByZWZpeC5tYXRjaCgvXFxuL2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0cmluZ1JlcGVhdCgnXFxuJywgY291bnQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KGdlbmVyYXRlQ29tbWVudChjb21tZW50KSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHByZWZpeCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlQ29tbWVudChjb21tZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YWlsaW5nVG9TdGF0ZW1lbnQgPSAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgc3BlY2lhbEJhc2UgPSBzdHJpbmdSZXBlYXQoJyAnLCBjYWxjdWxhdGVTcGFjZXModG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChbYmFzZSwgcmVzdWx0LCBpbmRlbnRdKS50b1N0cmluZygpKSk7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbGVuID0gc3RtdC50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LnRyYWlsaW5nQ29tbWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWlsaW5nVG9TdGF0ZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSB0YXJnZXQgbGlrZSBmb2xsb3dpbmcgc2NyaXB0XG4gICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIHQgPSAyMDsgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAqIFRoaXMgaXMgY29tbWVudCBvZiB0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbcmVzdWx0LCBpbmRlbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbcmVzdWx0LCBzcGVjaWFsQmFzZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCwgc3BlY2lhbEJhc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsIGFkZEluZGVudChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gbGVuIC0gMSAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsICdcXG4nXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVCbGFua0xpbmVzKHN0YXJ0LCBlbmQsIHJlc3VsdCkge1xuICAgICAgICB2YXIgaiwgbmV3bGluZUNvdW50ID0gMDtcblxuICAgICAgICBmb3IgKGogPSBzdGFydDsgaiA8IGVuZDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlQ29kZVtqXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICBuZXdsaW5lQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaiA9IDE7IGogPCBuZXdsaW5lQ291bnQ7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJlbnRoZXNpemUodGV4dCwgY3VycmVudCwgc2hvdWxkKSB7XG4gICAgICAgIGlmIChjdXJyZW50IDwgc2hvdWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gWycoJywgdGV4dCwgJyknXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVZlcmJhdGltU3RyaW5nKHN0cmluZykge1xuICAgICAgICB2YXIgaSwgaXosIHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gc3RyaW5nLnNwbGl0KC9cXHJcXG58XFxuLyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGl6ID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGl6OyBpKyspIHtcbiAgICAgICAgICAgIHJlc3VsdFtpXSA9IG5ld2xpbmUgKyBiYXNlICsgcmVzdWx0W2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVWZXJiYXRpbShleHByLCBwcmVjZWRlbmNlKSB7XG4gICAgICAgIHZhciB2ZXJiYXRpbSwgcmVzdWx0LCBwcmVjO1xuICAgICAgICB2ZXJiYXRpbSA9IGV4cHJbZXh0cmEudmVyYmF0aW1dO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmVyYmF0aW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBwYXJlbnRoZXNpemUoZ2VuZXJhdGVWZXJiYXRpbVN0cmluZyh2ZXJiYXRpbSksIFByZWNlZGVuY2UuU2VxdWVuY2UsIHByZWNlZGVuY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdmVyYmF0aW0gaXMgb2JqZWN0XG4gICAgICAgICAgICByZXN1bHQgPSBnZW5lcmF0ZVZlcmJhdGltU3RyaW5nKHZlcmJhdGltLmNvbnRlbnQpO1xuICAgICAgICAgICAgcHJlYyA9ICh2ZXJiYXRpbS5wcmVjZWRlbmNlICE9IG51bGwpID8gdmVyYmF0aW0ucHJlY2VkZW5jZSA6IFByZWNlZGVuY2UuU2VxdWVuY2U7XG4gICAgICAgICAgICByZXN1bHQgPSBwYXJlbnRoZXNpemUocmVzdWx0LCBwcmVjLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCwgZXhwcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gQ29kZUdlbmVyYXRvcigpIHtcbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzLlxuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUubWF5YmVCbG9jayA9IGZ1bmN0aW9uKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQsIG5vTGVhZGluZ0NvbW1lbnQsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgIG5vTGVhZGluZ0NvbW1lbnQgPSAhZXh0cmEuY29tbWVudCB8fCAhc3RtdC5sZWFkaW5nQ29tbWVudHM7XG5cbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LkJsb2NrU3RhdGVtZW50ICYmIG5vTGVhZGluZ0NvbW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbc3BhY2UsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdCwgZmxhZ3MpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09IFN5bnRheC5FbXB0eVN0YXRlbWVudCAmJiBub0xlYWRpbmdDb21tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gJzsnO1xuICAgICAgICB9XG5cbiAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgbmV3bGluZSxcbiAgICAgICAgICAgICAgICBhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LCBmbGFncykpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5tYXliZUJsb2NrU3VmZml4ID0gZnVuY3Rpb24gKHN0bXQsIHJlc3VsdCkge1xuICAgICAgICB2YXIgZW5kcyA9IGVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoc3RtdC50eXBlID09PSBTeW50YXguQmxvY2tTdGF0ZW1lbnQgJiYgKCFleHRyYS5jb21tZW50IHx8ICFzdG10LmxlYWRpbmdDb21tZW50cykgJiYgIWVuZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbcmVzdWx0LCBzcGFjZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbcmVzdWx0LCBiYXNlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3Jlc3VsdCwgbmV3bGluZSwgYmFzZV07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlSWRlbnRpZmllcihub2RlKSB7XG4gICAgICAgIHJldHVybiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKG5vZGUubmFtZSwgbm9kZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVBc3luY1ByZWZpeChub2RlLCBzcGFjZVJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBub2RlLmFzeW5jID8gJ2FzeW5jJyArIChzcGFjZVJlcXVpcmVkID8gbm9FbXB0eVNwYWNlKCkgOiBzcGFjZSkgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVN0YXJTdWZmaXgobm9kZSkge1xuICAgICAgICB2YXIgaXNHZW5lcmF0b3IgPSBub2RlLmdlbmVyYXRvciAmJiAhZXh0cmEubW96LnN0YXJsZXNzR2VuZXJhdG9yO1xuICAgICAgICByZXR1cm4gaXNHZW5lcmF0b3IgPyAnKicgKyBzcGFjZSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlTWV0aG9kUHJlZml4KHByb3ApIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBwcm9wLnZhbHVlLCBwcmVmaXggPSAnJztcbiAgICAgICAgaWYgKGZ1bmMuYXN5bmMpIHtcbiAgICAgICAgICAgIHByZWZpeCArPSBnZW5lcmF0ZUFzeW5jUHJlZml4KGZ1bmMsICFwcm9wLmNvbXB1dGVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnVuYy5nZW5lcmF0b3IpIHtcbiAgICAgICAgICAgIC8vIGF2b2lkIHNwYWNlIGJlZm9yZSBtZXRob2QgbmFtZVxuICAgICAgICAgICAgcHJlZml4ICs9IGdlbmVyYXRlU3RhclN1ZmZpeChmdW5jKSA/ICcqJyA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfVxuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVQYXR0ZXJuID0gZnVuY3Rpb24gKG5vZGUsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihub2RlLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlRnVuY3Rpb25QYXJhbXMgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgaSwgaXosIHJlc3VsdCwgaGFzRGVmYXVsdDtcblxuICAgICAgICBoYXNEZWZhdWx0ID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LkFycm93RnVuY3Rpb25FeHByZXNzaW9uICYmXG4gICAgICAgICAgICAgICAgIW5vZGUucmVzdCAmJiAoIW5vZGUuZGVmYXVsdHMgfHwgbm9kZS5kZWZhdWx0cy5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgbm9kZS5wYXJhbXMubGVuZ3RoID09PSAxICYmIG5vZGUucGFyYW1zWzBdLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAvLyBhcmcgPT4geyB9IGNhc2VcbiAgICAgICAgICAgIHJlc3VsdCA9IFtnZW5lcmF0ZUFzeW5jUHJlZml4KG5vZGUsIHRydWUpLCBnZW5lcmF0ZUlkZW50aWZpZXIobm9kZS5wYXJhbXNbMF0pXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vZGUudHlwZSA9PT0gU3ludGF4LkFycm93RnVuY3Rpb25FeHByZXNzaW9uID8gW2dlbmVyYXRlQXN5bmNQcmVmaXgobm9kZSwgZmFsc2UpXSA6IFtdO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJygnKTtcbiAgICAgICAgICAgIGlmIChub2RlLmRlZmF1bHRzKSB7XG4gICAgICAgICAgICAgICAgaGFzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IG5vZGUucGFyYW1zLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVmYXVsdCAmJiBub2RlLmRlZmF1bHRzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBkZWZhdWx0IHZhbHVlcy5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUFzc2lnbm1lbnQobm9kZS5wYXJhbXNbaV0sIG5vZGUuZGVmYXVsdHNbaV0sICc9JywgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVQYXR0ZXJuKG5vZGUucGFyYW1zW2ldLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlLnJlc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJy4uLicpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlSWRlbnRpZmllcihub2RlLnJlc3QpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlRnVuY3Rpb25Cb2R5ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgZXhwcjtcblxuICAgICAgICByZXN1bHQgPSB0aGlzLmdlbmVyYXRlRnVuY3Rpb25QYXJhbXMobm9kZSk7XG5cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LkFycm93RnVuY3Rpb25FeHByZXNzaW9uKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnPT4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIGV4cHIgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihub2RlLmJvZHksIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpO1xuICAgICAgICAgICAgaWYgKGV4cHIudG9TdHJpbmcoKS5jaGFyQXQoMCkgPT09ICd7Jykge1xuICAgICAgICAgICAgICAgIGV4cHIgPSBbJygnLCBleHByLCAnKSddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZXhwcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2sobm9kZS5ib2R5LCBTX1RURkYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlSXRlcmF0aW9uRm9yU3RhdGVtZW50ID0gZnVuY3Rpb24gKG9wZXJhdG9yLCBzdG10LCBmbGFncykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gWydmb3InICsgc3BhY2UgKyAoc3RtdC5hd2FpdCA/ICdhd2FpdCcgKyBzcGFjZSA6ICcnKSArICcoJ10sIHRoYXQgPSB0aGlzO1xuICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzdG10LmxlZnQudHlwZSA9PT0gU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RtdC5sZWZ0LmtpbmQgKyBub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5sZWZ0LmRlY2xhcmF0aW9uc1swXSwgU19GRkZGKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQubGVmdCwgUHJlY2VkZW5jZS5DYWxsLCBFX1RUVCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgb3BlcmF0b3IpO1xuICAgICAgICAgICAgcmVzdWx0ID0gW2pvaW4oXG4gICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQucmlnaHQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgKSwgJyknXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzKSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlUHJvcGVydHlLZXkgPSBmdW5jdGlvbiAoZXhwciwgY29tcHV0ZWQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGlmIChjb21wdXRlZCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1snKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG5cbiAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnXScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVBc3NpZ25tZW50ID0gZnVuY3Rpb24gKGxlZnQsIHJpZ2h0LCBvcGVyYXRvciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgaWYgKFByZWNlZGVuY2UuQXNzaWdubWVudCA8IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgIGZsYWdzIHw9IEZfQUxMT1dfSU47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGxlZnQsIFByZWNlZGVuY2UuQ2FsbCwgZmxhZ3MpLFxuICAgICAgICAgICAgICAgIHNwYWNlICsgb3BlcmF0b3IgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihyaWdodCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncylcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsXG4gICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLnNlbWljb2xvbiA9IGZ1bmN0aW9uIChmbGFncykge1xuICAgICAgICBpZiAoIXNlbWljb2xvbnMgJiYgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzsnO1xuICAgIH07XG5cbiAgICAvLyBTdGF0ZW1lbnRzLlxuXG4gICAgQ29kZUdlbmVyYXRvci5TdGF0ZW1lbnQgPSB7XG5cbiAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJhbmdlLCBjb250ZW50LCByZXN1bHQgPSBbJ3snLCBuZXdsaW5lXSwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBmdW5jdGlvbnMgd2l0aG91dCBhbnkgY29kZVxuICAgICAgICAgICAgICAgIGlmIChzdG10LmJvZHkubGVuZ3RoID09PSAwICYmIHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHN0bXQucmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZVsxXSAtIHJhbmdlWzBdID4gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKHJhbmdlWzBdICsgMSwgcmFuZ2VbMV0gLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50WzBdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsneyddO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgaSwgaXosIGZyYWdtZW50LCBib2R5RmxhZ3M7XG4gICAgICAgICAgICAgICAgYm9keUZsYWdzID0gU19URkZGO1xuICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfRlVOQ19CT0RZKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX0RJUkVDVElWRV9DVFg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmJvZHkubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGJlZm9yZSB0aGUgZmlyc3QgbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHN0bXQuYm9keVswXS5sZWFkaW5nQ29tbWVudHNbMF0uZXh0ZW5kZWRSYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKHJhbmdlWzBdLCByYW5nZVsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50WzBdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gWyd7J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbMF0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LnJhbmdlWzBdLCBzdG10LmJvZHlbMF0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGJldHdlZW4gbGluZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2kgLSAxXS50cmFpbGluZ0NvbW1lbnRzICAmJiAhc3RtdC5ib2R5W2ldLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5ib2R5W2kgLSAxXS5yYW5nZVsxXSwgc3RtdC5ib2R5W2ldLnJhbmdlWzBdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5ib2R5W2ldLmxlYWRpbmdDb21tZW50cyAmJiBwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmJvZHlbaV0sIGJvZHlGbGFncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keVtpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcyAmJiBpIDwgaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWRkIGEgbmV3IGxpbmUgaWYgdGhlcmUgYXJlIGxlYWRpbmcgY29tZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBuZXh0IHN0YXRlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2kgKyAxXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYWZ0ZXIgdGhlIGxhc3QgbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2ldLnRyYWlsaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQuYm9keVtpXS5yYW5nZVsxXSwgc3RtdC5yYW5nZVsxXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KCd9JykpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBCcmVha1N0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoc3RtdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYnJlYWsgJyArIHN0bXQubGFiZWwubmFtZSArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnYnJlYWsnICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChzdG10LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb250aW51ZSAnICsgc3RtdC5sYWJlbC5uYW1lICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdjb250aW51ZScgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2xhc3NCb2R5OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbICd7JywgbmV3bGluZV0sIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuYm9keS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuYm9keVtpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ30nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2xhc3NEZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudDtcbiAgICAgICAgICAgIHJlc3VsdCAgPSBbJ2NsYXNzJ107XG4gICAgICAgICAgICBpZiAoc3RtdC5pZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmlkLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0bXQuc3VwZXJDbGFzcykge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbignZXh0ZW5kcycsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3VwZXJDbGFzcywgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keSwgU19URkZUKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIERpcmVjdGl2ZVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmEucmF3ICYmIHN0bXQucmF3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0bXQucmF3ICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZURpcmVjdGl2ZShzdG10LmRpcmVjdGl2ZSkgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBCZWNhdXNlIGBkbyA0MiB3aGlsZSAoY29uZClgIGlzIFN5bnRheCBFcnJvci4gV2UgbmVlZCBzZW1pY29sb24uXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gam9pbignZG8nLCB0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gam9pbihyZXN1bHQsIFtcbiAgICAgICAgICAgICAgICAnd2hpbGUnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgJyknICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDYXRjaENsYXVzZTogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBndWFyZDtcblxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ2NhdGNoJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnBhcmFtLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5ndWFyZCkge1xuICAgICAgICAgICAgICAgICAgICBndWFyZCA9IHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuZ3VhcmQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgyLCAwLCAnIGlmICcsIGd1YXJkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIFNfVEZGRikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RlYnVnZ2VyJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBFbXB0eVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJzsnO1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyAnZXhwb3J0JyBdLCBib2R5RmxhZ3M7XG5cbiAgICAgICAgICAgIGJvZHlGbGFncyA9IChmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkgPyBTX1RGRlQgOiBTX1RGRkY7XG5cbiAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IEhvaXN0YWJsZURlY2xhcmF0aW9uW0RlZmF1bHRdXG4gICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBBc3NpZ25tZW50RXhwcmVzc2lvbltJbl0gO1xuICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsICdkZWZhdWx0Jyk7XG4gICAgICAgICAgICBpZiAoaXNTdGF0ZW1lbnQoc3RtdC5kZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmRlY2xhcmF0aW9uLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuZGVjbGFyYXRpb24sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyAnZXhwb3J0JyBdLCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICBib2R5RmxhZ3MgPSAoZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQpID8gU19URkZUIDogU19URkZGO1xuXG4gICAgICAgICAgICAvLyBleHBvcnQgVmFyaWFibGVTdGF0ZW1lbnRcbiAgICAgICAgICAgIC8vIGV4cG9ydCBEZWNsYXJhdGlvbltEZWZhdWx0XVxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5kZWNsYXJhdGlvbiwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGV4cG9ydCBFeHBvcnRDbGF1c2VbTm9SZWZlcmVuY2VdIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgLy8gZXhwb3J0IEV4cG9ydENsYXVzZSA7XG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsICd7JyArIHNwYWNlICsgJ30nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0bXQuc3BlY2lmaWVyc1swXS50eXBlID09PSBTeW50YXguRXhwb3J0QmF0Y2hTcGVjaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1swXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ3snKTtcbiAgICAgICAgICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5zcGVjaWZpZXJzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChiYXNlICsgJ30nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kdWxlU3BlY2lmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNvdXJjZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuc2VtaWNvbG9uKGZsYWdzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBleHBvcnQgKiBGcm9tQ2xhdXNlIDtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgJ2V4cG9ydCcgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAnKicgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAnZnJvbScgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNvdXJjZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VtaWNvbG9uKGZsYWdzKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBFeHByZXNzaW9uU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBpc0NsYXNzUHJlZml4ZWQoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZTtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQuc2xpY2UoMCwgNSkgIT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2RlID0gZnJhZ21lbnQuY2hhckNvZGVBdCg1KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gMHg3QiAgLyogJ3snICovIHx8IGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoY29kZSkgfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb25QcmVmaXhlZChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlO1xuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudC5zbGljZSgwLCA4KSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZGUgPSBmcmFnbWVudC5jaGFyQ29kZUF0KDgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlID09PSAweDI4IC8qICcoJyAqLyB8fCBlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGNvZGUpIHx8IGNvZGUgPT09IDB4MkEgIC8qICcqJyAqLyB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihjb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gaXNBc3luY1ByZWZpeGVkKGZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGUsIGksIGl6O1xuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudC5zbGljZSgwLCA1KSAhPT0gJ2FzeW5jJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShmcmFnbWVudC5jaGFyQ29kZUF0KDUpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDYsIGl6ID0gZnJhZ21lbnQubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoZnJhZ21lbnQuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpID09PSBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudC5zbGljZShpLCBpICsgOCkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2RlID0gZnJhZ21lbnQuY2hhckNvZGVBdChpICsgOCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IDB4MjggLyogJygnICovIHx8IGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoY29kZSkgfHwgY29kZSA9PT0gMHgyQSAgLyogJyonICovIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQgPSBbdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5leHByZXNzaW9uLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCldO1xuICAgICAgICAgICAgLy8gMTIuNCAneycsICdmdW5jdGlvbicsICdjbGFzcycgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBwb3NpdGlvbi5cbiAgICAgICAgICAgIC8vIHdyYXAgZXhwcmVzc2lvbiB3aXRoIHBhcmVudGhlc2VzXG4gICAgICAgICAgICBmcmFnbWVudCA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKGZyYWdtZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4N0IgIC8qICd7JyAqLyB8fCAgLy8gT2JqZWN0RXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICBpc0NsYXNzUHJlZml4ZWQoZnJhZ21lbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIGlzRnVuY3Rpb25QcmVmaXhlZChmcmFnbWVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNBc3luY1ByZWZpeGVkKGZyYWdtZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAoZGlyZWN0aXZlICYmIChmbGFncyAmIEZfRElSRUNUSVZFX0NUWCkgJiYgc3RtdC5leHByZXNzaW9uLnR5cGUgPT09IFN5bnRheC5MaXRlcmFsICYmIHR5cGVvZiBzdG10LmV4cHJlc3Npb24udmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsnKCcsIHJlc3VsdCwgJyknICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5zZW1pY29sb24oZmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgLy8gRVM2OiAxNS4yLjEgdmFsaWQgaW1wb3J0IGRlY2xhcmF0aW9uczpcbiAgICAgICAgICAgIC8vICAgICAtIGltcG9ydCBJbXBvcnRDbGF1c2UgRnJvbUNsYXVzZSA7XG4gICAgICAgICAgICAvLyAgICAgLSBpbXBvcnQgTW9kdWxlU3BlY2lmaWVyIDtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGN1cnNvciwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIElmIG5vIEltcG9ydENsYXVzZSBpcyBwcmVzZW50LFxuICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgYGltcG9ydCBNb2R1bGVTcGVjaWZpZXJgIHNvIHNraXAgYGZyb21gXG4gICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXIgaXMgU3RyaW5nTGl0ZXJhbC5cbiAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gaW1wb3J0IE1vZHVsZVNwZWNpZmllciA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCcsXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zb3VyY2UsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaW1wb3J0IEltcG9ydENsYXVzZSBGcm9tQ2xhdXNlIDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAnaW1wb3J0J1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGN1cnNvciA9IDA7XG5cbiAgICAgICAgICAgIC8vIEltcG9ydGVkQmluZGluZ1xuICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLnR5cGUgPT09IFN5bnRheC5JbXBvcnREZWZhdWx0U3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVClcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICArK2N1cnNvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnNbY3Vyc29yXS50eXBlID09PSBTeW50YXguSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5hbWVTcGFjZUltcG9ydFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVClcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZWRJbXBvcnRzXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ3snKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKHN0bXQuc3BlY2lmaWVycy5sZW5ndGggLSBjdXJzb3IpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBvcnQgeyAuLi4gfSBmcm9tIFwiLi4uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbY3Vyc29yXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ30nICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIC4uLixcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIC4uLixcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0gZnJvbSBcIi4uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGN1cnNvciwgaXogPSBzdG10LnNwZWNpZmllcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYmFzZSArICd9JyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFtcbiAgICAgICAgICAgICAgICAnZnJvbScgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNvdXJjZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VtaWNvbG9uKGZsYWdzKVxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgaXRlbUZsYWdzID0gKGZsYWdzICYgRl9BTExPV19JTikgPyBFX1RUVCA6IEVfRlRUO1xuICAgICAgICAgICAgaWYgKHN0bXQuaW5pdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuaWQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgaXRlbUZsYWdzKSxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICc9JyxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuaW5pdCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBpdGVtRmxhZ3MpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlUGF0dGVybihzdG10LmlkLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGl0ZW1GbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBWYXJpYWJsZURlY2xhcmF0b3IgaXMgdHlwZWQgYXMgU3RhdGVtZW50LFxuICAgICAgICAgICAgLy8gYnV0IGpvaW5lZCB3aXRoIGNvbW1hIChub3QgTGluZVRlcm1pbmF0b3IpLlxuICAgICAgICAgICAgLy8gU28gaWYgY29tbWVudCBpcyBhdHRhY2hlZCB0byB0YXJnZXQgbm9kZSwgd2Ugc2hvdWxkIHNwZWNpYWxpemUuXG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpeiwgbm9kZSwgYm9keUZsYWdzLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgcmVzdWx0ID0gWyBzdG10LmtpbmQgXTtcblxuICAgICAgICAgICAgYm9keUZsYWdzID0gKGZsYWdzICYgRl9BTExPV19JTikgPyBTX1RGRkYgOiBTX0ZGRkY7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGJsb2NrKCkge1xuICAgICAgICAgICAgICAgIG5vZGUgPSBzdG10LmRlY2xhcmF0aW9uc1swXTtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudCAmJiBub2RlLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIGJvZHlGbGFncykpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMSwgaXogPSBzdG10LmRlY2xhcmF0aW9ucy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBzdG10LmRlY2xhcmF0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnQgJiYgbm9kZS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgYm9keUZsYWdzKSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0bXQuZGVjbGFyYXRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGJsb2NrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYmxvY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5zZW1pY29sb24oZmxhZ3MpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBUaHJvd1N0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW2pvaW4oXG4gICAgICAgICAgICAgICAgJ3Rocm93JyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmFyZ3VtZW50LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVClcbiAgICAgICAgICAgICksIHRoaXMuc2VtaWNvbG9uKGZsYWdzKV07XG4gICAgICAgIH0sXG5cbiAgICAgICAgVHJ5U3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBndWFyZGVkSGFuZGxlcnM7XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IFsndHJ5JywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYmxvY2ssIFNfVEZGRildO1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuYmxvY2ssIHJlc3VsdCk7XG5cbiAgICAgICAgICAgIGlmIChzdG10LmhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgLy8gb2xkIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5oYW5kbGVycy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuaGFuZGxlcnNbaV0sIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIgfHwgaSArIDEgIT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5oYW5kbGVyc1tpXS5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBndWFyZGVkSGFuZGxlcnMgPSBzdG10Lmd1YXJkZWRIYW5kbGVycyB8fCBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZ3VhcmRlZEhhbmRsZXJzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoZ3VhcmRlZEhhbmRsZXJzW2ldLCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyIHx8IGkgKyAxICE9PSBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KGd1YXJkZWRIYW5kbGVyc1tpXS5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gbmV3IGludGVyZmFjZVxuICAgICAgICAgICAgICAgIGlmIChzdG10LmhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RtdC5oYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmhhbmRsZXIubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuaGFuZGxlcltpXSwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyIHx8IGkgKyAxICE9PSBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5oYW5kbGVyW2ldLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5oYW5kbGVyLCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmhhbmRsZXIuYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplcikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbJ2ZpbmFsbHknLCB0aGlzLm1heWJlQmxvY2soc3RtdC5maW5hbGl6ZXIsIFNfVEZGRildKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgU3dpdGNoU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCBpLCBpeiwgYm9keUZsYWdzLCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5kaXNjcmltaW5hbnQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknICsgc3BhY2UgKyAneycgKyBuZXdsaW5lXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHN0bXQuY2FzZXMpIHtcbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmNhc2VzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuY2FzZXNbaV0sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoJ30nKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFN3aXRjaENhc2U6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQsIGksIGl6LCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0bXQudGVzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBqb2luKCdjYXNlJywgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJzonXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gWydkZWZhdWx0OiddO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgIGl6ID0gc3RtdC5jb25zZXF1ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoaXogJiYgc3RtdC5jb25zZXF1ZW50WzBdLnR5cGUgPT09IFN5bnRheC5CbG9ja1N0YXRlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoYXQubWF5YmVCbG9jayhzdG10LmNvbnNlcXVlbnRbMF0sIFNfVEZGRik7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGkgIT09IGl6ICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBpeiAtIDEgJiYgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmNvbnNlcXVlbnRbaV0sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSAhPT0gaXogJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIElmU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGJvZHlGbGFncywgc2VtaWNvbG9uT3B0aW9uYWwsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnaWYnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZW1pY29sb25PcHRpb25hbCA9IGZsYWdzICYgRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgYm9keUZsYWdzID0gU19URkZGO1xuICAgICAgICAgICAgaWYgKHNlbWljb2xvbk9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdG10LmFsdGVybmF0ZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmNvbnNlcXVlbnQsIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmNvbnNlcXVlbnQsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuYWx0ZXJuYXRlLnR5cGUgPT09IFN5bnRheC5JZlN0YXRlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgWydlbHNlICcsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5hbHRlcm5hdGUsIGJvZHlGbGFncyldKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgam9pbignZWxzZScsIHRoaXMubWF5YmVCbG9jayhzdG10LmFsdGVybmF0ZSwgYm9keUZsYWdzKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuY29uc2VxdWVudCwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEZvclN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsnZm9yJyArIHNwYWNlICsgJygnXTtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5pbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmluaXQudHlwZSA9PT0gU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5pbml0LCBTX0ZGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZfQUxMT1dfSU4gYmVjb21lcyBmYWxzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuaW5pdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9GVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc7Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnOycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnRlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc7Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RtdC51cGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnVwZGF0ZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBGb3JJblN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUl0ZXJhdGlvbkZvclN0YXRlbWVudCgnaW4nLCBzdG10LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRm9yT2ZTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVJdGVyYXRpb25Gb3JTdGF0ZW1lbnQoJ29mJywgc3RtdCwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpO1xuICAgICAgICB9LFxuXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtzdG10LmxhYmVsLm5hbWUgKyAnOicsIHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKV07XG4gICAgICAgIH0sXG5cbiAgICAgICAgUHJvZ3JhbTogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudCwgaSwgaXosIGJvZHlGbGFncztcbiAgICAgICAgICAgIGl6ID0gc3RtdC5ib2R5Lmxlbmd0aDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtzYWZlQ29uY2F0ZW5hdGlvbiAmJiBpeiA+IDAgPyAnXFxuJyA6ICcnXTtcbiAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZURjtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzYWZlQ29uY2F0ZW5hdGlvbiAmJiBpID09PSBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmVmb3JlIHRoZSBmaXJzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVswXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5yYW5nZVswXSwgc3RtdC5ib2R5W2ldLnJhbmdlWzBdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBiZXR3ZWVuIGxpbmVzXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSAtIDFdLnRyYWlsaW5nQ29tbWVudHMgJiYgIXN0bXQuYm9keVtpXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5ib2R5W2kgLSAxXS5yYW5nZVsxXSwgc3RtdC5ib2R5W2ldLnJhbmdlWzBdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBhZGRJbmRlbnQodGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmJvZHlbaV0sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeiAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpICsgMV0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBhZnRlciB0aGUgbGFzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2ldLnRyYWlsaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5ib2R5W2ldLnJhbmdlWzFdLCBzdG10LnJhbmdlWzFdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVBc3luY1ByZWZpeChzdG10LCB0cnVlKSxcbiAgICAgICAgICAgICAgICAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlU3RhclN1ZmZpeChzdG10KSB8fCBub0VtcHR5U3BhY2UoKSxcbiAgICAgICAgICAgICAgICBzdG10LmlkID8gZ2VuZXJhdGVJZGVudGlmaWVyKHN0bXQuaWQpIDogJycsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShzdG10KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgaWYgKHN0bXQuYXJndW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2pvaW4oXG4gICAgICAgICAgICAgICAgICAgICdyZXR1cm4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmFyZ3VtZW50LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVClcbiAgICAgICAgICAgICAgICApLCB0aGlzLnNlbWljb2xvbihmbGFncyldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFsncmV0dXJuJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKV07XG4gICAgICAgIH0sXG5cbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICd3aGlsZScgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICd3aXRoJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10Lm9iamVjdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIG1lcmdlKENvZGVHZW5lcmF0b3IucHJvdG90eXBlLCBDb2RlR2VuZXJhdG9yLlN0YXRlbWVudCk7XG5cbiAgICAvLyBFeHByZXNzaW9ucy5cblxuICAgIENvZGVHZW5lcmF0b3IuRXhwcmVzc2lvbiA9IHtcblxuICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXo7XG4gICAgICAgICAgICBpZiAoUHJlY2VkZW5jZS5TZXF1ZW5jZSA8IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0FMTE9XX0lOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIuZXhwcmVzc2lvbnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZXhwcmVzc2lvbnNbaV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgZmxhZ3MpKTtcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQXNzaWdubWVudChleHByLmxlZnQsIGV4cHIucmlnaHQsIGV4cHIub3BlcmF0b3IsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwciksIFByZWNlZGVuY2UuQXJyb3dGdW5jdGlvbiwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChQcmVjZWRlbmNlLkNvbmRpdGlvbmFsIDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfQUxMT1dfSU47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci50ZXN0LCBQcmVjZWRlbmNlLkxvZ2ljYWxPUiwgZmxhZ3MpLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSArICc/JyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmNvbnNlcXVlbnQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgZmxhZ3MpLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSArICc6JyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFsdGVybmF0ZSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncylcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFByZWNlZGVuY2UuQ29uZGl0aW9uYWwsXG4gICAgICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBMb2dpY2FsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5CaW5hcnlFeHByZXNzaW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBCaW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGN1cnJlbnRQcmVjZWRlbmNlLCBmcmFnbWVudCwgbGVmdFNvdXJjZTtcbiAgICAgICAgICAgIGN1cnJlbnRQcmVjZWRlbmNlID0gQmluYXJ5UHJlY2VkZW5jZVtleHByLm9wZXJhdG9yXTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQcmVjZWRlbmNlIDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfQUxMT1dfSU47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5sZWZ0LCBjdXJyZW50UHJlY2VkZW5jZSwgZmxhZ3MpO1xuXG4gICAgICAgICAgICBsZWZ0U291cmNlID0gZnJhZ21lbnQudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgaWYgKGxlZnRTb3VyY2UuY2hhckNvZGVBdChsZWZ0U291cmNlLmxlbmd0aCAtIDEpID09PSAweDJGIC8qIC8gKi8gJiYgZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUoZXhwci5vcGVyYXRvci5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtmcmFnbWVudCwgbm9FbXB0eVNwYWNlKCksIGV4cHIub3BlcmF0b3JdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKGZyYWdtZW50LCBleHByLm9wZXJhdG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnJpZ2h0LCBjdXJyZW50UHJlY2VkZW5jZSArIDEsIGZsYWdzKTtcblxuICAgICAgICAgICAgaWYgKGV4cHIub3BlcmF0b3IgPT09ICcvJyAmJiBmcmFnbWVudC50b1N0cmluZygpLmNoYXJBdCgwKSA9PT0gJy8nIHx8XG4gICAgICAgICAgICBleHByLm9wZXJhdG9yLnNsaWNlKC0xKSA9PT0gJzwnICYmIGZyYWdtZW50LnRvU3RyaW5nKCkuc2xpY2UoMCwgMykgPT09ICchLS0nKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgJy8nIGNvbmNhdHMgd2l0aCAnLycgb3IgYDxgIGNvbmNhdHMgd2l0aCBgIS0tYCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgY29tbWVudCBzdGFydFxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLm9wZXJhdG9yID09PSAnaW4nICYmICEoZmxhZ3MgJiBGX0FMTE9XX0lOKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbJygnLCByZXN1bHQsICcpJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgY3VycmVudFByZWNlZGVuY2UsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENhbGxFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6O1xuICAgICAgICAgICAgLy8gRl9BTExPV19VTlBBUkFUSF9ORVcgYmVjb21lcyBmYWxzZS5cbiAgICAgICAgICAgIHJlc3VsdCA9IFt0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmNhbGxlZSwgUHJlY2VkZW5jZS5DYWxsLCBFX1RURildO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJygnKTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwclsnYXJndW1lbnRzJ10ubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHJbJ2FyZ3VtZW50cyddW2ldLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG5cbiAgICAgICAgICAgIGlmICghKGZsYWdzICYgRl9BTExPV19DQUxMKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbJygnLCByZXN1bHQsICcpJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5DYWxsLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBOZXdFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGxlbmd0aCwgaSwgaXosIGl0ZW1GbGFncztcbiAgICAgICAgICAgIGxlbmd0aCA9IGV4cHJbJ2FyZ3VtZW50cyddLmxlbmd0aDtcblxuICAgICAgICAgICAgLy8gRl9BTExPV19DQUxMIGJlY29tZXMgZmFsc2UuXG4gICAgICAgICAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FVyBtYXkgYmVjb21lIGZhbHNlLlxuICAgICAgICAgICAgaXRlbUZsYWdzID0gKGZsYWdzICYgRl9BTExPV19VTlBBUkFUSF9ORVcgJiYgIXBhcmVudGhlc2VzICYmIGxlbmd0aCA9PT0gMCkgPyBFX1RGVCA6IEVfVEZGO1xuXG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKFxuICAgICAgICAgICAgICAgICduZXcnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuY2FsbGVlLCBQcmVjZWRlbmNlLk5ldywgaXRlbUZsYWdzKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0FMTE9XX1VOUEFSQVRIX05FVykgfHwgcGFyZW50aGVzZXMgfHwgbGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcoJyk7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBsZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHJbJ2FyZ3VtZW50cyddW2ldLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuTmV3LCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuXG4gICAgICAgICAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FVyBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgcmVzdWx0ID0gW3RoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIub2JqZWN0LCBQcmVjZWRlbmNlLkNhbGwsIChmbGFncyAmIEZfQUxMT1dfQ0FMTCkgPyBFX1RURiA6IEVfVEZGKV07XG5cbiAgICAgICAgICAgIGlmIChleHByLmNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1snKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnR5LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBmbGFncyAmIEZfQUxMT1dfQ0FMTCA/IEVfVFRUIDogRV9URlQpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnXScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhwci5vYmplY3QudHlwZSA9PT0gU3ludGF4LkxpdGVyYWwgJiYgdHlwZW9mIGV4cHIub2JqZWN0LnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWxsIHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgMS4gTm8gZmxvYXRpbmcgcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgLy8gICAyLiBEb24ndCBoYXZlIGV4cG9uZW50c1xuICAgICAgICAgICAgICAgICAgICAvLyAgIDMuIFRoZSBsYXN0IGNoYXJhY3RlciBpcyBhIGRlY2ltYWwgZGlnaXRcbiAgICAgICAgICAgICAgICAgICAgLy8gICA0LiBOb3QgaGV4YWRlY2ltYWwgT1Igb2N0YWwgbnVtYmVyIGxpdGVyYWxcbiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGFkZCBhIGZsb2F0aW5nIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQuaW5kZXhPZignLicpIDwgMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEvW2VFeFhdLy50ZXN0KGZyYWdtZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdXRpbHMuY29kZS5pc0RlY2ltYWxEaWdpdChmcmFnbWVudC5jaGFyQ29kZUF0KGZyYWdtZW50Lmxlbmd0aCAtIDEpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoZnJhZ21lbnQubGVuZ3RoID49IDIgJiYgZnJhZ21lbnQuY2hhckNvZGVBdCgwKSA9PT0gNDgpICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJy4nKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5wcm9wZXJ0eSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5NZW1iZXIsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE1ldGFQcm9wZXJ0eTogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlb2YgZXhwci5tZXRhID09PSBcInN0cmluZ1wiID8gZXhwci5tZXRhIDogZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIubWV0YSkpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJy4nKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVvZiBleHByLnByb3BlcnR5ID09PSBcInN0cmluZ1wiID8gZXhwci5wcm9wZXJ0eSA6IGdlbmVyYXRlSWRlbnRpZmllcihleHByLnByb3BlcnR5KSk7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5NZW1iZXIsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFVuYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudCwgcmlnaHRDaGFyQ29kZSwgbGVmdFNvdXJjZSwgbGVmdENoYXJDb2RlO1xuICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLlVuYXJ5LCBFX1RUVCk7XG5cbiAgICAgICAgICAgIGlmIChzcGFjZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKGV4cHIub3BlcmF0b3IsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW2V4cHIub3BlcmF0b3JdO1xuICAgICAgICAgICAgICAgIGlmIChleHByLm9wZXJhdG9yLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlLCB2b2lkLCB0eXBlb2ZcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGB0eXBlb2YgW11gLCBub3QgYHR5cGVvZltdYFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgaW5zZXJ0aW5nIHNwYWNlcyBiZXR3ZWVuIG9wZXJhdG9yIGFuZCBhcmd1bWVudCBpZiBpdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICAgICAgICAgICAgICAvLyBsaWtlLCBgIWNvbmRgXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTb3VyY2UgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdENoYXJDb2RlID0gbGVmdFNvdXJjZS5jaGFyQ29kZUF0KGxlZnRTb3VyY2UubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2hhckNvZGUgPSBmcmFnbWVudC50b1N0cmluZygpLmNoYXJDb2RlQXQoMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgobGVmdENoYXJDb2RlID09PSAweDJCICAvKiArICovIHx8IGxlZnRDaGFyQ29kZSA9PT0gMHgyRCAgLyogLSAqLykgJiYgbGVmdENoYXJDb2RlID09PSByaWdodENoYXJDb2RlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShsZWZ0Q2hhckNvZGUpICYmIGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KHJpZ2h0Q2hhckNvZGUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuVW5hcnksIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFlpZWxkRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICAgICAgaWYgKGV4cHIuZGVsZWdhdGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAneWllbGQqJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gJ3lpZWxkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHByLmFyZ3VtZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLllpZWxkLCBFX1RUVClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuWWllbGQsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEF3YWl0RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gam9pbihcbiAgICAgICAgICAgICAgICBleHByLmFsbCA/ICdhd2FpdConIDogJ2F3YWl0JyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLkF3YWl0LCBFX1RUVClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5Bd2FpdCwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoZXhwci5wcmVmaXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5VbmFyeSwgRV9UVFQpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFByZWNlZGVuY2UuVW5hcnksXG4gICAgICAgICAgICAgICAgICAgIHByZWNlZGVuY2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuUG9zdGZpeCwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICBleHByLm9wZXJhdG9yXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBQcmVjZWRlbmNlLlBvc3RmaXgsXG4gICAgICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFzeW5jUHJlZml4KGV4cHIsIHRydWUpLFxuICAgICAgICAgICAgICAgICdmdW5jdGlvbidcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoZXhwci5pZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlU3RhclN1ZmZpeChleHByKSB8fCBub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIuaWQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVTdGFyU3VmZml4KGV4cHIpIHx8IHNwYWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwcikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBBcnJheVBhdHRlcm46IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQXJyYXlFeHByZXNzaW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzLCB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBBcnJheUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncywgaXNQYXR0ZXJuKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBtdWx0aWxpbmUsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKCFleHByLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW10nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbXVsdGlsaW5lID0gaXNQYXR0ZXJuID8gZmFsc2UgOiBleHByLmVsZW1lbnRzLmxlbmd0aCA+IDE7XG4gICAgICAgICAgICByZXN1bHQgPSBbJ1snLCBtdWx0aWxpbmUgPyBuZXdsaW5lIDogJyddO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5lbGVtZW50cy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXhwci5lbGVtZW50c1tpXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG11bHRpbGluZSA/IGluZGVudCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZWxlbWVudHNbaV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgKG11bHRpbGluZSA/IG5ld2xpbmUgOiBzcGFjZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobXVsdGlsaW5lICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobXVsdGlsaW5lID8gYmFzZSA6ICcnKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCddJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFJlc3RFbGVtZW50OiBmdW5jdGlvbihleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICcuLi4nICsgdGhpcy5nZW5lcmF0ZVBhdHRlcm4oZXhwci5hcmd1bWVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2xhc3NFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuICAgICAgICAgICAgcmVzdWx0ID0gWydjbGFzcyddO1xuICAgICAgICAgICAgaWYgKGV4cHIuaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5pZCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHByLnN1cGVyQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGpvaW4oJ2V4dGVuZHMnLCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnN1cGVyQ2xhc3MsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZVN0YXRlbWVudChleHByLmJvZHksIFNfVEZGVCkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBNZXRob2REZWZpbml0aW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuICAgICAgICAgICAgaWYgKGV4cHJbJ3N0YXRpYyddKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWydzdGF0aWMnICsgc3BhY2VdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHByLmtpbmQgPT09ICdnZXQnIHx8IGV4cHIua2luZCA9PT0gJ3NldCcpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtcbiAgICAgICAgICAgICAgICAgICAgam9pbihleHByLmtpbmQsIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIudmFsdWUpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBbXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlTWV0aG9kUHJlZml4KGV4cHIpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIudmFsdWUpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFByb3BlcnR5OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChleHByLmtpbmQgPT09ICdnZXQnIHx8IGV4cHIua2luZCA9PT0gJ3NldCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBleHByLmtpbmQsIG5vRW1wdHlTcGFjZSgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIudmFsdWUpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIuc2hvcnRoYW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cHIudmFsdWUudHlwZSA9PT0gXCJBc3NpZ25tZW50UGF0dGVyblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkFzc2lnbm1lbnRQYXR0ZXJuKGV4cHIudmFsdWUsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLm1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlTWV0aG9kUHJlZml4KGV4cHIpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIudmFsdWUpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpLFxuICAgICAgICAgICAgICAgICc6JyArIHNwYWNlLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIudmFsdWUsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIE9iamVjdEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIG11bHRpbGluZSwgcmVzdWx0LCBmcmFnbWVudCwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIGlmICghZXhwci5wcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAne30nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbXVsdGlsaW5lID0gZXhwci5wcm9wZXJ0aWVzLmxlbmd0aCA+IDE7XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5wcm9wZXJ0aWVzWzBdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFtdWx0aWxpbmUpIHtcbiAgICAgICAgICAgICAgICAvLyBpc3N1ZXMgNFxuICAgICAgICAgICAgICAgIC8vIERvIG5vdCB0cmFuc2Zvcm0gZnJvbVxuICAgICAgICAgICAgICAgIC8vICAgZGVqYXZ1LkNsYXNzLmRlY2xhcmUoe1xuICAgICAgICAgICAgICAgIC8vICAgICAgIG1ldGhvZDI6IGZ1bmN0aW9uICgpIHt9XG4gICAgICAgICAgICAgICAgLy8gICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0b1xuICAgICAgICAgICAgICAgIC8vICAgZGVqYXZ1LkNsYXNzLmRlY2xhcmUoe21ldGhvZDI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICB9fSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyAneycsIHNwYWNlLCBmcmFnbWVudCwgc3BhY2UsICd9JyBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsgJ3snLCBuZXdsaW5lLCBpbmRlbnQsIGZyYWdtZW50IF07XG5cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5wcm9wZXJ0aWVzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChiYXNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCd9Jyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEFzc2lnbm1lbnRQYXR0ZXJuOiBmdW5jdGlvbihleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVBc3NpZ25tZW50KGV4cHIubGVmdCwgZXhwci5yaWdodCwgJz0nLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgT2JqZWN0UGF0dGVybjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpeiwgbXVsdGlsaW5lLCBwcm9wZXJ0eSwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoIWV4cHIucHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3t9JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbXVsdGlsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZXhwci5wcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS52YWx1ZS50eXBlICE9PSBTeW50YXguSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLnByb3BlcnRpZXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGV4cHIucHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5zaG9ydGhhbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IFsneycsIG11bHRpbGluZSA/IG5ld2xpbmUgOiAnJyBdO1xuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLnByb3BlcnRpZXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBpbmRlbnQgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucHJvcGVydGllc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIChtdWx0aWxpbmUgPyBuZXdsaW5lIDogc3BhY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAobXVsdGlsaW5lICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobXVsdGlsaW5lID8gYmFzZSA6ICcnKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCd9Jyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFRoaXNFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAndGhpcyc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgU3VwZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICdzdXBlcic7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSWRlbnRpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEltcG9ydERlZmF1bHRTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlSWRlbnRpZmllcihleHByLmlkIHx8IGV4cHIubG9jYWwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEltcG9ydE5hbWVzcGFjZVNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWycqJ107XG4gICAgICAgICAgICB2YXIgaWQgPSBleHByLmlkIHx8IGV4cHIubG9jYWw7XG4gICAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSArICdhcycgKyBub0VtcHR5U3BhY2UoKSArIGdlbmVyYXRlSWRlbnRpZmllcihpZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBJbXBvcnRTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGltcG9ydGVkID0gZXhwci5pbXBvcnRlZDtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbIGltcG9ydGVkLm5hbWUgXTtcbiAgICAgICAgICAgIHZhciBsb2NhbCA9IGV4cHIubG9jYWw7XG4gICAgICAgICAgICBpZiAobG9jYWwgJiYgbG9jYWwubmFtZSAhPT0gaW1wb3J0ZWQubmFtZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpICsgJ2FzJyArIG5vRW1wdHlTcGFjZSgpICsgZ2VuZXJhdGVJZGVudGlmaWVyKGxvY2FsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cG9ydFNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWwgPSBleHByLmxvY2FsO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgbG9jYWwubmFtZSBdO1xuICAgICAgICAgICAgdmFyIGV4cG9ydGVkID0gZXhwci5leHBvcnRlZDtcbiAgICAgICAgICAgIGlmIChleHBvcnRlZCAmJiBleHBvcnRlZC5uYW1lICE9PSBsb2NhbC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkgKyAnYXMnICsgbm9FbXB0eVNwYWNlKCkgKyBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwb3J0ZWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTGl0ZXJhbDogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmF3O1xuICAgICAgICAgICAgaWYgKGV4cHIuaGFzT3duUHJvcGVydHkoJ3JhdycpICYmIHBhcnNlICYmIGV4dHJhLnJhdykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJhdyA9IHBhcnNlKGV4cHIucmF3KS5ib2R5WzBdLmV4cHJlc3Npb247XG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXcudHlwZSA9PT0gU3ludGF4LkxpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXcudmFsdWUgPT09IGV4cHIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwci5yYXc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdCB1c2UgcmF3IHByb3BlcnR5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwci52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlU3RyaW5nKGV4cHIudmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4cHIudmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlTnVtYmVyKGV4cHIudmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4cHIudmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHByLnZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIucmVnZXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcvJyArIGV4cHIucmVnZXgucGF0dGVybiArICcvJyArIGV4cHIucmVnZXguZmxhZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVSZWdFeHAoZXhwci52YWx1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgR2VuZXJhdG9yRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5Db21wcmVoZW5zaW9uRXhwcmVzc2lvbihleHByLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgLy8gR2VuZXJhdG9yRXhwcmVzc2lvbiBzaG91bGQgYmUgcGFyZW50aGVzaXplZCB3aXRoICguLi4pLCBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbiB3aXRoIFsuLi5dXG4gICAgICAgICAgICAvLyBEdWUgdG8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgzNDY4IHBvc2l0aW9uIG9mIGV4cHIuYm9keSBjYW4gZGlmZmVyIGluIFNwaWRlcm1vbmtleSBhbmQgRVM2XG5cbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBmcmFnbWVudCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICByZXN1bHQgPSAoZXhwci50eXBlID09PSBTeW50YXguR2VuZXJhdG9yRXhwcmVzc2lvbikgPyBbJygnXSA6IFsnWyddO1xuXG4gICAgICAgICAgICBpZiAoZXh0cmEubW96LmNvbXByZWhlbnNpb25FeHByZXNzaW9uU3RhcnRzV2l0aEFzc2lnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYm9keSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLmJsb2Nrcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYmxvY2tzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDAgfHwgZXh0cmEubW96LmNvbXByZWhlbnNpb25FeHByZXNzaW9uU3RhcnRzV2l0aEFzc2lnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIuZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsICdpZicgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmZpbHRlciwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbICcoJywgZnJhZ21lbnQsICcpJyBdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFleHRyYS5tb3ouY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5ib2R5LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKTtcblxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKChleHByLnR5cGUgPT09IFN5bnRheC5HZW5lcmF0b3JFeHByZXNzaW9uKSA/ICcpJyA6ICddJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIENvbXByZWhlbnNpb25CbG9jazogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgZnJhZ21lbnQ7XG4gICAgICAgICAgICBpZiAoZXhwci5sZWZ0LnR5cGUgPT09IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBbXG4gICAgICAgICAgICAgICAgICAgIGV4cHIubGVmdC5raW5kLCBub0VtcHR5U3BhY2UoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChleHByLmxlZnQuZGVjbGFyYXRpb25zWzBdLCBTX0ZGRkYpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmxlZnQsIFByZWNlZGVuY2UuQ2FsbCwgRV9UVFQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmcmFnbWVudCA9IGpvaW4oZnJhZ21lbnQsIGV4cHIub2YgPyAnb2YnIDogJ2luJyk7XG4gICAgICAgICAgICBmcmFnbWVudCA9IGpvaW4oZnJhZ21lbnQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucmlnaHQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBbICdmb3InICsgc3BhY2UgKyAnKCcsIGZyYWdtZW50LCAnKScgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBTcHJlYWRFbGVtZW50OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgJy4uLicsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVClcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBpdGVtRmxhZ3MgPSBFX1RURjtcbiAgICAgICAgICAgIGlmICghKGZsYWdzICYgRl9BTExPV19DQUxMKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1GbGFncyA9IEVfVEZGO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnRhZywgUHJlY2VkZW5jZS5DYWxsLCBpdGVtRmxhZ3MpLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucXVhc2ksIFByZWNlZGVuY2UuUHJpbWFyeSwgRV9GRlQpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuVGFnZ2VkVGVtcGxhdGUsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFRlbXBsYXRlRWxlbWVudDogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBEb24ndCB1c2UgXCJjb29rZWRcIi4gU2luY2UgdGFnZ2VkIHRlbXBsYXRlIGNhbiB1c2UgcmF3IHRlbXBsYXRlXG4gICAgICAgICAgICAvLyByZXByZXNlbnRhdGlvbi4gU28gaWYgd2UgZG8gc28sIGl0IGJyZWFrcyB0aGUgc2NyaXB0IHNlbWFudGljcy5cbiAgICAgICAgICAgIHJldHVybiBleHByLnZhbHVlLnJhdztcbiAgICAgICAgfSxcblxuICAgICAgICBUZW1wbGF0ZUxpdGVyYWw6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXo7XG4gICAgICAgICAgICByZXN1bHQgPSBbICdgJyBdO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLnF1YXNpcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5xdWFzaXNbaV0sIFByZWNlZGVuY2UuUHJpbWFyeSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnJHsnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmV4cHJlc3Npb25zW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSArICd9Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ2AnKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTW9kdWxlU3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkxpdGVyYWwoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgbWVyZ2UoQ29kZUdlbmVyYXRvci5wcm90b3R5cGUsIENvZGVHZW5lcmF0b3IuRXhwcmVzc2lvbik7XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgdHlwZTtcblxuICAgICAgICB0eXBlID0gZXhwci50eXBlIHx8IFN5bnRheC5Qcm9wZXJ0eTtcblxuICAgICAgICBpZiAoZXh0cmEudmVyYmF0aW0gJiYgZXhwci5oYXNPd25Qcm9wZXJ0eShleHRyYS52ZXJiYXRpbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVZlcmJhdGltKGV4cHIsIHByZWNlZGVuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gdGhpc1t0eXBlXShleHByLCBwcmVjZWRlbmNlLCBmbGFncyk7XG5cblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYWRkQ29tbWVudHMoZXhwciwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQsIGV4cHIpO1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgICAgZnJhZ21lbnQ7XG5cbiAgICAgICAgcmVzdWx0ID0gdGhpc1tzdG10LnR5cGVdKHN0bXQsIGZsYWdzKTtcblxuICAgICAgICAvLyBBdHRhY2ggY29tbWVudHNcblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYWRkQ29tbWVudHMoc3RtdCwgcmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyYWdtZW50ID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtICYmICFzYWZlQ29uY2F0ZW5hdGlvbiAmJiBuZXdsaW5lID09PSAnJyAmJiAgZnJhZ21lbnQuY2hhckF0KGZyYWdtZW50Lmxlbmd0aCAtIDEpID09PSAnXFxuJykge1xuICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlTWFwID8gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnJlcGxhY2VSaWdodCgvXFxzKyQvLCAnJykgOiBmcmFnbWVudC5yZXBsYWNlKC9cXHMrJC8sICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCwgc3RtdCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlSW50ZXJuYWwobm9kZSkge1xuICAgICAgICB2YXIgY29kZWdlbjtcblxuICAgICAgICBjb2RlZ2VuID0gbmV3IENvZGVHZW5lcmF0b3IoKTtcbiAgICAgICAgaWYgKGlzU3RhdGVtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29kZWdlbi5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBTX1RGRkYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvZGVnZW4uZ2VuZXJhdGVFeHByZXNzaW9uKG5vZGUsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGU6ICcgKyBub2RlLnR5cGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKSwgcmVzdWx0LCBwYWlyO1xuXG4gICAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIE9ic29sZXRlIG9wdGlvbnNcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgIGBvcHRpb25zLmluZGVudGBcbiAgICAgICAgICAgIC8vICAgYG9wdGlvbnMuYmFzZWBcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZW0sIHdlIGNhbiB1c2UgYG9wdGlvbi5mb3JtYXQuaW5kZW50YC5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5pbmRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnMuZm9ybWF0LmluZGVudC5zdHlsZSA9IG9wdGlvbnMuaW5kZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmJhc2UgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnMuZm9ybWF0LmluZGVudC5iYXNlID0gb3B0aW9ucy5iYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucyA9IHVwZGF0ZURlZXBseShkZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgICAgICBpbmRlbnQgPSBvcHRpb25zLmZvcm1hdC5pbmRlbnQuc3R5bGU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYmFzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBiYXNlID0gb3B0aW9ucy5iYXNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBiYXNlID0gc3RyaW5nUmVwZWF0KGluZGVudCwgb3B0aW9ucy5mb3JtYXQuaW5kZW50LmJhc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgICAgICAgICAgaW5kZW50ID0gb3B0aW9ucy5mb3JtYXQuaW5kZW50LnN0eWxlO1xuICAgICAgICAgICAgYmFzZSA9IHN0cmluZ1JlcGVhdChpbmRlbnQsIG9wdGlvbnMuZm9ybWF0LmluZGVudC5iYXNlKTtcbiAgICAgICAgfVxuICAgICAgICBqc29uID0gb3B0aW9ucy5mb3JtYXQuanNvbjtcbiAgICAgICAgcmVudW1iZXIgPSBvcHRpb25zLmZvcm1hdC5yZW51bWJlcjtcbiAgICAgICAgaGV4YWRlY2ltYWwgPSBqc29uID8gZmFsc2UgOiBvcHRpb25zLmZvcm1hdC5oZXhhZGVjaW1hbDtcbiAgICAgICAgcXVvdGVzID0ganNvbiA/ICdkb3VibGUnIDogb3B0aW9ucy5mb3JtYXQucXVvdGVzO1xuICAgICAgICBlc2NhcGVsZXNzID0gb3B0aW9ucy5mb3JtYXQuZXNjYXBlbGVzcztcbiAgICAgICAgbmV3bGluZSA9IG9wdGlvbnMuZm9ybWF0Lm5ld2xpbmU7XG4gICAgICAgIHNwYWNlID0gb3B0aW9ucy5mb3JtYXQuc3BhY2U7XG4gICAgICAgIGlmIChvcHRpb25zLmZvcm1hdC5jb21wYWN0KSB7XG4gICAgICAgICAgICBuZXdsaW5lID0gc3BhY2UgPSBpbmRlbnQgPSBiYXNlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50aGVzZXMgPSBvcHRpb25zLmZvcm1hdC5wYXJlbnRoZXNlcztcbiAgICAgICAgc2VtaWNvbG9ucyA9IG9wdGlvbnMuZm9ybWF0LnNlbWljb2xvbnM7XG4gICAgICAgIHNhZmVDb25jYXRlbmF0aW9uID0gb3B0aW9ucy5mb3JtYXQuc2FmZUNvbmNhdGVuYXRpb247XG4gICAgICAgIGRpcmVjdGl2ZSA9IG9wdGlvbnMuZGlyZWN0aXZlO1xuICAgICAgICBwYXJzZSA9IGpzb24gPyBudWxsIDogb3B0aW9ucy5wYXJzZTtcbiAgICAgICAgc291cmNlTWFwID0gb3B0aW9ucy5zb3VyY2VNYXA7XG4gICAgICAgIHNvdXJjZUNvZGUgPSBvcHRpb25zLnNvdXJjZUNvZGU7XG4gICAgICAgIHByZXNlcnZlQmxhbmtMaW5lcyA9IG9wdGlvbnMuZm9ybWF0LnByZXNlcnZlQmxhbmtMaW5lcyAmJiBzb3VyY2VDb2RlICE9PSBudWxsO1xuICAgICAgICBleHRyYSA9IG9wdGlvbnM7XG5cbiAgICAgICAgaWYgKHNvdXJjZU1hcCkge1xuICAgICAgICAgICAgaWYgKCFleHBvcnRzLmJyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUgZW52aXJvbm1lbnQgaXMgbm9kZS5qc1xuICAgICAgICAgICAgICAgIC8vIEFuZCBwcmV2ZW50IGZyb20gaW5jbHVkaW5nIHNvdXJjZS1tYXAgYnkgYnJvd3NlcmlmeVxuICAgICAgICAgICAgICAgIFNvdXJjZU5vZGUgPSByZXF1aXJlKCdzb3VyY2UtbWFwJykuU291cmNlTm9kZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgU291cmNlTm9kZSA9IGdsb2JhbC5zb3VyY2VNYXAuU291cmNlTm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9IGdlbmVyYXRlSW50ZXJuYWwobm9kZSk7XG5cbiAgICAgICAgaWYgKCFzb3VyY2VNYXApIHtcbiAgICAgICAgICAgIHBhaXIgPSB7Y29kZTogcmVzdWx0LnRvU3RyaW5nKCksIG1hcDogbnVsbH07XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VNYXBXaXRoQ29kZSA/IHBhaXIgOiBwYWlyLmNvZGU7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHBhaXIgPSByZXN1bHQudG9TdHJpbmdXaXRoU291cmNlTWFwKHtcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAgIHNvdXJjZVJvb3Q6IG9wdGlvbnMuc291cmNlTWFwUm9vdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VDb250ZW50KSB7XG4gICAgICAgICAgICBwYWlyLm1hcC5zZXRTb3VyY2VDb250ZW50KG9wdGlvbnMuc291cmNlTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNvdXJjZUNvbnRlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc291cmNlTWFwV2l0aENvZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWlyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhaXIubWFwLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgRk9STUFUX01JTklGWSA9IHtcbiAgICAgICAgaW5kZW50OiB7XG4gICAgICAgICAgICBzdHlsZTogJycsXG4gICAgICAgICAgICBiYXNlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHJlbnVtYmVyOiB0cnVlLFxuICAgICAgICBoZXhhZGVjaW1hbDogdHJ1ZSxcbiAgICAgICAgcXVvdGVzOiAnYXV0bycsXG4gICAgICAgIGVzY2FwZWxlc3M6IHRydWUsXG4gICAgICAgIGNvbXBhY3Q6IHRydWUsXG4gICAgICAgIHBhcmVudGhlc2VzOiBmYWxzZSxcbiAgICAgICAgc2VtaWNvbG9uczogZmFsc2VcbiAgICB9O1xuXG4gICAgRk9STUFUX0RFRkFVTFRTID0gZ2V0RGVmYXVsdE9wdGlvbnMoKS5mb3JtYXQ7XG5cbiAgICBleHBvcnRzLnZlcnNpb24gPSByZXF1aXJlKCcuL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgZXhwb3J0cy5nZW5lcmF0ZSA9IGdlbmVyYXRlO1xuICAgIGV4cG9ydHMuYXR0YWNoQ29tbWVudHMgPSBlc3RyYXZlcnNlLmF0dGFjaENvbW1lbnRzO1xuICAgIGV4cG9ydHMuUHJlY2VkZW5jZSA9IHVwZGF0ZURlZXBseSh7fSwgUHJlY2VkZW5jZSk7XG4gICAgZXhwb3J0cy5icm93c2VyID0gZmFsc2U7XG4gICAgZXhwb3J0cy5GT1JNQVRfTUlOSUZZID0gRk9STUFUX01JTklGWTtcbiAgICBleHBvcnRzLkZPUk1BVF9ERUZBVUxUUyA9IEZPUk1BVF9ERUZBVUxUUztcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9mcm9tXCI6IFwiZXNjb2RlZ2VuQF4xLjguMVwiLFxuICBcIl9pZFwiOiBcImVzY29kZWdlbkAxLjExLjBcIixcbiAgXCJfaW5CdW5kbGVcIjogZmFsc2UsXG4gIFwiX2ludGVncml0eVwiOiBcInNoYTUxMi1JZU1WNDVSZWl4SFM1M0svT21mS0FJenROL2lnREh6VEpVaFpNM2sxak1oSVpXams0NVNNd0F0QnNFWGlKcDN2U1BtVGN1NkNYbjdtRHZGSFJONjZmdz09XCIsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL3N0YXRpYy1ldmFsL2VzY29kZWdlblwiLFxuICBcIl9waGFudG9tQ2hpbGRyZW5cIjoge30sXG4gIFwiX3JlcXVlc3RlZFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwicmFuZ2VcIixcbiAgICBcInJlZ2lzdHJ5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJlc2NvZGVnZW5AXjEuOC4xXCIsXG4gICAgXCJuYW1lXCI6IFwiZXNjb2RlZ2VuXCIsXG4gICAgXCJlc2NhcGVkTmFtZVwiOiBcImVzY29kZWdlblwiLFxuICAgIFwicmF3U3BlY1wiOiBcIl4xLjguMVwiLFxuICAgIFwic2F2ZVNwZWNcIjogbnVsbCxcbiAgICBcImZldGNoU3BlY1wiOiBcIl4xLjguMVwiXG4gIH0sXG4gIFwiX3JlcXVpcmVkQnlcIjogW1xuICAgIFwiL3N0YXRpYy1ldmFsXCJcbiAgXSxcbiAgXCJfcmVzb2x2ZWRcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2NvZGVnZW4vLS9lc2NvZGVnZW4tMS4xMS4wLnRnelwiLFxuICBcIl9zaGFzdW1cIjogXCJiMjdhOTM4OTQ4MWQ1YmZkNWJlYzc2ZjdiYjFlYjNmOGY0NTU2NTg5XCIsXG4gIFwiX3NwZWNcIjogXCJlc2NvZGVnZW5AXjEuOC4xXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL2pjd2hpdGxvY2svZGV2ZWxvcG1lbnQvc3dheS9ub2RlX21vZHVsZXMvc3RhdGljLWV2YWxcIixcbiAgXCJiaW5cIjoge1xuICAgIFwiZXNnZW5lcmF0ZVwiOiBcIi4vYmluL2VzZ2VuZXJhdGUuanNcIixcbiAgICBcImVzY29kZWdlblwiOiBcIi4vYmluL2VzY29kZWdlbi5qc1wiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZXN0b29scy9lc2NvZGVnZW4vaXNzdWVzXCJcbiAgfSxcbiAgXCJidW5kbGVEZXBlbmRlbmNpZXNcIjogZmFsc2UsXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImVzcHJpbWFcIjogXCJeMy4xLjNcIixcbiAgICBcImVzdHJhdmVyc2VcIjogXCJeNC4yLjBcIixcbiAgICBcImVzdXRpbHNcIjogXCJeMi4wLjJcIixcbiAgICBcIm9wdGlvbmF0b3JcIjogXCJeMC44LjFcIixcbiAgICBcInNvdXJjZS1tYXBcIjogXCJ+MC42LjFcIlxuICB9LFxuICBcImRlcHJlY2F0ZWRcIjogZmFsc2UsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJFQ01BU2NyaXB0IGNvZGUgZ2VuZXJhdG9yXCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImFjb3JuXCI6IFwiXjQuMC40XCIsXG4gICAgXCJibHVlYmlyZFwiOiBcIl4zLjQuN1wiLFxuICAgIFwiYm93ZXItcmVnaXN0cnktY2xpZW50XCI6IFwiXjEuMC4wXCIsXG4gICAgXCJjaGFpXCI6IFwiXjMuNS4wXCIsXG4gICAgXCJjb21tb25qcy1ldmVyeXdoZXJlXCI6IFwiXjAuOS43XCIsXG4gICAgXCJndWxwXCI6IFwiXjMuOC4xMFwiLFxuICAgIFwiZ3VscC1lc2xpbnRcIjogXCJeMy4wLjFcIixcbiAgICBcImd1bHAtbW9jaGFcIjogXCJeMy4wLjFcIixcbiAgICBcInNlbXZlclwiOiBcIl41LjEuMFwiXG4gIH0sXG4gIFwiZW5naW5lc1wiOiB7XG4gICAgXCJub2RlXCI6IFwiPj00LjBcIlxuICB9LFxuICBcImZpbGVzXCI6IFtcbiAgICBcIkxJQ0VOU0UuQlNEXCIsXG4gICAgXCJSRUFETUUubWRcIixcbiAgICBcImJpblwiLFxuICAgIFwiZXNjb2RlZ2VuLmpzXCIsXG4gICAgXCJwYWNrYWdlLmpzb25cIlxuICBdLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cDovL2dpdGh1Yi5jb20vZXN0b29scy9lc2NvZGVnZW5cIixcbiAgXCJsaWNlbnNlXCI6IFwiQlNELTItQ2xhdXNlXCIsXG4gIFwibWFpblwiOiBcImVzY29kZWdlbi5qc1wiLFxuICBcIm1haW50YWluZXJzXCI6IFtcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJZdXN1a2UgU3V6dWtpXCIsXG4gICAgICBcImVtYWlsXCI6IFwidXRhdGFuZS50ZWFAZ21haWwuY29tXCIsXG4gICAgICBcInVybFwiOiBcImh0dHA6Ly9naXRodWIuY29tL0NvbnN0ZWxsYXRpb25cIlxuICAgIH1cbiAgXSxcbiAgXCJuYW1lXCI6IFwiZXNjb2RlZ2VuXCIsXG4gIFwib3B0aW9uYWxEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwic291cmNlLW1hcFwiOiBcIn4wLjYuMVwiXG4gIH0sXG4gIFwicmVwb3NpdG9yeVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiZ2l0XCIsXG4gICAgXCJ1cmxcIjogXCJnaXQrc3NoOi8vZ2l0QGdpdGh1Yi5jb20vZXN0b29scy9lc2NvZGVnZW4uZ2l0XCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImJ1aWxkXCI6IFwiY2pzaWZ5IC1hIHBhdGg6IHRvb2xzL2VudHJ5LXBvaW50LmpzID4gZXNjb2RlZ2VuLmJyb3dzZXIuanNcIixcbiAgICBcImJ1aWxkLW1pblwiOiBcImNqc2lmeSAtbWEgcGF0aDogdG9vbHMvZW50cnktcG9pbnQuanMgPiBlc2NvZGVnZW4uYnJvd3Nlci5taW4uanNcIixcbiAgICBcImxpbnRcIjogXCJndWxwIGxpbnRcIixcbiAgICBcInJlbGVhc2VcIjogXCJub2RlIHRvb2xzL3JlbGVhc2UuanNcIixcbiAgICBcInRlc3RcIjogXCJndWxwIHRyYXZpc1wiLFxuICAgIFwidW5pdC10ZXN0XCI6IFwiZ3VscCB0ZXN0XCJcbiAgfSxcbiAgXCJ2ZXJzaW9uXCI6IFwiMS4xMS4wXCJcbn1cbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG4vKmpzbGludCB2YXJzOmZhbHNlLCBiaXR3aXNlOnRydWUqL1xuLypqc2hpbnQgaW5kZW50OjQqL1xuLypnbG9iYWwgZXhwb3J0czp0cnVlKi9cbihmdW5jdGlvbiBjbG9uZShleHBvcnRzKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIFN5bnRheCxcbiAgICAgICAgaXNBcnJheSxcbiAgICAgICAgVmlzaXRvck9wdGlvbixcbiAgICAgICAgVmlzaXRvcktleXMsXG4gICAgICAgIG9iamVjdENyZWF0ZSxcbiAgICAgICAgb2JqZWN0S2V5cyxcbiAgICAgICAgQlJFQUssXG4gICAgICAgIFNLSVAsXG4gICAgICAgIFJFTU9WRTtcblxuICAgIGZ1bmN0aW9uIGlnbm9yZUpTSGludEVycm9yKCkgeyB9XG5cbiAgICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbiAgICBpZiAoIWlzQXJyYXkpIHtcbiAgICAgICAgaXNBcnJheSA9IGZ1bmN0aW9uIGlzQXJyYXkoYXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZXBDb3B5KG9iaikge1xuICAgICAgICB2YXIgcmV0ID0ge30sIGtleSwgdmFsO1xuICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0W2tleV0gPSBkZWVwQ29weSh2YWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNoYWxsb3dDb3B5KG9iaikge1xuICAgICAgICB2YXIgcmV0ID0ge30sIGtleTtcbiAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICByZXRba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIGlnbm9yZUpTSGludEVycm9yKHNoYWxsb3dDb3B5KTtcblxuICAgIC8vIGJhc2VkIG9uIExMVk0gbGliYysrIHVwcGVyX2JvdW5kIC8gbG93ZXJfYm91bmRcbiAgICAvLyBNSVQgTGljZW5zZVxuXG4gICAgZnVuY3Rpb24gdXBwZXJCb3VuZChhcnJheSwgZnVuYykge1xuICAgICAgICB2YXIgZGlmZiwgbGVuLCBpLCBjdXJyZW50O1xuXG4gICAgICAgIGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgaSA9IDA7XG5cbiAgICAgICAgd2hpbGUgKGxlbikge1xuICAgICAgICAgICAgZGlmZiA9IGxlbiA+Pj4gMTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpICsgZGlmZjtcbiAgICAgICAgICAgIGlmIChmdW5jKGFycmF5W2N1cnJlbnRdKSkge1xuICAgICAgICAgICAgICAgIGxlbiA9IGRpZmY7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50ICsgMTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gZGlmZiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG93ZXJCb3VuZChhcnJheSwgZnVuYykge1xuICAgICAgICB2YXIgZGlmZiwgbGVuLCBpLCBjdXJyZW50O1xuXG4gICAgICAgIGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgaSA9IDA7XG5cbiAgICAgICAgd2hpbGUgKGxlbikge1xuICAgICAgICAgICAgZGlmZiA9IGxlbiA+Pj4gMTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpICsgZGlmZjtcbiAgICAgICAgICAgIGlmIChmdW5jKGFycmF5W2N1cnJlbnRdKSkge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50ICsgMTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gZGlmZiArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxlbiA9IGRpZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICAgIGlnbm9yZUpTSGludEVycm9yKGxvd2VyQm91bmQpO1xuXG4gICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCAoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBGKCkgeyB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICBGLnByb3RvdHlwZSA9IG87XG4gICAgICAgICAgICByZXR1cm4gbmV3IEYoKTtcbiAgICAgICAgfTtcbiAgICB9KSgpO1xuXG4gICAgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIHZhciBrZXlzID0gW10sIGtleTtcbiAgICAgICAgZm9yIChrZXkgaW4gbykge1xuICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGV4dGVuZCh0bywgZnJvbSkge1xuICAgICAgICB2YXIga2V5cyA9IG9iamVjdEtleXMoZnJvbSksIGtleSwgaSwgbGVuO1xuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBrZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgdG9ba2V5XSA9IGZyb21ba2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgU3ludGF4ID0ge1xuICAgICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJyxcbiAgICAgICAgQXNzaWdubWVudFBhdHRlcm46ICdBc3NpZ25tZW50UGF0dGVybicsXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogJ0FycmF5RXhwcmVzc2lvbicsXG4gICAgICAgIEFycmF5UGF0dGVybjogJ0FycmF5UGF0dGVybicsXG4gICAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nLFxuICAgICAgICBBd2FpdEV4cHJlc3Npb246ICdBd2FpdEV4cHJlc3Npb24nLCAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgICAgIEJpbmFyeUV4cHJlc3Npb246ICdCaW5hcnlFeHByZXNzaW9uJyxcbiAgICAgICAgQnJlYWtTdGF0ZW1lbnQ6ICdCcmVha1N0YXRlbWVudCcsXG4gICAgICAgIENhbGxFeHByZXNzaW9uOiAnQ2FsbEV4cHJlc3Npb24nLFxuICAgICAgICBDYXRjaENsYXVzZTogJ0NhdGNoQ2xhdXNlJyxcbiAgICAgICAgQ2xhc3NCb2R5OiAnQ2xhc3NCb2R5JyxcbiAgICAgICAgQ2xhc3NEZWNsYXJhdGlvbjogJ0NsYXNzRGVjbGFyYXRpb24nLFxuICAgICAgICBDbGFzc0V4cHJlc3Npb246ICdDbGFzc0V4cHJlc3Npb24nLFxuICAgICAgICBDb21wcmVoZW5zaW9uQmxvY2s6ICdDb21wcmVoZW5zaW9uQmxvY2snLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbXByZWhlbnNpb25FeHByZXNzaW9uOiAnQ29tcHJlaGVuc2lvbkV4cHJlc3Npb24nLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbicsXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiAnQ29udGludWVTdGF0ZW1lbnQnLFxuICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudDogJ0RlYnVnZ2VyU3RhdGVtZW50JyxcbiAgICAgICAgRGlyZWN0aXZlU3RhdGVtZW50OiAnRGlyZWN0aXZlU3RhdGVtZW50JyxcbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogJ0RvV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBFbXB0eVN0YXRlbWVudDogJ0VtcHR5U3RhdGVtZW50JyxcbiAgICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb246ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicsXG4gICAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbjogJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbicsXG4gICAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyxcbiAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiAnRXhwb3J0U3BlY2lmaWVyJyxcbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogJ0V4cHJlc3Npb25TdGF0ZW1lbnQnLFxuICAgICAgICBGb3JTdGF0ZW1lbnQ6ICdGb3JTdGF0ZW1lbnQnLFxuICAgICAgICBGb3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JyxcbiAgICAgICAgRm9yT2ZTdGF0ZW1lbnQ6ICdGb3JPZlN0YXRlbWVudCcsXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246ICdGdW5jdGlvbkRlY2xhcmF0aW9uJyxcbiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHByZXNzaW9uJyxcbiAgICAgICAgR2VuZXJhdG9yRXhwcmVzc2lvbjogJ0dlbmVyYXRvckV4cHJlc3Npb24nLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIElkZW50aWZpZXI6ICdJZGVudGlmaWVyJyxcbiAgICAgICAgSWZTdGF0ZW1lbnQ6ICdJZlN0YXRlbWVudCcsXG4gICAgICAgIEltcG9ydERlY2xhcmF0aW9uOiAnSW1wb3J0RGVjbGFyYXRpb24nLFxuICAgICAgICBJbXBvcnREZWZhdWx0U3BlY2lmaWVyOiAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicsXG4gICAgICAgIEltcG9ydE5hbWVzcGFjZVNwZWNpZmllcjogJ0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllcicsXG4gICAgICAgIEltcG9ydFNwZWNpZmllcjogJ0ltcG9ydFNwZWNpZmllcicsXG4gICAgICAgIExpdGVyYWw6ICdMaXRlcmFsJyxcbiAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogJ0xhYmVsZWRTdGF0ZW1lbnQnLFxuICAgICAgICBMb2dpY2FsRXhwcmVzc2lvbjogJ0xvZ2ljYWxFeHByZXNzaW9uJyxcbiAgICAgICAgTWVtYmVyRXhwcmVzc2lvbjogJ01lbWJlckV4cHJlc3Npb24nLFxuICAgICAgICBNZXRhUHJvcGVydHk6ICdNZXRhUHJvcGVydHknLFxuICAgICAgICBNZXRob2REZWZpbml0aW9uOiAnTWV0aG9kRGVmaW5pdGlvbicsXG4gICAgICAgIE1vZHVsZVNwZWNpZmllcjogJ01vZHVsZVNwZWNpZmllcicsXG4gICAgICAgIE5ld0V4cHJlc3Npb246ICdOZXdFeHByZXNzaW9uJyxcbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogJ09iamVjdEV4cHJlc3Npb24nLFxuICAgICAgICBPYmplY3RQYXR0ZXJuOiAnT2JqZWN0UGF0dGVybicsXG4gICAgICAgIFByb2dyYW06ICdQcm9ncmFtJyxcbiAgICAgICAgUHJvcGVydHk6ICdQcm9wZXJ0eScsXG4gICAgICAgIFJlc3RFbGVtZW50OiAnUmVzdEVsZW1lbnQnLFxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6ICdSZXR1cm5TdGF0ZW1lbnQnLFxuICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246ICdTZXF1ZW5jZUV4cHJlc3Npb24nLFxuICAgICAgICBTcHJlYWRFbGVtZW50OiAnU3ByZWFkRWxlbWVudCcsXG4gICAgICAgIFN1cGVyOiAnU3VwZXInLFxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICdTd2l0Y2hTdGF0ZW1lbnQnLFxuICAgICAgICBTd2l0Y2hDYXNlOiAnU3dpdGNoQ2FzZScsXG4gICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbicsXG4gICAgICAgIFRlbXBsYXRlRWxlbWVudDogJ1RlbXBsYXRlRWxlbWVudCcsXG4gICAgICAgIFRlbXBsYXRlTGl0ZXJhbDogJ1RlbXBsYXRlTGl0ZXJhbCcsXG4gICAgICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4cHJlc3Npb24nLFxuICAgICAgICBUaHJvd1N0YXRlbWVudDogJ1Rocm93U3RhdGVtZW50JyxcbiAgICAgICAgVHJ5U3RhdGVtZW50OiAnVHJ5U3RhdGVtZW50JyxcbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiAnVW5hcnlFeHByZXNzaW9uJyxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogJ1VwZGF0ZUV4cHJlc3Npb24nLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAnVmFyaWFibGVEZWNsYXJhdGlvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogJ1ZhcmlhYmxlRGVjbGFyYXRvcicsXG4gICAgICAgIFdoaWxlU3RhdGVtZW50OiAnV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBXaXRoU3RhdGVtZW50OiAnV2l0aFN0YXRlbWVudCcsXG4gICAgICAgIFlpZWxkRXhwcmVzc2lvbjogJ1lpZWxkRXhwcmVzc2lvbidcbiAgICB9O1xuXG4gICAgVmlzaXRvcktleXMgPSB7XG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiBbJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgQXNzaWdubWVudFBhdHRlcm46IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBBcnJheUV4cHJlc3Npb246IFsnZWxlbWVudHMnXSxcbiAgICAgICAgQXJyYXlQYXR0ZXJuOiBbJ2VsZW1lbnRzJ10sXG4gICAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBbJ3BhcmFtcycsICdib2R5J10sXG4gICAgICAgIEF3YWl0RXhwcmVzc2lvbjogWydhcmd1bWVudCddLCAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6IFsnYm9keSddLFxuICAgICAgICBCaW5hcnlFeHByZXNzaW9uOiBbJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgQnJlYWtTdGF0ZW1lbnQ6IFsnbGFiZWwnXSxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246IFsnY2FsbGVlJywgJ2FyZ3VtZW50cyddLFxuICAgICAgICBDYXRjaENsYXVzZTogWydwYXJhbScsICdib2R5J10sXG4gICAgICAgIENsYXNzQm9keTogWydib2R5J10sXG4gICAgICAgIENsYXNzRGVjbGFyYXRpb246IFsnaWQnLCAnc3VwZXJDbGFzcycsICdib2R5J10sXG4gICAgICAgIENsYXNzRXhwcmVzc2lvbjogWydpZCcsICdzdXBlckNsYXNzJywgJ2JvZHknXSxcbiAgICAgICAgQ29tcHJlaGVuc2lvbkJsb2NrOiBbJ2xlZnQnLCAncmlnaHQnXSwgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbjogWydibG9ja3MnLCAnZmlsdGVyJywgJ2JvZHknXSwgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246IFsndGVzdCcsICdjb25zZXF1ZW50JywgJ2FsdGVybmF0ZSddLFxuICAgICAgICBDb250aW51ZVN0YXRlbWVudDogWydsYWJlbCddLFxuICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudDogW10sXG4gICAgICAgIERpcmVjdGl2ZVN0YXRlbWVudDogW10sXG4gICAgICAgIERvV2hpbGVTdGF0ZW1lbnQ6IFsnYm9keScsICd0ZXN0J10sXG4gICAgICAgIEVtcHR5U3RhdGVtZW50OiBbXSxcbiAgICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb246IFsnc291cmNlJ10sXG4gICAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbjogWydkZWNsYXJhdGlvbiddLFxuICAgICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uOiBbJ2RlY2xhcmF0aW9uJywgJ3NwZWNpZmllcnMnLCAnc291cmNlJ10sXG4gICAgICAgIEV4cG9ydFNwZWNpZmllcjogWydleHBvcnRlZCcsICdsb2NhbCddLFxuICAgICAgICBFeHByZXNzaW9uU3RhdGVtZW50OiBbJ2V4cHJlc3Npb24nXSxcbiAgICAgICAgRm9yU3RhdGVtZW50OiBbJ2luaXQnLCAndGVzdCcsICd1cGRhdGUnLCAnYm9keSddLFxuICAgICAgICBGb3JJblN0YXRlbWVudDogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvZHknXSxcbiAgICAgICAgRm9yT2ZTdGF0ZW1lbnQ6IFsnbGVmdCcsICdyaWdodCcsICdib2R5J10sXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IFsnaWQnLCAncGFyYW1zJywgJ2JvZHknXSxcbiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBbJ2lkJywgJ3BhcmFtcycsICdib2R5J10sXG4gICAgICAgIEdlbmVyYXRvckV4cHJlc3Npb246IFsnYmxvY2tzJywgJ2ZpbHRlcicsICdib2R5J10sICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgSWRlbnRpZmllcjogW10sXG4gICAgICAgIElmU3RhdGVtZW50OiBbJ3Rlc3QnLCAnY29uc2VxdWVudCcsICdhbHRlcm5hdGUnXSxcbiAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IFsnc3BlY2lmaWVycycsICdzb3VyY2UnXSxcbiAgICAgICAgSW1wb3J0RGVmYXVsdFNwZWNpZmllcjogWydsb2NhbCddLFxuICAgICAgICBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6IFsnbG9jYWwnXSxcbiAgICAgICAgSW1wb3J0U3BlY2lmaWVyOiBbJ2ltcG9ydGVkJywgJ2xvY2FsJ10sXG4gICAgICAgIExpdGVyYWw6IFtdLFxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiBbJ2xhYmVsJywgJ2JvZHknXSxcbiAgICAgICAgTG9naWNhbEV4cHJlc3Npb246IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiBbJ29iamVjdCcsICdwcm9wZXJ0eSddLFxuICAgICAgICBNZXRhUHJvcGVydHk6IFsnbWV0YScsICdwcm9wZXJ0eSddLFxuICAgICAgICBNZXRob2REZWZpbml0aW9uOiBbJ2tleScsICd2YWx1ZSddLFxuICAgICAgICBNb2R1bGVTcGVjaWZpZXI6IFtdLFxuICAgICAgICBOZXdFeHByZXNzaW9uOiBbJ2NhbGxlZScsICdhcmd1bWVudHMnXSxcbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogWydwcm9wZXJ0aWVzJ10sXG4gICAgICAgIE9iamVjdFBhdHRlcm46IFsncHJvcGVydGllcyddLFxuICAgICAgICBQcm9ncmFtOiBbJ2JvZHknXSxcbiAgICAgICAgUHJvcGVydHk6IFsna2V5JywgJ3ZhbHVlJ10sXG4gICAgICAgIFJlc3RFbGVtZW50OiBbICdhcmd1bWVudCcgXSxcbiAgICAgICAgUmV0dXJuU3RhdGVtZW50OiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogWydleHByZXNzaW9ucyddLFxuICAgICAgICBTcHJlYWRFbGVtZW50OiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFN1cGVyOiBbXSxcbiAgICAgICAgU3dpdGNoU3RhdGVtZW50OiBbJ2Rpc2NyaW1pbmFudCcsICdjYXNlcyddLFxuICAgICAgICBTd2l0Y2hDYXNlOiBbJ3Rlc3QnLCAnY29uc2VxdWVudCddLFxuICAgICAgICBUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246IFsndGFnJywgJ3F1YXNpJ10sXG4gICAgICAgIFRlbXBsYXRlRWxlbWVudDogW10sXG4gICAgICAgIFRlbXBsYXRlTGl0ZXJhbDogWydxdWFzaXMnLCAnZXhwcmVzc2lvbnMnXSxcbiAgICAgICAgVGhpc0V4cHJlc3Npb246IFtdLFxuICAgICAgICBUaHJvd1N0YXRlbWVudDogWydhcmd1bWVudCddLFxuICAgICAgICBUcnlTdGF0ZW1lbnQ6IFsnYmxvY2snLCAnaGFuZGxlcicsICdmaW5hbGl6ZXInXSxcbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246IFsnYXJndW1lbnQnXSxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogWydkZWNsYXJhdGlvbnMnXSxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiBbJ2lkJywgJ2luaXQnXSxcbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6IFsndGVzdCcsICdib2R5J10sXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6IFsnb2JqZWN0JywgJ2JvZHknXSxcbiAgICAgICAgWWllbGRFeHByZXNzaW9uOiBbJ2FyZ3VtZW50J11cbiAgICB9O1xuXG4gICAgLy8gdW5pcXVlIGlkXG4gICAgQlJFQUsgPSB7fTtcbiAgICBTS0lQID0ge307XG4gICAgUkVNT1ZFID0ge307XG5cbiAgICBWaXNpdG9yT3B0aW9uID0ge1xuICAgICAgICBCcmVhazogQlJFQUssXG4gICAgICAgIFNraXA6IFNLSVAsXG4gICAgICAgIFJlbW92ZTogUkVNT1ZFXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIFJlZmVyZW5jZShwYXJlbnQsIGtleSkge1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgUmVmZXJlbmNlLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZShub2RlKSB7XG4gICAgICAgIHRoaXMucGFyZW50W3RoaXMua2V5XSA9IG5vZGU7XG4gICAgfTtcblxuICAgIFJlZmVyZW5jZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICBpZiAoaXNBcnJheSh0aGlzLnBhcmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnNwbGljZSh0aGlzLmtleSwgMSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVwbGFjZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBFbGVtZW50KG5vZGUsIHBhdGgsIHdyYXAsIHJlZikge1xuICAgICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLndyYXAgPSB3cmFwO1xuICAgICAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBDb250cm9sbGVyKCkgeyB9XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmV0dXJuIHByb3BlcnR5IHBhdGggYXJyYXkgZnJvbSByb290IHRvIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbiBwYXRoKCkge1xuICAgICAgICB2YXIgaSwgaXosIGosIGp6LCByZXN1bHQsIGVsZW1lbnQ7XG5cbiAgICAgICAgZnVuY3Rpb24gYWRkVG9QYXRoKHJlc3VsdCwgcGF0aCkge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkocGF0aCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGogPSAwLCBqeiA9IHBhdGgubGVuZ3RoOyBqIDwgano7ICsraikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXRoW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gcm9vdCBub2RlXG4gICAgICAgIGlmICghdGhpcy5fX2N1cnJlbnQucGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmaXJzdCBub2RlIGlzIHNlbnRpbmVsLCBzZWNvbmQgbm9kZSBpcyByb290IGVsZW1lbnRcbiAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDIsIGl6ID0gdGhpcy5fX2xlYXZlbGlzdC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gdGhpcy5fX2xlYXZlbGlzdFtpXTtcbiAgICAgICAgICAgIGFkZFRvUGF0aChyZXN1bHQsIGVsZW1lbnQucGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkVG9QYXRoKHJlc3VsdCwgdGhpcy5fX2N1cnJlbnQucGF0aCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyByZXR1cm4gdHlwZSBvZiBjdXJyZW50IG5vZGVcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3VycmVudCgpO1xuICAgICAgICByZXR1cm4gbm9kZS50eXBlIHx8IHRoaXMuX19jdXJyZW50LndyYXA7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyByZXR1cm4gYXJyYXkgb2YgcGFyZW50IGVsZW1lbnRzXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucGFyZW50cyA9IGZ1bmN0aW9uIHBhcmVudHMoKSB7XG4gICAgICAgIHZhciBpLCBpeiwgcmVzdWx0O1xuXG4gICAgICAgIC8vIGZpcnN0IG5vZGUgaXMgc2VudGluZWxcbiAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDEsIGl6ID0gdGhpcy5fX2xlYXZlbGlzdC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLl9fbGVhdmVsaXN0W2ldLm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiBjdXJyZW50IG5vZGVcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gY3VycmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX19jdXJyZW50Lm5vZGU7XG4gICAgfTtcblxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl9fZXhlY3V0ZSA9IGZ1bmN0aW9uIF9fZXhlY3V0ZShjYWxsYmFjaywgZWxlbWVudCkge1xuICAgICAgICB2YXIgcHJldmlvdXMsIHJlc3VsdDtcblxuICAgICAgICByZXN1bHQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcHJldmlvdXMgID0gdGhpcy5fX2N1cnJlbnQ7XG4gICAgICAgIHRoaXMuX19jdXJyZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5fX3N0YXRlID0gbnVsbDtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjay5jYWxsKHRoaXMsIGVsZW1lbnQubm9kZSwgdGhpcy5fX2xlYXZlbGlzdFt0aGlzLl9fbGVhdmVsaXN0Lmxlbmd0aCAtIDFdLm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX19jdXJyZW50ID0gcHJldmlvdXM7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIG5vdGlmeSBjb250cm9sIHNraXAgLyBicmVha1xuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeShmbGFnKSB7XG4gICAgICAgIHRoaXMuX19zdGF0ZSA9IGZsYWc7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyBza2lwIGNoaWxkIG5vZGVzIG9mIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubm90aWZ5KFNLSVApO1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gYnJlYWsgdHJhdmVyc2Fsc1xuICAgIENvbnRyb2xsZXIucHJvdG90eXBlWydicmVhayddID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm5vdGlmeShCUkVBSyk7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyByZW1vdmUgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoUkVNT1ZFKTtcbiAgICB9O1xuXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX19pbml0aWFsaXplID0gZnVuY3Rpb24ocm9vdCwgdmlzaXRvcikge1xuICAgICAgICB0aGlzLnZpc2l0b3IgPSB2aXNpdG9yO1xuICAgICAgICB0aGlzLnJvb3QgPSByb290O1xuICAgICAgICB0aGlzLl9fd29ya2xpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5fX2xlYXZlbGlzdCA9IFtdO1xuICAgICAgICB0aGlzLl9fY3VycmVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuX19zdGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX19mYWxsYmFjayA9IG51bGw7XG4gICAgICAgIGlmICh2aXNpdG9yLmZhbGxiYWNrID09PSAnaXRlcmF0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5fX2ZhbGxiYWNrID0gb2JqZWN0S2V5cztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmlzaXRvci5mYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5fX2ZhbGxiYWNrID0gdmlzaXRvci5mYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX19rZXlzID0gVmlzaXRvcktleXM7XG4gICAgICAgIGlmICh2aXNpdG9yLmtleXMpIHtcbiAgICAgICAgICAgIHRoaXMuX19rZXlzID0gZXh0ZW5kKG9iamVjdENyZWF0ZSh0aGlzLl9fa2V5cyksIHZpc2l0b3Iua2V5cyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNOb2RlKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQcm9wZXJ0eShub2RlVHlwZSwga2V5KSB7XG4gICAgICAgIHJldHVybiAobm9kZVR5cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uIHx8IG5vZGVUeXBlID09PSBTeW50YXguT2JqZWN0UGF0dGVybikgJiYgJ3Byb3BlcnRpZXMnID09PSBrZXk7XG4gICAgfVxuXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciB3b3JrbGlzdCxcbiAgICAgICAgICAgIGxlYXZlbGlzdCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGUsXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgY3VycmVudDIsXG4gICAgICAgICAgICBjYW5kaWRhdGVzLFxuICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgc2VudGluZWw7XG5cbiAgICAgICAgdGhpcy5fX2luaXRpYWxpemUocm9vdCwgdmlzaXRvcik7XG5cbiAgICAgICAgc2VudGluZWwgPSB7fTtcblxuICAgICAgICAvLyByZWZlcmVuY2VcbiAgICAgICAgd29ya2xpc3QgPSB0aGlzLl9fd29ya2xpc3Q7XG4gICAgICAgIGxlYXZlbGlzdCA9IHRoaXMuX19sZWF2ZWxpc3Q7XG5cbiAgICAgICAgLy8gaW5pdGlhbGl6ZVxuICAgICAgICB3b3JrbGlzdC5wdXNoKG5ldyBFbGVtZW50KHJvb3QsIG51bGwsIG51bGwsIG51bGwpKTtcbiAgICAgICAgbGVhdmVsaXN0LnB1c2gobmV3IEVsZW1lbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCkpO1xuXG4gICAgICAgIHdoaWxlICh3b3JrbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB3b3JrbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT09IHNlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGxlYXZlbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgICAgIHJldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IubGVhdmUsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgcmV0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlKSB7XG5cbiAgICAgICAgICAgICAgICByZXQgPSB0aGlzLl9fZXhlY3V0ZSh2aXNpdG9yLmVudGVyLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IEJSRUFLIHx8IHJldCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goc2VudGluZWwpO1xuICAgICAgICAgICAgICAgIGxlYXZlbGlzdC5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gU0tJUCB8fCByZXQgPT09IFNLSVApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbm9kZSA9IGVsZW1lbnQubm9kZTtcbiAgICAgICAgICAgICAgICBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBlbGVtZW50LndyYXA7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19rZXlzW25vZGVUeXBlXTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX19mYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19mYWxsYmFjayhub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgJyArIG5vZGVUeXBlICsgJy4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQgLT0gMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVzW2N1cnJlbnRdO1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBub2RlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQyID0gY2FuZGlkYXRlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoY3VycmVudDIgLT0gMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlW2N1cnJlbnQyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvcGVydHkobm9kZVR5cGUsIGNhbmRpZGF0ZXNbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChjYW5kaWRhdGVbY3VycmVudDJdLCBba2V5LCBjdXJyZW50Ml0sICdQcm9wZXJ0eScsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKGNhbmRpZGF0ZVtjdXJyZW50Ml0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChjYW5kaWRhdGVbY3VycmVudDJdLCBba2V5LCBjdXJyZW50Ml0sIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKG5ldyBFbGVtZW50KGNhbmRpZGF0ZSwga2V5LCBudWxsLCBudWxsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2Uocm9vdCwgdmlzaXRvcikge1xuICAgICAgICB2YXIgd29ya2xpc3QsXG4gICAgICAgICAgICBsZWF2ZWxpc3QsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGUsXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgIGN1cnJlbnQyLFxuICAgICAgICAgICAgY2FuZGlkYXRlcyxcbiAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgIHNlbnRpbmVsLFxuICAgICAgICAgICAgb3V0ZXIsXG4gICAgICAgICAgICBrZXk7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlRWxlbShlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgbmV4dEVsZW0sXG4gICAgICAgICAgICAgICAgcGFyZW50O1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5yZWYucmVtb3ZlKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSByZWZlcmVuY2UgaXMgYW4gZWxlbWVudCBvZiBhbiBhcnJheS5cbiAgICAgICAgICAgICAgICBrZXkgPSBlbGVtZW50LnJlZi5rZXk7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbWVudC5yZWYucGFyZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgcmVtb3ZlZCBmcm9tIGFycmF5LCB0aGVuIGRlY3JlYXNlIGZvbGxvd2luZyBpdGVtcycga2V5cy5cbiAgICAgICAgICAgICAgICBpID0gd29ya2xpc3QubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEVsZW0gPSB3b3JrbGlzdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRFbGVtLnJlZiAmJiBuZXh0RWxlbS5yZWYucGFyZW50ID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICAobmV4dEVsZW0ucmVmLmtleSA8IGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLS1uZXh0RWxlbS5yZWYua2V5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fX2luaXRpYWxpemUocm9vdCwgdmlzaXRvcik7XG5cbiAgICAgICAgc2VudGluZWwgPSB7fTtcblxuICAgICAgICAvLyByZWZlcmVuY2VcbiAgICAgICAgd29ya2xpc3QgPSB0aGlzLl9fd29ya2xpc3Q7XG4gICAgICAgIGxlYXZlbGlzdCA9IHRoaXMuX19sZWF2ZWxpc3Q7XG5cbiAgICAgICAgLy8gaW5pdGlhbGl6ZVxuICAgICAgICBvdXRlciA9IHtcbiAgICAgICAgICAgIHJvb3Q6IHJvb3RcbiAgICAgICAgfTtcbiAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KHJvb3QsIG51bGwsIG51bGwsIG5ldyBSZWZlcmVuY2Uob3V0ZXIsICdyb290JykpO1xuICAgICAgICB3b3JrbGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICBsZWF2ZWxpc3QucHVzaChlbGVtZW50KTtcblxuICAgICAgICB3aGlsZSAod29ya2xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gd29ya2xpc3QucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50ID09PSBzZW50aW5lbCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBsZWF2ZWxpc3QucG9wKCk7XG5cbiAgICAgICAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9fZXhlY3V0ZSh2aXNpdG9yLmxlYXZlLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIC8vIG5vZGUgbWF5IGJlIHJlcGxhY2VkIHdpdGggbnVsbCxcbiAgICAgICAgICAgICAgICAvLyBzbyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHVuZGVmaW5lZCBhbmQgbnVsbCBpbiB0aGlzIHBsYWNlXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldCAhPT0gQlJFQUsgJiYgdGFyZ2V0ICE9PSBTS0lQICYmIHRhcmdldCAhPT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2VcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZWYucmVwbGFjZSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IFJFTU9WRSB8fCB0YXJnZXQgPT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVFbGVtKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IEJSRUFLIHx8IHRhcmdldCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dGVyLnJvb3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9fZXhlY3V0ZSh2aXNpdG9yLmVudGVyLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gbm9kZSBtYXkgYmUgcmVwbGFjZWQgd2l0aCBudWxsLFxuICAgICAgICAgICAgLy8gc28gZGlzdGluZ3Vpc2ggYmV0d2VlbiB1bmRlZmluZWQgYW5kIG51bGwgaW4gdGhpcyBwbGFjZVxuICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldCAhPT0gQlJFQUsgJiYgdGFyZ2V0ICE9PSBTS0lQICYmIHRhcmdldCAhPT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVwbGFjZVxuICAgICAgICAgICAgICAgIGVsZW1lbnQucmVmLnJlcGxhY2UodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm5vZGUgPSB0YXJnZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IFJFTU9WRSB8fCB0YXJnZXQgPT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUVsZW0oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5ub2RlID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgdGFyZ2V0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRlci5yb290O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBub2RlIG1heSBiZSBudWxsXG4gICAgICAgICAgICBub2RlID0gZWxlbWVudC5ub2RlO1xuICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goc2VudGluZWwpO1xuICAgICAgICAgICAgbGVhdmVsaXN0LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IFNLSVAgfHwgdGFyZ2V0ID09PSBTS0lQKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vZGVUeXBlID0gbm9kZS50eXBlIHx8IGVsZW1lbnQud3JhcDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSB0aGlzLl9fa2V5c1tub2RlVHlwZV07XG4gICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX2ZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSB0aGlzLl9fZmFsbGJhY2sobm9kZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdHlwZSAnICsgbm9kZVR5cGUgKyAnLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50IC09IDEpID49IDApIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVzW2N1cnJlbnRdO1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG5vZGVba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQyID0gY2FuZGlkYXRlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50MiAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVtjdXJyZW50Ml0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb3BlcnR5KG5vZGVUeXBlLCBjYW5kaWRhdGVzW2N1cnJlbnRdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChjYW5kaWRhdGVbY3VycmVudDJdLCBba2V5LCBjdXJyZW50Ml0sICdQcm9wZXJ0eScsIG5ldyBSZWZlcmVuY2UoY2FuZGlkYXRlLCBjdXJyZW50MikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoY2FuZGlkYXRlW2N1cnJlbnQyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQoY2FuZGlkYXRlW2N1cnJlbnQyXSwgW2tleSwgY3VycmVudDJdLCBudWxsLCBuZXcgUmVmZXJlbmNlKGNhbmRpZGF0ZSwgY3VycmVudDIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKG5ldyBFbGVtZW50KGNhbmRpZGF0ZSwga2V5LCBudWxsLCBuZXcgUmVmZXJlbmNlKG5vZGUsIGtleSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0ZXIucm9vdDtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdHJhdmVyc2Uocm9vdCwgdmlzaXRvcikge1xuICAgICAgICB2YXIgY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKCk7XG4gICAgICAgIHJldHVybiBjb250cm9sbGVyLnRyYXZlcnNlKHJvb3QsIHZpc2l0b3IpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uocm9vdCwgdmlzaXRvcikge1xuICAgICAgICB2YXIgY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKCk7XG4gICAgICAgIHJldHVybiBjb250cm9sbGVyLnJlcGxhY2Uocm9vdCwgdmlzaXRvcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kQ29tbWVudFJhbmdlKGNvbW1lbnQsIHRva2Vucykge1xuICAgICAgICB2YXIgdGFyZ2V0O1xuXG4gICAgICAgIHRhcmdldCA9IHVwcGVyQm91bmQodG9rZW5zLCBmdW5jdGlvbiBzZWFyY2godG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbi5yYW5nZVswXSA+IGNvbW1lbnQucmFuZ2VbMF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbW1lbnQuZXh0ZW5kZWRSYW5nZSA9IFtjb21tZW50LnJhbmdlWzBdLCBjb21tZW50LnJhbmdlWzFdXTtcblxuICAgICAgICBpZiAodGFyZ2V0ICE9PSB0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb21tZW50LmV4dGVuZGVkUmFuZ2VbMV0gPSB0b2tlbnNbdGFyZ2V0XS5yYW5nZVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldCAtPSAxO1xuICAgICAgICBpZiAodGFyZ2V0ID49IDApIHtcbiAgICAgICAgICAgIGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVswXSA9IHRva2Vuc1t0YXJnZXRdLnJhbmdlWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXR0YWNoQ29tbWVudHModHJlZSwgcHJvdmlkZWRDb21tZW50cywgdG9rZW5zKSB7XG4gICAgICAgIC8vIEF0IGZpcnN0LCB3ZSBzaG91bGQgY2FsY3VsYXRlIGV4dGVuZGVkIGNvbW1lbnQgcmFuZ2VzLlxuICAgICAgICB2YXIgY29tbWVudHMgPSBbXSwgY29tbWVudCwgbGVuLCBpLCBjdXJzb3I7XG5cbiAgICAgICAgaWYgKCF0cmVlLnJhbmdlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F0dGFjaENvbW1lbnRzIG5lZWRzIHJhbmdlIGluZm9ybWF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0b2tlbnMgYXJyYXkgaXMgZW1wdHksIHdlIGF0dGFjaCBjb21tZW50cyB0byB0cmVlIGFzICdsZWFkaW5nQ29tbWVudHMnXG4gICAgICAgIGlmICghdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVkQ29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbGVuID0gcHJvdmlkZWRDb21tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gZGVlcENvcHkocHJvdmlkZWRDb21tZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuZXh0ZW5kZWRSYW5nZSA9IFswLCB0cmVlLnJhbmdlWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJlZS5sZWFkaW5nQ29tbWVudHMgPSBjb21tZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gcHJvdmlkZWRDb21tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgY29tbWVudHMucHVzaChleHRlbmRDb21tZW50UmFuZ2UoZGVlcENvcHkocHJvdmlkZWRDb21tZW50c1tpXSksIHRva2VucykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBKb2huIEZyZWVtYW4ncyBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgY3Vyc29yID0gMDtcbiAgICAgICAgdHJhdmVyc2UodHJlZSwge1xuICAgICAgICAgICAgZW50ZXI6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbW1lbnQ7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBjb21tZW50c1tjdXJzb3JdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWVudC5leHRlbmRlZFJhbmdlWzFdID4gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWVudC5leHRlbmRlZFJhbmdlWzFdID09PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5zcGxpY2UoY3Vyc29yLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBvdXQgb2Ygb3duZWQgbm9kZVxuICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgPT09IGNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRvck9wdGlvbi5CcmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tbWVudHNbY3Vyc29yXS5leHRlbmRlZFJhbmdlWzBdID4gbm9kZS5yYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRvck9wdGlvbi5Ta2lwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY3Vyc29yID0gMDtcbiAgICAgICAgdHJhdmVyc2UodHJlZSwge1xuICAgICAgICAgICAgbGVhdmU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbW1lbnQ7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBjb21tZW50c1tjdXJzb3JdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5yYW5nZVsxXSA8IGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5yYW5nZVsxXSA9PT0gY29tbWVudC5leHRlbmRlZFJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUudHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudHJhaWxpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5zcGxpY2UoY3Vyc29yLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBvdXQgb2Ygb3duZWQgbm9kZVxuICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgPT09IGNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRvck9wdGlvbi5CcmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tbWVudHNbY3Vyc29yXS5leHRlbmRlZFJhbmdlWzBdID4gbm9kZS5yYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRvck9wdGlvbi5Ta2lwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgfVxuXG4gICAgZXhwb3J0cy52ZXJzaW9uID0gcmVxdWlyZSgnLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuICAgIGV4cG9ydHMuU3ludGF4ID0gU3ludGF4O1xuICAgIGV4cG9ydHMudHJhdmVyc2UgPSB0cmF2ZXJzZTtcbiAgICBleHBvcnRzLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGV4cG9ydHMuYXR0YWNoQ29tbWVudHMgPSBhdHRhY2hDb21tZW50cztcbiAgICBleHBvcnRzLlZpc2l0b3JLZXlzID0gVmlzaXRvcktleXM7XG4gICAgZXhwb3J0cy5WaXNpdG9yT3B0aW9uID0gVmlzaXRvck9wdGlvbjtcbiAgICBleHBvcnRzLkNvbnRyb2xsZXIgPSBDb250cm9sbGVyO1xuICAgIGV4cG9ydHMuY2xvbmVFbnZpcm9ubWVudCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsb25lKHt9KTsgfTtcblxuICAgIHJldHVybiBleHBvcnRzO1xufShleHBvcnRzKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9mcm9tXCI6IFwiZXN0cmF2ZXJzZUBeNC4yLjBcIixcbiAgXCJfaWRcIjogXCJlc3RyYXZlcnNlQDQuMi4wXCIsXG4gIFwiX2luQnVuZGxlXCI6IGZhbHNlLFxuICBcIl9pbnRlZ3JpdHlcIjogXCJzaGExLURlNC83VEg4MUdsaGpPYzBJSm44R3ZvTDJ4TT1cIixcbiAgXCJfbG9jYXRpb25cIjogXCIvc3RhdGljLWV2YWwvZXN0cmF2ZXJzZVwiLFxuICBcIl9waGFudG9tQ2hpbGRyZW5cIjoge30sXG4gIFwiX3JlcXVlc3RlZFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwicmFuZ2VcIixcbiAgICBcInJlZ2lzdHJ5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJlc3RyYXZlcnNlQF40LjIuMFwiLFxuICAgIFwibmFtZVwiOiBcImVzdHJhdmVyc2VcIixcbiAgICBcImVzY2FwZWROYW1lXCI6IFwiZXN0cmF2ZXJzZVwiLFxuICAgIFwicmF3U3BlY1wiOiBcIl40LjIuMFwiLFxuICAgIFwic2F2ZVNwZWNcIjogbnVsbCxcbiAgICBcImZldGNoU3BlY1wiOiBcIl40LjIuMFwiXG4gIH0sXG4gIFwiX3JlcXVpcmVkQnlcIjogW1xuICAgIFwiL3N0YXRpYy1ldmFsL2VzY29kZWdlblwiXG4gIF0sXG4gIFwiX3Jlc29sdmVkXCI6IFwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtNC4yLjAudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcIjBkZWUzZmVkMzFmY2Q0Njk2MThjZTczNDIwOTlmYzFhZmEwYmRiMTNcIixcbiAgXCJfc3BlY1wiOiBcImVzdHJhdmVyc2VAXjQuMi4wXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL2pjd2hpdGxvY2svZGV2ZWxvcG1lbnQvc3dheS9ub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzY29kZWdlblwiLFxuICBcImJ1Z3NcIjoge1xuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2VzdG9vbHMvZXN0cmF2ZXJzZS9pc3N1ZXNcIlxuICB9LFxuICBcImJ1bmRsZURlcGVuZGVuY2llc1wiOiBmYWxzZSxcbiAgXCJkZXByZWNhdGVkXCI6IGZhbHNlLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUNNQVNjcmlwdCBKUyBBU1QgdHJhdmVyc2FsIGZ1bmN0aW9uc1wiLFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJiYWJlbC1wcmVzZXQtZXMyMDE1XCI6IFwiXjYuMy4xM1wiLFxuICAgIFwiYmFiZWwtcmVnaXN0ZXJcIjogXCJeNi4zLjEzXCIsXG4gICAgXCJjaGFpXCI6IFwiXjIuMS4xXCIsXG4gICAgXCJlc3ByZWVcIjogXCJeMS4xMS4wXCIsXG4gICAgXCJndWxwXCI6IFwiXjMuOC4xMFwiLFxuICAgIFwiZ3VscC1idW1wXCI6IFwiXjAuMi4yXCIsXG4gICAgXCJndWxwLWZpbHRlclwiOiBcIl4yLjAuMFwiLFxuICAgIFwiZ3VscC1naXRcIjogXCJeMS4wLjFcIixcbiAgICBcImd1bHAtdGFnLXZlcnNpb25cIjogXCJeMS4yLjFcIixcbiAgICBcImpzaGludFwiOiBcIl4yLjUuNlwiLFxuICAgIFwibW9jaGFcIjogXCJeMi4xLjBcIlxuICB9LFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwibm9kZVwiOiBcIj49MC4xMC4wXCJcbiAgfSxcbiAgXCJob21lcGFnZVwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzdHJhdmVyc2VcIixcbiAgXCJsaWNlbnNlXCI6IFwiQlNELTItQ2xhdXNlXCIsXG4gIFwibWFpblwiOiBcImVzdHJhdmVyc2UuanNcIixcbiAgXCJtYWludGFpbmVyc1wiOiBbXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiWXVzdWtlIFN1enVraVwiLFxuICAgICAgXCJlbWFpbFwiOiBcInV0YXRhbmUudGVhQGdtYWlsLmNvbVwiLFxuICAgICAgXCJ1cmxcIjogXCJodHRwOi8vZ2l0aHViLmNvbS9Db25zdGVsbGF0aW9uXCJcbiAgICB9XG4gIF0sXG4gIFwibmFtZVwiOiBcImVzdHJhdmVyc2VcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9lc3Rvb2xzL2VzdHJhdmVyc2UuZ2l0XCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImxpbnRcIjogXCJqc2hpbnQgZXN0cmF2ZXJzZS5qc1wiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4tc2NyaXB0IGxpbnQgJiYgbnBtIHJ1bi1zY3JpcHQgdW5pdC10ZXN0XCIsXG4gICAgXCJ1bml0LXRlc3RcIjogXCJtb2NoYSAtLWNvbXBpbGVycyBqczpiYWJlbC1yZWdpc3RlclwiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjQuMi4wXCJcbn1cbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIGhhc05hdGl2ZU1hcCA9IHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCI7XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mIGFuIGFycmF5IGFuZCBhIHNldC4gQWRkaW5nIGEgbmV3XG4gKiBtZW1iZXIgaXMgTygxKSwgdGVzdGluZyBmb3IgbWVtYmVyc2hpcCBpcyBPKDEpLCBhbmQgZmluZGluZyB0aGUgaW5kZXggb2YgYW5cbiAqIGVsZW1lbnQgaXMgTygxKS4gUmVtb3ZpbmcgZWxlbWVudHMgZnJvbSB0aGUgc2V0IGlzIG5vdCBzdXBwb3J0ZWQuIE9ubHlcbiAqIHN0cmluZ3MgYXJlIHN1cHBvcnRlZCBmb3IgbWVtYmVyc2hpcC5cbiAqL1xuZnVuY3Rpb24gQXJyYXlTZXQoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NldCA9IGhhc05hdGl2ZU1hcCA/IG5ldyBNYXAoKSA6IE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5cbi8qKlxuICogU3RhdGljIG1ldGhvZCBmb3IgY3JlYXRpbmcgQXJyYXlTZXQgaW5zdGFuY2VzIGZyb20gYW4gZXhpc3RpbmcgYXJyYXkuXG4gKi9cbkFycmF5U2V0LmZyb21BcnJheSA9IGZ1bmN0aW9uIEFycmF5U2V0X2Zyb21BcnJheShhQXJyYXksIGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgdmFyIHNldCA9IG5ldyBBcnJheVNldCgpO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gYUFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc2V0LmFkZChhQXJyYXlbaV0sIGFBbGxvd0R1cGxpY2F0ZXMpO1xuICB9XG4gIHJldHVybiBzZXQ7XG59O1xuXG4vKipcbiAqIFJldHVybiBob3cgbWFueSB1bmlxdWUgaXRlbXMgYXJlIGluIHRoaXMgQXJyYXlTZXQuIElmIGR1cGxpY2F0ZXMgaGF2ZSBiZWVuXG4gKiBhZGRlZCwgdGhhbiB0aG9zZSBkbyBub3QgY291bnQgdG93YXJkcyB0aGUgc2l6ZS5cbiAqXG4gKiBAcmV0dXJucyBOdW1iZXJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBBcnJheVNldF9zaXplKCkge1xuICByZXR1cm4gaGFzTmF0aXZlTWFwID8gdGhpcy5fc2V0LnNpemUgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLl9zZXQpLmxlbmd0aDtcbn07XG5cbi8qKlxuICogQWRkIHRoZSBnaXZlbiBzdHJpbmcgdG8gdGhpcyBzZXQuXG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBBcnJheVNldF9hZGQoYVN0ciwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc1N0ciA9IGhhc05hdGl2ZU1hcCA/IGFTdHIgOiB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICB2YXIgaXNEdXBsaWNhdGUgPSBoYXNOYXRpdmVNYXAgPyB0aGlzLmhhcyhhU3RyKSA6IGhhcy5jYWxsKHRoaXMuX3NldCwgc1N0cik7XG4gIHZhciBpZHggPSB0aGlzLl9hcnJheS5sZW5ndGg7XG4gIGlmICghaXNEdXBsaWNhdGUgfHwgYUFsbG93RHVwbGljYXRlcykge1xuICAgIHRoaXMuX2FycmF5LnB1c2goYVN0cik7XG4gIH1cbiAgaWYgKCFpc0R1cGxpY2F0ZSkge1xuICAgIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICAgIHRoaXMuX3NldC5zZXQoYVN0ciwgaWR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0W3NTdHJdID0gaWR4O1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBJcyB0aGUgZ2l2ZW4gc3RyaW5nIGEgbWVtYmVyIG9mIHRoaXMgc2V0P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gQXJyYXlTZXRfaGFzKGFTdHIpIHtcbiAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgIHJldHVybiB0aGlzLl9zZXQuaGFzKGFTdHIpO1xuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICByZXR1cm4gaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXaGF0IGlzIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gc3RyaW5nIGluIHRoZSBhcnJheT9cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBBcnJheVNldF9pbmRleE9mKGFTdHIpIHtcbiAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgIHZhciBpZHggPSB0aGlzLl9zZXQuZ2V0KGFTdHIpO1xuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICByZXR1cm4gaWR4O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgaWYgKGhhcy5jYWxsKHRoaXMuX3NldCwgc1N0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXRbc1N0cl07XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU3RyICsgJ1wiIGlzIG5vdCBpbiB0aGUgc2V0LicpO1xufTtcblxuLyoqXG4gKiBXaGF0IGlzIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBpbmRleD9cbiAqXG4gKiBAcGFyYW0gTnVtYmVyIGFJZHhcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gQXJyYXlTZXRfYXQoYUlkeCkge1xuICBpZiAoYUlkeCA+PSAwICYmIGFJZHggPCB0aGlzLl9hcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyYXlbYUlkeF07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBlbGVtZW50IGluZGV4ZWQgYnkgJyArIGFJZHgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBhcnJheSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNldCAod2hpY2ggaGFzIHRoZSBwcm9wZXIgaW5kaWNlc1xuICogaW5kaWNhdGVkIGJ5IGluZGV4T2YpLiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvcHkgb2YgdGhlIGludGVybmFsIGFycmF5IHVzZWRcbiAqIGZvciBzdG9yaW5nIHRoZSBtZW1iZXJzIHNvIHRoYXQgbm8gb25lIGNhbiBtZXNzIHdpdGggaW50ZXJuYWwgc3RhdGUuXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfdG9BcnJheSgpIHtcbiAgcmV0dXJuIHRoaXMuX2FycmF5LnNsaWNlKCk7XG59O1xuXG5leHBvcnRzLkFycmF5U2V0ID0gQXJyYXlTZXQ7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4vLyBBIHNpbmdsZSBiYXNlIDY0IGRpZ2l0IGNhbiBjb250YWluIDYgYml0cyBvZiBkYXRhLiBGb3IgdGhlIGJhc2UgNjQgdmFyaWFibGVcbi8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4vLyBjb250aW51YXRpb24gYml0LiBUaGUgY29udGludWF0aW9uIGJpdCB0ZWxscyB1cyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlXG4vLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbi8vXG4vLyAgIENvbnRpbnVhdGlvblxuLy8gICB8ICAgIFNpZ25cbi8vICAgfCAgICB8XG4vLyAgIFYgICAgVlxuLy8gICAxMDEwMTFcblxudmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbi8vIGJpbmFyeTogMDExMTExXG52YXIgVkxRX0JBU0VfTUFTSyA9IFZMUV9CQVNFIC0gMTtcblxuLy8gYmluYXJ5OiAxMDAwMDBcbnZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4vKipcbiAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDEgYmVjb21lcyAyICgxMCBiaW5hcnkpLCAtMSBiZWNvbWVzIDMgKDExIGJpbmFyeSlcbiAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gKi9cbmZ1bmN0aW9uIHRvVkxRU2lnbmVkKGFWYWx1ZSkge1xuICByZXR1cm4gYVZhbHVlIDwgMFxuICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICA6IChhVmFsdWUgPDwgMSkgKyAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yXG4gKi9cbmZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHZhciBpc05lZ2F0aXZlID0gKGFWYWx1ZSAmIDEpID09PSAxO1xuICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgID8gLXNoaWZ0ZWRcbiAgICA6IHNoaWZ0ZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZW5jb2RlKGFWYWx1ZSkge1xuICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gIHZhciBkaWdpdDtcblxuICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVlKTtcblxuICBkbyB7XG4gICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgIHZscSA+Pj49IFZMUV9CQVNFX1NISUZUO1xuICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC5cbiAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgIH1cbiAgICBlbmNvZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpO1xuICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICByZXR1cm4gZW5jb2RlZDtcbn07XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB2aWEgdGhlIG91dCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICB2YXIgc3RyTGVuID0gYVN0ci5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAwO1xuICB2YXIgc2hpZnQgPSAwO1xuICB2YXIgY29udGludWF0aW9uLCBkaWdpdDtcblxuICBkbyB7XG4gICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKTtcbiAgICB9XG5cbiAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgaWYgKGRpZ2l0ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbiA9ICEhKGRpZ2l0ICYgVkxRX0NPTlRJTlVBVElPTl9CSVQpO1xuICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICBzaGlmdCArPSBWTFFfQkFTRV9TSElGVDtcbiAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gIGFPdXRQYXJhbS5yZXN0ID0gYUluZGV4O1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGludFRvQ2hhck1hcCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJy5zcGxpdCgnJyk7XG5cbi8qKlxuICogRW5jb2RlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIG9mIDAgdG8gNjMgdG8gYSBzaW5nbGUgYmFzZSA2NCBkaWdpdC5cbiAqL1xuZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIGlmICgwIDw9IG51bWJlciAmJiBudW1iZXIgPCBpbnRUb0NoYXJNYXAubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGludFRvQ2hhck1hcFtudW1iZXJdO1xuICB9XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGJldHdlZW4gMCBhbmQgNjM6IFwiICsgbnVtYmVyKTtcbn07XG5cbi8qKlxuICogRGVjb2RlIGEgc2luZ2xlIGJhc2UgNjQgY2hhcmFjdGVyIGNvZGUgZGlnaXQgdG8gYW4gaW50ZWdlci4gUmV0dXJucyAtMSBvblxuICogZmFpbHVyZS5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiAoY2hhckNvZGUpIHtcbiAgdmFyIGJpZ0EgPSA2NTsgICAgIC8vICdBJ1xuICB2YXIgYmlnWiA9IDkwOyAgICAgLy8gJ1onXG5cbiAgdmFyIGxpdHRsZUEgPSA5NzsgIC8vICdhJ1xuICB2YXIgbGl0dGxlWiA9IDEyMjsgLy8gJ3onXG5cbiAgdmFyIHplcm8gPSA0ODsgICAgIC8vICcwJ1xuICB2YXIgbmluZSA9IDU3OyAgICAgLy8gJzknXG5cbiAgdmFyIHBsdXMgPSA0MzsgICAgIC8vICcrJ1xuICB2YXIgc2xhc2ggPSA0NzsgICAgLy8gJy8nXG5cbiAgdmFyIGxpdHRsZU9mZnNldCA9IDI2O1xuICB2YXIgbnVtYmVyT2Zmc2V0ID0gNTI7XG5cbiAgLy8gMCAtIDI1OiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlxuICBpZiAoYmlnQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBiaWdaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGJpZ0EpO1xuICB9XG5cbiAgLy8gMjYgLSA1MTogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcbiAgaWYgKGxpdHRsZUEgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gbGl0dGxlWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBsaXR0bGVBICsgbGl0dGxlT2Zmc2V0KTtcbiAgfVxuXG4gIC8vIDUyIC0gNjE6IDAxMjM0NTY3ODlcbiAgaWYgKHplcm8gPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gbmluZSkge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSB6ZXJvICsgbnVtYmVyT2Zmc2V0KTtcbiAgfVxuXG4gIC8vIDYyOiArXG4gIGlmIChjaGFyQ29kZSA9PSBwbHVzKSB7XG4gICAgcmV0dXJuIDYyO1xuICB9XG5cbiAgLy8gNjM6IC9cbiAgaWYgKGNoYXJDb2RlID09IHNsYXNoKSB7XG4gICAgcmV0dXJuIDYzO1xuICB9XG5cbiAgLy8gSW52YWxpZCBiYXNlNjQgZGlnaXQuXG4gIHJldHVybiAtMTtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDE0IE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIG1hcHBpbmdCIGlzIGFmdGVyIG1hcHBpbmdBIHdpdGggcmVzcGVjdCB0byBnZW5lcmF0ZWRcbiAqIHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZWRQb3NpdGlvbkFmdGVyKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICAvLyBPcHRpbWl6ZWQgZm9yIG1vc3QgY29tbW9uIGNhc2VcbiAgdmFyIGxpbmVBID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGxpbmVCID0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGNvbHVtbkEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW47XG4gIHZhciBjb2x1bW5CID0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICByZXR1cm4gbGluZUIgPiBsaW5lQSB8fCBsaW5lQiA9PSBsaW5lQSAmJiBjb2x1bW5CID49IGNvbHVtbkEgfHxcbiAgICAgICAgIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSA8PSAwO1xufVxuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBhIHNvcnRlZCB2aWV3IG9mIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIGFcbiAqIHBlcmZvcm1hbmNlIGNvbnNjaW91cyBtYW5uZXIuIEl0IHRyYWRlcyBhIG5lZ2xpYmFibGUgb3ZlcmhlYWQgaW4gZ2VuZXJhbFxuICogY2FzZSBmb3IgYSBsYXJnZSBzcGVlZHVwIGluIGNhc2Ugb2YgbWFwcGluZ3MgYmVpbmcgYWRkZWQgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmdMaXN0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zb3J0ZWQgPSB0cnVlO1xuICAvLyBTZXJ2ZXMgYXMgaW5maW11bVxuICB0aGlzLl9sYXN0ID0ge2dlbmVyYXRlZExpbmU6IC0xLCBnZW5lcmF0ZWRDb2x1bW46IDB9O1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgdGhyb3VnaCBpbnRlcm5hbCBpdGVtcy4gVGhpcyBtZXRob2QgdGFrZXMgdGhlIHNhbWUgYXJndW1lbnRzIHRoYXRcbiAqIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgdGFrZXMuXG4gKlxuICogTk9URTogVGhlIG9yZGVyIG9mIHRoZSBtYXBwaW5ncyBpcyBOT1QgZ3VhcmFudGVlZC5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnVuc29ydGVkRm9yRWFjaCA9XG4gIGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2ZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZykge1xuICAgIHRoaXMuX2FycmF5LmZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZyk7XG4gIH07XG5cbi8qKlxuICogQWRkIHRoZSBnaXZlbiBzb3VyY2UgbWFwcGluZy5cbiAqXG4gKiBAcGFyYW0gT2JqZWN0IGFNYXBwaW5nXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF9hZGQoYU1hcHBpbmcpIHtcbiAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIodGhpcy5fbGFzdCwgYU1hcHBpbmcpKSB7XG4gICAgdGhpcy5fbGFzdCA9IGFNYXBwaW5nO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3NvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZsYXQsIHNvcnRlZCBhcnJheSBvZiBtYXBwaW5ncy4gVGhlIG1hcHBpbmdzIGFyZSBzb3J0ZWQgYnlcbiAqIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqXG4gKiBXQVJOSU5HOiBUaGlzIG1ldGhvZCByZXR1cm5zIGludGVybmFsIGRhdGEgd2l0aG91dCBjb3B5aW5nLCBmb3JcbiAqIHBlcmZvcm1hbmNlLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgTk9UIGJlIG11dGF0ZWQsIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBhc1xuICogYW4gaW1tdXRhYmxlIGJvcnJvdy4gSWYgeW91IHdhbnQgdG8gdGFrZSBvd25lcnNoaXAsIHlvdSBtdXN0IG1ha2UgeW91ciBvd25cbiAqIGNvcHkuXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gTWFwcGluZ0xpc3RfdG9BcnJheSgpIHtcbiAgaWYgKCF0aGlzLl9zb3J0ZWQpIHtcbiAgICB0aGlzLl9hcnJheS5zb3J0KHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQpO1xuICAgIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2FycmF5O1xufTtcblxuZXhwb3J0cy5NYXBwaW5nTGlzdCA9IE1hcHBpbmdMaXN0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG4vLyBJdCB0dXJucyBvdXQgdGhhdCBzb21lIChtb3N0PykgSmF2YVNjcmlwdCBlbmdpbmVzIGRvbid0IHNlbGYtaG9zdFxuLy8gYEFycmF5LnByb3RvdHlwZS5zb3J0YC4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIEMrKyB3aWxsIGxpa2VseSByZW1haW5cbi8vIGZhc3RlciB0aGFuIEpTIHdoZW4gZG9pbmcgcmF3IENQVS1pbnRlbnNpdmUgc29ydGluZy4gSG93ZXZlciwgd2hlbiB1c2luZyBhXG4vLyBjdXN0b20gY29tcGFyYXRvciBmdW5jdGlvbiwgY2FsbGluZyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBWTSdzIEMrKyBhbmRcbi8vIEpJVCdkIEpTIGlzIHJhdGhlciBzbG93ICphbmQqIGxvc2VzIEpJVCB0eXBlIGluZm9ybWF0aW9uLCByZXN1bHRpbmcgaW5cbi8vIHdvcnNlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgY29tcGFyYXRvciBmdW5jdGlvbiB0aGFuIHdvdWxkIGJlIG9wdGltYWwuIEluXG4vLyBmYWN0LCB3aGVuIHNvcnRpbmcgd2l0aCBhIGNvbXBhcmF0b3IsIHRoZXNlIGNvc3RzIG91dHdlaWdoIHRoZSBiZW5lZml0cyBvZlxuLy8gc29ydGluZyBpbiBDKysuIEJ5IHVzaW5nIG91ciBvd24gSlMtaW1wbGVtZW50ZWQgUXVpY2sgU29ydCAoYmVsb3cpLCB3ZSBnZXRcbi8vIGEgfjM1MDBtcyBtZWFuIHNwZWVkLXVwIGluIGBiZW5jaC9iZW5jaC5odG1sYC5cblxuLyoqXG4gKiBTd2FwIHRoZSBlbGVtZW50cyBpbmRleGVkIGJ5IGB4YCBhbmQgYHlgIGluIHRoZSBhcnJheSBgYXJ5YC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBUaGUgYXJyYXkuXG4gKiBAcGFyYW0ge051bWJlcn0geFxuICogICAgICAgIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgaXRlbS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB5XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBzZWNvbmQgaXRlbS5cbiAqL1xuZnVuY3Rpb24gc3dhcChhcnksIHgsIHkpIHtcbiAgdmFyIHRlbXAgPSBhcnlbeF07XG4gIGFyeVt4XSA9IGFyeVt5XTtcbiAgYXJ5W3ldID0gdGVtcDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgd2l0aGluIHRoZSByYW5nZSBgbG93IC4uIGhpZ2hgIGluY2x1c2l2ZS5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbG93XG4gKiAgICAgICAgVGhlIGxvd2VyIGJvdW5kIG9uIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBoaWdoXG4gKiAgICAgICAgVGhlIHVwcGVyIGJvdW5kIG9uIHRoZSByYW5nZS5cbiAqL1xuZnVuY3Rpb24gcmFuZG9tSW50SW5SYW5nZShsb3csIGhpZ2gpIHtcbiAgcmV0dXJuIE1hdGgucm91bmQobG93ICsgKE1hdGgucmFuZG9tKCkgKiAoaGlnaCAtIGxvdykpKTtcbn1cblxuLyoqXG4gKiBUaGUgUXVpY2sgU29ydCBhbGdvcml0aG0uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJ5XG4gKiAgICAgICAgQW4gYXJyYXkgdG8gc29ydC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbXBhcmF0b3JcbiAqICAgICAgICBGdW5jdGlvbiB0byB1c2UgdG8gY29tcGFyZSB0d28gaXRlbXMuXG4gKiBAcGFyYW0ge051bWJlcn0gcFxuICogICAgICAgIFN0YXJ0IGluZGV4IG9mIHRoZSBhcnJheVxuICogQHBhcmFtIHtOdW1iZXJ9IHJcbiAqICAgICAgICBFbmQgaW5kZXggb2YgdGhlIGFycmF5XG4gKi9cbmZ1bmN0aW9uIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgcCwgcikge1xuICAvLyBJZiBvdXIgbG93ZXIgYm91bmQgaXMgbGVzcyB0aGFuIG91ciB1cHBlciBib3VuZCwgd2UgKDEpIHBhcnRpdGlvbiB0aGVcbiAgLy8gYXJyYXkgaW50byB0d28gcGllY2VzIGFuZCAoMikgcmVjdXJzZSBvbiBlYWNoIGhhbGYuIElmIGl0IGlzIG5vdCwgdGhpcyBpc1xuICAvLyB0aGUgZW1wdHkgYXJyYXkgYW5kIG91ciBiYXNlIGNhc2UuXG5cbiAgaWYgKHAgPCByKSB7XG4gICAgLy8gKDEpIFBhcnRpdGlvbmluZy5cbiAgICAvL1xuICAgIC8vIFRoZSBwYXJ0aXRpb25pbmcgY2hvb3NlcyBhIHBpdm90IGJldHdlZW4gYHBgIGFuZCBgcmAgYW5kIG1vdmVzIGFsbFxuICAgIC8vIGVsZW1lbnRzIHRoYXQgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcGl2b3QgdG8gdGhlIGJlZm9yZSBpdCwgYW5kXG4gICAgLy8gYWxsIHRoZSBlbGVtZW50cyB0aGF0IGFyZSBncmVhdGVyIHRoYW4gaXQgYWZ0ZXIgaXQuIFRoZSBlZmZlY3QgaXMgdGhhdFxuICAgIC8vIG9uY2UgcGFydGl0aW9uIGlzIGRvbmUsIHRoZSBwaXZvdCBpcyBpbiB0aGUgZXhhY3QgcGxhY2UgaXQgd2lsbCBiZSB3aGVuXG4gICAgLy8gdGhlIGFycmF5IGlzIHB1dCBpbiBzb3J0ZWQgb3JkZXIsIGFuZCBpdCB3aWxsIG5vdCBuZWVkIHRvIGJlIG1vdmVkXG4gICAgLy8gYWdhaW4uIFRoaXMgcnVucyBpbiBPKG4pIHRpbWUuXG5cbiAgICAvLyBBbHdheXMgY2hvb3NlIGEgcmFuZG9tIHBpdm90IHNvIHRoYXQgYW4gaW5wdXQgYXJyYXkgd2hpY2ggaXMgcmV2ZXJzZVxuICAgIC8vIHNvcnRlZCBkb2VzIG5vdCBjYXVzZSBPKG5eMikgcnVubmluZyB0aW1lLlxuICAgIHZhciBwaXZvdEluZGV4ID0gcmFuZG9tSW50SW5SYW5nZShwLCByKTtcbiAgICB2YXIgaSA9IHAgLSAxO1xuXG4gICAgc3dhcChhcnksIHBpdm90SW5kZXgsIHIpO1xuICAgIHZhciBwaXZvdCA9IGFyeVtyXTtcblxuICAgIC8vIEltbWVkaWF0ZWx5IGFmdGVyIGBqYCBpcyBpbmNyZW1lbnRlZCBpbiB0aGlzIGxvb3AsIHRoZSBmb2xsb3dpbmcgaG9sZFxuICAgIC8vIHRydWU6XG4gICAgLy9cbiAgICAvLyAgICogRXZlcnkgZWxlbWVudCBpbiBgYXJ5W3AgLi4gaV1gIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcGl2b3QuXG4gICAgLy9cbiAgICAvLyAgICogRXZlcnkgZWxlbWVudCBpbiBgYXJ5W2krMSAuLiBqLTFdYCBpcyBncmVhdGVyIHRoYW4gdGhlIHBpdm90LlxuICAgIGZvciAodmFyIGogPSBwOyBqIDwgcjsgaisrKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnlbal0sIHBpdm90KSA8PSAwKSB7XG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgc3dhcChhcnksIGksIGopO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3YXAoYXJ5LCBpICsgMSwgaik7XG4gICAgdmFyIHEgPSBpICsgMTtcblxuICAgIC8vICgyKSBSZWN1cnNlIG9uIGVhY2ggaGFsZi5cblxuICAgIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgcCwgcSAtIDEpO1xuICAgIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgcSArIDEsIHIpO1xuICB9XG59XG5cbi8qKlxuICogU29ydCB0aGUgZ2l2ZW4gYXJyYXkgaW4tcGxhY2Ugd2l0aCB0aGUgZ2l2ZW4gY29tcGFyYXRvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqL1xuZXhwb3J0cy5xdWlja1NvcnQgPSBmdW5jdGlvbiAoYXJ5LCBjb21wYXJhdG9yKSB7XG4gIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgMCwgYXJ5Lmxlbmd0aCAtIDEpO1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBiaW5hcnlTZWFyY2ggPSByZXF1aXJlKCcuL2JpbmFyeS1zZWFyY2gnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgcXVpY2tTb3J0ID0gcmVxdWlyZSgnLi9xdWljay1zb3J0JykucXVpY2tTb3J0O1xuXG5mdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcihhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKSB7XG4gIHZhciBzb3VyY2VNYXAgPSBhU291cmNlTWFwO1xuICBpZiAodHlwZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgc291cmNlTWFwID0gdXRpbC5wYXJzZVNvdXJjZU1hcElucHV0KGFTb3VyY2VNYXApO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncykge1xuICAgICAgdGhpcy5fcGFyc2VNYXBwaW5ncyh0aGlzLl9tYXBwaW5ncywgdGhpcy5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzO1xuICB9XG59KTtcblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX29yaWdpbmFsTWFwcGluZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncykge1xuICAgICAgdGhpcy5fcGFyc2VNYXBwaW5ncyh0aGlzLl9tYXBwaW5ncywgdGhpcy5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fX29yaWdpbmFsTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBhU3RyLmNoYXJBdChpbmRleCk7XG4gICAgcmV0dXJuIGMgPT09IFwiO1wiIHx8IGMgPT09IFwiLFwiO1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgX3BhcnNlTWFwcGluZ3NcIik7XG4gIH07XG5cblNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUiA9IDE7XG5Tb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUiA9IDI7XG5cblNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgZWFjaCBtYXBwaW5nIGJldHdlZW4gYW4gb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uIGFuZCBhXG4gKiBnZW5lcmF0ZWQgbGluZS9jb2x1bW4gaW4gdGhpcyBzb3VyY2UgbWFwLlxuICpcbiAqIEBwYXJhbSBGdW5jdGlvbiBhQ2FsbGJhY2tcbiAqICAgICAgICBUaGUgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2l0aCBlYWNoIG1hcHBpbmcuXG4gKiBAcGFyYW0gT2JqZWN0IGFDb250ZXh0XG4gKiAgICAgICAgT3B0aW9uYWwuIElmIHNwZWNpZmllZCwgdGhpcyBvYmplY3Qgd2lsbCBiZSB0aGUgdmFsdWUgb2YgYHRoaXNgIGV2ZXJ5XG4gKiAgICAgICAgdGltZSB0aGF0IGBhQ2FsbGJhY2tgIGlzIGNhbGxlZC5cbiAqIEBwYXJhbSBhT3JkZXJcbiAqICAgICAgICBFaXRoZXIgYFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUmAgb3JcbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVJgLiBTcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCB0b1xuICogICAgICAgIGl0ZXJhdGUgb3ZlciB0aGUgbWFwcGluZ3Mgc29ydGVkIGJ5IHRoZSBnZW5lcmF0ZWQgZmlsZSdzIGxpbmUvY29sdW1uXG4gKiAgICAgICAgb3JkZXIgb3IgdGhlIG9yaWdpbmFsJ3Mgc291cmNlL2xpbmUvY29sdW1uIG9yZGVyLCByZXNwZWN0aXZlbHkuIERlZmF1bHRzIHRvXG4gKiAgICAgICAgYFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUmAuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5lYWNoTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2VhY2hNYXBwaW5nKGFDYWxsYmFjaywgYUNvbnRleHQsIGFPcmRlcikge1xuICAgIHZhciBjb250ZXh0ID0gYUNvbnRleHQgfHwgbnVsbDtcbiAgICB2YXIgb3JkZXIgPSBhT3JkZXIgfHwgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSO1xuXG4gICAgdmFyIG1hcHBpbmdzO1xuICAgIHN3aXRjaCAob3JkZXIpIHtcbiAgICBjYXNlIFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUjpcbiAgICAgIG1hcHBpbmdzID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gb3JkZXIgb2YgaXRlcmF0aW9uLlwiKTtcbiAgICB9XG5cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuc291cmNlUm9vdDtcbiAgICBtYXBwaW5ncy5tYXAoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBtYXBwaW5nLnNvdXJjZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgIHNvdXJjZSA9IHV0aWwuY29tcHV0ZVNvdXJjZVVSTChzb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uLFxuICAgICAgICBvcmlnaW5hbExpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgbmFtZTogbWFwcGluZy5uYW1lID09PSBudWxsID8gbnVsbCA6IHRoaXMuX25hbWVzLmF0KG1hcHBpbmcubmFtZSlcbiAgICAgIH07XG4gICAgfSwgdGhpcykuZm9yRWFjaChhQ2FsbGJhY2ssIGNvbnRleHQpO1xuICB9O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHByb3ZpZGVkLiBJZiBubyBjb2x1bW4gaXMgcHJvdmlkZWQsIHJldHVybnMgYWxsIG1hcHBpbmdzXG4gKiBjb3JyZXNwb25kaW5nIHRvIGEgZWl0aGVyIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yIG9yIHRoZSBuZXh0XG4gKiBjbG9zZXN0IGxpbmUgdGhhdCBoYXMgYW55IG1hcHBpbmdzLiBPdGhlcndpc2UsIHJldHVybnMgYWxsIG1hcHBpbmdzXG4gKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBsaW5lIGFuZCBlaXRoZXIgdGhlIGNvbHVtbiB3ZSBhcmUgc2VhcmNoaW5nIGZvclxuICogb3IgdGhlIG5leHQgY2xvc2VzdCBjb2x1bW4gdGhhdCBoYXMgYW55IG9mZnNldHMuXG4gKlxuICogVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBmaWxlbmFtZSBvZiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgIFRoZSBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKlxuICogYW5kIGFuIGFycmF5IG9mIG9iamVjdHMgaXMgcmV0dXJuZWQsIGVhY2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmFsbEdlbmVyYXRlZFBvc2l0aW9uc0ZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2FsbEdlbmVyYXRlZFBvc2l0aW9uc0ZvcihhQXJncykge1xuICAgIHZhciBsaW5lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyk7XG5cbiAgICAvLyBXaGVuIHRoZXJlIGlzIG5vIGV4YWN0IG1hdGNoLCBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmdcbiAgICAvLyByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBtYXBwaW5nIGxlc3MgdGhhbiB0aGUgbmVlZGxlLiBCeVxuICAgIC8vIHNldHRpbmcgbmVlZGxlLm9yaWdpbmFsQ29sdW1uIHRvIDAsIHdlIHRodXMgZmluZCB0aGUgbGFzdCBtYXBwaW5nIGZvclxuICAgIC8vIHRoZSBnaXZlbiBsaW5lLCBwcm92aWRlZCBzdWNoIGEgbWFwcGluZyBleGlzdHMuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSxcbiAgICAgIG9yaWdpbmFsTGluZTogbGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicsIDApXG4gICAgfTtcblxuICAgIG5lZWRsZS5zb3VyY2UgPSB0aGlzLl9maW5kU291cmNlSW5kZXgobmVlZGxlLnNvdXJjZSk7XG4gICAgaWYgKG5lZWRsZS5zb3VyY2UgPCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdmFyIG1hcHBpbmdzID0gW107XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhuZWVkbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsTGluZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChhQXJncy5jb2x1bW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgb3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG5cbiAgICAgICAgLy8gSXRlcmF0ZSB1bnRpbCBlaXRoZXIgd2UgcnVuIG91dCBvZiBtYXBwaW5ncywgb3Igd2UgcnVuIGludG9cbiAgICAgICAgLy8gYSBtYXBwaW5nIGZvciBhIGRpZmZlcmVudCBsaW5lIHRoYW4gdGhlIG9uZSB3ZSBmb3VuZC4gU2luY2VcbiAgICAgICAgLy8gbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBmb3VuZC5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IG9yaWdpbmFsTGluZSkge1xuICAgICAgICAgIG1hcHBpbmdzLnB1c2goe1xuICAgICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSxcbiAgICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbKytpbmRleF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBvcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgLy8gSXRlcmF0ZSB1bnRpbCBlaXRoZXIgd2UgcnVuIG91dCBvZiBtYXBwaW5ncywgb3Igd2UgcnVuIGludG9cbiAgICAgICAgLy8gYSBtYXBwaW5nIGZvciBhIGRpZmZlcmVudCBsaW5lIHRoYW4gdGhlIG9uZSB3ZSB3ZXJlIHNlYXJjaGluZyBmb3IuXG4gICAgICAgIC8vIFNpbmNlIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gbGluZSAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9PSBvcmlnaW5hbENvbHVtbikge1xuICAgICAgICAgIG1hcHBpbmdzLnB1c2goe1xuICAgICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSxcbiAgICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbKytpbmRleF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGluZ3M7XG4gIH07XG5cbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSBTb3VyY2VNYXBDb25zdW1lcjtcblxuLyoqXG4gKiBBIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5zdGFuY2UgcmVwcmVzZW50cyBhIHBhcnNlZCBzb3VyY2UgbWFwIHdoaWNoIHdlIGNhblxuICogcXVlcnkgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcmlnaW5hbCBmaWxlIHBvc2l0aW9ucyBieSBnaXZpbmcgaXQgYSBmaWxlXG4gKiBwb3NpdGlvbiBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqXG4gKiBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0P3BsaT0xI1xuICovXG5mdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgaWYgKHNvdXJjZVJvb3QpIHtcbiAgICBzb3VyY2VSb290ID0gdXRpbC5ub3JtYWxpemUoc291cmNlUm9vdCk7XG4gIH1cblxuICBzb3VyY2VzID0gc291cmNlc1xuICAgIC5tYXAoU3RyaW5nKVxuICAgIC8vIFNvbWUgc291cmNlIG1hcHMgcHJvZHVjZSByZWxhdGl2ZSBzb3VyY2UgcGF0aHMgbGlrZSBcIi4vZm9vLmpzXCIgaW5zdGVhZCBvZlxuICAgIC8vIFwiZm9vLmpzXCIuICBOb3JtYWxpemUgdGhlc2UgZmlyc3Qgc28gdGhhdCBmdXR1cmUgY29tcGFyaXNvbnMgd2lsbCBzdWNjZWVkLlxuICAgIC8vIFNlZSBidWd6aWwubGEvMTA5MDc2OC5cbiAgICAubWFwKHV0aWwubm9ybWFsaXplKVxuICAgIC8vIEFsd2F5cyBlbnN1cmUgdGhhdCBhYnNvbHV0ZSBzb3VyY2VzIGFyZSBpbnRlcm5hbGx5IHN0b3JlZCByZWxhdGl2ZSB0b1xuICAgIC8vIHRoZSBzb3VyY2Ugcm9vdCwgaWYgdGhlIHNvdXJjZSByb290IGlzIGFic29sdXRlLiBOb3QgZG9pbmcgdGhpcyB3b3VsZFxuICAgIC8vIGJlIHBhcnRpY3VsYXJseSBwcm9ibGVtYXRpYyB3aGVuIHRoZSBzb3VyY2Ugcm9vdCBpcyBhIHByZWZpeCBvZiB0aGVcbiAgICAvLyBzb3VyY2UgKHZhbGlkLCBidXQgd2h5Pz8pLiBTZWUgZ2l0aHViIGlzc3VlICMxOTkgYW5kIGJ1Z3ppbC5sYS8xMTg4OTgyLlxuICAgIC5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZVJvb3QgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZVJvb3QpICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2UpXG4gICAgICAgID8gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2UpXG4gICAgICAgIDogc291cmNlO1xuICAgIH0pO1xuXG4gIC8vIFBhc3MgYHRydWVgIGJlbG93IHRvIGFsbG93IGR1cGxpY2F0ZSBuYW1lcyBhbmQgc291cmNlcy4gV2hpbGUgc291cmNlIG1hcHNcbiAgLy8gYXJlIGludGVuZGVkIHRvIGJlIGNvbXByZXNzZWQgYW5kIGRlZHVwbGljYXRlZCwgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXJcbiAgLy8gc29tZXRpbWVzIGdlbmVyYXRlcyBzb3VyY2UgbWFwcyB3aXRoIGR1cGxpY2F0ZXMgaW4gdGhlbS4gU2VlIEdpdGh1YiBpc3N1ZVxuICAvLyAjNzIgYW5kIGJ1Z3ppbC5sYS84ODk0OTIuXG4gIHRoaXMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KG5hbWVzLm1hcChTdHJpbmcpLCB0cnVlKTtcbiAgdGhpcy5fc291cmNlcyA9IEFycmF5U2V0LmZyb21BcnJheShzb3VyY2VzLCB0cnVlKTtcblxuICB0aGlzLl9hYnNvbHV0ZVNvdXJjZXMgPSB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHMsIGFTb3VyY2VNYXBVUkwpO1xuICB9KTtcblxuICB0aGlzLnNvdXJjZVJvb3QgPSBzb3VyY2VSb290O1xuICB0aGlzLnNvdXJjZXNDb250ZW50ID0gc291cmNlc0NvbnRlbnQ7XG4gIHRoaXMuX21hcHBpbmdzID0gbWFwcGluZ3M7XG4gIHRoaXMuX3NvdXJjZU1hcFVSTCA9IGFTb3VyY2VNYXBVUkw7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG59XG5cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29uc3VtZXIgPSBTb3VyY2VNYXBDb25zdW1lcjtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGluZGV4IG9mIGEgc291cmNlLiAgUmV0dXJucyAtMSBpZiBub3RcbiAqIGZvdW5kLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZFNvdXJjZUluZGV4ID0gZnVuY3Rpb24oYVNvdXJjZSkge1xuICB2YXIgcmVsYXRpdmVTb3VyY2UgPSBhU291cmNlO1xuICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gIH1cblxuICBpZiAodGhpcy5fc291cmNlcy5oYXMocmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMuaW5kZXhPZihyZWxhdGl2ZVNvdXJjZSk7XG4gIH1cblxuICAvLyBNYXliZSBhU291cmNlIGlzIGFuIGFic29sdXRlIFVSTCBhcyByZXR1cm5lZCBieSB8c291cmNlc3wuICBJblxuICAvLyB0aGlzIGNhc2Ugd2UgY2FuJ3Qgc2ltcGx5IHVuZG8gdGhlIHRyYW5zZm9ybS5cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCB0aGlzLl9hYnNvbHV0ZVNvdXJjZXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAodGhpcy5fYWJzb2x1dGVTb3VyY2VzW2ldID09IGFTb3VyY2UpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEBwYXJhbSBTdHJpbmcgYVNvdXJjZU1hcFVSTFxuICogICAgICAgIFRoZSBVUkwgYXQgd2hpY2ggdGhlIHNvdXJjZSBtYXAgY2FuIGJlIGZvdW5kIChvcHRpb25hbClcbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcbiAgICBzbWMuX3NvdXJjZU1hcFVSTCA9IGFTb3VyY2VNYXBVUkw7XG4gICAgc21jLl9hYnNvbHV0ZVNvdXJjZXMgPSBzbWMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHV0aWwuY29tcHV0ZVNvdXJjZVVSTChzbWMuc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBCZWNhdXNlIHdlIGFyZSBtb2RpZnlpbmcgdGhlIGVudHJpZXMgKGJ5IGNvbnZlcnRpbmcgc3RyaW5nIHNvdXJjZXMgYW5kXG4gICAgLy8gbmFtZXMgdG8gaW5kaWNlcyBpbnRvIHRoZSBzb3VyY2VzIGFuZCBuYW1lcyBBcnJheVNldHMpLCB3ZSBoYXZlIHRvIG1ha2VcbiAgICAvLyBhIGNvcHkgb2YgdGhlIGVudHJ5IG9yIGVsc2UgYmFkIHRoaW5ncyBoYXBwZW4uIFNoYXJlZCBtdXRhYmxlIHN0YXRlXG4gICAgLy8gc3RyaWtlcyBhZ2FpbiEgU2VlIGdpdGh1YiBpc3N1ZSAjMTkxLlxuXG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gYVNvdXJjZU1hcC5fbWFwcGluZ3MudG9BcnJheSgpLnNsaWNlKCk7XG4gICAgdmFyIGRlc3RHZW5lcmF0ZWRNYXBwaW5ncyA9IHNtYy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIGRlc3RPcmlnaW5hbE1hcHBpbmdzID0gc21jLl9fb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdlbmVyYXRlZE1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc3JjTWFwcGluZyA9IGdlbmVyYXRlZE1hcHBpbmdzW2ldO1xuICAgICAgdmFyIGRlc3RNYXBwaW5nID0gbmV3IE1hcHBpbmc7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gc3JjTWFwcGluZy5nZW5lcmF0ZWRMaW5lO1xuICAgICAgZGVzdE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uID0gc3JjTWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG5cbiAgICAgIGlmIChzcmNNYXBwaW5nLnNvdXJjZSkge1xuICAgICAgICBkZXN0TWFwcGluZy5zb3VyY2UgPSBzb3VyY2VzLmluZGV4T2Yoc3JjTWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbExpbmUgPSBzcmNNYXBwaW5nLm9yaWdpbmFsTGluZTtcbiAgICAgICAgZGVzdE1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBzcmNNYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChzcmNNYXBwaW5nLm5hbWUpIHtcbiAgICAgICAgICBkZXN0TWFwcGluZy5uYW1lID0gbmFtZXMuaW5kZXhPZihzcmNNYXBwaW5nLm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzdE9yaWdpbmFsTWFwcGluZ3MucHVzaChkZXN0TWFwcGluZyk7XG4gICAgICB9XG5cbiAgICAgIGRlc3RHZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICB9XG5cbiAgICBxdWlja1NvcnQoc21jLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG5cbiAgICByZXR1cm4gc21jO1xuICB9O1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ3NvdXJjZXMnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVNvdXJjZXMuc2xpY2UoKTtcbiAgfVxufSk7XG5cbi8qKlxuICogUHJvdmlkZSB0aGUgSklUIHdpdGggYSBuaWNlIHNoYXBlIC8gaGlkZGVuIGNsYXNzLlxuICovXG5mdW5jdGlvbiBNYXBwaW5nKCkge1xuICB0aGlzLmdlbmVyYXRlZExpbmUgPSAwO1xuICB0aGlzLmdlbmVyYXRlZENvbHVtbiA9IDA7XG4gIHRoaXMuc291cmNlID0gbnVsbDtcbiAgdGhpcy5vcmlnaW5hbExpbmUgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsQ29sdW1uID0gbnVsbDtcbiAgdGhpcy5uYW1lID0gbnVsbDtcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHZhciBnZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsTGluZSA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHByZXZpb3VzTmFtZSA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IGFTdHIubGVuZ3RoO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNhY2hlZFNlZ21lbnRzID0ge307XG4gICAgdmFyIHRlbXAgPSB7fTtcbiAgICB2YXIgb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuICAgIHZhciBnZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHZhciBtYXBwaW5nLCBzdHIsIHNlZ21lbnQsIGVuZCwgdmFsdWU7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChhU3RyLmNoYXJBdChpbmRleCkgPT09ICc7Jykge1xuICAgICAgICBnZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJywnKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbWFwcGluZyA9IG5ldyBNYXBwaW5nKCk7XG4gICAgICAgIG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9IGdlbmVyYXRlZExpbmU7XG5cbiAgICAgICAgLy8gQmVjYXVzZSBlYWNoIG9mZnNldCBpcyBlbmNvZGVkIHJlbGF0aXZlIHRvIHRoZSBwcmV2aW91cyBvbmUsXG4gICAgICAgIC8vIG1hbnkgc2VnbWVudHMgb2Z0ZW4gaGF2ZSB0aGUgc2FtZSBlbmNvZGluZy4gV2UgY2FuIGV4cGxvaXQgdGhpc1xuICAgICAgICAvLyBmYWN0IGJ5IGNhY2hpbmcgdGhlIHBhcnNlZCB2YXJpYWJsZSBsZW5ndGggZmllbGRzIG9mIGVhY2ggc2VnbWVudCxcbiAgICAgICAgLy8gYWxsb3dpbmcgdXMgdG8gYXZvaWQgYSBzZWNvbmQgcGFyc2UgaWYgd2UgZW5jb3VudGVyIHRoZSBzYW1lXG4gICAgICAgIC8vIHNlZ21lbnQgYWdhaW4uXG4gICAgICAgIGZvciAoZW5kID0gaW5kZXg7IGVuZCA8IGxlbmd0aDsgZW5kKyspIHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhcklzTWFwcGluZ1NlcGFyYXRvcihhU3RyLCBlbmQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RyID0gYVN0ci5zbGljZShpbmRleCwgZW5kKTtcblxuICAgICAgICBzZWdtZW50ID0gY2FjaGVkU2VnbWVudHNbc3RyXTtcbiAgICAgICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgICAgICBpbmRleCArPSBzdHIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZ21lbnQgPSBbXTtcbiAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgIGJhc2U2NFZMUS5kZWNvZGUoYVN0ciwgaW5kZXgsIHRlbXApO1xuICAgICAgICAgICAgdmFsdWUgPSB0ZW1wLnZhbHVlO1xuICAgICAgICAgICAgaW5kZXggPSB0ZW1wLnJlc3Q7XG4gICAgICAgICAgICBzZWdtZW50LnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3VuZCBhIHNvdXJjZSwgYnV0IG5vIGxpbmUgYW5kIGNvbHVtbicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3VuZCBhIHNvdXJjZSBhbmQgbGluZSwgYnV0IG5vIGNvbHVtbicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhY2hlZFNlZ21lbnRzW3N0cl0gPSBzZWdtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VuZXJhdGVkIGNvbHVtbi5cbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiArIHNlZ21lbnRbMF07XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG5cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vIE9yaWdpbmFsIHNvdXJjZS5cbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHByZXZpb3VzU291cmNlICsgc2VnbWVudFsxXTtcbiAgICAgICAgICBwcmV2aW91c1NvdXJjZSArPSBzZWdtZW50WzFdO1xuXG4gICAgICAgICAgLy8gT3JpZ2luYWwgbGluZS5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IHByZXZpb3VzT3JpZ2luYWxMaW5lICsgc2VnbWVudFsyXTtcbiAgICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICAgIC8vIExpbmVzIGFyZSBzdG9yZWQgMC1iYXNlZFxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lICs9IDE7XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBjb2x1bW4uXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gKyBzZWdtZW50WzNdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgLy8gT3JpZ2luYWwgbmFtZS5cbiAgICAgICAgICAgIG1hcHBpbmcubmFtZSA9IHByZXZpb3VzTmFtZSArIHNlZ21lbnRbNF07XG4gICAgICAgICAgICBwcmV2aW91c05hbWUgKz0gc2VnbWVudFs0XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBnZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICBpZiAodHlwZW9mIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG9yaWdpbmFsTWFwcGluZ3MucHVzaChtYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydChnZW5lcmF0ZWRNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCk7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gZ2VuZXJhdGVkTWFwcGluZ3M7XG5cbiAgICBxdWlja1NvcnQob3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBvcmlnaW5hbE1hcHBpbmdzO1xuICB9O1xuXG4vKipcbiAqIEZpbmQgdGhlIG1hcHBpbmcgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGh5cG90aGV0aWNhbCBcIm5lZWRsZVwiIG1hcHBpbmcgdGhhdFxuICogd2UgYXJlIHNlYXJjaGluZyBmb3IgaW4gdGhlIGdpdmVuIFwiaGF5c3RhY2tcIiBvZiBtYXBwaW5ncy5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZmluZE1hcHBpbmcoYU5lZWRsZSwgYU1hcHBpbmdzLCBhTGluZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb2x1bW5OYW1lLCBhQ29tcGFyYXRvciwgYUJpYXMpIHtcbiAgICAvLyBUbyByZXR1cm4gdGhlIHBvc2l0aW9uIHdlIGFyZSBzZWFyY2hpbmcgZm9yLCB3ZSBtdXN0IGZpcnN0IGZpbmQgdGhlXG4gICAgLy8gbWFwcGluZyBmb3IgdGhlIGdpdmVuIHBvc2l0aW9uIGFuZCB0aGVuIHJldHVybiB0aGUgb3Bwb3NpdGUgcG9zaXRpb24gaXRcbiAgICAvLyBwb2ludHMgdG8uIEJlY2F1c2UgdGhlIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHdlIGNhbiB1c2UgYmluYXJ5IHNlYXJjaCB0b1xuICAgIC8vIGZpbmQgdGhlIGJlc3QgbWFwcGluZy5cblxuICAgIGlmIChhTmVlZGxlW2FMaW5lTmFtZV0gPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTGluZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLCBnb3QgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICArIGFOZWVkbGVbYUxpbmVOYW1lXSk7XG4gICAgfVxuICAgIGlmIChhTmVlZGxlW2FDb2x1bW5OYW1lXSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbHVtbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLCBnb3QgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICArIGFOZWVkbGVbYUNvbHVtbk5hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmluYXJ5U2VhcmNoLnNlYXJjaChhTmVlZGxlLCBhTWFwcGluZ3MsIGFDb21wYXJhdG9yLCBhQmlhcyk7XG4gIH07XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgbGFzdCBjb2x1bW4gZm9yIGVhY2ggZ2VuZXJhdGVkIG1hcHBpbmcuIFRoZSBsYXN0IGNvbHVtbiBpc1xuICogaW5jbHVzaXZlLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb21wdXRlQ29sdW1uU3BhbnMgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9jb21wdXRlQ29sdW1uU3BhbnMoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLmxlbmd0aDsgKytpbmRleCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIC8vIE1hcHBpbmdzIGRvIG5vdCBjb250YWluIGEgZmllbGQgZm9yIHRoZSBsYXN0IGdlbmVyYXRlZCBjb2x1bW50LiBXZVxuICAgICAgLy8gY2FuIGNvbWUgdXAgd2l0aCBhbiBvcHRpbWlzdGljIGVzdGltYXRlLCBob3dldmVyLCBieSBhc3N1bWluZyB0aGF0XG4gICAgICAvLyBtYXBwaW5ncyBhcmUgY29udGlndW91cyAoaS5lLiBnaXZlbiB0d28gY29uc2VjdXRpdmUgbWFwcGluZ3MsIHRoZVxuICAgICAgLy8gZmlyc3QgbWFwcGluZyBlbmRzIHdoZXJlIHRoZSBzZWNvbmQgb25lIHN0YXJ0cykuXG4gICAgICBpZiAoaW5kZXggKyAxIDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoKSB7XG4gICAgICAgIHZhciBuZXh0TWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4ICsgMV07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG1hcHBpbmcubGFzdEdlbmVyYXRlZENvbHVtbiA9IG5leHRNYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtIDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGxhc3QgbWFwcGluZyBmb3IgZWFjaCBsaW5lIHNwYW5zIHRoZSBlbnRpcmUgbGluZS5cbiAgICAgIG1hcHBpbmcubGFzdEdlbmVyYXRlZENvbHVtbiA9IEluZmluaXR5O1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqICAgLSBiaWFzOiBFaXRoZXIgJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKiAgICAgRGVmYXVsdHMgdG8gJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHRoaXMuc291cmNlUm9vdCwgc291cmNlLCB0aGlzLl9zb3VyY2VNYXBVUkwpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcobWFwcGluZywgJ25hbWUnLCBudWxsKTtcbiAgICAgICAgaWYgKG5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuYXQobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnb3JpZ2luYWxMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnb3JpZ2luYWxDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGwsXG4gICAgICBuYW1lOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXJfaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKSB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50Lmxlbmd0aCA+PSB0aGlzLl9zb3VyY2VzLnNpemUoKSAmJlxuICAgICAgIXRoaXMuc291cmNlc0NvbnRlbnQuc29tZShmdW5jdGlvbiAoc2MpIHsgcmV0dXJuIHNjID09IG51bGw7IH0pO1xuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50LiBUaGUgb25seSBhcmd1bWVudCBpcyB0aGUgdXJsIG9mIHRoZVxuICogb3JpZ2luYWwgc291cmNlIGZpbGUuIFJldHVybnMgbnVsbCBpZiBubyBvcmlnaW5hbCBzb3VyY2UgY29udGVudCBpc1xuICogYXZhaWxhYmxlLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfc291cmNlQ29udGVudEZvcihhU291cmNlLCBudWxsT25NaXNzaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kU291cmNlSW5kZXgoYVNvdXJjZSk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W2luZGV4XTtcbiAgICB9XG5cbiAgICB2YXIgcmVsYXRpdmVTb3VyY2UgPSBhU291cmNlO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgcmVsYXRpdmVTb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgcmVsYXRpdmVTb3VyY2UpO1xuICAgIH1cblxuICAgIHZhciB1cmw7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsXG4gICAgICAgICYmICh1cmwgPSB1dGlsLnVybFBhcnNlKHRoaXMuc291cmNlUm9vdCkpKSB7XG4gICAgICAvLyBYWFg6IGZpbGU6Ly8gVVJJcyBhbmQgYWJzb2x1dGUgcGF0aHMgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGZvclxuICAgICAgLy8gbWFueSB1c2Vycy4gV2UgY2FuIGhlbHAgdGhlbSBvdXQgd2hlbiB0aGV5IGV4cGVjdCBmaWxlOi8vIFVSSXMgdG9cbiAgICAgIC8vIGJlaGF2ZSBsaWtlIGl0IHdvdWxkIGlmIHRoZXkgd2VyZSBydW5uaW5nIGEgbG9jYWwgSFRUUCBzZXJ2ZXIuIFNlZVxuICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1NTk3LlxuICAgICAgdmFyIGZpbGVVcmlBYnNQYXRoID0gcmVsYXRpdmVTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIHJlbGF0aXZlU291cmNlKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoXCIvXCIgKyByZWxhdGl2ZVNvdXJjZSldO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCByZWN1cnNpdmVseSBmcm9tXG4gICAgLy8gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yLiBJbiB0aGF0IGNhc2UsIHdlXG4gICAgLy8gZG9uJ3Qgd2FudCB0byB0aHJvdyBpZiB3ZSBjYW4ndCBmaW5kIHRoZSBzb3VyY2UgLSB3ZSBqdXN0IHdhbnQgdG9cbiAgICAvLyByZXR1cm4gbnVsbCwgc28gd2UgcHJvdmlkZSBhIGZsYWcgdG8gZXhpdCBncmFjZWZ1bGx5LlxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIHJlbGF0aXZlU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXJcbiAqICAgICBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqICAgLSBiaWFzOiBFaXRoZXIgJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKiAgICAgRGVmYXVsdHMgdG8gJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuZ2VuZXJhdGVkUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpO1xuICAgIHNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChzb3VyY2UpO1xuICAgIGlmIChzb3VyY2UgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgYSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yIGFscmVhZHlcbiAqIHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgZm9yIGluZGV4ZWQgc291cmNlIG1hcHMsIHRoZXlcbiAqIGhhdmUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIGZpbGU6IE9wdGlvbmFsLiBUaGUgZ2VuZXJhdGVkIGZpbGUgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAqICAgLSBzZWN0aW9uczogQSBsaXN0IG9mIHNlY3Rpb24gZGVmaW5pdGlvbnMuXG4gKlxuICogRWFjaCB2YWx1ZSB1bmRlciB0aGUgXCJzZWN0aW9uc1wiIGZpZWxkIGhhcyB0d28gZmllbGRzOlxuICogICAtIG9mZnNldDogVGhlIG9mZnNldCBpbnRvIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWQgYXQgd2hpY2ggdGhpcyBzZWN0aW9uXG4gKiAgICAgICBiZWdpbnMgdG8gYXBwbHksIGRlZmluZWQgYXMgYW4gb2JqZWN0IHdpdGggYSBcImxpbmVcIiBhbmQgXCJjb2x1bW5cIlxuICogICAgICAgZmllbGQuXG4gKiAgIC0gbWFwOiBBIHNvdXJjZSBtYXAgZGVmaW5pdGlvbi4gVGhpcyBzb3VyY2UgbWFwIGNvdWxkIGFsc28gYmUgaW5kZXhlZCxcbiAqICAgICAgIGJ1dCBkb2Vzbid0IGhhdmUgdG8gYmUuXG4gKlxuICogSW5zdGVhZCBvZiB0aGUgXCJtYXBcIiBmaWVsZCwgaXQncyBhbHNvIHBvc3NpYmxlIHRvIGhhdmUgYSBcInVybFwiIGZpZWxkXG4gKiBzcGVjaWZ5aW5nIGEgVVJMIHRvIHJldHJpZXZlIGEgc291cmNlIG1hcCBmcm9tLCBidXQgdGhhdCdzIGN1cnJlbnRseVxuICogdW5zdXBwb3J0ZWQuXG4gKlxuICogSGVyZSdzIGFuIGV4YW1wbGUgc291cmNlIG1hcCwgdGFrZW4gZnJvbSB0aGUgc291cmNlIG1hcCBzcGVjWzBdLCBidXRcbiAqIG1vZGlmaWVkIHRvIG9taXQgYSBzZWN0aW9uIHdoaWNoIHVzZXMgdGhlIFwidXJsXCIgZmllbGQuXG4gKlxuICogIHtcbiAqICAgIHZlcnNpb24gOiAzLFxuICogICAgZmlsZTogXCJhcHAuanNcIixcbiAqICAgIHNlY3Rpb25zOiBbe1xuICogICAgICBvZmZzZXQ6IHtsaW5lOjEwMCwgY29sdW1uOjEwfSxcbiAqICAgICAgbWFwOiB7XG4gKiAgICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICAgZmlsZTogXCJzZWN0aW9uLmpzXCIsXG4gKiAgICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgIG5hbWVzOiBbXCJzcmNcIiwgXCJtYXBzXCIsIFwiYXJlXCIsIFwiZnVuXCJdLFxuICogICAgICAgIG1hcHBpbmdzOiBcIkFBQUEsRTs7QUJDREU7XCJcbiAqICAgICAgfVxuICogICAgfV0sXG4gKiAgfVxuICpcbiAqIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpZiBnaXZlbiwgaXMgYSBzdHJpbmcgd2hvc2UgdmFsdWUgaXMgdGhlIFVSTFxuICogYXQgd2hpY2ggdGhlIHNvdXJjZSBtYXAgd2FzIGZvdW5kLiAgVGhpcyBVUkwgaXMgdXNlZCB0byBjb21wdXRlIHRoZVxuICogc291cmNlcyBhcnJheS5cbiAqXG4gKiBbMF06IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVUxUkdBZWhRd1J5cFVUb3ZGMUtSbHBpT0Z6ZTBiLV8yZ2M2ZkFIMEtZMGsvZWRpdCNoZWFkaW5nPWguNTM1ZXMzeGVwcmd0XG4gKi9cbmZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcihhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKSB7XG4gIHZhciBzb3VyY2VNYXAgPSBhU291cmNlTWFwO1xuICBpZiAodHlwZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgc291cmNlTWFwID0gdXRpbC5wYXJzZVNvdXJjZU1hcElucHV0KGFTb3VyY2VNYXApO1xuICB9XG5cbiAgdmFyIHZlcnNpb24gPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICd2ZXJzaW9uJyk7XG4gIHZhciBzZWN0aW9ucyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NlY3Rpb25zJyk7XG5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgdGhpcy5fc291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICB0aGlzLl9uYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gIHZhciBsYXN0T2Zmc2V0ID0ge1xuICAgIGxpbmU6IC0xLFxuICAgIGNvbHVtbjogMFxuICB9O1xuICB0aGlzLl9zZWN0aW9ucyA9IHNlY3Rpb25zLm1hcChmdW5jdGlvbiAocykge1xuICAgIGlmIChzLnVybCkge1xuICAgICAgLy8gVGhlIHVybCBmaWVsZCB3aWxsIHJlcXVpcmUgc3VwcG9ydCBmb3IgYXN5bmNocm9uaWNpdHkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMTZcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3VwcG9ydCBmb3IgdXJsIGZpZWxkIGluIHNlY3Rpb25zIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgdmFyIG9mZnNldCA9IHV0aWwuZ2V0QXJnKHMsICdvZmZzZXQnKTtcbiAgICB2YXIgb2Zmc2V0TGluZSA9IHV0aWwuZ2V0QXJnKG9mZnNldCwgJ2xpbmUnKTtcbiAgICB2YXIgb2Zmc2V0Q29sdW1uID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnY29sdW1uJyk7XG5cbiAgICBpZiAob2Zmc2V0TGluZSA8IGxhc3RPZmZzZXQubGluZSB8fFxuICAgICAgICAob2Zmc2V0TGluZSA9PT0gbGFzdE9mZnNldC5saW5lICYmIG9mZnNldENvbHVtbiA8IGxhc3RPZmZzZXQuY29sdW1uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWN0aW9uIG9mZnNldHMgbXVzdCBiZSBvcmRlcmVkIGFuZCBub24tb3ZlcmxhcHBpbmcuJyk7XG4gICAgfVxuICAgIGxhc3RPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2VuZXJhdGVkT2Zmc2V0OiB7XG4gICAgICAgIC8vIFRoZSBvZmZzZXQgZmllbGRzIGFyZSAwLWJhc2VkLCBidXQgd2UgdXNlIDEtYmFzZWQgaW5kaWNlcyB3aGVuXG4gICAgICAgIC8vIGVuY29kaW5nL2RlY29kaW5nIGZyb20gVkxRLlxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBvZmZzZXRMaW5lICsgMSxcbiAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBvZmZzZXRDb2x1bW4gKyAxXG4gICAgICB9LFxuICAgICAgY29uc3VtZXI6IG5ldyBTb3VyY2VNYXBDb25zdW1lcih1dGlsLmdldEFyZyhzLCAnbWFwJyksIGFTb3VyY2VNYXBVUkwpXG4gICAgfVxuICB9KTtcbn1cblxuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTb3VyY2VNYXBDb25zdW1lcjtcblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNvdXJjZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuX3NlY3Rpb25zW2ldLmNvbnN1bWVyLnNvdXJjZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc291cmNlcy5wdXNoKHRoaXMuX3NlY3Rpb25zW2ldLmNvbnN1bWVyLnNvdXJjZXNbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc291cmNlcztcbiAgfVxufSk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlLCBsaW5lLCBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgZ2VuZXJhdGVkXG4gKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXJcbiAqICAgICBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuICBUaGUgY29sdW1uXG4gKiAgICAgbnVtYmVyIGlzIDAtYmFzZWQuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXJcbiAqICAgICBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLiBcbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAgIFRoZSBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuZ2VuZXJhdGVkUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICAvLyBPbmx5IGNvbnNpZGVyIHRoaXMgc2VjdGlvbiBpZiB0aGUgcmVxdWVzdGVkIHNvdXJjZSBpcyBpbiB0aGUgbGlzdCBvZlxuICAgICAgLy8gc291cmNlcyBvZiB0aGUgY29uc3VtZXIuXG4gICAgICBpZiAoc2VjdGlvbi5jb25zdW1lci5fZmluZFNvdXJjZUluZGV4KHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCwgc291cmNlLCB0aGlzLl9zb3VyY2VNYXBVUkwpO1xuICAgICAgICB0aGlzLl9zb3VyY2VzLmFkZChzb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmluZGV4T2Yoc291cmNlKTtcblxuICAgICAgICB2YXIgbmFtZSA9IG51bGw7XG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUpIHtcbiAgICAgICAgICBuYW1lID0gc2VjdGlvbi5jb25zdW1lci5fbmFtZXMuYXQobWFwcGluZy5uYW1lKTtcbiAgICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgbWFwcGluZ3MgY29taW5nIGZyb20gdGhlIGNvbnN1bWVyIGZvciB0aGUgc2VjdGlvbiBoYXZlXG4gICAgICAgIC8vIGdlbmVyYXRlZCBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZWN0aW9uLCBzbyB3ZVxuICAgICAgICAvLyBuZWVkIHRvIG9mZnNldCB0aGVtIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29uY2F0ZW5hdGVkXG4gICAgICAgIC8vIGdlbmVyYXRlZCBmaWxlLlxuICAgICAgICB2YXIgYWRqdXN0ZWRNYXBwaW5nID0ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGdlbmVyYXRlZExpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG1hcHBpbmcuZ2VuZXJhdGVkTGluZVxuICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICA6IDApLFxuICAgICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgb3JpZ2luYWxDb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKGFkanVzdGVkTWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgYWRqdXN0ZWRNYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncy5wdXNoKGFkanVzdGVkTWFwcGluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWlja1NvcnQodGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICBxdWlja1NvcnQodGhpcy5fX29yaWdpbmFsTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMpO1xuICB9O1xuXG5leHBvcnRzLkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciA9IEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcjtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbnZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG52YXIgTWFwcGluZ0xpc3QgPSByZXF1aXJlKCcuL21hcHBpbmctbGlzdCcpLk1hcHBpbmdMaXN0O1xuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAqIGJlaW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFlvdSBtYXkgcGFzcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nXG4gKiBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBmaWxlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncykge1xuICBpZiAoIWFBcmdzKSB7XG4gICAgYUFyZ3MgPSB7fTtcbiAgfVxuICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdGhpcy5fc2tpcFZhbGlkYXRpb24gPSB1dGlsLmdldEFyZyhhQXJncywgJ3NraXBWYWxpZGF0aW9uJywgZmFsc2UpO1xuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX21hcHBpbmdzID0gbmV3IE1hcHBpbmdMaXN0KCk7XG4gIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG59XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICB2YXIgZ2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5uYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRvci5hZGRNYXBwaW5nKG5ld01hcHBpbmcpO1xuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBzb3VyY2VSZWxhdGl2ZSA9IHNvdXJjZUZpbGU7XG4gICAgICBpZiAoc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VSZWxhdGl2ZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2VuZXJhdG9yLl9zb3VyY2VzLmhhcyhzb3VyY2VSZWxhdGl2ZSkpIHtcbiAgICAgICAgZ2VuZXJhdG9yLl9zb3VyY2VzLmFkZChzb3VyY2VSZWxhdGl2ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH07XG5cbi8qKlxuICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBmb3IgdGhpcyBzb3VyY2UgbWFwIGJlaW5nIGNyZWF0ZWQuIFRoZSBtYXBwaW5nXG4gKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBnZW5lcmF0ZWQ6IEFuIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAqICAgLSBuYW1lOiBBbiBvcHRpb25hbCBvcmlnaW5hbCB0b2tlbiBuYW1lIGZvciB0aGlzIG1hcHBpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hZGRNYXBwaW5nKGFBcmdzKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScsIG51bGwpO1xuICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291cmNlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IFN0cmluZyhzb3VyY2UpO1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmICghdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IGdlbmVyYXRlZC5jb2x1bW4sXG4gICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgbmFtZTogbmFtZVxuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHZhciBzb3VyY2UgPSBhU291cmNlRmlsZTtcbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IF9zb3VyY2VzQ29udGVudHMgbWFwIGlmIHRoZSBwcm9wZXJ0eSBpcyBudWxsLlxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBJZiB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAgaXMgZW1wdHksIHNldCB0aGUgcHJvcGVydHkgdG8gbnVsbC5cbiAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICogc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQuIEVhY2ggbWFwcGluZyB0byB0aGUgc3VwcGxpZWQgc291cmNlIGZpbGUgaXNcbiAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gKiAgICAgICAgSWYgb21pdHRlZCwgU291cmNlTWFwQ29uc3VtZXIncyBmaWxlIHByb3BlcnR5IHdpbGwgYmUgdXNlZC5cbiAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG5lZWRlZCB3aGVuIHRoZSB0d28gc291cmNlIG1hcHMgYXJlbid0IGluIHRoZSBzYW1lXG4gKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICogICAgICAgIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYXBwbHlTb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyLCBhU291cmNlRmlsZSwgYVNvdXJjZU1hcFBhdGgpIHtcbiAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICBpZiAoYVNvdXJjZUZpbGUgPT0gbnVsbCkge1xuICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwIHJlcXVpcmVzIGVpdGhlciBhbiBleHBsaWNpdCBzb3VyY2UgZmlsZSwgJyArXG4gICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgIH1cbiAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgIH1cbiAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgIC8vIHRoZSBuYW1lcyBhcnJheS5cbiAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgLy8gRmluZCBtYXBwaW5ncyBmb3IgdGhlIFwic291cmNlRmlsZVwiXG4gICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBpdCBjYW4gYmUgbWFwcGVkIGJ5IHRoZSBzb3VyY2UgbWFwLCB0aGVuIHVwZGF0ZSB0aGUgbWFwcGluZy5cbiAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ29weSBtYXBwaW5nXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5ld05hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXdTb3VyY2VzO1xuICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gKlxuICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICogICAzLiBHZW5lcmF0ZWQgYW5kIG9yaWdpbmFsIHBvc2l0aW9uLCBvcmlnaW5hbCBzb3VyY2UsIGFzIHdlbGwgYXMgYSBuYW1lXG4gKiAgICAgIHRva2VuLlxuICpcbiAqIFRvIG1haW50YWluIGNvbnNpc3RlbmN5LCB3ZSB2YWxpZGF0ZSB0aGF0IGFueSBuZXcgbWFwcGluZyBiZWluZyBhZGRlZCBmYWxsc1xuICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3ZhbGlkYXRlTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgLy8gV2hlbiBhT3JpZ2luYWwgaXMgdHJ1dGh5IGJ1dCBoYXMgZW1wdHkgdmFsdWVzIGZvciAubGluZSBhbmQgLmNvbHVtbixcbiAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IuIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhIHZlcnlcbiAgICAvLyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRyeSB0byBndWlkZSB0aGVtIHRoZSByaWdodCB3YXkuXG4gICAgLy8gRm9yIGV4YW1wbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BvbHltZXItYnVuZGxlci9wdWxsLzUxOVxuICAgIGlmIChhT3JpZ2luYWwgJiYgdHlwZW9mIGFPcmlnaW5hbC5saW5lICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYU9yaWdpbmFsLmNvbHVtbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ29yaWdpbmFsLmxpbmUgYW5kIG9yaWdpbmFsLmNvbHVtbiBhcmUgbm90IG51bWJlcnMgLS0geW91IHByb2JhYmx5IG1lYW50IHRvIG9taXQgJyArXG4gICAgICAgICAgICAndGhlIG9yaWdpbmFsIG1hcHBpbmcgZW50aXJlbHkgYW5kIG9ubHkgbWFwIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uIElmIHNvLCBwYXNzICcgK1xuICAgICAgICAgICAgJ251bGwgZm9yIHRoZSBvcmlnaW5hbCBtYXBwaW5nIGluc3RlYWQgb2YgYW4gb2JqZWN0IHdpdGggZW1wdHkgb3IgbnVsbCB2YWx1ZXMuJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICYmICFhT3JpZ2luYWwgJiYgIWFTb3VyY2UgJiYgIWFOYW1lKSB7XG4gICAgICAvLyBDYXNlIDEuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAvLyBDYXNlcyAyIGFuZCAzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgIHNvdXJjZTogYVNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbmV4dDtcbiAgICB2YXIgbWFwcGluZztcbiAgICB2YXIgbmFtZUlkeDtcbiAgICB2YXIgc291cmNlSWR4O1xuXG4gICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbWFwcGluZyA9IG1hcHBpbmdzW2ldO1xuICAgICAgbmV4dCA9ICcnXG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5leHQgKz0gJzsnO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0ICs9ICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKHNvdXJjZUlkeCAtIHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMTtcblxuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuYW1lSWR4ID0gdGhpcy5fbmFtZXMuaW5kZXhPZihtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICBwcmV2aW91c05hbWUgPSBuYW1lSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICByZXR1cm4gYVNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cywga2V5KVxuICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9KU09OKCkge1xuICAgIHZhciBtYXAgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgc291cmNlczogdGhpcy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGdldHRpbmcgdmFsdWVzIGZyb20gcGFyYW1ldGVyL29wdGlvbnNcbiAqIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIGFyZ3MgVGhlIG9iamVjdCB3ZSBhcmUgZXh0cmFjdGluZyB2YWx1ZXMgZnJvbVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBnZXR0aW5nLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBBbiBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmdcbiAqIGZyb20gdGhlIG9iamVjdC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgcHJvcGVydHkgaXMgbWlzc2luZywgYW5cbiAqIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBnZXRBcmcoYUFyZ3MsIGFOYW1lLCBhRGVmYXVsdFZhbHVlKSB7XG4gIGlmIChhTmFtZSBpbiBhQXJncykge1xuICAgIHJldHVybiBhQXJnc1thTmFtZV07XG4gIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBhRGVmYXVsdFZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYU5hbWUgKyAnXCIgaXMgYSByZXF1aXJlZCBhcmd1bWVudC4nKTtcbiAgfVxufVxuZXhwb3J0cy5nZXRBcmcgPSBnZXRBcmc7XG5cbnZhciB1cmxSZWdleHAgPSAvXig/OihbXFx3K1xcLS5dKyk6KT9cXC9cXC8oPzooXFx3KzpcXHcrKUApPyhbXFx3Li1dKikoPzo6KFxcZCspKT8oLiopJC87XG52YXIgZGF0YVVybFJlZ2V4cCA9IC9eZGF0YTouK1xcLC4rJC87XG5cbmZ1bmN0aW9uIHVybFBhcnNlKGFVcmwpIHtcbiAgdmFyIG1hdGNoID0gYVVybC5tYXRjaCh1cmxSZWdleHApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY2hlbWU6IG1hdGNoWzFdLFxuICAgIGF1dGg6IG1hdGNoWzJdLFxuICAgIGhvc3Q6IG1hdGNoWzNdLFxuICAgIHBvcnQ6IG1hdGNoWzRdLFxuICAgIHBhdGg6IG1hdGNoWzVdXG4gIH07XG59XG5leHBvcnRzLnVybFBhcnNlID0gdXJsUGFyc2U7XG5cbmZ1bmN0aW9uIHVybEdlbmVyYXRlKGFQYXJzZWRVcmwpIHtcbiAgdmFyIHVybCA9ICcnO1xuICBpZiAoYVBhcnNlZFVybC5zY2hlbWUpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5zY2hlbWUgKyAnOic7XG4gIH1cbiAgdXJsICs9ICcvLyc7XG4gIGlmIChhUGFyc2VkVXJsLmF1dGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5hdXRoICsgJ0AnO1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLmhvc3QpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5ob3N0O1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBvcnQpIHtcbiAgICB1cmwgKz0gXCI6XCIgKyBhUGFyc2VkVXJsLnBvcnRcbiAgfVxuICBpZiAoYVBhcnNlZFVybC5wYXRoKSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwucGF0aDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuZXhwb3J0cy51cmxHZW5lcmF0ZSA9IHVybEdlbmVyYXRlO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCBvciB0aGUgcGF0aCBwb3J0aW9uIG9mIGEgVVJMOlxuICpcbiAqIC0gUmVwbGFjZXMgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIG9uZSBzbGFzaC5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnLicgcGFydHMuXG4gKiAtIFJlbW92ZXMgdW5uZWNlc3NhcnkgJzxkaXI+Ly4uJyBwYXJ0cy5cbiAqXG4gKiBCYXNlZCBvbiBjb2RlIGluIHRoZSBOb2RlLmpzICdwYXRoJyBjb3JlIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgdXJsIHRvIG5vcm1hbGl6ZS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKGFQYXRoKSB7XG4gIHZhciBwYXRoID0gYVBhdGg7XG4gIHZhciB1cmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIGlmICh1cmwpIHtcbiAgICBpZiAoIXVybC5wYXRoKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuICAgIHBhdGggPSB1cmwucGF0aDtcbiAgfVxuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKTtcblxuICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KC9cXC8rLyk7XG4gIGZvciAodmFyIHBhcnQsIHVwID0gMCwgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgcGFydCA9IHBhcnRzW2ldO1xuICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCA+IDApIHtcbiAgICAgIGlmIChwYXJ0ID09PSAnJykge1xuICAgICAgICAvLyBUaGUgZmlyc3QgcGFydCBpcyBibGFuayBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZS4gVHJ5aW5nIHRvIGdvXG4gICAgICAgIC8vIGFib3ZlIHRoZSByb290IGlzIGEgbm8tb3AuIFRoZXJlZm9yZSB3ZSBjYW4gcmVtb3ZlIGFsbCAnLi4nIHBhcnRzXG4gICAgICAgIC8vIGRpcmVjdGx5IGFmdGVyIHRoZSByb290LlxuICAgICAgICBwYXJ0cy5zcGxpY2UoaSArIDEsIHVwKTtcbiAgICAgICAgdXAgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMuc3BsaWNlKGksIDIpO1xuICAgICAgICB1cC0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gIGlmIChwYXRoID09PSAnJykge1xuICAgIHBhdGggPSBpc0Fic29sdXRlID8gJy8nIDogJy4nO1xuICB9XG5cbiAgaWYgKHVybCkge1xuICAgIHVybC5wYXRoID0gcGF0aDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUodXJsKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG4vKipcbiAqIEpvaW5zIHR3byBwYXRocy9VUkxzLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgam9pbmVkIHdpdGggdGhlIHJvb3QuXG4gKlxuICogLSBJZiBhUGF0aCBpcyBhIFVSTCBvciBhIGRhdGEgVVJJLCBhUGF0aCBpcyByZXR1cm5lZCwgdW5sZXNzIGFQYXRoIGlzIGFcbiAqICAgc2NoZW1lLXJlbGF0aXZlIFVSTDogVGhlbiB0aGUgc2NoZW1lIG9mIGFSb290LCBpZiBhbnksIGlzIHByZXBlbmRlZFxuICogICBmaXJzdC5cbiAqIC0gT3RoZXJ3aXNlIGFQYXRoIGlzIGEgcGF0aC4gSWYgYVJvb3QgaXMgYSBVUkwsIHRoZW4gaXRzIHBhdGggcG9ydGlvblxuICogICBpcyB1cGRhdGVkIHdpdGggdGhlIHJlc3VsdCBhbmQgYVJvb3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSB0aGUgcmVzdWx0XG4gKiAgIGlzIHJldHVybmVkLlxuICogICAtIElmIGFQYXRoIGlzIGFic29sdXRlLCB0aGUgcmVzdWx0IGlzIGFQYXRoLlxuICogICAtIE90aGVyd2lzZSB0aGUgdHdvIHBhdGhzIGFyZSBqb2luZWQgd2l0aCBhIHNsYXNoLlxuICogLSBKb2luaW5nIGZvciBleGFtcGxlICdodHRwOi8vJyBhbmQgJ3d3dy5leGFtcGxlLmNvbScgaXMgYWxzbyBzdXBwb3J0ZWQuXG4gKi9cbmZ1bmN0aW9uIGpvaW4oYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cbiAgaWYgKGFQYXRoID09PSBcIlwiKSB7XG4gICAgYVBhdGggPSBcIi5cIjtcbiAgfVxuICB2YXIgYVBhdGhVcmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIHZhciBhUm9vdFVybCA9IHVybFBhcnNlKGFSb290KTtcbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3QgPSBhUm9vdFVybC5wYXRoIHx8ICcvJztcbiAgfVxuXG4gIC8vIGBqb2luKGZvbywgJy8vd3d3LmV4YW1wbGUub3JnJylgXG4gIGlmIChhUGF0aFVybCAmJiAhYVBhdGhVcmwuc2NoZW1lKSB7XG4gICAgaWYgKGFSb290VXJsKSB7XG4gICAgICBhUGF0aFVybC5zY2hlbWUgPSBhUm9vdFVybC5zY2hlbWU7XG4gICAgfVxuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUGF0aFVybCk7XG4gIH1cblxuICBpZiAoYVBhdGhVcmwgfHwgYVBhdGgubWF0Y2goZGF0YVVybFJlZ2V4cCkpIHtcbiAgICByZXR1cm4gYVBhdGg7XG4gIH1cblxuICAvLyBgam9pbignaHR0cDovLycsICd3d3cuZXhhbXBsZS5jb20nKWBcbiAgaWYgKGFSb290VXJsICYmICFhUm9vdFVybC5ob3N0ICYmICFhUm9vdFVybC5wYXRoKSB7XG4gICAgYVJvb3RVcmwuaG9zdCA9IGFQYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cblxuICB2YXIgam9pbmVkID0gYVBhdGguY2hhckF0KDApID09PSAnLydcbiAgICA/IGFQYXRoXG4gICAgOiBub3JtYWxpemUoYVJvb3QucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyBhUGF0aCk7XG5cbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3RVcmwucGF0aCA9IGpvaW5lZDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICB9XG4gIHJldHVybiBqb2luZWQ7XG59XG5leHBvcnRzLmpvaW4gPSBqb2luO1xuXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbiAoYVBhdGgpIHtcbiAgcmV0dXJuIGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nIHx8IHVybFJlZ2V4cC50ZXN0KGFQYXRoKTtcbn07XG5cbi8qKlxuICogTWFrZSBhIHBhdGggcmVsYXRpdmUgdG8gYSBVUkwgb3IgYW5vdGhlciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgbWFkZSByZWxhdGl2ZSB0byBhUm9vdC5cbiAqL1xuZnVuY3Rpb24gcmVsYXRpdmUoYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cblxuICBhUm9vdCA9IGFSb290LnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBwYXRoIHRvIGJlIGFib3ZlIHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNpbXBseVxuICAvLyBjaGVja2luZyB3aGV0aGVyIHRoZSByb290IGlzIGEgcHJlZml4IG9mIHRoZSBwYXRoIHdvbid0IHdvcmsuIEluc3RlYWQsIHdlXG4gIC8vIG5lZWQgdG8gcmVtb3ZlIGNvbXBvbmVudHMgZnJvbSB0aGUgcm9vdCBvbmUgYnkgb25lLCB1bnRpbCBlaXRoZXIgd2UgZmluZFxuICAvLyBhIHByZWZpeCB0aGF0IGZpdHMsIG9yIHdlIHJ1biBvdXQgb2YgY29tcG9uZW50cyB0byByZW1vdmUuXG4gIHZhciBsZXZlbCA9IDA7XG4gIHdoaWxlIChhUGF0aC5pbmRleE9mKGFSb290ICsgJy8nKSAhPT0gMCkge1xuICAgIHZhciBpbmRleCA9IGFSb290Lmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9ubHkgcGFydCBvZiB0aGUgcm9vdCB0aGF0IGlzIGxlZnQgaXMgdGhlIHNjaGVtZSAoaS5lLiBodHRwOi8vLFxuICAgIC8vIGZpbGU6Ly8vLCBldGMuKSwgb25lIG9yIG1vcmUgc2xhc2hlcyAoLyksIG9yIHNpbXBseSBub3RoaW5nIGF0IGFsbCwgd2VcbiAgICAvLyBoYXZlIGV4aGF1c3RlZCBhbGwgY29tcG9uZW50cywgc28gdGhlIHBhdGggaXMgbm90IHJlbGF0aXZlIHRvIHRoZSByb290LlxuICAgIGFSb290ID0gYVJvb3Quc2xpY2UoMCwgaW5kZXgpO1xuICAgIGlmIChhUm9vdC5tYXRjaCgvXihbXlxcL10rOlxcLyk/XFwvKiQvKSkge1xuICAgICAgcmV0dXJuIGFQYXRoO1xuICAgIH1cblxuICAgICsrbGV2ZWw7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgd2UgYWRkIGEgXCIuLi9cIiBmb3IgZWFjaCBjb21wb25lbnQgd2UgcmVtb3ZlZCBmcm9tIHRoZSByb290LlxuICByZXR1cm4gQXJyYXkobGV2ZWwgKyAxKS5qb2luKFwiLi4vXCIpICsgYVBhdGguc3Vic3RyKGFSb290Lmxlbmd0aCArIDEpO1xufVxuZXhwb3J0cy5yZWxhdGl2ZSA9IHJlbGF0aXZlO1xuXG52YXIgc3VwcG9ydHNOdWxsUHJvdG8gPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuICEoJ19fcHJvdG9fXycgaW4gb2JqKTtcbn0oKSk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5IChzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vKipcbiAqIEJlY2F1c2UgYmVoYXZpb3IgZ29lcyB3YWNreSB3aGVuIHlvdSBzZXQgYF9fcHJvdG9fX2Agb24gb2JqZWN0cywgd2VcbiAqIGhhdmUgdG8gcHJlZml4IGFsbCB0aGUgc3RyaW5ncyBpbiBvdXIgc2V0IHdpdGggYW4gYXJiaXRyYXJ5IGNoYXJhY3Rlci5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9wdWxsLzMxIGFuZFxuICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMzBcbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuZnVuY3Rpb24gdG9TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiAnJCcgKyBhU3RyO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLnRvU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IHRvU2V0U3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tU2V0U3RyaW5nKGFTdHIpIHtcbiAgaWYgKGlzUHJvdG9TdHJpbmcoYVN0cikpIHtcbiAgICByZXR1cm4gYVN0ci5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBhU3RyO1xufVxuZXhwb3J0cy5mcm9tU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IGZyb21TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzUHJvdG9TdHJpbmcocykge1xuICBpZiAoIXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA8IDkgLyogXCJfX3Byb3RvX19cIi5sZW5ndGggKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocy5jaGFyQ29kZUF0KGxlbmd0aCAtIDEpICE9PSA5NSAgLyogJ18nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMikgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAzKSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDQpICE9PSAxMTYgLyogJ3QnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNSkgIT09IDExMSAvKiAnbycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA2KSAhPT0gMTE0IC8qICdyJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDcpICE9PSAxMTIgLyogJ3AnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gOCkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA5KSAhPT0gOTUgIC8qICdfJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSBsZW5ndGggLSAxMDsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAocy5jaGFyQ29kZUF0KGkpICE9PSAzNiAvKiAnJCcgKi8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdoZXJlIHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uLCBidXQgZGlmZmVyZW50IGdlbmVyYXRlZFxuICogbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGEgbWFwcGluZyB3aXRoIGFcbiAqIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICB2YXIgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQ7XG5cbmZ1bmN0aW9uIHN0cmNtcChhU3RyMSwgYVN0cjIpIHtcbiAgaWYgKGFTdHIxID09PSBhU3RyMikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKGFTdHIxID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDE7IC8vIGFTdHIyICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gLTE7IC8vIGFTdHIxICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjEgPiBhU3RyMikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBpbmZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgc3RyaW5ncyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQ7XG5cbi8qKlxuICogU3RyaXAgYW55IEpTT04gWFNTSSBhdm9pZGFuY2UgcHJlZml4IGZyb20gdGhlIHN0cmluZyAoYXMgZG9jdW1lbnRlZFxuICogaW4gdGhlIHNvdXJjZSBtYXBzIHNwZWNpZmljYXRpb24pLCBhbmQgdGhlbiBwYXJzZSB0aGUgc3RyaW5nIGFzXG4gKiBKU09OLlxuICovXG5mdW5jdGlvbiBwYXJzZVNvdXJjZU1hcElucHV0KHN0cikge1xuICByZXR1cm4gSlNPTi5wYXJzZShzdHIucmVwbGFjZSgvXlxcKV19J1teXFxuXSpcXG4vLCAnJykpO1xufVxuZXhwb3J0cy5wYXJzZVNvdXJjZU1hcElucHV0ID0gcGFyc2VTb3VyY2VNYXBJbnB1dDtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBVUkwgb2YgYSBzb3VyY2UgZ2l2ZW4gdGhlIHRoZSBzb3VyY2Ugcm9vdCwgdGhlIHNvdXJjZSdzXG4gKiBVUkwsIGFuZCB0aGUgc291cmNlIG1hcCdzIFVSTC5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVNvdXJjZVVSTChzb3VyY2VSb290LCBzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCkge1xuICBzb3VyY2VVUkwgPSBzb3VyY2VVUkwgfHwgJyc7XG5cbiAgaWYgKHNvdXJjZVJvb3QpIHtcbiAgICAvLyBUaGlzIGZvbGxvd3Mgd2hhdCBDaHJvbWUgZG9lcy5cbiAgICBpZiAoc291cmNlUm9vdFtzb3VyY2VSb290Lmxlbmd0aCAtIDFdICE9PSAnLycgJiYgc291cmNlVVJMWzBdICE9PSAnLycpIHtcbiAgICAgIHNvdXJjZVJvb3QgKz0gJy8nO1xuICAgIH1cbiAgICAvLyBUaGUgc3BlYyBzYXlzOlxuICAgIC8vICAgTGluZSA0OiBBbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZVxuICAgIC8vICAgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZVxuICAgIC8vICAg4oCcc291cmNlc+KAnSBlbnRyeS4gIFRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsXG4gICAgLy8gICBlbnRyaWVzIGluIHRoZSDigJxzb3VyY2XigJ0gZmllbGQuXG4gICAgc291cmNlVVJMID0gc291cmNlUm9vdCArIHNvdXJjZVVSTDtcbiAgfVxuXG4gIC8vIEhpc3RvcmljYWxseSwgU291cmNlTWFwQ29uc3VtZXIgZGlkIG5vdCB0YWtlIHRoZSBzb3VyY2VNYXBVUkwgYXNcbiAgLy8gYSBwYXJhbWV0ZXIuICBUaGlzIG1vZGUgaXMgc3RpbGwgc29tZXdoYXQgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHlcbiAgLy8gdGhpcyBjb2RlIGJsb2NrIGlzIGNvbmRpdGlvbmFsLiAgSG93ZXZlciwgaXQncyBwcmVmZXJhYmxlIHRvIHBhc3NcbiAgLy8gdGhlIHNvdXJjZSBtYXAgVVJMIHRvIFNvdXJjZU1hcENvbnN1bWVyLCBzbyB0aGF0IHRoaXMgZnVuY3Rpb25cbiAgLy8gY2FuIGltcGxlbWVudCB0aGUgc291cmNlIFVSTCByZXNvbHV0aW9uIGFsZ29yaXRobSBhcyBvdXRsaW5lZCBpblxuICAvLyB0aGUgc3BlYy4gIFRoaXMgYmxvY2sgaXMgYmFzaWNhbGx5IHRoZSBlcXVpdmFsZW50IG9mOlxuICAvLyAgICBuZXcgVVJMKHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKS50b1N0cmluZygpXG4gIC8vIC4uLiBleGNlcHQgaXQgYXZvaWRzIHVzaW5nIFVSTCwgd2hpY2ggd2Fzbid0IGF2YWlsYWJsZSBpbiB0aGVcbiAgLy8gb2xkZXIgcmVsZWFzZXMgb2Ygbm9kZSBzdGlsbCBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICAvL1xuICAvLyBUaGUgc3BlYyBzYXlzOlxuICAvLyAgIElmIHRoZSBzb3VyY2VzIGFyZSBub3QgYWJzb2x1dGUgVVJMcyBhZnRlciBwcmVwZW5kaW5nIG9mIHRoZVxuICAvLyAgIOKAnHNvdXJjZVJvb3TigJ0sIHRoZSBzb3VyY2VzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGVcbiAgLy8gICBTb3VyY2VNYXAgKGxpa2UgcmVzb2x2aW5nIHNjcmlwdCBzcmMgaW4gYSBodG1sIGRvY3VtZW50KS5cbiAgaWYgKHNvdXJjZU1hcFVSTCkge1xuICAgIHZhciBwYXJzZWQgPSB1cmxQYXJzZShzb3VyY2VNYXBVUkwpO1xuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2VNYXBVUkwgY291bGQgbm90IGJlIHBhcnNlZFwiKTtcbiAgICB9XG4gICAgaWYgKHBhcnNlZC5wYXRoKSB7XG4gICAgICAvLyBTdHJpcCB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCwgYnV0IGtlZXAgdGhlIFwiL1wiLlxuICAgICAgdmFyIGluZGV4ID0gcGFyc2VkLnBhdGgubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHBhcnNlZC5wYXRoID0gcGFyc2VkLnBhdGguc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZVVSTCA9IGpvaW4odXJsR2VuZXJhdGUocGFyc2VkKSwgc291cmNlVVJMKTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemUoc291cmNlVVJMKTtcbn1cbmV4cG9ydHMuY29tcHV0ZVNvdXJjZVVSTCA9IGNvbXB1dGVTb3VyY2VVUkw7XG4iLCIvKlxuICogQ29weXJpZ2h0IDIwMDktMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0UudHh0IG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1tYXAtY29uc3VtZXInKS5Tb3VyY2VNYXBDb25zdW1lcjtcbmV4cG9ydHMuU291cmNlTm9kZSA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1ub2RlJykuU291cmNlTm9kZTtcbiIsInZhciBDbGllbnRSZXF1ZXN0ID0gcmVxdWlyZSgnLi9saWIvcmVxdWVzdCcpXG52YXIgcmVzcG9uc2UgPSByZXF1aXJlKCcuL2xpYi9yZXNwb25zZScpXG52YXIgZXh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHN0YXR1c0NvZGVzID0gcmVxdWlyZSgnYnVpbHRpbi1zdGF0dXMtY29kZXMnKVxudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpXG5cbnZhciBodHRwID0gZXhwb3J0c1xuXG5odHRwLnJlcXVlc3QgPSBmdW5jdGlvbiAob3B0cywgY2IpIHtcblx0aWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJylcblx0XHRvcHRzID0gdXJsLnBhcnNlKG9wdHMpXG5cdGVsc2Vcblx0XHRvcHRzID0gZXh0ZW5kKG9wdHMpXG5cblx0Ly8gTm9ybWFsbHksIHRoZSBwYWdlIGlzIGxvYWRlZCBmcm9tIGh0dHAgb3IgaHR0cHMsIHNvIG5vdCBzcGVjaWZ5aW5nIGEgcHJvdG9jb2xcblx0Ly8gd2lsbCByZXN1bHQgaW4gYSAodmFsaWQpIHByb3RvY29sLXJlbGF0aXZlIHVybC4gSG93ZXZlciwgdGhpcyB3b24ndCB3b3JrIGlmXG5cdC8vIHRoZSBwcm90b2NvbCBpcyBzb21ldGhpbmcgZWxzZSwgbGlrZSAnZmlsZTonXG5cdHZhciBkZWZhdWx0UHJvdG9jb2wgPSBnbG9iYWwubG9jYXRpb24ucHJvdG9jb2wuc2VhcmNoKC9eaHR0cHM/OiQvKSA9PT0gLTEgPyAnaHR0cDonIDogJydcblxuXHR2YXIgcHJvdG9jb2wgPSBvcHRzLnByb3RvY29sIHx8IGRlZmF1bHRQcm90b2NvbFxuXHR2YXIgaG9zdCA9IG9wdHMuaG9zdG5hbWUgfHwgb3B0cy5ob3N0XG5cdHZhciBwb3J0ID0gb3B0cy5wb3J0XG5cdHZhciBwYXRoID0gb3B0cy5wYXRoIHx8ICcvJ1xuXG5cdC8vIE5lY2Vzc2FyeSBmb3IgSVB2NiBhZGRyZXNzZXNcblx0aWYgKGhvc3QgJiYgaG9zdC5pbmRleE9mKCc6JykgIT09IC0xKVxuXHRcdGhvc3QgPSAnWycgKyBob3N0ICsgJ10nXG5cblx0Ly8gVGhpcyBtYXkgYmUgYSByZWxhdGl2ZSB1cmwuIFRoZSBicm93c2VyIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBpbnRlcnByZXQgaXQgY29ycmVjdGx5LlxuXHRvcHRzLnVybCA9IChob3N0ID8gKHByb3RvY29sICsgJy8vJyArIGhvc3QpIDogJycpICsgKHBvcnQgPyAnOicgKyBwb3J0IDogJycpICsgcGF0aFxuXHRvcHRzLm1ldGhvZCA9IChvcHRzLm1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKVxuXHRvcHRzLmhlYWRlcnMgPSBvcHRzLmhlYWRlcnMgfHwge31cblxuXHQvLyBBbHNvIHZhbGlkIG9wdHMuYXV0aCwgb3B0cy5tb2RlXG5cblx0dmFyIHJlcSA9IG5ldyBDbGllbnRSZXF1ZXN0KG9wdHMpXG5cdGlmIChjYilcblx0XHRyZXEub24oJ3Jlc3BvbnNlJywgY2IpXG5cdHJldHVybiByZXFcbn1cblxuaHR0cC5nZXQgPSBmdW5jdGlvbiBnZXQgKG9wdHMsIGNiKSB7XG5cdHZhciByZXEgPSBodHRwLnJlcXVlc3Qob3B0cywgY2IpXG5cdHJlcS5lbmQoKVxuXHRyZXR1cm4gcmVxXG59XG5cbmh0dHAuQ2xpZW50UmVxdWVzdCA9IENsaWVudFJlcXVlc3Rcbmh0dHAuSW5jb21pbmdNZXNzYWdlID0gcmVzcG9uc2UuSW5jb21pbmdNZXNzYWdlXG5cbmh0dHAuQWdlbnQgPSBmdW5jdGlvbiAoKSB7fVxuaHR0cC5BZ2VudC5kZWZhdWx0TWF4U29ja2V0cyA9IDRcblxuaHR0cC5nbG9iYWxBZ2VudCA9IG5ldyBodHRwLkFnZW50KClcblxuaHR0cC5TVEFUVVNfQ09ERVMgPSBzdGF0dXNDb2Rlc1xuXG5odHRwLk1FVEhPRFMgPSBbXG5cdCdDSEVDS09VVCcsXG5cdCdDT05ORUNUJyxcblx0J0NPUFknLFxuXHQnREVMRVRFJyxcblx0J0dFVCcsXG5cdCdIRUFEJyxcblx0J0xPQ0snLFxuXHQnTS1TRUFSQ0gnLFxuXHQnTUVSR0UnLFxuXHQnTUtBQ1RJVklUWScsXG5cdCdNS0NPTCcsXG5cdCdNT1ZFJyxcblx0J05PVElGWScsXG5cdCdPUFRJT05TJyxcblx0J1BBVENIJyxcblx0J1BPU1QnLFxuXHQnUFJPUEZJTkQnLFxuXHQnUFJPUFBBVENIJyxcblx0J1BVUkdFJyxcblx0J1BVVCcsXG5cdCdSRVBPUlQnLFxuXHQnU0VBUkNIJyxcblx0J1NVQlNDUklCRScsXG5cdCdUUkFDRScsXG5cdCdVTkxPQ0snLFxuXHQnVU5TVUJTQ1JJQkUnXG5dIiwiZXhwb3J0cy5mZXRjaCA9IGlzRnVuY3Rpb24oZ2xvYmFsLmZldGNoKSAmJiBpc0Z1bmN0aW9uKGdsb2JhbC5SZWFkYWJsZVN0cmVhbSlcblxuZXhwb3J0cy53cml0YWJsZVN0cmVhbSA9IGlzRnVuY3Rpb24oZ2xvYmFsLldyaXRhYmxlU3RyZWFtKVxuXG5leHBvcnRzLmFib3J0Q29udHJvbGxlciA9IGlzRnVuY3Rpb24oZ2xvYmFsLkFib3J0Q29udHJvbGxlcilcblxuZXhwb3J0cy5ibG9iQ29uc3RydWN0b3IgPSBmYWxzZVxudHJ5IHtcblx0bmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxKV0pXG5cdGV4cG9ydHMuYmxvYkNvbnN0cnVjdG9yID0gdHJ1ZVxufSBjYXRjaCAoZSkge31cblxuLy8gVGhlIHhociByZXF1ZXN0IHRvIGV4YW1wbGUuY29tIG1heSB2aW9sYXRlIHNvbWUgcmVzdHJpY3RpdmUgQ1NQIGNvbmZpZ3VyYXRpb25zLFxuLy8gc28gaWYgd2UncmUgcnVubmluZyBpbiBhIGJyb3dzZXIgdGhhdCBzdXBwb3J0cyBgZmV0Y2hgLCBhdm9pZCBjYWxsaW5nIGdldFhIUigpXG4vLyBhbmQgYXNzdW1lIHN1cHBvcnQgZm9yIGNlcnRhaW4gZmVhdHVyZXMgYmVsb3cuXG52YXIgeGhyXG5mdW5jdGlvbiBnZXRYSFIgKCkge1xuXHQvLyBDYWNoZSB0aGUgeGhyIHZhbHVlXG5cdGlmICh4aHIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHhoclxuXG5cdGlmIChnbG9iYWwuWE1MSHR0cFJlcXVlc3QpIHtcblx0XHR4aHIgPSBuZXcgZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KClcblx0XHQvLyBJZiBYRG9tYWluUmVxdWVzdCBpcyBhdmFpbGFibGUgKGllIG9ubHksIHdoZXJlIHhociBtaWdodCBub3Qgd29ya1xuXHRcdC8vIGNyb3NzIGRvbWFpbiksIHVzZSB0aGUgcGFnZSBsb2NhdGlvbi4gT3RoZXJ3aXNlIHVzZSBleGFtcGxlLmNvbVxuXHRcdC8vIE5vdGU6IHRoaXMgZG9lc24ndCBhY3R1YWxseSBtYWtlIGFuIGh0dHAgcmVxdWVzdC5cblx0XHR0cnkge1xuXHRcdFx0eGhyLm9wZW4oJ0dFVCcsIGdsb2JhbC5YRG9tYWluUmVxdWVzdCA/ICcvJyA6ICdodHRwczovL2V4YW1wbGUuY29tJylcblx0XHR9IGNhdGNoKGUpIHtcblx0XHRcdHhociA9IG51bGxcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gU2VydmljZSB3b3JrZXJzIGRvbid0IGhhdmUgWEhSXG5cdFx0eGhyID0gbnVsbFxuXHR9XG5cdHJldHVybiB4aHJcbn1cblxuZnVuY3Rpb24gY2hlY2tUeXBlU3VwcG9ydCAodHlwZSkge1xuXHR2YXIgeGhyID0gZ2V0WEhSKClcblx0aWYgKCF4aHIpIHJldHVybiBmYWxzZVxuXHR0cnkge1xuXHRcdHhoci5yZXNwb25zZVR5cGUgPSB0eXBlXG5cdFx0cmV0dXJuIHhoci5yZXNwb25zZVR5cGUgPT09IHR5cGVcblx0fSBjYXRjaCAoZSkge31cblx0cmV0dXJuIGZhbHNlXG59XG5cbi8vIEZvciBzb21lIHN0cmFuZ2UgcmVhc29uLCBTYWZhcmkgNy4wIHJlcG9ydHMgdHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciA9PT0gJ29iamVjdCcuXG4vLyBTYWZhcmkgNy4xIGFwcGVhcnMgdG8gaGF2ZSBmaXhlZCB0aGlzIGJ1Zy5cbnZhciBoYXZlQXJyYXlCdWZmZXIgPSB0eXBlb2YgZ2xvYmFsLkFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJ1xudmFyIGhhdmVTbGljZSA9IGhhdmVBcnJheUJ1ZmZlciAmJiBpc0Z1bmN0aW9uKGdsb2JhbC5BcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UpXG5cbi8vIElmIGZldGNoIGlzIHN1cHBvcnRlZCwgdGhlbiBhcnJheWJ1ZmZlciB3aWxsIGJlIHN1cHBvcnRlZCB0b28uIFNraXAgY2FsbGluZ1xuLy8gY2hlY2tUeXBlU3VwcG9ydCgpLCBzaW5jZSB0aGF0IGNhbGxzIGdldFhIUigpLlxuZXhwb3J0cy5hcnJheWJ1ZmZlciA9IGV4cG9ydHMuZmV0Y2ggfHwgKGhhdmVBcnJheUJ1ZmZlciAmJiBjaGVja1R5cGVTdXBwb3J0KCdhcnJheWJ1ZmZlcicpKVxuXG4vLyBUaGVzZSBuZXh0IHR3byB0ZXN0cyB1bmF2b2lkYWJseSBzaG93IHdhcm5pbmdzIGluIENocm9tZS4gU2luY2UgZmV0Y2ggd2lsbCBhbHdheXNcbi8vIGJlIHVzZWQgaWYgaXQncyBhdmFpbGFibGUsIGp1c3QgcmV0dXJuIGZhbHNlIGZvciB0aGVzZSB0byBhdm9pZCB0aGUgd2FybmluZ3MuXG5leHBvcnRzLm1zc3RyZWFtID0gIWV4cG9ydHMuZmV0Y2ggJiYgaGF2ZVNsaWNlICYmIGNoZWNrVHlwZVN1cHBvcnQoJ21zLXN0cmVhbScpXG5leHBvcnRzLm1vemNodW5rZWRhcnJheWJ1ZmZlciA9ICFleHBvcnRzLmZldGNoICYmIGhhdmVBcnJheUJ1ZmZlciAmJlxuXHRjaGVja1R5cGVTdXBwb3J0KCdtb3otY2h1bmtlZC1hcnJheWJ1ZmZlcicpXG5cbi8vIElmIGZldGNoIGlzIHN1cHBvcnRlZCwgdGhlbiBvdmVycmlkZU1pbWVUeXBlIHdpbGwgYmUgc3VwcG9ydGVkIHRvby4gU2tpcCBjYWxsaW5nXG4vLyBnZXRYSFIoKS5cbmV4cG9ydHMub3ZlcnJpZGVNaW1lVHlwZSA9IGV4cG9ydHMuZmV0Y2ggfHwgKGdldFhIUigpID8gaXNGdW5jdGlvbihnZXRYSFIoKS5vdmVycmlkZU1pbWVUeXBlKSA6IGZhbHNlKVxuXG5leHBvcnRzLnZiQXJyYXkgPSBpc0Z1bmN0aW9uKGdsb2JhbC5WQkFycmF5KVxuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uICh2YWx1ZSkge1xuXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG59XG5cbnhociA9IG51bGwgLy8gSGVscCBnY1xuIiwidmFyIGNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL2NhcGFiaWxpdHknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHJlc3BvbnNlID0gcmVxdWlyZSgnLi9yZXNwb25zZScpXG52YXIgc3RyZWFtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJylcbnZhciB0b0FycmF5QnVmZmVyID0gcmVxdWlyZSgndG8tYXJyYXlidWZmZXInKVxuXG52YXIgSW5jb21pbmdNZXNzYWdlID0gcmVzcG9uc2UuSW5jb21pbmdNZXNzYWdlXG52YXIgclN0YXRlcyA9IHJlc3BvbnNlLnJlYWR5U3RhdGVzXG5cbmZ1bmN0aW9uIGRlY2lkZU1vZGUgKHByZWZlckJpbmFyeSwgdXNlRmV0Y2gpIHtcblx0aWYgKGNhcGFiaWxpdHkuZmV0Y2ggJiYgdXNlRmV0Y2gpIHtcblx0XHRyZXR1cm4gJ2ZldGNoJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkubW96Y2h1bmtlZGFycmF5YnVmZmVyKSB7XG5cdFx0cmV0dXJuICdtb3otY2h1bmtlZC1hcnJheWJ1ZmZlcidcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5Lm1zc3RyZWFtKSB7XG5cdFx0cmV0dXJuICdtcy1zdHJlYW0nXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5hcnJheWJ1ZmZlciAmJiBwcmVmZXJCaW5hcnkpIHtcblx0XHRyZXR1cm4gJ2FycmF5YnVmZmVyJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkudmJBcnJheSAmJiBwcmVmZXJCaW5hcnkpIHtcblx0XHRyZXR1cm4gJ3RleHQ6dmJhcnJheSdcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gJ3RleHQnXG5cdH1cbn1cblxudmFyIENsaWVudFJlcXVlc3QgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRzKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRzdHJlYW0uV3JpdGFibGUuY2FsbChzZWxmKVxuXG5cdHNlbGYuX29wdHMgPSBvcHRzXG5cdHNlbGYuX2JvZHkgPSBbXVxuXHRzZWxmLl9oZWFkZXJzID0ge31cblx0aWYgKG9wdHMuYXV0aClcblx0XHRzZWxmLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgbmV3IEJ1ZmZlcihvcHRzLmF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKSlcblx0T2JqZWN0LmtleXMob3B0cy5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG5cdFx0c2VsZi5zZXRIZWFkZXIobmFtZSwgb3B0cy5oZWFkZXJzW25hbWVdKVxuXHR9KVxuXG5cdHZhciBwcmVmZXJCaW5hcnlcblx0dmFyIHVzZUZldGNoID0gdHJ1ZVxuXHRpZiAob3B0cy5tb2RlID09PSAnZGlzYWJsZS1mZXRjaCcgfHwgKCdyZXF1ZXN0VGltZW91dCcgaW4gb3B0cyAmJiAhY2FwYWJpbGl0eS5hYm9ydENvbnRyb2xsZXIpKSB7XG5cdFx0Ly8gSWYgdGhlIHVzZSBvZiBYSFIgc2hvdWxkIGJlIHByZWZlcnJlZC4gTm90IHR5cGljYWxseSBuZWVkZWQuXG5cdFx0dXNlRmV0Y2ggPSBmYWxzZVxuXHRcdHByZWZlckJpbmFyeSA9IHRydWVcblx0fSBlbHNlIGlmIChvcHRzLm1vZGUgPT09ICdwcmVmZXItc3RyZWFtaW5nJykge1xuXHRcdC8vIElmIHN0cmVhbWluZyBpcyBhIGhpZ2ggcHJpb3JpdHkgYnV0IGJpbmFyeSBjb21wYXRpYmlsaXR5IGFuZFxuXHRcdC8vIHRoZSBhY2N1cmFjeSBvZiB0aGUgJ2NvbnRlbnQtdHlwZScgaGVhZGVyIGFyZW4ndFxuXHRcdHByZWZlckJpbmFyeSA9IGZhbHNlXG5cdH0gZWxzZSBpZiAob3B0cy5tb2RlID09PSAnYWxsb3ctd3JvbmctY29udGVudC10eXBlJykge1xuXHRcdC8vIElmIHN0cmVhbWluZyBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHByZXNlcnZpbmcgdGhlICdjb250ZW50LXR5cGUnIGhlYWRlclxuXHRcdHByZWZlckJpbmFyeSA9ICFjYXBhYmlsaXR5Lm92ZXJyaWRlTWltZVR5cGVcblx0fSBlbHNlIGlmICghb3B0cy5tb2RlIHx8IG9wdHMubW9kZSA9PT0gJ2RlZmF1bHQnIHx8IG9wdHMubW9kZSA9PT0gJ3ByZWZlci1mYXN0Jykge1xuXHRcdC8vIFVzZSBiaW5hcnkgaWYgdGV4dCBzdHJlYW1pbmcgbWF5IGNvcnJ1cHQgZGF0YSBvciB0aGUgY29udGVudC10eXBlIGhlYWRlciwgb3IgZm9yIHNwZWVkXG5cdFx0cHJlZmVyQmluYXJ5ID0gdHJ1ZVxuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3Igb3B0cy5tb2RlJylcblx0fVxuXHRzZWxmLl9tb2RlID0gZGVjaWRlTW9kZShwcmVmZXJCaW5hcnksIHVzZUZldGNoKVxuXHRzZWxmLl9mZXRjaFRpbWVyID0gbnVsbFxuXG5cdHNlbGYub24oJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcblx0XHRzZWxmLl9vbkZpbmlzaCgpXG5cdH0pXG59XG5cbmluaGVyaXRzKENsaWVudFJlcXVlc3QsIHN0cmVhbS5Xcml0YWJsZSlcblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0SGVhZGVyID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHR2YXIgbG93ZXJOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG5cdC8vIFRoaXMgY2hlY2sgaXMgbm90IG5lY2Vzc2FyeSwgYnV0IGl0IHByZXZlbnRzIHdhcm5pbmdzIGZyb20gYnJvd3NlcnMgYWJvdXQgc2V0dGluZyB1bnNhZmVcblx0Ly8gaGVhZGVycy4gVG8gYmUgaG9uZXN0IEknbSBub3QgZW50aXJlbHkgc3VyZSBoaWRpbmcgdGhlc2Ugd2FybmluZ3MgaXMgYSBnb29kIHRoaW5nLCBidXRcblx0Ly8gaHR0cC1icm93c2VyaWZ5IGRpZCBpdCwgc28gSSB3aWxsIHRvby5cblx0aWYgKHVuc2FmZUhlYWRlcnMuaW5kZXhPZihsb3dlck5hbWUpICE9PSAtMSlcblx0XHRyZXR1cm5cblxuXHRzZWxmLl9oZWFkZXJzW2xvd2VyTmFtZV0gPSB7XG5cdFx0bmFtZTogbmFtZSxcblx0XHR2YWx1ZTogdmFsdWVcblx0fVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5nZXRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSkge1xuXHR2YXIgaGVhZGVyID0gdGhpcy5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldXG5cdGlmIChoZWFkZXIpXG5cdFx0cmV0dXJuIGhlYWRlci52YWx1ZVxuXHRyZXR1cm4gbnVsbFxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5yZW1vdmVIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0ZGVsZXRlIHNlbGYuX2hlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fb25GaW5pc2ggPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0cmV0dXJuXG5cdHZhciBvcHRzID0gc2VsZi5fb3B0c1xuXG5cdHZhciBoZWFkZXJzT2JqID0gc2VsZi5faGVhZGVyc1xuXHR2YXIgYm9keSA9IG51bGxcblx0aWYgKG9wdHMubWV0aG9kICE9PSAnR0VUJyAmJiBvcHRzLm1ldGhvZCAhPT0gJ0hFQUQnKSB7XG5cdFx0aWYgKGNhcGFiaWxpdHkuYXJyYXlidWZmZXIpIHtcblx0XHRcdGJvZHkgPSB0b0FycmF5QnVmZmVyKEJ1ZmZlci5jb25jYXQoc2VsZi5fYm9keSkpXG5cdFx0fSBlbHNlIGlmIChjYXBhYmlsaXR5LmJsb2JDb25zdHJ1Y3Rvcikge1xuXHRcdFx0Ym9keSA9IG5ldyBnbG9iYWwuQmxvYihzZWxmLl9ib2R5Lm1hcChmdW5jdGlvbiAoYnVmZmVyKSB7XG5cdFx0XHRcdHJldHVybiB0b0FycmF5QnVmZmVyKGJ1ZmZlcilcblx0XHRcdH0pLCB7XG5cdFx0XHRcdHR5cGU6IChoZWFkZXJzT2JqWydjb250ZW50LXR5cGUnXSB8fCB7fSkudmFsdWUgfHwgJydcblx0XHRcdH0pXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGdldCB1dGY4IHN0cmluZ1xuXHRcdFx0Ym9keSA9IEJ1ZmZlci5jb25jYXQoc2VsZi5fYm9keSkudG9TdHJpbmcoKVxuXHRcdH1cblx0fVxuXG5cdC8vIGNyZWF0ZSBmbGF0dGVuZWQgbGlzdCBvZiBoZWFkZXJzXG5cdHZhciBoZWFkZXJzTGlzdCA9IFtdXG5cdE9iamVjdC5rZXlzKGhlYWRlcnNPYmopLmZvckVhY2goZnVuY3Rpb24gKGtleU5hbWUpIHtcblx0XHR2YXIgbmFtZSA9IGhlYWRlcnNPYmpba2V5TmFtZV0ubmFtZVxuXHRcdHZhciB2YWx1ZSA9IGhlYWRlcnNPYmpba2V5TmFtZV0udmFsdWVcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcblx0XHRcdFx0aGVhZGVyc0xpc3QucHVzaChbbmFtZSwgdl0pXG5cdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRoZWFkZXJzTGlzdC5wdXNoKFtuYW1lLCB2YWx1ZV0pXG5cdFx0fVxuXHR9KVxuXG5cdGlmIChzZWxmLl9tb2RlID09PSAnZmV0Y2gnKSB7XG5cdFx0dmFyIHNpZ25hbCA9IG51bGxcblx0XHR2YXIgZmV0Y2hUaW1lciA9IG51bGxcblx0XHRpZiAoY2FwYWJpbGl0eS5hYm9ydENvbnRyb2xsZXIpIHtcblx0XHRcdHZhciBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cdFx0XHRzaWduYWwgPSBjb250cm9sbGVyLnNpZ25hbFxuXHRcdFx0c2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIgPSBjb250cm9sbGVyXG5cblx0XHRcdGlmICgncmVxdWVzdFRpbWVvdXQnIGluIG9wdHMgJiYgb3B0cy5yZXF1ZXN0VGltZW91dCAhPT0gMCkge1xuXHRcdFx0XHRzZWxmLl9mZXRjaFRpbWVyID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHNlbGYuZW1pdCgncmVxdWVzdFRpbWVvdXQnKVxuXHRcdFx0XHRcdGlmIChzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlcilcblx0XHRcdFx0XHRcdHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyLmFib3J0KClcblx0XHRcdFx0fSwgb3B0cy5yZXF1ZXN0VGltZW91dClcblx0XHRcdH1cblx0XHR9XG5cblx0XHRnbG9iYWwuZmV0Y2goc2VsZi5fb3B0cy51cmwsIHtcblx0XHRcdG1ldGhvZDogc2VsZi5fb3B0cy5tZXRob2QsXG5cdFx0XHRoZWFkZXJzOiBoZWFkZXJzTGlzdCxcblx0XHRcdGJvZHk6IGJvZHkgfHwgdW5kZWZpbmVkLFxuXHRcdFx0bW9kZTogJ2NvcnMnLFxuXHRcdFx0Y3JlZGVudGlhbHM6IG9wdHMud2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ3NhbWUtb3JpZ2luJyxcblx0XHRcdHNpZ25hbDogc2lnbmFsXG5cdFx0fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcblx0XHRcdHNlbGYuX2ZldGNoUmVzcG9uc2UgPSByZXNwb25zZVxuXHRcdFx0c2VsZi5fY29ubmVjdCgpXG5cdFx0fSwgZnVuY3Rpb24gKHJlYXNvbikge1xuXHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChzZWxmLl9mZXRjaFRpbWVyKVxuXHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCByZWFzb24pXG5cdFx0fSlcblx0fSBlbHNlIHtcblx0XHR2YXIgeGhyID0gc2VsZi5feGhyID0gbmV3IGdsb2JhbC5YTUxIdHRwUmVxdWVzdCgpXG5cdFx0dHJ5IHtcblx0XHRcdHhoci5vcGVuKHNlbGYuX29wdHMubWV0aG9kLCBzZWxmLl9vcHRzLnVybCwgdHJ1ZSlcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0fSlcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdC8vIENhbid0IHNldCByZXNwb25zZVR5cGUgb24gcmVhbGx5IG9sZCBicm93c2Vyc1xuXHRcdGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpXG5cdFx0XHR4aHIucmVzcG9uc2VUeXBlID0gc2VsZi5fbW9kZS5zcGxpdCgnOicpWzBdXG5cblx0XHRpZiAoJ3dpdGhDcmVkZW50aWFscycgaW4geGhyKVxuXHRcdFx0eGhyLndpdGhDcmVkZW50aWFscyA9ICEhb3B0cy53aXRoQ3JlZGVudGlhbHNcblxuXHRcdGlmIChzZWxmLl9tb2RlID09PSAndGV4dCcgJiYgJ292ZXJyaWRlTWltZVR5cGUnIGluIHhocilcblx0XHRcdHhoci5vdmVycmlkZU1pbWVUeXBlKCd0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkJylcblxuXHRcdGlmICgncmVxdWVzdFRpbWVvdXQnIGluIG9wdHMpIHtcblx0XHRcdHhoci50aW1lb3V0ID0gb3B0cy5yZXF1ZXN0VGltZW91dFxuXHRcdFx0eGhyLm9udGltZW91dCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5lbWl0KCdyZXF1ZXN0VGltZW91dCcpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aGVhZGVyc0xpc3QuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7XG5cdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXJbMF0sIGhlYWRlclsxXSlcblx0XHR9KVxuXG5cdFx0c2VsZi5fcmVzcG9uc2UgPSBudWxsXG5cdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHN3aXRjaCAoeGhyLnJlYWR5U3RhdGUpIHtcblx0XHRcdFx0Y2FzZSByU3RhdGVzLkxPQURJTkc6XG5cdFx0XHRcdGNhc2UgclN0YXRlcy5ET05FOlxuXHRcdFx0XHRcdHNlbGYuX29uWEhSUHJvZ3Jlc3MoKVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIE5lY2Vzc2FyeSBmb3Igc3RyZWFtaW5nIGluIEZpcmVmb3gsIHNpbmNlIHhoci5yZXNwb25zZSBpcyBPTkxZIGRlZmluZWRcblx0XHQvLyBpbiBvbnByb2dyZXNzLCBub3QgaW4gb25yZWFkeXN0YXRlY2hhbmdlIHdpdGggeGhyLnJlYWR5U3RhdGUgPSAzXG5cdFx0aWYgKHNlbGYuX21vZGUgPT09ICdtb3otY2h1bmtlZC1hcnJheWJ1ZmZlcicpIHtcblx0XHRcdHhoci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLl9vblhIUlByb2dyZXNzKClcblx0XHRcdH1cblx0XHR9XG5cblx0XHR4aHIub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignWEhSIGVycm9yJykpXG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdHhoci5zZW5kKGJvZHkpXG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgeGhyLnN0YXR1cyBpcyByZWFkYWJsZSBhbmQgbm9uLXplcm8sIGluZGljYXRpbmcgbm8gZXJyb3IuXG4gKiBFdmVuIHRob3VnaCB0aGUgc3BlYyBzYXlzIGl0IHNob3VsZCBiZSBhdmFpbGFibGUgaW4gcmVhZHlTdGF0ZSAzLFxuICogYWNjZXNzaW5nIGl0IHRocm93cyBhbiBleGNlcHRpb24gaW4gSUU4XG4gKi9cbmZ1bmN0aW9uIHN0YXR1c1ZhbGlkICh4aHIpIHtcblx0dHJ5IHtcblx0XHR2YXIgc3RhdHVzID0geGhyLnN0YXR1c1xuXHRcdHJldHVybiAoc3RhdHVzICE9PSBudWxsICYmIHN0YXR1cyAhPT0gMClcblx0fSBjYXRjaCAoZSkge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl9vblhIUlByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRpZiAoIXN0YXR1c1ZhbGlkKHNlbGYuX3hocikgfHwgc2VsZi5fZGVzdHJveWVkKVxuXHRcdHJldHVyblxuXG5cdGlmICghc2VsZi5fcmVzcG9uc2UpXG5cdFx0c2VsZi5fY29ubmVjdCgpXG5cblx0c2VsZi5fcmVzcG9uc2UuX29uWEhSUHJvZ3Jlc3MoKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fY29ubmVjdCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRyZXR1cm5cblxuXHRzZWxmLl9yZXNwb25zZSA9IG5ldyBJbmNvbWluZ01lc3NhZ2Uoc2VsZi5feGhyLCBzZWxmLl9mZXRjaFJlc3BvbnNlLCBzZWxmLl9tb2RlLCBzZWxmLl9mZXRjaFRpbWVyKVxuXHRzZWxmLl9yZXNwb25zZS5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcblx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHR9KVxuXG5cdHNlbGYuZW1pdCgncmVzcG9uc2UnLCBzZWxmLl9yZXNwb25zZSlcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0c2VsZi5fYm9keS5wdXNoKGNodW5rKVxuXHRjYigpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmFib3J0ID0gQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHNlbGYuX2Rlc3Ryb3llZCA9IHRydWVcblx0Z2xvYmFsLmNsZWFyVGltZW91dChzZWxmLl9mZXRjaFRpbWVyKVxuXHRpZiAoc2VsZi5fcmVzcG9uc2UpXG5cdFx0c2VsZi5fcmVzcG9uc2UuX2Rlc3Ryb3llZCA9IHRydWVcblx0aWYgKHNlbGYuX3hocilcblx0XHRzZWxmLl94aHIuYWJvcnQoKVxuXHRlbHNlIGlmIChzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlcilcblx0XHRzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlci5hYm9ydCgpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2IpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdGNiID0gZGF0YVxuXHRcdGRhdGEgPSB1bmRlZmluZWRcblx0fVxuXG5cdHN0cmVhbS5Xcml0YWJsZS5wcm90b3R5cGUuZW5kLmNhbGwoc2VsZiwgZGF0YSwgZW5jb2RpbmcsIGNiKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5mbHVzaEhlYWRlcnMgPSBmdW5jdGlvbiAoKSB7fVxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHt9XG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXROb0RlbGF5ID0gZnVuY3Rpb24gKCkge31cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldFNvY2tldEtlZXBBbGl2ZSA9IGZ1bmN0aW9uICgpIHt9XG5cbi8vIFRha2VuIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvWE1MSHR0cFJlcXVlc3QvI3RoZS1zZXRyZXF1ZXN0aGVhZGVyJTI4JTI5LW1ldGhvZFxudmFyIHVuc2FmZUhlYWRlcnMgPSBbXG5cdCdhY2NlcHQtY2hhcnNldCcsXG5cdCdhY2NlcHQtZW5jb2RpbmcnLFxuXHQnYWNjZXNzLWNvbnRyb2wtcmVxdWVzdC1oZWFkZXJzJyxcblx0J2FjY2Vzcy1jb250cm9sLXJlcXVlc3QtbWV0aG9kJyxcblx0J2Nvbm5lY3Rpb24nLFxuXHQnY29udGVudC1sZW5ndGgnLFxuXHQnY29va2llJyxcblx0J2Nvb2tpZTInLFxuXHQnZGF0ZScsXG5cdCdkbnQnLFxuXHQnZXhwZWN0Jyxcblx0J2hvc3QnLFxuXHQna2VlcC1hbGl2ZScsXG5cdCdvcmlnaW4nLFxuXHQncmVmZXJlcicsXG5cdCd0ZScsXG5cdCd0cmFpbGVyJyxcblx0J3RyYW5zZmVyLWVuY29kaW5nJyxcblx0J3VwZ3JhZGUnLFxuXHQndmlhJ1xuXVxuIiwidmFyIGNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL2NhcGFiaWxpdHknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpXG5cbnZhciByU3RhdGVzID0gZXhwb3J0cy5yZWFkeVN0YXRlcyA9IHtcblx0VU5TRU5UOiAwLFxuXHRPUEVORUQ6IDEsXG5cdEhFQURFUlNfUkVDRUlWRUQ6IDIsXG5cdExPQURJTkc6IDMsXG5cdERPTkU6IDRcbn1cblxudmFyIEluY29taW5nTWVzc2FnZSA9IGV4cG9ydHMuSW5jb21pbmdNZXNzYWdlID0gZnVuY3Rpb24gKHhociwgcmVzcG9uc2UsIG1vZGUsIGZldGNoVGltZXIpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHN0cmVhbS5SZWFkYWJsZS5jYWxsKHNlbGYpXG5cblx0c2VsZi5fbW9kZSA9IG1vZGVcblx0c2VsZi5oZWFkZXJzID0ge31cblx0c2VsZi5yYXdIZWFkZXJzID0gW11cblx0c2VsZi50cmFpbGVycyA9IHt9XG5cdHNlbGYucmF3VHJhaWxlcnMgPSBbXVxuXG5cdC8vIEZha2UgdGhlICdjbG9zZScgZXZlbnQsIGJ1dCBvbmx5IG9uY2UgJ2VuZCcgZmlyZXNcblx0c2VsZi5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuXHRcdC8vIFRoZSBuZXh0VGljayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCB0aGUgJ3JlcXVlc3QnIG1vZHVsZSBmcm9tIGNhdXNpbmcgYW4gaW5maW5pdGUgbG9vcFxuXHRcdHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuXHRcdFx0c2VsZi5lbWl0KCdjbG9zZScpXG5cdFx0fSlcblx0fSlcblxuXHRpZiAobW9kZSA9PT0gJ2ZldGNoJykge1xuXHRcdHNlbGYuX2ZldGNoUmVzcG9uc2UgPSByZXNwb25zZVxuXG5cdFx0c2VsZi51cmwgPSByZXNwb25zZS51cmxcblx0XHRzZWxmLnN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNcblx0XHRzZWxmLnN0YXR1c01lc3NhZ2UgPSByZXNwb25zZS5zdGF0dXNUZXh0XG5cdFx0XG5cdFx0cmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIsIGtleSl7XG5cdFx0XHRzZWxmLmhlYWRlcnNba2V5LnRvTG93ZXJDYXNlKCldID0gaGVhZGVyXG5cdFx0XHRzZWxmLnJhd0hlYWRlcnMucHVzaChrZXksIGhlYWRlcilcblx0XHR9KVxuXG5cdFx0aWYgKGNhcGFiaWxpdHkud3JpdGFibGVTdHJlYW0pIHtcblx0XHRcdHZhciB3cml0YWJsZSA9IG5ldyBXcml0YWJsZVN0cmVhbSh7XG5cdFx0XHRcdHdyaXRlOiBmdW5jdGlvbiAoY2h1bmspIHtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdFx0XHRcdFx0aWYgKHNlbGYuX2Rlc3Ryb3llZCkge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoKVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHNlbGYucHVzaChuZXcgQnVmZmVyKGNodW5rKSkpIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRzZWxmLl9yZXN1bWVGZXRjaCA9IHJlc29sdmVcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjbG9zZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRcdHNlbGYucHVzaChudWxsKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdFx0fVxuXHRcdFx0fSlcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVzcG9uc2UuYm9keS5waXBlVG8od3JpdGFibGUpLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH0gY2F0Y2ggKGUpIHt9IC8vIHBpcGVUbyBtZXRob2QgaXNuJ3QgZGVmaW5lZC4gQ2FuJ3QgZmluZCBhIGJldHRlciB3YXkgdG8gZmVhdHVyZSB0ZXN0IHRoaXNcblx0XHR9XG5cdFx0Ly8gZmFsbGJhY2sgZm9yIHdoZW4gd3JpdGFibGVTdHJlYW0gb3IgcGlwZVRvIGFyZW4ndCBhdmFpbGFibGVcblx0XHR2YXIgcmVhZGVyID0gcmVzcG9uc2UuYm9keS5nZXRSZWFkZXIoKVxuXHRcdGZ1bmN0aW9uIHJlYWQgKCkge1xuXHRcdFx0cmVhZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcblx0XHRcdFx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0aWYgKHJlc3VsdC5kb25lKSB7XG5cdFx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRcdHNlbGYucHVzaChudWxsKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKHJlc3VsdC52YWx1ZSkpXG5cdFx0XHRcdHJlYWQoKVxuXHRcdFx0fSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHR9KVxuXHRcdH1cblx0XHRyZWFkKClcblx0fSBlbHNlIHtcblx0XHRzZWxmLl94aHIgPSB4aHJcblx0XHRzZWxmLl9wb3MgPSAwXG5cblx0XHRzZWxmLnVybCA9IHhoci5yZXNwb25zZVVSTFxuXHRcdHNlbGYuc3RhdHVzQ29kZSA9IHhoci5zdGF0dXNcblx0XHRzZWxmLnN0YXR1c01lc3NhZ2UgPSB4aHIuc3RhdHVzVGV4dFxuXHRcdHZhciBoZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLnNwbGl0KC9cXHI/XFxuLylcblx0XHRoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikge1xuXHRcdFx0dmFyIG1hdGNoZXMgPSBoZWFkZXIubWF0Y2goL14oW146XSspOlxccyooLiopLylcblx0XHRcdGlmIChtYXRjaGVzKSB7XG5cdFx0XHRcdHZhciBrZXkgPSBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKClcblx0XHRcdFx0aWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG5cdFx0XHRcdFx0aWYgKHNlbGYuaGVhZGVyc1trZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldID0gW11cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0ucHVzaChtYXRjaGVzWzJdKVxuXHRcdFx0XHR9IGVsc2UgaWYgKHNlbGYuaGVhZGVyc1trZXldICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XSArPSAnLCAnICsgbWF0Y2hlc1syXVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldID0gbWF0Y2hlc1syXVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGYucmF3SGVhZGVycy5wdXNoKG1hdGNoZXNbMV0sIG1hdGNoZXNbMl0pXG5cdFx0XHR9XG5cdFx0fSlcblxuXHRcdHNlbGYuX2NoYXJzZXQgPSAneC11c2VyLWRlZmluZWQnXG5cdFx0aWYgKCFjYXBhYmlsaXR5Lm92ZXJyaWRlTWltZVR5cGUpIHtcblx0XHRcdHZhciBtaW1lVHlwZSA9IHNlbGYucmF3SGVhZGVyc1snbWltZS10eXBlJ11cblx0XHRcdGlmIChtaW1lVHlwZSkge1xuXHRcdFx0XHR2YXIgY2hhcnNldE1hdGNoID0gbWltZVR5cGUubWF0Y2goLztcXHMqY2hhcnNldD0oW147XSkoO3wkKS8pXG5cdFx0XHRcdGlmIChjaGFyc2V0TWF0Y2gpIHtcblx0XHRcdFx0XHRzZWxmLl9jaGFyc2V0ID0gY2hhcnNldE1hdGNoWzFdLnRvTG93ZXJDYXNlKClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFzZWxmLl9jaGFyc2V0KVxuXHRcdFx0XHRzZWxmLl9jaGFyc2V0ID0gJ3V0Zi04JyAvLyBiZXN0IGd1ZXNzXG5cdFx0fVxuXHR9XG59XG5cbmluaGVyaXRzKEluY29taW5nTWVzc2FnZSwgc3RyZWFtLlJlYWRhYmxlKVxuXG5JbmNvbWluZ01lc3NhZ2UucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHR2YXIgcmVzb2x2ZSA9IHNlbGYuX3Jlc3VtZUZldGNoXG5cdGlmIChyZXNvbHZlKSB7XG5cdFx0c2VsZi5fcmVzdW1lRmV0Y2ggPSBudWxsXG5cdFx0cmVzb2x2ZSgpXG5cdH1cbn1cblxuSW5jb21pbmdNZXNzYWdlLnByb3RvdHlwZS5fb25YSFJQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0dmFyIHhociA9IHNlbGYuX3hoclxuXG5cdHZhciByZXNwb25zZSA9IG51bGxcblx0c3dpdGNoIChzZWxmLl9tb2RlKSB7XG5cdFx0Y2FzZSAndGV4dDp2YmFycmF5JzogLy8gRm9yIElFOVxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkRPTkUpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyBUaGlzIGZhaWxzIGluIElFOFxuXHRcdFx0XHRyZXNwb25zZSA9IG5ldyBnbG9iYWwuVkJBcnJheSh4aHIucmVzcG9uc2VCb2R5KS50b0FycmF5KClcblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0XHRpZiAocmVzcG9uc2UgIT09IG51bGwpIHtcblx0XHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIocmVzcG9uc2UpKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0Ly8gRmFsbHMgdGhyb3VnaCBpbiBJRThcdFxuXHRcdGNhc2UgJ3RleHQnOlxuXHRcdFx0dHJ5IHsgLy8gVGhpcyB3aWxsIGZhaWwgd2hlbiByZWFkeVN0YXRlID0gMyBpbiBJRTkuIFN3aXRjaCBtb2RlIGFuZCB3YWl0IGZvciByZWFkeVN0YXRlID0gNFxuXHRcdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVRleHRcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0c2VsZi5fbW9kZSA9ICd0ZXh0OnZiYXJyYXknXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0XHRpZiAocmVzcG9uc2UubGVuZ3RoID4gc2VsZi5fcG9zKSB7XG5cdFx0XHRcdHZhciBuZXdEYXRhID0gcmVzcG9uc2Uuc3Vic3RyKHNlbGYuX3Bvcylcblx0XHRcdFx0aWYgKHNlbGYuX2NoYXJzZXQgPT09ICd4LXVzZXItZGVmaW5lZCcpIHtcblx0XHRcdFx0XHR2YXIgYnVmZmVyID0gbmV3IEJ1ZmZlcihuZXdEYXRhLmxlbmd0aClcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0XHRidWZmZXJbaV0gPSBuZXdEYXRhLmNoYXJDb2RlQXQoaSkgJiAweGZmXG5cblx0XHRcdFx0XHRzZWxmLnB1c2goYnVmZmVyKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNlbGYucHVzaChuZXdEYXRhLCBzZWxmLl9jaGFyc2V0KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGYuX3BvcyA9IHJlc3BvbnNlLmxlbmd0aFxuXHRcdFx0fVxuXHRcdFx0YnJlYWtcblx0XHRjYXNlICdhcnJheWJ1ZmZlcic6XG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuRE9ORSB8fCAheGhyLnJlc3BvbnNlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2Vcblx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKG5ldyBVaW50OEFycmF5KHJlc3BvbnNlKSkpXG5cdFx0XHRicmVha1xuXHRcdGNhc2UgJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJzogLy8gdGFrZSB3aG9sZVxuXHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2Vcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5MT0FESU5HIHx8ICFyZXNwb25zZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKG5ldyBVaW50OEFycmF5KHJlc3BvbnNlKSkpXG5cdFx0XHRicmVha1xuXHRcdGNhc2UgJ21zLXN0cmVhbSc6XG5cdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkxPQURJTkcpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR2YXIgcmVhZGVyID0gbmV3IGdsb2JhbC5NU1N0cmVhbVJlYWRlcigpXG5cdFx0XHRyZWFkZXIub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0aWYgKHJlYWRlci5yZXN1bHQuYnl0ZUxlbmd0aCA+IHNlbGYuX3Bvcykge1xuXHRcdFx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKG5ldyBVaW50OEFycmF5KHJlYWRlci5yZXN1bHQuc2xpY2Uoc2VsZi5fcG9zKSkpKVxuXHRcdFx0XHRcdHNlbGYuX3BvcyA9IHJlYWRlci5yZXN1bHQuYnl0ZUxlbmd0aFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLnB1c2gobnVsbClcblx0XHRcdH1cblx0XHRcdC8vIHJlYWRlci5vbmVycm9yID0gPz8/IC8vIFRPRE86IHRoaXNcblx0XHRcdHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihyZXNwb25zZSlcblx0XHRcdGJyZWFrXG5cdH1cblxuXHQvLyBUaGUgbXMtc3RyZWFtIGNhc2UgaGFuZGxlcyBlbmQgc2VwYXJhdGVseSBpbiByZWFkZXIub25sb2FkKClcblx0aWYgKHNlbGYuX3hoci5yZWFkeVN0YXRlID09PSByU3RhdGVzLkRPTkUgJiYgc2VsZi5fbW9kZSAhPT0gJ21zLXN0cmVhbScpIHtcblx0XHRzZWxmLnB1c2gobnVsbClcblx0fVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwiZnVuY3Rpb24gQWdlbnQoKSB7XG4gIHRoaXMuX2RlZmF1bHRzID0gW107XG59XG5cbltcInVzZVwiLCBcIm9uXCIsIFwib25jZVwiLCBcInNldFwiLCBcInF1ZXJ5XCIsIFwidHlwZVwiLCBcImFjY2VwdFwiLCBcImF1dGhcIiwgXCJ3aXRoQ3JlZGVudGlhbHNcIiwgXCJzb3J0UXVlcnlcIiwgXCJyZXRyeVwiLCBcIm9rXCIsIFwicmVkaXJlY3RzXCIsXG4gXCJ0aW1lb3V0XCIsIFwiYnVmZmVyXCIsIFwic2VyaWFsaXplXCIsIFwicGFyc2VcIiwgXCJjYVwiLCBcImtleVwiLCBcInBmeFwiLCBcImNlcnRcIl0uZm9yRWFjaChmdW5jdGlvbihmbikge1xuICAvKiogRGVmYXVsdCBzZXR0aW5nIGZvciBhbGwgcmVxdWVzdHMgZnJvbSB0aGlzIGFnZW50ICovXG4gIEFnZW50LnByb3RvdHlwZVtmbl0gPSBmdW5jdGlvbigvKnZhcmFyZ3MqLykge1xuICAgIHRoaXMuX2RlZmF1bHRzLnB1c2goe2ZuOmZuLCBhcmd1bWVudHM6YXJndW1lbnRzfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn0pO1xuXG5BZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzID0gZnVuY3Rpb24ocmVxKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMuZm9yRWFjaChmdW5jdGlvbihkZWYpIHtcbiAgICAgIHJlcVtkZWYuZm5dLmFwcGx5KHJlcSwgZGVmLmFyZ3VtZW50cyk7XG4gICAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIiwiLyoqXG4gKiBSb290IHJlZmVyZW5jZSBmb3IgaWZyYW1lcy5cbiAqL1xuXG52YXIgcm9vdDtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgeyAvLyBCcm93c2VyIHdpbmRvd1xuICByb290ID0gd2luZG93O1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn0gZWxzZSB7IC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXCJVc2luZyBicm93c2VyLW9ubHkgdmVyc2lvbiBvZiBzdXBlcmFnZW50IGluIG5vbi1icm93c2VyIGVudmlyb25tZW50XCIpO1xuICByb290ID0gdGhpcztcbn1cblxudmFyIEVtaXR0ZXIgPSByZXF1aXJlKCdjb21wb25lbnQtZW1pdHRlcicpO1xudmFyIFJlcXVlc3RCYXNlID0gcmVxdWlyZSgnLi9yZXF1ZXN0LWJhc2UnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXMtb2JqZWN0Jyk7XG52YXIgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG52YXIgQWdlbnQgPSByZXF1aXJlKCcuL2FnZW50LWJhc2UnKTtcblxuLyoqXG4gKiBOb29wLlxuICovXG5cbmZ1bmN0aW9uIG5vb3AoKXt9O1xuXG4vKipcbiAqIEV4cG9zZSBgcmVxdWVzdGAuXG4gKi9cblxudmFyIHJlcXVlc3QgPSBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtZXRob2QsIHVybCkge1xuICAvLyBjYWxsYmFja1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdXJsKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCkuZW5kKHVybCk7XG4gIH1cblxuICAvLyB1cmwgZmlyc3RcbiAgaWYgKDEgPT0gYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KCdHRVQnLCBtZXRob2QpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QobWV0aG9kLCB1cmwpO1xufVxuXG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuXG4vKipcbiAqIERldGVybWluZSBYSFIuXG4gKi9cblxucmVxdWVzdC5nZXRYSFIgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChyb290LlhNTEh0dHBSZXF1ZXN0XG4gICAgICAmJiAoIXJvb3QubG9jYXRpb24gfHwgJ2ZpbGU6JyAhPSByb290LmxvY2F0aW9uLnByb3RvY29sXG4gICAgICAgICAgfHwgIXJvb3QuQWN0aXZlWE9iamVjdCkpIHtcbiAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0O1xuICB9IGVsc2Uge1xuICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTsgfSBjYXRjaChlKSB7fVxuICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuNi4wJyk7IH0gY2F0Y2goZSkge31cbiAgICB0cnkgeyByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjMuMCcpOyB9IGNhdGNoKGUpIHt9XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpOyB9IGNhdGNoKGUpIHt9XG4gIH1cbiAgdGhyb3cgRXJyb3IoXCJCcm93c2VyLW9ubHkgdmVyc2lvbiBvZiBzdXBlcmFnZW50IGNvdWxkIG5vdCBmaW5kIFhIUlwiKTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhZGRlZCB0byBzdXBwb3J0IElFLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG52YXIgdHJpbSA9ICcnLnRyaW1cbiAgPyBmdW5jdGlvbihzKSB7IHJldHVybiBzLnRyaW0oKTsgfVxuICA6IGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMucmVwbGFjZSgvKF5cXHMqfFxccyokKS9nLCAnJyk7IH07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBnaXZlbiBgb2JqYC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzZXJpYWxpemUob2JqKSB7XG4gIGlmICghaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgdmFyIHBhaXJzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCBvYmpba2V5XSk7XG4gIH1cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWwpIHtcbiAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgdmFsLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgICAgICBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgZm9yKHZhciBzdWJrZXkgaW4gdmFsKSB7XG4gICAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXkgKyAnWycgKyBzdWJrZXkgKyAnXScsIHZhbFtzdWJrZXldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFpcnMucHVzaChlbmNvZGVVUklDb21wb25lbnQoa2V5KVxuICAgICAgICArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodmFsID09PSBudWxsKSB7XG4gICAgcGFpcnMucHVzaChlbmNvZGVVUklDb21wb25lbnQoa2V5KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvc2Ugc2VyaWFsaXphdGlvbiBtZXRob2QuXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7XG5cbi8qKlxuICAqIFBhcnNlIHRoZSBnaXZlbiB4LXd3dy1mb3JtLXVybGVuY29kZWQgYHN0cmAuXG4gICpcbiAgKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gICogQHJldHVybiB7T2JqZWN0fVxuICAqIEBhcGkgcHJpdmF0ZVxuICAqL1xuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyhzdHIpIHtcbiAgdmFyIG9iaiA9IHt9O1xuICB2YXIgcGFpcnMgPSBzdHIuc3BsaXQoJyYnKTtcbiAgdmFyIHBhaXI7XG4gIHZhciBwb3M7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHBhaXJzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgcGFpciA9IHBhaXJzW2ldO1xuICAgIHBvcyA9IHBhaXIuaW5kZXhPZignPScpO1xuICAgIGlmIChwb3MgPT0gLTEpIHtcbiAgICAgIG9ialtkZWNvZGVVUklDb21wb25lbnQocGFpcildID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZSgwLCBwb3MpKV0gPVxuICAgICAgICBkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZShwb3MgKyAxKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBFeHBvc2UgcGFyc2VyLlxuICovXG5cbnJlcXVlc3QucGFyc2VTdHJpbmcgPSBwYXJzZVN0cmluZztcblxuLyoqXG4gKiBEZWZhdWx0IE1JTUUgdHlwZSBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICovXG5cbnJlcXVlc3QudHlwZXMgPSB7XG4gIGh0bWw6ICd0ZXh0L2h0bWwnLFxuICBqc29uOiAnYXBwbGljYXRpb24vanNvbicsXG4gIHhtbDogJ3RleHQveG1sJyxcbiAgdXJsZW5jb2RlZDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICdmb3JtJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICdmb3JtLWRhdGEnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IHNlcmlhbGl6YXRpb24gbWFwLlxuICpcbiAqICAgICBzdXBlcmFnZW50LnNlcmlhbGl6ZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihvYmope1xuICogICAgICAgcmV0dXJuICdnZW5lcmF0ZWQgeG1sIGhlcmUnO1xuICogICAgIH07XG4gKlxuICovXG5cbnJlcXVlc3Quc2VyaWFsaXplID0ge1xuICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzogc2VyaWFsaXplLFxuICAnYXBwbGljYXRpb24vanNvbic6IEpTT04uc3RyaW5naWZ5XG59O1xuXG4vKipcbiAgKiBEZWZhdWx0IHBhcnNlcnMuXG4gICpcbiAgKiAgICAgc3VwZXJhZ2VudC5wYXJzZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihzdHIpe1xuICAqICAgICAgIHJldHVybiB7IG9iamVjdCBwYXJzZWQgZnJvbSBzdHIgfTtcbiAgKiAgICAgfTtcbiAgKlxuICAqL1xuXG5yZXF1ZXN0LnBhcnNlID0ge1xuICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzogcGFyc2VTdHJpbmcsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5wYXJzZVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gaGVhZGVyIGBzdHJgIGludG9cbiAqIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXBwZWQgZmllbGRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVyKHN0cikge1xuICB2YXIgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKTtcbiAgdmFyIGZpZWxkcyA9IHt9O1xuICB2YXIgaW5kZXg7XG4gIHZhciBsaW5lO1xuICB2YXIgZmllbGQ7XG4gIHZhciB2YWw7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGxpbmVzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgbGluZSA9IGxpbmVzW2ldO1xuICAgIGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgeyAvLyBjb3VsZCBiZSBlbXB0eSBsaW5lLCBqdXN0IHNraXAgaXRcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBmaWVsZCA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdHJpbShsaW5lLnNsaWNlKGluZGV4ICsgMSkpO1xuICAgIGZpZWxkc1tmaWVsZF0gPSB2YWw7XG4gIH1cblxuICByZXR1cm4gZmllbGRzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGBtaW1lYCBpcyBqc29uIG9yIGhhcyAranNvbiBzdHJ1Y3R1cmVkIHN5bnRheCBzdWZmaXguXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1pbWVcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc0pTT04obWltZSkge1xuICAvLyBzaG91bGQgbWF0Y2ggL2pzb24gb3IgK2pzb25cbiAgLy8gYnV0IG5vdCAvanNvbi1zZXFcbiAgcmV0dXJuIC9bXFwvK11qc29uKCR8W14tXFx3XSkvLnRlc3QobWltZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLlxuICpcbiAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YylcbiAqICAtIHBhcnNlIGhlYWRlclxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6XG4gKlxuICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDtcbiAqXG4gKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhoclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcSkge1xuICB0aGlzLnJlcSA9IHJlcTtcbiAgdGhpcy54aHIgPSB0aGlzLnJlcS54aHI7XG4gIC8vIHJlc3BvbnNlVGV4dCBpcyBhY2Nlc3NpYmxlIG9ubHkgaWYgcmVzcG9uc2VUeXBlIGlzICcnIG9yICd0ZXh0JyBhbmQgb24gb2xkZXIgYnJvd3NlcnNcbiAgdGhpcy50ZXh0ID0gKCh0aGlzLnJlcS5tZXRob2QgIT0nSEVBRCcgJiYgKHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJycgfHwgdGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAndGV4dCcpKSB8fCB0eXBlb2YgdGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAndW5kZWZpbmVkJylcbiAgICAgPyB0aGlzLnhoci5yZXNwb25zZVRleHRcbiAgICAgOiBudWxsO1xuICB0aGlzLnN0YXR1c1RleHQgPSB0aGlzLnJlcS54aHIuc3RhdHVzVGV4dDtcbiAgdmFyIHN0YXR1cyA9IHRoaXMueGhyLnN0YXR1cztcbiAgLy8gaGFuZGxlIElFOSBidWc6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTAwNDY5NzIvbXNpZS1yZXR1cm5zLXN0YXR1cy1jb2RlLW9mLTEyMjMtZm9yLWFqYXgtcmVxdWVzdFxuICBpZiAoc3RhdHVzID09PSAxMjIzKSB7XG4gICAgc3RhdHVzID0gMjA0O1xuICB9XG4gIHRoaXMuX3NldFN0YXR1c1Byb3BlcnRpZXMoc3RhdHVzKTtcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnMgPSBwYXJzZUhlYWRlcih0aGlzLnhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7XG4gIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zIFwiXCIgZm9yIENPUlMgcmVxdWVzdHMsIGJ1dFxuICAvLyBnZXRSZXNwb25zZUhlYWRlciBzdGlsbCB3b3Jrcy4gc28gd2UgZ2V0IGNvbnRlbnQtdHlwZSBldmVuIGlmIGdldHRpbmdcbiAgLy8gb3RoZXIgaGVhZGVycyBmYWlscy5cbiAgdGhpcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gdGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcblxuICBpZiAobnVsbCA9PT0gdGhpcy50ZXh0ICYmIHJlcS5fcmVzcG9uc2VUeXBlKSB7XG4gICAgdGhpcy5ib2R5ID0gdGhpcy54aHIucmVzcG9uc2U7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5ib2R5ID0gdGhpcy5yZXEubWV0aG9kICE9ICdIRUFEJ1xuICAgICAgPyB0aGlzLl9wYXJzZUJvZHkodGhpcy50ZXh0ID8gdGhpcy50ZXh0IDogdGhpcy54aHIucmVzcG9uc2UpXG4gICAgICA6IG51bGw7XG4gIH1cbn1cblxuUmVzcG9uc2VCYXNlKFJlc3BvbnNlLnByb3RvdHlwZSk7XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGJvZHkgYHN0cmAuXG4gKlxuICogVXNlZCBmb3IgYXV0by1wYXJzaW5nIG9mIGJvZGllcy4gUGFyc2Vyc1xuICogYXJlIGRlZmluZWQgb24gdGhlIGBzdXBlcmFnZW50LnBhcnNlYCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TWl4ZWR9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZS5wcm90b3R5cGUuX3BhcnNlQm9keSA9IGZ1bmN0aW9uKHN0cikge1xuICB2YXIgcGFyc2UgPSByZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07XG4gIGlmICh0aGlzLnJlcS5fcGFyc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxLl9wYXJzZXIodGhpcywgc3RyKTtcbiAgfVxuICBpZiAoIXBhcnNlICYmIGlzSlNPTih0aGlzLnR5cGUpKSB7XG4gICAgcGFyc2UgPSByZXF1ZXN0LnBhcnNlWydhcHBsaWNhdGlvbi9qc29uJ107XG4gIH1cbiAgcmV0dXJuIHBhcnNlICYmIHN0ciAmJiAoc3RyLmxlbmd0aCB8fCBzdHIgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgPyBwYXJzZShzdHIpXG4gICAgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYW4gYEVycm9yYCByZXByZXNlbnRhdGl2ZSBvZiB0aGlzIHJlc3BvbnNlLlxuICpcbiAqIEByZXR1cm4ge0Vycm9yfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXNwb25zZS5wcm90b3R5cGUudG9FcnJvciA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZXEgPSB0aGlzLnJlcTtcbiAgdmFyIG1ldGhvZCA9IHJlcS5tZXRob2Q7XG4gIHZhciB1cmwgPSByZXEudXJsO1xuXG4gIHZhciBtc2cgPSAnY2Fubm90ICcgKyBtZXRob2QgKyAnICcgKyB1cmwgKyAnICgnICsgdGhpcy5zdGF0dXMgKyAnKSc7XG4gIHZhciBlcnIgPSBuZXcgRXJyb3IobXNnKTtcbiAgZXJyLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICBlcnIubWV0aG9kID0gbWV0aG9kO1xuICBlcnIudXJsID0gdXJsO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBgUmVzcG9uc2VgLlxuICovXG5cbnJlcXVlc3QuUmVzcG9uc2UgPSBSZXNwb25zZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXF1ZXN0YCB3aXRoIHRoZSBnaXZlbiBgbWV0aG9kYCBhbmQgYHVybGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZFxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXF1ZXN0KG1ldGhvZCwgdXJsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTtcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMudXJsID0gdXJsO1xuICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZVxuICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlXG4gIHRoaXMub24oJ2VuZCcsIGZ1bmN0aW9uKCl7XG4gICAgdmFyIGVyciA9IG51bGw7XG4gICAgdmFyIHJlcyA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmVzID0gbmV3IFJlc3BvbnNlKHNlbGYpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgZXJyID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpO1xuICAgICAgZXJyLnBhcnNlID0gdHJ1ZTtcbiAgICAgIGVyci5vcmlnaW5hbCA9IGU7XG4gICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgaWYgKHNlbGYueGhyKSB7XG4gICAgICAgIC8vIGllOSBkb2Vzbid0IGhhdmUgJ3Jlc3BvbnNlJyBwcm9wZXJ0eVxuICAgICAgICBlcnIucmF3UmVzcG9uc2UgPSB0eXBlb2Ygc2VsZi54aHIucmVzcG9uc2VUeXBlID09ICd1bmRlZmluZWQnID8gc2VsZi54aHIucmVzcG9uc2VUZXh0IDogc2VsZi54aHIucmVzcG9uc2U7XG4gICAgICAgIC8vIGlzc3VlICM4NzY6IHJldHVybiB0aGUgaHR0cCBzdGF0dXMgY29kZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgICBlcnIuc3RhdHVzID0gc2VsZi54aHIuc3RhdHVzID8gc2VsZi54aHIuc3RhdHVzIDogbnVsbDtcbiAgICAgICAgZXJyLnN0YXR1c0NvZGUgPSBlcnIuc3RhdHVzOyAvLyBiYWNrd2FyZHMtY29tcGF0IG9ubHlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVyci5yYXdSZXNwb25zZSA9IG51bGw7XG4gICAgICAgIGVyci5zdGF0dXMgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZi5jYWxsYmFjayhlcnIpO1xuICAgIH1cblxuICAgIHNlbGYuZW1pdCgncmVzcG9uc2UnLCByZXMpO1xuXG4gICAgdmFyIG5ld19lcnI7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2VsZi5faXNSZXNwb25zZU9LKHJlcykpIHtcbiAgICAgICAgbmV3X2VyciA9IG5ldyBFcnJvcihyZXMuc3RhdHVzVGV4dCB8fCAnVW5zdWNjZXNzZnVsIEhUVFAgcmVzcG9uc2UnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGN1c3RvbV9lcnIpIHtcbiAgICAgIG5ld19lcnIgPSBjdXN0b21fZXJyOyAvLyBvaygpIGNhbGxiYWNrIGNhbiB0aHJvd1xuICAgIH1cblxuICAgIC8vICMxMDAwIGRvbid0IGNhdGNoIGVycm9ycyBmcm9tIHRoZSBjYWxsYmFjayB0byBhdm9pZCBkb3VibGUgY2FsbGluZyBpdFxuICAgIGlmIChuZXdfZXJyKSB7XG4gICAgICBuZXdfZXJyLm9yaWdpbmFsID0gZXJyO1xuICAgICAgbmV3X2Vyci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnIuc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgICAgIHNlbGYuY2FsbGJhY2sobmV3X2VyciwgcmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5jYWxsYmFjayhudWxsLCByZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogTWl4aW4gYEVtaXR0ZXJgIGFuZCBgUmVxdWVzdEJhc2VgLlxuICovXG5cbkVtaXR0ZXIoUmVxdWVzdC5wcm90b3R5cGUpO1xuUmVxdWVzdEJhc2UoUmVxdWVzdC5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICogICAgICByZXF1ZXN0LnBvc3QoJy8nKVxuICogICAgICAgIC50eXBlKCd4bWwnKVxuICogICAgICAgIC5zZW5kKHhtbHN0cmluZylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uKHR5cGUpe1xuICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgcmVxdWVzdC50eXBlc1t0eXBlXSB8fCB0eXBlKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBBY2NlcHQgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMuanNvbiA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAqXG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvYWdlbnQnKVxuICogICAgICAgIC5hY2NlcHQoJ2pzb24nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnYXBwbGljYXRpb24vanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFjY2VwdFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uKHR5cGUpe1xuICB0aGlzLnNldCgnQWNjZXB0JywgcmVxdWVzdC50eXBlc1t0eXBlXSB8fCB0eXBlKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBBdXRob3JpemF0aW9uIGZpZWxkIHZhbHVlIHdpdGggYHVzZXJgIGFuZCBgcGFzc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVzZXJcbiAqIEBwYXJhbSB7U3RyaW5nfSBbcGFzc10gb3B0aW9uYWwgaW4gY2FzZSBvZiB1c2luZyAnYmVhcmVyJyBhcyB0eXBlXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyB3aXRoICd0eXBlJyBwcm9wZXJ0eSAnYXV0bycsICdiYXNpYycgb3IgJ2JlYXJlcicgKGRlZmF1bHQgJ2Jhc2ljJylcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdXRoID0gZnVuY3Rpb24odXNlciwgcGFzcywgb3B0aW9ucyl7XG4gIGlmICgxID09PSBhcmd1bWVudHMubGVuZ3RoKSBwYXNzID0gJyc7XG4gIGlmICh0eXBlb2YgcGFzcyA9PT0gJ29iamVjdCcgJiYgcGFzcyAhPT0gbnVsbCkgeyAvLyBwYXNzIGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHBhc3M7XG4gICAgcGFzcyA9ICcnO1xuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICB0eXBlOiAnZnVuY3Rpb24nID09PSB0eXBlb2YgYnRvYSA/ICdiYXNpYycgOiAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIHZhciBlbmNvZGVyID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBidG9hKSB7XG4gICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgYmFzaWMgYXV0aCwgYnRvYSBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9O1xuXG4gIHJldHVybiB0aGlzLl9hdXRoKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGVuY29kZXIpO1xufTtcblxuLyoqXG4gKiBBZGQgcXVlcnktc3RyaW5nIGB2YWxgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgcmVxdWVzdC5nZXQoJy9zaG9lcycpXG4gKiAgICAgLnF1ZXJ5KCdzaXplPTEwJylcbiAqICAgICAucXVlcnkoeyBjb2xvcjogJ2JsdWUnIH0pXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKHZhbCl7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgdmFsKSB2YWwgPSBzZXJpYWxpemUodmFsKTtcbiAgaWYgKHZhbCkgdGhpcy5fcXVlcnkucHVzaCh2YWwpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUXVldWUgdGhlIGdpdmVuIGBmaWxlYCBhcyBhbiBhdHRhY2htZW50IHRvIHRoZSBzcGVjaWZpZWQgYGZpZWxkYCxcbiAqIHdpdGggb3B0aW9uYWwgYG9wdGlvbnNgIChvciBmaWxlbmFtZSkuXG4gKlxuICogYGBgIGpzXG4gKiByZXF1ZXN0LnBvc3QoJy91cGxvYWQnKVxuICogICAuYXR0YWNoKCdjb250ZW50JywgbmV3IEJsb2IoWyc8YSBpZD1cImFcIj48YiBpZD1cImJcIj5oZXkhPC9iPjwvYT4nXSwgeyB0eXBlOiBcInRleHQvaHRtbFwifSkpXG4gKiAgIC5lbmQoY2FsbGJhY2spO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcGFyYW0ge0Jsb2J8RmlsZX0gZmlsZVxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXR0YWNoID0gZnVuY3Rpb24oZmllbGQsIGZpbGUsIG9wdGlvbnMpe1xuICBpZiAoZmlsZSkge1xuICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICB0aHJvdyBFcnJvcihcInN1cGVyYWdlbnQgY2FuJ3QgbWl4IC5zZW5kKCkgYW5kIC5hdHRhY2goKVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChmaWVsZCwgZmlsZSwgb3B0aW9ucyB8fCBmaWxlLm5hbWUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuX2dldEZvcm1EYXRhID0gZnVuY3Rpb24oKXtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fZm9ybURhdGE7XG59O1xuXG4vKipcbiAqIEludm9rZSB0aGUgY2FsbGJhY2sgd2l0aCBgZXJyYCBhbmQgYHJlc2BcbiAqIGFuZCBoYW5kbGUgYXJpdHkgY2hlY2suXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNhbGxiYWNrID0gZnVuY3Rpb24oZXJyLCByZXMpe1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyLCByZXMpKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHJ5KCk7XG4gIH1cblxuICB2YXIgZm4gPSB0aGlzLl9jYWxsYmFjaztcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcblxuICBpZiAoZXJyKSB7XG4gICAgaWYgKHRoaXMuX21heFJldHJpZXMpIGVyci5yZXRyaWVzID0gdGhpcy5fcmV0cmllcyAtIDE7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gIH1cblxuICBmbihlcnIsIHJlcyk7XG59O1xuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbigpe1xuICB2YXIgZXJyID0gbmV3IEVycm9yKCdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuJyk7XG4gIGVyci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICBlcnIubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gIGVyci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycik7XG59O1xuXG4vLyBUaGlzIG9ubHkgd2FybnMsIGJlY2F1c2UgdGhlIHJlcXVlc3QgaXMgc3RpbGwgbGlrZWx5IHRvIHdvcmtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhID0gUmVxdWVzdC5wcm90b3R5cGUuYWdlbnQgPSBmdW5jdGlvbigpe1xuICBjb25zb2xlLndhcm4oXCJUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnRcIik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gVGhpcyB0aHJvd3MsIGJlY2F1c2UgaXQgY2FuJ3Qgc2VuZC9yZWNlaXZlIGRhdGEgYXMgZXhwZWN0ZWRcblJlcXVlc3QucHJvdG90eXBlLnBpcGUgPSBSZXF1ZXN0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKCl7XG4gIHRocm93IEVycm9yKFwiU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnRcIik7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGEgaG9zdCBvYmplY3QsXG4gKiB3ZSBkb24ndCB3YW50IHRvIHNlcmlhbGl6ZSB0aGVzZSA6KVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuUmVxdWVzdC5wcm90b3R5cGUuX2lzSG9zdCA9IGZ1bmN0aW9uIF9pc0hvc3Qob2JqKSB7XG4gIC8vIE5hdGl2ZSBvYmplY3RzIHN0cmluZ2lmeSB0byBbb2JqZWN0IEZpbGVdLCBbb2JqZWN0IEJsb2JdLCBbb2JqZWN0IEZvcm1EYXRhXSwgZXRjLlxuICByZXR1cm4gb2JqICYmICdvYmplY3QnID09PSB0eXBlb2Ygb2JqICYmICFBcnJheS5pc0FycmF5KG9iaikgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgIT09ICdbb2JqZWN0IE9iamVjdF0nO1xufVxuXG4vKipcbiAqIEluaXRpYXRlIHJlcXVlc3QsIGludm9raW5nIGNhbGxiYWNrIGBmbihyZXMpYFxuICogd2l0aCBhbiBpbnN0YW5jZW9mIGBSZXNwb25zZWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbihmbil7XG4gIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiAuZW5kKCkgd2FzIGNhbGxlZCB0d2ljZS4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIHN1cGVyYWdlbnRcIik7XG4gIH1cbiAgdGhpcy5fZW5kQ2FsbGVkID0gdHJ1ZTtcblxuICAvLyBzdG9yZSBjYWxsYmFja1xuICB0aGlzLl9jYWxsYmFjayA9IGZuIHx8IG5vb3A7XG5cbiAgLy8gcXVlcnlzdHJpbmdcbiAgdGhpcy5fZmluYWxpemVRdWVyeVN0cmluZygpO1xuXG4gIHJldHVybiB0aGlzLl9lbmQoKTtcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLl9lbmQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgeGhyID0gKHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKSk7XG4gIHZhciBkYXRhID0gdGhpcy5fZm9ybURhdGEgfHwgdGhpcy5fZGF0YTtcblxuICB0aGlzLl9zZXRUaW1lb3V0cygpO1xuXG4gIC8vIHN0YXRlIGNoYW5nZVxuICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgcmVhZHlTdGF0ZSA9IHhoci5yZWFkeVN0YXRlO1xuICAgIGlmIChyZWFkeVN0YXRlID49IDIgJiYgc2VsZi5fcmVzcG9uc2VUaW1lb3V0VGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dChzZWxmLl9yZXNwb25zZVRpbWVvdXRUaW1lcik7XG4gICAgfVxuICAgIGlmICg0ICE9IHJlYWR5U3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJbiBJRTksIHJlYWRzIHRvIGFueSBwcm9wZXJ0eSAoZS5nLiBzdGF0dXMpIG9mZiBvZiBhbiBhYm9ydGVkIFhIUiB3aWxsXG4gICAgLy8gcmVzdWx0IGluIHRoZSBlcnJvciBcIkNvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciBjMDBjMDIzZlwiXG4gICAgdmFyIHN0YXR1cztcbiAgICB0cnkgeyBzdGF0dXMgPSB4aHIuc3RhdHVzIH0gY2F0Y2goZSkgeyBzdGF0dXMgPSAwOyB9XG5cbiAgICBpZiAoIXN0YXR1cykge1xuICAgICAgaWYgKHNlbGYudGltZWRvdXQgfHwgc2VsZi5fYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIHNlbGYuY3Jvc3NEb21haW5FcnJvcigpO1xuICAgIH1cbiAgICBzZWxmLmVtaXQoJ2VuZCcpO1xuICB9O1xuXG4gIC8vIHByb2dyZXNzXG4gIHZhciBoYW5kbGVQcm9ncmVzcyA9IGZ1bmN0aW9uKGRpcmVjdGlvbiwgZSkge1xuICAgIGlmIChlLnRvdGFsID4gMCkge1xuICAgICAgZS5wZXJjZW50ID0gZS5sb2FkZWQgLyBlLnRvdGFsICogMTAwO1xuICAgIH1cbiAgICBlLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICBzZWxmLmVtaXQoJ3Byb2dyZXNzJywgZSk7XG4gIH07XG4gIGlmICh0aGlzLmhhc0xpc3RlbmVycygncHJvZ3Jlc3MnKSkge1xuICAgIHRyeSB7XG4gICAgICB4aHIub25wcm9ncmVzcyA9IGhhbmRsZVByb2dyZXNzLmJpbmQobnVsbCwgJ2Rvd25sb2FkJyk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIC8vIEFjY2Vzc2luZyB4aHIudXBsb2FkIGZhaWxzIGluIElFIGZyb20gYSB3ZWIgd29ya2VyLCBzbyBqdXN0IHByZXRlbmQgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgIC8vIFJlcG9ydGVkIGhlcmU6XG4gICAgICAvLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzgzNzI0NS94bWxodHRwcmVxdWVzdC11cGxvYWQtdGhyb3dzLWludmFsaWQtYXJndW1lbnQtd2hlbi11c2VkLWZyb20td2ViLXdvcmtlci1jb250ZXh0XG4gICAgfVxuICB9XG5cbiAgLy8gaW5pdGlhdGUgcmVxdWVzdFxuICB0cnkge1xuICAgIGlmICh0aGlzLnVzZXJuYW1lICYmIHRoaXMucGFzc3dvcmQpIHtcbiAgICAgIHhoci5vcGVuKHRoaXMubWV0aG9kLCB0aGlzLnVybCwgdHJ1ZSwgdGhpcy51c2VybmFtZSwgdGhpcy5wYXNzd29yZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHhoci5vcGVuKHRoaXMubWV0aG9kLCB0aGlzLnVybCwgdHJ1ZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBzZWUgIzExNDlcbiAgICByZXR1cm4gdGhpcy5jYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgLy8gQ09SU1xuICBpZiAodGhpcy5fd2l0aENyZWRlbnRpYWxzKSB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcblxuICAvLyBib2R5XG4gIGlmICghdGhpcy5fZm9ybURhdGEgJiYgJ0dFVCcgIT0gdGhpcy5tZXRob2QgJiYgJ0hFQUQnICE9IHRoaXMubWV0aG9kICYmICdzdHJpbmcnICE9IHR5cGVvZiBkYXRhICYmICF0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICAvLyBzZXJpYWxpemUgc3R1ZmZcbiAgICB2YXIgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIHZhciBzZXJpYWxpemUgPSB0aGlzLl9zZXJpYWxpemVyIHx8IHJlcXVlc3Quc2VyaWFsaXplW2NvbnRlbnRUeXBlID8gY29udGVudFR5cGUuc3BsaXQoJzsnKVswXSA6ICcnXTtcbiAgICBpZiAoIXNlcmlhbGl6ZSAmJiBpc0pTT04oY29udGVudFR5cGUpKSB7XG4gICAgICBzZXJpYWxpemUgPSByZXF1ZXN0LnNlcmlhbGl6ZVsnYXBwbGljYXRpb24vanNvbiddO1xuICAgIH1cbiAgICBpZiAoc2VyaWFsaXplKSBkYXRhID0gc2VyaWFsaXplKGRhdGEpO1xuICB9XG5cbiAgLy8gc2V0IGhlYWRlciBmaWVsZHNcbiAgZm9yICh2YXIgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAobnVsbCA9PSB0aGlzLmhlYWRlcltmaWVsZF0pIGNvbnRpbnVlO1xuXG4gICAgaWYgKHRoaXMuaGVhZGVyLmhhc093blByb3BlcnR5KGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJyA/IGRhdGEgOiBudWxsKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5yZXF1ZXN0LmFnZW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgQWdlbnQoKTtcbn07XG5cbltcIkdFVFwiLCBcIlBPU1RcIiwgXCJPUFRJT05TXCIsIFwiUEFUQ0hcIiwgXCJQVVRcIiwgXCJERUxFVEVcIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgQWdlbnQucHJvdG90eXBlW21ldGhvZC50b0xvd2VyQ2FzZSgpXSA9IGZ1bmN0aW9uKHVybCwgZm4pIHtcbiAgICB2YXIgcmVxID0gbmV3IHJlcXVlc3QuUmVxdWVzdChtZXRob2QsIHVybCk7XG4gICAgdGhpcy5fc2V0RGVmYXVsdHMocmVxKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcS5lbmQoZm4pO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9O1xufSk7XG5cbkFnZW50LnByb3RvdHlwZS5kZWwgPSBBZ2VudC5wcm90b3R5cGVbJ2RlbGV0ZSddO1xuXG4vKipcbiAqIEdFVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QuZ2V0ID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbikge1xuICB2YXIgcmVxID0gcmVxdWVzdCgnR0VUJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBIRUFEIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5oZWFkID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbikge1xuICB2YXIgcmVxID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5xdWVyeShkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn07XG5cbi8qKlxuICogT1BUSU9OUyBxdWVyeSB0byBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3Qub3B0aW9ucyA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ09QVElPTlMnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn07XG5cbi8qKlxuICogREVMRVRFIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkZWwodXJsLCBkYXRhLCBmbikge1xuICB2YXIgcmVxID0gcmVxdWVzdCgnREVMRVRFJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59XG5cbnJlcXVlc3RbJ2RlbCddID0gZGVsO1xucmVxdWVzdFsnZGVsZXRlJ10gPSBkZWw7XG5cbi8qKlxuICogUEFUQ0ggYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucGF0Y2ggPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdQQVRDSCcsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdQT1NUJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIFBVVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wdXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdQVVQnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgcmV0dXJuIG51bGwgIT09IG9iaiAmJiAnb2JqZWN0JyA9PT0gdHlwZW9mIG9iajtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlXG4gKi9cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXMtb2JqZWN0Jyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXF1ZXN0QmFzZWAuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBSZXF1ZXN0QmFzZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXF1ZXN0QmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXF1ZXN0QmFzZShvYmopIHtcbiAgaWYgKG9iaikgcmV0dXJuIG1peGluKG9iaik7XG59XG5cbi8qKlxuICogTWl4aW4gdGhlIHByb3RvdHlwZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1peGluKG9iaikge1xuICBmb3IgKHZhciBrZXkgaW4gUmVxdWVzdEJhc2UucHJvdG90eXBlKSB7XG4gICAgb2JqW2tleV0gPSBSZXF1ZXN0QmFzZS5wcm90b3R5cGVba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIENsZWFyIHByZXZpb3VzIHRpbWVvdXQuXG4gKlxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5jbGVhclRpbWVvdXQgPSBmdW5jdGlvbiBfY2xlYXJUaW1lb3V0KCl7XG4gIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gIGNsZWFyVGltZW91dCh0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lcik7XG4gIGRlbGV0ZSB0aGlzLl90aW1lcjtcbiAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCByZXNwb25zZSBib2R5IHBhcnNlclxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBpbmNvbWluZyBkYXRhIGludG8gcmVxdWVzdC5ib2R5XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gcGFyc2UoZm4pe1xuICB0aGlzLl9wYXJzZXIgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBmb3JtYXQgb2YgYmluYXJ5IHJlc3BvbnNlIGJvZHkuXG4gKiBJbiBicm93c2VyIHZhbGlkIGZvcm1hdHMgYXJlICdibG9iJyBhbmQgJ2FycmF5YnVmZmVyJyxcbiAqIHdoaWNoIHJldHVybiBCbG9iIGFuZCBBcnJheUJ1ZmZlciwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEluIE5vZGUgYWxsIHZhbHVlcyByZXN1bHQgaW4gQnVmZmVyLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgcmVxLmdldCgnLycpXG4gKiAgICAgICAgLnJlc3BvbnNlVHlwZSgnYmxvYicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXNwb25zZVR5cGUgPSBmdW5jdGlvbih2YWwpe1xuICB0aGlzLl9yZXNwb25zZVR5cGUgPSB2YWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlcXVlc3QgYm9keSBzZXJpYWxpemVyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGRhdGEgc2V0IHZpYSAuc2VuZCBvciAuYXR0YWNoIGludG8gcGF5bG9hZCB0byBzZW5kXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uIHNlcmlhbGl6ZShmbil7XG4gIHRoaXMuX3NlcmlhbGl6ZXIgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aW1lb3V0cy5cbiAqXG4gKiAtIHJlc3BvbnNlIHRpbWVvdXQgaXMgdGltZSBiZXR3ZWVuIHNlbmRpbmcgcmVxdWVzdCBhbmQgcmVjZWl2aW5nIHRoZSBmaXJzdCBieXRlIG9mIHRoZSByZXNwb25zZS4gSW5jbHVkZXMgRE5TIGFuZCBjb25uZWN0aW9uIHRpbWUuXG4gKiAtIGRlYWRsaW5lIGlzIHRoZSB0aW1lIGZyb20gc3RhcnQgb2YgdGhlIHJlcXVlc3QgdG8gcmVjZWl2aW5nIHJlc3BvbnNlIGJvZHkgaW4gZnVsbC4gSWYgdGhlIGRlYWRsaW5lIGlzIHRvbyBzaG9ydCBsYXJnZSBmaWxlcyBtYXkgbm90IGxvYWQgYXQgYWxsIG9uIHNsb3cgY29ubmVjdGlvbnMuXG4gKlxuICogVmFsdWUgb2YgMCBvciBmYWxzZSBtZWFucyBubyB0aW1lb3V0LlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfE9iamVjdH0gbXMgb3Ige3Jlc3BvbnNlLCBkZWFkbGluZX1cbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudGltZW91dCA9IGZ1bmN0aW9uIHRpbWVvdXQob3B0aW9ucyl7XG4gIGlmICghb3B0aW9ucyB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9wdGlvbnMpIHtcbiAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucztcbiAgICB0aGlzLl9yZXNwb25zZVRpbWVvdXQgPSAwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZm9yKHZhciBvcHRpb24gaW4gb3B0aW9ucykge1xuICAgIHN3aXRjaChvcHRpb24pIHtcbiAgICAgIGNhc2UgJ2RlYWRsaW5lJzpcbiAgICAgICAgdGhpcy5fdGltZW91dCA9IG9wdGlvbnMuZGVhZGxpbmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVzcG9uc2UnOlxuICAgICAgICB0aGlzLl9yZXNwb25zZVRpbWVvdXQgPSBvcHRpb25zLnJlc3BvbnNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybihcIlVua25vd24gdGltZW91dCBvcHRpb25cIiwgb3B0aW9uKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgb24gZXJyb3IuXG4gKlxuICogRmFpbGVkIHJlcXVlc3RzIHdpbGwgYmUgcmV0cmllZCAnY291bnQnIHRpbWVzIGlmIHRpbWVvdXQgb3IgZXJyLmNvZGUgPj0gNTAwLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeSA9IGZ1bmN0aW9uIHJldHJ5KGNvdW50LCBmbil7XG4gIC8vIERlZmF1bHQgdG8gMSBpZiBubyBjb3VudCBwYXNzZWQgb3IgdHJ1ZVxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCB8fCBjb3VudCA9PT0gdHJ1ZSkgY291bnQgPSAxO1xuICBpZiAoY291bnQgPD0gMCkgY291bnQgPSAwO1xuICB0aGlzLl9tYXhSZXRyaWVzID0gY291bnQ7XG4gIHRoaXMuX3JldHJpZXMgPSAwO1xuICB0aGlzLl9yZXRyeUNhbGxiYWNrID0gZm47XG4gIHJldHVybiB0aGlzO1xufTtcblxudmFyIEVSUk9SX0NPREVTID0gW1xuICAnRUNPTk5SRVNFVCcsXG4gICdFVElNRURPVVQnLFxuICAnRUFERFJJTkZPJyxcbiAgJ0VTT0NLRVRUSU1FRE9VVCdcbl07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZC5cbiAqIChCb3Jyb3dlZCBmcm9tIHNlZ21lbnRpby9zdXBlcmFnZW50LXJldHJ5KVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHBhcmFtIHtSZXNwb25zZX0gW3Jlc11cbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3Nob3VsZFJldHJ5ID0gZnVuY3Rpb24oZXJyLCByZXMpIHtcbiAgaWYgKCF0aGlzLl9tYXhSZXRyaWVzIHx8IHRoaXMuX3JldHJpZXMrKyA+PSB0aGlzLl9tYXhSZXRyaWVzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLl9yZXRyeUNhbGxiYWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBvdmVycmlkZSA9IHRoaXMuX3JldHJ5Q2FsbGJhY2soZXJyLCByZXMpO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSB0cnVlKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChvdmVycmlkZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIHVuZGVmaW5lZCBmYWxscyBiYWNrIHRvIGRlZmF1bHRzXG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBpZiAocmVzICYmIHJlcy5zdGF0dXMgJiYgcmVzLnN0YXR1cyA+PSA1MDAgJiYgcmVzLnN0YXR1cyAhPSA1MDEpIHJldHVybiB0cnVlO1xuICBpZiAoZXJyKSB7XG4gICAgaWYgKGVyci5jb2RlICYmIH5FUlJPUl9DT0RFUy5pbmRleE9mKGVyci5jb2RlKSkgcmV0dXJuIHRydWU7XG4gICAgLy8gU3VwZXJhZ2VudCB0aW1lb3V0XG4gICAgaWYgKGVyci50aW1lb3V0ICYmIGVyci5jb2RlID09ICdFQ09OTkFCT1JURUQnKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZXJyLmNyb3NzRG9tYWluKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJldHJ5IHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fcmV0cnkgPSBmdW5jdGlvbigpIHtcblxuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuXG4gIC8vIG5vZGVcbiAgaWYgKHRoaXMucmVxKSB7XG4gICAgdGhpcy5yZXEgPSBudWxsO1xuICAgIHRoaXMucmVxID0gdGhpcy5yZXF1ZXN0KCk7XG4gIH1cblxuICB0aGlzLl9hYm9ydGVkID0gZmFsc2U7XG4gIHRoaXMudGltZWRvdXQgPSBmYWxzZTtcblxuICByZXR1cm4gdGhpcy5fZW5kKCk7XG59O1xuXG4vKipcbiAqIFByb21pc2Ugc3VwcG9ydFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZWplY3RdXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gdGhlbihyZXNvbHZlLCByZWplY3QpIHtcbiAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAodGhpcy5fZW5kQ2FsbGVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBzdXBlcmFnZW50IHJlcXVlc3Qgd2FzIHNlbnQgdHdpY2UsIGJlY2F1c2UgYm90aCAuZW5kKCkgYW5kIC50aGVuKCkgd2VyZSBjYWxsZWQuIE5ldmVyIGNhbGwgLmVuZCgpIGlmIHlvdSB1c2UgcHJvbWlzZXNcIik7XG4gICAgfVxuICAgIHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oaW5uZXJSZXNvbHZlLCBpbm5lclJlamVjdCkge1xuICAgICAgc2VsZi5lbmQoZnVuY3Rpb24oZXJyLCByZXMpIHtcbiAgICAgICAgaWYgKGVycikgaW5uZXJSZWplY3QoZXJyKTtcbiAgICAgICAgZWxzZSBpbm5lclJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihjYikge1xuICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgY2IpO1xufTtcblxuLyoqXG4gKiBBbGxvdyBmb3IgZXh0ZW5zaW9uXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmbikge1xuICBmbih0aGlzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUub2sgPSBmdW5jdGlvbihjYikge1xuICBpZiAoJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIGNiKSB0aHJvdyBFcnJvcihcIkNhbGxiYWNrIHJlcXVpcmVkXCIpO1xuICB0aGlzLl9va0NhbGxiYWNrID0gY2I7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9pc1Jlc3BvbnNlT0sgPSBmdW5jdGlvbihyZXMpIHtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fb2tDYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9va0NhbGxiYWNrKHJlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMDtcbn07XG5cbi8qKlxuICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZmllbGQpe1xuICByZXR1cm4gdGhpcy5faGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldO1xufTtcblxuLyoqXG4gKiBHZXQgY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgYGZpZWxkYCB2YWx1ZS5cbiAqIFRoaXMgaXMgYSBkZXByZWNhdGVkIGludGVybmFsIEFQSS4gVXNlIGAuZ2V0KGZpZWxkKWAgaW5zdGVhZC5cbiAqXG4gKiAoZ2V0SGVhZGVyIGlzIG5vIGxvbmdlciB1c2VkIGludGVybmFsbHkgYnkgdGhlIHN1cGVyYWdlbnQgY29kZSBiYXNlKVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKiBAZGVwcmVjYXRlZFxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXRIZWFkZXIgPSBSZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0O1xuXG4vKipcbiAqIFNldCBoZWFkZXIgYGZpZWxkYCB0byBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpXG4gKiAgICAgICAgLnNldCgnWC1BUEktS2V5JywgJ2Zvb2JhcicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAuc2V0KHsgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsICdYLUFQSS1LZXknOiAnZm9vYmFyJyB9KVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gZmllbGRcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZmllbGQsIHZhbCl7XG4gIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZmllbGQpIHtcbiAgICAgIHRoaXMuc2V0KGtleSwgZmllbGRba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXSA9IHZhbDtcbiAgdGhpcy5oZWFkZXJbZmllbGRdID0gdmFsO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmVtb3ZlIGhlYWRlciBgZmllbGRgLlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICAgcmVxLmdldCgnLycpXG4gKiAgICAgICAgLnVuc2V0KCdVc2VyLUFnZW50JylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24oZmllbGQpe1xuICBkZWxldGUgdGhpcy5faGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldO1xuICBkZWxldGUgdGhpcy5oZWFkZXJbZmllbGRdO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV3JpdGUgdGhlIGZpZWxkIGBuYW1lYCBhbmQgYHZhbGAsIG9yIG11bHRpcGxlIGZpZWxkcyB3aXRoIG9uZSBvYmplY3RcbiAqIGZvciBcIm11bHRpcGFydC9mb3JtLWRhdGFcIiByZXF1ZXN0IGJvZGllcy5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5maWVsZCgnZm9vJywgJ2JhcicpXG4gKiAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5maWVsZCh7IGZvbzogJ2JhcicsIGJhejogJ3F1eCcgfSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG5hbWVcbiAqIEBwYXJhbSB7U3RyaW5nfEJsb2J8RmlsZXxCdWZmZXJ8ZnMuUmVhZFN0cmVhbX0gdmFsXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5maWVsZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbCkge1xuICAvLyBuYW1lIHNob3VsZCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0LlxuICBpZiAobnVsbCA9PT0gbmFtZSB8fCB1bmRlZmluZWQgPT09IG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy5maWVsZChuYW1lLCB2YWwpIG5hbWUgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIik7XG4gIH1cblxuICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gbmFtZSkge1xuICAgICAgdGhpcy5maWVsZChrZXksIG5hbWVba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIGZvciAodmFyIGkgaW4gdmFsKSB7XG4gICAgICB0aGlzLmZpZWxkKG5hbWUsIHZhbFtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdmFsIHNob3VsZCBiZSBkZWZpbmVkIG5vd1xuICBpZiAobnVsbCA9PT0gdmFsIHx8IHVuZGVmaW5lZCA9PT0gdmFsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCcuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG4gIGlmICgnYm9vbGVhbicgPT09IHR5cGVvZiB2YWwpIHtcbiAgICB2YWwgPSAnJyArIHZhbDtcbiAgfVxuICB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChuYW1lLCB2YWwpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWJvcnQgdGhlIHJlcXVlc3QsIGFuZCBjbGVhciBwb3RlbnRpYWwgdGltZW91dC5cbiAqXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24oKXtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB0aGlzLl9hYm9ydGVkID0gdHJ1ZTtcbiAgdGhpcy54aHIgJiYgdGhpcy54aHIuYWJvcnQoKTsgLy8gYnJvd3NlclxuICB0aGlzLnJlcSAmJiB0aGlzLnJlcS5hYm9ydCgpOyAvLyBub2RlXG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG4gIHRoaXMuZW1pdCgnYWJvcnQnKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2F1dGggPSBmdW5jdGlvbih1c2VyLCBwYXNzLCBvcHRpb25zLCBiYXNlNjRFbmNvZGVyKSB7XG4gIHN3aXRjaCAob3B0aW9ucy50eXBlKSB7XG4gICAgY2FzZSAnYmFzaWMnOlxuICAgICAgdGhpcy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJhc2U2NEVuY29kZXIodXNlciArICc6JyArIHBhc3MpKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYXV0byc6XG4gICAgICB0aGlzLnVzZXJuYW1lID0gdXNlcjtcbiAgICAgIHRoaXMucGFzc3dvcmQgPSBwYXNzO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdiZWFyZXInOiAvLyB1c2FnZSB3b3VsZCBiZSAuYXV0aChhY2Nlc3NUb2tlbiwgeyB0eXBlOiAnYmVhcmVyJyB9KVxuICAgICAgdGhpcy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB1c2VyKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBFbmFibGUgdHJhbnNtaXNzaW9uIG9mIGNvb2tpZXMgd2l0aCB4LWRvbWFpbiByZXF1ZXN0cy5cbiAqXG4gKiBOb3RlIHRoYXQgZm9yIHRoaXMgdG8gd29yayB0aGUgb3JpZ2luIG11c3Qgbm90IGJlXG4gKiB1c2luZyBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiIHdpdGggYSB3aWxkY2FyZCxcbiAqIGFuZCBhbHNvIG11c3Qgc2V0IFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNcIlxuICogdG8gXCJ0cnVlXCIuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUud2l0aENyZWRlbnRpYWxzID0gZnVuY3Rpb24ob24pIHtcbiAgLy8gVGhpcyBpcyBicm93c2VyLW9ubHkgZnVuY3Rpb25hbGl0eS4gTm9kZSBzaWRlIGlzIG5vLW9wLlxuICBpZiAob24gPT0gdW5kZWZpbmVkKSBvbiA9IHRydWU7XG4gIHRoaXMuX3dpdGhDcmVkZW50aWFscyA9IG9uO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBtYXggcmVkaXJlY3RzIHRvIGBuYC4gRG9lcyBub3RpbmcgaW4gYnJvd3NlciBYSFIgaW1wbGVtZW50YXRpb24uXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG5cbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucmVkaXJlY3RzID0gZnVuY3Rpb24obil7XG4gIHRoaXMuX21heFJlZGlyZWN0cyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBNYXhpbXVtIHNpemUgb2YgYnVmZmVyZWQgcmVzcG9uc2UgYm9keSwgaW4gYnl0ZXMuIENvdW50cyB1bmNvbXByZXNzZWQgc2l6ZS5cbiAqIERlZmF1bHQgMjAwTUIuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG5cbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUubWF4UmVzcG9uc2VTaXplID0gZnVuY3Rpb24obil7XG4gIGlmICgnbnVtYmVyJyAhPT0gdHlwZW9mIG4pIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50XCIpO1xuICB9XG4gIHRoaXMuX21heFJlc3BvbnNlU2l6ZSA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRvIGEgcGxhaW4gamF2YXNjcmlwdCBvYmplY3QgKG5vdCBKU09OIHN0cmluZykgb2Ygc2NhbGFyIHByb3BlcnRpZXMuXG4gKiBOb3RlIGFzIHRoaXMgbWV0aG9kIGlzIGRlc2lnbmVkIHRvIHJldHVybiBhIHVzZWZ1bCBub24tdGhpcyB2YWx1ZSxcbiAqIGl0IGNhbm5vdCBiZSBjaGFpbmVkLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH0gZGVzY3JpYmluZyBtZXRob2QsIHVybCwgYW5kIGRhdGEgb2YgdGhpcyByZXF1ZXN0XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgIHVybDogdGhpcy51cmwsXG4gICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXIsXG4gIH07XG59O1xuXG4vKipcbiAqIFNlbmQgYGRhdGFgIGFzIHRoZSByZXF1ZXN0IGJvZHksIGRlZmF1bHRpbmcgdGhlIGAudHlwZSgpYCB0byBcImpzb25cIiB3aGVuXG4gKiBhbiBvYmplY3QgaXMgZ2l2ZW4uXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgICAgLy8gbWFudWFsIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnanNvbicpXG4gKiAgICAgICAgIC5zZW5kKCd7XCJuYW1lXCI6XCJ0alwifScpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byBqc29uXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gbWFudWFsIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdmb3JtJylcbiAqICAgICAgICAgLnNlbmQoJ25hbWU9dGonKVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGF1dG8geC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBkZWZhdWx0cyB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoJ25hbWU9dG9iaScpXG4gKiAgICAgICAgLnNlbmQoJ3NwZWNpZXM9ZmVycmV0JylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gZGF0YVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24oZGF0YSl7XG4gIHZhciBpc09iaiA9IGlzT2JqZWN0KGRhdGEpO1xuICB2YXIgdHlwZSA9IHRoaXMuX2hlYWRlclsnY29udGVudC10eXBlJ107XG5cbiAgaWYgKHRoaXMuX2Zvcm1EYXRhKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiKTtcbiAgfVxuXG4gIGlmIChpc09iaiAmJiAhdGhpcy5fZGF0YSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICB0aGlzLl9kYXRhID0gW107XG4gICAgfSBlbHNlIGlmICghdGhpcy5faXNIb3N0KGRhdGEpKSB7XG4gICAgICB0aGlzLl9kYXRhID0ge307XG4gICAgfVxuICB9IGVsc2UgaWYgKGRhdGEgJiYgdGhpcy5fZGF0YSAmJiB0aGlzLl9pc0hvc3QodGhpcy5fZGF0YSkpIHtcbiAgICB0aHJvdyBFcnJvcihcIkNhbid0IG1lcmdlIHRoZXNlIHNlbmQgY2FsbHNcIik7XG4gIH1cblxuICAvLyBtZXJnZVxuICBpZiAoaXNPYmogJiYgaXNPYmplY3QodGhpcy5fZGF0YSkpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuICAgICAgdGhpcy5fZGF0YVtrZXldID0gZGF0YVtrZXldO1xuICAgIH1cbiAgfSBlbHNlIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgZGF0YSkge1xuICAgIC8vIGRlZmF1bHQgdG8geC13d3ctZm9ybS11cmxlbmNvZGVkXG4gICAgaWYgKCF0eXBlKSB0aGlzLnR5cGUoJ2Zvcm0nKTtcbiAgICB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgICBpZiAoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgPT0gdHlwZSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHRoaXMuX2RhdGFcbiAgICAgICAgPyB0aGlzLl9kYXRhICsgJyYnICsgZGF0YVxuICAgICAgICA6IGRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RhdGEgPSAodGhpcy5fZGF0YSB8fCAnJykgKyBkYXRhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuXG4gIGlmICghaXNPYmogfHwgdGhpcy5faXNIb3N0KGRhdGEpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBkZWZhdWx0IHRvIGpzb25cbiAgaWYgKCF0eXBlKSB0aGlzLnR5cGUoJ2pzb24nKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNvcnQgYHF1ZXJ5c3RyaW5nYCBieSB0aGUgc29ydCBmdW5jdGlvblxuICpcbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBkZWZhdWx0IG9yZGVyXG4gKiAgICAgICByZXF1ZXN0LmdldCgnL3VzZXInKVxuICogICAgICAgICAucXVlcnkoJ25hbWU9TmljaycpXG4gKiAgICAgICAgIC5xdWVyeSgnc2VhcmNoPU1hbm55JylcbiAqICAgICAgICAgLnNvcnRRdWVyeSgpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gY3VzdG9taXplZCBzb3J0IGZ1bmN0aW9uXG4gKiAgICAgICByZXF1ZXN0LmdldCgnL3VzZXInKVxuICogICAgICAgICAucXVlcnkoJ25hbWU9TmljaycpXG4gKiAgICAgICAgIC5xdWVyeSgnc2VhcmNoPU1hbm55JylcbiAqICAgICAgICAgLnNvcnRRdWVyeShmdW5jdGlvbihhLCBiKXtcbiAqICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAqICAgICAgICAgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc29ydFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zb3J0UXVlcnkgPSBmdW5jdGlvbihzb3J0KSB7XG4gIC8vIF9zb3J0IGRlZmF1bHQgdG8gdHJ1ZSBidXQgb3RoZXJ3aXNlIGNhbiBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgdGhpcy5fc29ydCA9IHR5cGVvZiBzb3J0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBzb3J0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29tcG9zZSBxdWVyeXN0cmluZyB0byBhcHBlbmQgdG8gcmVxLnVybFxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmcgPSBmdW5jdGlvbigpe1xuICB2YXIgcXVlcnkgPSB0aGlzLl9xdWVyeS5qb2luKCcmJyk7XG4gIGlmIChxdWVyeSkge1xuICAgIHRoaXMudXJsICs9ICh0aGlzLnVybC5pbmRleE9mKCc/JykgPj0gMCA/ICcmJyA6ICc/JykgKyBxdWVyeTtcbiAgfVxuICB0aGlzLl9xdWVyeS5sZW5ndGggPSAwOyAvLyBNYWtlcyB0aGUgY2FsbCBpZGVtcG90ZW50XG5cbiAgaWYgKHRoaXMuX3NvcnQpIHtcbiAgICB2YXIgaW5kZXggPSB0aGlzLnVybC5pbmRleE9mKCc/Jyk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBxdWVyeUFyciA9IHRoaXMudXJsLnN1YnN0cmluZyhpbmRleCArIDEpLnNwbGl0KCcmJyk7XG4gICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHRoaXMuX3NvcnQpIHtcbiAgICAgICAgcXVlcnlBcnIuc29ydCh0aGlzLl9zb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5QXJyLnNvcnQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXJsID0gdGhpcy51cmwuc3Vic3RyaW5nKDAsIGluZGV4KSArICc/JyArIHF1ZXJ5QXJyLmpvaW4oJyYnKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEZvciBiYWNrd2FyZHMgY29tcGF0IG9ubHlcblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fYXBwZW5kUXVlcnlTdHJpbmcgPSBmdW5jdGlvbigpIHtjb25zb2xlLnRyYWNlKFwiVW5zdXBwb3J0ZWRcIik7fVxuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHRpbWVvdXQgZXJyb3IuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl90aW1lb3V0RXJyb3IgPSBmdW5jdGlvbihyZWFzb24sIHRpbWVvdXQsIGVycm5vKXtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGVyciA9IG5ldyBFcnJvcihyZWFzb24gKyB0aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyk7XG4gIGVyci50aW1lb3V0ID0gdGltZW91dDtcbiAgZXJyLmNvZGUgPSAnRUNPTk5BQk9SVEVEJztcbiAgZXJyLmVycm5vID0gZXJybm87XG4gIHRoaXMudGltZWRvdXQgPSB0cnVlO1xuICB0aGlzLmFib3J0KCk7XG4gIHRoaXMuY2FsbGJhY2soZXJyKTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8vIGRlYWRsaW5lXG4gIGlmICh0aGlzLl90aW1lb3V0ICYmICF0aGlzLl90aW1lcikge1xuICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgc2VsZi5fdGltZW91dEVycm9yKCdUaW1lb3V0IG9mICcsIHNlbGYuX3RpbWVvdXQsICdFVElNRScpO1xuICAgIH0sIHRoaXMuX3RpbWVvdXQpO1xuICB9XG4gIC8vIHJlc3BvbnNlIHRpbWVvdXRcbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVGltZW91dCAmJiAhdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcignUmVzcG9uc2UgdGltZW91dCBvZiAnLCBzZWxmLl9yZXNwb25zZVRpbWVvdXQsICdFVElNRURPVVQnKTtcbiAgICB9LCB0aGlzLl9yZXNwb25zZVRpbWVvdXQpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIEV4cG9zZSBgUmVzcG9uc2VCYXNlYC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlc3BvbnNlQmFzZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXNwb25zZUJhc2VgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVzcG9uc2VCYXNlKG9iaikge1xuICBpZiAob2JqKSByZXR1cm4gbWl4aW4ob2JqKTtcbn1cblxuLyoqXG4gKiBNaXhpbiB0aGUgcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWl4aW4ob2JqKSB7XG4gIGZvciAodmFyIGtleSBpbiBSZXNwb25zZUJhc2UucHJvdG90eXBlKSB7XG4gICAgb2JqW2tleV0gPSBSZXNwb25zZUJhc2UucHJvdG90eXBlW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBHZXQgY2FzZS1pbnNlbnNpdGl2ZSBgZmllbGRgIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLmhlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciByZWxhdGVkIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGAudHlwZWAgdGhlIGNvbnRlbnQgdHlwZSB3aXRob3V0IHBhcmFtc1xuICpcbiAqIEEgcmVzcG9uc2Ugb2YgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIlxuICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiBcInRleHQvcGxhaW5cIi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24oaGVhZGVyKXtcbiAgICAvLyBUT0RPOiBtb2FyIVxuICAgIC8vIFRPRE86IG1ha2UgdGhpcyBhIHV0aWxcblxuICAgIC8vIGNvbnRlbnQtdHlwZVxuICAgIHZhciBjdCA9IGhlYWRlclsnY29udGVudC10eXBlJ10gfHwgJyc7XG4gICAgdGhpcy50eXBlID0gdXRpbHMudHlwZShjdCk7XG5cbiAgICAvLyBwYXJhbXNcbiAgICB2YXIgcGFyYW1zID0gdXRpbHMucGFyYW1zKGN0KTtcbiAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKSB0aGlzW2tleV0gPSBwYXJhbXNba2V5XTtcblxuICAgIHRoaXMubGlua3MgPSB7fTtcblxuICAgIC8vIGxpbmtzXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGhlYWRlci5saW5rKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtzID0gdXRpbHMucGFyc2VMaW5rcyhoZWFkZXIubGluayk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgfVxufTtcblxuLyoqXG4gKiBTZXQgZmxhZ3Mgc3VjaCBhcyBgLm9rYCBiYXNlZCBvbiBgc3RhdHVzYC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBhIDJ4eCByZXNwb25zZSB3aWxsIGdpdmUgeW91IGEgYC5va2Agb2YgX190cnVlX19cbiAqIHdoZXJlYXMgNXh4IHdpbGwgYmUgX19mYWxzZV9fIGFuZCBgLmVycm9yYCB3aWxsIGJlIF9fdHJ1ZV9fLiBUaGVcbiAqIGAuY2xpZW50RXJyb3JgIGFuZCBgLnNlcnZlckVycm9yYCBhcmUgYWxzbyBhdmFpbGFibGUgdG8gYmUgbW9yZVxuICogc3BlY2lmaWMsIGFuZCBgLnN0YXR1c1R5cGVgIGlzIHRoZSBjbGFzcyBvZiBlcnJvciByYW5naW5nIGZyb20gMS4uNVxuICogc29tZXRpbWVzIHVzZWZ1bCBmb3IgbWFwcGluZyByZXNwb25kIGNvbG9ycyBldGMuXG4gKlxuICogXCJzdWdhclwiIHByb3BlcnRpZXMgYXJlIGFsc28gZGVmaW5lZCBmb3IgY29tbW9uIGNhc2VzLiBDdXJyZW50bHkgcHJvdmlkaW5nOlxuICpcbiAqICAgLSAubm9Db250ZW50XG4gKiAgIC0gLmJhZFJlcXVlc3RcbiAqICAgLSAudW5hdXRob3JpemVkXG4gKiAgIC0gLm5vdEFjY2VwdGFibGVcbiAqICAgLSAubm90Rm91bmRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhdHVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24oc3RhdHVzKXtcbiAgICB2YXIgdHlwZSA9IHN0YXR1cyAvIDEwMCB8IDA7XG5cbiAgICAvLyBzdGF0dXMgLyBjbGFzc1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVHlwZSA9IHR5cGU7XG5cbiAgICAvLyBiYXNpY3NcbiAgICB0aGlzLmluZm8gPSAxID09IHR5cGU7XG4gICAgdGhpcy5vayA9IDIgPT0gdHlwZTtcbiAgICB0aGlzLnJlZGlyZWN0ID0gMyA9PSB0eXBlO1xuICAgIHRoaXMuY2xpZW50RXJyb3IgPSA0ID09IHR5cGU7XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IDUgPT0gdHlwZTtcbiAgICB0aGlzLmVycm9yID0gKDQgPT0gdHlwZSB8fCA1ID09IHR5cGUpXG4gICAgICAgID8gdGhpcy50b0Vycm9yKClcbiAgICAgICAgOiBmYWxzZTtcblxuICAgIC8vIHN1Z2FyXG4gICAgdGhpcy5jcmVhdGVkID0gMjAxID09IHN0YXR1cztcbiAgICB0aGlzLmFjY2VwdGVkID0gMjAyID09IHN0YXR1cztcbiAgICB0aGlzLm5vQ29udGVudCA9IDIwNCA9PSBzdGF0dXM7XG4gICAgdGhpcy5iYWRSZXF1ZXN0ID0gNDAwID09IHN0YXR1cztcbiAgICB0aGlzLnVuYXV0aG9yaXplZCA9IDQwMSA9PSBzdGF0dXM7XG4gICAgdGhpcy5ub3RBY2NlcHRhYmxlID0gNDA2ID09IHN0YXR1cztcbiAgICB0aGlzLmZvcmJpZGRlbiA9IDQwMyA9PSBzdGF0dXM7XG4gICAgdGhpcy5ub3RGb3VuZCA9IDQwNCA9PSBzdGF0dXM7XG4gICAgdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5ID0gNDIyID09IHN0YXR1cztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnNwbGl0KC8gKjsgKi8pLnNoaWZ0KCk7XG59O1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9IGZ1bmN0aW9uKHN0cil7XG4gIHJldHVybiBzdHIuc3BsaXQoLyAqOyAqLykucmVkdWNlKGZ1bmN0aW9uKG9iaiwgc3RyKXtcbiAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoLyAqPSAqLyk7XG4gICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgdmFyIHZhbCA9IHBhcnRzLnNoaWZ0KCk7XG5cbiAgICBpZiAoa2V5ICYmIHZhbCkgb2JqW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBQYXJzZSBMaW5rIGhlYWRlciBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5wYXJzZUxpbmtzID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5zcGxpdCgvICosICovKS5yZWR1Y2UoZnVuY3Rpb24ob2JqLCBzdHIpe1xuICAgIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgvICo7ICovKTtcbiAgICB2YXIgdXJsID0gcGFydHNbMF0uc2xpY2UoMSwgLTEpO1xuICAgIHZhciByZWwgPSBwYXJ0c1sxXS5zcGxpdCgvICo9ICovKVsxXS5zbGljZSgxLCAtMSk7XG4gICAgb2JqW3JlbF0gPSB1cmw7XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBTdHJpcCBjb250ZW50IHJlbGF0ZWQgZmllbGRzIGZyb20gYGhlYWRlcmAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGhlYWRlclxuICogQHJldHVybiB7T2JqZWN0fSBoZWFkZXJcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuY2xlYW5IZWFkZXIgPSBmdW5jdGlvbihoZWFkZXIsIGNoYW5nZXNPcmlnaW4pe1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlclsnaG9zdCddO1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXJbJ2F1dGhvcml6YXRpb24nXTtcbiAgICBkZWxldGUgaGVhZGVyWydjb29raWUnXTtcbiAgfVxuICByZXR1cm4gaGVhZGVyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdnZXQnLCAncHV0JywgJ3Bvc3QnLCAnZGVsZXRlJywgJ29wdGlvbnMnLCAnaGVhZCcsICdwYXRjaCdcbl07XG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwidGl0bGVcIjogXCJBIEpTT04gU2NoZW1hIGZvciBTd2FnZ2VyIDIuMCBBUEkuXCIsXG4gIFwiaWRcIjogXCJodHRwOi8vc3dhZ2dlci5pby92Mi9zY2hlbWEuanNvbiNcIixcbiAgXCIkc2NoZW1hXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCIsXG4gIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICBcInJlcXVpcmVkXCI6IFtcbiAgICBcInN3YWdnZXJcIixcbiAgICBcImluZm9cIixcbiAgICBcInBhdGhzXCJcbiAgXSxcbiAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgXCJeeC1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgIH1cbiAgfSxcbiAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICBcInN3YWdnZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImVudW1cIjogW1xuICAgICAgICBcIjIuMFwiXG4gICAgICBdLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBTd2FnZ2VyIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudC5cIlxuICAgIH0sXG4gICAgXCJpbmZvXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaW5mb1wiXG4gICAgfSxcbiAgICBcImhvc3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcInBhdHRlcm5cIjogXCJeW157fS8gOlxcXFxcXFxcXSsoPzo6XFxcXGQrKT8kXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGhvc3QgKG5hbWUgb3IgaXApIG9mIHRoZSBBUEkuIEV4YW1wbGU6ICdzd2FnZ2VyLmlvJ1wiXG4gICAgfSxcbiAgICBcImJhc2VQYXRoXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJwYXR0ZXJuXCI6IFwiXi9cIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgYmFzZSBwYXRoIHRvIHRoZSBBUEkuIEV4YW1wbGU6ICcvYXBpJy5cIlxuICAgIH0sXG4gICAgXCJzY2hlbWVzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1lc0xpc3RcIlxuICAgIH0sXG4gICAgXCJjb25zdW1lc1wiOiB7XG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgYWNjZXB0ZWQgYnkgdGhlIEFQSS5cIixcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWVkaWFUeXBlTGlzdFwiXG4gICAgfSxcbiAgICBcInByb2R1Y2VzXCI6IHtcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxpc3Qgb2YgTUlNRSB0eXBlcyB0aGUgQVBJIGNhbiBwcm9kdWNlLlwiLFxuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tZWRpYVR5cGVMaXN0XCJcbiAgICB9LFxuICAgIFwicGF0aHNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXRoc1wiXG4gICAgfSxcbiAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyRGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJyZXNwb25zZXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZURlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwic2VjdXJpdHlcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eVwiXG4gICAgfSxcbiAgICBcInNlY3VyaXR5RGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eURlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwidGFnc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdGFnXCJcbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICB9XG4gIH0sXG4gIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgIFwiaW5mb1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBUEkuXCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ2ZXJzaW9uXCIsXG4gICAgICAgIFwidGl0bGVcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHVuaXF1ZSBhbmQgcHJlY2lzZSB0aXRsZSBvZiB0aGUgQVBJLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidmVyc2lvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIgb2YgdGhlIEFQSS5cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIEFQSS4gU2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSB0aXRsZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGVybXNPZlNlcnZpY2VcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgdGVybXMgb2Ygc2VydmljZSBmb3IgdGhlIEFQSS5cIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbnRhY3RcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29udGFjdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibGljZW5zZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9saWNlbnNlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJjb250YWN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIHRoZSBvd25lcnMgb2YgdGhlIEFQSS5cIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgaWRlbnRpZnlpbmcgbmFtZSBvZiB0aGUgY29udGFjdCBwZXJzb24vb3JnYW5pemF0aW9uLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIFVSTCBwb2ludGluZyB0byB0aGUgY29udGFjdCBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW1haWxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY29udGFjdCBwZXJzb24vb3JnYW5pemF0aW9uLlwiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwiZW1haWxcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwibGljZW5zZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgbGljZW5zZSB0eXBlLiBJdCdzIGVuY291cmFnZWQgdG8gdXNlIGFuIE9TSSBjb21wYXRpYmxlIGxpY2Vuc2UuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsaWNlbnNlLlwiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInBhdGhzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlJlbGF0aXZlIHBhdGhzIHRvIHRoZSBpbmRpdmlkdWFsIGVuZHBvaW50cy4gVGhleSBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSAnYmFzZVBhdGgnLlwiLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiXi9cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0aEl0ZW1cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICB9LFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIk9uZSBvciBtb3JlIEpTT04gb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBzY2hlbWFzIGJlaW5nIGNvbnN1bWVkIGFuZCBwcm9kdWNlZCBieSB0aGUgQVBJLlwiXG4gICAgfSxcbiAgICBcInBhcmFtZXRlckRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyXCJcbiAgICAgIH0sXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiT25lIG9yIG1vcmUgSlNPTiByZXByZXNlbnRhdGlvbnMgZm9yIHBhcmFtZXRlcnNcIlxuICAgIH0sXG4gICAgXCJyZXNwb25zZURlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VcIlxuICAgICAgfSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJPbmUgb3IgbW9yZSBKU09OIHJlcHJlc2VudGF0aW9ucyBmb3IgcGFyYW1ldGVyc1wiXG4gICAgfSxcbiAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiaW5mb3JtYXRpb24gYWJvdXQgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvblwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiZXhhbXBsZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHRydWVcbiAgICB9LFxuICAgIFwibWltZVR5cGVcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIE1JTUUgdHlwZSBvZiB0aGUgSFRUUCBtZXNzYWdlLlwiXG4gICAgfSxcbiAgICBcIm9wZXJhdGlvblwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInJlc3BvbnNlc1wiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0YWdzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInN1bW1hcnlcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIHN1bW1hcnkgb2YgdGhlIG9wZXJhdGlvbi5cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIG9wZXJhdGlvbiwgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcGVyYXRpb25JZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbi5cIlxuICAgICAgICB9LFxuICAgICAgICBcInByb2R1Y2VzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhlIEFQSSBjYW4gcHJvZHVjZS5cIixcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbnN1bWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhlIEFQSSBjYW4gY29uc3VtZS5cIixcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhcmFtZXRlcnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyc0xpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlc3BvbnNlc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInNjaGVtZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1lc0xpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlcHJlY2F0ZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWN1cml0eVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGF0aEl0ZW1cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicHV0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicG9zdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlbGV0ZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJoZWFkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0Y2hcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXJhbWV0ZXJzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlcnNMaXN0XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJyZXNwb25zZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiUmVzcG9uc2Ugb2JqZWN0cyBuYW1lcyBjYW4gZWl0aGVyIGJlIGFueSB2YWxpZCBIVFRQIHN0YXR1cyBjb2RlIG9yICdkZWZhdWx0Jy5cIixcbiAgICAgIFwibWluUHJvcGVydGllc1wiOiAxLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl4oWzAtOV17M30pJHxeKGRlZmF1bHQpJFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZVZhbHVlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwibm90XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicmVzcG9uc2VWYWx1ZVwiOiB7XG4gICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9qc29uUmVmZXJlbmNlXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJyZXNwb25zZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcImRlc2NyaXB0aW9uXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInNjaGVtYVwiOiB7XG4gICAgICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZmlsZVNjaGVtYVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImhlYWRlcnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaGVhZGVyc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhhbXBsZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhhbXBsZXNcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImhlYWRlcnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9oZWFkZXJcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJoZWFkZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwidmVuZG9yRXh0ZW5zaW9uXCI6IHtcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBbnkgcHJvcGVydHkgc3RhcnRpbmcgd2l0aCB4LSBpcyB2YWxpZC5cIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogdHJ1ZSxcbiAgICAgIFwiYWRkaXRpb25hbEl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiYm9keVBhcmFtZXRlclwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgXCJpblwiLFxuICAgICAgICBcInNjaGVtYVwiXG4gICAgICBdLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJib2R5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY2hlbWFcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiaGVhZGVyUGFyYW1ldGVyU3ViU2NoZW1hXCI6IHtcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiaGVhZGVyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJxdWVyeVBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInF1ZXJ5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxsb3dFbXB0eVZhbHVlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJhbGxvd3Mgc2VuZGluZyBhIHBhcmFtZXRlciBieSBuYW1lIG9ubHkgb3Igd2l0aCBhbiBlbXB0eSB2YWx1ZS5cIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0V2l0aE11bHRpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiZm9ybURhdGFQYXJhbWV0ZXJTdWJTY2hlbWFcIjoge1xuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJmb3JtRGF0YVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFsbG93RW1wdHlWYWx1ZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiYWxsb3dzIHNlbmRpbmcgYSBwYXJhbWV0ZXIgYnkgbmFtZSBvbmx5IG9yIHdpdGggYW4gZW1wdHkgdmFsdWUuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJhcnJheVwiLFxuICAgICAgICAgICAgXCJmaWxlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0V2l0aE11bHRpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGF0aFBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJyZXF1aXJlZFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIlxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJwYXRoXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJub25Cb2R5UGFyYW1ldGVyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiLFxuICAgICAgICBcImluXCIsXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2hlYWRlclBhcmFtZXRlclN1YlNjaGVtYVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2Zvcm1EYXRhUGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcXVlcnlQYXJhbWV0ZXJTdWJTY2hlbWFcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXRoUGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJcIjoge1xuICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2JvZHlQYXJhbWV0ZXJcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25Cb2R5UGFyYW1ldGVyXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJzY2hlbWFcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBkZXRlcm1pbmlzdGljIHZlcnNpb24gb2YgYSBKU09OIFNjaGVtYSBvYmplY3QuXCIsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL211bHRpcGxlT2ZcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3R5cGVcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcImFsbE9mXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJkaXNjcmltaW5hdG9yXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlYWRPbmx5XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwieG1sXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3htbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhhbXBsZVwiOiB7fVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiZmlsZVNjaGVtYVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGRldGVybWluaXN0aWMgdmVyc2lvbiBvZiBhIEpTT04gU2NoZW1hIG9iamVjdC5cIixcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImZpbGVcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJyZWFkT25seVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4YW1wbGVcIjoge31cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcInByaW1pdGl2ZXNJdGVtc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJzZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2VjdXJpdHlSZXF1aXJlbWVudFwiXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInNlY3VyaXR5UmVxdWlyZW1lbnRcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgICB9XG4gICAgfSxcbiAgICBcInhtbFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZXNwYWNlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInByZWZpeFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhdHRyaWJ1dGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJ3cmFwcGVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJ0YWdcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwic2VjdXJpdHlEZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2Jhc2ljQXV0aGVudGljYXRpb25TZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2FwaUtleVNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgySW1wbGljaXRTZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlBhc3N3b3JkU2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJBcHBsaWNhdGlvblNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyQWNjZXNzQ29kZVNlY3VyaXR5XCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiYmFzaWNBdXRoZW50aWNhdGlvblNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYmFzaWNcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImFwaUtleVNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICAgIFwiaW5cIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYXBpS2V5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiaGVhZGVyXCIsXG4gICAgICAgICAgICBcInF1ZXJ5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJJbXBsaWNpdFNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJpbXBsaWNpdFwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImF1dGhvcml6YXRpb25VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMlBhc3N3b3JkU2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImZsb3dcIixcbiAgICAgICAgXCJ0b2tlblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJwYXNzd29yZFwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInRva2VuVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJBcHBsaWNhdGlvblNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwidG9rZW5VcmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwib2F1dGgyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmxvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb25cIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b2tlblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgyQWNjZXNzQ29kZVNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiLFxuICAgICAgICBcInRva2VuVXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcIm9hdXRoMlwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZsb3dcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImFjY2Vzc0NvZGVcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhdXRob3JpemF0aW9uVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG9rZW5VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMlNjb3Blc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJtZWRpYVR5cGVMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW1lVHlwZVwiXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInBhcmFtZXRlcnNMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHBhcmFtZXRlcnMgbmVlZGVkIHRvIHNlbmQgYSB2YWxpZCBBUEkgY2FsbC5cIixcbiAgICAgIFwiYWRkaXRpb25hbEl0ZW1zXCI6IGZhbHNlLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvanNvblJlZmVyZW5jZVwiXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInNjaGVtZXNMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHRyYW5zZmVyIHByb3RvY29sIG9mIHRoZSBBUEkuXCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgXCJodHRwXCIsXG4gICAgICAgICAgXCJodHRwc1wiLFxuICAgICAgICAgIFwid3NcIixcbiAgICAgICAgICBcIndzc1wiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgIFwiY3N2XCIsXG4gICAgICAgIFwic3N2XCIsXG4gICAgICAgIFwidHN2XCIsXG4gICAgICAgIFwicGlwZXNcIlxuICAgICAgXSxcbiAgICAgIFwiZGVmYXVsdFwiOiBcImNzdlwiXG4gICAgfSxcbiAgICBcImNvbGxlY3Rpb25Gb3JtYXRXaXRoTXVsdGlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImVudW1cIjogW1xuICAgICAgICBcImNzdlwiLFxuICAgICAgICBcInNzdlwiLFxuICAgICAgICBcInRzdlwiLFxuICAgICAgICBcInBpcGVzXCIsXG4gICAgICAgIFwibXVsdGlcIlxuICAgICAgXSxcbiAgICAgIFwiZGVmYXVsdFwiOiBcImNzdlwiXG4gICAgfSxcbiAgICBcInRpdGxlXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICB9LFxuICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgIH0sXG4gICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgIH0sXG4gICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL211bHRpcGxlT2ZcIlxuICAgIH0sXG4gICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21heGltdW1cIlxuICAgIH0sXG4gICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgIH0sXG4gICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21pbmltdW1cIlxuICAgIH0sXG4gICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgIH0sXG4gICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgfSxcbiAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgIH0sXG4gICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3BhdHRlcm5cIlxuICAgIH0sXG4gICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICB9LFxuICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICB9LFxuICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdW5pcXVlSXRlbXNcIlxuICAgIH0sXG4gICAgXCJlbnVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2VudW1cIlxuICAgIH0sXG4gICAgXCJqc29uUmVmZXJlbmNlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwiJHJlZlwiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsInZhciBuZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MvYnJvd3Nlci5qcycpLm5leHRUaWNrO1xudmFyIGFwcGx5ID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIGltbWVkaWF0ZUlkcyA9IHt9O1xudmFyIG5leHRJbW1lZGlhdGVJZCA9IDA7XG5cbi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzXG5cbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7XG59O1xuZXhwb3J0cy5zZXRJbnRlcnZhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgd2luZG93LCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTtcbn07XG5leHBvcnRzLmNsZWFyVGltZW91dCA9XG5leHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7IHRpbWVvdXQuY2xvc2UoKTsgfTtcblxuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICB0aGlzLl9pZCA9IGlkO1xuICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjtcbn1cblRpbWVvdXQucHJvdG90eXBlLnVucmVmID0gVGltZW91dC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oKSB7fTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NsZWFyRm4uY2FsbCh3aW5kb3csIHRoaXMuX2lkKTtcbn07XG5cbi8vIERvZXMgbm90IHN0YXJ0IHRoZSB0aW1lLCBqdXN0IHNldHMgdXAgdGhlIG1lbWJlcnMgbmVlZGVkLlxuZXhwb3J0cy5lbnJvbGwgPSBmdW5jdGlvbihpdGVtLCBtc2Vjcykge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gbXNlY3M7XG59O1xuXG5leHBvcnRzLnVuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7XG59O1xuXG5leHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG5cbiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7XG4gIGlmIChtc2VjcyA+PSAwKSB7XG4gICAgaXRlbS5faWRsZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gb25UaW1lb3V0KCkge1xuICAgICAgaWYgKGl0ZW0uX29uVGltZW91dClcbiAgICAgICAgaXRlbS5fb25UaW1lb3V0KCk7XG4gICAgfSwgbXNlY3MpO1xuICB9XG59O1xuXG4vLyBUaGF0J3Mgbm90IGhvdyBub2RlLmpzIGltcGxlbWVudHMgaXQgYnV0IHRoZSBleHBvc2VkIGFwaSBpcyB0aGUgc2FtZS5cbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gXCJmdW5jdGlvblwiID8gc2V0SW1tZWRpYXRlIDogZnVuY3Rpb24oZm4pIHtcbiAgdmFyIGlkID0gbmV4dEltbWVkaWF0ZUlkKys7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBmYWxzZSA6IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICBpbW1lZGlhdGVJZHNbaWRdID0gdHJ1ZTtcblxuICBuZXh0VGljayhmdW5jdGlvbiBvbk5leHRUaWNrKCkge1xuICAgIGlmIChpbW1lZGlhdGVJZHNbaWRdKSB7XG4gICAgICAvLyBmbi5jYWxsKCkgaXMgZmFzdGVyIHNvIHdlIG9wdGltaXplIGZvciB0aGUgY29tbW9uIHVzZS1jYXNlXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2NhbGwtYXBwbHktc2VndVxuICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbi5jYWxsKG51bGwpO1xuICAgICAgfVxuICAgICAgLy8gUHJldmVudCBpZHMgZnJvbSBsZWFraW5nXG4gICAgICBleHBvcnRzLmNsZWFySW1tZWRpYXRlKGlkKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpZDtcbn07XG5cbmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSB0eXBlb2YgY2xlYXJJbW1lZGlhdGUgPT09IFwiZnVuY3Rpb25cIiA/IGNsZWFySW1tZWRpYXRlIDogZnVuY3Rpb24oaWQpIHtcbiAgZGVsZXRlIGltbWVkaWF0ZUlkc1tpZF07XG59OyIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYnVmKSB7XG5cdC8vIElmIHRoZSBidWZmZXIgaXMgYmFja2VkIGJ5IGEgVWludDhBcnJheSwgYSBmYXN0ZXIgdmVyc2lvbiB3aWxsIHdvcmtcblx0aWYgKGJ1ZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0XHQvLyBJZiB0aGUgYnVmZmVyIGlzbid0IGEgc3ViYXJyYXksIHJldHVybiB0aGUgdW5kZXJseWluZyBBcnJheUJ1ZmZlclxuXHRcdGlmIChidWYuYnl0ZU9mZnNldCA9PT0gMCAmJiBidWYuYnl0ZUxlbmd0aCA9PT0gYnVmLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlclxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGJ1Zi5idWZmZXIuc2xpY2UgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGdldCBhIHByb3BlciBjb3B5XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlci5zbGljZShidWYuYnl0ZU9mZnNldCwgYnVmLmJ5dGVPZmZzZXQgKyBidWYuYnl0ZUxlbmd0aClcblx0XHR9XG5cdH1cblxuXHRpZiAoQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcblx0XHQvLyBUaGlzIGlzIHRoZSBzbG93IHZlcnNpb24gdGhhdCB3aWxsIHdvcmsgd2l0aCBhbnkgQnVmZmVyXG5cdFx0Ly8gaW1wbGVtZW50YXRpb24gKGV2ZW4gaW4gb2xkIGJyb3dzZXJzKVxuXHRcdHZhciBhcnJheUNvcHkgPSBuZXcgVWludDhBcnJheShidWYubGVuZ3RoKVxuXHRcdHZhciBsZW4gPSBidWYubGVuZ3RoXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0YXJyYXlDb3B5W2ldID0gYnVmW2ldXG5cdFx0fVxuXHRcdHJldHVybiBhcnJheUNvcHkuYnVmZmVyXG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcblx0fVxufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIGdsb2JhbCwgZGVmaW5lLCBTeXN0ZW0sIFJlZmxlY3QsIFByb21pc2UgKi9cclxudmFyIF9fZXh0ZW5kcztcclxudmFyIF9fYXNzaWduO1xyXG52YXIgX19yZXN0O1xyXG52YXIgX19kZWNvcmF0ZTtcclxudmFyIF9fcGFyYW07XHJcbnZhciBfX21ldGFkYXRhO1xyXG52YXIgX19hd2FpdGVyO1xyXG52YXIgX19nZW5lcmF0b3I7XHJcbnZhciBfX2V4cG9ydFN0YXI7XHJcbnZhciBfX3ZhbHVlcztcclxudmFyIF9fcmVhZDtcclxudmFyIF9fc3ByZWFkO1xyXG52YXIgX19hd2FpdDtcclxudmFyIF9fYXN5bmNHZW5lcmF0b3I7XHJcbnZhciBfX2FzeW5jRGVsZWdhdG9yO1xyXG52YXIgX19hc3luY1ZhbHVlcztcclxudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0O1xyXG52YXIgX19pbXBvcnRTdGFyO1xyXG52YXIgX19pbXBvcnREZWZhdWx0O1xyXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcclxuICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHR5cGVvZiB0aGlzID09PSBcIm9iamVjdFwiID8gdGhpcyA6IHt9O1xyXG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XHJcbiAgICAgICAgZGVmaW5lKFwidHNsaWJcIiwgW1wiZXhwb3J0c1wiXSwgZnVuY3Rpb24gKGV4cG9ydHMpIHsgZmFjdG9yeShjcmVhdGVFeHBvcnRlcihyb290LCBjcmVhdGVFeHBvcnRlcihleHBvcnRzKSkpOyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgZmFjdG9yeShjcmVhdGVFeHBvcnRlcihyb290LCBjcmVhdGVFeHBvcnRlcihtb2R1bGUuZXhwb3J0cykpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCkpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY3JlYXRlRXhwb3J0ZXIoZXhwb3J0cywgcHJldmlvdXMpIHtcclxuICAgICAgICBpZiAoZXhwb3J0cyAhPT0gcm9vdCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGlkLCB2KSB7IHJldHVybiBleHBvcnRzW2lkXSA9IHByZXZpb3VzID8gcHJldmlvdXMoaWQsIHYpIDogdjsgfTtcclxuICAgIH1cclxufSlcclxuKGZ1bmN0aW9uIChleHBvcnRlcikge1xyXG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcblxyXG4gICAgX19leHRlbmRzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxuICAgIH07XHJcblxyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3Jlc3QgPSBmdW5jdGlvbiAocywgZSkge1xyXG4gICAgICAgIHZhciB0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcblxyXG4gICAgX19kZWNvcmF0ZSA9IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgICAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcGFyYW0gPSBmdW5jdGlvbiAocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fbWV0YWRhdGEgPSBmdW5jdGlvbiAobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2F3YWl0ZXIgPSBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgX19nZW5lcmF0b3IgPSBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xyXG4gICAgICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICAgICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX2V4cG9ydFN0YXIgPSBmdW5jdGlvbiAobSwgZXhwb3J0cykge1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxuICAgIH07XHJcblxyXG4gICAgX192YWx1ZXMgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICAgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcmVhZCA9IGZ1bmN0aW9uIChvLCBuKSB7XHJcbiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcblxyXG4gICAgX19zcHJlYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgICAgICByZXR1cm4gYXI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXdhaXQgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yID0gZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgICAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgIH1cclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19hc3luY0RlbGVnYXRvciA9IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgdmFyIGksIHA7XHJcbiAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXN5bmNWYWx1ZXMgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgICAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19tYWtlVGVtcGxhdGVPYmplY3QgPSBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgICAgIHJldHVybiBjb29rZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIF9faW1wb3J0U3RhciA9IGZ1bmN0aW9uIChtb2QpIHtcclxuICAgICAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgICAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgX19pbXBvcnREZWZhdWx0ID0gZnVuY3Rpb24gKG1vZCkge1xyXG4gICAgICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBleHBvcnRlcihcIl9fZXh0ZW5kc1wiLCBfX2V4dGVuZHMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2Fzc2lnblwiLCBfX2Fzc2lnbik7XHJcbiAgICBleHBvcnRlcihcIl9fcmVzdFwiLCBfX3Jlc3QpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2RlY29yYXRlXCIsIF9fZGVjb3JhdGUpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3BhcmFtXCIsIF9fcGFyYW0pO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ldGFkYXRhXCIsIF9fbWV0YWRhdGEpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0ZXJcIiwgX19hd2FpdGVyKTtcclxuICAgIGV4cG9ydGVyKFwiX19nZW5lcmF0b3JcIiwgX19nZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2V4cG9ydFN0YXJcIiwgX19leHBvcnRTdGFyKTtcclxuICAgIGV4cG9ydGVyKFwiX192YWx1ZXNcIiwgX192YWx1ZXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3JlYWRcIiwgX19yZWFkKTtcclxuICAgIGV4cG9ydGVyKFwiX19zcHJlYWRcIiwgX19zcHJlYWQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0XCIsIF9fYXdhaXQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jR2VuZXJhdG9yXCIsIF9fYXN5bmNHZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jRGVsZWdhdG9yXCIsIF9fYXN5bmNEZWxlZ2F0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jVmFsdWVzXCIsIF9fYXN5bmNWYWx1ZXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ha2VUZW1wbGF0ZU9iamVjdFwiLCBfX21ha2VUZW1wbGF0ZU9iamVjdCk7XHJcbiAgICBleHBvcnRlcihcIl9faW1wb3J0U3RhclwiLCBfX2ltcG9ydFN0YXIpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2ltcG9ydERlZmF1bHRcIiwgX19pbXBvcnREZWZhdWx0KTtcclxufSk7XHJcbiIsIi8vICAgICBVbmRlcnNjb3JlLmpzIDEuNy4wXG4vLyAgICAgaHR0cDovL3VuZGVyc2NvcmVqcy5vcmdcbi8vICAgICAoYykgMjAwOS0yMDE0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4vLyAgICAgVW5kZXJzY29yZSBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cblxuKGZ1bmN0aW9uKCkge1xuXG4gIC8vIEJhc2VsaW5lIHNldHVwXG4gIC8vIC0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gRXN0YWJsaXNoIHRoZSByb290IG9iamVjdCwgYHdpbmRvd2AgaW4gdGhlIGJyb3dzZXIsIG9yIGBleHBvcnRzYCBvbiB0aGUgc2VydmVyLlxuICB2YXIgcm9vdCA9IHRoaXM7XG5cbiAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGBfYCB2YXJpYWJsZS5cbiAgdmFyIHByZXZpb3VzVW5kZXJzY29yZSA9IHJvb3QuXztcblxuICAvLyBTYXZlIGJ5dGVzIGluIHRoZSBtaW5pZmllZCAoYnV0IG5vdCBnemlwcGVkKSB2ZXJzaW9uOlxuICB2YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSwgT2JqUHJvdG8gPSBPYmplY3QucHJvdG90eXBlLCBGdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgLy8gQ3JlYXRlIHF1aWNrIHJlZmVyZW5jZSB2YXJpYWJsZXMgZm9yIHNwZWVkIGFjY2VzcyB0byBjb3JlIHByb3RvdHlwZXMuXG4gIHZhclxuICAgIHB1c2ggICAgICAgICAgICAgPSBBcnJheVByb3RvLnB1c2gsXG4gICAgc2xpY2UgICAgICAgICAgICA9IEFycmF5UHJvdG8uc2xpY2UsXG4gICAgY29uY2F0ICAgICAgICAgICA9IEFycmF5UHJvdG8uY29uY2F0LFxuICAgIHRvU3RyaW5nICAgICAgICAgPSBPYmpQcm90by50b1N0cmluZyxcbiAgICBoYXNPd25Qcm9wZXJ0eSAgID0gT2JqUHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgLy8gQWxsICoqRUNNQVNjcmlwdCA1KiogbmF0aXZlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0IHdlIGhvcGUgdG8gdXNlXG4gIC8vIGFyZSBkZWNsYXJlZCBoZXJlLlxuICB2YXJcbiAgICBuYXRpdmVJc0FycmF5ICAgICAgPSBBcnJheS5pc0FycmF5LFxuICAgIG5hdGl2ZUtleXMgICAgICAgICA9IE9iamVjdC5rZXlzLFxuICAgIG5hdGl2ZUJpbmQgICAgICAgICA9IEZ1bmNQcm90by5iaW5kO1xuXG4gIC8vIENyZWF0ZSBhIHNhZmUgcmVmZXJlbmNlIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdCBmb3IgdXNlIGJlbG93LlxuICB2YXIgXyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBfKSByZXR1cm4gb2JqO1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBfKSkgcmV0dXJuIG5ldyBfKG9iaik7XG4gICAgdGhpcy5fd3JhcHBlZCA9IG9iajtcbiAgfTtcblxuICAvLyBFeHBvcnQgdGhlIFVuZGVyc2NvcmUgb2JqZWN0IGZvciAqKk5vZGUuanMqKiwgd2l0aFxuICAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgdGhlIG9sZCBgcmVxdWlyZSgpYCBBUEkuIElmIHdlJ3JlIGluXG4gIC8vIHRoZSBicm93c2VyLCBhZGQgYF9gIGFzIGEgZ2xvYmFsIG9iamVjdC5cbiAgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gXztcbiAgICB9XG4gICAgZXhwb3J0cy5fID0gXztcbiAgfSBlbHNlIHtcbiAgICByb290Ll8gPSBfO1xuICB9XG5cbiAgLy8gQ3VycmVudCB2ZXJzaW9uLlxuICBfLlZFUlNJT04gPSAnMS43LjAnO1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlZmZpY2llbnQgKGZvciBjdXJyZW50IGVuZ2luZXMpIHZlcnNpb25cbiAgLy8gb2YgdGhlIHBhc3NlZC1pbiBjYWxsYmFjaywgdG8gYmUgcmVwZWF0ZWRseSBhcHBsaWVkIGluIG90aGVyIFVuZGVyc2NvcmVcbiAgLy8gZnVuY3Rpb25zLlxuICB2YXIgY3JlYXRlQ2FsbGJhY2sgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jO1xuICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVsbCA/IDMgOiBhcmdDb3VudCkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgdmFsdWUsIG90aGVyKTtcbiAgICAgIH07XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICAvLyBBIG1vc3RseS1pbnRlcm5hbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSBjYWxsYmFja3MgdGhhdCBjYW4gYmUgYXBwbGllZFxuICAvLyB0byBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uLCByZXR1cm5pbmcgdGhlIGRlc2lyZWQgcmVzdWx0IOKAlCBlaXRoZXJcbiAgLy8gaWRlbnRpdHksIGFuIGFyYml0cmFyeSBjYWxsYmFjaywgYSBwcm9wZXJ0eSBtYXRjaGVyLCBvciBhIHByb3BlcnR5IGFjY2Vzc29yLlxuICBfLml0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBfLmlkZW50aXR5O1xuICAgIGlmIChfLmlzRnVuY3Rpb24odmFsdWUpKSByZXR1cm4gY3JlYXRlQ2FsbGJhY2sodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgICBpZiAoXy5pc09iamVjdCh2YWx1ZSkpIHJldHVybiBfLm1hdGNoZXModmFsdWUpO1xuICAgIHJldHVybiBfLnByb3BlcnR5KHZhbHVlKTtcbiAgfTtcblxuICAvLyBDb2xsZWN0aW9uIEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFRoZSBjb3JuZXJzdG9uZSwgYW4gYGVhY2hgIGltcGxlbWVudGF0aW9uLCBha2EgYGZvckVhY2hgLlxuICAvLyBIYW5kbGVzIHJhdyBvYmplY3RzIGluIGFkZGl0aW9uIHRvIGFycmF5LWxpa2VzLiBUcmVhdHMgYWxsXG4gIC8vIHNwYXJzZSBhcnJheS1saWtlcyBhcyBpZiB0aGV5IHdlcmUgZGVuc2UuXG4gIF8uZWFjaCA9IF8uZm9yRWFjaCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGksIGxlbmd0aCA9IG9iai5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCA9PT0gK2xlbmd0aCkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtpXSwgaSwgb2JqKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW2tleXNbaV1dLCBrZXlzW2ldLCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgaXRlcmF0ZWUgdG8gZWFjaCBlbGVtZW50LlxuICBfLm1hcCA9IF8uY29sbGVjdCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBbXTtcbiAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICByZXN1bHRzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgY3VycmVudEtleTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICByZXN1bHRzW2luZGV4XSA9IGl0ZXJhdGVlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgdmFyIHJlZHVjZUVycm9yID0gJ1JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnO1xuXG4gIC8vICoqUmVkdWNlKiogYnVpbGRzIHVwIGEgc2luZ2xlIHJlc3VsdCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGFrYSBgaW5qZWN0YCxcbiAgLy8gb3IgYGZvbGRsYC5cbiAgXy5yZWR1Y2UgPSBfLmZvbGRsID0gXy5pbmplY3QgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSBbXTtcbiAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0LCA0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwLCBjdXJyZW50S2V5O1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICAgaWYgKCFsZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IocmVkdWNlRXJyb3IpO1xuICAgICAgbWVtbyA9IG9ialtrZXlzID8ga2V5c1tpbmRleCsrXSA6IGluZGV4KytdO1xuICAgIH1cbiAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIG1lbW8gPSBpdGVyYXRlZShtZW1vLCBvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBtZW1vO1xuICB9O1xuXG4gIC8vIFRoZSByaWdodC1hc3NvY2lhdGl2ZSB2ZXJzaW9uIG9mIHJlZHVjZSwgYWxzbyBrbm93biBhcyBgZm9sZHJgLlxuICBfLnJlZHVjZVJpZ2h0ID0gXy5mb2xkciA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIG1lbW8sIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIG9iaiA9IFtdO1xuICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQsIDQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gKyBvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBpbmRleCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICBjdXJyZW50S2V5O1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICAgaWYgKCFpbmRleCkgdGhyb3cgbmV3IFR5cGVFcnJvcihyZWR1Y2VFcnJvcik7XG4gICAgICBtZW1vID0gb2JqW2tleXMgPyBrZXlzWy0taW5kZXhdIDogLS1pbmRleF07XG4gICAgfVxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3QuIEFsaWFzZWQgYXMgYGRldGVjdGAuXG4gIF8uZmluZCA9IF8uZGV0ZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICBfLnNvbWUob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBsaXN0KSkge1xuICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyB0aGF0IHBhc3MgYSB0cnV0aCB0ZXN0LlxuICAvLyBBbGlhc2VkIGFzIGBzZWxlY3RgLlxuICBfLmZpbHRlciA9IF8uc2VsZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGxpc3QpKSByZXN1bHRzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuXG4gIF8ucmVqZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIob2JqLCBfLm5lZ2F0ZShfLml0ZXJhdGVlKHByZWRpY2F0ZSkpLCBjb250ZXh0KTtcbiAgfTtcblxuICAvLyBEZXRlcm1pbmUgd2hldGhlciBhbGwgb2YgdGhlIGVsZW1lbnRzIG1hdGNoIGEgdHJ1dGggdGVzdC5cbiAgLy8gQWxpYXNlZCBhcyBgYWxsYC5cbiAgXy5ldmVyeSA9IF8uYWxsID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB0cnVlO1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgaW5kZXgsIGN1cnJlbnRLZXk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAoIXByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSBvYmplY3QgbWF0Y2hlcyBhIHRydXRoIHRlc3QuXG4gIC8vIEFsaWFzZWQgYXMgYGFueWAuXG4gIF8uc29tZSA9IF8uYW55ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIGluZGV4LCBjdXJyZW50S2V5O1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJheSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiB2YWx1ZSAodXNpbmcgYD09PWApLlxuICAvLyBBbGlhc2VkIGFzIGBpbmNsdWRlYC5cbiAgXy5jb250YWlucyA9IF8uaW5jbHVkZSA9IGZ1bmN0aW9uKG9iaiwgdGFyZ2V0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoKSBvYmogPSBfLnZhbHVlcyhvYmopO1xuICAgIHJldHVybiBfLmluZGV4T2Yob2JqLCB0YXJnZXQpID49IDA7XG4gIH07XG5cbiAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uXG4gIF8uaW52b2tlID0gZnVuY3Rpb24ob2JqLCBtZXRob2QpIHtcbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICB2YXIgaXNGdW5jID0gXy5pc0Z1bmN0aW9uKG1ldGhvZCk7XG4gICAgcmV0dXJuIF8ubWFwKG9iaiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiAoaXNGdW5jID8gbWV0aG9kIDogdmFsdWVbbWV0aG9kXSkuYXBwbHkodmFsdWUsIGFyZ3MpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYG1hcGA6IGZldGNoaW5nIGEgcHJvcGVydHkuXG4gIF8ucGx1Y2sgPSBmdW5jdGlvbihvYmosIGtleSkge1xuICAgIHJldHVybiBfLm1hcChvYmosIF8ucHJvcGVydHkoa2V5KSk7XG4gIH07XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgZmlsdGVyYDogc2VsZWN0aW5nIG9ubHkgb2JqZWN0c1xuICAvLyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBfLndoZXJlID0gZnVuY3Rpb24ob2JqLCBhdHRycykge1xuICAgIHJldHVybiBfLmZpbHRlcihvYmosIF8ubWF0Y2hlcyhhdHRycykpO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYGZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdCBvYmplY3RcbiAgLy8gY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5maW5kV2hlcmUgPSBmdW5jdGlvbihvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIF8uZmluZChvYmosIF8ubWF0Y2hlcyhhdHRycykpO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbWF4aW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgXy5tYXggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IC1JbmZpbml0eSwgbGFzdENvbXB1dGVkID0gLUluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoID8gb2JqIDogXy52YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSA+IHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPiBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IC1JbmZpbml0eSAmJiByZXN1bHQgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIG1pbmltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIF8ubWluID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHQgPSBJbmZpbml0eSwgbGFzdENvbXB1dGVkID0gSW5maW5pdHksXG4gICAgICAgIHZhbHVlLCBjb21wdXRlZDtcbiAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCAmJiBvYmogIT0gbnVsbCkge1xuICAgICAgb2JqID0gb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlIDwgcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA8IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gSW5maW5pdHkgJiYgcmVzdWx0ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBTaHVmZmxlIGEgY29sbGVjdGlvbiwgdXNpbmcgdGhlIG1vZGVybiB2ZXJzaW9uIG9mIHRoZVxuICAvLyBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVy4oCTWWF0ZXNfc2h1ZmZsZSkuXG4gIF8uc2h1ZmZsZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBzZXQgPSBvYmogJiYgb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBzZXQubGVuZ3RoO1xuICAgIHZhciBzaHVmZmxlZCA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwLCByYW5kOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgcmFuZCA9IF8ucmFuZG9tKDAsIGluZGV4KTtcbiAgICAgIGlmIChyYW5kICE9PSBpbmRleCkgc2h1ZmZsZWRbaW5kZXhdID0gc2h1ZmZsZWRbcmFuZF07XG4gICAgICBzaHVmZmxlZFtyYW5kXSA9IHNldFtpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBzaHVmZmxlZDtcbiAgfTtcblxuICAvLyBTYW1wbGUgKipuKiogcmFuZG9tIHZhbHVlcyBmcm9tIGEgY29sbGVjdGlvbi5cbiAgLy8gSWYgKipuKiogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC5cbiAgLy8gVGhlIGludGVybmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgbWFwYC5cbiAgXy5zYW1wbGUgPSBmdW5jdGlvbihvYmosIG4sIGd1YXJkKSB7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkge1xuICAgICAgaWYgKG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoKSBvYmogPSBfLnZhbHVlcyhvYmopO1xuICAgICAgcmV0dXJuIG9ialtfLnJhbmRvbShvYmoubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICByZXR1cm4gXy5zaHVmZmxlKG9iaikuc2xpY2UoMCwgTWF0aC5tYXgoMCwgbikpO1xuICB9O1xuXG4gIC8vIFNvcnQgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiBwcm9kdWNlZCBieSBhbiBpdGVyYXRlZS5cbiAgXy5zb3J0QnkgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gXy5wbHVjayhfLm1hcChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGNyaXRlcmlhOiBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGxpc3QpXG4gICAgICB9O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYTtcbiAgICAgIHZhciBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAoYSA+IGIgfHwgYSA9PT0gdm9pZCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgPCBiIHx8IGIgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlZnQuaW5kZXggLSByaWdodC5pbmRleDtcbiAgICB9KSwgJ3ZhbHVlJyk7XG4gIH07XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3IgYWdncmVnYXRlIFwiZ3JvdXAgYnlcIiBvcGVyYXRpb25zLlxuICB2YXIgZ3JvdXAgPSBmdW5jdGlvbihiZWhhdmlvcikge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIG9iaik7XG4gICAgICAgIGJlaGF2aW9yKHJlc3VsdCwgdmFsdWUsIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBHcm91cHMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbi4gUGFzcyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlXG4gIC8vIHRvIGdyb3VwIGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgY3JpdGVyaW9uLlxuICBfLmdyb3VwQnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoXy5oYXMocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTsgZWxzZSByZXN1bHRba2V5XSA9IFt2YWx1ZV07XG4gIH0pO1xuXG4gIC8vIEluZGV4ZXMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiwgc2ltaWxhciB0byBgZ3JvdXBCeWAsIGJ1dCBmb3JcbiAgLy8gd2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5kZXggdmFsdWVzIHdpbGwgYmUgdW5pcXVlLlxuICBfLmluZGV4QnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICB9KTtcblxuICAvLyBDb3VudHMgaW5zdGFuY2VzIG9mIGFuIG9iamVjdCB0aGF0IGdyb3VwIGJ5IGEgY2VydGFpbiBjcml0ZXJpb24uIFBhc3NcbiAgLy8gZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZSB0byBjb3VudCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlXG4gIC8vIGNyaXRlcmlvbi5cbiAgXy5jb3VudEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKF8uaGFzKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0rKzsgZWxzZSByZXN1bHRba2V5XSA9IDE7XG4gIH0pO1xuXG4gIC8vIFVzZSBhIGNvbXBhcmF0b3IgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB0aGUgc21hbGxlc3QgaW5kZXggYXQgd2hpY2hcbiAgLy8gYW4gb2JqZWN0IHNob3VsZCBiZSBpbnNlcnRlZCBzbyBhcyB0byBtYWludGFpbiBvcmRlci4gVXNlcyBiaW5hcnkgc2VhcmNoLlxuICBfLnNvcnRlZEluZGV4ID0gZnVuY3Rpb24oYXJyYXksIG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIHZhciB2YWx1ZSA9IGl0ZXJhdGVlKG9iaik7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+PiAxO1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W21pZF0pIDwgdmFsdWUpIGxvdyA9IG1pZCArIDE7IGVsc2UgaGlnaCA9IG1pZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbiAgfTtcblxuICAvLyBTYWZlbHkgY3JlYXRlIGEgcmVhbCwgbGl2ZSBhcnJheSBmcm9tIGFueXRoaW5nIGl0ZXJhYmxlLlxuICBfLnRvQXJyYXkgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICAgIGlmIChfLmlzQXJyYXkob2JqKSkgcmV0dXJuIHNsaWNlLmNhbGwob2JqKTtcbiAgICBpZiAob2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGgpIHJldHVybiBfLm1hcChvYmosIF8uaWRlbnRpdHkpO1xuICAgIHJldHVybiBfLnZhbHVlcyhvYmopO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIG9iamVjdC5cbiAgXy5zaXplID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gMDtcbiAgICByZXR1cm4gb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmoubGVuZ3RoIDogXy5rZXlzKG9iaikubGVuZ3RoO1xuICB9O1xuXG4gIC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgc2F0aXNmeSB0aGUgZ2l2ZW5cbiAgLy8gcHJlZGljYXRlLCBhbmQgb25lIHdob3NlIGVsZW1lbnRzIGFsbCBkbyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLlxuICBfLnBhcnRpdGlvbiA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBwYXNzID0gW10sIGZhaWwgPSBbXTtcbiAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmopIHtcbiAgICAgIChwcmVkaWNhdGUodmFsdWUsIGtleSwgb2JqKSA/IHBhc3MgOiBmYWlsKS5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW3Bhc3MsIGZhaWxdO1xuICB9O1xuXG4gIC8vIEFycmF5IEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS1cblxuICAvLyBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYXJyYXkuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gdGhlIGZpcnN0IE5cbiAgLy8gdmFsdWVzIGluIHRoZSBhcnJheS4gQWxpYXNlZCBhcyBgaGVhZGAgYW5kIGB0YWtlYC4gVGhlICoqZ3VhcmQqKiBjaGVja1xuICAvLyBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIF8uZmlyc3QgPSBfLmhlYWQgPSBfLnRha2UgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbMF07XG4gICAgaWYgKG4gPCAwKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIG4pO1xuICB9O1xuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgZW50cnkgb2YgdGhlIGFycmF5LiBFc3BlY2lhbGx5IHVzZWZ1bCBvblxuICAvLyB0aGUgYXJndW1lbnRzIG9iamVjdC4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiBhbGwgdGhlIHZhbHVlcyBpblxuICAvLyB0aGUgYXJyYXksIGV4Y2x1ZGluZyB0aGUgbGFzdCBOLiBUaGUgKipndWFyZCoqIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGhcbiAgLy8gYF8ubWFwYC5cbiAgXy5pbml0aWFsID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIChuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbikpKTtcbiAgfTtcblxuICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgbGFzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBfLmxhc3QgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIE1hdGgubWF4KGFycmF5Lmxlbmd0aCAtIG4sIDApKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYHRhaWxgIGFuZCBgZHJvcGAuXG4gIC8vIEVzcGVjaWFsbHkgdXNlZnVsIG9uIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQYXNzaW5nIGFuICoqbioqIHdpbGwgcmV0dXJuXG4gIC8vIHRoZSByZXN0IE4gdmFsdWVzIGluIHRoZSBhcnJheS4gVGhlICoqZ3VhcmQqKlxuICAvLyBjaGVjayBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIF8ucmVzdCA9IF8udGFpbCA9IF8uZHJvcCA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCBuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbik7XG4gIH07XG5cbiAgLy8gVHJpbSBvdXQgYWxsIGZhbHN5IHZhbHVlcyBmcm9tIGFuIGFycmF5LlxuICBfLmNvbXBhY3QgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIHJldHVybiBfLmZpbHRlcihhcnJheSwgXy5pZGVudGl0eSk7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYSByZWN1cnNpdmUgYGZsYXR0ZW5gIGZ1bmN0aW9uLlxuICB2YXIgZmxhdHRlbiA9IGZ1bmN0aW9uKGlucHV0LCBzaGFsbG93LCBzdHJpY3QsIG91dHB1dCkge1xuICAgIGlmIChzaGFsbG93ICYmIF8uZXZlcnkoaW5wdXQsIF8uaXNBcnJheSkpIHtcbiAgICAgIHJldHVybiBjb25jYXQuYXBwbHkob3V0cHV0LCBpbnB1dCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoIV8uaXNBcnJheSh2YWx1ZSkgJiYgIV8uaXNBcmd1bWVudHModmFsdWUpKSB7XG4gICAgICAgIGlmICghc3RyaWN0KSBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNoYWxsb3cpIHtcbiAgICAgICAgcHVzaC5hcHBseShvdXRwdXQsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW4odmFsdWUsIHNoYWxsb3csIHN0cmljdCwgb3V0cHV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICAvLyBGbGF0dGVuIG91dCBhbiBhcnJheSwgZWl0aGVyIHJlY3Vyc2l2ZWx5IChieSBkZWZhdWx0KSwgb3IganVzdCBvbmUgbGV2ZWwuXG4gIF8uZmxhdHRlbiA9IGZ1bmN0aW9uKGFycmF5LCBzaGFsbG93KSB7XG4gICAgcmV0dXJuIGZsYXR0ZW4oYXJyYXksIHNoYWxsb3csIGZhbHNlLCBbXSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgdmFsdWUocykuXG4gIF8ud2l0aG91dCA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgcmV0dXJuIF8uZGlmZmVyZW5jZShhcnJheSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgfTtcblxuICAvLyBQcm9kdWNlIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiB0aGUgYXJyYXkuIElmIHRoZSBhcnJheSBoYXMgYWxyZWFkeVxuICAvLyBiZWVuIHNvcnRlZCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhIGZhc3RlciBhbGdvcml0aG0uXG4gIC8vIEFsaWFzZWQgYXMgYHVuaXF1ZWAuXG4gIF8udW5pcSA9IF8udW5pcXVlID0gZnVuY3Rpb24oYXJyYXksIGlzU29ydGVkLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gW107XG4gICAgaWYgKCFfLmlzQm9vbGVhbihpc1NvcnRlZCkpIHtcbiAgICAgIGNvbnRleHQgPSBpdGVyYXRlZTtcbiAgICAgIGl0ZXJhdGVlID0gaXNTb3J0ZWQ7XG4gICAgICBpc1NvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlcmF0ZWUgIT0gbnVsbCkgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldO1xuICAgICAgaWYgKGlzU29ydGVkKSB7XG4gICAgICAgIGlmICghaSB8fCBzZWVuICE9PSB2YWx1ZSkgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICBzZWVuID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhciBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlLCBpLCBhcnJheSk7XG4gICAgICAgIGlmIChfLmluZGV4T2Yoc2VlbiwgY29tcHV0ZWQpIDwgMCkge1xuICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaW5kZXhPZihyZXN1bHQsIHZhbHVlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgdW5pb246IGVhY2ggZGlzdGluY3QgZWxlbWVudCBmcm9tIGFsbCBvZlxuICAvLyB0aGUgcGFzc2VkLWluIGFycmF5cy5cbiAgXy51bmlvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfLnVuaXEoZmxhdHRlbihhcmd1bWVudHMsIHRydWUsIHRydWUsIFtdKSk7XG4gIH07XG5cbiAgLy8gUHJvZHVjZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGV2ZXJ5IGl0ZW0gc2hhcmVkIGJldHdlZW4gYWxsIHRoZVxuICAvLyBwYXNzZWQtaW4gYXJyYXlzLlxuICBfLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiBbXTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBhcnJheVtpXTtcbiAgICAgIGlmIChfLmNvbnRhaW5zKHJlc3VsdCwgaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKCFfLmNvbnRhaW5zKGFyZ3VtZW50c1tqXSwgaXRlbSkpIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGogPT09IGFyZ3NMZW5ndGgpIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy5cbiAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi5cbiAgXy5kaWZmZXJlbmNlID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICB2YXIgcmVzdCA9IGZsYXR0ZW4oc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCB0cnVlLCB0cnVlLCBbXSk7XG4gICAgcmV0dXJuIF8uZmlsdGVyKGFycmF5LCBmdW5jdGlvbih2YWx1ZSl7XG4gICAgICByZXR1cm4gIV8uY29udGFpbnMocmVzdCwgdmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIFppcCB0b2dldGhlciBtdWx0aXBsZSBsaXN0cyBpbnRvIGEgc2luZ2xlIGFycmF5IC0tIGVsZW1lbnRzIHRoYXQgc2hhcmVcbiAgLy8gYW4gaW5kZXggZ28gdG9nZXRoZXIuXG4gIF8uemlwID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIHZhciBsZW5ndGggPSBfLm1heChhcmd1bWVudHMsICdsZW5ndGgnKS5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdHMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdHNbaV0gPSBfLnBsdWNrKGFyZ3VtZW50cywgaSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy4gUGFzcyBlaXRoZXIgYSBzaW5nbGUgYXJyYXkgb2YgYFtrZXksIHZhbHVlXWBcbiAgLy8gcGFpcnMsIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgXy5vYmplY3QgPSBmdW5jdGlvbihsaXN0LCB2YWx1ZXMpIHtcbiAgICBpZiAobGlzdCA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBsaXN0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldXSA9IHZhbHVlc1tpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhbiBpdGVtIGluIGFuIGFycmF5LFxuICAvLyBvciAtMSBpZiB0aGUgaXRlbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFycmF5LlxuICAvLyBJZiB0aGUgYXJyYXkgaXMgbGFyZ2UgYW5kIGFscmVhZHkgaW4gc29ydCBvcmRlciwgcGFzcyBgdHJ1ZWBcbiAgLy8gZm9yICoqaXNTb3J0ZWQqKiB0byB1c2UgYmluYXJ5IHNlYXJjaC5cbiAgXy5pbmRleE9mID0gZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGlzU29ydGVkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiAtMTtcbiAgICB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAoaXNTb3J0ZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgaXNTb3J0ZWQgPT0gJ251bWJlcicpIHtcbiAgICAgICAgaSA9IGlzU29ydGVkIDwgMCA/IE1hdGgubWF4KDAsIGxlbmd0aCArIGlzU29ydGVkKSA6IGlzU29ydGVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSA9IF8uc29ydGVkSW5kZXgoYXJyYXksIGl0ZW0pO1xuICAgICAgICByZXR1cm4gYXJyYXlbaV0gPT09IGl0ZW0gPyBpIDogLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoOyBpIDwgbGVuZ3RoOyBpKyspIGlmIChhcnJheVtpXSA9PT0gaXRlbSkgcmV0dXJuIGk7XG4gICAgcmV0dXJuIC0xO1xuICB9O1xuXG4gIF8ubGFzdEluZGV4T2YgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgZnJvbSkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gLTE7XG4gICAgdmFyIGlkeCA9IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAodHlwZW9mIGZyb20gPT0gJ251bWJlcicpIHtcbiAgICAgIGlkeCA9IGZyb20gPCAwID8gaWR4ICsgZnJvbSArIDEgOiBNYXRoLm1pbihpZHgsIGZyb20gKyAxKTtcbiAgICB9XG4gICAgd2hpbGUgKC0taWR4ID49IDApIGlmIChhcnJheVtpZHhdID09PSBpdGVtKSByZXR1cm4gaWR4O1xuICAgIHJldHVybiAtMTtcbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIEFycmF5IGNvbnRhaW5pbmcgYW4gYXJpdGhtZXRpYyBwcm9ncmVzc2lvbi4gQSBwb3J0IG9mXG4gIC8vIHRoZSBuYXRpdmUgUHl0aG9uIGByYW5nZSgpYCBmdW5jdGlvbi4gU2VlXG4gIC8vIFt0aGUgUHl0aG9uIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS9mdW5jdGlvbnMuaHRtbCNyYW5nZSkuXG4gIF8ucmFuZ2UgPSBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHN0b3AgPSBzdGFydCB8fCAwO1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cbiAgICBzdGVwID0gc3RlcCB8fCAxO1xuXG4gICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApLCAwKTtcbiAgICB2YXIgcmFuZ2UgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbGVuZ3RoOyBpZHgrKywgc3RhcnQgKz0gc3RlcCkge1xuICAgICAgcmFuZ2VbaWR4XSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZTtcbiAgfTtcblxuICAvLyBGdW5jdGlvbiAoYWhlbSkgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFJldXNhYmxlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBwcm90b3R5cGUgc2V0dGluZy5cbiAgdmFyIEN0b3IgPSBmdW5jdGlvbigpe307XG5cbiAgLy8gQ3JlYXRlIGEgZnVuY3Rpb24gYm91bmQgdG8gYSBnaXZlbiBvYmplY3QgKGFzc2lnbmluZyBgdGhpc2AsIGFuZCBhcmd1bWVudHMsXG4gIC8vIG9wdGlvbmFsbHkpLiBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgRnVuY3Rpb24uYmluZGAgaWZcbiAgLy8gYXZhaWxhYmxlLlxuICBfLmJpbmQgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0KSB7XG4gICAgdmFyIGFyZ3MsIGJvdW5kO1xuICAgIGlmIChuYXRpdmVCaW5kICYmIGZ1bmMuYmluZCA9PT0gbmF0aXZlQmluZCkgcmV0dXJuIG5hdGl2ZUJpbmQuYXBwbHkoZnVuYywgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbihmdW5jKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1bmN0aW9uJyk7XG4gICAgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICBib3VuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSkgcmV0dXJuIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgICBDdG9yLnByb3RvdHlwZSA9IGZ1bmMucHJvdG90eXBlO1xuICAgICAgdmFyIHNlbGYgPSBuZXcgQ3RvcjtcbiAgICAgIEN0b3IucHJvdG90eXBlID0gbnVsbDtcbiAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHNlbGYsIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgICAgaWYgKF8uaXNPYmplY3QocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH07XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9O1xuXG4gIC8vIFBhcnRpYWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQgc29tZSBvZiBpdHNcbiAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcgaXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuIF8gYWN0c1xuICAvLyBhcyBhIHBsYWNlaG9sZGVyLCBhbGxvd2luZyBhbnkgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIHRvIGJlIHByZS1maWxsZWQuXG4gIF8ucGFydGlhbCA9IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICB2YXIgYm91bmRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IDA7XG4gICAgICB2YXIgYXJncyA9IGJvdW5kQXJncy5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGFyZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFyZ3NbaV0gPT09IF8pIGFyZ3NbaV0gPSBhcmd1bWVudHNbcG9zaXRpb24rK107XG4gICAgICB9XG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBhcmd1bWVudHMubGVuZ3RoKSBhcmdzLnB1c2goYXJndW1lbnRzW3Bvc2l0aW9uKytdKTtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gQmluZCBhIG51bWJlciBvZiBhbiBvYmplY3QncyBtZXRob2RzIHRvIHRoYXQgb2JqZWN0LiBSZW1haW5pbmcgYXJndW1lbnRzXG4gIC8vIGFyZSB0aGUgbWV0aG9kIG5hbWVzIHRvIGJlIGJvdW5kLiBVc2VmdWwgZm9yIGVuc3VyaW5nIHRoYXQgYWxsIGNhbGxiYWNrc1xuICAvLyBkZWZpbmVkIG9uIGFuIG9iamVjdCBiZWxvbmcgdG8gaXQuXG4gIF8uYmluZEFsbCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBpLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLCBrZXk7XG4gICAgaWYgKGxlbmd0aCA8PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMnKTtcbiAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIG9ialtrZXldID0gXy5iaW5kKG9ialtrZXldLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0b3JpbmcgaXRzIHJlc3VsdHMuXG4gIF8ubWVtb2l6ZSA9IGZ1bmN0aW9uKGZ1bmMsIGhhc2hlcikge1xuICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2YXIgY2FjaGUgPSBtZW1vaXplLmNhY2hlO1xuICAgICAgdmFyIGFkZHJlc3MgPSBoYXNoZXIgPyBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleTtcbiAgICAgIGlmICghXy5oYXMoY2FjaGUsIGFkZHJlc3MpKSBjYWNoZVthZGRyZXNzXSA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjYWNoZVthZGRyZXNzXTtcbiAgICB9O1xuICAgIG1lbW9pemUuY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gbWVtb2l6ZTtcbiAgfTtcblxuICAvLyBEZWxheXMgYSBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIGFuZCB0aGVuIGNhbGxzXG4gIC8vIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC5cbiAgXy5kZWxheSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSwgd2FpdCk7XG4gIH07XG5cbiAgLy8gRGVmZXJzIGEgZnVuY3Rpb24sIHNjaGVkdWxpbmcgaXQgdG8gcnVuIGFmdGVyIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzXG4gIC8vIGNsZWFyZWQuXG4gIF8uZGVmZXIgPSBmdW5jdGlvbihmdW5jKSB7XG4gICAgcmV0dXJuIF8uZGVsYXkuYXBwbHkoXywgW2Z1bmMsIDFdLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tlZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2VcbiAgLy8gZHVyaW5nIGEgZ2l2ZW4gd2luZG93IG9mIHRpbWUuIE5vcm1hbGx5LCB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHdpbGwgcnVuXG4gIC8vIGFzIG11Y2ggYXMgaXQgY2FuLCB3aXRob3V0IGV2ZXIgZ29pbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGB3YWl0YCBkdXJhdGlvbjtcbiAgLy8gYnV0IGlmIHlvdSdkIGxpa2UgdG8gZGlzYWJsZSB0aGUgZXhlY3V0aW9uIG9uIHRoZSBsZWFkaW5nIGVkZ2UsIHBhc3NcbiAgLy8gYHtsZWFkaW5nOiBmYWxzZX1gLiBUbyBkaXNhYmxlIGV4ZWN1dGlvbiBvbiB0aGUgdHJhaWxpbmcgZWRnZSwgZGl0dG8uXG4gIF8udGhyb3R0bGUgPSBmdW5jdGlvbihmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgdGltZW91dCA9IG51bGw7XG4gICAgdmFyIHByZXZpb3VzID0gMDtcbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiBfLm5vdygpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbm93ID0gXy5ub3coKTtcbiAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBub3c7XG4gICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgICBjb250ZXh0ID0gdGhpcztcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gd2FpdCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgYXMgbG9uZyBhcyBpdCBjb250aW51ZXMgdG8gYmUgaW52b2tlZCwgd2lsbCBub3RcbiAgLy8gYmUgdHJpZ2dlcmVkLiBUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgaXQgc3RvcHMgYmVpbmcgY2FsbGVkIGZvclxuICAvLyBOIG1pbGxpc2Vjb25kcy4gSWYgYGltbWVkaWF0ZWAgaXMgcGFzc2VkLCB0cmlnZ2VyIHRoZSBmdW5jdGlvbiBvbiB0aGVcbiAgLy8gbGVhZGluZyBlZGdlLCBpbnN0ZWFkIG9mIHRoZSB0cmFpbGluZy5cbiAgXy5kZWJvdW5jZSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgIHZhciB0aW1lb3V0LCBhcmdzLCBjb250ZXh0LCB0aW1lc3RhbXAsIHJlc3VsdDtcblxuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxhc3QgPSBfLm5vdygpIC0gdGltZXN0YW1wO1xuXG4gICAgICBpZiAobGFzdCA8IHdhaXQgJiYgbGFzdCA+IDApIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgLSBsYXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgdGltZXN0YW1wID0gXy5ub3coKTtcbiAgICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgICAgaWYgKCF0aW1lb3V0KSB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgICBpZiAoY2FsbE5vdykge1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBmdW5jdGlvbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIHNlY29uZCxcbiAgLy8gYWxsb3dpbmcgeW91IHRvIGFkanVzdCBhcmd1bWVudHMsIHJ1biBjb2RlIGJlZm9yZSBhbmQgYWZ0ZXIsIGFuZFxuICAvLyBjb25kaXRpb25hbGx5IGV4ZWN1dGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLlxuICBfLndyYXAgPSBmdW5jdGlvbihmdW5jLCB3cmFwcGVyKSB7XG4gICAgcmV0dXJuIF8ucGFydGlhbCh3cmFwcGVyLCBmdW5jKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgbmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBwYXNzZWQtaW4gcHJlZGljYXRlLlxuICBfLm5lZ2F0ZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgYSBsaXN0IG9mIGZ1bmN0aW9ucywgZWFjaFxuICAvLyBjb25zdW1pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBmb2xsb3dzLlxuICBfLmNvbXBvc2UgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgc3RhcnQgPSBhcmdzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGkgPSBzdGFydDtcbiAgICAgIHZhciByZXN1bHQgPSBhcmdzW3N0YXJ0XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgd2hpbGUgKGktLSkgcmVzdWx0ID0gYXJnc1tpXS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIGFmdGVyIGJlaW5nIGNhbGxlZCBOIHRpbWVzLlxuICBfLmFmdGVyID0gZnVuY3Rpb24odGltZXMsIGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA8IDEpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgb25seSBiZSBleGVjdXRlZCBiZWZvcmUgYmVpbmcgY2FsbGVkIE4gdGltZXMuXG4gIF8uYmVmb3JlID0gZnVuY3Rpb24odGltZXMsIGZ1bmMpIHtcbiAgICB2YXIgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA+IDApIHtcbiAgICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZ1bmMgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGF0IG1vc3Qgb25lIHRpbWUsIG5vIG1hdHRlciBob3dcbiAgLy8gb2Z0ZW4geW91IGNhbGwgaXQuIFVzZWZ1bCBmb3IgbGF6eSBpbml0aWFsaXphdGlvbi5cbiAgXy5vbmNlID0gXy5wYXJ0aWFsKF8uYmVmb3JlLCAyKTtcblxuICAvLyBPYmplY3QgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBSZXRyaWV2ZSB0aGUgbmFtZXMgb2YgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgLy8gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYE9iamVjdC5rZXlzYFxuICBfLmtleXMgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIFtdO1xuICAgIGlmIChuYXRpdmVLZXlzKSByZXR1cm4gbmF0aXZlS2V5cyhvYmopO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikgaWYgKF8uaGFzKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH07XG5cbiAgLy8gUmV0cmlldmUgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLlxuICBfLnZhbHVlcyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciB2YWx1ZXMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlc1tpXSA9IG9ialtrZXlzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfTtcblxuICAvLyBDb252ZXJ0IGFuIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBgW2tleSwgdmFsdWVdYCBwYWlycy5cbiAgXy5wYWlycyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBwYWlycyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcGFpcnNbaV0gPSBba2V5c1tpXSwgb2JqW2tleXNbaV1dXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xuICB9O1xuXG4gIC8vIEludmVydCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGFuIG9iamVjdC4gVGhlIHZhbHVlcyBtdXN0IGJlIHNlcmlhbGl6YWJsZS5cbiAgXy5pbnZlcnQgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W29ialtrZXlzW2ldXV0gPSBrZXlzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lcyBhdmFpbGFibGUgb24gdGhlIG9iamVjdC5cbiAgLy8gQWxpYXNlZCBhcyBgbWV0aG9kc2BcbiAgXy5mdW5jdGlvbnMgPSBfLm1ldGhvZHMgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKG9ialtrZXldKSkgbmFtZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZXMuc29ydCgpO1xuICB9O1xuXG4gIC8vIEV4dGVuZCBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgcHJvcGVydGllcyBpbiBwYXNzZWQtaW4gb2JqZWN0KHMpLlxuICBfLmV4dGVuZCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIHZhciBzb3VyY2UsIHByb3A7XG4gICAgZm9yICh2YXIgaSA9IDEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yIChwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIHByb3ApKSB7XG4gICAgICAgICAgICBvYmpbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgb25seSBjb250YWluaW5nIHRoZSB3aGl0ZWxpc3RlZCBwcm9wZXJ0aWVzLlxuICBfLnBpY2sgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9LCBrZXk7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gcmVzdWx0O1xuICAgIGlmIChfLmlzRnVuY3Rpb24oaXRlcmF0ZWUpKSB7XG4gICAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgaWYgKGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iaikpIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBrZXlzID0gY29uY2F0LmFwcGx5KFtdLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICAgICAgb2JqID0gbmV3IE9iamVjdChvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmopIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBibGFja2xpc3RlZCBwcm9wZXJ0aWVzLlxuICBfLm9taXQgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5uZWdhdGUoaXRlcmF0ZWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IF8ubWFwKGNvbmNhdC5hcHBseShbXSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKSwgU3RyaW5nKTtcbiAgICAgIGl0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICByZXR1cm4gIV8uY29udGFpbnMoa2V5cywga2V5KTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBfLnBpY2sob2JqLCBpdGVyYXRlZSwgY29udGV4dCk7XG4gIH07XG5cbiAgLy8gRmlsbCBpbiBhIGdpdmVuIG9iamVjdCB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIGZvciAodmFyIGkgPSAxLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAob2JqW3Byb3BdID09PSB2b2lkIDApIG9ialtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBDcmVhdGUgYSAoc2hhbGxvdy1jbG9uZWQpIGR1cGxpY2F0ZSBvZiBhbiBvYmplY3QuXG4gIF8uY2xvbmUgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gXy5pc0FycmF5KG9iaikgPyBvYmouc2xpY2UoKSA6IF8uZXh0ZW5kKHt9LCBvYmopO1xuICB9O1xuXG4gIC8vIEludm9rZXMgaW50ZXJjZXB0b3Igd2l0aCB0aGUgb2JqLCBhbmQgdGhlbiByZXR1cm5zIG9iai5cbiAgLy8gVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4sIGluXG4gIC8vIG9yZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4gdGhlIGNoYWluLlxuICBfLnRhcCA9IGZ1bmN0aW9uKG9iaiwgaW50ZXJjZXB0b3IpIHtcbiAgICBpbnRlcmNlcHRvcihvYmopO1xuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgcmVjdXJzaXZlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGBpc0VxdWFsYC5cbiAgdmFyIGVxID0gZnVuY3Rpb24oYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBJZGVudGljYWwgb2JqZWN0cyBhcmUgZXF1YWwuIGAwID09PSAtMGAsIGJ1dCB0aGV5IGFyZW4ndCBpZGVudGljYWwuXG4gICAgLy8gU2VlIHRoZSBbSGFybW9ueSBgZWdhbGAgcHJvcG9zYWxdKGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6ZWdhbCkuXG4gICAgaWYgKGEgPT09IGIpIHJldHVybiBhICE9PSAwIHx8IDEgLyBhID09PSAxIC8gYjtcbiAgICAvLyBBIHN0cmljdCBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGBudWxsID09IHVuZGVmaW5lZGAuXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiBhID09PSBiO1xuICAgIC8vIFVud3JhcCBhbnkgd3JhcHBlZCBvYmplY3RzLlxuICAgIGlmIChhIGluc3RhbmNlb2YgXykgYSA9IGEuX3dyYXBwZWQ7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBfKSBiID0gYi5fd3JhcHBlZDtcbiAgICAvLyBDb21wYXJlIGBbW0NsYXNzXV1gIG5hbWVzLlxuICAgIHZhciBjbGFzc05hbWUgPSB0b1N0cmluZy5jYWxsKGEpO1xuICAgIGlmIChjbGFzc05hbWUgIT09IHRvU3RyaW5nLmNhbGwoYikpIHJldHVybiBmYWxzZTtcbiAgICBzd2l0Y2ggKGNsYXNzTmFtZSkge1xuICAgICAgLy8gU3RyaW5ncywgbnVtYmVycywgcmVndWxhciBleHByZXNzaW9ucywgZGF0ZXMsIGFuZCBib29sZWFucyBhcmUgY29tcGFyZWQgYnkgdmFsdWUuXG4gICAgICBjYXNlICdbb2JqZWN0IFJlZ0V4cF0nOlxuICAgICAgLy8gUmVnRXhwcyBhcmUgY29lcmNlZCB0byBzdHJpbmdzIGZvciBjb21wYXJpc29uIChOb3RlOiAnJyArIC9hL2kgPT09ICcvYS9pJylcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3RyaW5nXSc6XG4gICAgICAgIC8vIFByaW1pdGl2ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHdyYXBwZXJzIGFyZSBlcXVpdmFsZW50OyB0aHVzLCBgXCI1XCJgIGlzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gYG5ldyBTdHJpbmcoXCI1XCIpYC5cbiAgICAgICAgcmV0dXJuICcnICsgYSA9PT0gJycgKyBiO1xuICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcbiAgICAgICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICAgICAgLy8gT2JqZWN0KE5hTikgaXMgZXF1aXZhbGVudCB0byBOYU5cbiAgICAgICAgaWYgKCthICE9PSArYSkgcmV0dXJuICtiICE9PSArYjtcbiAgICAgICAgLy8gQW4gYGVnYWxgIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGZvciBvdGhlciBudW1lcmljIHZhbHVlcy5cbiAgICAgICAgcmV0dXJuICthID09PSAwID8gMSAvICthID09PSAxIC8gYiA6ICthID09PSArYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgRGF0ZV0nOlxuICAgICAgY2FzZSAnW29iamVjdCBCb29sZWFuXSc6XG4gICAgICAgIC8vIENvZXJjZSBkYXRlcyBhbmQgYm9vbGVhbnMgdG8gbnVtZXJpYyBwcmltaXRpdmUgdmFsdWVzLiBEYXRlcyBhcmUgY29tcGFyZWQgYnkgdGhlaXJcbiAgICAgICAgLy8gbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zLiBOb3RlIHRoYXQgaW52YWxpZCBkYXRlcyB3aXRoIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9uc1xuICAgICAgICAvLyBvZiBgTmFOYCBhcmUgbm90IGVxdWl2YWxlbnQuXG4gICAgICAgIHJldHVybiArYSA9PT0gK2I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYSAhPSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3IgY3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWNcbiAgICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBhYnN0cmFjdCBvcGVyYXRpb24gYEpPYC5cbiAgICB2YXIgbGVuZ3RoID0gYVN0YWNrLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIC8vIExpbmVhciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZlxuICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuICAgICAgaWYgKGFTdGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7XG4gICAgfVxuICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3Rgc1xuICAgIC8vIGZyb20gZGlmZmVyZW50IGZyYW1lcyBhcmUuXG4gICAgdmFyIGFDdG9yID0gYS5jb25zdHJ1Y3RvciwgYkN0b3IgPSBiLmNvbnN0cnVjdG9yO1xuICAgIGlmIChcbiAgICAgIGFDdG9yICE9PSBiQ3RvciAmJlxuICAgICAgLy8gSGFuZGxlIE9iamVjdC5jcmVhdGUoeCkgY2FzZXNcbiAgICAgICdjb25zdHJ1Y3RvcicgaW4gYSAmJiAnY29uc3RydWN0b3InIGluIGIgJiZcbiAgICAgICEoXy5pc0Z1bmN0aW9uKGFDdG9yKSAmJiBhQ3RvciBpbnN0YW5jZW9mIGFDdG9yICYmXG4gICAgICAgIF8uaXNGdW5jdGlvbihiQ3RvcikgJiYgYkN0b3IgaW5zdGFuY2VvZiBiQ3RvcilcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wdXNoKGEpO1xuICAgIGJTdGFjay5wdXNoKGIpO1xuICAgIHZhciBzaXplLCByZXN1bHQ7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBhIGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuXG4gICAgICBzaXplID0gYS5sZW5ndGg7XG4gICAgICByZXN1bHQgPSBzaXplID09PSBiLmxlbmd0aDtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgLy8gRGVlcCBjb21wYXJlIHRoZSBjb250ZW50cywgaWdub3Jpbmcgbm9uLW51bWVyaWMgcHJvcGVydGllcy5cbiAgICAgICAgd2hpbGUgKHNpemUtLSkge1xuICAgICAgICAgIGlmICghKHJlc3VsdCA9IGVxKGFbc2l6ZV0sIGJbc2l6ZV0sIGFTdGFjaywgYlN0YWNrKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZXAgY29tcGFyZSBvYmplY3RzLlxuICAgICAgdmFyIGtleXMgPSBfLmtleXMoYSksIGtleTtcbiAgICAgIHNpemUgPSBrZXlzLmxlbmd0aDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS5cbiAgICAgIHJlc3VsdCA9IF8ua2V5cyhiKS5sZW5ndGggPT09IHNpemU7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHdoaWxlIChzaXplLS0pIHtcbiAgICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXJcbiAgICAgICAgICBrZXkgPSBrZXlzW3NpemVdO1xuICAgICAgICAgIGlmICghKHJlc3VsdCA9IF8uaGFzKGIsIGtleSkgJiYgZXEoYVtrZXldLCBiW2tleV0sIGFTdGFjaywgYlN0YWNrKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlbW92ZSB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wb3AoKTtcbiAgICBiU3RhY2sucG9wKCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBQZXJmb3JtIGEgZGVlcCBjb21wYXJpc29uIHRvIGNoZWNrIGlmIHR3byBvYmplY3RzIGFyZSBlcXVhbC5cbiAgXy5pc0VxdWFsID0gZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBlcShhLCBiLCBbXSwgW10pO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0IGVtcHR5P1xuICAvLyBBbiBcImVtcHR5XCIgb2JqZWN0IGhhcyBubyBlbnVtZXJhYmxlIG93bi1wcm9wZXJ0aWVzLlxuICBfLmlzRW1wdHkgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB0cnVlO1xuICAgIGlmIChfLmlzQXJyYXkob2JqKSB8fCBfLmlzU3RyaW5nKG9iaikgfHwgXy5pc0FyZ3VtZW50cyhvYmopKSByZXR1cm4gb2JqLmxlbmd0aCA9PT0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoXy5oYXMob2JqLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIERPTSBlbGVtZW50P1xuICBfLmlzRWxlbWVudCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiAhIShvYmogJiYgb2JqLm5vZGVUeXBlID09PSAxKTtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGFuIGFycmF5P1xuICAvLyBEZWxlZ2F0ZXMgdG8gRUNNQTUncyBuYXRpdmUgQXJyYXkuaXNBcnJheVxuICBfLmlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YXJpYWJsZSBhbiBvYmplY3Q/XG4gIF8uaXNPYmplY3QgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgISFvYmo7XG4gIH07XG5cbiAgLy8gQWRkIHNvbWUgaXNUeXBlIG1ldGhvZHM6IGlzQXJndW1lbnRzLCBpc0Z1bmN0aW9uLCBpc1N0cmluZywgaXNOdW1iZXIsIGlzRGF0ZSwgaXNSZWdFeHAuXG4gIF8uZWFjaChbJ0FyZ3VtZW50cycsICdGdW5jdGlvbicsICdTdHJpbmcnLCAnTnVtYmVyJywgJ0RhdGUnLCAnUmVnRXhwJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBfWydpcycgKyBuYW1lXSA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIG5hbWUgKyAnXSc7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gRGVmaW5lIGEgZmFsbGJhY2sgdmVyc2lvbiBvZiB0aGUgbWV0aG9kIGluIGJyb3dzZXJzIChhaGVtLCBJRSksIHdoZXJlXG4gIC8vIHRoZXJlIGlzbid0IGFueSBpbnNwZWN0YWJsZSBcIkFyZ3VtZW50c1wiIHR5cGUuXG4gIGlmICghXy5pc0FyZ3VtZW50cyhhcmd1bWVudHMpKSB7XG4gICAgXy5pc0FyZ3VtZW50cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIF8uaGFzKG9iaiwgJ2NhbGxlZScpO1xuICAgIH07XG4gIH1cblxuICAvLyBPcHRpbWl6ZSBgaXNGdW5jdGlvbmAgaWYgYXBwcm9wcmlhdGUuIFdvcmsgYXJvdW5kIGFuIElFIDExIGJ1Zy5cbiAgaWYgKHR5cGVvZiAvLi8gIT09ICdmdW5jdGlvbicpIHtcbiAgICBfLmlzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gb2JqZWN0IGEgZmluaXRlIG51bWJlcj9cbiAgXy5pc0Zpbml0ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBpc0Zpbml0ZShvYmopICYmICFpc05hTihwYXJzZUZsb2F0KG9iaikpO1xuICB9O1xuXG4gIC8vIElzIHRoZSBnaXZlbiB2YWx1ZSBgTmFOYD8gKE5hTiBpcyB0aGUgb25seSBudW1iZXIgd2hpY2ggZG9lcyBub3QgZXF1YWwgaXRzZWxmKS5cbiAgXy5pc05hTiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBfLmlzTnVtYmVyKG9iaikgJiYgb2JqICE9PSArb2JqO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBib29sZWFuP1xuICBfLmlzQm9vbGVhbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSB8fCB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/XG4gIF8uaXNOdWxsID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIHVuZGVmaW5lZD9cbiAgXy5pc1VuZGVmaW5lZCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHZvaWQgMDtcbiAgfTtcblxuICAvLyBTaG9ydGN1dCBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IGRpcmVjdGx5XG4gIC8vIG9uIGl0c2VsZiAoaW4gb3RoZXIgd29yZHMsIG5vdCBvbiBhIHByb3RvdHlwZSkuXG4gIF8uaGFzID0gZnVuY3Rpb24ob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gb2JqICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gIH07XG5cbiAgLy8gVXRpbGl0eSBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBSdW4gVW5kZXJzY29yZS5qcyBpbiAqbm9Db25mbGljdCogbW9kZSwgcmV0dXJuaW5nIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzXG4gIC8vIHByZXZpb3VzIG93bmVyLiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdC5cbiAgXy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgcm9vdC5fID0gcHJldmlvdXNVbmRlcnNjb3JlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEtlZXAgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGFyb3VuZCBmb3IgZGVmYXVsdCBpdGVyYXRlZXMuXG4gIF8uaWRlbnRpdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcblxuICBfLmNvbnN0YW50ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfTtcblxuICBfLm5vb3AgPSBmdW5jdGlvbigpe307XG5cbiAgXy5wcm9wZXJ0eSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmpba2V5XTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBwcmVkaWNhdGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZiBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5tYXRjaGVzID0gZnVuY3Rpb24oYXR0cnMpIHtcbiAgICB2YXIgcGFpcnMgPSBfLnBhaXJzKGF0dHJzKSwgbGVuZ3RoID0gcGFpcnMubGVuZ3RoO1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuICFsZW5ndGg7XG4gICAgICBvYmogPSBuZXcgT2JqZWN0KG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYWlyID0gcGFpcnNbaV0sIGtleSA9IHBhaXJbMF07XG4gICAgICAgIGlmIChwYWlyWzFdICE9PSBvYmpba2V5XSB8fCAhKGtleSBpbiBvYmopKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICBfLnRpbWVzID0gZnVuY3Rpb24obiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgYWNjdW0gPSBBcnJheShNYXRoLm1heCgwLCBuKSk7XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIGFjY3VtW2ldID0gaXRlcmF0ZWUoaSk7XG4gICAgcmV0dXJuIGFjY3VtO1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIGFuZCBtYXggKGluY2x1c2l2ZSkuXG4gIF8ucmFuZG9tID0gZnVuY3Rpb24obWluLCBtYXgpIHtcbiAgICBpZiAobWF4ID09IG51bGwpIHtcbiAgICAgIG1heCA9IG1pbjtcbiAgICAgIG1pbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBtaW4gKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpO1xuICB9O1xuXG4gIC8vIEEgKHBvc3NpYmx5IGZhc3Rlcikgd2F5IHRvIGdldCB0aGUgY3VycmVudCB0aW1lc3RhbXAgYXMgYW4gaW50ZWdlci5cbiAgXy5ub3cgPSBEYXRlLm5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH07XG5cbiAgIC8vIExpc3Qgb2YgSFRNTCBlbnRpdGllcyBmb3IgZXNjYXBpbmcuXG4gIHZhciBlc2NhcGVNYXAgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiN4Mjc7JyxcbiAgICAnYCc6ICcmI3g2MDsnXG4gIH07XG4gIHZhciB1bmVzY2FwZU1hcCA9IF8uaW52ZXJ0KGVzY2FwZU1hcCk7XG5cbiAgLy8gRnVuY3Rpb25zIGZvciBlc2NhcGluZyBhbmQgdW5lc2NhcGluZyBzdHJpbmdzIHRvL2Zyb20gSFRNTCBpbnRlcnBvbGF0aW9uLlxuICB2YXIgY3JlYXRlRXNjYXBlciA9IGZ1bmN0aW9uKG1hcCkge1xuICAgIHZhciBlc2NhcGVyID0gZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXBbbWF0Y2hdO1xuICAgIH07XG4gICAgLy8gUmVnZXhlcyBmb3IgaWRlbnRpZnlpbmcgYSBrZXkgdGhhdCBuZWVkcyB0byBiZSBlc2NhcGVkXG4gICAgdmFyIHNvdXJjZSA9ICcoPzonICsgXy5rZXlzKG1hcCkuam9pbignfCcpICsgJyknO1xuICAgIHZhciB0ZXN0UmVnZXhwID0gUmVnRXhwKHNvdXJjZSk7XG4gICAgdmFyIHJlcGxhY2VSZWdleHAgPSBSZWdFeHAoc291cmNlLCAnZycpO1xuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyA9PSBudWxsID8gJycgOiAnJyArIHN0cmluZztcbiAgICAgIHJldHVybiB0ZXN0UmVnZXhwLnRlc3Qoc3RyaW5nKSA/IHN0cmluZy5yZXBsYWNlKHJlcGxhY2VSZWdleHAsIGVzY2FwZXIpIDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIF8uZXNjYXBlID0gY3JlYXRlRXNjYXBlcihlc2NhcGVNYXApO1xuICBfLnVuZXNjYXBlID0gY3JlYXRlRXNjYXBlcih1bmVzY2FwZU1hcCk7XG5cbiAgLy8gSWYgdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBgcHJvcGVydHlgIGlzIGEgZnVuY3Rpb24gdGhlbiBpbnZva2UgaXQgd2l0aCB0aGVcbiAgLy8gYG9iamVjdGAgYXMgY29udGV4dDsgb3RoZXJ3aXNlLCByZXR1cm4gaXQuXG4gIF8ucmVzdWx0ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICB2YXIgdmFsdWUgPSBvYmplY3RbcHJvcGVydHldO1xuICAgIHJldHVybiBfLmlzRnVuY3Rpb24odmFsdWUpID8gb2JqZWN0W3Byb3BlcnR5XSgpIDogdmFsdWU7XG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgYSB1bmlxdWUgaW50ZWdlciBpZCAodW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIGNsaWVudCBzZXNzaW9uKS5cbiAgLy8gVXNlZnVsIGZvciB0ZW1wb3JhcnkgRE9NIGlkcy5cbiAgdmFyIGlkQ291bnRlciA9IDA7XG4gIF8udW5pcXVlSWQgPSBmdW5jdGlvbihwcmVmaXgpIHtcbiAgICB2YXIgaWQgPSArK2lkQ291bnRlciArICcnO1xuICAgIHJldHVybiBwcmVmaXggPyBwcmVmaXggKyBpZCA6IGlkO1xuICB9O1xuXG4gIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZVxuICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gIF8udGVtcGxhdGVTZXR0aW5ncyA9IHtcbiAgICBldmFsdWF0ZSAgICA6IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcXHNcXFNdKz8pJT4vZyxcbiAgICBlc2NhcGUgICAgICA6IC88JS0oW1xcc1xcU10rPyklPi9nXG4gIH07XG5cbiAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhblxuICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzXG4gIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLlxuICB2YXIgbm9NYXRjaCA9IC8oLileLztcblxuICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYVxuICAvLyBzdHJpbmcgbGl0ZXJhbC5cbiAgdmFyIGVzY2FwZXMgPSB7XG4gICAgXCInXCI6ICAgICAgXCInXCIsXG4gICAgJ1xcXFwnOiAgICAgJ1xcXFwnLFxuICAgICdcXHInOiAgICAgJ3InLFxuICAgICdcXG4nOiAgICAgJ24nLFxuICAgICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgICAnXFx1MjAyOSc6ICd1MjAyOSdcbiAgfTtcblxuICB2YXIgZXNjYXBlciA9IC9cXFxcfCd8XFxyfFxcbnxcXHUyMDI4fFxcdTIwMjkvZztcblxuICB2YXIgZXNjYXBlQ2hhciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIGVzY2FwZXNbbWF0Y2hdO1xuICB9O1xuXG4gIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uXG4gIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSxcbiAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUuXG4gIC8vIE5COiBgb2xkU2V0dGluZ3NgIG9ubHkgZXhpc3RzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIHNldHRpbmdzLCBvbGRTZXR0aW5ncykge1xuICAgIGlmICghc2V0dGluZ3MgJiYgb2xkU2V0dGluZ3MpIHNldHRpbmdzID0gb2xkU2V0dGluZ3M7XG4gICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTtcblxuICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLlxuICAgIHZhciBtYXRjaGVyID0gUmVnRXhwKFtcbiAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLFxuICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2VcbiAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7XG5cbiAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LlxuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHNvdXJjZSA9IFwiX19wKz0nXCI7XG4gICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7XG4gICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKGVzY2FwZXIsIGVzY2FwZUNoYXIpO1xuICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBlc2NhcGUgKyBcIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBpbnRlcnBvbGF0ZSArIFwiKSk9PW51bGw/Jyc6X190KStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZSArIFwiXFxuX19wKz0nXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCByZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZmVzdC5cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcbiAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS5cbiAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcXG4nICsgc291cmNlICsgJ31cXG4nO1xuXG4gICAgc291cmNlID0gXCJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sXCIgK1xuICAgICAgXCJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xcblwiICtcbiAgICAgIHNvdXJjZSArICdyZXR1cm4gX19wO1xcbic7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGUuc291cmNlID0gc291cmNlO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7XG4gICAgfTtcblxuICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi5cbiAgICB2YXIgYXJndW1lbnQgPSBzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJztcbiAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIGFyZ3VtZW50ICsgJyl7XFxuJyArIHNvdXJjZSArICd9JztcblxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfTtcblxuICAvLyBBZGQgYSBcImNoYWluXCIgZnVuY3Rpb24uIFN0YXJ0IGNoYWluaW5nIGEgd3JhcHBlZCBVbmRlcnNjb3JlIG9iamVjdC5cbiAgXy5jaGFpbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBpbnN0YW5jZSA9IF8ob2JqKTtcbiAgICBpbnN0YW5jZS5fY2hhaW4gPSB0cnVlO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcblxuICAvLyBPT1BcbiAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gIC8vIElmIFVuZGVyc2NvcmUgaXMgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGl0IHJldHVybnMgYSB3cmFwcGVkIG9iamVjdCB0aGF0XG4gIC8vIGNhbiBiZSB1c2VkIE9PLXN0eWxlLiBUaGlzIHdyYXBwZXIgaG9sZHMgYWx0ZXJlZCB2ZXJzaW9ucyBvZiBhbGwgdGhlXG4gIC8vIHVuZGVyc2NvcmUgZnVuY3Rpb25zLiBXcmFwcGVkIG9iamVjdHMgbWF5IGJlIGNoYWluZWQuXG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIGNoYWluaW5nIGludGVybWVkaWF0ZSByZXN1bHRzLlxuICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYWluID8gXyhvYmopLmNoYWluKCkgOiBvYmo7XG4gIH07XG5cbiAgLy8gQWRkIHlvdXIgb3duIGN1c3RvbSBmdW5jdGlvbnMgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBfLm1peGluID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgXy5lYWNoKF8uZnVuY3Rpb25zKG9iaiksIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gX1tuYW1lXSA9IG9ialtuYW1lXTtcbiAgICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW3RoaXMuX3dyYXBwZWRdO1xuICAgICAgICBwdXNoLmFwcGx5KGFyZ3MsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBmdW5jLmFwcGx5KF8sIGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQWRkIGFsbCBvZiB0aGUgVW5kZXJzY29yZSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIgb2JqZWN0LlxuICBfLm1peGluKF8pO1xuXG4gIC8vIEFkZCBhbGwgbXV0YXRvciBBcnJheSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIuXG4gIF8uZWFjaChbJ3BvcCcsICdwdXNoJywgJ3JldmVyc2UnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvYmogPSB0aGlzLl93cmFwcGVkO1xuICAgICAgbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgIGlmICgobmFtZSA9PT0gJ3NoaWZ0JyB8fCBuYW1lID09PSAnc3BsaWNlJykgJiYgb2JqLmxlbmd0aCA9PT0gMCkgZGVsZXRlIG9ialswXTtcbiAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBvYmopO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIEFkZCBhbGwgYWNjZXNzb3IgQXJyYXkgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBfLmVhY2goWydjb25jYXQnLCAnam9pbicsICdzbGljZSddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBtZXRob2QuYXBwbHkodGhpcy5fd3JhcHBlZCwgYXJndW1lbnRzKSk7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmplY3QuXG4gIF8ucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyYXBwZWQ7XG4gIH07XG5cbiAgLy8gQU1EIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGF0IHRoZSBlbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBTUQgbG9hZGVyc1xuICAvLyB0aGF0IG1heSBub3QgZW5mb3JjZSBuZXh0LXR1cm4gc2VtYW50aWNzIG9uIG1vZHVsZXMuIEV2ZW4gdGhvdWdoIGdlbmVyYWxcbiAgLy8gcHJhY3RpY2UgZm9yIEFNRCByZWdpc3RyYXRpb24gaXMgdG8gYmUgYW5vbnltb3VzLCB1bmRlcnNjb3JlIHJlZ2lzdGVyc1xuICAvLyBhcyBhIG5hbWVkIG1vZHVsZSBiZWNhdXNlLCBsaWtlIGpRdWVyeSwgaXQgaXMgYSBiYXNlIGxpYnJhcnkgdGhhdCBpc1xuICAvLyBwb3B1bGFyIGVub3VnaCB0byBiZSBidW5kbGVkIGluIGEgdGhpcmQgcGFydHkgbGliLCBidXQgbm90IGJlIHBhcnQgb2ZcbiAgLy8gYW4gQU1EIGxvYWQgcmVxdWVzdC4gVGhvc2UgY2FzZXMgY291bGQgZ2VuZXJhdGUgYW4gZXJyb3Igd2hlbiBhblxuICAvLyBhbm9ueW1vdXMgZGVmaW5lKCkgaXMgY2FsbGVkIG91dHNpZGUgb2YgYSBsb2FkZXIgcmVxdWVzdC5cbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZSgndW5kZXJzY29yZScsIFtdLCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG59LmNhbGwodGhpcykpO1xuIiwiLyoqIEBsaWNlbnNlIFVSSS5qcyB2My4wLjEgKGMpIDIwMTEgR2FyeSBDb3VydC4gTGljZW5zZTogaHR0cDovL2dpdGh1Yi5jb20vZ2FyeWNvdXJ0L3VyaS1qcyAqL1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcblx0dHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG5cdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuXHQoZmFjdG9yeSgoZ2xvYmFsLlVSSSA9IGdsb2JhbC5VUkkgfHwge30pKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG1lcmdlKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzZXRzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIHNldHNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKHNldHMubGVuZ3RoID4gMSkge1xuICAgICAgICBzZXRzWzBdID0gc2V0c1swXS5zbGljZSgwLCAtMSk7XG4gICAgICAgIHZhciB4bCA9IHNldHMubGVuZ3RoIC0gMTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICBzZXRzW3hdID0gc2V0c1t4XS5zbGljZSgxLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0c1t4bF0gPSBzZXRzW3hsXS5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIHNldHMuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNldHNbMF07XG4gICAgfVxufVxuZnVuY3Rpb24gc3ViZXhwKHN0cikge1xuICAgIHJldHVybiBcIig/OlwiICsgc3RyICsgXCIpXCI7XG59XG5mdW5jdGlvbiB0eXBlT2Yobykge1xuICAgIHJldHVybiBvID09PSB1bmRlZmluZWQgPyBcInVuZGVmaW5lZFwiIDogbyA9PT0gbnVsbCA/IFwibnVsbFwiIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNwbGl0KFwiIFwiKS5wb3AoKS5zcGxpdChcIl1cIikuc2hpZnQoKS50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9VcHBlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci50b1VwcGVyQ2FzZSgpO1xufVxuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSB1bmRlZmluZWQgJiYgb2JqICE9PSBudWxsID8gb2JqIGluc3RhbmNlb2YgQXJyYXkgPyBvYmogOiB0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gXCJudW1iZXJcIiB8fCBvYmouc3BsaXQgfHwgb2JqLnNldEludGVydmFsIHx8IG9iai5jYWxsID8gW29ial0gOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvYmopIDogW107XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRXhwcyhpc0lSSSkge1xuICAgIHZhciBBTFBIQSQkID0gXCJbQS1aYS16XVwiLFxuICAgICAgICBDUiQgPSBcIltcXFxceDBEXVwiLFxuICAgICAgICBESUdJVCQkID0gXCJbMC05XVwiLFxuICAgICAgICBEUVVPVEUkJCA9IFwiW1xcXFx4MjJdXCIsXG4gICAgICAgIEhFWERJRyQkID0gbWVyZ2UoRElHSVQkJCwgXCJbQS1GYS1mXVwiKSxcbiAgICAgICAgLy9jYXNlLWluc2Vuc2l0aXZlXG4gICAgTEYkJCA9IFwiW1xcXFx4MEFdXCIsXG4gICAgICAgIFNQJCQgPSBcIltcXFxceDIwXVwiLFxuICAgICAgICBQQ1RfRU5DT0RFRCQgPSBzdWJleHAoc3ViZXhwKFwiJVtFRmVmXVwiICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIlWzg5QS1GYS1mXVwiICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSksXG4gICAgICAgIC8vZXhwYW5kZWRcbiAgICBHRU5fREVMSU1TJCQgPSBcIltcXFxcOlxcXFwvXFxcXD9cXFxcI1xcXFxbXFxcXF1cXFxcQF1cIixcbiAgICAgICAgU1VCX0RFTElNUyQkID0gXCJbXFxcXCFcXFxcJFxcXFwmXFxcXCdcXFxcKFxcXFwpXFxcXCpcXFxcK1xcXFwsXFxcXDtcXFxcPV1cIixcbiAgICAgICAgUkVTRVJWRUQkJCA9IG1lcmdlKEdFTl9ERUxJTVMkJCwgU1VCX0RFTElNUyQkKSxcbiAgICAgICAgVUNTQ0hBUiQkID0gaXNJUkkgPyBcIltcXFxceEEwLVxcXFx1MjAwRFxcXFx1MjAxMC1cXFxcdTIwMjlcXFxcdTIwMkYtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRUZdXCIgOiBcIltdXCIsXG4gICAgICAgIC8vc3Vic2V0LCBleGNsdWRlcyBiaWRpIGNvbnRyb2wgY2hhcmFjdGVyc1xuICAgIElQUklWQVRFJCQgPSBpc0lSSSA/IFwiW1xcXFx1RTAwMC1cXFxcdUY4RkZdXCIgOiBcIltdXCIsXG4gICAgICAgIC8vc3Vic2V0XG4gICAgVU5SRVNFUlZFRCQkID0gbWVyZ2UoQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXC1cXFxcLlxcXFxfXFxcXH5dXCIsIFVDU0NIQVIkJCksXG4gICAgICAgIFNDSEVNRSQgPSBzdWJleHAoQUxQSEEkJCArIG1lcmdlKEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwrXFxcXC1cXFxcLl1cIikgKyBcIipcIiksXG4gICAgICAgIFVTRVJJTkZPJCA9IHN1YmV4cChzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpdXCIpKSArIFwiKlwiKSxcbiAgICAgICAgREVDX09DVEVUJCA9IHN1YmV4cChzdWJleHAoXCIyNVswLTVdXCIpICsgXCJ8XCIgKyBzdWJleHAoXCIyWzAtNF1cIiArIERJR0lUJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIxXCIgKyBESUdJVCQkICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIlsxLTldXCIgKyBESUdJVCQkKSArIFwifFwiICsgRElHSVQkJCksXG4gICAgICAgIElQVjRBRERSRVNTJCA9IHN1YmV4cChERUNfT0NURVQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUJCArIFwiXFxcXC5cIiArIERFQ19PQ1RFVCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVQkKSxcbiAgICAgICAgSDE2JCA9IHN1YmV4cChIRVhESUckJCArIFwiezEsNH1cIiksXG4gICAgICAgIExTMzIkID0gc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiICsgSDE2JCkgKyBcInxcIiArIElQVjRBRERSRVNTJCksXG4gICAgICAgIElQVjZBRERSRVNTMSQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Nn1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICA2KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MyJCA9IHN1YmV4cChcIlxcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezV9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIFwiOjpcIiA1KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1MzJCA9IHN1YmV4cChzdWJleHAoSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns0fVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgICAgICAgICAgICAgICBoMTYgXSBcIjo6XCIgNCggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7M31cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoxKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMyggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsMn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7Mn1cIiArIExTMzIkKSxcbiAgICAgICAgLy9bICoyKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgMiggaDE2IFwiOlwiICkgbHMzMlxuICAgIElQVjZBRERSRVNTNiQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsM31cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCArIFwiXFxcXDpcIiArIExTMzIkKSxcbiAgICAgICAgLy9bICozKCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgaDE2IFwiOlwiICAgbHMzMlxuICAgIElQVjZBRERSRVNTNyQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNH1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjQoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICAgICAgICAgICAgbHMzMlxuICAgIElQVjZBRERSRVNTOCQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNX1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiICsgSDE2JCksXG4gICAgICAgIC8vWyAqNSggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBoMTZcbiAgICBJUFY2QUREUkVTUzkkID0gc3ViZXhwKHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInswLDZ9XCIgKyBIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiksXG4gICAgICAgIC8vWyAqNiggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiXG4gICAgSVBWNkFERFJFU1MkID0gc3ViZXhwKFtJUFY2QUREUkVTUzEkLCBJUFY2QUREUkVTUzIkLCBJUFY2QUREUkVTUzMkLCBJUFY2QUREUkVTUzQkLCBJUFY2QUREUkVTUzUkLCBJUFY2QUREUkVTUzYkLCBJUFY2QUREUkVTUzckLCBJUFY2QUREUkVTUzgkLCBJUFY2QUREUkVTUzkkXS5qb2luKFwifFwiKSksXG4gICAgICAgIElQVkZVVFVSRSQgPSBzdWJleHAoXCJbdlZdXCIgKyBIRVhESUckJCArIFwiK1xcXFwuXCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpdXCIpICsgXCIrXCIpLFxuICAgICAgICBJUF9MSVRFUkFMJCA9IHN1YmV4cChcIlxcXFxbXCIgKyBzdWJleHAoSVBWNkFERFJFU1MkICsgXCJ8XCIgKyBJUFZGVVRVUkUkKSArIFwiXFxcXF1cIiksXG4gICAgICAgIFJFR19OQU1FJCA9IHN1YmV4cChzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCkpICsgXCIqXCIpLFxuICAgICAgICBIT1NUJCA9IHN1YmV4cChJUF9MSVRFUkFMJCArIFwifFwiICsgSVBWNEFERFJFU1MkICsgXCIoPyFcIiArIFJFR19OQU1FJCArIFwiKVwiICsgXCJ8XCIgKyBSRUdfTkFNRSQpLFxuICAgICAgICBQT1JUJCA9IHN1YmV4cChESUdJVCQkICsgXCIqXCIpLFxuICAgICAgICBBVVRIT1JJVFkkID0gc3ViZXhwKHN1YmV4cChVU0VSSU5GTyQgKyBcIkBcIikgKyBcIj9cIiArIEhPU1QkICsgc3ViZXhwKFwiXFxcXDpcIiArIFBPUlQkKSArIFwiP1wiKSxcbiAgICAgICAgUENIQVIkID0gc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBdXCIpKSxcbiAgICAgICAgU0VHTUVOVCQgPSBzdWJleHAoUENIQVIkICsgXCIqXCIpLFxuICAgICAgICBTRUdNRU5UX05aJCA9IHN1YmV4cChQQ0hBUiQgKyBcIitcIiksXG4gICAgICAgIFNFR01FTlRfTlpfTkMkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcQF1cIikpICsgXCIrXCIpLFxuICAgICAgICBQQVRIX0FCRU1QVFkkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXCIgKyBTRUdNRU5UJCkgKyBcIipcIiksXG4gICAgICAgIFBBVEhfQUJTT0xVVEUkID0gc3ViZXhwKFwiXFxcXC9cIiArIHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpICsgXCI/XCIpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX05PU0NIRU1FJCA9IHN1YmV4cChTRUdNRU5UX05aX05DJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX1JPT1RMRVNTJCA9IHN1YmV4cChTRUdNRU5UX05aJCArIFBBVEhfQUJFTVBUWSQpLFxuICAgICAgICAvL3NpbXBsaWZpZWRcbiAgICBQQVRIX0VNUFRZJCA9IFwiKD8hXCIgKyBQQ0hBUiQgKyBcIilcIixcbiAgICAgICAgUEFUSCQgPSBzdWJleHAoUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBRVUVSWSQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFwiICsgbWVyZ2UoXCJbXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCkpICsgXCIqXCIpLFxuICAgICAgICBGUkFHTUVOVCQgPSBzdWJleHAoc3ViZXhwKFBDSEFSJCArIFwifFtcXFxcL1xcXFw/XVwiKSArIFwiKlwiKSxcbiAgICAgICAgSElFUl9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBVUkkkID0gc3ViZXhwKFNDSEVNRSQgKyBcIlxcXFw6XCIgKyBISUVSX1BBUlQkICsgc3ViZXhwKFwiXFxcXD9cIiArIFFVRVJZJCkgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjXCIgKyBGUkFHTUVOVCQpICsgXCI/XCIpLFxuICAgICAgICBSRUxBVElWRV9QQVJUJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvXCIgKyBBVVRIT1JJVFkkICsgUEFUSF9BQkVNUFRZJCkgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQpLFxuICAgICAgICBSRUxBVElWRSQgPSBzdWJleHAoUkVMQVRJVkVfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFVSSV9SRUZFUkVOQ0UkID0gc3ViZXhwKFVSSSQgKyBcInxcIiArIFJFTEFUSVZFJCksXG4gICAgICAgIEFCU09MVVRFX1VSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiKSxcbiAgICAgICAgR0VORVJJQ19SRUYkID0gXCJeKFwiICsgU0NIRU1FJCArIFwiKVxcXFw6XCIgKyBzdWJleHAoc3ViZXhwKFwiXFxcXC9cXFxcLyhcIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPylcIikgKyBcIj8oXCIgKyBQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9ST09UTEVTUyQgKyBcInxcIiArIFBBVEhfRU1QVFkkICsgXCIpXCIpICsgc3ViZXhwKFwiXFxcXD8oXCIgKyBRVUVSWSQgKyBcIilcIikgKyBcIj9cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBSRUxBVElWRV9SRUYkID0gXCJeKCl7MH1cIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX05PU0NIRU1FJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIEFCU09MVVRFX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgU0FNRURPQ19SRUYkID0gXCJeXCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQVVUSE9SSVRZX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIihcIiArIFVTRVJJTkZPJCArIFwiKUBcIikgKyBcIj8oXCIgKyBIT1NUJCArIFwiKVwiICsgc3ViZXhwKFwiXFxcXDooXCIgKyBQT1JUJCArIFwiKVwiKSArIFwiPyRcIjtcbiAgICByZXR1cm4ge1xuICAgICAgICBOT1RfU0NIRU1FOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFMUEhBJCQsIERJR0lUJCQsIFwiW1xcXFwrXFxcXC1cXFxcLl1cIiksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1VTRVJJTkZPOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0hPU1Q6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXFtcXFxcXVxcXFw6XVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEg6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcOlxcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1BBVEhfTk9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXC9cXFxcQF1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIE5PVF9RVUVSWTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOlxcXFxAXFxcXC9cXFxcP11cIiwgSVBSSVZBVEUkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX0ZSQUdNRU5UOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiKSwgXCJnXCIpLFxuICAgICAgICBFU0NBUEU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQpLCBcImdcIiksXG4gICAgICAgIFVOUkVTRVJWRUQ6IG5ldyBSZWdFeHAoVU5SRVNFUlZFRCQkLCBcImdcIiksXG4gICAgICAgIE9USEVSX0NIQVJTOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBSRVNFUlZFRCQkKSwgXCJnXCIpLFxuICAgICAgICBQQ1RfRU5DT0RFRDogbmV3IFJlZ0V4cChQQ1RfRU5DT0RFRCQsIFwiZ1wiKSxcbiAgICAgICAgSVBWNkFERFJFU1M6IG5ldyBSZWdFeHAoXCJcXFxcWz8oXCIgKyBJUFY2QUREUkVTUyQgKyBcIilcXFxcXT9cIiwgXCJnXCIpXG4gICAgfTtcbn1cbnZhciBVUklfUFJPVE9DT0wgPSBidWlsZEV4cHMoZmFsc2UpO1xuXG52YXIgSVJJX1BST1RPQ09MID0gYnVpbGRFeHBzKHRydWUpO1xuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYXJyKTtcbiAgfVxufTtcblxuLyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xuXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG4vKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG52YXIgcmVnZXhQdW55Y29kZSA9IC9eeG4tLS87XG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHg3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xudmFyIGVycm9ycyA9IHtcblx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0J2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcbn07XG5cbi8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBlcnJvciQxKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdHZhciByZXN1bHQgPSBbXTtcblx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuICogYWRkcmVzc2VzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcbiAqIGNoYXJhY3Rlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdHZhciByZXN1bHQgPSAnJztcblx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0fVxuXHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXHR2YXIgY291bnRlciA9IDA7XG5cdHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdHZhciB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0Ly8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cblx0XHRcdHZhciBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHtcblx0XHRcdFx0Ly8gTG93IHN1cnJvZ2F0ZS5cblx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEl0J3MgYW4gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlXG5cdFx0XHRcdC8vIG5leHQgY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLlxuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGVuY29kZVxuICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cbiAqL1xudmFyIHVjczJlbmNvZGUgPSBmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIHRvQ29uc3VtYWJsZUFycmF5KGFycmF5KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cbiAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG4gKi9cbnZhciBiYXNpY1RvRGlnaXQgPSBmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdGlmIChjb2RlUG9pbnQgLSAweDMwIDwgMHgwQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDE2O1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDQxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDQxO1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDYxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG52YXIgZGlnaXRUb0Jhc2ljID0gZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xufTtcblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBhZGFwdCA9IGZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHR2YXIgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICg7IC8qIG5vIGluaXRpYWxpemF0aW9uICovZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbnZhciBkZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0Ly8gRG9uJ3QgdXNlIFVDUy0yLlxuXHR2YXIgb3V0cHV0ID0gW107XG5cdHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblx0dmFyIGkgPSAwO1xuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHQvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuXHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHR2YXIgYmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuXHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0YmFzaWMgPSAwO1xuXHR9XG5cblx0Zm9yICh2YXIgaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0Ly8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG5cdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0ZXJyb3IkMSgnbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAodmFyIGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDspIC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi97XG5cblx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0Ly8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuXHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHQvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuXHRcdHZhciBvbGRpID0gaTtcblx0XHRmb3IgKHZhciB3ID0gMSwgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblxuXHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdGVycm9yJDEoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0dmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcblxuXHRcdFx0aWYgKGRpZ2l0IDwgdCkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXHRcdH1cblxuXHRcdHZhciBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0aSAlPSBvdXQ7XG5cblx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0LlxuXHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblx0fVxuXG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIG91dHB1dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0dmFyIG91dHB1dCA9IFtdO1xuXG5cdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG5cdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0Ly8gQ2FjaGUgdGhlIGxlbmd0aC5cblx0dmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHR2YXIgbiA9IGluaXRpYWxOO1xuXHR2YXIgZGVsdGEgPSAwO1xuXHR2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0dmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG5cdHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuXHR0cnkge1xuXHRcdGZvciAodmFyIF9pdGVyYXRvciA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuXHRcdFx0dmFyIF9jdXJyZW50VmFsdWUyID0gX3N0ZXAudmFsdWU7XG5cblx0XHRcdGlmIChfY3VycmVudFZhbHVlMiA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKF9jdXJyZW50VmFsdWUyKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdFx0X2l0ZXJhdG9yRXJyb3IgPSBlcnI7XG5cdH0gZmluYWxseSB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG5cdFx0XHRcdF9pdGVyYXRvci5yZXR1cm4oKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0aWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG5cdFx0XHRcdHRocm93IF9pdGVyYXRvckVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cdHZhciBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoO1xuXG5cdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cblx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0fVxuXG5cdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdHZhciBtID0gbWF4SW50O1xuXHRcdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdFx0dmFyIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHRcdHZhciBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cblx0XHR0cnkge1xuXHRcdFx0Zm9yICh2YXIgX2l0ZXJhdG9yMiA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlKSB7XG5cdFx0XHRcdHZhciBjdXJyZW50VmFsdWUgPSBfc3RlcDIudmFsdWU7XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMiA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjIucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjIpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0biA9IG07XG5cblx0XHR2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHRcdHZhciBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0XHR2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGZvciAodmFyIF9pdGVyYXRvcjMgPSBpbnB1dFtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZSkge1xuXHRcdFx0XHR2YXIgX2N1cnJlbnRWYWx1ZSA9IF9zdGVwMy52YWx1ZTtcblxuXHRcdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKF9jdXJyZW50VmFsdWUgPT0gbikge1xuXHRcdFx0XHRcdC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuXHRcdFx0XHRcdHZhciBxID0gZGVsdGE7XG5cdFx0XHRcdFx0Zm9yICh2YXIgayA9IGJhc2U7OyAvKiBubyBjb25kaXRpb24gKi9rICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG5cdFx0XHRcdFx0XHRpZiAocSA8IHQpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0dmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSkpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0X2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcblx0XHRcdF9pdGVyYXRvckVycm9yMyA9IGVycjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzLnJldHVybikge1xuXHRcdFx0XHRcdF9pdGVyYXRvcjMucmV0dXJuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0XHRcdFx0XHR0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQrK2RlbHRhO1xuXHRcdCsrbjtcblx0fVxuXHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xudmFyIHRvVW5pY29kZSA9IGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpID8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG52YXIgdG9BU0NJSSA9IGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24gKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKSA/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpIDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG52YXIgcHVueWNvZGUgPSB7XG5cdC8qKlxuICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cbiAgKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAgKiBAdHlwZSBTdHJpbmdcbiAgKi9cblx0J3ZlcnNpb24nOiAnMi4xLjAnLFxuXHQvKipcbiAgKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuICAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG4gICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gICogQG1lbWJlck9mIHB1bnljb2RlXG4gICogQHR5cGUgT2JqZWN0XG4gICovXG5cdCd1Y3MyJzoge1xuXHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdH0sXG5cdCdkZWNvZGUnOiBkZWNvZGUsXG5cdCdlbmNvZGUnOiBlbmNvZGUsXG5cdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxufTtcblxuLyoqXHJcbiAqIFVSSS5qc1xyXG4gKlxyXG4gKiBAZmlsZW92ZXJ2aWV3IEFuIFJGQyAzOTg2IGNvbXBsaWFudCwgc2NoZW1lIGV4dGVuZGFibGUgVVJJIHBhcnNpbmcvdmFsaWRhdGluZy9yZXNvbHZpbmcgbGlicmFyeSBmb3IgSmF2YVNjcmlwdC5cclxuICogQGF1dGhvciA8YSBocmVmPVwibWFpbHRvOmdhcnkuY291cnRAZ21haWwuY29tXCI+R2FyeSBDb3VydDwvYT5cclxuICogQHNlZSBodHRwOi8vZ2l0aHViLmNvbS9nYXJ5Y291cnQvdXJpLWpzXHJcbiAqL1xuLyoqXHJcbiAqIENvcHlyaWdodCAyMDExIEdhcnkgQ291cnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZVxyXG4gKiBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcclxuICpcclxuICogICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2ZcclxuICogICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxyXG4gKlxyXG4gKiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdFxyXG4gKiAgICAgICBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFsc1xyXG4gKiAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR0FSWSBDT1VSVCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRURcclxuICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORFxyXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR0FSWSBDT1VSVCBPUlxyXG4gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxyXG4gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXHJcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT05cclxuICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xyXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUZcclxuICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqXHJcbiAqIFRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlXHJcbiAqIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkXHJcbiAqIG9yIGltcGxpZWQsIG9mIEdhcnkgQ291cnQuXHJcbiAqL1xudmFyIFNDSEVNRVMgPSB7fTtcbmZ1bmN0aW9uIHBjdEVuY0NoYXIoY2hyKSB7XG4gICAgdmFyIGMgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgZSA9IHZvaWQgMDtcbiAgICBpZiAoYyA8IDE2KSBlID0gXCIlMFwiICsgYy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGlmIChjIDwgMTI4KSBlID0gXCIlXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAyMDQ4KSBlID0gXCIlXCIgKyAoYyA+PiA2IHwgMTkyKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBlID0gXCIlXCIgKyAoYyA+PiAxMiB8IDIyNCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjID4+IDYgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyBcIiVcIiArIChjICYgNjMgfCAxMjgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gcGN0RGVjQ2hhcnMoc3RyKSB7XG4gICAgdmFyIG5ld1N0ciA9IFwiXCI7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBpbCA9IHN0ci5sZW5ndGg7XG4gICAgd2hpbGUgKGkgPCBpbCkge1xuICAgICAgICB2YXIgYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDEsIDIpLCAxNik7XG4gICAgICAgIGlmIChjIDwgMTI4KSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDE5NCAmJiBjIDwgMjI0KSB7XG4gICAgICAgICAgICBpZiAoaWwgLSBpID49IDYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYzIgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA0LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMzEpIDw8IDYgfCBjMiAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgNik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDY7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA+PSAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gOSkge1xuICAgICAgICAgICAgICAgIHZhciBfYyA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgdmFyIGMzID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNywgMiksIDE2KTtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDE1KSA8PCAxMiB8IChfYyAmIDYzKSA8PCA2IHwgYzMgJiA2Myk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBzdHIuc3Vic3RyKGksIDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSArPSA5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgMyk7XG4gICAgICAgICAgICBpICs9IDM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1N0cjtcbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCkge1xuICAgIGZ1bmN0aW9uIGRlY29kZVVucmVzZXJ2ZWQoc3RyKSB7XG4gICAgICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgICAgICByZXR1cm4gIWRlY1N0ci5tYXRjaChwcm90b2NvbC5VTlJFU0VSVkVEKSA/IHN0ciA6IGRlY1N0cjtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuc2NoZW1lKSBjb21wb25lbnRzLnNjaGVtZSA9IFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9TQ0hFTUUsIFwiXCIpO1xuICAgIGlmIChjb21wb25lbnRzLnVzZXJpbmZvICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMudXNlcmluZm8gPSBTdHJpbmcoY29tcG9uZW50cy51c2VyaW5mbykucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfVVNFUklORk8sIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMuaG9zdCA9IFN0cmluZyhjb21wb25lbnRzLmhvc3QpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShwcm90b2NvbC5OT1RfSE9TVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5wYXRoID0gU3RyaW5nKGNvbXBvbmVudHMucGF0aCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShjb21wb25lbnRzLnNjaGVtZSA/IHByb3RvY29sLk5PVF9QQVRIIDogcHJvdG9jb2wuTk9UX1BBVEhfTk9TQ0hFTUUsIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnF1ZXJ5ID0gU3RyaW5nKGNvbXBvbmVudHMucXVlcnkpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1FVRVJZLCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5mcmFnbWVudCA9IFN0cmluZyhjb21wb25lbnRzLmZyYWdtZW50KS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9GUkFHTUVOVCwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIHJldHVybiBjb21wb25lbnRzO1xufVxuXG52YXIgVVJJX1BBUlNFID0gL14oPzooW146XFwvPyNdKyk6KT8oPzpcXC9cXC8oKD86KFteXFwvPyNAXSopQCk/KFxcW1tcXGRBLUY6Ll0rXFxdfFteXFwvPyM6XSopKD86XFw6KFxcZCopKT8pKT8oW14/I10qKSg/OlxcPyhbXiNdKikpPyg/OiMoKD86LnxcXG58XFxyKSopKT8vaTtcbnZhciBOT19NQVRDSF9JU19VTkRFRklORUQgPSBcIlwiLm1hdGNoKC8oKXswfS8pWzFdID09PSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBwYXJzZSh1cmlTdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICB2YXIgY29tcG9uZW50cyA9IHt9O1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgPT09IFwic3VmZml4XCIpIHVyaVN0cmluZyA9IChvcHRpb25zLnNjaGVtZSA/IG9wdGlvbnMuc2NoZW1lICsgXCI6XCIgOiBcIlwiKSArIFwiLy9cIiArIHVyaVN0cmluZztcbiAgICB2YXIgbWF0Y2hlcyA9IHVyaVN0cmluZy5tYXRjaChVUklfUEFSU0UpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGlmIChOT19NQVRDSF9JU19VTkRFRklORUQpIHtcbiAgICAgICAgICAgIC8vc3RvcmUgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSBtYXRjaGVzWzNdO1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gbWF0Y2hlc1s0XTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBtYXRjaGVzWzddO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mcmFnbWVudCA9IG1hdGNoZXNbOF07XG4gICAgICAgICAgICAvL2ZpeCBwb3J0IG51bWJlclxuICAgICAgICAgICAgaWYgKGlzTmFOKGNvbXBvbmVudHMucG9ydCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBvcnQgPSBtYXRjaGVzWzVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9zdG9yZSBlYWNoIGNvbXBvbmVudFxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBtYXRjaGVzWzFdIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudXNlcmluZm8gPSB1cmlTdHJpbmcuaW5kZXhPZihcIkBcIikgIT09IC0xID8gbWF0Y2hlc1szXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IHVyaVN0cmluZy5pbmRleE9mKFwiLy9cIikgIT09IC0xID8gbWF0Y2hlc1s0XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHBhcnNlSW50KG1hdGNoZXNbNV0sIDEwKTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbNl0gfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSB1cmlTdHJpbmcuaW5kZXhPZihcIj9cIikgIT09IC0xID8gbWF0Y2hlc1s3XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZnJhZ21lbnQgPSB1cmlTdHJpbmcuaW5kZXhPZihcIiNcIikgIT09IC0xID8gbWF0Y2hlc1s4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIC8vZml4IHBvcnQgbnVtYmVyXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29tcG9uZW50cy5wb3J0KSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHVyaVN0cmluZy5tYXRjaCgvXFwvXFwvKD86LnxcXG4pKlxcOig/OlxcL3xcXD98XFwjfCQpLykgPyBtYXRjaGVzWzRdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vc3RyaXAgYnJhY2tldHMgZnJvbSBJUHY2IGhvc3RzXG4gICAgICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IGNvbXBvbmVudHMuaG9zdC5yZXBsYWNlKHByb3RvY29sLklQVjZBRERSRVNTLCBcIiQxXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vZGV0ZXJtaW5lIHJlZmVyZW5jZSB0eXBlXG4gICAgICAgIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudHMudXNlcmluZm8gPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLmhvc3QgPT09IHVuZGVmaW5lZCAmJiBjb21wb25lbnRzLnBvcnQgPT09IHVuZGVmaW5lZCAmJiAhY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInNhbWUtZG9jdW1lbnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLnNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwicmVsYXRpdmVcIjtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzLmZyYWdtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcInVyaVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vY2hlY2sgZm9yIHJlZmVyZW5jZSBlcnJvcnNcbiAgICAgICAgaWYgKG9wdGlvbnMucmVmZXJlbmNlICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBcInN1ZmZpeFwiICYmIG9wdGlvbnMucmVmZXJlbmNlICE9PSBjb21wb25lbnRzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVUkkgaXMgbm90IGEgXCIgKyBvcHRpb25zLnJlZmVyZW5jZSArIFwiIHJlZmVyZW5jZS5cIjtcbiAgICAgICAgfVxuICAgICAgICAvL2ZpbmQgc2NoZW1lIGhhbmRsZXJcbiAgICAgICAgdmFyIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTWyhvcHRpb25zLnNjaGVtZSB8fCBjb21wb25lbnRzLnNjaGVtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgLy9jaGVjayBpZiBzY2hlbWUgY2FuJ3QgaGFuZGxlIElSSXNcbiAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0ICYmICghc2NoZW1lSGFuZGxlciB8fCAhc2NoZW1lSGFuZGxlci51bmljb2RlU3VwcG9ydCkpIHtcbiAgICAgICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYSBkb21haW4gbmFtZVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuaG9zdCAmJiAob3B0aW9ucy5kb21haW5Ib3N0IHx8IHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5kb21haW5Ib3N0KSkge1xuICAgICAgICAgICAgICAgIC8vY29udmVydCBVbmljb2RlIElETiAtPiBBU0NJSSBJRE5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBwdW55Y29kZS50b0FTQ0lJKGNvbXBvbmVudHMuaG9zdC5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBwY3REZWNDaGFycykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhvc3QncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnZlcnQgSVJJIC0+IFVSSVxuICAgICAgICAgICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIFVSSV9QUk9UT0NPTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBlbmNvZGluZ3NcbiAgICAgICAgICAgIF9ub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyhjb21wb25lbnRzLCBwcm90b2NvbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBwYXJzaW5nXG4gICAgICAgIGlmIChzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIucGFyc2UpIHtcbiAgICAgICAgICAgIHNjaGVtZUhhbmRsZXIucGFyc2UoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVSSSBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIF9yZWNvbXBvc2VBdXRob3JpdHkoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpICE9PSBmYWxzZSA/IElSSV9QUk9UT0NPTCA6IFVSSV9QUk9UT0NPTDtcbiAgICB2YXIgdXJpVG9rZW5zID0gW107XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLnVzZXJpbmZvKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCJAXCIpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5ob3N0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy9lbnN1cmUgSVB2NiBhZGRyZXNzZXMgYXJlIGJyYWNrZXRlZFxuICAgICAgICB1cmlUb2tlbnMucHVzaChTdHJpbmcoY29tcG9uZW50cy5ob3N0KS5yZXBsYWNlKHByb3RvY29sLklQVjZBRERSRVNTLCBcIlskMV1cIikpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudHMucG9ydCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMucG9ydC50b1N0cmluZygxMCkpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpVG9rZW5zLmxlbmd0aCA/IHVyaVRva2Vucy5qb2luKFwiXCIpIDogdW5kZWZpbmVkO1xufVxuXG52YXIgUkRTMSA9IC9eXFwuXFwuP1xcLy87XG52YXIgUkRTMiA9IC9eXFwvXFwuKFxcL3wkKS87XG52YXIgUkRTMyA9IC9eXFwvXFwuXFwuKFxcL3wkKS87XG52YXIgUkRTNSA9IC9eXFwvPyg/Oi58XFxuKSo/KD89XFwvfCQpLztcbmZ1bmN0aW9uIHJlbW92ZURvdFNlZ21lbnRzKGlucHV0KSB7XG4gICAgdmFyIG91dHB1dCA9IFtdO1xuICAgIHdoaWxlIChpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKFJEUzEpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoUkRTMSwgXCJcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQubWF0Y2goUkRTMikpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShSRFMyLCBcIi9cIik7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQubWF0Y2goUkRTMykpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShSRFMzLCBcIi9cIik7XG4gICAgICAgICAgICBvdXRwdXQucG9wKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09IFwiLlwiIHx8IGlucHV0ID09PSBcIi4uXCIpIHtcbiAgICAgICAgICAgIGlucHV0ID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpbSA9IGlucHV0Lm1hdGNoKFJEUzUpO1xuICAgICAgICAgICAgaWYgKGltKSB7XG4gICAgICAgICAgICAgICAgdmFyIHMgPSBpbVswXTtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKHMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBvdXRwdXQucHVzaChzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBkb3Qgc2VnbWVudCBjb25kaXRpb25cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemUoY29tcG9uZW50cykge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgIHZhciBwcm90b2NvbCA9IG9wdGlvbnMuaXJpID8gSVJJX1BST1RPQ09MIDogVVJJX1BST1RPQ09MO1xuICAgIHZhciB1cmlUb2tlbnMgPSBbXTtcbiAgICAvL2ZpbmQgc2NoZW1lIGhhbmRsZXJcbiAgICB2YXIgc2NoZW1lSGFuZGxlciA9IFNDSEVNRVNbKG9wdGlvbnMuc2NoZW1lIHx8IGNvbXBvbmVudHMuc2NoZW1lIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCldO1xuICAgIC8vcGVyZm9ybSBzY2hlbWUgc3BlY2lmaWMgc2VyaWFsaXphdGlvblxuICAgIGlmIChzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKSBzY2hlbWVIYW5kbGVyLnNlcmlhbGl6ZShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICBpZiAoY29tcG9uZW50cy5ob3N0KSB7XG4gICAgICAgIC8vaWYgaG9zdCBjb21wb25lbnQgaXMgYW4gSVB2NiBhZGRyZXNzXG4gICAgICAgIGlmIChwcm90b2NvbC5JUFY2QUREUkVTUy50ZXN0KGNvbXBvbmVudHMuaG9zdCkpIHtcbiAgICAgICAgICAgIC8vVE9ETzogbm9ybWFsaXplIElQdjYgYWRkcmVzcyBhcyBwZXIgUkZDIDU5NTJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmRvbWFpbkhvc3QgfHwgc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLmRvbWFpbkhvc3QpIHtcbiAgICAgICAgICAgIC8vY29udmVydCBJRE4gdmlhIHB1bnljb2RlXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkoY29tcG9uZW50cy5ob3N0LnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShjb21wb25lbnRzLmhvc3QpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiSG9zdCdzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvIFwiICsgKCFvcHRpb25zLmlyaSA/IFwiQVNDSUlcIiA6IFwiVW5pY29kZVwiKSArIFwiIHZpYSBwdW55Y29kZTogXCIgKyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vbm9ybWFsaXplIGVuY29kaW5nXG4gICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKTtcbiAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIgJiYgY29tcG9uZW50cy5zY2hlbWUpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5zY2hlbWUpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIjpcIik7XG4gICAgfVxuICAgIHZhciBhdXRob3JpdHkgPSBfcmVjb21wb3NlQXV0aG9yaXR5KGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChhdXRob3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIpIHtcbiAgICAgICAgICAgIHVyaVRva2Vucy5wdXNoKFwiLy9cIik7XG4gICAgICAgIH1cbiAgICAgICAgdXJpVG9rZW5zLnB1c2goYXV0aG9yaXR5KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGguY2hhckF0KDApICE9PSBcIi9cIikge1xuICAgICAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIvXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgcyA9IGNvbXBvbmVudHMucGF0aDtcbiAgICAgICAgaWYgKCFvcHRpb25zLmFic29sdXRlUGF0aCAmJiAoIXNjaGVtZUhhbmRsZXIgfHwgIXNjaGVtZUhhbmRsZXIuYWJzb2x1dGVQYXRoKSkge1xuICAgICAgICAgICAgcyA9IHJlbW92ZURvdFNlZ21lbnRzKHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRob3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgvXlxcL1xcLy8sIFwiLyUyRlwiKTsgLy9kb24ndCBhbGxvdyB0aGUgcGF0aCB0byBzdGFydCB3aXRoIFwiLy9cIlxuICAgICAgICB9XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKHMpO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiP1wiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5xdWVyeSk7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLmZyYWdtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIjXCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLmZyYWdtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaVRva2Vucy5qb2luKFwiXCIpOyAvL21lcmdlIHRva2VucyBpbnRvIGEgc3RyaW5nXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRzKGJhc2UsIHJlbGF0aXZlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciBza2lwTm9ybWFsaXphdGlvbiA9IGFyZ3VtZW50c1szXTtcblxuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICBpZiAoIXNraXBOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgIGJhc2UgPSBwYXJzZShzZXJpYWxpemUoYmFzZSwgb3B0aW9ucyksIG9wdGlvbnMpOyAvL25vcm1hbGl6ZSBiYXNlIGNvbXBvbmVudHNcbiAgICAgICAgcmVsYXRpdmUgPSBwYXJzZShzZXJpYWxpemUocmVsYXRpdmUsIG9wdGlvbnMpLCBvcHRpb25zKTsgLy9ub3JtYWxpemUgcmVsYXRpdmUgY29tcG9uZW50c1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgcmVsYXRpdmUuc2NoZW1lKSB7XG4gICAgICAgIHRhcmdldC5zY2hlbWUgPSByZWxhdGl2ZS5zY2hlbWU7XG4gICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gcmVsYXRpdmUudXNlcmluZm87XG4gICAgICAgIHRhcmdldC5ob3N0ID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGggfHwgXCJcIik7XG4gICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZWxhdGl2ZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLmhvc3QgIT09IHVuZGVmaW5lZCB8fCByZWxhdGl2ZS5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IHJlbGF0aXZlLmF1dGhvcml0eTtcbiAgICAgICAgICAgIHRhcmdldC51c2VyaW5mbyA9IHJlbGF0aXZlLnVzZXJpbmZvO1xuICAgICAgICAgICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSByZWxhdGl2ZS5wb3J0O1xuICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhyZWxhdGl2ZS5wYXRoIHx8IFwiXCIpO1xuICAgICAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXJlbGF0aXZlLnBhdGgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aDtcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlLnBhdGguY2hhckF0KDApID09PSBcIi9cIikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZS51c2VyaW5mbyAhPT0gdW5kZWZpbmVkIHx8IGJhc2UuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IGJhc2UucG9ydCAhPT0gdW5kZWZpbmVkKSAmJiAhYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IFwiL1wiICsgcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZS5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucGF0aCA9IGJhc2UucGF0aC5zbGljZSgwLCBiYXNlLnBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgKyByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHModGFyZ2V0LnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vdGFyZ2V0LmF1dGhvcml0eSA9IGJhc2UuYXV0aG9yaXR5O1xuICAgICAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gYmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgIHRhcmdldC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdGFyZ2V0LnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgIH1cbiAgICB0YXJnZXQuZnJhZ21lbnQgPSByZWxhdGl2ZS5mcmFnbWVudDtcbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlKGJhc2VVUkksIHJlbGF0aXZlVVJJLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZShyZXNvbHZlQ29tcG9uZW50cyhwYXJzZShiYXNlVVJJLCBvcHRpb25zKSwgcGFyc2UocmVsYXRpdmVVUkksIG9wdGlvbnMpLCBvcHRpb25zLCB0cnVlKSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh1cmksIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIHVyaSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmkgPSBzZXJpYWxpemUocGFyc2UodXJpLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0eXBlT2YodXJpKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmkgPSBwYXJzZShzZXJpYWxpemUodXJpLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB1cmk7XG59XG5cbmZ1bmN0aW9uIGVxdWFsKHVyaUEsIHVyaUIsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIHVyaUEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpQSA9IHNlcmlhbGl6ZShwYXJzZSh1cmlBLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0eXBlT2YodXJpQSkgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpQSA9IHNlcmlhbGl6ZSh1cmlBLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB1cmlCID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaUIgPSBzZXJpYWxpemUocGFyc2UodXJpQiwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9mKHVyaUIpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaUIgPSBzZXJpYWxpemUodXJpQiwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB1cmlBID09PSB1cmlCO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVDb21wb25lbnQoc3RyLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHN0ciAmJiBzdHIudG9TdHJpbmcoKS5yZXBsYWNlKCFvcHRpb25zIHx8ICFvcHRpb25zLmlyaSA/IFVSSV9QUk9UT0NPTC5FU0NBUEUgOiBJUklfUFJPVE9DT0wuRVNDQVBFLCBwY3RFbmNDaGFyKTtcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGVDb21wb25lbnQoc3RyLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHN0ciAmJiBzdHIudG9TdHJpbmcoKS5yZXBsYWNlKCFvcHRpb25zIHx8ICFvcHRpb25zLmlyaSA/IFVSSV9QUk9UT0NPTC5QQ1RfRU5DT0RFRCA6IElSSV9QUk9UT0NPTC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpO1xufVxuXG52YXIgaHR0cCA9IHtcbiAgICBzY2hlbWU6IFwiaHR0cFwiLFxuICAgIGRvbWFpbkhvc3Q6IHRydWUsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgLy9yZXBvcnQgbWlzc2luZyBob3N0XG4gICAgICAgIGlmICghY29tcG9uZW50cy5ob3N0KSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkhUVFAgVVJJcyBtdXN0IGhhdmUgYSBob3N0LlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAvL25vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgIGlmIChjb21wb25lbnRzLnBvcnQgPT09IChTdHJpbmcoY29tcG9uZW50cy5zY2hlbWUpLnRvTG93ZXJDYXNlKCkgIT09IFwiaHR0cHNcIiA/IDgwIDogNDQzKSB8fCBjb21wb25lbnRzLnBvcnQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvL25vcm1hbGl6ZSB0aGUgZW1wdHkgcGF0aFxuICAgICAgICBpZiAoIWNvbXBvbmVudHMucGF0aCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gXCIvXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9OT1RFOiBXZSBkbyBub3QgcGFyc2UgcXVlcnkgc3RyaW5ncyBmb3IgSFRUUCBVUklzXG4gICAgICAgIC8vYXMgV1dXIEZvcm0gVXJsIEVuY29kZWQgcXVlcnkgc3RyaW5ncyBhcmUgcGFydCBvZiB0aGUgSFRNTDQrIHNwZWMsXG4gICAgICAgIC8vYW5kIG5vdCB0aGUgSFRUUCBzcGVjLlxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgaHR0cHMgPSB7XG4gICAgc2NoZW1lOiBcImh0dHBzXCIsXG4gICAgZG9tYWluSG9zdDogaHR0cC5kb21haW5Ib3N0LFxuICAgIHBhcnNlOiBodHRwLnBhcnNlLFxuICAgIHNlcmlhbGl6ZTogaHR0cC5zZXJpYWxpemVcbn07XG5cbnZhciBPID0ge307XG52YXIgaXNJUkkgPSB0cnVlO1xuLy9SRkMgMzk4NlxudmFyIFVOUkVTRVJWRUQkJCA9IFwiW0EtWmEtejAtOVxcXFwtXFxcXC5cXFxcX1xcXFx+XCIgKyAoaXNJUkkgPyBcIlxcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRlwiIDogXCJcIikgKyBcIl1cIjtcbnZhciBIRVhESUckJCA9IFwiWzAtOUEtRmEtZl1cIjsgLy9jYXNlLWluc2Vuc2l0aXZlXG52YXIgUENUX0VOQ09ERUQkID0gc3ViZXhwKHN1YmV4cChcIiVbRUZlZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVs4OUEtRmEtZl1cIiArIEhFWERJRyQkICsgXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSArIFwifFwiICsgc3ViZXhwKFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkpOyAvL2V4cGFuZGVkXG4vL1JGQyA1MzIyLCBleGNlcHQgdGhlc2Ugc3ltYm9scyBhcyBwZXIgUkZDIDYwNjg6IEAgOiAvID8gIyBbIF0gJiA7ID1cbi8vY29uc3QgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCNcXFxcJFxcXFwlXFxcXCZcXFxcJ1xcXFwqXFxcXCtcXFxcLVxcXFwvXFxcXD1cXFxcP1xcXFxeXFxcXF9cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVRFWFQkJCA9IFwiW1xcXFx4MDEtXFxcXHgwOFxcXFx4MEJcXFxceDBDXFxcXHgwRS1cXFxceDFGXFxcXHg3Rl1cIjsgIC8vKCVkMS04IC8gJWQxMS0xMiAvICVkMTQtMzEgLyAlZDEyNylcbi8vY29uc3QgUVRFWFQkJCA9IG1lcmdlKFwiW1xcXFx4MjFcXFxceDIzLVxcXFx4NUJcXFxceDVELVxcXFx4N0VdXCIsIE9CU19RVEVYVCQkKTsgIC8vJWQzMyAvICVkMzUtOTEgLyAlZDkzLTEyNiAvIG9icy1xdGV4dFxuLy9jb25zdCBWQ0hBUiQkID0gXCJbXFxcXHgyMS1cXFxceDdFXVwiO1xuLy9jb25zdCBXU1AkJCA9IFwiW1xcXFx4MjBcXFxceDA5XVwiO1xuLy9jb25zdCBPQlNfUVAkID0gc3ViZXhwKFwiXFxcXFxcXFxcIiArIG1lcmdlKFwiW1xcXFx4MDBcXFxceDBEXFxcXHgwQV1cIiwgT0JTX1FURVhUJCQpKTsgIC8vJWQwIC8gQ1IgLyBMRiAvIG9icy1xdGV4dFxuLy9jb25zdCBGV1MkID0gc3ViZXhwKHN1YmV4cChXU1AkJCArIFwiKlwiICsgXCJcXFxceDBEXFxcXHgwQVwiKSArIFwiP1wiICsgV1NQJCQgKyBcIitcIik7XG4vL2NvbnN0IFFVT1RFRF9QQUlSJCA9IHN1YmV4cChzdWJleHAoXCJcXFxcXFxcXFwiICsgc3ViZXhwKFZDSEFSJCQgKyBcInxcIiArIFdTUCQkKSkgKyBcInxcIiArIE9CU19RUCQpO1xuLy9jb25zdCBRVU9URURfU1RSSU5HJCA9IHN1YmV4cCgnXFxcXFwiJyArIHN1YmV4cChGV1MkICsgXCI/XCIgKyBRQ09OVEVOVCQpICsgXCIqXCIgKyBGV1MkICsgXCI/XCIgKyAnXFxcXFwiJyk7XG52YXIgQVRFWFQkJCA9IFwiW0EtWmEtejAtOVxcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXCpcXFxcK1xcXFwtXFxcXF5cXFxcX1xcXFxgXFxcXHtcXFxcfFxcXFx9XFxcXH5dXCI7XG52YXIgUVRFWFQkJCA9IFwiW1xcXFwhXFxcXCRcXFxcJVxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFwtXFxcXC4wLTlcXFxcPFxcXFw+QS1aXFxcXHg1RS1cXFxceDdFXVwiO1xudmFyIFZDSEFSJCQgPSBtZXJnZShRVEVYVCQkLCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKTtcbnZhciBTT01FX0RFTElNUyQkID0gXCJbXFxcXCFcXFxcJFxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFw7XFxcXDpcXFxcQF1cIjtcbnZhciBVTlJFU0VSVkVEID0gbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKTtcbnZhciBQQ1RfRU5DT0RFRCA9IG5ldyBSZWdFeHAoUENUX0VOQ09ERUQkLCBcImdcIik7XG52YXIgTk9UX0xPQ0FMX1BBUlQgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIEFURVhUJCQsIFwiW1xcXFwuXVwiLCAnW1xcXFxcIl0nLCBWQ0hBUiQkKSwgXCJnXCIpO1xudmFyIE5PVF9IRk5BTUUgPSBuZXcgUmVnRXhwKG1lcmdlKFwiW15dXCIsIFVOUkVTRVJWRUQkJCwgU09NRV9ERUxJTVMkJCksIFwiZ1wiKTtcbnZhciBOT1RfSEZWQUxVRSA9IE5PVF9IRk5BTUU7XG5mdW5jdGlvbiBkZWNvZGVVbnJlc2VydmVkKHN0cikge1xuICAgIHZhciBkZWNTdHIgPSBwY3REZWNDaGFycyhzdHIpO1xuICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKFVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xufVxudmFyIG1haWx0byA9IHtcbiAgICBzY2hlbWU6IFwibWFpbHRvXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHRvID0gY29tcG9uZW50cy50byA9IGNvbXBvbmVudHMucGF0aCA/IGNvbXBvbmVudHMucGF0aC5zcGxpdChcIixcIikgOiBbXTtcbiAgICAgICAgY29tcG9uZW50cy5wYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY29tcG9uZW50cy5xdWVyeSkge1xuICAgICAgICAgICAgdmFyIHVua25vd25IZWFkZXJzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgaGVhZGVycyA9IHt9O1xuICAgICAgICAgICAgdmFyIGhmaWVsZHMgPSBjb21wb25lbnRzLnF1ZXJ5LnNwbGl0KFwiJlwiKTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB4bCA9IGhmaWVsZHMubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciBoZmllbGQgPSBoZmllbGRzW3hdLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGhmaWVsZFswXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidG9cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b0FkZHJzID0gaGZpZWxkWzFdLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF94ID0gMCwgX3hsID0gdG9BZGRycy5sZW5ndGg7IF94IDwgX3hsOyArK194KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8ucHVzaCh0b0FkZHJzW194XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1YmplY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuc3ViamVjdCA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJvZHlcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuYm9keSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25IZWFkZXJzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzBdLCBvcHRpb25zKV0gPSB1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVua25vd25IZWFkZXJzKSBjb21wb25lbnRzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICB9XG4gICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAodmFyIF94MiA9IDAsIF94bDIgPSB0by5sZW5ndGg7IF94MiA8IF94bDI7ICsrX3gyKSB7XG4gICAgICAgICAgICB2YXIgYWRkciA9IHRvW194Ml0uc3BsaXQoXCJAXCIpO1xuICAgICAgICAgICAgYWRkclswXSA9IHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMF0pO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnVuaWNvZGVTdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0IFVuaWNvZGUgSUROIC0+IEFTQ0lJIElETlxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZHJbMV0gPSBwdW55Y29kZS50b0FTQ0lJKHVuZXNjYXBlQ29tcG9uZW50KGFkZHJbMV0sIG9wdGlvbnMpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gQVNDSUkgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRyWzFdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvW194Ml0gPSBhZGRyLmpvaW4oXCJAXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgdG8gPSB0b0FycmF5KGNvbXBvbmVudHMudG8pO1xuICAgICAgICBpZiAodG8pIHtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB4bCA9IHRvLmxlbmd0aDsgeCA8IHhsOyArK3gpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9BZGRyID0gU3RyaW5nKHRvW3hdKTtcbiAgICAgICAgICAgICAgICB2YXIgYXRJZHggPSB0b0FkZHIubGFzdEluZGV4T2YoXCJAXCIpO1xuICAgICAgICAgICAgICAgIHZhciBsb2NhbFBhcnQgPSB0b0FkZHIuc2xpY2UoMCwgYXRJZHgpLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9MT0NBTF9QQVJULCBwY3RFbmNDaGFyKTtcbiAgICAgICAgICAgICAgICB2YXIgZG9tYWluID0gdG9BZGRyLnNsaWNlKGF0SWR4ICsgMSk7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0IElETiB2aWEgcHVueWNvZGVcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkb21haW4gPSAhb3B0aW9ucy5pcmkgPyBwdW55Y29kZS50b0FTQ0lJKHVuZXNjYXBlQ29tcG9uZW50KGRvbWFpbiwgb3B0aW9ucykudG9Mb3dlckNhc2UoKSkgOiBwdW55Y29kZS50b1VuaWNvZGUoZG9tYWluKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiRW1haWwgYWRkcmVzcydzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvIFwiICsgKCFvcHRpb25zLmlyaSA/IFwiQVNDSUlcIiA6IFwiVW5pY29kZVwiKSArIFwiIHZpYSBwdW55Y29kZTogXCIgKyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b1t4XSA9IGxvY2FsUGFydCArIFwiQFwiICsgZG9tYWluO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gdG8uam9pbihcIixcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhlYWRlcnMgPSBjb21wb25lbnRzLmhlYWRlcnMgPSBjb21wb25lbnRzLmhlYWRlcnMgfHwge307XG4gICAgICAgIGlmIChjb21wb25lbnRzLnN1YmplY3QpIGhlYWRlcnNbXCJzdWJqZWN0XCJdID0gY29tcG9uZW50cy5zdWJqZWN0O1xuICAgICAgICBpZiAoY29tcG9uZW50cy5ib2R5KSBoZWFkZXJzW1wiYm9keVwiXSA9IGNvbXBvbmVudHMuYm9keTtcbiAgICAgICAgdmFyIGZpZWxkcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXJzW25hbWVdICE9PSBPW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgZmllbGRzLnB1c2gobmFtZS5yZXBsYWNlKFBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKFBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSkucmVwbGFjZShOT1RfSEZOQU1FLCBwY3RFbmNDaGFyKSArIFwiPVwiICsgaGVhZGVyc1tuYW1lXS5yZXBsYWNlKFBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKFBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSkucmVwbGFjZShOT1RfSEZWQUxVRSwgcGN0RW5jQ2hhcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnF1ZXJ5ID0gZmllbGRzLmpvaW4oXCImXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBOSUQkID0gXCIoPzpbMC05QS1aYS16XVswLTlBLVphLXpcXFxcLV17MSwzMX0pXCI7XG52YXIgVVJOX1NDSEVNRSA9IG5ldyBSZWdFeHAoXCJedXJuXFxcXDooXCIgKyBOSUQkICsgXCIpJFwiKTtcbnZhciBVUk5fUEFSU0UgPSAvXihbXlxcOl0rKVxcOiguKikvO1xudmFyIFVSTl9FWENMVURFRCA9IC9bXFx4MDAtXFx4MjBcXFxcXFxcIlxcJlxcPFxcPlxcW1xcXVxcXlxcYFxce1xcfFxcfVxcflxceDdGLVxceEZGXS9nO1xuLy9SRkMgMjE0MVxudmFyIHVybiA9IHtcbiAgICBzY2hlbWU6IFwidXJuXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSBjb21wb25lbnRzLnBhdGggJiYgY29tcG9uZW50cy5wYXRoLm1hdGNoKFVSTl9QQVJTRSk7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICB2YXIgc2NoZW1lID0gXCJ1cm46XCIgKyBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB2YXIgc2NoZW1lSGFuZGxlciA9IFNDSEVNRVNbc2NoZW1lXTtcbiAgICAgICAgICAgIC8vaW4gb3JkZXIgdG8gc2VyaWFsaXplIHByb3Blcmx5LFxuICAgICAgICAgICAgLy9ldmVyeSBVUk4gbXVzdCBoYXZlIGEgc2VyaWFsaXplciB0aGF0IGNhbGxzIHRoZSBVUk4gc2VyaWFsaXplclxuICAgICAgICAgICAgaWYgKCFzY2hlbWVIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgLy9jcmVhdGUgZmFrZSBzY2hlbWUgaGFuZGxlclxuICAgICAgICAgICAgICAgIHNjaGVtZUhhbmRsZXIgPSBTQ0hFTUVTW3NjaGVtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHNjaGVtZTogc2NoZW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZTogU0NIRU1FU1tcInVyblwiXS5zZXJpYWxpemVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBzY2hlbWU7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzJdO1xuICAgICAgICAgICAgY29tcG9uZW50cyA9IHNjaGVtZUhhbmRsZXIucGFyc2UoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVSTiBjYW4gbm90IGJlIHBhcnNlZC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNjaGVtZSA9IGNvbXBvbmVudHMuc2NoZW1lIHx8IG9wdGlvbnMuc2NoZW1lO1xuICAgICAgICBpZiAoc2NoZW1lICYmIHNjaGVtZSAhPT0gXCJ1cm5cIikge1xuICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSBzY2hlbWUubWF0Y2goVVJOX1NDSEVNRSkgfHwgW1widXJuOlwiICsgc2NoZW1lLCBzY2hlbWVdO1xuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBcInVyblwiO1xuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gbWF0Y2hlc1sxXSArIFwiOlwiICsgKGNvbXBvbmVudHMucGF0aCA/IGNvbXBvbmVudHMucGF0aC5yZXBsYWNlKFVSTl9FWENMVURFRCwgcGN0RW5jQ2hhcikgOiBcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9XG59O1xuXG52YXIgVVVJRCA9IC9eWzAtOUEtRmEtZl17OH0oPzpcXC1bMC05QS1GYS1mXXs0fSl7M31cXC1bMC05QS1GYS1mXXsxMn0kLztcbi8vUkZDIDQxMjJcbnZhciB1dWlkID0ge1xuICAgIHNjaGVtZTogXCJ1cm46dXVpZFwiLFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiAoIWNvbXBvbmVudHMucGF0aCB8fCAhY29tcG9uZW50cy5wYXRoLm1hdGNoKFVVSUQpKSkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJVVUlEIGlzIG5vdCB2YWxpZC5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gc2VyaWFsaXplJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgLy9lbnN1cmUgVVVJRCBpcyB2YWxpZFxuICAgICAgICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgKCFjb21wb25lbnRzLnBhdGggfHwgIWNvbXBvbmVudHMucGF0aC5tYXRjaChVVUlEKSkpIHtcbiAgICAgICAgICAgIC8vaW52YWxpZCBVVUlEcyBjYW4gbm90IGhhdmUgdGhpcyBzY2hlbWVcbiAgICAgICAgICAgIGNvbXBvbmVudHMuc2NoZW1lID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9ub3JtYWxpemUgVVVJRFxuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gKGNvbXBvbmVudHMucGF0aCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTQ0hFTUVTW1widXJuXCJdLnNlcmlhbGl6ZShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICB9XG59O1xuXG5TQ0hFTUVTW1wiaHR0cFwiXSA9IGh0dHA7XG5TQ0hFTUVTW1wiaHR0cHNcIl0gPSBodHRwcztcblNDSEVNRVNbXCJtYWlsdG9cIl0gPSBtYWlsdG87XG5TQ0hFTUVTW1widXJuXCJdID0gdXJuO1xuU0NIRU1FU1tcInVybjp1dWlkXCJdID0gdXVpZDtcblxuZXhwb3J0cy5TQ0hFTUVTID0gU0NIRU1FUztcbmV4cG9ydHMucGN0RW5jQ2hhciA9IHBjdEVuY0NoYXI7XG5leHBvcnRzLnBjdERlY0NoYXJzID0gcGN0RGVjQ2hhcnM7XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnJlbW92ZURvdFNlZ21lbnRzID0gcmVtb3ZlRG90U2VnbWVudHM7XG5leHBvcnRzLnNlcmlhbGl6ZSA9IHNlcmlhbGl6ZTtcbmV4cG9ydHMucmVzb2x2ZUNvbXBvbmVudHMgPSByZXNvbHZlQ29tcG9uZW50cztcbmV4cG9ydHMucmVzb2x2ZSA9IHJlc29sdmU7XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbmV4cG9ydHMuZXF1YWwgPSBlcXVhbDtcbmV4cG9ydHMuZXNjYXBlQ29tcG9uZW50ID0gZXNjYXBlQ29tcG9uZW50O1xuZXhwb3J0cy51bmVzY2FwZUNvbXBvbmVudCA9IHVuZXNjYXBlQ29tcG9uZW50O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJpLmFsbC5qcy5tYXBcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5leHBvcnRzLnBhcnNlID0gdXJsUGFyc2U7XG5leHBvcnRzLnJlc29sdmUgPSB1cmxSZXNvbHZlO1xuZXhwb3J0cy5yZXNvbHZlT2JqZWN0ID0gdXJsUmVzb2x2ZU9iamVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gdXJsRm9ybWF0O1xuXG5leHBvcnRzLlVybCA9IFVybDtcblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGZvciB2YXJpb3VzIHJlYXNvbnMuXG4gICAgdW53aXNlID0gWyd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCddLmNvbmNhdChkZWxpbXMpLFxuXG4gICAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICAgIGF1dG9Fc2NhcGUgPSBbJ1xcJyddLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gICAgaG9zdEVuZGluZ0NoYXJzID0gWycvJywgJz8nLCAnIyddLFxuICAgIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICAgIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gICAgaG9zdG5hbWVQYXJ0U3RhcnQgPSAvXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gICAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gICAgfSxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH0sXG4gICAgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgdXRpbC5pc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuXG5VcmwucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24odXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAoIXV0aWwuaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvLyBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgLy8gQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gIHZhciBxdWVyeUluZGV4ID0gdXJsLmluZGV4T2YoJz8nKSxcbiAgICAgIHNwbGl0dGVyID1cbiAgICAgICAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgICAgdVNwbGl0ID0gdXJsLnNwbGl0KHNwbGl0dGVyKSxcbiAgICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcmVzdDtcbiAgICAgIHRoaXMuaHJlZiA9IHJlc3Q7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlzdHJpbmcucGFyc2UodGhpcy5zZWFyY2guc3Vic3RyKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2guc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICAgICAgdGhpcy5xdWVyeSA9IHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3RvID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF07XG4gICAgdmFyIGxvd2VyUHJvdG8gPSBwcm90by50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucHJvdG9jb2wgPSBsb3dlclByb3RvO1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpO1xuICB9XG5cbiAgLy8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIGhvc3RcbiAgLy8gdXNlckBzZXJ2ZXIgaXMgKmFsd2F5cyogaW50ZXJwcmV0ZWQgYXMgYSBob3N0bmFtZSwgYW5kIHVybFxuICAvLyByZXNvbHV0aW9uIHdpbGwgdHJlYXQgLy9mb28vYmFyIGFzIGhvc3Q9Zm9vLHBhdGg9YmFyIGJlY2F1c2UgdGhhdCdzXG4gIC8vIGhvdyB0aGUgYnJvd3NlciByZXNvbHZlcyByZWxhdGl2ZSBVUkxzLlxuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQFxcL10rQFteQFxcL10rLykpIHtcbiAgICB2YXIgc2xhc2hlcyA9IHJlc3Quc3Vic3RyKDAsIDIpID09PSAnLy8nO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKGhvc3RFbmRpbmdDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpXG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgZWl0aGVyIHdlIGhhdmUgYW4gZXhwbGljaXQgcG9pbnQgd2hlcmUgdGhlXG4gICAgLy8gYXV0aCBwb3J0aW9uIGNhbm5vdCBnbyBwYXN0LCBvciB0aGUgbGFzdCBAIGNoYXIgaXMgdGhlIGRlY2lkZXIuXG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgIC8vIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJywgaG9zdEVuZCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgLy8gUHVsbCB0aGF0IG9mZi5cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIH1cblxuICAgIC8vIHRoZSBob3N0IGlzIHRoZSByZW1haW5pbmcgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG5vbi1ob3N0IGNoYXJcbiAgICBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSlcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcblxuICAgIHRoaXMuaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KCk7XG5cbiAgICAvLyB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgIC8vIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG5cbiAgICAvLyBpZiBob3N0bmFtZSBiZWdpbnMgd2l0aCBbIGFuZCBlbmRzIHdpdGggXVxuICAgIC8vIGFzc3VtZSB0aGF0IGl0J3MgYW4gSVB2NiBhZGRyZXNzLlxuICAgIHZhciBpcHY2SG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lWzBdID09PSAnWycgJiZcbiAgICAgICAgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICB2YXIgbmV3cGFydCA9ICcnO1xuICAgICAgICAgIGZvciAodmFyIGogPSAwLCBrID0gcGFydC5sZW5ndGg7IGogPCBrOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgLy8gd2UgcmVwbGFjZSBub24tQVNDSUkgY2hhciB3aXRoIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byBtYWtlIHN1cmUgc2l6ZSBvZiBob3N0bmFtZSBpcyBub3RcbiAgICAgICAgICAgICAgLy8gYnJva2VuIGJ5IHJlcGxhY2luZyBub24tQVNDSUkgYnkgbm90aGluZ1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9ICd4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydFtqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gd2UgdGVzdCBhZ2FpbiB3aXRoIEFTQ0lJIGNoYXIgb25seVxuICAgICAgICAgIGlmICghbmV3cGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkUGFydHMgPSBob3N0cGFydHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB2YXIgbm90SG9zdCA9IGhvc3RwYXJ0cy5zbGljZShpICsgMSk7XG4gICAgICAgICAgICB2YXIgYml0ID0gcGFydC5tYXRjaChob3N0bmFtZVBhcnRTdGFydCk7XG4gICAgICAgICAgICBpZiAoYml0KSB7XG4gICAgICAgICAgICAgIHZhbGlkUGFydHMucHVzaChiaXRbMV0pO1xuICAgICAgICAgICAgICBub3RIb3N0LnVuc2hpZnQoYml0WzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3RIb3N0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXN0ID0gJy8nICsgbm90SG9zdC5qb2luKCcuJykgKyByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0bmFtZSA9IHZhbGlkUGFydHMuam9pbignLicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9zdG5hbWVzIGFyZSBhbHdheXMgbG93ZXIgY2FzZS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIC8vIElETkEgU3VwcG9ydDogUmV0dXJucyBhIHB1bnljb2RlZCByZXByZXNlbnRhdGlvbiBvZiBcImRvbWFpblwiLlxuICAgICAgLy8gSXQgb25seSBjb252ZXJ0cyBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgdGhhdFxuICAgICAgLy8gaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycywgaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZlxuICAgICAgLy8geW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0IGFscmVhZHkgaXMgQVNDSUktb25seS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSBwdW55Y29kZS50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBwID0gdGhpcy5wb3J0ID8gJzonICsgdGhpcy5wb3J0IDogJyc7XG4gICAgdmFyIGggPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuICAgIHRoaXMuaG9zdCA9IGggKyBwO1xuICAgIHRoaXMuaHJlZiArPSB0aGlzLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB2YXIgZXNjID0gZW5jb2RlVVJJQ29tcG9uZW50KGFlKTtcbiAgICAgIGlmIChlc2MgPT09IGFlKSB7XG4gICAgICAgIGVzYyA9IGVzY2FwZShhZSk7XG4gICAgICB9XG4gICAgICByZXN0ID0gcmVzdC5zcGxpdChhZSkuam9pbihlc2MpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgdGhpcy5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAvLyBubyBxdWVyeSBzdHJpbmcsIGJ1dCBwYXJzZVF1ZXJ5U3RyaW5nIHN0aWxsIHJlcXVlc3RlZFxuICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5xdWVyeSA9IHt9O1xuICB9XG4gIGlmIChyZXN0KSB0aGlzLnBhdGhuYW1lID0gcmVzdDtcbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJlxuICAgICAgdGhpcy5ob3N0bmFtZSAmJiAhdGhpcy5wYXRobmFtZSkge1xuICAgIHRoaXMucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmICh0aGlzLnBhdGhuYW1lIHx8IHRoaXMuc2VhcmNoKSB7XG4gICAgdmFyIHAgPSB0aGlzLnBhdGhuYW1lIHx8ICcnO1xuICAgIHZhciBzID0gdGhpcy5zZWFyY2ggfHwgJyc7XG4gICAgdGhpcy5wYXRoID0gcCArIHM7XG4gIH1cblxuICAvLyBmaW5hbGx5LCByZWNvbnN0cnVjdCB0aGUgaHJlZiBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHZhbGlkYXRlZC5cbiAgdGhpcy5ocmVmID0gdGhpcy5mb3JtYXQoKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8vIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gIC8vIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gIC8vIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgLy8gdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgaWYgKHV0aWwuaXNTdHJpbmcob2JqKSkgb2JqID0gdXJsUGFyc2Uob2JqKTtcbiAgaWYgKCEob2JqIGluc3RhbmNlb2YgVXJsKSkgcmV0dXJuIFVybC5wcm90b3R5cGUuZm9ybWF0LmNhbGwob2JqKTtcbiAgcmV0dXJuIG9iai5mb3JtYXQoKTtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGF1dGggPSB0aGlzLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgfHwgJycsXG4gICAgICBwYXRobmFtZSA9IHRoaXMucGF0aG5hbWUgfHwgJycsXG4gICAgICBoYXNoID0gdGhpcy5oYXNoIHx8ICcnLFxuICAgICAgaG9zdCA9IGZhbHNlLFxuICAgICAgcXVlcnkgPSAnJztcblxuICBpZiAodGhpcy5ob3N0KSB7XG4gICAgaG9zdCA9IGF1dGggKyB0aGlzLmhvc3Q7XG4gIH0gZWxzZSBpZiAodGhpcy5ob3N0bmFtZSkge1xuICAgIGhvc3QgPSBhdXRoICsgKHRoaXMuaG9zdG5hbWUuaW5kZXhPZignOicpID09PSAtMSA/XG4gICAgICAgIHRoaXMuaG9zdG5hbWUgOlxuICAgICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAodGhpcy5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHRoaXMucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5xdWVyeSAmJlxuICAgICAgdXRpbC5pc09iamVjdCh0aGlzLnF1ZXJ5KSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkodGhpcy5xdWVyeSk7XG4gIH1cblxuICB2YXIgc2VhcmNoID0gdGhpcy5zZWFyY2ggfHwgKHF1ZXJ5ICYmICgnPycgKyBxdWVyeSkpIHx8ICcnO1xuXG4gIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbC5zdWJzdHIoLTEpICE9PSAnOicpIHByb3RvY29sICs9ICc6JztcblxuICAvLyBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgLy8gdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgaWYgKHRoaXMuc2xhc2hlcyB8fFxuICAgICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmVPYmplY3QodXJsUGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKSkuZm9ybWF0KCk7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlT2JqZWN0KHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiByZWxhdGl2ZTtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICBpZiAodXRpbC5pc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgICAgcmVzdWx0Lmhvc3RuYW1lICYmICFyZXN1bHQucGF0aG5hbWUpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gcmVzdWx0LnBhdGhuYW1lID0gJy8nO1xuICAgIH1cblxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIHJlbFBhdGggPSAocmVsYXRpdmUucGF0aG5hbWUgfHwgJycpLnNwbGl0KCcvJyk7XG4gICAgICB3aGlsZSAocmVsUGF0aC5sZW5ndGggJiYgIShyZWxhdGl2ZS5ob3N0ID0gcmVsUGF0aC5zaGlmdCgpKSk7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3QpIHJlbGF0aXZlLmhvc3QgPSAnJztcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHJlbGF0aXZlLmhvc3RuYW1lID0gJyc7XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICBpZiAocmVsUGF0aC5sZW5ndGggPCAyKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSAocmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyksXG4gICAgICBpc1JlbEFicyA9IChcbiAgICAgICAgICByZWxhdGl2ZS5ob3N0IHx8XG4gICAgICAgICAgcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLydcbiAgICAgICksXG4gICAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQuaG9zdCAmJiByZWxhdGl2ZS5wYXRobmFtZSkpLFxuICAgICAgcmVtb3ZlQWxsRG90cyA9IG11c3RFbmRBYnMsXG4gICAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgICAgcmVsUGF0aCA9IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICBwc3ljaG90aWMgPSByZXN1bHQucHJvdG9jb2wgJiYgIXNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdO1xuXG4gIC8vIGlmIHRoZSB1cmwgaXMgYSBub24tc2xhc2hlZCB1cmwsIHRoZW4gcmVsYXRpdmVcbiAgLy8gbGlua3MgbGlrZSAuLi8uLiBzaG91bGQgYmUgYWJsZVxuICAvLyB0byBjcmF3bCB1cCB0byB0aGUgaG9zdG5hbWUsIGFzIHdlbGwuICBUaGlzIGlzIHN0cmFuZ2UuXG4gIC8vIHJlc3VsdC5wcm90b2NvbCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBub3cuXG4gIC8vIExhdGVyIG9uLCBwdXQgdGhlIGZpcnN0IHBhdGggcGFydCBpbnRvIHRoZSBob3N0IGZpZWxkLlxuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gJyc7XG4gICAgcmVzdWx0LnBvcnQgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuaG9zdCkge1xuICAgICAgaWYgKHNyY1BhdGhbMF0gPT09ICcnKSBzcmNQYXRoWzBdID0gcmVzdWx0Lmhvc3Q7XG4gICAgICBlbHNlIHNyY1BhdGgudW5zaGlmdChyZXN1bHQuaG9zdCk7XG4gICAgfVxuICAgIHJlc3VsdC5ob3N0ID0gJyc7XG4gICAgaWYgKHJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA9IG51bGw7XG4gICAgICByZWxhdGl2ZS5wb3J0ID0gbnVsbDtcbiAgICAgIGlmIChyZWxhdGl2ZS5ob3N0KSB7XG4gICAgICAgIGlmIChyZWxQYXRoWzBdID09PSAnJykgcmVsUGF0aFswXSA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIGVsc2UgcmVsUGF0aC51bnNoaWZ0KHJlbGF0aXZlLmhvc3QpO1xuICAgICAgfVxuICAgICAgcmVsYXRpdmUuaG9zdCA9IG51bGw7XG4gICAgfVxuICAgIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzICYmIChyZWxQYXRoWzBdID09PSAnJyB8fCBzcmNQYXRoWzBdID09PSAnJyk7XG4gIH1cblxuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgOiByZXN1bHQuaG9zdG5hbWU7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICBzcmNQYXRoID0gcmVsUGF0aDtcbiAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIGRvdC1oYW5kbGluZyBiZWxvdy5cbiAgfSBlbHNlIGlmIChyZWxQYXRoLmxlbmd0aCkge1xuICAgIC8vIGl0J3MgcmVsYXRpdmVcbiAgICAvLyB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICBpZiAoIXNyY1BhdGgpIHNyY1BhdGggPSBbXTtcbiAgICBzcmNQYXRoLnBvcCgpO1xuICAgIHNyY1BhdGggPSBzcmNQYXRoLmNvbmNhdChyZWxQYXRoKTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKCF1dGlsLmlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIC8vIG5vIHBhdGggYXQgYWxsLiAgZWFzeS5cbiAgICAvLyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIG90aGVyIHN0dWZmIGFib3ZlLlxuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQuc2VhcmNoKSB7XG4gICAgICByZXN1bHQucGF0aCA9ICcvJyArIHJlc3VsdC5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGEgdXJsIEVORHMgaW4gLiBvciAuLiwgdGhlbiBpdCBtdXN0IGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAvLyBob3dldmVyLCBpZiBpdCBlbmRzIGluIGFueXRoaW5nIGVsc2Ugbm9uLXNsYXNoeSxcbiAgLy8gdGhlbiBpdCBtdXN0IE5PVCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgdmFyIGxhc3QgPSBzcmNQYXRoLnNsaWNlKC0xKVswXTtcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSAoXG4gICAgICAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmXG4gICAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICAgKCFzcmNQYXRoWzBdIHx8IHNyY1BhdGhbMF0uY2hhckF0KDApICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIChzcmNQYXRoLmpvaW4oJy8nKS5zdWJzdHIoLTEpICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC5wdXNoKCcnKTtcbiAgfVxuXG4gIHZhciBpc0Fic29sdXRlID0gc3JjUGF0aFswXSA9PT0gJycgfHxcbiAgICAgIChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IGlzQWJzb2x1dGUgPyAnJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgcmVzdWx0Lmhvc3QgPSByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgfVxuICB9XG5cbiAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgfHwgKHJlc3VsdC5ob3N0ICYmIHNyY1BhdGgubGVuZ3RoKTtcblxuICBpZiAobXVzdEVuZEFicyAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gc3JjUGF0aC5qb2luKCcvJyk7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgcmVxdWVzdC5odHRwXG4gIGlmICghdXRpbC5pc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhdXRpbC5pc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICB2YXIgcG9ydCA9IHBvcnRQYXR0ZXJuLmV4ZWMoaG9zdCk7XG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF07XG4gICAgaWYgKHBvcnQgIT09ICc6Jykge1xuICAgICAgdGhpcy5wb3J0ID0gcG9ydC5zdWJzdHIoMSk7XG4gICAgfVxuICAgIGhvc3QgPSBob3N0LnN1YnN0cigwLCBob3N0Lmxlbmd0aCAtIHBvcnQubGVuZ3RoKTtcbiAgfVxuICBpZiAoaG9zdCkgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNTdHJpbmc6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ3N0cmluZyc7XG4gIH0sXG4gIGlzT2JqZWN0OiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mKGFyZykgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbiAgfSxcbiAgaXNOdWxsOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09PSBudWxsO1xuICB9LFxuICBpc051bGxPclVuZGVmaW5lZDogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyA9PSBudWxsO1xuICB9XG59O1xuIiwiXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlO1xuXG4vKipcbiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKiBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudGhyb3dEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50cmFjZURlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIGZ1bmN0aW9uIHRvIGRlcHJlY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBuZXcgXCJkZXByZWNhdGVkXCIgdmVyc2lvbiBvZiBgZm5gXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZSAoZm4sIG1zZykge1xuICBpZiAoY29uZmlnKCdub0RlcHJlY2F0aW9uJykpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnKCd0cmFjZURlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBgbG9jYWxTdG9yYWdlYCBmb3IgYm9vbGVhbiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29uZmlnIChuYW1lKSB7XG4gIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzXG4gIHRyeSB7XG4gICAgaWYgKCFnbG9iYWwubG9jYWxTdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07XG4gIGlmIChudWxsID09IHZhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3RvRGF0ZSA9IHJlcXVpcmUoJy4vbGliL3RvRGF0ZScpO1xuXG52YXIgX3RvRGF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0RhdGUpO1xuXG52YXIgX3RvRmxvYXQgPSByZXF1aXJlKCcuL2xpYi90b0Zsb2F0Jyk7XG5cbnZhciBfdG9GbG9hdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0Zsb2F0KTtcblxudmFyIF90b0ludCA9IHJlcXVpcmUoJy4vbGliL3RvSW50Jyk7XG5cbnZhciBfdG9JbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9JbnQpO1xuXG52YXIgX3RvQm9vbGVhbiA9IHJlcXVpcmUoJy4vbGliL3RvQm9vbGVhbicpO1xuXG52YXIgX3RvQm9vbGVhbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0Jvb2xlYW4pO1xuXG52YXIgX2VxdWFscyA9IHJlcXVpcmUoJy4vbGliL2VxdWFscycpO1xuXG52YXIgX2VxdWFsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9lcXVhbHMpO1xuXG52YXIgX2NvbnRhaW5zID0gcmVxdWlyZSgnLi9saWIvY29udGFpbnMnKTtcblxudmFyIF9jb250YWluczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb250YWlucyk7XG5cbnZhciBfbWF0Y2hlcyA9IHJlcXVpcmUoJy4vbGliL21hdGNoZXMnKTtcblxudmFyIF9tYXRjaGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21hdGNoZXMpO1xuXG52YXIgX2lzRW1haWwgPSByZXF1aXJlKCcuL2xpYi9pc0VtYWlsJyk7XG5cbnZhciBfaXNFbWFpbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0VtYWlsKTtcblxudmFyIF9pc1VSTCA9IHJlcXVpcmUoJy4vbGliL2lzVVJMJyk7XG5cbnZhciBfaXNVUkwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNVUkwpO1xuXG52YXIgX2lzTUFDQWRkcmVzcyA9IHJlcXVpcmUoJy4vbGliL2lzTUFDQWRkcmVzcycpO1xuXG52YXIgX2lzTUFDQWRkcmVzczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc01BQ0FkZHJlc3MpO1xuXG52YXIgX2lzSVAgPSByZXF1aXJlKCcuL2xpYi9pc0lQJyk7XG5cbnZhciBfaXNJUDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lQKTtcblxudmFyIF9pc0lQUmFuZ2UgPSByZXF1aXJlKCcuL2xpYi9pc0lQUmFuZ2UnKTtcblxudmFyIF9pc0lQUmFuZ2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJUFJhbmdlKTtcblxudmFyIF9pc0ZRRE4gPSByZXF1aXJlKCcuL2xpYi9pc0ZRRE4nKTtcblxudmFyIF9pc0ZRRE4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNGUUROKTtcblxudmFyIF9pc0Jvb2xlYW4gPSByZXF1aXJlKCcuL2xpYi9pc0Jvb2xlYW4nKTtcblxudmFyIF9pc0Jvb2xlYW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNCb29sZWFuKTtcblxudmFyIF9pc0FscGhhID0gcmVxdWlyZSgnLi9saWIvaXNBbHBoYScpO1xuXG52YXIgX2lzQWxwaGEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNBbHBoYSk7XG5cbnZhciBfaXNBbHBoYW51bWVyaWMgPSByZXF1aXJlKCcuL2xpYi9pc0FscGhhbnVtZXJpYycpO1xuXG52YXIgX2lzQWxwaGFudW1lcmljMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzQWxwaGFudW1lcmljKTtcblxudmFyIF9pc051bWVyaWMgPSByZXF1aXJlKCcuL2xpYi9pc051bWVyaWMnKTtcblxudmFyIF9pc051bWVyaWMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNOdW1lcmljKTtcblxudmFyIF9pc1BvcnQgPSByZXF1aXJlKCcuL2xpYi9pc1BvcnQnKTtcblxudmFyIF9pc1BvcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQb3J0KTtcblxudmFyIF9pc0xvd2VyY2FzZSA9IHJlcXVpcmUoJy4vbGliL2lzTG93ZXJjYXNlJyk7XG5cbnZhciBfaXNMb3dlcmNhc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNMb3dlcmNhc2UpO1xuXG52YXIgX2lzVXBwZXJjYXNlID0gcmVxdWlyZSgnLi9saWIvaXNVcHBlcmNhc2UnKTtcblxudmFyIF9pc1VwcGVyY2FzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1VwcGVyY2FzZSk7XG5cbnZhciBfaXNBc2NpaSA9IHJlcXVpcmUoJy4vbGliL2lzQXNjaWknKTtcblxudmFyIF9pc0FzY2lpMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzQXNjaWkpO1xuXG52YXIgX2lzRnVsbFdpZHRoID0gcmVxdWlyZSgnLi9saWIvaXNGdWxsV2lkdGgnKTtcblxudmFyIF9pc0Z1bGxXaWR0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0Z1bGxXaWR0aCk7XG5cbnZhciBfaXNIYWxmV2lkdGggPSByZXF1aXJlKCcuL2xpYi9pc0hhbGZXaWR0aCcpO1xuXG52YXIgX2lzSGFsZldpZHRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSGFsZldpZHRoKTtcblxudmFyIF9pc1ZhcmlhYmxlV2lkdGggPSByZXF1aXJlKCcuL2xpYi9pc1ZhcmlhYmxlV2lkdGgnKTtcblxudmFyIF9pc1ZhcmlhYmxlV2lkdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNWYXJpYWJsZVdpZHRoKTtcblxudmFyIF9pc011bHRpYnl0ZSA9IHJlcXVpcmUoJy4vbGliL2lzTXVsdGlieXRlJyk7XG5cbnZhciBfaXNNdWx0aWJ5dGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNNdWx0aWJ5dGUpO1xuXG52YXIgX2lzU3Vycm9nYXRlUGFpciA9IHJlcXVpcmUoJy4vbGliL2lzU3Vycm9nYXRlUGFpcicpO1xuXG52YXIgX2lzU3Vycm9nYXRlUGFpcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1N1cnJvZ2F0ZVBhaXIpO1xuXG52YXIgX2lzSW50ID0gcmVxdWlyZSgnLi9saWIvaXNJbnQnKTtcblxudmFyIF9pc0ludDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0ludCk7XG5cbnZhciBfaXNGbG9hdCA9IHJlcXVpcmUoJy4vbGliL2lzRmxvYXQnKTtcblxudmFyIF9pc0Zsb2F0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRmxvYXQpO1xuXG52YXIgX2lzRGVjaW1hbCA9IHJlcXVpcmUoJy4vbGliL2lzRGVjaW1hbCcpO1xuXG52YXIgX2lzRGVjaW1hbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0RlY2ltYWwpO1xuXG52YXIgX2lzSGV4YWRlY2ltYWwgPSByZXF1aXJlKCcuL2xpYi9pc0hleGFkZWNpbWFsJyk7XG5cbnZhciBfaXNIZXhhZGVjaW1hbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0hleGFkZWNpbWFsKTtcblxudmFyIF9pc0RpdmlzaWJsZUJ5ID0gcmVxdWlyZSgnLi9saWIvaXNEaXZpc2libGVCeScpO1xuXG52YXIgX2lzRGl2aXNpYmxlQnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNEaXZpc2libGVCeSk7XG5cbnZhciBfaXNIZXhDb2xvciA9IHJlcXVpcmUoJy4vbGliL2lzSGV4Q29sb3InKTtcblxudmFyIF9pc0hleENvbG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSGV4Q29sb3IpO1xuXG52YXIgX2lzSVNSQyA9IHJlcXVpcmUoJy4vbGliL2lzSVNSQycpO1xuXG52YXIgX2lzSVNSQzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lTUkMpO1xuXG52YXIgX2lzTUQgPSByZXF1aXJlKCcuL2xpYi9pc01ENScpO1xuXG52YXIgX2lzTUQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNNRCk7XG5cbnZhciBfaXNIYXNoID0gcmVxdWlyZSgnLi9saWIvaXNIYXNoJyk7XG5cbnZhciBfaXNIYXNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSGFzaCk7XG5cbnZhciBfaXNKV1QgPSByZXF1aXJlKCcuL2xpYi9pc0pXVCcpO1xuXG52YXIgX2lzSldUMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSldUKTtcblxudmFyIF9pc0pTT04gPSByZXF1aXJlKCcuL2xpYi9pc0pTT04nKTtcblxudmFyIF9pc0pTT04yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNKU09OKTtcblxudmFyIF9pc0VtcHR5ID0gcmVxdWlyZSgnLi9saWIvaXNFbXB0eScpO1xuXG52YXIgX2lzRW1wdHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNFbXB0eSk7XG5cbnZhciBfaXNMZW5ndGggPSByZXF1aXJlKCcuL2xpYi9pc0xlbmd0aCcpO1xuXG52YXIgX2lzTGVuZ3RoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzTGVuZ3RoKTtcblxudmFyIF9pc0J5dGVMZW5ndGggPSByZXF1aXJlKCcuL2xpYi9pc0J5dGVMZW5ndGgnKTtcblxudmFyIF9pc0J5dGVMZW5ndGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNCeXRlTGVuZ3RoKTtcblxudmFyIF9pc1VVSUQgPSByZXF1aXJlKCcuL2xpYi9pc1VVSUQnKTtcblxudmFyIF9pc1VVSUQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNVVUlEKTtcblxudmFyIF9pc01vbmdvSWQgPSByZXF1aXJlKCcuL2xpYi9pc01vbmdvSWQnKTtcblxudmFyIF9pc01vbmdvSWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNNb25nb0lkKTtcblxudmFyIF9pc0FmdGVyID0gcmVxdWlyZSgnLi9saWIvaXNBZnRlcicpO1xuXG52YXIgX2lzQWZ0ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNBZnRlcik7XG5cbnZhciBfaXNCZWZvcmUgPSByZXF1aXJlKCcuL2xpYi9pc0JlZm9yZScpO1xuXG52YXIgX2lzQmVmb3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzQmVmb3JlKTtcblxudmFyIF9pc0luID0gcmVxdWlyZSgnLi9saWIvaXNJbicpO1xuXG52YXIgX2lzSW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJbik7XG5cbnZhciBfaXNDcmVkaXRDYXJkID0gcmVxdWlyZSgnLi9saWIvaXNDcmVkaXRDYXJkJyk7XG5cbnZhciBfaXNDcmVkaXRDYXJkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzQ3JlZGl0Q2FyZCk7XG5cbnZhciBfaXNJU0lOID0gcmVxdWlyZSgnLi9saWIvaXNJU0lOJyk7XG5cbnZhciBfaXNJU0lOMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNJTik7XG5cbnZhciBfaXNJU0JOID0gcmVxdWlyZSgnLi9saWIvaXNJU0JOJyk7XG5cbnZhciBfaXNJU0JOMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNCTik7XG5cbnZhciBfaXNJU1NOID0gcmVxdWlyZSgnLi9saWIvaXNJU1NOJyk7XG5cbnZhciBfaXNJU1NOMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNTTik7XG5cbnZhciBfaXNNb2JpbGVQaG9uZSA9IHJlcXVpcmUoJy4vbGliL2lzTW9iaWxlUGhvbmUnKTtcblxudmFyIF9pc01vYmlsZVBob25lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzTW9iaWxlUGhvbmUpO1xuXG52YXIgX2lzQ3VycmVuY3kgPSByZXF1aXJlKCcuL2xpYi9pc0N1cnJlbmN5Jyk7XG5cbnZhciBfaXNDdXJyZW5jeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0N1cnJlbmN5KTtcblxudmFyIF9pc0lTTyA9IHJlcXVpcmUoJy4vbGliL2lzSVNPODYwMScpO1xuXG52YXIgX2lzSVNPMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNPKTtcblxudmFyIF9pc1JGQyA9IHJlcXVpcmUoJy4vbGliL2lzUkZDMzMzOScpO1xuXG52YXIgX2lzUkZDMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUkZDKTtcblxudmFyIF9pc0lTTzMxNjYxQWxwaGEgPSByZXF1aXJlKCcuL2xpYi9pc0lTTzMxNjYxQWxwaGEyJyk7XG5cbnZhciBfaXNJU08zMTY2MUFscGhhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNPMzE2NjFBbHBoYSk7XG5cbnZhciBfaXNJU08zMTY2MUFscGhhMyA9IHJlcXVpcmUoJy4vbGliL2lzSVNPMzE2NjFBbHBoYTMnKTtcblxudmFyIF9pc0lTTzMxNjYxQWxwaGE0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU08zMTY2MUFscGhhMyk7XG5cbnZhciBfaXNCYXNlID0gcmVxdWlyZSgnLi9saWIvaXNCYXNlNjQnKTtcblxudmFyIF9pc0Jhc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNCYXNlKTtcblxudmFyIF9pc0RhdGFVUkkgPSByZXF1aXJlKCcuL2xpYi9pc0RhdGFVUkknKTtcblxudmFyIF9pc0RhdGFVUkkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNEYXRhVVJJKTtcblxudmFyIF9pc01hZ25ldFVSSSA9IHJlcXVpcmUoJy4vbGliL2lzTWFnbmV0VVJJJyk7XG5cbnZhciBfaXNNYWduZXRVUkkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNNYWduZXRVUkkpO1xuXG52YXIgX2lzTWltZVR5cGUgPSByZXF1aXJlKCcuL2xpYi9pc01pbWVUeXBlJyk7XG5cbnZhciBfaXNNaW1lVHlwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc01pbWVUeXBlKTtcblxudmFyIF9pc0xhdExvbmcgPSByZXF1aXJlKCcuL2xpYi9pc0xhdExvbmcnKTtcblxudmFyIF9pc0xhdExvbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNMYXRMb25nKTtcblxudmFyIF9pc1Bvc3RhbENvZGUgPSByZXF1aXJlKCcuL2xpYi9pc1Bvc3RhbENvZGUnKTtcblxudmFyIF9pc1Bvc3RhbENvZGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQb3N0YWxDb2RlKTtcblxudmFyIF9sdHJpbSA9IHJlcXVpcmUoJy4vbGliL2x0cmltJyk7XG5cbnZhciBfbHRyaW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbHRyaW0pO1xuXG52YXIgX3J0cmltID0gcmVxdWlyZSgnLi9saWIvcnRyaW0nKTtcblxudmFyIF9ydHJpbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydHJpbSk7XG5cbnZhciBfdHJpbSA9IHJlcXVpcmUoJy4vbGliL3RyaW0nKTtcblxudmFyIF90cmltMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RyaW0pO1xuXG52YXIgX2VzY2FwZSA9IHJlcXVpcmUoJy4vbGliL2VzY2FwZScpO1xuXG52YXIgX2VzY2FwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9lc2NhcGUpO1xuXG52YXIgX3VuZXNjYXBlID0gcmVxdWlyZSgnLi9saWIvdW5lc2NhcGUnKTtcblxudmFyIF91bmVzY2FwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91bmVzY2FwZSk7XG5cbnZhciBfc3RyaXBMb3cgPSByZXF1aXJlKCcuL2xpYi9zdHJpcExvdycpO1xuXG52YXIgX3N0cmlwTG93MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmlwTG93KTtcblxudmFyIF93aGl0ZWxpc3QgPSByZXF1aXJlKCcuL2xpYi93aGl0ZWxpc3QnKTtcblxudmFyIF93aGl0ZWxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2hpdGVsaXN0KTtcblxudmFyIF9ibGFja2xpc3QgPSByZXF1aXJlKCcuL2xpYi9ibGFja2xpc3QnKTtcblxudmFyIF9ibGFja2xpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYmxhY2tsaXN0KTtcblxudmFyIF9pc1doaXRlbGlzdGVkID0gcmVxdWlyZSgnLi9saWIvaXNXaGl0ZWxpc3RlZCcpO1xuXG52YXIgX2lzV2hpdGVsaXN0ZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNXaGl0ZWxpc3RlZCk7XG5cbnZhciBfbm9ybWFsaXplRW1haWwgPSByZXF1aXJlKCcuL2xpYi9ub3JtYWxpemVFbWFpbCcpO1xuXG52YXIgX25vcm1hbGl6ZUVtYWlsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX25vcm1hbGl6ZUVtYWlsKTtcblxudmFyIF90b1N0cmluZyA9IHJlcXVpcmUoJy4vbGliL3V0aWwvdG9TdHJpbmcnKTtcblxudmFyIF90b1N0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b1N0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciB2ZXJzaW9uID0gJzEwLjcuMCc7XG5cbnZhciB2YWxpZGF0b3IgPSB7XG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHRvRGF0ZTogX3RvRGF0ZTIuZGVmYXVsdCxcbiAgdG9GbG9hdDogX3RvRmxvYXQyLmRlZmF1bHQsXG4gIHRvSW50OiBfdG9JbnQyLmRlZmF1bHQsXG4gIHRvQm9vbGVhbjogX3RvQm9vbGVhbjIuZGVmYXVsdCxcbiAgZXF1YWxzOiBfZXF1YWxzMi5kZWZhdWx0LFxuICBjb250YWluczogX2NvbnRhaW5zMi5kZWZhdWx0LFxuICBtYXRjaGVzOiBfbWF0Y2hlczIuZGVmYXVsdCxcbiAgaXNFbWFpbDogX2lzRW1haWwyLmRlZmF1bHQsXG4gIGlzVVJMOiBfaXNVUkwyLmRlZmF1bHQsXG4gIGlzTUFDQWRkcmVzczogX2lzTUFDQWRkcmVzczIuZGVmYXVsdCxcbiAgaXNJUDogX2lzSVAyLmRlZmF1bHQsXG4gIGlzSVBSYW5nZTogX2lzSVBSYW5nZTIuZGVmYXVsdCxcbiAgaXNGUUROOiBfaXNGUUROMi5kZWZhdWx0LFxuICBpc0Jvb2xlYW46IF9pc0Jvb2xlYW4yLmRlZmF1bHQsXG4gIGlzQWxwaGE6IF9pc0FscGhhMi5kZWZhdWx0LFxuICBpc0FscGhhbnVtZXJpYzogX2lzQWxwaGFudW1lcmljMi5kZWZhdWx0LFxuICBpc051bWVyaWM6IF9pc051bWVyaWMyLmRlZmF1bHQsXG4gIGlzUG9ydDogX2lzUG9ydDIuZGVmYXVsdCxcbiAgaXNMb3dlcmNhc2U6IF9pc0xvd2VyY2FzZTIuZGVmYXVsdCxcbiAgaXNVcHBlcmNhc2U6IF9pc1VwcGVyY2FzZTIuZGVmYXVsdCxcbiAgaXNBc2NpaTogX2lzQXNjaWkyLmRlZmF1bHQsXG4gIGlzRnVsbFdpZHRoOiBfaXNGdWxsV2lkdGgyLmRlZmF1bHQsXG4gIGlzSGFsZldpZHRoOiBfaXNIYWxmV2lkdGgyLmRlZmF1bHQsXG4gIGlzVmFyaWFibGVXaWR0aDogX2lzVmFyaWFibGVXaWR0aDIuZGVmYXVsdCxcbiAgaXNNdWx0aWJ5dGU6IF9pc011bHRpYnl0ZTIuZGVmYXVsdCxcbiAgaXNTdXJyb2dhdGVQYWlyOiBfaXNTdXJyb2dhdGVQYWlyMi5kZWZhdWx0LFxuICBpc0ludDogX2lzSW50Mi5kZWZhdWx0LFxuICBpc0Zsb2F0OiBfaXNGbG9hdDIuZGVmYXVsdCxcbiAgaXNEZWNpbWFsOiBfaXNEZWNpbWFsMi5kZWZhdWx0LFxuICBpc0hleGFkZWNpbWFsOiBfaXNIZXhhZGVjaW1hbDIuZGVmYXVsdCxcbiAgaXNEaXZpc2libGVCeTogX2lzRGl2aXNpYmxlQnkyLmRlZmF1bHQsXG4gIGlzSGV4Q29sb3I6IF9pc0hleENvbG9yMi5kZWZhdWx0LFxuICBpc0lTUkM6IF9pc0lTUkMyLmRlZmF1bHQsXG4gIGlzTUQ1OiBfaXNNRDIuZGVmYXVsdCxcbiAgaXNIYXNoOiBfaXNIYXNoMi5kZWZhdWx0LFxuICBpc0pXVDogX2lzSldUMi5kZWZhdWx0LFxuICBpc0pTT046IF9pc0pTT04yLmRlZmF1bHQsXG4gIGlzRW1wdHk6IF9pc0VtcHR5Mi5kZWZhdWx0LFxuICBpc0xlbmd0aDogX2lzTGVuZ3RoMi5kZWZhdWx0LFxuICBpc0J5dGVMZW5ndGg6IF9pc0J5dGVMZW5ndGgyLmRlZmF1bHQsXG4gIGlzVVVJRDogX2lzVVVJRDIuZGVmYXVsdCxcbiAgaXNNb25nb0lkOiBfaXNNb25nb0lkMi5kZWZhdWx0LFxuICBpc0FmdGVyOiBfaXNBZnRlcjIuZGVmYXVsdCxcbiAgaXNCZWZvcmU6IF9pc0JlZm9yZTIuZGVmYXVsdCxcbiAgaXNJbjogX2lzSW4yLmRlZmF1bHQsXG4gIGlzQ3JlZGl0Q2FyZDogX2lzQ3JlZGl0Q2FyZDIuZGVmYXVsdCxcbiAgaXNJU0lOOiBfaXNJU0lOMi5kZWZhdWx0LFxuICBpc0lTQk46IF9pc0lTQk4yLmRlZmF1bHQsXG4gIGlzSVNTTjogX2lzSVNTTjIuZGVmYXVsdCxcbiAgaXNNb2JpbGVQaG9uZTogX2lzTW9iaWxlUGhvbmUyLmRlZmF1bHQsXG4gIGlzUG9zdGFsQ29kZTogX2lzUG9zdGFsQ29kZTIuZGVmYXVsdCxcbiAgaXNQb3N0YWxDb2RlTG9jYWxlczogX2lzUG9zdGFsQ29kZS5sb2NhbGVzLFxuICBpc0N1cnJlbmN5OiBfaXNDdXJyZW5jeTIuZGVmYXVsdCxcbiAgaXNJU084NjAxOiBfaXNJU08yLmRlZmF1bHQsXG4gIGlzUkZDMzMzOTogX2lzUkZDMi5kZWZhdWx0LFxuICBpc0lTTzMxNjYxQWxwaGEyOiBfaXNJU08zMTY2MUFscGhhMi5kZWZhdWx0LFxuICBpc0lTTzMxNjYxQWxwaGEzOiBfaXNJU08zMTY2MUFscGhhNC5kZWZhdWx0LFxuICBpc0Jhc2U2NDogX2lzQmFzZTIuZGVmYXVsdCxcbiAgaXNEYXRhVVJJOiBfaXNEYXRhVVJJMi5kZWZhdWx0LFxuICBpc01hZ25ldFVSSTogX2lzTWFnbmV0VVJJMi5kZWZhdWx0LFxuICBpc01pbWVUeXBlOiBfaXNNaW1lVHlwZTIuZGVmYXVsdCxcbiAgaXNMYXRMb25nOiBfaXNMYXRMb25nMi5kZWZhdWx0LFxuICBsdHJpbTogX2x0cmltMi5kZWZhdWx0LFxuICBydHJpbTogX3J0cmltMi5kZWZhdWx0LFxuICB0cmltOiBfdHJpbTIuZGVmYXVsdCxcbiAgZXNjYXBlOiBfZXNjYXBlMi5kZWZhdWx0LFxuICB1bmVzY2FwZTogX3VuZXNjYXBlMi5kZWZhdWx0LFxuICBzdHJpcExvdzogX3N0cmlwTG93Mi5kZWZhdWx0LFxuICB3aGl0ZWxpc3Q6IF93aGl0ZWxpc3QyLmRlZmF1bHQsXG4gIGJsYWNrbGlzdDogX2JsYWNrbGlzdDIuZGVmYXVsdCxcbiAgaXNXaGl0ZWxpc3RlZDogX2lzV2hpdGVsaXN0ZWQyLmRlZmF1bHQsXG4gIG5vcm1hbGl6ZUVtYWlsOiBfbm9ybWFsaXplRW1haWwyLmRlZmF1bHQsXG4gIHRvU3RyaW5nOiBfdG9TdHJpbmcyLmRlZmF1bHRcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHZhbGlkYXRvcjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbnZhciBhbHBoYSA9IGV4cG9ydHMuYWxwaGEgPSB7XG4gICdlbi1VUyc6IC9eW0EtWl0rJC9pLFxuICAnYmctQkcnOiAvXlvQkC3Qr10rJC9pLFxuICAnY3MtQ1onOiAvXltBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1dKyQvaSxcbiAgJ2RhLURLJzogL15bQS1aw4bDmMOFXSskL2ksXG4gICdkZS1ERSc6IC9eW0EtWsOEw5bDnMOfXSskL2ksXG4gICdlbC1HUic6IC9eW86RLc+JXSskL2ksXG4gICdlcy1FUyc6IC9eW0EtWsOBw4nDjcORw5PDmsOcXSskL2ksXG4gICdmci1GUic6IC9eW0EtWsOAw4LDhsOHw4nDiMOKw4vDj8OOw5TFksOZw5vDnMW4XSskL2ksXG4gICdpdC1JVCc6IC9eW0EtWsOAw4nDiMOMw47Dk8OSw5ldKyQvaSxcbiAgJ25iLU5PJzogL15bQS1aw4bDmMOFXSskL2ksXG4gICdubC1OTCc6IC9eW0EtWsOBw4nDi8OPw5PDlsOcw5pdKyQvaSxcbiAgJ25uLU5PJzogL15bQS1aw4bDmMOFXSskL2ksXG4gICdodS1IVSc6IC9eW0EtWsOBw4nDjcOTw5bFkMOaw5zFsF0rJC9pLFxuICAncGwtUEwnOiAvXltBLVrEhMSGxJjFmsWBxYPDk8W7xbldKyQvaSxcbiAgJ3B0LVBUJzogL15bQS1aw4PDgcOAw4LDh8OJw4rDjcOVw5PDlMOaw5xdKyQvaSxcbiAgJ3J1LVJVJzogL15b0JAt0K/QgV0rJC9pLFxuICAnc2stU0snOiAvXltBLVrDgcSMxI7DicONxYfDk8WgxaTDmsOdxb3EucWUxL3DhMOUXSskL2ksXG4gICdzci1SU0BsYXRpbic6IC9eW0EtWsSMxIbFvcWgxJBdKyQvaSxcbiAgJ3NyLVJTJzogL15b0JAt0K/QgtCI0InQitCL0I9dKyQvaSxcbiAgJ3N2LVNFJzogL15bQS1aw4XDhMOWXSskL2ksXG4gICd0ci1UUic6IC9eW0EtWsOHxJ7EsMSxw5bFnsOcXSskL2ksXG4gICd1ay1VQSc6IC9eW9CQLdCp0KzQrtCv0IRJ0IfSkNGWXSskL2ksXG4gICdrdS1JUSc6IC9eW9im2KfYqNm+2KrYrNqG2K3Yrtiv2LHaldiy2pjYs9i02LnYutmB2qTZgtqp2q/ZhNq12YXZhtmI24bavtuV24zbjtmK2LfYpNir2KLYpdij2YPYtti12KnYuNiwXSskL2ksXG4gIGFyOiAvXlvYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti32LjYudi62YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS2bBdKyQvXG59O1xuXG52YXIgYWxwaGFudW1lcmljID0gZXhwb3J0cy5hbHBoYW51bWVyaWMgPSB7XG4gICdlbi1VUyc6IC9eWzAtOUEtWl0rJC9pLFxuICAnYmctQkcnOiAvXlswLTnQkC3Qr10rJC9pLFxuICAnY3MtQ1onOiAvXlswLTlBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1dKyQvaSxcbiAgJ2RhLURLJzogL15bMC05QS1aw4bDmMOFXSskL2ksXG4gICdkZS1ERSc6IC9eWzAtOUEtWsOEw5bDnMOfXSskL2ksXG4gICdlbC1HUic6IC9eWzAtOc6RLc+JXSskL2ksXG4gICdlcy1FUyc6IC9eWzAtOUEtWsOBw4nDjcORw5PDmsOcXSskL2ksXG4gICdmci1GUic6IC9eWzAtOUEtWsOAw4LDhsOHw4nDiMOKw4vDj8OOw5TFksOZw5vDnMW4XSskL2ksXG4gICdpdC1JVCc6IC9eWzAtOUEtWsOAw4nDiMOMw47Dk8OSw5ldKyQvaSxcbiAgJ2h1LUhVJzogL15bMC05QS1aw4HDicONw5PDlsWQw5rDnMWwXSskL2ksXG4gICduYi1OTyc6IC9eWzAtOUEtWsOGw5jDhV0rJC9pLFxuICAnbmwtTkwnOiAvXlswLTlBLVrDgcOJw4vDj8OTw5bDnMOaXSskL2ksXG4gICdubi1OTyc6IC9eWzAtOUEtWsOGw5jDhV0rJC9pLFxuICAncGwtUEwnOiAvXlswLTlBLVrEhMSGxJjFmsWBxYPDk8W7xbldKyQvaSxcbiAgJ3B0LVBUJzogL15bMC05QS1aw4PDgcOAw4LDh8OJw4rDjcOVw5PDlMOaw5xdKyQvaSxcbiAgJ3J1LVJVJzogL15bMC050JAt0K/QgV0rJC9pLFxuICAnc2stU0snOiAvXlswLTlBLVrDgcSMxI7DicONxYfDk8WgxaTDmsOdxb3EucWUxL3DhMOUXSskL2ksXG4gICdzci1SU0BsYXRpbic6IC9eWzAtOUEtWsSMxIbFvcWgxJBdKyQvaSxcbiAgJ3NyLVJTJzogL15bMC050JAt0K/QgtCI0InQitCL0I9dKyQvaSxcbiAgJ3N2LVNFJzogL15bMC05QS1aw4XDhMOWXSskL2ksXG4gICd0ci1UUic6IC9eWzAtOUEtWsOHxJ7EsMSxw5bFnsOcXSskL2ksXG4gICd1ay1VQSc6IC9eWzAtOdCQLdCp0KzQrtCv0IRJ0IfSkNGWXSskL2ksXG4gICdrdS1JUSc6IC9eW9mg2aHZotmj2aTZpdmm2afZqNmpMC052KbYp9io2b7Yqtis2obYrdiu2K/YsdqV2LLamNiz2LTYudi62YHapNmC2qnar9mE2rXZhdmG2Yjbhtq+25XbjNuO2YrYt9ik2KvYotil2KPZg9i22LXYqdi42LBdKyQvaSxcbiAgYXI6IC9eW9mg2aHZotmj2aTZpdmm2afZqNmpMC052KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYsdiy2LPYtNi12LbYt9i42LnYutmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZktmwXSskL1xufTtcblxudmFyIGRlY2ltYWwgPSBleHBvcnRzLmRlY2ltYWwgPSB7XG4gICdlbi1VUyc6ICcuJyxcbiAgYXI6ICfZqydcbn07XG5cbnZhciBlbmdsaXNoTG9jYWxlcyA9IGV4cG9ydHMuZW5nbGlzaExvY2FsZXMgPSBbJ0FVJywgJ0dCJywgJ0hLJywgJ0lOJywgJ05aJywgJ1pBJywgJ1pNJ107XG5cbmZvciAodmFyIGxvY2FsZSwgaSA9IDA7IGkgPCBlbmdsaXNoTG9jYWxlcy5sZW5ndGg7IGkrKykge1xuICBsb2NhbGUgPSAnZW4tJyArIGVuZ2xpc2hMb2NhbGVzW2ldO1xuICBhbHBoYVtsb2NhbGVdID0gYWxwaGFbJ2VuLVVTJ107XG4gIGFscGhhbnVtZXJpY1tsb2NhbGVdID0gYWxwaGFudW1lcmljWydlbi1VUyddO1xuICBkZWNpbWFsW2xvY2FsZV0gPSBkZWNpbWFsWydlbi1VUyddO1xufVxuXG4vLyBTb3VyY2U6IGh0dHA6Ly93d3cubG9jYWxlcGxhbmV0LmNvbS9qYXZhL1xudmFyIGFyYWJpY0xvY2FsZXMgPSBleHBvcnRzLmFyYWJpY0xvY2FsZXMgPSBbJ0FFJywgJ0JIJywgJ0RaJywgJ0VHJywgJ0lRJywgJ0pPJywgJ0tXJywgJ0xCJywgJ0xZJywgJ01BJywgJ1FNJywgJ1FBJywgJ1NBJywgJ1NEJywgJ1NZJywgJ1ROJywgJ1lFJ107XG5cbmZvciAodmFyIF9sb2NhbGUsIF9pID0gMDsgX2kgPCBhcmFiaWNMb2NhbGVzLmxlbmd0aDsgX2krKykge1xuICBfbG9jYWxlID0gJ2FyLScgKyBhcmFiaWNMb2NhbGVzW19pXTtcbiAgYWxwaGFbX2xvY2FsZV0gPSBhbHBoYS5hcjtcbiAgYWxwaGFudW1lcmljW19sb2NhbGVdID0gYWxwaGFudW1lcmljLmFyO1xuICBkZWNpbWFsW19sb2NhbGVdID0gZGVjaW1hbC5hcjtcbn1cblxuLy8gU291cmNlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWNpbWFsX21hcmtcbnZhciBkb3REZWNpbWFsID0gZXhwb3J0cy5kb3REZWNpbWFsID0gW107XG52YXIgY29tbWFEZWNpbWFsID0gZXhwb3J0cy5jb21tYURlY2ltYWwgPSBbJ2JnLUJHJywgJ2NzLUNaJywgJ2RhLURLJywgJ2RlLURFJywgJ2VsLUdSJywgJ2VzLUVTJywgJ2ZyLUZSJywgJ2l0LUlUJywgJ2t1LUlRJywgJ2h1LUhVJywgJ25iLU5PJywgJ25uLU5PJywgJ25sLU5MJywgJ3BsLVBMJywgJ3B0LVBUJywgJ3J1LVJVJywgJ3NyLVJTQGxhdGluJywgJ3NyLVJTJywgJ3N2LVNFJywgJ3RyLVRSJywgJ3VrLVVBJ107XG5cbmZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGRvdERlY2ltYWwubGVuZ3RoOyBfaTIrKykge1xuICBkZWNpbWFsW2RvdERlY2ltYWxbX2kyXV0gPSBkZWNpbWFsWydlbi1VUyddO1xufVxuXG5mb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBjb21tYURlY2ltYWwubGVuZ3RoOyBfaTMrKykge1xuICBkZWNpbWFsW2NvbW1hRGVjaW1hbFtfaTNdXSA9ICcsJztcbn1cblxuYWxwaGFbJ3B0LUJSJ10gPSBhbHBoYVsncHQtUFQnXTtcbmFscGhhbnVtZXJpY1sncHQtQlInXSA9IGFscGhhbnVtZXJpY1sncHQtUFQnXTtcbmRlY2ltYWxbJ3B0LUJSJ10gPSBkZWNpbWFsWydwdC1QVCddO1xuXG4vLyBzZWUgIzg2MlxuYWxwaGFbJ3BsLVBsJ10gPSBhbHBoYVsncGwtUEwnXTtcbmFscGhhbnVtZXJpY1sncGwtUGwnXSA9IGFscGhhbnVtZXJpY1sncGwtUEwnXTtcbmRlY2ltYWxbJ3BsLVBsJ10gPSBkZWNpbWFsWydwbC1QTCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGJsYWNrbGlzdDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGJsYWNrbGlzdChzdHIsIGNoYXJzKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCgnWycgKyBjaGFycyArICddKycsICdnJyksICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGNvbnRhaW5zO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF90b1N0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC90b1N0cmluZycpO1xuXG52YXIgX3RvU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvU3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gY29udGFpbnMoc3RyLCBlbGVtKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLmluZGV4T2YoKDAsIF90b1N0cmluZzIuZGVmYXVsdCkoZWxlbSkpID49IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBlcXVhbHM7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBlcXVhbHMoc3RyLCBjb21wYXJpc29uKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyID09PSBjb21wYXJpc29uO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZXNjYXBlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gZXNjYXBlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKS5yZXBsYWNlKC8nL2csICcmI3gyNzsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoL1xcLy9nLCAnJiN4MkY7JykucmVwbGFjZSgvXFxcXC9nLCAnJiN4NUM7JykucmVwbGFjZSgvYC9nLCAnJiM5NjsnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQWZ0ZXI7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX3RvRGF0ZSA9IHJlcXVpcmUoJy4vdG9EYXRlJyk7XG5cbnZhciBfdG9EYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvRGF0ZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzQWZ0ZXIoc3RyKSB7XG4gIHZhciBkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBTdHJpbmcobmV3IERhdGUoKSk7XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBjb21wYXJpc29uID0gKDAsIF90b0RhdGUyLmRlZmF1bHQpKGRhdGUpO1xuICB2YXIgb3JpZ2luYWwgPSAoMCwgX3RvRGF0ZTIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICEhKG9yaWdpbmFsICYmIGNvbXBhcmlzb24gJiYgb3JpZ2luYWwgPiBjb21wYXJpc29uKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQWxwaGE7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2FscGhhID0gcmVxdWlyZSgnLi9hbHBoYScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0FscGhhKHN0cikge1xuICB2YXIgbG9jYWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnZW4tVVMnO1xuXG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAobG9jYWxlIGluIF9hbHBoYS5hbHBoYSkge1xuICAgIHJldHVybiBfYWxwaGEuYWxwaGFbbG9jYWxlXS50ZXN0KHN0cik7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsZSBcXCcnICsgbG9jYWxlICsgJ1xcJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNBbHBoYW51bWVyaWM7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2FscGhhID0gcmVxdWlyZSgnLi9hbHBoYScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0FscGhhbnVtZXJpYyhzdHIpIHtcbiAgdmFyIGxvY2FsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJ2VuLVVTJztcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKGxvY2FsZSBpbiBfYWxwaGEuYWxwaGFudW1lcmljKSB7XG4gICAgcmV0dXJuIF9hbHBoYS5hbHBoYW51bWVyaWNbbG9jYWxlXS50ZXN0KHN0cik7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsZSBcXCcnICsgbG9jYWxlICsgJ1xcJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNBc2NpaTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cbnZhciBhc2NpaSA9IC9eW1xceDAwLVxceDdGXSskLztcbi8qIGVzbGludC1lbmFibGUgbm8tY29udHJvbC1yZWdleCAqL1xuXG5mdW5jdGlvbiBpc0FzY2lpKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGFzY2lpLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQmFzZTY0O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIG5vdEJhc2U2NCA9IC9bXkEtWjAtOStcXC89XS9pO1xuXG5mdW5jdGlvbiBpc0Jhc2U2NChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBsZW4gPSBzdHIubGVuZ3RoO1xuICBpZiAoIWxlbiB8fCBsZW4gJSA0ICE9PSAwIHx8IG5vdEJhc2U2NC50ZXN0KHN0cikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGZpcnN0UGFkZGluZ0NoYXIgPSBzdHIuaW5kZXhPZignPScpO1xuICByZXR1cm4gZmlyc3RQYWRkaW5nQ2hhciA9PT0gLTEgfHwgZmlyc3RQYWRkaW5nQ2hhciA9PT0gbGVuIC0gMSB8fCBmaXJzdFBhZGRpbmdDaGFyID09PSBsZW4gLSAyICYmIHN0cltsZW4gLSAxXSA9PT0gJz0nO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCZWZvcmU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX3RvRGF0ZSA9IHJlcXVpcmUoJy4vdG9EYXRlJyk7XG5cbnZhciBfdG9EYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvRGF0ZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzQmVmb3JlKHN0cikge1xuICB2YXIgZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogU3RyaW5nKG5ldyBEYXRlKCkpO1xuXG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgY29tcGFyaXNvbiA9ICgwLCBfdG9EYXRlMi5kZWZhdWx0KShkYXRlKTtcbiAgdmFyIG9yaWdpbmFsID0gKDAsIF90b0RhdGUyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiAhIShvcmlnaW5hbCAmJiBjb21wYXJpc29uICYmIG9yaWdpbmFsIDwgY29tcGFyaXNvbik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0Jvb2xlYW47XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gWyd0cnVlJywgJ2ZhbHNlJywgJzEnLCAnMCddLmluZGV4T2Yoc3RyKSA+PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGlzQnl0ZUxlbmd0aDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1yZXN0LXBhcmFtcyAqL1xuZnVuY3Rpb24gaXNCeXRlTGVuZ3RoKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIG1pbiA9IHZvaWQgMDtcbiAgdmFyIG1heCA9IHZvaWQgMDtcbiAgaWYgKCh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yob3B0aW9ucykpID09PSAnb2JqZWN0Jykge1xuICAgIG1pbiA9IG9wdGlvbnMubWluIHx8IDA7XG4gICAgbWF4ID0gb3B0aW9ucy5tYXg7XG4gIH0gZWxzZSB7XG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IGlzQnl0ZUxlbmd0aChzdHIsIG1pbiBbLCBtYXhdKVxuICAgIG1pbiA9IGFyZ3VtZW50c1sxXTtcbiAgICBtYXggPSBhcmd1bWVudHNbMl07XG4gIH1cbiAgdmFyIGxlbiA9IGVuY29kZVVSSShzdHIpLnNwbGl0KC8lLi58Li8pLmxlbmd0aCAtIDE7XG4gIHJldHVybiBsZW4gPj0gbWluICYmICh0eXBlb2YgbWF4ID09PSAndW5kZWZpbmVkJyB8fCBsZW4gPD0gbWF4KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQ3JlZGl0Q2FyZDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbnZhciBjcmVkaXRDYXJkID0gL14oPzo0WzAtOV17MTJ9KD86WzAtOV17M30pP3w1WzEtNV1bMC05XXsxNH18KDIyMlsxLTldfDIyWzMtOV1bMC05XXwyWzMtNl1bMC05XXsyfXwyN1swMV1bMC05XXwyNzIwKVswLTldezEyfXw2KD86MDExfDVbMC05XVswLTldKVswLTldezEyfXwzWzQ3XVswLTldezEzfXwzKD86MFswLTVdfFs2OF1bMC05XSlbMC05XXsxMX18KD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX18NlsyN11bMC05XXsxNH0pJC87XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuZnVuY3Rpb24gaXNDcmVkaXRDYXJkKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHNhbml0aXplZCA9IHN0ci5yZXBsYWNlKC9bLSBdKy9nLCAnJyk7XG4gIGlmICghY3JlZGl0Q2FyZC50ZXN0KHNhbml0aXplZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHN1bSA9IDA7XG4gIHZhciBkaWdpdCA9IHZvaWQgMDtcbiAgdmFyIHRtcE51bSA9IHZvaWQgMDtcbiAgdmFyIHNob3VsZERvdWJsZSA9IHZvaWQgMDtcbiAgZm9yICh2YXIgaSA9IHNhbml0aXplZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGRpZ2l0ID0gc2FuaXRpemVkLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgdG1wTnVtID0gcGFyc2VJbnQoZGlnaXQsIDEwKTtcbiAgICBpZiAoc2hvdWxkRG91YmxlKSB7XG4gICAgICB0bXBOdW0gKj0gMjtcbiAgICAgIGlmICh0bXBOdW0gPj0gMTApIHtcbiAgICAgICAgc3VtICs9IHRtcE51bSAlIDEwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgfVxuICAgIHNob3VsZERvdWJsZSA9ICFzaG91bGREb3VibGU7XG4gIH1cbiAgcmV0dXJuICEhKHN1bSAlIDEwID09PSAwID8gc2FuaXRpemVkIDogZmFsc2UpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNDdXJyZW5jeTtcblxudmFyIF9tZXJnZSA9IHJlcXVpcmUoJy4vdXRpbC9tZXJnZScpO1xuXG52YXIgX21lcmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlKTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGN1cnJlbmN5UmVnZXgob3B0aW9ucykge1xuICB2YXIgZGVjaW1hbF9kaWdpdHMgPSAnXFxcXGR7JyArIG9wdGlvbnMuZGlnaXRzX2FmdGVyX2RlY2ltYWxbMF0gKyAnfSc7XG4gIG9wdGlvbnMuZGlnaXRzX2FmdGVyX2RlY2ltYWwuZm9yRWFjaChmdW5jdGlvbiAoZGlnaXQsIGluZGV4KSB7XG4gICAgaWYgKGluZGV4ICE9PSAwKSBkZWNpbWFsX2RpZ2l0cyA9IGRlY2ltYWxfZGlnaXRzICsgJ3xcXFxcZHsnICsgZGlnaXQgKyAnfSc7XG4gIH0pO1xuICB2YXIgc3ltYm9sID0gJyhcXFxcJyArIG9wdGlvbnMuc3ltYm9sLnJlcGxhY2UoL1xcLi9nLCAnXFxcXC4nKSArICcpJyArIChvcHRpb25zLnJlcXVpcmVfc3ltYm9sID8gJycgOiAnPycpLFxuICAgICAgbmVnYXRpdmUgPSAnLT8nLFxuICAgICAgd2hvbGVfZG9sbGFyX2Ftb3VudF93aXRob3V0X3NlcCA9ICdbMS05XVxcXFxkKicsXG4gICAgICB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhfc2VwID0gJ1sxLTldXFxcXGR7MCwyfShcXFxcJyArIG9wdGlvbnMudGhvdXNhbmRzX3NlcGFyYXRvciArICdcXFxcZHszfSkqJyxcbiAgICAgIHZhbGlkX3dob2xlX2RvbGxhcl9hbW91bnRzID0gWycwJywgd2hvbGVfZG9sbGFyX2Ftb3VudF93aXRob3V0X3NlcCwgd2hvbGVfZG9sbGFyX2Ftb3VudF93aXRoX3NlcF0sXG4gICAgICB3aG9sZV9kb2xsYXJfYW1vdW50ID0gJygnICsgdmFsaWRfd2hvbGVfZG9sbGFyX2Ftb3VudHMuam9pbignfCcpICsgJyk/JyxcbiAgICAgIGRlY2ltYWxfYW1vdW50ID0gJyhcXFxcJyArIG9wdGlvbnMuZGVjaW1hbF9zZXBhcmF0b3IgKyAnKCcgKyBkZWNpbWFsX2RpZ2l0cyArICcpKScgKyAob3B0aW9ucy5yZXF1aXJlX2RlY2ltYWwgPyAnJyA6ICc/Jyk7XG4gIHZhciBwYXR0ZXJuID0gd2hvbGVfZG9sbGFyX2Ftb3VudCArIChvcHRpb25zLmFsbG93X2RlY2ltYWwgfHwgb3B0aW9ucy5yZXF1aXJlX2RlY2ltYWwgPyBkZWNpbWFsX2Ftb3VudCA6ICcnKTtcblxuICAvLyBkZWZhdWx0IGlzIG5lZ2F0aXZlIHNpZ24gYmVmb3JlIHN5bWJvbCwgYnV0IHRoZXJlIGFyZSB0d28gb3RoZXIgb3B0aW9ucyAoYmVzaWRlcyBwYXJlbnMpXG4gIGlmIChvcHRpb25zLmFsbG93X25lZ2F0aXZlcyAmJiAhb3B0aW9ucy5wYXJlbnNfZm9yX25lZ2F0aXZlcykge1xuICAgIGlmIChvcHRpb25zLm5lZ2F0aXZlX3NpZ25fYWZ0ZXJfZGlnaXRzKSB7XG4gICAgICBwYXR0ZXJuICs9IG5lZ2F0aXZlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5uZWdhdGl2ZV9zaWduX2JlZm9yZV9kaWdpdHMpIHtcbiAgICAgIHBhdHRlcm4gPSBuZWdhdGl2ZSArIHBhdHRlcm47XG4gICAgfVxuICB9XG5cbiAgLy8gU291dGggQWZyaWNhbiBSYW5kLCBmb3IgZXhhbXBsZSwgdXNlcyBSIDEyMyAoc3BhY2UpIGFuZCBSLTEyMyAobm8gc3BhY2UpXG4gIGlmIChvcHRpb25zLmFsbG93X25lZ2F0aXZlX3NpZ25fcGxhY2Vob2xkZXIpIHtcbiAgICBwYXR0ZXJuID0gJyggKD8hXFxcXC0pKT8nICsgcGF0dGVybjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbG93X3NwYWNlX2FmdGVyX3N5bWJvbCkge1xuICAgIHBhdHRlcm4gPSAnID8nICsgcGF0dGVybjtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbG93X3NwYWNlX2FmdGVyX2RpZ2l0cykge1xuICAgIHBhdHRlcm4gKz0gJyggKD8hJCkpPyc7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zeW1ib2xfYWZ0ZXJfZGlnaXRzKSB7XG4gICAgcGF0dGVybiArPSBzeW1ib2w7XG4gIH0gZWxzZSB7XG4gICAgcGF0dGVybiA9IHN5bWJvbCArIHBhdHRlcm47XG4gIH1cblxuICBpZiAob3B0aW9ucy5hbGxvd19uZWdhdGl2ZXMpIHtcbiAgICBpZiAob3B0aW9ucy5wYXJlbnNfZm9yX25lZ2F0aXZlcykge1xuICAgICAgcGF0dGVybiA9ICcoXFxcXCgnICsgcGF0dGVybiArICdcXFxcKXwnICsgcGF0dGVybiArICcpJztcbiAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5uZWdhdGl2ZV9zaWduX2JlZm9yZV9kaWdpdHMgfHwgb3B0aW9ucy5uZWdhdGl2ZV9zaWduX2FmdGVyX2RpZ2l0cykpIHtcbiAgICAgIHBhdHRlcm4gPSBuZWdhdGl2ZSArIHBhdHRlcm47XG4gICAgfVxuICB9XG5cbiAgLy8gZW5zdXJlIHRoZXJlJ3MgYSBkb2xsYXIgYW5kL29yIGRlY2ltYWwgYW1vdW50LCBhbmQgdGhhdFxuICAvLyBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBzcGFjZSBvciBhIG5lZ2F0aXZlIHNpZ24gZm9sbG93ZWQgYnkgYSBzcGFjZVxuICByZXR1cm4gbmV3IFJlZ0V4cCgnXig/IS0/ICkoPz0uKlxcXFxkKScgKyBwYXR0ZXJuICsgJyQnKTtcbn1cblxudmFyIGRlZmF1bHRfY3VycmVuY3lfb3B0aW9ucyA9IHtcbiAgc3ltYm9sOiAnJCcsXG4gIHJlcXVpcmVfc3ltYm9sOiBmYWxzZSxcbiAgYWxsb3dfc3BhY2VfYWZ0ZXJfc3ltYm9sOiBmYWxzZSxcbiAgc3ltYm9sX2FmdGVyX2RpZ2l0czogZmFsc2UsXG4gIGFsbG93X25lZ2F0aXZlczogdHJ1ZSxcbiAgcGFyZW5zX2Zvcl9uZWdhdGl2ZXM6IGZhbHNlLFxuICBuZWdhdGl2ZV9zaWduX2JlZm9yZV9kaWdpdHM6IGZhbHNlLFxuICBuZWdhdGl2ZV9zaWduX2FmdGVyX2RpZ2l0czogZmFsc2UsXG4gIGFsbG93X25lZ2F0aXZlX3NpZ25fcGxhY2Vob2xkZXI6IGZhbHNlLFxuICB0aG91c2FuZHNfc2VwYXJhdG9yOiAnLCcsXG4gIGRlY2ltYWxfc2VwYXJhdG9yOiAnLicsXG4gIGFsbG93X2RlY2ltYWw6IHRydWUsXG4gIHJlcXVpcmVfZGVjaW1hbDogZmFsc2UsXG4gIGRpZ2l0c19hZnRlcl9kZWNpbWFsOiBbMl0sXG4gIGFsbG93X3NwYWNlX2FmdGVyX2RpZ2l0czogZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIGlzQ3VycmVuY3koc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZTIuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF9jdXJyZW5jeV9vcHRpb25zKTtcbiAgcmV0dXJuIGN1cnJlbmN5UmVnZXgob3B0aW9ucykudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNEYXRhVVJJO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHZhbGlkTWVkaWFUeXBlID0gL15bYS16XStcXC9bYS16MC05XFwtXFwrXSskL2k7XG5cbnZhciB2YWxpZEF0dHJpYnV0ZSA9IC9eW2EtelxcLV0rPVthLXowLTlcXC1dKyQvaTtcblxudmFyIHZhbGlkRGF0YSA9IC9eW2EtejAtOSFcXCQmJ1xcKFxcKVxcKlxcKyw7PVxcLVxcLl9+OkBcXC9cXD8lXFxzXSokL2k7XG5cbmZ1bmN0aW9uIGlzRGF0YVVSSShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBkYXRhID0gc3RyLnNwbGl0KCcsJyk7XG4gIGlmIChkYXRhLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGF0dHJpYnV0ZXMgPSBkYXRhLnNoaWZ0KCkudHJpbSgpLnNwbGl0KCc7Jyk7XG4gIHZhciBzY2hlbWVBbmRNZWRpYVR5cGUgPSBhdHRyaWJ1dGVzLnNoaWZ0KCk7XG4gIGlmIChzY2hlbWVBbmRNZWRpYVR5cGUuc3Vic3RyKDAsIDUpICE9PSAnZGF0YTonKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBtZWRpYVR5cGUgPSBzY2hlbWVBbmRNZWRpYVR5cGUuc3Vic3RyKDUpO1xuICBpZiAobWVkaWFUeXBlICE9PSAnJyAmJiAhdmFsaWRNZWRpYVR5cGUudGVzdChtZWRpYVR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSBhdHRyaWJ1dGVzLmxlbmd0aCAtIDEgJiYgYXR0cmlidXRlc1tpXS50b0xvd2VyQ2FzZSgpID09PSAnYmFzZTY0Jykge1xuICAgICAgLy8gb2tcbiAgICB9IGVsc2UgaWYgKCF2YWxpZEF0dHJpYnV0ZS50ZXN0KGF0dHJpYnV0ZXNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBkYXRhLmxlbmd0aDsgX2krKykge1xuICAgIGlmICghdmFsaWREYXRhLnRlc3QoZGF0YVtfaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNEZWNpbWFsO1xuXG52YXIgX21lcmdlID0gcmVxdWlyZSgnLi91dGlsL21lcmdlJyk7XG5cbnZhciBfbWVyZ2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWVyZ2UpO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF9pbmNsdWRlcyA9IHJlcXVpcmUoJy4vdXRpbC9pbmNsdWRlcycpO1xuXG52YXIgX2luY2x1ZGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luY2x1ZGVzKTtcblxudmFyIF9hbHBoYSA9IHJlcXVpcmUoJy4vYWxwaGEnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gZGVjaW1hbFJlZ0V4cChvcHRpb25zKSB7XG4gIHZhciByZWdFeHAgPSBuZXcgUmVnRXhwKCdeWy0rXT8oWzAtOV0rKT8oXFxcXCcgKyBfYWxwaGEuZGVjaW1hbFtvcHRpb25zLmxvY2FsZV0gKyAnWzAtOV17JyArIG9wdGlvbnMuZGVjaW1hbF9kaWdpdHMgKyAnfSknICsgKG9wdGlvbnMuZm9yY2VfZGVjaW1hbCA/ICcnIDogJz8nKSArICckJyk7XG4gIHJldHVybiByZWdFeHA7XG59XG5cbnZhciBkZWZhdWx0X2RlY2ltYWxfb3B0aW9ucyA9IHtcbiAgZm9yY2VfZGVjaW1hbDogZmFsc2UsXG4gIGRlY2ltYWxfZGlnaXRzOiAnMSwnLFxuICBsb2NhbGU6ICdlbi1VUydcbn07XG5cbnZhciBibGFja2xpc3QgPSBbJycsICctJywgJysnXTtcblxuZnVuY3Rpb24gaXNEZWNpbWFsKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UyLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZGVjaW1hbF9vcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMubG9jYWxlIGluIF9hbHBoYS5kZWNpbWFsKSB7XG4gICAgcmV0dXJuICEoMCwgX2luY2x1ZGVzMi5kZWZhdWx0KShibGFja2xpc3QsIHN0ci5yZXBsYWNlKC8gL2csICcnKSkgJiYgZGVjaW1hbFJlZ0V4cChvcHRpb25zKS50ZXN0KHN0cik7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsZSBcXCcnICsgb3B0aW9ucy5sb2NhbGUgKyAnXFwnJyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0RpdmlzaWJsZUJ5O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF90b0Zsb2F0ID0gcmVxdWlyZSgnLi90b0Zsb2F0Jyk7XG5cbnZhciBfdG9GbG9hdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0Zsb2F0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNEaXZpc2libGVCeShzdHIsIG51bSkge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICgwLCBfdG9GbG9hdDIuZGVmYXVsdCkoc3RyKSAlIHBhcnNlSW50KG51bSwgMTApID09PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNFbWFpbDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbnZhciBfaXNCeXRlTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0J5dGVMZW5ndGgnKTtcblxudmFyIF9pc0J5dGVMZW5ndGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNCeXRlTGVuZ3RoKTtcblxudmFyIF9pc0ZRRE4gPSByZXF1aXJlKCcuL2lzRlFETicpO1xuXG52YXIgX2lzRlFETjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0ZRRE4pO1xuXG52YXIgX2lzSVAgPSByZXF1aXJlKCcuL2lzSVAnKTtcblxudmFyIF9pc0lQMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVApO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZGVmYXVsdF9lbWFpbF9vcHRpb25zID0ge1xuICBhbGxvd19kaXNwbGF5X25hbWU6IGZhbHNlLFxuICByZXF1aXJlX2Rpc3BsYXlfbmFtZTogZmFsc2UsXG4gIGFsbG93X3V0ZjhfbG9jYWxfcGFydDogdHJ1ZSxcbiAgcmVxdWlyZV90bGQ6IHRydWVcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cbnZhciBkaXNwbGF5TmFtZSA9IC9eW2EtelxcZCEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XFwuXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXStbYS16XFxkISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5cXCxcXC5cXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZcXHNdKjwoLispPiQvaTtcbnZhciBlbWFpbFVzZXJQYXJ0ID0gL15bYS16XFxkISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dKyQvaTtcbnZhciBnbWFpbFVzZXJQYXJ0ID0gL15bYS16XFxkXSskLztcbnZhciBxdW90ZWRFbWFpbFVzZXIgPSAvXihbXFxzXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3ZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZV18KFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZdKSkqJC9pO1xudmFyIGVtYWlsVXNlclV0ZjhQYXJ0ID0gL15bYS16XFxkISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5cXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKyQvaTtcbnZhciBxdW90ZWRFbWFpbFVzZXJVdGY4ID0gL14oW1xcc1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4N2ZcXHgyMVxceDIzLVxceDViXFx4NWQtXFx4N2VcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdfChcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBkLVxceDdmXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKiQvaTtcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWVuYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG5cbmZ1bmN0aW9uIGlzRW1haWwoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZTIuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF9lbWFpbF9vcHRpb25zKTtcblxuICBpZiAob3B0aW9ucy5yZXF1aXJlX2Rpc3BsYXlfbmFtZSB8fCBvcHRpb25zLmFsbG93X2Rpc3BsYXlfbmFtZSkge1xuICAgIHZhciBkaXNwbGF5X2VtYWlsID0gc3RyLm1hdGNoKGRpc3BsYXlOYW1lKTtcbiAgICBpZiAoZGlzcGxheV9lbWFpbCkge1xuICAgICAgc3RyID0gZGlzcGxheV9lbWFpbFsxXTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucmVxdWlyZV9kaXNwbGF5X25hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJ0AnKTtcbiAgdmFyIGRvbWFpbiA9IHBhcnRzLnBvcCgpO1xuICB2YXIgdXNlciA9IHBhcnRzLmpvaW4oJ0AnKTtcblxuICB2YXIgbG93ZXJfZG9tYWluID0gZG9tYWluLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKG9wdGlvbnMuZG9tYWluX3NwZWNpZmljX3ZhbGlkYXRpb24gJiYgKGxvd2VyX2RvbWFpbiA9PT0gJ2dtYWlsLmNvbScgfHwgbG93ZXJfZG9tYWluID09PSAnZ29vZ2xlbWFpbC5jb20nKSkge1xuICAgIC8qXG4gICAgICBQcmV2aW91c2x5IHdlIHJlbW92ZWQgZG90cyBmb3IgZ21haWwgYWRkcmVzc2VzIGJlZm9yZSB2YWxpZGF0aW5nLlxuICAgICAgVGhpcyB3YXMgcmVtb3ZlZCBiZWNhdXNlIGl0IGFsbG93cyBgbXVsdGlwbGUuLmRvdHNAZ21haWwuY29tYFxuICAgICAgdG8gYmUgcmVwb3J0ZWQgYXMgdmFsaWQsIGJ1dCBpdCBpcyBub3QuXG4gICAgICBHbWFpbCBvbmx5IG5vcm1hbGl6ZXMgc2luZ2xlIGRvdHMsIHJlbW92aW5nIHRoZW0gZnJvbSBoZXJlIGlzIHBvaW50bGVzcyxcbiAgICAgIHNob3VsZCBiZSBkb25lIGluIG5vcm1hbGl6ZUVtYWlsXG4gICAgKi9cbiAgICB1c2VyID0gdXNlci50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gUmVtb3Zpbmcgc3ViLWFkZHJlc3MgZnJvbSB1c2VybmFtZSBiZWZvcmUgZ21haWwgdmFsaWRhdGlvblxuICAgIHZhciB1c2VybmFtZSA9IHVzZXIuc3BsaXQoJysnKVswXTtcblxuICAgIC8vIERvdHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBnbWFpbCBsZW5ndGggcmVzdHJpY3Rpb25cbiAgICBpZiAoISgwLCBfaXNCeXRlTGVuZ3RoMi5kZWZhdWx0KSh1c2VybmFtZS5yZXBsYWNlKCcuJywgJycpLCB7IG1pbjogNiwgbWF4OiAzMCB9KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBfdXNlcl9wYXJ0cyA9IHVzZXJuYW1lLnNwbGl0KCcuJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdXNlcl9wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFnbWFpbFVzZXJQYXJ0LnRlc3QoX3VzZXJfcGFydHNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoISgwLCBfaXNCeXRlTGVuZ3RoMi5kZWZhdWx0KSh1c2VyLCB7IG1heDogNjQgfSkgfHwgISgwLCBfaXNCeXRlTGVuZ3RoMi5kZWZhdWx0KShkb21haW4sIHsgbWF4OiAyNTQgfSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgwLCBfaXNGUUROMi5kZWZhdWx0KShkb21haW4sIHsgcmVxdWlyZV90bGQ6IG9wdGlvbnMucmVxdWlyZV90bGQgfSkpIHtcbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dfaXBfZG9tYWluKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEoMCwgX2lzSVAyLmRlZmF1bHQpKGRvbWFpbikpIHtcbiAgICAgIGlmICghZG9tYWluLnN0YXJ0c1dpdGgoJ1snKSB8fCAhZG9tYWluLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbm9CcmFja2V0ZG9tYWluID0gZG9tYWluLnN1YnN0cigxLCBkb21haW4ubGVuZ3RoIC0gMik7XG5cbiAgICAgIGlmIChub0JyYWNrZXRkb21haW4ubGVuZ3RoID09PSAwIHx8ICEoMCwgX2lzSVAyLmRlZmF1bHQpKG5vQnJhY2tldGRvbWFpbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh1c2VyWzBdID09PSAnXCInKSB7XG4gICAgdXNlciA9IHVzZXIuc2xpY2UoMSwgdXNlci5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gb3B0aW9ucy5hbGxvd191dGY4X2xvY2FsX3BhcnQgPyBxdW90ZWRFbWFpbFVzZXJVdGY4LnRlc3QodXNlcikgOiBxdW90ZWRFbWFpbFVzZXIudGVzdCh1c2VyKTtcbiAgfVxuXG4gIHZhciBwYXR0ZXJuID0gb3B0aW9ucy5hbGxvd191dGY4X2xvY2FsX3BhcnQgPyBlbWFpbFVzZXJVdGY4UGFydCA6IGVtYWlsVXNlclBhcnQ7XG5cbiAgdmFyIHVzZXJfcGFydHMgPSB1c2VyLnNwbGl0KCcuJyk7XG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCB1c2VyX3BhcnRzLmxlbmd0aDsgX2krKykge1xuICAgIGlmICghcGF0dGVybi50ZXN0KHVzZXJfcGFydHNbX2ldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNFbXB0eTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X2lzX2VtcHR5X29wdGlvbnMgPSB7XG4gIGlnbm9yZV93aGl0ZXNwYWNlOiBmYWxzZVxufTtcblxuZnVuY3Rpb24gaXNFbXB0eShzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2lzX2VtcHR5X29wdGlvbnMpO1xuXG4gIHJldHVybiAob3B0aW9ucy5pZ25vcmVfd2hpdGVzcGFjZSA/IHN0ci50cmltKCkubGVuZ3RoIDogc3RyLmxlbmd0aCkgPT09IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0ZRRE47XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX21lcmdlID0gcmVxdWlyZSgnLi91dGlsL21lcmdlJyk7XG5cbnZhciBfbWVyZ2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWVyZ2UpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZGVmYXVsdF9mcWRuX29wdGlvbnMgPSB7XG4gIHJlcXVpcmVfdGxkOiB0cnVlLFxuICBhbGxvd191bmRlcnNjb3JlczogZmFsc2UsXG4gIGFsbG93X3RyYWlsaW5nX2RvdDogZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIGlzRlFETihzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2ZxZG5fb3B0aW9ucyk7XG5cbiAgLyogUmVtb3ZlIHRoZSBvcHRpb25hbCB0cmFpbGluZyBkb3QgYmVmb3JlIGNoZWNraW5nIHZhbGlkaXR5ICovXG4gIGlmIChvcHRpb25zLmFsbG93X3RyYWlsaW5nX2RvdCAmJiBzdHJbc3RyLmxlbmd0aCAtIDFdID09PSAnLicpIHtcbiAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKTtcbiAgfVxuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy4nKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChwYXJ0c1tpXS5sZW5ndGggPiA2Mykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAob3B0aW9ucy5yZXF1aXJlX3RsZCkge1xuICAgIHZhciB0bGQgPSBwYXJ0cy5wb3AoKTtcbiAgICBpZiAoIXBhcnRzLmxlbmd0aCB8fCAhL14oW2EtelxcdTAwYTEtXFx1ZmZmZl17Mix9fHhuW2EtejAtOS1dezIsfSkkL2kudGVzdCh0bGQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGRpc2FsbG93IHNwYWNlc1xuICAgIGlmICgvW1xcc1xcdTIwMDItXFx1MjAwQlxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZcXHVEQjQwXFx1REMyMF0vLnRlc3QodGxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBwYXJ0LCBfaSA9IDA7IF9pIDwgcGFydHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgcGFydCA9IHBhcnRzW19pXTtcbiAgICBpZiAob3B0aW9ucy5hbGxvd191bmRlcnNjb3Jlcykge1xuICAgICAgcGFydCA9IHBhcnQucmVwbGFjZSgvXy9nLCAnJyk7XG4gICAgfVxuICAgIGlmICghL15bYS16XFx1MDBhMS1cXHVmZmZmMC05LV0rJC9pLnRlc3QocGFydCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gZGlzYWxsb3cgZnVsbC13aWR0aCBjaGFyc1xuICAgIGlmICgvW1xcdWZmMDEtXFx1ZmY1ZV0vLnRlc3QocGFydCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBhcnRbMF0gPT09ICctJyB8fCBwYXJ0W3BhcnQubGVuZ3RoIC0gMV0gPT09ICctJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRmxvYXQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2FscGhhID0gcmVxdWlyZSgnLi9hbHBoYScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0Zsb2F0KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBmbG9hdCA9IG5ldyBSZWdFeHAoJ14oPzpbLStdKT8oPzpbMC05XSspPyg/OlxcXFwnICsgKG9wdGlvbnMubG9jYWxlID8gX2FscGhhLmRlY2ltYWxbb3B0aW9ucy5sb2NhbGVdIDogJy4nKSArICdbMC05XSopPyg/OltlRV1bXFxcXCtcXFxcLV0/KD86WzAtOV0rKSk/JCcpO1xuICBpZiAoc3RyID09PSAnJyB8fCBzdHIgPT09ICcuJyB8fCBzdHIgPT09ICctJyB8fCBzdHIgPT09ICcrJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsdWUgPSBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKCcsJywgJy4nKSk7XG4gIHJldHVybiBmbG9hdC50ZXN0KHN0cikgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdtaW4nKSB8fCB2YWx1ZSA+PSBvcHRpb25zLm1pbikgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXgnKSB8fCB2YWx1ZSA8PSBvcHRpb25zLm1heCkgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdsdCcpIHx8IHZhbHVlIDwgb3B0aW9ucy5sdCkgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdndCcpIHx8IHZhbHVlID4gb3B0aW9ucy5ndCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmZ1bGxXaWR0aCA9IHVuZGVmaW5lZDtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRnVsbFdpZHRoO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGZ1bGxXaWR0aCA9IGV4cG9ydHMuZnVsbFdpZHRoID0gL1teXFx1MDAyMC1cXHUwMDdFXFx1RkY2MS1cXHVGRjlGXFx1RkZBMC1cXHVGRkRDXFx1RkZFOC1cXHVGRkVFMC05YS16QS1aXS87XG5cbmZ1bmN0aW9uIGlzRnVsbFdpZHRoKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGZ1bGxXaWR0aC50ZXN0KHN0cik7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5oYWxmV2lkdGggPSB1bmRlZmluZWQ7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0hhbGZXaWR0aDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBoYWxmV2lkdGggPSBleHBvcnRzLmhhbGZXaWR0aCA9IC9bXFx1MDAyMC1cXHUwMDdFXFx1RkY2MS1cXHVGRjlGXFx1RkZBMC1cXHVGRkRDXFx1RkZFOC1cXHVGRkVFMC05YS16QS1aXS87XG5cbmZ1bmN0aW9uIGlzSGFsZldpZHRoKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGhhbGZXaWR0aC50ZXN0KHN0cik7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIYXNoO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGxlbmd0aHMgPSB7XG4gIG1kNTogMzIsXG4gIG1kNDogMzIsXG4gIHNoYTE6IDQwLFxuICBzaGEyNTY6IDY0LFxuICBzaGEzODQ6IDk2LFxuICBzaGE1MTI6IDEyOCxcbiAgcmlwZW1kMTI4OiAzMixcbiAgcmlwZW1kMTYwOiA0MCxcbiAgdGlnZXIxMjg6IDMyLFxuICB0aWdlcjE2MDogNDAsXG4gIHRpZ2VyMTkyOiA0OCxcbiAgY3JjMzI6IDgsXG4gIGNyYzMyYjogOFxufTtcblxuZnVuY3Rpb24gaXNIYXNoKHN0ciwgYWxnb3JpdGhtKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgaGFzaCA9IG5ldyBSZWdFeHAoJ15bYS1mMC05XXsnICsgbGVuZ3Roc1thbGdvcml0aG1dICsgJ30kJyk7XG4gIHJldHVybiBoYXNoLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSGV4Q29sb3I7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaGV4Y29sb3IgPSAvXiM/KFswLTlBLUZdezN9fFswLTlBLUZdezZ9KSQvaTtcblxuZnVuY3Rpb24gaXNIZXhDb2xvcihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBoZXhjb2xvci50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0hleGFkZWNpbWFsO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGhleGFkZWNpbWFsID0gL15bMC05QS1GXSskL2k7XG5cbmZ1bmN0aW9uIGlzSGV4YWRlY2ltYWwoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gaGV4YWRlY2ltYWwudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJUDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpcHY0TWF5YmUgPSAvXihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KVxcLihcXGR7MSwzfSkkLztcbnZhciBpcHY2QmxvY2sgPSAvXlswLTlBLUZdezEsNH0kL2k7XG5cbmZ1bmN0aW9uIGlzSVAoc3RyKSB7XG4gIHZhciB2ZXJzaW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJztcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmVyc2lvbiA9IFN0cmluZyh2ZXJzaW9uKTtcbiAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgcmV0dXJuIGlzSVAoc3RyLCA0KSB8fCBpc0lQKHN0ciwgNik7XG4gIH0gZWxzZSBpZiAodmVyc2lvbiA9PT0gJzQnKSB7XG4gICAgaWYgKCFpcHY0TWF5YmUudGVzdChzdHIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgnLicpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFydHNbM10gPD0gMjU1O1xuICB9IGVsc2UgaWYgKHZlcnNpb24gPT09ICc2Jykge1xuICAgIHZhciBibG9ja3MgPSBzdHIuc3BsaXQoJzonKTtcbiAgICB2YXIgZm91bmRPbWlzc2lvbkJsb2NrID0gZmFsc2U7IC8vIG1hcmtlciB0byBpbmRpY2F0ZSA6OlxuXG4gICAgLy8gQXQgbGVhc3Qgc29tZSBPUyBhY2NlcHQgdGhlIGxhc3QgMzIgYml0cyBvZiBhbiBJUHY2IGFkZHJlc3NcbiAgICAvLyAoaS5lLiAyIG9mIHRoZSBibG9ja3MpIGluIElQdjQgbm90YXRpb24sIGFuZCBSRkMgMzQ5MyBzYXlzXG4gICAgLy8gdGhhdCAnOjpmZmZmOmEuYi5jLmQnIGlzIHZhbGlkIGZvciBJUHY0LW1hcHBlZCBJUHY2IGFkZHJlc3NlcyxcbiAgICAvLyBhbmQgJzo6YS5iLmMuZCcgaXMgZGVwcmVjYXRlZCwgYnV0IGFsc28gdmFsaWQuXG4gICAgdmFyIGZvdW5kSVB2NFRyYW5zaXRpb25CbG9jayA9IGlzSVAoYmxvY2tzW2Jsb2Nrcy5sZW5ndGggLSAxXSwgNCk7XG4gICAgdmFyIGV4cGVjdGVkTnVtYmVyT2ZCbG9ja3MgPSBmb3VuZElQdjRUcmFuc2l0aW9uQmxvY2sgPyA3IDogODtcblxuICAgIGlmIChibG9ja3MubGVuZ3RoID4gZXhwZWN0ZWROdW1iZXJPZkJsb2Nrcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBpbml0aWFsIG9yIGZpbmFsIDo6XG4gICAgaWYgKHN0ciA9PT0gJzo6Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChzdHIuc3Vic3RyKDAsIDIpID09PSAnOjonKSB7XG4gICAgICBibG9ja3Muc2hpZnQoKTtcbiAgICAgIGJsb2Nrcy5zaGlmdCgpO1xuICAgICAgZm91bmRPbWlzc2lvbkJsb2NrID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0ci5zdWJzdHIoc3RyLmxlbmd0aCAtIDIpID09PSAnOjonKSB7XG4gICAgICBibG9ja3MucG9wKCk7XG4gICAgICBibG9ja3MucG9wKCk7XG4gICAgICBmb3VuZE9taXNzaW9uQmxvY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgKytpKSB7XG4gICAgICAvLyB0ZXN0IGZvciBhIDo6IHdoaWNoIGNhbiBub3QgYmUgYXQgdGhlIHN0cmluZyBzdGFydC9lbmRcbiAgICAgIC8vIHNpbmNlIHRob3NlIGNhc2VzIGhhdmUgYmVlbiBoYW5kbGVkIGFib3ZlXG4gICAgICBpZiAoYmxvY2tzW2ldID09PSAnJyAmJiBpID4gMCAmJiBpIDwgYmxvY2tzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKGZvdW5kT21pc3Npb25CbG9jaykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbXVsdGlwbGUgOjogaW4gYWRkcmVzc1xuICAgICAgICB9XG4gICAgICAgIGZvdW5kT21pc3Npb25CbG9jayA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kSVB2NFRyYW5zaXRpb25CbG9jayAmJiBpID09PSBibG9ja3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAvLyBpdCBoYXMgYmVlbiBjaGVja2VkIGJlZm9yZSB0aGF0IHRoZSBsYXN0XG4gICAgICAgIC8vIGJsb2NrIGlzIGEgdmFsaWQgSVB2NCBhZGRyZXNzXG4gICAgICB9IGVsc2UgaWYgKCFpcHY2QmxvY2sudGVzdChibG9ja3NbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZvdW5kT21pc3Npb25CbG9jaykge1xuICAgICAgcmV0dXJuIGJsb2Nrcy5sZW5ndGggPj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIGJsb2Nrcy5sZW5ndGggPT09IGV4cGVjdGVkTnVtYmVyT2ZCbG9ja3M7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJUFJhbmdlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF9pc0lQID0gcmVxdWlyZSgnLi9pc0lQJyk7XG5cbnZhciBfaXNJUDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lQKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHN1Ym5ldE1heWJlID0gL15cXGR7MSwyfSQvO1xuXG5mdW5jdGlvbiBpc0lQUmFuZ2Uoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy8nKTtcblxuICAvLyBwYXJ0c1swXSAtPiBpcCwgcGFydHNbMV0gLT4gc3VibmV0XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIXN1Ym5ldE1heWJlLnRlc3QocGFydHNbMV0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRGlzYWxsb3cgcHJlY2VkaW5nIDAgaS5lLiAwMSwgMDIsIC4uLlxuICBpZiAocGFydHNbMV0ubGVuZ3RoID4gMSAmJiBwYXJ0c1sxXS5zdGFydHNXaXRoKCcwJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKDAsIF9pc0lQMi5kZWZhdWx0KShwYXJ0c1swXSwgNCkgJiYgcGFydHNbMV0gPD0gMzIgJiYgcGFydHNbMV0gPj0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNCTjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpc2JuMTBNYXliZSA9IC9eKD86WzAtOV17OX1YfFswLTldezEwfSkkLztcbnZhciBpc2JuMTNNYXliZSA9IC9eKD86WzAtOV17MTN9KSQvO1xudmFyIGZhY3RvciA9IFsxLCAzXTtcblxuZnVuY3Rpb24gaXNJU0JOKHN0cikge1xuICB2YXIgdmVyc2lvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZlcnNpb24gPSBTdHJpbmcodmVyc2lvbik7XG4gIGlmICghdmVyc2lvbikge1xuICAgIHJldHVybiBpc0lTQk4oc3RyLCAxMCkgfHwgaXNJU0JOKHN0ciwgMTMpO1xuICB9XG4gIHZhciBzYW5pdGl6ZWQgPSBzdHIucmVwbGFjZSgvW1xccy1dKy9nLCAnJyk7XG4gIHZhciBjaGVja3N1bSA9IDA7XG4gIHZhciBpID0gdm9pZCAwO1xuICBpZiAodmVyc2lvbiA9PT0gJzEwJykge1xuICAgIGlmICghaXNibjEwTWF5YmUudGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCA5OyBpKyspIHtcbiAgICAgIGNoZWNrc3VtICs9IChpICsgMSkgKiBzYW5pdGl6ZWQuY2hhckF0KGkpO1xuICAgIH1cbiAgICBpZiAoc2FuaXRpemVkLmNoYXJBdCg5KSA9PT0gJ1gnKSB7XG4gICAgICBjaGVja3N1bSArPSAxMCAqIDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGVja3N1bSArPSAxMCAqIHNhbml0aXplZC5jaGFyQXQoOSk7XG4gICAgfVxuICAgIGlmIChjaGVja3N1bSAlIDExID09PSAwKSB7XG4gICAgICByZXR1cm4gISFzYW5pdGl6ZWQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKHZlcnNpb24gPT09ICcxMycpIHtcbiAgICBpZiAoIWlzYm4xM01heWJlLnRlc3Qoc2FuaXRpemVkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgY2hlY2tzdW0gKz0gZmFjdG9yW2kgJSAyXSAqIHNhbml0aXplZC5jaGFyQXQoaSk7XG4gICAgfVxuICAgIGlmIChzYW5pdGl6ZWQuY2hhckF0KDEyKSAtICgxMCAtIGNoZWNrc3VtICUgMTApICUgMTAgPT09IDApIHtcbiAgICAgIHJldHVybiAhIXNhbml0aXplZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU0lOO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGlzaW4gPSAvXltBLVpdezJ9WzAtOUEtWl17OX1bMC05XSQvO1xuXG5mdW5jdGlvbiBpc0lTSU4oc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAoIWlzaW4udGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGNoZWNrc3VtU3RyID0gc3RyLnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uIChjaGFyYWN0ZXIpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoY2hhcmFjdGVyLCAzNik7XG4gIH0pO1xuXG4gIHZhciBzdW0gPSAwO1xuICB2YXIgZGlnaXQgPSB2b2lkIDA7XG4gIHZhciB0bXBOdW0gPSB2b2lkIDA7XG4gIHZhciBzaG91bGREb3VibGUgPSB0cnVlO1xuICBmb3IgKHZhciBpID0gY2hlY2tzdW1TdHIubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcbiAgICBkaWdpdCA9IGNoZWNrc3VtU3RyLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgdG1wTnVtID0gcGFyc2VJbnQoZGlnaXQsIDEwKTtcbiAgICBpZiAoc2hvdWxkRG91YmxlKSB7XG4gICAgICB0bXBOdW0gKj0gMjtcbiAgICAgIGlmICh0bXBOdW0gPj0gMTApIHtcbiAgICAgICAgc3VtICs9IHRtcE51bSArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdW0gKz0gdG1wTnVtO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdW0gKz0gdG1wTnVtO1xuICAgIH1cbiAgICBzaG91bGREb3VibGUgPSAhc2hvdWxkRG91YmxlO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlSW50KHN0ci5zdWJzdHIoc3RyLmxlbmd0aCAtIDEpLCAxMCkgPT09ICgxMDAwMCAtIHN1bSkgJSAxMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNPMzE2NjFBbHBoYTI7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2luY2x1ZGVzID0gcmVxdWlyZSgnLi91dGlsL2luY2x1ZGVzJyk7XG5cbnZhciBfaW5jbHVkZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5jbHVkZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vLyBmcm9tIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT18zMTY2LTFfYWxwaGEtMlxudmFyIHZhbGlkSVNPMzE2NjFBbHBoYTJDb3VudHJpZXNDb2RlcyA9IFsnQUQnLCAnQUUnLCAnQUYnLCAnQUcnLCAnQUknLCAnQUwnLCAnQU0nLCAnQU8nLCAnQVEnLCAnQVInLCAnQVMnLCAnQVQnLCAnQVUnLCAnQVcnLCAnQVgnLCAnQVonLCAnQkEnLCAnQkInLCAnQkQnLCAnQkUnLCAnQkYnLCAnQkcnLCAnQkgnLCAnQkknLCAnQkonLCAnQkwnLCAnQk0nLCAnQk4nLCAnQk8nLCAnQlEnLCAnQlInLCAnQlMnLCAnQlQnLCAnQlYnLCAnQlcnLCAnQlknLCAnQlonLCAnQ0EnLCAnQ0MnLCAnQ0QnLCAnQ0YnLCAnQ0cnLCAnQ0gnLCAnQ0knLCAnQ0snLCAnQ0wnLCAnQ00nLCAnQ04nLCAnQ08nLCAnQ1InLCAnQ1UnLCAnQ1YnLCAnQ1cnLCAnQ1gnLCAnQ1knLCAnQ1onLCAnREUnLCAnREonLCAnREsnLCAnRE0nLCAnRE8nLCAnRFonLCAnRUMnLCAnRUUnLCAnRUcnLCAnRUgnLCAnRVInLCAnRVMnLCAnRVQnLCAnRkknLCAnRkonLCAnRksnLCAnRk0nLCAnRk8nLCAnRlInLCAnR0EnLCAnR0InLCAnR0QnLCAnR0UnLCAnR0YnLCAnR0cnLCAnR0gnLCAnR0knLCAnR0wnLCAnR00nLCAnR04nLCAnR1AnLCAnR1EnLCAnR1InLCAnR1MnLCAnR1QnLCAnR1UnLCAnR1cnLCAnR1knLCAnSEsnLCAnSE0nLCAnSE4nLCAnSFInLCAnSFQnLCAnSFUnLCAnSUQnLCAnSUUnLCAnSUwnLCAnSU0nLCAnSU4nLCAnSU8nLCAnSVEnLCAnSVInLCAnSVMnLCAnSVQnLCAnSkUnLCAnSk0nLCAnSk8nLCAnSlAnLCAnS0UnLCAnS0cnLCAnS0gnLCAnS0knLCAnS00nLCAnS04nLCAnS1AnLCAnS1InLCAnS1cnLCAnS1knLCAnS1onLCAnTEEnLCAnTEInLCAnTEMnLCAnTEknLCAnTEsnLCAnTFInLCAnTFMnLCAnTFQnLCAnTFUnLCAnTFYnLCAnTFknLCAnTUEnLCAnTUMnLCAnTUQnLCAnTUUnLCAnTUYnLCAnTUcnLCAnTUgnLCAnTUsnLCAnTUwnLCAnTU0nLCAnTU4nLCAnTU8nLCAnTVAnLCAnTVEnLCAnTVInLCAnTVMnLCAnTVQnLCAnTVUnLCAnTVYnLCAnTVcnLCAnTVgnLCAnTVknLCAnTVonLCAnTkEnLCAnTkMnLCAnTkUnLCAnTkYnLCAnTkcnLCAnTkknLCAnTkwnLCAnTk8nLCAnTlAnLCAnTlInLCAnTlUnLCAnTlonLCAnT00nLCAnUEEnLCAnUEUnLCAnUEYnLCAnUEcnLCAnUEgnLCAnUEsnLCAnUEwnLCAnUE0nLCAnUE4nLCAnUFInLCAnUFMnLCAnUFQnLCAnUFcnLCAnUFknLCAnUUEnLCAnUkUnLCAnUk8nLCAnUlMnLCAnUlUnLCAnUlcnLCAnU0EnLCAnU0InLCAnU0MnLCAnU0QnLCAnU0UnLCAnU0cnLCAnU0gnLCAnU0knLCAnU0onLCAnU0snLCAnU0wnLCAnU00nLCAnU04nLCAnU08nLCAnU1InLCAnU1MnLCAnU1QnLCAnU1YnLCAnU1gnLCAnU1knLCAnU1onLCAnVEMnLCAnVEQnLCAnVEYnLCAnVEcnLCAnVEgnLCAnVEonLCAnVEsnLCAnVEwnLCAnVE0nLCAnVE4nLCAnVE8nLCAnVFInLCAnVFQnLCAnVFYnLCAnVFcnLCAnVFonLCAnVUEnLCAnVUcnLCAnVU0nLCAnVVMnLCAnVVknLCAnVVonLCAnVkEnLCAnVkMnLCAnVkUnLCAnVkcnLCAnVkknLCAnVk4nLCAnVlUnLCAnV0YnLCAnV1MnLCAnWUUnLCAnWVQnLCAnWkEnLCAnWk0nLCAnWlcnXTtcblxuZnVuY3Rpb24gaXNJU08zMTY2MUFscGhhMihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiAoMCwgX2luY2x1ZGVzMi5kZWZhdWx0KSh2YWxpZElTTzMxNjYxQWxwaGEyQ291bnRyaWVzQ29kZXMsIHN0ci50b1VwcGVyQ2FzZSgpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNPMzE2NjFBbHBoYTM7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2luY2x1ZGVzID0gcmVxdWlyZSgnLi91dGlsL2luY2x1ZGVzJyk7XG5cbnZhciBfaW5jbHVkZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5jbHVkZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vLyBmcm9tIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT18zMTY2LTFfYWxwaGEtM1xudmFyIHZhbGlkSVNPMzE2NjFBbHBoYTNDb3VudHJpZXNDb2RlcyA9IFsnQUZHJywgJ0FMQScsICdBTEInLCAnRFpBJywgJ0FTTScsICdBTkQnLCAnQUdPJywgJ0FJQScsICdBVEEnLCAnQVRHJywgJ0FSRycsICdBUk0nLCAnQUJXJywgJ0FVUycsICdBVVQnLCAnQVpFJywgJ0JIUycsICdCSFInLCAnQkdEJywgJ0JSQicsICdCTFInLCAnQkVMJywgJ0JMWicsICdCRU4nLCAnQk1VJywgJ0JUTicsICdCT0wnLCAnQkVTJywgJ0JJSCcsICdCV0EnLCAnQlZUJywgJ0JSQScsICdJT1QnLCAnQlJOJywgJ0JHUicsICdCRkEnLCAnQkRJJywgJ0tITScsICdDTVInLCAnQ0FOJywgJ0NQVicsICdDWU0nLCAnQ0FGJywgJ1RDRCcsICdDSEwnLCAnQ0hOJywgJ0NYUicsICdDQ0snLCAnQ09MJywgJ0NPTScsICdDT0cnLCAnQ09EJywgJ0NPSycsICdDUkknLCAnQ0lWJywgJ0hSVicsICdDVUInLCAnQ1VXJywgJ0NZUCcsICdDWkUnLCAnRE5LJywgJ0RKSScsICdETUEnLCAnRE9NJywgJ0VDVScsICdFR1knLCAnU0xWJywgJ0dOUScsICdFUkknLCAnRVNUJywgJ0VUSCcsICdGTEsnLCAnRlJPJywgJ0ZKSScsICdGSU4nLCAnRlJBJywgJ0dVRicsICdQWUYnLCAnQVRGJywgJ0dBQicsICdHTUInLCAnR0VPJywgJ0RFVScsICdHSEEnLCAnR0lCJywgJ0dSQycsICdHUkwnLCAnR1JEJywgJ0dMUCcsICdHVU0nLCAnR1RNJywgJ0dHWScsICdHSU4nLCAnR05CJywgJ0dVWScsICdIVEknLCAnSE1EJywgJ1ZBVCcsICdITkQnLCAnSEtHJywgJ0hVTicsICdJU0wnLCAnSU5EJywgJ0lETicsICdJUk4nLCAnSVJRJywgJ0lSTCcsICdJTU4nLCAnSVNSJywgJ0lUQScsICdKQU0nLCAnSlBOJywgJ0pFWScsICdKT1InLCAnS0FaJywgJ0tFTicsICdLSVInLCAnUFJLJywgJ0tPUicsICdLV1QnLCAnS0daJywgJ0xBTycsICdMVkEnLCAnTEJOJywgJ0xTTycsICdMQlInLCAnTEJZJywgJ0xJRScsICdMVFUnLCAnTFVYJywgJ01BQycsICdNS0QnLCAnTURHJywgJ01XSScsICdNWVMnLCAnTURWJywgJ01MSScsICdNTFQnLCAnTUhMJywgJ01UUScsICdNUlQnLCAnTVVTJywgJ01ZVCcsICdNRVgnLCAnRlNNJywgJ01EQScsICdNQ08nLCAnTU5HJywgJ01ORScsICdNU1InLCAnTUFSJywgJ01PWicsICdNTVInLCAnTkFNJywgJ05SVScsICdOUEwnLCAnTkxEJywgJ05DTCcsICdOWkwnLCAnTklDJywgJ05FUicsICdOR0EnLCAnTklVJywgJ05GSycsICdNTlAnLCAnTk9SJywgJ09NTicsICdQQUsnLCAnUExXJywgJ1BTRScsICdQQU4nLCAnUE5HJywgJ1BSWScsICdQRVInLCAnUEhMJywgJ1BDTicsICdQT0wnLCAnUFJUJywgJ1BSSScsICdRQVQnLCAnUkVVJywgJ1JPVScsICdSVVMnLCAnUldBJywgJ0JMTScsICdTSE4nLCAnS05BJywgJ0xDQScsICdNQUYnLCAnU1BNJywgJ1ZDVCcsICdXU00nLCAnU01SJywgJ1NUUCcsICdTQVUnLCAnU0VOJywgJ1NSQicsICdTWUMnLCAnU0xFJywgJ1NHUCcsICdTWE0nLCAnU1ZLJywgJ1NWTicsICdTTEInLCAnU09NJywgJ1pBRicsICdTR1MnLCAnU1NEJywgJ0VTUCcsICdMS0EnLCAnU0ROJywgJ1NVUicsICdTSk0nLCAnU1daJywgJ1NXRScsICdDSEUnLCAnU1lSJywgJ1RXTicsICdUSksnLCAnVFpBJywgJ1RIQScsICdUTFMnLCAnVEdPJywgJ1RLTCcsICdUT04nLCAnVFRPJywgJ1RVTicsICdUVVInLCAnVEtNJywgJ1RDQScsICdUVVYnLCAnVUdBJywgJ1VLUicsICdBUkUnLCAnR0JSJywgJ1VTQScsICdVTUknLCAnVVJZJywgJ1VaQicsICdWVVQnLCAnVkVOJywgJ1ZOTScsICdWR0InLCAnVklSJywgJ1dMRicsICdFU0gnLCAnWUVNJywgJ1pNQicsICdaV0UnXTtcblxuZnVuY3Rpb24gaXNJU08zMTY2MUFscGhhMyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiAoMCwgX2luY2x1ZGVzMi5kZWZhdWx0KSh2YWxpZElTTzMxNjYxQWxwaGEzQ291bnRyaWVzQ29kZXMsIHN0ci50b1VwcGVyQ2FzZSgpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNPODYwMTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8vIGZyb20gaHR0cDovL2dvby5nbC8wZWpISFdcbnZhciBpc284NjAxID0gL14oW1xcKy1dP1xcZHs0fSg/IVxcZHsyfVxcYikpKCgtPykoKDBbMS05XXwxWzAtMl0pKFxcMyhbMTJdXFxkfDBbMS05XXwzWzAxXSkpP3xXKFswLTRdXFxkfDVbMC0yXSkoLT9bMS03XSk/fCgwMFsxLTldfDBbMS05XVxcZHxbMTJdXFxkezJ9fDMoWzAtNV1cXGR8NlsxLTZdKSkpKFtUXFxzXSgoKFswMV1cXGR8MlswLTNdKSgoOj8pWzAtNV1cXGQpP3wyNDo/MDApKFtcXC4sXVxcZCsoPyE6KSk/KT8oXFwxN1swLTVdXFxkKFtcXC4sXVxcZCspPyk/KFt6Wl18KFtcXCstXSkoWzAxXVxcZHwyWzAtM10pOj8oWzAtNV1cXGQpPyk/KT8pPyQvO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cbmZ1bmN0aW9uIGlzSVNPODYwMShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBpc284NjAxLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNSQztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8vIHNlZSBodHRwOi8vaXNyYy5pZnBpLm9yZy9lbi9pc3JjLXN0YW5kYXJkL2NvZGUtc3ludGF4XG52YXIgaXNyYyA9IC9eW0EtWl17Mn1bMC05QS1aXXszfVxcZHsyfVxcZHs1fSQvO1xuXG5mdW5jdGlvbiBpc0lTUkMoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gaXNyYy50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lTU047XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaXNzbiA9ICdeXFxcXGR7NH0tP1xcXFxkezN9W1xcXFxkWF0kJztcblxuZnVuY3Rpb24gaXNJU1NOKHN0cikge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciB0ZXN0SXNzbiA9IGlzc247XG4gIHRlc3RJc3NuID0gb3B0aW9ucy5yZXF1aXJlX2h5cGhlbiA/IHRlc3RJc3NuLnJlcGxhY2UoJz8nLCAnJykgOiB0ZXN0SXNzbjtcbiAgdGVzdElzc24gPSBvcHRpb25zLmNhc2Vfc2Vuc2l0aXZlID8gbmV3IFJlZ0V4cCh0ZXN0SXNzbikgOiBuZXcgUmVnRXhwKHRlc3RJc3NuLCAnaScpO1xuICBpZiAoIXRlc3RJc3NuLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZGlnaXRzID0gc3RyLnJlcGxhY2UoJy0nLCAnJykudG9VcHBlckNhc2UoKTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGlnaXQgPSBkaWdpdHNbaV07XG4gICAgY2hlY2tzdW0gKz0gKGRpZ2l0ID09PSAnWCcgPyAxMCA6ICtkaWdpdCkgKiAoOCAtIGkpO1xuICB9XG4gIHJldHVybiBjaGVja3N1bSAlIDExID09PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGlzSW47XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX3RvU3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL3RvU3RyaW5nJyk7XG5cbnZhciBfdG9TdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9TdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0luKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGkgPSB2b2lkIDA7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob3B0aW9ucykgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICB2YXIgYXJyYXkgPSBbXTtcbiAgICBmb3IgKGkgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgaSkpIHtcbiAgICAgICAgYXJyYXlbaV0gPSAoMCwgX3RvU3RyaW5nMi5kZWZhdWx0KShvcHRpb25zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5LmluZGV4T2Yoc3RyKSA+PSAwO1xuICB9IGVsc2UgaWYgKCh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yob3B0aW9ucykpID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvcHRpb25zLmhhc093blByb3BlcnR5KHN0cik7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuaW5kZXhPZihzdHIpID49IDA7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJbnQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaW50ID0gL14oPzpbLStdPyg/OjB8WzEtOV1bMC05XSopKSQvO1xudmFyIGludExlYWRpbmdaZXJvZXMgPSAvXlstK10/WzAtOV0rJC87XG5cbmZ1bmN0aW9uIGlzSW50KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gR2V0IHRoZSByZWdleCB0byB1c2UgZm9yIHRlc3RpbmcsIGJhc2VkIG9uIHdoZXRoZXJcbiAgLy8gbGVhZGluZyB6ZXJvZXMgYXJlIGFsbG93ZWQgb3Igbm90LlxuICB2YXIgcmVnZXggPSBvcHRpb25zLmhhc093blByb3BlcnR5KCdhbGxvd19sZWFkaW5nX3plcm9lcycpICYmICFvcHRpb25zLmFsbG93X2xlYWRpbmdfemVyb2VzID8gaW50IDogaW50TGVhZGluZ1plcm9lcztcblxuICAvLyBDaGVjayBtaW4vbWF4L2x0L2d0XG4gIHZhciBtaW5DaGVja1Bhc3NlZCA9ICFvcHRpb25zLmhhc093blByb3BlcnR5KCdtaW4nKSB8fCBzdHIgPj0gb3B0aW9ucy5taW47XG4gIHZhciBtYXhDaGVja1Bhc3NlZCA9ICFvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXgnKSB8fCBzdHIgPD0gb3B0aW9ucy5tYXg7XG4gIHZhciBsdENoZWNrUGFzc2VkID0gIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2x0JykgfHwgc3RyIDwgb3B0aW9ucy5sdDtcbiAgdmFyIGd0Q2hlY2tQYXNzZWQgPSAhb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnZ3QnKSB8fCBzdHIgPiBvcHRpb25zLmd0O1xuXG4gIHJldHVybiByZWdleC50ZXN0KHN0cikgJiYgbWluQ2hlY2tQYXNzZWQgJiYgbWF4Q2hlY2tQYXNzZWQgJiYgbHRDaGVja1Bhc3NlZCAmJiBndENoZWNrUGFzc2VkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGlzSlNPTjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzSlNPTihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHRyeSB7XG4gICAgdmFyIG9iaiA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICByZXR1cm4gISFvYmogJiYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG9iaikpID09PSAnb2JqZWN0JztcbiAgfSBjYXRjaCAoZSkgey8qIGlnbm9yZSAqL31cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNKV1Q7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgand0ID0gL15bYS16QS1aMC05XFwtX10rXFwuW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSskLztcblxuZnVuY3Rpb24gaXNKV1Qoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gand0LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKCFzdHIuaW5jbHVkZXMoJywnKSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgcGFpciA9IHN0ci5zcGxpdCgnLCcpO1xuICByZXR1cm4gbGF0LnRlc3QocGFpclswXSkgJiYgbG9uZy50ZXN0KHBhaXJbMV0pO1xufTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBsYXQgPSAvXlxcKD9bKy1dPyg5MChcXC4wKyk/fFsxLThdP1xcZChcXC5cXGQrKT8pJC87XG52YXIgbG9uZyA9IC9eXFxzP1srLV0/KDE4MChcXC4wKyk/fDFbMC03XVxcZChcXC5cXGQrKT98XFxkezEsMn0oXFwuXFxkKyk/KVxcKT8kLztcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGlzTGVuZ3RoO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLXJlc3QtcGFyYW1zICovXG5mdW5jdGlvbiBpc0xlbmd0aChzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBtaW4gPSB2b2lkIDA7XG4gIHZhciBtYXggPSB2b2lkIDA7XG4gIGlmICgodHlwZW9mIG9wdGlvbnMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG9wdGlvbnMpKSA9PT0gJ29iamVjdCcpIHtcbiAgICBtaW4gPSBvcHRpb25zLm1pbiB8fCAwO1xuICAgIG1heCA9IG9wdGlvbnMubWF4O1xuICB9IGVsc2Uge1xuICAgIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBpc0xlbmd0aChzdHIsIG1pbiBbLCBtYXhdKVxuICAgIG1pbiA9IGFyZ3VtZW50c1sxXTtcbiAgICBtYXggPSBhcmd1bWVudHNbMl07XG4gIH1cbiAgdmFyIHN1cnJvZ2F0ZVBhaXJzID0gc3RyLm1hdGNoKC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdL2cpIHx8IFtdO1xuICB2YXIgbGVuID0gc3RyLmxlbmd0aCAtIHN1cnJvZ2F0ZVBhaXJzLmxlbmd0aDtcbiAgcmV0dXJuIGxlbiA+PSBtaW4gJiYgKHR5cGVvZiBtYXggPT09ICd1bmRlZmluZWQnIHx8IGxlbiA8PSBtYXgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNMb3dlcmNhc2U7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0xvd2VyY2FzZShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIgPT09IHN0ci50b0xvd2VyQ2FzZSgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNQUNBZGRyZXNzO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIG1hY0FkZHJlc3MgPSAvXihbMC05YS1mQS1GXVswLTlhLWZBLUZdOil7NX0oWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkkLztcbnZhciBtYWNBZGRyZXNzTm9Db2xvbnMgPSAvXihbMC05YS1mQS1GXSl7MTJ9JC87XG5cbmZ1bmN0aW9uIGlzTUFDQWRkcmVzcyhzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMubm9fY29sb25zKSB7XG4gICAgcmV0dXJuIG1hY0FkZHJlc3NOb0NvbG9ucy50ZXN0KHN0cik7XG4gIH1cbiAgcmV0dXJuIG1hY0FkZHJlc3MudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNRDU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgbWQ1ID0gL15bYS1mMC05XXszMn0kLztcblxuZnVuY3Rpb24gaXNNRDUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gbWQ1LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTWFnbmV0VVJJO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIG1hZ25ldFVSSSA9IC9ebWFnbmV0OlxcP3h0PXVybjpbYS16MC05XSs6W2EtejAtOV17MzIsNDB9JmRuPS4rJnRyPS4rJC9pO1xuXG5mdW5jdGlvbiBpc01hZ25ldFVSSSh1cmwpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHVybCk7XG4gIHJldHVybiBtYWduZXRVUkkudGVzdCh1cmwudHJpbSgpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTWltZVR5cGU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKlxuICBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIHN0cmluZyBtYXRjaGVzIHRvIGEgY29ycmVjdCBNZWRpYSB0eXBlIGZvcm1hdCAoTUlNRSB0eXBlKVxuXG4gIFRoaXMgZnVuY3Rpb24gb25seSBjaGVja3MgaXMgdGhlIHN0cmluZyBmb3JtYXQgZm9sbG93cyB0aGVcbiAgZXRhYmxpc2hlZCBydWxlcyBieSB0aGUgYWNjb3JkaW5nIFJGQyBzcGVjaWZpY2F0aW9ucy5cbiAgVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyAnY2hhcnNldCcgaW4gdGV4dHVhbCBtZWRpYSB0eXBlc1xuICAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY2NTcpLlxuXG4gIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgYWdhaW5zdCBhbGwgdGhlIG1lZGlhIHR5cGVzIGxpc3RlZFxuICBieSB0aGUgSUFOQSAoaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlwZXMvbWVkaWEtdHlwZXMueGh0bWwpXG4gIGJlY2F1c2Ugb2YgbGlnaHRuZXNzIHB1cnBvc2VzIDogaXQgd291bGQgcmVxdWlyZSB0byBpbmNsdWRlXG4gIGFsbCB0aGVzZSBNSU1FIHR5cGVzIGluIHRoaXMgbGlicmFpcnksIHdoaWNoIHdvdWxkIHdlaWdoIGl0XG4gIHNpZ25pZmljYW50bHkuIFRoaXMga2luZCBvZiBlZmZvcnQgbWF5YmUgaXMgbm90IHdvcnRoIGZvciB0aGUgdXNlIHRoYXRcbiAgdGhpcyBmdW5jdGlvbiBoYXMgaW4gdGhpcyBlbnRpcmUgbGlicmFpcnkuXG5cbiAgTW9yZSBpbmZvcm1hdGlvbnMgaW4gdGhlIFJGQyBzcGVjaWZpY2F0aW9ucyA6XG4gIC0gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDVcbiAgLSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NlxuICAtIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tMy4xLjEuMVxuICAtIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tMy4xLjEuNVxuKi9cblxuLy8gTWF0Y2ggc2ltcGxlIE1JTUUgdHlwZXNcbi8vIE5CIDpcbi8vICAgU3VidHlwZSBsZW5ndGggbXVzdCBub3QgZXhjZWVkIDEwMCBjaGFyYWN0ZXJzLlxuLy8gICBUaGlzIHJ1bGUgZG9lcyBub3QgY29tcGx5IHRvIHRoZSBSRkMgc3BlY3MgKHdoYXQgaXMgdGhlIG1heCBsZW5ndGggPykuXG52YXIgbWltZVR5cGVTaW1wbGUgPSAvXihhcHBsaWNhdGlvbnxhdWRpb3xmb250fGltYWdlfG1lc3NhZ2V8bW9kZWx8bXVsdGlwYXJ0fHRleHR8dmlkZW8pXFwvW2EtekEtWjAtOVxcLlxcLVxcK117MSwxMDB9JC9pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1sZW5cblxuLy8gSGFuZGxlIFwiY2hhcnNldFwiIGluIFwidGV4dC8qXCJcbnZhciBtaW1lVHlwZVRleHQgPSAvXnRleHRcXC9bYS16QS1aMC05XFwuXFwtXFwrXXsxLDEwMH07XFxzP2NoYXJzZXQ9KFwiW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MCw3MH1cInxbYS16QS1aMC05XFwuXFwtXFwrXXswLDcwfSkoXFxzP1xcKFthLXpBLVowLTlcXC5cXC1cXCtcXHNdezEsMjB9XFwpKT8kL2k7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuXG4vLyBIYW5kbGUgXCJib3VuZGFyeVwiIGluIFwibXVsdGlwYXJ0LypcIlxudmFyIG1pbWVUeXBlTXVsdGlwYXJ0ID0gL15tdWx0aXBhcnRcXC9bYS16QS1aMC05XFwuXFwtXFwrXXsxLDEwMH0oO1xccz8oYm91bmRhcnl8Y2hhcnNldCk9KFwiW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MCw3MH1cInxbYS16QS1aMC05XFwuXFwtXFwrXXswLDcwfSkoXFxzP1xcKFthLXpBLVowLTlcXC5cXC1cXCtcXHNdezEsMjB9XFwpKT8pezAsMn0kL2k7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuXG5mdW5jdGlvbiBpc01pbWVUeXBlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIG1pbWVUeXBlU2ltcGxlLnRlc3Qoc3RyKSB8fCBtaW1lVHlwZVRleHQudGVzdChzdHIpIHx8IG1pbWVUeXBlTXVsdGlwYXJ0LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTW9iaWxlUGhvbmU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgcGhvbmVzID0ge1xuICAnYXItQUUnOiAvXigoXFwrPzk3MSl8MCk/NVswMjQ1NjhdXFxkezd9JC8sXG4gICdhci1EWic6IC9eKFxcKz8yMTN8MCkoNXw2fDcpXFxkezh9JC8sXG4gICdhci1FRyc6IC9eKChcXCs/MjApfDApPzFbMDEyXVxcZHs4fSQvLFxuICAnYXItSVEnOiAvXihcXCs/OTY0fDApPzdbMC05XVxcZHs4fSQvLFxuICAnYXItSk8nOiAvXihcXCs/OTYyfDApPzdbNzg5XVxcZHs3fSQvLFxuICAnYXItS1cnOiAvXihcXCs/OTY1KVs1NjldXFxkezd9JC8sXG4gICdhci1TQSc6IC9eKCE/KFxcKz85NjYpfDApPzVcXGR7OH0kLyxcbiAgJ2FyLVNZJzogL14oIT8oXFwrPzk2Myl8MCk/OVxcZHs4fSQvLFxuICAnYXItVE4nOiAvXihcXCs/MjE2KT9bMjQ1OV1cXGR7N30kLyxcbiAgJ2JlLUJZJzogL14oXFwrPzM3NSk/KDI0fDI1fDI5fDMzfDQ0KVxcZHs3fSQvLFxuICAnYmctQkcnOiAvXihcXCs/MzU5fDApPzhbNzg5XVxcZHs3fSQvLFxuICAnYm4tQkQnOiAvXFwrPyg4OCk/MD8xWzE1Njc4OV1bMC05XXs4fVxcYi8sXG4gICdjcy1DWic6IC9eKFxcKz80MjApPyA/WzEtOV1bMC05XXsyfSA/WzAtOV17M30gP1swLTldezN9JC8sXG4gICdkYS1ESyc6IC9eKFxcKz80NSk/XFxzP1xcZHsyfVxccz9cXGR7Mn1cXHM/XFxkezJ9XFxzP1xcZHsyfSQvLFxuICAnZGUtREUnOiAvXihcXCs/NDlbIFxcLlxcLV0/KT8oW1xcKF17MX1bMC05XXsxLDZ9W1xcKV0pPyhbMC05IFxcLlxcLVxcL117MywyMH0pKCh4fGV4dHxleHRlbnNpb24pWyBdP1swLTldezEsNH0pPyQvLFxuICAnZWwtR1InOiAvXihcXCs/MzB8MCk/KDY5XFxkezh9KSQvLFxuICAnZW4tQVUnOiAvXihcXCs/NjF8MCk0XFxkezh9JC8sXG4gICdlbi1HQic6IC9eKFxcKz80NHwwKTdcXGR7OX0kLyxcbiAgJ2VuLUhLJzogL14oXFwrPzg1MlxcLT8pP1s0NTY3ODldXFxkezN9XFwtP1xcZHs0fSQvLFxuICAnZW4tSU4nOiAvXihcXCs/OTF8MCk/WzY3ODldXFxkezl9JC8sXG4gICdlbi1LRSc6IC9eKFxcKz8yNTR8MCk/WzddXFxkezh9JC8sXG4gICdlbi1ORyc6IC9eKFxcKz8yMzR8MCk/Wzc4OV1cXGR7OX0kLyxcbiAgJ2VuLU5aJzogL14oXFwrPzY0fDApWzI4XVxcZHs3LDl9JC8sXG4gICdlbi1QSyc6IC9eKChcXCs5Mil8KDAwOTIpKS17MCwxfVxcZHszfS17MCwxfVxcZHs3fSR8XlxcZHsxMX0kfF5cXGR7NH0tXFxkezd9JC8sXG4gICdlbi1SVyc6IC9eKFxcKz8yNTB8MCk/WzddXFxkezh9JC8sXG4gICdlbi1TRyc6IC9eKFxcKzY1KT9bODldXFxkezd9JC8sXG4gICdlbi1UWic6IC9eKFxcKz8yNTV8MCk/WzY3XVxcZHs4fSQvLFxuICAnZW4tVUcnOiAvXihcXCs/MjU2fDApP1s3XVxcZHs4fSQvLFxuICAnZW4tVVMnOiAvXihcXCs/MT8oIHwtKT8pPyhcXChbMi05XVswLTldezJ9XFwpfFsyLTldWzAtOV17Mn0pKCB8LSk/KFsyLTldWzAtOV17Mn0oIHwtKT9bMC05XXs0fSkkLyxcbiAgJ2VuLVpBJzogL14oXFwrPzI3fDApXFxkezl9JC8sXG4gICdlbi1aTSc6IC9eKFxcKz8yNik/MDlbNTY3XVxcZHs3fSQvLFxuICAnZXMtRVMnOiAvXihcXCs/MzQpPyg2XFxkezF9fDdbMTIzNF0pXFxkezd9JC8sXG4gICdlcy1NWCc6IC9eKFxcKz81Mik/KDF8MDEpP1xcZHsxMCwxMX0kLyxcbiAgJ2V0LUVFJzogL14oXFwrPzM3Mik/XFxzPyg1fDhbMS00XSlcXHM/KFswLTldXFxzPyl7Niw3fSQvLFxuICAnZmEtSVInOiAvXihcXCs/OThbXFwtXFxzXT98MCk5WzAtMzldXFxkW1xcLVxcc10/XFxkezN9W1xcLVxcc10/XFxkezR9JC8sXG4gICdmaS1GSSc6IC9eKFxcKz8zNTh8MClcXHM/KDQoMHwxfDJ8NHw1fDYpP3w1MClcXHM/KFxcZFxccz8pezQsOH1cXGQkLyxcbiAgJ2ZvLUZPJzogL14oXFwrPzI5OCk/XFxzP1xcZHsyfVxccz9cXGR7Mn1cXHM/XFxkezJ9JC8sXG4gICdmci1GUic6IC9eKFxcKz8zM3wwKVs2N11cXGR7OH0kLyxcbiAgJ2hlLUlMJzogL14oXFwrOTcyfDApKFsyMzQ4OV18NVswMTIzNDU2ODldfDc3KVsxLTldXFxkezZ9LyxcbiAgJ2h1LUhVJzogL14oXFwrPzM2KSgyMHwzMHw3MClcXGR7N30kLyxcbiAgJ2lkLUlEJzogL14oXFwrPzYyfDApKDA/OD9cXGRcXGRcXHM/XFxkPykoW1xccz98XFxkXXs3LDEyfSkkLyxcbiAgJ2l0LUlUJzogL14oXFwrPzM5KT9cXHM/M1xcZHsyfSA/XFxkezYsN30kLyxcbiAgJ2phLUpQJzogL14oXFwrPzgxfDApWzc4OV0wWyBcXC1dP1sxLTldXFxkezJ9WyBcXC1dP1xcZHs1fSQvLFxuICAna2stS1onOiAvXihcXCs/N3w4KT83XFxkezl9JC8sXG4gICdrbC1HTCc6IC9eKFxcKz8yOTkpP1xccz9cXGR7Mn1cXHM/XFxkezJ9XFxzP1xcZHsyfSQvLFxuICAna28tS1InOiAvXigoXFwrPzgyKVsgXFwtXT8pPzA/MShbMHwxfDZ8N3w4fDldezF9KVsgXFwtXT9cXGR7Myw0fVsgXFwtXT9cXGR7NH0kLyxcbiAgJ2x0LUxUJzogL14oXFwrMzcwfDgpXFxkezh9JC8sXG4gICdtcy1NWSc6IC9eKFxcKz82PzAxKXsxfSgoWzE0NV17MX0oXFwtfFxccyk/XFxkezcsOH0pfChbMjM2Nzg5XXsxfShcXHN8XFwtKT9cXGR7N30pKSQvLFxuICAnbmItTk8nOiAvXihcXCs/NDcpP1s0OV1cXGR7N30kLyxcbiAgJ25sLUJFJzogL14oXFwrPzMyfDApND9cXGR7OH0kLyxcbiAgJ25uLU5PJzogL14oXFwrPzQ3KT9bNDldXFxkezd9JC8sXG4gICdwbC1QTCc6IC9eKFxcKz80OCk/ID9bNS04XVxcZCA/XFxkezN9ID9cXGR7Mn0gP1xcZHsyfSQvLFxuICAncHQtQlInOiAvKD89XihcXCs/NXsyfVxcLT98MClbMS05XXsyfVxcLT9cXGR7NH1cXC0/XFxkezR9JCkoXihcXCs/NXsyfVxcLT98MClbMS05XXsyfVxcLT9bNi05XXsxfVxcZHszfVxcLT9cXGR7NH0kKXwoXihcXCs/NXsyfVxcLT98MClbMS05XXsyfVxcLT85WzYtOV17MX1cXGR7M31cXC0/XFxkezR9JCkvLFxuICAncHQtUFQnOiAvXihcXCs/MzUxKT85WzEyMzZdXFxkezd9JC8sXG4gICdyby1STyc6IC9eKFxcKz80PzApXFxzPzdcXGR7Mn0oXFwvfFxcc3xcXC58XFwtKT9cXGR7M30oXFxzfFxcLnxcXC0pP1xcZHszfSQvLFxuICAncnUtUlUnOiAvXihcXCs/N3w4KT85XFxkezl9JC8sXG4gICdzay1TSyc6IC9eKFxcKz80MjEpPyA/WzEtOV1bMC05XXsyfSA/WzAtOV17M30gP1swLTldezN9JC8sXG4gICdzci1SUyc6IC9eKFxcKzM4MTZ8MDYpWy0gXFxkXXs1LDl9JC8sXG4gICdzdi1TRSc6IC9eKFxcKz80NnwwKVtcXHNcXC1dPzdbXFxzXFwtXT9bMDIzNjldKFtcXHNcXC1dP1xcZCl7N30kLyxcbiAgJ3RoLVRIJzogL14oXFwrNjZ8NjZ8MClcXGR7OX0kLyxcbiAgJ3RyLVRSJzogL14oXFwrPzkwfDApPzVcXGR7OX0kLyxcbiAgJ3VrLVVBJzogL14oXFwrPzM4fDgpPzBcXGR7OX0kLyxcbiAgJ3ZpLVZOJzogL14oXFwrPzg0fDApPygoMSgyKFswLTldKXw2KFsyLTldKXw4OHw5OSkpfCg5KCg/ITUpWzAtOV0pKSkoWzAtOV17N30pJC8sXG4gICd6aC1DTic6IC9eKChcXCt8MDApODYpPzEoWzM1OF1bMC05XXw0WzU3OV18NjZ8N1swMTM1Njc4XXw5Wzg5XSlbMC05XXs4fSQvLFxuICAnemgtVFcnOiAvXihcXCs/ODg2XFwtP3wwKT85XFxkezh9JC9cbn07XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuLy8gYWxpYXNlc1xucGhvbmVzWydlbi1DQSddID0gcGhvbmVzWydlbi1VUyddO1xucGhvbmVzWydmci1CRSddID0gcGhvbmVzWydubC1CRSddO1xucGhvbmVzWyd6aC1ISyddID0gcGhvbmVzWydlbi1ISyddO1xuXG5mdW5jdGlvbiBpc01vYmlsZVBob25lKHN0ciwgbG9jYWxlLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnN0cmljdE1vZGUgJiYgIXN0ci5zdGFydHNXaXRoKCcrJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlKSkge1xuICAgIHJldHVybiBsb2NhbGUuc29tZShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAocGhvbmVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdmFyIHBob25lID0gcGhvbmVzW2tleV07XG4gICAgICAgIGlmIChwaG9uZS50ZXN0KHN0cikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGxvY2FsZSBpbiBwaG9uZXMpIHtcbiAgICByZXR1cm4gcGhvbmVzW2xvY2FsZV0udGVzdChzdHIpO1xuICAgIC8vIGFsaWFzIGZhbHNleSBsb2NhbGUgYXMgJ2FueSdcbiAgfSBlbHNlIGlmICghbG9jYWxlIHx8IGxvY2FsZSA9PT0gJ2FueScpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcGhvbmVzKSB7XG4gICAgICBpZiAocGhvbmVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdmFyIHBob25lID0gcGhvbmVzW2tleV07XG4gICAgICAgIGlmIChwaG9uZS50ZXN0KHN0cikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsZSBcXCcnICsgbG9jYWxlICsgJ1xcJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNb25nb0lkO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF9pc0hleGFkZWNpbWFsID0gcmVxdWlyZSgnLi9pc0hleGFkZWNpbWFsJyk7XG5cbnZhciBfaXNIZXhhZGVjaW1hbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0hleGFkZWNpbWFsKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNNb25nb0lkKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICgwLCBfaXNIZXhhZGVjaW1hbDIuZGVmYXVsdCkoc3RyKSAmJiBzdHIubGVuZ3RoID09PSAyNDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTXVsdGlieXRlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCAqL1xudmFyIG11bHRpYnl0ZSA9IC9bXlxceDAwLVxceDdGXS87XG4vKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cblxuZnVuY3Rpb24gaXNNdWx0aWJ5dGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gbXVsdGlieXRlLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTnVtZXJpYztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBudW1lcmljID0gL15bKy1dPyhbMC05XSpbLl0pP1swLTldKyQvO1xudmFyIG51bWVyaWNOb1N5bWJvbHMgPSAvXlswLTldKyQvO1xuXG5mdW5jdGlvbiBpc051bWVyaWMoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLm5vX3N5bWJvbHMpIHtcbiAgICByZXR1cm4gbnVtZXJpY05vU3ltYm9scy50ZXN0KHN0cik7XG4gIH1cbiAgcmV0dXJuIG51bWVyaWMudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNQb3J0O1xuXG52YXIgX2lzSW50ID0gcmVxdWlyZSgnLi9pc0ludCcpO1xuXG52YXIgX2lzSW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSW50KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNQb3J0KHN0cikge1xuICByZXR1cm4gKDAsIF9pc0ludDIuZGVmYXVsdCkoc3RyLCB7IG1pbjogMCwgbWF4OiA2NTUzNSB9KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubG9jYWxlcyA9IHVuZGVmaW5lZDtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHN0ciwgbG9jYWxlKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAobG9jYWxlIGluIHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zW2xvY2FsZV0udGVzdChzdHIpO1xuICB9IGVsc2UgaWYgKGxvY2FsZSA9PT0gJ2FueScpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0dGVybnMpIHtcbiAgICAgIGlmIChwYXR0ZXJucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuID0gcGF0dGVybnNba2V5XTtcbiAgICAgICAgaWYgKHBhdHRlcm4udGVzdChzdHIpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBsb2NhbGUgXFwnJyArIGxvY2FsZSArICdcXCcnKTtcbn07XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vLyBjb21tb24gcGF0dGVybnNcbnZhciB0aHJlZURpZ2l0ID0gL15cXGR7M30kLztcbnZhciBmb3VyRGlnaXQgPSAvXlxcZHs0fSQvO1xudmFyIGZpdmVEaWdpdCA9IC9eXFxkezV9JC87XG52YXIgc2l4RGlnaXQgPSAvXlxcZHs2fSQvO1xuXG52YXIgcGF0dGVybnMgPSB7XG4gIEFEOiAvXkFEXFxkezN9JC8sXG4gIEFUOiBmb3VyRGlnaXQsXG4gIEFVOiBmb3VyRGlnaXQsXG4gIEJFOiBmb3VyRGlnaXQsXG4gIEJHOiBmb3VyRGlnaXQsXG4gIENBOiAvXltBQkNFR0hKS0xNTlBSU1RWWFldXFxkW0FCQ0VHSEotTlBSU1RWLVpdW1xcc1xcLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pLFxuICBDSDogZm91ckRpZ2l0LFxuICBDWjogL15cXGR7M31cXHM/XFxkezJ9JC8sXG4gIERFOiBmaXZlRGlnaXQsXG4gIERLOiBmb3VyRGlnaXQsXG4gIERaOiBmaXZlRGlnaXQsXG4gIEVFOiBmaXZlRGlnaXQsXG4gIEVTOiBmaXZlRGlnaXQsXG4gIEZJOiBmaXZlRGlnaXQsXG4gIEZSOiAvXlxcZHsyfVxccz9cXGR7M30kLyxcbiAgR0I6IC9eKGdpclxccz8wYWF8W2Etel17MSwyfVxcZFtcXGRhLXpdP1xccz8oXFxkW2Etel17Mn0pPykkL2ksXG4gIEdSOiAvXlxcZHszfVxccz9cXGR7Mn0kLyxcbiAgSFI6IC9eKFsxLTVdXFxkezR9JCkvLFxuICBIVTogZm91ckRpZ2l0LFxuICBJTDogZml2ZURpZ2l0LFxuICBJTjogc2l4RGlnaXQsXG4gIElTOiB0aHJlZURpZ2l0LFxuICBJVDogZml2ZURpZ2l0LFxuICBKUDogL15cXGR7M31cXC1cXGR7NH0kLyxcbiAgS0U6IGZpdmVEaWdpdCxcbiAgTEk6IC9eKDk0OFs1LTldfDk0OVswLTddKSQvLFxuICBMVDogL15MVFxcLVxcZHs1fSQvLFxuICBMVTogZm91ckRpZ2l0LFxuICBMVjogL15MVlxcLVxcZHs0fSQvLFxuICBNWDogZml2ZURpZ2l0LFxuICBOTDogL15cXGR7NH1cXHM/W2Etel17Mn0kL2ksXG4gIE5POiBmb3VyRGlnaXQsXG4gIFBMOiAvXlxcZHsyfVxcLVxcZHszfSQvLFxuICBQVDogL15cXGR7NH1cXC1cXGR7M30/JC8sXG4gIFJPOiBzaXhEaWdpdCxcbiAgUlU6IHNpeERpZ2l0LFxuICBTQTogZml2ZURpZ2l0LFxuICBTRTogL15cXGR7M31cXHM/XFxkezJ9JC8sXG4gIFNJOiBmb3VyRGlnaXQsXG4gIFNLOiAvXlxcZHszfVxccz9cXGR7Mn0kLyxcbiAgVE46IGZvdXJEaWdpdCxcbiAgVFc6IC9eXFxkezN9KFxcZHsyfSk/JC8sXG4gIFVTOiAvXlxcZHs1fSgtXFxkezR9KT8kLyxcbiAgWkE6IGZvdXJEaWdpdCxcbiAgWk06IGZpdmVEaWdpdFxufTtcblxudmFyIGxvY2FsZXMgPSBleHBvcnRzLmxvY2FsZXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJucyk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNSRkMzMzM5O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogQmFzZWQgb24gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjYgKi9cblxudmFyIGRhdGVGdWxsWWVhciA9IC9bMC05XXs0fS87XG52YXIgZGF0ZU1vbnRoID0gLygwWzEtOV18MVswLTJdKS87XG52YXIgZGF0ZU1EYXkgPSAvKFsxMl1cXGR8MFsxLTldfDNbMDFdKS87XG5cbnZhciB0aW1lSG91ciA9IC8oWzAxXVswLTldfDJbMC0zXSkvO1xudmFyIHRpbWVNaW51dGUgPSAvWzAtNV1bMC05XS87XG52YXIgdGltZVNlY29uZCA9IC8oWzAtNV1bMC05XXw2MCkvO1xuXG52YXIgdGltZVNlY0ZyYWMgPSAvKFxcLlswLTldKyk/LztcbnZhciB0aW1lTnVtT2Zmc2V0ID0gbmV3IFJlZ0V4cCgnWy0rXScgKyB0aW1lSG91ci5zb3VyY2UgKyAnOicgKyB0aW1lTWludXRlLnNvdXJjZSk7XG52YXIgdGltZU9mZnNldCA9IG5ldyBSZWdFeHAoJyhbelpdfCcgKyB0aW1lTnVtT2Zmc2V0LnNvdXJjZSArICcpJyk7XG5cbnZhciBwYXJ0aWFsVGltZSA9IG5ldyBSZWdFeHAodGltZUhvdXIuc291cmNlICsgJzonICsgdGltZU1pbnV0ZS5zb3VyY2UgKyAnOicgKyB0aW1lU2Vjb25kLnNvdXJjZSArIHRpbWVTZWNGcmFjLnNvdXJjZSk7XG5cbnZhciBmdWxsRGF0ZSA9IG5ldyBSZWdFeHAoZGF0ZUZ1bGxZZWFyLnNvdXJjZSArICctJyArIGRhdGVNb250aC5zb3VyY2UgKyAnLScgKyBkYXRlTURheS5zb3VyY2UpO1xudmFyIGZ1bGxUaW1lID0gbmV3IFJlZ0V4cCgnJyArIHBhcnRpYWxUaW1lLnNvdXJjZSArIHRpbWVPZmZzZXQuc291cmNlKTtcblxudmFyIHJmYzMzMzkgPSBuZXcgUmVnRXhwKGZ1bGxEYXRlLnNvdXJjZSArICdbIHRUXScgKyBmdWxsVGltZS5zb3VyY2UpO1xuXG5mdW5jdGlvbiBpc1JGQzMzMzkoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gcmZjMzMzOS50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1N1cnJvZ2F0ZVBhaXI7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgc3Vycm9nYXRlUGFpciA9IC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdLztcblxuZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN1cnJvZ2F0ZVBhaXIudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNVUkw7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2lzRlFETiA9IHJlcXVpcmUoJy4vaXNGUUROJyk7XG5cbnZhciBfaXNGUUROMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRlFETik7XG5cbnZhciBfaXNJUCA9IHJlcXVpcmUoJy4vaXNJUCcpO1xuXG52YXIgX2lzSVAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJUCk7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X3VybF9vcHRpb25zID0ge1xuICBwcm90b2NvbHM6IFsnaHR0cCcsICdodHRwcycsICdmdHAnXSxcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIHJlcXVpcmVfcHJvdG9jb2w6IGZhbHNlLFxuICByZXF1aXJlX2hvc3Q6IHRydWUsXG4gIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IHRydWUsXG4gIGFsbG93X3VuZGVyc2NvcmVzOiBmYWxzZSxcbiAgYWxsb3dfdHJhaWxpbmdfZG90OiBmYWxzZSxcbiAgYWxsb3dfcHJvdG9jb2xfcmVsYXRpdmVfdXJsczogZmFsc2Vcbn07XG5cbnZhciB3cmFwcGVkX2lwdjYgPSAvXlxcWyhbXlxcXV0rKVxcXSg/OjooWzAtOV0rKSk/JC87XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuXG5mdW5jdGlvbiBjaGVja0hvc3QoaG9zdCwgbWF0Y2hlcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbWF0Y2ggPSBtYXRjaGVzW2ldO1xuICAgIGlmIChob3N0ID09PSBtYXRjaCB8fCBpc1JlZ0V4cChtYXRjaCkgJiYgbWF0Y2gudGVzdChob3N0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVUkwodXJsLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KSh1cmwpO1xuICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID49IDIwODMgfHwgL1tcXHM8Pl0vLnRlc3QodXJsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodXJsLmluZGV4T2YoJ21haWx0bzonKSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBvcHRpb25zID0gKDAsIF9tZXJnZTIuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF91cmxfb3B0aW9ucyk7XG4gIHZhciBwcm90b2NvbCA9IHZvaWQgMCxcbiAgICAgIGF1dGggPSB2b2lkIDAsXG4gICAgICBob3N0ID0gdm9pZCAwLFxuICAgICAgaG9zdG5hbWUgPSB2b2lkIDAsXG4gICAgICBwb3J0ID0gdm9pZCAwLFxuICAgICAgcG9ydF9zdHIgPSB2b2lkIDAsXG4gICAgICBzcGxpdCA9IHZvaWQgMCxcbiAgICAgIGlwdjYgPSB2b2lkIDA7XG5cbiAgc3BsaXQgPSB1cmwuc3BsaXQoJyMnKTtcbiAgdXJsID0gc3BsaXQuc2hpZnQoKTtcblxuICBzcGxpdCA9IHVybC5zcGxpdCgnPycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuXG4gIHNwbGl0ID0gdXJsLnNwbGl0KCc6Ly8nKTtcbiAgaWYgKHNwbGl0Lmxlbmd0aCA+IDEpIHtcbiAgICBwcm90b2NvbCA9IHNwbGl0LnNoaWZ0KCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZV92YWxpZF9wcm90b2NvbCAmJiBvcHRpb25zLnByb3RvY29scy5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5yZXF1aXJlX3Byb3RvY29sKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKHVybC5zdWJzdHIoMCwgMikgPT09ICcvLycpIHtcbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dfcHJvdG9jb2xfcmVsYXRpdmVfdXJscykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzcGxpdFswXSA9IHVybC5zdWJzdHIoMik7XG4gIH1cbiAgdXJsID0gc3BsaXQuam9pbignOi8vJyk7XG5cbiAgaWYgKHVybCA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzcGxpdCA9IHVybC5zcGxpdCgnLycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuXG4gIGlmICh1cmwgPT09ICcnICYmICFvcHRpb25zLnJlcXVpcmVfaG9zdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3BsaXQgPSB1cmwuc3BsaXQoJ0AnKTtcbiAgaWYgKHNwbGl0Lmxlbmd0aCA+IDEpIHtcbiAgICBhdXRoID0gc3BsaXQuc2hpZnQoKTtcbiAgICBpZiAoYXV0aC5pbmRleE9mKCc6JykgPj0gMCAmJiBhdXRoLnNwbGl0KCc6JykubGVuZ3RoID4gMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBob3N0bmFtZSA9IHNwbGl0LmpvaW4oJ0AnKTtcblxuICBwb3J0X3N0ciA9IG51bGw7XG4gIGlwdjYgPSBudWxsO1xuICB2YXIgaXB2Nl9tYXRjaCA9IGhvc3RuYW1lLm1hdGNoKHdyYXBwZWRfaXB2Nik7XG4gIGlmIChpcHY2X21hdGNoKSB7XG4gICAgaG9zdCA9ICcnO1xuICAgIGlwdjYgPSBpcHY2X21hdGNoWzFdO1xuICAgIHBvcnRfc3RyID0gaXB2Nl9tYXRjaFsyXSB8fCBudWxsO1xuICB9IGVsc2Uge1xuICAgIHNwbGl0ID0gaG9zdG5hbWUuc3BsaXQoJzonKTtcbiAgICBob3N0ID0gc3BsaXQuc2hpZnQoKTtcbiAgICBpZiAoc3BsaXQubGVuZ3RoKSB7XG4gICAgICBwb3J0X3N0ciA9IHNwbGl0LmpvaW4oJzonKTtcbiAgICB9XG4gIH1cblxuICBpZiAocG9ydF9zdHIgIT09IG51bGwpIHtcbiAgICBwb3J0ID0gcGFyc2VJbnQocG9ydF9zdHIsIDEwKTtcbiAgICBpZiAoIS9eWzAtOV0rJC8udGVzdChwb3J0X3N0cikgfHwgcG9ydCA8PSAwIHx8IHBvcnQgPiA2NTUzNSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghKDAsIF9pc0lQMi5kZWZhdWx0KShob3N0KSAmJiAhKDAsIF9pc0ZRRE4yLmRlZmF1bHQpKGhvc3QsIG9wdGlvbnMpICYmICghaXB2NiB8fCAhKDAsIF9pc0lQMi5kZWZhdWx0KShpcHY2LCA2KSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBob3N0ID0gaG9zdCB8fCBpcHY2O1xuXG4gIGlmIChvcHRpb25zLmhvc3Rfd2hpdGVsaXN0ICYmICFjaGVja0hvc3QoaG9zdCwgb3B0aW9ucy5ob3N0X3doaXRlbGlzdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaG9zdF9ibGFja2xpc3QgJiYgY2hlY2tIb3N0KGhvc3QsIG9wdGlvbnMuaG9zdF9ibGFja2xpc3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1VVSUQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgdXVpZCA9IHtcbiAgMzogL15bMC05QS1GXXs4fS1bMC05QS1GXXs0fS0zWzAtOUEtRl17M30tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9JC9pLFxuICA0OiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LTRbMC05QS1GXXszfS1bODlBQl1bMC05QS1GXXszfS1bMC05QS1GXXsxMn0kL2ksXG4gIDU6IC9eWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tNVswLTlBLUZdezN9LVs4OUFCXVswLTlBLUZdezN9LVswLTlBLUZdezEyfSQvaSxcbiAgYWxsOiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LVswLTlBLUZdezR9LVswLTlBLUZdezR9LVswLTlBLUZdezEyfSQvaVxufTtcblxuZnVuY3Rpb24gaXNVVUlEKHN0cikge1xuICB2YXIgdmVyc2lvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJ2FsbCc7XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBwYXR0ZXJuID0gdXVpZFt2ZXJzaW9uXTtcbiAgcmV0dXJuIHBhdHRlcm4gJiYgcGF0dGVybi50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1VwcGVyY2FzZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzVXBwZXJjYXNlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ciA9PT0gc3RyLnRvVXBwZXJDYXNlKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1ZhcmlhYmxlV2lkdGg7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2lzRnVsbFdpZHRoID0gcmVxdWlyZSgnLi9pc0Z1bGxXaWR0aCcpO1xuXG52YXIgX2lzSGFsZldpZHRoID0gcmVxdWlyZSgnLi9pc0hhbGZXaWR0aCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc1ZhcmlhYmxlV2lkdGgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gX2lzRnVsbFdpZHRoLmZ1bGxXaWR0aC50ZXN0KHN0cikgJiYgX2lzSGFsZldpZHRoLmhhbGZXaWR0aC50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1doaXRlbGlzdGVkO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNXaGl0ZWxpc3RlZChzdHIsIGNoYXJzKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBmb3IgKHZhciBpID0gc3RyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGNoYXJzLmluZGV4T2Yoc3RyW2ldKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBsdHJpbTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGx0cmltKHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBwYXR0ZXJuID0gY2hhcnMgPyBuZXcgUmVnRXhwKCdeWycgKyBjaGFycyArICddKycsICdnJykgOiAvXlxccysvZztcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKHBhdHRlcm4sICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IG1hdGNoZXM7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBtYXRjaGVzKHN0ciwgcGF0dGVybiwgbW9kaWZpZXJzKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHBhdHRlcm4pICE9PSAnW29iamVjdCBSZWdFeHBdJykge1xuICAgIHBhdHRlcm4gPSBuZXcgUmVnRXhwKHBhdHRlcm4sIG1vZGlmaWVycyk7XG4gIH1cbiAgcmV0dXJuIHBhdHRlcm4udGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbm9ybWFsaXplRW1haWw7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X25vcm1hbGl6ZV9lbWFpbF9vcHRpb25zID0ge1xuICAvLyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXBwbHkgdG8gYWxsIGVtYWlsIGFkZHJlc3Nlc1xuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBlbWFpbCBhZGRyZXNzLlxuICAvLyBQbGVhc2Ugbm90ZSB0aGlzIG1heSB2aW9sYXRlIFJGQyA1MzIxIGFzIHBlciBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85ODA4MzMyLzE5MjAyNCkuXG4gIC8vIFRoZSBkb21haW4gaXMgYWx3YXlzIGxvd2VyY2FzZWQsIGFzIHBlciBSRkMgMTAzNVxuICBhbGxfbG93ZXJjYXNlOiB0cnVlLFxuXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIEdNYWlsXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIEdNYWlsIGFkZHJlc3MgKGtub3duIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUpXG4gIGdtYWlsX2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gUmVtb3ZlcyBkb3RzIGZyb20gdGhlIGxvY2FsIHBhcnQgb2YgdGhlIGVtYWlsIGFkZHJlc3MsIGFzIHRoYXQncyBpZ25vcmVkIGJ5IEdNYWlsXG4gIGdtYWlsX3JlbW92ZV9kb3RzOiB0cnVlLFxuICAvLyBSZW1vdmVzIHRoZSBzdWJhZGRyZXNzIChlLmcuIFwiK2Zvb1wiKSBmcm9tIHRoZSBlbWFpbCBhZGRyZXNzXG4gIGdtYWlsX3JlbW92ZV9zdWJhZGRyZXNzOiB0cnVlLFxuICAvLyBDb252ZXJzdHMgdGhlIGdvb2dsZW1haWwuY29tIGRvbWFpbiB0byBnbWFpbC5jb21cbiAgZ21haWxfY29udmVydF9nb29nbGVtYWlsZG90Y29tOiB0cnVlLFxuXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIE91dGxvb2suY29tIC8gV2luZG93cyBMaXZlIC8gSG90bWFpbFxuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBPdXRsb29rLmNvbSBhZGRyZXNzIChrbm93biB0byBiZSBjYXNlLWluc2Vuc2l0aXZlKVxuICBvdXRsb29rZG90Y29tX2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gUmVtb3ZlcyB0aGUgc3ViYWRkcmVzcyAoZS5nLiBcIitmb29cIikgZnJvbSB0aGUgZW1haWwgYWRkcmVzc1xuICBvdXRsb29rZG90Y29tX3JlbW92ZV9zdWJhZGRyZXNzOiB0cnVlLFxuXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIFlhaG9vXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIFlhaG9vIGFkZHJlc3MgKGtub3duIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUpXG4gIHlhaG9vX2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gUmVtb3ZlcyB0aGUgc3ViYWRkcmVzcyAoZS5nLiBcIi1mb29cIikgZnJvbSB0aGUgZW1haWwgYWRkcmVzc1xuICB5YWhvb19yZW1vdmVfc3ViYWRkcmVzczogdHJ1ZSxcblxuICAvLyBUaGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIGFyZSBzcGVjaWZpYyB0byBZYW5kZXhcbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgWWFuZGV4IGFkZHJlc3MgKGtub3duIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUpXG4gIHlhbmRleF9sb3dlcmNhc2U6IHRydWUsXG5cbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gaUNsb3VkXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIGlDbG91ZCBhZGRyZXNzIChrbm93biB0byBiZSBjYXNlLWluc2Vuc2l0aXZlKVxuICBpY2xvdWRfbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIHRoZSBzdWJhZGRyZXNzIChlLmcuIFwiK2Zvb1wiKSBmcm9tIHRoZSBlbWFpbCBhZGRyZXNzXG4gIGljbG91ZF9yZW1vdmVfc3ViYWRkcmVzczogdHJ1ZVxufTtcblxuLy8gTGlzdCBvZiBkb21haW5zIHVzZWQgYnkgaUNsb3VkXG52YXIgaWNsb3VkX2RvbWFpbnMgPSBbJ2ljbG91ZC5jb20nLCAnbWUuY29tJ107XG5cbi8vIExpc3Qgb2YgZG9tYWlucyB1c2VkIGJ5IE91dGxvb2suY29tIGFuZCBpdHMgcHJlZGVjZXNzb3JzXG4vLyBUaGlzIGxpc3QgaXMgbGlrZWx5IGluY29tcGxldGUuXG4vLyBQYXJ0aWFsIHJlZmVyZW5jZTpcbi8vIGh0dHBzOi8vYmxvZ3Mub2ZmaWNlLmNvbS8yMDEzLzA0LzE3L291dGxvb2stY29tLWdldHMtdHdvLXN0ZXAtdmVyaWZpY2F0aW9uLXNpZ24taW4tYnktYWxpYXMtYW5kLW5ldy1pbnRlcm5hdGlvbmFsLWRvbWFpbnMvXG52YXIgb3V0bG9va2RvdGNvbV9kb21haW5zID0gWydob3RtYWlsLmF0JywgJ2hvdG1haWwuYmUnLCAnaG90bWFpbC5jYScsICdob3RtYWlsLmNsJywgJ2hvdG1haWwuY28uaWwnLCAnaG90bWFpbC5jby5ueicsICdob3RtYWlsLmNvLnRoJywgJ2hvdG1haWwuY28udWsnLCAnaG90bWFpbC5jb20nLCAnaG90bWFpbC5jb20uYXInLCAnaG90bWFpbC5jb20uYXUnLCAnaG90bWFpbC5jb20uYnInLCAnaG90bWFpbC5jb20uZ3InLCAnaG90bWFpbC5jb20ubXgnLCAnaG90bWFpbC5jb20ucGUnLCAnaG90bWFpbC5jb20udHInLCAnaG90bWFpbC5jb20udm4nLCAnaG90bWFpbC5jeicsICdob3RtYWlsLmRlJywgJ2hvdG1haWwuZGsnLCAnaG90bWFpbC5lcycsICdob3RtYWlsLmZyJywgJ2hvdG1haWwuaHUnLCAnaG90bWFpbC5pZCcsICdob3RtYWlsLmllJywgJ2hvdG1haWwuaW4nLCAnaG90bWFpbC5pdCcsICdob3RtYWlsLmpwJywgJ2hvdG1haWwua3InLCAnaG90bWFpbC5sdicsICdob3RtYWlsLm15JywgJ2hvdG1haWwucGgnLCAnaG90bWFpbC5wdCcsICdob3RtYWlsLnNhJywgJ2hvdG1haWwuc2cnLCAnaG90bWFpbC5zaycsICdsaXZlLmJlJywgJ2xpdmUuY28udWsnLCAnbGl2ZS5jb20nLCAnbGl2ZS5jb20uYXInLCAnbGl2ZS5jb20ubXgnLCAnbGl2ZS5kZScsICdsaXZlLmVzJywgJ2xpdmUuZXUnLCAnbGl2ZS5mcicsICdsaXZlLml0JywgJ2xpdmUubmwnLCAnbXNuLmNvbScsICdvdXRsb29rLmF0JywgJ291dGxvb2suYmUnLCAnb3V0bG9vay5jbCcsICdvdXRsb29rLmNvLmlsJywgJ291dGxvb2suY28ubnonLCAnb3V0bG9vay5jby50aCcsICdvdXRsb29rLmNvbScsICdvdXRsb29rLmNvbS5hcicsICdvdXRsb29rLmNvbS5hdScsICdvdXRsb29rLmNvbS5icicsICdvdXRsb29rLmNvbS5ncicsICdvdXRsb29rLmNvbS5wZScsICdvdXRsb29rLmNvbS50cicsICdvdXRsb29rLmNvbS52bicsICdvdXRsb29rLmN6JywgJ291dGxvb2suZGUnLCAnb3V0bG9vay5kaycsICdvdXRsb29rLmVzJywgJ291dGxvb2suZnInLCAnb3V0bG9vay5odScsICdvdXRsb29rLmlkJywgJ291dGxvb2suaWUnLCAnb3V0bG9vay5pbicsICdvdXRsb29rLml0JywgJ291dGxvb2suanAnLCAnb3V0bG9vay5rcicsICdvdXRsb29rLmx2JywgJ291dGxvb2subXknLCAnb3V0bG9vay5waCcsICdvdXRsb29rLnB0JywgJ291dGxvb2suc2EnLCAnb3V0bG9vay5zZycsICdvdXRsb29rLnNrJywgJ3Bhc3Nwb3J0LmNvbSddO1xuXG4vLyBMaXN0IG9mIGRvbWFpbnMgdXNlZCBieSBZYWhvbyBNYWlsXG4vLyBUaGlzIGxpc3QgaXMgbGlrZWx5IGluY29tcGxldGVcbnZhciB5YWhvb19kb21haW5zID0gWydyb2NrZXRtYWlsLmNvbScsICd5YWhvby5jYScsICd5YWhvby5jby51aycsICd5YWhvby5jb20nLCAneWFob28uZGUnLCAneWFob28uZnInLCAneWFob28uaW4nLCAneWFob28uaXQnLCAneW1haWwuY29tJ107XG5cbi8vIExpc3Qgb2YgZG9tYWlucyB1c2VkIGJ5IHlhbmRleC5ydVxudmFyIHlhbmRleF9kb21haW5zID0gWyd5YW5kZXgucnUnLCAneWFuZGV4LnVhJywgJ3lhbmRleC5reicsICd5YW5kZXguY29tJywgJ3lhbmRleC5ieScsICd5YS5ydSddO1xuXG4vLyByZXBsYWNlIHNpbmdsZSBkb3RzLCBidXQgbm90IG11bHRpcGxlIGNvbnNlY3V0aXZlIGRvdHNcbmZ1bmN0aW9uIGRvdHNSZXBsYWNlcihtYXRjaCkge1xuICBpZiAobWF0Y2gubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVtYWlsKGVtYWlsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X25vcm1hbGl6ZV9lbWFpbF9vcHRpb25zKTtcblxuICB2YXIgcmF3X3BhcnRzID0gZW1haWwuc3BsaXQoJ0AnKTtcbiAgdmFyIGRvbWFpbiA9IHJhd19wYXJ0cy5wb3AoKTtcbiAgdmFyIHVzZXIgPSByYXdfcGFydHMuam9pbignQCcpO1xuICB2YXIgcGFydHMgPSBbdXNlciwgZG9tYWluXTtcblxuICAvLyBUaGUgZG9tYWluIGlzIGFsd2F5cyBsb3dlcmNhc2VkLCBhcyBpdCdzIGNhc2UtaW5zZW5zaXRpdmUgcGVyIFJGQyAxMDM1XG4gIHBhcnRzWzFdID0gcGFydHNbMV0udG9Mb3dlckNhc2UoKTtcblxuICBpZiAocGFydHNbMV0gPT09ICdnbWFpbC5jb20nIHx8IHBhcnRzWzFdID09PSAnZ29vZ2xlbWFpbC5jb20nKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBHTWFpbFxuICAgIGlmIChvcHRpb25zLmdtYWlsX3JlbW92ZV9zdWJhZGRyZXNzKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnNwbGl0KCcrJylbMF07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmdtYWlsX3JlbW92ZV9kb3RzKSB7XG4gICAgICAvLyB0aGlzIGRvZXMgbm90IHJlcGxhY2UgY29uc2VjdXRpdmUgZG90cyBsaWtlIGV4YW1wbGUuLmVtYWlsQGdtYWlsLmNvbVxuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKC9cXC4rL2csIGRvdHNSZXBsYWNlcik7XG4gICAgfVxuICAgIGlmICghcGFydHNbMF0ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy5nbWFpbF9sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgcGFydHNbMV0gPSBvcHRpb25zLmdtYWlsX2NvbnZlcnRfZ29vZ2xlbWFpbGRvdGNvbSA/ICdnbWFpbC5jb20nIDogcGFydHNbMV07XG4gIH0gZWxzZSBpZiAoaWNsb3VkX2RvbWFpbnMuaW5kZXhPZihwYXJ0c1sxXSkgPj0gMCkge1xuICAgIC8vIEFkZHJlc3MgaXMgaUNsb3VkXG4gICAgaWYgKG9wdGlvbnMuaWNsb3VkX3JlbW92ZV9zdWJhZGRyZXNzKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnNwbGl0KCcrJylbMF07XG4gICAgfVxuICAgIGlmICghcGFydHNbMF0ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy5pY2xvdWRfbG93ZXJjYXNlKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG91dGxvb2tkb3Rjb21fZG9tYWlucy5pbmRleE9mKHBhcnRzWzFdKSA+PSAwKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBPdXRsb29rLmNvbVxuICAgIGlmIChvcHRpb25zLm91dGxvb2tkb3Rjb21fcmVtb3ZlX3N1YmFkZHJlc3MpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0uc3BsaXQoJysnKVswXTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0c1swXS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWxsX2xvd2VyY2FzZSB8fCBvcHRpb25zLm91dGxvb2tkb3Rjb21fbG93ZXJjYXNlKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHlhaG9vX2RvbWFpbnMuaW5kZXhPZihwYXJ0c1sxXSkgPj0gMCkge1xuICAgIC8vIEFkZHJlc3MgaXMgWWFob29cbiAgICBpZiAob3B0aW9ucy55YWhvb19yZW1vdmVfc3ViYWRkcmVzcykge1xuICAgICAgdmFyIGNvbXBvbmVudHMgPSBwYXJ0c1swXS5zcGxpdCgnLScpO1xuICAgICAgcGFydHNbMF0gPSBjb21wb25lbnRzLmxlbmd0aCA+IDEgPyBjb21wb25lbnRzLnNsaWNlKDAsIC0xKS5qb2luKCctJykgOiBjb21wb25lbnRzWzBdO1xuICAgIH1cbiAgICBpZiAoIXBhcnRzWzBdLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hbGxfbG93ZXJjYXNlIHx8IG9wdGlvbnMueWFob29fbG93ZXJjYXNlKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHlhbmRleF9kb21haW5zLmluZGV4T2YocGFydHNbMV0pID49IDApIHtcbiAgICBpZiAob3B0aW9ucy5hbGxfbG93ZXJjYXNlIHx8IG9wdGlvbnMueWFuZGV4X2xvd2VyY2FzZSkge1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBwYXJ0c1sxXSA9ICd5YW5kZXgucnUnOyAvLyBhbGwgeWFuZGV4IGRvbWFpbnMgYXJlIGVxdWFsLCAxc3QgcHJlZmZlcmVkXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5hbGxfbG93ZXJjYXNlKSB7XG4gICAgLy8gQW55IG90aGVyIGFkZHJlc3NcbiAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ0AnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHJ0cmltO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gcnRyaW0oc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHBhdHRlcm4gPSBjaGFycyA/IG5ldyBSZWdFeHAoJ1snICsgY2hhcnMgKyAnXScpIDogL1xccy87XG5cbiAgdmFyIGlkeCA9IHN0ci5sZW5ndGggLSAxO1xuICBmb3IgKDsgaWR4ID49IDAgJiYgcGF0dGVybi50ZXN0KHN0cltpZHhdKTsgaWR4LS0pIHt9XG5cbiAgcmV0dXJuIGlkeCA8IHN0ci5sZW5ndGggPyBzdHIuc3Vic3RyKDAsIGlkeCArIDEpIDogc3RyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gc3RyaXBMb3c7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2JsYWNrbGlzdCA9IHJlcXVpcmUoJy4vYmxhY2tsaXN0Jyk7XG5cbnZhciBfYmxhY2tsaXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2JsYWNrbGlzdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHN0cmlwTG93KHN0ciwga2VlcF9uZXdfbGluZXMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBjaGFycyA9IGtlZXBfbmV3X2xpbmVzID8gJ1xcXFx4MDAtXFxcXHgwOVxcXFx4MEJcXFxceDBDXFxcXHgwRS1cXFxceDFGXFxcXHg3RicgOiAnXFxcXHgwMC1cXFxceDFGXFxcXHg3Ric7XG4gIHJldHVybiAoMCwgX2JsYWNrbGlzdDIuZGVmYXVsdCkoc3RyLCBjaGFycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b0Jvb2xlYW47XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0b0Jvb2xlYW4oc3RyLCBzdHJpY3QpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChzdHJpY3QpIHtcbiAgICByZXR1cm4gc3RyID09PSAnMScgfHwgc3RyID09PSAndHJ1ZSc7XG4gIH1cbiAgcmV0dXJuIHN0ciAhPT0gJzAnICYmIHN0ciAhPT0gJ2ZhbHNlJyAmJiBzdHIgIT09ICcnO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdG9EYXRlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gdG9EYXRlKGRhdGUpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKGRhdGUpO1xuICBkYXRlID0gRGF0ZS5wYXJzZShkYXRlKTtcbiAgcmV0dXJuICFpc05hTihkYXRlKSA/IG5ldyBEYXRlKGRhdGUpIDogbnVsbDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHRvRmxvYXQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0b0Zsb2F0KHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHRvSW50O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gdG9JbnQoc3RyLCByYWRpeCkge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHBhcnNlSW50KHN0ciwgcmFkaXggfHwgMTApO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdHJpbTtcblxudmFyIF9ydHJpbSA9IHJlcXVpcmUoJy4vcnRyaW0nKTtcblxudmFyIF9ydHJpbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydHJpbSk7XG5cbnZhciBfbHRyaW0gPSByZXF1aXJlKCcuL2x0cmltJyk7XG5cbnZhciBfbHRyaW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbHRyaW0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0cmltKHN0ciwgY2hhcnMpIHtcbiAgcmV0dXJuICgwLCBfcnRyaW0yLmRlZmF1bHQpKCgwLCBfbHRyaW0yLmRlZmF1bHQpKHN0ciwgY2hhcnMpLCBjaGFycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1bmVzY2FwZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHVuZXNjYXBlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mYW1wOy9nLCAnJicpLnJlcGxhY2UoLyZxdW90Oy9nLCAnXCInKS5yZXBsYWNlKC8mI3gyNzsvZywgXCInXCIpLnJlcGxhY2UoLyZsdDsvZywgJzwnKS5yZXBsYWNlKC8mZ3Q7L2csICc+JykucmVwbGFjZSgvJiN4MkY7L2csICcvJykucmVwbGFjZSgvJiN4NUM7L2csICdcXFxcJykucmVwbGFjZSgvJiM5NjsvZywgJ2AnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGFzc2VydFN0cmluZztcbmZ1bmN0aW9uIGFzc2VydFN0cmluZyhpbnB1dCkge1xuICB2YXIgaXNTdHJpbmcgPSB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnIHx8IGlucHV0IGluc3RhbmNlb2YgU3RyaW5nO1xuXG4gIGlmICghaXNTdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGlzIGxpYnJhcnkgKHZhbGlkYXRvci5qcykgdmFsaWRhdGVzIHN0cmluZ3Mgb25seScpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbnZhciBpbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzKGFyciwgdmFsKSB7XG4gIHJldHVybiBhcnIuc29tZShmdW5jdGlvbiAoYXJyVmFsKSB7XG4gICAgcmV0dXJuIHZhbCA9PT0gYXJyVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGluY2x1ZGVzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBtZXJnZTtcbmZ1bmN0aW9uIG1lcmdlKCkge1xuICB2YXIgb2JqID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIGRlZmF1bHRzID0gYXJndW1lbnRzWzFdO1xuXG4gIGZvciAodmFyIGtleSBpbiBkZWZhdWx0cykge1xuICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBvYmpba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmo7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gdG9TdHJpbmc7XG5mdW5jdGlvbiB0b1N0cmluZyhpbnB1dCkge1xuICBpZiAoKHR5cGVvZiBpbnB1dCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoaW5wdXQpKSA9PT0gJ29iamVjdCcgJiYgaW5wdXQgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0LnRvU3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0ID0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlucHV0ID09PSBudWxsIHx8IHR5cGVvZiBpbnB1dCA9PT0gJ3VuZGVmaW5lZCcgfHwgaXNOYU4oaW5wdXQpICYmICFpbnB1dC5sZW5ndGgpIHtcbiAgICBpbnB1dCA9ICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcoaW5wdXQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gd2hpdGVsaXN0O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gd2hpdGVsaXN0KHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKCdbXicgKyBjaGFycyArICddKycsICdnJyksICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIm1vZHVsZS5leHBvcnRzID0gZXh0ZW5kXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICB2YXIgdGFyZ2V0ID0ge31cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgICBJTlZBTElEX1RZUEU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCB0eXBlIHswfSBidXQgZm91bmQgdHlwZSB7MX1cIixcbiAgICBJTlZBTElEX0ZPUk1BVDogICAgICAgICAgICAgICAgICAgICAgICAgXCJPYmplY3QgZGlkbid0IHBhc3MgdmFsaWRhdGlvbiBmb3IgZm9ybWF0IHswfTogezF9XCIsXG4gICAgRU5VTV9NSVNNQVRDSDogICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm8gZW51bSBtYXRjaCBmb3I6IHswfVwiLFxuICAgIEVOVU1fQ0FTRV9NSVNNQVRDSDogICAgICAgICAgICAgICAgICAgICBcIkVudW0gZG9lcyBub3QgbWF0Y2ggY2FzZSBmb3I6IHswfVwiLFxuICAgIEFOWV9PRl9NSVNTSU5HOiAgICAgICAgICAgICAgICAgICAgICAgICBcIkRhdGEgZG9lcyBub3QgbWF0Y2ggYW55IHNjaGVtYXMgZnJvbSAnYW55T2YnXCIsXG4gICAgT05FX09GX01JU1NJTkc6ICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGF0YSBkb2VzIG5vdCBtYXRjaCBhbnkgc2NoZW1hcyBmcm9tICdvbmVPZidcIixcbiAgICBPTkVfT0ZfTVVMVElQTEU6ICAgICAgICAgICAgICAgICAgICAgICAgXCJEYXRhIGlzIHZhbGlkIGFnYWluc3QgbW9yZSB0aGFuIG9uZSBzY2hlbWEgZnJvbSAnb25lT2YnXCIsXG4gICAgTk9UX1BBU1NFRDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGF0YSBtYXRjaGVzIHNjaGVtYSBmcm9tICdub3QnXCIsXG5cbiAgICAvLyBBcnJheSBlcnJvcnNcbiAgICBBUlJBWV9MRU5HVEhfU0hPUlQ6ICAgICAgICAgICAgICAgICAgICAgXCJBcnJheSBpcyB0b28gc2hvcnQgKHswfSksIG1pbmltdW0gezF9XCIsXG4gICAgQVJSQVlfTEVOR1RIX0xPTkc6ICAgICAgICAgICAgICAgICAgICAgIFwiQXJyYXkgaXMgdG9vIGxvbmcgKHswfSksIG1heGltdW0gezF9XCIsXG4gICAgQVJSQVlfVU5JUVVFOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyYXkgaXRlbXMgYXJlIG5vdCB1bmlxdWUgKGluZGV4ZXMgezB9IGFuZCB7MX0pXCIsXG4gICAgQVJSQVlfQURESVRJT05BTF9JVEVNUzogICAgICAgICAgICAgICAgIFwiQWRkaXRpb25hbCBpdGVtcyBub3QgYWxsb3dlZFwiLFxuXG4gICAgLy8gTnVtZXJpYyBlcnJvcnNcbiAgICBNVUxUSVBMRV9PRjogICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJWYWx1ZSB7MH0gaXMgbm90IGEgbXVsdGlwbGUgb2YgezF9XCIsXG4gICAgTUlOSU1VTTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVmFsdWUgezB9IGlzIGxlc3MgdGhhbiBtaW5pbXVtIHsxfVwiLFxuICAgIE1JTklNVU1fRVhDTFVTSVZFOiAgICAgICAgICAgICAgICAgICAgICBcIlZhbHVlIHswfSBpcyBlcXVhbCBvciBsZXNzIHRoYW4gZXhjbHVzaXZlIG1pbmltdW0gezF9XCIsXG4gICAgTUFYSU1VTTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVmFsdWUgezB9IGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHsxfVwiLFxuICAgIE1BWElNVU1fRVhDTFVTSVZFOiAgICAgICAgICAgICAgICAgICAgICBcIlZhbHVlIHswfSBpcyBlcXVhbCBvciBncmVhdGVyIHRoYW4gZXhjbHVzaXZlIG1heGltdW0gezF9XCIsXG5cbiAgICAvLyBPYmplY3QgZXJyb3JzXG4gICAgT0JKRUNUX1BST1BFUlRJRVNfTUlOSU1VTTogICAgICAgICAgICAgIFwiVG9vIGZldyBwcm9wZXJ0aWVzIGRlZmluZWQgKHswfSksIG1pbmltdW0gezF9XCIsXG4gICAgT0JKRUNUX1BST1BFUlRJRVNfTUFYSU1VTTogICAgICAgICAgICAgIFwiVG9vIG1hbnkgcHJvcGVydGllcyBkZWZpbmVkICh7MH0pLCBtYXhpbXVtIHsxfVwiLFxuICAgIE9CSkVDVF9NSVNTSU5HX1JFUVVJUkVEX1BST1BFUlRZOiAgICAgICBcIk1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IHswfVwiLFxuICAgIE9CSkVDVF9BRERJVElPTkFMX1BST1BFUlRJRVM6ICAgICAgICAgICBcIkFkZGl0aW9uYWwgcHJvcGVydGllcyBub3QgYWxsb3dlZDogezB9XCIsXG4gICAgT0JKRUNUX0RFUEVOREVOQ1lfS0VZOiAgICAgICAgICAgICAgICAgIFwiRGVwZW5kZW5jeSBmYWlsZWQgLSBrZXkgbXVzdCBleGlzdDogezB9IChkdWUgdG8ga2V5OiB7MX0pXCIsXG5cbiAgICAvLyBTdHJpbmcgZXJyb3JzXG4gICAgTUlOX0xFTkdUSDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RyaW5nIGlzIHRvbyBzaG9ydCAoezB9IGNoYXJzKSwgbWluaW11bSB7MX1cIixcbiAgICBNQVhfTEVOR1RIOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdHJpbmcgaXMgdG9vIGxvbmcgKHswfSBjaGFycyksIG1heGltdW0gezF9XCIsXG4gICAgUEFUVEVSTjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RyaW5nIGRvZXMgbm90IG1hdGNoIHBhdHRlcm4gezB9OiB7MX1cIixcblxuICAgIC8vIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yc1xuICAgIEtFWVdPUkRfVFlQRV9FWFBFQ1RFRDogICAgICAgICAgICAgICAgICBcIktleXdvcmQgJ3swfScgaXMgZXhwZWN0ZWQgdG8gYmUgb2YgdHlwZSAnezF9J1wiLFxuICAgIEtFWVdPUkRfVU5ERUZJTkVEX1NUUklDVDogICAgICAgICAgICAgICBcIktleXdvcmQgJ3swfScgbXVzdCBiZSBkZWZpbmVkIGluIHN0cmljdCBtb2RlXCIsXG4gICAgS0VZV09SRF9VTkVYUEVDVEVEOiAgICAgICAgICAgICAgICAgICAgIFwiS2V5d29yZCAnezB9JyBpcyBub3QgZXhwZWN0ZWQgdG8gYXBwZWFyIGluIHRoZSBzY2hlbWFcIixcbiAgICBLRVlXT1JEX01VU1RfQkU6ICAgICAgICAgICAgICAgICAgICAgICAgXCJLZXl3b3JkICd7MH0nIG11c3QgYmUgezF9XCIsXG4gICAgS0VZV09SRF9ERVBFTkRFTkNZOiAgICAgICAgICAgICAgICAgICAgIFwiS2V5d29yZCAnezB9JyByZXF1aXJlcyBrZXl3b3JkICd7MX0nXCIsXG4gICAgS0VZV09SRF9QQVRURVJOOiAgICAgICAgICAgICAgICAgICAgICAgIFwiS2V5d29yZCAnezB9JyBpcyBub3QgYSB2YWxpZCBSZWdFeHAgcGF0dGVybjogezF9XCIsXG4gICAgS0VZV09SRF9WQUxVRV9UWVBFOiAgICAgICAgICAgICAgICAgICAgIFwiRWFjaCBlbGVtZW50IG9mIGtleXdvcmQgJ3swfScgYXJyYXkgbXVzdCBiZSBhICd7MX0nXCIsXG4gICAgVU5LTk9XTl9GT1JNQVQ6ICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlcmUgaXMgbm8gdmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgZm9ybWF0ICd7MH0nXCIsXG4gICAgQ1VTVE9NX01PREVfRk9SQ0VfUFJPUEVSVElFUzogICAgICAgICAgIFwiezB9IG11c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBpZiBwcmVzZW50XCIsXG5cbiAgICAvLyBSZW1vdGUgZXJyb3JzXG4gICAgUkVGX1VOUkVTT0xWRUQ6ICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVmZXJlbmNlIGhhcyBub3QgYmVlbiByZXNvbHZlZCBkdXJpbmcgY29tcGlsYXRpb246IHswfVwiLFxuICAgIFVOUkVTT0xWQUJMRV9SRUZFUkVOQ0U6ICAgICAgICAgICAgICAgICBcIlJlZmVyZW5jZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6IHswfVwiLFxuICAgIFNDSEVNQV9OT1RfUkVBQ0hBQkxFOiAgICAgICAgICAgICAgICAgICBcIlZhbGlkYXRvciB3YXMgbm90IGFibGUgdG8gcmVhZCBzY2hlbWEgd2l0aCB1cmk6IHswfVwiLFxuICAgIFNDSEVNQV9UWVBFX0VYUEVDVEVEOiAgICAgICAgICAgICAgICAgICBcIlNjaGVtYSBpcyBleHBlY3RlZCB0byBiZSBvZiB0eXBlICdvYmplY3QnXCIsXG4gICAgU0NIRU1BX05PVF9BTl9PQkpFQ1Q6ICAgICAgICAgICAgICAgICAgIFwiU2NoZW1hIGlzIG5vdCBhbiBvYmplY3Q6IHswfVwiLFxuICAgIEFTWU5DX1RJTUVPVVQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBcInswfSBhc3luY2hyb25vdXMgdGFzayhzKSBoYXZlIHRpbWVkIG91dCBhZnRlciB7MX0gbXNcIixcbiAgICBQQVJFTlRfU0NIRU1BX1ZBTElEQVRJT05fRkFJTEVEOiAgICAgICAgXCJTY2hlbWEgZmFpbGVkIHRvIHZhbGlkYXRlIGFnYWluc3QgaXRzIHBhcmVudCBzY2hlbWEsIHNlZSBpbm5lciBlcnJvcnMgZm9yIGRldGFpbHMuXCIsXG4gICAgUkVNT1RFX05PVF9WQUxJRDogICAgICAgICAgICAgICAgICAgICAgIFwiUmVtb3RlIHJlZmVyZW5jZSBkaWRuJ3QgY29tcGlsZSBzdWNjZXNzZnVsbHk6IHswfVwiXG5cbn07XG4iLCIvKmpzaGludCBtYXhsZW46IGZhbHNlKi9cblxudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoXCJ2YWxpZGF0b3JcIik7XG5cbnZhciBGb3JtYXRWYWxpZGF0b3JzID0ge1xuICAgIFwiZGF0ZVwiOiBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAvXihbMC05XXs0fSktKFswLTldezJ9KS0oWzAtOV17Mn0pJC8uZXhlYyhkYXRlKTtcbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB2YXIgeWVhciA9IG1hdGNoZXNbMV07XG4gICAgICAgIC8vIHZhciBtb250aCA9IG1hdGNoZXNbMl07XG4gICAgICAgIC8vIHZhciBkYXkgPSBtYXRjaGVzWzNdO1xuICAgICAgICBpZiAobWF0Y2hlc1syXSA8IFwiMDFcIiB8fCBtYXRjaGVzWzJdID4gXCIxMlwiIHx8IG1hdGNoZXNbM10gPCBcIjAxXCIgfHwgbWF0Y2hlc1szXSA+IFwiMzFcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgXCJkYXRlLXRpbWVcIjogZnVuY3Rpb24gKGRhdGVUaW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZVRpbWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRhdGUtdGltZSBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjZcbiAgICAgICAgdmFyIHMgPSBkYXRlVGltZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwidFwiKTtcbiAgICAgICAgaWYgKCFGb3JtYXRWYWxpZGF0b3JzLmRhdGUoc1swXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWF0Y2hlcyA9IC9eKFswLTldezJ9KTooWzAtOV17Mn0pOihbMC05XXsyfSkoLlswLTldKyk/KHp8KFsrLV1bMC05XXsyfTpbMC05XXsyfSkpJC8uZXhlYyhzWzFdKTtcbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB2YXIgaG91ciA9IG1hdGNoZXNbMV07XG4gICAgICAgIC8vIHZhciBtaW51dGUgPSBtYXRjaGVzWzJdO1xuICAgICAgICAvLyB2YXIgc2Vjb25kID0gbWF0Y2hlc1szXTtcbiAgICAgICAgLy8gdmFyIGZyYWN0aW9uID0gbWF0Y2hlc1s0XTtcbiAgICAgICAgLy8gdmFyIHRpbWV6b25lID0gbWF0Y2hlc1s1XTtcbiAgICAgICAgaWYgKG1hdGNoZXNbMV0gPiBcIjIzXCIgfHwgbWF0Y2hlc1syXSA+IFwiNTlcIiB8fCBtYXRjaGVzWzNdID4gXCI1OVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBcImVtYWlsXCI6IGZ1bmN0aW9uIChlbWFpbCkge1xuICAgICAgICBpZiAodHlwZW9mIGVtYWlsICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLmlzRW1haWwoZW1haWwsIHsgXCJyZXF1aXJlX3RsZFwiOiB0cnVlIH0pO1xuICAgIH0sXG4gICAgXCJob3N0bmFtZVwiOiBmdW5jdGlvbiAoaG9zdG5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBob3N0bmFtZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgICAgIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNhbmNob3IxMTRcbiAgICAgICAgICAgIEEgc3RyaW5nIGluc3RhbmNlIGlzIHZhbGlkIGFnYWluc3QgdGhpcyBhdHRyaWJ1dGUgaWYgaXQgaXMgYSB2YWxpZFxuICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIEludGVybmV0IGhvc3QgbmFtZSwgYXMgZGVmaW5lZCBieSBSRkMgMTAzNCwgc2VjdGlvbiAzLjEgW1JGQzEwMzRdLlxuXG4gICAgICAgICAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxMDM0I3NlY3Rpb24tMy41XG5cbiAgICAgICAgICAgIDxkaWdpdD4gOjo9IGFueSBvbmUgb2YgdGhlIHRlbiBkaWdpdHMgMCB0aHJvdWdoIDlcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IC9bMC05XS87XG5cbiAgICAgICAgICAgIDxsZXR0ZXI+IDo6PSBhbnkgb25lIG9mIHRoZSA1MiBhbHBoYWJldGljIGNoYXJhY3RlcnMgQSB0aHJvdWdoIFogaW4gdXBwZXIgY2FzZSBhbmQgYSB0aHJvdWdoIHogaW4gbG93ZXIgY2FzZVxuICAgICAgICAgICAgdmFyIGxldHRlciA9IC9bYS16QS1aXS87XG5cbiAgICAgICAgICAgIDxsZXQtZGlnPiA6Oj0gPGxldHRlcj4gfCA8ZGlnaXQ+XG4gICAgICAgICAgICB2YXIgbGV0RGlnID0gL1swLTlhLXpBLVpdLztcblxuICAgICAgICAgICAgPGxldC1kaWctaHlwPiA6Oj0gPGxldC1kaWc+IHwgXCItXCJcbiAgICAgICAgICAgIHZhciBsZXREaWdIeXAgPSAvWy0wLTlhLXpBLVpdLztcblxuICAgICAgICAgICAgPGxkaC1zdHI+IDo6PSA8bGV0LWRpZy1oeXA+IHwgPGxldC1kaWctaHlwPiA8bGRoLXN0cj5cbiAgICAgICAgICAgIHZhciBsZGhTdHIgPSAvWy0wLTlhLXpBLVpdKy87XG5cbiAgICAgICAgICAgIDxsYWJlbD4gOjo9IDxsZXR0ZXI+IFsgWyA8bGRoLXN0cj4gXSA8bGV0LWRpZz4gXVxuICAgICAgICAgICAgdmFyIGxhYmVsID0gL1thLXpBLVpdKChbLTAtOWEtekEtWl0rKT9bMC05YS16QS1aXSk/LztcblxuICAgICAgICAgICAgPHN1YmRvbWFpbj4gOjo9IDxsYWJlbD4gfCA8c3ViZG9tYWluPiBcIi5cIiA8bGFiZWw+XG4gICAgICAgICAgICB2YXIgc3ViZG9tYWluID0gL15bYS16QS1aXSgoWy0wLTlhLXpBLVpdKyk/WzAtOWEtekEtWl0pPyhcXC5bYS16QS1aXSgoWy0wLTlhLXpBLVpdKyk/WzAtOWEtekEtWl0pPykqJC87XG5cbiAgICAgICAgICAgIDxkb21haW4+IDo6PSA8c3ViZG9tYWluPiB8IFwiIFwiXG4gICAgICAgICAgICB2YXIgZG9tYWluID0gbnVsbDtcbiAgICAgICAgKi9cbiAgICAgICAgdmFyIHZhbGlkID0gL15bYS16QS1aXSgoWy0wLTlhLXpBLVpdKyk/WzAtOWEtekEtWl0pPyhcXC5bYS16QS1aXSgoWy0wLTlhLXpBLVpdKyk/WzAtOWEtekEtWl0pPykqJC8udGVzdChob3N0bmFtZSk7XG4gICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgLy8gdGhlIHN1bSBvZiBhbGwgbGFiZWwgb2N0ZXRzIGFuZCBsYWJlbCBsZW5ndGhzIGlzIGxpbWl0ZWQgdG8gMjU1LlxuICAgICAgICAgICAgaWYgKGhvc3RuYW1lLmxlbmd0aCA+IDI1NSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgICAgIC8vIEVhY2ggbm9kZSBoYXMgYSBsYWJlbCwgd2hpY2ggaXMgemVybyB0byA2MyBvY3RldHMgaW4gbGVuZ3RoXG4gICAgICAgICAgICB2YXIgbGFiZWxzID0gaG9zdG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHsgaWYgKGxhYmVsc1tpXS5sZW5ndGggPiA2MykgeyByZXR1cm4gZmFsc2U7IH0gfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICB9LFxuICAgIFwiaG9zdC1uYW1lXCI6IGZ1bmN0aW9uIChob3N0bmFtZSkge1xuICAgICAgICByZXR1cm4gRm9ybWF0VmFsaWRhdG9ycy5ob3N0bmFtZS5jYWxsKHRoaXMsIGhvc3RuYW1lKTtcbiAgICB9LFxuICAgIFwiaXB2NFwiOiBmdW5jdGlvbiAoaXB2NCkge1xuICAgICAgICBpZiAodHlwZW9mIGlwdjQgIT09IFwic3RyaW5nXCIpIHsgcmV0dXJuIHRydWU7IH1cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvci5pc0lQKGlwdjQsIDQpO1xuICAgIH0sXG4gICAgXCJpcHY2XCI6IGZ1bmN0aW9uIChpcHY2KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXB2NiAhPT0gXCJzdHJpbmdcIikgeyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLmlzSVAoaXB2NiwgNik7XG4gICAgfSxcbiAgICBcInJlZ2V4XCI6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJlZ0V4cChzdHIpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJ1cmlcIjogZnVuY3Rpb24gKHVyaSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdFVyaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JtYXRWYWxpZGF0b3JzW1wic3RyaWN0LXVyaVwiXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hL2lzc3Vlcy8xOFxuICAgICAgICAvLyBSZWdFeHAgZnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I2FwcGVuZGl4LUJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1cmkgIT09IFwic3RyaW5nXCIgfHwgUmVnRXhwKFwiXigoW146Lz8jXSspOik/KC8vKFteLz8jXSopKT8oW14/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/XCIpLnRlc3QodXJpKTtcbiAgICB9LFxuICAgIFwic3RyaWN0LXVyaVwiOiBmdW5jdGlvbiAodXJpKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdXJpICE9PSBcInN0cmluZ1wiIHx8IHZhbGlkYXRvci5pc1VSTCh1cmkpO1xuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRm9ybWF0VmFsaWRhdG9ycztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgRm9ybWF0VmFsaWRhdG9ycyA9IHJlcXVpcmUoXCIuL0Zvcm1hdFZhbGlkYXRvcnNcIiksXG4gICAgUmVwb3J0ICAgICAgICAgICA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKSxcbiAgICBVdGlscyAgICAgICAgICAgID0gcmVxdWlyZShcIi4vVXRpbHNcIik7XG5cbnZhciBKc29uVmFsaWRhdG9ycyA9IHtcbiAgICBtdWx0aXBsZU9mOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMS4xLjJcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhqc29uIC8gc2NoZW1hLm11bHRpcGxlT2YpICE9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiTVVMVElQTEVfT0ZcIiwgW2pzb24sIHNjaGVtYS5tdWx0aXBsZU9mXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWF4aW11bTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjEuMi4yXG4gICAgICAgIGlmICh0eXBlb2YganNvbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGpzb24gPiBzY2hlbWEubWF4aW11bSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk1BWElNVU1cIiwgW2pzb24sIHNjaGVtYS5tYXhpbXVtXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uID49IHNjaGVtYS5tYXhpbXVtKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiTUFYSU1VTV9FWENMVVNJVkVcIiwgW2pzb24sIHNjaGVtYS5tYXhpbXVtXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgZXhjbHVzaXZlTWF4aW11bTogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBjb3ZlcmVkIGluIG1heGltdW1cbiAgICB9LFxuICAgIG1pbmltdW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjMuMlxuICAgICAgICBpZiAodHlwZW9mIGpzb24gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChqc29uIDwgc2NoZW1hLm1pbmltdW0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJNSU5JTVVNXCIsIFtqc29uLCBzY2hlbWEubWluaW11bV0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbiA8PSBzY2hlbWEubWluaW11bSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk1JTklNVU1fRVhDTFVTSVZFXCIsIFtqc29uLCBzY2hlbWEubWluaW11bV0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGV4Y2x1c2l2ZU1pbmltdW06IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gY292ZXJlZCBpbiBtaW5pbXVtXG4gICAgfSxcbiAgICBtYXhMZW5ndGg6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4yLjEuMlxuICAgICAgICBpZiAodHlwZW9mIGpzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVXRpbHMudWNzMmRlY29kZShqc29uKS5sZW5ndGggPiBzY2hlbWEubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJNQVhfTEVOR1RIXCIsIFtqc29uLmxlbmd0aCwgc2NoZW1hLm1heExlbmd0aF0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1pbkxlbmd0aDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjIuMi4yXG4gICAgICAgIGlmICh0eXBlb2YganNvbiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChVdGlscy51Y3MyZGVjb2RlKGpzb24pLmxlbmd0aCA8IHNjaGVtYS5taW5MZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk1JTl9MRU5HVEhcIiwgW2pzb24ubGVuZ3RoLCBzY2hlbWEubWluTGVuZ3RoXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcGF0dGVybjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjIuMy4yXG4gICAgICAgIGlmICh0eXBlb2YganNvbiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWdFeHAoc2NoZW1hLnBhdHRlcm4pLnRlc3QoanNvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJQQVRURVJOXCIsIFtzY2hlbWEucGF0dGVybiwganNvbl0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZGl0aW9uYWxJdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMS4yXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBvZiBcImFkZGl0aW9uYWxJdGVtc1wiIGlzIGJvb2xlYW4gdmFsdWUgZmFsc2UgYW5kIHRoZSB2YWx1ZSBvZiBcIml0ZW1zXCIgaXMgYW4gYXJyYXksXG4gICAgICAgIC8vIHRoZSBqc29uIGlzIHZhbGlkIGlmIGl0cyBzaXplIGlzIGxlc3MgdGhhbiwgb3IgZXF1YWwgdG8sIHRoZSBzaXplIG9mIFwiaXRlbXNcIi5cbiAgICAgICAgaWYgKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgPT09IGZhbHNlICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGpzb24ubGVuZ3RoID4gc2NoZW1hLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIkFSUkFZX0FERElUSU9OQUxfSVRFTVNcIiwgbnVsbCwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgaXRlbXM6IGZ1bmN0aW9uICgpIHsgLypyZXBvcnQsIHNjaGVtYSwganNvbiovXG4gICAgICAgIC8vIGNvdmVyZWQgaW4gYWRkaXRpb25hbEl0ZW1zXG4gICAgfSxcbiAgICBtYXhJdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMi4yXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqc29uLmxlbmd0aCA+IHNjaGVtYS5tYXhJdGVtcykge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQVJSQVlfTEVOR1RIX0xPTkdcIiwgW2pzb24ubGVuZ3RoLCBzY2hlbWEubWF4SXRlbXNdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtaW5JdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMy4yXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqc29uLmxlbmd0aCA8IHNjaGVtYS5taW5JdGVtcykge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQVJSQVlfTEVOR1RIX1NIT1JUXCIsIFtqc29uLmxlbmd0aCwgc2NoZW1hLm1pbkl0ZW1zXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdW5pcXVlSXRlbXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4zLjQuMlxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zID09PSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IFtdO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzVW5pcXVlQXJyYXkoanNvbiwgbWF0Y2hlcykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQVJSQVlfVU5JUVVFXCIsIG1hdGNoZXMsIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1heFByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjEuMlxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKGpzb24pICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGtleXNDb3VudCA9IE9iamVjdC5rZXlzKGpzb24pLmxlbmd0aDtcbiAgICAgICAgaWYgKGtleXNDb3VudCA+IHNjaGVtYS5tYXhQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJPQkpFQ1RfUFJPUEVSVElFU19NQVhJTVVNXCIsIFtrZXlzQ291bnQsIHNjaGVtYS5tYXhQcm9wZXJ0aWVzXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWluUHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMi4yXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoanNvbikgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIga2V5c0NvdW50ID0gT2JqZWN0LmtleXMoanNvbikubGVuZ3RoO1xuICAgICAgICBpZiAoa2V5c0NvdW50IDwgc2NoZW1hLm1pblByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk9CSkVDVF9QUk9QRVJUSUVTX01JTklNVU1cIiwgW2tleXNDb3VudCwgc2NoZW1hLm1pblByb3BlcnRpZXNdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMy4yXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoanNvbikgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLnJlcXVpcmVkLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICB2YXIgcmVxdWlyZWRQcm9wZXJ0eU5hbWUgPSBzY2hlbWEucmVxdWlyZWRbaWR4XTtcbiAgICAgICAgICAgIGlmIChqc29uW3JlcXVpcmVkUHJvcGVydHlOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiT0JKRUNUX01JU1NJTkdfUkVRVUlSRURfUFJPUEVSVFlcIiwgW3JlcXVpcmVkUHJvcGVydHlOYW1lXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBjb3ZlcmVkIGluIHByb3BlcnRpZXMgYW5kIHBhdHRlcm5Qcm9wZXJ0aWVzXG4gICAgICAgIGlmIChzY2hlbWEucHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICYmIHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gSnNvblZhbGlkYXRvcnMucHJvcGVydGllcy5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLCBqc29uKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcGF0dGVyblByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBjb3ZlcmVkIGluIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKHNjaGVtYS5wcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBKc29uVmFsaWRhdG9ycy5wcm9wZXJ0aWVzLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC40LjJcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhqc29uKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzID0gc2NoZW1hLnByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCA/IHNjaGVtYS5wcm9wZXJ0aWVzIDoge307XG4gICAgICAgIHZhciBwYXR0ZXJuUHJvcGVydGllcyA9IHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkID8gc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzIDoge307XG4gICAgICAgIGlmIChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgc2V0IG9mIHRoZSBqc29uIHRvIHZhbGlkYXRlLlxuICAgICAgICAgICAgdmFyIHMgPSBPYmplY3Qua2V5cyhqc29uKTtcbiAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBzZXQgZnJvbSBcInByb3BlcnRpZXNcIi5cbiAgICAgICAgICAgIHZhciBwID0gT2JqZWN0LmtleXMocHJvcGVydGllcyk7XG4gICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgc2V0IGZyb20gXCJwYXR0ZXJuUHJvcGVydGllc1wiLlxuICAgICAgICAgICAgdmFyIHBwID0gT2JqZWN0LmtleXMocGF0dGVyblByb3BlcnRpZXMpO1xuICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gXCJzXCIgYWxsIGVsZW1lbnRzIG9mIFwicFwiLCBpZiBhbnk7XG4gICAgICAgICAgICBzID0gVXRpbHMuZGlmZmVyZW5jZShzLCBwKTtcbiAgICAgICAgICAgIC8vIGZvciBlYWNoIHJlZ2V4IGluIFwicHBcIiwgcmVtb3ZlIGFsbCBlbGVtZW50cyBvZiBcInNcIiB3aGljaCB0aGlzIHJlZ2V4IG1hdGNoZXMuXG4gICAgICAgICAgICB2YXIgaWR4ID0gcHAubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlZ0V4cCA9IFJlZ0V4cChwcFtpZHhdKSxcbiAgICAgICAgICAgICAgICAgICAgaWR4MiA9IHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ0V4cC50ZXN0KHNbaWR4Ml0pID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzLnNwbGljZShpZHgyLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgdGhlIGpzb24gc3VjY2VlZHMgaWYsIGFmdGVyIHRoZXNlIHR3byBzdGVwcywgc2V0IFwic1wiIGlzIGVtcHR5LlxuICAgICAgICAgICAgaWYgKHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGFzc3VtZUFkZGl0aW9uYWwgY2FuIGJlIGFuIGFycmF5IG9mIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIHZhciBpZHgzID0gdGhpcy5vcHRpb25zLmFzc3VtZUFkZGl0aW9uYWwubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChpZHgzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpZHgzLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbyA9IHMuaW5kZXhPZih0aGlzLm9wdGlvbnMuYXNzdW1lQWRkaXRpb25hbFtpZHgzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW8gIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5zcGxpY2UoaW8sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFU1wiLCBbc10sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjUuMlxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKGpzb24pICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYS5kZXBlbmRlbmNpZXMpLFxuICAgICAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAvLyBpdGVyYXRlIGFsbCBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIHZhciBkZXBlbmRlbmN5TmFtZSA9IGtleXNbaWR4XTtcbiAgICAgICAgICAgIGlmIChqc29uW2RlcGVuZGVuY3lOYW1lXSkge1xuICAgICAgICAgICAgICAgIHZhciBkZXBlbmRlbmN5RGVmaW5pdGlvbiA9IHNjaGVtYS5kZXBlbmRlbmNpZXNbZGVwZW5kZW5jeU5hbWVdO1xuICAgICAgICAgICAgICAgIGlmIChVdGlscy53aGF0SXMoZGVwZW5kZW5jeURlZmluaXRpb24pID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGRlcGVuZGVuY3kgaXMgYSBzY2hlbWEsIHZhbGlkYXRlIGFnYWluc3QgdGhpcyBzY2hlbWFcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgZGVwZW5kZW5jeURlZmluaXRpb24sIGpzb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIEFycmF5XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGRlcGVuZGVuY3kgaXMgYW4gYXJyYXksIG9iamVjdCBuZWVkcyB0byBoYXZlIGFsbCBwcm9wZXJ0aWVzIGluIHRoaXMgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeDIgPSBkZXBlbmRlbmN5RGVmaW5pdGlvbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1aXJlZFByb3BlcnR5TmFtZSA9IGRlcGVuZGVuY3lEZWZpbml0aW9uW2lkeDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25bcmVxdWlyZWRQcm9wZXJ0eU5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJPQkpFQ1RfREVQRU5ERU5DWV9LRVlcIiwgW3JlcXVpcmVkUHJvcGVydHlOYW1lLCBkZXBlbmRlbmN5TmFtZV0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVudW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjEuMlxuICAgICAgICB2YXIgbWF0Y2ggPSBmYWxzZSxcbiAgICAgICAgICAgIGNhc2VJbnNlbnNpdGl2ZU1hdGNoID0gZmFsc2UsXG4gICAgICAgICAgICBpZHggPSBzY2hlbWEuZW51bS5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmFyZUVxdWFsKGpzb24sIHNjaGVtYS5lbnVtW2lkeF0pKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChVdGlscy5hcmVFcXVhbChqc29uLCBzY2hlbWEuZW51bVtpZHhdKSwgeyBjYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uOiB0cnVlIH0pIHtcbiAgICAgICAgICAgICAgICBjYXNlSW5zZW5zaXRpdmVNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3IgPSBjYXNlSW5zZW5zaXRpdmVNYXRjaCAmJiB0aGlzLm9wdGlvbnMuZW51bUNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gPyBcIkVOVU1fQ0FTRV9NSVNNQVRDSFwiIDogXCJFTlVNX01JU01BVENIXCI7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoZXJyb3IsIFtqc29uXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdHlwZTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuMi4yXG4gICAgICAgIHZhciBqc29uVHlwZSA9IFV0aWxzLndoYXRJcyhqc29uKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEudHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGpzb25UeXBlICE9PSBzY2hlbWEudHlwZSAmJiAoanNvblR5cGUgIT09IFwiaW50ZWdlclwiIHx8IHNjaGVtYS50eXBlICE9PSBcIm51bWJlclwiKSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIklOVkFMSURfVFlQRVwiLCBbc2NoZW1hLnR5cGUsIGpzb25UeXBlXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZS5pbmRleE9mKGpzb25UeXBlKSA9PT0gLTEgJiYgKGpzb25UeXBlICE9PSBcImludGVnZXJcIiB8fCBzY2hlbWEudHlwZS5pbmRleE9mKFwibnVtYmVyXCIpID09PSAtMSkpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJJTlZBTElEX1RZUEVcIiwgW3NjaGVtYS50eXBlLCBqc29uVHlwZV0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFsbE9mOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS4zLjJcbiAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS5hbGxPZi5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkYXRlUmVzdWx0ID0gZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLmFsbE9mW2lkeF0sIGpzb24pO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5icmVha09uRmlyc3RFcnJvciAmJiB2YWxpZGF0ZVJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYW55T2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjQuMlxuICAgICAgICB2YXIgc3ViUmVwb3J0cyA9IFtdLFxuICAgICAgICAgICAgcGFzc2VkID0gZmFsc2UsXG4gICAgICAgICAgICBpZHggPSBzY2hlbWEuYW55T2YubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpZHgtLSAmJiBwYXNzZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YXIgc3ViUmVwb3J0ID0gbmV3IFJlcG9ydChyZXBvcnQpO1xuICAgICAgICAgICAgc3ViUmVwb3J0cy5wdXNoKHN1YlJlcG9ydCk7XG4gICAgICAgICAgICBwYXNzZWQgPSBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgc3ViUmVwb3J0LCBzY2hlbWEuYW55T2ZbaWR4XSwganNvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFzc2VkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQU5ZX09GX01JU1NJTkdcIiwgdW5kZWZpbmVkLCBzdWJSZXBvcnRzLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBvbmVPZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNS4yXG4gICAgICAgIHZhciBwYXNzZXMgPSAwLFxuICAgICAgICAgICAgc3ViUmVwb3J0cyA9IFtdLFxuICAgICAgICAgICAgaWR4ID0gc2NoZW1hLm9uZU9mLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciBzdWJSZXBvcnQgPSBuZXcgUmVwb3J0KHJlcG9ydCwgeyBtYXhFcnJvcnM6IDEgfSk7XG4gICAgICAgICAgICBzdWJSZXBvcnRzLnB1c2goc3ViUmVwb3J0KTtcbiAgICAgICAgICAgIGlmIChleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgc3ViUmVwb3J0LCBzY2hlbWEub25lT2ZbaWR4XSwganNvbikgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBwYXNzZXMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZXMgPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk9ORV9PRl9NSVNTSU5HXCIsIHVuZGVmaW5lZCwgc3ViUmVwb3J0cywgc2NoZW1hKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXNzZXMgPiAxKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJPTkVfT0ZfTVVMVElQTEVcIiwgbnVsbCwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbm90OiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS42LjJcbiAgICAgICAgdmFyIHN1YlJlcG9ydCA9IG5ldyBSZXBvcnQocmVwb3J0KTtcbiAgICAgICAgaWYgKGV4cG9ydHMudmFsaWRhdGUuY2FsbCh0aGlzLCBzdWJSZXBvcnQsIHNjaGVtYS5ub3QsIGpzb24pID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJOT1RfUEFTU0VEXCIsIG51bGwsIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRlZmluaXRpb25zOiBmdW5jdGlvbiAoKSB7IC8qcmVwb3J0LCBzY2hlbWEsIGpzb24qL1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjcuMlxuICAgICAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmVcbiAgICB9LFxuICAgIGZvcm1hdDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi43LjJcbiAgICAgICAgdmFyIGZvcm1hdFZhbGlkYXRvckZuID0gRm9ybWF0VmFsaWRhdG9yc1tzY2hlbWEuZm9ybWF0XTtcbiAgICAgICAgaWYgKHR5cGVvZiBmb3JtYXRWYWxpZGF0b3JGbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VmFsaWRhdG9yRm4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgLy8gYXN5bmNcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkQXN5bmNUYXNrKGZvcm1hdFZhbGlkYXRvckZuLCBbanNvbl0sIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiSU5WQUxJRF9GT1JNQVRcIiwgW3NjaGVtYS5mb3JtYXQsIGpzb25dLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHN5bmNcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0VmFsaWRhdG9yRm4uY2FsbCh0aGlzLCBqc29uKSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJJTlZBTElEX0ZPUk1BVFwiLCBbc2NoZW1hLmZvcm1hdCwganNvbl0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVVbmtub3duRm9ybWF0cyAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiVU5LTk9XTl9GT1JNQVRcIiwgW3NjaGVtYS5mb3JtYXRdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIHJlY3Vyc2VBcnJheSA9IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi44LjJcblxuICAgIHZhciBpZHggPSBqc29uLmxlbmd0aDtcblxuICAgIC8vIElmIFwiaXRlbXNcIiBpcyBhbiBhcnJheSwgdGhpcyBzaXR1YXRpb24sIHRoZSBzY2hlbWEgZGVwZW5kcyBvbiB0aGUgaW5kZXg6XG4gICAgLy8gaWYgdGhlIGluZGV4IGlzIGxlc3MgdGhhbiwgb3IgZXF1YWwgdG8sIHRoZSBzaXplIG9mIFwiaXRlbXNcIixcbiAgICAvLyB0aGUgY2hpbGQgaW5zdGFuY2UgbXVzdCBiZSB2YWxpZCBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIHNjaGVtYSBpbiB0aGUgXCJpdGVtc1wiIGFycmF5O1xuICAgIC8vIG90aGVyd2lzZSwgaXQgbXVzdCBiZSB2YWxpZCBhZ2FpbnN0IHRoZSBzY2hlbWEgZGVmaW5lZCBieSBcImFkZGl0aW9uYWxJdGVtc1wiLlxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcblxuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIC8vIGVxdWFsIHRvIGRvZXNudCBtYWtlIHNlbnNlIGhlcmVcbiAgICAgICAgICAgIGlmIChpZHggPCBzY2hlbWEuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLml0ZW1zW2lkeF0sIGpzb25baWR4XSk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIG1pZ2h0IGJlIGJvb2xlYW4sIHNvIGNoZWNrIHRoYXQgaXQncyBhbiBvYmplY3RcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGUuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMsIGpzb25baWR4XSk7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2NoZW1hLml0ZW1zID09PSBcIm9iamVjdFwiKSB7XG5cbiAgICAgICAgLy8gSWYgaXRlbXMgaXMgYSBzY2hlbWEsIHRoZW4gdGhlIGNoaWxkIGluc3RhbmNlIG11c3QgYmUgdmFsaWQgYWdhaW5zdCB0aGlzIHNjaGVtYSxcbiAgICAgICAgLy8gcmVnYXJkbGVzcyBvZiBpdHMgaW5kZXgsIGFuZCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBcImFkZGl0aW9uYWxJdGVtc1wiLlxuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goaWR4LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLml0ZW1zLCBqc29uW2lkeF0pO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cblxuICAgIH1cbn07XG5cbnZhciByZWN1cnNlT2JqZWN0ID0gZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjguM1xuXG4gICAgLy8gSWYgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiIGlzIGFic2VudCwgaXQgaXMgY29uc2lkZXJlZCBwcmVzZW50IHdpdGggYW4gZW1wdHkgc2NoZW1hIGFzIGEgdmFsdWUuXG4gICAgLy8gSW4gYWRkaXRpb24sIGJvb2xlYW4gdmFsdWUgdHJ1ZSBpcyBjb25zaWRlcmVkIGVxdWl2YWxlbnQgdG8gYW4gZW1wdHkgc2NoZW1hLlxuICAgIHZhciBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcztcbiAgICBpZiAoYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IHRydWUgfHwgYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHAgLSBUaGUgcHJvcGVydHkgc2V0IGZyb20gXCJwcm9wZXJ0aWVzXCIuXG4gICAgdmFyIHAgPSBzY2hlbWEucHJvcGVydGllcyA/IE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzKSA6IFtdO1xuXG4gICAgLy8gcHAgLSBUaGUgcHJvcGVydHkgc2V0IGZyb20gXCJwYXR0ZXJuUHJvcGVydGllc1wiLiBFbGVtZW50cyBvZiB0aGlzIHNldCB3aWxsIGJlIGNhbGxlZCByZWdleGVzIGZvciBjb252ZW5pZW5jZS5cbiAgICB2YXIgcHAgPSBzY2hlbWEucGF0dGVyblByb3BlcnRpZXMgPyBPYmplY3Qua2V5cyhzY2hlbWEucGF0dGVyblByb3BlcnRpZXMpIDogW107XG5cbiAgICAvLyBtIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIGNoaWxkLlxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoanNvbiksXG4gICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgIHZhciBtID0ga2V5c1tpZHhdLFxuICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSA9IGpzb25bbV07XG5cbiAgICAgICAgLy8gcyAtIFRoZSBzZXQgb2Ygc2NoZW1hcyBmb3IgdGhlIGNoaWxkIGluc3RhbmNlLlxuICAgICAgICB2YXIgcyA9IFtdO1xuXG4gICAgICAgIC8vIDEuIElmIHNldCBcInBcIiBjb250YWlucyB2YWx1ZSBcIm1cIiwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBzY2hlbWEgaW4gXCJwcm9wZXJ0aWVzXCIgaXMgYWRkZWQgdG8gXCJzXCIuXG4gICAgICAgIGlmIChwLmluZGV4T2YobSkgIT09IC0xKSB7XG4gICAgICAgICAgICBzLnB1c2goc2NoZW1hLnByb3BlcnRpZXNbbV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gRm9yIGVhY2ggcmVnZXggaW4gXCJwcFwiLCBpZiBpdCBtYXRjaGVzIFwibVwiIHN1Y2Nlc3NmdWxseSwgdGhlIGNvcnJlc3BvbmRpbmcgc2NoZW1hIGluIFwicGF0dGVyblByb3BlcnRpZXNcIiBpcyBhZGRlZCB0byBcInNcIi5cbiAgICAgICAgdmFyIGlkeDIgPSBwcC5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgIHZhciByZWdleFN0cmluZyA9IHBwW2lkeDJdO1xuICAgICAgICAgICAgaWYgKFJlZ0V4cChyZWdleFN0cmluZykudGVzdChtKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHMucHVzaChzY2hlbWEucGF0dGVyblByb3BlcnRpZXNbcmVnZXhTdHJpbmddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFRoZSBzY2hlbWEgZGVmaW5lZCBieSBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIgaXMgYWRkZWQgdG8gXCJzXCIgaWYgYW5kIG9ubHkgaWYsIGF0IHRoaXMgc3RhZ2UsIFwic1wiIGlzIGVtcHR5LlxuICAgICAgICBpZiAocy5sZW5ndGggPT09IDAgJiYgYWRkaXRpb25hbFByb3BlcnRpZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzLnB1c2goYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2UgYXJlIHBhc3NpbmcgdGVzdHMgZXZlbiB3aXRob3V0IHRoaXMgYXNzZXJ0IGJlY2F1c2UgdGhpcyBpcyBjb3ZlcmVkIGJ5IHByb3BlcnRpZXMgY2hlY2tcbiAgICAgICAgLy8gaWYgcyBpcyBlbXB0eSBpbiB0aGlzIHN0YWdlLCBubyBhZGRpdGlvbmFsUHJvcGVydGllcyBhcmUgYWxsb3dlZFxuICAgICAgICAvLyByZXBvcnQuZXhwZWN0KHMubGVuZ3RoICE9PSAwLCAnRTAwMScsIG0pO1xuXG4gICAgICAgIC8vIEluc3RhbmNlIHByb3BlcnR5IHZhbHVlIG11c3QgcGFzcyBhbGwgc2NoZW1hcyBmcm9tIHNcbiAgICAgICAgaWR4MiA9IHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4Mi0tKSB7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKG0pO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc1tpZHgyXSwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydHMudmFsaWRhdGUgPSBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcblxuICAgIHJlcG9ydC5jb21tb25FcnJvck1lc3NhZ2UgPSBcIkpTT05fT0JKRUNUX1ZBTElEQVRJT05fRkFJTEVEXCI7XG5cbiAgICAvLyBjaGVjayBpZiBzY2hlbWEgaXMgYW4gb2JqZWN0XG4gICAgdmFyIHRvID0gVXRpbHMud2hhdElzKHNjaGVtYSk7XG4gICAgaWYgKHRvICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlNDSEVNQV9OT1RfQU5fT0JKRUNUXCIsIFt0b10sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBzY2hlbWEgaXMgZW1wdHksIGV2ZXJ5dGhpbmcgaXMgdmFsaWQgYWdhaW5zdCBlbXB0eSBzY2hlbWFcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgcmVjdXJzaXZlbHksIHNvIHdlIG5lZWQgdG8gcmVtZW1iZXIgb3VyIHJvb3RcbiAgICB2YXIgaXNSb290ID0gZmFsc2U7XG4gICAgaWYgKCFyZXBvcnQucm9vdFNjaGVtYSkge1xuICAgICAgICByZXBvcnQucm9vdFNjaGVtYSA9IHNjaGVtYTtcbiAgICAgICAgaXNSb290ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBmb2xsb3cgc2NoZW1hLiRyZWYga2V5c1xuICAgIGlmIChzY2hlbWEuJHJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGF2b2lkIGluZmluaXRlIGxvb3Agd2l0aCBtYXhSZWZzXG4gICAgICAgIHZhciBtYXhSZWZzID0gOTk7XG4gICAgICAgIHdoaWxlIChzY2hlbWEuJHJlZiAmJiBtYXhSZWZzID4gMCkge1xuICAgICAgICAgICAgaWYgKCFzY2hlbWEuX18kcmVmUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJSRUZfVU5SRVNPTFZFRFwiLCBbc2NoZW1hLiRyZWZdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuX18kcmVmUmVzb2x2ZWQgPT09IHNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEgPSBzY2hlbWEuX18kcmVmUmVzb2x2ZWQ7XG4gICAgICAgICAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXhSZWZzLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heFJlZnMgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNpcmN1bGFyIGRlcGVuZGVuY3kgYnkgJHJlZiByZWZlcmVuY2VzIVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHR5cGUgY2hlY2tpbmcgZmlyc3RcbiAgICB2YXIganNvblR5cGUgPSBVdGlscy53aGF0SXMoanNvbik7XG4gICAgaWYgKHNjaGVtYS50eXBlKSB7XG4gICAgICAgIGtleXMuc3BsaWNlKGtleXMuaW5kZXhPZihcInR5cGVcIiksIDEpO1xuICAgICAgICBKc29uVmFsaWRhdG9ycy50eXBlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgICAgICBpZiAocmVwb3J0LmVycm9ycy5sZW5ndGggJiYgdGhpcy5vcHRpb25zLmJyZWFrT25GaXJzdEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBub3cgaXRlcmF0ZSBhbGwgdGhlIGtleXMgaW4gc2NoZW1hIGFuZCBleGVjdXRlIHZhbGlkYXRpb24gbWV0aG9kc1xuICAgIHZhciBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgaWYgKEpzb25WYWxpZGF0b3JzW2tleXNbaWR4XV0pIHtcbiAgICAgICAgICAgIEpzb25WYWxpZGF0b3JzW2tleXNbaWR4XV0uY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgICAgICAgICBpZiAocmVwb3J0LmVycm9ycy5sZW5ndGggJiYgdGhpcy5vcHRpb25zLmJyZWFrT25GaXJzdEVycm9yKSB7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVwb3J0LmVycm9ycy5sZW5ndGggPT09IDAgfHwgdGhpcy5vcHRpb25zLmJyZWFrT25GaXJzdEVycm9yID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoanNvblR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgICAgICAgICAgcmVjdXJzZUFycmF5LmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgICAgICB9IGVsc2UgaWYgKGpzb25UeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZWN1cnNlT2JqZWN0LmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRvcihyZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgfVxuXG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0aGUgcm9vdCBwb2ludGVyIGFueW1vcmVcbiAgICBpZiAoaXNSb290KSB7XG4gICAgICAgIHJlcG9ydC5yb290U2NoZW1hID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB2YWxpZCBqdXN0IHRvIGJlIGFibGUgdG8gYnJlYWsgYXQgc29tZSBjb2RlIHBvaW50c1xuICAgIHJldHVybiByZXBvcnQuZXJyb3JzLmxlbmd0aCA9PT0gMDtcblxufTtcbiIsIi8vIE51bWJlci5pc0Zpbml0ZSBwb2x5ZmlsbFxuLy8gaHR0cDovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtbnVtYmVyLmlzZmluaXRlXG5pZiAodHlwZW9mIE51bWJlci5pc0Zpbml0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgTnVtYmVyLmlzRmluaXRlID0gZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgICAgLy8gMS4gSWYgVHlwZShudW1iZXIpIGlzIG5vdCBOdW1iZXIsIHJldHVybiBmYWxzZS5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDIuIElmIG51bWJlciBpcyBOYU4sICviiJ4sIG9yIOKIkuKIniwgcmV0dXJuIGZhbHNlLlxuICAgICAgICBpZiAodmFsdWUgIT09IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eSB8fCB2YWx1ZSA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4gT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgZ2V0ICAgID0gcmVxdWlyZShcImxvZGFzaC5nZXRcIik7XG52YXIgRXJyb3JzID0gcmVxdWlyZShcIi4vRXJyb3JzXCIpO1xudmFyIFV0aWxzICA9IHJlcXVpcmUoXCIuL1V0aWxzXCIpO1xuXG5mdW5jdGlvbiBSZXBvcnQocGFyZW50T3JPcHRpb25zLCByZXBvcnRPcHRpb25zKSB7XG4gICAgdGhpcy5wYXJlbnRSZXBvcnQgPSBwYXJlbnRPck9wdGlvbnMgaW5zdGFuY2VvZiBSZXBvcnQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE9yT3B0aW9ucyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5vcHRpb25zID0gcGFyZW50T3JPcHRpb25zIGluc3RhbmNlb2YgUmVwb3J0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50T3JPcHRpb25zLm9wdGlvbnMgOlxuICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPck9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLnJlcG9ydE9wdGlvbnMgPSByZXBvcnRPcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICB0aGlzLnBhdGggPSBbXTtcbiAgICB0aGlzLmFzeW5jVGFza3MgPSBbXTtcbn1cblxuUmVwb3J0LnByb3RvdHlwZS5pc1ZhbGlkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmFzeW5jVGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyB0YXNrcyBwZW5kaW5nLCBjYW4ndCBhbnN3ZXIgaXNWYWxpZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cblJlcG9ydC5wcm90b3R5cGUuYWRkQXN5bmNUYXNrID0gZnVuY3Rpb24gKGZuLCBhcmdzLCBhc3luY1Rhc2tSZXN1bHRQcm9jZXNzRm4pIHtcbiAgICB0aGlzLmFzeW5jVGFza3MucHVzaChbZm4sIGFyZ3MsIGFzeW5jVGFza1Jlc3VsdFByb2Nlc3NGbl0pO1xufTtcblxuUmVwb3J0LnByb3RvdHlwZS5wcm9jZXNzQXN5bmNUYXNrcyA9IGZ1bmN0aW9uICh0aW1lb3V0LCBjYWxsYmFjaykge1xuXG4gICAgdmFyIHZhbGlkYXRpb25UaW1lb3V0ID0gdGltZW91dCB8fCAyMDAwLFxuICAgICAgICB0YXNrc0NvdW50ICAgICAgICA9IHRoaXMuYXN5bmNUYXNrcy5sZW5ndGgsXG4gICAgICAgIGlkeCAgICAgICAgICAgICAgID0gdGFza3NDb3VudCxcbiAgICAgICAgdGltZWRPdXQgICAgICAgICAgPSBmYWxzZSxcbiAgICAgICAgc2VsZiAgICAgICAgICAgICAgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gZmluaXNoKCkge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZCA9IHNlbGYuZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgICAgICBlcnIgPSB2YWxpZCA/IHVuZGVmaW5lZCA6IHNlbGYuZXJyb3JzO1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyLCB2YWxpZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc3BvbmQoYXN5bmNUYXNrUmVzdWx0UHJvY2Vzc0ZuKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoYXN5bmNUYXNrUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAodGltZWRPdXQpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgICBhc3luY1Rhc2tSZXN1bHRQcm9jZXNzRm4oYXN5bmNUYXNrUmVzdWx0KTtcbiAgICAgICAgICAgIGlmICgtLXRhc2tzQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmaW5pc2ggaWYgdGFza3MgYXJlIGNvbXBsZXRlZCBvciB0aGVyZSBhcmUgYW55IGVycm9ycyBhbmQgYnJlYWtpbmcgb24gZmlyc3QgZXJyb3Igd2FzIHJlcXVlc3RlZFxuICAgIGlmICh0YXNrc0NvdW50ID09PSAwIHx8ICh0aGlzLmVycm9ycy5sZW5ndGggPiAwICYmIHRoaXMub3B0aW9ucy5icmVha09uRmlyc3RFcnJvcikpIHtcbiAgICAgICAgZmluaXNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIHRhc2sgPSB0aGlzLmFzeW5jVGFza3NbaWR4XTtcbiAgICAgICAgdGFza1swXS5hcHBseShudWxsLCB0YXNrWzFdLmNvbmNhdChyZXNwb25kKHRhc2tbMl0pKSk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0YXNrc0NvdW50ID4gMCkge1xuICAgICAgICAgICAgdGltZWRPdXQgPSB0cnVlO1xuICAgICAgICAgICAgc2VsZi5hZGRFcnJvcihcIkFTWU5DX1RJTUVPVVRcIiwgW3Rhc2tzQ291bnQsIHZhbGlkYXRpb25UaW1lb3V0XSk7XG4gICAgICAgICAgICBjYWxsYmFjayhzZWxmLmVycm9ycywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgdmFsaWRhdGlvblRpbWVvdXQpO1xuXG59O1xuXG5SZXBvcnQucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAocmV0dXJuUGF0aEFzU3RyaW5nKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRSZXBvcnQpIHtcbiAgICAgICAgcGF0aCA9IHBhdGguY29uY2F0KHRoaXMucGFyZW50UmVwb3J0LnBhdGgpO1xuICAgIH1cbiAgICBwYXRoID0gcGF0aC5jb25jYXQodGhpcy5wYXRoKTtcblxuICAgIGlmIChyZXR1cm5QYXRoQXNTdHJpbmcgIT09IHRydWUpIHtcbiAgICAgICAgLy8gU2FuaXRpemUgdGhlIHBhdGggc2VnbWVudHMgKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi00KVxuICAgICAgICBwYXRoID0gXCIjL1wiICsgcGF0aC5tYXAoZnVuY3Rpb24gKHNlZ21lbnQpIHtcblxuICAgICAgICAgICAgaWYgKFV0aWxzLmlzQWJzb2x1dGVVcmkoc2VnbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ1cmkoXCIgKyBzZWdtZW50ICsgXCIpXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWdtZW50LnJlcGxhY2UoL1xcfi9nLCBcIn4wXCIpLnJlcGxhY2UoL1xcLy9nLCBcIn4xXCIpO1xuICAgICAgICB9KS5qb2luKFwiL1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59O1xuXG5SZXBvcnQucHJvdG90eXBlLmdldFNjaGVtYUlkID0gZnVuY3Rpb24gKCkge1xuXG4gICAgaWYgKCF0aGlzLnJvb3RTY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBlcnJvciBwYXRoIGFzIGFuIGFycmF5XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRSZXBvcnQpIHtcbiAgICAgICAgcGF0aCA9IHBhdGguY29uY2F0KHRoaXMucGFyZW50UmVwb3J0LnBhdGgpO1xuICAgIH1cbiAgICBwYXRoID0gcGF0aC5jb25jYXQodGhpcy5wYXRoKTtcblxuICAgIC8vIHRyeSB0byBmaW5kIGlkIGluIHRoZSBlcnJvciBwYXRoXG4gICAgd2hpbGUgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgb2JqID0gZ2V0KHRoaXMucm9vdFNjaGVtYSwgcGF0aCk7XG4gICAgICAgIGlmIChvYmogJiYgb2JqLmlkKSB7IHJldHVybiBvYmouaWQ7IH1cbiAgICAgICAgcGF0aC5wb3AoKTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gaWQgb2YgdGhlIHJvb3RcbiAgICByZXR1cm4gdGhpcy5yb290U2NoZW1hLmlkO1xufTtcblxuUmVwb3J0LnByb3RvdHlwZS5oYXNFcnJvciA9IGZ1bmN0aW9uIChlcnJvckNvZGUsIHBhcmFtcykge1xuICAgIHZhciBpZHggPSB0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgIGlmICh0aGlzLmVycm9yc1tpZHhdLmNvZGUgPT09IGVycm9yQ29kZSkge1xuICAgICAgICAgICAgLy8gYXNzdW1lIG1hdGNoXG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBjaGVjayB0aGUgcGFyYW1zIHRvb1xuICAgICAgICAgICAgdmFyIGlkeDIgPSB0aGlzLmVycm9yc1tpZHhdLnBhcmFtcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4Mi0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyb3JzW2lkeF0ucGFyYW1zW2lkeDJdICE9PSBwYXJhbXNbaWR4Ml0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIG1hdGNoLCByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgaWYgKG1hdGNoKSB7IHJldHVybiBtYXRjaDsgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cblJlcG9ydC5wcm90b3R5cGUuYWRkRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JDb2RlLCBwYXJhbXMsIHN1YlJlcG9ydHMsIHNjaGVtYSkge1xuICAgIGlmICghZXJyb3JDb2RlKSB7IHRocm93IG5ldyBFcnJvcihcIk5vIGVycm9yQ29kZSBwYXNzZWQgaW50byBhZGRFcnJvcigpXCIpOyB9XG5cbiAgICB0aGlzLmFkZEN1c3RvbUVycm9yKGVycm9yQ29kZSwgRXJyb3JzW2Vycm9yQ29kZV0sIHBhcmFtcywgc3ViUmVwb3J0cywgc2NoZW1hKTtcbn07XG5cblJlcG9ydC5wcm90b3R5cGUuYWRkQ3VzdG9tRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIHBhcmFtcywgc3ViUmVwb3J0cywgc2NoZW1hKSB7XG4gICAgaWYgKHRoaXMuZXJyb3JzLmxlbmd0aCA+PSB0aGlzLnJlcG9ydE9wdGlvbnMubWF4RXJyb3JzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWVycm9yTWVzc2FnZSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJObyBlcnJvck1lc3NhZ2Uga25vd24gZm9yIGNvZGUgXCIgKyBlcnJvckNvZGUpOyB9XG5cbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwgW107XG5cbiAgICB2YXIgaWR4ID0gcGFyYW1zLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIHdoYXRJcyA9IFV0aWxzLndoYXRJcyhwYXJhbXNbaWR4XSk7XG4gICAgICAgIHZhciBwYXJhbSA9ICh3aGF0SXMgPT09IFwib2JqZWN0XCIgfHwgd2hhdElzID09PSBcIm51bGxcIikgPyBKU09OLnN0cmluZ2lmeShwYXJhbXNbaWR4XSkgOiBwYXJhbXNbaWR4XTtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLnJlcGxhY2UoXCJ7XCIgKyBpZHggKyBcIn1cIiwgcGFyYW0pO1xuICAgIH1cblxuICAgIHZhciBlcnIgPSB7XG4gICAgICAgIGNvZGU6IGVycm9yQ29kZSxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKHRoaXMub3B0aW9ucy5yZXBvcnRQYXRoQXNBcnJheSksXG4gICAgICAgIHNjaGVtYUlkOiB0aGlzLmdldFNjaGVtYUlkKClcbiAgICB9O1xuXG4gICAgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGVyci5kZXNjcmlwdGlvbiA9IHNjaGVtYTtcbiAgICB9IGVsc2UgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChzY2hlbWEudGl0bGUpIHtcbiAgICAgICAgICAgIGVyci50aXRsZSA9IHNjaGVtYS50aXRsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBlcnIuZGVzY3JpcHRpb24gPSBzY2hlbWEuZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3ViUmVwb3J0cyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShzdWJSZXBvcnRzKSkge1xuICAgICAgICAgICAgc3ViUmVwb3J0cyA9IFtzdWJSZXBvcnRzXTtcbiAgICAgICAgfVxuICAgICAgICBlcnIuaW5uZXIgPSBbXTtcbiAgICAgICAgaWR4ID0gc3ViUmVwb3J0cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIHN1YlJlcG9ydCA9IHN1YlJlcG9ydHNbaWR4XSxcbiAgICAgICAgICAgICAgICBpZHgyID0gc3ViUmVwb3J0LmVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4Mi0tKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlubmVyLnB1c2goc3ViUmVwb3J0LmVycm9yc1tpZHgyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyci5pbm5lci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGVyci5pbm5lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXJyb3JzLnB1c2goZXJyKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVwb3J0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc2VxdWFsICAgICAgICAgICAgID0gcmVxdWlyZShcImxvZGFzaC5pc2VxdWFsXCIpO1xudmFyIFJlcG9ydCAgICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9SZXBvcnRcIik7XG52YXIgU2NoZW1hQ29tcGlsYXRpb24gICA9IHJlcXVpcmUoXCIuL1NjaGVtYUNvbXBpbGF0aW9uXCIpO1xudmFyIFNjaGVtYVZhbGlkYXRpb24gICAgPSByZXF1aXJlKFwiLi9TY2hlbWFWYWxpZGF0aW9uXCIpO1xudmFyIFV0aWxzICAgICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9VdGlsc1wiKTtcblxuZnVuY3Rpb24gZGVjb2RlSlNPTlBvaW50ZXIoc3RyKSB7XG4gICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1hcHBzYXdnLWpzb24tcG9pbnRlci0wNyNzZWN0aW9uLTNcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvflswLTFdL2csIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4ID09PSBcIn4xXCIgPyBcIi9cIiA6IFwiflwiO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRSZW1vdGVQYXRoKHVyaSkge1xuICAgIHZhciBpbyA9IHVyaS5pbmRleE9mKFwiI1wiKTtcbiAgICByZXR1cm4gaW8gPT09IC0xID8gdXJpIDogdXJpLnNsaWNlKDAsIGlvKTtcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlQYXRoKHVyaSkge1xuICAgIHZhciBpbyA9IHVyaS5pbmRleE9mKFwiI1wiKTtcbiAgICB2YXIgcmVzID0gaW8gPT09IC0xID8gdW5kZWZpbmVkIDogdXJpLnNsaWNlKGlvICsgMSk7XG4gICAgLy8gV0FSTjogZG8gbm90IHNsaWNlIHNsYXNoLCAjLyBtZWFucyB0YWtlIHJvb3QgYW5kIGdvIGRvd24gZnJvbSBpdFxuICAgIC8vIGlmIChyZXMgJiYgcmVzWzBdID09PSBcIi9cIikgeyByZXMgPSByZXMuc2xpY2UoMSk7IH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBmaW5kSWQoc2NoZW1hLCBpZCkge1xuICAgIC8vIHByb2Nlc3Mgb25seSBhcnJheXMgYW5kIG9iamVjdHNcbiAgICBpZiAodHlwZW9mIHNjaGVtYSAhPT0gXCJvYmplY3RcIiB8fCBzY2hlbWEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5vIGlkIG1lYW5zIHJvb3Qgc28gcmV0dXJuIGl0c2VsZlxuICAgIGlmICghaWQpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmlkKSB7XG4gICAgICAgIGlmIChzY2hlbWEuaWQgPT09IGlkIHx8IHNjaGVtYS5pZFswXSA9PT0gXCIjXCIgJiYgc2NoZW1hLmlkLnN1YnN0cmluZygxKSA9PT0gaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaWR4LCByZXN1bHQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICBpZHggPSBzY2hlbWEubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRJZChzY2hlbWFbaWR4XSwgaWQpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciBrID0ga2V5c1tpZHhdO1xuICAgICAgICAgICAgaWYgKGsuaW5kZXhPZihcIl9fJFwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gZmluZElkKHNjaGVtYVtrXSwgaWQpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydHMuY2FjaGVTY2hlbWFCeVVyaSA9IGZ1bmN0aW9uICh1cmksIHNjaGVtYSkge1xuICAgIHZhciByZW1vdGVQYXRoID0gZ2V0UmVtb3RlUGF0aCh1cmkpO1xuICAgIGlmIChyZW1vdGVQYXRoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVbcmVtb3RlUGF0aF0gPSBzY2hlbWE7XG4gICAgfVxufTtcblxuZXhwb3J0cy5yZW1vdmVGcm9tQ2FjaGVCeVVyaSA9IGZ1bmN0aW9uICh1cmkpIHtcbiAgICB2YXIgcmVtb3RlUGF0aCA9IGdldFJlbW90ZVBhdGgodXJpKTtcbiAgICBpZiAocmVtb3RlUGF0aCkge1xuICAgICAgICBkZWxldGUgdGhpcy5jYWNoZVtyZW1vdGVQYXRoXTtcbiAgICB9XG59O1xuXG5leHBvcnRzLmNoZWNrQ2FjaGVGb3JVcmkgPSBmdW5jdGlvbiAodXJpKSB7XG4gICAgdmFyIHJlbW90ZVBhdGggPSBnZXRSZW1vdGVQYXRoKHVyaSk7XG4gICAgcmV0dXJuIHJlbW90ZVBhdGggPyB0aGlzLmNhY2hlW3JlbW90ZVBhdGhdICE9IG51bGwgOiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuZ2V0U2NoZW1hID0gZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgc2NoZW1hID0gZXhwb3J0cy5nZXRTY2hlbWFCeVJlZmVyZW5jZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgc2NoZW1hID0gZXhwb3J0cy5nZXRTY2hlbWFCeVVyaS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmV4cG9ydHMuZ2V0U2NoZW1hQnlSZWZlcmVuY2UgPSBmdW5jdGlvbiAocmVwb3J0LCBrZXkpIHtcbiAgICB2YXIgaSA9IHRoaXMucmVmZXJlbmNlQ2FjaGUubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgaWYgKGlzZXF1YWwodGhpcy5yZWZlcmVuY2VDYWNoZVtpXVswXSwga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlQ2FjaGVbaV1bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gbm90IGZvdW5kXG4gICAgdmFyIHNjaGVtYSA9IFV0aWxzLmNsb25lRGVlcChrZXkpO1xuICAgIHRoaXMucmVmZXJlbmNlQ2FjaGUucHVzaChba2V5LCBzY2hlbWFdKTtcbiAgICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0cy5nZXRTY2hlbWFCeVVyaSA9IGZ1bmN0aW9uIChyZXBvcnQsIHVyaSwgcm9vdCkge1xuICAgIHZhciByZW1vdGVQYXRoID0gZ2V0UmVtb3RlUGF0aCh1cmkpLFxuICAgICAgICBxdWVyeVBhdGggPSBnZXRRdWVyeVBhdGgodXJpKSxcbiAgICAgICAgcmVzdWx0ID0gcmVtb3RlUGF0aCA/IHRoaXMuY2FjaGVbcmVtb3RlUGF0aF0gOiByb290O1xuXG4gICAgaWYgKHJlc3VsdCAmJiByZW1vdGVQYXRoKSB7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gYXZvaWQgY29tcGlsaW5nIHNjaGVtYXMgaW4gYSByZWN1cnNpdmUgbG9vcFxuICAgICAgICB2YXIgY29tcGlsZVJlbW90ZSA9IHJlc3VsdCAhPT0gcm9vdDtcbiAgICAgICAgLy8gbm93IHdlIG5lZWQgdG8gY29tcGlsZSBhbmQgdmFsaWRhdGUgcmVzb2x2ZWQgc2NoZW1hIChpbiBjYXNlIGl0J3Mgbm90IGFscmVhZHkpXG4gICAgICAgIGlmIChjb21waWxlUmVtb3RlKSB7XG5cbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2gocmVtb3RlUGF0aCk7XG5cbiAgICAgICAgICAgIHZhciByZW1vdGVSZXBvcnQgPSBuZXcgUmVwb3J0KHJlcG9ydCk7XG4gICAgICAgICAgICBpZiAoU2NoZW1hQ29tcGlsYXRpb24uY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHJlbW90ZVJlcG9ydCwgcmVzdWx0KSkge1xuICAgICAgICAgICAgICAgIHZhciBzYXZlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgY3VzdG9tIHZhbGlkYXRpb25PcHRpb25zIHdlcmUgcHJvdmlkZWQgdG8gc2V0UmVtb3RlUmVmZXJlbmNlKCksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aGVtIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXN1bHQuX18kdmFsaWRhdGlvbk9wdGlvbnMgfHwgdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICBTY2hlbWFWYWxpZGF0aW9uLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVtb3RlUmVwb3J0LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHNhdmVkT3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVtb3RlUmVwb3J0SXNWYWxpZCA9IHJlbW90ZVJlcG9ydC5pc1ZhbGlkKCk7XG4gICAgICAgICAgICBpZiAoIXJlbW90ZVJlcG9ydElzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJSRU1PVEVfTk9UX1ZBTElEXCIsIFt1cmldLCByZW1vdGVSZXBvcnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKCFyZW1vdGVSZXBvcnRJc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgJiYgcXVlcnlQYXRoKSB7XG4gICAgICAgIHZhciBwYXJ0cyA9IHF1ZXJ5UGF0aC5zcGxpdChcIi9cIik7XG4gICAgICAgIGZvciAodmFyIGlkeCA9IDAsIGxpbSA9IHBhcnRzLmxlbmd0aDsgcmVzdWx0ICYmIGlkeCA8IGxpbTsgaWR4KyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBkZWNvZGVKU09OUG9pbnRlcihwYXJ0c1tpZHhdKTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IDApIHsgLy8gaXQncyBhbiBpZFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRJZChyZXN1bHQsIGtleSk7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBpdCdzIGEgcGF0aCBiZWhpbmQgaWRcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnRzLmdldFJlbW90ZVBhdGggPSBnZXRSZW1vdGVQYXRoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBSZXBvcnQgICAgICA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbnZhciBTY2hlbWFDYWNoZSA9IHJlcXVpcmUoXCIuL1NjaGVtYUNhY2hlXCIpO1xudmFyIFV0aWxzICAgICAgID0gcmVxdWlyZShcIi4vVXRpbHNcIik7XG5cbmZ1bmN0aW9uIG1lcmdlUmVmZXJlbmNlKHNjb3BlLCByZWYpIHtcbiAgICBpZiAoVXRpbHMuaXNBYnNvbHV0ZVVyaShyZWYpKSB7XG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfVxuXG4gICAgdmFyIGpvaW5lZFNjb3BlID0gc2NvcGUuam9pbihcIlwiKSxcbiAgICAgICAgaXNTY29wZUFic29sdXRlID0gVXRpbHMuaXNBYnNvbHV0ZVVyaShqb2luZWRTY29wZSksXG4gICAgICAgIGlzU2NvcGVSZWxhdGl2ZSA9IFV0aWxzLmlzUmVsYXRpdmVVcmkoam9pbmVkU2NvcGUpLFxuICAgICAgICBpc1JlZlJlbGF0aXZlID0gVXRpbHMuaXNSZWxhdGl2ZVVyaShyZWYpLFxuICAgICAgICB0b1JlbW92ZTtcblxuICAgIGlmIChpc1Njb3BlQWJzb2x1dGUgJiYgaXNSZWZSZWxhdGl2ZSkge1xuICAgICAgICB0b1JlbW92ZSA9IGpvaW5lZFNjb3BlLm1hdGNoKC9cXC9bXlxcL10qJC8pO1xuICAgICAgICBpZiAodG9SZW1vdmUpIHtcbiAgICAgICAgICAgIGpvaW5lZFNjb3BlID0gam9pbmVkU2NvcGUuc2xpY2UoMCwgdG9SZW1vdmUuaW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTY29wZVJlbGF0aXZlICYmIGlzUmVmUmVsYXRpdmUpIHtcbiAgICAgICAgam9pbmVkU2NvcGUgPSBcIlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvUmVtb3ZlID0gam9pbmVkU2NvcGUubWF0Y2goL1teIy9dKyQvKTtcbiAgICAgICAgaWYgKHRvUmVtb3ZlKSB7XG4gICAgICAgICAgICBqb2luZWRTY29wZSA9IGpvaW5lZFNjb3BlLnNsaWNlKDAsIHRvUmVtb3ZlLmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXMgPSBqb2luZWRTY29wZSArIHJlZjtcbiAgICByZXMgPSByZXMucmVwbGFjZSgvIyMvLCBcIiNcIik7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29sbGVjdFJlZmVyZW5jZXMob2JqLCByZXN1bHRzLCBzY29wZSwgcGF0aCkge1xuICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuICAgIHNjb3BlID0gc2NvcGUgfHwgW107XG4gICAgcGF0aCA9IHBhdGggfHwgW107XG5cbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiB8fCBvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmouaWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgc2NvcGUucHVzaChvYmouaWQpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqLiRyZWYgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIG9iai5fXyRyZWZSZXNvbHZlZCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgcmVmOiBtZXJnZVJlZmVyZW5jZShzY29wZSwgb2JqLiRyZWYpLFxuICAgICAgICAgICAga2V5OiBcIiRyZWZcIixcbiAgICAgICAgICAgIG9iajogb2JqLFxuICAgICAgICAgICAgcGF0aDogcGF0aC5zbGljZSgwKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmouJHNjaGVtYSA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2Ygb2JqLl9fJHNjaGVtYVJlc29sdmVkID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICByZWY6IG1lcmdlUmVmZXJlbmNlKHNjb3BlLCBvYmouJHNjaGVtYSksXG4gICAgICAgICAgICBrZXk6IFwiJHNjaGVtYVwiLFxuICAgICAgICAgICAgb2JqOiBvYmosXG4gICAgICAgICAgICBwYXRoOiBwYXRoLnNsaWNlKDApXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBpZHg7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICBpZHggPSBvYmoubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlcyhvYmpbaWR4XSwgcmVzdWx0cywgc2NvcGUsIHBhdGgpO1xuICAgICAgICAgICAgcGF0aC5wb3AoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgLy8gZG8gbm90IHJlY3Vyc2UgdGhyb3VnaCByZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBvdGhlciB6LXNjaGVtYSBwcm9wc1xuICAgICAgICAgICAgaWYgKGtleXNbaWR4XS5pbmRleE9mKFwiX18kXCIpID09PSAwKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICBwYXRoLnB1c2goa2V5c1tpZHhdKTtcbiAgICAgICAgICAgIGNvbGxlY3RSZWZlcmVuY2VzKG9ialtrZXlzW2lkeF1dLCByZXN1bHRzLCBzY29wZSwgcGF0aCk7XG4gICAgICAgICAgICBwYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmouaWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgc2NvcGUucG9wKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbnZhciBjb21waWxlQXJyYXlPZlNjaGVtYXNMb29wID0gZnVuY3Rpb24gKG1haW5SZXBvcnQsIGFycikge1xuICAgIHZhciBpZHggPSBhcnIubGVuZ3RoLFxuICAgICAgICBjb21waWxlZENvdW50ID0gMDtcblxuICAgIHdoaWxlIChpZHgtLSkge1xuXG4gICAgICAgIC8vIHRyeSB0byBjb21waWxlIGVhY2ggc2NoZW1hIHNlcGFyYXRlbHlcbiAgICAgICAgdmFyIHJlcG9ydCA9IG5ldyBSZXBvcnQobWFpblJlcG9ydCk7XG4gICAgICAgIHZhciBpc1ZhbGlkID0gZXhwb3J0cy5jb21waWxlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBhcnJbaWR4XSk7XG4gICAgICAgIGlmIChpc1ZhbGlkKSB7IGNvbXBpbGVkQ291bnQrKzsgfVxuXG4gICAgICAgIC8vIGNvcHkgZXJyb3JzIHRvIHJlcG9ydFxuICAgICAgICBtYWluUmVwb3J0LmVycm9ycyA9IG1haW5SZXBvcnQuZXJyb3JzLmNvbmNhdChyZXBvcnQuZXJyb3JzKTtcblxuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZENvdW50O1xufTtcblxuZnVuY3Rpb24gZmluZElkKGFyciwgaWQpIHtcbiAgICB2YXIgaWR4ID0gYXJyLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgaWYgKGFycltpZHhdLmlkID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIGFycltpZHhdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG52YXIgY29tcGlsZUFycmF5T2ZTY2hlbWFzID0gZnVuY3Rpb24gKHJlcG9ydCwgYXJyKSB7XG5cbiAgICB2YXIgY29tcGlsZWQgPSAwLFxuICAgICAgICBsYXN0TG9vcENvbXBpbGVkO1xuXG4gICAgZG8ge1xuXG4gICAgICAgIC8vIHJlbW92ZSBhbGwgVU5SRVNPTFZBQkxFX1JFRkVSRU5DRSBlcnJvcnMgYmVmb3JlIGNvbXBpbGluZyBhcnJheSBhZ2FpblxuICAgICAgICB2YXIgaWR4ID0gcmVwb3J0LmVycm9ycy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC5lcnJvcnNbaWR4XS5jb2RlID09PSBcIlVOUkVTT0xWQUJMRV9SRUZFUkVOQ0VcIikge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5lcnJvcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZW1lbWJlciBob3cgbWFueSB3ZXJlIGNvbXBpbGVkIGluIHRoZSBsYXN0IGxvb3BcbiAgICAgICAgbGFzdExvb3BDb21waWxlZCA9IGNvbXBpbGVkO1xuXG4gICAgICAgIC8vIGNvdW50IGhvdyBtYW55IGFyZSBjb21waWxlZCBub3dcbiAgICAgICAgY29tcGlsZWQgPSBjb21waWxlQXJyYXlPZlNjaGVtYXNMb29wLmNhbGwodGhpcywgcmVwb3J0LCBhcnIpO1xuXG4gICAgICAgIC8vIGZpeCBfXyRtaXNzaW5nUmVmZXJlbmNlcyBpZiBwb3NzaWJsZVxuICAgICAgICBpZHggPSBhcnIubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciBzY2ggPSBhcnJbaWR4XTtcbiAgICAgICAgICAgIGlmIChzY2guX18kbWlzc2luZ1JlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWR4MiA9IHNjaC5fXyRtaXNzaW5nUmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGlkeDItLSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmT2JqID0gc2NoLl9fJG1pc3NpbmdSZWZlcmVuY2VzW2lkeDJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBmaW5kSWQoYXJyLCByZWZPYmoucmVmKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIG1pZ2h0IGNyZWF0ZSBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZPYmoub2JqW1wiX19cIiArIHJlZk9iai5rZXkgKyBcIlJlc29sdmVkXCJdID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIHJlc29sdmVkIG5vdyBzbyBkZWxldGUgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaC5fXyRtaXNzaW5nUmVmZXJlbmNlcy5zcGxpY2UoaWR4MiwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNjaC5fXyRtaXNzaW5nUmVmZXJlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNjaC5fXyRtaXNzaW5nUmVmZXJlbmNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBrZWVwIHJlcGVhdGluZyBpZiBub3QgYWxsIGNvbXBpbGVkIGFuZCBhdCBsZWFzdCBvbmUgbW9yZSB3YXMgY29tcGlsZWQgaW4gdGhlIGxhc3QgbG9vcFxuICAgIH0gd2hpbGUgKGNvbXBpbGVkICE9PSBhcnIubGVuZ3RoICYmIGNvbXBpbGVkICE9PSBsYXN0TG9vcENvbXBpbGVkKTtcblxuICAgIHJldHVybiByZXBvcnQuaXNWYWxpZCgpO1xuXG59O1xuXG5leHBvcnRzLmNvbXBpbGVTY2hlbWEgPSBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcblxuICAgIHJlcG9ydC5jb21tb25FcnJvck1lc3NhZ2UgPSBcIlNDSEVNQV9DT01QSUxBVElPTl9GQUlMRURcIjtcblxuICAgIC8vIGlmIHNjaGVtYSBpcyBhIHN0cmluZywgYXNzdW1lIGl0J3MgYSB1cmlcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB2YXIgbG9hZGVkU2NoZW1hID0gU2NoZW1hQ2FjaGUuZ2V0U2NoZW1hQnlVcmkuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG4gICAgICAgIGlmICghbG9hZGVkU2NoZW1hKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJTQ0hFTUFfTk9UX1JFQUNIQUJMRVwiLCBbc2NoZW1hXSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hID0gbG9hZGVkU2NoZW1hO1xuICAgIH1cblxuICAgIC8vIGlmIHNjaGVtYSBpcyBhbiBhcnJheSwgYXNzdW1lIGl0J3MgYW4gYXJyYXkgb2Ygc2NoZW1hc1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBpbGVBcnJheU9mU2NoZW1hcy5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGFuIGlkIHRoYW4gaXQgc2hvdWxkIGJlIGNhY2hlZCBhbHJlYWR5IChpZiB0aGlzIGluc3RhbmNlIGhhcyBjb21waWxlZCBpdClcbiAgICBpZiAoc2NoZW1hLl9fJGNvbXBpbGVkICYmIHNjaGVtYS5pZCAmJiBTY2hlbWFDYWNoZS5jaGVja0NhY2hlRm9yVXJpLmNhbGwodGhpcywgc2NoZW1hLmlkKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgc2NoZW1hLl9fJGNvbXBpbGVkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIGRvIG5vdCByZS1jb21waWxlIHNjaGVtYXNcbiAgICBpZiAoc2NoZW1hLl9fJGNvbXBpbGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaWQgJiYgdHlwZW9mIHNjaGVtYS5pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAvLyBhZGQgdGhpcyB0byBvdXIgc2NoZW1hQ2FjaGUgKGJlZm9yZSBjb21waWxhdGlvbiBpbiBjYXNlIHdlIGhhdmUgcmVmZXJlbmNlcyBpbmNsdWRpbmcgaWQpXG4gICAgICAgIFNjaGVtYUNhY2hlLmNhY2hlU2NoZW1hQnlVcmkuY2FsbCh0aGlzLCBzY2hlbWEuaWQsIHNjaGVtYSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCByZWN1cnNpdmVseSwgc28gd2UgbmVlZCB0byByZW1lbWJlciBvdXIgcm9vdFxuICAgIHZhciBpc1Jvb3QgPSBmYWxzZTtcbiAgICBpZiAoIXJlcG9ydC5yb290U2NoZW1hKSB7XG4gICAgICAgIHJlcG9ydC5yb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBpc1Jvb3QgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGRlbGV0ZSBhbGwgX18kbWlzc2luZ1JlZmVyZW5jZXMgZnJvbSBwcmV2aW91cyBjb21waWxhdGlvbiBhdHRlbXB0c1xuICAgIHZhciBpc1ZhbGlkRXhjZXB0UmVmZXJlbmNlcyA9IHJlcG9ydC5pc1ZhbGlkKCk7XG4gICAgZGVsZXRlIHNjaGVtYS5fXyRtaXNzaW5nUmVmZXJlbmNlcztcblxuICAgIC8vIGNvbGxlY3QgYWxsIHJlZmVyZW5jZXMgdGhhdCBuZWVkIHRvIGJlIHJlc29sdmVkIC0gJHJlZiBhbmQgJHNjaGVtYVxuICAgIHZhciByZWZzID0gY29sbGVjdFJlZmVyZW5jZXMuY2FsbCh0aGlzLCBzY2hlbWEpLFxuICAgICAgICBpZHggPSByZWZzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgLy8gcmVzb2x2ZSBhbGwgdGhlIGNvbGxlY3RlZCByZWZlcmVuY2VzIGludG8gX194eHhSZXNvbHZlZCBwb2ludGVyXG4gICAgICAgIHZhciByZWZPYmogPSByZWZzW2lkeF07XG4gICAgICAgIHZhciByZXNwb25zZSA9IFNjaGVtYUNhY2hlLmdldFNjaGVtYUJ5VXJpLmNhbGwodGhpcywgcmVwb3J0LCByZWZPYmoucmVmLCBzY2hlbWEpO1xuXG4gICAgICAgIC8vIHdlIGNhbiB0cnkgdG8gdXNlIGN1c3RvbSBzY2hlbWFSZWFkZXIgaWYgYXZhaWxhYmxlXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciBzY2hlbWFSZWFkZXIgPSB0aGlzLmdldFNjaGVtYVJlYWRlcigpO1xuICAgICAgICAgICAgaWYgKHNjaGVtYVJlYWRlcikge1xuICAgICAgICAgICAgICAgIC8vIGl0J3Mgc3VwcG9zZWQgdG8gcmV0dXJuIGEgdmFsaWQgc2NoZW1hXG4gICAgICAgICAgICAgICAgdmFyIHMgPSBzY2hlbWFSZWFkZXIocmVmT2JqLnJlZik7XG4gICAgICAgICAgICAgICAgaWYgKHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgbmVlZHMgdG8gaGF2ZSB0aGUgaWRcbiAgICAgICAgICAgICAgICAgICAgcy5pZCA9IHJlZk9iai5yZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSB0byBjb21waWxlIHRoZSBzY2hlbWFcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN1YnJlcG9ydCA9IG5ldyBSZXBvcnQocmVwb3J0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleHBvcnRzLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCBzdWJyZXBvcnQsIHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5IGVycm9ycyB0byByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5lcnJvcnMgPSByZXBvcnQuZXJyb3JzLmNvbmNhdChzdWJyZXBvcnQuZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gU2NoZW1hQ2FjaGUuZ2V0U2NoZW1hQnlVcmkuY2FsbCh0aGlzLCByZXBvcnQsIHJlZk9iai5yZWYsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XG5cbiAgICAgICAgICAgIHZhciBoYXNOb3RWYWxpZCA9IHJlcG9ydC5oYXNFcnJvcihcIlJFTU9URV9OT1RfVkFMSURcIiwgW3JlZk9iai5yZWZdKTtcbiAgICAgICAgICAgIHZhciBpc0Fic29sdXRlID0gVXRpbHMuaXNBYnNvbHV0ZVVyaShyZWZPYmoucmVmKTtcbiAgICAgICAgICAgIHZhciBpc0Rvd25sb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBpZ25vcmVVbnJlc29sdmFibGVSZW1vdGVzID0gdGhpcy5vcHRpb25zLmlnbm9yZVVucmVzb2x2YWJsZVJlZmVyZW5jZXMgPT09IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChpc0Fic29sdXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Ugc2hvdWxkbid0IGFkZCBVTlJFU09MVkFCTEVfUkVGRVJFTkNFIGZvciBzY2hlbWFzIHdlIGFscmVhZHkgaGF2ZSBkb3dubG9hZGVkXG4gICAgICAgICAgICAgICAgLy8gYW5kIHNldCB0aHJvdWdoIHNldFJlbW90ZVJlZmVyZW5jZSBtZXRob2RcbiAgICAgICAgICAgICAgICBpc0Rvd25sb2FkZWQgPSBTY2hlbWFDYWNoZS5jaGVja0NhY2hlRm9yVXJpLmNhbGwodGhpcywgcmVmT2JqLnJlZik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNOb3RWYWxpZCkge1xuICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaGFzIFJFTU9URV9OT1RfVkFMSUQgZXJyb3IgZm9yIHRoaXMgb25lXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlnbm9yZVVucmVzb2x2YWJsZVJlbW90ZXMgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICAgICAgICAgIC8vIGlnbm9yZVVucmVzb2x2YWJsZVJlbW90ZXMgaXMgb24gYW5kIHJlbW90ZSBpc0Fic29sdXRlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzRG93bmxvYWRlZCkge1xuICAgICAgICAgICAgICAgIC8vIHJlbW90ZSBpcyBkb3dubG9hZGVkLCBzbyBubyBVTlJFU09MVkFCTEVfUkVGRVJFTkNFXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHJlcG9ydC5wYXRoLCByZWZPYmoucGF0aCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiVU5SRVNPTFZBQkxFX1JFRkVSRU5DRVwiLCBbcmVmT2JqLnJlZl0pO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoID0gcmVwb3J0LnBhdGguc2xpY2UoMCwgLXJlZk9iai5wYXRoLmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICAvLyBwdXNibGlzaCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgb3V0XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRFeGNlcHRSZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5fXyRtaXNzaW5nUmVmZXJlbmNlcyA9IHNjaGVtYS5fXyRtaXNzaW5nUmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLl9fJG1pc3NpbmdSZWZlcmVuY2VzLnB1c2gocmVmT2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcyBtaWdodCBjcmVhdGUgY2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgICAgICByZWZPYmoub2JqW1wiX19cIiArIHJlZk9iai5rZXkgKyBcIlJlc29sdmVkXCJdID0gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgdmFyIGlzVmFsaWQgPSByZXBvcnQuaXNWYWxpZCgpO1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIHNjaGVtYS5fXyRjb21waWxlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNjaGVtYS5pZCAmJiB0eXBlb2Ygc2NoZW1hLmlkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgdGhpcyBzY2hlbWEgZnJvbSBzY2hlbWFDYWNoZSBiZWNhdXNlIGl0IGZhaWxlZCB0byBjb21waWxlXG4gICAgICAgICAgICBTY2hlbWFDYWNoZS5yZW1vdmVGcm9tQ2FjaGVCeVVyaS5jYWxsKHRoaXMsIHNjaGVtYS5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZSByb290IHBvaW50ZXIgYW55bW9yZVxuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgcmVwb3J0LnJvb3RTY2hlbWEgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG5cbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIEZvcm1hdFZhbGlkYXRvcnMgPSByZXF1aXJlKFwiLi9Gb3JtYXRWYWxpZGF0b3JzXCIpLFxuICAgIEpzb25WYWxpZGF0aW9uICAgPSByZXF1aXJlKFwiLi9Kc29uVmFsaWRhdGlvblwiKSxcbiAgICBSZXBvcnQgICAgICAgICAgID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpLFxuICAgIFV0aWxzICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9VdGlsc1wiKTtcblxudmFyIFNjaGVtYVZhbGlkYXRvcnMgPSB7XG4gICAgJHJlZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtYXBwc2F3Zy1qc29uLXBvaW50ZXItMDdcbiAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcGJyeWFuLXp5cC1qc29uLXJlZi0wM1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS4kcmVmICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiJHJlZlwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgICRzY2hlbWE6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS1jb3JlLmh0bWwjcmZjLnNlY3Rpb24uNlxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS4kc2NoZW1hICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiJHNjaGVtYVwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG11bHRpcGxlT2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjEuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5tdWx0aXBsZU9mICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibXVsdGlwbGVPZlwiLCBcIm51bWJlclwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLm11bHRpcGxlT2YgPD0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm11bHRpcGxlT2ZcIiwgXCJzdHJpY3RseSBncmVhdGVyIHRoYW4gMFwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1heGltdW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjIuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhpbXVtICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWF4aW11bVwiLCBcIm51bWJlclwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGV4Y2x1c2l2ZU1heGltdW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjIuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImV4Y2x1c2l2ZU1heGltdW1cIiwgXCJib29sZWFuXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWF4aW11bSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX0RFUEVOREVOQ1lcIiwgW1wiZXhjbHVzaXZlTWF4aW11bVwiLCBcIm1heGltdW1cIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtaW5pbXVtOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMS4zLjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWluaW11bSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm1pbmltdW1cIiwgXCJudW1iZXJcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBleGNsdXNpdmVNaW5pbXVtOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMS4zLjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJleGNsdXNpdmVNaW5pbXVtXCIsIFwiYm9vbGVhblwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLm1pbmltdW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9ERVBFTkRFTkNZXCIsIFtcImV4Y2x1c2l2ZU1pbmltdW1cIiwgXCJtaW5pbXVtXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWF4TGVuZ3RoOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMi4xLjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEubWF4TGVuZ3RoKSAhPT0gXCJpbnRlZ2VyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtYXhMZW5ndGhcIiwgXCJpbnRlZ2VyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWF4TGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm1heExlbmd0aFwiLCBcImdyZWF0ZXIgdGhhbiwgb3IgZXF1YWwgdG8gMFwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1pbkxlbmd0aDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjIuMi4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLm1pbkxlbmd0aCkgIT09IFwiaW50ZWdlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWluTGVuZ3RoXCIsIFwiaW50ZWdlclwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLm1pbkxlbmd0aCA8IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJtaW5MZW5ndGhcIiwgXCJncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvIDBcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwYXR0ZXJuOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMi4zLjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEucGF0dGVybiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInBhdHRlcm5cIiwgXCJzdHJpbmdcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBSZWdFeHAoc2NoZW1hLnBhdHRlcm4pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfUEFUVEVSTlwiLCBbXCJwYXR0ZXJuXCIsIHNjaGVtYS5wYXR0ZXJuXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZGl0aW9uYWxJdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMS4xXG4gICAgICAgIHZhciB0eXBlID0gVXRpbHMud2hhdElzKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpO1xuICAgICAgICBpZiAodHlwZSAhPT0gXCJib29sZWFuXCIgJiYgdHlwZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImFkZGl0aW9uYWxJdGVtc1wiLCBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImFkZGl0aW9uYWxJdGVtc1wiKTtcbiAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4xLjFcbiAgICAgICAgdmFyIHR5cGUgPSBVdGlscy53aGF0SXMoc2NoZW1hLml0ZW1zKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcIml0ZW1zXCIpO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLml0ZW1zKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgICAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS5pdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiaXRlbXNcIik7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLml0ZW1zW2lkeF0pO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIml0ZW1zXCIsIFtcImFycmF5XCIsIFwib2JqZWN0XCJdXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjdXN0b20gLSBzdHJpY3QgbW9kZVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlQWRkaXRpb25hbCA9PT0gdHJ1ZSAmJiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSB1bmRlZmluZWQgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wiYWRkaXRpb25hbEl0ZW1zXCJdKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjdXN0b21lIC0gYXNzdW1lIGRlZmluZWQgZmFsc2UgbW9kZVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFzc3VtZUFkZGl0aW9uYWwgJiYgc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gdW5kZWZpbmVkICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICAgICAgc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtYXhJdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMi4xXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heEl0ZW1zICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWF4SXRlbXNcIiwgXCJpbnRlZ2VyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWF4SXRlbXMgPCAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wibWF4SXRlbXNcIiwgXCJncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvIDBcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtaW5JdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuMy4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLm1pbkl0ZW1zKSAhPT0gXCJpbnRlZ2VyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtaW5JdGVtc1wiLCBcImludGVnZXJcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5taW5JdGVtcyA8IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJtaW5JdGVtc1wiLCBcImdyZWF0ZXIgdGhhbiwgb3IgZXF1YWwgdG8gMFwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHVuaXF1ZUl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy40LjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEudW5pcXVlSXRlbXMgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1widW5pcXVlSXRlbXNcIiwgXCJib29sZWFuXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWF4UHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMS4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLm1heFByb3BlcnRpZXMpICE9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm1heFByb3BlcnRpZXNcIiwgXCJpbnRlZ2VyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWF4UHJvcGVydGllcyA8IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJtYXhQcm9wZXJ0aWVzXCIsIFwiZ3JlYXRlciB0aGFuLCBvciBlcXVhbCB0byAwXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWluUHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMi4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLm1pblByb3BlcnRpZXMpICE9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm1pblByb3BlcnRpZXNcIiwgXCJpbnRlZ2VyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWluUHJvcGVydGllcyA8IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJtaW5Qcm9wZXJ0aWVzXCIsIFwiZ3JlYXRlciB0aGFuLCBvciBlcXVhbCB0byAwXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjMuMVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKHNjaGVtYS5yZXF1aXJlZCkgIT09IFwiYXJyYXlcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInJlcXVpcmVkXCIsIFwiYXJyYXlcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5yZXF1aXJlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJyZXF1aXJlZFwiLCBcImFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnRcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS5yZXF1aXJlZC5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5yZXF1aXJlZFtpZHhdICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVkFMVUVfVFlQRVwiLCBbXCJyZXF1aXJlZFwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFV0aWxzLmlzVW5pcXVlQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wicmVxdWlyZWRcIiwgXCJhbiBhcnJheSB3aXRoIHVuaXF1ZSBpdGVtc1wiXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC40LjFcbiAgICAgICAgdmFyIHR5cGUgPSBVdGlscy53aGF0SXMoc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgaWYgKHR5cGUgIT09IFwiYm9vbGVhblwiICYmIHR5cGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiLCBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIpO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC40LjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEucHJvcGVydGllcykgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJwcm9wZXJ0aWVzXCIsIFwib2JqZWN0XCJdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XSxcbiAgICAgICAgICAgICAgICB2YWwgPSBzY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcInByb3BlcnRpZXNcIik7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGtleSk7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCB2YWwpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGN1c3RvbSAtIHN0cmljdCBtb2RlXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VBZGRpdGlvbmFsID09PSB0cnVlICYmIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wiYWRkaXRpb25hbFByb3BlcnRpZXNcIl0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1c3RvbWUgLSBhc3N1bWUgZGVmaW5lZCBmYWxzZSBtb2RlXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXNzdW1lQWRkaXRpb25hbCAmJiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VzdG9tIC0gZm9yY2VQcm9wZXJ0aWVzXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VQcm9wZXJ0aWVzID09PSB0cnVlICYmIGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJDVVNUT01fTU9ERV9GT1JDRV9QUk9QRVJUSUVTXCIsIFtcInByb3BlcnRpZXNcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwYXR0ZXJuUHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuNC4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsIFwib2JqZWN0XCJdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2lkeF0sXG4gICAgICAgICAgICAgICAgdmFsID0gc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFJlZ0V4cChrZXkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfUEFUVEVSTlwiLCBbXCJwYXR0ZXJuUHJvcGVydGllc1wiLCBrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJwYXR0ZXJuUHJvcGVydGllc1wiKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goa2V5LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgdmFsKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjdXN0b20gLSBmb3JjZVByb3BlcnRpZXNcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZVByb3BlcnRpZXMgPT09IHRydWUgJiYga2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIkNVU1RPTV9NT0RFX0ZPUkNFX1BST1BFUlRJRVNcIiwgW1wicGF0dGVyblByb3BlcnRpZXNcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjUuMVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKHNjaGVtYS5kZXBlbmRlbmNpZXMpICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZGVwZW5kZW5jaWVzXCIsIFwib2JqZWN0XCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLmRlcGVuZGVuY2llcyksXG4gICAgICAgICAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICB2YXIgc2NoZW1hS2V5ID0ga2V5c1tpZHhdLFxuICAgICAgICAgICAgICAgICAgICBzY2hlbWFEZXBlbmRlbmN5ID0gc2NoZW1hLmRlcGVuZGVuY2llc1tzY2hlbWFLZXldLFxuICAgICAgICAgICAgICAgICAgICB0eXBlID0gVXRpbHMud2hhdElzKHNjaGVtYURlcGVuZGVuY3kpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImRlcGVuZGVuY2llc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChzY2hlbWFLZXkpO1xuICAgICAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWFEZXBlbmRlbmN5KTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHgyID0gc2NoZW1hRGVwZW5kZW5jeS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiZGVwZW5kZW5jaWVzXCIsIFwibm90IGVtcHR5IGFycmF5XCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaWR4Mi0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYURlcGVuZGVuY3lbaWR4Ml0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1ZBTFVFX1RZUEVcIiwgW1wiZGVwZW5kZW5zaWNlc1wiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzVW5pcXVlQXJyYXkoc2NoZW1hRGVwZW5kZW5jeSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiZGVwZW5kZW5jaWVzXCIsIFwiYW4gYXJyYXkgd2l0aCB1bmlxdWUgaXRlbXNcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9WQUxVRV9UWVBFXCIsIFtcImRlcGVuZGVuY2llc1wiLCBcIm9iamVjdCBvciBhcnJheVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBlbnVtOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS4xLjFcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImVudW1cIiwgXCJhcnJheVwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLmVudW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiZW51bVwiLCBcImFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnRcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKFV0aWxzLmlzVW5pcXVlQXJyYXkoc2NoZW1hLmVudW0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcImVudW1cIiwgXCJhbiBhcnJheSB3aXRoIHVuaXF1ZSBlbGVtZW50c1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHR5cGU6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjIuMVxuICAgICAgICB2YXIgcHJpbWl0aXZlVHlwZXMgPSBbXCJhcnJheVwiLCBcImJvb2xlYW5cIiwgXCJpbnRlZ2VyXCIsIFwibnVtYmVyXCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgIHByaW1pdGl2ZVR5cGVTdHIgPSBwcmltaXRpdmVUeXBlcy5qb2luKFwiLFwiKSxcbiAgICAgICAgICAgIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKTtcblxuICAgICAgICBpZiAoaXNBcnJheSkge1xuICAgICAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS50eXBlLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVUeXBlcy5pbmRleE9mKHNjaGVtYS50eXBlW2lkeF0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1widHlwZVwiLCBwcmltaXRpdmVUeXBlU3RyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFV0aWxzLmlzVW5pcXVlQXJyYXkoc2NoZW1hLnR5cGUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJ0eXBlXCIsIFwiYW4gb2JqZWN0IHdpdGggdW5pcXVlIHByb3BlcnRpZXNcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEudHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVR5cGVzLmluZGV4T2Yoc2NoZW1hLnR5cGUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJ0eXBlXCIsIHByaW1pdGl2ZVR5cGVTdHJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJ0eXBlXCIsIFtcInN0cmluZ1wiLCBcImFycmF5XCJdXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5vRW1wdHlTdHJpbmdzID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwic3RyaW5nXCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwic3RyaW5nXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWluTGVuZ3RoID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmVudW0gPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEubWluTGVuZ3RoID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub0VtcHR5QXJyYXlzID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwiYXJyYXlcIiB8fCBpc0FycmF5ICYmIHNjaGVtYS50eXBlLmluZGV4T2YoXCJhcnJheVwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLm1pbkl0ZW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLm1pbkl0ZW1zID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZVByb3BlcnRpZXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJvYmplY3RcIiB8fCBpc0FycmF5ICYmIHNjaGVtYS50eXBlLmluZGV4T2YoXCJvYmplY3RcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5wcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgJiYgc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9VTkRFRklORURfU1RSSUNUXCIsIFtcInByb3BlcnRpZXNcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlSXRlbXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJhcnJheVwiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcImFycmF5XCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuaXRlbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wiaXRlbXNcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlTWluSXRlbXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJhcnJheVwiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcImFycmF5XCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWluSXRlbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wibWluSXRlbXNcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlTWF4SXRlbXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJhcnJheVwiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcImFycmF5XCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWF4SXRlbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wibWF4SXRlbXNcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlTWluTGVuZ3RoID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwic3RyaW5nXCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwic3RyaW5nXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWluTGVuZ3RoID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmZvcm1hdCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5lbnVtID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLnBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wibWluTGVuZ3RoXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZU1heExlbmd0aCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSBcInN0cmluZ1wiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcInN0cmluZ1wiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLm1heExlbmd0aCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5mb3JtYXQgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuZW51bSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5wYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9VTkRFRklORURfU1RSSUNUXCIsIFtcIm1heExlbmd0aFwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhbGxPZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuMy4xXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5hbGxPZikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiYWxsT2ZcIiwgXCJhcnJheVwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLmFsbE9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcImFsbE9mXCIsIFwiYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudFwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLmFsbE9mLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJhbGxPZlwiKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuYWxsT2ZbaWR4XSk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFueU9mOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS40LjFcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmFueU9mKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJhbnlPZlwiLCBcImFycmF5XCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuYW55T2YubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiYW55T2ZcIiwgXCJhbiBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50XCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpZHggPSBzY2hlbWEuYW55T2YubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImFueU9mXCIpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goaWR4LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYS5hbnlPZltpZHhdKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgb25lT2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjUuMVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEub25lT2YpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm9uZU9mXCIsIFwiYXJyYXlcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5vbmVPZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJvbmVPZlwiLCBcImFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnRcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS5vbmVPZi5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwib25lT2ZcIik7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLm9uZU9mW2lkeF0pO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBub3Q6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjYuMVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKHNjaGVtYS5ub3QpICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibm90XCIsIFwib2JqZWN0XCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJub3RcIik7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEubm90KTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBkZWZpbml0aW9uczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNy4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLmRlZmluaXRpb25zKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImRlZmluaXRpb25zXCIsIFwib2JqZWN0XCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLmRlZmluaXRpb25zKSxcbiAgICAgICAgICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2lkeF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHNjaGVtYS5kZWZpbml0aW9uc1trZXldO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJkZWZpbml0aW9uc1wiKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgdmFsKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgZm9ybWF0OiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuZm9ybWF0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZm9ybWF0XCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChGb3JtYXRWYWxpZGF0b3JzW3NjaGVtYS5mb3JtYXRdID09PSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLmlnbm9yZVVua25vd25Gb3JtYXRzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiVU5LTk9XTl9GT1JNQVRcIiwgW3NjaGVtYS5mb3JtYXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgaWQ6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS1jb3JlLmh0bWwjcmZjLnNlY3Rpb24uNy4yXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmlkICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiaWRcIiwgXCJzdHJpbmdcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB0aXRsZTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi42LjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEudGl0bGUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJ0aXRsZVwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjYuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5kZXNjcmlwdGlvbiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImRlc2NyaXB0aW9uXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJkZWZhdWx0XCI6IGZ1bmN0aW9uICgvKiByZXBvcnQsIHNjaGVtYSAqLykge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNi4yXG4gICAgICAgIC8vIFRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgcGxhY2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIGtleXdvcmQuXG4gICAgfVxufTtcblxudmFyIHZhbGlkYXRlQXJyYXlPZlNjaGVtYXMgPSBmdW5jdGlvbiAocmVwb3J0LCBhcnIpIHtcbiAgICB2YXIgaWR4ID0gYXJyLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgYXJyW2lkeF0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVwb3J0LmlzVmFsaWQoKTtcbn07XG5cbmV4cG9ydHMudmFsaWRhdGVTY2hlbWEgPSBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcblxuICAgIHJlcG9ydC5jb21tb25FcnJvck1lc3NhZ2UgPSBcIlNDSEVNQV9WQUxJREFUSU9OX0ZBSUxFRFwiO1xuXG4gICAgLy8gaWYgc2NoZW1hIGlzIGFuIGFycmF5LCBhc3N1bWUgaXQncyBhbiBhcnJheSBvZiBzY2hlbWFzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVBcnJheU9mU2NoZW1hcy5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3QgcmV2YWxpZGF0ZSBzY2hlbWEgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBvbmNlXG4gICAgaWYgKHNjaGVtYS5fXyR2YWxpZGF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgJHNjaGVtYSBpcyBwcmVzZW50LCB0aGlzIHNjaGVtYSBzaG91bGQgdmFsaWRhdGUgYWdhaW5zdCB0aGF0ICRzY2hlbWFcbiAgICB2YXIgaGFzUGFyZW50U2NoZW1hID0gc2NoZW1hLiRzY2hlbWEgJiYgc2NoZW1hLmlkICE9PSBzY2hlbWEuJHNjaGVtYTtcbiAgICBpZiAoaGFzUGFyZW50U2NoZW1hKSB7XG4gICAgICAgIGlmIChzY2hlbWEuX18kc2NoZW1hUmVzb2x2ZWQgJiYgc2NoZW1hLl9fJHNjaGVtYVJlc29sdmVkICE9PSBzY2hlbWEpIHtcbiAgICAgICAgICAgIHZhciBzdWJSZXBvcnQgPSBuZXcgUmVwb3J0KHJlcG9ydCk7XG4gICAgICAgICAgICB2YXIgdmFsaWQgPSBKc29uVmFsaWRhdGlvbi52YWxpZGF0ZS5jYWxsKHRoaXMsIHN1YlJlcG9ydCwgc2NoZW1hLl9fJHNjaGVtYVJlc29sdmVkLCBzY2hlbWEpO1xuICAgICAgICAgICAgaWYgKHZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlBBUkVOVF9TQ0hFTUFfVkFMSURBVElPTl9GQUlMRURcIiwgbnVsbCwgc3ViUmVwb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlVW5yZXNvbHZhYmxlUmVmZXJlbmNlcyAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlJFRl9VTlJFU09MVkVEXCIsIFtzY2hlbWEuJHNjaGVtYV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub1R5cGVsZXNzID09PSB0cnVlKSB7XG4gICAgICAgIC8vIGlzc3VlICMzNiAtIGluaGVyaXQgdHlwZSB0byBhbnlPZiwgb25lT2YsIGFsbE9mIGlmIG5vVHlwZWxlc3MgaXMgZGVmaW5lZFxuICAgICAgICBpZiAoc2NoZW1hLnR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHNjaGVtYXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5hbnlPZikpIHsgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHNjaGVtYS5hbnlPZik7IH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5vbmVPZikpIHsgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHNjaGVtYS5vbmVPZik7IH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5hbGxPZikpIHsgc2NoZW1hcyA9IHNjaGVtYXMuY29uY2F0KHNjaGVtYS5hbGxPZik7IH1cbiAgICAgICAgICAgIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoc2NoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzY2gudHlwZSkgeyBzY2gudHlwZSA9IHNjaGVtYS50eXBlOyB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbmQgaXNzdWUgIzM2XG4gICAgICAgIGlmIChzY2hlbWEuZW51bSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzY2hlbWEudHlwZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzY2hlbWEuYW55T2YgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgc2NoZW1hLm9uZU9mID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHNjaGVtYS5ub3QgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgc2NoZW1hLiRyZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9VTkRFRklORURfU1RSSUNUXCIsIFtcInR5cGVcIl0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpLFxuICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XTtcbiAgICAgICAgaWYgKGtleS5pbmRleE9mKFwiX19cIikgPT09IDApIHsgY29udGludWU7IH1cbiAgICAgICAgaWYgKFNjaGVtYVZhbGlkYXRvcnNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBTY2hlbWFWYWxpZGF0b3JzW2tleV0uY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1BhcmVudFNjaGVtYSkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub0V4dHJhS2V5d29yZHMgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VORVhQRUNURURcIiwgW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wZWRhbnRpY0NoZWNrID09PSB0cnVlKSB7XG4gICAgICAgIGlmIChzY2hlbWEuZW51bSkge1xuICAgICAgICAgICAgLy8gYnJlYWsgcmVjdXJzaW9uXG4gICAgICAgICAgICB2YXIgdG1wU2NoZW1hID0gVXRpbHMuY2xvbmUoc2NoZW1hKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0bXBTY2hlbWEuZW51bTtcbiAgICAgICAgICAgIGRlbGV0ZSB0bXBTY2hlbWEuZGVmYXVsdDtcblxuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImVudW1cIik7XG4gICAgICAgICAgICBpZHggPSBzY2hlbWEuZW51bS5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBKc29uVmFsaWRhdGlvbi52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgdG1wU2NoZW1hLCBzY2hlbWEuZW51bVtpZHhdKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5kZWZhdWx0KSB7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiZGVmYXVsdFwiKTtcbiAgICAgICAgICAgIEpzb25WYWxpZGF0aW9uLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIHNjaGVtYS5kZWZhdWx0KTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGlzVmFsaWQgPSByZXBvcnQuaXNWYWxpZCgpO1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIHNjaGVtYS5fXyR2YWxpZGF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNWYWxpZDtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5pc0Fic29sdXRlVXJpID0gZnVuY3Rpb24gKHVyaSkge1xuICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJpKTtcbn07XG5cbmV4cG9ydHMuaXNSZWxhdGl2ZVVyaSA9IGZ1bmN0aW9uICh1cmkpIHtcbiAgICAvLyByZWxhdGl2ZSBVUklzIHRoYXQgZW5kIHdpdGggYSBoYXNoIHNpZ24sIGlzc3VlICM1NlxuICAgIHJldHVybiAvLisjLy50ZXN0KHVyaSk7XG59O1xuXG5leHBvcnRzLndoYXRJcyA9IGZ1bmN0aW9uICh3aGF0KSB7XG5cbiAgICB2YXIgdG8gPSB0eXBlb2Ygd2hhdDtcblxuICAgIGlmICh0byA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAod2hhdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHdoYXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIm9iamVjdFwiOyAvLyB0eXBlb2Ygd2hhdCA9PT0gJ29iamVjdCcgJiYgd2hhdCA9PT0gT2JqZWN0KHdoYXQpICYmICFBcnJheS5pc0FycmF5KHdoYXQpO1xuICAgIH1cblxuICAgIGlmICh0byA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHdoYXQpKSB7XG4gICAgICAgICAgICBpZiAod2hhdCAlIDEgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbnRlZ2VyXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm51bWJlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4od2hhdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vdC1hLW51bWJlclwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcInVua25vd24tbnVtYmVyXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvOyAvLyB1bmRlZmluZWQsIGJvb2xlYW4sIHN0cmluZywgZnVuY3Rpb25cblxufTtcblxuZXhwb3J0cy5hcmVFcXVhbCA9IGZ1bmN0aW9uIGFyZUVxdWFsKGpzb24xLCBqc29uMiwgb3B0aW9ucykge1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdmFyIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gPSBvcHRpb25zLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gfHwgZmFsc2U7XG5cbiAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS1jb3JlLmh0bWwjcmZjLnNlY3Rpb24uMy42XG5cbiAgICAvLyBUd28gSlNPTiB2YWx1ZXMgYXJlIHNhaWQgdG8gYmUgZXF1YWwgaWYgYW5kIG9ubHkgaWY6XG4gICAgLy8gYm90aCBhcmUgbnVsbHM7IG9yXG4gICAgLy8gYm90aCBhcmUgYm9vbGVhbnMsIGFuZCBoYXZlIHRoZSBzYW1lIHZhbHVlOyBvclxuICAgIC8vIGJvdGggYXJlIHN0cmluZ3MsIGFuZCBoYXZlIHRoZSBzYW1lIHZhbHVlOyBvclxuICAgIC8vIGJvdGggYXJlIG51bWJlcnMsIGFuZCBoYXZlIHRoZSBzYW1lIG1hdGhlbWF0aWNhbCB2YWx1ZTsgb3JcbiAgICBpZiAoanNvbjEgPT09IGpzb24yKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uID09PSB0cnVlICYmXG4gICAgICB0eXBlb2YganNvbjEgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGpzb24yID09PSBcInN0cmluZ1wiICYmXG4gICAgICBqc29uMS50b1VwcGVyQ2FzZSgpID09PSBqc29uMi50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBpLCBsZW47XG5cbiAgICAvLyBib3RoIGFyZSBhcnJheXMsIGFuZDpcbiAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uMSkgJiYgQXJyYXkuaXNBcnJheShqc29uMikpIHtcbiAgICAgICAgLy8gaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXM7IGFuZFxuICAgICAgICBpZiAoanNvbjEubGVuZ3RoICE9PSBqc29uMi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpdGVtcyBhdCB0aGUgc2FtZSBpbmRleCBhcmUgZXF1YWwgYWNjb3JkaW5nIHRvIHRoaXMgZGVmaW5pdGlvbjsgb3JcbiAgICAgICAgbGVuID0ganNvbjEubGVuZ3RoO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghYXJlRXF1YWwoanNvbjFbaV0sIGpzb24yW2ldLCB7IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb246IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gfSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gYm90aCBhcmUgb2JqZWN0cywgYW5kOlxuICAgIGlmIChleHBvcnRzLndoYXRJcyhqc29uMSkgPT09IFwib2JqZWN0XCIgJiYgZXhwb3J0cy53aGF0SXMoanNvbjIpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIC8vIGhhdmUgdGhlIHNhbWUgc2V0IG9mIHByb3BlcnR5IG5hbWVzOyBhbmRcbiAgICAgICAgdmFyIGtleXMxID0gT2JqZWN0LmtleXMoanNvbjEpO1xuICAgICAgICB2YXIga2V5czIgPSBPYmplY3Qua2V5cyhqc29uMik7XG4gICAgICAgIGlmICghYXJlRXF1YWwoa2V5czEsIGtleXMyLCB7IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb246IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gfSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB2YWx1ZXMgZm9yIGEgc2FtZSBwcm9wZXJ0eSBuYW1lIGFyZSBlcXVhbCBhY2NvcmRpbmcgdG8gdGhpcyBkZWZpbml0aW9uLlxuICAgICAgICBsZW4gPSBrZXlzMS5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKCFhcmVFcXVhbChqc29uMVtrZXlzMVtpXV0sIGpzb24yW2tleXMxW2ldXSwgeyBjYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uOiBjYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uIH0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuaXNVbmlxdWVBcnJheSA9IGZ1bmN0aW9uIChhcnIsIGluZGV4ZXMpIHtcbiAgICB2YXIgaSwgaiwgbCA9IGFyci5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGw7IGorKykge1xuICAgICAgICAgICAgaWYgKGV4cG9ydHMuYXJlRXF1YWwoYXJyW2ldLCBhcnJbal0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ZXMpIHsgaW5kZXhlcy5wdXNoKGksIGopOyB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0cy5kaWZmZXJlbmNlID0gZnVuY3Rpb24gKGJpZ1NldCwgc3ViU2V0KSB7XG4gICAgdmFyIGFyciA9IFtdLFxuICAgICAgICBpZHggPSBiaWdTZXQubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICBpZiAoc3ViU2V0LmluZGV4T2YoYmlnU2V0W2lkeF0pID09PSAtMSkge1xuICAgICAgICAgICAgYXJyLnB1c2goYmlnU2V0W2lkeF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG4vLyBOT1QgYSBkZWVwIHZlcnNpb24gb2YgY2xvbmVcbmV4cG9ydHMuY2xvbmUgPSBmdW5jdGlvbiAoc3JjKSB7XG4gICAgaWYgKHR5cGVvZiBzcmMgPT09IFwidW5kZWZpbmVkXCIpIHsgcmV0dXJuIHZvaWQgMDsgfVxuICAgIGlmICh0eXBlb2Ygc3JjICE9PSBcIm9iamVjdFwiIHx8IHNyYyA9PT0gbnVsbCkgeyByZXR1cm4gc3JjOyB9XG4gICAgdmFyIHJlcywgaWR4O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNyYykpIHtcbiAgICAgICAgcmVzID0gW107XG4gICAgICAgIGlkeCA9IHNyYy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgcmVzW2lkeF0gPSBzcmNbaWR4XTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcyA9IHt9O1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNyYyk7XG4gICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2lkeF07XG4gICAgICAgICAgICByZXNba2V5XSA9IHNyY1trZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xuXG5leHBvcnRzLmNsb25lRGVlcCA9IGZ1bmN0aW9uIChzcmMpIHtcbiAgICB2YXIgdmlzaXRlZCA9IFtdLCBjbG9uZWQgPSBbXTtcbiAgICBmdW5jdGlvbiBjbG9uZURlZXAoc3JjKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3JjICE9PSBcIm9iamVjdFwiIHx8IHNyYyA9PT0gbnVsbCkgeyByZXR1cm4gc3JjOyB9XG4gICAgICAgIHZhciByZXMsIGlkeCwgY2lkeDtcblxuICAgICAgICBjaWR4ID0gdmlzaXRlZC5pbmRleE9mKHNyYyk7XG4gICAgICAgIGlmIChjaWR4ICE9PSAtMSkgeyByZXR1cm4gY2xvbmVkW2NpZHhdOyB9XG5cbiAgICAgICAgdmlzaXRlZC5wdXNoKHNyYyk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNyYykpIHtcbiAgICAgICAgICAgIHJlcyA9IFtdO1xuICAgICAgICAgICAgY2xvbmVkLnB1c2gocmVzKTtcbiAgICAgICAgICAgIGlkeCA9IHNyYy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICByZXNbaWR4XSA9IGNsb25lRGVlcChzcmNbaWR4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgPSB7fTtcbiAgICAgICAgICAgIGNsb25lZC5wdXNoKHJlcyk7XG4gICAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNyYyk7XG4gICAgICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2lkeF07XG4gICAgICAgICAgICAgICAgcmVzW2tleV0gPSBjbG9uZURlZXAoc3JjW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZURlZXAoc3JjKTtcbn07XG5cbi8qXG4gIGZvbGxvd2luZyBmdW5jdGlvbiBjb21lcyBmcm9tIHB1bnljb2RlLmpzIGxpYnJhcnlcbiAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvcHVueWNvZGUuanNcbiovXG4vKmpzaGludCAtVzAxNiovXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZGVjb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICovXG5leHBvcnRzLnVjczJkZWNvZGUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgICBjb3VudGVyID0gMCxcbiAgICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGV4dHJhO1xuICAgIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICAgICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuICAgICAgICAgICAgLy8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG4gICAgICAgICAgICBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgICAgICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgLy8gY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufTtcbi8qanNoaW50ICtXMDE2Ki9cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5yZXF1aXJlKFwiLi9Qb2x5ZmlsbHNcIik7XG52YXIgZ2V0ICAgICAgICAgICAgICAgPSByZXF1aXJlKFwibG9kYXNoLmdldFwiKTtcbnZhciBSZXBvcnQgICAgICAgICAgICA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbnZhciBGb3JtYXRWYWxpZGF0b3JzICA9IHJlcXVpcmUoXCIuL0Zvcm1hdFZhbGlkYXRvcnNcIik7XG52YXIgSnNvblZhbGlkYXRpb24gICAgPSByZXF1aXJlKFwiLi9Kc29uVmFsaWRhdGlvblwiKTtcbnZhciBTY2hlbWFDYWNoZSAgICAgICA9IHJlcXVpcmUoXCIuL1NjaGVtYUNhY2hlXCIpO1xudmFyIFNjaGVtYUNvbXBpbGF0aW9uID0gcmVxdWlyZShcIi4vU2NoZW1hQ29tcGlsYXRpb25cIik7XG52YXIgU2NoZW1hVmFsaWRhdGlvbiAgPSByZXF1aXJlKFwiLi9TY2hlbWFWYWxpZGF0aW9uXCIpO1xudmFyIFV0aWxzICAgICAgICAgICAgID0gcmVxdWlyZShcIi4vVXRpbHNcIik7XG52YXIgRHJhZnQ0U2NoZW1hICAgICAgPSByZXF1aXJlKFwiLi9zY2hlbWFzL3NjaGVtYS5qc29uXCIpO1xudmFyIERyYWZ0NEh5cGVyU2NoZW1hID0gcmVxdWlyZShcIi4vc2NoZW1hcy9oeXBlci1zY2hlbWEuanNvblwiKTtcblxuLypcbiAgICBkZWZhdWx0IG9wdGlvbnNcbiovXG52YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgLy8gZGVmYXVsdCB0aW1lb3V0IGZvciBhbGwgYXN5bmMgdGFza3NcbiAgICBhc3luY1RpbWVvdXQ6IDIwMDAsXG4gICAgLy8gZm9yY2UgYWRkaXRpb25hbFByb3BlcnRpZXMgYW5kIGFkZGl0aW9uYWxJdGVtcyB0byBiZSBkZWZpbmVkIG9uIFwib2JqZWN0XCIgYW5kIFwiYXJyYXlcIiB0eXBlc1xuICAgIGZvcmNlQWRkaXRpb25hbDogZmFsc2UsXG4gICAgLy8gYXNzdW1lIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIGFuZCBhZGRpdGlvbmFsSXRlbXMgYXJlIGRlZmluZWQgYXMgXCJmYWxzZVwiIHdoZXJlIGFwcHJvcHJpYXRlXG4gICAgYXNzdW1lQWRkaXRpb25hbDogZmFsc2UsXG4gICAgLy8gZG8gY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGZvciBlbnVtc1xuICAgIGVudW1DYXNlSW5zZW5zaXRpdmVDb21wYXJpc29uOiBmYWxzZSxcbiAgICAvLyBmb3JjZSBpdGVtcyB0byBiZSBkZWZpbmVkIG9uIFwiYXJyYXlcIiB0eXBlc1xuICAgIGZvcmNlSXRlbXM6IGZhbHNlLFxuICAgIC8vIGZvcmNlIG1pbkl0ZW1zIHRvIGJlIGRlZmluZWQgb24gXCJhcnJheVwiIHR5cGVzXG4gICAgZm9yY2VNaW5JdGVtczogZmFsc2UsXG4gICAgLy8gZm9yY2UgbWF4SXRlbXMgdG8gYmUgZGVmaW5lZCBvbiBcImFycmF5XCIgdHlwZXNcbiAgICBmb3JjZU1heEl0ZW1zOiBmYWxzZSxcbiAgICAvLyBmb3JjZSBtaW5MZW5ndGggdG8gYmUgZGVmaW5lZCBvbiBcInN0cmluZ1wiIHR5cGVzXG4gICAgZm9yY2VNaW5MZW5ndGg6IGZhbHNlLFxuICAgIC8vIGZvcmNlIG1heExlbmd0aCB0byBiZSBkZWZpbmVkIG9uIFwic3RyaW5nXCIgdHlwZXNcbiAgICBmb3JjZU1heExlbmd0aDogZmFsc2UsXG4gICAgLy8gZm9yY2UgcHJvcGVydGllcyBvciBwYXR0ZXJuUHJvcGVydGllcyB0byBiZSBkZWZpbmVkIG9uIFwib2JqZWN0XCIgdHlwZXNcbiAgICBmb3JjZVByb3BlcnRpZXM6IGZhbHNlLFxuICAgIC8vIGlnbm9yZSByZWZlcmVuY2VzIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIChyZW1vdGUgc2NoZW1hcykgLy8gVE9ETzogbWFrZSBzdXJlIHRoaXMgaXMgb25seSBmb3IgcmVtb3RlIHNjaGVtYXMsIG5vdCBsb2NhbCBvbmVzXG4gICAgaWdub3JlVW5yZXNvbHZhYmxlUmVmZXJlbmNlczogZmFsc2UsXG4gICAgLy8gZGlzYWxsb3cgdXNhZ2Ugb2Yga2V5d29yZHMgdGhhdCB0aGlzIHZhbGlkYXRvciBjYW4ndCBoYW5kbGVcbiAgICBub0V4dHJhS2V5d29yZHM6IGZhbHNlLFxuICAgIC8vIGRpc2FsbG93IHVzYWdlIG9mIHNjaGVtYSdzIHdpdGhvdXQgXCJ0eXBlXCIgZGVmaW5lZFxuICAgIG5vVHlwZWxlc3M6IGZhbHNlLFxuICAgIC8vIGRpc2FsbG93IHplcm8gbGVuZ3RoIHN0cmluZ3MgaW4gdmFsaWRhdGVkIG9iamVjdHNcbiAgICBub0VtcHR5U3RyaW5nczogZmFsc2UsXG4gICAgLy8gZGlzYWxsb3cgemVybyBsZW5ndGggYXJyYXlzIGluIHZhbGlkYXRlZCBvYmplY3RzXG4gICAgbm9FbXB0eUFycmF5czogZmFsc2UsXG4gICAgLy8gZm9yY2VzIFwidXJpXCIgZm9ybWF0IHRvIGJlIGluIGZ1bGx5IHJmYzM5ODYgY29tcGxpYW50XG4gICAgc3RyaWN0VXJpczogZmFsc2UsXG4gICAgLy8gdHVybiBvbiBzb21lIG9mIHRoZSBhYm92ZVxuICAgIHN0cmljdE1vZGU6IGZhbHNlLFxuICAgIC8vIHJlcG9ydCBlcnJvciBwYXRocyBhcyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzIHRvIGdldCB0byB0aGUgb2ZmZW5kaW5nIG5vZGVcbiAgICByZXBvcnRQYXRoQXNBcnJheTogZmFsc2UsXG4gICAgLy8gc3RvcHMgdmFsaWRhdGlvbiBhcyBzb29uIGFzIGFuIGVycm9yIGlzIGZvdW5kLCB0cnVlIGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSB0dXJuZWQgb2ZmXG4gICAgYnJlYWtPbkZpcnN0RXJyb3I6IHRydWUsXG4gICAgLy8gY2hlY2sgaWYgc2NoZW1hIGZvbGxvdyBiZXN0IHByYWN0aWNlcyBhbmQgY29tbW9uIHNlbmNlXG4gICAgcGVkYW50aWNDaGVjazogZmFsc2UsXG4gICAgLy8gaWdub3JlIHVua25vd24gZm9ybWF0cyAoZG8gbm90IHJlcG9ydCB0aGVtIGFzIGFuIGVycm9yKVxuICAgIGlnbm9yZVVua25vd25Gb3JtYXRzOiBmYWxzZSxcbiAgICAvLyBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gZXZlcnkgc2NoZW1hXG4gICAgY3VzdG9tVmFsaWRhdG9yOiBudWxsXG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemVPcHRpb25zKG9wdGlvbnMpIHtcbiAgICB2YXIgbm9ybWFsaXplZDtcblxuICAgIC8vIG9wdGlvbnNcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKSxcbiAgICAgICAgICAgIGlkeCA9IGtleXMubGVuZ3RoLFxuICAgICAgICAgICAga2V5O1xuXG4gICAgICAgIC8vIGNoZWNrIHRoYXQgdGhlIG9wdGlvbnMgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkXG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAga2V5ID0ga2V5c1tpZHhdO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25zW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgb3B0aW9uIHBhc3NlZCB0byBjb25zdHJ1Y3RvcjogXCIgKyBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29weSB0aGUgZGVmYXVsdCBvcHRpb25zIGludG8gcGFzc2VkIG9wdGlvbnNcbiAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzKGRlZmF1bHRPcHRpb25zKTtcbiAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAga2V5ID0ga2V5c1tpZHhdO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1trZXldID0gVXRpbHMuY2xvbmUoZGVmYXVsdE9wdGlvbnNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub3JtYWxpemVkID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemVkID0gVXRpbHMuY2xvbmUoZGVmYXVsdE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkLnN0cmljdE1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgbm9ybWFsaXplZC5mb3JjZUFkZGl0aW9uYWwgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5mb3JjZUl0ZW1zICAgICAgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5mb3JjZU1heExlbmd0aCAgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5mb3JjZVByb3BlcnRpZXMgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5ub0V4dHJhS2V5d29yZHMgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5ub1R5cGVsZXNzICAgICAgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5ub0VtcHR5U3RyaW5ncyAgID0gdHJ1ZTtcbiAgICAgICAgbm9ybWFsaXplZC5ub0VtcHR5QXJyYXlzICAgID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLypcbiAgICBjb25zdHJ1Y3RvclxuKi9cbmZ1bmN0aW9uIFpTY2hlbWEob3B0aW9ucykge1xuICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgICB0aGlzLnJlZmVyZW5jZUNhY2hlID0gW107XG4gICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMgPSB7fTtcblxuICAgIHRoaXMub3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBEaXNhYmxlIHN0cmljdCB2YWxpZGF0aW9uIGZvciB0aGUgYnVpbHQtaW4gc2NoZW1hc1xuICAgIHZhciBtZXRhc2NoZW1hT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMoeyB9KTtcblxuICAgIHRoaXMuc2V0UmVtb3RlUmVmZXJlbmNlKFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWFcIiwgRHJhZnQ0U2NoZW1hLCBtZXRhc2NoZW1hT3B0aW9ucyk7XG4gICAgdGhpcy5zZXRSZW1vdGVSZWZlcmVuY2UoXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L2h5cGVyLXNjaGVtYVwiLCBEcmFmdDRIeXBlclNjaGVtYSwgbWV0YXNjaGVtYU9wdGlvbnMpO1xufVxuXG4vKlxuICAgIGluc3RhbmNlIG1ldGhvZHNcbiovXG5aU2NoZW1hLnByb3RvdHlwZS5jb21waWxlU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgIHZhciByZXBvcnQgPSBuZXcgUmVwb3J0KHRoaXMub3B0aW9ucyk7XG5cbiAgICBzY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG5cbiAgICBTY2hlbWFDb21waWxhdGlvbi5jb21waWxlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuXG4gICAgdGhpcy5sYXN0UmVwb3J0ID0gcmVwb3J0O1xuICAgIHJldHVybiByZXBvcnQuaXNWYWxpZCgpO1xufTtcblpTY2hlbWEucHJvdG90eXBlLnZhbGlkYXRlU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkgJiYgc2NoZW1hLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIudmFsaWRhdGVTY2hlbWEgd2FzIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGFycmF5XCIpO1xuICAgIH1cblxuICAgIHZhciByZXBvcnQgPSBuZXcgUmVwb3J0KHRoaXMub3B0aW9ucyk7XG5cbiAgICBzY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG5cbiAgICB2YXIgY29tcGlsZWQgPSBTY2hlbWFDb21waWxhdGlvbi5jb21waWxlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIGlmIChjb21waWxlZCkgeyBTY2hlbWFWYWxpZGF0aW9uLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpOyB9XG5cbiAgICB0aGlzLmxhc3RSZXBvcnQgPSByZXBvcnQ7XG4gICAgcmV0dXJuIHJlcG9ydC5pc1ZhbGlkKCk7XG59O1xuWlNjaGVtYS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiAoanNvbiwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuXG4gICAgaWYgKFV0aWxzLndoYXRJcyhvcHRpb25zKSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMpIHsgb3B0aW9ucyA9IHt9OyB9XG5cbiAgICB0aGlzLnZhbGlkYXRlT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICB2YXIgd2hhdElzID0gVXRpbHMud2hhdElzKHNjaGVtYSk7XG4gICAgaWYgKHdoYXRJcyAhPT0gXCJzdHJpbmdcIiAmJiB3aGF0SXMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoXCJJbnZhbGlkIC52YWxpZGF0ZSBjYWxsIC0gc2NoZW1hIG11c3QgYmUgYW4gc3RyaW5nIG9yIG9iamVjdCBidXQgXCIgKyB3aGF0SXMgKyBcIiB3YXMgcGFzc2VkIVwiKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhciBmb3VuZEVycm9yID0gZmFsc2U7XG4gICAgdmFyIHJlcG9ydCA9IG5ldyBSZXBvcnQodGhpcy5vcHRpb25zKTtcblxuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhciBzY2hlbWFOYW1lID0gc2NoZW1hO1xuICAgICAgICBzY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYU5hbWUpO1xuICAgICAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIHdpdGggaWQgJ1wiICsgc2NoZW1hTmFtZSArIFwiJyB3YXNuJ3QgZm91bmQgaW4gdGhlIHZhbGlkYXRvciBjYWNoZSFcIik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG4gICAgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0gZmFsc2U7XG4gICAgaWYgKCFmb3VuZEVycm9yKSB7XG4gICAgICAgIGNvbXBpbGVkID0gU2NoZW1hQ29tcGlsYXRpb24uY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgICB0aGlzLmxhc3RSZXBvcnQgPSByZXBvcnQ7XG4gICAgICAgIGZvdW5kRXJyb3IgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciB2YWxpZGF0ZWQgPSBmYWxzZTtcbiAgICBpZiAoIWZvdW5kRXJyb3IpIHtcbiAgICAgICAgdmFsaWRhdGVkID0gU2NoZW1hVmFsaWRhdGlvbi52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKCF2YWxpZGF0ZWQpIHtcbiAgICAgICAgdGhpcy5sYXN0UmVwb3J0ID0gcmVwb3J0O1xuICAgICAgICBmb3VuZEVycm9yID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zY2hlbWFQYXRoKSB7XG4gICAgICAgIHJlcG9ydC5yb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBzY2hlbWEgPSBnZXQoc2NoZW1hLCBvcHRpb25zLnNjaGVtYVBhdGgpO1xuICAgICAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIHBhdGggJ1wiICsgb3B0aW9ucy5zY2hlbWFQYXRoICsgXCInIHdhc24ndCBmb3VuZCBpbiB0aGUgc2NoZW1hIVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZm91bmRFcnJvcikge1xuICAgICAgICBKc29uVmFsaWRhdGlvbi52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLCBqc29uKTtcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgcmVwb3J0LnByb2Nlc3NBc3luY1Rhc2tzKHRoaXMub3B0aW9ucy5hc3luY1RpbWVvdXQsIGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAocmVwb3J0LmFzeW5jVGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHZhbGlkYXRpb24gaGFzIGFzeW5jIHRhc2tzIGFuZCBjYW5ub3QgYmUgZG9uZSBpbiBzeW5jIG1vZGUsIHBsZWFzZSBwcm92aWRlIGNhbGxiYWNrIGFyZ3VtZW50LlwiKTtcbiAgICB9XG5cbiAgICAvLyBhc3NpZ24gbGFzdFJlcG9ydCBzbyBlcnJvcnMgYXJlIHJldHJpZXZhYmxlIGluIHN5bmMgbW9kZVxuICAgIHRoaXMubGFzdFJlcG9ydCA9IHJlcG9ydDtcbiAgICByZXR1cm4gcmVwb3J0LmlzVmFsaWQoKTtcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5nZXRMYXN0RXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMubGFzdFJlcG9ydC5lcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZSA9IG5ldyBFcnJvcigpO1xuICAgIGUubmFtZSA9IFwiei1zY2hlbWEgdmFsaWRhdGlvbiBlcnJvclwiO1xuICAgIGUubWVzc2FnZSA9IHRoaXMubGFzdFJlcG9ydC5jb21tb25FcnJvck1lc3NhZ2U7XG4gICAgZS5kZXRhaWxzID0gdGhpcy5sYXN0UmVwb3J0LmVycm9ycztcbiAgICByZXR1cm4gZTtcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5nZXRMYXN0RXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmxhc3RSZXBvcnQgJiYgdGhpcy5sYXN0UmVwb3J0LmVycm9ycy5sZW5ndGggPiAwID8gdGhpcy5sYXN0UmVwb3J0LmVycm9ycyA6IHVuZGVmaW5lZDtcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5nZXRNaXNzaW5nUmVmZXJlbmNlcyA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgICBhcnIgPSBhcnIgfHwgdGhpcy5sYXN0UmVwb3J0LmVycm9ycztcbiAgICB2YXIgcmVzID0gW10sXG4gICAgICAgIGlkeCA9IGFyci5sZW5ndGg7XG4gICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgIHZhciBlcnJvciA9IGFycltpZHhdO1xuICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gXCJVTlJFU09MVkFCTEVfUkVGRVJFTkNFXCIpIHtcbiAgICAgICAgICAgIHZhciByZWZlcmVuY2UgPSBlcnJvci5wYXJhbXNbMF07XG4gICAgICAgICAgICBpZiAocmVzLmluZGV4T2YocmVmZXJlbmNlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvci5pbm5lcikge1xuICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdCh0aGlzLmdldE1pc3NpbmdSZWZlcmVuY2VzKGVycm9yLmlubmVyKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5nZXRNaXNzaW5nUmVtb3RlUmVmZXJlbmNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWlzc2luZ1JlZmVyZW5jZXMgPSB0aGlzLmdldE1pc3NpbmdSZWZlcmVuY2VzKCksXG4gICAgICAgIG1pc3NpbmdSZW1vdGVSZWZlcmVuY2VzID0gW10sXG4gICAgICAgIGlkeCA9IG1pc3NpbmdSZWZlcmVuY2VzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIHJlbW90ZVJlZmVyZW5jZSA9IFNjaGVtYUNhY2hlLmdldFJlbW90ZVBhdGgobWlzc2luZ1JlZmVyZW5jZXNbaWR4XSk7XG4gICAgICAgIGlmIChyZW1vdGVSZWZlcmVuY2UgJiYgbWlzc2luZ1JlbW90ZVJlZmVyZW5jZXMuaW5kZXhPZihyZW1vdGVSZWZlcmVuY2UpID09PSAtMSkge1xuICAgICAgICAgICAgbWlzc2luZ1JlbW90ZVJlZmVyZW5jZXMucHVzaChyZW1vdGVSZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaXNzaW5nUmVtb3RlUmVmZXJlbmNlcztcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5zZXRSZW1vdGVSZWZlcmVuY2UgPSBmdW5jdGlvbiAodXJpLCBzY2hlbWEsIHZhbGlkYXRpb25PcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgc2NoZW1hID0gSlNPTi5wYXJzZShzY2hlbWEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IFV0aWxzLmNsb25lRGVlcChzY2hlbWEpO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0aW9uT3B0aW9ucykge1xuICAgICAgICBzY2hlbWEuX18kdmFsaWRhdGlvbk9wdGlvbnMgPSBub3JtYWxpemVPcHRpb25zKHZhbGlkYXRpb25PcHRpb25zKTtcbiAgICB9XG5cbiAgICBTY2hlbWFDYWNoZS5jYWNoZVNjaGVtYUJ5VXJpLmNhbGwodGhpcywgdXJpLCBzY2hlbWEpO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldFJlc29sdmVkU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgIHZhciByZXBvcnQgPSBuZXcgUmVwb3J0KHRoaXMub3B0aW9ucyk7XG4gICAgc2NoZW1hID0gU2NoZW1hQ2FjaGUuZ2V0U2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuXG4gICAgLy8gY2xvbmUgYmVmb3JlIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9uc1xuICAgIHNjaGVtYSA9IFV0aWxzLmNsb25lRGVlcChzY2hlbWEpO1xuXG4gICAgdmFyIHZpc2l0ZWQgPSBbXTtcblxuICAgIC8vIGNsZWFuLXVwIHRoZSBzY2hlbWEgYW5kIHJlc29sdmUgcmVmZXJlbmNlc1xuICAgIHZhciBjbGVhbnVwID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgICAgICB2YXIga2V5LFxuICAgICAgICAgICAgdHlwZU9mID0gVXRpbHMud2hhdElzKHNjaGVtYSk7XG4gICAgICAgIGlmICh0eXBlT2YgIT09IFwib2JqZWN0XCIgJiYgdHlwZU9mICE9PSBcImFycmF5XCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuX19fJHZpc2l0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNjaGVtYS5fX18kdmlzaXRlZCA9IHRydWU7XG4gICAgICAgIHZpc2l0ZWQucHVzaChzY2hlbWEpO1xuXG4gICAgICAgIGlmIChzY2hlbWEuJHJlZiAmJiBzY2hlbWEuX18kcmVmUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHZhciBmcm9tID0gc2NoZW1hLl9fJHJlZlJlc29sdmVkO1xuICAgICAgICAgICAgdmFyIHRvID0gc2NoZW1hO1xuICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS4kcmVmO1xuICAgICAgICAgICAgZGVsZXRlIHNjaGVtYS5fXyRyZWZSZXNvbHZlZDtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIGZyb20pIHtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW2tleV0gPSBmcm9tW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoa2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKFwiX18kXCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWFba2V5XTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKHNjaGVtYVtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY2xlYW51cChzY2hlbWEpO1xuICAgIHZpc2l0ZWQuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgICAgICBkZWxldGUgcy5fX18kdmlzaXRlZDtcbiAgICB9KTtcblxuICAgIHRoaXMubGFzdFJlcG9ydCA9IHJlcG9ydDtcbiAgICBpZiAocmVwb3J0LmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IHRoaXMuZ2V0TGFzdEVycm9yKCk7XG4gICAgfVxufTtcblpTY2hlbWEucHJvdG90eXBlLnNldFNjaGVtYVJlYWRlciA9IGZ1bmN0aW9uIChzY2hlbWFSZWFkZXIpIHtcbiAgICByZXR1cm4gWlNjaGVtYS5zZXRTY2hlbWFSZWFkZXIoc2NoZW1hUmVhZGVyKTtcbn07XG5aU2NoZW1hLnByb3RvdHlwZS5nZXRTY2hlbWFSZWFkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFpTY2hlbWEuc2NoZW1hUmVhZGVyO1xufTtcblxuLypcbiAgICBzdGF0aWMgbWV0aG9kc1xuKi9cblpTY2hlbWEuc2V0U2NoZW1hUmVhZGVyID0gZnVuY3Rpb24gKHNjaGVtYVJlYWRlcikge1xuICAgIFpTY2hlbWEuc2NoZW1hUmVhZGVyID0gc2NoZW1hUmVhZGVyO1xufTtcblpTY2hlbWEucmVnaXN0ZXJGb3JtYXQgPSBmdW5jdGlvbiAoZm9ybWF0TmFtZSwgdmFsaWRhdG9yRnVuY3Rpb24pIHtcbiAgICBGb3JtYXRWYWxpZGF0b3JzW2Zvcm1hdE5hbWVdID0gdmFsaWRhdG9yRnVuY3Rpb247XG59O1xuWlNjaGVtYS51bnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKGZvcm1hdE5hbWUpIHtcbiAgICBkZWxldGUgRm9ybWF0VmFsaWRhdG9yc1tmb3JtYXROYW1lXTtcbn07XG5aU2NoZW1hLmdldFJlZ2lzdGVyZWRGb3JtYXRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhGb3JtYXRWYWxpZGF0b3JzKTtcbn07XG5aU2NoZW1hLmdldERlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBVdGlscy5jbG9uZURlZXAoZGVmYXVsdE9wdGlvbnMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBaU2NoZW1hO1xuIiwibW9kdWxlLmV4cG9ydHM9e1xuICAgIFwiJHNjaGVtYVwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvaHlwZXItc2NoZW1hI1wiLFxuICAgIFwiaWRcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L2h5cGVyLXNjaGVtYSNcIixcbiAgICBcInRpdGxlXCI6IFwiSlNPTiBIeXBlci1TY2hlbWFcIixcbiAgICBcImFsbE9mXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCJcbiAgICAgICAgfVxuICAgIF0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJhZGRpdGlvbmFsSXRlbXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxsT2ZcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYW55T2ZcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwib25lT2ZcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibm90XCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICB9LFxuXG4gICAgICAgIFwibGlua3NcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbGlua0Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmcmFnbWVudFJlc29sdXRpb25cIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZWRpYVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbWVkaWEgdHlwZSwgYXMgZGVzY3JpYmVkIGluIFJGQyAyMDQ2XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImJpbmFyeUVuY29kaW5nXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgY29udGVudCBlbmNvZGluZyBzY2hlbWUsIGFzIGRlc2NyaWJlZCBpbiBSRkMgMjA0NVwiLFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXRoU3RhcnRcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkluc3RhbmNlcycgVVJJcyBtdXN0IHN0YXJ0IHdpdGggdGhpcyB2YWx1ZSBmb3IgdGhpcyBzY2hlbWEgdG8gYXBwbHkgdG8gdGhlbVwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgICBcInNjaGVtYUFycmF5XCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJsaW5rRGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkxpbmsgRGVzY3JpcHRpb24gT2JqZWN0XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICAgIFwicmVxdWlyZWRcIjogWyBcImhyZWZcIiwgXCJyZWxcIiBdLFxuICAgICAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgICBcImhyZWZcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiYSBVUkkgdGVtcGxhdGUsIGFzIGRlZmluZWQgYnkgUkZDIDY1NzAsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAkLCAoIGFuZCApIGNoYXJhY3RlcnMgZm9yIHByZS1wcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJyZWxhdGlvbiB0byB0aGUgdGFyZ2V0IHJlc291cmNlIG9mIHRoZSBsaW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcImEgdGl0bGUgZm9yIHRoZSBsaW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInRhcmdldFNjaGVtYVwiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJKU09OIFNjaGVtYSBkZXNjcmliaW5nIHRoZSBsaW5rIHRhcmdldFwiLFxuICAgICAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwibWVkaWFUeXBlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIm1lZGlhIHR5cGUgKGFzIGRlZmluZWQgYnkgUkZDIDIwNDYpIGRlc2NyaWJpbmcgdGhlIGxpbmsgdGFyZ2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIm1ldGhvZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJtZXRob2QgZm9yIHJlcXVlc3RpbmcgdGhlIHRhcmdldCBvZiB0aGUgbGluayAoZS5nLiBmb3IgSFRUUCB0aGlzIG1pZ2h0IGJlIFxcXCJHRVRcXFwiIG9yIFxcXCJERUxFVEVcXFwiKVwiLFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJlbmNUeXBlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBtZWRpYSB0eXBlIGluIHdoaWNoIHRvIHN1Ym1pdCBkYXRhIGFsb25nIHdpdGggdGhlIHJlcXVlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJzY2hlbWFcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU2NoZW1hIGRlc2NyaWJpbmcgdGhlIGRhdGEgdG8gc3VibWl0IGFsb25nIHdpdGggdGhlIHJlcXVlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gICAgXCJpZFwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hI1wiLFxuICAgIFwiJHNjaGVtYVwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hI1wiLFxuICAgIFwiZGVzY3JpcHRpb25cIjogXCJDb3JlIHNjaGVtYSBtZXRhLXNjaGVtYVwiLFxuICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgICBcInNjaGVtYUFycmF5XCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgICBcIml0ZW1zXCI6IHsgXCIkcmVmXCI6IFwiI1wiIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwb3NpdGl2ZUludGVnZXJcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJtaW5pbXVtXCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJwb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiOiB7XG4gICAgICAgICAgICBcImFsbE9mXCI6IFsgeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiIH0sIHsgXCJkZWZhdWx0XCI6IDAgfSBdXG4gICAgICAgIH0sXG4gICAgICAgIFwic2ltcGxlVHlwZXNcIjoge1xuICAgICAgICAgICAgXCJlbnVtXCI6IFsgXCJhcnJheVwiLCBcImJvb2xlYW5cIiwgXCJpbnRlZ2VyXCIsIFwibnVsbFwiLCBcIm51bWJlclwiLCBcIm9iamVjdFwiLCBcInN0cmluZ1wiIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzdHJpbmdBcnJheVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgXCJpdGVtc1wiOiB7IFwidHlwZVwiOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJpZFwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCIkc2NoZW1hXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHt9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcIm1pbmltdW1cIjogMCxcbiAgICAgICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIiB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIiB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcImZvcm1hdFwiOiBcInJlZ2V4XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhZGRpdGlvbmFsSXRlbXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAgeyBcInR5cGVcIjogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICB7IFwiJHJlZlwiOiBcIiNcIiB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAgeyBcIiRyZWZcIjogXCIjXCIgfSxcbiAgICAgICAgICAgICAgICB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIiB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCIgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhQcm9wZXJ0aWVzXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIiB9LFxuICAgICAgICBcIm1pblByb3BlcnRpZXNcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCIgfSxcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIiB9LFxuICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAgICAgIHsgXCJ0eXBlXCI6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgeyBcIiRyZWZcIjogXCIjXCIgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7IFwiJHJlZlwiOiBcIiNcIiB9LFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogeyBcIiRyZWZcIjogXCIjXCIgfSxcbiAgICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7IFwiJHJlZlwiOiBcIiNcIiB9LFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAgICAgIHsgXCIkcmVmXCI6IFwiI1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwiIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXNcIiB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpdGVtc1wiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2ltcGxlVHlwZXNcIiB9LFxuICAgICAgICAgICAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgICAgICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjogeyBcInR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICBcImFsbE9mXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiIH0sXG4gICAgICAgIFwiYW55T2ZcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCIgfSxcbiAgICAgICAgXCJvbmVPZlwiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIiB9LFxuICAgICAgICBcIm5vdFwiOiB7IFwiJHJlZlwiOiBcIiNcIiB9XG4gICAgfSxcbiAgICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiBbIFwibWF4aW11bVwiIF0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiBbIFwibWluaW11bVwiIF1cbiAgICB9LFxuICAgIFwiZGVmYXVsdFwiOiB7fVxufVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9oZWxwZXJzLmpzIiwibGliL3R5cGVzL2FwaS1kZWZpbml0aW9uLmpzIiwibGliL3R5cGVzL29wZXJhdGlvbi5qcyIsImxpYi90eXBlcy9wYXJhbWV0ZXItdmFsdWUuanMiLCJsaWIvdHlwZXMvcGFyYW1ldGVyLmpzIiwibGliL3R5cGVzL3BhdGguanMiLCJsaWIvdHlwZXMvcmVzcG9uc2UuanMiLCJsaWIvdmFsaWRhdGlvbi9mb3JtYXQtZ2VuZXJhdG9ycy5qcyIsImxpYi92YWxpZGF0aW9uL2Zvcm1hdC12YWxpZGF0b3JzLmpzIiwibGliL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvYXNzZXJ0LmpzIiwibm9kZV9tb2R1bGVzL2Fzc2VydC9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC9pc0J1ZmZlckJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L25vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L2xpYi9fZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanMiLCJub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1aWx0aW4tc3RhdHVzLWNvZGVzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY2FsbC1tZS1tYXliZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb21wb25lbnQtZW1pdHRlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGVidWcvc3JjL2RlYnVnLmpzIiwibm9kZV9tb2R1bGVzL2RlZXAtZXh0ZW5kL2xpYi9kZWVwLWV4dGVuZC5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvY2xvbmUtb2JqLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2ZpbmQtcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvbm9ybWFsaXplLXNjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9yZXNvbHZlLXNjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9kcmFuZ2UvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2FzdC5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2tleXdvcmQuanMiLCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvY29tbWVyY2UuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2NvbXBhbnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2RhdGFiYXNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9kYXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9mYWtlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9maW5hbmNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9oYWNrZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2liYW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2ltYWdlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaW50ZXJuZXQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9idWlsZGluZ19udW1iZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jaXR5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eV9wcmVmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jaXR5X3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL2NvdW50cnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHJ5X2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9kZWZhdWx0X2NvdW50cnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3Bvc3Rjb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvcG9zdGNvZGVfYnlfc3RhdGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zZWNvbmRhcnlfYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RhdGVfYWJici5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0cmVldF9hZGRyZXNzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RyZWV0X25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdHJlZXRfc3VmZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvdGltZV96b25lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9hdXRob3IuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYXBwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2NyZWRpdF9jYXJkX2V4cGlyeV9kYXRlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF9udW1iZXJzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2NyZWRpdF9jYXJkX3R5cGVzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NlbGxfcGhvbmUvZm9ybWF0cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jZWxsX3Bob25lL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2NvbG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2RlcGFydG1lbnQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tbWVyY2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tbWVyY2UvcHJvZHVjdF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYnNfYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYnNfbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX3ZlcmIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9hbWVyaWNhbl9leHByZXNzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2RpbmVyc19jbHViLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2Rpc2NvdmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2pjYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9sYXNlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9tYWVzdHJvLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL21hc3RlcmNhcmQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvc29sby5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9zd2l0Y2guanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvdmlzYS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9jb2xsYXRpb24uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvY29sdW1uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGFiYXNlL2VuZ2luZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS90eXBlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0ZS9tb250aC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRlL3dlZWtkYXkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9hY2NvdW50X3R5cGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9jdXJyZW5jeS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9maW5hbmNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvdHJhbnNhY3Rpb25fdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvYWJicmV2aWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9hZGplY3RpdmUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaGFja2VyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9pbmd2ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9ub3VuLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci92ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2F2YXRhcl91cmkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvZG9tYWluX3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9leGFtcGxlX2VtYWlsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2ZyZWVfZW1haWwuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbG9yZW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbG9yZW0vc3VwcGxlbWVudGFsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL3dvcmRzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvZmlyc3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvbGFzdF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3ByZWZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3RpdGxlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3Bob25lX251bWJlci9mb3JtYXRzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3Bob25lX251bWJlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9zeXN0ZW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vc3lzdGVtL21pbWVUeXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi90ZWFtL2NyZWF0dXJlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3RlYW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vdGVhbS9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvZGVmYXVsdF9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvYWRkcmVzcy9wb3N0Y29kZV9ieV9zdGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbnRlcm5ldC9kb21haW5fc3VmZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2ludGVybmV0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9hcmVhX2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvcGhvbmVfbnVtYmVyL2V4Y2hhbmdlX2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvcGhvbmVfbnVtYmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb3JlbS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvcGhvbmVfbnVtYmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9yYW5kb20uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL3N5c3RlbS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9sb2NhbGUvZW5fVVMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvdmVuZG9yL21lcnNlbm5lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL3ZlbmRvci91c2VyLWFnZW50LmpzIiwibm9kZV9tb2R1bGVzL2Zvcm1hdC11dGlsL2Zvcm1hdC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kZnMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS1hbGwuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2lzLWFjeWNsaWMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wb3N0b3JkZXIuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByaW0uanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9ncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2pzb24uanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9odHRwcy1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzYXJyYXkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanMtYmFzZTY0L2Jhc2U2NC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9jb21tb24uanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9kdW1wZXIuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9leGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9sb2FkZXIuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9tYXJrLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2NvcmUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9qc29uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvYmluYXJ5LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9ib29sLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9mbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvaW50LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9qcy9mdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvcmVnZXhwLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9qcy91bmRlZmluZWQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL21hcC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbWVyZ2UuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL251bGwuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL29tYXAuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3BhaXJzLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXEuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3NldC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvc3RyLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS90aW1lc3RhbXAuanMiLCJub2RlX21vZHVsZXMvanNvbi1yZWZzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLWZha2VyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9idW5kbGUuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvZGVyZWZlcmVuY2UuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvbm9ybWFsaXplLWFyZ3MuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvb3B0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL2JpbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL2pzb24uanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy90ZXh0LmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3BhcnNlcnMveWFtbC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wb2ludGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3JlZi5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZWZzLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmUtZXh0ZXJuYWwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVzb2x2ZXJzL2ZpbGUuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVzb2x2ZXJzL2h0dHAuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi91dGlsL3BsdWdpbnMuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC91cmwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC95YW1sLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2dlbmVyYXRlZC9hZXNwcmltLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvZ2VuZXJhdGVkL3BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvZGljdC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvZ3JhbW1hci5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvaGFuZGxlcnMuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL3NsaWNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC5nZXQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoLmlzZXF1YWwvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9tcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9uYXRpdmUtcHJvbWlzZS1vbmx5L2xpYi9ucG8uc3JjLmpzIiwibm9kZV9tb2R1bGVzL29uby9saWIvb25vLmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWxvYWRlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWxvYWRlci9saWIvbG9hZGVycy9maWxlLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGF0aC1sb2FkZXIvbGliL2xvYWRlcnMvaHR0cC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLXRvLXJlZ2V4cC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLXRvLXJlZ2V4cC9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9jZXNzLW5leHRpY2stYXJncy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2RlY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZW5jb2RlLmpzIiwibm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5nLWVzMy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yYW5kZXhwL2xpYi9yYW5kZXhwLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3Bvc2l0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3NldHMuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi90eXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc2xhc2gvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzY29kZWdlbi9lc2NvZGVnZW4uanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzY29kZWdlbi9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzdHJhdmVyc2UvZXN0cmF2ZXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXN0cmF2ZXJzZS9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2FycmF5LXNldC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYmFzZTY0LXZscS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYmFzZTY0LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iaW5hcnktc2VhcmNoLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9tYXBwaW5nLWxpc3QuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3F1aWNrLXNvcnQuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3NvdXJjZS1tYXAtY29uc3VtZXIuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2Utbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9zb3VyY2UtbWFwLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9jYXBhYmlsaXR5LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9yZXF1ZXN0LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9yZXNwb25zZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9saWIvc3RyaW5nX2RlY29kZXIuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvYWdlbnQtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9jbGllbnQuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvaXMtb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3JlcXVlc3QtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9yZXNwb25zZS1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3N3YWdnZXItbWV0aG9kcy9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3dhZ2dlci1zY2hlbWEtb2ZmaWNpYWwvc2NoZW1hLmpzb24iLCJub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcyIsIm5vZGVfbW9kdWxlcy90by1hcnJheWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5qcyIsIm5vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUuanMiLCJub2RlX21vZHVsZXMvdXJpLWpzL2Rpc3QvZXM1L3VyaS5hbGwuanMiLCJub2RlX21vZHVsZXMvdXJsL3VybC5qcyIsIm5vZGVfbW9kdWxlcy91cmwvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2FscGhhLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvYmxhY2tsaXN0LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvY29udGFpbnMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9lcXVhbHMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9lc2NhcGUuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0FmdGVyLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBbHBoYS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQWxwaGFudW1lcmljLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBc2NpaS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQmFzZTY0LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNCZWZvcmUuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Jvb2xlYW4uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0J5dGVMZW5ndGguanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0NyZWRpdENhcmQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0N1cnJlbmN5LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNEYXRhVVJJLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNEZWNpbWFsLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNEaXZpc2libGVCeS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRW1haWwuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNGUUROLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNGbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRnVsbFdpZHRoLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNIYWxmV2lkdGguanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0hhc2guanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0hleENvbG9yLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNIZXhhZGVjaW1hbC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVAuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lQUmFuZ2UuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTQk4uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTSU4uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTTzMxNjYxQWxwaGEyLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU08zMTY2MUFscGhhMy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPODYwMS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNSQy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNTTi5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSW4uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0ludC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSlNPTi5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSldULmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNMYXRMb25nLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNMZW5ndGguanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0xvd2VyY2FzZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTUFDQWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTUQ1LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNYWduZXRVUkkuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc01pbWVUeXBlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNb2JpbGVQaG9uZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTW9uZ29JZC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTXVsdGlieXRlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNOdW1lcmljLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNQb3J0LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNQb3N0YWxDb2RlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNSRkMzMzM5LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNTdXJyb2dhdGVQYWlyLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNVUkwuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1VVSUQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1VwcGVyY2FzZS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzVmFyaWFibGVXaWR0aC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzV2hpdGVsaXN0ZWQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9sdHJpbS5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL21hdGNoZXMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9ub3JtYWxpemVFbWFpbC5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3J0cmltLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvc3RyaXBMb3cuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi90b0Jvb2xlYW4uanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi90b0RhdGUuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi90b0Zsb2F0LmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9JbnQuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi90cmltLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdW5lc2NhcGUuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi91dGlsL2Fzc2VydFN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvaW5jbHVkZXMuanMiLCJub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi91dGlsL21lcmdlLmpzIiwibm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdXRpbC90b1N0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3doaXRlbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy94dGVuZC9pbW11dGFibGUuanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL0Vycm9ycy5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvRm9ybWF0VmFsaWRhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvSnNvblZhbGlkYXRpb24uanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL1BvbHlmaWxscy5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvUmVwb3J0LmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9TY2hlbWFDYWNoZS5qcyIsIm5vZGVfbW9kdWxlcy96LXNjaGVtYS9zcmMvU2NoZW1hQ29tcGlsYXRpb24uanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL1NjaGVtYVZhbGlkYXRpb24uanMiLCJub2RlX21vZHVsZXMvei1zY2hlbWEvc3JjL1V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9aU2NoZW1hLmpzIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9zY2hlbWFzL2h5cGVyLXNjaGVtYS5qc29uIiwibm9kZV9tb2R1bGVzL3otc2NoZW1hL3NyYy9zY2hlbWFzL3NjaGVtYS5qc29uIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTs7QUFFQSxJQUFJLElBQUksUUFBUSxRQUFSLENBQVI7QUFDQSxJQUFJLFVBQVUsUUFBUSxlQUFSLENBQWQ7QUFDQSxJQUFJLFdBQVcsUUFBUSxXQUFSLENBQWY7QUFDQSxJQUFJLGdCQUFnQixRQUFRLDRCQUFSLENBQXBCO0FBQ0EsSUFBSSxPQUFPLFFBQVEsU0FBUixDQUFYOztBQUVBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sT0FBUCxLQUFtQixXQUF2QixFQUFvQztBQUNsQyxVQUFRLHFCQUFSO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxPQUFPLE9BQVAsQ0FBZSxNQUFmLEdBQXdCLFVBQVUsT0FBVixFQUFtQjtBQUN6QyxNQUFJLFdBQVcsUUFBUSxPQUFSLEVBQWY7QUFDQSxNQUFJLFFBQUo7O0FBRUE7QUFDQSxhQUFXLFNBQVMsSUFBVCxDQUFjLFlBQVk7QUFDbkMsV0FBTyxJQUFJLE9BQUosQ0FBWSxVQUFVLE9BQVYsRUFBbUI7QUFDcEMsVUFB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ckVrQixFQXNFbEIsK0RBdEVrQixFQXVFbEIsaUVBdkVrQixFQXdFbEIsZ0VBeEVrQixFQXlFbEIsbUVBekVrQixFQTBFbEIsK0RBMUVrQixFQTJFbEIsZ0VBM0VrQixFQTRFbEIsaUVBNUVrQixFQTZFbEIsb0VBN0VrQixFQThFbEIsbUVBOUVrQixFQStFbEIscUVBL0VrQixFQWdGbEIsbUVBaEZrQixFQWlGbEIsOERBakZrQixFQWtGbEIscUVBbEZrQixFQW1GbEIsd0VBbkZrQixFQW9GbEIsa0VBcEZrQixFQXFGbEIsb0VBckZrQixFQXNGbEIsc0VBdEZrQixFQXVGbEIsb0VBdkZrQixFQXdGbEIsc0VBeEZrQixFQXlGbEIsc0VBekZrQixFQTBGbEIsdUVBMUZrQixFQTJGbEIsa0VBM0ZrQixFQTRGbEIsc0VBNUZrQixFQTZGbEIsbUVBN0ZrQixFQThGbEIsZ0VBOUZrQixFQStGbEIsc0VBL0ZrQixFQWdHbEIsc0VBaEdrQixFQWlHbEIsaUVBakdrQixFQWtHbEIsOERBbEdrQixFQW1HbEIsa0VBbkdrQixFQW9HbEIsb0VBcEdrQixFQXFHbEIsaUVBckdrQixFQXNHbEIsK0RBdEdrQixFQXVHbEIsdUVBdkdrQixFQXdHbEIsb0VBeEdrQixFQXlHbEIsNkRBekdrQixFQTBHbEIsb0VBMUdrQixFQTJHbEIsOERBM0drQixFQTRHbEIsaUVBNUdrQixFQTZHbEIsaUVBN0drQixFQThHbEIsa0VBOUdrQixFQStHbEIsb0VBL0drQixFQWdIbEIsc0VBaEhrQixFQWlIbEIsa0VBakhrQixFQWtIbEIsaUVBbEhrQixFQW1IbEIsaUVBbkhrQixFQW9IbEIsOERBcEhrQixFQXFIbEIsaUVBckhrQixFQXNIbEIsaUVBdEhrQixFQXVIbEIsK0RBdkhrQixFQXdIbEIsNERBeEhrQixFQXlIbEIsbUVBekhrQixFQTBIbEIsK0RBMUhrQixFQTJIbEIsK0RBM0hrQixFQTRIbEIsK0RBNUhrQixFQTZIbEIsc0VBN0hrQixFQThIbEIsbUVBOUhrQixFQStIbEIsa0VBL0hrQixFQWdJbEIsK0RBaElrQixFQWlJbEIsK0RBaklrQixFQWtJbEIsa0VBbElrQixFQW1JbEIscUVBbklrQixFQW9JbEIsK0RBcElrQixFQXFJbEIsOERBcklrQixFQXNJbEIsbUVBdElrQixFQXVJbEIsb0VBdklrQixFQXdJbEIsd0VBeElrQixFQXlJbEIsa0VBeklrQixFQTBJbEIsa0VBMUlrQixFQTJJbEIsa0VBM0lrQixFQTRJbEIsd0VBNUlrQixFQTZJbEIsaUVBN0lrQixFQThJbEIsb0VBOUlrQixFQStJbEIsa0VBL0lrQixFQWdKbEIsb0VBaEprQixFQWlKbEIsNkRBakprQixFQWtKbEIsNkRBbEprQixFQW1KbEIsdUVBbkprQixFQW9KbEIsc0VBcEprQixFQXFKbEIsc0VBckprQixFQXNKbEIsZ0VBdEprQixFQXVKbEIsZ0VBdkprQixFQXdKbEIsa0VBeEprQixFQXlKbEIsbUVBekprQixFQTBKbEIsbUVBMUprQixFQTJKbEIsa0VBM0prQixFQTRKbEIsbUVBNUprQixFQTZKbEIsaUVBN0prQixFQThKbEIsb0VBOUprQixFQStKbEIsZ0VBL0prQixFQWdLbEIsdUVBaEtrQixFQWlLbEIsa0VBaktrQixFQWtLbEIsb0VBbEtrQixFQW1LbEIsbUVBbktrQixFQW9LbEIsZ0VBcEtrQixFQXFLbEIscUVBcktrQixFQXNLbEIsc0VBdEtrQixFQXVLbEIscUVBdktrQixFQXdLbEIsK0RBeEtrQixFQXlLbEIsb0VBektrQixFQTBLbEIscUVBMUtrQixFQTJLbEIsOERBM0trQixFQTRLbEIsb0VBNUtrQixFQTZLbEIsZ0VBN0trQixFQThLbEIsa0VBOUtrQixFQStLbEIsb0VBL0trQixFQWdMbEIsK0RBaExrQixFQWlMbEIsZ0VBakxrQixFQWtMbEIsaUVBbExrQixFQW1MbEIsZ0VBbkxrQixFQW9MbEIsb0VBcExrQixFQXFMbEIsZ0VBckxrQixFQXNMbEIsc0VBdExrQixFQXVMbEIscUVBdkxrQixFQXdMbEIsc0VBeExrQixFQXlMbEIsa0VBekxrQixFQTBMbEIsb0VBMUxrQixFQTJMbEIsa0VBM0xrQixFQTRMbEIsc0VBNUxrQixFQTZMbEIsa0VBN0xrQixFQThMbEIscUVBOUxrQixFQStMbEIsb0VBL0xrQixFQWdNbEIsNERBaE1rQixFQWlNbEIsa0VBak1rQixFQWtNbEIsK0RBbE1rQixFQW1NbEIsa0VBbk1rQixFQW9NbEIsaUVBcE1rQixFQXFNbEIsaUVBck1rQixFQXNNbEIsaUVBdE1rQixFQXVNbEIsZ0VBdk1rQixFQXdNbEIscUVBeE1rQixFQXlNbEIsZ0VBek1rQixFQTBNbEIsaUVBMU1rQixFQTJNbEIsZ0VBM01rQixFQTRNbEIsb0VBNU1rQixFQTZNbEIsb0VBN01rQixFQThNbEIsaUVBOU1rQixFQStNbEIsNkRBL01rQixFQWdObEIscUVBaE5rQixFQWlObEIsbUVBak5rQixFQWtObEIsZ0VBbE5rQixFQW1ObEIsc0VBbk5rQixFQW9ObEIsa0VBcE5rQixFQXFObEIsdUVBck5rQixFQXNObEIsZ0VBdE5rQixFQXVObEIsb0VBdk5rQixFQXdObEIscUVBeE5rQixFQXlObEIsdUVBek5rQixFQTBObEIsdUVBMU5rQixFQTJObEIsa0VBM05rQixFQTRObEIsbUVBNU5rQixFQTZObEIsZ0VBN05rQixFQThObEIsb0VBOU5rQixFQStObEIscUVBL05rQixFQWdPbEIsa0VBaE9rQixFQWlPbEIsb0VBak9rQixFQWtPbEIsK0RBbE9rQixFQW1PbEIsZ0VBbk9rQixFQW9PbEIsc0VBcE9rQixFQXFPbEIsa0VBck9rQixFQXNPbEIsOERBdE9rQixFQXVPbEIsaUVBdk9rQixFQXdPbEIsaUVBeE9rQixFQXlPbEIsb0VBek9rQixFQTBPbEIsOERBMU9rQixFQTJPbEIsc0VBM09rQixFQTRPbEIsd0VBNU9rQixFQTZPbEIsaUVBN09rQixFQThPbEIsbUVBOU9rQixFQStPbEIsc0VBL09rQixFQWdQbEIsaUVBaFBrQixFQWlQbEIsaUVBalBrQixFQWtQbEIsZ0VBbFBrQixFQW1QbEIsZ0VBblBrQixFQW9QbEIsb0VBcFBrQixFQXFQbEIsaUVBclBrQixFQXNQbEIsZ0VBdFBrQixFQXVQbEIsdUVBdlBrQixFQXdQbEIsd0VBeFBrQixFQXlQbEIsd0VBelBrQixFQTBQbEIsOERBMVBrQixFQTJQbEIsOERBM1BrQixFQTRQbEIsK0RBNVBrQixFQTZQbEIsZ0VBN1BrQixFQThQbEIsa0VBOVBrQixFQStQbEIscUVBL1BrQixFQWdRbEIsK0RBaFFrQixFQWlRbEIsa0VBalFrQixFQWtRbEIsc0VBbFFrQixFQW1RbEIscUVBblFrQixFQW9RbEIsbUVBcFFrQixFQXFRbEIsb0VBclFrQixFQXNRbEIsbUVBdFFrQixFQXVRbEIsaUVBdlFrQixFQXdRbEIsd0VBeFFrQixFQXlRbEIsa0VBelFrQixFQTBRbEIsb0VBMVFrQixFQTJRbEIsaUVBM1FrQixFQTRRbEIsaUVBNVFrQixFQTZRbEIsc0VBN1FrQixFQThRbEIsOERBOVFrQixFQStRbEIsb0VBL1FrQixFQWdSbEIsK0RBaFJrQixFQWlSbEIsbUVBalJrQixFQWtSbEIsb0VBbFJrQixFQW1SbEIscUVBblJrQixFQW9SbEIsK0RBcFJrQixFQXFSbEIsK0RBclJrQixFQXNSbEIscUVBdFJrQixFQXVSbEIsd0VBdlJrQixFQXdSbEIsaUVBeFJrQixFQXlSbEIsOERBelJrQixFQTBSbEIsdUVBMVJrQixFQTJSbEIsb0VBM1JrQixFQTRSbEIsb0VBNVJrQixFQTZSbEIsa0VBN1JrQixFQThSbEIsbUVBOVJrQixFQStSbEIsaUVBL1JrQixFQWdTbEIscUVBaFNrQixFQWlTbEIsa0VBalNrQixFQWtTbEIsaUVBbFNrQixFQW1TbEIsK0RBblNrQixFQW9TbEIsZ0VBcFNrQixFQXFTbEIsbUVBclNrQixFQXNTbEIsdUVBdFNrQixFQXVTbEIsd0VBdlNrQixFQXdTbEIsK0RBeFNrQixFQXlTbEIsa0VBelNrQixFQTBTbEIscUVBMVNrQixFQTJTbEIsa0VBM1NrQixFQTRTbEIsb0VBNVNrQixFQTZTbEIsd0VBN1NrQixFQThTbEIsb0VBOVNrQixFQStTbEIsaUVBL1NrQixFQWdUbEIsb0VBaFRrQixFQWlUbEIscUVBalRrQixFQWtUbEIsb0VBbFRrQixFQW1UbEIscUVBblRrQixFQW9UbEIsc0VBcFRrQixFQXFUbEIsb0VBclRrQixFQXNUbEIsa0VBdFRrQixFQXVUbEIsbUVBdlRrQixFQXdUbEIsb0VBeFRrQixFQXlUbEIsbUVBelRrQixFQTBUbEIsb0VBMVRrQixFQTJUbEIsK0RBM1RrQixFQTRUbEIsb0VBNVRrQixFQTZUbEIscUVBN1RrQixFQThUbEIsb0VBOVRrQixFQStUbEIsNkRBL1RrQixFQWdVbEIsaUVBaFVrQixFQWlVbEIsK0RBalVrQixFQWtVbEIsa0VBbFVrQixFQW1VbEIsbUVBblVrQixFQW9VbEIsbUVBcFVrQixFQXFVbEIsaUVBclVrQixFQXNVbEIsK0RBdFVrQixFQXVVbEIscUVBdlVrQixFQXdVbEIsdUVBeFVrQixFQXlVbEIsaUVBelVrQixFQTBVbEIsb0VBMVVrQixFQTJVbEIsbUVBM1VrQixFQTRVbEIsaUVBNVVrQixFQTZVbEIsZ0VBN1VrQixFQThVbEIsd0VBOVVrQixFQStVbEIsb0VBL1VrQixFQWdWbEIsc0VBaFZrQixFQWlWbEIsdUVBalZrQixFQWtWbEIsc0VBbFZrQixFQW1WbEIsdUVBblZrQixFQW9WbEIsOERBcFZrQixFQXFWbEIsaUVBclZrQixFQXNWbEIsb0VBdFZrQixFQXVWbEIsOERBdlZrQixFQXdWbEIscUVBeFZrQixFQXlWbEIsbUVBelZrQixFQTBWbEIsbUVBMVZrQixFQTJWbEIsOERBM1ZrQixFQTRWbEIsb0VBNVZrQixFQTZWbEIsbUVBN1ZrQixFQThWbEIscUVBOVZrQixFQStWbEIsaUVBL1ZrQixFQWdXbEIscUVBaFdrQixFQWlXbEIsbUVBaldrQixFQWtXbEIsZ0VBbFdrQixFQW1XbEIsc0VBbldrQixFQW9XbEIsZ0VBcFdrQixFQXFXbEIsOERBcldrQixFQXNXbEIsK0RBdFdrQixFQXVXbEIsbUVBdldrQixFQXdXbEIsK0RBeFdrQixFQXlXbEIsaUVBeldrQixFQTBXbEIscUVBMVdrQixFQTJXbEIsZ0VBM1drQixFQTRXbEIsa0VBNVdrQixFQTZXbEIsd0VBN1drQixFQThXbEIsdUVBOVdrQixFQStXbEIsa0VBL1drQixFQWdYbEIsa0VBaFhrQixFQWlYbEIsaUVBalhrQixFQWtYbEIsZ0VBbFhrQixFQW1YbEIscUVBblhrQixFQW9YbEIsd0VBcFhrQixFQXFYbEIsb0VBclhrQixFQXNYbEIsaUVBdFhrQixFQXVYbEIsdUVBdlhrQixFQXdYbEIsK0RBeFhrQixFQXlYbEIsZ0VBelhrQixFQTBYbEIsc0VBMVhrQixFQTJYbEIsNERBM1hrQixFQTRYbEIsaUVBNVhrQixFQTZYbEIsa0VBN1hrQixFQThYbEIsa0VBOVhrQixFQStYbEIsbUVBL1hrQixFQWdZbEIsK0RBaFlrQixFQWlZbEIsa0VBallrQixFQWtZbEIsaUVBbFlrQixFQW1ZbEIsa0VBbllrQixFQW9ZbEIsa0VBcFlrQixFQXFZbEIsc0VBcllrQixFQXNZbEIsZ0VBdFlrQixFQXVZbEIsc0VBdllrQixFQXdZbEIsdUVBeFlrQixFQXlZbEIsa0VBellrQixFQTBZbEIsb0VBMVlrQixFQTJZbEIscUVBM1lrQixFQTRZbEIsOERBNVlrQixFQTZZbEIsbUVBN1lrQixFQThZbEIsa0VBOVlrQixFQStZbEIsaUVBL1lrQixFQWdabEIscUVBaFprQixFQWlabEIsZ0VBalprQixFQWtabEIsa0VBbFprQixFQW1abEIsb0VBblprQixFQW9abEIsc0VBcFprQixFQXFabEIsOERBclprQixFQXNabEIsc0VBdFprQixFQXVabEIsc0VBdlprQixFQXdabEIsZ0VBeFprQixFQXlabEIsZ0VBelprQixFQTBabEIsb0VBMVprQixFQTJabEIsb0VBM1prQixFQTRabEIsc0VBNVprQixFQTZabEIsNkRBN1prQixFQThabEIsaUVBOVprQixFQStabEIscUVBL1prQixFQWdhbEIsb0VBaGFrQixFQWlhbEIsc0VBamFrQixFQWthbEIsc0VBbGFrQixFQW1hbEIscUVBbmFrQixFQW9hbEIsZ0VBcGFrQixFQXFhbEIsbUVBcmFrQixFQXNhbEIsK0RBdGFrQixFQXVhbEIsaUVBdmFrQixFQXdhbEIsbUVBeGFrQixFQXlhbEIsd0VBemFrQixFQTBhbEIsb0VBMWFrQixFQTJhbEIsaUVBM2FrQixFQTRhbEIsZ0VBNWFrQixFQTZhbEIsb0VBN2FrQixFQThhbEIsZ0VBOWFrQixFQSthbEIsc0VBL2FrQixFQWdibEIsaUVBaGJrQixFQWlibEIsb0VBamJrQixFQWtibEIsa0VBbGJrQixFQW1ibEIsOERBbmJrQixFQW9ibEIsbUVBcGJrQixFQXFibEIsc0VBcmJrQixFQXNibEIscUVBdGJrQixFQXVibEIsbUVBdmJrQixFQXdibEIsK0RBeGJrQixFQXlibEIsbUVBemJrQixFQTBibEIsbUVBMWJrQixFQTJibEIsbUVBM2JrQixFQTRibEIsOERBNWJrQixFQTZibEIsZ0VBN2JrQixFQThibEIscUVBOWJrQixFQStibEIsc0VBL2JrQixFQWdjbEIsK0RBaGNrQixFQWljbEIsOERBamNrQixFQWtjbEIsc0VBbGNrQixFQW1jbEIsd0VBbmNrQixFQW9jbEIsZ0VBcGNrQixFQXFjbEIsaUVBcmNrQixFQXNjbEIsb0VBdGNrQixFQXVjbEIsa0VBdmNrQixFQXdjbEIsc0VBeGNrQixFQXljbEIscUVBemNrQixFQTBjbEIsOERBMWNrQixFQTJjbEIscUVBM2NrQixFQTRjbEIsdUVBNWNrQixFQTZjbEIscUVBN2NrQixFQThjbEIsc0VBOWNrQixFQStjbEIsOERBL2NrQixFQWdkbEIsb0VBaGRrQixFQWlkbEIsK0RBamRrQixFQWtkbEIsaUVBbGRrQixFQW1kbEIsd0VBbmRrQixFQW9kbEIsa0VBcGRrQixFQXFkbEIsK0RBcmRrQixFQXNkbEIsaUVBdGRrQixFQXVkbEIsb0VBdmRrQixFQXdkbEIsaUVBeGRrQixFQXlkbEIsaUVBemRrQixFQTBkbEIsZ0VBMWRrQixFQTJkbEIscUVBM2RrQixFQTRkbEIsa0VBNWRrQixFQTZkbEIsb0VBN2RrQixFQThkbEIsdUVBOWRrQixFQStkbEIsc0VBL2RrQixFQWdlbEIsaUVBaGVrQixFQWllbEIsZ0VBamVrQixFQWtlbEIsMkRBbGVrQixFQW1lbEIsa0VBbmVrQixFQW9lbEIsZ0VBcGVrQixFQXFlbEIsZ0VBcmVrQixFQXNlbEIsa0VBdGVrQixFQXVlbEIsZ0VBdmVrQixFQXdlbEIscUVBeGVrQixFQXllbEIsb0VB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vbGliL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xudmFyIEFwaURlZmluaXRpb24gPSByZXF1aXJlKCcuL2xpYi90eXBlcy9hcGktZGVmaW5pdGlvbicpO1xudmFyIFlBTUwgPSByZXF1aXJlKCdqcy15YW1sJyk7XG5cbi8vIExvYWQgcHJvbWlzZXMgcG9seWZpbGwgaWYgbmVjZXNzYXJ5XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgcmVxdWlyZSgnbmF0aXZlLXByb21pc2Utb25seScpO1xufVxuXG4vKipcbiAqIEEgbGlicmFyeSB0aGF0IHNpbXBsaWZpZXMgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGludGVncmF0aW9ucy5cbiAqXG4gKiBAbW9kdWxlIHN3YXlcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gQXBpRGVmaW5pdGlvbiBvYmplY3QgZnJvbSB0aGUgcHJvdmlkZWQgT3BlbkFQSSBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuQ3JlYXRlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBsb2FkaW5nIHRoZSBkZWZpbml0aW9uKHMpXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8bW9kdWxlOnN3YXkuQXBpRGVmaW5pdGlvbj59IFRoZSBwcm9taXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIFN3YXkuY3JlYXRlKHtcbiAqICAgZGVmaW5pdGlvbjogJ2h0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbCdcbiAqIH0pXG4gKiAudGhlbihmdW5jdGlvbiAoYXBpRGVmaW5pdGlvbikge1xuICogICBjb25zb2xlLmxvZygnRG9jdW1lbnRhdGlvbiBVUkw6ICcsIGFwaS5kb2N1bWVudGF0aW9uVXJsKTtcbiAqIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICogfSk7XG4gKi9cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBhbGxUYXNrcyA9IFByb21pc2UucmVzb2x2ZSgpO1xuICB2YXIgY09wdGlvbnM7XG5cbiAgLy8gVmFsaWRhdGUgYXJndW1lbnRzXG4gIGFsbFRhc2tzID0gYWxsVGFza3MudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuZGVmaW5pdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5kZWZpbml0aW9uIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5kZWZpbml0aW9uKSAmJiAhXy5pc1N0cmluZyhvcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuZGVmaW5pdGlvbiBtdXN0IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgYSBzdHJpbmcnKTtcbiAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5qc29uUmVmcykgJiYgIV8uaXNQbGFpbk9iamVjdChvcHRpb25zLmpzb25SZWZzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmpzb25SZWZzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tRm9ybWF0cykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbUZvcm1hdHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tRm9ybWF0cyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycykgJiYgIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9XG5cbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tRm9ybWF0cywgJ2N1c3RvbUZvcm1hdHMnKTtcbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycywgJ2N1c3RvbUZvcm1hdEdlbmVyYXRvcnMnKTtcbiAgICAgIGhlbHBlcnMudmFsaWRhdGVPcHRpb25zQWxsQXJlRnVuY3Rpb25zKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgJ2N1c3RvbVZhbGlkYXRvcnMnKTtcblxuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBNYWtlIGEgY29weSBvZiB0aGUgaW5wdXQgb3B0aW9ucyBzbyBhcyBub3QgdG8gYWx0ZXIgdGhlbVxuICBjT3B0aW9ucyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMpO1xuXG4gIC8vXG4gIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAvLyBSZXNvbHZlIHJlbGF0aXZlL3JlbW90ZSByZWZlcmVuY2VzXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUHJlcGFyZSB0aGUganNvbi1yZWZzIG9wdGlvbnNcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzKSkge1xuICAgICAgICBjT3B0aW9ucy5qc29uUmVmcyA9IHt9O1xuICAgICAgfVxuXG4gICAgICAvLyBJbmNsdWRlIGludmFsaWQgcmVmZXJlbmNlIGluZm9ybWF0aW9uXG4gICAgICBjT3B0aW9ucy5qc29uUmVmcy5pbmNsdWRlSW52YWxpZCA9IHRydWU7XG5cbiAgICAgIC8vIFJlc29sdmUgb25seSByZWxhdGl2ZS9yZW1vdGUgcmVmZXJlbmNlc1xuICAgICAgY09wdGlvbnMuanNvblJlZnMuZmlsdGVyID0gWydyZWxhdGl2ZScsICdyZW1vdGUnXTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBqc29uLXJlZnMgb3B0aW9ucyB0byBwcm9jZXNzIFlBTUxcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMpKSB7XG4gICAgICAgIGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQoY09wdGlvbnMuanNvblJlZnMubG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCkpIHtcbiAgICAgICAgY09wdGlvbnMuanNvblJlZnMubG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCA9IGZ1bmN0aW9uIChyZXMsIGNiKSB7XG4gICAgICAgICAgY2IodW5kZWZpbmVkLCBZQU1MLnNhZmVMb2FkKHJlcy50ZXh0KSk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdGhlIGFwcHJvcHJpYXRlIGpzb24tcmVmcyBBUElcbiAgICAgIGlmIChfLmlzU3RyaW5nKGNPcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmc0F0KGNPcHRpb25zLmRlZmluaXRpb24sIGNPcHRpb25zLmpzb25SZWZzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmcyhjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBSZXNvbHZlIGxvY2FsIHJlZmVyZW5jZXMgYW5kIG1lcmdlIHJlc3VsdHNcbiAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlUmVzdWx0cykge1xuICAgICAgLy8gUmVzb2x2ZSBsb2NhbCByZWZlcmVuY2VzIChSZW1vdGUgcmVmZXJlbmNlcyBzaG91bGQgaGFkIGFscmVhZHkgYmVlbiByZXNvbHZlZClcbiAgICAgIGNPcHRpb25zLmpzb25SZWZzLmZpbHRlciA9ICdsb2NhbCc7XG5cbiAgICAgIHJldHVybiBKc29uUmVmcy5yZXNvbHZlUmVmcyhyZW1vdGVSZXN1bHRzLnJlc29sdmVkIHx8IGNPcHRpb25zLmRlZmluaXRpb24sIGNPcHRpb25zLmpzb25SZWZzKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgICAgIF8uZWFjaChyZW1vdGVSZXN1bHRzLnJlZnMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCByZWZQdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucmVmc1tyZWZQdHJdID0gcmVmRGV0YWlscztcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgT3BlbkFQSSBkZWZpbml0aW9uXG4gICAgICAgICAgICBkZWZpbml0aW9uOiBfLmlzU3RyaW5nKGNPcHRpb25zLmRlZmluaXRpb24pID8gcmVtb3RlUmVzdWx0cy52YWx1ZSA6IGNPcHRpb25zLmRlZmluaXRpb24sXG4gICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgT3BlbkFQSSBkZWZpbml0aW9uIHdpdGggaXRzIHJlbW90ZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gICAgICAgICAgICBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkOiByZW1vdGVSZXN1bHRzLnJlc29sdmVkLFxuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIE9wZW5BUEkgZGVmaW5pdGlvbiB3aXRoIGFsbCBpdHMgcmVmZXJlbmNlcyByZXNvbHZlZFxuICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ6IHJlc3VsdHMucmVzb2x2ZWQsXG4gICAgICAgICAgICAvLyBNZXJnZSB0aGUgbG9jYWwgcmVmZXJlbmNlIGRldGFpbHMgd2l0aCB0aGUgcmVtb3RlIHJlZmVyZW5jZSBkZXRhaWxzXG4gICAgICAgICAgICByZWZzOiByZXN1bHRzLnJlZnNcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLy8gUHJvY2VzcyB0aGUgT3BlbkFQSSBkb2N1bWVudCBhbmQgcmV0dXJuIGFuIEFwaURlZmluaXRpb25cbiAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgYWxsIGNpcmN1bGFyIG9iamVjdHMgYXMgei1zY2hlbWEgZG9lcyBub3Qgd29yayB3aXRoIHRoZW06XG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hL2lzc3Vlcy8xMzdcbiAgICAgIGhlbHBlcnMucmVtb3ZlQ2lyY3VsYXJzKHJlc3VsdHMuZGVmaW5pdGlvbik7XG4gICAgICBoZWxwZXJzLnJlbW92ZUNpcmN1bGFycyhyZXN1bHRzLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQpO1xuICAgICAgaGVscGVycy5yZW1vdmVDaXJjdWxhcnMocmVzdWx0cy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBvYmplY3QgbW9kZWxcbiAgICAgIHJldHVybiBuZXcgQXBpRGVmaW5pdGlvbihyZXN1bHRzLmRlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5yZWZzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMpO1xuICAgIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn07XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGZvcm1hdEdlbmVyYXRvcnMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb24vZm9ybWF0LWdlbmVyYXRvcnMnKTtcbnZhciBmb3JtYXRWYWxpZGF0b3JzID0gcmVxdWlyZSgnLi92YWxpZGF0aW9uL2Zvcm1hdC12YWxpZGF0b3JzJyk7XG52YXIgWlNjaGVtYSA9IHJlcXVpcmUoJ3otc2NoZW1hJyk7XG5cbi8vIGZ1bGwtZGF0ZSBmcm9tIGh0dHA6Ly94bWwycmZjLmlldGYub3JnL3B1YmxpYy9yZmMvaHRtbC9yZmMzMzM5Lmh0bWwjYW5jaG9yMTRcbnZhciBkYXRlUmVnRXhwID0gbmV3IFJlZ0V4cChcbiAgJ14nICtcbiAgJ1xcXFxkezR9JyArIC8vIHllYXJcbiAgJy0nICtcbiAgJyhbMF1cXFxcZHwxWzAxMl0pJyArIC8vIG1vbnRoXG4gICctJyArXG4gICcoMFsxLTldfFsxMl1cXFxcZHwzWzAxXSknICsgLy8gZGF5XG4gICckJyk7XG5cbi8vIGRhdGUtdGltZSBmcm9tIGh0dHA6Ly94bWwycmZjLmlldGYub3JnL3B1YmxpYy9yZmMvaHRtbC9yZmMzMzM5Lmh0bWwjYW5jaG9yMTRcbnZhciBkYXRlVGltZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICdeJyArXG4gICdcXFxcZHs0fScgKyAvLyB5ZWFyXG4gICctJyArXG4gICcoWzBdXFxcXGR8MVswMTJdKScgKyAvLyBtb250aFxuICAnLScgK1xuICAnKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pJyArIC8vIGRheVxuICAnVCcgK1xuICAnKFswMV1cXFxcZHwyWzAtM10pJyArIC8vIGhvdXJcbiAgJzonICtcbiAgJ1swLTVdXFxcXGQnICsgLy8gbWludXRlXG4gICc6JyArXG4gICdbMC01XVxcXFxkJyArIC8vIHNlY29uZFxuICAnKFxcXFwuXFxcXGQrKT8nICsgLy8gZnJhY3Rpb25hbCBzZWNvbmRzXG4gICcoWnwoXFxcXCt8LSkoWzAxXVxcXFxkfDJbMC00XSk6WzAtNV1cXFxcZCknICsgLy8gWiBvciB0aW1lIG9mZnNldFxuICAnJCcpO1xuXG52YXIgY29sbGVjdGlvbkZvcm1hdHMgPSBbdW5kZWZpbmVkLCAnY3N2JywgJ211bHRpJywgJ3BpcGVzJywgJ3NzdicsICd0c3YnXTtcbnZhciBqc29uTW9ja2VyO1xudmFyIGpzb25TY2hlbWFWYWxpZGF0b3IgPSBjcmVhdGVKU09OVmFsaWRhdG9yKCk7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNwYXJhbWV0ZXJPYmplY3RcbnZhciBwYXJhbWV0ZXJTY2hlbWFQcm9wZXJ0aWVzID0gW1xuICAnYWxsb3dFbXB0eVZhbHVlJyxcbiAgJ2RlZmF1bHQnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZW51bScsXG4gICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAnZm9ybWF0JyxcbiAgJ2l0ZW1zJyxcbiAgJ21heEl0ZW1zJyxcbiAgJ21heExlbmd0aCcsXG4gICdtYXhpbXVtJyxcbiAgJ21pbkl0ZW1zJyxcbiAgJ21pbkxlbmd0aCcsXG4gICdtaW5pbXVtJyxcbiAgJ211bHRpcGxlT2YnLFxuICAncGF0dGVybicsXG4gICd0eXBlJyxcbiAgJ3VuaXF1ZUl0ZW1zJ1xuXTtcbnZhciB0eXBlcyA9IFsnYXJyYXknLCAnYm9vbGVhbicsICdpbnRlZ2VyJywgJ29iamVjdCcsICdudW1iZXInLCAnc3RyaW5nJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUpTT05Nb2NrZXIgKG1vY2tlcikge1xuICAvLyBFeHRlbmQgZmFrZXIuanMgdG8gb25seSBpbmNsdWRlIHRoZSAnZW4nIGxvY2FsZVxuICB2YXIgZmFrZXJMb2NhbGUgPSByZXF1aXJlKCdmYWtlci9sb2NhbGUvZW5fVVMnKTtcblxuICBtb2NrZXIuZXh0ZW5kKCdmYWtlcicsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXJMb2NhbGU7XG4gIH0pO1xuXG4gIC8vIEFkZCB0aGUgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3JzXG4gIF8uZWFjaChmb3JtYXRHZW5lcmF0b3JzLCBmdW5jdGlvbiAoZ2VuLCBuYW1lKSB7XG4gICAgbW9ja2VyLmZvcm1hdChuYW1lLCBnZW4obW9ja2VyKSk7XG4gIH0pO1xuXG4gIHJldHVybiBtb2NrZXI7XG59XG5cbmZ1bmN0aW9uIGZpbmRFeHRyYVBhcmFtZXRlcnMgKGV4cGVjdGVkLCBhY3R1YWwsIGxvY2F0aW9uLCByZXN1bHRzKSB7XG4gIHZhciBjb2RlU3VmZml4ID0gbG9jYXRpb24udG9VcHBlckNhc2UoKTtcblxuICBzd2l0Y2ggKGxvY2F0aW9uKSB7XG4gICAgY2FzZSAnZm9ybURhdGEnOlxuICAgICAgY29kZVN1ZmZpeCA9ICdGT1JNX0RBVEEnO1xuICAgICAgbG9jYXRpb24gPSAnZm9ybSBkYXRhIGZpZWxkJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgIGxvY2F0aW9uID0gJ3F1ZXJ5IHBhcmFtZXRlcic7XG4gICAgICBicmVhaztcblxuICAgIC8vIG5vIGRlZmF1bHRcbiAgfVxuXG4gIF8uZWFjaChhY3R1YWwsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKGV4cGVjdGVkLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ1JFUVVFU1RfQURESVRJT05BTF8nICsgY29kZVN1ZmZpeCxcbiAgICAgICAgbWVzc2FnZTogJ0FkZGl0aW9uYWwgJyArIGxvY2F0aW9uICsgJyBub3QgYWxsb3dlZDogJyArIG5hbWUsXG4gICAgICAgIHBhdGg6IFtdXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckZvcm1hdCAobmFtZSwgdmFsaWRhdG9yKSB7XG4gIFpTY2hlbWEucmVnaXN0ZXJGb3JtYXQobmFtZSwgdmFsaWRhdG9yKTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgKG5hbWUsIGZ1bmMpIHtcbiAgZ2V0SlNPTlNjaGVtYU1vY2tlcigpLmZvcm1hdChuYW1lLCBmdW5jKTtcbn1cblxuZnVuY3Rpb24gdW5yZWdpc3RlckZvcm1hdCAobmFtZSkge1xuICBaU2NoZW1hLnVucmVnaXN0ZXJGb3JtYXQobmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgKG5hbWUpIHtcbiAgZGVsZXRlIGdldEpTT05TY2hlbWFNb2NrZXIoKS5mb3JtYXQoKVtuYW1lXTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSlNPTlZhbGlkYXRvciAoKSB7XG4gIHZhciB2YWxpZGF0b3IgPSBuZXcgWlNjaGVtYSh7XG4gICAgYnJlYWtPbkZpcnN0RXJyb3I6IGZhbHNlLFxuICAgIGlnbm9yZVVua25vd25Gb3JtYXRzOiB0cnVlLFxuICAgIHJlcG9ydFBhdGhBc0FycmF5OiB0cnVlXG4gIH0pO1xuXG4gIC8vIEFkZCB0aGUgY3VzdG9tIHZhbGlkYXRvcnNcbiAgXy5lYWNoKGZvcm1hdFZhbGlkYXRvcnMsIGZ1bmN0aW9uIChoYW5kbGVyLCBuYW1lKSB7XG4gICAgcmVnaXN0ZXJGb3JtYXQobmFtZSwgaGFuZGxlcik7XG4gIH0pO1xuXG4gIHJldHVybiB2YWxpZGF0b3I7XG59XG5cbmZ1bmN0aW9uIGdldEpTT05TY2hlbWFNb2NrZXIgKCkge1xuICB2YXIgbW9ja2VyO1xuXG4gIGlmICghanNvbk1vY2tlcikge1xuICAgIG1vY2tlciA9IHJlcXVpcmUoJ2pzb24tc2NoZW1hLWZha2VyL2xpYicpO1xuICAgIGpzb25Nb2NrZXIgPSBjcmVhdGVKU09OTW9ja2VyKG1vY2tlcik7XG4gIH1cblxuICByZXR1cm4ganNvbk1vY2tlcjtcbn07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVycm9yIChvYmopIHtcbiAgLy8gUmVtb3ZlIHN1cGVyZmx1b3VzIGVycm9yIGRldGFpbHNcbiAgaWYgKF8uaXNVbmRlZmluZWQob2JqLnNjaGVtYUlkKSkge1xuICAgIGRlbGV0ZSBvYmouc2NoZW1hSWQ7XG4gIH1cblxuICBpZiAob2JqLmlubmVyKSB7XG4gICAgXy5lYWNoKG9iai5pbm5lciwgZnVuY3Rpb24gKG5PYmopIHtcbiAgICAgIG5vcm1hbGl6ZUVycm9yKG5PYmopO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIG1ldGhvZCB0byB0YWtlIGFuIE9wZW5BUEkgUGFyYW1ldGVyIE9iamVjdCBkZWZpbml0aW9uIGFuZCBjb21wdXRlIGl0cyBzY2hlbWEuXG4gKlxuICogRm9yIG5vbi1ib2R5IE9wZW5BUEkgcGFyYW1ldGVycywgdGhlIGRlZmluaXRpb24gaXRzZWxmIGlzIG5vdCBzdWl0YWJsZSBhcyBhIEpTT04gU2NoZW1hIHNvIHdlIG11c3QgY29tcHV0ZSBpdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1EZWYgLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgY29tcHV0ZWQgc2NoZW1hXG4gKi9cbm1vZHVsZS5leHBvcnRzLmNvbXB1dGVQYXJhbWV0ZXJTY2hlbWEgPSBmdW5jdGlvbiAocGFyYW1EZWYpIHtcbiAgdmFyIHNjaGVtYTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbURlZi5zY2hlbWEpKSB7XG4gICAgc2NoZW1hID0ge307XG5cbiAgICAvLyBCdWlsZCB0aGUgc2NoZW1hIGZyb20gdGhlIHNjaGVtYS1saWtlIHBhcmFtZXRlciBzdHJ1Y3R1cmVcbiAgICBfLmZvckVhY2gocGFyYW1ldGVyU2NoZW1hUHJvcGVydGllcywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbURlZltuYW1lXSkpIHtcbiAgICAgICAgc2NoZW1hW25hbWVdID0gcGFyYW1EZWZbbmFtZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgc2NoZW1hID0gcGFyYW1EZWYuc2NoZW1hO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSByYXcgSmF2YVNjcmlwdCB2YWx1ZSB0byBhIEpTT04gU2NoZW1hIHZhbHVlIGJhc2VkIG9uIGl0cyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgY29udmVyc2lvbiBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29sbGVjdGlvbkZvcm1hdF0gLSBUaGUgY29sbGVjdGlvbiBmb3JtYXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5lbmNvZGluZ10gLSBUaGUgZW5jb2RpbmcgaWYgdGhlIHJhdyB2YWx1ZSBpcyBhIGBCdWZmZXJgXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIGNvbnZlcnRlZCB2YWx1ZVxuICpcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSUYgdGhlIGBjb2xsZWN0aW9uRm9ybWF0YCBvciBgdHlwZWAgaXMgaW52YWxpZCBmb3IgdGhlIGBzY2hlbWFgLCBvciBpZiBjb252ZXJzaW9uIGZhaWxzXG4gKi9cbnZhciBjb252ZXJ0VmFsdWUgPSBtb2R1bGUuZXhwb3J0cy5jb252ZXJ0VmFsdWUgPSBmdW5jdGlvbiAoc2NoZW1hLCBvcHRpb25zLCB2YWx1ZSkge1xuICB2YXIgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlOyAvLyBVc2VkIGluIGVycm9yIHJlcG9ydGluZyBmb3IgaW52YWxpZCB2YWx1ZXNcbiAgdmFyIHR5cGUgPSBfLmlzUGxhaW5PYmplY3Qoc2NoZW1hKSA/IHNjaGVtYS50eXBlIDogdW5kZWZpbmVkO1xuICB2YXIgcFZhbHVlID0gdmFsdWU7XG4gIHZhciBwVHlwZSA9IHR5cGVvZiBwVmFsdWU7XG4gIHZhciBlcnI7XG4gIHZhciBpc0RhdGU7XG4gIHZhciBpc0RhdGVUaW1lO1xuXG4gIC8vIElmIHRoZXJlIGlzIGFuIGV4cGxpY2l0IHR5cGUgcHJvdmlkZWQsIG1ha2Ugc3VyZSBpdCdzIG9uZSBvZiB0aGUgc3VwcG9ydGVkIG9uZXNcbiAgaWYgKF8uaGFzKHNjaGVtYSwgJ3R5cGUnKSAmJiB0eXBlcy5pbmRleE9mKHR5cGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgXFwndHlwZVxcJyB2YWx1ZTogJyArIHR5cGUpO1xuICB9XG5cbiAgLy8gU2luY2UgSlNPTiBTY2hlbWEgYWxsb3dzIHlvdSB0byBub3Qgc3BlY2lmeSBhIHR5cGUgYW5kIGl0IGlzIHRyZWF0ZWQgYXMgYSB3aWxkY2FyZCBvZiBzb3J0cywgd2Ugc2hvdWxkIG5vdCBkbyBhbnlcbiAgLy8gY29lcmNpb24gZm9yIHRoZXNlIHR5cGVzIG9mIHZhbHVlcy5cbiAgaWYgKF8uaXNVbmRlZmluZWQodHlwZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBpcyBubyB2YWx1ZSwgZG8gbm90IGNvbnZlcnQgaXRcbiAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gQ29udmVydCBCdWZmZXIgdmFsdWUgdG8gU3RyaW5nXG4gIC8vIChXZSB1c2UgdGhpcyB0eXBlIG9mIGNoZWNrIHRvIGlkZW50aWZ5IEJ1ZmZlciBvYmplY3RzLiAgVGhlIGJyb3dzZXIgZG9lcyBub3QgaGF2ZSBhIEJ1ZmZlciB0eXBlIGFuZCB0byBhdm9pZCBoYXZpbmdcbiAgLy8gIGltcG9ydCB0aGUgYnJvd3NlcmlmeSBidWZmZXIgbW9kdWxlLCB3ZSBqdXN0IGRvIGEgc2ltcGxlIGNoZWNrLiAgVGhpcyBpcyBicml0dGxlIGJ1dCBzaG91bGQgd29yay4pXG4gIGlmIChfLmlzRnVuY3Rpb24odmFsdWUucmVhZFVJbnQ4KSkge1xuICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgcFZhbHVlID0gdmFsdWU7XG4gICAgcFR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIH1cblxuICAvLyBJZiB0aGUgdmFsdWUgaXMgZW1wdHkgYW5kIGVtcHR5IGlzIGFsbG93ZWQsIHVzZSBpdFxuICBpZiAoc2NoZW1hLmFsbG93RW1wdHlWYWx1ZSAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBBdHRlbXB0IHRvIHBhcnNlIHRoZSBzdHJpbmcgYXMgSlNPTiBpZiB0aGUgdHlwZSBpcyBhcnJheSBvciBvYmplY3RcbiAgaWYgKFsnYXJyYXknLCAnb2JqZWN0J10uaW5kZXhPZih0eXBlKSA+IC0xICYmIF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgaWYgKCh0eXBlID09PSAnYXJyYXknICYmIHZhbHVlLmluZGV4T2YoJ1snKSA9PT0gMCkgfHwgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlLmluZGV4T2YoJ3snKSA9PT0gMCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLCBqdXN0IGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICBjYXNlICdhcnJheSc6XG4gICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbkZvcm1hdHMuaW5kZXhPZihvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXQpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFxcJ2NvbGxlY3Rpb25Gb3JtYXRcXCcgdmFsdWU6ICcgKyBvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMuY29sbGVjdGlvbkZvcm1hdCkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbXVsdGknOlxuICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGlwZXMnOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCd8Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3N2JzpcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Rzdic6XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJ1xcdCcpO1xuICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gXy5tYXAodmFsdWUsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gY29udmVydFZhbHVlKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpID8gc2NoZW1hLml0ZW1zW2luZGV4XSA6IHNjaGVtYS5pdGVtcywgb3B0aW9ucywgaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBicmVhaztcbiAgY2FzZSAnYm9vbGVhbic6XG4gICAgaWYgKCFfLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkIGJvb2xlYW46ICcgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIGNhc2UgJ2ludGVnZXInOlxuICAgIGlmICghXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSAmJiBfLnRyaW0odmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IE5hTjtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgaW50ZWdlcjogJyArIG9yaWdpbmFsVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJyZWFrO1xuICBjYXNlICdudW1iZXInOlxuICAgIGlmICghXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSAmJiBfLnRyaW0odmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IE5hTjtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgbnVtYmVyOiAnICsgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlICdzdHJpbmcnOlxuICAgIGlmIChbJ2RhdGUnLCAnZGF0ZS10aW1lJ10uaW5kZXhPZihzY2hlbWEuZm9ybWF0KSA+IC0xKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgaXNEYXRlID0gc2NoZW1hLmZvcm1hdCA9PT0gJ2RhdGUnICYmIGRhdGVSZWdFeHAudGVzdCh2YWx1ZSk7XG4gICAgICAgIGlzRGF0ZVRpbWUgPSBzY2hlbWEuZm9ybWF0ID09PSAnZGF0ZS10aW1lJyAmJiBkYXRlVGltZVJlZ0V4cC50ZXN0KHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzRGF0ZSAmJiAhaXNEYXRlVGltZSkge1xuICAgICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkICcgKyBzY2hlbWEuZm9ybWF0ICsgJyBzdHJpbmc6ICcgKyBvcmlnaW5hbFZhbHVlKTtcbiAgICAgICAgICBlcnIuY29kZSA9ICdJTlZBTElEX0ZPUk1BVCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFfLmlzRGF0ZSh2YWx1ZSkgfHwgdmFsdWUudG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgJyArIHNjaGVtYS5mb3JtYXQgKyAnIHN0cmluZzogJyArIG9yaWdpbmFsVmFsdWUpO1xuXG4gICAgICAgIGVyci5jb2RlID0gJ0lOVkFMSURfRk9STUFUJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgc3RyaW5nOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIGJyZWFrO1xuXG4gICAgLy8gbm8gZGVmYXVsdFxuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGVycikpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBlcnJvciB0byBiZSBtb3JlIGxpa2UgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZXJyLmNvZGUpKSB7XG4gICAgICBlcnIuY29kZSA9ICdJTlZBTElEX1RZUEUnO1xuICAgICAgZXJyLm1lc3NhZ2UgPSAnRXhwZWN0ZWQgdHlwZSAnICsgdHlwZSArICcgYnV0IGZvdW5kIHR5cGUgJyArIHBUeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnIubWVzc2FnZSA9ICdPYmplY3QgZGlkblxcJ3QgcGFzcyB2YWxpZGF0aW9uIGZvciBmb3JtYXQgJyArIHNjaGVtYS5mb3JtYXQgKyAnOiAnICsgcFZhbHVlO1xuICAgIH1cblxuICAgIC8vIEZvcm1hdCBhbmQgdHlwZSBlcnJvcnMgcmVzZW1ibGUgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICBlcnIuZmFpbGVkVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgZXJyLnBhdGggPSBbXTtcblxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdmlkZWQgY29udGVudCB0eXBlIG9yIGBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1gIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gKlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzcuaHRtbCNzZWM3LjIuMVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBoZWFkZXJzIC0gVGhlIGhlYWRlcnMgdG8gc2VhcmNoXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbnRlbnQgdHlwZVxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRDb250ZW50VHlwZSA9IGZ1bmN0aW9uIChoZWFkZXJzKSB7XG4gIHJldHVybiBnZXRIZWFkZXJWYWx1ZShoZWFkZXJzLCAnY29udGVudC10eXBlJykgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGhlYWRlciB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjYXNlIG9mIHRoZSBwcm92aWRlZC9yZXF1ZXN0ZWQgaGVhZGVyIG5hbWUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnMgLSBUaGUgaGVhZGVycyB0byBzZWFyY2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJOYW1lIC0gVGhlIGhlYWRlciBuYW1lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGhlYWRlciB2YWx1ZSBvciBgdW5kZWZpbmVkYCBpZiBpdCBpcyBub3QgZm91bmRcbiAqL1xudmFyIGdldEhlYWRlclZhbHVlID0gbW9kdWxlLmV4cG9ydHMuZ2V0SGVhZGVyVmFsdWUgPSBmdW5jdGlvbiAoaGVhZGVycywgaGVhZGVyTmFtZSkge1xuICAvLyBEZWZhdWx0IHRvIGFuIGVtcHR5IG9iamVjdFxuICBoZWFkZXJzID0gaGVhZGVycyB8fCB7fTtcblxuICB2YXIgbGNIZWFkZXJOYW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB2YXIgcmVhbEhlYWRlck5hbWUgPSBfLmZpbmQoT2JqZWN0LmtleXMoaGVhZGVycyksIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICByZXR1cm4gaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09IGxjSGVhZGVyTmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhlYWRlcnNbcmVhbEhlYWRlck5hbWVdO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBqc29uLXNjaGVtYS1mYWtlciBtb2NrZXIuXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIGpzb24tc2NoZW1hLWZha2VyIG1vY2tlciB0byB1c2VcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0SlNPTlNjaGVtYU1vY2tlciA9IGdldEpTT05TY2hlbWFNb2NrZXI7XG5cbm1vZHVsZS5leHBvcnRzLmdldFNhbXBsZSA9IGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgdmFyIHNhbXBsZTtcblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hKSkge1xuICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICBzYW1wbGUgPSAnVGhpcyBpcyBzYW1wbGUgY29udGVudCBmb3IgdGhlIFwiZmlsZVwiIHR5cGUuJztcbiAgICB9IGVsc2Uge1xuICAgICAgc2FtcGxlID0gZ2V0SlNPTlNjaGVtYU1vY2tlcigpKHNjaGVtYSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNhbXBsZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgei1zY2hlbWEgdmFsaWRhdG9yLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB6LXNjaGVtYSB2YWxpZGF0b3IgdG8gdXNlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBqc29uU2NoZW1hVmFsaWRhdG9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMucGFyYW1ldGVyTG9jYXRpb25zID0gWydib2R5JywgJ2Zvcm1EYXRhJywgJ2hlYWRlcicsICdwYXRoJywgJ3F1ZXJ5J107XG5cbi8qKlxuICogUHJvY2VzcyB2YWxpZGF0b3JzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fG1vZHVsZTpTd2F5flNlcnZlclJlc3BvbnNlV3JhcHBlcn0gdGFyZ2V0IC0gVGhlIHRoaW5nIGJlaW5nIHZhbGlkYXRlZFxuICogQHBhcmFtIHttb2R1bGU6U3dheX5BcGlEZWZpbml0aW9ufG1vZHVsZTpTd2F5fk9wZXJhdGlvbnxtb2R1bGU6U3dheX5SZXNwb25zZX0gY2FsbGVyIC0gVGhlIG9iamVjdCByZXF1ZXN0aW5nIHZhbGlkYXRpb24gXyhjYW4gYmUgYHVuZGVmaW5lZGApX1xuICogQHBhcmFtIHttb2R1bGU6U3dheX5Eb2N1bWVudFZhbGlkYXRpb25GdW5jdGlvbltdfG1vZHVsZTpTd2F5flJlcXVlc3RWYWxpZGF0aW9uRnVuY3Rpb25bXXxtb2R1bGU6U3dheX5SZXNwb3NlVmFsaWRhdGlvbkZ1bmN0aW9uW119IHZhbGlkYXRvcnMgLSBUaGUgdmFsaWRhdG9yc1xuICogQHBhcmFtIHttb2R1bGU6U3dheX5WYWxpZGF0aW9uUmVzdWx0c30gcmVzdWx0cyAtIFRoZSBjdW11bGF0aXZlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5tb2R1bGUuZXhwb3J0cy5wcm9jZXNzVmFsaWRhdG9ycyA9IGZ1bmN0aW9uICh0YXJnZXQsIGNhbGxlciwgdmFsaWRhdG9ycywgcmVzdWx0cykge1xuICBfLmVhY2godmFsaWRhdG9ycywgZnVuY3Rpb24gKHZhbGlkYXRvcikge1xuICAgIHZhciB2QXJncyA9IFt0YXJnZXRdO1xuICAgIHZhciB2UmVzdWx0cztcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChjYWxsZXIpKSB7XG4gICAgICB2QXJncy5wdXNoKGNhbGxlcik7XG4gICAgfVxuXG4gICAgdlJlc3VsdHMgPSB2YWxpZGF0b3IuYXBwbHkodW5kZWZpbmVkLCB2QXJncyk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMpKSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMuZXJyb3JzKSAmJiB2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLmVycm9ycy5wdXNoLmFwcGx5KHJlc3VsdHMuZXJyb3JzLCB2UmVzdWx0cy5lcnJvcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMud2FybmluZ3MpICYmIHZSZXN1bHRzLndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0cy53YXJuaW5ncy5wdXNoLmFwcGx5KHJlc3VsdHMud2FybmluZ3MsIHZSZXN1bHRzLndhcm5pbmdzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB2YWxpZGF0b3IgLSBUaGUgZm9ybWF0IHZhbGlkYXRvciAqKFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYSNyZWdpc3Rlci1hLWN1c3RvbS1mb3JtYXQpKSpcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1hdDtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGdlbmVyYXRvciAtIFRoZSBmb3JtYXQgZ2VuZXJhdG9yICooU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gcmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3I7XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gdGhlIHByb3ZpZGVkIG9iamVjdCB3aXRoIGFuIGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqIC0gVGhlIEphdmFTY3JpcHQgb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlbW92ZUNpcmN1bGFycyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgd2FsayhvYmosIGZ1bmN0aW9uIChub2RlLCBwYXRoLCBhbmNlc3RvcnMpIHtcbiAgICAvLyBSZXBsYWNlIGNpcmN1bGFycyB3aXRoIHt9XG4gICAgaWYgKGFuY2VzdG9ycy5pbmRleE9mKG5vZGUpID4gLTEpIHtcbiAgICAgIF8uc2V0KG9iaiwgcGF0aCwge30pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICovXG5tb2R1bGUuZXhwb3J0cy51bnJlZ2lzdGVyRm9ybWF0ID0gdW5yZWdpc3RlckZvcm1hdDtcblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdCBnZW5lcmF0b3JcbiAqL1xubW9kdWxlLmV4cG9ydHMudW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciA9IHVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3I7XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBwcm92aWRlZCB2YWx1ZSBhZ2FpbnN0IHRoZSBKU09OIFNjaGVtYSBieSBuYW1lIG9yIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWxpZGF0b3IgLSBUaGUgSlNPTiBTY2hlbWEgdmFsaWRhdG9yIGNyZWF0ZWQgdmlhIHtAbGluayAjY3JlYXRlSlNPTlZhbGlkYXRvcn1cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWFcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdmFsaWRhdGVcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5tb2R1bGUuZXhwb3J0cy52YWxpZGF0ZUFnYWluc3RTY2hlbWEgPSBmdW5jdGlvbiAodmFsaWRhdG9yLCBzY2hlbWEsIHZhbHVlKSB7XG4gIHNjaGVtYSA9IF8uY2xvbmVEZWVwKHNjaGVtYSk7IC8vIENsb25lIHRoZSBzY2hlbWEgYXMgei1zY2hlbWEgYWx0ZXJzIHRoZSBwcm92aWRlZCBkb2N1bWVudFxuXG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGlmICghdmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCBzY2hlbWEpKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzID0gXy5tYXAodmFsaWRhdG9yLmdldExhc3RFcnJvcnMoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgbm9ybWFsaXplRXJyb3IoZXJyKTtcblxuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBjb250ZW50IHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnRUeXBlIC0gVGhlIENvbnRlbnQtVHlwZSB2YWx1ZSBvZiB0aGUgcmVxdWVzdC9yZXNwb25zZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gc3VwcG9ydGVkVHlwZXMgLSBUaGUgc3VwcG9ydGVkIChkZWNsYXJlZCkgQ29udGVudC1UeXBlIHZhbHVlcyBmb3IgdGhlIHJlcXVlc3QvcmVzcG9uc2VcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXN1bHRzIC0gVGhlIHJlc3VsdHMgb2JqZWN0IHRvIHVwZGF0ZSBpbiB0aGUgZXZlbnQgb2YgYW4gaW52YWxpZCBjb250ZW50IHR5cGVcbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVDb250ZW50VHlwZSA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSwgc3VwcG9ydGVkVHlwZXMsIHJlc3VsdHMpIHtcbiAgdmFyIHJhd0NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGNvbnRlbnRUeXBlKSkge1xuICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTQuaHRtbCNzZWMxNC4xN1xuICAgIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuc3BsaXQoJzsnKVswXTsgLy8gU3RyaXAgdGhlIHBhcmFtZXRlcihzKSBmcm9tIHRoZSBjb250ZW50IHR5cGVcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBvciBtaW1lLXR5cGUgb25seSBtYXRjaFxuICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZFR5cGVzLCByYXdDb250ZW50VHlwZSkgPT09IC0xICYmIF8uaW5kZXhPZihzdXBwb3J0ZWRUeXBlcywgY29udGVudFR5cGUpID09PSAtMSkge1xuICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgY29kZTogJ0lOVkFMSURfQ09OVEVOVF9UWVBFJyxcbiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIENvbnRlbnQtVHlwZSAoJyArIGNvbnRlbnRUeXBlICsgJykuICBUaGVzZSBhcmUgc3VwcG9ydGVkOiAnICtcbiAgICAgICAgc3VwcG9ydGVkVHlwZXMuam9pbignLCAnKSxcbiAgICAgIHBhdGg6IFtdXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayBhbiBvYmplY3QgYW5kIGludm9rZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZm9yIGVhY2ggbm9kZS5cbiAqXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSBvYmplY3QgdG8gd2Fsa1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2ZuXSAtIFRoZSBmdW5jdGlvbiB0byBpbnZva2VcbiAqL1xudmFyIHdhbGsgPSBtb2R1bGUuZXhwb3J0cy53YWxrID0gZnVuY3Rpb24gKG9iaiwgZm4pIHtcbiAgdmFyIGNhbGxGbiA9IF8uaXNGdW5jdGlvbihmbik7XG5cbiAgZnVuY3Rpb24gZG9XYWxrIChhbmNlc3RvcnMsIG5vZGUsIHBhdGgpIHtcbiAgICBpZiAoY2FsbEZuKSB7XG4gICAgICBmbihub2RlLCBwYXRoLCBhbmNlc3RvcnMpO1xuICAgIH1cblxuICAgIC8vIFdlIGRvIG5vdCBwcm9jZXNzIGNpcmN1bGFyIG9iamVjdHMgYWdhaW5cbiAgICBpZiAoYW5jZXN0b3JzLmluZGV4T2Yobm9kZSkgPT09IC0xKSB7XG4gICAgICBhbmNlc3RvcnMucHVzaChub2RlKTtcblxuICAgICAgaWYgKF8uaXNBcnJheShub2RlKSB8fCBfLmlzUGxhaW5PYmplY3Qobm9kZSkpIHtcbiAgICAgICAgXy5lYWNoKG5vZGUsIGZ1bmN0aW9uIChtZW1iZXIsIGluZGV4T3JLZXkpIHtcbiAgICAgICAgICBkb1dhbGsoYW5jZXN0b3JzLCBtZW1iZXIsIHBhdGguY29uY2F0KGluZGV4T3JLZXkudG9TdHJpbmcoKSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhbmNlc3RvcnMucG9wKCk7XG4gIH1cblxuICBkb1dhbGsoW10sIG9iaiwgW10pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGF0IGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgYXJlIG9mIHR5cGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHthcnJheX0gYXJyIC0gVGhlIGFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1OYW1lIC0gVGhlIHBhcmFtZXRlciBuYW1lXG4gKi9cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyA9IGZ1bmN0aW9uIChhcnIsIHBhcmFtTmFtZSkge1xuICBfLmZvckVhY2goYXJyLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbihpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy4nICsgcGFyYW1OYW1lICsgJyBhdCBpbmRleCAnICsgaW5kZXggKyAnIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHN0cmljdGx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+T3BlcmF0aW9ufG1vZHVsZTpTd2F5flJlc3BvbnNlfSBvcE9yUmVzIC0gVGhlIFN3YXkgb3BlcmF0aW9uIG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge29iamVjdHxtb2R1bGU6U3dheX5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcU9yUmVzIC0gVGhlIGh0dHAgY2xpZW50IHJlcXVlc3QgKihvciBlcXVpdmFsZW50KSogb3IgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Ugb3IgKihyZXNwb25zZSBsaWtlIG9iamVjdCkqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RyaWN0TW9kZSAtIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBzdHJpY3QgbW9kZVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmZvcm1EYXRhIC0gV2hldGhlciBvciBub3QgZm9ybSBkYXRhIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzdHJpY3RseVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmhlYWRlciAtIFdoZXRoZXIgb3Igbm90IGhlYWRlciBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgc3RyaWN0bHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5xdWVyeSAtIFdoZXRoZXIgb3Igbm90IHF1ZXJ5IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzdHJpY3RseVxuICogQHBhcmFtIHttb2R1bGU6U3dheX5WYWxpZGF0aW9uUmVzdWx0c30gcmVzdWx0cyAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVTdHJpY3RNb2RlID0gZnVuY3Rpb24gKG9wT3JSZXMsIHJlcU9yUmVzLCBzdHJpY3RNb2RlLCByZXN1bHRzKSB7XG4gIHZhciBkZWZpbmVkUGFyYW1ldGVycyA9IHtcbiAgICBmb3JtRGF0YTogW10sXG4gICAgaGVhZGVyOiBbXSxcbiAgICBxdWVyeTogW11cbiAgfTtcbiAgdmFyIG1vZGUgPSBvcE9yUmVzLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdPcGVyYXRpb24nID8gJ3JlcScgOiAncmVzJztcbiAgdmFyIHN0cmljdE1vZGVWYWxpZGF0aW9uID0ge1xuICAgIGZvcm1EYXRhOiBmYWxzZSxcbiAgICBoZWFkZXI6IGZhbHNlLFxuICAgIHF1ZXJ5OiBmYWxzZVxuICB9O1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChzdHJpY3RNb2RlKSkge1xuICAgIGlmICghXy5pc0Jvb2xlYW4oc3RyaWN0TW9kZSkgJiYgIV8uaXNQbGFpbk9iamVjdChzdHJpY3RNb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5zdHJpY3RNb2RlIG11c3QgYmUgYSBib29sZWFuIG9yIGFuIG9iamVjdCcpO1xuICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHN0cmljdE1vZGUpKSB7XG4gICAgICBfLmVhY2goWydmb3JtRGF0YScsICdoZWFkZXInLCAncXVlcnknXSwgZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzdHJpY3RNb2RlW2xvY2F0aW9uXSkpIHtcbiAgICAgICAgICBpZiAoIV8uaXNCb29sZWFuKHN0cmljdE1vZGVbbG9jYXRpb25dKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5zdHJpY3RNb2RlLicgKyBsb2NhdGlvbiArICcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb25bbG9jYXRpb25dID0gc3RyaWN0TW9kZVtsb2NhdGlvbl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdE1vZGUgPT09IHRydWUpIHtcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmZvcm1EYXRhID0gdHJ1ZTtcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9IHRydWU7XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5xdWVyeSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gT25seSBwcm9jZXNzIHRoZSBwYXJhbWV0ZXJzIGlmIG5lY2Vzc2FyeVxuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24uZm9ybURhdGEgPT09IHRydWUgfHxcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9PT0gdHJ1ZSB8fFxuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24ucXVlcnkgPT09IHRydWUpIHtcbiAgICBfLmVhY2goKG1vZGUgPT09ICdyZXEnID8gb3BPclJlcyA6IG9wT3JSZXMub3BlcmF0aW9uT2JqZWN0KS5nZXRQYXJhbWV0ZXJzKCksIGZ1bmN0aW9uIChwYXJhbWV0ZXIpIHtcbiAgICAgIGlmIChfLmlzQXJyYXkoZGVmaW5lZFBhcmFtZXRlcnNbcGFyYW1ldGVyLmluXSkpIHtcbiAgICAgICAgZGVmaW5lZFBhcmFtZXRlcnNbcGFyYW1ldGVyLmluXS5wdXNoKHBhcmFtZXRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpbmcgZm9ybSBkYXRhIG9ubHkgbWF0dGVycyBmb3IgcmVxdWVzdHNcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLmZvcm1EYXRhID09PSB0cnVlICYmIG1vZGUgPT09ICdyZXEnKSB7XG4gICAgZmluZEV4dHJhUGFyYW1ldGVycyhkZWZpbmVkUGFyYW1ldGVycy5mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNQbGFpbk9iamVjdChyZXFPclJlcy5ib2R5KSA/IE9iamVjdC5rZXlzKHJlcU9yUmVzLmJvZHkpIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybURhdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7XG4gIH1cblxuICAvLyBBbHdheXMgdmFsaWRhdGUgdGhlIGhlYWRlcnMgZm9yIHJlcXVlc3RzIGFuZCByZXNwb25zZXNcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9PT0gdHJ1ZSkge1xuICAgIGZpbmRFeHRyYVBhcmFtZXRlcnMoZGVmaW5lZFBhcmFtZXRlcnMuaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1BsYWluT2JqZWN0KHJlcU9yUmVzLmhlYWRlcnMpID8gT2JqZWN0LmtleXMocmVxT3JSZXMuaGVhZGVycykgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7XG4gIH1cblxuICAvLyBWYWxpZGF0aW5nIHRoZSBxdWVyeSBzdHJpbmcgb25seSBtYXR0ZXJzIGZvciByZXF1ZXN0c1xuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24ucXVlcnkgPT09IHRydWUgJiYgbW9kZSA9PT0gJ3JlcScpIHtcbiAgICBmaW5kRXh0cmFQYXJhbWV0ZXJzKGRlZmluZWRQYXJhbWV0ZXJzLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1BsYWluT2JqZWN0KHJlcU9yUmVzLnF1ZXJ5KSA/IE9iamVjdC5rZXlzKHJlcU9yUmVzLnF1ZXJ5KSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMpO1xuICB9XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ3N3YXk6YXBpJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xudmFyIFBhdGggPSByZXF1aXJlKCcuL3BhdGgnKTtcbnZhciB2YWxpZGF0b3JzID0gcmVxdWlyZSgnLi4vdmFsaWRhdGlvbi92YWxpZGF0b3JzJyk7XG5cbi8qKlxuICogVGhlIE9wZW5BUEkgRGVmaW5pdGlvbiBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogW09wZW5BUEkgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNvcGVuYXBpLW9iamVjdCkuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgb3JpZ2luYWwgT3BlbkFQSSBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCAtIFRoZSBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlbW90ZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgT3BlbkFQSSBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlcyAtIFRoZSBsb2NhdGlvbiBhbmQgcmVzb2x1dGlvbiBvZiB0aGUgcmVzb2x2ZWQgcmVmZXJlbmNlcyBpbiB0aGUgT3BlbkFQSSBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHBhc3NlZCB0byBBcGlEZWZpbml0aW9uLmNyZWF0ZVxuICpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBjdXN0b21Gb3JtYXRzIC0gVGhlIGtleS92YWx1ZSBwYWlyIG9mIGN1c3RvbSBmb3JtYXRzICooVGhlIGtleXMgYXJlIHRoZSBmb3JtYXQgbmFtZSBhbmQgdGhlIHZhbHVlc1xuICogYXJlIGFzeW5jIGZ1bmN0aW9ucy4gIFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0c10oaHR0cHM6Ly9naXRodWIuY29tL3phZ2dpbm8vei1zY2hlbWEjcmVnaXN0ZXItYS1jdXN0b20tZm9ybWF0KSkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gY3VzdG9tRm9ybWF0R2VuZXJhdG9ycyAtIFRoZSBrZXkvdmFsdWUgcGFpciBvZiBjdXN0b20gZm9ybWF0IGdlbmVyYXRvcnMgKihUaGUga2V5cyBhcmUgdGhlIGZvcm1hdCBuYW1lIGFuZCB0aGUgdmFsdWVzXG4gKiBhcmUgZnVuY3Rpb25zLiAgU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LkRvY3VtZW50VmFsaWRhdGlvbkZ1bmN0aW9uW119IGN1c3RvbVZhbGlkYXRvcnMgLSBUaGUgYXJyYXkgb2YgY3VzdG9tIHZhbGlkYXRvcnNcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9yaWdpbmFsIE9wZW5BUEkgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQgLSBUaGUgT3BlbkFQSSBkZWZpbml0aW9uIHdpdGggb25seSBpdHMgcmVtb3RlIHJlZmVyZW5jZXMgcmVzb2x2ZWQgKihUaGlzXG4gKiBtZWFucyBhbGwgcmVmZXJlbmNlcyB0byBleHRlcm5hbC9yZW1vdGUgZG9jdW1lbnRzIGFyZSByZXBsYWNlZCB3aXRoIGl0cyBkZXJlZmVyZW5jZWQgdmFsdWUgYnV0IGFsbCBsb2NhbCByZWZlcmVuY2VzXG4gKiBhcmUgbGVmdCB1bnJlc29sdmVkLikqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgT3BlbkFQSSBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqICooVGhpcyBtZWFucyB0aGF0IGFsbCByZXNvbHZhYmxlIHJlZmVyZW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggdGhlaXIgZGVyZWZlcmVuY2VkIHZhbHVlLikqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZG9jdW1lbnRhdGlvblVybCAtIFRoZSBVUkwgdG8gdGhlIE9wZW5BUEkgZG9jdW1lbnRhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRoW119IHBhdGhPYmplY3RzIC0gVGhlIHVuaXF1ZSBgUGF0aGAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yXG4gKiBAcHJvcGVydHkge29iamVjdH0gcmVmZXJlbmNlcyAtIFRoZSByZWZlcmVuY2UgbWV0YWRhdGEgKihTZWUgW0pzb25SZWZzflJlc29sdmVkUmVmRGV0YWlsc10oaHR0cHM6Ly9naXRodWIuY29tL3doaXRsb2NramMvanNvbi1yZWZzL2Jsb2IvbWFzdGVyL2RvY3MvQVBJLm1kI21vZHVsZV9Kc29uUmVmcy4uUmVzb2x2ZWRSZWZEZXRhaWxzKSkqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmVyc2lvbiAtIFRoZSBPcGVuQVBJIHZlcnNpb25cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gQXBpRGVmaW5pdGlvbiAoZGVmaW5pdGlvbiwgZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHJlZmVyZW5jZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gIGRlYnVnKCdDcmVhdGluZyBBcGlEZWZpbml0aW9uIGZyb20gJXMnLFxuICAgICAgICBfLmlzU3RyaW5nKG9wdGlvbnMuZGVmaW5pdGlvbikgPyBvcHRpb25zLmRlZmluaXRpb24gOiAndGhlIHByb3ZpZGVkIE9wZW5BUEkgZGVmaW5pdGlvbicpO1xuXG4gIC8vIEFzc2lnbiB0aGlzIHNvIG90aGVyIG9iamVjdCBjYW4gdXNlIGl0XG4gIHRoaXMuX2RlYnVnID0gZGVidWc7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXNcbiAgdGhpcy5jdXN0b21Gb3JtYXRzID0ge307XG4gIHRoaXMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycyA9IHt9O1xuICB0aGlzLmN1c3RvbVZhbGlkYXRvcnMgPSBbXTtcbiAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCA9IGRlZmluaXRpb25GdWxseVJlc29sdmVkO1xuICB0aGlzLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQgPSBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkO1xuICB0aGlzLmRvY3VtZW50YXRpb25VcmwgPSAnaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQnO1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICB0aGlzLnZlcnNpb24gPSAnMi4wJztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllcyBmcm9tIHRoZSBPcGVuQVBJIE9iamVjdCBkZWZpbml0aW9uXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb24pO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSBmb3JtYXRzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbUZvcm1hdHMsIF8uYmluZChBcGlEZWZpbml0aW9uLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdCwgdGhpcykpO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSBmb3JtYXRzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMsIF8uYmluZChBcGlEZWZpbml0aW9uLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciwgdGhpcykpO1xuXG4gIC8vIFJlZ2lzdGVyIGN1c3RvbSB2YWxpZGF0b3JzXG4gIF8uZWFjaChvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsIF8uYmluZChBcGlEZWZpbml0aW9uLnByb3RvdHlwZS5yZWdpc3RlclZhbGlkYXRvciwgdGhpcykpO1xuXG4gIGRlYnVnKCcgIFBhdGhzOicpO1xuXG4gIC8vIENyZWF0ZSB0aGUgUGF0aCBvYmplY3RzXG4gIHRoaXMucGF0aE9iamVjdHMgPSBfLm1hcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKHBhdGhEZWYsIHBhdGgpIHtcbiAgICByZXR1cm4gbmV3IFBhdGgodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXy5nZXQoZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgWydwYXRocycsIHBhdGhdKSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aERlZixcbiAgICAgICAgICAgICAgICAgICAgWydwYXRocycsIHBhdGhdKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3BlcmF0aW9uIGZvciB0aGUgZ2l2ZW4gcGF0aCBhbmQgb3BlcmF0aW9uLlxuICpcbiAqICoqTm90ZToqKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHVzZWQgd2hlbiBgcmVxT3JQYXRoYCBpcyBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCAqKG9yIGVxdWl2YWxlbnQpKjpcbiAqXG4gKiAgICogYG1ldGhvZGBcbiAqICAgKiBgb3JpZ2luYWxVcmxgXG4gKiAgICogYHVybGBcbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpZE9yUGF0aE9yUmVxIC0gVGhlIE9wZW5BUEkgb3BlYXJ0aW9uIGlkLCBwYXRoIHN0cmluZyBvciB0aGUgaHR0cCBjbGllbnQgcmVxdWVzdCAqKG9yXG4gKiBlcXVpdmFsZW50KSpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWV0aG9kXSAtIFRoZSBPcGVuQVBJIG9wZXJhdGlvbiBtZXRob2QgXyhub3QgdXNlZCB3aGVuIHByb3ZpZGluZyBhbiBvcGVyYXRpb24gaWQpX1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb259IFRoZSBgT3BlcmF0aW9uYCBmb3IgdGhlIHByb3ZpZGVkIG9wZXJhdGlvbiBpZCwgb3IgcGF0aCBhbmQgbWV0aG9kIG9yIGB1bmRlZmluZWRgIGlmXG4gKiB0aGVyZSBpcyBubyBvcGVyYXRpb24gZm9yIHRoYXQgb3BlcmF0aW9uIGlkLCBvciBwYXRoIGFuZCBtZXRob2QgY29tYmluYXRpb25cbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUuZ2V0T3BlcmF0aW9uID0gZnVuY3Rpb24gKGlkT3JQYXRoT3JSZXEsIG1ldGhvZCkge1xuICB2YXIgcGF0aE9iamVjdDtcbiAgdmFyIG9wZXJhdGlvbjtcblxuICBpZiAoXy5pc09iamVjdChpZE9yUGF0aE9yUmVxKSkge1xuICAgIG1ldGhvZCA9IGlkT3JQYXRoT3JSZXEubWV0aG9kO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQobWV0aG9kKSkge1xuICAgIF8uZWFjaCh0aGlzLmdldFBhdGhzKCksIGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcGVyYXRpb24pKSB7XG4gICAgICAgIG9wZXJhdGlvbiA9IHBhdGguZ2V0T3BlcmF0aW9uKGlkT3JQYXRoT3JSZXEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHBhdGhPYmplY3QgPSB0aGlzLmdldFBhdGgoaWRPclBhdGhPclJlcSk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocGF0aE9iamVjdCkpIHtcbiAgICAgIG9wZXJhdGlvbiA9IHBhdGhPYmplY3QuZ2V0T3BlcmF0aW9uKG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbjtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgb3BlcmF0aW9ucyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggb3IgYWxsIG9wZXJhdGlvbnMgaW4gdGhlIEFQSS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIE9wZW5BUEkgcGF0aFxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gQWxsIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoZSBwcm92aWRlZCBwYXRoIG9yIGFsbCBBUEkgb3BlcmF0aW9uc1xuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS5nZXRPcGVyYXRpb25zID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgdmFyIG9wZXJhdGlvbnMgPSBbXTtcbiAgdmFyIHBhdGhPYmplY3Q7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGF0aCkpIHtcbiAgICBfLmVhY2godGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKHBPYmplY3QpIHtcbiAgICAgIG9wZXJhdGlvbnMucHVzaC5hcHBseShvcGVyYXRpb25zLCBwT2JqZWN0LmdldE9wZXJhdGlvbnMoKSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aE9iamVjdCA9IHRoaXMuZ2V0UGF0aChwYXRoKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXRoT2JqZWN0KSkge1xuICAgICAgb3BlcmF0aW9ucyA9IHBhdGhPYmplY3QuZ2V0T3BlcmF0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcGVyYXRpb25zO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBvcGVyYXRpb25zIGZvciB0aGUgcHJvdmlkZWQgdGFnLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGFnXSAtIFRoZSBPcGVuQVBJIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gQWxsIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoZSBwcm92aWRlZCB0YWdcbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUuZ2V0T3BlcmF0aW9uc0J5VGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gXy5yZWR1Y2UodGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbnMsIHBhdGhPYmplY3QpIHtcbiAgICBvcGVyYXRpb25zLnB1c2guYXBwbHkob3BlcmF0aW9ucywgcGF0aE9iamVjdC5nZXRPcGVyYXRpb25zQnlUYWcodGFnKSk7XG5cbiAgICByZXR1cm4gb3BlcmF0aW9ucztcbiAgfSwgW10pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgcmVxdWVzdC5cbiAqXG4gKiAqKk5vdGU6KiogQmVsb3cgaXMgdGhlIGxpc3Qgb2YgcHJvcGVydGllcyB1c2VkIHdoZW4gYHJlcU9yUGF0aGAgaXMgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgKihvciBlcXVpdmFsZW50KSo6XG4gKlxuICogICAqIGBvcmlnaW5hbFVybGBcbiAqICAgKiBgdXJsYFxuICpcbiAqICooU2VlOiB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2NsaWVudHJlcXVlc3R9KSpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHBhdGhPclJlcSAtIFRoZSBPcGVuQVBJIHBhdGggc3RyaW5nIG9yIHRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhdGh9IFRoZSBjb3JyZXNwb25kaW5nIGBQYXRoYCBvYmplY3QgZm9yIHRoZSByZXF1ZXN0ZWQgcGF0aCBvciByZXF1ZXN0XG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAocGF0aE9yUmVxKSB7XG4gIHZhciBsYXN0SW5kZXggPSAtMTtcbiAgdmFyIG5leHRJbmRleCA9IC0xO1xuICB2YXIgbWF0Y2hlcztcbiAgdmFyIHVybDtcblxuICBpZiAoXy5pc09iamVjdChwYXRoT3JSZXEpKSB7XG4gICAgdXJsID0gcGFyc2VVcmwocGF0aE9yUmVxLm9yaWdpbmFsVXJsIHx8IHBhdGhPclJlcS51cmwpLnBhdGhuYW1lO1xuXG4gICAgLy8gRmluZCBhbGwgbWF0Y2hpbmcgcGF0aHNcbiAgICBtYXRjaGVzID0gXy5yZWR1Y2UodGhpcy5wYXRoT2JqZWN0cywgZnVuY3Rpb24gKG5ld01hdGNoZXMsIHBhdGhPYmplY3QsIGluZGV4KSB7XG4gICAgICB2YXIgaXNNYXRjaCA9IF8uaXNBcnJheShwYXRoT2JqZWN0LnJlZ2V4cC5leGVjKHVybCkpO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBuZXdNYXRjaGVzLnB1c2goe1xuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICBzZWdtZW50czogcGF0aE9iamVjdC5wYXRoLnNwbGl0KCcvJylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld01hdGNoZXM7XG4gICAgfSwgW10pO1xuXG4gICAgLy8gVE9ETzogTG9nIGFsbCBtYXRjaGVzXG5cbiAgICB3aGlsZSAobWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBtYXRjaGVzID0gXy5yZWR1Y2UobWF0Y2hlcywgZnVuY3Rpb24gKG5ld01hdGNoZXMsIG1hdGNoKSB7XG4gICAgICAgIHZhciBuZXdJbmRleCA9IF8uZmluZEluZGV4KG1hdGNoLnNlZ21lbnRzLCBmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgICAgIHJldHVybiBfLnN0YXJ0c1dpdGgoc2VnbWVudCwgJ3snKSAmJiBfLmVuZHNXaXRoKHNlZ21lbnQsICd9Jyk7XG4gICAgICAgIH0sIGxhc3RJbmRleCArIDEpO1xuXG4gICAgICAgIC8vIENvbXBsZXRlIHN0YXRpYyBtYXRjaCBzbyB1c2Ugc29tZSB2YWx1ZSB0aGF0IGNhbid0IGJlIGV4Y2VlZGVkXG4gICAgICAgIGlmIChuZXdJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBuZXdJbmRleCA9IEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0luZGV4ID4gbmV4dEluZGV4KSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgbmV3TWF0Y2hlcyA9IFttYXRjaF07XG4gICAgICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPT09IG5leHRJbmRleCkge1xuICAgICAgICAgIG5ld01hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3TWF0Y2hlcztcbiAgICAgIH0sIFtdKTtcblxuICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIHRyaWVkIHRvIGZpbHRlciB0aGUgbWF0Y2hlcyBidXQgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMgdGhhdCBhcmUgaWRlbnRpY2FsIGFuZCBjYW5ub3RcbiAgICAgIC8vIGJlIGZpbHRlcmVkIGZ1cnRoZXIuICBUaGUgb25seSBjaG9pY2UgaXMgdG8gY2hvb3NlIHRoZSBmaXJzdCBtYXRjaC5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IG5leHRJbmRleCkge1xuICAgICAgICBtYXRjaGVzLnNwbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgbGFzdEluZGV4ID0gbmV4dEluZGV4O1xuICAgIH1cblxuICAgIC8vIFRPRE86IExvZyBtYXRjaFxuXG4gICAgcmV0dXJuIG1hdGNoZXMubGVuZ3RoID4gMCA/IHRoaXMucGF0aE9iamVjdHNbbWF0Y2hlc1swXS5pbmRleF0gOiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIF8uZmluZCh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAocGF0aE9iamVjdCkge1xuICAgICAgcmV0dXJuIHBhdGhPclJlcSA9PT0gcGF0aE9iamVjdC5wYXRoO1xuICAgIH0pO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHBhdGggb2JqZWN0cyBmb3IgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGF0aFtdfSBUaGUgYFBhdGhgIG9iamVjdHNcbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUuZ2V0UGF0aHMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhdGhPYmplY3RzO1xufTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gdmFsaWRhdG9yIC0gVGhlIGZvcm1hdCB2YWxpZGF0b3IgKihTZWUgW1pTY2hlbWEgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL3phZ2dpbm8vei1zY2hlbWEjcmVnaXN0ZXItYS1jdXN0b20tZm9ybWF0KSkqXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKG5hbWUsIHZhbGlkYXRvcikge1xuICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQodmFsaWRhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbGlkYXRvciBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzRnVuY3Rpb24odmFsaWRhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbGlkYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHRoaXMuY3VzdG9tRm9ybWF0c1tuYW1lXSA9IHZhbGlkYXRvcjtcblxuICBoZWxwZXJzLnJlZ2lzdGVyRm9ybWF0KG5hbWUsIHZhbGlkYXRvcik7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmb3JtYXRHZW5lcmF0b3IgLSBUaGUgZm9ybWF0IGdlbmVyYXRvciAqKFNlZSBbanNvbi1zY2hlbWEtbW9ja2VyIEN1c3RvbSBGb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLXNjaGVtYS1mYWtlci9qc29uLXNjaGVtYS1mYWtlciNjdXN0b20tZm9ybWF0cykpKlxuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciA9IGZ1bmN0aW9uIChuYW1lLCBmb3JtYXRHZW5lcmF0b3IpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNTdHJpbmcobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKGZvcm1hdEdlbmVyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb3JtYXRHZW5lcmF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc0Z1bmN0aW9uKGZvcm1hdEdlbmVyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb3JtYXRHZW5lcmF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB0aGlzLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnNbbmFtZV0gPSBmb3JtYXRHZW5lcmF0b3I7XG5cbiAgaGVscGVycy5yZWdpc3RlckZvcm1hdEdlbmVyYXRvcihuYW1lLCBmb3JtYXRHZW5lcmF0b3IpO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUudW5yZWdpc3RlckZvcm1hdCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmIChfLmlzU3RyaW5nKG5hbWUpKSB7XG4gICAgZGVsZXRlIHRoaXMuY3VzdG9tRm9ybWF0c1tuYW1lXTtcblxuICAgIGhlbHBlcnMudW5yZWdpc3RlckZvcm1hdChuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0IGdlbmVyYXRvclxuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKF8uaXNTdHJpbmcobmFtZSkpIHtcbiAgICBkZWxldGUgdGhpcy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzW25hbWVdO1xuXG4gICAgaGVscGVycy51bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yKG5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY3VzdG9tIHZhbGlkYXRvci5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LkRvY3VtZW50VmFsaWRhdGlvbkZ1bmN0aW9ufSB2YWxpZGF0b3IgLSBUaGUgdmFsaWRhdG9yXG4gKlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiB0aGUgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyVmFsaWRhdG9yID0gZnVuY3Rpb24gKHZhbGlkYXRvcikge1xuICBpZiAoXy5pc1VuZGVmaW5lZCh2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdGhpcy5jdXN0b21WYWxpZGF0b3JzLnB1c2godmFsaWRhdG9yKTtcbn07XG5cbi8qKlxuICogUGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgT3BlbkFQSSBkZWZpbml0aW9uLlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICAvLyBWYWxpZGF0ZSB0aGUgZG9jdW1lbnQgc3RydWN0dXJhbGx5XG4gIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnModGhpcywgdW5kZWZpbmVkLCBbdmFsaWRhdG9ycy5qc29uU2NoZW1hVmFsaWRhdG9yXSwgcmVzdWx0cyk7XG5cbiAgLy8gUGVyZm9ybSByZW1haW5pbmcgdmFsaWRhdGlvbiBvbmx5IGlmIHRoZSBkb2N1bWVudCBpcyBzdHJ1Y3R1cmFsbHkgdmFsaWRcbiAgaWYgKHJlc3VsdHMuZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFJ1biBwbHVnaW4gdmFsaWRhdG9yc1xuICAgIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnModGhpcywgdW5kZWZpbmVkLCB2YWxpZGF0b3JzLnNlbWFudGljVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgICAvLyBSdW4gY3VzdG9tIHZhbGlkYXRvcnNcbiAgICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHRoaXMsIHVuZGVmaW5lZCwgdGhpcy5jdXN0b21WYWxpZGF0b3JzLCByZXN1bHRzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBcGlEZWZpbml0aW9uO1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xudmFyIFBhcmFtZXRlciA9IHJlcXVpcmUoJy4vcGFyYW1ldGVyJyk7XG52YXIgUmVzcG9uc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBPcGVyYXRpb24gb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBEbyBub3QgdXNlIGRpcmVjdGx5LlxuICpcbiAqICoqRXh0cmEgUHJvcGVydGllczoqKiBPdGhlciB0aGFuIHRoZSBkb2N1bWVudGVkIHByb3BlcnRpZXMsIHRoaXMgb2JqZWN0IGFsc28gZXhwb3NlcyBhbGwgcHJvcGVydGllcyBvZiB0aGVcbiAqIFtPcGVuQVBJIE9wZXJhdGlvbiBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI29wZXJhdGlvbk9iamVjdCkuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIFBhdGggb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBtZXRob2RcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uICooVGhlIHJhdyBvcGVyYXRpb24gZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiAqKFRoZSByYXcgb3BlcmF0aW9uIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB3ZXJlIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIGZvciB0aGlzIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIGBQYXRoYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IHBhcmFtZXRlck9iamVjdHMgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IHNlY3VyaXR5RGVmaW5pdGlvbnMgLSBUaGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGlzIG9wZXJhdGlvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBPcGVyYXRpb24gKHBhdGhPYmplY3QsIG1ldGhvZCwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgdmFyIHNlZW5QYXJhbWV0ZXJzID0gW107XG4gIHZhciB0aGF0ID0gdGhpcztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmNvbnN1bWVzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuY29uc3VtZXMgfHwgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmNvbnN1bWVzIHx8IFtdO1xuICB0aGlzLmRlZmluaXRpb24gPSBfLmNsb25lRGVlcChkZWZpbml0aW9uKTsgLy8gQ2xvbmUgc28gd2UgZG8gbm90IGFsdGVyIHRoZSBvcmlnaW5hbFxuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gXy5jbG9uZURlZXAoZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpOyAvLyBDbG9uZSBzbyB3ZSBkbyBub3QgYWx0ZXIgdGhlIG9yaWdpbmFsXG4gIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICB0aGlzLnBhcmFtZXRlck9iamVjdHMgPSBbXTsgLy8gQ29tcHV0ZWQgYmVsb3dcbiAgdGhpcy5wYXRoT2JqZWN0ID0gcGF0aE9iamVjdDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wcm9kdWNlcyA9IGRlZmluaXRpb25GdWxseVJlc29sdmVkLnByb2R1Y2VzIHx8IHBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5wcm9kdWNlcyB8fCBbXTtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgT3BlbkFQSSBPcGVyYXRpb24gT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5wYXRoT2JqZWN0LmFwaURlZmluaXRpb24uX2RlYnVnO1xuXG4gIC8vIEFkZCB0aGUgUGFyYW1ldGVyIG9iamVjdHMgZnJvbSB0aGUgUGF0aCBvYmplY3QgdGhhdCB3ZXJlIG5vdCByZWRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKHBhdGhPYmplY3QucGFyYW1ldGVyT2JqZWN0cywgZnVuY3Rpb24gKHBhcmFtZXRlck9iamVjdCkge1xuICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyT2JqZWN0LmluICsgJzonICsgcGFyYW1ldGVyT2JqZWN0Lm5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdDtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgJXMgYXQgJXMnLCB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnB0cik7XG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgQ29uc3VtZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMuY29uc3VtZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBQYXJhbWV0ZXJzOicpO1xuXG4gIC8vIENyZWF0ZSBQYXJhbWV0ZXIgb2JqZWN0cyBmcm9tIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgXy5lYWNoKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIga2V5ID0gcGFyYW1EZWYuaW4gKyAnOicgKyBwYXJhbURlZi5uYW1lO1xuICAgIHZhciBzZWVuSW5kZXggPSBzZWVuUGFyYW1ldGVycy5pbmRleE9mKGtleSk7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuICAgIHZhciBwYXJhbWV0ZXJPYmplY3QgPSBuZXcgUGFyYW1ldGVyKHRoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5nZXQocGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbURlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0aCk7XG5cbiAgICBpZiAoc2VlbkluZGV4ID4gLTEpIHtcbiAgICAgIHRoYXQucGFyYW1ldGVyT2JqZWN0c1tzZWVuSW5kZXhdID0gcGFyYW1ldGVyT2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGF0LnBhcmFtZXRlck9iamVjdHMucHVzaChwYXJhbWV0ZXJPYmplY3QpO1xuXG4gICAgICBzZWVuUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgfVxuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgICAgIFByb2R1Y2VzOicpO1xuXG4gIF8uZWFjaCh0aGlzLnByb2R1Y2VzLCBmdW5jdGlvbiAobWltZVR5cGUpIHtcbiAgICB0aGF0Ll9kZWJ1ZygnICAgICAgICAgICAgJXMnLCBtaW1lVHlwZSk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgUmVzcG9uc2VzOicpO1xuXG4gIC8vIENyZWF0ZSByZXNwb25zZSBvYmplY3RzIGZyb20gcmVzcG9uc2VzIGRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucmVzcG9uc2VPYmplY3RzID0gXy5tYXAodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5yZXNwb25zZXMsIGZ1bmN0aW9uIChyZXNwb25zZURlZiwgY29kZSkge1xuICAgIHZhciByUGF0aCA9IHBhdGhUb0RlZmluaXRpb24uY29uY2F0KFsncmVzcG9uc2VzJywgY29kZV0pXG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5nZXQodGhhdC5wYXRoT2JqZWN0LmFwaURlZmluaXRpb24uZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgclBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICByUGF0aCk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgU2VjdXJpdHk6Jyk7XG5cbiAgLy8gQnJpbmcgaW4gdGhlIHNlY3VyaXR5IGRlZmluaXRpb25zIGZvciBlYXNpZXIgYWNjZXNzXG5cbiAgLy8gT3ZlcnJpZGUgZ2xvYmFsIHNlY3VyaXR5IHdpdGggbG9jYWxseSBkZWZpbmVkXG4gIHZhciBzZWN1cml0eSA9IHRoaXMuc2VjdXJpdHkgfHwgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5O1xuXG4gIHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyA9IF8ucmVkdWNlKHNlY3VyaXR5LCBmdW5jdGlvbiAoZGVmcywgcmVxcykge1xuICAgIF8uZWFjaChyZXFzLCBmdW5jdGlvbiAocmVxLCBuYW1lKSB7XG4gICAgICB2YXIgZGVmID0gcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5RGVmaW5pdGlvbnMgP1xuICAgICAgICAgICAgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5RGVmaW5pdGlvbnNbbmFtZV0gOlxuICAgICAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZGVmKSkge1xuICAgICAgICBkZWZzW25hbWVdID0gZGVmO1xuICAgICAgfVxuXG4gICAgICB0aGF0Ll9kZWJ1ZygnICAgICAgICAgICAgJXMgKHR5cGU6ICVzKScsIG5hbWUsIF8uaXNVbmRlZmluZWQoZGVmKSA/ICdtaXNzaW5nJzogZGVmLnR5cGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlZnM7XG4gIH0sIHt9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSBhbmQgbG9jYXRpb24gd2hlbiBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbG9jYXRpb25dIC0gVGhlIGxvY2F0aW9uICooYGluYCkqIG9mIHRoZSBwYXJhbWV0ZXIgKihVc2VkIGZvciBkaXNhbWJpZ3VhdGlvbikqXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcn0gVGhlIGBQYXJhbWV0ZXJgIG1hdGNoaW5nIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBjb21iaW5hdGlvbiBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZVxuICogaXMgbm8gbWF0Y2hcbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXIgPSBmdW5jdGlvbiAobmFtZSwgbG9jYXRpb24pIHtcbiAgcmV0dXJuIF8uZmluZCh0aGlzLnBhcmFtZXRlck9iamVjdHMsIGZ1bmN0aW9uIChwYXJhbWV0ZXJPYmplY3QpIHtcbiAgICByZXR1cm4gcGFyYW1ldGVyT2JqZWN0Lm5hbWUgPT09IG5hbWUgJiYgKF8uaXNVbmRlZmluZWQobG9jYXRpb24pID8gdHJ1ZSA6IHBhcmFtZXRlck9iamVjdC5pbiA9PT0gbG9jYXRpb24pO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgcGFyYW1ldGVycyBmb3IgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IEFsbCBgUGFyYW1ldGVyYCBvYmplY3RzIGZvciB0aGUgb3BlcmF0aW9uXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGFyYW1ldGVyT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0ZWQgc3RhdHVzIGNvZGUgb3IgdGhlIGRlZmF1bHQgcmVzcG9uc2UgKihpZiBhdmFpbGFibGUpKiBpZiBub25lIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gW3N0YXR1c0NvZGU9J2RlZmF1bHQnXSAtIFRoZSBzdGF0dXMgY29kZVxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5SZXNwb25zZX0gVGhlIGBSZXNwb25zZWAgb3IgYHVuZGVmaW5lZGAgaWYgb25lIGNhbm5vdCBiZSBmb3VuZFxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFJlc3BvbnNlID0gZnVuY3Rpb24gKHN0YXR1c0NvZGUpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQoc3RhdHVzQ29kZSkpIHtcbiAgICBzdGF0dXNDb2RlID0gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKF8uaXNOdW1iZXIoc3RhdHVzQ29kZSkpIHtcbiAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZS50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIF8uZmluZCh0aGlzLmdldFJlc3BvbnNlcygpLCBmdW5jdGlvbiAocmVzcG9uc2VPYmplY3QpIHtcbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Quc3RhdHVzQ29kZSA9PT0gc3RhdHVzQ29kZTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHJlc3BvbnNlcyBmb3IgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUmVzcG9uc2VbXX0gQWxsIGBSZXNwb25zZWAgb2JqZWN0cyBmb3IgdGhlIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFJlc3BvbnNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVzcG9uc2VPYmplY3RzO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wb3NpdGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgZm9yIHRoaXMgb3BlcmF0aW9uLlxuICpcbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBBUEkgYW5kIGB0aGlzLnNlY3VyaXR5YCBpcyB0aGF0IGB0aGlzLnNlY3VyaXR5YCBpcyB0aGUgcmF3IGBzZWN1cml0eWAgdmFsdWUgZm9yIHRoZVxuICogb3BlcmF0aW9uIHdoZXJlIGFzIHRoaXMgQVBJIHdpbGwgcmV0dXJuIHRoZSBnbG9iYWwgYHNlY3VyaXR5YCB2YWx1ZSB3aGVuIGF2YWlsYWJsZSBhbmQgdGhpcyBvcGVyYXRpb24ncyBzZWN1cml0eVxuICogaXMgdW5kZWZpbmVkLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3RbXX0gVGhlIHNlY3VyaXR5IGZvciB0aGlzIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFNlY3VyaXR5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eSB8fCB0aGlzLnBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlcXVlc3QuXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIGByZXFgIHByb3BlcnRpZXMgdXNlZCAqKHJlcSBzaG91bGQgYmUgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgb3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgYm9keWA6IFVzZWQgZm9yIGBib2R5YCBhbmQgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzXG4gKiAgICogYGZpbGVzYDogVXNlZCBmb3IgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzIHdob3NlIGB0eXBlYCBpcyBgZmlsZWBcbiAqICAgKiBgaGVhZGVyc2A6IFVzZWQgZm9yIGBoZWFkZXJgIHBhcmFtZXRlcnMgYW5kIGNvbnN1bWVzXG4gKiAgICogYG9yaWdpbmFsVXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqICAgKiBgcXVlcnlgOiBVc2VkIGZvciBgcXVlcnlgIHBhcmFtZXRlcnNcbiAqICAgKiBgdXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqXG4gKiBGb3IgYHBhdGhgIHBhcmFtZXRlcnMsIHdlIHdpbGwgdXNlIHRoZSBvcGVyYXRpb24ncyBgcmVnZXhwYCBwcm9wZXJ0eSB0byBwYXJzZSBvdXQgcGF0aCBwYXJhbWV0ZXJzIHVzaW5nIHRoZVxuICogYG9yaWdpbmFsVXJsYCBvciBgdXJsYCBwcm9wZXJ0eS5cbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcSAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlJlcXVlc3RWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLnZhbGlkYXRlUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXEsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgQ29udGVudC1UeXBlIGlmIHRoZXJlIGlzIGEgc2V0IG9mIGV4cGVjdGVkIGNvbnN1bWVzIGFuZCB0aGVyZSBpcyBhIGJvZHlcbiAgaWYgKHRoaXMuY29uc3VtZXMubGVuZ3RoID4gMCAmJiAhXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICBoZWxwZXJzLnZhbGlkYXRlQ29udGVudFR5cGUoaGVscGVycy5nZXRDb250ZW50VHlwZShyZXEuaGVhZGVycyksIHRoaXMuY29uc3VtZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgXy5lYWNoKHRoaXMuZ2V0UGFyYW1ldGVycygpLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICB2YXIgcGFyYW1WYWx1ZSA9IHBhcmFtLmdldFZhbHVlKHJlcSk7XG4gICAgdmFyIHZFcnI7XG5cbiAgICBpZiAoIXBhcmFtVmFsdWUudmFsaWQpIHtcbiAgICAgIHZFcnIgPSB7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFUVVFU1RfUEFSQU1FVEVSJyxcbiAgICAgICAgZXJyb3JzOiBwYXJhbVZhbHVlLmVycm9yLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogcGFyYW1WYWx1ZS5lcnJvci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbjogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QuaW4sXG4gICAgICAgIC8vIFJlcG9ydCB0aGUgYWN0dWFsIGVycm9yIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLiAgT3RoZXJ3aXNlLCByZXBvcnQgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBwYXJhbWV0ZXIgKCcgKyBwYXJhbS5uYW1lICsgJyk6ICcgKyAoKHBhcmFtVmFsdWUuZXJyb3JzIHx8IFtdKS5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlKSxcbiAgICAgICAgbmFtZTogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QubmFtZSxcbiAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICB9O1xuXG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHZFcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgc3RyaWN0IG1vZGVcbiAgaGVscGVycy52YWxpZGF0ZVN0cmljdE1vZGUodGhpcywgcmVxLCBvcHRpb25zLnN0cmljdE1vZGUsIHJlc3VsdHMpO1xuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIHZhbGlkYXRvcnNcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyhyZXEsIHRoaXMsIG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcyAtIFRoZSByZXNwb25zZSBvciByZXNwb25zZSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHttb2R1bGU6c3dheS5SZXNwb25zZVZhbGlkYXRpb25PcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgdmFsaWRhdGlvbiBvcHRpb25zXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHJlYWxTdGF0dXNDb2RlO1xuICB2YXIgcmVzcG9uc2U7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIHJlYWxTdGF0dXNDb2RlID0gcmVzLnN0YXR1c0NvZGUgfHwgJ2RlZmF1bHQnO1xuICByZXNwb25zZSA9IHRoaXMuZ2V0UmVzcG9uc2UocmVhbFN0YXR1c0NvZGUpO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlc3BvbnNlKSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cywgdXNlIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlzIG9uZSAoVGhpcyBpcyBPcGVuQVBJJ3MgYXBwcm9hY2gpXG4gICAgcmVzcG9uc2UgPSB0aGlzLmdldFJlc3BvbnNlKCdkZWZhdWx0Jyk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9DT0RFJyxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYSBkZWZpbmVkIFxcJycgK1xuICAgICAgICAgICAgICAgICAgIChyZWFsU3RhdHVzQ29kZSA9PT0gJ2RlZmF1bHQnID9cbiAgICAgICAgICAgICAgICAgICAgcmVhbFN0YXR1c0NvZGUgOlxuICAgICAgICAgICAgICAgICAgICByZWFsU3RhdHVzQ29kZSArICdcXCcgb3IgXFwnZGVmYXVsdCcpICsgJ1xcJyByZXNwb25zZSBjb2RlJyxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICByZXN1bHRzID0gcmVzcG9uc2UudmFsaWRhdGVSZXNwb25zZShyZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9wZXJhdGlvbjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xuXG4vKipcbiAqIE9iamVjdCByZXByZXNlbnRpbmcgYSBwYXJhbWV0ZXIgdmFsdWUuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IHBhcmFtZXRlck9iamVjdCAtIFRoZSBgUGFyYW1ldGVyYCBvYmplY3RcbiAqIEBwYXJhbSB7Kn0gcmF3IC0gVGhlIG9yaWdpbmFsL3JhdyB2YWx1ZVxuICpcbiAqIEBwcm9wZXJ0eSB7RXJyb3J9IGVycm9yIC0gVGhlIGVycm9yKHMpIGVuY291bnRlcmVkIGR1cmluZyBwcm9jZXNzaW5nL3ZhbGlkYXRpbmcgdGhlIHBhcmFtZXRlciB2YWx1ZVxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IHBhcmFtZXRlck9iamVjdCAtIFRoZSBgUGFyYW1ldGVyYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7Kn0gcmF3IC0gVGhlIG9yaWdpbmFsIHBhcmFtZXRlciB2YWx1ZSAqKERvZXMgbm90IHRha2UgZGVmYXVsdCB2YWx1ZXMgaW50byBhY2NvdW50KSpcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdmFsaWQgLSBXaGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyB2YWxpZCBiYXNlZCBvbiBpdHMgSlNPTiBTY2hlbWFcbiAqIEBwcm9wZXJ0eSB7Kn0gdmFsdWUgLSBUaGUgcHJvY2Vzc2VkIHZhbHVlICooVGFrZXMgZGVmYXVsdCB2YWx1ZXMgaW50byBhY2NvdW50IGFuZCBkb2VzIHR5cGUgY29lcmNpb24gd2hlbiBuZWNlc3NhcnlcbiAqIGFuZCBwb3NzaWJsZSkqLiAgVGhpcyBjYW4gdGhlIG9yaWdpbmFsIHZhbHVlIGluIHRoZSBldmVudCB0aGF0IHByb2Nlc3NpbmcgdGhlIHZhbHVlIGlzIGltcG9zc2libGVcbiAqICoobWlzc2luZyBzY2hlbWEgdHlwZSkqIG9yIGB1bmRlZmluZWRgIGlmIHByb2Nlc3NpbmcgdGhlIHZhbHVlIGZhaWxlZCAqKGludmFsaWQgdHlwZXMsIGV0Yy4pKi5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUGFyYW1ldGVyVmFsdWUgKHBhcmFtZXRlck9iamVjdCwgcmF3KSB7XG4gIHZhciBwUGF0aCA9IEpzb25SZWZzLnBhdGhGcm9tUHRyKHBhcmFtZXRlck9iamVjdC5wdHIpO1xuICB2YXIgcHJvY2Vzc2VkID0gZmFsc2U7XG4gIHZhciBzY2hlbWEgPSBwYXJhbWV0ZXJPYmplY3Quc2NoZW1hO1xuICB2YXIgZXJyb3I7XG4gIHZhciBpc1ZhbGlkO1xuICB2YXIgcHJvY2Vzc2VkVmFsdWU7XG5cbiAgdGhpcy5wYXJhbWV0ZXJPYmplY3QgPSBwYXJhbWV0ZXJPYmplY3Q7XG4gIHRoaXMucmF3ID0gcmF3O1xuXG4gIC8vIFVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgZm9yICd2YWx1ZScgdG8gYWxsb3cgZm9yIGxhenkgcHJvY2Vzc2luZyBvZiB0aGUgcmF3IHZhbHVlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICBlcnJvcjoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBBbHdheXMgY2FsbCB0aGlzLnZhbGlkIHRvIGVuc3VyZSB3ZSB2YWxpZGF0ZSB0aGUgdmFsdWUgcHJpb3IgdG8gcmV0dXJuaW5nIGFueSB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMudmFsaWQgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWQ6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgIHdhcm5pbmdzOiBbXVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2tpcFZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICB2YXIgdkVycm9yO1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGlzVmFsaWQpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZXJyb3IpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZG5lc3NcbiAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiBfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQgYnV0IHdhcyBub3QgcHJvdmlkZWQnKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ1JFUVVJUkVEJztcblxuICAgICAgICAgICAgICAgIHRocm93IHZFcnJvcjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIENhc2VzIHdlIGRvIG5vdCB3YW50IHRvIGRvIHNjaGVtYSB2YWxpZGF0aW9uOlxuICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBleHBsaWNpdGx5IGFsbG93cyBlbXB0eSB2YWx1ZXMgYW5kIHRoZSB2YWx1ZSBpcyBlbXB0eVxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBhbGxvdyBvcHRpb25hbCB2YWx1ZXMgYW5kIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgZGVmaW5lcyBhIGZpbGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGlzIGZvciBhIHN0cmluZyB0eXBlIHdpdGggZGF0ZS9kYXRlLXRpbWUgZm9ybWF0IGFuZCB0aGUgdmFsdWUgaXMgYSBkYXRlXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGlzIGZvciBhIHN0cmluZyB0eXBlIGFuZCB0aGUgdmFsdWUgaXMgYSBCdWZmZXJcbiAgICAgICAgICAgICAgaWYgKChfLmlzVW5kZWZpbmVkKHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCkgfHwgcGFyYW1ldGVyT2JqZWN0LnJlcXVpcmVkID09PSBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5hbGxvd0VtcHR5VmFsdWUgPT09IHRydWUgJiYgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlck9iamVjdC50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKFsnZGF0ZScsICdkYXRlLXRpbWUnXS5pbmRleE9mKHNjaGVtYS5mb3JtYXQpID4gLTEgJiYgXy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEudHlwZSA9PT0gJ3N0cmluZycgJiYgXy5pc0Z1bmN0aW9uKHZhbHVlLnJlYWRVSW50OCkpIHtcbiAgICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgYWdhaW5zdCBKU09OIFNjaGVtYVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpLCBwYXJhbWV0ZXJPYmplY3Quc2NoZW1hLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdkVycm9yID0gbmV3IEVycm9yKCdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgdkVycm9yLmNvZGUgPSAnU0NIRU1BX1ZBTElEQVRJT05fRkFJTEVEJztcbiAgICAgICAgICAgICAgICB2RXJyb3IuZXJyb3JzID0gcmVzdWx0LmVycm9ycztcblxuICAgICAgICAgICAgICAgIHRocm93IHZFcnJvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGVyci5mYWlsZWRWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZXJyLnBhdGggPSBwUGF0aDtcblxuICAgICAgICAgICAgICBlcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWx1ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdkVycm9yO1xuXG4gICAgICAgIGlmICghcHJvY2Vzc2VkKSB7XG4gICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gcmF3O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0L0NvZXJjZSB0aGUgcmF3IHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgb2JqZWN0XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSBlbXB0aW5lc3MgKHByaW9yIHRvIGNvZXJjaW9uIGZvciBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcpXG4gICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJPYmplY3QuYWxsb3dFbXB0eVZhbHVlID09PSBmYWxzZSAmJiByYXcgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdkVycm9yID0gbmV3IEVycm9yKCdWYWx1ZSBpcyBub3QgYWxsb3dlZCB0byBiZSBlbXB0eScpO1xuXG4gICAgICAgICAgICAgICAgdkVycm9yLmNvZGUgPSAnRU1QVFlfTk9UX0FMTE9XRUQnO1xuXG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBlcnJvciBpcyBub3QgYSBjb2VyY2lvbiBlcnJvciwgdGhlIHZhbHVlIGlzIHNldCB0byByYXdcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHJhdztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IGhlbHBlcnMuY29udmVydFZhbHVlKHNjaGVtYSwge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Gb3JtYXQ6IHBhcmFtZXRlck9iamVjdC5jb2xsZWN0aW9uRm9ybWF0XG4gICAgICAgICAgICAgIH0sIHJhdyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0aWxsIG5vIHZhbHVlIGFuZCB0aGVyZSBhcmUgbm8gZXJyb3JzLCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUgaWYgYXZhaWxhYmxlIChubyBjb2VyY2lvbilcbiAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHByb2Nlc3NlZFZhbHVlKSAmJiBfLmlzVW5kZWZpbmVkKGVycm9yKSkge1xuICAgICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gXy5yZWR1Y2Uoc2NoZW1hLml0ZW1zLCBmdW5jdGlvbiAoaXRlbXMsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtLmRlZmF1bHQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgcmVzZXQgdGhlIHByb2Nlc3NlZCB2YWx1ZSB0byAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgaWYgKF8uZXZlcnkocHJvY2Vzc2VkVmFsdWUsIF8uaXNVbmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSAmJiAhXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMuZGVmYXVsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBbc2NoZW1hLml0ZW1zLmRlZmF1bHRdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZSBwcm9jZXNzZWQgdmFsdWUgaXMgc3RpbGwgdW5kZWZpbmVkIGFuZCBpZiB0aGVyZSdzIGEgZ2xvYmFsIGRlZmF1bHQgc2V0XG4gICAgICAgICAgICAgIC8vIGZvciB0aGUgYXJyYXksIHdlIHVzZSBpdFxuICAgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChwcm9jZXNzZWRWYWx1ZSkgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBzY2hlbWEuZGVmYXVsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQYXJhbWV0ZXJWYWx1ZTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xudmFyIFBhcmFtZXRlclZhbHVlID0gcmVxdWlyZSgnLi9wYXJhbWV0ZXItdmFsdWUnKTtcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xuXG4vKipcbiAqIFRoZSBPcGVuQVBJIFBhcmFtZXRlciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogW09wZW5BUEkgUGFyYW1ldGVyIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjcGFyYW1ldGVyT2JqZWN0KS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5Lk9wZXJhdGlvbnxtb2R1bGU6c3dheS5QYXRofSBvcE9yUGF0aE9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvciBgUGF0aGAgb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiAqKFRoZSByYXcgcGFyYW1ldGVyIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gKihUaGUgcmF3IHBhcmFtZXRlciBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlc1xuICogd2VyZSByZXNvbHZlZCkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3QgdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvICooQ2FuIGJlXG4gKiBgdW5kZWZpbmVkYCBmb3IgcGF0aC1sZXZlbCBwYXJhbWV0ZXJzKSpcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGF0aH0gcGF0aE9iamVjdCAtIFRoZSBgUGF0aGAgb2JqZWN0IHRoZSBwYXJhbWV0ZXIgYmVsb25ncyB0b1xuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gcGF0aFRvRGVmaW5pdGlvbiAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge29iamVjdH0gc2NoZW1hIC0gVGhlIEpTT04gU2NoZW1hIGZvciB0aGUgcGFyYW1ldGVyICooRm9yIG5vbi1ib2R5IHBhcmFtZXRlcnMsIHRoaXMgaXMgYSBjb21wdXRlZCB2YWx1ZSkqXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhcmFtZXRlciAob3BPclBhdGhPYmplY3QsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG5cbiAgaWYgKF8uaGFzKG9wT3JQYXRoT2JqZWN0LCAnY29uc3VtZXMnKSkge1xuICAgIHRoaXMub3BlcmF0aW9uT2JqZWN0ID0gb3BPclBhdGhPYmplY3Q7XG4gICAgdGhpcy5wYXRoT2JqZWN0ID0gb3BPclBhdGhPYmplY3QucGF0aE9iamVjdDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLm9wZXJhdGlvbk9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdGhPYmplY3QgPSBvcE9yUGF0aE9iamVjdDtcbiAgfVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIE9wZW5BUEkgUGFyYW1ldGVyIE9iamVjdCBkZWZpbml0aW9uXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnNjaGVtYSkpIHtcbiAgICB0aGlzLnNjaGVtYSA9IGhlbHBlcnMuY29tcHV0ZVBhcmFtZXRlclNjaGVtYShkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG4gIH1cblxuICB0aGlzLnBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5fZGVidWcoJyAgICAgICAgICAlcyVzIChpbjogJXMpIGF0ICVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQodGhpcy5vcGVyYXRpb25PYmplY3QpID8gJycgOiAnICAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25GdWxseVJlc29sdmVkLmluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzYW1wbGUgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgYmFzZWQgb24gaXRzIHNjaGVtYTtcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHNhbXBsZSB2YWx1ZVxuICovXG5QYXJhbWV0ZXIucHJvdG90eXBlLmdldFNhbXBsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGhlbHBlcnMuZ2V0U2FtcGxlKHRoaXMuc2NoZW1hKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyYW1ldGVyIHZhbHVlIGZyb20gdGhlIHJlcXVlc3QuXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIGByZXFgIHByb3BlcnRpZXMgdXNlZCAqKHJlcSBzaG91bGQgYmUgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgb3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgYm9keWA6IFVzZWQgZm9yIGBib2R5YCBhbmQgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzXG4gKiAgICogYGZpbGVzYDogVXNlZCBmb3IgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzIHdob3NlIGB0eXBlYCBpcyBgZmlsZWBcbiAqICAgKiBgaGVhZGVyc2A6IFVzZWQgZm9yIGBoZWFkZXJgIHBhcmFtZXRlcnNcbiAqICAgKiBgb3JpZ2luYWxVcmxgOiB1c2VkIGZvciBgcGF0aGAgcGFyYW1ldGVyc1xuICogICAqIGBxdWVyeWA6IFVzZWQgZm9yIGBxdWVyeWAgcGFyYW1ldGVyc1xuICogICAqIGB1cmxgOiB1c2VkIGZvciBgcGF0aGAgcGFyYW1ldGVyc1xuICpcbiAqIEZvciBgcGF0aGAgcGFyYW1ldGVycywgd2Ugd2lsbCB1c2UgdGhlIG9wZXJhdGlvbidzIGByZWdleHBgIHByb3BlcnR5IHRvIHBhcnNlIG91dCBwYXRoIHBhcmFtZXRlcnMgdXNpbmcgdGhlXG4gKiBgb3JpZ2luYWxVcmxgIG9yIGB1cmxgIHByb3BlcnR5LlxuICpcbiAqICooU2VlOiB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2NsaWVudHJlcXVlc3R9KSpcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVxIC0gVGhlIGh0dHAgY2xpZW50IHJlcXVlc3QgKihvciBlcXVpdmFsZW50KSpcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyVmFsdWV9IFRoZSBwYXJhbWV0ZXIgdmFsdWUgb2JqZWN0XG4gKlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgaW5gIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIncyBzY2hlbWEgaXMgbm90IHZhbGlkIG9yIGlmIHRoZSBgcmVxYCBwcm9wZXJ0eSB0byByZXRyaWV2ZSB0aGVcbiAqIHBhcmFtZXRlciBpcyBtaXNzaW5nXG4gKi9cblBhcmFtZXRlci5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAocmVxKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlcSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXEgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoaGVscGVycy5wYXJhbWV0ZXJMb2NhdGlvbnMuaW5kZXhPZih0aGlzLmluKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXFwnaW5cXCcgdmFsdWU6ICcgKyB0aGlzLmluKTtcbiAgfVxuXG4gIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhlIHR5cGUgb2YgcmVxXG5cbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIgdHlwZSA9IHRoaXMuc2NoZW1hLnR5cGU7XG4gIHZhciBwYXRoTWF0Y2g7XG4gIHZhciB2YWx1ZTtcblxuICBzd2l0Y2ggKHRoaXMuaW4pIHtcbiAgY2FzZSAnYm9keSc6XG4gICAgdmFsdWUgPSByZXEuYm9keTtcbiAgICBicmVhaztcbiAgY2FzZSAnZm9ybURhdGEnOlxuICAgIC8vIEZvciBmb3JtRGF0YSwgZWl0aGVyIHRoZSB2YWx1ZSBpcyBhIGZpbGUgb3IgYSBwcm9wZXJ0eSBvZiByZXEuYm9keS4gIHJlcS5ib2R5IGFzIGEgd2hvbGUgY2FuIG5ldmVyIGJlIHRoZVxuICAgIC8vIHZhbHVlIHNpbmNlIHRoZSBKU09OIFNjaGVtYSBmb3IgZm9ybURhdGEgcGFyYW1ldGVycyBkb2VzIG5vdCBhbGxvdyBhIHR5cGUgb2YgJ29iamVjdCcuXG4gICAgaWYgKHR5cGUgPT09ICdmaWxlJykge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLmZpbGVzKSkge1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLmZpbGVzIG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ2Zvcm1EYXRhXFwnIHBhcmFtZXRlcnMgb2YgdHlwZSBcXCdmaWxlXFwnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSByZXEuZmlsZXNbdGhpcy5uYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLmJvZHkpKSB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEuYm9keSBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdmb3JtRGF0YVxcJyBwYXJhbWV0ZXJzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhbHVlID0gcmVxLmJvZHlbdGhpcy5uYW1lXTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgJ2hlYWRlcic6XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLmhlYWRlcnMpKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5oZWFkZXJzIG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ2hlYWRlclxcJyBwYXJhbWV0ZXJzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWx1ZSA9IGhlbHBlcnMuZ2V0SGVhZGVyVmFsdWUocmVxLmhlYWRlcnMsIHRoaXMubmFtZSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgJ3BhdGgnOlxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlcS5vcmlnaW5hbFVybCkgJiYgXy5pc1VuZGVmaW5lZChyZXEudXJsKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEub3JpZ2luYWxVcmwgb3IgcmVxLnVybCBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdwYXRoXFwnIHBhcmFtZXRlcnMnKTtcbiAgICB9XG5cbiAgICBwYXRoTWF0Y2ggPSB0aGlzLnBhdGhPYmplY3QucmVnZXhwLmV4ZWMocGFyc2VVcmwocmVxLm9yaWdpbmFsVXJsIHx8IHJlcS51cmwpLnBhdGhuYW1lKTtcblxuICAgIGlmIChwYXRoTWF0Y2gpIHtcbiAgICAgIC8vIGRlY29kZSBVUkkgY29tcG9uZW50IGhlcmUgdG8gYXZvaWQgaXNzdWVzIHdpdGggZW5jb2RlZCBzbGFzaGVzXG4gICAgICB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChwYXRoTWF0Y2hbXy5maW5kSW5kZXgodGhpcy5wYXRoT2JqZWN0LnJlZ2V4cC5rZXlzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkubmFtZSA9PT0gdGhhdC5uYW1lO1xuICAgICAgfSkgKyAxXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlICdxdWVyeSc6XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLnF1ZXJ5KSkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEucXVlcnkgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwncXVlcnlcXCcgcGFyYW1ldGVycycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsdWUgPSBfLmdldChyZXEucXVlcnksIHRoaXMubmFtZSk7XG5cbiAgICBicmVhaztcblxuICAgIC8vIG5vIGRlZmF1bHRcbiAgfVxuXG4gIHJldHVybiBuZXcgUGFyYW1ldGVyVmFsdWUodGhpcywgdmFsdWUpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQYXJhbWV0ZXI7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIEpzb25SZWZzID0gcmVxdWlyZSgnanNvbi1yZWZzJyk7XG52YXIgT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9vcGVyYXRpb24nKTtcbnZhciBQYXJhbWV0ZXIgPSByZXF1aXJlKCcuL3BhcmFtZXRlcicpO1xudmFyIHBhdGhUb1JlZ2V4cCA9IHJlcXVpcmUoJ3BhdGgtdG8tcmVnZXhwJyk7XG52YXIgc3VwcG9ydGVkSHR0cE1ldGhvZHMgPSByZXF1aXJlKCdzd2FnZ2VyLW1ldGhvZHMnKTtcblxuLyoqXG4gKiBUaGUgUGF0aCBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogW09wZW5BUEkgUGF0aCBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3BhdGhJdGVtT2JqZWN0KS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LkFwaURlZmluaXRpb259IGFwaURlZmluaXRpb24gLSBUaGUgYEFwaURlZmluaXRpb25gIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5BcGlEZWZpbml0aW9ufSBhcGlEZWZpbml0aW9uIC0gVGhlIGBBcGlEZWZpbml0aW9uYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IG9wZXJhdGlvbk9iamVjdHMgLSBUaGUgYE9wZXJhdGlvbmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXJhbWV0ZXJbXX0gcGFyYW1ldGVyT2JqZWN0cyAtIFRoZSBwYXRoLWxldmVsIGBQYXJhbWV0ZXJgIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtwdHJ9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7cmVnZXhwfSByZWdleHAgLSBUaGUgYFJlZ0V4cGAgdXNlZCB0byBtYXRjaCByZXF1ZXN0IHBhdGhzIGFnYWluc3QgdGhpcyBwYXRoXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhdGggKGFwaURlZmluaXRpb24sIHBhdGgsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIHZhciBiYXNlUGF0aFByZWZpeCA9IGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuYmFzZVBhdGggfHwgJy8nO1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBzYW5pdGl6ZWRQYXRoO1xuXG4gIC8vIFRPRE86IFdlIGNvdWxkL3Nob3VsZCByZWZhY3RvciB0aGlzIHRvIHVzZSB0aGUgcGF0aCBtb2R1bGVcblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgYmFzZVBhdGhQcmVmaXggc28gd2UgZG8gbm90IGVuZCB1cCB3aXRoIGRvdWJsZSBzbGFzaGVzXG4gIGlmIChiYXNlUGF0aFByZWZpeC5jaGFyQXQoYmFzZVBhdGhQcmVmaXgubGVuZ3RoIC0gMSkgPT09ICcvJykge1xuICAgIGJhc2VQYXRoUHJlZml4ID0gYmFzZVBhdGhQcmVmaXguc3Vic3RyaW5nKDAsIGJhc2VQYXRoUHJlZml4Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgLy8gQ29udmVydHMgT3BlbkFQSSBwYXJhbWV0ZXJzIHRvIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycywgYW5kIGFsc28gZXNjYXBlcyBhbGwgcGF0aC10by1yZWdleHAgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gIC8vXG4gIC8vIEBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waWxsYXJqcy9wYXRoLXRvLXJlZ2V4cC9pc3N1ZXMvNzYjaXNzdWVjb21tZW50LTIxOTA4NTM1N1xuICBzYW5pdGl6ZWRQYXRoID0gYmFzZVBhdGhQcmVmaXggKyBwYXRoLnJlcGxhY2UoJygnLCAnXFxcXCgnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyknLCAnXFxcXCknKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJzonLCAnXFxcXDonKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyonLCAnXFxcXConKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJysnLCAnXFxcXCsnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJz8nLCAnXFxcXD8nKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnOicpIC8vIE9wZW5BUEkgLT4gRXhwcmVzcy1zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcfS9nLCAnJyk7IC8vIE9wZW5BUEkgLT4gRXhwcmVzcy1zdHlsZVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuYXBpRGVmaW5pdGlvbiA9IGFwaURlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5wYXRoID0gcGF0aDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG4gIHRoaXMucmVnZXhwID0gcGF0aFRvUmVnZXhwKHNhbml0aXplZFBhdGgsIHtzZW5zaXRpdmU6IHRydWV9KTtcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllcyBmcm9tIHRoZSBPcGVuQVBJIFBhdGggT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5hcGlEZWZpbml0aW9uLl9kZWJ1ZztcblxuICB0aGlzLl9kZWJ1ZygnICAgICVzJywgdGhpcy5wYXRoKTtcblxuICB0aGlzLnBhcmFtZXRlck9iamVjdHMgPSBfLm1hcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAocGFyYW1EZWYsIGluZGV4KSB7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuXG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXIodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBfLmdldChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbURlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0aCk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICBPcGVyYXRpb25zOicpO1xuXG4gIHRoaXMub3BlcmF0aW9uT2JqZWN0cyA9IF8ucmVkdWNlKGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBmdW5jdGlvbiAob3BlcmF0aW9ucywgb3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICB2YXIgb1BhdGggPSBwYXRoVG9EZWZpbml0aW9uLmNvbmNhdChtZXRob2QpO1xuXG4gICAgaWYgKHN1cHBvcnRlZEh0dHBNZXRob2RzLmluZGV4T2YobWV0aG9kKSA+IC0xKSB7XG4gICAgICBvcGVyYXRpb25zLnB1c2gobmV3IE9wZXJhdGlvbih0aGF0LCBtZXRob2QsIF8uZ2V0KGFwaURlZmluaXRpb24uZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgb1BhdGgpLCBvcGVyYXRpb25EZWYsIG9QYXRoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnM7XG4gIH0sIFtdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbiBmb3IgdGhpcyBwYXRoIGFuZCBvcGVyYXRpb24gaWQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBpZCBvciBtZXRob2RcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGggYW5kIG1ldGhvZCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub1xuICogb3BlcmF0aW9uIGZvciB0aGUgcHJvdmlkZWQgbWV0aG9kXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbiA9IGZ1bmN0aW9uIChpZE9yTWV0aG9kKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5vcGVyYXRpb25PYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9uT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9wZXJhdGlvbk9iamVjdC5vcGVyYXRpb25JZCA9PT0gaWRPck1ldGhvZCB8fCBvcGVyYXRpb25PYmplY3QubWV0aG9kID09PSBpZE9yTWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcGF0aC5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGhcbiAqL1xuUGF0aC5wcm90b3R5cGUuZ2V0T3BlcmF0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMub3BlcmF0aW9uT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBvcGVyYXRpb25zIGZvciB0aGlzIHBhdGggYW5kIHRhZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gVGhlIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoaXMgcGF0aCBhbmQgdGFnXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbnNCeVRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMub3BlcmF0aW9uT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbk9iamVjdCkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKG9wZXJhdGlvbk9iamVjdC50YWdzLCB0YWcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIHBhdGguXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhpcyBwYXRoXG4gKi9cblBhdGgucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhdGg7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIganNvblZhbGlkYXRvciA9IGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpO1xudmFyIEpzb25SZWZzID0gcmVxdWlyZSgnanNvbi1yZWZzJyk7XG52YXIgWUFNTCA9IHJlcXVpcmUoJ2pzLXlhbWwnKTtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBSZXNwb25zZSBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogW09wZW5BUEkgUmVzcG9uc2UgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNyZXNwb25zZU9iamVjdCkuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXNDb2RlIC0gVGhlIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSByZXNwb25zZSBkZWZpbml0aW9uICooVGhlIHJhdyByZXNwb25zZSBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcmVzcG9uc2UgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gKihUaGUgcmF3IHJlc3BvbnNlZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBPcGVyYXRpb24gb2JqZWN0XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHJlc3BvbnNlIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0dXNDb2RlIC0gVGhlIHN0YXR1cyBjb2RlXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFJlc3BvbnNlIChvcGVyYXRpb25PYmplY3QsIHN0YXR1c0NvZGUsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5vcGVyYXRpb25PYmplY3QgPSBvcGVyYXRpb25PYmplY3Q7XG4gIHRoaXMucGF0aFRvRGVmaW5pdGlvbiA9IHBhdGhUb0RlZmluaXRpb247XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIE9wZW5BUEkgUmVzcG9uc2UgT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMub3BlcmF0aW9uT2JqZWN0LnBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5fZGVidWcoJyAgICAgICAgICAgICVzIGF0ICVzJywgc3RhdHVzQ29kZSwgdGhpcy5wdHIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGV4YW1wbGUgZm9yIHRoZSBtaW1lLXR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttaW1lVHlwZV0gLSBUaGUgbWltZSB0eXBlXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHJlc3BvbnNlIGV4YW1wbGUgYXMgYSBzdHJpbmcgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHJlc3BvbnNlIGNvZGUgYW5kL29yIG1pbWUtdHlwZSBpcyBtaXNzaW5nXG4gKi9cblJlc3BvbnNlLnByb3RvdHlwZS5nZXRFeGFtcGxlID0gZnVuY3Rpb24gKG1pbWVUeXBlKSB7XG4gIHZhciBleGFtcGxlO1xuXG4gIGlmIChfLmlzUGxhaW5PYmplY3QodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5leGFtcGxlcykpIHtcbiAgICBleGFtcGxlID0gdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5leGFtcGxlc1ttaW1lVHlwZV07XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQoZXhhbXBsZSkgJiYgIV8uaXNTdHJpbmcoZXhhbXBsZSkpIHtcbiAgICBpZiAobWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgZXhhbXBsZSA9IEpTT04uc3RyaW5naWZ5KGV4YW1wbGUsIG51bGwsIDIpO1xuICAgIH0gZWxzZSBpZiAobWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXlhbWwnKSB7XG4gICAgICBleGFtcGxlID0gWUFNTC5zYWZlRHVtcChleGFtcGxlLCB7aW5kZW50OiAyfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGU7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBzYW1wbGUgdmFsdWUuXG4gKlxuICogQHJldHVybnMgeyp9IFRoZSBzYW1wbGUgdmFsdWUgZm9yIHRoZSByZXNwb25zZSwgd2hpY2ggY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgcmVzcG9uc2Ugc2NoZW1hIGlzIG5vdCBwcm92aWRlZFxuICovXG5SZXNwb25zZS5wcm90b3R5cGUuZ2V0U2FtcGxlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGVscGVycy5nZXRTYW1wbGUodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEpO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuU2VydmVyUmVzcG9uc2VXcmFwcGVyfSByZXMgLSBUaGUgcmVzcG9uc2Ugb3IgcmVzcG9uc2UgbGlrZSBvYmplY3RcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuUmVzcG9uc2VWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5SZXNwb25zZS5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIGJvZHlWYWx1ZTtcbiAgdmFyIGJ2UmVzdWx0cztcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMuaGVhZGVycykpIHtcbiAgICByZXMuaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIENvbnRlbnQtVHlwZSBleGNlcHQgZm9yIHZvaWQgcmVzcG9uc2VzLCAyMDQgcmVzcG9uc2VzIGFuZCAzMDQgcmVzcG9uc2VzIGFzIHRoZXkgaGF2ZSBubyBib2R5XG4gIGlmICh0aGlzLm9wZXJhdGlvbk9iamVjdC5wcm9kdWNlcy5sZW5ndGggPiAwICYmICFfLmlzVW5kZWZpbmVkKHJlcy5ib2R5KSAmJlxuICAgICAgICAhXy5pc1VuZGVmaW5lZCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSkgJiYgXy5pbmRleE9mKFsnMjA0JywgJzMwNCddLCB0aGlzLnN0YXR1c0NvZGUpID09PSAtMSkge1xuICAgIGhlbHBlcnMudmFsaWRhdGVDb250ZW50VHlwZShoZWxwZXJzLmdldENvbnRlbnRUeXBlKHJlcy5oZWFkZXJzKSwgdGhpcy5vcGVyYXRpb25PYmplY3QucHJvZHVjZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGhlYWRlcnNcbiAgXy5mb3JFYWNoKHRoaXMuaGVhZGVycywgZnVuY3Rpb24gKHNjaGVtYSwgbmFtZSkge1xuICAgIHZhciBoZWFkZXJWYWx1ZTtcbiAgICB2YXIgaHZSZXN1bHRzO1xuXG4gICAgdHJ5IHtcbiAgICAgIGhlYWRlclZhbHVlID0gaGVscGVycy5jb252ZXJ0VmFsdWUoc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkZvcm1hdDogc2NoZW1hLmNvbGxlY3Rpb25Gb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3Zlcmx5IGNhdXRpb3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV0gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmhlYWRlcnNbbmFtZV0gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmRlZmF1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFU1BPTlNFX0hFQURFUicsXG4gICAgICAgIGVycm9yczogZXJyLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIHBhdGg6IGVyci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBoZWFkZXIgKCcgKyBuYW1lICsgJyk6ICcgKyBlcnIubWVzc2FnZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcGF0aDogZXJyLnBhdGhcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIER1ZSB0byBhbWJpZ3VpdHkgaW4gdGhlIFN3YWdnZXIgMi4wIFNwZWNpZmljYXRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvaXNzdWVzLzMyMSksIGl0XG4gICAgLy8gaXMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhIHRvIGRvIHJlcXVpcmVkbmVzcyBjaGVja3MgZm9yIHJlc3BvbnNlIGhlYWRlcnMuICBUaGlzIG1lYW5zIHdlIHdpbGwgdmFsaWRhdGVcbiAgICAvLyBleGlzdGluZyBoZWFkZXJzIGJ1dCB3aWxsIG5vdCB0aHJvdyBhbiBlcnJvciBpZiBhIGhlYWRlciBpcyBkZWZpbmVkIGluIGEgcmVzcG9uc2Ugc2NoZW1hIGJ1dCBub3QgaW4gdGhlIHJlc3BvbnNlLlxuICAgIC8vXG4gICAgLy8gV2UgYWxzbyBkbyBub3Qgd2FudCB0byB2YWxpZGF0ZSBkYXRlIG9iamVjdHMgYmVjYXVzZSBpdCBpcyByZWR1bmRhbnQuICBJZiB3ZSBoYXZlIGFscmVhZHkgY29udmVydGVkIHRoZSB2YWx1ZVxuICAgIC8vIGZyb20gYSBzdHJpbmcrZm9ybWF0IHRvIGEgZGF0ZSwgd2Uga25vdyBpdCBwYXNzZXMgc2NoZW1hIHZhbGlkYXRpb24uXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGhlYWRlclZhbHVlKSAmJiAhXy5pc0RhdGUoaGVhZGVyVmFsdWUpKSB7XG4gICAgICBodlJlc3VsdHMgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShqc29uVmFsaWRhdG9yLCBzY2hlbWEsIGhlYWRlclZhbHVlKTtcblxuICAgICAgaWYgKGh2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9IRUFERVInLFxuICAgICAgICAgIGVycm9yczogaHZSZXN1bHRzLmVycm9ycyxcbiAgICAgICAgICAvLyBSZXBvcnQgdGhlIGFjdHVhbCBlcnJvciBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4gIE90aGVyd2lzZSwgcmVwb3J0IGEgSlNPTiBTY2hlbWFcbiAgICAgICAgICAvLyB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGhlYWRlciAoJyArIG5hbWUgKyAnKTogJyArIChodlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDEgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZmFpbGVkIEpTT04gU2NoZW1hIHZhbGlkYXRpb24nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZSZXN1bHRzLmVycm9yc1swXS5tZXNzYWdlKSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHBhdGg6IFtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgcmVzcG9uc2UgZm9yIG5vbi12b2lkIHJlc3BvbnNlc1xuICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEpICYmIF8uaW5kZXhPZihbJzIwNCcsICczMDQnXSwgdGhpcy5zdGF0dXNDb2RlKSA9PT0gLTEpIHtcbiAgICB0cnkge1xuICAgICAgYm9keVZhbHVlID0gaGVscGVycy5jb252ZXJ0VmFsdWUodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEsIHtcbiAgICAgICAgZW5jb2Rpbmc6IHJlcy5lbmNvZGluZ1xuICAgICAgfSwgcmVzLmJvZHkpO1xuICAgICAgYnZSZXN1bHRzID0gaGVscGVycy52YWxpZGF0ZUFnYWluc3RTY2hlbWEoanNvblZhbGlkYXRvciwgdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEsIGJvZHlWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBidlJlc3VsdHMgPSB7XG4gICAgICAgIGVycm9yczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6IGVyci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICBwYXRoOiBlcnIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoYnZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0lOVkFMSURfUkVTUE9OU0VfQk9EWScsXG4gICAgICAgIGVycm9yczogYnZSZXN1bHRzLmVycm9ycyxcbiAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgYm9keTogJyArIChidlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDEgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2UmVzdWx0cy5lcnJvcnNbMF0ubWVzc2FnZSksXG4gICAgICAgIHBhdGg6IFtdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzdHJpY3QgbW9kZVxuICBoZWxwZXJzLnZhbGlkYXRlU3RyaWN0TW9kZSh0aGlzLCByZXMsIG9wdGlvbnMuc3RyaWN0TW9kZSwgcmVzdWx0cyk7XG5cbiAgLy8gUHJvY2VzcyBjdXN0b20gdmFsaWRhdG9yc1xuICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHJlcywgdGhpcywgb3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCByZXN1bHRzKTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2U7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xudmFyIEJhc2U2NCA9IHJlcXVpcmUoJ2pzLWJhc2U2NCcpO1xuXG4vLyBEdWUgdG8gdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBub2RlLmpzIGFuZCB0aGUgYnJvd3NlciB1c2UganMtYmFzZTY0LCB3ZSBuZWVkIHRoaXMgaGFja1xuaWYgKHR5cGVvZiBCYXNlNjQuQmFzZTY0ICE9PSAndW5kZWZpbmVkJykge1xuICBCYXNlNjQgPSBCYXNlNjQuQmFzZTY0O1xufVxuXG4vKipcbiAqIFdlIGhhdmUgdG8gZmlsdGVyIHRoZSBzY2hlbWEgdG8gYXZvaWQgYSBtYXhpbXVtIGNhbGxzdGFjayBpc3N1ZSBieSBkZWxldGluZyB0aGUgZm9ybWF0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWEgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIGZpbHRlcmVkIHNjaGVtYVxuICovXG5mdW5jdGlvbiBmaWx0ZXJTY2hlbWEgKHNjaGVtYSkge1xuICB2YXIgY1NjaGVtYSA9IF8uY2xvbmVEZWVwKHNjaGVtYSk7XG5cbiAgZGVsZXRlIGNTY2hlbWEuZm9ybWF0O1xuXG4gIHJldHVybiBjU2NoZW1hO1xufVxuXG4vLyBCdWlsZCB0aGUgbGlzdCBvZiBjdXN0b20gSlNPTiBTY2hlbWEgZ2VuZXJhdG9yIGZvcm1hdHNcbm1vZHVsZS5leHBvcnRzLmJ5dGUgPSBmdW5jdGlvbiAobW9ja2VyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgcmV0dXJuIEJhc2U2NC5lbmNvZGUobW9ja2VyKGZpbHRlclNjaGVtYShzY2hlbWEpKSk7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5wYXNzd29yZCA9IGZ1bmN0aW9uIChtb2NrZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgICByZXR1cm4gbW9ja2VyKGZpbHRlclNjaGVtYShzY2hlbWEpKTtcbiAgfVxufTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbmZ1bmN0aW9uIHJldHVyblRydWUgKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMuaW50MzIgPSBtb2R1bGUuZXhwb3J0cy5pbnQ2NCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgLy8gei1zY2hlbWEgc2VlbXMgdG8gY29udGludWUgcHJvY2Vzc2luZyB0aGUgZm9ybWF0IGV2ZW4gd2hlbiB0aGUgdHlwZSBpcyBrbm93biB0byBiZSBpbnZhbGlkIHNvIHdlIG11c3QgZG8gYSB0eXBlXG4gIC8vIGNoZWNrIHByaW9yIHRvIHZhbGlkYXRpbmcgdGhpcyBmb3JtYXQuXG4gIHJldHVybiBfLmlzTnVtYmVyKHZhbCkgJiYgdmFsICUgMSA9PT0gMDtcbn07XG5cbi8vIFRoZXNlIGZvcm1hdCB2YWxpZGF0b3JzIHdpbGwgYWx3YXlzIHJldHVybiAndHJ1ZScgYmVjYXVzZSB0aGV5IGFyZSBhbHJlYWR5IHR5cGUgdmFsaWQgYW5kIHRoZXJlIGFyZSBubyBjb25zdHJhaW50c1xuLy8gb24gdGhlIGZvcm1hdCB0aGF0IHdvdWxkIHByb2R1Y2UgYW4gaW52YWxpZCB2YWx1ZS5cbm1vZHVsZS5leHBvcnRzLmJ5dGUgPSByZXR1cm5UcnVlO1xubW9kdWxlLmV4cG9ydHMuZG91YmxlID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLmZsb2F0ID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLnBhc3N3b3JkID0gcmV0dXJuVHJ1ZTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9IHJlcXVpcmUoJ2pzb24tcmVmcycpO1xudmFyIHN1cHBvcnRlZEh0dHBNZXRob2RzID0gcmVxdWlyZSgnc3dhZ2dlci1tZXRob2RzJyk7XG52YXIgc3dhZ2dlclNjaGVtYSA9IHJlcXVpcmUoJ3N3YWdnZXItc2NoZW1hLW9mZmljaWFsL3NjaGVtYScpO1xuXG5mdW5jdGlvbiBnZXRTY2hlbWFQcm9wZXJ0aWVzIChzY2hlbWEpIHtcbiAgdmFyIHByb3BlcnRpZXMgPSBfLmtleXMoc2NoZW1hLnByb3BlcnRpZXMpOyAvLyBTdGFydCB3aXRoIHRoZSBkZWZpbmVkIHByb3BlcnRpZXNcblxuICAvLyBBZGQgcHJvcGVydGllcyBkZWZpbmVkIGluIHRoZSBwYXJlbnRcbiAgXy5mb3JFYWNoKHNjaGVtYS5hbGxPZiwgZnVuY3Rpb24gKHBhcmVudCkge1xuICAgIF8uZm9yRWFjaChnZXRTY2hlbWFQcm9wZXJ0aWVzKHBhcmVudCksIGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgaWYgKF8uaW5kZXhPZihwcm9wZXJ0aWVzLCBwcm9wZXJ0eSkgPT09IC0xKSB7XG4gICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5mdW5jdGlvbiB3YWxrU2NoZW1hIChhcGksIGJsYWNrbGlzdCwgc2NoZW1hLCBwYXRoLCBoYW5kbGVycywgcmVzcG9uc2UpIHtcbiAgdmFyIHR5cGUgPSBzY2hlbWEudHlwZSB8fCAnb2JqZWN0JztcblxuICBmdW5jdGlvbiBzaG91bGRTa2lwIChjUGF0aCkge1xuICAgIHJldHVybiBfLmluZGV4T2YoYmxhY2tsaXN0LCBKc29uUmVmcy5wYXRoVG9QdHIoY1BhdGgpKSA+IC0xO1xuICB9XG5cbiAgLy8gRG8gbm90IHByb2Nlc3MgaXRlbXMgaW4gdGhlIGJsYWNrbGlzdCBhcyB0aGV5J3ZlIGJlZW4gcHJvY2Vzc2VkIGFscmVhZHlcbiAgaWYgKHNob3VsZFNraXAocGF0aCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3YWxrZXIgKHBTY2hlbWEsIHBQYXRoKSB7XG4gICAgLy8gRG8gbm90IHByb2Nlc3MgaXRlbXMgaW4gdGhlIGJsYWNrbGlzdCBhcyB0aGV5J3ZlIGJlZW4gcHJvY2Vzc2VkIGFscmVhZHlcbiAgICBpZiAoc2hvdWxkU2tpcChwUGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfLmZvckVhY2gocFNjaGVtYSwgZnVuY3Rpb24gKGl0ZW0sIG5hbWUpIHtcbiAgICAgIGlmIChfLmlzTnVtYmVyKG5hbWUpKSB7XG4gICAgICAgIG5hbWUgPSBuYW1lLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIGl0ZW0sIHBQYXRoLmNvbmNhdChuYW1lKSwgaGFuZGxlcnMsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEuc2NoZW1hKSkge1xuICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHNjaGVtYS5zY2hlbWEsIHBhdGguY29uY2F0KCdzY2hlbWEnKSwgaGFuZGxlcnMsIHJlc3BvbnNlKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXknICYmICFfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykpIHtcbiAgICBpZiAoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgIHdhbGtlcihzY2hlbWEuaXRlbXMsIHBhdGguY29uY2F0KCdpdGVtcycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgc2NoZW1hLml0ZW1zLCBwYXRoLmNvbmNhdCgnaXRlbXMnKSwgaGFuZGxlcnMsIHJlc3BvbnNlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSkge1xuICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBwYXRoLmNvbmNhdCgnYWRkaXRpb25hbFByb3BlcnRpZXMnKSwgaGFuZGxlcnMsIHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBfLmZvckVhY2goWydhbGxPZicsICdwcm9wZXJ0aWVzJ10sIGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIHdhbGtlcihzY2hlbWFbcHJvcE5hbWVdLCBwYXRoLmNvbmNhdChwcm9wTmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKGhhbmRsZXJzLCBmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgIGhhbmRsZXIoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSByZXNvbHZlZCBPcGVuQVBJIERlZmluaXRpb24gYWdhaW5zdCB0aGUgT3BlbkFQSSAzLnggSlNPTiBTY2hlbWEuXG4gKlxuICogQHBhcmFtIHtBcGlEZWZpbml0aW9ufSBhcGlEZWZpbml0aW9uIC0gVGhlIGBBcGlEZWZpbml0aW9uYCBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZSAoYXBpRGVmaW5pdGlvbikge1xuICB2YXIgcmVzdWx0cyA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YWdnZXJTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgLy8gTWFrZSBjb21wbGV4IEpTT04gU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIGVhc2llciB0byB1bmRlcnN0YW5kIChJc3N1ZSAxNSlcbiAgcmVzdWx0cy5lcnJvcnMgPSByZXN1bHRzLmVycm9ycy5tYXAoZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgdmFyIGRlZlR5cGUgPSBbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJywgJ2l0ZW1zJ10uaW5kZXhPZihlcnJvci5wYXRoW2Vycm9yLnBhdGgubGVuZ3RoIC0gMV0pID4gLTEgP1xuICAgICAgICAgICdzY2hlbWEnIDpcbiAgICAgICAgICBlcnJvci5wYXRoW2Vycm9yLnBhdGgubGVuZ3RoIC0gMl07XG5cbiAgICBpZiAoWydBTllfT0ZfTUlTU0lORycsICdPTkVfT0ZfTUlTU0lORyddLmluZGV4T2YoZXJyb3IuY29kZSkgPiAtMSkge1xuICAgICAgc3dpdGNoIChkZWZUeXBlKSB7XG4gICAgICBjYXNlICdwYXJhbWV0ZXJzJzpcbiAgICAgICAgZGVmVHlwZSA9ICdwYXJhbWV0ZXInO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzcG9uc2VzJzpcbiAgICAgICAgZGVmVHlwZSA9ICdyZXNwb25zZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgICBkZWZUeXBlICs9ICcgJyArIGVycm9yLnBhdGhbZXJyb3IucGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG5cbiAgICAgIGVycm9yLm1lc3NhZ2UgPSAnTm90IGEgdmFsaWQgJyArIGRlZlR5cGUgKyAnIGRlZmluaXRpb24nO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcjtcbiAgfSk7XG5cbiAgLy8gVHJlYXQgaW52YWxpZC9taXNzaW5nIHJlZmVyZW5jZXMgYXMgc3RydWN0dXJhbCBlcnJvcnNcbiAgXy5lYWNoKGFwaURlZmluaXRpb24ucmVmZXJlbmNlcywgZnVuY3Rpb24gKHJlZkRldGFpbHMsIHJlZlB0cikge1xuICAgIHZhciByZWZQYXRoID0gSnNvblJlZnMucGF0aEZyb21QdHIocmVmUHRyKTtcbiAgICB2YXIgZXJyO1xuXG4gICAgaWYgKHJlZkRldGFpbHMubWlzc2luZykge1xuICAgICAgZXJyID0ge1xuICAgICAgICBjb2RlOiAnVU5SRVNPTFZBQkxFX1JFRkVSRU5DRScsXG4gICAgICAgIG1lc3NhZ2U6ICdSZWZlcmVuY2UgY291bGQgbm90IGJlIHJlc29sdmVkOiAnICsgcmVmRGV0YWlscy51cmksXG4gICAgICAgIHBhdGg6IHJlZlBhdGguY29uY2F0KCckcmVmJylcbiAgICAgIH07XG5cbiAgICAgIGlmIChfLmhhcyhyZWZEZXRhaWxzLCAnZXJyb3InKSkge1xuICAgICAgICBlcnIuZXJyb3IgPSByZWZEZXRhaWxzLmVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKGVycik7XG4gICAgfSBlbHNlIGlmIChyZWZEZXRhaWxzLnR5cGUgPT09ICdpbnZhbGlkJykge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFRkVSRU5DRScsXG4gICAgICAgIG1lc3NhZ2U6IHJlZkRldGFpbHMuZXJyb3IgfHwgJ0ludmFsaWQgSlNPTiBSZWZlcmVuY2UnLFxuICAgICAgICBwYXRoOiByZWZQYXRoLmNvbmNhdCgnJHJlZicpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKF8uaGFzKHJlZkRldGFpbHMsICd3YXJuaW5nJykpIHtcbiAgICAgIC8vIGpzb24tcmVmcyBvbmx5IGNyZWF0ZXMgd2FybmluZ3MgZm9yIEpTT04gUmVmZXJlbmNlcyB3aXRoIHN1cGVyZmx1b3VzIHByb3BlcnRpZXMgd2hpY2ggd2lsbCBiZSBpZ25vcmVkXG4gICAgICByZXN1bHRzLndhcm5pbmdzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRVhUUkFfUkVGRVJFTkNFX1BST1BFUlRJRVMnLFxuICAgICAgICBtZXNzYWdlOiByZWZEZXRhaWxzLndhcm5pbmcsXG4gICAgICAgIHBhdGg6IHJlZlBhdGhcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qIFNjaGVtYSBPYmplY3QgVmFsaWRhdG9ycyAqL1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUFycmF5VHlwZUl0ZW1zRXhpc3RlbmNlIChhcGksIHJlc3BvbnNlLCBzY2hlbWEsIHBhdGgpIHtcbiAgaWYgKHNjaGVtYS50eXBlID09PSAnYXJyYXknICYmIF8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSkge1xuICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgIGNvZGU6ICdPQkpFQ1RfTUlTU0lOR19SRVFVSVJFRF9QUk9QRVJUWScsXG4gICAgICBtZXNzYWdlOiAnTWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eTogaXRlbXMnLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGVmYXVsdFZhbHVlIChhcGksIHJlc3BvbnNlLCBzY2hlbWEsIHBhdGgpIHtcbiAgdmFyIHJlc3VsdDtcblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLmRlZmF1bHQpKSB7XG4gICAgcmVzdWx0ID0gaGVscGVycy52YWxpZGF0ZUFnYWluc3RTY2hlbWEoaGVscGVycy5nZXRKU09OU2NoZW1hVmFsaWRhdG9yKCksIHNjaGVtYSwgc2NoZW1hLmRlZmF1bHQpO1xuXG4gICAgXy5mb3JFYWNoKHJlc3VsdC5lcnJvcnMsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgZXJyb3IucGF0aCA9IHBhdGguY29uY2F0KGVycm9yLnBhdGguY29uY2F0KCdkZWZhdWx0JykpO1xuXG4gICAgICByZXNwb25zZS5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgfSk7XG5cbiAgICBfLmZvckVhY2gocmVzdWx0Lndhcm5pbmdzLCBmdW5jdGlvbiAod2FybmluZykge1xuICAgICAgd2FybmluZy5wYXRoID0gcGF0aC5jb25jYXQod2FybmluZy5wYXRoLnB1c2goJ2RlZmF1bHQnKSk7XG5cbiAgICAgIHJlc3BvbnNlLndhcm5pbmdzLnB1c2god2FybmluZyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWFQcm9wZXJ0aWVzIChhcGksIHJlc3BvbnNlLCBzY2hlbWEsIHBhdGgpIHtcbiAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShzY2hlbWEucmVxdWlyZWQgfHwgW10sIGdldFNjaGVtYVByb3BlcnRpZXMoc2NoZW1hKSksIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgY29kZTogJ09CSkVDVF9NSVNTSU5HX1JFUVVJUkVEX1BST1BFUlRZX0RFRklOSVRJT04nLFxuICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgZGVmaW5pdGlvbjogJyArIG5hbWUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbGwgcmVmZXJlbmNlcy5cbiAqXG4gKiAqIElkZW50aWZpZXMgY2lyY3VsYXIgaW5oZXJpdGFuY2UgcmVmZXJlbmNlc1xuICogKiBJZGVudGlmaWVzIHVucmVmZXJlbmNlZCByZWZlcmVuY2VhYmxlIGRlZmluaXRpb25zXG4gKiAqIElkZW50aWZpZXMgdW5yZXNvbHZhYmxlIHJlZmVyZW5jZXNcbiAqXG4gKiBAcGFyYW0ge0FwaURlZmluaXRpb259IGFwaURlZmluaXRpb24gLSBUaGUgYEFwaURlZmluaXRpb25gIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUmVmZXJlbmNlcyAoYXBpRGVmaW5pdGlvbikge1xuICB2YXIgZG9jUmVmZXJlbmNlcyA9IHt9O1xuICB2YXIgaW5oZXJpdGFuY2VEZXRhaWxzID0ge307XG4gIHZhciByZWZlcmVuY2VhYmxlID0gW107XG4gIHZhciByZWZlcmVuY2VzID0ge307XG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZEFuY2VzdG9yIChkc2MsIGFuYykge1xuICAgIGlmICghXy5oYXMoaW5oZXJpdGFuY2VEZXRhaWxzLCBkc2MpKSB7XG4gICAgICBpbmhlcml0YW5jZURldGFpbHNbZHNjXSA9IHtcbiAgICAgICAgbGluZWFnZTogW10sXG4gICAgICAgIHBhcmVudHM6IFtcbiAgICAgICAgICBhbmNcbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5oZXJpdGFuY2VEZXRhaWxzW2RzY10ucGFyZW50cy5wdXNoKGFuYyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkUmVmZXJlbmNlIChyZWYsIHB0cikge1xuICAgIGlmIChfLmluZGV4T2YocmVmZXJlbmNlcywgcmVmKSA9PT0gLTEpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlZmVyZW5jZXNbcmVmXSkpIHtcbiAgICAgICAgcmVmZXJlbmNlc1tyZWZdID0gW107XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCByZWZlcmVuY2VzIHRvIGFuY2VzdG9yc1xuICAgICAgaWYgKHJlZi5pbmRleE9mKCdhbGxPZicpID4gLTEpIHtcbiAgICAgICAgYWRkUmVmZXJlbmNlKHJlZi5zdWJzdHJpbmcoMCwgcmVmLmxhc3RJbmRleE9mKCcvYWxsT2YnKSkpO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VzW3JlZl0ucHVzaChwdHIpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVNlY3VyaXR5UHJvY2Vzc29yIChwYXRoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZWN1cml0eSwgaW5kZXgpIHtcbiAgICAgIF8uZm9yRWFjaChzZWN1cml0eSwgZnVuY3Rpb24gKHNjb3BlcywgbmFtZSkge1xuICAgICAgICB2YXIgc2RQYXRoID0gWydzZWN1cml0eURlZmluaXRpb25zJywgbmFtZV07XG4gICAgICAgIHZhciBzZFB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihzZFBhdGgpO1xuICAgICAgICB2YXIgc3JQYXRoID0gcGF0aC5jb25jYXQoW2luZGV4LnRvU3RyaW5nKCksIG5hbWVdKTtcblxuICAgICAgICAvLyBJZGVudGlmeSBtaXNzaW5nIHJlZmVyZW5jZSB0byB0aGUgc2VjdXJpdHkgZGVmaW5pdGlvblxuICAgICAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZWFibGUsIHNkUHRyKSA9PT0gLTEpIHtcbiAgICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiAnVU5SRVNPTFZBQkxFX1JFRkVSRU5DRScsXG4gICAgICAgICAgICBtZXNzYWdlOiAnU2VjdXJpdHkgZGVmaW5pdGlvbiBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICcgKyBuYW1lLFxuICAgICAgICAgICAgcGF0aDogc3JQYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkUmVmZXJlbmNlKHNkUHRyLCBKc29uUmVmcy5wYXRoVG9QdHIoc3JQYXRoKSk7XG5cbiAgICAgICAgICBfLmZvckVhY2goc2NvcGVzLCBmdW5jdGlvbiAoc2NvcGUsIHNJbmRleCkge1xuICAgICAgICAgICAgdmFyIHNzclBhdGggPSBzclBhdGguY29uY2F0KHNJbmRleC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHZhciBzc3JQdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoLmNvbmNhdChbJ3Njb3BlcycsIHNjb3BlXSkpO1xuXG4gICAgICAgICAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZWFibGUsIHNzclB0cikgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnVU5SRVNPTFZBQkxFX1JFRkVSRU5DRScsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1NlY3VyaXR5IHNjb3BlIGRlZmluaXRpb24gY291bGQgbm90IGJlIHJlc29sdmVkOiAnICsgc2NvcGUsXG4gICAgICAgICAgICAgICAgcGF0aDogc3NyUGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFkZFJlZmVyZW5jZShKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoLmNvbmNhdChbJ3Njb3BlcycsIHNjb3BlXSkpLCBzc3JQdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd2Fsa0xpbmVhZ2UgKHJvb3QsIGlkLCBsaW5lYWdlKSB7XG4gICAgdmFyIGRldGFpbHMgPSBpbmhlcml0YW5jZURldGFpbHNbaWQgfHwgcm9vdF07XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgXy5lYWNoKGRldGFpbHMucGFyZW50cywgZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICBsaW5lYWdlLnB1c2gocGFyZW50KTtcblxuICAgICAgICBpZiAocm9vdCAhPT0gcGFyZW50KSB7XG4gICAgICAgICAgd2Fsa0xpbmVhZ2Uocm9vdCwgcGFyZW50LCBsaW5lYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWRlbnRpZnkgcmVmZXJlbmNlYWJsZSBkZWZpbml0aW9uc1xuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5kZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoWydkZWZpbml0aW9ucycsIG5hbWVdKSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChkZWYsIG5hbWUpIHtcbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKFsncGFyYW1ldGVycycsIG5hbWVdKSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoWydyZXNwb25zZXMnLCBuYW1lXSkpO1xuICB9KTtcblxuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eURlZmluaXRpb25zLCBmdW5jdGlvbiAoZGVmLCBuYW1lKSB7XG4gICAgdmFyIHNQYXRoID0gWydzZWN1cml0eURlZmluaXRpb25zJywgbmFtZV07XG5cbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKHNQYXRoKSk7XG5cbiAgICBfLmZvckVhY2goZGVmLnNjb3BlcywgZnVuY3Rpb24gKGRlc2NyaXB0aW9uLCBzY29wZSkge1xuICAgICAgdmFyIHB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihzUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKTtcblxuICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBwdHIpID09PSAtMSkge1xuICAgICAgICByZWZlcmVuY2VhYmxlLnB1c2gocHRyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSWRlbnRpZnkgcmVmZXJlbmNlcyBhbmQgYnVpbGQgaW5oZXJpdGFuY2UgbW9kZWxcbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24ucmVmZXJlbmNlcywgZnVuY3Rpb24gKG1ldGFkYXRhLCBwdHIpIHtcbiAgICB2YXIgcHRyUGF0aCA9IEpzb25SZWZzLnBhdGhGcm9tUHRyKHB0cik7XG5cbiAgICBpZiAoIV8uaGFzKG1ldGFkYXRhLCAnbWlzc2luZycpKSB7XG4gICAgICAvLyBUaGlzIHJlZmVyZW5jZSBpcyBhIGRvY3VtZW50IHJlZmVyZW5jZSwgcmVjb3JkIGl0IGZvciBsYXRlclxuICAgICAgaWYgKFsncmVsYXRpdmUnLCAncmVtb3RlJ10uaW5kZXhPZihtZXRhZGF0YS50eXBlKSA+IC0xICYmIG1ldGFkYXRhLmZxVVJJLmluZGV4T2YoJyMnKSA9PT0gLTEpIHtcbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZG9jUmVmZXJlbmNlc1ttZXRhZGF0YS5mcVVSSV0pKSB7XG4gICAgICAgICAgZG9jUmVmZXJlbmNlc1ttZXRhZGF0YS5mcVVSSV0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY1JlZmVyZW5jZXNbbWV0YWRhdGEuZnFVUkldLnB1c2gocHRyKTtcbiAgICAgIH1cblxuICAgICAgYWRkUmVmZXJlbmNlKG1ldGFkYXRhLmZxVVJJLCBwdHIpO1xuXG4gICAgICBpZiAocHRyUGF0aFtwdHJQYXRoLmxlbmd0aCAtIDJdID09PSAnYWxsT2YnKSB7XG4gICAgICAgIGFkZEFuY2VzdG9yKEpzb25SZWZzLnBhdGhUb1B0cihwdHJQYXRoLnNsaWNlKDAsIHB0clBhdGgubGVuZ3RoIC0gMikpLCBtZXRhZGF0YS51cmkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8ganNvbi1yZWZzIG9ubHkgcHJvY2Vzc2VzIGVhY2ggcmVmZXJlbmNlZCBkb2N1bWVudCBvbmNlLCBubyBtYXR0ZXIgaG93IG1hbnkgcGxhY2VzIHRoYXQgZG9jdW1lbnQgaXMgcmVmZXJlbmNlZCBmcm9tLlxuICAvLyBUbyBlbnN1cmUgdGhhdCBhbGwgcGxhY2VzIHdoZXJlIHJlZmVyZW5jZWFibGUgb2JqZWN0cyBhcmUgcmVmZXJlbmNlZCBjYW4gYmUgaWRlbnRpZmllZCwgd2UgbmVlZCBvdCBwb3N0LXByb2Nlc3MgdGhlXG4gIC8vIHJlZmVyZW5jZSBtb2RlbCBjcmVhdGVkIGFib3ZlIGFuZCByZWNvcmQgZWFjaCByZWZlcmVuY2Ugd2l0aGluIGEgcmVsYXRpdmUvcmVtb3RlIGRvY3VtZW50IHJlbGF0aXZlIHRvIHdoZXJlIHRoZVxuICAvLyBjb250YWluaW5nIGRvY3VtZW50IHdhcyByZWZlcmVuY2VkLlxuICByZWZlcmVuY2VzID0gXy5yZWR1Y2UocmVmZXJlbmNlcywgZnVuY3Rpb24gKGFsbFJlZnMsIGZyb20sIHRvKSB7XG4gICAgdmFyIHRvUGFydHMgPSB0by5zcGxpdCgnIycpO1xuXG4gICAgaWYgKHRvUGFydHNbMF0gIT09ICcnICYmIHRvUGFydHNbMV0gIT09ICcnKSB7XG4gICAgICBfLmZvckVhY2goZG9jUmVmZXJlbmNlc1t0b1BhcnRzWzBdXSwgZnVuY3Rpb24gKGRGcm9tKSB7XG4gICAgICAgIGFsbFJlZnNbW2RGcm9tLCB0b1BhcnRzWzFdXS5qb2luKCcnKV0gPSBmcm9tO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbFJlZnNbdG9dID0gZnJvbTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUmVmcztcbiAgfSwge30pO1xuXG4gIC8vIElkZW50aWZ5IGNpcmN1bGFyIGluaGVyaXRhbmNlXG4gIF8uZm9yRWFjaChpbmhlcml0YW5jZURldGFpbHMsIGZ1bmN0aW9uIChkZXRhaWxzLCBwdHIpIHtcbiAgICB3YWxrTGluZWFnZShwdHIsIHVuZGVmaW5lZCwgZGV0YWlscy5saW5lYWdlKTtcblxuICAgIGlmIChkZXRhaWxzLmxpbmVhZ2UubGVuZ3RoID4gMSAmJiBkZXRhaWxzLmxpbmVhZ2VbZGV0YWlscy5saW5lYWdlLmxlbmd0aCAtIDFdID09PSBwdHIgfHxcbiAgICAgICAgZGV0YWlscy5wYXJlbnRzWzBdID09PSBwdHIpIHtcbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0NJUkNVTEFSX0lOSEVSSVRBTkNFJyxcbiAgICAgICAgbGluZWFnZTogW3B0cl0uY29uY2F0KGRldGFpbHMubGluZWFnZSksXG4gICAgICAgIG1lc3NhZ2U6ICdTY2hlbWEgb2JqZWN0IGluaGVyaXRzIGZyb20gaXRzZWxmOiAnICsgcHRyLFxuICAgICAgICBwYXRoOiBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIElkZW50aWZ5IHJlZmVyZW5jZXMgYW5kIHZhbGlkYXRlIG1pc3NpbmcgcmVmZXJlbmNlcyBmb3Igbm9uLUpTT04gUmVmZXJlbmNlcyAoc2VjdXJpdHkpXG4gIF8uZm9yRWFjaChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5LCBjcmVhdGVTZWN1cml0eVByb2Nlc3NvcihbJ3NlY3VyaXR5J10pKTtcblxuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKHBhdGhEZWYsIG5hbWUpIHtcbiAgICB2YXIgcFBhdGggPSBbJ3BhdGhzJywgbmFtZV07XG5cbiAgICBfLmZvckVhY2gocGF0aERlZi5zZWN1cml0eSwgY3JlYXRlU2VjdXJpdHlQcm9jZXNzb3IocFBhdGguY29uY2F0KCdzZWN1cml0eScpKSk7XG5cbiAgICBfLmZvckVhY2gocGF0aERlZiwgZnVuY3Rpb24gKG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBub24tb3BlcmF0aW9uc1xuICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRIdHRwTWV0aG9kcywgbWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfLmZvckVhY2gob3BlcmF0aW9uRGVmLnNlY3VyaXR5LFxuICAgICAgICAgICAgICAgIGNyZWF0ZVNlY3VyaXR5UHJvY2Vzc29yKHBQYXRoLmNvbmNhdChbbWV0aG9kLCAnc2VjdXJpdHknXSkpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSWRlbnRpZnkgdW51c2VkIHJlZmVyZW5jZXMgKG1pc3NpbmcgcmVmZXJlbmNlcyBhcmUgYWxyZWFkeSBoYW5kbGVkIGFib3ZlKVxuICBfLmZvckVhY2goXy5kaWZmZXJlbmNlKHJlZmVyZW5jZWFibGUsIE9iamVjdC5rZXlzKHJlZmVyZW5jZXMpKSwgZnVuY3Rpb24gKHB0cikge1xuICAgIHJlc3BvbnNlLndhcm5pbmdzLnB1c2goe1xuICAgICAgY29kZTogJ1VOVVNFRF9ERUZJTklUSU9OJyxcbiAgICAgIG1lc3NhZ2U6ICdEZWZpbml0aW9uIGlzIG5vdCB1c2VkOiAnICsgcHRyLFxuICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIocHRyKVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFsbCBzY2hlbWEgb2JqZWN0cyBhbmQgc2NoZW1hLWxpa2Ugb2JqZWN0cyAobm9uLWJvZHkgcGF0aCBwYXJhbWV0ZXJzKS5cbiAqXG4gKiAqIFZhbGlkYXRlcyBjaXJjdWxhciByZWZlcmVuY2VzIHJlbGF0ZWQgdG8gY29tcG9zaXRpb24vaW5oZXJpdGFuY2VcbiAqICogVmFsaWRhdGVzIHRoYXQgYWxsIGFycmF5IHR5cGVzIGhhdmUgdGhlaXIgcmVxdWlyZWQgaXRlbXMgcHJvcGVydHlcbiAqICAgICAoQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9pc3N1ZXMvMTc0fSlcbiAqICogVmFsaWRhdGVzIHRoYXQgYWxsIGRlZmF1bHQgdmFsdWVzIGFyZSB2YWxpZCBiYXNlZCBvbiBpdHMgcmVzcGVjdGl2ZSBzY2hlbWFcbiAqXG4gKiBAcGFyYW0ge0FwaURlZmluaXRpb259IGFwaURlZmluaXRpb24gLSBUaGUgYEFwaURlZmluaXRpb25gIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hT2JqZWN0cyAoYXBpRGVmaW5pdGlvbikge1xuICAvLyBCdWlsZCBhIGJsYWNrbGlzdCB0byBhdm9pZCBjYXNjYWRpbmcgZXJyb3JzL3dhcm5pbmdzXG4gIHZhciBibGFja2xpc3QgPSBfLnJlZHVjZShhcGlEZWZpbml0aW9uLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChsaXN0LCBtZXRhZGF0YSwgcHRyKSB7XG4gICAgdmFyIHJlZlBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpO1xuXG4gICAgbGlzdC5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihyZWZQYXRoKSk7XG5cbiAgICByZXR1cm4gbGlzdDtcbiAgfSwgW10pO1xuICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHZhbGlkYXRvcnMgPSBbXG4gICAgdmFsaWRhdGVBcnJheVR5cGVJdGVtc0V4aXN0ZW5jZSxcbiAgICB2YWxpZGF0ZURlZmF1bHRWYWx1ZSxcbiAgICB2YWxpZGF0ZVNjaGVtYVByb3BlcnRpZXNcbiAgXTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVBhcmFtZXRlcnMgKHBhcmFtZXRlcnMsIHBhdGgpIHtcbiAgICBfLmZvckVhY2gocGFyYW1ldGVycywgZnVuY3Rpb24gKHBhcmFtZXRlckRlZiwgbmFtZSkge1xuICAgICAgdmFyIHBQYXRoO1xuXG4gICAgICBpZiAoXy5pc051bWJlcihuYW1lKSkge1xuICAgICAgICBuYW1lID0gbmFtZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBwUGF0aCA9IHBhdGguY29uY2F0KG5hbWUpO1xuXG4gICAgICAvLyBDcmVhdGUgSlNPTiBTY2hlbWEgZm9yIG5vbi1ib2R5IHBhcmFtZXRlcnNcbiAgICAgIGlmIChwYXJhbWV0ZXJEZWYuaW4gIT09ICdib2R5Jykge1xuICAgICAgICBwYXJhbWV0ZXJEZWYgPSBoZWxwZXJzLmNvbXB1dGVQYXJhbWV0ZXJTY2hlbWEocGFyYW1ldGVyRGVmKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa1NjaGVtYShhcGlEZWZpbml0aW9uLCBibGFja2xpc3QsIHBhcmFtZXRlckRlZiwgcFBhdGgsIHZhbGlkYXRvcnMsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VzIChyZXNwb25zZXMsIHBhdGgpIHtcbiAgICBfLmZvckVhY2gocmVzcG9uc2VzLCBmdW5jdGlvbiAocmVzcG9uc2VEZWYsIG5hbWUpIHtcbiAgICAgIHZhciByUGF0aCA9IHBhdGguY29uY2F0KG5hbWUpO1xuXG4gICAgICBfLmZvckVhY2gocmVzcG9uc2VEZWYuaGVhZGVycywgZnVuY3Rpb24gKGhlYWRlciwgaE5hbWUpIHtcbiAgICAgICAgd2Fsa1NjaGVtYShhcGlEZWZpbml0aW9uLCBibGFja2xpc3QsIGhlYWRlciwgclBhdGguY29uY2F0KFsnaGVhZGVycycsIGhOYW1lXSksIHZhbGlkYXRvcnMsIHJlc3BvbnNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzcG9uc2VEZWYuc2NoZW1hKSkge1xuICAgICAgICB3YWxrU2NoZW1hKGFwaURlZmluaXRpb24sIGJsYWNrbGlzdCwgcmVzcG9uc2VEZWYuc2NoZW1hLCByUGF0aC5jb25jYXQoJ3NjaGVtYScpLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBkZWZpbml0aW9uc1xuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5kZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZmluaXRpb25EZWYsIG5hbWUpIHtcbiAgICB3YWxrU2NoZW1hKGFwaURlZmluaXRpb24sIGJsYWNrbGlzdCwgZGVmaW5pdGlvbkRlZiwgWydkZWZpbml0aW9ucycsIG5hbWVdLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gIH0pO1xuXG4gIC8vIFZhbGlkYXRlIGdsb2JhbCBwYXJhbWV0ZXIgZGVmaW5pdGlvbnNcbiAgdmFsaWRhdGVQYXJhbWV0ZXJzKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGFyYW1ldGVycywgWydwYXJhbWV0ZXJzJ10pO1xuXG4gIC8vIFZhbGlkYXRlIGdsb2JhbCByZXNwb25zZSBkZWZpbml0aW9uc1xuICB2YWxpZGF0ZVJlc3BvbnNlcyhhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgWydyZXNwb25zZXMnXSk7XG5cbiAgLy8gVmFsaWRhdGUgcGF0aHMgYW5kIG9wZXJhdGlvbnNcbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGF0aHMsIGZ1bmN0aW9uIChwYXRoRGVmLCBwYXRoKSB7XG4gICAgdmFyIHBQYXRoID0gWydwYXRocycsIHBhdGhdO1xuXG4gICAgLy8gVmFsaWRhdGUgcGF0aC1sZXZlbCBwYXJhbWV0ZXIgZGVmaW5pdGlvbnNcbiAgICB2YWxpZGF0ZVBhcmFtZXRlcnMocGF0aERlZi5wYXJhbWV0ZXJzLCBwUGF0aC5jb25jYXQoJ3BhcmFtZXRlcnMnKSk7XG5cbiAgICBfLmZvckVhY2gocGF0aERlZiwgZnVuY3Rpb24gKG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgICB2YXIgb1BhdGggPSBwUGF0aC5jb25jYXQobWV0aG9kKTtcblxuICAgICAgLy8gRG8gbm90IHByb2Nlc3Mgbm9uLW9wZXJhdGlvbnNcbiAgICAgIGlmIChfLmluZGV4T2Yoc3VwcG9ydGVkSHR0cE1ldGhvZHMsIG1ldGhvZCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgb3BlcmF0aW9uIHBhcmFtZXRlciBkZWZpbml0aW9uc1xuICAgICAgdmFsaWRhdGVQYXJhbWV0ZXJzKG9wZXJhdGlvbkRlZi5wYXJhbWV0ZXJzLCBvUGF0aC5jb25jYXQoJ3BhcmFtZXRlcnMnKSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIG9wZXJhdGlvbiByZXNwb25zZSBkZWZpbml0aW9uc1xuICAgICAgdmFsaWRhdGVSZXNwb25zZXMob3BlcmF0aW9uRGVmLnJlc3BvbnNlcywgb1BhdGguY29uY2F0KCdyZXNwb25zZXMnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgcGF0aHMgYW5kIG9wZXJhdGlvbnMgKFdyaXR0ZW4gYXMgb25lIHZhbGlkYXRvciB0byBhdm9pZCBtdWx0aXBsZSBwYXNzZXMpXG4gKlxuICogKiBFbnN1cmUgdGhhdCBwYXRoIHBhcmFtZXRlcnMgYXJlIGRlZmluZWQgZm9yIGVhY2ggcGF0aCBwYXJhbWV0ZXIgZGVjbGFyYXRpb25cbiAqICogRW5zdXJlIHRoYXQgZGVmaW5lZCBwYXRoIHBhcmFtZXRlcnMgbWF0Y2ggYSBkZWNsYXJlZCBwYXRoIHBhcmFtZXRlclxuICogKiBFbnN1cmUgdGhhdCBwYXRocyBhcmUgZnVuY3Rpb25hbGx5IGRpZmZlcmVudFxuICogKiBFbnN1cmUgdGhhdCBhbiBvcGVyYXRpb24gb25seSBoYXMgb25lIGJvZHkgcGFyYW1ldGVyXG4gKiAqIEVuc3VyZSB0aGF0IGFuIG9wZXJhdGlvbiBoYXMgb25seSBhIGJvZHkgb3IgZm9ybURhdGEgcGFyYW1ldGVyIGJ1dCBub3QgYm90aFxuICogKiBFbnN1cmUgdGhhdCBhbGwgb3BlcmF0aW9uIHBhcmFtZXRlcnMgYXJlIHVuaXF1ZSAoaW4gKyBuYW1lKVxuICogKiBFbnN1cmUgdGhhdCBhbGwgb3BlcmF0aW9uIGlkcyBhcmUgdW5pcXVlXG4gKiAqIEVuc3VyZSB0aGF0IHBhdGggcGFyYW1ldGVycyBoYXZlIGEgbmFtZVxuICpcbiAqIEBwYXJhbSB7QXBpRGVmaW5pdGlvbn0gYXBpRGVmaW5pdGlvbiAtIFRoZSBgQXBpRGVmaW5pdGlvbmAgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3Mgb2YgdGhlIHZhbGlkYXRpb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVQYXRoc0FuZE9wZXJhdGlvbnMgKGFwaURlZmluaXRpb24pIHtcbiAgdmFyIHJlc3BvbnNlID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVEdXBsaWNhdGVQYXJhbWV0ZXIgKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIHBhdGgpIHtcbiAgICB2YXIgcE5hbWUgPSBwYXJhbWV0ZXIuaW4gKyAnOicgKyBwYXJhbWV0ZXIubmFtZTtcblxuICAgIC8vIElkZW50aWZ5IGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXNcbiAgICBpZiAoXy5pbmRleE9mKHNlZW5QYXJhbWV0ZXJzLCBwTmFtZSkgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRFVQTElDQVRFX1BBUkFNRVRFUicsXG4gICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY2Fubm90IGhhdmUgZHVwbGljYXRlIHBhcmFtZXRlcnM6ICcgKyBKc29uUmVmcy5wYXRoVG9QdHIocGF0aCksXG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWVuUGFyYW1ldGVycy5wdXNoKHBOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VlblBhcmFtZXRlcnM7XG4gIH1cblxuICBfLnJlZHVjZShhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAobWV0YWRhdGEsIHBhdGhEZWYsIHBhdGgpIHtcbiAgICB2YXIgZGVjbGFyZWRQYXRoUGFyYW1ldGVycyA9IFtdO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IHBhdGg7XG4gICAgdmFyIHBQYXRoID0gWydwYXRocycsIHBhdGhdO1xuXG4gICAgXy5mb3JFYWNoKHBhdGgubWF0Y2goL1xceyguKj8pXFx9L2cpLCBmdW5jdGlvbiAoYXJnLCBpbmRleCkge1xuICAgICAgLy8gUmVjb3JkIHRoZSBwYXRoIHBhcmFtZXRlciBuYW1lXG4gICAgICBkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzLnB1c2goYXJnLnJlcGxhY2UoL1t7fV0vZywgJycpKTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBub3JtYWxpemVkIHBhdGhcbiAgICAgIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZShhcmcsICdhcmcnICsgaW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLy8gSWRlbnRpZnkgcGF0aHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zXG4gICAgaWYgKGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMuaW5kZXhPZignJykgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRU1QVFlfUEFUSF9QQVJBTUVURVJfREVDTEFSQVRJT04nLFxuICAgICAgICBtZXNzYWdlOiAnUGF0aCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gY2Fubm90IGJlIGVtcHR5OiAnICsgcGF0aCxcbiAgICAgICAgcGF0aDogWydwYXRocycsIHBhdGhdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZGVuZml0eSBwYXRocyB0aGF0IGFyZSBmdW5jdGlvbmFsbHkgdGhlIHNhbWVcbiAgICBpZiAoXy5pbmRleE9mKG1ldGFkYXRhLnBhdGhzLCBub3JtYWxpemVkUGF0aCkgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRVFVSVZBTEVOVF9QQVRIJyxcbiAgICAgICAgbWVzc2FnZTogJ0VxdWl2YWxlbnQgcGF0aCBhbHJlYWR5IGV4aXN0czogJyArIHBhdGgsXG4gICAgICAgIHBhdGg6IHBQYXRoXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWV0YWRhdGEucGF0aHMucHVzaChub3JtYWxpemVkUGF0aCk7XG4gICAgfVxuXG4gICAgLy8gSWRlbnRpZnkgZHVwbGljYXRlIHBhdGgtbGV2ZWwgcGFyYW1ldGVycyAoV2UgZG8gdGhpcyBtYW51YWxseSBzaW5jZSBBcGlEZWZpbml0aW9uI2dldE9wZXJhdGlvbiBjb25zb2xpZGF0ZXMgdGhlbSlcbiAgICBfLnJlZHVjZShwYXRoRGVmLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlRHVwbGljYXRlUGFyYW1ldGVyKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIHBQYXRoLmNvbmNhdChbJ3BhcmFtZXRlcnMnLCBpbmRleC50b1N0cmluZygpXSkpO1xuICAgIH0sIFtdKTtcblxuICAgIF8uZm9yRWFjaChwYXRoRGVmLCBmdW5jdGlvbiAob3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICAgIHZhciBkZWZpbmVkUGF0aFBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHZhciBvUGF0aCA9IHBQYXRoLmNvbmNhdChtZXRob2QpO1xuICAgICAgdmFyIG9wZXJhdGlvbklkID0gb3BlcmF0aW9uRGVmLm9wZXJhdGlvbklkO1xuICAgICAgdmFyIHBhdGhNZXRhZGF0YTtcbiAgICAgIHZhciBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBub24tb3BlcmF0aW9uc1xuICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRIdHRwTWV0aG9kcywgbWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgb3BlcmF0aW9uSWRzXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3BlcmF0aW9uSWQpKSB7XG4gICAgICAgIGlmIChfLmluZGV4T2YobWV0YWRhdGEub3BlcmF0aW9uSWRzLCBvcGVyYXRpb25JZCkgIT09IC0xKSB7XG4gICAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogJ0RVUExJQ0FURV9PUEVSQVRJT05JRCcsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQ2Fubm90IGhhdmUgbXVsdGlwbGUgb3BlcmF0aW9ucyB3aXRoIHRoZSBzYW1lIG9wZXJhdGlvbklkOiAnICsgb3BlcmF0aW9uSWQsXG4gICAgICAgICAgICBwYXRoOiBvUGF0aC5jb25jYXQoWydvcGVyYXRpb25JZCddKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1ldGFkYXRhLm9wZXJhdGlvbklkcy5wdXNoKG9wZXJhdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgb3BlcmF0aW9uLWxldmVsIHBhcmFtZXRlcnMgKFdlIGRvIHRoaXMgbWFudWFsbHkgZm9yIHRoZSBzYW1lIHJlYXNvbnMgYWJvdmUpXG4gICAgICBfLnJlZHVjZShvcGVyYXRpb25EZWYucGFyYW1ldGVycywgZnVuY3Rpb24gKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZUR1cGxpY2F0ZVBhcmFtZXRlcihzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBvUGF0aC5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pKTtcbiAgICAgIH0sIFtdKTtcblxuICAgICAgLy8gVXNlIEFwaURlZmluaXRpb24jZ2V0T3BlcmF0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb25zb2xpZGF0ZSBwYXJhbWV0ZXJzXG4gICAgICBwYXJhbWV0ZXJzID0gYXBpRGVmaW5pdGlvbi5nZXRPcGVyYXRpb24ocGF0aCwgbWV0aG9kKS5nZXRQYXJhbWV0ZXJzKCk7XG5cbiAgICAgIHBhdGhNZXRhZGF0YSA9IF8ucmVkdWNlKHBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwTWV0YWRhdGEsIHBhcmFtZXRlcikge1xuICAgICAgICAvLyBSZWNvcmQgcGF0aCBwYXJhbWV0ZXJzXG4gICAgICAgIGlmIChwYXJhbWV0ZXIuaW4gPT09ICdwYXRoJykge1xuICAgICAgICAgIGRlZmluZWRQYXRoUGFyYW1ldGVyc1twYXJhbWV0ZXIubmFtZV0gPSBwYXJhbWV0ZXIucHRyO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5pbiA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgcE1ldGFkYXRhLmJvZHlQYXJhbWV0ZXRlcnMgKz0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIuaW4gPT09ICdmb3JtRGF0YScpIHtcbiAgICAgICAgICBwTWV0YWRhdGEuZm9ybVBhcmFtZXRlcnMgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwTWV0YWRhdGE7XG4gICAgICB9LCB7Ym9keVBhcmFtZXRldGVyczogMCwgZm9ybVBhcmFtZXRlcnM6IDB9KTtcblxuICAgICAgLy8gSWRlbnRpZnkgbXVsdGlwbGUgYm9keSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocGF0aE1ldGFkYXRhLmJvZHlQYXJhbWV0ZXRlcnMgPiAxKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnTVVMVElQTEVfQk9EWV9QQVJBTUVURVJTJyxcbiAgICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNhbm5vdCBoYXZlIG11bHRpcGxlIGJvZHkgcGFyYW1ldGVycycsXG4gICAgICAgICAgcGF0aDogb1BhdGhcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElkZW50aWZ5IGhhdmluZyBib3RoIGEgYm9keSBhbmQgYSBmb3JtIHBhcmFtZXRlclxuICAgICAgaWYgKHBhdGhNZXRhZGF0YS5ib2R5UGFyYW1ldGV0ZXJzID4gMCAmJiBwYXRoTWV0YWRhdGEuZm9ybVBhcmFtZXRlcnMgPiAwKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnSU5WQUxJRF9QQVJBTUVURVJfQ09NQklOQVRJT04nLFxuICAgICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY2Fubm90IGhhdmUgYSBib2R5IHBhcmFtZXRlciBhbmQgYSBmb3JtRGF0YSBwYXJhbWV0ZXInLFxuICAgICAgICAgIHBhdGg6IG9QYXRoXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSB1bmRlZmluZWQgcGF0aCBwYXJhbWV0ZXJzXG4gICAgICBfLmZvckVhY2goXy5kaWZmZXJlbmNlKGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMsIF8ua2V5cyhkZWZpbmVkUGF0aFBhcmFtZXRlcnMpKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdNSVNTSU5HX1BBVEhfUEFSQU1FVEVSX0RFRklOSVRJT04nLFxuICAgICAgICAgIG1lc3NhZ2U6ICdQYXRoIHBhcmFtZXRlciBpcyBkZWNsYXJlZCBidXQgaXMgbm90IGRlZmluZWQ6ICcgKyBuYW1lLFxuICAgICAgICAgIHBhdGg6IG9QYXRoXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElkZW50aWZ5IHVuZGVjbGFyZWQgcGF0aCBwYXJhbWV0ZXJzXG4gICAgICBfLmZvckVhY2goXy5kaWZmZXJlbmNlKF8ua2V5cyhkZWZpbmVkUGF0aFBhcmFtZXRlcnMpLCBkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdNSVNTSU5HX1BBVEhfUEFSQU1FVEVSX0RFQ0xBUkFUSU9OJyxcbiAgICAgICAgICBtZXNzYWdlOiAnUGF0aCBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBidXQgaXMgbm90IGRlY2xhcmVkOiAnICsgbmFtZSxcbiAgICAgICAgICBwYXRoOiBKc29uUmVmcy5wYXRoRnJvbVB0cihkZWZpbmVkUGF0aFBhcmFtZXRlcnNbbmFtZV0pXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH0sIHtwYXRoczogW10sIG9wZXJhdGlvbklkczogW119KTtcblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBqc29uU2NoZW1hVmFsaWRhdG9yOiB2YWxpZGF0ZVN0cnVjdHVyZSxcbiAgc2VtYW50aWNWYWxpZGF0b3JzOiBbXG4gICAgdmFsaWRhdGVSZWZlcmVuY2VzLFxuICAgIHZhbGlkYXRlU2NoZW1hT2JqZWN0cyxcbiAgICB2YWxpZGF0ZVBhdGhzQW5kT3BlcmF0aW9uc1xuICBdXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBjb21wYXJlIGFuZCBpc0J1ZmZlciB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2Jsb2IvNjgwZTllNWU0ODhmMjJhYWMyNzU5OWE1N2RjODQ0YTYzMTU5MjhkZC9pbmRleC5qc1xuLy8gb3JpZ2luYWwgbm90aWNlOlxuXG4vKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciB4ID0gYS5sZW5ndGg7XG4gIHZhciB5ID0gYi5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV07XG4gICAgICB5ID0gYltpXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoeSA8IHgpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGlzQnVmZmVyKGIpIHtcbiAgaWYgKGdsb2JhbC5CdWZmZXIgJiYgdHlwZW9mIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZ2xvYmFsLkJ1ZmZlci5pc0J1ZmZlcihiKTtcbiAgfVxuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKTtcbn1cblxuLy8gYmFzZWQgb24gbm9kZSBhc3NlcnQsIG9yaWdpbmFsIG5vdGljZTpcblxuLy8gaHR0cDovL3dpa2kuY29tbW9uanMub3JnL3dpa2kvVW5pdF9UZXN0aW5nLzEuMFxuLy9cbi8vIFRISVMgSVMgTk9UIFRFU1RFRCBOT1IgTElLRUxZIFRPIFdPUksgT1VUU0lERSBWOCFcbi8vXG4vLyBPcmlnaW5hbGx5IGZyb20gbmFyd2hhbC5qcyAoaHR0cDovL25hcndoYWxqcy5vcmcpXG4vLyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhvbWFzIFJvYmluc29uIDwyODBub3J0aC5jb20+XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgJ1NvZnR3YXJlJyksIHRvXG4vLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTlxuLy8gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTlxuLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbC8nKTtcbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHBTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBmdW5jdGlvbnNIYXZlTmFtZXMgPSAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9vKCkge30ubmFtZSA9PT0gJ2Zvbyc7XG59KCkpO1xuZnVuY3Rpb24gcFRvU3RyaW5nIChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopO1xufVxuZnVuY3Rpb24gaXNWaWV3KGFycmJ1Zikge1xuICBpZiAoaXNCdWZmZXIoYXJyYnVmKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoYXJyYnVmKTtcbiAgfVxuICBpZiAoIWFycmJ1Zikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJyYnVmIGluc3RhbmNlb2YgRGF0YVZpZXcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoYXJyYnVmLmJ1ZmZlciAmJiBhcnJidWYuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4vLyAxLiBUaGUgYXNzZXJ0IG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB0aHJvd1xuLy8gQXNzZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhlXG4vLyBhc3NlcnQgbW9kdWxlIG11c3QgY29uZm9ybSB0byB0aGUgZm9sbG93aW5nIGludGVyZmFjZS5cblxudmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7XG5cbi8vIDIuIFRoZSBBc3NlcnRpb25FcnJvciBpcyBkZWZpbmVkIGluIGFzc2VydC5cbi8vIG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiBtZXNzYWdlLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogYWN0dWFsLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCB9KVxuXG52YXIgcmVnZXggPSAvXFxzKmZ1bmN0aW9uXFxzKyhbXlxcKFxcc10qKVxccyovO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9mdW5jdGlvbi5wcm90b3R5cGUubmFtZS9ibG9iL2FkZWVlZWM4YmZjYzYwNjhiMTg3ZDdkOWZiM2Q1YmIxZDNhMzA4OTkvaW1wbGVtZW50YXRpb24uanNcbmZ1bmN0aW9uIGdldE5hbWUoZnVuYykge1xuICBpZiAoIXV0aWwuaXNGdW5jdGlvbihmdW5jKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZnVuY3Rpb25zSGF2ZU5hbWVzKSB7XG4gICAgcmV0dXJuIGZ1bmMubmFtZTtcbiAgfVxuICB2YXIgc3RyID0gZnVuYy50b1N0cmluZygpO1xuICB2YXIgbWF0Y2ggPSBzdHIubWF0Y2gocmVnZXgpO1xuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV07XG59XG5hc3NlcnQuQXNzZXJ0aW9uRXJyb3IgPSBmdW5jdGlvbiBBc3NlcnRpb25FcnJvcihvcHRpb25zKSB7XG4gIHRoaXMubmFtZSA9ICdBc3NlcnRpb25FcnJvcic7XG4gIHRoaXMuYWN0dWFsID0gb3B0aW9ucy5hY3R1YWw7XG4gIHRoaXMuZXhwZWN0ZWQgPSBvcHRpb25zLmV4cGVjdGVkO1xuICB0aGlzLm9wZXJhdG9yID0gb3B0aW9ucy5vcGVyYXRvcjtcbiAgaWYgKG9wdGlvbnMubWVzc2FnZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZTtcbiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBnZXRNZXNzYWdlKHRoaXMpO1xuICAgIHRoaXMuZ2VuZXJhdGVkTWVzc2FnZSA9IHRydWU7XG4gIH1cbiAgdmFyIHN0YWNrU3RhcnRGdW5jdGlvbiA9IG9wdGlvbnMuc3RhY2tTdGFydEZ1bmN0aW9uIHx8IGZhaWw7XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHN0YWNrU3RhcnRGdW5jdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgLy8gbm9uIHY4IGJyb3dzZXJzIHNvIHdlIGNhbiBoYXZlIGEgc3RhY2t0cmFjZVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcbiAgICBpZiAoZXJyLnN0YWNrKSB7XG4gICAgICB2YXIgb3V0ID0gZXJyLnN0YWNrO1xuXG4gICAgICAvLyB0cnkgdG8gc3RyaXAgdXNlbGVzcyBmcmFtZXNcbiAgICAgIHZhciBmbl9uYW1lID0gZ2V0TmFtZShzdGFja1N0YXJ0RnVuY3Rpb24pO1xuICAgICAgdmFyIGlkeCA9IG91dC5pbmRleE9mKCdcXG4nICsgZm5fbmFtZSk7XG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgLy8gb25jZSB3ZSBoYXZlIGxvY2F0ZWQgdGhlIGZ1bmN0aW9uIGZyYW1lXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc3RyaXAgb3V0IGV2ZXJ5dGhpbmcgYmVmb3JlIGl0IChhbmQgaXRzIGxpbmUpXG4gICAgICAgIHZhciBuZXh0X2xpbmUgPSBvdXQuaW5kZXhPZignXFxuJywgaWR4ICsgMSk7XG4gICAgICAgIG91dCA9IG91dC5zdWJzdHJpbmcobmV4dF9saW5lICsgMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhY2sgPSBvdXQ7XG4gICAgfVxuICB9XG59O1xuXG4vLyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IgaW5zdGFuY2VvZiBFcnJvclxudXRpbC5pbmhlcml0cyhhc3NlcnQuQXNzZXJ0aW9uRXJyb3IsIEVycm9yKTtcblxuZnVuY3Rpb24gdHJ1bmNhdGUocywgbikge1xuICBpZiAodHlwZW9mIHMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHMubGVuZ3RoIDwgbiA/IHMgOiBzLnNsaWNlKDAsIG4pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzO1xuICB9XG59XG5mdW5jdGlvbiBpbnNwZWN0KHNvbWV0aGluZykge1xuICBpZiAoZnVuY3Rpb25zSGF2ZU5hbWVzIHx8ICF1dGlsLmlzRnVuY3Rpb24oc29tZXRoaW5nKSkge1xuICAgIHJldHVybiB1dGlsLmluc3BlY3Qoc29tZXRoaW5nKTtcbiAgfVxuICB2YXIgcmF3bmFtZSA9IGdldE5hbWUoc29tZXRoaW5nKTtcbiAgdmFyIG5hbWUgPSByYXduYW1lID8gJzogJyArIHJhd25hbWUgOiAnJztcbiAgcmV0dXJuICdbRnVuY3Rpb24nICsgIG5hbWUgKyAnXSc7XG59XG5mdW5jdGlvbiBnZXRNZXNzYWdlKHNlbGYpIHtcbiAgcmV0dXJuIHRydW5jYXRlKGluc3BlY3Qoc2VsZi5hY3R1YWwpLCAxMjgpICsgJyAnICtcbiAgICAgICAgIHNlbGYub3BlcmF0b3IgKyAnICcgK1xuICAgICAgICAgdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmV4cGVjdGVkKSwgMTI4KTtcbn1cblxuLy8gQXQgcHJlc2VudCBvbmx5IHRoZSB0aHJlZSBrZXlzIG1lbnRpb25lZCBhYm92ZSBhcmUgdXNlZCBhbmRcbi8vIHVuZGVyc3Rvb2QgYnkgdGhlIHNwZWMuIEltcGxlbWVudGF0aW9ucyBvciBzdWIgbW9kdWxlcyBjYW4gcGFzc1xuLy8gb3RoZXIga2V5cyB0byB0aGUgQXNzZXJ0aW9uRXJyb3IncyBjb25zdHJ1Y3RvciAtIHRoZXkgd2lsbCBiZVxuLy8gaWdub3JlZC5cblxuLy8gMy4gQWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdGhyb3cgYW4gQXNzZXJ0aW9uRXJyb3Jcbi8vIHdoZW4gYSBjb3JyZXNwb25kaW5nIGNvbmRpdGlvbiBpcyBub3QgbWV0LCB3aXRoIGEgbWVzc2FnZSB0aGF0XG4vLyBtYXkgYmUgdW5kZWZpbmVkIGlmIG5vdCBwcm92aWRlZC4gIEFsbCBhc3NlcnRpb24gbWV0aG9kcyBwcm92aWRlXG4vLyBib3RoIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIHZhbHVlcyB0byB0aGUgYXNzZXJ0aW9uIGVycm9yIGZvclxuLy8gZGlzcGxheSBwdXJwb3Nlcy5cblxuZnVuY3Rpb24gZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCBvcGVyYXRvciwgc3RhY2tTdGFydEZ1bmN0aW9uKSB7XG4gIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3Ioe1xuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICBzdGFja1N0YXJ0RnVuY3Rpb246IHN0YWNrU3RhcnRGdW5jdGlvblxuICB9KTtcbn1cblxuLy8gRVhURU5TSU9OISBhbGxvd3MgZm9yIHdlbGwgYmVoYXZlZCBlcnJvcnMgZGVmaW5lZCBlbHNld2hlcmUuXG5hc3NlcnQuZmFpbCA9IGZhaWw7XG5cbi8vIDQuIFB1cmUgYXNzZXJ0aW9uIHRlc3RzIHdoZXRoZXIgYSB2YWx1ZSBpcyB0cnV0aHksIGFzIGRldGVybWluZWRcbi8vIGJ5ICEhZ3VhcmQuXG4vLyBhc3NlcnQub2soZ3VhcmQsIG1lc3NhZ2Vfb3B0KTtcbi8vIFRoaXMgc3RhdGVtZW50IGlzIGVxdWl2YWxlbnQgdG8gYXNzZXJ0LmVxdWFsKHRydWUsICEhZ3VhcmQsXG4vLyBtZXNzYWdlX29wdCk7LiBUbyB0ZXN0IHN0cmljdGx5IGZvciB0aGUgdmFsdWUgdHJ1ZSwgdXNlXG4vLyBhc3NlcnQuc3RyaWN0RXF1YWwodHJ1ZSwgZ3VhcmQsIG1lc3NhZ2Vfb3B0KTsuXG5cbmZ1bmN0aW9uIG9rKHZhbHVlLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsdWUpIGZhaWwodmFsdWUsIHRydWUsIG1lc3NhZ2UsICc9PScsIGFzc2VydC5vayk7XG59XG5hc3NlcnQub2sgPSBvaztcblxuLy8gNS4gVGhlIGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzaGFsbG93LCBjb2VyY2l2ZSBlcXVhbGl0eSB3aXRoXG4vLyA9PS5cbi8vIGFzc2VydC5lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQuZXF1YWwpO1xufTtcblxuLy8gNi4gVGhlIG5vbi1lcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgZm9yIHdoZXRoZXIgdHdvIG9iamVjdHMgYXJlIG5vdCBlcXVhbFxuLy8gd2l0aCAhPSBhc3NlcnQubm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQubm90RXF1YWwgPSBmdW5jdGlvbiBub3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICchPScsIGFzc2VydC5ub3RFcXVhbCk7XG4gIH1cbn07XG5cbi8vIDcuIFRoZSBlcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgYSBkZWVwIGVxdWFsaXR5IHJlbGF0aW9uLlxuLy8gYXNzZXJ0LmRlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5kZWVwRXF1YWwgPSBmdW5jdGlvbiBkZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnZGVlcEVxdWFsJywgYXNzZXJ0LmRlZXBFcXVhbCk7XG4gIH1cbn07XG5cbmFzc2VydC5kZWVwU3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBkZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgdHJ1ZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdkZWVwU3RyaWN0RXF1YWwnLCBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBzdHJpY3QsIG1lbW9zKSB7XG4gIC8vIDcuMS4gQWxsIGlkZW50aWNhbCB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGFzIGRldGVybWluZWQgYnkgPT09LlxuICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQnVmZmVyKGFjdHVhbCkgJiYgaXNCdWZmZXIoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUoYWN0dWFsLCBleHBlY3RlZCkgPT09IDA7XG5cbiAgLy8gNy4yLiBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBEYXRlIG9iamVjdCwgdGhlIGFjdHVhbCB2YWx1ZSBpc1xuICAvLyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBEYXRlIG9iamVjdCB0aGF0IHJlZmVycyB0byB0aGUgc2FtZSB0aW1lLlxuICB9IGVsc2UgaWYgKHV0aWwuaXNEYXRlKGFjdHVhbCkgJiYgdXRpbC5pc0RhdGUoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGFjdHVhbC5nZXRUaW1lKCkgPT09IGV4cGVjdGVkLmdldFRpbWUoKTtcblxuICAvLyA3LjMgSWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdCwgdGhlIGFjdHVhbCB2YWx1ZSBpc1xuICAvLyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBSZWdFeHAgb2JqZWN0IHdpdGggdGhlIHNhbWUgc291cmNlIGFuZFxuICAvLyBwcm9wZXJ0aWVzIChgZ2xvYmFsYCwgYG11bHRpbGluZWAsIGBsYXN0SW5kZXhgLCBgaWdub3JlQ2FzZWApLlxuICB9IGVsc2UgaWYgKHV0aWwuaXNSZWdFeHAoYWN0dWFsKSAmJiB1dGlsLmlzUmVnRXhwKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBhY3R1YWwuc291cmNlID09PSBleHBlY3RlZC5zb3VyY2UgJiZcbiAgICAgICAgICAgYWN0dWFsLmdsb2JhbCA9PT0gZXhwZWN0ZWQuZ2xvYmFsICYmXG4gICAgICAgICAgIGFjdHVhbC5tdWx0aWxpbmUgPT09IGV4cGVjdGVkLm11bHRpbGluZSAmJlxuICAgICAgICAgICBhY3R1YWwubGFzdEluZGV4ID09PSBleHBlY3RlZC5sYXN0SW5kZXggJiZcbiAgICAgICAgICAgYWN0dWFsLmlnbm9yZUNhc2UgPT09IGV4cGVjdGVkLmlnbm9yZUNhc2U7XG5cbiAgLy8gNy40LiBPdGhlciBwYWlycyB0aGF0IGRvIG5vdCBib3RoIHBhc3MgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnLFxuICAvLyBlcXVpdmFsZW5jZSBpcyBkZXRlcm1pbmVkIGJ5ID09LlxuICB9IGVsc2UgaWYgKChhY3R1YWwgPT09IG51bGwgfHwgdHlwZW9mIGFjdHVhbCAhPT0gJ29iamVjdCcpICYmXG4gICAgICAgICAgICAgKGV4cGVjdGVkID09PSBudWxsIHx8IHR5cGVvZiBleHBlY3RlZCAhPT0gJ29iamVjdCcpKSB7XG4gICAgcmV0dXJuIHN0cmljdCA/IGFjdHVhbCA9PT0gZXhwZWN0ZWQgOiBhY3R1YWwgPT0gZXhwZWN0ZWQ7XG5cbiAgLy8gSWYgYm90aCB2YWx1ZXMgYXJlIGluc3RhbmNlcyBvZiB0eXBlZCBhcnJheXMsIHdyYXAgdGhlaXIgdW5kZXJseWluZ1xuICAvLyBBcnJheUJ1ZmZlcnMgaW4gYSBCdWZmZXIgZWFjaCB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZVxuICAvLyBUaGlzIG9wdGltaXphdGlvbiByZXF1aXJlcyB0aGUgYXJyYXlzIHRvIGhhdmUgdGhlIHNhbWUgdHlwZSBhcyBjaGVja2VkIGJ5XG4gIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKGFrYSBwVG9TdHJpbmcpLiBOZXZlciBwZXJmb3JtIGJpbmFyeVxuICAvLyBjb21wYXJpc29ucyBmb3IgRmxvYXQqQXJyYXlzLCB0aG91Z2gsIHNpbmNlIGUuZy4gKzAgPT09IC0wIGJ1dCB0aGVpclxuICAvLyBiaXQgcGF0dGVybnMgYXJlIG5vdCBpZGVudGljYWwuXG4gIH0gZWxzZSBpZiAoaXNWaWV3KGFjdHVhbCkgJiYgaXNWaWV3KGV4cGVjdGVkKSAmJlxuICAgICAgICAgICAgIHBUb1N0cmluZyhhY3R1YWwpID09PSBwVG9TdHJpbmcoZXhwZWN0ZWQpICYmXG4gICAgICAgICAgICAgIShhY3R1YWwgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkgfHxcbiAgICAgICAgICAgICAgIGFjdHVhbCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkpIHtcbiAgICByZXR1cm4gY29tcGFyZShuZXcgVWludDhBcnJheShhY3R1YWwuYnVmZmVyKSxcbiAgICAgICAgICAgICAgICAgICBuZXcgVWludDhBcnJheShleHBlY3RlZC5idWZmZXIpKSA9PT0gMDtcblxuICAvLyA3LjUgRm9yIGFsbCBvdGhlciBPYmplY3QgcGFpcnMsIGluY2x1ZGluZyBBcnJheSBvYmplY3RzLCBlcXVpdmFsZW5jZSBpc1xuICAvLyBkZXRlcm1pbmVkIGJ5IGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoYXMgdmVyaWZpZWRcbiAgLy8gd2l0aCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwpLCB0aGUgc2FtZSBzZXQgb2Yga2V5c1xuICAvLyAoYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSwgZXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5XG4gIC8vIGNvcnJlc3BvbmRpbmcga2V5LCBhbmQgYW4gaWRlbnRpY2FsICdwcm90b3R5cGUnIHByb3BlcnR5LiBOb3RlOiB0aGlzXG4gIC8vIGFjY291bnRzIGZvciBib3RoIG5hbWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLlxuICB9IGVsc2UgaWYgKGlzQnVmZmVyKGFjdHVhbCkgIT09IGlzQnVmZmVyKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBtZW1vcyA9IG1lbW9zIHx8IHthY3R1YWw6IFtdLCBleHBlY3RlZDogW119O1xuXG4gICAgdmFyIGFjdHVhbEluZGV4ID0gbWVtb3MuYWN0dWFsLmluZGV4T2YoYWN0dWFsKTtcbiAgICBpZiAoYWN0dWFsSW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAoYWN0dWFsSW5kZXggPT09IG1lbW9zLmV4cGVjdGVkLmluZGV4T2YoZXhwZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9zLmFjdHVhbC5wdXNoKGFjdHVhbCk7XG4gICAgbWVtb3MuZXhwZWN0ZWQucHVzaChleHBlY3RlZCk7XG5cbiAgICByZXR1cm4gb2JqRXF1aXYoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBcmd1bWVudHMob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJztcbn1cblxuZnVuY3Rpb24gb2JqRXF1aXYoYSwgYiwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykge1xuICBpZiAoYSA9PT0gbnVsbCB8fCBhID09PSB1bmRlZmluZWQgfHwgYiA9PT0gbnVsbCB8fCBiID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuICAvLyBpZiBvbmUgaXMgYSBwcmltaXRpdmUsIHRoZSBvdGhlciBtdXN0IGJlIHNhbWVcbiAgaWYgKHV0aWwuaXNQcmltaXRpdmUoYSkgfHwgdXRpbC5pc1ByaW1pdGl2ZShiKSlcbiAgICByZXR1cm4gYSA9PT0gYjtcbiAgaWYgKHN0cmljdCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkgIT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihiKSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBhSXNBcmdzID0gaXNBcmd1bWVudHMoYSk7XG4gIHZhciBiSXNBcmdzID0gaXNBcmd1bWVudHMoYik7XG4gIGlmICgoYUlzQXJncyAmJiAhYklzQXJncykgfHwgKCFhSXNBcmdzICYmIGJJc0FyZ3MpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKGFJc0FyZ3MpIHtcbiAgICBhID0gcFNsaWNlLmNhbGwoYSk7XG4gICAgYiA9IHBTbGljZS5jYWxsKGIpO1xuICAgIHJldHVybiBfZGVlcEVxdWFsKGEsIGIsIHN0cmljdCk7XG4gIH1cbiAgdmFyIGthID0gb2JqZWN0S2V5cyhhKTtcbiAgdmFyIGtiID0gb2JqZWN0S2V5cyhiKTtcbiAgdmFyIGtleSwgaTtcbiAgLy8gaGF2aW5nIHRoZSBzYW1lIG51bWJlciBvZiBvd25lZCBwcm9wZXJ0aWVzIChrZXlzIGluY29ycG9yYXRlc1xuICAvLyBoYXNPd25Qcm9wZXJ0eSlcbiAgaWYgKGthLmxlbmd0aCAhPT0ga2IubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy90aGUgc2FtZSBzZXQgb2Yga2V5cyAoYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSxcbiAga2Euc29ydCgpO1xuICBrYi5zb3J0KCk7XG4gIC8vfn5+Y2hlYXAga2V5IHRlc3RcbiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoa2FbaV0gIT09IGtiW2ldKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vZXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5LCBhbmRcbiAgLy9+fn5wb3NzaWJseSBleHBlbnNpdmUgZGVlcCB0ZXN0XG4gIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAga2V5ID0ga2FbaV07XG4gICAgaWYgKCFfZGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBzdHJpY3QsIGFjdHVhbFZpc2l0ZWRPYmplY3RzKSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gOC4gVGhlIG5vbi1lcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuXG4vLyBhc3NlcnQubm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGZhbHNlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ25vdERlZXBFcXVhbCcsIGFzc2VydC5ub3REZWVwRXF1YWwpO1xuICB9XG59O1xuXG5hc3NlcnQubm90RGVlcFN0cmljdEVxdWFsID0gbm90RGVlcFN0cmljdEVxdWFsO1xuZnVuY3Rpb24gbm90RGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgdHJ1ZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwU3RyaWN0RXF1YWwnLCBub3REZWVwU3RyaWN0RXF1YWwpO1xuICB9XG59XG5cblxuLy8gOS4gVGhlIHN0cmljdCBlcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgc3RyaWN0IGVxdWFsaXR5LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbi8vIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5zdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIHN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICc9PT0nLCBhc3NlcnQuc3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG4vLyAxMC4gVGhlIHN0cmljdCBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciBzdHJpY3QgaW5lcXVhbGl0eSwgYXNcbi8vIGRldGVybWluZWQgYnkgIT09LiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0Lm5vdFN0cmljdEVxdWFsID0gZnVuY3Rpb24gbm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9PScsIGFzc2VydC5ub3RTdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpIHtcbiAgaWYgKCFhY3R1YWwgfHwgIWV4cGVjdGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChleHBlY3RlZCkgPT0gJ1tvYmplY3QgUmVnRXhwXScpIHtcbiAgICByZXR1cm4gZXhwZWN0ZWQudGVzdChhY3R1YWwpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoYWN0dWFsIGluc3RhbmNlb2YgZXhwZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElnbm9yZS4gIFRoZSBpbnN0YW5jZW9mIGNoZWNrIGRvZXNuJ3Qgd29yayBmb3IgYXJyb3cgZnVuY3Rpb25zLlxuICB9XG5cbiAgaWYgKEVycm9yLmlzUHJvdG90eXBlT2YoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGV4cGVjdGVkLmNhbGwoe30sIGFjdHVhbCkgPT09IHRydWU7XG59XG5cbmZ1bmN0aW9uIF90cnlCbG9jayhibG9jaykge1xuICB2YXIgZXJyb3I7XG4gIHRyeSB7XG4gICAgYmxvY2soKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVycm9yID0gZTtcbiAgfVxuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIF90aHJvd3Moc2hvdWxkVGhyb3csIGJsb2NrLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICB2YXIgYWN0dWFsO1xuXG4gIGlmICh0eXBlb2YgYmxvY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJsb2NrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJykge1xuICAgIG1lc3NhZ2UgPSBleHBlY3RlZDtcbiAgICBleHBlY3RlZCA9IG51bGw7XG4gIH1cblxuICBhY3R1YWwgPSBfdHJ5QmxvY2soYmxvY2spO1xuXG4gIG1lc3NhZ2UgPSAoZXhwZWN0ZWQgJiYgZXhwZWN0ZWQubmFtZSA/ICcgKCcgKyBleHBlY3RlZC5uYW1lICsgJykuJyA6ICcuJykgK1xuICAgICAgICAgICAgKG1lc3NhZ2UgPyAnICcgKyBtZXNzYWdlIDogJy4nKTtcblxuICBpZiAoc2hvdWxkVGhyb3cgJiYgIWFjdHVhbCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgJ01pc3NpbmcgZXhwZWN0ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpO1xuICB9XG5cbiAgdmFyIHVzZXJQcm92aWRlZE1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZyc7XG4gIHZhciBpc1Vud2FudGVkRXhjZXB0aW9uID0gIXNob3VsZFRocm93ICYmIHV0aWwuaXNFcnJvcihhY3R1YWwpO1xuICB2YXIgaXNVbmV4cGVjdGVkRXhjZXB0aW9uID0gIXNob3VsZFRocm93ICYmIGFjdHVhbCAmJiAhZXhwZWN0ZWQ7XG5cbiAgaWYgKChpc1Vud2FudGVkRXhjZXB0aW9uICYmXG4gICAgICB1c2VyUHJvdmlkZWRNZXNzYWdlICYmXG4gICAgICBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHxcbiAgICAgIGlzVW5leHBlY3RlZEV4Y2VwdGlvbikge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgJ0dvdCB1bndhbnRlZCBleGNlcHRpb24nICsgbWVzc2FnZSk7XG4gIH1cblxuICBpZiAoKHNob3VsZFRocm93ICYmIGFjdHVhbCAmJiBleHBlY3RlZCAmJlxuICAgICAgIWV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpKSB8fCAoIXNob3VsZFRocm93ICYmIGFjdHVhbCkpIHtcbiAgICB0aHJvdyBhY3R1YWw7XG4gIH1cbn1cblxuLy8gMTEuIEV4cGVjdGVkIHRvIHRocm93IGFuIGVycm9yOlxuLy8gYXNzZXJ0LnRocm93cyhibG9jaywgRXJyb3Jfb3B0LCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC50aHJvd3MgPSBmdW5jdGlvbihibG9jaywgLypvcHRpb25hbCovZXJyb3IsIC8qb3B0aW9uYWwqL21lc3NhZ2UpIHtcbiAgX3Rocm93cyh0cnVlLCBibG9jaywgZXJyb3IsIG1lc3NhZ2UpO1xufTtcblxuLy8gRVhURU5TSU9OISBUaGlzIGlzIGFubm95aW5nIHRvIHdyaXRlIG91dHNpZGUgdGhpcyBtb2R1bGUuXG5hc3NlcnQuZG9lc05vdFRocm93ID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7XG4gIF90aHJvd3MoZmFsc2UsIGJsb2NrLCBlcnJvciwgbWVzc2FnZSk7XG59O1xuXG5hc3NlcnQuaWZFcnJvciA9IGZ1bmN0aW9uKGVycikgeyBpZiAoZXJyKSB0aHJvdyBlcnI7IH07XG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKGhhc093bi5jYWxsKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIGtleXM7XG59O1xuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyKGFyZykge1xuICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIGFyZy5jb3B5ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5maWxsID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0cy5mb3JtYXQgPSBmdW5jdGlvbihmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydHMuZGVwcmVjYXRlID0gZnVuY3Rpb24oZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGV4cG9ydHMuZGVwcmVjYXRlKGZuLCBtc2cpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLm5vRGVwcmVjYXRpb24gPT09IHRydWUpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZpcm9uO1xuZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNldCkge1xuICBpZiAoaXNVbmRlZmluZWQoZGVidWdFbnZpcm9uKSlcbiAgICBkZWJ1Z0Vudmlyb24gPSBwcm9jZXNzLmVudi5OT0RFX0RFQlVHIHx8ICcnO1xuICBzZXQgPSBzZXQudG9VcHBlckNhc2UoKTtcbiAgaWYgKCFkZWJ1Z3Nbc2V0XSkge1xuICAgIGlmIChuZXcgUmVnRXhwKCdcXFxcYicgKyBzZXQgKyAnXFxcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkge1xuICAgICAgdmFyIHBpZCA9IHByb2Nlc3MucGlkO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJyVzICVkOiAlcycsIHNldCwgcGlkLCBtc2cpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVidWdzW3NldF07XG59O1xuXG5cbi8qKlxuICogRWNob3MgdGhlIHZhbHVlIG9mIGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dFxuICogaW4gdGhlIGJlc3Qgd2F5IHBvc3NpYmxlIGdpdmVuIHRoZSBkaWZmZXJlbnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSBvdXRwdXQuXG4gKi9cbi8qIGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi9cbmZ1bmN0aW9uIGluc3BlY3Qob2JqLCBvcHRzKSB7XG4gIC8vIGRlZmF1bHQgb3B0aW9uc1xuICB2YXIgY3R4ID0ge1xuICAgIHNlZW46IFtdLFxuICAgIHN0eWxpemU6IHN0eWxpemVOb0NvbG9yXG4gIH07XG4gIC8vIGxlZ2FjeS4uLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAzKSBjdHguZGVwdGggPSBhcmd1bWVudHNbMl07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107XG4gIGlmIChpc0Jvb2xlYW4ob3B0cykpIHtcbiAgICAvLyBsZWdhY3kuLi5cbiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7XG4gIH0gZWxzZSBpZiAob3B0cykge1xuICAgIC8vIGdvdCBhbiBcIm9wdGlvbnNcIiBvYmplY3RcbiAgICBleHBvcnRzLl9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5leHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0O1xuXG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gZXhwb3J0cy5pbnNwZWN0ICYmXG4gICAgICAvLyBBbHNvIGZpbHRlciBvdXQgYW55IHByb3RvdHlwZSBvYmplY3RzIHVzaW5nIHRoZSBjaXJjdWxhciBjaGVjay5cbiAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYgdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHtcbiAgICB2YXIgcmV0ID0gdmFsdWUuaW5zcGVjdChyZWN1cnNlVGltZXMsIGN0eCk7XG4gICAgaWYgKCFpc1N0cmluZyhyZXQpKSB7XG4gICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8vIFByaW1pdGl2ZSB0eXBlcyBjYW5ub3QgaGF2ZSBwcm9wZXJ0aWVzXG4gIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSk7XG4gIGlmIChwcmltaXRpdmUpIHtcbiAgICByZXR1cm4gcHJpbWl0aXZlO1xuICB9XG5cbiAgLy8gTG9vayB1cCB0aGUga2V5cyBvZiB0aGUgb2JqZWN0LlxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgdmFyIHZpc2libGVLZXlzID0gYXJyYXlUb0hhc2goa2V5cyk7XG5cbiAgaWYgKGN0eC5zaG93SGlkZGVuKSB7XG4gICAga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbHVlKTtcbiAgfVxuXG4gIC8vIElFIGRvZXNuJ3QgbWFrZSBlcnJvciBmaWVsZHMgbm9uLWVudW1lcmFibGVcbiAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2R3dzUyc2J0KHY9dnMuOTQpLmFzcHhcbiAgaWYgKGlzRXJyb3IodmFsdWUpXG4gICAgICAmJiAoa2V5cy5pbmRleE9mKCdtZXNzYWdlJykgPj0gMCB8fCBrZXlzLmluZGV4T2YoJ2Rlc2NyaXB0aW9uJykgPj0gMCkpIHtcbiAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgLy8gU29tZSB0eXBlIG9mIG9iamVjdCB3aXRob3V0IHByb3BlcnRpZXMgY2FuIGJlIHNob3J0Y3V0dGVkLlxuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgIHZhciBuYW1lID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH1cbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScpO1xuICAgIH1cbiAgICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhc2UgPSAnJywgYXJyYXkgPSBmYWxzZSwgYnJhY2VzID0gWyd7JywgJ30nXTtcblxuICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkgYXJlIEFycmF5XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGFycmF5ID0gdHJ1ZTtcbiAgICBicmFjZXMgPSBbJ1snLCAnXSddO1xuICB9XG5cbiAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRoYXQgdGhleSBhcmUgZnVuY3Rpb25zXG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHZhciBuID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgYmFzZSA9ICcgW0Z1bmN0aW9uJyArIG4gKyAnXSc7XG4gIH1cblxuICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQgdGhleSBhcmUgUmVnRXhwc1xuICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGRhdGVzIHdpdGggcHJvcGVydGllcyBmaXJzdCBzYXkgdGhlIGRhdGVcbiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGVycm9yIHdpdGggbWVzc2FnZSBmaXJzdCBzYXkgdGhlIGVycm9yXG4gIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFhcnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArIGJyYWNlc1sxXTtcbiAgfVxuXG4gIGlmIChyZWN1cnNlVGltZXMgPCAwKSB7XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbT2JqZWN0XScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG5cbiAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7XG5cbiAgdmFyIG91dHB1dDtcbiAgaWYgKGFycmF5KSB7XG4gICAgb3V0cHV0ID0gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cyk7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSk7XG4gICAgfSk7XG4gIH1cblxuICBjdHguc2Vlbi5wb3AoKTtcblxuICByZXR1cm4gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCd1bmRlZmluZWQnLCAndW5kZWZpbmVkJyk7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICB2YXIgc2ltcGxlID0gJ1xcJycgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkucmVwbGFjZSgvXlwifFwiJC9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJykgKyAnXFwnJztcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpO1xuICBpZiAoaXNCb29sZWFuKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ2Jvb2xlYW4nKTtcbiAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzIFwib2JqZWN0XCIsIHNvIHNwZWNpYWwgY2FzZSBoZXJlLlxuICBpZiAoaXNOdWxsKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ251bGwnLCAnbnVsbCcpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEVycm9yKHZhbHVlKSB7XG4gIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAnXSc7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cykge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KHZhbHVlLCBTdHJpbmcoaSkpKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIFN0cmluZyhpKSwgdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICB9XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoIWtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAga2V5LCB0cnVlKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KSB7XG4gIHZhciBuYW1lLCBzdHIsIGRlc2M7XG4gIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTtcbiAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBrZXkpKSB7XG4gICAgbmFtZSA9ICdbJyArIGtleSArICddJztcbiAgfVxuICBpZiAoIXN0cikge1xuICAgIGlmIChjdHguc2Vlbi5pbmRleE9mKGRlc2MudmFsdWUpIDwgMCkge1xuICAgICAgaWYgKGlzTnVsbChyZWN1cnNlVGltZXMpKSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIHJlY3Vyc2VUaW1lcyAtIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHN0ci5pbmRleE9mKCdcXG4nKSA+IC0xKSB7XG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIHN0ciA9IHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKS5zdWJzdHIoMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyID0gJ1xcbicgKyBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbQ2lyY3VsYXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgaWYgKGFycmF5ICYmIGtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7XG4gICAgaWYgKG5hbWUubWF0Y2goL15cIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVwiJC8pKSB7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHIoMSwgbmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnbmFtZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF5cInxcIiQpL2csIFwiJ1wiKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc3RyO1xufVxuXG5cbmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7XG4gIHZhciBudW1MaW5lc0VzdCA9IDA7XG4gIHZhciBsZW5ndGggPSBvdXRwdXQucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGN1cikge1xuICAgIG51bUxpbmVzRXN0Kys7XG4gICAgaWYgKGN1ci5pbmRleE9mKCdcXG4nKSA+PSAwKSBudW1MaW5lc0VzdCsrO1xuICAgIHJldHVybiBwcmV2ICsgY3VyLnJlcGxhY2UoL1xcdTAwMWJcXFtcXGRcXGQ/bS9nLCAnJykubGVuZ3RoICsgMTtcbiAgfSwgMCk7XG5cbiAgaWYgKGxlbmd0aCA+IDYwKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArXG4gICAgICAgICAgIChiYXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcXG4gJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBvdXRwdXQuam9pbignLFxcbiAgJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBicmFjZXNbMV07XG4gIH1cblxuICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArICcgJyArIG91dHB1dC5qb2luKCcsICcpICsgJyAnICsgYnJhY2VzWzFdO1xufVxuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcbmV4cG9ydHMudG9CeXRlQXJyYXkgPSB0b0J5dGVBcnJheVxuZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gZnJvbUJ5dGVBcnJheVxuXG52YXIgbG9va3VwID0gW11cbnZhciByZXZMb29rdXAgPSBbXVxudmFyIEFyciA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyA/IFVpbnQ4QXJyYXkgOiBBcnJheVxuXG52YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgbG9va3VwW2ldID0gY29kZVtpXVxuICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbn1cblxuLy8gU3VwcG9ydCBkZWNvZGluZyBVUkwtc2FmZSBiYXNlNjQgc3RyaW5ncywgYXMgTm9kZS5qcyBkb2VzLlxuLy8gU2VlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjQjVVJMX2FwcGxpY2F0aW9uc1xucmV2TG9va3VwWyctJy5jaGFyQ29kZUF0KDApXSA9IDYyXG5yZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcblxuZnVuY3Rpb24gZ2V0TGVucyAoYjY0KSB7XG4gIHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIFRyaW0gb2ZmIGV4dHJhIGJ5dGVzIGFmdGVyIHBsYWNlaG9sZGVyIGJ5dGVzIGFyZSBmb3VuZFxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZWF0Z2FtbWl0L2Jhc2U2NC1qcy9pc3N1ZXMvNDJcbiAgdmFyIHZhbGlkTGVuID0gYjY0LmluZGV4T2YoJz0nKVxuICBpZiAodmFsaWRMZW4gPT09IC0xKSB2YWxpZExlbiA9IGxlblxuXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSB2YWxpZExlbiA9PT0gbGVuXG4gICAgPyAwXG4gICAgOiA0IC0gKHZhbGlkTGVuICUgNClcblxuICByZXR1cm4gW3ZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW5dXG59XG5cbi8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoYjY0KSB7XG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIF9ieXRlTGVuZ3RoIChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pIHtcbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG5cbiAgdmFyIGFyciA9IG5ldyBBcnIoX2J5dGVMZW5ndGgoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSlcblxuICB2YXIgY3VyQnl0ZSA9IDBcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIHZhciBsZW4gPSBwbGFjZUhvbGRlcnNMZW4gPiAwXG4gICAgPyB2YWxpZExlbiAtIDRcbiAgICA6IHZhbGlkTGVuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayhcbiAgICAgIHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aClcbiAgICApKVxuICB9XG5cbiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlc1xuICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9IHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXSArXG4gICAgICAnPT0nXG4gICAgKVxuICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHtcbiAgICB0bXAgPSAodWludDhbbGVuIC0gMl0gPDwgOCkgKyB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDEwXSArXG4gICAgICBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0gK1xuICAgICAgJz0nXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYlhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWlJc0ltWnBiR1VpT2lKbGJYQjBlUzVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYlhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYlhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWlJc0ltWnBiR1VpT2lKZlpXMXdkSGt1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNlcxMTkiLCIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMSBieSBAbWF0aGlhcyAqL1xuOyhmdW5jdGlvbihyb290KSB7XG5cblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlcyAqL1xuXHR2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmXG5cdFx0IWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblx0dmFyIGZyZWVNb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJlxuXHRcdCFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsO1xuXHRpZiAoXG5cdFx0ZnJlZUdsb2JhbC5nbG9iYWwgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLndpbmRvdyA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwuc2VsZiA9PT0gZnJlZUdsb2JhbFxuXHQpIHtcblx0XHRyb290ID0gZnJlZUdsb2JhbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYHB1bnljb2RlYCBvYmplY3QuXG5cdCAqIEBuYW1lIHB1bnljb2RlXG5cdCAqIEB0eXBlIE9iamVjdFxuXHQgKi9cblx0dmFyIHB1bnljb2RlLFxuXG5cdC8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblx0bWF4SW50ID0gMjE0NzQ4MzY0NywgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG5cdC8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cblx0YmFzZSA9IDM2LFxuXHR0TWluID0gMSxcblx0dE1heCA9IDI2LFxuXHRza2V3ID0gMzgsXG5cdGRhbXAgPSA3MDAsXG5cdGluaXRpYWxCaWFzID0gNzIsXG5cdGluaXRpYWxOID0gMTI4LCAvLyAweDgwXG5cdGRlbGltaXRlciA9ICctJywgLy8gJ1xceDJEJ1xuXG5cdC8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5cdHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vLFxuXHRyZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLywgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcblx0cmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZywgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG5cdC8qKiBFcnJvciBtZXNzYWdlcyAqL1xuXHRlcnJvcnMgPSB7XG5cdFx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHRcdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG5cdH0sXG5cblx0LyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuXHRiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW4sXG5cdGZsb29yID0gTWF0aC5mbG9vcixcblx0c3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblxuXHQvKiogVGVtcG9yYXJ5IHZhcmlhYmxlICovXG5cdGtleTtcblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBlcnJvcih0eXBlKSB7XG5cdFx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG5cdCAqIGl0ZW0uXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcblx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHRcdHZhciByZXN1bHQgPSBbXTtcblx0XHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG5cdCAqIGFkZHJlc3Nlcy5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG5cdCAqIGNoYXJhY3Rlci5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcblx0ICogZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRcdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRcdHZhciByZXN1bHQgPSAnJztcblx0XHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdFx0fVxuXHRcdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0XHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRcdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0XHR2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuXHQgKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG5cdCAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG5cdCAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuXHQgKiBtYXRjaGluZyBVVEYtMTYuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuXHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZGVjb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBjb3VudGVyID0gMCxcblx0XHQgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcblx0XHQgICAgdmFsdWUsXG5cdFx0ICAgIGV4dHJhO1xuXHRcdHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHR2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHRcdC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuXHRcdFx0XHRleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGUgbmV4dFxuXHRcdFx0XHRcdC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBlbmNvZGVcblx0ICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRcdHJldHVybiBtYXAoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHR2YXIgb3V0cHV0ID0gJyc7XG5cdFx0XHRpZiAodmFsdWUgPiAweEZGRkYpIHtcblx0XHRcdFx0dmFsdWUgLT0gMHgxMDAwMDtcblx0XHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG5cdFx0XHRcdHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHR9KS5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG5cdCAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG5cdCAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRcdGlmIChjb2RlUG9pbnQgLSA0OCA8IDEwKSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gMjI7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA2NSA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gNjU7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA5NyA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gOTc7XG5cdFx0fVxuXHRcdHJldHVybiBiYXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG5cdCAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuXHQgKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuXHQgKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdFx0Ly8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcblx0XHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0XHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG5cdCAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0XHR2YXIgayA9IDA7XG5cdFx0ZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcblx0XHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdFx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRcdGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcblx0ICogc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdFx0Ly8gRG9uJ3QgdXNlIFVDUy0yXG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCxcblx0XHQgICAgb3V0LFxuXHRcdCAgICBpID0gMCxcblx0XHQgICAgbiA9IGluaXRpYWxOLFxuXHRcdCAgICBiaWFzID0gaW5pdGlhbEJpYXMsXG5cdFx0ICAgIGJhc2ljLFxuXHRcdCAgICBqLFxuXHRcdCAgICBpbmRleCxcblx0XHQgICAgb2xkaSxcblx0XHQgICAgdyxcblx0XHQgICAgayxcblx0XHQgICAgZGlnaXQsXG5cdFx0ICAgIHQsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBiYXNlTWludXNUO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdFx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0XHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHRcdGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0XHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0XHRiYXNpYyA9IDA7XG5cdFx0fVxuXG5cdFx0Zm9yIChqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG5cdFx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRcdGZvciAoaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyAvKiBubyBmaW5hbCBleHByZXNzaW9uICovKSB7XG5cblx0XHRcdC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cblx0XHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0XHQvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuXHRcdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRcdGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblxuXHRcdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0XHRlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aSArPSBkaWdpdCAqIHc7XG5cdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0aWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXG5cdFx0XHR9XG5cblx0XHRcdG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0biArPSBmbG9vcihpIC8gb3V0KTtcblx0XHRcdGkgJT0gb3V0O1xuXG5cdFx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0XG5cdFx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdWNzMmVuY29kZShvdXRwdXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG5cdCAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuXHRcdHZhciBuLFxuXHRcdCAgICBkZWx0YSxcblx0XHQgICAgaGFuZGxlZENQQ291bnQsXG5cdFx0ICAgIGJhc2ljTGVuZ3RoLFxuXHRcdCAgICBiaWFzLFxuXHRcdCAgICBqLFxuXHRcdCAgICBtLFxuXHRcdCAgICBxLFxuXHRcdCAgICBrLFxuXHRcdCAgICB0LFxuXHRcdCAgICBjdXJyZW50VmFsdWUsXG5cdFx0ICAgIG91dHB1dCA9IFtdLFxuXHRcdCAgICAvKiogYGlucHV0TGVuZ3RoYCB3aWxsIGhvbGQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiBgaW5wdXRgLiAqL1xuXHRcdCAgICBpbnB1dExlbmd0aCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSxcblx0XHQgICAgYmFzZU1pbnVzVCxcblx0XHQgICAgcU1pbnVzVDtcblxuXHRcdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcblx0XHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdFx0Ly8gQ2FjaGUgdGhlIGxlbmd0aFxuXHRcdGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcblx0XHRuID0gaW5pdGlhbE47XG5cdFx0ZGVsdGEgPSAwO1xuXHRcdGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHNcblx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuXHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cblx0XHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0XHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0XHQvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcblx0XHRpZiAoYmFzaWNMZW5ndGgpIHtcblx0XHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBlbmNvZGluZyBsb29wOlxuXHRcdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHRcdC8vIGxhcmdlciBvbmU6XG5cdFx0XHRmb3IgKG0gPSBtYXhJbnQsIGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG5cdFx0XHRoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcblx0XHRcdG4gPSBtO1xuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlclxuXHRcdFx0XHRcdGZvciAocSA9IGRlbHRhLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRcdHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcblx0XHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRcdGRlbHRhID0gMDtcblx0XHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCsrZGVsdGE7XG5cdFx0XHQrK247XG5cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG5cdCAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cblx0ICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG5cdCAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuXHQgKiBzdHJpbmcuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuXHQgKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cblx0ICogQVNDSUkuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuXHQgKiBVbmljb2RlIHN0cmluZy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuXHQgKiBlbWFpbCBhZGRyZXNzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5cdHB1bnljb2RlID0ge1xuXHRcdC8qKlxuXHRcdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBTdHJpbmdcblx0XHQgKi9cblx0XHQndmVyc2lvbic6ICcxLjQuMScsXG5cdFx0LyoqXG5cdFx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0XHQgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuXHRcdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIE9iamVjdFxuXHRcdCAqL1xuXHRcdCd1Y3MyJzoge1xuXHRcdFx0J2RlY29kZSc6IHVjczJkZWNvZGUsXG5cdFx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHRcdH0sXG5cdFx0J2RlY29kZSc6IGRlY29kZSxcblx0XHQnZW5jb2RlJzogZW5jb2RlLFxuXHRcdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0XHQndG9Vbmljb2RlJzogdG9Vbmljb2RlXG5cdH07XG5cblx0LyoqIEV4cG9zZSBgcHVueWNvZGVgICovXG5cdC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIHNwZWNpZmljIGNvbmRpdGlvbiBwYXR0ZXJuc1xuXHQvLyBsaWtlIHRoZSBmb2xsb3dpbmc6XG5cdGlmIChcblx0XHR0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiZcblx0XHR0eXBlb2YgZGVmaW5lLmFtZCA9PSAnb2JqZWN0JyAmJlxuXHRcdGRlZmluZS5hbWRcblx0KSB7XG5cdFx0ZGVmaW5lKCdwdW55Y29kZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHB1bnljb2RlO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKGZyZWVFeHBvcnRzICYmIGZyZWVNb2R1bGUpIHtcblx0XHRpZiAobW9kdWxlLmV4cG9ydHMgPT0gZnJlZUV4cG9ydHMpIHtcblx0XHRcdC8vIGluIE5vZGUuanMsIGlvLmpzLCBvciBSaW5nb0pTIHYwLjguMCtcblx0XHRcdGZyZWVNb2R1bGUuZXhwb3J0cyA9IHB1bnljb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpbiBOYXJ3aGFsIG9yIFJpbmdvSlMgdjAuNy4wLVxuXHRcdFx0Zm9yIChrZXkgaW4gcHVueWNvZGUpIHtcblx0XHRcdFx0cHVueWNvZGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAoZnJlZUV4cG9ydHNba2V5XSA9IHB1bnljb2RlW2tleV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBpbiBSaGlubyBvciBhIHdlYiBicm93c2VyXG5cdFx0cm9vdC5wdW55Y29kZSA9IHB1bnljb2RlO1xuXHR9XG5cbn0odGhpcykpO1xuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbnZhciBLX01BWF9MRU5HVEggPSAweDdmZmZmZmZmXG5leHBvcnRzLmtNYXhMZW5ndGggPSBLX01BWF9MRU5HVEhcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgUHJpbnQgd2FybmluZyBhbmQgcmVjb21tZW5kIHVzaW5nIGBidWZmZXJgIHY0Lnggd2hpY2ggaGFzIGFuIE9iamVjdFxuICogICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogV2UgcmVwb3J0IHRoYXQgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgaWYgdGhlIGFyZSBub3Qgc3ViY2xhc3NhYmxlXG4gKiB1c2luZyBfX3Byb3RvX18uIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgXG4gKiAoU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzgpLiBJRSAxMCBsYWNrcyBzdXBwb3J0XG4gKiBmb3IgX19wcm90b19fIGFuZCBoYXMgYSBidWdneSB0eXBlZCBhcnJheSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbmlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5ICcgK1xuICAgICdgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LidcbiAgKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIC8vIENhbiB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZD9cbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0geyBfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH0gfVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ3BhcmVudCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5idWZmZXJcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdvZmZzZXQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldFxuICB9XG59KVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAobGVuZ3RoID4gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBsZW5ndGggKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJylcbiAgfVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBidWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUoYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICE9IG51bGwgJiZcbiAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG5mdW5jdGlvbiBmcm9tICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHZhbHVlKVxuICB9XG5cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gICAgKVxuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2UodmFsdWUsIEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBBcnJheUJ1ZmZlcikpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgIClcbiAgfVxuXG4gIHZhciB2YWx1ZU9mID0gdmFsdWUudmFsdWVPZiAmJiB2YWx1ZS52YWx1ZU9mKClcbiAgaWYgKHZhbHVlT2YgIT0gbnVsbCAmJiB2YWx1ZU9mICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZU9mLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICB2YXIgYiA9IGZyb21PYmplY3QodmFsdWUpXG4gIGlmIChiKSByZXR1cm4gYlxuXG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9QcmltaXRpdmUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oXG4gICAgICB2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICApXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gTm90ZTogQ2hhbmdlIHByb3RvdHlwZSAqYWZ0ZXIqIEJ1ZmZlci5mcm9tIGlzIGRlZmluZWQgdG8gd29ya2Fyb3VuZCBDaHJvbWUgYnVnOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC8xNDhcbkJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbkJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBzaXplICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB2YXIgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIGJ1ZltpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wib2Zmc2V0XCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgdmFyIGJ1ZlxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgYnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW4pXG5cbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGJ1ZlxuICAgIH1cblxuICAgIG9iai5jb3B5KGJ1ZiwgMCwgMCwgbGVuKVxuICAgIHJldHVybiBidWZcbiAgfVxuXG4gIGlmIChvYmoubGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IG51bWJlcklzTmFOKG9iai5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKDApXG4gICAgfVxuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iailcbiAgfVxuXG4gIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmouZGF0YSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwgS19NQVhfTEVOR1RIYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBLX01BWF9MRU5HVEgudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiBiICE9IG51bGwgJiYgYi5faXNCdWZmZXIgPT09IHRydWUgJiZcbiAgICBiICE9PSBCdWZmZXIucHJvdG90eXBlIC8vIHNvIEJ1ZmZlci5pc0J1ZmZlcihCdWZmZXIucHJvdG90eXBlKSB3aWxsIGJlIGZhbHNlXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoaXNJbnN0YW5jZShhLCBVaW50OEFycmF5KSkgYSA9IEJ1ZmZlci5mcm9tKGEsIGEub2Zmc2V0LCBhLmJ5dGVMZW5ndGgpXG4gIGlmIChpc0luc3RhbmNlKGIsIFVpbnQ4QXJyYXkpKSBiID0gQnVmZmVyLmZyb20oYiwgYi5vZmZzZXQsIGIuYnl0ZUxlbmd0aClcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheSdcbiAgICApXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoaXNJbnN0YW5jZShidWYsIFVpbnQ4QXJyYXkpKSB7XG4gICAgICBidWYgPSBCdWZmZXIuZnJvbShidWYpXG4gICAgfVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IGlzSW5zdGFuY2Uoc3RyaW5nLCBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3RyaW5nXG4gICAgKVxuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIG11c3RNYXRjaCA9IChhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gPT09IHRydWUpXG4gIGlmICghbXVzdE1hdGNoICYmIGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkge1xuICAgICAgICAgIHJldHVybiBtdXN0TWF0Y2ggPyAtMSA6IHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIH1cbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgKGFuZCB0aGUgYGlzLWJ1ZmZlcmAgbnBtIHBhY2thZ2UpXG4vLyB0byBkZXRlY3QgYSBCdWZmZXIgaW5zdGFuY2UuIEl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBgaW5zdGFuY2VvZiBCdWZmZXJgXG4vLyByZWxpYWJseSBpbiBhIGJyb3dzZXJpZnkgY29udGV4dCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGRpZmZlcmVudFxuLy8gY29waWVzIG9mIHRoZSAnYnVmZmVyJyBwYWNrYWdlIGluIHVzZS4gVGhpcyBtZXRob2Qgd29ya3MgZXZlbiBmb3IgQnVmZmVyXG4vLyBpbnN0YW5jZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgZnJvbSBhbm90aGVyIGNvcHkgb2YgdGhlIGBidWZmZXJgIHBhY2thZ2UuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNTRcbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nXG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkucmVwbGFjZSgvKC57Mn0pL2csICckMSAnKS50cmltKClcbiAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoaXNJbnN0YW5jZSh0YXJnZXQsIFVpbnQ4QXJyYXkpKSB7XG4gICAgdGFyZ2V0ID0gQnVmZmVyLmZyb20odGFyZ2V0LCB0YXJnZXQub2Zmc2V0LCB0YXJnZXQuYnl0ZUxlbmd0aClcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ0YXJnZXRcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHRhcmdldClcbiAgICApXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0IC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChudW1iZXJJc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChudW1iZXJJc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA+Pj4gMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIChieXRlc1tpICsgMV0gKiAyNTYpKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXInKVxuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFVzZSBidWlsdC1pbiB3aGVuIGF2YWlsYWJsZSwgbWlzc2luZyBmcm9tIElFMTFcbiAgICB0aGlzLmNvcHlXaXRoaW4odGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpXG4gIH0gZWxzZSBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmICgoZW5jb2RpbmcgPT09ICd1dGY4JyAmJiBjb2RlIDwgMTI4KSB8fFxuICAgICAgICAgIGVuY29kaW5nID09PSAnbGF0aW4xJykge1xuICAgICAgICAvLyBGYXN0IHBhdGg6IElmIGB2YWxgIGZpdHMgaW50byBhIHNpbmdsZSBieXRlLCB1c2UgdGhhdCBudW1lcmljIHZhbHVlLlxuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJyArIHZhbCArXG4gICAgICAgICdcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKVxuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXisvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHRha2VzIGVxdWFsIHNpZ25zIGFzIGVuZCBvZiB0aGUgQmFzZTY0IGVuY29kaW5nXG4gIHN0ciA9IHN0ci5zcGxpdCgnPScpWzBdXG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuLy8gQXJyYXlCdWZmZXIgb3IgVWludDhBcnJheSBvYmplY3RzIGZyb20gb3RoZXIgY29udGV4dHMgKGkuZS4gaWZyYW1lcykgZG8gbm90IHBhc3Ncbi8vIHRoZSBgaW5zdGFuY2VvZmAgY2hlY2sgYnV0IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgb2YgdGhhdCB0eXBlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTY2XG5mdW5jdGlvbiBpc0luc3RhbmNlIChvYmosIHR5cGUpIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIHR5cGUgfHxcbiAgICAob2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUgIT0gbnVsbCAmJlxuICAgICAgb2JqLmNvbnN0cnVjdG9yLm5hbWUgPT09IHR5cGUubmFtZSlcbn1cbmZ1bmN0aW9uIG51bWJlcklzTmFOIChvYmopIHtcbiAgLy8gRm9yIElFMTEgc3VwcG9ydFxuICByZXR1cm4gb2JqICE9PSBvYmogLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcIjEwMFwiOiBcIkNvbnRpbnVlXCIsXG4gIFwiMTAxXCI6IFwiU3dpdGNoaW5nIFByb3RvY29sc1wiLFxuICBcIjEwMlwiOiBcIlByb2Nlc3NpbmdcIixcbiAgXCIyMDBcIjogXCJPS1wiLFxuICBcIjIwMVwiOiBcIkNyZWF0ZWRcIixcbiAgXCIyMDJcIjogXCJBY2NlcHRlZFwiLFxuICBcIjIwM1wiOiBcIk5vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uXCIsXG4gIFwiMjA0XCI6IFwiTm8gQ29udGVudFwiLFxuICBcIjIwNVwiOiBcIlJlc2V0IENvbnRlbnRcIixcbiAgXCIyMDZcIjogXCJQYXJ0aWFsIENvbnRlbnRcIixcbiAgXCIyMDdcIjogXCJNdWx0aS1TdGF0dXNcIixcbiAgXCIyMDhcIjogXCJBbHJlYWR5IFJlcG9ydGVkXCIsXG4gIFwiMjI2XCI6IFwiSU0gVXNlZFwiLFxuICBcIjMwMFwiOiBcIk11bHRpcGxlIENob2ljZXNcIixcbiAgXCIzMDFcIjogXCJNb3ZlZCBQZXJtYW5lbnRseVwiLFxuICBcIjMwMlwiOiBcIkZvdW5kXCIsXG4gIFwiMzAzXCI6IFwiU2VlIE90aGVyXCIsXG4gIFwiMzA0XCI6IFwiTm90IE1vZGlmaWVkXCIsXG4gIFwiMzA1XCI6IFwiVXNlIFByb3h5XCIsXG4gIFwiMzA3XCI6IFwiVGVtcG9yYXJ5IFJlZGlyZWN0XCIsXG4gIFwiMzA4XCI6IFwiUGVybWFuZW50IFJlZGlyZWN0XCIsXG4gIFwiNDAwXCI6IFwiQmFkIFJlcXVlc3RcIixcbiAgXCI0MDFcIjogXCJVbmF1dGhvcml6ZWRcIixcbiAgXCI0MDJcIjogXCJQYXltZW50IFJlcXVpcmVkXCIsXG4gIFwiNDAzXCI6IFwiRm9yYmlkZGVuXCIsXG4gIFwiNDA0XCI6IFwiTm90IEZvdW5kXCIsXG4gIFwiNDA1XCI6IFwiTWV0aG9kIE5vdCBBbGxvd2VkXCIsXG4gIFwiNDA2XCI6IFwiTm90IEFjY2VwdGFibGVcIixcbiAgXCI0MDdcIjogXCJQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiLFxuICBcIjQwOFwiOiBcIlJlcXVlc3QgVGltZW91dFwiLFxuICBcIjQwOVwiOiBcIkNvbmZsaWN0XCIsXG4gIFwiNDEwXCI6IFwiR29uZVwiLFxuICBcIjQxMVwiOiBcIkxlbmd0aCBSZXF1aXJlZFwiLFxuICBcIjQxMlwiOiBcIlByZWNvbmRpdGlvbiBGYWlsZWRcIixcbiAgXCI0MTNcIjogXCJQYXlsb2FkIFRvbyBMYXJnZVwiLFxuICBcIjQxNFwiOiBcIlVSSSBUb28gTG9uZ1wiLFxuICBcIjQxNVwiOiBcIlVuc3VwcG9ydGVkIE1lZGlhIFR5cGVcIixcbiAgXCI0MTZcIjogXCJSYW5nZSBOb3QgU2F0aXNmaWFibGVcIixcbiAgXCI0MTdcIjogXCJFeHBlY3RhdGlvbiBGYWlsZWRcIixcbiAgXCI0MThcIjogXCJJJ20gYSB0ZWFwb3RcIixcbiAgXCI0MjFcIjogXCJNaXNkaXJlY3RlZCBSZXF1ZXN0XCIsXG4gIFwiNDIyXCI6IFwiVW5wcm9jZXNzYWJsZSBFbnRpdHlcIixcbiAgXCI0MjNcIjogXCJMb2NrZWRcIixcbiAgXCI0MjRcIjogXCJGYWlsZWQgRGVwZW5kZW5jeVwiLFxuICBcIjQyNVwiOiBcIlVub3JkZXJlZCBDb2xsZWN0aW9uXCIsXG4gIFwiNDI2XCI6IFwiVXBncmFkZSBSZXF1aXJlZFwiLFxuICBcIjQyOFwiOiBcIlByZWNvbmRpdGlvbiBSZXF1aXJlZFwiLFxuICBcIjQyOVwiOiBcIlRvbyBNYW55IFJlcXVlc3RzXCIsXG4gIFwiNDMxXCI6IFwiUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZVwiLFxuICBcIjQ1MVwiOiBcIlVuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zXCIsXG4gIFwiNTAwXCI6IFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIsXG4gIFwiNTAxXCI6IFwiTm90IEltcGxlbWVudGVkXCIsXG4gIFwiNTAyXCI6IFwiQmFkIEdhdGV3YXlcIixcbiAgXCI1MDNcIjogXCJTZXJ2aWNlIFVuYXZhaWxhYmxlXCIsXG4gIFwiNTA0XCI6IFwiR2F0ZXdheSBUaW1lb3V0XCIsXG4gIFwiNTA1XCI6IFwiSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWRcIixcbiAgXCI1MDZcIjogXCJWYXJpYW50IEFsc28gTmVnb3RpYXRlc1wiLFxuICBcIjUwN1wiOiBcIkluc3VmZmljaWVudCBTdG9yYWdlXCIsXG4gIFwiNTA4XCI6IFwiTG9vcCBEZXRlY3RlZFwiLFxuICBcIjUwOVwiOiBcIkJhbmR3aWR0aCBMaW1pdCBFeGNlZWRlZFwiLFxuICBcIjUxMFwiOiBcIk5vdCBFeHRlbmRlZFwiLFxuICBcIjUxMVwiOiBcIk5ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWRcIlxufVxuIiwiXCJ1c2Ugc3RyaWN0XCJcblxudmFyIG5leHQgPSAoZ2xvYmFsLnByb2Nlc3MgJiYgcHJvY2Vzcy5uZXh0VGljaykgfHwgZ2xvYmFsLnNldEltbWVkaWF0ZSB8fCBmdW5jdGlvbiAoZikge1xuICBzZXRUaW1lb3V0KGYsIDApXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWF5YmUgKGNiLCBwcm9taXNlKSB7XG4gIGlmIChjYikge1xuICAgIHByb21pc2VcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgbmV4dChmdW5jdGlvbiAoKSB7IGNiKG51bGwsIHJlc3VsdCkgfSlcbiAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgbmV4dChmdW5jdGlvbiAoKSB7IGNiKGVycikgfSlcbiAgICAgIH0pXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBwcm9taXNlXG4gIH1cbn1cbiIsIlxyXG4vKipcclxuICogRXhwb3NlIGBFbWl0dGVyYC5cclxuICovXHJcblxyXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICBtb2R1bGUuZXhwb3J0cyA9IEVtaXR0ZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbml0aWFsaXplIGEgbmV3IGBFbWl0dGVyYC5cclxuICpcclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5mdW5jdGlvbiBFbWl0dGVyKG9iaikge1xyXG4gIGlmIChvYmopIHJldHVybiBtaXhpbihvYmopO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIE1peGluIHRoZSBlbWl0dGVyIHByb3BlcnRpZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcclxuICogQHJldHVybiB7T2JqZWN0fVxyXG4gKiBAYXBpIHByaXZhdGVcclxuICovXHJcblxyXG5mdW5jdGlvbiBtaXhpbihvYmopIHtcclxuICBmb3IgKHZhciBrZXkgaW4gRW1pdHRlci5wcm90b3R5cGUpIHtcclxuICAgIG9ialtrZXldID0gRW1pdHRlci5wcm90b3R5cGVba2V5XTtcclxuICB9XHJcbiAgcmV0dXJuIG9iajtcclxufVxyXG5cclxuLyoqXHJcbiAqIExpc3RlbiBvbiB0aGUgZ2l2ZW4gYGV2ZW50YCB3aXRoIGBmbmAuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxyXG4gKiBAcmV0dXJuIHtFbWl0dGVyfVxyXG4gKiBAYXBpIHB1YmxpY1xyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLm9uID1cclxuRW1pdHRlci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50LCBmbil7XHJcbiAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xyXG4gICh0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdID0gdGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XSB8fCBbXSlcclxuICAgIC5wdXNoKGZuKTtcclxuICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBBZGRzIGFuIGBldmVudGAgbGlzdGVuZXIgdGhhdCB3aWxsIGJlIGludm9rZWQgYSBzaW5nbGVcclxuICogdGltZSB0aGVuIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXHJcbiAqIEByZXR1cm4ge0VtaXR0ZXJ9XHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuRW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uKGV2ZW50LCBmbil7XHJcbiAgZnVuY3Rpb24gb24oKSB7XHJcbiAgICB0aGlzLm9mZihldmVudCwgb24pO1xyXG4gICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICB9XHJcblxyXG4gIG9uLmZuID0gZm47XHJcbiAgdGhpcy5vbihldmVudCwgb24pO1xyXG4gIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgZ2l2ZW4gY2FsbGJhY2sgZm9yIGBldmVudGAgb3IgYWxsXHJcbiAqIHJlZ2lzdGVyZWQgY2FsbGJhY2tzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cclxuICogQHJldHVybiB7RW1pdHRlcn1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5vZmYgPVxyXG5FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XHJcbkVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XHJcbkVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZm4pe1xyXG4gIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcclxuXHJcbiAgLy8gYWxsXHJcbiAgaWYgKDAgPT0gYXJndW1lbnRzLmxlbmd0aCkge1xyXG4gICAgdGhpcy5fY2FsbGJhY2tzID0ge307XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8vIHNwZWNpZmljIGV2ZW50XHJcbiAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07XHJcbiAgaWYgKCFjYWxsYmFja3MpIHJldHVybiB0aGlzO1xyXG5cclxuICAvLyByZW1vdmUgYWxsIGhhbmRsZXJzXHJcbiAgaWYgKDEgPT0gYXJndW1lbnRzLmxlbmd0aCkge1xyXG4gICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8vIHJlbW92ZSBzcGVjaWZpYyBoYW5kbGVyXHJcbiAgdmFyIGNiO1xyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjYiA9IGNhbGxiYWNrc1tpXTtcclxuICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XHJcbiAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBFbWl0IGBldmVudGAgd2l0aCB0aGUgZ2l2ZW4gYXJncy5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEBwYXJhbSB7TWl4ZWR9IC4uLlxyXG4gKiBAcmV0dXJuIHtFbWl0dGVyfVxyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbihldmVudCl7XHJcbiAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xyXG4gIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpXHJcbiAgICAsIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07XHJcblxyXG4gIGlmIChjYWxsYmFja3MpIHtcclxuICAgIGNhbGxiYWNrcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcclxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjYWxsYmFja3MubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcclxuICAgICAgY2FsbGJhY2tzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJuIGFycmF5IG9mIGNhbGxiYWNrcyBmb3IgYGV2ZW50YC5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEByZXR1cm4ge0FycmF5fVxyXG4gKiBAYXBpIHB1YmxpY1xyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKGV2ZW50KXtcclxuICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307XHJcbiAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF0gfHwgW107XHJcbn07XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhpcyBlbWl0dGVyIGhhcyBgZXZlbnRgIGhhbmRsZXJzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcclxuICogQHJldHVybiB7Qm9vbGVhbn1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5oYXNMaXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudCl7XHJcbiAgcmV0dXJuICEhIHRoaXMubGlzdGVuZXJzKGV2ZW50KS5sZW5ndGg7XHJcbn07XHJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuXG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICBpZiAoQXJyYXkuaXNBcnJheSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7XG4gIH1cbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGFyZykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7XG59XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcblxuZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGwgPSBpc051bGw7XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5leHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGwgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8fCAgLy8gRVM2IHN5bWJvbFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSBCdWZmZXIuaXNCdWZmZXI7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cbiIsIi8qKlxuICogVGhpcyBpcyB0aGUgd2ViIGJyb3dzZXIgaW1wbGVtZW50YXRpb24gb2YgYGRlYnVnKClgLlxuICpcbiAqIEV4cG9zZSBgZGVidWcoKWAgYXMgdGhlIG1vZHVsZS5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RlYnVnJyk7XG5leHBvcnRzLmxvZyA9IGxvZztcbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5zdG9yYWdlID0gJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIGNocm9tZVxuICAgICAgICAgICAgICAgJiYgJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIGNocm9tZS5zdG9yYWdlXG4gICAgICAgICAgICAgICAgICA/IGNocm9tZS5zdG9yYWdlLmxvY2FsXG4gICAgICAgICAgICAgICAgICA6IGxvY2Fsc3RvcmFnZSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcbiAgJyMwMDAwQ0MnLCAnIzAwMDBGRicsICcjMDAzM0NDJywgJyMwMDMzRkYnLCAnIzAwNjZDQycsICcjMDA2NkZGJywgJyMwMDk5Q0MnLFxuICAnIzAwOTlGRicsICcjMDBDQzAwJywgJyMwMENDMzMnLCAnIzAwQ0M2NicsICcjMDBDQzk5JywgJyMwMENDQ0MnLCAnIzAwQ0NGRicsXG4gICcjMzMwMENDJywgJyMzMzAwRkYnLCAnIzMzMzNDQycsICcjMzMzM0ZGJywgJyMzMzY2Q0MnLCAnIzMzNjZGRicsICcjMzM5OUNDJyxcbiAgJyMzMzk5RkYnLCAnIzMzQ0MwMCcsICcjMzNDQzMzJywgJyMzM0NDNjYnLCAnIzMzQ0M5OScsICcjMzNDQ0NDJywgJyMzM0NDRkYnLFxuICAnIzY2MDBDQycsICcjNjYwMEZGJywgJyM2NjMzQ0MnLCAnIzY2MzNGRicsICcjNjZDQzAwJywgJyM2NkNDMzMnLCAnIzk5MDBDQycsXG4gICcjOTkwMEZGJywgJyM5OTMzQ0MnLCAnIzk5MzNGRicsICcjOTlDQzAwJywgJyM5OUNDMzMnLCAnI0NDMDAwMCcsICcjQ0MwMDMzJyxcbiAgJyNDQzAwNjYnLCAnI0NDMDA5OScsICcjQ0MwMENDJywgJyNDQzAwRkYnLCAnI0NDMzMwMCcsICcjQ0MzMzMzJywgJyNDQzMzNjYnLFxuICAnI0NDMzM5OScsICcjQ0MzM0NDJywgJyNDQzMzRkYnLCAnI0NDNjYwMCcsICcjQ0M2NjMzJywgJyNDQzk5MDAnLCAnI0NDOTkzMycsXG4gICcjQ0NDQzAwJywgJyNDQ0NDMzMnLCAnI0ZGMDAwMCcsICcjRkYwMDMzJywgJyNGRjAwNjYnLCAnI0ZGMDA5OScsICcjRkYwMENDJyxcbiAgJyNGRjAwRkYnLCAnI0ZGMzMwMCcsICcjRkYzMzMzJywgJyNGRjMzNjYnLCAnI0ZGMzM5OScsICcjRkYzM0NDJywgJyNGRjMzRkYnLFxuICAnI0ZGNjYwMCcsICcjRkY2NjMzJywgJyNGRjk5MDAnLCAnI0ZGOTkzMycsICcjRkZDQzAwJywgJyNGRkNDMzMnXG5dO1xuXG4vKipcbiAqIEN1cnJlbnRseSBvbmx5IFdlYktpdC1iYXNlZCBXZWIgSW5zcGVjdG9ycywgRmlyZWZveCA+PSB2MzEsXG4gKiBhbmQgdGhlIEZpcmVidWcgZXh0ZW5zaW9uIChhbnkgRmlyZWZveCB2ZXJzaW9uKSBhcmUga25vd25cbiAqIHRvIHN1cHBvcnQgXCIlY1wiIENTUyBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBUT0RPOiBhZGQgYSBgbG9jYWxTdG9yYWdlYCB2YXJpYWJsZSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIGNvbG9yc1xuICovXG5cbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcbiAgLy8gTkI6IEluIGFuIEVsZWN0cm9uIHByZWxvYWQgc2NyaXB0LCBkb2N1bWVudCB3aWxsIGJlIGRlZmluZWQgYnV0IG5vdCBmdWxseVxuICAvLyBpbml0aWFsaXplZC4gU2luY2Ugd2Uga25vdyB3ZSdyZSBpbiBDaHJvbWUsIHdlJ2xsIGp1c3QgZGV0ZWN0IHRoaXMgY2FzZVxuICAvLyBleHBsaWNpdGx5XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucHJvY2VzcyAmJiB3aW5kb3cucHJvY2Vzcy50eXBlID09PSAncmVuZGVyZXInKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSBkbyBub3Qgc3VwcG9ydCBjb2xvcnMuXG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcXC8oXFxkKykvKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGlzIHdlYmtpdD8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTY0NTk2MDYvMzc2NzczXG4gIC8vIGRvY3VtZW50IGlzIHVuZGVmaW5lZCBpbiByZWFjdC1uYXRpdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC1uYXRpdmUvcHVsbC8xNjMyXG4gIHJldHVybiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlKSB8fFxuICAgIC8vIGlzIGZpcmVidWc/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5ODEyMC8zNzY3NzNcbiAgICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLmZpcmVidWcgfHwgKHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiAmJiB3aW5kb3cuY29uc29sZS50YWJsZSkpKSB8fFxuICAgIC8vIGlzIGZpcmVmb3ggPj0gdjMxP1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvV2ViX0NvbnNvbGUjU3R5bGluZ19tZXNzYWdlc1xuICAgICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKSB8fFxuICAgIC8vIGRvdWJsZSBjaGVjayB3ZWJraXQgaW4gdXNlckFnZW50IGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSB3b3JrZXJcbiAgICAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpO1xufVxuXG4vKipcbiAqIE1hcCAlaiB0byBgSlNPTi5zdHJpbmdpZnkoKWAsIHNpbmNlIG5vIFdlYiBJbnNwZWN0b3JzIGRvIHRoYXQgYnkgZGVmYXVsdC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMuaiA9IGZ1bmN0aW9uKHYpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAnW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06ICcgKyBlcnIubWVzc2FnZTtcbiAgfVxufTtcblxuXG4vKipcbiAqIENvbG9yaXplIGxvZyBhcmd1bWVudHMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuICB2YXIgdXNlQ29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG5cbiAgYXJnc1swXSA9ICh1c2VDb2xvcnMgPyAnJWMnIDogJycpXG4gICAgKyB0aGlzLm5hbWVzcGFjZVxuICAgICsgKHVzZUNvbG9ycyA/ICcgJWMnIDogJyAnKVxuICAgICsgYXJnc1swXVxuICAgICsgKHVzZUNvbG9ycyA/ICclYyAnIDogJyAnKVxuICAgICsgJysnICsgZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpO1xuXG4gIGlmICghdXNlQ29sb3JzKSByZXR1cm47XG5cbiAgdmFyIGMgPSAnY29sb3I6ICcgKyB0aGlzLmNvbG9yO1xuICBhcmdzLnNwbGljZSgxLCAwLCBjLCAnY29sb3I6IGluaGVyaXQnKVxuXG4gIC8vIHRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG4gIC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cbiAgLy8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsYXN0QyA9IDA7XG4gIGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIGlmICgnJSUnID09PSBtYXRjaCkgcmV0dXJuO1xuICAgIGluZGV4Kys7XG4gICAgaWYgKCclYycgPT09IG1hdGNoKSB7XG4gICAgICAvLyB3ZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcbiAgICAgIC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG4gICAgICBsYXN0QyA9IGluZGV4O1xuICAgIH1cbiAgfSk7XG5cbiAgYXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUubG9nKClgIHdoZW4gYXZhaWxhYmxlLlxuICogTm8tb3Agd2hlbiBgY29uc29sZS5sb2dgIGlzIG5vdCBhIFwiZnVuY3Rpb25cIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGxvZygpIHtcbiAgLy8gdGhpcyBoYWNrZXJ5IGlzIHJlcXVpcmVkIGZvciBJRTgvOSwgd2hlcmVcbiAgLy8gdGhlIGBjb25zb2xlLmxvZ2AgZnVuY3Rpb24gZG9lc24ndCBoYXZlICdhcHBseSdcbiAgcmV0dXJuICdvYmplY3QnID09PSB0eXBlb2YgY29uc29sZVxuICAgICYmIGNvbnNvbGUubG9nXG4gICAgJiYgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZS5sb2csIGNvbnNvbGUsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogU2F2ZSBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuICB0cnkge1xuICAgIGlmIChudWxsID09IG5hbWVzcGFjZXMpIHtcbiAgICAgIGV4cG9ydHMuc3RvcmFnZS5yZW1vdmVJdGVtKCdkZWJ1ZycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UuZGVidWcgPSBuYW1lc3BhY2VzO1xuICAgIH1cbiAgfSBjYXRjaChlKSB7fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWQoKSB7XG4gIHZhciByO1xuICB0cnkge1xuICAgIHIgPSBleHBvcnRzLnN0b3JhZ2UuZGVidWc7XG4gIH0gY2F0Y2goZSkge31cblxuICAvLyBJZiBkZWJ1ZyBpc24ndCBzZXQgaW4gTFMsIGFuZCB3ZSdyZSBpbiBFbGVjdHJvbiwgdHJ5IHRvIGxvYWQgJERFQlVHXG4gIGlmICghciAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2VudicgaW4gcHJvY2Vzcykge1xuICAgIHIgPSBwcm9jZXNzLmVudi5ERUJVRztcbiAgfVxuXG4gIHJldHVybiByO1xufVxuXG4vKipcbiAqIEVuYWJsZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiBgbG9jYWxTdG9yYWdlLmRlYnVnYCBpbml0aWFsbHkuXG4gKi9cblxuZXhwb3J0cy5lbmFibGUobG9hZCgpKTtcblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2U7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG4iLCJcbi8qKlxuICogVGhpcyBpcyB0aGUgY29tbW9uIGxvZ2ljIGZvciBib3RoIHRoZSBOb2RlLmpzIGFuZCB3ZWIgYnJvd3NlclxuICogaW1wbGVtZW50YXRpb25zIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gY3JlYXRlRGVidWcuZGVidWcgPSBjcmVhdGVEZWJ1Z1snZGVmYXVsdCddID0gY3JlYXRlRGVidWc7XG5leHBvcnRzLmNvZXJjZSA9IGNvZXJjZTtcbmV4cG9ydHMuZGlzYWJsZSA9IGRpc2FibGU7XG5leHBvcnRzLmVuYWJsZSA9IGVuYWJsZTtcbmV4cG9ydHMuZW5hYmxlZCA9IGVuYWJsZWQ7XG5leHBvcnRzLmh1bWFuaXplID0gcmVxdWlyZSgnbXMnKTtcblxuLyoqXG4gKiBBY3RpdmUgYGRlYnVnYCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydHMuaW5zdGFuY2VzID0gW107XG5cbi8qKlxuICogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG4gKi9cblxuZXhwb3J0cy5uYW1lcyA9IFtdO1xuZXhwb3J0cy5za2lwcyA9IFtdO1xuXG4vKipcbiAqIE1hcCBvZiBzcGVjaWFsIFwiJW5cIiBoYW5kbGluZyBmdW5jdGlvbnMsIGZvciB0aGUgZGVidWcgXCJmb3JtYXRcIiBhcmd1bWVudC5cbiAqXG4gKiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlciBvciB1cHBlci1jYXNlIGxldHRlciwgaS5lLiBcIm5cIiBhbmQgXCJOXCIuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzID0ge307XG5cbi8qKlxuICogU2VsZWN0IGEgY29sb3IuXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzZWxlY3RDb2xvcihuYW1lc3BhY2UpIHtcbiAgdmFyIGhhc2ggPSAwLCBpO1xuXG4gIGZvciAoaSBpbiBuYW1lc3BhY2UpIHtcbiAgICBoYXNoICA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgbmFtZXNwYWNlLmNoYXJDb2RlQXQoaSk7XG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLmNvbG9yc1tNYXRoLmFicyhoYXNoKSAlIGV4cG9ydHMuY29sb3JzLmxlbmd0aF07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVidWdnZXIgd2l0aCB0aGUgZ2l2ZW4gYG5hbWVzcGFjZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZURlYnVnKG5hbWVzcGFjZSkge1xuXG4gIHZhciBwcmV2VGltZTtcblxuICBmdW5jdGlvbiBkZWJ1ZygpIHtcbiAgICAvLyBkaXNhYmxlZD9cbiAgICBpZiAoIWRlYnVnLmVuYWJsZWQpIHJldHVybjtcblxuICAgIHZhciBzZWxmID0gZGVidWc7XG5cbiAgICAvLyBzZXQgYGRpZmZgIHRpbWVzdGFtcFxuICAgIHZhciBjdXJyID0gK25ldyBEYXRlKCk7XG4gICAgdmFyIG1zID0gY3VyciAtIChwcmV2VGltZSB8fCBjdXJyKTtcbiAgICBzZWxmLmRpZmYgPSBtcztcbiAgICBzZWxmLnByZXYgPSBwcmV2VGltZTtcbiAgICBzZWxmLmN1cnIgPSBjdXJyO1xuICAgIHByZXZUaW1lID0gY3VycjtcblxuICAgIC8vIHR1cm4gdGhlIGBhcmd1bWVudHNgIGludG8gYSBwcm9wZXIgQXJyYXlcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuXG4gICAgYXJnc1swXSA9IGV4cG9ydHMuY29lcmNlKGFyZ3NbMF0pO1xuXG4gICAgaWYgKCdzdHJpbmcnICE9PSB0eXBlb2YgYXJnc1swXSkge1xuICAgICAgLy8gYW55dGhpbmcgZWxzZSBsZXQncyBpbnNwZWN0IHdpdGggJU9cbiAgICAgIGFyZ3MudW5zaGlmdCgnJU8nKTtcbiAgICB9XG5cbiAgICAvLyBhcHBseSBhbnkgYGZvcm1hdHRlcnNgIHRyYW5zZm9ybWF0aW9uc1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgYXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIGZ1bmN0aW9uKG1hdGNoLCBmb3JtYXQpIHtcbiAgICAgIC8vIGlmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcbiAgICAgIGlmIChtYXRjaCA9PT0gJyUlJykgcmV0dXJuIG1hdGNoO1xuICAgICAgaW5kZXgrKztcbiAgICAgIHZhciBmb3JtYXR0ZXIgPSBleHBvcnRzLmZvcm1hdHRlcnNbZm9ybWF0XTtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZm9ybWF0dGVyKSB7XG4gICAgICAgIHZhciB2YWwgPSBhcmdzW2luZGV4XTtcbiAgICAgICAgbWF0Y2ggPSBmb3JtYXR0ZXIuY2FsbChzZWxmLCB2YWwpO1xuXG4gICAgICAgIC8vIG5vdyB3ZSBuZWVkIHRvIHJlbW92ZSBgYXJnc1tpbmRleF1gIHNpbmNlIGl0J3MgaW5saW5lZCBpbiB0aGUgYGZvcm1hdGBcbiAgICAgICAgYXJncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpbmRleC0tO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pO1xuXG4gICAgLy8gYXBwbHkgZW52LXNwZWNpZmljIGZvcm1hdHRpbmcgKGNvbG9ycywgZXRjLilcbiAgICBleHBvcnRzLmZvcm1hdEFyZ3MuY2FsbChzZWxmLCBhcmdzKTtcblxuICAgIHZhciBsb2dGbiA9IGRlYnVnLmxvZyB8fCBleHBvcnRzLmxvZyB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO1xuICAgIGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICBkZWJ1Zy5lbmFibGVkID0gZXhwb3J0cy5lbmFibGVkKG5hbWVzcGFjZSk7XG4gIGRlYnVnLnVzZUNvbG9ycyA9IGV4cG9ydHMudXNlQ29sb3JzKCk7XG4gIGRlYnVnLmNvbG9yID0gc2VsZWN0Q29sb3IobmFtZXNwYWNlKTtcbiAgZGVidWcuZGVzdHJveSA9IGRlc3Ryb3k7XG5cbiAgLy8gZW52LXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBkZWJ1ZyBpbnN0YW5jZXNcbiAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBleHBvcnRzLmluaXQpIHtcbiAgICBleHBvcnRzLmluaXQoZGVidWcpO1xuICB9XG5cbiAgZXhwb3J0cy5pbnN0YW5jZXMucHVzaChkZWJ1Zyk7XG5cbiAgcmV0dXJuIGRlYnVnO1xufVxuXG5mdW5jdGlvbiBkZXN0cm95ICgpIHtcbiAgdmFyIGluZGV4ID0gZXhwb3J0cy5pbnN0YW5jZXMuaW5kZXhPZih0aGlzKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGV4cG9ydHMuaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogRW5hYmxlcyBhIGRlYnVnIG1vZGUgYnkgbmFtZXNwYWNlcy4gVGhpcyBjYW4gaW5jbHVkZSBtb2Rlc1xuICogc2VwYXJhdGVkIGJ5IGEgY29sb24gYW5kIHdpbGRjYXJkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmFibGUobmFtZXNwYWNlcykge1xuICBleHBvcnRzLnNhdmUobmFtZXNwYWNlcyk7XG5cbiAgZXhwb3J0cy5uYW1lcyA9IFtdO1xuICBleHBvcnRzLnNraXBzID0gW107XG5cbiAgdmFyIGk7XG4gIHZhciBzcGxpdCA9ICh0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzIDogJycpLnNwbGl0KC9bXFxzLF0rLyk7XG4gIHZhciBsZW4gPSBzcGxpdC5sZW5ndGg7XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKCFzcGxpdFtpXSkgY29udGludWU7IC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG4gICAgbmFtZXNwYWNlcyA9IHNwbGl0W2ldLnJlcGxhY2UoL1xcKi9nLCAnLio/Jyk7XG4gICAgaWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuICAgICAgZXhwb3J0cy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zdWJzdHIoMSkgKyAnJCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcyArICckJykpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCBleHBvcnRzLmluc3RhbmNlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpbnN0YW5jZSA9IGV4cG9ydHMuaW5zdGFuY2VzW2ldO1xuICAgIGluc3RhbmNlLmVuYWJsZWQgPSBleHBvcnRzLmVuYWJsZWQoaW5zdGFuY2UubmFtZXNwYWNlKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc2FibGUgZGVidWcgb3V0cHV0LlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgZXhwb3J0cy5lbmFibGUoJycpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9kZSBuYW1lIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG4gIGlmIChuYW1lW25hbWUubGVuZ3RoIC0gMV0gPT09ICcqJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBpLCBsZW47XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMubmFtZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5uYW1lc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENvZXJjZSBgdmFsYC5cbiAqXG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuICBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiB2YWwuc3RhY2sgfHwgdmFsLm1lc3NhZ2U7XG4gIHJldHVybiB2YWw7XG59XG4iLCIvKiFcbiAqIEBkZXNjcmlwdGlvbiBSZWN1cnNpdmUgb2JqZWN0IGV4dGVuZGluZ1xuICogQGF1dGhvciBWaWFjaGVzbGF2IExvdHNtYW5vdiA8bG90c21hbm92ODlAZ21haWwuY29tPlxuICogQGxpY2Vuc2UgTUlUXG4gKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTggVmlhY2hlc2xhdiBMb3RzbWFub3ZcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mXG4gKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluXG4gKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvXG4gKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZlxuICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLFxuICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTXG4gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbiAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUlxuICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cbiAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBpc1NwZWNpZmljVmFsdWUodmFsKSB7XG5cdHJldHVybiAoXG5cdFx0dmFsIGluc3RhbmNlb2YgQnVmZmVyXG5cdFx0fHwgdmFsIGluc3RhbmNlb2YgRGF0ZVxuXHRcdHx8IHZhbCBpbnN0YW5jZW9mIFJlZ0V4cFxuXHQpID8gdHJ1ZSA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjbG9uZVNwZWNpZmljVmFsdWUodmFsKSB7XG5cdGlmICh2YWwgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHR2YXIgeCA9IEJ1ZmZlci5hbGxvY1xuXHRcdFx0PyBCdWZmZXIuYWxsb2ModmFsLmxlbmd0aClcblx0XHRcdDogbmV3IEJ1ZmZlcih2YWwubGVuZ3RoKTtcblx0XHR2YWwuY29weSh4KTtcblx0XHRyZXR1cm4geDtcblx0fSBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbC5nZXRUaW1lKCkpO1xuXHR9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXHRcdHJldHVybiBuZXcgUmVnRXhwKHZhbCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHNpdHVhdGlvbicpO1xuXHR9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlIGNsb25pbmcgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGRlZXBDbG9uZUFycmF5KGFycikge1xuXHR2YXIgY2xvbmUgPSBbXTtcblx0YXJyLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuXHRcdFx0XHRjbG9uZVtpbmRleF0gPSBkZWVwQ2xvbmVBcnJheShpdGVtKTtcblx0XHRcdH0gZWxzZSBpZiAoaXNTcGVjaWZpY1ZhbHVlKGl0ZW0pKSB7XG5cdFx0XHRcdGNsb25lW2luZGV4XSA9IGNsb25lU3BlY2lmaWNWYWx1ZShpdGVtKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lW2luZGV4XSA9IGRlZXBFeHRlbmQoe30sIGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjbG9uZVtpbmRleF0gPSBpdGVtO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBjbG9uZTtcbn1cblxuZnVuY3Rpb24gc2FmZUdldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHkpIHtcblx0cmV0dXJuIHByb3BlcnR5ID09PSAnX19wcm90b19fJyA/IHVuZGVmaW5lZCA6IG9iamVjdFtwcm9wZXJ0eV07XG59XG5cbi8qKlxuICogRXh0ZW5pbmcgb2JqZWN0IHRoYXQgZW50ZXJlZCBpbiBmaXJzdCBhcmd1bWVudC5cbiAqXG4gKiBSZXR1cm5zIGV4dGVuZGVkIG9iamVjdCBvciBmYWxzZSBpZiBoYXZlIG5vIHRhcmdldCBvYmplY3Qgb3IgaW5jb3JyZWN0IHR5cGUuXG4gKlxuICogSWYgeW91IHdpc2ggdG8gY2xvbmUgc291cmNlIG9iamVjdCAod2l0aG91dCBtb2RpZnkgaXQpLCBqdXN0IHVzZSBlbXB0eSBuZXdcbiAqIG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudCwgbGlrZSB0aGlzOlxuICogICBkZWVwRXh0ZW5kKHt9LCB5b3VyT2JqXzEsIFt5b3VyT2JqX05dKTtcbiAqL1xudmFyIGRlZXBFeHRlbmQgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgvKm9ial8xLCBbb2JqXzJdLCBbb2JqX05dKi8pIHtcblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxIHx8IHR5cGVvZiBhcmd1bWVudHNbMF0gIT09ICdvYmplY3QnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG5cdFx0cmV0dXJuIGFyZ3VtZW50c1swXTtcblx0fVxuXG5cdHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMF07XG5cblx0Ly8gY29udmVydCBhcmd1bWVudHMgdG8gYXJyYXkgYW5kIGN1dCBvZmYgdGFyZ2V0IG9iamVjdFxuXHR2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cblx0dmFyIHZhbCwgc3JjLCBjbG9uZTtcblxuXHRhcmdzLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuXHRcdC8vIHNraXAgYXJndW1lbnQgaWYgaXNuJ3QgYW4gb2JqZWN0LCBpcyBudWxsLCBvciBpcyBhbiBhcnJheVxuXHRcdGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdHNyYyA9IHNhZmVHZXRQcm9wZXJ0eSh0YXJnZXQsIGtleSk7IC8vIHNvdXJjZSB2YWx1ZVxuXHRcdFx0dmFsID0gc2FmZUdldFByb3BlcnR5KG9iaiwga2V5KTsgLy8gbmV3IHZhbHVlXG5cblx0XHRcdC8vIHJlY3Vyc2lvbiBwcmV2ZW50aW9uXG5cdFx0XHRpZiAodmFsID09PSB0YXJnZXQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIGlmIG5ldyB2YWx1ZSBpc24ndCBvYmplY3QgdGhlbiBqdXN0IG92ZXJ3cml0ZSBieSBuZXcgdmFsdWVcblx0XHRcdCAqIGluc3RlYWQgb2YgZXh0ZW5kaW5nLlxuXHRcdFx0ICovXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnIHx8IHZhbCA9PT0gbnVsbCkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IHZhbDtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBqdXN0IGNsb25lIGFycmF5cyAoYW5kIHJlY3Vyc2l2ZSBjbG9uZSBvYmplY3RzIGluc2lkZSlcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gZGVlcENsb25lQXJyYXkodmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBjdXN0b20gY2xvbmluZyBhbmQgb3ZlcndyaXRlIGZvciBzcGVjaWZpYyBvYmplY3RzXG5cdFx0XHR9IGVsc2UgaWYgKGlzU3BlY2lmaWNWYWx1ZSh2YWwpKSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gY2xvbmVTcGVjaWZpY1ZhbHVlKHZhbCk7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8gb3ZlcndyaXRlIGJ5IG5ldyB2YWx1ZSBpZiBzb3VyY2UgaXNuJ3Qgb2JqZWN0IG9yIGFycmF5XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBzcmMgIT09ICdvYmplY3QnIHx8IHNyYyA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KHNyYykpIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSBkZWVwRXh0ZW5kKHt9LCB2YWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8vIHNvdXJjZSB2YWx1ZSBhbmQgbmV3IHZhbHVlIGlzIG9iamVjdHMgYm90aCwgZXh0ZW5kaW5nLi4uXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGRlZXBFeHRlbmQoc3JjLCB2YWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXG5cdHJldHVybiB0YXJnZXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHJlcXVpcmUoJy4vdXRpbC9oZWxwZXJzJyk7XG5cbiQuZmluZEJ5UmVmID0gcmVxdWlyZSgnLi91dGlsL2ZpbmQtcmVmZXJlbmNlJyk7XG4kLnJlc29sdmVTY2hlbWEgPSByZXF1aXJlKCcuL3V0aWwvcmVzb2x2ZS1zY2hlbWEnKTtcbiQubm9ybWFsaXplU2NoZW1hID0gcmVxdWlyZSgnLi91dGlsL25vcm1hbGl6ZS1zY2hlbWEnKTtcblxudmFyIGluc3RhbmNlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmKSB7XG4gIGZ1bmN0aW9uICRyZWYoZmFrZXJvb3QsIHNjaGVtYSwgcmVmcywgZXgpIHtcbiAgICBpZiAodHlwZW9mIGZha2Vyb290ID09PSAnb2JqZWN0Jykge1xuICAgICAgZXggPSByZWZzO1xuICAgICAgcmVmcyA9IHNjaGVtYTtcbiAgICAgIHNjaGVtYSA9IGZha2Vyb290O1xuICAgICAgZmFrZXJvb3QgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVmcyA9PT0gJ29iamVjdCcgJiYgcmVmcyAhPT0gbnVsbCkge1xuICAgICAgdmFyIGF1eCA9IHJlZnM7XG5cbiAgICAgIHJlZnMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgayBpbiBhdXgpIHtcbiAgICAgICAgYXV4W2tdLmlkID0gYXV4W2tdLmlkIHx8IGs7XG4gICAgICAgIHJlZnMucHVzaChhdXhba10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVmcyAhPT0gJ3VuZGVmaW5lZCcgJiYgIUFycmF5LmlzQXJyYXkocmVmcykpIHtcbiAgICAgIGV4ID0gISFyZWZzO1xuICAgICAgcmVmcyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHB1c2gocmVmKSB7XG4gICAgICBpZiAodHlwZW9mIHJlZi5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFyIGlkID0gJC5yZXNvbHZlVVJMKGZha2Vyb290LCByZWYuaWQpLnJlcGxhY2UoL1xcLyM/JC8sICcnKTtcblxuICAgICAgICBpZiAoaWQuaW5kZXhPZignIycpID4gLTEpIHtcbiAgICAgICAgICB2YXIgcGFydHMgPSBpZC5zcGxpdCgnIycpO1xuXG4gICAgICAgICAgaWYgKHBhcnRzWzFdLmNoYXJBdCgpID09PSAnLycpIHtcbiAgICAgICAgICAgIGlkID0gcGFydHNbMF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlkID0gcGFydHNbMV0gfHwgcGFydHNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEkcmVmLnJlZnNbaWRdKSB7XG4gICAgICAgICAgJHJlZi5yZWZzW2lkXSA9IHJlZjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIChyZWZzIHx8IFtdKS5jb25jYXQoW3NjaGVtYV0pLmZvckVhY2goZnVuY3Rpb24ocmVmKSB7XG4gICAgICBzY2hlbWEgPSAkLm5vcm1hbGl6ZVNjaGVtYShmYWtlcm9vdCwgcmVmLCBwdXNoKTtcbiAgICAgIHB1c2goc2NoZW1hKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAkLnJlc29sdmVTY2hlbWEoc2NoZW1hLCAkcmVmLnJlZnMsIGV4LCBmKTtcbiAgfVxuXG4gICRyZWYucmVmcyA9IHt9O1xuICAkcmVmLnV0aWwgPSAkO1xuXG4gIHJldHVybiAkcmVmO1xufTtcblxuaW5zdGFuY2UudXRpbCA9ICQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjbG9uZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqLCBzZWVuKSB7XG4gIHNlZW4gPSBzZWVuIHx8IFtdO1xuXG4gIGlmIChzZWVuLmluZGV4T2Yob2JqKSA+IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmFibGUgZGVyZWZlcmVuY2UgY2lyY3VsYXIgc3RydWN0dXJlcycpO1xuICB9XG5cbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgc2VlbiA9IHNlZW4uY29uY2F0KFtvYmpdKTtcblxuICB2YXIgdGFyZ2V0ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcblxuICBmdW5jdGlvbiBjb3B5KGtleSwgdmFsdWUpIHtcbiAgICB0YXJnZXRba2V5XSA9IGNsb25lKHZhbHVlLCBzZWVuKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICBvYmouZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICBjb3B5KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgIGNvcHkoa2V5LCBvYmpba2V5XSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxuZnVuY3Rpb24gZ2V0KG9iaiwgcGF0aCkge1xuICB2YXIgaGFzaCA9IHBhdGguc3BsaXQoJyMnKVsxXTtcblxuICB2YXIgcGFydHMgPSBoYXNoLnNwbGl0KCcvJykuc2xpY2UoMSk7XG5cbiAgd2hpbGUgKHBhcnRzLmxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBkZWNvZGVVUklDb21wb25lbnQocGFydHMuc2hpZnQoKSkucmVwbGFjZSgvfjEvZywgJy8nKS5yZXBsYWNlKC9+MC9nLCAnficpO1xuXG4gICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTiBwb2ludGVyIG5vdCBmb3VuZDogJyArIHBhdGgpO1xuICAgIH1cblxuICAgIG9iaiA9IG9ialtrZXldO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxudmFyIGZpbmQgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlkLCByZWZzLCBmaWx0ZXIpIHtcbiAgdmFyIHRhcmdldCA9IHJlZnNbaWRdIHx8IHJlZnNbaWQuc3BsaXQoJyMnKVsxXV0gfHwgcmVmc1skLmdldERvY3VtZW50VVJJKGlkKV07XG5cbiAgdHJ5IHtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgPSBpZC5pbmRleE9mKCcjLycpID4gLTEgPyBnZXQodGFyZ2V0LCBpZCkgOiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGtleSBpbiByZWZzKSB7XG4gICAgICAgIGlmICgkLnJlc29sdmVVUkwocmVmc1trZXldLmlkLCBpZCkgPT09IHJlZnNba2V5XS5pZCkge1xuICAgICAgICAgIHRhcmdldCA9IHJlZnNba2V5XTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0YXJnZXQgPSBmaWx0ZXIoaWQsIHJlZnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWZlcmVuY2Ugbm90IGZvdW5kOiAnICsgaWQpO1xuICB9XG5cbiAgd2hpbGUgKHRhcmdldC4kcmVmKSB7XG4gICAgdGFyZ2V0ID0gZmluZCh0YXJnZXQuJHJlZiwgcmVmcyk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vcGp0MzMvZWZiMmYxMTM0YmFiOTg2MTEzZmRcblxuZnVuY3Rpb24gVVJMVXRpbHModXJsLCBiYXNlVVJMKSB7XG4gIC8vIHJlbW92ZSBsZWFkaW5nIC4vXG4gIHVybCA9IHVybC5yZXBsYWNlKC9eXFwuXFwvLywgJycpO1xuXG4gIHZhciBtID0gU3RyaW5nKHVybCkucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpLm1hdGNoKC9eKFteOlxcLz8jXSs6KT8oPzpcXC9cXC8oPzooW146QF0qKSg/OjooW146QF0qKSk/QCk/KChbXjpcXC8/I10qKSg/OjooXFxkKikpPykpPyhbXj8jXSopKFxcP1teI10qKT8oI1tcXHNcXFNdKik/Lyk7XG4gIGlmICghbSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCk7XG4gIH1cbiAgdmFyIGhyZWYgPSBtWzBdIHx8ICcnO1xuICB2YXIgcHJvdG9jb2wgPSBtWzFdIHx8ICcnO1xuICB2YXIgdXNlcm5hbWUgPSBtWzJdIHx8ICcnO1xuICB2YXIgcGFzc3dvcmQgPSBtWzNdIHx8ICcnO1xuICB2YXIgaG9zdCA9IG1bNF0gfHwgJyc7XG4gIHZhciBob3N0bmFtZSA9IG1bNV0gfHwgJyc7XG4gIHZhciBwb3J0ID0gbVs2XSB8fCAnJztcbiAgdmFyIHBhdGhuYW1lID0gbVs3XSB8fCAnJztcbiAgdmFyIHNlYXJjaCA9IG1bOF0gfHwgJyc7XG4gIHZhciBoYXNoID0gbVs5XSB8fCAnJztcbiAgaWYgKGJhc2VVUkwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBiYXNlID0gbmV3IFVSTFV0aWxzKGJhc2VVUkwpO1xuICAgIHZhciBmbGFnID0gcHJvdG9jb2wgPT09ICcnICYmIGhvc3QgPT09ICcnICYmIHVzZXJuYW1lID09PSAnJztcbiAgICBpZiAoZmxhZyAmJiBwYXRobmFtZSA9PT0gJycgJiYgc2VhcmNoID09PSAnJykge1xuICAgICAgc2VhcmNoID0gYmFzZS5zZWFyY2g7XG4gICAgfVxuICAgIGlmIChmbGFnICYmIHBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG4gICAgICBwYXRobmFtZSA9IChwYXRobmFtZSAhPT0gJycgPyAoYmFzZS5wYXRobmFtZS5zbGljZSgwLCBiYXNlLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykgKyAxKSArIHBhdGhuYW1lKSA6IGJhc2UucGF0aG5hbWUpO1xuICAgIH1cbiAgICAvLyBkb3Qgc2VnbWVudHMgcmVtb3ZhbFxuICAgIHZhciBvdXRwdXQgPSBbXTtcblxuICAgIHBhdGhuYW1lLnJlcGxhY2UoL1xcLz9bXlxcL10rL2csIGZ1bmN0aW9uKHApIHtcbiAgICAgIGlmIChwID09PSAnLy4uJykge1xuICAgICAgICBvdXRwdXQucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRwdXQucHVzaChwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhdGhuYW1lID0gb3V0cHV0LmpvaW4oJycpIHx8ICcvJztcblxuICAgIGlmIChmbGFnKSB7XG4gICAgICBwb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgaG9zdG5hbWUgPSBiYXNlLmhvc3RuYW1lO1xuICAgICAgaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgIHBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgIHVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICB9XG4gICAgaWYgKHByb3RvY29sID09PSAnJykge1xuICAgICAgcHJvdG9jb2wgPSBiYXNlLnByb3RvY29sO1xuICAgIH1cbiAgICBocmVmID0gcHJvdG9jb2wgKyAoaG9zdCAhPT0gJycgPyAnLy8nIDogJycpICsgKHVzZXJuYW1lICE9PSAnJyA/IHVzZXJuYW1lICsgKHBhc3N3b3JkICE9PSAnJyA/ICc6JyArIHBhc3N3b3JkIDogJycpICsgJ0AnIDogJycpICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbiAgfVxuICB0aGlzLmhyZWYgPSBocmVmO1xuICB0aGlzLm9yaWdpbiA9IHByb3RvY29sICsgKGhvc3QgIT09ICcnID8gJy8vJyArIGhvc3QgOiAnJyk7XG4gIHRoaXMucHJvdG9jb2wgPSBwcm90b2NvbDtcbiAgdGhpcy51c2VybmFtZSA9IHVzZXJuYW1lO1xuICB0aGlzLnBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gIHRoaXMuaG9zdCA9IGhvc3Q7XG4gIHRoaXMuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgdGhpcy5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICB0aGlzLnNlYXJjaCA9IHNlYXJjaDtcbiAgdGhpcy5oYXNoID0gaGFzaDtcbn1cblxuZnVuY3Rpb24gaXNVUkwocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnICYmIC9eXFx3KzpcXC9cXC8vLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVVSSShocmVmLCBiYXNlKSB7XG4gIHJldHVybiBuZXcgVVJMVXRpbHMoaHJlZiwgYmFzZSk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVVUkwoYmFzZSwgaHJlZikge1xuICBiYXNlID0gYmFzZSB8fCAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEjJztcblxuICBocmVmID0gcGFyc2VVUkkoaHJlZiwgYmFzZSk7XG4gIGJhc2UgPSBwYXJzZVVSSShiYXNlKTtcblxuICBpZiAoYmFzZS5oYXNoICYmICFocmVmLmhhc2gpIHtcbiAgICByZXR1cm4gaHJlZi5ocmVmICsgYmFzZS5oYXNoO1xuICB9XG5cbiAgcmV0dXJuIGhyZWYuaHJlZjtcbn1cblxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRVUkkodXJpKSB7XG4gIHJldHVybiB0eXBlb2YgdXJpID09PSAnc3RyaW5nJyAmJiB1cmkuc3BsaXQoJyMnKVswXTtcbn1cblxuZnVuY3Rpb24gaXNLZXl3b3JkKHByb3ApIHtcbiAgcmV0dXJuIHByb3AgPT09ICdlbnVtJyB8fCBwcm9wID09PSAnZGVmYXVsdCcgfHwgcHJvcCA9PT0gJ3JlcXVpcmVkJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzVVJMOiBpc1VSTCxcbiAgcGFyc2VVUkk6IHBhcnNlVVJJLFxuICBpc0tleXdvcmQ6IGlzS2V5d29yZCxcbiAgcmVzb2x2ZVVSTDogcmVzb2x2ZVVSTCxcbiAgZ2V0RG9jdW1lbnRVUkk6IGdldERvY3VtZW50VVJJXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG52YXIgY2xvbmVPYmogPSByZXF1aXJlKCcuL2Nsb25lLW9iaicpO1xuXG52YXIgU0NIRU1BX1VSSSA9IFtcbiAgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIycsXG4gICdodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYScsXG4gICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMnLFxuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEnXG5dO1xuXG5mdW5jdGlvbiBleHBhbmQob2JqLCBwYXJlbnQsIGNhbGxiYWNrKSB7XG4gIGlmIChvYmopIHtcbiAgICB2YXIgaWQgPSB0eXBlb2Ygb2JqLmlkID09PSAnc3RyaW5nJyA/IG9iai5pZCA6ICcjJztcblxuICAgIGlmICghJC5pc1VSTChpZCkpIHtcbiAgICAgIGlkID0gJC5yZXNvbHZlVVJMKHBhcmVudCA9PT0gaWQgPyBudWxsIDogcGFyZW50LCBpZCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmouJHJlZiA9PT0gJ3N0cmluZycgJiYgISQuaXNVUkwob2JqLiRyZWYpKSB7XG4gICAgICBvYmouJHJlZiA9ICQucmVzb2x2ZVVSTChpZCwgb2JqLiRyZWYpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqLmlkID09PSAnc3RyaW5nJykge1xuICAgICAgb2JqLmlkID0gcGFyZW50ID0gaWQ7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgISQuaXNLZXl3b3JkKGtleSkpIHtcbiAgICAgIGV4cGFuZCh2YWx1ZSwgcGFyZW50LCBjYWxsYmFjayk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrKG9iaik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmYWtlcm9vdCwgc2NoZW1hLCBwdXNoKSB7XG4gIGlmICh0eXBlb2YgZmFrZXJvb3QgPT09ICdvYmplY3QnKSB7XG4gICAgcHVzaCA9IHNjaGVtYTtcbiAgICBzY2hlbWEgPSBmYWtlcm9vdDtcbiAgICBmYWtlcm9vdCA9IG51bGw7XG4gIH1cblxuICB2YXIgYmFzZSA9IGZha2Vyb290IHx8ICcnLFxuICAgICAgY29weSA9IGNsb25lT2JqKHNjaGVtYSk7XG5cbiAgaWYgKGNvcHkuJHNjaGVtYSAmJiBTQ0hFTUFfVVJJLmluZGV4T2YoY29weS4kc2NoZW1hKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNjaGVtYSB2ZXJzaW9uICh2NCBvbmx5KScpO1xuICB9XG5cbiAgYmFzZSA9ICQucmVzb2x2ZVVSTChjb3B5LiRzY2hlbWEgfHwgU0NIRU1BX1VSSVswXSwgYmFzZSk7XG5cbiAgZXhwYW5kKGNvcHksICQucmVzb2x2ZVVSTChjb3B5LmlkIHx8ICcjJywgYmFzZSksIHB1c2gpO1xuXG4gIGNvcHkuaWQgPSBjb3B5LmlkIHx8IGJhc2U7XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG52YXIgZmluZCA9IHJlcXVpcmUoJy4vZmluZC1yZWZlcmVuY2UnKTtcblxudmFyIGRlZXBFeHRlbmQgPSByZXF1aXJlKCdkZWVwLWV4dGVuZCcpO1xuXG5mdW5jdGlvbiBjb3B5KF8sIG9iaiwgcmVmcywgcGFyZW50LCByZXNvbHZlLCBjYWxsYmFjaykge1xuICB2YXIgdGFyZ2V0ID0gIEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XG5cbiAgaWYgKHR5cGVvZiBvYmouJHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgaWQgPSBvYmouJHJlZjtcbiAgICB2YXIgYmFzZSA9ICQuZ2V0RG9jdW1lbnRVUkkoaWQpO1xuICAgIHZhciBsb2NhbCA9IGlkLmluZGV4T2YoJyMvJykgPiAtMTtcblxuICAgIGlmIChsb2NhbCB8fCAocmVzb2x2ZSAmJiBiYXNlICE9PSBwYXJlbnQpKSB7XG4gICAgICB2YXIgZml4ZWQgPSBmaW5kKGlkLCByZWZzLCBjYWxsYmFjayk7XG5cbiAgICAgIGRlZXBFeHRlbmQob2JqLCBmaXhlZCk7XG5cbiAgICAgIGRlbGV0ZSBvYmouJHJlZjtcbiAgICAgIGRlbGV0ZSBvYmouaWQ7XG4gICAgfVxuXG4gICAgaWYgKF9baWRdID4gMTApIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgaWYgKF9baWRdKSB7XG4gICAgICBfW2lkXSArPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBfW2lkXSA9IDE7XG4gICAgfVxuICB9XG5cblxuICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xuXG4gICAgaWYgKHR5cGVvZiBvYmpbcHJvcF0gPT09ICdvYmplY3QnICYmIG9ialtwcm9wXSAhPT0gbnVsbCAmJiAhJC5pc0tleXdvcmQocHJvcCkpIHtcbiAgICAgIHRhcmdldFtwcm9wXSA9IGNvcHkoXywgb2JqW3Byb3BdLCByZWZzLCBwYXJlbnQsIHJlc29sdmUsIGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0W3Byb3BdID0gb2JqW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqLCByZWZzLCByZXNvbHZlLCBjYWxsYmFjaykge1xuICB2YXIgZml4ZWRJZCA9ICQucmVzb2x2ZVVSTChvYmouJHNjaGVtYSwgb2JqLmlkKSxcbiAgICAgIHBhcmVudCA9ICQuZ2V0RG9jdW1lbnRVUkkoZml4ZWRJZCk7XG5cbiAgcmV0dXJuIGNvcHkoe30sIG9iaiwgcmVmcywgcGFyZW50LCByZXNvbHZlLCBjYWxsYmFjayk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IGluZGVudDogNCAqL1xuXG5cbi8vIFByaXZhdGUgaGVscGVyIGNsYXNzXG5jbGFzcyBTdWJSYW5nZSB7XG4gICAgY29uc3RydWN0b3IobG93LCBoaWdoKSB7XG4gICAgICAgIHRoaXMubG93ID0gbG93O1xuICAgICAgICB0aGlzLmhpZ2ggPSBoaWdoO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDEgKyBoaWdoIC0gbG93O1xuICAgIH1cblxuICAgIG92ZXJsYXBzKHJhbmdlKSB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuaGlnaCA8IHJhbmdlLmxvdyB8fCB0aGlzLmxvdyA+IHJhbmdlLmhpZ2gpO1xuICAgIH1cblxuICAgIHRvdWNoZXMocmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5oaWdoICsgMSA8IHJhbmdlLmxvdyB8fCB0aGlzLmxvdyAtIDEgPiByYW5nZS5oaWdoKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGluY2x1c2l2ZSBjb21iaW5hdGlvbiBvZiBTdWJSYW5nZXMgYXMgYSBTdWJSYW5nZS5cbiAgICBhZGQocmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJSYW5nZShcbiAgICAgICAgICAgIE1hdGgubWluKHRoaXMubG93LCByYW5nZS5sb3cpLFxuICAgICAgICAgICAgTWF0aC5tYXgodGhpcy5oaWdoLCByYW5nZS5oaWdoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgc3VidHJhY3Rpb24gb2YgU3ViUmFuZ2VzIGFzIGFuIGFycmF5IG9mIFN1YlJhbmdlcy5cbiAgICAvLyAoVGhlcmUncyBhIGNhc2Ugd2hlcmUgc3VidHJhY3Rpb24gZGl2aWRlcyBpdCBpbiAyKVxuICAgIHN1YnRyYWN0KHJhbmdlKSB7XG4gICAgICAgIGlmIChyYW5nZS5sb3cgPD0gdGhpcy5sb3cgJiYgcmFuZ2UuaGlnaCA+PSB0aGlzLmhpZ2gpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSBlbHNlIGlmIChyYW5nZS5sb3cgPiB0aGlzLmxvdyAmJiByYW5nZS5oaWdoIDwgdGhpcy5oaWdoKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIG5ldyBTdWJSYW5nZSh0aGlzLmxvdywgcmFuZ2UubG93IC0gMSksXG4gICAgICAgICAgICAgICAgbmV3IFN1YlJhbmdlKHJhbmdlLmhpZ2ggKyAxLCB0aGlzLmhpZ2gpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKHJhbmdlLmxvdyA8PSB0aGlzLmxvdykge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXcgU3ViUmFuZ2UocmFuZ2UuaGlnaCArIDEsIHRoaXMuaGlnaCldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXcgU3ViUmFuZ2UodGhpcy5sb3csIHJhbmdlLmxvdyAtIDEpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb3cgPT0gdGhpcy5oaWdoID9cbiAgICAgICAgICAgIHRoaXMubG93LnRvU3RyaW5nKCkgOiB0aGlzLmxvdyArICctJyArIHRoaXMuaGlnaDtcbiAgICB9XG59XG5cblxuY2xhc3MgRFJhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihhLCBiKSB7XG4gICAgICAgIHRoaXMucmFuZ2VzID0gW107XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkgdGhpcy5hZGQoYSwgYik7XG4gICAgfVxuXG4gICAgX3VwZGF0ZV9sZW5ndGgoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5yYW5nZXMucmVkdWNlKChwcmV2aW91cywgcmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91cyArIHJhbmdlLmxlbmd0aDtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgYWRkKGEsIGIpIHtcbiAgICAgICAgdmFyIF9hZGQgPSAoc3VicmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmICFzdWJyYW5nZS50b3VjaGVzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuZXdSYW5nZXMgPSB0aGlzLnJhbmdlcy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmIHN1YnJhbmdlLnRvdWNoZXModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgc3VicmFuZ2UgPSBzdWJyYW5nZS5hZGQodGhpcy5yYW5nZXNbaV0pO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1Jhbmdlcy5wdXNoKHN1YnJhbmdlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VzID0gbmV3UmFuZ2VzLmNvbmNhdCh0aGlzLnJhbmdlcy5zbGljZShpKSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVfbGVuZ3RoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERSYW5nZSkge1xuICAgICAgICAgICAgYS5yYW5nZXMuZm9yRWFjaChfYWRkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChiID09IG51bGwpIGIgPSBhO1xuICAgICAgICAgICAgX2FkZChuZXcgU3ViUmFuZ2UoYSwgYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN1YnRyYWN0KGEsIGIpIHtcbiAgICAgICAgdmFyIF9zdWJ0cmFjdCA9IChzdWJyYW5nZSkgPT4ge1xuICAgICAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgIXN1YnJhbmdlLm92ZXJsYXBzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuZXdSYW5nZXMgPSB0aGlzLnJhbmdlcy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmIHN1YnJhbmdlLm92ZXJsYXBzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIG5ld1JhbmdlcyA9IG5ld1Jhbmdlcy5jb25jYXQodGhpcy5yYW5nZXNbaV0uc3VidHJhY3Qoc3VicmFuZ2UpKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJhbmdlcyA9IG5ld1Jhbmdlcy5jb25jYXQodGhpcy5yYW5nZXMuc2xpY2UoaSkpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlX2xlbmd0aCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgRFJhbmdlKSB7XG4gICAgICAgICAgICBhLnJhbmdlcy5mb3JFYWNoKF9zdWJ0cmFjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYiA9PSBudWxsKSBiID0gYTtcbiAgICAgICAgICAgIF9zdWJ0cmFjdChuZXcgU3ViUmFuZ2UoYSwgYikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGludGVyc2VjdChhLCBiKSB7XG4gICAgICAgIHZhciBuZXdSYW5nZXMgPSBbXTtcbiAgICAgICAgdmFyIF9pbnRlcnNlY3QgPSAoc3VicmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmICFzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiBzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbG93ID0gTWF0aC5tYXgodGhpcy5yYW5nZXNbaV0ubG93LCBzdWJyYW5nZS5sb3cpO1xuICAgICAgICAgICAgICAgIHZhciBoaWdoID0gTWF0aC5taW4odGhpcy5yYW5nZXNbaV0uaGlnaCwgc3VicmFuZ2UuaGlnaCk7XG4gICAgICAgICAgICAgICAgbmV3UmFuZ2VzLnB1c2gobmV3IFN1YlJhbmdlKGxvdywgaGlnaCkpO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERSYW5nZSkge1xuICAgICAgICAgICAgYS5yYW5nZXMuZm9yRWFjaChfaW50ZXJzZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChiID09IG51bGwpIGIgPSBhO1xuICAgICAgICAgICAgX2ludGVyc2VjdChuZXcgU3ViUmFuZ2UoYSwgYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmFuZ2VzID0gbmV3UmFuZ2VzO1xuICAgICAgICB0aGlzLl91cGRhdGVfbGVuZ3RoKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGluZGV4KGluZGV4KSB7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgdGhpcy5yYW5nZXNbaV0ubGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgICAgICBpbmRleCAtPSB0aGlzLnJhbmdlc1tpXS5sZW5ndGg7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VzW2ldLmxvdyArIGluZGV4O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gJ1sgJyArIHRoaXMucmFuZ2VzLmpvaW4oJywgJykgKyAnIF0nO1xuICAgIH1cblxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IERSYW5nZSh0aGlzKTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRFJhbmdlO1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEzIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICdBUyBJUydcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBmdW5jdGlvbiBpc0V4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyYXlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0JpbmFyeUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnQ2FsbEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0Z1bmN0aW9uRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdJZGVudGlmaWVyJzpcbiAgICAgICAgICAgIGNhc2UgJ0xpdGVyYWwnOlxuICAgICAgICAgICAgY2FzZSAnTG9naWNhbEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnTWVtYmVyRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdOZXdFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ09iamVjdEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnU2VxdWVuY2VFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1RoaXNFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1VuYXJ5RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdVcGRhdGVFeHByZXNzaW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRpb25TdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnRG9XaGlsZVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdGb3JJblN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdGb3JTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0YXRlbWVudChub2RlKSB7XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdCbG9ja1N0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdCcmVha1N0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdDb250aW51ZVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdEZWJ1Z2dlclN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdEb1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0VtcHR5U3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0V4cHJlc3Npb25TdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9ySW5TdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9yU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0lmU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0xhYmVsZWRTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnUmV0dXJuU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1N3aXRjaFN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdUaHJvd1N0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdUcnlTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnVmFyaWFibGVEZWNsYXJhdGlvbic6XG4gICAgICAgICAgICBjYXNlICdXaGlsZVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdXaXRoU3RhdGVtZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTb3VyY2VFbGVtZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBpc1N0YXRlbWVudChub2RlKSB8fCBub2RlICE9IG51bGwgJiYgbm9kZS50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhaWxpbmdTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlICdJZlN0YXRlbWVudCc6XG4gICAgICAgICAgICBpZiAobm9kZS5hbHRlcm5hdGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmFsdGVybmF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBub2RlLmNvbnNlcXVlbnQ7XG5cbiAgICAgICAgY2FzZSAnTGFiZWxlZFN0YXRlbWVudCc6XG4gICAgICAgIGNhc2UgJ0ZvclN0YXRlbWVudCc6XG4gICAgICAgIGNhc2UgJ0ZvckluU3RhdGVtZW50JzpcbiAgICAgICAgY2FzZSAnV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdXaXRoU3RhdGVtZW50JzpcbiAgICAgICAgICAgIHJldHVybiBub2RlLmJvZHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQcm9ibGVtYXRpY0lmU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgdmFyIGN1cnJlbnQ7XG5cbiAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ0lmU3RhdGVtZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmFsdGVybmF0ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IG5vZGUuY29uc2VxdWVudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ0lmU3RhdGVtZW50Jykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmFsdGVybmF0ZSA9PSBudWxsKSAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50ID0gdHJhaWxpbmdTdGF0ZW1lbnQoY3VycmVudCk7XG4gICAgICAgIH0gd2hpbGUgKGN1cnJlbnQpO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNFeHByZXNzaW9uOiBpc0V4cHJlc3Npb24sXG4gICAgICAgIGlzU3RhdGVtZW50OiBpc1N0YXRlbWVudCxcbiAgICAgICAgaXNJdGVyYXRpb25TdGF0ZW1lbnQ6IGlzSXRlcmF0aW9uU3RhdGVtZW50LFxuICAgICAgICBpc1NvdXJjZUVsZW1lbnQ6IGlzU291cmNlRWxlbWVudCxcbiAgICAgICAgaXNQcm9ibGVtYXRpY0lmU3RhdGVtZW50OiBpc1Byb2JsZW1hdGljSWZTdGF0ZW1lbnQsXG5cbiAgICAgICAgdHJhaWxpbmdTdGF0ZW1lbnQ6IHRyYWlsaW5nU3RhdGVtZW50XG4gICAgfTtcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTQgSXZhbiBOaWt1bGluIDxpZmFhYW5AZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIEVTNlJlZ2V4LCBFUzVSZWdleCwgTk9OX0FTQ0lJX1dISVRFU1BBQ0VTLCBJREVOVElGSUVSX1NUQVJULCBJREVOVElGSUVSX1BBUlQsIGNoO1xuXG4gICAgLy8gU2VlIGB0b29scy9nZW5lcmF0ZS1pZGVudGlmaWVyLXJlZ2V4LmpzYC5cbiAgICBFUzVSZWdleCA9IHtcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA1LjEvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEIyXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdBRFxcdUE3QjBcXHVBN0IxXFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNUZcXHVBQjY0XFx1QUI2NVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10vLFxuICAgICAgICAvLyBFQ01BU2NyaXB0IDUuMS9Vbmljb2RlIHY3LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OlxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzAwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0ODMtXFx1MDQ4N1xcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjEwLVxcdTA2MUFcXHUwNjIwLVxcdTA2NjlcXHUwNjZFLVxcdTA2RDNcXHUwNkQ1LVxcdTA2RENcXHUwNkRGLVxcdTA2RThcXHUwNkVBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMC1cXHUwNzRBXFx1MDc0RC1cXHUwN0IxXFx1MDdDMC1cXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgyRFxcdTA4NDAtXFx1MDg1QlxcdTA4QTAtXFx1MDhCMlxcdTA4RTQtXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5NzEtXFx1MDk4M1xcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkMtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNFXFx1MDlEN1xcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUzXFx1MDlFNi1cXHUwOUYxXFx1MEEwMS1cXHUwQTAzXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCQy1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFEMFxcdTBBRTAtXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAwLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNThcXHUwQzU5XFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MS1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAxLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU3XFx1MEQ2MC1cXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4MlxcdTBEODNcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREU2LVxcdTBERUZcXHUwREYyXFx1MERGM1xcdTBFMDEtXFx1MEUzQVxcdTBFNDAtXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUI5XFx1MEVCQi1cXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0UtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGNzEtXFx1MEY4NFxcdTBGODYtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDAwLVxcdTEwNDlcXHUxMDUwLVxcdTEwOURcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM1RC1cXHUxMzVGXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzE0XFx1MTcyMC1cXHUxNzM0XFx1MTc0MC1cXHUxNzUzXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc3MlxcdTE3NzNcXHUxNzgwLVxcdTE3RDNcXHUxN0Q3XFx1MTdEQ1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODEwLVxcdTE4MTlcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxOUQwLVxcdTE5RDlcXHUxQTAwLVxcdTFBMUJcXHUxQTIwLVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUE3XFx1MUFCMC1cXHUxQUJEXFx1MUIwMC1cXHUxQjRCXFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQkYzXFx1MUMwMC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM0RC1cXHUxQzdEXFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0Y2XFx1MUNGOFxcdTFDRjlcXHUxRDAwLVxcdTFERjVcXHUxREZDLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjAwQ1xcdTIwMERcXHUyMDNGXFx1MjA0MFxcdTIwNTRcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ3Ri1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkRFMC1cXHUyREZGXFx1MkUyRlxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyRlxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOTlcXHUzMDlBXFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjJCXFx1QTY0MC1cXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY3Ri1cXHVBNjlEXFx1QTY5Ri1cXHVBNkYxXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzRcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QTlFMC1cXHVBOUZFXFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QS1cXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVGXFx1QUFGMi1cXHVBQUY2XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJEXFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjEwLVxcdUZGMTlcXHVGRjIxLVxcdUZGM0FcXHVGRjNGXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXS9cbiAgICB9O1xuXG4gICAgRVM2UmVnZXggPSB7XG4gICAgICAgIC8vIEVDTUFTY3JpcHQgNi9Vbmljb2RlIHY3LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDpcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6IC9bXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwLVxcdTA4QjJcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNThcXHUwQzU5XFx1MEM2MFxcdTBDNjFcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENjBcXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxMVxcdTE3MjAtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QzEtXFx1MTlDN1xcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGMVxcdTFDRjVcXHUxQ0Y2XFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOC1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5Qi1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3QURcXHVBN0IwXFx1QTdCMVxcdUE3RjctXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdfFxcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERDQwLVxcdURENzRcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERjAwLVxcdURGMUZcXHVERjMwLVxcdURGNEFcXHVERjUwLVxcdURGNzVcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzNcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XXxcXHVEODA0W1xcdURDMDMtXFx1REMzN1xcdURDODMtXFx1RENBRlxcdURDRDAtXFx1RENFOFxcdUREMDMtXFx1REQyNlxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REVCMC1cXHVERURFXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0RcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQV18XFx1RDgwNltcXHVEQ0EwLVxcdURDREZcXHVEQ0ZGXFx1REVDMC1cXHVERUY4XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OF18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVdfFtcXHVEODBDXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODFBW1xcdURDMDAtXFx1REUzOFxcdURFNDAtXFx1REU1RVxcdURFRDAtXFx1REVFRFxcdURGMDAtXFx1REYyRlxcdURGNDAtXFx1REY0M1xcdURGNjMtXFx1REY3N1xcdURGN0QtXFx1REY4Rl18XFx1RDgxQltcXHVERjAwLVxcdURGNDRcXHVERjUwXFx1REY5My1cXHVERjlGXXxcXHVEODJDW1xcdURDMDBcXHVEQzAxXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OV18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNF18XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVENlxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF0vLFxuICAgICAgICAvLyBFQ01BU2NyaXB0IDYvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDpcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogL1tcXHhBQVxceEI1XFx4QjdcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzAwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4My1cXHUwNDg3XFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MTAtXFx1MDYxQVxcdTA2MjAtXFx1MDY2OVxcdTA2NkUtXFx1MDZEM1xcdTA2RDUtXFx1MDZEQ1xcdTA2REYtXFx1MDZFOFxcdTA2RUEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwLVxcdTA3NEFcXHUwNzRELVxcdTA3QjFcXHUwN0MwLVxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODJEXFx1MDg0MC1cXHUwODVCXFx1MDhBMC1cXHUwOEIyXFx1MDhFNC1cXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk3MS1cXHUwOTgzXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCQy1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0VcXHUwOUQ3XFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTNcXHUwOUU2LVxcdTA5RjFcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OFxcdTBDNTlcXHUwQzYwLVxcdTBDNjNcXHUwQzY2LVxcdTBDNkZcXHUwQzgxLVxcdTBDODNcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JDLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDREVcXHUwQ0UwLVxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwQ0YxXFx1MENGMlxcdTBEMDEtXFx1MEQwM1xcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0QtXFx1MEQ0NFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0RVxcdTBENTdcXHUwRDYwLVxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDdBLVxcdTBEN0ZcXHUwRDgyXFx1MEQ4M1xcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUwMS1cXHUwRTNBXFx1MEU0MC1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjlcXHUwRUJCLVxcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRS1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY3MS1cXHUwRjg0XFx1MEY4Ni1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMDAtXFx1MTA0OVxcdTEwNTAtXFx1MTA5RFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzVELVxcdTEzNUZcXHUxMzY5LVxcdTEzNzFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTRcXHUxNzIwLVxcdTE3MzRcXHUxNzQwLVxcdTE3NTNcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzcyXFx1MTc3M1xcdTE3ODAtXFx1MTdEM1xcdTE3RDdcXHUxN0RDXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MTAtXFx1MTgxOVxcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEQVxcdTFBMDAtXFx1MUExQlxcdTFBMjAtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQUIwLVxcdTFBQkRcXHUxQjAwLVxcdTFCNEJcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCRjNcXHUxQzAwLVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRjZcXHUxQ0Y4XFx1MUNGOVxcdTFEMDAtXFx1MURGNVxcdTFERkMtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5LVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2OURcXHVBNjlGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3QURcXHVBN0IwXFx1QTdCMVxcdUE3RjctXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNFxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOTAwLVxcdUE5MkRcXHVBOTMwLVxcdUE5NTNcXHVBOTYwLVxcdUE5N0NcXHVBOTgwLVxcdUE5QzBcXHVBOUNGLVxcdUE5RDlcXHVBOUUwLVxcdUE5RkVcXHVBQTAwLVxcdUFBMzZcXHVBQTQwLVxcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTYwLVxcdUFBNzZcXHVBQTdBLVxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUZcXHVBQUYyLVxcdUFBRjZcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNUZcXHVBQjY0XFx1QUI2NVxcdUFCQzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkRcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdfFxcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERDQwLVxcdURENzRcXHVEREZEXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REVFMFxcdURGMDAtXFx1REYxRlxcdURGMzAtXFx1REY0QVxcdURGNTAtXFx1REY3QVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRlxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0EwLVxcdURDQTlcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdUREMDAtXFx1REQxNVxcdUREMjAtXFx1REQzOVxcdUREODAtXFx1RERCN1xcdUREQkVcXHVEREJGXFx1REUwMC1cXHVERTAzXFx1REUwNVxcdURFMDZcXHVERTBDLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzNcXHVERTM4LVxcdURFM0FcXHVERTNGXFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU2XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OF18XFx1RDgwNFtcXHVEQzAwLVxcdURDNDZcXHVEQzY2LVxcdURDNkZcXHVEQzdGLVxcdURDQkFcXHVEQ0QwLVxcdURDRThcXHVEQ0YwLVxcdURDRjlcXHVERDAwLVxcdUREMzRcXHVERDM2LVxcdUREM0ZcXHVERDUwLVxcdURENzNcXHVERDc2XFx1REQ4MC1cXHVEREM0XFx1REREMC1cXHVERERBXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTM3XFx1REVCMC1cXHVERUVBXFx1REVGMC1cXHVERUY5XFx1REYwMS1cXHVERjAzXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0MtXFx1REY0NFxcdURGNDdcXHVERjQ4XFx1REY0Qi1cXHVERjREXFx1REY1N1xcdURGNUQtXFx1REY2M1xcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzgwLVxcdURDQzVcXHVEQ0M3XFx1RENEMC1cXHVEQ0Q5XFx1REQ4MC1cXHVEREI1XFx1RERCOC1cXHVEREMwXFx1REUwMC1cXHVERTQwXFx1REU0NFxcdURFNTAtXFx1REU1OVxcdURFODAtXFx1REVCN1xcdURFQzAtXFx1REVDOV18XFx1RDgwNltcXHVEQ0EwLVxcdURDRTlcXHVEQ0ZGXFx1REVDMC1cXHVERUY4XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OF18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVdfFtcXHVEODBDXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODFBW1xcdURDMDAtXFx1REUzOFxcdURFNDAtXFx1REU1RVxcdURFNjAtXFx1REU2OVxcdURFRDAtXFx1REVFRFxcdURFRjAtXFx1REVGNFxcdURGMDAtXFx1REYzNlxcdURGNDAtXFx1REY0M1xcdURGNTAtXFx1REY1OVxcdURGNjMtXFx1REY3N1xcdURGN0QtXFx1REY4Rl18XFx1RDgxQltcXHVERjAwLVxcdURGNDRcXHVERjUwLVxcdURGN0VcXHVERjhGLVxcdURGOUZdfFxcdUQ4MkNbXFx1REMwMFxcdURDMDFdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2NS1cXHVERDY5XFx1REQ2RC1cXHVERDcyXFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JcXHVERkNFLVxcdURGRkZdfFxcdUQ4M0FbXFx1REMwMC1cXHVEQ0M0XFx1RENEMC1cXHVEQ0Q2XXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEQjQwW1xcdUREMDAtXFx1RERFRl0vXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAweDMwIDw9IGNoICYmIGNoIDw9IDB4Mzk7ICAvLyAwLi45XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNIZXhEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gMHgzMCA8PSBjaCAmJiBjaCA8PSAweDM5IHx8ICAvLyAwLi45XG4gICAgICAgICAgICAweDYxIDw9IGNoICYmIGNoIDw9IDB4NjYgfHwgICAgIC8vIGEuLmZcbiAgICAgICAgICAgIDB4NDEgPD0gY2ggJiYgY2ggPD0gMHg0NjsgICAgICAgLy8gQS4uRlxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM3OyAgLy8gMC4uN1xuICAgIH1cblxuICAgIC8vIDcuMiBXaGl0ZSBTcGFjZVxuXG4gICAgTk9OX0FTQ0lJX1dISVRFU1BBQ0VTID0gW1xuICAgICAgICAweDE2ODAsIDB4MTgwRSxcbiAgICAgICAgMHgyMDAwLCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLCAweDIwMDQsIDB4MjAwNSwgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsXG4gICAgICAgIDB4MjAyRiwgMHgyMDVGLFxuICAgICAgICAweDMwMDAsXG4gICAgICAgIDB4RkVGRlxuICAgIF07XG5cbiAgICBmdW5jdGlvbiBpc1doaXRlU3BhY2UoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoID09PSAweDIwIHx8IGNoID09PSAweDA5IHx8IGNoID09PSAweDBCIHx8IGNoID09PSAweDBDIHx8IGNoID09PSAweEEwIHx8XG4gICAgICAgICAgICBjaCA+PSAweDE2ODAgJiYgTk9OX0FTQ0lJX1dISVRFU1BBQ0VTLmluZGV4T2YoY2gpID49IDA7XG4gICAgfVxuXG4gICAgLy8gNy4zIExpbmUgVGVybWluYXRvcnNcblxuICAgIGZ1bmN0aW9uIGlzTGluZVRlcm1pbmF0b3IoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoID09PSAweDBBIHx8IGNoID09PSAweDBEIHx8IGNoID09PSAweDIwMjggfHwgY2ggPT09IDB4MjAyOTtcbiAgICB9XG5cbiAgICAvLyA3LjYgSWRlbnRpZmllciBOYW1lcyBhbmQgSWRlbnRpZmllcnNcblxuICAgIGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoY3ApIHtcbiAgICAgICAgaWYgKGNwIDw9IDB4RkZGRikgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjcCk7IH1cbiAgICAgICAgdmFyIGN1MSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY3AgLSAweDEwMDAwKSAvIDB4NDAwKSArIDB4RDgwMCk7XG4gICAgICAgIHZhciBjdTIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY3AgLSAweDEwMDAwKSAlIDB4NDAwKSArIDB4REMwMCk7XG4gICAgICAgIHJldHVybiBjdTEgKyBjdTI7XG4gICAgfVxuXG4gICAgSURFTlRJRklFUl9TVEFSVCA9IG5ldyBBcnJheSgweDgwKTtcbiAgICBmb3IoY2ggPSAwOyBjaCA8IDB4ODA7ICsrY2gpIHtcbiAgICAgICAgSURFTlRJRklFUl9TVEFSVFtjaF0gPVxuICAgICAgICAgICAgY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBIHx8ICAvLyBhLi56XG4gICAgICAgICAgICBjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEgfHwgIC8vIEEuLlpcbiAgICAgICAgICAgIGNoID09PSAweDI0IHx8IGNoID09PSAweDVGOyAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSlcbiAgICB9XG5cbiAgICBJREVOVElGSUVSX1BBUlQgPSBuZXcgQXJyYXkoMHg4MCk7XG4gICAgZm9yKGNoID0gMDsgY2ggPCAweDgwOyArK2NoKSB7XG4gICAgICAgIElERU5USUZJRVJfUEFSVFtjaF0gPVxuICAgICAgICAgICAgY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBIHx8ICAvLyBhLi56XG4gICAgICAgICAgICBjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEgfHwgIC8vIEEuLlpcbiAgICAgICAgICAgIGNoID49IDB4MzAgJiYgY2ggPD0gMHgzOSB8fCAgLy8gMC4uOVxuICAgICAgICAgICAgY2ggPT09IDB4MjQgfHwgY2ggPT09IDB4NUY7ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0RVM1KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1NUQVJUW2NoXSA6IEVTNVJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclN0YXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnRFUzUoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoIDwgMHg4MCA/IElERU5USUZJRVJfUEFSVFtjaF0gOiBFUzVSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0RVM2KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1NUQVJUW2NoXSA6IEVTNlJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclN0YXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnRFUzYoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoIDwgMHg4MCA/IElERU5USUZJRVJfUEFSVFtjaF0gOiBFUzZSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaCkpO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0ge1xuICAgICAgICBpc0RlY2ltYWxEaWdpdDogaXNEZWNpbWFsRGlnaXQsXG4gICAgICAgIGlzSGV4RGlnaXQ6IGlzSGV4RGlnaXQsXG4gICAgICAgIGlzT2N0YWxEaWdpdDogaXNPY3RhbERpZ2l0LFxuICAgICAgICBpc1doaXRlU3BhY2U6IGlzV2hpdGVTcGFjZSxcbiAgICAgICAgaXNMaW5lVGVybWluYXRvcjogaXNMaW5lVGVybWluYXRvcixcbiAgICAgICAgaXNJZGVudGlmaWVyU3RhcnRFUzU6IGlzSWRlbnRpZmllclN0YXJ0RVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJQYXJ0RVM1OiBpc0lkZW50aWZpZXJQYXJ0RVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJTdGFydEVTNjogaXNJZGVudGlmaWVyU3RhcnRFUzYsXG4gICAgICAgIGlzSWRlbnRpZmllclBhcnRFUzY6IGlzSWRlbnRpZmllclBhcnRFUzZcbiAgICB9O1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGNvZGUgPSByZXF1aXJlKCcuL2NvZGUnKTtcblxuICAgIGZ1bmN0aW9uIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZEVTNihpZCkge1xuICAgICAgICBzd2l0Y2ggKGlkKSB7XG4gICAgICAgIGNhc2UgJ2ltcGxlbWVudHMnOlxuICAgICAgICBjYXNlICdpbnRlcmZhY2UnOlxuICAgICAgICBjYXNlICdwYWNrYWdlJzpcbiAgICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZCc6XG4gICAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIGNhc2UgJ3N0YXRpYyc6XG4gICAgICAgIGNhc2UgJ2xldCc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzS2V5d29yZEVTNShpZCwgc3RyaWN0KSB7XG4gICAgICAgIC8vIHlpZWxkIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBrZXl3b3JkIHVuZGVyIG5vbi1zdHJpY3QgbW9kZS5cbiAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT09ICd5aWVsZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzS2V5d29yZEVTNihpZCwgc3RyaWN0KSB7XG4gICAgICAgIGlmIChzdHJpY3QgJiYgaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkRVM2KGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGlkLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnaWYnKSB8fCAoaWQgPT09ICdpbicpIHx8IChpZCA9PT0gJ2RvJyk7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAoaWQgPT09ICduZXcnKSB8fCAoaWQgPT09ICd0cnknKTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3RoaXMnKSB8fCAoaWQgPT09ICdlbHNlJykgfHwgKGlkID09PSAnY2FzZScpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndm9pZCcpIHx8IChpZCA9PT0gJ3dpdGgnKSB8fCAoaWQgPT09ICdlbnVtJyk7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd3aGlsZScpIHx8IChpZCA9PT0gJ2JyZWFrJykgfHwgKGlkID09PSAnY2F0Y2gnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3Rocm93JykgfHwgKGlkID09PSAnY29uc3QnKSB8fCAoaWQgPT09ICd5aWVsZCcpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAnY2xhc3MnKSB8fCAoaWQgPT09ICdzdXBlcicpO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAncmV0dXJuJykgfHwgKGlkID09PSAndHlwZW9mJykgfHwgKGlkID09PSAnZGVsZXRlJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICdzd2l0Y2gnKSB8fCAoaWQgPT09ICdleHBvcnQnKSB8fCAoaWQgPT09ICdpbXBvcnQnKTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2RlZmF1bHQnKSB8fCAoaWQgPT09ICdmaW5hbGx5JykgfHwgKGlkID09PSAnZXh0ZW5kcycpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnZnVuY3Rpb24nKSB8fCAoaWQgPT09ICdjb250aW51ZScpIHx8IChpZCA9PT0gJ2RlYnVnZ2VyJyk7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnaW5zdGFuY2VvZicpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZXNlcnZlZFdvcmRFUzUoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaWQgPT09ICdudWxsJyB8fCBpZCA9PT0gJ3RydWUnIHx8IGlkID09PSAnZmFsc2UnIHx8IGlzS2V5d29yZEVTNShpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc2VydmVkV29yZEVTNihpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ251bGwnIHx8IGlkID09PSAndHJ1ZScgfHwgaWQgPT09ICdmYWxzZScgfHwgaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzdHJpY3RlZFdvcmQoaWQpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnZXZhbCcgfHwgaWQgPT09ICdhcmd1bWVudHMnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWVFUzUoaWQpIHtcbiAgICAgICAgdmFyIGksIGl6LCBjaDtcblxuICAgICAgICBpZiAoaWQubGVuZ3RoID09PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgIGNoID0gaWQuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgaWYgKCFjb2RlLmlzSWRlbnRpZmllclN0YXJ0RVM1KGNoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMSwgaXogPSBpZC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoIWNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShjaCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVjb2RlVXRmMTYobGVhZCwgdHJhaWwpIHtcbiAgICAgICAgcmV0dXJuIChsZWFkIC0gMHhEODAwKSAqIDB4NDAwICsgKHRyYWlsIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZUVTNihpZCkge1xuICAgICAgICB2YXIgaSwgaXosIGNoLCBsb3dDaCwgY2hlY2s7XG5cbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICBjaGVjayA9IGNvZGUuaXNJZGVudGlmaWVyU3RhcnRFUzY7XG4gICAgICAgIGZvciAoaSA9IDAsIGl6ID0gaWQubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgY2ggPSBpZC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpIHtcbiAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gaXopIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgICAgICAgICAgbG93Q2ggPSBpZC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgICAgIGlmICghKDB4REMwMCA8PSBsb3dDaCAmJiBsb3dDaCA8PSAweERGRkYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2ggPSBkZWNvZGVVdGYxNihjaCwgbG93Q2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjaGVjayhjaCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVjayA9IGNvZGUuaXNJZGVudGlmaWVyUGFydEVTNjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJFUzUoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaXNJZGVudGlmaWVyTmFtZUVTNShpZCkgJiYgIWlzUmVzZXJ2ZWRXb3JkRVM1KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllckVTNihpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpc0lkZW50aWZpZXJOYW1lRVM2KGlkKSAmJiAhaXNSZXNlcnZlZFdvcmRFUzYoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGlzS2V5d29yZEVTNTogaXNLZXl3b3JkRVM1LFxuICAgICAgICBpc0tleXdvcmRFUzY6IGlzS2V5d29yZEVTNixcbiAgICAgICAgaXNSZXNlcnZlZFdvcmRFUzU6IGlzUmVzZXJ2ZWRXb3JkRVM1LFxuICAgICAgICBpc1Jlc2VydmVkV29yZEVTNjogaXNSZXNlcnZlZFdvcmRFUzYsXG4gICAgICAgIGlzUmVzdHJpY3RlZFdvcmQ6IGlzUmVzdHJpY3RlZFdvcmQsXG4gICAgICAgIGlzSWRlbnRpZmllck5hbWVFUzU6IGlzSWRlbnRpZmllck5hbWVFUzUsXG4gICAgICAgIGlzSWRlbnRpZmllck5hbWVFUzY6IGlzSWRlbnRpZmllck5hbWVFUzYsXG4gICAgICAgIGlzSWRlbnRpZmllckVTNTogaXNJZGVudGlmaWVyRVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJFUzY6IGlzSWRlbnRpZmllckVTNlxuICAgIH07XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGV4cG9ydHMuYXN0ID0gcmVxdWlyZSgnLi9hc3QnKTtcbiAgICBleHBvcnRzLmNvZGUgPSByZXF1aXJlKCcuL2NvZGUnKTtcbiAgICBleHBvcnRzLmtleXdvcmQgPSByZXF1aXJlKCcuL2tleXdvcmQnKTtcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlIHx8IG9iamVjdENyZWF0ZVBvbHlmaWxsXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IG9iamVjdEtleXNQb2x5ZmlsbFxudmFyIGJpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCB8fCBmdW5jdGlvbkJpbmRQb2x5ZmlsbFxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIGlmICghdGhpcy5fZXZlbnRzIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcywgJ19ldmVudHMnKSkge1xuICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG52YXIgaGFzRGVmaW5lUHJvcGVydHk7XG50cnkge1xuICB2YXIgbyA9IHt9O1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgJ3gnLCB7IHZhbHVlOiAwIH0pO1xuICBoYXNEZWZpbmVQcm9wZXJ0eSA9IG8ueCA9PT0gMDtcbn0gY2F0Y2ggKGVycikgeyBoYXNEZWZpbmVQcm9wZXJ0eSA9IGZhbHNlIH1cbmlmIChoYXNEZWZpbmVQcm9wZXJ0eSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBpbnB1dCBpcyBhIHBvc2l0aXZlIG51bWJlciAod2hvc2UgdmFsdWUgaXMgemVybyBvclxuICAgICAgLy8gZ3JlYXRlciBhbmQgbm90IGEgTmFOKS5cbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJyB8fCBhcmcgPCAwIHx8IGFyZyAhPT0gYXJnKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG59XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycyhuKSB7XG4gIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJuXCIgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uICRnZXRNYXhMaXN0ZW5lcnModGhhdCkge1xuICBpZiAodGhhdC5fbWF4TGlzdGVuZXJzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICByZXR1cm4gdGhhdC5fbWF4TGlzdGVuZXJzO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmdldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuICRnZXRNYXhMaXN0ZW5lcnModGhpcyk7XG59O1xuXG4vLyBUaGVzZSBzdGFuZGFsb25lIGVtaXQqIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBvcHRpbWl6ZSBjYWxsaW5nIG9mIGV2ZW50XG4vLyBoYW5kbGVycyBmb3IgZmFzdCBjYXNlcyBiZWNhdXNlIGVtaXQoKSBpdHNlbGYgb2Z0ZW4gaGFzIGEgdmFyaWFibGUgbnVtYmVyIG9mXG4vLyBhcmd1bWVudHMgYW5kIGNhbiBiZSBkZW9wdGltaXplZCBiZWNhdXNlIG9mIHRoYXQuIFRoZXNlIGZ1bmN0aW9ucyBhbHdheXMgaGF2ZVxuLy8gdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgdGh1cyBkbyBub3QgZ2V0IGRlb3B0aW1pemVkLCBzbyB0aGUgY29kZVxuLy8gaW5zaWRlIHRoZW0gY2FuIGV4ZWN1dGUgZmFzdGVyLlxuZnVuY3Rpb24gZW1pdE5vbmUoaGFuZGxlciwgaXNGbiwgc2VsZikge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZik7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmKTtcbiAgfVxufVxuZnVuY3Rpb24gZW1pdE9uZShoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmcxKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuY2FsbChzZWxmLCBhcmcxKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5jYWxsKHNlbGYsIGFyZzEpO1xuICB9XG59XG5mdW5jdGlvbiBlbWl0VHdvKGhhbmRsZXIsIGlzRm4sIHNlbGYsIGFyZzEsIGFyZzIpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5jYWxsKHNlbGYsIGFyZzEsIGFyZzIpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmNhbGwoc2VsZiwgYXJnMSwgYXJnMik7XG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRUaHJlZShoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuY2FsbChzZWxmLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5jYWxsKHNlbGYsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRNYW55KGhhbmRsZXIsIGlzRm4sIHNlbGYsIGFyZ3MpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5hcHBseShzZWxmLCBhcmdzKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5hcHBseShzZWxmLCBhcmdzKTtcbiAgfVxufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KHR5cGUpIHtcbiAgdmFyIGVyLCBoYW5kbGVyLCBsZW4sIGFyZ3MsIGksIGV2ZW50cztcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICBpZiAoZXZlbnRzKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT0gbnVsbCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKVxuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmhhbmRsZWQgXCJlcnJvclwiIGV2ZW50LiAoJyArIGVyICsgJyknKTtcbiAgICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKCFoYW5kbGVyKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgaXNGbiA9IHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nO1xuICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICBzd2l0Y2ggKGxlbikge1xuICAgICAgLy8gZmFzdCBjYXNlc1xuICAgIGNhc2UgMTpcbiAgICAgIGVtaXROb25lKGhhbmRsZXIsIGlzRm4sIHRoaXMpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgZW1pdE9uZShoYW5kbGVyLCBpc0ZuLCB0aGlzLCBhcmd1bWVudHNbMV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgZW1pdFR3byhoYW5kbGVyLCBpc0ZuLCB0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICBlbWl0VGhyZWUoaGFuZGxlciwgaXNGbiwgdGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0sIGFyZ3VtZW50c1szXSk7XG4gICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgIGRlZmF1bHQ6XG4gICAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVtaXRNYW55KGhhbmRsZXIsIGlzRm4sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoIWV2ZW50cykge1xuICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKCFleGlzdGluZykge1xuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gICAgKyt0YXJnZXQuX2V2ZW50c0NvdW50O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPVxuICAgICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgICBpZiAocHJlcGVuZCkge1xuICAgICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgaWYgKCFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIG0gPSAkZ2V0TWF4TGlzdGVuZXJzKHRhcmdldCk7XG4gICAgICBpZiAobSAmJiBtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtKSB7XG4gICAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAgIHZhciB3ID0gbmV3IEVycm9yKCdQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICcgK1xuICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyBcIicgKyBTdHJpbmcodHlwZSkgKyAnXCIgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgJ2FkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byAnICtcbiAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdC4nKTtcbiAgICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICAgIHcuZW1pdHRlciA9IHRhcmdldDtcbiAgICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAnb2JqZWN0JyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJyVzOiAlcycsIHcubmFtZSwgdy5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgdHJ1ZSk7XG4gICAgfTtcblxuZnVuY3Rpb24gb25jZVdyYXBwZXIoKSB7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCwgYXJndW1lbnRzWzBdKTtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCwgYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0LCBhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXSxcbiAgICAgICAgICAgIGFyZ3VtZW50c1syXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKVxuICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBiaW5kLmNhbGwob25jZVdyYXBwZXIsIHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgIHRoaXMucHJlcGVuZExpc3RlbmVyKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuLy8gRW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgbGlzdCwgZXZlbnRzLCBwb3NpdGlvbiwgaSwgb3JpZ2luYWxMaXN0ZW5lcjtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoIWV2ZW50cylcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGxpc3QgPSBldmVudHNbdHlwZV07XG4gICAgICBpZiAoIWxpc3QpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKVxuICAgICAgICAgIGV2ZW50c1t0eXBlXSA9IGxpc3RbMF07XG5cbiAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoIWV2ZW50cylcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmICghZXZlbnRzLnJlbW92ZUxpc3RlbmVyKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0pIHtcbiAgICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gb2JqZWN0S2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBsaXN0ZW5lcnMgPSBldmVudHNbdHlwZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmICghZXZlbnRzKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcbiAgaWYgKCFldmxpc3RlbmVyKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgPyB1bndyYXBMaXN0ZW5lcnMoZXZsaXN0ZW5lcikgOiBhcnJheUNsb25lKGV2bGlzdGVuZXIsIGV2bGlzdGVuZXIubGVuZ3RoKTtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbiBsaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCB0cnVlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzID0gZnVuY3Rpb24gcmF3TGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGVtaXR0ZXIsIHR5cGUpO1xuICB9XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBsaXN0ZW5lckNvdW50O1xuZnVuY3Rpb24gbGlzdGVuZXJDb3VudCh0eXBlKSB7XG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cykge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3Qub3duS2V5cyh0aGlzLl9ldmVudHMpIDogW107XG59O1xuXG4vLyBBYm91dCAxLjV4IGZhc3RlciB0aGFuIHRoZSB0d28tYXJnIHZlcnNpb24gb2YgQXJyYXkjc3BsaWNlKCkuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICh2YXIgaSA9IGluZGV4LCBrID0gaSArIDEsIG4gPSBsaXN0Lmxlbmd0aDsgayA8IG47IGkgKz0gMSwgayArPSAxKVxuICAgIGxpc3RbaV0gPSBsaXN0W2tdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiBhcnJheUNsb25lKGFyciwgbikge1xuICB2YXIgY29weSA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgY29weVtpXSA9IGFycltpXTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHVud3JhcExpc3RlbmVycyhhcnIpIHtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpIHtcbiAgICByZXRbaV0gPSBhcnJbaV0ubGlzdGVuZXIgfHwgYXJyW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9iamVjdENyZWF0ZVBvbHlmaWxsKHByb3RvKSB7XG4gIHZhciBGID0gZnVuY3Rpb24oKSB7fTtcbiAgRi5wcm90b3R5cGUgPSBwcm90bztcbiAgcmV0dXJuIG5ldyBGO1xufVxuZnVuY3Rpb24gb2JqZWN0S2V5c1BvbHlmaWxsKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrIGluIG9iaikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGspKSB7XG4gICAga2V5cy5wdXNoKGspO1xuICB9XG4gIHJldHVybiBrO1xufVxuZnVuY3Rpb24gZnVuY3Rpb25CaW5kUG9seWZpbGwoY29udGV4dCkge1xuICB2YXIgZm4gPSB0aGlzO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbi5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpO1xuICB9O1xufVxuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5hZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIEFkZHJlc3MgKGZha2VyKSB7XG4gIHZhciBmID0gZmFrZXIuZmFrZSxcbiAgICAgIEhlbHBlcnMgPSBmYWtlci5oZWxwZXJzO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgcmFuZG9tIHppcGNvZGUgZnJvbSBmb3JtYXQuIElmIGZvcm1hdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGVcbiAgICogbG9jYWxlJ3MgemlwIGZvcm1hdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuemlwQ29kZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0XG4gICAqL1xuICB0aGlzLnppcENvZGUgPSBmdW5jdGlvbihmb3JtYXQpIHtcbiAgICAvLyBpZiB6aXAgZm9ybWF0IGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgemlwIGZvcm1hdCBkZWZpbmVkIGZvciB0aGUgbG9jYWxlXG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgbG9jYWxlRm9ybWF0ID0gZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5wb3N0Y29kZTtcbiAgICAgIGlmICh0eXBlb2YgbG9jYWxlRm9ybWF0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBmb3JtYXQgPSBsb2NhbGVGb3JtYXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtYXQgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGxvY2FsZUZvcm1hdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKGZvcm1hdCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgcmFuZG9tIGxvY2FsaXplZCBjaXR5IG5hbWUuIFRoZSBmb3JtYXQgc3RyaW5nIGNhbiBjb250YWluIGFueVxuICAgKiBtZXRob2QgcHJvdmlkZWQgYnkgZmFrZXIgd3JhcHBlZCBpbiBge3t9fWAsIGUuZy4gYHt7bmFtZS5maXJzdE5hbWV9fWAgaW5cbiAgICogb3JkZXIgdG8gYnVpbGQgdGhlIGNpdHkgbmFtZS5cbiAgICpcbiAgICogSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyByYW5kb21seSB1c2VkOlxuICAgKiBcbiAgICogKiBge3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19YFxuICAgKiAqIGB7e2FkZHJlc3MuY2l0eVByZWZpeH19IHt7bmFtZS5maXJzdE5hbWV9fWBcbiAgICogKiBge3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fWBcbiAgICogKiBge3tuYW1lLmxhc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19YFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY2l0eVxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0XG4gICAqL1xuICB0aGlzLmNpdHkgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgdmFyIGZvcm1hdHMgPSBbXG4gICAgICAne3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19JyxcbiAgICAgICd7e2FkZHJlc3MuY2l0eVByZWZpeH19IHt7bmFtZS5maXJzdE5hbWV9fScsXG4gICAgICAne3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fScsXG4gICAgICAne3tuYW1lLmxhc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19J1xuICAgIF07XG5cbiAgICBpZiAodHlwZW9mIGZvcm1hdCAhPT0gXCJudW1iZXJcIikge1xuICAgICAgZm9ybWF0ID0gZmFrZXIucmFuZG9tLm51bWJlcihmb3JtYXRzLmxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBmKGZvcm1hdHNbZm9ybWF0XSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByYW5kb20gbG9jYWxpemVkIGNpdHkgcHJlZml4XG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jaXR5UHJlZml4XG4gICAqL1xuICB0aGlzLmNpdHlQcmVmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jaXR5X3ByZWZpeCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmFuZG9tIGxvY2FsaXplZCBjaXR5IHN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY2l0eVN1ZmZpeFxuICAgKi9cbiAgdGhpcy5jaXR5U3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY2l0eV9zdWZmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByYW5kb20gbG9jYWxpemVkIHN0cmVldCBuYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lXG4gICAqL1xuICB0aGlzLnN0cmVldE5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgdmFyIHN1ZmZpeCA9IGZha2VyLmFkZHJlc3Muc3RyZWV0U3VmZml4KCk7XG4gICAgICBpZiAoc3VmZml4ICE9PSBcIlwiKSB7XG4gICAgICAgICAgc3VmZml4ID0gXCIgXCIgKyBzdWZmaXhcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChmYWtlci5yYW5kb20ubnVtYmVyKDEpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgICAgcmVzdWx0ID0gZmFrZXIubmFtZS5sYXN0TmFtZSgpICsgc3VmZml4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJlc3VsdCA9IGZha2VyLm5hbWUuZmlyc3ROYW1lKCkgKyBzdWZmaXg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy9cbiAgLy8gVE9ETzogY2hhbmdlIGFsbCB0aGVzZSBtZXRob2RzIHRoYXQgYWNjZXB0IGEgYm9vbGVhbiB0byBpbnN0ZWFkIGFjY2VwdCBhbiBvcHRpb25zIGhhc2guXG4gIC8vXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmFuZG9tIGxvY2FsaXplZCBzdHJlZXQgYWRkcmVzc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RyZWV0QWRkcmVzc1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHVzZUZ1bGxBZGRyZXNzXG4gICAqL1xuICB0aGlzLnN0cmVldEFkZHJlc3MgPSBmdW5jdGlvbiAodXNlRnVsbEFkZHJlc3MpIHtcbiAgICAgIGlmICh1c2VGdWxsQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7IHVzZUZ1bGxBZGRyZXNzID0gZmFsc2U7IH1cbiAgICAgIHZhciBhZGRyZXNzID0gXCJcIjtcbiAgICAgIHN3aXRjaCAoZmFrZXIucmFuZG9tLm51bWJlcigyKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAgIGFkZHJlc3MgPSBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKFwiIyMjIyNcIikgKyBcIiBcIiArIGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICAgIGFkZHJlc3MgPSBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKFwiIyMjI1wiKSArICBcIiBcIiArIGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAgIGFkZHJlc3MgPSBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKFwiIyMjXCIpICsgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB1c2VGdWxsQWRkcmVzcyA/IChhZGRyZXNzICsgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3MoKSkgOiBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0cmVldFN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RyZWV0U3VmZml4XG4gICAqL1xuICB0aGlzLnN0cmVldFN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3Muc3RyZWV0X3N1ZmZpeCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBzdHJlZXRQcmVmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldFByZWZpeFxuICAgKi9cbiAgdGhpcy5zdHJlZXRQcmVmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0cmVldF9wcmVmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlY29uZGFyeUFkZHJlc3NcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3NcbiAgICovXG4gIHRoaXMuc2Vjb25kYXJ5QWRkcmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgICAnQXB0LiAjIyMnLFxuICAgICAgICAgICAgICAnU3VpdGUgIyMjJ1xuICAgICAgICAgIF1cbiAgICAgICkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvdW50eVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY291bnR5XG4gICAqL1xuICB0aGlzLmNvdW50eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNvdW50eSk7XG4gIH1cblxuICAvKipcbiAgICogY291bnRyeVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY291bnRyeVxuICAgKi9cbiAgdGhpcy5jb3VudHJ5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY291bnRyeSk7XG4gIH1cblxuICAvKipcbiAgICogY291bnRyeUNvZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNvdW50cnlDb2RlXG4gICAqL1xuICB0aGlzLmNvdW50cnlDb2RlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY291bnRyeV9jb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGF0ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RhdGVcbiAgICogQHBhcmFtIHtCb29sZWFufSB1c2VBYmJyXG4gICAqL1xuICB0aGlzLnN0YXRlID0gZnVuY3Rpb24gKHVzZUFiYnIpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3Muc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXRlQWJiclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RhdGVBYmJyXG4gICAqL1xuICB0aGlzLnN0YXRlQWJiciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3Muc3RhdGVfYWJicik7XG4gIH1cblxuICAvKipcbiAgICogbGF0aXR1ZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmxhdGl0dWRlXG4gICAqL1xuICB0aGlzLmxhdGl0dWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIChmYWtlci5yYW5kb20ubnVtYmVyKDE4MCAqIDEwMDAwKSAvIDEwMDAwLjAgLSA5MC4wKS50b0ZpeGVkKDQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxvbmdpdHVkZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlXG4gICAqL1xuICB0aGlzLmxvbmdpdHVkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoZmFrZXIucmFuZG9tLm51bWJlcigzNjAgKiAxMDAwMCkgLyAxMDAwMC4wIC0gMTgwLjApLnRvRml4ZWQoNCk7XG4gIH1cbiAgXG4gIHJldHVybiB0aGlzO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gQWRkcmVzcztcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuY29tbWVyY2VcbiAqL1xudmFyIENvbW1lcmNlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogY29sb3JcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5jb2xvclxuICAgKi9cbiAgc2VsZi5jb2xvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UuY29sb3IpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBkZXBhcnRtZW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UuZGVwYXJ0bWVudFxuICAgKi9cbiAgc2VsZi5kZXBhcnRtZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5kZXBhcnRtZW50KTtcbiAgfTtcblxuICAvKipcbiAgICogcHJvZHVjdE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcm9kdWN0TmFtZVxuICAgKi9cbiAgc2VsZi5wcm9kdWN0TmFtZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RBZGplY3RpdmUoKSArIFwiIFwiICtcbiAgICAgICAgICAgICAgZmFrZXIuY29tbWVyY2UucHJvZHVjdE1hdGVyaWFsKCkgKyBcIiBcIiArXG4gICAgICAgICAgICAgIGZha2VyLmNvbW1lcmNlLnByb2R1Y3QoKTtcbiAgfTtcblxuICAvKipcbiAgICogcHJpY2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcmljZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHNlbGYucHJpY2UgPSBmdW5jdGlvbihtaW4sIG1heCwgZGVjLCBzeW1ib2wpIHtcbiAgICAgIG1pbiA9IG1pbiB8fCAwO1xuICAgICAgbWF4ID0gbWF4IHx8IDEwMDA7XG4gICAgICBkZWMgPSBkZWMgPT09IHVuZGVmaW5lZCA/IDIgOiBkZWM7XG4gICAgICBzeW1ib2wgPSBzeW1ib2wgfHwgJyc7XG5cbiAgICAgIGlmIChtaW4gPCAwIHx8IG1heCA8IDApIHtcbiAgICAgICAgICByZXR1cm4gc3ltYm9sICsgMC4wMDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJhbmRWYWx1ZSA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtYXg6IG1heCwgbWluOiBtaW4gfSk7XG5cbiAgICAgIHJldHVybiBzeW1ib2wgKyAoTWF0aC5yb3VuZChyYW5kVmFsdWUgKiBNYXRoLnBvdygxMCwgZGVjKSkgLyBNYXRoLnBvdygxMCwgZGVjKSkudG9GaXhlZChkZWMpO1xuICB9O1xuXG4gIC8qXG4gIHNlbGYuY2F0ZWdvcmllcyA9IGZ1bmN0aW9uKG51bSkge1xuICAgICAgdmFyIGNhdGVnb3JpZXMgPSBbXTtcblxuICAgICAgZG8ge1xuICAgICAgICAgIHZhciBjYXRlZ29yeSA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UuZGVwYXJ0bWVudCk7XG4gICAgICAgICAgaWYoY2F0ZWdvcmllcy5pbmRleE9mKGNhdGVnb3J5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKGNhdGVnb3J5KTtcbiAgICAgICAgICB9XG4gICAgICB9IHdoaWxlKGNhdGVnb3JpZXMubGVuZ3RoIDwgbnVtKTtcblxuICAgICAgcmV0dXJuIGNhdGVnb3JpZXM7XG4gIH07XG5cbiAgKi9cbiAgLypcbiAgc2VsZi5tZXJnZUNhdGVnb3JpZXMgPSBmdW5jdGlvbihjYXRlZ29yaWVzKSB7XG4gICAgICB2YXIgc2VwYXJhdG9yID0gZmFrZXIuZGVmaW5pdGlvbnMuc2VwYXJhdG9yIHx8IFwiICZcIjtcbiAgICAgIC8vIFRPRE86IGZpbmQgdW5kZWZpbmVkIGhlcmVcbiAgICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzIHx8IGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmNhdGVnb3JpZXM7XG4gICAgICB2YXIgY29tbWFTZXBhcmF0ZWQgPSBjYXRlZ29yaWVzLnNsaWNlKDAsIC0xKS5qb2luKCcsICcpO1xuXG4gICAgICByZXR1cm4gW2NvbW1hU2VwYXJhdGVkLCBjYXRlZ29yaWVzW2NhdGVnb3JpZXMubGVuZ3RoIC0gMV1dLmpvaW4oc2VwYXJhdG9yICsgXCIgXCIpO1xuICB9O1xuICAqL1xuXG4gIC8qKlxuICAgKiBwcm9kdWN0QWRqZWN0aXZlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJvZHVjdEFkamVjdGl2ZVxuICAgKi9cbiAgc2VsZi5wcm9kdWN0QWRqZWN0aXZlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5wcm9kdWN0X25hbWUuYWRqZWN0aXZlKTtcbiAgfTtcblxuICAvKipcbiAgICogcHJvZHVjdE1hdGVyaWFsXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJvZHVjdE1hdGVyaWFsXG4gICAqL1xuICBzZWxmLnByb2R1Y3RNYXRlcmlhbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UucHJvZHVjdF9uYW1lLm1hdGVyaWFsKTtcbiAgfTtcblxuICAvKipcbiAgICogcHJvZHVjdFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RcbiAgICovXG4gIHNlbGYucHJvZHVjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UucHJvZHVjdF9uYW1lLnByb2R1Y3QpO1xuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBDb21tZXJjZTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuY29tcGFueVxuICovXG52YXIgQ29tcGFueSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICBcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgZiA9IGZha2VyLmZha2U7XG4gIFxuICAvKipcbiAgICogc3VmZml4ZXNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LnN1ZmZpeGVzXG4gICAqL1xuICB0aGlzLnN1ZmZpeGVzID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIERvbid0IHdhbnQgdGhlIHNvdXJjZSBhcnJheSBleHBvc2VkIHRvIG1vZGlmaWNhdGlvbiwgc28gcmV0dXJuIGEgY29weVxuICAgIHJldHVybiBmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LnN1ZmZpeC5zbGljZSgwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb21wYW55TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgdGhpcy5jb21wYW55TmFtZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcblxuICAgIHZhciBmb3JtYXRzID0gW1xuICAgICAgJ3t7bmFtZS5sYXN0TmFtZX19IHt7Y29tcGFueS5jb21wYW55U3VmZml4fX0nLFxuICAgICAgJ3t7bmFtZS5sYXN0TmFtZX19IC0ge3tuYW1lLmxhc3ROYW1lfX0nLFxuICAgICAgJ3t7bmFtZS5sYXN0TmFtZX19LCB7e25hbWUubGFzdE5hbWV9fSBhbmQge3tuYW1lLmxhc3ROYW1lfX0nXG4gICAgXTtcblxuICAgIGlmICh0eXBlb2YgZm9ybWF0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICBmb3JtYXQgPSBmYWtlci5yYW5kb20ubnVtYmVyKGZvcm1hdHMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGYoZm9ybWF0c1tmb3JtYXRdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb21wYW55U3VmZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jb21wYW55U3VmZml4XG4gICAqL1xuICB0aGlzLmNvbXBhbnlTdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5jb21wYW55LnN1ZmZpeGVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZVxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZigne3tjb21wYW55LmNhdGNoUGhyYXNlQWRqZWN0aXZlfX0ge3tjb21wYW55LmNhdGNoUGhyYXNlRGVzY3JpcHRvcn19IHt7Y29tcGFueS5jYXRjaFBocmFzZU5vdW59fScpXG4gIH1cblxuICAvKipcbiAgICogYnNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmJzXG4gICAqL1xuICB0aGlzLmJzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmKCd7e2NvbXBhbnkuYnNBZGplY3RpdmV9fSB7e2NvbXBhbnkuYnNCdXp6fX0ge3tjb21wYW55LmJzTm91bn19Jyk7XG4gIH1cblxuICAvKipcbiAgICogY2F0Y2hQaHJhc2VBZGplY3RpdmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlQWRqZWN0aXZlXG4gICAqL1xuICB0aGlzLmNhdGNoUGhyYXNlQWRqZWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5hZGplY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlRGVzY3JpcHRvclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VEZXNjcmlwdG9yXG4gICAqL1xuICB0aGlzLmNhdGNoUGhyYXNlRGVzY3JpcHRvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuZGVzY3JpcHRvcik7XG4gIH1cblxuICAvKipcbiAgICogY2F0Y2hQaHJhc2VOb3VuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZU5vdW5cbiAgICovXG4gIHRoaXMuY2F0Y2hQaHJhc2VOb3VuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ub3VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBic0FkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuYnNBZGplY3RpdmVcbiAgICovXG4gIHRoaXMuYnNBZGplY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmJzX2FkamVjdGl2ZSk7XG4gIH1cblxuICAvKipcbiAgICogYnNCdXp6XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic0J1enpcbiAgICovXG4gIHRoaXMuYnNCdXp6ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ic192ZXJiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBic05vdW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmJzTm91blxuICAgKi9cbiAgdGhpcy5ic05vdW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmJzX25vdW4pO1xuICB9XG4gIFxufVxuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IENvbXBhbnk7IiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5kYXRhYmFzZVxuICovXG52YXIgRGF0YWJhc2UgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICAvKipcbiAgICogY29sdW1uXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0YWJhc2UuY29sdW1uXG4gICAqL1xuICBzZWxmLmNvbHVtbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLmNvbHVtbik7XG4gIH07XG5cbiAgc2VsZi5jb2x1bW4uc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBjb2x1bW4gbmFtZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiaWRcIiwgXCJ0aXRsZVwiLCBcImNyZWF0ZWRBdFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiB0eXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0YWJhc2UudHlwZVxuICAgKi9cbiAgc2VsZi50eXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZGF0YWJhc2UudHlwZSk7XG4gIH07XG5cbiAgc2VsZi50eXBlLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgY29sdW1uIHR5cGUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImJ5dGVcIiwgXCJpbnRcIiwgXCJ2YXJjaGFyXCIsIFwidGltZXN0YW1wXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbGxhdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLmNvbGxhdGlvblxuICAgKi9cbiAgc2VsZi5jb2xsYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5kYXRhYmFzZS5jb2xsYXRpb24pO1xuICB9O1xuXG4gIHNlbGYuY29sbGF0aW9uLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgY29sbGF0aW9uLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJ1dGY4X3VuaWNvZGVfY2lcIiwgXCJ1dGY4X2JpblwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBlbmdpbmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRhYmFzZS5lbmdpbmVcbiAgICovXG4gIHNlbGYuZW5naW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZGF0YWJhc2UuZW5naW5lKTtcbiAgfTtcblxuICBzZWxmLmVuZ2luZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHN0b3JhZ2UgZW5naW5lLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJNeUlTQU1cIiwgXCJJbm5vREJcIl1cbiAgfTtcbn07XG5cbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBEYXRhYmFzZTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuZGF0ZVxuICovXG52YXIgX0RhdGUgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICAvKipcbiAgICogcGFzdFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUucGFzdFxuICAgKiBAcGFyYW0ge251bWJlcn0geWVhcnNcbiAgICogQHBhcmFtIHtkYXRlfSByZWZEYXRlXG4gICAqL1xuICBzZWxmLnBhc3QgPSBmdW5jdGlvbiAoeWVhcnMsIHJlZkRhdGUpIHtcbiAgICAgIHZhciBkYXRlID0gKHJlZkRhdGUpID8gbmV3IERhdGUoRGF0ZS5wYXJzZShyZWZEYXRlKSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgdmFyIHJhbmdlID0ge1xuICAgICAgICBtaW46IDEwMDAsXG4gICAgICAgIG1heDogKHllYXJzIHx8IDEpICogMzY1ICogMjQgKiAzNjAwICogMTAwMFxuICAgICAgfTtcblxuICAgICAgdmFyIHBhc3QgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIHBhc3QgLT0gZmFrZXIucmFuZG9tLm51bWJlcihyYW5nZSk7IC8vIHNvbWUgdGltZSBmcm9tIG5vdyB0byBOIHllYXJzIGFnbywgaW4gbWlsbGlzZWNvbmRzXG4gICAgICBkYXRlLnNldFRpbWUocGFzdCk7XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmdXR1cmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLmZ1dHVyZVxuICAgKiBAcGFyYW0ge251bWJlcn0geWVhcnNcbiAgICogQHBhcmFtIHtkYXRlfSByZWZEYXRlXG4gICAqL1xuICBzZWxmLmZ1dHVyZSA9IGZ1bmN0aW9uICh5ZWFycywgcmVmRGF0ZSkge1xuICAgICAgdmFyIGRhdGUgPSAocmVmRGF0ZSkgPyBuZXcgRGF0ZShEYXRlLnBhcnNlKHJlZkRhdGUpKSA6IG5ldyBEYXRlKCk7XG4gICAgICB2YXIgcmFuZ2UgPSB7XG4gICAgICAgIG1pbjogMTAwMCxcbiAgICAgICAgbWF4OiAoeWVhcnMgfHwgMSkgKiAzNjUgKiAyNCAqIDM2MDAgKiAxMDAwXG4gICAgICB9O1xuXG4gICAgICB2YXIgZnV0dXJlID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICBmdXR1cmUgKz0gZmFrZXIucmFuZG9tLm51bWJlcihyYW5nZSk7IC8vIHNvbWUgdGltZSBmcm9tIG5vdyB0byBOIHllYXJzIGxhdGVyLCBpbiBtaWxsaXNlY29uZHNcbiAgICAgIGRhdGUuc2V0VGltZShmdXR1cmUpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogYmV0d2VlblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUuYmV0d2VlblxuICAgKiBAcGFyYW0ge2RhdGV9IGZyb21cbiAgICogQHBhcmFtIHtkYXRlfSB0b1xuICAgKi9cbiAgc2VsZi5iZXR3ZWVuID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICB2YXIgZnJvbU1pbGxpID0gRGF0ZS5wYXJzZShmcm9tKTtcbiAgICAgIHZhciBkYXRlT2Zmc2V0ID0gZmFrZXIucmFuZG9tLm51bWJlcihEYXRlLnBhcnNlKHRvKSAtIGZyb21NaWxsaSk7XG5cbiAgICAgIHZhciBuZXdEYXRlID0gbmV3IERhdGUoZnJvbU1pbGxpICsgZGF0ZU9mZnNldCk7XG5cbiAgICAgIHJldHVybiBuZXdEYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZWNlbnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLnJlY2VudFxuICAgKiBAcGFyYW0ge251bWJlcn0gZGF5c1xuICAgKi9cbiAgc2VsZi5yZWNlbnQgPSBmdW5jdGlvbiAoZGF5cykge1xuICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgdmFyIHJhbmdlID0ge1xuICAgICAgICBtaW46IDEwMDAsXG4gICAgICAgIG1heDogKGRheXMgfHwgMSkgKiAyNCAqIDM2MDAgKiAxMDAwXG4gICAgICB9O1xuXG4gICAgICB2YXIgZnV0dXJlID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICBmdXR1cmUgLT0gZmFrZXIucmFuZG9tLm51bWJlcihyYW5nZSk7IC8vIHNvbWUgdGltZSBmcm9tIG5vdyB0byBOIGRheXMgYWdvLCBpbiBtaWxsaXNlY29uZHNcbiAgICAgIGRhdGUuc2V0VGltZShmdXR1cmUpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogbW9udGhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLm1vbnRoXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBzZWxmLm1vbnRoID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICB2YXIgdHlwZSA9ICd3aWRlJztcbiAgICAgIGlmIChvcHRpb25zLmFiYnIpIHtcbiAgICAgICAgICB0eXBlID0gJ2FiYnInO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuY29udGV4dCAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMuZGF0ZS5tb250aFt0eXBlICsgJ19jb250ZXh0J10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdHlwZSArPSAnX2NvbnRleHQnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gZmFrZXIuZGVmaW5pdGlvbnMuZGF0ZS5tb250aFt0eXBlXTtcblxuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoc291cmNlKTtcbiAgfTtcblxuICAvKipcbiAgICogd2Vla2RheVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUud2Vla2RheVxuICAgKi9cbiAgc2VsZi53ZWVrZGF5ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICB2YXIgdHlwZSA9ICd3aWRlJztcbiAgICAgIGlmIChvcHRpb25zLmFiYnIpIHtcbiAgICAgICAgICB0eXBlID0gJ2FiYnInO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuY29udGV4dCAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMuZGF0ZS53ZWVrZGF5W3R5cGUgKyAnX2NvbnRleHQnXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0eXBlICs9ICdfY29udGV4dCc7XG4gICAgICB9XG5cbiAgICAgIHZhciBzb3VyY2UgPSBmYWtlci5kZWZpbml0aW9ucy5kYXRlLndlZWtkYXlbdHlwZV07XG5cbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHNvdXJjZSk7XG4gIH07XG4gIFxuICByZXR1cm4gc2VsZjtcbiAgXG59O1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IF9EYXRlOyIsIi8qXG4gIGZha2UuanMgLSBnZW5lcmF0b3IgbWV0aG9kIGZvciBjb21iaW5pbmcgZmFrZXIgbWV0aG9kcyBiYXNlZCBvbiBzdHJpbmcgaW5wdXRcblxuKi9cblxuZnVuY3Rpb24gRmFrZSAoZmFrZXIpIHtcbiAgXG4gIC8qKlxuICAgKiBHZW5lcmF0b3IgbWV0aG9kIGZvciBjb21iaW5pbmcgZmFrZXIgbWV0aG9kcyBiYXNlZCBvbiBzdHJpbmcgaW5wdXRcbiAgICpcbiAgICogX19FeGFtcGxlOl9fXG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zb2xlLmxvZyhmYWtlci5mYWtlKCd7e25hbWUubGFzdE5hbWV9fSwge3tuYW1lLmZpcnN0TmFtZX19IHt7bmFtZS5zdWZmaXh9fScpKTtcbiAgICogLy9vdXRwdXRzOiBcIk1hcmtzLCBEZWFuIFNyLlwiXG4gICAqIGBgYFxuICAgKlxuICAgKiBUaGlzIHdpbGwgaW50ZXJwb2xhdGUgdGhlIGZvcm1hdCBzdHJpbmcgd2l0aCB0aGUgdmFsdWUgb2YgbWV0aG9kc1xuICAgKiBbbmFtZS5sYXN0TmFtZV17QGxpbmsgZmFrZXIubmFtZS5sYXN0TmFtZX0sIFtuYW1lLmZpcnN0TmFtZV17QGxpbmsgZmFrZXIubmFtZS5maXJzdE5hbWV9LFxuICAgKiBhbmQgW25hbWUuc3VmZml4XXtAbGluayBmYWtlci5uYW1lLnN1ZmZpeH1cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5mYWtlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICovXG4gIHRoaXMuZmFrZSA9IGZ1bmN0aW9uIGZha2UgKHN0cikge1xuICAgIC8vIHNldHVwIGRlZmF1bHQgcmVzcG9uc2UgYXMgZW1wdHkgc3RyaW5nXG4gICAgdmFyIHJlcyA9ICcnO1xuXG4gICAgLy8gaWYgaW5jb21pbmcgc3RyIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIHJldHVybiBlcnJvciBtZXNzYWdlXG4gICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnIHx8IHN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlcyA9ICdzdHJpbmcgcGFyYW1ldGVyIGlzIHJlcXVpcmVkISc7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIGZpbmQgZmlyc3QgbWF0Y2hpbmcge3sgYW5kIH19XG4gICAgdmFyIHN0YXJ0ID0gc3RyLnNlYXJjaCgne3snKTtcbiAgICB2YXIgZW5kID0gc3RyLnNlYXJjaCgnfX0nKTtcblxuICAgIC8vIGlmIG5vIHt7IGFuZCB9fSBpcyBmb3VuZCwgd2UgYXJlIGRvbmVcbiAgICBpZiAoc3RhcnQgPT09IC0xICYmIGVuZCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ2F0dGVtcHRpbmcgdG8gcGFyc2UnLCBzdHIpO1xuXG4gICAgLy8gZXh0cmFjdCBtZXRob2QgbmFtZSBmcm9tIGJldHdlZW4gdGhlIHt7IH19IHRoYXQgd2UgZm91bmRcbiAgICAvLyBmb3IgZXhhbXBsZToge3tuYW1lLmZpcnN0TmFtZX19XG4gICAgdmFyIHRva2VuID0gc3RyLnN1YnN0cihzdGFydCArIDIsICBlbmQgLSBzdGFydCAtIDIpO1xuICAgIHZhciBtZXRob2QgPSB0b2tlbi5yZXBsYWNlKCd9fScsICcnKS5yZXBsYWNlKCd7eycsICcnKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdtZXRob2QnLCBtZXRob2QpXG5cbiAgICAvLyBleHRyYWN0IG1ldGhvZCBwYXJhbWV0ZXJzXG4gICAgdmFyIHJlZ0V4cCA9IC9cXCgoW14pXSspXFwpLztcbiAgICB2YXIgbWF0Y2hlcyA9IHJlZ0V4cC5leGVjKG1ldGhvZCk7XG4gICAgdmFyIHBhcmFtZXRlcnMgPSAnJztcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgbWV0aG9kID0gbWV0aG9kLnJlcGxhY2UocmVnRXhwLCAnJyk7XG4gICAgICBwYXJhbWV0ZXJzID0gbWF0Y2hlc1sxXTtcbiAgICB9XG5cbiAgICAvLyBzcGxpdCB0aGUgbWV0aG9kIGludG8gbW9kdWxlIGFuZCBmdW5jdGlvblxuICAgIHZhciBwYXJ0cyA9IG1ldGhvZC5zcGxpdCgnLicpO1xuXG4gICAgaWYgKHR5cGVvZiBmYWtlcltwYXJ0c1swXV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtb2R1bGU6ICcgKyBwYXJ0c1swXSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmYWtlcltwYXJ0c1swXV1bcGFydHNbMV1dID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWV0aG9kOiAnICsgcGFydHNbMF0gKyBcIi5cIiArIHBhcnRzWzFdKTtcbiAgICB9XG5cbiAgICAvLyBhc3NpZ24gdGhlIGZ1bmN0aW9uIGZyb20gdGhlIG1vZHVsZS5mdW5jdGlvbiBuYW1lc3BhY2VcbiAgICB2YXIgZm4gPSBmYWtlcltwYXJ0c1swXV1bcGFydHNbMV1dO1xuXG4gICAgLy8gSWYgcGFyYW1ldGVycyBhcmUgcG9wdWxhdGVkIGhlcmUsIHRoZXkgYXJlIGFsd2F5cyBnb2luZyB0byBiZSBvZiBzdHJpbmcgdHlwZVxuICAgIC8vIHNpbmNlIHdlIG1pZ2h0IGFjdHVhbGx5IGJlIGRlYWxpbmcgd2l0aCBhbiBvYmplY3Qgb3IgYXJyYXksXG4gICAgLy8gd2UgYWx3YXlzIGF0dGVtcHQgdG8gdGhlIHBhcnNlIHRoZSBpbmNvbWluZyBwYXJhbWV0ZXJzIGludG8gSlNPTlxuICAgIHZhciBwYXJhbXM7XG4gICAgLy8gTm90ZTogd2UgZXhwZXJpZW5jZSBhIHNtYWxsIHBlcmZvcm1hbmNlIGhpdCBoZXJlIGR1ZSB0byBKU09OLnBhcnNlIHRyeSAvIGNhdGNoXG4gICAgLy8gSWYgYW55b25lIGFjdHVhbGx5IG5lZWRzIHRvIG9wdGltaXplIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLCBwbGVhc2Ugb3BlbiBhIHN1cHBvcnQgaXNzdWUgb24gZ2l0aHViXG4gICAgdHJ5IHtcbiAgICAgIHBhcmFtcyA9IEpTT04ucGFyc2UocGFyYW1ldGVycylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHNpbmNlIEpTT04ucGFyc2UgdGhyZXcgYW4gZXJyb3IsIGFzc3VtZSBwYXJhbWV0ZXJzIHdhcyBhY3R1YWxseSBhIHN0cmluZ1xuICAgICAgcGFyYW1zID0gcGFyYW1ldGVycztcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSBcInN0cmluZ1wiICYmIHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IGZuLmNhbGwodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGZuLmNhbGwodGhpcywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyByZXBsYWNlIHRoZSBmb3VuZCB0YWcgd2l0aCB0aGUgcmV0dXJuZWQgZmFrZSB2YWx1ZVxuICAgIHJlcyA9IHN0ci5yZXBsYWNlKCd7eycgKyB0b2tlbiArICd9fScsIHJlc3VsdCk7XG5cbiAgICAvLyByZXR1cm4gdGhlIHJlc3BvbnNlIHJlY3Vyc2l2ZWx5IHVudGlsIHdlIGFyZSBkb25lIGZpbmRpbmcgYWxsIHRhZ3NcbiAgICByZXR1cm4gZmFrZShyZXMpOyAgICBcbiAgfVxuICBcbiAgcmV0dXJuIHRoaXM7XG4gIFxuICBcbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBGYWtlOyIsIi8qKlxuICogQG5hbWVzcGFjZSBmYWtlci5maW5hbmNlXG4gKi9cbnZhciBGaW5hbmNlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBpYmFuTGliID0gcmVxdWlyZShcIi4vaWJhblwiKTtcbiAgdmFyIEhlbHBlcnMgPSBmYWtlci5oZWxwZXJzLFxuICAgICAgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIGFjY291bnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmFjY291bnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICAgKi9cbiAgc2VsZi5hY2NvdW50ID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuXG4gICAgICBsZW5ndGggPSBsZW5ndGggfHwgODtcblxuICAgICAgdmFyIHRlbXBsYXRlID0gJyc7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlICsgJyMnO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gbnVsbDtcbiAgICAgIHJldHVybiBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKHRlbXBsYXRlKTtcbiAgfTtcblxuICAvKipcbiAgICogYWNjb3VudE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmFjY291bnROYW1lXG4gICAqL1xuICBzZWxmLmFjY291bnROYW1lID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICByZXR1cm4gW0hlbHBlcnMucmFuZG9taXplKGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UuYWNjb3VudF90eXBlKSwgJ0FjY291bnQnXS5qb2luKCcgJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIG1hc2tcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLm1hc2tcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmVuc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVsbGlwc2lzXG4gICAqL1xuICBzZWxmLm1hc2sgPSBmdW5jdGlvbiAobGVuZ3RoLCBwYXJlbnMsIGVsbGlwc2lzKSB7XG5cbiAgICAgIC8vc2V0IGRlZmF1bHRzXG4gICAgICBsZW5ndGggPSAobGVuZ3RoID09IDAgfHwgIWxlbmd0aCB8fCB0eXBlb2YgbGVuZ3RoID09ICd1bmRlZmluZWQnKSA/IDQgOiBsZW5ndGg7XG4gICAgICBwYXJlbnMgPSAocGFyZW5zID09PSBudWxsKSA/IHRydWUgOiBwYXJlbnM7XG4gICAgICBlbGxpcHNpcyA9IChlbGxpcHNpcyA9PT0gbnVsbCkgPyB0cnVlIDogZWxsaXBzaXM7XG5cbiAgICAgIC8vY3JlYXRlIGEgdGVtcGxhdGUgZm9yIGxlbmd0aFxuICAgICAgdmFyIHRlbXBsYXRlID0gJyc7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlICsgJyMnO1xuICAgICAgfVxuXG4gICAgICAvL3ByZWZpeCB3aXRoIGVsbGlwc2lzXG4gICAgICB0ZW1wbGF0ZSA9IChlbGxpcHNpcykgPyBbJy4uLicsIHRlbXBsYXRlXS5qb2luKCcnKSA6IHRlbXBsYXRlO1xuXG4gICAgICB0ZW1wbGF0ZSA9IChwYXJlbnMpID8gWycoJywgdGVtcGxhdGUsICcpJ10uam9pbignJykgOiB0ZW1wbGF0ZTtcblxuICAgICAgLy9nZW5lcmF0ZSByYW5kb20gbnVtYmVyc1xuICAgICAgdGVtcGxhdGUgPSBIZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKHRlbXBsYXRlKTtcblxuICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9O1xuXG4gIC8vbWluIGFuZCBtYXggdGFrZSBpbiBtaW5pbXVtIGFuZCBtYXhpbXVtIGFtb3VudHMsIGRlYyBpcyB0aGUgZGVjaW1hbCBwbGFjZSB5b3Ugd2FudCByb3VuZGVkIHRvLCBzeW1ib2wgaXMgJCwg4oKsLCDCoywgZXRjXG4gIC8vTk9URTogdGhpcyByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSwgaWYgeW91IHdhbnQgYSBudW1iZXIgdXNlIHBhcnNlRmxvYXQgYW5kIG5vIHN5bWJvbFxuXG4gIC8qKlxuICAgKiBhbW91bnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmFtb3VudFxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlY1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHNlbGYuYW1vdW50ID0gZnVuY3Rpb24gKG1pbiwgbWF4LCBkZWMsIHN5bWJvbCkge1xuXG4gICAgICBtaW4gPSBtaW4gfHwgMDtcbiAgICAgIG1heCA9IG1heCB8fCAxMDAwO1xuICAgICAgZGVjID0gZGVjID09PSB1bmRlZmluZWQgPyAyIDogZGVjO1xuICAgICAgc3ltYm9sID0gc3ltYm9sIHx8ICcnO1xuICAgICAgdmFyIHJhbmRWYWx1ZSA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtYXg6IG1heCwgbWluOiBtaW4sIHByZWNpc2lvbjogTWF0aC5wb3coMTAsIC1kZWMpIH0pO1xuXG4gICAgICByZXR1cm4gc3ltYm9sICsgcmFuZFZhbHVlLnRvRml4ZWQoZGVjKTtcbiAgfTtcblxuICAvKipcbiAgICogdHJhbnNhY3Rpb25UeXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS50cmFuc2FjdGlvblR5cGVcbiAgICovXG4gIHNlbGYudHJhbnNhY3Rpb25UeXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIEhlbHBlcnMucmFuZG9taXplKGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UudHJhbnNhY3Rpb25fdHlwZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGN1cnJlbmN5Q29kZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuY3VycmVuY3lDb2RlXG4gICAqL1xuICBzZWxmLmN1cnJlbmN5Q29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20ub2JqZWN0RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmN1cnJlbmN5KVsnY29kZSddO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjdXJyZW5jeU5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmN1cnJlbmN5TmFtZVxuICAgKi9cbiAgc2VsZi5jdXJyZW5jeU5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS5jdXJyZW5jeSwgJ2tleScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjdXJyZW5jeVN5bWJvbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuY3VycmVuY3lTeW1ib2xcbiAgICovXG4gIHNlbGYuY3VycmVuY3lTeW1ib2wgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc3ltYm9sO1xuXG4gICAgICB3aGlsZSAoIXN5bWJvbCkge1xuICAgICAgICAgIHN5bWJvbCA9IGZha2VyLnJhbmRvbS5vYmplY3RFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UuY3VycmVuY3kpWydzeW1ib2wnXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzeW1ib2w7XG4gIH07XG5cbiAgLyoqXG4gICAqIGJpdGNvaW5BZGRyZXNzXG4gICAqXG4gICAqIEBtZXRob2QgIGZha2VyLmZpbmFuY2UuYml0Y29pbkFkZHJlc3NcbiAgICovXG4gIHNlbGYuYml0Y29pbkFkZHJlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFkZHJlc3NMZW5ndGggPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWluOiAyNywgbWF4OiAzNCB9KTtcblxuICAgIHZhciBhZGRyZXNzID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbJzEnLCAnMyddKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkcmVzc0xlbmd0aCAtIDE7IGkrKylcbiAgICAgIGFkZHJlc3MgKz0gZmFrZXIucmFuZG9tLmFscGhhTnVtZXJpYygpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gYWRkcmVzcztcbiAgfTtcblxuICAvKipcbiAgICogaWJhblxuICAgKlxuICAgKiBAbWV0aG9kICBmYWtlci5maW5hbmNlLmliYW5cbiAgICovXG4gIHNlbGYuaWJhbiA9IGZ1bmN0aW9uIChmb3JtYXR0ZWQpIHtcbiAgICAgIHZhciBpYmFuRm9ybWF0ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmZvcm1hdHMpO1xuICAgICAgdmFyIHMgPSBcIlwiO1xuICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgIGZvciAodmFyIGIgPSAwOyBiIDwgaWJhbkZvcm1hdC5iYmFuLmxlbmd0aDsgYisrKSB7XG4gICAgICAgICAgdmFyIGJiYW4gPSBpYmFuRm9ybWF0LmJiYW5bYl07XG4gICAgICAgICAgdmFyIGMgPSBiYmFuLmNvdW50O1xuICAgICAgICAgIGNvdW50ICs9IGJiYW4uY291bnQ7XG4gICAgICAgICAgd2hpbGUgKGMgPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChiYmFuLnR5cGUgPT0gXCJhXCIpIHtcbiAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmFscGhhKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYmFuLnR5cGUgPT0gXCJjXCIpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChmYWtlci5yYW5kb20ubnVtYmVyKDEwMCkgPCA4MCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIuYWxwaGEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gMyAmJiBmYWtlci5yYW5kb20ubnVtYmVyKDEwMCkgPCAzMCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWtlci5yYW5kb20uYm9vbGVhbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLnBhdHRlcm4xMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjIC09IDI7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIucGF0dGVybjEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYy0tO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20ubnVtYmVyKDkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGMtLTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKDAsIGNvdW50KTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGVja3N1bSA9IDk4IC0gaWJhbkxpYi5tb2Q5NyhpYmFuTGliLnRvRGlnaXRTdHJpbmcocyArIGliYW5Gb3JtYXQuY291bnRyeSArIFwiMDBcIikpO1xuICAgICAgaWYgKGNoZWNrc3VtIDwgMTApIHtcbiAgICAgICAgICBjaGVja3N1bSA9IFwiMFwiICsgY2hlY2tzdW07XG4gICAgICB9XG4gICAgICB2YXIgaWJhbiA9IGliYW5Gb3JtYXQuY291bnRyeSArIGNoZWNrc3VtICsgcztcbiAgICAgIHJldHVybiBmb3JtYXR0ZWQgPyBpYmFuLm1hdGNoKC8uezEsNH0vZykuam9pbihcIiBcIikgOiBpYmFuO1xuICB9O1xuXG4gIC8qKlxuICAgKiBiaWNcbiAgICpcbiAgICogQG1ldGhvZCAgZmFrZXIuZmluYW5jZS5iaWNcbiAgICovXG4gIHNlbGYuYmljID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHZvd2VscyA9IFtcIkFcIiwgXCJFXCIsIFwiSVwiLCBcIk9cIiwgXCJVXCJdO1xuICAgICAgdmFyIHByb2IgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEwMCk7XG4gICAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIj8/P1wiKSArXG4gICAgICAgICAgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh2b3dlbHMpICtcbiAgICAgICAgICBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIuaXNvMzE2NikgK1xuICAgICAgICAgIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoXCI/XCIpICsgXCIxXCIgK1xuICAgICAgICAgIChwcm9iIDwgMTAgP1xuICAgICAgICAgICAgICBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKFwiP1wiICsgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh2b3dlbHMpICsgXCI/XCIpIDpcbiAgICAgICAgICBwcm9iIDwgNDAgP1xuICAgICAgICAgICAgICBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKFwiIyMjXCIpIDogXCJcIik7XG4gIH07XG59O1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEZpbmFuY2U7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmhhY2tlclxuICovXG52YXIgSGFja2VyID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgXG4gIC8qKlxuICAgKiBhYmJyZXZpYXRpb25cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIuYWJicmV2aWF0aW9uXG4gICAqL1xuICBzZWxmLmFiYnJldmlhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIuYWJicmV2aWF0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogYWRqZWN0aXZlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLmFkamVjdGl2ZVxuICAgKi9cbiAgc2VsZi5hZGplY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLmFkamVjdGl2ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIG5vdW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIubm91blxuICAgKi9cbiAgc2VsZi5ub3VuID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci5ub3VuKTtcbiAgfTtcblxuICAvKipcbiAgICogdmVyYlxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci52ZXJiXG4gICAqL1xuICBzZWxmLnZlcmIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLnZlcmIpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBpbmd2ZXJiXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLmluZ3ZlcmJcbiAgICovXG4gIHNlbGYuaW5ndmVyYiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIuaW5ndmVyYik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBocmFzZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5waHJhc2VcbiAgICovXG4gIHNlbGYucGhyYXNlID0gZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBhYmJyZXZpYXRpb246IHNlbGYuYWJicmV2aWF0aW9uLFxuICAgICAgYWRqZWN0aXZlOiBzZWxmLmFkamVjdGl2ZSxcbiAgICAgIGluZ3ZlcmI6IHNlbGYuaW5ndmVyYixcbiAgICAgIG5vdW46IHNlbGYubm91bixcbiAgICAgIHZlcmI6IHNlbGYudmVyYlxuICAgIH07XG5cbiAgICB2YXIgcGhyYXNlID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbIFwiSWYgd2Uge3t2ZXJifX0gdGhlIHt7bm91bn19LCB3ZSBjYW4gZ2V0IHRvIHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IHRocm91Z2ggdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiV2UgbmVlZCB0byB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJUcnkgdG8ge3t2ZXJifX0gdGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0sIG1heWJlIGl0IHdpbGwge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3tub3VufX0hXCIsXG4gICAgICBcIllvdSBjYW4ndCB7e3ZlcmJ9fSB0aGUge3tub3VufX0gd2l0aG91dCB7e2luZ3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJVc2UgdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSwgdGhlbiB5b3UgY2FuIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7bm91bn19IVwiLFxuICAgICAgXCJUaGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSBpcyBkb3duLCB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e25vdW59fSBzbyB3ZSBjYW4ge3t2ZXJifX0gdGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcInt7aW5ndmVyYn19IHRoZSB7e25vdW59fSB3b24ndCBkbyBhbnl0aGluZywgd2UgbmVlZCB0byB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJJJ2xsIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0sIHRoYXQgc2hvdWxkIHt7bm91bn19IHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiXG4gICBdKTtcblxuICAgcmV0dXJuIGZha2VyLmhlbHBlcnMubXVzdGFjaGUocGhyYXNlLCBkYXRhKTtcblxuICB9O1xuICBcbiAgcmV0dXJuIHNlbGY7XG59O1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEhhY2tlcjsiLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmhlbHBlcnNcbiAqL1xudmFyIEhlbHBlcnMgPSBmdW5jdGlvbiAoZmFrZXIpIHtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIGJhY2t3b3JkLWNvbXBhdGliaWxpdHlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnJhbmRvbWl6ZVxuICAgKiBAcGFyYW0ge2FycmF5fSBhcnJheVxuICAgKi9cbiAgc2VsZi5yYW5kb21pemUgPSBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgIGFycmF5ID0gYXJyYXkgfHwgW1wiYVwiLCBcImJcIiwgXCJjXCJdO1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoYXJyYXkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzbHVnaWZpZXMgc3RyaW5nXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5zbHVnaWZ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICovXG4gIHNlbGYuc2x1Z2lmeSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyB8fCBcIlwiO1xuICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8gL2csICctJykucmVwbGFjZSgvW15cXHdcXC5cXC1dKy9nLCAnJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhcnNlcyBzdHJpbmcgZm9yIGEgc3ltYm9sIGFuZCByZXBsYWNlIGl0IHdpdGggYSByYW5kb20gbnVtYmVyIGZyb20gMS0xMFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIGRlZmF1bHRzIHRvIGBcIiNcImBcbiAgICovXG4gIHNlbGYucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIgPSBmdW5jdGlvbiAoc3RyaW5nLCBzeW1ib2wpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyB8fCBcIlwiO1xuICAgICAgLy8gZGVmYXVsdCBzeW1ib2wgaXMgJyMnXG4gICAgICBpZiAoc3ltYm9sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzeW1ib2wgPSAnIyc7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdHIgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHN0cmluZy5jaGFyQXQoaSkgPT0gc3ltYm9sKSB7XG4gICAgICAgICAgICAgIHN0ciArPSBmYWtlci5yYW5kb20ubnVtYmVyKDkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0ciArPSBzdHJpbmcuY2hhckF0KGkpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhcnNlcyBzdHJpbmcgZm9yIHN5bWJvbHMgKG51bWJlcnMgb3IgbGV0dGVycykgYW5kIHJlcGxhY2VzIHRoZW0gYXBwcm9wcmlhdGVseVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMucmVwbGFjZVN5bWJvbHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICAgKi9cbiAgc2VsZi5yZXBsYWNlU3ltYm9scyA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyB8fCBcIlwiO1xuICAgICAgdmFyIGFscGhhID0gWydBJywnQicsJ0MnLCdEJywnRScsJ0YnLCdHJywnSCcsJ0knLCdKJywnSycsJ0wnLCdNJywnTicsJ08nLCdQJywnUScsJ1InLCdTJywnVCcsJ1UnLCdWJywnVycsJ1gnLCdZJywnWiddXG4gICAgICB2YXIgc3RyID0gJyc7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHN0cmluZy5jaGFyQXQoaSkgPT0gXCIjXCIpIHtcbiAgICAgICAgICAgICAgc3RyICs9IGZha2VyLnJhbmRvbS5udW1iZXIoOSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcuY2hhckF0KGkpID09IFwiP1wiKSB7XG4gICAgICAgICAgICAgIHN0ciArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGFscGhhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHIgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiB0YWtlcyBhbiBhcnJheSBhbmQgcmV0dXJucyBpdCByYW5kb21pemVkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5zaHVmZmxlXG4gICAqIEBwYXJhbSB7YXJyYXl9IG9cbiAgICovXG4gIHNlbGYuc2h1ZmZsZSA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICBpZiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnIHx8IG8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG8gPSBvIHx8IFtcImFcIiwgXCJiXCIsIFwiY1wiXTtcbiAgICAgIGZvciAodmFyIGosIHgsIGkgPSBvLmxlbmd0aC0xOyBpOyBqID0gZmFrZXIucmFuZG9tLm51bWJlcihpKSwgeCA9IG9bLS1pXSwgb1tpXSA9IG9bal0sIG9bal0gPSB4KTtcbiAgICAgIHJldHVybiBvO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtdXN0YWNoZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMubXVzdGFjaGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YVxuICAgKi9cbiAgc2VsZi5tdXN0YWNoZSA9IGZ1bmN0aW9uIChzdHIsIGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIHN0ciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgZm9yKHZhciBwIGluIGRhdGEpIHtcbiAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJ3t7JyArIHAgKyAnfX0nLCAnZycpXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZShyZSwgZGF0YVtwXSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNyZWF0ZUNhcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLmNyZWF0ZUNhcmRcbiAgICovXG4gIHNlbGYuY3JlYXRlQ2FyZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICAgXCJuYW1lXCI6IGZha2VyLm5hbWUuZmluZE5hbWUoKSxcbiAgICAgICAgICBcInVzZXJuYW1lXCI6IGZha2VyLmludGVybmV0LnVzZXJOYW1lKCksXG4gICAgICAgICAgXCJlbWFpbFwiOiBmYWtlci5pbnRlcm5ldC5lbWFpbCgpLFxuICAgICAgICAgIFwiYWRkcmVzc1wiOiB7XG4gICAgICAgICAgICAgIFwic3RyZWV0QVwiOiBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKSxcbiAgICAgICAgICAgICAgXCJzdHJlZXRCXCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0QWRkcmVzcygpLFxuICAgICAgICAgICAgICBcInN0cmVldENcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXRBZGRyZXNzKHRydWUpLFxuICAgICAgICAgICAgICBcInN0cmVldERcIjogZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCksXG4gICAgICAgICAgICAgIFwiY2l0eVwiOiBmYWtlci5hZGRyZXNzLmNpdHkoKSxcbiAgICAgICAgICAgICAgXCJzdGF0ZVwiOiBmYWtlci5hZGRyZXNzLnN0YXRlKCksXG4gICAgICAgICAgICAgIFwiY291bnRyeVwiOiBmYWtlci5hZGRyZXNzLmNvdW50cnkoKSxcbiAgICAgICAgICAgICAgXCJ6aXBjb2RlXCI6IGZha2VyLmFkZHJlc3MuemlwQ29kZSgpLFxuICAgICAgICAgICAgICBcImdlb1wiOiB7XG4gICAgICAgICAgICAgICAgICBcImxhdFwiOiBmYWtlci5hZGRyZXNzLmxhdGl0dWRlKCksXG4gICAgICAgICAgICAgICAgICBcImxuZ1wiOiBmYWtlci5hZGRyZXNzLmxvbmdpdHVkZSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGhvbmVcIjogZmFrZXIucGhvbmUucGhvbmVOdW1iZXIoKSxcbiAgICAgICAgICBcIndlYnNpdGVcIjogZmFrZXIuaW50ZXJuZXQuZG9tYWluTmFtZSgpLFxuICAgICAgICAgIFwiY29tcGFueVwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lKCksXG4gICAgICAgICAgICAgIFwiY2F0Y2hQaHJhc2VcIjogZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZSgpLFxuICAgICAgICAgICAgICBcImJzXCI6IGZha2VyLmNvbXBhbnkuYnMoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwb3N0c1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFwid29yZHNcIjogZmFrZXIubG9yZW0ud29yZHMoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VcIjogZmFrZXIubG9yZW0uc2VudGVuY2UoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VzXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlcygpLFxuICAgICAgICAgICAgICAgICAgXCJwYXJhZ3JhcGhcIjogZmFrZXIubG9yZW0ucGFyYWdyYXBoKClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgXCJ3b3Jkc1wiOiBmYWtlci5sb3JlbS53b3JkcygpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZVwiOiBmYWtlci5sb3JlbS5zZW50ZW5jZSgpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZXNcIjogZmFrZXIubG9yZW0uc2VudGVuY2VzKCksXG4gICAgICAgICAgICAgICAgICBcInBhcmFncmFwaFwiOiBmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBcIndvcmRzXCI6IGZha2VyLmxvcmVtLndvcmRzKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlc1wiOiBmYWtlci5sb3JlbS5zZW50ZW5jZXMoKSxcbiAgICAgICAgICAgICAgICAgIFwicGFyYWdyYXBoXCI6IGZha2VyLmxvcmVtLnBhcmFncmFwaCgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiYWNjb3VudEhpc3RvcnlcIjogW2Zha2VyLmhlbHBlcnMuY3JlYXRlVHJhbnNhY3Rpb24oKSwgZmFrZXIuaGVscGVycy5jcmVhdGVUcmFuc2FjdGlvbigpLCBmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uKCldXG4gICAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb250ZXh0dWFsQ2FyZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuY29udGV4dHVhbENhcmRcbiAgICovXG4gIHNlbGYuY29udGV4dHVhbENhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5hbWUgPSBmYWtlci5uYW1lLmZpcnN0TmFtZSgpLFxuICAgICAgICB1c2VyTmFtZSA9IGZha2VyLmludGVybmV0LnVzZXJOYW1lKG5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIFwibmFtZVwiOiBuYW1lLFxuICAgICAgICBcInVzZXJuYW1lXCI6IHVzZXJOYW1lLFxuICAgICAgICBcImF2YXRhclwiOiBmYWtlci5pbnRlcm5ldC5hdmF0YXIoKSxcbiAgICAgICAgXCJlbWFpbFwiOiBmYWtlci5pbnRlcm5ldC5lbWFpbCh1c2VyTmFtZSksXG4gICAgICAgIFwiZG9iXCI6IGZha2VyLmRhdGUucGFzdCg1MCwgbmV3IERhdGUoXCJTYXQgU2VwIDIwIDE5OTIgMjE6MzU6MDIgR01UKzAyMDAgKENFU1QpXCIpKSxcbiAgICAgICAgXCJwaG9uZVwiOiBmYWtlci5waG9uZS5waG9uZU51bWJlcigpLFxuICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgXCJzdHJlZXRcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKHRydWUpLFxuICAgICAgICAgICAgXCJzdWl0ZVwiOiBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3MoKSxcbiAgICAgICAgICAgIFwiY2l0eVwiOiBmYWtlci5hZGRyZXNzLmNpdHkoKSxcbiAgICAgICAgICAgIFwiemlwY29kZVwiOiBmYWtlci5hZGRyZXNzLnppcENvZGUoKSxcbiAgICAgICAgICAgIFwiZ2VvXCI6IHtcbiAgICAgICAgICAgICAgICBcImxhdFwiOiBmYWtlci5hZGRyZXNzLmxhdGl0dWRlKCksXG4gICAgICAgICAgICAgICAgXCJsbmdcIjogZmFrZXIuYWRkcmVzcy5sb25naXR1ZGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIndlYnNpdGVcIjogZmFrZXIuaW50ZXJuZXQuZG9tYWluTmFtZSgpLFxuICAgICAgICBcImNvbXBhbnlcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWUoKSxcbiAgICAgICAgICAgIFwiY2F0Y2hQaHJhc2VcIjogZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZSgpLFxuICAgICAgICAgICAgXCJic1wiOiBmYWtlci5jb21wYW55LmJzKClcbiAgICAgICAgfVxuICAgIH07XG4gIH07XG5cblxuICAvKipcbiAgICogdXNlckNhcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnVzZXJDYXJkXG4gICAqL1xuICBzZWxmLnVzZXJDYXJkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBcIm5hbWVcIjogZmFrZXIubmFtZS5maW5kTmFtZSgpLFxuICAgICAgICAgIFwidXNlcm5hbWVcIjogZmFrZXIuaW50ZXJuZXQudXNlck5hbWUoKSxcbiAgICAgICAgICBcImVtYWlsXCI6IGZha2VyLmludGVybmV0LmVtYWlsKCksXG4gICAgICAgICAgXCJhZGRyZXNzXCI6IHtcbiAgICAgICAgICAgICAgXCJzdHJlZXRcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKHRydWUpLFxuICAgICAgICAgICAgICBcInN1aXRlXCI6IGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzcygpLFxuICAgICAgICAgICAgICBcImNpdHlcIjogZmFrZXIuYWRkcmVzcy5jaXR5KCksXG4gICAgICAgICAgICAgIFwiemlwY29kZVwiOiBmYWtlci5hZGRyZXNzLnppcENvZGUoKSxcbiAgICAgICAgICAgICAgXCJnZW9cIjoge1xuICAgICAgICAgICAgICAgICAgXCJsYXRcIjogZmFrZXIuYWRkcmVzcy5sYXRpdHVkZSgpLFxuICAgICAgICAgICAgICAgICAgXCJsbmdcIjogZmFrZXIuYWRkcmVzcy5sb25naXR1ZGUoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBob25lXCI6IGZha2VyLnBob25lLnBob25lTnVtYmVyKCksXG4gICAgICAgICAgXCJ3ZWJzaXRlXCI6IGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKSxcbiAgICAgICAgICBcImNvbXBhbnlcIjoge1xuICAgICAgICAgICAgICBcIm5hbWVcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgICAgICAgICBcImNhdGNoUGhyYXNlXCI6IGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2UoKSxcbiAgICAgICAgICAgICAgXCJic1wiOiBmYWtlci5jb21wYW55LmJzKClcbiAgICAgICAgICB9XG4gICAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBjcmVhdGVUcmFuc2FjdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuY3JlYXRlVHJhbnNhY3Rpb25cbiAgICovXG4gIHNlbGYuY3JlYXRlVHJhbnNhY3Rpb24gPSBmdW5jdGlvbigpe1xuICAgIHJldHVybiB7XG4gICAgICBcImFtb3VudFwiIDogZmFrZXIuZmluYW5jZS5hbW91bnQoKSxcbiAgICAgIFwiZGF0ZVwiIDogbmV3IERhdGUoMjAxMiwgMSwgMiksICAvL1RPRE86IGFkZCBhIHJhbmdlZCBkYXRlIG1ldGhvZFxuICAgICAgXCJidXNpbmVzc1wiOiBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lKCksXG4gICAgICBcIm5hbWVcIjogW2Zha2VyLmZpbmFuY2UuYWNjb3VudE5hbWUoKSwgZmFrZXIuZmluYW5jZS5tYXNrKCldLmpvaW4oJyAnKSxcbiAgICAgIFwidHlwZVwiIDogc2VsZi5yYW5kb21pemUoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS50cmFuc2FjdGlvbl90eXBlKSxcbiAgICAgIFwiYWNjb3VudFwiIDogZmFrZXIuZmluYW5jZS5hY2NvdW50KClcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBzZWxmO1xuXG59O1xuXG5cbi8qXG5TdHJpbmcucHJvdG90eXBlLmNhcGl0YWxpemUgPSBmdW5jdGlvbiAoKSB7IC8vdjEuMFxuICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL1xcdysvZywgZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBhLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xufTtcbiovXG5cbm1vZHVsZVsnZXhwb3J0cyddID0gSGVscGVycztcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIGFscGhhOiBbXG4gICAgJ0EnLCdCJywnQycsJ0QnLCdFJywnRicsJ0cnLCdIJywnSScsJ0onLCdLJywnTCcsJ00nLCdOJywnTycsJ1AnLCdRJywnUicsJ1MnLCdUJywnVScsJ1YnLCdXJywnWCcsJ1knLCdaJ1xuICBdLFxuICBwYXR0ZXJuMTA6IFtcbiAgICBcIjAxXCIsIFwiMDJcIiwgXCIwM1wiLCBcIjA0XCIsIFwiMDVcIiwgXCIwNlwiLCBcIjA3XCIsIFwiMDhcIiwgXCIwOVwiXG4gIF0sXG4gIHBhdHRlcm4xMDA6IFtcbiAgICBcIjAwMVwiLCBcIjAwMlwiLCBcIjAwM1wiLCBcIjAwNFwiLCBcIjAwNVwiLCBcIjAwNlwiLCBcIjAwN1wiLCBcIjAwOFwiLCBcIjAwOVwiXG4gIF0sXG4gIHRvRGlnaXRTdHJpbmc6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW0EtWl0vZ2ksIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKSAtIDU1O1xuICAgICAgfSk7XG4gIH0sXG4gIG1vZDk3OiBmdW5jdGlvbiAoZGlnaXRTdHIpIHtcbiAgICAgIHZhciBtID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRTdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBtID0gKChtICogMTApICsgKGRpZ2l0U3RyW2ldIHwwKSkgJSA5NztcbiAgICAgIH1cbiAgICAgIHJldHVybiBtO1xuICB9LFxuICBmb3JtYXRzOiBbXG4gICAge1xuICAgICAgY291bnRyeTogXCJBTFwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkFMa2sgYmJicyBzc3N4IGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJBRFwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkFEa2sgYmJiYiBzc3NzIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQVRcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTFcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBVGtrIGJiYmIgYmNjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJBWlwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkFaa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCSFwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJIa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJFXCIsXG4gICAgICB0b3RhbDogMTYsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDlcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCRWtrIGJiYmMgY2NjYyBjY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQkFcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCQWtrIGJiYnMgc3NjYyBjY2NjIGNjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCUlwiLFxuICAgICAgdG90YWw6IDI5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJSa2sgYmJiYiBiYmJiIHNzc3Mgc2NjYyBjY2NjIGNjY3QgblwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJHXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkdrayBiYmJiIHNzc3MgZGRjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ1JcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTRcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDUmtrIGJiYmMgY2NjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkhSXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogN1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSFJrayBiYmJiIGJiYmMgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJDWVwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkNZa2sgYmJicyBzc3NzIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJDWlwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDWmtrIGJiYmIgc3NzcyBzc2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkRLXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiREtrayBiYmJiIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkRPXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDIwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRE9rayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlRMXCIsXG4gICAgICB0b3RhbDogMjMsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiVExrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkVFXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRUVrayBiYnNzIGNjY2MgY2NjYyBjY2N4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRk9cIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJGT2trIGJiYmIgY2NjYyBjY2NjIGN4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRklcIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkZJa2sgYmJiYiBiYmNjIGNjY2MgY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJGUlwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRlJrayBiYmJiIGJnZ2cgZ2djYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR0VcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHRWtrIGJiY2MgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJERVwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkRFa2sgYmJiYiBiYmJiIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdJXCIsXG4gICAgICB0b3RhbDogMjMsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0lrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdSXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogN1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR1JrayBiYmJzIHNzc2MgY2NjYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR0xcIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHTGtrIGJiYmIgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR1RcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR1RrayBiYmJiIG1tdHQgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkhVXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSFVrayBiYmJzIHNzc2sgY2NjYyBjY2NjIGNjY2MgY2NjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIklTXCIsXG4gICAgICB0b3RhbDogMjYsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSVNrayBiYmJiIHNzY2MgY2NjYyBpaWlpIGlpaWkgaWlcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJRVwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklFa2sgYWFhYSBiYmJiIGJiY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIklMXCIsXG4gICAgICB0b3RhbDogMjMsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSUxrayBiYmJuIG5uY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIklUXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJJVGtrIHhhYWEgYWFiYiBiYmJjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJKT1wiLFxuICAgICAgdG90YWw6IDMwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJKT2trIGJiYmIgbm5ubiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiS1pcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJLWmtrIGJiYmMgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJYS1wiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlhLa2sgYmJiYiBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIktXXCIsXG4gICAgICB0b3RhbDogMzAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDIyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiS1drayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxWXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTFZrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMQlwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxCa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMSVwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxJa2sgYmJiYiBiY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTFRcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTFcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMVGtrIGJiYmIgYmNjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMVVwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxVa2sgYmJiYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1LXCIsXG4gICAgICB0b3RhbDogMTksXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1La2sgYmJiYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTVRcIixcbiAgICAgIHRvdGFsOiAzMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTVRrayBiYmJiIHNzc3Mgc2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNUlwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNUmtrIGJiYmIgYnNzcyBzc2NjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNVVwiLFxuICAgICAgdG90YWw6IDMwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTVVrayBiYmJiIGJic3MgY2NjYyBjY2NjIGNjY2MgMDAwZCBkZFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1DXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNQ2trIGJiYmIgYnNzcyBzc2NjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNRFwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Ea2sgYmJjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTUVcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNRWtrIGJiYmMgY2NjYyBjY2NjIGNjY2MgeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJOTFwiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk5Ma2sgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJOT1wiLFxuICAgICAgdG90YWw6IDE1LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA3XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTk9rayBiYmJiIGNjY2MgY2N4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUEtcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJQS2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlBTXCIsXG4gICAgICB0b3RhbDogMjksXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBTa2sgYmJiYiB4eHh4IHh4eHggeGNjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlBMXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUExrayBiYmJzIHNzc3ggY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlBUXCIsXG4gICAgICB0b3RhbDogMjUsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUFRrayBiYmJiIHNzc3MgY2NjYyBjY2NjIGNjY3ggeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlFBXCIsXG4gICAgICB0b3RhbDogMjksXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDIxXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUUFrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUk9cIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJST2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlNNXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTTWtrIHhhYWEgYWFiYiBiYmJjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTQVwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNBa2sgYmJjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUlNcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJSU2trIGJiYmMgY2NjYyBjY2NjIGNjY2MgeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTS1wiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTS2trIGJiYmIgc3NzcyBzc2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlNJXCIsXG4gICAgICB0b3RhbDogMTksXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU0lrayBiYnNzIHNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJFU1wiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJFU2trIGJiYmIgZ2dnZyB4eGNjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlNFXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE3XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU0VrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJDSFwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkNIa2sgYmJiYiBiY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiVE5cIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJUTmtrIGJic3Mgc2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlRSXCIsXG4gICAgICB0b3RhbDogMjYsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlRSa2sgYmJiYiBieGNjIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQUVcIixcbiAgICAgIHRvdGFsOiAyMyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBRWtrIGJiYmMgY2NjYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR0JcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHQmtrIGJiYmIgc3NzcyBzc2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJWR1wiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlZHa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9XG4gIF0sXG4gIGlzbzMxNjY6IFtcbiAgICBcIkFDXCIsIFwiQURcIiwgXCJBRVwiLCBcIkFGXCIsIFwiQUdcIiwgXCJBSVwiLCBcIkFMXCIsIFwiQU1cIiwgXCJBTlwiLCBcIkFPXCIsIFwiQVFcIiwgXCJBUlwiLCBcIkFTXCIsXG4gICAgXCJBVFwiLCBcIkFVXCIsIFwiQVdcIiwgXCJBWFwiLCBcIkFaXCIsIFwiQkFcIiwgXCJCQlwiLCBcIkJEXCIsIFwiQkVcIiwgXCJCRlwiLCBcIkJHXCIsIFwiQkhcIiwgXCJCSVwiLFxuICAgIFwiQkpcIiwgXCJCTFwiLCBcIkJNXCIsIFwiQk5cIiwgXCJCT1wiLCBcIkJRXCIsIFwiQlJcIiwgXCJCU1wiLCBcIkJUXCIsIFwiQlVcIiwgXCJCVlwiLCBcIkJXXCIsIFwiQllcIixcbiAgICBcIkJaXCIsIFwiQ0FcIiwgXCJDQ1wiLCBcIkNEXCIsIFwiQ0VcIiwgXCJDRlwiLCBcIkNHXCIsIFwiQ0hcIiwgXCJDSVwiLCBcIkNLXCIsIFwiQ0xcIiwgXCJDTVwiLCBcIkNOXCIsXG4gICAgXCJDT1wiLCBcIkNQXCIsIFwiQ1JcIiwgXCJDU1wiLCBcIkNTXCIsIFwiQ1VcIiwgXCJDVlwiLCBcIkNXXCIsIFwiQ1hcIiwgXCJDWVwiLCBcIkNaXCIsIFwiRERcIiwgXCJERVwiLFxuICAgIFwiREdcIiwgXCJESlwiLCBcIkRLXCIsIFwiRE1cIiwgXCJET1wiLCBcIkRaXCIsIFwiRUFcIiwgXCJFQ1wiLCBcIkVFXCIsIFwiRUdcIiwgXCJFSFwiLCBcIkVSXCIsIFwiRVNcIixcbiAgICBcIkVUXCIsIFwiRVVcIiwgXCJGSVwiLCBcIkZKXCIsIFwiRktcIiwgXCJGTVwiLCBcIkZPXCIsIFwiRlJcIiwgXCJGWFwiLCBcIkdBXCIsIFwiR0JcIiwgXCJHRFwiLCBcIkdFXCIsXG4gICAgXCJHRlwiLCBcIkdHXCIsIFwiR0hcIiwgXCJHSVwiLCBcIkdMXCIsIFwiR01cIiwgXCJHTlwiLCBcIkdQXCIsIFwiR1FcIiwgXCJHUlwiLCBcIkdTXCIsIFwiR1RcIiwgXCJHVVwiLFxuICAgIFwiR1dcIiwgXCJHWVwiLCBcIkhLXCIsIFwiSE1cIiwgXCJITlwiLCBcIkhSXCIsIFwiSFRcIiwgXCJIVVwiLCBcIklDXCIsIFwiSURcIiwgXCJJRVwiLCBcIklMXCIsIFwiSU1cIixcbiAgICBcIklOXCIsIFwiSU9cIiwgXCJJUVwiLCBcIklSXCIsIFwiSVNcIiwgXCJJVFwiLCBcIkpFXCIsIFwiSk1cIiwgXCJKT1wiLCBcIkpQXCIsIFwiS0VcIiwgXCJLR1wiLCBcIktIXCIsXG4gICAgXCJLSVwiLCBcIktNXCIsIFwiS05cIiwgXCJLUFwiLCBcIktSXCIsIFwiS1dcIiwgXCJLWVwiLCBcIktaXCIsIFwiTEFcIiwgXCJMQlwiLCBcIkxDXCIsIFwiTElcIiwgXCJMS1wiLFxuICAgIFwiTFJcIiwgXCJMU1wiLCBcIkxUXCIsIFwiTFVcIiwgXCJMVlwiLCBcIkxZXCIsIFwiTUFcIiwgXCJNQ1wiLCBcIk1EXCIsIFwiTUVcIiwgXCJNRlwiLCBcIk1HXCIsIFwiTUhcIixcbiAgICBcIk1LXCIsIFwiTUxcIiwgXCJNTVwiLCBcIk1OXCIsIFwiTU9cIiwgXCJNUFwiLCBcIk1RXCIsIFwiTVJcIiwgXCJNU1wiLCBcIk1UXCIsIFwiTVVcIiwgXCJNVlwiLCBcIk1XXCIsXG4gICAgXCJNWFwiLCBcIk1ZXCIsIFwiTVpcIiwgXCJOQVwiLCBcIk5DXCIsIFwiTkVcIiwgXCJORlwiLCBcIk5HXCIsIFwiTklcIiwgXCJOTFwiLCBcIk5PXCIsIFwiTlBcIiwgXCJOUlwiLFxuICAgIFwiTlRcIiwgXCJOVVwiLCBcIk5aXCIsIFwiT01cIiwgXCJQQVwiLCBcIlBFXCIsIFwiUEZcIiwgXCJQR1wiLCBcIlBIXCIsIFwiUEtcIiwgXCJQTFwiLCBcIlBNXCIsIFwiUE5cIixcbiAgICBcIlBSXCIsIFwiUFNcIiwgXCJQVFwiLCBcIlBXXCIsIFwiUFlcIiwgXCJRQVwiLCBcIlJFXCIsIFwiUk9cIiwgXCJSU1wiLCBcIlJVXCIsIFwiUldcIiwgXCJTQVwiLCBcIlNCXCIsXG4gICAgXCJTQ1wiLCBcIlNEXCIsIFwiU0VcIiwgXCJTR1wiLCBcIlNIXCIsIFwiU0lcIiwgXCJTSlwiLCBcIlNLXCIsIFwiU0xcIiwgXCJTTVwiLCBcIlNOXCIsIFwiU09cIiwgXCJTUlwiLFxuICAgIFwiU1NcIiwgXCJTVFwiLCBcIlNVXCIsIFwiU1ZcIiwgXCJTWFwiLCBcIlNZXCIsIFwiU1pcIiwgXCJUQVwiLCBcIlRDXCIsIFwiVERcIiwgXCJURlwiLCBcIlRHXCIsIFwiVEhcIixcbiAgICBcIlRKXCIsIFwiVEtcIiwgXCJUTFwiLCBcIlRNXCIsIFwiVE5cIiwgXCJUT1wiLCBcIlRSXCIsIFwiVFRcIiwgXCJUVlwiLCBcIlRXXCIsIFwiVFpcIiwgXCJVQVwiLCBcIlVHXCIsXG4gICAgXCJVTVwiLCBcIlVTXCIsIFwiVVlcIiwgXCJVWlwiLCBcIlZBXCIsIFwiVkNcIiwgXCJWRVwiLCBcIlZHXCIsIFwiVklcIiwgXCJWTlwiLCBcIlZVXCIsIFwiV0ZcIiwgXCJXU1wiLFxuICAgIFwiWUVcIiwgXCJZVFwiLCBcIllVXCIsIFwiWkFcIiwgXCJaTVwiLCBcIlpSXCIsIFwiWldcIlxuICBdXG59IiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5pbWFnZVxuICovXG52YXIgSW1hZ2UgPSBmdW5jdGlvbiAoZmFrZXIpIHtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuaW1hZ2VcbiAgICovXG4gIHNlbGYuaW1hZ2UgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgdmFyIGNhdGVnb3JpZXMgPSBbXCJhYnN0cmFjdFwiLCBcImFuaW1hbHNcIiwgXCJidXNpbmVzc1wiLCBcImNhdHNcIiwgXCJjaXR5XCIsIFwiZm9vZFwiLCBcIm5pZ2h0bGlmZVwiLCBcImZhc2hpb25cIiwgXCJwZW9wbGVcIiwgXCJuYXR1cmVcIiwgXCJzcG9ydHNcIiwgXCJ0ZWNobmljc1wiLCBcInRyYW5zcG9ydFwiXTtcbiAgICByZXR1cm4gc2VsZltmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGNhdGVnb3JpZXMpXSh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogYXZhdGFyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuYXZhdGFyXG4gICAqL1xuICBzZWxmLmF2YXRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIuaW50ZXJuZXQuYXZhdGFyKCk7XG4gIH07XG4gIC8qKlxuICAgKiBpbWFnZVVybFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2F0ZWdvcnlcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5pbWFnZVVybFxuICAgKi9cbiAgc2VsZi5pbWFnZVVybCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCBjYXRlZ29yeSwgcmFuZG9taXplLCBodHRwcykge1xuICAgICAgdmFyIHdpZHRoID0gd2lkdGggfHwgNjQwO1xuICAgICAgdmFyIGhlaWdodCA9IGhlaWdodCB8fCA0ODA7XG4gICAgICB2YXIgcHJvdG9jb2wgPSAnaHR0cDovLyc7XG4gICAgICBpZiAodHlwZW9mIGh0dHBzICE9PSAndW5kZWZpbmVkJyAmJiBodHRwcyA9PT0gdHJ1ZSkge1xuICAgICAgICBwcm90b2NvbCA9ICdodHRwczovLyc7XG4gICAgICB9XG4gICAgICB2YXIgdXJsID0gcHJvdG9jb2wgKyAnbG9yZW1waXhlbC5jb20vJyArIHdpZHRoICsgJy8nICsgaGVpZ2h0O1xuICAgICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdXJsICs9ICcvJyArIGNhdGVnb3J5O1xuICAgICAgfVxuXG4gICAgICBpZiAocmFuZG9taXplKSB7XG4gICAgICAgIHVybCArPSAnPycgKyBmYWtlci5yYW5kb20ubnVtYmVyKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVybDtcbiAgfTtcbiAgLyoqXG4gICAqIGFic3RyYWN0XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuYWJzdHJhY3RcbiAgICovXG4gIHNlbGYuYWJzdHJhY3QgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdhYnN0cmFjdCcsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBhbmltYWxzXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuYW5pbWFsc1xuICAgKi9cbiAgc2VsZi5hbmltYWxzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnYW5pbWFscycsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBidXNpbmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmJ1c2luZXNzXG4gICAqL1xuICBzZWxmLmJ1c2luZXNzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnYnVzaW5lc3MnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogY2F0c1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmNhdHNcbiAgICovXG4gIHNlbGYuY2F0cyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2NhdHMnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogY2l0eVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmNpdHlcbiAgICovXG4gIHNlbGYuY2l0eSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2NpdHknLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogZm9vZFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmZvb2RcbiAgICovXG4gIHNlbGYuZm9vZCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2Zvb2QnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogbmlnaHRsaWZlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UubmlnaHRsaWZlXG4gICAqL1xuICBzZWxmLm5pZ2h0bGlmZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ25pZ2h0bGlmZScsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBmYXNoaW9uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuZmFzaGlvblxuICAgKi9cbiAgc2VsZi5mYXNoaW9uID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnZmFzaGlvbicsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBwZW9wbGVcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5wZW9wbGVcbiAgICovXG4gIHNlbGYucGVvcGxlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAncGVvcGxlJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIG5hdHVyZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLm5hdHVyZVxuICAgKi9cbiAgc2VsZi5uYXR1cmUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICduYXR1cmUnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogc3BvcnRzXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2Uuc3BvcnRzXG4gICAqL1xuICBzZWxmLnNwb3J0cyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3Nwb3J0cycsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiB0ZWNobmljc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnRlY2huaWNzXG4gICAqL1xuICBzZWxmLnRlY2huaWNzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAndGVjaG5pY3MnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogdHJhbnNwb3J0XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UudHJhbnNwb3J0XG4gICAqL1xuICBzZWxmLnRyYW5zcG9ydCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3RyYW5zcG9ydCcsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBkYXRhVXJpXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuZGF0YXVybFxuICAgKi9cbiAgc2VsZi5kYXRhVXJpID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB2YXIgcmF3UHJlZml4ID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCc7XG4gICAgdmFyIHN2Z1N0cmluZyA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2ZXJzaW9uPVwiMS4xXCIgYmFzZVByb2ZpbGU9XCJmdWxsXCIgd2lkdGg9XCInICsgd2lkdGggKyAnXCIgaGVpZ2h0PVwiJyArIGhlaWdodCArICdcIj4gPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCJncmV5XCIvPiAgPHRleHQgeD1cIjBcIiB5PVwiMjBcIiBmb250LXNpemU9XCIyMFwiIHRleHQtYW5jaG9yPVwic3RhcnRcIiBmaWxsPVwid2hpdGVcIj4nICsgd2lkdGggKyAneCcgKyBoZWlnaHQgKyAnPC90ZXh0PiA8L3N2Zz4nO1xuICAgIHJldHVybiByYXdQcmVmaXggKyBlbmNvZGVVUklDb21wb25lbnQoc3ZnU3RyaW5nKTtcbiAgfTtcbn1cblxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IEltYWdlOyIsIi8qXG5cbiAgIHRoaXMgaW5kZXguanMgZmlsZSBpcyB1c2VkIGZvciBpbmNsdWRpbmcgdGhlIGZha2VyIGxpYnJhcnkgYXMgYSBDb21tb25KUyBtb2R1bGUsIGluc3RlYWQgb2YgYSBidW5kbGVcblxuICAgeW91IGNhbiBpbmNsdWRlIHRoZSBmYWtlciBsaWJyYXJ5IGludG8geW91ciBleGlzdGluZyBub2RlLmpzIGFwcGxpY2F0aW9uIGJ5IHJlcXVpcmluZyB0aGUgZW50aXJlIC9mYWtlciBkaXJlY3RvcnlcblxuICAgIHZhciBmYWtlciA9IHJlcXVpcmUoLi9mYWtlcik7XG4gICAgdmFyIHJhbmRvbU5hbWUgPSBmYWtlci5uYW1lLmZpbmROYW1lKCk7XG5cbiAgIHlvdSBjYW4gYWxzbyBzaW1wbHkgaW5jbHVkZSB0aGUgXCJmYWtlci5qc1wiIGZpbGUgd2hpY2ggaXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGJ1bmRsZWQgdmVyc2lvbiBvZiB0aGUgZmFrZXIgbGlicmFyeVxuXG4gICAgdmFyIGZha2VyID0gcmVxdWlyZSguL2N1c3RvbUFwcFBhdGgvZmFrZXIpO1xuICAgIHZhciByYW5kb21OYW1lID0gZmFrZXIubmFtZS5maW5kTmFtZSgpO1xuXG5cbiAgaWYgeW91IHBsYW4gb24gbW9kaWZ5aW5nIHRoZSBmYWtlciBsaWJyYXJ5IHlvdSBzaG91bGQgYmUgcGVyZm9ybWluZyB5b3VyIGNoYW5nZXMgaW4gdGhlIC9saWIvIGRpcmVjdG9yeVxuXG4qL1xuXG4vKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyXG4gKi9cbmZ1bmN0aW9uIEZha2VyIChvcHRzKSB7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuXG4gIC8vIGFzc2lnbiBvcHRpb25zXG4gIHZhciBsb2NhbGVzID0gc2VsZi5sb2NhbGVzIHx8IG9wdHMubG9jYWxlcyB8fCB7fTtcbiAgdmFyIGxvY2FsZSA9IHNlbGYubG9jYWxlIHx8IG9wdHMubG9jYWxlIHx8IFwiZW5cIjtcbiAgdmFyIGxvY2FsZUZhbGxiYWNrID0gc2VsZi5sb2NhbGVGYWxsYmFjayB8fCBvcHRzLmxvY2FsZUZhbGxiYWNrIHx8IFwiZW5cIjtcblxuICBzZWxmLmxvY2FsZXMgPSBsb2NhbGVzO1xuICBzZWxmLmxvY2FsZSA9IGxvY2FsZTtcbiAgc2VsZi5sb2NhbGVGYWxsYmFjayA9IGxvY2FsZUZhbGxiYWNrO1xuXG4gIHNlbGYuZGVmaW5pdGlvbnMgPSB7fTtcblxuICBmdW5jdGlvbiBiaW5kQWxsKG9iaikge1xuICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGgpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIG9ialttZXRoXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICBvYmpbbWV0aF0gPSBvYmpbbWV0aF0uYmluZChvYmopO1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHZhciBGYWtlID0gcmVxdWlyZSgnLi9mYWtlJyk7XG4gIHNlbGYuZmFrZSA9IG5ldyBGYWtlKHNlbGYpLmZha2U7XG5cbiAgdmFyIFJhbmRvbSA9IHJlcXVpcmUoJy4vcmFuZG9tJyk7XG4gIHNlbGYucmFuZG9tID0gYmluZEFsbChuZXcgUmFuZG9tKHNlbGYpKTtcblxuICB2YXIgSGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuICBzZWxmLmhlbHBlcnMgPSBuZXcgSGVscGVycyhzZWxmKTtcblxuICB2YXIgTmFtZSA9IHJlcXVpcmUoJy4vbmFtZScpO1xuICBzZWxmLm5hbWUgPSBiaW5kQWxsKG5ldyBOYW1lKHNlbGYpKTtcblxuICB2YXIgQWRkcmVzcyA9IHJlcXVpcmUoJy4vYWRkcmVzcycpO1xuICBzZWxmLmFkZHJlc3MgPSBiaW5kQWxsKG5ldyBBZGRyZXNzKHNlbGYpKTtcblxuICB2YXIgQ29tcGFueSA9IHJlcXVpcmUoJy4vY29tcGFueScpO1xuICBzZWxmLmNvbXBhbnkgPSBiaW5kQWxsKG5ldyBDb21wYW55KHNlbGYpKTtcblxuICB2YXIgRmluYW5jZSA9IHJlcXVpcmUoJy4vZmluYW5jZScpO1xuICBzZWxmLmZpbmFuY2UgPSBiaW5kQWxsKG5ldyBGaW5hbmNlKHNlbGYpKTtcblxuICB2YXIgSW1hZ2UgPSByZXF1aXJlKCcuL2ltYWdlJyk7XG4gIHNlbGYuaW1hZ2UgPSBiaW5kQWxsKG5ldyBJbWFnZShzZWxmKSk7XG5cbiAgdmFyIExvcmVtID0gcmVxdWlyZSgnLi9sb3JlbScpO1xuICBzZWxmLmxvcmVtID0gYmluZEFsbChuZXcgTG9yZW0oc2VsZikpO1xuXG4gIHZhciBIYWNrZXIgPSByZXF1aXJlKCcuL2hhY2tlcicpO1xuICBzZWxmLmhhY2tlciA9IGJpbmRBbGwobmV3IEhhY2tlcihzZWxmKSk7XG5cbiAgdmFyIEludGVybmV0ID0gcmVxdWlyZSgnLi9pbnRlcm5ldCcpO1xuICBzZWxmLmludGVybmV0ID0gYmluZEFsbChuZXcgSW50ZXJuZXQoc2VsZikpO1xuXG4gIHZhciBEYXRhYmFzZSA9IHJlcXVpcmUoJy4vZGF0YWJhc2UnKTtcbiAgc2VsZi5kYXRhYmFzZSA9IGJpbmRBbGwobmV3IERhdGFiYXNlKHNlbGYpKTtcblxuICB2YXIgUGhvbmUgPSByZXF1aXJlKCcuL3Bob25lX251bWJlcicpO1xuICBzZWxmLnBob25lID0gYmluZEFsbChuZXcgUGhvbmUoc2VsZikpO1xuXG4gIHZhciBfRGF0ZSA9IHJlcXVpcmUoJy4vZGF0ZScpO1xuICBzZWxmLmRhdGUgPSBiaW5kQWxsKG5ldyBfRGF0ZShzZWxmKSk7XG5cbiAgdmFyIENvbW1lcmNlID0gcmVxdWlyZSgnLi9jb21tZXJjZScpO1xuICBzZWxmLmNvbW1lcmNlID0gYmluZEFsbChuZXcgQ29tbWVyY2Uoc2VsZikpO1xuXG4gIHZhciBTeXN0ZW0gPSByZXF1aXJlKCcuL3N5c3RlbScpO1xuICBzZWxmLnN5c3RlbSA9IGJpbmRBbGwobmV3IFN5c3RlbShzZWxmKSk7XG5cbiAgdmFyIF9kZWZpbml0aW9ucyA9IHtcbiAgICBcIm5hbWVcIjogW1wiZmlyc3RfbmFtZVwiLCBcImxhc3RfbmFtZVwiLCBcInByZWZpeFwiLCBcInN1ZmZpeFwiLCBcInRpdGxlXCIsIFwibWFsZV9maXJzdF9uYW1lXCIsIFwiZmVtYWxlX2ZpcnN0X25hbWVcIiwgXCJtYWxlX21pZGRsZV9uYW1lXCIsIFwiZmVtYWxlX21pZGRsZV9uYW1lXCIsIFwibWFsZV9sYXN0X25hbWVcIiwgXCJmZW1hbGVfbGFzdF9uYW1lXCJdLFxuICAgIFwiYWRkcmVzc1wiOiBbXCJjaXR5X3ByZWZpeFwiLCBcImNpdHlfc3VmZml4XCIsIFwic3RyZWV0X3N1ZmZpeFwiLCBcImNvdW50eVwiLCBcImNvdW50cnlcIiwgXCJjb3VudHJ5X2NvZGVcIiwgXCJzdGF0ZVwiLCBcInN0YXRlX2FiYnJcIiwgXCJzdHJlZXRfcHJlZml4XCIsIFwicG9zdGNvZGVcIl0sXG4gICAgXCJjb21wYW55XCI6IFtcImFkamVjdGl2ZVwiLCBcIm5vdW5cIiwgXCJkZXNjcmlwdG9yXCIsIFwiYnNfYWRqZWN0aXZlXCIsIFwiYnNfbm91blwiLCBcImJzX3ZlcmJcIiwgXCJzdWZmaXhcIl0sXG4gICAgXCJsb3JlbVwiOiBbXCJ3b3Jkc1wiXSxcbiAgICBcImhhY2tlclwiOiBbXCJhYmJyZXZpYXRpb25cIiwgXCJhZGplY3RpdmVcIiwgXCJub3VuXCIsIFwidmVyYlwiLCBcImluZ3ZlcmJcIl0sXG4gICAgXCJwaG9uZV9udW1iZXJcIjogW1wiZm9ybWF0c1wiXSxcbiAgICBcImZpbmFuY2VcIjogW1wiYWNjb3VudF90eXBlXCIsIFwidHJhbnNhY3Rpb25fdHlwZVwiLCBcImN1cnJlbmN5XCIsIFwiaWJhblwiXSxcbiAgICBcImludGVybmV0XCI6IFtcImF2YXRhcl91cmlcIiwgXCJkb21haW5fc3VmZml4XCIsIFwiZnJlZV9lbWFpbFwiLCBcImV4YW1wbGVfZW1haWxcIiwgXCJwYXNzd29yZFwiXSxcbiAgICBcImNvbW1lcmNlXCI6IFtcImNvbG9yXCIsIFwiZGVwYXJ0bWVudFwiLCBcInByb2R1Y3RfbmFtZVwiLCBcInByaWNlXCIsIFwiY2F0ZWdvcmllc1wiXSxcbiAgICBcImRhdGFiYXNlXCI6IFtcImNvbGxhdGlvblwiLCBcImNvbHVtblwiLCBcImVuZ2luZVwiLCBcInR5cGVcIl0sXG4gICAgXCJzeXN0ZW1cIjogW1wibWltZVR5cGVzXCJdLFxuICAgIFwiZGF0ZVwiOiBbXCJtb250aFwiLCBcIndlZWtkYXlcIl0sXG4gICAgXCJ0aXRsZVwiOiBcIlwiLFxuICAgIFwic2VwYXJhdG9yXCI6IFwiXCJcbiAgfTtcblxuICAvLyBDcmVhdGUgYSBHZXR0ZXIgZm9yIGFsbCBkZWZpbml0aW9ucy5mb28uYmFyIHByb3BlcnRpZXNcbiAgT2JqZWN0LmtleXMoX2RlZmluaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe1xuICAgIGlmICh0eXBlb2Ygc2VsZi5kZWZpbml0aW9uc1tkXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgc2VsZi5kZWZpbml0aW9uc1tkXSA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgX2RlZmluaXRpb25zW2RdID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHNlbGYuZGVmaW5pdGlvbnNbZF0gPSBfZGVmaW5pdGlvbnNbZF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgX2RlZmluaXRpb25zW2RdLmZvckVhY2goZnVuY3Rpb24ocCl7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2VsZi5kZWZpbml0aW9uc1tkXSwgcCwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHNlbGYubG9jYWxlc1tzZWxmLmxvY2FsZV1bZF0gPT09IFwidW5kZWZpbmVkXCIgfHwgdHlwZW9mIHNlbGYubG9jYWxlc1tzZWxmLmxvY2FsZV1bZF1bcF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIC8vIGNlcnRhaW4gbG9jYWxpemF0aW9uIHNldHMgY29udGFpbiBsZXNzIGRhdGEgdGhlbiBvdGhlcnMuXG4gICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBhIG1pc3NpbmcgZGVmaW5pdGlvbiwgdXNlIHRoZSBkZWZhdWx0IGxvY2FsZUZhbGxiYWNrIHRvIHN1YnN0aXR1dGUgdGhlIG1pc3Npbmcgc2V0IGRhdGFcbiAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwcm9wZXJ0eSAnICsgZCArIHApXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NhbGVzW2xvY2FsZUZhbGxiYWNrXVtkXVtwXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGxvY2FsaXplZCBkYXRhXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NhbGVzW3NlbGYubG9jYWxlXVtkXVtwXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxufTtcblxuRmFrZXIucHJvdG90eXBlLnNlZWQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgUmFuZG9tID0gcmVxdWlyZSgnLi9yYW5kb20nKTtcbiAgdGhpcy5zZWVkVmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5yYW5kb20gPSBuZXcgUmFuZG9tKHRoaXMsIHRoaXMuc2VlZFZhbHVlKTtcbn1cbm1vZHVsZVsnZXhwb3J0cyddID0gRmFrZXI7XG4iLCJ2YXIgcmFuZG9tX3VhID0gcmVxdWlyZSgnLi4vdmVuZG9yL3VzZXItYWdlbnQnKTtcblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5pbnRlcm5ldFxuICovXG52YXIgSW50ZXJuZXQgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICAvKipcbiAgICogYXZhdGFyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuYXZhdGFyXG4gICAqL1xuICBzZWxmLmF2YXRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmF2YXRhcl91cmkpO1xuICB9O1xuXG4gIHNlbGYuYXZhdGFyLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgVVJMIGZvciBhbiBhdmF0YXIuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWdvcmdhcnliYWxkaS8xMjguanBnXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGVtYWlsXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZW1haWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3ZpZGVyXG4gICAqL1xuICBzZWxmLmVtYWlsID0gZnVuY3Rpb24gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIHByb3ZpZGVyKSB7XG4gICAgICBwcm92aWRlciA9IHByb3ZpZGVyIHx8IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaW50ZXJuZXQuZnJlZV9lbWFpbCk7XG4gICAgICByZXR1cm4gIGZha2VyLmhlbHBlcnMuc2x1Z2lmeShmYWtlci5pbnRlcm5ldC51c2VyTmFtZShmaXJzdE5hbWUsIGxhc3ROYW1lKSkgKyBcIkBcIiArIHByb3ZpZGVyO1xuICB9O1xuXG4gIHNlbGYuZW1haWwuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGJhc2VkIG9uIG9wdGlvbmFsIGlucHV0IGNyaXRlcmlhXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImZvby5iYXJAZ21haWwuY29tXCJdLFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICBcImZpcnN0TmFtZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGZpcnN0IG5hbWUgb2YgdGhlIHVzZXJcIlxuICAgICAgfSxcbiAgICAgIFwibGFzdE5hbWVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBsYXN0IG5hbWUgb2YgdGhlIHVzZXJcIlxuICAgICAgfSxcbiAgICAgIFwicHJvdmlkZXJcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBkb21haW4gb2YgdGhlIHVzZXJcIlxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIGV4YW1wbGVFbWFpbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmV4YW1wbGVFbWFpbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYXN0TmFtZVxuICAgKi9cbiAgc2VsZi5leGFtcGxlRW1haWwgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSkge1xuICAgICAgdmFyIHByb3ZpZGVyID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5pbnRlcm5ldC5leGFtcGxlX2VtYWlsKTtcbiAgICAgIHJldHVybiBzZWxmLmVtYWlsKGZpcnN0TmFtZSwgbGFzdE5hbWUsIHByb3ZpZGVyKTtcbiAgfTtcblxuICAvKipcbiAgICogdXNlck5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC51c2VyTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYXN0TmFtZVxuICAgKi9cbiAgc2VsZi51c2VyTmFtZSA9IGZ1bmN0aW9uIChmaXJzdE5hbWUsIGxhc3ROYW1lKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgZmlyc3ROYW1lID0gZmlyc3ROYW1lIHx8IGZha2VyLm5hbWUuZmlyc3ROYW1lKCk7XG4gICAgICBsYXN0TmFtZSA9IGxhc3ROYW1lIHx8IGZha2VyLm5hbWUubGFzdE5hbWUoKTtcbiAgICAgIHN3aXRjaCAoZmFrZXIucmFuZG9tLm51bWJlcigyKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJlc3VsdCA9IGZpcnN0TmFtZSArIGZha2VyLnJhbmRvbS5udW1iZXIoOTkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJlc3VsdCA9IGZpcnN0TmFtZSArIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoW1wiLlwiLCBcIl9cIl0pICsgbGFzdE5hbWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgICAgcmVzdWx0ID0gZmlyc3ROYW1lICsgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbXCIuXCIsIFwiX1wiXSkgKyBsYXN0TmFtZSArIGZha2VyLnJhbmRvbS5udW1iZXIoOTkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvU3RyaW5nKCkucmVwbGFjZSgvJy9nLCBcIlwiKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8gL2csIFwiXCIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBzZWxmLnVzZXJOYW1lLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgdXNlcm5hbWUgYmFzZWQgb24gb25lIG9mIHNldmVyYWwgcGF0dGVybnMuIFRoZSBwYXR0ZXJuIGlzIGNob3NlbiByYW5kb21seS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1xuICAgICAgXCJLaXJzdGluMzlcIixcbiAgICAgIFwiS2lyc3Rpbi5TbWl0aFwiLFxuICAgICAgXCJLaXJzdGluLlNtaXRoMzlcIixcbiAgICAgIFwiS2lyc3RpblNtaXRoXCIsXG4gICAgICBcIktpcnN0aW5TbWl0aDM5XCIsXG4gICAgXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJmaXJzdE5hbWVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBmaXJzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH0sXG4gICAgICBcImxhc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbGFzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb3RvY29sXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQucHJvdG9jb2xcbiAgICovXG4gIHNlbGYucHJvdG9jb2wgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvdG9jb2xzID0gWydodHRwJywnaHR0cHMnXTtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHByb3RvY29scyk7XG4gIH07XG5cbiAgc2VsZi5wcm90b2NvbC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIlJhbmRvbWx5IGdlbmVyYXRlcyBodHRwIG9yIGh0dHBzXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImh0dHBzXCIsIFwiaHR0cFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiB1cmxcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC51cmxcbiAgICovXG4gIHNlbGYudXJsID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLmludGVybmV0LnByb3RvY29sKCkgKyAnOi8vJyArIGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKTtcbiAgfTtcblxuICBzZWxmLnVybC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBVUkwuIFRoZSBVUkwgY291bGQgYmUgc2VjdXJlIG9yIGluc2VjdXJlLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXG4gICAgICBcImh0dHA6Ly9yYXNoYXduLm5hbWVcIixcbiAgICAgIFwiaHR0cHM6Ly9yYXNoYXduLm5hbWVcIlxuICAgIF1cbiAgfTtcblxuICAvKipcbiAgICogZG9tYWluTmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmRvbWFpbk5hbWVcbiAgICovXG4gIHNlbGYuZG9tYWluTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5pbnRlcm5ldC5kb21haW5Xb3JkKCkgKyBcIi5cIiArIGZha2VyLmludGVybmV0LmRvbWFpblN1ZmZpeCgpO1xuICB9O1xuXG4gIHNlbGYuZG9tYWluTmFtZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBkb21haW4gbmFtZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wibWFydmluLm9yZ1wiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBkb21haW5TdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5kb21haW5TdWZmaXhcbiAgICovXG4gIHNlbGYuZG9tYWluU3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaW50ZXJuZXQuZG9tYWluX3N1ZmZpeCk7XG4gIH07XG5cbiAgc2VsZi5kb21haW5TdWZmaXguc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gZG9tYWluIHN1ZmZpeC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wibmV0XCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGRvbWFpbldvcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5kb21haW5Xb3JkXG4gICAqL1xuICBzZWxmLmRvbWFpbldvcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIubmFtZS5maXJzdE5hbWUoKS5yZXBsYWNlKC8oW1xcXFx+IyYqe30vOjw+P3xcXFwiJ10pL2lnLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfTtcblxuICBzZWxmLmRvbWFpbldvcmQuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gZG9tYWluIHdvcmQuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImFseWNlXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGlwXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuaXBcbiAgICovXG4gIHNlbGYuaXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmFuZE51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKGZha2VyLnJhbmRvbS5udW1iZXIoMjU1KSkudG9GaXhlZCgwKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgcmVzdWx0W2ldID0gcmFuZE51bSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0LmpvaW4oXCIuXCIpO1xuICB9O1xuXG4gIHNlbGYuaXAuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gSVAuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIjk3LjIzOC4yNDEuMTFcIl1cbiAgfTtcblxuICAvKipcbiAgICogaXB2NlxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmlwdjZcbiAgICovXG4gIHNlbGYuaXB2NiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciByYW5kSGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IChmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCJhXCIsIFwiYlwiLCBcImNcIiwgXCJkXCIsIFwiZVwiLCBcImZcIl0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfTtcblxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgcmVzdWx0W2ldID0gcmFuZEhhc2goKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQuam9pbihcIjpcIik7XG4gIH07XG5cbiAgc2VsZi5pcHY2LnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIElQdjYgYWRkcmVzcy5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiMjAwMTowZGI4OjYyNzY6YjFhNzo1MjEzOjIyZjE6MjVkZjpjOGEwXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZXJBZ2VudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnVzZXJBZ2VudFxuICAgKi9cbiAgc2VsZi51c2VyQWdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJhbmRvbV91YS5nZW5lcmF0ZSgpO1xuICB9O1xuXG4gIHNlbGYudXNlckFnZW50LnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIHVzZXIgYWdlbnQuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IFBQQyBNYWMgT1MgWCAxMF83XzUgcnY6Ni4wOyBTTCkgQXBwbGVXZWJLaXQvNTMyLjAuMSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNy4xLjYgU2FmYXJpLzUzMi4wLjFcIl1cbiAgfTtcblxuICAvKipcbiAgICogY29sb3JcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5jb2xvclxuICAgKiBAcGFyYW0ge251bWJlcn0gYmFzZVJlZDI1NVxuICAgKiBAcGFyYW0ge251bWJlcn0gYmFzZUdyZWVuMjU1XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlQmx1ZTI1NVxuICAgKi9cbiAgc2VsZi5jb2xvciA9IGZ1bmN0aW9uIChiYXNlUmVkMjU1LCBiYXNlR3JlZW4yNTUsIGJhc2VCbHVlMjU1KSB7XG4gICAgICBiYXNlUmVkMjU1ID0gYmFzZVJlZDI1NSB8fCAwO1xuICAgICAgYmFzZUdyZWVuMjU1ID0gYmFzZUdyZWVuMjU1IHx8IDA7XG4gICAgICBiYXNlQmx1ZTI1NSA9IGJhc2VCbHVlMjU1IHx8IDA7XG4gICAgICAvLyBiYXNlZCBvbiBhd2Vzb21lIHJlc3BvbnNlIDogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MzA0NC9hbGdvcml0aG0tdG8tcmFuZG9tbHktZ2VuZXJhdGUtYW4tYWVzdGhldGljYWxseS1wbGVhc2luZy1jb2xvci1wYWxldHRlXG4gICAgICB2YXIgcmVkID0gTWF0aC5mbG9vcigoZmFrZXIucmFuZG9tLm51bWJlcigyNTYpICsgYmFzZVJlZDI1NSkgLyAyKTtcbiAgICAgIHZhciBncmVlbiA9IE1hdGguZmxvb3IoKGZha2VyLnJhbmRvbS5udW1iZXIoMjU2KSArIGJhc2VHcmVlbjI1NSkgLyAyKTtcbiAgICAgIHZhciBibHVlID0gTWF0aC5mbG9vcigoZmFrZXIucmFuZG9tLm51bWJlcigyNTYpICsgYmFzZUJsdWUyNTUpIC8gMik7XG4gICAgICB2YXIgcmVkU3RyID0gcmVkLnRvU3RyaW5nKDE2KTtcbiAgICAgIHZhciBncmVlblN0ciA9IGdyZWVuLnRvU3RyaW5nKDE2KTtcbiAgICAgIHZhciBibHVlU3RyID0gYmx1ZS50b1N0cmluZygxNik7XG4gICAgICByZXR1cm4gJyMnICtcbiAgICAgICAgKHJlZFN0ci5sZW5ndGggPT09IDEgPyAnMCcgOiAnJykgKyByZWRTdHIgK1xuICAgICAgICAoZ3JlZW5TdHIubGVuZ3RoID09PSAxID8gJzAnIDogJycpICsgZ3JlZW5TdHIgK1xuICAgICAgICAoYmx1ZVN0ci5sZW5ndGggPT09IDEgPyAnMCc6ICcnKSArIGJsdWVTdHI7XG5cbiAgfTtcblxuICBzZWxmLmNvbG9yLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGhleGFkZWNpbWFsIGNvbG9yLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCIjMDYyNjdmXCJdLFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICBcImJhc2VSZWQyNTVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSByZWQgdmFsdWUuIFZhbGlkIHZhbHVlcyBhcmUgMCAtIDI1NS5cIlxuICAgICAgfSxcbiAgICAgIFwiYmFzZUdyZWVuMjU1XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZ3JlZW4gdmFsdWUuIFZhbGlkIHZhbHVlcyBhcmUgMCAtIDI1NS5cIlxuICAgICAgfSxcbiAgICAgIFwiYmFzZUJsdWUyNTVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBibHVlIHZhbHVlLiBWYWxpZCB2YWx1ZXMgYXJlIDAgLSAyNTUuXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIG1hY1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0Lm1hY1xuICAgKi9cbiAgc2VsZi5tYWMgPSBmdW5jdGlvbigpe1xuICAgICAgdmFyIGksIG1hYyA9IFwiXCI7XG4gICAgICBmb3IgKGk9MDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICBtYWMrPSBmYWtlci5yYW5kb20ubnVtYmVyKDE1KS50b1N0cmluZygxNik7XG4gICAgICAgICAgaWYgKGklMj09MSAmJiBpICE9IDExKSB7XG4gICAgICAgICAgICAgIG1hYys9XCI6XCI7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hYztcbiAgfTtcblxuICBzZWxmLm1hYy5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBtYWMgYWRkcmVzcy5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiNzg6MDY6Y2M6YWU6YjM6ODFcIl1cbiAgfTtcblxuICAvKipcbiAgICogcGFzc3dvcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5wYXNzd29yZFxuICAgKiBAcGFyYW0ge251bWJlcn0gbGVuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWVtb3JhYmxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcbiAgICovXG4gICBzZWxmLnBhc3N3b3JkID0gZnVuY3Rpb24gKGxlbiwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpIHtcbiAgICAgbGVuID0gbGVuIHx8IDE1O1xuICAgICBpZiAodHlwZW9mIG1lbW9yYWJsZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgIG1lbW9yYWJsZSA9IGZhbHNlO1xuICAgICB9XG4gICAgIC8qXG4gICAgICAqIHBhc3N3b3JkLWdlbmVyYXRvciAoIGZ1bmN0aW9uIClcbiAgICAgICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxMyBCZXJtaSBGZXJyZXIgPGJlcm1pQGJlcm1pbGFicy5jb20+XG4gICAgICAqIE1JVCBMaWNlbnNlZFxuICAgICAgKi9cbiAgICAgdmFyIGNvbnNvbmFudCwgbGV0dGVyLCBwYXNzd29yZCwgdm93ZWw7XG4gICAgIGxldHRlciA9IC9bYS16QS1aXSQvO1xuICAgICB2b3dlbCA9IC9bYWVpb3VBRUlPVV0kLztcbiAgICAgY29uc29uYW50ID0gL1tiY2RmZ2hqa2xtbnBxcnN0dnd4eXpCQ0RGR0hKS0xNTlBRUlNUVldYWVpdJC87XG4gICAgIHZhciBfcGFzc3dvcmQgPSBmdW5jdGlvbiAobGVuZ3RoLCBtZW1vcmFibGUsIHBhdHRlcm4sIHByZWZpeCkge1xuICAgICAgIHZhciBjaGFyLCBuO1xuICAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkge1xuICAgICAgICAgbGVuZ3RoID0gMTA7XG4gICAgICAgfVxuICAgICAgIGlmIChtZW1vcmFibGUgPT0gbnVsbCkge1xuICAgICAgICAgbWVtb3JhYmxlID0gdHJ1ZTtcbiAgICAgICB9XG4gICAgICAgaWYgKHBhdHRlcm4gPT0gbnVsbCkge1xuICAgICAgICAgcGF0dGVybiA9IC9cXHcvO1xuICAgICAgIH1cbiAgICAgICBpZiAocHJlZml4ID09IG51bGwpIHtcbiAgICAgICAgIHByZWZpeCA9ICcnO1xuICAgICAgIH1cbiAgICAgICBpZiAocHJlZml4Lmxlbmd0aCA+PSBsZW5ndGgpIHtcbiAgICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgICAgfVxuICAgICAgIGlmIChtZW1vcmFibGUpIHtcbiAgICAgICAgIGlmIChwcmVmaXgubWF0Y2goY29uc29uYW50KSkge1xuICAgICAgICAgICBwYXR0ZXJuID0gdm93ZWw7XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICBwYXR0ZXJuID0gY29uc29uYW50O1xuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgICBuID0gZmFrZXIucmFuZG9tLm51bWJlcig5NCkgKyAzMztcbiAgICAgICBjaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShuKTtcbiAgICAgICBpZiAobWVtb3JhYmxlKSB7XG4gICAgICAgICBjaGFyID0gY2hhci50b0xvd2VyQ2FzZSgpO1xuICAgICAgIH1cbiAgICAgICBpZiAoIWNoYXIubWF0Y2gocGF0dGVybikpIHtcbiAgICAgICAgIHJldHVybiBfcGFzc3dvcmQobGVuZ3RoLCBtZW1vcmFibGUsIHBhdHRlcm4sIHByZWZpeCk7XG4gICAgICAgfVxuICAgICAgIHJldHVybiBfcGFzc3dvcmQobGVuZ3RoLCBtZW1vcmFibGUsIHBhdHRlcm4sIFwiXCIgKyBwcmVmaXggKyBjaGFyKTtcbiAgICAgfTtcbiAgICAgcmV0dXJuIF9wYXNzd29yZChsZW4sIG1lbW9yYWJsZSwgcGF0dGVybiwgcHJlZml4KTtcbiAgIH1cblxuICBzZWxmLnBhc3N3b3JkLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIHBhc3N3b3JkLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXG4gICAgICBcIkFNN3psNk1nXCIsXG4gICAgICBcInN1c2Vqb2ZlXCJcbiAgICBdLFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICBcImxlbmd0aFwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBwYXNzd29yZC5cIlxuICAgICAgfSxcbiAgICAgIFwibWVtb3JhYmxlXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciBhIHBhc3N3b3JkIHNob3VsZCBiZSBlYXN5IHRvIHJlbWVtYmVyLlwiXG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwicmVnZXhcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgcmVnZXggdG8gbWF0Y2ggZWFjaCBjaGFyYWN0ZXIgb2YgdGhlIHBhc3N3b3JkIGFnYWluc3QuIFRoaXMgcGFyYW1ldGVyIHdpbGwgYmUgbmVnYXRlZCBpZiB0aGUgbWVtb3JhYmxlIHNldHRpbmcgaXMgdHVybmVkIG9uLlwiXG4gICAgICB9LFxuICAgICAgXCJwcmVmaXhcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgdmFsdWUgdG8gcHJlcGVuZCB0byB0aGUgZ2VuZXJhdGVkIHBhc3N3b3JkLiBUaGUgcHJlZml4IGNvdW50cyB0b3dhcmRzIHRoZSBsZW5ndGggb2YgdGhlIHBhc3N3b3JkLlwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG59O1xuXG5cbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBJbnRlcm5ldDtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjIyNcIixcbiAgXCIjIyMjXCIsXG4gIFwiIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7Y2l0eV9wcmVmaXh9ICN7TmFtZS5maXJzdF9uYW1lfSN7Y2l0eV9zdWZmaXh9XCIsXG4gIFwiI3tjaXR5X3ByZWZpeH0gI3tOYW1lLmZpcnN0X25hbWV9XCIsXG4gIFwiI3tOYW1lLmZpcnN0X25hbWV9I3tjaXR5X3N1ZmZpeH1cIixcbiAgXCIje05hbWUubGFzdF9uYW1lfSN7Y2l0eV9zdWZmaXh9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIk5vcnRoXCIsXG4gIFwiRWFzdFwiLFxuICBcIldlc3RcIixcbiAgXCJTb3V0aFwiLFxuICBcIk5ld1wiLFxuICBcIkxha2VcIixcbiAgXCJQb3J0XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcInRvd25cIixcbiAgXCJ0b25cIixcbiAgXCJsYW5kXCIsXG4gIFwidmlsbGVcIixcbiAgXCJiZXJnXCIsXG4gIFwiYnVyZ2hcIixcbiAgXCJib3JvdWdoXCIsXG4gIFwiYnVyeVwiLFxuICBcInZpZXdcIixcbiAgXCJwb3J0XCIsXG4gIFwibW91dGhcIixcbiAgXCJzdGFkXCIsXG4gIFwiZnVydFwiLFxuICBcImNoZXN0ZXJcIixcbiAgXCJtb3V0aFwiLFxuICBcImZvcnRcIixcbiAgXCJoYXZlblwiLFxuICBcInNpZGVcIixcbiAgXCJzaGlyZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBZmdoYW5pc3RhblwiLFxuICBcIkFsYmFuaWFcIixcbiAgXCJBbGdlcmlhXCIsXG4gIFwiQW1lcmljYW4gU2Ftb2FcIixcbiAgXCJBbmRvcnJhXCIsXG4gIFwiQW5nb2xhXCIsXG4gIFwiQW5ndWlsbGFcIixcbiAgXCJBbnRhcmN0aWNhICh0aGUgdGVycml0b3J5IFNvdXRoIG9mIDYwIGRlZyBTKVwiLFxuICBcIkFudGlndWEgYW5kIEJhcmJ1ZGFcIixcbiAgXCJBcmdlbnRpbmFcIixcbiAgXCJBcm1lbmlhXCIsXG4gIFwiQXJ1YmFcIixcbiAgXCJBdXN0cmFsaWFcIixcbiAgXCJBdXN0cmlhXCIsXG4gIFwiQXplcmJhaWphblwiLFxuICBcIkJhaGFtYXNcIixcbiAgXCJCYWhyYWluXCIsXG4gIFwiQmFuZ2xhZGVzaFwiLFxuICBcIkJhcmJhZG9zXCIsXG4gIFwiQmVsYXJ1c1wiLFxuICBcIkJlbGdpdW1cIixcbiAgXCJCZWxpemVcIixcbiAgXCJCZW5pblwiLFxuICBcIkJlcm11ZGFcIixcbiAgXCJCaHV0YW5cIixcbiAgXCJCb2xpdmlhXCIsXG4gIFwiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYVwiLFxuICBcIkJvdHN3YW5hXCIsXG4gIFwiQm91dmV0IElzbGFuZCAoQm91dmV0b3lhKVwiLFxuICBcIkJyYXppbFwiLFxuICBcIkJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeSAoQ2hhZ29zIEFyY2hpcGVsYWdvKVwiLFxuICBcIkJydW5laSBEYXJ1c3NhbGFtXCIsXG4gIFwiQnVsZ2FyaWFcIixcbiAgXCJCdXJraW5hIEZhc29cIixcbiAgXCJCdXJ1bmRpXCIsXG4gIFwiQ2FtYm9kaWFcIixcbiAgXCJDYW1lcm9vblwiLFxuICBcIkNhbmFkYVwiLFxuICBcIkNhcGUgVmVyZGVcIixcbiAgXCJDYXltYW4gSXNsYW5kc1wiLFxuICBcIkNlbnRyYWwgQWZyaWNhbiBSZXB1YmxpY1wiLFxuICBcIkNoYWRcIixcbiAgXCJDaGlsZVwiLFxuICBcIkNoaW5hXCIsXG4gIFwiQ2hyaXN0bWFzIElzbGFuZFwiLFxuICBcIkNvY29zIChLZWVsaW5nKSBJc2xhbmRzXCIsXG4gIFwiQ29sb21iaWFcIixcbiAgXCJDb21vcm9zXCIsXG4gIFwiQ29uZ29cIixcbiAgXCJDb29rIElzbGFuZHNcIixcbiAgXCJDb3N0YSBSaWNhXCIsXG4gIFwiQ290ZSBkJ0l2b2lyZVwiLFxuICBcIkNyb2F0aWFcIixcbiAgXCJDdWJhXCIsXG4gIFwiQ3lwcnVzXCIsXG4gIFwiQ3plY2ggUmVwdWJsaWNcIixcbiAgXCJEZW5tYXJrXCIsXG4gIFwiRGppYm91dGlcIixcbiAgXCJEb21pbmljYVwiLFxuICBcIkRvbWluaWNhbiBSZXB1YmxpY1wiLFxuICBcIkVjdWFkb3JcIixcbiAgXCJFZ3lwdFwiLFxuICBcIkVsIFNhbHZhZG9yXCIsXG4gIFwiRXF1YXRvcmlhbCBHdWluZWFcIixcbiAgXCJFcml0cmVhXCIsXG4gIFwiRXN0b25pYVwiLFxuICBcIkV0aGlvcGlhXCIsXG4gIFwiRmFyb2UgSXNsYW5kc1wiLFxuICBcIkZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKVwiLFxuICBcIkZpamlcIixcbiAgXCJGaW5sYW5kXCIsXG4gIFwiRnJhbmNlXCIsXG4gIFwiRnJlbmNoIEd1aWFuYVwiLFxuICBcIkZyZW5jaCBQb2x5bmVzaWFcIixcbiAgXCJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXNcIixcbiAgXCJHYWJvblwiLFxuICBcIkdhbWJpYVwiLFxuICBcIkdlb3JnaWFcIixcbiAgXCJHZXJtYW55XCIsXG4gIFwiR2hhbmFcIixcbiAgXCJHaWJyYWx0YXJcIixcbiAgXCJHcmVlY2VcIixcbiAgXCJHcmVlbmxhbmRcIixcbiAgXCJHcmVuYWRhXCIsXG4gIFwiR3VhZGVsb3VwZVwiLFxuICBcIkd1YW1cIixcbiAgXCJHdWF0ZW1hbGFcIixcbiAgXCJHdWVybnNleVwiLFxuICBcIkd1aW5lYVwiLFxuICBcIkd1aW5lYS1CaXNzYXVcIixcbiAgXCJHdXlhbmFcIixcbiAgXCJIYWl0aVwiLFxuICBcIkhlYXJkIElzbGFuZCBhbmQgTWNEb25hbGQgSXNsYW5kc1wiLFxuICBcIkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpXCIsXG4gIFwiSG9uZHVyYXNcIixcbiAgXCJIb25nIEtvbmdcIixcbiAgXCJIdW5nYXJ5XCIsXG4gIFwiSWNlbGFuZFwiLFxuICBcIkluZGlhXCIsXG4gIFwiSW5kb25lc2lhXCIsXG4gIFwiSXJhblwiLFxuICBcIklyYXFcIixcbiAgXCJJcmVsYW5kXCIsXG4gIFwiSXNsZSBvZiBNYW5cIixcbiAgXCJJc3JhZWxcIixcbiAgXCJJdGFseVwiLFxuICBcIkphbWFpY2FcIixcbiAgXCJKYXBhblwiLFxuICBcIkplcnNleVwiLFxuICBcIkpvcmRhblwiLFxuICBcIkthemFraHN0YW5cIixcbiAgXCJLZW55YVwiLFxuICBcIktpcmliYXRpXCIsXG4gIFwiRGVtb2NyYXRpYyBQZW9wbGUncyBSZXB1YmxpYyBvZiBLb3JlYVwiLFxuICBcIlJlcHVibGljIG9mIEtvcmVhXCIsXG4gIFwiS3V3YWl0XCIsXG4gIFwiS3lyZ3l6IFJlcHVibGljXCIsXG4gIFwiTGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWNcIixcbiAgXCJMYXR2aWFcIixcbiAgXCJMZWJhbm9uXCIsXG4gIFwiTGVzb3Rob1wiLFxuICBcIkxpYmVyaWFcIixcbiAgXCJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhXCIsXG4gIFwiTGllY2h0ZW5zdGVpblwiLFxuICBcIkxpdGh1YW5pYVwiLFxuICBcIkx1eGVtYm91cmdcIixcbiAgXCJNYWNhb1wiLFxuICBcIk1hY2Vkb25pYVwiLFxuICBcIk1hZGFnYXNjYXJcIixcbiAgXCJNYWxhd2lcIixcbiAgXCJNYWxheXNpYVwiLFxuICBcIk1hbGRpdmVzXCIsXG4gIFwiTWFsaVwiLFxuICBcIk1hbHRhXCIsXG4gIFwiTWFyc2hhbGwgSXNsYW5kc1wiLFxuICBcIk1hcnRpbmlxdWVcIixcbiAgXCJNYXVyaXRhbmlhXCIsXG4gIFwiTWF1cml0aXVzXCIsXG4gIFwiTWF5b3R0ZVwiLFxuICBcIk1leGljb1wiLFxuICBcIk1pY3JvbmVzaWFcIixcbiAgXCJNb2xkb3ZhXCIsXG4gIFwiTW9uYWNvXCIsXG4gIFwiTW9uZ29saWFcIixcbiAgXCJNb250ZW5lZ3JvXCIsXG4gIFwiTW9udHNlcnJhdFwiLFxuICBcIk1vcm9jY29cIixcbiAgXCJNb3phbWJpcXVlXCIsXG4gIFwiTXlhbm1hclwiLFxuICBcIk5hbWliaWFcIixcbiAgXCJOYXVydVwiLFxuICBcIk5lcGFsXCIsXG4gIFwiTmV0aGVybGFuZHMgQW50aWxsZXNcIixcbiAgXCJOZXRoZXJsYW5kc1wiLFxuICBcIk5ldyBDYWxlZG9uaWFcIixcbiAgXCJOZXcgWmVhbGFuZFwiLFxuICBcIk5pY2FyYWd1YVwiLFxuICBcIk5pZ2VyXCIsXG4gIFwiTmlnZXJpYVwiLFxuICBcIk5pdWVcIixcbiAgXCJOb3Jmb2xrIElzbGFuZFwiLFxuICBcIk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kc1wiLFxuICBcIk5vcndheVwiLFxuICBcIk9tYW5cIixcbiAgXCJQYWtpc3RhblwiLFxuICBcIlBhbGF1XCIsXG4gIFwiUGFsZXN0aW5pYW4gVGVycml0b3J5XCIsXG4gIFwiUGFuYW1hXCIsXG4gIFwiUGFwdWEgTmV3IEd1aW5lYVwiLFxuICBcIlBhcmFndWF5XCIsXG4gIFwiUGVydVwiLFxuICBcIlBoaWxpcHBpbmVzXCIsXG4gIFwiUGl0Y2Fpcm4gSXNsYW5kc1wiLFxuICBcIlBvbGFuZFwiLFxuICBcIlBvcnR1Z2FsXCIsXG4gIFwiUHVlcnRvIFJpY29cIixcbiAgXCJRYXRhclwiLFxuICBcIlJldW5pb25cIixcbiAgXCJSb21hbmlhXCIsXG4gIFwiUnVzc2lhbiBGZWRlcmF0aW9uXCIsXG4gIFwiUndhbmRhXCIsXG4gIFwiU2FpbnQgQmFydGhlbGVteVwiLFxuICBcIlNhaW50IEhlbGVuYVwiLFxuICBcIlNhaW50IEtpdHRzIGFuZCBOZXZpc1wiLFxuICBcIlNhaW50IEx1Y2lhXCIsXG4gIFwiU2FpbnQgTWFydGluXCIsXG4gIFwiU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvblwiLFxuICBcIlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzXCIsXG4gIFwiU2Ftb2FcIixcbiAgXCJTYW4gTWFyaW5vXCIsXG4gIFwiU2FvIFRvbWUgYW5kIFByaW5jaXBlXCIsXG4gIFwiU2F1ZGkgQXJhYmlhXCIsXG4gIFwiU2VuZWdhbFwiLFxuICBcIlNlcmJpYVwiLFxuICBcIlNleWNoZWxsZXNcIixcbiAgXCJTaWVycmEgTGVvbmVcIixcbiAgXCJTaW5nYXBvcmVcIixcbiAgXCJTbG92YWtpYSAoU2xvdmFrIFJlcHVibGljKVwiLFxuICBcIlNsb3ZlbmlhXCIsXG4gIFwiU29sb21vbiBJc2xhbmRzXCIsXG4gIFwiU29tYWxpYVwiLFxuICBcIlNvdXRoIEFmcmljYVwiLFxuICBcIlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzXCIsXG4gIFwiU3BhaW5cIixcbiAgXCJTcmkgTGFua2FcIixcbiAgXCJTdWRhblwiLFxuICBcIlN1cmluYW1lXCIsXG4gIFwiU3ZhbGJhcmQgJiBKYW4gTWF5ZW4gSXNsYW5kc1wiLFxuICBcIlN3YXppbGFuZFwiLFxuICBcIlN3ZWRlblwiLFxuICBcIlN3aXR6ZXJsYW5kXCIsXG4gIFwiU3lyaWFuIEFyYWIgUmVwdWJsaWNcIixcbiAgXCJUYWl3YW5cIixcbiAgXCJUYWppa2lzdGFuXCIsXG4gIFwiVGFuemFuaWFcIixcbiAgXCJUaGFpbGFuZFwiLFxuICBcIlRpbW9yLUxlc3RlXCIsXG4gIFwiVG9nb1wiLFxuICBcIlRva2VsYXVcIixcbiAgXCJUb25nYVwiLFxuICBcIlRyaW5pZGFkIGFuZCBUb2JhZ29cIixcbiAgXCJUdW5pc2lhXCIsXG4gIFwiVHVya2V5XCIsXG4gIFwiVHVya21lbmlzdGFuXCIsXG4gIFwiVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzXCIsXG4gIFwiVHV2YWx1XCIsXG4gIFwiVWdhbmRhXCIsXG4gIFwiVWtyYWluZVwiLFxuICBcIlVuaXRlZCBBcmFiIEVtaXJhdGVzXCIsXG4gIFwiVW5pdGVkIEtpbmdkb21cIixcbiAgXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIixcbiAgXCJVbml0ZWQgU3RhdGVzIE1pbm9yIE91dGx5aW5nIElzbGFuZHNcIixcbiAgXCJVcnVndWF5XCIsXG4gIFwiVXpiZWtpc3RhblwiLFxuICBcIlZhbnVhdHVcIixcbiAgXCJWZW5lenVlbGFcIixcbiAgXCJWaWV0bmFtXCIsXG4gIFwiVmlyZ2luIElzbGFuZHMsIEJyaXRpc2hcIixcbiAgXCJWaXJnaW4gSXNsYW5kcywgVS5TLlwiLFxuICBcIldhbGxpcyBhbmQgRnV0dW5hXCIsXG4gIFwiV2VzdGVybiBTYWhhcmFcIixcbiAgXCJZZW1lblwiLFxuICBcIlphbWJpYVwiLFxuICBcIlppbWJhYndlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFEXCIsXG4gIFwiQUVcIixcbiAgXCJBRlwiLFxuICBcIkFHXCIsXG4gIFwiQUlcIixcbiAgXCJBTFwiLFxuICBcIkFNXCIsXG4gIFwiQU9cIixcbiAgXCJBUVwiLFxuICBcIkFSXCIsXG4gIFwiQVNcIixcbiAgXCJBVFwiLFxuICBcIkFVXCIsXG4gIFwiQVdcIixcbiAgXCJBWFwiLFxuICBcIkFaXCIsXG4gIFwiQkFcIixcbiAgXCJCQlwiLFxuICBcIkJEXCIsXG4gIFwiQkVcIixcbiAgXCJCRlwiLFxuICBcIkJHXCIsXG4gIFwiQkhcIixcbiAgXCJCSVwiLFxuICBcIkJKXCIsXG4gIFwiQkxcIixcbiAgXCJCTVwiLFxuICBcIkJOXCIsXG4gIFwiQk9cIixcbiAgXCJCUVwiLFxuICBcIkJRXCIsXG4gIFwiQlJcIixcbiAgXCJCU1wiLFxuICBcIkJUXCIsXG4gIFwiQlZcIixcbiAgXCJCV1wiLFxuICBcIkJZXCIsXG4gIFwiQlpcIixcbiAgXCJDQVwiLFxuICBcIkNDXCIsXG4gIFwiQ0RcIixcbiAgXCJDRlwiLFxuICBcIkNHXCIsXG4gIFwiQ0hcIixcbiAgXCJDSVwiLFxuICBcIkNLXCIsXG4gIFwiQ0xcIixcbiAgXCJDTVwiLFxuICBcIkNOXCIsXG4gIFwiQ09cIixcbiAgXCJDUlwiLFxuICBcIkNVXCIsXG4gIFwiQ1ZcIixcbiAgXCJDV1wiLFxuICBcIkNYXCIsXG4gIFwiQ1lcIixcbiAgXCJDWlwiLFxuICBcIkRFXCIsXG4gIFwiREpcIixcbiAgXCJES1wiLFxuICBcIkRNXCIsXG4gIFwiRE9cIixcbiAgXCJEWlwiLFxuICBcIkVDXCIsXG4gIFwiRUVcIixcbiAgXCJFR1wiLFxuICBcIkVIXCIsXG4gIFwiRVJcIixcbiAgXCJFU1wiLFxuICBcIkVUXCIsXG4gIFwiRklcIixcbiAgXCJGSlwiLFxuICBcIkZLXCIsXG4gIFwiRk1cIixcbiAgXCJGT1wiLFxuICBcIkZSXCIsXG4gIFwiR0FcIixcbiAgXCJHQlwiLFxuICBcIkdEXCIsXG4gIFwiR0VcIixcbiAgXCJHRlwiLFxuICBcIkdHXCIsXG4gIFwiR0hcIixcbiAgXCJHSVwiLFxuICBcIkdMXCIsXG4gIFwiR01cIixcbiAgXCJHTlwiLFxuICBcIkdQXCIsXG4gIFwiR1FcIixcbiAgXCJHUlwiLFxuICBcIkdTXCIsXG4gIFwiR1RcIixcbiAgXCJHVVwiLFxuICBcIkdXXCIsXG4gIFwiR1lcIixcbiAgXCJIS1wiLFxuICBcIkhNXCIsXG4gIFwiSE5cIixcbiAgXCJIUlwiLFxuICBcIkhUXCIsXG4gIFwiSFVcIixcbiAgXCJJRFwiLFxuICBcIklFXCIsXG4gIFwiSUxcIixcbiAgXCJJTVwiLFxuICBcIklOXCIsXG4gIFwiSU9cIixcbiAgXCJJUVwiLFxuICBcIklSXCIsXG4gIFwiSVNcIixcbiAgXCJJVFwiLFxuICBcIkpFXCIsXG4gIFwiSk1cIixcbiAgXCJKT1wiLFxuICBcIkpQXCIsXG4gIFwiS0VcIixcbiAgXCJLR1wiLFxuICBcIktIXCIsXG4gIFwiS0lcIixcbiAgXCJLTVwiLFxuICBcIktOXCIsXG4gIFwiS1BcIixcbiAgXCJLUlwiLFxuICBcIktXXCIsXG4gIFwiS1lcIixcbiAgXCJLWlwiLFxuICBcIkxBXCIsXG4gIFwiTEJcIixcbiAgXCJMQ1wiLFxuICBcIkxJXCIsXG4gIFwiTEtcIixcbiAgXCJMUlwiLFxuICBcIkxTXCIsXG4gIFwiTFRcIixcbiAgXCJMVVwiLFxuICBcIkxWXCIsXG4gIFwiTFlcIixcbiAgXCJNQVwiLFxuICBcIk1DXCIsXG4gIFwiTURcIixcbiAgXCJNRVwiLFxuICBcIk1GXCIsXG4gIFwiTUdcIixcbiAgXCJNSFwiLFxuICBcIk1LXCIsXG4gIFwiTUxcIixcbiAgXCJNTVwiLFxuICBcIk1OXCIsXG4gIFwiTU9cIixcbiAgXCJNUFwiLFxuICBcIk1RXCIsXG4gIFwiTVJcIixcbiAgXCJNU1wiLFxuICBcIk1UXCIsXG4gIFwiTVVcIixcbiAgXCJNVlwiLFxuICBcIk1XXCIsXG4gIFwiTVhcIixcbiAgXCJNWVwiLFxuICBcIk1aXCIsXG4gIFwiTkFcIixcbiAgXCJOQ1wiLFxuICBcIk5FXCIsXG4gIFwiTkZcIixcbiAgXCJOR1wiLFxuICBcIk5JXCIsXG4gIFwiTkxcIixcbiAgXCJOT1wiLFxuICBcIk5QXCIsXG4gIFwiTlJcIixcbiAgXCJOVVwiLFxuICBcIk5aXCIsXG4gIFwiT01cIixcbiAgXCJQQVwiLFxuICBcIlBFXCIsXG4gIFwiUEZcIixcbiAgXCJQR1wiLFxuICBcIlBIXCIsXG4gIFwiUEtcIixcbiAgXCJQTFwiLFxuICBcIlBNXCIsXG4gIFwiUE5cIixcbiAgXCJQUlwiLFxuICBcIlBTXCIsXG4gIFwiUFRcIixcbiAgXCJQV1wiLFxuICBcIlBZXCIsXG4gIFwiUUFcIixcbiAgXCJSRVwiLFxuICBcIlJPXCIsXG4gIFwiUlNcIixcbiAgXCJSVVwiLFxuICBcIlJXXCIsXG4gIFwiU0FcIixcbiAgXCJTQlwiLFxuICBcIlNDXCIsXG4gIFwiU0RcIixcbiAgXCJTRVwiLFxuICBcIlNHXCIsXG4gIFwiU0hcIixcbiAgXCJTSVwiLFxuICBcIlNKXCIsXG4gIFwiU0tcIixcbiAgXCJTTFwiLFxuICBcIlNNXCIsXG4gIFwiU05cIixcbiAgXCJTT1wiLFxuICBcIlNSXCIsXG4gIFwiU1NcIixcbiAgXCJTVFwiLFxuICBcIlNWXCIsXG4gIFwiU1hcIixcbiAgXCJTWVwiLFxuICBcIlNaXCIsXG4gIFwiVENcIixcbiAgXCJURFwiLFxuICBcIlRGXCIsXG4gIFwiVEdcIixcbiAgXCJUSFwiLFxuICBcIlRKXCIsXG4gIFwiVEtcIixcbiAgXCJUTFwiLFxuICBcIlRNXCIsXG4gIFwiVE5cIixcbiAgXCJUT1wiLFxuICBcIlRSXCIsXG4gIFwiVFRcIixcbiAgXCJUVlwiLFxuICBcIlRXXCIsXG4gIFwiVFpcIixcbiAgXCJVQVwiLFxuICBcIlVHXCIsXG4gIFwiVU1cIixcbiAgXCJVU1wiLFxuICBcIlVZXCIsXG4gIFwiVVpcIixcbiAgXCJWQVwiLFxuICBcIlZDXCIsXG4gIFwiVkVcIixcbiAgXCJWR1wiLFxuICBcIlZJXCIsXG4gIFwiVk5cIixcbiAgXCJWVVwiLFxuICBcIldGXCIsXG4gIFwiV1NcIixcbiAgXCJZRVwiLFxuICBcIllUXCIsXG4gIFwiWkFcIixcbiAgXCJaTVwiLFxuICBcIlpXXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkF2b25cIixcbiAgXCJCZWRmb3Jkc2hpcmVcIixcbiAgXCJCZXJrc2hpcmVcIixcbiAgXCJCb3JkZXJzXCIsXG4gIFwiQnVja2luZ2hhbXNoaXJlXCIsXG4gIFwiQ2FtYnJpZGdlc2hpcmVcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhXCJcbl07XG4iLCJ2YXIgYWRkcmVzcyA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBhZGRyZXNzO1xuYWRkcmVzcy5jaXR5X3ByZWZpeCA9IHJlcXVpcmUoXCIuL2NpdHlfcHJlZml4XCIpO1xuYWRkcmVzcy5jaXR5X3N1ZmZpeCA9IHJlcXVpcmUoXCIuL2NpdHlfc3VmZml4XCIpO1xuYWRkcmVzcy5jb3VudHkgPSByZXF1aXJlKFwiLi9jb3VudHlcIik7XG5hZGRyZXNzLmNvdW50cnkgPSByZXF1aXJlKFwiLi9jb3VudHJ5XCIpO1xuYWRkcmVzcy5jb3VudHJ5X2NvZGUgPSByZXF1aXJlKFwiLi9jb3VudHJ5X2NvZGVcIik7XG5hZGRyZXNzLmJ1aWxkaW5nX251bWJlciA9IHJlcXVpcmUoXCIuL2J1aWxkaW5nX251bWJlclwiKTtcbmFkZHJlc3Muc3RyZWV0X3N1ZmZpeCA9IHJlcXVpcmUoXCIuL3N0cmVldF9zdWZmaXhcIik7XG5hZGRyZXNzLnNlY29uZGFyeV9hZGRyZXNzID0gcmVxdWlyZShcIi4vc2Vjb25kYXJ5X2FkZHJlc3NcIik7XG5hZGRyZXNzLnBvc3Rjb2RlID0gcmVxdWlyZShcIi4vcG9zdGNvZGVcIik7XG5hZGRyZXNzLnBvc3Rjb2RlX2J5X3N0YXRlID0gcmVxdWlyZShcIi4vcG9zdGNvZGVfYnlfc3RhdGVcIik7XG5hZGRyZXNzLnN0YXRlID0gcmVxdWlyZShcIi4vc3RhdGVcIik7XG5hZGRyZXNzLnN0YXRlX2FiYnIgPSByZXF1aXJlKFwiLi9zdGF0ZV9hYmJyXCIpO1xuYWRkcmVzcy50aW1lX3pvbmUgPSByZXF1aXJlKFwiLi90aW1lX3pvbmVcIik7XG5hZGRyZXNzLmNpdHkgPSByZXF1aXJlKFwiLi9jaXR5XCIpO1xuYWRkcmVzcy5zdHJlZXRfbmFtZSA9IHJlcXVpcmUoXCIuL3N0cmVldF9uYW1lXCIpO1xuYWRkcmVzcy5zdHJlZXRfYWRkcmVzcyA9IHJlcXVpcmUoXCIuL3N0cmVldF9hZGRyZXNzXCIpO1xuYWRkcmVzcy5kZWZhdWx0X2NvdW50cnkgPSByZXF1aXJlKFwiLi9kZWZhdWx0X2NvdW50cnlcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIyMjXCIsXG4gIFwiIyMjIyMtIyMjI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMjI1wiLFxuICBcIiMjIyMjLSMjIyNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQXB0LiAjIyNcIixcbiAgXCJTdWl0ZSAjIyNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWxhYmFtYVwiLFxuICBcIkFsYXNrYVwiLFxuICBcIkFyaXpvbmFcIixcbiAgXCJBcmthbnNhc1wiLFxuICBcIkNhbGlmb3JuaWFcIixcbiAgXCJDb2xvcmFkb1wiLFxuICBcIkNvbm5lY3RpY3V0XCIsXG4gIFwiRGVsYXdhcmVcIixcbiAgXCJGbG9yaWRhXCIsXG4gIFwiR2VvcmdpYVwiLFxuICBcIkhhd2FpaVwiLFxuICBcIklkYWhvXCIsXG4gIFwiSWxsaW5vaXNcIixcbiAgXCJJbmRpYW5hXCIsXG4gIFwiSW93YVwiLFxuICBcIkthbnNhc1wiLFxuICBcIktlbnR1Y2t5XCIsXG4gIFwiTG91aXNpYW5hXCIsXG4gIFwiTWFpbmVcIixcbiAgXCJNYXJ5bGFuZFwiLFxuICBcIk1hc3NhY2h1c2V0dHNcIixcbiAgXCJNaWNoaWdhblwiLFxuICBcIk1pbm5lc290YVwiLFxuICBcIk1pc3Npc3NpcHBpXCIsXG4gIFwiTWlzc291cmlcIixcbiAgXCJNb250YW5hXCIsXG4gIFwiTmVicmFza2FcIixcbiAgXCJOZXZhZGFcIixcbiAgXCJOZXcgSGFtcHNoaXJlXCIsXG4gIFwiTmV3IEplcnNleVwiLFxuICBcIk5ldyBNZXhpY29cIixcbiAgXCJOZXcgWW9ya1wiLFxuICBcIk5vcnRoIENhcm9saW5hXCIsXG4gIFwiTm9ydGggRGFrb3RhXCIsXG4gIFwiT2hpb1wiLFxuICBcIk9rbGFob21hXCIsXG4gIFwiT3JlZ29uXCIsXG4gIFwiUGVubnN5bHZhbmlhXCIsXG4gIFwiUmhvZGUgSXNsYW5kXCIsXG4gIFwiU291dGggQ2Fyb2xpbmFcIixcbiAgXCJTb3V0aCBEYWtvdGFcIixcbiAgXCJUZW5uZXNzZWVcIixcbiAgXCJUZXhhc1wiLFxuICBcIlV0YWhcIixcbiAgXCJWZXJtb250XCIsXG4gIFwiVmlyZ2luaWFcIixcbiAgXCJXYXNoaW5ndG9uXCIsXG4gIFwiV2VzdCBWaXJnaW5pYVwiLFxuICBcIldpc2NvbnNpblwiLFxuICBcIld5b21pbmdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQUxcIixcbiAgXCJBS1wiLFxuICBcIkFaXCIsXG4gIFwiQVJcIixcbiAgXCJDQVwiLFxuICBcIkNPXCIsXG4gIFwiQ1RcIixcbiAgXCJERVwiLFxuICBcIkZMXCIsXG4gIFwiR0FcIixcbiAgXCJISVwiLFxuICBcIklEXCIsXG4gIFwiSUxcIixcbiAgXCJJTlwiLFxuICBcIklBXCIsXG4gIFwiS1NcIixcbiAgXCJLWVwiLFxuICBcIkxBXCIsXG4gIFwiTUVcIixcbiAgXCJNRFwiLFxuICBcIk1BXCIsXG4gIFwiTUlcIixcbiAgXCJNTlwiLFxuICBcIk1TXCIsXG4gIFwiTU9cIixcbiAgXCJNVFwiLFxuICBcIk5FXCIsXG4gIFwiTlZcIixcbiAgXCJOSFwiLFxuICBcIk5KXCIsXG4gIFwiTk1cIixcbiAgXCJOWVwiLFxuICBcIk5DXCIsXG4gIFwiTkRcIixcbiAgXCJPSFwiLFxuICBcIk9LXCIsXG4gIFwiT1JcIixcbiAgXCJQQVwiLFxuICBcIlJJXCIsXG4gIFwiU0NcIixcbiAgXCJTRFwiLFxuICBcIlROXCIsXG4gIFwiVFhcIixcbiAgXCJVVFwiLFxuICBcIlZUXCIsXG4gIFwiVkFcIixcbiAgXCJXQVwiLFxuICBcIldWXCIsXG4gIFwiV0lcIixcbiAgXCJXWVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje2J1aWxkaW5nX251bWJlcn0gI3tzdHJlZXRfbmFtZX1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tOYW1lLmZpcnN0X25hbWV9ICN7c3RyZWV0X3N1ZmZpeH1cIixcbiAgXCIje05hbWUubGFzdF9uYW1lfSAje3N0cmVldF9zdWZmaXh9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFsbGV5XCIsXG4gIFwiQXZlbnVlXCIsXG4gIFwiQnJhbmNoXCIsXG4gIFwiQnJpZGdlXCIsXG4gIFwiQnJvb2tcIixcbiAgXCJCcm9va3NcIixcbiAgXCJCdXJnXCIsXG4gIFwiQnVyZ3NcIixcbiAgXCJCeXBhc3NcIixcbiAgXCJDYW1wXCIsXG4gIFwiQ2FueW9uXCIsXG4gIFwiQ2FwZVwiLFxuICBcIkNhdXNld2F5XCIsXG4gIFwiQ2VudGVyXCIsXG4gIFwiQ2VudGVyc1wiLFxuICBcIkNpcmNsZVwiLFxuICBcIkNpcmNsZXNcIixcbiAgXCJDbGlmZlwiLFxuICBcIkNsaWZmc1wiLFxuICBcIkNsdWJcIixcbiAgXCJDb21tb25cIixcbiAgXCJDb3JuZXJcIixcbiAgXCJDb3JuZXJzXCIsXG4gIFwiQ291cnNlXCIsXG4gIFwiQ291cnRcIixcbiAgXCJDb3VydHNcIixcbiAgXCJDb3ZlXCIsXG4gIFwiQ292ZXNcIixcbiAgXCJDcmVla1wiLFxuICBcIkNyZXNjZW50XCIsXG4gIFwiQ3Jlc3RcIixcbiAgXCJDcm9zc2luZ1wiLFxuICBcIkNyb3Nzcm9hZFwiLFxuICBcIkN1cnZlXCIsXG4gIFwiRGFsZVwiLFxuICBcIkRhbVwiLFxuICBcIkRpdmlkZVwiLFxuICBcIkRyaXZlXCIsXG4gIFwiRHJpdmVcIixcbiAgXCJEcml2ZXNcIixcbiAgXCJFc3RhdGVcIixcbiAgXCJFc3RhdGVzXCIsXG4gIFwiRXhwcmVzc3dheVwiLFxuICBcIkV4dGVuc2lvblwiLFxuICBcIkV4dGVuc2lvbnNcIixcbiAgXCJGYWxsXCIsXG4gIFwiRmFsbHNcIixcbiAgXCJGZXJyeVwiLFxuICBcIkZpZWxkXCIsXG4gIFwiRmllbGRzXCIsXG4gIFwiRmxhdFwiLFxuICBcIkZsYXRzXCIsXG4gIFwiRm9yZFwiLFxuICBcIkZvcmRzXCIsXG4gIFwiRm9yZXN0XCIsXG4gIFwiRm9yZ2VcIixcbiAgXCJGb3JnZXNcIixcbiAgXCJGb3JrXCIsXG4gIFwiRm9ya3NcIixcbiAgXCJGb3J0XCIsXG4gIFwiRnJlZXdheVwiLFxuICBcIkdhcmRlblwiLFxuICBcIkdhcmRlbnNcIixcbiAgXCJHYXRld2F5XCIsXG4gIFwiR2xlblwiLFxuICBcIkdsZW5zXCIsXG4gIFwiR3JlZW5cIixcbiAgXCJHcmVlbnNcIixcbiAgXCJHcm92ZVwiLFxuICBcIkdyb3Zlc1wiLFxuICBcIkhhcmJvclwiLFxuICBcIkhhcmJvcnNcIixcbiAgXCJIYXZlblwiLFxuICBcIkhlaWdodHNcIixcbiAgXCJIaWdod2F5XCIsXG4gIFwiSGlsbFwiLFxuICBcIkhpbGxzXCIsXG4gIFwiSG9sbG93XCIsXG4gIFwiSW5sZXRcIixcbiAgXCJJbmxldFwiLFxuICBcIklzbGFuZFwiLFxuICBcIklzbGFuZFwiLFxuICBcIklzbGFuZHNcIixcbiAgXCJJc2xhbmRzXCIsXG4gIFwiSXNsZVwiLFxuICBcIklzbGVcIixcbiAgXCJKdW5jdGlvblwiLFxuICBcIkp1bmN0aW9uc1wiLFxuICBcIktleVwiLFxuICBcIktleXNcIixcbiAgXCJLbm9sbFwiLFxuICBcIktub2xsc1wiLFxuICBcIkxha2VcIixcbiAgXCJMYWtlc1wiLFxuICBcIkxhbmRcIixcbiAgXCJMYW5kaW5nXCIsXG4gIFwiTGFuZVwiLFxuICBcIkxpZ2h0XCIsXG4gIFwiTGlnaHRzXCIsXG4gIFwiTG9hZlwiLFxuICBcIkxvY2tcIixcbiAgXCJMb2Nrc1wiLFxuICBcIkxvY2tzXCIsXG4gIFwiTG9kZ2VcIixcbiAgXCJMb2RnZVwiLFxuICBcIkxvb3BcIixcbiAgXCJNYWxsXCIsXG4gIFwiTWFub3JcIixcbiAgXCJNYW5vcnNcIixcbiAgXCJNZWFkb3dcIixcbiAgXCJNZWFkb3dzXCIsXG4gIFwiTWV3c1wiLFxuICBcIk1pbGxcIixcbiAgXCJNaWxsc1wiLFxuICBcIk1pc3Npb25cIixcbiAgXCJNaXNzaW9uXCIsXG4gIFwiTW90b3J3YXlcIixcbiAgXCJNb3VudFwiLFxuICBcIk1vdW50YWluXCIsXG4gIFwiTW91bnRhaW5cIixcbiAgXCJNb3VudGFpbnNcIixcbiAgXCJNb3VudGFpbnNcIixcbiAgXCJOZWNrXCIsXG4gIFwiT3JjaGFyZFwiLFxuICBcIk92YWxcIixcbiAgXCJPdmVycGFzc1wiLFxuICBcIlBhcmtcIixcbiAgXCJQYXJrc1wiLFxuICBcIlBhcmt3YXlcIixcbiAgXCJQYXJrd2F5c1wiLFxuICBcIlBhc3NcIixcbiAgXCJQYXNzYWdlXCIsXG4gIFwiUGF0aFwiLFxuICBcIlBpa2VcIixcbiAgXCJQaW5lXCIsXG4gIFwiUGluZXNcIixcbiAgXCJQbGFjZVwiLFxuICBcIlBsYWluXCIsXG4gIFwiUGxhaW5zXCIsXG4gIFwiUGxhaW5zXCIsXG4gIFwiUGxhemFcIixcbiAgXCJQbGF6YVwiLFxuICBcIlBvaW50XCIsXG4gIFwiUG9pbnRzXCIsXG4gIFwiUG9ydFwiLFxuICBcIlBvcnRcIixcbiAgXCJQb3J0c1wiLFxuICBcIlBvcnRzXCIsXG4gIFwiUHJhaXJpZVwiLFxuICBcIlByYWlyaWVcIixcbiAgXCJSYWRpYWxcIixcbiAgXCJSYW1wXCIsXG4gIFwiUmFuY2hcIixcbiAgXCJSYXBpZFwiLFxuICBcIlJhcGlkc1wiLFxuICBcIlJlc3RcIixcbiAgXCJSaWRnZVwiLFxuICBcIlJpZGdlc1wiLFxuICBcIlJpdmVyXCIsXG4gIFwiUm9hZFwiLFxuICBcIlJvYWRcIixcbiAgXCJSb2Fkc1wiLFxuICBcIlJvYWRzXCIsXG4gIFwiUm91dGVcIixcbiAgXCJSb3dcIixcbiAgXCJSdWVcIixcbiAgXCJSdW5cIixcbiAgXCJTaG9hbFwiLFxuICBcIlNob2Fsc1wiLFxuICBcIlNob3JlXCIsXG4gIFwiU2hvcmVzXCIsXG4gIFwiU2t5d2F5XCIsXG4gIFwiU3ByaW5nXCIsXG4gIFwiU3ByaW5nc1wiLFxuICBcIlNwcmluZ3NcIixcbiAgXCJTcHVyXCIsXG4gIFwiU3B1cnNcIixcbiAgXCJTcXVhcmVcIixcbiAgXCJTcXVhcmVcIixcbiAgXCJTcXVhcmVzXCIsXG4gIFwiU3F1YXJlc1wiLFxuICBcIlN0YXRpb25cIixcbiAgXCJTdGF0aW9uXCIsXG4gIFwiU3RyYXZlbnVlXCIsXG4gIFwiU3RyYXZlbnVlXCIsXG4gIFwiU3RyZWFtXCIsXG4gIFwiU3RyZWFtXCIsXG4gIFwiU3RyZWV0XCIsXG4gIFwiU3RyZWV0XCIsXG4gIFwiU3RyZWV0c1wiLFxuICBcIlN1bW1pdFwiLFxuICBcIlN1bW1pdFwiLFxuICBcIlRlcnJhY2VcIixcbiAgXCJUaHJvdWdod2F5XCIsXG4gIFwiVHJhY2VcIixcbiAgXCJUcmFja1wiLFxuICBcIlRyYWZmaWN3YXlcIixcbiAgXCJUcmFpbFwiLFxuICBcIlRyYWlsXCIsXG4gIFwiVHVubmVsXCIsXG4gIFwiVHVubmVsXCIsXG4gIFwiVHVybnBpa2VcIixcbiAgXCJUdXJucGlrZVwiLFxuICBcIlVuZGVycGFzc1wiLFxuICBcIlVuaW9uXCIsXG4gIFwiVW5pb25zXCIsXG4gIFwiVmFsbGV5XCIsXG4gIFwiVmFsbGV5c1wiLFxuICBcIlZpYVwiLFxuICBcIlZpYWR1Y3RcIixcbiAgXCJWaWV3XCIsXG4gIFwiVmlld3NcIixcbiAgXCJWaWxsYWdlXCIsXG4gIFwiVmlsbGFnZVwiLFxuICBcIlZpbGxhZ2VzXCIsXG4gIFwiVmlsbGVcIixcbiAgXCJWaXN0YVwiLFxuICBcIlZpc3RhXCIsXG4gIFwiV2Fsa1wiLFxuICBcIldhbGtzXCIsXG4gIFwiV2FsbFwiLFxuICBcIldheVwiLFxuICBcIldheXNcIixcbiAgXCJXZWxsXCIsXG4gIFwiV2VsbHNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiUGFjaWZpYy9NaWR3YXlcIixcbiAgXCJQYWNpZmljL1BhZ29fUGFnb1wiLFxuICBcIlBhY2lmaWMvSG9ub2x1bHVcIixcbiAgXCJBbWVyaWNhL0p1bmVhdVwiLFxuICBcIkFtZXJpY2EvTG9zX0FuZ2VsZXNcIixcbiAgXCJBbWVyaWNhL1RpanVhbmFcIixcbiAgXCJBbWVyaWNhL0RlbnZlclwiLFxuICBcIkFtZXJpY2EvUGhvZW5peFwiLFxuICBcIkFtZXJpY2EvQ2hpaHVhaHVhXCIsXG4gIFwiQW1lcmljYS9NYXphdGxhblwiLFxuICBcIkFtZXJpY2EvQ2hpY2Fnb1wiLFxuICBcIkFtZXJpY2EvUmVnaW5hXCIsXG4gIFwiQW1lcmljYS9NZXhpY29fQ2l0eVwiLFxuICBcIkFtZXJpY2EvTWV4aWNvX0NpdHlcIixcbiAgXCJBbWVyaWNhL01vbnRlcnJleVwiLFxuICBcIkFtZXJpY2EvR3VhdGVtYWxhXCIsXG4gIFwiQW1lcmljYS9OZXdfWW9ya1wiLFxuICBcIkFtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXNcIixcbiAgXCJBbWVyaWNhL0JvZ290YVwiLFxuICBcIkFtZXJpY2EvTGltYVwiLFxuICBcIkFtZXJpY2EvTGltYVwiLFxuICBcIkFtZXJpY2EvSGFsaWZheFwiLFxuICBcIkFtZXJpY2EvQ2FyYWNhc1wiLFxuICBcIkFtZXJpY2EvTGFfUGF6XCIsXG4gIFwiQW1lcmljYS9TYW50aWFnb1wiLFxuICBcIkFtZXJpY2EvU3RfSm9obnNcIixcbiAgXCJBbWVyaWNhL1Nhb19QYXVsb1wiLFxuICBcIkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlc1wiLFxuICBcIkFtZXJpY2EvR3V5YW5hXCIsXG4gIFwiQW1lcmljYS9Hb2R0aGFiXCIsXG4gIFwiQXRsYW50aWMvU291dGhfR2VvcmdpYVwiLFxuICBcIkF0bGFudGljL0F6b3Jlc1wiLFxuICBcIkF0bGFudGljL0NhcGVfVmVyZGVcIixcbiAgXCJFdXJvcGUvRHVibGluXCIsXG4gIFwiRXVyb3BlL0xvbmRvblwiLFxuICBcIkV1cm9wZS9MaXNib25cIixcbiAgXCJFdXJvcGUvTG9uZG9uXCIsXG4gIFwiQWZyaWNhL0Nhc2FibGFuY2FcIixcbiAgXCJBZnJpY2EvTW9ucm92aWFcIixcbiAgXCJFdGMvVVRDXCIsXG4gIFwiRXVyb3BlL0JlbGdyYWRlXCIsXG4gIFwiRXVyb3BlL0JyYXRpc2xhdmFcIixcbiAgXCJFdXJvcGUvQnVkYXBlc3RcIixcbiAgXCJFdXJvcGUvTGp1YmxqYW5hXCIsXG4gIFwiRXVyb3BlL1ByYWd1ZVwiLFxuICBcIkV1cm9wZS9TYXJhamV2b1wiLFxuICBcIkV1cm9wZS9Ta29wamVcIixcbiAgXCJFdXJvcGUvV2Fyc2F3XCIsXG4gIFwiRXVyb3BlL1phZ3JlYlwiLFxuICBcIkV1cm9wZS9CcnVzc2Vsc1wiLFxuICBcIkV1cm9wZS9Db3BlbmhhZ2VuXCIsXG4gIFwiRXVyb3BlL01hZHJpZFwiLFxuICBcIkV1cm9wZS9QYXJpc1wiLFxuICBcIkV1cm9wZS9BbXN0ZXJkYW1cIixcbiAgXCJFdXJvcGUvQmVybGluXCIsXG4gIFwiRXVyb3BlL0JlcmxpblwiLFxuICBcIkV1cm9wZS9Sb21lXCIsXG4gIFwiRXVyb3BlL1N0b2NraG9sbVwiLFxuICBcIkV1cm9wZS9WaWVubmFcIixcbiAgXCJBZnJpY2EvQWxnaWVyc1wiLFxuICBcIkV1cm9wZS9CdWNoYXJlc3RcIixcbiAgXCJBZnJpY2EvQ2Fpcm9cIixcbiAgXCJFdXJvcGUvSGVsc2lua2lcIixcbiAgXCJFdXJvcGUvS2lldlwiLFxuICBcIkV1cm9wZS9SaWdhXCIsXG4gIFwiRXVyb3BlL1NvZmlhXCIsXG4gIFwiRXVyb3BlL1RhbGxpbm5cIixcbiAgXCJFdXJvcGUvVmlsbml1c1wiLFxuICBcIkV1cm9wZS9BdGhlbnNcIixcbiAgXCJFdXJvcGUvSXN0YW5idWxcIixcbiAgXCJFdXJvcGUvTWluc2tcIixcbiAgXCJBc2lhL0plcnVzYWxlbVwiLFxuICBcIkFmcmljYS9IYXJhcmVcIixcbiAgXCJBZnJpY2EvSm9oYW5uZXNidXJnXCIsXG4gIFwiRXVyb3BlL01vc2Nvd1wiLFxuICBcIkV1cm9wZS9Nb3Njb3dcIixcbiAgXCJFdXJvcGUvTW9zY293XCIsXG4gIFwiQXNpYS9LdXdhaXRcIixcbiAgXCJBc2lhL1JpeWFkaFwiLFxuICBcIkFmcmljYS9OYWlyb2JpXCIsXG4gIFwiQXNpYS9CYWdoZGFkXCIsXG4gIFwiQXNpYS9UZWhyYW5cIixcbiAgXCJBc2lhL011c2NhdFwiLFxuICBcIkFzaWEvTXVzY2F0XCIsXG4gIFwiQXNpYS9CYWt1XCIsXG4gIFwiQXNpYS9UYmlsaXNpXCIsXG4gIFwiQXNpYS9ZZXJldmFuXCIsXG4gIFwiQXNpYS9LYWJ1bFwiLFxuICBcIkFzaWEvWWVrYXRlcmluYnVyZ1wiLFxuICBcIkFzaWEvS2FyYWNoaVwiLFxuICBcIkFzaWEvS2FyYWNoaVwiLFxuICBcIkFzaWEvVGFzaGtlbnRcIixcbiAgXCJBc2lhL0tvbGthdGFcIixcbiAgXCJBc2lhL0tvbGthdGFcIixcbiAgXCJBc2lhL0tvbGthdGFcIixcbiAgXCJBc2lhL0tvbGthdGFcIixcbiAgXCJBc2lhL0thdGhtYW5kdVwiLFxuICBcIkFzaWEvRGhha2FcIixcbiAgXCJBc2lhL0RoYWthXCIsXG4gIFwiQXNpYS9Db2xvbWJvXCIsXG4gIFwiQXNpYS9BbG1hdHlcIixcbiAgXCJBc2lhL05vdm9zaWJpcnNrXCIsXG4gIFwiQXNpYS9SYW5nb29uXCIsXG4gIFwiQXNpYS9CYW5na29rXCIsXG4gIFwiQXNpYS9CYW5na29rXCIsXG4gIFwiQXNpYS9KYWthcnRhXCIsXG4gIFwiQXNpYS9LcmFzbm95YXJza1wiLFxuICBcIkFzaWEvU2hhbmdoYWlcIixcbiAgXCJBc2lhL0Nob25ncWluZ1wiLFxuICBcIkFzaWEvSG9uZ19Lb25nXCIsXG4gIFwiQXNpYS9VcnVtcWlcIixcbiAgXCJBc2lhL0t1YWxhX0x1bXB1clwiLFxuICBcIkFzaWEvU2luZ2Fwb3JlXCIsXG4gIFwiQXNpYS9UYWlwZWlcIixcbiAgXCJBdXN0cmFsaWEvUGVydGhcIixcbiAgXCJBc2lhL0lya3V0c2tcIixcbiAgXCJBc2lhL1VsYWFuYmFhdGFyXCIsXG4gIFwiQXNpYS9TZW91bFwiLFxuICBcIkFzaWEvVG9reW9cIixcbiAgXCJBc2lhL1Rva3lvXCIsXG4gIFwiQXNpYS9Ub2t5b1wiLFxuICBcIkFzaWEvWWFrdXRza1wiLFxuICBcIkF1c3RyYWxpYS9EYXJ3aW5cIixcbiAgXCJBdXN0cmFsaWEvQWRlbGFpZGVcIixcbiAgXCJBdXN0cmFsaWEvTWVsYm91cm5lXCIsXG4gIFwiQXVzdHJhbGlhL01lbGJvdXJuZVwiLFxuICBcIkF1c3RyYWxpYS9TeWRuZXlcIixcbiAgXCJBdXN0cmFsaWEvQnJpc2JhbmVcIixcbiAgXCJBdXN0cmFsaWEvSG9iYXJ0XCIsXG4gIFwiQXNpYS9WbGFkaXZvc3Rva1wiLFxuICBcIlBhY2lmaWMvR3VhbVwiLFxuICBcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5XCIsXG4gIFwiQXNpYS9NYWdhZGFuXCIsXG4gIFwiQXNpYS9NYWdhZGFuXCIsXG4gIFwiUGFjaWZpYy9Ob3VtZWFcIixcbiAgXCJQYWNpZmljL0ZpamlcIixcbiAgXCJBc2lhL0thbWNoYXRrYVwiLFxuICBcIlBhY2lmaWMvTWFqdXJvXCIsXG4gIFwiUGFjaWZpYy9BdWNrbGFuZFwiLFxuICBcIlBhY2lmaWMvQXVja2xhbmRcIixcbiAgXCJQYWNpZmljL1RvbmdhdGFwdVwiLFxuICBcIlBhY2lmaWMvRmFrYW9mb1wiLFxuICBcIlBhY2lmaWMvQXBpYVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje05hbWUubmFtZX1cIixcbiAgXCIje0NvbXBhbnkubmFtZX1cIlxuXTtcbiIsInZhciBhcHAgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYXBwO1xuYXBwLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuYXBwLnZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuYXBwLmF1dGhvciA9IHJlcXVpcmUoXCIuL2F1dGhvclwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiUmVkaG9sZFwiLFxuICBcIlRyZWVmbGV4XCIsXG4gIFwiVHJpcHBsZWRleFwiLFxuICBcIkthbmxhbVwiLFxuICBcIkJpZ3RheFwiLFxuICBcIkRhbHRmcmVzaFwiLFxuICBcIlRvdWdoam95ZmF4XCIsXG4gIFwiTWF0IExhbSBUYW1cIixcbiAgXCJPdGNvbVwiLFxuICBcIlRyZXMtWmFwXCIsXG4gIFwiWS1Tb2xvd2FybVwiLFxuICBcIlRyZXNvbVwiLFxuICBcIlZvbHRzaWxsYW1cIixcbiAgXCJCaW9kZXhcIixcbiAgXCJHcmVlbmxhbVwiLFxuICBcIlZpdmFcIixcbiAgXCJNYXRzb2Z0XCIsXG4gIFwiVGVtcFwiLFxuICBcIlpvb2xhYlwiLFxuICBcIlN1YmluXCIsXG4gIFwiUmFua1wiLFxuICBcIkpvYlwiLFxuICBcIlN0cmluZ3RvdWdoXCIsXG4gIFwiVGluXCIsXG4gIFwiSXRcIixcbiAgXCJIb21lIEluZ1wiLFxuICBcIlphbWl0XCIsXG4gIFwiU29uc2luZ1wiLFxuICBcIktvbmtsYWJcIixcbiAgXCJBbHBoYVwiLFxuICBcIkxhdGx1eFwiLFxuICBcIlZveWF0b3VjaFwiLFxuICBcIkFscGhhemFwXCIsXG4gIFwiSG9sZGxhbWlzXCIsXG4gIFwiWmFhbS1Eb3hcIixcbiAgXCJTdWItRXhcIixcbiAgXCJRdW8gTHV4XCIsXG4gIFwiQmFtaXR5XCIsXG4gIFwiVmVudG9zYW56YXBcIixcbiAgXCJMb3RzdHJpbmdcIixcbiAgXCJIYXRpdHlcIixcbiAgXCJUZW1wc29mdFwiLFxuICBcIk92ZXJob2xkXCIsXG4gIFwiRml4ZmxleFwiLFxuICBcIktvbmtsdXhcIixcbiAgXCJab250cmF4XCIsXG4gIFwiVGFtcGZsZXhcIixcbiAgXCJTcGFuXCIsXG4gIFwiTmFtZml4XCIsXG4gIFwiVHJhbnNjb2ZcIixcbiAgXCJTdGltXCIsXG4gIFwiRml4IFNhblwiLFxuICBcIlNvbmFpclwiLFxuICBcIlN0cm9uZ2hvbGRcIixcbiAgXCJGaW50b25lXCIsXG4gIFwiWS1maW5kXCIsXG4gIFwiT3BlbGFcIixcbiAgXCJMb3RsdXhcIixcbiAgXCJSb25zdHJpbmdcIixcbiAgXCJaYXRoaW5cIixcbiAgXCJEdW9iYW1cIixcbiAgXCJLZXlsZXhcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMC4jLiNcIixcbiAgXCIwLiMjXCIsXG4gIFwiIy4jI1wiLFxuICBcIiMuI1wiLFxuICBcIiMuIy4jXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjIwMTEtMTAtMTJcIixcbiAgXCIyMDEyLTExLTEyXCIsXG4gIFwiMjAxNS0xMS0xMVwiLFxuICBcIjIwMTMtOS0xMlwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIxMjM0LTIxMjEtMTIyMS0xMjExXCIsXG4gIFwiMTIxMi0xMjIxLTExMjEtMTIzNFwiLFxuICBcIjEyMTEtMTIyMS0xMjM0LTIyMDFcIixcbiAgXCIxMjI4LTEyMjEtMTIyMS0xNDMxXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcInZpc2FcIixcbiAgXCJtYXN0ZXJjYXJkXCIsXG4gIFwiYW1lcmljYW5leHByZXNzXCIsXG4gIFwiZGlzY292ZXJcIlxuXTtcbiIsInZhciBidXNpbmVzcyA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBidXNpbmVzcztcbmJ1c2luZXNzLmNyZWRpdF9jYXJkX251bWJlcnMgPSByZXF1aXJlKFwiLi9jcmVkaXRfY2FyZF9udW1iZXJzXCIpO1xuYnVzaW5lc3MuY3JlZGl0X2NhcmRfZXhwaXJ5X2RhdGVzID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRfZXhwaXJ5X2RhdGVzXCIpO1xuYnVzaW5lc3MuY3JlZGl0X2NhcmRfdHlwZXMgPSByZXF1aXJlKFwiLi9jcmVkaXRfY2FyZF90eXBlc1wiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjLSMjIy0jIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjI1wiXG5dO1xuIiwidmFyIGNlbGxfcGhvbmUgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gY2VsbF9waG9uZTtcbmNlbGxfcGhvbmUuZm9ybWF0cyA9IHJlcXVpcmUoXCIuL2Zvcm1hdHNcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcInJlZFwiLFxuICBcImdyZWVuXCIsXG4gIFwiYmx1ZVwiLFxuICBcInllbGxvd1wiLFxuICBcInB1cnBsZVwiLFxuICBcIm1pbnQgZ3JlZW5cIixcbiAgXCJ0ZWFsXCIsXG4gIFwid2hpdGVcIixcbiAgXCJibGFja1wiLFxuICBcIm9yYW5nZVwiLFxuICBcInBpbmtcIixcbiAgXCJncmV5XCIsXG4gIFwibWFyb29uXCIsXG4gIFwidmlvbGV0XCIsXG4gIFwidHVycXVvaXNlXCIsXG4gIFwidGFuXCIsXG4gIFwic2t5IGJsdWVcIixcbiAgXCJzYWxtb25cIixcbiAgXCJwbHVtXCIsXG4gIFwib3JjaGlkXCIsXG4gIFwib2xpdmVcIixcbiAgXCJtYWdlbnRhXCIsXG4gIFwibGltZVwiLFxuICBcIml2b3J5XCIsXG4gIFwiaW5kaWdvXCIsXG4gIFwiZ29sZFwiLFxuICBcImZ1Y2hzaWFcIixcbiAgXCJjeWFuXCIsXG4gIFwiYXp1cmVcIixcbiAgXCJsYXZlbmRlclwiLFxuICBcInNpbHZlclwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJCb29rc1wiLFxuICBcIk1vdmllc1wiLFxuICBcIk11c2ljXCIsXG4gIFwiR2FtZXNcIixcbiAgXCJFbGVjdHJvbmljc1wiLFxuICBcIkNvbXB1dGVyc1wiLFxuICBcIkhvbWVcIixcbiAgXCJHYXJkZW5cIixcbiAgXCJUb29sc1wiLFxuICBcIkdyb2NlcnlcIixcbiAgXCJIZWFsdGhcIixcbiAgXCJCZWF1dHlcIixcbiAgXCJUb3lzXCIsXG4gIFwiS2lkc1wiLFxuICBcIkJhYnlcIixcbiAgXCJDbG90aGluZ1wiLFxuICBcIlNob2VzXCIsXG4gIFwiSmV3ZWxlcnlcIixcbiAgXCJTcG9ydHNcIixcbiAgXCJPdXRkb29yc1wiLFxuICBcIkF1dG9tb3RpdmVcIixcbiAgXCJJbmR1c3RyaWFsXCJcbl07XG4iLCJ2YXIgY29tbWVyY2UgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gY29tbWVyY2U7XG5jb21tZXJjZS5jb2xvciA9IHJlcXVpcmUoXCIuL2NvbG9yXCIpO1xuY29tbWVyY2UuZGVwYXJ0bWVudCA9IHJlcXVpcmUoXCIuL2RlcGFydG1lbnRcIik7XG5jb21tZXJjZS5wcm9kdWN0X25hbWUgPSByZXF1aXJlKFwiLi9wcm9kdWN0X25hbWVcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBcImFkamVjdGl2ZVwiOiBbXG4gICAgXCJTbWFsbFwiLFxuICAgIFwiRXJnb25vbWljXCIsXG4gICAgXCJSdXN0aWNcIixcbiAgICBcIkludGVsbGlnZW50XCIsXG4gICAgXCJHb3JnZW91c1wiLFxuICAgIFwiSW5jcmVkaWJsZVwiLFxuICAgIFwiRmFudGFzdGljXCIsXG4gICAgXCJQcmFjdGljYWxcIixcbiAgICBcIlNsZWVrXCIsXG4gICAgXCJBd2Vzb21lXCIsXG4gICAgXCJHZW5lcmljXCIsXG4gICAgXCJIYW5kY3JhZnRlZFwiLFxuICAgIFwiSGFuZG1hZGVcIixcbiAgICBcIkxpY2Vuc2VkXCIsXG4gICAgXCJSZWZpbmVkXCIsXG4gICAgXCJVbmJyYW5kZWRcIixcbiAgICBcIlRhc3R5XCJcbiAgXSxcbiAgXCJtYXRlcmlhbFwiOiBbXG4gICAgXCJTdGVlbFwiLFxuICAgIFwiV29vZGVuXCIsXG4gICAgXCJDb25jcmV0ZVwiLFxuICAgIFwiUGxhc3RpY1wiLFxuICAgIFwiQ290dG9uXCIsXG4gICAgXCJHcmFuaXRlXCIsXG4gICAgXCJSdWJiZXJcIixcbiAgICBcIk1ldGFsXCIsXG4gICAgXCJTb2Z0XCIsXG4gICAgXCJGcmVzaFwiLFxuICAgIFwiRnJvemVuXCJcbiAgXSxcbiAgXCJwcm9kdWN0XCI6IFtcbiAgICBcIkNoYWlyXCIsXG4gICAgXCJDYXJcIixcbiAgICBcIkNvbXB1dGVyXCIsXG4gICAgXCJLZXlib2FyZFwiLFxuICAgIFwiTW91c2VcIixcbiAgICBcIkJpa2VcIixcbiAgICBcIkJhbGxcIixcbiAgICBcIkdsb3Zlc1wiLFxuICAgIFwiUGFudHNcIixcbiAgICBcIlNoaXJ0XCIsXG4gICAgXCJUYWJsZVwiLFxuICAgIFwiU2hvZXNcIixcbiAgICBcIkhhdFwiLFxuICAgIFwiVG93ZWxzXCIsXG4gICAgXCJTb2FwXCIsXG4gICAgXCJUdW5hXCIsXG4gICAgXCJDaGlja2VuXCIsXG4gICAgXCJGaXNoXCIsXG4gICAgXCJDaGVlc2VcIixcbiAgICBcIkJhY29uXCIsXG4gICAgXCJQaXp6YVwiLFxuICAgIFwiU2FsYWRcIixcbiAgICBcIlNhdXNhZ2VzXCIsXG4gICAgXCJDaGlwc1wiXG4gIF1cbn07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFkYXB0aXZlXCIsXG4gIFwiQWR2YW5jZWRcIixcbiAgXCJBbWVsaW9yYXRlZFwiLFxuICBcIkFzc2ltaWxhdGVkXCIsXG4gIFwiQXV0b21hdGVkXCIsXG4gIFwiQmFsYW5jZWRcIixcbiAgXCJCdXNpbmVzcy1mb2N1c2VkXCIsXG4gIFwiQ2VudHJhbGl6ZWRcIixcbiAgXCJDbG9uZWRcIixcbiAgXCJDb21wYXRpYmxlXCIsXG4gIFwiQ29uZmlndXJhYmxlXCIsXG4gIFwiQ3Jvc3MtZ3JvdXBcIixcbiAgXCJDcm9zcy1wbGF0Zm9ybVwiLFxuICBcIkN1c3RvbWVyLWZvY3VzZWRcIixcbiAgXCJDdXN0b21pemFibGVcIixcbiAgXCJEZWNlbnRyYWxpemVkXCIsXG4gIFwiRGUtZW5naW5lZXJlZFwiLFxuICBcIkRldm9sdmVkXCIsXG4gIFwiRGlnaXRpemVkXCIsXG4gIFwiRGlzdHJpYnV0ZWRcIixcbiAgXCJEaXZlcnNlXCIsXG4gIFwiRG93bi1zaXplZFwiLFxuICBcIkVuaGFuY2VkXCIsXG4gIFwiRW50ZXJwcmlzZS13aWRlXCIsXG4gIFwiRXJnb25vbWljXCIsXG4gIFwiRXhjbHVzaXZlXCIsXG4gIFwiRXhwYW5kZWRcIixcbiAgXCJFeHRlbmRlZFwiLFxuICBcIkZhY2UgdG8gZmFjZVwiLFxuICBcIkZvY3VzZWRcIixcbiAgXCJGcm9udC1saW5lXCIsXG4gIFwiRnVsbHktY29uZmlndXJhYmxlXCIsXG4gIFwiRnVuY3Rpb24tYmFzZWRcIixcbiAgXCJGdW5kYW1lbnRhbFwiLFxuICBcIkZ1dHVyZS1wcm9vZmVkXCIsXG4gIFwiR3Jhc3Mtcm9vdHNcIixcbiAgXCJIb3Jpem9udGFsXCIsXG4gIFwiSW1wbGVtZW50ZWRcIixcbiAgXCJJbm5vdmF0aXZlXCIsXG4gIFwiSW50ZWdyYXRlZFwiLFxuICBcIkludHVpdGl2ZVwiLFxuICBcIkludmVyc2VcIixcbiAgXCJNYW5hZ2VkXCIsXG4gIFwiTWFuZGF0b3J5XCIsXG4gIFwiTW9uaXRvcmVkXCIsXG4gIFwiTXVsdGktY2hhbm5lbGxlZFwiLFxuICBcIk11bHRpLWxhdGVyYWxcIixcbiAgXCJNdWx0aS1sYXllcmVkXCIsXG4gIFwiTXVsdGktdGllcmVkXCIsXG4gIFwiTmV0d29ya2VkXCIsXG4gIFwiT2JqZWN0LWJhc2VkXCIsXG4gIFwiT3Blbi1hcmNoaXRlY3RlZFwiLFxuICBcIk9wZW4tc291cmNlXCIsXG4gIFwiT3BlcmF0aXZlXCIsXG4gIFwiT3B0aW1pemVkXCIsXG4gIFwiT3B0aW9uYWxcIixcbiAgXCJPcmdhbmljXCIsXG4gIFwiT3JnYW5pemVkXCIsXG4gIFwiUGVyc2V2ZXJpbmdcIixcbiAgXCJQZXJzaXN0ZW50XCIsXG4gIFwiUGhhc2VkXCIsXG4gIFwiUG9sYXJpc2VkXCIsXG4gIFwiUHJlLWVtcHRpdmVcIixcbiAgXCJQcm9hY3RpdmVcIixcbiAgXCJQcm9maXQtZm9jdXNlZFwiLFxuICBcIlByb2ZvdW5kXCIsXG4gIFwiUHJvZ3JhbW1hYmxlXCIsXG4gIFwiUHJvZ3Jlc3NpdmVcIixcbiAgXCJQdWJsaWMta2V5XCIsXG4gIFwiUXVhbGl0eS1mb2N1c2VkXCIsXG4gIFwiUmVhY3RpdmVcIixcbiAgXCJSZWFsaWduZWRcIixcbiAgXCJSZS1jb250ZXh0dWFsaXplZFwiLFxuICBcIlJlLWVuZ2luZWVyZWRcIixcbiAgXCJSZWR1Y2VkXCIsXG4gIFwiUmV2ZXJzZS1lbmdpbmVlcmVkXCIsXG4gIFwiUmlnaHQtc2l6ZWRcIixcbiAgXCJSb2J1c3RcIixcbiAgXCJTZWFtbGVzc1wiLFxuICBcIlNlY3VyZWRcIixcbiAgXCJTZWxmLWVuYWJsaW5nXCIsXG4gIFwiU2hhcmFibGVcIixcbiAgXCJTdGFuZC1hbG9uZVwiLFxuICBcIlN0cmVhbWxpbmVkXCIsXG4gIFwiU3dpdGNoYWJsZVwiLFxuICBcIlN5bmNocm9uaXNlZFwiLFxuICBcIlN5bmVyZ2lzdGljXCIsXG4gIFwiU3luZXJnaXplZFwiLFxuICBcIlRlYW0tb3JpZW50ZWRcIixcbiAgXCJUb3RhbFwiLFxuICBcIlRyaXBsZS1idWZmZXJlZFwiLFxuICBcIlVuaXZlcnNhbFwiLFxuICBcIlVwLXNpemVkXCIsXG4gIFwiVXBncmFkYWJsZVwiLFxuICBcIlVzZXItY2VudHJpY1wiLFxuICBcIlVzZXItZnJpZW5kbHlcIixcbiAgXCJWZXJzYXRpbGVcIixcbiAgXCJWaXJ0dWFsXCIsXG4gIFwiVmlzaW9uYXJ5XCIsXG4gIFwiVmlzaW9uLW9yaWVudGVkXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImNsaWNrcy1hbmQtbW9ydGFyXCIsXG4gIFwidmFsdWUtYWRkZWRcIixcbiAgXCJ2ZXJ0aWNhbFwiLFxuICBcInByb2FjdGl2ZVwiLFxuICBcInJvYnVzdFwiLFxuICBcInJldm9sdXRpb25hcnlcIixcbiAgXCJzY2FsYWJsZVwiLFxuICBcImxlYWRpbmctZWRnZVwiLFxuICBcImlubm92YXRpdmVcIixcbiAgXCJpbnR1aXRpdmVcIixcbiAgXCJzdHJhdGVnaWNcIixcbiAgXCJlLWJ1c2luZXNzXCIsXG4gIFwibWlzc2lvbi1jcml0aWNhbFwiLFxuICBcInN0aWNreVwiLFxuICBcIm9uZS10by1vbmVcIixcbiAgXCIyNC83XCIsXG4gIFwiZW5kLXRvLWVuZFwiLFxuICBcImdsb2JhbFwiLFxuICBcIkIyQlwiLFxuICBcIkIyQ1wiLFxuICBcImdyYW51bGFyXCIsXG4gIFwiZnJpY3Rpb25sZXNzXCIsXG4gIFwidmlydHVhbFwiLFxuICBcInZpcmFsXCIsXG4gIFwiZHluYW1pY1wiLFxuICBcIjI0LzM2NVwiLFxuICBcImJlc3Qtb2YtYnJlZWRcIixcbiAgXCJraWxsZXJcIixcbiAgXCJtYWduZXRpY1wiLFxuICBcImJsZWVkaW5nLWVkZ2VcIixcbiAgXCJ3ZWItZW5hYmxlZFwiLFxuICBcImludGVyYWN0aXZlXCIsXG4gIFwiZG90LWNvbVwiLFxuICBcInNleHlcIixcbiAgXCJiYWNrLWVuZFwiLFxuICBcInJlYWwtdGltZVwiLFxuICBcImVmZmljaWVudFwiLFxuICBcImZyb250LWVuZFwiLFxuICBcImRpc3RyaWJ1dGVkXCIsXG4gIFwic2VhbWxlc3NcIixcbiAgXCJleHRlbnNpYmxlXCIsXG4gIFwidHVybi1rZXlcIixcbiAgXCJ3b3JsZC1jbGFzc1wiLFxuICBcIm9wZW4tc291cmNlXCIsXG4gIFwiY3Jvc3MtcGxhdGZvcm1cIixcbiAgXCJjcm9zcy1tZWRpYVwiLFxuICBcInN5bmVyZ2lzdGljXCIsXG4gIFwiYnJpY2tzLWFuZC1jbGlja3NcIixcbiAgXCJvdXQtb2YtdGhlLWJveFwiLFxuICBcImVudGVycHJpc2VcIixcbiAgXCJpbnRlZ3JhdGVkXCIsXG4gIFwiaW1wYWN0ZnVsXCIsXG4gIFwid2lyZWxlc3NcIixcbiAgXCJ0cmFuc3BhcmVudFwiLFxuICBcIm5leHQtZ2VuZXJhdGlvblwiLFxuICBcImN1dHRpbmctZWRnZVwiLFxuICBcInVzZXItY2VudHJpY1wiLFxuICBcInZpc2lvbmFyeVwiLFxuICBcImN1c3RvbWl6ZWRcIixcbiAgXCJ1YmlxdWl0b3VzXCIsXG4gIFwicGx1Zy1hbmQtcGxheVwiLFxuICBcImNvbGxhYm9yYXRpdmVcIixcbiAgXCJjb21wZWxsaW5nXCIsXG4gIFwiaG9saXN0aWNcIixcbiAgXCJyaWNoXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcInN5bmVyZ2llc1wiLFxuICBcIndlYi1yZWFkaW5lc3NcIixcbiAgXCJwYXJhZGlnbXNcIixcbiAgXCJtYXJrZXRzXCIsXG4gIFwicGFydG5lcnNoaXBzXCIsXG4gIFwiaW5mcmFzdHJ1Y3R1cmVzXCIsXG4gIFwicGxhdGZvcm1zXCIsXG4gIFwiaW5pdGlhdGl2ZXNcIixcbiAgXCJjaGFubmVsc1wiLFxuICBcImV5ZWJhbGxzXCIsXG4gIFwiY29tbXVuaXRpZXNcIixcbiAgXCJST0lcIixcbiAgXCJzb2x1dGlvbnNcIixcbiAgXCJlLXRhaWxlcnNcIixcbiAgXCJlLXNlcnZpY2VzXCIsXG4gIFwiYWN0aW9uLWl0ZW1zXCIsXG4gIFwicG9ydGFsc1wiLFxuICBcIm5pY2hlc1wiLFxuICBcInRlY2hub2xvZ2llc1wiLFxuICBcImNvbnRlbnRcIixcbiAgXCJ2b3J0YWxzXCIsXG4gIFwic3VwcGx5LWNoYWluc1wiLFxuICBcImNvbnZlcmdlbmNlXCIsXG4gIFwicmVsYXRpb25zaGlwc1wiLFxuICBcImFyY2hpdGVjdHVyZXNcIixcbiAgXCJpbnRlcmZhY2VzXCIsXG4gIFwiZS1tYXJrZXRzXCIsXG4gIFwiZS1jb21tZXJjZVwiLFxuICBcInN5c3RlbXNcIixcbiAgXCJiYW5kd2lkdGhcIixcbiAgXCJpbmZvbWVkaWFyaWVzXCIsXG4gIFwibW9kZWxzXCIsXG4gIFwibWluZHNoYXJlXCIsXG4gIFwiZGVsaXZlcmFibGVzXCIsXG4gIFwidXNlcnNcIixcbiAgXCJzY2hlbWFzXCIsXG4gIFwibmV0d29ya3NcIixcbiAgXCJhcHBsaWNhdGlvbnNcIixcbiAgXCJtZXRyaWNzXCIsXG4gIFwiZS1idXNpbmVzc1wiLFxuICBcImZ1bmN0aW9uYWxpdGllc1wiLFxuICBcImV4cGVyaWVuY2VzXCIsXG4gIFwid2ViIHNlcnZpY2VzXCIsXG4gIFwibWV0aG9kb2xvZ2llc1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJpbXBsZW1lbnRcIixcbiAgXCJ1dGlsaXplXCIsXG4gIFwiaW50ZWdyYXRlXCIsXG4gIFwic3RyZWFtbGluZVwiLFxuICBcIm9wdGltaXplXCIsXG4gIFwiZXZvbHZlXCIsXG4gIFwidHJhbnNmb3JtXCIsXG4gIFwiZW1icmFjZVwiLFxuICBcImVuYWJsZVwiLFxuICBcIm9yY2hlc3RyYXRlXCIsXG4gIFwibGV2ZXJhZ2VcIixcbiAgXCJyZWludmVudFwiLFxuICBcImFnZ3JlZ2F0ZVwiLFxuICBcImFyY2hpdGVjdFwiLFxuICBcImVuaGFuY2VcIixcbiAgXCJpbmNlbnRpdml6ZVwiLFxuICBcIm1vcnBoXCIsXG4gIFwiZW1wb3dlclwiLFxuICBcImVudmlzaW9uZWVyXCIsXG4gIFwibW9uZXRpemVcIixcbiAgXCJoYXJuZXNzXCIsXG4gIFwiZmFjaWxpdGF0ZVwiLFxuICBcInNlaXplXCIsXG4gIFwiZGlzaW50ZXJtZWRpYXRlXCIsXG4gIFwic3luZXJnaXplXCIsXG4gIFwic3RyYXRlZ2l6ZVwiLFxuICBcImRlcGxveVwiLFxuICBcImJyYW5kXCIsXG4gIFwiZ3Jvd1wiLFxuICBcInRhcmdldFwiLFxuICBcInN5bmRpY2F0ZVwiLFxuICBcInN5bnRoZXNpemVcIixcbiAgXCJkZWxpdmVyXCIsXG4gIFwibWVzaFwiLFxuICBcImluY3ViYXRlXCIsXG4gIFwiZW5nYWdlXCIsXG4gIFwibWF4aW1pemVcIixcbiAgXCJiZW5jaG1hcmtcIixcbiAgXCJleHBlZGl0ZVwiLFxuICBcInJlaW50ZXJtZWRpYXRlXCIsXG4gIFwid2hpdGVib2FyZFwiLFxuICBcInZpc3VhbGl6ZVwiLFxuICBcInJlcHVycG9zZVwiLFxuICBcImlubm92YXRlXCIsXG4gIFwic2NhbGVcIixcbiAgXCJ1bmxlYXNoXCIsXG4gIFwiZHJpdmVcIixcbiAgXCJleHRlbmRcIixcbiAgXCJlbmdpbmVlclwiLFxuICBcInJldm9sdXRpb25pemVcIixcbiAgXCJnZW5lcmF0ZVwiLFxuICBcImV4cGxvaXRcIixcbiAgXCJ0cmFuc2l0aW9uXCIsXG4gIFwiZS1lbmFibGVcIixcbiAgXCJpdGVyYXRlXCIsXG4gIFwiY3VsdGl2YXRlXCIsXG4gIFwibWF0cml4XCIsXG4gIFwicHJvZHVjdGl6ZVwiLFxuICBcInJlZGVmaW5lXCIsXG4gIFwicmVjb250ZXh0dWFsaXplXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjI0IGhvdXJcIixcbiAgXCIyNC83XCIsXG4gIFwiM3JkIGdlbmVyYXRpb25cIixcbiAgXCI0dGggZ2VuZXJhdGlvblwiLFxuICBcIjV0aCBnZW5lcmF0aW9uXCIsXG4gIFwiNnRoIGdlbmVyYXRpb25cIixcbiAgXCJhY3R1YXRpbmdcIixcbiAgXCJhbmFseXppbmdcIixcbiAgXCJhc3ltbWV0cmljXCIsXG4gIFwiYXN5bmNocm9ub3VzXCIsXG4gIFwiYXR0aXR1ZGUtb3JpZW50ZWRcIixcbiAgXCJiYWNrZ3JvdW5kXCIsXG4gIFwiYmFuZHdpZHRoLW1vbml0b3JlZFwiLFxuICBcImJpLWRpcmVjdGlvbmFsXCIsXG4gIFwiYmlmdXJjYXRlZFwiLFxuICBcImJvdHRvbS1saW5lXCIsXG4gIFwiY2xlYXItdGhpbmtpbmdcIixcbiAgXCJjbGllbnQtZHJpdmVuXCIsXG4gIFwiY2xpZW50LXNlcnZlclwiLFxuICBcImNvaGVyZW50XCIsXG4gIFwiY29oZXNpdmVcIixcbiAgXCJjb21wb3NpdGVcIixcbiAgXCJjb250ZXh0LXNlbnNpdGl2ZVwiLFxuICBcImNvbnRleHR1YWxseS1iYXNlZFwiLFxuICBcImNvbnRlbnQtYmFzZWRcIixcbiAgXCJkZWRpY2F0ZWRcIixcbiAgXCJkZW1hbmQtZHJpdmVuXCIsXG4gIFwiZGlkYWN0aWNcIixcbiAgXCJkaXJlY3Rpb25hbFwiLFxuICBcImRpc2NyZXRlXCIsXG4gIFwiZGlzaW50ZXJtZWRpYXRlXCIsXG4gIFwiZHluYW1pY1wiLFxuICBcImVjby1jZW50cmljXCIsXG4gIFwiZW1wb3dlcmluZ1wiLFxuICBcImVuY29tcGFzc2luZ1wiLFxuICBcImV2ZW4ta2VlbGVkXCIsXG4gIFwiZXhlY3V0aXZlXCIsXG4gIFwiZXhwbGljaXRcIixcbiAgXCJleHVkaW5nXCIsXG4gIFwiZmF1bHQtdG9sZXJhbnRcIixcbiAgXCJmb3JlZ3JvdW5kXCIsXG4gIFwiZnJlc2gtdGhpbmtpbmdcIixcbiAgXCJmdWxsLXJhbmdlXCIsXG4gIFwiZ2xvYmFsXCIsXG4gIFwiZ3JpZC1lbmFibGVkXCIsXG4gIFwiaGV1cmlzdGljXCIsXG4gIFwiaGlnaC1sZXZlbFwiLFxuICBcImhvbGlzdGljXCIsXG4gIFwiaG9tb2dlbmVvdXNcIixcbiAgXCJodW1hbi1yZXNvdXJjZVwiLFxuICBcImh5YnJpZFwiLFxuICBcImltcGFjdGZ1bFwiLFxuICBcImluY3JlbWVudGFsXCIsXG4gIFwiaW50YW5naWJsZVwiLFxuICBcImludGVyYWN0aXZlXCIsXG4gIFwiaW50ZXJtZWRpYXRlXCIsXG4gIFwibGVhZGluZyBlZGdlXCIsXG4gIFwibG9jYWxcIixcbiAgXCJsb2dpc3RpY2FsXCIsXG4gIFwibWF4aW1pemVkXCIsXG4gIFwibWV0aG9kaWNhbFwiLFxuICBcIm1pc3Npb24tY3JpdGljYWxcIixcbiAgXCJtb2JpbGVcIixcbiAgXCJtb2R1bGFyXCIsXG4gIFwibW90aXZhdGluZ1wiLFxuICBcIm11bHRpbWVkaWFcIixcbiAgXCJtdWx0aS1zdGF0ZVwiLFxuICBcIm11bHRpLXRhc2tpbmdcIixcbiAgXCJuYXRpb25hbFwiLFxuICBcIm5lZWRzLWJhc2VkXCIsXG4gIFwibmV1dHJhbFwiLFxuICBcIm5leHQgZ2VuZXJhdGlvblwiLFxuICBcIm5vbi12b2xhdGlsZVwiLFxuICBcIm9iamVjdC1vcmllbnRlZFwiLFxuICBcIm9wdGltYWxcIixcbiAgXCJvcHRpbWl6aW5nXCIsXG4gIFwicmFkaWNhbFwiLFxuICBcInJlYWwtdGltZVwiLFxuICBcInJlY2lwcm9jYWxcIixcbiAgXCJyZWdpb25hbFwiLFxuICBcInJlc3BvbnNpdmVcIixcbiAgXCJzY2FsYWJsZVwiLFxuICBcInNlY29uZGFyeVwiLFxuICBcInNvbHV0aW9uLW9yaWVudGVkXCIsXG4gIFwic3RhYmxlXCIsXG4gIFwic3RhdGljXCIsXG4gIFwic3lzdGVtYXRpY1wiLFxuICBcInN5c3RlbWljXCIsXG4gIFwic3lzdGVtLXdvcnRoeVwiLFxuICBcInRhbmdpYmxlXCIsXG4gIFwidGVydGlhcnlcIixcbiAgXCJ0cmFuc2l0aW9uYWxcIixcbiAgXCJ1bmlmb3JtXCIsXG4gIFwidXB3YXJkLXRyZW5kaW5nXCIsXG4gIFwidXNlci1mYWNpbmdcIixcbiAgXCJ2YWx1ZS1hZGRlZFwiLFxuICBcIndlYi1lbmFibGVkXCIsXG4gIFwid2VsbC1tb2R1bGF0ZWRcIixcbiAgXCJ6ZXJvIGFkbWluaXN0cmF0aW9uXCIsXG4gIFwiemVybyBkZWZlY3RcIixcbiAgXCJ6ZXJvIHRvbGVyYW5jZVwiXG5dO1xuIiwidmFyIGNvbXBhbnkgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gY29tcGFueTtcbmNvbXBhbnkuc3VmZml4ID0gcmVxdWlyZShcIi4vc3VmZml4XCIpO1xuY29tcGFueS5hZGplY3RpdmUgPSByZXF1aXJlKFwiLi9hZGplY3RpdmVcIik7XG5jb21wYW55LmRlc2NyaXB0b3IgPSByZXF1aXJlKFwiLi9kZXNjcmlwdG9yXCIpO1xuY29tcGFueS5ub3VuID0gcmVxdWlyZShcIi4vbm91blwiKTtcbmNvbXBhbnkuYnNfdmVyYiA9IHJlcXVpcmUoXCIuL2JzX3ZlcmJcIik7XG5jb21wYW55LmJzX2FkamVjdGl2ZSA9IHJlcXVpcmUoXCIuL2JzX2FkamVjdGl2ZVwiKTtcbmNvbXBhbnkuYnNfbm91biA9IHJlcXVpcmUoXCIuL2JzX25vdW5cIik7XG5jb21wYW55Lm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje05hbWUubGFzdF9uYW1lfSAje3N1ZmZpeH1cIixcbiAgXCIje05hbWUubGFzdF9uYW1lfS0je05hbWUubGFzdF9uYW1lfVwiLFxuICBcIiN7TmFtZS5sYXN0X25hbWV9LCAje05hbWUubGFzdF9uYW1lfSBhbmQgI3tOYW1lLmxhc3RfbmFtZX1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYWJpbGl0eVwiLFxuICBcImFjY2Vzc1wiLFxuICBcImFkYXB0ZXJcIixcbiAgXCJhbGdvcml0aG1cIixcbiAgXCJhbGxpYW5jZVwiLFxuICBcImFuYWx5emVyXCIsXG4gIFwiYXBwbGljYXRpb25cIixcbiAgXCJhcHByb2FjaFwiLFxuICBcImFyY2hpdGVjdHVyZVwiLFxuICBcImFyY2hpdmVcIixcbiAgXCJhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLFxuICBcImFycmF5XCIsXG4gIFwiYXR0aXR1ZGVcIixcbiAgXCJiZW5jaG1hcmtcIixcbiAgXCJidWRnZXRhcnkgbWFuYWdlbWVudFwiLFxuICBcImNhcGFiaWxpdHlcIixcbiAgXCJjYXBhY2l0eVwiLFxuICBcImNoYWxsZW5nZVwiLFxuICBcImNpcmN1aXRcIixcbiAgXCJjb2xsYWJvcmF0aW9uXCIsXG4gIFwiY29tcGxleGl0eVwiLFxuICBcImNvbmNlcHRcIixcbiAgXCJjb25nbG9tZXJhdGlvblwiLFxuICBcImNvbnRpbmdlbmN5XCIsXG4gIFwiY29yZVwiLFxuICBcImN1c3RvbWVyIGxveWFsdHlcIixcbiAgXCJkYXRhYmFzZVwiLFxuICBcImRhdGEtd2FyZWhvdXNlXCIsXG4gIFwiZGVmaW5pdGlvblwiLFxuICBcImVtdWxhdGlvblwiLFxuICBcImVuY29kaW5nXCIsXG4gIFwiZW5jcnlwdGlvblwiLFxuICBcImV4dHJhbmV0XCIsXG4gIFwiZmlybXdhcmVcIixcbiAgXCJmbGV4aWJpbGl0eVwiLFxuICBcImZvY3VzIGdyb3VwXCIsXG4gIFwiZm9yZWNhc3RcIixcbiAgXCJmcmFtZVwiLFxuICBcImZyYW1ld29ya1wiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwiZnVuY3Rpb25hbGl0aWVzXCIsXG4gIFwiR3JhcGhpYyBJbnRlcmZhY2VcIixcbiAgXCJncm91cHdhcmVcIixcbiAgXCJHcmFwaGljYWwgVXNlciBJbnRlcmZhY2VcIixcbiAgXCJoYXJkd2FyZVwiLFxuICBcImhlbHAtZGVza1wiLFxuICBcImhpZXJhcmNoeVwiLFxuICBcImh1YlwiLFxuICBcImltcGxlbWVudGF0aW9uXCIsXG4gIFwiaW5mby1tZWRpYXJpZXNcIixcbiAgXCJpbmZyYXN0cnVjdHVyZVwiLFxuICBcImluaXRpYXRpdmVcIixcbiAgXCJpbnN0YWxsYXRpb25cIixcbiAgXCJpbnN0cnVjdGlvbiBzZXRcIixcbiAgXCJpbnRlcmZhY2VcIixcbiAgXCJpbnRlcm5ldCBzb2x1dGlvblwiLFxuICBcImludHJhbmV0XCIsXG4gIFwia25vd2xlZGdlIHVzZXJcIixcbiAgXCJrbm93bGVkZ2UgYmFzZVwiLFxuICBcImxvY2FsIGFyZWEgbmV0d29ya1wiLFxuICBcImxldmVyYWdlXCIsXG4gIFwibWF0cmljZXNcIixcbiAgXCJtYXRyaXhcIixcbiAgXCJtZXRob2RvbG9neVwiLFxuICBcIm1pZGRsZXdhcmVcIixcbiAgXCJtaWdyYXRpb25cIixcbiAgXCJtb2RlbFwiLFxuICBcIm1vZGVyYXRvclwiLFxuICBcIm1vbml0b3JpbmdcIixcbiAgXCJtb3JhdG9yaXVtXCIsXG4gIFwibmV1cmFsLW5ldFwiLFxuICBcIm9wZW4gYXJjaGl0ZWN0dXJlXCIsXG4gIFwib3BlbiBzeXN0ZW1cIixcbiAgXCJvcmNoZXN0cmF0aW9uXCIsXG4gIFwicGFyYWRpZ21cIixcbiAgXCJwYXJhbGxlbGlzbVwiLFxuICBcInBvbGljeVwiLFxuICBcInBvcnRhbFwiLFxuICBcInByaWNpbmcgc3RydWN0dXJlXCIsXG4gIFwicHJvY2VzcyBpbXByb3ZlbWVudFwiLFxuICBcInByb2R1Y3RcIixcbiAgXCJwcm9kdWN0aXZpdHlcIixcbiAgXCJwcm9qZWN0XCIsXG4gIFwicHJvamVjdGlvblwiLFxuICBcInByb3RvY29sXCIsXG4gIFwic2VjdXJlZCBsaW5lXCIsXG4gIFwic2VydmljZS1kZXNrXCIsXG4gIFwic29mdHdhcmVcIixcbiAgXCJzb2x1dGlvblwiLFxuICBcInN0YW5kYXJkaXphdGlvblwiLFxuICBcInN0cmF0ZWd5XCIsXG4gIFwic3RydWN0dXJlXCIsXG4gIFwic3VjY2Vzc1wiLFxuICBcInN1cGVyc3RydWN0dXJlXCIsXG4gIFwic3VwcG9ydFwiLFxuICBcInN5bmVyZ3lcIixcbiAgXCJzeXN0ZW0gZW5naW5lXCIsXG4gIFwidGFzay1mb3JjZVwiLFxuICBcInRocm91Z2hwdXRcIixcbiAgXCJ0aW1lLWZyYW1lXCIsXG4gIFwidG9vbHNldFwiLFxuICBcInV0aWxpc2F0aW9uXCIsXG4gIFwid2Vic2l0ZVwiLFxuICBcIndvcmtmb3JjZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJJbmNcIixcbiAgXCJhbmQgU29uc1wiLFxuICBcIkxMQ1wiLFxuICBcIkdyb3VwXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi8zNCMjLSMjIyMjIy0jIyMjTC9cIixcbiAgXCIvMzcjIy0jIyMjIyMtIyMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi8zMFswLTVdIy0jIyMjIyMtIyMjTC9cIixcbiAgXCIvMzY4Iy0jIyMjIyMtIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzYwMTEtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY1IyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY0WzQtOV0jLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82MDExLTYyIyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY1IyMtNjIjIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjRbNC05XSMtNjIjIy0jIyMjLSMjIyMtIyMjTC9cIlxuXTtcbiIsInZhciBjcmVkaXRfY2FyZCA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBjcmVkaXRfY2FyZDtcbmNyZWRpdF9jYXJkLnZpc2EgPSByZXF1aXJlKFwiLi92aXNhXCIpO1xuY3JlZGl0X2NhcmQubWFzdGVyY2FyZCA9IHJlcXVpcmUoXCIuL21hc3RlcmNhcmRcIik7XG5jcmVkaXRfY2FyZC5kaXNjb3ZlciA9IHJlcXVpcmUoXCIuL2Rpc2NvdmVyXCIpO1xuY3JlZGl0X2NhcmQuYW1lcmljYW5fZXhwcmVzcyA9IHJlcXVpcmUoXCIuL2FtZXJpY2FuX2V4cHJlc3NcIik7XG5jcmVkaXRfY2FyZC5kaW5lcnNfY2x1YiA9IHJlcXVpcmUoXCIuL2RpbmVyc19jbHViXCIpO1xuY3JlZGl0X2NhcmQuamNiID0gcmVxdWlyZShcIi4vamNiXCIpO1xuY3JlZGl0X2NhcmQuc3dpdGNoID0gcmVxdWlyZShcIi4vc3dpdGNoXCIpO1xuY3JlZGl0X2NhcmQuc29sbyA9IHJlcXVpcmUoXCIuL3NvbG9cIik7XG5jcmVkaXRfY2FyZC5tYWVzdHJvID0gcmVxdWlyZShcIi4vbWFlc3Ryb1wiKTtcbmNyZWRpdF9jYXJkLmxhc2VyID0gcmVxdWlyZShcIi4vbGFzZXJcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi8zNTI4LSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi8zNTI5LSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi8zNVszLThdIy0jIyMjLSMjIyMtIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzYzMDQjIyMjIyMjIyMjI0wvXCIsXG4gIFwiLzY3MDYjIyMjIyMjIyMjI0wvXCIsXG4gIFwiLzY3NzEjIyMjIyMjIyMjI0wvXCIsXG4gIFwiLzY3MDkjIyMjIyMjIyMjI0wvXCIsXG4gIFwiLzYzMDQjIyMjIyMjIyN7NSw2fUwvXCIsXG4gIFwiLzY3MDYjIyMjIyMjIyN7NSw2fUwvXCIsXG4gIFwiLzY3NzEjIyMjIyMjIyN7NSw2fUwvXCIsXG4gIFwiLzY3MDkjIyMjIyMjIyN7NSw2fUwvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi81MCN7OSwxNn1ML1wiLFxuICBcIi81WzYtOF0jezksMTZ9TC9cIixcbiAgXCIvNTYjI3s5LDE2fUwvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi81WzEtNV0jIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjc3MS04OSMjLSMjIyMtIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzY3NjctIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY3NjctIyMjIy0jIyMjLSMjIyMtI0wvXCIsXG4gIFwiLzY3NjctIyMjIy0jIyMjLSMjIyMtIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNjc1OS0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjc1OS0jIyMjLSMjIyMtIyMjIy0jTC9cIixcbiAgXCIvNjc1OS0jIyMjLSMjIyMtIyMjIy0jI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi80IyMjIyMjIyMjIyNML1wiLFxuICBcIi80IyMjLSMjIyMtIyMjIy0jIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJ1dGY4X3VuaWNvZGVfY2lcIixcbiAgXCJ1dGY4X2dlbmVyYWxfY2lcIixcbiAgXCJ1dGY4X2JpblwiLFxuICBcImFzY2lpX2JpblwiLFxuICBcImFzY2lpX2dlbmVyYWxfY2lcIixcbiAgXCJjcDEyNTBfYmluXCIsXG4gIFwiY3AxMjUwX2dlbmVyYWxfY2lcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaWRcIixcbiAgXCJ0aXRsZVwiLFxuICBcIm5hbWVcIixcbiAgXCJlbWFpbFwiLFxuICBcInBob25lXCIsXG4gIFwidG9rZW5cIixcbiAgXCJncm91cFwiLFxuICBcImNhdGVnb3J5XCIsXG4gIFwicGFzc3dvcmRcIixcbiAgXCJjb21tZW50XCIsXG4gIFwiYXZhdGFyXCIsXG4gIFwic3RhdHVzXCIsXG4gIFwiY3JlYXRlZEF0XCIsXG4gIFwidXBkYXRlZEF0XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIklubm9EQlwiLFxuICBcIk15SVNBTVwiLFxuICBcIk1FTU9SWVwiLFxuICBcIkNTVlwiLFxuICBcIkJMQUNLSE9MRVwiLFxuICBcIkFSQ0hJVkVcIlxuXTtcbiIsInZhciBkYXRhYmFzZSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBkYXRhYmFzZTtcbmRhdGFiYXNlLmNvbGxhdGlvbiA9IHJlcXVpcmUoXCIuL2NvbGxhdGlvblwiKTtcbmRhdGFiYXNlLmNvbHVtbiA9IHJlcXVpcmUoXCIuL2NvbHVtblwiKTtcbmRhdGFiYXNlLmVuZ2luZSA9IHJlcXVpcmUoXCIuL2VuZ2luZVwiKTtcbmRhdGFiYXNlLnR5cGUgPSByZXF1aXJlKFwiLi90eXBlXCIpOyIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaW50XCIsXG4gIFwidmFyY2hhclwiLFxuICBcInRleHRcIixcbiAgXCJkYXRlXCIsXG4gIFwiZGF0ZXRpbWVcIixcbiAgXCJ0aW55aW50XCIsXG4gIFwidGltZVwiLFxuICBcInRpbWVzdGFtcFwiLFxuICBcInNtYWxsaW50XCIsXG4gIFwibWVkaXVtaW50XCIsXG4gIFwiYmlnaW50XCIsXG4gIFwiZGVjaW1hbFwiLFxuICBcImZsb2F0XCIsXG4gIFwiZG91YmxlXCIsXG4gIFwicmVhbFwiLFxuICBcImJpdFwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJzZXJpYWxcIixcbiAgXCJibG9iXCIsXG4gIFwiYmluYXJ5XCIsXG4gIFwiZW51bVwiLFxuICBcInNldFwiLFxuICBcImdlb21ldHJ5XCIsXG4gIFwicG9pbnRcIlxuXTtcbiIsInZhciBkYXRlID0ge307XG5tb2R1bGVbXCJleHBvcnRzXCJdID0gZGF0ZTtcbmRhdGUubW9udGggPSByZXF1aXJlKFwiLi9tb250aFwiKTtcbmRhdGUud2Vla2RheSA9IHJlcXVpcmUoXCIuL3dlZWtkYXlcIik7XG4iLCIvLyBTb3VyY2U6IGh0dHA6Ly91bmljb2RlLm9yZy9jbGRyL3RyYWMvYnJvd3Nlci90YWdzL3JlbGVhc2UtMjcvY29tbW9uL21haW4vZW4ueG1sI0wxNzk5XG5tb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICB3aWRlOiBbXG4gICAgXCJKYW51YXJ5XCIsXG4gICAgXCJGZWJydWFyeVwiLFxuICAgIFwiTWFyY2hcIixcbiAgICBcIkFwcmlsXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1bmVcIixcbiAgICBcIkp1bHlcIixcbiAgICBcIkF1Z3VzdFwiLFxuICAgIFwiU2VwdGVtYmVyXCIsXG4gICAgXCJPY3RvYmVyXCIsXG4gICAgXCJOb3ZlbWJlclwiLFxuICAgIFwiRGVjZW1iZXJcIlxuICBdLFxuICAvLyBQcm9wZXJ0eSBcIndpZGVfY29udGV4dFwiIGlzIG9wdGlvbmFsLCBpZiBub3Qgc2V0IHRoZW4gXCJ3aWRlXCIgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgLy8gSXQgaXMgdXNlZCB0byBzcGVjaWZ5IGEgd29yZCBpbiBjb250ZXh0LCB3aGljaCBtYXkgZGlmZmVyIGZyb20gYSBzdGFuZC1hbG9uZSB3b3JkXG4gIHdpZGVfY29udGV4dDogW1xuICAgIFwiSmFudWFyeVwiLFxuICAgIFwiRmVicnVhcnlcIixcbiAgICBcIk1hcmNoXCIsXG4gICAgXCJBcHJpbFwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5lXCIsXG4gICAgXCJKdWx5XCIsXG4gICAgXCJBdWd1c3RcIixcbiAgICBcIlNlcHRlbWJlclwiLFxuICAgIFwiT2N0b2JlclwiLFxuICAgIFwiTm92ZW1iZXJcIixcbiAgICBcIkRlY2VtYmVyXCJcbiAgXSxcbiAgYWJicjogW1xuICAgIFwiSmFuXCIsXG4gICAgXCJGZWJcIixcbiAgICBcIk1hclwiLFxuICAgIFwiQXByXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1blwiLFxuICAgIFwiSnVsXCIsXG4gICAgXCJBdWdcIixcbiAgICBcIlNlcFwiLFxuICAgIFwiT2N0XCIsXG4gICAgXCJOb3ZcIixcbiAgICBcIkRlY1wiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwiYWJicl9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcImFiYnJcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgYWJicl9jb250ZXh0OiBbXG4gICAgXCJKYW5cIixcbiAgICBcIkZlYlwiLFxuICAgIFwiTWFyXCIsXG4gICAgXCJBcHJcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuXCIsXG4gICAgXCJKdWxcIixcbiAgICBcIkF1Z1wiLFxuICAgIFwiU2VwXCIsXG4gICAgXCJPY3RcIixcbiAgICBcIk5vdlwiLFxuICAgIFwiRGVjXCJcbiAgXVxufTtcbiIsIi8vIFNvdXJjZTogaHR0cDovL3VuaWNvZGUub3JnL2NsZHIvdHJhYy9icm93c2VyL3RhZ3MvcmVsZWFzZS0yNy9jb21tb24vbWFpbi9lbi54bWwjTDE4NDdcbm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIHdpZGU6IFtcbiAgICBcIlN1bmRheVwiLFxuICAgIFwiTW9uZGF5XCIsXG4gICAgXCJUdWVzZGF5XCIsXG4gICAgXCJXZWRuZXNkYXlcIixcbiAgICBcIlRodXJzZGF5XCIsXG4gICAgXCJGcmlkYXlcIixcbiAgICBcIlNhdHVyZGF5XCJcbiAgXSxcbiAgLy8gUHJvcGVydHkgXCJ3aWRlX2NvbnRleHRcIiBpcyBvcHRpb25hbCwgaWYgbm90IHNldCB0aGVuIFwid2lkZVwiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gIC8vIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdvcmQgaW4gY29udGV4dCwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIGEgc3RhbmQtYWxvbmUgd29yZFxuICB3aWRlX2NvbnRleHQ6IFtcbiAgICBcIlN1bmRheVwiLFxuICAgIFwiTW9uZGF5XCIsXG4gICAgXCJUdWVzZGF5XCIsXG4gICAgXCJXZWRuZXNkYXlcIixcbiAgICBcIlRodXJzZGF5XCIsXG4gICAgXCJGcmlkYXlcIixcbiAgICBcIlNhdHVyZGF5XCJcbiAgXSxcbiAgYWJicjogW1xuICAgIFwiU3VuXCIsXG4gICAgXCJNb25cIixcbiAgICBcIlR1ZVwiLFxuICAgIFwiV2VkXCIsXG4gICAgXCJUaHVcIixcbiAgICBcIkZyaVwiLFxuICAgIFwiU2F0XCJcbiAgXSxcbiAgLy8gUHJvcGVydHkgXCJhYmJyX2NvbnRleHRcIiBpcyBvcHRpb25hbCwgaWYgbm90IHNldCB0aGVuIFwiYWJiclwiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gIC8vIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdvcmQgaW4gY29udGV4dCwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIGEgc3RhbmQtYWxvbmUgd29yZFxuICBhYmJyX2NvbnRleHQ6IFtcbiAgICBcIlN1blwiLFxuICAgIFwiTW9uXCIsXG4gICAgXCJUdWVcIixcbiAgICBcIldlZFwiLFxuICAgIFwiVGh1XCIsXG4gICAgXCJGcmlcIixcbiAgICBcIlNhdFwiXG4gIF1cbn07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkNoZWNraW5nXCIsXG4gIFwiU2F2aW5nc1wiLFxuICBcIk1vbmV5IE1hcmtldFwiLFxuICBcIkludmVzdG1lbnRcIixcbiAgXCJIb21lIExvYW5cIixcbiAgXCJDcmVkaXQgQ2FyZFwiLFxuICBcIkF1dG8gTG9hblwiLFxuICBcIlBlcnNvbmFsIExvYW5cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiVUFFIERpcmhhbVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQUVEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkFmZ2hhbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIkFGTlwiLFxuICAgIFwic3ltYm9sXCI6IFwi2ItcIlxuICB9LFxuICBcIkxla1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQUxMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMZWtcIlxuICB9LFxuICBcIkFybWVuaWFuIERyYW1cIjoge1xuICAgIFwiY29kZVwiOiBcIkFNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJOZXRoZXJsYW5kcyBBbnRpbGxpYW4gR3VpbGRlclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQU5HXCIsXG4gICAgXCJzeW1ib2xcIjogXCLGklwiXG4gIH0sXG4gIFwiS3dhbnphXCI6IHtcbiAgICBcImNvZGVcIjogXCJBT0FcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQXJnZW50aW5lIFBlc29cIjoge1xuICAgIFwiY29kZVwiOiBcIkFSU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQXVzdHJhbGlhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkFVRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQXJ1YmFuIEd1aWxkZXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkFXR1wiLFxuICAgIFwic3ltYm9sXCI6IFwixpJcIlxuICB9LFxuICBcIkF6ZXJiYWlqYW5pYW4gTWFuYXRcIjoge1xuICAgIFwiY29kZVwiOiBcIkFaTlwiLFxuICAgIFwic3ltYm9sXCI6IFwi0LzQsNC9XCJcbiAgfSxcbiAgXCJDb252ZXJ0aWJsZSBNYXJrc1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkFNXCIsXG4gICAgXCJzeW1ib2xcIjogXCJLTVwiXG4gIH0sXG4gIFwiQmFyYmFkb3MgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCQkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlRha2FcIjoge1xuICAgIFwiY29kZVwiOiBcIkJEVFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCdWxnYXJpYW4gTGV2XCI6IHtcbiAgICBcImNvZGVcIjogXCJCR05cIixcbiAgICBcInN5bWJvbFwiOiBcItC70LJcIlxuICB9LFxuICBcIkJhaHJhaW5pIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCSERcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQnVydW5kaSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQklGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJlcm11ZGlhbiBEb2xsYXIgKGN1c3RvbWFyaWx5IGtub3duIGFzIEJlcm11ZGEgRG9sbGFyKVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQk1EXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJCcnVuZWkgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCTkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkJvbGl2aWFubyBNdmRvbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQk9CIEJPVlwiLFxuICAgIFwic3ltYm9sXCI6IFwiJGJcIlxuICB9LFxuICBcIkJyYXppbGlhbiBSZWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJCUkxcIixcbiAgICBcInN5bWJvbFwiOiBcIlIkXCJcbiAgfSxcbiAgXCJCYWhhbWlhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiUHVsYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQldQXCIsXG4gICAgXCJzeW1ib2xcIjogXCJQXCJcbiAgfSxcbiAgXCJCZWxhcnVzc2lhbiBSdWJsZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQllSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJwLlwiXG4gIH0sXG4gIFwiQmVsaXplIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQlpEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJCWiRcIlxuICB9LFxuICBcIkNhbmFkaWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ0FEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJDb25nb2xlc2UgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkNERlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTd2lzcyBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ0hGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJDSEZcIlxuICB9LFxuICBcIkNoaWxlYW4gUGVzbyBVbmlkYWRlcyBkZSBmb21lbnRvXCI6IHtcbiAgICBcImNvZGVcIjogXCJDTFAgQ0xGXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJZdWFuIFJlbm1pbmJpXCI6IHtcbiAgICBcImNvZGVcIjogXCJDTllcIixcbiAgICBcInN5bWJvbFwiOiBcIsKlXCJcbiAgfSxcbiAgXCJDb2xvbWJpYW4gUGVzbyBVbmlkYWQgZGUgVmFsb3IgUmVhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ09QIENPVVwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQ29zdGEgUmljYW4gQ29sb25cIjoge1xuICAgIFwiY29kZVwiOiBcIkNSQ1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKhXCJcbiAgfSxcbiAgXCJDdWJhbiBQZXNvIFBlc28gQ29udmVydGlibGVcIjoge1xuICAgIFwiY29kZVwiOiBcIkNVUCBDVUNcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCsVwiXG4gIH0sXG4gIFwiQ2FwZSBWZXJkZSBFc2N1ZG9cIjoge1xuICAgIFwiY29kZVwiOiBcIkNWRVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDemVjaCBLb3J1bmFcIjoge1xuICAgIFwiY29kZVwiOiBcIkNaS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiS8SNXCJcbiAgfSxcbiAgXCJEamlib3V0aSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiREpGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkRhbmlzaCBLcm9uZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiREtLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJrclwiXG4gIH0sXG4gIFwiRG9taW5pY2FuIFBlc29cIjoge1xuICAgIFwiY29kZVwiOiBcIkRPUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiUkQkXCJcbiAgfSxcbiAgXCJBbGdlcmlhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRFpEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIktyb29uXCI6IHtcbiAgICBcImNvZGVcIjogXCJFRUtcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRWd5cHRpYW4gUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIkVHUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIk5ha2ZhXCI6IHtcbiAgICBcImNvZGVcIjogXCJFUk5cIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXRoaW9waWFuIEJpcnJcIjoge1xuICAgIFwiY29kZVwiOiBcIkVUQlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvXCI6IHtcbiAgICBcImNvZGVcIjogXCJFVVJcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCrFwiXG4gIH0sXG4gIFwiRmlqaSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkZKRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiRmFsa2xhbmQgSXNsYW5kcyBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRktQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiUG91bmQgU3RlcmxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIkdCUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIkxhcmlcIjoge1xuICAgIFwiY29kZVwiOiBcIkdFTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDZWRpXCI6IHtcbiAgICBcImNvZGVcIjogXCJHSFNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiR2licmFsdGFyIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJHSVBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJEYWxhc2lcIjoge1xuICAgIFwiY29kZVwiOiBcIkdNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJHdWluZWEgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkdORlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJRdWV0emFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJHVFFcIixcbiAgICBcInN5bWJvbFwiOiBcIlFcIlxuICB9LFxuICBcIkd1eWFuYSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkdZRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiSG9uZyBLb25nIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSEtEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJMZW1waXJhXCI6IHtcbiAgICBcImNvZGVcIjogXCJITkxcIixcbiAgICBcInN5bWJvbFwiOiBcIkxcIlxuICB9LFxuICBcIkNyb2F0aWFuIEt1bmFcIjoge1xuICAgIFwiY29kZVwiOiBcIkhSS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia25cIlxuICB9LFxuICBcIkdvdXJkZSBVUyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkhURyBVU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRm9yaW50XCI6IHtcbiAgICBcImNvZGVcIjogXCJIVUZcIixcbiAgICBcInN5bWJvbFwiOiBcIkZ0XCJcbiAgfSxcbiAgXCJSdXBpYWhcIjoge1xuICAgIFwiY29kZVwiOiBcIklEUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiUnBcIlxuICB9LFxuICBcIk5ldyBJc3JhZWxpIFNoZXFlbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSUxTXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqpcIlxuICB9LFxuICBcIkluZGlhbiBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSU5SXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkluZGlhbiBSdXBlZSBOZ3VsdHJ1bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSU5SIEJUTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJJcmFxaSBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSVFEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIklyYW5pYW4gUmlhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSVJSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLvt7xcIlxuICB9LFxuICBcIkljZWxhbmQgS3JvbmFcIjoge1xuICAgIFwiY29kZVwiOiBcIklTS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia3JcIlxuICB9LFxuICBcIkphbWFpY2FuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSk1EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJKJFwiXG4gIH0sXG4gIFwiSm9yZGFuaWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJKT0RcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiWWVuXCI6IHtcbiAgICBcImNvZGVcIjogXCJKUFlcIixcbiAgICBcInN5bWJvbFwiOiBcIsKlXCJcbiAgfSxcbiAgXCJLZW55YW4gU2hpbGxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIktFU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTb21cIjoge1xuICAgIFwiY29kZVwiOiBcIktHU1wiLFxuICAgIFwic3ltYm9sXCI6IFwi0LvQslwiXG4gIH0sXG4gIFwiUmllbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS0hSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLhn5tcIlxuICB9LFxuICBcIkNvbW9ybyBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiS01GXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk5vcnRoIEtvcmVhbiBXb25cIjoge1xuICAgIFwiY29kZVwiOiBcIktQV1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKpXCJcbiAgfSxcbiAgXCJXb25cIjoge1xuICAgIFwiY29kZVwiOiBcIktSV1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKpXCJcbiAgfSxcbiAgXCJLdXdhaXRpIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJLV0RcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ2F5bWFuIElzbGFuZHMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJLWURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlRlbmdlXCI6IHtcbiAgICBcImNvZGVcIjogXCJLWlRcIixcbiAgICBcInN5bWJvbFwiOiBcItC70LJcIlxuICB9LFxuICBcIktpcFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTEFLXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigq1cIlxuICB9LFxuICBcIkxlYmFuZXNlIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJMQlBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJTcmkgTGFua2EgUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIkxLUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJMaWJlcmlhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkxSRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiTGl0aHVhbmlhbiBMaXRhc1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTFRMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMdFwiXG4gIH0sXG4gIFwiTGF0dmlhbiBMYXRzXCI6IHtcbiAgICBcImNvZGVcIjogXCJMVkxcIixcbiAgICBcInN5bWJvbFwiOiBcIkxzXCJcbiAgfSxcbiAgXCJMaWJ5YW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkxZRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNb3JvY2NhbiBEaXJoYW1cIjoge1xuICAgIFwiY29kZVwiOiBcIk1BRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNb2xkb3ZhbiBMZXVcIjoge1xuICAgIFwiY29kZVwiOiBcIk1ETFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNYWxhZ2FzeSBBcmlhcnlcIjoge1xuICAgIFwiY29kZVwiOiBcIk1HQVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJEZW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTUtEXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQtNC10L1cIlxuICB9LFxuICBcIkt5YXRcIjoge1xuICAgIFwiY29kZVwiOiBcIk1NS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJUdWdyaWtcIjoge1xuICAgIFwiY29kZVwiOiBcIk1OVFwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKuXCJcbiAgfSxcbiAgXCJQYXRhY2FcIjoge1xuICAgIFwiY29kZVwiOiBcIk1PUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJPdWd1aXlhXCI6IHtcbiAgICBcImNvZGVcIjogXCJNUk9cIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTWF1cml0aXVzIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJNVVJcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiUnVmaXlhYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVZSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkt3YWNoYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVdLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1leGljYW4gUGVzbyBNZXhpY2FuIFVuaWRhZCBkZSBJbnZlcnNpb24gKFVESSlcIjoge1xuICAgIFwiY29kZVwiOiBcIk1YTiBNWFZcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIk1hbGF5c2lhbiBSaW5nZ2l0XCI6IHtcbiAgICBcImNvZGVcIjogXCJNWVJcIixcbiAgICBcInN5bWJvbFwiOiBcIlJNXCJcbiAgfSxcbiAgXCJNZXRpY2FsXCI6IHtcbiAgICBcImNvZGVcIjogXCJNWk5cIixcbiAgICBcInN5bWJvbFwiOiBcIk1UXCJcbiAgfSxcbiAgXCJOYWlyYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTkdOXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqZcIlxuICB9LFxuICBcIkNvcmRvYmEgT3JvXCI6IHtcbiAgICBcImNvZGVcIjogXCJOSU9cIixcbiAgICBcInN5bWJvbFwiOiBcIkMkXCJcbiAgfSxcbiAgXCJOb3J3ZWdpYW4gS3JvbmVcIjoge1xuICAgIFwiY29kZVwiOiBcIk5PS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia3JcIlxuICB9LFxuICBcIk5lcGFsZXNlIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJOUFJcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiTmV3IFplYWxhbmQgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJOWkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlJpYWwgT21hbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIk9NUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJCYWxib2EgVVMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJQQUIgVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJCLy5cIlxuICB9LFxuICBcIk51ZXZvIFNvbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEVOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJTLy5cIlxuICB9LFxuICBcIktpbmFcIjoge1xuICAgIFwiY29kZVwiOiBcIlBHS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQaGlsaXBwaW5lIFBlc29cIjoge1xuICAgIFwiY29kZVwiOiBcIlBIUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiUGhwXCJcbiAgfSxcbiAgXCJQYWtpc3RhbiBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEtSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIlpsb3R5XCI6IHtcbiAgICBcImNvZGVcIjogXCJQTE5cIixcbiAgICBcInN5bWJvbFwiOiBcInrFglwiXG4gIH0sXG4gIFwiR3VhcmFuaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUFlHXCIsXG4gICAgXCJzeW1ib2xcIjogXCJHc1wiXG4gIH0sXG4gIFwiUWF0YXJpIFJpYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIlFBUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJOZXcgTGV1XCI6IHtcbiAgICBcImNvZGVcIjogXCJST05cIixcbiAgICBcInN5bWJvbFwiOiBcImxlaVwiXG4gIH0sXG4gIFwiU2VyYmlhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUlNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQlNC40L0uXCJcbiAgfSxcbiAgXCJSdXNzaWFuIFJ1YmxlXCI6IHtcbiAgICBcImNvZGVcIjogXCJSVUJcIixcbiAgICBcInN5bWJvbFwiOiBcItGA0YPQsVwiXG4gIH0sXG4gIFwiUndhbmRhIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJSV0ZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU2F1ZGkgUml5YWxcIjoge1xuICAgIFwiY29kZVwiOiBcIlNBUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJTb2xvbW9uIElzbGFuZHMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJTQkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlNleWNoZWxsZXMgUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIlNDUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJTdWRhbmVzZSBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0RHXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlN3ZWRpc2ggS3JvbmFcIjoge1xuICAgIFwiY29kZVwiOiBcIlNFS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia3JcIlxuICB9LFxuICBcIlNpbmdhcG9yZSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNHRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiU2FpbnQgSGVsZW5hIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJTSFBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJMZW9uZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0xMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlNvbWFsaSBTaGlsbGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiU09TXCIsXG4gICAgXCJzeW1ib2xcIjogXCJTXCJcbiAgfSxcbiAgXCJTdXJpbmFtIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1JEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJEb2JyYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1REXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkVsIFNhbHZhZG9yIENvbG9uIFVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1ZDIFVTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiU3lyaWFuIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJTWVBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJMaWxhbmdlbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIlNaTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCYWh0XCI6IHtcbiAgICBcImNvZGVcIjogXCJUSEJcIixcbiAgICBcInN5bWJvbFwiOiBcIuC4v1wiXG4gIH0sXG4gIFwiU29tb25pXCI6IHtcbiAgICBcImNvZGVcIjogXCJUSlNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTWFuYXRcIjoge1xuICAgIFwiY29kZVwiOiBcIlRNVFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJUdW5pc2lhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVE5EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlBhJ2FuZ2FcIjoge1xuICAgIFwiY29kZVwiOiBcIlRPUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJUdXJraXNoIExpcmFcIjoge1xuICAgIFwiY29kZVwiOiBcIlRSWVwiLFxuICAgIFwic3ltYm9sXCI6IFwiVExcIlxuICB9LFxuICBcIlRyaW5pZGFkIGFuZCBUb2JhZ28gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJUVERcIixcbiAgICBcInN5bWJvbFwiOiBcIlRUJFwiXG4gIH0sXG4gIFwiTmV3IFRhaXdhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlRXRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTlQkXCJcbiAgfSxcbiAgXCJUYW56YW5pYW4gU2hpbGxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIlRaU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJIcnl2bmlhXCI6IHtcbiAgICBcImNvZGVcIjogXCJVQUhcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCtFwiXG4gIH0sXG4gIFwiVWdhbmRhIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJVR1hcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVVMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJVU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlBlc28gVXJ1Z3VheW8gVXJ1Z3VheSBQZXNvIGVuIFVuaWRhZGVzIEluZGV4YWRhc1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVVlVIFVZSVwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFVcIlxuICB9LFxuICBcIlV6YmVraXN0YW4gU3VtXCI6IHtcbiAgICBcImNvZGVcIjogXCJVWlNcIixcbiAgICBcInN5bWJvbFwiOiBcItC70LJcIlxuICB9LFxuICBcIkJvbGl2YXIgRnVlcnRlXCI6IHtcbiAgICBcImNvZGVcIjogXCJWRUZcIixcbiAgICBcInN5bWJvbFwiOiBcIkJzXCJcbiAgfSxcbiAgXCJEb25nXCI6IHtcbiAgICBcImNvZGVcIjogXCJWTkRcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCq1wiXG4gIH0sXG4gIFwiVmF0dVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVlVWXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlRhbGFcIjoge1xuICAgIFwiY29kZVwiOiBcIldTVFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDRkEgRnJhbmMgQkVBQ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEFGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlNpbHZlclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEFHXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkdvbGRcIjoge1xuICAgIFwiY29kZVwiOiBcIlhBVVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCb25kIE1hcmtldHMgVW5pdHMgRXVyb3BlYW4gQ29tcG9zaXRlIFVuaXQgKEVVUkNPKVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEJBXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV1cm9wZWFuIE1vbmV0YXJ5IFVuaXQgKEUuTS5VLi02KVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEJCXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV1cm9wZWFuIFVuaXQgb2YgQWNjb3VudCA5KEUuVS5BLi05KVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEJDXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV1cm9wZWFuIFVuaXQgb2YgQWNjb3VudCAxNyhFLlUuQS4tMTcpXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQkRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRWFzdCBDYXJpYmJlYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQ0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlNEUlwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWERSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlVJQy1GcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEZVXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNGQSBGcmFuYyBCQ0VBT1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWE9GXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlBhbGxhZGl1bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFBEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNGUCBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFBGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlBsYXRpbnVtXCI6IHtcbiAgICBcImNvZGVcIjogXCJYUFRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ29kZXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzXCI6IHtcbiAgICBcImNvZGVcIjogXCJYVFNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiWWVtZW5pIFJpYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIllFUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJSYW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJaQVJcIixcbiAgICBcInN5bWJvbFwiOiBcIlJcIlxuICB9LFxuICBcIlJhbmQgTG90aVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWkFSIExTTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJSYW5kIE5hbWliaWEgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJaQVIgTkFEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlphbWJpYW4gS3dhY2hhXCI6IHtcbiAgICBcImNvZGVcIjogXCJaTUtcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiWmltYmFid2UgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJaV0xcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH1cbn07XG4iLCJ2YXIgZmluYW5jZSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBmaW5hbmNlO1xuZmluYW5jZS5hY2NvdW50X3R5cGUgPSByZXF1aXJlKFwiLi9hY2NvdW50X3R5cGVcIik7XG5maW5hbmNlLnRyYW5zYWN0aW9uX3R5cGUgPSByZXF1aXJlKFwiLi90cmFuc2FjdGlvbl90eXBlXCIpO1xuZmluYW5jZS5jdXJyZW5jeSA9IHJlcXVpcmUoXCIuL2N1cnJlbmN5XCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJkZXBvc2l0XCIsXG4gIFwid2l0aGRyYXdhbFwiLFxuICBcInBheW1lbnRcIixcbiAgXCJpbnZvaWNlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlRDUFwiLFxuICBcIkhUVFBcIixcbiAgXCJTRERcIixcbiAgXCJSQU1cIixcbiAgXCJHQlwiLFxuICBcIkNTU1wiLFxuICBcIlNTTFwiLFxuICBcIkFHUFwiLFxuICBcIlNRTFwiLFxuICBcIkZUUFwiLFxuICBcIlBDSVwiLFxuICBcIkFJXCIsXG4gIFwiQURQXCIsXG4gIFwiUlNTXCIsXG4gIFwiWE1MXCIsXG4gIFwiRVhFXCIsXG4gIFwiQ09NXCIsXG4gIFwiSEREXCIsXG4gIFwiVEhYXCIsXG4gIFwiU01UUFwiLFxuICBcIlNNU1wiLFxuICBcIlVTQlwiLFxuICBcIlBOR1wiLFxuICBcIlNBU1wiLFxuICBcIklCXCIsXG4gIFwiU0NTSVwiLFxuICBcIkpTT05cIixcbiAgXCJYU1NcIixcbiAgXCJKQk9EXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImF1eGlsaWFyeVwiLFxuICBcInByaW1hcnlcIixcbiAgXCJiYWNrLWVuZFwiLFxuICBcImRpZ2l0YWxcIixcbiAgXCJvcGVuLXNvdXJjZVwiLFxuICBcInZpcnR1YWxcIixcbiAgXCJjcm9zcy1wbGF0Zm9ybVwiLFxuICBcInJlZHVuZGFudFwiLFxuICBcIm9ubGluZVwiLFxuICBcImhhcHRpY1wiLFxuICBcIm11bHRpLWJ5dGVcIixcbiAgXCJibHVldG9vdGhcIixcbiAgXCJ3aXJlbGVzc1wiLFxuICBcIjEwODBwXCIsXG4gIFwibmV1cmFsXCIsXG4gIFwib3B0aWNhbFwiLFxuICBcInNvbGlkIHN0YXRlXCIsXG4gIFwibW9iaWxlXCJcbl07XG4iLCJ2YXIgaGFja2VyID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGhhY2tlcjtcbmhhY2tlci5hYmJyZXZpYXRpb24gPSByZXF1aXJlKFwiLi9hYmJyZXZpYXRpb25cIik7XG5oYWNrZXIuYWRqZWN0aXZlID0gcmVxdWlyZShcIi4vYWRqZWN0aXZlXCIpO1xuaGFja2VyLm5vdW4gPSByZXF1aXJlKFwiLi9ub3VuXCIpO1xuaGFja2VyLnZlcmIgPSByZXF1aXJlKFwiLi92ZXJiXCIpO1xuaGFja2VyLmluZ3ZlcmIgPSByZXF1aXJlKFwiLi9pbmd2ZXJiXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJiYWNraW5nIHVwXCIsXG4gIFwiYnlwYXNzaW5nXCIsXG4gIFwiaGFja2luZ1wiLFxuICBcIm92ZXJyaWRpbmdcIixcbiAgXCJjb21wcmVzc2luZ1wiLFxuICBcImNvcHlpbmdcIixcbiAgXCJuYXZpZ2F0aW5nXCIsXG4gIFwiaW5kZXhpbmdcIixcbiAgXCJjb25uZWN0aW5nXCIsXG4gIFwiZ2VuZXJhdGluZ1wiLFxuICBcInF1YW50aWZ5aW5nXCIsXG4gIFwiY2FsY3VsYXRpbmdcIixcbiAgXCJzeW50aGVzaXppbmdcIixcbiAgXCJ0cmFuc21pdHRpbmdcIixcbiAgXCJwcm9ncmFtbWluZ1wiLFxuICBcInBhcnNpbmdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZHJpdmVyXCIsXG4gIFwicHJvdG9jb2xcIixcbiAgXCJiYW5kd2lkdGhcIixcbiAgXCJwYW5lbFwiLFxuICBcIm1pY3JvY2hpcFwiLFxuICBcInByb2dyYW1cIixcbiAgXCJwb3J0XCIsXG4gIFwiY2FyZFwiLFxuICBcImFycmF5XCIsXG4gIFwiaW50ZXJmYWNlXCIsXG4gIFwic3lzdGVtXCIsXG4gIFwic2Vuc29yXCIsXG4gIFwiZmlyZXdhbGxcIixcbiAgXCJoYXJkIGRyaXZlXCIsXG4gIFwicGl4ZWxcIixcbiAgXCJhbGFybVwiLFxuICBcImZlZWRcIixcbiAgXCJtb25pdG9yXCIsXG4gIFwiYXBwbGljYXRpb25cIixcbiAgXCJ0cmFuc21pdHRlclwiLFxuICBcImJ1c1wiLFxuICBcImNpcmN1aXRcIixcbiAgXCJjYXBhY2l0b3JcIixcbiAgXCJtYXRyaXhcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYmFjayB1cFwiLFxuICBcImJ5cGFzc1wiLFxuICBcImhhY2tcIixcbiAgXCJvdmVycmlkZVwiLFxuICBcImNvbXByZXNzXCIsXG4gIFwiY29weVwiLFxuICBcIm5hdmlnYXRlXCIsXG4gIFwiaW5kZXhcIixcbiAgXCJjb25uZWN0XCIsXG4gIFwiZ2VuZXJhdGVcIixcbiAgXCJxdWFudGlmeVwiLFxuICBcImNhbGN1bGF0ZVwiLFxuICBcInN5bnRoZXNpemVcIixcbiAgXCJpbnB1dFwiLFxuICBcInRyYW5zbWl0XCIsXG4gIFwicHJvZ3JhbVwiLFxuICBcInJlYm9vdFwiLFxuICBcInBhcnNlXCJcbl07XG4iLCJ2YXIgZW4gPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZW47XG5lbi50aXRsZSA9IFwiRW5nbGlzaFwiO1xuZW4uc2VwYXJhdG9yID0gXCIgJiBcIjtcbmVuLmFkZHJlc3MgPSByZXF1aXJlKFwiLi9hZGRyZXNzXCIpO1xuZW4uY3JlZGl0X2NhcmQgPSByZXF1aXJlKFwiLi9jcmVkaXRfY2FyZFwiKTtcbmVuLmNvbXBhbnkgPSByZXF1aXJlKFwiLi9jb21wYW55XCIpO1xuZW4uaW50ZXJuZXQgPSByZXF1aXJlKFwiLi9pbnRlcm5ldFwiKTtcbmVuLmRhdGFiYXNlID0gcmVxdWlyZShcIi4vZGF0YWJhc2VcIik7XG5lbi5sb3JlbSA9IHJlcXVpcmUoXCIuL2xvcmVtXCIpO1xuZW4ubmFtZSA9IHJlcXVpcmUoXCIuL25hbWVcIik7XG5lbi5waG9uZV9udW1iZXIgPSByZXF1aXJlKFwiLi9waG9uZV9udW1iZXJcIik7XG5lbi5jZWxsX3Bob25lID0gcmVxdWlyZShcIi4vY2VsbF9waG9uZVwiKTtcbmVuLmJ1c2luZXNzID0gcmVxdWlyZShcIi4vYnVzaW5lc3NcIik7XG5lbi5jb21tZXJjZSA9IHJlcXVpcmUoXCIuL2NvbW1lcmNlXCIpO1xuZW4udGVhbSA9IHJlcXVpcmUoXCIuL3RlYW1cIik7XG5lbi5oYWNrZXIgPSByZXF1aXJlKFwiLi9oYWNrZXJcIik7XG5lbi5hcHAgPSByZXF1aXJlKFwiLi9hcHBcIik7XG5lbi5maW5hbmNlID0gcmVxdWlyZShcIi4vZmluYW5jZVwiKTtcbmVuLmRhdGUgPSByZXF1aXJlKFwiLi9kYXRlXCIpO1xuZW4uc3lzdGVtID0gcmVxdWlyZShcIi4vc3lzdGVtXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phcmphbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWhkaWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3ByYXlhZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnV6aW5hdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9Ta3loYXJ0bWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21vc2Nvei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdXJhZmlyZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci85MWJpbGFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lnb3JnYXJ5YmFsZGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FsZWJvZ2Rlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWx5a2hpbnYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9lbGhlbGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1c2hzb2xpdGFyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb3JleXdlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbm93c2hhZGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJldXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG9sZGVud2ViLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hleWltanVhbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW52ZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdW50ZXJkcmVodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2xsZWdlbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlZWpmYW5jaGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHlpc29ubGluZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91bHRyYWdleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mdWNrX3lvdV90d28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRlbGxlY2hhcmxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdGVuZXVwb3B1bGFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FobWV0YWxwYmFsa2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1N0aWV2aXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlcmVtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zdmFsZGFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZ2VsY2ViYWxsb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpZXJyeWtvYmxlbnR6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldGVybGFuZHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2F0YXJpbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VnbG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYW5kY2xheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haG1ldHN1bGVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY29sYXNmb2xsaW90LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pheXJvYmluc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcmVyaXhvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2xhZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaHplbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJramVua2lucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGFpX2xhcnNlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3hkemluZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGFnb29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lkaW90LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pemtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWRlbmdsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXRsdTgyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbW9iZW5zby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92b2Npbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3VpaWlwb250ZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc295amF2aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NoYXVzdGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvbWFzbGF1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1ZpblRob21hcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9NYW5pa1JhdGhlZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYW5nYXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NlbXNoaWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVlbXVucm9lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19zaGFoZWRrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VuZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQmlsbFNLZW5uZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGl2eWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaGhlbXNsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2luZHJlc29yaHVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvZmZlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci85bGVzc29ucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saW51eDI5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0NoYWtpbnRvc2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5hYW1pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvcmVpcmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhZGVlZDkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRrY2xhcmsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVkYnJpZGdlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWxsZWVkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyYWthc2luYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmlpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9CcmlhblB1cmtpc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbG1hcnRpbmhvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1YmxpZW5rby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZhbmtvc2hhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9aYWNoYXJ5Wm9yYmFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RpbW1pbGx3b29kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2h1YXNvcnRpbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFtZW5sZWV0dXJrcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b21hc19qYW5vdXNlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJyaGFhc2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvUnVzc2VsbEJpc2hvcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFqZXNod2FyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NicmFjY28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVybW9ucGFpbnRlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmR1bGxpbmRlbmlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lzYWNvc3RhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cHJiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3lhbG96aGtpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFuZGxlcnZkdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1nYXJ0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fdmljdGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29tbWFkZWxpbWl0ZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm95YmFyYmVydWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXhlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFkYXJiYXRvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mZmJlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zeXJvcGlhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmtpdGluZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmFuZWJsb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmxhc2htdXJwaHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQ2hyaXNGYXJpbmE3OC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWxpb21lZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FzY2hhbXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam1fZGVuaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5vZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2VubnlhZHIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhdHlya28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGluZ3lpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21kcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXJyeXhsaWZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fhcm9uaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raW5kYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJyc3RuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkdWFyZG9zdHVhcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhpbGlwc2l2YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9HYXZpY29JbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFpcmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvaGl4eC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iaWdtYW5jaG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmxha2VzaW1raW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlZWlpby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90anJ1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91YmVyc2NoaXpvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t5bGVmb3VuZHJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NsYXVkaW9ndWdsaWVyaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaXBwbGVtZGsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXhlbnRyaWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pha2Vtb29yZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2FvZWR1bWVkZWlyb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9vcm1pbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVyZXNoZW5rb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2VyeWlsbWF6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hheWRuX3dvb2RzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1ZGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGx1bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZ2F1cmF2X2JhZ2hlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYW1pZWJyaXR0YWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhZGxpdHRsZWR1Y2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGlmYWdvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZ3JvbW92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlbmVmcml0ei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lcndhbmhlc3J5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpZXNlbGxhd3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW1pYWhhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvcmlkaGFuZHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhZW5zZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmV3Y29oZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc21hY3pueS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nb256YWxvcm9iYWluYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYW5kaW5pX20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3lkbGF3cmVuY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2RoYXJyaXNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90Z2Vya2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xld2lzYWluc2xpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFybGllY3dhaXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYmJzY2hpbGxlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mbGV4cnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dGRldGFpbHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFxdWVsd2lsc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcnNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21ybWFydGluZWF1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29wbnNyY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGdoYXJyeWdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21heGltc2VzaHVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3V4YWxleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW1paGFoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYW5wb3J5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYXJ2aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zZW1hcnF1ZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVmZmZpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rcnlzdGFsZmlzdGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xva2VzaF9jb2Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVkYW1pYW5oZGV6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RwbWFjaGFkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mdW53YXRlcmNhdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1vdGh5Y2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXZhbmZpbGlwb3ZiZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waWNhcmQxMDIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY29iYXJib3NhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tyYXNub3VraG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2czZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGVtaWx0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlja2R0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29wZXJhdGluby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idW5naXdhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9odWdvbWFuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb2dvcmFkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kY191c2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvcmFjaW9iZWxsYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TbGFhcE1lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlZXJhZ2l0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lxb25pY2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWx5YV9wZXN0b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmV3YXJyb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Npc2tpbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Rhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9IZW5yeUhvZmZtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmRzYXVuZGVycy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGFtc3h1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N1cmlvdXNvZmZpY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlbWFkcmF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hpZ2FuZ3JhaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvaGV0dGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmlja2ZyYXR0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVubmluZ3NrdWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZHlzb25kZXNpZ25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyZW50b25fY2xhcmtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plbm55c2hlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFkZW5oYW1tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1cnRpbmMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW1hbnJ1emFpbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29yZXloYWdnYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0thcmltbW92ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYXJvbmFsZnJlZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93dHJzbGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaml0YWNoaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVyZWFsbWFydmluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BtZWlzc25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vb29tei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFja3kxNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXNzZWRkeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFuZWh1ZHNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ha211ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9Jc2FyeUFtYWlyYW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FydGh1cmhvbGNvbWJlMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3htb2RlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9laHNhbmRpYXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0x1Y2FzUGVyZGlkYW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhbHQwbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3dhcGxvcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FlbGlmYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wbGJhYmluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1aWxsZW1ib3RpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaW5kYW1fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlbmJ5cmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpYWdvdmVybmV0dGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam1pbGxzcGF5c2JpbGxzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pa2VtYWkyYXdlc29tZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJ2by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWthbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGExZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9iZXJnZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mZWxpcGVjc2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVhMjExMDg3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhcmFuZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaG9veWVuZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJvdmVmdW5jdGlvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wY3JpZGVzYWdhaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFuZG9tbGllcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9CcnlhbkhvcnNleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXlrZW5uZXRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhaHBhcnJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsbHRoaW5nc3NtaXR0eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW52ZXJub24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmV3ZWlucmVpY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW5jcmVhc2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFsdmFyYWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx4bmRydXN0aW5vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3V1Zi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vcmt1bmNheWxhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9BTV9LbjIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VhcnBpeGVscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXNzYW1vbG9neS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aW1hcmV0aG9tYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29zbWFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1NVTGlpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcmphbWVzbm9ibGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2lsdmFubXVobGVtYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYW5lSXhELzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hY2hvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3lpZ2l0cGluYXJiYXNpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1enp1c2Jvcm5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fhcm9ua3doaXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JtbGV3aXN1ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9naWFuY2FybG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25iaXJja2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rfbm55X21fY2hlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZGlkb25hdG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXRhcmlib3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJvdGFwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcmFsZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHNkZXNpZ251ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdWR3aWN6YWtwYXdlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZW1hbmphaXZhbm92aWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsdWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FobWFkYWptaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92b3ZrYXNvbG92ZXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FtZ3JvdmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlcmllbnpvNzc3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvbmF0aGFuc2ltbW9ucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWxzb25qb3ljZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TMHVmaTRuMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94dG9waGVycGF1bC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vYWt0cmVlbWVkaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmF0ZXNjaHVsdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmluZGluZ2plbm55LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hbWFua3JlYXRpdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50b255em90b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2Vfc29jaWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlZWhhbWJsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc29saWRfY29sb3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJlbGNhYmFucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYmlsZGVyYmFjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ra3VzYWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9yZHl2ZGJvb20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybG9zZ2F2aW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlY2hraW5hdG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZjMjcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmRiYW5ub24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JvYWt4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cmliYmxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXJpaGVuYXJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhdGFkZWxlb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2Ntb3JsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHVpdnZ2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhc2NoYWRyb3N0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3JEdWJ1Z3Jhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93aW50b3BpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0Ymlsb3R0aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90YXlsb3JsaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lZ2RyYXdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lbG4xa3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFobW91ZG1ldHdhbGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1NpbHZlcmVkZ2U5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlcmVrZWJyYWRsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFwcHlwZXRlcjE5ODMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJhdmlzX2Fybm9sZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnRlbV9rb3N0ZW5rby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZG9iaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXlraWluZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVrX2RqdXJpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY2lwcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWd1ZWxtZW5kZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdGlucmhlZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbHNvYnJvb2tzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Zyb254LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21jZmx5ZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbnRpX3Vyc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxsZm9yZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YXl1YmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlcnRib2VybGFuZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJvc2hvbGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkYW1uYWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3ludGhpYXNhdmFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXJpbmdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hpZW1pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWNraWVzYWlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lkdXVjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRqYW51cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcm9vbl9zaGFybWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHNoc3Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVoYWNrZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGJyb29rc2pyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5tY2xhdWdobGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NsdWJiM3JyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90YXliZW5sb3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveHJpcHVub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXlhc3Ryby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGl0eWFzdXRvbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGlnaXRhbG1hdmVyaWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hqYXJ0c3Ryb3JuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l0b2xtYWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZhdWdoYW5tb2ZmaXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FiZG90cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc25pZmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlcmdleXNhZm9ub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NjcmFwZG5iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzbWo4My8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aXRvcmxlYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc29rYW5pd2FhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96YWtpM2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWxseXpvcmVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21vY2FieXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zbWFuaW5jZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kanNoZXJtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRoZW1waGlsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93YWdobmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lY29keW1pY29uZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJhdmVlbl92aWpheWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFiYnJ1Y2NpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RyYXZpc2hpbmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1bGRhcmthbHZpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9FbHRfbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waGlsbGFwaWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rc2VhbmpheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZDgzNTU1OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdWRyZXRrZXNraW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5qaGVyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdWNrNGZ1Y2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRfcmlsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm91ZmFsaWJyYWhpbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oMWJyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3JnZXNfbWFyY29zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RldmluaGFsbGFkYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2lhcmFuci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVmb29vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pa2ViZWVjaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvbnltaWxsaW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2h1YXJhaWNodXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXJhZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRyYW5nci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kbWl0cml5Y2h1dGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhcmxpZWdhbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJhc2htYW50ZWdoaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGhhbWRhbm5hd2F5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FpbnNsZXl3YWdvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdmVubGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhaXNhbGFiaWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVzaHVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmx5c29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1dGNobmFkaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVkZHl6ZXR0ZXJsdW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbXVlbGtyYWZ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FvaW1lZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvZGRyZXcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29kZXBvZXRfcnUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJ0dmF2cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5vaXRib3VjYXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvbWFybWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvbG1hcmxvcGV6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NyZWFydGluYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob21rYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYWJvcmVudG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYmluY2xlZGllcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF4aW1zb3Jva2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BsYXN0aWNpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvajJkZW1lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlYWNoYW5hbnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FwYWx1Y2Npby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZV9hc2NhbmlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jpa2FzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhd2lkd3UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY29yYW1pcmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZ2VsY3JlYXRpdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnBhdGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BvcGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlaGF0a2F0aHVyaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlX3B1cnBsZWJ1bm55LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzFtYXJraXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWpheHlfcnUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJlbm11cnJlbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHVkZXN0ZWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29za2FybGV2aW5zb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yc3R1YmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25laGZ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY2l2YWRlbGluZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWFuZHJvdmFyYW5kYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY290dGdhbGxhbnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yX2hheWRpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXdyYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWhhbmhhc3Nhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbWF5dnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYV9icml4ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2Fyb2xrcmFrb3dpYWtfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcmt1bGFuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZXJhbjcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2dnYXVyYXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNfd2l0a28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9zb3NpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9sYXJpdHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dGxhdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZG9uYnVya2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29uc3RhbnR4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RleWxvcmZlbGl6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NyYWlnZWxpbWVsaWFoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhY2hlbHJldmVsZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVhYm8xMDEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFobWVlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9reS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNreXllYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvajA0bnRvaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcGJyb21hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlYmFzaHRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qcGVuaWNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5jaXNfdmVnYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va3RheWVsaXBlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raWtpbGxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhYmJpYW56LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhcnJ5Z2VyYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0Jyb3VtaVlvdXNzZWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvMHRoZXJwbGFuZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWJpbGFsc2lkZGlxdWUxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lvbnVzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncnJyX25sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpbWluaGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmF3ZGlnZ2llLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5kb3duaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2V0aGxvdWV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpeGFnZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnBpdG5qLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N3aXRtZXI3NzcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zZXZuY2xjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYW5pY2thaXJhai8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wdXppay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90YmFrZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXNidWp1cGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Vwam9leS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb3dpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saW5raWJvbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWxpbnRvcm9zei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbWNvZGluZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZ3VzdGluY3J1aXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3Vzb3RvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Rob21hc3NjaHJpamVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cGVyb3V0bWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thbG1lcnJhdXRhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYWJyaWVsaXphbG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ29qZWFueW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRiYWxkaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3ZvanRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhdXJlbmdyYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanlkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXlteWJveS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWxsbGVvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNpb3RvbGVkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaW5qYWQzbTAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9fc29oYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFzc2x1bnNmb3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211cmlkcmFoaGFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xldmlzYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JhaGFta2VubmVyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXBldGl0b2dyZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRvbmdlbmtpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXNzb2lsYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbWFuZGFidXphcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FmcmFua292LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvY29sZXJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RzczQ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHQzMjI0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JsdWVzaXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcXVhaWxhbmRxdWFzYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQWxiZXJ0b0NvY29jaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXBpbnNraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZW1lbnRpeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taHVkb2Jpdm5pay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGliYXV0X3JlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29sZ2FyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaG9qYmVyZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdG9sb2tvbm5pa292LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlcmV0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXVwaW50b3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2Vnb3R2aWNlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94YWRoaXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFjeGltLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvZG55bG9ib3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkY2FtcG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZGVieXZhZGltLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhcnRvc3pkYXd5ZHppay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXBlcnZvdmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya3JldHpsb2ZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZvbmFjaG9vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhcnlsd3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RldmVkZXNpZ25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9teWxlc2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVyYmlndC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXBhdWxhd2FnbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlc2hhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9naXptZWVkZXZpbDE5OTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3Njb3R0YnVyZ2Vzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saXNvdnNreS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZHNhc2RhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FydGRfc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9Zb3VuZ0N1dGxhc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWdvbnRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l0c3RvdGFsbHlhbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9ycXVpbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3Ntb25kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rc2FuYWZyZXdlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96YXVlcmtyYXV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbWtlaXRobWFzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbml0aW5oYXlhcmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xtamFicmV1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmRhbGFyZW9wZW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaW5rbGVmdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb25jaG9tZW5kaXZpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWFtcGVycm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJ1bm9kZXNpZ24xMjA2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhc2V5Y2F2YW5hZ2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbHV4ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb3RncmlkbGluZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcGVkd2lnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZGV3dWxmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRzYXBpaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZWxkZXJsZWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nocmlzc3R1bXBoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pheXBoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnNhbW95bG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzdmFuZGVya29vaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdXN0bWVfdGltb3RoeWcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3RvemsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJpbnphZGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3U1dGFmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N5cmlsX2dhaWxsYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rfa29iZWx5YXRza3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFuaWxvYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ud2RzaGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9tYW5idWxhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9za2tpcmlsb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHZkd2luZGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhbm5vbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVrZXZpbmpvbmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p3YWx0ZXIxNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1ndGhvbWFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1ZGRoYXNvdXJjZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91eHBpcGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoYXRvbmV0b21teS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWFuc2lnaXRwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkcmllbnRocy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rbGltbWthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2drYWFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlcmVrY3JhbWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plbm55eW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVycnNvZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGFsaW9ubWFsaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWRoZW5kZXJzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2V5dXJpODUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm94YW5lamFtbWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpbWNvb2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWRrZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXRraW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZXNzYW5kcm9yaWJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phY2tzb25sYXRrYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWJyb25qZW5uYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29zdGFzcHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FybGthbmFsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb3luaWhhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5wbGllZ28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2F1bGloaXJ2aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZXNsZXl0cmFua2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZqYWd1ZXJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jvd2JyaWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hc2hhYWFhYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWFzc2lyeWFoeWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHBhcnJlbGxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZvdG9tYWdpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ha2FfamFtZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVuaXNlcGlyZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXFiYWxwZXJrYXNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnRpbmFuc3R5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phcnNlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yX295LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1c3RpbnJvYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYWJyaWVscm9zc2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbGdvcmRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsZmFpcmNsb3VnaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsYWJlaHNlcmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGllcnJlc3RvZmZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vuam95dGhldGF1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvZ2FuamxhbWJlcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnBlZXp5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvcmV5Z2lubml2YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFsaHJvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tc3ZlZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGluZ2Vzd2FyYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29sc3ZlaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0ZXI1NzYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVpZGVpcmVkYWxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZXltdXJkYWgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFwaGFlbG5pa3Nvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdmRoZXV2ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF4bGluZGVybWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ppbW11aXJoZWFkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlZ3JlYXRpdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJhbmtpZWZyZWVzYmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYnR1cmxpbmNreC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9UYWxiaV9Db25TZXB0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvbmdsaXZlbXl3b3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZhbmNoZXN6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21haWtsYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVybWFub2Jyb3RoZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmV6X19fYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVnc3F1ZWViLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyZWVuYmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19yYWd6b3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50aG9ueXN1a293LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZsdWlkYnJ1c2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFjdHJ0ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZWhuZ2x5bm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVyZ21hcnRpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9odWdvY29ybmVqby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fa2tnYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kemFudGlldm0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2F3YWxhemFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvdmVzb3ZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvbnNnb3R3b29kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J5cnlhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92eXRhdXRhc19hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pemhnYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2ljZXJvYnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmlsc2hlbG1lcnNzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZDMzcHRob3VnaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2ZWNyYWlnZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uY2tqcnZzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZXhhbmRlcm1heWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pjdWJpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmFpZ3Jjb2xlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWdhd2FybWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYl90aG9tYXMxMC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2ZsYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWlrZWxrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J0Z2liYm9ucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydXNzZWxsX2JheWxpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taGVzc2xvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2R5c2FuZmlsaXBwby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWJ0YW55YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRlYnlicmVudG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RjYWxvbmFjaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXJmZWN0Zmxvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qanNpaWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FhcmFicHJlZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VtYXJyYWphbjEyMTIzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbXN0ZWZmZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlbWlrZW5hZ2xlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NlZWtheXR3ZWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhcnJ5Ym9sdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb25zcGlyYXRvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYWxsYXNicGV0ZXJzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL24zZG1heC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXJwaW1vc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnlybmVjb3JlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pfZHJha2VfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhbGViam95Y2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVzc29lZHUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG9hbmdsb2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9ieXNheG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvZnJhc2Rlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaW1hcG9zbnl5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RqaXNvdXNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rYW5kdW5nZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlsbHlyb3NoYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3NrYW1heWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW90aW9udGhpbmtzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tuaWxvYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hc2hvY2thMTgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFycmltby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJ0am8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb21uaXp5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lcm5lc3RzZW1lcmRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJlYXNfcHIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWRnYXJjaHJpczk5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Rob21hc2dlaXNlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nc2VndWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvYW5uZWZvdXJuaWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlbWVyc2Rlc2lnbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbW1hcnNiYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFzaXJ3ZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uX3Rhc3NvbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamF2b3Jzemt5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW1yZGF2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95ZWNpZHNtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY29sbGVyaWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhbmFwdWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmljb2xlZ2x5bm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVkemhpbl9taWxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXNpZ25lcnZ6bS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raWFub3NocC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ldmFuZHJpeC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbHRlcmNodWNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RocnViby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYV90aWF4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NzYmJfbWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG9ycGhlcm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF1cmlvbGcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJ1bm9fbWFydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWN0b3B1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVfd2luc2xldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2VtZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1NocmlpaWlpbXAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFjb2JiZW5uZXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25mZWRvcm9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1nbGlteS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGxhZ3JpbmdhdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWlpYWlpYWlpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29sYW9sdXNvZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVyeWFrbmljay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93aW0xay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNrbGFja2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYTFjaGFwb25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXludmlsam9lbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdHJpa2V3YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnlhbmtpcmttYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmV3YWJvZ2Fkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb29vb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFnYW4xMjMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJpZmZzZXRpYXdhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGVuYWRpc3NpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL213YXJrZW50aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpZXJyeW1laWVyXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yX2dhcmNpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kbWFja2VybWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JvcmFudHVsYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb251cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcGFjZXdvb2RfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5dWNoaTMxMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ldmFuc2hhamVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RyaXN0YW5sZWdyb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hvYWliMjUzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fpc2xpbm5rZWxseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va2Nva2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RpbXBldHJpY29sYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdW5zaGluZWRnaXJsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWRhbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxlY2xhcnNvbml2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25vbWlkZXNpZ25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldGViZXJuYXJkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY290dGllZHVkZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWxsaW5ldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbXNvcGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ltYW1tdWh0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlbmphbWluX2tuaWdodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXBkdWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9raTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFuY2VndXlhdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmJveTE4OTUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW15d2ViYmIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcndldmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFydWludGVzZXR0ZGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2J1cnRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWxzaGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmF0c2lyYWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJpbW96Y2lnbGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pmZmdyZG5yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzhkM2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VuZXNlbGV6bmV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsX2xpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvdXBlcnBobHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXNsYXJraW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzJmb2NrdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2RhdmlzNTY1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hpZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHVya3V0dXVsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91eHdhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGViaW5vY2xhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2F1cmF2amFzc2FsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkbWVycmlxdWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWRzaXN0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXdvZmZpY2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvam91cmluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RuaXJtYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2V2a2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJfc2hpem5pdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbHVpc2lvX2F6ZXZlZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2xvdWRzdHVkaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFudmllcmljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGV4aXZhbmljaGtpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcmFuX21jaGFteS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXJyZXRtYWdhbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmV0cmF5ZGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhZGlra2FyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXRiZWVkb3Rjb20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW15d29yYm95cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icGFydHJpZGdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxrb3Blci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaWx2M3Jndm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxldml6aW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9obnNtaXRoYWdlbmN5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhd2xid295LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpdG9yMzc2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rlc2FzdHJvem8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpbW9fY3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFzb25tYXJram9uZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGhhdXNlcm1hbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveHJhdmlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1aXNjaG1pdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmlnb2Jyb254LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BhbmdoYWwwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pZ3VlbGtvb3JlbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cmdlb25pc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXN0aWFub2xpZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FzcGVyZ3JsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbWthcm5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lwYXZlbGVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpZXJyZV9uZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveTJncmFwaGljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXJsaW5ncnVsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxidXNjYWluZm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVubnlqaWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0dXNob25hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VzdGViYW51cmliZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbWJyY2VjcmVhdGlvbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFuaWxsb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxsaW90bGV3aXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhcmxlc3JwcmF0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFkeW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1tZWZmZXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmxvc2JsYW5jb19ldS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZW9uZmVkb3Rvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYW5nYWZhbmdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzX2ZyZWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Rnb3JtdHgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJ5YW5fdG9waGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pwc2NyaWJibGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pZ2h0eTU1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhcmJvbnR3ZWx2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc2FhY2ZpZnRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbWpkZWxlb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc25vd3dyaXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhcnB1dHJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RyZXdieXJlZXNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhY2hhY29yYXp6aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iaXN0cmlhbmlvc2lwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZ29vMDQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVoYW1vbmRlbGxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3lheXRlZWpheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hX2hhcnJpczg4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZ3Vuc2FuYWJyaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemZvcnJlc3Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vdmFsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NqZ3NvdXNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlb2Jpa2FzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FoX2xpY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9vbmV5ZG9vZGxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lcmRncjgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGRnZ2NjYWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemFja2VlbGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25vcm1hbmJveC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbF9mdWVydGlzaW1vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lzbWFpbF9iaWx0YWdpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1YW5nb21lencvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam5tbnJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BhdHJpY2tjb29tYmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnlhbmpvaG5zb25fbWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya29sc2NoZXNreS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZWZmZ29sZW5za2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3Zhc25pYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXVjaG9tYXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FmdXNpbmF0dG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2V2aW5vaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va2Fuc3VycmVlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGFtYXdlc29tZWZhY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1pbGVib3VkZWxpbmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJpc2hpXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWFubWFtYXJ0aW5lei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93aWtpemluZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFudGhtcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ta2dpbmZvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlcnJvcnBpeGVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N1cmlvdXNvbmF1dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcmhlZW1vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxjb2xlbnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZvY3p6aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJ0aXAwNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGFvZGFuZzE3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5jYWZhenphLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYmlubGF5ZmllbGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJhbmNpc2NvYW1rLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FiZHVsaHlldWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya2xhbWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWRvYmVuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXNlbmZyZWRyaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlrYWVsam9yaHVsdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3Nsb3dpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aW5jaWFydHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVlbGZvcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxsaW90bm9sdGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3llaHVkYWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmlqYXlrYXJ0aGlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jmcm9ocy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NlcF9tYXJ0aW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0dGFja3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VyNGR5ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90dW1za2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW5zdGFsb3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFuZ29zYW5nby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYXVsZmFyaW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2themFreTk5OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raXdpdXBvdmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL252a3puZW1vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvbV9ldmVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhdGJ1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93b29kc21hbjAwMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NobWVkZXNraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGV3aWxsYmVhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHNhaWthbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9lX2JsYWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWluYWRzYXlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmN1c2dvcmlsbGl1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob3RhX3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamdoeWxsZWJlcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hpbnplLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phbnBhbG91bmVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVtaWVzcG9rZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVyX3J1dS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5zb3d0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmVsaXBlYXBpcmVzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWd1Z3picmFuZDJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Bvc3RlcmpvYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXRoYWxpZV9mcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib2JieXR3b3Nob2VzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RyZWl6bGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW15bW91dG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsaXNhYmV0aGtqYWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25vdGJhZGFydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb2hhbnJvaGl0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbHNvbGVyZGVsdG9yby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdHNrYXdzYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2xvd3Nwb2NrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3p2Y2hrZWxseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93aWxqYW5zbG9mc3RyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmFpZ2hlbm5lYmVycnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJ1YmVhdHRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1YXVtbG9sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbXNjb3V0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9CZW5vdWFycmFkZU0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2lwc3lfcmFmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25ldG9uZXRfaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJrb2tvbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l0c2FqaW1pdGhpbmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc21hbG9uc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yZGVhbmRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19kd2l0ZV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmljaGFyZGdhcnJldHRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyZWdyd2lsa2luc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuYXRvbGluaWNvbGFlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2x1NHNoMWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlZmFub3RpcmxvbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3N0aXJidS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXJjeXN0b25nZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYWl0YW5hbW9yZW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxjb21pc2tleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGhpYXJkYW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNvbWFub18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRjYXphbGlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhbGNvbmVyaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JlZ2tpbGlhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iY3JhZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib2x6YW5tYXJjby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb3dfcmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZsYWpraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRhcl9wcm9nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvbmtzcHIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWttYWxmaWtyaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZmFjY2hpbmVsbG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXRhbmlzbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXJyeV9zaXN0YWxhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXJyYXlzd2lmdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib2J3YXNzZXJtYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhdnIxbDAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkc2hlbnNlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcl9zdWJ0bGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGV2aWxqaG9fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbGltaWFub2ZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZXRydWVzZGVsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90d2l0dHlwb3JrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FpcnNreWxhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kbmV6a3VtYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGdhamphci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGVyaWZfYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWx2YWZjLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvdWlzX2N1cnJpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZWVlbnJpZ2h0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N5YmluZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9leXJvbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmlja3lzaGl0cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd2VldGRlbGlzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYm9sbGVyMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXNkamFzc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVsdmluZGlkaXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5keXNvbG9tb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhhaXNzZWxlbmF0b3JfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2x2b3Zlbm9rLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dpdWxpdXNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlbHlhZXZfcnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3ZlcmNsb2Fja2VkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thbWFsX2NoYW5lbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2luY3VibzgyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlbGxvZmV2ZXJycnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWhhbGlnb3dza2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VubGFuZGljdHdpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idTc5MjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5keXRsYXcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW1lcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmluY2hqa2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFuaWdtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3VtdXJnZGsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRmZWx0aGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhbnNlcmVuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXR1X2tyaXNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZHl0YWdnYXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL250ZmJsb2cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGFudmVlcnJhby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZmFsdWNhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbHhsZXJveWRldmFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1Y2luZ2JlbGFuZzQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFyZ2Fvcm9iYWxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbGdydXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RhbGV3aW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t5bGVmcm9zdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXVtYW5uem9uZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmdlbGNvbGJlcmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FjaGluZ2F3YXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvampzaGF3MTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFtYW5hdGhhbl9wZHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9obmRlemVtYmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pbHNob2Vuc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYW5kb25tb3JyZWFsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9udXR6dW1pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYW5kb25mbGF0c29kYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXJnZXlhbG1vbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2xlZnVlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpcmFuZ29wYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmF1bWFubl9hbGV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRoZXdrYXlfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pheV93aWxidXJuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoZXNnYXJlZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcHJpZW5kZWF1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5yaW9yZGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dha2VfZ3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxla3NpdGFwcHVyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbXNndWxhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94aWxhbnRyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbW9tZW51aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaXJjYWxlYmdyb3ZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25ld2JydXNoZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaHNpbnlvMjMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbTRyaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2F0aWVtZGFseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zNGYxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vjb21tZXJjZWlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmxpbmpheWFrb2R5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N3b29zaHljdWViLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbmdkdGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29kZXJkaWF6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JsdWVmeF8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdml2ZWtwcnZyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhc2hhX3NoZXN0YWtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ldWdlbmVld2ViLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RnY2xlZ2cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbjFnaHRfY29kZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGl4Y2hlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibGFrZWhhd2tzd29ydGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJ1ZWJsb29kXzMzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhaV9uaW5oX25ndXllbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjbGdvbnphbGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3llc21lY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlcGhjb3VlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rvcm9ubWFsa2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVlaGxkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5hc25ha2F3YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raWphbm1haGFyamFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlYXJlc2F2YXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlZnZkaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R3ZWV0dWJoYWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxlY2FycGVudGllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9maXRlcmlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudG9ueXJ5bmR5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kMDBtYXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlb25seXpla2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlzc2FhYW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmxvc20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFuZWtlbnRoZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZWV0YWpheWVuZHJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVteXNoaW1rby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdXN0aW5yZ3JhaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZhbm96b2Zmb2xpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL292ZXJyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcmViYXkwMDcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2h2ZWxvOTYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHlyb25pdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlZGpwZXRlcnNlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydHl1a21hZXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3dpbGxpYW1ndWVycmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxiZXJ0YXVndXN0aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmlrYXNocGF0aGFrMTgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2V2aW5qb2huZGF5eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92al9kZW1pZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29saXJwaXhvaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ29kZGFyZGxld2lzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhYXNsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qcWl1c3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGV5Y2FtdGF5bG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hc3R5YV9tYW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hc3Rlcm1pbmRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jY2lub2phc3NvMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ueWFuY2Vjb20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FuZHl3b29kcnVmZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iaWdoYW5kZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NidHJhbnNwYXJlbnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXZpZGRheWVudG9uYmF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2h3aWxkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2theXNpeF9kaXp6eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90dXI4bGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2V5ZWRob3NzZWluMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcml2ZXR3YWduZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1tYW5kZW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rldl9lc3NlbnRpYWxzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ptZnNvY2lhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9feWFyZGVub29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdGVhb2R2aXRlemEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VhdmVybWVkaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVmYWRkYWxfbXcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFmZWVza2hhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hc2hlcm5hdGFsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdWxhcW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWRkaWVjaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2VjYXJsb3Nwc2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm1fZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbnJpY29jaWNjb25pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhbm1hcnRpbjcwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dtb3VyaWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RvbmphaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJ4bG9rYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fcGVkcm9waW5oby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9laXRhcmFmYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc2Nhcm93dXN1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbHBoX2xhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYW5jaGFqYW55YWcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd29vZHlkb3RteC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJyeWJhaTE5MDcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyc2hhbGxjaGVuXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94YW1vcmVwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fpb19fXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFhYmFuZV93YWlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R4Y3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWthc2hzaGFybWEzOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWxsaW5nX3NvdWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FpbnJhamEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVndWthbWlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaGFubmVzbmV1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmt3aWVuYW5kcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJ0aGlwYW5yYWovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsYWtheXVyaXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxhbl96aGFuZ18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGF5ZXJzc3NzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thc3Blcm5vcmRrdmlzdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXJmYW5xdXJlc2hpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhbm5hX3NtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9WTWlsZXNjdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZW9uNTYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbV9rYWxpYnJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NyZWVqaXRoZXhwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpY2VzYWxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaG9vdF9hbWl0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NtZW5vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb25lc29tZWxlbW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZsYWRpbWlyZGV2aWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9lbGNpcHJpYW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhbGlnYWxpaGFydW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVsZXN3YXBuaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VyZWZrYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZmFyYWZvbm93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Zpa2FzdmluZm90ZWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3VycnV0aW1lb2xpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyZWFuZGFjb20vMTI4LmpwZ1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJjb21cIixcbiAgXCJiaXpcIixcbiAgXCJpbmZvXCIsXG4gIFwibmFtZVwiLFxuICBcIm5ldFwiLFxuICBcIm9yZ1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJleGFtcGxlLm9yZ1wiLFxuICBcImV4YW1wbGUuY29tXCIsXG4gIFwiZXhhbXBsZS5uZXRcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZ21haWwuY29tXCIsXG4gIFwieWFob28uY29tXCIsXG4gIFwiaG90bWFpbC5jb21cIlxuXTtcbiIsInZhciBpbnRlcm5ldCA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBpbnRlcm5ldDtcbmludGVybmV0LmZyZWVfZW1haWwgPSByZXF1aXJlKFwiLi9mcmVlX2VtYWlsXCIpO1xuaW50ZXJuZXQuZXhhbXBsZV9lbWFpbCA9IHJlcXVpcmUoXCIuL2V4YW1wbGVfZW1haWxcIik7XG5pbnRlcm5ldC5kb21haW5fc3VmZml4ID0gcmVxdWlyZShcIi4vZG9tYWluX3N1ZmZpeFwiKTtcbmludGVybmV0LmF2YXRhcl91cmkgPSByZXF1aXJlKFwiLi9hdmF0YXJfdXJpXCIpO1xuIiwidmFyIGxvcmVtID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGxvcmVtO1xubG9yZW0ud29yZHMgPSByZXF1aXJlKFwiLi93b3Jkc1wiKTtcbmxvcmVtLnN1cHBsZW1lbnRhbCA9IHJlcXVpcmUoXCIuL3N1cHBsZW1lbnRhbFwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYWJiYXNcIixcbiAgXCJhYmR1Y29cIixcbiAgXCJhYmVvXCIsXG4gIFwiYWJzY2lkb1wiLFxuICBcImFic2NvbmRpdHVzXCIsXG4gIFwiYWJzZW5zXCIsXG4gIFwiYWJzb3JiZW9cIixcbiAgXCJhYnNxdWVcIixcbiAgXCJhYnN0ZXJnb1wiLFxuICBcImFic3VtXCIsXG4gIFwiYWJ1bmRhbnNcIixcbiAgXCJhYnV0b3JcIixcbiAgXCJhY2NlZG9cIixcbiAgXCJhY2NlbmRvXCIsXG4gIFwiYWNjZXB0dXNcIixcbiAgXCJhY2NpcGlvXCIsXG4gIFwiYWNjb21tb2RvXCIsXG4gIFwiYWNjdXNhdG9yXCIsXG4gIFwiYWNlclwiLFxuICBcImFjZXJiaXRhc1wiLFxuICBcImFjZXJ2dXNcIixcbiAgXCJhY2lkdXNcIixcbiAgXCJhY2llc1wiLFxuICBcImFjcXVpcm9cIixcbiAgXCJhY3NpXCIsXG4gIFwiYWRhbW9cIixcbiAgXCJhZGF1Z2VvXCIsXG4gIFwiYWRkb1wiLFxuICBcImFkZHVjb1wiLFxuICBcImFkZW1wdGlvXCIsXG4gIFwiYWRlb1wiLFxuICBcImFkZXB0aW9cIixcbiAgXCJhZGZlY3R1c1wiLFxuICBcImFkZmVyb1wiLFxuICBcImFkZmljaW9cIixcbiAgXCJhZGZsaWN0b1wiLFxuICBcImFkaGFlcm9cIixcbiAgXCJhZGh1Y1wiLFxuICBcImFkaWNpb1wiLFxuICBcImFkaW1wbGVvXCIsXG4gIFwiYWRpbnZlbnRpdGlhc1wiLFxuICBcImFkaXBpc2NvclwiLFxuICBcImFkaXV2b1wiLFxuICBcImFkbWluaXN0cmF0aW9cIixcbiAgXCJhZG1pcmF0aW9cIixcbiAgXCJhZG1pdHRvXCIsXG4gIFwiYWRtb25lb1wiLFxuICBcImFkbW92ZW9cIixcbiAgXCJhZG51b1wiLFxuICBcImFkb3B0b1wiLFxuICBcImFkc2lkdWVcIixcbiAgXCJhZHN0cmluZ29cIixcbiAgXCJhZHN1ZXNjb1wiLFxuICBcImFkc3VtXCIsXG4gIFwiYWR1bGF0aW9cIixcbiAgXCJhZHVsZXNjZW5zXCIsXG4gIFwiYWR1bHR1c1wiLFxuICBcImFkdXJvXCIsXG4gIFwiYWR2ZW5pb1wiLFxuICBcImFkdmVyc3VzXCIsXG4gIFwiYWR2b2NvXCIsXG4gIFwiYWVkaWZpY2l1bVwiLFxuICBcImFlZ2VyXCIsXG4gIFwiYWVncmVcIixcbiAgXCJhZWdyb3RhdGlvXCIsXG4gIFwiYWVncnVzXCIsXG4gIFwiYWVuZXVzXCIsXG4gIFwiYWVxdWl0YXNcIixcbiAgXCJhZXF1dXNcIixcbiAgXCJhZXJcIixcbiAgXCJhZXN0YXNcIixcbiAgXCJhZXN0aXZ1c1wiLFxuICBcImFlc3R1c1wiLFxuICBcImFldGFzXCIsXG4gIFwiYWV0ZXJudXNcIixcbiAgXCJhZ2VyXCIsXG4gIFwiYWdnZXJvXCIsXG4gIFwiYWdncmVkaW9yXCIsXG4gIFwiYWduaXRpb1wiLFxuICBcImFnbm9zY29cIixcbiAgXCJhZ29cIixcbiAgXCJhaXRcIixcbiAgXCJhaXVudFwiLFxuICBcImFsaWVudXNcIixcbiAgXCJhbGlpXCIsXG4gIFwiYWxpb3F1aVwiLFxuICBcImFsaXF1YVwiLFxuICBcImFsaXVzXCIsXG4gIFwiYWxsYXR1c1wiLFxuICBcImFsb1wiLFxuICBcImFsdGVyXCIsXG4gIFwiYWx0dXNcIixcbiAgXCJhbHZldXNcIixcbiAgXCJhbWFyaXR1ZG9cIixcbiAgXCJhbWJpdHVzXCIsXG4gIFwiYW1idWxvXCIsXG4gIFwiYW1pY2l0aWFcIixcbiAgXCJhbWljdWx1bVwiLFxuICBcImFtaXNzaW9cIixcbiAgXCJhbWl0YVwiLFxuICBcImFtaXR0b1wiLFxuICBcImFtb1wiLFxuICBcImFtb3JcIixcbiAgXCJhbW92ZW9cIixcbiAgXCJhbXBsZXh1c1wiLFxuICBcImFtcGxpdHVkb1wiLFxuICBcImFtcGx1c1wiLFxuICBcImFuY2lsbGFcIixcbiAgXCJhbmdlbHVzXCIsXG4gIFwiYW5ndWx1c1wiLFxuICBcImFuZ3VzdHVzXCIsXG4gIFwiYW5pbWFkdmVydG9cIixcbiAgXCJhbmltaVwiLFxuICBcImFuaW11c1wiLFxuICBcImFubnVzXCIsXG4gIFwiYW5zZXJcIixcbiAgXCJhbnRlXCIsXG4gIFwiYW50ZWFcIixcbiAgXCJhbnRlcG9ub1wiLFxuICBcImFudGlxdXVzXCIsXG4gIFwiYXBlcmlvXCIsXG4gIFwiYXBlcnRlXCIsXG4gIFwiYXBvc3RvbHVzXCIsXG4gIFwiYXBwYXJhdHVzXCIsXG4gIFwiYXBwZWxsb1wiLFxuICBcImFwcG9ub1wiLFxuICBcImFwcG9zaXR1c1wiLFxuICBcImFwcHJvYm9cIixcbiAgXCJhcHRvXCIsXG4gIFwiYXB0dXNcIixcbiAgXCJhcHVkXCIsXG4gIFwiYXF1YVwiLFxuICBcImFyYVwiLFxuICBcImFyYW5lYVwiLFxuICBcImFyYml0cm9cIixcbiAgXCJhcmJvclwiLFxuICBcImFyYnVzdHVtXCIsXG4gIFwiYXJjYVwiLFxuICBcImFyY2VvXCIsXG4gIFwiYXJjZXNzb1wiLFxuICBcImFyY3VzXCIsXG4gIFwiYXJnZW50dW1cIixcbiAgXCJhcmd1bWVudHVtXCIsXG4gIFwiYXJndW9cIixcbiAgXCJhcm1hXCIsXG4gIFwiYXJtYXJpdW1cIixcbiAgXCJhcm1vXCIsXG4gIFwiYXJvXCIsXG4gIFwiYXJzXCIsXG4gIFwiYXJ0aWN1bHVzXCIsXG4gIFwiYXJ0aWZpY2lvc2VcIixcbiAgXCJhcnRvXCIsXG4gIFwiYXJ4XCIsXG4gIFwiYXNjaXNjb1wiLFxuICBcImFzY2l0XCIsXG4gIFwiYXNwZXJcIixcbiAgXCJhc3BpY2lvXCIsXG4gIFwiYXNwb3J0b1wiLFxuICBcImFzc2VudGF0b3JcIixcbiAgXCJhc3RydW1cIixcbiAgXCJhdGF2dXNcIixcbiAgXCJhdGVyXCIsXG4gIFwiYXRxdWlcIixcbiAgXCJhdHJvY2l0YXNcIixcbiAgXCJhdHJveFwiLFxuICBcImF0dGVyb1wiLFxuICBcImF0dG9sbG9cIixcbiAgXCJhdHRvbmJpdHVzXCIsXG4gIFwiYXVjdG9yXCIsXG4gIFwiYXVjdHVzXCIsXG4gIFwiYXVkYWNpYVwiLFxuICBcImF1ZGF4XCIsXG4gIFwiYXVkZW50aWFcIixcbiAgXCJhdWRlb1wiLFxuICBcImF1ZGlvXCIsXG4gIFwiYXVkaXRvclwiLFxuICBcImF1ZmVyb1wiLFxuICBcImF1cmV1c1wiLFxuICBcImF1cmlzXCIsXG4gIFwiYXVydW1cIixcbiAgXCJhdXRcIixcbiAgXCJhdXRlbVwiLFxuICBcImF1dHVzXCIsXG4gIFwiYXV4aWxpdW1cIixcbiAgXCJhdmFyaXRpYVwiLFxuICBcImF2YXJ1c1wiLFxuICBcImF2ZWhvXCIsXG4gIFwiYXZlcnRvXCIsXG4gIFwiYXZvY29cIixcbiAgXCJiYWl1bHVzXCIsXG4gIFwiYmFsYnVzXCIsXG4gIFwiYmFyYmFcIixcbiAgXCJiYXJkdXNcIixcbiAgXCJiYXNpdW1cIixcbiAgXCJiZWF0dXNcIixcbiAgXCJiZWxsaWN1c1wiLFxuICBcImJlbGx1bVwiLFxuICBcImJlbmVcIixcbiAgXCJiZW5lZmljaXVtXCIsXG4gIFwiYmVuZXZvbGVudGlhXCIsXG4gIFwiYmVuaWduZVwiLFxuICBcImJlc3RpYVwiLFxuICBcImJpYm9cIixcbiAgXCJiaXNcIixcbiAgXCJibGFuZGlvclwiLFxuICBcImJvbnVzXCIsXG4gIFwiYm9zXCIsXG4gIFwiYnJldmlzXCIsXG4gIFwiY2Fkb1wiLFxuICBcImNhZWN1c1wiLFxuICBcImNhZWxlc3Rpc1wiLFxuICBcImNhZWx1bVwiLFxuICBcImNhbGFtaXRhc1wiLFxuICBcImNhbGNhclwiLFxuICBcImNhbGNvXCIsXG4gIFwiY2FsY3VsdXNcIixcbiAgXCJjYWxsaWRlXCIsXG4gIFwiY2FtcGFuYVwiLFxuICBcImNhbmRpZHVzXCIsXG4gIFwiY2FuaXNcIixcbiAgXCJjYW5vbmljdXNcIixcbiAgXCJjYW50b1wiLFxuICBcImNhcGlsbHVzXCIsXG4gIFwiY2FwaW9cIixcbiAgXCJjYXBpdHVsdXNcIixcbiAgXCJjYXB0b1wiLFxuICBcImNhcHV0XCIsXG4gIFwiY2FyYm9cIixcbiAgXCJjYXJjZXJcIixcbiAgXCJjYXJlb1wiLFxuICBcImNhcmllc1wiLFxuICBcImNhcmlvc3VzXCIsXG4gIFwiY2FyaXRhc1wiLFxuICBcImNhcm1lblwiLFxuICBcImNhcnBvXCIsXG4gIFwiY2FydXNcIixcbiAgXCJjYXNzb1wiLFxuICBcImNhc3RlXCIsXG4gIFwiY2FzdXNcIixcbiAgXCJjYXRlbmFcIixcbiAgXCJjYXRlcnZhXCIsXG4gIFwiY2F0dHVzXCIsXG4gIFwiY2F1ZGFcIixcbiAgXCJjYXVzYVwiLFxuICBcImNhdXRlXCIsXG4gIFwiY2F2ZW9cIixcbiAgXCJjYXZ1c1wiLFxuICBcImNlZG9cIixcbiAgXCJjZWxlYnJlclwiLFxuICBcImNlbGVyXCIsXG4gIFwiY2Vsb1wiLFxuICBcImNlbmFcIixcbiAgXCJjZW5hY3VsdW1cIixcbiAgXCJjZW5vXCIsXG4gIFwiY2Vuc3VyYVwiLFxuICBcImNlbnR1bVwiLFxuICBcImNlcm5vXCIsXG4gIFwiY2VybnV1c1wiLFxuICBcImNlcnRlXCIsXG4gIFwiY2VydG9cIixcbiAgXCJjZXJ0dXNcIixcbiAgXCJjZXJ2dXNcIixcbiAgXCJjZXRlcmFcIixcbiAgXCJjaGFyaXNtYVwiLFxuICBcImNoaXJvZ3JhcGh1bVwiLFxuICBcImNpYm9cIixcbiAgXCJjaWJ1c1wiLFxuICBcImNpY3V0YVwiLFxuICBcImNpbGljaXVtXCIsXG4gIFwiY2ltZW50YXJpdXNcIixcbiAgXCJjaW1pbmF0aW9cIixcbiAgXCJjaW5pc1wiLFxuICBcImNpcmN1bXZlbmlvXCIsXG4gIFwiY2l0b1wiLFxuICBcImNpdmlzXCIsXG4gIFwiY2l2aXRhc1wiLFxuICBcImNsYW1cIixcbiAgXCJjbGFtb1wiLFxuICBcImNsYXJvXCIsXG4gIFwiY2xhcnVzXCIsXG4gIFwiY2xhdWRlb1wiLFxuICBcImNsYXVzdHJ1bVwiLFxuICBcImNsZW1lbnRpYVwiLFxuICBcImNsaWJhbnVzXCIsXG4gIFwiY29hZHVuYXRpb1wiLFxuICBcImNvYWVncmVzY29cIixcbiAgXCJjb2VwaVwiLFxuICBcImNvZXJjZW9cIixcbiAgXCJjb2dpdG9cIixcbiAgXCJjb2duYXR1c1wiLFxuICBcImNvZ25vbWVuXCIsXG4gIFwiY29nb1wiLFxuICBcImNvaGFlcm9cIixcbiAgXCJjb2hpYmVvXCIsXG4gIFwiY29ob3JzXCIsXG4gIFwiY29sbGlnb1wiLFxuICBcImNvbGxvY29cIixcbiAgXCJjb2xsdW1cIixcbiAgXCJjb2xvXCIsXG4gIFwiY29sb3JcIixcbiAgXCJjb21hXCIsXG4gIFwiY29tYmlib1wiLFxuICBcImNvbWJ1cm9cIixcbiAgXCJjb21lZG9cIixcbiAgXCJjb21lc1wiLFxuICBcImNvbWV0ZXNcIixcbiAgXCJjb21pc1wiLFxuICBcImNvbWl0YXR1c1wiLFxuICBcImNvbW1lbW9yb1wiLFxuICBcImNvbW1pbm9yXCIsXG4gIFwiY29tbW9kb1wiLFxuICBcImNvbW11bmlzXCIsXG4gIFwiY29tcGFyb1wiLFxuICBcImNvbXBlbGxvXCIsXG4gIFwiY29tcGxlY3R1c1wiLFxuICBcImNvbXBvbm9cIixcbiAgXCJjb21wcmVoZW5kb1wiLFxuICBcImNvbXB0dXNcIixcbiAgXCJjb25hdHVzXCIsXG4gIFwiY29uY2Vkb1wiLFxuICBcImNvbmNpZG9cIixcbiAgXCJjb25jdWxjb1wiLFxuICBcImNvbmRpY29cIixcbiAgXCJjb25kdWNvXCIsXG4gIFwiY29uZmVyb1wiLFxuICBcImNvbmZpZG9cIixcbiAgXCJjb25mb3J0b1wiLFxuICBcImNvbmZ1Z29cIixcbiAgXCJjb25ncmVnYXRpb1wiLFxuICBcImNvbmljaW9cIixcbiAgXCJjb25pZWN0b1wiLFxuICBcImNvbml0b3JcIixcbiAgXCJjb25pdXJhdGlvXCIsXG4gIFwiY29ub3JcIixcbiAgXCJjb25xdWVyb3JcIixcbiAgXCJjb25zY2VuZG9cIixcbiAgXCJjb25zZXJ2b1wiLFxuICBcImNvbnNpZGVyb1wiLFxuICBcImNvbnNwZXJnb1wiLFxuICBcImNvbnN0YW5zXCIsXG4gIFwiY29uc3Vhc29yXCIsXG4gIFwiY29udGFiZXNjb1wiLFxuICBcImNvbnRlZ29cIixcbiAgXCJjb250aWdvXCIsXG4gIFwiY29udHJhXCIsXG4gIFwiY29udHVyYm9cIixcbiAgXCJjb252ZW50dXNcIixcbiAgXCJjb252b2NvXCIsXG4gIFwiY29waWFcIixcbiAgXCJjb3Bpb3NlXCIsXG4gIFwiY29ybnVcIixcbiAgXCJjb3JvbmFcIixcbiAgXCJjb3JwdXNcIixcbiAgXCJjb3JyZXB0aXVzXCIsXG4gIFwiY29ycmlnb1wiLFxuICBcImNvcnJvYm9yb1wiLFxuICBcImNvcnJ1bXBvXCIsXG4gIFwiY29ydXNjdXNcIixcbiAgXCJjb3RpZGllXCIsXG4gIFwiY3JhcHVsYVwiLFxuICBcImNyYXNcIixcbiAgXCJjcmFzdGludXNcIixcbiAgXCJjcmVhdG9yXCIsXG4gIFwiY3JlYmVyXCIsXG4gIFwiY3JlYnJvXCIsXG4gIFwiY3JlZG9cIixcbiAgXCJjcmVvXCIsXG4gIFwiY3JlcHRpb1wiLFxuICBcImNyZXB1c2N1bHVtXCIsXG4gIFwiY3Jlc2NvXCIsXG4gIFwiY3JldGFcIixcbiAgXCJjcmlicm9cIixcbiAgXCJjcmluaXNcIixcbiAgXCJjcnVjaWFtZW50dW1cIixcbiAgXCJjcnVkZWxpc1wiLFxuICBcImNydWVudHVzXCIsXG4gIFwiY3J1clwiLFxuICBcImNydXN0dWx1bVwiLFxuICBcImNydXhcIixcbiAgXCJjdWJpY3VsYXJpc1wiLFxuICBcImN1Yml0dW1cIixcbiAgXCJjdWJvXCIsXG4gIFwiY3VpXCIsXG4gIFwiY3VpdXNcIixcbiAgXCJjdWxwYVwiLFxuICBcImN1bHBvXCIsXG4gIFwiY3VsdGVsbHVzXCIsXG4gIFwiY3VsdHVyYVwiLFxuICBcImN1bVwiLFxuICBcImN1bmFidWxhXCIsXG4gIFwiY3VuYWVcIixcbiAgXCJjdW5jdGF0aW9cIixcbiAgXCJjdXBpZGl0YXNcIixcbiAgXCJjdXBpb1wiLFxuICBcImN1cHBlZGlhXCIsXG4gIFwiY3VwcmVzc3VzXCIsXG4gIFwiY3VyXCIsXG4gIFwiY3VyYVwiLFxuICBcImN1cmF0aW9cIixcbiAgXCJjdXJpYVwiLFxuICBcImN1cmlvc2l0YXNcIixcbiAgXCJjdXJpc1wiLFxuICBcImN1cm9cIixcbiAgXCJjdXJyaWN1bHVtXCIsXG4gIFwiY3VycnVzXCIsXG4gIFwiY3Vyc2ltXCIsXG4gIFwiY3Vyc29cIixcbiAgXCJjdXJzdXNcIixcbiAgXCJjdXJ0b1wiLFxuICBcImN1cnR1c1wiLFxuICBcImN1cnZvXCIsXG4gIFwiY3VydnVzXCIsXG4gIFwiY3VzdG9kaWFcIixcbiAgXCJkYW1uYXRpb1wiLFxuICBcImRhbW5vXCIsXG4gIFwiZGFwaWZlclwiLFxuICBcImRlYmVvXCIsXG4gIFwiZGViaWxpdG9cIixcbiAgXCJkZWNlbnNcIixcbiAgXCJkZWNlcm5vXCIsXG4gIFwiZGVjZXRcIixcbiAgXCJkZWNpbXVzXCIsXG4gIFwiZGVjaXBpb1wiLFxuICBcImRlY29yXCIsXG4gIFwiZGVjcmV0dW1cIixcbiAgXCJkZWN1bWJvXCIsXG4gIFwiZGVkZWNvclwiLFxuICBcImRlZGljb1wiLFxuICBcImRlZHVjb1wiLFxuICBcImRlZmFlY29cIixcbiAgXCJkZWZlbmRvXCIsXG4gIFwiZGVmZXJvXCIsXG4gIFwiZGVmZXNzdXNcIixcbiAgXCJkZWZldGlzY29yXCIsXG4gIFwiZGVmaWNpb1wiLFxuICBcImRlZmlnb1wiLFxuICBcImRlZmxlb1wiLFxuICBcImRlZmx1b1wiLFxuICBcImRlZnVuZ29cIixcbiAgXCJkZWdlbmVyb1wiLFxuICBcImRlZ2Vyb1wiLFxuICBcImRlZ3VzdG9cIixcbiAgXCJkZWluZGVcIixcbiAgXCJkZWxlY3RhdGlvXCIsXG4gIFwiZGVsZWdvXCIsXG4gIFwiZGVsZW9cIixcbiAgXCJkZWxpYmVyb1wiLFxuICBcImRlbGljYXRlXCIsXG4gIFwiZGVsaW5xdW9cIixcbiAgXCJkZWx1ZG9cIixcbiAgXCJkZW1lbnNcIixcbiAgXCJkZW1lcmdvXCIsXG4gIFwiZGVtaXR0b1wiLFxuICBcImRlbW9cIixcbiAgXCJkZW1vbnN0cm9cIixcbiAgXCJkZW1vcm9yXCIsXG4gIFwiZGVtdWxjZW9cIixcbiAgXCJkZW11bVwiLFxuICBcImRlbmVnb1wiLFxuICBcImRlbmlxdWVcIixcbiAgXCJkZW5zXCIsXG4gIFwiZGVudW5jaW9cIixcbiAgXCJkZW51b1wiLFxuICBcImRlb3JzdW1cIixcbiAgXCJkZXBlcmVvXCIsXG4gIFwiZGVwb25vXCIsXG4gIFwiZGVwb3B1bG9cIixcbiAgXCJkZXBvcnRvXCIsXG4gIFwiZGVwcmFlZG9yXCIsXG4gIFwiZGVwcmVjYXRvclwiLFxuICBcImRlcHJpbW9cIixcbiAgXCJkZXByb21vXCIsXG4gIFwiZGVwdWxzb1wiLFxuICBcImRlcHV0b1wiLFxuICBcImRlcmVsaW5xdW9cIixcbiAgXCJkZXJpZGVvXCIsXG4gIFwiZGVyaXBpb1wiLFxuICBcImRlc2lkZXJvXCIsXG4gIFwiZGVzaW5vXCIsXG4gIFwiZGVzaXBpb1wiLFxuICBcImRlc29sb1wiLFxuICBcImRlc3BhcmF0dXNcIixcbiAgXCJkZXNwZWN0b1wiLFxuICBcImRlc3Bpcm1hdGlvXCIsXG4gIFwiaW5maXRcIixcbiAgXCJpbmZsYW1tYXRpb1wiLFxuICBcInBhZW5zXCIsXG4gIFwicGF0aW9yXCIsXG4gIFwicGF0cmlhXCIsXG4gIFwicGF0cm9jaW5vclwiLFxuICBcInBhdHJ1dXNcIixcbiAgXCJwYXVjaVwiLFxuICBcInBhdWxhdGltXCIsXG4gIFwicGF1cGVyXCIsXG4gIFwicGF4XCIsXG4gIFwicGVjY2F0dXNcIixcbiAgXCJwZWNjb1wiLFxuICBcInBlY3RvXCIsXG4gIFwicGVjdHVzXCIsXG4gIFwicGVjdW5pYVwiLFxuICBcInBlY3VzXCIsXG4gIFwicGVpb3JcIixcbiAgXCJwZWxcIixcbiAgXCJvY2VyXCIsXG4gIFwic29jaXVzXCIsXG4gIFwic29kYWxpdGFzXCIsXG4gIFwic29sXCIsXG4gIFwic29sZW9cIixcbiAgXCJzb2xpb1wiLFxuICBcInNvbGl0dWRvXCIsXG4gIFwic29saXVtXCIsXG4gIFwic29sbGVyc1wiLFxuICBcInNvbGxpY2l0b1wiLFxuICBcInNvbHVtXCIsXG4gIFwic29sdXNcIixcbiAgXCJzb2x1dGlvXCIsXG4gIFwic29sdm9cIixcbiAgXCJzb21uaWN1bG9zdXNcIixcbiAgXCJzb21udXNcIixcbiAgXCJzb25pdHVzXCIsXG4gIFwic29ub1wiLFxuICBcInNvcGhpc21hdGFcIixcbiAgXCJzb3BvclwiLFxuICBcInNvcmRlb1wiLFxuICBcInNvcnRpdHVzXCIsXG4gIFwic3BhcmdvXCIsXG4gIFwic3BlY2lvc3VzXCIsXG4gIFwic3BlY3RhY3VsdW1cIixcbiAgXCJzcGVjdWx1bVwiLFxuICBcInNwZXJub1wiLFxuICBcInNwZXJvXCIsXG4gIFwic3Blc1wiLFxuICBcInNwaWN1bHVtXCIsXG4gIFwic3Bpcml0dXNcIixcbiAgXCJzcG9saWF0aW9cIixcbiAgXCJzcG9udGVcIixcbiAgXCJzdGFiaWxpc1wiLFxuICBcInN0YXRpbVwiLFxuICBcInN0YXR1YVwiLFxuICBcInN0ZWxsYVwiLFxuICBcInN0aWxsaWNpZGl1bVwiLFxuICBcInN0aXBlc1wiLFxuICBcInN0aXBzXCIsXG4gIFwic3RvXCIsXG4gIFwic3RyZW51dXNcIixcbiAgXCJzdHJ1ZXNcIixcbiAgXCJzdHVkaW9cIixcbiAgXCJzdHVsdHVzXCIsXG4gIFwic3VhZGVvXCIsXG4gIFwic3Vhc29yaWFcIixcbiAgXCJzdWJcIixcbiAgXCJzdWJpdG9cIixcbiAgXCJzdWJpdW5nb1wiLFxuICBcInN1YmxpbWVcIixcbiAgXCJzdWJuZWN0b1wiLFxuICBcInN1YnNlY29cIixcbiAgXCJzdWJzdGFudGlhXCIsXG4gIFwic3VidmVuaW9cIixcbiAgXCJzdWNjZWRvXCIsXG4gIFwic3VjY3Vycm9cIixcbiAgXCJzdWZmaWNpb1wiLFxuICBcInN1ZmZvY29cIixcbiAgXCJzdWZmcmFnaXVtXCIsXG4gIFwic3VnZ2Vyb1wiLFxuICBcInN1aVwiLFxuICBcInN1bHVtXCIsXG4gIFwic3VtXCIsXG4gIFwic3VtbWFcIixcbiAgXCJzdW1taXNzZVwiLFxuICBcInN1bW1vcGVyZVwiLFxuICBcInN1bW9cIixcbiAgXCJzdW1wdHVzXCIsXG4gIFwic3VwZWxsZXhcIixcbiAgXCJzdXBlclwiLFxuICBcInN1cHBlbGxleFwiLFxuICBcInN1cHBsYW50b1wiLFxuICBcInN1cHBvbm9cIixcbiAgXCJzdXByYVwiLFxuICBcInN1cmN1bHVzXCIsXG4gIFwic3VyZ29cIixcbiAgXCJzdXJzdW1cIixcbiAgXCJzdXNjaXBpb1wiLFxuICBcInN1c3BlbmRvXCIsXG4gIFwic3VzdGluZW9cIixcbiAgXCJzdXVzXCIsXG4gIFwic3luYWdvZ2FcIixcbiAgXCJ0YWJlbGxhXCIsXG4gIFwidGFiZXJudXNcIixcbiAgXCJ0YWJlc2NvXCIsXG4gIFwidGFiZ29cIixcbiAgXCJ0YWJ1bGFcIixcbiAgXCJ0YWNlb1wiLFxuICBcInRhY3R1c1wiLFxuICBcInRhZWRpdW1cIixcbiAgXCJ0YWxpb1wiLFxuICBcInRhbGlzXCIsXG4gIFwidGFsdXNcIixcbiAgXCJ0YW1cIixcbiAgXCJ0YW1kaXVcIixcbiAgXCJ0YW1lblwiLFxuICBcInRhbWV0c2lcIixcbiAgXCJ0YW1pc2l1bVwiLFxuICBcInRhbXF1YW1cIixcbiAgXCJ0YW5kZW1cIixcbiAgXCJ0YW50aWxsdXNcIixcbiAgXCJ0YW50dW1cIixcbiAgXCJ0YXJkdXNcIixcbiAgXCJ0ZWdvXCIsXG4gIFwidGVtZXJpdGFzXCIsXG4gIFwidGVtcGVyYW50aWFcIixcbiAgXCJ0ZW1wbHVtXCIsXG4gIFwidGVtcHRhdGlvXCIsXG4gIFwidGVtcHVzXCIsXG4gIFwidGVuYXhcIixcbiAgXCJ0ZW5kb1wiLFxuICBcInRlbmVvXCIsXG4gIFwidGVuZXJcIixcbiAgXCJ0ZW51aXNcIixcbiAgXCJ0ZW51c1wiLFxuICBcInRlcGVzY29cIixcbiAgXCJ0ZXBpZHVzXCIsXG4gIFwidGVyXCIsXG4gIFwidGVyZWJyb1wiLFxuICBcInRlcmVzXCIsXG4gIFwidGVyZ2FcIixcbiAgXCJ0ZXJnZW9cIixcbiAgXCJ0ZXJnaXZlcnNhdGlvXCIsXG4gIFwidGVyZ29cIixcbiAgXCJ0ZXJndW1cIixcbiAgXCJ0ZXJtZXNcIixcbiAgXCJ0ZXJtaW5hdGlvXCIsXG4gIFwidGVyb1wiLFxuICBcInRlcnJhXCIsXG4gIFwidGVycmVvXCIsXG4gIFwidGVycml0b1wiLFxuICBcInRlcnJvclwiLFxuICBcInRlcnN1c1wiLFxuICBcInRlcnRpdXNcIixcbiAgXCJ0ZXN0aW1vbml1bVwiLFxuICBcInRleG9cIixcbiAgXCJ0ZXh0aWxpc1wiLFxuICBcInRleHRvclwiLFxuICBcInRleHR1c1wiLFxuICBcInRoYWxhc3NpbnVzXCIsXG4gIFwidGhlYXRydW1cIixcbiAgXCJ0aGVjYVwiLFxuICBcInRoZW1hXCIsXG4gIFwidGhlb2xvZ3VzXCIsXG4gIFwidGhlcm1hZVwiLFxuICBcInRoZXNhdXJ1c1wiLFxuICBcInRoZXNpc1wiLFxuICBcInRob3JheFwiLFxuICBcInRoeW1icmFcIixcbiAgXCJ0aHltdW1cIixcbiAgXCJ0aWJpXCIsXG4gIFwidGltaWR1c1wiLFxuICBcInRpbW9yXCIsXG4gIFwidGl0dWx1c1wiLFxuICBcInRvbGVyb1wiLFxuICBcInRvbGxvXCIsXG4gIFwidG9uZGVvXCIsXG4gIFwidG9uc29yXCIsXG4gIFwidG9ycXVlb1wiLFxuICBcInRvcnJlbnNcIixcbiAgXCJ0b3RcIixcbiAgXCJ0b3RpZGVtXCIsXG4gIFwidG90aWVzXCIsXG4gIFwidG90dXNcIixcbiAgXCJ0cmFjdG9cIixcbiAgXCJ0cmFkb1wiLFxuICBcInRyYWhvXCIsXG4gIFwidHJhbnNcIixcbiAgXCJ0cmVkZWNpbVwiLFxuICBcInRyZW1vXCIsXG4gIFwidHJlcGlkZVwiLFxuICBcInRyZXNcIixcbiAgXCJ0cmlidW9cIixcbiAgXCJ0cmljZXNpbXVzXCIsXG4gIFwidHJpZHVhbmFcIixcbiAgXCJ0cmlnaW50YVwiLFxuICBcInRyaXB1ZGlvXCIsXG4gIFwidHJpc3Rpc1wiLFxuICBcInRyaXVtcGh1c1wiLFxuICBcInRydWNpZG9cIixcbiAgXCJ0cnVjdWxlbnRlclwiLFxuICBcInR1YmluZXVzXCIsXG4gIFwidHVpXCIsXG4gIFwidHVtXCIsXG4gIFwidHVtdWx0dXNcIixcbiAgXCJ0dW5jXCIsXG4gIFwidHVyYmFcIixcbiAgXCJ0dXJib1wiLFxuICBcInR1cnBlXCIsXG4gIFwidHVycGlzXCIsXG4gIFwidHV0YW1lblwiLFxuICBcInR1dGlzXCIsXG4gIFwidHlyYW5udXNcIixcbiAgXCJ1YmVycmltZVwiLFxuICBcInViaVwiLFxuICBcInVsY2lzY29yXCIsXG4gIFwidWxsdXNcIixcbiAgXCJ1bHRlcml1c1wiLFxuICBcInVsdGlvXCIsXG4gIFwidWx0cmFcIixcbiAgXCJ1bWJyYVwiLFxuICBcInVtZXJ1c1wiLFxuICBcInVtcXVhbVwiLFxuICBcInVuYVwiLFxuICBcInVuZGVcIixcbiAgXCJ1bmRpcXVlXCIsXG4gIFwidW5pdmVyc2VcIixcbiAgXCJ1bnVzXCIsXG4gIFwidXJiYW51c1wiLFxuICBcInVyYnNcIixcbiAgXCJ1cmVkb1wiLFxuICBcInVzaXRhc1wiLFxuICBcInVzcXVlXCIsXG4gIFwidXN0aWxvXCIsXG4gIFwidXN0dWxvXCIsXG4gIFwidXN1c1wiLFxuICBcInV0ZXJcIixcbiAgXCJ1dGVycXVlXCIsXG4gIFwidXRpbGlzXCIsXG4gIFwidXRpcXVlXCIsXG4gIFwidXRvclwiLFxuICBcInV0cG90ZVwiLFxuICBcInV0cmltcXVlXCIsXG4gIFwidXRyb3F1ZVwiLFxuICBcInV0cnVtXCIsXG4gIFwidXhvclwiLFxuICBcInZhY29cIixcbiAgXCJ2YWN1dXNcIixcbiAgXCJ2YWRvXCIsXG4gIFwidmFlXCIsXG4gIFwidmFsZGVcIixcbiAgXCJ2YWxlbnNcIixcbiAgXCJ2YWxlb1wiLFxuICBcInZhbGV0dWRvXCIsXG4gIFwidmFsaWR1c1wiLFxuICBcInZhbGx1bVwiLFxuICBcInZhcHVsdXNcIixcbiAgXCJ2YXJpZXRhc1wiLFxuICBcInZhcml1c1wiLFxuICBcInZlaGVtZW5zXCIsXG4gIFwidmVsXCIsXG4gIFwidmVsb2NpdGVyXCIsXG4gIFwidmVsdW1cIixcbiAgXCJ2ZWx1dFwiLFxuICBcInZlbmlhXCIsXG4gIFwidmVuaW9cIixcbiAgXCJ2ZW50aXRvXCIsXG4gIFwidmVudG9zdXNcIixcbiAgXCJ2ZW50dXNcIixcbiAgXCJ2ZW51c3Rhc1wiLFxuICBcInZlclwiLFxuICBcInZlcmJlcmFcIixcbiAgXCJ2ZXJidW1cIixcbiAgXCJ2ZXJlXCIsXG4gIFwidmVyZWN1bmRpYVwiLFxuICBcInZlcmVvclwiLFxuICBcInZlcmdvXCIsXG4gIFwidmVyaXRhc1wiLFxuICBcInZlcm9cIixcbiAgXCJ2ZXJzdXNcIixcbiAgXCJ2ZXJ0b1wiLFxuICBcInZlcnVtdGFtZW5cIixcbiAgXCJ2ZXJ1c1wiLFxuICBcInZlc2NvXCIsXG4gIFwidmVzaWNhXCIsXG4gIFwidmVzcGVyXCIsXG4gIFwidmVzcGlsbG9cIixcbiAgXCJ2ZXN0ZXJcIixcbiAgXCJ2ZXN0aWdpdW1cIixcbiAgXCJ2ZXN0cnVtXCIsXG4gIFwidmV0dXNcIixcbiAgXCJ2aWFcIixcbiAgXCJ2aWNpbnVzXCIsXG4gIFwidmljaXNzaXR1ZG9cIixcbiAgXCJ2aWN0b3JpYVwiLFxuICBcInZpY3R1c1wiLFxuICBcInZpZGVsaWNldFwiLFxuICBcInZpZGVvXCIsXG4gIFwidmlkdWF0YVwiLFxuICBcInZpZHVvXCIsXG4gIFwidmlnaWxvXCIsXG4gIFwidmlnb3JcIixcbiAgXCJ2aWxpY3VzXCIsXG4gIFwidmlsaXNcIixcbiAgXCJ2aWxpdGFzXCIsXG4gIFwidmlsbGFcIixcbiAgXCJ2aW5jb1wiLFxuICBcInZpbmN1bHVtXCIsXG4gIFwidmluZGljb1wiLFxuICBcInZpbml0b3JcIixcbiAgXCJ2aW51bVwiLFxuICBcInZpclwiLFxuICBcInZpcmdhXCIsXG4gIFwidmlyZ29cIixcbiAgXCJ2aXJpZGlzXCIsXG4gIFwidmlyaWxpdGVyXCIsXG4gIFwidmlydHVzXCIsXG4gIFwidmlzXCIsXG4gIFwidmlzY3VzXCIsXG4gIFwidml0YVwiLFxuICBcInZpdGlvc3VzXCIsXG4gIFwidml0aXVtXCIsXG4gIFwidml0b1wiLFxuICBcInZpdm9cIixcbiAgXCJ2aXhcIixcbiAgXCJ2b2Jpc1wiLFxuICBcInZvY2lmZXJvclwiLFxuICBcInZvY29cIixcbiAgXCJ2b2xhdGljdXNcIixcbiAgXCJ2b2xvXCIsXG4gIFwidm9sdWJpbGlzXCIsXG4gIFwidm9sdW50YXJpdXNcIixcbiAgXCJ2b2x1cFwiLFxuICBcInZvbHV0YWJydW1cIixcbiAgXCJ2b2x2YVwiLFxuICBcInZvbWVyXCIsXG4gIFwidm9taWNhXCIsXG4gIFwidm9taXRvXCIsXG4gIFwidm9yYWdvXCIsXG4gIFwidm9yYXhcIixcbiAgXCJ2b3JvXCIsXG4gIFwidm9zXCIsXG4gIFwidm90dW1cIixcbiAgXCJ2b3Zlb1wiLFxuICBcInZveFwiLFxuICBcInZ1bGFyaXRlclwiLFxuICBcInZ1bGdhcmlzXCIsXG4gIFwidnVsZ2l2YWd1c1wiLFxuICBcInZ1bGdvXCIsXG4gIFwidnVsZ3VzXCIsXG4gIFwidnVsbmVyb1wiLFxuICBcInZ1bG51c1wiLFxuICBcInZ1bHBlc1wiLFxuICBcInZ1bHRpY3VsdXNcIixcbiAgXCJ2dWx0dW9zdXNcIixcbiAgXCJ4aXBoaWFzXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFsaWFzXCIsXG4gIFwiY29uc2VxdWF0dXJcIixcbiAgXCJhdXRcIixcbiAgXCJwZXJmZXJlbmRpc1wiLFxuICBcInNpdFwiLFxuICBcInZvbHVwdGF0ZW1cIixcbiAgXCJhY2N1c2FudGl1bVwiLFxuICBcImRvbG9yZW1xdWVcIixcbiAgXCJhcGVyaWFtXCIsXG4gIFwiZWFxdWVcIixcbiAgXCJpcHNhXCIsXG4gIFwicXVhZVwiLFxuICBcImFiXCIsXG4gIFwiaWxsb1wiLFxuICBcImludmVudG9yZVwiLFxuICBcInZlcml0YXRpc1wiLFxuICBcImV0XCIsXG4gIFwicXVhc2lcIixcbiAgXCJhcmNoaXRlY3RvXCIsXG4gIFwiYmVhdGFlXCIsXG4gIFwidml0YWVcIixcbiAgXCJkaWN0YVwiLFxuICBcInN1bnRcIixcbiAgXCJleHBsaWNhYm9cIixcbiAgXCJhc3Blcm5hdHVyXCIsXG4gIFwiYXV0XCIsXG4gIFwib2RpdFwiLFxuICBcImF1dFwiLFxuICBcImZ1Z2l0XCIsXG4gIFwic2VkXCIsXG4gIFwicXVpYVwiLFxuICBcImNvbnNlcXV1bnR1clwiLFxuICBcIm1hZ25pXCIsXG4gIFwiZG9sb3Jlc1wiLFxuICBcImVvc1wiLFxuICBcInF1aVwiLFxuICBcInJhdGlvbmVcIixcbiAgXCJ2b2x1cHRhdGVtXCIsXG4gIFwic2VxdWlcIixcbiAgXCJuZXNjaXVudFwiLFxuICBcIm5lcXVlXCIsXG4gIFwiZG9sb3JlbVwiLFxuICBcImlwc3VtXCIsXG4gIFwicXVpYVwiLFxuICBcImRvbG9yXCIsXG4gIFwic2l0XCIsXG4gIFwiYW1ldFwiLFxuICBcImNvbnNlY3RldHVyXCIsXG4gIFwiYWRpcGlzY2lcIixcbiAgXCJ2ZWxpdFwiLFxuICBcInNlZFwiLFxuICBcInF1aWFcIixcbiAgXCJub25cIixcbiAgXCJudW1xdWFtXCIsXG4gIFwiZWl1c1wiLFxuICBcIm1vZGlcIixcbiAgXCJ0ZW1wb3JhXCIsXG4gIFwiaW5jaWR1bnRcIixcbiAgXCJ1dFwiLFxuICBcImxhYm9yZVwiLFxuICBcImV0XCIsXG4gIFwiZG9sb3JlXCIsXG4gIFwibWFnbmFtXCIsXG4gIFwiYWxpcXVhbVwiLFxuICBcInF1YWVyYXRcIixcbiAgXCJ2b2x1cHRhdGVtXCIsXG4gIFwidXRcIixcbiAgXCJlbmltXCIsXG4gIFwiYWRcIixcbiAgXCJtaW5pbWFcIixcbiAgXCJ2ZW5pYW1cIixcbiAgXCJxdWlzXCIsXG4gIFwibm9zdHJ1bVwiLFxuICBcImV4ZXJjaXRhdGlvbmVtXCIsXG4gIFwidWxsYW1cIixcbiAgXCJjb3Jwb3Jpc1wiLFxuICBcIm5lbW9cIixcbiAgXCJlbmltXCIsXG4gIFwiaXBzYW1cIixcbiAgXCJ2b2x1cHRhdGVtXCIsXG4gIFwicXVpYVwiLFxuICBcInZvbHVwdGFzXCIsXG4gIFwic2l0XCIsXG4gIFwic3VzY2lwaXRcIixcbiAgXCJsYWJvcmlvc2FtXCIsXG4gIFwibmlzaVwiLFxuICBcInV0XCIsXG4gIFwiYWxpcXVpZFwiLFxuICBcImV4XCIsXG4gIFwiZWFcIixcbiAgXCJjb21tb2RpXCIsXG4gIFwiY29uc2VxdWF0dXJcIixcbiAgXCJxdWlzXCIsXG4gIFwiYXV0ZW1cIixcbiAgXCJ2ZWxcIixcbiAgXCJldW1cIixcbiAgXCJpdXJlXCIsXG4gIFwicmVwcmVoZW5kZXJpdFwiLFxuICBcInF1aVwiLFxuICBcImluXCIsXG4gIFwiZWFcIixcbiAgXCJ2b2x1cHRhdGVcIixcbiAgXCJ2ZWxpdFwiLFxuICBcImVzc2VcIixcbiAgXCJxdWFtXCIsXG4gIFwibmloaWxcIixcbiAgXCJtb2xlc3RpYWVcIixcbiAgXCJldFwiLFxuICBcIml1c3RvXCIsXG4gIFwib2Rpb1wiLFxuICBcImRpZ25pc3NpbW9zXCIsXG4gIFwiZHVjaW11c1wiLFxuICBcInF1aVwiLFxuICBcImJsYW5kaXRpaXNcIixcbiAgXCJwcmFlc2VudGl1bVwiLFxuICBcImxhdWRhbnRpdW1cIixcbiAgXCJ0b3RhbVwiLFxuICBcInJlbVwiLFxuICBcInZvbHVwdGF0dW1cIixcbiAgXCJkZWxlbml0aVwiLFxuICBcImF0cXVlXCIsXG4gIFwiY29ycnVwdGlcIixcbiAgXCJxdW9zXCIsXG4gIFwiZG9sb3Jlc1wiLFxuICBcImV0XCIsXG4gIFwicXVhc1wiLFxuICBcIm1vbGVzdGlhc1wiLFxuICBcImV4Y2VwdHVyaVwiLFxuICBcInNpbnRcIixcbiAgXCJvY2NhZWNhdGlcIixcbiAgXCJjdXBpZGl0YXRlXCIsXG4gIFwibm9uXCIsXG4gIFwicHJvdmlkZW50XCIsXG4gIFwic2VkXCIsXG4gIFwidXRcIixcbiAgXCJwZXJzcGljaWF0aXNcIixcbiAgXCJ1bmRlXCIsXG4gIFwib21uaXNcIixcbiAgXCJpc3RlXCIsXG4gIFwibmF0dXNcIixcbiAgXCJlcnJvclwiLFxuICBcInNpbWlsaXF1ZVwiLFxuICBcInN1bnRcIixcbiAgXCJpblwiLFxuICBcImN1bHBhXCIsXG4gIFwicXVpXCIsXG4gIFwib2ZmaWNpYVwiLFxuICBcImRlc2VydW50XCIsXG4gIFwibW9sbGl0aWFcIixcbiAgXCJhbmltaVwiLFxuICBcImlkXCIsXG4gIFwiZXN0XCIsXG4gIFwibGFib3J1bVwiLFxuICBcImV0XCIsXG4gIFwiZG9sb3J1bVwiLFxuICBcImZ1Z2FcIixcbiAgXCJldFwiLFxuICBcImhhcnVtXCIsXG4gIFwicXVpZGVtXCIsXG4gIFwicmVydW1cIixcbiAgXCJmYWNpbGlzXCIsXG4gIFwiZXN0XCIsXG4gIFwiZXRcIixcbiAgXCJleHBlZGl0YVwiLFxuICBcImRpc3RpbmN0aW9cIixcbiAgXCJuYW1cIixcbiAgXCJsaWJlcm9cIixcbiAgXCJ0ZW1wb3JlXCIsXG4gIFwiY3VtXCIsXG4gIFwic29sdXRhXCIsXG4gIFwibm9iaXNcIixcbiAgXCJlc3RcIixcbiAgXCJlbGlnZW5kaVwiLFxuICBcIm9wdGlvXCIsXG4gIFwiY3VtcXVlXCIsXG4gIFwibmloaWxcIixcbiAgXCJpbXBlZGl0XCIsXG4gIFwicXVvXCIsXG4gIFwicG9ycm9cIixcbiAgXCJxdWlzcXVhbVwiLFxuICBcImVzdFwiLFxuICBcInF1aVwiLFxuICBcIm1pbnVzXCIsXG4gIFwiaWRcIixcbiAgXCJxdW9kXCIsXG4gIFwibWF4aW1lXCIsXG4gIFwicGxhY2VhdFwiLFxuICBcImZhY2VyZVwiLFxuICBcInBvc3NpbXVzXCIsXG4gIFwib21uaXNcIixcbiAgXCJ2b2x1cHRhc1wiLFxuICBcImFzc3VtZW5kYVwiLFxuICBcImVzdFwiLFxuICBcIm9tbmlzXCIsXG4gIFwiZG9sb3JcIixcbiAgXCJyZXBlbGxlbmR1c1wiLFxuICBcInRlbXBvcmlidXNcIixcbiAgXCJhdXRlbVwiLFxuICBcInF1aWJ1c2RhbVwiLFxuICBcImV0XCIsXG4gIFwiYXV0XCIsXG4gIFwiY29uc2VxdWF0dXJcIixcbiAgXCJ2ZWxcIixcbiAgXCJpbGx1bVwiLFxuICBcInF1aVwiLFxuICBcImRvbG9yZW1cIixcbiAgXCJldW1cIixcbiAgXCJmdWdpYXRcIixcbiAgXCJxdW9cIixcbiAgXCJ2b2x1cHRhc1wiLFxuICBcIm51bGxhXCIsXG4gIFwicGFyaWF0dXJcIixcbiAgXCJhdFwiLFxuICBcInZlcm9cIixcbiAgXCJlb3NcIixcbiAgXCJldFwiLFxuICBcImFjY3VzYW11c1wiLFxuICBcIm9mZmljaWlzXCIsXG4gIFwiZGViaXRpc1wiLFxuICBcImF1dFwiLFxuICBcInJlcnVtXCIsXG4gIFwibmVjZXNzaXRhdGlidXNcIixcbiAgXCJzYWVwZVwiLFxuICBcImV2ZW5pZXRcIixcbiAgXCJ1dFwiLFxuICBcImV0XCIsXG4gIFwidm9sdXB0YXRlc1wiLFxuICBcInJlcHVkaWFuZGFlXCIsXG4gIFwic2ludFwiLFxuICBcImV0XCIsXG4gIFwibW9sZXN0aWFlXCIsXG4gIFwibm9uXCIsXG4gIFwicmVjdXNhbmRhZVwiLFxuICBcIml0YXF1ZVwiLFxuICBcImVhcnVtXCIsXG4gIFwicmVydW1cIixcbiAgXCJoaWNcIixcbiAgXCJ0ZW5ldHVyXCIsXG4gIFwiYVwiLFxuICBcInNhcGllbnRlXCIsXG4gIFwiZGVsZWN0dXNcIixcbiAgXCJ1dFwiLFxuICBcImF1dFwiLFxuICBcInJlaWNpZW5kaXNcIixcbiAgXCJ2b2x1cHRhdGlidXNcIixcbiAgXCJtYWlvcmVzXCIsXG4gIFwiZG9sb3JpYnVzXCIsXG4gIFwiYXNwZXJpb3Jlc1wiLFxuICBcInJlcGVsbGF0XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFhbGl5YWhcIixcbiAgXCJBYXJvblwiLFxuICBcIkFiYWdhaWxcIixcbiAgXCJBYmJleVwiLFxuICBcIkFiYmllXCIsXG4gIFwiQWJiaWdhaWxcIixcbiAgXCJBYmJ5XCIsXG4gIFwiQWJkaWVsXCIsXG4gIFwiQWJkdWxcIixcbiAgXCJBYmR1bGxhaFwiLFxuICBcIkFiZVwiLFxuICBcIkFiZWxcIixcbiAgXCJBYmVsYXJkb1wiLFxuICBcIkFiaWdhaWxcIixcbiAgXCJBYmlnYWxlXCIsXG4gIFwiQWJpZ2F5bGVcIixcbiAgXCJBYm5lclwiLFxuICBcIkFicmFoYW1cIixcbiAgXCJBZGFcIixcbiAgXCJBZGFoXCIsXG4gIFwiQWRhbGJlcnRvXCIsXG4gIFwiQWRhbGluZVwiLFxuICBcIkFkYW1cIixcbiAgXCJBZGFuXCIsXG4gIFwiQWRkaWVcIixcbiAgXCJBZGRpc29uXCIsXG4gIFwiQWRlbGFcIixcbiAgXCJBZGVsYmVydFwiLFxuICBcIkFkZWxlXCIsXG4gIFwiQWRlbGlhXCIsXG4gIFwiQWRlbGluZVwiLFxuICBcIkFkZWxsXCIsXG4gIFwiQWRlbGxhXCIsXG4gIFwiQWRlbGxlXCIsXG4gIFwiQWRpdHlhXCIsXG4gIFwiQWRvbGZcIixcbiAgXCJBZG9sZm9cIixcbiAgXCJBZG9scGhcIixcbiAgXCJBZG9scGh1c1wiLFxuICBcIkFkb25pc1wiLFxuICBcIkFkcmFpblwiLFxuICBcIkFkcmlhblwiLFxuICBcIkFkcmlhbmFcIixcbiAgXCJBZHJpYW5uYVwiLFxuICBcIkFkcmllbFwiLFxuICBcIkFkcmllblwiLFxuICBcIkFkcmllbm5lXCIsXG4gIFwiQWZ0b25cIixcbiAgXCJBZ2xhZVwiLFxuICBcIkFnbmVzXCIsXG4gIFwiQWd1c3RpblwiLFxuICBcIkFndXN0aW5hXCIsXG4gIFwiQWhtYWRcIixcbiAgXCJBaG1lZFwiLFxuICBcIkFpZGFcIixcbiAgXCJBaWRhblwiLFxuICBcIkFpZGVuXCIsXG4gIFwiQWlsZWVuXCIsXG4gIFwiQWltZWVcIixcbiAgXCJBaXNoYVwiLFxuICBcIkFpeWFuYVwiLFxuICBcIkFrZWVtXCIsXG4gIFwiQWxcIixcbiAgXCJBbGFpbmFcIixcbiAgXCJBbGFuXCIsXG4gIFwiQWxhbmFcIixcbiAgXCJBbGFuaXNcIixcbiAgXCJBbGFubmFcIixcbiAgXCJBbGF5bmFcIixcbiAgXCJBbGJhXCIsXG4gIFwiQWxiZXJ0XCIsXG4gIFwiQWxiZXJ0YVwiLFxuICBcIkFsYmVydGhhXCIsXG4gIFwiQWxiZXJ0b1wiLFxuICBcIkFsYmluXCIsXG4gIFwiQWxiaW5hXCIsXG4gIFwiQWxkYVwiLFxuICBcIkFsZGVuXCIsXG4gIFwiQWxlY1wiLFxuICBcIkFsZWVuXCIsXG4gIFwiQWxlamFuZHJhXCIsXG4gIFwiQWxlamFuZHJpblwiLFxuICBcIkFsZWtcIixcbiAgXCJBbGVuYVwiLFxuICBcIkFsZW5lXCIsXG4gIFwiQWxlc3NhbmRyYVwiLFxuICBcIkFsZXNzYW5kcm9cIixcbiAgXCJBbGVzc2lhXCIsXG4gIFwiQWxldGhhXCIsXG4gIFwiQWxleFwiLFxuICBcIkFsZXhhXCIsXG4gIFwiQWxleGFuZGVyXCIsXG4gIFwiQWxleGFuZHJhXCIsXG4gIFwiQWxleGFuZHJlXCIsXG4gIFwiQWxleGFuZHJlYVwiLFxuICBcIkFsZXhhbmRyaWFcIixcbiAgXCJBbGV4YW5kcmluZVwiLFxuICBcIkFsZXhhbmRyb1wiLFxuICBcIkFsZXhhbmVcIixcbiAgXCJBbGV4YW5uZVwiLFxuICBcIkFsZXhpZVwiLFxuICBcIkFsZXhpc1wiLFxuICBcIkFsZXh5c1wiLFxuICBcIkFsZXh6YW5kZXJcIixcbiAgXCJBbGZcIixcbiAgXCJBbGZvbnNvXCIsXG4gIFwiQWxmb256b1wiLFxuICBcIkFsZm9yZFwiLFxuICBcIkFsZnJlZFwiLFxuICBcIkFsZnJlZGFcIixcbiAgXCJBbGZyZWRvXCIsXG4gIFwiQWxpXCIsXG4gIFwiQWxpYVwiLFxuICBcIkFsaWNlXCIsXG4gIFwiQWxpY2lhXCIsXG4gIFwiQWxpc2FcIixcbiAgXCJBbGlzaGFcIixcbiAgXCJBbGlzb25cIixcbiAgXCJBbGl2aWFcIixcbiAgXCJBbGl5YVwiLFxuICBcIkFsaXlhaFwiLFxuICBcIkFsaXphXCIsXG4gIFwiQWxpemVcIixcbiAgXCJBbGxhblwiLFxuICBcIkFsbGVuXCIsXG4gIFwiQWxsZW5lXCIsXG4gIFwiQWxsaWVcIixcbiAgXCJBbGxpc29uXCIsXG4gIFwiQWxseVwiLFxuICBcIkFscGhvbnNvXCIsXG4gIFwiQWx0YVwiLFxuICBcIkFsdGhlYVwiLFxuICBcIkFsdmFcIixcbiAgXCJBbHZhaFwiLFxuICBcIkFsdmVuYVwiLFxuICBcIkFsdmVyYVwiLFxuICBcIkFsdmVydGFcIixcbiAgXCJBbHZpbmFcIixcbiAgXCJBbHZpc1wiLFxuICBcIkFseWNlXCIsXG4gIFwiQWx5Y2lhXCIsXG4gIFwiQWx5c2FcIixcbiAgXCJBbHlzaGFcIixcbiAgXCJBbHlzb25cIixcbiAgXCJBbHlzc29uXCIsXG4gIFwiQW1hbGlhXCIsXG4gIFwiQW1hbmRhXCIsXG4gIFwiQW1hbmlcIixcbiAgXCJBbWFyYVwiLFxuICBcIkFtYXJpXCIsXG4gIFwiQW1heWFcIixcbiAgXCJBbWJlclwiLFxuICBcIkFtYnJvc2VcIixcbiAgXCJBbWVsaWFcIixcbiAgXCJBbWVsaWVcIixcbiAgXCJBbWVseVwiLFxuICBcIkFtZXJpY2FcIixcbiAgXCJBbWVyaWNvXCIsXG4gIFwiQW1pZVwiLFxuICBcIkFtaW5hXCIsXG4gIFwiQW1pclwiLFxuICBcIkFtaXJhXCIsXG4gIFwiQW1peWFcIixcbiAgXCJBbW9zXCIsXG4gIFwiQW1wYXJvXCIsXG4gIFwiQW15XCIsXG4gIFwiQW15YVwiLFxuICBcIkFuYVwiLFxuICBcIkFuYWJlbFwiLFxuICBcIkFuYWJlbGxlXCIsXG4gIFwiQW5haGlcIixcbiAgXCJBbmFpc1wiLFxuICBcIkFuYXN0YWNpb1wiLFxuICBcIkFuYXN0YXNpYVwiLFxuICBcIkFuZGVyc29uXCIsXG4gIFwiQW5kcmVcIixcbiAgXCJBbmRyZWFuZVwiLFxuICBcIkFuZHJlYW5uZVwiLFxuICBcIkFuZHJlc1wiLFxuICBcIkFuZHJld1wiLFxuICBcIkFuZHlcIixcbiAgXCJBbmdlbFwiLFxuICBcIkFuZ2VsYVwiLFxuICBcIkFuZ2VsaWNhXCIsXG4gIFwiQW5nZWxpbmFcIixcbiAgXCJBbmdlbGluZVwiLFxuICBcIkFuZ2VsaXRhXCIsXG4gIFwiQW5nZWxvXCIsXG4gIFwiQW5naWVcIixcbiAgXCJBbmd1c1wiLFxuICBcIkFuaWJhbFwiLFxuICBcIkFuaWthXCIsXG4gIFwiQW5pc3NhXCIsXG4gIFwiQW5pdGFcIixcbiAgXCJBbml5YVwiLFxuICBcIkFuaXlhaFwiLFxuICBcIkFuamFsaVwiLFxuICBcIkFubmFcIixcbiAgXCJBbm5hYmVsXCIsXG4gIFwiQW5uYWJlbGxcIixcbiAgXCJBbm5hYmVsbGVcIixcbiAgXCJBbm5hbGlzZVwiLFxuICBcIkFubmFtYWVcIixcbiAgXCJBbm5hbWFyaWVcIixcbiAgXCJBbm5lXCIsXG4gIFwiQW5uZXR0YVwiLFxuICBcIkFubmV0dGVcIixcbiAgXCJBbm5pZVwiLFxuICBcIkFuc2VsXCIsXG4gIFwiQW5zbGV5XCIsXG4gIFwiQW50aG9ueVwiLFxuICBcIkFudG9pbmV0dGVcIixcbiAgXCJBbnRvbmVcIixcbiAgXCJBbnRvbmV0dGFcIixcbiAgXCJBbnRvbmV0dGVcIixcbiAgXCJBbnRvbmlhXCIsXG4gIFwiQW50b25pZXR0YVwiLFxuICBcIkFudG9uaW5hXCIsXG4gIFwiQW50b25pb1wiLFxuICBcIkFudHdhblwiLFxuICBcIkFudHdvblwiLFxuICBcIkFueWFcIixcbiAgXCJBcHJpbFwiLFxuICBcIkFyYVwiLFxuICBcIkFyYWNlbGlcIixcbiAgXCJBcmFjZWx5XCIsXG4gIFwiQXJjaFwiLFxuICBcIkFyY2hpYmFsZFwiLFxuICBcIkFyZGVsbGFcIixcbiAgXCJBcmRlblwiLFxuICBcIkFyZGl0aFwiLFxuICBcIkFyZWx5XCIsXG4gIFwiQXJpXCIsXG4gIFwiQXJpYW5lXCIsXG4gIFwiQXJpYW5uYVwiLFxuICBcIkFyaWNcIixcbiAgXCJBcmllbFwiLFxuICBcIkFyaWVsbGVcIixcbiAgXCJBcmp1blwiLFxuICBcIkFybGVuZVwiLFxuICBcIkFybGllXCIsXG4gIFwiQXJsb1wiLFxuICBcIkFybWFuZFwiLFxuICBcIkFybWFuZG9cIixcbiAgXCJBcm1hbmlcIixcbiAgXCJBcm5hbGRvXCIsXG4gIFwiQXJuZVwiLFxuICBcIkFybm9cIixcbiAgXCJBcm5vbGRcIixcbiAgXCJBcm5vbGRvXCIsXG4gIFwiQXJudWxmb1wiLFxuICBcIkFyb25cIixcbiAgXCJBcnRcIixcbiAgXCJBcnRodXJcIixcbiAgXCJBcnR1cm9cIixcbiAgXCJBcnZlbFwiLFxuICBcIkFydmlkXCIsXG4gIFwiQXJ2aWxsYVwiLFxuICBcIkFyeWFubmFcIixcbiAgXCJBc2FcIixcbiAgXCJBc2hhXCIsXG4gIFwiQXNobGVlXCIsXG4gIFwiQXNobGVpZ2hcIixcbiAgXCJBc2hsZXlcIixcbiAgXCJBc2hseVwiLFxuICBcIkFzaGx5bm5cIixcbiAgXCJBc2h0b25cIixcbiAgXCJBc2h0eW5cIixcbiAgXCJBc2lhXCIsXG4gIFwiQXNzdW50YVwiLFxuICBcIkFzdHJpZFwiLFxuICBcIkF0aGVuYVwiLFxuICBcIkF1YnJlZVwiLFxuICBcIkF1YnJleVwiLFxuICBcIkF1ZGllXCIsXG4gIFwiQXVkcmFcIixcbiAgXCJBdWRyZWFubmVcIixcbiAgXCJBdWRyZXlcIixcbiAgXCJBdWd1c3RcIixcbiAgXCJBdWd1c3RhXCIsXG4gIFwiQXVndXN0aW5lXCIsXG4gIFwiQXVndXN0dXNcIixcbiAgXCJBdXJlbGlhXCIsXG4gIFwiQXVyZWxpZVwiLFxuICBcIkF1cmVsaW9cIixcbiAgXCJBdXJvcmVcIixcbiAgXCJBdXN0ZW5cIixcbiAgXCJBdXN0aW5cIixcbiAgXCJBdXN0eW5cIixcbiAgXCJBdXR1bW5cIixcbiAgXCJBdmFcIixcbiAgXCJBdmVyeVwiLFxuICBcIkF2aXNcIixcbiAgXCJBeGVsXCIsXG4gIFwiQXlhbmFcIixcbiAgXCJBeWRlblwiLFxuICBcIkF5bGFcIixcbiAgXCJBeWxpblwiLFxuICBcIkJhYnlcIixcbiAgXCJCYWlsZWVcIixcbiAgXCJCYWlsZXlcIixcbiAgXCJCYXJiYXJhXCIsXG4gIFwiQmFybmV5XCIsXG4gIFwiQmFyb25cIixcbiAgXCJCYXJyZXR0XCIsXG4gIFwiQmFycnlcIixcbiAgXCJCYXJ0XCIsXG4gIFwiQmFydGhvbG9tZVwiLFxuICBcIkJhcnRvblwiLFxuICBcIkJheWxlZVwiLFxuICBcIkJlYXRyaWNlXCIsXG4gIFwiQmVhdVwiLFxuICBcIkJlYXVsYWhcIixcbiAgXCJCZWxsXCIsXG4gIFwiQmVsbGFcIixcbiAgXCJCZWxsZVwiLFxuICBcIkJlblwiLFxuICBcIkJlbmVkaWN0XCIsXG4gIFwiQmVuamFtaW5cIixcbiAgXCJCZW5uZXR0XCIsXG4gIFwiQmVubmllXCIsXG4gIFwiQmVubnlcIixcbiAgXCJCZW50b25cIixcbiAgXCJCZXJlbmljZVwiLFxuICBcIkJlcm5hZGV0dGVcIixcbiAgXCJCZXJuYWRpbmVcIixcbiAgXCJCZXJuYXJkXCIsXG4gIFwiQmVybmFyZG9cIixcbiAgXCJCZXJuZWljZVwiLFxuICBcIkJlcm5oYXJkXCIsXG4gIFwiQmVybmljZVwiLFxuICBcIkJlcm5pZVwiLFxuICBcIkJlcm5pZWNlXCIsXG4gIFwiQmVybml0YVwiLFxuICBcIkJlcnJ5XCIsXG4gIFwiQmVydFwiLFxuICBcIkJlcnRhXCIsXG4gIFwiQmVydGhhXCIsXG4gIFwiQmVydHJhbVwiLFxuICBcIkJlcnRyYW5kXCIsXG4gIFwiQmVyeWxcIixcbiAgXCJCZXNzaWVcIixcbiAgXCJCZXRoXCIsXG4gIFwiQmV0aGFueVwiLFxuICBcIkJldGhlbFwiLFxuICBcIkJldHN5XCIsXG4gIFwiQmV0dGVcIixcbiAgXCJCZXR0aWVcIixcbiAgXCJCZXR0eVwiLFxuICBcIkJldHR5ZVwiLFxuICBcIkJldWxhaFwiLFxuICBcIkJldmVybHlcIixcbiAgXCJCaWFua2FcIixcbiAgXCJCaWxsXCIsXG4gIFwiQmlsbGllXCIsXG4gIFwiQmlsbHlcIixcbiAgXCJCaXJkaWVcIixcbiAgXCJCbGFpclwiLFxuICBcIkJsYWlzZVwiLFxuICBcIkJsYWtlXCIsXG4gIFwiQmxhbmNhXCIsXG4gIFwiQmxhbmNoZVwiLFxuICBcIkJsYXplXCIsXG4gIFwiQm9cIixcbiAgXCJCb2JiaWVcIixcbiAgXCJCb2JieVwiLFxuICBcIkJvbml0YVwiLFxuICBcIkJvbm5pZVwiLFxuICBcIkJvcmlzXCIsXG4gIFwiQm95ZFwiLFxuICBcIkJyYWRcIixcbiAgXCJCcmFkZW5cIixcbiAgXCJCcmFkZm9yZFwiLFxuICBcIkJyYWRsZXlcIixcbiAgXCJCcmFkbHlcIixcbiAgXCJCcmFkeVwiLFxuICBcIkJyYWVkZW5cIixcbiAgXCJCcmFpblwiLFxuICBcIkJyYW5kaVwiLFxuICBcIkJyYW5kb1wiLFxuICBcIkJyYW5kb25cIixcbiAgXCJCcmFuZHRcIixcbiAgXCJCcmFuZHlcIixcbiAgXCJCcmFuZHluXCIsXG4gIFwiQnJhbm5vblwiLFxuICBcIkJyYW5zb25cIixcbiAgXCJCcmFudFwiLFxuICBcIkJyYXVsaW9cIixcbiAgXCJCcmF4dG9uXCIsXG4gIFwiQnJheWFuXCIsXG4gIFwiQnJlYW5hXCIsXG4gIFwiQnJlYW5uYVwiLFxuICBcIkJyZWFubmVcIixcbiAgXCJCcmVuZGFcIixcbiAgXCJCcmVuZGFuXCIsXG4gIFwiQnJlbmRlblwiLFxuICBcIkJyZW5kb25cIixcbiAgXCJCcmVubmFcIixcbiAgXCJCcmVubmFuXCIsXG4gIFwiQnJlbm5vblwiLFxuICBcIkJyZW50XCIsXG4gIFwiQnJldFwiLFxuICBcIkJyZXR0XCIsXG4gIFwiQnJpYVwiLFxuICBcIkJyaWFuXCIsXG4gIFwiQnJpYW5hXCIsXG4gIFwiQnJpYW5uZVwiLFxuICBcIkJyaWNlXCIsXG4gIFwiQnJpZGdldFwiLFxuICBcIkJyaWRnZXR0ZVwiLFxuICBcIkJyaWRpZVwiLFxuICBcIkJyaWVsbGVcIixcbiAgXCJCcmlnaXR0ZVwiLFxuICBcIkJyaW9ubmFcIixcbiAgXCJCcmlzYVwiLFxuICBcIkJyaXRuZXlcIixcbiAgXCJCcml0dGFueVwiLFxuICBcIkJyb2NrXCIsXG4gIFwiQnJvZGVyaWNrXCIsXG4gIFwiQnJvZHlcIixcbiAgXCJCcm9va1wiLFxuICBcIkJyb29rZVwiLFxuICBcIkJyb29rbHluXCIsXG4gIFwiQnJvb2tzXCIsXG4gIFwiQnJvd25cIixcbiAgXCJCcnVjZVwiLFxuICBcIkJyeWFuYVwiLFxuICBcIkJyeWNlXCIsXG4gIFwiQnJ5Y2VuXCIsXG4gIFwiQnJ5b25cIixcbiAgXCJCdWNrXCIsXG4gIFwiQnVkXCIsXG4gIFwiQnVkZHlcIixcbiAgXCJCdWZvcmRcIixcbiAgXCJCdWxhaFwiLFxuICBcIkJ1cmRldHRlXCIsXG4gIFwiQnVybGV5XCIsXG4gIFwiQnVybmljZVwiLFxuICBcIkJ1c3RlclwiLFxuICBcIkNhZGVcIixcbiAgXCJDYWRlblwiLFxuICBcIkNhZXNhclwiLFxuICBcIkNhaXRseW5cIixcbiAgXCJDYWxlXCIsXG4gIFwiQ2FsZWJcIixcbiAgXCJDYWxlaWdoXCIsXG4gIFwiQ2FsaVwiLFxuICBcIkNhbGlzdGFcIixcbiAgXCJDYWxsaWVcIixcbiAgXCJDYW1kZW5cIixcbiAgXCJDYW1lcm9uXCIsXG4gIFwiQ2FtaWxhXCIsXG4gIFwiQ2FtaWxsYVwiLFxuICBcIkNhbWlsbGVcIixcbiAgXCJDYW1yZW5cIixcbiAgXCJDYW1yb25cIixcbiAgXCJDYW1yeW5cIixcbiAgXCJDYW15bGxlXCIsXG4gIFwiQ2FuZGFjZVwiLFxuICBcIkNhbmRlbGFyaW9cIixcbiAgXCJDYW5kaWNlXCIsXG4gIFwiQ2FuZGlkYVwiLFxuICBcIkNhbmRpZG9cIixcbiAgXCJDYXJhXCIsXG4gIFwiQ2FyZXlcIixcbiAgXCJDYXJpc3NhXCIsXG4gIFwiQ2FybGVlXCIsXG4gIFwiQ2FybGV0b25cIixcbiAgXCJDYXJsZXlcIixcbiAgXCJDYXJsaVwiLFxuICBcIkNhcmxpZVwiLFxuICBcIkNhcmxvXCIsXG4gIFwiQ2FybG9zXCIsXG4gIFwiQ2FybG90dGFcIixcbiAgXCJDYXJtZWxcIixcbiAgXCJDYXJtZWxhXCIsXG4gIFwiQ2FybWVsbGFcIixcbiAgXCJDYXJtZWxvXCIsXG4gIFwiQ2FybWVuXCIsXG4gIFwiQ2FybWluZVwiLFxuICBcIkNhcm9sXCIsXG4gIFwiQ2Fyb2xhbm5lXCIsXG4gIFwiQ2Fyb2xlXCIsXG4gIFwiQ2Fyb2xpbmFcIixcbiAgXCJDYXJvbGluZVwiLFxuICBcIkNhcm9seW5cIixcbiAgXCJDYXJvbHluZVwiLFxuICBcIkNhcnJpZVwiLFxuICBcIkNhcnJvbGxcIixcbiAgXCJDYXJzb25cIixcbiAgXCJDYXJ0ZXJcIixcbiAgXCJDYXJ5XCIsXG4gIFwiQ2FzYW5kcmFcIixcbiAgXCJDYXNleVwiLFxuICBcIkNhc2ltZXJcIixcbiAgXCJDYXNpbWlyXCIsXG4gIFwiQ2FzcGVyXCIsXG4gIFwiQ2Fzc2FuZHJhXCIsXG4gIFwiQ2Fzc2FuZHJlXCIsXG4gIFwiQ2Fzc2lkeVwiLFxuICBcIkNhc3NpZVwiLFxuICBcIkNhdGFsaW5hXCIsXG4gIFwiQ2F0ZXJpbmFcIixcbiAgXCJDYXRoYXJpbmVcIixcbiAgXCJDYXRoZXJpbmVcIixcbiAgXCJDYXRocmluZVwiLFxuICBcIkNhdGhyeW5cIixcbiAgXCJDYXRoeVwiLFxuICBcIkNheWxhXCIsXG4gIFwiQ2Vhc2FyXCIsXG4gIFwiQ2VjZWxpYVwiLFxuICBcIkNlY2lsXCIsXG4gIFwiQ2VjaWxlXCIsXG4gIFwiQ2VjaWxpYVwiLFxuICBcIkNlZHJpY2tcIixcbiAgXCJDZWxlc3RpbmVcIixcbiAgXCJDZWxlc3Rpbm9cIixcbiAgXCJDZWxpYVwiLFxuICBcIkNlbGluZVwiLFxuICBcIkNlc2FyXCIsXG4gIFwiQ2hhZFwiLFxuICBcIkNoYWRkXCIsXG4gIFwiQ2hhZHJpY2tcIixcbiAgXCJDaGFpbVwiLFxuICBcIkNoYW5jZVwiLFxuICBcIkNoYW5kbGVyXCIsXG4gIFwiQ2hhbmVsXCIsXG4gIFwiQ2hhbmVsbGVcIixcbiAgXCJDaGFyaXR5XCIsXG4gIFwiQ2hhcmxlbmVcIixcbiAgXCJDaGFybGVzXCIsXG4gIFwiQ2hhcmxleVwiLFxuICBcIkNoYXJsaWVcIixcbiAgXCJDaGFybG90dGVcIixcbiAgXCJDaGFzZVwiLFxuICBcIkNoYXNpdHlcIixcbiAgXCJDaGF1bmNleVwiLFxuICBcIkNoYXlhXCIsXG4gIFwiQ2hhelwiLFxuICBcIkNoZWxzZWFcIixcbiAgXCJDaGVsc2V5XCIsXG4gIFwiQ2hlbHNpZVwiLFxuICBcIkNoZXNsZXlcIixcbiAgXCJDaGVzdGVyXCIsXG4gIFwiQ2hldFwiLFxuICBcIkNoZXlhbm5lXCIsXG4gIFwiQ2hleWVubmVcIixcbiAgXCJDaGxvZVwiLFxuICBcIkNocmlzXCIsXG4gIFwiQ2hyaXN0XCIsXG4gIFwiQ2hyaXN0YVwiLFxuICBcIkNocmlzdGVsbGVcIixcbiAgXCJDaHJpc3RpYW5cIixcbiAgXCJDaHJpc3RpYW5hXCIsXG4gIFwiQ2hyaXN0aW5hXCIsXG4gIFwiQ2hyaXN0aW5lXCIsXG4gIFwiQ2hyaXN0b3BcIixcbiAgXCJDaHJpc3RvcGhlXCIsXG4gIFwiQ2hyaXN0b3BoZXJcIixcbiAgXCJDaHJpc3R5XCIsXG4gIFwiQ2h5bmFcIixcbiAgXCJDaWFyYVwiLFxuICBcIkNpY2Vyb1wiLFxuICBcIkNpZWxvXCIsXG4gIFwiQ2llcnJhXCIsXG4gIFwiQ2luZHlcIixcbiAgXCJDaXRsYWxsaVwiLFxuICBcIkNsYWlyXCIsXG4gIFwiQ2xhaXJlXCIsXG4gIFwiQ2xhcmFcIixcbiAgXCJDbGFyYWJlbGxlXCIsXG4gIFwiQ2xhcmVcIixcbiAgXCJDbGFyaXNzYVwiLFxuICBcIkNsYXJrXCIsXG4gIFwiQ2xhdWRcIixcbiAgXCJDbGF1ZGVcIixcbiAgXCJDbGF1ZGlhXCIsXG4gIFwiQ2xhdWRpZVwiLFxuICBcIkNsYXVkaW5lXCIsXG4gIFwiQ2xheVwiLFxuICBcIkNsZW1lbnNcIixcbiAgXCJDbGVtZW50XCIsXG4gIFwiQ2xlbWVudGluYVwiLFxuICBcIkNsZW1lbnRpbmVcIixcbiAgXCJDbGVtbWllXCIsXG4gIFwiQ2xlb1wiLFxuICBcIkNsZW9yYVwiLFxuICBcIkNsZXRhXCIsXG4gIFwiQ2xldHVzXCIsXG4gIFwiQ2xldmVcIixcbiAgXCJDbGV2ZWxhbmRcIixcbiAgXCJDbGlmZm9yZFwiLFxuICBcIkNsaWZ0b25cIixcbiAgXCJDbGludFwiLFxuICBcIkNsaW50b25cIixcbiAgXCJDbG90aWxkZVwiLFxuICBcIkNsb3Zpc1wiLFxuICBcIkNsb3lkXCIsXG4gIFwiQ2x5ZGVcIixcbiAgXCJDb2J5XCIsXG4gIFwiQ29keVwiLFxuICBcIkNvbGJ5XCIsXG4gIFwiQ29sZVwiLFxuICBcIkNvbGVtYW5cIixcbiAgXCJDb2xpblwiLFxuICBcIkNvbGxlZW5cIixcbiAgXCJDb2xsaW5cIixcbiAgXCJDb2x0XCIsXG4gIFwiQ29sdGVuXCIsXG4gIFwiQ29sdG9uXCIsXG4gIFwiQ29sdW1idXNcIixcbiAgXCJDb25jZXBjaW9uXCIsXG4gIFwiQ29ubmVyXCIsXG4gIFwiQ29ubmllXCIsXG4gIFwiQ29ubm9yXCIsXG4gIFwiQ29ub3JcIixcbiAgXCJDb25yYWRcIixcbiAgXCJDb25zdGFuY2VcIixcbiAgXCJDb25zdGFudGluXCIsXG4gIFwiQ29uc3VlbG9cIixcbiAgXCJDb29wZXJcIixcbiAgXCJDb3JhXCIsXG4gIFwiQ29yYWxpZVwiLFxuICBcIkNvcmJpblwiLFxuICBcIkNvcmRlbGlhXCIsXG4gIFwiQ29yZGVsbFwiLFxuICBcIkNvcmRpYVwiLFxuICBcIkNvcmRpZVwiLFxuICBcIkNvcmVuZVwiLFxuICBcIkNvcmluZVwiLFxuICBcIkNvcm5lbGl1c1wiLFxuICBcIkNvcm5lbGxcIixcbiAgXCJDb3JyaW5lXCIsXG4gIFwiQ29ydGV6XCIsXG4gIFwiQ29ydG5leVwiLFxuICBcIkNvcnlcIixcbiAgXCJDb3R5XCIsXG4gIFwiQ291cnRuZXlcIixcbiAgXCJDb3lcIixcbiAgXCJDcmFpZ1wiLFxuICBcIkNyYXdmb3JkXCIsXG4gIFwiQ3Jlb2xhXCIsXG4gIFwiQ3Jpc3RhbFwiLFxuICBcIkNyaXN0aWFuXCIsXG4gIFwiQ3Jpc3RpbmFcIixcbiAgXCJDcmlzdG9iYWxcIixcbiAgXCJDcmlzdG9waGVyXCIsXG4gIFwiQ3J1elwiLFxuICBcIkNyeXN0YWxcIixcbiAgXCJDcnlzdGVsXCIsXG4gIFwiQ3VsbGVuXCIsXG4gIFwiQ3VydFwiLFxuICBcIkN1cnRpc1wiLFxuICBcIkN5ZG5leVwiLFxuICBcIkN5bnRoaWFcIixcbiAgXCJDeXJpbFwiLFxuICBcIkN5cnVzXCIsXG4gIFwiRGFnbWFyXCIsXG4gIFwiRGFobGlhXCIsXG4gIFwiRGFpamFcIixcbiAgXCJEYWlzaGFcIixcbiAgXCJEYWlzeVwiLFxuICBcIkRha290YVwiLFxuICBcIkRhbGVcIixcbiAgXCJEYWxsYXNcIixcbiAgXCJEYWxsaW5cIixcbiAgXCJEYWx0b25cIixcbiAgXCJEYW1hcmlzXCIsXG4gIFwiRGFtZW9uXCIsXG4gIFwiRGFtaWFuXCIsXG4gIFwiRGFtaWVuXCIsXG4gIFwiRGFtaW9uXCIsXG4gIFwiRGFtb25cIixcbiAgXCJEYW5cIixcbiAgXCJEYW5hXCIsXG4gIFwiRGFuZHJlXCIsXG4gIFwiRGFuZVwiLFxuICBcIkQnYW5nZWxvXCIsXG4gIFwiRGFuZ2Vsb1wiLFxuICBcIkRhbmlhbFwiLFxuICBcIkRhbmllbGFcIixcbiAgXCJEYW5pZWxsYVwiLFxuICBcIkRhbmllbGxlXCIsXG4gIFwiRGFuaWthXCIsXG4gIFwiRGFubmllXCIsXG4gIFwiRGFubnlcIixcbiAgXCJEYW50ZVwiLFxuICBcIkRhbnlrYVwiLFxuICBcIkRhcGhuZVwiLFxuICBcIkRhcGhuZWVcIixcbiAgXCJEYXBobmV5XCIsXG4gIFwiRGFyYnlcIixcbiAgXCJEYXJlblwiLFxuICBcIkRhcmlhblwiLFxuICBcIkRhcmlhbmFcIixcbiAgXCJEYXJpZW5cIixcbiAgXCJEYXJpb1wiLFxuICBcIkRhcmlvblwiLFxuICBcIkRhcml1c1wiLFxuICBcIkRhcmxlbmVcIixcbiAgXCJEYXJvblwiLFxuICBcIkRhcnJlbFwiLFxuICBcIkRhcnJlbGxcIixcbiAgXCJEYXJyZW5cIixcbiAgXCJEYXJyaWNrXCIsXG4gIFwiRGFycmluXCIsXG4gIFwiRGFycmlvblwiLFxuICBcIkRhcnJvblwiLFxuICBcIkRhcnJ5bFwiLFxuICBcIkRhcndpblwiLFxuICBcIkRhcnlsXCIsXG4gIFwiRGFzaGF3blwiLFxuICBcIkRhc2lhXCIsXG4gIFwiRGF2ZVwiLFxuICBcIkRhdmlkXCIsXG4gIFwiRGF2aW5cIixcbiAgXCJEYXZpb25cIixcbiAgXCJEYXZvblwiLFxuICBcIkRhdm9udGVcIixcbiAgXCJEYXduXCIsXG4gIFwiRGF3c29uXCIsXG4gIFwiRGF4XCIsXG4gIFwiRGF5YW5hXCIsXG4gIFwiRGF5bmFcIixcbiAgXCJEYXluZVwiLFxuICBcIkRheXRvblwiLFxuICBcIkRlYW5cIixcbiAgXCJEZWFuZ2Vsb1wiLFxuICBcIkRlYW5uYVwiLFxuICBcIkRlYm9yYWhcIixcbiAgXCJEZWNsYW5cIixcbiAgXCJEZWRyaWNcIixcbiAgXCJEZWRyaWNrXCIsXG4gIFwiRGVlXCIsXG4gIFwiRGVpb25cIixcbiAgXCJEZWphXCIsXG4gIFwiRGVqYWhcIixcbiAgXCJEZWpvblwiLFxuICBcIkRlanVhblwiLFxuICBcIkRlbGFuZXlcIixcbiAgXCJEZWxiZXJ0XCIsXG4gIFwiRGVsZmluYVwiLFxuICBcIkRlbGlhXCIsXG4gIFwiRGVsaWxhaFwiLFxuICBcIkRlbGxcIixcbiAgXCJEZWxsYVwiLFxuICBcIkRlbG1lclwiLFxuICBcIkRlbG9yZXNcIixcbiAgXCJEZWxwaGFcIixcbiAgXCJEZWxwaGlhXCIsXG4gIFwiRGVscGhpbmVcIixcbiAgXCJEZWx0YVwiLFxuICBcIkRlbWFyY29cIixcbiAgXCJEZW1hcmN1c1wiLFxuICBcIkRlbWFyaW9cIixcbiAgXCJEZW1ldHJpc1wiLFxuICBcIkRlbWV0cml1c1wiLFxuICBcIkRlbW9uZFwiLFxuICBcIkRlbmFcIixcbiAgXCJEZW5pc1wiLFxuICBcIkRlbm5pc1wiLFxuICBcIkRlb25cIixcbiAgXCJEZW9uZHJlXCIsXG4gIFwiRGVvbnRhZVwiLFxuICBcIkRlb250ZVwiLFxuICBcIkRlcmVja1wiLFxuICBcIkRlcmVrXCIsXG4gIFwiRGVyaWNrXCIsXG4gIFwiRGVyb25cIixcbiAgXCJEZXJyaWNrXCIsXG4gIFwiRGVzaGF1blwiLFxuICBcIkRlc2hhd25cIixcbiAgXCJEZXNpcmVlXCIsXG4gIFwiRGVzbW9uZFwiLFxuICBcIkRlc3NpZVwiLFxuICBcIkRlc3RhbnlcIixcbiAgXCJEZXN0aW5cIixcbiAgXCJEZXN0aW5lZVwiLFxuICBcIkRlc3RpbmV5XCIsXG4gIFwiRGVzdGluaVwiLFxuICBcIkRlc3RpbnlcIixcbiAgXCJEZXZhblwiLFxuICBcIkRldmFudGVcIixcbiAgXCJEZXZlblwiLFxuICBcIkRldmluXCIsXG4gIFwiRGV2b25cIixcbiAgXCJEZXZvbnRlXCIsXG4gIFwiRGV2eW5cIixcbiAgXCJEZXdheW5lXCIsXG4gIFwiRGV3aXR0XCIsXG4gIFwiRGV4dGVyXCIsXG4gIFwiRGlhbW9uZFwiLFxuICBcIkRpYW5hXCIsXG4gIFwiRGlhbm5hXCIsXG4gIFwiRGllZ29cIixcbiAgXCJEaWxsYW5cIixcbiAgXCJEaWxsb25cIixcbiAgXCJEaW1pdHJpXCIsXG4gIFwiRGluYVwiLFxuICBcIkRpbm9cIixcbiAgXCJEaW9uXCIsXG4gIFwiRGl4aWVcIixcbiAgXCJEb2NrXCIsXG4gIFwiRG9sbHlcIixcbiAgXCJEb2xvcmVzXCIsXG4gIFwiRG9tZW5pY1wiLFxuICBcIkRvbWVuaWNhXCIsXG4gIFwiRG9tZW5pY2tcIixcbiAgXCJEb21lbmljb1wiLFxuICBcIkRvbWluZ29cIixcbiAgXCJEb21pbmljXCIsXG4gIFwiRG9taW5pcXVlXCIsXG4gIFwiRG9uXCIsXG4gIFwiRG9uYWxkXCIsXG4gIFwiRG9uYXRvXCIsXG4gIFwiRG9uYXZvblwiLFxuICBcIkRvbm5hXCIsXG4gIFwiRG9ubmVsbFwiLFxuICBcIkRvbm5pZVwiLFxuICBcIkRvbm55XCIsXG4gIFwiRG9yYVwiLFxuICBcIkRvcmNhc1wiLFxuICBcIkRvcmlhblwiLFxuICBcIkRvcmlzXCIsXG4gIFwiRG9yb3RoZWFcIixcbiAgXCJEb3JvdGh5XCIsXG4gIFwiRG9ycmlzXCIsXG4gIFwiRG9ydGhhXCIsXG4gIFwiRG9ydGh5XCIsXG4gIFwiRG91Z1wiLFxuICBcIkRvdWdsYXNcIixcbiAgXCJEb3ZpZVwiLFxuICBcIkRveWxlXCIsXG4gIFwiRHJha2VcIixcbiAgXCJEcmV3XCIsXG4gIFwiRHVhbmVcIixcbiAgXCJEdWRsZXlcIixcbiAgXCJEdWxjZVwiLFxuICBcIkR1bmNhblwiLFxuICBcIkR1cndhcmRcIixcbiAgXCJEdXN0aW5cIixcbiAgXCJEdXN0eVwiLFxuICBcIkR3aWdodFwiLFxuICBcIkR5bGFuXCIsXG4gIFwiRWFybFwiLFxuICBcIkVhcmxlbmVcIixcbiAgXCJFYXJsaW5lXCIsXG4gIFwiRWFybmVzdFwiLFxuICBcIkVhcm5lc3RpbmVcIixcbiAgXCJFYXN0ZXJcIixcbiAgXCJFYXN0b25cIixcbiAgXCJFYmJhXCIsXG4gIFwiRWJvbnlcIixcbiAgXCJFZFwiLFxuICBcIkVkYVwiLFxuICBcIkVkZFwiLFxuICBcIkVkZGllXCIsXG4gIFwiRWRlblwiLFxuICBcIkVkZ2FyXCIsXG4gIFwiRWRnYXJkb1wiLFxuICBcIkVkaXNvblwiLFxuICBcIkVkbW9uZFwiLFxuICBcIkVkbXVuZFwiLFxuICBcIkVkbmFcIixcbiAgXCJFZHVhcmRvXCIsXG4gIFwiRWR3YXJkXCIsXG4gIFwiRWR3YXJkb1wiLFxuICBcIkVkd2luXCIsXG4gIFwiRWR3aW5hXCIsXG4gIFwiRWR5dGhcIixcbiAgXCJFZHl0aGVcIixcbiAgXCJFZmZpZVwiLFxuICBcIkVmcmFpblwiLFxuICBcIkVmcmVuXCIsXG4gIFwiRWlsZWVuXCIsXG4gIFwiRWluYXJcIixcbiAgXCJFaW5vXCIsXG4gIFwiRWxhZGlvXCIsXG4gIFwiRWxhaW5hXCIsXG4gIFwiRWxiZXJ0XCIsXG4gIFwiRWxkYVwiLFxuICBcIkVsZG9uXCIsXG4gIFwiRWxkb3JhXCIsXG4gIFwiRWxkcmVkXCIsXG4gIFwiRWxkcmlkZ2VcIixcbiAgXCJFbGVhbm9yYVwiLFxuICBcIkVsZWFub3JlXCIsXG4gIFwiRWxlYXphclwiLFxuICBcIkVsZWN0YVwiLFxuICBcIkVsZW5hXCIsXG4gIFwiRWxlbm9yXCIsXG4gIFwiRWxlbm9yYVwiLFxuICBcIkVsZW9ub3JlXCIsXG4gIFwiRWxmcmllZGFcIixcbiAgXCJFbGlcIixcbiAgXCJFbGlhblwiLFxuICBcIkVsaWFuZVwiLFxuICBcIkVsaWFzXCIsXG4gIFwiRWxpZXplclwiLFxuICBcIkVsaWphaFwiLFxuICBcIkVsaW5vclwiLFxuICBcIkVsaW5vcmVcIixcbiAgXCJFbGlzYVwiLFxuICBcIkVsaXNhYmV0aFwiLFxuICBcIkVsaXNlXCIsXG4gIFwiRWxpc2VvXCIsXG4gIFwiRWxpc2hhXCIsXG4gIFwiRWxpc3NhXCIsXG4gIFwiRWxpemFcIixcbiAgXCJFbGl6YWJldGhcIixcbiAgXCJFbGxhXCIsXG4gIFwiRWxsZW5cIixcbiAgXCJFbGxpZVwiLFxuICBcIkVsbGlvdFwiLFxuICBcIkVsbGlvdHRcIixcbiAgXCJFbGxpc1wiLFxuICBcIkVsbHN3b3J0aFwiLFxuICBcIkVsbWVyXCIsXG4gIFwiRWxtaXJhXCIsXG4gIFwiRWxtb1wiLFxuICBcIkVsbW9yZVwiLFxuICBcIkVsbmFcIixcbiAgXCJFbG5vcmFcIixcbiAgXCJFbG9keVwiLFxuICBcIkVsb2lzYVwiLFxuICBcIkVsb2lzZVwiLFxuICBcIkVsb3Vpc2VcIixcbiAgXCJFbG95XCIsXG4gIFwiRWxyb3lcIixcbiAgXCJFbHNhXCIsXG4gIFwiRWxzZVwiLFxuICBcIkVsc2llXCIsXG4gIFwiRWx0YVwiLFxuICBcIkVsdG9uXCIsXG4gIFwiRWx2YVwiLFxuICBcIkVsdmVyYVwiLFxuICBcIkVsdmllXCIsXG4gIFwiRWx2aXNcIixcbiAgXCJFbHdpblwiLFxuICBcIkVsd3luXCIsXG4gIFwiRWx5c2VcIixcbiAgXCJFbHlzc2FcIixcbiAgXCJFbHphXCIsXG4gIFwiRW1hbnVlbFwiLFxuICBcIkVtZWxpYVwiLFxuICBcIkVtZWxpZVwiLFxuICBcIkVtZWx5XCIsXG4gIFwiRW1lcmFsZFwiLFxuICBcIkVtZXJzb25cIixcbiAgXCJFbWVyeVwiLFxuICBcIkVtaWVcIixcbiAgXCJFbWlsXCIsXG4gIFwiRW1pbGVcIixcbiAgXCJFbWlsaWFcIixcbiAgXCJFbWlsaWFub1wiLFxuICBcIkVtaWxpZVwiLFxuICBcIkVtaWxpb1wiLFxuICBcIkVtaWx5XCIsXG4gIFwiRW1tYVwiLFxuICBcIkVtbWFsZWVcIixcbiAgXCJFbW1hbnVlbFwiLFxuICBcIkVtbWFudWVsbGVcIixcbiAgXCJFbW1ldFwiLFxuICBcIkVtbWV0dFwiLFxuICBcIkVtbWllXCIsXG4gIFwiRW1taXR0XCIsXG4gIFwiRW1teVwiLFxuICBcIkVtb3J5XCIsXG4gIFwiRW5hXCIsXG4gIFwiRW5pZFwiLFxuICBcIkVub2NoXCIsXG4gIFwiRW5vbGFcIixcbiAgXCJFbm9zXCIsXG4gIFwiRW5yaWNvXCIsXG4gIFwiRW5yaXF1ZVwiLFxuICBcIkVwaHJhaW1cIixcbiAgXCJFcmFcIixcbiAgXCJFcmliZXJ0b1wiLFxuICBcIkVyaWNcIixcbiAgXCJFcmljYVwiLFxuICBcIkVyaWNoXCIsXG4gIFwiRXJpY2tcIixcbiAgXCJFcmlja2FcIixcbiAgXCJFcmlrXCIsXG4gIFwiRXJpa2FcIixcbiAgXCJFcmluXCIsXG4gIFwiRXJsaW5nXCIsXG4gIFwiRXJuYVwiLFxuICBcIkVybmVzdFwiLFxuICBcIkVybmVzdGluYVwiLFxuICBcIkVybmVzdGluZVwiLFxuICBcIkVybmVzdG9cIixcbiAgXCJFcm5pZVwiLFxuICBcIkVydmluXCIsXG4gIFwiRXJ3aW5cIixcbiAgXCJFcnluXCIsXG4gIFwiRXNtZXJhbGRhXCIsXG4gIFwiRXNwZXJhbnphXCIsXG4gIFwiRXN0YVwiLFxuICBcIkVzdGViYW5cIixcbiAgXCJFc3RlZmFuaWFcIixcbiAgXCJFc3RlbFwiLFxuICBcIkVzdGVsbFwiLFxuICBcIkVzdGVsbGFcIixcbiAgXCJFc3RlbGxlXCIsXG4gIFwiRXN0ZXZhblwiLFxuICBcIkVzdGhlclwiLFxuICBcIkVzdHJlbGxhXCIsXG4gIFwiRXRoYVwiLFxuICBcIkV0aGFuXCIsXG4gIFwiRXRoZWxcIixcbiAgXCJFdGhlbHluXCIsXG4gIFwiRXRoeWxcIixcbiAgXCJFdHRpZVwiLFxuICBcIkV1ZG9yYVwiLFxuICBcIkV1Z2VuZVwiLFxuICBcIkV1Z2VuaWFcIixcbiAgXCJFdWxhXCIsXG4gIFwiRXVsYWhcIixcbiAgXCJFdWxhbGlhXCIsXG4gIFwiRXVuYVwiLFxuICBcIkV1bmljZVwiLFxuICBcIkV1c2ViaW9cIixcbiAgXCJFdmFcIixcbiAgXCJFdmFseW5cIixcbiAgXCJFdmFuXCIsXG4gIFwiRXZhbmdlbGluZVwiLFxuICBcIkV2YW5zXCIsXG4gIFwiRXZlXCIsXG4gIFwiRXZlbGluZVwiLFxuICBcIkV2ZWx5blwiLFxuICBcIkV2ZXJhcmRvXCIsXG4gIFwiRXZlcmV0dFwiLFxuICBcIkV2ZXJldHRlXCIsXG4gIFwiRXZlcnRcIixcbiAgXCJFdmllXCIsXG4gIFwiRXdhbGRcIixcbiAgXCJFd2VsbFwiLFxuICBcIkV6ZWtpZWxcIixcbiAgXCJFemVxdWllbFwiLFxuICBcIkV6cmFcIixcbiAgXCJGYWJpYW5cIixcbiAgXCJGYWJpb2xhXCIsXG4gIFwiRmFlXCIsXG4gIFwiRmFubmllXCIsXG4gIFwiRmFubnlcIixcbiAgXCJGYXRpbWFcIixcbiAgXCJGYXVzdGlub1wiLFxuICBcIkZhdXN0b1wiLFxuICBcIkZhdmlhblwiLFxuICBcIkZheVwiLFxuICBcIkZheWVcIixcbiAgXCJGZWRlcmljb1wiLFxuICBcIkZlbGljaWFcIixcbiAgXCJGZWxpY2l0YVwiLFxuICBcIkZlbGljaXR5XCIsXG4gIFwiRmVsaXBhXCIsXG4gIFwiRmVsaXBlXCIsXG4gIFwiRmVsaXhcIixcbiAgXCJGZWx0b25cIixcbiAgXCJGZXJtaW5cIixcbiAgXCJGZXJuXCIsXG4gIFwiRmVybmFuZG9cIixcbiAgXCJGZXJuZVwiLFxuICBcIkZpZGVsXCIsXG4gIFwiRmlsaWJlcnRvXCIsXG4gIFwiRmlsb21lbmFcIixcbiAgXCJGaW5uXCIsXG4gIFwiRmlvbmFcIixcbiAgXCJGbGF2aWVcIixcbiAgXCJGbGF2aW9cIixcbiAgXCJGbGV0YVwiLFxuICBcIkZsZXRjaGVyXCIsXG4gIFwiRmxvXCIsXG4gIFwiRmxvcmVuY2VcIixcbiAgXCJGbG9yZW5jaW9cIixcbiAgXCJGbG9yaWFuXCIsXG4gIFwiRmxvcmlkYVwiLFxuICBcIkZsb3JpbmVcIixcbiAgXCJGbG9zc2llXCIsXG4gIFwiRmxveVwiLFxuICBcIkZsb3lkXCIsXG4gIFwiRm9yZFwiLFxuICBcIkZvcmVzdFwiLFxuICBcIkZvcnJlc3RcIixcbiAgXCJGb3N0ZXJcIixcbiAgXCJGcmFuY2VzXCIsXG4gIFwiRnJhbmNlc2NhXCIsXG4gIFwiRnJhbmNlc2NvXCIsXG4gIFwiRnJhbmNpc1wiLFxuICBcIkZyYW5jaXNjYVwiLFxuICBcIkZyYW5jaXNjb1wiLFxuICBcIkZyYW5jb1wiLFxuICBcIkZyYW5rXCIsXG4gIFwiRnJhbmtpZVwiLFxuICBcIkZyYW56XCIsXG4gIFwiRnJlZFwiLFxuICBcIkZyZWRhXCIsXG4gIFwiRnJlZGRpZVwiLFxuICBcIkZyZWRkeVwiLFxuICBcIkZyZWRlcmljXCIsXG4gIFwiRnJlZGVyaWNrXCIsXG4gIFwiRnJlZGVyaWtcIixcbiAgXCJGcmVkZXJpcXVlXCIsXG4gIFwiRnJlZHJpY2tcIixcbiAgXCJGcmVkeVwiLFxuICBcIkZyZWVkYVwiLFxuICBcIkZyZWVtYW5cIixcbiAgXCJGcmVpZGFcIixcbiAgXCJGcmlkYVwiLFxuICBcIkZyaWVkYVwiLFxuICBcIkZyaWVkcmljaFwiLFxuICBcIkZyaXR6XCIsXG4gIFwiRnVybWFuXCIsXG4gIFwiR2FiZVwiLFxuICBcIkdhYnJpZWxcIixcbiAgXCJHYWJyaWVsbGFcIixcbiAgXCJHYWJyaWVsbGVcIixcbiAgXCJHYWV0YW5vXCIsXG4gIFwiR2FnZVwiLFxuICBcIkdhaWxcIixcbiAgXCJHYXJkbmVyXCIsXG4gIFwiR2FyZXR0XCIsXG4gIFwiR2FyZmllbGRcIixcbiAgXCJHYXJsYW5kXCIsXG4gIFwiR2FybmV0XCIsXG4gIFwiR2FybmV0dFwiLFxuICBcIkdhcnJldFwiLFxuICBcIkdhcnJldHRcIixcbiAgXCJHYXJyaWNrXCIsXG4gIFwiR2Fycmlzb25cIixcbiAgXCJHYXJyeVwiLFxuICBcIkdhcnRoXCIsXG4gIFwiR2FzdG9uXCIsXG4gIFwiR2F2aW5cIixcbiAgXCJHYXlcIixcbiAgXCJHYXlsZVwiLFxuICBcIkdheWxvcmRcIixcbiAgXCJHZW5lXCIsXG4gIFwiR2VuZXJhbFwiLFxuICBcIkdlbmVzaXNcIixcbiAgXCJHZW5ldmlldmVcIixcbiAgXCJHZW5uYXJvXCIsXG4gIFwiR2Vub3ZldmFcIixcbiAgXCJHZW9cIixcbiAgXCJHZW9mZnJleVwiLFxuICBcIkdlb3JnZVwiLFxuICBcIkdlb3JnZXR0ZVwiLFxuICBcIkdlb3JnaWFuYVwiLFxuICBcIkdlb3JnaWFubmFcIixcbiAgXCJHZW92YW5uaVwiLFxuICBcIkdlb3Zhbm55XCIsXG4gIFwiR2VvdmFueVwiLFxuICBcIkdlcmFsZFwiLFxuICBcIkdlcmFsZGluZVwiLFxuICBcIkdlcmFyZFwiLFxuICBcIkdlcmFyZG9cIixcbiAgXCJHZXJkYVwiLFxuICBcIkdlcmhhcmRcIixcbiAgXCJHZXJtYWluZVwiLFxuICBcIkdlcm1hblwiLFxuICBcIkdlcnJ5XCIsXG4gIFwiR2Vyc29uXCIsXG4gIFwiR2VydHJ1ZGVcIixcbiAgXCJHaWFcIixcbiAgXCJHaWFubmlcIixcbiAgXCJHaWRlb25cIixcbiAgXCJHaWxiZXJ0XCIsXG4gIFwiR2lsYmVydG9cIixcbiAgXCJHaWxkYVwiLFxuICBcIkdpbGVzXCIsXG4gIFwiR2lsbGlhblwiLFxuICBcIkdpbmFcIixcbiAgXCJHaW5vXCIsXG4gIFwiR2lvdmFuaVwiLFxuICBcIkdpb3Zhbm5hXCIsXG4gIFwiR2lvdmFubmlcIixcbiAgXCJHaW92YW5ueVwiLFxuICBcIkdpc3NlbGxlXCIsXG4gIFwiR2l1c2VwcGVcIixcbiAgXCJHbGFkeWNlXCIsXG4gIFwiR2xhZHlzXCIsXG4gIFwiR2xlblwiLFxuICBcIkdsZW5kYVwiLFxuICBcIkdsZW5uYVwiLFxuICBcIkdsZW5uaWVcIixcbiAgXCJHbG9yaWFcIixcbiAgXCJHb2RmcmV5XCIsXG4gIFwiR29sZGFcIixcbiAgXCJHb2xkZW5cIixcbiAgXCJHb256YWxvXCIsXG4gIFwiR29yZG9uXCIsXG4gIFwiR3JhY2VcIixcbiAgXCJHcmFjaWVcIixcbiAgXCJHcmFjaWVsYVwiLFxuICBcIkdyYWR5XCIsXG4gIFwiR3JhaGFtXCIsXG4gIFwiR3JhbnRcIixcbiAgXCJHcmFudmlsbGVcIixcbiAgXCJHcmF5Y2VcIixcbiAgXCJHcmF5c29uXCIsXG4gIFwiR3JlZW5cIixcbiAgXCJHcmVnXCIsXG4gIFwiR3JlZ2dcIixcbiAgXCJHcmVnb3JpYVwiLFxuICBcIkdyZWdvcmlvXCIsXG4gIFwiR3JlZ29yeVwiLFxuICBcIkdyZXRhXCIsXG4gIFwiR3JldGNoZW5cIixcbiAgXCJHcmV5c29uXCIsXG4gIFwiR3JpZmZpblwiLFxuICBcIkdyb3ZlclwiLFxuICBcIkd1YWRhbHVwZVwiLFxuICBcIkd1ZHJ1blwiLFxuICBcIkd1aWRvXCIsXG4gIFwiR3VpbGxlcm1vXCIsXG4gIFwiR3Vpc2VwcGVcIixcbiAgXCJHdW5uYXJcIixcbiAgXCJHdW5uZXJcIixcbiAgXCJHdXNcIixcbiAgXCJHdXNzaWVcIixcbiAgXCJHdXN0XCIsXG4gIFwiR3VzdGF2ZVwiLFxuICBcIkd1eVwiLFxuICBcIkd3ZW5cIixcbiAgXCJHd2VuZG9seW5cIixcbiAgXCJIYWRsZXlcIixcbiAgXCJIYWlsZWVcIixcbiAgXCJIYWlsZXlcIixcbiAgXCJIYWlsaWVcIixcbiAgXCJIYWxcIixcbiAgXCJIYWxlaWdoXCIsXG4gIFwiSGFsZXlcIixcbiAgXCJIYWxpZVwiLFxuICBcIkhhbGxlXCIsXG4gIFwiSGFsbGllXCIsXG4gIFwiSGFua1wiLFxuICBcIkhhbm5hXCIsXG4gIFwiSGFubmFoXCIsXG4gIFwiSGFuc1wiLFxuICBcIkhhcmR5XCIsXG4gIFwiSGFybGV5XCIsXG4gIFwiSGFybW9uXCIsXG4gIFwiSGFybW9ueVwiLFxuICBcIkhhcm9sZFwiLFxuICBcIkhhcnJpc29uXCIsXG4gIFwiSGFycnlcIixcbiAgXCJIYXJ2ZXlcIixcbiAgXCJIYXNrZWxsXCIsXG4gIFwiSGFzc2FuXCIsXG4gIFwiSGFzc2llXCIsXG4gIFwiSGF0dGllXCIsXG4gIFwiSGF2ZW5cIixcbiAgXCJIYXlkZW5cIixcbiAgXCJIYXlsZWVcIixcbiAgXCJIYXlsZXlcIixcbiAgXCJIYXlsaWVcIixcbiAgXCJIYXplbFwiLFxuICBcIkhhemxlXCIsXG4gIFwiSGVhdGhcIixcbiAgXCJIZWF0aGVyXCIsXG4gIFwiSGVhdmVuXCIsXG4gIFwiSGViZXJcIixcbiAgXCJIZWN0b3JcIixcbiAgXCJIZWlkaVwiLFxuICBcIkhlbGVuXCIsXG4gIFwiSGVsZW5hXCIsXG4gIFwiSGVsZW5lXCIsXG4gIFwiSGVsZ2FcIixcbiAgXCJIZWxsZW5cIixcbiAgXCJIZWxtZXJcIixcbiAgXCJIZWxvaXNlXCIsXG4gIFwiSGVuZGVyc29uXCIsXG4gIFwiSGVucmlcIixcbiAgXCJIZW5yaWV0dGVcIixcbiAgXCJIZW5yeVwiLFxuICBcIkhlcmJlcnRcIixcbiAgXCJIZXJtYW5cIixcbiAgXCJIZXJtYW5uXCIsXG4gIFwiSGVybWluYVwiLFxuICBcIkhlcm1pbmlhXCIsXG4gIFwiSGVybWluaW9cIixcbiAgXCJIZXJzaGVsXCIsXG4gIFwiSGVydGFcIixcbiAgXCJIZXJ0aGFcIixcbiAgXCJIZXN0ZXJcIixcbiAgXCJIZXR0aWVcIixcbiAgXCJIaWxhcmlvXCIsXG4gIFwiSGlsYmVydFwiLFxuICBcIkhpbGRhXCIsXG4gIFwiSGlsZGVnYXJkXCIsXG4gIFwiSGlsbGFyZFwiLFxuICBcIkhpbGxhcnlcIixcbiAgXCJIaWxtYVwiLFxuICBcIkhpbHRvblwiLFxuICBcIkhpcG9saXRvXCIsXG4gIFwiSGlyYW1cIixcbiAgXCJIb2JhcnRcIixcbiAgXCJIb2xkZW5cIixcbiAgXCJIb2xsaWVcIixcbiAgXCJIb2xsaXNcIixcbiAgXCJIb2xseVwiLFxuICBcIkhvcGVcIixcbiAgXCJIb3JhY2VcIixcbiAgXCJIb3JhY2lvXCIsXG4gIFwiSG9ydGVuc2VcIixcbiAgXCJIb3NlYVwiLFxuICBcIkhvdXN0b25cIixcbiAgXCJIb3dhcmRcIixcbiAgXCJIb3dlbGxcIixcbiAgXCJIb3l0XCIsXG4gIFwiSHViZXJ0XCIsXG4gIFwiSHVkc29uXCIsXG4gIFwiSHVnaFwiLFxuICBcIkh1bGRhXCIsXG4gIFwiSHVtYmVydG9cIixcbiAgXCJIdW50ZXJcIixcbiAgXCJIeW1hblwiLFxuICBcIklhblwiLFxuICBcIklicmFoaW1cIixcbiAgXCJJY2llXCIsXG4gIFwiSWRhXCIsXG4gIFwiSWRlbGxcIixcbiAgXCJJZGVsbGFcIixcbiAgXCJJZ25hY2lvXCIsXG4gIFwiSWduYXRpdXNcIixcbiAgXCJJa2VcIixcbiAgXCJJbGFcIixcbiAgXCJJbGVuZVwiLFxuICBcIklsaWFuYVwiLFxuICBcIkltYVwiLFxuICBcIkltYW5pXCIsXG4gIFwiSW1lbGRhXCIsXG4gIFwiSW1tYW51ZWxcIixcbiAgXCJJbW9nZW5lXCIsXG4gIFwiSW5lc1wiLFxuICBcIklybWFcIixcbiAgXCJJcnZpbmdcIixcbiAgXCJJcndpblwiLFxuICBcIklzYWFjXCIsXG4gIFwiSXNhYmVsXCIsXG4gIFwiSXNhYmVsbFwiLFxuICBcIklzYWJlbGxhXCIsXG4gIFwiSXNhYmVsbGVcIixcbiAgXCJJc2FjXCIsXG4gIFwiSXNhZG9yZVwiLFxuICBcIklzYWlcIixcbiAgXCJJc2FpYWhcIixcbiAgXCJJc2FpYXNcIixcbiAgXCJJc2lkcm9cIixcbiAgXCJJc21hZWxcIixcbiAgXCJJc29iZWxcIixcbiAgXCJJc29tXCIsXG4gIFwiSXNyYWVsXCIsXG4gIFwiSXNzYWNcIixcbiAgXCJJdHplbFwiLFxuICBcIkl2YVwiLFxuICBcIkl2YWhcIixcbiAgXCJJdm9yeVwiLFxuICBcIkl2eVwiLFxuICBcIkl6YWJlbGxhXCIsXG4gIFwiSXphaWFoXCIsXG4gIFwiSmFiYXJpXCIsXG4gIFwiSmFjZVwiLFxuICBcIkphY2V5XCIsXG4gIFwiSmFjaW50aGVcIixcbiAgXCJKYWNpbnRvXCIsXG4gIFwiSmFja1wiLFxuICBcIkphY2tlbGluZVwiLFxuICBcIkphY2tpZVwiLFxuICBcIkphY2tseW5cIixcbiAgXCJKYWNrc29uXCIsXG4gIFwiSmFja3lcIixcbiAgXCJKYWNseW5cIixcbiAgXCJKYWNxdWVseW5cIixcbiAgXCJKYWNxdWVzXCIsXG4gIFwiSmFjeW50aGVcIixcbiAgXCJKYWRhXCIsXG4gIFwiSmFkZVwiLFxuICBcIkphZGVuXCIsXG4gIFwiSmFkb25cIixcbiAgXCJKYWR5blwiLFxuICBcIkphZWRlblwiLFxuICBcIkphaWRhXCIsXG4gIFwiSmFpZGVuXCIsXG4gIFwiSmFpbHluXCIsXG4gIFwiSmFpbWVcIixcbiAgXCJKYWlyb1wiLFxuICBcIkpha2F5bGFcIixcbiAgXCJKYWtlXCIsXG4gIFwiSmFrb2JcIixcbiAgXCJKYWxlZWxcIixcbiAgXCJKYWxlblwiLFxuICBcIkphbG9uXCIsXG4gIFwiSmFseW5cIixcbiAgXCJKYW1hYWxcIixcbiAgXCJKYW1hbFwiLFxuICBcIkphbWFyXCIsXG4gIFwiSmFtYXJjdXNcIixcbiAgXCJKYW1lbFwiLFxuICBcIkphbWVzb25cIixcbiAgXCJKYW1leVwiLFxuICBcIkphbWllXCIsXG4gIFwiSmFtaWxcIixcbiAgXCJKYW1pclwiLFxuICBcIkphbWlzb25cIixcbiAgXCJKYW1taWVcIixcbiAgXCJKYW5cIixcbiAgXCJKYW5hXCIsXG4gIFwiSmFuYWVcIixcbiAgXCJKYW5lXCIsXG4gIFwiSmFuZWxsZVwiLFxuICBcIkphbmVzc2FcIixcbiAgXCJKYW5ldFwiLFxuICBcIkphbmljZVwiLFxuICBcIkphbmlja1wiLFxuICBcIkphbmllXCIsXG4gIFwiSmFuaXNcIixcbiAgXCJKYW5peWFcIixcbiAgXCJKYW5uaWVcIixcbiAgXCJKYW55XCIsXG4gIFwiSmFxdWFuXCIsXG4gIFwiSmFxdWVsaW5cIixcbiAgXCJKYXF1ZWxpbmVcIixcbiAgXCJKYXJlZFwiLFxuICBcIkphcmVuXCIsXG4gIFwiSmFyb2RcIixcbiAgXCJKYXJvblwiLFxuICBcIkphcnJlZFwiLFxuICBcIkphcnJlbGxcIixcbiAgXCJKYXJyZXRcIixcbiAgXCJKYXJyZXR0XCIsXG4gIFwiSmFycm9kXCIsXG4gIFwiSmFydmlzXCIsXG4gIFwiSmFzZW5cIixcbiAgXCJKYXNtaW5cIixcbiAgXCJKYXNvblwiLFxuICBcIkphc3BlclwiLFxuICBcIkphdW5pdGFcIixcbiAgXCJKYXZpZXJcIixcbiAgXCJKYXZvblwiLFxuICBcIkphdm9udGVcIixcbiAgXCJKYXlcIixcbiAgXCJKYXljZVwiLFxuICBcIkpheWNlZVwiLFxuICBcIkpheWRhXCIsXG4gIFwiSmF5ZGVcIixcbiAgXCJKYXlkZW5cIixcbiAgXCJKYXlkb25cIixcbiAgXCJKYXlsYW5cIixcbiAgXCJKYXlsZW5cIixcbiAgXCJKYXlsaW5cIixcbiAgXCJKYXlsb25cIixcbiAgXCJKYXltZVwiLFxuICBcIkpheW5lXCIsXG4gIFwiSmF5c29uXCIsXG4gIFwiSmF6bHluXCIsXG4gIFwiSmF6bWluXCIsXG4gIFwiSmF6bXluXCIsXG4gIFwiSmF6bXluZVwiLFxuICBcIkplYW5cIixcbiAgXCJKZWFuZXR0ZVwiLFxuICBcIkplYW5pZVwiLFxuICBcIkplYW5uZVwiLFxuICBcIkplZFwiLFxuICBcIkplZGVkaWFoXCIsXG4gIFwiSmVkaWRpYWhcIixcbiAgXCJKZWZmXCIsXG4gIFwiSmVmZmVyZXlcIixcbiAgXCJKZWZmZXJ5XCIsXG4gIFwiSmVmZnJleVwiLFxuICBcIkplZmZyeVwiLFxuICBcIkplbmFcIixcbiAgXCJKZW5pZmVyXCIsXG4gIFwiSmVubmllXCIsXG4gIFwiSmVubmlmZXJcIixcbiAgXCJKZW5uaW5nc1wiLFxuICBcIkplbm55ZmVyXCIsXG4gIFwiSmVuc2VuXCIsXG4gIFwiSmVyYWRcIixcbiAgXCJKZXJhbGRcIixcbiAgXCJKZXJhbWllXCIsXG4gIFwiSmVyYW15XCIsXG4gIFwiSmVyZWxcIixcbiAgXCJKZXJlbWllXCIsXG4gIFwiSmVyZW15XCIsXG4gIFwiSmVybWFpblwiLFxuICBcIkplcm1haW5lXCIsXG4gIFwiSmVybWV5XCIsXG4gIFwiSmVyb2RcIixcbiAgXCJKZXJvbWVcIixcbiAgXCJKZXJvbXlcIixcbiAgXCJKZXJyZWxsXCIsXG4gIFwiSmVycm9kXCIsXG4gIFwiSmVycm9sZFwiLFxuICBcIkplcnJ5XCIsXG4gIFwiSmVzc1wiLFxuICBcIkplc3NlXCIsXG4gIFwiSmVzc2ljYVwiLFxuICBcIkplc3NpZVwiLFxuICBcIkplc3Npa2FcIixcbiAgXCJKZXNzeVwiLFxuICBcIkplc3N5Y2FcIixcbiAgXCJKZXN1c1wiLFxuICBcIkpldHRcIixcbiAgXCJKZXR0aWVcIixcbiAgXCJKZXZvblwiLFxuICBcIkpld2VsXCIsXG4gIFwiSmV3ZWxsXCIsXG4gIFwiSmlsbGlhblwiLFxuICBcIkppbW1pZVwiLFxuICBcIkppbW15XCIsXG4gIFwiSm9cIixcbiAgXCJKb2FuXCIsXG4gIFwiSm9hbmFcIixcbiAgXCJKb2FuaWVcIixcbiAgXCJKb2FubmVcIixcbiAgXCJKb2FubmllXCIsXG4gIFwiSm9hbm55XCIsXG4gIFwiSm9hbnlcIixcbiAgXCJKb2FxdWluXCIsXG4gIFwiSm9jZWx5blwiLFxuICBcIkpvZGllXCIsXG4gIFwiSm9keVwiLFxuICBcIkpvZVwiLFxuICBcIkpvZWxcIixcbiAgXCJKb2VsbGVcIixcbiAgXCJKb2VzcGhcIixcbiAgXCJKb2V5XCIsXG4gIFwiSm9oYW5cIixcbiAgXCJKb2hhbm5cIixcbiAgXCJKb2hhbm5hXCIsXG4gIFwiSm9oYXRoYW5cIixcbiAgXCJKb2huXCIsXG4gIFwiSm9obmF0aGFuXCIsXG4gIFwiSm9obmF0aG9uXCIsXG4gIFwiSm9obm5pZVwiLFxuICBcIkpvaG5ueVwiLFxuICBcIkpvaG5wYXVsXCIsXG4gIFwiSm9obnNvblwiLFxuICBcIkpvbGllXCIsXG4gIFwiSm9uXCIsXG4gIFwiSm9uYXNcIixcbiAgXCJKb25hdGFuXCIsXG4gIFwiSm9uYXRoYW5cIixcbiAgXCJKb25hdGhvblwiLFxuICBcIkpvcmRhblwiLFxuICBcIkpvcmRhbmVcIixcbiAgXCJKb3JkaVwiLFxuICBcIkpvcmRvblwiLFxuICBcIkpvcmR5XCIsXG4gIFwiSm9yZHluXCIsXG4gIFwiSm9yZ2VcIixcbiAgXCJKb3NlXCIsXG4gIFwiSm9zZWZhXCIsXG4gIFwiSm9zZWZpbmFcIixcbiAgXCJKb3NlcGhcIixcbiAgXCJKb3NlcGhpbmVcIixcbiAgXCJKb3NoXCIsXG4gIFwiSm9zaHVhXCIsXG4gIFwiSm9zaHVhaFwiLFxuICBcIkpvc2lhaFwiLFxuICBcIkpvc2lhbmVcIixcbiAgXCJKb3NpYW5uZVwiLFxuICBcIkpvc2llXCIsXG4gIFwiSm9zdWVcIixcbiAgXCJKb3ZhblwiLFxuICBcIkpvdmFuaVwiLFxuICBcIkpvdmFubnlcIixcbiAgXCJKb3ZhbnlcIixcbiAgXCJKb3lcIixcbiAgXCJKb3ljZVwiLFxuICBcIkp1YW5hXCIsXG4gIFwiSnVhbml0YVwiLFxuICBcIkp1ZGFoXCIsXG4gIFwiSnVkZFwiLFxuICBcIkp1ZGVcIixcbiAgXCJKdWRnZVwiLFxuICBcIkp1ZHNvblwiLFxuICBcIkp1ZHlcIixcbiAgXCJKdWxlc1wiLFxuICBcIkp1bGlhXCIsXG4gIFwiSnVsaWFuXCIsXG4gIFwiSnVsaWFuYVwiLFxuICBcIkp1bGlhbm5lXCIsXG4gIFwiSnVsaWVcIixcbiAgXCJKdWxpZW5cIixcbiAgXCJKdWxpZXRcIixcbiAgXCJKdWxpb1wiLFxuICBcIkp1bGl1c1wiLFxuICBcIkp1bmVcIixcbiAgXCJKdW5pb3JcIixcbiAgXCJKdW5pdXNcIixcbiAgXCJKdXN0ZW5cIixcbiAgXCJKdXN0aWNlXCIsXG4gIFwiSnVzdGluYVwiLFxuICBcIkp1c3RpbmVcIixcbiAgXCJKdXN0b25cIixcbiAgXCJKdXN0dXNcIixcbiAgXCJKdXN0eW5cIixcbiAgXCJKdXZlbmFsXCIsXG4gIFwiSnV3YW5cIixcbiAgXCJLYWNleVwiLFxuICBcIkthY2lcIixcbiAgXCJLYWNpZVwiLFxuICBcIkthZGVcIixcbiAgXCJLYWRlblwiLFxuICBcIkthZGluXCIsXG4gIFwiS2FlbGFcIixcbiAgXCJLYWVseW5cIixcbiAgXCJLYWlhXCIsXG4gIFwiS2FpbGVlXCIsXG4gIFwiS2FpbGV5XCIsXG4gIFwiS2FpbHluXCIsXG4gIFwiS2FpdGxpblwiLFxuICBcIkthaXRseW5cIixcbiAgXCJLYWxlXCIsXG4gIFwiS2FsZWJcIixcbiAgXCJLYWxlaWdoXCIsXG4gIFwiS2FsZXlcIixcbiAgXCJLYWxpXCIsXG4gIFwiS2FsbGllXCIsXG4gIFwiS2FtZXJvblwiLFxuICBcIkthbWlsbGVcIixcbiAgXCJLYW1yZW5cIixcbiAgXCJLYW1yb25cIixcbiAgXCJLYW1yeW5cIixcbiAgXCJLYW5lXCIsXG4gIFwiS2FyYVwiLFxuICBcIkthcmVlbVwiLFxuICBcIkthcmVsbGVcIixcbiAgXCJLYXJlblwiLFxuICBcIkthcmlcIixcbiAgXCJLYXJpYW5lXCIsXG4gIFwiS2FyaWFubmVcIixcbiAgXCJLYXJpbmFcIixcbiAgXCJLYXJpbmVcIixcbiAgXCJLYXJsXCIsXG4gIFwiS2FybGVlXCIsXG4gIFwiS2FybGV5XCIsXG4gIFwiS2FybGlcIixcbiAgXCJLYXJsaWVcIixcbiAgXCJLYXJvbGFublwiLFxuICBcIkthcnNvblwiLFxuICBcIkthc2FuZHJhXCIsXG4gIFwiS2FzZXlcIixcbiAgXCJLYXNzYW5kcmFcIixcbiAgXCJLYXRhcmluYVwiLFxuICBcIkthdGVsaW5cIixcbiAgXCJLYXRlbHluXCIsXG4gIFwiS2F0ZWx5bm5cIixcbiAgXCJLYXRoYXJpbmFcIixcbiAgXCJLYXRoZXJpbmVcIixcbiAgXCJLYXRoZXJ5blwiLFxuICBcIkthdGhsZWVuXCIsXG4gIFwiS2F0aGx5blwiLFxuICBcIkthdGhyeW5cIixcbiAgXCJLYXRocnluZVwiLFxuICBcIkthdGx5blwiLFxuICBcIkthdGx5bm5cIixcbiAgXCJLYXRyaW5hXCIsXG4gIFwiS2F0cmluZVwiLFxuICBcIkthdHRpZVwiLFxuICBcIkthdm9uXCIsXG4gIFwiS2F5XCIsXG4gIFwiS2F5YVwiLFxuICBcIktheWNlZVwiLFxuICBcIktheWRlblwiLFxuICBcIktheWxhXCIsXG4gIFwiS2F5bGFoXCIsXG4gIFwiS2F5bGVlXCIsXG4gIFwiS2F5bGVpZ2hcIixcbiAgXCJLYXlsZXlcIixcbiAgXCJLYXlsaVwiLFxuICBcIktheWxpZVwiLFxuICBcIktheWxpblwiLFxuICBcIktlYWdhblwiLFxuICBcIktlYW51XCIsXG4gIFwiS2VhcmFcIixcbiAgXCJLZWF0b25cIixcbiAgXCJLZWVnYW5cIixcbiAgXCJLZWVsZXlcIixcbiAgXCJLZWVseVwiLFxuICBcIktlZW5hblwiLFxuICBcIktlaXJhXCIsXG4gIFwiS2VpdGhcIixcbiAgXCJLZWxsZW5cIixcbiAgXCJLZWxsZXlcIixcbiAgXCJLZWxsaVwiLFxuICBcIktlbGxpZVwiLFxuICBcIktlbGx5XCIsXG4gIFwiS2Vsc2lcIixcbiAgXCJLZWxzaWVcIixcbiAgXCJLZWx0b25cIixcbiAgXCJLZWx2aW5cIixcbiAgXCJLZW5cIixcbiAgXCJLZW5kYWxsXCIsXG4gIFwiS2VuZHJhXCIsXG4gIFwiS2VuZHJpY2tcIixcbiAgXCJLZW5uYVwiLFxuICBcIktlbm5lZGlcIixcbiAgXCJLZW5uZWR5XCIsXG4gIFwiS2VubmV0aFwiLFxuICBcIktlbm5pdGhcIixcbiAgXCJLZW5ueVwiLFxuICBcIktlbnRvblwiLFxuICBcIktlbnlhXCIsXG4gIFwiS2VueWF0dGFcIixcbiAgXCJLZW55b25cIixcbiAgXCJLZW9uXCIsXG4gIFwiS2VzaGF1blwiLFxuICBcIktlc2hhd25cIixcbiAgXCJLZXZlblwiLFxuICBcIktldmluXCIsXG4gIFwiS2V2b25cIixcbiAgXCJLZXlvblwiLFxuICBcIktleXNoYXduXCIsXG4gIFwiS2hhbGlkXCIsXG4gIFwiS2hhbGlsXCIsXG4gIFwiS2lhblwiLFxuICBcIktpYW5hXCIsXG4gIFwiS2lhbm5hXCIsXG4gIFwiS2lhcmFcIixcbiAgXCJLaWFycmFcIixcbiAgXCJLaWVsXCIsXG4gIFwiS2llcmFcIixcbiAgXCJLaWVyYW5cIixcbiAgXCJLaWxleVwiLFxuICBcIktpbVwiLFxuICBcIktpbWJlcmx5XCIsXG4gIFwiS2luZ1wiLFxuICBcIktpcFwiLFxuICBcIktpcmFcIixcbiAgXCJLaXJrXCIsXG4gIFwiS2lyc3RlblwiLFxuICBcIktpcnN0aW5cIixcbiAgXCJLaXR0eVwiLFxuICBcIktvYmVcIixcbiAgXCJLb2J5XCIsXG4gIFwiS29keVwiLFxuICBcIktvbGJ5XCIsXG4gIFwiS29sZVwiLFxuICBcIktvcmJpblwiLFxuICBcIktvcmV5XCIsXG4gIFwiS29yeVwiLFxuICBcIktyYWlnXCIsXG4gIFwiS3Jpc1wiLFxuICBcIktyaXN0YVwiLFxuICBcIktyaXN0aWFuXCIsXG4gIFwiS3Jpc3RpblwiLFxuICBcIktyaXN0aW5hXCIsXG4gIFwiS3Jpc3RvZmVyXCIsXG4gIFwiS3Jpc3RvZmZlclwiLFxuICBcIktyaXN0b3BoZXJcIixcbiAgXCJLcmlzdHlcIixcbiAgXCJLcnlzdGFsXCIsXG4gIFwiS3J5c3RlbFwiLFxuICBcIktyeXN0aW5hXCIsXG4gIFwiS3VydFwiLFxuICBcIkt1cnRpc1wiLFxuICBcIkt5bGFcIixcbiAgXCJLeWxlXCIsXG4gIFwiS3lsZWVcIixcbiAgXCJLeWxlaWdoXCIsXG4gIFwiS3lsZXJcIixcbiAgXCJLeWxpZVwiLFxuICBcIkt5cmFcIixcbiAgXCJMYWNleVwiLFxuICBcIkxhY3lcIixcbiAgXCJMYWRhcml1c1wiLFxuICBcIkxhZmF5ZXR0ZVwiLFxuICBcIkxhaWxhXCIsXG4gIFwiTGFpc2hhXCIsXG4gIFwiTGFtYXJcIixcbiAgXCJMYW1iZXJ0XCIsXG4gIFwiTGFtb250XCIsXG4gIFwiTGFuY2VcIixcbiAgXCJMYW5kZW5cIixcbiAgXCJMYW5lXCIsXG4gIFwiTGFuZXlcIixcbiAgXCJMYXJpc3NhXCIsXG4gIFwiTGFyb25cIixcbiAgXCJMYXJyeVwiLFxuICBcIkxhcnVlXCIsXG4gIFwiTGF1cmFcIixcbiAgXCJMYXVyZWxcIixcbiAgXCJMYXVyZW5cIixcbiAgXCJMYXVyZW5jZVwiLFxuICBcIkxhdXJldHRhXCIsXG4gIFwiTGF1cmlhbmVcIixcbiAgXCJMYXVyaWFubmVcIixcbiAgXCJMYXVyaWVcIixcbiAgXCJMYXVyaW5lXCIsXG4gIFwiTGF1cnlcIixcbiAgXCJMYXVyeW5cIixcbiAgXCJMYXZhZGFcIixcbiAgXCJMYXZlcm5cIixcbiAgXCJMYXZlcm5hXCIsXG4gIFwiTGF2ZXJuZVwiLFxuICBcIkxhdmluYVwiLFxuICBcIkxhdmluaWFcIixcbiAgXCJMYXZvblwiLFxuICBcIkxhdm9ubmVcIixcbiAgXCJMYXdyZW5jZVwiLFxuICBcIkxhd3NvblwiLFxuICBcIkxheWxhXCIsXG4gIFwiTGF5bmVcIixcbiAgXCJMYXphcm9cIixcbiAgXCJMZWFcIixcbiAgXCJMZWFublwiLFxuICBcIkxlYW5uYVwiLFxuICBcIkxlYW5uZVwiLFxuICBcIkxlYXRoYVwiLFxuICBcIkxlZGFcIixcbiAgXCJMZWVcIixcbiAgXCJMZWlmXCIsXG4gIFwiTGVpbGFcIixcbiAgXCJMZWlsYW5pXCIsXG4gIFwiTGVsYVwiLFxuICBcIkxlbGFoXCIsXG4gIFwiTGVsYW5kXCIsXG4gIFwiTGVsaWFcIixcbiAgXCJMZW1waVwiLFxuICBcIkxlbXVlbFwiLFxuICBcIkxlbm5hXCIsXG4gIFwiTGVubmllXCIsXG4gIFwiTGVubnlcIixcbiAgXCJMZW5vcmFcIixcbiAgXCJMZW5vcmVcIixcbiAgXCJMZW9cIixcbiAgXCJMZW9sYVwiLFxuICBcIkxlb25cIixcbiAgXCJMZW9uYXJkXCIsXG4gIFwiTGVvbmFyZG9cIixcbiAgXCJMZW9uZVwiLFxuICBcIkxlb25lbFwiLFxuICBcIkxlb25pZVwiLFxuICBcIkxlb25vclwiLFxuICBcIkxlb25vcmFcIixcbiAgXCJMZW9wb2xkXCIsXG4gIFwiTGVvcG9sZG9cIixcbiAgXCJMZW9yYVwiLFxuICBcIkxlcmFcIixcbiAgXCJMZXNsZXlcIixcbiAgXCJMZXNsaWVcIixcbiAgXCJMZXNseVwiLFxuICBcIkxlc3NpZVwiLFxuICBcIkxlc3RlclwiLFxuICBcIkxldGFcIixcbiAgXCJMZXRoYVwiLFxuICBcIkxldGl0aWFcIixcbiAgXCJMZXZpXCIsXG4gIFwiTGV3XCIsXG4gIFwiTGV3aXNcIixcbiAgXCJMZXhpXCIsXG4gIFwiTGV4aWVcIixcbiAgXCJMZXh1c1wiLFxuICBcIkxpYVwiLFxuICBcIkxpYW1cIixcbiAgXCJMaWFuYVwiLFxuICBcIkxpYmJpZVwiLFxuICBcIkxpYmJ5XCIsXG4gIFwiTGlsYVwiLFxuICBcIkxpbGlhblwiLFxuICBcIkxpbGlhbmFcIixcbiAgXCJMaWxpYW5lXCIsXG4gIFwiTGlsbGFcIixcbiAgXCJMaWxsaWFuXCIsXG4gIFwiTGlsbGlhbmFcIixcbiAgXCJMaWxsaWVcIixcbiAgXCJMaWxseVwiLFxuICBcIkxpbHlcIixcbiAgXCJMaWx5YW5cIixcbiAgXCJMaW5hXCIsXG4gIFwiTGluY29sblwiLFxuICBcIkxpbmRhXCIsXG4gIFwiTGluZHNheVwiLFxuICBcIkxpbmRzZXlcIixcbiAgXCJMaW5uZWFcIixcbiAgXCJMaW5uaWVcIixcbiAgXCJMaW53b29kXCIsXG4gIFwiTGlvbmVsXCIsXG4gIFwiTGlzYVwiLFxuICBcIkxpc2FuZHJvXCIsXG4gIFwiTGlzZXR0ZVwiLFxuICBcIkxpdHp5XCIsXG4gIFwiTGl6YVwiLFxuICBcIkxpemV0aFwiLFxuICBcIkxpenppZVwiLFxuICBcIkxsZXdlbGx5blwiLFxuICBcIkxsb3lkXCIsXG4gIFwiTG9nYW5cIixcbiAgXCJMb2lzXCIsXG4gIFwiTG9sYVwiLFxuICBcIkxvbGl0YVwiLFxuICBcIkxvbWFcIixcbiAgXCJMb25cIixcbiAgXCJMb25kb25cIixcbiAgXCJMb25pZVwiLFxuICBcIkxvbm5pZVwiLFxuICBcIkxvbm55XCIsXG4gIFwiTG9uem9cIixcbiAgXCJMb3JhXCIsXG4gIFwiTG9yYWluZVwiLFxuICBcIkxvcmVuXCIsXG4gIFwiTG9yZW5hXCIsXG4gIFwiTG9yZW56XCIsXG4gIFwiTG9yZW56YVwiLFxuICBcIkxvcmVuem9cIixcbiAgXCJMb3JpXCIsXG4gIFwiTG9yaW5lXCIsXG4gIFwiTG9ybmFcIixcbiAgXCJMb3R0aWVcIixcbiAgXCJMb3VcIixcbiAgXCJMb3VpZVwiLFxuICBcIkxvdWlzYVwiLFxuICBcIkxvdXJkZXNcIixcbiAgXCJMb3V2ZW5pYVwiLFxuICBcIkxvd2VsbFwiLFxuICBcIkxveVwiLFxuICBcIkxveWFsXCIsXG4gIFwiTG95Y2VcIixcbiAgXCJMdWNhc1wiLFxuICBcIkx1Y2lhbm9cIixcbiAgXCJMdWNpZVwiLFxuICBcIkx1Y2llbm5lXCIsXG4gIFwiTHVjaWxlXCIsXG4gIFwiTHVjaW5kYVwiLFxuICBcIkx1Y2lvXCIsXG4gIFwiTHVjaW91c1wiLFxuICBcIkx1Y2l1c1wiLFxuICBcIkx1Y3lcIixcbiAgXCJMdWRpZVwiLFxuICBcIkx1ZHdpZ1wiLFxuICBcIkx1ZVwiLFxuICBcIkx1ZWxsYVwiLFxuICBcIkx1aWdpXCIsXG4gIFwiTHVpc1wiLFxuICBcIkx1aXNhXCIsXG4gIFwiTHVrYXNcIixcbiAgXCJMdWxhXCIsXG4gIFwiTHVsdVwiLFxuICBcIkx1bmFcIixcbiAgXCJMdXBlXCIsXG4gIFwiTHVyYVwiLFxuICBcIkx1cmxpbmVcIixcbiAgXCJMdXRoZXJcIixcbiAgXCJMdXpcIixcbiAgXCJMeWRhXCIsXG4gIFwiTHlkaWFcIixcbiAgXCJMeWxhXCIsXG4gIFwiTHlublwiLFxuICBcIkx5cmljXCIsXG4gIFwiTHlzYW5uZVwiLFxuICBcIk1hYmVsXCIsXG4gIFwiTWFiZWxsZVwiLFxuICBcIk1hYmxlXCIsXG4gIFwiTWFjXCIsXG4gIFwiTWFjZXlcIixcbiAgXCJNYWNpXCIsXG4gIFwiTWFjaWVcIixcbiAgXCJNYWNrXCIsXG4gIFwiTWFja2VuemllXCIsXG4gIFwiTWFjeVwiLFxuICBcIk1hZGFsaW5lXCIsXG4gIFwiTWFkYWx5blwiLFxuICBcIk1hZGRpc29uXCIsXG4gIFwiTWFkZWxpbmVcIixcbiAgXCJNYWRlbHluXCIsXG4gIFwiTWFkZWx5bm5cIixcbiAgXCJNYWRnZVwiLFxuICBcIk1hZGllXCIsXG4gIFwiTWFkaWx5blwiLFxuICBcIk1hZGlzZW5cIixcbiAgXCJNYWRpc29uXCIsXG4gIFwiTWFkaXN5blwiLFxuICBcIk1hZG9ubmFcIixcbiAgXCJNYWR5c29uXCIsXG4gIFwiTWFlXCIsXG4gIFwiTWFlZ2FuXCIsXG4gIFwiTWFldmVcIixcbiAgXCJNYWZhbGRhXCIsXG4gIFwiTWFnYWxpXCIsXG4gIFwiTWFnZGFsZW5cIixcbiAgXCJNYWdkYWxlbmFcIixcbiAgXCJNYWdnaWVcIixcbiAgXCJNYWdub2xpYVwiLFxuICBcIk1hZ251c1wiLFxuICBcIk1haWFcIixcbiAgXCJNYWlkYVwiLFxuICBcIk1haXlhXCIsXG4gIFwiTWFqb3JcIixcbiAgXCJNYWtheWxhXCIsXG4gIFwiTWFrZW5uYVwiLFxuICBcIk1ha2VuemllXCIsXG4gIFwiTWFsYWNoaVwiLFxuICBcIk1hbGNvbG1cIixcbiAgXCJNYWxpa2FcIixcbiAgXCJNYWxpbmRhXCIsXG4gIFwiTWFsbGllXCIsXG4gIFwiTWFsbG9yeVwiLFxuICBcIk1hbHZpbmFcIixcbiAgXCJNYW5keVwiLFxuICBcIk1hbmxleVwiLFxuICBcIk1hbnVlbFwiLFxuICBcIk1hbnVlbGFcIixcbiAgXCJNYXJhXCIsXG4gIFwiTWFyY1wiLFxuICBcIk1hcmNlbFwiLFxuICBcIk1hcmNlbGluYVwiLFxuICBcIk1hcmNlbGlub1wiLFxuICBcIk1hcmNlbGxhXCIsXG4gIFwiTWFyY2VsbGVcIixcbiAgXCJNYXJjZWxsdXNcIixcbiAgXCJNYXJjZWxvXCIsXG4gIFwiTWFyY2lhXCIsXG4gIFwiTWFyY29cIixcbiAgXCJNYXJjb3NcIixcbiAgXCJNYXJjdXNcIixcbiAgXCJNYXJnYXJldFwiLFxuICBcIk1hcmdhcmV0ZVwiLFxuICBcIk1hcmdhcmV0dFwiLFxuICBcIk1hcmdhcmV0dGFcIixcbiAgXCJNYXJnYXJldHRlXCIsXG4gIFwiTWFyZ2FyaXRhXCIsXG4gIFwiTWFyZ2VcIixcbiAgXCJNYXJnaWVcIixcbiAgXCJNYXJnb3RcIixcbiAgXCJNYXJncmV0XCIsXG4gIFwiTWFyZ3Vlcml0ZVwiLFxuICBcIk1hcmlhXCIsXG4gIFwiTWFyaWFoXCIsXG4gIFwiTWFyaWFtXCIsXG4gIFwiTWFyaWFuXCIsXG4gIFwiTWFyaWFuYVwiLFxuICBcIk1hcmlhbmVcIixcbiAgXCJNYXJpYW5uYVwiLFxuICBcIk1hcmlhbm5lXCIsXG4gIFwiTWFyaWFub1wiLFxuICBcIk1hcmliZWxcIixcbiAgXCJNYXJpZVwiLFxuICBcIk1hcmllbGFcIixcbiAgXCJNYXJpZWxsZVwiLFxuICBcIk1hcmlldHRhXCIsXG4gIFwiTWFyaWxpZVwiLFxuICBcIk1hcmlsb3VcIixcbiAgXCJNYXJpbHluZVwiLFxuICBcIk1hcmluYVwiLFxuICBcIk1hcmlvXCIsXG4gIFwiTWFyaW9uXCIsXG4gIFwiTWFyaXNhXCIsXG4gIFwiTWFyaXNvbFwiLFxuICBcIk1hcml0emFcIixcbiAgXCJNYXJqb2xhaW5lXCIsXG4gIFwiTWFyam9yaWVcIixcbiAgXCJNYXJqb3J5XCIsXG4gIFwiTWFya1wiLFxuICBcIk1hcmt1c1wiLFxuICBcIk1hcmxlZVwiLFxuICBcIk1hcmxlblwiLFxuICBcIk1hcmxlbmVcIixcbiAgXCJNYXJsZXlcIixcbiAgXCJNYXJsaW5cIixcbiAgXCJNYXJsb25cIixcbiAgXCJNYXJxdWVzXCIsXG4gIFwiTWFycXVpc1wiLFxuICBcIk1hcnF1aXNlXCIsXG4gIFwiTWFyc2hhbGxcIixcbiAgXCJNYXJ0YVwiLFxuICBcIk1hcnRpblwiLFxuICBcIk1hcnRpbmFcIixcbiAgXCJNYXJ0aW5lXCIsXG4gIFwiTWFydHlcIixcbiAgXCJNYXJ2aW5cIixcbiAgXCJNYXJ5XCIsXG4gIFwiTWFyeWFtXCIsXG4gIFwiTWFyeWphbmVcIixcbiAgXCJNYXJ5c2VcIixcbiAgXCJNYXNvblwiLFxuICBcIk1hdGVvXCIsXG4gIFwiTWF0aGV3XCIsXG4gIFwiTWF0aGlhc1wiLFxuICBcIk1hdGhpbGRlXCIsXG4gIFwiTWF0aWxkYVwiLFxuICBcIk1hdGlsZGVcIixcbiAgXCJNYXR0XCIsXG4gIFwiTWF0dGVvXCIsXG4gIFwiTWF0dGllXCIsXG4gIFwiTWF1ZFwiLFxuICBcIk1hdWRlXCIsXG4gIFwiTWF1ZGllXCIsXG4gIFwiTWF1cmVlblwiLFxuICBcIk1hdXJpY2VcIixcbiAgXCJNYXVyaWNpb1wiLFxuICBcIk1hdXJpbmVcIixcbiAgXCJNYXZlcmlja1wiLFxuICBcIk1hdmlzXCIsXG4gIFwiTWF4XCIsXG4gIFwiTWF4aWVcIixcbiAgXCJNYXhpbWVcIixcbiAgXCJNYXhpbWlsaWFuXCIsXG4gIFwiTWF4aW1pbGxpYVwiLFxuICBcIk1heGltaWxsaWFuXCIsXG4gIFwiTWF4aW1vXCIsXG4gIFwiTWF4aW11c1wiLFxuICBcIk1heGluZVwiLFxuICBcIk1heHdlbGxcIixcbiAgXCJNYXlcIixcbiAgXCJNYXlhXCIsXG4gIFwiTWF5YmVsbFwiLFxuICBcIk1heWJlbGxlXCIsXG4gIFwiTWF5ZVwiLFxuICBcIk1heW1pZVwiLFxuICBcIk1heW5hcmRcIixcbiAgXCJNYXlyYVwiLFxuICBcIk1hemllXCIsXG4gIFwiTWNrYXlsYVwiLFxuICBcIk1ja2VubmFcIixcbiAgXCJNY2tlbnppZVwiLFxuICBcIk1lYWdhblwiLFxuICBcIk1lYWdoYW5cIixcbiAgXCJNZWRhXCIsXG4gIFwiTWVnYW5lXCIsXG4gIFwiTWVnZ2llXCIsXG4gIFwiTWVnaGFuXCIsXG4gIFwiTWVraGlcIixcbiAgXCJNZWxhbnlcIixcbiAgXCJNZWxiYVwiLFxuICBcIk1lbGlzYVwiLFxuICBcIk1lbGlzc2FcIixcbiAgXCJNZWxsaWVcIixcbiAgXCJNZWxvZHlcIixcbiAgXCJNZWx2aW5cIixcbiAgXCJNZWx2aW5hXCIsXG4gIFwiTWVseW5hXCIsXG4gIFwiTWVseXNzYVwiLFxuICBcIk1lcmNlZGVzXCIsXG4gIFwiTWVyZWRpdGhcIixcbiAgXCJNZXJsXCIsXG4gIFwiTWVybGVcIixcbiAgXCJNZXJsaW5cIixcbiAgXCJNZXJyaXR0XCIsXG4gIFwiTWVydGllXCIsXG4gIFwiTWVydmluXCIsXG4gIFwiTWV0YVwiLFxuICBcIk1pYVwiLFxuICBcIk1pY2FlbGFcIixcbiAgXCJNaWNhaFwiLFxuICBcIk1pY2hhZWxcIixcbiAgXCJNaWNoYWVsYVwiLFxuICBcIk1pY2hhbGVcIixcbiAgXCJNaWNoZWFsXCIsXG4gIFwiTWljaGVsXCIsXG4gIFwiTWljaGVsZVwiLFxuICBcIk1pY2hlbGxlXCIsXG4gIFwiTWlndWVsXCIsXG4gIFwiTWlrYXlsYVwiLFxuICBcIk1pa2VcIixcbiAgXCJNaWtlbFwiLFxuICBcIk1pbGFuXCIsXG4gIFwiTWlsZXNcIixcbiAgXCJNaWxmb3JkXCIsXG4gIFwiTWlsbGVyXCIsXG4gIFwiTWlsbGllXCIsXG4gIFwiTWlsb1wiLFxuICBcIk1pbHRvblwiLFxuICBcIk1pbmFcIixcbiAgXCJNaW5lcnZhXCIsXG4gIFwiTWlubmllXCIsXG4gIFwiTWlyYWNsZVwiLFxuICBcIk1pcmVpbGxlXCIsXG4gIFwiTWlyZXlhXCIsXG4gIFwiTWlzYWVsXCIsXG4gIFwiTWlzc291cmlcIixcbiAgXCJNaXN0eVwiLFxuICBcIk1pdGNoZWxcIixcbiAgXCJNaXRjaGVsbFwiLFxuICBcIk1pdHRpZVwiLFxuICBcIk1vZGVzdGFcIixcbiAgXCJNb2Rlc3RvXCIsXG4gIFwiTW9oYW1lZFwiLFxuICBcIk1vaGFtbWFkXCIsXG4gIFwiTW9oYW1tZWRcIixcbiAgXCJNb2lzZXNcIixcbiAgXCJNb2xsaWVcIixcbiAgXCJNb2xseVwiLFxuICBcIk1vbmFcIixcbiAgXCJNb25pY2FcIixcbiAgXCJNb25pcXVlXCIsXG4gIFwiTW9ucm9lXCIsXG4gIFwiTW9uc2VycmF0XCIsXG4gIFwiTW9uc2VycmF0ZVwiLFxuICBcIk1vbnRhbmFcIixcbiAgXCJNb250ZVwiLFxuICBcIk1vbnR5XCIsXG4gIFwiTW9yZ2FuXCIsXG4gIFwiTW9yaWFoXCIsXG4gIFwiTW9ycmlzXCIsXG4gIFwiTW9ydGltZXJcIixcbiAgXCJNb3J0b25cIixcbiAgXCJNb3NlXCIsXG4gIFwiTW9zZXNcIixcbiAgXCJNb3NoZVwiLFxuICBcIk1vc3NpZVwiLFxuICBcIk1vemVsbFwiLFxuICBcIk1vemVsbGVcIixcbiAgXCJNdWhhbW1hZFwiLFxuICBcIk11cmllbFwiLFxuICBcIk11cmxcIixcbiAgXCJNdXJwaHlcIixcbiAgXCJNdXJyYXlcIixcbiAgXCJNdXN0YWZhXCIsXG4gIFwiTXlhXCIsXG4gIFwiTXlhaFwiLFxuICBcIk15bGVuZVwiLFxuICBcIk15bGVzXCIsXG4gIFwiTXlyYVwiLFxuICBcIk15cmlhbVwiLFxuICBcIk15cmxcIixcbiAgXCJNeXJuYVwiLFxuICBcIk15cm9uXCIsXG4gIFwiTXlydGljZVwiLFxuICBcIk15cnRpZVwiLFxuICBcIk15cnRpc1wiLFxuICBcIk15cnRsZVwiLFxuICBcIk5hZGlhXCIsXG4gIFwiTmFraWFcIixcbiAgXCJOYW1lXCIsXG4gIFwiTmFubmllXCIsXG4gIFwiTmFvbWlcIixcbiAgXCJOYW9taWVcIixcbiAgXCJOYXBvbGVvblwiLFxuICBcIk5hcmNpc29cIixcbiAgXCJOYXNoXCIsXG4gIFwiTmFzaXJcIixcbiAgXCJOYXRcIixcbiAgXCJOYXRhbGlhXCIsXG4gIFwiTmF0YWxpZVwiLFxuICBcIk5hdGFzaGFcIixcbiAgXCJOYXRoYW5cIixcbiAgXCJOYXRoYW5hZWxcIixcbiAgXCJOYXRoYW5pYWxcIixcbiAgXCJOYXRoYW5pZWxcIixcbiAgXCJOYXRoZW5cIixcbiAgXCJOYXllbGlcIixcbiAgXCJOZWFsXCIsXG4gIFwiTmVkXCIsXG4gIFwiTmVkcmFcIixcbiAgXCJOZWhhXCIsXG4gIFwiTmVpbFwiLFxuICBcIk5lbGRhXCIsXG4gIFwiTmVsbGFcIixcbiAgXCJOZWxsZVwiLFxuICBcIk5lbGxpZVwiLFxuICBcIk5lbHNcIixcbiAgXCJOZWxzb25cIixcbiAgXCJOZW9tYVwiLFxuICBcIk5lc3RvclwiLFxuICBcIk5ldHRpZVwiLFxuICBcIk5ldmFcIixcbiAgXCJOZXdlbGxcIixcbiAgXCJOZXd0b25cIixcbiAgXCJOaWFcIixcbiAgXCJOaWNob2xhc1wiLFxuICBcIk5pY2hvbGF1c1wiLFxuICBcIk5pY2hvbGVcIixcbiAgXCJOaWNrXCIsXG4gIFwiTmlja2xhdXNcIixcbiAgXCJOaWNrb2xhc1wiLFxuICBcIk5pY29cIixcbiAgXCJOaWNvbGFcIixcbiAgXCJOaWNvbGFzXCIsXG4gIFwiTmljb2xlXCIsXG4gIFwiTmljb2xldHRlXCIsXG4gIFwiTmlnZWxcIixcbiAgXCJOaWtpdGFcIixcbiAgXCJOaWtraVwiLFxuICBcIk5pa2tvXCIsXG4gIFwiTmlrb1wiLFxuICBcIk5pa29sYXNcIixcbiAgXCJOaWxzXCIsXG4gIFwiTmluYVwiLFxuICBcIk5vYWhcIixcbiAgXCJOb2JsZVwiLFxuICBcIk5vZVwiLFxuICBcIk5vZWxcIixcbiAgXCJOb2VsaWFcIixcbiAgXCJOb2VtaVwiLFxuICBcIk5vZW1pZVwiLFxuICBcIk5vZW15XCIsXG4gIFwiTm9sYVwiLFxuICBcIk5vbGFuXCIsXG4gIFwiTm9uYVwiLFxuICBcIk5vcmFcIixcbiAgXCJOb3JiZXJ0XCIsXG4gIFwiTm9yYmVydG9cIixcbiAgXCJOb3JlbmVcIixcbiAgXCJOb3JtYVwiLFxuICBcIk5vcnJpc1wiLFxuICBcIk5vcnZhbFwiLFxuICBcIk5vcndvb2RcIixcbiAgXCJOb3ZhXCIsXG4gIFwiTm92ZWxsYVwiLFxuICBcIk55YVwiLFxuICBcIk55YWhcIixcbiAgXCJOeWFzaWFcIixcbiAgXCJPYmllXCIsXG4gIFwiT2NlYW5lXCIsXG4gIFwiT2NpZVwiLFxuICBcIk9jdGF2aWFcIixcbiAgXCJPZGFcIixcbiAgXCJPZGVsbFwiLFxuICBcIk9kZXNzYVwiLFxuICBcIk9kaWVcIixcbiAgXCJPZmVsaWFcIixcbiAgXCJPa2V5XCIsXG4gIFwiT2xhXCIsXG4gIFwiT2xhZlwiLFxuICBcIk9sZVwiLFxuICBcIk9sZW5cIixcbiAgXCJPbGV0YVwiLFxuICBcIk9sZ2FcIixcbiAgXCJPbGluXCIsXG4gIFwiT2xpdmVyXCIsXG4gIFwiT2xsaWVcIixcbiAgXCJPbWFcIixcbiAgXCJPbWFyaVwiLFxuICBcIk9tZXJcIixcbiAgXCJPbmFcIixcbiAgXCJPbmllXCIsXG4gIFwiT3BhbFwiLFxuICBcIk9waGVsaWFcIixcbiAgXCJPcmFcIixcbiAgXCJPcmFsXCIsXG4gIFwiT3JhblwiLFxuICBcIk9yZW5cIixcbiAgXCJPcmllXCIsXG4gIFwiT3JpblwiLFxuICBcIk9yaW9uXCIsXG4gIFwiT3JsYW5kXCIsXG4gIFwiT3JsYW5kb1wiLFxuICBcIk9ybG9cIixcbiAgXCJPcnBoYVwiLFxuICBcIk9ycmluXCIsXG4gIFwiT3J2YWxcIixcbiAgXCJPcnZpbGxlXCIsXG4gIFwiT3NiYWxkb1wiLFxuICBcIk9zYm9ybmVcIixcbiAgXCJPc2NhclwiLFxuICBcIk9zdmFsZG9cIixcbiAgXCJPc3dhbGRcIixcbiAgXCJPc3dhbGRvXCIsXG4gIFwiT3RoYVwiLFxuICBcIk90aG9cIixcbiAgXCJPdGlsaWFcIixcbiAgXCJPdGlzXCIsXG4gIFwiT3R0aWxpZVwiLFxuICBcIk90dGlzXCIsXG4gIFwiT3R0b1wiLFxuICBcIk92YVwiLFxuICBcIk93ZW5cIixcbiAgXCJPemVsbGFcIixcbiAgXCJQYWJsb1wiLFxuICBcIlBhaWdlXCIsXG4gIFwiUGFsbWFcIixcbiAgXCJQYW1lbGFcIixcbiAgXCJQYW5zeVwiLFxuICBcIlBhb2xvXCIsXG4gIFwiUGFyaXNcIixcbiAgXCJQYXJrZXJcIixcbiAgXCJQYXNjYWxlXCIsXG4gIFwiUGFzcXVhbGVcIixcbiAgXCJQYXRcIixcbiAgXCJQYXRpZW5jZVwiLFxuICBcIlBhdHJpY2lhXCIsXG4gIFwiUGF0cmlja1wiLFxuICBcIlBhdHN5XCIsXG4gIFwiUGF0dGllXCIsXG4gIFwiUGF1bFwiLFxuICBcIlBhdWxhXCIsXG4gIFwiUGF1bGluZVwiLFxuICBcIlBheHRvblwiLFxuICBcIlBheXRvblwiLFxuICBcIlBlYXJsXCIsXG4gIFwiUGVhcmxpZVwiLFxuICBcIlBlYXJsaW5lXCIsXG4gIFwiUGVkcm9cIixcbiAgXCJQZWdnaWVcIixcbiAgXCJQZW5lbG9wZVwiLFxuICBcIlBlcmNpdmFsXCIsXG4gIFwiUGVyY3lcIixcbiAgXCJQZXJyeVwiLFxuICBcIlBldGVcIixcbiAgXCJQZXRlclwiLFxuICBcIlBldHJhXCIsXG4gIFwiUGV5dG9uXCIsXG4gIFwiUGhpbGlwXCIsXG4gIFwiUGhvZWJlXCIsXG4gIFwiUGh5bGxpc1wiLFxuICBcIlBpZXJjZVwiLFxuICBcIlBpZXJyZVwiLFxuICBcIlBpZXRyb1wiLFxuICBcIlBpbmtcIixcbiAgXCJQaW5raWVcIixcbiAgXCJQaXBlclwiLFxuICBcIlBvbGx5XCIsXG4gIFwiUG9ydGVyXCIsXG4gIFwiUHJlY2lvdXNcIixcbiAgXCJQcmVzbGV5XCIsXG4gIFwiUHJlc3RvblwiLFxuICBcIlByaWNlXCIsXG4gIFwiUHJpbmNlXCIsXG4gIFwiUHJpbmNlc3NcIixcbiAgXCJQcmlzY2lsbGFcIixcbiAgXCJQcm92aWRlbmNpXCIsXG4gIFwiUHJ1ZGVuY2VcIixcbiAgXCJRdWVlblwiLFxuICBcIlF1ZWVuaWVcIixcbiAgXCJRdWVudGluXCIsXG4gIFwiUXVpbmN5XCIsXG4gIFwiUXVpbm5cIixcbiAgXCJRdWludGVuXCIsXG4gIFwiUXVpbnRvblwiLFxuICBcIlJhY2hhZWxcIixcbiAgXCJSYWNoZWxcIixcbiAgXCJSYWNoZWxsZVwiLFxuICBcIlJhZVwiLFxuICBcIlJhZWdhblwiLFxuICBcIlJhZmFlbFwiLFxuICBcIlJhZmFlbGFcIixcbiAgXCJSYWhlZW1cIixcbiAgXCJSYWhzYWFuXCIsXG4gIFwiUmFodWxcIixcbiAgXCJSYWluYVwiLFxuICBcIlJhbGVpZ2hcIixcbiAgXCJSYWxwaFwiLFxuICBcIlJhbWlyb1wiLFxuICBcIlJhbW9uXCIsXG4gIFwiUmFtb25hXCIsXG4gIFwiUmFuZGFsXCIsXG4gIFwiUmFuZGFsbFwiLFxuICBcIlJhbmRpXCIsXG4gIFwiUmFuZHlcIixcbiAgXCJSYW5zb21cIixcbiAgXCJSYW91bFwiLFxuICBcIlJhcGhhZWxcIixcbiAgXCJSYXBoYWVsbGVcIixcbiAgXCJSYXF1ZWxcIixcbiAgXCJSYXNoYWRcIixcbiAgXCJSYXNoYXduXCIsXG4gIFwiUmFzaGVlZFwiLFxuICBcIlJhdWxcIixcbiAgXCJSYXZlblwiLFxuICBcIlJheVwiLFxuICBcIlJheW1vbmRcIixcbiAgXCJSYXltdW5kb1wiLFxuICBcIlJlYWdhblwiLFxuICBcIlJlYW5uYVwiLFxuICBcIlJlYmFcIixcbiAgXCJSZWJlY2FcIixcbiAgXCJSZWJlY2NhXCIsXG4gIFwiUmViZWthXCIsXG4gIFwiUmViZWthaFwiLFxuICBcIlJlZWNlXCIsXG4gIFwiUmVlZFwiLFxuICBcIlJlZXNlXCIsXG4gIFwiUmVnYW5cIixcbiAgXCJSZWdnaWVcIixcbiAgXCJSZWdpbmFsZFwiLFxuICBcIlJlaWRcIixcbiAgXCJSZWlsbHlcIixcbiAgXCJSZWluYVwiLFxuICBcIlJlaW5ob2xkXCIsXG4gIFwiUmVtaW5ndG9uXCIsXG4gIFwiUmVuZVwiLFxuICBcIlJlbmVlXCIsXG4gIFwiUmVzc2llXCIsXG4gIFwiUmV0YVwiLFxuICBcIlJldGhhXCIsXG4gIFwiUmV0dGFcIixcbiAgXCJSZXViZW5cIixcbiAgXCJSZXZhXCIsXG4gIFwiUmV4XCIsXG4gIFwiUmV5XCIsXG4gIFwiUmV5ZXNcIixcbiAgXCJSZXltdW5kb1wiLFxuICBcIlJleW5hXCIsXG4gIFwiUmV5bm9sZFwiLFxuICBcIlJoZWFcIixcbiAgXCJSaGV0dFwiLFxuICBcIlJoaWFubmFcIixcbiAgXCJSaGlhbm5vblwiLFxuICBcIlJob2RhXCIsXG4gIFwiUmljYXJkb1wiLFxuICBcIlJpY2hhcmRcIixcbiAgXCJSaWNoaWVcIixcbiAgXCJSaWNobW9uZFwiLFxuICBcIlJpY2tcIixcbiAgXCJSaWNrZXlcIixcbiAgXCJSaWNraWVcIixcbiAgXCJSaWNreVwiLFxuICBcIlJpY29cIixcbiAgXCJSaWdvYmVydG9cIixcbiAgXCJSaWxleVwiLFxuICBcIlJpdGFcIixcbiAgXCJSaXZlclwiLFxuICBcIlJvYmJcIixcbiAgXCJSb2JiaWVcIixcbiAgXCJSb2JlcnRcIixcbiAgXCJSb2JlcnRhXCIsXG4gIFwiUm9iZXJ0b1wiLFxuICBcIlJvYmluXCIsXG4gIFwiUm9ieW5cIixcbiAgXCJSb2Npb1wiLFxuICBcIlJvY2t5XCIsXG4gIFwiUm9kXCIsXG4gIFwiUm9kZXJpY2tcIixcbiAgXCJSb2RnZXJcIixcbiAgXCJSb2RvbGZvXCIsXG4gIFwiUm9kcmlja1wiLFxuICBcIlJvZHJpZ29cIixcbiAgXCJSb2VsXCIsXG4gIFwiUm9nZWxpb1wiLFxuICBcIlJvZ2VyXCIsXG4gIFwiUm9nZXJzXCIsXG4gIFwiUm9sYW5kb1wiLFxuICBcIlJvbGxpblwiLFxuICBcIlJvbWFcIixcbiAgXCJSb21haW5lXCIsXG4gIFwiUm9tYW5cIixcbiAgXCJSb25cIixcbiAgXCJSb25hbGRvXCIsXG4gIFwiUm9ubnlcIixcbiAgXCJSb29zZXZlbHRcIixcbiAgXCJSb3J5XCIsXG4gIFwiUm9zYVwiLFxuICBcIlJvc2FsZWVcIixcbiAgXCJSb3NhbGlhXCIsXG4gIFwiUm9zYWxpbmRcIixcbiAgXCJSb3NhbGluZGFcIixcbiAgXCJSb3NhbHluXCIsXG4gIFwiUm9zYW1vbmRcIixcbiAgXCJSb3Nhbm5hXCIsXG4gIFwiUm9zYXJpb1wiLFxuICBcIlJvc2NvZVwiLFxuICBcIlJvc2VcIixcbiAgXCJSb3NlbGxhXCIsXG4gIFwiUm9zZWx5blwiLFxuICBcIlJvc2VtYXJpZVwiLFxuICBcIlJvc2VtYXJ5XCIsXG4gIFwiUm9zZW5kb1wiLFxuICBcIlJvc2V0dGFcIixcbiAgXCJSb3NpZVwiLFxuICBcIlJvc2luYVwiLFxuICBcIlJvc2x5blwiLFxuICBcIlJvc3NcIixcbiAgXCJSb3NzaWVcIixcbiAgXCJSb3dhblwiLFxuICBcIlJvd2VuYVwiLFxuICBcIlJvd2xhbmRcIixcbiAgXCJSb3hhbmVcIixcbiAgXCJSb3hhbm5lXCIsXG4gIFwiUm95XCIsXG4gIFwiUm95YWxcIixcbiAgXCJSb3ljZVwiLFxuICBcIlJvemVsbGFcIixcbiAgXCJSdWJlblwiLFxuICBcIlJ1YmllXCIsXG4gIFwiUnVieVwiLFxuICBcIlJ1YnllXCIsXG4gIFwiUnVkb2xwaFwiLFxuICBcIlJ1ZHlcIixcbiAgXCJSdXBlcnRcIixcbiAgXCJSdXNzXCIsXG4gIFwiUnVzc2VsXCIsXG4gIFwiUnVzc2VsbFwiLFxuICBcIlJ1c3R5XCIsXG4gIFwiUnV0aFwiLFxuICBcIlJ1dGhlXCIsXG4gIFwiUnV0aGllXCIsXG4gIFwiUnlhblwiLFxuICBcIlJ5YW5uXCIsXG4gIFwiUnlkZXJcIixcbiAgXCJSeWxhblwiLFxuICBcIlJ5bGVlXCIsXG4gIFwiUnlsZWlnaFwiLFxuICBcIlJ5bGV5XCIsXG4gIFwiU2FiaW5hXCIsXG4gIFwiU2FicmluYVwiLFxuICBcIlNhYnJ5bmFcIixcbiAgXCJTYWRpZVwiLFxuICBcIlNhZHllXCIsXG4gIFwiU2FnZVwiLFxuICBcIlNhaWdlXCIsXG4gIFwiU2FsbGllXCIsXG4gIFwiU2FsbHlcIixcbiAgXCJTYWxtYVwiLFxuICBcIlNhbHZhZG9yXCIsXG4gIFwiU2FsdmF0b3JlXCIsXG4gIFwiU2FtXCIsXG4gIFwiU2FtYW50YVwiLFxuICBcIlNhbWFudGhhXCIsXG4gIFwiU2FtYXJhXCIsXG4gIFwiU2FtaXJcIixcbiAgXCJTYW1taWVcIixcbiAgXCJTYW1teVwiLFxuICBcIlNhbXNvblwiLFxuICBcIlNhbmRyYVwiLFxuICBcIlNhbmRyaW5lXCIsXG4gIFwiU2FuZHlcIixcbiAgXCJTYW5mb3JkXCIsXG4gIFwiU2FudGFcIixcbiAgXCJTYW50aWFnb1wiLFxuICBcIlNhbnRpbmFcIixcbiAgXCJTYW50aW5vXCIsXG4gIFwiU2FudG9zXCIsXG4gIFwiU2FyYWhcIixcbiAgXCJTYXJhaVwiLFxuICBcIlNhcmluYVwiLFxuICBcIlNhc2hhXCIsXG4gIFwiU2F1bFwiLFxuICBcIlNhdmFuYWhcIixcbiAgXCJTYXZhbm5hXCIsXG4gIFwiU2F2YW5uYWhcIixcbiAgXCJTYXZpb25cIixcbiAgXCJTY2FybGV0dFwiLFxuICBcIlNjaHV5bGVyXCIsXG4gIFwiU2NvdFwiLFxuICBcIlNjb3R0aWVcIixcbiAgXCJTY290dHlcIixcbiAgXCJTZWFtdXNcIixcbiAgXCJTZWFuXCIsXG4gIFwiU2ViYXN0aWFuXCIsXG4gIFwiU2Vkcmlja1wiLFxuICBcIlNlbGVuYVwiLFxuICBcIlNlbGluYVwiLFxuICBcIlNlbG1lclwiLFxuICBcIlNlcmVuYVwiLFxuICBcIlNlcmVuaXR5XCIsXG4gIFwiU2V0aFwiLFxuICBcIlNoYWRcIixcbiAgXCJTaGFpbmFcIixcbiAgXCJTaGFraXJhXCIsXG4gIFwiU2hhbmFcIixcbiAgXCJTaGFuZVwiLFxuICBcIlNoYW5lbFwiLFxuICBcIlNoYW5lbGxlXCIsXG4gIFwiU2hhbmlhXCIsXG4gIFwiU2hhbmllXCIsXG4gIFwiU2hhbml5YVwiLFxuICBcIlNoYW5uYVwiLFxuICBcIlNoYW5ub25cIixcbiAgXCJTaGFubnlcIixcbiAgXCJTaGFub25cIixcbiAgXCJTaGFueVwiLFxuICBcIlNoYXJvblwiLFxuICBcIlNoYXVuXCIsXG4gIFwiU2hhd25cIixcbiAgXCJTaGF3bmFcIixcbiAgXCJTaGF5bGVlXCIsXG4gIFwiU2hheW5hXCIsXG4gIFwiU2hheW5lXCIsXG4gIFwiU2hlYVwiLFxuICBcIlNoZWlsYVwiLFxuICBcIlNoZWxkb25cIixcbiAgXCJTaGVtYXJcIixcbiAgXCJTaGVyaWRhblwiLFxuICBcIlNoZXJtYW5cIixcbiAgXCJTaGVyd29vZFwiLFxuICBcIlNoaXJsZXlcIixcbiAgXCJTaHlhbm5cIixcbiAgXCJTaHlhbm5lXCIsXG4gIFwiU2lieWxcIixcbiAgXCJTaWRcIixcbiAgXCJTaWRuZXlcIixcbiAgXCJTaWVubmFcIixcbiAgXCJTaWVycmFcIixcbiAgXCJTaWdtdW5kXCIsXG4gIFwiU2lncmlkXCIsXG4gIFwiU2lndXJkXCIsXG4gIFwiU2lsYXNcIixcbiAgXCJTaW1cIixcbiAgXCJTaW1lb25cIixcbiAgXCJTaW1vbmVcIixcbiAgXCJTaW5jZXJlXCIsXG4gIFwiU2lzdGVyXCIsXG4gIFwiU2t5ZVwiLFxuICBcIlNreWxhXCIsXG4gIFwiU2t5bGFyXCIsXG4gIFwiU29maWFcIixcbiAgXCJTb2xlZGFkXCIsXG4gIFwiU29sb25cIixcbiAgXCJTb25pYVwiLFxuICBcIlNvbm55XCIsXG4gIFwiU29ueWFcIixcbiAgXCJTb3BoaWFcIixcbiAgXCJTb3BoaWVcIixcbiAgXCJTcGVuY2VyXCIsXG4gIFwiU3RhY2V5XCIsXG4gIFwiU3RhY3lcIixcbiAgXCJTdGFuXCIsXG4gIFwiU3RhbmZvcmRcIixcbiAgXCJTdGFubGV5XCIsXG4gIFwiU3RhbnRvblwiLFxuICBcIlN0ZWZhblwiLFxuICBcIlN0ZWZhbmllXCIsXG4gIFwiU3RlbGxhXCIsXG4gIFwiU3RlcGhhblwiLFxuICBcIlN0ZXBoYW5pYVwiLFxuICBcIlN0ZXBoYW5pZVwiLFxuICBcIlN0ZXBoYW55XCIsXG4gIFwiU3RlcGhlblwiLFxuICBcIlN0ZXBob25cIixcbiAgXCJTdGVybGluZ1wiLFxuICBcIlN0ZXZlXCIsXG4gIFwiU3RldmllXCIsXG4gIFwiU3Rld2FydFwiLFxuICBcIlN0b25lXCIsXG4gIFwiU3R1YXJ0XCIsXG4gIFwiU3VtbWVyXCIsXG4gIFwiU3VubnlcIixcbiAgXCJTdXNhblwiLFxuICBcIlN1c2FuYVwiLFxuICBcIlN1c2FubmFcIixcbiAgXCJTdXNpZVwiLFxuICBcIlN1emFubmVcIixcbiAgXCJTdmVuXCIsXG4gIFwiU3libGVcIixcbiAgXCJTeWRuZWVcIixcbiAgXCJTeWRuZXlcIixcbiAgXCJTeWRuaVwiLFxuICBcIlN5ZG5pZVwiLFxuICBcIlN5bHZhblwiLFxuICBcIlN5bHZlc3RlclwiLFxuICBcIlN5bHZpYVwiLFxuICBcIlRhYml0aGFcIixcbiAgXCJUYWRcIixcbiAgXCJUYWxpYVwiLFxuICBcIlRhbG9uXCIsXG4gIFwiVGFtYXJhXCIsXG4gIFwiVGFtaWFcIixcbiAgXCJUYW5pYVwiLFxuICBcIlRhbm5lclwiLFxuICBcIlRhbnlhXCIsXG4gIFwiVGFyYVwiLFxuICBcIlRhcnluXCIsXG4gIFwiVGF0ZVwiLFxuICBcIlRhdHVtXCIsXG4gIFwiVGF0eWFuYVwiLFxuICBcIlRhdXJlYW5cIixcbiAgXCJUYXZhcmVzXCIsXG4gIFwiVGF5YVwiLFxuICBcIlRheWxvclwiLFxuICBcIlRlYWdhblwiLFxuICBcIlRlZFwiLFxuICBcIlRlbGx5XCIsXG4gIFwiVGVyZW5jZVwiLFxuICBcIlRlcmVzYVwiLFxuICBcIlRlcnJhbmNlXCIsXG4gIFwiVGVycmVsbFwiLFxuICBcIlRlcnJlbmNlXCIsXG4gIFwiVGVycmlsbFwiLFxuICBcIlRlcnJ5XCIsXG4gIFwiVGVzc1wiLFxuICBcIlRlc3NpZVwiLFxuICBcIlRldmluXCIsXG4gIFwiVGhhZFwiLFxuICBcIlRoYWRkZXVzXCIsXG4gIFwiVGhhbGlhXCIsXG4gIFwiVGhlYVwiLFxuICBcIlRoZWxtYVwiLFxuICBcIlRoZW9cIixcbiAgXCJUaGVvZG9yYVwiLFxuICBcIlRoZW9kb3JlXCIsXG4gIFwiVGhlcmVzYVwiLFxuICBcIlRoZXJlc2VcIixcbiAgXCJUaGVyZXNpYVwiLFxuICBcIlRoZXJvblwiLFxuICBcIlRob21hc1wiLFxuICBcIlRob3JhXCIsXG4gIFwiVGh1cm1hblwiLFxuICBcIlRpYVwiLFxuICBcIlRpYW5hXCIsXG4gIFwiVGlhbm5hXCIsXG4gIFwiVGlhcmFcIixcbiAgXCJUaWVycmFcIixcbiAgXCJUaWZmYW55XCIsXG4gIFwiVGlsbG1hblwiLFxuICBcIlRpbW1vdGh5XCIsXG4gIFwiVGltbXlcIixcbiAgXCJUaW1vdGh5XCIsXG4gIFwiVGluYVwiLFxuICBcIlRpdG9cIixcbiAgXCJUaXR1c1wiLFxuICBcIlRvYmluXCIsXG4gIFwiVG9ieVwiLFxuICBcIlRvZFwiLFxuICBcIlRvbVwiLFxuICBcIlRvbWFzXCIsXG4gIFwiVG9tYXNhXCIsXG4gIFwiVG9tbWllXCIsXG4gIFwiVG9uZXlcIixcbiAgXCJUb25pXCIsXG4gIFwiVG9ueVwiLFxuICBcIlRvcmV5XCIsXG4gIFwiVG9ycmFuY2VcIixcbiAgXCJUb3JyZXlcIixcbiAgXCJUb3lcIixcbiAgXCJUcmFjZVwiLFxuICBcIlRyYWNleVwiLFxuICBcIlRyYWN5XCIsXG4gIFwiVHJhdmlzXCIsXG4gIFwiVHJhdm9uXCIsXG4gIFwiVHJlXCIsXG4gIFwiVHJlbWFpbmVcIixcbiAgXCJUcmVtYXluZVwiLFxuICBcIlRyZW50XCIsXG4gIFwiVHJlbnRvblwiLFxuICBcIlRyZXNzYVwiLFxuICBcIlRyZXNzaWVcIixcbiAgXCJUcmV2YVwiLFxuICBcIlRyZXZlclwiLFxuICBcIlRyZXZpb25cIixcbiAgXCJUcmV2b3JcIixcbiAgXCJUcmV5XCIsXG4gIFwiVHJpbml0eVwiLFxuICBcIlRyaXNoYVwiLFxuICBcIlRyaXN0aWFuXCIsXG4gIFwiVHJpc3RpblwiLFxuICBcIlRyaXN0b25cIixcbiAgXCJUcm95XCIsXG4gIFwiVHJ1ZGllXCIsXG4gIFwiVHJ5Y2lhXCIsXG4gIFwiVHJ5c3RhblwiLFxuICBcIlR1cm5lclwiLFxuICBcIlR3aWxhXCIsXG4gIFwiVHlsZXJcIixcbiAgXCJUeXJhXCIsXG4gIFwiVHlyZWVcIixcbiAgXCJUeXJlZWtcIixcbiAgXCJUeXJlbFwiLFxuICBcIlR5cmVsbFwiLFxuICBcIlR5cmVzZVwiLFxuICBcIlR5cmlxdWVcIixcbiAgXCJUeXNoYXduXCIsXG4gIFwiVHlzb25cIixcbiAgXCJVYmFsZG9cIixcbiAgXCJVbGljZXNcIixcbiAgXCJVbGlzZXNcIixcbiAgXCJVbmFcIixcbiAgXCJVbmlxdWVcIixcbiAgXCJVcmJhblwiLFxuICBcIlVyaWFoXCIsXG4gIFwiVXJpZWxcIixcbiAgXCJVcnN1bGFcIixcbiAgXCJWYWRhXCIsXG4gIFwiVmFsZW50aW5cIixcbiAgXCJWYWxlbnRpbmFcIixcbiAgXCJWYWxlbnRpbmVcIixcbiAgXCJWYWxlcmllXCIsXG4gIFwiVmFsbGllXCIsXG4gIFwiVmFuXCIsXG4gIFwiVmFuY2VcIixcbiAgXCJWYW5lc3NhXCIsXG4gIFwiVmF1Z2huXCIsXG4gIFwiVmVkYVwiLFxuICBcIlZlbGRhXCIsXG4gIFwiVmVsbGFcIixcbiAgXCJWZWxtYVwiLFxuICBcIlZlbHZhXCIsXG4gIFwiVmVuYVwiLFxuICBcIlZlcmRhXCIsXG4gIFwiVmVyZGllXCIsXG4gIFwiVmVyZ2llXCIsXG4gIFwiVmVybGFcIixcbiAgXCJWZXJsaWVcIixcbiAgXCJWZXJuXCIsXG4gIFwiVmVybmFcIixcbiAgXCJWZXJuZXJcIixcbiAgXCJWZXJuaWNlXCIsXG4gIFwiVmVybmllXCIsXG4gIFwiVmVybm9uXCIsXG4gIFwiVmVyb25hXCIsXG4gIFwiVmVyb25pY2FcIixcbiAgXCJWZXN0YVwiLFxuICBcIlZpY2VudGFcIixcbiAgXCJWaWNlbnRlXCIsXG4gIFwiVmlja2llXCIsXG4gIFwiVmlja3lcIixcbiAgXCJWaWN0b3JcIixcbiAgXCJWaWN0b3JpYVwiLFxuICBcIlZpZGFcIixcbiAgXCJWaWRhbFwiLFxuICBcIlZpbG1hXCIsXG4gIFwiVmluY2VcIixcbiAgXCJWaW5jZW50XCIsXG4gIFwiVmluY2VuemFcIixcbiAgXCJWaW5jZW56b1wiLFxuICBcIlZpbm5pZVwiLFxuICBcIlZpb2xhXCIsXG4gIFwiVmlvbGV0XCIsXG4gIFwiVmlvbGV0dGVcIixcbiAgXCJWaXJnaWVcIixcbiAgXCJWaXJnaWxcIixcbiAgXCJWaXJnaW5pYVwiLFxuICBcIlZpcmdpbmllXCIsXG4gIFwiVml0YVwiLFxuICBcIlZpdG9cIixcbiAgXCJWaXZhXCIsXG4gIFwiVml2aWFuXCIsXG4gIFwiVml2aWFuZVwiLFxuICBcIlZpdmlhbm5lXCIsXG4gIFwiVml2aWVuXCIsXG4gIFwiVml2aWVubmVcIixcbiAgXCJWbGFkaW1pclwiLFxuICBcIldhZGVcIixcbiAgXCJXYWlub1wiLFxuICBcIldhbGRvXCIsXG4gIFwiV2Fsa2VyXCIsXG4gIFwiV2FsbGFjZVwiLFxuICBcIldhbHRlclwiLFxuICBcIldhbHRvblwiLFxuICBcIldhbmRhXCIsXG4gIFwiV2FyZFwiLFxuICBcIldhcnJlblwiLFxuICBcIldhdHNvblwiLFxuICBcIldhdmFcIixcbiAgXCJXYXlsb25cIixcbiAgXCJXYXluZVwiLFxuICBcIldlYnN0ZXJcIixcbiAgXCJXZWxkb25cIixcbiAgXCJXZWxsaW5ndG9uXCIsXG4gIFwiV2VuZGVsbFwiLFxuICBcIldlbmR5XCIsXG4gIFwiV2VybmVyXCIsXG4gIFwiV2VzdGxleVwiLFxuICBcIldlc3RvblwiLFxuICBcIldoaXRuZXlcIixcbiAgXCJXaWxiZXJcIixcbiAgXCJXaWxiZXJ0XCIsXG4gIFwiV2lsYnVyblwiLFxuICBcIldpbGV5XCIsXG4gIFwiV2lsZm9yZFwiLFxuICBcIldpbGZyZWRcIixcbiAgXCJXaWxmcmVkb1wiLFxuICBcIldpbGZyaWRcIixcbiAgXCJXaWxoZWxtXCIsXG4gIFwiV2lsaGVsbWluZVwiLFxuICBcIldpbGxcIixcbiAgXCJXaWxsYVwiLFxuICBcIldpbGxhcmRcIixcbiAgXCJXaWxsaWFtXCIsXG4gIFwiV2lsbGllXCIsXG4gIFwiV2lsbGlzXCIsXG4gIFwiV2lsbG93XCIsXG4gIFwiV2lsbHlcIixcbiAgXCJXaWxtYVwiLFxuICBcIldpbG1lclwiLFxuICBcIldpbHNvblwiLFxuICBcIldpbHRvblwiLFxuICBcIldpbmZpZWxkXCIsXG4gIFwiV2luaWZyZWRcIixcbiAgXCJXaW5uaWZyZWRcIixcbiAgXCJXaW5vbmFcIixcbiAgXCJXaW5zdG9uXCIsXG4gIFwiV29vZHJvd1wiLFxuICBcIld5YXR0XCIsXG4gIFwiV3ltYW5cIixcbiAgXCJYYW5kZXJcIixcbiAgXCJYYXZpZXJcIixcbiAgXCJYemF2aWVyXCIsXG4gIFwiWWFkaXJhXCIsXG4gIFwiWWFzbWVlblwiLFxuICBcIllhc21pblwiLFxuICBcIllhc21pbmVcIixcbiAgXCJZYXptaW5cIixcbiAgXCJZZXNlbmlhXCIsXG4gIFwiWWVzc2VuaWFcIixcbiAgXCJZb2xhbmRhXCIsXG4gIFwiWW9zaGlrb1wiLFxuICBcIll2ZXR0ZVwiLFxuICBcIll2b25uZVwiLFxuICBcIlphY2hhcmlhaFwiLFxuICBcIlphY2hhcnlcIixcbiAgXCJaYWNoZXJ5XCIsXG4gIFwiWmFja1wiLFxuICBcIlphY2thcnlcIixcbiAgXCJaYWNrZXJ5XCIsXG4gIFwiWmFrYXJ5XCIsXG4gIFwiWmFuZGVyXCIsXG4gIFwiWmFuZVwiLFxuICBcIlphcmlhXCIsXG4gIFwiWmVjaGFyaWFoXCIsXG4gIFwiWmVsZGFcIixcbiAgXCJaZWxsYVwiLFxuICBcIlplbG1hXCIsXG4gIFwiWmVuYVwiLFxuICBcIlpldHRhXCIsXG4gIFwiWmlvblwiLFxuICBcIlppdGFcIixcbiAgXCJab2VcIixcbiAgXCJab2V5XCIsXG4gIFwiWm9pZVwiLFxuICBcIlpvaWxhXCIsXG4gIFwiWm9sYVwiLFxuICBcIlpvcmFcIixcbiAgXCJadWxhXCJcbl07XG4iLCJ2YXIgbmFtZSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBuYW1lO1xubmFtZS5maXJzdF9uYW1lID0gcmVxdWlyZShcIi4vZmlyc3RfbmFtZVwiKTtcbm5hbWUubGFzdF9uYW1lID0gcmVxdWlyZShcIi4vbGFzdF9uYW1lXCIpO1xubmFtZS5wcmVmaXggPSByZXF1aXJlKFwiLi9wcmVmaXhcIik7XG5uYW1lLnN1ZmZpeCA9IHJlcXVpcmUoXCIuL3N1ZmZpeFwiKTtcbm5hbWUudGl0bGUgPSByZXF1aXJlKFwiLi90aXRsZVwiKTtcbm5hbWUubmFtZSA9IHJlcXVpcmUoXCIuL25hbWVcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFiYm90dFwiLFxuICBcIkFiZXJuYXRoeVwiLFxuICBcIkFic2hpcmVcIixcbiAgXCJBZGFtc1wiLFxuICBcIkFsdGVud2VydGhcIixcbiAgXCJBbmRlcnNvblwiLFxuICBcIkFua3VuZGluZ1wiLFxuICBcIkFybXN0cm9uZ1wiLFxuICBcIkF1ZXJcIixcbiAgXCJBdWZkZXJoYXJcIixcbiAgXCJCYWhyaW5nZXJcIixcbiAgXCJCYWlsZXlcIixcbiAgXCJCYWxpc3RyZXJpXCIsXG4gIFwiQmFycm93c1wiLFxuICBcIkJhcnRlbGxcIixcbiAgXCJCYXJ0b2xldHRpXCIsXG4gIFwiQmFydG9uXCIsXG4gIFwiQmFzaGlyaWFuXCIsXG4gIFwiQmF0elwiLFxuICBcIkJhdWNoXCIsXG4gIFwiQmF1bWJhY2hcIixcbiAgXCJCYXllclwiLFxuICBcIkJlYWhhblwiLFxuICBcIkJlYXR0eVwiLFxuICBcIkJlY2h0ZWxhclwiLFxuICBcIkJlY2tlclwiLFxuICBcIkJlZG5hclwiLFxuICBcIkJlZXJcIixcbiAgXCJCZWllclwiLFxuICBcIkJlcmdlXCIsXG4gIFwiQmVyZ25hdW1cIixcbiAgXCJCZXJnc3Ryb21cIixcbiAgXCJCZXJuaGFyZFwiLFxuICBcIkJlcm5pZXJcIixcbiAgXCJCaW5zXCIsXG4gIFwiQmxhbmRhXCIsXG4gIFwiQmxpY2tcIixcbiAgXCJCbG9ja1wiLFxuICBcIkJvZGVcIixcbiAgXCJCb2VobVwiLFxuICBcIkJvZ2FuXCIsXG4gIFwiQm9naXNpY2hcIixcbiAgXCJCb3JlclwiLFxuICBcIkJvc2NvXCIsXG4gIFwiQm90c2ZvcmRcIixcbiAgXCJCb3llclwiLFxuICBcIkJveWxlXCIsXG4gIFwiQnJhZHRrZVwiLFxuICBcIkJyYWt1c1wiLFxuICBcIkJyYXVuXCIsXG4gIFwiQnJlaXRlbmJlcmdcIixcbiAgXCJCcmVra2VcIixcbiAgXCJCcm93blwiLFxuICBcIkJydWVuXCIsXG4gIFwiQnVja3JpZGdlXCIsXG4gIFwiQ2Fycm9sbFwiLFxuICBcIkNhcnRlclwiLFxuICBcIkNhcnR3cmlnaHRcIixcbiAgXCJDYXNwZXJcIixcbiAgXCJDYXNzaW5cIixcbiAgXCJDaGFtcGxpblwiLFxuICBcIkNocmlzdGlhbnNlblwiLFxuICBcIkNvbGVcIixcbiAgXCJDb2xsaWVyXCIsXG4gIFwiQ29sbGluc1wiLFxuICBcIkNvbm5cIixcbiAgXCJDb25uZWxseVwiLFxuICBcIkNvbnJveVwiLFxuICBcIkNvbnNpZGluZVwiLFxuICBcIkNvcmtlcnlcIixcbiAgXCJDb3JtaWVyXCIsXG4gIFwiQ29yd2luXCIsXG4gIFwiQ3JlbWluXCIsXG4gIFwiQ3Jpc3RcIixcbiAgXCJDcm9uYVwiLFxuICBcIkNyb25pblwiLFxuICBcIkNyb29rc1wiLFxuICBcIkNydWlja3NoYW5rXCIsXG4gIFwiQ3VtbWVyYXRhXCIsXG4gIFwiQ3VtbWluZ3NcIixcbiAgXCJEYWNoXCIsXG4gIFwiRCdBbW9yZVwiLFxuICBcIkRhbmllbFwiLFxuICBcIkRhcmVcIixcbiAgXCJEYXVnaGVydHlcIixcbiAgXCJEYXZpc1wiLFxuICBcIkRlY2tvd1wiLFxuICBcIkRlbmVzaWtcIixcbiAgXCJEaWJiZXJ0XCIsXG4gIFwiRGlja2Vuc1wiLFxuICBcIkRpY2tpXCIsXG4gIFwiRGlja2luc29uXCIsXG4gIFwiRGlldHJpY2hcIixcbiAgXCJEb25uZWxseVwiLFxuICBcIkRvb2xleVwiLFxuICBcIkRvdWdsYXNcIixcbiAgXCJEb3lsZVwiLFxuICBcIkR1QnVxdWVcIixcbiAgXCJEdXJnYW5cIixcbiAgXCJFYmVydFwiLFxuICBcIkVmZmVydHpcIixcbiAgXCJFaWNobWFublwiLFxuICBcIkVtYXJkXCIsXG4gIFwiRW1tZXJpY2hcIixcbiAgXCJFcmRtYW5cIixcbiAgXCJFcm5zZXJcIixcbiAgXCJGYWRlbFwiLFxuICBcIkZhaGV5XCIsXG4gIFwiRmFycmVsbFwiLFxuICBcIkZheVwiLFxuICBcIkZlZW5leVwiLFxuICBcIkZlZXN0XCIsXG4gIFwiRmVpbFwiLFxuICBcIkZlcnJ5XCIsXG4gIFwiRmlzaGVyXCIsXG4gIFwiRmxhdGxleVwiLFxuICBcIkZyYW1pXCIsXG4gIFwiRnJhbmVja2lcIixcbiAgXCJGcmllc2VuXCIsXG4gIFwiRnJpdHNjaFwiLFxuICBcIkZ1bmtcIixcbiAgXCJHYXlsb3JkXCIsXG4gIFwiR2VyaG9sZFwiLFxuICBcIkdlcmxhY2hcIixcbiAgXCJHaWJzb25cIixcbiAgXCJHaXNsYXNvblwiLFxuICBcIkdsZWFzb25cIixcbiAgXCJHbGVpY2huZXJcIixcbiAgXCJHbG92ZXJcIixcbiAgXCJHb2xkbmVyXCIsXG4gIFwiR29vZHdpblwiLFxuICBcIkdvcmN6YW55XCIsXG4gIFwiR290dGxpZWJcIixcbiAgXCJHb3lldHRlXCIsXG4gIFwiR3JhZHlcIixcbiAgXCJHcmFoYW1cIixcbiAgXCJHcmFudFwiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZW5mZWxkZXJcIixcbiAgXCJHcmVlbmhvbHRcIixcbiAgXCJHcmltZXNcIixcbiAgXCJHdWxnb3dza2lcIixcbiAgXCJHdXNpa293c2tpXCIsXG4gIFwiR3V0a293c2tpXCIsXG4gIFwiR3V0bWFublwiLFxuICBcIkhhYWdcIixcbiAgXCJIYWNrZXR0XCIsXG4gIFwiSGFnZW5lc1wiLFxuICBcIkhhaG5cIixcbiAgXCJIYWxleVwiLFxuICBcIkhhbHZvcnNvblwiLFxuICBcIkhhbWlsbFwiLFxuICBcIkhhbW1lc1wiLFxuICBcIkhhbmRcIixcbiAgXCJIYW5lXCIsXG4gIFwiSGFuc2VuXCIsXG4gIFwiSGFyYmVyXCIsXG4gIFwiSGFycmlzXCIsXG4gIFwiSGFydG1hbm5cIixcbiAgXCJIYXJ2ZXlcIixcbiAgXCJIYXVja1wiLFxuICBcIkhheWVzXCIsXG4gIFwiSGVhbmV5XCIsXG4gIFwiSGVhdGhjb3RlXCIsXG4gIFwiSGVnbWFublwiLFxuICBcIkhlaWRlbnJlaWNoXCIsXG4gIFwiSGVsbGVyXCIsXG4gIFwiSGVybWFuXCIsXG4gIFwiSGVybWFublwiLFxuICBcIkhlcm1pc3RvblwiLFxuICBcIkhlcnpvZ1wiLFxuICBcIkhlc3NlbFwiLFxuICBcIkhldHRpbmdlclwiLFxuICBcIkhpY2tsZVwiLFxuICBcIkhpbGxsXCIsXG4gIFwiSGlsbHNcIixcbiAgXCJIaWxwZXJ0XCIsXG4gIFwiSGludHpcIixcbiAgXCJIaXJ0aGVcIixcbiAgXCJIb2RraWV3aWN6XCIsXG4gIFwiSG9lZ2VyXCIsXG4gIFwiSG9tZW5pY2tcIixcbiAgXCJIb3BwZVwiLFxuICBcIkhvd2VcIixcbiAgXCJIb3dlbGxcIixcbiAgXCJIdWRzb25cIixcbiAgXCJIdWVsXCIsXG4gIFwiSHVlbHNcIixcbiAgXCJIeWF0dFwiLFxuICBcIkphY29iaVwiLFxuICBcIkphY29ic1wiLFxuICBcIkphY29ic29uXCIsXG4gIFwiSmFrdWJvd3NraVwiLFxuICBcIkphc2tvbHNraVwiLFxuICBcIkphc3RcIixcbiAgXCJKZW5raW5zXCIsXG4gIFwiSmVyZGVcIixcbiAgXCJKb2huc1wiLFxuICBcIkpvaG5zb25cIixcbiAgXCJKb2huc3RvblwiLFxuICBcIkpvbmVzXCIsXG4gIFwiS2Fzc3Vsa2VcIixcbiAgXCJLYXV0emVyXCIsXG4gIFwiS2VlYmxlclwiLFxuICBcIktlZWxpbmdcIixcbiAgXCJLZW1tZXJcIixcbiAgXCJLZXJsdWtlXCIsXG4gIFwiS2VydHptYW5uXCIsXG4gIFwiS2Vzc2xlclwiLFxuICBcIktpZWhuXCIsXG4gIFwiS2loblwiLFxuICBcIktpbGJhY2tcIixcbiAgXCJLaW5nXCIsXG4gIFwiS2lybGluXCIsXG4gIFwiS2xlaW5cIixcbiAgXCJLbGluZ1wiLFxuICBcIktsb2Nrb1wiLFxuICBcIktvY2hcIixcbiAgXCJLb2VscGluXCIsXG4gIFwiS29lcHBcIixcbiAgXCJLb2hsZXJcIixcbiAgXCJLb25vcGVsc2tpXCIsXG4gIFwiS29zc1wiLFxuICBcIktvdmFjZWtcIixcbiAgXCJLb3pleVwiLFxuICBcIktyYWpjaWtcIixcbiAgXCJLcmVpZ2VyXCIsXG4gIFwiS3Jpc1wiLFxuICBcIktzaGxlcmluXCIsXG4gIFwiS3ViXCIsXG4gIFwiS3VoaWNcIixcbiAgXCJLdWhsbWFuXCIsXG4gIFwiS3VoblwiLFxuICBcIkt1bGFzXCIsXG4gIFwiS3VuZGVcIixcbiAgXCJLdW56ZVwiLFxuICBcIkt1cGhhbFwiLFxuICBcIkt1dGNoXCIsXG4gIFwiS3V2YWxpc1wiLFxuICBcIkxhYmFkaWVcIixcbiAgXCJMYWtpblwiLFxuICBcIkxhbmdcIixcbiAgXCJMYW5nb3NoXCIsXG4gIFwiTGFuZ3dvcnRoXCIsXG4gIFwiTGFya2luXCIsXG4gIFwiTGFyc29uXCIsXG4gIFwiTGVhbm5vblwiLFxuICBcIkxlYnNhY2tcIixcbiAgXCJMZWRuZXJcIixcbiAgXCJMZWZmbGVyXCIsXG4gIFwiTGVncm9zXCIsXG4gIFwiTGVobmVyXCIsXG4gIFwiTGVta2VcIixcbiAgXCJMZXNjaFwiLFxuICBcIkxldXNjaGtlXCIsXG4gIFwiTGluZFwiLFxuICBcIkxpbmRncmVuXCIsXG4gIFwiTGl0dGVsXCIsXG4gIFwiTGl0dGxlXCIsXG4gIFwiTG9ja21hblwiLFxuICBcIkxvd2VcIixcbiAgXCJMdWJvd2l0elwiLFxuICBcIkx1ZWlsd2l0elwiLFxuICBcIkx1ZXR0Z2VuXCIsXG4gIFwiTHluY2hcIixcbiAgXCJNYWNlamtvdmljXCIsXG4gIFwiTWFjR3l2ZXJcIixcbiAgXCJNYWdnaW9cIixcbiAgXCJNYW5uXCIsXG4gIFwiTWFudGVcIixcbiAgXCJNYXJrc1wiLFxuICBcIk1hcnF1YXJkdFwiLFxuICBcIk1hcnZpblwiLFxuICBcIk1heWVyXCIsXG4gIFwiTWF5ZXJ0XCIsXG4gIFwiTWNDbHVyZVwiLFxuICBcIk1jQ3VsbG91Z2hcIixcbiAgXCJNY0Rlcm1vdHRcIixcbiAgXCJNY0dseW5uXCIsXG4gIFwiTWNLZW56aWVcIixcbiAgXCJNY0xhdWdobGluXCIsXG4gIFwiTWVkaHVyc3RcIixcbiAgXCJNZXJ0elwiLFxuICBcIk1ldHpcIixcbiAgXCJNaWxsZXJcIixcbiAgXCJNaWxsc1wiLFxuICBcIk1pdGNoZWxsXCIsXG4gIFwiTW9lblwiLFxuICBcIk1vaHJcIixcbiAgXCJNb25haGFuXCIsXG4gIFwiTW9vcmVcIixcbiAgXCJNb3JhclwiLFxuICBcIk1vcmlzc2V0dGVcIixcbiAgXCJNb3NjaXNraVwiLFxuICBcIk1yYXpcIixcbiAgXCJNdWVsbGVyXCIsXG4gIFwiTXVsbGVyXCIsXG4gIFwiTXVyYXppa1wiLFxuICBcIk11cnBoeVwiLFxuICBcIk11cnJheVwiLFxuICBcIk5hZGVyXCIsXG4gIFwiTmljb2xhc1wiLFxuICBcIk5pZW5vd1wiLFxuICBcIk5pa29sYXVzXCIsXG4gIFwiTml0enNjaGVcIixcbiAgXCJOb2xhblwiLFxuICBcIk9iZXJicnVubmVyXCIsXG4gIFwiTydDb25uZWxsXCIsXG4gIFwiTydDb25uZXJcIixcbiAgXCJPJ0hhcmFcIixcbiAgXCJPJ0tlZWZlXCIsXG4gIFwiTydLb25cIixcbiAgXCJPa3VuZXZhXCIsXG4gIFwiT2xzb25cIixcbiAgXCJPbmRyaWNrYVwiLFxuICBcIk8nUmVpbGx5XCIsXG4gIFwiT3JuXCIsXG4gIFwiT3J0aXpcIixcbiAgXCJPc2luc2tpXCIsXG4gIFwiUGFjb2NoYVwiLFxuICBcIlBhZGJlcmdcIixcbiAgXCJQYWdhY1wiLFxuICBcIlBhcmlzaWFuXCIsXG4gIFwiUGFya2VyXCIsXG4gIFwiUGF1Y2VrXCIsXG4gIFwiUGZhbm5lcnN0aWxsXCIsXG4gIFwiUGZlZmZlclwiLFxuICBcIlBvbGxpY2hcIixcbiAgXCJQb3Vyb3NcIixcbiAgXCJQb3dsb3dza2lcIixcbiAgXCJQcmVkb3ZpY1wiLFxuICBcIlByaWNlXCIsXG4gIFwiUHJvaGFza2FcIixcbiAgXCJQcm9zYWNjb1wiLFxuICBcIlB1cmR5XCIsXG4gIFwiUXVpZ2xleVwiLFxuICBcIlF1aXR6b25cIixcbiAgXCJSYXRoXCIsXG4gIFwiUmF0a2VcIixcbiAgXCJSYXVcIixcbiAgXCJSYXlub3JcIixcbiAgXCJSZWljaGVsXCIsXG4gIFwiUmVpY2hlcnRcIixcbiAgXCJSZWlsbHlcIixcbiAgXCJSZWluZ2VyXCIsXG4gIFwiUmVtcGVsXCIsXG4gIFwiUmVubmVyXCIsXG4gIFwiUmV5bm9sZHNcIixcbiAgXCJSaWNlXCIsXG4gIFwiUmlwcGluXCIsXG4gIFwiUml0Y2hpZVwiLFxuICBcIlJvYmVsXCIsXG4gIFwiUm9iZXJ0c1wiLFxuICBcIlJvZHJpZ3VlelwiLFxuICBcIlJvZ2FoblwiLFxuICBcIlJvaGFuXCIsXG4gIFwiUm9sZnNvblwiLFxuICBcIlJvbWFndWVyYVwiLFxuICBcIlJvb2JcIixcbiAgXCJSb3NlbmJhdW1cIixcbiAgXCJSb3dlXCIsXG4gIFwiUnVlY2tlclwiLFxuICBcIlJ1bm9sZnNkb3R0aXJcIixcbiAgXCJSdW5vbGZzc29uXCIsXG4gIFwiUnVudGVcIixcbiAgXCJSdXNzZWxcIixcbiAgXCJSdXRoZXJmb3JkXCIsXG4gIFwiUnlhblwiLFxuICBcIlNhbmZvcmRcIixcbiAgXCJTYXR0ZXJmaWVsZFwiLFxuICBcIlNhdWVyXCIsXG4gIFwiU2F3YXluXCIsXG4gIFwiU2NoYWRlblwiLFxuICBcIlNjaGFlZmVyXCIsXG4gIFwiU2NoYW1iZXJnZXJcIixcbiAgXCJTY2hpbGxlclwiLFxuICBcIlNjaGltbWVsXCIsXG4gIFwiU2NoaW5uZXJcIixcbiAgXCJTY2htZWxlclwiLFxuICBcIlNjaG1pZHRcIixcbiAgXCJTY2htaXR0XCIsXG4gIFwiU2NobmVpZGVyXCIsXG4gIFwiU2Nob2VuXCIsXG4gIFwiU2Nob3dhbHRlclwiLFxuICBcIlNjaHJvZWRlclwiLFxuICBcIlNjaHVsaXN0XCIsXG4gIFwiU2NodWx0elwiLFxuICBcIlNjaHVtbVwiLFxuICBcIlNjaHVwcGVcIixcbiAgXCJTY2h1c3RlclwiLFxuICBcIlNlbmdlclwiLFxuICBcIlNoYW5haGFuXCIsXG4gIFwiU2hpZWxkc1wiLFxuICBcIlNpbW9uaXNcIixcbiAgXCJTaXBlc1wiLFxuICBcIlNraWxlc1wiLFxuICBcIlNtaXRoXCIsXG4gIFwiU21pdGhhbVwiLFxuICBcIlNwZW5jZXJcIixcbiAgXCJTcGlua2FcIixcbiAgXCJTcG9yZXJcIixcbiAgXCJTdGFtbVwiLFxuICBcIlN0YW50b25cIixcbiAgXCJTdGFya1wiLFxuICBcIlN0ZWhyXCIsXG4gIFwiU3RldWJlclwiLFxuICBcIlN0aWVkZW1hbm5cIixcbiAgXCJTdG9rZXNcIixcbiAgXCJTdG9sdGVuYmVyZ1wiLFxuICBcIlN0cmFja2VcIixcbiAgXCJTdHJlaWNoXCIsXG4gIFwiU3Ryb21hblwiLFxuICBcIlN0cm9zaW5cIixcbiAgXCJTd2FuaWF3c2tpXCIsXG4gIFwiU3dpZnRcIixcbiAgXCJUZXJyeVwiLFxuICBcIlRoaWVsXCIsXG4gIFwiVGhvbXBzb25cIixcbiAgXCJUaWxsbWFuXCIsXG4gIFwiVG9ycFwiLFxuICBcIlRvcnBoeVwiLFxuICBcIlRvd25lXCIsXG4gIFwiVG95XCIsXG4gIFwiVHJhbnRvd1wiLFxuICBcIlRyZW1ibGF5XCIsXG4gIFwiVHJldXRlbFwiLFxuICBcIlRyb21wXCIsXG4gIFwiVHVyY290dGVcIixcbiAgXCJUdXJuZXJcIixcbiAgXCJVbGxyaWNoXCIsXG4gIFwiVXB0b25cIixcbiAgXCJWYW5kZXJ2b3J0XCIsXG4gIFwiVmV1bVwiLFxuICBcIlZvbGttYW5cIixcbiAgXCJWb25cIixcbiAgXCJWb25SdWVkZW5cIixcbiAgXCJXYWVsY2hpXCIsXG4gIFwiV2Fsa2VyXCIsXG4gIFwiV2Fsc2hcIixcbiAgXCJXYWx0ZXJcIixcbiAgXCJXYXJkXCIsXG4gIFwiV2F0ZXJzXCIsXG4gIFwiV2F0c2ljYVwiLFxuICBcIldlYmVyXCIsXG4gIFwiV2VobmVyXCIsXG4gIFwiV2VpbWFublwiLFxuICBcIldlaXNzbmF0XCIsXG4gIFwiV2VsY2hcIixcbiAgXCJXZXN0XCIsXG4gIFwiV2hpdGVcIixcbiAgXCJXaWVnYW5kXCIsXG4gIFwiV2lsZGVybWFuXCIsXG4gIFwiV2lsa2luc29uXCIsXG4gIFwiV2lsbFwiLFxuICBcIldpbGxpYW1zb25cIixcbiAgXCJXaWxsbXNcIixcbiAgXCJXaW5kbGVyXCIsXG4gIFwiV2ludGhlaXNlclwiLFxuICBcIldpc29reVwiLFxuICBcIldpc296a1wiLFxuICBcIldpdHRpbmdcIixcbiAgXCJXaXphXCIsXG4gIFwiV29sZlwiLFxuICBcIldvbGZmXCIsXG4gIFwiV3Vja2VydFwiLFxuICBcIld1bnNjaFwiLFxuICBcIld5bWFuXCIsXG4gIFwiWW9zdFwiLFxuICBcIll1bmR0XCIsXG4gIFwiWmJvbmNha1wiLFxuICBcIlplbWxha1wiLFxuICBcIlppZW1hbm5cIixcbiAgXCJaaWVtZVwiLFxuICBcIlp1bGF1ZlwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje3ByZWZpeH0gI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfSAje3N1ZmZpeH1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJNci5cIixcbiAgXCJNcnMuXCIsXG4gIFwiTXMuXCIsXG4gIFwiTWlzc1wiLFxuICBcIkRyLlwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJKci5cIixcbiAgXCJTci5cIixcbiAgXCJJXCIsXG4gIFwiSUlcIixcbiAgXCJJSUlcIixcbiAgXCJJVlwiLFxuICBcIlZcIixcbiAgXCJNRFwiLFxuICBcIkREU1wiLFxuICBcIlBoRFwiLFxuICBcIkRWTVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgXCJkZXNjcmlwdG9yXCI6IFtcbiAgICBcIkxlYWRcIixcbiAgICBcIlNlbmlvclwiLFxuICAgIFwiRGlyZWN0XCIsXG4gICAgXCJDb3Jwb3JhdGVcIixcbiAgICBcIkR5bmFtaWNcIixcbiAgICBcIkZ1dHVyZVwiLFxuICAgIFwiUHJvZHVjdFwiLFxuICAgIFwiTmF0aW9uYWxcIixcbiAgICBcIlJlZ2lvbmFsXCIsXG4gICAgXCJEaXN0cmljdFwiLFxuICAgIFwiQ2VudHJhbFwiLFxuICAgIFwiR2xvYmFsXCIsXG4gICAgXCJDdXN0b21lclwiLFxuICAgIFwiSW52ZXN0b3JcIixcbiAgICBcIkR5bmFtaWNcIixcbiAgICBcIkludGVybmF0aW9uYWxcIixcbiAgICBcIkxlZ2FjeVwiLFxuICAgIFwiRm9yd2FyZFwiLFxuICAgIFwiSW50ZXJuYWxcIixcbiAgICBcIkh1bWFuXCIsXG4gICAgXCJDaGllZlwiLFxuICAgIFwiUHJpbmNpcGFsXCJcbiAgXSxcbiAgXCJsZXZlbFwiOiBbXG4gICAgXCJTb2x1dGlvbnNcIixcbiAgICBcIlByb2dyYW1cIixcbiAgICBcIkJyYW5kXCIsXG4gICAgXCJTZWN1cml0eVwiLFxuICAgIFwiUmVzZWFyY2hcIixcbiAgICBcIk1hcmtldGluZ1wiLFxuICAgIFwiRGlyZWN0aXZlc1wiLFxuICAgIFwiSW1wbGVtZW50YXRpb25cIixcbiAgICBcIkludGVncmF0aW9uXCIsXG4gICAgXCJGdW5jdGlvbmFsaXR5XCIsXG4gICAgXCJSZXNwb25zZVwiLFxuICAgIFwiUGFyYWRpZ21cIixcbiAgICBcIlRhY3RpY3NcIixcbiAgICBcIklkZW50aXR5XCIsXG4gICAgXCJNYXJrZXRzXCIsXG4gICAgXCJHcm91cFwiLFxuICAgIFwiRGl2aXNpb25cIixcbiAgICBcIkFwcGxpY2F0aW9uc1wiLFxuICAgIFwiT3B0aW1pemF0aW9uXCIsXG4gICAgXCJPcGVyYXRpb25zXCIsXG4gICAgXCJJbmZyYXN0cnVjdHVyZVwiLFxuICAgIFwiSW50cmFuZXRcIixcbiAgICBcIkNvbW11bmljYXRpb25zXCIsXG4gICAgXCJXZWJcIixcbiAgICBcIkJyYW5kaW5nXCIsXG4gICAgXCJRdWFsaXR5XCIsXG4gICAgXCJBc3N1cmFuY2VcIixcbiAgICBcIk1vYmlsaXR5XCIsXG4gICAgXCJBY2NvdW50c1wiLFxuICAgIFwiRGF0YVwiLFxuICAgIFwiQ3JlYXRpdmVcIixcbiAgICBcIkNvbmZpZ3VyYXRpb25cIixcbiAgICBcIkFjY291bnRhYmlsaXR5XCIsXG4gICAgXCJJbnRlcmFjdGlvbnNcIixcbiAgICBcIkZhY3RvcnNcIixcbiAgICBcIlVzYWJpbGl0eVwiLFxuICAgIFwiTWV0cmljc1wiXG4gIF0sXG4gIFwiam9iXCI6IFtcbiAgICBcIlN1cGVydmlzb3JcIixcbiAgICBcIkFzc29jaWF0ZVwiLFxuICAgIFwiRXhlY3V0aXZlXCIsXG4gICAgXCJMaWFpc29uXCIsXG4gICAgXCJPZmZpY2VyXCIsXG4gICAgXCJNYW5hZ2VyXCIsXG4gICAgXCJFbmdpbmVlclwiLFxuICAgIFwiU3BlY2lhbGlzdFwiLFxuICAgIFwiRGlyZWN0b3JcIixcbiAgICBcIkNvb3JkaW5hdG9yXCIsXG4gICAgXCJBZG1pbmlzdHJhdG9yXCIsXG4gICAgXCJBcmNoaXRlY3RcIixcbiAgICBcIkFuYWx5c3RcIixcbiAgICBcIkRlc2lnbmVyXCIsXG4gICAgXCJQbGFubmVyXCIsXG4gICAgXCJPcmNoZXN0cmF0b3JcIixcbiAgICBcIlRlY2huaWNpYW5cIixcbiAgICBcIkRldmVsb3BlclwiLFxuICAgIFwiUHJvZHVjZXJcIixcbiAgICBcIkNvbnN1bHRhbnRcIixcbiAgICBcIkFzc2lzdGFudFwiLFxuICAgIFwiRmFjaWxpdGF0b3JcIixcbiAgICBcIkFnZW50XCIsXG4gICAgXCJSZXByZXNlbnRhdGl2ZVwiLFxuICAgIFwiU3RyYXRlZ2lzdFwiXG4gIF1cbn07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIy0jIyMtIyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyNcIixcbiAgXCIjIyMtIyMjLSMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjXCIsXG4gIFwiIyMjLSMjIy0jIyMjIHgjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjIyB4IyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyMgeCMjI1wiLFxuICBcIiMjIy4jIyMuIyMjIyB4IyMjXCIsXG4gIFwiIyMjLSMjIy0jIyMjIHgjIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyMgeCMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjIyB4IyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjIyB4IyMjI1wiLFxuICBcIiMjIy0jIyMtIyMjIyB4IyMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjIyB4IyMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjIyB4IyMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyMgeCMjIyMjXCJcbl07XG4iLCJ2YXIgcGhvbmVfbnVtYmVyID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHBob25lX251bWJlcjtcbnBob25lX251bWJlci5mb3JtYXRzID0gcmVxdWlyZShcIi4vZm9ybWF0c1wiKTtcbiIsInZhciBzeXN0ZW0gPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gc3lzdGVtO1xuc3lzdGVtLm1pbWVUeXBlcyA9IHJlcXVpcmUoXCIuL21pbWVUeXBlc1wiKTsiLCIvKlxuXG5UaGUgTUlUIExpY2Vuc2UgKE1JVClcblxuQ29weXJpZ2h0IChjKSAyMDE0IEpvbmF0aGFuIE9uZyBtZUBqb25nbGViZXJyeS5jb21cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuVEhFIFNPRlRXQVJFLlxuXG5EZWZpbml0aW9ucyBmcm9tIG1pbWUtZGIgdjEuMjEuMFxuRm9yIHVwZGF0ZXMgY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvbWltZS1kYi9ibG9iL21hc3Rlci9kYi5qc29uXG5cbiovXG5cbm1vZHVsZVsnZXhwb3J0cyddID0ge1xuICBcImFwcGxpY2F0aW9uLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BkYXNoLXFvZS1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uLzNncHAtaW1zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hMmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWN0aXZlbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tY29zdG1hcGZpbHRlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1kaXJlY3RvcnkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdHBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludHByb3AranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRwcm9wcGFyYW1zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVycm9yK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tbmV0d29ya21hcGZpbHRlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYW1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBwbGVmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FwcGxpeHdhcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0ZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tY2F0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21jYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tZGVsZXRlZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWljbWFpbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tc3ZjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21zdmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdHhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdXRoLXBvbGljeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmFjbmV0LXhkZCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmF0Y2gtc210cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZG9jXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JlZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbGVuZGFyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxlbmRhcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsbC1jb21wbGV0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbHMtMTg0MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NjbXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NjeG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RmeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWljXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1kb21haW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktb2JqZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaXFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG5pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWEtMjAxOCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2VsbG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZndcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NucnAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvYXAtZ3JvdXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvbW1vbmdyb3VuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb25mZXJlbmNlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NwbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3NyYXR0cnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N0YWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nzdm0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2N1LXNlZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjdVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2N5YmVyY2FzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXJ0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFzaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXNoZGVsdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGF2bW91bnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGF2bW91bnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kY2EtcmZ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RjZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kZWMtZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGlhbG9nLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpY29tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZG5zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RvY2Jvb2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kc2twcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNzYytkZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkc3NjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHNzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2R2Y3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNtYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaS1jb25zZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaS14MTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWRpZmFjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5jb21tZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5kZXZpY2VpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5wcm92aWRlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnNlcnZpY2VpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zdWJzY3JpYmVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1tYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlbW1hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VwdWIremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXB1YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VzaG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2V4aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Zhc3Rzb2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZkdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZml0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXNmbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC10ZHBmclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBmclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtd29mZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndvZmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmYyXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid29mZjJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mcmFtZXdvcmstYXR0cmlidXRlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3B4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3B4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3hmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJneGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2gyMjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaGVsZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaHR0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9oeXBlcnN0dWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0a1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1rZXktcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLXBrZy1yZXBseSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLXBwLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbS1pc2NvbXBvc2luZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXguY21kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4Lm9ialwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC52bmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5rbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW5rXCIsXCJpbmttbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lvdHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXBmaXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpcGZpeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pc3VwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2l0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYXJcIixcIndhclwiLFwiZWFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YS1zZXJpYWxpemVkLW9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YS12bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xhc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vam9zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qb3NlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qcmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvblwiLFwibWFwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbi1wYXRjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbi1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbjVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29uNVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb25tbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3aytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vandrLXNldCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vand0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2twbWwtcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24va3BtbC1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbmxkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGluay1mb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9hZC1jb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9sb3N0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxvc3R4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9sb3N0c3luYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbHhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhxeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWN3cml0ZWlpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFkc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb25cIjoge1xuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2VibWFuaWZlc3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXJjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFyY3htbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcmN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aGVtYXRpY2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYVwiLFwibmJcIixcIm1iXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hdGhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhtbC1jb250ZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtcHJlc2VudGF0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLWFzc29jaWF0ZWQtcHJvY2VkdXJlLWRlc2NyaXB0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLWRlcmVnaXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtZW52ZWxvcGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtbXNrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLW1zay1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1wcm90ZWN0aW9uLWRlc2NyaXB0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlY2VwdGlvbi1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcmVnaXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcmVnaXN0ZXItcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtc2NoZWR1bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtdXNlci1zZXJ2aWNlLWRlc2NyaXB0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWJveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lZGlhLXBvbGljeS1kYXRhc2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZWRpYV9jb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNjbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXJnZS1wYXRjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWV0YWxpbmsreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZXRhbGlua1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ldGFsaW5rNCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZXRhNFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ldHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21mNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9taWtleVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb2RzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1vZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3NzLWtleXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zcy1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zc2tleS1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3NrZXktcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcDIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTIxXCIsXCJtcDIxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXA0c1wiLFwibTRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtZ2VuZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1pb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtaW9kLXhtdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcmItY29uc3VtZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21yYi1wdWJsaXNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tc2MtaXZyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tc2MtbWl4ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY1wiLFwiZG90XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmFzZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLWNoZWNrZ3JvdXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtZ3JvdXBpbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtdHJhbnNtaXNzaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25sc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2NzcC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jc3AtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmluXCIsXCJkbXNcIixcImxyZlwiLFwibWFyXCIsXCJzb1wiLFwiZGlzdFwiLFwiZGlzdHpcIixcInBrZ1wiLFwiYnBrXCIsXCJkdW1wXCIsXCJlbGNcIixcImRlcGxveVwiLFwiZXhlXCIsXCJkbGxcIixcImRlYlwiLFwiZG1nXCIsXCJpc29cIixcImltZ1wiLFwibXNpXCIsXCJtc3BcIixcIm1zbVwiLFwiYnVmZmVyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2RhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29lYnBzLXBhY2thZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2dnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2d4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb21kb2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvbWRvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29uZW5vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9uZXRvY1wiLFwib25ldG9jMlwiLFwib25ldG1wXCIsXCJvbmVwa2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9veHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3hwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3AycC1vdmVybGF5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGF0Y2gtb3BzLWVycm9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGdwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLWtleXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzY1wiLFwic2lnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGljcy1ydWxlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGlkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGlkZi1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwMTBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczctbWltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3bVwiLFwicDdjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwOFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtYXR0ci1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWNybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNybFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtcGtpcGF0aFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBraXBhdGhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4Y21wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGtpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGxzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BvYy1zZXR0aW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWlcIixcImVwc1wiLFwicHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcm92ZW5hbmNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuYWx2ZXN0cmFuZC50aXRyYXgtc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmN3d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN3d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5ocHViK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMubnByZW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5wbHVja2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5yZGYteG1sLWNyeXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy54c2YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bza2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNrY3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3FzaWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JkYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVsYXgtbmctY29tcGFjdC1zeW50YXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZW1vdGUtcHJpbnRpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVwdXRvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JmYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmlzY29zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JsbWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jscy1zZXJ2aWNlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2JyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS1tYW5pZmVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1mdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktcm9hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm9hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS11cGRvd25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnNzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYW1sYXNzZXJ0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYW1sbWV0YWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NibWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2JtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjYWlwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY2ltK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY3FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NkcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VwLWV4aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXNzaW9uLWluZm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXBheW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXBheW1lbnQtaW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNldHBheVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvbi1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2V0cmVnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2dtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZ21sLW9wZW4tY2F0YWxvZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2lldmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2ltcGxlLWZpbHRlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2ltcGxlLW1lc3NhZ2Utc3VtbWFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGVzeW1ib2xjb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2xhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc21pbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbWlsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtaVwiLFwic21pbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtcHRlMzM2bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zb2FwK2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NvYXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BhcnFsLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcGFycWwtcmVzdWx0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcGlyaXRzLWV2ZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Jnc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdyYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdyeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3J1K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNydVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NzZGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3NtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWFwZXgtdXBkYXRlLWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1jb21tdW5pdHktdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtZXJyb3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zZXF1ZW5jZS1hZGp1c3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zZXF1ZW5jZS1hZGp1c3QtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXN0YXR1cy1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXN0YXR1cy1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhclwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RlaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZWlcIixcInRlaWNvcnB1c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RocmF1ZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXJlcGx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0c2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90dG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90dmUtdHJpZ2dlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91bHBmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLWdycHNoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtcmVzc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy10YXJnZXRkZXNjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtdWlzb2NrZXRkZXNjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92Y2FyZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdmNhcmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZlbW1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAtcHJvc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlLXBjM2NoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5hY2Nlc3MtdHJhbnNmZXItZXZlbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5ic2YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1pZC1jYWxsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctc21hbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHZiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWV4dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3J2Y2MtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3RhdGUtYW5kLWV2ZW50LWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnVzc2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi5iY21jc2luZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi5zbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAyLnRjYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Y2FwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNtLnBvc3QtaXQtbm90ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwd25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc29cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhc29cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ib2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY3VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0Y1wiLFwiYWN1dGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWlyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZsYXNoLm1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mb3Jtc2NlbnRyYWwuZmNkdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZjZHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZnhwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnhwXCIsXCJmeHBsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnBhcnRpYWwtdXBsb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZmRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFldGhlci5pbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoLWJhcmNvZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWhlYWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXpmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWVyaWNhbmR5bmFtaWNzLmFjY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWlnYS5hbWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhbWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW11bmRzZW4ubWF6ZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5raVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWZ1bmRzLXRyYW5zZmVyLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ0aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbnRpeC5nYW1lLWNvbXBvbmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0LmJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5jb21wYWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0Lmpzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwaStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtM3U4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBrcGFzc1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBrcGFzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcmFzdHJhLnN3aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJpc3RhbmV0d29ya3Muc3dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3dpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFydHNxdWFyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW90YVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWVwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmF1dG9wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdmlzdGFyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtcHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJla2l0enVyLXN0ZWNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmlvcGF4LnJkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJsdWVpY2UubXVsdGlwYXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJsdWV0b290aC5lcC5vb2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJsdWV0b290aC5sZS5vb2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJtaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJtaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5idXNpbmVzc29iamVjdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2FiLWpzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWNwZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWxpcHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNlbmRpby50aGlubGluYy5jbGllbnRjb25mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jZW50dXJ5LXN5c3RlbXMudGNwX3N0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hlbWRyYXcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2R4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hpcG51dHMua2FyYW9rZS1tbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaXJwYWNrLmlzZG4tZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaXRhdGlvbnN0eWxlcy5zdHlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsYXltb3JlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsb2FudG8ucnA5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnA5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjNGdcIixcImM0ZFwiLFwiYzRmXCIsXCJjNHBcIixcImM0dVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzExYW1jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzExYW16XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvZmZlZXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24uZG9jK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbi5uZXh0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29tbWVyY2UtYmF0dGVsbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbW1vbnNwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbnRhY3QuY21zZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkYmNtc2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5rZXlib2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa2tcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xrcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xrdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLndvcmRiYW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xrd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3RjLXBvc21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN0Y3Qud3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wb3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXJhc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwuY2FyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGN1cmxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3lhbi5kZWFuLnJvb3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jeWJhbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhcnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmR6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlYmlhbi5iaW5hcnktcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZmXCIsXCJ1dnZmXCIsXCJ1dmRcIixcInV2dmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dFwiLFwidXZ2dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnVuc3BlY2lmaWVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ4XCIsXCJ1dnZ4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UuemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ6XCIsXCJ1dnZ6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlbm92by5mY3NlbGF5b3V0LWxpbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZV9sYXVuY2hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVzbXVtZS1tb3ZpZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGlyLWJpLnBsYXRlLWRsLW5vc3VmZml4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kbS5kZWxlZ2F0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG5hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvY3VtZW50K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubW9iaWxlLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb3JlbWlyLnNjb3JlY2xvdWQtYmluYXJ5LWRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcGdyYXBoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHBnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRyZWFtZmFjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRmYWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHJpdmUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3B4eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbC5mbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsLmh0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5haXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmR2YmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5lc2djb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZGZ0bm90aWZhY2Nlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNnYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ2FjY2VzczJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNncGRkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY3JvYW1pbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcHR2LmFsZmVjLWJhc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcHR2LmFsZmVjLWVuaGFuY2VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtYWdncmVnYXRlLXJvb3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtY29udGFpbmVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWdlbmVyaWMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtbXNnbGlzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaW5pdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5wZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR4clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHluYWdlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdlb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kenJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVhc3lrYXJhb2tlLmNkZ2Rvd25sb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY2Rpcy11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5maWxldXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc3VwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZW1jbGllbnQuYWNjZXNzcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVubGl2ZW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZW5waGFzZS5lbnZveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXByaW50cy5kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uZXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5xdWlja2FuaW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicWFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVyaWNzc29uLnF1aWNrY2FsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXMzXCIsXCJldDNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hb2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtZSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYXNpYy1zK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5jdWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZjb21tYW5kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2ZGlzY292ZXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2cHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1iYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1jb2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtbnB2cit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNlcnZpY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzeW5jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2dWVwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5tY2lkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5taGVnNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5vdmVybG9hZC1jb250cm9sLXBvbGljeS1kYXRhc2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5wc3RuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zY2kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnNpbXNlcnZzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50aW1lc3RhbXAtdG9rZW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50c2wuZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldWRvcmEuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtYWxidW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlejJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV6M1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mLXNlY3VyZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZhc3Rjb3B5LWRpc2staW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLm1zZWVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNlZWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5zZWVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VlZFwiLFwiZGF0YWxlc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmZzbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZpbG1pdC56ZmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZpbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maXJlbW9ua2V5cy5jbG91ZGNlbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncGhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmx1eHRpbWUuY2xpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mb250LWZvbnRmb3JnZS1zZmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbVwiLFwiZnJhbWVcIixcIm1ha2VyXCIsXCJib29rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZm5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9hc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9hMlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9hM1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzZ3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZzVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3Byc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJoMlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guYXJ0LWV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guYXJ0NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRkZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRkZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGR3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGJkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guaGJwbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnV0LW1pc25ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnV6enlzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ6c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW5vbWF0aXgudHV4ZWRvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHhkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb2N1YmUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2diXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnRvb2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZ3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZXhcIixcImdyZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3h0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb3BsYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnMndcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2Vvc3BhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnM3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VyYmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0LXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZG9jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvblwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdzbGlkZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc3ByZWFkc2hlZXRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2hlZXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia216XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2suZS1mb3JtK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncmFmZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncWZcIixcImdxc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncmlkbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2FjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pZGVudGl0eS1tZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2ltXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdydlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC1tZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3RtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHBsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGFsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbmRoZWxkLWVudGVydGFpbm1lbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiem1tXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhiY2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoYmNpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhjbC1iaXJlcG9ydHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhlcm9rdStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhoZS5sZXNzb24tcGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWhwZ2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocGdsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWhwaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocGlkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWhwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1qbHl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamx0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2x4bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjbHhsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh0dHBob25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oeWRyb3N0YXRpeC5zb2YtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNmZC1oZHN0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oeXBlcmRyaXZlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHpuLTNkLWNyb3Nzd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLmFmcGxpbmVkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uZWxlY3Ryb25pYy1tZWRpYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLm1pbmlwYXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcHlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFmcFwiLFwibGlzdGFmcFwiLFwibGlzdDM4MjBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLnJpZ2h0cy1tYW5hZ2VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWNjcHJvZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljY1wiLFwiaWNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmllZWUuMTkwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXZwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2dVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIml2dVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubGlzLnYyLnJlc3VsdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbGNvbnN1bWVycHJvZmlsZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHByb3h5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29scHJveHkuaWQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHNldHRpbmdzLnNpbXBsZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm9ybWVkY29udHJvbC5ybXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvcm1peC12aXNpb25hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm90ZWNoLnByb2plY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm90ZWNoLnByb2plY3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbm5vcGF0aC53YW1wLm5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5zb3JzLmlnbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHB3XCIsXCJ4cHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJnZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpMmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJ0cnVzdC5kaWdpYm94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcnRydXN0Lm5uY3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludHUucWJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicWJvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludHUucWZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicWZ4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIuY2F0YWxvZ2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNvbmNlcHRpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5rbm93bGVkZ2VpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5uZXdzaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c21lc3NhZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLnBhY2thZ2VpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wbGFubmluZ2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHVucGx1Z2dlZC5yY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyY3Byb2ZpbGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXJlcG9zaXRvcnkucGFja2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpcnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXMteHByXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHByXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1kaXJlY3Rvcnktc2VydmljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtanBuc3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1wYXltZW50LXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcmVnaXN0cmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb24td2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1zZXRzdG9yZS13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXZlcmlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamNwLmphdmFtZS5taWRsZXQtcm1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm1zXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmppc3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqaXNwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpvb3N0LmpvZGEtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpvZGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuanNrLmlzZG4tbmduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3R6XCIsXCJrdHJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImthcmJvblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2NoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2hydFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2Zvcm11bGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrZm9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtpdmlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rb250b3VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia29uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rcHJlc2VudGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3ByXCIsXCJrcHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrc3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3dkXCIsXCJrd3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0a2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2lkc3BpcmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2lhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtpbmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia25lXCIsXCJrbnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua29hblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNrcFwiLFwic2tkXCIsXCJza3RcIixcInNrbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGFzeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxpYmVydHktcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmRlc2t0b3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGJlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiMTIzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXByXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1ub3Rlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5zZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXdvcmRwcm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsd3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvcnRwa2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmFjdGlvbnRva2VuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5jb25mdG9rZW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmxpY2Vuc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLm1kY2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hc29uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWF4bWluZC5tYXhtaW5kLWRiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtY2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYzFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVkaWFzdGF0aW9uLmNka2V5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RrZXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVyaWRpYW4tc2xpbmdzaG90XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXdmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1mbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmZsb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmlneFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlneFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQucG9ydGFibGUtZXhlY3V0YWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWllbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWluaXNvZnQtaHAzMDAwLXNhdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pdHN1YmlzaGkubWlzdHktZ3VhcmQudHJ1c3R3ZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRpc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubWJrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWJrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1zbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMucGxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmFwcGxpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBuXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5jZXJ0aWZpY2F0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5hZHNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZmlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZ290YXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5rbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS50dGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS53ZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmlwcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHVsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLTNtZmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNpbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWNvbG9yLmljY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNcIixcInhsbVwiLFwieGxhXCIsXCJ4bGNcIixcInhsdFwiLFwieGx3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsc2JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1odG1saGVscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNobVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1pbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtbHJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmV4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0aG14XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9wZW50eXBlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGFja2FnZS5vYmZ1c2NhdGVkLW9wZW50eXBlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc3RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGxheXJlYWR5LmluaXRpYXRvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHRcIixcInBwc1wiLFwicG90XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG90bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludGRldmljZWNhcGFiaWxpdGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50aW5nLnByaW50dGlja2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBwXCIsXCJtcHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtdG5lZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5kZXZpY2VwYWlyaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLm53cHJpbnRpbmcub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLnByaW50ZXJwYWlyaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLndzZC5vb2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1jaGxnLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubGljLXJlc3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLm1ldGVyLWNobGctcmVxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5tZXRlci1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb3RtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BzXCIsXCJ3a3NcIixcIndjbVwiLFwid2RiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdwbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy14cHNkb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tc2EtZGlzay1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZXFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNpZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11bHRpYWQuY3JlYXRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXVsdGlhZC5jcmVhdG9yLmNpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXVzaWMtbmlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXVzaWNpYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXV2ZWUuc3R5bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc3R5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm15bmZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFnbGV0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5jZC5jb250cm9sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uY2QucmVmZXJlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXJ2YW5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXRmcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmx1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLm5pdHJvLnJvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8uc25lcy5yb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJudGZcIixcIm5pdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtZGlyZWN0b3J5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm5kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXNlYWxlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5uc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC13ZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubndcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY2F0YWxvZ3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNvbm1sK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmlwdHYuY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuaXNkcy1yYWRpby1wcmVzZXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmsreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFya2NvbGxlY3Rpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuYWMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5nZGF0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuLWdhZ2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubmNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2Qrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnBjZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwc3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWRtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVkeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5leHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmNvbnRlbnQtc2hhcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5maWxlLXRyYW5zZmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwub2d3X3JlbW90ZS1hY2Nlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfcmVtb3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuc2lwLXRhX3RjcF9zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmRhdGFiYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RmdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3R0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXdlYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90aFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYm5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9mdG4ubDEwbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY29udGVudGFjY2Vzc2Rvd25sb2FkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jb250ZW50YWNjZXNzc3RyZWFtaW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jc3BnLWhleGJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUuc3ZnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUueGh0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLm1pcHB2Y29udHJvbG1lc3NhZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnBhZS5nZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuc3BkaXNjb3ZlcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGxpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVlcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYudXNlcnByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbHBjLXN1Z2FyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWh0dHAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5hc3NvY2lhdGVkLXByb2NlZHVyZS1wYXJhbWV0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuZHJtLXRyaWdnZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuaW1kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lmx0a21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5ub3RpZmljYXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QucHJvdmlzaW9uaW5ndHJpZ2dlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnYm9vdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZGQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dkdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNpbXBsZS1zeW1ib2wtY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc21hcnRjYXJkLXRyaWdnZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc3Byb3YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc3RrbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1hZGRyZXNzLWJvb2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLWZlYXR1cmUtaGFuZGxlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItcGNjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1zdWJzLWludml0ZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItdXNlci1wcmVmcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGQyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRkMlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZHJtLnJpc2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZ3JvdXAtdXNhZ2UtbGlzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wYWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmRldGFpbGVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZmluYWwtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5ncm91cHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmludm9jYXRpb24tZGVzY3JpcHRvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2Mub3B0aW1pemVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wdXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuc2NpZG0ubWVzc2FnZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEueGNhcC1kaXJlY3RvcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWFkcy1lbWFpbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWFkcy1mb2xkZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWFsb2Mtc3VwbC1pbml0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZS1iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5leWUub2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVub2ZmaWNlb3JnLmV4dGVuc2lvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3h0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9teG1scHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWNvbG9ycyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtbGF5b3V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1zdHlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudGF1dGhvcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5jb21tZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmhhbmRvdXRtYXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5ub3Rlc21hc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLm5vdGVzc2xpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbi5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc3Byb3BzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbGR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVsYXlvdXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZW1hc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwc3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93Lm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXVwZGF0ZWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWJsZXN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRhZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG90eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudmlld3Byb3BzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjY2hhaW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZGlhbG9nc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsbGluayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZWRlZmluaXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Y2FjaGVyZWNvcmRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdHRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeXRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmhlYWRlcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9ubG9nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRzdHJpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsc3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldG1ldGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZXNpbmdsZWNlbGxzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGx0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJuYW1lcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudm9sYXRpbGVkZXBlbmRlbmNpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWVvdmVycmlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbGRyYXdpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuY29tbWVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG9jeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50Lmdsb3NzYXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5lbmRub3Rlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9udHRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvb3Rub3Rlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwubnVtYmVyaW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5zZXR0aW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG90eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlLm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLndlYnNldHRpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmRpZ2l0YWwtc2lnbmF0dXJlLXhtbHNpZ25hdHVyZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9yYWNsZS5yZXNvdXJjZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9yYW5nZS5pbmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zYS5uZXRkZXBsb3lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2VvLm1hcGd1aWRlLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZ3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5idW5kbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuZHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vdHBzLmN0LWtpcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm94bGkuY291bnRncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFnZXJkdXR5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFsbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBkYlwiLFwicHFhXCIsXCJvcHJjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbm9wbHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhb3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW9zLnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYXdhYWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYXdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGNvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBnLm9zYXNsaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVpNlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5waWFjY2Vzcy5hcHBsaWNhdGlvbi1saWNlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5waWNzZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZmlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb2MuZ3JvdXAtYWR2ZXJ0aXNlbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvY2tldGxlYXJuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNi1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3NS1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcmVtaW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJldmlld3N5c3RlbXMuYm94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm94XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByb3RldXMubWFnYXppbmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZ3pcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHVibGlzaGFyZS1kZWx0YS10cmVlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicXBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB2aS5wdGlkMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB0aWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHdnLW11bHRpcGxleGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wd2cteGh0bWwtcHJpbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFsY29tbS5icmV3LWFwcC1yZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicXhkXCIsXCJxeHRcIixcInF3ZFwiLFwicXd0XCIsXCJxeGxcIixcInF4YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdW9iamVjdC1xdW94ZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubW9tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1jb25mK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWNvbm4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtZGlhbG9nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LXN0cmVhbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1jb25mK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctYmFzZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZmF4LWRldGVjdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZmF4LXNlbmRyZWN2K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1ncm91cCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctc3BlZWNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy10cmFuc2Zvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWluc3Rvci5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYXBpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdXNpY3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZW5sZWFybi5ybHByaW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yaWcuY3J5cHRvbm90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyeXB0b25vdGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmltLmNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY29kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZiclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm12YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsaW5rNjZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucnMtMjc0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucnVja3VzLmRvd25sb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zM3Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zYm0uY2lkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zYm0ubWlkMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2NyaWJ1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLjNkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmNzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmRvY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmVtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLm1odFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLm5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnBwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnRpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC54bHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmh0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLnBkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlmbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlwa1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0d2RcIixcInR3ZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2lyZW4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zbWFmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1mXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0Lm5vdGVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGVhY2hlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2Z0d2FyZTYwMi5maWxsZXIuZm9ybSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNvZnR3YXJlNjAyLmZpbGxlci5mb3JtLXhtbC16aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNka21cIixcInNka2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuZHhwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHhwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLnNmc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNmc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zc3MtY29kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zc3MtZHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zc3MtbnRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5kcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic21mXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkd1wiLFwidm9yXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXItZ2xvYmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZ2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbXppcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RyZWV0LXN0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLndhZGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3MudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLm1hdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3h3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLmdsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3hnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3VzXCIsXCJzdXNwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN2ZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zd2lmdHZpZXctaWNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpc1wiLFwic2lzeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbS5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kcy5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRhby5pbnRlbnQtbW9kdWxlLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudGNwZHVtcC5wY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNhcFwiLFwiY2FwXCIsXCJkbXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1kLm1lZGlhZmxleC5hcGkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtb2JpbGUtbGl2ZXR2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widG1vXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHB0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRyaXNjYXBlLm14c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cnVlYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRydWVkb2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnViaXNvZnQud2VicGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51ZmRsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widWZkXCIsXCJ1ZmRsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVpcS50aGVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV0elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51bWFqaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bWpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW5pdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bml0eXdlYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVvbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5hbGVydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5hbGVydC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmJlYXJlci1jaG9pY2Utd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2FjaGVvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNoYW5uZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2hhbm5lbC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3Qtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdGNtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LnNpZ25hbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXJpLW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmFsdmUuc291cmNlLm1hdGVyaWFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52Y3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmQtc3R1ZHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlY3RvcndvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZXJpbWF0cml4LnZjYXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpZHNvZnQudmlkY29uZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmlzaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2c2RcIixcInZzdFwiLFwidnNzXCIsXCJ2c3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmlzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52c2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2c2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLnNpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLnNsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2J4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLndtbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxzY3JpcHRjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3dGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2ZhLnAycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2ZhLndzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2luZG93cy5kZXZpY2VwYWlyaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndtZi5ib290c3RyYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ubWF0aGVtYXRpY2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ubWF0aGVtYXRpY2EucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5wbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuYnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3FkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndycS1ocDMwMDAtbGFiZWxsZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd0LnN0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5jc3Ard2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LnNzcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhhY21sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGFyYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54ZmRsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGZkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54ZmRsLndlYmZvcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLmNwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLmRwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnBsYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnBwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnhsaW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1kaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh2c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9zZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Lm9zZnB2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvc2ZwdmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnJlbW90ZS1zZXR1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50aHJvdWdoLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnR1bm5lbC11ZHBlbmNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFvd2VtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuenVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemlyXCIsXCJ6aXJ6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnp6YXp6LmRlY2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemF6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZxLXJ0Y3B4clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93YXRjaGVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2hvaXNwcC1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aG9pc3BwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dpZGdldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndndFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dpbmhscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2l0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93b3JkcGVyZmVjdDUuMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93c2RsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93c3BvbGljeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3c3BvbGljeVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiN3pcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFiaXdvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFid1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYWNlLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYW1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRtZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1iaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhYlwiLFwieDMyXCIsXCJ1MzJcIixcInZveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYmNwaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJjcGlvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iZG9jXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widG9ycmVudFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYmxvcmJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJsYlwiLFwiYmxvcmJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJ6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iemlwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnoyXCIsXCJib3pcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNiclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2JyXCIsXCJjYmFcIixcImNidFwiLFwiY2J6XCIsXCJjYjdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNkbGlua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jZnMtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2ZzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jaGF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaGF0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jaGVzcy1wZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBnblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hyb21lLWV4dGVuc2lvblwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29jb2FcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2NvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jb21wcmVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29uZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcGlvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGViXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRlYlwiLFwidWRlYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGdjLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRnY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGlyZWN0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRpclwiLFwiZGNyXCIsXCJkeHJcIixcImNzdFwiLFwiY2N0XCIsXCJjeHRcIixcInczZFwiLFwiZmdkXCIsXCJzd2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRvb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR2aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZW52b3lcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV2eVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZXZhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldmFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtZG9zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWZyYW1lbWFrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1saWJncnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtbGludXgtcHNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtb3RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1wY2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zbmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNuZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zcGVlZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc3Vub3MtbmV3c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC10dGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRmXCIsXCJ0dGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBmYVwiLFwicGZiXCIsXCJwZm1cIixcImFmbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC12Zm9udFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZnJlZWFyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXJjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ2NhLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdjYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ2x1bHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVseFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ251bWVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdudW1lcmljXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ncmFtcHMteG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncmFtcHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWd0YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWd6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWhkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1odHRwZC1waHBcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBocFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaW5zdGFsbC1pbnN0cnVjdGlvbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImluc3RhbGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlzb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFyZGlmZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpubHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWxhdGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYXRleFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbHVhLWJ5dGVjb2RlXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHVhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbHpoLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx6aFwiLFwibGhhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tYWtlc2VsZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydW5cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1pZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWllXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tb2JpcG9ja2V0LWVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmNcIixcIm1vYmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1wZWd1cmxcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBwbGljYXRpb25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsbmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXdtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy13bXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMteGJhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGJhcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNhY2Nlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNiaW5kZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9iZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3JkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2NsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNscFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNkb3MtcHJvZ3JhbVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4ZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhlXCIsXCJkbGxcIixcImNvbVwiLFwiYmF0XCIsXCJtc2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdmJcIixcIm0xM1wiLFwibTE0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21ldGFmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWZcIixcIndtelwiLFwiZW1mXCIsXCJlbXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zbW9uZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ueVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNwdWJsaXNoZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB1YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNzY2hlZHVsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zd3JpdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndyaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbmV0Y2RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuY1wiLFwiY2RmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ucy1wcm94eS1hdXRvY29uZmlnXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW56YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnpiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wZXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsXCIsXCJwbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGlsb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJjXCIsXCJwZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBrY3MxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDEyXCIsXCJwZnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdiXCIsXCJzcGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRyZXFyZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN3JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJlZGhhdC1wYWNrYWdlLW1hbmFnZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yZXNlYXJjaC1pbmZvLXN5c3RlbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJpc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2VhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNoYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoYXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3dmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodC1hcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhhcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN0dWZmaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN1YnJpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdjRjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdjRjcGlvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdjRjcmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2NGNyY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdDN2bS1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widDNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRhZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Y2xcIixcInRrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRleFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4LXRmbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXhpbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhpbmZvXCIsXCJ0ZXhpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10Z2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXVzdGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1c3RhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNyY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJhcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGVyXCIsXCJjcnRcIixcInBlbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteGZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmlnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14bGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteHBpbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXh6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtem1hY2hpbmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInoxXCIsXCJ6MlwiLFwiejNcIixcIno0XCIsXCJ6NVwiLFwiejZcIixcIno3XCIsXCJ6OFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3g0MDAtYnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGFjbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hhbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YW1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1hdHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtY2Fwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtZWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtZXJyb3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtbnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjb24tY29uZmVyZW5jZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y29uLWNvbmZlcmVuY2UtaW5mby1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94ZW5jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhlbmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhodG1sXCIsXCJ4aHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94aHRtbC12b2ljZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhtbFwiLFwieHNsXCIsXCJ4c2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtZHRkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtcGF0Y2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hvcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhvcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hwcm9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHNsdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c2x0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHNwZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhzcGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94dit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteG1sXCIsXCJ4aHZtbFwiLFwieHZtbFwiLFwieHZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlhbmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95aW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieWluXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemlwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vemxpYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vMzJrYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vM2dwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby8zZ3BwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hYzNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFkcFwiXVxuICB9LFxuICBcImF1ZGlvL2FtclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hbXItd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYW1yLXdiK1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hcHR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYy1hZHZhbmNlZC1sb3NzbGVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYy14XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2F0cmFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9iYXNpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF1XCIsXCJzbmRcIl1cbiAgfSxcbiAgXCJhdWRpby9idjE2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2J2MzJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vY2xlYXJtb2RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2NuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2RhdDEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rsc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDExMDhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMDUwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjIxMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIyMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHZpNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9lYWMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2VuY2FwcnRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyYy1xY3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyYzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyYzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY2IwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjbndcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjbncxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmN3YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2IwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmN3YjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Z3ZHJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzExLTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcxOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi0xNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtMzJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi00MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZ3NtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbS1lZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZ3NtLWhyLTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2lsYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vaXAtbXJfdjIuNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9pc2FjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXVkaW8vbDE2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2wyMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9sMjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vbDhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbHBjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZFwiLFwibWlkaVwiLFwia2FyXCIsXCJybWlcIl1cbiAgfSxcbiAgXCJhdWRpby9tb2JpbGUteG1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNGFcIixcIm00YVwiXVxuICB9LFxuICBcImF1ZGlvL21wNGEtbGF0bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tcGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBhLXJvYnVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBnYVwiLFwibXAyXCIsXCJtcDJhXCIsXCJtcDNcIixcIm0yYVwiLFwibTNhXCJdXG4gIH0sXG4gIFwiYXVkaW8vbXBlZzQtZ2VuZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tdXNlcGFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9nYVwiLFwib2dnXCIsXCJzcHhcIl1cbiAgfSxcbiAgXCJhdWRpby9vcHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY21hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbWEtd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY211LXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Bycy5zaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3JlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0cC1taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zM21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInMzbVwiXVxuICB9LFxuICBcImF1ZGlvL3NpbGtcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpbFwiXVxuICB9LFxuICBcImF1ZGlvL3NtdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zbXYtcWNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3NtdjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc3AtbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zcGVleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90MTQwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90MzhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdGVsZXBob25lLWV2ZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3RvbmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdWVtY2xpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby91bHBmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdmR2aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bXItd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLjNncHAuaXVmcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuNHNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5hdWRpb2tvelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY2VscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY2lzY28ubnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbWxlcy5yYWRpby1ldmVudHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNucy5hbnAxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbnMuaW5mMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZGVjZS5hdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2YVwiLFwidXZ2YVwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW9sXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRsbmEuYWR0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkuaGVhYWMuMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkuaGVhYWMuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkubWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5tcHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucGwyeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucGwyelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucHVsc2UuMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZHJhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHJhXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0c1wiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kdHMuaGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdHNoZFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kdmIuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZXZlcmFkLnBsalwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuaG5zLmF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5sdWNlbnQudm9pY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdnBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB5YVwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5ub2tpYS5tb2JpbGUteG1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5ub3J0ZWwudmJrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDQ4MDBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA3NDcwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA3NDcwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwOTYwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwOTYwMFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5vY3RlbC5zYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnFjZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5yaGV0b3JleC4zMmthZHBjbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucmlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJuLXJlYWxhdWRpb1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwubXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQudm14LmN2c2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLndhdmVcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vdm9yYmlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL3ZvcmJpcy1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vd2F2XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdXG4gIH0sXG4gIFwiYXVkaW8vd2F2ZVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhdlwiXVxuICB9LFxuICBcImF1ZGlvL3dlYm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYmFcIl1cbiAgfSxcbiAgXCJhdWRpby94LWFhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWFjXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1haWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaWZcIixcImFpZmZcIixcImFpZmNcIl1cbiAgfSxcbiAgXCJhdWRpby94LWNhZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FmXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1mbGFjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbGFjXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tNGFcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTRhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tYXRyb3NrYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWthXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtM3VcIl1cbiAgfSxcbiAgXCJhdWRpby94LW1zLXdheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F4XCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tcy13bWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYW1cIixcInJhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybXBcIl1cbiAgfSxcbiAgXCJhdWRpby94LXJlYWxhdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtdHRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXVkaW8veC13YXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhdlwiXVxuICB9LFxuICBcImF1ZGlvL3htXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bVwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY2R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHhcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2lmXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jbWRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWRmXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtbFwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY3NtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NtbFwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtcGRiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiY2hlbWljYWwveC14eXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh5elwiXVxuICB9LFxuICBcImZvbnQvb3BlbnR5cGVcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90ZlwiXVxuICB9LFxuICBcImltYWdlL2JtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibXBcIl1cbiAgfSxcbiAgXCJpbWFnZS9jZ21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZ21cIl1cbiAgfSxcbiAgXCJpbWFnZS9maXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL2czZmF4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzNcIl1cbiAgfSxcbiAgXCJpbWFnZS9naWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaWZcIl1cbiAgfSxcbiAgXCJpbWFnZS9pZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZWZcIl1cbiAgfSxcbiAgXCJpbWFnZS9qcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvanBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwZWdcIixcImpwZ1wiLFwianBlXCJdXG4gIH0sXG4gIFwiaW1hZ2UvanBtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL2pweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9rdHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrdHhcIl1cbiAgfSxcbiAgXCJpbWFnZS9uYXBscHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvcGpwZWdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiaW1hZ2UvcG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5nXCJdXG4gIH0sXG4gIFwiaW1hZ2UvcHJzLmJ0aWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJidGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvcHJzLnB0aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9wd2ctcmFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3NnaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dpXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvc3ZnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZnXCIsXCJzdmd6XCJdXG4gIH0sXG4gIFwiaW1hZ2UvdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3RpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0aWZmXCIsXCJ0aWZcIl1cbiAgfSxcbiAgXCJpbWFnZS90aWZmLWZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBzZFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5haXJ6aXAuYWNjZWxlcmF0b3IuYXp2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5jbnMuaW5mMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuZGVjZS5ncmFwaGljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZpXCIsXCJ1dnZpXCIsXCJ1dmdcIixcInV2dmdcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZGp2dVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRqdnVcIixcImRqdlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5kdmIuc3VidGl0bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdWJcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZHdnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHdnXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4ZlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mYXN0Ymlkc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmYnNcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnB4XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZzdFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLW1tclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1tclwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLXJsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsY1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5nbG9iYWxncmFwaGljcy5wZ2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5taXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1vemlsbGEuYXBuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtbW9kaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kaVwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5tcy1waG90b1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2RwXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm5ldC1mcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJucHhcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQucmFkaWFuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnNlYWxlZC5wbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmdpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuanBnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zdmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnRlbmNlbnQudGFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQud2FwLndibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Ym1wXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnhpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aWZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuemJydXNoLnBjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS93ZWJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJwXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC0zZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNkc1wiXVxuICB9LFxuICBcImltYWdlL3gtY211LXJhc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFzXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1jbXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNteFwiXVxuICB9LFxuICBcImltYWdlL3gtZnJlZWhhbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZoXCIsXCJmaGNcIixcImZoNFwiLFwiZmg1XCIsXCJmaDdcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWljb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNvXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1qbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiam5nXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1tcnNpZC1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lkXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1tcy1ibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibXBcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGN4XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1waWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwaWNcIixcInBjdFwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtYW55bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbm1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGJtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ21cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1yZ2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJnYlwiXVxuICB9LFxuICBcImltYWdlL3gtdGdhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Z2FcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXhiaXRtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhibVwiXVxuICB9LFxuICBcImltYWdlL3gteGNmXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImltYWdlL3gteHBpeG1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC14d2luZG93ZHVtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHdkXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9jcGltXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZXh0ZXJuYWwtYm9keVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2ZlZWRiYWNrLXJlcG9ydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbC1kZWxpdmVyeS1zdGF0dXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWwtZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWhlYWRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9odHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm1lc3NhZ2UvaW1kbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJtZXNzYWdlL25ld3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9wYXJ0aWFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm1lc3NhZ2UvcmZjODIyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlbWxcIixcIm1pbWVcIl1cbiAgfSxcbiAgXCJtZXNzYWdlL3MtaHR0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3NpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3NpcGZyYWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS90cmFja2luZy1zdGF0dXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS92bmQuc2kuc2ltcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3ZuZC53ZmEud3NjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL2lnZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ3NcIixcImlnZXNcIl1cbiAgfSxcbiAgXCJtb2RlbC9tZXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNoXCIsXCJtZXNoXCIsXCJzaWxvXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmNvbGxhZGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGFlXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmR3ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR3ZlwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5mbGF0bGFuZC4zZG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZGxcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuZ3MtZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdzLmdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ3R3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3R3XCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLm1vbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5tdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdHNcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQub3BlbmdleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LmJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnZ0dVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ0dVwiXVxuICB9LFxuICBcIm1vZGVsL3ZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmxcIixcInZybWxcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QrYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2RiXCIsXCJ4M2RielwiXVxuICB9LFxuICBcIm1vZGVsL3gzZCtmYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC94M2QrdnJtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkdlwiLFwieDNkdnpcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2RcIixcIngzZHpcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QtdnJtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYWx0ZXJuYXRpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2FwcGxlZG91YmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9ieXRlcmFuZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9kaWdlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2VuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9oZWFkZXItc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9taXhlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvcGFyYWxsZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3JlbGF0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3JlcG9ydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvc2lnbmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC92b2ljZS1tZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9jYWNoZS1tYW5pZmVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBwY2FjaGVcIixcIm1hbmlmZXN0XCJdXG4gIH0sXG4gIFwidGV4dC9jYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljc1wiLFwiaWZiXCJdXG4gIH0sXG4gIFwidGV4dC9jYWxlbmRlclwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQvY21kXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9jb2ZmZWVzY3JpcHRcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjb2ZmZWVcIixcImxpdGNvZmZlZVwiXVxuICB9LFxuICBcInRleHQvY3NzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L2NzdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3N2XCJdXG4gIH0sXG4gIFwidGV4dC9jc3Ytc2NoZW1hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZGlyZWN0b3J5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZG5zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZWNtYXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VuY2FwcnRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZW5yaWNoZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9md2RyZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9ncmFtbWFyLXJlZi1saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvaGpzb25cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoanNvblwiXVxuICB9LFxuICBcInRleHQvaHRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHRtbFwiLFwiaHRtXCIsXCJzaHRtbFwiXVxuICB9LFxuICBcInRleHQvamFkZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphZGVcIl1cbiAgfSxcbiAgXCJ0ZXh0L2phdmFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L2pjci1jbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9qc3hcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzeFwiXVxuICB9LFxuICBcInRleHQvbGVzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxlc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L21hcmtkb3duXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvbWF0aG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1tbFwiXVxuICB9LFxuICBcInRleHQvbWl6YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9uM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibjNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3BhcmFtZXRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9wbGFpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHh0XCIsXCJ0ZXh0XCIsXCJjb25mXCIsXCJkZWZcIixcImxpc3RcIixcImxvZ1wiLFwiaW5cIixcImluaVwiXVxuICB9LFxuICBcInRleHQvcHJvdmVuYW5jZS1ub3RhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3Bycy5mYWxsZW5zdGVpbi5yc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9wcnMubGluZXMudGFnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHNjXCJdXG4gIH0sXG4gIFwidGV4dC9yYXB0b3JmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yZmM4MjItaGVhZGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3JpY2h0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3J0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnRmXCJdXG4gIH0sXG4gIFwidGV4dC9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9zZ21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dtbFwiLFwic2dtXCJdXG4gIH0sXG4gIFwidGV4dC9zdHlsdXNcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHlsdXNcIixcInN0eWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3QxNDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHN2XCJdXG4gIH0sXG4gIFwidGV4dC90cm9mZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRcIixcInRyXCIsXCJyb2ZmXCIsXCJtYW5cIixcIm1lXCIsXCJtc1wiXVxuICB9LFxuICBcInRleHQvdHVydGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRsXCJdXG4gIH0sXG4gIFwidGV4dC91bHBmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC91cmktbGlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXJpXCIsXCJ1cmlzXCIsXCJ1cmxzXCJdXG4gIH0sXG4gIFwidGV4dC92Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNhcmRcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmFiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmN1cmwuZGN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRjdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5tY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWN1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsLnNjdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmRlYmlhbi5jb3B5cmlnaHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuZG1jbGllbnRzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZXNtZXJ0ZWMudGhlbWUtZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5mbHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHlcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd2XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuaW4zZC4zZG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2RtbFwiXVxuICB9LFxuICBcInRleHQvdm5kLmluM2Quc3BvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwb3RcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pcHRjLm5ld3NtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pcHRjLm5pdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubGF0ZXgtelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5tb3Rvcm9sYS5yZWZsZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubXMtbWVkaWFwYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLm5ldDJwaG9uZS5jb21tY2VudGVyLmNvbW1hbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQucmFkaXN5cy5tc21sLWJhc2ljLWxheW91dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zaS51cmljYXRhbG9ndWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYWRcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC50cm9sbHRlY2gubGluZ3Vpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLnNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLndhcC5zbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAud21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sXCJdXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLndtbHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbHNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3Z0dFwiOiB7XG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2dHRcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtYXNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzXCIsXCJhc21cIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY1wiLFwiY2NcIixcImN4eFwiLFwiY3BwXCIsXCJoXCIsXCJoaFwiLFwiZGljXCJdXG4gIH0sXG4gIFwidGV4dC94LWNvbXBvbmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodGNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtZm9ydHJhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZlwiLFwiZm9yXCIsXCJmNzdcIixcImY5MFwiXVxuICB9LFxuICBcInRleHQveC1nd3QtcnBjXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoYnNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtamF2YS1zb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphdmFcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtanF1ZXJ5LXRtcGxcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L3gtbHVhXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHVhXCJdXG4gIH0sXG4gIFwidGV4dC94LW1hcmtkb3duXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYXJrZG93blwiLFwibWRcIixcIm1rZFwiXVxuICB9LFxuICBcInRleHQveC1uZm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5mb1wiXVxuICB9LFxuICBcInRleHQveC1vcG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcG1sXCJdXG4gIH0sXG4gIFwidGV4dC94LXBhc2NhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicFwiLFwicGFzXCJdXG4gIH0sXG4gIFwidGV4dC94LXByb2Nlc3NpbmdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBkZVwiXVxuICB9LFxuICBcInRleHQveC1zYXNzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Fzc1wiXVxuICB9LFxuICBcInRleHQveC1zY3NzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Nzc1wiXVxuICB9LFxuICBcInRleHQveC1zZXRleHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV0eFwiXVxuICB9LFxuICBcInRleHQveC1zZnZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNmdlwiXVxuICB9LFxuICBcInRleHQveC1zdXNlLXltcFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieW1wXCJdXG4gIH0sXG4gIFwidGV4dC94LXV1ZW5jb2RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dVwiXVxuICB9LFxuICBcInRleHQveC12Y2FsZW5kYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjc1wiXVxuICB9LFxuICBcInRleHQveC12Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNmXCJdXG4gIH0sXG4gIFwidGV4dC94bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhtbFwiXVxuICB9LFxuICBcInRleHQveG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC95YW1sXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieWFtbFwiLFwieW1sXCJdXG4gIH0sXG4gIFwidmlkZW8vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vM2dwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2dwXCIsXCIzZ3BwXCJdXG4gIH0sXG4gIFwidmlkZW8vM2dwcC10dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvLzNncHAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZzJcIl1cbiAgfSxcbiAgXCJ2aWRlby9ibXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2J0NjU2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vY2VsYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2MVwiXVxuICB9LFxuICBcInZpZGVvL2gyNjNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjNcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjYzLTE5OThcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9oMjYzLTIwMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9oMjY0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoMjY0XCJdXG4gIH0sXG4gIFwidmlkZW8vaDI2NC1yY2RvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NC1zdmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9qcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcGd2XCJdXG4gIH0sXG4gIFwidmlkZW8vanBlZzIwMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9qcG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwbVwiLFwianBnbVwiXVxuICB9LFxuICBcInZpZGVvL21qMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWoyXCIsXCJtanAyXCJdXG4gIH0sXG4gIFwidmlkZW8vbXAxc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL21wMnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcDJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0c1wiXVxuICB9LFxuICBcInZpZGVvL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXA0XCIsXCJtcDR2XCIsXCJtcGc0XCJdXG4gIH0sXG4gIFwidmlkZW8vbXA0di1lc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL21wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wZWdcIixcIm1wZ1wiLFwibXBlXCIsXCJtMXZcIixcIm0ydlwiXVxuICB9LFxuICBcInZpZGVvL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9udlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2d2XCJdXG4gIH0sXG4gIFwidmlkZW8vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vcG9pbnRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3F1aWNrdGltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicXRcIixcIm1vdlwiXVxuICB9LFxuICBcInZpZGVvL3Jhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3J0cC1lbmMtYWVzY20xMjhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9zbXB0ZTI5Mm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby91bHBmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92YzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuY2N0dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLmhkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmhcIixcInV2dmhcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2bVwiLFwidXZ2bVwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLm1wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnBkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnBcIixcInV2dnBcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5zZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZzXCIsXCJ1dnZzXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UudmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dlwiLFwidXZ2dlwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kaXJlY3R2Lm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGlyZWN0di5tcGVnLXR0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kbG5hLm1wZWctdHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmR2Yi5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdmJcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZnZ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdnRcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuaG5zLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4xZHBhcml0eWZlYy0xMDEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4xZHBhcml0eWZlYy0yMDA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0xMDEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0yMDA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS50dHNhdmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLnR0c21wZWcyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1vdG9yb2xhLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1vdG9yb2xhLnZpZGVvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteHVcIixcIm00dVwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHl2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJweXZcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQubm9raWEuaW50ZXJsZWF2ZWQtbXVsdGltZWRpYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS52aWRlb3ZvaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQub2JqZWN0dmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLm1wZWcxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZC5tcGVnNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWQuc3dmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLm1vdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC51dnZ1Lm1wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ1XCIsXCJ1dnZ1XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLnZpdm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZpdlwiXVxuICB9LFxuICBcInZpZGVvL3dlYm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYm1cIl1cbiAgfSxcbiAgXCJ2aWRlby94LWY0dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZjR2XCJdXG4gIH0sXG4gIFwidmlkZW8veC1mbGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsaVwiXVxuICB9LFxuICBcInZpZGVvL3gtZmx2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW00dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTR2XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tYXRyb3NrYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWt2XCIsXCJtazNkXCIsXCJta3NcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1uZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW5nXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzZlwiLFwiYXN4XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy12b2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZvYlwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13bXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtdlwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd214XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXhcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXd2eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3Z4XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tc3ZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdmlcIl1cbiAgfSxcbiAgXCJ2aWRlby94LXNnaS1tb3ZpZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW92aWVcIl1cbiAgfSxcbiAgXCJ2aWRlby94LXNtdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic212XCJdXG4gIH0sXG4gIFwieC1jb25mZXJlbmNlL3gtY29vbHRhbGtcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljZVwiXVxuICB9LFxuICBcIngtc2hhZGVyL3gtZnJhZ21lbnRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ4LXNoYWRlci94LXZlcnRleFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9XG59IiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhbnRzXCIsXG4gIFwiYmF0c1wiLFxuICBcImJlYXJzXCIsXG4gIFwiYmVlc1wiLFxuICBcImJpcmRzXCIsXG4gIFwiYnVmZmFsb1wiLFxuICBcImNhdHNcIixcbiAgXCJjaGlja2Vuc1wiLFxuICBcImNhdHRsZVwiLFxuICBcImRvZ3NcIixcbiAgXCJkb2xwaGluc1wiLFxuICBcImR1Y2tzXCIsXG4gIFwiZWxlcGhhbnRzXCIsXG4gIFwiZmlzaGVzXCIsXG4gIFwiZm94ZXNcIixcbiAgXCJmcm9nc1wiLFxuICBcImdlZXNlXCIsXG4gIFwiZ29hdHNcIixcbiAgXCJob3JzZXNcIixcbiAgXCJrYW5nYXJvb3NcIixcbiAgXCJsaW9uc1wiLFxuICBcIm1vbmtleXNcIixcbiAgXCJvd2xzXCIsXG4gIFwib3hlblwiLFxuICBcInBlbmd1aW5zXCIsXG4gIFwicGVvcGxlXCIsXG4gIFwicGlnc1wiLFxuICBcInJhYmJpdHNcIixcbiAgXCJzaGVlcFwiLFxuICBcInRpZ2Vyc1wiLFxuICBcIndoYWxlc1wiLFxuICBcIndvbHZlc1wiLFxuICBcInplYnJhc1wiLFxuICBcImJhbnNoZWVzXCIsXG4gIFwiY3Jvd3NcIixcbiAgXCJibGFjayBjYXRzXCIsXG4gIFwiY2hpbWVyYXNcIixcbiAgXCJnaG9zdHNcIixcbiAgXCJjb25zcGlyYXRvcnNcIixcbiAgXCJkcmFnb25zXCIsXG4gIFwiZHdhcnZlc1wiLFxuICBcImVsdmVzXCIsXG4gIFwiZW5jaGFudGVyc1wiLFxuICBcImV4b3JjaXN0c1wiLFxuICBcInNvbnNcIixcbiAgXCJmb2VzXCIsXG4gIFwiZ2lhbnRzXCIsXG4gIFwiZ25vbWVzXCIsXG4gIFwiZ29ibGluc1wiLFxuICBcImdvb3Nlc1wiLFxuICBcImdyaWZmaW5zXCIsXG4gIFwibHljYW50aHJvcGVzXCIsXG4gIFwibmVtZXNpc1wiLFxuICBcIm9ncmVzXCIsXG4gIFwib3JhY2xlc1wiLFxuICBcInByb3BoZXRzXCIsXG4gIFwic29yY2Vyb3JzXCIsXG4gIFwic3BpZGVyc1wiLFxuICBcInNwaXJpdHNcIixcbiAgXCJ2YW1waXJlc1wiLFxuICBcIndhcmxvY2tzXCIsXG4gIFwidml4ZW5zXCIsXG4gIFwid2VyZXdvbHZlc1wiLFxuICBcIndpdGNoZXNcIixcbiAgXCJ3b3JzaGlwZXJzXCIsXG4gIFwiem9tYmllc1wiLFxuICBcImRydWlkc1wiXG5dO1xuIiwidmFyIHRlYW0gPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gdGVhbTtcbnRlYW0uY3JlYXR1cmUgPSByZXF1aXJlKFwiLi9jcmVhdHVyZVwiKTtcbnRlYW0ubmFtZSA9IHJlcXVpcmUoXCIuL25hbWVcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7QWRkcmVzcy5zdGF0ZX0gI3tjcmVhdHVyZX1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiVW5pdGVkIFN0YXRlc1wiLFxuICBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICBcIlVTQVwiXG5dO1xuIiwidmFyIGFkZHJlc3MgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYWRkcmVzcztcbmFkZHJlc3MuZGVmYXVsdF9jb3VudHJ5ID0gcmVxdWlyZShcIi4vZGVmYXVsdF9jb3VudHJ5XCIpO1xuYWRkcmVzcy5wb3N0Y29kZV9ieV9zdGF0ZSA9IHJlcXVpcmUoXCIuL3Bvc3Rjb2RlX2J5X3N0YXRlXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgXCJBTFwiOiBcIjM1MCMjXCIsXG4gIFwiQUtcIjogXCI5OTUjI1wiLFxuICBcIkFTXCI6IFwiOTY3IyNcIixcbiAgXCJBWlwiOiBcIjg1MCMjXCIsXG4gIFwiQVJcIjogXCI3MTcjI1wiLFxuICBcIkNBXCI6IFwiOTAwIyNcIixcbiAgXCJDT1wiOiBcIjgwMCMjXCIsXG4gIFwiQ1RcIjogXCIwNjEjI1wiLFxuICBcIkRDXCI6IFwiMjA0IyNcIixcbiAgXCJERVwiOiBcIjE5OCMjXCIsXG4gIFwiRkxcIjogXCIzMjIjI1wiLFxuICBcIkdBXCI6IFwiMzAxIyNcIixcbiAgXCJISVwiOiBcIjk2NyMjXCIsXG4gIFwiSURcIjogXCI4MzIjI1wiLFxuICBcIklMXCI6IFwiNjAwIyNcIixcbiAgXCJJTlwiOiBcIjQ2MyMjXCIsXG4gIFwiSUFcIjogXCI1MTAjI1wiLFxuICBcIktTXCI6IFwiNjY2IyNcIixcbiAgXCJLWVwiOiBcIjQwNCMjXCIsXG4gIFwiTEFcIjogXCI3MDEjI1wiLFxuICBcIk1FXCI6IFwiMDQyIyNcIixcbiAgXCJNRFwiOiBcIjIxMCMjXCIsXG4gIFwiTUFcIjogXCIwMjYjI1wiLFxuICBcIk1JXCI6IFwiNDgwIyNcIixcbiAgXCJNTlwiOiBcIjU1NSMjXCIsXG4gIFwiTVNcIjogXCIzODcjI1wiLFxuICBcIk1PXCI6IFwiNjUwIyNcIixcbiAgXCJNVFwiOiBcIjU5MCMjXCIsXG4gIFwiTkVcIjogXCI2ODgjI1wiLFxuICBcIk5WXCI6IFwiODk4IyNcIixcbiAgXCJOSFwiOiBcIjAzNiMjXCIsXG4gIFwiTkpcIjogXCIwNzYjI1wiLFxuICBcIk5NXCI6IFwiODgwIyNcIixcbiAgXCJOWVwiOiBcIjEyMiMjXCIsXG4gIFwiTkNcIjogXCIyODgjI1wiLFxuICBcIk5EXCI6IFwiNTg2IyNcIixcbiAgXCJPSFwiOiBcIjQ0NCMjXCIsXG4gIFwiT0tcIjogXCI3MzAjI1wiLFxuICBcIk9SXCI6IFwiOTc5IyNcIixcbiAgXCJQQVwiOiBcIjE4NiMjXCIsXG4gIFwiUklcIjogXCIwMjkjI1wiLFxuICBcIlNDXCI6IFwiMjk5IyNcIixcbiAgXCJTRFwiOiBcIjU3NyMjXCIsXG4gIFwiVE5cIjogXCIzODMjI1wiLFxuICBcIlRYXCI6IFwiNzk4IyNcIixcbiAgXCJVVFwiOiBcIjg0NyMjXCIsXG4gIFwiVlRcIjogXCIwNTAjI1wiLFxuICBcIlZBXCI6IFwiMjIyIyNcIixcbiAgXCJXQVwiOiBcIjk5MCMjXCIsXG4gIFwiV1ZcIjogXCIyNDcjI1wiLFxuICBcIldJXCI6IFwiNTQ5IyNcIixcbiAgXCJXWVwiOiBcIjgzMSMjXCJcbn07XG4iLCJ2YXIgZW5fVVMgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZW5fVVM7XG5lbl9VUy50aXRsZSA9IFwiVW5pdGVkIFN0YXRlcyAoRW5nbGlzaClcIjtcbmVuX1VTLmludGVybmV0ID0gcmVxdWlyZShcIi4vaW50ZXJuZXRcIik7XG5lbl9VUy5hZGRyZXNzID0gcmVxdWlyZShcIi4vYWRkcmVzc1wiKTtcbmVuX1VTLnBob25lX251bWJlciA9IHJlcXVpcmUoXCIuL3Bob25lX251bWJlclwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiY29tXCIsXG4gIFwidXNcIixcbiAgXCJiaXpcIixcbiAgXCJpbmZvXCIsXG4gIFwibmFtZVwiLFxuICBcIm5ldFwiLFxuICBcIm9yZ1wiXG5dO1xuIiwidmFyIGludGVybmV0ID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGludGVybmV0O1xuaW50ZXJuZXQuZG9tYWluX3N1ZmZpeCA9IHJlcXVpcmUoXCIuL2RvbWFpbl9zdWZmaXhcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjIwMVwiLFxuICBcIjIwMlwiLFxuICBcIjIwM1wiLFxuICBcIjIwNVwiLFxuICBcIjIwNlwiLFxuICBcIjIwN1wiLFxuICBcIjIwOFwiLFxuICBcIjIwOVwiLFxuICBcIjIxMFwiLFxuICBcIjIxMlwiLFxuICBcIjIxM1wiLFxuICBcIjIxNFwiLFxuICBcIjIxNVwiLFxuICBcIjIxNlwiLFxuICBcIjIxN1wiLFxuICBcIjIxOFwiLFxuICBcIjIxOVwiLFxuICBcIjIyNFwiLFxuICBcIjIyNVwiLFxuICBcIjIyN1wiLFxuICBcIjIyOFwiLFxuICBcIjIyOVwiLFxuICBcIjIzMVwiLFxuICBcIjIzNFwiLFxuICBcIjIzOVwiLFxuICBcIjI0MFwiLFxuICBcIjI0OFwiLFxuICBcIjI1MVwiLFxuICBcIjI1MlwiLFxuICBcIjI1M1wiLFxuICBcIjI1NFwiLFxuICBcIjI1NlwiLFxuICBcIjI2MFwiLFxuICBcIjI2MlwiLFxuICBcIjI2N1wiLFxuICBcIjI2OVwiLFxuICBcIjI3MFwiLFxuICBcIjI3NlwiLFxuICBcIjI4MVwiLFxuICBcIjI4M1wiLFxuICBcIjMwMVwiLFxuICBcIjMwMlwiLFxuICBcIjMwM1wiLFxuICBcIjMwNFwiLFxuICBcIjMwNVwiLFxuICBcIjMwN1wiLFxuICBcIjMwOFwiLFxuICBcIjMwOVwiLFxuICBcIjMxMFwiLFxuICBcIjMxMlwiLFxuICBcIjMxM1wiLFxuICBcIjMxNFwiLFxuICBcIjMxNVwiLFxuICBcIjMxNlwiLFxuICBcIjMxN1wiLFxuICBcIjMxOFwiLFxuICBcIjMxOVwiLFxuICBcIjMyMFwiLFxuICBcIjMyMVwiLFxuICBcIjMyM1wiLFxuICBcIjMzMFwiLFxuICBcIjMzMVwiLFxuICBcIjMzNFwiLFxuICBcIjMzNlwiLFxuICBcIjMzN1wiLFxuICBcIjMzOVwiLFxuICBcIjM0N1wiLFxuICBcIjM1MVwiLFxuICBcIjM1MlwiLFxuICBcIjM2MFwiLFxuICBcIjM2MVwiLFxuICBcIjM4NlwiLFxuICBcIjQwMVwiLFxuICBcIjQwMlwiLFxuICBcIjQwNFwiLFxuICBcIjQwNVwiLFxuICBcIjQwNlwiLFxuICBcIjQwN1wiLFxuICBcIjQwOFwiLFxuICBcIjQwOVwiLFxuICBcIjQxMFwiLFxuICBcIjQxMlwiLFxuICBcIjQxM1wiLFxuICBcIjQxNFwiLFxuICBcIjQxNVwiLFxuICBcIjQxN1wiLFxuICBcIjQxOVwiLFxuICBcIjQyM1wiLFxuICBcIjQyNFwiLFxuICBcIjQyNVwiLFxuICBcIjQzNFwiLFxuICBcIjQzNVwiLFxuICBcIjQ0MFwiLFxuICBcIjQ0M1wiLFxuICBcIjQ0NVwiLFxuICBcIjQ2NFwiLFxuICBcIjQ2OVwiLFxuICBcIjQ3MFwiLFxuICBcIjQ3NVwiLFxuICBcIjQ3OFwiLFxuICBcIjQ3OVwiLFxuICBcIjQ4MFwiLFxuICBcIjQ4NFwiLFxuICBcIjUwMVwiLFxuICBcIjUwMlwiLFxuICBcIjUwM1wiLFxuICBcIjUwNFwiLFxuICBcIjUwNVwiLFxuICBcIjUwN1wiLFxuICBcIjUwOFwiLFxuICBcIjUwOVwiLFxuICBcIjUxMFwiLFxuICBcIjUxMlwiLFxuICBcIjUxM1wiLFxuICBcIjUxNVwiLFxuICBcIjUxNlwiLFxuICBcIjUxN1wiLFxuICBcIjUxOFwiLFxuICBcIjUyMFwiLFxuICBcIjUzMFwiLFxuICBcIjU0MFwiLFxuICBcIjU0MVwiLFxuICBcIjU1MVwiLFxuICBcIjU1N1wiLFxuICBcIjU1OVwiLFxuICBcIjU2MVwiLFxuICBcIjU2MlwiLFxuICBcIjU2M1wiLFxuICBcIjU2NFwiLFxuICBcIjU2N1wiLFxuICBcIjU3MFwiLFxuICBcIjU3MVwiLFxuICBcIjU3M1wiLFxuICBcIjU3NFwiLFxuICBcIjU4MFwiLFxuICBcIjU4NVwiLFxuICBcIjU4NlwiLFxuICBcIjYwMVwiLFxuICBcIjYwMlwiLFxuICBcIjYwM1wiLFxuICBcIjYwNVwiLFxuICBcIjYwNlwiLFxuICBcIjYwN1wiLFxuICBcIjYwOFwiLFxuICBcIjYwOVwiLFxuICBcIjYxMFwiLFxuICBcIjYxMlwiLFxuICBcIjYxNFwiLFxuICBcIjYxNVwiLFxuICBcIjYxNlwiLFxuICBcIjYxN1wiLFxuICBcIjYxOFwiLFxuICBcIjYxOVwiLFxuICBcIjYyMFwiLFxuICBcIjYyM1wiLFxuICBcIjYyNlwiLFxuICBcIjYzMFwiLFxuICBcIjYzMVwiLFxuICBcIjYzNlwiLFxuICBcIjY0MVwiLFxuICBcIjY0NlwiLFxuICBcIjY1MFwiLFxuICBcIjY1MVwiLFxuICBcIjY2MFwiLFxuICBcIjY2MVwiLFxuICBcIjY2MlwiLFxuICBcIjY2N1wiLFxuICBcIjY3OFwiLFxuICBcIjY4MlwiLFxuICBcIjcwMVwiLFxuICBcIjcwMlwiLFxuICBcIjcwM1wiLFxuICBcIjcwNFwiLFxuICBcIjcwNlwiLFxuICBcIjcwN1wiLFxuICBcIjcwOFwiLFxuICBcIjcxMlwiLFxuICBcIjcxM1wiLFxuICBcIjcxNFwiLFxuICBcIjcxNVwiLFxuICBcIjcxNlwiLFxuICBcIjcxN1wiLFxuICBcIjcxOFwiLFxuICBcIjcxOVwiLFxuICBcIjcyMFwiLFxuICBcIjcyNFwiLFxuICBcIjcyN1wiLFxuICBcIjczMVwiLFxuICBcIjczMlwiLFxuICBcIjczNFwiLFxuICBcIjczN1wiLFxuICBcIjc0MFwiLFxuICBcIjc1NFwiLFxuICBcIjc1N1wiLFxuICBcIjc2MFwiLFxuICBcIjc2M1wiLFxuICBcIjc2NVwiLFxuICBcIjc3MFwiLFxuICBcIjc3MlwiLFxuICBcIjc3M1wiLFxuICBcIjc3NFwiLFxuICBcIjc3NVwiLFxuICBcIjc4MVwiLFxuICBcIjc4NVwiLFxuICBcIjc4NlwiLFxuICBcIjgwMVwiLFxuICBcIjgwMlwiLFxuICBcIjgwM1wiLFxuICBcIjgwNFwiLFxuICBcIjgwNVwiLFxuICBcIjgwNlwiLFxuICBcIjgwOFwiLFxuICBcIjgxMFwiLFxuICBcIjgxMlwiLFxuICBcIjgxM1wiLFxuICBcIjgxNFwiLFxuICBcIjgxNVwiLFxuICBcIjgxNlwiLFxuICBcIjgxN1wiLFxuICBcIjgxOFwiLFxuICBcIjgyOFwiLFxuICBcIjgzMFwiLFxuICBcIjgzMVwiLFxuICBcIjgzMlwiLFxuICBcIjgzNVwiLFxuICBcIjg0M1wiLFxuICBcIjg0NVwiLFxuICBcIjg0N1wiLFxuICBcIjg0OFwiLFxuICBcIjg1MFwiLFxuICBcIjg1NlwiLFxuICBcIjg1N1wiLFxuICBcIjg1OFwiLFxuICBcIjg1OVwiLFxuICBcIjg2MFwiLFxuICBcIjg2MlwiLFxuICBcIjg2M1wiLFxuICBcIjg2NFwiLFxuICBcIjg2NVwiLFxuICBcIjg3MFwiLFxuICBcIjg3MlwiLFxuICBcIjg3OFwiLFxuICBcIjkwMVwiLFxuICBcIjkwM1wiLFxuICBcIjkwNFwiLFxuICBcIjkwNlwiLFxuICBcIjkwN1wiLFxuICBcIjkwOFwiLFxuICBcIjkwOVwiLFxuICBcIjkxMFwiLFxuICBcIjkxMlwiLFxuICBcIjkxM1wiLFxuICBcIjkxNFwiLFxuICBcIjkxNVwiLFxuICBcIjkxNlwiLFxuICBcIjkxN1wiLFxuICBcIjkxOFwiLFxuICBcIjkxOVwiLFxuICBcIjkyMFwiLFxuICBcIjkyNVwiLFxuICBcIjkyOFwiLFxuICBcIjkzMVwiLFxuICBcIjkzNlwiLFxuICBcIjkzN1wiLFxuICBcIjk0MFwiLFxuICBcIjk0MVwiLFxuICBcIjk0N1wiLFxuICBcIjk0OVwiLFxuICBcIjk1MlwiLFxuICBcIjk1NFwiLFxuICBcIjk1NlwiLFxuICBcIjk1OVwiLFxuICBcIjk3MFwiLFxuICBcIjk3MVwiLFxuICBcIjk3MlwiLFxuICBcIjk3M1wiLFxuICBcIjk3NVwiLFxuICBcIjk3OFwiLFxuICBcIjk3OVwiLFxuICBcIjk4MFwiLFxuICBcIjk4NFwiLFxuICBcIjk4NVwiLFxuICBcIjk4OVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyMDFcIixcbiAgXCIyMDJcIixcbiAgXCIyMDNcIixcbiAgXCIyMDVcIixcbiAgXCIyMDZcIixcbiAgXCIyMDdcIixcbiAgXCIyMDhcIixcbiAgXCIyMDlcIixcbiAgXCIyMTBcIixcbiAgXCIyMTJcIixcbiAgXCIyMTNcIixcbiAgXCIyMTRcIixcbiAgXCIyMTVcIixcbiAgXCIyMTZcIixcbiAgXCIyMTdcIixcbiAgXCIyMThcIixcbiAgXCIyMTlcIixcbiAgXCIyMjRcIixcbiAgXCIyMjVcIixcbiAgXCIyMjdcIixcbiAgXCIyMjhcIixcbiAgXCIyMjlcIixcbiAgXCIyMzFcIixcbiAgXCIyMzRcIixcbiAgXCIyMzlcIixcbiAgXCIyNDBcIixcbiAgXCIyNDhcIixcbiAgXCIyNTFcIixcbiAgXCIyNTJcIixcbiAgXCIyNTNcIixcbiAgXCIyNTRcIixcbiAgXCIyNTZcIixcbiAgXCIyNjBcIixcbiAgXCIyNjJcIixcbiAgXCIyNjdcIixcbiAgXCIyNjlcIixcbiAgXCIyNzBcIixcbiAgXCIyNzZcIixcbiAgXCIyODFcIixcbiAgXCIyODNcIixcbiAgXCIzMDFcIixcbiAgXCIzMDJcIixcbiAgXCIzMDNcIixcbiAgXCIzMDRcIixcbiAgXCIzMDVcIixcbiAgXCIzMDdcIixcbiAgXCIzMDhcIixcbiAgXCIzMDlcIixcbiAgXCIzMTBcIixcbiAgXCIzMTJcIixcbiAgXCIzMTNcIixcbiAgXCIzMTRcIixcbiAgXCIzMTVcIixcbiAgXCIzMTZcIixcbiAgXCIzMTdcIixcbiAgXCIzMThcIixcbiAgXCIzMTlcIixcbiAgXCIzMjBcIixcbiAgXCIzMjFcIixcbiAgXCIzMjNcIixcbiAgXCIzMzBcIixcbiAgXCIzMzFcIixcbiAgXCIzMzRcIixcbiAgXCIzMzZcIixcbiAgXCIzMzdcIixcbiAgXCIzMzlcIixcbiAgXCIzNDdcIixcbiAgXCIzNTFcIixcbiAgXCIzNTJcIixcbiAgXCIzNjBcIixcbiAgXCIzNjFcIixcbiAgXCIzODZcIixcbiAgXCI0MDFcIixcbiAgXCI0MDJcIixcbiAgXCI0MDRcIixcbiAgXCI0MDVcIixcbiAgXCI0MDZcIixcbiAgXCI0MDdcIixcbiAgXCI0MDhcIixcbiAgXCI0MDlcIixcbiAgXCI0MTBcIixcbiAgXCI0MTJcIixcbiAgXCI0MTNcIixcbiAgXCI0MTRcIixcbiAgXCI0MTVcIixcbiAgXCI0MTdcIixcbiAgXCI0MTlcIixcbiAgXCI0MjNcIixcbiAgXCI0MjRcIixcbiAgXCI0MjVcIixcbiAgXCI0MzRcIixcbiAgXCI0MzVcIixcbiAgXCI0NDBcIixcbiAgXCI0NDNcIixcbiAgXCI0NDVcIixcbiAgXCI0NjRcIixcbiAgXCI0NjlcIixcbiAgXCI0NzBcIixcbiAgXCI0NzVcIixcbiAgXCI0NzhcIixcbiAgXCI0NzlcIixcbiAgXCI0ODBcIixcbiAgXCI0ODRcIixcbiAgXCI1MDFcIixcbiAgXCI1MDJcIixcbiAgXCI1MDNcIixcbiAgXCI1MDRcIixcbiAgXCI1MDVcIixcbiAgXCI1MDdcIixcbiAgXCI1MDhcIixcbiAgXCI1MDlcIixcbiAgXCI1MTBcIixcbiAgXCI1MTJcIixcbiAgXCI1MTNcIixcbiAgXCI1MTVcIixcbiAgXCI1MTZcIixcbiAgXCI1MTdcIixcbiAgXCI1MThcIixcbiAgXCI1MjBcIixcbiAgXCI1MzBcIixcbiAgXCI1NDBcIixcbiAgXCI1NDFcIixcbiAgXCI1NTFcIixcbiAgXCI1NTdcIixcbiAgXCI1NTlcIixcbiAgXCI1NjFcIixcbiAgXCI1NjJcIixcbiAgXCI1NjNcIixcbiAgXCI1NjRcIixcbiAgXCI1NjdcIixcbiAgXCI1NzBcIixcbiAgXCI1NzFcIixcbiAgXCI1NzNcIixcbiAgXCI1NzRcIixcbiAgXCI1ODBcIixcbiAgXCI1ODVcIixcbiAgXCI1ODZcIixcbiAgXCI2MDFcIixcbiAgXCI2MDJcIixcbiAgXCI2MDNcIixcbiAgXCI2MDVcIixcbiAgXCI2MDZcIixcbiAgXCI2MDdcIixcbiAgXCI2MDhcIixcbiAgXCI2MDlcIixcbiAgXCI2MTBcIixcbiAgXCI2MTJcIixcbiAgXCI2MTRcIixcbiAgXCI2MTVcIixcbiAgXCI2MTZcIixcbiAgXCI2MTdcIixcbiAgXCI2MThcIixcbiAgXCI2MTlcIixcbiAgXCI2MjBcIixcbiAgXCI2MjNcIixcbiAgXCI2MjZcIixcbiAgXCI2MzBcIixcbiAgXCI2MzFcIixcbiAgXCI2MzZcIixcbiAgXCI2NDFcIixcbiAgXCI2NDZcIixcbiAgXCI2NTBcIixcbiAgXCI2NTFcIixcbiAgXCI2NjBcIixcbiAgXCI2NjFcIixcbiAgXCI2NjJcIixcbiAgXCI2NjdcIixcbiAgXCI2NzhcIixcbiAgXCI2ODJcIixcbiAgXCI3MDFcIixcbiAgXCI3MDJcIixcbiAgXCI3MDNcIixcbiAgXCI3MDRcIixcbiAgXCI3MDZcIixcbiAgXCI3MDdcIixcbiAgXCI3MDhcIixcbiAgXCI3MTJcIixcbiAgXCI3MTNcIixcbiAgXCI3MTRcIixcbiAgXCI3MTVcIixcbiAgXCI3MTZcIixcbiAgXCI3MTdcIixcbiAgXCI3MThcIixcbiAgXCI3MTlcIixcbiAgXCI3MjBcIixcbiAgXCI3MjRcIixcbiAgXCI3MjdcIixcbiAgXCI3MzFcIixcbiAgXCI3MzJcIixcbiAgXCI3MzRcIixcbiAgXCI3MzdcIixcbiAgXCI3NDBcIixcbiAgXCI3NTRcIixcbiAgXCI3NTdcIixcbiAgXCI3NjBcIixcbiAgXCI3NjNcIixcbiAgXCI3NjVcIixcbiAgXCI3NzBcIixcbiAgXCI3NzJcIixcbiAgXCI3NzNcIixcbiAgXCI3NzRcIixcbiAgXCI3NzVcIixcbiAgXCI3ODFcIixcbiAgXCI3ODVcIixcbiAgXCI3ODZcIixcbiAgXCI4MDFcIixcbiAgXCI4MDJcIixcbiAgXCI4MDNcIixcbiAgXCI4MDRcIixcbiAgXCI4MDVcIixcbiAgXCI4MDZcIixcbiAgXCI4MDhcIixcbiAgXCI4MTBcIixcbiAgXCI4MTJcIixcbiAgXCI4MTNcIixcbiAgXCI4MTRcIixcbiAgXCI4MTVcIixcbiAgXCI4MTZcIixcbiAgXCI4MTdcIixcbiAgXCI4MThcIixcbiAgXCI4MjhcIixcbiAgXCI4MzBcIixcbiAgXCI4MzFcIixcbiAgXCI4MzJcIixcbiAgXCI4MzVcIixcbiAgXCI4NDNcIixcbiAgXCI4NDVcIixcbiAgXCI4NDdcIixcbiAgXCI4NDhcIixcbiAgXCI4NTBcIixcbiAgXCI4NTZcIixcbiAgXCI4NTdcIixcbiAgXCI4NThcIixcbiAgXCI4NTlcIixcbiAgXCI4NjBcIixcbiAgXCI4NjJcIixcbiAgXCI4NjNcIixcbiAgXCI4NjRcIixcbiAgXCI4NjVcIixcbiAgXCI4NzBcIixcbiAgXCI4NzJcIixcbiAgXCI4NzhcIixcbiAgXCI5MDFcIixcbiAgXCI5MDNcIixcbiAgXCI5MDRcIixcbiAgXCI5MDZcIixcbiAgXCI5MDdcIixcbiAgXCI5MDhcIixcbiAgXCI5MDlcIixcbiAgXCI5MTBcIixcbiAgXCI5MTJcIixcbiAgXCI5MTNcIixcbiAgXCI5MTRcIixcbiAgXCI5MTVcIixcbiAgXCI5MTZcIixcbiAgXCI5MTdcIixcbiAgXCI5MThcIixcbiAgXCI5MTlcIixcbiAgXCI5MjBcIixcbiAgXCI5MjVcIixcbiAgXCI5MjhcIixcbiAgXCI5MzFcIixcbiAgXCI5MzZcIixcbiAgXCI5MzdcIixcbiAgXCI5NDBcIixcbiAgXCI5NDFcIixcbiAgXCI5NDdcIixcbiAgXCI5NDlcIixcbiAgXCI5NTJcIixcbiAgXCI5NTRcIixcbiAgXCI5NTZcIixcbiAgXCI5NTlcIixcbiAgXCI5NzBcIixcbiAgXCI5NzFcIixcbiAgXCI5NzJcIixcbiAgXCI5NzNcIixcbiAgXCI5NzVcIixcbiAgXCI5NzhcIixcbiAgXCI5NzlcIixcbiAgXCI5ODBcIixcbiAgXCI5ODRcIixcbiAgXCI5ODVcIixcbiAgXCI5ODlcIlxuXTtcbiIsInZhciBwaG9uZV9udW1iZXIgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gcGhvbmVfbnVtYmVyO1xucGhvbmVfbnVtYmVyLmFyZWFfY29kZSA9IHJlcXVpcmUoXCIuL2FyZWFfY29kZVwiKTtcbnBob25lX251bWJlci5leGNoYW5nZV9jb2RlID0gcmVxdWlyZShcIi4vZXhjaGFuZ2VfY29kZVwiKTtcbiIsIlxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5sb3JlbVxuICovXG52YXIgTG9yZW0gPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgSGVscGVycyA9IGZha2VyLmhlbHBlcnM7XG5cbiAgLyoqXG4gICAqIHdvcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS53b3JkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1cbiAgICovXG4gIHNlbGYud29yZCA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5sb3JlbS53b3Jkcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ud29yZHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bSBudW1iZXIgb2Ygd29yZHMsIGRlZmF1bHRzIHRvIDNcbiAgICovXG4gIHNlbGYud29yZHMgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgICBpZiAodHlwZW9mIG51bSA9PSAndW5kZWZpbmVkJykgeyBudW0gPSAzOyB9XG4gICAgICB2YXIgd29yZHMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICAgICAgd29yZHMucHVzaChmYWtlci5sb3JlbS53b3JkKCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdvcmRzLmpvaW4oJyAnKTtcbiAgfTtcblxuICAvKipcbiAgICogc2VudGVuY2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5zZW50ZW5jZVxuICAgKiBAcGFyYW0ge251bWJlcn0gd29yZENvdW50IGRlZmF1bHRzIHRvIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIDMgYW5kIDEwXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZVxuICAgKi9cbiAgc2VsZi5zZW50ZW5jZSA9IGZ1bmN0aW9uICh3b3JkQ291bnQsIHJhbmdlKSB7XG4gICAgICBpZiAodHlwZW9mIHdvcmRDb3VudCA9PSAndW5kZWZpbmVkJykgeyB3b3JkQ291bnQgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWluOiAzLCBtYXg6IDEwIH0pOyB9XG4gICAgICAvLyBpZiAodHlwZW9mIHJhbmdlID09ICd1bmRlZmluZWQnKSB7IHJhbmdlID0gNzsgfVxuXG4gICAgICAvLyBzdHJhbmdlIGlzc3VlIHdpdGggdGhlIG5vZGVfbWluX3Rlc3QgZmFpbGluZyBmb3IgY2FwdGlhbGl6ZSwgcGxlYXNlIGZpeCBhbmQgYWRkIGZha2VyLmxvcmVtLmJhY2tcbiAgICAgIC8vcmV0dXJuICBmYWtlci5sb3JlbS53b3Jkcyh3b3JkQ291bnQgKyBIZWxwZXJzLnJhbmRvbU51bWJlcihyYW5nZSkpLmpvaW4oJyAnKS5jYXBpdGFsaXplKCk7XG5cbiAgICAgIHZhciBzZW50ZW5jZSA9IGZha2VyLmxvcmVtLndvcmRzKHdvcmRDb3VudCk7XG4gICAgICByZXR1cm4gc2VudGVuY2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzZW50ZW5jZS5zbGljZSgxKSArICcuJztcbiAgfTtcblxuICAvKipcbiAgICogc2x1Z1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnNsdWdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdvcmRDb3VudCBudW1iZXIgb2Ygd29yZHMsIGRlZmF1bHRzIHRvIDNcbiAgICovXG4gIHNlbGYuc2x1ZyA9IGZ1bmN0aW9uICh3b3JkQ291bnQpIHtcbiAgICAgIHZhciB3b3JkcyA9IGZha2VyLmxvcmVtLndvcmRzKHdvcmRDb3VudCk7XG4gICAgICByZXR1cm4gSGVscGVycy5zbHVnaWZ5KHdvcmRzKTtcbiAgfTtcblxuICAvKipcbiAgICogc2VudGVuY2VzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0uc2VudGVuY2VzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZW50ZW5jZUNvdW50IGRlZmF1dGxzIHRvIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIDIgYW5kIDZcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvciBkZWZhdWx0cyB0byBgJyAnYFxuICAgKi9cbiAgc2VsZi5zZW50ZW5jZXMgPSBmdW5jdGlvbiAoc2VudGVuY2VDb3VudCwgc2VwYXJhdG9yKSB7XG4gICAgICBpZiAodHlwZW9mIHNlbnRlbmNlQ291bnQgPT09ICd1bmRlZmluZWQnKSB7IHNlbnRlbmNlQ291bnQgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWluOiAyLCBtYXg6IDYgfSk7fVxuICAgICAgaWYgKHR5cGVvZiBzZXBhcmF0b3IgPT0gJ3VuZGVmaW5lZCcpIHsgc2VwYXJhdG9yID0gXCIgXCI7IH1cbiAgICAgIHZhciBzZW50ZW5jZXMgPSBbXTtcbiAgICAgIGZvciAoc2VudGVuY2VDb3VudDsgc2VudGVuY2VDb3VudCA+IDA7IHNlbnRlbmNlQ291bnQtLSkge1xuICAgICAgICBzZW50ZW5jZXMucHVzaChmYWtlci5sb3JlbS5zZW50ZW5jZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZW50ZW5jZXMuam9pbihzZXBhcmF0b3IpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJhZ3JhcGhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5wYXJhZ3JhcGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlbnRlbmNlQ291bnQgZGVmYXVsdHMgdG8gM1xuICAgKi9cbiAgc2VsZi5wYXJhZ3JhcGggPSBmdW5jdGlvbiAoc2VudGVuY2VDb3VudCkge1xuICAgICAgaWYgKHR5cGVvZiBzZW50ZW5jZUNvdW50ID09ICd1bmRlZmluZWQnKSB7IHNlbnRlbmNlQ291bnQgPSAzOyB9XG4gICAgICByZXR1cm4gZmFrZXIubG9yZW0uc2VudGVuY2VzKHNlbnRlbmNlQ291bnQgKyBmYWtlci5yYW5kb20ubnVtYmVyKDMpKTtcbiAgfTtcblxuICAvKipcbiAgICogcGFyYWdyYXBoc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnBhcmFncmFwaHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhcmFncmFwaENvdW50IGRlZmF1bHRzIHRvIDNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvciBkZWZhdWx0cyB0byBgJ1xcbiBcXHInYFxuICAgKi9cbiAgc2VsZi5wYXJhZ3JhcGhzID0gZnVuY3Rpb24gKHBhcmFncmFwaENvdW50LCBzZXBhcmF0b3IpIHtcbiAgICBpZiAodHlwZW9mIHNlcGFyYXRvciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgc2VwYXJhdG9yID0gXCJcXG4gXFxyXCI7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGFyYWdyYXBoQ291bnQgPT0gJ3VuZGVmaW5lZCcpIHsgcGFyYWdyYXBoQ291bnQgPSAzOyB9XG4gICAgdmFyIHBhcmFncmFwaHMgPSBbXTtcbiAgICBmb3IgKHBhcmFncmFwaENvdW50OyBwYXJhZ3JhcGhDb3VudCA+IDA7IHBhcmFncmFwaENvdW50LS0pIHtcbiAgICAgICAgcGFyYWdyYXBocy5wdXNoKGZha2VyLmxvcmVtLnBhcmFncmFwaCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFncmFwaHMuam9pbihzZXBhcmF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgcmFuZG9tIHRleHQgYmFzZWQgb24gYSByYW5kb20gbG9yZW0gbWV0aG9kXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0udGV4dFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZXNcbiAgICovXG4gIHNlbGYudGV4dCA9IGZ1bmN0aW9uIGxvcmVtVGV4dCAodGltZXMpIHtcbiAgICB2YXIgbG9yZW1NZXRob2RzID0gWydsb3JlbS53b3JkJywgJ2xvcmVtLndvcmRzJywgJ2xvcmVtLnNlbnRlbmNlJywgJ2xvcmVtLnNlbnRlbmNlcycsICdsb3JlbS5wYXJhZ3JhcGgnLCAnbG9yZW0ucGFyYWdyYXBocycsICdsb3JlbS5saW5lcyddO1xuICAgIHZhciByYW5kb21Mb3JlbU1ldGhvZCA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQobG9yZW1NZXRob2RzKTtcbiAgICByZXR1cm4gZmFrZXIuZmFrZSgne3snICsgcmFuZG9tTG9yZW1NZXRob2QgKyAnfX0nKTtcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBsaW5lcyBvZiBsb3JlbSBzZXBhcmF0ZWQgYnkgYCdcXG4nYFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLmxpbmVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lQ291bnQgZGVmYXVsdHMgdG8gYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMSBhbmQgNVxuICAgKi9cbiAgc2VsZi5saW5lcyA9IGZ1bmN0aW9uIGxpbmVzIChsaW5lQ291bnQpIHtcbiAgICBpZiAodHlwZW9mIGxpbmVDb3VudCA9PT0gJ3VuZGVmaW5lZCcpIHsgbGluZUNvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMSwgbWF4OiA1IH0pO31cbiAgICByZXR1cm4gZmFrZXIubG9yZW0uc2VudGVuY2VzKGxpbmVDb3VudCwgJ1xcbicpXG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG5cbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBMb3JlbTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIubmFtZVxuICovXG5mdW5jdGlvbiBOYW1lIChmYWtlcikge1xuXG4gIC8qKlxuICAgKiBmaXJzdE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHttaXhlZH0gZ2VuZGVyXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmZpcnN0TmFtZSA9IGZ1bmN0aW9uIChnZW5kZXIpIHtcbiAgICBpZiAodHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUubWFsZV9maXJzdF9uYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZlbWFsZV9maXJzdF9uYW1lICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAvLyBzb21lIGxvY2FsZSBkYXRhc2V0cyAoIGxpa2UgcnUgKSBoYXZlIGZpcnN0X25hbWUgc3BsaXQgYnkgZ2VuZGVyLiBzaW5jZSB0aGUgbmFtZS5maXJzdF9uYW1lIGZpZWxkIGRvZXMgbm90IGV4aXN0IGluIHRoZXNlIGRhdGFzZXRzLFxuICAgICAgLy8gd2UgbXVzdCByYW5kb21seSBwaWNrIGEgbmFtZSBmcm9tIGVpdGhlciBnZW5kZXIgYXJyYXkgc28gZmFrZXIubmFtZS5maXJzdE5hbWUgd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgbG9jYWxlIGRhdGEgKCBhbmQgbm90IGZhbGxiYWNrIClcbiAgICAgIGlmICh0eXBlb2YgZ2VuZGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICBnZW5kZXIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEpO1xuICAgICAgfVxuICAgICAgaWYgKGdlbmRlciA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5tYWxlX2ZpcnN0X25hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5mZW1hbGVfZmlyc3RfbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUuZmlyc3RfbmFtZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGxhc3ROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgbGFzdE5hbWVcbiAgICogQHBhcmFtIHttaXhlZH0gZ2VuZGVyXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmxhc3ROYW1lID0gZnVuY3Rpb24gKGdlbmRlcikge1xuICAgIGlmICh0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5tYWxlX2xhc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5mZW1hbGVfbGFzdF9uYW1lICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAvLyBzb21lIGxvY2FsZSBkYXRhc2V0cyAoIGxpa2UgcnUgKSBoYXZlIGxhc3RfbmFtZSBzcGxpdCBieSBnZW5kZXIuIGkgaGF2ZSBubyBpZGVhIGhvdyBsYXN0IG5hbWVzIGNhbiBoYXZlIGdlbmRlcnMsIGJ1dCBhbHNvIGkgZG8gbm90IHNwZWFrIHJ1c3NpYW5cbiAgICAgIC8vIHNlZSBhYm92ZSBjb21tZW50IG9mIGZpcnN0TmFtZSBtZXRob2RcbiAgICAgIGlmICh0eXBlb2YgZ2VuZGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICBnZW5kZXIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEpO1xuICAgICAgfVxuICAgICAgaWYgKGdlbmRlciA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5tYWxlX2xhc3RfbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5mZW1hbGVfbGFzdF9uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5sYXN0X25hbWUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmaW5kTmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZpbmROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhc3ROYW1lXG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5maW5kTmFtZSA9IGZ1bmN0aW9uIChmaXJzdE5hbWUsIGxhc3ROYW1lLCBnZW5kZXIpIHtcbiAgICAgIHZhciByID0gZmFrZXIucmFuZG9tLm51bWJlcig4KTtcbiAgICAgIHZhciBwcmVmaXgsIHN1ZmZpeDtcbiAgICAgIC8vIGluIHBhcnRpY3VsYXIgbG9jYWxlcyBmaXJzdCBhbmQgbGFzdCBuYW1lcyBzcGxpdCBieSBnZW5kZXIsXG4gICAgICAvLyB0aHVzIHdlIGtlZXAgY29uc2lzdGVuY3kgYnkgcGFzc2luZyAwIGFzIG1hbGUgYW5kIDEgYXMgZmVtYWxlXG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGZpcnN0TmFtZSA9IGZpcnN0TmFtZSB8fCBmYWtlci5uYW1lLmZpcnN0TmFtZShnZW5kZXIpO1xuICAgICAgbGFzdE5hbWUgPSBsYXN0TmFtZSB8fCBmYWtlci5uYW1lLmxhc3ROYW1lKGdlbmRlcik7XG4gICAgICBzd2l0Y2ggKHIpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICBwcmVmaXggPSBmYWtlci5uYW1lLnByZWZpeChnZW5kZXIpO1xuICAgICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIFwiIFwiICsgZmlyc3ROYW1lICsgXCIgXCIgKyBsYXN0TmFtZTtcbiAgICAgICAgICB9XG4gICAgICBjYXNlIDE6XG4gICAgICAgICAgc3VmZml4ID0gZmFrZXIubmFtZS5zdWZmaXgoZ2VuZGVyKTtcbiAgICAgICAgICBpZiAoc3VmZml4KSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaXJzdE5hbWUgKyBcIiBcIiArIGxhc3ROYW1lICsgXCIgXCIgKyBzdWZmaXg7XG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlyc3ROYW1lICsgXCIgXCIgKyBsYXN0TmFtZTtcbiAgfTtcblxuICAvKipcbiAgICogam9iVGl0bGVcbiAgICpcbiAgICogQG1ldGhvZCBqb2JUaXRsZVxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5qb2JUaXRsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIGZha2VyLm5hbWUuam9iRGVzY3JpcHRvcigpICsgXCIgXCIgK1xuICAgICAgZmFrZXIubmFtZS5qb2JBcmVhKCkgKyBcIiBcIiArXG4gICAgICBmYWtlci5uYW1lLmpvYlR5cGUoKTtcbiAgfTtcbiAgXG4gIC8qKlxuICAgKiBwcmVmaXhcbiAgICpcbiAgICogQG1ldGhvZCBwcmVmaXhcbiAgICogQHBhcmFtIHttaXhlZH0gZ2VuZGVyXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLnByZWZpeCA9IGZ1bmN0aW9uIChnZW5kZXIpIHtcbiAgICBpZiAodHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUubWFsZV9wcmVmaXggIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUuZmVtYWxlX3ByZWZpeCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKHR5cGVvZiBnZW5kZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGdlbmRlciA9IGZha2VyLnJhbmRvbS5udW1iZXIoMSk7XG4gICAgICB9XG4gICAgICBpZiAoZ2VuZGVyID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLm1hbGVfcHJlZml4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLmZlbWFsZV9wcmVmaXgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnByZWZpeCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIHN1ZmZpeFxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5zdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnN1ZmZpeCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHRpdGxlXG4gICAqXG4gICAqIEBtZXRob2QgdGl0bGVcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMudGl0bGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yICA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5kZXNjcmlwdG9yKSxcbiAgICAgICAgICBsZXZlbCAgICAgICA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5sZXZlbCksXG4gICAgICAgICAgam9iICAgICAgICAgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuam9iKTtcblxuICAgICAgcmV0dXJuIGRlc2NyaXB0b3IgKyBcIiBcIiArIGxldmVsICsgXCIgXCIgKyBqb2I7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYkRlc2NyaXB0b3JcbiAgICpcbiAgICogQG1ldGhvZCBqb2JEZXNjcmlwdG9yXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYkRlc2NyaXB0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5kZXNjcmlwdG9yKTtcbiAgfTtcblxuICAvKipcbiAgICogam9iQXJlYVxuICAgKlxuICAgKiBAbWV0aG9kIGpvYkFyZWFcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuam9iQXJlYSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmxldmVsKTtcbiAgfTtcblxuICAvKipcbiAgICogam9iVHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGpvYlR5cGVcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuam9iVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmpvYik7XG4gIH07XG5cbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBOYW1lO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5waG9uZVxuICovXG52YXIgUGhvbmUgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBwaG9uZU51bWJlclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnBob25lLnBob25lTnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICovXG4gIHNlbGYucGhvbmVOdW1iZXIgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgZmFrZXIucGhvbmUucGhvbmVGb3JtYXRzKCk7XG4gICAgICByZXR1cm4gZmFrZXIuaGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihmb3JtYXQpO1xuICB9O1xuXG4gIC8vIEZJWE1FOiB0aGlzIGlzIHN0cmFuZ2UgcGFzc2luZyBpbiBhbiBhcnJheSBpbmRleC5cbiAgLyoqXG4gICAqIHBob25lTnVtYmVyRm9ybWF0XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucGhvbmUucGhvbmVGb3JtYXRzQXJyYXlJbmRleFxuICAgKiBAcGFyYW0gcGhvbmVGb3JtYXRzQXJyYXlJbmRleFxuICAgKi9cbiAgc2VsZi5waG9uZU51bWJlckZvcm1hdCA9IGZ1bmN0aW9uIChwaG9uZUZvcm1hdHNBcnJheUluZGV4KSB7XG4gICAgICBwaG9uZUZvcm1hdHNBcnJheUluZGV4ID0gcGhvbmVGb3JtYXRzQXJyYXlJbmRleCB8fCAwO1xuICAgICAgcmV0dXJuIGZha2VyLmhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoZmFrZXIuZGVmaW5pdGlvbnMucGhvbmVfbnVtYmVyLmZvcm1hdHNbcGhvbmVGb3JtYXRzQXJyYXlJbmRleF0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwaG9uZUZvcm1hdHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5waG9uZS5waG9uZUZvcm1hdHNcbiAgICovXG4gIHNlbGYucGhvbmVGb3JtYXRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLnBob25lX251bWJlci5mb3JtYXRzKTtcbiAgfTtcbiAgXG4gIHJldHVybiBzZWxmO1xuXG59O1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IFBob25lOyIsInZhciBtZXJzZW5uZSA9IHJlcXVpcmUoJy4uL3ZlbmRvci9tZXJzZW5uZScpO1xuXG4vKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLnJhbmRvbVxuICovXG5mdW5jdGlvbiBSYW5kb20gKGZha2VyLCBzZWVkKSB7XG4gIC8vIFVzZSBhIHVzZXIgcHJvdmlkZWQgc2VlZCBpZiBpdCBleGlzdHNcbiAgaWYgKHNlZWQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWVkKSAmJiBzZWVkLmxlbmd0aCkge1xuICAgICAgbWVyc2VubmUuc2VlZF9hcnJheShzZWVkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBtZXJzZW5uZS5zZWVkKHNlZWQpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogcmV0dXJucyBhIHNpbmdsZSByYW5kb20gbnVtYmVyIGJhc2VkIG9uIGEgbWF4IG51bWJlciBvciByYW5nZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5udW1iZXJcbiAgICogQHBhcmFtIHttaXhlZH0gb3B0aW9uc1xuICAgKi9cbiAgdGhpcy5udW1iZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcIm51bWJlclwiKSB7XG4gICAgICBvcHRpb25zID0ge1xuICAgICAgICBtYXg6IG9wdGlvbnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBvcHRpb25zLm1pbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1heCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgb3B0aW9ucy5tYXggPSA5OTk5OTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnByZWNpc2lvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgb3B0aW9ucy5wcmVjaXNpb24gPSAxO1xuICAgIH1cblxuICAgIC8vIE1ha2UgdGhlIHJhbmdlIGluY2x1c2l2ZSBvZiB0aGUgbWF4IHZhbHVlXG4gICAgdmFyIG1heCA9IG9wdGlvbnMubWF4O1xuICAgIGlmIChtYXggPj0gMCkge1xuICAgICAgbWF4ICs9IG9wdGlvbnMucHJlY2lzaW9uO1xuICAgIH1cblxuICAgIHZhciByYW5kb21OdW1iZXIgPSBvcHRpb25zLnByZWNpc2lvbiAqIE1hdGguZmxvb3IoXG4gICAgICBtZXJzZW5uZS5yYW5kKG1heCAvIG9wdGlvbnMucHJlY2lzaW9uLCBvcHRpb25zLm1pbiAvIG9wdGlvbnMucHJlY2lzaW9uKSk7XG5cbiAgICByZXR1cm4gcmFuZG9tTnVtYmVyO1xuXG4gIH1cblxuICAvKipcbiAgICogdGFrZXMgYW4gYXJyYXkgYW5kIHJldHVybnMgYSByYW5kb20gZWxlbWVudCBvZiB0aGUgYXJyYXlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50XG4gICAqIEBwYXJhbSB7YXJyYXl9IGFycmF5XG4gICAqL1xuICB0aGlzLmFycmF5RWxlbWVudCA9IGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgYXJyYXkgPSBhcnJheSB8fCBbXCJhXCIsIFwiYlwiLCBcImNcIl07XG4gICAgICB2YXIgciA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtYXg6IGFycmF5Lmxlbmd0aCAtIDEgfSk7XG4gICAgICByZXR1cm4gYXJyYXlbcl07XG4gIH1cblxuICAvKipcbiAgICogdGFrZXMgYW4gb2JqZWN0IGFuZCByZXR1cm5zIHRoZSByYW5kb21seSBrZXkgb3IgdmFsdWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ub2JqZWN0RWxlbWVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7bWl4ZWR9IGZpZWxkXG4gICAqL1xuICB0aGlzLm9iamVjdEVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0LCBmaWVsZCkge1xuICAgICAgb2JqZWN0ID0gb2JqZWN0IHx8IHsgXCJmb29cIjogXCJiYXJcIiwgXCJ0b29cIjogXCJjYXJcIiB9O1xuICAgICAgdmFyIGFycmF5ID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICAgIHZhciBrZXkgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGFycmF5KTtcblxuICAgICAgcmV0dXJuIGZpZWxkID09PSBcImtleVwiID8ga2V5IDogb2JqZWN0W2tleV07XG4gIH1cblxuICAvKipcbiAgICogdXVpZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS51dWlkXG4gICAqL1xuICB0aGlzLnV1aWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgUkZDNDEyMl9URU1QTEFURSA9ICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnO1xuICAgICAgdmFyIHJlcGxhY2VQbGFjZWhvbGRlcnMgPSBmdW5jdGlvbiAocGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICB2YXIgcmFuZG9tID0gc2VsZi5udW1iZXIoeyBtaW46IDAsIG1heDogMTUgfSk7XG4gICAgICAgICAgdmFyIHZhbHVlID0gcGxhY2Vob2xkZXIgPT0gJ3gnID8gcmFuZG9tIDogKHJhbmRvbSAmMHgzIHwgMHg4KTtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoMTYpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBSRkM0MTIyX1RFTVBMQVRFLnJlcGxhY2UoL1t4eV0vZywgcmVwbGFjZVBsYWNlaG9sZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogYm9vbGVhblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5ib29sZWFuXG4gICAqL1xuICB0aGlzLmJvb2xlYW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gISFmYWtlci5yYW5kb20ubnVtYmVyKDEpXG4gIH1cblxuICAvLyBUT0RPOiBoYXZlIGFiaWxpdHkgdG8gcmV0dXJuIHNwZWNpZmljIHR5cGUgb2Ygd29yZD8gQXMgaW46IG5vdW4sIGFkamVjdGl2ZSwgdmVyYiwgZXRjXG4gIC8qKlxuICAgKiB3b3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLndvcmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICovXG4gIHRoaXMud29yZCA9IGZ1bmN0aW9uIHJhbmRvbVdvcmQgKHR5cGUpIHtcblxuICAgIHZhciB3b3JkTWV0aG9kcyA9IFtcbiAgICAnY29tbWVyY2UuZGVwYXJ0bWVudCcsXG4gICAgJ2NvbW1lcmNlLnByb2R1Y3ROYW1lJyxcbiAgICAnY29tbWVyY2UucHJvZHVjdEFkamVjdGl2ZScsXG4gICAgJ2NvbW1lcmNlLnByb2R1Y3RNYXRlcmlhbCcsXG4gICAgJ2NvbW1lcmNlLnByb2R1Y3QnLFxuICAgICdjb21tZXJjZS5jb2xvcicsXG5cbiAgICAnY29tcGFueS5jYXRjaFBocmFzZUFkamVjdGl2ZScsXG4gICAgJ2NvbXBhbnkuY2F0Y2hQaHJhc2VEZXNjcmlwdG9yJyxcbiAgICAnY29tcGFueS5jYXRjaFBocmFzZU5vdW4nLFxuICAgICdjb21wYW55LmJzQWRqZWN0aXZlJyxcbiAgICAnY29tcGFueS5ic0J1enonLFxuICAgICdjb21wYW55LmJzTm91bicsXG4gICAgJ2FkZHJlc3Muc3RyZWV0U3VmZml4JyxcbiAgICAnYWRkcmVzcy5jb3VudHknLFxuICAgICdhZGRyZXNzLmNvdW50cnknLFxuICAgICdhZGRyZXNzLnN0YXRlJyxcblxuICAgICdmaW5hbmNlLmFjY291bnROYW1lJyxcbiAgICAnZmluYW5jZS50cmFuc2FjdGlvblR5cGUnLFxuICAgICdmaW5hbmNlLmN1cnJlbmN5TmFtZScsXG5cbiAgICAnaGFja2VyLm5vdW4nLFxuICAgICdoYWNrZXIudmVyYicsXG4gICAgJ2hhY2tlci5hZGplY3RpdmUnLFxuICAgICdoYWNrZXIuaW5ndmVyYicsXG4gICAgJ2hhY2tlci5hYmJyZXZpYXRpb24nLFxuXG4gICAgJ25hbWUuam9iRGVzY3JpcHRvcicsXG4gICAgJ25hbWUuam9iQXJlYScsXG4gICAgJ25hbWUuam9iVHlwZSddO1xuXG4gICAgLy8gcmFuZG9tbHkgcGljayBmcm9tIHRoZSBtYW55IGZha2VyIG1ldGhvZHMgdGhhdCBjYW4gZ2VuZXJhdGUgd29yZHNcbiAgICB2YXIgcmFuZG9tV29yZE1ldGhvZCA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQod29yZE1ldGhvZHMpO1xuICAgIHJldHVybiBmYWtlci5mYWtlKCd7eycgKyByYW5kb21Xb3JkTWV0aG9kICsgJ319Jyk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiByYW5kb21Xb3Jkc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS53b3Jkc1xuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgZGVmYXVsdHMgdG8gYSByYW5kb20gdmFsdWUgYmV0d2VlbiAxIGFuZCAzXG4gICAqL1xuICB0aGlzLndvcmRzID0gZnVuY3Rpb24gcmFuZG9tV29yZHMgKGNvdW50KSB7XG4gICAgdmFyIHdvcmRzID0gW107XG4gICAgaWYgKHR5cGVvZiBjb3VudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY291bnQgPSBmYWtlci5yYW5kb20ubnVtYmVyKHttaW46MSwgbWF4OiAzfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpPGNvdW50OyBpKyspIHtcbiAgICAgIHdvcmRzLnB1c2goZmFrZXIucmFuZG9tLndvcmQoKSk7XG4gICAgfVxuICAgIHJldHVybiB3b3Jkcy5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogbG9jYWxlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmltYWdlXG4gICAqL1xuICB0aGlzLmltYWdlID0gZnVuY3Rpb24gcmFuZG9tSW1hZ2UgKCkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxvY2FsZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5sb2NhbGVcbiAgICovXG4gIHRoaXMubG9jYWxlID0gZnVuY3Rpb24gcmFuZG9tTG9jYWxlICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChPYmplY3Qua2V5cyhmYWtlci5sb2NhbGVzKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFscGhhTnVtZXJpY1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5hbHBoYU51bWVyaWNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IGRlZmF1bHRzIHRvIDFcbiAgICovXG4gIHRoaXMuYWxwaGFOdW1lcmljID0gZnVuY3Rpb24gYWxwaGFOdW1lcmljKGNvdW50KSB7XG4gICAgaWYgKHR5cGVvZiBjb3VudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY291bnQgPSAxO1xuICAgIH1cblxuICAgIHZhciB3aG9sZVN0cmluZyA9IFwiXCI7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIHdob2xlU3RyaW5nICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoW1wiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcImFcIiwgXCJiXCIsIFwiY1wiLCBcImRcIiwgXCJlXCIsIFwiZlwiLCBcImdcIiwgXCJoXCIsIFwiaVwiLCBcImpcIiwgXCJrXCIsIFwibFwiLCBcIm1cIiwgXCJuXCIsIFwib1wiLCBcInBcIiwgXCJxXCIsIFwiclwiLCBcInNcIiwgXCJ0XCIsIFwidVwiLCBcInZcIiwgXCJ3XCIsIFwieFwiLCBcInlcIiwgXCJ6XCJdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2hvbGVTdHJpbmc7XG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG5cbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBSYW5kb207XG4iLCIvLyBnZW5lcmF0ZXMgZmFrZSBkYXRhIGZvciBtYW55IGNvbXB1dGVyIHN5c3RlbXMgcHJvcGVydGllc1xuXG4vKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLnN5c3RlbVxuICovXG5mdW5jdGlvbiBTeXN0ZW0gKGZha2VyKSB7XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlcyBhIGZpbGUgbmFtZSB3aXRoIGV4dGVuc2lvbiBvciBvcHRpb25hbCB0eXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmZpbGVOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICovXG4gIHRoaXMuZmlsZU5hbWUgPSBmdW5jdGlvbiAoZXh0LCB0eXBlKSB7XG4gICAgdmFyIHN0ciA9IGZha2VyLmZha2UoXCJ7e3JhbmRvbS53b3Jkc319Lnt7c3lzdGVtLmZpbGVFeHR9fVwiKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvIC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXCwvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwtL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcXFwvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwvL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogY29tbW9uRmlsZU5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uY29tbW9uRmlsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAgKi9cbiAgdGhpcy5jb21tb25GaWxlTmFtZSA9IGZ1bmN0aW9uIChleHQsIHR5cGUpIHtcbiAgICB2YXIgc3RyID0gZmFrZXIucmFuZG9tLndvcmRzKCkgKyBcIi5cIiArIChleHQgfHwgZmFrZXIuc3lzdGVtLmNvbW1vbkZpbGVFeHQoKSk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyAvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwsL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLS9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXFxcL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIG1pbWVUeXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLm1pbWVUeXBlXG4gICAqL1xuICB0aGlzLm1pbWVUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KE9iamVjdC5rZXlzKGZha2VyLmRlZmluaXRpb25zLnN5c3RlbS5taW1lVHlwZXMpKTtcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBhIGNvbW1vbmx5IHVzZWQgZmlsZSB0eXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmNvbW1vbkZpbGVUeXBlXG4gICAqL1xuICB0aGlzLmNvbW1vbkZpbGVUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlcyA9IFsndmlkZW8nLCAnYXVkaW8nLCAnaW1hZ2UnLCAndGV4dCcsICdhcHBsaWNhdGlvbiddO1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHR5cGVzKVxuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgY29tbW9ubHkgdXNlZCBmaWxlIGV4dGVuc2lvbiBiYXNlZCBvbiBvcHRpb25hbCB0eXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmNvbW1vbkZpbGVFeHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICovXG4gIHRoaXMuY29tbW9uRmlsZUV4dCA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgdmFyIHR5cGVzID0gW1xuICAgICAgJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAnYXVkaW8vbXBlZycsXG4gICAgICAnYXVkaW8vd2F2JyxcbiAgICAgICdpbWFnZS9wbmcnLFxuICAgICAgJ2ltYWdlL2pwZWcnLFxuICAgICAgJ2ltYWdlL2dpZicsXG4gICAgICAndmlkZW8vbXA0JyxcbiAgICAgICd2aWRlby9tcGVnJyxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgXTtcbiAgICByZXR1cm4gZmFrZXIuc3lzdGVtLmZpbGVFeHQoZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh0eXBlcykpO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIHJldHVybnMgYW55IGZpbGUgdHlwZSBhdmFpbGFibGUgYXMgbWltZS10eXBlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmZpbGVUeXBlXG4gICAqL1xuICB0aGlzLmZpbGVUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlcyA9IFtdO1xuICAgIHZhciBtaW1lcyA9IGZha2VyLmRlZmluaXRpb25zLnN5c3RlbS5taW1lVHlwZXM7XG4gICAgT2JqZWN0LmtleXMobWltZXMpLmZvckVhY2goZnVuY3Rpb24obSl7XG4gICAgICB2YXIgcGFydHMgPSBtLnNwbGl0KCcvJyk7XG4gICAgICBpZiAodHlwZXMuaW5kZXhPZihwYXJ0c1swXSkgPT09IC0xKSB7XG4gICAgICAgIHR5cGVzLnB1c2gocGFydHNbMF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHR5cGVzKTtcbiAgfTtcblxuICAvKipcbiAgICogZmlsZUV4dFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlRXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZVxuICAgKi9cbiAgdGhpcy5maWxlRXh0ID0gZnVuY3Rpb24gKG1pbWVUeXBlKSB7XG4gICAgdmFyIGV4dHMgPSBbXTtcbiAgICB2YXIgbWltZXMgPSBmYWtlci5kZWZpbml0aW9ucy5zeXN0ZW0ubWltZVR5cGVzO1xuXG4gICAgLy8gZ2V0IHNwZWNpZmljIGV4dCBieSBtaW1lLXR5cGVcbiAgICBpZiAodHlwZW9mIG1pbWVzW21pbWVUeXBlXSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQobWltZXNbbWltZVR5cGVdLmV4dGVuc2lvbnMpO1xuICAgIH1cblxuICAgIC8vIHJlZHVjZSBtaW1lLXR5cGVzIHRvIHRob3NlIHdpdGggZmlsZS1leHRlbnNpb25zXG4gICAgT2JqZWN0LmtleXMobWltZXMpLmZvckVhY2goZnVuY3Rpb24obSl7XG4gICAgICBpZiAobWltZXNbbV0uZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIG1pbWVzW21dLmV4dGVuc2lvbnMuZm9yRWFjaChmdW5jdGlvbihleHQpe1xuICAgICAgICAgIGV4dHMucHVzaChleHQpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGV4dHMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBub3QgeWV0IGltcGxlbWVudGVkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmRpcmVjdG9yeVBhdGhcbiAgICovXG4gIHRoaXMuZGlyZWN0b3J5UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUT0RPXG4gIH07XG5cbiAgLyoqXG4gICAqIG5vdCB5ZXQgaW1wbGVtZW50ZWRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZmlsZVBhdGhcbiAgICovXG4gIHRoaXMuZmlsZVBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gVE9ET1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZW12ZXJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uc2VtdmVyXG4gICAqL1xuICB0aGlzLnNlbXZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbZmFrZXIucmFuZG9tLm51bWJlcig5KSxcbiAgICAgICAgICAgICAgZmFrZXIucmFuZG9tLm51bWJlcig5KSxcbiAgICAgICAgICAgICAgZmFrZXIucmFuZG9tLm51bWJlcig5KV0uam9pbignLicpO1xuICB9XG5cbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBTeXN0ZW07XG4iLCJ2YXIgRmFrZXIgPSByZXF1aXJlKCcuLi9saWInKTtcbnZhciBmYWtlciA9IG5ldyBGYWtlcih7IGxvY2FsZTogJ2VuX1VTJywgbG9jYWxlRmFsbGJhY2s6ICdlbicgfSk7XG5mYWtlci5sb2NhbGVzWydlbl9VUyddID0gcmVxdWlyZSgnLi4vbGliL2xvY2FsZXMvZW5fVVMnKTtcbmZha2VyLmxvY2FsZXNbJ2VuJ10gPSByZXF1aXJlKCcuLi9saWIvbG9jYWxlcy9lbicpO1xubW9kdWxlWydleHBvcnRzJ10gPSBmYWtlcjtcbiIsIi8vIHRoaXMgcHJvZ3JhbSBpcyBhIEphdmFTY3JpcHQgdmVyc2lvbiBvZiBNZXJzZW5uZSBUd2lzdGVyLCB3aXRoIGNvbmNlYWxtZW50IGFuZCBlbmNhcHN1bGF0aW9uIGluIGNsYXNzLFxuLy8gYW4gYWxtb3N0IHN0cmFpZ2h0IGNvbnZlcnNpb24gZnJvbSB0aGUgb3JpZ2luYWwgcHJvZ3JhbSwgbXQxOTkzN2FyLmMsXG4vLyB0cmFuc2xhdGVkIGJ5IHkuIG9rYWRhIG9uIEp1bHkgMTcsIDIwMDYuXG4vLyBhbmQgbW9kaWZpZWQgYSBsaXR0bGUgYXQganVseSAyMCwgMjAwNiwgYnV0IHRoZXJlIGFyZSBub3QgYW55IHN1YnN0YW50aWFsIGRpZmZlcmVuY2VzLlxuLy8gaW4gdGhpcyBwcm9ncmFtLCBwcm9jZWR1cmUgZGVzY3JpcHRpb25zIGFuZCBjb21tZW50cyBvZiBvcmlnaW5hbCBzb3VyY2UgY29kZSB3ZXJlIG5vdCByZW1vdmVkLlxuLy8gbGluZXMgY29tbWVudGVkIHdpdGggLy9jLy8gd2VyZSBvcmlnaW5hbGx5IGRlc2NyaXB0aW9ucyBvZiBjIHByb2NlZHVyZS4gYW5kIGEgZmV3IGZvbGxvd2luZyBsaW5lcyBhcmUgYXBwcm9wcmlhdGUgSmF2YVNjcmlwdCBkZXNjcmlwdGlvbnMuXG4vLyBsaW5lcyBjb21tZW50ZWQgd2l0aCAvKiBhbmQgKi8gYXJlIG9yaWdpbmFsIGNvbW1lbnRzLlxuLy8gbGluZXMgY29tbWVudGVkIHdpdGggLy8gYXJlIGFkZGl0aW9uYWwgY29tbWVudHMgaW4gdGhpcyBKYXZhU2NyaXB0IHZlcnNpb24uXG4vLyBiZWZvcmUgdXNpbmcgdGhpcyB2ZXJzaW9uLCBjcmVhdGUgYXQgbGVhc3Qgb25lIGluc3RhbmNlIG9mIE1lcnNlbm5lVHdpc3RlcjE5OTM3IGNsYXNzLCBhbmQgaW5pdGlhbGl6ZSB0aGUgZWFjaCBzdGF0ZSwgZ2l2ZW4gYmVsb3cgaW4gYyBjb21tZW50cywgb2YgYWxsIHRoZSBpbnN0YW5jZXMuXG4vKlxuICAgQSBDLXByb2dyYW0gZm9yIE1UMTk5MzcsIHdpdGggaW5pdGlhbGl6YXRpb24gaW1wcm92ZWQgMjAwMi8xLzI2LlxuICAgQ29kZWQgYnkgVGFrdWppIE5pc2hpbXVyYSBhbmQgTWFrb3RvIE1hdHN1bW90by5cblxuICAgQmVmb3JlIHVzaW5nLCBpbml0aWFsaXplIHRoZSBzdGF0ZSBieSB1c2luZyBpbml0X2dlbnJhbmQoc2VlZClcbiAgIG9yIGluaXRfYnlfYXJyYXkoaW5pdF9rZXksIGtleV9sZW5ndGgpLlxuXG4gICBDb3B5cmlnaHQgKEMpIDE5OTcgLSAyMDAyLCBNYWtvdG8gTWF0c3Vtb3RvIGFuZCBUYWt1amkgTmlzaGltdXJhLFxuICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgIGFyZSBtZXQ6XG5cbiAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgICAzLiBUaGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlXG4gICAgICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlblxuICAgICAgICBwZXJtaXNzaW9uLlxuXG4gICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gICBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUlxuICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsXG4gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sXG4gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuXG5cbiAgIEFueSBmZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuXG4gICBodHRwOi8vd3d3Lm1hdGguc2NpLmhpcm9zaGltYS11LmFjLmpwL35tLW1hdC9NVC9lbXQuaHRtbFxuICAgZW1haWw6IG0tbWF0IEAgbWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZSlcbiovXG5cbmZ1bmN0aW9uIE1lcnNlbm5lVHdpc3RlcjE5OTM3KClcbntcblx0LyogY29uc3RhbnRzIHNob3VsZCBiZSBzY29wZWQgaW5zaWRlIHRoZSBjbGFzcyAqL1xuXHR2YXIgTiwgTSwgTUFUUklYX0EsIFVQUEVSX01BU0ssIExPV0VSX01BU0s7XG5cdC8qIFBlcmlvZCBwYXJhbWV0ZXJzICovXG5cdC8vYy8vI2RlZmluZSBOIDYyNFxuXHQvL2MvLyNkZWZpbmUgTSAzOTdcblx0Ly9jLy8jZGVmaW5lIE1BVFJJWF9BIDB4OTkwOGIwZGZVTCAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovXG5cdC8vYy8vI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovXG5cdC8vYy8vI2RlZmluZSBMT1dFUl9NQVNLIDB4N2ZmZmZmZmZVTCAvKiBsZWFzdCBzaWduaWZpY2FudCByIGJpdHMgKi9cblx0TiA9IDYyNDtcblx0TSA9IDM5Nztcblx0TUFUUklYX0EgPSAweDk5MDhiMGRmOyAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovXG5cdFVQUEVSX01BU0sgPSAweDgwMDAwMDAwOyAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovXG5cdExPV0VSX01BU0sgPSAweDdmZmZmZmZmOyAvKiBsZWFzdCBzaWduaWZpY2FudCByIGJpdHMgKi9cblx0Ly9jLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBtdFtOXTsgLyogdGhlIGFycmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqL1xuXHQvL2MvL3N0YXRpYyBpbnQgbXRpPU4rMTsgLyogbXRpPT1OKzEgbWVhbnMgbXRbTl0gaXMgbm90IGluaXRpYWxpemVkICovXG5cdHZhciBtdCA9IG5ldyBBcnJheShOKTsgICAvKiB0aGUgYXJyYXkgZm9yIHRoZSBzdGF0ZSB2ZWN0b3IgICovXG5cdHZhciBtdGkgPSBOKzE7ICAgICAgICAgICAvKiBtdGk9PU4rMSBtZWFucyBtdFtOXSBpcyBub3QgaW5pdGlhbGl6ZWQgKi9cblxuXHRmdW5jdGlvbiB1bnNpZ25lZDMyIChuMSkgLy8gcmV0dXJucyBhIDMyLWJpdHMgdW5zaWdlZCBpbnRlZ2VyIGZyb20gYW4gb3BlcmFuZCB0byB3aGljaCBhcHBsaWVkIGEgYml0IG9wZXJhdG9yLlxuXHR7XG5cdFx0cmV0dXJuIG4xIDwgMCA/IChuMSBeIFVQUEVSX01BU0spICsgVVBQRVJfTUFTSyA6IG4xO1xuXHR9XG5cblx0ZnVuY3Rpb24gc3VidHJhY3Rpb24zMiAobjEsIG4yKSAvLyBlbXVsYXRlcyBsb3dlcmZsb3cgb2YgYSBjIDMyLWJpdHMgdW5zaWdlZCBpbnRlZ2VyIHZhcmlhYmxlLCBpbnN0ZWFkIG9mIHRoZSBvcGVyYXRvciAtLiB0aGVzZSBib3RoIGFyZ3VtZW50cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBleHByZXNzaWJsZSB1c2luZyB1bnNpZ25lZCAzMiBiaXRzLlxuXHR7XG5cdFx0cmV0dXJuIG4xIDwgbjIgPyB1bnNpZ25lZDMyKCgweDEwMDAwMDAwMCAtIChuMiAtIG4xKSkgJiAweGZmZmZmZmZmKSA6IG4xIC0gbjI7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRpdGlvbjMyIChuMSwgbjIpIC8vIGVtdWxhdGVzIG92ZXJmbG93IG9mIGEgYyAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciB2YXJpYWJsZSwgaW5zdGVhZCBvZiB0aGUgb3BlcmF0b3IgKy4gdGhlc2UgYm90aCBhcmd1bWVudHMgbXVzdCBiZSBub24tbmVnYXRpdmUgaW50ZWdlcnMgZXhwcmVzc2libGUgdXNpbmcgdW5zaWduZWQgMzIgYml0cy5cblx0e1xuXHRcdHJldHVybiB1bnNpZ25lZDMyKChuMSArIG4yKSAmIDB4ZmZmZmZmZmYpXG5cdH1cblxuXHRmdW5jdGlvbiBtdWx0aXBsaWNhdGlvbjMyIChuMSwgbjIpIC8vIGVtdWxhdGVzIG92ZXJmbG93IG9mIGEgYyAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciB2YXJpYWJsZSwgaW5zdGVhZCBvZiB0aGUgb3BlcmF0b3IgKi4gdGhlc2UgYm90aCBhcmd1bWVudHMgbXVzdCBiZSBub24tbmVnYXRpdmUgaW50ZWdlcnMgZXhwcmVzc2libGUgdXNpbmcgdW5zaWduZWQgMzIgYml0cy5cblx0e1xuXHRcdHZhciBzdW0gPSAwO1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMzI7ICsraSl7XG5cdFx0XHRpZiAoKG4xID4+PiBpKSAmIDB4MSl7XG5cdFx0XHRcdHN1bSA9IGFkZGl0aW9uMzIoc3VtLCB1bnNpZ25lZDMyKG4yIDw8IGkpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHN1bTtcblx0fVxuXG5cdC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovXG5cdC8vYy8vdm9pZCBpbml0X2dlbnJhbmQodW5zaWduZWQgbG9uZyBzKVxuXHR0aGlzLmluaXRfZ2VucmFuZCA9IGZ1bmN0aW9uIChzKVxuXHR7XG5cdFx0Ly9jLy9tdFswXT0gcyAmIDB4ZmZmZmZmZmY7XG5cdFx0bXRbMF09IHVuc2lnbmVkMzIocyAmIDB4ZmZmZmZmZmYpO1xuXHRcdGZvciAobXRpPTE7IG10aTxOOyBtdGkrKykge1xuXHRcdFx0bXRbbXRpXSA9XG5cdFx0XHQvL2MvLygxODEyNDMzMjUzICogKG10W210aS0xXSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7XG5cdFx0XHRhZGRpdGlvbjMyKG11bHRpcGxpY2F0aW9uMzIoMTgxMjQzMzI1MywgdW5zaWduZWQzMihtdFttdGktMV0gXiAobXRbbXRpLTFdID4+PiAzMCkpKSwgbXRpKTtcblx0XHRcdC8qIFNlZSBLbnV0aCBUQU9DUCBWb2wyLiAzcmQgRWQuIFAuMTA2IGZvciBtdWx0aXBsaWVyLiAqL1xuXHRcdFx0LyogSW4gdGhlIHByZXZpb3VzIHZlcnNpb25zLCBNU0JzIG9mIHRoZSBzZWVkIGFmZmVjdCAgICovXG5cdFx0XHQvKiBvbmx5IE1TQnMgb2YgdGhlIGFycmF5IG10W10uICAgICAgICAgICAgICAgICAgICAgICAgKi9cblx0XHRcdC8qIDIwMDIvMDEvMDkgbW9kaWZpZWQgYnkgTWFrb3RvIE1hdHN1bW90byAgICAgICAgICAgICAqL1xuXHRcdFx0Ly9jLy9tdFttdGldICY9IDB4ZmZmZmZmZmY7XG5cdFx0XHRtdFttdGldID0gdW5zaWduZWQzMihtdFttdGldICYgMHhmZmZmZmZmZik7XG5cdFx0XHQvKiBmb3IgPjMyIGJpdCBtYWNoaW5lcyAqL1xuXHRcdH1cblx0fVxuXG5cdC8qIGluaXRpYWxpemUgYnkgYW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi9cblx0LyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqL1xuXHQvKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi9cblx0Lyogc2xpZ2h0IGNoYW5nZSBmb3IgQysrLCAyMDA0LzIvMjYgKi9cblx0Ly9jLy92b2lkIGluaXRfYnlfYXJyYXkodW5zaWduZWQgbG9uZyBpbml0X2tleVtdLCBpbnQga2V5X2xlbmd0aClcblx0dGhpcy5pbml0X2J5X2FycmF5ID0gZnVuY3Rpb24gKGluaXRfa2V5LCBrZXlfbGVuZ3RoKVxuXHR7XG5cdFx0Ly9jLy9pbnQgaSwgaiwgaztcblx0XHR2YXIgaSwgaiwgaztcblx0XHQvL2MvL2luaXRfZ2VucmFuZCgxOTY1MDIxOCk7XG5cdFx0dGhpcy5pbml0X2dlbnJhbmQoMTk2NTAyMTgpO1xuXHRcdGk9MTsgaj0wO1xuXHRcdGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5ndGgpO1xuXHRcdGZvciAoOyBrOyBrLS0pIHtcblx0XHRcdC8vYy8vbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNSkpXG5cdFx0XHQvL2MvL1x0KyBpbml0X2tleVtqXSArIGo7IC8qIG5vbiBsaW5lYXIgKi9cblx0XHRcdG10W2ldID0gYWRkaXRpb24zMihhZGRpdGlvbjMyKHVuc2lnbmVkMzIobXRbaV0gXiBtdWx0aXBsaWNhdGlvbjMyKHVuc2lnbmVkMzIobXRbaS0xXSBeIChtdFtpLTFdID4+PiAzMCkpLCAxNjY0NTI1KSksIGluaXRfa2V5W2pdKSwgaik7XG5cdFx0XHRtdFtpXSA9XG5cdFx0XHQvL2MvL210W2ldICY9IDB4ZmZmZmZmZmY7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovXG5cdFx0XHR1bnNpZ25lZDMyKG10W2ldICYgMHhmZmZmZmZmZik7XG5cdFx0XHRpKys7IGorKztcblx0XHRcdGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9XG5cdFx0XHRpZiAoaj49a2V5X2xlbmd0aCkgaj0wO1xuXHRcdH1cblx0XHRmb3IgKGs9Ti0xOyBrOyBrLS0pIHtcblx0XHRcdC8vYy8vbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MSkpXG5cdFx0XHQvL2MvLy0gaTsgLyogbm9uIGxpbmVhciAqL1xuXHRcdFx0bXRbaV0gPSBzdWJ0cmFjdGlvbjMyKHVuc2lnbmVkMzIoKGRiZz1tdFtpXSkgXiBtdWx0aXBsaWNhdGlvbjMyKHVuc2lnbmVkMzIobXRbaS0xXSBeIChtdFtpLTFdID4+PiAzMCkpLCAxNTY2MDgzOTQxKSksIGkpO1xuXHRcdFx0Ly9jLy9tdFtpXSAmPSAweGZmZmZmZmZmOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqL1xuXHRcdFx0bXRbaV0gPSB1bnNpZ25lZDMyKG10W2ldICYgMHhmZmZmZmZmZik7XG5cdFx0XHRpKys7XG5cdFx0XHRpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfVxuXHRcdH1cblx0XHRtdFswXSA9IDB4ODAwMDAwMDA7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICovXG5cdH1cblxuICAgIC8qIG1vdmVkIG91dHNpZGUgb2YgZ2VucmFuZF9pbnQzMigpIGJ5IGp3YXR0ZSAyMDEwLTExLTE3OyBnZW5lcmF0ZSBsZXNzIGdhcmJhZ2UgKi9cbiAgICB2YXIgbWFnMDEgPSBbMHgwLCBNQVRSSVhfQV07XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZhbCAqL1xuXHQvL2MvL3Vuc2lnbmVkIGxvbmcgZ2VucmFuZF9pbnQzMih2b2lkKVxuXHR0aGlzLmdlbnJhbmRfaW50MzIgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy91bnNpZ25lZCBsb25nIHk7XG5cdFx0Ly9jLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBtYWcwMVsyXT17MHgwVUwsIE1BVFJJWF9BfTtcblx0XHR2YXIgeTtcblx0XHQvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovXG5cblx0XHRpZiAobXRpID49IE4pIHsgLyogZ2VuZXJhdGUgTiB3b3JkcyBhdCBvbmUgdGltZSAqL1xuXHRcdFx0Ly9jLy9pbnQga2s7XG5cdFx0XHR2YXIga2s7XG5cblx0XHRcdGlmIChtdGkgPT0gTisxKSAgIC8qIGlmIGluaXRfZ2VucmFuZCgpIGhhcyBub3QgYmVlbiBjYWxsZWQsICovXG5cdFx0XHRcdC8vYy8vaW5pdF9nZW5yYW5kKDU0ODkpOyAvKiBhIGRlZmF1bHQgaW5pdGlhbCBzZWVkIGlzIHVzZWQgKi9cblx0XHRcdFx0dGhpcy5pbml0X2dlbnJhbmQoNTQ4OSk7IC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAqL1xuXG5cdFx0XHRmb3IgKGtrPTA7a2s8Ti1NO2trKyspIHtcblx0XHRcdFx0Ly9jLy95ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7XG5cdFx0XHRcdC8vYy8vbXRba2tdID0gbXRba2srTV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFdO1xuXHRcdFx0XHR5ID0gdW5zaWduZWQzMigobXRba2tdJlVQUEVSX01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKSk7XG5cdFx0XHRcdG10W2trXSA9IHVuc2lnbmVkMzIobXRba2srTV0gXiAoeSA+Pj4gMSkgXiBtYWcwMVt5ICYgMHgxXSk7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKDtrazxOLTE7a2srKykge1xuXHRcdFx0XHQvL2MvL3kgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKTtcblx0XHRcdFx0Ly9jLy9tdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFdO1xuXHRcdFx0XHR5ID0gdW5zaWduZWQzMigobXRba2tdJlVQUEVSX01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKSk7XG5cdFx0XHRcdG10W2trXSA9IHVuc2lnbmVkMzIobXRba2srKE0tTildIF4gKHkgPj4+IDEpIF4gbWFnMDFbeSAmIDB4MV0pO1xuXHRcdFx0fVxuXHRcdFx0Ly9jLy95ID0gKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spO1xuXHRcdFx0Ly9jLy9tdFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MV07XG5cdFx0XHR5ID0gdW5zaWduZWQzMigobXRbTi0xXSZVUFBFUl9NQVNLKXwobXRbMF0mTE9XRVJfTUFTSykpO1xuXHRcdFx0bXRbTi0xXSA9IHVuc2lnbmVkMzIobXRbTS0xXSBeICh5ID4+PiAxKSBeIG1hZzAxW3kgJiAweDFdKTtcblx0XHRcdG10aSA9IDA7XG5cdFx0fVxuXG5cdFx0eSA9IG10W210aSsrXTtcblxuXHRcdC8qIFRlbXBlcmluZyAqL1xuXHRcdC8vYy8veSBePSAoeSA+PiAxMSk7XG5cdFx0Ly9jLy95IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4MDtcblx0XHQvL2MvL3kgXj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMDtcblx0XHQvL2MvL3kgXj0gKHkgPj4gMTgpO1xuXHRcdHkgPSB1bnNpZ25lZDMyKHkgXiAoeSA+Pj4gMTEpKTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKCh5IDw8IDcpICYgMHg5ZDJjNTY4MCkpO1xuXHRcdHkgPSB1bnNpZ25lZDMyKHkgXiAoKHkgPDwgMTUpICYgMHhlZmM2MDAwMCkpO1xuXHRcdHkgPSB1bnNpZ25lZDMyKHkgXiAoeSA+Pj4gMTgpKTtcblxuXHRcdHJldHVybiB5O1xuXHR9XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweDdmZmZmZmZmXS1pbnRlcnZhbCAqL1xuXHQvL2MvL2xvbmcgZ2VucmFuZF9pbnQzMSh2b2lkKVxuXHR0aGlzLmdlbnJhbmRfaW50MzEgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy9yZXR1cm4gKGdlbnJhbmRfaW50MzIoKT4+MSk7XG5cdFx0cmV0dXJuICh0aGlzLmdlbnJhbmRfaW50MzIoKT4+PjEpO1xuXHR9XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxXS1yZWFsLWludGVydmFsICovXG5cdC8vYy8vZG91YmxlIGdlbnJhbmRfcmVhbDEodm9pZClcblx0dGhpcy5nZW5yYW5kX3JlYWwxID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vcmV0dXJuIGdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTUuMCk7XG5cdFx0cmV0dXJuIHRoaXMuZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5NS4wKTtcblx0XHQvKiBkaXZpZGVkIGJ5IDJeMzItMSAqL1xuXHR9XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxKS1yZWFsLWludGVydmFsICovXG5cdC8vYy8vZG91YmxlIGdlbnJhbmRfcmVhbDIodm9pZClcblx0dGhpcy5nZW5yYW5kX3JlYWwyID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vcmV0dXJuIGdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0cmV0dXJuIHRoaXMuZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5Ni4wKTtcblx0XHQvKiBkaXZpZGVkIGJ5IDJeMzIgKi9cblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gKDAsMSktcmVhbC1pbnRlcnZhbCAqL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlYWwzKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZWFsMyA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiAoKGdlbnJhbmRfaW50MzIoKSkgKyAwLjUpKigxLjAvNDI5NDk2NzI5Ni4wKTtcblx0XHRyZXR1cm4gKCh0aGlzLmdlbnJhbmRfaW50MzIoKSkgKyAwLjUpKigxLjAvNDI5NDk2NzI5Ni4wKTtcblx0XHQvKiBkaXZpZGVkIGJ5IDJeMzIgKi9cblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSkgd2l0aCA1My1iaXQgcmVzb2x1dGlvbiovXG5cdC8vYy8vZG91YmxlIGdlbnJhbmRfcmVzNTModm9pZClcblx0dGhpcy5nZW5yYW5kX3JlczUzID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vdW5zaWduZWQgbG9uZyBhPWdlbnJhbmRfaW50MzIoKT4+NSwgYj1nZW5yYW5kX2ludDMyKCk+PjY7XG5cdFx0dmFyIGE9dGhpcy5nZW5yYW5kX2ludDMyKCk+Pj41LCBiPXRoaXMuZ2VucmFuZF9pbnQzMigpPj4+Njtcblx0XHRyZXR1cm4oYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKTtcblx0fVxuXHQvKiBUaGVzZSByZWFsIHZlcnNpb25zIGFyZSBkdWUgdG8gSXNha3UgV2FkYSwgMjAwMi8wMS8wOSBhZGRlZCAqL1xufVxuXG4vLyAgRXhwb3J0czogUHVibGljIEFQSVxuXG4vLyAgRXhwb3J0IHRoZSB0d2lzdGVyIGNsYXNzXG5leHBvcnRzLk1lcnNlbm5lVHdpc3RlcjE5OTM3ID0gTWVyc2VubmVUd2lzdGVyMTk5Mzc7XG5cbi8vICBFeHBvcnQgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzXG52YXIgZ2VuID0gbmV3IE1lcnNlbm5lVHdpc3RlcjE5OTM3O1xuZ2VuLmluaXRfZ2VucmFuZCgobmV3IERhdGUpLmdldFRpbWUoKSAlIDEwMDAwMDAwMDApO1xuXG4vLyBBZGRlZCBtYXgsIG1pbiByYW5nZSBmdW5jdGlvbmFsaXR5LCBNYXJhayBTcXVpcmVzIFNlcHQgMTEgMjAxNFxuZXhwb3J0cy5yYW5kID0gZnVuY3Rpb24obWF4LCBtaW4pIHtcbiAgICBpZiAobWF4ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgbWluID0gMDtcbiAgICAgICAgbWF4ID0gMzI3Njg7XG4gICAgICAgIH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcihnZW4uZ2VucmFuZF9yZWFsMigpICogKG1heCAtIG1pbikgKyBtaW4pO1xufVxuZXhwb3J0cy5zZWVkID0gZnVuY3Rpb24oUykge1xuICAgIGlmICh0eXBlb2YoUykgIT0gJ251bWJlcicpXG4gICAgICAgIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2VlZChTKSBtdXN0IHRha2UgbnVtZXJpYyBhcmd1bWVudDsgaXMgXCIgKyB0eXBlb2YoUykpO1xuICAgICAgICB9XG4gICAgZ2VuLmluaXRfZ2VucmFuZChTKTtcbn1cbmV4cG9ydHMuc2VlZF9hcnJheSA9IGZ1bmN0aW9uKEEpIHtcbiAgICBpZiAodHlwZW9mKEEpICE9ICdvYmplY3QnKVxuICAgICAgICB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNlZWRfYXJyYXkoQSkgbXVzdCB0YWtlIGFycmF5IG9mIG51bWJlcnM7IGlzIFwiICsgdHlwZW9mKEEpKTtcbiAgICAgICAgfVxuICAgIGdlbi5pbml0X2J5X2FycmF5KEEpO1xufVxuIiwiLypcblxuQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgSmVmZnJleSBNZWFsb1xuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWRcbmRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG50aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kXG50byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZVxuU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEVcbldBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQmFzZWQgbG9vc2VseSBvbiBMdWthIFB1c2ljJ3MgUEhQIFNjcmlwdDogaHR0cDovLzM2MHBlcmNlbnRzLmNvbS9wb3N0cy9waHAtcmFuZG9tLXVzZXItYWdlbnQtZ2VuZXJhdG9yL1xuXG5UaGUgbGljZW5zZSBmb3IgdGhhdCBzY3JpcHQgaXMgYXMgZm9sbG93czpcblxuXCJUSEUgQkVFUi1XQVJFIExJQ0VOU0VcIiAoUmV2aXNpb24gNDIpOlxuXG48cHVzaWM5M0BnbWFpbC5jb20+IHdyb3RlIHRoaXMgZmlsZS4gQXMgbG9uZyBhcyB5b3UgcmV0YWluIHRoaXMgbm90aWNlIHlvdSBjYW4gZG8gd2hhdGV2ZXIgeW91IHdhbnQgd2l0aCB0aGlzIHN0dWZmLlxuSWYgd2UgbWVldCBzb21lIGRheSwgYW5kIHlvdSB0aGluayB0aGlzIHN0dWZmIGlzIHdvcnRoIGl0LCB5b3UgY2FuIGJ1eSBtZSBhIGJlZXIgaW4gcmV0dXJuLiBMdWthIFB1c2ljXG4qL1xuXG5mdW5jdGlvbiBybmQoYSwgYikge1xuICAgIC8vY2FsbGluZyBybmQoKSB3aXRoIG5vIGFyZ3VtZW50cyBpcyBpZGVudGljYWwgdG8gcm5kKDAsIDEwMClcbiAgICBhID0gYSB8fCAwO1xuICAgIGIgPSBiIHx8IDEwMDtcblxuICAgIGlmICh0eXBlb2YgYiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGEgPT09ICdudW1iZXInKSB7XG4gICAgICAgIC8vcm5kKGludCBtaW4sIGludCBtYXgpIHJldHVybnMgaW50ZWdlciBiZXR3ZWVuIG1pbiwgbWF4XG4gICAgICAgIHJldHVybiAoZnVuY3Rpb24gKG1pbiwgbWF4KSB7XG4gICAgICAgICAgICBpZiAobWluID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGVjdGVkIG1pbiA8PSBtYXg7IGdvdCBtaW4gPSAnICsgbWluICsgJywgbWF4ID0gJyArIG1heCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcbiAgICAgICAgfShhLCBiKSk7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiKSB7XG4gICAgICAgIC8vcmV0dXJucyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYXJyYXkgKGEpLCBldmVuIHdlaWdodGluZ1xuICAgICAgICByZXR1cm4gYVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhLmxlbmd0aCldO1xuICAgIH1cblxuICAgIGlmIChhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvL3JldHVybnMgYSByYW5kb20ga2V5IGZyb20gdGhlIHBhc3NlZCBvYmplY3Q7IGtleXMgYXJlIHdlaWdodGVkIGJ5IHRoZSBkZWNpbWFsIHByb2JhYmlsaXR5IGluIHRoZWlyIHZhbHVlXG4gICAgICAgIHJldHVybiAoZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgdmFyIHJhbmQgPSBybmQoMCwgMTAwKSAvIDEwMCwgbWluID0gMCwgbWF4ID0gMCwga2V5LCByZXR1cm5fdmFsO1xuXG4gICAgICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gb2JqW2tleV0gKyBtaW47XG4gICAgICAgICAgICAgICAgICAgIHJldHVybl92YWwgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyYW5kID49IG1pbiAmJiByYW5kIDw9IG1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbWluID0gbWluICsgb2JqW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbDtcbiAgICAgICAgfShhKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIHJuZC4gKCcgKyAoYiA/IGEgKyAnLCAnICsgYiA6IGEpICsgJyknKTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tTGFuZygpIHtcbiAgICByZXR1cm4gcm5kKFsnQUInLCAnQUYnLCAnQU4nLCAnQVInLCAnQVMnLCAnQVonLCAnQkUnLCAnQkcnLCAnQk4nLCAnQk8nLCAnQlInLCAnQlMnLCAnQ0EnLCAnQ0UnLCAnQ08nLCAnQ1MnLFxuICAgICAgICAgICAgICAgICdDVScsICdDWScsICdEQScsICdERScsICdFTCcsICdFTicsICdFTycsICdFUycsICdFVCcsICdFVScsICdGQScsICdGSScsICdGSicsICdGTycsICdGUicsICdGWScsXG4gICAgICAgICAgICAgICAgJ0dBJywgJ0dEJywgJ0dMJywgJ0dWJywgJ0hFJywgJ0hJJywgJ0hSJywgJ0hUJywgJ0hVJywgJ0hZJywgJ0lEJywgJ0lTJywgJ0lUJywgJ0pBJywgJ0pWJywgJ0tBJyxcbiAgICAgICAgICAgICAgICAnS0cnLCAnS08nLCAnS1UnLCAnS1cnLCAnS1knLCAnTEEnLCAnTEInLCAnTEknLCAnTE4nLCAnTFQnLCAnTFYnLCAnTUcnLCAnTUsnLCAnTU4nLCAnTU8nLCAnTVMnLFxuICAgICAgICAgICAgICAgICdNVCcsICdNWScsICdOQicsICdORScsICdOTCcsICdOTicsICdOTycsICdPQycsICdQTCcsICdQVCcsICdSTScsICdSTycsICdSVScsICdTQycsICdTRScsICdTSycsXG4gICAgICAgICAgICAgICAgJ1NMJywgJ1NPJywgJ1NRJywgJ1NSJywgJ1NWJywgJ1NXJywgJ1RLJywgJ1RSJywgJ1RZJywgJ1VLJywgJ1VSJywgJ1VaJywgJ1ZJJywgJ1ZPJywgJ1lJJywgJ1pIJ10pO1xufVxuXG5mdW5jdGlvbiByYW5kb21Ccm93c2VyQW5kT1MoKSB7XG4gICAgdmFyIGJyb3dzZXIgPSBybmQoe1xuICAgICAgICBjaHJvbWU6ICAgIC40NTEzMjgxMDU2NixcbiAgICAgICAgaWV4cGxvcmVyOiAuMjc0NzcwNjE4MzYsXG4gICAgICAgIGZpcmVmb3g6ICAgLjE5Mzg0MTcwNjA4LFxuICAgICAgICBzYWZhcmk6ICAgIC4wNjE4Njc4MTExOCxcbiAgICAgICAgb3BlcmE6ICAgICAuMDE1NzQyMzY5NTVcbiAgICB9KSxcbiAgICBvcyA9IHtcbiAgICAgICAgY2hyb21lOiAge3dpbjogLjg5LCAgbWFjOiAuMDkgLCBsaW46IC4wMn0sXG4gICAgICAgIGZpcmVmb3g6IHt3aW46IC44MywgIG1hYzogLjE2LCAgbGluOiAuMDF9LFxuICAgICAgICBvcGVyYTogICB7d2luOiAuOTEsICBtYWM6IC4wMyAsIGxpbjogLjA2fSxcbiAgICAgICAgc2FmYXJpOiAge3dpbjogLjA0ICwgbWFjOiAuOTYgIH0sXG4gICAgICAgIGlleHBsb3JlcjogWyd3aW4nXVxuICAgIH07XG5cbiAgICByZXR1cm4gW2Jyb3dzZXIsIHJuZChvc1ticm93c2VyXSldO1xufVxuXG5mdW5jdGlvbiByYW5kb21Qcm9jKGFyY2gpIHtcbiAgICB2YXIgcHJvY3MgPSB7XG4gICAgICAgIGxpbjpbJ2k2ODYnLCAneDg2XzY0J10sXG4gICAgICAgIG1hYzogeydJbnRlbCcgOiAuNDgsICdQUEMnOiAuMDEsICdVOyBJbnRlbCc6LjQ4LCAnVTsgUFBDJyA6LjAxfSxcbiAgICAgICAgd2luOlsnJywgJ1dPVzY0JywgJ1dpbjY0OyB4NjQnXVxuICAgIH07XG4gICAgcmV0dXJuIHJuZChwcm9jc1thcmNoXSk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVJldmlzaW9uKGRvdHMpIHtcbiAgICB2YXIgcmV0dXJuX3ZhbCA9ICcnO1xuICAgIC8vZ2VuZXJhdGUgYSByYW5kb20gcmV2aXNpb25cbiAgICAvL2RvdHMgPSAyIHJldHVybnMgLngueSB3aGVyZSB4ICYgeSBhcmUgYmV0d2VlbiAwIGFuZCA5XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCBkb3RzOyB4KyspIHtcbiAgICAgICAgcmV0dXJuX3ZhbCArPSAnLicgKyBybmQoMCwgOSk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5fdmFsO1xufVxuXG52YXIgdmVyc2lvbl9zdHJpbmcgPSB7XG4gICAgbmV0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbcm5kKDEsIDQpLCBybmQoMCwgOSksIHJuZCgxMDAwMCwgOTk5OTkpLCBybmQoMCwgOSldLmpvaW4oJy4nKTtcbiAgICB9LFxuICAgIG50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoNSwgNikgKyAnLicgKyBybmQoMCwgMyk7XG4gICAgfSxcbiAgICBpZTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDcsIDExKTtcbiAgICB9LFxuICAgIHRyaWRlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCgzLCA3KSArICcuJyArIHJuZCgwLCAxKTtcbiAgICB9LFxuICAgIG9zeDogZnVuY3Rpb24gKGRlbGltKSB7XG4gICAgICAgIHJldHVybiBbMTAsIHJuZCg1LCAxMCksIHJuZCgwLCA5KV0uam9pbihkZWxpbSB8fCAnLicpO1xuICAgIH0sXG4gICAgY2hyb21lOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbcm5kKDEzLCAzOSksIDAsIHJuZCg4MDAsIDg5OSksIDBdLmpvaW4oJy4nKTtcbiAgICB9LFxuICAgIHByZXN0bzogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJzIuOS4nICsgcm5kKDE2MCwgMTkwKTtcbiAgICB9LFxuICAgIHByZXN0bzI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCgxMCwgMTIpICsgJy4wMCc7XG4gICAgfSxcbiAgICBzYWZhcmk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCg1MzEsIDUzOCkgKyAnLicgKyBybmQoMCwgMikgKyAnLicgKyBybmQoMCwyKTtcbiAgICB9XG59O1xuXG52YXIgYnJvd3NlciA9IHtcbiAgICBmaXJlZm94OiBmdW5jdGlvbiBmaXJlZm94KGFyY2gpIHtcbiAgICAgICAgLy9odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dlY2tvX3VzZXJfYWdlbnRfc3RyaW5nX3JlZmVyZW5jZVxuICAgICAgICB2YXIgZmlyZWZveF92ZXIgPSBybmQoNSwgMTUpICsgcmFuZG9tUmV2aXNpb24oMiksXG4gICAgICAgICAgICBnZWNrb192ZXIgPSAnR2Vja28vMjAxMDAxMDEgRmlyZWZveC8nICsgZmlyZWZveF92ZXIsXG4gICAgICAgICAgICBwcm9jID0gcmFuZG9tUHJvYyhhcmNoKSxcbiAgICAgICAgICAgIG9zX3ZlciA9IChhcmNoID09PSAnd2luJykgPyAnKFdpbmRvd3MgTlQgJyArIHZlcnNpb25fc3RyaW5nLm50KCkgKyAoKHByb2MpID8gJzsgJyArIHByb2MgOiAnJylcbiAgICAgICAgICAgIDogKGFyY2ggPT09ICdtYWMnKSA/ICcoTWFjaW50b3NoOyAnICsgcHJvYyArICcgTWFjIE9TIFggJyArIHZlcnNpb25fc3RyaW5nLm9zeCgpXG4gICAgICAgICAgICA6ICcoWDExOyBMaW51eCAnICsgcHJvYztcblxuICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wICcgKyBvc192ZXIgKyAnOyBydjonICsgZmlyZWZveF92ZXIuc2xpY2UoMCwgLTIpICsgJykgJyArIGdlY2tvX3ZlcjtcbiAgICB9LFxuXG4gICAgaWV4cGxvcmVyOiBmdW5jdGlvbiBpZXhwbG9yZXIoKSB7XG4gICAgICAgIHZhciB2ZXIgPSB2ZXJzaW9uX3N0cmluZy5pZSgpO1xuXG4gICAgICAgIGlmICh2ZXIgPj0gMTEpIHtcbiAgICAgICAgICAgIC8vaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoODY5MzAxKHY9dnMuODUpLmFzcHhcbiAgICAgICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4nICsgcm5kKDEsMykgKyAnOyBUcmlkZW50LzcuMDsgJyArIHJuZChbJ1RvdWNoOyAnLCAnJ10pICsgJ3J2OjExLjApIGxpa2UgR2Vja28nO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvbXM1Mzc1MDModj12cy44NSkuYXNweFxuICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFICcgKyB2ZXIgKyAnLjA7IFdpbmRvd3MgTlQgJyArIHZlcnNpb25fc3RyaW5nLm50KCkgKyAnOyBUcmlkZW50LycgK1xuICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmcudHJpZGVudCgpICsgKChybmQoMCwgMSkgPT09IDEpID8gJzsgLk5FVCBDTFIgJyArIHZlcnNpb25fc3RyaW5nLm5ldCgpIDogJycpICsgJyknO1xuICAgIH0sXG5cbiAgICBvcGVyYTogZnVuY3Rpb24gb3BlcmEoYXJjaCkge1xuICAgICAgICAvL2h0dHA6Ly93d3cub3BlcmEuY29tL2RvY3MvaGlzdG9yeS9cbiAgICAgICAgdmFyIHByZXN0b192ZXIgPSAnIFByZXN0by8nICsgdmVyc2lvbl9zdHJpbmcucHJlc3RvKCkgKyAnIFZlcnNpb24vJyArIHZlcnNpb25fc3RyaW5nLnByZXN0bzIoKSArICcpJyxcbiAgICAgICAgICAgIG9zX3ZlciA9IChhcmNoID09PSAnd2luJykgPyAnKFdpbmRvd3MgTlQgJyArIHZlcnNpb25fc3RyaW5nLm50KCkgKyAnOyBVOyAnICsgcmFuZG9tTGFuZygpICsgcHJlc3RvX3ZlclxuICAgICAgICAgICAgOiAoYXJjaCA9PT0gJ2xpbicpID8gJyhYMTE7IExpbnV4ICcgKyByYW5kb21Qcm9jKGFyY2gpICsgJzsgVTsgJyArIHJhbmRvbUxhbmcoKSArIHByZXN0b192ZXJcbiAgICAgICAgICAgIDogJyhNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYICcgKyB2ZXJzaW9uX3N0cmluZy5vc3goKSArICcgVTsgJyArIHJhbmRvbUxhbmcoKSArICcgUHJlc3RvLycgK1xuICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmcucHJlc3RvKCkgKyAnIFZlcnNpb24vJyArIHZlcnNpb25fc3RyaW5nLnByZXN0bzIoKSArICcpJztcblxuICAgICAgICByZXR1cm4gJ09wZXJhLycgKyBybmQoOSwgMTQpICsgJy4nICsgcm5kKDAsIDk5KSArICcgJyArIG9zX3ZlcjtcbiAgICB9LFxuXG4gICAgc2FmYXJpOiBmdW5jdGlvbiBzYWZhcmkoYXJjaCkge1xuICAgICAgICB2YXIgc2FmYXJpID0gdmVyc2lvbl9zdHJpbmcuc2FmYXJpKCksXG4gICAgICAgICAgICB2ZXIgPSBybmQoNCwgNykgKyAnLicgKyBybmQoMCwxKSArICcuJyArIHJuZCgwLDEwKSxcbiAgICAgICAgICAgIG9zX3ZlciA9IChhcmNoID09PSAnbWFjJykgPyAnKE1hY2ludG9zaDsgJyArIHJhbmRvbVByb2MoJ21hYycpICsgJyBNYWMgT1MgWCAnKyB2ZXJzaW9uX3N0cmluZy5vc3goJ18nKSArICcgcnY6JyArIHJuZCgyLCA2KSArICcuMDsgJysgcmFuZG9tTGFuZygpICsgJykgJ1xuICAgICAgICAgICAgOiAnKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgJyArIHZlcnNpb25fc3RyaW5nLm50KCkgKyAnKSc7XG5cbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAnICsgb3NfdmVyICsgJ0FwcGxlV2ViS2l0LycgKyBzYWZhcmkgKyAnIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8nICsgdmVyICsgJyBTYWZhcmkvJyArIHNhZmFyaTtcbiAgICB9LFxuXG4gICAgY2hyb21lOiBmdW5jdGlvbiBjaHJvbWUoYXJjaCkge1xuICAgICAgICB2YXIgc2FmYXJpID0gdmVyc2lvbl9zdHJpbmcuc2FmYXJpKCksXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ21hYycpID8gJyhNYWNpbnRvc2g7ICcgKyByYW5kb21Qcm9jKCdtYWMnKSArICcgTWFjIE9TIFggJyArIHZlcnNpb25fc3RyaW5nLm9zeCgnXycpICsgJykgJ1xuICAgICAgICAgICAgOiAoYXJjaCA9PT0gJ3dpbicpID8gJyhXaW5kb3dzOyBVOyBXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJyknXG4gICAgICAgICAgICA6ICcoWDExOyBMaW51eCAnICsgcmFuZG9tUHJvYyhhcmNoKTtcblxuICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wICcgKyBvc192ZXIgKyAnIEFwcGxlV2ViS2l0LycgKyBzYWZhcmkgKyAnIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLycgKyB2ZXJzaW9uX3N0cmluZy5jaHJvbWUoKSArICcgU2FmYXJpLycgKyBzYWZhcmk7XG4gICAgfVxufTtcblxuZXhwb3J0cy5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKCkge1xuICAgIHZhciByYW5kb20gPSByYW5kb21Ccm93c2VyQW5kT1MoKTtcbiAgICByZXR1cm4gYnJvd3NlcltyYW5kb21bMF1dKHJhbmRvbVsxXSk7XG59O1xuIiwiZnVuY3Rpb24gZm9ybWF0KGZtdCkge1xuICB2YXIgcmUgPSAvKCU/KSglKFtqZHNdKSkvZ1xuICAgICwgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIGlmKGFyZ3MubGVuZ3RoKSB7XG4gICAgZm10ID0gZm10LnJlcGxhY2UocmUsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVkLCBwdG4sIGZsYWcpIHtcbiAgICAgIHZhciBhcmcgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICBzd2l0Y2goZmxhZykge1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBhcmcgPSAnJyArIGFyZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgYXJnID0gTnVtYmVyKGFyZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgIGFyZyA9IEpTT04uc3RyaW5naWZ5KGFyZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZighZXNjYXBlZCkge1xuICAgICAgICByZXR1cm4gYXJnOyBcbiAgICAgIH1cbiAgICAgIGFyZ3MudW5zaGlmdChhcmcpO1xuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pXG4gIH1cblxuICAvLyBhcmd1bWVudHMgcmVtYWluIGFmdGVyIGZvcm1hdHRpbmdcbiAgaWYoYXJncy5sZW5ndGgpIHtcbiAgICBmbXQgKz0gJyAnICsgYXJncy5qb2luKCcgJyk7XG4gIH1cblxuICAvLyB1cGRhdGUgZXNjYXBlZCAlJSB2YWx1ZXNcbiAgZm10ID0gZm10LnJlcGxhY2UoLyV7MiwyfS9nLCAnJScpO1xuXG4gIHJldHVybiAnJyArIGZtdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JtYXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgQ2hyaXMgUGV0dGl0dFxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xuICogbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcbiAqIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XG4gKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXG4gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRVxuICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUlxuICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBsaWIgPSByZXF1aXJlKFwiLi9saWJcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBHcmFwaDogbGliLkdyYXBoLFxuICBqc29uOiByZXF1aXJlKFwiLi9saWIvanNvblwiKSxcbiAgYWxnOiByZXF1aXJlKFwiLi9saWIvYWxnXCIpLFxuICB2ZXJzaW9uOiBsaWIudmVyc2lvblxufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21wb25lbnRzO1xuXG5mdW5jdGlvbiBjb21wb25lbnRzKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fSxcbiAgICAgIGNtcHRzID0gW10sXG4gICAgICBjbXB0O1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSByZXR1cm47XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgY21wdC5wdXNoKHYpO1xuICAgIF8uZWFjaChnLnN1Y2Nlc3NvcnModiksIGRmcyk7XG4gICAgXy5lYWNoKGcucHJlZGVjZXNzb3JzKHYpLCBkZnMpO1xuICB9XG5cbiAgXy5lYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGNtcHQgPSBbXTtcbiAgICBkZnModik7XG4gICAgaWYgKGNtcHQubGVuZ3RoKSB7XG4gICAgICBjbXB0cy5wdXNoKGNtcHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNtcHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRmcztcblxuLypcbiAqIEEgaGVscGVyIHRoYXQgcHJlZm9ybXMgYSBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9uIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIHJldHVybnMgdGhlIG5vZGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgdmlzaXRlZC4gSWYgdGhlIGdyYXBoIGlzXG4gKiB1bmRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBuZWlnaGJvcnMuIElmIHRoZSBncmFwaFxuICogaXMgZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIHN1Y2Nlc3NvcnMuXG4gKlxuICogT3JkZXIgbXVzdCBiZSBvbmUgb2YgXCJwcmVcIiBvciBcInBvc3RcIi5cbiAqL1xuZnVuY3Rpb24gZGZzKGcsIHZzLCBvcmRlcikge1xuICBpZiAoIV8uaXNBcnJheSh2cykpIHtcbiAgICB2cyA9IFt2c107XG4gIH1cblxuICB2YXIgbmF2aWdhdGlvbiA9IChnLmlzRGlyZWN0ZWQoKSA/IGcuc3VjY2Vzc29ycyA6IGcubmVpZ2hib3JzKS5iaW5kKGcpO1xuXG4gIHZhciBhY2MgPSBbXSxcbiAgICAgIHZpc2l0ZWQgPSB7fTtcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmhhc05vZGUodikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogXCIgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gXCJwb3N0XCIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gIH0pO1xuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBkb0RmcyhnLCB2LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYykge1xuICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICBpZiAoIXBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICAgIF8uZWFjaChuYXZpZ2F0aW9uKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgICBkb0RmcyhnLCB3LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gICAgfSk7XG4gICAgaWYgKHBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICB9XG59XG4iLCJ2YXIgZGlqa3N0cmEgPSByZXF1aXJlKFwiLi9kaWprc3RyYVwiKSxcbiAgICBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkaWprc3RyYUFsbDtcblxuZnVuY3Rpb24gZGlqa3N0cmFBbGwoZywgd2VpZ2h0RnVuYywgZWRnZUZ1bmMpIHtcbiAgcmV0dXJuIF8udHJhbnNmb3JtKGcubm9kZXMoKSwgZnVuY3Rpb24oYWNjLCB2KSB7XG4gICAgYWNjW3ZdID0gZGlqa3N0cmEoZywgdiwgd2VpZ2h0RnVuYywgZWRnZUZ1bmMpO1xuICB9LCB7fSk7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIiksXG4gICAgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRpamtzdHJhO1xuXG52YXIgREVGQVVMVF9XRUlHSFRfRlVOQyA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGRpamtzdHJhKGcsIHNvdXJjZSwgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICByZXR1cm4gcnVuRGlqa3N0cmEoZywgU3RyaW5nKHNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgICAgICAgICAgICAgICAgICAgZWRnZUZuIHx8IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcub3V0RWRnZXModik7IH0pO1xufVxuXG5mdW5jdGlvbiBydW5EaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgdmFyIHJlc3VsdHMgPSB7fSxcbiAgICAgIHBxID0gbmV3IFByaW9yaXR5UXVldWUoKSxcbiAgICAgIHYsIHZFbnRyeTtcblxuICB2YXIgdXBkYXRlTmVpZ2hib3JzID0gZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ICE9PSB2ID8gZWRnZS52IDogZWRnZS53LFxuICAgICAgICB3RW50cnkgPSByZXN1bHRzW3ddLFxuICAgICAgICB3ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKSxcbiAgICAgICAgZGlzdGFuY2UgPSB2RW50cnkuZGlzdGFuY2UgKyB3ZWlnaHQ7XG5cbiAgICBpZiAod2VpZ2h0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgXCJCYWQgZWRnZTogXCIgKyBlZGdlICsgXCIgV2VpZ2h0OiBcIiArIHdlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3RhbmNlIDwgd0VudHJ5LmRpc3RhbmNlKSB7XG4gICAgICB3RW50cnkuZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIHdFbnRyeS5wcmVkZWNlc3NvciA9IHY7XG4gICAgICBwcS5kZWNyZWFzZSh3LCBkaXN0YW5jZSk7XG4gICAgfVxuICB9O1xuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgZGlzdGFuY2UgPSB2ID09PSBzb3VyY2UgPyAwIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIHJlc3VsdHNbdl0gPSB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9O1xuICAgIHBxLmFkZCh2LCBkaXN0YW5jZSk7XG4gIH0pO1xuXG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIHZFbnRyeSA9IHJlc3VsdHNbdl07XG4gICAgaWYgKHZFbnRyeS5kaXN0YW5jZSA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBlZGdlRm4odikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIiksXG4gICAgdGFyamFuID0gcmVxdWlyZShcIi4vdGFyamFuXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRDeWNsZXM7XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbihjbXB0KSB7XG4gICAgcmV0dXJuIGNtcHQubGVuZ3RoID4gMSB8fCAoY21wdC5sZW5ndGggPT09IDEgJiYgZy5oYXNFZGdlKGNtcHRbMF0sIGNtcHRbMF0pKTtcbiAgfSk7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZmxveWRXYXJzaGFsbDtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGcsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkZsb3lkV2Fyc2hhbGwoZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUZuIHx8IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcub3V0RWRnZXModik7IH0pO1xufVxuXG5mdW5jdGlvbiBydW5GbG95ZFdhcnNoYWxsKGcsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgdmFyIHJlc3VsdHMgPSB7fSxcbiAgICAgIG5vZGVzID0gZy5ub2RlcygpO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIHJlc3VsdHNbdl0gPSB7fTtcbiAgICByZXN1bHRzW3ZdW3ZdID0geyBkaXN0YW5jZTogMCB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24odykge1xuICAgICAgaWYgKHYgIT09IHcpIHtcbiAgICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVkZ2VGbih2KS5mb3JFYWNoKGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICAgIHZhciB3ID0gZWRnZS52ID09PSB2ID8gZWRnZS53IDogZWRnZS52LFxuICAgICAgICAgIGQgPSB3ZWlnaHRGbihlZGdlKTtcbiAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBkLCBwcmVkZWNlc3NvcjogdiB9O1xuICAgIH0pO1xuICB9KTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICB2YXIgcm93SyA9IHJlc3VsdHNba107XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihpKSB7XG4gICAgICB2YXIgcm93SSA9IHJlc3VsdHNbaV07XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGopIHtcbiAgICAgICAgdmFyIGlrID0gcm93SVtrXTtcbiAgICAgICAgdmFyIGtqID0gcm93S1tqXTtcbiAgICAgICAgdmFyIGlqID0gcm93SVtqXTtcbiAgICAgICAgdmFyIGFsdERpc3RhbmNlID0gaWsuZGlzdGFuY2UgKyBrai5kaXN0YW5jZTtcbiAgICAgICAgaWYgKGFsdERpc3RhbmNlIDwgaWouZGlzdGFuY2UpIHtcbiAgICAgICAgICBpai5kaXN0YW5jZSA9IGFsdERpc3RhbmNlO1xuICAgICAgICAgIGlqLnByZWRlY2Vzc29yID0ga2oucHJlZGVjZXNzb3I7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wb25lbnRzOiByZXF1aXJlKFwiLi9jb21wb25lbnRzXCIpLFxuICBkaWprc3RyYTogcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gIGRpamtzdHJhQWxsOiByZXF1aXJlKFwiLi9kaWprc3RyYS1hbGxcIiksXG4gIGZpbmRDeWNsZXM6IHJlcXVpcmUoXCIuL2ZpbmQtY3ljbGVzXCIpLFxuICBmbG95ZFdhcnNoYWxsOiByZXF1aXJlKFwiLi9mbG95ZC13YXJzaGFsbFwiKSxcbiAgaXNBY3ljbGljOiByZXF1aXJlKFwiLi9pcy1hY3ljbGljXCIpLFxuICBwb3N0b3JkZXI6IHJlcXVpcmUoXCIuL3Bvc3RvcmRlclwiKSxcbiAgcHJlb3JkZXI6IHJlcXVpcmUoXCIuL3ByZW9yZGVyXCIpLFxuICBwcmltOiByZXF1aXJlKFwiLi9wcmltXCIpLFxuICB0YXJqYW46IHJlcXVpcmUoXCIuL3RhcmphblwiKSxcbiAgdG9wc29ydDogcmVxdWlyZShcIi4vdG9wc29ydFwiKVxufTtcbiIsInZhciB0b3Bzb3J0ID0gcmVxdWlyZShcIi4vdG9wc29ydFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FjeWNsaWM7XG5cbmZ1bmN0aW9uIGlzQWN5Y2xpYyhnKSB7XG4gIHRyeSB7XG4gICAgdG9wc29ydChnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgdG9wc29ydC5DeWNsZUV4Y2VwdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIiwidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3N0b3JkZXI7XG5cbmZ1bmN0aW9uIHBvc3RvcmRlcihnLCB2cykge1xuICByZXR1cm4gZGZzKGcsIHZzLCBcInBvc3RcIik7XG59XG4iLCJ2YXIgZGZzID0gcmVxdWlyZShcIi4vZGZzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByZW9yZGVyO1xuXG5mdW5jdGlvbiBwcmVvcmRlcihnLCB2cykge1xuICByZXR1cm4gZGZzKGcsIHZzLCBcInByZVwiKTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKSxcbiAgICBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaFwiKSxcbiAgICBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJpbTtcblxuZnVuY3Rpb24gcHJpbShnLCB3ZWlnaHRGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgR3JhcGgoKSxcbiAgICAgIHBhcmVudHMgPSB7fSxcbiAgICAgIHBxID0gbmV3IFByaW9yaXR5UXVldWUoKSxcbiAgICAgIHY7XG5cbiAgZnVuY3Rpb24gdXBkYXRlTmVpZ2hib3JzKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudixcbiAgICAgICAgcHJpID0gcHEucHJpb3JpdHkodyk7XG4gICAgaWYgKHByaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZWRnZVdlaWdodCA9IHdlaWdodEZ1bmMoZWRnZSk7XG4gICAgICBpZiAoZWRnZVdlaWdodCA8IHByaSkge1xuICAgICAgICBwYXJlbnRzW3ddID0gdjtcbiAgICAgICAgcHEuZGVjcmVhc2UodywgZWRnZVdlaWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGcubm9kZUNvdW50KCkgPT09IDApIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgXy5lYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHBxLmFkZCh2LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICB9KTtcblxuICAvLyBTdGFydCBmcm9tIGFuIGFyYml0cmFyeSBub2RlXG4gIHBxLmRlY3JlYXNlKGcubm9kZXMoKVswXSwgMCk7XG5cbiAgdmFyIGluaXQgPSBmYWxzZTtcbiAgd2hpbGUgKHBxLnNpemUoKSA+IDApIHtcbiAgICB2ID0gcHEucmVtb3ZlTWluKCk7XG4gICAgaWYgKF8uaGFzKHBhcmVudHMsIHYpKSB7XG4gICAgICByZXN1bHQuc2V0RWRnZSh2LCBwYXJlbnRzW3ZdKTtcbiAgICB9IGVsc2UgaWYgKGluaXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIklucHV0IGdyYXBoIGlzIG5vdCBjb25uZWN0ZWQ6IFwiICsgZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIGcubm9kZUVkZ2VzKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdGFyamFuO1xuXG5mdW5jdGlvbiB0YXJqYW4oZykge1xuICB2YXIgaW5kZXggPSAwLFxuICAgICAgc3RhY2sgPSBbXSxcbiAgICAgIHZpc2l0ZWQgPSB7fSwgLy8gbm9kZSBpZCAtPiB7IG9uU3RhY2ssIGxvd2xpbmssIGluZGV4IH1cbiAgICAgIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBlbnRyeSA9IHZpc2l0ZWRbdl0gPSB7XG4gICAgICBvblN0YWNrOiB0cnVlLFxuICAgICAgbG93bGluazogaW5kZXgsXG4gICAgICBpbmRleDogaW5kZXgrK1xuICAgIH07XG4gICAgc3RhY2sucHVzaCh2KTtcblxuICAgIGcuc3VjY2Vzc29ycyh2KS5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICghXy5oYXModmlzaXRlZCwgdykpIHtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5sb3dsaW5rKTtcbiAgICAgIH0gZWxzZSBpZiAodmlzaXRlZFt3XS5vblN0YWNrKSB7XG4gICAgICAgIGVudHJ5Lmxvd2xpbmsgPSBNYXRoLm1pbihlbnRyeS5sb3dsaW5rLCB2aXNpdGVkW3ddLmluZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChlbnRyeS5sb3dsaW5rID09PSBlbnRyeS5pbmRleCkge1xuICAgICAgdmFyIGNtcHQgPSBbXSxcbiAgICAgICAgICB3O1xuICAgICAgZG8ge1xuICAgICAgICB3ID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZpc2l0ZWRbd10ub25TdGFjayA9IGZhbHNlO1xuICAgICAgICBjbXB0LnB1c2godyk7XG4gICAgICB9IHdoaWxlICh2ICE9PSB3KTtcbiAgICAgIHJlc3VsdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH1cblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgZGZzKHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdG9wc29ydDtcbnRvcHNvcnQuQ3ljbGVFeGNlcHRpb24gPSBDeWNsZUV4Y2VwdGlvbjtcblxuZnVuY3Rpb24gdG9wc29ydChnKSB7XG4gIHZhciB2aXNpdGVkID0ge30sXG4gICAgICBzdGFjayA9IHt9LFxuICAgICAgcmVzdWx0cyA9IFtdO1xuXG4gIGZ1bmN0aW9uIHZpc2l0KG5vZGUpIHtcbiAgICBpZiAoXy5oYXMoc3RhY2ssIG5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgQ3ljbGVFeGNlcHRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIG5vZGUpKSB7XG4gICAgICBzdGFja1tub2RlXSA9IHRydWU7XG4gICAgICB2aXNpdGVkW25vZGVdID0gdHJ1ZTtcbiAgICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyhub2RlKSwgdmlzaXQpO1xuICAgICAgZGVsZXRlIHN0YWNrW25vZGVdO1xuICAgICAgcmVzdWx0cy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIF8uZWFjaChnLnNpbmtzKCksIHZpc2l0KTtcblxuICBpZiAoXy5zaXplKHZpc2l0ZWQpICE9PSBnLm5vZGVDb3VudCgpKSB7XG4gICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gQ3ljbGVFeGNlcHRpb24oKSB7fVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByaW9yaXR5UXVldWU7XG5cbi8qKlxuICogQSBtaW4tcHJpb3JpdHkgcXVldWUgZGF0YSBzdHJ1Y3R1cmUuIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBDb3JtZW4sXG4gKiBldCBhbC4sIFwiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXNcIi4gVGhlIGJhc2ljIGlkZWEgb2YgYSBtaW4tcHJpb3JpdHlcbiAqIHF1ZXVlIGlzIHRoYXQgeW91IGNhbiBlZmZpY2llbnRseSAoaW4gTygxKSB0aW1lKSBnZXQgdGhlIHNtYWxsZXN0IGtleSBpblxuICogdGhlIHF1ZXVlLiBBZGRpbmcgYW5kIHJlbW92aW5nIGVsZW1lbnRzIHRha2VzIE8obG9nIG4pIHRpbWUuIEEga2V5IGNhblxuICogaGF2ZSBpdHMgcHJpb3JpdHkgZGVjcmVhc2VkIGluIE8obG9nIG4pIHRpbWUuXG4gKi9cbmZ1bmN0aW9uIFByaW9yaXR5UXVldWUoKSB7XG4gIHRoaXMuX2FyciA9IFtdO1xuICB0aGlzLl9rZXlJbmRpY2VzID0ge307XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5sZW5ndGg7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGtleXMgdGhhdCBhcmUgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTyhuKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJyLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4LmtleTsgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIGlmICoqa2V5KiogaXMgaW4gdGhlIHF1ZXVlIGFuZCBgZmFsc2VgIGlmIG5vdC5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oa2V5KSB7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9rZXlJbmRpY2VzLCBrZXkpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKi4gSWYgKiprZXkqKiBpcyBub3QgcHJlc2VudCBpbiB0aGUgcXVldWVcbiAqIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIGB1bmRlZmluZWRgLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLnByaW9yaXR5ID0gZnVuY3Rpb24oa2V5KSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXkgZm9yIHRoZSBtaW5pbXVtIGVsZW1lbnQgaW4gdGhpcyBxdWV1ZS4gSWYgdGhlIHF1ZXVlIGlzXG4gKiBlbXB0eSB0aGlzIGZ1bmN0aW9uIHRocm93cyBhbiBFcnJvci4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLm1pbiA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5zaXplKCkgPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJRdWV1ZSB1bmRlcmZsb3dcIik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2FyclswXS5rZXk7XG59O1xuXG4vKipcbiAqIEluc2VydHMgYSBuZXcga2V5IGludG8gdGhlIHByaW9yaXR5IHF1ZXVlLiBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzIGluXG4gKiB0aGUgcXVldWUgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWA7IG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBgdHJ1ZWAuXG4gKiBUYWtlcyBgTyhuKWAgdGltZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgdG8gYWRkXG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIGluaXRpYWwgcHJpb3JpdHkgZm9yIHRoZSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oa2V5LCBwcmlvcml0eSkge1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIGtleSA9IFN0cmluZyhrZXkpO1xuICBpZiAoIV8uaGFzKGtleUluZGljZXMsIGtleSkpIHtcbiAgICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICAgIHZhciBpbmRleCA9IGFyci5sZW5ndGg7XG4gICAga2V5SW5kaWNlc1trZXldID0gaW5kZXg7XG4gICAgYXJyLnB1c2goe2tleToga2V5LCBwcmlvcml0eTogcHJpb3JpdHl9KTtcbiAgICB0aGlzLl9kZWNyZWFzZShpbmRleCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGFuZCByZXR1cm5zIHRoZSBzbWFsbGVzdCBrZXkgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTyhsb2cgbilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLnJlbW92ZU1pbiA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9zd2FwKDAsIHRoaXMuX2Fyci5sZW5ndGggLSAxKTtcbiAgdmFyIG1pbiA9IHRoaXMuX2Fyci5wb3AoKTtcbiAgZGVsZXRlIHRoaXMuX2tleUluZGljZXNbbWluLmtleV07XG4gIHRoaXMuX2hlYXBpZnkoMCk7XG4gIHJldHVybiBtaW4ua2V5O1xufTtcblxuLyoqXG4gKiBEZWNyZWFzZXMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqIHRvICoqcHJpb3JpdHkqKi4gSWYgdGhlIG5ldyBwcmlvcml0eSBpc1xuICogZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBwcmlvcml0eSwgdGhpcyBmdW5jdGlvbiB3aWxsIHRocm93IGFuIEVycm9yLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgdGhlIGtleSBmb3Igd2hpY2ggdG8gcmFpc2UgcHJpb3JpdHlcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgbmV3IHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmRlY3JlYXNlID0gZnVuY3Rpb24oa2V5LCBwcmlvcml0eSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChwcmlvcml0eSA+IHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJOZXcgcHJpb3JpdHkgaXMgZ3JlYXRlciB0aGFuIGN1cnJlbnQgcHJpb3JpdHkuIFwiICtcbiAgICAgICAgXCJLZXk6IFwiICsga2V5ICsgXCIgT2xkOiBcIiArIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHkgKyBcIiBOZXc6IFwiICsgcHJpb3JpdHkpO1xuICB9XG4gIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2hlYXBpZnkgPSBmdW5jdGlvbihpKSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBsID0gMiAqIGksXG4gICAgICByID0gbCArIDEsXG4gICAgICBsYXJnZXN0ID0gaTtcbiAgaWYgKGwgPCBhcnIubGVuZ3RoKSB7XG4gICAgbGFyZ2VzdCA9IGFycltsXS5wcmlvcml0eSA8IGFycltsYXJnZXN0XS5wcmlvcml0eSA/IGwgOiBsYXJnZXN0O1xuICAgIGlmIChyIDwgYXJyLmxlbmd0aCkge1xuICAgICAgbGFyZ2VzdCA9IGFycltyXS5wcmlvcml0eSA8IGFycltsYXJnZXN0XS5wcmlvcml0eSA/IHIgOiBsYXJnZXN0O1xuICAgIH1cbiAgICBpZiAobGFyZ2VzdCAhPT0gaSkge1xuICAgICAgdGhpcy5fc3dhcChpLCBsYXJnZXN0KTtcbiAgICAgIHRoaXMuX2hlYXBpZnkobGFyZ2VzdCk7XG4gICAgfVxuICB9XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fZGVjcmVhc2UgPSBmdW5jdGlvbihpbmRleCkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgcHJpb3JpdHkgPSBhcnJbaW5kZXhdLnByaW9yaXR5O1xuICB2YXIgcGFyZW50O1xuICB3aGlsZSAoaW5kZXggIT09IDApIHtcbiAgICBwYXJlbnQgPSBpbmRleCA+PiAxO1xuICAgIGlmIChhcnJbcGFyZW50XS5wcmlvcml0eSA8IHByaW9yaXR5KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5fc3dhcChpbmRleCwgcGFyZW50KTtcbiAgICBpbmRleCA9IHBhcmVudDtcbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX3N3YXAgPSBmdW5jdGlvbihpLCBqKSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAgdmFyIG9yaWdBcnJJID0gYXJyW2ldO1xuICB2YXIgb3JpZ0FyckogPSBhcnJbal07XG4gIGFycltpXSA9IG9yaWdBcnJKO1xuICBhcnJbal0gPSBvcmlnQXJySTtcbiAga2V5SW5kaWNlc1tvcmlnQXJySi5rZXldID0gaTtcbiAga2V5SW5kaWNlc1tvcmlnQXJySS5rZXldID0gajtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gR3JhcGg7XG5cbnZhciBERUZBVUxUX0VER0VfTkFNRSA9IFwiXFx4MDBcIixcbiAgICBHUkFQSF9OT0RFID0gXCJcXHgwMFwiLFxuICAgIEVER0VfS0VZX0RFTElNID0gXCJcXHgwMVwiO1xuXG4vLyBJbXBsZW1lbnRhdGlvbiBub3Rlczpcbi8vXG4vLyAgKiBOb2RlIGlkIHF1ZXJ5IGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIHN0cmluZyBpZHMgZm9yIHRoZSBub2Rlc1xuLy8gICogRWRnZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBhbiBcImVkZ2VPYmpcIiwgZWRnZSBvYmplY3QsIHRoYXQgaXNcbi8vICAgIGNvbXBvc2VkIG9mIGVub3VnaCBpbmZvcm1hdGlvbiB0byB1bmlxdWVseSBpZGVudGlmeSBhbiBlZGdlOiB7diwgdywgbmFtZX0uXG4vLyAgKiBJbnRlcm5hbGx5IHdlIHVzZSBhbiBcImVkZ2VJZFwiLCBhIHN0cmluZ2lmaWVkIGZvcm0gb2YgdGhlIGVkZ2VPYmosIHRvXG4vLyAgICByZWZlcmVuY2UgZWRnZXMuIFRoaXMgaXMgYmVjYXVzZSB3ZSBuZWVkIGEgcGVyZm9ybWFudCB3YXkgdG8gbG9vayB0aGVzZVxuLy8gICAgZWRnZXMgdXAgYW5kLCBvYmplY3QgcHJvcGVydGllcywgd2hpY2ggaGF2ZSBzdHJpbmcga2V5cywgYXJlIHRoZSBjbG9zZXN0XG4vLyAgICB3ZSdyZSBnb2luZyB0byBnZXQgdG8gYSBwZXJmb3JtYW50IGhhc2h0YWJsZSBpbiBKYXZhU2NyaXB0LlxuXG5mdW5jdGlvbiBHcmFwaChvcHRzKSB7XG4gIHRoaXMuX2lzRGlyZWN0ZWQgPSBfLmhhcyhvcHRzLCBcImRpcmVjdGVkXCIpID8gb3B0cy5kaXJlY3RlZCA6IHRydWU7XG4gIHRoaXMuX2lzTXVsdGlncmFwaCA9IF8uaGFzKG9wdHMsIFwibXVsdGlncmFwaFwiKSA/IG9wdHMubXVsdGlncmFwaCA6IGZhbHNlO1xuICB0aGlzLl9pc0NvbXBvdW5kID0gXy5oYXMob3B0cywgXCJjb21wb3VuZFwiKSA/IG9wdHMuY29tcG91bmQgOiBmYWxzZTtcblxuICAvLyBMYWJlbCBmb3IgdGhlIGdyYXBoIGl0c2VsZlxuICB0aGlzLl9sYWJlbCA9IHVuZGVmaW5lZDtcblxuICAvLyBEZWZhdWx0cyB0byBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBub2RlXG4gIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IF8uY29uc3RhbnQodW5kZWZpbmVkKTtcblxuICAvLyBEZWZhdWx0cyB0byBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBlZGdlXG4gIHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbiA9IF8uY29uc3RhbnQodW5kZWZpbmVkKTtcblxuICAvLyB2IC0+IGxhYmVsXG4gIHRoaXMuX25vZGVzID0ge307XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAvLyB2IC0+IHBhcmVudFxuICAgIHRoaXMuX3BhcmVudCA9IHt9O1xuXG4gICAgLy8gdiAtPiBjaGlsZHJlblxuICAgIHRoaXMuX2NoaWxkcmVuID0ge307XG4gICAgdGhpcy5fY2hpbGRyZW5bR1JBUEhfTk9ERV0gPSB7fTtcbiAgfVxuXG4gIC8vIHYgLT4gZWRnZU9ialxuICB0aGlzLl9pbiA9IHt9O1xuXG4gIC8vIHUgLT4gdiAtPiBOdW1iZXJcbiAgdGhpcy5fcHJlZHMgPSB7fTtcblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5fb3V0ID0ge307XG5cbiAgLy8gdiAtPiB3IC0+IE51bWJlclxuICB0aGlzLl9zdWNzID0ge307XG5cbiAgLy8gZSAtPiBlZGdlT2JqXG4gIHRoaXMuX2VkZ2VPYmpzID0ge307XG5cbiAgLy8gZSAtPiBsYWJlbFxuICB0aGlzLl9lZGdlTGFiZWxzID0ge307XG59XG5cbi8qIE51bWJlciBvZiBub2RlcyBpbiB0aGUgZ3JhcGguIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiAqL1xuR3JhcGgucHJvdG90eXBlLl9ub2RlQ291bnQgPSAwO1xuXG4vKiBOdW1iZXIgb2YgZWRnZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fZWRnZUNvdW50ID0gMDtcblxuXG4vKiA9PT0gR3JhcGggZnVuY3Rpb25zID09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuaXNEaXJlY3RlZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNEaXJlY3RlZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc011bHRpZ3JhcGggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc0NvbXBvdW5kID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc0NvbXBvdW5kO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldEdyYXBoID0gZnVuY3Rpb24obGFiZWwpIHtcbiAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZ3JhcGggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2xhYmVsO1xufTtcblxuXG4vKiA9PT0gTm9kZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdE5vZGVMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX25vZGVDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy5rZXlzKHRoaXMuX25vZGVzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zb3VyY2VzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkoc2VsZi5faW5bdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zaW5rcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX291dFt2XSk7XG4gIH0pO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldE5vZGVzID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHNlbGYuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuc2V0Tm9kZSh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlID0gZnVuY3Rpb24odiwgdmFsdWUpIHtcbiAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5fbm9kZXNbdl0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9ub2Rlc1t2XSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odik7XG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdGhpcy5fcGFyZW50W3ZdID0gR1JBUEhfTk9ERTtcbiAgICB0aGlzLl9jaGlsZHJlblt2XSA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdW3ZdID0gdHJ1ZTtcbiAgfVxuICB0aGlzLl9pblt2XSA9IHt9O1xuICB0aGlzLl9wcmVkc1t2XSA9IHt9O1xuICB0aGlzLl9vdXRbdl0gPSB7fTtcbiAgdGhpcy5fc3Vjc1t2XSA9IHt9O1xuICArK3RoaXMuX25vZGVDb3VudDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZSA9IGZ1bmN0aW9uKHYpIHtcbiAgcmV0dXJuIHRoaXMuX25vZGVzW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9ub2Rlcywgdik7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlTm9kZSA9ICBmdW5jdGlvbih2KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgIHZhciByZW1vdmVFZGdlID0gZnVuY3Rpb24oZSkgeyBzZWxmLnJlbW92ZUVkZ2Uoc2VsZi5fZWRnZU9ianNbZV0pOyB9O1xuICAgIGRlbGV0ZSB0aGlzLl9ub2Rlc1t2XTtcbiAgICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgICAgdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Qodik7XG4gICAgICBkZWxldGUgdGhpcy5fcGFyZW50W3ZdO1xuICAgICAgXy5lYWNoKHRoaXMuY2hpbGRyZW4odiksIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHNlbGYuc2V0UGFyZW50KGNoaWxkKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIH1cbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX2luW3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9wcmVkc1t2XTtcbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX291dFt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl07XG4gICAgZGVsZXRlIHRoaXMuX3N1Y3Nbdl07XG4gICAgLS10aGlzLl9ub2RlQ291bnQ7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0UGFyZW50ID0gZnVuY3Rpb24odiwgcGFyZW50KSB7XG4gIGlmICghdGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoXCIpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyZW50KSkge1xuICAgIHBhcmVudCA9IEdSQVBIX05PREU7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ29lcmNlIHBhcmVudCB0byBzdHJpbmdcbiAgICBwYXJlbnQgKz0gXCJcIjtcbiAgICBmb3IgKHZhciBhbmNlc3RvciA9IHBhcmVudDtcbiAgICAgICAgICFfLmlzVW5kZWZpbmVkKGFuY2VzdG9yKTtcbiAgICAgICAgIGFuY2VzdG9yID0gdGhpcy5wYXJlbnQoYW5jZXN0b3IpKSB7XG4gICAgICBpZiAoYW5jZXN0b3IgPT09IHYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2V0dGluZyBcIiArIHBhcmVudCsgXCIgYXMgcGFyZW50IG9mIFwiICsgdiArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiB3b3VsZCBjcmVhdGUgYSBjeWNsZVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldE5vZGUocGFyZW50KTtcbiAgfVxuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Qodik7XG4gIHRoaXMuX3BhcmVudFt2XSA9IHBhcmVudDtcbiAgdGhpcy5fY2hpbGRyZW5bcGFyZW50XVt2XSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCA9IGZ1bmN0aW9uKHYpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt2XV1bdl07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucGFyZW50ID0gZnVuY3Rpb24odikge1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLl9wYXJlbnRbdl07XG4gICAgaWYgKHBhcmVudCAhPT0gR1JBUEhfTk9ERSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5jaGlsZHJlbiA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQodikpIHtcbiAgICB2ID0gR1JBUEhfTk9ERTtcbiAgfVxuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW5bdl07XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gXy5rZXlzKGNoaWxkcmVuKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodiA9PT0gR1JBUEhfTk9ERSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5oYXNOb2RlKHYpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucHJlZGVjZXNzb3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgcHJlZHNWID0gdGhpcy5fcHJlZHNbdl07XG4gIGlmIChwcmVkc1YpIHtcbiAgICByZXR1cm4gXy5rZXlzKHByZWRzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zdWNjZXNzb3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgc3Vjc1YgPSB0aGlzLl9zdWNzW3ZdO1xuICBpZiAoc3Vjc1YpIHtcbiAgICByZXR1cm4gXy5rZXlzKHN1Y3NWKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5laWdoYm9ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzID0gdGhpcy5wcmVkZWNlc3NvcnModik7XG4gIGlmIChwcmVkcykge1xuICAgIHJldHVybiBfLnVuaW9uKHByZWRzLCB0aGlzLnN1Y2Nlc3NvcnModikpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNMZWFmID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIG5laWdoYm9ycztcbiAgaWYgKHRoaXMuaXNEaXJlY3RlZCgpKSB7XG4gICAgbmVpZ2hib3JzID0gdGhpcy5zdWNjZXNzb3JzKHYpO1xuICB9IGVsc2Uge1xuICAgIG5laWdoYm9ycyA9IHRoaXMubmVpZ2hib3JzKHYpO1xuICB9XG4gIHJldHVybiBuZWlnaGJvcnMubGVuZ3RoID09PSAwO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmZpbHRlck5vZGVzID0gZnVuY3Rpb24oZmlsdGVyKSB7XG4gIHZhciBjb3B5ID0gbmV3IHRoaXMuY29uc3RydWN0b3Ioe1xuICAgIGRpcmVjdGVkOiB0aGlzLl9pc0RpcmVjdGVkLFxuICAgIG11bHRpZ3JhcGg6IHRoaXMuX2lzTXVsdGlncmFwaCxcbiAgICBjb21wb3VuZDogdGhpcy5faXNDb21wb3VuZFxuICB9KTtcblxuICBjb3B5LnNldEdyYXBoKHRoaXMuZ3JhcGgoKSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godGhpcy5fbm9kZXMsIGZ1bmN0aW9uKHZhbHVlLCB2KSB7XG4gICAgaWYgKGZpbHRlcih2KSkge1xuICAgICAgY29weS5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZWFjaCh0aGlzLl9lZGdlT2JqcywgZnVuY3Rpb24oZSkge1xuICAgIGlmIChjb3B5Lmhhc05vZGUoZS52KSAmJiBjb3B5Lmhhc05vZGUoZS53KSkge1xuICAgICAgY29weS5zZXRFZGdlKGUsIHNlbGYuZWRnZShlKSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcGFyZW50cyA9IHt9O1xuICBmdW5jdGlvbiBmaW5kUGFyZW50KHYpIHtcbiAgICB2YXIgcGFyZW50ID0gc2VsZi5wYXJlbnQodik7XG4gICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkIHx8IGNvcHkuaGFzTm9kZShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnRzW3ZdID0gcGFyZW50O1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9IGVsc2UgaWYgKHBhcmVudCBpbiBwYXJlbnRzKSB7XG4gICAgICByZXR1cm4gcGFyZW50c1twYXJlbnRdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmluZFBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgXy5lYWNoKGNvcHkubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgICAgY29weS5zZXRQYXJlbnQodiwgZmluZFBhcmVudCh2KSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbi8qID09PSBFZGdlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5zZXREZWZhdWx0RWRnZUxhYmVsID0gZnVuY3Rpb24obmV3RGVmYXVsdCkge1xuICBpZiAoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSkge1xuICAgIG5ld0RlZmF1bHQgPSBfLmNvbnN0YW50KG5ld0RlZmF1bHQpO1xuICB9XG4gIHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbiA9IG5ld0RlZmF1bHQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2VDb3VudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fZWRnZUNvdW50O1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2VzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBfLnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0UGF0aCA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICBfLnJlZHVjZSh2cywgZnVuY3Rpb24odiwgdykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHNlbGYuc2V0RWRnZSh2LCB3LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuc2V0RWRnZSh2LCB3KTtcbiAgICB9XG4gICAgcmV0dXJuIHc7XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qXG4gKiBzZXRFZGdlKHYsIHcsIFt2YWx1ZSwgW25hbWVdXSlcbiAqIHNldEVkZ2UoeyB2LCB3LCBbbmFtZV0gfSwgW3ZhbHVlXSlcbiAqL1xuR3JhcGgucHJvdG90eXBlLnNldEVkZ2UgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHYsIHcsIG5hbWUsIHZhbHVlLFxuICAgICAgdmFsdWVTcGVjaWZpZWQgPSBmYWxzZSxcbiAgICAgIGFyZzAgPSBhcmd1bWVudHNbMF07XG5cbiAgaWYgKHR5cGVvZiBhcmcwID09PSBcIm9iamVjdFwiICYmIGFyZzAgIT09IG51bGwgJiYgXCJ2XCIgaW4gYXJnMCkge1xuICAgIHYgPSBhcmcwLnY7XG4gICAgdyA9IGFyZzAudztcbiAgICBuYW1lID0gYXJnMC5uYW1lO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdiA9IGFyZzA7XG4gICAgdyA9IGFyZ3VtZW50c1sxXTtcbiAgICBuYW1lID0gYXJndW1lbnRzWzNdO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMl07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdiA9IFwiXCIgKyB2O1xuICB3ID0gXCJcIiArIHc7XG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIG5hbWUgPSBcIlwiICsgbmFtZTtcbiAgfVxuXG4gIHZhciBlID0gZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICBpZiAoXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSkpIHtcbiAgICBpZiAodmFsdWVTcGVjaWZpZWQpIHtcbiAgICAgIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkgJiYgIXRoaXMuX2lzTXVsdGlncmFwaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzZXQgYSBuYW1lZCBlZGdlIHdoZW4gaXNNdWx0aWdyYXBoID0gZmFsc2VcIik7XG4gIH1cblxuICAvLyBJdCBkaWRuJ3QgZXhpc3QsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGl0LlxuICAvLyBGaXJzdCBlbnN1cmUgdGhlIG5vZGVzIGV4aXN0LlxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuc2V0Tm9kZSh3KTtcblxuICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWVTcGVjaWZpZWQgPyB2YWx1ZSA6IHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbih2LCB3LCBuYW1lKTtcblxuICB2YXIgZWRnZU9iaiA9IGVkZ2VBcmdzVG9PYmoodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIC8vIEVuc3VyZSB3ZSBhZGQgdW5kaXJlY3RlZCBlZGdlcyBpbiBhIGNvbnNpc3RlbnQgd2F5LlxuICB2ID0gZWRnZU9iai52O1xuICB3ID0gZWRnZU9iai53O1xuXG4gIE9iamVjdC5mcmVlemUoZWRnZU9iaik7XG4gIHRoaXMuX2VkZ2VPYmpzW2VdID0gZWRnZU9iajtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgdGhpcy5faW5bd11bZV0gPSBlZGdlT2JqO1xuICB0aGlzLl9vdXRbdl1bZV0gPSBlZGdlT2JqO1xuICB0aGlzLl9lZGdlQ291bnQrKztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgICAgICAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc0VkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgICAgICAgICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgICAgICAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSksXG4gICAgICBlZGdlID0gdGhpcy5fZWRnZU9ianNbZV07XG4gIGlmIChlZGdlKSB7XG4gICAgdiA9IGVkZ2UudjtcbiAgICB3ID0gZWRnZS53O1xuICAgIGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgICBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgICBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt3XVtlXTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdW2VdO1xuICAgIHRoaXMuX2VkZ2VDb3VudC0tO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmluRWRnZXMgPSBmdW5jdGlvbih2LCB1KSB7XG4gIHZhciBpblYgPSB0aGlzLl9pblt2XTtcbiAgaWYgKGluVikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKGluVik7XG4gICAgaWYgKCF1KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS52ID09PSB1OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm91dEVkZ2VzID0gZnVuY3Rpb24odiwgdykge1xuICB2YXIgb3V0ViA9IHRoaXMuX291dFt2XTtcbiAgaWYgKG91dFYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhvdXRWKTtcbiAgICBpZiAoIXcpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLncgPT09IHc7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUVkZ2VzID0gZnVuY3Rpb24odiwgdykge1xuICB2YXIgaW5FZGdlcyA9IHRoaXMuaW5FZGdlcyh2LCB3KTtcbiAgaWYgKGluRWRnZXMpIHtcbiAgICByZXR1cm4gaW5FZGdlcy5jb25jYXQodGhpcy5vdXRFZGdlcyh2LCB3KSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGluY3JlbWVudE9ySW5pdEVudHJ5KG1hcCwgaykge1xuICBpZiAobWFwW2tdKSB7XG4gICAgbWFwW2tdKys7XG4gIH0gZWxzZSB7XG4gICAgbWFwW2tdID0gMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KG1hcCwgaykge1xuICBpZiAoIS0tbWFwW2tdKSB7IGRlbGV0ZSBtYXBba107IH1cbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsIHZfLCB3XywgbmFtZSkge1xuICB2YXIgdiA9IFwiXCIgKyB2XztcbiAgdmFyIHcgPSBcIlwiICsgd187XG4gIGlmICghaXNEaXJlY3RlZCAmJiB2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgcmV0dXJuIHYgKyBFREdFX0tFWV9ERUxJTSArIHcgKyBFREdFX0tFWV9ERUxJTSArXG4gICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQobmFtZSkgPyBERUZBVUxUX0VER0VfTkFNRSA6IG5hbWUpO1xufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvT2JqKGlzRGlyZWN0ZWQsIHZfLCB3XywgbmFtZSkge1xuICB2YXIgdiA9IFwiXCIgKyB2XztcbiAgdmFyIHcgPSBcIlwiICsgd187XG4gIGlmICghaXNEaXJlY3RlZCAmJiB2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgdmFyIGVkZ2VPYmogPSAgeyB2OiB2LCB3OiB3IH07XG4gIGlmIChuYW1lKSB7XG4gICAgZWRnZU9iai5uYW1lID0gbmFtZTtcbiAgfVxuICByZXR1cm4gZWRnZU9iajtcbn1cblxuZnVuY3Rpb24gZWRnZU9ialRvSWQoaXNEaXJlY3RlZCwgZWRnZU9iaikge1xuICByZXR1cm4gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmoudiwgZWRnZU9iai53LCBlZGdlT2JqLm5hbWUpO1xufVxuIiwiLy8gSW5jbHVkZXMgb25seSB0aGUgXCJjb3JlXCIgb2YgZ3JhcGhsaWJcbm1vZHVsZS5leHBvcnRzID0ge1xuICBHcmFwaDogcmVxdWlyZShcIi4vZ3JhcGhcIiksXG4gIHZlcnNpb246IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcbn07XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKSxcbiAgICBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgd3JpdGU6IHdyaXRlLFxuICByZWFkOiByZWFkXG59O1xuXG5mdW5jdGlvbiB3cml0ZShnKSB7XG4gIHZhciBqc29uID0ge1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIGRpcmVjdGVkOiBnLmlzRGlyZWN0ZWQoKSxcbiAgICAgIG11bHRpZ3JhcGg6IGcuaXNNdWx0aWdyYXBoKCksXG4gICAgICBjb21wb3VuZDogZy5pc0NvbXBvdW5kKClcbiAgICB9LFxuICAgIG5vZGVzOiB3cml0ZU5vZGVzKGcpLFxuICAgIGVkZ2VzOiB3cml0ZUVkZ2VzKGcpXG4gIH07XG4gIGlmICghXy5pc1VuZGVmaW5lZChnLmdyYXBoKCkpKSB7XG4gICAganNvbi52YWx1ZSA9IF8uY2xvbmUoZy5ncmFwaCgpKTtcbiAgfVxuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gd3JpdGVOb2RlcyhnKSB7XG4gIHJldHVybiBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZVZhbHVlID0gZy5ub2RlKHYpLFxuICAgICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KSxcbiAgICAgICAgbm9kZSA9IHsgdjogdiB9O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChub2RlVmFsdWUpKSB7XG4gICAgICBub2RlLnZhbHVlID0gbm9kZVZhbHVlO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFyZW50KSkge1xuICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVFZGdlcyhnKSB7XG4gIHJldHVybiBfLm1hcChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZVZhbHVlID0gZy5lZGdlKGUpLFxuICAgICAgICBlZGdlID0geyB2OiBlLnYsIHc6IGUudyB9O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlLm5hbWUpKSB7XG4gICAgICBlZGdlLm5hbWUgPSBlLm5hbWU7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChlZGdlVmFsdWUpKSB7XG4gICAgICBlZGdlLnZhbHVlID0gZWRnZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZWRnZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWQoanNvbikge1xuICB2YXIgZyA9IG5ldyBHcmFwaChqc29uLm9wdGlvbnMpLnNldEdyYXBoKGpzb24udmFsdWUpO1xuICBfLmVhY2goanNvbi5ub2RlcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBnLnNldE5vZGUoZW50cnkudiwgZW50cnkudmFsdWUpO1xuICAgIGlmIChlbnRyeS5wYXJlbnQpIHtcbiAgICAgIGcuc2V0UGFyZW50KGVudHJ5LnYsIGVudHJ5LnBhcmVudCk7XG4gICAgfVxuICB9KTtcbiAgXy5lYWNoKGpzb24uZWRnZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXRFZGdlKHsgdjogZW50cnkudiwgdzogZW50cnkudywgbmFtZTogZW50cnkubmFtZSB9LCBlbnRyeS52YWx1ZSk7XG4gIH0pO1xuICByZXR1cm4gZztcbn1cbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cblxudmFyIGxvZGFzaDtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBsb2Rhc2ggPSByZXF1aXJlKFwibG9kYXNoXCIpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuNSc7XG4iLCJ2YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKVxudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpXG5cbnZhciBodHRwcyA9IG1vZHVsZS5leHBvcnRzXG5cbmZvciAodmFyIGtleSBpbiBodHRwKSB7XG4gIGlmIChodHRwLmhhc093blByb3BlcnR5KGtleSkpIGh0dHBzW2tleV0gPSBodHRwW2tleV1cbn1cblxuaHR0cHMucmVxdWVzdCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNiKSB7XG4gIHBhcmFtcyA9IHZhbGlkYXRlUGFyYW1zKHBhcmFtcylcbiAgcmV0dXJuIGh0dHAucmVxdWVzdC5jYWxsKHRoaXMsIHBhcmFtcywgY2IpXG59XG5cbmh0dHBzLmdldCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNiKSB7XG4gIHBhcmFtcyA9IHZhbGlkYXRlUGFyYW1zKHBhcmFtcylcbiAgcmV0dXJuIGh0dHAuZ2V0LmNhbGwodGhpcywgcGFyYW1zLCBjYilcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQYXJhbXMgKHBhcmFtcykge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICBwYXJhbXMgPSB1cmwucGFyc2UocGFyYW1zKVxuICB9XG4gIGlmICghcGFyYW1zLnByb3RvY29sKSB7XG4gICAgcGFyYW1zLnByb3RvY29sID0gJ2h0dHBzOidcbiAgfVxuICBpZiAocGFyYW1zLnByb3RvY29sICE9PSAnaHR0cHM6Jykge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvdG9jb2wgXCInICsgcGFyYW1zLnByb3RvY29sICsgJ1wiIG5vdCBzdXBwb3J0ZWQuIEV4cGVjdGVkIFwiaHR0cHM6XCInKVxuICB9XG4gIHJldHVybiBwYXJhbXNcbn1cbiIsImV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gKGUgKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gKG0gKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAoKHZhbHVlICogYykgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxuLy8gVGhlIF9pc0J1ZmZlciBjaGVjayBpcyBmb3IgU2FmYXJpIDUtNyBzdXBwb3J0LCBiZWNhdXNlIGl0J3MgbWlzc2luZ1xuLy8gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoaXNCdWZmZXIob2JqKSB8fCBpc1Nsb3dCdWZmZXIob2JqKSB8fCAhIW9iai5faXNCdWZmZXIpXG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyIChvYmopIHtcbiAgcmV0dXJuICEhb2JqLmNvbnN0cnVjdG9yICYmIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cblxuLy8gRm9yIE5vZGUgdjAuMTAgc3VwcG9ydC4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIGlzU2xvd0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqLnJlYWRGbG9hdExFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouc2xpY2UgPT09ICdmdW5jdGlvbicgJiYgaXNCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKlxuICogIGJhc2U2NC5qc1xuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuXG4gKiAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogIFJlZmVyZW5jZXM6XG4gKiAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NFxuICovXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoZ2xvYmFsKVxuICAgICAgICA6IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZFxuICAgICAgICA/IGRlZmluZShmYWN0b3J5KSA6IGZhY3RvcnkoZ2xvYmFsKVxufSgoXG4gICAgdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZlxuICAgICAgICA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93XG4gICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxcbjogdGhpc1xuKSwgZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIC8vIGV4aXN0aW5nIHZlcnNpb24gZm9yIG5vQ29uZmxpY3QoKVxuICAgIHZhciBfQmFzZTY0ID0gZ2xvYmFsLkJhc2U2NDtcbiAgICB2YXIgdmVyc2lvbiA9IFwiMi40LjlcIjtcbiAgICAvLyBpZiBub2RlLmpzIGFuZCBOT1QgUmVhY3QgTmF0aXZlLCB3ZSB1c2UgQnVmZmVyXG4gICAgdmFyIGJ1ZmZlcjtcbiAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IGV2YWwoXCJyZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcIik7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgYnVmZmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnN0YW50c1xuICAgIHZhciBiNjRjaGFyc1xuICAgICAgICA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcbiAgICB2YXIgYjY0dGFiID0gZnVuY3Rpb24oYmluKSB7XG4gICAgICAgIHZhciB0ID0ge307XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYmluLmxlbmd0aDsgaSA8IGw7IGkrKykgdFtiaW4uY2hhckF0KGkpXSA9IGk7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH0oYjY0Y2hhcnMpO1xuICAgIHZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICAgIC8vIGVuY29kZXIgc3R1ZmZcbiAgICB2YXIgY2JfdXRvYiA9IGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgaWYgKGMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgdmFyIGNjID0gYy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgcmV0dXJuIGNjIDwgMHg4MCA/IGNcbiAgICAgICAgICAgICAgICA6IGNjIDwgMHg4MDAgPyAoZnJvbUNoYXJDb2RlKDB4YzAgfCAoY2MgPj4+IDYpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGZyb21DaGFyQ29kZSgweDgwIHwgKGNjICYgMHgzZikpKVxuICAgICAgICAgICAgICAgIDogKGZyb21DaGFyQ29kZSgweGUwIHwgKChjYyA+Pj4gMTIpICYgMHgwZikpXG4gICAgICAgICAgICAgICAgICAgKyBmcm9tQ2hhckNvZGUoMHg4MCB8ICgoY2MgPj4+ICA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgICAgICAgICsgZnJvbUNoYXJDb2RlKDB4ODAgfCAoIGNjICAgICAgICAgJiAweDNmKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNjID0gMHgxMDAwMFxuICAgICAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgwKSAtIDB4RDgwMCkgKiAweDQwMFxuICAgICAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgxKSAtIDB4REMwMCk7XG4gICAgICAgICAgICByZXR1cm4gKGZyb21DaGFyQ29kZSgweGYwIHwgKChjYyA+Pj4gMTgpICYgMHgwNykpXG4gICAgICAgICAgICAgICAgICAgICsgZnJvbUNoYXJDb2RlKDB4ODAgfCAoKGNjID4+PiAxMikgJiAweDNmKSlcbiAgICAgICAgICAgICAgICAgICAgKyBmcm9tQ2hhckNvZGUoMHg4MCB8ICgoY2MgPj4+ICA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgICAgICAgICArIGZyb21DaGFyQ29kZSgweDgwIHwgKCBjYyAgICAgICAgICYgMHgzZikpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIHJlX3V0b2IgPSAvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGRl18W15cXHgwMC1cXHg3Rl0vZztcbiAgICB2YXIgdXRvYiA9IGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgcmV0dXJuIHUucmVwbGFjZShyZV91dG9iLCBjYl91dG9iKTtcbiAgICB9O1xuICAgIHZhciBjYl9lbmNvZGUgPSBmdW5jdGlvbihjY2MpIHtcbiAgICAgICAgdmFyIHBhZGxlbiA9IFswLCAyLCAxXVtjY2MubGVuZ3RoICUgM10sXG4gICAgICAgIG9yZCA9IGNjYy5jaGFyQ29kZUF0KDApIDw8IDE2XG4gICAgICAgICAgICB8ICgoY2NjLmxlbmd0aCA+IDEgPyBjY2MuY2hhckNvZGVBdCgxKSA6IDApIDw8IDgpXG4gICAgICAgICAgICB8ICgoY2NjLmxlbmd0aCA+IDIgPyBjY2MuY2hhckNvZGVBdCgyKSA6IDApKSxcbiAgICAgICAgY2hhcnMgPSBbXG4gICAgICAgICAgICBiNjRjaGFycy5jaGFyQXQoIG9yZCA+Pj4gMTgpLFxuICAgICAgICAgICAgYjY0Y2hhcnMuY2hhckF0KChvcmQgPj4+IDEyKSAmIDYzKSxcbiAgICAgICAgICAgIHBhZGxlbiA+PSAyID8gJz0nIDogYjY0Y2hhcnMuY2hhckF0KChvcmQgPj4+IDYpICYgNjMpLFxuICAgICAgICAgICAgcGFkbGVuID49IDEgPyAnPScgOiBiNjRjaGFycy5jaGFyQXQob3JkICYgNjMpXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgICB9O1xuICAgIHZhciBidG9hID0gZ2xvYmFsLmJ0b2EgPyBmdW5jdGlvbihiKSB7XG4gICAgICAgIHJldHVybiBnbG9iYWwuYnRvYShiKTtcbiAgICB9IDogZnVuY3Rpb24oYikge1xuICAgICAgICByZXR1cm4gYi5yZXBsYWNlKC9bXFxzXFxTXXsxLDN9L2csIGNiX2VuY29kZSk7XG4gICAgfTtcbiAgICB2YXIgX2VuY29kZSA9IGJ1ZmZlciA/XG4gICAgICAgIGJ1ZmZlci5mcm9tICYmIFVpbnQ4QXJyYXkgJiYgYnVmZmVyLmZyb20gIT09IFVpbnQ4QXJyYXkuZnJvbVxuICAgICAgICA/IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gKHUuY29uc3RydWN0b3IgPT09IGJ1ZmZlci5jb25zdHJ1Y3RvciA/IHUgOiBidWZmZXIuZnJvbSh1KSlcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIH1cbiAgICAgICAgOiAgZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICAgIHJldHVybiAodS5jb25zdHJ1Y3RvciA9PT0gYnVmZmVyLmNvbnN0cnVjdG9yID8gdSA6IG5ldyAgYnVmZmVyKHUpKVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygnYmFzZTY0JylcbiAgICAgICAgfVxuICAgICAgICA6IGZ1bmN0aW9uICh1KSB7IHJldHVybiBidG9hKHV0b2IodSkpIH1cbiAgICA7XG4gICAgdmFyIGVuY29kZSA9IGZ1bmN0aW9uKHUsIHVyaXNhZmUpIHtcbiAgICAgICAgcmV0dXJuICF1cmlzYWZlXG4gICAgICAgICAgICA/IF9lbmNvZGUoU3RyaW5nKHUpKVxuICAgICAgICAgICAgOiBfZW5jb2RlKFN0cmluZyh1KSkucmVwbGFjZSgvWytcXC9dL2csIGZ1bmN0aW9uKG0wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG0wID09ICcrJyA/ICctJyA6ICdfJztcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLz0vZywgJycpO1xuICAgIH07XG4gICAgdmFyIGVuY29kZVVSSSA9IGZ1bmN0aW9uKHUpIHsgcmV0dXJuIGVuY29kZSh1LCB0cnVlKSB9O1xuICAgIC8vIGRlY29kZXIgc3R1ZmZcbiAgICB2YXIgcmVfYnRvdSA9IG5ldyBSZWdFeHAoW1xuICAgICAgICAnW1xceEMwLVxceERGXVtcXHg4MC1cXHhCRl0nLFxuICAgICAgICAnW1xceEUwLVxceEVGXVtcXHg4MC1cXHhCRl17Mn0nLFxuICAgICAgICAnW1xceEYwLVxceEY3XVtcXHg4MC1cXHhCRl17M30nXG4gICAgXS5qb2luKCd8JyksICdnJyk7XG4gICAgdmFyIGNiX2J0b3UgPSBmdW5jdGlvbihjY2NjKSB7XG4gICAgICAgIHN3aXRjaChjY2NjLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICB2YXIgY3AgPSAoKDB4MDcgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDE4KVxuICAgICAgICAgICAgICAgIHwgICAgKCgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKSA8PCAxMilcbiAgICAgICAgICAgICAgICB8ICAgICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgyKSkgPDwgIDYpXG4gICAgICAgICAgICAgICAgfCAgICAgKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMykpLFxuICAgICAgICAgICAgb2Zmc2V0ID0gY3AgLSAweDEwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIChmcm9tQ2hhckNvZGUoKG9mZnNldCAgPj4+IDEwKSArIDB4RDgwMClcbiAgICAgICAgICAgICAgICAgICAgKyBmcm9tQ2hhckNvZGUoKG9mZnNldCAmIDB4M0ZGKSArIDB4REMwMCkpO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZnJvbUNoYXJDb2RlKFxuICAgICAgICAgICAgICAgICgoMHgwZiAmIGNjY2MuY2hhckNvZGVBdCgwKSkgPDwgMTIpXG4gICAgICAgICAgICAgICAgICAgIHwgKCgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKSA8PCA2KVxuICAgICAgICAgICAgICAgICAgICB8ICAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgyKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gIGZyb21DaGFyQ29kZShcbiAgICAgICAgICAgICAgICAoKDB4MWYgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDYpXG4gICAgICAgICAgICAgICAgICAgIHwgICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGJ0b3UgPSBmdW5jdGlvbihiKSB7XG4gICAgICAgIHJldHVybiBiLnJlcGxhY2UocmVfYnRvdSwgY2JfYnRvdSk7XG4gICAgfTtcbiAgICB2YXIgY2JfZGVjb2RlID0gZnVuY3Rpb24oY2NjYykge1xuICAgICAgICB2YXIgbGVuID0gY2NjYy5sZW5ndGgsXG4gICAgICAgIHBhZGxlbiA9IGxlbiAlIDQsXG4gICAgICAgIG4gPSAobGVuID4gMCA/IGI2NHRhYltjY2NjLmNoYXJBdCgwKV0gPDwgMTggOiAwKVxuICAgICAgICAgICAgfCAobGVuID4gMSA/IGI2NHRhYltjY2NjLmNoYXJBdCgxKV0gPDwgMTIgOiAwKVxuICAgICAgICAgICAgfCAobGVuID4gMiA/IGI2NHRhYltjY2NjLmNoYXJBdCgyKV0gPDwgIDYgOiAwKVxuICAgICAgICAgICAgfCAobGVuID4gMyA/IGI2NHRhYltjY2NjLmNoYXJBdCgzKV0gICAgICAgOiAwKSxcbiAgICAgICAgY2hhcnMgPSBbXG4gICAgICAgICAgICBmcm9tQ2hhckNvZGUoIG4gPj4+IDE2KSxcbiAgICAgICAgICAgIGZyb21DaGFyQ29kZSgobiA+Pj4gIDgpICYgMHhmZiksXG4gICAgICAgICAgICBmcm9tQ2hhckNvZGUoIG4gICAgICAgICAmIDB4ZmYpXG4gICAgICAgIF07XG4gICAgICAgIGNoYXJzLmxlbmd0aCAtPSBbMCwgMCwgMiwgMV1bcGFkbGVuXTtcbiAgICAgICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICAgIH07XG4gICAgdmFyIGF0b2IgPSBnbG9iYWwuYXRvYiA/IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbC5hdG9iKGEpO1xuICAgIH0gOiBmdW5jdGlvbihhKXtcbiAgICAgICAgcmV0dXJuIGEucmVwbGFjZSgvW1xcc1xcU117MSw0fS9nLCBjYl9kZWNvZGUpO1xuICAgIH07XG4gICAgdmFyIF9kZWNvZGUgPSBidWZmZXIgP1xuICAgICAgICBidWZmZXIuZnJvbSAmJiBVaW50OEFycmF5ICYmIGJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb21cbiAgICAgICAgPyBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGEuY29uc3RydWN0b3IgPT09IGJ1ZmZlci5jb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAgICAgICA/IGEgOiBidWZmZXIuZnJvbShhLCAnYmFzZTY0JykpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgOiBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGEuY29uc3RydWN0b3IgPT09IGJ1ZmZlci5jb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAgICAgICA/IGEgOiBuZXcgYnVmZmVyKGEsICdiYXNlNjQnKSkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICA6IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGJ0b3UoYXRvYihhKSkgfTtcbiAgICB2YXIgZGVjb2RlID0gZnVuY3Rpb24oYSl7XG4gICAgICAgIHJldHVybiBfZGVjb2RlKFxuICAgICAgICAgICAgU3RyaW5nKGEpLnJlcGxhY2UoL1stX10vZywgZnVuY3Rpb24obTApIHsgcmV0dXJuIG0wID09ICctJyA/ICcrJyA6ICcvJyB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXkEtWmEtejAtOVxcK1xcL10vZywgJycpXG4gICAgICAgICk7XG4gICAgfTtcbiAgICB2YXIgbm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgQmFzZTY0ID0gZ2xvYmFsLkJhc2U2NDtcbiAgICAgICAgZ2xvYmFsLkJhc2U2NCA9IF9CYXNlNjQ7XG4gICAgICAgIHJldHVybiBCYXNlNjQ7XG4gICAgfTtcbiAgICAvLyBleHBvcnQgQmFzZTY0XG4gICAgZ2xvYmFsLkJhc2U2NCA9IHtcbiAgICAgICAgVkVSU0lPTjogdmVyc2lvbixcbiAgICAgICAgYXRvYjogYXRvYixcbiAgICAgICAgYnRvYTogYnRvYSxcbiAgICAgICAgZnJvbUJhc2U2NDogZGVjb2RlLFxuICAgICAgICB0b0Jhc2U2NDogZW5jb2RlLFxuICAgICAgICB1dG9iOiB1dG9iLFxuICAgICAgICBlbmNvZGU6IGVuY29kZSxcbiAgICAgICAgZW5jb2RlVVJJOiBlbmNvZGVVUkksXG4gICAgICAgIGJ0b3U6IGJ0b3UsXG4gICAgICAgIGRlY29kZTogZGVjb2RlLFxuICAgICAgICBub0NvbmZsaWN0OiBub0NvbmZsaWN0LFxuICAgICAgICBfX2J1ZmZlcl9fOiBidWZmZXJcbiAgICB9O1xuICAgIC8vIGlmIEVTNSBpcyBhdmFpbGFibGUsIG1ha2UgQmFzZTY0LmV4dGVuZFN0cmluZygpIGF2YWlsYWJsZVxuICAgIGlmICh0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBub0VudW0gPSBmdW5jdGlvbih2KXtcbiAgICAgICAgICAgIHJldHVybiB7dmFsdWU6dixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9O1xuICAgICAgICB9O1xuICAgICAgICBnbG9iYWwuQmFzZTY0LmV4dGVuZFN0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICBTdHJpbmcucHJvdG90eXBlLCAnZnJvbUJhc2U2NCcsIG5vRW51bShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGUodGhpcylcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgU3RyaW5nLnByb3RvdHlwZSwgJ3RvQmFzZTY0Jywgbm9FbnVtKGZ1bmN0aW9uICh1cmlzYWZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGUodGhpcywgdXJpc2FmZSlcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgU3RyaW5nLnByb3RvdHlwZSwgJ3RvQmFzZTY0VVJJJywgbm9FbnVtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZSh0aGlzLCB0cnVlKVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBleHBvcnQgQmFzZTY0IHRvIHRoZSBuYW1lc3BhY2VcbiAgICAvL1xuICAgIGlmIChnbG9iYWxbJ01ldGVvciddKSB7IC8vIE1ldGVvci5qc1xuICAgICAgICBCYXNlNjQgPSBnbG9iYWwuQmFzZTY0O1xuICAgIH1cbiAgICAvLyBtb2R1bGUuZXhwb3J0cyBhbmQgQU1EIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4gICAgLy8gbW9kdWxlLmV4cG9ydHMgaGFzIHByZWNlZGVuY2UuXG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzLkJhc2U2NCA9IGdsb2JhbC5CYXNlNjQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuXG4gICAgICAgIGRlZmluZShbXSwgZnVuY3Rpb24oKXsgcmV0dXJuIGdsb2JhbC5CYXNlNjQgfSk7XG4gICAgfVxuICAgIC8vIHRoYXQncyBpdCFcbiAgICByZXR1cm4ge0Jhc2U2NDogZ2xvYmFsLkJhc2U2NH1cbn0pKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgeWFtbCA9IHJlcXVpcmUoJy4vbGliL2pzLXlhbWwuanMnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHlhbWw7XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIGxvYWRlciA9IHJlcXVpcmUoJy4vanMteWFtbC9sb2FkZXInKTtcbnZhciBkdW1wZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvZHVtcGVyJyk7XG5cblxuZnVuY3Rpb24gZGVwcmVjYXRlZChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiAnICsgbmFtZSArICcgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQuJyk7XG4gIH07XG59XG5cblxubW9kdWxlLmV4cG9ydHMuVHlwZSAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC90eXBlJyk7XG5tb2R1bGUuZXhwb3J0cy5TY2hlbWEgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYScpO1xubW9kdWxlLmV4cG9ydHMuRkFJTFNBRkVfU0NIRU1BICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkpTT05fU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2pzb24nKTtcbm1vZHVsZS5leHBvcnRzLkNPUkVfU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2NvcmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICAgICAgICAgID0gbG9hZGVyLmxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICAgICAgICAgID0gbG9hZGVyLmxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZCAgICAgICAgICAgID0gbG9hZGVyLnNhZmVMb2FkO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLmR1bXAgICAgICAgICAgICAgICAgPSBkdW1wZXIuZHVtcDtcbm1vZHVsZS5leHBvcnRzLnNhZmVEdW1wICAgICAgICAgICAgPSBkdW1wZXIuc2FmZUR1bXA7XG5tb2R1bGUuZXhwb3J0cy5ZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL2V4Y2VwdGlvbicpO1xuXG4vLyBEZXByZWNhdGVkIHNjaGVtYSBuYW1lcyBmcm9tIEpTLVlBTUwgMi4wLnhcbm1vZHVsZS5leHBvcnRzLk1JTklNQUxfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuU0FGRV9TQ0hFTUEgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xuXG4vLyBEZXByZWNhdGVkIGZ1bmN0aW9ucyBmcm9tIEpTLVlBTUwgMS54Lnhcbm1vZHVsZS5leHBvcnRzLnNjYW4gICAgICAgICAgID0gZGVwcmVjYXRlZCgnc2NhbicpO1xubW9kdWxlLmV4cG9ydHMucGFyc2UgICAgICAgICAgPSBkZXByZWNhdGVkKCdwYXJzZScpO1xubW9kdWxlLmV4cG9ydHMuY29tcG9zZSAgICAgICAgPSBkZXByZWNhdGVkKCdjb21wb3NlJyk7XG5tb2R1bGUuZXhwb3J0cy5hZGRDb25zdHJ1Y3RvciA9IGRlcHJlY2F0ZWQoJ2FkZENvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cblxuZnVuY3Rpb24gaXNOb3RoaW5nKHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ3VuZGVmaW5lZCcpIHx8IChzdWJqZWN0ID09PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICdvYmplY3QnKSAmJiAoc3ViamVjdCAhPT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gdG9BcnJheShzZXF1ZW5jZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShzZXF1ZW5jZSkpIHJldHVybiBzZXF1ZW5jZTtcbiAgZWxzZSBpZiAoaXNOb3RoaW5nKHNlcXVlbmNlKSkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBbIHNlcXVlbmNlIF07XG59XG5cblxuZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCBrZXksIHNvdXJjZUtleXM7XG5cbiAgaWYgKHNvdXJjZSkge1xuICAgIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHNvdXJjZUtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAga2V5ID0gc291cmNlS2V5c1tpbmRleF07XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cblxuZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgY291bnQpIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBjeWNsZTtcblxuICBmb3IgKGN5Y2xlID0gMDsgY3ljbGUgPCBjb3VudDsgY3ljbGUgKz0gMSkge1xuICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmVaZXJvKG51bWJlcikge1xuICByZXR1cm4gKG51bWJlciA9PT0gMCkgJiYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gMSAvIG51bWJlcik7XG59XG5cblxubW9kdWxlLmV4cG9ydHMuaXNOb3RoaW5nICAgICAgPSBpc05vdGhpbmc7XG5tb2R1bGUuZXhwb3J0cy5pc09iamVjdCAgICAgICA9IGlzT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMudG9BcnJheSAgICAgICAgPSB0b0FycmF5O1xubW9kdWxlLmV4cG9ydHMucmVwZWF0ICAgICAgICAgPSByZXBlYXQ7XG5tb2R1bGUuZXhwb3J0cy5pc05lZ2F0aXZlWmVybyA9IGlzTmVnYXRpdmVaZXJvO1xubW9kdWxlLmV4cG9ydHMuZXh0ZW5kICAgICAgICAgPSBleHRlbmQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcblxudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIENIQVJfVEFCICAgICAgICAgICAgICAgICAgPSAweDA5OyAvKiBUYWIgKi9cbnZhciBDSEFSX0xJTkVfRkVFRCAgICAgICAgICAgID0gMHgwQTsgLyogTEYgKi9cbnZhciBDSEFSX1NQQUNFICAgICAgICAgICAgICAgID0gMHgyMDsgLyogU3BhY2UgKi9cbnZhciBDSEFSX0VYQ0xBTUFUSU9OICAgICAgICAgID0gMHgyMTsgLyogISAqL1xudmFyIENIQVJfRE9VQkxFX1FVT1RFICAgICAgICAgPSAweDIyOyAvKiBcIiAqL1xudmFyIENIQVJfU0hBUlAgICAgICAgICAgICAgICAgPSAweDIzOyAvKiAjICovXG52YXIgQ0hBUl9QRVJDRU5UICAgICAgICAgICAgICA9IDB4MjU7IC8qICUgKi9cbnZhciBDSEFSX0FNUEVSU0FORCAgICAgICAgICAgID0gMHgyNjsgLyogJiAqL1xudmFyIENIQVJfU0lOR0xFX1FVT1RFICAgICAgICAgPSAweDI3OyAvKiAnICovXG52YXIgQ0hBUl9BU1RFUklTSyAgICAgICAgICAgICA9IDB4MkE7IC8qICogKi9cbnZhciBDSEFSX0NPTU1BICAgICAgICAgICAgICAgID0gMHgyQzsgLyogLCAqL1xudmFyIENIQVJfTUlOVVMgICAgICAgICAgICAgICAgPSAweDJEOyAvKiAtICovXG52YXIgQ0hBUl9DT0xPTiAgICAgICAgICAgICAgICA9IDB4M0E7IC8qIDogKi9cbnZhciBDSEFSX0dSRUFURVJfVEhBTiAgICAgICAgID0gMHgzRTsgLyogPiAqL1xudmFyIENIQVJfUVVFU1RJT04gICAgICAgICAgICAgPSAweDNGOyAvKiA/ICovXG52YXIgQ0hBUl9DT01NRVJDSUFMX0FUICAgICAgICA9IDB4NDA7IC8qIEAgKi9cbnZhciBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgID0gMHg1QjsgLyogWyAqL1xudmFyIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSAweDVEOyAvKiBdICovXG52YXIgQ0hBUl9HUkFWRV9BQ0NFTlQgICAgICAgICA9IDB4NjA7IC8qIGAgKi9cbnZhciBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVCAgID0gMHg3QjsgLyogeyAqL1xudmFyIENIQVJfVkVSVElDQUxfTElORSAgICAgICAgPSAweDdDOyAvKiB8ICovXG52YXIgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUICA9IDB4N0Q7IC8qIH0gKi9cblxudmFyIEVTQ0FQRV9TRVFVRU5DRVMgPSB7fTtcblxuRVNDQVBFX1NFUVVFTkNFU1sweDAwXSAgID0gJ1xcXFwwJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwN10gICA9ICdcXFxcYSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDhdICAgPSAnXFxcXGInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA5XSAgID0gJ1xcXFx0JztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQV0gICA9ICdcXFxcbic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MEJdICAgPSAnXFxcXHYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBDXSAgID0gJ1xcXFxmJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwRF0gICA9ICdcXFxccic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MUJdICAgPSAnXFxcXGUnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIyXSAgID0gJ1xcXFxcIic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4NUNdICAgPSAnXFxcXFxcXFwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDg1XSAgID0gJ1xcXFxOJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHhBMF0gICA9ICdcXFxcXyc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOF0gPSAnXFxcXEwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIwMjldID0gJ1xcXFxQJztcblxudmFyIERFUFJFQ0FURURfQk9PTEVBTlNfU1lOVEFYID0gW1xuICAneScsICdZJywgJ3llcycsICdZZXMnLCAnWUVTJywgJ29uJywgJ09uJywgJ09OJyxcbiAgJ24nLCAnTicsICdubycsICdObycsICdOTycsICdvZmYnLCAnT2ZmJywgJ09GRidcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZU1hcChzY2hlbWEsIG1hcCkge1xuICB2YXIgcmVzdWx0LCBrZXlzLCBpbmRleCwgbGVuZ3RoLCB0YWcsIHN0eWxlLCB0eXBlO1xuXG4gIGlmIChtYXAgPT09IG51bGwpIHJldHVybiB7fTtcblxuICByZXN1bHQgPSB7fTtcbiAga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHRhZyA9IGtleXNbaW5kZXhdO1xuICAgIHN0eWxlID0gU3RyaW5nKG1hcFt0YWddKTtcblxuICAgIGlmICh0YWcuc2xpY2UoMCwgMikgPT09ICchIScpIHtcbiAgICAgIHRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnLnNsaWNlKDIpO1xuICAgIH1cbiAgICB0eXBlID0gc2NoZW1hLmNvbXBpbGVkVHlwZU1hcFsnZmFsbGJhY2snXVt0YWddO1xuXG4gICAgaWYgKHR5cGUgJiYgX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5zdHlsZUFsaWFzZXMsIHN0eWxlKSkge1xuICAgICAgc3R5bGUgPSB0eXBlLnN0eWxlQWxpYXNlc1tzdHlsZV07XG4gICAgfVxuXG4gICAgcmVzdWx0W3RhZ10gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZUhleChjaGFyYWN0ZXIpIHtcbiAgdmFyIHN0cmluZywgaGFuZGxlLCBsZW5ndGg7XG5cbiAgc3RyaW5nID0gY2hhcmFjdGVyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgPD0gMHhGRikge1xuICAgIGhhbmRsZSA9ICd4JztcbiAgICBsZW5ndGggPSAyO1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkYpIHtcbiAgICBoYW5kbGUgPSAndSc7XG4gICAgbGVuZ3RoID0gNDtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGRkZGRikge1xuICAgIGhhbmRsZSA9ICdVJztcbiAgICBsZW5ndGggPSA4O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdjb2RlIHBvaW50IHdpdGhpbiBhIHN0cmluZyBtYXkgbm90IGJlIGdyZWF0ZXIgdGhhbiAweEZGRkZGRkZGJyk7XG4gIH1cblxuICByZXR1cm4gJ1xcXFwnICsgaGFuZGxlICsgY29tbW9uLnJlcGVhdCgnMCcsIGxlbmd0aCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBTdGF0ZShvcHRpb25zKSB7XG4gIHRoaXMuc2NoZW1hICAgICAgID0gb3B0aW9uc1snc2NoZW1hJ10gfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5pbmRlbnQgICAgICAgPSBNYXRoLm1heCgxLCAob3B0aW9uc1snaW5kZW50J10gfHwgMikpO1xuICB0aGlzLnNraXBJbnZhbGlkICA9IG9wdGlvbnNbJ3NraXBJbnZhbGlkJ10gfHwgZmFsc2U7XG4gIHRoaXMuZmxvd0xldmVsICAgID0gKGNvbW1vbi5pc05vdGhpbmcob3B0aW9uc1snZmxvd0xldmVsJ10pID8gLTEgOiBvcHRpb25zWydmbG93TGV2ZWwnXSk7XG4gIHRoaXMuc3R5bGVNYXAgICAgID0gY29tcGlsZVN0eWxlTWFwKHRoaXMuc2NoZW1hLCBvcHRpb25zWydzdHlsZXMnXSB8fCBudWxsKTtcbiAgdGhpcy5zb3J0S2V5cyAgICAgPSBvcHRpb25zWydzb3J0S2V5cyddIHx8IGZhbHNlO1xuICB0aGlzLmxpbmVXaWR0aCAgICA9IG9wdGlvbnNbJ2xpbmVXaWR0aCddIHx8IDgwO1xuICB0aGlzLm5vUmVmcyAgICAgICA9IG9wdGlvbnNbJ25vUmVmcyddIHx8IGZhbHNlO1xuICB0aGlzLm5vQ29tcGF0TW9kZSA9IG9wdGlvbnNbJ25vQ29tcGF0TW9kZSddIHx8IGZhbHNlO1xuICB0aGlzLmNvbmRlbnNlRmxvdyA9IG9wdGlvbnNbJ2NvbmRlbnNlRmxvdyddIHx8IGZhbHNlO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMuZXhwbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkRXhwbGljaXQ7XG5cbiAgdGhpcy50YWcgPSBudWxsO1xuICB0aGlzLnJlc3VsdCA9ICcnO1xuXG4gIHRoaXMuZHVwbGljYXRlcyA9IFtdO1xuICB0aGlzLnVzZWREdXBsaWNhdGVzID0gbnVsbDtcbn1cblxuLy8gSW5kZW50cyBldmVyeSBsaW5lIGluIGEgc3RyaW5nLiBFbXB0eSBsaW5lcyAoXFxuIG9ubHkpIGFyZSBub3QgaW5kZW50ZWQuXG5mdW5jdGlvbiBpbmRlbnRTdHJpbmcoc3RyaW5nLCBzcGFjZXMpIHtcbiAgdmFyIGluZCA9IGNvbW1vbi5yZXBlYXQoJyAnLCBzcGFjZXMpLFxuICAgICAgcG9zaXRpb24gPSAwLFxuICAgICAgbmV4dCA9IC0xLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBsaW5lLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICBuZXh0ID0gc3RyaW5nLmluZGV4T2YoJ1xcbicsIHBvc2l0aW9uKTtcbiAgICBpZiAobmV4dCA9PT0gLTEpIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24pO1xuICAgICAgcG9zaXRpb24gPSBsZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24sIG5leHQgKyAxKTtcbiAgICAgIHBvc2l0aW9uID0gbmV4dCArIDE7XG4gICAgfVxuXG4gICAgaWYgKGxpbmUubGVuZ3RoICYmIGxpbmUgIT09ICdcXG4nKSByZXN1bHQgKz0gaW5kO1xuXG4gICAgcmVzdWx0ICs9IGxpbmU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCkge1xuICByZXR1cm4gJ1xcbicgKyBjb21tb24ucmVwZWF0KCcgJywgc3RhdGUuaW5kZW50ICogbGV2ZWwpO1xufVxuXG5mdW5jdGlvbiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cikge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwgdHlwZTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbaW5kZXhdO1xuXG4gICAgaWYgKHR5cGUucmVzb2x2ZShzdHIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFszM10gcy13aGl0ZSA6Oj0gcy1zcGFjZSB8IHMtdGFiXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoYykge1xuICByZXR1cm4gYyA9PT0gQ0hBUl9TUEFDRSB8fCBjID09PSBDSEFSX1RBQjtcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgY2FuIGJlIHByaW50ZWQgd2l0aG91dCBlc2NhcGluZy5cbi8vIEZyb20gWUFNTCAxLjI6IFwiYW55IGFsbG93ZWQgY2hhcmFjdGVycyBrbm93biB0byBiZSBub24tcHJpbnRhYmxlXG4vLyBzaG91bGQgYWxzbyBiZSBlc2NhcGVkLiBbSG93ZXZlcixdIFRoaXMgaXNu4oCZdCBtYW5kYXRvcnlcIlxuLy8gRGVyaXZlZCBmcm9tIG5iLWNoYXIgLSBcXHQgLSAjeDg1IC0gI3hBMCAtICN4MjAyOCAtICN4MjAyOS5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKGMpIHtcbiAgcmV0dXJuICAoMHgwMDAyMCA8PSBjICYmIGMgPD0gMHgwMDAwN0UpXG4gICAgICB8fCAoKDB4MDAwQTEgPD0gYyAmJiBjIDw9IDB4MDBEN0ZGKSAmJiBjICE9PSAweDIwMjggJiYgYyAhPT0gMHgyMDI5KVxuICAgICAgfHwgKCgweDBFMDAwIDw9IGMgJiYgYyA8PSAweDAwRkZGRCkgJiYgYyAhPT0gMHhGRUZGIC8qIEJPTSAqLylcbiAgICAgIHx8ICAoMHgxMDAwMCA8PSBjICYmIGMgPD0gMHgxMEZGRkYpO1xufVxuXG4vLyBTaW1wbGlmaWVkIHRlc3QgZm9yIHZhbHVlcyBhbGxvd2VkIGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUuXG5mdW5jdGlvbiBpc1BsYWluU2FmZShjKSB7XG4gIC8vIFVzZXMgYSBzdWJzZXQgb2YgbmItY2hhciAtIGMtZmxvdy1pbmRpY2F0b3IgLSBcIjpcIiAtIFwiI1wiXG4gIC8vIHdoZXJlIG5iLWNoYXIgOjo9IGMtcHJpbnRhYmxlIC0gYi1jaGFyIC0gYy1ieXRlLW9yZGVyLW1hcmsuXG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkZcbiAgICAvLyAtIGMtZmxvdy1pbmRpY2F0b3JcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1BXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gICAgLy8gLSBcIjpcIiAtIFwiI1wiXG4gICAgJiYgYyAhPT0gQ0hBUl9DT0xPTlxuICAgICYmIGMgIT09IENIQVJfU0hBUlA7XG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlRmlyc3QoYykge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5zLWNoYXIgLSBjLWluZGljYXRvclxuICAvLyB3aGVyZSBucy1jaGFyID0gbmItY2hhciAtIHMtd2hpdGUuXG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkZcbiAgICAmJiAhaXNXaGl0ZXNwYWNlKGMpIC8vIC0gcy13aGl0ZVxuICAgIC8vIC0gKGMtaW5kaWNhdG9yIDo6PVxuICAgIC8vIOKAnC3igJ0gfCDigJw/4oCdIHwg4oCcOuKAnSB8IOKAnCzigJ0gfCDigJxb4oCdIHwg4oCcXeKAnSB8IOKAnHvigJ0gfCDigJx94oCdXG4gICAgJiYgYyAhPT0gQ0hBUl9NSU5VU1xuICAgICYmIGMgIT09IENIQVJfUVVFU1RJT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTE9OXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIHwg4oCcI+KAnSB8IOKAnCbigJ0gfCDigJwq4oCdIHwg4oCcIeKAnSB8IOKAnHzigJ0gfCDigJw+4oCdIHwg4oCcJ+KAnSB8IOKAnFwi4oCdXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUFxuICAgICYmIGMgIT09IENIQVJfQU1QRVJTQU5EXG4gICAgJiYgYyAhPT0gQ0hBUl9BU1RFUklTS1xuICAgICYmIGMgIT09IENIQVJfRVhDTEFNQVRJT05cbiAgICAmJiBjICE9PSBDSEFSX1ZFUlRJQ0FMX0xJTkVcbiAgICAmJiBjICE9PSBDSEFSX0dSRUFURVJfVEhBTlxuICAgICYmIGMgIT09IENIQVJfU0lOR0xFX1FVT1RFXG4gICAgJiYgYyAhPT0gQ0hBUl9ET1VCTEVfUVVPVEVcbiAgICAvLyB8IOKAnCXigJ0gfCDigJxA4oCdIHwg4oCcYOKAnSlcbiAgICAmJiBjICE9PSBDSEFSX1BFUkNFTlRcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1FUkNJQUxfQVRcbiAgICAmJiBjICE9PSBDSEFSX0dSQVZFX0FDQ0VOVDtcbn1cblxuLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBpcyByZXF1aXJlZC5cbmZ1bmN0aW9uIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSB7XG4gIHZhciBsZWFkaW5nU3BhY2VSZSA9IC9eXFxuKiAvO1xuICByZXR1cm4gbGVhZGluZ1NwYWNlUmUudGVzdChzdHJpbmcpO1xufVxuXG52YXIgU1RZTEVfUExBSU4gICA9IDEsXG4gICAgU1RZTEVfU0lOR0xFICA9IDIsXG4gICAgU1RZTEVfTElURVJBTCA9IDMsXG4gICAgU1RZTEVfRk9MREVEICA9IDQsXG4gICAgU1RZTEVfRE9VQkxFICA9IDU7XG5cbi8vIERldGVybWluZXMgd2hpY2ggc2NhbGFyIHN0eWxlcyBhcmUgcG9zc2libGUgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBzdHlsZS5cbi8vIGxpbmVXaWR0aCA9IC0xID0+IG5vIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0ci5sZW5ndGggPiAwLlxuLy8gUG9zdC1jb25kaXRpb25zOlxuLy8gICAgU1RZTEVfUExBSU4gb3IgU1RZTEVfU0lOR0xFID0+IG5vIFxcbiBhcmUgaW4gdGhlIHN0cmluZy5cbi8vICAgIFNUWUxFX0xJVEVSQUwgPT4gbm8gbGluZXMgYXJlIHN1aXRhYmxlIGZvciBmb2xkaW5nIChvciBsaW5lV2lkdGggaXMgLTEpLlxuLy8gICAgU1RZTEVfRk9MREVEID0+IGEgbGluZSA+IGxpbmVXaWR0aCBhbmQgY2FuIGJlIGZvbGRlZCAoYW5kIGxpbmVXaWR0aCAhPSAtMSkuXG5mdW5jdGlvbiBjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBpbmRlbnRQZXJMZXZlbCwgbGluZVdpZHRoLCB0ZXN0QW1iaWd1b3VzVHlwZSkge1xuICB2YXIgaTtcbiAgdmFyIGNoYXI7XG4gIHZhciBoYXNMaW5lQnJlYWsgPSBmYWxzZTtcbiAgdmFyIGhhc0ZvbGRhYmxlTGluZSA9IGZhbHNlOyAvLyBvbmx5IGNoZWNrZWQgaWYgc2hvdWxkVHJhY2tXaWR0aFxuICB2YXIgc2hvdWxkVHJhY2tXaWR0aCA9IGxpbmVXaWR0aCAhPT0gLTE7XG4gIHZhciBwcmV2aW91c0xpbmVCcmVhayA9IC0xOyAvLyBjb3VudCB0aGUgZmlyc3QgbGluZSBjb3JyZWN0bHlcbiAgdmFyIHBsYWluID0gaXNQbGFpblNhZmVGaXJzdChzdHJpbmcuY2hhckNvZGVBdCgwKSlcbiAgICAgICAgICAmJiAhaXNXaGl0ZXNwYWNlKHN0cmluZy5jaGFyQ29kZUF0KHN0cmluZy5sZW5ndGggLSAxKSk7XG5cbiAgaWYgKHNpbmdsZUxpbmVPbmx5KSB7XG4gICAgLy8gQ2FzZTogbm8gYmxvY2sgc3R5bGVzLlxuICAgIC8vIENoZWNrIGZvciBkaXNhbGxvd2VkIGNoYXJhY3RlcnMgdG8gcnVsZSBvdXQgcGxhaW4gYW5kIHNpbmdsZS5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBDYXNlOiBibG9jayBzdHlsZXMgcGVybWl0dGVkLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjaGFyID09PSBDSEFSX0xJTkVfRkVFRCkge1xuICAgICAgICBoYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkgbGluZSBjYW4gYmUgZm9sZGVkLlxuICAgICAgICBpZiAoc2hvdWxkVHJhY2tXaWR0aCkge1xuICAgICAgICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fFxuICAgICAgICAgICAgLy8gRm9sZGFibGUgbGluZSA9IHRvbyBsb25nLCBhbmQgbm90IG1vcmUtaW5kZW50ZWQuXG4gICAgICAgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpO1xuICAgICAgICAgIHByZXZpb3VzTGluZUJyZWFrID0gaTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhcik7XG4gICAgfVxuICAgIC8vIGluIGNhc2UgdGhlIGVuZCBpcyBtaXNzaW5nIGEgXFxuXG4gICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8IChzaG91bGRUcmFja1dpZHRoICYmXG4gICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpKTtcbiAgfVxuICAvLyBBbHRob3VnaCBldmVyeSBzdHlsZSBjYW4gcmVwcmVzZW50IFxcbiB3aXRob3V0IGVzY2FwaW5nLCBwcmVmZXIgYmxvY2sgc3R5bGVzXG4gIC8vIGZvciBtdWx0aWxpbmUsIHNpbmNlIHRoZXkncmUgbW9yZSByZWFkYWJsZSBhbmQgdGhleSBkb24ndCBhZGQgZW1wdHkgbGluZXMuXG4gIC8vIEFsc28gcHJlZmVyIGZvbGRpbmcgYSBzdXBlci1sb25nIGxpbmUuXG4gIGlmICghaGFzTGluZUJyZWFrICYmICFoYXNGb2xkYWJsZUxpbmUpIHtcbiAgICAvLyBTdHJpbmdzIGludGVycHJldGFibGUgYXMgYW5vdGhlciB0eXBlIGhhdmUgdG8gYmUgcXVvdGVkO1xuICAgIC8vIGUuZy4gdGhlIHN0cmluZyAndHJ1ZScgdnMuIHRoZSBib29sZWFuIHRydWUuXG4gICAgcmV0dXJuIHBsYWluICYmICF0ZXN0QW1iaWd1b3VzVHlwZShzdHJpbmcpXG4gICAgICA/IFNUWUxFX1BMQUlOIDogU1RZTEVfU0lOR0xFO1xuICB9XG4gIC8vIEVkZ2UgY2FzZTogYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGNhbiBvbmx5IGhhdmUgb25lIGRpZ2l0LlxuICBpZiAoaW5kZW50UGVyTGV2ZWwgPiA5ICYmIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSkge1xuICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gIH1cbiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGJsb2NrIHN0eWxlcyBhcmUgdmFsaWQuXG4gIC8vIFByZWZlciBsaXRlcmFsIHN0eWxlIHVubGVzcyB3ZSB3YW50IHRvIGZvbGQuXG4gIHJldHVybiBoYXNGb2xkYWJsZUxpbmUgPyBTVFlMRV9GT0xERUQgOiBTVFlMRV9MSVRFUkFMO1xufVxuXG4vLyBOb3RlOiBsaW5lIGJyZWFraW5nL2ZvbGRpbmcgaXMgaW1wbGVtZW50ZWQgZm9yIG9ubHkgdGhlIGZvbGRlZCBzdHlsZS5cbi8vIE5CLiBXZSBkcm9wIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUgKGlmIGFueSkgb2YgYSByZXR1cm5lZCBibG9jayBzY2FsYXJcbi8vICBzaW5jZSB0aGUgZHVtcGVyIGFkZHMgaXRzIG93biBuZXdsaW5lLiBUaGlzIGFsd2F5cyB3b3Jrczpcbi8vICAgIOKAoiBObyBlbmRpbmcgbmV3bGluZSA9PiB1bmFmZmVjdGVkOyBhbHJlYWR5IHVzaW5nIHN0cmlwIFwiLVwiIGNob21waW5nLlxuLy8gICAg4oCiIEVuZGluZyBuZXdsaW5lICAgID0+IHJlbW92ZWQgdGhlbiByZXN0b3JlZC5cbi8vICBJbXBvcnRhbnRseSwgdGhpcyBrZWVwcyB0aGUgXCIrXCIgY2hvbXAgaW5kaWNhdG9yIGZyb20gZ2FpbmluZyBhbiBleHRyYSBsaW5lLlxuZnVuY3Rpb24gd3JpdGVTY2FsYXIoc3RhdGUsIHN0cmluZywgbGV2ZWwsIGlza2V5KSB7XG4gIHN0YXRlLmR1bXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCInJ1wiO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLm5vQ29tcGF0TW9kZSAmJlxuICAgICAgICBERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWC5pbmRleE9mKHN0cmluZykgIT09IC0xKSB7XG4gICAgICByZXR1cm4gXCInXCIgKyBzdHJpbmcgKyBcIidcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZW50ID0gc3RhdGUuaW5kZW50ICogTWF0aC5tYXgoMSwgbGV2ZWwpOyAvLyBubyAwLWluZGVudCBzY2FsYXJzXG4gICAgLy8gQXMgaW5kZW50YXRpb24gZ2V0cyBkZWVwZXIsIGxldCB0aGUgd2lkdGggZGVjcmVhc2UgbW9ub3RvbmljYWxseVxuICAgIC8vIHRvIHRoZSBsb3dlciBib3VuZCBtaW4oc3RhdGUubGluZVdpZHRoLCA0MCkuXG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgaW1wbGllc1xuICAgIC8vICBzdGF0ZS5saW5lV2lkdGgg4omkIDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBpcyBmaXhlZCBhdCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCA+IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzIG5hcnJvd2VyIG9wdGlvbnMsXG4gICAgLy8gb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoIHRvIHN1ZGRlbmx5IGluY3JlYXNlLlxuICAgIHZhciBsaW5lV2lkdGggPSBzdGF0ZS5saW5lV2lkdGggPT09IC0xXG4gICAgICA/IC0xIDogTWF0aC5tYXgoTWF0aC5taW4oc3RhdGUubGluZVdpZHRoLCA0MCksIHN0YXRlLmxpbmVXaWR0aCAtIGluZGVudCk7XG5cbiAgICAvLyBXaXRob3V0IGtub3dpbmcgaWYga2V5cyBhcmUgaW1wbGljaXQvZXhwbGljaXQsIGFzc3VtZSBpbXBsaWNpdCBmb3Igc2FmZXR5LlxuICAgIHZhciBzaW5nbGVMaW5lT25seSA9IGlza2V5XG4gICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLlxuICAgICAgfHwgKHN0YXRlLmZsb3dMZXZlbCA+IC0xICYmIGxldmVsID49IHN0YXRlLmZsb3dMZXZlbCk7XG4gICAgZnVuY3Rpb24gdGVzdEFtYmlndWl0eShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cmluZyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBzdGF0ZS5pbmRlbnQsIGxpbmVXaWR0aCwgdGVzdEFtYmlndWl0eSkpIHtcbiAgICAgIGNhc2UgU1RZTEVfUExBSU46XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICBjYXNlIFNUWUxFX1NJTkdMRTpcbiAgICAgICAgcmV0dXJuIFwiJ1wiICsgc3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKSArIFwiJ1wiO1xuICAgICAgY2FzZSBTVFlMRV9MSVRFUkFMOlxuICAgICAgICByZXR1cm4gJ3wnICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoc3RyaW5nLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRk9MREVEOlxuICAgICAgICByZXR1cm4gJz4nICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9ET1VCTEU6XG4gICAgICAgIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cmluZywgbGluZVdpZHRoKSArICdcIic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignaW1wb3NzaWJsZSBlcnJvcjogaW52YWxpZCBzY2FsYXIgc3R5bGUnKTtcbiAgICB9XG4gIH0oKSk7XG59XG5cbi8vIFByZS1jb25kaXRpb25zOiBzdHJpbmcgaXMgdmFsaWQgZm9yIGEgYmxvY2sgc2NhbGFyLCAxIDw9IGluZGVudFBlckxldmVsIDw9IDkuXG5mdW5jdGlvbiBibG9ja0hlYWRlcihzdHJpbmcsIGluZGVudFBlckxldmVsKSB7XG4gIHZhciBpbmRlbnRJbmRpY2F0b3IgPSBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykgPyBTdHJpbmcoaW5kZW50UGVyTGV2ZWwpIDogJyc7XG5cbiAgLy8gbm90ZSB0aGUgc3BlY2lhbCBjYXNlOiB0aGUgc3RyaW5nICdcXG4nIGNvdW50cyBhcyBhIFwidHJhaWxpbmdcIiBlbXB0eSBsaW5lLlxuICB2YXIgY2xpcCA9ICAgICAgICAgIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nO1xuICB2YXIga2VlcCA9IGNsaXAgJiYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMl0gPT09ICdcXG4nIHx8IHN0cmluZyA9PT0gJ1xcbicpO1xuICB2YXIgY2hvbXAgPSBrZWVwID8gJysnIDogKGNsaXAgPyAnJyA6ICctJyk7XG5cbiAgcmV0dXJuIGluZGVudEluZGljYXRvciArIGNob21wICsgJ1xcbic7XG59XG5cbi8vIChTZWUgdGhlIG5vdGUgZm9yIHdyaXRlU2NhbGFyLilcbmZ1bmN0aW9uIGRyb3BFbmRpbmdOZXdsaW5lKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbicgPyBzdHJpbmcuc2xpY2UoMCwgLTEpIDogc3RyaW5nO1xufVxuXG4vLyBOb3RlOiBhIGxvbmcgbGluZSB3aXRob3V0IGEgc3VpdGFibGUgYnJlYWsgcG9pbnQgd2lsbCBleGNlZWQgdGhlIHdpZHRoIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IGV2ZXJ5IGNoYXIgaW4gc3RyIGlzUHJpbnRhYmxlLCBzdHIubGVuZ3RoID4gMCwgd2lkdGggPiAwLlxuZnVuY3Rpb24gZm9sZFN0cmluZyhzdHJpbmcsIHdpZHRoKSB7XG4gIC8vIEluIGZvbGRlZCBzdHlsZSwgJGskIGNvbnNlY3V0aXZlIG5ld2xpbmVzIG91dHB1dCBhcyAkaysxJCBuZXdsaW5lc+KAlFxuICAvLyB1bmxlc3MgdGhleSdyZSBiZWZvcmUgb3IgYWZ0ZXIgYSBtb3JlLWluZGVudGVkIGxpbmUsIG9yIGF0IHRoZSB2ZXJ5XG4gIC8vIGJlZ2lubmluZyBvciBlbmQsIGluIHdoaWNoIGNhc2UgJGskIG1hcHMgdG8gJGskLlxuICAvLyBUaGVyZWZvcmUsIHBhcnNlIGVhY2ggY2h1bmsgYXMgbmV3bGluZShzKSBmb2xsb3dlZCBieSBhIGNvbnRlbnQgbGluZS5cbiAgdmFyIGxpbmVSZSA9IC8oXFxuKykoW15cXG5dKikvZztcblxuICAvLyBmaXJzdCBsaW5lIChwb3NzaWJseSBhbiBlbXB0eSBsaW5lKVxuICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbmV4dExGID0gc3RyaW5nLmluZGV4T2YoJ1xcbicpO1xuICAgIG5leHRMRiA9IG5leHRMRiAhPT0gLTEgPyBuZXh0TEYgOiBzdHJpbmcubGVuZ3RoO1xuICAgIGxpbmVSZS5sYXN0SW5kZXggPSBuZXh0TEY7XG4gICAgcmV0dXJuIGZvbGRMaW5lKHN0cmluZy5zbGljZSgwLCBuZXh0TEYpLCB3aWR0aCk7XG4gIH0oKSk7XG4gIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZmlyc3QgY29udGVudCBsaW5lIHlldCwgZG9uJ3QgYWRkIGFuIGV4dHJhIFxcbi5cbiAgdmFyIHByZXZNb3JlSW5kZW50ZWQgPSBzdHJpbmdbMF0gPT09ICdcXG4nIHx8IHN0cmluZ1swXSA9PT0gJyAnO1xuICB2YXIgbW9yZUluZGVudGVkO1xuXG4gIC8vIHJlc3Qgb2YgdGhlIGxpbmVzXG4gIHZhciBtYXRjaDtcbiAgd2hpbGUgKChtYXRjaCA9IGxpbmVSZS5leGVjKHN0cmluZykpKSB7XG4gICAgdmFyIHByZWZpeCA9IG1hdGNoWzFdLCBsaW5lID0gbWF0Y2hbMl07XG4gICAgbW9yZUluZGVudGVkID0gKGxpbmVbMF0gPT09ICcgJyk7XG4gICAgcmVzdWx0ICs9IHByZWZpeFxuICAgICAgKyAoIXByZXZNb3JlSW5kZW50ZWQgJiYgIW1vcmVJbmRlbnRlZCAmJiBsaW5lICE9PSAnJ1xuICAgICAgICA/ICdcXG4nIDogJycpXG4gICAgICArIGZvbGRMaW5lKGxpbmUsIHdpZHRoKTtcbiAgICBwcmV2TW9yZUluZGVudGVkID0gbW9yZUluZGVudGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR3JlZWR5IGxpbmUgYnJlYWtpbmcuXG4vLyBQaWNrcyB0aGUgbG9uZ2VzdCBsaW5lIHVuZGVyIHRoZSBsaW1pdCBlYWNoIHRpbWUsXG4vLyBvdGhlcndpc2Ugc2V0dGxlcyBmb3IgdGhlIHNob3J0ZXN0IGxpbmUgb3ZlciB0aGUgbGltaXQuXG4vLyBOQi4gTW9yZS1pbmRlbnRlZCBsaW5lcyAqY2Fubm90KiBiZSBmb2xkZWQsIGFzIHRoYXQgd291bGQgYWRkIGFuIGV4dHJhIFxcbi5cbmZ1bmN0aW9uIGZvbGRMaW5lKGxpbmUsIHdpZHRoKSB7XG4gIGlmIChsaW5lID09PSAnJyB8fCBsaW5lWzBdID09PSAnICcpIHJldHVybiBsaW5lO1xuXG4gIC8vIFNpbmNlIGEgbW9yZS1pbmRlbnRlZCBsaW5lIGFkZHMgYSBcXG4sIGJyZWFrcyBjYW4ndCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLlxuICB2YXIgYnJlYWtSZSA9IC8gW14gXS9nOyAvLyBub3RlOiB0aGUgbWF0Y2ggaW5kZXggd2lsbCBhbHdheXMgYmUgPD0gbGVuZ3RoLTIuXG4gIHZhciBtYXRjaDtcbiAgLy8gc3RhcnQgaXMgYW4gaW5jbHVzaXZlIGluZGV4LiBlbmQsIGN1cnIsIGFuZCBuZXh0IGFyZSBleGNsdXNpdmUuXG4gIHZhciBzdGFydCA9IDAsIGVuZCwgY3VyciA9IDAsIG5leHQgPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgLy8gSW52YXJpYW50czogMCA8PSBzdGFydCA8PSBsZW5ndGgtMS5cbiAgLy8gICAwIDw9IGN1cnIgPD0gbmV4dCA8PSBtYXgoMCwgbGVuZ3RoLTIpLiBjdXJyIC0gc3RhcnQgPD0gd2lkdGguXG4gIC8vIEluc2lkZSB0aGUgbG9vcDpcbiAgLy8gICBBIG1hdGNoIGltcGxpZXMgbGVuZ3RoID49IDIsIHNvIGN1cnIgYW5kIG5leHQgYXJlIDw9IGxlbmd0aC0yLlxuICB3aGlsZSAoKG1hdGNoID0gYnJlYWtSZS5leGVjKGxpbmUpKSkge1xuICAgIG5leHQgPSBtYXRjaC5pbmRleDtcbiAgICAvLyBtYWludGFpbiBpbnZhcmlhbnQ6IGN1cnIgLSBzdGFydCA8PSB3aWR0aFxuICAgIGlmIChuZXh0IC0gc3RhcnQgPiB3aWR0aCkge1xuICAgICAgZW5kID0gKGN1cnIgPiBzdGFydCkgPyBjdXJyIDogbmV4dDsgLy8gZGVyaXZlIGVuZCA8PSBsZW5ndGgtMlxuICAgICAgcmVzdWx0ICs9ICdcXG4nICsgbGluZS5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIC8vIHNraXAgdGhlIHNwYWNlIHRoYXQgd2FzIG91dHB1dCBhcyBcXG5cbiAgICAgIHN0YXJ0ID0gZW5kICsgMTsgICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSBzdGFydCA8PSBsZW5ndGgtMVxuICAgIH1cbiAgICBjdXJyID0gbmV4dDtcbiAgfVxuXG4gIC8vIEJ5IHRoZSBpbnZhcmlhbnRzLCBzdGFydCA8PSBsZW5ndGgtMSwgc28gdGhlcmUgaXMgc29tZXRoaW5nIGxlZnQgb3Zlci5cbiAgLy8gSXQgaXMgZWl0aGVyIHRoZSB3aG9sZSBzdHJpbmcgb3IgYSBwYXJ0IHN0YXJ0aW5nIGZyb20gbm9uLXdoaXRlc3BhY2UuXG4gIHJlc3VsdCArPSAnXFxuJztcbiAgLy8gSW5zZXJ0IGEgYnJlYWsgaWYgdGhlIHJlbWFpbmRlciBpcyB0b28gbG9uZyBhbmQgdGhlcmUgaXMgYSBicmVhayBhdmFpbGFibGUuXG4gIGlmIChsaW5lLmxlbmd0aCAtIHN0YXJ0ID4gd2lkdGggJiYgY3VyciA+IHN0YXJ0KSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQsIGN1cnIpICsgJ1xcbicgKyBsaW5lLnNsaWNlKGN1cnIgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpOyAvLyBkcm9wIGV4dHJhIFxcbiBqb2luZXJcbn1cblxuLy8gRXNjYXBlcyBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLlxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjaGFyLCBuZXh0Q2hhcjtcbiAgdmFyIGVzY2FwZVNlcTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAvLyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXJzIChyZWZlcmVuY2UgVW5pY29kZSAzLjAgc2VjdGlvbiBcIjMuNyBTdXJyb2dhdGVzXCIpLlxuICAgIGlmIChjaGFyID49IDB4RDgwMCAmJiBjaGFyIDw9IDB4REJGRi8qIGhpZ2ggc3Vycm9nYXRlICovKSB7XG4gICAgICBuZXh0Q2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgIGlmIChuZXh0Q2hhciA+PSAweERDMDAgJiYgbmV4dENoYXIgPD0gMHhERkZGLyogbG93IHN1cnJvZ2F0ZSAqLykge1xuICAgICAgICAvLyBDb21iaW5lIHRoZSBzdXJyb2dhdGUgcGFpciBhbmQgc3RvcmUgaXQgZXNjYXBlZC5cbiAgICAgICAgcmVzdWx0ICs9IGVuY29kZUhleCgoY2hhciAtIDB4RDgwMCkgKiAweDQwMCArIG5leHRDaGFyIC0gMHhEQzAwICsgMHgxMDAwMCk7XG4gICAgICAgIC8vIEFkdmFuY2UgaW5kZXggb25lIGV4dHJhIHNpbmNlIHdlIGFscmVhZHkgdXNlZCB0aGF0IGNoYXIgaGVyZS5cbiAgICAgICAgaSsrOyBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXNjYXBlU2VxID0gRVNDQVBFX1NFUVVFTkNFU1tjaGFyXTtcbiAgICByZXN1bHQgKz0gIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKVxuICAgICAgPyBzdHJpbmdbaV1cbiAgICAgIDogZXNjYXBlU2VxIHx8IGVuY29kZUhleChjaGFyKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7XG4gIHZhciBfcmVzdWx0ID0gJycsXG4gICAgICBfdGFnICAgID0gc3RhdGUudGFnLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0W2luZGV4XSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgaWYgKGluZGV4ICE9PSAwKSBfcmVzdWx0ICs9ICcsJyArICghc3RhdGUuY29uZGVuc2VGbG93ID8gJyAnIDogJycpO1xuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAnWycgKyBfcmVzdWx0ICsgJ10nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0W2luZGV4XSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGlmICghY29tcGFjdCB8fCBpbmRleCAhPT0gMCkge1xuICAgICAgICBfcmVzdWx0ICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBfcmVzdWx0ICs9ICctJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0gJztcbiAgICAgIH1cblxuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICdbXSc7IC8vIEVtcHR5IHNlcXVlbmNlIGlmIG5vIHZhbGlkIHZhbHVlcy5cbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXJCdWZmZXIgPSBzdGF0ZS5jb25kZW5zZUZsb3cgPyAnXCInIDogJyc7XG5cbiAgICBpZiAoaW5kZXggIT09IDApIHBhaXJCdWZmZXIgKz0gJywgJztcblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdEtleSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCkgcGFpckJ1ZmZlciArPSAnPyAnO1xuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wICsgKHN0YXRlLmNvbmRlbnNlRmxvdyA/ICdcIicgOiAnJykgKyAnOicgKyAoc3RhdGUuY29uZGVuc2VGbG93ID8gJycgOiAnICcpO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RWYWx1ZSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS5cbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICAvLyBCb3RoIGtleSBhbmQgdmFsdWUgYXJlIHZhbGlkLlxuICAgIF9yZXN1bHQgKz0gcGFpckJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAneycgKyBfcmVzdWx0ICsgJ30nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrTWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgY29tcGFjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIGV4cGxpY2l0UGFpcixcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgLy8gQWxsb3cgc29ydGluZyBrZXlzIHNvIHRoYXQgdGhlIG91dHB1dCBmaWxlIGlzIGRldGVybWluaXN0aWNcbiAgaWYgKHN0YXRlLnNvcnRLZXlzID09PSB0cnVlKSB7XG4gICAgLy8gRGVmYXVsdCBzb3J0aW5nXG4gICAgb2JqZWN0S2V5TGlzdC5zb3J0KCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHN0YXRlLnNvcnRLZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gQ3VzdG9tIHNvcnQgZnVuY3Rpb25cbiAgICBvYmplY3RLZXlMaXN0LnNvcnQoc3RhdGUuc29ydEtleXMpO1xuICB9IGVsc2UgaWYgKHN0YXRlLnNvcnRLZXlzKSB7XG4gICAgLy8gU29tZXRoaW5nIGlzIHdyb25nXG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ3NvcnRLZXlzIG11c3QgYmUgYSBib29sZWFuIG9yIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyQnVmZmVyID0gJyc7XG5cbiAgICBpZiAoIWNvbXBhY3QgfHwgaW5kZXggIT09IDApIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RLZXksIHRydWUsIHRydWUsIHRydWUpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleS5cbiAgICB9XG5cbiAgICBleHBsaWNpdFBhaXIgPSAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB8fFxuICAgICAgICAgICAgICAgICAgIChzdGF0ZS5kdW1wICYmIHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCk7XG5cbiAgICBpZiAoZXhwbGljaXRQYWlyKSB7XG4gICAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIHBhaXJCdWZmZXIgKz0gJz8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdFZhbHVlLCB0cnVlLCBleHBsaWNpdFBhaXIpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzonO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYWlyQnVmZmVyICs9ICc6ICc7XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAne30nOyAvLyBFbXB0eSBtYXBwaW5nIGlmIG5vIHZhbGlkIHBhaXJzLlxufVxuXG5mdW5jdGlvbiBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIGV4cGxpY2l0KSB7XG4gIHZhciBfcmVzdWx0LCB0eXBlTGlzdCwgaW5kZXgsIGxlbmd0aCwgdHlwZSwgc3R5bGU7XG5cbiAgdHlwZUxpc3QgPSBleHBsaWNpdCA/IHN0YXRlLmV4cGxpY2l0VHlwZXMgOiBzdGF0ZS5pbXBsaWNpdFR5cGVzO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSB0eXBlTGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHR5cGVMaXN0W2luZGV4XTtcblxuICAgIGlmICgodHlwZS5pbnN0YW5jZU9mICB8fCB0eXBlLnByZWRpY2F0ZSkgJiZcbiAgICAgICAgKCF0eXBlLmluc3RhbmNlT2YgfHwgKCh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JykgJiYgKG9iamVjdCBpbnN0YW5jZW9mIHR5cGUuaW5zdGFuY2VPZikpKSAmJlxuICAgICAgICAoIXR5cGUucHJlZGljYXRlICB8fCB0eXBlLnByZWRpY2F0ZShvYmplY3QpKSkge1xuXG4gICAgICBzdGF0ZS50YWcgPSBleHBsaWNpdCA/IHR5cGUudGFnIDogJz8nO1xuXG4gICAgICBpZiAodHlwZS5yZXByZXNlbnQpIHtcbiAgICAgICAgc3R5bGUgPSBzdGF0ZS5zdHlsZU1hcFt0eXBlLnRhZ10gfHwgdHlwZS5kZWZhdWx0U3R5bGU7XG5cbiAgICAgICAgaWYgKF90b1N0cmluZy5jYWxsKHR5cGUucmVwcmVzZW50KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJykge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudChvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbCh0eXBlLnJlcHJlc2VudCwgc3R5bGUpKSB7XG4gICAgICAgICAgX3Jlc3VsdCA9IHR5cGUucmVwcmVzZW50W3N0eWxlXShvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignITwnICsgdHlwZS50YWcgKyAnPiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgXCInICsgc3R5bGUgKyAnXCIgc3R5bGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLmR1bXAgPSBfcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFNlcmlhbGl6ZXMgYG9iamVjdGAgYW5kIHdyaXRlcyBpdCB0byBnbG9iYWwgYHJlc3VsdGAuXG4vLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcywgb3IgZmFsc2Ugb24gaW52YWxpZCBvYmplY3QuXG4vL1xuZnVuY3Rpb24gd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBibG9jaywgY29tcGFjdCwgaXNrZXkpIHtcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuZHVtcCA9IG9iamVjdDtcblxuICBpZiAoIWRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZmFsc2UpKSB7XG4gICAgZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCB0cnVlKTtcbiAgfVxuXG4gIHZhciB0eXBlID0gX3RvU3RyaW5nLmNhbGwoc3RhdGUuZHVtcCk7XG5cbiAgaWYgKGJsb2NrKSB7XG4gICAgYmxvY2sgPSAoc3RhdGUuZmxvd0xldmVsIDwgMCB8fCBzdGF0ZS5mbG93TGV2ZWwgPiBsZXZlbCk7XG4gIH1cblxuICB2YXIgb2JqZWN0T3JBcnJheSA9IHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nIHx8IHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBkdXBsaWNhdGVJbmRleCxcbiAgICAgIGR1cGxpY2F0ZTtcblxuICBpZiAob2JqZWN0T3JBcnJheSkge1xuICAgIGR1cGxpY2F0ZUluZGV4ID0gc3RhdGUuZHVwbGljYXRlcy5pbmRleE9mKG9iamVjdCk7XG4gICAgZHVwbGljYXRlID0gZHVwbGljYXRlSW5kZXggIT09IC0xO1xuICB9XG5cbiAgaWYgKChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8IGR1cGxpY2F0ZSB8fCAoc3RhdGUuaW5kZW50ICE9PSAyICYmIGxldmVsID4gMCkpIHtcbiAgICBjb21wYWN0ID0gZmFsc2U7XG4gIH1cblxuICBpZiAoZHVwbGljYXRlICYmIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgIHN0YXRlLmR1bXAgPSAnKnJlZl8nICsgZHVwbGljYXRlSW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgaWYgKG9iamVjdE9yQXJyYXkgJiYgZHVwbGljYXRlICYmICFzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0pIHtcbiAgICAgIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgaWYgKGJsb2NrICYmIChPYmplY3Qua2V5cyhzdGF0ZS5kdW1wKS5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXApO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIGlmIChibG9jayAmJiAoc3RhdGUuZHVtcC5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpIHtcbiAgICAgIGlmIChzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgICB3cml0ZVNjYWxhcihzdGF0ZSwgc3RhdGUuZHVtcCwgbGV2ZWwsIGlza2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnNraXBJbnZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbigndW5hY2NlcHRhYmxlIGtpbmQgb2YgYW4gb2JqZWN0IHRvIGR1bXAgJyArIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgIHN0YXRlLmR1bXAgPSAnITwnICsgc3RhdGUudGFnICsgJz4gJyArIHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMob2JqZWN0LCBzdGF0ZSkge1xuICB2YXIgb2JqZWN0cyA9IFtdLFxuICAgICAgZHVwbGljYXRlc0luZGV4ZXMgPSBbXSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBkdXBsaWNhdGVzSW5kZXhlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgc3RhdGUuZHVwbGljYXRlcy5wdXNoKG9iamVjdHNbZHVwbGljYXRlc0luZGV4ZXNbaW5kZXhdXSk7XG4gIH1cbiAgc3RhdGUudXNlZER1cGxpY2F0ZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcykge1xuICB2YXIgb2JqZWN0S2V5TGlzdCxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGlmIChvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICBpbmRleCA9IG9iamVjdHMuaW5kZXhPZihvYmplY3QpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVzSW5kZXhlcy5pbmRleE9mKGluZGV4KSA9PT0gLTEpIHtcbiAgICAgICAgZHVwbGljYXRlc0luZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdHMucHVzaChvYmplY3QpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtpbmRleF0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtvYmplY3RLZXlMaXN0W2luZGV4XV0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShvcHRpb25zKTtcblxuICBpZiAoIXN0YXRlLm5vUmVmcykgZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhpbnB1dCwgc3RhdGUpO1xuXG4gIGlmICh3cml0ZU5vZGUoc3RhdGUsIDAsIGlucHV0LCB0cnVlLCB0cnVlKSkgcmV0dXJuIHN0YXRlLmR1bXAgKyAnXFxuJztcblxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIHNhZmVEdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBkdW1wKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZHVtcCAgICAgPSBkdW1wO1xubW9kdWxlLmV4cG9ydHMuc2FmZUR1bXAgPSBzYWZlRHVtcDtcbiIsIi8vIFlBTUwgZXJyb3IgY2xhc3MuIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODQ1ODk4NFxuLy9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gWUFNTEV4Y2VwdGlvbihyZWFzb24sIG1hcmspIHtcbiAgLy8gU3VwZXIgY29uc3RydWN0b3JcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICB0aGlzLm5hbWUgPSAnWUFNTEV4Y2VwdGlvbic7XG4gIHRoaXMucmVhc29uID0gcmVhc29uO1xuICB0aGlzLm1hcmsgPSBtYXJrO1xuICB0aGlzLm1lc3NhZ2UgPSAodGhpcy5yZWFzb24gfHwgJyh1bmtub3duIHJlYXNvbiknKSArICh0aGlzLm1hcmsgPyAnICcgKyB0aGlzLm1hcmsudG9TdHJpbmcoKSA6ICcnKTtcblxuICAvLyBJbmNsdWRlIHN0YWNrIHRyYWNlIGluIGVycm9yIG9iamVjdFxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAvLyBDaHJvbWUgYW5kIE5vZGVKU1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZGLCBJRSAxMCsgYW5kIFNhZmFyaSA2Ky4gRmFsbGJhY2sgZm9yIG90aGVyc1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrIHx8ICcnO1xuICB9XG59XG5cblxuLy8gSW5oZXJpdCBmcm9tIEVycm9yXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbllBTUxFeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUFNTEV4Y2VwdGlvbjtcblxuXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMubmFtZSArICc6ICc7XG5cbiAgcmVzdWx0ICs9IHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJztcblxuICBpZiAoIWNvbXBhY3QgJiYgdGhpcy5tYXJrKSB7XG4gICAgcmVzdWx0ICs9ICcgJyArIHRoaXMubWFyay50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBZQU1MRXhjZXB0aW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4sbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgTWFyayAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vbWFyaycpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbnZhciBERUZBVUxUX0ZVTExfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5cblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cblxudmFyIENPTlRFWFRfRkxPV19JTiAgID0gMTtcbnZhciBDT05URVhUX0ZMT1dfT1VUICA9IDI7XG52YXIgQ09OVEVYVF9CTE9DS19JTiAgPSAzO1xudmFyIENPTlRFWFRfQkxPQ0tfT1VUID0gNDtcblxuXG52YXIgQ0hPTVBJTkdfQ0xJUCAgPSAxO1xudmFyIENIT01QSU5HX1NUUklQID0gMjtcbnZhciBDSE9NUElOR19LRUVQICA9IDM7XG5cblxudmFyIFBBVFRFUk5fTk9OX1BSSU5UQUJMRSAgICAgICAgID0gL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdGLVxceDg0XFx4ODYtXFx4OUZcXHVGRkZFXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xudmFyIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTID0gL1tcXHg4NVxcdTIwMjhcXHUyMDI5XS87XG52YXIgUEFUVEVSTl9GTE9XX0lORElDQVRPUlMgICAgICAgPSAvWyxcXFtcXF1cXHtcXH1dLztcbnZhciBQQVRURVJOX1RBR19IQU5ETEUgICAgICAgICAgICA9IC9eKD86IXwhIXwhW2EtelxcLV0rISkkL2k7XG52YXIgUEFUVEVSTl9UQUdfVVJJICAgICAgICAgICAgICAgPSAvXig/OiF8W14sXFxbXFxdXFx7XFx9XSkoPzolWzAtOWEtZl17Mn18WzAtOWEtelxcLSM7XFwvXFw/OkAmPVxcK1xcJCxfXFwuIX5cXConXFwoXFwpXFxbXFxdXSkqJC9pO1xuXG5cbmZ1bmN0aW9uIGlzX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwQS8qIExGICovKSB8fCAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV0hJVEVfU1BBQ0UoYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8IChjID09PSAweDIwLyogU3BhY2UgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XU19PUl9FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEEvKiBMRiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19GTE9XX0lORElDQVRPUihjKSB7XG4gIHJldHVybiBjID09PSAweDJDLyogLCAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1Qi8qIFsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUQvKiBdICovIHx8XG4gICAgICAgICBjID09PSAweDdCLyogeyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3RC8qIH0gKi87XG59XG5cbmZ1bmN0aW9uIGZyb21IZXhDb2RlKGMpIHtcbiAgdmFyIGxjO1xuXG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cbiAgbGMgPSBjIHwgMHgyMDtcblxuICBpZiAoKDB4NjEvKiBhICovIDw9IGxjKSAmJiAobGMgPD0gMHg2Ni8qIGYgKi8pKSB7XG4gICAgcmV0dXJuIGxjIC0gMHg2MSArIDEwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkSGV4TGVuKGMpIHtcbiAgaWYgKGMgPT09IDB4NzgvKiB4ICovKSB7IHJldHVybiAyOyB9XG4gIGlmIChjID09PSAweDc1LyogdSAqLykgeyByZXR1cm4gNDsgfVxuICBpZiAoYyA9PT0gMHg1NS8qIFUgKi8pIHsgcmV0dXJuIDg7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGZyb21EZWNpbWFsQ29kZShjKSB7XG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFc2NhcGVTZXF1ZW5jZShjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuICByZXR1cm4gKGMgPT09IDB4MzAvKiAwICovKSA/ICdcXHgwMCcgOlxuICAgICAgICAoYyA9PT0gMHg2MS8qIGEgKi8pID8gJ1xceDA3JyA6XG4gICAgICAgIChjID09PSAweDYyLyogYiAqLykgPyAnXFx4MDgnIDpcbiAgICAgICAgKGMgPT09IDB4NzQvKiB0ICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHgwOS8qIFRhYiAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4NkUvKiBuICovKSA/ICdcXHgwQScgOlxuICAgICAgICAoYyA9PT0gMHg3Ni8qIHYgKi8pID8gJ1xceDBCJyA6XG4gICAgICAgIChjID09PSAweDY2LyogZiAqLykgPyAnXFx4MEMnIDpcbiAgICAgICAgKGMgPT09IDB4NzIvKiByICovKSA/ICdcXHgwRCcgOlxuICAgICAgICAoYyA9PT0gMHg2NS8qIGUgKi8pID8gJ1xceDFCJyA6XG4gICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pID8gJyAnIDpcbiAgICAgICAgKGMgPT09IDB4MjIvKiBcIiAqLykgPyAnXFx4MjInIDpcbiAgICAgICAgKGMgPT09IDB4MkYvKiAvICovKSA/ICcvJyA6XG4gICAgICAgIChjID09PSAweDVDLyogXFwgKi8pID8gJ1xceDVDJyA6XG4gICAgICAgIChjID09PSAweDRFLyogTiAqLykgPyAnXFx4ODUnIDpcbiAgICAgICAgKGMgPT09IDB4NUYvKiBfICovKSA/ICdcXHhBMCcgOlxuICAgICAgICAoYyA9PT0gMHg0Qy8qIEwgKi8pID8gJ1xcdTIwMjgnIDpcbiAgICAgICAgKGMgPT09IDB4NTAvKiBQICovKSA/ICdcXHUyMDI5JyA6ICcnO1xufVxuXG5mdW5jdGlvbiBjaGFyRnJvbUNvZGVwb2ludChjKSB7XG4gIGlmIChjIDw9IDB4RkZGRikge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICB9XG4gIC8vIEVuY29kZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXJcbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRlxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoKGMgLSAweDAxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICgoYyAtIDB4MDEwMDAwKSAmIDB4MDNGRikgKyAweERDMDBcbiAgKTtcbn1cblxudmFyIHNpbXBsZUVzY2FwZUNoZWNrID0gbmV3IEFycmF5KDI1Nik7IC8vIGludGVnZXIsIGZvciBmYXN0IGFjY2Vzc1xudmFyIHNpbXBsZUVzY2FwZU1hcCA9IG5ldyBBcnJheSgyNTYpO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuICBzaW1wbGVFc2NhcGVDaGVja1tpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpID8gMSA6IDA7XG4gIHNpbXBsZUVzY2FwZU1hcFtpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpO1xufVxuXG5cbmZ1bmN0aW9uIFN0YXRlKGlucHV0LCBvcHRpb25zKSB7XG4gIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICB0aGlzLmZpbGVuYW1lICA9IG9wdGlvbnNbJ2ZpbGVuYW1lJ10gIHx8IG51bGw7XG4gIHRoaXMuc2NoZW1hICAgID0gb3B0aW9uc1snc2NoZW1hJ10gICAgfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zWydvbldhcm5pbmcnXSB8fCBudWxsO1xuICB0aGlzLmxlZ2FjeSAgICA9IG9wdGlvbnNbJ2xlZ2FjeSddICAgIHx8IGZhbHNlO1xuICB0aGlzLmpzb24gICAgICA9IG9wdGlvbnNbJ2pzb24nXSAgICAgIHx8IGZhbHNlO1xuICB0aGlzLmxpc3RlbmVyICA9IG9wdGlvbnNbJ2xpc3RlbmVyJ10gIHx8IG51bGw7XG5cbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy50eXBlTWFwICAgICAgID0gdGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwO1xuXG4gIHRoaXMubGVuZ3RoICAgICA9IGlucHV0Lmxlbmd0aDtcbiAgdGhpcy5wb3NpdGlvbiAgID0gMDtcbiAgdGhpcy5saW5lICAgICAgID0gMDtcbiAgdGhpcy5saW5lU3RhcnQgID0gMDtcbiAgdGhpcy5saW5lSW5kZW50ID0gMDtcblxuICB0aGlzLmRvY3VtZW50cyA9IFtdO1xuXG4gIC8qXG4gIHRoaXMudmVyc2lvbjtcbiAgdGhpcy5jaGVja0xpbmVCcmVha3M7XG4gIHRoaXMudGFnTWFwO1xuICB0aGlzLmFuY2hvck1hcDtcbiAgdGhpcy50YWc7XG4gIHRoaXMuYW5jaG9yO1xuICB0aGlzLmtpbmQ7XG4gIHRoaXMucmVzdWx0OyovXG5cbn1cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgWUFNTEV4Y2VwdGlvbihcbiAgICBtZXNzYWdlLFxuICAgIG5ldyBNYXJrKHN0YXRlLmZpbGVuYW1lLCBzdGF0ZS5pbnB1dCwgc3RhdGUucG9zaXRpb24sIHN0YXRlLmxpbmUsIChzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydCkpKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICB0aHJvdyBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlLCBtZXNzYWdlKSB7XG4gIGlmIChzdGF0ZS5vbldhcm5pbmcpIHtcbiAgICBzdGF0ZS5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSk7XG4gIH1cbn1cblxuXG52YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7XG5cbiAgWUFNTDogZnVuY3Rpb24gaGFuZGxlWWFtbERpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7XG5cbiAgICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mICVZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1lBTUwgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBtYXRjaCA9IC9eKFswLTldKylcXC4oWzAtOV0rKSQvLmV4ZWMoYXJnc1swXSk7XG5cbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIGFyZ3VtZW50IG9mIHRoZSBZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIG1ham9yID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICBtaW5vciA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG5cbiAgICBpZiAobWFqb3IgIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cblxuICAgIHN0YXRlLnZlcnNpb24gPSBhcmdzWzBdO1xuICAgIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IChtaW5vciA8IDIpO1xuXG4gICAgaWYgKG1pbm9yICE9PSAxICYmIG1pbm9yICE9PSAyKSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuICB9LFxuXG4gIFRBRzogZnVuY3Rpb24gaGFuZGxlVGFnRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgaGFuZGxlLCBwcmVmaXg7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdUQUcgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSB0d28gYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgaGFuZGxlID0gYXJnc1swXTtcbiAgICBwcmVmaXggPSBhcmdzWzFdO1xuXG4gICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdChoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgaGFuZGxlIChmaXJzdCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCBoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGhlcmUgaXMgYSBwcmV2aW91c2x5IGRlY2xhcmVkIHN1ZmZpeCBmb3IgXCInICsgaGFuZGxlICsgJ1wiIHRhZyBoYW5kbGUnKTtcbiAgICB9XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHByZWZpeCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBwcmVmaXggKHNlY29uZCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS50YWdNYXBbaGFuZGxlXSA9IHByZWZpeDtcbiAgfVxufTtcblxuXG5mdW5jdGlvbiBjYXB0dXJlU2VnbWVudChzdGF0ZSwgc3RhcnQsIGVuZCwgY2hlY2tKc29uKSB7XG4gIHZhciBfcG9zaXRpb24sIF9sZW5ndGgsIF9jaGFyYWN0ZXIsIF9yZXN1bHQ7XG5cbiAgaWYgKHN0YXJ0IDwgZW5kKSB7XG4gICAgX3Jlc3VsdCA9IHN0YXRlLmlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgaWYgKGNoZWNrSnNvbikge1xuICAgICAgZm9yIChfcG9zaXRpb24gPSAwLCBfbGVuZ3RoID0gX3Jlc3VsdC5sZW5ndGg7IF9wb3NpdGlvbiA8IF9sZW5ndGg7IF9wb3NpdGlvbiArPSAxKSB7XG4gICAgICAgIF9jaGFyYWN0ZXIgPSBfcmVzdWx0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcbiAgICAgICAgaWYgKCEoX2NoYXJhY3RlciA9PT0gMHgwOSB8fFxuICAgICAgICAgICAgICAoMHgyMCA8PSBfY2hhcmFjdGVyICYmIF9jaGFyYWN0ZXIgPD0gMHgxMEZGRkYpKSkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCB2YWxpZCBKU09OIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZSBzdHJlYW0gY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuXG4gICAgc3RhdGUucmVzdWx0ICs9IF9yZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3ZlcnJpZGFibGVLZXlzKSB7XG4gIHZhciBzb3VyY2VLZXlzLCBrZXksIGluZGV4LCBxdWFudGl0eTtcblxuICBpZiAoIWNvbW1vbi5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlJyk7XG4gIH1cblxuICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuXG4gICAgaWYgKCFfaGFzT3duUHJvcGVydHkuY2FsbChkZXN0aW5hdGlvbiwga2V5KSkge1xuICAgICAgZGVzdGluYXRpb25ba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgb3ZlcnJpZGFibGVLZXlzW2tleV0gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBzdGFydExpbmUsIHN0YXJ0UG9zKSB7XG4gIHZhciBpbmRleCwgcXVhbnRpdHk7XG5cbiAga2V5Tm9kZSA9IFN0cmluZyhrZXlOb2RlKTtcblxuICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkge1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfVxuXG4gIGlmIChrZXlUYWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZVtpbmRleF0sIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFzdGF0ZS5qc29uICYmXG4gICAgICAgICFfaGFzT3duUHJvcGVydHkuY2FsbChvdmVycmlkYWJsZUtleXMsIGtleU5vZGUpICYmXG4gICAgICAgIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKF9yZXN1bHQsIGtleU5vZGUpKSB7XG4gICAgICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lIHx8IHN0YXRlLmxpbmU7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXJ0UG9zIHx8IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0ZWQgbWFwcGluZyBrZXknKTtcbiAgICB9XG4gICAgX3Jlc3VsdFtrZXlOb2RlXSA9IHZhbHVlTm9kZTtcbiAgICBkZWxldGUgb3ZlcnJpZGFibGVLZXlzW2tleU5vZGVdO1xuICB9XG5cbiAgcmV0dXJuIF9yZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5lQnJlYWsoc3RhdGUpIHtcbiAgdmFyIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDBBLyogTEYgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDBELyogQ1IgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBzdGF0ZS5saW5lICs9IDE7XG4gIHN0YXRlLmxpbmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBhbGxvd0NvbW1lbnRzLCBjaGVja0luZGVudCkge1xuICB2YXIgbGluZUJyZWFrcyA9IDAsXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dDb21tZW50cyAmJiBjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoY2ggIT09IDB4MEEvKiBMRiAqLyAmJiBjaCAhPT0gMHgwRC8qIENSICovICYmIGNoICE9PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBsaW5lQnJlYWtzKys7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgICAgd2hpbGUgKGNoID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0luZGVudCAhPT0gLTEgJiYgbGluZUJyZWFrcyAhPT0gMCAmJiBzdGF0ZS5saW5lSW5kZW50IDwgY2hlY2tJbmRlbnQpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdkZWZpY2llbnQgaW5kZW50YXRpb24nKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lQnJlYWtzO1xufVxuXG5mdW5jdGlvbiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgLy8gQ29uZGl0aW9uIHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgaXMgdGVzdGVkXG4gIC8vIGluIHBhcmVudCBvbiBlYWNoIGNhbGwsIGZvciBlZmZpY2llbmN5LiBObyBuZWVkcyB0byB0ZXN0IGhlcmUgYWdhaW4uXG4gIGlmICgoY2ggPT09IDB4MkQvKiAtICovIHx8IGNoID09PSAweDJFLyogLiAqLykgJiZcbiAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDEpICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAyKSkge1xuXG4gICAgX3Bvc2l0aW9uICs9IDM7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMCB8fCBpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIGNvdW50KSB7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gIH0gZWxzZSBpZiAoY291bnQgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGNvdW50IC0gMSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiByZWFkUGxhaW5TY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQsIHdpdGhpbkZsb3dDb2xsZWN0aW9uKSB7XG4gIHZhciBwcmVjZWRpbmcsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQsXG4gICAgICBfbGluZSxcbiAgICAgIF9saW5lU3RhcnQsXG4gICAgICBfbGluZUluZGVudCxcbiAgICAgIF9raW5kID0gc3RhdGUua2luZCxcbiAgICAgIF9yZXN1bHQgPSBzdGF0ZS5yZXN1bHQsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChpc19XU19PUl9FT0woY2gpICAgICAgfHxcbiAgICAgIGlzX0ZMT1dfSU5ESUNBVE9SKGNoKSB8fFxuICAgICAgY2ggPT09IDB4MjMvKiAjICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNi8qICYgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDJBLyogKiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjEvKiAhICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg3Qy8qIHwgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDNFLyogPiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjcvKiAnICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyMi8qIFwiICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNS8qICUgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDQwLyogQCAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4NjAvKiBgICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fFxuICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgcHJlY2VkaW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiAtIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHx8XG4gICAgICAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICAgIGJyZWFrO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgX2xpbmVJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIC0xKTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPj0gbm9kZUluZGVudCkge1xuICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucG9zaXRpb24gPSBjYXB0dXJlRW5kO1xuICAgICAgICBzdGF0ZS5saW5lID0gX2xpbmU7XG4gICAgICAgIHN0YXRlLmxpbmVTdGFydCA9IF9saW5lU3RhcnQ7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSBfbGluZUluZGVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBzdGF0ZS5saW5lIC0gX2xpbmUpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICB9XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG5cbiAgaWYgKHN0YXRlLnJlc3VsdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9IF9raW5kO1xuICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI3LyogJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGNhcHR1cmVFbmQsXG4gICAgICBoZXhMZW5ndGgsXG4gICAgICBoZXhSZXN1bHQsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyMi8qIFwiICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgc3RhdGUucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4MjIvKiBcIiAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1Qy8qIFxcICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KTtcblxuICAgICAgICAvLyBUT0RPOiByZXdvcmsgdG8gaW5saW5lIGZuIHdpdGggbm8gdHlwZSBjYXN0P1xuICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBzaW1wbGVFc2NhcGVDaGVja1tjaF0pIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IHNpbXBsZUVzY2FwZU1hcFtjaF07XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGVzY2FwZWRIZXhMZW4oY2gpKSA+IDApIHtcbiAgICAgICAgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICBoZXhSZXN1bHQgPSAwO1xuXG4gICAgICAgIGZvciAoOyBoZXhMZW5ndGggPiAwOyBoZXhMZW5ndGgtLSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICgodG1wID0gZnJvbUhleENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICAgICAgICBoZXhSZXN1bHQgPSAoaGV4UmVzdWx0IDw8IDQpICsgdG1wO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY2hhckZyb21Db2RlcG9pbnQoaGV4UmVzdWx0KTtcblxuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biBlc2NhcGUgc2VxdWVuY2UnKTtcbiAgICAgIH1cblxuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciByZWFkTmV4dCA9IHRydWUsXG4gICAgICBfbGluZSxcbiAgICAgIF90YWcgICAgID0gc3RhdGUudGFnLFxuICAgICAgX3Jlc3VsdCxcbiAgICAgIF9hbmNob3IgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgdGVybWluYXRvcixcbiAgICAgIGlzUGFpcixcbiAgICAgIGlzRXhwbGljaXRQYWlyLFxuICAgICAgaXNNYXBwaW5nLFxuICAgICAgb3ZlcnJpZGFibGVLZXlzID0ge30sXG4gICAgICBrZXlOb2RlLFxuICAgICAga2V5VGFnLFxuICAgICAgdmFsdWVOb2RlLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4NUIvKiBbICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4NUQ7LyogXSAqL1xuICAgIGlzTWFwcGluZyA9IGZhbHNlO1xuICAgIF9yZXN1bHQgPSBbXTtcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHg3Qi8qIHsgKi8pIHtcbiAgICB0ZXJtaW5hdG9yID0gMHg3RDsvKiB9ICovXG4gICAgaXNNYXBwaW5nID0gdHJ1ZTtcbiAgICBfcmVzdWx0ID0ge307XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IHRlcm1pbmF0b3IpIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgIHN0YXRlLmtpbmQgPSBpc01hcHBpbmcgPyAnbWFwcGluZycgOiAnc2VxdWVuY2UnO1xuICAgICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIXJlYWROZXh0KSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbWlzc2VkIGNvbW1hIGJldHdlZW4gZmxvdyBjb2xsZWN0aW9uIGVudHJpZXMnKTtcbiAgICB9XG5cbiAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuXG4gICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoaXNFeHBsaWNpdFBhaXIgfHwgc3RhdGUubGluZSA9PT0gX2xpbmUpICYmIGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgaXNQYWlyID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIH1cblxuICAgIGlmIChpc01hcHBpbmcpIHtcbiAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpO1xuICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICBfcmVzdWx0LnB1c2goc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgbnVsbCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfcmVzdWx0LnB1c2goa2V5Tm9kZSk7XG4gICAgfVxuXG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJDLyogLCAqLykge1xuICAgICAgcmVhZE5leHQgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFkTmV4dCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvbicpO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGZvbGRpbmcsXG4gICAgICBjaG9tcGluZyAgICAgICA9IENIT01QSU5HX0NMSVAsXG4gICAgICBkaWRSZWFkQ29udGVudCA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSBmYWxzZSxcbiAgICAgIHRleHRJbmRlbnQgICAgID0gbm9kZUluZGVudCxcbiAgICAgIGVtcHR5TGluZXMgICAgID0gMCxcbiAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2UsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg3Qy8qIHwgKi8pIHtcbiAgICBmb2xkaW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4M0UvKiA+ICovKSB7XG4gICAgZm9sZGluZyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDB4MkIvKiArICovIHx8IGNoID09PSAweDJELyogLSAqLykge1xuICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgIGNob21waW5nID0gKGNoID09PSAweDJCLyogKyAqLykgPyBDSE9NUElOR19LRUVQIDogQ0hPTVBJTkdfU1RSSVA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGEgY2hvbXBpbmcgbW9kZSBpZGVudGlmaWVyJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKCh0bXAgPSBmcm9tRGVjaW1hbENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICBpZiAodG1wID09PSAwKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgZXhwbGljaXQgaW5kZW50YXRpb24gd2lkdGggb2YgYSBibG9jayBzY2FsYXI7IGl0IGNhbm5vdCBiZSBsZXNzIHRoYW4gb25lJyk7XG4gICAgICB9IGVsc2UgaWYgKCFkZXRlY3RlZEluZGVudCkge1xuICAgICAgICB0ZXh0SW5kZW50ID0gbm9kZUluZGVudCArIHRtcCAtIDE7XG4gICAgICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYW4gaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpO1xuXG4gICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKTtcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICByZWFkTGluZUJyZWFrKHN0YXRlKTtcbiAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICB3aGlsZSAoKCFkZXRlY3RlZEluZGVudCB8fCBzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkgJiZcbiAgICAgICAgICAgKGNoID09PSAweDIwLyogU3BhY2UgKi8pKSB7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50Kys7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXRlY3RlZEluZGVudCAmJiBzdGF0ZS5saW5lSW5kZW50ID4gdGV4dEluZGVudCkge1xuICAgICAgdGV4dEluZGVudCA9IHN0YXRlLmxpbmVJbmRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGVtcHR5TGluZXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEVuZCBvZiB0aGUgc2NhbGFyLlxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkge1xuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBjaG9tcGluZy5cbiAgICAgIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfS0VFUCkge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgICAgfSBlbHNlIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfQ0xJUCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHRoZSBzY2FsYXIgaXMgbm90IGVtcHR5LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCcmVhayB0aGlzIGB3aGlsZWAgY3ljbGUgYW5kIGdvIHRvIHRoZSBmdW5jaXRvbidzIGVwaWxvZ3VlLlxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gRm9sZGVkIHN0eWxlOiB1c2UgZmFuY3kgcnVsZXMgdG8gaGFuZGxlIGxpbmUgYnJlYWtzLlxuICAgIGlmIChmb2xkaW5nKSB7XG5cbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuXG4gICAgICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gZXhjZXB0IGZvciB0aGUgZmlyc3QgY29udGVudCBsaW5lIChjZi4gRXhhbXBsZSA4LjEpXG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG5cbiAgICAgIC8vIEVuZCBvZiBtb3JlLWluZGVudGVkIGJsb2NrLlxuICAgICAgfSBlbHNlIGlmIChhdE1vcmVJbmRlbnRlZCkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZW1wdHlMaW5lcyArIDEpO1xuXG4gICAgICAvLyBKdXN0IG9uZSBsaW5lIGJyZWFrIC0gcGVyY2VpdmUgYXMgdGhlIHNhbWUgbGluZS5cbiAgICAgIH0gZWxzZSBpZiAoZW1wdHlMaW5lcyA9PT0gMCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHdlIGhhdmUgYWxyZWFkeSByZWFkIHNvbWUgc2NhbGFyIGNvbnRlbnQuXG4gICAgICAgICAgc3RhdGUucmVzdWx0ICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAvLyBTZXZlcmFsIGxpbmUgYnJlYWtzIC0gcGVyY2VpdmUgYXMgZGlmZmVyZW50IGxpbmVzLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMpO1xuICAgICAgfVxuXG4gICAgLy8gTGl0ZXJhbCBzdHlsZToganVzdCBhZGQgZXhhY3QgbnVtYmVyIG9mIGxpbmUgYnJlYWtzIGJldHdlZW4gY29udGVudCBsaW5lcy5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay5cbiAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgfVxuXG4gICAgZGlkUmVhZENvbnRlbnQgPSB0cnVlO1xuICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICBlbXB0eUxpbmVzID0gMDtcbiAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgX2xpbmUsXG4gICAgICBfdGFnICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfYW5jaG9yICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgPSBbXSxcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIGRldGVjdGVkICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG5cbiAgICBpZiAoY2ggIT09IDB4MkQvKiAtICovKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoIWlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDw9IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgX3Jlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBfcmVzdWx0LnB1c2goc3RhdGUucmVzdWx0KTtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnc2VxdWVuY2UnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBub2RlSW5kZW50LCBmbG93SW5kZW50KSB7XG4gIHZhciBmb2xsb3dpbmcsXG4gICAgICBhbGxvd0NvbXBhY3QsXG4gICAgICBfbGluZSxcbiAgICAgIF9wb3MsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgICAgICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIF9yZXN1bHQgICAgICAgPSB7fSxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IHt9LFxuICAgICAga2V5VGFnICAgICAgICA9IG51bGwsXG4gICAgICBrZXlOb2RlICAgICAgID0gbnVsbCxcbiAgICAgIHZhbHVlTm9kZSAgICAgPSBudWxsLFxuICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWQgICAgICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuICAgIF9saW5lID0gc3RhdGUubGluZTsgLy8gU2F2ZSB0aGUgY3VycmVudCBsaW5lLlxuICAgIF9wb3MgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIC8vXG4gICAgLy8gRXhwbGljaXQgbm90YXRpb24gY2FzZS4gVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBibG9ja3M6XG4gICAgLy8gZmlyc3QgZm9yIHRoZSBrZXkgKGRlbm90ZWQgYnkgXCI/XCIpIGFuZCBzZWNvbmQgZm9yIHRoZSB2YWx1ZSAoZGVub3RlZCBieSBcIjpcIilcbiAgICAvL1xuICAgIGlmICgoY2ggPT09IDB4M0YvKiA/ICovIHx8IGNoID09PSAweDNBLyogOiAqLykgJiYgaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcblxuICAgICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7XG5cbiAgICAgIH0gZWxzZSBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAvLyBpLmUuIDB4M0EvKiA6ICovID09PSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGV4cGxpY2l0IGtleS5cbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaW5jb21wbGV0ZSBleHBsaWNpdCBtYXBwaW5nIHBhaXI7IGEga2V5IG5vZGUgaXMgbWlzc2VkOyBvciBmb2xsb3dlZCBieSBhIG5vbi10YWJ1bGF0ZWQgZW1wdHkgbGluZScpO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICAgICAgY2ggPSBmb2xsb3dpbmc7XG5cbiAgICAvL1xuICAgIC8vIEltcGxpY2l0IG5vdGF0aW9uIGNhc2UuIEZsb3ctc3R5bGUgbm9kZSBhcyB0aGUga2V5IGZpcnN0LCB0aGVuIFwiOlwiLCBhbmQgdGhlIHZhbHVlLlxuICAgIC8vXG4gICAgfSBlbHNlIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX09VVCwgZmFsc2UsIHRydWUpKSB7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKCFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgICAgICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG5cbiAgICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYW4gaW1wbGljaXQgbWFwcGluZyBwYWlyOyBhIGNvbG9uIGlzIG1pc3NlZCcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYSBibG9jayBtYXBwaW5nIGVudHJ5OyBhIG11bHRpbGluZSBrZXkgbWF5IG5vdCBiZSBhbiBpbXBsaWNpdCBrZXknKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLlxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrOyAvLyBSZWFkaW5nIGlzIGRvbmUuIEdvIHRvIHRoZSBlcGlsb2d1ZS5cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIENvbW1vbiByZWFkaW5nIGNvZGUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IG5vdGF0aW9ucy5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkge1xuICAgICAgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX09VVCwgdHJ1ZSwgYWxsb3dDb21wYWN0KSkge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXRFeHBsaWNpdEtleSkge1xuICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfbGluZSwgX3Bvcyk7XG4gICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCAmJiAoY2ggIT09IDApKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgbWFwcGluZyBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEVwaWxvZ3VlLlxuICAvL1xuXG4gIC8vIFNwZWNpYWwgY2FzZTogbGFzdCBtYXBwaW5nJ3Mgbm9kZSBjb250YWlucyBvbmx5IHRoZSBrZXkgaW4gZXhwbGljaXQgbm90YXRpb24uXG4gIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHRoZSByZXN1bHRpbmcgbWFwcGluZy5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnbWFwcGluZyc7XG4gICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBkZXRlY3RlZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBpc1ZlcmJhdGltID0gZmFsc2UsXG4gICAgICBpc05hbWVkICAgID0gZmFsc2UsXG4gICAgICB0YWdIYW5kbGUsXG4gICAgICB0YWdOYW1lLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjEvKiAhICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhIHRhZyBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgzQy8qIDwgKi8pIHtcbiAgICBpc1ZlcmJhdGltID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICB0YWdIYW5kbGUgPSAnISEnO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB9IGVsc2Uge1xuICAgIHRhZ0hhbmRsZSA9ICchJztcbiAgfVxuXG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgY2ggIT09IDB4M0UvKiA+ICovKTtcblxuICAgIGlmIChzdGF0ZS5wb3NpdGlvbiA8IHN0YXRlLmxlbmd0aCkge1xuICAgICAgdGFnTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSB2ZXJiYXRpbSB0YWcnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICAgICAgaWYgKCFpc05hbWVkKSB7XG4gICAgICAgICAgdGFnSGFuZGxlID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uIC0gMSwgc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QodGFnSGFuZGxlKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWVkIHRhZyBoYW5kbGUgY2Fubm90IGNvbnRhaW4gc3VjaCBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXNOYW1lZCA9IHRydWU7XG4gICAgICAgICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24gKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGV4Y2xhbWF0aW9uIG1hcmtzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUy50ZXN0KHRhZ05hbWUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBmbG93IGluZGljYXRvciBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRhZ05hbWUgJiYgIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHRhZ05hbWUpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogJyArIHRhZ05hbWUpO1xuICB9XG5cbiAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICBzdGF0ZS50YWcgPSB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCB0YWdIYW5kbGUpKSB7XG4gICAgc3RhdGUudGFnID0gc3RhdGUudGFnTWFwW3RhZ0hhbmRsZV0gKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnIScpIHtcbiAgICBzdGF0ZS50YWcgPSAnIScgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnISEnKSB7XG4gICAgc3RhdGUudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZGVjbGFyZWQgdGFnIGhhbmRsZSBcIicgKyB0YWdIYW5kbGUgKyAnXCInKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI2LyogJiAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYW4gYW5jaG9yIHByb3BlcnR5Jyk7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbmNob3Igbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgc3RhdGUuYW5jaG9yID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQWxpYXMoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiwgYWxpYXMsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyQS8qICogKi8pIHJldHVybiBmYWxzZTtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbGlhcyBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7XG4gIH1cblxuICBhbGlhcyA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmICghc3RhdGUuYW5jaG9yTWFwLmhhc093blByb3BlcnR5KGFsaWFzKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmlkZW50aWZpZWQgYWxpYXMgXCInICsgYWxpYXMgKyAnXCInKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VsdCA9IHN0YXRlLmFuY2hvck1hcFthbGlhc107XG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbXBvc2VOb2RlKHN0YXRlLCBwYXJlbnRJbmRlbnQsIG5vZGVDb250ZXh0LCBhbGxvd1RvU2VlaywgYWxsb3dDb21wYWN0KSB7XG4gIHZhciBhbGxvd0Jsb2NrU3R5bGVzLFxuICAgICAgYWxsb3dCbG9ja1NjYWxhcnMsXG4gICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMsXG4gICAgICBpbmRlbnRTdGF0dXMgPSAxLCAvLyAxOiB0aGlzPnBhcmVudCwgMDogdGhpcz1wYXJlbnQsIC0xOiB0aGlzPHBhcmVudFxuICAgICAgYXROZXdMaW5lICA9IGZhbHNlLFxuICAgICAgaGFzQ29udGVudCA9IGZhbHNlLFxuICAgICAgdHlwZUluZGV4LFxuICAgICAgdHlwZVF1YW50aXR5LFxuICAgICAgdHlwZSxcbiAgICAgIGZsb3dJbmRlbnQsXG4gICAgICBibG9ja0luZGVudDtcblxuICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5saXN0ZW5lcignb3BlbicsIHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLnRhZyAgICA9IG51bGw7XG4gIHN0YXRlLmFuY2hvciA9IG51bGw7XG4gIHN0YXRlLmtpbmQgICA9IG51bGw7XG4gIHN0YXRlLnJlc3VsdCA9IG51bGw7XG5cbiAgYWxsb3dCbG9ja1N0eWxlcyA9IGFsbG93QmxvY2tTY2FsYXJzID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zID1cbiAgICBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQgfHxcbiAgICBDT05URVhUX0JMT0NLX0lOICA9PT0gbm9kZUNvbnRleHQ7XG5cbiAgaWYgKGFsbG93VG9TZWVrKSB7XG4gICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgIHdoaWxlIChyZWFkVGFnUHJvcGVydHkoc3RhdGUpIHx8IHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkpIHtcbiAgICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYWxsb3dCbG9ja1N0eWxlcztcblxuICAgICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMpIHtcbiAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhdE5ld0xpbmUgfHwgYWxsb3dDb21wYWN0O1xuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSB8fCBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICBpZiAoQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCB8fCBDT05URVhUX0ZMT1dfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudCArIDE7XG4gICAgfVxuXG4gICAgYmxvY2tJbmRlbnQgPSBzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydDtcblxuICAgIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICAgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiZcbiAgICAgICAgICAocmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KSB8fFxuICAgICAgICAgICByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBibG9ja0luZGVudCwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoYWxsb3dCbG9ja1NjYWxhcnMgJiYgcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkgfHxcbiAgICAgICAgICAgIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpIHx8XG4gICAgICAgICAgICByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVhZEFsaWFzKHN0YXRlKSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCB8fCBzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhbGlhcyBub2RlIHNob3VsZCBub3QgaGF2ZSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRQbGFpblNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXRlLnRhZyA9ICc/JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGluZGVudFN0YXR1cyA9PT0gMCkge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiBibG9jayBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBzYW1lIGluZGVudGF0aW9uIGxldmVsIGFzIHRoZSBwYXJlbnQuXG4gICAgICAvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI3OTk3ODRcbiAgICAgIGhhc0NvbnRlbnQgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYgcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJyEnKSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJz8nKSB7XG4gICAgICBmb3IgKHR5cGVJbmRleCA9IDAsIHR5cGVRdWFudGl0eSA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyB0eXBlSW5kZXggPCB0eXBlUXVhbnRpdHk7IHR5cGVJbmRleCArPSAxKSB7XG4gICAgICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW3R5cGVJbmRleF07XG5cbiAgICAgICAgLy8gSW1wbGljaXQgcmVzb2x2aW5nIGlzIG5vdCBhbGxvd2VkIGZvciBub24tc2NhbGFyIHR5cGVzLCBhbmQgJz8nXG4gICAgICAgIC8vIG5vbi1zcGVjaWZpYyB0YWcgaXMgb25seSBhc3NpZ25lZCB0byBwbGFpbiBzY2FsYXJzLiBTbywgaXQgaXNuJ3RcbiAgICAgICAgLy8gbmVlZGVkIHRvIGNoZWNrIGZvciAna2luZCcgY29uZm9ybWl0eS5cblxuICAgICAgICBpZiAodHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCkpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkXG4gICAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXSwgc3RhdGUudGFnKSkge1xuICAgICAgdHlwZSA9IHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXVtzdGF0ZS50YWddO1xuXG4gICAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHR5cGUua2luZCAhPT0gc3RhdGUua2luZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwnICsgc3RhdGUudGFnICsgJz4gdGFnOyBpdCBzaG91bGQgYmUgXCInICsgdHlwZS5raW5kICsgJ1wiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2Fubm90IHJlc29sdmUgYSBub2RlIHdpdGggITwnICsgc3RhdGUudGFnICsgJz4gZXhwbGljaXQgdGFnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gdGFnICE8JyArIHN0YXRlLnRhZyArICc+Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ2Nsb3NlJywgc3RhdGUpO1xuICB9XG4gIHJldHVybiBzdGF0ZS50YWcgIT09IG51bGwgfHwgIHN0YXRlLmFuY2hvciAhPT0gbnVsbCB8fCBoYXNDb250ZW50O1xufVxuXG5mdW5jdGlvbiByZWFkRG9jdW1lbnQoc3RhdGUpIHtcbiAgdmFyIGRvY3VtZW50U3RhcnQgPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIF9wb3NpdGlvbixcbiAgICAgIGRpcmVjdGl2ZU5hbWUsXG4gICAgICBkaXJlY3RpdmVBcmdzLFxuICAgICAgaGFzRGlyZWN0aXZlcyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgc3RhdGUudmVyc2lvbiA9IG51bGw7XG4gIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IHN0YXRlLmxlZ2FjeTtcbiAgc3RhdGUudGFnTWFwID0ge307XG4gIHN0YXRlLmFuY2hvck1hcCA9IHt9O1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiAwIHx8IGNoICE9PSAweDI1LyogJSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZGlyZWN0aXZlTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgIGRpcmVjdGl2ZUFyZ3MgPSBbXTtcblxuICAgIGlmIChkaXJlY3RpdmVOYW1lLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmUgbmFtZSBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciBpbiBsZW5ndGgnKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfRU9MKGNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkgYnJlYWs7XG5cbiAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBkaXJlY3RpdmVBcmdzLnB1c2goc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbikpO1xuICAgIH1cblxuICAgIGlmIChjaCAhPT0gMCkgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoZGlyZWN0aXZlSGFuZGxlcnMsIGRpcmVjdGl2ZU5hbWUpKSB7XG4gICAgICBkaXJlY3RpdmVIYW5kbGVyc1tkaXJlY3RpdmVOYW1lXShzdGF0ZSwgZGlyZWN0aXZlTmFtZSwgZGlyZWN0aXZlQXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJyArIGRpcmVjdGl2ZU5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH1cblxuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IDAgJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pICAgICA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKSA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAyKSA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgY29tcG9zZU5vZGUoc3RhdGUsIHN0YXRlLmxpbmVJbmRlbnQgLSAxLCBDT05URVhUX0JMT0NLX09VVCwgZmFsc2UsIHRydWUpO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmNoZWNrTGluZUJyZWFrcyAmJlxuICAgICAgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MudGVzdChzdGF0ZS5pbnB1dC5zbGljZShkb2N1bWVudFN0YXJ0LCBzdGF0ZS5wb3NpdGlvbikpKSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnbm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50Jyk7XG4gIH1cblxuICBzdGF0ZS5kb2N1bWVudHMucHVzaChzdGF0ZS5yZXN1bHQpO1xuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcblxuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyRS8qIC4gKi8pIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaW5wdXQgPSBTdHJpbmcoaW5wdXQpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5wdXQubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAvLyBBZGQgdGFpbGluZyBgXFxuYCBpZiBub3QgZXhpc3RzXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEEvKiBMRiAqLyAmJlxuICAgICAgICBpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBELyogQ1IgKi8pIHtcbiAgICAgIGlucHV0ICs9ICdcXG4nO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIEJPTVxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKGlucHV0LCBvcHRpb25zKTtcblxuICAvLyBVc2UgMCBhcyBzdHJpbmcgdGVybWluYXRvci4gVGhhdCBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgYm91bmRzIGNoZWNrLlxuICBzdGF0ZS5pbnB1dCArPSAnXFwwJztcblxuICB3aGlsZSAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MjAvKiBTcGFjZSAqLykge1xuICAgIHN0YXRlLmxpbmVJbmRlbnQgKz0gMTtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7XG4gICAgcmVhZERvY3VtZW50KHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZS5kb2N1bWVudHM7XG59XG5cblxuZnVuY3Rpb24gbG9hZEFsbChpbnB1dCwgaXRlcmF0b3IsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50cyA9IGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpLCBpbmRleCwgbGVuZ3RoO1xuXG4gIGlmICh0eXBlb2YgaXRlcmF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGRvY3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgaXRlcmF0b3IoZG9jdW1lbnRzW2luZGV4XSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTtcblxuICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzWzBdO1xuICB9XG4gIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtLCBidXQgZm91bmQgbW9yZScpO1xufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkQWxsKGlucHV0LCBvdXRwdXQsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBvdXRwdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsb2FkQWxsKGlucHV0LCBvdXRwdXQsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2FkQWxsKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBsb2FkKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICA9IGxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICA9IGxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZEFsbCA9IHNhZmVMb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgPSBzYWZlTG9hZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxuXG5mdW5jdGlvbiBNYXJrKG5hbWUsIGJ1ZmZlciwgcG9zaXRpb24sIGxpbmUsIGNvbHVtbikge1xuICB0aGlzLm5hbWUgICAgID0gbmFtZTtcbiAgdGhpcy5idWZmZXIgICA9IGJ1ZmZlcjtcbiAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICB0aGlzLmxpbmUgICAgID0gbGluZTtcbiAgdGhpcy5jb2x1bW4gICA9IGNvbHVtbjtcbn1cblxuXG5NYXJrLnByb3RvdHlwZS5nZXRTbmlwcGV0ID0gZnVuY3Rpb24gZ2V0U25pcHBldChpbmRlbnQsIG1heExlbmd0aCkge1xuICB2YXIgaGVhZCwgc3RhcnQsIHRhaWwsIGVuZCwgc25pcHBldDtcblxuICBpZiAoIXRoaXMuYnVmZmVyKSByZXR1cm4gbnVsbDtcblxuICBpbmRlbnQgPSBpbmRlbnQgfHwgNDtcbiAgbWF4TGVuZ3RoID0gbWF4TGVuZ3RoIHx8IDc1O1xuXG4gIGhlYWQgPSAnJztcbiAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChzdGFydCA+IDAgJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoc3RhcnQgLSAxKSkgPT09IC0xKSB7XG4gICAgc3RhcnQgLT0gMTtcbiAgICBpZiAodGhpcy5wb3NpdGlvbiAtIHN0YXJ0ID4gKG1heExlbmd0aCAvIDIgLSAxKSkge1xuICAgICAgaGVhZCA9ICcgLi4uICc7XG4gICAgICBzdGFydCArPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdGFpbCA9ICcnO1xuICBlbmQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChlbmQgPCB0aGlzLmJ1ZmZlci5sZW5ndGggJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoZW5kKSkgPT09IC0xKSB7XG4gICAgZW5kICs9IDE7XG4gICAgaWYgKGVuZCAtIHRoaXMucG9zaXRpb24gPiAobWF4TGVuZ3RoIC8gMiAtIDEpKSB7XG4gICAgICB0YWlsID0gJyAuLi4gJztcbiAgICAgIGVuZCAtPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc25pcHBldCA9IHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gIHJldHVybiBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50KSArIGhlYWQgKyBzbmlwcGV0ICsgdGFpbCArICdcXG4nICtcbiAgICAgICAgIGNvbW1vbi5yZXBlYXQoJyAnLCBpbmRlbnQgKyB0aGlzLnBvc2l0aW9uIC0gc3RhcnQgKyBoZWFkLmxlbmd0aCkgKyAnXic7XG59O1xuXG5cbk1hcmsucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICB2YXIgc25pcHBldCwgd2hlcmUgPSAnJztcblxuICBpZiAodGhpcy5uYW1lKSB7XG4gICAgd2hlcmUgKz0gJ2luIFwiJyArIHRoaXMubmFtZSArICdcIiAnO1xuICB9XG5cbiAgd2hlcmUgKz0gJ2F0IGxpbmUgJyArICh0aGlzLmxpbmUgKyAxKSArICcsIGNvbHVtbiAnICsgKHRoaXMuY29sdW1uICsgMSk7XG5cbiAgaWYgKCFjb21wYWN0KSB7XG4gICAgc25pcHBldCA9IHRoaXMuZ2V0U25pcHBldCgpO1xuXG4gICAgaWYgKHNuaXBwZXQpIHtcbiAgICAgIHdoZXJlICs9ICc6XFxuJyArIHNuaXBwZXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdoZXJlO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcms7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbiovXG5cbnZhciBjb21tb24gICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBZQU1MRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcbnZhciBUeXBlICAgICAgICAgID0gcmVxdWlyZSgnLi90eXBlJyk7XG5cblxuZnVuY3Rpb24gY29tcGlsZUxpc3Qoc2NoZW1hLCBuYW1lLCByZXN1bHQpIHtcbiAgdmFyIGV4Y2x1ZGUgPSBbXTtcblxuICBzY2hlbWEuaW5jbHVkZS5mb3JFYWNoKGZ1bmN0aW9uIChpbmNsdWRlZFNjaGVtYSkge1xuICAgIHJlc3VsdCA9IGNvbXBpbGVMaXN0KGluY2x1ZGVkU2NoZW1hLCBuYW1lLCByZXN1bHQpO1xuICB9KTtcblxuICBzY2hlbWFbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoY3VycmVudFR5cGUpIHtcbiAgICByZXN1bHQuZm9yRWFjaChmdW5jdGlvbiAocHJldmlvdXNUeXBlLCBwcmV2aW91c0luZGV4KSB7XG4gICAgICBpZiAocHJldmlvdXNUeXBlLnRhZyA9PT0gY3VycmVudFR5cGUudGFnICYmIHByZXZpb3VzVHlwZS5raW5kID09PSBjdXJyZW50VHlwZS5raW5kKSB7XG4gICAgICAgIGV4Y2x1ZGUucHVzaChwcmV2aW91c0luZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc3VsdC5wdXNoKGN1cnJlbnRUeXBlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGV4Y2x1ZGUuaW5kZXhPZihpbmRleCkgPT09IC0xO1xuICB9KTtcbn1cblxuXG5mdW5jdGlvbiBjb21waWxlTWFwKC8qIGxpc3RzLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7XG4gICAgICAgIHNjYWxhcjoge30sXG4gICAgICAgIHNlcXVlbmNlOiB7fSxcbiAgICAgICAgbWFwcGluZzoge30sXG4gICAgICAgIGZhbGxiYWNrOiB7fVxuICAgICAgfSwgaW5kZXgsIGxlbmd0aDtcblxuICBmdW5jdGlvbiBjb2xsZWN0VHlwZSh0eXBlKSB7XG4gICAgcmVzdWx0W3R5cGUua2luZF1bdHlwZS50YWddID0gcmVzdWx0WydmYWxsYmFjayddW3R5cGUudGFnXSA9IHR5cGU7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBhcmd1bWVudHNbaW5kZXhdLmZvckVhY2goY29sbGVjdFR5cGUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gU2NoZW1hKGRlZmluaXRpb24pIHtcbiAgdGhpcy5pbmNsdWRlICA9IGRlZmluaXRpb24uaW5jbHVkZSAgfHwgW107XG4gIHRoaXMuaW1wbGljaXQgPSBkZWZpbml0aW9uLmltcGxpY2l0IHx8IFtdO1xuICB0aGlzLmV4cGxpY2l0ID0gZGVmaW5pdGlvbi5leHBsaWNpdCB8fCBbXTtcblxuICB0aGlzLmltcGxpY2l0LmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBpZiAodHlwZS5sb2FkS2luZCAmJiB0eXBlLmxvYWRLaW5kICE9PSAnc2NhbGFyJykge1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1RoZXJlIGlzIGEgbm9uLXNjYWxhciB0eXBlIGluIHRoZSBpbXBsaWNpdCBsaXN0IG9mIGEgc2NoZW1hLiBJbXBsaWNpdCByZXNvbHZpbmcgb2Ygc3VjaCB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbiAgfSk7XG5cbiAgdGhpcy5jb21waWxlZEltcGxpY2l0ID0gY29tcGlsZUxpc3QodGhpcywgJ2ltcGxpY2l0JywgW10pO1xuICB0aGlzLmNvbXBpbGVkRXhwbGljaXQgPSBjb21waWxlTGlzdCh0aGlzLCAnZXhwbGljaXQnLCBbXSk7XG4gIHRoaXMuY29tcGlsZWRUeXBlTWFwICA9IGNvbXBpbGVNYXAodGhpcy5jb21waWxlZEltcGxpY2l0LCB0aGlzLmNvbXBpbGVkRXhwbGljaXQpO1xufVxuXG5cblNjaGVtYS5ERUZBVUxUID0gbnVsbDtcblxuXG5TY2hlbWEuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlU2NoZW1hKCkge1xuICB2YXIgc2NoZW1hcywgdHlwZXM7XG5cbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgc2NoZW1hcyA9IFNjaGVtYS5ERUZBVUxUO1xuICAgICAgdHlwZXMgPSBhcmd1bWVudHNbMF07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMjpcbiAgICAgIHNjaGVtYXMgPSBhcmd1bWVudHNbMF07XG4gICAgICB0eXBlcyA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBTY2hlbWEuY3JlYXRlIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBzY2hlbWFzID0gY29tbW9uLnRvQXJyYXkoc2NoZW1hcyk7XG4gIHR5cGVzID0gY29tbW9uLnRvQXJyYXkodHlwZXMpO1xuXG4gIGlmICghc2NoZW1hcy5ldmVyeShmdW5jdGlvbiAoc2NoZW1hKSB7IHJldHVybiBzY2hlbWEgaW5zdGFuY2VvZiBTY2hlbWE7IH0pKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIHN1cGVyIHNjaGVtYXMgKG9yIGEgc2luZ2xlIFNjaGVtYSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVNjaGVtYSBvYmplY3QuJyk7XG4gIH1cblxuICBpZiAoIXR5cGVzLmV2ZXJ5KGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0eXBlIGluc3RhbmNlb2YgVHlwZTsgfSkpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LicpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEoe1xuICAgIGluY2x1ZGU6IHNjaGVtYXMsXG4gICAgZXhwbGljaXQ6IHR5cGVzXG4gIH0pO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYTtcbiIsIi8vIFN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwNDkyM1xuLy9cbi8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLlxuLy8gU28sIENvcmUgc2NoZW1hIGhhcyBubyBkaXN0aW5jdGlvbnMgZnJvbSBKU09OIHNjaGVtYSBpcyBKUy1ZQU1MLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vanNvbicpXG4gIF1cbn0pO1xuIiwiLy8gSlMtWUFNTCdzIGRlZmF1bHQgc2NoZW1hIGZvciBgbG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gSlMtWUFNTCdzIGRlZmF1bHQgc2FmZSBzY2hlbWEgYW5kIGluY2x1ZGVzXG4vLyBKYXZhU2NyaXB0LXNwZWNpZmljIHR5cGVzOiAhIWpzL3VuZGVmaW5lZCwgISFqcy9yZWdleHAgYW5kICEhanMvZnVuY3Rpb24uXG4vL1xuLy8gQWxzbyB0aGlzIHNjaGVtYSBpcyB1c2VkIGFzIGRlZmF1bHQgYmFzZSBzY2hlbWEgYXQgYFNjaGVtYS5jcmVhdGVgIGZ1bmN0aW9uLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWEuREVGQVVMVCA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9kZWZhdWx0X3NhZmUnKVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvdW5kZWZpbmVkJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9yZWdleHAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL2Z1bmN0aW9uJylcbiAgXVxufSk7XG4iLCIvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBzYWZlTG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gc3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hIGFuZCBpbmNsdWRlcyBtb3N0IG9mXG4vLyBleHRyYSB0eXBlcyBkZXNjcmliZWQgYXQgWUFNTCB0YWcgcmVwb3NpdG9yeS4gKGh0dHA6Ly95YW1sLm9yZy90eXBlLylcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2NvcmUnKVxuICBdLFxuICBpbXBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvdGltZXN0YW1wJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tZXJnZScpXG4gIF0sXG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9iaW5hcnknKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL29tYXAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3BhaXJzJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zZXQnKVxuICBdXG59KTtcbiIsIi8vIFN0YW5kYXJkIFlBTUwncyBGYWlsc2FmZSBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDIzNDZcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zdHInKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3NlcScpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvbWFwJylcbiAgXVxufSk7XG4iLCIvLyBTdGFuZGFyZCBZQU1MJ3MgSlNPTiBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDMyMzFcbi8vXG4vLyBOT1RFOiBKUy1ZQU1MIGRvZXMgbm90IHN1cHBvcnQgc2NoZW1hLXNwZWNpZmljIHRhZyByZXNvbHV0aW9uIHJlc3RyaWN0aW9ucy5cbi8vIFNvLCB0aGlzIHNjaGVtYSBpcyBub3Qgc3VjaCBzdHJpY3QgYXMgZGVmaW5lZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy8gSXQgYWxsb3dzIG51bWJlcnMgaW4gYmluYXJ5IG5vdGFpb24sIHVzZSBgTnVsbGAgYW5kIGBOVUxMYCBhcyBgbnVsbGAsIGV0Yy5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2ZhaWxzYWZlJylcbiAgXSxcbiAgaW1wbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL251bGwnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2Jvb2wnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2ludCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvZmxvYXQnKVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xuXG52YXIgVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TID0gW1xuICAna2luZCcsXG4gICdyZXNvbHZlJyxcbiAgJ2NvbnN0cnVjdCcsXG4gICdpbnN0YW5jZU9mJyxcbiAgJ3ByZWRpY2F0ZScsXG4gICdyZXByZXNlbnQnLFxuICAnZGVmYXVsdFN0eWxlJyxcbiAgJ3N0eWxlQWxpYXNlcydcbl07XG5cbnZhciBZQU1MX05PREVfS0lORFMgPSBbXG4gICdzY2FsYXInLFxuICAnc2VxdWVuY2UnLFxuICAnbWFwcGluZydcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZUFsaWFzZXMobWFwKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAobWFwICE9PSBudWxsKSB7XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgbWFwW3N0eWxlXS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgICByZXN1bHRbU3RyaW5nKGFsaWFzKV0gPSBzdHlsZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gVHlwZSh0YWcsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiIGlzIG1ldCBpbiBkZWZpbml0aW9uIG9mIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gICAgfVxuICB9KTtcblxuICAvLyBUT0RPOiBBZGQgdGFnIGZvcm1hdCBjaGVjay5cbiAgdGhpcy50YWcgICAgICAgICAgPSB0YWc7XG4gIHRoaXMua2luZCAgICAgICAgID0gb3B0aW9uc1sna2luZCddICAgICAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXNvbHZlICAgICAgPSBvcHRpb25zWydyZXNvbHZlJ10gICAgICB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuICB0aGlzLmNvbnN0cnVjdCAgICA9IG9wdGlvbnNbJ2NvbnN0cnVjdCddICAgIHx8IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhOyB9O1xuICB0aGlzLmluc3RhbmNlT2YgICA9IG9wdGlvbnNbJ2luc3RhbmNlT2YnXSAgIHx8IG51bGw7XG4gIHRoaXMucHJlZGljYXRlICAgID0gb3B0aW9uc1sncHJlZGljYXRlJ10gICAgfHwgbnVsbDtcbiAgdGhpcy5yZXByZXNlbnQgICAgPSBvcHRpb25zWydyZXByZXNlbnQnXSAgICB8fCBudWxsO1xuICB0aGlzLmRlZmF1bHRTdHlsZSA9IG9wdGlvbnNbJ2RlZmF1bHRTdHlsZSddIHx8IG51bGw7XG4gIHRoaXMuc3R5bGVBbGlhc2VzID0gY29tcGlsZVN0eWxlQWxpYXNlcyhvcHRpb25zWydzdHlsZUFsaWFzZXMnXSB8fCBudWxsKTtcblxuICBpZiAoWUFNTF9OT0RFX0tJTkRTLmluZGV4T2YodGhpcy5raW5kKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVW5rbm93biBraW5kIFwiJyArIHRoaXMua2luZCArICdcIiBpcyBzcGVjaWZpZWQgZm9yIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUeXBlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuXG52YXIgTm9kZUJ1ZmZlcjtcblxudHJ5IHtcbiAgLy8gQSB0cmljayBmb3IgYnJvd3NlcmlmaWVkIHZlcnNpb24sIHRvIG5vdCBpbmNsdWRlIGBCdWZmZXJgIHNoaW1cbiAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTtcbiAgTm9kZUJ1ZmZlciA9IF9yZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG59IGNhdGNoIChfXykge31cblxudmFyIFR5cGUgICAgICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cblxuLy8gWyA2NCwgNjUsIDY2IF0gLT4gWyBwYWRkaW5nLCBDUiwgTEYgXVxudmFyIEJBU0U2NF9NQVAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cXG5cXHInO1xuXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQmluYXJ5KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgY29kZSwgaWR4LCBiaXRsZW4gPSAwLCBtYXggPSBkYXRhLmxlbmd0aCwgbWFwID0gQkFTRTY0X01BUDtcblxuICAvLyBDb252ZXJ0IG9uZSBieSBvbmUuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGNvZGUgPSBtYXAuaW5kZXhPZihkYXRhLmNoYXJBdChpZHgpKTtcblxuICAgIC8vIFNraXAgQ1IvTEZcbiAgICBpZiAoY29kZSA+IDY0KSBjb250aW51ZTtcblxuICAgIC8vIEZhaWwgb24gaWxsZWdhbCBjaGFyYWN0ZXJzXG4gICAgaWYgKGNvZGUgPCAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBiaXRsZW4gKz0gNjtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGFyZSBhbnkgYml0cyBsZWZ0LCBzb3VyY2Ugd2FzIGNvcnJ1cHRlZFxuICByZXR1cm4gKGJpdGxlbiAlIDgpID09PSAwO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQmluYXJ5KGRhdGEpIHtcbiAgdmFyIGlkeCwgdGFpbGJpdHMsXG4gICAgICBpbnB1dCA9IGRhdGEucmVwbGFjZSgvW1xcclxcbj1dL2csICcnKSwgLy8gcmVtb3ZlIENSL0xGICYgcGFkZGluZyB0byBzaW1wbGlmeSBzY2FuXG4gICAgICBtYXggPSBpbnB1dC5sZW5ndGgsXG4gICAgICBtYXAgPSBCQVNFNjRfTUFQLFxuICAgICAgYml0cyA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICAvLyBDb2xsZWN0IGJ5IDYqNCBiaXRzICgzIGJ5dGVzKVxuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmICgoaWR4ICUgNCA9PT0gMCkgJiYgaWR4KSB7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDYpIHwgbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdGFpbGJpdHMgPSAobWF4ICUgNCkgKiA2O1xuXG4gIGlmICh0YWlsYml0cyA9PT0gMCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxOCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDEwKSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDIpICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDEyKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gNCkgJiAweEZGKTtcbiAgfVxuXG4gIC8vIFdyYXAgaW50byBCdWZmZXIgZm9yIE5vZGVKUyBhbmQgbGVhdmUgQXJyYXkgZm9yIGJyb3dzZXJcbiAgaWYgKE5vZGVCdWZmZXIpIHtcbiAgICAvLyBTdXBwb3J0IG5vZGUgNi4rIEJ1ZmZlciBBUEkgd2hlbiBhdmFpbGFibGVcbiAgICByZXR1cm4gTm9kZUJ1ZmZlci5mcm9tID8gTm9kZUJ1ZmZlci5mcm9tKHJlc3VsdCkgOiBuZXcgTm9kZUJ1ZmZlcihyZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBiaXRzID0gMCwgaWR4LCB0YWlsLFxuICAgICAgbWF4ID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBldmVyeSB0aHJlZSBieXRlcyB0byA0IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSAzID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF07XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsID0gbWF4ICUgMztcblxuICBpZiAodGFpbCA9PT0gMCkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMikge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTApICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAxKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzQmluYXJ5KG9iamVjdCkge1xuICByZXR1cm4gTm9kZUJ1ZmZlciAmJiBOb2RlQnVmZmVyLmlzQnVmZmVyKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJpbmFyeScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQmluYXJ5LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCaW5hcnksXG4gIHByZWRpY2F0ZTogaXNCaW5hcnksXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEJpbmFyeVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJvb2xlYW4oZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ3RydWUnIHx8IGRhdGEgPT09ICdUcnVlJyB8fCBkYXRhID09PSAnVFJVRScpKSB8fFxuICAgICAgICAgKG1heCA9PT0gNSAmJiAoZGF0YSA9PT0gJ2ZhbHNlJyB8fCBkYXRhID09PSAnRmFsc2UnIHx8IGRhdGEgPT09ICdGQUxTRScpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJvb2xlYW4oZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gJ3RydWUnIHx8XG4gICAgICAgICBkYXRhID09PSAnVHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUUlVFJztcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQm9vbGVhbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQm9vbGVhbixcbiAgcHJlZGljYXRlOiBpc0Jvb2xlYW4sXG4gIHJlcHJlc2VudDoge1xuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ3RydWUnIDogJ2ZhbHNlJzsgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUUlVFJyA6ICdGQUxTRSc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVHJ1ZScgOiAnRmFsc2UnOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgWUFNTF9GTE9BVF9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgLy8gMi41ZTQsIDIuNSBhbmQgaW50ZWdlcnNcbiAgJ14oPzpbLStdPyg/OjB8WzEtOV1bMC05X10qKSg/OlxcXFwuWzAtOV9dKik/KD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gLjJlNCwgLjJcbiAgLy8gc3BlY2lhbCBjYXNlLCBzZWVtcyBub3QgZnJvbSBzcGVjXG4gICd8XFxcXC5bMC05X10rKD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gMjA6NTlcbiAgJ3xbLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFxcXC5bMC05X10qJyArXG4gIC8vIC5pbmZcbiAgJ3xbLStdP1xcXFwuKD86aW5mfEluZnxJTkYpJyArXG4gIC8vIC5uYW5cbiAgJ3xcXFxcLig/Om5hbnxOYU58TkFOKSkkJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sRmxvYXQoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghWUFNTF9GTE9BVF9QQVRURVJOLnRlc3QoZGF0YSkgfHxcbiAgICAgIC8vIFF1aWNrIGhhY2sgdG8gbm90IGFsbG93IGludGVnZXJzIGVuZCB3aXRoIGBfYFxuICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIHVwZGF0ZSByZWdleHAgJiBjaGVjayBzcGVlZFxuICAgICAgZGF0YVtkYXRhLmxlbmd0aCAtIDFdID09PSAnXycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEZsb2F0KGRhdGEpIHtcbiAgdmFyIHZhbHVlLCBzaWduLCBiYXNlLCBkaWdpdHM7XG5cbiAgdmFsdWUgID0gZGF0YS5yZXBsYWNlKC9fL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICBzaWduICAgPSB2YWx1ZVswXSA9PT0gJy0nID8gLTEgOiAxO1xuICBkaWdpdHMgPSBbXTtcblxuICBpZiAoJystJy5pbmRleE9mKHZhbHVlWzBdKSA+PSAwKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJy5pbmYnKSB7XG4gICAgcmV0dXJuIChzaWduID09PSAxKSA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcblxuICB9IGVsc2UgaWYgKHZhbHVlID09PSAnLm5hbicpIHtcbiAgICByZXR1cm4gTmFOO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUuaW5kZXhPZignOicpID49IDApIHtcbiAgICB2YWx1ZS5zcGxpdCgnOicpLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIGRpZ2l0cy51bnNoaWZ0KHBhcnNlRmxvYXQodiwgMTApKTtcbiAgICB9KTtcblxuICAgIHZhbHVlID0gMC4wO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IGQgKiBiYXNlO1xuICAgICAgYmFzZSAqPSA2MDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduICogdmFsdWU7XG5cbiAgfVxuICByZXR1cm4gc2lnbiAqIHBhcnNlRmxvYXQodmFsdWUsIDEwKTtcbn1cblxuXG52YXIgU0NJRU5USUZJQ19XSVRIT1VUX0RPVCA9IC9eWy0rXT9bMC05XStlLztcblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEZsb2F0KG9iamVjdCwgc3R5bGUpIHtcbiAgdmFyIHJlcztcblxuICBpZiAoaXNOYU4ob2JqZWN0KSkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLm5hbic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5OQU4nO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuTmFOJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICctLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy0uSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLS5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSkge1xuICAgIHJldHVybiAnLTAuMCc7XG4gIH1cblxuICByZXMgPSBvYmplY3QudG9TdHJpbmcoMTApO1xuXG4gIC8vIEpTIHN0cmluZ2lmaWVyIGNhbiBidWlsZCBzY2llbnRpZmljIGZvcm1hdCB3aXRob3V0IGRvdHM6IDVlLTEwMCxcbiAgLy8gd2hpbGUgWUFNTCByZXF1cmVzIGRvdDogNS5lLTEwMC4gRml4IGl0IHdpdGggc2ltcGxlIGhhY2tcblxuICByZXR1cm4gU0NJRU5USUZJQ19XSVRIT1VUX0RPVC50ZXN0KHJlcykgPyByZXMucmVwbGFjZSgnZScsICcuZScpIDogcmVzO1xufVxuXG5mdW5jdGlvbiBpc0Zsb2F0KG9iamVjdCkge1xuICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBOdW1iZXJdJykgJiZcbiAgICAgICAgIChvYmplY3QgJSAxICE9PSAwIHx8IGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEZsb2F0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxGbG9hdCxcbiAgcHJlZGljYXRlOiBpc0Zsb2F0LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxGbG9hdCxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIGlzSGV4Q29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgfHxcbiAgICAgICAgICgoMHg0MS8qIEEgKi8gPD0gYykgJiYgKGMgPD0gMHg0Ni8qIEYgKi8pKSB8fFxuICAgICAgICAgKCgweDYxLyogYSAqLyA8PSBjKSAmJiAoYyA8PSAweDY2LyogZiAqLykpO1xufVxuXG5mdW5jdGlvbiBpc09jdENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM3LyogNyAqLykpO1xufVxuXG5mdW5jdGlvbiBpc0RlY0NvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEludGVnZXIoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGhhc0RpZ2l0cyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKCFtYXgpIHJldHVybiBmYWxzZTtcblxuICBjaCA9IGRhdGFbaW5kZXhdO1xuXG4gIC8vIHNpZ25cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgLy8gMFxuICAgIGlmIChpbmRleCArIDEgPT09IG1heCkgcmV0dXJuIHRydWU7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuXG4gICAgLy8gYmFzZSAyLCBiYXNlIDgsIGJhc2UgMTZcblxuICAgIGlmIChjaCA9PT0gJ2InKSB7XG4gICAgICAvLyBiYXNlIDJcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cblxuICAgIGlmIChjaCA9PT0gJ3gnKSB7XG4gICAgICAvLyBiYXNlIDE2XG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWlzSGV4Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICAgIH1cblxuICAgIC8vIGJhc2UgOFxuICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gIH1cblxuICAvLyBiYXNlIDEwIChleGNlcHQgMCkgb3IgYmFzZSA2MFxuXG4gIC8vIHZhbHVlIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgX2A7XG4gIGlmIChjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgaWYgKGNoID09PSAnOicpIGJyZWFrO1xuICAgIGlmICghaXNEZWNDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gIH1cblxuICAvLyBTaG91bGQgaGF2ZSBkaWdpdHMgYW5kIHNob3VsZCBub3QgZW5kIHdpdGggYF9gXG4gIGlmICghaGFzRGlnaXRzIHx8IGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICAvLyBpZiAhYmFzZTYwIC0gZG9uZTtcbiAgaWYgKGNoICE9PSAnOicpIHJldHVybiB0cnVlO1xuXG4gIC8vIGJhc2U2MCBhbG1vc3Qgbm90IHVzZWQsIG5vIG5lZWRzIHRvIG9wdGltaXplXG4gIHJldHVybiAvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QoZGF0YS5zbGljZShpbmRleCkpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sSW50ZWdlcihkYXRhKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGEsIHNpZ24gPSAxLCBjaCwgYmFzZSwgZGlnaXRzID0gW107XG5cbiAgaWYgKHZhbHVlLmluZGV4T2YoJ18nKSAhPT0gLTEpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL18vZywgJycpO1xuICB9XG5cbiAgY2ggPSB2YWx1ZVswXTtcblxuICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgaWYgKGNoID09PSAnLScpIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcwJykgcmV0dXJuIDA7XG5cbiAgaWYgKGNoID09PSAnMCcpIHtcbiAgICBpZiAodmFsdWVbMV0gPT09ICdiJykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMik7XG4gICAgaWYgKHZhbHVlWzFdID09PSAneCcpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDE2KTtcbiAgICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgfVxuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgdmFsdWUuc3BsaXQoJzonKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICBkaWdpdHMudW5zaGlmdChwYXJzZUludCh2LCAxMCkpO1xuICAgIH0pO1xuXG4gICAgdmFsdWUgPSAwO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IChkICogYmFzZSk7XG4gICAgICBiYXNlICo9IDYwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTtcblxuICB9XG5cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTApO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkpID09PSAnW29iamVjdCBOdW1iZXJdJyAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgPT09IDAgJiYgIWNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6aW50Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxJbnRlZ2VyLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxJbnRlZ2VyLFxuICBwcmVkaWNhdGU6IGlzSW50ZWdlcixcbiAgcmVwcmVzZW50OiB7XG4gICAgYmluYXJ5OiAgICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzBiJyArIG9iai50b1N0cmluZygyKSA6ICctMGInICsgb2JqLnRvU3RyaW5nKDIpLnNsaWNlKDEpOyB9LFxuICAgIG9jdGFsOiAgICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwJyAgKyBvYmoudG9TdHJpbmcoOCkgOiAnLTAnICArIG9iai50b1N0cmluZyg4KS5zbGljZSgxKTsgfSxcbiAgICBkZWNpbWFsOiAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqLnRvU3RyaW5nKDEwKTsgfSxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4gICAgaGV4YWRlY2ltYWw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSA6ICAnLTB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKTsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdkZWNpbWFsJyxcbiAgc3R5bGVBbGlhc2VzOiB7XG4gICAgYmluYXJ5OiAgICAgIFsgMiwgICdiaW4nIF0sXG4gICAgb2N0YWw6ICAgICAgIFsgOCwgICdvY3QnIF0sXG4gICAgZGVjaW1hbDogICAgIFsgMTAsICdkZWMnIF0sXG4gICAgaGV4YWRlY2ltYWw6IFsgMTYsICdoZXgnIF1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlc3ByaW1hO1xuXG4vLyBCcm93c2VyaWZpZWQgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIGVzcHJpbWFcbi8vXG4vLyAxLiBGb3Igbm9kZS5qcyBqdXN0IHJlcXVpcmUgbW9kdWxlIGFzIGRlcHNcbi8vIDIuIEZvciBicm93c2VyIHRyeSB0byByZXF1aXJlIG11ZHVsZSB2aWEgZXh0ZXJuYWwgQU1EIHN5c3RlbS5cbi8vICAgIElmIG5vdCBmb3VuZCAtIHRyeSB0byBmYWxsYmFjayB0byB3aW5kb3cuZXNwcmltYS4gSWYgbm90XG4vLyAgICBmb3VuZCB0b28gLSB0aGVuIGZhaWwgdG8gcGFyc2UuXG4vL1xudHJ5IHtcbiAgLy8gd29ya2Fyb3VuZCB0byBleGNsdWRlIHBhY2thZ2UgZnJvbSBicm93c2VyaWZ5IGxpc3QuXG4gIHZhciBfcmVxdWlyZSA9IHJlcXVpcmU7XG4gIGVzcHJpbWEgPSBfcmVxdWlyZSgnZXNwcmltYScpO1xufSBjYXRjaCAoXykge1xuICAvKmdsb2JhbCB3aW5kb3cgKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSBlc3ByaW1hID0gd2luZG93LmVzcHJpbWE7XG59XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB0cnkge1xuICAgIHZhciBzb3VyY2UgPSAnKCcgKyBkYXRhICsgJyknLFxuICAgICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KTtcblxuICAgIGlmIChhc3QudHlwZSAgICAgICAgICAgICAgICAgICAgIT09ICdQcm9ncmFtJyAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keS5sZW5ndGggICAgICAgICAgICAgIT09IDEgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgICAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nICYmXG4gICAgICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7XG4gIC8qanNsaW50IGV2aWw6dHJ1ZSovXG5cbiAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsXG4gICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KSxcbiAgICAgIHBhcmFtcyA9IFtdLFxuICAgICAgYm9keTtcblxuICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHxcbiAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyAmJlxuICAgICAgICBhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24ucGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgcGFyYW1zLnB1c2gocGFyYW0ubmFtZSk7XG4gIH0pO1xuXG4gIGJvZHkgPSBhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkucmFuZ2U7XG5cbiAgLy8gRXNwcmltYSdzIHJhbmdlcyBpbmNsdWRlIHRoZSBmaXJzdCAneycgYW5kIHRoZSBsYXN0ICd9JyBjaGFyYWN0ZXJzIG9uXG4gIC8vIGZ1bmN0aW9uIGV4cHJlc3Npb25zLiBTbyBjdXQgdGhlbSBvdXQuXG4gIGlmIChhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50Jykge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb24ocGFyYW1zLCBzb3VyY2Uuc2xpY2UoYm9keVswXSArIDEsIGJvZHlbMV0gLSAxKSk7XG4gIH1cbiAgLy8gRVM2IGFycm93IGZ1bmN0aW9ucyBjYW4gb21pdCB0aGUgQmxvY2tTdGF0ZW1lbnQuIEluIHRoYXQgY2FzZSwganVzdCByZXR1cm5cbiAgLy8gdGhlIGJvZHkuXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgJ3JldHVybiAnICsgc291cmNlLnNsaWNlKGJvZHlbMF0sIGJvZHlbMV0pKTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdEZ1bmN0aW9uKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvZnVuY3Rpb24nLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbixcbiAgcHJlZGljYXRlOiBpc0Z1bmN0aW9uLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvblxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdFJlZ0V4cChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciByZWdleHAgPSBkYXRhLFxuICAgICAgdGFpbCAgID0gL1xcLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSxcbiAgICAgIG1vZGlmaWVycyA9ICcnO1xuXG4gIC8vIGlmIHJlZ2V4cCBzdGFydHMgd2l0aCAnLycgaXQgY2FuIGhhdmUgbW9kaWZpZXJzIGFuZCBtdXN0IGJlIHByb3Blcmx5IGNsb3NlZFxuICAvLyBgL2Zvby9naW1gIC0gbW9kaWZpZXJzIHRhaWwgY2FuIGJlIG1heGltdW0gMyBjaGFyc1xuICBpZiAocmVnZXhwWzBdID09PSAnLycpIHtcbiAgICBpZiAodGFpbCkgbW9kaWZpZXJzID0gdGFpbFsxXTtcblxuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoID4gMykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGlmIGV4cHJlc3Npb24gc3RhcnRzIHdpdGggLywgaXMgc2hvdWxkIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWRcbiAgICBpZiAocmVnZXhwW3JlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMV0gIT09ICcvJykgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAoZGF0YSkge1xuICB2YXIgcmVnZXhwID0gZGF0YSxcbiAgICAgIHRhaWwgICA9IC9cXC8oW2dpbV0qKSQvLmV4ZWMoZGF0YSksXG4gICAgICBtb2RpZmllcnMgPSAnJztcblxuICAvLyBgL2Zvby9naW1gIC0gdGFpbCBjYW4gYmUgbWF4aW11bSA0IGNoYXJzXG4gIGlmIChyZWdleHBbMF0gPT09ICcvJykge1xuICAgIGlmICh0YWlsKSBtb2RpZmllcnMgPSB0YWlsWzFdO1xuICAgIHJlZ2V4cCA9IHJlZ2V4cC5zbGljZSgxLCByZWdleHAubGVuZ3RoIC0gbW9kaWZpZXJzLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXhwLCBtb2RpZmllcnMpO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0UmVnRXhwKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICB2YXIgcmVzdWx0ID0gJy8nICsgb2JqZWN0LnNvdXJjZSArICcvJztcblxuICBpZiAob2JqZWN0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKG9iamVjdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmIChvYmplY3QuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cChvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvcmVnZXhwJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZUphdmFzY3JpcHRSZWdFeHAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0SmF2YXNjcmlwdFJlZ0V4cCxcbiAgcHJlZGljYXRlOiBpc1JlZ0V4cCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRKYXZhc2NyaXB0UmVnRXhwXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL3VuZGVmaW5lZCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQsXG4gIHByZWRpY2F0ZTogaXNVbmRlZmluZWQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE1lcmdlKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgPT09ICc8PCcgfHwgZGF0YSA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE1lcmdlXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sTnVsbChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGg7XG5cbiAgcmV0dXJuIChtYXggPT09IDEgJiYgZGF0YSA9PT0gJ34nKSB8fFxuICAgICAgICAgKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICdOdWxsJyB8fCBkYXRhID09PSAnTlVMTCcpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpc051bGwob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm51bGwnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE51bGwsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE51bGwsXG4gIHByZWRpY2F0ZTogaXNOdWxsLFxuICByZXByZXNlbnQ6IHtcbiAgICBjYW5vbmljYWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICd+JzsgICAgfSxcbiAgICBsb3dlcmNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdudWxsJzsgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdOVUxMJzsgfSxcbiAgICBjYW1lbGNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdOdWxsJzsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sT21hcChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgb2JqZWN0S2V5cyA9IFtdLCBpbmRleCwgbGVuZ3RoLCBwYWlyLCBwYWlyS2V5LCBwYWlySGFzS2V5LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcbiAgICBwYWlySGFzS2V5ID0gZmFsc2U7XG5cbiAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHBhaXJLZXkgaW4gcGFpcikge1xuICAgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhaXIsIHBhaXJLZXkpKSB7XG4gICAgICAgIGlmICghcGFpckhhc0tleSkgcGFpckhhc0tleSA9IHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGFpckhhc0tleSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iamVjdEtleXMuaW5kZXhPZihwYWlyS2V5KSA9PT0gLTEpIG9iamVjdEtleXMucHVzaChwYWlyS2V5KTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sT21hcChkYXRhKSB7XG4gIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE9tYXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE9tYXBcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAgaWYgKF90b1N0cmluZy5jYWxsKHBhaXIpICE9PSAnW29iamVjdCBPYmplY3RdJykgcmV0dXJuIGZhbHNlO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuXG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFBhaXJzKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBbXTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxQYWlycyxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sUGFpcnNcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2VxJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdOyB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIga2V5LCBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoa2V5IGluIG9iamVjdCkge1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgIGlmIChvYmplY3Rba2V5XSAhPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sU2V0KGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNldCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogJyc7IH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIFlBTUxfREFURV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICAnXihbMC05XVswLTldWzAtOV1bMC05XSknICAgICAgICAgICsgLy8gWzFdIHllYXJcbiAgJy0oWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFsyXSBtb250aFxuICAnLShbMC05XVswLTldKSQnKTsgICAgICAgICAgICAgICAgICAgLy8gWzNdIGRheVxuXG52YXIgWUFNTF9USU1FU1RBTVBfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICArIC8vIFszXSBkYXlcbiAgJyg/OltUdF18WyBcXFxcdF0rKScgICAgICAgICAgICAgICAgICsgLy8gLi4uXG4gICcoWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNF0gaG91clxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzVdIG1pbnV0ZVxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzZdIHNlY29uZFxuICAnKD86XFxcXC4oWzAtOV0qKSk/JyAgICAgICAgICAgICAgICAgKyAvLyBbN10gZnJhY3Rpb25cbiAgJyg/OlsgXFxcXHRdKihafChbLStdKShbMC05XVswLTldPyknICsgLy8gWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91clxuICAnKD86OihbMC05XVswLTldKSk/KSk/JCcpOyAgICAgICAgICAgLy8gWzExXSB0el9taW51dGVcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgdmFyIG1hdGNoLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24gPSAwLFxuICAgICAgZGVsdGEgPSBudWxsLCB0el9ob3VyLCB0el9taW51dGUsIGRhdGU7XG5cbiAgbWF0Y2ggPSBZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgbWF0Y2ggPSBZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKTtcblxuICBpZiAobWF0Y2ggPT09IG51bGwpIHRocm93IG5ldyBFcnJvcignRGF0ZSByZXNvbHZlIGVycm9yJyk7XG5cbiAgLy8gbWF0Y2g6IFsxXSB5ZWFyIFsyXSBtb250aCBbM10gZGF5XG5cbiAgeWVhciA9ICsobWF0Y2hbMV0pO1xuICBtb250aCA9ICsobWF0Y2hbMl0pIC0gMTsgLy8gSlMgbW9udGggc3RhcnRzIHdpdGggMFxuICBkYXkgPSArKG1hdGNoWzNdKTtcblxuICBpZiAoIW1hdGNoWzRdKSB7IC8vIG5vIGhvdXJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSkpO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs0XSBob3VyIFs1XSBtaW51dGUgWzZdIHNlY29uZCBbN10gZnJhY3Rpb25cblxuICBob3VyID0gKyhtYXRjaFs0XSk7XG4gIG1pbnV0ZSA9ICsobWF0Y2hbNV0pO1xuICBzZWNvbmQgPSArKG1hdGNoWzZdKTtcblxuICBpZiAobWF0Y2hbN10pIHtcbiAgICBmcmFjdGlvbiA9IG1hdGNoWzddLnNsaWNlKDAsIDMpO1xuICAgIHdoaWxlIChmcmFjdGlvbi5sZW5ndGggPCAzKSB7IC8vIG1pbGxpLXNlY29uZHNcbiAgICAgIGZyYWN0aW9uICs9ICcwJztcbiAgICB9XG4gICAgZnJhY3Rpb24gPSArZnJhY3Rpb247XG4gIH1cblxuICAvLyBtYXRjaDogWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91ciBbMTFdIHR6X21pbnV0ZVxuXG4gIGlmIChtYXRjaFs5XSkge1xuICAgIHR6X2hvdXIgPSArKG1hdGNoWzEwXSk7XG4gICAgdHpfbWludXRlID0gKyhtYXRjaFsxMV0gfHwgMCk7XG4gICAgZGVsdGEgPSAodHpfaG91ciAqIDYwICsgdHpfbWludXRlKSAqIDYwMDAwOyAvLyBkZWx0YSBpbiBtaWxpLXNlY29uZHNcbiAgICBpZiAobWF0Y2hbOV0gPT09ICctJykgZGVsdGEgPSAtZGVsdGE7XG4gIH1cblxuICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uKSk7XG5cbiAgaWYgKGRlbHRhKSBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgLSBkZWx0YSk7XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxUaW1lc3RhbXAob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHJldHVybiBvYmplY3QudG9JU09TdHJpbmcoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxUaW1lc3RhbXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFRpbWVzdGFtcCxcbiAgaW5zdGFuY2VPZjogRGF0ZSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sVGltZXN0YW1wXG59KTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgSmVyZW15IFdoaXRsb2NrXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG52YXIgZ2wgPSByZXF1aXJlKCdncmFwaGxpYicpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgUGF0aExvYWRlciA9IHJlcXVpcmUoJ3BhdGgtbG9hZGVyJyk7XG52YXIgcXMgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xudmFyIHNsYXNoID0gcmVxdWlyZSgnc2xhc2gnKTtcbnZhciBVUkkgPSByZXF1aXJlKCd1cmktanMnKTtcblxudmFyIGJhZFB0clRva2VuUmVnZXggPSAvfig/OlteMDFdfCQpL2c7XG52YXIgcmVtb3RlQ2FjaGUgPSB7fTtcbnZhciByZW1vdGVUeXBlcyA9IFsncmVsYXRpdmUnLCAncmVtb3RlJ107XG52YXIgcmVtb3RlVXJpVHlwZXMgPSBbJ2Fic29sdXRlJywgJ3VyaSddO1xudmFyIHVyaURldGFpbHNDYWNoZSA9IHt9O1xuXG4vLyBMb2FkIHByb21pc2VzIHBvbHlmaWxsIGlmIG5lY2Vzc2FyeVxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gIHJlcXVpcmUoJ25hdGl2ZS1wcm9taXNlLW9ubHknKTtcbn1cblxuLyogSW50ZXJuYWwgRnVuY3Rpb25zICovXG5cbmZ1bmN0aW9uIGNvbWJpbmVRdWVyeVBhcmFtcyAocXMxLCBxczIpIHtcbiAgdmFyIGNvbWJpbmVkID0ge307XG5cbiAgZnVuY3Rpb24gbWVyZ2VRdWVyeVBhcmFtcyAob2JqKSB7XG4gICAgXy5mb3JPd24ob2JqLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgIGNvbWJpbmVkW2tleV0gPSB2YWw7XG4gICAgfSk7XG4gIH1cblxuICBtZXJnZVF1ZXJ5UGFyYW1zKHFzLnBhcnNlKHFzMSB8fCAnJykpO1xuICBtZXJnZVF1ZXJ5UGFyYW1zKHFzLnBhcnNlKHFzMiB8fCAnJykpO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhjb21iaW5lZCkubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcXMuc3RyaW5naWZ5KGNvbWJpbmVkKTtcbn1cblxuZnVuY3Rpb24gY29tYmluZVVSSXMgKHUxLCB1Mikge1xuICAvLyBDb252ZXJ0IFdpbmRvd3MgcGF0aHNcbiAgaWYgKF8uaXNTdHJpbmcodTEpKSB7XG4gICAgdTEgPSBzbGFzaCh1MSk7XG4gIH1cblxuICBpZiAoXy5pc1N0cmluZyh1MikpIHtcbiAgICB1MiA9IHNsYXNoKHUyKTtcbiAgfVxuXG4gIHZhciB1MkRldGFpbHMgPSBwYXJzZVVSSShfLmlzVW5kZWZpbmVkKHUyKSA/ICcnIDogdTIpO1xuICB2YXIgdTFEZXRhaWxzO1xuICB2YXIgY29tYmluZWREZXRhaWxzO1xuXG4gIGlmIChyZW1vdGVVcmlUeXBlcy5pbmRleE9mKHUyRGV0YWlscy5yZWZlcmVuY2UpID4gLTEpIHtcbiAgICBjb21iaW5lZERldGFpbHMgPSB1MkRldGFpbHM7XG4gIH0gZWxzZSB7XG4gICAgdTFEZXRhaWxzID0gXy5pc1VuZGVmaW5lZCh1MSkgPyB1bmRlZmluZWQgOiBwYXJzZVVSSSh1MSk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodTFEZXRhaWxzKSkge1xuICAgICAgY29tYmluZWREZXRhaWxzID0gdTFEZXRhaWxzO1xuXG4gICAgICAvLyBKb2luIHRoZSBwYXRoc1xuICAgICAgY29tYmluZWREZXRhaWxzLnBhdGggPSBzbGFzaChwYXRoLmpvaW4odTFEZXRhaWxzLnBhdGgsIHUyRGV0YWlscy5wYXRoKSk7XG5cbiAgICAgIC8vIEpvaW4gcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgY29tYmluZWREZXRhaWxzLnF1ZXJ5ID0gY29tYmluZVF1ZXJ5UGFyYW1zKHUxRGV0YWlscy5xdWVyeSwgdTJEZXRhaWxzLnF1ZXJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYmluZWREZXRhaWxzID0gdTJEZXRhaWxzO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgZnJhZ21lbnRcbiAgY29tYmluZWREZXRhaWxzLmZyYWdtZW50ID0gdW5kZWZpbmVkO1xuXG4gIC8vIEZvciByZWxhdGl2ZSBVUklzLCBhZGQgYmFjayB0aGUgJy4uJyBzaW5jZSBpdCB3YXMgcmVtb3ZlZCBhYm92ZVxuICByZXR1cm4gKHJlbW90ZVVyaVR5cGVzLmluZGV4T2YoY29tYmluZWREZXRhaWxzLnJlZmVyZW5jZSkgPT09IC0xICYmXG4gICAgICAgICAgY29tYmluZWREZXRhaWxzLnBhdGguaW5kZXhPZignLi4vJykgPT09IDAgPyAnLi4vJyA6ICcnKSArIFVSSS5zZXJpYWxpemUoY29tYmluZWREZXRhaWxzKTtcbn1cblxuZnVuY3Rpb24gZmluZEFuY2VzdG9ycyAob2JqLCBwYXRoKSB7XG4gIHZhciBhbmNlc3RvcnMgPSBbXTtcbiAgdmFyIG5vZGU7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIG5vZGUgPSBvYmo7XG5cbiAgICBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoIC0gMSkuZm9yRWFjaChmdW5jdGlvbiAoc2VnKSB7XG4gICAgICBpZiAoc2VnIGluIG5vZGUpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVbc2VnXTtcblxuICAgICAgICBhbmNlc3RvcnMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhbmNlc3RvcnM7XG59XG5cbmZ1bmN0aW9uIGlzUmVtb3RlIChyZWZEZXRhaWxzKSB7XG4gIHJldHVybiByZW1vdGVUeXBlcy5pbmRleE9mKGdldFJlZlR5cGUocmVmRGV0YWlscykpID4gLTE7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWQgKHJlZkRldGFpbHMpIHtcbiAgcmV0dXJuIF8uaXNVbmRlZmluZWQocmVmRGV0YWlscy5lcnJvcikgJiYgcmVmRGV0YWlscy50eXBlICE9PSAnaW52YWxpZCc7XG59XG5cbmZ1bmN0aW9uIGZpbmRWYWx1ZSAob2JqLCBwYXRoKSB7XG4gIHZhciB2YWx1ZSA9IG9iajtcblxuICAvLyBVc2luZyB0aGlzIG1hbnVhbCBhcHByb2FjaCBpbnN0ZWFkIG9mIF8uZ2V0IHNpbmNlIHdlIGhhdmUgdG8gZGVjb2RlVVJJIHRoZSBzZWdtZW50c1xuICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgIGlmIChzZWcgaW4gdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWVbc2VnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoJ0pTT04gUG9pbnRlciBwb2ludHMgdG8gbWlzc2luZyBsb2NhdGlvbjogJyArIHBhdGhUb1B0cihwYXRoKSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhUmVmS2V5cyAocmVmKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhyZWYpLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleSAhPT0gJyRyZWYnO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVmVHlwZSAocmVmRGV0YWlscykge1xuICB2YXIgdHlwZTtcblxuICAvLyBDb252ZXJ0IHRoZSBVUkkgcmVmZXJlbmNlIHRvIG9uZSBvZiBvdXIgdHlwZXNcbiAgc3dpdGNoIChyZWZEZXRhaWxzLnVyaURldGFpbHMucmVmZXJlbmNlKSB7XG4gIGNhc2UgJ2Fic29sdXRlJzpcbiAgY2FzZSAndXJpJzpcbiAgICB0eXBlID0gJ3JlbW90ZSc7XG4gICAgYnJlYWs7XG4gIGNhc2UgJ3NhbWUtZG9jdW1lbnQnOlxuICAgIHR5cGUgPSAnbG9jYWwnO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHR5cGUgPSByZWZEZXRhaWxzLnVyaURldGFpbHMucmVmZXJlbmNlO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGdldFJlbW90ZURvY3VtZW50ICh1cmwsIG9wdGlvbnMpIHtcbiAgdmFyIGNhY2hlRW50cnkgPSByZW1vdGVDYWNoZVt1cmxdO1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdmFyIGxvYWRlck9wdGlvbnMgPSBfLmNsb25lRGVlcChvcHRpb25zLmxvYWRlck9wdGlvbnMgfHwge30pO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKGNhY2hlRW50cnkpKSB7XG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gY29udGVudCBwcm9jZXNzb3IsIGRlZmF1bHQgdG8gcHJvY2Vzc2luZyB0aGUgcmF3IHJlc3BvbnNlIGFzIEpTT05cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChsb2FkZXJPcHRpb25zLnByb2Nlc3NDb250ZW50KSkge1xuICAgICAgbG9hZGVyT3B0aW9ucy5wcm9jZXNzQ29udGVudCA9IGZ1bmN0aW9uIChyZXMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgSlNPTi5wYXJzZShyZXMudGV4dCkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBdHRlbXB0IHRvIGxvYWQgdGhlIHJlc291cmNlIHVzaW5nIHBhdGgtbG9hZGVyXG4gICAgYWxsVGFza3MgPSBQYXRoTG9hZGVyLmxvYWQoZGVjb2RlVVJJKHVybCksIGxvYWRlck9wdGlvbnMpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjYWNoZVxuICAgIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgcmVtb3RlQ2FjaGVbdXJsXSA9IHtcbiAgICAgICAgICB2YWx1ZTogcmVzXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZW1vdGVDYWNoZVt1cmxdID0ge1xuICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgfTtcblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCB2ZXJzaW9uXG4gICAgYWxsVGFza3MgPSBhbGxUYXNrcy50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfLmlzRXJyb3IoY2FjaGVFbnRyeS5lcnJvcikpIHtcbiAgICAgICAgdGhyb3cgY2FjaGVFbnRyeS5lcnJvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjYWNoZUVudHJ5LnZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmV0dXJuIGEgY2xvbmVkIHZlcnNpb24gdG8gYXZvaWQgdXBkYXRpbmcgdGhlIGNhY2hlXG4gIGFsbFRhc2tzID0gYWxsVGFza3MudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgcmV0dXJuIF8uY2xvbmVEZWVwKHJlcyk7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn1cblxuZnVuY3Rpb24gaXNSZWZMaWtlIChvYmosIHRocm93V2l0aERldGFpbHMpIHtcbiAgdmFyIHJlZkxpa2UgPSB0cnVlO1xuXG4gIHRyeSB7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3Qob2JqKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvYmogaXMgbm90IGFuIE9iamVjdCcpO1xuICAgIH0gZWxzZSBpZiAoIV8uaXNTdHJpbmcob2JqLiRyZWYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29iai4kcmVmIGlzIG5vdCBhIFN0cmluZycpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHRocm93V2l0aERldGFpbHMpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICByZWZMaWtlID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcmVmTGlrZTtcbn1cblxuZnVuY3Rpb24gbWFrZUFic29sdXRlIChsb2NhdGlvbikge1xuICBpZiAobG9jYXRpb24uaW5kZXhPZignOi8vJykgPT09IC0xICYmICFwYXRoLmlzQWJzb2x1dGUobG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VSZWZGaWx0ZXIgKG9wdGlvbnMpIHtcbiAgdmFyIHJlZkZpbHRlcjtcbiAgdmFyIHZhbGlkVHlwZXM7XG5cbiAgaWYgKF8uaXNBcnJheShvcHRpb25zLmZpbHRlcikgfHwgXy5pc1N0cmluZyhvcHRpb25zLmZpbHRlcikpIHtcbiAgICB2YWxpZFR5cGVzID0gXy5pc1N0cmluZyhvcHRpb25zLmZpbHRlcikgPyBbb3B0aW9ucy5maWx0ZXJdIDogb3B0aW9ucy5maWx0ZXI7XG4gICAgcmVmRmlsdGVyID0gZnVuY3Rpb24gKHJlZkRldGFpbHMpIHtcbiAgICAgIC8vIENoZWNrIHRoZSBleGFjdCB0eXBlIG9yIGZvciBpbnZhbGlkIFVSSXMsIGNoZWNrIGl0cyBvcmlnaW5hbCB0eXBlXG4gICAgICByZXR1cm4gdmFsaWRUeXBlcy5pbmRleE9mKHJlZkRldGFpbHMudHlwZSkgPiAtMSB8fCB2YWxpZFR5cGVzLmluZGV4T2YoZ2V0UmVmVHlwZShyZWZEZXRhaWxzKSkgPiAtMTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKF8uaXNGdW5jdGlvbihvcHRpb25zLmZpbHRlcikpIHtcbiAgICByZWZGaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuZmlsdGVyKSkge1xuICAgIHJlZkZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHJlZkRldGFpbHMsIHBhdGgpIHtcbiAgICByZXR1cm4gKHJlZkRldGFpbHMudHlwZSAhPT0gJ2ludmFsaWQnIHx8IG9wdGlvbnMuaW5jbHVkZUludmFsaWQgPT09IHRydWUpICYmIHJlZkZpbHRlcihyZWZEZXRhaWxzLCBwYXRoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFrZVN1YkRvY1BhdGggKG9wdGlvbnMpIHtcbiAgdmFyIHN1YkRvY1BhdGg7XG5cbiAgaWYgKF8uaXNBcnJheShvcHRpb25zLnN1YkRvY1BhdGgpKSB7XG4gICAgc3ViRG9jUGF0aCA9IG9wdGlvbnMuc3ViRG9jUGF0aDtcbiAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKG9wdGlvbnMuc3ViRG9jUGF0aCkpIHtcbiAgICBzdWJEb2NQYXRoID0gcGF0aEZyb21QdHIob3B0aW9ucy5zdWJEb2NQYXRoKTtcbiAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuc3ViRG9jUGF0aCkpIHtcbiAgICBzdWJEb2NQYXRoID0gW107XG4gIH1cblxuICByZXR1cm4gc3ViRG9jUGF0aDtcbn1cblxuZnVuY3Rpb24gbWFya01pc3NpbmcgKHJlZkRldGFpbHMsIGVycikge1xuICByZWZEZXRhaWxzLmVycm9yID0gZXJyLm1lc3NhZ2U7XG4gIHJlZkRldGFpbHMubWlzc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVVJJICh1cmkpIHtcbiAgLy8gV2UgZGVjb2RlIGZpcnN0IHRvIGF2b2lkIGRvdWJseSBlbmNvZGluZ1xuICByZXR1cm4gVVJJLnBhcnNlKHVyaSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkUmVmTW9kZWwgKGRvY3VtZW50LCBvcHRpb25zLCBtZXRhZGF0YSkge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdmFyIHN1YkRvY1B0ciA9IHBhdGhUb1B0cihvcHRpb25zLnN1YkRvY1BhdGgpO1xuICB2YXIgYWJzTG9jYXRpb24gPSBtYWtlQWJzb2x1dGUob3B0aW9ucy5sb2NhdGlvbik7XG4gIHZhciByZWxhdGl2ZUJhc2UgPSBwYXRoLmRpcm5hbWUob3B0aW9ucy5sb2NhdGlvbik7XG4gIHZhciBkb2NEZXBLZXkgPSBhYnNMb2NhdGlvbiArIHN1YkRvY1B0cjtcbiAgdmFyIHJlZnM7XG4gIHZhciByT3B0aW9ucztcblxuICAvLyBTdG9yZSB0aGUgZG9jdW1lbnQgaW4gdGhlIG1ldGFkYXRhIGlmIG5lY2Vzc2FyeVxuICBpZiAoXy5pc1VuZGVmaW5lZChtZXRhZGF0YS5kb2NzW2Fic0xvY2F0aW9uXSkpIHtcbiAgICBtZXRhZGF0YS5kb2NzW2Fic0xvY2F0aW9uXSA9IGRvY3VtZW50O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG5vIGRlcGVuZGVuY2llcyBzdG9yZWQgZm9yIHRoZSBsb2NhdGlvbitzdWJEb2NQYXRoLCB3ZSd2ZSBuZXZlciBzZWVuIGl0IGJlZm9yZSBhbmQgd2lsbCBwcm9jZXNzIGl0XG4gIGlmIChfLmlzVW5kZWZpbmVkKG1ldGFkYXRhLmRlcHNbZG9jRGVwS2V5XSkpIHtcbiAgICBtZXRhZGF0YS5kZXBzW2RvY0RlcEtleV0gPSB7fTtcblxuICAgIC8vIEZpbmQgdGhlIHJlZmVyZW5jZXMgYmFzZWQgb24gdGhlIG9wdGlvbnNcbiAgICByZWZzID0gZmluZFJlZnMoZG9jdW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSByZWZlcmVuY2VzIGFuZCBwcm9jZXNzXG4gICAgXy5mb3JPd24ocmVmcywgZnVuY3Rpb24gKHJlZkRldGFpbHMsIHJlZlB0cikge1xuICAgICAgdmFyIHJlZktleSA9IG1ha2VBYnNvbHV0ZShvcHRpb25zLmxvY2F0aW9uKSArIHJlZlB0cjtcbiAgICAgIHZhciByZWZkS2V5ID0gcmVmRGV0YWlscy5yZWZkSWQgPSBkZWNvZGVVUkkobWFrZUFic29sdXRlKGlzUmVtb3RlKHJlZkRldGFpbHMpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lVVJJcyhyZWxhdGl2ZUJhc2UsIHJlZkRldGFpbHMudXJpKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2NhdGlvbikgKyAnIycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZkRldGFpbHMudXJpLmluZGV4T2YoJyMnKSA+IC0xID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkRldGFpbHMudXJpLnNwbGl0KCcjJylbMV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpKTtcblxuICAgICAgLy8gUmVjb3JkIHJlZmVyZW5jZSBtZXRhZGF0YVxuICAgICAgbWV0YWRhdGEucmVmc1tyZWZLZXldID0gcmVmRGV0YWlscztcblxuICAgICAgLy8gRG8gbm90IHByb2Nlc3MgaW52YWxpZCByZWZlcmVuY2VzXG4gICAgICBpZiAoIWlzVmFsaWQocmVmRGV0YWlscykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWNvcmQgdGhlIGZ1bGx5LXF1YWxpZmllZCBVUklcbiAgICAgIHJlZkRldGFpbHMuZnFVUkkgPSByZWZkS2V5O1xuXG4gICAgICAvLyBSZWNvcmQgZGVwZW5kZW5jeSAocmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3Mgc3ViLWRvY3VtZW50IHBhdGgpXG4gICAgICBtZXRhZGF0YS5kZXBzW2RvY0RlcEtleV1bcmVmUHRyID09PSBzdWJEb2NQdHIgPyAnIycgOiByZWZQdHIucmVwbGFjZShzdWJEb2NQdHIgKyAnLycsICcjLycpXSA9IHJlZmRLZXk7XG5cbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIGRpcmVjdGx5LWNpcmN1bGFyIHJlZmVyZW5jZXMgKHRvIGFuIGFuY2VzdG9yIG9yIHNlbGYpXG4gICAgICBpZiAocmVmS2V5LmluZGV4T2YocmVmZEtleSArICcvJykgPT09IDApIHtcbiAgICAgICAgcmVmRGV0YWlscy5jaXJjdWxhciA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIHRoZSBvcHRpb25zIGZvciBzdWJzZXF1ZW50IHByb2Nlc3NEb2N1bWVudCBjYWxsc1xuICAgICAgck9wdGlvbnMgPSBfLmNsb25lRGVlcChvcHRpb25zKTtcblxuICAgICAgck9wdGlvbnMuc3ViRG9jUGF0aCA9IF8uaXNVbmRlZmluZWQocmVmRGV0YWlscy51cmlEZXRhaWxzLmZyYWdtZW50KSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tUHRyKGRlY29kZVVSSShyZWZEZXRhaWxzLnVyaURldGFpbHMuZnJhZ21lbnQpKTtcblxuICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmZXJlbmNlXG4gICAgICBpZiAoaXNSZW1vdGUocmVmRGV0YWlscykpIHtcbiAgICAgICAgLy8gRGVsZXRlIGZpbHRlci5vcHRpb25zIGJlY2F1c2UgYWxsIHJlbW90ZSByZWZlcmVuY2VzIHNob3VsZCBiZSBmdWxseSByZXNvbHZlZFxuICAgICAgICBkZWxldGUgck9wdGlvbnMuZmlsdGVyO1xuICAgICAgICAvLyBUaGUgbmV3IGxvY2F0aW9uIGJlaW5nIHJlZmVyZW5jZWRcbiAgICAgICAgck9wdGlvbnMubG9jYXRpb24gPSByZWZkS2V5LnNwbGl0KCcjJylbMF07XG5cbiAgICAgICAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChuTWV0YWRhdGEsIG5PcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB2YXIgckFic0xvY2F0aW9uID0gbWFrZUFic29sdXRlKG5PcHRpb25zLmxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgdmFyIHJEb2MgPSBuTWV0YWRhdGEuZG9jc1tyQWJzTG9jYXRpb25dO1xuXG4gICAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJEb2MpKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBubyBjYWNoZSBzbyB3ZSBtdXN0IHJldHJpZXZlIHRoZSBkb2N1bWVudFxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRSZW1vdGVEb2N1bWVudChyQWJzTG9jYXRpb24sIG5PcHRpb25zKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHJlc3BvbnNlIGluIHRoZSBkb2N1bWVudCBjYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBuTWV0YWRhdGEuZG9jc1tyQWJzTG9jYXRpb25dID0gZXJyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3IgdG8gYWxsb3cgdGhlIHN1YnNlcXVlbnQgYHRoZW5gIHRvIGhhbmRsZSBib3RoIGVycm9ycyBhbmQgc3VjY2Vzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgcmV0cmlldmVkIChvciBhdHRlbXB0ZWQgdG8pIHRoZSBkb2N1bWVudCBhbmQgc2hvdWxkIHVzZSB0aGUgY2FjaGVkIHZlcnNpb24gaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gbWV0YWRhdGEgc2luY2UgaXQgY291bGQgYWxyZWFkeSBiZSBwcm9jZXNzZWQgc29tZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJEb2M7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KG1ldGFkYXRhLCByT3B0aW9ucykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgcmVtb3RlIGRvY3VtZW50IG9yIHRoZSByZWZlcmVuY2VkIHBvcnRpb24gb2YgdGhlIGxvY2FsIGRvY3VtZW50XG4gICAgICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChuTWV0YWRhdGEsIG5PcHRpb25zLCBuUmVmRGV0YWlscykge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZG9jKSB7XG4gICAgICAgICAgICBpZiAoXy5pc0Vycm9yKGRvYykpIHtcbiAgICAgICAgICAgICAgbWFya01pc3NpbmcoblJlZkRldGFpbHMsIGRvYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBXcmFwcGVkIGluIGEgdHJ5L2NhdGNoIHNpbmNlIGZpbmRSZWZzIHRocm93c1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWlsZFJlZk1vZGVsKGRvYywgbk9wdGlvbnMsIG5NZXRhZGF0YSlcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmtNaXNzaW5nKG5SZWZEZXRhaWxzLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIG1hcmtNaXNzaW5nKG5SZWZEZXRhaWxzLCBlcnIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfShtZXRhZGF0YSwgck9wdGlvbnMsIHJlZkRldGFpbHMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhbGxUYXNrcztcbn1cblxuZnVuY3Rpb24gc2V0VmFsdWUgKG9iaiwgcmVmUGF0aCwgdmFsdWUpIHtcbiAgZmluZFZhbHVlKG9iaiwgcmVmUGF0aC5zbGljZSgwLCByZWZQYXRoLmxlbmd0aCAtIDEpKVtyZWZQYXRoW3JlZlBhdGgubGVuZ3RoIC0gMV1dID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHdhbGsgKGFuY2VzdG9ycywgbm9kZSwgcGF0aCwgZm4pIHtcbiAgdmFyIHByb2Nlc3NDaGlsZHJlbiA9IHRydWU7XG5cbiAgZnVuY3Rpb24gd2Fsa0l0ZW0gKGl0ZW0sIHNlZ21lbnQpIHtcbiAgICBwYXRoLnB1c2goc2VnbWVudCk7XG4gICAgd2FsayhhbmNlc3RvcnMsIGl0ZW0sIHBhdGgsIGZuKTtcbiAgICBwYXRoLnBvcCgpO1xuICB9XG5cbiAgLy8gQ2FsbCB0aGUgaXRlcmF0ZWVcbiAgaWYgKF8uaXNGdW5jdGlvbihmbikpIHtcbiAgICBwcm9jZXNzQ2hpbGRyZW4gPSBmbihhbmNlc3RvcnMsIG5vZGUsIHBhdGgpO1xuICB9XG5cbiAgLy8gV2UgZG8gbm90IHByb2Nlc3MgY2lyY3VsYXIgb2JqZWN0cyBhZ2FpblxuICBpZiAoYW5jZXN0b3JzLmluZGV4T2Yobm9kZSkgPT09IC0xKSB7XG4gICAgYW5jZXN0b3JzLnB1c2gobm9kZSk7XG5cbiAgICBpZiAocHJvY2Vzc0NoaWxkcmVuICE9PSBmYWxzZSkge1xuICAgICAgaWYgKF8uaXNBcnJheShub2RlKSkge1xuICAgICAgICBub2RlLmZvckVhY2goZnVuY3Rpb24gKG1lbWJlciwgaW5kZXgpIHtcbiAgICAgICAgICB3YWxrSXRlbShtZW1iZXIsIGluZGV4LnRvU3RyaW5nKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc09iamVjdChub2RlKSkge1xuICAgICAgICBfLmZvck93bihub2RlLCBmdW5jdGlvbiAoY05vZGUsIGtleSkge1xuICAgICAgICAgIHdhbGtJdGVtKGNOb2RlLCBrZXkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhbmNlc3RvcnMucG9wKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVPcHRpb25zIChvcHRpb25zLCBvYmopIHtcbiAgdmFyIGxvY2F0aW9uUGFydHM7XG4gIHZhciBzaG91bGREZWNvZGU7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAvLyBEZWZhdWx0IHRvIGFuIGVtcHR5IG9wdGlvbnMgb2JqZWN0XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9IGVsc2Uge1xuICAgIC8vIENsb25lIHRoZSBvcHRpb25zIHNvIHdlIGRvIG5vdCBhbHRlciB0aGUgb25lcyBwYXNzZWQgaW5cbiAgICBvcHRpb25zID0gXy5jbG9uZURlZXAob3B0aW9ucyk7XG4gIH1cblxuICBpZiAoIV8uaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gT2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5yZXNvbHZlQ2lyY3VsYXJzKSAmJlxuICAgICAgICAgICAgICFfLmlzQm9vbGVhbihvcHRpb25zLnJlc29sdmVDaXJjdWxhcnMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5yZXNvbHZlQ2lyY3VsYXJzIG11c3QgYmUgYSBCb29sZWFuJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5maWx0ZXIpICYmXG4gICAgICAgICAgICAgIV8uaXNBcnJheShvcHRpb25zLmZpbHRlcikgJiZcbiAgICAgICAgICAgICAhXy5pc0Z1bmN0aW9uKG9wdGlvbnMuZmlsdGVyKSAmJlxuICAgICAgICAgICAgICFfLmlzU3RyaW5nKG9wdGlvbnMuZmlsdGVyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuZmlsdGVyIG11c3QgYmUgYW4gQXJyYXksIGEgRnVuY3Rpb24gb2YgYSBTdHJpbmcnKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmluY2x1ZGVJbnZhbGlkKSAmJlxuICAgICAgICAgICAgICFfLmlzQm9vbGVhbihvcHRpb25zLmluY2x1ZGVJbnZhbGlkKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuaW5jbHVkZUludmFsaWQgbXVzdCBiZSBhIEJvb2xlYW4nKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmxvY2F0aW9uKSAmJlxuICAgICAgICAgICAgICFfLmlzU3RyaW5nKG9wdGlvbnMubG9jYXRpb24pKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5sb2NhdGlvbiBtdXN0IGJlIGEgU3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5yZWZQcmVQcm9jZXNzb3IpICYmXG4gICAgICAgICAgICAgIV8uaXNGdW5jdGlvbihvcHRpb25zLnJlZlByZVByb2Nlc3NvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLnJlZlByZVByb2Nlc3NvciBtdXN0IGJlIGEgRnVuY3Rpb24nKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLnJlZlBvc3RQcm9jZXNzb3IpICYmXG4gICAgICAgICAgICAgIV8uaXNGdW5jdGlvbihvcHRpb25zLnJlZlBvc3RQcm9jZXNzb3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5yZWZQb3N0UHJvY2Vzc29yIG11c3QgYmUgYSBGdW5jdGlvbicpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuc3ViRG9jUGF0aCkgJiZcbiAgICAgICAgICAgICAhXy5pc0FycmF5KG9wdGlvbnMuc3ViRG9jUGF0aCkgJiZcbiAgICAgICAgICAgICAhaXNQdHIob3B0aW9ucy5zdWJEb2NQYXRoKSkge1xuICAgIC8vIElmIGEgcG9pbnRlciBpcyBwcm92aWRlZCwgdGhyb3cgYW4gZXJyb3IgaWYgaXQncyBub3QgdGhlIHByb3BlciB0eXBlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5zdWJEb2NQYXRoIG11c3QgYmUgYW4gQXJyYXkgb2YgcGF0aCBzZWdtZW50cyBvciBhIHZhbGlkIEpTT04gUG9pbnRlcicpO1xuICB9XG5cbiAgLy8gRGVmYXVsdCB0byBmYWxzZSBmb3IgYWxsb3dpbmcgY2lyY3VsYXJzXG4gIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMucmVzb2x2ZUNpcmN1bGFycykpIHtcbiAgICBvcHRpb25zLnJlc29sdmVDaXJjdWxhcnMgPSBmYWxzZTtcbiAgfVxuXG4gIG9wdGlvbnMuZmlsdGVyID0gbWFrZVJlZkZpbHRlcihvcHRpb25zKTtcblxuICAvLyBvcHRpb25zLmxvY2F0aW9uIGlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCB5ZXQgYnV0IHdpbGwgYmUgd2hlbiBJc3N1ZSA4OCBpcyBjb21wbGV0ZVxuICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmxvY2F0aW9uKSkge1xuICAgIG9wdGlvbnMubG9jYXRpb24gPSBtYWtlQWJzb2x1dGUoJy4vcm9vdC5qc29uJyk7XG4gIH1cblxuICBsb2NhdGlvblBhcnRzID0gb3B0aW9ucy5sb2NhdGlvbi5zcGxpdCgnIycpO1xuXG4gIC8vIElmIG9wdGlvbnMubG9jYXRpb24gY29udGFpbnMgYSBmcmFnbWVudCwgdHVybiBpdCBpbnRvIGFuIG9wdGlvbnMuc3ViRG9jUGF0aFxuICBpZiAobG9jYXRpb25QYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgb3B0aW9ucy5zdWJEb2NQYXRoID0gJyMnICsgbG9jYXRpb25QYXJ0c1sxXTtcbiAgfVxuXG4gIHNob3VsZERlY29kZSA9IGRlY29kZVVSSShvcHRpb25zLmxvY2F0aW9uKSA9PT0gb3B0aW9ucy5sb2NhdGlvbjtcblxuICAvLyBKdXN0IHRvIGJlIHNhZmUsIHJlbW92ZSBhbnkgYWNjaWRlbnRhbCBmcmFnbWVudCBhcyBpdCB3b3VsZCBicmVhayB0aGluZ3NcbiAgb3B0aW9ucy5sb2NhdGlvbiA9IGNvbWJpbmVVUklzKG9wdGlvbnMubG9jYXRpb24sIHVuZGVmaW5lZCk7XG5cbiAgLy8gSWYgdGhlIGxvY2F0aW9uIHdhcyBub3QgZW5jb2RlZCwgbWVrZSBzdXJlIGl0J3Mgbm90IHdoZW4gd2UgZ2V0IGl0IGJhY2sgKElzc3VlICMxMzgpXG4gIGlmIChzaG91bGREZWNvZGUpIHtcbiAgICBvcHRpb25zLmxvY2F0aW9uID0gZGVjb2RlVVJJKG9wdGlvbnMubG9jYXRpb24pO1xuICB9XG5cbiAgLy8gU2V0IHRoZSBzdWJEb2NQYXRoIHRvIGF2b2lkIGV2ZXJ5b25lIGVsc2UgaGF2aW5nIHRvIGNvbXB1dGUgaXRcbiAgb3B0aW9ucy5zdWJEb2NQYXRoID0gbWFrZVN1YkRvY1BhdGgob3B0aW9ucyk7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG9iaikpIHtcbiAgICB0cnkge1xuICAgICAgZmluZFZhbHVlKG9iaiwgb3B0aW9ucy5zdWJEb2NQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gZXJyLm1lc3NhZ2UucmVwbGFjZSgnSlNPTiBQb2ludGVyJywgJ29wdGlvbnMuc3ViRG9jUGF0aCcpO1xuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVBhdGggKHBhdGgpIHtcbiAgaWYgKCFfLmlzQXJyYXkocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXRoIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIHJldHVybiBwYXRoLm1hcChmdW5jdGlvbiAoc2VnKSB7XG4gICAgaWYgKCFfLmlzU3RyaW5nKHNlZykpIHtcbiAgICAgIHNlZyA9IEpTT04uc3RyaW5naWZ5KHNlZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlZy5yZXBsYWNlKC9+MS9nLCAnLycpLnJlcGxhY2UoL34wL2csICd+Jyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVQYXRoIChwYXRoKSB7XG4gIGlmICghXy5pc0FycmF5KHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGF0aCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICByZXR1cm4gcGF0aC5tYXAoZnVuY3Rpb24gKHNlZykge1xuICAgIGlmICghXy5pc1N0cmluZyhzZWcpKSB7XG4gICAgICBzZWcgPSBKU09OLnN0cmluZ2lmeShzZWcpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWcucmVwbGFjZSgvfi9nLCAnfjAnKS5yZXBsYWNlKC9cXC8vZywgJ34xJyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVmcyAob2JqLCBvcHRpb25zKSB7XG4gIHZhciByZWZzID0ge307XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIGRvY3VtZW50XG4gIGlmICghXy5pc0FycmF5KG9iaikgJiYgIV8uaXNPYmplY3Qob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29iaiBtdXN0IGJlIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgb3B0aW9uc1xuICBvcHRpb25zID0gdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMsIG9iaik7XG5cbiAgLy8gV2FsayB0aGUgZG9jdW1lbnQgKG9yIHN1YiBkb2N1bWVudCkgYW5kIGZpbmQgYWxsIEpTT04gUmVmZXJlbmNlc1xuICB3YWxrKGZpbmRBbmNlc3RvcnMob2JqLCBvcHRpb25zLnN1YkRvY1BhdGgpLFxuICAgICAgIGZpbmRWYWx1ZShvYmosIG9wdGlvbnMuc3ViRG9jUGF0aCksXG4gICAgICAgXy5jbG9uZURlZXAob3B0aW9ucy5zdWJEb2NQYXRoKSxcbiAgICAgICBmdW5jdGlvbiAoYW5jZXN0b3JzLCBub2RlLCBwYXRoKSB7XG4gICAgICAgICB2YXIgcHJvY2Vzc0NoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgIHZhciByZWZEZXRhaWxzO1xuICAgICAgICAgdmFyIHJlZlB0cjtcblxuICAgICAgICAgaWYgKGlzUmVmTGlrZShub2RlKSkge1xuICAgICAgICAgICAvLyBQcmUtcHJvY2VzcyB0aGUgbm9kZSB3aGVuIG5lY2Vzc2FyeVxuICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucy5yZWZQcmVQcm9jZXNzb3IpKSB7XG4gICAgICAgICAgICAgbm9kZSA9IG9wdGlvbnMucmVmUHJlUHJvY2Vzc29yKF8uY2xvbmVEZWVwKG5vZGUpLCBwYXRoKTtcbiAgICAgICAgICAgfVxuXG4gICAgICAgICAgIHJlZkRldGFpbHMgPSBnZXRSZWZEZXRhaWxzKG5vZGUpO1xuXG4gICAgICAgICAgIC8vIFBvc3QtcHJvY2VzcyB0aGUgcmVmZXJlbmNlIGRldGFpbHNcbiAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMucmVmUG9zdFByb2Nlc3NvcikpIHtcbiAgICAgICAgICAgICByZWZEZXRhaWxzID0gb3B0aW9ucy5yZWZQb3N0UHJvY2Vzc29yKHJlZkRldGFpbHMsIHBhdGgpO1xuICAgICAgICAgICB9XG5cbiAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVyKHJlZkRldGFpbHMsIHBhdGgpKSB7XG4gICAgICAgICAgICAgcmVmUHRyID0gcGF0aFRvUHRyKHBhdGgpO1xuXG4gICAgICAgICAgICAgcmVmc1tyZWZQdHJdID0gcmVmRGV0YWlscztcbiAgICAgICAgICAgfVxuXG4gICAgICAgICAgIC8vIFdoZW5ldmVyIGEgSlNPTiBSZWZlcmVuY2UgaGFzIGV4dHJhIGNoaWxkcmVuLCBpdHMgY2hpbGRyZW4gc2hvdWxkIG5vdCBiZSBwcm9jZXNzZWQuXG4gICAgICAgICAgIC8vICAgU2VlOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1wYnJ5YW4tenlwLWpzb24tcmVmLTAzI3NlY3Rpb24tM1xuICAgICAgICAgICBpZiAoZ2V0RXh0cmFSZWZLZXlzKG5vZGUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICBwcm9jZXNzQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfVxuXG4gICAgICAgICByZXR1cm4gcHJvY2Vzc0NoaWxkcmVuO1xuICAgICAgIH0pO1xuXG4gIHJldHVybiByZWZzO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVmc0F0IChsb2NhdGlvbiwgb3B0aW9ucykge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIGxvY2F0aW9uXG4gICAgICBpZiAoIV8uaXNTdHJpbmcobG9jYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2xvY2F0aW9uIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICAvLyBBZGQgdGhlIGxvY2F0aW9uIHRvIHRoZSBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3ZhbGlkYXRpb25cbiAgICAgICAgb3B0aW9ucy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBvcHRpb25zXG4gICAgICBvcHRpb25zID0gdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4gZ2V0UmVtb3RlRG9jdW1lbnQob3B0aW9ucy5sb2NhdGlvbiwgb3B0aW9ucyk7XG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICB2YXIgY2FjaGVFbnRyeSA9IF8uY2xvbmVEZWVwKHJlbW90ZUNhY2hlW29wdGlvbnMubG9jYXRpb25dKTtcbiAgICAgIHZhciBjT3B0aW9ucyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMpO1xuICAgICAgdmFyIHVyaURldGFpbHMgPSBwYXJzZVVSSShvcHRpb25zLmxvY2F0aW9uKTtcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQoY2FjaGVFbnRyeS5yZWZzKSkge1xuICAgICAgICAvLyBEbyBub3QgZmlsdGVyIGFueSByZWZlcmVuY2VzIHNvIHRoZSBjYWNoZSBpcyBjb21wbGV0ZVxuICAgICAgICBkZWxldGUgY09wdGlvbnMuZmlsdGVyO1xuICAgICAgICBkZWxldGUgY09wdGlvbnMuc3ViRG9jUGF0aDtcblxuICAgICAgICBjT3B0aW9ucy5pbmNsdWRlSW52YWxpZCA9IHRydWU7XG5cbiAgICAgICAgcmVtb3RlQ2FjaGVbb3B0aW9ucy5sb2NhdGlvbl0ucmVmcyA9IGZpbmRSZWZzKHJlcywgY09wdGlvbnMpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdGhlIGZpbHRlciBvcHRpb25zIGJhY2tcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgY09wdGlvbnMuZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh1cmlEZXRhaWxzLmZyYWdtZW50KSkge1xuICAgICAgICBjT3B0aW9ucy5zdWJEb2NQYXRoID0gcGF0aEZyb21QdHIoZGVjb2RlVVJJKHVyaURldGFpbHMuZnJhZ21lbnQpKTtcbiAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQodXJpRGV0YWlscy5zdWJEb2NQYXRoKSkge1xuICAgICAgICBjT3B0aW9ucy5zdWJEb2NQYXRoID0gb3B0aW9ucy5zdWJEb2NQYXRoO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIHdpbGwgdXNlIHRoZSBjYWNoZSBzbyBkb24ndCB3b3JyeSBhYm91dCBjYWxsaW5nIGl0IHR3aWNlXG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWZzOiBmaW5kUmVmcyhyZXMsIGNPcHRpb25zKSxcbiAgICAgICAgdmFsdWU6IHJlc1xuICAgICAgfTtcbiAgICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59XG5cbmZ1bmN0aW9uIGdldFJlZkRldGFpbHMgKG9iaikge1xuICB2YXIgZGV0YWlscyA9IHtcbiAgICBkZWY6IG9ialxuICB9O1xuICB2YXIgY2FjaGVLZXk7XG4gIHZhciBleHRyYUtleXM7XG4gIHZhciB1cmlEZXRhaWxzO1xuXG4gIHRyeSB7XG4gICAgaWYgKGlzUmVmTGlrZShvYmosIHRydWUpKSB7XG4gICAgICBjYWNoZUtleSA9IG9iai4kcmVmO1xuICAgICAgdXJpRGV0YWlscyA9IHVyaURldGFpbHNDYWNoZVtjYWNoZUtleV07XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHVyaURldGFpbHMpKSB7XG4gICAgICAgIHVyaURldGFpbHMgPSB1cmlEZXRhaWxzQ2FjaGVbY2FjaGVLZXldID0gcGFyc2VVUkkoY2FjaGVLZXkpO1xuICAgICAgfVxuXG4gICAgICBkZXRhaWxzLnVyaSA9IGNhY2hlS2V5O1xuICAgICAgZGV0YWlscy51cmlEZXRhaWxzID0gdXJpRGV0YWlscztcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodXJpRGV0YWlscy5lcnJvcikpIHtcbiAgICAgICAgZGV0YWlscy50eXBlID0gZ2V0UmVmVHlwZShkZXRhaWxzKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgSlNPTiBQb2ludGVyXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKFsnIycsICcvJ10uaW5kZXhPZihjYWNoZUtleVswXSkgPiAtMSkge1xuICAgICAgICAgICAgaXNQdHIoY2FjaGVLZXksIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2FjaGVLZXkuaW5kZXhPZignIycpID4gLTEpIHtcbiAgICAgICAgICAgIGlzUHRyKHVyaURldGFpbHMuZnJhZ21lbnQsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgZGV0YWlscy5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIGRldGFpbHMudHlwZSA9ICdpbnZhbGlkJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGV0YWlscy5lcnJvciA9IGRldGFpbHMudXJpRGV0YWlscy5lcnJvcjtcbiAgICAgICAgZGV0YWlscy50eXBlID0gJ2ludmFsaWQnO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSB3YXJuaW5nXG4gICAgICBleHRyYUtleXMgPSBnZXRFeHRyYVJlZktleXMob2JqKTtcblxuICAgICAgaWYgKGV4dHJhS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMud2FybmluZyA9ICdFeHRyYSBKU09OIFJlZmVyZW5jZSBwcm9wZXJ0aWVzIHdpbGwgYmUgaWdub3JlZDogJyArIGV4dHJhS2V5cy5qb2luKCcsICcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXRhaWxzLnR5cGUgPSAnaW52YWxpZCc7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZXRhaWxzLmVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgZGV0YWlscy50eXBlID0gJ2ludmFsaWQnO1xuICB9XG5cbiAgcmV0dXJuIGRldGFpbHM7XG59XG5cbmZ1bmN0aW9uIGlzUHRyIChwdHIsIHRocm93V2l0aERldGFpbHMpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Q2hhcjtcblxuICB0cnkge1xuICAgIGlmIChfLmlzU3RyaW5nKHB0cikpIHtcbiAgICAgIGlmIChwdHIgIT09ICcnKSB7XG4gICAgICAgIGZpcnN0Q2hhciA9IHB0ci5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKFsnIycsICcvJ10uaW5kZXhPZihmaXJzdENoYXIpID09PSAtMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHRyIG11c3Qgc3RhcnQgd2l0aCBhIC8gb3IgIy8nKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaXJzdENoYXIgPT09ICcjJyAmJiBwdHIgIT09ICcjJyAmJiBwdHIuY2hhckF0KDEpICE9PSAnLycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3B0ciBtdXN0IHN0YXJ0IHdpdGggYSAvIG9yICMvJyk7XG4gICAgICAgIH0gZWxzZSBpZiAocHRyLm1hdGNoKGJhZFB0clRva2VuUmVnZXgpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwdHIgaGFzIGludmFsaWQgdG9rZW4ocyknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3B0ciBpcyBub3QgYSBTdHJpbmcnKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0aHJvd1dpdGhEZXRhaWxzID09PSB0cnVlKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdmFsaWQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZnVuY3Rpb24gaXNSZWYgKG9iaiwgdGhyb3dXaXRoRGV0YWlscykge1xuICByZXR1cm4gaXNSZWZMaWtlKG9iaiwgdGhyb3dXaXRoRGV0YWlscykgJiYgZ2V0UmVmRGV0YWlscyhvYmosIHRocm93V2l0aERldGFpbHMpLnR5cGUgIT09ICdpbnZhbGlkJztcbn1cblxuZnVuY3Rpb24gcGF0aEZyb21QdHIgKHB0cikge1xuICB0cnkge1xuICAgIGlzUHRyKHB0ciwgdHJ1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHRyIG11c3QgYmUgYSBKU09OIFBvaW50ZXI6ICcgKyBlcnIubWVzc2FnZSk7XG4gIH1cblxuICB2YXIgc2VnbWVudHMgPSBwdHIuc3BsaXQoJy8nKTtcblxuICAvLyBSZW1vdmUgdGhlIGZpcnN0IHNlZ21lbnRcbiAgc2VnbWVudHMuc2hpZnQoKTtcblxuICByZXR1cm4gZGVjb2RlUGF0aChzZWdtZW50cyk7XG59XG5cbmZ1bmN0aW9uIHBhdGhUb1B0ciAocGF0aCwgaGFzaFByZWZpeCkge1xuICBpZiAoIV8uaXNBcnJheShwYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncGF0aCBtdXN0IGJlIGFuIEFycmF5Jyk7XG4gIH1cblxuICAvLyBFbmNvZGUgZWFjaCBzZWdtZW50IGFuZCByZXR1cm5cbiAgcmV0dXJuIChoYXNoUHJlZml4ICE9PSBmYWxzZSA/ICcjJyA6ICcnKSArIChwYXRoLmxlbmd0aCA+IDAgPyAnLycgOiAnJykgKyBlbmNvZGVQYXRoKHBhdGgpLmpvaW4oJy8nKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlZnMgKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIGRvY3VtZW50XG4gICAgICBpZiAoIV8uaXNBcnJheShvYmopICYmICFfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb2JqIG11c3QgYmUgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIG9wdGlvbnNcbiAgICAgIG9wdGlvbnMgPSB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucywgb2JqKTtcblxuICAgICAgLy8gQ2xvbmUgdGhlIGlucHV0IHNvIHdlIGRvIG5vdCBhbHRlciBpdFxuICAgICAgb2JqID0gXy5jbG9uZURlZXAob2JqKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBtZXRhZGF0YSA9IHtcbiAgICAgICAgZGVwczoge30sIC8vIFRvIGF2b2lkIHByb2Nlc3NpbmcgdGhlIHNhbWUgcmVmZXJuZWNlIHR3aWNlLCBhbmQgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZSBpZGVudGlmaWNhdGlvblxuICAgICAgICBkb2NzOiB7fSwgLy8gQ2FjaGUgdG8gYXZvaWQgcHJvY2Vzc2luZyB0aGUgc2FtZSBkb2N1bWVudCBtb3JlIHRoYW4gb25jZVxuICAgICAgICByZWZzOiB7fSAvLyBSZWZlcmVuY2UgbG9jYXRpb25zIGFuZCB0aGVpciBtZXRhZGF0YVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGJ1aWxkUmVmTW9kZWwob2JqLCBvcHRpb25zLCBtZXRhZGF0YSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgdmFyIGFsbFJlZnMgPSB7fTtcbiAgICAgIHZhciBjaXJjdWxhclBhdGhzID0gW107XG4gICAgICB2YXIgY2lyY3VsYXJzID0gW107XG4gICAgICB2YXIgZGVwR3JhcGggPSBuZXcgZ2wuR3JhcGgoKTtcbiAgICAgIHZhciBmdWxsTG9jYXRpb24gPSBtYWtlQWJzb2x1dGUob3B0aW9ucy5sb2NhdGlvbik7XG4gICAgICB2YXIgcmVmc1Jvb3QgPSBmdWxsTG9jYXRpb24gKyBwYXRoVG9QdHIob3B0aW9ucy5zdWJEb2NQYXRoKTtcbiAgICAgIHZhciByZWxhdGl2ZUJhc2UgPSBwYXRoLmRpcm5hbWUoZnVsbExvY2F0aW9uKTtcblxuICAgICAgLy8gSWRlbnRpZnkgY2lyY3VsYXJzXG5cbiAgICAgIC8vIEFkZCBub2RlcyBmaXJzdFxuICAgICAgT2JqZWN0LmtleXMocmVzdWx0cy5kZXBzKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGRlcEdyYXBoLnNldE5vZGUobm9kZSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGVkZ2VzXG4gICAgICBfLmZvck93bihyZXN1bHRzLmRlcHMsIGZ1bmN0aW9uIChwcm9wcywgbm9kZSkge1xuICAgICAgICBfLmZvck93bihwcm9wcywgZnVuY3Rpb24gKGRlcCkge1xuICAgICAgICAgIGRlcEdyYXBoLnNldEVkZ2Uobm9kZSwgZGVwKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2lyY3VsYXJQYXRocyA9IGdsLmFsZy5maW5kQ3ljbGVzKGRlcEdyYXBoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIGxpc3Qgb2YgY2lyY3VsYXJzXG4gICAgICBjaXJjdWxhclBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHBhdGgpIHtcbiAgICAgICAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uIChzZWcpIHtcbiAgICAgICAgICBpZiAoY2lyY3VsYXJzLmluZGV4T2Yoc2VnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNpcmN1bGFycy5wdXNoKHNlZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZGVudGlmeSBjaXJjdWxhcnNcbiAgICAgIF8uZm9yT3duKHJlc3VsdHMuZGVwcywgZnVuY3Rpb24gKHByb3BzLCBub2RlKSB7XG4gICAgICAgIF8uZm9yT3duKHByb3BzLCBmdW5jdGlvbiAoZGVwLCBwcm9wKSB7XG4gICAgICAgICAgdmFyIGlzQ2lyY3VsYXIgPSBmYWxzZTtcbiAgICAgICAgICB2YXIgcmVmUHRyID0gbm9kZSArIHByb3Auc2xpY2UoMSk7XG4gICAgICAgICAgdmFyIHJlZkRldGFpbHMgPSByZXN1bHRzLnJlZnNbbm9kZSArIHByb3Auc2xpY2UoMSldO1xuICAgICAgICAgIHZhciByZW1vdGUgPSBpc1JlbW90ZShyZWZEZXRhaWxzKTtcbiAgICAgICAgICB2YXIgcGF0aEluZGV4O1xuXG4gICAgICAgICAgaWYgKGNpcmN1bGFycy5pbmRleE9mKGRlcCkgPiAtMSkge1xuICAgICAgICAgICAgLy8gRmlndXJlIG91dCBpZiB0aGUgY2lyY3VsYXIgaXMgcGFydCBvZiBhIGNpcmN1bGFyIGNoYWluIG9yIGp1c3QgYSByZWZlcmVuY2UgdG8gYSBjaXJjdWxhclxuICAgICAgICAgICAgY2lyY3VsYXJQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXRcbiAgICAgICAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwYXRoSW5kZXggPSBwYXRoLmluZGV4T2YoZGVwKTtcblxuICAgICAgICAgICAgICBpZiAocGF0aEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBlYWNoIHBhdGggc2VnbWVudCB0byBzZWUgaWYgdGhlIHJlZmVyZW5jZSBsb2NhdGlvbiBpcyBiZW5lYXRoIG9uZSBvZiBpdHMgc2VnbWVudHNcbiAgICAgICAgICAgICAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgICAgICAgICAgICAgICAgLy8gU2hvcnQgY2lyY3VpdFxuICAgICAgICAgICAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmUHRyLmluZGV4T2Yoc2VnICsgJy8nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGxvY2FsLCBtYXJrIGl0IGFzIGNpcmN1bGFyIGJ1dCBpZiBpdCdzIGEgcmVtb3RlIHJlZmVyZW5jZSwgb25seSBtYXJrIGl0XG4gICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1bGFyIGlmIHRoZSBtYXRjaGluZyBwYXRoIGlzIHRoZSBsYXN0IHBhdGggc2VnbWVudCBvciBpdHMgbWF0Y2ggaXMgbm90IHRvIGEgZG9jdW1lbnQgcm9vdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlbW90ZSB8fCBwYXRoSW5kZXggPT09IHBhdGgubGVuZ3RoIC0gMSB8fCBkZXBbZGVwLmxlbmd0aCAtIDFdICE9PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpc0NpcmN1bGFyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNDaXJjdWxhcikge1xuICAgICAgICAgICAgLy8gVXBkYXRlIGFsbCByZWZlcmVuY2VzIGFuZCByZWZlcmVuY2UgZGV0YWlsc1xuICAgICAgICAgICAgcmVmRGV0YWlscy5jaXJjdWxhciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXNvbHZlIHRoZSByZWZlcmVuY2VzIGluIHJldmVyc2Ugb3JkZXIgc2luY2UgdGhlIGN1cnJlbnQgb3JkZXIgaXMgdG9wLWRvd25cbiAgICAgIF8uZm9yT3duKE9iamVjdC5rZXlzKHJlc3VsdHMuZGVwcykucmV2ZXJzZSgpLCBmdW5jdGlvbiAocGFyZW50UHRyKSB7XG4gICAgICAgIHZhciBkZXBzID0gcmVzdWx0cy5kZXBzW3BhcmVudFB0cl07XG4gICAgICAgIHZhciBwUHRyUGFydHMgPSBwYXJlbnRQdHIuc3BsaXQoJyMnKTtcbiAgICAgICAgdmFyIHBEb2N1bWVudCA9IHJlc3VsdHMuZG9jc1twUHRyUGFydHNbMF1dO1xuICAgICAgICB2YXIgcFB0clBhdGggPSBwYXRoRnJvbVB0cihwUHRyUGFydHNbMV0pO1xuXG4gICAgICAgIF8uZm9yT3duKGRlcHMsIGZ1bmN0aW9uIChkZXAsIHByb3ApIHtcbiAgICAgICAgICB2YXIgZGVwUGFydHMgPSBkZXAuc3BsaXQoJyMnKTtcbiAgICAgICAgICB2YXIgZERvY3VtZW50ID0gcmVzdWx0cy5kb2NzW2RlcFBhcnRzWzBdXTtcbiAgICAgICAgICB2YXIgZFB0clBhdGggPSBwUHRyUGF0aC5jb25jYXQocGF0aEZyb21QdHIocHJvcCkpO1xuICAgICAgICAgIHZhciByZWZEZXRhaWxzID0gcmVzdWx0cy5yZWZzW3BQdHJQYXJ0c1swXSArIHBhdGhUb1B0cihkUHRyUGF0aCldO1xuXG4gICAgICAgICAgLy8gUmVzb2x2ZSByZWZlcmVuY2UgaWYgdmFsaWRcbiAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZWZEZXRhaWxzLmVycm9yKSAmJiBfLmlzVW5kZWZpbmVkKHJlZkRldGFpbHMubWlzc2luZykpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5yZXNvbHZlQ2lyY3VsYXJzICYmIHJlZkRldGFpbHMuY2lyY3VsYXIpIHtcbiAgICAgICAgICAgICAgcmVmRGV0YWlscy52YWx1ZSA9IHJlZkRldGFpbHMuZGVmO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZWZEZXRhaWxzLnZhbHVlID0gZmluZFZhbHVlKGREb2N1bWVudCwgcGF0aEZyb21QdHIoZGVwUGFydHNbMV0pKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgbWFya01pc3NpbmcocmVmRGV0YWlscywgZXJyKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LCByZXBsYWNlIHRoZSBkb2N1bWVudCBpbiB0aGUgY2FjaGUuICBPdGhlcndpc2UsIHJlcGxhY2VcbiAgICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGluIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBpbiB0aGUgZG9jdW1lbnQgY2FjaGUuXG4gICAgICAgICAgICAgIGlmIChwUHRyUGFydHNbMV0gPT09ICcnICYmIHByb3AgPT09ICcjJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMuZG9jc1twUHRyUGFydHNbMF1dID0gcmVmRGV0YWlscy52YWx1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShwRG9jdW1lbnQsIGRQdHJQYXRoLCByZWZEZXRhaWxzLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZnVuY3Rpb24gd2Fsa1JlZnMgKHJvb3QsIHJlZlB0ciwgcmVmUGF0aCkge1xuICAgICAgICB2YXIgcmVmUHRyUGFydHMgPSByZWZQdHIuc3BsaXQoJyMnKTtcbiAgICAgICAgdmFyIHJlZkRldGFpbHMgPSByZXN1bHRzLnJlZnNbcmVmUHRyXTtcbiAgICAgICAgdmFyIHJlZkRlcHM7XG5cbiAgICAgICAgLy8gUmVjb3JkIHRoZSByZWZlcmVuY2UgKHJlbGF0aXZlIHRvIHRoZSByb290IGRvY3VtZW50IHVubGVzcyB0aGUgcmVmZXJlbmNlIGlzIGluIHRoZSByb290IGRvY3VtZW50KVxuICAgICAgICBhbGxSZWZzW3JlZlB0clBhcnRzWzBdID09PSBvcHRpb25zLmxvY2F0aW9uID9cbiAgICAgICAgICAgICAgICAgICcjJyArIHJlZlB0clBhcnRzWzFdIDpcbiAgICAgICAgICAgICAgICAgIHBhdGhUb1B0cihvcHRpb25zLnN1YkRvY1BhdGguY29uY2F0KHJlZlBhdGgpKV0gPSByZWZEZXRhaWxzO1xuXG4gICAgICAgIC8vIERvIG5vdCB3YWxrIGludmFsaWQgcmVmZXJlbmNlc1xuICAgICAgICBpZiAocmVmRGV0YWlscy5jaXJjdWxhciB8fCAhaXNWYWxpZChyZWZEZXRhaWxzKSkge1xuICAgICAgICAgIC8vIFNhbml0aXplIGVycm9yc1xuICAgICAgICAgIGlmICghcmVmRGV0YWlscy5jaXJjdWxhciAmJiByZWZEZXRhaWxzLmVycm9yKSB7XG4gICAgICAgICAgICAvLyBUaGUgd2F5IHdlIHVzZSBmaW5kUmVmcyBub3cgcmVzdWx0cyBpbiBhbiBlcnJvciB0aGF0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGF0aW9uXG4gICAgICAgICAgICByZWZEZXRhaWxzLmVycm9yID0gcmVmRGV0YWlscy5lcnJvci5yZXBsYWNlKCdvcHRpb25zLnN1YkRvY1BhdGgnLCAnSlNPTiBQb2ludGVyJyk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXJyb3IgdG8gdXNlIHRoZSBhcHByb3ByaWF0ZSBKU09OIFBvaW50ZXJcbiAgICAgICAgICAgIGlmIChyZWZEZXRhaWxzLmVycm9yLmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICAgICAgICAgIHJlZkRldGFpbHMuZXJyb3IgPSByZWZEZXRhaWxzLmVycm9yLnJlcGxhY2UocmVmRGV0YWlscy51cmkuc3Vic3RyKHJlZkRldGFpbHMudXJpLmluZGV4T2YoJyMnKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRGV0YWlscy51cmkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXBvcnQgZXJyb3JzIG9wZW5pbmcgZmlsZXMgYXMgSlNPTiBQb2ludGVyIGVycm9yc1xuICAgICAgICAgICAgaWYgKHJlZkRldGFpbHMuZXJyb3IuaW5kZXhPZignRU5PRU5UOicpID09PSAwIHx8IHJlZkRldGFpbHMuZXJyb3IuaW5kZXhPZignTm90IEZvdW5kJykgPT09IDApIHtcbiAgICAgICAgICAgICAgcmVmRGV0YWlscy5lcnJvciA9ICdKU09OIFBvaW50ZXIgcG9pbnRzIHRvIG1pc3NpbmcgbG9jYXRpb246ICcgKyByZWZEZXRhaWxzLnVyaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZWZEZXBzID0gcmVzdWx0cy5kZXBzW3JlZkRldGFpbHMucmVmZElkXTtcblxuICAgICAgICBpZiAocmVmRGV0YWlscy5yZWZkSWQuaW5kZXhPZihyb290KSAhPT0gMCkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHJlZkRlcHMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgIHdhbGtSZWZzKHJlZkRldGFpbHMucmVmZElkLCByZWZEZXRhaWxzLnJlZmRJZCArIHByb3Auc3Vic3RyKDEpLCByZWZQYXRoLmNvbmNhdChwYXRoRnJvbVB0cihwcm9wKSkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSBvbmx5IHByb2Nlc3MgYSBkb2N1bWVudCAob3Igc3ViIGRvY3VtZW50KSBhbmQgZWFjaCByZWZlcmVuY2Ugb25jZSBldmVyLiAgVGhpcyBtZWFuc1xuICAgICAgLy8gdGhhdCBpZiB3ZSB3YW50IHRvIHByb3ZpZGUgdGhlIGZ1bGwgcGljdHVyZSBhcyB0byB3aGF0IHBhdGhzIGluIHRoZSByZXNvbHZlZCBkb2N1bWVudCB3ZXJlIGNyZWF0ZWQgYXMgYSByZXN1bHRcbiAgICAgIC8vIG9mIGEgcmVmZXJlbmNlLCB3ZSBoYXZlIHRvIHRha2Ugb3VyIGZ1bGx5LXF1YWxpZmllZCByZWZlcmVuY2UgbG9jYXRpb25zIGFuZCBleHBhbmQgdGhlbSB0byBiZSBhbGwgbG9jYWwgYmFzZWRcbiAgICAgIC8vIG9uIHRoZSBvcmlnaW5hbCBkb2N1bWVudC5cbiAgICAgIE9iamVjdC5rZXlzKHJlc3VsdHMucmVmcykuZm9yRWFjaChmdW5jdGlvbiAocmVmUHRyKSB7XG4gICAgICAgIHZhciByZWZEZXRhaWxzID0gcmVzdWx0cy5yZWZzW3JlZlB0cl07XG4gICAgICAgIHZhciBmcVVSSVNlZ21lbnRzO1xuICAgICAgICB2YXIgdXJpU2VnbWVudHM7XG5cbiAgICAgICAgLy8gTWFrZSBhbGwgZnVsbHktcXVhbGlmaWVkIHJlZmVyZW5jZSBVUklzIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCByb290IChpZiBuZWNlc3NhcnkpLiAgVGhpcyBzdGVwIGlzIGRvbmUgaGVyZVxuICAgICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBpbnN0ZWFkIG9mIGJlbG93IHdoZW4gdGhlIG9mZmljaWFsIHNhbml0aXphdGlvbiBwcm9jZXNzIHJ1bnMuXG4gICAgICAgIGlmIChyZWZEZXRhaWxzLnR5cGUgIT09ICdpbnZhbGlkJykge1xuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgaGFzaCBmcm9tIGRvY3VtZW50IHJvb3QgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmVuJ3QgaW4gdGhlIG9yaWdpbmFsIFVSSVxuICAgICAgICAgIGlmIChyZWZEZXRhaWxzLmZxVVJJW3JlZkRldGFpbHMuZnFVUkkubGVuZ3RoIC0gMV0gPT09ICcjJyAmJlxuICAgICAgICAgICAgICAgIHJlZkRldGFpbHMudXJpW3JlZkRldGFpbHMudXJpLmxlbmd0aCAtIDFdICE9PSAnIycpIHtcbiAgICAgICAgICAgIHJlZkRldGFpbHMuZnFVUkkgPSByZWZEZXRhaWxzLmZxVVJJLnN1YnN0cigwLCByZWZEZXRhaWxzLmZxVVJJLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZxVVJJU2VnbWVudHMgPSByZWZEZXRhaWxzLmZxVVJJLnNwbGl0KCcvJyk7XG4gICAgICAgICAgdXJpU2VnbWVudHMgPSByZWZEZXRhaWxzLnVyaS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgLy8gVGhlIGZ1bGx5LXF1YWxpZmllZCBVUkkgaXMgdW5lbmNvZGVkIHNvIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGZvcm1hdHRpbmcgb2YgdGhlIFVSSSAoZW5jb2RlZCB2cy4gdW5lbmNvZGVkKSxcbiAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlcGxhY2UgZWFjaCBVUkkgc2VnbWVudCBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgIF8udGltZXModXJpU2VnbWVudHMubGVuZ3RoIC0gMSwgZnVuY3Rpb24gKHRpbWUpIHtcbiAgICAgICAgICAgIHZhciBuU2VnID0gdXJpU2VnbWVudHNbdXJpU2VnbWVudHMubGVuZ3RoIC0gdGltZSAtIDFdO1xuICAgICAgICAgICAgdmFyIGZxU2VnSW5kZXggPSBmcVVSSVNlZ21lbnRzLmxlbmd0aCAtIHRpbWUgLSAxO1xuICAgICAgICAgICAgdmFyIGZxU2VnID0gZnFVUklTZWdtZW50c1tmcVNlZ0luZGV4XTtcblxuICAgICAgICAgICAgaWYgKG5TZWcgPT09ICcuJyB8fCBuU2VnID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgIG5TZWcgPSBmcVNlZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnFVUklTZWdtZW50c1tmcVNlZ0luZGV4XSA9IG5TZWc7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZWZEZXRhaWxzLmZxVVJJID0gZnFVUklTZWdtZW50cy5qb2luKCcvJyk7XG5cbiAgICAgICAgICAvLyBNYWtlIHRoZSBmdWxseS1xdWFsaWZpZWQgVVJJcyByZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQgcm9vdFxuICAgICAgICAgIGlmIChyZWZEZXRhaWxzLmZxVVJJLmluZGV4T2YoZnVsbExvY2F0aW9uKSA9PT0gMCkge1xuICAgICAgICAgICAgcmVmRGV0YWlscy5mcVVSSSA9IHJlZkRldGFpbHMuZnFVUkkucmVwbGFjZShmdWxsTG9jYXRpb24sICcnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlZkRldGFpbHMuZnFVUkkuaW5kZXhPZihyZWxhdGl2ZUJhc2UpID09PSAwKSB7XG4gICAgICAgICAgICByZWZEZXRhaWxzLmZxVVJJID0gcmVmRGV0YWlscy5mcVVSSS5yZXBsYWNlKHJlbGF0aXZlQmFzZSwgJycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZWZEZXRhaWxzLmZxVVJJWzBdID09PSAnLycpIHtcbiAgICAgICAgICAgIHJlZkRldGFpbHMuZnFVUkkgPSAnLicgKyByZWZEZXRhaWxzLmZxVVJJO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBwcm9jZXNzIHJlZmVyZW5jZXMgZm91bmQgYXQgb3IgYmVuZWF0aCB0aGUgcHJvdmlkZWQgZG9jdW1lbnQgYW5kIHN1Yi1kb2N1bWVudCBwYXRoXG4gICAgICAgIGlmIChyZWZQdHIuaW5kZXhPZihyZWZzUm9vdCkgIT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3YWxrUmVmcyhyZWZzUm9vdCwgcmVmUHRyLCBwYXRoRnJvbVB0cihyZWZQdHIuc3Vic3RyKHJlZnNSb290Lmxlbmd0aCkpKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTYW5pdGl6ZSB0aGUgcmVmZXJlbmNlIGRldGFpbHNcbiAgICAgIF8uZm9yT3duKHJlc3VsdHMucmVmcywgZnVuY3Rpb24gKHJlZkRldGFpbHMpIHtcbiAgICAgICAgLy8gRGVsZXRlIHRoZSByZWZlcmVuY2UgaWQgdXNlZCBmb3IgZGVwZW5kZW5jeSB0cmFja2luZyBhbmQgY2lyY3VsYXIgaWRlbnRpZmljYXRpb25cbiAgICAgICAgZGVsZXRlIHJlZkRldGFpbHMucmVmZElkO1xuXG4gICAgICAgIC8vIFRvIGF2b2lkIHRoZSBlcnJvciBtZXNzYWdlIGJlaW5nIFVSSSBlbmNvZGVkL2RlY29kZWQgYnkgbWlzdGFrZSwgcmVwbGFjZSB0aGUgY3VycmVudCBKU09OIFBvaW50ZXIgd2l0aCB0aGVcbiAgICAgICAgLy8gdmFsdWUgaW4gdGhlIEpTT04gUmVmZXJlbmNlIGRlZmluaXRpb24uXG4gICAgICAgIGlmIChyZWZEZXRhaWxzLm1pc3NpbmcpIHtcbiAgICAgICAgICByZWZEZXRhaWxzLmVycm9yID0gcmVmRGV0YWlscy5lcnJvci5zcGxpdCgnOiAnKVswXSArICc6ICcgKyByZWZEZXRhaWxzLmRlZi4kcmVmO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVmczogYWxsUmVmcyxcbiAgICAgICAgcmVzb2x2ZWQ6IHJlc3VsdHMuZG9jc1tmdWxsTG9jYXRpb25dXG4gICAgICB9O1xuICAgIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlZnNBdCAobG9jYXRpb24sIG9wdGlvbnMpIHtcbiAgdmFyIGFsbFRhc2tzID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgYWxsVGFza3MgPSBhbGxUYXNrc1xuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgICAgaWYgKCFfLmlzU3RyaW5nKGxvY2F0aW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdsb2NhdGlvbiBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgLy8gQWRkIHRoZSBsb2NhdGlvbiB0byB0aGUgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy92YWxpZGF0aW9uXG4gICAgICAgIG9wdGlvbnMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgb3B0aW9uc1xuICAgICAgb3B0aW9ucyA9IHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGdldFJlbW90ZURvY3VtZW50KG9wdGlvbnMubG9jYXRpb24sIG9wdGlvbnMpO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGNPcHRpb25zID0gXy5jbG9uZURlZXAob3B0aW9ucyk7XG4gICAgICB2YXIgdXJpRGV0YWlscyA9IHBhcnNlVVJJKG9wdGlvbnMubG9jYXRpb24pO1xuXG4gICAgICAvLyBTZXQgdGhlIHN1YiBkb2N1bWVudCBwYXRoIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHVyaURldGFpbHMuZnJhZ21lbnQpKSB7XG4gICAgICAgIGNPcHRpb25zLnN1YkRvY1BhdGggPSBwYXRoRnJvbVB0cihkZWNvZGVVUkkodXJpRGV0YWlscy5mcmFnbWVudCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZVJlZnMocmVzLCBjT3B0aW9ucylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVmczogcmVzMi5yZWZzLFxuICAgICAgICAgICAgcmVzb2x2ZWQ6IHJlczIucmVzb2x2ZWQsXG4gICAgICAgICAgICB2YWx1ZTogcmVzXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIGFsbFRhc2tzO1xufVxuXG4vKipcbiAqIFZhcmlvdXMgdXRpbGl0aWVzIGZvciBKU09OIFJlZmVyZW5jZXMgKihodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1wYnJ5YW4tenlwLWpzb24tcmVmLTAzKSogYW5kXG4gKiBKU09OIFBvaW50ZXJzICooaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEpKi5cbiAqXG4gKiBAbW9kdWxlIGpzb24tcmVmc1xuICovXG5cbi8qKlxuICogQSBudW1iZXIgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJlbG93IGFyZSB1c2VkIHdpdGhpbiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgVHlwaWNhbGx5LCBJIHdvdWxkIHVzZSBhIGZ1bmN0aW9uXG4gKiBkZWNsYXJhdGlvbiBfKHdpdGggZG9jdW1lbmF0aW9uKV8gYWJvdmUgYW5kIHRoZW4ganVzdCBleHBvcnQgYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGJ1dCBkdWUgdG8gYSBidWcgaW4gSlNEb2NcbiAqIChodHRwczovL2dpdGh1Yi5jb20vanNkb2MzL2pzZG9jL2lzc3Vlcy82NzkpLCB0aGlzIGJyZWFrcyB0aGUgZ2VuZXJhdGVkIEFQSSBkb2N1bWVudGF0aW9uIGFuZCBUeXBlU2NyaXB0XG4gKiBkZWNsYXJhdGlvbnMuICBTbyB0aGF0J3Mgd2h5IGVhY2ggYG1vZHVsZS5leHBvcnRzYCBiZWxvdyBiYXNpY2FsbHkganVzdCB3cmFwcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLlxuICovXG5cbiAvKipcbiAqIENsZWFycyB0aGUgaW50ZXJuYWwgY2FjaGUgb2YgcmVtb3RlIGRvY3VtZW50cywgcmVmZXJlbmNlIGRldGFpbHMsIGV0Yy5cbiAqL1xubW9kdWxlLmV4cG9ydHMuY2xlYXJDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmVtb3RlQ2FjaGUgPSB7fTtcbn07XG5cbi8qKlxuICogVGFrZXMgYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cyBhbmQgZGVjb2RlcyB0aGUgSlNPTiBQb2ludGVyIHRva2VucyBpbiB0aGVtLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggLSBUaGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50c1xuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBhcnJheSBvZiBwYXRoIHNlZ21lbnRzIHdpdGggdGhlaXIgSlNPTiBQb2ludGVyIHRva2VucyBkZWNvZGVkXG4gKlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBwYXRoIGlzIG5vdCBhbiBgQXJyYXlgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi0zfVxuICovXG5tb2R1bGUuZXhwb3J0cy5kZWNvZGVQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgcmV0dXJuIGRlY29kZVBhdGgocGF0aCk7XG59O1xuXG4vKipcbiAqIFRha2VzIGFuIGFycmF5IG9mIHBhdGggc2VnbWVudHMgYW5kIGVuY29kZXMgdGhlIHNwZWNpYWwgSlNPTiBQb2ludGVyIGNoYXJhY3RlcnMgaW4gdGhlbS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIC0gVGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHNcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cyB3aXRoIHRoZWlyIEpTT04gUG9pbnRlciB0b2tlbnMgZW5jb2RlZFxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgcGF0aCBpcyBub3QgYW4gYEFycmF5YFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxI3NlY3Rpb24tM31cbiAqL1xubW9kdWxlLmV4cG9ydHMuZW5jb2RlUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIHJldHVybiBlbmNvZGVQYXRoKHBhdGgpO1xufTtcblxuLyoqXG4gKiBGaW5kcyBKU09OIFJlZmVyZW5jZXMgZGVmaW5lZCB3aXRoaW4gdGhlIHByb3ZpZGVkIGFycmF5L29iamVjdC5cbiAqXG4gKiBAcGFyYW0ge2FycmF5fG9iamVjdH0gb2JqIC0gVGhlIHN0cnVjdHVyZSB0byBmaW5kIEpTT04gUmVmZXJlbmNlcyB3aXRoaW5cbiAqIEBwYXJhbSB7bW9kdWxlOmpzb24tcmVmc35Kc29uUmVmc09wdGlvbnN9IFtvcHRpb25zXSAtIFRoZSBKc29uUmVmcyBvcHRpb25zXG4gKlxuICogQHJldHVybnMge29iamVjdH0gYW4gb2JqZWN0IHdob3NlIGtleXMgYXJlIEpTT04gUG9pbnRlcnMgKihmcmFnbWVudCB2ZXJzaW9uKSogdG8gd2hlcmUgdGhlIEpTT04gUmVmZXJlbmNlIGlzIGRlZmluZWRcbiAqIGFuZCB3aG9zZSB2YWx1ZXMgYXJlIHtAbGluayBVbnJlc29sdmVkUmVmRGV0YWlsc30uXG4gKlxuICogQHRocm93cyB7RXJyb3J9IHdoZW4gdGhlIGlucHV0IGFyZ3VtZW50cyBmYWlsIHZhbGlkYXRpb24gb3IgaWYgYG9wdGlvbnMuc3ViRG9jUGF0aGAgcG9pbnRzIHRvIGFuIGludmFsaWQgbG9jYXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRmluZGluZyBhbGwgdmFsaWQgcmVmZXJlbmNlc1xuICogdmFyIGFsbFJlZnMgPSBKc29uUmVmcy5maW5kUmVmcyhvYmopO1xuICogLy8gRmluZGluZyBhbGwgcmVtb3RlIHJlZmVyZW5jZXNcbiAqIHZhciByZW1vdGVSZWZzID0gSnNvblJlZnMuZmluZFJlZnMob2JqLCB7ZmlsdGVyOiBbJ3JlbGF0aXZlJywgJ3JlbW90ZSddfSk7XG4gKiAvLyBGaW5kaW5nIGFsbCBpbnZhbGlkIHJlZmVyZW5jZXNcbiAqIHZhciBpbnZhbGlkUmVmcyA9IEpzb25SZWZzLmZpbmRSZWZzKG9iaiwge2ZpbHRlcjogJ2ludmFsaWQnLCBpbmNsdWRlSW52YWxpZDogdHJ1ZX0pO1xuICovXG5tb2R1bGUuZXhwb3J0cy5maW5kUmVmcyA9IGZ1bmN0aW9uIChvYmosIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZpbmRSZWZzKG9iaiwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEZpbmRzIEpTT04gUmVmZXJlbmNlcyBkZWZpbmVkIHdpdGhpbiB0aGUgZG9jdW1lbnQgYXQgdGhlIHByb3ZpZGVkIGxvY2F0aW9uLlxuICpcbiAqIFRoaXMgQVBJIGlzIGlkZW50aWNhbCB0byB7QGxpbmsgZmluZFJlZnN9IGV4Y2VwdCB0aGlzIEFQSSB3aWxsIHJldHJpZXZlIGEgcmVtb3RlIGRvY3VtZW50IGFuZCB0aGVuXG4gKiByZXR1cm4gdGhlIHJlc3VsdCBvZiB7QGxpbmsgZmluZFJlZnN9IG9uIHRoZSByZXRyaWV2ZWQgZG9jdW1lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIC0gVGhlIGxvY2F0aW9uIHRvIHJldHJpZXZlICooQ2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlLCBqdXN0IG1ha2Ugc3VyZSB5b3UgbG9vayBhdCB0aGVcbiAqIHtAbGluayBtb2R1bGU6anNvbi1yZWZzfkpzb25SZWZzT3B0aW9uc3xvcHRpb25zIGRvY3VtZW50YXRpb259IHRvIHNlZSBob3cgcmVsYXRpdmUgcmVmZXJlbmNlcyBhcmUgaGFuZGxlZC4pKlxuICogQHBhcmFtIHttb2R1bGU6anNvbi1yZWZzfkpzb25SZWZzT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIEpzb25SZWZzIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxtb2R1bGU6anNvbi1yZWZzflJldHJpZXZlZFJlZnNSZXN1bHRzPn0gYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYVxuICoge0BsaW5rIG1vZHVsZTpqc29uLXJlZnN+UmV0cmlldmVkUmVmc1Jlc3VsdHN9IGFuZCByZWplY3RzIHdpdGggYW4gYEVycm9yYCB3aGVuIHRoZSBpbnB1dCBhcmd1bWVudHMgZmFpbCB2YWxpZGF0aW9uLFxuICogd2hlbiBgb3B0aW9ucy5zdWJEb2NQYXRoYCBwb2ludHMgdG8gYW4gaW52YWxpZCBsb2NhdGlvbiBvciB3aGVuIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBwb2ludHMgdG8gYW4gdW5sb2FkYWJsZVxuICogcmVzb3VyY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB0aGF0IG9ubHkgcmVzb2x2ZXMgcmVmZXJlbmNlcyB3aXRoaW4gYSBzdWIgZG9jdW1lbnRcbiAqIEpzb25SZWZzLmZpbmRSZWZzQXQoJ2h0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicsIHtcbiAqICAgICBzdWJEb2NQYXRoOiAnIy9kZWZpbml0aW9ucydcbiAqICAgfSlcbiAqICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICogICAgICAvLyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzcG9uc2VcbiAqICAgICAgLy9cbiAqICAgICAgLy8gcmVzLnJlZnM6IEpTT04gUmVmZXJlbmNlIGxvY2F0aW9ucyBhbmQgZGV0YWlsc1xuICogICAgICAvLyByZXMudmFsdWU6IFRoZSByZXRyaWV2ZWQgZG9jdW1lbnRcbiAqICAgfSwgZnVuY3Rpb24gKGVycikge1xuICogICAgIGNvbnNvbGUubG9nKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICovXG5tb2R1bGUuZXhwb3J0cy5maW5kUmVmc0F0ID0gZnVuY3Rpb24gKGxvY2F0aW9uLCBvcHRpb25zKSB7XG4gIHJldHVybiBmaW5kUmVmc0F0KGxvY2F0aW9uLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSlNPTiBSZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iaiAtIFRoZSBKU09OIFJlZmVyZW5jZSBkZWZpbml0aW9uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpqc29uLXJlZnN+VW5yZXNvbHZlZFJlZkRldGFpbHN9IHRoZSBkZXRhaWxlZCBpbmZvcm1hdGlvblxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRSZWZEZXRhaWxzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gZ2V0UmVmRGV0YWlscyhvYmopO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGFyZ3VtZW50IHJlcHJlc2VudHMgYSBKU09OIFBvaW50ZXIuXG4gKlxuICogQSBzdHJpbmcgaXMgYSBKU09OIFBvaW50ZXIgaWYgdGhlIGZvbGxvd2luZyBhcmUgYWxsIHRydWU6XG4gKlxuICogICAqIFRoZSBzdHJpbmcgaXMgb2YgdHlwZSBgU3RyaW5nYFxuICogICAqIFRoZSBzdHJpbmcgbXVzdCBiZSBlbXB0eSwgYCNgIG9yIHN0YXJ0IHdpdGggYSBgL2Agb3IgYCMvYFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd1dpdGhEZXRhaWxzPWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRvIHRocm93IGFuIGBFcnJvcmAgd2l0aCB0aGUgZGV0YWlscyBhcyB0byB3aHkgdGhlIHZhbHVlXG4gKiBwcm92aWRlZCBpcyBpbnZhbGlkXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IHRoZSByZXN1bHQgb2YgdGhlIGNoZWNrXG4gKlxuICogQHRocm93cyB7ZXJyb3J9IHdoZW4gdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGludmFsaWQgYW5kIHRoZSBgdGhyb3dXaXRoRGV0YWlsc2AgYXJndW1lbnQgaXMgYHRydWVgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi0zfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXBhcmF0aW5nIHRoZSBkaWZmZXJlbnQgd2F5cyB0byBpbnZva2UgaXNQdHIgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXNcbiAqIGlmIChpc1B0cihzdHIpKSB7XG4gKiAgIC8vIEhhbmRsZSBhIHZhbGlkIEpTT04gUG9pbnRlclxuICogfSBlbHNlIHtcbiAqICAgLy8gR2V0IHRoZSByZWFzb24gYXMgdG8gd2h5IHRoZSB2YWx1ZSBpcyBub3QgYSBKU09OIFBvaW50ZXIgc28geW91IGNhbiBmaXgvcmVwb3J0IGl0XG4gKiAgIHRyeSB7XG4gKiAgICAgaXNQdHIoc3RyLCB0cnVlKTtcbiAqICAgfSBjYXRjaCAoZXJyKSB7XG4gKiAgICAgLy8gVGhlIGVycm9yIG1lc3NhZ2UgY29udGFpbnMgdGhlIGRldGFpbHMgYXMgdG8gd2h5IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub3QgYSBKU09OIFBvaW50ZXJcbiAqICAgfVxuICogfVxuICovXG5tb2R1bGUuZXhwb3J0cy5pc1B0ciA9IGZ1bmN0aW9uIChwdHIsIHRocm93V2l0aERldGFpbHMpIHtcbiAgcmV0dXJuIGlzUHRyKHB0ciwgdGhyb3dXaXRoRGV0YWlscyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgYXJndW1lbnQgcmVwcmVzZW50cyBhIEpTT04gUmVmZXJlbmNlLlxuICpcbiAqIEFuIG9iamVjdCBpcyBhIEpTT04gUmVmZXJlbmNlIG9ubHkgaWYgdGhlIGZvbGxvd2luZyBhcmUgYWxsIHRydWU6XG4gKlxuICogICAqIFRoZSBvYmplY3QgaXMgb2YgdHlwZSBgT2JqZWN0YFxuICogICAqIFRoZSBvYmplY3QgaGFzIGEgYCRyZWZgIHByb3BlcnR5XG4gKiAgICogVGhlIGAkcmVmYCBwcm9wZXJ0eSBpcyBhIHZhbGlkIFVSSSAqKFdlIGRvIG5vdCByZXF1aXJlIDEwMCUgc3RyaWN0IFVSSXMgYW5kIHdpbGwgaGFuZGxlIHVuZXNjYXBlZCBzcGVjaWFsXG4gKiAgICAgY2hhcmFjdGVycy4pKlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmogLSBUaGUgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd1dpdGhEZXRhaWxzPWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRvIHRocm93IGFuIGBFcnJvcmAgd2l0aCB0aGUgZGV0YWlscyBhcyB0byB3aHkgdGhlIHZhbHVlXG4gKiBwcm92aWRlZCBpcyBpbnZhbGlkXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IHRoZSByZXN1bHQgb2YgdGhlIGNoZWNrXG4gKlxuICogQHRocm93cyB7ZXJyb3J9IHdoZW4gdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGludmFsaWQgYW5kIHRoZSBgdGhyb3dXaXRoRGV0YWlsc2AgYXJndW1lbnQgaXMgYHRydWVgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcGJyeWFuLXp5cC1qc29uLXJlZi0wMyNzZWN0aW9uLTN9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNlcGFyYXRpbmcgdGhlIGRpZmZlcmVudCB3YXlzIHRvIGludm9rZSBpc1JlZiBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlc1xuICogaWYgKGlzUmVmKG9iaikpIHtcbiAqICAgLy8gSGFuZGxlIGEgdmFsaWQgSlNPTiBSZWZlcmVuY2VcbiAqIH0gZWxzZSB7XG4gKiAgIC8vIEdldCB0aGUgcmVhc29uIGFzIHRvIHdoeSB0aGUgdmFsdWUgaXMgbm90IGEgSlNPTiBSZWZlcmVuY2Ugc28geW91IGNhbiBmaXgvcmVwb3J0IGl0XG4gKiAgIHRyeSB7XG4gKiAgICAgaXNSZWYoc3RyLCB0cnVlKTtcbiAqICAgfSBjYXRjaCAoZXJyKSB7XG4gKiAgICAgLy8gVGhlIGVycm9yIG1lc3NhZ2UgY29udGFpbnMgdGhlIGRldGFpbHMgYXMgdG8gd2h5IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub3QgYSBKU09OIFJlZmVyZW5jZVxuICogICB9XG4gKiB9XG4gKi9cbm1vZHVsZS5leHBvcnRzLmlzUmVmID0gZnVuY3Rpb24gKG9iaiwgdGhyb3dXaXRoRGV0YWlscykge1xuICByZXR1cm4gaXNSZWYob2JqLCB0aHJvd1dpdGhEZXRhaWxzKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzIGZvciB0aGUgcHJvdmlkZWQgSlNPTiBQb2ludGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdHIgLSBUaGUgSlNPTiBQb2ludGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ1tdfSB0aGUgcGF0aCBzZWdtZW50c1xuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgcHJvdmlkZWQgYHB0cmAgYXJndW1lbnQgaXMgbm90IGEgSlNPTiBQb2ludGVyXG4gKi9cbm1vZHVsZS5leHBvcnRzLnBhdGhGcm9tUHRyID0gZnVuY3Rpb24gKHB0cikge1xuICByZXR1cm4gcGF0aEZyb21QdHIocHRyKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gUG9pbnRlciBmb3IgdGhlIHByb3ZpZGVkIGFycmF5IG9mIHBhdGggc2VnbWVudHMuXG4gKlxuICogKipOb3RlOioqIElmIGEgcGF0aCBzZWdtZW50IGluIGBwYXRoYCBpcyBub3QgYSBgU3RyaW5nYCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gb25lIHVzaW5nIGBKU09OLnN0cmluZ2lmeWAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIFRoZSBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtoYXNoUHJlZml4PXRydWVdIC0gV2hldGhlciBvciBub3QgY3JlYXRlIGEgaGFzaC1wcmVmaXhlZCBKU09OIFBvaW50ZXJcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgY29ycmVzcG9uZGluZyBKU09OIFBvaW50ZXJcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGBwYXRoYCBhcmd1bWVudCBpcyBub3QgYW4gYXJyYXlcbiAqL1xubW9kdWxlLmV4cG9ydHMucGF0aFRvUHRyID0gZnVuY3Rpb24gKHBhdGgsIGhhc2hQcmVmaXgpIHtcbiAgcmV0dXJuIHBhdGhUb1B0cihwYXRoLCBoYXNoUHJlZml4KTtcbn07XG5cbi8qKlxuICogRmluZHMgSlNPTiBSZWZlcmVuY2VzIGRlZmluZWQgd2l0aGluIHRoZSBwcm92aWRlZCBhcnJheS9vYmplY3QgYW5kIHJlc29sdmVzIHRoZW0uXG4gKlxuICogQHBhcmFtIHthcnJheXxvYmplY3R9IG9iaiAtIFRoZSBzdHJ1Y3R1cmUgdG8gZmluZCBKU09OIFJlZmVyZW5jZXMgd2l0aGluXG4gKiBAcGFyYW0ge21vZHVsZTpqc29uLXJlZnN+SnNvblJlZnNPcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgSnNvblJlZnMgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPG1vZHVsZTpqc29uLXJlZnN+UmVzb2x2ZWRSZWZzUmVzdWx0cz59IGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGFcbiAqIHtAbGluayBtb2R1bGU6anNvbi1yZWZzflJlc29sdmVkUmVmc1Jlc3VsdHN9IGFuZCByZWplY3RzIHdpdGggYW4gYEVycm9yYCB3aGVuIHRoZSBpbnB1dCBhcmd1bWVudHMgZmFpbCB2YWxpZGF0aW9uLFxuICogd2hlbiBgb3B0aW9ucy5zdWJEb2NQYXRoYCBwb2ludHMgdG8gYW4gaW52YWxpZCBsb2NhdGlvbiBvciB3aGVuIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBwb2ludHMgdG8gYW4gdW5sb2FkYWJsZVxuICogcmVzb3VyY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB0aGF0IG9ubHkgcmVzb2x2ZXMgcmVsYXRpdmUgYW5kIHJlbW90ZSByZWZlcmVuY2VzXG4gKiBKc29uUmVmcy5yZXNvbHZlUmVmcyhzd2FnZ2VyT2JqLCB7XG4gKiAgICAgZmlsdGVyOiBbJ3JlbGF0aXZlJywgJ3JlbW90ZSddXG4gKiAgIH0pXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAqICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3BvbnNlXG4gKiAgICAgIC8vXG4gKiAgICAgIC8vIHJlcy5yZWZzOiBKU09OIFJlZmVyZW5jZSBsb2NhdGlvbnMgYW5kIGRldGFpbHNcbiAqICAgICAgLy8gcmVzLnJlc29sdmVkOiBUaGUgZG9jdW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgSlNPTiBSZWZlcmVuY2VzIHJlc29sdmVkXG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIuc3RhY2spO1xuICogICB9KTtcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVzb2x2ZVJlZnMgPSBmdW5jdGlvbiAob2JqLCBvcHRpb25zKSB7XG4gIHJldHVybiByZXNvbHZlUmVmcyhvYmosIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyBKU09OIFJlZmVyZW5jZXMgZGVmaW5lZCB3aXRoaW4gdGhlIGRvY3VtZW50IGF0IHRoZSBwcm92aWRlZCBsb2NhdGlvbi5cbiAqXG4gKiBUaGlzIEFQSSBpcyBpZGVudGljYWwgdG8ge0BsaW5rIG1vZHVsZTpqc29uLXJlZnMucmVzb2x2ZVJlZnN9IGV4Y2VwdCB0aGlzIEFQSSB3aWxsIHJldHJpZXZlIGEgcmVtb3RlIGRvY3VtZW50IGFuZFxuICogdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB7QGxpbmsgbW9kdWxlOmpzb24tcmVmcy5yZXNvbHZlUmVmc30gb24gdGhlIHJldHJpZXZlZCBkb2N1bWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gLSBUaGUgbG9jYXRpb24gdG8gcmV0cmlldmUgKihDYW4gYmUgcmVsYXRpdmUgb3IgYWJzb2x1dGUsIGp1c3QgbWFrZSBzdXJlIHlvdSBsb29rIGF0IHRoZVxuICoge0BsaW5rIG1vZHVsZTpqc29uLXJlZnN+SnNvblJlZnNPcHRpb25zfG9wdGlvbnMgZG9jdW1lbnRhdGlvbn0gdG8gc2VlIGhvdyByZWxhdGl2ZSByZWZlcmVuY2VzIGFyZSBoYW5kbGVkLikqXG4gKiBAcGFyYW0ge21vZHVsZTpqc29uLXJlZnN+SnNvblJlZnNPcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgSnNvblJlZnMgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPG1vZHVsZTpqc29uLXJlZnN+UmV0cmlldmVkUmVzb2x2ZWRSZWZzUmVzdWx0cz59IGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGFcbiAqIHtAbGluayBtb2R1bGU6anNvbi1yZWZzflJldHJpZXZlZFJlc29sdmVkUmVmc1Jlc3VsdHN9IGFuZCByZWplY3RzIHdpdGggYW4gYEVycm9yYCB3aGVuIHRoZSBpbnB1dCBhcmd1bWVudHMgZmFpbFxuICogdmFsaWRhdGlvbiwgd2hlbiBgb3B0aW9ucy5zdWJEb2NQYXRoYCBwb2ludHMgdG8gYW4gaW52YWxpZCBsb2NhdGlvbiBvciB3aGVuIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBwb2ludHMgdG8gYW5cbiAqIHVubG9hZGFibGUgcmVzb3VyY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB0aGF0IGxvYWRzIGEgSlNPTiBkb2N1bWVudCAoTm8gb3B0aW9ucy5sb2FkZXJPcHRpb25zLnByb2Nlc3NDb250ZW50IHJlcXVpcmVkKSBhbmQgcmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXNcbiAqIEpzb25SZWZzLnJlc29sdmVSZWZzQXQoJy4vc3dhZ2dlci5qc29uJylcbiAqICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICogICAgICAvLyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzcG9uc2VcbiAqICAgICAgLy9cbiAqICAgICAgLy8gcmVzLnJlZnM6IEpTT04gUmVmZXJlbmNlIGxvY2F0aW9ucyBhbmQgZGV0YWlsc1xuICogICAgICAvLyByZXMucmVzb2x2ZWQ6IFRoZSBkb2N1bWVudCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBKU09OIFJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqICAgICAgLy8gcmVzLnZhbHVlOiBUaGUgcmV0cmlldmVkIGRvY3VtZW50XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmxvZyhlcnIuc3RhY2spO1xuICogICB9KTtcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVzb2x2ZVJlZnNBdCA9IGZ1bmN0aW9uIChsb2NhdGlvbiwgb3B0aW9ucykge1xuICByZXR1cm4gcmVzb2x2ZVJlZnNBdChsb2NhdGlvbiwgb3B0aW9ucyk7XG59O1xuIiwiZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9XG5cbnZhciB0c2xpYl8xID0gcmVxdWlyZSgndHNsaWInKTtcbnZhciBSYW5kRXhwID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ3JhbmRleHAnKSk7XG52YXIgZGVyZWYgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnZGVyZWYnKSk7XG52YXIganNvbnBhdGggPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnanNvbnBhdGgnKSk7XG52YXIgJFJlZlBhcnNlciA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdqc29uLXNjaGVtYS1yZWYtcGFyc2VyJykpO1xuXG5mdW5jdGlvbiB0ZW1wbGF0ZSh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHRlbXBsYXRlKHgsIHNjaGVtYSk7IH0pO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyNcXHsoW1xcdy4tXSspXFx9L2csIGZ1bmN0aW9uIChfLCAkMSkgeyByZXR1cm4gc2NoZW1hWyQxXTsgfSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbi8vIGR5bmFtaWMgcHJveHkgZm9yIGN1c3RvbSBnZW5lcmF0b3JzXG5mdW5jdGlvbiBwcm94eShnZW4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBzY2hlbWEsIHByb3BlcnR5LCByb290U2NoZW1hKSB7XG4gICAgICAgIHZhciBmbiA9IHZhbHVlO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAvLyBzdXBwb3J0IGZvciBuZXN0ZWQgb2JqZWN0LCBmaXJzdC1rZXkgaXMgdGhlIGdlbmVyYXRvclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm4gPSBPYmplY3Qua2V5cyh2YWx1ZSlbMF07XG4gICAgICAgICAgICAvLyB0cmVhdCB0aGUgZ2l2ZW4gYXJyYXkgYXMgYXJndW1lbnRzLFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVbZm5dKSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBnZW5lcmF0b3IgaXMgZXhwZWN0aW5nIGFycmF5cyB0aGV5IHNob3VsZCBiZSBuZXN0ZWQsIGUuZy4gYFtbMSwgMiwgM10sIHRydWUsIC4uLl1gXG4gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlW2ZuXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh2YWx1ZVtmbl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHN1cHBvcnQgZm9yIGtleXBhdGhzLCBlLmcuIFwiaW50ZXJuZXQuZW1haWxcIlxuICAgICAgICB2YXIgcHJvcHMgPSBmbi5zcGxpdCgnLicpO1xuICAgICAgICAvLyByZXRyaWV2ZSBhIGZyZXNoIGRlcGVuZGVuY3lcbiAgICAgICAgdmFyIGN0eCA9IGdlbigpO1xuICAgICAgICB3aGlsZSAocHJvcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY3R4ID0gY3R4W3Byb3BzLnNoaWZ0KCldO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHJpZXZlIGxhc3QgdmFsdWUgZnJvbSBjb250ZXh0IG9iamVjdFxuICAgICAgICB2YWx1ZSA9IHR5cGVvZiBjdHggPT09ICdvYmplY3QnID8gY3R4W3Byb3BzWzBdXSA6IGN0eDtcbiAgICAgICAgLy8gaW52b2tlIGR5bmFtaWMgZ2VuZXJhdG9yc1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmFwcGx5KGN0eCwgYXJncy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHRlbXBsYXRlKHgsIHJvb3RTY2hlbWEpOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGVzdCBmb3IgcGVuZGluZyBjYWxsYmFja3NcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzb2x2ZSB2YWx1ZSBmb3IgXCInICsgcHJvcGVydHkgKyAnOiAnICsgZm4gKyAnXCIsIGdpdmVuOiAnICsgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbn1cbi8qKlxuICogQ29udGFpbmVyIGlzIHVzZWQgdG8gd3JhcCBleHRlcm5hbCBnZW5lcmF0b3JzIChmYWtlciwgY2hhbmNlLCBjYXN1YWwsIGV0Yy4pIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICpcbiAqIC0gYGpzZi5leHRlbmQoJ2Zha2VyJylgIHdpbGwgZW5oYW5jZSBvciBkZWZpbmUgdGhlIGdpdmVuIGRlcGVuZGVuY3kuXG4gKiAtIGBqc2YuZGVmaW5lKCdmYWtlcicpYCB3aWxsIHByb3ZpZGUgdGhlIFwiZmFrZXJcIiBrZXl3b3JkIHN1cHBvcnQuXG4gKlxuICogUmFuZEV4cCBpcyBub3QgbG9uZ2VyIGNvbnNpZGVyZWQgYW4gXCJleHRlbnNpb25cIi5cbiAqL1xudmFyIENvbnRhaW5lciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250YWluZXIoKSB7XG4gICAgICAgIC8vIGR5bmFtaWMgcmVxdWlyZXMgLSBoYW5kbGUgYWxsIGRlcGVuZGVuY2llc1xuICAgICAgICAvLyB0aGV5IHdpbGwgTk9UIGJlIGluY2x1ZGVkIG9uIHRoZSBidW5kbGVcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHt9O1xuICAgICAgICB0aGlzLnN1cHBvcnQgPSB7fTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVwZW5kZW5jeSBnaXZlbiBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5W25hbWVdID0gY2FsbGJhY2sodGhpcy5yZWdpc3RyeVtuYW1lXSk7XG4gICAgICAgIC8vIGJ1aWx0LWluIHByb3h5IChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICAgICAgaWYgKCF0aGlzLnN1cHBvcnRbbmFtZV0pIHtcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydFtuYW1lXSA9IHByb3h5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnJlZ2lzdHJ5W25hbWVdOyB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0IGtleXdvcmQgc3VwcG9ydCBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnN1cHBvcnRbbmFtZV0gPSBjYWxsYmFjaztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGVwZW5kZW5jeSBnaXZlbiBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcmV0dXJucyB7RGVwZW5kZW5jeX1cbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWdpc3RyeVtuYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcignXCInICsgbmFtZSArICdcIiBkZXBlbmRlbmN5IGRvZXNuXFwndCBleGlzdC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeVtuYW1lXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGEgY3VzdG9tIGtleXdvcmRcbiAgICAgKiBAcGFyYW0gc2NoZW1hXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgICB2YXIgZm4gPSBrZXlzW2xlbmd0aF0ucmVwbGFjZSgvXngtLywgJycpO1xuICAgICAgICAgICAgdmFyIGdlbiA9IHRoaXMuc3VwcG9ydFtmbl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGdlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzY2hlbWEsICdnZW5lcmF0ZScsIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIChyb290U2NoZW1hKSB7IHJldHVybiBnZW4uY2FsbChjb250ZXh0LCBzY2hlbWFba2V5c1tsZW5ndGhdXSwgc2NoZW1hLCBrZXlzW2xlbmd0aF0sIHJvb3RTY2hlbWEpOyB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyO1xufSgpKTtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGRlZmluZXMgYSByZWdpc3RyeSBmb3IgY3VzdG9tIGZvcm1hdHMgdXNlZCB3aXRoaW4gSlNGLlxuICovXG52YXIgUmVnaXN0cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVnaXN0cnkoKSB7XG4gICAgICAgIC8vIGVtcHR5IGJ5IGRlZmF1bHRcbiAgICAgICAgdGhpcy5kYXRhID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBjdXN0b20gZm9ybWF0XG4gICAgICovXG4gICAgUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IGNhbGxiYWNrO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgbWFueSBmb3JtYXRzIGF0IG9uZSBzaG90XG4gICAgICovXG4gICAgUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyTWFueSA9IGZ1bmN0aW9uIChmb3JtYXRzKSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gZm9ybWF0cykge1xuICAgICAgICAgICAgdGhpcy5kYXRhW25hbWVdID0gZm9ybWF0c1tuYW1lXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBlbGVtZW50IGJ5IHJlZ2lzdHJ5IGtleVxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5kYXRhW25hbWVdO1xuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgd2hvbGUgcmVnaXN0cnkgY29udGVudFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5saXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH07XG4gICAgcmV0dXJuIFJlZ2lzdHJ5O1xufSgpKTtcblxuLy8gaW5zdGFudGlhdGVcbnZhciByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpO1xuLyoqXG4gKiBDdXN0b20gZm9ybWF0IEFQSVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzXG4gKiBAcGFyYW0gbmFtZU9yRm9ybWF0TWFwXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFQSShuYW1lT3JGb3JtYXRNYXAsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JGb3JtYXRNYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeS5saXN0KCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBuYW1lT3JGb3JtYXRNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKG5hbWVPckZvcm1hdE1hcCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldChuYW1lT3JGb3JtYXRNYXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZWdpc3RyeS5yZWdpc3Rlck1hbnkobmFtZU9yRm9ybWF0TWFwKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcmVnaXN0cnkgZm9yIGN1c3RvbSBzZXR0aW5ncyB1c2VkIHdpdGhpbiBKU0YuXG4gKi9cbnZhciBPcHRpb25SZWdpc3RyeSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICB0c2xpYl8xLl9fZXh0ZW5kcyhPcHRpb25SZWdpc3RyeSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcHRpb25SZWdpc3RyeSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGF0YSA9IF90aGlzLmRlZmF1bHRzO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPcHRpb25SZWdpc3RyeS5wcm90b3R5cGUsIFwiZGVmYXVsdHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhID0ge307XG4gICAgICAgICAgICBkYXRhWydkZWZhdWx0SW52YWxpZFR5cGVQcm9kdWN0J10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsnZGVmYXVsdFJhbmRFeHBNYXgnXSA9IDEwO1xuICAgICAgICAgICAgZGF0YVsnaWdub3JlUHJvcGVydGllcyddID0gW107XG4gICAgICAgICAgICBkYXRhWydpZ25vcmVNaXNzaW5nUmVmcyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydmYWlsT25JbnZhbGlkVHlwZXMnXSA9IHRydWU7XG4gICAgICAgICAgICBkYXRhWydmYWlsT25JbnZhbGlkRm9ybWF0J10gPSB0cnVlO1xuICAgICAgICAgICAgZGF0YVsnYWx3YXlzRmFrZU9wdGlvbmFscyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydvcHRpb25hbHNQcm9iYWJpbGl0eSddID0gMC4wO1xuICAgICAgICAgICAgZGF0YVsndXNlRGVmYXVsdFZhbHVlJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGFbJ3JlcXVpcmVkT25seSddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydtaW5JdGVtcyddID0gMDtcbiAgICAgICAgICAgIGRhdGFbJ21heEl0ZW1zJ10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsnbWF4TGVuZ3RoJ10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsncmVzb2x2ZUpzb25QYXRoJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGFbJ3JldXNlUHJvcGVydGllcyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydmaWxsUHJvcGVydGllcyddID0gdHJ1ZTtcbiAgICAgICAgICAgIGRhdGFbJ3JhbmRvbSddID0gTWF0aC5yYW5kb207XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIE9wdGlvblJlZ2lzdHJ5O1xufShSZWdpc3RyeSkpO1xuXG4vLyBpbnN0YW50aWF0ZVxudmFyIHJlZ2lzdHJ5JDEgPSBuZXcgT3B0aW9uUmVnaXN0cnkoKTtcbi8qKlxuICogQ3VzdG9tIG9wdGlvbiBBUElcbiAqXG4gKiBAcGFyYW0gbmFtZU9yT3B0aW9uTWFwXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBvcHRpb25BUEkobmFtZU9yT3B0aW9uTWFwKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JPcHRpb25NYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeSQxLmdldChuYW1lT3JPcHRpb25NYXApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5JDEucmVnaXN0ZXJNYW55KG5hbWVPck9wdGlvbk1hcCk7XG4gICAgfVxufVxub3B0aW9uQVBJLmdldERlZmF1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVnaXN0cnkkMS5kZWZhdWx0czsgfTtcblxudmFyIEFMTF9UWVBFUyA9IFsnYXJyYXknLCAnb2JqZWN0JywgJ2ludGVnZXInLCAnbnVtYmVyJywgJ3N0cmluZycsICdib29sZWFuJywgJ251bGwnXTtcbnZhciBNT1NUX05FQVJfREFURVRJTUUgPSAyNTI0NjA4MDAwMDAwO1xudmFyIE1JTl9JTlRFR0VSID0gLTEwMDAwMDAwMDtcbnZhciBNQVhfSU5URUdFUiA9IDEwMDAwMDAwMDtcbnZhciBNSU5fTlVNQkVSID0gLTEwMDtcbnZhciBNQVhfTlVNQkVSID0gMTAwO1xudmFyIGVudiA9IHtcbiAgICBBTExfVFlQRVM6IEFMTF9UWVBFUyxcbiAgICBNSU5fTlVNQkVSOiBNSU5fTlVNQkVSLFxuICAgIE1BWF9OVU1CRVI6IE1BWF9OVU1CRVIsXG4gICAgTUlOX0lOVEVHRVI6IE1JTl9JTlRFR0VSLFxuICAgIE1BWF9JTlRFR0VSOiBNQVhfSU5URUdFUixcbiAgICBNT1NUX05FQVJfREFURVRJTUU6IE1PU1RfTkVBUl9EQVRFVElNRSxcbn07XG5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9pbmRleC5kLnRzXCIgLz5cbmZ1bmN0aW9uIF9yYW5kZXhwKHZhbHVlKSB7XG4gICAgLy8gc2V0IG1heGltdW0gZGVmYXVsdCwgc2VlICMxOTNcbiAgICBSYW5kRXhwLnByb3RvdHlwZS5tYXggPSBvcHRpb25BUEkoJ2RlZmF1bHRSYW5kRXhwTWF4Jyk7XG4gICAgLy8gc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgb3JpZ2luYWwgZXhjZXB0IHVzaW5nIG91ciByYW5kb21cbiAgICBSYW5kRXhwLnByb3RvdHlwZS5yYW5kSW50ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgKyBNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqICgxICsgYiAtIGEpKTtcbiAgICB9O1xuICAgIHZhciByZSA9IG5ldyBSYW5kRXhwKHZhbHVlKTtcbiAgICByZXR1cm4gcmUuZ2VuKCk7XG59XG4vKipcbiAqIFJldHVybnMgcmFuZG9tIGVsZW1lbnQgb2YgYSBjb2xsZWN0aW9uXG4gKlxuICogQHBhcmFtIGNvbGxlY3Rpb25cbiAqIEByZXR1cm5zIHtUfVxuICovXG5mdW5jdGlvbiBwaWNrKGNvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbltNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIGNvbGxlY3Rpb24ubGVuZ3RoKV07XG59XG4vKipcbiAqIFJldHVybnMgc2h1ZmZsZWQgY29sbGVjdGlvbiBvZiBlbGVtZW50c1xuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJucyB7VFtdfVxuICovXG5mdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgdG1wLCBrZXksIGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKCksIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgIGZvciAoOyBsZW5ndGggPiAwOykge1xuICAgICAgICBrZXkgPSBNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIGxlbmd0aCk7XG4gICAgICAgIC8vIHN3YXBcbiAgICAgICAgdG1wID0gY29weVstLWxlbmd0aF07XG4gICAgICAgIGNvcHlbbGVuZ3RoXSA9IGNvcHlba2V5XTtcbiAgICAgICAgY29weVtrZXldID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn1cbi8qKlxuICogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIChpbmNsdXNpdmUpIGFuZCBtYXggKGluY2x1c2l2ZSlcbiAqIFVzaW5nIE1hdGgucm91bmQoKSB3aWxsIGdpdmUgeW91IGEgbm9uLXVuaWZvcm0gZGlzdHJpYnV0aW9uIVxuICogQHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNTI3ODIwLzc2OTM4NFxuICovXG5mdW5jdGlvbiBnZXRSYW5kb20obWluLCBtYXgpIHtcbiAgICByZXR1cm4gb3B0aW9uQVBJKCdyYW5kb20nKSgpICogKG1heCAtIG1pbikgKyBtaW47XG59XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb20gbnVtYmVyIGFjY29yZGluZyB0byBwYXJhbWV0ZXJzIHBhc3NlZFxuICpcbiAqIEBwYXJhbSBtaW5cbiAqIEBwYXJhbSBtYXhcbiAqIEBwYXJhbSBkZWZNaW5cbiAqIEBwYXJhbSBkZWZNYXhcbiAqIEBwYXJhbSBoYXNQcmVjaXNpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIG51bWJlcihtaW4sIG1heCwgZGVmTWluLCBkZWZNYXgsIGhhc1ByZWNpc2lvbikge1xuICAgIGlmIChoYXNQcmVjaXNpb24gPT09IHZvaWQgMCkgeyBoYXNQcmVjaXNpb24gPSBmYWxzZTsgfVxuICAgIGRlZk1pbiA9IHR5cGVvZiBkZWZNaW4gPT09ICd1bmRlZmluZWQnID8gZW52Lk1JTl9OVU1CRVIgOiBkZWZNaW47XG4gICAgZGVmTWF4ID0gdHlwZW9mIGRlZk1heCA9PT0gJ3VuZGVmaW5lZCcgPyBlbnYuTUFYX05VTUJFUiA6IGRlZk1heDtcbiAgICBtaW4gPSB0eXBlb2YgbWluID09PSAndW5kZWZpbmVkJyA/IGRlZk1pbiA6IG1pbjtcbiAgICBtYXggPSB0eXBlb2YgbWF4ID09PSAndW5kZWZpbmVkJyA/IGRlZk1heCA6IG1heDtcbiAgICBpZiAobWF4IDwgbWluKSB7XG4gICAgICAgIG1heCArPSBtaW47XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBnZXRSYW5kb20obWluLCBtYXgpO1xuICAgIGlmICghaGFzUHJlY2lzaW9uKSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBieSh0eXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigwLCA2MCkgKiA2MDtcbiAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDE1LCA1MCkgKiA2MTI7XG4gICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMTIsIDcyKSAqIDM2MTIzO1xuICAgICAgICBjYXNlICdkYXlzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoNywgMzApICogODY0MTIzNDU7XG4gICAgICAgIGNhc2UgJ3dlZWtzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoNCwgNTIpICogNjA0ODEyMzQ1O1xuICAgICAgICBjYXNlICdtb250aHMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigyLCAxMykgKiAyNTkyMDEyMzQ1O1xuICAgICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDEsIDIwKSAqIDMxMTA0MDEyMzQ1O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRhdGUoc3RlcCkge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICAgIHJldHVybiBieShzdGVwKTtcbiAgICB9XG4gICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgdmFyIGRheXMgPSBudW1iZXIoLTEwMDAsIGVudi5NT1NUX05FQVJfREFURVRJTUUpO1xuICAgIG5vdy5zZXRUaW1lKG5vdy5nZXRUaW1lKCkgLSBkYXlzKTtcbiAgICByZXR1cm4gbm93O1xufVxudmFyIHJhbmRvbSA9IHtcbiAgICBwaWNrOiBwaWNrLFxuICAgIGRhdGU6IGRhdGUsXG4gICAgcmFuZGV4cDogX3JhbmRleHAsXG4gICAgc2h1ZmZsZTogc2h1ZmZsZSxcbiAgICBudW1iZXI6IG51bWJlcixcbn07XG5cbmZ1bmN0aW9uIGdldFN1YkF0dHJpYnV0ZShvYmosIGRvdFNlcGFyYXRlZEtleSkge1xuICAgIHZhciBrZXlFbGVtZW50cyA9IGRvdFNlcGFyYXRlZEtleS5zcGxpdCgnLicpO1xuICAgIHdoaWxlIChrZXlFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHByb3AgPSBrZXlFbGVtZW50cy5zaGlmdCgpO1xuICAgICAgICBpZiAoIW9ialtwcm9wXSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgb2JqID0gb2JqW3Byb3BdO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUvZmFsc2Ugd2hldGhlciB0aGUgb2JqZWN0IHBhcmFtZXRlciBoYXMgaXRzIG93biBwcm9wZXJ0aWVzIGRlZmluZWRcbiAqXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gcHJvcGVydGllc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGhhc1Byb3BlcnRpZXMob2JqKSB7XG4gICAgdmFyIHByb3BlcnRpZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBwcm9wZXJ0aWVzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9ialtrZXldICE9PSAndW5kZWZpbmVkJztcbiAgICB9KS5sZW5ndGggPiAwO1xufVxuLyoqXG4gKiBSZXR1cm5zIHR5cGVjYXN0ZWQgdmFsdWUuXG4gKiBFeHRlcm5hbCBnZW5lcmF0b3JzIChmYWtlciwgY2hhbmNlLCBjYXN1YWwpIG1heSByZXR1cm4gZGF0YSBpbiBub24tZXhwZWN0ZWQgZm9ybWF0cywgc3VjaCBhcyBzdHJpbmcsIHdoZW4geW91IG1pZ2h0IGV4cGVjdCBhblxuICogaW50ZWdlci4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZvcmNlIHRoZSB0eXBlY2FzdC4gVGhpcyBpcyB0aGUgYmFzZSBmb3JtYXR0ZXIgZm9yIGFsbCByZXN1bHQgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBzY2hlbWFcbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gdHlwZWNhc3Qoc2NoZW1hLCBjYWxsYmFjaykge1xuICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICAvLyBub3JtYWxpemUgY29uc3RyYWludHNcbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWluaW11bSA9IHNjaGVtYS5taW5pbXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWF4aW11bSA9IHNjaGVtYS5tYXhpbXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGgubWF4KHBhcmFtcy5taW5pbXVtIHx8IDAsIDApO1xuICAgICAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1pbihwYXJhbXMubWF4aW11bSB8fCBJbmZpbml0eSwgSW5maW5pdHkpO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAmJiBtaW4gPT09IHNjaGVtYS5taW5pbXVtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiArPSBzY2hlbWEubXVsdGlwbGVPZiB8fCAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gJiYgbWF4ID09PSBzY2hlbWEubWF4aW11bSkge1xuICAgICAgICAgICAgICAgICAgICBtYXggLT0gc2NoZW1hLm11bHRpcGxlT2YgfHwgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCBvdXQtb2YtYm91bmRzIGVudW1lcmF0aW9uc1xuICAgICAgICAgICAgICAgIHNjaGVtYS5lbnVtID0gc2NoZW1hLmVudW0uZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4ID49IG1pbiAmJiB4IDw9IG1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5MZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbkxlbmd0aCA9IHNjaGVtYS5taW5MZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhMZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1heExlbmd0aCA9IHNjaGVtYS5tYXhMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX21heExlbmd0aCA9IG9wdGlvbkFQSSgnbWF4TGVuZ3RoJyk7XG4gICAgICAgICAgICB2YXIgX21pbkxlbmd0aCA9IG9wdGlvbkFQSSgnbWluTGVuZ3RoJyk7XG4gICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtYXggbGVuZ3RoIGFib3ZlIG91ciBtYXhpbXVtXG4gICAgICAgICAgICBpZiAoX21heExlbmd0aCAmJiBwYXJhbXMubWF4TGVuZ3RoID4gX21heExlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXhMZW5ndGggPSBfbWF4TGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdXNlciB0byBzZXQgbWluIGxlbmd0aCBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICAgICAgaWYgKF9taW5MZW5ndGggJiYgcGFyYW1zLm1pbkxlbmd0aCA8IF9taW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWluTGVuZ3RoID0gX21pbkxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBleGVjdXRlIGdlbmVyYXRvclxuICAgIHZhciB2YWx1ZSA9IGNhbGxiYWNrKHBhcmFtcyk7XG4gICAgLy8gbm9ybWFsaXplIG91dHB1dCB2YWx1ZVxuICAgIHN3aXRjaCAoc2NoZW1hLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICB2YWx1ZSA9ICEhdmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1heChwYXJhbXMubWluTGVuZ3RoIHx8IDAsIDApO1xuICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWluKHBhcmFtcy5tYXhMZW5ndGggfHwgSW5maW5pdHksIEluZmluaXR5KTtcbiAgICAgICAgICAgIHdoaWxlICh2YWx1ZS5sZW5ndGggPCBtaW4pIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnICcgKyB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiBtYXgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCBtYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gYikge1xuICAgICAgICBpZiAodHlwZW9mIGJba2V5XSAhPT0gJ29iamVjdCcgfHwgYltrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBhW2tleV0gPSBiW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShiW2tleV0pKSB7XG4gICAgICAgICAgICBhW2tleV0gPSBhW2tleV0gfHwgW107XG4gICAgICAgICAgICAvLyBmaXggIzI5MiAtIHNraXAgZHVwbGljYXRlZCB2YWx1ZXMgZnJvbSBtZXJnZSBvYmplY3QgKGIpXG4gICAgICAgICAgICBiW2tleV0uZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoYVtrZXldLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBhW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGFba2V5XSAhPT0gJ29iamVjdCcgfHwgYVtrZXldID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoYVtrZXldKSkge1xuICAgICAgICAgICAgYVtrZXldID0gbWVyZ2Uoe30sIGJba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhW2tleV0gPSBtZXJnZShhW2tleV0sIGJba2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG59XG5mdW5jdGlvbiBjbGVhbihvYmosIGlzQXJyYXksIHJlcXVpcmVkUHJvcHMpIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iaiA9IG9ialxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGNsZWFuKHZhbHVlLCB0cnVlLCByZXF1aXJlZFByb3BzKTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnOyB9KTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIGlmICghcmVxdWlyZWRQcm9wcyB8fCByZXF1aXJlZFByb3BzLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba10pICYmICFvYmpba10ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9ialtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9ialtrXSA9IGNsZWFuKG9ialtrXSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIU9iamVjdC5rZXlzKG9iaikubGVuZ3RoICYmIGlzQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cbmZ1bmN0aW9uIHNob3J0KHNjaGVtYSkge1xuICAgIHZhciBzID0gSlNPTi5zdHJpbmdpZnkoc2NoZW1hKTtcbiAgICB2YXIgbCA9IEpTT04uc3RyaW5naWZ5KHNjaGVtYSwgbnVsbCwgMik7XG4gICAgcmV0dXJuIHMubGVuZ3RoID4gNDAwID8gbC5zdWJzdHIoMCwgNDAwKSArICcuLi4nIDogbDtcbn1cbmZ1bmN0aW9uIGFueVZhbHVlKCkge1xuICAgIHJldHVybiByYW5kb20ucGljayhbXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICBudWxsLFxuICAgICAgICAtMSxcbiAgICAgICAgTmFOLFxuICAgICAgICBNYXRoLlBJLFxuICAgICAgICBJbmZpbml0eSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBbXSxcbiAgICAgICAge30sXG4gICAgICAgIE1hdGgucmFuZG9tKCksXG4gICAgICAgIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKSxcbiAgICBdKTtcbn1cbmZ1bmN0aW9uIG5vdFZhbHVlKHNjaGVtYSwgcGFyZW50KSB7XG4gICAgdmFyIGNvcHkgPSBtZXJnZSh7fSwgcGFyZW50KTtcbiAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5pbXVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb3B5Lm1heGltdW0gPSBzY2hlbWEubWluaW11bTtcbiAgICAgICAgY29weS5leGNsdXNpdmVNYXhpbXVtID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5taW5pbXVtID0gc2NoZW1hLm1heGltdW0gPiBjb3B5Lm1heGltdW0gPyAwIDogc2NoZW1hLm1heGltdW07XG4gICAgICAgIGNvcHkuZXhjbHVzaXZlTWluaW11bSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1pbkxlbmd0aCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5tYXhMZW5ndGggPSBzY2hlbWEubWluTGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhMZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWluTGVuZ3RoID0gc2NoZW1hLm1heExlbmd0aCA+IGNvcHkubWF4TGVuZ3RoID8gMCA6IHNjaGVtYS5tYXhMZW5ndGg7XG4gICAgfVxuICAgIGlmIChzY2hlbWEudHlwZSkge1xuICAgICAgICBjb3B5LnR5cGUgPSByYW5kb20ucGljayhlbnYuQUxMX1RZUEVTLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgLy8gdHJlYXQgYm90aCB0eXBlcyBhcyBfc2ltaWxhciBlbm91Z2hfIHRvIGJlIHNraXBwZWQgZXF1YWxcbiAgICAgICAgICAgIGlmICh4ID09PSAnbnVtYmVyJyB8fCB4ID09PSAnaW50ZWdlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hLnR5cGUgIT09ICdudW1iZXInICYmIHNjaGVtYS50eXBlICE9PSAnaW50ZWdlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gc2NoZW1hLnR5cGU7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2NoZW1hLmVudW0pIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gYW55VmFsdWUoKTtcbiAgICAgICAgfSB3aGlsZSAoc2NoZW1hLmVudW0uaW5kZXhPZih2YWx1ZSkgIT09IC0xKTtcbiAgICAgICAgY29weS5lbnVtID0gW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5yZXF1aXJlZCAmJiBjb3B5LnByb3BlcnRpZXMpIHtcbiAgICAgICAgc2NoZW1hLnJlcXVpcmVkLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb3B5LnByb3BlcnRpZXNbcHJvcF07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBUT0RPOiBleHBsb3JlIG1vcmUgc2NlbmFyaW9zXG4gICAgcmV0dXJuIGNvcHk7XG59XG4vLyBGSVhNRTogZXZhbHVhdGUgbW9yZSBjb25zdHJhaW50cz9cbmZ1bmN0aW9uIHZhbGlkYXRlKHZhbHVlLCBzY2hlbWFzKSB7XG4gICAgcmV0dXJuICFzY2hlbWFzLmV2ZXJ5KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIGlmICh0eXBlb2YgeC5taW5pbXVtICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA+PSB4Lm1pbmltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgeC5tYXhpbXVtICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA8PSB4Lm1heGltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0tleShwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AgPT09ICdlbnVtJyB8fCBwcm9wID09PSAnZGVmYXVsdCcgfHwgcHJvcCA9PT0gJ3JlcXVpcmVkJyB8fCBwcm9wID09PSAnZGVmaW5pdGlvbnMnO1xufVxuZnVuY3Rpb24gb21pdFByb3BzKG9iaiwgcHJvcHMpIHtcbiAgICB2YXIgY29weSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAocHJvcHMuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgICAgICAgICBjb3B5W2tdID0gb2JqW2tdLnNsaWNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb3B5W2tdID0gdHlwZW9mIG9ialtrXSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgPyBtZXJnZSh7fSwgb2JqW2tdKVxuICAgICAgICAgICAgICAgICAgICA6IG9ialtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3B5O1xufVxudmFyIHV0aWxzID0ge1xuICAgIGdldFN1YkF0dHJpYnV0ZTogZ2V0U3ViQXR0cmlidXRlLFxuICAgIGhhc1Byb3BlcnRpZXM6IGhhc1Byb3BlcnRpZXMsXG4gICAgb21pdFByb3BzOiBvbWl0UHJvcHMsXG4gICAgdHlwZWNhc3Q6IHR5cGVjYXN0LFxuICAgIG1lcmdlOiBtZXJnZSxcbiAgICBjbGVhbjogY2xlYW4sXG4gICAgc2hvcnQ6IHNob3J0LFxuICAgIG5vdFZhbHVlOiBub3RWYWx1ZSxcbiAgICBhbnlWYWx1ZTogYW55VmFsdWUsXG4gICAgdmFsaWRhdGU6IHZhbGlkYXRlLFxuICAgIGlzS2V5OiBpc0tleSxcbn07XG5cbnZhciBQYXJzZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHRzbGliXzEuX19leHRlbmRzKFBhcnNlRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGFyc2VFcnJvcihtZXNzYWdlLCBwYXRoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKF90aGlzLCBfdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMubmFtZSA9ICdQYXJzZUVycm9yJztcbiAgICAgICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIF90aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBQYXJzZUVycm9yO1xufShFcnJvcikpO1xuXG52YXIgaW5mZXJyZWRQcm9wZXJ0aWVzID0ge1xuICAgIGFycmF5OiBbXG4gICAgICAgICdhZGRpdGlvbmFsSXRlbXMnLFxuICAgICAgICAnaXRlbXMnLFxuICAgICAgICAnbWF4SXRlbXMnLFxuICAgICAgICAnbWluSXRlbXMnLFxuICAgICAgICAndW5pcXVlSXRlbXMnXG4gICAgXSxcbiAgICBpbnRlZ2VyOiBbXG4gICAgICAgICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgICAgICAgJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAgICAgICAnbWF4aW11bScsXG4gICAgICAgICdtaW5pbXVtJyxcbiAgICAgICAgJ211bHRpcGxlT2YnXG4gICAgXSxcbiAgICBvYmplY3Q6IFtcbiAgICAgICAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgICAgICAgJ2RlcGVuZGVuY2llcycsXG4gICAgICAgICdtYXhQcm9wZXJ0aWVzJyxcbiAgICAgICAgJ21pblByb3BlcnRpZXMnLFxuICAgICAgICAncGF0dGVyblByb3BlcnRpZXMnLFxuICAgICAgICAncHJvcGVydGllcycsXG4gICAgICAgICdyZXF1aXJlZCdcbiAgICBdLFxuICAgIHN0cmluZzogW1xuICAgICAgICAnbWF4TGVuZ3RoJyxcbiAgICAgICAgJ21pbkxlbmd0aCcsXG4gICAgICAgICdwYXR0ZXJuJ1xuICAgIF1cbn07XG5pbmZlcnJlZFByb3BlcnRpZXMubnVtYmVyID0gaW5mZXJyZWRQcm9wZXJ0aWVzLmludGVnZXI7XG52YXIgc3Vic2NoZW1hUHJvcGVydGllcyA9IFtcbiAgICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgICAnaXRlbXMnLFxuICAgICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICAgJ2RlcGVuZGVuY2llcycsXG4gICAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgICAncHJvcGVydGllcydcbl07XG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIGtleXMgb2YgYG9iamAgYW5kOlxuICogLSBjaGVja3Mgd2hldGhlciB0aG9zZSBrZXlzIG1hdGNoIHByb3BlcnRpZXMgb2YgYSBnaXZlbiBpbmZlcnJlZCB0eXBlXG4gKiAtIG1ha2VzIHN1cmUgdGhhdCBgb2JqYCBpcyBub3QgYSBzdWJzY2hlbWE7IF9EbyBub3QgYXR0ZW1wdCB0byBpbmZlciBwcm9wZXJ0aWVzIG5hbWVkIGFzIHN1YnNjaGVtYSBjb250YWluZXJzLiBUaGVcbiAqIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGFueSBwcm9wZXJ0eSBuYW1lIHdpdGhpbiB0aG9zZSBjb250YWluZXJzIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlIHByb3BlcnRpZXMgdXNlZCBmb3JcbiAqIGluZmVycmluZyBtaXNzaW5nIHR5cGUgdmFsdWVzIGNhdXNlcyB0aGUgY29udGFpbmVyIGl0c2VsZiB0byBnZXQgcHJvY2Vzc2VkIHdoaWNoIGxlYWRzIHRvIGludmFsaWQgb3V0cHV0LiAoSXNzdWUgNjIpX1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBtYXRjaGVzVHlwZShvYmosIGxhc3RFbGVtZW50SW5QYXRoLCBpbmZlcnJlZFR5cGVQcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIHZhciBpc1N1YnNjaGVtYSA9IHN1YnNjaGVtYVByb3BlcnRpZXMuaW5kZXhPZihsYXN0RWxlbWVudEluUGF0aCkgPiAtMSwgaW5mZXJyZWRQcm9wZXJ0eUZvdW5kID0gaW5mZXJyZWRUeXBlUHJvcGVydGllcy5pbmRleE9mKHByb3ApID4gLTE7XG4gICAgICAgIGlmIChpbmZlcnJlZFByb3BlcnR5Rm91bmQgJiYgIWlzU3Vic2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pLmxlbmd0aCA+IDA7XG59XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIGBvYmpgIHR5cGUgbWlnaHQgYmUgaW5mZXJyZWQuIFRoZSBtZWNoYW5pc20gaXRlcmF0ZXMgdGhyb3VnaCBhbGwgaW5mZXJyZWQgdHlwZXMgZGVmaW5pdGlvbnMsXG4gKiB0cmllcyB0byBtYXRjaCBhbGxvd2VkIHByb3BlcnRpZXMgd2l0aCBwcm9wZXJ0aWVzIG9mIGdpdmVuIGBvYmpgLiBSZXR1cm5zIHR5cGUgbmFtZSwgaWYgaW5mZXJyZWQsIG9yIG51bGwuXG4gKlxuICogQHJldHVybnMge3N0cmluZ3xudWxsfVxuICovXG5mdW5jdGlvbiBpbmZlclR5cGUob2JqLCBzY2hlbWFQYXRoKSB7XG4gICAgZm9yICh2YXIgdHlwZU5hbWUgaW4gaW5mZXJyZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhciBsYXN0RWxlbWVudEluUGF0aCA9IHNjaGVtYVBhdGhbc2NoZW1hUGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKG1hdGNoZXNUeXBlKG9iaiwgbGFzdEVsZW1lbnRJblBhdGgsIGluZmVycmVkUHJvcGVydGllc1t0eXBlTmFtZV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgYm9vbGVhbiB2YWx1ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gYm9vbGVhbkdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gb3B0aW9uQVBJKCdyYW5kb20nKSgpID4gMC41O1xufVxuXG52YXIgYm9vbGVhblR5cGUgPSBib29sZWFuR2VuZXJhdG9yO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBudWxsIHZhbHVlLlxuICpcbiAqIEByZXR1cm5zIHtudWxsfVxuICovXG5mdW5jdGlvbiBudWxsR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBudWxsO1xufVxuXG52YXIgbnVsbFR5cGUgPSBudWxsR2VuZXJhdG9yO1xuXG4vLyBUT0RPIHByb3ZpZGUgdHlwZXNcbmZ1bmN0aW9uIHVuaXF1ZShwYXRoLCBpdGVtcywgdmFsdWUsIHNhbXBsZSwgcmVzb2x2ZSwgdHJhdmVyc2VDYWxsYmFjaykge1xuICAgIHZhciB0bXAgPSBbXSwgc2VlbiA9IFtdO1xuICAgIGZ1bmN0aW9uIHdhbGsob2JqKSB7XG4gICAgICAgIHZhciBqc29uID0gSlNPTi5zdHJpbmdpZnkob2JqKTtcbiAgICAgICAgaWYgKHNlZW4uaW5kZXhPZihqc29uKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChqc29uKTtcbiAgICAgICAgICAgIHRtcC5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXRlbXMuZm9yRWFjaCh3YWxrKTtcbiAgICAvLyBUT0RPOiBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uP1xuICAgIHZhciBsaW1pdCA9IDEwMDtcbiAgICB3aGlsZSAodG1wLmxlbmd0aCAhPT0gaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHdhbGsodHJhdmVyc2VDYWxsYmFjayh2YWx1ZS5pdGVtcyB8fCBzYW1wbGUsIHBhdGgsIHJlc29sdmUpKTtcbiAgICAgICAgaWYgKCFsaW1pdC0tKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG1wO1xufVxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG52YXIgYXJyYXlUeXBlID0gZnVuY3Rpb24gYXJyYXlUeXBlKHZhbHVlLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKSB7XG4gICAgdmFyIGl0ZW1zID0gW107XG4gICAgaWYgKCEodmFsdWUuaXRlbXMgfHwgdmFsdWUuYWRkaXRpb25hbEl0ZW1zKSkge1xuICAgICAgICBpZiAodXRpbHMuaGFzUHJvcGVydGllcyh2YWx1ZSwgJ21pbkl0ZW1zJywgJ21heEl0ZW1zJywgJ3VuaXF1ZUl0ZW1zJykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdtaXNzaW5nIGl0ZW1zIGZvciAnICsgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIC8vIHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zODM1NTIyOC83NjkzODRcbiAgICAvLyBhZnRlciB0eXBlIGd1YXJkcyBzdXBwb3J0IHN1YnByb3BlcnRpZXMgKGluIFRTIDIuMCkgd2UgY2FuIHNpbXBsaWZ5IGJlbG93IHRvICh2YWx1ZS5pdGVtcyBpbnN0YW5jZW9mIEFycmF5KVxuICAgIC8vIHNvIHRoYXQgdmFsdWUuaXRlbXMubWFwIGJlY29tZXMgcmVjb2duaXplZCBmb3IgdHlwZXNjcmlwdCBjb21waWxlclxuICAgIHZhciB0bXBJdGVtcyA9IHZhbHVlLml0ZW1zO1xuICAgIGlmICh0bXBJdGVtcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoaXRlbXMsIHRtcEl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSwga2V5KSB7XG4gICAgICAgICAgICB2YXIgaXRlbVN1YnBhdGggPSBwYXRoLmNvbmNhdChbJ2l0ZW1zJywga2V5ICsgJyddKTtcbiAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUNhbGxiYWNrKGl0ZW0sIGl0ZW1TdWJwYXRoLCByZXNvbHZlKTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICB2YXIgbWluSXRlbXMgPSB2YWx1ZS5taW5JdGVtcztcbiAgICB2YXIgbWF4SXRlbXMgPSB2YWx1ZS5tYXhJdGVtcztcbiAgICBpZiAob3B0aW9uQVBJKCdtaW5JdGVtcycpICYmIG1pbkl0ZW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZml4IGJvdW5kYXJpZXNcbiAgICAgICAgbWluSXRlbXMgPSAhbWF4SXRlbXNcbiAgICAgICAgICAgID8gb3B0aW9uQVBJKCdtaW5JdGVtcycpXG4gICAgICAgICAgICA6IE1hdGgubWluKG9wdGlvbkFQSSgnbWluSXRlbXMnKSwgbWF4SXRlbXMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1heCBpdGVtcyBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICBpZiAobWF4SXRlbXMgJiYgbWF4SXRlbXMgPiBvcHRpb25BUEkoJ21heEl0ZW1zJykpIHtcbiAgICAgICAgICAgIG1heEl0ZW1zID0gb3B0aW9uQVBJKCdtYXhJdGVtcycpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1pbiBpdGVtcyBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICBpZiAobWluSXRlbXMgJiYgbWluSXRlbXMgPiBvcHRpb25BUEkoJ21heEl0ZW1zJykpIHtcbiAgICAgICAgICAgIG1pbkl0ZW1zID0gbWF4SXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9wdGlvbmFsc1Byb2JhYmlsaXR5ID0gb3B0aW9uQVBJKCdhbHdheXNGYWtlT3B0aW9uYWxzJykgPT09IHRydWUgPyAxLjAgOiBvcHRpb25BUEkoJ29wdGlvbmFsc1Byb2JhYmlsaXR5Jyk7XG4gICAgdmFyIGxlbmd0aCA9IChtYXhJdGVtcyAhPSBudWxsICYmIG9wdGlvbmFsc1Byb2JhYmlsaXR5KVxuICAgICAgICA/IE1hdGgucm91bmQobWF4SXRlbXMgKiBvcHRpb25hbHNQcm9iYWJpbGl0eSlcbiAgICAgICAgOiByYW5kb20ubnVtYmVyKG1pbkl0ZW1zLCBtYXhJdGVtcywgMSwgNSksIFxuICAgIC8vIFRPRE8gYmVsb3cgbG9va3MgYmFkLiBTaG91bGQgYWRkaXRpb25hbEl0ZW1zIGJlIGNvcGllZCBhcy1pcz9cbiAgICBzYW1wbGUgPSB0eXBlb2YgdmFsdWUuYWRkaXRpb25hbEl0ZW1zID09PSAnb2JqZWN0JyA/IHZhbHVlLmFkZGl0aW9uYWxJdGVtcyA6IHt9O1xuICAgIGZvciAodmFyIGN1cnJlbnQgPSBpdGVtcy5sZW5ndGg7IGN1cnJlbnQgPCBsZW5ndGg7IGN1cnJlbnQrKykge1xuICAgICAgICB2YXIgaXRlbVN1YnBhdGggPSBwYXRoLmNvbmNhdChbJ2l0ZW1zJywgY3VycmVudCArICcnXSk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdHJhdmVyc2VDYWxsYmFjayh2YWx1ZS5pdGVtcyB8fCBzYW1wbGUsIGl0ZW1TdWJwYXRoLCByZXNvbHZlKTtcbiAgICAgICAgaXRlbXMucHVzaChlbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnVuaXF1ZUl0ZW1zKSB7XG4gICAgICAgIHJldHVybiB1bmlxdWUocGF0aC5jb25jYXQoWydpdGVtcyddKSwgaXRlbXMsIHZhbHVlLCBzYW1wbGUsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG59O1xuXG52YXIgbnVtYmVyVHlwZSA9IGZ1bmN0aW9uIG51bWJlclR5cGUodmFsdWUpIHtcbiAgICB2YXIgbWluID0gdHlwZW9mIHZhbHVlLm1pbmltdW0gPT09ICd1bmRlZmluZWQnID8gZW52Lk1JTl9JTlRFR0VSIDogdmFsdWUubWluaW11bSwgbWF4ID0gdHlwZW9mIHZhbHVlLm1heGltdW0gPT09ICd1bmRlZmluZWQnID8gZW52Lk1BWF9JTlRFR0VSIDogdmFsdWUubWF4aW11bSwgbXVsdGlwbGVPZiA9IHZhbHVlLm11bHRpcGxlT2Y7XG4gICAgaWYgKG11bHRpcGxlT2YpIHtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXggLyBtdWx0aXBsZU9mKSAqIG11bHRpcGxlT2Y7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4gLyBtdWx0aXBsZU9mKSAqIG11bHRpcGxlT2Y7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5leGNsdXNpdmVNaW5pbXVtICYmIG1pbiA9PT0gdmFsdWUubWluaW11bSkge1xuICAgICAgICBtaW4gKz0gbXVsdGlwbGVPZiB8fCAxO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZXhjbHVzaXZlTWF4aW11bSAmJiBtYXggPT09IHZhbHVlLm1heGltdW0pIHtcbiAgICAgICAgbWF4IC09IG11bHRpcGxlT2YgfHwgMTtcbiAgICB9XG4gICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBpZiAobXVsdGlwbGVPZikge1xuICAgICAgICBpZiAoU3RyaW5nKG11bHRpcGxlT2YpLmluZGV4T2YoJy4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHZhciBiYXNlID0gcmFuZG9tLm51bWJlcihNYXRoLmZsb29yKG1pbiAvIG11bHRpcGxlT2YpLCBNYXRoLmZsb29yKG1heCAvIG11bHRpcGxlT2YpKSAqIG11bHRpcGxlT2Y7XG4gICAgICAgICAgICB3aGlsZSAoYmFzZSA8IG1pbikge1xuICAgICAgICAgICAgICAgIGJhc2UgKz0gdmFsdWUubXVsdGlwbGVPZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBib3VuZGFyeSA9IChtYXggLSBtaW4pIC8gbXVsdGlwbGVPZjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyIG51bSA9IHJhbmRvbS5udW1iZXIoMCwgYm91bmRhcnkpICogbXVsdGlwbGVPZjtcbiAgICAgICAgICAgIHZhciBmaXggPSAobnVtIC8gbXVsdGlwbGVPZikgJSAxO1xuICAgICAgICB9IHdoaWxlIChmaXggIT09IDApO1xuICAgICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZG9tLm51bWJlcihtaW4sIG1heCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpO1xufTtcblxuLy8gVGhlIGBpbnRlZ2VyYCB0eXBlIGlzIGp1c3QgYSB3cmFwcGVyIGZvciB0aGUgYG51bWJlcmAgdHlwZS4gVGhlIGBudW1iZXJgIHR5cGVcbi8vIHJldHVybnMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kIGBpbnRlZ2VyYCB0eXBlIHRydW5jYXRlcyB0aGUgZnJhY3Rpb25cbi8vIHBhcnQsIGxlYXZpbmcgdGhlIHJlc3VsdCBhcyBhbiBpbnRlZ2VyLlxudmFyIGludGVnZXJUeXBlID0gZnVuY3Rpb24gaW50ZWdlclR5cGUodmFsdWUpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gbnVtYmVyVHlwZSh2YWx1ZSk7XG4gICAgLy8gd2hldGhlciB0aGUgZ2VuZXJhdGVkIG51bWJlciBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSwgbmVlZCB0byB1c2UgZWl0aGVyXG4gICAgLy8gZmxvb3IgKHBvc2l0aXZlKSBvciBjZWlsIChuZWdhdGl2ZSkgZnVuY3Rpb24gdG8gZ2V0IHJpZCBvZiB0aGUgZnJhY3Rpb25cbiAgICByZXR1cm4gZ2VuZXJhdGVkID4gMCA/IE1hdGguZmxvb3IoZ2VuZXJhdGVkKSA6IE1hdGguY2VpbChnZW5lcmF0ZWQpO1xufTtcblxudmFyIExJUFNVTV9XT1JEUyA9ICgnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUnXG4gICAgKyAnIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEgVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0gcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhJ1xuICAgICsgJyBjb21tb2RvIGNvbnNlcXVhdCBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSdcbiAgICArICcgcGFyaWF0dXIgRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCdcbiAgICArICcgbGFib3J1bScpLnNwbGl0KCcgJyk7XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGFycmF5IG9mIHNpbmdsZSBsb3JlbSBpcHN1bSB3b3Jkcy5cbiAqXG4gKiBAcGFyYW0gbGVuZ3RoXG4gKiBAcmV0dXJucyB7QXJyYXkuPHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIHdvcmRzR2VuZXJhdG9yKGxlbmd0aCkge1xuICAgIHZhciB3b3JkcyA9IHJhbmRvbS5zaHVmZmxlKExJUFNVTV9XT1JEUyk7XG4gICAgcmV0dXJuIHdvcmRzLnNsaWNlKDAsIGxlbmd0aCk7XG59XG5cbi8vIGZhbGxiYWNrIGdlbmVyYXRvclxudmFyIGFueVR5cGUgPSB7IHR5cGU6IFsnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nXSB9O1xuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG52YXIgb2JqZWN0VHlwZSA9IGZ1bmN0aW9uIG9iamVjdFR5cGUodmFsdWUsIHBhdGgsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spIHtcbiAgICB2YXIgcHJvcHMgPSB7fTtcbiAgICB2YXIgcHJvcGVydGllcyA9IHZhbHVlLnByb3BlcnRpZXMgfHwge307XG4gICAgdmFyIHBhdHRlcm5Qcm9wZXJ0aWVzID0gdmFsdWUucGF0dGVyblByb3BlcnRpZXMgfHwge307XG4gICAgdmFyIHJlcXVpcmVkUHJvcGVydGllcyA9ICh2YWx1ZS5yZXF1aXJlZCB8fCBbXSkuc2xpY2UoKTtcbiAgICB2YXIgYWxsb3dzQWRkaXRpb25hbCA9IHZhbHVlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICB2YXIgcHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcyk7XG4gICAgdmFyIHBhdHRlcm5Qcm9wZXJ0eUtleXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJuUHJvcGVydGllcyk7XG4gICAgdmFyIG9wdGlvbmFsUHJvcGVydGllcyA9IHByb3BlcnR5S2V5cy5jb25jYXQocGF0dGVyblByb3BlcnR5S2V5cykucmVkdWNlKGZ1bmN0aW9uIChfcmVzcG9uc2UsIF9rZXkpIHtcbiAgICAgICAgaWYgKHJlcXVpcmVkUHJvcGVydGllcy5pbmRleE9mKF9rZXkpID09PSAtMSlcbiAgICAgICAgICAgIF9yZXNwb25zZS5wdXNoKF9rZXkpO1xuICAgICAgICByZXR1cm4gX3Jlc3BvbnNlO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgYWxsUHJvcGVydGllcyA9IHJlcXVpcmVkUHJvcGVydGllcy5jb25jYXQob3B0aW9uYWxQcm9wZXJ0aWVzKTtcbiAgICB2YXIgYWRkaXRpb25hbFByb3BlcnRpZXMgPSBhbGxvd3NBZGRpdGlvbmFsXG4gICAgICAgID8gKHZhbHVlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSB0cnVlID8ge30gOiB2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcylcbiAgICAgICAgOiBudWxsO1xuICAgIGlmICghYWxsb3dzQWRkaXRpb25hbCAmJlxuICAgICAgICBwcm9wZXJ0eUtleXMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHBhdHRlcm5Qcm9wZXJ0eUtleXMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHV0aWxzLmhhc1Byb3BlcnRpZXModmFsdWUsICdtaW5Qcm9wZXJ0aWVzJywgJ21heFByb3BlcnRpZXMnLCAnZGVwZW5kZW5jaWVzJywgJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgLy8ganVzdCBub3RoaW5nXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbkFQSSgncmVxdWlyZWRPbmx5JykgPT09IHRydWUpIHtcbiAgICAgICAgcmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNba2V5XSkge1xuICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSBwcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJhdmVyc2VDYWxsYmFjayhwcm9wcywgcGF0aC5jb25jYXQoWydwcm9wZXJ0aWVzJ10pLCByZXNvbHZlKTtcbiAgICB9XG4gICAgdmFyIG9wdGlvbmFsc1Byb2JhYmlsaXR5ID0gb3B0aW9uQVBJKCdhbHdheXNGYWtlT3B0aW9uYWxzJykgPT09IHRydWUgPyAxLjAgOiBvcHRpb25BUEkoJ29wdGlvbmFsc1Byb2JhYmlsaXR5Jyk7XG4gICAgdmFyIGlnbm9yZVByb3BlcnRpZXMgPSBvcHRpb25BUEkoJ2lnbm9yZVByb3BlcnRpZXMnKSB8fCBbXTtcbiAgICB2YXIgbWluID0gTWF0aC5tYXgodmFsdWUubWluUHJvcGVydGllcyB8fCAwLCByZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKTtcbiAgICB2YXIgbWF4ID0gTWF0aC5tYXgodmFsdWUubWF4UHJvcGVydGllcyB8fCBhbGxQcm9wZXJ0aWVzLmxlbmd0aCk7XG4gICAgdmFyIG5lZWRlZEV4dHJhcyA9IE1hdGgucm91bmQoKG1pbiAtIHJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGgpICsgb3B0aW9uYWxzUHJvYmFiaWxpdHkgKiAobWF4IC0gbWluKSk7XG4gICAgdmFyIGV4dHJhUHJvcGVydGllc1JhbmRvbU9yZGVyID0gcmFuZG9tLnNodWZmbGUob3B0aW9uYWxQcm9wZXJ0aWVzKS5zbGljZSgwLCBuZWVkZWRFeHRyYXMpO1xuICAgIHZhciBleHRyYVByb3BlcnRpZXMgPSBvcHRpb25hbFByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChfaXRlbSkge1xuICAgICAgICByZXR1cm4gZXh0cmFQcm9wZXJ0aWVzUmFuZG9tT3JkZXIuaW5kZXhPZihfaXRlbSkgIT09IC0xO1xuICAgIH0pO1xuICAgIC8vIHByb3BlcnRpZXMgYXJlIHJlYWQgZnJvbSByaWdodC10by1sZWZ0XG4gICAgdmFyIF9wcm9wcyA9IHJlcXVpcmVkUHJvcGVydGllcy5jb25jYXQoZXh0cmFQcm9wZXJ0aWVzKS5zbGljZSgwLCBtYXgpO1xuICAgIHZhciBza2lwcGVkID0gW107XG4gICAgdmFyIG1pc3NpbmcgPSBbXTtcbiAgICBfcHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWdub3JlUHJvcGVydGllcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKChpZ25vcmVQcm9wZXJ0aWVzW2ldIGluc3RhbmNlb2YgUmVnRXhwICYmIGlnbm9yZVByb3BlcnRpZXNbaV0udGVzdChrZXkpKVxuICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgaWdub3JlUHJvcGVydGllc1tpXSA9PT0gJ3N0cmluZycgJiYgaWdub3JlUHJvcGVydGllc1tpXSA9PT0ga2V5KVxuICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgaWdub3JlUHJvcGVydGllc1tpXSA9PT0gJ2Z1bmN0aW9uJyAmJiBpZ25vcmVQcm9wZXJ0aWVzW2ldKHByb3BlcnRpZXNba2V5XSwga2V5KSkpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlyc3Qgb25lcyBhcmUgdGhlIHJlcXVpcmVkIHByb3Blcmllc1xuICAgICAgICBpZiAocHJvcGVydGllc1trZXldKSB7XG4gICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGZvdW5kO1xuICAgICAgICAgICAgLy8gdGhlbiB0cnkgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgICAgICAgIHBhdHRlcm5Qcm9wZXJ0eUtleXMuZm9yRWFjaChmdW5jdGlvbiAoX2tleSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkubWF0Y2gobmV3IFJlZ0V4cChfa2V5KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1tyYW5kb20ucmFuZGV4cChrZXkpXSA9IHBhdHRlcm5Qcm9wZXJ0aWVzW19rZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIHRyeSBwYXR0ZXJuUHJvcGVydGllcyBhZ2FpbixcbiAgICAgICAgICAgICAgICB2YXIgc3Vic2NoZW1hID0gcGF0dGVyblByb3BlcnRpZXNba2V5XSB8fCBhZGRpdGlvbmFsUHJvcGVydGllcztcbiAgICAgICAgICAgICAgICAvLyBGSVhNRTogYWxsb3cgYW55VHlwZSBhcyBmYWxsYmFjayB3aGVuIG5vIHN1YnNjaGVtYSBpcyBnaXZlbj9cbiAgICAgICAgICAgICAgICBpZiAoc3Vic2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB3ZSBjYW4gdXNlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzP1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twYXR0ZXJuUHJvcGVydGllc1trZXldID8gcmFuZG9tLnJhbmRleHAoa2V5KSA6IGtleV0gPSBzdWJzY2hlbWE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZmlsbFByb3BzID0gb3B0aW9uQVBJKCdmaWxsUHJvcGVydGllcycpO1xuICAgIHZhciByZXVzZVByb3BzID0gb3B0aW9uQVBJKCdyZXVzZVByb3BlcnRpZXMnKTtcbiAgICAvLyBkaXNjYXJkIGFscmVhZHkgaWdub3JlZCBwcm9wcyBpZiB0aGV5J3JlIG5vdCByZXF1aXJlZCB0byBiZSBmaWxsZWQuLi5cbiAgICB2YXIgY3VycmVudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggKyAoZmlsbFByb3BzID8gMCA6IHNraXBwZWQubGVuZ3RoKTtcbiAgICB3aGlsZSAoZmlsbFByb3BzKSB7XG4gICAgICAgIGlmICghKHBhdHRlcm5Qcm9wZXJ0eUtleXMubGVuZ3RoIHx8IGFsbG93c0FkZGl0aW9uYWwpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudCA+PSBtaW4pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd3NBZGRpdGlvbmFsKSB7XG4gICAgICAgICAgICBpZiAocmV1c2VQcm9wcyAmJiAoKHByb3BlcnR5S2V5cy5sZW5ndGggLSBjdXJyZW50KSA+IG1pbikpIHtcbiAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBsYXJnZSBvYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByYW5kb20ucGljayhwcm9wZXJ0eUtleXMpO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHR5cGVvZiBwcm9wc1trZXldICE9PSAndW5kZWZpbmVkJyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHdvcmQgPSB3b3Jkc0dlbmVyYXRvcigxKSArIHJhbmRvbS5yYW5kZXhwKCdbYS1mXFxcXGRdezEsM30nKTtcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BzW3dvcmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3dvcmRdID0gYWRkaXRpb25hbFByb3BlcnRpZXMgfHwgYW55VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmZvckVhY2goZnVuY3Rpb24gKF9rZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkID0gcmFuZG9tLnJhbmRleHAoX2tleSk7XG4gICAgICAgICAgICBpZiAoIXByb3BzW3dvcmRdKSB7XG4gICAgICAgICAgICAgICAgcHJvcHNbd29yZF0gPSBwYXR0ZXJuUHJvcGVydGllc1tfa2V5XTtcbiAgICAgICAgICAgICAgICBjdXJyZW50ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWFsbG93c0FkZGl0aW9uYWwgJiYgY3VycmVudCA8IG1pbikge1xuICAgICAgICBpZiAobWlzc2luZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdwcm9wZXJ0aWVzIFwiJyArIG1pc3Npbmcuam9pbignLCAnKSArICdcIiB3ZXJlIG5vdCBmb3VuZCB3aGlsZSBhZGRpdGlvbmFsUHJvcGVydGllcyBpcyBmYWxzZTpcXG4nICtcbiAgICAgICAgICAgICAgICB1dGlscy5zaG9ydCh2YWx1ZSksIHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdwcm9wZXJ0aWVzIGNvbnN0cmFpbnRzIHdlcmUgdG9vIHN0cm9uZyB0byBzdWNjZXNzZnVsbHkgZ2VuZXJhdGUgYSB2YWxpZCBvYmplY3QgZm9yOlxcbicgK1xuICAgICAgICAgICAgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYXZlcnNlQ2FsbGJhY2socHJvcHMsIHBhdGguY29uY2F0KFsncHJvcGVydGllcyddKSwgcmVzb2x2ZSk7XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRodW5rR2VuZXJhdG9yIHRvIHByb2R1Y2Ugc29tZSB3b3JkcyBmb3IgdGhlIGZpbmFsIHJlc3VsdC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBwcm9kdWNlKCkge1xuICAgIHZhciBsZW5ndGggPSByYW5kb20ubnVtYmVyKDEsIDUpO1xuICAgIHJldHVybiB3b3Jkc0dlbmVyYXRvcihsZW5ndGgpLmpvaW4oJyAnKTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgY29uY2F0ZW5hdGVkIHN0cmluZyBiYXNlZCBvbiB3b3JkcyBnZW5lcmF0b3IuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdGh1bmtHZW5lcmF0b3IobWluLCBtYXgpIHtcbiAgICBpZiAobWluID09PSB2b2lkIDApIHsgbWluID0gMDsgfVxuICAgIGlmIChtYXggPT09IHZvaWQgMCkgeyBtYXggPSAxNDA7IH1cbiAgICB2YXIgbWluID0gTWF0aC5tYXgoMCwgbWluKSwgbWF4ID0gcmFuZG9tLm51bWJlcihtaW4sIG1heCksIHJlc3VsdCA9IHByb2R1Y2UoKTtcbiAgICAvLyBhcHBlbmQgdW50aWwgbGVuZ3RoIGlzIHJlYWNoZWRcbiAgICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA8IG1pbikge1xuICAgICAgICByZXN1bHQgKz0gcHJvZHVjZSgpO1xuICAgIH1cbiAgICAvLyBjdXQgaWYgbmVlZGVkXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBtYXgpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cigwLCBtYXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGlwdjQgYWRkcmVzcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBpcHY0R2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF0ubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbS5udW1iZXIoMCwgMjU1KTtcbiAgICB9KS5qb2luKCcuJyk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgZGF0ZSB0aW1lIElTTyBmb3JtYXQgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRhdGVUaW1lR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiByYW5kb20uZGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgZGF0ZSBmb3JtYXQgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRhdGVHZW5lcmF0b3IoKSB7XG4gICAgcmV0dXJuIGRhdGVUaW1lR2VuZXJhdG9yKCkuc2xpY2UoMCwgMTApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIHRpbWUgZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB0aW1lR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpLnNsaWNlKDExKTtcbn1cblxuLyoqXG4gKiBQcmVkZWZpbmVkIGNvcmUgZm9ybWF0c1xuICogQHR5cGUge1trZXk6IHN0cmluZ106IHN0cmluZ31cbiAqL1xudmFyIHJlZ2V4cHMgPSB7XG4gICAgZW1haWw6ICdbYS16QS1aXFxcXGRdW2EtekEtWlxcXFxkLV17MSwxM31bYS16QS1aXFxcXGRdQHtob3N0bmFtZX0nLFxuICAgIGhvc3RuYW1lOiAnW2EtekEtWl17MSwzM31cXFxcLlthLXpdezIsNH0nLFxuICAgIGlwdjY6ICdbYS1mXFxcXGRdezR9KDpbYS1mXFxcXGRdezR9KXs3fScsXG4gICAgdXJpOiAnaHR0cHM/Oi8vW2EtekEtWl1bYS16QS1aMC05Ky0uXSonLFxuICAgICd1cmktcmVmZXJlbmNlJzogJyhodHRwcz86Ly98I3wvfClbYS16QS1aXVthLXpBLVowLTkrLS5dKicsXG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBzdHJpbmcgYmFzaW5nIG9uIGEgYnVpbHQtaW4gcmVnZXggZm9ybWF0XG4gKlxuICogQHBhcmFtIGNvcmVGb3JtYXRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNvcmVGb3JtYXRHZW5lcmF0b3IoY29yZUZvcm1hdCkge1xuICAgIHJldHVybiByYW5kb20ucmFuZGV4cChyZWdleHBzW2NvcmVGb3JtYXRdKS5yZXBsYWNlKC9cXHsoXFx3KylcXH0vLCBmdW5jdGlvbiAobWF0Y2gsIGtleSkge1xuICAgICAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAocmVnZXhwc1trZXldKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVGb3JtYXQodmFsdWUsIGludmFsaWQpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBmb3JtYXRBUEkodmFsdWUuZm9ybWF0KTtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayh2YWx1ZSk7XG4gICAgfVxuICAgIHN3aXRjaCAodmFsdWUuZm9ybWF0KSB7XG4gICAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIHJldHVybiBkYXRlR2VuZXJhdG9yKCk7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgICAgcmV0dXJuIHRpbWVHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAnaXB2NCc6XG4gICAgICAgICAgICByZXR1cm4gaXB2NEdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICdyZWdleCc6XG4gICAgICAgICAgICAvLyBUT0RPOiBkaXNjdXNzXG4gICAgICAgICAgICByZXR1cm4gJy4rPyc7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgY2FzZSAnaG9zdG5hbWUnOlxuICAgICAgICBjYXNlICdpcHY2JzpcbiAgICAgICAgY2FzZSAndXJpJzpcbiAgICAgICAgY2FzZSAndXJpLXJlZmVyZW5jZSc6XG4gICAgICAgICAgICByZXR1cm4gY29yZUZvcm1hdEdlbmVyYXRvcih2YWx1ZS5mb3JtYXQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uQVBJKCdmYWlsT25JbnZhbGlkRm9ybWF0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHJlZ2lzdHJ5IGtleSAnICsgdXRpbHMuc2hvcnQodmFsdWUuZm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgZm9ybWF0IFwiJyArIHZhbHVlLmZvcm1hdCArICdcIicpO1xuICAgIH1cbn1cbnZhciBzdHJpbmdUeXBlID0gZnVuY3Rpb24gc3RyaW5nVHlwZSh2YWx1ZSkge1xuICAgIHZhciBvdXRwdXQ7XG4gICAgb3V0cHV0ID0gdXRpbHMudHlwZWNhc3QodmFsdWUsIGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgICAgIGlmICh2YWx1ZS5mb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm1hdCh2YWx1ZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGh1bmtHZW5lcmF0b3Iob3B0cy5taW5MZW5ndGgsIG9wdHMubWF4TGVuZ3RoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLnBhdHRlcm4pIHtcbiAgICAgICAgICAgIHJldHVybiByYW5kb20ucmFuZGV4cCh2YWx1ZS5wYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGh1bmtHZW5lcmF0b3Iob3B0cy5taW5MZW5ndGgsIG9wdHMubWF4TGVuZ3RoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0cHV0O1xufTtcblxudmFyIHR5cGVNYXAgPSB7XG4gICAgYm9vbGVhbjogYm9vbGVhblR5cGUsXG4gICAgbnVsbDogbnVsbFR5cGUsXG4gICAgYXJyYXk6IGFycmF5VHlwZSxcbiAgICBpbnRlZ2VyOiBpbnRlZ2VyVHlwZSxcbiAgICBudW1iZXI6IG51bWJlclR5cGUsXG4gICAgb2JqZWN0OiBvYmplY3RUeXBlLFxuICAgIHN0cmluZzogc3RyaW5nVHlwZVxufTtcblxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiB0cmF2ZXJzZShzY2hlbWEsIHBhdGgsIHJlc29sdmUsIHJvb3RTY2hlbWEpIHtcbiAgICBzY2hlbWEgPSByZXNvbHZlKHNjaGVtYSk7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBkZWZhdWx0IHZhbHVlcyBoYXMgaGlnaGVyIHByZWNlZGVuY2VcbiAgICBpZiAob3B0aW9uQVBJKCd1c2VEZWZhdWx0VmFsdWUnKSAmJiAnZGVmYXVsdCcgaW4gc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuZGVmYXVsdDtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5ub3QgJiYgdHlwZW9mIHNjaGVtYS5ub3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHNjaGVtYSA9IHV0aWxzLm5vdFZhbHVlKHNjaGVtYS5ub3QsIHV0aWxzLm9taXRQcm9wcyhzY2hlbWEsIFsnbm90J10pKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pKSB7XG4gICAgICAgIHJldHVybiB1dGlscy50eXBlY2FzdChzY2hlbWEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJhbmRvbS5waWNrKHNjaGVtYS5lbnVtKTsgfSk7XG4gICAgfVxuICAgIC8vIHRodW5rcyBjYW4gcmV0dXJuIHN1Yi1zY2hlbWFzXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEudGh1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRyYXZlcnNlKHNjaGVtYS50aHVuaygpLCBwYXRoLCByZXNvbHZlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEuZ2VuZXJhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnR5cGVjYXN0KHNjaGVtYSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gc2NoZW1hLmdlbmVyYXRlKHJvb3RTY2hlbWEpOyB9KTtcbiAgICB9XG4gICAgLy8gVE9ETyByZW1vdmUgdGhlIHVnbHkgb3ZlcmNvbWVcbiAgICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGUgPSByYW5kb20ucGljayh0eXBlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gaW5mZXIgdGhlIHR5cGVcbiAgICAgICAgdHlwZSA9IGluZmVyVHlwZShzY2hlbWEsIHBhdGgpIHx8IHR5cGU7XG4gICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgICBzY2hlbWEudHlwZSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoIXR5cGVNYXBbdHlwZV0pIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25BUEkoJ2ZhaWxPbkludmFsaWRUeXBlcycpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoJ3Vua25vd24gcHJpbWl0aXZlICcgKyB1dGlscy5zaG9ydCh0eXBlKSwgcGF0aC5jb25jYXQoWyd0eXBlJ10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25BUEkoJ2RlZmF1bHRJbnZhbGlkVHlwZVByb2R1Y3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHR5cGVNYXBbdHlwZV0oc2NoZW1hLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZSk7XG4gICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkID0gc2NoZW1hLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hLml0ZW1zLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDogc2NoZW1hLnJlcXVpcmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy5jbGVhbihyZXN1bHQsIG51bGwsIHJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlLnBhdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGUubWVzc2FnZSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGNvcHkgPSB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgICAgIGNvcHkgPSBbXTtcbiAgICB9XG4gICAgZm9yICh2YXIgcHJvcCBpbiBzY2hlbWEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWFbcHJvcF0gPT09ICdvYmplY3QnICYmIHByb3AgIT09ICdkZWZpbml0aW9ucycpIHtcbiAgICAgICAgICAgIGNvcHlbcHJvcF0gPSB0cmF2ZXJzZShzY2hlbWFbcHJvcF0sIHBhdGguY29uY2F0KFtwcm9wXSksIHJlc29sdmUsIGNvcHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29weVtwcm9wXSA9IHNjaGVtYVtwcm9wXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gcGljayQxKGRhdGEpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKVxuICAgICAgICA/IHJhbmRvbS5waWNrKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbn1cbmZ1bmN0aW9uIGN5Y2xlKGRhdGEsIHJldmVyc2UpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHZhciB2YWx1ZSA9IHJldmVyc2VcbiAgICAgICAgPyBkYXRhLnBvcCgpXG4gICAgICAgIDogZGF0YS5zaGlmdCgpO1xuICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgIGRhdGEudW5zaGlmdCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiByZXNvbHZlKG9iaiwgZGF0YSwgdmFsdWVzLCBwcm9wZXJ0eSkge1xuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgIHZhbHVlcyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgZGF0YSA9IG9iajtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICByZXR1cm4gb2JqLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gcmVzb2x2ZSh4LCBkYXRhLCB2YWx1ZXMsIHByb3BlcnR5KTsgfSk7XG4gICAgfVxuICAgIGlmIChvYmouanNvblBhdGgpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHR5cGVvZiBvYmouanNvblBhdGggIT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IHsgcGF0aDogb2JqLmpzb25QYXRoIH1cbiAgICAgICAgICAgIDogb2JqLmpzb25QYXRoO1xuICAgICAgICBwYXJhbXMuZ3JvdXAgPSBvYmouZ3JvdXAgfHwgcGFyYW1zLmdyb3VwIHx8IHByb3BlcnR5O1xuICAgICAgICBwYXJhbXMuY3ljbGUgPSBvYmouY3ljbGUgfHwgcGFyYW1zLmN5Y2xlIHx8IGZhbHNlO1xuICAgICAgICBwYXJhbXMucmV2ZXJzZSA9IG9iai5yZXZlcnNlIHx8IHBhcmFtcy5yZXZlcnNlIHx8IGZhbHNlO1xuICAgICAgICBwYXJhbXMuY291bnQgPSBvYmouY291bnQgfHwgcGFyYW1zLmNvdW50IHx8IDE7XG4gICAgICAgIHZhciBrZXkgPSBwYXJhbXMuZ3JvdXAgKyBcIl9fXCIgKyBwYXJhbXMucGF0aDtcbiAgICAgICAgaWYgKCF2YWx1ZXNba2V5XSkge1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IGpzb25wYXRoLnF1ZXJ5KGRhdGEsIHBhcmFtcy5wYXRoLCBwYXJhbXMuY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBqc29ucGF0aC52YWx1ZShkYXRhLCBwYXJhbXMucGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5jeWNsZSB8fCBwYXJhbXMucmV2ZXJzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGN5Y2xlKHZhbHVlc1trZXldLCBwYXJhbXMucmV2ZXJzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpY2skMSh2YWx1ZXNba2V5XSk7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBvYmpba10gPSByZXNvbHZlKG9ialtrXSwgZGF0YSwgdmFsdWVzLCBrKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xufVxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiBydW4ocmVmcywgc2NoZW1hLCBjb250YWluZXIpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2Uoc2NoZW1hLCBbXSwgZnVuY3Rpb24gcmVkdWNlKHN1YiwgbWF4UmVkdWNlRGVwdGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4UmVkdWNlRGVwdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgbWF4UmVkdWNlRGVwdGggPSByYW5kb20ubnVtYmVyKDEsIDMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViLmdlbmVyYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNsZWFudXBcbiAgICAgICAgICAgIGlmIChzdWIuaWQgJiYgdHlwZW9mIHN1Yi5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLmlkO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViLiRyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi4kcmVmID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi4kcmVmO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3ViLiRyZWYuaW5kZXhPZignIy8nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IGRlcmVmLnV0aWwuZmluZEJ5UmVmKHN1Yi4kcmVmLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVmZXJlbmNlIG5vdCBmb3VuZDogJyArIHN1Yi4kcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBqdXN0IHJlbW92ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi4kcmVmO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdWIuYWxsT2YpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYXMgPSBzdWIuYWxsT2Y7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5hbGxPZjtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hlcmUgYWxsIHN1Yi1zY2hlbWFzXG4gICAgICAgICAgICAgICAgLy8gbXVzdCBiZSByZXNvbHZlZCBiZWZvcmUgYW55IG1lcmdlXG4gICAgICAgICAgICAgICAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChzdWJTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9zdWIgPSByZWR1Y2Uoc3ViU2NoZW1hLCBtYXhSZWR1Y2VEZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIGdpdmVuIHRodW5rcyBpZiBwcmVzZW50XG4gICAgICAgICAgICAgICAgICAgIHV0aWxzLm1lcmdlKHN1YiwgdHlwZW9mIF9zdWIudGh1bmsgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX3N1Yi50aHVuaygpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9zdWIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLm9uZU9mIHx8IHN1Yi5hbnlPZikpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWl4ID0gc3ViLm9uZU9mIHx8IHN1Yi5hbnlPZjtcbiAgICAgICAgICAgICAgICAvLyB0ZXN0IGV2ZXJ5IHZhbHVlIGZyb20gdGhlIGVudW0gYWdhaW5zdCBlYWNoLW9uZU9mXG4gICAgICAgICAgICAgICAgLy8gc2NoZW1hLCBvbmx5IHZhbHVlcyB0aGF0IHZhbGlkYXRlIG9uY2UgYXJlIGtlcHRcbiAgICAgICAgICAgICAgICBpZiAoc3ViLmVudW0gJiYgc3ViLm9uZU9mKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yi5lbnVtID0gc3ViLmVudW0uZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB1dGlscy52YWxpZGF0ZSh4LCBtaXgpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5hbnlPZjtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLm9uZU9mO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRodW5rOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29weSA9IHV0aWxzLm1lcmdlKHt9LCBzdWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMubWVyZ2UoY29weSwgcmFuZG9tLnBpY2sobWl4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBzdWIpIHtcbiAgICAgICAgICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoc3ViW3Byb3BdKSB8fCB0eXBlb2Ygc3ViW3Byb3BdID09PSAnb2JqZWN0JykgJiYgIXV0aWxzLmlzS2V5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yltwcm9wXSA9IHJlZHVjZShzdWJbcHJvcF0sIG1heFJlZHVjZURlcHRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLndyYXAoc3ViKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcHRpb25BUEkoJ3Jlc29sdmVKc29uUGF0aCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLnBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UgKyAnIGluICcgKyAnLycgKyBlLnBhdGguam9pbignLycpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnZhciBjb250YWluZXIgPSBuZXcgQ29udGFpbmVyKCk7XG5mdW5jdGlvbiBnZXRSZWZzKHJlZnMpIHtcbiAgICB2YXIgJHJlZnMgPSB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgICByZWZzLm1hcChkZXJlZi51dGlsLm5vcm1hbGl6ZVNjaGVtYSkuZm9yRWFjaChmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgICAgICAgICAkcmVmc1tzY2hlbWEuaWRdID0gc2NoZW1hO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgICRyZWZzID0gcmVmcyB8fCB7fTtcbiAgICB9XG4gICAgcmV0dXJuICRyZWZzO1xufVxuZnVuY3Rpb24gd2FsayhvYmosIGNiKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciByZXR2YWw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHJldHZhbCA9IGNiKG9ialtrZXlzW2ldXSwga2V5c1tpXSwgb2JqKTtcbiAgICAgICAgaWYgKCFyZXR2YWwgJiYgb2JqW2tleXNbaV1dICYmICFBcnJheS5pc0FycmF5KG9ialtrZXlzW2ldXSkgJiYgdHlwZW9mIG9ialtrZXlzW2ldXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHZhbCA9IHdhbGsob2JqW2tleXNbaV1dLCBjYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiByZXR2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgICAgICB9XG4gICAgfVxufVxudmFyIGpzZiA9IGZ1bmN0aW9uIChzY2hlbWEsIHJlZnMpIHtcbiAgICB2YXIgaWdub3JlID0gb3B0aW9uQVBJKCdpZ25vcmVNaXNzaW5nUmVmcycpO1xuICAgIHZhciAkID0gZGVyZWYoZnVuY3Rpb24gKGlkLCByZWZzKSB7XG4gICAgICAgIC8vIEZJWE1FOiBhbGxvdyBjdXN0b20gY2FsbGJhY2s/XG4gICAgICAgIGlmIChpZ25vcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciAkcmVmcyA9IGdldFJlZnMocmVmcyk7XG4gICAgcmV0dXJuIHJ1bigkcmVmcywgJChzY2hlbWEsICRyZWZzLCB0cnVlKSwgY29udGFpbmVyKTtcbn07XG5qc2YucmVzb2x2ZSA9IGZ1bmN0aW9uIChzY2hlbWEsIHJlZnMsIGN3ZCkge1xuICAgIGlmICh0eXBlb2YgcmVmcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY3dkID0gcmVmcztcbiAgICAgICAgcmVmcyA9IHt9O1xuICAgIH1cbiAgICAvLyBub3JtYWxpemUgYmFzZWRpciAoYnJvd3NlciBhd2FyZSlcbiAgICBjd2QgPSBjd2QgfHwgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyA/IHByb2Nlc3MuY3dkKCkgOiAnJyk7XG4gICAgY3dkID0gY3dkLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nO1xuICAgIHZhciAkcmVmcyA9IGdldFJlZnMocmVmcyk7XG4gICAgLy8gaWRlbnRpY2FsIHNldHVwIGFzIGpzb24tc2NoZW1hLXNlcXVlbGl6ZXJcbiAgICB2YXIgZml4ZWRSZWZzID0ge1xuICAgICAgICBvcmRlcjogMzAwLFxuICAgICAgICBjYW5SZWFkOiB0cnVlLFxuICAgICAgICByZWFkOiBmdW5jdGlvbiAoZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGN3ZCAhPT0gJy8nXG4gICAgICAgICAgICAgICAgPyBmaWxlLnVybC5yZXBsYWNlKGN3ZCwgJycpXG4gICAgICAgICAgICAgICAgOiBmaWxlLnVybDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZGVyZWYudXRpbC5maW5kQnlSZWYoaWQsICRyZWZzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB3YWxrKHNjaGVtYSwgZnVuY3Rpb24gKHYsIGssIHN1Yikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoayA9PT0gJ2lkJyAmJiB2ID09PSBpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiAkUmVmUGFyc2VyXG4gICAgICAgIC5kZXJlZmVyZW5jZShjd2QsIHNjaGVtYSwge1xuICAgICAgICByZXNvbHZlOiB7IGZpeGVkUmVmczogZml4ZWRSZWZzIH0sXG4gICAgICAgIGRlcmVmZXJlbmNlOiB7XG4gICAgICAgICAgICBjaXJjdWxhcjogJ2lnbm9yZScsXG4gICAgICAgIH0sXG4gICAgfSkudGhlbihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBydW4oJHJlZnMsIHN1YiwgY29udGFpbmVyKTsgfSk7XG59O1xuanNmLmZvcm1hdCA9IGZvcm1hdEFQSTtcbmpzZi5vcHRpb24gPSBvcHRpb25BUEk7XG5qc2YucmFuZG9tID0gcmFuZG9tO1xuLy8gYnVpbHQtaW4gc3VwcG9ydFxuY29udGFpbmVyLmRlZmluZSgncGF0dGVybicsIHJhbmRvbS5yYW5kZXhwKTtcbi8vIHNraXAgZGVmYXVsdCBnZW5lcmF0b3JzXG5jb250YWluZXIuZGVmaW5lKCdqc29uUGF0aCcsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgZGVsZXRlIHNjaGVtYS50eXBlO1xuICAgIHJldHVybiBzY2hlbWE7XG59KTtcbi8vIHNhZmUgYXV0by1pbmNyZW1lbnQgdmFsdWVzXG5jb250YWluZXIuZGVmaW5lKCdhdXRvSW5jcmVtZW50JywgZnVuY3Rpb24gKHZhbHVlLCBzY2hlbWEpIHtcbiAgICBpZiAoIXRoaXMub2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaW4gPSBzY2hlbWEubWluaW11bSB8fCAxO1xuICAgICAgICB2YXIgbWF4ID0gbWluICsgZW52Lk1BWF9OVU1CRVI7XG4gICAgICAgIHZhciBvZmZzZXQgPSB2YWx1ZS5pbml0aWFsT2Zmc2V0IHx8IHNjaGVtYS5pbml0aWFsT2Zmc2V0O1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldCB8fCByYW5kb20ubnVtYmVyKG1pbiwgbWF4KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mZnNldCsrO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufSk7XG4vLyBzYWZlLWFuZC1zZXF1ZW50aWFsIGRhdGVzXG5jb250YWluZXIuZGVmaW5lKCdzZXF1ZW50aWFsRGF0ZScsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKCF0aGlzLm5vdykge1xuICAgICAgICB0aGlzLm5vdyA9IHJhbmRvbS5kYXRlKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBzY2hlbWEgPSB0aGlzLm5vdy50b0lTT1N0cmluZygpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSB0cnVlXG4gICAgICAgICAgICA/ICdkYXlzJ1xuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgaWYgKFsnc2Vjb25kcycsICdtaW51dGVzJywgJ2hvdXJzJywgJ2RheXMnLCAnd2Vla3MnLCAnbW9udGhzJywgJ3llYXJzJ10uaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBpbmNyZW1lbnQgYnkgXCIgKyB1dGlscy5zaG9ydCh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm93LnNldFRpbWUodGhpcy5ub3cuZ2V0VGltZSgpICsgcmFuZG9tLmRhdGUodmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn0pO1xuLy8gcmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nXG5qc2YuZXh0ZW5kID0gZnVuY3Rpb24gKG5hbWUsIGNiKSB7XG4gICAgY29udGFpbmVyLmV4dGVuZChuYW1lLCBjYik7XG4gICAgcmV0dXJuIGpzZjtcbn07XG5qc2YuZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGNiKSB7XG4gICAgY29udGFpbmVyLmRlZmluZShuYW1lLCBjYik7XG4gICAgcmV0dXJuIGpzZjtcbn07XG5qc2YubG9jYXRlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmdldChuYW1lKTtcbn07XG52YXIgVkVSU0lPTj1cIjAuNS4wLXJjMTVcIjtcbmpzZi52ZXJzaW9uID0gVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBqc2Y7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYnVuZGxlO1xuXG4vKipcbiAqIEJ1bmRsZXMgYWxsIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlcyBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLCB0aHVzIHJlc3VsdGluZyBpbiBhIHNjaGVtYSB0aGF0XG4gKiBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsIG5vdCBhbnkgKmV4dGVybmFsKiByZWZlcmVuY2VzLlxuICogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgSlNPTiBzY2hlbWEgb2JqZWN0LCBhZGRpbmcgbmV3IHJlZmVyZW5jZXMgYW5kIHJlLW1hcHBpbmcgZXhpc3Rpbmcgb25lcy5cbiAqXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJ9IHBhcnNlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBidW5kbGUgKHBhcnNlciwgb3B0aW9ucykge1xuICBkZWJ1ZygnQnVuZGxpbmcgJHJlZiBwb2ludGVycyBpbiAlcycsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCk7XG5cbiAgLy8gQnVpbGQgYW4gaW52ZW50b3J5IG9mIGFsbCAkcmVmIHBvaW50ZXJzIGluIHRoZSBKU09OIFNjaGVtYVxuICB2YXIgaW52ZW50b3J5ID0gW107XG4gIGNyYXdsKHBhcnNlciwgJ3NjaGVtYScsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCArICcjJywgJyMnLCAwLCBpbnZlbnRvcnksIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XG5cbiAgLy8gUmVtYXAgYWxsICRyZWYgcG9pbnRlcnNcbiAgcmVtYXAoaW52ZW50b3J5KTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjcmF3bHMgdGhlIGdpdmVuIHZhbHVlLCBhbmQgaW52ZW50b3JpZXMgYWxsIEpTT04gcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyZW50IC0gVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBjcmF3bC4gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IG9mIGBwYXJlbnRgIHRvIGJlIGNyYXdsZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiB0aGUgcHJvcGVydHkgYmVpbmcgY3Jhd2xlZCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhGcm9tUm9vdCAtIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSBiZWluZyBjcmF3bGVkLCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxuICogQHBhcmFtIHtvYmplY3RbXX0gaW52ZW50b3J5IC0gQW4gYXJyYXkgb2YgYWxyZWFkeS1pbnZlbnRvcmllZCAkcmVmIHBvaW50ZXJzXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBjcmF3bCAocGFyZW50LCBrZXksIHBhdGgsIHBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciBvYmogPSBrZXkgPT09IG51bGwgPyBwYXJlbnQgOiBwYXJlbnRba2V5XTtcblxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZihvYmopKSB7XG4gICAgICBpbnZlbnRvcnkkUmVmKHBhcmVudCwga2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQ3Jhd2wgdGhlIG9iamVjdCBpbiBhIHNwZWNpZmljIG9yZGVyIHRoYXQncyBvcHRpbWl6ZWQgZm9yIGJ1bmRsaW5nLlxuICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBkZXRlcm1pbmVzIGhvdyBgcGF0aEZyb21Sb290YCBnZXRzIGJ1aWx0LFxuICAgICAgLy8gd2hpY2ggbGF0ZXIgZGV0ZXJtaW5lcyB3aGljaCBrZXlzIGdldCBkZXJlZmVyZW5jZWQgYW5kIHdoaWNoIG9uZXMgZ2V0IHJlbWFwcGVkXG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iailcbiAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAvLyBNb3N0IHBlb3BsZSB3aWxsIGV4cGVjdCByZWZlcmVuY2VzIHRvIGJlIGJ1bmRsZWQgaW50byB0aGUgdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eSxcbiAgICAgICAgICAvLyBzbyB3ZSBhbHdheXMgY3Jhd2wgdGhhdCBwcm9wZXJ0eSBmaXJzdCwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgIGlmIChhID09PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGIgPT09ICdkZWZpbml0aW9ucycpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY3Jhd2wgdGhlIGtleXMgYmFzZWQgb24gdGhlaXIgbGVuZ3RoLlxuICAgICAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgc2hvcnRlc3QgcG9zc2libGUgYnVuZGxlZCByZWZlcmVuY2VzXG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xuICAgICAgICB2YXIga2V5UGF0aEZyb21Sb290ID0gUG9pbnRlci5qb2luKHBhdGhGcm9tUm9vdCwga2V5KTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZih2YWx1ZSkpIHtcbiAgICAgICAgICBpbnZlbnRvcnkkUmVmKG9iaiwga2V5LCBwYXRoLCBrZXlQYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY3Jhd2wob2JqLCBrZXksIGtleVBhdGgsIGtleVBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW52ZW50b3JpZXMgdGhlIGdpdmVuIEpTT04gUmVmZXJlbmNlIChpLmUuIHJlY29yZHMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgaXQgc28gd2UgY2FuXG4gKiBvcHRpbWl6ZSBhbGwgJHJlZnMgaW4gdGhlIHNjaGVtYSksIGFuZCB0aGVuIGNyYXdscyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICRyZWZQYXJlbnQgLSBUaGUgb2JqZWN0IHRoYXQgY29udGFpbnMgYSBKU09OIFJlZmVyZW5jZSBhcyBvbmUgb2YgaXRzIGtleXNcbiAqIEBwYXJhbSB7c3RyaW5nfSAkcmVmS2V5IC0gVGhlIGtleSBpbiBgJHJlZlBhcmVudGAgdGhhdCBpcyBhIEpTT04gUmVmZXJlbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIEpTT04gUmVmZXJlbmNlIGF0IGAkcmVmS2V5YCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhGcm9tUm9vdCAtIFRoZSBwYXRoIG9mIHRoZSBKU09OIFJlZmVyZW5jZSBhdCBgJHJlZktleWAsIGZyb20gdGhlIHNjaGVtYSByb290XG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbnZlbnRvcnkgLSBBbiBhcnJheSBvZiBhbHJlYWR5LWludmVudG9yaWVkICRyZWYgcG9pbnRlcnNcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGludmVudG9yeSRSZWYgKCRyZWZQYXJlbnQsICRyZWZLZXksIHBhdGgsIHBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciAkcmVmID0gJHJlZktleSA9PT0gbnVsbCA/ICRyZWZQYXJlbnQgOiAkcmVmUGFyZW50WyRyZWZLZXldO1xuICB2YXIgJHJlZlBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xuICB2YXIgcG9pbnRlciA9ICRyZWZzLl9yZXNvbHZlKCRyZWZQYXRoLCBvcHRpb25zKTtcbiAgdmFyIGRlcHRoID0gUG9pbnRlci5wYXJzZShwYXRoRnJvbVJvb3QpLmxlbmd0aDtcbiAgdmFyIGZpbGUgPSB1cmwuc3RyaXBIYXNoKHBvaW50ZXIucGF0aCk7XG4gIHZhciBoYXNoID0gdXJsLmdldEhhc2gocG9pbnRlci5wYXRoKTtcbiAgdmFyIGV4dGVybmFsID0gZmlsZSAhPT0gJHJlZnMuX3Jvb3QkUmVmLnBhdGg7XG4gIHZhciBleHRlbmRlZCA9ICRSZWYuaXNFeHRlbmRlZCRSZWYoJHJlZik7XG4gIGluZGlyZWN0aW9ucyArPSBwb2ludGVyLmluZGlyZWN0aW9ucztcblxuICB2YXIgZXhpc3RpbmdFbnRyeSA9IGZpbmRJbkludmVudG9yeShpbnZlbnRvcnksICRyZWZQYXJlbnQsICRyZWZLZXkpO1xuICBpZiAoZXhpc3RpbmdFbnRyeSkge1xuICAgIC8vIFRoaXMgJFJlZiBoYXMgYWxyZWFkeSBiZWVuIGludmVudG9yaWVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3MgaXQgYWdhaW5cbiAgICBpZiAoZGVwdGggPCBleGlzdGluZ0VudHJ5LmRlcHRoIHx8IGluZGlyZWN0aW9ucyA8IGV4aXN0aW5nRW50cnkuaW5kaXJlY3Rpb25zKSB7XG4gICAgICByZW1vdmVGcm9tSW52ZW50b3J5KGludmVudG9yeSwgZXhpc3RpbmdFbnRyeSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGludmVudG9yeS5wdXNoKHtcbiAgICAkcmVmOiAkcmVmLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgSlNPTiBSZWZlcmVuY2UgKGUuZy4geyRyZWY6IHN0cmluZ30pXG4gICAgcGFyZW50OiAkcmVmUGFyZW50LCAgICAgICAgICAgLy8gVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMgJHJlZiBwb2ludGVyXG4gICAga2V5OiAkcmVmS2V5LCAgICAgICAgICAgICAgICAgLy8gVGhlIGtleSBpbiBgcGFyZW50YCB0aGF0IGlzIHRoZSAkcmVmIHBvaW50ZXJcbiAgICBwYXRoRnJvbVJvb3Q6IHBhdGhGcm9tUm9vdCwgICAvLyBUaGUgcGF0aCB0byB0aGUgJHJlZiBwb2ludGVyLCBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290XG4gICAgZGVwdGg6IGRlcHRoLCAgICAgICAgICAgICAgICAgLy8gSG93IGZhciBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290IGlzIHRoaXMgJHJlZiBwb2ludGVyP1xuICAgIGZpbGU6IGZpbGUsICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaWxlIHRoYXQgdGhlICRyZWYgcG9pbnRlciByZXNvbHZlcyB0b1xuICAgIGhhc2g6IGhhc2gsICAgICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIHdpdGhpbiBgZmlsZWAgdGhhdCB0aGUgJHJlZiBwb2ludGVyIHJlc29sdmVzIHRvXG4gICAgdmFsdWU6IHBvaW50ZXIudmFsdWUsICAgICAgICAgLy8gVGhlIHJlc29sdmVkIHZhbHVlIG9mIHRoZSAkcmVmIHBvaW50ZXJcbiAgICBjaXJjdWxhcjogcG9pbnRlci5jaXJjdWxhciwgICAvLyBJcyB0aGlzICRyZWYgcG9pbnRlciBESVJFQ1RMWSBjaXJjdWxhcj8gKGkuZS4gaXQgcmVmZXJlbmNlcyBpdHNlbGYpXG4gICAgZXh0ZW5kZWQ6IGV4dGVuZGVkLCAgICAgICAgICAgLy8gRG9lcyB0aGlzICRyZWYgZXh0ZW5kIGl0cyByZXNvbHZlZCB2YWx1ZT8gKGkuZS4gaXQgaGFzIGV4dHJhIHByb3BlcnRpZXMsIGluIGFkZGl0aW9uIHRvIFwiJHJlZlwiKVxuICAgIGV4dGVybmFsOiBleHRlcm5hbCwgICAgICAgICAgIC8vIERvZXMgdGhpcyAkcmVmIHBvaW50ZXIgcG9pbnQgdG8gYSBmaWxlIG90aGVyIHRoYW4gdGhlIG1haW4gSlNPTiBTY2hlbWEgZmlsZT9cbiAgICBpbmRpcmVjdGlvbnM6IGluZGlyZWN0aW9ucywgICAvLyBUaGUgbnVtYmVyIG9mIGluZGlyZWN0IHJlZmVyZW5jZXMgdGhhdCB3ZXJlIHRyYXZlcnNlZCB0byByZXNvbHZlIHRoZSB2YWx1ZVxuICB9KTtcblxuICAvLyBSZWN1cnNpdmVseSBjcmF3bCB0aGUgcmVzb2x2ZWQgdmFsdWVcbiAgY3Jhd2wocG9pbnRlci52YWx1ZSwgbnVsbCwgcG9pbnRlci5wYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucyArIDEsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlLW1hcHMgZXZlcnkgJHJlZiBwb2ludGVyLCBzbyB0aGF0IHRoZXkncmUgYWxsIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSBKU09OIFNjaGVtYS5cbiAqIEVhY2ggcmVmZXJlbmNlZCB2YWx1ZSBpcyBkZXJlZmVyZW5jZWQgRVhBQ1RMWSBPTkNFLiAgQWxsIHN1YnNlcXVlbnQgcmVmZXJlbmNlcyB0byB0aGUgc2FtZVxuICogdmFsdWUgYXJlIHJlLW1hcHBlZCB0byBwb2ludCB0byB0aGUgZmlyc3QgcmVmZXJlbmNlLlxuICpcbiAqIEBleGFtcGxlOlxuICogIHtcbiAqICAgIGZpcnN0OiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL3NvbWUvcGFydCB9LFxuICogICAgc2Vjb25kOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL2Fub3RoZXIvcGFydCB9LFxuICogICAgdGhpcmQ6IHsgJHJlZjogc29tZWZpbGUuanNvbiB9LFxuICogICAgZm91cnRoOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL3NvbWUvcGFydC9zdWIvcGFydCB9XG4gKiAgfVxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgdGhlcmUgYXJlIGZvdXIgcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBmaWxlLCBidXQgc2luY2UgdGhlIHRoaXJkIHJlZmVyZW5jZSBwb2ludHNcbiAqIHRvIHRoZSBFTlRJUkUgZmlsZSwgdGhhdCdzIHRoZSBvbmx5IG9uZSB3ZSBuZWVkIHRvIGRlcmVmZXJlbmNlLiAgVGhlIG90aGVyIHRocmVlIGNhbiBqdXN0IGJlXG4gKiByZW1hcHBlZCB0byBwb2ludCBpbnNpZGUgdGhlIHRoaXJkIG9uZS5cbiAqXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIHRoaXJkIHJlZmVyZW5jZSBESUROJ1QgZXhpc3QsIHRoZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgd291bGQgYm90aCBuZWVkXG4gKiB0byBiZSBkZXJlZmVyZW5jZWQsIHNpbmNlIHRoZXkgcG9pbnQgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBmaWxlLiBUaGUgZm91cnRoIHJlZmVyZW5jZSBkb2VzIE5PVFxuICogbmVlZCB0byBiZSBkZXJlZmVyZW5jZWQsIGJlY2F1c2UgaXQgY2FuIGJlIHJlbWFwcGVkIHRvIHBvaW50IGluc2lkZSB0aGUgZmlyc3Qgb25lLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119IGludmVudG9yeVxuICovXG5mdW5jdGlvbiByZW1hcCAoaW52ZW50b3J5KSB7XG4gIC8vIEdyb3VwICYgc29ydCBhbGwgdGhlICRyZWYgcG9pbnRlcnMsIHNvIHRoZXkncmUgaW4gdGhlIG9yZGVyIHRoYXQgd2UgbmVlZCB0byBkZXJlZmVyZW5jZS9yZW1hcCB0aGVtXG4gIGludmVudG9yeS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgaWYgKGEuZmlsZSAhPT0gYi5maWxlKSB7XG4gICAgICAvLyBHcm91cCBhbGwgdGhlICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgZmlsZVxuICAgICAgcmV0dXJuIGEuZmlsZSA8IGIuZmlsZSA/IC0xIDogKzE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuaGFzaCAhPT0gYi5oYXNoKSB7XG4gICAgICAvLyBHcm91cCBhbGwgdGhlICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgcGFydCBvZiB0aGUgZmlsZVxuICAgICAgcmV0dXJuIGEuaGFzaCA8IGIuaGFzaCA/IC0xIDogKzE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuY2lyY3VsYXIgIT09IGIuY2lyY3VsYXIpIHtcbiAgICAgIC8vIElmIHRoZSAkcmVmIHBvaW50cyB0byBpdHNlbGYsIHRoZW4gc29ydCBpdCBoaWdoZXIgdGhhbiBvdGhlciAkcmVmcyB0aGF0IHBvaW50IHRvIHRoaXMgJHJlZlxuICAgICAgcmV0dXJuIGEuY2lyY3VsYXIgPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmV4dGVuZGVkICE9PSBiLmV4dGVuZGVkKSB7XG4gICAgICAvLyBJZiB0aGUgJHJlZiBleHRlbmRzIHRoZSByZXNvbHZlZCB2YWx1ZSwgdGhlbiBzb3J0IGl0IGxvd2VyIHRoYW4gb3RoZXIgJHJlZnMgdGhhdCBkb24ndCBleHRlbmQgdGhlIHZhbHVlXG4gICAgICByZXR1cm4gYS5leHRlbmRlZCA/ICsxIDogLTE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuaW5kaXJlY3Rpb25zICE9PSBiLmluZGlyZWN0aW9ucykge1xuICAgICAgLy8gU29ydCBkaXJlY3QgcmVmZXJlbmNlcyBoaWdoZXIgdGhhbiBpbmRpcmVjdCByZWZlcmVuY2VzXG4gICAgICByZXR1cm4gYS5pbmRpcmVjdGlvbnMgLSBiLmluZGlyZWN0aW9ucztcbiAgICB9XG4gICAgZWxzZSBpZiAoYS5kZXB0aCAhPT0gYi5kZXB0aCkge1xuICAgICAgLy8gU29ydCAkcmVmcyBieSBob3cgY2xvc2UgdGhleSBhcmUgdG8gdGhlIEpTT04gU2NoZW1hIHJvb3RcbiAgICAgIHJldHVybiBhLmRlcHRoIC0gYi5kZXB0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaG93IGZhciBlYWNoICRyZWYgaXMgZnJvbSB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5LlxuICAgICAgLy8gTW9zdCBwZW9wbGUgd2lsbCBleHBlY3QgcmVmZXJlbmNlcyB0byBiZSBidW5kbGVkIGludG8gdGhlIHRoZSBcImRlZmluaXRpb25zXCIgcHJvcGVydHkgaWYgcG9zc2libGUuXG4gICAgICB2YXIgYURlZmluaXRpb25zSW5kZXggPSBhLnBhdGhGcm9tUm9vdC5sYXN0SW5kZXhPZignL2RlZmluaXRpb25zJyk7XG4gICAgICB2YXIgYkRlZmluaXRpb25zSW5kZXggPSBiLnBhdGhGcm9tUm9vdC5sYXN0SW5kZXhPZignL2RlZmluaXRpb25zJyk7XG5cbiAgICAgIGlmIChhRGVmaW5pdGlvbnNJbmRleCAhPT0gYkRlZmluaXRpb25zSW5kZXgpIHtcbiAgICAgICAgLy8gR2l2ZSBoaWdoZXIgcHJpb3JpdHkgdG8gdGhlICRyZWYgdGhhdCdzIGNsb3NlciB0byB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5XG4gICAgICAgIHJldHVybiBiRGVmaW5pdGlvbnNJbmRleCAtIGFEZWZpbml0aW9uc0luZGV4O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEFsbCBlbHNlIGlzIGVxdWFsLCBzbyB1c2UgdGhlIHNob3J0ZXIgcGF0aCwgd2hpY2ggd2lsbCBwcm9kdWNlIHRoZSBzaG9ydGVzdCBwb3NzaWJsZSByZWZlcmVuY2VcbiAgICAgICAgcmV0dXJuIGEucGF0aEZyb21Sb290Lmxlbmd0aCAtIGIucGF0aEZyb21Sb290Lmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHZhciBmaWxlLCBoYXNoLCBwYXRoRnJvbVJvb3Q7XG4gIGludmVudG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGRlYnVnKCdSZS1tYXBwaW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCBlbnRyeS4kcmVmLiRyZWYsIGVudHJ5LnBhdGhGcm9tUm9vdCk7XG5cbiAgICBpZiAoIWVudHJ5LmV4dGVybmFsKSB7XG4gICAgICAvLyBUaGlzICRyZWYgYWxyZWFkeSByZXNvbHZlcyB0byB0aGUgbWFpbiBKU09OIFNjaGVtYSBmaWxlXG4gICAgICBlbnRyeS4kcmVmLiRyZWYgPSBlbnRyeS5oYXNoO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbnRyeS5maWxlID09PSBmaWxlICYmIGVudHJ5Lmhhc2ggPT09IGhhc2gpIHtcbiAgICAgIC8vIFRoaXMgJHJlZiBwb2ludHMgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHByZXZvdXMgJHJlZiwgc28gcmVtYXAgaXQgdG8gdGhlIHNhbWUgcGF0aFxuICAgICAgZW50cnkuJHJlZi4kcmVmID0gcGF0aEZyb21Sb290O1xuICAgIH1cbiAgICBlbHNlIGlmIChlbnRyeS5maWxlID09PSBmaWxlICYmIGVudHJ5Lmhhc2guaW5kZXhPZihoYXNoICsgJy8nKSA9PT0gMCkge1xuICAgICAgLy8gVGhpcyAkcmVmIHBvaW50cyB0byB0aGUgYSBzdWItdmFsdWUgYXMgdGhlIHByZXZvdXMgJHJlZiwgc28gcmVtYXAgaXQgYmVuZWF0aCB0aGF0IHBhdGhcbiAgICAgIGVudHJ5LiRyZWYuJHJlZiA9IFBvaW50ZXIuam9pbihwYXRoRnJvbVJvb3QsIFBvaW50ZXIucGFyc2UoZW50cnkuaGFzaCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFdlJ3ZlIG1vdmVkIHRvIGEgbmV3IGZpbGUgb3IgbmV3IGhhc2hcbiAgICAgIGZpbGUgPSBlbnRyeS5maWxlO1xuICAgICAgaGFzaCA9IGVudHJ5Lmhhc2g7XG4gICAgICBwYXRoRnJvbVJvb3QgPSBlbnRyeS5wYXRoRnJvbVJvb3Q7XG5cbiAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0ICRyZWYgdG8gcG9pbnQgdG8gdGhpcyB2YWx1ZSwgc28gZGVyZWZlcmVuY2UgdGhlIHZhbHVlLlxuICAgICAgLy8gQW55IG90aGVyICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgdmFsdWUgd2lsbCBwb2ludCB0byB0aGlzICRyZWYgaW5zdGVhZFxuICAgICAgZW50cnkuJHJlZiA9IGVudHJ5LnBhcmVudFtlbnRyeS5rZXldID0gJFJlZi5kZXJlZmVyZW5jZShlbnRyeS4kcmVmLCBlbnRyeS52YWx1ZSk7XG5cbiAgICAgIGlmIChlbnRyeS5jaXJjdWxhcikge1xuICAgICAgICAvLyBUaGlzICRyZWYgcG9pbnRzIHRvIGl0c2VsZlxuICAgICAgICBlbnRyeS4kcmVmLiRyZWYgPSBlbnRyeS5wYXRoRnJvbVJvb3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVidWcoJyAgICBuZXcgdmFsdWU6ICVzJywgKGVudHJ5LiRyZWYgJiYgZW50cnkuJHJlZi4kcmVmKSA/IGVudHJ5LiRyZWYuJHJlZiA6ICdbb2JqZWN0IE9iamVjdF0nKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBmaW5kSW5JbnZlbnRvcnkgKGludmVudG9yeSwgJHJlZlBhcmVudCwgJHJlZktleSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGludmVudG9yeS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBleGlzdGluZ0VudHJ5ID0gaW52ZW50b3J5W2ldO1xuICAgIGlmIChleGlzdGluZ0VudHJ5LnBhcmVudCA9PT0gJHJlZlBhcmVudCAmJiBleGlzdGluZ0VudHJ5LmtleSA9PT0gJHJlZktleSkge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nRW50cnk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUZyb21JbnZlbnRvcnkgKGludmVudG9yeSwgZW50cnkpIHtcbiAgdmFyIGluZGV4ID0gaW52ZW50b3J5LmluZGV4T2YoZW50cnkpO1xuICBpbnZlbnRvcnkuc3BsaWNlKGluZGV4LCAxKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcclxuICAgIFBvaW50ZXIgPSByZXF1aXJlKCcuL3BvaW50ZXInKSxcclxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxyXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcclxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZGVyZWZlcmVuY2U7XHJcblxyXG4vKipcclxuICogQ3Jhd2xzIHRoZSBKU09OIHNjaGVtYSwgZmluZHMgYWxsIEpTT04gcmVmZXJlbmNlcywgYW5kIGRlcmVmZXJlbmNlcyB0aGVtLlxyXG4gKiBUaGlzIG1ldGhvZCBtdXRhdGVzIHRoZSBKU09OIHNjaGVtYSBvYmplY3QsIHJlcGxhY2luZyBKU09OIHJlZmVyZW5jZXMgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZS5cclxuICpcclxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKi9cclxuZnVuY3Rpb24gZGVyZWZlcmVuY2UgKHBhcnNlciwgb3B0aW9ucykge1xyXG4gIGRlYnVnKCdEZXJlZmVyZW5jaW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xyXG4gIHZhciBkZXJlZmVyZW5jZWQgPSBjcmF3bChwYXJzZXIuc2NoZW1hLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgsICcjJywgW10sIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XHJcbiAgcGFyc2VyLiRyZWZzLmNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gIHBhcnNlci5zY2hlbWEgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWN1cnNpdmVseSBjcmF3bHMgdGhlIGdpdmVuIHZhbHVlLCBhbmQgZGVyZWZlcmVuY2VzIGFueSBKU09OIHJlZmVyZW5jZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIHZhbHVlIHRvIGNyYXdsLiBJZiBpdCdzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGBvYmpgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiBgb2JqYCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxyXG4gKiBAcGFyYW0ge29iamVjdFtdfSBwYXJlbnRzIC0gQW4gYXJyYXkgb2YgdGhlIHBhcmVudCBvYmplY3RzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGVyZWZlcmVuY2VkXHJcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcclxuICogQHJldHVybnMge3t2YWx1ZTogb2JqZWN0LCBjaXJjdWxhcjogYm9vbGVhbn19XHJcbiAqL1xyXG5mdW5jdGlvbiBjcmF3bCAob2JqLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKSB7XHJcbiAgdmFyIGRlcmVmZXJlbmNlZDtcclxuICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgdmFsdWU6IG9iaixcclxuICAgIGNpcmN1bGFyOiBmYWxzZVxyXG4gIH07XHJcblxyXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcclxuICAgIHBhcmVudHMucHVzaChvYmopO1xyXG5cclxuICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYob2JqLCBvcHRpb25zKSkge1xyXG4gICAgICBkZXJlZmVyZW5jZWQgPSBkZXJlZmVyZW5jZSRSZWYob2JqLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgcmVzdWx0LmNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICByZXN1bHQudmFsdWUgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xyXG4gICAgICAgIHZhciBrZXlQYXRoRnJvbVJvb3QgPSBQb2ludGVyLmpvaW4ocGF0aEZyb21Sb290LCBrZXkpO1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xyXG4gICAgICAgIHZhciBjaXJjdWxhciA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKHZhbHVlLCBvcHRpb25zKSkge1xyXG4gICAgICAgICAgZGVyZWZlcmVuY2VkID0gZGVyZWZlcmVuY2UkUmVmKHZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICAgICAgb2JqW2tleV0gPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHBhcmVudHMuaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlZCA9IGNyYXdsKHZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgY2lyY3VsYXIgPSBkZXJlZmVyZW5jZWQuY2lyY3VsYXI7XHJcbiAgICAgICAgICAgIG9ialtrZXldID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNpcmN1bGFyID0gZm91bmRDaXJjdWxhclJlZmVyZW5jZShrZXlQYXRoLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIFwiaXNDaXJjdWxhclwiIGZsYWcgaWYgdGhpcyBvciBhbnkgb3RoZXIgcHJvcGVydHkgaXMgY2lyY3VsYXJcclxuICAgICAgICByZXN1bHQuY2lyY3VsYXIgPSByZXN1bHQuY2lyY3VsYXIgfHwgY2lyY3VsYXI7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmVudHMucG9wKCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG4vKipcclxuICogRGVyZWZlcmVuY2VzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSwgYW5kIHRoZW4gY3Jhd2xzIHRoZSByZXN1bHRpbmcgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7eyRyZWY6IHN0cmluZ319ICRyZWYgLSBUaGUgSlNPTiBSZWZlcmVuY2UgdG8gcmVzb2x2ZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgYCRyZWZgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiBgJHJlZmAgZnJvbSB0aGUgc2NoZW1hIHJvb3RcclxuICogQHBhcmFtIHtvYmplY3RbXX0gcGFyZW50cyAtIEFuIGFycmF5IG9mIHRoZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRlcmVmZXJlbmNlZFxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHt7dmFsdWU6IG9iamVjdCwgY2lyY3VsYXI6IGJvb2xlYW59fVxyXG4gKi9cclxuZnVuY3Rpb24gZGVyZWZlcmVuY2UkUmVmICgkcmVmLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKSB7XHJcbiAgZGVidWcoJ0RlcmVmZXJlbmNpbmcgJHJlZiBwb2ludGVyIFwiJXNcIiBhdCAlcycsICRyZWYuJHJlZiwgcGF0aCk7XHJcblxyXG4gIHZhciAkcmVmUGF0aCA9IHVybC5yZXNvbHZlKHBhdGgsICRyZWYuJHJlZik7XHJcbiAgdmFyIHBvaW50ZXIgPSAkcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XHJcblxyXG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzXHJcbiAgdmFyIGRpcmVjdENpcmN1bGFyID0gcG9pbnRlci5jaXJjdWxhcjtcclxuICB2YXIgY2lyY3VsYXIgPSBkaXJlY3RDaXJjdWxhciB8fCBwYXJlbnRzLmluZGV4T2YocG9pbnRlci52YWx1ZSkgIT09IC0xO1xyXG4gIGNpcmN1bGFyICYmIGZvdW5kQ2lyY3VsYXJSZWZlcmVuY2UocGF0aCwgJHJlZnMsIG9wdGlvbnMpO1xyXG5cclxuICAvLyBEZXJlZmVyZW5jZSB0aGUgSlNPTiByZWZlcmVuY2VcclxuICB2YXIgZGVyZWZlcmVuY2VkVmFsdWUgPSAkUmVmLmRlcmVmZXJlbmNlKCRyZWYsIHBvaW50ZXIudmFsdWUpO1xyXG5cclxuICAvLyBDcmF3bCB0aGUgZGVyZWZlcmVuY2VkIHZhbHVlICh1bmxlc3MgaXQncyBjaXJjdWxhcilcclxuICBpZiAoIWNpcmN1bGFyKSB7XHJcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZSBpcyBjaXJjdWxhclxyXG4gICAgdmFyIGRlcmVmZXJlbmNlZCA9IGNyYXdsKGRlcmVmZXJlbmNlZFZhbHVlLCBwb2ludGVyLnBhdGgsIHBhdGhGcm9tUm9vdCwgcGFyZW50cywgJHJlZnMsIG9wdGlvbnMpO1xyXG4gICAgY2lyY3VsYXIgPSBkZXJlZmVyZW5jZWQuY2lyY3VsYXI7XHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZSA9IGRlcmVmZXJlbmNlZC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGlmIChjaXJjdWxhciAmJiAhZGlyZWN0Q2lyY3VsYXIgJiYgb3B0aW9ucy5kZXJlZmVyZW5jZS5jaXJjdWxhciA9PT0gJ2lnbm9yZScpIHtcclxuICAgIC8vIFRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gXCJpZ25vcmVcIiBjaXJjdWxhciByZWZlcmVuY2VzLCBzbyBkb24ndCBjaGFuZ2UgdGhlIHZhbHVlXHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZSA9ICRyZWY7XHJcbiAgfVxyXG5cclxuICBpZiAoZGlyZWN0Q2lyY3VsYXIpIHtcclxuICAgIC8vIFRoZSBwb2ludGVyIGlzIGEgRElSRUNUIGNpcmN1bGFyIHJlZmVyZW5jZSAoaS5lLiBpdCByZWZlcmVuY2VzIGl0c2VsZikuXHJcbiAgICAvLyBTbyByZXBsYWNlIHRoZSAkcmVmIHBhdGggd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290XHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZS4kcmVmID0gcGF0aEZyb21Sb290O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNpcmN1bGFyOiBjaXJjdWxhcixcclxuICAgIHZhbHVlOiBkZXJlZmVyZW5jZWRWYWx1ZVxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDYWxsZWQgd2hlbiBhIGNpcmN1bGFyIHJlZmVyZW5jZSBpcyBmb3VuZC5cclxuICogSXQgc2V0cyB0aGUge0BsaW5rICRSZWZzI2NpcmN1bGFyfSBmbGFnLCBhbmQgdGhyb3dzIGFuIGVycm9yIGlmIG9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIgaXMgZmFsc2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlQYXRoIC0gVGhlIEpTT04gUmVmZXJlbmNlIHBhdGggb2YgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZVxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIGFsd2F5cyByZXR1cm5zIHRydWUsIHRvIGluZGljYXRlIHRoYXQgYSBjaXJjdWxhciByZWZlcmVuY2Ugd2FzIGZvdW5kXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3VuZENpcmN1bGFyUmVmZXJlbmNlIChrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykge1xyXG4gICRyZWZzLmNpcmN1bGFyID0gdHJ1ZTtcclxuICBpZiAoIW9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIpIHtcclxuICAgIHRocm93IG9uby5yZWZlcmVuY2UoJ0NpcmN1bGFyICRyZWYgcG9pbnRlciBmb3VuZCBhdCAlcycsIGtleVBhdGgpO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBPcHRpb25zID0gcmVxdWlyZSgnLi9vcHRpb25zJyksXG4gICAgJFJlZnMgPSByZXF1aXJlKCcuL3JlZnMnKSxcbiAgICBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKSxcbiAgICBub3JtYWxpemVBcmdzID0gcmVxdWlyZSgnLi9ub3JtYWxpemUtYXJncycpLFxuICAgIHJlc29sdmVFeHRlcm5hbCA9IHJlcXVpcmUoJy4vcmVzb2x2ZS1leHRlcm5hbCcpLFxuICAgIGJ1bmRsZSA9IHJlcXVpcmUoJy4vYnVuZGxlJyksXG4gICAgZGVyZWZlcmVuY2UgPSByZXF1aXJlKCcuL2RlcmVmZXJlbmNlJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpLFxuICAgIG1heWJlID0gcmVxdWlyZSgnY2FsbC1tZS1tYXliZScpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cy5ZQU1MID0gcmVxdWlyZSgnLi91dGlsL3lhbWwnKTtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIHBhcnNlcyBhIEpTT04gc2NoZW1hLCBidWlsZHMgYSBtYXAgb2YgaXRzIEpTT04gcmVmZXJlbmNlcyBhbmQgdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLFxuICogYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHRyYXZlcnNpbmcsIG1hbmlwdWxhdGluZywgYW5kIGRlcmVmZXJlbmNpbmcgdGhvc2UgcmVmZXJlbmNlcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gJFJlZlBhcnNlciAoKSB7XG4gIC8qKlxuICAgKiBUaGUgcGFyc2VkIChhbmQgcG9zc2libHkgZGVyZWZlcmVuY2VkKSBKU09OIHNjaGVtYSBvYmplY3RcbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHJlYWRvbmx5XG4gICAqL1xuICB0aGlzLnNjaGVtYSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAgICpcbiAgICogQHR5cGUgeyRSZWZzfVxuICAgKiBAcmVhZG9ubHlcbiAgICovXG4gIHRoaXMuJHJlZnMgPSBuZXcgJFJlZnMoKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLlxuICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmVzb2x2ZSBhbnkgSlNPTiByZWZlcmVuY2VzLlxuICogSXQganVzdCByZWFkcyBhIHNpbmdsZSBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQsIGFuZCBwYXJzZSBpdCBhcyBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHBhcnNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIENsYXNzID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXRoaXNcbiAgdmFyIGluc3RhbmNlID0gbmV3IENsYXNzKCk7XG4gIHJldHVybiBpbnN0YW5jZS5wYXJzZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYS5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJlc29sdmUgYW55IEpTT04gcmVmZXJlbmNlcy5cbiAqIEl0IGp1c3QgcmVhZHMgYSBzaW5nbGUgZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LCBhbmQgcGFyc2UgaXQgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFhcmdzLnBhdGggJiYgIWFyZ3Muc2NoZW1hKSB7XG4gICAgdmFyIGVyciA9IG9ubygnRXhwZWN0ZWQgYSBmaWxlIHBhdGgsIFVSTCwgb3Igb2JqZWN0LiBHb3QgJXMnLCBhcmdzLnBhdGggfHwgYXJncy5zY2hlbWEpO1xuICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgfVxuXG4gIC8vIFJlc2V0IGV2ZXJ5dGhpbmdcbiAgdGhpcy5zY2hlbWEgPSBudWxsO1xuICB0aGlzLiRyZWZzID0gbmV3ICRSZWZzKCk7XG5cbiAgLy8gSWYgdGhlIHBhdGggaXMgYSBmaWxlc3lzdGVtIHBhdGgsIHRoZW4gY29udmVydCBpdCB0byBhIFVSTC5cbiAgLy8gTk9URTogQWNjb3JkaW5nIHRvIHRoZSBKU09OIFJlZmVyZW5jZSBzcGVjLCB0aGVzZSBzaG91bGQgYWxyZWFkeSBiZSBVUkxzLFxuICAvLyBidXQsIGluIHByYWN0aWNlLCBtYW55IHBlb3BsZSB1c2UgbG9jYWwgZmlsZXN5c3RlbSBwYXRocyBpbnN0ZWFkLlxuICAvLyBTbyB3ZSdyZSBiZWluZyBnZW5lcm91cyBoZXJlIGFuZCBkb2luZyB0aGUgY29udmVyc2lvbiBhdXRvbWF0aWNhbGx5LlxuICAvLyBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBhIDEwMCUgYnVsbGV0cHJvb2Ygc29sdXRpb24uXG4gIC8vIElmIGl0IGRvZXNuJ3Qgd29yayBmb3IgeW91ciB1c2UtY2FzZSwgdGhlbiB1c2UgYSBVUkwgaW5zdGVhZC5cbiAgdmFyIHBhdGhUeXBlID0gJ2h0dHAnO1xuICBpZiAodXJsLmlzRmlsZVN5c3RlbVBhdGgoYXJncy5wYXRoKSkge1xuICAgIGFyZ3MucGF0aCA9IHVybC5mcm9tRmlsZVN5c3RlbVBhdGgoYXJncy5wYXRoKTtcbiAgICBwYXRoVHlwZSA9ICdmaWxlJztcbiAgfVxuXG4gIC8vIFJlc29sdmUgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHNjaGVtYVxuICBhcmdzLnBhdGggPSB1cmwucmVzb2x2ZSh1cmwuY3dkKCksIGFyZ3MucGF0aCk7XG5cbiAgaWYgKGFyZ3Muc2NoZW1hICYmIHR5cGVvZiBhcmdzLnNjaGVtYSA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBBIHNjaGVtYSBvYmplY3Qgd2FzIHBhc3NlZC1pbi5cbiAgICAvLyBTbyBpbW1lZGlhdGVseSBhZGQgYSBuZXcgJFJlZiB3aXRoIHRoZSBzY2hlbWEgb2JqZWN0IGFzIGl0cyB2YWx1ZVxuICAgIHZhciAkcmVmID0gdGhpcy4kcmVmcy5fYWRkKGFyZ3MucGF0aCk7XG4gICAgJHJlZi52YWx1ZSA9IGFyZ3Muc2NoZW1hO1xuICAgICRyZWYucGF0aFR5cGUgPSBwYXRoVHlwZTtcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGFyZ3Muc2NoZW1hKTtcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBQYXJzZSB0aGUgc2NoZW1hIGZpbGUvdXJsXG4gICAgcHJvbWlzZSA9IHBhcnNlKGFyZ3MucGF0aCwgdGhpcy4kcmVmcywgYXJncy5vcHRpb25zKTtcbiAgfVxuXG4gIHZhciBtZSA9IHRoaXM7XG4gIHJldHVybiBwcm9taXNlXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgaWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcgfHwgQnVmZmVyLmlzQnVmZmVyKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgb25vLnN5bnRheCgnXCIlc1wiIGlzIG5vdCBhIHZhbGlkIEpTT04gU2NoZW1hJywgbWUuJHJlZnMuX3Jvb3QkUmVmLnBhdGggfHwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtZS5zY2hlbWEgPSByZXN1bHQ7XG4gICAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlc29sdmUobWUuc2NoZW1hKSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEgYW5kIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGluY2x1ZGluZyByZWZlcmVuY2VzIGluXG4gKiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCBhbmQgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja11cbiAqIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKi9cbiRSZWZQYXJzZXIucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UucmVzb2x2ZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSBhbmQgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgaW5jbHVkaW5nIHJlZmVyZW5jZXMgaW5cbiAqIGV4dGVybmFsbHktcmVmZXJlbmNlZCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkIGFuZCByZXNvbHZlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXVxuICogLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSB7QGxpbmsgJFJlZnN9IG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggYSB7QGxpbmsgJFJlZnN9IG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBtZSA9IHRoaXM7XG4gIHZhciBhcmdzID0gbm9ybWFsaXplQXJncyhhcmd1bWVudHMpO1xuXG4gIHJldHVybiB0aGlzLnBhcnNlKGFyZ3MucGF0aCwgYXJncy5zY2hlbWEsIGFyZ3Mub3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZUV4dGVybmFsKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS4kcmVmcykpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSwgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgYW5kIGJ1bmRsZXMgYWxsIGV4dGVybmFsIHJlZmVyZW5jZXNcbiAqIGludG8gdGhlIG1haW4gSlNPTiBzY2hlbWEuIFRoaXMgcHJvZHVjZXMgYSBKU09OIHNjaGVtYSB0aGF0IG9ubHkgaGFzICppbnRlcm5hbCogcmVmZXJlbmNlcyxcbiAqIG5vdCBhbnkgKmV4dGVybmFsKiByZWZlcmVuY2VzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQsIHJlc29sdmVkLCBhbmQgZGVyZWZlcmVuY2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBidW5kbGVkIEpTT04gc2NoZW1hIG9iamVjdFxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIuYnVuZGxlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIENsYXNzID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXRoaXNcbiAgdmFyIGluc3RhbmNlID0gbmV3IENsYXNzKCk7XG4gIHJldHVybiBpbnN0YW5jZS5idW5kbGUuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBidW5kbGVzIGFsbCBleHRlcm5hbCByZWZlcmVuY2VzXG4gKiBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLiBUaGlzIHByb2R1Y2VzIGEgSlNPTiBzY2hlbWEgdGhhdCBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsXG4gKiBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnByb3RvdHlwZS5idW5kbGUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcblxuICByZXR1cm4gdGhpcy5yZXNvbHZlKGFyZ3MucGF0aCwgYXJncy5zY2hlbWEsIGFyZ3Mub3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBidW5kbGUobWUsIGFyZ3Mub3B0aW9ucyk7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSwgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgYW5kIGRlcmVmZXJlbmNlcyB0aGUgSlNPTiBzY2hlbWEuXG4gKiBUaGF0IGlzLCBhbGwgSlNPTiByZWZlcmVuY2VzIGFyZSByZXBsYWNlZCB3aXRoIHRoZWlyIHJlc29sdmVkIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgZGVyZWZlcmVuY2VkIEpTT04gc2NoZW1hIG9iamVjdFxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgZGVyZWZlcmVuY2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UuZGVyZWZlcmVuY2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlIEpTT04gc2NoZW1hLlxuICogVGhhdCBpcywgYWxsIEpTT04gcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLmRlcmVmZXJlbmNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHRoaXMucmVzb2x2ZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgZGVyZWZlcmVuY2UobWUsIGFyZ3Mub3B0aW9ucyk7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBPcHRpb25zID0gcmVxdWlyZSgnLi9vcHRpb25zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplQXJncztcblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFjY291bnRpbmcgZm9yIG9wdGlvbmFsIGFyZ3MuXG4gKlxuICogQHBhcmFtIHtBcmd1bWVudHN9IGFyZ3NcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFyZ3MgKGFyZ3MpIHtcbiAgdmFyIHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2s7XG4gIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKTtcblxuICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRoZSBsYXN0IHBhcmFtZXRlciBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgIC8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHBhdGhcbiAgICBwYXRoID0gYXJnc1swXTtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMl0gPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgc2NoZW1hLCBhbmQgdGhlIHRoaXJkIHBhcmFtZXRlciBpcyB0aGUgb3B0aW9uc1xuICAgICAgc2NoZW1hID0gYXJnc1sxXTtcbiAgICAgIG9wdGlvbnMgPSBhcmdzWzJdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBvcHRpb25zXG4gICAgICBzY2hlbWEgPSB1bmRlZmluZWQ7XG4gICAgICBvcHRpb25zID0gYXJnc1sxXTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgc2NoZW1hXG4gICAgcGF0aCA9ICcnO1xuICAgIHNjaGVtYSA9IGFyZ3NbMF07XG4gICAgb3B0aW9ucyA9IGFyZ3NbMV07XG4gIH1cblxuICBpZiAoIShvcHRpb25zIGluc3RhbmNlb2YgT3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0gbmV3IE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICBjYWxsYmFjazogY2FsbGJhY2tcbiAgfTtcbn1cbiIsIi8qIGVzbGludCBsaW5lcy1hcm91bmQtY29tbWVudDogWzIsIHtiZWZvcmVCbG9ja0NvbW1lbnQ6IGZhbHNlfV0gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIGpzb25QYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvanNvbicpLFxuICAgIHlhbWxQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMveWFtbCcpLFxuICAgIHRleHRQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvdGV4dCcpLFxuICAgIGJpbmFyeVBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2Vycy9iaW5hcnknKSxcbiAgICBmaWxlUmVzb2x2ZXIgPSByZXF1aXJlKCcuL3Jlc29sdmVycy9maWxlJyksXG4gICAgaHR0cFJlc29sdmVyID0gcmVxdWlyZSgnLi9yZXNvbHZlcnMvaHR0cCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZQYXJzZXJPcHRpb25zO1xuXG4vKipcbiAqIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IEpTT04gc2NoZW1hcyBhcmUgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHwkUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3ZlcnJpZGRlbiBvcHRpb25zXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gJFJlZlBhcnNlck9wdGlvbnMgKG9wdGlvbnMpIHtcbiAgbWVyZ2UodGhpcywgJFJlZlBhcnNlck9wdGlvbnMuZGVmYXVsdHMpO1xuICBtZXJnZSh0aGlzLCBvcHRpb25zKTtcbn1cblxuJFJlZlBhcnNlck9wdGlvbnMuZGVmYXVsdHMgPSB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBkaWZmZXJlbnQgdHlwZXMgb2YgZmlsZXMgd2lsbCBiZSBwYXJzZWQuXG4gICAqXG4gICAqIFlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgcGFyc2VycyBvZiB5b3VyIG93biwgcmVwbGFjZSBhbiBleGlzdGluZyBvbmUgd2l0aFxuICAgKiB5b3VyIG93biBpbXBsZW1lbmF0aW9uLCBvciBkaXNhYmxlIGFueSBwYXJzZXIgYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cbiAgICovXG4gIHBhcnNlOiB7XG4gICAganNvbjoganNvblBhcnNlcixcbiAgICB5YW1sOiB5YW1sUGFyc2VyLFxuICAgIHRleHQ6IHRleHRQYXJzZXIsXG4gICAgYmluYXJ5OiBiaW5hcnlQYXJzZXIsXG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IEpTT04gUmVmZXJlbmNlcyB3aWxsIGJlIHJlc29sdmVkLlxuICAgKlxuICAgKiBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIHJlc29sdmVycyBvZiB5b3VyIG93biwgcmVwbGFjZSBhbiBleGlzdGluZyBvbmUgd2l0aFxuICAgKiB5b3VyIG93biBpbXBsZW1lbmF0aW9uLCBvciBkaXNhYmxlIGFueSByZXNvbHZlciBieSBzZXR0aW5nIGl0IHRvIGZhbHNlLlxuICAgKi9cbiAgcmVzb2x2ZToge1xuICAgIGZpbGU6IGZpbGVSZXNvbHZlcixcbiAgICBodHRwOiBodHRwUmVzb2x2ZXIsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXh0ZXJuYWwgJHJlZiBwb2ludGVycyB3aWxsIGJlIHJlc29sdmVkLlxuICAgICAqIElmIHRoaXMgb3B0aW9uIGlzIGRpc2FibGVkLCB0aGVuIG5vbmUgb2YgYWJvdmUgcmVzb2x2ZXJzIHdpbGwgYmUgY2FsbGVkLlxuICAgICAqIEluc3RlYWQsIGV4dGVybmFsICRyZWYgcG9pbnRlcnMgd2lsbCBzaW1wbHkgYmUgaWdub3JlZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIGV4dGVybmFsOiB0cnVlLFxuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSB0eXBlcyBvZiBKU09OIHJlZmVyZW5jZXMgdGhhdCBhcmUgYWxsb3dlZC5cbiAgICovXG4gIGRlcmVmZXJlbmNlOiB7XG4gICAgLyoqXG4gICAgICogRGVyZWZlcmVuY2UgY2lyY3VsYXIgKHJlY3Vyc2l2ZSkgSlNPTiByZWZlcmVuY2VzP1xuICAgICAqIElmIGZhbHNlLCB0aGVuIGEge0BsaW5rIFJlZmVyZW5jZUVycm9yfSB3aWxsIGJlIHRocm93biBpZiBhIGNpcmN1bGFyIHJlZmVyZW5jZSBpcyBmb3VuZC5cbiAgICAgKiBJZiBcImlnbm9yZVwiLCB0aGVuIGNpcmN1bGFyIHJlZmVyZW5jZXMgd2lsbCBub3QgYmUgZGVyZWZlcmVuY2VkLlxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW58c3RyaW5nfVxuICAgICAqL1xuICAgIGNpcmN1bGFyOiB0cnVlXG4gIH0sXG59O1xuXG4vKipcbiAqIE1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc291cmNlIG9iamVjdCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgLSBUaGUgb2JqZWN0IHRoYXQgd2UncmUgcG9wdWxhdGluZ1xuICogQHBhcmFtIHs/b2JqZWN0fSBzb3VyY2UgLSBUaGUgb3B0aW9ucyB0aGF0IGFyZSBiZWluZyBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG1lcmdlICh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoaXNNZXJnZWFibGUoc291cmNlKSkge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHNvdXJjZVNldHRpbmcgPSBzb3VyY2Vba2V5XTtcbiAgICAgIHZhciB0YXJnZXRTZXR0aW5nID0gdGFyZ2V0W2tleV07XG5cbiAgICAgIGlmIChpc01lcmdlYWJsZShzb3VyY2VTZXR0aW5nKSkge1xuICAgICAgICAvLyBJdCdzIGEgbmVzdGVkIG9iamVjdCwgc28gbWVyZ2UgaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBtZXJnZSh0YXJnZXRTZXR0aW5nIHx8IHt9LCBzb3VyY2VTZXR0aW5nKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHNvdXJjZVNldHRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBJdCdzIGEgc2NhbGFyIHZhbHVlLCBmdW5jdGlvbiwgb3IgYXJyYXkuIE5vIG1lcmdpbmcgbmVjZXNzYXJ5LiBKdXN0IG92ZXJ3cml0ZSB0aGUgdGFyZ2V0IHZhbHVlLlxuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVNldHRpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBjYW4gYmUgbWVyZ2VkLFxuICogb3IgaWYgaXQgaXMgYSBzY2FsYXIgdmFsdWUgdGhhdCBzaG91bGQganVzdCBvdmVycmlkZSB0aGUgdGFyZ2V0IHZhbHVlLlxuICpcbiAqIEBwYXJhbSAgIHsqfSAgdmFsXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNZXJnZWFibGUgKHZhbCkge1xuICByZXR1cm4gdmFsICYmXG4gICAgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSAmJlxuICAgICFBcnJheS5pc0FycmF5KHZhbCkgJiZcbiAgICAhKHZhbCBpbnN0YW5jZW9mIFJlZ0V4cCkgJiZcbiAgICAhKHZhbCBpbnN0YW5jZW9mIERhdGUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyksXG4gICAgcGx1Z2lucyA9IHJlcXVpcmUoJy4vdXRpbC9wbHVnaW5zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aCBvciBVUkwuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGlzIHBhdGggTVVTVCBhbHJlYWR5IGJlIHJlc29sdmVkLCBzaW5jZSBgcmVhZGAgZG9lc24ndCBrbm93IHRoZSByZXNvbHV0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBwYXJzZWQgZmlsZSBjb250ZW50cywgTk9UIHRoZSByYXcgKEJ1ZmZlcikgY29udGVudHMuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICB0cnkge1xuICAgIC8vIFJlbW92ZSB0aGUgVVJMIGZyYWdtZW50LCBpZiBhbnlcbiAgICBwYXRoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcblxuICAgIC8vIEFkZCBhIG5ldyAkUmVmIGZvciB0aGlzIGZpbGUsIGV2ZW4gdGhvdWdoIHdlIGRvbid0IGhhdmUgdGhlIHZhbHVlIHlldC5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBzaW11bHRhbmVvdXNseSByZWFkICYgcGFyc2UgdGhlIHNhbWUgZmlsZSBtdWx0aXBsZSB0aW1lc1xuICAgIHZhciAkcmVmID0gJHJlZnMuX2FkZChwYXRoKTtcblxuICAgIC8vIFRoaXMgXCJmaWxlIG9iamVjdFwiIHdpbGwgYmUgcGFzc2VkIHRvIGFsbCByZXNvbHZlcnMgYW5kIHBhcnNlcnMuXG4gICAgdmFyIGZpbGUgPSB7XG4gICAgICB1cmw6IHBhdGgsXG4gICAgICBleHRlbnNpb246IHVybC5nZXRFeHRlbnNpb24ocGF0aCksXG4gICAgfTtcblxuICAgIC8vIFJlYWQgdGhlIGZpbGUgYW5kIHRoZW4gcGFyc2UgdGhlIGRhdGFcbiAgICByZXR1cm4gcmVhZEZpbGUoZmlsZSwgb3B0aW9ucylcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNvbHZlcikge1xuICAgICAgICAkcmVmLnBhdGhUeXBlID0gcmVzb2x2ZXIucGx1Z2luLm5hbWU7XG4gICAgICAgIGZpbGUuZGF0YSA9IHJlc29sdmVyLnJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmlsZShmaWxlLCBvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgICRyZWYudmFsdWUgPSBwYXJzZXIucmVzdWx0O1xuICAgICAgICByZXR1cm4gcGFyc2VyLnJlc3VsdDtcbiAgICAgIH0pO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGdpdmVuIGZpbGUsIHVzaW5nIHRoZSBjb25maWd1cmVkIHJlc29sdmVyIHBsdWdpbnNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHJhdyBmaWxlIGNvbnRlbnRzIGFuZCB0aGUgcmVzb2x2ZXIgdGhhdCB3YXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gcmVhZEZpbGUgKGZpbGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBkZWJ1ZygnUmVhZGluZyAlcycsIGZpbGUudXJsKTtcblxuICAgIC8vIEZpbmQgdGhlIHJlc29sdmVycyB0aGF0IGNhbiByZWFkIHRoaXMgZmlsZVxuICAgIHZhciByZXNvbHZlcnMgPSBwbHVnaW5zLmFsbChvcHRpb25zLnJlc29sdmUpO1xuICAgIHJlc29sdmVycyA9IHBsdWdpbnMuZmlsdGVyKHJlc29sdmVycywgJ2NhblJlYWQnLCBmaWxlKTtcblxuICAgIC8vIFJ1biB0aGUgcmVzb2x2ZXJzLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gc3VjY2VlZHNcbiAgICBwbHVnaW5zLnNvcnQocmVzb2x2ZXJzKTtcbiAgICBwbHVnaW5zLnJ1bihyZXNvbHZlcnMsICdyZWFkJywgZmlsZSlcbiAgICAgIC50aGVuKHJlc29sdmUsIG9uRXJyb3IpO1xuXG4gICAgZnVuY3Rpb24gb25FcnJvciAoZXJyKSB7XG4gICAgICAvLyBUaHJvdyB0aGUgb3JpZ2luYWwgZXJyb3IsIGlmIGl0J3Mgb25lIG9mIG91ciBvd24gKHVzZXItZnJpZW5kbHkpIGVycm9ycy5cbiAgICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYSBnZW5lcmljLCBmcmllbmRseSBlcnJvci5cbiAgICAgIGlmIChlcnIgJiYgIShlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ1VuYWJsZSB0byByZXNvbHZlICRyZWYgcG9pbnRlciBcIiVzXCInLCBmaWxlLnVybCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlJ3MgY29udGVudHMsIHVzaW5nIHRoZSBjb25maWd1cmVkIHBhcnNlciBwbHVnaW5zLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIGZpbGUgY29udGVudHMgYW5kIHRoZSBwYXJzZXIgdGhhdCB3YXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VGaWxlIChmaWxlLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ1BhcnNpbmcgJXMnLCBmaWxlLnVybCk7XG5cbiAgICAvLyBGaW5kIHRoZSBwYXJzZXJzIHRoYXQgY2FuIHJlYWQgdGhpcyBmaWxlIHR5cGUuXG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgcGFyc2VycyBhcmUgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoaXMgZmlsZSwgdGhlbiB3ZSdsbCB0cnkgQUxMIG9mIHRoZW0uXG4gICAgLy8gVGhpcyBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGZpbGUgSVMgYSBzdXBwb3J0ZWQgdHlwZSwganVzdCB3aXRoIGFuIHVua25vd24gZXh0ZW5zaW9uLlxuICAgIHZhciBhbGxQYXJzZXJzID0gcGx1Z2lucy5hbGwob3B0aW9ucy5wYXJzZSk7XG4gICAgdmFyIGZpbHRlcmVkUGFyc2VycyA9IHBsdWdpbnMuZmlsdGVyKGFsbFBhcnNlcnMsICdjYW5QYXJzZScsIGZpbGUpO1xuICAgIHZhciBwYXJzZXJzID0gZmlsdGVyZWRQYXJzZXJzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZFBhcnNlcnMgOiBhbGxQYXJzZXJzO1xuXG4gICAgLy8gUnVuIHRoZSBwYXJzZXJzLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gc3VjY2VlZHNcbiAgICBwbHVnaW5zLnNvcnQocGFyc2Vycyk7XG4gICAgcGx1Z2lucy5ydW4ocGFyc2VycywgJ3BhcnNlJywgZmlsZSlcbiAgICAgIC50aGVuKG9uUGFyc2VkLCBvbkVycm9yKTtcblxuICAgIGZ1bmN0aW9uIG9uUGFyc2VkIChwYXJzZXIpIHtcbiAgICAgIGlmICghcGFyc2VyLnBsdWdpbi5hbGxvd0VtcHR5ICYmIGlzRW1wdHkocGFyc2VyLnJlc3VsdCkpIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ0Vycm9yIHBhcnNpbmcgXCIlc1wiIGFzICVzLiBcXG5QYXJzZWQgdmFsdWUgaXMgZW1wdHknLCBmaWxlLnVybCwgcGFyc2VyLnBsdWdpbi5uYW1lKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShwYXJzZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBlcnIgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihlcnIpO1xuICAgICAgICByZWplY3Qob25vLnN5bnRheChlcnIsICdFcnJvciBwYXJzaW5nICVzJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZWplY3Qob25vLnN5bnRheCgnVW5hYmxlIHRvIHBhcnNlICVzJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGFyc2VkIHZhbHVlIGlzIFwiZW1wdHlcIi5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHx8XG4gICAgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJJTkFSWV9SRUdFWFAgPSAvXFwuKGpwZWd8anBnfGdpZnxwbmd8Ym1wfGljbykkL2k7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogNDAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcyAoemVybyBieXRlcykuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgcmV0dXJuIHRydWUgd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgcmV0dXJuIGZhbHNlIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIGFsbCBwYXJzZXJzIHJldHVybmVkIGZhbHNlLCBpbiB3aGljaCBjYXNlXG4gICAqIGV2ZXJ5IHBhcnNlciB3aWxsIGJlIHRyaWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBjYW5QYXJzZTogZnVuY3Rpb24gaXNCaW5hcnkgKGZpbGUpIHtcbiAgICAvLyBVc2UgdGhpcyBwYXJzZXIgaWYgdGhlIGZpbGUgaXMgYSBCdWZmZXIsIGFuZCBoYXMgYSBrbm93biBiaW5hcnkgZXh0ZW5zaW9uXG4gICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpICYmIEJJTkFSWV9SRUdFWFAudGVzdChmaWxlLnVybCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgZ2l2ZW4gZGF0YSBhcyBhIEJ1ZmZlciAoYnl0ZSBhcnJheSkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlQmluYXJ5IChmaWxlKSB7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFRoaXMgd2lsbCByZWplY3QgaWYgZGF0YSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGEgc3RyaW5nIG9yIHR5cGVkIGFycmF5XG4gICAgICByZXR1cm4gbmV3IEJ1ZmZlcihmaWxlLmRhdGEpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAxMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzLiBUaGlzIGluY2x1ZGVzIHplcm8tYnl0ZSBmaWxlcywgYXMgd2VsbCBhcyBlbXB0eSBKU09OIG9iamVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgbWF0Y2ggd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgZG9uJ3QgbWF0Y2ggd2lsbCBiZSBza2lwcGVkLCBVTkxFU1Mgbm9uZSBvZiB0aGUgcGFyc2VycyBtYXRjaCwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHR5cGUge1JlZ0V4cHxzdHJpbmdbXXxmdW5jdGlvbn1cbiAgICovXG4gIGNhblBhcnNlOiAnLmpzb24nLFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgSlNPTlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VKU09OIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gZmlsZS5kYXRhO1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICBkYXRhID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChkYXRhLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7ICAvLyBUaGlzIG1pcnJvcnMgdGhlIFlBTUwgYmVoYXZpb3JcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoZGF0YSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gZGF0YSBpcyBhbHJlYWR5IGEgSmF2YVNjcmlwdCB2YWx1ZSAob2JqZWN0LCBhcnJheSwgbnVtYmVyLCBudWxsLCBOYU4sIGV0Yy4pXG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBURVhUX1JFR0VYUCA9IC9cXC4odHh0fGh0bXxodG1sfG1kfHhtbHxqc3xtaW58bWFwfGNzc3xzY3NzfGxlc3N8c3ZnKSQvaTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAzMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzICh6ZXJvIGJ5dGVzKS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBhbGxvd0VtcHR5OiB0cnVlLFxuXG4gIC8qKlxuICAgKiBUaGUgZW5jb2RpbmcgdGhhdCB0aGUgdGV4dCBpcyBleHBlY3RlZCB0byBiZSBpbi5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGVuY29kaW5nOiAndXRmOCcsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIGJlIHNraXBwZWQsIFVOTEVTUyBhbGwgcGFyc2VycyByZXR1cm5lZCBmYWxzZSwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGlzVGV4dCAoZmlsZSkge1xuICAgIC8vIFVzZSB0aGlzIHBhcnNlciBpZiB0aGUgZmlsZSBpcyBhIHN0cmluZyBvciBCdWZmZXIsIGFuZCBoYXMgYSBrbm93biB0ZXh0LWJhc2VkIGV4dGVuc2lvblxuICAgIHJldHVybiAodHlwZW9mIGZpbGUuZGF0YSA9PT0gJ3N0cmluZycgfHwgQnVmZmVyLmlzQnVmZmVyKGZpbGUuZGF0YSkpICYmIFRFWFRfUkVHRVhQLnRlc3QoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgdGV4dFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZVRleHQgKGZpbGUpIHtcbiAgICBpZiAodHlwZW9mIGZpbGUuZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmaWxlLmRhdGE7XG4gICAgfVxuICAgIGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBpcyBub3QgdGV4dCcpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFlBTUwgPSByZXF1aXJlKCcuLi91dGlsL3lhbWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAyMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzLiBUaGlzIGluY2x1ZGVzIHplcm8tYnl0ZSBmaWxlcywgYXMgd2VsbCBhcyBlbXB0eSBKU09OIG9iamVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgbWF0Y2ggd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgZG9uJ3QgbWF0Y2ggd2lsbCBiZSBza2lwcGVkLCBVTkxFU1Mgbm9uZSBvZiB0aGUgcGFyc2VycyBtYXRjaCwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHR5cGUge1JlZ0V4cHxzdHJpbmdbXXxmdW5jdGlvbn1cbiAgICovXG4gIGNhblBhcnNlOiBbJy55YW1sJywgJy55bWwnLCAnLmpzb24nXSwgIC8vIEpTT04gaXMgdmFsaWQgWUFNTFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgWUFNTFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VZQU1MIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gZmlsZS5kYXRhO1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICBkYXRhID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmUoWUFNTC5wYXJzZShkYXRhKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gZGF0YSBpcyBhbHJlYWR5IGEgSmF2YVNjcmlwdCB2YWx1ZSAob2JqZWN0LCBhcnJheSwgbnVtYmVyLCBudWxsLCBOYU4sIGV0Yy4pXG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnRlcjtcblxudmFyICRSZWYgPSByZXF1aXJlKCcuL3JlZicpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICBzbGFzaGVzID0gL1xcLy9nLFxuICAgIHRpbGRlcyA9IC9+L2csXG4gICAgZXNjYXBlZFNsYXNoID0gL34xL2csXG4gICAgZXNjYXBlZFRpbGRlID0gL34wL2c7XG5cbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIEpTT04gcG9pbnRlciBhbmQgaXRzIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7JFJlZn0gJHJlZlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZnJpZW5kbHlQYXRoXSAtIFRoZSBvcmlnaW5hbCB1c2VyLXNwZWNpZmllZCBwYXRoICh1c2VkIGZvciBlcnJvciBtZXNzYWdlcylcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBQb2ludGVyICgkcmVmLCBwYXRoLCBmcmllbmRseVBhdGgpIHtcbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgJFJlZn0gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhpcyB7QGxpbmsgUG9pbnRlcn0gb2JqZWN0LlxuICAgKiBAdHlwZSB7JFJlZn1cbiAgICovXG4gIHRoaXMuJHJlZiA9ICRyZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggb3IgVVJMLCBjb250YWluaW5nIHRoZSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2guXG4gICAqIFRoaXMgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGF0aCBvZiB0aGUgbWFpbiBKU09OIHNjaGVtYSBmaWxlLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5wYXRoID0gcGF0aDtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIHBhdGggb3IgVVJMLCB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHRoaXMub3JpZ2luYWxQYXRoID0gZnJpZW5kbHlQYXRoIHx8IHBhdGg7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgSlNPTiBwb2ludGVyLlxuICAgKiBDYW4gYmUgYW55IEpTT04gdHlwZSwgbm90IGp1c3Qgb2JqZWN0cy4gVW5rbm93biBmaWxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBhcyBCdWZmZXJzIChieXRlIGFycmF5cykuXG4gICAqIEB0eXBlIHs/Kn1cbiAgICovXG4gIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwb2ludGVyIHJlZmVyZW5jZXMgaXRzZWxmLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHRoaXMuY2lyY3VsYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpbmRpcmVjdCByZWZlcmVuY2VzIHRoYXQgd2VyZSB0cmF2ZXJzZWQgdG8gcmVzb2x2ZSB0aGUgdmFsdWUuXG4gICAqIFJlc29sdmluZyBhIHNpbmdsZSBwb2ludGVyIG1heSByZXF1aXJlIHJlc29sdmluZyBtdWx0aXBsZSAkUmVmcy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHRoaXMuaW5kaXJlY3Rpb25zID0gMDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBjcmF3bGVkXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1BvaW50ZXJ9XG4gKiBSZXR1cm5zIGEgSlNPTiBwb2ludGVyIHdob3NlIHtAbGluayBQb2ludGVyI3ZhbHVlfSBpcyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBJZiByZXNvbHZpbmcgdGhpcyB2YWx1ZSByZXF1aXJlZCByZXNvbHZpbmcgb3RoZXIgSlNPTiByZWZlcmVuY2VzLCB0aGVuXG4gKiB0aGUge0BsaW5rIFBvaW50ZXIjJHJlZn0gYW5kIHtAbGluayBQb2ludGVyI3BhdGh9IHdpbGwgcmVmbGVjdCB0aGUgcmVzb2x1dGlvbiBwYXRoXG4gKiBvZiB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cblBvaW50ZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAob2JqLCBvcHRpb25zKSB7XG4gIHZhciB0b2tlbnMgPSBQb2ludGVyLnBhcnNlKHRoaXMucGF0aCk7XG5cbiAgLy8gQ3Jhd2wgdGhlIG9iamVjdCwgb25lIHRva2VuIGF0IGEgdGltZVxuICB0aGlzLnZhbHVlID0gb2JqO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpKSB7XG4gICAgICAvLyBUaGUgJHJlZiBwYXRoIGhhcyBjaGFuZ2VkLCBzbyBhcHBlbmQgdGhlIHJlbWFpbmluZyB0b2tlbnMgdG8gdGhlIHBhdGhcbiAgICAgIHRoaXMucGF0aCA9IFBvaW50ZXIuam9pbih0aGlzLnBhdGgsIHRva2Vucy5zbGljZShpKSk7XG4gICAgfVxuXG4gICAgdmFyIHRva2VuID0gdG9rZW5zW2ldO1xuICAgIGlmICh0aGlzLnZhbHVlW3Rva2VuXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBvbm8uc3ludGF4KCdFcnJvciByZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuVG9rZW4gXCIlc1wiIGRvZXMgbm90IGV4aXN0LicsIHRoaXMub3JpZ2luYWxQYXRoLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWVbdG9rZW5dO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc29sdmUgdGhlIGZpbmFsIHZhbHVlXG4gIHJlc29sdmVJZiRSZWYodGhpcywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGNyYXdsZWRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gYXNzaWduXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMgeyp9XG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllZCBvYmplY3QsIG9yIGFuIGVudGlyZWx5IG5ldyBvYmplY3QgaWYgdGhlIGVudGlyZSBvYmplY3QgaXMgb3ZlcndyaXR0ZW4uXG4gKi9cblBvaW50ZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvYmosIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB0b2tlbnMgPSBQb2ludGVyLnBhcnNlKHRoaXMucGF0aCk7XG4gIHZhciB0b2tlbjtcblxuICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFRoZXJlIGFyZSBubyB0b2tlbnMsIHJlcGxhY2UgdGhlIGVudGlyZSBvYmplY3Qgd2l0aCB0aGUgbmV3IHZhbHVlXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIENyYXdsIHRoZSBvYmplY3QsIG9uZSB0b2tlbiBhdCBhIHRpbWVcbiAgdGhpcy52YWx1ZSA9IG9iajtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgcmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKTtcblxuICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWVbdG9rZW5dICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFRoZSB0b2tlbiBleGlzdHNcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlW3Rva2VuXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGUgdG9rZW4gZG9lc24ndCBleGlzdCwgc28gY3JlYXRlIGl0XG4gICAgICB0aGlzLnZhbHVlID0gc2V0VmFsdWUodGhpcywgdG9rZW4sIHt9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBmaW5hbCB0b2tlblxuICByZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpO1xuICB0b2tlbiA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV07XG4gIHNldFZhbHVlKHRoaXMsIHRva2VuLCB2YWx1ZSk7XG5cbiAgLy8gUmV0dXJuIHRoZSB1cGRhdGVkIG9iamVjdFxuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYSBKU09OIHBvaW50ZXIgKG9yIGEgcGF0aCBjb250YWluaW5nIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoKVxuICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHBvaW50ZXIncyB0b2tlbnMuXG4gKiAoZS5nLiBcInNjaGVtYS5qc29uIy9kZWZpbml0aW9ucy9wZXJzb24vbmFtZVwiID0+IFtcImRlZmluaXRpb25zXCIsIFwicGVyc29uXCIsIFwibmFtZVwiXSlcbiAqXG4gKiBUaGUgcG9pbnRlciBpcyBwYXJzZWQgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi0zfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nW119XG4gKi9cblBvaW50ZXIucGFyc2UgPSBmdW5jdGlvbiAocGF0aCkge1xuICAvLyBHZXQgdGhlIEpTT04gcG9pbnRlciBmcm9tIHRoZSBwYXRoJ3MgaGFzaFxuICB2YXIgcG9pbnRlciA9IHVybC5nZXRIYXNoKHBhdGgpLnN1YnN0cigxKTtcblxuICAvLyBJZiB0aGVyZSdzIG5vIHBvaW50ZXIsIHRoZW4gdGhlcmUgYXJlIG5vIHRva2VucyxcbiAgLy8gc28gcmV0dXJuIGFuIGVtcHR5IGFycmF5XG4gIGlmICghcG9pbnRlcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFNwbGl0IGludG8gYW4gYXJyYXlcbiAgcG9pbnRlciA9IHBvaW50ZXIuc3BsaXQoJy8nKTtcblxuICAvLyBEZWNvZGUgZWFjaCBwYXJ0LCBhY2NvcmRpbmcgdG8gUkZDIDY5MDFcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgcG9pbnRlcltpXSA9IGRlY29kZVVSSUNvbXBvbmVudChwb2ludGVyW2ldLnJlcGxhY2UoZXNjYXBlZFNsYXNoLCAnLycpLnJlcGxhY2UoZXNjYXBlZFRpbGRlLCAnficpKTtcbiAgfVxuXG4gIGlmIChwb2ludGVyWzBdICE9PSAnJykge1xuICAgIHRocm93IG9uby5zeW50YXgoJ0ludmFsaWQgJHJlZiBwb2ludGVyIFwiJXNcIi4gUG9pbnRlcnMgbXVzdCBiZWdpbiB3aXRoIFwiIy9cIicsIHBvaW50ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHBvaW50ZXIuc2xpY2UoMSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBKU09OIHBvaW50ZXIgcGF0aCwgYnkgam9pbmluZyBvbmUgb3IgbW9yZSB0b2tlbnMgdG8gYSBiYXNlIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2UgLSBUaGUgYmFzZSBwYXRoIChlLmcuIFwic2NoZW1hLmpzb24jL2RlZmluaXRpb25zL3BlcnNvblwiKVxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IHRva2VucyAtIFRoZSB0b2tlbihzKSB0byBhcHBlbmQgKGUuZy4gW1wibmFtZVwiLCBcImZpcnN0XCJdKVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuUG9pbnRlci5qb2luID0gZnVuY3Rpb24gKGJhc2UsIHRva2Vucykge1xuICAvLyBFbnN1cmUgdGhhdCB0aGUgYmFzZSBwYXRoIGNvbnRhaW5zIGEgaGFzaFxuICBpZiAoYmFzZS5pbmRleE9mKCcjJykgPT09IC0xKSB7XG4gICAgYmFzZSArPSAnIyc7XG4gIH1cblxuICAvLyBBcHBlbmQgZWFjaCB0b2tlbiB0byB0aGUgYmFzZSBwYXRoXG4gIHRva2VucyA9IEFycmF5LmlzQXJyYXkodG9rZW5zKSA/IHRva2VucyA6IFt0b2tlbnNdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAvLyBFbmNvZGUgdGhlIHRva2VuLCBhY2NvcmRpbmcgdG8gUkZDIDY5MDFcbiAgICBiYXNlICs9ICcvJyArIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbi5yZXBsYWNlKHRpbGRlcywgJ34wJykucmVwbGFjZShzbGFzaGVzLCAnfjEnKSk7XG4gIH1cblxuICByZXR1cm4gYmFzZTtcbn07XG5cbi8qKlxuICogSWYgdGhlIGdpdmVuIHBvaW50ZXIncyB7QGxpbmsgUG9pbnRlciN2YWx1ZX0gaXMgYSBKU09OIHJlZmVyZW5jZSxcbiAqIHRoZW4gdGhlIHJlZmVyZW5jZSBpcyByZXNvbHZlZCBhbmQge0BsaW5rIFBvaW50ZXIjdmFsdWV9IGlzIHJlcGxhY2VkIHdpdGggdGhlIHJlc29sdmVkIHZhbHVlLlxuICogSW4gYWRkaXRpb24sIHtAbGluayBQb2ludGVyI3BhdGh9IGFuZCB7QGxpbmsgUG9pbnRlciMkcmVmfSBhcmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZVxuICogcmVzb2x1dGlvbiBwYXRoIG9mIHRoZSBuZXcgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtQb2ludGVyfSBwb2ludGVyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVzb2x1dGlvbiBwYXRoIGNoYW5nZWRcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUlmJFJlZiAocG9pbnRlciwgb3B0aW9ucykge1xuICAvLyBJcyB0aGUgdmFsdWUgYSBKU09OIHJlZmVyZW5jZT8gKGFuZCBhbGxvd2VkPylcblxuICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKHBvaW50ZXIudmFsdWUsIG9wdGlvbnMpKSB7XG4gICAgdmFyICRyZWZQYXRoID0gdXJsLnJlc29sdmUocG9pbnRlci5wYXRoLCBwb2ludGVyLnZhbHVlLiRyZWYpO1xuXG4gICAgaWYgKCRyZWZQYXRoID09PSBwb2ludGVyLnBhdGgpIHtcbiAgICAgIC8vIFRoZSB2YWx1ZSBpcyBhIHJlZmVyZW5jZSB0byBpdHNlbGYsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkby5cbiAgICAgIHBvaW50ZXIuY2lyY3VsYXIgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciByZXNvbHZlZCA9IHBvaW50ZXIuJHJlZi4kcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XG4gICAgICBwb2ludGVyLmluZGlyZWN0aW9ucyArPSByZXNvbHZlZC5pbmRpcmVjdGlvbnMgKyAxO1xuXG4gICAgICBpZiAoJFJlZi5pc0V4dGVuZGVkJFJlZihwb2ludGVyLnZhbHVlKSkge1xuICAgICAgICAvLyBUaGlzIEpTT04gcmVmZXJlbmNlIFwiZXh0ZW5kc1wiIHRoZSByZXNvbHZlZCB2YWx1ZSwgcmF0aGVyIHRoYW4gc2ltcGx5IHBvaW50aW5nIHRvIGl0LlxuICAgICAgICAvLyBTbyB0aGUgcmVzb2x2ZWQgcGF0aCBkb2VzIE5PVCBjaGFuZ2UuICBKdXN0IHRoZSB2YWx1ZSBkb2VzLlxuICAgICAgICBwb2ludGVyLnZhbHVlID0gJFJlZi5kZXJlZmVyZW5jZShwb2ludGVyLnZhbHVlLCByZXNvbHZlZC52YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSByZWZlcmVuY2VcbiAgICAgICAgcG9pbnRlci4kcmVmID0gcmVzb2x2ZWQuJHJlZjtcbiAgICAgICAgcG9pbnRlci5wYXRoID0gcmVzb2x2ZWQucGF0aDtcbiAgICAgICAgcG9pbnRlci52YWx1ZSA9IHJlc29sdmVkLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzcGVjaWZpZWQgdG9rZW4gdmFsdWUgb2YgdGhlIHtAbGluayBQb2ludGVyI3ZhbHVlfS5cbiAqXG4gKiBUaGUgdG9rZW4gaXMgZXZhbHVhdGVkIGFjY29yZGluZyB0byBSRkMgNjkwMS5cbiAqIHtAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMSNzZWN0aW9uLTR9XG4gKlxuICogQHBhcmFtIHtQb2ludGVyfSBwb2ludGVyIC0gVGhlIEpTT04gUG9pbnRlciB3aG9zZSB2YWx1ZSB3aWxsIGJlIG1vZGlmaWVkXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSBBIEpTT04gUG9pbnRlciB0b2tlbiB0aGF0IGluZGljYXRlcyBob3cgdG8gbW9kaWZ5IGBvYmpgXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFzc2lnblxuICogQHJldHVybnMgeyp9IC0gUmV0dXJucyB0aGUgYXNzaWduZWQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gc2V0VmFsdWUgKHBvaW50ZXIsIHRva2VuLCB2YWx1ZSkge1xuICBpZiAocG9pbnRlci52YWx1ZSAmJiB0eXBlb2YgcG9pbnRlci52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAodG9rZW4gPT09ICctJyAmJiBBcnJheS5pc0FycmF5KHBvaW50ZXIudmFsdWUpKSB7XG4gICAgICBwb2ludGVyLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHBvaW50ZXIudmFsdWVbdG9rZW5dID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG9uby5zeW50YXgoJ0Vycm9yIGFzc2lnbmluZyAkcmVmIHBvaW50ZXIgXCIlc1wiLiBcXG5DYW5ub3Qgc2V0IFwiJXNcIiBvZiBhIG5vbi1vYmplY3QuJywgcG9pbnRlci5wYXRoLCB0b2tlbik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWY7XG5cbnZhciBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIEpTT04gcmVmZXJlbmNlIGFuZCBpdHMgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWYgKCkge1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZS5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXRoIG9mIHRoZSBtYWluIEpTT04gc2NoZW1hIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgcGF0aCBkb2VzIE5PVCBjb250YWluIGRvY3VtZW50IGZyYWdtZW50cyAoSlNPTiBwb2ludGVycykuIEl0IGFsd2F5cyByZWZlcmVuY2VzIGFuIEVOVElSRSBmaWxlLlxuICAgKiBVc2UgbWV0aG9kcyBzdWNoIGFzIHtAbGluayAkUmVmI2dldH0sIHtAbGluayAkUmVmI3Jlc29sdmV9LCBhbmQge0BsaW5rICRSZWYjZXhpc3RzfSB0byBnZXRcbiAgICogc3BlY2lmaWMgSlNPTiBwb2ludGVycyB3aXRoaW4gdGhlIGZpbGUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLnBhdGggPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCB2YWx1ZSBvZiB0aGUgSlNPTiByZWZlcmVuY2UuXG4gICAqIENhbiBiZSBhbnkgSlNPTiB0eXBlLCBub3QganVzdCBvYmplY3RzLiBVbmtub3duIGZpbGUgdHlwZXMgYXJlIHJlcHJlc2VudGVkIGFzIEJ1ZmZlcnMgKGJ5dGUgYXJyYXlzKS5cbiAgICogQHR5cGUgez8qfVxuICAgKi9cbiAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHtAbGluayAkUmVmc30gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhpcyB7QGxpbmsgJFJlZn0gb2JqZWN0LlxuICAgKiBAdHlwZSB7JFJlZnN9XG4gICAqL1xuICB0aGlzLiRyZWZzID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2Yge0BsaW5rICRSZWYjcGF0aH0gKGUuZy4gXCJmaWxlXCIsIFwiaHR0cFwiLCBldGMuKVxuICAgKiBAdHlwZSB7P3N0cmluZ31cbiAgICovXG4gIHRoaXMucGF0aFR5cGUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBleGlzdHMgd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLnJlc29sdmUocGF0aCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlIHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfSBhbmQgcmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlXG4gKi9cbiRSZWYucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmUocGF0aCwgb3B0aW9ucykudmFsdWU7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZnJpZW5kbHlQYXRoXSAtIFRoZSBvcmlnaW5hbCB1c2VyLXNwZWNpZmllZCBwYXRoICh1c2VkIGZvciBlcnJvciBtZXNzYWdlcylcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxuICovXG4kUmVmLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMsIGZyaWVuZGx5UGF0aCkge1xuICB2YXIgcG9pbnRlciA9IG5ldyBQb2ludGVyKHRoaXMsIHBhdGgsIGZyaWVuZGx5UGF0aCk7XG4gIHJldHVybiBwb2ludGVyLnJlc29sdmUodGhpcy52YWx1ZSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfS5cbiAqIElmIHRoZSBwcm9wZXJ0eSwgb3IgYW55IG9mIGl0cyBwYXJlbnRzIGRvbid0IGV4aXN0LCB0aGV5IHdpbGwgYmUgY3JlYXRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFzc2lnblxuICovXG4kUmVmLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocGF0aCwgdmFsdWUpIHtcbiAgdmFyIHBvaW50ZXIgPSBuZXcgUG9pbnRlcih0aGlzLCBwYXRoKTtcbiAgdGhpcy52YWx1ZSA9IHBvaW50ZXIuc2V0KHRoaXMudmFsdWUsIHZhbHVlKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEpTT04gcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXMkUmVmID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS4kcmVmID09PSAnc3RyaW5nJyAmJiB2YWx1ZS4kcmVmLmxlbmd0aCA+IDA7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gZXh0ZXJuYWwgSlNPTiByZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBpbnNwZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5pc0V4dGVybmFsJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gJFJlZi5pcyRSZWYodmFsdWUpICYmIHZhbHVlLiRyZWZbMF0gIT09ICcjJztcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEpTT04gcmVmZXJlbmNlLCBhbmQgd2hldGhlciBpdCBpcyBhbGxvd2VkIGJ5IHRoZSBvcHRpb25zLlxuICogRm9yIGV4YW1wbGUsIGlmIGl0IHJlZmVyZW5jZXMgYW4gZXh0ZXJuYWwgZmlsZSwgdGhlbiBvcHRpb25zLnJlc29sdmUuZXh0ZXJuYWwgbXVzdCBiZSB0cnVlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXNBbGxvd2VkJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoJFJlZi5pcyRSZWYodmFsdWUpKSB7XG4gICAgaWYgKHZhbHVlLiRyZWYuc3Vic3RyKDAsIDIpID09PSAnIy8nIHx8IHZhbHVlLiRyZWYgPT09ICcjJykge1xuICAgICAgLy8gSXQncyBhIEpTT04gUG9pbnRlciByZWZlcmVuY2UsIHdoaWNoIGlzIGFsd2F5cyBhbGxvd2VkXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUuJHJlZlswXSAhPT0gJyMnICYmICghb3B0aW9ucyB8fCBvcHRpb25zLnJlc29sdmUuZXh0ZXJuYWwpKSB7XG4gICAgICAvLyBJdCdzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSwgd2hpY2ggaXMgYWxsb3dlZCBieSB0aGUgb3B0aW9uc1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZSB0aGF0IFwiZXh0ZW5kc1wiIGl0cyByZXNvbHZlZCB2YWx1ZS5cbiAqIFRoYXQgaXMsIGl0IGhhcyBleHRyYSBwcm9wZXJ0aWVzIChpbiBhZGRpdGlvbiB0byBcIiRyZWZcIiksIHNvIHJhdGhlciB0aGFuIHNpbXBseSBwb2ludGluZyB0b1xuICogYW4gZXhpc3RpbmcgdmFsdWUsIHRoaXMgJHJlZiBhY3R1YWxseSBjcmVhdGVzIGEgTkVXIHZhbHVlIHRoYXQgaXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHJlc29sdmVkXG4gKiB2YWx1ZSwgcGx1cyB0aGUgZXh0cmEgcHJvcGVydGllcy5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBwZXJzb246IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICAgIGVtcGxveWVlOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICAkcmVmOiAjL3BlcnNvbi9wcm9wZXJ0aWVzXG4gKiAgICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogIEluIHRoaXMgZXhhbXBsZSwgXCJlbXBsb3llZVwiIGlzIGFuIGV4dGVuZGVkICRyZWYsIHNpbmNlIGl0IGV4dGVuZHMgXCJwZXJzb25cIiB3aXRoIGFuIGFkZGl0aW9uYWxcbiAqICBwcm9wZXJ0eSAoc2FsYXJ5KS4gIFRoZSByZXN1bHQgaXMgYSBORVcgdmFsdWUgdGhhdCBsb29rcyBsaWtlIHRoaXM6XG4gKlxuICogIHtcbiAqICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgZmlyc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIHNhbGFyeTogeyB0eXBlOiBudW1iZXIgfVxuICogICAgfVxuICogIH1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzRXh0ZW5kZWQkUmVmID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiAkUmVmLmlzJFJlZih2YWx1ZSkgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDE7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlIG9mIGEgSlNPTiBSZWZlcmVuY2UuXG4gKiBJZiBuZWNlc3NhcnksIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBtZXJnZWQgd2l0aCB0aGUgSlNPTiBSZWZlcmVuY2UgdG8gY3JlYXRlIGEgbmV3IG9iamVjdFxuICpcbiAqIEBleGFtcGxlOlxuICogIHtcbiAqICAgIHBlcnNvbjoge1xuICogICAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgICAgZmlyc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgICAgbGFzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgfVxuICogICAgfVxuICogICAgZW1wbG95ZWU6IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgICRyZWY6ICMvcGVyc29uL3Byb3BlcnRpZXNcbiAqICAgICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgICAgfVxuICogICAgfVxuICogIH1cbiAqXG4gKiAgV2hlbiBcInBlcnNvblwiIGFuZCBcImVtcGxveWVlXCIgYXJlIG1lcmdlZCwgeW91IGVuZCB1cCB3aXRoIHRoZSBmb2xsb3dpbmcgb2JqZWN0OlxuICpcbiAqICB7XG4gKiAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICRyZWYgLSBUaGUgSlNPTiByZWZlcmVuY2Ugb2JqZWN0ICh0aGUgb25lIHdpdGggdGhlIFwiJHJlZlwiIHByb3BlcnR5KVxuICogQHBhcmFtIHsqfSByZXNvbHZlZFZhbHVlIC0gVGhlIHJlc29sdmVkIHZhbHVlLCB3aGljaCBjYW4gYmUgYW55IHR5cGVcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZVxuICovXG4kUmVmLmRlcmVmZXJlbmNlID0gZnVuY3Rpb24gKCRyZWYsIHJlc29sdmVkVmFsdWUpIHtcbiAgaWYgKHJlc29sdmVkVmFsdWUgJiYgdHlwZW9mIHJlc29sdmVkVmFsdWUgPT09ICdvYmplY3QnICYmICRSZWYuaXNFeHRlbmRlZCRSZWYoJHJlZikpIHtcbiAgICB2YXIgbWVyZ2VkID0ge307XG4gICAgT2JqZWN0LmtleXMoJHJlZikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoa2V5ICE9PSAnJHJlZicpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSAkcmVmW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXMocmVzb2x2ZWRWYWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoIShrZXkgaW4gbWVyZ2VkKSkge1xuICAgICAgICBtZXJnZWRba2V5XSA9IHJlc29sdmVkVmFsdWVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9XG4gIGVsc2Uge1xuICAgIC8vIENvbXBsZXRlbHkgcmVwbGFjZSB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIHdpdGggdGhlIHJlc29sdmVkIHZhbHVlXG4gICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgb25vID0gcmVxdWlyZSgnb25vJyksXHJcbiAgICAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcclxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gJFJlZnM7XHJcblxyXG4vKipcclxuICogVGhpcyBjbGFzcyBpcyBhIG1hcCBvZiBKU09OIHJlZmVyZW5jZXMgYW5kIHRoZWlyIHJlc29sdmVkIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uICRSZWZzICgpIHtcclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc2NoZW1hIGNvbnRhaW5zIGFueSBjaXJjdWxhciByZWZlcmVuY2VzLlxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICovXHJcbiAgdGhpcy5jaXJjdWxhciA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBIG1hcCBvZiBwYXRocy91cmxzIHRvIHtAbGluayAkUmVmfSBvYmplY3RzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7b2JqZWN0fVxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICB0aGlzLl8kcmVmcyA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUge0BsaW5rICRSZWZ9IG9iamVjdCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBKU09OIHNjaGVtYS5cclxuICAgKlxyXG4gICAqIEB0eXBlIHskUmVmfVxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICB0aGlzLl9yb290JFJlZiA9IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBwYXRocyBvZiBhbGwgdGhlIGZpbGVzL1VSTHMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSB0aGUgSlNPTiBzY2hlbWEsXHJcbiAqIGluY2x1ZGluZyB0aGUgc2NoZW1hIGl0c2VsZi5cclxuICpcclxuICogQHBhcmFtIHsuLi5zdHJpbmd8c3RyaW5nW119IFt0eXBlc10gLSBPbmx5IHJldHVybiBwYXRocyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge3N0cmluZ1tdfVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLnBhdGhzID0gZnVuY3Rpb24gKHR5cGVzKSB7XHJcbiAgdmFyIHBhdGhzID0gZ2V0UGF0aHModGhpcy5fJHJlZnMsIGFyZ3VtZW50cyk7XHJcbiAgcmV0dXJuIHBhdGhzLm1hcChmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgcmV0dXJuIHBhdGguZGVjb2RlZDtcclxuICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBtYXAgb2YgSlNPTiByZWZlcmVuY2VzIGFuZCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcmVmZXJlbmNlcyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge29iamVjdH1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAodHlwZXMpIHtcclxuICB2YXIgJHJlZnMgPSB0aGlzLl8kcmVmcztcclxuICB2YXIgcGF0aHMgPSBnZXRQYXRocygkcmVmcywgYXJndW1lbnRzKTtcclxuICByZXR1cm4gcGF0aHMucmVkdWNlKGZ1bmN0aW9uIChvYmosIHBhdGgpIHtcclxuICAgIG9ialtwYXRoLmRlY29kZWRdID0gJHJlZnNbcGF0aC5lbmNvZGVkXS52YWx1ZTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBQT0pPIChwbGFpbiBvbGQgSmF2YVNjcmlwdCBvYmplY3QpIGZvciBzZXJpYWxpemF0aW9uIGFzIEpTT04uXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtvYmplY3R9XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUudG9KU09OID0gJFJlZnMucHJvdG90eXBlLnZhbHVlcztcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlIGV4aXN0cy5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXVxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xyXG4gIHRyeSB7XHJcbiAgICB0aGlzLl9yZXNvbHZlKHBhdGgsIG9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGNhdGNoIChlKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBhbmQgcmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdXHJcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcclxuICByZXR1cm4gdGhpcy5fcmVzb2x2ZShwYXRoLCBvcHRpb25zKS52YWx1ZTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXHJcbiAqIElmIHRoZSBwcm9wZXJ0eSwgb3IgYW55IG9mIGl0cyBwYXJlbnRzIGRvbid0IGV4aXN0LCB0aGV5IHdpbGwgYmUgY3JlYXRlZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocGF0aCwgdmFsdWUpIHtcclxuICB2YXIgYWJzUGF0aCA9IHVybC5yZXNvbHZlKHRoaXMuX3Jvb3QkUmVmLnBhdGgsIHBhdGgpO1xyXG4gIHZhciB3aXRob3V0SGFzaCA9IHVybC5zdHJpcEhhc2goYWJzUGF0aCk7XHJcbiAgdmFyICRyZWYgPSB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF07XHJcblxyXG4gIGlmICghJHJlZikge1xyXG4gICAgdGhyb3cgb25vKCdFcnJvciByZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuXCIlc1wiIG5vdCBmb3VuZC4nLCBwYXRoLCB3aXRob3V0SGFzaCk7XHJcbiAgfVxyXG5cclxuICAkcmVmLnNldChhYnNQYXRoLCB2YWx1ZSk7XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgJFJlZn0gb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoaXMge0BsaW5rICRSZWZzfSBvYmplY3QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoICAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24gKHBhdGgpIHtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHBhdGgpO1xyXG5cclxuICB2YXIgJHJlZiA9IG5ldyAkUmVmKCk7XHJcbiAgJHJlZi5wYXRoID0gd2l0aG91dEhhc2g7XHJcbiAgJHJlZi4kcmVmcyA9IHRoaXM7XHJcblxyXG4gIHRoaXMuXyRyZWZzW3dpdGhvdXRIYXNoXSA9ICRyZWY7XHJcbiAgdGhpcy5fcm9vdCRSZWYgPSB0aGlzLl9yb290JFJlZiB8fCAkcmVmO1xyXG5cclxuICByZXR1cm4gJHJlZjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc11cclxuICogQHJldHVybnMge1BvaW50ZXJ9XHJcbiAqIEBwcm90ZWN0ZWRcclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5fcmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XHJcbiAgdmFyIGFic1BhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKGFic1BhdGgpO1xyXG4gIHZhciAkcmVmID0gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG5cclxuICBpZiAoISRyZWYpIHtcclxuICAgIHRocm93IG9ubygnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblwiJXNcIiBub3QgZm91bmQuJywgcGF0aCwgd2l0aG91dEhhc2gpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuICRyZWYucmVzb2x2ZShhYnNQYXRoLCBvcHRpb25zLCBwYXRoKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQge0BsaW5rICRSZWZ9IG9iamVjdCwgb3IgdW5kZWZpbmVkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHJldHVybnMgeyRSZWZ8dW5kZWZpbmVkfVxyXG4gKiBAcHJvdGVjdGVkXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX2dldCRSZWYgPSBmdW5jdGlvbiAocGF0aCkge1xyXG4gIHBhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHBhdGgpO1xyXG4gIHJldHVybiB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF07XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRocyBrZXlzIG9mIHRoZSBnaXZlbiBvYmplY3QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmcyAtIFRoZSBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgVVJMLWVuY29kZWQgcGF0aHNcclxuICogQHBhcmFtIHsuLi5zdHJpbmd8c3RyaW5nW119IFt0eXBlc10gLSBPbmx5IHJldHVybiBwYXRocyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge29iamVjdFtdfVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0aHMgKCRyZWZzLCB0eXBlcykge1xyXG4gIHZhciBwYXRocyA9IE9iamVjdC5rZXlzKCRyZWZzKTtcclxuXHJcbiAgLy8gRmlsdGVyIHRoZSBwYXRocyBieSB0eXBlXHJcbiAgdHlwZXMgPSBBcnJheS5pc0FycmF5KHR5cGVzWzBdKSA/IHR5cGVzWzBdIDogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodHlwZXMpO1xyXG4gIGlmICh0eXBlcy5sZW5ndGggPiAwICYmIHR5cGVzWzBdKSB7XHJcbiAgICBwYXRocyA9IHBhdGhzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgIHJldHVybiB0eXBlcy5pbmRleE9mKCRyZWZzW2tleV0ucGF0aFR5cGUpICE9PSAtMTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gRGVjb2RlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHNcclxuICByZXR1cm4gcGF0aHMubWFwKGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbmNvZGVkOiBwYXRoLFxyXG4gICAgICBkZWNvZGVkOiAkcmVmc1twYXRoXS5wYXRoVHlwZSA9PT0gJ2ZpbGUnID8gdXJsLnRvRmlsZVN5c3RlbVBhdGgocGF0aCwgdHJ1ZSkgOiBwYXRoXHJcbiAgICB9O1xyXG4gIH0pO1xyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICRSZWYgPSByZXF1aXJlKCcuL3JlZicpLFxuICAgIFBvaW50ZXIgPSByZXF1aXJlKCcuL3BvaW50ZXInKSxcbiAgICBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKSxcbiAgICBkZWJ1ZyA9IHJlcXVpcmUoJy4vdXRpbC9kZWJ1ZycpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlRXh0ZXJuYWw7XG5cbi8qKlxuICogQ3Jhd2xzIHRoZSBKU09OIHNjaGVtYSwgZmluZHMgYWxsIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlcywgYW5kIHJlc29sdmVzIHRoZWlyIHZhbHVlcy5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IG11dGF0ZSB0aGUgSlNPTiBzY2hlbWEuIFRoZSByZXNvbHZlZCB2YWx1ZXMgYXJlIGFkZGVkIHRvIHtAbGluayAkUmVmUGFyc2VyIyRyZWZzfS5cbiAqXG4gKiBOT1RFOiBXZSBvbmx5IGNhcmUgYWJvdXQgRVhURVJOQUwgcmVmZXJlbmNlcyBoZXJlLiBJTlRFUk5BTCByZWZlcmVuY2VzIGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gZGVyZWZlcmVuY2luZy5cbiAqXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJ9IHBhcnNlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgb25jZSBhbGwgSlNPTiByZWZlcmVuY2VzIGluIHRoZSBzY2hlbWEgaGF2ZSBiZWVuIHJlc29sdmVkLFxuICogaW5jbHVkaW5nIG5lc3RlZCByZWZlcmVuY2VzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVFeHRlcm5hbCAocGFyc2VyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsKSB7XG4gICAgLy8gTm90aGluZyB0byByZXNvbHZlLCBzbyBleGl0IGVhcmx5XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xuICAgIHZhciBwcm9taXNlcyA9IGNyYXdsKHBhcnNlci5zY2hlbWEsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCArICcjJywgcGFyc2VyLiRyZWZzLCBvcHRpb25zKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIHJlc29sdmVzIGFueSBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgdmFsdWUgdG8gY3Jhd2wuIElmIGl0J3Mgbm90IGFuIG9iamVjdCBvciBhcnJheSwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGBvYmpgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlW119XG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIHByb21pc2VzLiBUaGVyZSB3aWxsIGJlIG9uZSBwcm9taXNlIGZvciBlYWNoIEpTT04gcmVmZXJlbmNlIGluIGBvYmpgLlxuICogSWYgYG9iamAgZG9lcyBub3QgY29udGFpbiBhbnkgSlNPTiByZWZlcmVuY2VzLCB0aGVuIHRoZSBhcnJheSB3aWxsIGJlIGVtcHR5LlxuICogSWYgYW55IG9mIHRoZSBKU09OIHJlZmVyZW5jZXMgcG9pbnQgdG8gZmlsZXMgdGhhdCBjb250YWluIGFkZGl0aW9uYWwgSlNPTiByZWZlcmVuY2VzLFxuICogdGhlbiB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlIHdpbGwgaW50ZXJuYWxseSByZWZlcmVuY2UgYW4gYXJyYXkgb2YgcHJvbWlzZXMuXG4gKi9cbmZ1bmN0aW9uIGNyYXdsIChvYmosIHBhdGgsICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciBwcm9taXNlcyA9IFtdO1xuXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoJFJlZi5pc0V4dGVybmFsJFJlZihvYmopKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKHJlc29sdmUkUmVmKG9iaiwgcGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgICAgICBpZiAoJFJlZi5pc0V4dGVybmFsJFJlZih2YWx1ZSkpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlc29sdmUkUmVmKHZhbHVlLCBrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHByb21pc2VzID0gcHJvbWlzZXMuY29uY2F0KGNyYXdsKHZhbHVlLCBrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZXM7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gUmVmZXJlbmNlLCBhbmQgdGhlbiBjcmF3bHMgdGhlIHJlc3VsdGluZyB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge3skcmVmOiBzdHJpbmd9fSAkcmVmIC0gVGhlIEpTT04gUmVmZXJlbmNlIHRvIHJlc29sdmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgJHJlZmAsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyBvbmNlIGFsbCBKU09OIHJlZmVyZW5jZXMgaW4gdGhlIG9iamVjdCBoYXZlIGJlZW4gcmVzb2x2ZWQsXG4gKiBpbmNsdWRpbmcgbmVzdGVkIHJlZmVyZW5jZXMgdGhhdCBhcmUgY29udGFpbmVkIGluIGV4dGVybmFsbHktcmVmZXJlbmNlZCBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZSRSZWYgKCRyZWYsIHBhdGgsICRyZWZzLCBvcHRpb25zKSB7XG4gIGRlYnVnKCdSZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIiBhdCAlcycsICRyZWYuJHJlZiwgcGF0aCk7XG5cbiAgdmFyIHJlc29sdmVkUGF0aCA9IHVybC5yZXNvbHZlKHBhdGgsICRyZWYuJHJlZik7XG4gIHZhciB3aXRob3V0SGFzaCA9IHVybC5zdHJpcEhhc2gocmVzb2x2ZWRQYXRoKTtcblxuICAvLyBEbyB3ZSBhbHJlYWR5IGhhdmUgdGhpcyAkcmVmP1xuICAkcmVmID0gJHJlZnMuXyRyZWZzW3dpdGhvdXRIYXNoXTtcbiAgaWYgKCRyZWYpIHtcbiAgICAvLyBXZSd2ZSBhbHJlYWR5IHBhcnNlZCB0aGlzICRyZWYsIHNvIHVzZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCRyZWYudmFsdWUpO1xuICB9XG5cbiAgLy8gUGFyc2UgdGhlICRyZWZlcmVuY2VkIGZpbGUvdXJsXG4gIHJldHVybiBwYXJzZShyZXNvbHZlZFBhdGgsICRyZWZzLCBvcHRpb25zKVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIC8vIENyYXdsIHRoZSBwYXJzZWQgdmFsdWVcbiAgICAgIGRlYnVnKCdSZXNvbHZpbmcgJHJlZiBwb2ludGVycyBpbiAlcycsIHdpdGhvdXRIYXNoKTtcbiAgICAgIHZhciBwcm9taXNlcyA9IGNyYXdsKHJlc3VsdCwgd2l0aG91dEhhc2ggKyAnIycsICRyZWZzLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4uL3V0aWwvdXJsJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuLi91dGlsL2RlYnVnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyByZXNvbHZlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcmVzb2x2ZXJzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgb3JkZXI6IDEwMCxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcmVzb2x2ZXIgY2FuIHJlYWQgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUmVzb2x2ZXJzIHRoYXQgcmV0dXJuIHRydWUgd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZXMgdGhlIGZpbGUuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIG5vdCBiZSBnaXZlbiBhIGNoYW5jZSB0byByZXNvbHZlIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUmVhZDogZnVuY3Rpb24gaXNGaWxlIChmaWxlKSB7XG4gICAgcmV0dXJuIHVybC5pc0ZpbGVTeXN0ZW1QYXRoKGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIGdpdmVuIGZpbGUgYW5kIHJldHVybnMgaXRzIHJhdyBjb250ZW50cyBhcyBhIEJ1ZmZlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICAgKi9cbiAgcmVhZDogZnVuY3Rpb24gcmVhZEZpbGUgKGZpbGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICBwYXRoID0gdXJsLnRvRmlsZVN5c3RlbVBhdGgoZmlsZS51cmwpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3Qob25vLnVyaShlcnIsICdNYWxmb3JtZWQgVVJJOiAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKCdPcGVuaW5nIGZpbGU6ICVzJywgcGF0aCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZzLnJlYWRGaWxlKHBhdGgsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIG9wZW5pbmcgZmlsZSBcIiVzXCInLCBwYXRoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIG9wZW5pbmcgZmlsZSBcIiVzXCInLCBwYXRoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpLFxuICAgIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuLi91dGlsL3VybCcpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi4vdXRpbC9kZWJ1ZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcmVzb2x2ZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHJlc29sdmVycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAyMDAsXG5cbiAgLyoqXG4gICAqIEhUVFAgaGVhZGVycyB0byBzZW5kIHdoZW4gZG93bmxvYWRpbmcgZmlsZXMuXG4gICAqXG4gICAqIEBleGFtcGxlOlxuICAgKiB7XG4gICAqICAgXCJVc2VyLUFnZW50XCI6IFwiSlNPTiBTY2hlbWEgJFJlZiBQYXJzZXJcIixcbiAgICogICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAqIH1cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICovXG4gIGhlYWRlcnM6IG51bGwsXG5cbiAgLyoqXG4gICAqIEhUVFAgcmVxdWVzdCB0aW1lb3V0IChpbiBtaWxsaXNlY29uZHMpLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgdGltZW91dDogNTAwMCwgLy8gNSBzZWNvbmRzXG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBIVFRQIHJlZGlyZWN0cyB0byBmb2xsb3cuXG4gICAqIFRvIGRpc2FibGUgYXV0b21hdGljIGZvbGxvd2luZyBvZiByZWRpcmVjdHMsIHNldCB0aGlzIHRvIHplcm8uXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICByZWRpcmVjdHM6IDUsXG5cbiAgLyoqXG4gICAqIFRoZSBgd2l0aENyZWRlbnRpYWxzYCBvcHRpb24gb2YgWE1MSHR0cFJlcXVlc3QuXG4gICAqIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UncmUgZG93bmxvYWRpbmcgZmlsZXMgZnJvbSBhIENPUlMtZW5hYmxlZCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHJlc29sdmVyIGNhbiByZWFkIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZXMgdGhlIGZpbGUuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIG5vdCBiZSBnaXZlbiBhIGNoYW5jZSB0byByZXNvbHZlIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUmVhZDogZnVuY3Rpb24gaXNIdHRwIChmaWxlKSB7XG4gICAgcmV0dXJuIHVybC5pc0h0dHAoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgZ2l2ZW4gVVJMIGFuZCByZXR1cm5zIGl0cyByYXcgY29udGVudHMgYXMgYSBCdWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHJlYWQ6IGZ1bmN0aW9uIHJlYWRIdHRwIChmaWxlKSB7XG4gICAgdmFyIHUgPSB1cmwucGFyc2UoZmlsZS51cmwpO1xuXG4gICAgaWYgKHByb2Nlc3MuYnJvd3NlciAmJiAhdS5wcm90b2NvbCkge1xuICAgICAgLy8gVXNlIHRoZSBwcm90b2NvbCBvZiB0aGUgY3VycmVudCBwYWdlXG4gICAgICB1LnByb3RvY29sID0gdXJsLnBhcnNlKGxvY2F0aW9uLmhyZWYpLnByb3RvY29sO1xuICAgIH1cblxuICAgIHJldHVybiBkb3dubG9hZCh1LCB0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEb3dubG9hZHMgdGhlIGdpdmVuIGZpbGUuXG4gKlxuICogQHBhcmFtIHtVcmx8c3RyaW5nfSB1ICAgICAgICAtIFRoZSB1cmwgdG8gZG93bmxvYWQgKGNhbiBiZSBhIHBhcnNlZCB7QGxpbmsgVXJsfSBvYmplY3QpXG4gKiBAcGFyYW0ge29iamVjdH0gaHR0cE9wdGlvbnMgIC0gVGhlIGBvcHRpb25zLnJlc29sdmUuaHR0cGAgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW3JlZGlyZWN0c10gIC0gVGhlIHJlZGlyZWN0IFVSTHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBmb2xsb3dlZFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSByYXcgZG93bmxvYWRlZCBkYXRhLCBvciByZWplY3RzIGlmIHRoZXJlIGlzIGFuIEhUVFAgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIGRvd25sb2FkICh1LCBodHRwT3B0aW9ucywgcmVkaXJlY3RzKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdSA9IHVybC5wYXJzZSh1KTtcbiAgICByZWRpcmVjdHMgPSByZWRpcmVjdHMgfHwgW107XG4gICAgcmVkaXJlY3RzLnB1c2godS5ocmVmKTtcblxuICAgIGdldCh1LCBodHRwT3B0aW9ucylcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDQwMCkge1xuICAgICAgICAgIHRocm93IG9ubyh7IHN0YXR1czogcmVzLnN0YXR1c0NvZGUgfSwgJ0hUVFAgRVJST1IgJWQnLCByZXMuc3RhdHVzQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVzLnN0YXR1c0NvZGUgPj0gMzAwKSB7XG4gICAgICAgICAgaWYgKHJlZGlyZWN0cy5sZW5ndGggPiBodHRwT3B0aW9ucy5yZWRpcmVjdHMpIHtcbiAgICAgICAgICAgIHJlamVjdChvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdFcnJvciBkb3dubG9hZGluZyAlcy4gXFxuVG9vIG1hbnkgcmVkaXJlY3RzOiBcXG4gICVzJyxcbiAgICAgICAgICAgICAgcmVkaXJlY3RzWzBdLCByZWRpcmVjdHMuam9pbignIFxcbiAgJykpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIXJlcy5oZWFkZXJzLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdIVFRQICVkIHJlZGlyZWN0IHdpdGggbm8gbG9jYXRpb24gaGVhZGVyJywgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnKCdIVFRQICVkIHJlZGlyZWN0ICVzIC0+ICVzJywgcmVzLnN0YXR1c0NvZGUsIHUuaHJlZiwgcmVzLmhlYWRlcnMubG9jYXRpb24pO1xuICAgICAgICAgICAgdmFyIHJlZGlyZWN0VG8gPSB1cmwucmVzb2x2ZSh1LCByZXMuaGVhZGVycy5sb2NhdGlvbik7XG4gICAgICAgICAgICBkb3dubG9hZChyZWRpcmVjdFRvLCBodHRwT3B0aW9ucywgcmVkaXJlY3RzKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzLmJvZHkgfHwgbmV3IEJ1ZmZlcigwKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIGRvd25sb2FkaW5nJywgdS5ocmVmKSk7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSFRUUCBHRVQgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0ge1VybH0gdSAtIEEgcGFyc2VkIHtAbGluayBVcmx9IG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9IGh0dHBPcHRpb25zIC0gVGhlIGBvcHRpb25zLnJlc29sdmUuaHR0cGAgb2JqZWN0XG4gKlxuICogQHJldHVybnMge1Byb21pc2U8UmVzcG9uc2U+fVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgSFRUUCBSZXNwb25zZSBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGdldCAodSwgaHR0cE9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBkZWJ1ZygnR0VUJywgdS5ocmVmKTtcblxuICAgIHZhciBwcm90b2NvbCA9IHUucHJvdG9jb2wgPT09ICdodHRwczonID8gaHR0cHMgOiBodHRwO1xuICAgIHZhciByZXEgPSBwcm90b2NvbC5nZXQoe1xuICAgICAgaG9zdG5hbWU6IHUuaG9zdG5hbWUsXG4gICAgICBwb3J0OiB1LnBvcnQsXG4gICAgICBwYXRoOiB1LnBhdGgsXG4gICAgICBhdXRoOiB1LmF1dGgsXG4gICAgICBwcm90b2NvbDogdS5wcm90b2NvbCxcbiAgICAgIGhlYWRlcnM6IGh0dHBPcHRpb25zLmhlYWRlcnMgfHwge30sXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGh0dHBPcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiByZXEuc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxLnNldFRpbWVvdXQoaHR0cE9wdGlvbnMudGltZW91dCk7XG4gICAgfVxuXG4gICAgcmVxLm9uKCd0aW1lb3V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVxLmFib3J0KCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgIHJlcS5vbmNlKCdyZXNwb25zZScsIGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHJlcy5ib2R5ID0gbmV3IEJ1ZmZlcigwKTtcblxuICAgICAgcmVzLm9uKCdkYXRhJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmVzLmJvZHkgPSBCdWZmZXIuY29uY2F0KFtyZXMuYm9keSwgbmV3IEJ1ZmZlcihkYXRhKV0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlcy5vbignZXJyb3InLCByZWplY3QpO1xuXG4gICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpO1xuXG4vKipcbiAqIFdyaXRlcyBtZXNzYWdlcyB0byBzdGRvdXQuXG4gKiBMb2cgbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBlbmFibGVkIGJ5IHNldHRpbmcgdGhlIERFQlVHIHZhcmlhYmxlLlxuICogQHR5cGUge2Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGRlYnVnKCdqc29uLXNjaGVtYS1yZWYtcGFyc2VyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJy4vZGVidWcnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBwbHVnaW5zIGFzIGFuIGFycmF5LCByYXRoZXIgdGhhbiBhbiBvYmplY3QgbWFwLlxuICogQWxsIG90aGVyIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgZXhwZWN0IGFuIGFycmF5IG9mIHBsdWdpbnMgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IG1hcC5cbiAqXG4gKiBAcGFyYW0gIHtvYmplY3R9IHBsdWdpbnMgLSBBIG1hcCBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydHMuYWxsID0gZnVuY3Rpb24gKHBsdWdpbnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHBsdWdpbnMpXG4gICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHBsdWdpbnNba2V5XSA9PT0gJ29iamVjdCc7XG4gICAgfSlcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHBsdWdpbnNba2V5XS5uYW1lID0ga2V5O1xuICAgICAgcmV0dXJuIHBsdWdpbnNba2V5XTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRmlsdGVycyB0aGUgZ2l2ZW4gcGx1Z2lucywgcmV0dXJuaW5nIG9ubHkgdGhlIG9uZXMgcmV0dXJuIGB0cnVlYCBmb3IgdGhlIGdpdmVuIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0gIHtvYmplY3RbXX0gcGx1Z2lucyAtIEFuIGFycmF5IG9mIHBsdWdpbiBvYmplY3RzXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgbWV0aG9kICAtIFRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgbWV0aG9kIHRvIGludm9rZSBmb3IgZWFjaCBwbHVnaW5cbiAqIEBwYXJhbSAge29iamVjdH0gICBmaWxlICAgIC0gQSBmaWxlIGluZm8gb2JqZWN0LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBlYWNoIG1ldGhvZFxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydHMuZmlsdGVyID0gZnVuY3Rpb24gKHBsdWdpbnMsIG1ldGhvZCwgZmlsZSkge1xuICByZXR1cm4gcGx1Z2luc1xuICAgIC5maWx0ZXIoZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgcmV0dXJuICEhZ2V0UmVzdWx0KHBsdWdpbiwgbWV0aG9kLCBmaWxlKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogU29ydHMgdGhlIGdpdmVuIHBsdWdpbnMsIGluIHBsYWNlLCBieSB0aGVpciBgb3JkZXJgIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119IHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHJldHVybnMge29iamVjdFtdfVxuICovXG5leHBvcnRzLnNvcnQgPSBmdW5jdGlvbiAocGx1Z2lucykge1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHBsdWdpbi5vcmRlciA9IHBsdWdpbi5vcmRlciB8fCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBsdWdpbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7IH0pO1xufTtcblxuLyoqXG4gKiBSdW5zIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG9mIHRoZSBnaXZlbiBwbHVnaW5zLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gcmV0dXJucyBhIHN1Y2Nlc3NmdWwgcmVzdWx0LlxuICogRWFjaCBtZXRob2QgY2FuIHJldHVybiBhIHN5bmNocm9ub3VzIHZhbHVlLCBhIFByb21pc2UsIG9yIGNhbGwgYW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suXG4gKiBJZiB0aGUgcHJvbWlzZSByZXNvbHZlcyBzdWNjZXNzZnVsbHksIG9yIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aG91dCBhbiBlcnJvciwgdGhlbiB0aGUgcmVzdWx0XG4gKiBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCBhbmQgbm8gZnVydGhlciBwbHVnaW5zIGFyZSBjYWxsZWQuXG4gKiBJZiB0aGUgcHJvbWlzZSByZWplY3RzLCBvciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gZXJyb3IsIHRoZW4gdGhlIG5leHQgcGx1Z2luIGlzIGNhbGxlZC5cbiAqIElmIEFMTCBwbHVnaW5zIGZhaWwsIHRoZW4gdGhlIGxhc3QgZXJyb3IgaXMgdGhyb3duLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119ICBwbHVnaW5zIC0gQW4gYXJyYXkgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICBtZXRob2QgIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0byBpbnZva2UgZm9yIGVhY2ggcGx1Z2luXG4gKiBAcGFyYW0ge29iamVjdH0gICAgZmlsZSAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZWFjaCBtZXRob2RcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnRzLnJ1biA9IGZ1bmN0aW9uIChwbHVnaW5zLCBtZXRob2QsIGZpbGUpIHtcbiAgdmFyIHBsdWdpbiwgbGFzdEVycm9yLCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBydW5OZXh0UGx1Z2luKCk7XG5cbiAgICBmdW5jdGlvbiBydW5OZXh0UGx1Z2luICgpIHtcbiAgICAgIHBsdWdpbiA9IHBsdWdpbnNbaW5kZXgrK107XG4gICAgICBpZiAoIXBsdWdpbikge1xuICAgICAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBmdW5jdGlvbnMsIHNvIHJlLXRocm93IHRoZSBsYXN0IGVycm9yXG4gICAgICAgIHJldHVybiByZWplY3QobGFzdEVycm9yKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgZGVidWcoJyAgJXMnLCBwbHVnaW4ubmFtZSk7XG4gICAgICAgIHZhciByZXN1bHQgPSBnZXRSZXN1bHQocGx1Z2luLCBtZXRob2QsIGZpbGUsIGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBBIHByb21pc2Ugd2FzIHJldHVybmVkXG4gICAgICAgICAgcmVzdWx0LnRoZW4ob25TdWNjZXNzLCBvbkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEEgc3luY2hyb25vdXMgcmVzdWx0IHdhcyByZXR1cm5lZFxuICAgICAgICAgIG9uU3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UgeyB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgfVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxsYmFjayAoZXJyLCByZXN1bHQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcyhyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uU3VjY2VzcyAocmVzdWx0KSB7XG4gICAgICBkZWJ1ZygnICAgIHN1Y2Nlc3MnKTtcbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBwbHVnaW46IHBsdWdpbixcbiAgICAgICAgcmVzdWx0OiByZXN1bHRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgZGVidWcoJyAgICAlcycsIGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgICBsYXN0RXJyb3IgPSBlcnI7XG4gICAgICBydW5OZXh0UGx1Z2luKCk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHByb3BlcnR5LlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIHRoZW4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuZWQuXG4gKiBJZiB0aGUgdmFsdWUgaXMgYSBSZWdFeHAsIHRoZW4gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aGUgZmlsZSBVUkwuXG4gKiBJZiB0aGUgdmFsdWUgaXMgYW4gYXJheSwgdGhlbiBpdCB3aWxsIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIGZpbGUgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgb2JqICAgICAgICAtIFRoZSBvYmplY3Qgd2hvc2UgcHJvcGVydHkvbWV0aG9kIGlzIGNhbGxlZFxuICogQHBhcmFtICAge3N0cmluZ30gICBwcm9wICAgICAgIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5L21ldGhvZCB0byBpbnZva2VcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgZmlsZSAgICAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIG1ldGhvZFxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayBmdW5jdGlvbiwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIG1ldGhvZFxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldFJlc3VsdCAob2JqLCBwcm9wLCBmaWxlLCBjYWxsYmFjaykge1xuICB2YXIgdmFsdWUgPSBvYmpbcHJvcF07XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZS5hcHBseShvYmosIFtmaWxlLCBjYWxsYmFja10pO1xuICB9XG5cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIC8vIFRoZSBzeW5jaHJvbm91cyBwbHVnaW4gZnVuY3Rpb25zIChjYW5QYXJzZSBhbmQgY2FuUmVhZClcbiAgICAvLyBhbGxvdyBhIFwic2hvcnRoYW5kXCIgc3ludGF4LCB3aGVyZSB0aGUgdXNlciBjYW4gbWF0Y2hcbiAgICAvLyBmaWxlcyBieSBSZWdFeHAgb3IgYnkgZmlsZSBleHRlbnNpb24uXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdmFsdWUudGVzdChmaWxlLnVybCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gZmlsZS5leHRlbnNpb247XG4gICAgfVxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaW5kZXhPZihmaWxlLmV4dGVuc2lvbikgIT09IC0xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzV2luZG93cyA9IC9ed2luLy50ZXN0KHByb2Nlc3MucGxhdGZvcm0pLFxuICAgIGZvcndhcmRTbGFzaFBhdHRlcm4gPSAvXFwvL2csXG4gICAgcHJvdG9jb2xQYXR0ZXJuID0gL14oXFx3ezIsfSk6XFwvXFwvL2ksXG4gICAgdXJsID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vIFJlZ0V4cCBwYXR0ZXJucyB0byBVUkwtZW5jb2RlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXG52YXIgdXJsRW5jb2RlUGF0dGVybnMgPSBbXG4gIC9cXD8vZywgJyUzRicsXG4gIC9cXCMvZywgJyUyMycsXG5dO1xuXG4vLyBSZWdFeHAgcGF0dGVybnMgdG8gVVJMLWRlY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHNcbnZhciB1cmxEZWNvZGVQYXR0ZXJucyA9IFtcbiAgL1xcJTIzL2csICcjJyxcbiAgL1xcJTI0L2csICckJyxcbiAgL1xcJTI2L2csICcmJyxcbiAgL1xcJTJDL2csICcsJyxcbiAgL1xcJTQwL2csICdAJ1xuXTtcblxuZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xuZXhwb3J0cy5yZXNvbHZlID0gcmVxdWlyZSgndXJsJykucmVzb2x2ZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IChpbiBOb2RlKSBvciB0aGUgY3VycmVudCBwYWdlIFVSTCAoaW4gYnJvd3NlcnMpLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuY3dkID0gZnVuY3Rpb24gY3dkICgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuYnJvd3NlciA/IGxvY2F0aW9uLmhyZWYgOiBwcm9jZXNzLmN3ZCgpICsgJy8nO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm90b2NvbCBvZiB0aGUgZ2l2ZW4gVVJMLCBvciBgdW5kZWZpbmVkYCBpZiBpdCBoYXMgbm8gcHJvdG9jb2wuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMgez9zdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0UHJvdG9jb2wgPSBmdW5jdGlvbiBnZXRQcm90b2NvbCAocGF0aCkge1xuICB2YXIgbWF0Y2ggPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhwYXRoKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgcmV0dXJuIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiBvZiB0aGUgZ2l2ZW4gVVJMLFxuICogb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGhhcyBubyBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5nZXRFeHRlbnNpb24gPSBmdW5jdGlvbiBnZXRFeHRlbnNpb24gKHBhdGgpIHtcbiAgdmFyIGxhc3REb3QgPSBwYXRoLmxhc3RJbmRleE9mKCcuJyk7XG4gIGlmIChsYXN0RG90ID49IDApIHtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHIobGFzdERvdCkudG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gJyc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGhhc2ggKFVSTCBmcmFnbWVudCksIG9mIHRoZSBnaXZlbiBwYXRoLlxuICogSWYgdGhlcmUgaXMgbm8gaGFzaCwgdGhlbiB0aGUgcm9vdCBoYXNoIChcIiNcIikgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5nZXRIYXNoID0gZnVuY3Rpb24gZ2V0SGFzaCAocGF0aCkge1xuICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBwYXRoLnN1YnN0cihoYXNoSW5kZXgpO1xuICB9XG4gIHJldHVybiAnIyc7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGhhc2ggKFVSTCBmcmFnbWVudCksIGlmIGFueSwgZnJvbSB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gICB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnN0cmlwSGFzaCA9IGZ1bmN0aW9uIHN0cmlwSGFzaCAocGF0aCkge1xuICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgIHBhdGggPSBwYXRoLnN1YnN0cigwLCBoYXNoSW5kZXgpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgYW4gSFRUUChTKSBVUkwuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNIdHRwID0gZnVuY3Rpb24gaXNIdHRwIChwYXRoKSB7XG4gIHZhciBwcm90b2NvbCA9IHVybC5nZXRQcm90b2NvbChwYXRoKTtcbiAgaWYgKHByb3RvY29sID09PSAnaHR0cCcgfHwgcHJvdG9jb2wgPT09ICdodHRwcycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBlbHNlIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVGhlcmUgaXMgbm8gcHJvdG9jb2wuICBJZiB3ZSdyZSBydW5uaW5nIGluIGEgYnJvd3NlciwgdGhlbiBhc3N1bWUgaXQncyBIVFRQLlxuICAgIHJldHVybiBwcm9jZXNzLmJyb3dzZXI7XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gSXQncyBzb21lIG90aGVyIHByb3RvY29sLCBzdWNoIGFzIFwiZnRwOi8vXCIsIFwibW9uZ29kYjovL1wiLCBldGMuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBpcyBhIGZpbGVzeXN0ZW0gcGF0aC5cbiAqIFRoaXMgaW5jbHVkZXMgXCJmaWxlOi8vXCIgVVJMcy5cbiAqXG4gKiBAcGFyYW0gICB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0cy5pc0ZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gaXNGaWxlU3lzdGVtUGF0aCAocGF0aCkge1xuICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgLy8gV2UncmUgcnVubmluZyBpbiBhIGJyb3dzZXIsIHNvIGFzc3VtZSB0aGF0IGFsbCBwYXRocyBhcmUgVVJMcy5cbiAgICAvLyBUaGlzIHdheSwgZXZlbiByZWxhdGl2ZSBwYXRocyB3aWxsIGJlIHRyZWF0ZWQgYXMgVVJMcyByYXRoZXIgdGhhbiBhcyBmaWxlc3lzdGVtIHBhdGhzXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvY29sID0gdXJsLmdldFByb3RvY29sKHBhdGgpO1xuICByZXR1cm4gcHJvdG9jb2wgPT09IHVuZGVmaW5lZCB8fCBwcm90b2NvbCA9PT0gJ2ZpbGUnO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGVzeXN0ZW0gcGF0aCB0byBhIHByb3Blcmx5LWVuY29kZWQgVVJMLlxuICpcbiAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgSlNPTiBTY2hlbWEgJFJlZiBQYXJzZXIgaXMgY2FsbGVkXG4gKiB3aXRoIGEgZmlsZXN5c3RlbSBwYXRoIHRoYXQgY29udGFpbnMgY2hhcmFjdGVycyB3aGljaCBhcmUgbm90IGFsbG93ZWQgaW4gVVJMcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogVGhlIGZvbGxvd2luZyBmaWxlc3lzdGVtIHBhdGhzIHdvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgZm9sbG93aW5nIFVSTHM6XG4gKlxuICogICAgPFwiIUAjJCVeJiorPT8nPi5qc29uICAgICAgICAgICAgICA9PT4gICAlM0MlMjIhQCUyMyQlMjUlNUUmKis9JTNGXFwnJTNFLmpzb25cbiAqICAgIEM6XFxcXE15IERvY3VtZW50c1xcXFxGaWxlICgxKS5qc29uICAgPT0+ICAgQzovTXklMjBEb2N1bWVudHMvRmlsZSUyMCgxKS5qc29uXG4gKiAgICBmaWxlOi8vUHJvamVjdCAjNDIvZmlsZS5qc29uICAgICAgPT0+ICAgZmlsZTovL1Byb2plY3QlMjAlMjM0Mi9maWxlLmpzb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5mcm9tRmlsZVN5c3RlbVBhdGggPSBmdW5jdGlvbiBmcm9tRmlsZVN5c3RlbVBhdGggKHBhdGgpIHtcbiAgLy8gU3RlcCAxOiBPbiBXaW5kb3dzLCByZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLFxuICAvLyByYXRoZXIgdGhhbiBlbmNvZGluZyB0aGVtIGFzIFwiJTVDXCJcbiAgaWYgKGlzV2luZG93cykge1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgfVxuXG4gIC8vIFN0ZXAgMjogYGVuY29kZVVSSWAgd2lsbCB0YWtlIGNhcmUgb2YgTU9TVCBjaGFyYWN0ZXJzXG4gIHBhdGggPSBlbmNvZGVVUkkocGF0aCk7XG5cbiAgLy8gU3RlcCAzOiBNYW51YWxseSBlbmNvZGUgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgZW5jb2RlZCBieSBgZW5jb2RlVVJJYC5cbiAgLy8gVGhpcyBpbmNsdWRlcyBjaGFyYWN0ZXJzIHN1Y2ggYXMgXCIjXCIgYW5kIFwiP1wiLCB3aGljaCBoYXZlIHNwZWNpYWwgbWVhbmluZyBpbiBVUkxzLFxuICAvLyBidXQgYXJlIGp1c3Qgbm9ybWFsIGNoYXJhY3RlcnMgaW4gYSBmaWxlc3lzdGVtIHBhdGguXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsRW5jb2RlUGF0dGVybnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKHVybEVuY29kZVBhdHRlcm5zW2ldLCB1cmxFbmNvZGVQYXR0ZXJuc1tpICsgMV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVVJMIHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSAgcGF0aFxuICogQHBhcmFtIHtib29sZWFufSBba2VlcEZpbGVQcm90b2NvbF0gLSBJZiB0cnVlLCB0aGVuIFwiZmlsZTovL1wiIHdpbGwgTk9UIGJlIHN0cmlwcGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnRvRmlsZVN5c3RlbVBhdGggPSBmdW5jdGlvbiB0b0ZpbGVTeXN0ZW1QYXRoIChwYXRoLCBrZWVwRmlsZVByb3RvY29sKSB7XG4gIC8vIFN0ZXAgMTogYGRlY29kZVVSSWAgd2lsbCBkZWNvZGUgY2hhcmFjdGVycyBzdWNoIGFzIEN5cmlsbGljIGNoYXJhY3RlcnMsIHNwYWNlcywgZXRjLlxuICBwYXRoID0gZGVjb2RlVVJJKHBhdGgpO1xuXG4gIC8vIFN0ZXAgMjogTWFudWFsbHkgZGVjb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGRlY29kZWQgYnkgYGRlY29kZVVSSWAuXG4gIC8vIFRoaXMgaW5jbHVkZXMgY2hhcmFjdGVycyBzdWNoIGFzIFwiI1wiIGFuZCBcIj9cIiwgd2hpY2ggaGF2ZSBzcGVjaWFsIG1lYW5pbmcgaW4gVVJMcyxcbiAgLy8gYnV0IGFyZSBqdXN0IG5vcm1hbCBjaGFyYWN0ZXJzIGluIGEgZmlsZXN5c3RlbSBwYXRoLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybERlY29kZVBhdHRlcm5zLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSh1cmxEZWNvZGVQYXR0ZXJuc1tpXSwgdXJsRGVjb2RlUGF0dGVybnNbaSArIDFdKTtcbiAgfVxuXG4gIC8vIFN0ZXAgMzogSWYgaXQncyBhIFwiZmlsZTovL1wiIFVSTCwgdGhlbiBmb3JtYXQgaXQgY29uc2lzdGVudGx5XG4gIC8vIG9yIGNvbnZlcnQgaXQgdG8gYSBsb2NhbCBmaWxlc3lzdGVtIHBhdGhcbiAgdmFyIGlzRmlsZVVybCA9IHBhdGguc3Vic3RyKDAsIDcpLnRvTG93ZXJDYXNlKCkgPT09ICdmaWxlOi8vJztcbiAgaWYgKGlzRmlsZVVybCkge1xuICAgIC8vIFN0cmlwLW9mZiB0aGUgcHJvdG9jb2wsIGFuZCB0aGUgaW5pdGlhbCBcIi9cIiwgaWYgdGhlcmUgaXMgb25lXG4gICAgcGF0aCA9IHBhdGhbN10gPT09ICcvJyA/IHBhdGguc3Vic3RyKDgpIDogcGF0aC5zdWJzdHIoNyk7XG5cbiAgICAvLyBpbnNlcnQgYSBjb2xvbiAoXCI6XCIpIGFmdGVyIHRoZSBkcml2ZSBsZXR0ZXIgb24gV2luZG93c1xuICAgIGlmIChpc1dpbmRvd3MgJiYgcGF0aFsxXSA9PT0gJy8nKSB7XG4gICAgICBwYXRoID0gcGF0aFswXSArICc6JyArIHBhdGguc3Vic3RyKDEpO1xuICAgIH1cblxuICAgIGlmIChrZWVwRmlsZVByb3RvY29sKSB7XG4gICAgICAvLyBSZXR1cm4gdGhlIGNvbnNpc3RlbnRseS1mb3JtYXR0ZWQgXCJmaWxlOi8vXCIgVVJMXG4gICAgICBwYXRoID0gJ2ZpbGU6Ly8vJyArIHBhdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQ29udmVydCB0aGUgXCJmaWxlOi8vXCIgVVJMIHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoLlxuICAgICAgLy8gT24gV2luZG93cywgaXQgd2lsbCBzdGFydCB3aXRoIHNvbWV0aGluZyBsaWtlIFwiQzovXCIuXG4gICAgICAvLyBPbiBQb3NpeCwgaXQgd2lsbCBzdGFydCB3aXRoIFwiL1wiXG4gICAgICBpc0ZpbGVVcmwgPSBmYWxzZTtcbiAgICAgIHBhdGggPSBpc1dpbmRvd3MgPyBwYXRoIDogJy8nICsgcGF0aDtcbiAgICB9XG4gIH1cblxuICAvLyBTdGVwIDQ6IE5vcm1hbGl6ZSBXaW5kb3dzIHBhdGhzICh1bmxlc3MgaXQncyBhIFwiZmlsZTovL1wiIFVSTClcbiAgaWYgKGlzV2luZG93cyAmJiAhaXNGaWxlVXJsKSB7XG4gICAgLy8gUmVwbGFjZSBmb3J3YXJkIHNsYXNoZXMgd2l0aCBiYWNrc2xhc2hlc1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoZm9yd2FyZFNsYXNoUGF0dGVybiwgJ1xcXFwnKTtcblxuICAgIC8vIENhcGl0YWxpemUgdGhlIGRyaXZlIGxldHRlclxuICAgIGlmIChwYXRoLnN1YnN0cigxLCAyKSA9PT0gJzpcXFxcJykge1xuICAgICAgcGF0aCA9IHBhdGhbMF0udG9VcHBlckNhc2UoKSArIHBhdGguc3Vic3RyKDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbiIsIi8qIGVzbGludCBsaW5lcy1hcm91bmQtY29tbWVudDogWzIsIHtiZWZvcmVCbG9ja0NvbW1lbnQ6IGZhbHNlfV0gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIHlhbWwgPSByZXF1aXJlKCdqcy15YW1sJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyk7XG5cbi8qKlxuICogU2ltcGxlIFlBTUwgcGFyc2luZyBmdW5jdGlvbnMsIHNpbWlsYXIgdG8ge0BsaW5rIEpTT04ucGFyc2V9IGFuZCB7QGxpbmsgSlNPTi5zdHJpbmdpZnl9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogUGFyc2VzIGEgWUFNTCBzdHJpbmcgYW5kIHJldHVybnMgdGhlIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBZQU1MIHN0cmluZyB0byBiZSBwYXJzZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW3Jldml2ZXJdIC0gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIFByb3ZpZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHtAbGluayBKU09OLnBhcnNlfVxuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiB5YW1sUGFyc2UgKHRleHQsIHJldml2ZXIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHlhbWwuc2FmZUxvYWQodGV4dCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2lzc3Vlcy8xNTNcbiAgICAgICAgdGhyb3cgb25vKGUsIGUubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBZQU1MIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtICAgeyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gWUFNTFxuICAgKiBAcGFyYW0gICB7ZnVuY3Rpb258YXJyYXl9IHJlcGxhY2VyIC0gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIFByb3ZpZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHtAbGluayBKU09OLnN0cmluZ2lmeX1cbiAgICogQHBhcmFtICAge3N0cmluZ3xudW1iZXJ9IHNwYWNlIC0gVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gdXNlIGZvciBpbmRlbnRhdGlvbiwgb3IgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHNwYWNlcy5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHN0cmluZ2lmeTogZnVuY3Rpb24geWFtbFN0cmluZ2lmeSAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaW5kZW50ID0gKHR5cGVvZiBzcGFjZSA9PT0gJ3N0cmluZycgPyBzcGFjZS5sZW5ndGggOiBzcGFjZSkgfHwgMjtcbiAgICAgIHJldHVybiB5YW1sLnNhZmVEdW1wKHZhbHVlLCB7IGluZGVudDogaW5kZW50IH0pO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9pc3N1ZXMvMTUzXG4gICAgICAgIHRocm93IG9ubyhlLCBlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEzIFRoYWRkZWUgVHlsIDx0aGFkZGVlLnR5bEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMyBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgSm9vc3QtV2ltIEJvZWtlc3RlaWpuIDxqb29zdC13aW1AYm9la2VzdGVpam4ubmw+XG4gIENvcHlyaWdodCAoQykgMjAxMiBLcmlzIEtvd2FsIDxrcmlzLmtvd2FsQGNpeGFyLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFycGFkIEJvcnNvcyA8YXJwYWQuYm9yc29zQGdvb2dsZW1haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTEgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLypqc2xpbnQgYml0d2lzZTp0cnVlIHBsdXNwbHVzOnRydWUgKi9cbi8qZ2xvYmFsIGVzcHJpbWE6dHJ1ZSwgZGVmaW5lOnRydWUsIGV4cG9ydHM6dHJ1ZSwgd2luZG93OiB0cnVlLFxudGhyb3dFcnJvclRvbGVyYW50OiB0cnVlLFxudGhyb3dFcnJvcjogdHJ1ZSwgZ2VuZXJhdGVTdGF0ZW1lbnQ6IHRydWUsIHBlZWs6IHRydWUsXG5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uOiB0cnVlLCBwYXJzZUJsb2NrOiB0cnVlLCBwYXJzZUV4cHJlc3Npb246IHRydWUsXG5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb246IHRydWUsIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uOiB0cnVlLFxucGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzOiB0cnVlLCBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjogdHJ1ZSxcbnBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlVW5hcnlFeHByZXNzaW9uOiB0cnVlLFxucGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudDogdHJ1ZSAqL1xuXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvLyBVbml2ZXJzYWwgTW9kdWxlIERlZmluaXRpb24gKFVNRCkgdG8gc3VwcG9ydCBBTUQsIENvbW1vbkpTL05vZGUuanMsXG4gICAgLy8gUmhpbm8sIGFuZCBwbGFpbiBicm93c2VyIGxvYWRpbmcuXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmYWN0b3J5KGV4cG9ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZhY3RvcnkoKHJvb3QuZXNwcmltYSA9IHt9KSk7XG4gICAgfVxufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBUb2tlbixcbiAgICAgICAgVG9rZW5OYW1lLFxuICAgICAgICBGbkV4cHJUb2tlbnMsXG4gICAgICAgIFN5bnRheCxcbiAgICAgICAgUHJvcGVydHlLaW5kLFxuICAgICAgICBNZXNzYWdlcyxcbiAgICAgICAgUmVnZXgsXG4gICAgICAgIFN5bnRheFRyZWVEZWxlZ2F0ZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBzdHJpY3QsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsaW5lTnVtYmVyLFxuICAgICAgICBsaW5lU3RhcnQsXG4gICAgICAgIGxlbmd0aCxcbiAgICAgICAgZGVsZWdhdGUsXG4gICAgICAgIGxvb2thaGVhZCxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGV4dHJhO1xuXG4gICAgVG9rZW4gPSB7XG4gICAgICAgIEJvb2xlYW5MaXRlcmFsOiAxLFxuICAgICAgICBFT0Y6IDIsXG4gICAgICAgIElkZW50aWZpZXI6IDMsXG4gICAgICAgIEtleXdvcmQ6IDQsXG4gICAgICAgIE51bGxMaXRlcmFsOiA1LFxuICAgICAgICBOdW1lcmljTGl0ZXJhbDogNixcbiAgICAgICAgUHVuY3R1YXRvcjogNyxcbiAgICAgICAgU3RyaW5nTGl0ZXJhbDogOCxcbiAgICAgICAgUmVndWxhckV4cHJlc3Npb246IDlcbiAgICB9O1xuXG4gICAgVG9rZW5OYW1lID0ge307XG4gICAgVG9rZW5OYW1lW1Rva2VuLkJvb2xlYW5MaXRlcmFsXSA9ICdCb29sZWFuJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uRU9GXSA9ICc8ZW5kPic7XG4gICAgVG9rZW5OYW1lW1Rva2VuLklkZW50aWZpZXJdID0gJ0lkZW50aWZpZXInO1xuICAgIFRva2VuTmFtZVtUb2tlbi5LZXl3b3JkXSA9ICdLZXl3b3JkJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uTnVsbExpdGVyYWxdID0gJ051bGwnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5OdW1lcmljTGl0ZXJhbF0gPSAnTnVtZXJpYyc7XG4gICAgVG9rZW5OYW1lW1Rva2VuLlB1bmN0dWF0b3JdID0gJ1B1bmN0dWF0b3InO1xuICAgIFRva2VuTmFtZVtUb2tlbi5TdHJpbmdMaXRlcmFsXSA9ICdTdHJpbmcnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5SZWd1bGFyRXhwcmVzc2lvbl0gPSAnUmVndWxhckV4cHJlc3Npb24nO1xuXG4gICAgLy8gQSBmdW5jdGlvbiBmb2xsb3dpbmcgb25lIG9mIHRob3NlIHRva2VucyBpcyBhbiBleHByZXNzaW9uLlxuICAgIEZuRXhwclRva2VucyA9IFsnKCcsICd7JywgJ1snLCAnaW4nLCAndHlwZW9mJywgJ2luc3RhbmNlb2YnLCAnbmV3JyxcbiAgICAgICAgICAgICAgICAgICAgJ3JldHVybicsICdjYXNlJywgJ2RlbGV0ZScsICd0aHJvdycsICd2b2lkJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gYXNzaWdubWVudCBvcGVyYXRvcnNcbiAgICAgICAgICAgICAgICAgICAgJz0nLCAnKz0nLCAnLT0nLCAnKj0nLCAnLz0nLCAnJT0nLCAnPDw9JywgJz4+PScsICc+Pj49JyxcbiAgICAgICAgICAgICAgICAgICAgJyY9JywgJ3w9JywgJ149JywgJywnLFxuICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnkvdW5hcnkgb3BlcmF0b3JzXG4gICAgICAgICAgICAgICAgICAgICcrJywgJy0nLCAnKicsICcvJywgJyUnLCAnKysnLCAnLS0nLCAnPDwnLCAnPj4nLCAnPj4+JywgJyYnLFxuICAgICAgICAgICAgICAgICAgICAnfCcsICdeJywgJyEnLCAnficsICcmJicsICd8fCcsICc/JywgJzonLCAnPT09JywgJz09JywgJz49JyxcbiAgICAgICAgICAgICAgICAgICAgJzw9JywgJzwnLCAnPicsICchPScsICchPT0nXTtcblxuICAgIFN5bnRheCA9IHtcbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246ICdBc3NpZ25tZW50RXhwcmVzc2lvbicsXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogJ0FycmF5RXhwcmVzc2lvbicsXG4gICAgICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgICAgICBCaW5hcnlFeHByZXNzaW9uOiAnQmluYXJ5RXhwcmVzc2lvbicsXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiAnQnJlYWtTdGF0ZW1lbnQnLFxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJyxcbiAgICAgICAgQ2F0Y2hDbGF1c2U6ICdDYXRjaENsYXVzZScsXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbicsXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiAnQ29udGludWVTdGF0ZW1lbnQnLFxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1lbnQnLFxuICAgICAgICBFbXB0eVN0YXRlbWVudDogJ0VtcHR5U3RhdGVtZW50JyxcbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogJ0V4cHJlc3Npb25TdGF0ZW1lbnQnLFxuICAgICAgICBGb3JTdGF0ZW1lbnQ6ICdGb3JTdGF0ZW1lbnQnLFxuICAgICAgICBGb3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JyxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogJ0Z1bmN0aW9uRGVjbGFyYXRpb24nLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246ICdGdW5jdGlvbkV4cHJlc3Npb24nLFxuICAgICAgICBJZGVudGlmaWVyOiAnSWRlbnRpZmllcicsXG4gICAgICAgIElmU3RhdGVtZW50OiAnSWZTdGF0ZW1lbnQnLFxuICAgICAgICBMaXRlcmFsOiAnTGl0ZXJhbCcsXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6ICdMYWJlbGVkU3RhdGVtZW50JyxcbiAgICAgICAgTG9naWNhbEV4cHJlc3Npb246ICdMb2dpY2FsRXhwcmVzc2lvbicsXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246ICdNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAgICAgTmV3RXhwcmVzc2lvbjogJ05ld0V4cHJlc3Npb24nLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiAnT2JqZWN0RXhwcmVzc2lvbicsXG4gICAgICAgIFByb2dyYW06ICdQcm9ncmFtJyxcbiAgICAgICAgUHJvcGVydHk6ICdQcm9wZXJ0eScsXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogJ1JldHVyblN0YXRlbWVudCcsXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogJ1NlcXVlbmNlRXhwcmVzc2lvbicsXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsXG4gICAgICAgIFN3aXRjaENhc2U6ICdTd2l0Y2hDYXNlJyxcbiAgICAgICAgVGhpc0V4cHJlc3Npb246ICdUaGlzRXhwcmVzc2lvbicsXG4gICAgICAgIFRocm93U3RhdGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLFxuICAgICAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0ZW1lbnQnLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246ICdVbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiAnVXBkYXRlRXhwcmVzc2lvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiAnVmFyaWFibGVEZWNsYXJhdG9yJyxcbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6ICdXaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50J1xuICAgIH07XG5cbiAgICBQcm9wZXJ0eUtpbmQgPSB7XG4gICAgICAgIERhdGE6IDEsXG4gICAgICAgIEdldDogMixcbiAgICAgICAgU2V0OiA0XG4gICAgfTtcblxuICAgIC8vIEVycm9yIG1lc3NhZ2VzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gVjguXG4gICAgTWVzc2FnZXMgPSB7XG4gICAgICAgIFVuZXhwZWN0ZWRUb2tlbjogICdVbmV4cGVjdGVkIHRva2VuICUwJyxcbiAgICAgICAgVW5leHBlY3RlZE51bWJlcjogICdVbmV4cGVjdGVkIG51bWJlcicsXG4gICAgICAgIFVuZXhwZWN0ZWRTdHJpbmc6ICAnVW5leHBlY3RlZCBzdHJpbmcnLFxuICAgICAgICBVbmV4cGVjdGVkSWRlbnRpZmllcjogICdVbmV4cGVjdGVkIGlkZW50aWZpZXInLFxuICAgICAgICBVbmV4cGVjdGVkUmVzZXJ2ZWQ6ICAnVW5leHBlY3RlZCByZXNlcnZlZCB3b3JkJyxcbiAgICAgICAgVW5leHBlY3RlZEVPUzogICdVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCcsXG4gICAgICAgIE5ld2xpbmVBZnRlclRocm93OiAgJ0lsbGVnYWwgbmV3bGluZSBhZnRlciB0aHJvdycsXG4gICAgICAgIEludmFsaWRSZWdFeHA6ICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbicsXG4gICAgICAgIFVudGVybWluYXRlZFJlZ0V4cDogICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbWlzc2luZyAvJyxcbiAgICAgICAgSW52YWxpZExIU0luQXNzaWdubWVudDogICdJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGFzc2lnbm1lbnQnLFxuICAgICAgICBJbnZhbGlkTEhTSW5Gb3JJbjogICdJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGZvci1pbicsXG4gICAgICAgIE11bHRpcGxlRGVmYXVsdHNJblN3aXRjaDogJ01vcmUgdGhhbiBvbmUgZGVmYXVsdCBjbGF1c2UgaW4gc3dpdGNoIHN0YXRlbWVudCcsXG4gICAgICAgIE5vQ2F0Y2hPckZpbmFsbHk6ICAnTWlzc2luZyBjYXRjaCBvciBmaW5hbGx5IGFmdGVyIHRyeScsXG4gICAgICAgIFVua25vd25MYWJlbDogJ1VuZGVmaW5lZCBsYWJlbCBcXCclMFxcJycsXG4gICAgICAgIFJlZGVjbGFyYXRpb246ICclMCBcXCclMVxcJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkJyxcbiAgICAgICAgSWxsZWdhbENvbnRpbnVlOiAnSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1lbnQnLFxuICAgICAgICBJbGxlZ2FsQnJlYWs6ICdJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudCcsXG4gICAgICAgIElsbGVnYWxSZXR1cm46ICdJbGxlZ2FsIHJldHVybiBzdGF0ZW1lbnQnLFxuICAgICAgICBTdHJpY3RNb2RlV2l0aDogICdTdHJpY3QgbW9kZSBjb2RlIG1heSBub3QgaW5jbHVkZSBhIHdpdGggc3RhdGVtZW50JyxcbiAgICAgICAgU3RyaWN0Q2F0Y2hWYXJpYWJsZTogICdDYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0VmFyTmFtZTogICdWYXJpYWJsZSBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RQYXJhbU5hbWU6ICAnUGFyYW1ldGVyIG5hbWUgZXZhbCBvciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RQYXJhbUR1cGU6ICdTdHJpY3QgbW9kZSBmdW5jdGlvbiBtYXkgbm90IGhhdmUgZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcycsXG4gICAgICAgIFN0cmljdEZ1bmN0aW9uTmFtZTogICdGdW5jdGlvbiBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RPY3RhbExpdGVyYWw6ICAnT2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLicsXG4gICAgICAgIFN0cmljdERlbGV0ZTogICdEZWxldGUgb2YgYW4gdW5xdWFsaWZpZWQgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZS4nLFxuICAgICAgICBTdHJpY3REdXBsaWNhdGVQcm9wZXJ0eTogICdEdXBsaWNhdGUgZGF0YSBwcm9wZXJ0eSBpbiBvYmplY3QgbGl0ZXJhbCBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIEFjY2Vzc29yRGF0YVByb3BlcnR5OiAgJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBkYXRhIGFuZCBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUnLFxuICAgICAgICBBY2Nlc3NvckdldFNldDogICdPYmplY3QgbGl0ZXJhbCBtYXkgbm90IGhhdmUgbXVsdGlwbGUgZ2V0L3NldCBhY2Nlc3NvcnMgd2l0aCB0aGUgc2FtZSBuYW1lJyxcbiAgICAgICAgU3RyaWN0TEhTQXNzaWdubWVudDogICdBc3NpZ25tZW50IHRvIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0TEhTUG9zdGZpeDogICdQb3N0Zml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RMSFNQcmVmaXg6ICAnUHJlZml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RSZXNlcnZlZFdvcmQ6ICAnVXNlIG9mIGZ1dHVyZSByZXNlcnZlZCB3b3JkIGluIHN0cmljdCBtb2RlJ1xuICAgIH07XG5cbiAgICAvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4LnB5LlxuICAgIFJlZ2V4ID0ge1xuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3IFJlZ0V4cCgnW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTI3XFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwXFx1MDhBMi1cXHUwOEFDXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5NzdcXHUwOTc5LVxcdTA5N0ZcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzM1xcdTBDMzUtXFx1MEMzOVxcdTBDM0RcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjBcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUNcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5N1xcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTc5M1xcdUE3QTAtXFx1QTdBQVxcdUE3RjgtXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBODAtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXScpLFxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzMDAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MjdcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwXFx1MDhBMi1cXHUwOEFDXFx1MDhFNC1cXHUwOEZFXFx1MDkwMC1cXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk3MS1cXHUwOTc3XFx1MDk3OS1cXHUwOTdGXFx1MDk4MS1cXHUwOTgzXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCQy1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0VcXHUwOUQ3XFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTNcXHUwOUU2LVxcdTA5RjFcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDEtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzM1xcdTBDMzUtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OFxcdTBDNTlcXHUwQzYwLVxcdTBDNjNcXHUwQzY2LVxcdTBDNkZcXHUwQzgyXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMlxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU3XFx1MEQ2MC1cXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4MlxcdTBEODNcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREYyXFx1MERGM1xcdTBFMDEtXFx1MEUzQVxcdTBFNDAtXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUI5XFx1MEVCQi1cXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0UtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGNzEtXFx1MEY4NFxcdTBGODYtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDAwLVxcdTEwNDlcXHUxMDUwLVxcdTEwOURcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM1RC1cXHUxMzVGXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkYwXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzE0XFx1MTcyMC1cXHUxNzM0XFx1MTc0MC1cXHUxNzUzXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc3MlxcdTE3NzNcXHUxNzgwLVxcdTE3RDNcXHUxN0Q3XFx1MTdEQ1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODEwLVxcdTE4MTlcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUNcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxOUQwLVxcdTE5RDlcXHUxQTAwLVxcdTFBMUJcXHUxQTIwLVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUE3XFx1MUIwMC1cXHUxQjRCXFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQkYzXFx1MUMwMC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM0RC1cXHUxQzdEXFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0Y2XFx1MUQwMC1cXHUxREU2XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5XFx1MzA5QVxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTY5N1xcdUE2OUYtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTc5M1xcdUE3QTAtXFx1QTdBQVxcdUE3RjgtXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNFxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOTAwLVxcdUE5MkRcXHVBOTMwLVxcdUE5NTNcXHVBOTYwLVxcdUE5N0NcXHVBOTgwLVxcdUE5QzBcXHVBOUNGLVxcdUE5RDlcXHVBQTAwLVxcdUFBMzZcXHVBQTQwLVxcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3QlxcdUFBODAtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMjZcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdJylcbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgIC8vIFRoaXMgaXMgb25seSB0byBoYXZlIGEgYmV0dGVyIGNvbnRyYWN0IHNlbWFudGljLCBpLmUuIGFub3RoZXIgc2FmZXR5IG5ldFxuICAgIC8vIHRvIGNhdGNoIGEgbG9naWMgZXJyb3IuIFRoZSBjb25kaXRpb24gc2hhbGwgYmUgZnVsZmlsbGVkIGluIG5vcm1hbCBjYXNlLlxuICAgIC8vIERvIE5PVCB1c2UgdGhpcyB0byBlbmZvcmNlIGEgY2VydGFpbiBjb25kaXRpb24gb24gYW55IHVzZXIgaW5wdXQuXG5cbiAgICBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBU1NFUlQ6ICcgKyBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAoY2ggPj0gNDggJiYgY2ggPD0gNTcpOyAgIC8vIDAuLjlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0hleERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAnMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRicuaW5kZXhPZihjaCkgPj0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09jdGFsRGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuICcwMTIzNDU2NycuaW5kZXhPZihjaCkgPj0gMDtcbiAgICB9XG5cblxuICAgIC8vIDcuMiBXaGl0ZSBTcGFjZVxuXG4gICAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7XG4gICAgICAgIHJldHVybiAoY2ggPT09IDB4MjApIHx8IChjaCA9PT0gMHgwOSkgfHwgKGNoID09PSAweDBCKSB8fCAoY2ggPT09IDB4MEMpIHx8IChjaCA9PT0gMHhBMCkgfHxcbiAgICAgICAgICAgIChjaCA+PSAweDE2ODAgJiYgWzB4MTY4MCwgMHgxODBFLCAweDIwMDAsIDB4MjAwMSwgMHgyMDAyLCAweDIwMDMsIDB4MjAwNCwgMHgyMDA1LCAweDIwMDYsIDB4MjAwNywgMHgyMDA4LCAweDIwMDksIDB4MjAwQSwgMHgyMDJGLCAweDIwNUYsIDB4MzAwMCwgMHhGRUZGXS5pbmRleE9mKGNoKSA+PSAwKTtcbiAgICB9XG5cbiAgICAvLyA3LjMgTGluZSBUZXJtaW5hdG9yc1xuXG4gICAgZnVuY3Rpb24gaXNMaW5lVGVybWluYXRvcihjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDBBKSB8fCAoY2ggPT09IDB4MEQpIHx8IChjaCA9PT0gMHgyMDI4KSB8fCAoY2ggPT09IDB4MjAyOSk7XG4gICAgfVxuXG4gICAgLy8gNy42IElkZW50aWZpZXIgTmFtZXMgYW5kIElkZW50aWZpZXJzXG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09IDB4NDApIHx8ICAoY2ggPT09IDB4MjQpIHx8IChjaCA9PT0gMHg1RikgfHwgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2NvcmUpXG4gICAgICAgICAgICAoY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBKSB8fCAgICAgICAgIC8vIEEuLlpcbiAgICAgICAgICAgIChjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EpIHx8ICAgICAgICAgLy8gYS4uelxuICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAgICAgICAgICAgICAvLyBcXCAoYmFja3NsYXNoKVxuICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDI0KSB8fCAoY2ggPT09IDB4NUYpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAgICAgICAvLyBBLi5aXG4gICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAgICAgICAgIC8vIGEuLnpcbiAgICAgICAgICAgIChjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkpIHx8ICAgICAgICAgLy8gMC4uOVxuICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAgICAgICAgICAgICAvLyBcXCAoYmFja3NsYXNoKVxuICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpKTtcbiAgICB9XG5cbiAgICAvLyA3LjYuMS4yIEZ1dHVyZSBSZXNlcnZlZCBXb3Jkc1xuXG4gICAgZnVuY3Rpb24gaXNGdXR1cmVSZXNlcnZlZFdvcmQoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICBjYXNlICdleHRlbmRzJzpcbiAgICAgICAgY2FzZSAnaW1wb3J0JzpcbiAgICAgICAgY2FzZSAnc3VwZXInOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdpbXBsZW1lbnRzJzpcbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQnOlxuICAgICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICBjYXNlICdzdGF0aWMnOlxuICAgICAgICBjYXNlICd5aWVsZCc6XG4gICAgICAgIGNhc2UgJ2xldCc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzdHJpY3RlZFdvcmQoaWQpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnZXZhbCcgfHwgaWQgPT09ICdhcmd1bWVudHMnO1xuICAgIH1cblxuICAgIC8vIDcuNi4xLjEgS2V5d29yZHNcblxuICAgIGZ1bmN0aW9uIGlzS2V5d29yZChpZCkge1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZChpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2NvbnN0JyBpcyBzcGVjaWFsaXplZCBhcyBLZXl3b3JkIGluIFY4LlxuICAgICAgICAvLyAneWllbGQnIGFuZCAnbGV0JyBhcmUgZm9yIGNvbXBhdGlibGl0eSB3aXRoIFNwaWRlck1vbmtleSBhbmQgRVMubmV4dC5cbiAgICAgICAgLy8gU29tZSBvdGhlcnMgYXJlIGZyb20gZnV0dXJlIHJlc2VydmVkIHdvcmRzLlxuXG4gICAgICAgIHN3aXRjaCAoaWQubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpZicpIHx8IChpZCA9PT0gJ2luJykgfHwgKGlkID09PSAnZG8nKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3ZhcicpIHx8IChpZCA9PT0gJ2ZvcicpIHx8IChpZCA9PT0gJ25ldycpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndHJ5JykgfHwgKGlkID09PSAnbGV0Jyk7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd0aGlzJykgfHwgKGlkID09PSAnZWxzZScpIHx8IChpZCA9PT0gJ2Nhc2UnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9PT0gJ2NhdGNoJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNoJykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2Z1bmN0aW9uJykgfHwgKGlkID09PSAnY29udGludWUnKSB8fCAoaWQgPT09ICdkZWJ1Z2dlcicpO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIDcuNCBDb21tZW50c1xuXG4gICAgZnVuY3Rpb24gYWRkQ29tbWVudCh0eXBlLCB2YWx1ZSwgc3RhcnQsIGVuZCwgbG9jKSB7XG4gICAgICAgIHZhciBjb21tZW50LCBhdHRhY2hlcjtcblxuICAgICAgICBhc3NlcnQodHlwZW9mIHN0YXJ0ID09PSAnbnVtYmVyJywgJ0NvbW1lbnQgbXVzdCBoYXZlIHZhbGlkIHBvc2l0aW9uJyk7XG5cbiAgICAgICAgLy8gQmVjYXVzZSB0aGUgd2F5IHRoZSBhY3R1YWwgdG9rZW4gaXMgc2Nhbm5lZCwgb2Z0ZW4gdGhlIGNvbW1lbnRzXG4gICAgICAgIC8vIChpZiBhbnkpIGFyZSBza2lwcGVkIHR3aWNlIGR1cmluZyB0aGUgbGV4aWNhbCBhbmFseXNpcy5cbiAgICAgICAgLy8gVGh1cywgd2UgbmVlZCB0byBza2lwIGFkZGluZyBhIGNvbW1lbnQgaWYgdGhlIGNvbW1lbnQgYXJyYXkgYWxyZWFkeVxuICAgICAgICAvLyBoYW5kbGVkIGl0LlxuICAgICAgICBpZiAoc3RhdGUubGFzdENvbW1lbnRTdGFydCA+PSBzdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxhc3RDb21tZW50U3RhcnQgPSBzdGFydDtcblxuICAgICAgICBjb21tZW50ID0ge1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZXh0cmEucmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbW1lbnQucmFuZ2UgPSBbc3RhcnQsIGVuZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgY29tbWVudC5sb2MgPSBsb2M7XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEuY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcFNpbmdsZUxpbmVDb21tZW50KG9mZnNldCkge1xuICAgICAgICB2YXIgc3RhcnQsIGxvYywgY2gsIGNvbW1lbnQ7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleCAtIG9mZnNldDtcbiAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSBvZmZzZXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgb2Zmc2V0LCBpbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGFkZENvbW1lbnQoJ0xpbmUnLCBjb21tZW50LCBzdGFydCwgaW5kZXggLSAxLCBsb2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDEzICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50cykge1xuICAgICAgICAgICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIG9mZnNldCwgaW5kZXgpO1xuICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQsIGluZGV4LCBsb2MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcE11bHRpTGluZUNvbW1lbnQoKSB7XG4gICAgICAgIHZhciBzdGFydCwgbG9jLCBjaCwgY29tbWVudDtcblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gaW5kZXggLSAyO1xuICAgICAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSAyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MEQgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgwQSkge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJBKSB7XG4gICAgICAgICAgICAgICAgLy8gQmxvY2sgY29tbWVudCBlbmRzIHdpdGggJyovJy5cbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgyRikge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyAyLCBpbmRleCAtIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb21tZW50KCdCbG9jaycsIGNvbW1lbnQsIHN0YXJ0LCBpbmRleCwgbG9jKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBjaCwgc3RhcnQ7XG5cbiAgICAgICAgc3RhcnQgPSAoaW5kZXggPT09IDApO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuXG4gICAgICAgICAgICBpZiAoaXNXaGl0ZVNwYWNlKGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MEQgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDBBKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJGKSB7IC8vIFUrMDAyRiBpcyAnLydcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDJGKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgyKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkEpIHsgIC8vIFUrMDAyQSBpcyAnKidcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgc2tpcE11bHRpTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ICYmIGNoID09PSAweDJEKSB7IC8vIFUrMDAyRCBpcyAnLSdcbiAgICAgICAgICAgICAgICAvLyBVKzAwM0UgaXMgJz4nXG4gICAgICAgICAgICAgICAgaWYgKChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpID09PSAweDJEKSAmJiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAyKSA9PT0gMHgzRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0tPicgaXMgYSBzaW5nbGUtbGluZSBjb21tZW50XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDM7XG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDNDKSB7IC8vIFUrMDAzQyBpcyAnPCdcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLnNsaWNlKGluZGV4ICsgMSwgaW5kZXggKyA0KSA9PT0gJyEtLScpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYDxgXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAhYFxuICAgICAgICAgICAgICAgICAgICArK2luZGV4OyAvLyBgLWBcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1gXG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCg0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbkhleEVzY2FwZShwcmVmaXgpIHtcbiAgICAgICAgdmFyIGksIGxlbiwgY2gsIGNvZGUgPSAwO1xuXG4gICAgICAgIGxlbiA9IChwcmVmaXggPT09ICd1JykgPyA0IDogMjtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogMTYgKyAnMDEyMzQ1Njc4OWFiY2RlZicuaW5kZXhPZihjaC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVzY2FwZWRJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgY2gsIGlkO1xuXG4gICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgrKyk7XG4gICAgICAgIGlkID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG5cbiAgICAgICAgLy8gJ1xcdScgKFUrMDA1QywgVSswMDc1KSBkZW5vdGVzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHtcbiAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDB4NzUpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgY2ggPSBzY2FuSGV4RXNjYXBlKCd1Jyk7XG4gICAgICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnXFxcXCcgfHwgIWlzSWRlbnRpZmllclN0YXJ0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWQgPSBjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2gpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgaWQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG5cbiAgICAgICAgICAgIC8vICdcXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgICAgIGlmIChjaCA9PT0gMHg1Qykge1xuICAgICAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDAsIGlkLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDB4NzUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIGNoID0gc2NhbkhleEVzY2FwZSgndScpO1xuICAgICAgICAgICAgICAgIGlmICghY2ggfHwgY2ggPT09ICdcXFxcJyB8fCAhaXNJZGVudGlmaWVyUGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciBzdGFydCwgY2g7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleCsrO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAweDVDKSB7XG4gICAgICAgICAgICAgICAgLy8gQmxhY2tzbGFzaCAoVSswMDVDKSBtYXJrcyBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZS5cbiAgICAgICAgICAgICAgICBpbmRleCA9IHN0YXJ0O1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRFc2NhcGVkSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclBhcnQoY2gpKSB7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc291cmNlLnNsaWNlKHN0YXJ0LCBpbmRleCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbklkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciBzdGFydCwgaWQsIHR5cGU7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcblxuICAgICAgICAvLyBCYWNrc2xhc2ggKFUrMDA1Qykgc3RhcnRzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICBpZCA9IChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4NUMpID8gZ2V0RXNjYXBlZElkZW50aWZpZXIoKSA6IGdldElkZW50aWZpZXIoKTtcblxuICAgICAgICAvLyBUaGVyZSBpcyBubyBrZXl3b3JkIG9yIGxpdGVyYWwgd2l0aCBvbmx5IG9uZSBjaGFyYWN0ZXIuXG4gICAgICAgIC8vIFRodXMsIGl0IG11c3QgYmUgYW4gaWRlbnRpZmllci5cbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLklkZW50aWZpZXI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNLZXl3b3JkKGlkKSkge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLktleXdvcmQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQgPT09ICdudWxsJykge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLk51bGxMaXRlcmFsO1xuICAgICAgICB9IGVsc2UgaWYgKGlkID09PSAndHJ1ZScgfHwgaWQgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5Cb29sZWFuTGl0ZXJhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5JZGVudGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG5cbiAgICAvLyA3LjcgUHVuY3R1YXRvcnNcblxuICAgIGZ1bmN0aW9uIHNjYW5QdW5jdHVhdG9yKCkge1xuICAgICAgICB2YXIgc3RhcnQgPSBpbmRleCxcbiAgICAgICAgICAgIGNvZGUgPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCksXG4gICAgICAgICAgICBjb2RlMixcbiAgICAgICAgICAgIGNoMSA9IHNvdXJjZVtpbmRleF0sXG4gICAgICAgICAgICBjaDIsXG4gICAgICAgICAgICBjaDMsXG4gICAgICAgICAgICBjaDQ7XG5cbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIG1vc3QgY29tbW9uIHNpbmdsZS1jaGFyYWN0ZXIgcHVuY3R1YXRvcnMuXG4gICAgICAgIGNhc2UgMHgyRTogIC8vIC4gZG90XG4gICAgICAgIGNhc2UgMHgyODogIC8vICggb3BlbiBicmFja2V0XG4gICAgICAgIGNhc2UgMHgyOTogIC8vICkgY2xvc2UgYnJhY2tldFxuICAgICAgICBjYXNlIDB4M0I6ICAvLyA7IHNlbWljb2xvblxuICAgICAgICBjYXNlIDB4MkM6ICAvLyAsIGNvbW1hXG4gICAgICAgIGNhc2UgMHg3QjogIC8vIHsgb3BlbiBjdXJseSBicmFjZVxuICAgICAgICBjYXNlIDB4N0Q6ICAvLyB9IGNsb3NlIGN1cmx5IGJyYWNlXG4gICAgICAgIGNhc2UgMHg1QjogIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiAgLy8gXVxuICAgICAgICBjYXNlIDB4M0E6ICAvLyA6XG4gICAgICAgIGNhc2UgMHgzRjogIC8vID9cbiAgICAgICAgY2FzZSAweDdFOiAgLy8gflxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAweDI4KSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5QYXJlblRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4N0IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEub3BlbkN1cmx5VG9rZW4gPSBleHRyYS50b2tlbnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjb2RlMiA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIC8vICc9JyAoVSswMDNEKSBtYXJrcyBhbiBhc3NpZ25tZW50IG9yIGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gICAgICAgICAgICBpZiAoY29kZTIgPT09IDB4M0QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDB4MkI6ICAvLyArXG4gICAgICAgICAgICAgICAgY2FzZSAweDJEOiAgLy8gLVxuICAgICAgICAgICAgICAgIGNhc2UgMHgyRjogIC8vIC9cbiAgICAgICAgICAgICAgICBjYXNlIDB4M0M6ICAvLyA8XG4gICAgICAgICAgICAgICAgY2FzZSAweDNFOiAgLy8gPlxuICAgICAgICAgICAgICAgIGNhc2UgMHg1RTogIC8vIF5cbiAgICAgICAgICAgICAgICBjYXNlIDB4N0M6ICAvLyB8XG4gICAgICAgICAgICAgICAgY2FzZSAweDI1OiAgLy8gJVxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNjogIC8vICZcbiAgICAgICAgICAgICAgICBjYXNlIDB4MkE6ICAvLyAqXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNhc2UgMHgyMTogLy8gIVxuICAgICAgICAgICAgICAgIGNhc2UgMHgzRDogLy8gPVxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICE9PSBhbmQgPT09XG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc291cmNlLnNsaWNlKHN0YXJ0LCBpbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC1jaGFyYWN0ZXIgcHVuY3R1YXRvcjogPj4+PVxuXG4gICAgICAgIGNoNCA9IHNvdXJjZS5zdWJzdHIoaW5kZXgsIDQpO1xuXG4gICAgICAgIGlmIChjaDQgPT09ICc+Pj49Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gNDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2g0LFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPT09ICE9PSA+Pj4gPDw9ID4+PVxuXG4gICAgICAgIGNoMyA9IGNoNC5zdWJzdHIoMCwgMyk7XG5cbiAgICAgICAgaWYgKGNoMyA9PT0gJz4+PicgfHwgY2gzID09PSAnPDw9JyB8fCBjaDMgPT09ICc+Pj0nKSB7XG4gICAgICAgICAgICBpbmRleCArPSAzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDMsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyIDItY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiArKyAtLSA8PCA+PiAmJiB8fFxuICAgICAgICBjaDIgPSBjaDMuc3Vic3RyKDAsIDIpO1xuXG4gICAgICAgIGlmICgoY2gxID09PSBjaDJbMV0gJiYgKCcrLTw+JnwnLmluZGV4T2YoY2gxKSA+PSAwKSkgfHwgY2gyID09PSAnPT4nKSB7XG4gICAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDIsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEtY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiA8ID4gPSAhICsgLSAqICUgJiB8IF4gL1xuICAgICAgICBpZiAoJzw+PSErLSolJnxeLycuaW5kZXhPZihjaDEpID49IDApIHtcbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNoMSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgIH1cblxuICAgIC8vIDcuOC4zIE51bWVyaWMgTGl0ZXJhbHNcblxuICAgIGZ1bmN0aW9uIHNjYW5IZXhMaXRlcmFsKHN0YXJ0KSB7XG4gICAgICAgIHZhciBudW1iZXIgPSAnJztcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChudW1iZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KCcweCcgKyBudW1iZXIsIDE2KSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KSB7XG4gICAgICAgIHZhciBudW1iZXIgPSAnMCcgKyBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKCFpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSB8fCBpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW4uTnVtZXJpY0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQobnVtYmVyLCA4KSxcbiAgICAgICAgICAgIG9jdGFsOiB0cnVlLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5OdW1lcmljTGl0ZXJhbCgpIHtcbiAgICAgICAgdmFyIG51bWJlciwgc3RhcnQsIGNoO1xuXG4gICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgYXNzZXJ0KGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpIHx8IChjaCA9PT0gJy4nKSxcbiAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgZGVjaW1hbCBkaWdpdCBvciBhIGRlY2ltYWwgcG9pbnQnKTtcblxuICAgICAgICBzdGFydCA9IGluZGV4O1xuICAgICAgICBudW1iZXIgPSAnJztcbiAgICAgICAgaWYgKGNoICE9PSAnLicpIHtcbiAgICAgICAgICAgIG51bWJlciA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcblxuICAgICAgICAgICAgLy8gSGV4IG51bWJlciBzdGFydHMgd2l0aCAnMHgnLlxuICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJy5cbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09ICcwJykge1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3gnIHx8IGNoID09PSAnWCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5IZXhMaXRlcmFsKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5PY3RhbExpdGVyYWwoc3RhcnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJyBzdWNoIGFzICcwOScgaXMgaWxsZWdhbC5cbiAgICAgICAgICAgICAgICBpZiAoY2ggJiYgaXNEZWNpbWFsRGlnaXQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB3aGlsZSAoaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09ICdlJyB8fCBjaCA9PT0gJ0UnKSB7XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJyB8fCBjaCA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW4uTnVtZXJpY0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW1iZXIpLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIDcuOC40IFN0cmluZyBMaXRlcmFsc1xuXG4gICAgZnVuY3Rpb24gc2NhblN0cmluZ0xpdGVyYWwoKSB7XG4gICAgICAgIHZhciBzdHIgPSAnJywgcXVvdGUsIHN0YXJ0LCBjaCwgY29kZSwgdW5lc2NhcGVkLCByZXN0b3JlLCBvY3RhbCA9IGZhbHNlLCBzdGFydExpbmVOdW1iZXIsIHN0YXJ0TGluZVN0YXJ0O1xuICAgICAgICBzdGFydExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyO1xuICAgICAgICBzdGFydExpbmVTdGFydCA9IGxpbmVTdGFydDtcblxuICAgICAgICBxdW90ZSA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydCgocXVvdGUgPT09ICdcXCcnIHx8IHF1b3RlID09PSAnXCInKSxcbiAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbCBtdXN0IHN0YXJ0cyB3aXRoIGEgcXVvdGUnKTtcblxuICAgICAgICBzdGFydCA9IGluZGV4O1xuICAgICAgICArK2luZGV4O1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG5cbiAgICAgICAgICAgIGlmIChjaCA9PT0gcXVvdGUpIHtcbiAgICAgICAgICAgICAgICBxdW90ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgaWYgKCFjaCB8fCAhaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZCA9IHNjYW5IZXhFc2NhcGUoY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuZXNjYXBlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xccic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcYic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcZic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xceDBCJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPY3RhbERpZ2l0KGNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnMDEyMzQ1NjcnLmluZGV4T2YoY2gpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXFwwIGlzIG5vdCBvY3RhbCBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMgZGlnaXRzIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiBzdHJpbmcgc3RhcnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggMCwgMSwgMiwgM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzAxMjMnLmluZGV4T2YoY2gpID49IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICAnXFxyJyAmJiBzb3VyY2VbaW5kZXhdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHF1b3RlICE9PSAnJykge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLlN0cmluZ0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogc3RyLFxuICAgICAgICAgICAgb2N0YWw6IG9jdGFsLFxuICAgICAgICAgICAgc3RhcnRMaW5lTnVtYmVyOiBzdGFydExpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydExpbmVTdGFydDogc3RhcnRMaW5lU3RhcnQsXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGVzdFJlZ0V4cChwYXR0ZXJuLCBmbGFncykge1xuICAgICAgICB2YXIgdmFsdWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkUmVnRXhwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJlZ0V4cEJvZHkoKSB7XG4gICAgICAgIHZhciBjaCwgc3RyLCBjbGFzc01hcmtlciwgdGVybWluYXRlZCwgYm9keTtcblxuICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydChjaCA9PT0gJy8nLCAnUmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgc2xhc2gnKTtcbiAgICAgICAgc3RyID0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7XG4gICAgICAgIHRlcm1pbmF0ZWQgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgLy8gRUNNQS0yNjIgNy44LjVcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjbGFzc01hcmtlcikge1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVudGVybWluYXRlZFJlZ0V4cCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeGNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoLlxuICAgICAgICBib2R5ID0gc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogYm9keSxcbiAgICAgICAgICAgIGxpdGVyYWw6IHN0clxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBGbGFncygpIHtcbiAgICAgICAgdmFyIGNoLCBzdHIsIGZsYWdzLCByZXN0b3JlO1xuXG4gICAgICAgIHN0ciA9ICcnO1xuICAgICAgICBmbGFncyA9ICcnO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghaXNJZGVudGlmaWVyUGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgaWYgKGNoID09PSAnXFxcXCcgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAndScpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdG9yZSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSBjaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc3RyICs9ICdcXFxcdSc7IHJlc3RvcmUgPCBpbmRleDsgKytyZXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNvdXJjZVtyZXN0b3JlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICs9ICd1JztcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXHUnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXCc7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgKz0gY2g7XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBmbGFncyxcbiAgICAgICAgICAgIGxpdGVyYWw6IHN0clxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHAoKSB7XG4gICAgICAgIHZhciBzdGFydCwgYm9keSwgZmxhZ3MsIHBhdHRlcm4sIHZhbHVlO1xuXG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIHN0YXJ0ID0gaW5kZXg7XG5cbiAgICAgICAgYm9keSA9IHNjYW5SZWdFeHBCb2R5KCk7XG4gICAgICAgIGZsYWdzID0gc2NhblJlZ0V4cEZsYWdzKCk7XG4gICAgICAgIHZhbHVlID0gdGVzdFJlZ0V4cChib2R5LnZhbHVlLCBmbGFncy52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlJlZ3VsYXJFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpdGVyYWw6IGJvZHkubGl0ZXJhbCArIGZsYWdzLmxpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29sbGVjdFJlZ2V4KCkge1xuICAgICAgICB2YXIgcG9zLCBsb2MsIHJlZ2V4LCB0b2tlbjtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsb2MgPSB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlZ2V4ID0gc2NhblJlZ0V4cCgpO1xuICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgfTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIWV4dHJhLnRva2VuaXplKSB7XG4gICAgICAgICAgICAvLyBQb3AgdGhlIHByZXZpb3VzIHRva2VuLCB3aGljaCBpcyBsaWtlbHkgJy8nIG9yICcvPSdcbiAgICAgICAgICAgIGlmIChleHRyYS50b2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4ucmFuZ2VbMF0gPT09IHBvcyAmJiB0b2tlbi50eXBlID09PSAnUHVuY3R1YXRvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnLycgfHwgdG9rZW4udmFsdWUgPT09ICcvPScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdSZWd1bGFyRXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlZ2V4LmxpdGVyYWwsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtwb3MsIGluZGV4XSxcbiAgICAgICAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZSh0b2tlbikge1xuICAgICAgICByZXR1cm4gdG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllciB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW4uS2V5d29yZCB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkdmFuY2VTbGFzaCgpIHtcbiAgICAgICAgdmFyIHByZXZUb2tlbixcbiAgICAgICAgICAgIGNoZWNrVG9rZW47XG4gICAgICAgIC8vIFVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zd2VldC5qcy93aWtpL2Rlc2lnblxuICAgICAgICBwcmV2VG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEudG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIXByZXZUb2tlbikge1xuICAgICAgICAgICAgLy8gTm90aGluZyBiZWZvcmUgdGhhdDogaXQgY2Fubm90IGJlIGEgZGl2aXNpb24uXG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXZUb2tlbi50eXBlID09PSAnUHVuY3R1YXRvcicpIHtcbiAgICAgICAgICAgIGlmIChwcmV2VG9rZW4udmFsdWUgPT09ICddJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJyknKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1Rva2VuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnR5cGUgPT09ICdLZXl3b3JkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrVG9rZW4udmFsdWUgPT09ICdpZicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAnd2hpbGUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ2ZvcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAnd2l0aCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICAvLyBEaXZpZGluZyBhIGZ1bmN0aW9uIGJ5IGFueXRoaW5nIG1ha2VzIGxpdHRsZSBzZW5zZSxcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSB0byBjaGVjayBmb3IgdGhhdC5cbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gM10gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDNdLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbm9ueW1vdXMgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDRdLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYW1lZCBmdW5jdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjaGVja1Rva2VuIGRldGVybWluZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gaXNcbiAgICAgICAgICAgICAgICAvLyBhIGRlY2xhcmF0aW9uIG9yIGFuIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgaWYgKEZuRXhwclRva2Vucy5pbmRleE9mKGNoZWNrVG9rZW4udmFsdWUpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgYW4gZXhwcmVzc2lvbi5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgZGVjbGFyYXRpb24uXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ0tleXdvcmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWR2YW5jZSgpIHtcbiAgICAgICAgdmFyIGNoO1xuXG4gICAgICAgIHNraXBDb21tZW50KCk7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5FT0YsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuXG4gICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjaCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FuSWRlbnRpZmllcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmVyeSBjb21tb246ICggYW5kICkgYW5kIDtcbiAgICAgICAgaWYgKGNoID09PSAweDI4IHx8IGNoID09PSAweDI5IHx8IGNoID09PSAweDNCKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmluZyBsaXRlcmFsIHN0YXJ0cyB3aXRoIHNpbmdsZSBxdW90ZSAoVSswMDI3KSBvciBkb3VibGUgcXVvdGUgKFUrMDAyMikuXG4gICAgICAgIGlmIChjaCA9PT0gMHgyNyB8fCBjaCA9PT0gMHgyMikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5TdHJpbmdMaXRlcmFsKCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIERvdCAoLikgVSswMDJFIGNhbiBhbHNvIHN0YXJ0IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLCBoZW5jZSB0aGUgbmVlZFxuICAgICAgICAvLyB0byBjaGVjayB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICAgIGlmIChjaCA9PT0gMHgyRSkge1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWNpbWFsRGlnaXQoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFsKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTbGFzaCAoLykgVSswMDJGIGNhbiBhbHNvIHN0YXJ0IGEgcmVnZXguXG4gICAgICAgIGlmIChleHRyYS50b2tlbml6ZSAmJiBjaCA9PT0gMHgyRikge1xuICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VTbGFzaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29sbGVjdFRva2VuKCkge1xuICAgICAgICB2YXIgbG9jLCB0b2tlbiwgcmFuZ2UsIHZhbHVlO1xuXG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdG9rZW4gPSBhZHZhbmNlKCk7XG4gICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuTmFtZVt0b2tlbi50eXBlXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFt0b2tlbi5zdGFydCwgdG9rZW4uZW5kXSxcbiAgICAgICAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGluZGV4ID0gdG9rZW4uZW5kO1xuICAgICAgICBsaW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJlcjtcbiAgICAgICAgbGluZVN0YXJ0ID0gdG9rZW4ubGluZVN0YXJ0O1xuXG4gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2UoKTtcblxuICAgICAgICBpbmRleCA9IHRva2VuLmVuZDtcbiAgICAgICAgbGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7XG4gICAgICAgIGxpbmVTdGFydCA9IHRva2VuLmxpbmVTdGFydDtcblxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGVlaygpIHtcbiAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQ7XG5cbiAgICAgICAgcG9zID0gaW5kZXg7XG4gICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyO1xuICAgICAgICBzdGFydCA9IGxpbmVTdGFydDtcbiAgICAgICAgbG9va2FoZWFkID0gKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSA/IGNvbGxlY3RUb2tlbigpIDogYWR2YW5jZSgpO1xuICAgICAgICBpbmRleCA9IHBvcztcbiAgICAgICAgbGluZU51bWJlciA9IGxpbmU7XG4gICAgICAgIGxpbmVTdGFydCA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFBvc2l0aW9uKGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IG5ldyBQb3NpdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTtcbiAgICAgICAgdGhpcy5lbmQgPSBuZXcgUG9zaXRpb24obGluZSwgY29sdW1uKTtcbiAgICB9XG5cbiAgICBTeW50YXhUcmVlRGVsZWdhdGUgPSB7XG5cbiAgICAgICAgbmFtZTogJ1N5bnRheFRyZWUnLFxuXG4gICAgICAgIHByb2Nlc3NDb21tZW50OiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGxhc3RDaGlsZCwgdHJhaWxpbmdDb21tZW50cztcblxuICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LlByb2dyYW0pIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4dHJhLnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ0NvbW1lbnRzID0gZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVhdGluZyB0aGUgc3RhY2suXG4gICAgICAgICAgICB3aGlsZSAoZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYmIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgbGFzdENoaWxkID0gZXh0cmEuYm90dG9tUmlnaHRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzICYmIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHNbbGFzdENoaWxkLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1lbnRzID0gbGFzdENoaWxkLmxlYWRpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChleHRyYS5sZWFkaW5nQ29tbWVudHMubGVuZ3RoID4gMCAmJiBleHRyYS5sZWFkaW5nQ29tbWVudHNbZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCAtIDFdLnJhbmdlWzFdIDw9IG5vZGUucmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGV4dHJhLmxlYWRpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZiAodHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgIG5vZGUudHJhaWxpbmdDb21tZW50cyA9IHRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucHVzaChub2RlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtYXJrRW5kOiBmdW5jdGlvbiAobm9kZSwgc3RhcnRUb2tlbikge1xuICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yYW5nZSA9IFtzdGFydFRva2VuLnN0YXJ0LCBpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXh0cmEubG9jKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sb2MgPSBuZXcgU291cmNlTG9jYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyID09PSB1bmRlZmluZWQgPyAgc3RhcnRUb2tlbi5saW5lTnVtYmVyIDogc3RhcnRUb2tlbi5zdGFydExpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnQgLSAoc3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGluZVN0YXJ0IDogc3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCksXG4gICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RQcm9jZXNzKG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXh0cmEuYXR0YWNoQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NvbW1lbnQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSxcblxuICAgICAgICBwb3N0UHJvY2VzczogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBub2RlLmxvYy5zb3VyY2UgPSBleHRyYS5zb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVBcnJheUV4cHJlc3Npb246IGZ1bmN0aW9uIChlbGVtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQXJyYXlFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQXNzaWdubWVudEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICAgICAgICAgIHZhciB0eXBlID0gKG9wZXJhdG9yID09PSAnfHwnIHx8IG9wZXJhdG9yID09PSAnJiYnKSA/IFN5bnRheC5Mb2dpY2FsRXhwcmVzc2lvbiA6XG4gICAgICAgICAgICAgICAgICAgICAgICBTeW50YXguQmluYXJ5RXhwcmVzc2lvbjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgICAgICAgICByaWdodDogcmlnaHRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5CbG9ja1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJyZWFrU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkJyZWFrU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2FsbEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsXG4gICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ2F0Y2hDbGF1c2U6IGZ1bmN0aW9uIChwYXJhbSwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2F0Y2hDbGF1c2UsXG4gICAgICAgICAgICAgICAgcGFyYW06IHBhcmFtLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db25kaXRpb25hbEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICBjb25zZXF1ZW50OiBjb25zZXF1ZW50LFxuICAgICAgICAgICAgICAgIGFsdGVybmF0ZTogYWx0ZXJuYXRlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNvbnRpbnVlU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVEZWJ1Z2dlclN0YXRlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRGVidWdnZXJTdGF0ZW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRG9XaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKGJvZHksIHRlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkRvV2hpbGVTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUVtcHR5U3RhdGVtZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5FbXB0eVN0YXRlbWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50OiBmdW5jdGlvbiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZvclN0YXRlbWVudDogZnVuY3Rpb24gKGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRm9yU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXQ6IGluaXQsXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZvckluU3RhdGVtZW50OiBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZvckluU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgZWFjaDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5jdGlvbkRlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcbiAgICAgICAgICAgICAgICByZXN0OiBudWxsLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVmYXVsdHMsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZ1bmN0aW9uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgcmVzdDogbnVsbCxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUlkZW50aWZpZXI6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlSWZTdGF0ZW1lbnQ6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LklmU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudCxcbiAgICAgICAgICAgICAgICBhbHRlcm5hdGU6IGFsdGVybmF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVMYWJlbGVkU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkxhYmVsZWRTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTGl0ZXJhbDogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5MaXRlcmFsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICByYXc6IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVNZW1iZXJFeHByZXNzaW9uOiBmdW5jdGlvbiAoYWNjZXNzb3IsIG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk1lbWJlckV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY29tcHV0ZWQ6IGFjY2Vzc29yID09PSAnWycsXG4gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsXG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZU5ld0V4cHJlc3Npb246IGZ1bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk5ld0V4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsXG4gICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbjogZnVuY3Rpb24gKHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk9iamVjdEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQb3N0Zml4RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LFxuICAgICAgICAgICAgICAgIHByZWZpeDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUHJvZ3JhbTogZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb2dyYW0sXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcm9wZXJ0eTogZnVuY3Rpb24gKGtpbmQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb3BlcnR5LFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBraW5kOiBraW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVJldHVyblN0YXRlbWVudDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5SZXR1cm5TdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5TZXF1ZW5jZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IGV4cHJlc3Npb25zXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVN3aXRjaENhc2U6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hDYXNlLFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChkaXNjcmltaW5hbnQsIGNhc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgZGlzY3JpbWluYW50OiBkaXNjcmltaW5hbnQsXG4gICAgICAgICAgICAgICAgY2FzZXM6IGNhc2VzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVRoaXNFeHByZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UaGlzRXhwcmVzc2lvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVUaHJvd1N0YXRlbWVudDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UaHJvd1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVHJ5U3RhdGVtZW50OiBmdW5jdGlvbiAoYmxvY2ssIGd1YXJkZWRIYW5kbGVycywgaGFuZGxlcnMsIGZpbmFsaXplcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVHJ5U3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgICAgICAgICAgICBndWFyZGVkSGFuZGxlcnM6IGd1YXJkZWRIYW5kbGVycyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyczogaGFuZGxlcnMsXG4gICAgICAgICAgICAgICAgZmluYWxpemVyOiBmaW5hbGl6ZXJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICcrKycgfHwgb3BlcmF0b3IgPT09ICctLScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5VbmFyeUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudCxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xhcmF0aW9ucywga2luZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnM6IGRlY2xhcmF0aW9ucyxcbiAgICAgICAgICAgICAgICBraW5kOiBraW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRvcjogZnVuY3Rpb24gKGlkLCBpbml0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0b3IsXG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIGluaXQ6IGluaXRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uICh0ZXN0LCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5XaGlsZVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlV2l0aFN0YXRlbWVudDogZnVuY3Rpb24gKG9iamVjdCwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguV2l0aFN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbGluZSB0ZXJtaW5hdG9yIGJlZm9yZSB0aGUgbmV4dCB0b2tlbi5cblxuICAgIGZ1bmN0aW9uIHBlZWtMaW5lVGVybWluYXRvcigpIHtcbiAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQsIGZvdW5kO1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsaW5lID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGZvdW5kID0gbGluZU51bWJlciAhPT0gbGluZTtcbiAgICAgICAgaW5kZXggPSBwb3M7XG4gICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDtcblxuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuXG4gICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uXG5cbiAgICBmdW5jdGlvbiB0aHJvd0Vycm9yKHRva2VuLCBtZXNzYWdlRm9ybWF0KSB7XG4gICAgICAgIHZhciBlcnJvcixcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgbXNnID0gbWVzc2FnZUZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIC8lKFxcZCkvZyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAod2hvbGUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydChpbmRleCA8IGFyZ3MubGVuZ3RoLCAnTWVzc2FnZSByZWZlcmVuY2UgbXVzdCBiZSBpbiByYW5nZScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICBpZiAodHlwZW9mIHRva2VuLmxpbmVOdW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcignTGluZSAnICsgdG9rZW4ubGluZU51bWJlciArICc6ICcgKyBtc2cpO1xuICAgICAgICAgICAgZXJyb3IuaW5kZXggPSB0b2tlbi5zdGFydDtcbiAgICAgICAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgICAgICAgZXJyb3IuY29sdW1uID0gdG9rZW4uc3RhcnQgLSBsaW5lU3RhcnQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIGxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTtcbiAgICAgICAgICAgIGVycm9yLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICBlcnJvci5saW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgICAgICAgICAgIGVycm9yLmNvbHVtbiA9IGluZGV4IC0gbGluZVN0YXJ0ICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yLmRlc2NyaXB0aW9uID0gbXNnO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0aHJvd0Vycm9yVG9sZXJhbnQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMucHVzaChlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgdGhlIHRva2VuLlxuXG4gICAgZnVuY3Rpb24gdGhyb3dVbmV4cGVjdGVkKHRva2VuKSB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRFT1MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkSWRlbnRpZmllcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgaWYgKGlzRnV0dXJlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRSZXNlcnZlZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgdG9rZW4udmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQm9vbGVhbkxpdGVyYWwsIE51bGxMaXRlcmFsLCBvciBQdW5jdHVhdG9yLlxuICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBFeHBlY3QgdGhlIG5leHQgdG9rZW4gdG8gbWF0Y2ggdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXG4gICAgZnVuY3Rpb24gZXhwZWN0KHZhbHVlKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IGxleCgpO1xuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciB8fCB0b2tlbi52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBlY3QgdGhlIG5leHQgdG9rZW4gdG8gbWF0Y2ggdGhlIHNwZWNpZmllZCBrZXl3b3JkLlxuICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXG4gICAgZnVuY3Rpb24gZXhwZWN0S2V5d29yZChrZXl3b3JkKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IGxleCgpO1xuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uS2V5d29yZCB8fCB0b2tlbi52YWx1ZSAhPT0ga2V5d29yZCkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuXG4gICAgZnVuY3Rpb24gbWF0Y2godmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGtleXdvcmRcblxuICAgIGZ1bmN0aW9uIG1hdGNoS2V5d29yZChrZXl3b3JkKSB7XG4gICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uS2V5d29yZCAmJiBsb29rYWhlYWQudmFsdWUgPT09IGtleXdvcmQ7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXNzaWdubWVudCBvcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gbWF0Y2hBc3NpZ24oKSB7XG4gICAgICAgIHZhciBvcDtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvcCA9IGxvb2thaGVhZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG9wID09PSAnPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnKj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJy89JyB8fFxuICAgICAgICAgICAgb3AgPT09ICclPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnKz0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJy09JyB8fFxuICAgICAgICAgICAgb3AgPT09ICc8PD0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJz4+PScgfHxcbiAgICAgICAgICAgIG9wID09PSAnPj4+PScgfHxcbiAgICAgICAgICAgIG9wID09PSAnJj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJ149JyB8fFxuICAgICAgICAgICAgb3AgPT09ICd8PSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uc3VtZVNlbWljb2xvbigpIHtcbiAgICAgICAgdmFyIGxpbmU7XG5cbiAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChVKzAwM0IpLlxuICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDNCIHx8IG1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGluZSA9IGxpbmVOdW1iZXI7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGlmIChsaW5lTnVtYmVyICE9PSBsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRiAmJiAhbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxvb2thaGVhZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBwcm92aWRlZCBleHByZXNzaW9uIGlzIExlZnRIYW5kU2lkZUV4cHJlc3Npb25cblxuICAgIGZ1bmN0aW9uIGlzTGVmdEhhbmRTaWRlKGV4cHIpIHtcbiAgICAgICAgcmV0dXJuIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgfHwgZXhwci50eXBlID09PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjQgQXJyYXkgSW5pdGlhbGlzZXJcblxuICAgIGZ1bmN0aW9uIHBhcnNlQXJyYXlJbml0aWFsaXNlcigpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW10sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0KCdbJyk7XG5cbiAgICAgICAgd2hpbGUgKCFtYXRjaCgnXScpKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJ10nKSkge1xuICAgICAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXgoKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVBcnJheUV4cHJlc3Npb24oZWxlbWVudHMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjUgT2JqZWN0IEluaXRpYWxpc2VyXG5cbiAgICBmdW5jdGlvbiBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFyYW0sIGZpcnN0KSB7XG4gICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwgYm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpO1xuICAgICAgICBpZiAoZmlyc3QgJiYgc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQocGFyYW1bMF0ubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdCwgTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBwYXJzZU9iamVjdFByb3BlcnR5KCksIHdoZXJlXG4gICAgICAgIC8vIEVPRiBhbmQgUHVuY3R1YXRvciB0b2tlbnMgYXJlIGFscmVhZHkgZmlsdGVyZWQgb3V0LlxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIHRva2VuLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0b2tlbiksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwga2V5LCBpZCwgdmFsdWUsIHBhcmFtLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG5cbiAgICAgICAgICAgIGlkID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuXG4gICAgICAgICAgICAvLyBQcm9wZXJ0eSBBc3NpZ25tZW50OiBHZXR0ZXIgYW5kIFNldHRlci5cblxuICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiAhbWF0Y2goJzonKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcbiAgICAgICAgICAgICAgICBleHBlY3QoJygnKTtcbiAgICAgICAgICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2dldCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ3NldCcgJiYgIW1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKFtdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IFsgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSBdO1xuICAgICAgICAgICAgICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFyYW0sIHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ3NldCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCB2YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YgfHwgdG9rZW4udHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKSB7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW10sIHByb3BlcnR5LCBuYW1lLCBrZXksIGtpbmQsIG1hcCA9IHt9LCB0b1N0cmluZyA9IFN0cmluZywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIHdoaWxlICghbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU9iamVjdFByb3BlcnR5KCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5rZXkudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gcHJvcGVydHkua2V5Lm5hbWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eS5rZXkudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2luZCA9IChwcm9wZXJ0eS5raW5kID09PSAnaW5pdCcpID8gUHJvcGVydHlLaW5kLkRhdGEgOiAocHJvcGVydHkua2luZCA9PT0gJ2dldCcpID8gUHJvcGVydHlLaW5kLkdldCA6IFByb3BlcnR5S2luZC5TZXQ7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIG5hbWU7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChtYXBba2V5XSA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3REdXBsaWNhdGVQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCAhPT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JEYXRhUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXBba2V5XSAmIGtpbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JHZXRTZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFtrZXldIHw9IGtpbmQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hcFtrZXldID0ga2luZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcblxuICAgICAgICAgICAgaWYgKCFtYXRjaCgnfScpKSB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjYgVGhlIEdyb3VwaW5nIE9wZXJhdG9yXG5cbiAgICBmdW5jdGlvbiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHI7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuXG4gICAgLy8gMTEuMSBQcmltYXJ5IEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgdHlwZSwgdG9rZW4sIGV4cHIsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgaWYgKG1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCgneycpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZSA9IGxvb2thaGVhZC50eXBlO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBleHByID0gIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIobGV4KCkudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwgfHwgdHlwZSA9PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbG9va2FoZWFkLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGxvb2thaGVhZCwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGxleCgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd0aGlzJykpIHtcbiAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVGhpc0V4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5Cb29sZWFuTGl0ZXJhbCkge1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnZhbHVlID0gKHRva2VuLnZhbHVlID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgdG9rZW4udmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcvJykgfHwgbWF0Y2goJy89JykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGNvbGxlY3RSZWdleCgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwoc2NhblJlZ0V4cCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZWsoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4yIExlZnQtSGFuZC1TaWRlIEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpIHtcbiAgICAgICAgdmFyIHRva2VuLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHRva2VuID0gbGV4KCk7XG5cbiAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJOYW1lKHRva2VuKSkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCkge1xuICAgICAgICBleHBlY3QoJy4nKTtcblxuICAgICAgICByZXR1cm4gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VDb21wdXRlZE1lbWJlcigpIHtcbiAgICAgICAgdmFyIGV4cHI7XG5cbiAgICAgICAgZXhwZWN0KCdbJyk7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnXScpO1xuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTmV3RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGNhbGxlZSwgYXJncywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3RLZXl3b3JkKCduZXcnKTtcbiAgICAgICAgY2FsbGVlID0gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCk7XG4gICAgICAgIGFyZ3MgPSBtYXRjaCgnKCcpID8gcGFyc2VBcmd1bWVudHMoKSA6IFtdO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZU5ld0V4cHJlc3Npb24oY2FsbGVlLCBhcmdzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKCkge1xuICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luLCBleHByLCBhcmdzLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47XG4gICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luO1xuXG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnLicpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgICAgICBhcmdzID0gcGFyc2VBcmd1bWVudHMoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oZXhwciwgYXJncyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1iZXIoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycsIGV4cHIsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luLCBleHByLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47XG4gICAgICAgIGV4cHIgPSBtYXRjaEtleXdvcmQoJ25ldycpID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgIHN0YXRlLmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG5cbiAgICAgICAgd2hpbGUgKG1hdGNoKCcuJykgfHwgbWF0Y2goJ1snKSkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1iZXIoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycsIGV4cHIsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTEuMyBQb3N0Zml4IEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgZXhwciwgdG9rZW4sIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgpO1xuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgaWYgKChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0nKSkgJiYgIXBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICAgICAgLy8gMTEuMy4xLCAxMS4zLjJcbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUG9zdGZpeCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUG9zdGZpeEV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjQgVW5hcnkgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBleHByLCBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0nKSkge1xuICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIC8vIDExLjQuNCwgMTEuNC41XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RMSFNQcmVmaXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGV4cHIpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKycpIHx8IG1hdGNoKCctJykgfHwgbWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7XG4gICAgICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaEtleXdvcmQoJ2RlbGV0ZScpIHx8IG1hdGNoS2V5d29yZCgndm9pZCcpIHx8IG1hdGNoS2V5d29yZCgndHlwZW9mJykpIHtcbiAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLm9wZXJhdG9yID09PSAnZGVsZXRlJyAmJiBleHByLmFyZ3VtZW50LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3REZWxldGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpbmFyeVByZWNlZGVuY2UodG9rZW4sIGFsbG93SW4pIHtcbiAgICAgICAgdmFyIHByZWMgPSAwO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICd8fCc6XG4gICAgICAgICAgICBwcmVjID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJyYmJzpcbiAgICAgICAgICAgIHByZWMgPSAyO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgICAgICBwcmVjID0gMztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ14nOlxuICAgICAgICAgICAgcHJlYyA9IDQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcmJzpcbiAgICAgICAgICAgIHByZWMgPSA1O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnPT0nOlxuICAgICAgICBjYXNlICchPSc6XG4gICAgICAgIGNhc2UgJz09PSc6XG4gICAgICAgIGNhc2UgJyE9PSc6XG4gICAgICAgICAgICBwcmVjID0gNjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgY2FzZSAnPD0nOlxuICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgIGNhc2UgJ2luc3RhbmNlb2YnOlxuICAgICAgICAgICAgcHJlYyA9IDc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdpbic6XG4gICAgICAgICAgICBwcmVjID0gYWxsb3dJbiA/IDcgOiAwO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnPDwnOlxuICAgICAgICBjYXNlICc+Pic6XG4gICAgICAgIGNhc2UgJz4+Pic6XG4gICAgICAgICAgICBwcmVjID0gODtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgIHByZWMgPSA5O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnKic6XG4gICAgICAgIGNhc2UgJy8nOlxuICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIHByZWMgPSAxMTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmVjO1xuICAgIH1cblxuICAgIC8vIDExLjUgTXVsdGlwbGljYXRpdmUgT3BlcmF0b3JzXG4gICAgLy8gMTEuNiBBZGRpdGl2ZSBPcGVyYXRvcnNcbiAgICAvLyAxMS43IEJpdHdpc2UgU2hpZnQgT3BlcmF0b3JzXG4gICAgLy8gMTEuOCBSZWxhdGlvbmFsIE9wZXJhdG9yc1xuICAgIC8vIDExLjkgRXF1YWxpdHkgT3BlcmF0b3JzXG4gICAgLy8gMTEuMTAgQmluYXJ5IEJpdHdpc2UgT3BlcmF0b3JzXG4gICAgLy8gMTEuMTEgQmluYXJ5IExvZ2ljYWwgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZUJpbmFyeUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBtYXJrZXIsIG1hcmtlcnMsIGV4cHIsIHRva2VuLCBwcmVjLCBzdGFjaywgcmlnaHQsIG9wZXJhdG9yLCBsZWZ0LCBpO1xuXG4gICAgICAgIG1hcmtlciA9IGxvb2thaGVhZDtcbiAgICAgICAgbGVmdCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHByZWMgPSBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBzdGF0ZS5hbGxvd0luKTtcbiAgICAgICAgaWYgKHByZWMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIHRva2VuLnByZWMgPSBwcmVjO1xuICAgICAgICBsZXgoKTtcblxuICAgICAgICBtYXJrZXJzID0gW21hcmtlciwgbG9va2FoZWFkXTtcbiAgICAgICAgcmlnaHQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuXG4gICAgICAgIHN0YWNrID0gW2xlZnQsIHRva2VuLCByaWdodF07XG5cbiAgICAgICAgd2hpbGUgKChwcmVjID0gYmluYXJ5UHJlY2VkZW5jZShsb29rYWhlYWQsIHN0YXRlLmFsbG93SW4pKSA+IDApIHtcblxuICAgICAgICAgICAgLy8gUmVkdWNlOiBtYWtlIGEgYmluYXJ5IGV4cHJlc3Npb24gZnJvbSB0aGUgdGhyZWUgdG9wbW9zdCBlbnRyaWVzLlxuICAgICAgICAgICAgd2hpbGUgKChzdGFjay5sZW5ndGggPiAyKSAmJiAocHJlYyA8PSBzdGFja1tzdGFjay5sZW5ndGggLSAyXS5wcmVjKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBzdGFjay5wb3AoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBtYXJrZXJzLnBvcCgpO1xuICAgICAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlcnNbbWFya2Vycy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIG1hcmtlcik7XG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2hpZnQuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgdG9rZW4ucHJlYyA9IHByZWM7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIG1hcmtlcnMucHVzaChsb29rYWhlYWQpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGV4cHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgcmVkdWNlIHRvIGNsZWFuLXVwIHRoZSBzdGFjay5cbiAgICAgICAgaSA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGV4cHIgPSBzdGFja1tpXTtcbiAgICAgICAgbWFya2Vycy5wb3AoKTtcbiAgICAgICAgd2hpbGUgKGkgPiAxKSB7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihzdGFja1tpIC0gMV0udmFsdWUsIHN0YWNrW2kgLSAyXSwgZXhwcik7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJzLnBvcCgpO1xuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBtYXJrZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG5cbiAgICAvLyAxMS4xMiBDb25kaXRpb25hbCBPcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByLCBwcmV2aW91c0FsbG93SW4sIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2goJz8nKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG4gICAgICAgICAgICBjb25zZXF1ZW50ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGV4cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTEuMTMgQXNzaWdubWVudCBPcGVyYXRvcnNcblxuICAgIGZ1bmN0aW9uIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGVmdCwgcmlnaHQsIG5vZGUsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgbm9kZSA9IGxlZnQgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGlmIChtYXRjaEFzc2lnbigpKSB7XG4gICAgICAgICAgICAvLyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uXG4gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGxlZnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gMTEuMTMuMVxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBsZWZ0LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQobGVmdC5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0TEhTQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIG5vZGUgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBsZWZ0LCByaWdodCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgLy8gMTEuMTQgQ29tbWEgT3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHIsIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2goJywnKSkge1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihbIGV4cHIgXSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwci5leHByZXNzaW9ucy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICAvLyAxMi4xIEJsb2NrXG5cbiAgICBmdW5jdGlvbiBwYXJzZVN0YXRlbWVudExpc3QoKSB7XG4gICAgICAgIHZhciBsaXN0ID0gW10sXG4gICAgICAgICAgICBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3QucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VCbG9jaygpIHtcbiAgICAgICAgdmFyIGJsb2NrLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIGJsb2NrID0gcGFyc2VTdGF0ZW1lbnRMaXN0KCk7XG5cbiAgICAgICAgZXhwZWN0KCd9Jyk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYmxvY2spLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMi4yIFZhcmlhYmxlIFN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihraW5kKSB7XG4gICAgICAgIHZhciBpbml0ID0gbnVsbCwgaWQsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIC8vIDEyLjIuMVxuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQoaWQubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0VmFyTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2luZCA9PT0gJ2NvbnN0Jykge1xuICAgICAgICAgICAgZXhwZWN0KCc9Jyk7XG4gICAgICAgICAgICBpbml0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCc9JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRvcihpZCwgaW5pdCksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qoa2luZCkge1xuICAgICAgICB2YXIgbGlzdCA9IFtdO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGxpc3QucHVzaChwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oa2luZCkpO1xuICAgICAgICAgICAgaWYgKCFtYXRjaCgnLCcpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBsZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBkZWNsYXJhdGlvbnM7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgndmFyJyk7XG5cbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgpO1xuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKTtcbiAgICB9XG5cbiAgICAvLyBraW5kIG1heSBiZSBgY29uc3RgIG9yIGBsZXRgXG4gICAgLy8gQm90aCBhcmUgZXhwZXJpbWVudGFsIGFuZCBub3QgaW4gdGhlIHNwZWNpZmljYXRpb24geWV0LlxuICAgIC8vIHNlZSBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmNvbnN0XG4gICAgLy8gYW5kIGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6bGV0XG4gICAgZnVuY3Rpb24gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGtpbmQpIHtcbiAgICAgICAgdmFyIGRlY2xhcmF0aW9ucywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoa2luZCk7XG5cbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChraW5kKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIGtpbmQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMi4zIEVtcHR5IFN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVudCgpIHtcbiAgICAgICAgZXhwZWN0KCc7Jyk7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVFbXB0eVN0YXRlbWVudCgpO1xuICAgIH1cblxuICAgIC8vIDEyLjQgRXhwcmVzc2lvbiBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKTtcbiAgICB9XG5cbiAgICAvLyAxMi41IElmIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBjb25zZXF1ZW50ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdlbHNlJykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKTtcbiAgICB9XG5cbiAgICAvLyAxMi42IEl0ZXJhdGlvbiBTdGF0ZW1lbnRzXG5cbiAgICBmdW5jdGlvbiBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBib2R5LCB0ZXN0LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdkbycpO1xuXG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3doaWxlJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgdGVzdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGlmIChtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0ZXN0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2hpbGVTdGF0ZW1lbnQodGVzdCwgYm9keSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uKCkge1xuICAgICAgICB2YXIgdG9rZW4sIGRlY2xhcmF0aW9ucywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICBkZWNsYXJhdGlvbnMgPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGb3JTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBpbml0LCB0ZXN0LCB1cGRhdGUsIGxlZnQsIHJpZ2h0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBpbml0ID0gdGVzdCA9IHVwZGF0ZSA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZm9yJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndmFyJykgfHwgbWF0Y2hLZXl3b3JkKCdsZXQnKSkge1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpbml0ID0gcGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5pdC5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxICYmIG1hdGNoS2V5d29yZCgnaW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGluaXQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGVmdEhhbmRTaWRlRXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGluaXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkZvckluKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaW5pdDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCc7Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7XG5cbiAgICAgICAgICAgIGlmICghbWF0Y2goJzsnKSkge1xuICAgICAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cGVjdCgnOycpO1xuXG4gICAgICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuXG4gICAgICAgIHJldHVybiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSA/XG4gICAgICAgICAgICAgICAgZGVsZWdhdGUuY3JlYXRlRm9yU3RhdGVtZW50KGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkgOlxuICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNyZWF0ZUZvckluU3RhdGVtZW50KGxlZnQsIHJpZ2h0LCBib2R5KTtcbiAgICB9XG5cbiAgICAvLyAxMi43IFRoZSBjb250aW51ZSBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdjb250aW51ZScpO1xuXG4gICAgICAgIC8vIE9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBmb3JtOiAnY29udGludWU7Jy5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQikge1xuICAgICAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGxhYmVsID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICAgICAga2V5ID0gJyQnICsgbGFiZWwubmFtZTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5rbm93bkxhYmVsLCBsYWJlbC5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICBpZiAobGFiZWwgPT09IG51bGwgJiYgIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxhYmVsKTtcbiAgICB9XG5cbiAgICAvLyAxMi44IFRoZSBicmVhayBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdicmVhaycpO1xuXG4gICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWljb2xvbiAoVSswMDNCKS5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQikge1xuICAgICAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgICAgIGlmICghKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgaWYgKCEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUuaW5Td2l0Y2gpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsYWJlbCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgaWYgKGxhYmVsID09PSBudWxsICYmICEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUuaW5Td2l0Y2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxhYmVsKTtcbiAgICB9XG5cbiAgICAvLyAxMi45IFRoZSByZXR1cm4gc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZVJldHVyblN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50ID0gbnVsbDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdyZXR1cm4nKTtcblxuICAgICAgICBpZiAoIXN0YXRlLmluRnVuY3Rpb25Cb2R5KSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLklsbGVnYWxSZXR1cm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ3JldHVybicgZm9sbG93ZWQgYnkgYSBzcGFjZSBhbmQgYW4gaWRlbnRpZmllciBpcyB2ZXJ5IGNvbW1vbi5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgyMCkge1xuICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7XG4gICAgICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGlmICghbWF0Y2goJ30nKSAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICAvLyAxMi4xMCBUaGUgd2l0aCBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2l0aFN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIG9iamVjdCwgYm9keTtcblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAvLyBUT0RPKGlrYXJpZW5hdG9yKTogU2hvdWxkIHdlIHVwZGF0ZSB0aGUgdGVzdCBjYXNlcyBpbnN0ZWFkP1xuICAgICAgICAgICAgc2tpcENvbW1lbnQoKTtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TW9kZVdpdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnd2l0aCcpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIG9iamVjdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVXaXRoU3RhdGVtZW50KG9iamVjdCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTAgVGhlIHN3aXRoIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VTd2l0Y2hDYXNlKCkge1xuICAgICAgICB2YXIgdGVzdCwgY29uc2VxdWVudCA9IFtdLCBzdGF0ZW1lbnQsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHRlc3QgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwZWN0S2V5d29yZCgnY2FzZScpO1xuICAgICAgICAgICAgdGVzdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdCgnOicpO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykgfHwgbWF0Y2hLZXl3b3JkKCdkZWZhdWx0JykgfHwgbWF0Y2hLZXl3b3JkKCdjYXNlJykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgICAgICBjb25zZXF1ZW50LnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVN3aXRjaENhc2UodGVzdCwgY29uc2VxdWVudCksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgZGlzY3JpbWluYW50LCBjYXNlcywgY2xhdXNlLCBvbGRJblN3aXRjaCwgZGVmYXVsdEZvdW5kO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3N3aXRjaCcpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGRpc2NyaW1pbmFudCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIGNhc2VzID0gW107XG5cbiAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7XG4gICAgICAgIHN0YXRlLmluU3dpdGNoID0gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdEZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2xhdXNlID0gcGFyc2VTd2l0Y2hDYXNlKCk7XG4gICAgICAgICAgICBpZiAoY2xhdXNlLnRlc3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk11bHRpcGxlRGVmYXVsdHNJblN3aXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlcy5wdXNoKGNsYXVzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoO1xuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTMgVGhlIHRocm93IHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VUaHJvd1N0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50O1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3Rocm93Jyk7XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5OZXdsaW5lQWZ0ZXJUaHJvdyk7XG4gICAgICAgIH1cblxuICAgICAgICBhcmd1bWVudCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGhyb3dTdGF0ZW1lbnQoYXJndW1lbnQpO1xuICAgIH1cblxuICAgIC8vIDEyLjE0IFRoZSB0cnkgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNhdGNoQ2xhdXNlKCkge1xuICAgICAgICB2YXIgcGFyYW0sIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnY2F0Y2gnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcbiAgICAgICAgaWYgKG1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICAvLyAxMi4xNC4xXG4gICAgICAgIGlmIChzdHJpY3QgJiYgaXNSZXN0cmljdGVkV29yZChwYXJhbS5uYW1lKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RDYXRjaFZhcmlhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuICAgICAgICBib2R5ID0gcGFyc2VCbG9jaygpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVDYXRjaENsYXVzZShwYXJhbSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVHJ5U3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgYmxvY2ssIGhhbmRsZXJzID0gW10sIGZpbmFsaXplciA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgndHJ5Jyk7XG5cbiAgICAgICAgYmxvY2sgPSBwYXJzZUJsb2NrKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnY2F0Y2gnKSkge1xuICAgICAgICAgICAgaGFuZGxlcnMucHVzaChwYXJzZUNhdGNoQ2xhdXNlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZmluYWxseScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGZpbmFsaXplciA9IHBhcnNlQmxvY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYW5kbGVycy5sZW5ndGggPT09IDAgJiYgIWZpbmFsaXplcikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTm9DYXRjaE9yRmluYWxseSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVHJ5U3RhdGVtZW50KGJsb2NrLCBbXSwgaGFuZGxlcnMsIGZpbmFsaXplcik7XG4gICAgfVxuXG4gICAgLy8gMTIuMTUgVGhlIGRlYnVnZ2VyIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpIHtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZGVidWdnZXInKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50KCk7XG4gICAgfVxuXG4gICAgLy8gMTIgU3RhdGVtZW50c1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0eXBlID0gbG9va2FoZWFkLnR5cGUsXG4gICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgbGFiZWxlZEJvZHksXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnZhbHVlID09PSAneycpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJsb2NrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnOyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VFbXB0eVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JyZWFrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUJyZWFrU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnY29udGludWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlQ29udGludWVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdkZWJ1Z2dlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2RvJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZURvV2hpbGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdmb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRm9yU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2lmJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUlmU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAncmV0dXJuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVJldHVyblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd0aHJvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VUaHJvd1N0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3RyeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VUcnlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd2YXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd3aGlsZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VXaGlsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3dpdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlV2l0aFN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgLy8gMTIuMTIgTGFiZWxsZWQgU3RhdGVtZW50c1xuICAgICAgICBpZiAoKGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpICYmIG1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBleHByLm5hbWU7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuUmVkZWNsYXJhdGlvbiwgJ0xhYmVsJywgZXhwci5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGUubGFiZWxTZXRba2V5XSA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbGVkQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgICAgICBkZWxldGUgc3RhdGUubGFiZWxTZXRba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUxhYmVsZWRTdGF0ZW1lbnQoZXhwciwgbGFiZWxlZEJvZHkpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGV4cHIpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMyBGdW5jdGlvbiBEZWZpbml0aW9uXG5cbiAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKSB7XG4gICAgICAgIHZhciBzb3VyY2VFbGVtZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwgZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0ZWQsXG4gICAgICAgICAgICBvbGRMYWJlbFNldCwgb2xkSW5JdGVyYXRpb24sIG9sZEluU3dpdGNoLCBvbGRJbkZ1bmN0aW9uQm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQgLSAxKTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykge1xuICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3RSZXN0cmljdGVkLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdFJlc3RyaWN0ZWQgJiYgdG9rZW4ub2N0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb2xkTGFiZWxTZXQgPSBzdGF0ZS5sYWJlbFNldDtcbiAgICAgICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjtcbiAgICAgICAgb2xkSW5Td2l0Y2ggPSBzdGF0ZS5pblN3aXRjaDtcbiAgICAgICAgb2xkSW5GdW5jdGlvbkJvZHkgPSBzdGF0ZS5pbkZ1bmN0aW9uQm9keTtcblxuICAgICAgICBzdGF0ZS5sYWJlbFNldCA9IHt9O1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5pbkZ1bmN0aW9uQm9keSA9IHRydWU7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHN0YXRlLmxhYmVsU2V0ID0gb2xkTGFiZWxTZXQ7XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluU3dpdGNoID0gb2xkSW5Td2l0Y2g7XG4gICAgICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gb2xkSW5GdW5jdGlvbkJvZHk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgdmFyIHBhcmFtLCBwYXJhbXMgPSBbXSwgdG9rZW4sIHN0cmljdGVkLCBwYXJhbVNldCwga2V5LCBtZXNzYWdlO1xuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHBhcmFtU2V0ID0ge307XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICAgICAga2V5ID0gJyQnICsgdG9rZW4udmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1EdXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7XG4gICAgICAgICAgICAgICAgcGFyYW1TZXRba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgc3RyaWN0ZWQ6IHN0cmljdGVkLFxuICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkOiBmaXJzdFJlc3RyaWN0ZWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCkge1xuICAgICAgICB2YXIgaWQsIHBhcmFtcyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQsIHRtcCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTtcbiAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtcztcbiAgICAgICAgc3RyaWN0ZWQgPSB0bXAuc3RyaWN0ZWQ7XG4gICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7XG4gICAgICAgIGlmICh0bXAubWVzc2FnZSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5tZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaWN0ICYmIHN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oaWQsIHBhcmFtcywgW10sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBpZCA9IG51bGwsIHN0cmljdGVkLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UsIHRtcCwgcGFyYW1zID0gW10sIGJvZHksIHByZXZpb3VzU3RyaWN0LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0bXAgPSBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpO1xuICAgICAgICBwYXJhbXMgPSB0bXAucGFyYW1zO1xuICAgICAgICBzdHJpY3RlZCA9IHRtcC5zdHJpY3RlZDtcbiAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG1wLmZpcnN0UmVzdHJpY3RlZDtcbiAgICAgICAgaWYgKHRtcC5tZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gdG1wLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDtcbiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpO1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJpY3QgJiYgc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChzdHJpY3RlZCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTQgUHJvZ3JhbVxuXG4gICAgZnVuY3Rpb24gcGFyc2VTb3VyY2VFbGVtZW50KCkge1xuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdjb25zdCc6XG4gICAgICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbnN0TGV0RGVjbGFyYXRpb24obG9va2FoZWFkLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VTb3VyY2VFbGVtZW50cygpIHtcbiAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZDtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VFbGVtZW50LmV4cHJlc3Npb24udHlwZSAhPT0gU3ludGF4LkxpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBkaXJlY3RpdmVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpO1xuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZSA9PT0gJ3VzZSBzdHJpY3QnKSB7XG4gICAgICAgICAgICAgICAgc3RyaWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdFJlc3RyaWN0ZWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0UmVzdHJpY3RlZCAmJiB0b2tlbi5vY3RhbCkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9ncmFtKCkge1xuICAgICAgICB2YXIgYm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBwZWVrKCk7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHN0cmljdCA9IGZhbHNlO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKCk7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0oYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbHRlclRva2VuTG9jYXRpb24oKSB7XG4gICAgICAgIHZhciBpLCBlbnRyeSwgdG9rZW4sIHRva2VucyA9IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHRyYS50b2tlbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGVudHJ5ID0gZXh0cmEudG9rZW5zW2ldO1xuICAgICAgICAgICAgdG9rZW4gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogZW50cnkudHlwZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZW50cnkudmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZXh0cmEucmFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0b2tlbi5yYW5nZSA9IGVudHJ5LnJhbmdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgICAgIHRva2VuLmxvYyA9IGVudHJ5LmxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4dHJhLnRva2VucyA9IHRva2VucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2tlbml6ZShjb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0b1N0cmluZyxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgdG9rZW5zO1xuXG4gICAgICAgIHRvU3RyaW5nID0gU3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnICYmICEoY29kZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlO1xuICAgICAgICBzb3VyY2UgPSBjb2RlO1xuICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIGxpbmVOdW1iZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7XG4gICAgICAgIGxpbmVTdGFydCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgYWxsb3dJbjogdHJ1ZSxcbiAgICAgICAgICAgIGxhYmVsU2V0OiB7fSxcbiAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSxcbiAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgZXh0cmEgPSB7fTtcblxuICAgICAgICAvLyBPcHRpb25zIG1hdGNoaW5nLlxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAvLyBPZiBjb3Vyc2Ugd2UgY29sbGVjdCB0b2tlbnMgaGVyZS5cbiAgICAgICAgb3B0aW9ucy50b2tlbnMgPSB0cnVlO1xuICAgICAgICBleHRyYS50b2tlbnMgPSBbXTtcbiAgICAgICAgZXh0cmEudG9rZW5pemUgPSB0cnVlO1xuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmaWVsZHMgYXJlIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBSZWdleCB0b2tlbnMuXG4gICAgICAgIGV4dHJhLm9wZW5QYXJlblRva2VuID0gLTE7XG4gICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gLTE7XG5cbiAgICAgICAgZXh0cmEucmFuZ2UgPSAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5yYW5nZTtcbiAgICAgICAgZXh0cmEubG9jID0gKHR5cGVvZiBvcHRpb25zLmxvYyA9PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLmxvYztcblxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuY29tbWVudCkge1xuICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9sZXJhbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRvbGVyYW50KSB7XG4gICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwZWVrKCk7XG4gICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHRyYS50b2tlbnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICB3aGlsZSAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAobGV4RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmVycm9ycy5wdXNoKGxleEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYnJlYWsgb24gdGhlIGZpcnN0IGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBpbmZpbml0ZSBsb29wcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbGV4RXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpbHRlclRva2VuTG9jYXRpb24oKTtcbiAgICAgICAgICAgIHRva2VucyA9IGV4dHJhLnRva2VucztcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLmNvbW1lbnRzID0gZXh0cmEuY29tbWVudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmVycm9ycyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB0b2tlbnMuZXJyb3JzID0gZXh0cmEuZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW5zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlKGNvZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHByb2dyYW0sIHRvU3RyaW5nO1xuXG4gICAgICAgIHRvU3RyaW5nID0gU3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnICYmICEoY29kZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlO1xuICAgICAgICBzb3VyY2UgPSBjb2RlO1xuICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIGxpbmVOdW1iZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7XG4gICAgICAgIGxpbmVTdGFydCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgYWxsb3dJbjogdHJ1ZSxcbiAgICAgICAgICAgIGxhYmVsU2V0OiB7fSxcbiAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSxcbiAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZXh0cmEucmFuZ2UgPSAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5yYW5nZTtcbiAgICAgICAgICAgIGV4dHJhLmxvYyA9ICh0eXBlb2Ygb3B0aW9ucy5sb2MgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5sb2M7XG4gICAgICAgICAgICBleHRyYS5hdHRhY2hDb21tZW50ID0gKHR5cGVvZiBvcHRpb25zLmF0dGFjaENvbW1lbnQgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5hdHRhY2hDb21tZW50O1xuXG4gICAgICAgICAgICBpZiAoZXh0cmEubG9jICYmIG9wdGlvbnMuc291cmNlICE9PSBudWxsICYmIG9wdGlvbnMuc291cmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5zb3VyY2UgPSB0b1N0cmluZyhvcHRpb25zLnNvdXJjZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2tlbnMgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRva2Vucykge1xuICAgICAgICAgICAgICAgIGV4dHJhLnRva2VucyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5jb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2xlcmFudCkge1xuICAgICAgICAgICAgICAgIGV4dHJhLmVycm9ycyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5yYW5nZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrID0gW107XG4gICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2dyYW0gPSBwYXJzZVByb2dyYW0oKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbS5jb21tZW50cyA9IGV4dHJhLmNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyVG9rZW5Mb2NhdGlvbigpO1xuICAgICAgICAgICAgICAgIHByb2dyYW0udG9rZW5zID0gZXh0cmEudG9rZW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5lcnJvcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcnMgPSBleHRyYS5lcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBleHRyYSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2dyYW07XG4gICAgfVxuXG4gICAgLy8gU3luYyB3aXRoICouanNvbiBtYW5pZmVzdHMuXG4gICAgZXhwb3J0cy52ZXJzaW9uID0gJzEuMi4yJztcblxuICAgIGV4cG9ydHMudG9rZW5pemUgPSB0b2tlbml6ZTtcblxuICAgIGV4cG9ydHMucGFyc2UgPSBwYXJzZTtcblxuICAgIC8vIERlZXAgY29weS5cbiAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZXhwb3J0cy5TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmFtZSwgdHlwZXMgPSB7fTtcblxuICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobmFtZSBpbiBTeW50YXgpIHtcbiAgICAgICAgICAgIGlmIChTeW50YXguaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0eXBlc1tuYW1lXSA9IFN5bnRheFtuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmZyZWV6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgfSgpKTtcblxufSkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cblxuIiwiLyogcGFyc2VyIGdlbmVyYXRlZCBieSBqaXNvbiAwLjQuMTMgKi9cbi8qXG4gIFJldHVybnMgYSBQYXJzZXIgb2JqZWN0IG9mIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuXG4gIFBhcnNlcjoge1xuICAgIHl5OiB7fVxuICB9XG5cbiAgUGFyc2VyLnByb3RvdHlwZToge1xuICAgIHl5OiB7fSxcbiAgICB0cmFjZTogZnVuY3Rpb24oKSxcbiAgICBzeW1ib2xzXzoge2Fzc29jaWF0aXZlIGxpc3Q6IG5hbWUgPT0+IG51bWJlcn0sXG4gICAgdGVybWluYWxzXzoge2Fzc29jaWF0aXZlIGxpc3Q6IG51bWJlciA9PT4gbmFtZX0sXG4gICAgcHJvZHVjdGlvbnNfOiBbLi4uXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSxcbiAgICB0YWJsZTogWy4uLl0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsuLi59LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uKHN0ciwgaGFzaCksXG4gICAgcGFyc2U6IGZ1bmN0aW9uKGlucHV0KSxcblxuICAgIGxleGVyOiB7XG4gICAgICAgIEVPRjogMSxcbiAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24oc3RyLCBoYXNoKSxcbiAgICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0KSxcbiAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIHVucHV0OiBmdW5jdGlvbihzdHIpLFxuICAgICAgICBtb3JlOiBmdW5jdGlvbigpLFxuICAgICAgICBsZXNzOiBmdW5jdGlvbihuKSxcbiAgICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCksXG4gICAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKHJlZ2V4X21hdGNoX2FycmF5LCBydWxlX2luZGV4KSxcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oKSxcbiAgICAgICAgbGV4OiBmdW5jdGlvbigpLFxuICAgICAgICBiZWdpbjogZnVuY3Rpb24oY29uZGl0aW9uKSxcbiAgICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uKCksXG4gICAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uKCksXG4gICAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbigpLFxuICAgICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uKGNvbmRpdGlvbiksXG5cbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcmFuZ2VzOiBib29sZWFuICAgICAgICAgICAob3B0aW9uYWw6IHRydWUgPT0+IHRva2VuIGxvY2F0aW9uIGluZm8gd2lsbCBpbmNsdWRlIGEgLnJhbmdlW10gbWVtYmVyKVxuICAgICAgICAgICAgZmxleDogYm9vbGVhbiAgICAgICAgICAgICAob3B0aW9uYWw6IHRydWUgPT0+IGZsZXgtbGlrZSBsZXhpbmcgYmVoYXZpb3VyIHdoZXJlIHRoZSBydWxlcyBhcmUgdGVzdGVkIGV4aGF1c3RpdmVseSB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoKVxuICAgICAgICAgICAgYmFja3RyYWNrX2xleGVyOiBib29sZWFuICAob3B0aW9uYWw6IHRydWUgPT0+IGxleGVyIHJlZ2V4ZXMgYXJlIHRlc3RlZCBpbiBvcmRlciBhbmQgZm9yIGVhY2ggbWF0Y2hpbmcgcmVnZXggdGhlIGFjdGlvbiBjb2RlIGlzIGludm9rZWQ7IHRoZSBsZXhlciB0ZXJtaW5hdGVzIHRoZSBzY2FuIHdoZW4gYSB0b2tlbiBpcyByZXR1cm5lZCBieSB0aGUgYWN0aW9uIGNvZGUpXG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24oeXksIHl5XywgJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucywgWVlfU1RBUlQpLFxuICAgICAgICBydWxlczogWy4uLl0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHthc3NvY2lhdGl2ZSBsaXN0OiBuYW1lID09PiBzZXR9LFxuICAgIH1cbiAgfVxuXG5cbiAgdG9rZW4gbG9jYXRpb24gaW5mbyAoQCQsIF8kLCBldGMuKToge1xuICAgIGZpcnN0X2xpbmU6IG4sXG4gICAgbGFzdF9saW5lOiBuLFxuICAgIGZpcnN0X2NvbHVtbjogbixcbiAgICBsYXN0X2NvbHVtbjogbixcbiAgICByYW5nZTogW3N0YXJ0X251bWJlciwgZW5kX251bWJlcl0gICAgICAgKHdoZXJlIHRoZSBudW1iZXJzIGFyZSBpbmRleGVzIGludG8gdGhlIGlucHV0IHN0cmluZywgcmVndWxhciB6ZXJvLWJhc2VkKVxuICB9XG5cblxuICB0aGUgcGFyc2VFcnJvciBmdW5jdGlvbiByZWNlaXZlcyBhICdoYXNoJyBvYmplY3Qgd2l0aCB0aGVzZSBtZW1iZXJzIGZvciBsZXhlciBhbmQgcGFyc2VyIGVycm9yczoge1xuICAgIHRleHQ6ICAgICAgICAobWF0Y2hlZCB0ZXh0KVxuICAgIHRva2VuOiAgICAgICAodGhlIHByb2R1Y2VkIHRlcm1pbmFsIHRva2VuLCBpZiBhbnkpXG4gICAgbGluZTogICAgICAgICh5eWxpbmVubylcbiAgfVxuICB3aGlsZSBwYXJzZXIgKGdyYW1tYXIpIGVycm9ycyB3aWxsIGFsc28gcHJvdmlkZSB0aGVzZSBtZW1iZXJzLCBpLmUuIHBhcnNlciBlcnJvcnMgZGVsaXZlciBhIHN1cGVyc2V0IG9mIGF0dHJpYnV0ZXM6IHtcbiAgICBsb2M6ICAgICAgICAgKHl5bGxvYylcbiAgICBleHBlY3RlZDogICAgKHN0cmluZyBkZXNjcmliaW5nIHRoZSBzZXQgb2YgZXhwZWN0ZWQgdG9rZW5zKVxuICAgIHJlY292ZXJhYmxlOiAoYm9vbGVhbjogVFJVRSB3aGVuIHRoZSBwYXJzZXIgaGFzIGEgZXJyb3IgcmVjb3ZlcnkgcnVsZSBhdmFpbGFibGUgZm9yIHRoaXMgcGFydGljdWxhciBlcnJvcilcbiAgfVxuKi9cbnZhciBwYXJzZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBwYXJzZXIgPSB7dHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkgeyB9LFxueXk6IHt9LFxuc3ltYm9sc186IHtcImVycm9yXCI6MixcIkpTT05fUEFUSFwiOjMsXCJET0xMQVJcIjo0LFwiUEFUSF9DT01QT05FTlRTXCI6NSxcIkxFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT05cIjo2LFwiUEFUSF9DT01QT05FTlRcIjo3LFwiTUVNQkVSX0NPTVBPTkVOVFwiOjgsXCJTVUJTQ1JJUFRfQ09NUE9ORU5UXCI6OSxcIkNISUxEX01FTUJFUl9DT01QT05FTlRcIjoxMCxcIkRFU0NFTkRBTlRfTUVNQkVSX0NPTVBPTkVOVFwiOjExLFwiRE9UXCI6MTIsXCJNRU1CRVJfRVhQUkVTU0lPTlwiOjEzLFwiRE9UX0RPVFwiOjE0LFwiU1RBUlwiOjE1LFwiSURFTlRJRklFUlwiOjE2LFwiU0NSSVBUX0VYUFJFU1NJT05cIjoxNyxcIklOVEVHRVJcIjoxOCxcIkVORFwiOjE5LFwiQ0hJTERfU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjIwLFwiREVTQ0VOREFOVF9TVUJTQ1JJUFRfQ09NUE9ORU5UXCI6MjEsXCJbXCI6MjIsXCJTVUJTQ1JJUFRcIjoyMyxcIl1cIjoyNCxcIlNVQlNDUklQVF9FWFBSRVNTSU9OXCI6MjUsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUXCI6MjYsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUQUJMRVwiOjI3LFwiLFwiOjI4LFwiU1RSSU5HX0xJVEVSQUxcIjoyOSxcIkFSUkFZX1NMSUNFXCI6MzAsXCJGSUxURVJfRVhQUkVTU0lPTlwiOjMxLFwiUVFfU1RSSU5HXCI6MzIsXCJRX1NUUklOR1wiOjMzLFwiJGFjY2VwdFwiOjAsXCIkZW5kXCI6MX0sXG50ZXJtaW5hbHNfOiB7MjpcImVycm9yXCIsNDpcIkRPTExBUlwiLDEyOlwiRE9UXCIsMTQ6XCJET1RfRE9UXCIsMTU6XCJTVEFSXCIsMTY6XCJJREVOVElGSUVSXCIsMTc6XCJTQ1JJUFRfRVhQUkVTU0lPTlwiLDE4OlwiSU5URUdFUlwiLDE5OlwiRU5EXCIsMjI6XCJbXCIsMjQ6XCJdXCIsMjg6XCIsXCIsMzA6XCJBUlJBWV9TTElDRVwiLDMxOlwiRklMVEVSX0VYUFJFU1NJT05cIiwzMjpcIlFRX1NUUklOR1wiLDMzOlwiUV9TVFJJTkdcIn0sXG5wcm9kdWN0aW9uc186IFswLFszLDFdLFszLDJdLFszLDFdLFszLDJdLFs1LDFdLFs1LDJdLFs3LDFdLFs3LDFdLFs4LDFdLFs4LDFdLFsxMCwyXSxbNiwxXSxbMTEsMl0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbOSwxXSxbOSwxXSxbMjAsM10sWzIxLDRdLFsyMywxXSxbMjMsMV0sWzI2LDFdLFsyNiwzXSxbMjcsMV0sWzI3LDFdLFsyNywxXSxbMjUsMV0sWzI1LDFdLFsyNSwxXSxbMjksMV0sWzI5LDFdXSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlIC8qIGFjdGlvblsxXSAqLywgJCQgLyogdnN0YWNrICovLCBfJCAvKiBsc3RhY2sgKi9cbi8qKi8pIHtcbi8qIHRoaXMgPT0geXl2YWwgKi9cbmlmICgheXkuYXN0KSB7XG4gICAgeXkuYXN0ID0gX2FzdDtcbiAgICBfYXN0LmluaXRpYWxpemUoKTtcbn1cblxudmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbnN3aXRjaCAoeXlzdGF0ZSkge1xuY2FzZSAxOnl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJCRbJDBdIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDI6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiAkJFskMC0xXSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSAzOnl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDQ6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiwgc2NvcGU6IFwiY2hpbGRcIiwgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQkWyQwLTFdIH19KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpXG5icmVhaztcbmNhc2UgNTpcbmJyZWFrO1xuY2FzZSA2OlxuYnJlYWs7XG5jYXNlIDc6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiB9KTsgeXkuYXN0LnB1c2goKVxuYnJlYWs7XG5jYXNlIDg6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJzdWJzY3JpcHRcIiB9KTsgeXkuYXN0LnB1c2goKSBcbmJyZWFrO1xuY2FzZSA5Onl5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiIH0pXG5icmVhaztcbmNhc2UgMTA6eXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KVxuYnJlYWs7XG5jYXNlIDExOlxuYnJlYWs7XG5jYXNlIDEyOnl5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiLCBvcGVyYXRpb246IFwibWVtYmVyXCIgfSlcbmJyZWFrO1xuY2FzZSAxMzpcbmJyZWFrO1xuY2FzZSAxNDp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIndpbGRjYXJkXCIsIHZhbHVlOiAkJFskMF0gfSB9KVxuYnJlYWs7XG5jYXNlIDE1Onl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwiaWRlbnRpZmllclwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNjp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9KVxuYnJlYWs7XG5jYXNlIDE3Onl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwibnVtZXJpY19saXRlcmFsXCIsIHZhbHVlOiBwYXJzZUludCgkJFskMF0pIH0gfSlcbmJyZWFrO1xuY2FzZSAxODpcbmJyZWFrO1xuY2FzZSAxOTp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KVxuYnJlYWs7XG5jYXNlIDIwOnl5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSlcbmJyZWFrO1xuY2FzZSAyMTpcbmJyZWFrO1xuY2FzZSAyMjpcbmJyZWFrO1xuY2FzZSAyMzpcbmJyZWFrO1xuY2FzZSAyNDokJFskMF0ubGVuZ3RoID4gMT8geXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ1bmlvblwiLCB2YWx1ZTogJCRbJDBdIH0gfSkgOiB0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xuY2FzZSAyNTp0aGlzLiQgPSBbJCRbJDBdXVxuYnJlYWs7XG5jYXNlIDI2OnRoaXMuJCA9ICQkWyQwLTJdLmNvbmNhdCgkJFskMF0pXG5icmVhaztcbmNhc2UgMjc6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwibnVtZXJpY19saXRlcmFsXCIsIHZhbHVlOiBwYXJzZUludCgkJFskMF0pIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMjg6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic3RyaW5nX2xpdGVyYWxcIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDI5OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNsaWNlXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMDp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzE6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDMyOnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImZpbHRlcl9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMzp0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xuY2FzZSAzNDp0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xufVxufSxcbnRhYmxlOiBbezM6MSw0OlsxLDJdLDY6MywxMzo0LDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldfSx7MTpbM119LHsxOlsyLDFdLDU6MTAsNzoxMSw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDNdLDU6MjEsNzoxMSw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDEyXSwxMjpbMiwxMl0sMTQ6WzIsMTJdLDIyOlsyLDEyXX0sezE6WzIsMTRdLDEyOlsyLDE0XSwxNDpbMiwxNF0sMjI6WzIsMTRdfSx7MTpbMiwxNV0sMTI6WzIsMTVdLDE0OlsyLDE1XSwyMjpbMiwxNV19LHsxOlsyLDE2XSwxMjpbMiwxNl0sMTQ6WzIsMTZdLDIyOlsyLDE2XX0sezE6WzIsMTddLDEyOlsyLDE3XSwxNDpbMiwxN10sMjI6WzIsMTddfSx7MTpbMiwxOF0sMTI6WzIsMThdLDE0OlsyLDE4XSwyMjpbMiwxOF19LHsxOlsyLDJdLDc6MjIsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiw1XSwxMjpbMiw1XSwxNDpbMiw1XSwyMjpbMiw1XX0sezE6WzIsN10sMTI6WzIsN10sMTQ6WzIsN10sMjI6WzIsN119LHsxOlsyLDhdLDEyOlsyLDhdLDE0OlsyLDhdLDIyOlsyLDhdfSx7MTpbMiw5XSwxMjpbMiw5XSwxNDpbMiw5XSwyMjpbMiw5XX0sezE6WzIsMTBdLDEyOlsyLDEwXSwxNDpbMiwxMF0sMjI6WzIsMTBdfSx7MTpbMiwxOV0sMTI6WzIsMTldLDE0OlsyLDE5XSwyMjpbMiwxOV19LHsxOlsyLDIwXSwxMjpbMiwyMF0sMTQ6WzIsMjBdLDIyOlsyLDIwXX0sezEzOjIzLDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldfSx7MTM6MjQsMTU6WzEsNV0sMTY6WzEsNl0sMTc6WzEsN10sMTg6WzEsOF0sMTk6WzEsOV0sMjI6WzEsMjVdfSx7MTU6WzEsMjldLDE3OlsxLDMwXSwxODpbMSwzM10sMjM6MjYsMjU6MjcsMjY6MjgsMjc6MzIsMjk6MzQsMzA6WzEsMzVdLDMxOlsxLDMxXSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MTpbMiw0XSw3OjIyLDg6MTIsOToxMywxMDoxNCwxMToxNSwxMjpbMSwxOF0sMTQ6WzEsMTldLDIwOjE2LDIxOjE3LDIyOlsxLDIwXX0sezE6WzIsNl0sMTI6WzIsNl0sMTQ6WzIsNl0sMjI6WzIsNl19LHsxOlsyLDExXSwxMjpbMiwxMV0sMTQ6WzIsMTFdLDIyOlsyLDExXX0sezE6WzIsMTNdLDEyOlsyLDEzXSwxNDpbMiwxM10sMjI6WzIsMTNdfSx7MTU6WzEsMjldLDE3OlsxLDMwXSwxODpbMSwzM10sMjM6MzgsMjU6MjcsMjY6MjgsMjc6MzIsMjk6MzQsMzA6WzEsMzVdLDMxOlsxLDMxXSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MjQ6WzEsMzldfSx7MjQ6WzIsMjNdfSx7MjQ6WzIsMjRdLDI4OlsxLDQwXX0sezI0OlsyLDMwXX0sezI0OlsyLDMxXX0sezI0OlsyLDMyXX0sezI0OlsyLDI1XSwyODpbMiwyNV19LHsyNDpbMiwyN10sMjg6WzIsMjddfSx7MjQ6WzIsMjhdLDI4OlsyLDI4XX0sezI0OlsyLDI5XSwyODpbMiwyOV19LHsyNDpbMiwzM10sMjg6WzIsMzNdfSx7MjQ6WzIsMzRdLDI4OlsyLDM0XX0sezI0OlsxLDQxXX0sezE6WzIsMjFdLDEyOlsyLDIxXSwxNDpbMiwyMV0sMjI6WzIsMjFdfSx7MTg6WzEsMzNdLDI3OjQyLDI5OjM0LDMwOlsxLDM1XSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MTpbMiwyMl0sMTI6WzIsMjJdLDE0OlsyLDIyXSwyMjpbMiwyMl19LHsyNDpbMiwyNl0sMjg6WzIsMjZdfV0sXG5kZWZhdWx0QWN0aW9uczogezI3OlsyLDIzXSwyOTpbMiwzMF0sMzA6WzIsMzFdLDMxOlsyLDMyXX0sXG5wYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgIGlmIChoYXNoLnJlY292ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMudHJhY2Uoc3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICB9XG59LFxucGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSAnJywgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCByZWNvdmVyaW5nID0gMCwgVEVSUk9SID0gMiwgRU9GID0gMTtcbiAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7XG4gICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7XG4gICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7XG4gICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5sZXhlci55eWxsb2MgPSB7fTtcbiAgICB9XG4gICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7XG4gICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0aGlzLnl5LnBhcnNlRXJyb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHtcbiAgICAgICAgc3RhY2subGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47XG4gICAgICAgIHZzdGFjay5sZW5ndGggPSB2c3RhY2subGVuZ3RoIC0gbjtcbiAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cbiAgICB2YXIgc3ltYm9sLCBwcmVFcnJvclN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgYSwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5bWJvbCA9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAndW5kZWZpbmVkJyB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVyclN0ciA9ICcnO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goJ1xcJycgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyAnXFwnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICdQYXJzZSBlcnJvciBvbiBsaW5lICcgKyAoeXlsaW5lbm8gKyAxKSArICc6XFxuJyArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAnXFxuRXhwZWN0aW5nICcgKyBleHBlY3RlZC5qb2luKCcsICcpICsgJywgZ290IFxcJycgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICdcXCcnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICdQYXJzZSBlcnJvciBvbiBsaW5lICcgKyAoeXlsaW5lbm8gKyAxKSArICc6IFVuZXhwZWN0ZWQgJyArIChzeW1ib2wgPT0gRU9GID8gJ2VuZCBvZiBpbnB1dCcgOiAnXFwnJyArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgJ1xcJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubGV4ZXIubWF0Y2gsXG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGV4ZXIueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICcgKyBzdGF0ZSArICcsIHRva2VuOiAnICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh0aGlzLmxleGVyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkge1xuICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nO1xuICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0O1xuICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhlci55eWxpbmVubztcbiAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDtcbiAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICAgIHRoaXMueXksXG4gICAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59fTtcbnZhciBfYXN0ID0ge1xuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX25vZGVzID0gW107XG4gICAgdGhpcy5fbm9kZSA9IHt9O1xuICAgIHRoaXMuX3N0YXNoID0gW107XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbihwcm9wcykge1xuICAgIGZvciAodmFyIGsgaW4gcHJvcHMpIHRoaXMuX25vZGVba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfSxcblxuICBub2RlOiBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkgdGhpcy5fbm9kZSA9IG9iajtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfSxcblxuICBwdXNoOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2Rlcy5wdXNoKHRoaXMuX25vZGUpO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgfSxcblxuICB1bnNoaWZ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2Rlcy51bnNoaWZ0KHRoaXMuX25vZGUpO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgfSxcblxuICB5aWVsZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIF9ub2RlcyA9IHRoaXMuX25vZGVzO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHJldHVybiBfbm9kZXM7XG4gIH1cbn07XG4vKiBnZW5lcmF0ZWQgYnkgamlzb24tbGV4IDAuMi4xICovXG52YXIgbGV4ZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBsZXhlciA9IHtcblxuRU9GOjEsXG5cbnBhcnNlRXJyb3I6ZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG5zZXRJbnB1dDpmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG5pbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG5cbi8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbnVucHV0OmZ1bmN0aW9uIChjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuIC0gMSk7XG4gICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcblxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgIChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApXG4gICAgICAgICAgICAgICAgICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOlxuICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbm1vcmU6ZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbnJlamVjdDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcbicgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG5sZXNzOmZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgfSxcblxuLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xucGFzdElucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/ICcuLi4nOicnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xudXBjb21pbmdJbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwLW5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnNob3dQb3NpdGlvbjpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgfSxcblxuLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG50ZXN0X21hdGNoOmZ1bmN0aW9uIChtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbixcbiAgICAgICAgICAgIGxpbmVzLFxuICAgICAgICAgICAgYmFja3VwO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAvLyBzYXZlIGNvbnRleHRcbiAgICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgICAgICB5eWxsb2M6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgICAgICBtYXRjaDogdGhpcy5tYXRjaCxcbiAgICAgICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgICAgIHl5bGVuZzogdGhpcy55eWxlbmcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgICAgICBfaW5wdXQ6IHRoaXMuX2lucHV0LFxuICAgICAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgLy8gcmVjb3ZlciBjb250ZXh0XG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGJhY2t1cCkge1xuICAgICAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHJ1bGUgYWN0aW9uIGNhbGxlZCByZWplY3QoKSBpbXBseWluZyB0aGUgbmV4dCBydWxlIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbm5leHQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b2tlbixcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgdGVtcE1hdGNoLFxuICAgICAgICAgICAgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHJ1bGUgYWN0aW9uIGNhbGxlZCByZWplY3QoKSBpbXBseWluZyBhIHJ1bGUgTUlTbWF0Y2guXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlOiB0aGlzIGlzIGEgbGV4ZXIgcnVsZSB3aGljaCBjb25zdW1lcyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhIHRva2VuIChlLmcuIHdoaXRlc3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlOiB0aGlzIGlzIGEgbGV4ZXIgcnVsZSB3aGljaCBjb25zdW1lcyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhIHRva2VuIChlLmcuIHdoaXRlc3BhY2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdMZXhpY2FsIGVycm9yIG9uIGxpbmUgJyArICh0aGlzLnl5bGluZW5vICsgMSkgKyAnLiBVbnJlY29nbml6ZWQgdGV4dC5cXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG5sZXg6ZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG5iZWdpbjpmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgfSxcblxuLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbnBvcFN0YXRlOmZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbl9jdXJyZW50UnVsZXM6ZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG50b3BTdGF0ZTpmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG5wdXNoU3RhdGU6ZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgfSxcblxuLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbnN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgfSxcbm9wdGlvbnM6IHt9LFxucGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LHl5XywkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLFlZX1NUQVJUXG4vKiovKSB7XG5cbnZhciBZWVNUQVRFPVlZX1NUQVJUO1xuc3dpdGNoKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbmNhc2UgMDpyZXR1cm4gNFxuYnJlYWs7XG5jYXNlIDE6cmV0dXJuIDE0XG5icmVhaztcbmNhc2UgMjpyZXR1cm4gMTJcbmJyZWFrO1xuY2FzZSAzOnJldHVybiAxNVxuYnJlYWs7XG5jYXNlIDQ6cmV0dXJuIDE2XG5icmVhaztcbmNhc2UgNTpyZXR1cm4gMjJcbmJyZWFrO1xuY2FzZSA2OnJldHVybiAyNFxuYnJlYWs7XG5jYXNlIDc6cmV0dXJuIDI4XG5icmVhaztcbmNhc2UgODpyZXR1cm4gMzBcbmJyZWFrO1xuY2FzZSA5OnJldHVybiAxOFxuYnJlYWs7XG5jYXNlIDEwOnl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cigxLHl5Xy55eWxlbmctMik7IHJldHVybiAzMjtcbmJyZWFrO1xuY2FzZSAxMTp5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSx5eV8ueXlsZW5nLTIpOyByZXR1cm4gMzM7XG5icmVhaztcbmNhc2UgMTI6cmV0dXJuIDE3XG5icmVhaztcbmNhc2UgMTM6cmV0dXJuIDMxXG5icmVhaztcbn1cbn0sXG5ydWxlczogWy9eKD86XFwkKS8sL14oPzpcXC5cXC4pLywvXig/OlxcLikvLC9eKD86XFwqKS8sL14oPzpbYS16QS1aX10rW2EtekEtWjAtOV9dKikvLC9eKD86XFxbKS8sL14oPzpcXF0pLywvXig/OiwpLywvXig/OigoLT8oPzowfFsxLTldWzAtOV0qKSkpP1xcOigoLT8oPzowfFsxLTldWzAtOV0qKSkpPyhcXDooKC0/KD86MHxbMS05XVswLTldKikpKT8pPykvLC9eKD86KC0/KD86MHxbMS05XVswLTldKikpKS8sL14oPzpcIig/OlxcXFxbXCJiZm5ydC9cXFxcXXxcXFxcdVthLWZBLUYwLTldezR9fFteXCJcXFxcXSkqXCIpLywvXig/OicoPzpcXFxcWydiZm5ydC9cXFxcXXxcXFxcdVthLWZBLUYwLTldezR9fFteJ1xcXFxdKSonKS8sL14oPzpcXCguKz9cXCkoPz1cXF0pKS8sL14oPzpcXD9cXCguKz9cXCkoPz1cXF0pKS9dLFxuY29uZGl0aW9uczoge1wiSU5JVElBTFwiOntcInJ1bGVzXCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTNdLFwiaW5jbHVzaXZlXCI6dHJ1ZX19XG59O1xucmV0dXJuIGxleGVyO1xufSkoKTtcbnBhcnNlci5sZXhlciA9IGxleGVyO1xuZnVuY3Rpb24gUGFyc2VyICgpIHtcbiAgdGhpcy55eSA9IHt9O1xufVxuUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjtwYXJzZXIuUGFyc2VyID0gUGFyc2VyO1xucmV0dXJuIG5ldyBQYXJzZXI7XG59KSgpO1xuXG5cbmlmICh0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG5leHBvcnRzLnBhcnNlciA9IHBhcnNlcjtcbmV4cG9ydHMuUGFyc2VyID0gcGFyc2VyLlBhcnNlcjtcbmV4cG9ydHMucGFyc2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXJzZXIucGFyc2UuYXBwbHkocGFyc2VyLCBhcmd1bWVudHMpOyB9O1xuZXhwb3J0cy5tYWluID0gZnVuY3Rpb24gY29tbW9uanNNYWluKGFyZ3MpIHtcbiAgICBpZiAoIWFyZ3NbMV0pIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1VzYWdlOiAnK2FyZ3NbMF0rJyBGSUxFJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdmFyIHNvdXJjZSA9IHJlcXVpcmUoJ2ZzJykucmVhZEZpbGVTeW5jKHJlcXVpcmUoJ3BhdGgnKS5ub3JtYWxpemUoYXJnc1sxXSksIFwidXRmOFwiKTtcbiAgICByZXR1cm4gZXhwb3J0cy5wYXJzZXIucGFyc2Uoc291cmNlKTtcbn07XG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgcmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgZXhwb3J0cy5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSk7XG59XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2luZGV4Jyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaWRlbnRpZmllcjogXCJbYS16QS1aX10rW2EtekEtWjAtOV9dKlwiLFxuICBpbnRlZ2VyOiBcIi0/KD86MHxbMS05XVswLTldKilcIixcbiAgcXFfc3RyaW5nOiBcIlxcXCIoPzpcXFxcXFxcXFtcXFwiYmZucnQvXFxcXFxcXFxdfFxcXFxcXFxcdVthLWZBLUYwLTldezR9fFteXFxcIlxcXFxcXFxcXSkqXFxcIlwiLFxuICBxX3N0cmluZzogXCInKD86XFxcXFxcXFxbXFwnYmZucnQvXFxcXFxcXFxdfFxcXFxcXFxcdVthLWZBLUYwLTldezR9fFteXFwnXFxcXFxcXFxdKSonXCJcbn07XG4iLCJ2YXIgZGljdCA9IHJlcXVpcmUoJy4vZGljdCcpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbnZhciBncmFtbWFyID0ge1xuXG4gICAgbGV4OiB7XG5cbiAgICAgICAgbWFjcm9zOiB7XG4gICAgICAgICAgICBlc2M6IFwiXFxcXFxcXFxcIixcbiAgICAgICAgICAgIGludDogZGljdC5pbnRlZ2VyXG4gICAgICAgIH0sXG5cbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIFtcIlxcXFwkXCIsIFwicmV0dXJuICdET0xMQVInXCJdLFxuICAgICAgICAgICAgW1wiXFxcXC5cXFxcLlwiLCBcInJldHVybiAnRE9UX0RPVCdcIl0sXG4gICAgICAgICAgICBbXCJcXFxcLlwiLCBcInJldHVybiAnRE9UJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFwqXCIsIFwicmV0dXJuICdTVEFSJ1wiXSxcbiAgICAgICAgICAgIFtkaWN0LmlkZW50aWZpZXIsIFwicmV0dXJuICdJREVOVElGSUVSJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFxbXCIsIFwicmV0dXJuICdbJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFxdXCIsIFwicmV0dXJuICddJ1wiXSxcbiAgICAgICAgICAgIFtcIixcIiwgXCJyZXR1cm4gJywnXCJdLFxuICAgICAgICAgICAgW1wiKHtpbnR9KT9cXFxcOih7aW50fSk/KFxcXFw6KHtpbnR9KT8pP1wiLCBcInJldHVybiAnQVJSQVlfU0xJQ0UnXCJdLFxuICAgICAgICAgICAgW1wie2ludH1cIiwgXCJyZXR1cm4gJ0lOVEVHRVInXCJdLFxuICAgICAgICAgICAgW2RpY3QucXFfc3RyaW5nLCBcInl5dGV4dCA9IHl5dGV4dC5zdWJzdHIoMSx5eWxlbmctMik7IHJldHVybiAnUVFfU1RSSU5HJztcIl0sXG4gICAgICAgICAgICBbZGljdC5xX3N0cmluZywgXCJ5eXRleHQgPSB5eXRleHQuc3Vic3RyKDEseXlsZW5nLTIpOyByZXR1cm4gJ1FfU1RSSU5HJztcIl0sXG4gICAgICAgICAgICBbXCJcXFxcKC4rP1xcXFwpKD89XFxcXF0pXCIsIFwicmV0dXJuICdTQ1JJUFRfRVhQUkVTU0lPTidcIl0sXG4gICAgICAgICAgICBbXCJcXFxcP1xcXFwoLis/XFxcXCkoPz1cXFxcXSlcIiwgXCJyZXR1cm4gJ0ZJTFRFUl9FWFBSRVNTSU9OJ1wiXVxuICAgICAgICBdXG4gICAgfSxcblxuICAgIHN0YXJ0OiBcIkpTT05fUEFUSFwiLFxuXG4gICAgYm5mOiB7XG5cbiAgICAgICAgSlNPTl9QQVRIOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9MTEFSJywgICAgICAgICAgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQxIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdET0xMQVIgUEFUSF9DT01QT05FTlRTJywgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJDEgfSB9KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0xFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT04nLCAgICAgICAgICAgICAgICAgJ3l5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OIFBBVEhfQ09NUE9ORU5UUycsICd5eS5hc3Quc2V0KHsgb3BlcmF0aW9uOiBcIm1lbWJlclwiLCBzY29wZTogXCJjaGlsZFwiLCBleHByZXNzaW9uOiB7IHR5cGU6IFwiaWRlbnRpZmllclwiLCB2YWx1ZTogJDEgfX0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0gXSxcblxuICAgICAgICBQQVRIX0NPTVBPTkVOVFM6IFtcbiAgICAgICAgICAgICAgICBbICdQQVRIX0NPTVBPTkVOVCcsICAgICAgICAgICAgICAgICAnJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1BBVEhfQ09NUE9ORU5UUyBQQVRIX0NPTVBPTkVOVCcsICcnIF0gXSxcblxuICAgICAgICBQQVRIX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ01FTUJFUl9DT01QT05FTlQnLCAgICAneXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiB9KTsgeXkuYXN0LnB1c2goKScgXSxcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwic3Vic2NyaXB0XCIgfSk7IHl5LmFzdC5wdXNoKCkgJyBdIF0sXG5cbiAgICAgICAgTUVNQkVSX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0NISUxEX01FTUJFUl9DT01QT05FTlQnLCAgICAgICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlQnLCAneXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KScgXSBdLFxuXG4gICAgICAgIENISUxEX01FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1QgTUVNQkVSX0VYUFJFU1NJT04nLCAnJyBdIF0sXG5cbiAgICAgICAgTEVBRElOR19DSElMRF9NRU1CRVJfRVhQUkVTU0lPTjogW1xuICAgICAgICAgICAgICAgIFsgJ01FTUJFUl9FWFBSRVNTSU9OJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiLCBvcGVyYXRpb246IFwibWVtYmVyXCIgfSknIF0gXSxcblxuICAgICAgICBERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1RfRE9UIE1FTUJFUl9FWFBSRVNTSU9OJywgJycgXSBdLFxuXG4gICAgICAgIE1FTUJFUl9FWFBSRVNTSU9OOiBbXG4gICAgICAgICAgICAgICAgWyAnU1RBUicsICAgICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJDEgfSB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdJREVOVElGSUVSJywgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnU0NSSVBUX0VYUFJFU1NJT04nLCAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzY3JpcHRfZXhwcmVzc2lvblwiLCB2YWx1ZTogJDEgfSB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdJTlRFR0VSJywgICAgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJDEpIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnRU5EJywgICAgICAgICAgICAgICAnJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0NISUxEX1NVQlNDUklQVF9DT01QT05FTlQnLCAgICAgICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdERVNDRU5EQU5UX1NVQlNDUklQVF9DT01QT05FTlQnLCAneXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KScgXSBdLFxuXG4gICAgICAgIENISUxEX1NVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdbIFNVQlNDUklQVCBdJywgJycgXSBdLFxuXG4gICAgICAgIERFU0NFTkRBTlRfU1VCU0NSSVBUX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0RPVF9ET1QgWyBTVUJTQ1JJUFQgXScsICcnIF0gXSxcblxuICAgICAgICBTVUJTQ1JJUFQ6IFtcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTicsICcnIF0sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVCcsICckMS5sZW5ndGggPiAxPyB5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInVuaW9uXCIsIHZhbHVlOiAkMSB9IH0pIDogJCQgPSAkMScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1Q6IFtcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUQUJMRScsICckJCA9IFskMV0nXSxcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUICwgU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEUnLCAnJCQgPSAkMS5jb25jYXQoJDMpJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEU6IFtcbiAgICAgICAgICAgICAgICBbICdJTlRFR0VSJywgICAgICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJDEpIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnU1RSSU5HX0xJVEVSQUwnLCAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzdHJpbmdfbGl0ZXJhbFwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSxcbiAgICAgICAgICAgICAgICBbICdBUlJBWV9TTElDRScsICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNsaWNlXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0VYUFJFU1NJT046IFtcbiAgICAgICAgICAgICAgICBbICdTVEFSJywgICAgICAgICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIndpbGRjYXJkXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NDUklQVF9FWFBSRVNTSU9OJywgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnRklMVEVSX0VYUFJFU1NJT04nLCAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJmaWx0ZXJfZXhwcmVzc2lvblwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSBdLFxuXG4gICAgICAgIFNUUklOR19MSVRFUkFMOiBbXG4gICAgICAgICAgICAgICAgWyAnUVFfU1RSSU5HJywgXCIkJCA9ICQxXCIgXSxcbiAgICAgICAgICAgICAgICBbICdRX1NUUklORycsICBcIiQkID0gJDFcIiBdIF1cbiAgICB9XG59O1xuaWYgKGZzLnJlYWRGaWxlU3luYykge1xuICBncmFtbWFyLm1vZHVsZUluY2x1ZGUgPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiLi4vaW5jbHVkZS9tb2R1bGUuanNcIikpO1xuICBncmFtbWFyLmFjdGlvbkluY2x1ZGUgPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiLi4vaW5jbHVkZS9hY3Rpb24uanNcIikpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYW1tYXI7XG4iLCJ2YXIgYWVzcHJpbSA9IHJlcXVpcmUoJy4vYWVzcHJpbScpO1xudmFyIHNsaWNlID0gcmVxdWlyZSgnLi9zbGljZScpO1xudmFyIF9ldmFsdWF0ZSA9IHJlcXVpcmUoJ3N0YXRpYy1ldmFsJyk7XG52YXIgX3VuaXEgPSByZXF1aXJlKCd1bmRlcnNjb3JlJykudW5pcTtcblxudmFyIEhhbmRsZXJzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuSGFuZGxlcnMucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy50cmF2ZXJzZSA9IHRyYXZlcnNlcih0cnVlKTtcbiAgdGhpcy5kZXNjZW5kID0gdHJhdmVyc2VyKCk7XG59XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5rZXlzID0gT2JqZWN0LmtleXM7XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24oY29tcG9uZW50KSB7XG5cbiAgdmFyIGtleSA9IFsgY29tcG9uZW50Lm9wZXJhdGlvbiwgY29tcG9uZW50LnNjb3BlLCBjb21wb25lbnQuZXhwcmVzc2lvbi50eXBlIF0uam9pbignLScpO1xuICB2YXIgbWV0aG9kID0gdGhpcy5fZm5zW2tleV07XG5cbiAgaWYgKCFtZXRob2QpIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IHJlc29sdmUga2V5OiBcIiArIGtleSk7XG4gIHJldHVybiBtZXRob2QuYmluZCh0aGlzKTtcbn07XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uKGtleSwgaGFuZGxlcikge1xuXG4gIGlmICghaGFuZGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaGFuZGxlciBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICB0aGlzLl9mbnNba2V5XSA9IGhhbmRsZXI7XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUuX2ZucyA9IHtcblxuICAnbWVtYmVyLWNoaWxkLWlkZW50aWZpZXInOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIga2V5ID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWU7XG4gICAgdmFyIHZhbHVlID0gcGFydGlhbC52YWx1ZTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYga2V5IGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gWyB7IHZhbHVlOiB2YWx1ZVtrZXldLCBwYXRoOiBwYXJ0aWFsLnBhdGguY29uY2F0KGtleSkgfSBdXG4gICAgfVxuICB9LFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC1pZGVudGlmaWVyJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT0gcmVmIH0pLFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbihrZXksIHZhbHVlLCByZWYpIHsgcmV0dXJuIGtleSA9PT0gcmVmIH0pLFxuXG4gICdtZW1iZXItY2hpbGQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbihrZXksIHZhbHVlLCByZWYpIHsgcmV0dXJuIFN0cmluZyhrZXkpID09PSBTdHJpbmcocmVmKSB9KSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT09IHJlZiB9KSxcblxuICAnbWVtYmVyLWNoaWxkLXdpbGRjYXJkJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ21lbWJlci1kZXNjZW5kYW50LXdpbGRjYXJkJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdzdWJzY3JpcHQtZGVzY2VuZGFudC13aWxkY2FyZCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZSB9KSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLXdpbGRjYXJkJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC1zbGljZSc6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIGlmIChpc19hcnJheShwYXJ0aWFsLnZhbHVlKSkge1xuICAgICAgdmFyIGFyZ3MgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zcGxpdCgnOicpLm1hcChfcGFyc2VfbnVsbGFibGVfaW50KTtcbiAgICAgIHZhciB2YWx1ZXMgPSBwYXJ0aWFsLnZhbHVlLm1hcChmdW5jdGlvbih2LCBpKSB7IHJldHVybiB7IHZhbHVlOiB2LCBwYXRoOiBwYXJ0aWFsLnBhdGguY29uY2F0KGkpIH0gfSk7XG4gICAgICByZXR1cm4gc2xpY2UuYXBwbHkobnVsbCwgW3ZhbHVlc10uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC11bmlvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcbiAgICAgIHZhciBfY29tcG9uZW50ID0geyBvcGVyYXRpb246ICdzdWJzY3JpcHQnLCBzY29wZTogJ2NoaWxkJywgZXhwcmVzc2lvbjogY29tcG9uZW50LmV4cHJlc3Npb24gfTtcbiAgICAgIHZhciBoYW5kbGVyID0gdGhpcy5yZXNvbHZlKF9jb21wb25lbnQpO1xuICAgICAgdmFyIF9yZXN1bHRzID0gaGFuZGxlcihfY29tcG9uZW50LCBwYXJ0aWFsKTtcbiAgICAgIGlmIChfcmVzdWx0cykge1xuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoX3Jlc3VsdHMpO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgcmV0dXJuIHVuaXF1ZShyZXN1bHRzKTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtdW5pb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICB2YXIganAgPSByZXF1aXJlKCcuLicpO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgdmFyIG5vZGVzID0ganAubm9kZXMocGFydGlhbCwgJyQuLionKS5zbGljZSgxKTtcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSByZXR1cm47XG4gICAgICBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBvbmVudCkge1xuICAgICAgICB2YXIgX2NvbXBvbmVudCA9IHsgb3BlcmF0aW9uOiAnc3Vic2NyaXB0Jywgc2NvcGU6ICdjaGlsZCcsIGV4cHJlc3Npb246IGNvbXBvbmVudC5leHByZXNzaW9uIH07XG4gICAgICAgIHZhciBoYW5kbGVyID0gc2VsZi5yZXNvbHZlKF9jb21wb25lbnQpO1xuICAgICAgICB2YXIgX3Jlc3VsdHMgPSBoYW5kbGVyKF9jb21wb25lbnQsIG5vZGUpO1xuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoX3Jlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5pcXVlKHJlc3VsdHMpO1xuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtZmlsdGVyX2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICAvLyBzbGljZSBvdXQgdGhlIGV4cHJlc3Npb24gZnJvbSA/KGV4cHJlc3Npb24pXG4gICAgdmFyIHNyYyA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDIsIC0xKTtcbiAgICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcblxuICAgIHZhciBwYXNzYWJsZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBldmFsdWF0ZShhc3QsIHsgJ0AnOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKHBhcnRpYWwsIG51bGwsIHBhc3NhYmxlLCBjb3VudCk7XG5cbiAgfSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtZmlsdGVyX2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICAvLyBzbGljZSBvdXQgdGhlIGV4cHJlc3Npb24gZnJvbSA/KGV4cHJlc3Npb24pXG4gICAgdmFyIHNyYyA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDIsIC0xKTtcbiAgICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcblxuICAgIHZhciBwYXNzYWJsZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBldmFsdWF0ZShhc3QsIHsgJ0AnOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmF2ZXJzZShwYXJ0aWFsLCBudWxsLCBwYXNzYWJsZSwgY291bnQpO1xuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJFt7e3ZhbHVlfX1dJyk7XG4gIH0sXG5cbiAgJ21lbWJlci1jaGlsZC1zY3JpcHRfZXhwcmVzc2lvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciBleHAgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgxLCAtMSk7XG4gICAgcmV0dXJuIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBleHAsICckLnt7dmFsdWV9fScpO1xuICB9LFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC1zY3JpcHRfZXhwcmVzc2lvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciBleHAgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgxLCAtMSk7XG4gICAgcmV0dXJuIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBleHAsICckLi52YWx1ZScpO1xuICB9XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snc3Vic2NyaXB0LWNoaWxkLXN0cmluZ19saXRlcmFsJ10gPVxuXHRIYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snbWVtYmVyLWNoaWxkLWlkZW50aWZpZXInXTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1kZXNjZW5kYW50LW51bWVyaWNfbGl0ZXJhbCddID1cbiAgICBIYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snc3Vic2NyaXB0LWRlc2NlbmRhbnQtc3RyaW5nX2xpdGVyYWwnXSA9XG4gICAgSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1kZXNjZW5kYW50LWlkZW50aWZpZXInXTtcblxuZnVuY3Rpb24gZXZhbF9yZWN1cnNlKHBhcnRpYWwsIHNyYywgdGVtcGxhdGUpIHtcblxuICB2YXIganAgPSByZXF1aXJlKCcuL2luZGV4Jyk7XG4gIHZhciBhc3QgPSBhZXNwcmltLnBhcnNlKHNyYykuYm9keVswXS5leHByZXNzaW9uO1xuICB2YXIgdmFsdWUgPSBldmFsdWF0ZShhc3QsIHsgJ0AnOiBwYXJ0aWFsLnZhbHVlIH0pO1xuICB2YXIgcGF0aCA9IHRlbXBsYXRlLnJlcGxhY2UoL1xce1xce1xccyp2YWx1ZVxccypcXH1cXH0vZywgdmFsdWUpO1xuXG4gIHZhciByZXN1bHRzID0ganAubm9kZXMocGFydGlhbC52YWx1ZSwgcGF0aCk7XG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihyKSB7XG4gICAgci5wYXRoID0gcGFydGlhbC5wYXRoLmNvbmNhdChyLnBhdGguc2xpY2UoMSkpO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gaXNfYXJyYXkodmFsKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG59XG5cbmZ1bmN0aW9uIGlzX29iamVjdCh2YWwpIHtcbiAgLy8gaXMgdGhpcyBhIG5vbi1hcnJheSwgbm9uLW51bGwgb2JqZWN0P1xuICByZXR1cm4gdmFsICYmICEodmFsIGluc3RhbmNlb2YgQXJyYXkpICYmIHZhbCBpbnN0YW5jZW9mIE9iamVjdDtcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2VyKHJlY3Vyc2UpIHtcblxuICByZXR1cm4gZnVuY3Rpb24ocGFydGlhbCwgcmVmLCBwYXNzYWJsZSwgY291bnQpIHtcblxuICAgIHZhciB2YWx1ZSA9IHBhcnRpYWwudmFsdWU7XG4gICAgdmFyIHBhdGggPSBwYXJ0aWFsLnBhdGg7XG5cbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuXG4gICAgdmFyIGRlc2NlbmQgPSBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuXG4gICAgICBpZiAoaXNfYXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocGFzc2FibGUoaW5kZXgsIGVsZW1lbnQsIHJlZikpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7IHBhdGg6IHBhdGguY29uY2F0KGluZGV4KSwgdmFsdWU6IGVsZW1lbnQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCkge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgICAgICBkZXNjZW5kKGVsZW1lbnQsIHBhdGguY29uY2F0KGluZGV4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNfb2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB0aGlzLmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChwYXNzYWJsZShrLCB2YWx1ZVtrXSwgcmVmKSkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHsgcGF0aDogcGF0aC5jb25jYXQoayksIHZhbHVlOiB2YWx1ZVtrXSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSB7IHJldHVybiB9XG4gICAgICAgICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgICAgICAgIGRlc2NlbmQodmFsdWVba10sIHBhdGguY29uY2F0KGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0uYmluZCh0aGlzKTtcbiAgICBkZXNjZW5kKHZhbHVlLCBwYXRoKTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVzY2VuZChwYXNzYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuICAgIHJldHVybiB0aGlzLmRlc2NlbmQocGFydGlhbCwgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUsIHBhc3NhYmxlLCBjb3VudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3RyYXZlcnNlKHBhc3NhYmxlKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHJhdmVyc2UocGFydGlhbCwgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUsIHBhc3NhYmxlLCBjb3VudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZhbHVhdGUoKSB7XG4gIHRyeSB7IHJldHVybiBfZXZhbHVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIGNhdGNoIChlKSB7IH1cbn1cblxuZnVuY3Rpb24gdW5pcXVlKHJlc3VsdHMpIHtcbiAgcmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQgfSlcbiAgcmV0dXJuIF91bmlxKFxuICAgIHJlc3VsdHMsXG4gICAgZnVuY3Rpb24ocikgeyByZXR1cm4gci5wYXRoLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBTdHJpbmcoYykucmVwbGFjZSgnLScsICctLScpIH0pLmpvaW4oJy0nKSB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIF9wYXJzZV9udWxsYWJsZV9pbnQodmFsKSB7XG4gIHZhciBzdmFsID0gU3RyaW5nKHZhbCk7XG4gIHJldHVybiBzdmFsLm1hdGNoKC9eLT9bMC05XSskLykgPyBwYXJzZUludChzdmFsKSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFuZGxlcnM7XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG52YXIgZGljdCA9IHJlcXVpcmUoJy4vZGljdCcpO1xudmFyIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG52YXIgSGFuZGxlcnMgPSByZXF1aXJlKCcuL2hhbmRsZXJzJyk7XG5cbnZhciBKU09OUGF0aCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcigpO1xuICB0aGlzLmhhbmRsZXJzID0gbmV3IEhhbmRsZXJzKCk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgYXNzZXJ0Lm9rKF9pc19zdHJpbmcoc3RyaW5nKSwgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcbiAgcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlKHN0cmluZyk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGFyZW50ID0gZnVuY3Rpb24ob2JqLCBzdHJpbmcpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIG5vZGUgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nKVswXTtcbiAgdmFyIGtleSA9IG5vZGUucGF0aC5wb3AoKTsgLyoganNoaW50IHVudXNlZDpmYWxzZSAqL1xuICByZXR1cm4gdGhpcy52YWx1ZShvYmosIG5vZGUucGF0aCk7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBmbikge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcbiAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBmbiwgXCJmdW5jdGlvblwiLCBcImZuIG5lZWRzIHRvIGJlIGZ1bmN0aW9uXCIpXG5cbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcyhvYmosIHN0cmluZykuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgLy8gc29ydCBub2RlcyBzbyB3ZSBhcHBseSBmcm9tIHRoZSBib3R0b20gdXBcbiAgICByZXR1cm4gYi5wYXRoLmxlbmd0aCAtIGEucGF0aC5sZW5ndGg7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIHZhciBrZXkgPSBub2RlLnBhdGgucG9wKCk7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMudmFsdWUob2JqLCB0aGlzLnN0cmluZ2lmeShub2RlLnBhdGgpKTtcbiAgICB2YXIgdmFsID0gbm9kZS52YWx1ZSA9IGZuLmNhbGwob2JqLCBwYXJlbnRba2V5XSk7XG4gICAgcGFyZW50W2tleV0gPSB2YWw7XG4gIH0sIHRoaXMpO1xuXG4gIHJldHVybiBub2Rlcztcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24ob2JqLCBwYXRoLCB2YWx1ZSkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlcyhvYmosIHBhdGgpLnNoaWZ0KCk7XG4gICAgaWYgKCFub2RlKSByZXR1cm4gdGhpcy5fdml2aWZ5KG9iaiwgcGF0aCwgdmFsdWUpO1xuICAgIHZhciBrZXkgPSBub2RlLnBhdGguc2xpY2UoLTEpLnNoaWZ0KCk7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50KG9iaiwgdGhpcy5zdHJpbmdpZnkobm9kZS5wYXRoKSk7XG4gICAgcGFyZW50W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5xdWVyeShvYmosIHRoaXMuc3RyaW5naWZ5KHBhdGgpLCAxKS5zaGlmdCgpO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUuX3ZpdmlmeSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCB2YWx1ZSkge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHBhdGggPSB0aGlzLnBhcnNlci5wYXJzZShzdHJpbmcpXG4gICAgLm1hcChmdW5jdGlvbihjb21wb25lbnQpIHsgcmV0dXJuIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlIH0pO1xuXG4gIHZhciBzZXRWYWx1ZSA9IGZ1bmN0aW9uKHBhdGgsIHZhbHVlKSB7XG4gICAgdmFyIGtleSA9IHBhdGgucG9wKCk7XG4gICAgdmFyIG5vZGUgPSBzZWxmLnZhbHVlKG9iaiwgcGF0aCk7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICBzZXRWYWx1ZShwYXRoLmNvbmNhdCgpLCB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IHt9IDogW10pO1xuICAgICAgbm9kZSA9IHNlbGYudmFsdWUob2JqLCBwYXRoKTtcbiAgICB9XG4gICAgbm9kZVtrZXldID0gdmFsdWU7XG4gIH1cbiAgc2V0VmFsdWUocGF0aCwgdmFsdWUpO1xuICByZXR1cm4gdGhpcy5xdWVyeShvYmosIHN0cmluZylbMF07XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKF9pc19zdHJpbmcoc3RyaW5nKSwgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICB2YXIgcmVzdWx0cyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcsIGNvdW50KVxuICAgIC5tYXAoZnVuY3Rpb24ocikgeyByZXR1cm4gci52YWx1ZSB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5wYXRocyA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICB2YXIgcmVzdWx0cyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcsIGNvdW50KVxuICAgIC5tYXAoZnVuY3Rpb24ocikgeyByZXR1cm4gci5wYXRoIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLm5vZGVzID0gZnVuY3Rpb24ob2JqLCBzdHJpbmcsIGNvdW50KSB7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmIChjb3VudCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIHZhciBwYXRoID0gdGhpcy5wYXJzZXIucGFyc2Uoc3RyaW5nKTtcbiAgdmFyIGhhbmRsZXJzID0gdGhpcy5oYW5kbGVycztcblxuICB2YXIgcGFydGlhbHMgPSBbIHsgcGF0aDogWyckJ10sIHZhbHVlOiBvYmogfSBdO1xuICB2YXIgbWF0Y2hlcyA9IFtdO1xuXG4gIGlmIChwYXRoLmxlbmd0aCAmJiBwYXRoWzBdLmV4cHJlc3Npb24udHlwZSA9PSAncm9vdCcpIHBhdGguc2hpZnQoKTtcblxuICBpZiAoIXBhdGgubGVuZ3RoKSByZXR1cm4gcGFydGlhbHM7XG5cbiAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBvbmVudCwgaW5kZXgpIHtcblxuICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+PSBjb3VudCkgcmV0dXJuO1xuICAgIHZhciBoYW5kbGVyID0gaGFuZGxlcnMucmVzb2x2ZShjb21wb25lbnQpO1xuICAgIHZhciBfcGFydGlhbHMgPSBbXTtcblxuICAgIHBhcnRpYWxzLmZvckVhY2goZnVuY3Rpb24ocCkge1xuXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPj0gY291bnQpIHJldHVybjtcbiAgICAgIHZhciByZXN1bHRzID0gaGFuZGxlcihjb21wb25lbnQsIHAsIGNvdW50KTtcblxuICAgICAgaWYgKGluZGV4ID09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAvLyBpZiB3ZSdyZSB0aHJvdWdoIHRoZSBjb21wb25lbnRzIHdlJ3JlIGRvbmVcbiAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMuY29uY2F0KHJlc3VsdHMgfHwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGFjY3VtdWxhdGUgYW5kIGNhcnJ5IG9uIHRocm91Z2hcbiAgICAgICAgX3BhcnRpYWxzID0gX3BhcnRpYWxzLmNvbmNhdChyZXN1bHRzIHx8IFtdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhcnRpYWxzID0gX3BhcnRpYWxzO1xuXG4gIH0pO1xuXG4gIHJldHVybiBjb3VudCA/IG1hdGNoZXMuc2xpY2UoMCwgY291bnQpIDogbWF0Y2hlcztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5zdHJpbmdpZnkgPSBmdW5jdGlvbihwYXRoKSB7XG5cbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHN0cmluZyA9ICckJztcblxuICB2YXIgdGVtcGxhdGVzID0ge1xuICAgICdkZXNjZW5kYW50LW1lbWJlcic6ICcuLnt7dmFsdWV9fScsXG4gICAgJ2NoaWxkLW1lbWJlcic6ICcue3t2YWx1ZX19JyxcbiAgICAnZGVzY2VuZGFudC1zdWJzY3JpcHQnOiAnLi5be3t2YWx1ZX19XScsXG4gICAgJ2NoaWxkLXN1YnNjcmlwdCc6ICdbe3t2YWx1ZX19XSdcbiAgfTtcblxuICBwYXRoID0gdGhpcy5fbm9ybWFsaXplKHBhdGgpO1xuXG4gIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcblxuICAgIGlmIChjb21wb25lbnQuZXhwcmVzc2lvbi50eXBlID09ICdyb290JykgcmV0dXJuO1xuXG4gICAgdmFyIGtleSA9IFtjb21wb25lbnQuc2NvcGUsIGNvbXBvbmVudC5vcGVyYXRpb25dLmpvaW4oJy0nKTtcbiAgICB2YXIgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNba2V5XTtcbiAgICB2YXIgdmFsdWU7XG5cbiAgICBpZiAoY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSA9PSAnc3RyaW5nX2xpdGVyYWwnKSB7XG4gICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICghdGVtcGxhdGUpIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IGZpbmQgdGVtcGxhdGUgXCIgKyBrZXkpO1xuXG4gICAgc3RyaW5nICs9IHRlbXBsYXRlLnJlcGxhY2UoL3t7dmFsdWV9fS8sIHZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG5cbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09IFwic3RyaW5nXCIpIHtcblxuICAgIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShwYXRoKTtcblxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkgJiYgdHlwZW9mIHBhdGhbMF0gPT0gXCJzdHJpbmdcIikge1xuXG4gICAgdmFyIF9wYXRoID0gWyB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiBcIiRcIiB9IH0gXTtcblxuICAgIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQsIGluZGV4KSB7XG5cbiAgICAgIGlmIChjb21wb25lbnQgPT0gJyQnICYmIGluZGV4ID09PSAwKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50ID09IFwic3RyaW5nXCIgJiYgY29tcG9uZW50Lm1hdGNoKFwiXlwiICsgZGljdC5pZGVudGlmaWVyICsgXCIkXCIpKSB7XG5cbiAgICAgICAgX3BhdGgucHVzaCh7XG4gICAgICAgICAgb3BlcmF0aW9uOiAnbWVtYmVyJyxcbiAgICAgICAgICBzY29wZTogJ2NoaWxkJyxcbiAgICAgICAgICBleHByZXNzaW9uOiB7IHZhbHVlOiBjb21wb25lbnQsIHR5cGU6ICdpZGVudGlmaWVyJyB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHZhciB0eXBlID0gdHlwZW9mIGNvbXBvbmVudCA9PSBcIm51bWJlclwiID9cbiAgICAgICAgICAnbnVtZXJpY19saXRlcmFsJyA6ICdzdHJpbmdfbGl0ZXJhbCc7XG5cbiAgICAgICAgX3BhdGgucHVzaCh7XG4gICAgICAgICAgb3BlcmF0aW9uOiAnc3Vic2NyaXB0JyxcbiAgICAgICAgICBzY29wZTogJ2NoaWxkJyxcbiAgICAgICAgICBleHByZXNzaW9uOiB7IHZhbHVlOiBjb21wb25lbnQsIHR5cGU6IHR5cGUgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfcGF0aDtcblxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkgJiYgdHlwZW9mIHBhdGhbMF0gPT0gXCJvYmplY3RcIikge1xuXG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IHVuZGVyc3RhbmQgcGF0aCBcIiArIHBhdGgpO1xufVxuXG5mdW5jdGlvbiBfaXNfc3RyaW5nKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT0gJ1tvYmplY3QgU3RyaW5nXSc7XG59XG5cbkpTT05QYXRoLkhhbmRsZXJzID0gSGFuZGxlcnM7XG5KU09OUGF0aC5QYXJzZXIgPSBQYXJzZXI7XG5cbnZhciBpbnN0YW5jZSA9IG5ldyBKU09OUGF0aDtcbmluc3RhbmNlLkpTT05QYXRoID0gSlNPTlBhdGg7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFuY2U7XG4iLCJ2YXIgZ3JhbW1hciA9IHJlcXVpcmUoJy4vZ3JhbW1hcicpO1xudmFyIGdwYXJzZXIgPSByZXF1aXJlKCcuLi9nZW5lcmF0ZWQvcGFyc2VyJyk7XG5cbnZhciBQYXJzZXIgPSBmdW5jdGlvbigpIHtcblxuICB2YXIgcGFyc2VyID0gbmV3IGdwYXJzZXIuUGFyc2VyKCk7XG5cbiAgdmFyIF9wYXJzZUVycm9yID0gcGFyc2VyLnBhcnNlRXJyb3I7XG4gIHBhcnNlci55eS5wYXJzZUVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHBhcnNlci55eS5hc3QpIHtcbiAgICAgIHBhcnNlci55eS5hc3QuaW5pdGlhbGl6ZSgpO1xuICAgIH1cbiAgICBfcGFyc2VFcnJvci5hcHBseShwYXJzZXIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VyO1xuXG59O1xuXG5QYXJzZXIuZ3JhbW1hciA9IGdyYW1tYXI7XG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlcjtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXJyLCBzdGFydCwgZW5kLCBzdGVwKSB7XG5cbiAgaWYgKHR5cGVvZiBzdGFydCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwic3RhcnQgY2Fubm90IGJlIGEgc3RyaW5nXCIpO1xuICBpZiAodHlwZW9mIGVuZCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwiZW5kIGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcbiAgaWYgKHR5cGVvZiBzdGVwID09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJzdGVwIGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcblxuICB2YXIgbGVuID0gYXJyLmxlbmd0aDtcblxuICBpZiAoc3RlcCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgemVyb1wiKTtcbiAgc3RlcCA9IHN0ZXAgPyBpbnRlZ2VyKHN0ZXApIDogMTtcblxuICAvLyBub3JtYWxpemUgbmVnYXRpdmUgdmFsdWVzXG4gIHN0YXJ0ID0gc3RhcnQgPCAwID8gbGVuICsgc3RhcnQgOiBzdGFydDtcbiAgZW5kID0gZW5kIDwgMCA/IGxlbiArIGVuZCA6IGVuZDtcblxuICAvLyBkZWZhdWx0IGV4dGVudHMgdG8gZXh0ZW50c1xuICBzdGFydCA9IGludGVnZXIoc3RhcnQgPT09IDAgPyAwIDogIXN0YXJ0ID8gKHN0ZXAgPiAwID8gMCA6IGxlbiAtIDEpIDogc3RhcnQpO1xuICBlbmQgPSBpbnRlZ2VyKGVuZCA9PT0gMCA/IDAgOiAhZW5kID8gKHN0ZXAgPiAwID8gbGVuIDogLTEpIDogZW5kKTtcblxuICAvLyBjbGFtcCBleHRlbnRzXG4gIHN0YXJ0ID0gc3RlcCA+IDAgPyBNYXRoLm1heCgwLCBzdGFydCkgOiBNYXRoLm1pbihsZW4sIHN0YXJ0KTtcbiAgZW5kID0gc3RlcCA+IDAgPyBNYXRoLm1pbihlbmQsIGxlbikgOiBNYXRoLm1heCgtMSwgZW5kKTtcblxuICAvLyByZXR1cm4gZW1wdHkgaWYgZXh0ZW50cyBhcmUgYmFja3dhcmRzXG4gIGlmIChzdGVwID4gMCAmJiBlbmQgPD0gc3RhcnQpIHJldHVybiBbXTtcbiAgaWYgKHN0ZXAgPCAwICYmIHN0YXJ0IDw9IGVuZCkgcmV0dXJuIFtdO1xuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgIT0gZW5kOyBpICs9IHN0ZXApIHtcbiAgICBpZiAoKHN0ZXAgPCAwICYmIGkgPD0gZW5kKSB8fCAoc3RlcCA+IDAgJiYgaSA+PSBlbmQpKSBicmVhaztcbiAgICByZXN1bHQucHVzaChhcnJbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaW50ZWdlcih2YWwpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWwpLm1hdGNoKC9eWzAtOV0rJC8pID8gcGFyc2VJbnQodmFsKSA6XG4gICAgTnVtYmVyLmlzRmluaXRlKHZhbCkgPyBwYXJzZUludCh2YWwsIDEwKSA6IDA7XG59XG4iLCIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLyxcbiAgICByZUxlYWRpbmdEb3QgPSAvXlxcLi8sXG4gICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QgaW4gSUUgPCA5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNIb3N0T2JqZWN0KHZhbHVlKSB7XG4gIC8vIE1hbnkgaG9zdCBvYmplY3RzIGFyZSBgT2JqZWN0YCBvYmplY3RzIHRoYXQgY2FuIGNvZXJjZSB0byBzdHJpbmdzXG4gIC8vIGRlc3BpdGUgaGF2aW5nIGltcHJvcGVybHkgZGVmaW5lZCBgdG9TdHJpbmdgIG1ldGhvZHMuXG4gIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gISEodmFsdWUgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbCxcbiAgICBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyksXG4gICAgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA/IGVudHJpZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHJldHVybiB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gZGF0YVtrZXldICE9PSB1bmRlZmluZWQgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA/IGVudHJpZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID8gZW50cmllcy5sZW5ndGggOiAwO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICBnZXRNYXBEYXRhKHRoaXMsIGtleSkuc2V0KGtleSwgdmFsdWUpO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICBwYXRoID0gaXNLZXkocGF0aCwgb2JqZWN0KSA/IFtwYXRoXSA6IGNhc3RQYXRoKHBhdGgpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gKGlzRnVuY3Rpb24odmFsdWUpIHx8IGlzSG9zdE9iamVjdCh2YWx1ZSkpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBzdHJpbmdUb1BhdGgodmFsdWUpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemUoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAocmVMZWFkaW5nRG90LnRlc3Qoc3RyaW5nKSkge1xuICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgfVxuICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3RyaW5nKSB7XG4gICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICByZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbi8vIEFzc2lnbiBjYWNoZSB0byBgXy5tZW1vaXplYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDgtOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gaXNPYmplY3QodmFsdWUpID8gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCIvKipcbiAqIExvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcy5mb3VuZGF0aW9uLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBTeW1ib2wgPSByb290LlN5bWJvbCxcbiAgICBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5LFxuICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2UsXG4gICAgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxcbiAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpLFxuICAgIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyksXG4gICAgUHJvbWlzZSA9IGdldE5hdGl2ZShyb290LCAnUHJvbWlzZScpLFxuICAgIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0JyksXG4gICAgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpLFxuICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICB9XG4gIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gIH1cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoc2Vlbikge1xuICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgb3RoUHJvcHMgPSBnZXRBbGxLZXlzKG90aGVyKSxcbiAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICB9XG4gIHZhciByZXN1bHQgPSB0cnVlO1xuICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgfVxuICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmXG4gICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHwgcmVJc1VpbnQudGVzdCh2YWx1ZSkpICYmXG4gICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBvYmplY3QgPT09IG90aGVyO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbDtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIExvZGFzaCA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanMuZm91bmRhdGlvbi8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjEwJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovXG4gIHZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xuICB2YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xuICB2YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gIHZhciBXUkFQX0JJTkRfRkxBRyA9IDEsXG4gICAgICBXUkFQX0JJTkRfS0VZX0ZMQUcgPSAyLFxuICAgICAgV1JBUF9DVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICAgIFdSQVBfQ1VSUllfRkxBRyA9IDgsXG4gICAgICBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcgPSAxNixcbiAgICAgIFdSQVBfUEFSVElBTF9GTEFHID0gMzIsXG4gICAgICBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA9IDY0LFxuICAgICAgV1JBUF9BUllfRkxBRyA9IDEyOCxcbiAgICAgIFdSQVBfUkVBUkdfRkxBRyA9IDI1NixcbiAgICAgIFdSQVBfRkxJUF9GTEFHID0gNTEyO1xuXG4gIC8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL1xuICB2YXIgREVGQVVMVF9UUlVOQ19MRU5HVEggPSAzMCxcbiAgICAgIERFRkFVTFRfVFJVTkNfT01JU1NJT04gPSAnLi4uJztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG4gIHZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgICBIT1RfU1BBTiA9IDE2O1xuXG4gIC8qKiBVc2VkIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGxhenkgaXRlcmF0ZWVzLiAqL1xuICB2YXIgTEFaWV9GSUxURVJfRkxBRyA9IDEsXG4gICAgICBMQVpZX01BUF9GTEFHID0gMixcbiAgICAgIExBWllfV0hJTEVfRkxBRyA9IDM7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG4gIHZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgICAgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTEsXG4gICAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgICAgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbiAgdmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1LFxuICAgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDEsXG4gICAgICBIQUxGX01BWF9BUlJBWV9MRU5HVEggPSBNQVhfQVJSQVlfTEVOR1RIID4+PiAxO1xuXG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovXG4gIHZhciB3cmFwRmxhZ3MgPSBbXG4gICAgWydhcnknLCBXUkFQX0FSWV9GTEFHXSxcbiAgICBbJ2JpbmQnLCBXUkFQX0JJTkRfRkxBR10sXG4gICAgWydiaW5kS2V5JywgV1JBUF9CSU5EX0tFWV9GTEFHXSxcbiAgICBbJ2N1cnJ5JywgV1JBUF9DVVJSWV9GTEFHXSxcbiAgICBbJ2N1cnJ5UmlnaHQnLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUddLFxuICAgIFsnZmxpcCcsIFdSQVBfRkxJUF9GTEFHXSxcbiAgICBbJ3BhcnRpYWwnLCBXUkFQX1BBUlRJQUxfRkxBR10sXG4gICAgWydwYXJ0aWFsUmlnaHQnLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBR10sXG4gICAgWydyZWFyZycsIFdSQVBfUkVBUkdfRkxBR11cbiAgXTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgICAgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nLFxuICAgICAgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuICB2YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG4gIHZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICAgIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInXS9nLFxuICAgICAgcmVIYXNFc2NhcGVkSHRtbCA9IFJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSksXG4gICAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvLFxuICAgICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICovXG4gIHZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXG4gICAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nLFxuICAgICAgcmVUcmltU3RhcnQgPSAvXlxccysvLFxuICAgICAgcmVUcmltRW5kID0gL1xccyskLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezIsfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLztcblxuICAvKiogVXNlZCB0byBhc3NpZ24gZGVmYXVsdCBgY29udGV4dGAgb2JqZWN0IHByb3BlcnRpZXMuICovXG4gIHZhciBjb250ZXh0UHJvcHMgPSBbXG4gICAgJ0FycmF5JywgJ0J1ZmZlcicsICdEYXRhVmlldycsICdEYXRlJywgJ0Vycm9yJywgJ0Zsb2F0MzJBcnJheScsICdGbG9hdDY0QXJyYXknLFxuICAgICdGdW5jdGlvbicsICdJbnQ4QXJyYXknLCAnSW50MTZBcnJheScsICdJbnQzMkFycmF5JywgJ01hcCcsICdNYXRoJywgJ09iamVjdCcsXG4gICAgJ1Byb21pc2UnLCAnUmVnRXhwJywgJ1NldCcsICdTdHJpbmcnLCAnU3ltYm9sJywgJ1R5cGVFcnJvcicsICdVaW50OEFycmF5JyxcbiAgICAnVWludDhDbGFtcGVkQXJyYXknLCAnVWludDE2QXJyYXknLCAnVWludDMyQXJyYXknLCAnV2Vha01hcCcsXG4gICAgJ18nLCAnY2xlYXJUaW1lb3V0JywgJ2lzRmluaXRlJywgJ3BhcnNlSW50JywgJ3NldFRpbWVvdXQnXG4gIF07XG5cbiAgLyoqIFVzZWQgdG8gbWFrZSB0ZW1wbGF0ZSBzb3VyY2VVUkxzIGVhc2llciB0byBpZGVudGlmeS4gKi9cbiAgdmFyIHRlbXBsYXRlQ291bnRlciA9IC0xO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbiAgdmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG4gIHR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIHR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xuICB2YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuICBjbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICBjbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gbWFwIExhdGluIFVuaWNvZGUgbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLiAqL1xuICB2YXIgZGVidXJyZWRMZXR0ZXJzID0ge1xuICAgIC8vIExhdGluLTEgU3VwcGxlbWVudCBibG9jay5cbiAgICAnXFx4YzAnOiAnQScsICAnXFx4YzEnOiAnQScsICdcXHhjMic6ICdBJywgJ1xceGMzJzogJ0EnLCAnXFx4YzQnOiAnQScsICdcXHhjNSc6ICdBJyxcbiAgICAnXFx4ZTAnOiAnYScsICAnXFx4ZTEnOiAnYScsICdcXHhlMic6ICdhJywgJ1xceGUzJzogJ2EnLCAnXFx4ZTQnOiAnYScsICdcXHhlNSc6ICdhJyxcbiAgICAnXFx4YzcnOiAnQycsICAnXFx4ZTcnOiAnYycsXG4gICAgJ1xceGQwJzogJ0QnLCAgJ1xceGYwJzogJ2QnLFxuICAgICdcXHhjOCc6ICdFJywgICdcXHhjOSc6ICdFJywgJ1xceGNhJzogJ0UnLCAnXFx4Y2InOiAnRScsXG4gICAgJ1xceGU4JzogJ2UnLCAgJ1xceGU5JzogJ2UnLCAnXFx4ZWEnOiAnZScsICdcXHhlYic6ICdlJyxcbiAgICAnXFx4Y2MnOiAnSScsICAnXFx4Y2QnOiAnSScsICdcXHhjZSc6ICdJJywgJ1xceGNmJzogJ0knLFxuICAgICdcXHhlYyc6ICdpJywgICdcXHhlZCc6ICdpJywgJ1xceGVlJzogJ2knLCAnXFx4ZWYnOiAnaScsXG4gICAgJ1xceGQxJzogJ04nLCAgJ1xceGYxJzogJ24nLFxuICAgICdcXHhkMic6ICdPJywgICdcXHhkMyc6ICdPJywgJ1xceGQ0JzogJ08nLCAnXFx4ZDUnOiAnTycsICdcXHhkNic6ICdPJywgJ1xceGQ4JzogJ08nLFxuICAgICdcXHhmMic6ICdvJywgICdcXHhmMyc6ICdvJywgJ1xceGY0JzogJ28nLCAnXFx4ZjUnOiAnbycsICdcXHhmNic6ICdvJywgJ1xceGY4JzogJ28nLFxuICAgICdcXHhkOSc6ICdVJywgICdcXHhkYSc6ICdVJywgJ1xceGRiJzogJ1UnLCAnXFx4ZGMnOiAnVScsXG4gICAgJ1xceGY5JzogJ3UnLCAgJ1xceGZhJzogJ3UnLCAnXFx4ZmInOiAndScsICdcXHhmYyc6ICd1JyxcbiAgICAnXFx4ZGQnOiAnWScsICAnXFx4ZmQnOiAneScsICdcXHhmZic6ICd5JyxcbiAgICAnXFx4YzYnOiAnQWUnLCAnXFx4ZTYnOiAnYWUnLFxuICAgICdcXHhkZSc6ICdUaCcsICdcXHhmZSc6ICd0aCcsXG4gICAgJ1xceGRmJzogJ3NzJyxcbiAgICAvLyBMYXRpbiBFeHRlbmRlZC1BIGJsb2NrLlxuICAgICdcXHUwMTAwJzogJ0EnLCAgJ1xcdTAxMDInOiAnQScsICdcXHUwMTA0JzogJ0EnLFxuICAgICdcXHUwMTAxJzogJ2EnLCAgJ1xcdTAxMDMnOiAnYScsICdcXHUwMTA1JzogJ2EnLFxuICAgICdcXHUwMTA2JzogJ0MnLCAgJ1xcdTAxMDgnOiAnQycsICdcXHUwMTBhJzogJ0MnLCAnXFx1MDEwYyc6ICdDJyxcbiAgICAnXFx1MDEwNyc6ICdjJywgICdcXHUwMTA5JzogJ2MnLCAnXFx1MDEwYic6ICdjJywgJ1xcdTAxMGQnOiAnYycsXG4gICAgJ1xcdTAxMGUnOiAnRCcsICAnXFx1MDExMCc6ICdEJywgJ1xcdTAxMGYnOiAnZCcsICdcXHUwMTExJzogJ2QnLFxuICAgICdcXHUwMTEyJzogJ0UnLCAgJ1xcdTAxMTQnOiAnRScsICdcXHUwMTE2JzogJ0UnLCAnXFx1MDExOCc6ICdFJywgJ1xcdTAxMWEnOiAnRScsXG4gICAgJ1xcdTAxMTMnOiAnZScsICAnXFx1MDExNSc6ICdlJywgJ1xcdTAxMTcnOiAnZScsICdcXHUwMTE5JzogJ2UnLCAnXFx1MDExYic6ICdlJyxcbiAgICAnXFx1MDExYyc6ICdHJywgICdcXHUwMTFlJzogJ0cnLCAnXFx1MDEyMCc6ICdHJywgJ1xcdTAxMjInOiAnRycsXG4gICAgJ1xcdTAxMWQnOiAnZycsICAnXFx1MDExZic6ICdnJywgJ1xcdTAxMjEnOiAnZycsICdcXHUwMTIzJzogJ2cnLFxuICAgICdcXHUwMTI0JzogJ0gnLCAgJ1xcdTAxMjYnOiAnSCcsICdcXHUwMTI1JzogJ2gnLCAnXFx1MDEyNyc6ICdoJyxcbiAgICAnXFx1MDEyOCc6ICdJJywgICdcXHUwMTJhJzogJ0knLCAnXFx1MDEyYyc6ICdJJywgJ1xcdTAxMmUnOiAnSScsICdcXHUwMTMwJzogJ0knLFxuICAgICdcXHUwMTI5JzogJ2knLCAgJ1xcdTAxMmInOiAnaScsICdcXHUwMTJkJzogJ2knLCAnXFx1MDEyZic6ICdpJywgJ1xcdTAxMzEnOiAnaScsXG4gICAgJ1xcdTAxMzQnOiAnSicsICAnXFx1MDEzNSc6ICdqJyxcbiAgICAnXFx1MDEzNic6ICdLJywgICdcXHUwMTM3JzogJ2snLCAnXFx1MDEzOCc6ICdrJyxcbiAgICAnXFx1MDEzOSc6ICdMJywgICdcXHUwMTNiJzogJ0wnLCAnXFx1MDEzZCc6ICdMJywgJ1xcdTAxM2YnOiAnTCcsICdcXHUwMTQxJzogJ0wnLFxuICAgICdcXHUwMTNhJzogJ2wnLCAgJ1xcdTAxM2MnOiAnbCcsICdcXHUwMTNlJzogJ2wnLCAnXFx1MDE0MCc6ICdsJywgJ1xcdTAxNDInOiAnbCcsXG4gICAgJ1xcdTAxNDMnOiAnTicsICAnXFx1MDE0NSc6ICdOJywgJ1xcdTAxNDcnOiAnTicsICdcXHUwMTRhJzogJ04nLFxuICAgICdcXHUwMTQ0JzogJ24nLCAgJ1xcdTAxNDYnOiAnbicsICdcXHUwMTQ4JzogJ24nLCAnXFx1MDE0Yic6ICduJyxcbiAgICAnXFx1MDE0Yyc6ICdPJywgICdcXHUwMTRlJzogJ08nLCAnXFx1MDE1MCc6ICdPJyxcbiAgICAnXFx1MDE0ZCc6ICdvJywgICdcXHUwMTRmJzogJ28nLCAnXFx1MDE1MSc6ICdvJyxcbiAgICAnXFx1MDE1NCc6ICdSJywgICdcXHUwMTU2JzogJ1InLCAnXFx1MDE1OCc6ICdSJyxcbiAgICAnXFx1MDE1NSc6ICdyJywgICdcXHUwMTU3JzogJ3InLCAnXFx1MDE1OSc6ICdyJyxcbiAgICAnXFx1MDE1YSc6ICdTJywgICdcXHUwMTVjJzogJ1MnLCAnXFx1MDE1ZSc6ICdTJywgJ1xcdTAxNjAnOiAnUycsXG4gICAgJ1xcdTAxNWInOiAncycsICAnXFx1MDE1ZCc6ICdzJywgJ1xcdTAxNWYnOiAncycsICdcXHUwMTYxJzogJ3MnLFxuICAgICdcXHUwMTYyJzogJ1QnLCAgJ1xcdTAxNjQnOiAnVCcsICdcXHUwMTY2JzogJ1QnLFxuICAgICdcXHUwMTYzJzogJ3QnLCAgJ1xcdTAxNjUnOiAndCcsICdcXHUwMTY3JzogJ3QnLFxuICAgICdcXHUwMTY4JzogJ1UnLCAgJ1xcdTAxNmEnOiAnVScsICdcXHUwMTZjJzogJ1UnLCAnXFx1MDE2ZSc6ICdVJywgJ1xcdTAxNzAnOiAnVScsICdcXHUwMTcyJzogJ1UnLFxuICAgICdcXHUwMTY5JzogJ3UnLCAgJ1xcdTAxNmInOiAndScsICdcXHUwMTZkJzogJ3UnLCAnXFx1MDE2Zic6ICd1JywgJ1xcdTAxNzEnOiAndScsICdcXHUwMTczJzogJ3UnLFxuICAgICdcXHUwMTc0JzogJ1cnLCAgJ1xcdTAxNzUnOiAndycsXG4gICAgJ1xcdTAxNzYnOiAnWScsICAnXFx1MDE3Nyc6ICd5JywgJ1xcdTAxNzgnOiAnWScsXG4gICAgJ1xcdTAxNzknOiAnWicsICAnXFx1MDE3Yic6ICdaJywgJ1xcdTAxN2QnOiAnWicsXG4gICAgJ1xcdTAxN2EnOiAneicsICAnXFx1MDE3Yyc6ICd6JywgJ1xcdTAxN2UnOiAneicsXG4gICAgJ1xcdTAxMzInOiAnSUonLCAnXFx1MDEzMyc6ICdpaicsXG4gICAgJ1xcdTAxNTInOiAnT2UnLCAnXFx1MDE1Myc6ICdvZScsXG4gICAgJ1xcdTAxNDknOiBcIiduXCIsICdcXHUwMTdmJzogJ3MnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbiAgdmFyIGh0bWxFc2NhcGVzID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjMzk7J1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuICovXG4gIHZhciBodG1sVW5lc2NhcGVzID0ge1xuICAgICcmYW1wOyc6ICcmJyxcbiAgICAnJmx0Oyc6ICc8JyxcbiAgICAnJmd0Oyc6ICc+JyxcbiAgICAnJnF1b3Q7JzogJ1wiJyxcbiAgICAnJiMzOTsnOiBcIidcIlxuICB9O1xuXG4gIC8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL1xuICB2YXIgc3RyaW5nRXNjYXBlcyA9IHtcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICBcIidcIjogXCInXCIsXG4gICAgJ1xcbic6ICduJyxcbiAgICAnXFxyJzogJ3InLFxuICAgICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgICAnXFx1MjAyOSc6ICd1MjAyOSdcbiAgfTtcblxuICAvKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xuICB2YXIgZnJlZVBhcnNlRmxvYXQgPSBwYXJzZUZsb2F0LFxuICAgICAgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG4gIHZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4gIC8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xuICB2YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xuICB2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xuICB2YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4gIC8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG4gIHZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuICAvKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbiAgdmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgICBpZiAodHlwZXMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgICAgfVxuXG4gICAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH0oKSk7XG5cbiAgLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG5vZGVJc0FycmF5QnVmZmVyID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcixcbiAgICAgIG5vZGVJc0RhdGUgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0RhdGUsXG4gICAgICBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcCxcbiAgICAgIG5vZGVJc1JlZ0V4cCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzUmVnRXhwLFxuICAgICAgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQsXG4gICAgICBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gICAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlQWdncmVnYXRvcmAgZm9yIGFycmF5cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlBZ2dyZWdhdG9yKGFycmF5LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RWFjaFJpZ2h0KGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5ldmVyeWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFdmVyeShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmICghcHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAqIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICAgIH1cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZVJpZ2h0YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZVJpZ2h0KGFycmF5LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVstLWxlbmd0aF07XG4gICAgfVxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAqIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgdmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5zcGxpdCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGFuIEFTQ0lJIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlXb3JkcyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlQXNjaWlXb3JkKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZmluZEtleWAgYW5kIGBfLmZpbmRMYXN0S2V5YCxcbiAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYFxuICAgKiB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmb3VuZCBlbGVtZW50IG9yIGl0cyBrZXksIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEtleShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGVhY2hGdW5jKSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJlc3VsdCA9IGtleTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZldpdGgoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZWFuYCBhbmQgYF8ubWVhbkJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlTWVhbihhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuIGxlbmd0aCA/IChiYXNlU3VtKGFycmF5LCBpdGVyYXRlZSkgLyBsZW5ndGgpIDogTkFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBpbml0QWNjdW0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3Qgb3IgbGFzdCBlbGVtZW50IG9mXG4gICAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgICA6IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gICAqIHNvcnQgb3JkZXIgb2YgYGFycmF5YCBhbmQgcmVwbGFjZXMgY3JpdGVyaWEgb2JqZWN0cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmdcbiAgICogdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIGFycmF5LnNvcnQoY29tcGFyZXIpO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgYXJyYXlbbGVuZ3RoXSA9IGFycmF5W2xlbmd0aF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zdW1gIGFuZCBgXy5zdW1CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU3VtKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciByZXN1bHQsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSk7XG4gICAgICBpZiAoY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gY3VycmVudCA6IChyZXN1bHQgKyBjdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gICAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9QYWlyc2AgYW5kIGBfLnRvUGFpcnNJbmAgd2hpY2ggY3JlYXRlcyBhbiBhcnJheVxuICAgKiBvZiBrZXktdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVG9QYWlycyhvYmplY3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBba2V5LCBvYmplY3Rba2V5XV07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy52YWx1ZXNgIGFuZCBgXy52YWx1ZXNJbmAgd2hpY2ggY3JlYXRlcyBhblxuICAgKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAgICogb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VWYWx1ZXMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICAgIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltU3RhcnRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc1N0YXJ0SW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBgcGxhY2Vob2xkZXJgIG9jY3VycmVuY2VzIGluIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciBjb3VudC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvdW50SG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXN1bHQgPSAwO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoYXJyYXlbbGVuZ3RoXSA9PT0gcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgKytyZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy5kZWJ1cnJgIHRvIGNvbnZlcnQgTGF0aW4tMSBTdXBwbGVtZW50IGFuZCBMYXRpbiBFeHRlbmRlZC1BXG4gICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxldHRlciBUaGUgbWF0Y2hlZCBsZXR0ZXIgdG8gZGVidXJyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBsZXR0ZXIuXG4gICAqL1xuICB2YXIgZGVidXJyTGV0dGVyID0gYmFzZVByb3BlcnR5T2YoZGVidXJyZWRMZXR0ZXJzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIGVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRlbXBsYXRlYCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZVN0cmluZ0NoYXIoY2hyKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIGEgd29yZCBjb21wb3NlZCBvZiBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSB3b3JkIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlV29yZChzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlV29yZC50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICAgIHZhciBkYXRhLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICAgIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBgcGxhY2Vob2xkZXJgIGVsZW1lbnRzIGluIGBhcnJheWAgd2l0aCBhbiBpbnRlcm5hbCBwbGFjZWhvbGRlclxuICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGVpciBpbmRleGVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZUhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAodmFsdWUgPT09IHBsYWNlaG9sZGVyIHx8IHZhbHVlID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBQTEFDRUhPTERFUjtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIGtleSA9PSAnX19wcm90b19fJ1xuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogb2JqZWN0W2tleV07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gaXRzIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvUGFpcnMoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBbdmFsdWUsIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5sYXN0SW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggKyAxO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udW5lc2NhcGVgIHRvIGNvbnZlcnQgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byB1bmVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciB1bmVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbFVuZXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gICAgd2hpbGUgKHJlVW5pY29kZS50ZXN0KHN0cmluZykpIHtcbiAgICAgICsrcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhIFVuaWNvZGUgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGVXb3JkKSB8fCBbXTtcbiAgfVxuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdXNpbmcgdGhlIGBjb250ZXh0YCBvYmplY3QuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDEuMS4wXG4gICAqIEBjYXRlZ29yeSBVdGlsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29udGV4dD1yb290XSBUaGUgY29udGV4dCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBhIG5ldyBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy5taXhpbih7ICdmb28nOiBfLmNvbnN0YW50KCdmb28nKSB9KTtcbiAgICpcbiAgICogdmFyIGxvZGFzaCA9IF8ucnVuSW5Db250ZXh0KCk7XG4gICAqIGxvZGFzaC5taXhpbih7ICdiYXInOiBsb2Rhc2guY29uc3RhbnQoJ2JhcicpIH0pO1xuICAgKlxuICAgKiBfLmlzRnVuY3Rpb24oXy5mb28pO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqIF8uaXNGdW5jdGlvbihfLmJhcik7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5mb28pO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guYmFyKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiAvLyBDcmVhdGUgYSBzdXBlZC11cCBgZGVmZXJgIGluIE5vZGUuanMuXG4gICAqIHZhciBkZWZlciA9IF8ucnVuSW5Db250ZXh0KHsgJ3NldFRpbWVvdXQnOiBzZXRJbW1lZGlhdGUgfSkuZGVmZXI7XG4gICAqL1xuICB2YXIgcnVuSW5Db250ZXh0ID0gKGZ1bmN0aW9uIHJ1bkluQ29udGV4dChjb250ZXh0KSB7XG4gICAgY29udGV4dCA9IGNvbnRleHQgPT0gbnVsbCA/IHJvb3QgOiBfLmRlZmF1bHRzKHJvb3QuT2JqZWN0KCksIGNvbnRleHQsIF8ucGljayhyb290LCBjb250ZXh0UHJvcHMpKTtcblxuICAgIC8qKiBCdWlsdC1pbiBjb25zdHJ1Y3RvciByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBBcnJheSA9IGNvbnRleHQuQXJyYXksXG4gICAgICAgIERhdGUgPSBjb250ZXh0LkRhdGUsXG4gICAgICAgIEVycm9yID0gY29udGV4dC5FcnJvcixcbiAgICAgICAgRnVuY3Rpb24gPSBjb250ZXh0LkZ1bmN0aW9uLFxuICAgICAgICBNYXRoID0gY29udGV4dC5NYXRoLFxuICAgICAgICBPYmplY3QgPSBjb250ZXh0Lk9iamVjdCxcbiAgICAgICAgUmVnRXhwID0gY29udGV4dC5SZWdFeHAsXG4gICAgICAgIFN0cmluZyA9IGNvbnRleHQuU3RyaW5nLFxuICAgICAgICBUeXBlRXJyb3IgPSBjb250ZXh0LlR5cGVFcnJvcjtcblxuICAgIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICAgICAgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG4gICAgdmFyIGNvcmVKc0RhdGEgPSBjb250ZXh0WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbiAgICB2YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgICAvKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xuICAgIHZhciBpZENvdW50ZXIgPSAwO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbiAgICB2YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gICAgICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAgICAgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAgICAgKiBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgdmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG4gICAgdmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYF9gIHJlZmVyZW5jZSBpbiBgXy5ub0NvbmZsaWN0YC4gKi9cbiAgICB2YXIgb2xkRGFzaCA9IHJvb3QuXztcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG4gICAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgICAgIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbiAgICApO1xuXG4gICAgLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyBjb250ZXh0LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgU3ltYm9sID0gY29udGV4dC5TeW1ib2wsXG4gICAgICAgIFVpbnQ4QXJyYXkgPSBjb250ZXh0LlVpbnQ4QXJyYXksXG4gICAgICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkLFxuICAgICAgICBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSxcbiAgICAgICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSxcbiAgICAgICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgICAgICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2UsXG4gICAgICAgIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1JdGVyYXRvciA9IFN5bWJvbCA/IFN5bWJvbC5pdGVyYXRvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgICAgICBmdW5jKHt9LCAnJywge30pO1xuICAgICAgICByZXR1cm4gZnVuYztcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSgpKTtcblxuICAgIC8qKiBNb2NrZWQgYnVpbHQtaW5zLiAqL1xuICAgIHZhciBjdHhDbGVhclRpbWVvdXQgPSBjb250ZXh0LmNsZWFyVGltZW91dCAhPT0gcm9vdC5jbGVhclRpbWVvdXQgJiYgY29udGV4dC5jbGVhclRpbWVvdXQsXG4gICAgICAgIGN0eE5vdyA9IERhdGUgJiYgRGF0ZS5ub3cgIT09IHJvb3QuRGF0ZS5ub3cgJiYgRGF0ZS5ub3csXG4gICAgICAgIGN0eFNldFRpbWVvdXQgPSBjb250ZXh0LnNldFRpbWVvdXQgIT09IHJvb3Quc2V0VGltZW91dCAmJiBjb250ZXh0LnNldFRpbWVvdXQ7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG4gICAgdmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgICAgIG5hdGl2ZUZsb29yID0gTWF0aC5mbG9vcixcbiAgICAgICAgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG4gICAgICAgIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBuYXRpdmVJc0Zpbml0ZSA9IGNvbnRleHQuaXNGaW5pdGUsXG4gICAgICAgIG5hdGl2ZUpvaW4gPSBhcnJheVByb3RvLmpvaW4sXG4gICAgICAgIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpLFxuICAgICAgICBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICAgICAgbmF0aXZlTWluID0gTWF0aC5taW4sXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93LFxuICAgICAgICBuYXRpdmVQYXJzZUludCA9IGNvbnRleHQucGFyc2VJbnQsXG4gICAgICAgIG5hdGl2ZVJhbmRvbSA9IE1hdGgucmFuZG9tLFxuICAgICAgICBuYXRpdmVSZXZlcnNlID0gYXJyYXlQcm90by5yZXZlcnNlO1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xuICAgIHZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShjb250ZXh0LCAnRGF0YVZpZXcnKSxcbiAgICAgICAgTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdNYXAnKSxcbiAgICAgICAgUHJvbWlzZSA9IGdldE5hdGl2ZShjb250ZXh0LCAnUHJvbWlzZScpLFxuICAgICAgICBTZXQgPSBnZXROYXRpdmUoY29udGV4dCwgJ1NldCcpLFxuICAgICAgICBXZWFrTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdXZWFrTWFwJyksXG4gICAgICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuICAgIC8qKiBVc2VkIHRvIHN0b3JlIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICAgIHZhciBtZXRhTWFwID0gV2Vha01hcCAmJiBuZXcgV2Vha01hcDtcblxuICAgIC8qKiBVc2VkIHRvIGxvb2t1cCB1bm1pbmlmaWVkIGZ1bmN0aW9uIG5hbWVzLiAqL1xuICAgIHZhciByZWFsTmFtZXMgPSB7fTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG4gICAgdmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICAgICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgICAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4gICAgLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG4gICAgdmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBpbXBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMuIE1ldGhvZHMgdGhhdCBvcGVyYXRlIG9uIGFuZCByZXR1cm4gYXJyYXlzLCBjb2xsZWN0aW9ucyxcbiAgICAgKiBhbmQgZnVuY3Rpb25zIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyLiBNZXRob2RzIHRoYXQgcmV0cmlldmUgYSBzaW5nbGUgdmFsdWVcbiAgICAgKiBvciBtYXkgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBlbmQgdGhlIGNoYWluIHNlcXVlbmNlXG4gICAgICogYW5kIHJldHVybiB0aGUgdW53cmFwcGVkIHZhbHVlLiBPdGhlcndpc2UsIHRoZSB2YWx1ZSBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogRXhwbGljaXQgY2hhaW4gc2VxdWVuY2VzLCB3aGljaCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIGBfI3ZhbHVlYCwgbWF5IGJlXG4gICAgICogZW5hYmxlZCB1c2luZyBgXy5jaGFpbmAuXG4gICAgICpcbiAgICAgKiBUaGUgZXhlY3V0aW9uIG9mIGNoYWluZWQgbWV0aG9kcyBpcyBsYXp5LCB0aGF0IGlzLCBpdCdzIGRlZmVycmVkIHVudGlsXG4gICAgICogYF8jdmFsdWVgIGlzIGltcGxpY2l0bHkgb3IgZXhwbGljaXRseSBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBMYXp5IGV2YWx1YXRpb24gYWxsb3dzIHNldmVyYWwgbWV0aG9kcyB0byBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbi5cbiAgICAgKiBTaG9ydGN1dCBmdXNpb24gaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1lcmdlIGl0ZXJhdGVlIGNhbGxzOyB0aGlzIGF2b2lkc1xuICAgICAqIHRoZSBjcmVhdGlvbiBvZiBpbnRlcm1lZGlhdGUgYXJyYXlzIGFuZCBjYW4gZ3JlYXRseSByZWR1Y2UgdGhlIG51bWJlciBvZlxuICAgICAqIGl0ZXJhdGVlIGV4ZWN1dGlvbnMuIFNlY3Rpb25zIG9mIGEgY2hhaW4gc2VxdWVuY2UgcXVhbGlmeSBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaWYgdGhlIHNlY3Rpb24gaXMgYXBwbGllZCB0byBhbiBhcnJheSBhbmQgaXRlcmF0ZWVzIGFjY2VwdCBvbmx5XG4gICAgICogb25lIGFyZ3VtZW50LiBUaGUgaGV1cmlzdGljIGZvciB3aGV0aGVyIGEgc2VjdGlvbiBxdWFsaWZpZXMgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlzIHN1YmplY3QgdG8gY2hhbmdlLlxuICAgICAqXG4gICAgICogQ2hhaW5pbmcgaXMgc3VwcG9ydGVkIGluIGN1c3RvbSBidWlsZHMgYXMgbG9uZyBhcyB0aGUgYF8jdmFsdWVgIG1ldGhvZCBpc1xuICAgICAqIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLlxuICAgICAqXG4gICAgICogSW4gYWRkaXRpb24gdG8gbG9kYXNoIG1ldGhvZHMsIHdyYXBwZXJzIGhhdmUgYEFycmF5YCBhbmQgYFN0cmluZ2AgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBBcnJheWAgbWV0aG9kcyBhcmU6XG4gICAgICogYGNvbmNhdGAsIGBqb2luYCwgYHBvcGAsIGBwdXNoYCwgYHNoaWZ0YCwgYHNvcnRgLCBgc3BsaWNlYCwgYW5kIGB1bnNoaWZ0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYFN0cmluZ2AgbWV0aG9kcyBhcmU6XG4gICAgICogYHJlcGxhY2VgIGFuZCBgc3BsaXRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24gYXJlOlxuICAgICAqIGBhdGAsIGBjb21wYWN0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGRyb3BXaGlsZWAsIGBmaWx0ZXJgLCBgZmluZGAsXG4gICAgICogYGZpbmRMYXN0YCwgYGhlYWRgLCBgaW5pdGlhbGAsIGBsYXN0YCwgYG1hcGAsIGByZWplY3RgLCBgcmV2ZXJzZWAsIGBzbGljZWAsXG4gICAgICogYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYW5kIGB0b0FycmF5YFxuICAgICAqXG4gICAgICogVGhlIGNoYWluYWJsZSB3cmFwcGVyIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhZnRlcmAsIGBhcnlgLCBgYXNzaWduYCwgYGFzc2lnbkluYCwgYGFzc2lnbkluV2l0aGAsIGBhc3NpZ25XaXRoYCwgYGF0YCxcbiAgICAgKiBgYmVmb3JlYCwgYGJpbmRgLCBgYmluZEFsbGAsIGBiaW5kS2V5YCwgYGNhc3RBcnJheWAsIGBjaGFpbmAsIGBjaHVua2AsXG4gICAgICogYGNvbW1pdGAsIGBjb21wYWN0YCwgYGNvbmNhdGAsIGBjb25mb3Jtc2AsIGBjb25zdGFudGAsIGBjb3VudEJ5YCwgYGNyZWF0ZWAsXG4gICAgICogYGN1cnJ5YCwgYGRlYm91bmNlYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBkZWZlcmAsIGBkZWxheWAsXG4gICAgICogYGRpZmZlcmVuY2VgLCBgZGlmZmVyZW5jZUJ5YCwgYGRpZmZlcmVuY2VXaXRoYCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCxcbiAgICAgKiBgZHJvcFJpZ2h0V2hpbGVgLCBgZHJvcFdoaWxlYCwgYGV4dGVuZGAsIGBleHRlbmRXaXRoYCwgYGZpbGxgLCBgZmlsdGVyYCxcbiAgICAgKiBgZmxhdE1hcGAsIGBmbGF0TWFwRGVlcGAsIGBmbGF0TWFwRGVwdGhgLCBgZmxhdHRlbmAsIGBmbGF0dGVuRGVlcGAsXG4gICAgICogYGZsYXR0ZW5EZXB0aGAsIGBmbGlwYCwgYGZsb3dgLCBgZmxvd1JpZ2h0YCwgYGZyb21QYWlyc2AsIGBmdW5jdGlvbnNgLFxuICAgICAqIGBmdW5jdGlvbnNJbmAsIGBncm91cEJ5YCwgYGluaXRpYWxgLCBgaW50ZXJzZWN0aW9uYCwgYGludGVyc2VjdGlvbkJ5YCxcbiAgICAgKiBgaW50ZXJzZWN0aW9uV2l0aGAsIGBpbnZlcnRgLCBgaW52ZXJ0QnlgLCBgaW52b2tlTWFwYCwgYGl0ZXJhdGVlYCwgYGtleUJ5YCxcbiAgICAgKiBga2V5c2AsIGBrZXlzSW5gLCBgbWFwYCwgYG1hcEtleXNgLCBgbWFwVmFsdWVzYCwgYG1hdGNoZXNgLCBgbWF0Y2hlc1Byb3BlcnR5YCxcbiAgICAgKiBgbWVtb2l6ZWAsIGBtZXJnZWAsIGBtZXJnZVdpdGhgLCBgbWV0aG9kYCwgYG1ldGhvZE9mYCwgYG1peGluYCwgYG5lZ2F0ZWAsXG4gICAgICogYG50aEFyZ2AsIGBvbWl0YCwgYG9taXRCeWAsIGBvbmNlYCwgYG9yZGVyQnlgLCBgb3ZlcmAsIGBvdmVyQXJnc2AsXG4gICAgICogYG92ZXJFdmVyeWAsIGBvdmVyU29tZWAsIGBwYXJ0aWFsYCwgYHBhcnRpYWxSaWdodGAsIGBwYXJ0aXRpb25gLCBgcGlja2AsXG4gICAgICogYHBpY2tCeWAsIGBwbGFudGAsIGBwcm9wZXJ0eWAsIGBwcm9wZXJ0eU9mYCwgYHB1bGxgLCBgcHVsbEFsbGAsIGBwdWxsQWxsQnlgLFxuICAgICAqIGBwdWxsQWxsV2l0aGAsIGBwdWxsQXRgLCBgcHVzaGAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlYXJnYCwgYHJlamVjdGAsXG4gICAgICogYHJlbW92ZWAsIGByZXN0YCwgYHJldmVyc2VgLCBgc2FtcGxlU2l6ZWAsIGBzZXRgLCBgc2V0V2l0aGAsIGBzaHVmZmxlYCxcbiAgICAgKiBgc2xpY2VgLCBgc29ydGAsIGBzb3J0QnlgLCBgc3BsaWNlYCwgYHNwcmVhZGAsIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYHRhcGAsIGB0aHJvdHRsZWAsIGB0aHJ1YCwgYHRvQXJyYXlgLFxuICAgICAqIGB0b1BhaXJzYCwgYHRvUGFpcnNJbmAsIGB0b1BhdGhgLCBgdG9QbGFpbk9iamVjdGAsIGB0cmFuc2Zvcm1gLCBgdW5hcnlgLFxuICAgICAqIGB1bmlvbmAsIGB1bmlvbkJ5YCwgYHVuaW9uV2l0aGAsIGB1bmlxYCwgYHVuaXFCeWAsIGB1bmlxV2l0aGAsIGB1bnNldGAsXG4gICAgICogYHVuc2hpZnRgLCBgdW56aXBgLCBgdW56aXBXaXRoYCwgYHVwZGF0ZWAsIGB1cGRhdGVXaXRoYCwgYHZhbHVlc2AsXG4gICAgICogYHZhbHVlc0luYCwgYHdpdGhvdXRgLCBgd3JhcGAsIGB4b3JgLCBgeG9yQnlgLCBgeG9yV2l0aGAsIGB6aXBgLFxuICAgICAqIGB6aXBPYmplY3RgLCBgemlwT2JqZWN0RGVlcGAsIGFuZCBgemlwV2l0aGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBhcmUgKipub3QqKiBjaGFpbmFibGUgYnkgZGVmYXVsdCBhcmU6XG4gICAgICogYGFkZGAsIGBhdHRlbXB0YCwgYGNhbWVsQ2FzZWAsIGBjYXBpdGFsaXplYCwgYGNlaWxgLCBgY2xhbXBgLCBgY2xvbmVgLFxuICAgICAqIGBjbG9uZURlZXBgLCBgY2xvbmVEZWVwV2l0aGAsIGBjbG9uZVdpdGhgLCBgY29uZm9ybXNUb2AsIGBkZWJ1cnJgLFxuICAgICAqIGBkZWZhdWx0VG9gLCBgZGl2aWRlYCwgYGVhY2hgLCBgZWFjaFJpZ2h0YCwgYGVuZHNXaXRoYCwgYGVxYCwgYGVzY2FwZWAsXG4gICAgICogYGVzY2FwZVJlZ0V4cGAsIGBldmVyeWAsIGBmaW5kYCwgYGZpbmRJbmRleGAsIGBmaW5kS2V5YCwgYGZpbmRMYXN0YCxcbiAgICAgKiBgZmluZExhc3RJbmRleGAsIGBmaW5kTGFzdEtleWAsIGBmaXJzdGAsIGBmbG9vcmAsIGBmb3JFYWNoYCwgYGZvckVhY2hSaWdodGAsXG4gICAgICogYGZvckluYCwgYGZvckluUmlnaHRgLCBgZm9yT3duYCwgYGZvck93blJpZ2h0YCwgYGdldGAsIGBndGAsIGBndGVgLCBgaGFzYCxcbiAgICAgKiBgaGFzSW5gLCBgaGVhZGAsIGBpZGVudGl0eWAsIGBpbmNsdWRlc2AsIGBpbmRleE9mYCwgYGluUmFuZ2VgLCBgaW52b2tlYCxcbiAgICAgKiBgaXNBcmd1bWVudHNgLCBgaXNBcnJheWAsIGBpc0FycmF5QnVmZmVyYCwgYGlzQXJyYXlMaWtlYCwgYGlzQXJyYXlMaWtlT2JqZWN0YCxcbiAgICAgKiBgaXNCb29sZWFuYCwgYGlzQnVmZmVyYCwgYGlzRGF0ZWAsIGBpc0VsZW1lbnRgLCBgaXNFbXB0eWAsIGBpc0VxdWFsYCxcbiAgICAgKiBgaXNFcXVhbFdpdGhgLCBgaXNFcnJvcmAsIGBpc0Zpbml0ZWAsIGBpc0Z1bmN0aW9uYCwgYGlzSW50ZWdlcmAsIGBpc0xlbmd0aGAsXG4gICAgICogYGlzTWFwYCwgYGlzTWF0Y2hgLCBgaXNNYXRjaFdpdGhgLCBgaXNOYU5gLCBgaXNOYXRpdmVgLCBgaXNOaWxgLCBgaXNOdWxsYCxcbiAgICAgKiBgaXNOdW1iZXJgLCBgaXNPYmplY3RgLCBgaXNPYmplY3RMaWtlYCwgYGlzUGxhaW5PYmplY3RgLCBgaXNSZWdFeHBgLFxuICAgICAqIGBpc1NhZmVJbnRlZ2VyYCwgYGlzU2V0YCwgYGlzU3RyaW5nYCwgYGlzVW5kZWZpbmVkYCwgYGlzVHlwZWRBcnJheWAsXG4gICAgICogYGlzV2Vha01hcGAsIGBpc1dlYWtTZXRgLCBgam9pbmAsIGBrZWJhYkNhc2VgLCBgbGFzdGAsIGBsYXN0SW5kZXhPZmAsXG4gICAgICogYGxvd2VyQ2FzZWAsIGBsb3dlckZpcnN0YCwgYGx0YCwgYGx0ZWAsIGBtYXhgLCBgbWF4QnlgLCBgbWVhbmAsIGBtZWFuQnlgLFxuICAgICAqIGBtaW5gLCBgbWluQnlgLCBgbXVsdGlwbHlgLCBgbm9Db25mbGljdGAsIGBub29wYCwgYG5vd2AsIGBudGhgLCBgcGFkYCxcbiAgICAgKiBgcGFkRW5kYCwgYHBhZFN0YXJ0YCwgYHBhcnNlSW50YCwgYHBvcGAsIGByYW5kb21gLCBgcmVkdWNlYCwgYHJlZHVjZVJpZ2h0YCxcbiAgICAgKiBgcmVwZWF0YCwgYHJlc3VsdGAsIGByb3VuZGAsIGBydW5JbkNvbnRleHRgLCBgc2FtcGxlYCwgYHNoaWZ0YCwgYHNpemVgLFxuICAgICAqIGBzbmFrZUNhc2VgLCBgc29tZWAsIGBzb3J0ZWRJbmRleGAsIGBzb3J0ZWRJbmRleEJ5YCwgYHNvcnRlZExhc3RJbmRleGAsXG4gICAgICogYHNvcnRlZExhc3RJbmRleEJ5YCwgYHN0YXJ0Q2FzZWAsIGBzdGFydHNXaXRoYCwgYHN0dWJBcnJheWAsIGBzdHViRmFsc2VgLFxuICAgICAqIGBzdHViT2JqZWN0YCwgYHN0dWJTdHJpbmdgLCBgc3R1YlRydWVgLCBgc3VidHJhY3RgLCBgc3VtYCwgYHN1bUJ5YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdGltZXNgLCBgdG9GaW5pdGVgLCBgdG9JbnRlZ2VyYCwgYHRvSlNPTmAsIGB0b0xlbmd0aGAsXG4gICAgICogYHRvTG93ZXJgLCBgdG9OdW1iZXJgLCBgdG9TYWZlSW50ZWdlcmAsIGB0b1N0cmluZ2AsIGB0b1VwcGVyYCwgYHRyaW1gLFxuICAgICAqIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGB0cnVuY2F0ZWAsIGB1bmVzY2FwZWAsIGB1bmlxdWVJZGAsIGB1cHBlckNhc2VgLFxuICAgICAqIGB1cHBlckZpcnN0YCwgYHZhbHVlYCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBuYW1lIF9cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcCBpbiBhIGBsb2Rhc2hgIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMiwgM10pO1xuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhbiB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogd3JhcHBlZC5yZWR1Y2UoXy5hZGQpO1xuICAgICAqIC8vID0+IDZcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYSB3cmFwcGVkIHZhbHVlLlxuICAgICAqIHZhciBzcXVhcmVzID0gd3JhcHBlZC5tYXAoc3F1YXJlKTtcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMudmFsdWUoKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxvZGFzaCh2YWx1ZSkge1xuICAgICAgaWYgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzQXJyYXkodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTG9kYXNoV3JhcHBlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ19fd3JhcHBlZF9fJykpIHtcbiAgICAgICAgICByZXR1cm4gd3JhcHBlckNsb25lKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gICAgICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICAgICAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgICAgIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBmdW5jdGlvbiB3aG9zZSBwcm90b3R5cGUgY2hhaW4gc2VxdWVuY2Ugd3JhcHBlcnMgaW5oZXJpdCBmcm9tLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTG9kYXNoKCkge1xuICAgICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBjb25zdHJ1Y3RvciBmb3IgY3JlYXRpbmcgYGxvZGFzaGAgd3JhcHBlciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NoYWluQWxsXSBFbmFibGUgZXhwbGljaXQgbWV0aG9kIGNoYWluIHNlcXVlbmNlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMb2Rhc2hXcmFwcGVyKHZhbHVlLCBjaGFpbkFsbCkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2NoYWluX18gPSAhIWNoYWluQWxsO1xuICAgICAgdGhpcy5fX2luZGV4X18gPSAwO1xuICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gICAgICogZW1iZWRkZWQgUnVieSAoRVJCKSBhcyB3ZWxsIGFzIEVTMjAxNSB0ZW1wbGF0ZSBzdHJpbmdzLiBDaGFuZ2UgdGhlXG4gICAgICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGJlIEhUTUwtZXNjYXBlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXNjYXBlJzogcmVFc2NhcGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2V2YWx1YXRlJzogcmVFdmFsdWF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGluamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhIG9iamVjdCBpbiB0aGUgdGVtcGxhdGUgdGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICAndmFyaWFibGUnOiAnJyxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge09iamVjdH1cbiAgICAgICAqL1xuICAgICAgJ2ltcG9ydHMnOiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgICAgICovXG4gICAgICAgICdfJzogbG9kYXNoXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB3cmFwcGVycyBhcmUgaW5zdGFuY2VzIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBsb2Rhc2gucHJvdG90eXBlID0gYmFzZUxvZGFzaC5wcm90b3R5cGU7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGxvZGFzaDtcblxuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMb2Rhc2hXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGxhenkgd3JhcHBlciBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgbGF6eSBldmFsdWF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExhenlXcmFwcGVyKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fZGlyX18gPSAxO1xuICAgICAgdGhpcy5fX2ZpbHRlcmVkX18gPSBmYWxzZTtcbiAgICAgIHRoaXMuX19pdGVyYXRlZXNfXyA9IFtdO1xuICAgICAgdGhpcy5fX3Rha2VDb3VudF9fID0gTUFYX0FSUkFZX0xFTkdUSDtcbiAgICAgIHRoaXMuX192aWV3c19fID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBsYXp5IHdyYXBwZXIgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbG9uZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5Q2xvbmUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMuX193cmFwcGVkX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9fZGlyX18gPSB0aGlzLl9fZGlyX187XG4gICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdGhpcy5fX2ZpbHRlcmVkX187XG4gICAgICByZXN1bHQuX19pdGVyYXRlZXNfXyA9IGNvcHlBcnJheSh0aGlzLl9faXRlcmF0ZWVzX18pO1xuICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSB0aGlzLl9fdGFrZUNvdW50X187XG4gICAgICByZXN1bHQuX192aWV3c19fID0gY29weUFycmF5KHRoaXMuX192aWV3c19fKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgdGhlIGRpcmVjdGlvbiBvZiBsYXp5IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyByZXZlcnNlZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5UmV2ZXJzZSgpIHtcbiAgICAgIGlmICh0aGlzLl9fZmlsdGVyZWRfXykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyA9IC0xO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gKj0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHRoZSB1bndyYXBwZWQgdmFsdWUgZnJvbSBpdHMgbGF6eSB3cmFwcGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVZhbHVlKCkge1xuICAgICAgdmFyIGFycmF5ID0gdGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLFxuICAgICAgICAgIGRpciA9IHRoaXMuX19kaXJfXyxcbiAgICAgICAgICBpc0FyciA9IGlzQXJyYXkoYXJyYXkpLFxuICAgICAgICAgIGlzUmlnaHQgPSBkaXIgPCAwLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGlzQXJyID8gYXJyYXkubGVuZ3RoIDogMCxcbiAgICAgICAgICB2aWV3ID0gZ2V0VmlldygwLCBhcnJMZW5ndGgsIHRoaXMuX192aWV3c19fKSxcbiAgICAgICAgICBzdGFydCA9IHZpZXcuc3RhcnQsXG4gICAgICAgICAgZW5kID0gdmlldy5lbmQsXG4gICAgICAgICAgbGVuZ3RoID0gZW5kIC0gc3RhcnQsXG4gICAgICAgICAgaW5kZXggPSBpc1JpZ2h0ID8gZW5kIDogKHN0YXJ0IC0gMSksXG4gICAgICAgICAgaXRlcmF0ZWVzID0gdGhpcy5fX2l0ZXJhdGVlc19fLFxuICAgICAgICAgIGl0ZXJMZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICB0YWtlQ291bnQgPSBuYXRpdmVNaW4obGVuZ3RoLCB0aGlzLl9fdGFrZUNvdW50X18pO1xuXG4gICAgICBpZiAoIWlzQXJyIHx8ICghaXNSaWdodCAmJiBhcnJMZW5ndGggPT0gbGVuZ3RoICYmIHRha2VDb3VudCA9PSBsZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBiYXNlV3JhcHBlclZhbHVlKGFycmF5LCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAobGVuZ3RoLS0gJiYgcmVzSW5kZXggPCB0YWtlQ291bnQpIHtcbiAgICAgICAgaW5kZXggKz0gZGlyO1xuXG4gICAgICAgIHZhciBpdGVySW5kZXggPSAtMSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHdoaWxlICgrK2l0ZXJJbmRleCA8IGl0ZXJMZW5ndGgpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IGl0ZXJhdGVlc1tpdGVySW5kZXhdLFxuICAgICAgICAgICAgICBpdGVyYXRlZSA9IGRhdGEuaXRlcmF0ZWUsXG4gICAgICAgICAgICAgIHR5cGUgPSBkYXRhLnR5cGUsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9NQVBfRkxBRykge1xuICAgICAgICAgICAgdmFsdWUgPSBjb21wdXRlZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFjb21wdXRlZCkge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRykge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJyZWFrIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGBMYXp5V3JhcHBlcmAgaXMgYW4gaW5zdGFuY2Ugb2YgYGJhc2VMb2Rhc2hgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExhenlXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICAgICAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG4gICAgSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG4gICAgSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbiAgICBIYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuICAgIEhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG4gICAgSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgICAgICBkYXRhLnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgLS10aGlzLnNpemU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgKyt0aGlzLnNpemU7XG4gICAgICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgYWRkXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQGFsaWFzIHB1c2hcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICAgICAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICAgICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICAgICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gICAgICB9XG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG4gICAgU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcbiAgICBTdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG4gICAgU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuICAgIFN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcbiAgICBTdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICAgICAgKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2Jhc2VSYW5kb20oMCwgbGVuZ3RoIC0gMSldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVTaXplYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlU2l6ZShhcnJheSwgbikge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTaHVmZmxlKGFycmF5KSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAgICAgKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0ZXMgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIG9uIGBhY2N1bXVsYXRvcmAgd2l0aCBrZXlzIHRyYW5zZm9ybWVkXG4gICAgICogYnkgYGl0ZXJhdGVlYCBhbmQgdmFsdWVzIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFnZ3JlZ2F0b3IoY29sbGVjdGlvbiwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICAgICAqIHZhbHVlIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBdChvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICBza2lwID0gb2JqZWN0ID09IG51bGw7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBza2lwID8gdW5kZWZpbmVkIDogZ2V0KG9iamVjdCwgcGF0aHNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xhbXBgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKG51bWJlciA9PT0gbnVtYmVyKSB7XG4gICAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyIDw9IHVwcGVyID8gbnVtYmVyIDogdXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPj0gbG93ZXIgPyBudW1iZXIgOiBsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gICAgICogdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIERlZXAgY2xvbmVcbiAgICAgKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICAgKiAgNCAtIENsb25lIHN5bWJvbHNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgICAgIGlmIChpc0Fycikge1xuICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAgICAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICAgICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICAgICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgICAgIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICAgICAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcykge1xuICAgICAgdmFyIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tsZW5ndGhdLFxuICAgICAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB8fCAhcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZGVsYXlgIGFuZCBgXy5kZWZlcmAgd2hpY2ggYWNjZXB0cyBgYXJnc2BcbiAgICAgKiB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEZWxheShmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHsgZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOyB9LCB3YWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZGlmZmVyZW5jZWAgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICB2YWx1ZXMgPSBhcnJheU1hcCh2YWx1ZXMsIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMgPSBuZXcgU2V0Q2FjaGUodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHZhbHVlc0luZGV4LS0pIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaFJpZ2h0ID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LCB0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmV2ZXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gISFwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAgICAgKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWxsYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIGVuZCA9IChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiBsZW5ndGgpID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZW5kID0gc3RhcnQgPiBlbmQgPyAwIDogdG9MZW5ndGgoZW5kKTtcbiAgICAgIHdoaWxlIChzdGFydCA8IGVuZCkge1xuICAgICAgICBhcnJheVtzdGFydCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgICAgIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gICAgICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlRm9yYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXNcbiAgICAgKiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3JSaWdodCA9IGNyZWF0ZUJhc2VGb3IodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvclJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZ1bmN0aW9uc2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZlxuICAgICAqIGBvYmplY3RgIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZpbHRlcmVkIGZyb20gYHByb3BzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGdW5jdGlvbnMob2JqZWN0LCBwcm9wcykge1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAgICAgKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICAgICAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ3RgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID4gb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluUmFuZ2VgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgcmV0dXJuIG51bWJlciA+PSBuYXRpdmVNaW4oc3RhcnQsIGVuZCkgJiYgbnVtYmVyIDwgbmF0aXZlTWF4KHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgICAgIGNhY2hlcyA9IEFycmF5KG90aExlbmd0aCksXG4gICAgICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlIChvdGhJbmRleC0tKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgICAgIGFycmF5ID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgICB9XG4gICAgICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgICAgIGNhY2hlc1tvdGhJbmRleF0gPSAhY29tcGFyYXRvciAmJiAoaXRlcmF0ZWUgfHwgKGxlbmd0aCA+PSAxMjAgJiYgYXJyYXkubGVuZ3RoID49IDEyMCkpXG4gICAgICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnJheSA9IGFycmF5c1swXTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgc2VlbiA9IGNhY2hlc1swXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKCEoc2VlblxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZSA9IGNhY2hlc1tvdGhJbmRleF07XG4gICAgICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgICAgICA6IGluY2x1ZGVzKGFycmF5c1tvdGhJbmRleF0sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52ZXJ0YCBhbmQgYF8uaW52ZXJ0QnlgIHdoaWNoIGludmVydHNcbiAgICAgKiBgb2JqZWN0YCB3aXRoIHZhbHVlcyB0cmFuc2Zvcm1lZCBieSBgaXRlcmF0ZWVgIGFuZCBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIGl0ZXJhdGVlKHZhbHVlKSwga2V5LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52b2tlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBtZXRob2QgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICB2YXIgZnVuYyA9IG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICAgIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhcHBseShmdW5jLCBvYmplY3QsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNEYXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAgICAgKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAgICAgKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gICAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICAgIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gICAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gICAgICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgICAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTYW1lVGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzUmVnRXhwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgICAgICBpZiAoaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IChzcmNJbmRleCAmJiBpc0Z1bmN0aW9uKG9ialZhbHVlKSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5udGhgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU50aChhcnJheSwgbikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG4gKz0gbiA8IDAgPyBsZW5ndGggOiAwO1xuICAgICAgcmV0dXJuIGlzSW5kZXgobiwgbGVuZ3RoKSA/IGFycmF5W25dIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcy5sZW5ndGggPyBpdGVyYXRlZXMgOiBbaWRlbnRpdHldLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhbHVlID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgdmFsSXNOYU4gPSB2YWx1ZSAhPT0gdmFsdWUsXG4gICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSksXG4gICAgICAgICAgdmFsSXNVbmRlZmluZWQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKGFycmF5W21pZF0pLFxuICAgICAgICAgICAgb3RoSXNEZWZpbmVkID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IGNvbXB1dGVkID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKGNvbXB1dGVkKTtcblxuICAgICAgICBpZiAodmFsSXNOYU4pIHtcbiAgICAgICAgICB2YXIgc2V0TG93ID0gcmV0SGlnaGVzdCB8fCBvdGhJc1JlZmxleGl2ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1VuZGVmaW5lZCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IG90aElzRGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc051bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmICFvdGhJc051bGwgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzU3ltYm9sKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdGhJc051bGwgfHwgb3RoSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0TG93KSB7XG4gICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlTWluKGhpZ2gsIE1BWF9BUlJBWV9JTkRFWCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgaWYgKCFpbmRleCB8fCAhZXEoY29tcHV0ZWQsIHNlZW4pKSB7XG4gICAgICAgICAgdmFyIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAqIGNvbnZlcnNpb25zIG9mIGJpbmFyeSwgaGV4YWRlY2ltYWwsIG9yIG9jdGFsIHN0cmluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICAgICAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICBzZWVuID0gcmVzdWx0O1xuXG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgcmV0dXJuIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB1cGRhdGVyKGJhc2VHZXQob2JqZWN0LCBwYXRoKSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kcm9wV2hpbGVgIGFuZCBgXy50YWtlV2hpbGVgXG4gICAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEcm9wXSBTcGVjaWZ5IGRyb3BwaW5nIGVsZW1lbnRzIGluc3RlYWQgb2YgdGFraW5nIHRoZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSwgcHJlZGljYXRlLCBpc0Ryb3AsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xO1xuXG4gICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSAmJlxuICAgICAgICBwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7fVxuXG4gICAgICByZXR1cm4gaXNEcm9wXG4gICAgICAgID8gYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gMCA6IGluZGV4KSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IGxlbmd0aCkpXG4gICAgICAgIDogYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogMCksIChmcm9tUmlnaHQgPyBsZW5ndGggOiBpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGB3cmFwcGVyVmFsdWVgIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZlxuICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAqIHN1Y2Nlc3NpdmUgYWN0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYWN0aW9ucyBBY3Rpb25zIHRvIHBlcmZvcm0gdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV3JhcHBlclZhbHVlKHZhbHVlLCBhY3Rpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnZhbHVlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucywgZnVuY3Rpb24ocmVzdWx0LCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5mdW5jLmFwcGx5KGFjdGlvbi50aGlzQXJnLCBhcnJheVB1c2goW3Jlc3VsdF0sIGFjdGlvbi5hcmdzKSk7XG4gICAgICB9LCByZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy54b3JgLCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVVuaXEoYXJyYXlzWzBdKSA6IFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW2luZGV4XSxcbiAgICAgICAgICAgIG90aEluZGV4ID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKCsrb3RoSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAob3RoSW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBiYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdIHx8IGFycmF5LCBhcnJheXNbb3RoSW5kZXhdLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LCAxKSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCxcbiAgICAgICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgdGhlIGNhc3QgYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNLZXkodmFsdWUsIG9iamVjdCkgPyBbdmFsdWVdIDogc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBgYmFzZVJlc3RgIGFsaWFzIHdoaWNoIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBpZGVudGl0eWAgYnkgbW9kdWxlXG4gICAgICogcmVwbGFjZW1lbnQgcGx1Z2lucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgdmFyIGNhc3RSZXN0ID0gYmFzZVJlc3Q7XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgYXJyYXlgIHRvIGEgc2xpY2UgaWYgaXQncyBuZWVkZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBzbGljZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICovXG4gICAgdmFyIGNsZWFyVGltZW91dCA9IGN0eENsZWFyVGltZW91dCB8fCBmdW5jdGlvbihpZCkge1xuICAgICAgcmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICAgICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICAgICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICAgICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gICAgICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gICAgICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cyxcbiAgICAgKiBwbGFjZWhvbGRlcnMsIGFuZCBwcm92aWRlZCBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBhcnJheSBvZiBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlZnRMZW5ndGggKyByYW5nZUxlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHJhbmdlTGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleCsrXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICogaXMgdGFpbG9yZWQgZm9yIGBfLnBhcnRpYWxSaWdodGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNJbmRleCA9IC0xLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICByaWdodEluZGV4ID0gLTEsXG4gICAgICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KHJhbmdlTGVuZ3RoICsgcmlnaHRMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgcmFuZ2VMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2FyZ3NJbmRleF0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4O1xuICAgICAgd2hpbGUgKCsrcmlnaHRJbmRleCA8IHJpZ2h0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtvZmZzZXQgKyByaWdodEluZGV4XSA9IHBhcnRpYWxzW3JpZ2h0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraG9sZGVyc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBob2xkZXJzW2hvbGRlcnNJbmRleF1dID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gICAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICAgICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2luaXRpYWxpemVyXSBUaGUgYWNjdW11bGF0b3Igb2JqZWN0IGluaXRpYWxpemVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsIGluaXRpYWxpemVyKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IGluaXRpYWxpemVyID8gaW5pdGlhbGl6ZXIoKSA6IHt9O1xuXG4gICAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBhY2N1bXVsYXRvcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmxvd2VyRmlyc3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYFN0cmluZ2AgY2FzZSBtZXRob2QgdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICB2YXIgc3RyU3ltYm9scyA9IGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNociA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICAgICAgdmFyIHRyYWlsaW5nID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICAgICAgcmV0dXJuIGNoclttZXRob2ROYW1lXSgpICsgdHJhaWxpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKHdvcmRzKGRlYnVycihzdHJpbmcpLnJlcGxhY2UocmVBcG9zLCAnJykpLCBjYWxsYmFjaywgJycpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBpbnN0YW5jZSBvZiBgQ3RvcmAgcmVnYXJkbGVzcyBvZlxuICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdG9yKEN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuICAgICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY2FsbC10aGlzYXJndW1lbnQtYXJndW1lbnRzbGlzdFxuICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDdG9yO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0pO1xuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pO1xuICAgICAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLFxuICAgICAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG5cbiAgICAgICAgLy8gTWltaWMgdGhlIGNvbnN0cnVjdG9yJ3MgYHJldHVybmAgYmVoYXZpb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VzNS5naXRodWIuaW8vI3gxMy4yLjIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGVuYWJsZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcml0eSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpIHtcbiAgICAgIHZhciBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlcik7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhvbGRlcnMgPSAobGVuZ3RoIDwgMyAmJiBhcmdzWzBdICE9PSBwbGFjZWhvbGRlciAmJiBhcmdzW2xlbmd0aCAtIDFdICE9PSBwbGFjZWhvbGRlcilcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG5cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXJncywgaG9sZGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5IC0gbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxvdyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGbG93KGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmNzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBmdW5jcy5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHByZXJlcSA9IExvZGFzaFdyYXBwZXIucHJvdG90eXBlLnRocnU7XG5cbiAgICAgICAgaWYgKGZyb21SaWdodCkge1xuICAgICAgICAgIGZ1bmNzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIHZhciBmdW5jID0gZnVuY3NbaW5kZXhdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVyZXEgJiYgIXdyYXBwZXIgJiYgZ2V0RnVuY05hbWUoZnVuYykgPT0gJ3dyYXBwZXInKSB7XG4gICAgICAgICAgICB2YXIgd3JhcHBlciA9IG5ldyBMb2Rhc2hXcmFwcGVyKFtdLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSB3cmFwcGVyID8gaW5kZXggOiBsZW5ndGg7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgZnVuYyA9IGZ1bmNzW2luZGV4XTtcblxuICAgICAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgICAgICBkYXRhID0gZnVuY05hbWUgPT0gJ3dyYXBwZXInID8gZ2V0RGF0YShmdW5jKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChkYXRhICYmIGlzTGF6aWFibGUoZGF0YVswXSkgJiZcbiAgICAgICAgICAgICAgICBkYXRhWzFdID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpICYmXG4gICAgICAgICAgICAgICAgIWRhdGFbNF0ubGVuZ3RoICYmIGRhdGFbOV0gPT0gMVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyW2dldEZ1bmNOYW1lKGRhdGFbMF0pXS5hcHBseSh3cmFwcGVyLCBkYXRhWzNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JhcHBlciA9IChmdW5jLmxlbmd0aCA9PSAxICYmIGlzTGF6aWFibGUoZnVuYykpXG4gICAgICAgICAgICAgID8gd3JhcHBlcltmdW5jTmFtZV0oKVxuICAgICAgICAgICAgICA6IHdyYXBwZXIudGhydShmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgICBpZiAod3JhcHBlciAmJiBhcmdzLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gbGVuZ3RoID8gZnVuY3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3MpIDogdmFsdWU7XG5cbiAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3NbaW5kZXhdLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgKiAgdG8gdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSHlicmlkKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIFdSQVBfQVJZX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUcsXG4gICAgICAgICAgaXNDdXJyaWVkID0gYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLFxuICAgICAgICAgIGlzRmxpcCA9IGJpdG1hc2sgJiBXUkFQX0ZMSVBfRkxBRyxcbiAgICAgICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1cnJpZWQpIHtcbiAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlciksXG4gICAgICAgICAgICAgIGhvbGRlcnNDb3VudCA9IGNvdW50SG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzKSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFsc1JpZ2h0KSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzQ291bnQ7XG4gICAgICAgIGlmIChpc0N1cnJpZWQgJiYgbGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICB2YXIgbmV3SG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdGhpc0FyZyxcbiAgICAgICAgICAgIGFyZ3MsIG5ld0hvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSAtIGxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgICAgICBmbiA9IGlzQmluZEtleSA/IHRoaXNCaW5kaW5nW2Z1bmNdIDogZnVuYztcblxuICAgICAgICBsZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgICAgICAgaWYgKGFyZ1Bvcykge1xuICAgICAgICAgIGFyZ3MgPSByZW9yZGVyKGFyZ3MsIGFyZ1Bvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGbGlwICYmIGxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJncy5sZW5ndGggPSBhcnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikge1xuICAgICAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yKGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uaW52ZXJ0QnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdG9JdGVyYXRlZSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLCB0b0l0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCB0b0l0ZXJhdGVlKGl0ZXJhdGVlKSwge30pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHVzZWQgZm9yIGB1bmRlZmluZWRgIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvdGhlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb1N0cmluZyhvdGhlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5vdmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG92ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuICAgICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHZhciB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AgYmFzZWQgb24gYGxlbmd0aGAuIFRoZSBgY2hhcnNgIHN0cmluZ1xuICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLCBjaGFycykge1xuICAgICAgY2hhcnMgPSBjaGFycyA9PT0gdW5kZWZpbmVkID8gJyAnIDogYmFzZVRvU3RyaW5nKGNoYXJzKTtcblxuICAgICAgdmFyIGNoYXJzTGVuZ3RoID0gY2hhcnMubGVuZ3RoO1xuICAgICAgaWYgKGNoYXJzTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gY2hhcnNMZW5ndGggPyBiYXNlUmVwZWF0KGNoYXJzLCBsZW5ndGgpIDogY2hhcnM7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVJlcGVhdChjaGFycywgbmF0aXZlQ2VpbChsZW5ndGggLyBzdHJpbmdTaXplKGNoYXJzKSkpO1xuICAgICAgcmV0dXJuIGhhc1VuaWNvZGUoY2hhcnMpXG4gICAgICAgID8gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkocmVzdWx0KSwgMCwgbGVuZ3RoKS5qb2luKCcnKVxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmdcbiAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlZnRMZW5ndGggKyBhcmdzTGVuZ3RoKSxcbiAgICAgICAgICAgIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcblxuICAgICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnJhbmdlYCBvciBgXy5yYW5nZVJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgICAgIGVuZCA9IHN0ZXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwRnVuYyBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBgZnVuY2Agd3JhcHBlci5cbiAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLCBiaXRtYXNrLCB3cmFwRnVuYywgcGxhY2Vob2xkZXIsIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0N1cnJ5ID0gYml0bWFzayAmIFdSQVBfQ1VSUllfRkxBRyxcbiAgICAgICAgICBuZXdIb2xkZXJzID0gaXNDdXJyeSA/IGhvbGRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGhvbGRlcnMsXG4gICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gcGFydGlhbHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3UGFydGlhbHNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBwYXJ0aWFscztcblxuICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9GTEFHIDogV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA6IFdSQVBfUEFSVElBTF9GTEFHKTtcblxuICAgICAgaWYgKCEoYml0bWFzayAmIFdSQVBfQ1VSUllfQk9VTkRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3SG9sZGVycywgbmV3UGFydGlhbHNSaWdodCxcbiAgICAgICAgbmV3SG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIHZhciByZXN1bHQgPSB3cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgaWYgKGlzTGF6aWFibGUoZnVuYykpIHtcbiAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHJlc3VsdCwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ucm91bmRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYE1hdGhgIG1ldGhvZCB0byB1c2Ugd2hlbiByb3VuZGluZy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSb3VuZChtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IE1hdGhbbWV0aG9kTmFtZV07XG4gICAgICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09IG51bGwgPyAwIDogbmF0aXZlTWluKHRvSW50ZWdlcihwcmVjaXNpb24pLCAyOTIpO1xuICAgICAgICBpZiAocHJlY2lzaW9uKSB7XG4gICAgICAgICAgLy8gU2hpZnQgd2l0aCBleHBvbmVudGlhbCBub3RhdGlvbiB0byBhdm9pZCBmbG9hdGluZy1wb2ludCBpc3N1ZXMuXG4gICAgICAgICAgLy8gU2VlIFtNRE5dKGh0dHBzOi8vbWRuLmlvL3JvdW5kI0V4YW1wbGVzKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHZhciBwYWlyID0gKHRvU3RyaW5nKG51bWJlcikgKyAnZScpLnNwbGl0KCdlJyksXG4gICAgICAgICAgICAgIHZhbHVlID0gZnVuYyhwYWlyWzBdICsgJ2UnICsgKCtwYWlyWzFdICsgcHJlY2lzaW9uKSk7XG5cbiAgICAgICAgICBwYWlyID0gKHRvU3RyaW5nKHZhbHVlKSArICdlJykuc3BsaXQoJ2UnKTtcbiAgICAgICAgICByZXR1cm4gKyhwYWlyWzBdICsgJ2UnICsgKCtwYWlyWzFdIC0gcHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMobnVtYmVyKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gICAgICovXG4gICAgdmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy50b1BhaXJzYCBvciBgXy50b1BhaXJzSW5gIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhaXJzIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVRvUGFpcnMoa2V5c0Z1bmMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIHRhZyA9IGdldFRhZyhvYmplY3QpO1xuICAgICAgICBpZiAodGFnID09IG1hcFRhZykge1xuICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5KG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9QYWlycyhvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNlVG9QYWlycyhvYmplY3QsIGtleXNGdW5jKG9iamVjdCkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBlaXRoZXIgY3VycmllcyBvciBpbnZva2VzIGBmdW5jYCB3aXRoIG9wdGlvbmFsXG4gICAgICogYHRoaXNgIGJpbmRpbmcgYW5kIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogICAgMSAtIGBfLmJpbmRgXG4gICAgICogICAgMiAtIGBfLmJpbmRLZXlgXG4gICAgICogICAgNCAtIGBfLmN1cnJ5YCBvciBgXy5jdXJyeVJpZ2h0YCBvZiBhIGJvdW5kIGZ1bmN0aW9uXG4gICAgICogICAgOCAtIGBfLmN1cnJ5YFxuICAgICAqICAgMTYgLSBgXy5jdXJyeVJpZ2h0YFxuICAgICAqICAgMzIgLSBgXy5wYXJ0aWFsYFxuICAgICAqICAgNjQgLSBgXy5wYXJ0aWFsUmlnaHRgXG4gICAgICogIDEyOCAtIGBfLnJlYXJnYFxuICAgICAqICAyNTYgLSBgXy5hcnlgXG4gICAgICogIDUxMiAtIGBfLmZsaXBgXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmICghaXNCaW5kS2V5ICYmIHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IHBhcnRpYWxzID8gcGFydGlhbHMubGVuZ3RoIDogMDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKTtcbiAgICAgICAgcGFydGlhbHMgPSBob2xkZXJzID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJ5ID0gYXJ5ID09PSB1bmRlZmluZWQgPyBhcnkgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKGFyeSksIDApO1xuICAgICAgYXJpdHkgPSBhcml0eSA9PT0gdW5kZWZpbmVkID8gYXJpdHkgOiB0b0ludGVnZXIoYXJpdHkpO1xuICAgICAgbGVuZ3RoIC09IGhvbGRlcnMgPyBob2xkZXJzLmxlbmd0aCA6IDA7XG5cbiAgICAgIGlmIChiaXRtYXNrICYgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzUmlnaHQgPSBwYXJ0aWFscyxcbiAgICAgICAgICAgIGhvbGRlcnNSaWdodCA9IGhvbGRlcnM7XG5cbiAgICAgICAgcGFydGlhbHMgPSBob2xkZXJzID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdmFyIGRhdGEgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBnZXREYXRhKGZ1bmMpO1xuXG4gICAgICB2YXIgbmV3RGF0YSA9IFtcbiAgICAgICAgZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCxcbiAgICAgICAgYXJnUG9zLCBhcnksIGFyaXR5XG4gICAgICBdO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBtZXJnZURhdGEobmV3RGF0YSwgZGF0YSk7XG4gICAgICB9XG4gICAgICBmdW5jID0gbmV3RGF0YVswXTtcbiAgICAgIGJpdG1hc2sgPSBuZXdEYXRhWzFdO1xuICAgICAgdGhpc0FyZyA9IG5ld0RhdGFbMl07XG4gICAgICBwYXJ0aWFscyA9IG5ld0RhdGFbM107XG4gICAgICBob2xkZXJzID0gbmV3RGF0YVs0XTtcbiAgICAgIGFyaXR5ID0gbmV3RGF0YVs5XSA9IG5ld0RhdGFbOV0gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IChpc0JpbmRLZXkgPyAwIDogZnVuYy5sZW5ndGgpXG4gICAgICAgIDogbmF0aXZlTWF4KG5ld0RhdGFbOV0gLSBsZW5ndGgsIDApO1xuXG4gICAgICBpZiAoIWFyaXR5ICYmIGJpdG1hc2sgJiAoV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKTtcbiAgICAgIH1cbiAgICAgIGlmICghYml0bWFzayB8fCBiaXRtYXNrID09IFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpO1xuICAgICAgfSBlbHNlIGlmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRyB8fCBiaXRtYXNrID09IFdSQVBfQ1VSUllfUklHSFRfRkxBRykge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSk7XG4gICAgICB9IGVsc2UgaWYgKChiaXRtYXNrID09IFdSQVBfUEFSVElBTF9GTEFHIHx8IGJpdG1hc2sgPT0gKFdSQVBfQklORF9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcpKSAmJiAhaG9sZGVycy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVIeWJyaWQuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcbiAgICAgIH1cbiAgICAgIHZhciBzZXR0ZXIgPSBkYXRhID8gYmFzZVNldERhdGEgOiBzZXREYXRhO1xuICAgICAgcmV0dXJuIHNldFdyYXBUb1N0cmluZyhzZXR0ZXIocmVzdWx0LCBuZXdEYXRhKSwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c2AgdG8gY3VzdG9taXplIGl0cyBgXy5hc3NpZ25JbmAgdXNlIHRvIGFzc2lnbiBwcm9wZXJ0aWVzXG4gICAgICogb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXNcbiAgICAgKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGVxKG9ialZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzRGVlcGAgdG8gY3VzdG9taXplIGl0cyBgXy5tZXJnZWAgdXNlIHRvIG1lcmdlIHNvdXJjZVxuICAgICAqIG9iamVjdHMgaW50byBkZXN0aW5hdGlvbiBvYmplY3RzIHRoYXQgYXJlIHBhc3NlZCB0aHJ1LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgcGFyZW50IG9iamVjdCBvZiBgc3JjVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykge1xuICAgICAgaWYgKGlzT2JqZWN0KG9ialZhbHVlKSAmJiBpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgb2JqVmFsdWUpO1xuICAgICAgICBiYXNlTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCB1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UsIHN0YWNrKTtcbiAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9taXRgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uY2xvbmVEZWVwYCB1c2UgdG8gb25seSBjbG9uZSBwbGFpblxuICAgICAqIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bmNsb25lZCB2YWx1ZSBvciBgdW5kZWZpbmVkYCB0byBkZWZlciBjbG9uaW5nIHRvIGBfLmNsb25lRGVlcGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tT21pdENsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gICAgICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICAgIGlmIChzdGFja2VkICYmIHN0YWNrLmdldChvdGhlcikpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gICAgICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gICAgICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICAgICAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSBib29sVGFnOlxuICAgICAgICBjYXNlIGRhdGVUYWc6XG4gICAgICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgICAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gICAgICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICAgICAgb3RoUHJvcHMgPSBnZXRBbGxLZXlzKG90aGVyKSxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgICAgIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgICAgIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAgICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0RGF0YSA9ICFtZXRhTWFwID8gbm9vcCA6IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICAgIHJldHVybiBtZXRhTWFwLmdldChmdW5jKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBvZiBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IChmdW5jLm5hbWUgKyAnJyksXG4gICAgICAgICAgYXJyYXkgPSByZWFsTmFtZXNbcmVzdWx0XSxcbiAgICAgICAgICBsZW5ndGggPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywgcmVzdWx0KSA/IGFycmF5Lmxlbmd0aCA6IDA7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IGFycmF5W2xlbmd0aF0sXG4gICAgICAgICAgICBvdGhlckZ1bmMgPSBkYXRhLmZ1bmM7XG4gICAgICAgIGlmIChvdGhlckZ1bmMgPT0gbnVsbCB8fCBvdGhlckZ1bmMgPT0gZnVuYykge1xuICAgICAgICAgIHJldHVybiBkYXRhLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXJndW1lbnQgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SG9sZGVyKGZ1bmMpIHtcbiAgICAgIHZhciBvYmplY3QgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGxvZGFzaCwgJ3BsYWNlaG9sZGVyJykgPyBsb2Rhc2ggOiBmdW5jO1xuICAgICAgcmV0dXJuIG9iamVjdC5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBcIml0ZXJhdGVlXCIgZnVuY3Rpb24uIElmIGBfLml0ZXJhdGVlYCBpcyBjdXN0b21pemVkLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VzdG9tIG1ldGhvZCwgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGJhc2VJdGVyYXRlZWAuXG4gICAgICogSWYgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgdGhlIGNob3NlbiBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhlbSBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIHRoZSBjcmVhdGVkIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2hvc2VuIGZ1bmN0aW9uIG9yIGl0cyByZXN1bHQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SXRlcmF0ZWUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoLml0ZXJhdGVlIHx8IGl0ZXJhdGVlO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSBpdGVyYXRlZSA/IGJhc2VJdGVyYXRlZSA6IHJlc3VsdDtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcmVzdWx0KGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgICAgIDogZGF0YS5tYXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICBpZiAodW5tYXNrZWQpIHtcbiAgICAgICAgaWYgKGlzT3duKSB7XG4gICAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIHdoaWxlIChvYmplY3QpIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICAgICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgdmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG4gICAgaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgICAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAgICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgICAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gICAgICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmlldywgYXBwbHlpbmcgYW55IGB0cmFuc2Zvcm1zYCB0byB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgcG9zaXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB0cmFuc2Zvcm1zIFRoZSB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIHZpZXcuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHN0YXJ0YCBhbmQgYGVuZGBcbiAgICAgKiAgcG9zaXRpb25zIG9mIHRoZSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXcoc3RhcnQsIGVuZCwgdHJhbnNmb3Jtcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdHJhbnNmb3Jtc1tpbmRleF0sXG4gICAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnZHJvcCc6ICAgICAgc3RhcnQgKz0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJvcFJpZ2h0JzogZW5kIC09IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2UnOiAgICAgIGVuZCA9IG5hdGl2ZU1pbihlbmQsIHN0YXJ0ICsgc2l6ZSk7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2VSaWdodCc6IHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0LCBlbmQgLSBzaXplKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7ICdzdGFydCc6IHN0YXJ0LCAnZW5kJzogZW5kIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgd3JhcHBlciBkZXRhaWxzIGZyb20gdGhlIGBzb3VyY2VgIGJvZHkgY29tbWVudC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3cmFwcGVyIGRldGFpbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0V3JhcERldGFpbHMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBzb3VyY2UubWF0Y2gocmVXcmFwRGV0YWlscyk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXS5zcGxpdChyZVNwbGl0RGV0YWlscykgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgICAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgICAgIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgICAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICAgICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gICAgICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICAgICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHdyYXBwZXIgYGRldGFpbHNgIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBgc291cmNlYCBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBpbnNlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgZGV0YWlscykge1xuICAgICAgdmFyIGxlbmd0aCA9IGRldGFpbHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgZGV0YWlsc1tsYXN0SW5kZXhdID0gKGxlbmd0aCA+IDEgPyAnJiAnIDogJycpICsgZGV0YWlsc1tsYXN0SW5kZXhdO1xuICAgICAgZGV0YWlscyA9IGRldGFpbHMuam9pbihsZW5ndGggPiAyID8gJywgJyA6ICcgJyk7XG4gICAgICByZXR1cm4gc291cmNlLnJlcGxhY2UocmVXcmFwQ29tbWVudCwgJ3tcXG4vKiBbd3JhcHBlZCB3aXRoICcgKyBkZXRhaWxzICsgJ10gKi9cXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gICAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgICAgICkge1xuICAgICAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICAgICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpIHtcbiAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgIG90aGVyID0gbG9kYXNoW2Z1bmNOYW1lXTtcblxuICAgICAgaWYgKHR5cGVvZiBvdGhlciAhPSAnZnVuY3Rpb24nIHx8ICEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZnVuYyA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGdldERhdGEob3RoZXIpO1xuICAgICAgcmV0dXJuICEhZGF0YSAmJiBmdW5jID09PSBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgICAgIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBpcyBjYXBhYmxlIG9mIGJlaW5nIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhciBpc01hc2thYmxlID0gY29yZUpzRGF0YSA/IGlzRnVuY3Rpb24gOiBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAgICAgKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAgICAgKiBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Rba2V5XSA9PT0gc3JjVmFsdWUgJiZcbiAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAgICAgKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgICAgICBjYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLlxuICAgICAqXG4gICAgICogTWVyZ2luZyBtZXRhZGF0YSByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgdXNlZCB0byBpbnZva2UgYSBmdW5jdGlvbi5cbiAgICAgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbWV0aG9kcyBsaWtlIGBfLmJpbmRgLCBgXy5jdXJyeWAsIGFuZCBgXy5wYXJ0aWFsYFxuICAgICAqIG1heSBiZSBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIG9yZGVyLiBNZXRob2RzIGxpa2UgYF8uYXJ5YCBhbmRcbiAgICAgKiBgXy5yZWFyZ2AgbW9kaWZ5IGZ1bmN0aW9uIGFyZ3VtZW50cywgbWFraW5nIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZVxuICAgICAqIGV4ZWN1dGVkIGltcG9ydGFudCwgcHJldmVudGluZyB0aGUgbWVyZ2luZyBvZiBtZXRhZGF0YS4gSG93ZXZlciwgd2UgbWFrZVxuICAgICAqIGFuIGV4Y2VwdGlvbiBmb3IgYSBzYWZlIGNvbWJpbmVkIGNhc2Ugd2hlcmUgY3VycmllZCBmdW5jdGlvbnMgaGF2ZSBgXy5hcnlgXG4gICAgICogYW5kIG9yIGBfLnJlYXJnYCBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBkZXN0aW5hdGlvbiBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIHNvdXJjZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRhdGFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lcmdlRGF0YShkYXRhLCBzb3VyY2UpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gZGF0YVsxXSxcbiAgICAgICAgICBzcmNCaXRtYXNrID0gc291cmNlWzFdLFxuICAgICAgICAgIG5ld0JpdG1hc2sgPSBiaXRtYXNrIHwgc3JjQml0bWFzayxcbiAgICAgICAgICBpc0NvbW1vbiA9IG5ld0JpdG1hc2sgPCAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcgfCBXUkFQX0FSWV9GTEFHKTtcblxuICAgICAgdmFyIGlzQ29tYm8gPVxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfUkVBUkdfRkxBRykgJiYgKGRhdGFbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykpICYmIChzb3VyY2VbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSk7XG5cbiAgICAgIC8vIEV4aXQgZWFybHkgaWYgbWV0YWRhdGEgY2FuJ3QgYmUgbWVyZ2VkLlxuICAgICAgaWYgKCEoaXNDb21tb24gfHwgaXNDb21ibykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGB0aGlzQXJnYCBpZiBhdmFpbGFibGUuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIGRhdGFbMl0gPSBzb3VyY2VbMl07XG4gICAgICAgIC8vIFNldCB3aGVuIGN1cnJ5aW5nIGEgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgIG5ld0JpdG1hc2sgfD0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHID8gMCA6IFdSQVBfQ1VSUllfQk9VTkRfRkxBRztcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCBhcmd1bWVudHMuXG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbM107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzID0gZGF0YVszXTtcbiAgICAgICAgZGF0YVszXSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3MocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNF0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNF0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbM10sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs0XTtcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCByaWdodCBhcmd1bWVudHMuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs1XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBwYXJ0aWFscyA9IGRhdGFbNV07XG4gICAgICAgIGRhdGFbNV0gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzUmlnaHQocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNl0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNl0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbNV0sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs2XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyZ1Bvc2AgaWYgYXZhaWxhYmxlLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbN107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZGF0YVs3XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQVJZX0ZMQUcpIHtcbiAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gPT0gbnVsbCA/IHNvdXJjZVs4XSA6IG5hdGl2ZU1pbihkYXRhWzhdLCBzb3VyY2VbOF0pO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAgICBpZiAoZGF0YVs5XSA9PSBudWxsKSB7XG4gICAgICAgIGRhdGFbOV0gPSBzb3VyY2VbOV07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBmdW5jYCBhbmQgbWVyZ2UgYml0bWFza3MuXG4gICAgICBkYXRhWzBdID0gc291cmNlWzBdO1xuICAgICAgZGF0YVsxXSA9IG5ld0JpdG1hc2s7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICAgICAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVvcmRlciBgYXJyYXlgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGluZGV4ZXMgd2hlcmUgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgZmlyc3QgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIGZpcnN0IGVsZW1lbnQsIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIHNlY29uZCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHJlb3JkZXIuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJyYXkgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW9yZGVyKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihpbmRleGVzLmxlbmd0aCwgYXJyTGVuZ3RoKSxcbiAgICAgICAgICBvbGRBcnJheSA9IGNvcHlBcnJheShhcnJheSk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGFycmF5W2xlbmd0aF0gPSBpc0luZGV4KGluZGV4LCBhcnJMZW5ndGgpID8gb2xkQXJyYXlbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiB0aGlzIGZ1bmN0aW9uIGJlY29tZXMgaG90LCBpLmUuIGlzIGludm9rZWQgYSBsb3QgaW4gYSBzaG9ydFxuICAgICAqIHBlcmlvZCBvZiB0aW1lLCBpdCB3aWxsIHRyaXAgaXRzIGJyZWFrZXIgYW5kIHRyYW5zaXRpb24gdG8gYW4gaWRlbnRpdHlcbiAgICAgKiBmdW5jdGlvbiB0byBhdm9pZCBnYXJiYWdlIGNvbGxlY3Rpb24gcGF1c2VzIGluIFY4LiBTZWVcbiAgICAgKiBbVjggaXNzdWUgMjA3MF0oaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjA3MClcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC5cbiAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldERhdGEgPSBzaG9ydE91dChiYXNlU2V0RGF0YSk7XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgc2V0VGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL3NldFRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VGltZW91dCA9IGN0eFNldFRpbWVvdXQgfHwgZnVuY3Rpb24oZnVuYywgd2FpdCkge1xuICAgICAgcmV0dXJuIHJvb3Quc2V0VGltZW91dChmdW5jLCB3YWl0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYHdyYXBwZXJgIHRvIG1pbWljIHRoZSBzb3VyY2Ugb2YgYHJlZmVyZW5jZWBcbiAgICAgKiB3aXRoIHdyYXBwZXIgZGV0YWlscyBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBwZXIgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgd3JhcHBlcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V3JhcFRvU3RyaW5nKHdyYXBwZXIsIHJlZmVyZW5jZSwgYml0bWFzaykge1xuICAgICAgdmFyIHNvdXJjZSA9IChyZWZlcmVuY2UgKyAnJyk7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcod3JhcHBlciwgaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCB1cGRhdGVXcmFwRGV0YWlscyhnZXRXcmFwRGV0YWlscyhzb3VyY2UpLCBiaXRtYXNrKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICAgICAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICAgICAqIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgICAgIHZhciBjb3VudCA9IDAsXG4gICAgICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCB3aGljaCBtdXRhdGVzIGFuZCBzZXRzIHRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1hcnJheS5sZW5ndGhdIFRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZVNlbGYoYXJyYXksIHNpemUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICBzaXplID0gc2l6ZSA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogc2l6ZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgc2l6ZSkge1xuICAgICAgICB2YXIgcmFuZCA9IGJhc2VSYW5kb20oaW5kZXgsIGxhc3RJbmRleCksXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W3JhbmRdO1xuXG4gICAgICAgIGFycmF5W3JhbmRdID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGFycmF5Lmxlbmd0aCA9IHNpemU7XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgdmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgfVxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICAgIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgd3JhcHBlciBgZGV0YWlsc2AgYmFzZWQgb24gYGJpdG1hc2tgIGZsYWdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkZXRhaWxzYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLCBiaXRtYXNrKSB7XG4gICAgICBhcnJheUVhY2god3JhcEZsYWdzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9ICdfLicgKyBwYWlyWzBdO1xuICAgICAgICBpZiAoKGJpdG1hc2sgJiBwYWlyWzFdKSAmJiAhYXJyYXlJbmNsdWRlcyhkZXRhaWxzLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZXRhaWxzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXRhaWxzLnNvcnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHdyYXBwZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gd3JhcHBlciBUaGUgd3JhcHBlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2xvbmUod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5jbG9uZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZXIuX19jaGFpbl9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2luZGV4X18gID0gd3JhcHBlci5fX2luZGV4X187XG4gICAgICByZXN1bHQuX192YWx1ZXNfXyA9IHdyYXBwZXIuX192YWx1ZXNfXztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIGdyb3VwcyB0aGUgbGVuZ3RoIG9mIGBzaXplYC5cbiAgICAgKiBJZiBgYXJyYXlgIGNhbid0IGJlIHNwbGl0IGV2ZW5seSwgdGhlIGZpbmFsIGNodW5rIHdpbGwgYmUgdGhlIHJlbWFpbmluZ1xuICAgICAqIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPTFdIFRoZSBsZW5ndGggb2YgZWFjaCBjaHVua1xuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWydjJywgJ2QnXV1cbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYicsICdjJ10sIFsnZCddXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBzaXplLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzaXplLCBndWFyZCkgOiBzaXplID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHNpemUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSA9IG5hdGl2ZU1heCh0b0ludGVnZXIoc2l6ZSksIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobmF0aXZlQ2VpbChsZW5ndGggLyBzaXplKSk7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBiYXNlU2xpY2UoYXJyYXksIGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgKiBhbmQvb3IgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNvbmNhdChhcnJheSwgMiwgWzNdLCBbWzRdXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXQoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICAgICAgYXJyYXkgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGFyZ3NbaW5kZXggLSAxXSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGBhcnJheWAgdmFsdWVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLndpdGhvdXQsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2UgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsQnlgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZUJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIG9yZGVyIGFuZFxuICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZVdpdGgob2JqZWN0cywgW3sgJ3gnOiAxLCAneSc6IDIgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZVdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSkge1xuICAgICAgICBjb21wYXJhdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZWxlbWVudHMgb2YgYGFycmF5YCB3aXRoIGB2YWx1ZWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90XG4gICAgICogaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8uZmlsbChhcnJheSwgJ2EnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICpcbiAgICAgKiBfLmZpbGwoQXJyYXkoMyksIDIpO1xuICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAqXG4gICAgICogXy5maWxsKFs0LCA2LCA4LCAxMF0sICcqJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXJ0ICYmIHR5cGVvZiBzdGFydCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgdmFsdWUsIHN0YXJ0KSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRJbmRleGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50c1xuICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggPCAwXG4gICAgICAgICAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApXG4gICAgICAgICAgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYGFycmF5YCB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgWzIsIFszLCBbNF1dLCA1XV07XG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LCBkZXB0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBgXy50b1BhaXJzYDsgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYmplY3QgY29tcG9zZWRcbiAgICAgKiBmcm9tIGtleS12YWx1ZSBgcGFpcnNgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IHBhaXJbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmhlYWQoW10pO1xuICAgICAqIC8vID0+IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzIHRoZVxuICAgICAqIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbml0aWFsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMCwgLTEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGFsbCBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsyXVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBpZiAoaXRlcmF0ZWUgPT09IGxhc3QobWFwcGVkKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYWxsIGVsZW1lbnRzIGluIGBhcnJheWAgaW50byBhIHN0cmluZyBzZXBhcmF0ZWQgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBqb2luZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmpvaW4oWydhJywgJ2InLCAnYyddLCAnficpO1xuICAgICAqIC8vID0+ICdhfmJ+YydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBqb2luKGFycmF5LCBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gJycgOiBuYXRpdmVKb2luLmNhbGwoYXJyYXksIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBhcnJheWAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKSA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleClcbiAgICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjExLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIC0yKTtcbiAgICAgKiAvLyA9PiAnYyc7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlTnRoKGFycmF5LCB0b0ludGVnZXIobikpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGdpdmVuIHZhbHVlcyBmcm9tIGBhcnJheWAgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgKiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSBwcmVkaWNhdGUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbChhcnJheSwgJ2EnLCAnYycpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgdmFyIHB1bGwgPSBiYXNlUmVzdChwdWxsQWxsKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbEJ5KGFycmF5LCBbeyAneCc6IDEgfSwgeyAneCc6IDMgfV0sICd4Jyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxCeShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsV2l0aChhcnJheSwgW3sgJ3gnOiAzLCAneSc6IDQgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiA1LCAneSc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsV2l0aChhcnJheSwgdmFsdWVzLCBjb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyBmcm9tIGBhcnJheWAgY29ycmVzcG9uZGluZyB0byBgaW5kZXhlc2AgYW5kIHJldHVybnMgYW5cbiAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5hdGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKiB2YXIgcHVsbGVkID0gXy5wdWxsQXQoYXJyYXksIFsxLCAzXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2MnXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cocHVsbGVkKTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnZCddXG4gICAgICovXG4gICAgdmFyIHB1bGxBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZUF0KGFycmF5LCBpbmRleGVzKTtcblxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgYXJyYXlNYXAoaW5kZXhlcywgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5kZXgoaW5kZXgsIGxlbmd0aCkgPyAraW5kZXggOiBpbmRleDtcbiAgICAgIH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gICAgICogdG8gcHVsbCBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHZhbHVlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICAgICAqIHZhciBldmVucyA9IF8ucmVtb3ZlKGFycmF5LCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgKiAvLyA9PiBbMiwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgYGFycmF5YCBzbyB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IGJlY29tZXMgdGhlIGxhc3QsIHRoZSBzZWNvbmRcbiAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgIGFuZCBpcyBiYXNlZCBvblxuICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IGFycmF5IDogbmF0aXZlUmV2ZXJzZS5jYWxsKGFycmF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gICAgICogcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAmJiB0eXBlb2YgZW5kICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSB0aGUgbG93ZXN0IGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleChbMzAsIDUwXSwgNDApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgKiBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG9cbiAgICAgKiBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4KFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gNFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubGFzdEluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpIC0gMTtcbiAgICAgICAgaWYgKGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXEoWzEsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMSwgMi4zXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWlsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAxLCBsZW5ndGgpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC4gRWxlbWVudHMgYXJlXG4gICAgICogdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGZhbHNlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLiBFbGVtZW50c1xuICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICogYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uQnkoWzIuMV0sIFsxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbVxuICAgICAqIHRoZSBmaXJzdCBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAqIGluIHRoZSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICAgICAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXFCeShbMi4xLCAxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiBncm91cGVkXG4gICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAqIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwKHppcHBlZCk7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICAgIGFycmF5ID0gYXJyYXlGaWx0ZXIoYXJyYXksIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChncm91cCkpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAoYXJyYXksIGJhc2VQcm9wZXJ0eShpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgcmVncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIHJlZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICogLy8gPT4gW1sxLCAxMCwgMTAwXSwgWzIsIDIwLCAyMDBdXVxuICAgICAqXG4gICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICogLy8gPT4gWzMsIDMwLCAzMDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXBXaXRoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdW56aXAoYXJyYXkpO1xuICAgICAgaWYgKGl0ZXJhdGVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheU1hcChyZXN1bHQsIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdW5kZWZpbmVkLCBncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKi9cbiAgICB2YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgaXMgdGhlXG4gICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgKiBvZiB0aGUgZ2l2ZW4gYXJyYXlzLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlclxuICAgICAqIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ud2l0aG91dFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvcihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICovXG4gICAgdmFyIHhvciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgKiBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjIsIDMuNF1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ueG9yQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHhvckJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy54b3JXaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHhvcldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMsIHRoZSBmaXJzdCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBmaXJzdCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCB0aGUgc2Vjb25kIG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKi9cbiAgICB2YXIgemlwID0gYmFzZVJlc3QodW56aXApO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3REZWVwKFsnYS5iWzBdLmMnLCAnYS5iWzFdLmQnXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3REZWVwKHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGJhc2VTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBXaXRoKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0sIGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBhICsgYiArIGM7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gWzExMSwgMjIyXVxuICAgICAqL1xuICAgIHZhciB6aXBXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBpdGVyYXRlZSA9IGxlbmd0aCA+IDEgPyBhcnJheXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGl0ZXJhdGVlID0gdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgPyAoYXJyYXlzLnBvcCgpLCBpdGVyYXRlZSkgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdW56aXBXaXRoKGFycmF5cywgaXRlcmF0ZWUpO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UgdGhhdCB3cmFwcyBgdmFsdWVgIHdpdGggZXhwbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuIFRoZSByZXN1bHQgb2Ygc3VjaCBzZXF1ZW5jZXMgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiB2YXIgeW91bmdlc3QgPSBfXG4gICAgICogICAuY2hhaW4odXNlcnMpXG4gICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAqICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICogICAgIHJldHVybiBvLnVzZXIgKyAnIGlzICcgKyBvLmFnZTtcbiAgICAgKiAgIH0pXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNoYWluKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoKHZhbHVlKTtcbiAgICAgIHJlc3VsdC5fX2NoYWluX18gPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIGBpbnRlcmNlcHRvcmAgYW5kIHJldHVybnMgYHZhbHVlYC4gVGhlIGludGVyY2VwdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgKiBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UgaW4gb3JkZXIgdG8gbW9kaWZ5IGludGVybWVkaWF0ZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAqICAudGFwKGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICogICAgLy8gTXV0YXRlIGlucHV0IGFycmF5LlxuICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAqICB9KVxuICAgICAqICAucmV2ZXJzZSgpXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhcCh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnRhcGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJwYXNzIHRocnVcIiB2YWx1ZXMgcmVwbGFjaW5nIGludGVybWVkaWF0ZVxuICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKCcgIGFiYyAgJylcbiAgICAgKiAgLmNoYWluKClcbiAgICAgKiAgLnRyaW0oKVxuICAgICAqICAudGhydShmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAqICB9KVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhydSh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5hdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfKG9iamVjdCkuYXQoWydhWzBdLmIuYycsICdhWzFdJ10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIHdyYXBwZXJBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKHBhdGhzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0ID0gbGVuZ3RoID8gcGF0aHNbMF0gOiAwLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXyxcbiAgICAgICAgICBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gYmFzZUF0KG9iamVjdCwgcGF0aHMpOyB9O1xuXG4gICAgICBpZiAobGVuZ3RoID4gMSB8fCB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCB8fFxuICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikgfHwgIWlzSW5kZXgoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdGFydCwgK3N0YXJ0ICsgKGxlbmd0aCA/IDEgOiAwKSk7XG4gICAgICB2YWx1ZS5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAnYXJncyc6IFtpbnRlcmNlcHRvcl0sXG4gICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSwgdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgICAgaWYgKGxlbmd0aCAmJiAhYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2Ugd2l0aCBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjaGFpblxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycykuaGVhZCgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKVxuICAgICAqICAgLmNoYWluKClcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC5waWNrKCd1c2VyJylcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNoYWluKCkge1xuICAgICAgcmV0dXJuIGNoYWluKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21taXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAqIHZhciB3cmFwcGVkID0gXyhhcnJheSkucHVzaCgzKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubGFzdCgpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCkge1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSwgdGhpcy5fX2NoYWluX18pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5leHQgdmFsdWUgb24gYSB3cmFwcGVkIG9iamVjdCBmb2xsb3dpbmcgdGhlXG4gICAgICogW2l0ZXJhdG9yIHByb3RvY29sXShodHRwczovL21kbi5pby9pdGVyYXRpb25fcHJvdG9jb2xzI2l0ZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG5leHRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXh0IGl0ZXJhdG9yIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMSB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDIgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IHRydWUsICd2YWx1ZSc6IHVuZGVmaW5lZCB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlck5leHQoKSB7XG4gICAgICBpZiAodGhpcy5fX3ZhbHVlc19fID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdG9BcnJheSh0aGlzLnZhbHVlKCkpO1xuICAgICAgfVxuICAgICAgdmFyIGRvbmUgPSB0aGlzLl9faW5kZXhfXyA+PSB0aGlzLl9fdmFsdWVzX18ubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtcblxuICAgICAgcmV0dXJuIHsgJ2RvbmUnOiBkb25lLCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBTeW1ib2wuaXRlcmF0b3JcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkW1N5bWJvbC5pdGVyYXRvcl0oKSA9PT0gd3JhcHBlZDtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBBcnJheS5mcm9tKHdyYXBwZWQpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgcGxhbnRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKS5tYXAoc3F1YXJlKTtcbiAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICpcbiAgICAgKiBvdGhlci52YWx1ZSgpO1xuICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUGxhbnQodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgcGFyZW50ID0gdGhpcztcblxuICAgICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpIHtcbiAgICAgICAgdmFyIGNsb25lID0gd3JhcHBlckNsb25lKHBhcmVudCk7XG4gICAgICAgIGNsb25lLl9faW5kZXhfXyA9IDA7XG4gICAgICAgIGNsb25lLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IGNsb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91cyA9IGNsb25lO1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuX193cmFwcGVkX187XG4gICAgICB9XG4gICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIHdyYXBwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8oYXJyYXkpLnJldmVyc2UoKS52YWx1ZSgpXG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgdmFyIHdyYXBwZWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSB7XG4gICAgICAgICAgd3JhcHBlZCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVkID0gd3JhcHBlZC5yZXZlcnNlKCk7XG4gICAgICAgIHdyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAgICdhcmdzJzogW3JldmVyc2VdLFxuICAgICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCwgdGhpcy5fX2NoYWluX18pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudGhydShyZXZlcnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyB0b0pTT04sIHZhbHVlT2ZcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclZhbHVlKCkge1xuICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXywgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IHdhcyByZXR1cm5lZCBieSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvdW50QnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiAyLCAnNSc6IDEgfVxuICAgICAqL1xuICAgIHZhciBjb3VudEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICArK3Jlc3VsdFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBbZW1wdHkgY29sbGVjdGlvbnNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcHR5X3NldCkgYmVjYXVzZVxuICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICogZWxlbWVudHMgb2YgZW1wdHkgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmV2ZXJ5KFt0cnVlLCAxLCBudWxsLCAneWVzJ10sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUV2ZXJ5IDogYmFzZUV2ZXJ5O1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5yZWplY3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAncGViYmxlcydcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqL1xuICAgIHZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9Y29sbGVjdGlvbi5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3QoWzEsIDIsIDMsIDRdLCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgdmFyIGZpbmRMYXN0ID0gY3JlYXRlRmluZChmaW5kTGFzdEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmbGF0dGVuZWQgYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYFxuICAgICAqIHRocnUgYGl0ZXJhdGVlYCBhbmQgZmxhdHRlbmluZyB0aGUgbWFwcGVkIHJlc3VsdHMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbbiwgbl07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlZXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZWVwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgSU5GSU5JVFkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVwdGg9MV0gVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlcHRoKFsxLCAyXSwgZHVwbGljYXRlLCAyKTtcbiAgICAgKiAvLyA9PiBbWzEsIDFdLCBbMiwgMl1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlcHRoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBkZXB0aCkge1xuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAgICAgKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGVhY2hcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvckVhY2hgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGFsaWFzIGVhY2hSaWdodFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaFJpZ2h0KFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAyYCB0aGVuIGAxYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaFJpZ2h0IDogYmFzZUVhY2hSaWdodDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBvcmRlciBvZiBncm91cGVkIHZhbHVlc1xuICAgICAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICAgICAqIHZhbHVlIG9mIGVhY2gga2V5IGlzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAqIGtleS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3JvdXBCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiBbNC4yXSwgJzYnOiBbNi4xLCA2LjNdIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZ3JvdXBCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICAgICAqL1xuICAgIHZhciBncm91cEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgW3ZhbHVlXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiBgY29sbGVjdGlvbmAuIElmIGBjb2xsZWN0aW9uYCBpcyBhIHN0cmluZywgaXQnc1xuICAgICAqIGNoZWNrZWQgZm9yIGEgc3Vic3RyaW5nIG9mIGB2YWx1ZWAsIG90aGVyd2lzZVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogaXMgdXNlZCBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXNcbiAgICAgKiB0aGUgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyh7ICdhJzogMSwgJ2InOiAyIH0sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoJ2FiY2QnLCAnYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICBmcm9tSW5kZXggPSAoZnJvbUluZGV4ICYmICFndWFyZCkgPyB0b0ludGVnZXIoZnJvbUluZGV4KSA6IDA7XG5cbiAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgICAgIGZyb21JbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBmcm9tSW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pXG4gICAgICAgID8gKGZyb21JbmRleCA8PSBsZW5ndGggJiYgY29sbGVjdGlvbi5pbmRleE9mKHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpXG4gICAgICAgIDogKCEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nXG4gICAgICogYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgZWFjaCBpbnZva2VkIG1ldGhvZC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogYXJlIHByb3ZpZGVkIHRvIGVhY2ggaW52b2tlZCBtZXRob2QuIElmIGBwYXRoYCBpcyBhIGZ1bmN0aW9uLCBpdCdzIGludm9rZWRcbiAgICAgKiBmb3IsIGFuZCBgdGhpc2AgYm91bmQgdG8sIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZSBvclxuICAgICAqICB0aGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGVhY2ggbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbWzUsIDEsIDddLCBbMywgMiwgMV1dLCAnc29ydCcpO1xuICAgICAqIC8vID0+IFtbMSwgNSwgN10sIFsxLCAyLCAzXV1cbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFsxMjMsIDQ1Nl0sIFN0cmluZy5wcm90b3R5cGUuc3BsaXQsICcnKTtcbiAgICAgKiAvLyA9PiBbWycxJywgJzInLCAnMyddLCBbJzQnLCAnNScsICc2J11dXG4gICAgICovXG4gICAgdmFyIGludm9rZU1hcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGlzRnVuYyA9IHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXNGdW5jID8gYXBwbHkocGF0aCwgdmFsdWUsIGFyZ3MpIDogYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbGFzdCBlbGVtZW50IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBrZXkuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtcbiAgICAgKiAgIHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LFxuICAgICAqICAgeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCBmdW5jdGlvbihvKSB7XG4gICAgICogICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShvLmNvZGUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ2QnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksICdkaXInKTtcbiAgICAgKiAvLyA9PiB7ICdsZWZ0JzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdyaWdodCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqL1xuICAgIHZhciBrZXlCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIHZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICAgICAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICAgICAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdXG4gICAgICpcbiAgICAgKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRCeWAgZXhjZXB0IHRoYXQgaXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIHNvcnRcbiAgICAgKiBvcmRlcnMgb2YgdGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlc1xuICAgICAqIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yXG4gICAgICogZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlciBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXlbXXxGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IFtvcmRlcnNdIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBTb3J0IGJ5IGB1c2VyYCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIGJ5IGBhZ2VgIGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICogXy5vcmRlckJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10sIFsnYXNjJywgJ2Rlc2MnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycywgZ3VhcmQpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0FycmF5KGl0ZXJhdGVlcykpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gaXRlcmF0ZWVzID09IG51bGwgPyBbXSA6IFtpdGVyYXRlZXNdO1xuICAgICAgfVxuICAgICAgb3JkZXJzID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBvcmRlcnM7XG4gICAgICBpZiAoIWlzQXJyYXkob3JkZXJzKSkge1xuICAgICAgICBvcmRlcnMgPSBvcmRlcnMgPT0gbnVsbCA/IFtdIDogW29yZGVyc107XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byB0d28gZ3JvdXBzLCB0aGUgZmlyc3Qgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IsIHRoZSBzZWNvbmQgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleSBmb3IuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydwZWJibGVzJ10sIFsnYmFybmV5JywgJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsICdwZWJibGVzJ10sIFsnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKi9cbiAgICB2YXIgcGFydGl0aW9uID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFtrZXkgPyAwIDogMV0ucHVzaCh2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24oKSB7IHJldHVybiBbW10sIFtdXTsgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZWR1Y2VzIGBjb2xsZWN0aW9uYCB0byBhIHZhbHVlIHdoaWNoIGlzIHRoZSBhY2N1bXVsYXRlZCByZXN1bHQgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAgICAgKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gICAgICogaXMgbm90IGdpdmVuLCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgaXMgdXNlZCBhcyB0aGUgaW5pdGlhbFxuICAgICAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICAgICAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gICAgICogYW5kIGBzb3J0QnlgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICAgICAqICAgcmV0dXJuIHN1bSArIG47XG4gICAgICogfSwgMCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZWR1Y2UoeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmVkdWNlYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbWzAsIDFdLCBbMiwgM10sIFs0LCA1XV07XG4gICAgICpcbiAgICAgKiBfLnJlZHVjZVJpZ2h0KGFycmF5LCBmdW5jdGlvbihmbGF0dGVuZWQsIG90aGVyKSB7XG4gICAgICogICByZXR1cm4gZmxhdHRlbmVkLmNvbmNhdChvdGhlcik7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA1LCAyLCAzLCAwLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2VSaWdodCA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2hSaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmZpbHRlcmA7IHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYFxuICAgICAqIHRoYXQgYHByZWRpY2F0ZWAgZG9lcyAqKm5vdCoqIHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5maWx0ZXJcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5yZWplY3QodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVqZWN0KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZSA6IGJhc2VTYW1wbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGBuYCByYW5kb20gZWxlbWVudHMgYXQgdW5pcXVlIGtleXMgZnJvbSBgY29sbGVjdGlvbmAgdXAgdG8gdGhlXG4gICAgICogc2l6ZSBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzMsIDFdXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCA0KTtcbiAgICAgKiAvLyA9PiBbMiwgMywgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZVNpemUgOiBiYXNlU2FtcGxlU2l6ZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc2h1ZmZsZWQgdmFsdWVzLCB1c2luZyBhIHZlcnNpb24gb2YgdGhlXG4gICAgICogW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1ZmZsZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2h1ZmZsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IFs0LCAxLCAzLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTaHVmZmxlIDogYmFzZVNodWZmbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICAgICAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb2xsZWN0aW9uIHNpemUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2l6ZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uc2l6ZSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8uc2l6ZSgncGViYmxlcycpO1xuICAgICAqIC8vID0+IDdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaXplKGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc2l6ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFueSoqIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb21lKFtudWxsLCAwLCAneWVzJywgZmFsc2VdLCBCb29sZWFuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U29tZSA6IGJhc2VTb21lO1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICAgICAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICAgICAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCA0MF0sIFsnZnJlZCcsIDQ4XV1cbiAgICAgKi9cbiAgICB2YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICAgICAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gICAgICogfSwgXy5ub3coKSk7XG4gICAgICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgbm93ID0gY3R4Tm93IHx8IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbiAgICB9O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmJlZm9yZWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiBgZnVuY2Agb25jZSBpdCdzIGNhbGxlZCBgbmAgb3IgbW9yZSB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYmVmb3JlIGBmdW5jYCBpcyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXZlcyA9IFsncHJvZmlsZScsICdzZXR0aW5ncyddO1xuICAgICAqXG4gICAgICogdmFyIGRvbmUgPSBfLmFmdGVyKHNhdmVzLmxlbmd0aCwgZnVuY3Rpb24oKSB7XG4gICAgICogICBjb25zb2xlLmxvZygnZG9uZSBzYXZpbmchJyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goc2F2ZXMsIGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgKiAgIGFzeW5jU2F2ZSh7ICd0eXBlJzogdHlwZSwgJ2NvbXBsZXRlJzogZG9uZSB9KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdkb25lIHNhdmluZyEnIGFmdGVyIHRoZSB0d28gYXN5bmMgc2F2ZXMgaGF2ZSBjb21wbGV0ZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWZ0ZXIobiwgZnVuYykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHVwIHRvIGBuYCBhcmd1bWVudHMsXG4gICAgICogaWdub3JpbmcgYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgY2FwLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLmFyeShwYXJzZUludCwgMSkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnkoZnVuYywgbiwgZ3VhcmQpIHtcbiAgICAgIG4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IG47XG4gICAgICBuID0gKGZ1bmMgJiYgbiA9PSBudWxsKSA/IGZ1bmMubGVuZ3RoIDogbjtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQVJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHNcbiAgICAgKiBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hpbGUgaXQncyBjYWxsZWQgbGVzcyB0aGFuIGBuYCB0aW1lcy4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBhdCB3aGljaCBgZnVuY2AgaXMgbm8gbG9uZ2VyIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uYmVmb3JlKDUsIGFkZENvbnRhY3RUb0xpc3QpKTtcbiAgICAgKiAvLyA9PiBBbGxvd3MgYWRkaW5nIHVwIHRvIDQgY29udGFjdHMgdG8gdGhlIGxpc3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmVmb3JlKG4sIGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uID4gMCkge1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8PSAxKSB7XG4gICAgICAgICAgZnVuYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2BcbiAgICAgKiBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgbmF0aXZlIGBGdW5jdGlvbiNiaW5kYCwgdGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBiaW5kLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmQpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgb2JqZWN0W2tleV1gIHdpdGggYHBhcnRpYWxzYFxuICAgICAqIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIGBfLmJpbmRgIGJ5IGFsbG93aW5nIGJvdW5kIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VcbiAgICAgKiBtZXRob2RzIHRoYXQgbWF5IGJlIHJlZGVmaW5lZCBvciBkb24ndCB5ZXQgZXhpc3QuIFNlZVxuICAgICAqIFtQZXRlciBNaWNoYXV4J3MgYXJ0aWNsZV0oaHR0cDovL3BldGVyLm1pY2hhdXguY2EvYXJ0aWNsZXMvbGF6eS1mdW5jdGlvbi1kZWZpbml0aW9uLXBhdHRlcm4pXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kS2V5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAndXNlcic6ICdmcmVkJyxcbiAgICAgKiAgICdncmVldCc6IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiBvYmplY3QuZ3JlZXQgPSBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICd5YSAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kS2V5ID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBrZXksIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZEtleSkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoa2V5LCBiaXRtYXNrLCBvYmplY3QsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYXJndW1lbnRzIG9mIGBmdW5jYCBhbmQgZWl0aGVyIGludm9rZXNcbiAgICAgKiBgZnVuY2AgcmV0dXJuaW5nIGl0cyByZXN1bHQsIGlmIGF0IGxlYXN0IGBhcml0eWAgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlXG4gICAgICogYmVlbiBwcm92aWRlZCwgb3IgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVtYWluaW5nIGBmdW5jYFxuICAgICAqIGFyZ3VtZW50cywgYW5kIHNvIG9uLiBUaGUgYXJpdHkgb2YgYGZ1bmNgIG1heSBiZSBzcGVjaWZpZWQgaWYgYGZ1bmMubGVuZ3RoYFxuICAgICAqIGlzIG5vdCBzdWZmaWNpZW50LlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEpKDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMSkoXywgMykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnkoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeS5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jdXJyeWAgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBhcHBsaWVkIHRvIGBmdW5jYFxuICAgICAqIGluIHRoZSBtYW5uZXIgb2YgYF8ucGFydGlhbFJpZ2h0YCBpbnN0ZWFkIG9mIGBfLnBhcnRpYWxgLlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5UmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnlSaWdodChhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgzKSgyKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMiwgMykoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDMpKDEsIF8pKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5UmlnaHQoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeVJpZ2h0LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAgICAgKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAgICAgKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gICAgICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gICAgICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gICAgICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICAgICAqIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICAgICAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gICAgICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gICAgICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICAgICAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxhc3RBcmdzLFxuICAgICAgICAgIGxhc3RUaGlzLFxuICAgICAgICAgIG1heFdhaXQsXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIHRpbWVySWQsXG4gICAgICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgICAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICAgICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgICAgICByZXR1cm4gbWF4aW5nXG4gICAgICAgICAgPyBuYXRpdmVNaW4odGltZVdhaXRpbmcsIG1heFdhaXQgLSB0aW1lU2luY2VMYXN0SW52b2tlKVxuICAgICAgICAgIDogdGltZVdhaXRpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHNob3VsZEludm9rZSh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgICAgIC8vIEVpdGhlciB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsLCBhY3Rpdml0eSBoYXMgc3RvcHBlZCBhbmQgd2UncmUgYXQgdGhlXG4gICAgICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICAgICAgcmV0dXJuIChsYXN0Q2FsbFRpbWUgPT09IHVuZGVmaW5lZCB8fCAodGltZVNpbmNlTGFzdENhbGwgPj0gd2FpdCkgfHxcbiAgICAgICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB0aW1lckV4cGlyZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJhaWxpbmdFZGdlKHRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHJlbWFpbmluZ1dhaXQodGltZSkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgICAgICB0aW1lcklkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAgICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgICAgIGlmICh0cmFpbGluZyAmJiBsYXN0QXJncykge1xuICAgICAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgICAgIGlzSW52b2tpbmcgPSBzaG91bGRJbnZva2UodGltZSk7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICAgICAgbGFzdENhbGxUaW1lID0gdGltZTtcblxuICAgICAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgaW52b2NhdGlvbnMgaW4gYSB0aWdodCBsb29wLlxuICAgICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICAgICAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gICAgICByZXR1cm4gZGVib3VuY2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmVycyBpbnZva2luZyB0aGUgYGZ1bmNgIHVudGlsIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzIGNsZWFyZWQuIEFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWZlci5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lciBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbih0ZXh0KSB7XG4gICAgICogICBjb25zb2xlLmxvZyh0ZXh0KTtcbiAgICAgKiB9LCAnZGVmZXJyZWQnKTtcbiAgICAgKiAvLyA9PiBMb2dzICdkZWZlcnJlZCcgYWZ0ZXIgb25lIG1pbGxpc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWZlciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgMSwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIGBmdW5jYCBhZnRlciBgd2FpdGAgbWlsbGlzZWNvbmRzLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lciBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWxheShmdW5jdGlvbih0ZXh0KSB7XG4gICAgICogICBjb25zb2xlLmxvZyh0ZXh0KTtcbiAgICAgKiB9LCAxMDAwLCAnbGF0ZXInKTtcbiAgICAgKiAvLyA9PiBMb2dzICdsYXRlcicgYWZ0ZXIgb25lIHNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVsYXkgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIHRvTnVtYmVyKHdhaXQpIHx8IDAsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBhcmd1bWVudHMgcmV2ZXJzZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBmbGlwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxpcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZsaXBwZWQgPSBfLmZsaXAoZnVuY3Rpb24oKSB7XG4gICAgICogICByZXR1cm4gXy50b0FycmF5KGFyZ3VtZW50cyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBmbGlwcGVkKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gWydkJywgJ2MnLCAnYicsICdhJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGlwKGZ1bmMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfRkxJUF9GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICAgICAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAgICAgKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAgICAgKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICAgICAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICAgICAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gICAgICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAgICAgKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICAgICAqXG4gICAgICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiB2YWx1ZXMob3RoZXIpO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqXG4gICAgICogb2JqZWN0LmEgPSAyO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gICAgICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKlxuICAgICAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gICAgICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgICAgIHJldHVybiBtZW1vaXplZDtcbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgYE1hcENhY2hlYC5cbiAgICBtZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBuZWdhdGVzIHRoZSByZXN1bHQgb2YgdGhlIHByZWRpY2F0ZSBgZnVuY2AuIFRoZVxuICAgICAqIGBmdW5jYCBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIHByZWRpY2F0ZSB0byBuZWdhdGUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbmVnYXRlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKFsxLCAyLCAzLCA0LCA1LCA2XSwgXy5uZWdhdGUoaXNFdmVuKSk7XG4gICAgICogLy8gPT4gWzEsIDMsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbmVnYXRlKHByZWRpY2F0ZSkge1xuICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMpO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdKTtcbiAgICAgICAgICBjYXNlIDI6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpcyByZXN0cmljdGVkIHRvIGludm9raW5nIGBmdW5jYCBvbmNlLiBSZXBlYXQgY2FsbHNcbiAgICAgKiB0byB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgaW52b2NhdGlvbi4gVGhlIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBpbml0aWFsaXplID0gXy5vbmNlKGNyZWF0ZUFwcGxpY2F0aW9uKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIC8vID0+IGBjcmVhdGVBcHBsaWNhdGlvbmAgaXMgaW52b2tlZCBvbmNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25jZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmVmb3JlKDIsIGZ1bmMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50cyB0cmFuc2Zvcm1lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFt0cmFuc2Zvcm1zPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGFyZ3VtZW50IHRyYW5zZm9ybXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGRvdWJsZWQobikge1xuICAgICAqICAgcmV0dXJuIG4gKiAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJBcmdzKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiBbeCwgeV07XG4gICAgICogfSwgW3NxdWFyZSwgZG91YmxlZF0pO1xuICAgICAqXG4gICAgICogZnVuYyg5LCAzKTtcbiAgICAgKiAvLyA9PiBbODEsIDZdXG4gICAgICpcbiAgICAgKiBmdW5jKDEwLCA1KTtcbiAgICAgKiAvLyA9PiBbMTAwLCAxMF1cbiAgICAgKi9cbiAgICB2YXIgb3ZlckFyZ3MgPSBjYXN0UmVzdChmdW5jdGlvbihmdW5jLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB0cmFuc2Zvcm1zID0gKHRyYW5zZm9ybXMubGVuZ3RoID09IDEgJiYgaXNBcnJheSh0cmFuc2Zvcm1zWzBdKSlcbiAgICAgICAgPyBhcnJheU1hcCh0cmFuc2Zvcm1zWzBdLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpXG4gICAgICAgIDogYXJyYXlNYXAoYmFzZUZsYXR0ZW4odHJhbnNmb3JtcywgMSksIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG5cbiAgICAgIHZhciBmdW5jc0xlbmd0aCA9IHRyYW5zZm9ybXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4oYXJncy5sZW5ndGgsIGZ1bmNzTGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gdHJhbnNmb3Jtc1tpbmRleF0uY2FsbCh0aGlzLCBhcmdzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZVxuICAgICAqIGFyZ3VtZW50cyBpdCByZWNlaXZlcy4gVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5iaW5kYCBleGNlcHQgaXQgZG9lcyAqKm5vdCoqXG4gICAgICogYWx0ZXIgdGhlIGB0aGlzYCBiaW5kaW5nLlxuICAgICAqXG4gICAgICogVGhlIGBfLnBhcnRpYWwucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHNheUhlbGxvVG8gPSBfLnBhcnRpYWwoZ3JlZXQsICdoZWxsbycpO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWwoZ3JlZXQsIF8sICdmcmVkJyk7XG4gICAgICogZ3JlZXRGcmVkKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkJ1xuICAgICAqL1xuICAgIHZhciBwYXJ0aWFsID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsKSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnBhcnRpYWxgIGV4Y2VwdCB0aGF0IHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50c1xuICAgICAqIGFyZSBhcHBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLnBhcnRpYWxSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdmcmVkJyk7XG4gICAgICogZ3JlZXRGcmVkKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIHNheUhlbGxvVG8gPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2hlbGxvJywgXyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqL1xuICAgIHZhciBwYXJ0aWFsUmlnaHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWxSaWdodCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBhcmd1bWVudHMgYXJyYW5nZWQgYWNjb3JkaW5nXG4gICAgICogdG8gdGhlIHNwZWNpZmllZCBgaW5kZXhlc2Agd2hlcmUgdGhlIGFyZ3VtZW50IHZhbHVlIGF0IHRoZSBmaXJzdCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgdGhlIGFyZ3VtZW50IHZhbHVlIGF0IHRoZSBzZWNvbmQgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZWFycmFuZ2UgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcmd1bWVudCBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcmVhcmdlZCA9IF8ucmVhcmcoZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9LCBbMiwgMCwgMV0pO1xuICAgICAqXG4gICAgICogcmVhcmdlZCgnYicsICdjJywgJ2EnKVxuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIHZhciByZWFyZyA9IGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmMsIGluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUkVBUkdfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgaW5kZXhlcyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgZnJvbSBgc3RhcnRgIGFuZCBiZXlvbmQgcHJvdmlkZWQgYXNcbiAgICAgKiBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbcmVzdCBwYXJhbWV0ZXJdKGh0dHBzOi8vbWRuLmlvL3Jlc3RfcGFyYW1ldGVycykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNheSA9IF8ucmVzdChmdW5jdGlvbih3aGF0LCBuYW1lcykge1xuICAgICAqICAgcmV0dXJuIHdoYXQgKyAnICcgKyBfLmluaXRpYWwobmFtZXMpLmpvaW4oJywgJykgK1xuICAgICAqICAgICAoXy5zaXplKG5hbWVzKSA+IDEgPyAnLCAmICcgOiAnJykgKyBfLmxhc3QobmFtZXMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KCdoZWxsbycsICdmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQsIGJhcm5leSwgJiBwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jLCBzdGFydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlIGZ1bmN0aW9uIGFuZCBhbiBhcnJheSBvZiBhcmd1bWVudHMgbXVjaCBsaWtlXG4gICAgICogW2BGdW5jdGlvbiNhcHBseWBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtzcHJlYWQgb3BlcmF0b3JdKGh0dHBzOi8vbWRuLmlvL3NwcmVhZF9vcGVyYXRvcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBzcHJlYWQgYXJndW1lbnRzIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHNwcmVhZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNheSA9IF8uc3ByZWFkKGZ1bmN0aW9uKHdobywgd2hhdCkge1xuICAgICAqICAgcmV0dXJuIHdobyArICcgc2F5cyAnICsgd2hhdDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheShbJ2ZyZWQnLCAnaGVsbG8nXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQgc2F5cyBoZWxsbydcbiAgICAgKlxuICAgICAqIHZhciBudW1iZXJzID0gUHJvbWlzZS5hbGwoW1xuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDQwKSxcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSgzNilcbiAgICAgKiBdKTtcbiAgICAgKlxuICAgICAqIG51bWJlcnMudGhlbihfLnNwcmVhZChmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4geCArIHk7XG4gICAgICogfSkpO1xuICAgICAqIC8vID0+IGEgUHJvbWlzZSBvZiA3NlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNwcmVhZChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PSBudWxsID8gMCA6IG5hdGl2ZU1heCh0b0ludGVnZXIoc3RhcnQpLCAwKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFyZ3Nbc3RhcnRdLFxuICAgICAgICAgICAgb3RoZXJBcmdzID0gY2FzdFNsaWNlKGFyZ3MsIDAsIHN0YXJ0KTtcblxuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBhcnJheVB1c2gob3RoZXJBcmdzLCBhcnJheSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgdGhyb3R0bGVkIGZ1bmN0aW9uIHRoYXQgb25seSBpbnZva2VzIGBmdW5jYCBhdCBtb3N0IG9uY2UgcGVyXG4gICAgICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAgICAgKiBtZXRob2QgdG8gY2FuY2VsIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvXG4gICAgICogaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgXG4gICAgICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICAgICAqIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZCB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGVcbiAgICAgKiB0aHJvdHRsZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIHRocm90dGxlZCBmdW5jdGlvbiByZXR1cm4gdGhlXG4gICAgICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy50aHJvdHRsZWAgYW5kIGBfLmRlYm91bmNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSBpbnZvY2F0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGV4Y2Vzc2l2ZWx5IHVwZGF0aW5nIHRoZSBwb3NpdGlvbiB3aGlsZSBzY3JvbGxpbmcuXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGByZW5ld1Rva2VuYCB3aGVuIHRoZSBjbGljayBldmVudCBpcyBmaXJlZCwgYnV0IG5vdCBtb3JlIHRoYW4gb25jZSBldmVyeSA1IG1pbnV0ZXMuXG4gICAgICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB0aHJvdHRsZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCB0aHJvdHRsZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmxlYWRpbmcgOiBsZWFkaW5nO1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlYm91bmNlKGZ1bmMsIHdhaXQsIHtcbiAgICAgICAgJ2xlYWRpbmcnOiBsZWFkaW5nLFxuICAgICAgICAnbWF4V2FpdCc6IHdhaXQsXG4gICAgICAgICd0cmFpbGluZyc6IHRyYWlsaW5nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHVwIHRvIG9uZSBhcmd1bWVudCwgaWdub3JpbmcgYW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8udW5hcnkocGFyc2VJbnQpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5hcnkoZnVuYykge1xuICAgICAgcmV0dXJuIGFyeShmdW5jLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBgdmFsdWVgIHRvIGB3cmFwcGVyYCBhcyBpdHMgZmlyc3RcbiAgICAgKiBhcmd1bWVudC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBmdW5jdGlvbiBhcmUgYXBwZW5kZWRcbiAgICAgKiB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgYHdyYXBwZXJgLiBUaGUgd3JhcHBlciBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFt3cmFwcGVyPWlkZW50aXR5XSBUaGUgd3JhcHBlciBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHAgPSBfLndyYXAoXy5lc2NhcGUsIGZ1bmN0aW9uKGZ1bmMsIHRleHQpIHtcbiAgICAgKiAgIHJldHVybiAnPHA+JyArIGZ1bmModGV4dCkgKyAnPC9wPic7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBwKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICc8cD5mcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXM8L3A+J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXAodmFsdWUsIHdyYXBwZXIpIHtcbiAgICAgIHJldHVybiBwYXJ0aWFsKGNhc3RGdW5jdGlvbih3cmFwcGVyKSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgYXMgYW4gYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoMSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbbnVsbF1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZF1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKiBjb25zb2xlLmxvZyhfLmNhc3RBcnJheShhcnJheSkgPT09IGFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5KCkge1xuICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gICAgICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAgICAgKiBhbmQgc3VwcG9ydHMgY2xvbmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLCBkYXRlIG9iamVjdHMsIG1hcHMsXG4gICAgICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gICAgICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAgICAgKiBhcyBwbGFpbiBvYmplY3RzLiBBbiBlbXB0eSBvYmplY3QgaXMgcmV0dXJuZWQgZm9yIHVuY2xvbmVhYmxlIHZhbHVlcyBzdWNoXG4gICAgICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICAgICAqXG4gICAgICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKHNoYWxsb3dbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgY2xvbmVkIHZhbHVlLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCxcbiAgICAgKiBjbG9uaW5nIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHVwIHRvIGZvdXIgYXJndW1lbnRzOyAodmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVEZWVwV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUoZmFsc2UpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBlbCA9IF8uY2xvbmVXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICAgICAqXG4gICAgICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lV2l0aGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKHRydWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBlbCA9IF8uY2xvbmVEZWVwV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXBXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgb2JqZWN0YCBjb25mb3JtcyB0byBgc291cmNlYCBieSBpbnZva2luZyB0aGUgcHJlZGljYXRlXG4gICAgICogcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zYCB3aGVuIGBzb3VyY2VgIGlzXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMjsgfSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2UgPT0gbnVsbCB8fCBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVxKCdhJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVxKE5hTiwgTmFOKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5ndCgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheUJ1ZmZlcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcnJheUJ1ZmZlciA9IG5vZGVJc0FycmF5QnVmZmVyID8gYmFzZVVuYXJ5KG5vZGVJc0FycmF5QnVmZmVyKSA6IGJhc2VJc0FycmF5QnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICAgICAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAgICAgKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gICAgICogaXMgYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYm9vbGVhbiBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJvb2xlYW4sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4oZmFsc2UpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGJvb2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBEYXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUobmV3IERhdGUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzRGF0ZSA9IG5vZGVJc0RhdGUgPyBiYXNlVW5hcnkobm9kZUlzRGF0ZSkgOiBiYXNlSXNEYXRlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgRE9NIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgRE9NIGVsZW1lbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VsZW1lbnQoZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VsZW1lbnQoJzxib2R5PicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMSAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAgICAgKlxuICAgICAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICAgICAqIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAgICAgKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gICAgICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eShudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkodHJ1ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICAgICAqIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gICAgICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLFxuICAgICAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gICAgICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gICAgICogbm9kZXMgYXJlIGNvbXBhcmVkIGJ5IHN0cmljdCBlcXVhbGl0eSwgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogb2JqZWN0ID09PSBvdGhlcjtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCB1cCB0b1xuICAgICAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICAgICAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcob3RoVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB0cnVlO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICAgICAqIHZhciBvdGhlciA9IFsnaGknLCAnZ29vZGJ5ZSddO1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcih2YWx1ZSwgb3RoZXIpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gYEVycm9yYCwgYEV2YWxFcnJvcmAsIGBSYW5nZUVycm9yYCwgYFJlZmVyZW5jZUVycm9yYCxcbiAgICAgKiBgU3ludGF4RXJyb3JgLCBgVHlwZUVycm9yYCwgb3IgYFVSSUVycm9yYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRXJyb3IoRXJyb3IpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgICAgIHJldHVybiB0YWcgPT0gZXJyb3JUYWcgfHwgdGFnID09IGRvbUV4Y1RhZyB8fFxuICAgICAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBwcmltaXRpdmUgbnVtYmVyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNGaW5pdGVgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNGaW5pdGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiBuYXRpdmVJc0Zpbml0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbihfKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gICAgICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgICAgIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgICAgIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT0gdG9JbnRlZ2VyKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgICAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gICAgICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICAgICAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3Qoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gICAgICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IE1hcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBgb2JqZWN0YCBhbmQgYHNvdXJjZWAgdG9cbiAgICAgKiBkZXRlcm1pbmUgaWYgYG9iamVjdGAgY29udGFpbnMgZXF1aXZhbGVudCBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5tYXRjaGVzYCB3aGVuIGBzb3VyY2VgIGlzXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXRjaChvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc01hdGNoYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggZml2ZVxuICAgICAqIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwgaW5kZXh8a2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcoc3JjVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB0cnVlO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdncmVldGluZyc6ICdoZWxsbycgfTtcbiAgICAgKiB2YXIgc291cmNlID0geyAnZ3JlZXRpbmcnOiAnaGknIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBOYU5gLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNOYU5gXShodHRwczovL21kbi5pby9OdW1iZXIvaXNOYU4pIGFuZCBpcyBub3QgdGhlIHNhbWUgYXNcbiAgICAgKiBnbG9iYWwgW2Bpc05hTmBdKGh0dHBzOi8vbWRuLmlvL2lzTmFOKSB3aGljaCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBgdW5kZWZpbmVkYCBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4oTmFOKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKG5ldyBOdW1iZXIoTmFOKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuICAgICAgLy8gQW4gYE5hTmAgcHJpbWl0aXZlIGlzIHRoZSBvbmx5IHZhbHVlIHRoYXQgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIGB0b1N0cmluZ1RhZ2AgY2hlY2sgZmlyc3QgdG8gYXZvaWQgZXJyb3JzIHdpdGggc29tZVxuICAgICAgLy8gQWN0aXZlWCBvYmplY3RzIGluIElFLlxuICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSAmJiB2YWx1ZSAhPSArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcmlzdGluZSBuYXRpdmUgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgY2FuJ3QgcmVsaWFibHkgZGV0ZWN0IG5hdGl2ZSBmdW5jdGlvbnMgaW4gdGhlIHByZXNlbmNlXG4gICAgICogb2YgdGhlIGNvcmUtanMgcGFja2FnZSBiZWNhdXNlIGNvcmUtanMgY2lyY3VtdmVudHMgdGhpcyBraW5kIG9mIGRldGVjdGlvbi5cbiAgICAgKiBEZXNwaXRlIG11bHRpcGxlIHJlcXVlc3RzLCB0aGUgY29yZS1qcyBtYWludGFpbmVyIGhhcyBtYWRlIGl0IGNsZWFyOiBhbnlcbiAgICAgKiBhdHRlbXB0IHRvIGZpeCB0aGUgZGV0ZWN0aW9uIHdpbGwgYmUgb2JzdHJ1Y3RlZC4gQXMgYSByZXN1bHQsIHdlJ3JlIGxlZnRcbiAgICAgKiB3aXRoIGxpdHRsZSBjaG9pY2UgYnV0IHRvIHRocm93IGFuIGVycm9yLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGFsc28gYWZmZWN0c1xuICAgICAqIHBhY2thZ2VzLCBsaWtlIFtiYWJlbC1wb2x5ZmlsbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmFiZWwtcG9seWZpbGwpLFxuICAgICAqIHdoaWNoIHJlbHkgb24gY29yZS1qcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hdGl2ZShfKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoaXNNYXNrYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKENPUkVfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBudWxsYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTnVsbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVsbCh2b2lkIDApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOdWxsKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE51bWJlcmAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUbyBleGNsdWRlIGBJbmZpbml0eWAsIGAtSW5maW5pdHlgLCBhbmQgYE5hTmAsIHdoaWNoIGFyZVxuICAgICAqIGNsYXNzaWZpZWQgYXMgbnVtYmVycywgdXNlIHRoZSBgXy5pc0Zpbml0ZWAgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gbnVtYmVyVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gICAgICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuOC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICAgICAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgICAgIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBSZWdFeHBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1JlZ0V4cCgvYWJjLyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1JlZ0V4cCgnL2FiYy8nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1JlZ0V4cCA9IG5vZGVJc1JlZ0V4cCA/IGJhc2VVbmFyeShub2RlSXNSZWdFeHApIDogYmFzZUlzUmVnRXhwO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIuIEFuIGludGVnZXIgaXMgc2FmZSBpZiBpdCdzIGFuIElFRUUtNzU0XG4gICAgICogZG91YmxlIHByZWNpc2lvbiBudW1iZXIgd2hpY2ggaXNuJ3QgdGhlIHJlc3VsdCBvZiBhIHJvdW5kZWQgdW5zYWZlIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc1NhZmVJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzU2FmZUludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0ludGVnZXIodmFsdWUpICYmIHZhbHVlID49IC1NQVhfU0FGRV9JTlRFR0VSICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTdHJpbmcoMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZChudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgV2Vha01hcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IE1hcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gd2Vha01hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtTZXRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHdlYWtTZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmx0KDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHQoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8ubHQoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHQgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VMdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDw9IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0FycmF5KHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KDEpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHN0cmluZ1RvQXJyYXkodmFsdWUpIDogY29weUFycmF5KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzeW1JdGVyYXRvciAmJiB2YWx1ZVtzeW1JdGVyYXRvcl0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICBmdW5jID0gdGFnID09IG1hcFRhZyA/IG1hcFRvQXJyYXkgOiAodGFnID09IHNldFRhZyA/IHNldFRvQXJyYXkgOiB2YWx1ZXMpO1xuXG4gICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMi4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICAgICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gcmVzdWx0ID8gKHJlbWFpbmRlciA/IHJlc3VsdCAtIHJlbWFpbmRlciA6IHJlc3VsdCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlciBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSBsZW5ndGggb2YgYW5cbiAgICAgKiBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDQyOTQ5NjcyOTVcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0xlbmd0aCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIDAsIE1BWF9BUlJBWV9MRU5HVEgpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b051bWJlcigzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IEluZmluaXR5XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgICAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAgICAgKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1N0cmluZyhudWxsKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZygtMCk7XG4gICAgICogLy8gPT4gJy0wJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+ICcxLDIsMydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgaWYgKGlzUHJvdG90eXBlKHNvdXJjZSkgfHwgaXNBcnJheUxpa2Uoc291cmNlKSkge1xuICAgICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgc291cmNlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ25Jbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMsICdkJzogNCB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGBwYXRoc2Agb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIGF0ID0gZmxhdFJlc3QoYmFzZUF0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgYHByb3RvdHlwZWAgb2JqZWN0LiBJZiBhXG4gICAgICogYHByb3BlcnRpZXNgIG9iamVjdCBpcyBnaXZlbiwgaXRzIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcHJvcGVydGllc10gVGhlIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gU2hhcGUoKSB7XG4gICAgICogICB0aGlzLnggPSAwO1xuICAgICAqICAgdGhpcy55ID0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBDaXJjbGUoKSB7XG4gICAgICogICBTaGFwZS5jYWxsKHRoaXMpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIENpcmNsZS5wcm90b3R5cGUgPSBfLmNyZWF0ZShTaGFwZS5wcm90b3R5cGUsIHtcbiAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgQ2lyY2xlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIFNoYXBlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHByb3BlcnRpZXMgPT0gbnVsbCA/IHJlc3VsdCA6IGJhc2VBc3NpZ24ocmVzdWx0LCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgICAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICAgICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICAgICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzRGVlcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICAgICAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5JyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRLZXlgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBhIGNvbGxlY3Rpb24gaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd25SaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAgICAgKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9ySW5gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdjJywgJ2InLCB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JJbmAgbG9ncyAnYScsICdiJywgdGhlbiAnYycuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvck93bmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93blJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYicgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9yT3duYCBsb2dzICdhJyB0aGVuICdiJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICogZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgICAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgaW52ZXJ0ZWQga2V5cyBhbmQgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqIElmIGBvYmplY3RgIGNvbnRhaW5zIGR1cGxpY2F0ZSB2YWx1ZXMsIHN1YnNlcXVlbnQgdmFsdWVzIG92ZXJ3cml0ZVxuICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6ICdjJywgJzInOiAnYicgfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnQgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0ucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXSA9IFtrZXldO1xuICAgICAgfVxuICAgIH0sIGdldEl0ZXJhdGVlKTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiBbMSwgMiwgMywgNF0gfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5pbnZva2Uob2JqZWN0LCAnYVswXS5iLmMuc2xpY2UnLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlID0gYmFzZVJlc3QoYmFzZUludm9rZSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy5rZXlzKCdoaScpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5c0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAqIHNhbWUgdmFsdWVzIGFzIGBvYmplY3RgIGFuZCBrZXlzIGdlbmVyYXRlZCBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGVcbiAgICAgKiBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgcmV0dXJuIGtleSArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwS2V5cyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwS2V5c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAgICAgKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICAgICAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBvdGhlciA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gICAgICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICB2YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICAgICAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH0pO1xuICAgICAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgKiBgcHJlZGljYXRlYCBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d29cbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBwaWNrQnkob2JqZWN0LCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wcyA9IGFycmF5TWFwKGdldEFsbEtleXNJbihvYmplY3QpLCBmdW5jdGlvbihwcm9wKSB7XG4gICAgICAgIHJldHVybiBbcHJvcF07XG4gICAgICB9KTtcbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHByb3BzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZ2V0YCBleGNlcHQgdGhhdCBpZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYVxuICAgICAqIGZ1bmN0aW9uIGl0J3MgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBpdHMgcGFyZW50IG9iamVjdCBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gcmVzb2x2ZS5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzEnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzInKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgXy5jb25zdGFudCgnZGVmYXVsdCcpKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN1bHQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBsb29wIGlzIGVudGVyZWQgd2hlbiBwYXRoIGlzIGVtcHR5LlxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgb2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3RbdG9LZXkocGF0aFtpbmRleF0pXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcbiAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICAgKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICogd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwIG9yIHNldCwgaXRzXG4gICAgICogZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlycyA9IGNyZWF0ZVRvUGFpcnMoa2V5cyk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzXG4gICAgICogZm9yIGBvYmplY3RgIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcFxuICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNJblxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlyc0luID0gY3JlYXRlVG9QYWlycyhrZXlzSW4pO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgKiBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIHRocnUgYGl0ZXJhdGVlYCwgd2l0aCBlYWNoIGludm9jYXRpb25cbiAgICAgKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czogKGFjY3VtdWxhdG9yLCB2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgY3VzdG9tIGFjY3VtdWxhdG9yIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDldXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gICAgICBpZiAoYWNjdW11bGF0b3IgPT0gbnVsbCkge1xuICAgICAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyID8gbmV3IEN0b3IgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0Z1bmN0aW9uKEN0b3IpID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSkgOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAoaXNBcnJMaWtlID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICAgICAqIF8udW5zZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgYWNjZXB0cyBgdXBkYXRlcmAgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiB2YWx1ZSB0byBzZXQuIFVzZSBgXy51cGRhdGVXaXRoYCB0byBjdXN0b21pemUgYHBhdGhgIGNyZWF0aW9uLiBUaGUgYHVwZGF0ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICdhWzBdLmIuYycsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gKiBuOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ3hbMF0ueS56JywgZnVuY3Rpb24obikgeyByZXR1cm4gbiA/IG4gKyAxIDogMDsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlcikge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZVdpdGgob2JqZWN0LCAnWzBdWzFdJywgXy5jb25zdGFudCgnYScpLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLnZhbHVlcygnaGknKTtcbiAgICAgKiAvLyA9PiBbJ2gnLCAnaSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eVxuICAgICAqIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGBudW1iZXJgIHdpdGhpbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jbGFtcCgtMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiAtNVxuICAgICAqXG4gICAgICogXy5jbGFtcCgxMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IHRvTnVtYmVyKHVwcGVyKTtcbiAgICAgICAgdXBwZXIgPSB1cHBlciA9PT0gdXBwZXIgPyB1cHBlciA6IDA7XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IHRvTnVtYmVyKGxvd2VyKTtcbiAgICAgICAgbG93ZXIgPSBsb3dlciA9PT0gbG93ZXIgPyBsb3dlciA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUNsYW1wKHRvTnVtYmVyKG51bWJlciksIGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBuYCBpcyBiZXR3ZWVuIGBzdGFydGAgYW5kIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIElmXG4gICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqIElmIGBzdGFydGAgaXMgZ3JlYXRlciB0aGFuIGBlbmRgIHRoZSBwYXJhbXMgYXJlIHN3YXBwZWQgdG8gc3VwcG9ydFxuICAgICAqIG5lZ2F0aXZlIHJhbmdlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgIH1cbiAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICByZXR1cm4gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9kdWNlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGEgbnVtYmVyIGJldHdlZW4gYDBgIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyXG4gICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAqIGZsb2F0cywgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcj0wXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt1cHBlcj0xXSBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDAsIDUpO1xuICAgICAqIC8vID0+IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1KTtcbiAgICAgKiAvLyA9PiBhbHNvIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1LCB0cnVlKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDEuMiwgNS4yKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDEuMiBhbmQgNS4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFuZG9tKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmbG9hdGluZyAmJiB0eXBlb2YgZmxvYXRpbmcgIT0gJ2Jvb2xlYW4nICYmIGlzSXRlcmF0ZWVDYWxsKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpKSB7XG4gICAgICAgIHVwcGVyID0gZmxvYXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHVwcGVyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gdXBwZXI7XG4gICAgICAgICAgdXBwZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGxvd2VyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA9PT0gdW5kZWZpbmVkICYmIHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB1cHBlciA9IDE7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG93ZXIgPSB0b0Zpbml0ZShsb3dlcik7XG4gICAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBwZXIgPSB0b0Zpbml0ZSh1cHBlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA+IHVwcGVyKSB7XG4gICAgICAgIHZhciB0ZW1wID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdXBwZXI7XG4gICAgICAgIHVwcGVyID0gdGVtcDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyB8fCBsb3dlciAlIDEgfHwgdXBwZXIgJSAxKSB7XG4gICAgICAgIHZhciByYW5kID0gbmF0aXZlUmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVNaW4obG93ZXIgKyAocmFuZCAqICh1cHBlciAtIGxvd2VyICsgZnJlZVBhcnNlRmxvYXQoJzFlLScgKyAoKHJhbmQgKyAnJykubGVuZ3RoIC0gMSkpKSksIHVwcGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqL1xuICAgIHZhciBjYW1lbENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICogdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhcGl0YWxpemVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXBpdGFsaXplKCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gICAgICogW0xhdGluLTEgU3VwcGxlbWVudF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGRlYnVyci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVidXJyKCdkw6lqw6AgdnUnKTtcbiAgICAgKiAvLyA9PiAnZGVqYSB2dSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJ1cnIoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIHN0cmluZyAmJiBzdHJpbmcucmVwbGFjZShyZUxhdGluLCBkZWJ1cnJMZXR0ZXIpLnJlcGxhY2UocmVDb21ib01hcmssICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPXN0cmluZy5sZW5ndGhdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggdXAgdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJywgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVuZHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxlbmd0aFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBsZW5ndGgpO1xuXG4gICAgICB2YXIgZW5kID0gcG9zaXRpb247XG4gICAgICBwb3NpdGlvbiAtPSB0YXJnZXQubGVuZ3RoO1xuICAgICAgcmV0dXJuIHBvc2l0aW9uID49IDAgJiYgc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBlbmQpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgY2hhcmFjdGVycyBcIiZcIiwgXCI8XCIsIFwiPlwiLCAnXCInLCBhbmQgXCInXCIgaW4gYHN0cmluZ2AgdG8gdGhlaXJcbiAgICAgKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm8gb3RoZXIgY2hhcmFjdGVycyBhcmUgZXNjYXBlZC4gVG8gZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIFRob3VnaCB0aGUgXCI+XCIgY2hhcmFjdGVyIGlzIGVzY2FwZWQgZm9yIHN5bW1ldHJ5LCBjaGFyYWN0ZXJzIGxpa2VcbiAgICAgKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICAgICAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAgICAgKiBbTWF0aGlhcyBCeW5lbnMncyBhcnRpY2xlXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvYW1iaWd1b3VzLWFtcGVyc2FuZHMpXG4gICAgICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBXaGVuIHdvcmtpbmcgd2l0aCBIVE1MIHlvdSBzaG91bGQgYWx3YXlzXG4gICAgICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAgICAgKiBYU1MgdmVjdG9ycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlcyB0aGUgYFJlZ0V4cGAgc3BlY2lhbCBjaGFyYWN0ZXJzIFwiXlwiLCBcIiRcIiwgXCJcXFwiLCBcIi5cIiwgXCIqXCIsIFwiK1wiLFxuICAgICAqIFwiP1wiLCBcIihcIiwgXCIpXCIsIFwiW1wiLCBcIl1cIiwgXCJ7XCIsIFwifVwiLCBhbmQgXCJ8XCIgaW4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZVJlZ0V4cCgnW2xvZGFzaF0oaHR0cHM6Ly9sb2Rhc2guY29tLyknKTtcbiAgICAgKiAvLyA9PiAnXFxbbG9kYXNoXFxdXFwoaHR0cHM6Ly9sb2Rhc2hcXC5jb20vXFwpJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1JlZ0V4cENoYXIudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW2tlYmFiIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1NwZWNpYWxfY2FzZV9zdHlsZXMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUga2ViYWIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICovXG4gICAgdmFyIGtlYmFiQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICctJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBzcGFjZSBzZXBhcmF0ZWQgd29yZHMsIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICovXG4gICAgdmFyIGxvd2VyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRnJlZCcpO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ2ZSRUQnXG4gICAgICovXG4gICAgdmFyIGxvd2VyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvTG93ZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC5cbiAgICAgKiBQYWRkaW5nIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGNhbid0IGJlIGV2ZW5seSBkaXZpZGVkIGJ5IGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4KTtcbiAgICAgKiAvLyA9PiAnICBhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIGlmICghbGVuZ3RoIHx8IHN0ckxlbmd0aCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBtaWQgPSAobGVuZ3RoIC0gc3RyTGVuZ3RoKSAvIDI7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUZsb29yKG1pZCksIGNoYXJzKSArXG4gICAgICAgIHN0cmluZyArXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlQ2VpbChtaWQpLCBjaGFycylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgcmlnaHQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJ2FiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkRW5kKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoc3RyaW5nICsgY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSlcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICcgICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1fYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRTdGFydChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykgKyBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGludGVnZXIgb2YgdGhlIHNwZWNpZmllZCByYWRpeC4gSWYgYHJhZGl4YCBpc1xuICAgICAqIGB1bmRlZmluZWRgIG9yIGAwYCwgYSBgcmFkaXhgIG9mIGAxMGAgaXMgdXNlZCB1bmxlc3MgYHZhbHVlYCBpcyBhXG4gICAgICogaGV4YWRlY2ltYWwsIGluIHdoaWNoIGNhc2UgYSBgcmFkaXhgIG9mIGAxNmAgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBhbGlnbnMgd2l0aCB0aGVcbiAgICAgKiBbRVM1IGltcGxlbWVudGF0aW9uXShodHRwczovL2VzNS5naXRodWIuaW8vI3gxNS4xLjIuMikgb2YgYHBhcnNlSW50YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl4PTEwXSBUaGUgcmFkaXggdG8gaW50ZXJwcmV0IGB2YWx1ZWAgYnkuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYXJzZUludCgnMDgnKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnMDgnLCAnMTAnXSwgXy5wYXJzZUludCk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgsIGd1YXJkKSB7XG4gICAgICBpZiAoZ3VhcmQgfHwgcmFkaXggPT0gbnVsbCkge1xuICAgICAgICByYWRpeCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHJhZGl4KSB7XG4gICAgICAgIHJhZGl4ID0gK3JhZGl4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZVBhcnNlSW50KHRvU3RyaW5nKHN0cmluZykucmVwbGFjZShyZVRyaW1TdGFydCwgJycpLCByYWRpeCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBlYXRzIHRoZSBnaXZlbiBzdHJpbmcgYG5gIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHJlcGVhdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJlcGVhdGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBlYXQoJyonLCAzKTtcbiAgICAgKiAvLyA9PiAnKioqJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDIpO1xuICAgICAqIC8vID0+ICdhYmNhYmMnXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMCk7XG4gICAgICogLy8gPT4gJydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJlcGVhdCh0b1N0cmluZyhzdHJpbmcpLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBtYXRjaGVzIGZvciBgcGF0dGVybmAgaW4gYHN0cmluZ2Agd2l0aCBgcmVwbGFjZW1lbnRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjcmVwbGFjZWBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9yZXBsYWNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IHJlcGxhY2VtZW50IFRoZSBtYXRjaCByZXBsYWNlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwbGFjZSgnSGkgRnJlZCcsICdGcmVkJywgJ0Jhcm5leScpO1xuICAgICAqIC8vID0+ICdIaSBCYXJuZXknXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwbGFjZSgpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgIHN0cmluZyA9IHRvU3RyaW5nKGFyZ3NbMF0pO1xuXG4gICAgICByZXR1cm4gYXJncy5sZW5ndGggPCAzID8gc3RyaW5nIDogc3RyaW5nLnJlcGxhY2UoYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc25ha2UgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU25ha2VfY2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzbmFrZSBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnLS1GT08tQkFSLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKi9cbiAgICB2YXIgc25ha2VDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJ18nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU3BsaXRzIGBzdHJpbmdgIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjc3BsaXRgXShodHRwczovL21kbi5pby9TdHJpbmcvc3BsaXQpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHNwbGl0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gc2VwYXJhdG9yIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byBzcGxpdCBieS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbWl0XSBUaGUgbGVuZ3RoIHRvIHRydW5jYXRlIHJlc3VsdHMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzdHJpbmcgc2VnbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3BsaXQoJ2EtYi1jJywgJy0nLCAyKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICBpZiAobGltaXQgJiYgdHlwZW9mIGxpbWl0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gbGltaXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfQVJSQVlfTEVOR1RIIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAoIWxpbWl0KSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChcbiAgICAgICAgICAgIHR5cGVvZiBzZXBhcmF0b3IgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIChzZXBhcmF0b3IgIT0gbnVsbCAmJiAhaXNSZWdFeHAoc2VwYXJhdG9yKSlcbiAgICAgICAgICApKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpO1xuICAgICAgICBpZiAoIXNlcGFyYXRvciAmJiBoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgICByZXR1cm4gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkoc3RyaW5nKSwgMCwgbGltaXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3N0YXJ0IGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1N0eWxpc3RpY19vcl9zcGVjaWFsaXNlZF91c2FnZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdGFydCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHN0YXJ0Q2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHVwcGVyRmlyc3Qod29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249MF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PSBudWxsXG4gICAgICAgID8gMFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBzdHJpbmcubGVuZ3RoKTtcblxuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG4gICAgICByZXR1cm4gc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIHRhcmdldC5sZW5ndGgpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCBjYW4gaW50ZXJwb2xhdGUgZGF0YSBwcm9wZXJ0aWVzXG4gICAgICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAgICAgKiBcImVzY2FwZVwiIGRlbGltaXRlcnMsIGFuZCBleGVjdXRlIEphdmFTY3JpcHQgaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuIERhdGFcbiAgICAgKiBwcm9wZXJ0aWVzIG1heSBiZSBhY2Nlc3NlZCBhcyBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGUuIElmIGEgc2V0dGluZ1xuICAgICAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJbiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgYF8udGVtcGxhdGVgIHV0aWxpemVzXG4gICAgICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gICAgICogZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICAgICAqIFtsb2Rhc2gncyBjdXN0b20gYnVpbGRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbG9kYXNoLmNvbS9jdXN0b20tYnVpbGRzKS5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICAgICAqIFtDaHJvbWUncyBleHRlbnNpb25zIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9zYW5kYm94aW5nRXZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSB0ZW1wbGF0ZSBzdHJpbmcuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICAgICAqICBUaGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXZhbHVhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmV2YWx1YXRlXVxuICAgICAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMuaW1wb3J0cz1fLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c11cbiAgICAgKiAgQW4gb2JqZWN0IHRvIGltcG9ydCBpbnRvIHRoZSB0ZW1wbGF0ZSBhcyBmcmVlIHZhcmlhYmxlcy5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICAgICAqICBUaGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc291cmNlVVJMPSdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzW25dJ11cbiAgICAgKiAgVGhlIHNvdXJjZVVSTCBvZiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICAgICAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2ZyZWQnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlciB0byBlc2NhcGUgZGF0YSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAgICAgKiAvLyA9PiAnPGI+Jmx0O3NjcmlwdCZndDs8L2I+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBfLmZvckVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdiYXJuZXknIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBFUyB0ZW1wbGF0ZSBsaXRlcmFsIGRlbGltaXRlciBhcyBhbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAncGViYmxlcycgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIGJhY2tzbGFzaGVzIHRvIHRyZWF0IGRlbGltaXRlcnMgYXMgcGxhaW4gdGV4dC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gICAgICogLy8gPT4gJzwlLSB2YWx1ZSAlPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAgICAgKiB2YXIgdGV4dCA9ICc8JSBqcS5lYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScsIHsgJ3NvdXJjZVVSTCc6ICcvYmFzaWMvZ3JlZXRpbmcuanN0JyB9KTtcbiAgICAgKiBjb21waWxlZChkYXRhKTtcbiAgICAgKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICAgICAqIGNvbXBpbGVkLnNvdXJjZTtcbiAgICAgKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAgICAgKiAvLyAgIF9fcCArPSAnaGkgJyArICgoX190ID0gKCBkYXRhLnVzZXIgKSkgPT0gbnVsbCA/ICcnIDogX190KSArICchJztcbiAgICAgKiAvLyAgIHJldHVybiBfX3A7XG4gICAgICogLy8gfVxuICAgICAqXG4gICAgICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICAgICAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8ge3sgdXNlciB9fSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gICAgICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gICAgICogZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2pzdC5qcycpLCAnXFxcbiAgICAgKiAgIHZhciBKU1QgPSB7XFxcbiAgICAgKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAgICAgKiAgIH07XFxcbiAgICAgKiAnKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0ZW1wbGF0ZShzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSB7XG4gICAgICAvLyBCYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gICAgICAvLyBhbmQgTGF1cmEgRG9rdG9yb3ZhJ3MgZG9ULmpzIChodHRwczovL2dpdGh1Yi5jb20vb2xhZG8vZG9UKS5cbiAgICAgIHZhciBzZXR0aW5ncyA9IGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzO1xuXG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkpIHtcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgICAgIHZhciBpbXBvcnRzID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLmltcG9ydHMsIHNldHRpbmdzLmltcG9ydHMsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pLFxuICAgICAgICAgIGltcG9ydHNLZXlzID0ga2V5cyhpbXBvcnRzKSxcbiAgICAgICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgICAgIHZhciBpc0VzY2FwaW5nLFxuICAgICAgICAgIGlzRXZhbHVhdGluZyxcbiAgICAgICAgICBpbmRleCA9IDAsXG4gICAgICAgICAgaW50ZXJwb2xhdGUgPSBvcHRpb25zLmludGVycG9sYXRlIHx8IHJlTm9NYXRjaCxcbiAgICAgICAgICBzb3VyY2UgPSBcIl9fcCArPSAnXCI7XG5cbiAgICAgIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgICAgIHZhciByZURlbGltaXRlcnMgPSBSZWdFeHAoXG4gICAgICAgIChvcHRpb25zLmVzY2FwZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgICAgIChpbnRlcnBvbGF0ZSA9PT0gcmVJbnRlcnBvbGF0ZSA/IHJlRXNUZW1wbGF0ZSA6IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgKG9wdGlvbnMuZXZhbHVhdGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCQnXG4gICAgICAsICdnJyk7XG5cbiAgICAgIC8vIFVzZSBhIHNvdXJjZVVSTCBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKCdzb3VyY2VVUkwnIGluIG9wdGlvbnNcbiAgICAgICAgICA/IG9wdGlvbnMuc291cmNlVVJMXG4gICAgICAgICAgOiAoJ2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbJyArICgrK3RlbXBsYXRlQ291bnRlcikgKyAnXScpXG4gICAgICAgICkgKyAnXFxuJztcblxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlVmFsdWUsIGludGVycG9sYXRlVmFsdWUsIGVzVGVtcGxhdGVWYWx1ZSwgZXZhbHVhdGVWYWx1ZSwgb2Zmc2V0KSB7XG4gICAgICAgIGludGVycG9sYXRlVmFsdWUgfHwgKGludGVycG9sYXRlVmFsdWUgPSBlc1RlbXBsYXRlVmFsdWUpO1xuXG4gICAgICAgIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgICAgICBzb3VyY2UgKz0gc3RyaW5nLnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UocmVVbmVzY2FwZWRTdHJpbmcsIGVzY2FwZVN0cmluZ0NoYXIpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuICAgICAgICBpZiAoZXNjYXBlVmFsdWUpIHtcbiAgICAgICAgICBpc0VzY2FwaW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG5fX2UoXCIgKyBlc2NhcGVWYWx1ZSArIFwiKSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmFsdWF0ZVZhbHVlKSB7XG4gICAgICAgICAgaXNFdmFsdWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGVWYWx1ZSArIFwiO1xcbl9fcCArPSAnXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGVycG9sYXRlVmFsdWUpIHtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG4oKF9fdCA9IChcIiArIGludGVycG9sYXRlVmFsdWUgKyBcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgICAvLyBUaGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIHByb2R1Y3RzIG5lZWRzIGBtYXRjaGAgcmV0dXJuZWQgaW5cbiAgICAgICAgLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfSk7XG5cbiAgICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICAgIC8vIElmIGB2YXJpYWJsZWAgaXMgbm90IHNwZWNpZmllZCB3cmFwIGEgd2l0aC1zdGF0ZW1lbnQgYXJvdW5kIHRoZSBnZW5lcmF0ZWRcbiAgICAgIC8vIGNvZGUgdG8gYWRkIHRoZSBkYXRhIG9iamVjdCB0byB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFpbi5cbiAgICAgIHZhciB2YXJpYWJsZSA9IG9wdGlvbnMudmFyaWFibGU7XG4gICAgICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgICAgIHNvdXJjZSA9ICd3aXRoIChvYmopIHtcXG4nICsgc291cmNlICsgJ1xcbn1cXG4nO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW51cCBjb2RlIGJ5IHN0cmlwcGluZyBlbXB0eSBzdHJpbmdzLlxuICAgICAgc291cmNlID0gKGlzRXZhbHVhdGluZyA/IHNvdXJjZS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdMZWFkaW5nLCAnJykgOiBzb3VyY2UpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsICckMScpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdUcmFpbGluZywgJyQxOycpO1xuXG4gICAgICAvLyBGcmFtZSBjb2RlIGFzIHRoZSBmdW5jdGlvbiBib2R5LlxuICAgICAgc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAodmFyaWFibGUgfHwgJ29iaicpICsgJykge1xcbicgK1xuICAgICAgICAodmFyaWFibGVcbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiAnb2JqIHx8IChvYmogPSB7fSk7XFxuJ1xuICAgICAgICApICtcbiAgICAgICAgXCJ2YXIgX190LCBfX3AgPSAnJ1wiICtcbiAgICAgICAgKGlzRXNjYXBpbmdcbiAgICAgICAgICAgPyAnLCBfX2UgPSBfLmVzY2FwZSdcbiAgICAgICAgICAgOiAnJ1xuICAgICAgICApICtcbiAgICAgICAgKGlzRXZhbHVhdGluZ1xuICAgICAgICAgID8gJywgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XFxuJyArXG4gICAgICAgICAgICBcImZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiXG4gICAgICAgICAgOiAnO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIHNvdXJjZSArXG4gICAgICAgICdyZXR1cm4gX19wXFxufSc7XG5cbiAgICAgIHZhciByZXN1bHQgPSBhdHRlbXB0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb24oaW1wb3J0c0tleXMsIHNvdXJjZVVSTCArICdyZXR1cm4gJyArIHNvdXJjZSlcbiAgICAgICAgICAuYXBwbHkodW5kZWZpbmVkLCBpbXBvcnRzVmFsdWVzKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgICAgIC8vIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBhcyBhIGNvbnZlbmllbmNlIGZvciBpbmxpbmluZyBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gICAgICByZXN1bHQuc291cmNlID0gc291cmNlO1xuICAgICAgaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byBsb3dlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9Mb3dlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvTG93ZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xvd2VyKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICctLWZvby1iYXItLSdcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb2JhcidcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnX19mb29fYmFyX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Mb3dlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byB1cHBlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9VcHBlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvVXBwZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1VwcGVyKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICctLUZPTy1CQVItLSdcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPT0JBUidcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnX19GT09fQkFSX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9VcHBlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbSgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLm1hcChbJyAgZm9vICAnLCAnICBiYXIgICddLCBfLnRyaW0pO1xuICAgICAqIC8vID0+IFsnZm9vJywgJ2JhciddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbShzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbUVuZCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzKGJhc2VDbG9uZShzb3VyY2UsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0aGVcbiAgICAgKiB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QgdG8gYHNyY1ZhbHVlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGVcbiAgICAgKiBvYmplY3QgdmFsdWUgaXMgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0XG4gICAgICogYHNyY1ZhbHVlYCB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZVxuICAgICAqIGBfLmlzRXF1YWxgIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sXG4gICAgICogICB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQob2JqZWN0cywgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KSk7XG4gICAgICogLy8gPT4geyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIGJhc2VDbG9uZShzcmNWYWx1ZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDIpIH0gfSxcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgxKSB9IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKFsnYScsICdiJ10pKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tZXRob2RgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogdGhlIG1ldGhvZCBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gXy50aW1lcygzLCBfLmNvbnN0YW50KSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLm1ldGhvZE9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqXG4gICAgICogXy5tYXAoW1snYScsICcyJ10sIFsnYycsICcwJ11dLCBfLm1ldGhvZE9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIHZhciBtZXRob2RPZiA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgYXJncykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGFsbCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgZnVuY3Rpb24gcHJvcGVydGllcyBvZiBhIHNvdXJjZVxuICAgICAqIG9iamVjdCB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0LiBJZiBgb2JqZWN0YCBpcyBhIGZ1bmN0aW9uLCB0aGVuIG1ldGhvZHNcbiAgICAgKiBhcmUgYWRkZWQgdG8gaXRzIHByb3RvdHlwZSBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVzZSBgXy5ydW5JbkNvbnRleHRgIHRvIGNyZWF0ZSBhIHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHRvXG4gICAgICogYXZvaWQgY29uZmxpY3RzIGNhdXNlZCBieSBtb2RpZnlpbmcgdGhlIG9yaWdpbmFsLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gW29iamVjdD1sb2Rhc2hdIFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIGZ1bmN0aW9ucyB0byBhZGQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGFpbj10cnVlXSBTcGVjaWZ5IHdoZXRoZXIgbWl4aW5zIGFyZSBjaGFpbmFibGUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gdm93ZWxzKHN0cmluZykge1xuICAgICAqICAgcmV0dXJuIF8uZmlsdGVyKHN0cmluZywgZnVuY3Rpb24odikge1xuICAgICAqICAgICByZXR1cm4gL1thZWlvdV0vaS50ZXN0KHYpO1xuICAgICAqICAgfSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSk7XG4gICAgICogXy52b3dlbHMoJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXygnZnJlZCcpLnZvd2VscygpLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0sIHsgJ2NoYWluJzogZmFsc2UgfSk7XG4gICAgICogXygnZnJlZCcpLnZvd2VscygpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWl4aW4ob2JqZWN0LCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKSxcbiAgICAgICAgICBtZXRob2ROYW1lcyA9IGJhc2VGdW5jdGlvbnMoc291cmNlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChvcHRpb25zID09IG51bGwgJiZcbiAgICAgICAgICAhKGlzT2JqZWN0KHNvdXJjZSkgJiYgKG1ldGhvZE5hbWVzLmxlbmd0aCB8fCAhcHJvcHMubGVuZ3RoKSkpIHtcbiAgICAgICAgb3B0aW9ucyA9IHNvdXJjZTtcbiAgICAgICAgc291cmNlID0gb2JqZWN0O1xuICAgICAgICBvYmplY3QgPSB0aGlzO1xuICAgICAgICBtZXRob2ROYW1lcyA9IGJhc2VGdW5jdGlvbnMoc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgICAgfVxuICAgICAgdmFyIGNoYWluID0gIShpc09iamVjdChvcHRpb25zKSAmJiAnY2hhaW4nIGluIG9wdGlvbnMpIHx8ICEhb3B0aW9ucy5jaGFpbixcbiAgICAgICAgICBpc0Z1bmMgPSBpc0Z1bmN0aW9uKG9iamVjdCk7XG5cbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgICB2YXIgZnVuYyA9IHNvdXJjZVttZXRob2ROYW1lXTtcbiAgICAgICAgb2JqZWN0W21ldGhvZE5hbWVdID0gZnVuYztcbiAgICAgICAgaWYgKGlzRnVuYykge1xuICAgICAgICAgIG9iamVjdC5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjaGFpbkFsbCA9IHRoaXMuX19jaGFpbl9fO1xuICAgICAgICAgICAgaWYgKGNoYWluIHx8IGNoYWluQWxsKSB7XG4gICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmplY3QodGhpcy5fX3dyYXBwZWRfXyksXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zID0gcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO1xuXG4gICAgICAgICAgICAgIGFjdGlvbnMucHVzaCh7ICdmdW5jJzogZnVuYywgJ2FyZ3MnOiBhcmd1bWVudHMsICd0aGlzQXJnJzogb2JqZWN0IH0pO1xuICAgICAgICAgICAgICByZXN1bHQuX19jaGFpbl9fID0gY2hhaW5BbGw7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShvYmplY3QsIGFycmF5UHVzaChbdGhpcy52YWx1ZSgpXSwgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJ0cyB0aGUgYF9gIHZhcmlhYmxlIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0b1xuICAgICAqIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGxvZGFzaCA9IF8ubm9Db25mbGljdCgpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vQ29uZmxpY3QoKSB7XG4gICAgICBpZiAocm9vdC5fID09PSB0aGlzKSB7XG4gICAgICAgIHJvb3QuXyA9IG9sZERhc2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLm5vb3ApO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub29wKCkge1xuICAgICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBhcmd1bWVudCBhdCBpbmRleCBgbmAuIElmIGBuYCBpcyBuZWdhdGl2ZSxcbiAgICAgKiB0aGUgbnRoIGFyZ3VtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgYXJndW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhc3MtdGhydSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygxKTtcbiAgICAgKiBmdW5jKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKC0yKTtcbiAgICAgKiBmdW5jKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gJ2MnXG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoQXJnKG4pIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICByZXR1cm4gYmFzZU50aChhcmdzLCBuKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGl0ZXJhdGVlc2Agd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzXG4gICAgICogYW5kIHJldHVybnMgdGhlaXIgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXIoW01hdGgubWF4LCBNYXRoLm1pbl0pO1xuICAgICAqXG4gICAgICogZnVuYygxLCAyLCAzLCA0KTtcbiAgICAgKiAvLyA9PiBbNCwgMV1cbiAgICAgKi9cbiAgICB2YXIgb3ZlciA9IGNyZWF0ZU92ZXIoYXJyYXlNYXApO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmICoqYWxsKiogb2YgdGhlIGBwcmVkaWNhdGVzYCByZXR1cm5cbiAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IChsb2Rhc2hGdW5jLm5hbWUgKyAnJyksXG4gICAgICAgICAgICBuYW1lcyA9IHJlYWxOYW1lc1trZXldIHx8IChyZWFsTmFtZXNba2V5XSA9IFtdKTtcblxuICAgICAgICBuYW1lcy5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgeSA9IGQgKiAzNjUuMjU7XG5cbi8qKlxuICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBnaXZlbiBgdmFsYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAtIGBsb25nYCB2ZXJib3NlIGZvcm1hdHRpbmcgW2ZhbHNlXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAdGhyb3dzIHtFcnJvcn0gdGhyb3cgYW4gZXJyb3IgaWYgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB2YWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYXJzZSh2YWwpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbCkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubG9uZyA/IGZtdExvbmcodmFsKSA6IGZtdFNob3J0KHZhbCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPScgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkodmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbWF0Y2ggPSAvXigoPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICdkYXlzJzpcbiAgICBjYXNlICdkYXknOlxuICAgIGNhc2UgJ2QnOlxuICAgICAgcmV0dXJuIG4gKiBkO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICBjYXNlICdob3VyJzpcbiAgICBjYXNlICdocnMnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdoJzpcbiAgICAgIHJldHVybiBuICogaDtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICBjYXNlICdtaW51dGUnOlxuICAgIGNhc2UgJ21pbnMnOlxuICAgIGNhc2UgJ21pbic6XG4gICAgY2FzZSAnbSc6XG4gICAgICByZXR1cm4gbiAqIG07XG4gICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICBjYXNlICdzZWNzJzpcbiAgICBjYXNlICdzZWMnOlxuICAgIGNhc2UgJ3MnOlxuICAgICAgcmV0dXJuIG4gKiBzO1xuICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgIGNhc2UgJ21zZWNzJzpcbiAgICBjYXNlICdtc2VjJzpcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gbjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFNob3J0IGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdFNob3J0KG1zKSB7XG4gIGlmIChtcyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtcyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICByZXR1cm4gcGx1cmFsKG1zLCBkLCAnZGF5JykgfHxcbiAgICBwbHVyYWwobXMsIGgsICdob3VyJykgfHxcbiAgICBwbHVyYWwobXMsIG0sICdtaW51dGUnKSB8fFxuICAgIHBsdXJhbChtcywgcywgJ3NlY29uZCcpIHx8XG4gICAgbXMgKyAnIG1zJztcbn1cblxuLyoqXG4gKiBQbHVyYWxpemF0aW9uIGhlbHBlci5cbiAqL1xuXG5mdW5jdGlvbiBwbHVyYWwobXMsIG4sIG5hbWUpIHtcbiAgaWYgKG1zIDwgbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobXMgPCBuICogMS41KSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7XG4gIH1cbiAgcmV0dXJuIE1hdGguY2VpbChtcyAvIG4pICsgJyAnICsgbmFtZSArICdzJztcbn1cbiIsIi8qISBOYXRpdmUgUHJvbWlzZSBPbmx5XG4gICAgdjAuOC4xIChjKSBLeWxlIFNpbXBzb25cbiAgICBNSVQgTGljZW5zZTogaHR0cDovL2dldGlmeS5taXQtbGljZW5zZS5vcmdcbiovXG5cbihmdW5jdGlvbiBVTUQobmFtZSxjb250ZXh0LGRlZmluaXRpb24pe1xuXHQvLyBzcGVjaWFsIGZvcm0gb2YgVU1EIGZvciBwb2x5ZmlsbGluZyBhY3Jvc3MgZXZpcm9ubWVudHNcblx0Y29udGV4dFtuYW1lXSA9IGNvbnRleHRbbmFtZV0gfHwgZGVmaW5pdGlvbigpO1xuXHRpZiAodHlwZW9mIG1vZHVsZSAhPSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZS5leHBvcnRzKSB7IG1vZHVsZS5leHBvcnRzID0gY29udGV4dFtuYW1lXTsgfVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7IGRlZmluZShmdW5jdGlvbiAkQU1EJCgpeyByZXR1cm4gY29udGV4dFtuYW1lXTsgfSk7IH1cbn0pKFwiUHJvbWlzZVwiLHR5cGVvZiBnbG9iYWwgIT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHRoaXMsZnVuY3Rpb24gREVGKCl7XG5cdC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBidWlsdEluUHJvcCwgY3ljbGUsIHNjaGVkdWxpbmdfcXVldWUsXG5cdFx0VG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFxuXHRcdHRpbWVyID0gKHR5cGVvZiBzZXRJbW1lZGlhdGUgIT0gXCJ1bmRlZmluZWRcIikgP1xuXHRcdFx0ZnVuY3Rpb24gdGltZXIoZm4pIHsgcmV0dXJuIHNldEltbWVkaWF0ZShmbik7IH0gOlxuXHRcdFx0c2V0VGltZW91dFxuXHQ7XG5cblx0Ly8gZGFtbWl0LCBJRTguXG5cdHRyeSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwieFwiLHt9KTtcblx0XHRidWlsdEluUHJvcCA9IGZ1bmN0aW9uIGJ1aWx0SW5Qcm9wKG9iaixuYW1lLHZhbCxjb25maWcpIHtcblx0XHRcdHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLG5hbWUse1xuXHRcdFx0XHR2YWx1ZTogdmFsLFxuXHRcdFx0XHR3cml0YWJsZTogdHJ1ZSxcblx0XHRcdFx0Y29uZmlndXJhYmxlOiBjb25maWcgIT09IGZhbHNlXG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XG5cdGNhdGNoIChlcnIpIHtcblx0XHRidWlsdEluUHJvcCA9IGZ1bmN0aW9uIGJ1aWx0SW5Qcm9wKG9iaixuYW1lLHZhbCkge1xuXHRcdFx0b2JqW25hbWVdID0gdmFsO1xuXHRcdFx0cmV0dXJuIG9iajtcblx0XHR9O1xuXHR9XG5cblx0Ly8gTm90ZTogdXNpbmcgYSBxdWV1ZSBpbnN0ZWFkIG9mIGFycmF5IGZvciBlZmZpY2llbmN5XG5cdHNjaGVkdWxpbmdfcXVldWUgPSAoZnVuY3Rpb24gUXVldWUoKSB7XG5cdFx0dmFyIGZpcnN0LCBsYXN0LCBpdGVtO1xuXG5cdFx0ZnVuY3Rpb24gSXRlbShmbixzZWxmKSB7XG5cdFx0XHR0aGlzLmZuID0gZm47XG5cdFx0XHR0aGlzLnNlbGYgPSBzZWxmO1xuXHRcdFx0dGhpcy5uZXh0ID0gdm9pZCAwO1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uIGFkZChmbixzZWxmKSB7XG5cdFx0XHRcdGl0ZW0gPSBuZXcgSXRlbShmbixzZWxmKTtcblx0XHRcdFx0aWYgKGxhc3QpIHtcblx0XHRcdFx0XHRsYXN0Lm5leHQgPSBpdGVtO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGZpcnN0ID0gaXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsYXN0ID0gaXRlbTtcblx0XHRcdFx0aXRlbSA9IHZvaWQgMDtcblx0XHRcdH0sXG5cdFx0XHRkcmFpbjogZnVuY3Rpb24gZHJhaW4oKSB7XG5cdFx0XHRcdHZhciBmID0gZmlyc3Q7XG5cdFx0XHRcdGZpcnN0ID0gbGFzdCA9IGN5Y2xlID0gdm9pZCAwO1xuXG5cdFx0XHRcdHdoaWxlIChmKSB7XG5cdFx0XHRcdFx0Zi5mbi5jYWxsKGYuc2VsZik7XG5cdFx0XHRcdFx0ZiA9IGYubmV4dDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0pKCk7XG5cblx0ZnVuY3Rpb24gc2NoZWR1bGUoZm4sc2VsZikge1xuXHRcdHNjaGVkdWxpbmdfcXVldWUuYWRkKGZuLHNlbGYpO1xuXHRcdGlmICghY3ljbGUpIHtcblx0XHRcdGN5Y2xlID0gdGltZXIoc2NoZWR1bGluZ19xdWV1ZS5kcmFpbik7XG5cdFx0fVxuXHR9XG5cblx0Ly8gcHJvbWlzZSBkdWNrIHR5cGluZ1xuXHRmdW5jdGlvbiBpc1RoZW5hYmxlKG8pIHtcblx0XHR2YXIgX3RoZW4sIG9fdHlwZSA9IHR5cGVvZiBvO1xuXG5cdFx0aWYgKG8gIT0gbnVsbCAmJlxuXHRcdFx0KFxuXHRcdFx0XHRvX3R5cGUgPT0gXCJvYmplY3RcIiB8fCBvX3R5cGUgPT0gXCJmdW5jdGlvblwiXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRfdGhlbiA9IG8udGhlbjtcblx0XHR9XG5cdFx0cmV0dXJuIHR5cGVvZiBfdGhlbiA9PSBcImZ1bmN0aW9uXCIgPyBfdGhlbiA6IGZhbHNlO1xuXHR9XG5cblx0ZnVuY3Rpb24gbm90aWZ5KCkge1xuXHRcdGZvciAodmFyIGk9MDsgaTx0aGlzLmNoYWluLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRub3RpZnlJc29sYXRlZChcblx0XHRcdFx0dGhpcyxcblx0XHRcdFx0KHRoaXMuc3RhdGUgPT09IDEpID8gdGhpcy5jaGFpbltpXS5zdWNjZXNzIDogdGhpcy5jaGFpbltpXS5mYWlsdXJlLFxuXHRcdFx0XHR0aGlzLmNoYWluW2ldXG5cdFx0XHQpO1xuXHRcdH1cblx0XHR0aGlzLmNoYWluLmxlbmd0aCA9IDA7XG5cdH1cblxuXHQvLyBOT1RFOiBUaGlzIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gaXNvbGF0ZVxuXHQvLyB0aGUgYHRyeS4uY2F0Y2hgIHNvIHRoYXQgb3RoZXIgY29kZSBjYW4gYmVcblx0Ly8gb3B0aW1pemVkIGJldHRlclxuXHRmdW5jdGlvbiBub3RpZnlJc29sYXRlZChzZWxmLGNiLGNoYWluKSB7XG5cdFx0dmFyIHJldCwgX3RoZW47XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChjYiA9PT0gZmFsc2UpIHtcblx0XHRcdFx0Y2hhaW4ucmVqZWN0KHNlbGYubXNnKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZiAoY2IgPT09IHRydWUpIHtcblx0XHRcdFx0XHRyZXQgPSBzZWxmLm1zZztcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRyZXQgPSBjYi5jYWxsKHZvaWQgMCxzZWxmLm1zZyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocmV0ID09PSBjaGFpbi5wcm9taXNlKSB7XG5cdFx0XHRcdFx0Y2hhaW4ucmVqZWN0KFR5cGVFcnJvcihcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKF90aGVuID0gaXNUaGVuYWJsZShyZXQpKSB7XG5cdFx0XHRcdFx0X3RoZW4uY2FsbChyZXQsY2hhaW4ucmVzb2x2ZSxjaGFpbi5yZWplY3QpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGNoYWluLnJlc29sdmUocmV0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRjaGFpbi5yZWplY3QoZXJyKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiByZXNvbHZlKG1zZykge1xuXHRcdHZhciBfdGhlbiwgc2VsZiA9IHRoaXM7XG5cblx0XHQvLyBhbHJlYWR5IHRyaWdnZXJlZD9cblx0XHRpZiAoc2VsZi50cmlnZ2VyZWQpIHsgcmV0dXJuOyB9XG5cblx0XHRzZWxmLnRyaWdnZXJlZCA9IHRydWU7XG5cblx0XHQvLyB1bndyYXBcblx0XHRpZiAoc2VsZi5kZWYpIHtcblx0XHRcdHNlbGYgPSBzZWxmLmRlZjtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0aWYgKF90aGVuID0gaXNUaGVuYWJsZShtc2cpKSB7XG5cdFx0XHRcdHNjaGVkdWxlKGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0dmFyIGRlZl93cmFwcGVyID0gbmV3IE1ha2VEZWZXcmFwcGVyKHNlbGYpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRfdGhlbi5jYWxsKG1zZyxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gJHJlc29sdmUkKCl7IHJlc29sdmUuYXBwbHkoZGVmX3dyYXBwZXIsYXJndW1lbnRzKTsgfSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gJHJlamVjdCQoKXsgcmVqZWN0LmFwcGx5KGRlZl93cmFwcGVyLGFyZ3VtZW50cyk7IH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRcdHJlamVjdC5jYWxsKGRlZl93cmFwcGVyLGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHNlbGYubXNnID0gbXNnO1xuXHRcdFx0XHRzZWxmLnN0YXRlID0gMTtcblx0XHRcdFx0aWYgKHNlbGYuY2hhaW4ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHNjaGVkdWxlKG5vdGlmeSxzZWxmKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRyZWplY3QuY2FsbChuZXcgTWFrZURlZldyYXBwZXIoc2VsZiksZXJyKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiByZWplY3QobXNnKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXG5cdFx0Ly8gYWxyZWFkeSB0cmlnZ2VyZWQ/XG5cdFx0aWYgKHNlbGYudHJpZ2dlcmVkKSB7IHJldHVybjsgfVxuXG5cdFx0c2VsZi50cmlnZ2VyZWQgPSB0cnVlO1xuXG5cdFx0Ly8gdW53cmFwXG5cdFx0aWYgKHNlbGYuZGVmKSB7XG5cdFx0XHRzZWxmID0gc2VsZi5kZWY7XG5cdFx0fVxuXG5cdFx0c2VsZi5tc2cgPSBtc2c7XG5cdFx0c2VsZi5zdGF0ZSA9IDI7XG5cdFx0aWYgKHNlbGYuY2hhaW4ubGVuZ3RoID4gMCkge1xuXHRcdFx0c2NoZWR1bGUobm90aWZ5LHNlbGYpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGl0ZXJhdGVQcm9taXNlcyhDb25zdHJ1Y3RvcixhcnIscmVzb2x2ZXIscmVqZWN0ZXIpIHtcblx0XHRmb3IgKHZhciBpZHg9MDsgaWR4PGFyci5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHQoZnVuY3Rpb24gSUlGRShpZHgpe1xuXHRcdFx0XHRDb25zdHJ1Y3Rvci5yZXNvbHZlKGFycltpZHhdKVxuXHRcdFx0XHQudGhlbihcblx0XHRcdFx0XHRmdW5jdGlvbiAkcmVzb2x2ZXIkKG1zZyl7XG5cdFx0XHRcdFx0XHRyZXNvbHZlcihpZHgsbXNnKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHJlamVjdGVyXG5cdFx0XHRcdCk7XG5cdFx0XHR9KShpZHgpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIE1ha2VEZWZXcmFwcGVyKHNlbGYpIHtcblx0XHR0aGlzLmRlZiA9IHNlbGY7XG5cdFx0dGhpcy50cmlnZ2VyZWQgPSBmYWxzZTtcblx0fVxuXG5cdGZ1bmN0aW9uIE1ha2VEZWYoc2VsZikge1xuXHRcdHRoaXMucHJvbWlzZSA9IHNlbGY7XG5cdFx0dGhpcy5zdGF0ZSA9IDA7XG5cdFx0dGhpcy50cmlnZ2VyZWQgPSBmYWxzZTtcblx0XHR0aGlzLmNoYWluID0gW107XG5cdFx0dGhpcy5tc2cgPSB2b2lkIDA7XG5cdH1cblxuXHRmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG5cdFx0aWYgKHR5cGVvZiBleGVjdXRvciAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9fTlBPX18gIT09IDApIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIHByb21pc2VcIik7XG5cdFx0fVxuXG5cdFx0Ly8gaW5zdGFuY2Ugc2hhZG93aW5nIHRoZSBpbmhlcml0ZWQgXCJicmFuZFwiXG5cdFx0Ly8gdG8gc2lnbmFsIGFuIGFscmVhZHkgXCJpbml0aWFsaXplZFwiIHByb21pc2Vcblx0XHR0aGlzLl9fTlBPX18gPSAxO1xuXG5cdFx0dmFyIGRlZiA9IG5ldyBNYWtlRGVmKHRoaXMpO1xuXG5cdFx0dGhpc1tcInRoZW5cIl0gPSBmdW5jdGlvbiB0aGVuKHN1Y2Nlc3MsZmFpbHVyZSkge1xuXHRcdFx0dmFyIG8gPSB7XG5cdFx0XHRcdHN1Y2Nlc3M6IHR5cGVvZiBzdWNjZXNzID09IFwiZnVuY3Rpb25cIiA/IHN1Y2Nlc3MgOiB0cnVlLFxuXHRcdFx0XHRmYWlsdXJlOiB0eXBlb2YgZmFpbHVyZSA9PSBcImZ1bmN0aW9uXCIgPyBmYWlsdXJlIDogZmFsc2Vcblx0XHRcdH07XG5cdFx0XHQvLyBOb3RlOiBgdGhlbiguLilgIGl0c2VsZiBjYW4gYmUgYm9ycm93ZWQgdG8gYmUgdXNlZCBhZ2FpbnN0XG5cdFx0XHQvLyBhIGRpZmZlcmVudCBwcm9taXNlIGNvbnN0cnVjdG9yIGZvciBtYWtpbmcgdGhlIGNoYWluZWQgcHJvbWlzZSxcblx0XHRcdC8vIGJ5IHN1YnN0aXR1dGluZyBhIGRpZmZlcmVudCBgdGhpc2AgYmluZGluZy5cblx0XHRcdG8ucHJvbWlzZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4dHJhY3RDaGFpbihyZXNvbHZlLHJlamVjdCkge1xuXHRcdFx0XHRpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRvLnJlc29sdmUgPSByZXNvbHZlO1xuXHRcdFx0XHRvLnJlamVjdCA9IHJlamVjdDtcblx0XHRcdH0pO1xuXHRcdFx0ZGVmLmNoYWluLnB1c2gobyk7XG5cblx0XHRcdGlmIChkZWYuc3RhdGUgIT09IDApIHtcblx0XHRcdFx0c2NoZWR1bGUobm90aWZ5LGRlZik7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvLnByb21pc2U7XG5cdFx0fTtcblx0XHR0aGlzW1wiY2F0Y2hcIl0gPSBmdW5jdGlvbiAkY2F0Y2gkKGZhaWx1cmUpIHtcblx0XHRcdHJldHVybiB0aGlzLnRoZW4odm9pZCAwLGZhaWx1cmUpO1xuXHRcdH07XG5cblx0XHR0cnkge1xuXHRcdFx0ZXhlY3V0b3IuY2FsbChcblx0XHRcdFx0dm9pZCAwLFxuXHRcdFx0XHRmdW5jdGlvbiBwdWJsaWNSZXNvbHZlKG1zZyl7XG5cdFx0XHRcdFx0cmVzb2x2ZS5jYWxsKGRlZixtc2cpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRmdW5jdGlvbiBwdWJsaWNSZWplY3QobXNnKSB7XG5cdFx0XHRcdFx0cmVqZWN0LmNhbGwoZGVmLG1zZyk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fVxuXHRcdGNhdGNoIChlcnIpIHtcblx0XHRcdHJlamVjdC5jYWxsKGRlZixlcnIpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBQcm9taXNlUHJvdG90eXBlID0gYnVpbHRJblByb3Aoe30sXCJjb25zdHJ1Y3RvclwiLFByb21pc2UsXG5cdFx0Lypjb25maWd1cmFibGU9Ki9mYWxzZVxuXHQpO1xuXG5cdC8vIE5vdGU6IEFuZHJvaWQgNCBjYW5ub3QgdXNlIGBPYmplY3QuZGVmaW5lUHJvcGVydHkoLi4pYCBoZXJlXG5cdFByb21pc2UucHJvdG90eXBlID0gUHJvbWlzZVByb3RvdHlwZTtcblxuXHQvLyBidWlsdC1pbiBcImJyYW5kXCIgdG8gc2lnbmFsIGFuIFwidW5pbml0aWFsaXplZFwiIHByb21pc2Vcblx0YnVpbHRJblByb3AoUHJvbWlzZVByb3RvdHlwZSxcIl9fTlBPX19cIiwwLFxuXHRcdC8qY29uZmlndXJhYmxlPSovZmFsc2Vcblx0KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwicmVzb2x2ZVwiLGZ1bmN0aW9uIFByb21pc2UkcmVzb2x2ZShtc2cpIHtcblx0XHR2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG5cdFx0Ly8gc3BlYyBtYW5kYXRlZCBjaGVja3Ncblx0XHQvLyBub3RlOiBiZXN0IFwiaXNQcm9taXNlXCIgY2hlY2sgdGhhdCdzIHByYWN0aWNhbCBmb3Igbm93XG5cdFx0aWYgKG1zZyAmJiB0eXBlb2YgbXNnID09IFwib2JqZWN0XCIgJiYgbXNnLl9fTlBPX18gPT09IDEpIHtcblx0XHRcdHJldHVybiBtc2c7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBDb25zdHJ1Y3RvcihmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLHJlamVjdCl7XG5cdFx0XHRpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNvbHZlKG1zZyk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2UsXCJyZWplY3RcIixmdW5jdGlvbiBQcm9taXNlJHJlamVjdChtc2cpIHtcblx0XHRyZXR1cm4gbmV3IHRoaXMoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0cmVqZWN0KG1zZyk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2UsXCJhbGxcIixmdW5jdGlvbiBQcm9taXNlJGFsbChhcnIpIHtcblx0XHR2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG5cdFx0Ly8gc3BlYyBtYW5kYXRlZCBjaGVja3Ncblx0XHRpZiAoVG9TdHJpbmcuY2FsbChhcnIpICE9IFwiW29iamVjdCBBcnJheV1cIikge1xuXHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yLnJlamVjdChUeXBlRXJyb3IoXCJOb3QgYW4gYXJyYXlcIikpO1xuXHRcdH1cblx0XHRpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yLnJlc29sdmUoW10pO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGxlbiA9IGFyci5sZW5ndGgsIG1zZ3MgPSBBcnJheShsZW4pLCBjb3VudCA9IDA7XG5cblx0XHRcdGl0ZXJhdGVQcm9taXNlcyhDb25zdHJ1Y3RvcixhcnIsZnVuY3Rpb24gcmVzb2x2ZXIoaWR4LG1zZykge1xuXHRcdFx0XHRtc2dzW2lkeF0gPSBtc2c7XG5cdFx0XHRcdGlmICgrK2NvdW50ID09PSBsZW4pIHtcblx0XHRcdFx0XHRyZXNvbHZlKG1zZ3MpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LHJlamVjdCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2UsXCJyYWNlXCIsZnVuY3Rpb24gUHJvbWlzZSRyYWNlKGFycikge1xuXHRcdHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cblx0XHQvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXHRcdGlmIChUb1N0cmluZy5jYWxsKGFycikgIT0gXCJbb2JqZWN0IEFycmF5XVwiKSB7XG5cdFx0XHRyZXR1cm4gQ29uc3RydWN0b3IucmVqZWN0KFR5cGVFcnJvcihcIk5vdCBhbiBhcnJheVwiKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBDb25zdHJ1Y3RvcihmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLHJlamVjdCl7XG5cdFx0XHRpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsYXJyLGZ1bmN0aW9uIHJlc29sdmVyKGlkeCxtc2cpe1xuXHRcdFx0XHRyZXNvbHZlKG1zZyk7XG5cdFx0XHR9LHJlamVjdCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdHJldHVybiBQcm9taXNlO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBmb3JtYXQgPSByZXF1aXJlKCdmb3JtYXQtdXRpbCcpO1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIHByb3RlY3RlZFByb3BlcnRpZXMgPSBbJ25hbWUnLCAnbWVzc2FnZScsICdzdGFjayddO1xudmFyIGVycm9yUHJvdG90eXBlUHJvcGVydGllcyA9IFtcbiAgJ25hbWUnLCAnbWVzc2FnZScsICdkZXNjcmlwdGlvbicsICdudW1iZXInLCAnY29kZScsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ2NvbHVtbk51bWJlcicsXG4gICdzb3VyY2VVUkwnLCAnbGluZScsICdjb2x1bW4nLCAnc3RhY2snXG5dO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZShFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5lcnJvciA9IGNyZWF0ZShFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5ldmFsID0gY3JlYXRlKEV2YWxFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5yYW5nZSA9IGNyZWF0ZShSYW5nZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnJlZmVyZW5jZSA9IGNyZWF0ZShSZWZlcmVuY2VFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5zeW50YXggPSBjcmVhdGUoU3ludGF4RXJyb3IpO1xubW9kdWxlLmV4cG9ydHMudHlwZSA9IGNyZWF0ZShUeXBlRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMudXJpID0gY3JlYXRlKFVSSUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLmZvcm1hdHRlciA9IGZvcm1hdDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBvbm99IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgZ2l2ZW4gRXJyb3IgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtDbGFzc30gS2xhc3MgLSBUaGUgRXJyb3Igc3ViY2xhc3MgdG8gY3JlYXRlXG4gKiBAcmV0dXJucyB7b25vfVxuICovXG5mdW5jdGlvbiBjcmVhdGUgKEtsYXNzKSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vycm9yfSAgIFtlcnJdICAgICAtIFRoZSBvcmlnaW5hbCBlcnJvciwgaWYgYW55XG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgW3Byb3BzXSAgIC0gQW4gb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgZXJyb3Igb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgW21lc3NhZ2VdIC0gVGhlIGVycm9yIG1lc3NhZ2UuIE1heSBjb250YWluIHtAbGluayB1dGlsI2Zvcm1hdH0gcGxhY2Vob2xkZXJzXG4gICAqIEBwYXJhbSB7Li4uKn0gICAgW3BhcmFtc10gIC0gUGFyYW1ldGVycyB0aGF0IG1hcCB0byB0aGUgYG1lc3NhZ2VgIHBsYWNlaG9sZGVyc1xuICAgKiBAcmV0dXJucyB7RXJyb3J9XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gb25vRmFjdG9yeSAoZXJyLCBwcm9wcywgbWVzc2FnZSwgcGFyYW1zKSB7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBmb3JtYXRBcmdzID0gW107XG4gICAgdmFyIGZvcm1hdHRlZE1lc3NhZ2UgPSAnJztcblxuICAgIC8vIERldGVybWluZSB3aGljaCBhcmd1bWVudHMgd2VyZSBhY3R1YWxseSBzcGVjaWZpZWRcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdEFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICBlcnIgPSBwcm9wcyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgICAgZm9ybWF0QXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgIHByb3BzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdEFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGFueSBmb3JtYXQgYXJndW1lbnRzLCB0aGVuIGZvcm1hdCB0aGUgZXJyb3IgbWVzc2FnZVxuICAgIGlmIChmb3JtYXRBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1hdHRlZE1lc3NhZ2UgPSBtb2R1bGUuZXhwb3J0cy5mb3JtYXR0ZXIuYXBwbHkobnVsbCwgZm9ybWF0QXJncyk7XG4gICAgfVxuXG4gICAgaWYgKGVyciAmJiBlcnIubWVzc2FnZSkge1xuICAgICAgLy8gVGhlIGlubmVyLWVycm9yJ3MgbWVzc2FnZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBuZXcgbWVzc2FnZVxuICAgICAgZm9ybWF0dGVkTWVzc2FnZSArPSAoZm9ybWF0dGVkTWVzc2FnZSA/ICcgXFxuJyA6ICcnKSArIGVyci5tZXNzYWdlO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgbmV3IGVycm9yXG4gICAgLy8gTk9URTogRE9OJ1QgbW92ZSB0aGlzIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24hIFdlIGRvbid0IHdhbnQgdG8gcG9sbHV0ZSB0aGUgc3RhY2sgdHJhY2VcbiAgICB2YXIgbmV3RXJyb3IgPSBuZXcgS2xhc3MoZm9ybWF0dGVkTWVzc2FnZSk7XG5cbiAgICAvLyBFeHRlbmQgdGhlIG5ldyBlcnJvciB3aXRoIHRoZSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICBleHRlbmRFcnJvcihuZXdFcnJvciwgZXJyKTsgICAvLyBDb3B5IHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIGVycm9yXG4gICAgZXh0ZW5kVG9KU09OKG5ld0Vycm9yKTsgICAgICAgLy8gUmVwbGFjZSB0aGUgb3JpZ2luYWwgdG9KU09OIG1ldGhvZFxuICAgIGV4dGVuZChuZXdFcnJvciwgcHJvcHMpOyAgICAgIC8vIENvcHkgY3VzdG9tIHByb3BlcnRpZXMsIHBvc3NpYmx5IGluY2x1ZGluZyBhIGN1c3RvbSB0b0pTT04gbWV0aG9kXG5cbiAgICByZXR1cm4gbmV3RXJyb3I7XG4gIH07XG59XG5cbi8qKlxuICogRXh0ZW5kcyB0aGUgdGFyZ2V0RXJyb3Igd2l0aCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc291cmNlIGVycm9yLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9ICAgdGFyZ2V0RXJyb3IgLSBUaGUgZXJyb3Igb2JqZWN0IHRvIGV4dGVuZFxuICogQHBhcmFtIHs/RXJyb3J9ICBzb3VyY2VFcnJvciAtIFRoZSBzb3VyY2UgZXJyb3Igb2JqZWN0LCBpZiBhbnlcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kRXJyb3IgKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcikge1xuICBleHRlbmRTdGFjayh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpO1xuICBleHRlbmQodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKTtcbn1cblxuLyoqXG4gKiBKYXZhU2NyaXB0IGVuZ2luZXMgZGlmZmVyIGluIGhvdyBlcnJvcnMgYXJlIHNlcmlhbGl6ZWQgdG8gSlNPTiAtIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lc1xuICogdG8gY3VzdG9tIGVycm9yIHByb3BlcnRpZXMgYW5kIHN0YWNrIHRyYWNlcy4gIFNvIHdlIGFkZCBvdXIgb3duIHRvSlNPTiBtZXRob2QgdGhhdCBBTFdBWVNcbiAqIG91dHB1dHMgZXZlcnkgcHJvcGVydHkgb2YgdGhlIGVycm9yLlxuICovXG5mdW5jdGlvbiBleHRlbmRUb0pTT04gKGVycm9yKSB7XG4gIGVycm9yLnRvSlNPTiA9IGVycm9yVG9KU09OO1xuXG4gIC8vIEFsc28gYWRkIGFuIGluc3BlY3QoKSBtZXRob2QsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTm9kZS5qcycgYHV0aWwuaW5zcGVjdCgpYCBtZXRob2RcbiAgZXJyb3IuaW5zcGVjdCA9IGVycm9yVG9TdHJpbmc7XG59XG5cbi8qKlxuICogRXh0ZW5kcyB0aGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAgdGFyZ2V0IC0gVGhlIG9iamVjdCB0byBleHRlbmRcbiAqIEBwYXJhbSB7P3NvdXJjZX0gc291cmNlIC0gVGhlIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFyZSBjb3BpZWRcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kICh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoc291cmNlICYmIHR5cGVvZiBzb3VyY2UgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIC8vIERvbid0IGNvcHkgXCJwcm90ZWN0ZWRcIiBwcm9wZXJ0aWVzLCBzaW5jZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5nL2JlaGF2aW9yXG4gICAgICAvLyBhbmQgYXJlIHNldCBieSB0aGUgb25vRmFjdG9yeSBmdW5jdGlvblxuICAgICAgaWYgKHByb3RlY3RlZFByb3BlcnRpZXMuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlzIHJlYWQtb25seSwgc28gaXQgY2FuJ3QgYmUgY29waWVkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3VzdG9tIEpTT04gc2VyaWFsaXplciBmb3IgRXJyb3Igb2JqZWN0cy5cbiAqIFJldHVybnMgYWxsIGJ1aWx0LWluIGVycm9yIHByb3BlcnRpZXMsIGFzIHdlbGwgYXMgZXh0ZW5kZWQgcHJvcGVydGllcy5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBlcnJvclRvSlNPTiAoKSB7XG4gIHZhciBqc29uID0ge307XG5cbiAgLy8gR2V0IGFsbCB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGVycm9yXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG5cbiAgLy8gQWxzbyBpbmNsdWRlIHByb3BlcnRpZXMgZnJvbSB0aGUgRXJyb3IgcHJvdG90eXBlXG4gIGtleXMgPSBrZXlzLmNvbmNhdChlcnJvclByb3RvdHlwZVByb3BlcnRpZXMpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIHZhciB2YWx1ZSA9IHRoaXNba2V5XTtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBpZiAodHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAganNvbltrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBFcnJvciBvYmplY3RzIGFzIGh1bWFuLXJlYWRhYmxlIEpTT04gc3RyaW5ncyBmb3IgZGVidWdnaW5nL2xvZ2dpbmcgcHVycG9zZXMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZXJyb3JUb1N0cmluZyAoKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBudWxsLCAyKS5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJyk7XG59XG5cbi8qKlxuICogRXh0ZW5kIHRoZSBlcnJvciBzdGFjayB0byBpbmNsdWRlIGl0cyBjYXVzZVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IHRhcmdldEVycm9yXG4gKiBAcGFyYW0ge0Vycm9yfSBzb3VyY2VFcnJvclxuICovXG5mdW5jdGlvbiBleHRlbmRTdGFjayAodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKSB7XG4gIGlmIChoYXNMYXp5U3RhY2sodGFyZ2V0RXJyb3IpKSB7XG4gICAgaWYgKHNvdXJjZUVycm9yKSB7XG4gICAgICBsYXp5Sm9pblN0YWNrcyh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxhenlQb3BTdGFjayh0YXJnZXRFcnJvcik7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIGlmIChzb3VyY2VFcnJvcikge1xuICAgICAgdGFyZ2V0RXJyb3Iuc3RhY2sgPSBqb2luU3RhY2tzKHRhcmdldEVycm9yLnN0YWNrLCBzb3VyY2VFcnJvci5zdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGFyZ2V0RXJyb3Iuc3RhY2sgPSBwb3BTdGFjayh0YXJnZXRFcnJvci5zdGFjayk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXBwZW5kcyB0aGUgb3JpZ2luYWwge0BsaW5rIEVycm9yI3N0YWNrfSBwcm9wZXJ0eSB0byB0aGUgbmV3IEVycm9yJ3Mgc3RhY2suXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1N0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxTdGFja1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gam9pblN0YWNrcyAobmV3U3RhY2ssIG9yaWdpbmFsU3RhY2spIHtcbiAgbmV3U3RhY2sgPSBwb3BTdGFjayhuZXdTdGFjayk7XG5cbiAgaWYgKG5ld1N0YWNrICYmIG9yaWdpbmFsU3RhY2spIHtcbiAgICByZXR1cm4gbmV3U3RhY2sgKyAnXFxuXFxuJyArIG9yaWdpbmFsU3RhY2s7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIG5ld1N0YWNrIHx8IG9yaWdpbmFsU3RhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIE9ubyBmcm9tIHRoZSBzdGFjaywgc28gdGhhdCB0aGUgc3RhY2sgc3RhcnRzIGF0IHRoZSBvcmlnaW5hbCBlcnJvciBsb2NhdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGFja1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcG9wU3RhY2sgKHN0YWNrKSB7XG4gIGlmIChzdGFjaykge1xuICAgIHZhciBsaW5lcyA9IHN0YWNrLnNwbGl0KCdcXG4nKTtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBUaGUgc3RhY2sgb25seSBoYXMgb25lIGxpbmUsIHNvIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gcmVtb3ZlXG4gICAgICByZXR1cm4gc3RhY2s7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgYG9ub0ZhY3RvcnlgIGNhbGwgaW4gdGhlIHN0YWNrLCBhbmQgcmVtb3ZlIGl0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpbmUgPSBsaW5lc1tpXTtcbiAgICAgIGlmIChsaW5lLmluZGV4T2YoJ29ub0ZhY3RvcnknKSA+PSAwKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHRoZSBzdGFjayBkb2Vzbid0IGNvbnRhaW4gYSBjYWxsIHRvIGBvbm9GYWN0b3J5YC5cbiAgICAvLyBUaGlzIG1heSBiZSBkdWUgdG8gbWluaWZpY2F0aW9uIG9yIHNvbWUgb3B0aW1pemF0aW9uIG9mIHRoZSBKUyBlbmdpbmUuXG4gICAgLy8gU28ganVzdCByZXR1cm4gdGhlIHN0YWNrIGFzLWlzLlxuICAgIHJldHVybiBzdGFjaztcbiAgfVxufVxuXG4vKipcbiAqIERvZXMgYSBvbmUtdGltZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgdGhpcyBKYXZhU2NyaXB0IGVuZ2luZVxuICogc3VwcG9ydHMgbGF6eSBgRXJyb3Iuc3RhY2tgIHByb3BlcnRpZXMuXG4gKi9cbnZhciBzdXBwb3J0c0xhenlTdGFjayA9IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhIShcbiAgICAvLyBFUzUgcHJvcGVydHkgZGVzY3JpcHRvcnMgbXVzdCBiZSBzdXBwb3J0ZWRcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJlxuXG4gICAgLy8gQ2hyb21lIG9uIEFuZHJvaWQgZG9lc24ndCBzdXBwb3J0IGxhenkgc3RhY2tzIDooXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgPT09ICd1bmRlZmluZWQnIHx8ICEvQW5kcm9pZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSlcbiAgKTtcbn0oKSk7XG5cbi8qKlxuICogRG9lcyB0aGlzIGVycm9yIGhhdmUgYSBsYXp5IHN0YWNrIHByb3BlcnR5P1xuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGhhc0xhenlTdGFjayAoZXJyKSB7XG4gIGlmICghc3VwcG9ydHNMYXp5U3RhY2spIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyLCAnc3RhY2snKTtcbiAgaWYgKCFkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogQ2FsbHMge0BsaW5rIGpvaW5TdGFja3N9IGxhemlseSwgd2hlbiB0aGUge0BsaW5rIEVycm9yI3N0YWNrfSBwcm9wZXJ0eSBpcyBhY2Nlc3NlZC5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSB0YXJnZXRFcnJvclxuICogQHBhcmFtIHtFcnJvcn0gc291cmNlRXJyb3JcbiAqL1xuZnVuY3Rpb24gbGF6eUpvaW5TdGFja3MgKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcikge1xuICB2YXIgdGFyZ2V0U3RhY2sgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldEVycm9yLCAnc3RhY2snKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0RXJyb3IsICdzdGFjaycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBqb2luU3RhY2tzKHRhcmdldFN0YWNrLmdldC5hcHBseSh0YXJnZXRFcnJvciksIHNvdXJjZUVycm9yLnN0YWNrKTtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBDYWxscyB7QGxpbmsgcG9wU3RhY2t9IGxhemlseSwgd2hlbiB0aGUge0BsaW5rIEVycm9yI3N0YWNrfSBwcm9wZXJ0eSBpcyBhY2Nlc3NlZC5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICovXG5mdW5jdGlvbiBsYXp5UG9wU3RhY2sgKGVycm9yKSB7XG4gIHZhciB0YXJnZXRTdGFjayA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyb3IsICdzdGFjaycpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBvcFN0YWNrKHRhcmdldFN0YWNrLmdldC5hcHBseShlcnJvcikpO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuIiwiLy8gLmRpcm5hbWUsIC5iYXNlbmFtZSwgYW5kIC5leHRuYW1lIG1ldGhvZHMgYXJlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSxcbi8vIGJhY2twb3J0ZWQgYW5kIHRyYW5zcGxpdGVkIHdpdGggQmFiZWwsIHdpdGggYmFja3dhcmRzLWNvbXBhdCBmaXhlc1xuXG4vLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlc29sdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59O1xuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59O1xuXG5leHBvcnRzLnNlcCA9ICcvJztcbmV4cG9ydHMuZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbiAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG4gIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gIGlmIChoYXNSb290ICYmIGVuZCA9PT0gMSkge1xuICAgIC8vIHJldHVybiAnLy8nO1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXQgZml4OlxuICAgIHJldHVybiAnLyc7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2UoMCwgZW5kKTtcbn07XG5cbmZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcblxuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICB2YXIgaTtcblxuICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBwYXRoIGNvbXBvbmVudFxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbn1cblxuLy8gVXNlcyBhIG1peGVkIGFwcHJvYWNoIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgYXMgZXh0IGJlaGF2aW9yIGNoYW5nZWRcbi8vIGluIG5ldyBOb2RlLmpzIHZlcnNpb25zLCBzbyBvbmx5IGJhc2VuYW1lKCkgYWJvdmUgaXMgYmFja3BvcnRlZCBoZXJlXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24gKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IGJhc2VuYW1lKHBhdGgpO1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufTtcblxuZXhwb3J0cy5leHRuYW1lID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcbiAgdmFyIHN0YXJ0RG90ID0gLTE7XG4gIHZhciBzdGFydFBhcnQgPSAwO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0NiAvKi4qLykge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSlcbiAgICAgICAgICBzdGFydERvdCA9IGk7XG4gICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGFydERvdCA9PT0gLTEgfHwgZW5kID09PSAtMSB8fFxuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgSmVyZW15IFdoaXRsb2NrXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBzdXBwb3J0ZWRMb2FkZXJzID0ge1xuICBmaWxlOiByZXF1aXJlKCcuL2xpYi9sb2FkZXJzL2ZpbGUnKSxcbiAgaHR0cDogcmVxdWlyZSgnLi9saWIvbG9hZGVycy9odHRwJyksXG4gIGh0dHBzOiByZXF1aXJlKCcuL2xpYi9sb2FkZXJzL2h0dHAnKVxufTtcbnZhciBkZWZhdWx0TG9hZGVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbicgP1xuICAgICAgc3VwcG9ydGVkTG9hZGVycy5odHRwIDpcbiAgICAgIHN1cHBvcnRlZExvYWRlcnMuZmlsZTtcblxuLy8gTG9hZCBwcm9taXNlcyBwb2x5ZmlsbCBpZiBuZWNlc3Nhcnlcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJykge1xuICByZXF1aXJlKCduYXRpdmUtcHJvbWlzZS1vbmx5Jyk7XG59XG5cbmZ1bmN0aW9uIGdldFNjaGVtZSAobG9jYXRpb24pIHtcbiAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uLmluZGV4T2YoJzovLycpID09PSAtMSA/ICcnIDogbG9jYXRpb24uc3BsaXQoJzovLycpWzBdO1xuICB9XG5cbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgdGhhdCBwcm92aWRlcyBhIHNpbmdsZSBBUEkgZm9yIGxvYWRpbmcgdGhlIGNvbnRlbnQgb2YgYSBwYXRoL1VSTC5cbiAqXG4gKiBAbW9kdWxlIHBhdGgtbG9hZGVyXG4gKi9cblxuZnVuY3Rpb24gZ2V0TG9hZGVyIChsb2NhdGlvbikge1xuICB2YXIgc2NoZW1lID0gZ2V0U2NoZW1lKGxvY2F0aW9uKTtcbiAgdmFyIGxvYWRlciA9IHN1cHBvcnRlZExvYWRlcnNbc2NoZW1lXTtcblxuICBpZiAodHlwZW9mIGxvYWRlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAoc2NoZW1lID09PSAnJykge1xuICAgICAgbG9hZGVyID0gZGVmYXVsdExvYWRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzY2hlbWU6ICcgKyBzY2hlbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2FkZXI7XG59XG5cbi8qKlxuICogTG9hZHMgYSBkb2N1bWVudCBhdCB0aGUgcHJvdmlkZWQgbG9jYXRpb24gYW5kIHJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpwYXRoLWxvYWRlcn5Mb2FkT3B0aW9uc30gbG9jYXRpb24gLSBUaGUgbG9jYXRpb24gdG8gdGhlIGRvY3VtZW50XG4gKlxuICogQHJldHVybnMge1Byb21pc2U8Kj59IEFsd2F5cyByZXR1cm5zIGEgcHJvbWlzZSBldmVuIGlmIHRoZXJlIGlzIGEgY2FsbGJhY2sgcHJvdmlkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB1c2luZyBQcm9taXNlc1xuICpcbiAqIFBhdGhMb2FkZXJcbiAqICAgLmxvYWQoJy4vcGFja2FnZS5qc29uJylcbiAqICAgLnRoZW4oSlNPTi5wYXJzZSlcbiAqICAgLnRoZW4oZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gKiAgICAgY29uc29sZS5sb2coZG9jdW1lbnQubmFtZSArICcgKCcgKyBkb2N1bWVudC52ZXJzaW9uICsgJyk6ICcgKyBkb2N1bWVudC5kZXNjcmlwdGlvbik7XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFeGFtcGxlIHVzaW5nIG9wdGlvbnMucHJlcGFyZVJlcXVlc3QgdG8gcHJvdmlkZSBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGZvciBhIHJlbW90ZWx5IHNlY3VyZSBVUkxcbiAqXG4gKiBQYXRoTG9hZGVyXG4gKiAgIC5sb2FkKCdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3doaXRsb2NramMvcGF0aC1sb2FkZXInLCB7XG4gKiAgICAgcHJlcGFyZVJlcXVlc3Q6IGZ1bmN0aW9uIChyZXEsIGNhbGxiYWNrKSB7XG4gKiAgICAgICByZXEuYXV0aCgnbXktdXNlcm5hbWUnLCAnbXktcGFzc3dvcmQnKTtcbiAqICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgcmVxKTtcbiAqICAgICB9XG4gKiAgIH0pXG4gKiAgIC50aGVuKEpTT04ucGFyc2UpXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICogICAgIGNvbnNvbGUubG9nKGRvY3VtZW50LmZ1bGxfbmFtZSArICc6ICcgKyBkb2N1bWVudC5kZXNjcmlwdGlvbik7XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFeGFtcGxlIGxvYWRpbmcgYSBZQU1MIGZpbGVcbiAqXG4gKiBQYXRoTG9hZGVyXG4gKiAgIC5sb2FkKCcvVXNlcnMvbm90LXlvdS9wcm9qZWN0cy9wYXRoLWxvYWRlci8udHJhdmlzLnltbCcpXG4gKiAgIC50aGVuKFlBTUwuc2FmZUxvYWQpXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICogICAgIGNvbnNvbGUubG9nKCdwYXRoLWxvYWRlciB1c2VzIHRoZScsIGRvY3VtZW50Lmxhbmd1YWdlLCAnbGFuZ3VhZ2UuJyk7XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFeGFtcGxlIGxvYWRpbmcgYSBZQU1MIGZpbGUgd2l0aCBvcHRpb25zLnByb2Nlc3NDb250ZW50IChVc2VmdWwgaWYgeW91IG5lZWQgaW5mb3JtYXRpb24gaW4gdGhlIHJhdyByZXNwb25zZSlcbiAqXG4gKiBQYXRoTG9hZGVyXG4gKiAgIC5sb2FkKCcvVXNlcnMvbm90LXlvdS9wcm9qZWN0cy9wYXRoLWxvYWRlci8udHJhdmlzLnltbCcsIHtcbiAqICAgICBwcm9jZXNzQ29udGVudDogZnVuY3Rpb24gKHJlcywgY2FsbGJhY2spIHtcbiAqICAgICAgIGNhbGxiYWNrKFlBTUwuc2FmZUxvYWQocmVzLnRleHQpKTtcbiAqICAgICB9XG4gKiAgIH0pXG4gKiAgIC50aGVuKGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICogICAgIGNvbnNvbGUubG9nKCdwYXRoLWxvYWRlciB1c2VzIHRoZScsIGRvY3VtZW50Lmxhbmd1YWdlLCAnbGFuZ3VhZ2UuJyk7XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICovXG5tb2R1bGUuZXhwb3J0cy5sb2FkID0gZnVuY3Rpb24gKGxvY2F0aW9uLCBvcHRpb25zKSB7XG4gIHZhciBhbGxUYXNrcyA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8vIERlZmF1bHQgb3B0aW9ucyB0byBlbXB0eSBvYmplY3RcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGFyZ3VtZW50c1xuICBhbGxUYXNrcyA9IGFsbFRhc2tzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdsb2NhdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvY2F0aW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbG9jYXRpb24gbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5wcm9jZXNzQ29udGVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdGlvbnMucHJvY2Vzc0NvbnRlbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5wcm9jZXNzQ29udGVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIExvYWQgdGhlIGRvY3VtZW50IGZyb20gdGhlIHByb3ZpZGVkIGxvY2F0aW9uIGFuZCBwcm9jZXNzIGl0XG4gIGFsbFRhc2tzID0gYWxsVGFza3NcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgbG9hZGVyID0gZ2V0TG9hZGVyKGxvY2F0aW9uKTtcblxuICAgICAgICBsb2FkZXIubG9hZChsb2NhdGlvbiwgb3B0aW9ucyB8fCB7fSwgZnVuY3Rpb24gKGVyciwgZG9jdW1lbnQpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShkb2N1bWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgaWYgKG9wdGlvbnMucHJvY2Vzc0NvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAvLyBGb3IgY29uc2lzdGVuY3kgYmV0d2VlbiBmaWxlIGFuZCBodHRwLCBhbHdheXMgc2VuZCBhbiBvYmplY3Qgd2l0aCBhICd0ZXh0JyBwcm9wZXJ0eSBjb250YWluaW5nIHRoZSByYXdcbiAgICAgICAgICAvLyBzdHJpbmcgdmFsdWUgYmVpbmcgcHJvY2Vzc2VkLlxuICAgICAgICAgIG9wdGlvbnMucHJvY2Vzc0NvbnRlbnQodHlwZW9mIHJlcyA9PT0gJ29iamVjdCcgPyByZXMgOiB7dGV4dDogcmVzfSwgZnVuY3Rpb24gKGVyciwgcHJvY2Vzc2VkKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShwcm9jZXNzZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZXJlIHdhcyBubyBjb250ZW50IHByb2Nlc3Nvciwgd2Ugd2lsbCBhc3N1bWUgdGhhdCBmb3IgYWxsIG9iamVjdHMgdGhhdCBpdCBpcyBhIFN1cGVyYWdlbnQgcmVzcG9uc2VcbiAgICAgICAgLy8gYW5kIHdpbGwgcmV0dXJuIGl0cyBgdGV4dGAgcHJvcGVydHkgdmFsdWUuICBPdGhlcndpc2UsIHdlIHdpbGwgcmV0dXJuIHRoZSByYXcgcmVzcG9uc2UuXG4gICAgICAgIHJldHVybiB0eXBlb2YgcmVzID09PSAnb2JqZWN0JyA/IHJlcy50ZXh0IDogcmVzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiBhbGxUYXNrcztcbn07XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEplcmVteSBXaGl0bG9ja1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdW5zdXBwb3J0ZWRFcnJvciA9IG5ldyBUeXBlRXJyb3IoJ1RoZSBcXCdmaWxlXFwnIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyJyk7XG5cbi8qKlxuICogVGhlIGZpbGUgbG9hZGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIuXG4gKlxuICogQHRocm93cyB7ZXJyb3J9IHRoZSBmaWxlIGxvYWRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IHVuc3VwcG9ydGVkRXJyb3I7XG59O1xuXG4vKipcbiAqIFRoZSBmaWxlIGxvYWRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyLlxuICovXG5tb2R1bGUuZXhwb3J0cy5sb2FkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZm4gPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuXG4gIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbih1bnN1cHBvcnRlZEVycm9yKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyB1bnN1cHBvcnRlZEVycm9yO1xuICB9XG59O1xuIiwiLyogZXNsaW50LWVudiBub2RlLCBicm93c2VyICovXG5cbi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgSmVyZW15IFdoaXRsb2NrXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciByZXF1ZXN0ID0gcmVxdWlyZSgnc3VwZXJhZ2VudCcpO1xuXG52YXIgc3VwcG9ydGVkSHR0cE1ldGhvZHMgPSBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwYXRjaCcsICdwb3N0JywgJ3B1dCddO1xuXG4vKipcbiAqIExvYWRzIGEgZmlsZSBmcm9tIGFuIGh0dHAgb3IgaHR0cHMgVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiAtIFRoZSBkb2N1bWVudCBVUkwgKElmIHJlbGF0aXZlLCBsb2NhdGlvbiBpcyByZWxhdGl2ZSB0byB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gVGhlIGxvYWRlciBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubWV0aG9kPWdldF0gLSBUaGUgSFRUUCBtZXRob2QgdG8gdXNlIGZvciB0aGUgcmVxdWVzdFxuICogQHBhcmFtIHttb2R1bGU6UGF0aExvYWRlcn5QcmVwYXJlUmVxdWVzdENhbGxiYWNrfSBbb3B0aW9ucy5wcmVwYXJlUmVxdWVzdF0gLSBUaGUgY2FsbGJhY2sgdXNlZCB0byBwcmVwYXJlIGEgcmVxdWVzdFxuICogQHBhcmFtIHttb2R1bGU6UGF0aExvYWRlcn5Qcm9jZXNzUmVzcG9uc2VDYWxsYmFja30gW29wdGlvbnMucHJvY2Vzc0NvbnRlbnRdIC0gVGhlIGNhbGxiYWNrIHVzZWQgdG8gcHJvY2VzcyB0aGVcbiAqIHJlc3BvbnNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBlcnJvci1maXJzdCBjYWxsYmFja1xuICovXG5tb2R1bGUuZXhwb3J0cy5sb2FkID0gZnVuY3Rpb24gKGxvY2F0aW9uLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgcmVhbE1ldGhvZCA9IG9wdGlvbnMubWV0aG9kID8gb3B0aW9ucy5tZXRob2QudG9Mb3dlckNhc2UoKSA6ICdnZXQnO1xuICB2YXIgZXJyO1xuICB2YXIgcmVhbFJlcXVlc3Q7XG5cbiAgZnVuY3Rpb24gbWFrZVJlcXVlc3QgKGVyciwgcmVxKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYnVmZmVyKCkgaXMgb25seSBhdmFpbGFibGUgaW4gTm9kZS5qc1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgPyBwcm9jZXNzIDogMCkgPT09ICdbb2JqZWN0IHByb2Nlc3NdJyAmJlxuICAgICAgICAgIHR5cGVvZiByZXEuYnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcS5idWZmZXIodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJlcVxuICAgICAgICAuZW5kKGZ1bmN0aW9uIChlcnIyLCByZXMpIHtcbiAgICAgICAgICBpZiAoZXJyMikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyMik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgcmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5tZXRob2QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1ldGhvZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMubWV0aG9kIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnRlZEh0dHBNZXRob2RzLmluZGV4T2Yob3B0aW9ucy5tZXRob2QpID09PSAtMSkge1xuICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignb3B0aW9ucy5tZXRob2QgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogJyArXG4gICAgICAgIHN1cHBvcnRlZEh0dHBNZXRob2RzLnNsaWNlKDAsIHN1cHBvcnRlZEh0dHBNZXRob2RzLmxlbmd0aCAtIDEpLmpvaW4oJywgJykgKyAnIG9yICcgK1xuICAgICAgICBzdXBwb3J0ZWRIdHRwTWV0aG9kc1tzdXBwb3J0ZWRIdHRwTWV0aG9kcy5sZW5ndGggLSAxXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLnByZXBhcmVSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0aW9ucy5wcmVwYXJlUmVxdWVzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMucHJlcGFyZVJlcXVlc3QgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBpZiAoIWVycikge1xuICAgIHJlYWxSZXF1ZXN0ID0gcmVxdWVzdFtyZWFsTWV0aG9kID09PSAnZGVsZXRlJyA/ICdkZWwnIDogcmVhbE1ldGhvZF0obG9jYXRpb24pO1xuXG4gICAgaWYgKG9wdGlvbnMucHJlcGFyZVJlcXVlc3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG9wdGlvbnMucHJlcGFyZVJlcXVlc3QocmVhbFJlcXVlc3QsIG1ha2VSZXF1ZXN0KTtcbiAgICAgIH0gY2F0Y2ggKGVycjIpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyMik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ha2VSZXF1ZXN0KHVuZGVmaW5lZCwgcmVhbFJlcXVlc3QpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG59O1xuIiwidmFyIGlzYXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuLyoqXG4gKiBFeHBvc2UgYHBhdGhUb1JlZ2V4cGAuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gcGF0aFRvUmVnZXhwXG5tb2R1bGUuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5tb2R1bGUuZXhwb3J0cy5jb21waWxlID0gY29tcGlsZVxubW9kdWxlLmV4cG9ydHMudG9rZW5zVG9GdW5jdGlvbiA9IHRva2Vuc1RvRnVuY3Rpb25cbm1vZHVsZS5leHBvcnRzLnRva2Vuc1RvUmVnRXhwID0gdG9rZW5zVG9SZWdFeHBcblxuLyoqXG4gKiBUaGUgbWFpbiBwYXRoIG1hdGNoaW5nIHJlZ2V4cCB1dGlsaXR5LlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbnZhciBQQVRIX1JFR0VYUCA9IG5ldyBSZWdFeHAoW1xuICAvLyBNYXRjaCBlc2NhcGVkIGNoYXJhY3RlcnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYXBwZWFyIGluIGZ1dHVyZSBtYXRjaGVzLlxuICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRoYXQgd29uJ3QgdHJhbnNmb3JtLlxuICAnKFxcXFxcXFxcLiknLFxuICAvLyBNYXRjaCBFeHByZXNzLXN0eWxlIHBhcmFtZXRlcnMgYW5kIHVuLW5hbWVkIHBhcmFtZXRlcnMgd2l0aCBhIHByZWZpeFxuICAvLyBhbmQgb3B0aW9uYWwgc3VmZml4ZXMuIE1hdGNoZXMgYXBwZWFyIGFzOlxuICAvL1xuICAvLyBcIi86dGVzdChcXFxcZCspP1wiID0+IFtcIi9cIiwgXCJ0ZXN0XCIsIFwiXFxkK1wiLCB1bmRlZmluZWQsIFwiP1wiLCB1bmRlZmluZWRdXG4gIC8vIFwiL3JvdXRlKFxcXFxkKylcIiAgPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiXFxkK1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgLy8gXCIvKlwiICAgICAgICAgICAgPT4gW1wiL1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiKlwiXVxuICAnKFtcXFxcLy5dKT8oPzooPzpcXFxcOihcXFxcdyspKD86XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSk/fFxcXFwoKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKCldKSspXFxcXCkpKFsrKj9dKT98KFxcXFwqKSknXG5dLmpvaW4oJ3wnKSwgJ2cnKVxuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIGZvciB0aGUgcmF3IHRva2Vucy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBzdHJcbiAqIEBwYXJhbSAge09iamVjdD19IG9wdGlvbnNcbiAqIEByZXR1cm4geyFBcnJheX1cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKHN0ciwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gW11cbiAgdmFyIGtleSA9IDBcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgcGF0aCA9ICcnXG4gIHZhciBkZWZhdWx0RGVsaW1pdGVyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlbGltaXRlciB8fCAnLydcbiAgdmFyIHJlc1xuXG4gIHdoaWxlICgocmVzID0gUEFUSF9SRUdFWFAuZXhlYyhzdHIpKSAhPSBudWxsKSB7XG4gICAgdmFyIG0gPSByZXNbMF1cbiAgICB2YXIgZXNjYXBlZCA9IHJlc1sxXVxuICAgIHZhciBvZmZzZXQgPSByZXMuaW5kZXhcbiAgICBwYXRoICs9IHN0ci5zbGljZShpbmRleCwgb2Zmc2V0KVxuICAgIGluZGV4ID0gb2Zmc2V0ICsgbS5sZW5ndGhcblxuICAgIC8vIElnbm9yZSBhbHJlYWR5IGVzY2FwZWQgc2VxdWVuY2VzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICBwYXRoICs9IGVzY2FwZWRbMV1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdmFyIG5leHQgPSBzdHJbaW5kZXhdXG4gICAgdmFyIHByZWZpeCA9IHJlc1syXVxuICAgIHZhciBuYW1lID0gcmVzWzNdXG4gICAgdmFyIGNhcHR1cmUgPSByZXNbNF1cbiAgICB2YXIgZ3JvdXAgPSByZXNbNV1cbiAgICB2YXIgbW9kaWZpZXIgPSByZXNbNl1cbiAgICB2YXIgYXN0ZXJpc2sgPSByZXNbN11cblxuICAgIC8vIFB1c2ggdGhlIGN1cnJlbnQgcGF0aCBvbnRvIHRoZSB0b2tlbnMuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gICAgICBwYXRoID0gJydcbiAgICB9XG5cbiAgICB2YXIgcGFydGlhbCA9IHByZWZpeCAhPSBudWxsICYmIG5leHQgIT0gbnVsbCAmJiBuZXh0ICE9PSBwcmVmaXhcbiAgICB2YXIgcmVwZWF0ID0gbW9kaWZpZXIgPT09ICcrJyB8fCBtb2RpZmllciA9PT0gJyonXG4gICAgdmFyIG9wdGlvbmFsID0gbW9kaWZpZXIgPT09ICc/JyB8fCBtb2RpZmllciA9PT0gJyonXG4gICAgdmFyIGRlbGltaXRlciA9IHJlc1syXSB8fCBkZWZhdWx0RGVsaW1pdGVyXG4gICAgdmFyIHBhdHRlcm4gPSBjYXB0dXJlIHx8IGdyb3VwXG5cbiAgICB0b2tlbnMucHVzaCh7XG4gICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgcHJlZml4OiBwcmVmaXggfHwgJycsXG4gICAgICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgcGFydGlhbDogcGFydGlhbCxcbiAgICAgIGFzdGVyaXNrOiAhIWFzdGVyaXNrLFxuICAgICAgcGF0dGVybjogcGF0dGVybiA/IGVzY2FwZUdyb3VwKHBhdHRlcm4pIDogKGFzdGVyaXNrID8gJy4qJyA6ICdbXicgKyBlc2NhcGVTdHJpbmcoZGVsaW1pdGVyKSArICddKz8nKVxuICAgIH0pXG4gIH1cblxuICAvLyBNYXRjaCBhbnkgY2hhcmFjdGVycyBzdGlsbCByZW1haW5pbmcuXG4gIGlmIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICBwYXRoICs9IHN0ci5zdWJzdHIoaW5kZXgpXG4gIH1cblxuICAvLyBJZiB0aGUgcGF0aCBleGlzdHMsIHB1c2ggaXQgb250byB0aGUgZW5kLlxuICBpZiAocGF0aCkge1xuICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gIH1cblxuICByZXR1cm4gdG9rZW5zXG59XG5cbi8qKlxuICogQ29tcGlsZSBhIHN0cmluZyB0byBhIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciB0aGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgIHN0clxuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshZnVuY3Rpb24oT2JqZWN0PSwgT2JqZWN0PSl9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUgKHN0ciwgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9GdW5jdGlvbihwYXJzZShzdHIsIG9wdGlvbnMpKVxufVxuXG4vKipcbiAqIFByZXR0aWVyIGVuY29kaW5nIG9mIFVSSSBwYXRoIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1tcXC8/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRW5jb2RlIHRoZSBhc3RlcmlzayBwYXJhbWV0ZXIuIFNpbWlsYXIgdG8gYHByZXR0eWAsIGJ1dCBhbGxvd3Mgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzdGVyaXNrIChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1s/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvRnVuY3Rpb24gKHRva2Vucykge1xuICAvLyBDb21waWxlIGFsbCB0aGUgdG9rZW5zIGludG8gcmVnZXhwcy5cbiAgdmFyIG1hdGNoZXMgPSBuZXcgQXJyYXkodG9rZW5zLmxlbmd0aClcblxuICAvLyBDb21waWxlIGFsbCB0aGUgcGF0dGVybnMgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0eXBlb2YgdG9rZW5zW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgbWF0Y2hlc1tpXSA9IG5ldyBSZWdFeHAoJ14oPzonICsgdG9rZW5zW2ldLnBhdHRlcm4gKyAnKSQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAob2JqLCBvcHRzKSB7XG4gICAgdmFyIHBhdGggPSAnJ1xuICAgIHZhciBkYXRhID0gb2JqIHx8IHt9XG4gICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9XG4gICAgdmFyIGVuY29kZSA9IG9wdGlvbnMucHJldHR5ID8gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IDogZW5jb2RlVVJJQ29tcG9uZW50XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHBhdGggKz0gdG9rZW5cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhW3Rva2VuLm5hbWVdXG4gICAgICB2YXIgc2VnbWVudFxuXG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAvLyBQcmVwZW5kIHBhcnRpYWwgc2VnbWVudCBwcmVmaXhlcy5cbiAgICAgICAgICBpZiAodG9rZW4ucGFydGlhbCkge1xuICAgICAgICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXhcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gYmUgZGVmaW5lZCcpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzYXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGlmICghdG9rZW4ucmVwZWF0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBub3QgcmVwZWF0LCBidXQgcmVjZWl2ZWQgYCcgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAnYCcpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCBiZSBlbXB0eScpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWx1ZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHNlZ21lbnQgPSBlbmNvZGUodmFsdWVbal0pXG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxsIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkoc2VnbWVudCkgKyAnYCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aCArPSAoaiA9PT0gMCA/IHRva2VuLnByZWZpeCA6IHRva2VuLmRlbGltaXRlcikgKyBzZWdtZW50XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBzZWdtZW50ID0gdG9rZW4uYXN0ZXJpc2sgPyBlbmNvZGVBc3Rlcmlzayh2YWx1ZSkgOiBlbmNvZGUodmFsdWUpXG5cbiAgICAgIGlmICghbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIFwiJyArIHNlZ21lbnQgKyAnXCInKVxuICAgICAgfVxuXG4gICAgICBwYXRoICs9IHRva2VuLnByZWZpeCArIHNlZ21lbnRcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aFxuICB9XG59XG5cbi8qKlxuICogRXNjYXBlIGEgcmVndWxhciBleHByZXNzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18XFwvXFxcXF0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEVzY2FwZSB0aGUgY2FwdHVyaW5nIGdyb3VwIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgbWVhbmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGdyb3VwXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUdyb3VwIChncm91cCkge1xuICByZXR1cm4gZ3JvdXAucmVwbGFjZSgvKFs9ITokXFwvKCldKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGtleXMgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFSZWdFeHB9IHJlXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhdHRhY2hLZXlzIChyZSwga2V5cykge1xuICByZS5rZXlzID0ga2V5c1xuICByZXR1cm4gcmVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZsYWdzIGZvciBhIHJlZ2V4cCBmcm9tIHRoZSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmbGFncyAob3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5zZW5zaXRpdmUgPyAnJyA6ICdpJ1xufVxuXG4vKipcbiAqIFB1bGwgb3V0IGtleXMgZnJvbSBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshUmVnRXhwfSBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiByZWdleHBUb1JlZ2V4cCAocGF0aCwga2V5cykge1xuICAvLyBVc2UgYSBuZWdhdGl2ZSBsb29rYWhlYWQgdG8gbWF0Y2ggb25seSBjYXB0dXJpbmcgZ3JvdXBzLlxuICB2YXIgZ3JvdXBzID0gcGF0aC5zb3VyY2UubWF0Y2goL1xcKCg/IVxcPykvZylcblxuICBpZiAoZ3JvdXBzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleXMucHVzaCh7XG4gICAgICAgIG5hbWU6IGksXG4gICAgICAgIHByZWZpeDogbnVsbCxcbiAgICAgICAgZGVsaW1pdGVyOiBudWxsLFxuICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgIHBhcnRpYWw6IGZhbHNlLFxuICAgICAgICBhc3RlcmlzazogZmFsc2UsXG4gICAgICAgIHBhdHRlcm46IG51bGxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMocGF0aCwga2V5cylcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gYXJyYXkgaW50byBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBwYXRoXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhcnJheVRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIHZhciBwYXJ0cyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgcGFydHMucHVzaChwYXRoVG9SZWdleHAocGF0aFtpXSwga2V5cywgb3B0aW9ucykuc291cmNlKVxuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoJyg/OicgKyBwYXJ0cy5qb2luKCd8JykgKyAnKScsIGZsYWdzKG9wdGlvbnMpKVxuXG4gIHJldHVybiBhdHRhY2hLZXlzKHJlZ2V4cCwga2V5cylcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXRoIHJlZ2V4cCBmcm9tIHN0cmluZyBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBzdHJpbmdUb1JlZ2V4cCAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9SZWdFeHAocGFyc2UocGF0aCwgb3B0aW9ucyksIGtleXMsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogRXhwb3NlIGEgZnVuY3Rpb24gZm9yIHRha2luZyB0b2tlbnMgYW5kIHJldHVybmluZyBhIFJlZ0V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICAgICAgICAgIHRva2Vuc1xuICogQHBhcmFtICB7KEFycmF5fE9iamVjdCk9fSBrZXlzXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvUmVnRXhwICh0b2tlbnMsIGtleXMsIG9wdGlvbnMpIHtcbiAgaWYgKCFpc2FycmF5KGtleXMpKSB7XG4gICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKGtleXMgfHwgb3B0aW9ucylcbiAgICBrZXlzID0gW11cbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0XG4gIHZhciBlbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2VcbiAgdmFyIHJvdXRlID0gJydcblxuICAvLyBJdGVyYXRlIG92ZXIgdGhlIHRva2VucyBhbmQgY3JlYXRlIG91ciByZWdleHAgc3RyaW5nLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXVxuXG4gICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJvdXRlICs9IGVzY2FwZVN0cmluZyh0b2tlbilcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHByZWZpeCA9IGVzY2FwZVN0cmluZyh0b2tlbi5wcmVmaXgpXG4gICAgICB2YXIgY2FwdHVyZSA9ICcoPzonICsgdG9rZW4ucGF0dGVybiArICcpJ1xuXG4gICAgICBrZXlzLnB1c2godG9rZW4pXG5cbiAgICAgIGlmICh0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgY2FwdHVyZSArPSAnKD86JyArIHByZWZpeCArIGNhcHR1cmUgKyAnKSonXG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICBpZiAoIXRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICBjYXB0dXJlID0gJyg/OicgKyBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJykpPydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYXB0dXJlID0gcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpPydcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FwdHVyZSA9IHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKSdcbiAgICAgIH1cblxuICAgICAgcm91dGUgKz0gY2FwdHVyZVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZWxpbWl0ZXIgPSBlc2NhcGVTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXIgfHwgJy8nKVxuICB2YXIgZW5kc1dpdGhEZWxpbWl0ZXIgPSByb3V0ZS5zbGljZSgtZGVsaW1pdGVyLmxlbmd0aCkgPT09IGRlbGltaXRlclxuXG4gIC8vIEluIG5vbi1zdHJpY3QgbW9kZSB3ZSBhbGxvdyBhIHNsYXNoIGF0IHRoZSBlbmQgb2YgbWF0Y2guIElmIHRoZSBwYXRoIHRvXG4gIC8vIG1hdGNoIGFscmVhZHkgZW5kcyB3aXRoIGEgc2xhc2gsIHdlIHJlbW92ZSBpdCBmb3IgY29uc2lzdGVuY3kuIFRoZSBzbGFzaFxuICAvLyBpcyB2YWxpZCBhdCB0aGUgZW5kIG9mIGEgcGF0aCBtYXRjaCwgbm90IGluIHRoZSBtaWRkbGUuIFRoaXMgaXMgaW1wb3J0YW50XG4gIC8vIGluIG5vbi1lbmRpbmcgbW9kZSwgd2hlcmUgXCIvdGVzdC9cIiBzaG91bGRuJ3QgbWF0Y2ggXCIvdGVzdC8vcm91dGVcIi5cbiAgaWYgKCFzdHJpY3QpIHtcbiAgICByb3V0ZSA9IChlbmRzV2l0aERlbGltaXRlciA/IHJvdXRlLnNsaWNlKDAsIC1kZWxpbWl0ZXIubGVuZ3RoKSA6IHJvdXRlKSArICcoPzonICsgZGVsaW1pdGVyICsgJyg/PSQpKT8nXG4gIH1cblxuICBpZiAoZW5kKSB7XG4gICAgcm91dGUgKz0gJyQnXG4gIH0gZWxzZSB7XG4gICAgLy8gSW4gbm9uLWVuZGluZyBtb2RlLCB3ZSBuZWVkIHRoZSBjYXB0dXJpbmcgZ3JvdXBzIHRvIG1hdGNoIGFzIG11Y2ggYXNcbiAgICAvLyBwb3NzaWJsZSBieSB1c2luZyBhIHBvc2l0aXZlIGxvb2thaGVhZCB0byB0aGUgZW5kIG9yIG5leHQgcGF0aCBzZWdtZW50LlxuICAgIHJvdXRlICs9IHN0cmljdCAmJiBlbmRzV2l0aERlbGltaXRlciA/ICcnIDogJyg/PScgKyBkZWxpbWl0ZXIgKyAnfCQpJ1xuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMobmV3IFJlZ0V4cCgnXicgKyByb3V0ZSwgZmxhZ3Mob3B0aW9ucykpLCBrZXlzKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gcGF0aCBzdHJpbmcsIHJldHVybmluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBBbiBlbXB0eSBhcnJheSBjYW4gYmUgcGFzc2VkIGluIGZvciB0aGUga2V5cywgd2hpY2ggd2lsbCBob2xkIHRoZVxuICogcGxhY2Vob2xkZXIga2V5IGRlc2NyaXB0aW9ucy4gRm9yIGV4YW1wbGUsIHVzaW5nIGAvdXNlci86aWRgLCBga2V5c2Agd2lsbFxuICogY29udGFpbiBgW3sgbmFtZTogJ2lkJywgZGVsaW1pdGVyOiAnLycsIG9wdGlvbmFsOiBmYWxzZSwgcmVwZWF0OiBmYWxzZSB9XWAuXG4gKlxuICogQHBhcmFtICB7KHN0cmluZ3xSZWdFeHB8QXJyYXkpfSBwYXRoXG4gKiBAcGFyYW0gIHsoQXJyYXl8T2JqZWN0KT19ICAgICAgIGtleXNcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gcGF0aFRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIGlmICghaXNhcnJheShrZXlzKSkge1xuICAgIG9wdGlvbnMgPSAvKiogQHR5cGUgeyFPYmplY3R9ICovIChrZXlzIHx8IG9wdGlvbnMpXG4gICAga2V5cyA9IFtdXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmIChwYXRoIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgcmV0dXJuIHJlZ2V4cFRvUmVnZXhwKHBhdGgsIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cykpXG4gIH1cblxuICBpZiAoaXNhcnJheShwYXRoKSkge1xuICAgIHJldHVybiBhcnJheVRvUmVnZXhwKC8qKiBAdHlwZSB7IUFycmF5fSAqLyAocGF0aCksIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cyksIG9wdGlvbnMpXG4gIH1cblxuICByZXR1cm4gc3RyaW5nVG9SZWdleHAoLyoqIEB0eXBlIHtzdHJpbmd9ICovIChwYXRoKSwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSwgb3B0aW9ucylcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSB7IG5leHRUaWNrOiBuZXh0VGljayB9O1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBwcm9jZXNzXG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cblxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ocXMsIHNlcCwgZXEsIG9wdGlvbnMpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIHZhciBvYmogPSB7fTtcblxuICBpZiAodHlwZW9mIHFzICE9PSAnc3RyaW5nJyB8fCBxcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IC9cXCsvZztcbiAgcXMgPSBxcy5zcGxpdChzZXApO1xuXG4gIHZhciBtYXhLZXlzID0gMTAwMDtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubWF4S2V5cyA9PT0gJ251bWJlcicpIHtcbiAgICBtYXhLZXlzID0gb3B0aW9ucy5tYXhLZXlzO1xuICB9XG5cbiAgdmFyIGxlbiA9IHFzLmxlbmd0aDtcbiAgLy8gbWF4S2V5cyA8PSAwIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIG5vdCBsaW1pdCBrZXlzIGNvdW50XG4gIGlmIChtYXhLZXlzID4gMCAmJiBsZW4gPiBtYXhLZXlzKSB7XG4gICAgbGVuID0gbWF4S2V5cztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgeCA9IHFzW2ldLnJlcGxhY2UocmVnZXhwLCAnJTIwJyksXG4gICAgICAgIGlkeCA9IHguaW5kZXhPZihlcSksXG4gICAgICAgIGtzdHIsIHZzdHIsIGssIHY7XG5cbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgIGtzdHIgPSB4LnN1YnN0cigwLCBpZHgpO1xuICAgICAgdnN0ciA9IHguc3Vic3RyKGlkeCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrc3RyID0geDtcbiAgICAgIHZzdHIgPSAnJztcbiAgICB9XG5cbiAgICBrID0gZGVjb2RlVVJJQ29tcG9uZW50KGtzdHIpO1xuICAgIHYgPSBkZWNvZGVVUklDb21wb25lbnQodnN0cik7XG5cbiAgICBpZiAoIWhhc093blByb3BlcnR5KG9iaiwgaykpIHtcbiAgICAgIG9ialtrXSA9IHY7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgIG9ialtrXS5wdXNoKHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba10gPSBbb2JqW2tdLCB2XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5UHJpbWl0aXZlID0gZnVuY3Rpb24odikge1xuICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gdiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6ICcnO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHNlcCwgZXEsIG5hbWUpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIGlmIChvYmogPT09IG51bGwpIHtcbiAgICBvYmogPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbWFwKG9iamVjdEtleXMob2JqKSwgZnVuY3Rpb24oaykge1xuICAgICAgdmFyIGtzID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShrKSkgKyBlcTtcbiAgICAgIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcChvYmpba10sIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKHYpKTtcbiAgICAgICAgfSkuam9pbihzZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmpba10pKTtcbiAgICAgIH1cbiAgICB9KS5qb2luKHNlcCk7XG5cbiAgfVxuXG4gIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShuYW1lKSkgKyBlcSArXG4gICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9iaikpO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbmZ1bmN0aW9uIG1hcCAoeHMsIGYpIHtcbiAgaWYgKHhzLm1hcCkgcmV0dXJuIHhzLm1hcChmKTtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzLnB1c2goZih4c1tpXSwgaSkpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgcmVzLnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5kZWNvZGUgPSBleHBvcnRzLnBhcnNlID0gcmVxdWlyZSgnLi9kZWNvZGUnKTtcbmV4cG9ydHMuZW5jb2RlID0gZXhwb3J0cy5zdHJpbmdpZnkgPSByZXF1aXJlKCcuL2VuY29kZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCByZXQgICAgPSByZXF1aXJlKCdyZXQnKTtcbmNvbnN0IERSYW5nZSA9IHJlcXVpcmUoJ2RyYW5nZScpO1xuY29uc3QgdHlwZXMgID0gcmV0LnR5cGVzO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUmFuZEV4cCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSByZWdleHBcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1cbiAgICovXG4gIGNvbnN0cnVjdG9yKHJlZ2V4cCwgbSkge1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlZ2V4cCk7XG4gICAgaWYgKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgdGhpcy5pZ25vcmVDYXNlID0gcmVnZXhwLmlnbm9yZUNhc2U7XG4gICAgICB0aGlzLm11bHRpbGluZSA9IHJlZ2V4cC5tdWx0aWxpbmU7XG4gICAgICByZWdleHAgPSByZWdleHAuc291cmNlO1xuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5pZ25vcmVDYXNlID0gbSAmJiBtLmluZGV4T2YoJ2knKSAhPT0gLTE7XG4gICAgICB0aGlzLm11bHRpbGluZSA9IG0gJiYgbS5pbmRleE9mKCdtJykgIT09IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgcmVnZXhwIG9yIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMudG9rZW5zID0gcmV0KHJlZ2V4cCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgc29tZSBjdXN0b20gcHJvcGVydGllcyBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHJlZ2V4cC5cbiAgICpcbiAgICogQHBhcmFtIHtSYW5kRXhwfSByYW5kZXhwXG4gICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHBcbiAgICovXG4gIF9zZXREZWZhdWx0cyhyZWdleHApIHtcbiAgICAvLyBXaGVuIGEgcmVwZXRpdGlvbmFsIHRva2VuIGhhcyBpdHMgbWF4IHNldCB0byBJbmZpbml0ZSxcbiAgICAvLyByYW5kZXhwIHdvbid0IGFjdHVhbGx5IGdlbmVyYXRlIGEgcmFuZG9tIGFtb3VudCBiZXR3ZWVuIG1pbiBhbmQgSW5maW5pdGVcbiAgICAvLyBpbnN0ZWFkIGl0IHdpbGwgc2VlIEluZmluaXRlIGFzIG1pbiArIDEwMC5cbiAgICB0aGlzLm1heCA9IHJlZ2V4cC5tYXggIT0gbnVsbCA/IHJlZ2V4cC5tYXggOlxuICAgICAgUmFuZEV4cC5wcm90b3R5cGUubWF4ICE9IG51bGwgPyBSYW5kRXhwLnByb3RvdHlwZS5tYXggOiAxMDA7XG5cbiAgICAvLyBUaGlzIGFsbG93cyBleHBhbmRpbmcgdG8gaW5jbHVkZSBhZGRpdGlvbmFsIGNoYXJhY3RlcnNcbiAgICAvLyBmb3IgaW5zdGFuY2U6IFJhbmRFeHAuZGVmYXVsdFJhbmdlLmFkZCgwLCA2NTUzNSk7XG4gICAgdGhpcy5kZWZhdWx0UmFuZ2UgPSByZWdleHAuZGVmYXVsdFJhbmdlID9cbiAgICAgIHJlZ2V4cC5kZWZhdWx0UmFuZ2UgOiB0aGlzLmRlZmF1bHRSYW5nZS5jbG9uZSgpO1xuXG4gICAgaWYgKHJlZ2V4cC5yYW5kSW50KSB7XG4gICAgICB0aGlzLnJhbmRJbnQgPSByZWdleHAucmFuZEludDtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHJhbmRvbSBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIGdlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2VuKHRoaXMudG9rZW5zLCBbXSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByYW5kb20gc3RyaW5nIG1vZGVsZWQgYWZ0ZXIgZ2l2ZW4gdG9rZW5zLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gZ3JvdXBzXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIF9nZW4odG9rZW4sIGdyb3Vwcykge1xuICAgIHZhciBzdGFjaywgc3RyLCBuLCBpLCBsO1xuXG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICBjYXNlIHR5cGVzLlJPT1Q6XG4gICAgICBjYXNlIHR5cGVzLkdST1VQOlxuICAgICAgICAvLyBJZ25vcmUgbG9va2FoZWFkcyBmb3Igbm93LlxuICAgICAgICBpZiAodG9rZW4uZm9sbG93ZWRCeSB8fCB0b2tlbi5ub3RGb2xsb3dlZEJ5KSB7IHJldHVybiAnJzsgfVxuXG4gICAgICAgIC8vIEluc2VydCBwbGFjZWhvbGRlciB1bnRpbCBncm91cCBzdHJpbmcgaXMgZ2VuZXJhdGVkLlxuICAgICAgICBpZiAodG9rZW4ucmVtZW1iZXIgJiYgdG9rZW4uZ3JvdXBOdW1iZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRva2VuLmdyb3VwTnVtYmVyID0gZ3JvdXBzLnB1c2gobnVsbCkgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhY2sgPSB0b2tlbi5vcHRpb25zID9cbiAgICAgICAgICB0aGlzLl9yYW5kU2VsZWN0KHRva2VuLm9wdGlvbnMpIDogdG9rZW4uc3RhY2s7XG5cbiAgICAgICAgc3RyID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBzdGFjay5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBzdHIgKz0gdGhpcy5fZ2VuKHN0YWNrW2ldLCBncm91cHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnJlbWVtYmVyKSB7XG4gICAgICAgICAgZ3JvdXBzW3Rva2VuLmdyb3VwTnVtYmVyXSA9IHN0cjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuXG4gICAgICBjYXNlIHR5cGVzLlBPU0lUSU9OOlxuICAgICAgICAvLyBEbyBub3RoaW5nIGZvciBub3cuXG4gICAgICAgIHJldHVybiAnJztcblxuICAgICAgY2FzZSB0eXBlcy5TRVQ6XG4gICAgICAgIHZhciBleHBhbmRlZFNldCA9IHRoaXMuX2V4cGFuZCh0b2tlbik7XG4gICAgICAgIGlmICghZXhwYW5kZWRTZXQubGVuZ3RoKSB7IHJldHVybiAnJzsgfVxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLl9yYW5kU2VsZWN0KGV4cGFuZGVkU2V0KSk7XG5cbiAgICAgIGNhc2UgdHlwZXMuUkVQRVRJVElPTjpcbiAgICAgICAgLy8gUmFuZG9tbHkgZ2VuZXJhdGUgbnVtYmVyIGJldHdlZW4gbWluIGFuZCBtYXguXG4gICAgICAgIG4gPSB0aGlzLnJhbmRJbnQodG9rZW4ubWluLFxuICAgICAgICAgIHRva2VuLm1heCA9PT0gSW5maW5pdHkgPyB0b2tlbi5taW4gKyB0aGlzLm1heCA6IHRva2VuLm1heCk7XG5cbiAgICAgICAgc3RyID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzdHIgKz0gdGhpcy5fZ2VuKHRva2VuLnZhbHVlLCBncm91cHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cjtcblxuICAgICAgY2FzZSB0eXBlcy5SRUZFUkVOQ0U6XG4gICAgICAgIHJldHVybiBncm91cHNbdG9rZW4udmFsdWUgLSAxXSB8fCAnJztcblxuICAgICAgY2FzZSB0eXBlcy5DSEFSOlxuICAgICAgICB2YXIgY29kZSA9IHRoaXMuaWdub3JlQ2FzZSAmJiB0aGlzLl9yYW5kQm9vbCgpID9cbiAgICAgICAgICB0aGlzLl90b090aGVyQ2FzZSh0b2tlbi52YWx1ZSkgOiB0b2tlbi52YWx1ZTtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogSWYgY29kZSBpcyBhbHBoYWJldGljLCBjb252ZXJ0cyB0byBvdGhlciBjYXNlLlxuICAgKiBJZiBub3QgYWxwaGFiZXRpYywgcmV0dXJucyBiYWNrIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIF90b090aGVyQ2FzZShjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgKyAoOTcgPD0gY29kZSAmJiBjb2RlIDw9IDEyMiA/IC0zMiA6XG4gICAgICA2NSA8PSBjb2RlICYmIGNvZGUgPD0gOTAgID8gIDMyIDogMCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSYW5kb21seSByZXR1cm5zIGEgdHJ1ZSBvciBmYWxzZSB2YWx1ZS5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIF9yYW5kQm9vbCgpIHtcbiAgICByZXR1cm4gIXRoaXMucmFuZEludCgwLCAxKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJhbmRvbWx5IHNlbGVjdHMgYW5kIHJldHVybnMgYSB2YWx1ZSBmcm9tIHRoZSBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheS48T2JqZWN0Pn0gYXJyXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIF9yYW5kU2VsZWN0KGFycikge1xuICAgIGlmIChhcnIgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgIHJldHVybiBhcnIuaW5kZXgodGhpcy5yYW5kSW50KDAsIGFyci5sZW5ndGggLSAxKSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJbdGhpcy5yYW5kSW50KDAsIGFyci5sZW5ndGggLSAxKV07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBleHBhbmRzIGEgdG9rZW4gdG8gYSBEaXNjb250aW51b3VzUmFuZ2Ugb2YgY2hhcmFjdGVycyB3aGljaCBoYXMgYVxuICAgKiBsZW5ndGggYW5kIGFuIGluZGV4IGZ1bmN0aW9uIChmb3IgcmFuZG9tIHNlbGVjdGluZylcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEByZXR1cm4ge0Rpc2NvbnRpbnVvdXNSYW5nZX1cbiAgICovXG4gIF9leHBhbmQodG9rZW4pIHtcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gcmV0LnR5cGVzLkNIQVIpIHtcbiAgICAgIHJldHVybiBuZXcgRFJhbmdlKHRva2VuLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IHJldC50eXBlcy5SQU5HRSkge1xuICAgICAgcmV0dXJuIG5ldyBEUmFuZ2UodG9rZW4uZnJvbSwgdG9rZW4udG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZHJhbmdlID0gbmV3IERSYW5nZSgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHN1YnJhbmdlID0gdGhpcy5fZXhwYW5kKHRva2VuLnNldFtpXSk7XG4gICAgICAgIGRyYW5nZS5hZGQoc3VicmFuZ2UpO1xuICAgICAgICBpZiAodGhpcy5pZ25vcmVDYXNlKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdWJyYW5nZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbGV0IGNvZGUgPSBzdWJyYW5nZS5pbmRleChqKTtcbiAgICAgICAgICAgIGxldCBvdGhlckNhc2VDb2RlID0gdGhpcy5fdG9PdGhlckNhc2UoY29kZSk7XG4gICAgICAgICAgICBpZiAoY29kZSAhPT0gb3RoZXJDYXNlQ29kZSkge1xuICAgICAgICAgICAgICBkcmFuZ2UuYWRkKG90aGVyQ2FzZUNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRva2VuLm5vdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UmFuZ2UuY2xvbmUoKS5zdWJ0cmFjdChkcmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFJhbmdlLmNsb25lKCkuaW50ZXJzZWN0KGRyYW5nZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogUmFuZG9tbHkgZ2VuZXJhdGVzIGFuZCByZXR1cm5zIGEgbnVtYmVyIGJldHdlZW4gYSBhbmQgYiAoaW5jbHVzaXZlKS5cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGJcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgcmFuZEludChhLCBiKSB7XG4gICAgcmV0dXJuIGEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoMSArIGIgLSBhKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJhbmdlIG9mIGNoYXJhY3RlcnMgdG8gZ2VuZXJhdGUgZnJvbS5cbiAgICovXG4gIGdldCBkZWZhdWx0UmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlID0gdGhpcy5fcmFuZ2UgfHwgbmV3IERSYW5nZSgzMiwgMTI2KTtcbiAgfVxuXG4gIHNldCBkZWZhdWx0UmFuZ2UocmFuZ2UpIHtcbiAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xuICB9XG5cblxuICAvKipcbiAgICpcbiAgICogRW5hYmxlcyB1c2Ugb2YgcmFuZGV4cCB3aXRoIGEgc2hvcnRlciBjYWxsLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd8IHJlZ2V4cH1cbiAgICogQHBhcmFtIHtTdHJpbmd9IG1cbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIHJhbmRleHAocmVnZXhwLCBtKSB7XG4gICAgdmFyIHJhbmRleHA7XG4gICAgaWYodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwLCBtKTtcbiAgICB9XG5cbiAgICBpZiAocmVnZXhwLl9yYW5kZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJhbmRleHAgPSBuZXcgUmFuZEV4cChyZWdleHAsIG0pO1xuICAgICAgcmVnZXhwLl9yYW5kZXhwID0gcmFuZGV4cDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZGV4cCA9IHJlZ2V4cC5fcmFuZGV4cDtcbiAgICAgIHJhbmRleHAuX3NldERlZmF1bHRzKHJlZ2V4cCk7XG4gICAgfVxuICAgIHJldHVybiByYW5kZXhwLmdlbigpO1xuICB9XG5cblxuICAvKipcbiAgICogRW5hYmxlcyBzdWdhcnkgL3JlZ2V4cC8uZ2VuIHN5bnRheC5cbiAgICovXG4gIHN0YXRpYyBzdWdhcigpIHtcbiAgICAvKiBlc2hpbnQgZnJlZXplOmZhbHNlICovXG4gICAgUmVnRXhwLnByb3RvdHlwZS5nZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBSYW5kRXhwLnJhbmRleHAodGhpcyk7XG4gICAgfTtcbiAgfVxufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnV0aWwuaW5oZXJpdHMoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gYXZvaWQgc2NvcGUgY3JlZXAsIHRoZSBrZXlzIGFycmF5IGNhbiB0aGVuIGJlIGNvbGxlY3RlZFxuICB2YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcblxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIG9uZW5kKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcG5hLm5leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgdGhpcy5lbmQoKTtcblxuICBwbmEubmV4dFRpY2soY2IsIGVycik7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgZGVidWcgPSB2b2lkIDA7XG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uICgpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXJMaXN0ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QnKTtcbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGtQcm94eUV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyKGV2ZW50LCBmbik7XG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xufVxuXG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgcmVhZGFibGVId20gPSBvcHRpb25zLnJlYWRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmIChyZWFkYWJsZUh3bSB8fCByZWFkYWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHJlYWRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZFxuICAvLyBpbW1lZGlhdGVseSwgb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZVxuICAvLyBhbnkgYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3QgcmVhZCBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcbiAgdGhpcy5hd2FpdERyYWluID0gMDtcblxuICAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcblxuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5wdXNoKG51bGwpO1xuICBjYihlcnIpO1xufTtcblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cbiAgICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIGVuY29kaW5nLCBmYWxzZSwgc2tpcENodW5rQ2hlY2spO1xufTtcblxuLy8gVW5zaGlmdCBzaG91bGQgKmFsd2F5cyogYmUgc29tZXRoaW5nIGRpcmVjdGx5IG91dCBvZiByZWFkKClcblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuICAgIGlmIChlcikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50JykpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG4vLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKTtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IGVuYztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CXG52YXIgTUFYX0hXTSA9IDB4ODAwMDAwO1xuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47XG4gIC8vIERvbid0IGhhdmUgZW5vdWdoXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzdGF0ZS5sZW5ndGg7XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGEgYnVuY2ggb2YgZGF0YSBpbiB0aGUgYnVmZmVyLCB0aGVuIGp1c3QgdHJpZ2dlclxuICAvLyB0aGUgJ3JlYWRhYmxlJyBldmVudCBhbmQgbW92ZSBvbi5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBkZWJ1ZygncmVhZDogZW1pdFJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7ZWxzZSBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7XG5cbiAgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkge1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIGVuZFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cblxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG4gIHZhciBkb1JlYWQgPSBzdGF0ZS5uZWVkUmVhZGFibGU7XG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKTtcblxuICAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWU7XG4gICAgZGVidWcoJ2xlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrJywgZG9SZWFkKTtcbiAgfVxuXG4gIC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgICAvLyBpZiB0aGUgbGVuZ3RoIGlzIGN1cnJlbnRseSB6ZXJvLCB0aGVuIHdlICpuZWVkKiBhIHJlYWRhYmxlIGV2ZW50LlxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG4gICAgc3RhdGUuc3luYyA9IGZhbHNlO1xuICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cbiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO1xuICB9XG5cbiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTtcblxuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwbmEubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHBuYS5uZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUsIHVucGlwZUluZm8pIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKys7XG4gICAgICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpO1xuICAgIHVucGlwZSgpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgaWYgKEVFbGlzdGVuZXJDb3VudChkZXN0LCAnZXJyb3InKSA9PT0gMCkgZGVzdC5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKTtcbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH1cblxuICAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpO1xuXG4gIC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BpcGUgcmVzdW1lJyk7XG4gICAgc3JjLnJlc3VtZSgpO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5mdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiA9PT0gMCAmJiBFRWxpc3RlbmVyQ291bnQoc3JjLCAnZGF0YScpKSB7XG4gICAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICAgIGZsb3coc3JjKTtcbiAgICB9XG4gIH07XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgdW5waXBlSW5mbyA9IHsgaGFzVW5waXBlZDogZmFsc2UgfTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcbiAgICB9cmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG5cbiAgc3RhdGUucGlwZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3RhdGUucGlwZXNDb3VudCAtPSAxO1xuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTtcblxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldiwgZm4pO1xuXG4gIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgLy8gU3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHRoaXMucmVzdW1lKCk7XG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgX3RoaXMucHVzaChjaHVuayk7XG4gICAgfVxuXG4gICAgX3RoaXMucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH1cblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICB0aGlzLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qIDxyZXBsYWNlbWVudD4gKi9cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcG5hLm5leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBpZiBfZmluYWwgaGFzIGJlZW4gY2FsbGVkXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTtcblxuICAvLyBkcmFpbiBldmVudCBmbGFnLlxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTtcblxuLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgaWYgKHJlYWxIYXNJbnN0YW5jZS5jYWxsKHRoaXMsIG9iamVjdCkpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHRoaXMgIT09IFdyaXRhYmxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHtcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB9XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmluYWwgPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZpbmFsID0gb3B0aW9ucy5maW5hbDtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHBuYS5uZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBjYikge1xuICB2YXIgdmFsaWQgPSB0cnVlO1xuICB2YXIgZXIgPSBmYWxzZTtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcblxuICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcDtcblxuICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKTtcbiAgfVxufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykge1xuICAvLyBub2RlOjpQYXJzZUVuY29kaW5nKCkgcmVxdWlyZXMgbG93ZXIgY2FzZS5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIGVuY29kaW5nID0gZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKSB7XG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICB9XG4gIHJldHVybiBjaHVuaztcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGlmICghaXNCdWYpIHtcbiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcbiAgICBpZiAoY2h1bmsgIT09IG5ld0NodW5rKSB7XG4gICAgICBpc0J1ZiA9IHRydWU7XG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInO1xuICAgICAgY2h1bmsgPSBuZXdDaHVuaztcbiAgICB9XG4gIH1cbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IHtcbiAgICAgIGNodW5rOiBjaHVuayxcbiAgICAgIGVuY29kaW5nOiBlbmNvZGluZyxcbiAgICAgIGlzQnVmOiBpc0J1ZixcbiAgICAgIGNhbGxiYWNrOiBjYixcbiAgICAgIG5leHQ6IG51bGxcbiAgICB9O1xuICAgIGlmIChsYXN0KSB7XG4gICAgICBsYXN0Lm5leHQgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCArPSAxO1xuICB9IGVsc2Uge1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuO1xuICBzdGF0ZS53cml0ZWNiID0gY2I7XG4gIHN0YXRlLndyaXRpbmcgPSB0cnVlO1xuICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpO1xuICBzdGF0ZS5zeW5jID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpIHtcbiAgLS1zdGF0ZS5wZW5kaW5nY2I7XG5cbiAgaWYgKHN5bmMpIHtcbiAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBzeW5jaHJvbm91c2x5XG4gICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2tcbiAgICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbiAgICAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYW5kIGl0IHdpbGwgYWx3YXlzIGhhcHBlblxuICAgIC8vIGFmdGVyIGVycm9yXG4gICAgcG5hLm5leHRUaWNrKGZpbmlzaE1heWJlLCBzdHJlYW0sIHN0YXRlKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gdGhlIGNhbGxlciBleHBlY3QgdGhpcyB0byBoYXBwZW4gYmVmb3JlIGlmXG4gICAgLy8gaXQgaXMgYXN5bmNcbiAgICBjYihlcik7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBidXQgZmluaXNoIG11c3RcbiAgICAvLyBhbHdheXMgZm9sbG93IGVycm9yXG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7XG4gIGlmICghZmluaXNoZWQpIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKTtcbiAgc3RhdGUucGVuZGluZ2NiLS07XG4gIGNiKCk7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG4vLyBNdXN0IGZvcmNlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiBuZXh0VGljaywgc28gdGhhdCB3ZSBkb24ndFxuLy8gZW1pdCAnZHJhaW4nIGJlZm9yZSB0aGUgd3JpdGUoKSBjb25zdW1lciBnZXRzIHRoZSAnZmFsc2UnIHJldHVyblxuLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci5cbmZ1bmN0aW9uIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUubmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2RyYWluJyk7XG4gIH1cbn1cblxuLy8gaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXRcbmZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IHRydWU7XG4gIHZhciBlbnRyeSA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdDtcblxuICBpZiAoc3RyZWFtLl93cml0ZXYgJiYgZW50cnkgJiYgZW50cnkubmV4dCkge1xuICAgIC8vIEZhc3QgY2FzZSwgd3JpdGUgZXZlcnl0aGluZyB1c2luZyBfd3JpdGV2KClcbiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50O1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobCk7XG4gICAgdmFyIGhvbGRlciA9IHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZTtcbiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTtcblxuICAgIHZhciBjb3VudCA9IDA7XG4gICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgYnVmZmVyW2NvdW50XSA9IGVudHJ5O1xuICAgICAgaWYgKCFlbnRyeS5pc0J1ZikgYWxsQnVmZmVycyA9IGZhbHNlO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgYnVmZmVyLmFsbEJ1ZmZlcnMgPSBhbGxCdWZmZXJzO1xuXG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpO1xuXG4gICAgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgICBpZiAoaG9sZGVyLm5leHQpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGhvbGRlci5uZXh0O1xuICAgICAgaG9sZGVyLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBTbG93IGNhc2UsIHdyaXRlIGNodW5rcyBvbmUtYnktb25lXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbnRyeS5jaHVuaztcbiAgICAgIHZhciBlbmNvZGluZyA9IGVudHJ5LmVuY29kaW5nO1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudC0tO1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdfd3JpdGUoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rO1xuICAgIGNodW5rID0gbnVsbDtcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nICYmICFzdGF0ZS5maW5pc2hlZCkgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbn07XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cbmZ1bmN0aW9uIGNhbGxGaW5hbChzdHJlYW0sIHN0YXRlKSB7XG4gIHN0cmVhbS5fZmluYWwoZnVuY3Rpb24gKGVycikge1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgfVxuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlO1xuICAgICAgcG5hLm5leHRUaWNrKGNhbGxGaW5hbCwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuICBpZiAobmVlZCkge1xuICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICBpZiAoc3RhdGUucGVuZGluZ2NiID09PSAwKSB7XG4gICAgICBzdGF0ZS5maW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgnZmluaXNoJyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZWVkO1xufVxuXG5mdW5jdGlvbiBlbmRXcml0YWJsZShzdHJlYW0sIHN0YXRlLCBjYikge1xuICBzdGF0ZS5lbmRpbmcgPSB0cnVlO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwbmEubmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbkNvcmtlZEZpbmlzaChjb3JrUmVxLCBzdGF0ZSwgZXJyKSB7XG4gIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7XG4gIGNvcmtSZXEuZW50cnkgPSBudWxsO1xuICB3aGlsZSAoZW50cnkpIHtcbiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBjYihlcnIpO1xuICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgfVxuICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGNvcmtSZXE7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuV3JpdGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLmVuZCgpO1xuICBjYihlcnIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5mdW5jdGlvbiBjb3B5QnVmZmVyKHNyYywgdGFyZ2V0LCBvZmZzZXQpIHtcbiAgc3JjLmNvcHkodGFyZ2V0LCBvZmZzZXQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnVmZmVyTGlzdCk7XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2godikge1xuICAgIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogbnVsbCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICArK3RoaXMubGVuZ3RoO1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IHRoaXMuaGVhZCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7XG4gICAgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uIHNoaWZ0KCkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAtLXRoaXMubGVuZ3RoO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihzKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHJldCA9ICcnICsgcC5kYXRhO1xuICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICByZXQgKz0gcyArIHAuZGF0YTtcbiAgICB9cmV0dXJuIHJldDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQobikge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAocCkge1xuICAgICAgY29weUJ1ZmZlcihwLmRhdGEsIHJldCwgaSk7XG4gICAgICBpICs9IHAuZGF0YS5sZW5ndGg7XG4gICAgICBwID0gcC5uZXh0O1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpO1xuXG5pZiAodXRpbCAmJiB1dGlsLmluc3BlY3QgJiYgdXRpbC5pbnNwZWN0LmN1c3RvbSkge1xuICBtb2R1bGUuZXhwb3J0cy5wcm90b3R5cGVbdXRpbC5pbnNwZWN0LmN1c3RvbV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IHV0aWwuaW5zcGVjdCh7IGxlbmd0aDogdGhpcy5sZW5ndGggfSk7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArICcgJyArIG9iajtcbiAgfTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8vIHVuZG9jdW1lbnRlZCBjYigpIEFQSSwgbmVlZGVkIGZvciBjb3JlLCBub3QgZm9yIHB1YmxpYyBBUElcbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG5cbiAgaWYgKHJlYWRhYmxlRGVzdHJveWVkIHx8IHdyaXRhYmxlRGVzdHJveWVkKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH0gZWxzZSBpZiAoZXJyICYmICghdGhpcy5fd3JpdGFibGVTdGF0ZSB8fCAhdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQpKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCBfdGhpcywgZXJyKTtcbiAgICAgIGlmIChfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRFcnJvck5UKHNlbGYsIGVycikge1xuICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gIHVuZGVzdHJveTogdW5kZXN0cm95XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbiIsImNvbnN0IHV0aWwgICAgICA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuY29uc3QgdHlwZXMgICAgID0gcmVxdWlyZSgnLi90eXBlcycpO1xuY29uc3Qgc2V0cyAgICAgID0gcmVxdWlyZSgnLi9zZXRzJyk7XG5jb25zdCBwb3NpdGlvbnMgPSByZXF1aXJlKCcuL3Bvc2l0aW9ucycpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gKHJlZ2V4cFN0cikgPT4ge1xuICB2YXIgaSA9IDAsIGwsIGMsXG4gICAgc3RhcnQgPSB7IHR5cGU6IHR5cGVzLlJPT1QsIHN0YWNrOiBbXX0sXG5cbiAgICAvLyBLZWVwIHRyYWNrIG9mIGxhc3QgY2xhdXNlL2dyb3VwIGFuZCBzdGFjay5cbiAgICBsYXN0R3JvdXAgPSBzdGFydCxcbiAgICBsYXN0ID0gc3RhcnQuc3RhY2ssXG4gICAgZ3JvdXBTdGFjayA9IFtdO1xuXG5cbiAgdmFyIHJlcGVhdEVyciA9IChpKSA9PiB7XG4gICAgdXRpbC5lcnJvcihyZWdleHBTdHIsIGBOb3RoaW5nIHRvIHJlcGVhdCBhdCBjb2x1bW4gJHtpIC0gMX1gKTtcbiAgfTtcblxuICAvLyBEZWNvZGUgYSBmZXcgZXNjYXBlZCBjaGFyYWN0ZXJzLlxuICB2YXIgc3RyID0gdXRpbC5zdHJUb0NoYXJzKHJlZ2V4cFN0cik7XG4gIGwgPSBzdHIubGVuZ3RoO1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNoYXJhY3RlciBpbiBzdHJpbmcuXG4gIHdoaWxlIChpIDwgbCkge1xuICAgIGMgPSBzdHJbaSsrXTtcblxuICAgIHN3aXRjaCAoYykge1xuICAgICAgLy8gSGFuZGxlIGVzY2FwZWQgY2hhcmFjdGVycywgaW5jbHVlcyBhIGZldyBzZXRzLlxuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIGMgPSBzdHJbaSsrXTtcblxuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlICdiJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMud29yZEJvdW5kYXJ5KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMubm9uV29yZEJvdW5kYXJ5KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLndvcmRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLm5vdFdvcmRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLmludHMoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMubm90SW50cygpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy53aGl0ZXNwYWNlKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLm5vdFdoaXRlc3BhY2UoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBjIGlzIGludGVnZXIuXG4gICAgICAgICAgICAvLyBJbiB3aGljaCBjYXNlIGl0J3MgYSByZWZlcmVuY2UuXG4gICAgICAgICAgICBpZiAoL1xcZC8udGVzdChjKSkge1xuICAgICAgICAgICAgICBsYXN0LnB1c2goeyB0eXBlOiB0eXBlcy5SRUZFUkVOQ0UsIHZhbHVlOiBwYXJzZUludChjLCAxMCkgfSk7XG5cbiAgICAgICAgICAgIC8vIEVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdC5wdXNoKHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IGMuY2hhckNvZGVBdCgwKSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFBvc2l0aW9uYWxzLlxuICAgICAgY2FzZSAnXic6XG4gICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMuYmVnaW4oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICckJzpcbiAgICAgICAgbGFzdC5wdXNoKHBvc2l0aW9ucy5lbmQoKSk7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIEhhbmRsZSBjdXN0b20gc2V0cy5cbiAgICAgIGNhc2UgJ1snOlxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGNsYXNzIGlzICdhbnRpJyBpLmUuIFteYWJjXS5cbiAgICAgICAgdmFyIG5vdDtcbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ14nKSB7XG4gICAgICAgICAgbm90ID0gdHJ1ZTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm90ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIGNsYXNzLlxuICAgICAgICB2YXIgY2xhc3NUb2tlbnMgPSB1dGlsLnRva2VuaXplQ2xhc3Moc3RyLnNsaWNlKGkpLCByZWdleHBTdHIpO1xuXG4gICAgICAgIC8vIEluY3JlYXNlIGluZGV4IGJ5IGxlbmd0aCBvZiBjbGFzcy5cbiAgICAgICAgaSArPSBjbGFzc1Rva2Vuc1sxXTtcbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5TRVQsXG4gICAgICAgICAgc2V0OiBjbGFzc1Rva2Vuc1swXSxcbiAgICAgICAgICBub3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIENsYXNzIG9mIGFueSBjaGFyYWN0ZXIgZXhjZXB0IFxcbi5cbiAgICAgIGNhc2UgJy4nOlxuICAgICAgICBsYXN0LnB1c2goc2V0cy5hbnlDaGFyKCkpO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBQdXNoIGdyb3VwIG9udG8gc3RhY2suXG4gICAgICBjYXNlICcoJzpcbiAgICAgICAgLy8gQ3JlYXRlIGdyb3VwLlxuICAgICAgICB2YXIgZ3JvdXAgPSB7XG4gICAgICAgICAgdHlwZTogdHlwZXMuR1JPVVAsXG4gICAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgICAgIHJlbWVtYmVyOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGMgPSBzdHJbaV07XG5cbiAgICAgICAgLy8gSWYgaWYgdGhpcyBpcyBhIHNwZWNpYWwga2luZCBvZiBncm91cC5cbiAgICAgICAgaWYgKGMgPT09ICc/Jykge1xuICAgICAgICAgIGMgPSBzdHJbaSArIDFdO1xuICAgICAgICAgIGkgKz0gMjtcblxuICAgICAgICAgIC8vIE1hdGNoIGlmIGZvbGxvd2VkIGJ5LlxuICAgICAgICAgIGlmIChjID09PSAnPScpIHtcbiAgICAgICAgICAgIGdyb3VwLmZvbGxvd2VkQnkgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gTWF0Y2ggaWYgbm90IGZvbGxvd2VkIGJ5LlxuICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyEnKSB7XG4gICAgICAgICAgICBncm91cC5ub3RGb2xsb3dlZEJ5ID0gdHJ1ZTtcblxuICAgICAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJzonKSB7XG4gICAgICAgICAgICB1dGlsLmVycm9yKHJlZ2V4cFN0cixcbiAgICAgICAgICAgICAgYEludmFsaWQgZ3JvdXAsIGNoYXJhY3RlciAnJHtjfSdgICtcbiAgICAgICAgICAgICAgYCBhZnRlciAnPycgYXQgY29sdW1uICR7aSAtIDF9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JvdXAucmVtZW1iZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluc2VydCBzdWJncm91cCBpbnRvIGN1cnJlbnQgZ3JvdXAgc3RhY2suXG4gICAgICAgIGxhc3QucHVzaChncm91cCk7XG5cbiAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGN1cnJlbnQgZ3JvdXAgZm9yIHdoZW4gdGhlIGdyb3VwIGNsb3Nlcy5cbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKGxhc3RHcm91cCk7XG5cbiAgICAgICAgLy8gTWFrZSB0aGlzIG5ldyBncm91cCB0aGUgY3VycmVudCBncm91cC5cbiAgICAgICAgbGFzdEdyb3VwID0gZ3JvdXA7XG4gICAgICAgIGxhc3QgPSBncm91cC5zdGFjaztcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gUG9wIGdyb3VwIG91dCBvZiBzdGFjay5cbiAgICAgIGNhc2UgJyknOlxuICAgICAgICBpZiAoZ3JvdXBTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB1dGlsLmVycm9yKHJlZ2V4cFN0ciwgYFVubWF0Y2hlZCApIGF0IGNvbHVtbiAke2kgLSAxfWApO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RHcm91cCA9IGdyb3VwU3RhY2sucG9wKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBncm91cCBoYXMgYSBQSVBFLlxuICAgICAgICAvLyBUbyBnZXQgYmFjayB0aGUgY29ycmVjdCBsYXN0IHN0YWNrLlxuICAgICAgICBsYXN0ID0gbGFzdEdyb3VwLm9wdGlvbnMgP1xuICAgICAgICAgIGxhc3RHcm91cC5vcHRpb25zW2xhc3RHcm91cC5vcHRpb25zLmxlbmd0aCAtIDFdIDogbGFzdEdyb3VwLnN0YWNrO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBVc2UgcGlwZSBjaGFyYWN0ZXIgdG8gZ2l2ZSBtb3JlIGNob2ljZXMuXG4gICAgICBjYXNlICd8JzpcbiAgICAgICAgLy8gQ3JlYXRlIGFycmF5IHdoZXJlIG9wdGlvbnMgYXJlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IFBJUEVcbiAgICAgICAgLy8gaW4gdGhpcyBjbGF1c2UuXG4gICAgICAgIGlmICghbGFzdEdyb3VwLm9wdGlvbnMpIHtcbiAgICAgICAgICBsYXN0R3JvdXAub3B0aW9ucyA9IFtsYXN0R3JvdXAuc3RhY2tdO1xuICAgICAgICAgIGRlbGV0ZSBsYXN0R3JvdXAuc3RhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc3RhY2sgYW5kIGFkZCB0byBvcHRpb25zIGZvciByZXN0IG9mIGNsYXVzZS5cbiAgICAgICAgdmFyIHN0YWNrID0gW107XG4gICAgICAgIGxhc3RHcm91cC5vcHRpb25zLnB1c2goc3RhY2spO1xuICAgICAgICBsYXN0ID0gc3RhY2s7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFJlcGV0aXRpb24uXG4gICAgICAvLyBGb3IgZXZlcnkgcmVwZXRpdGlvbiwgcmVtb3ZlIGxhc3QgZWxlbWVudCBmcm9tIGxhc3Qgc3RhY2tcbiAgICAgIC8vIHRoZW4gaW5zZXJ0IGJhY2sgYSBSQU5HRSBvYmplY3QuXG4gICAgICAvLyBUaGlzIGRlc2lnbiBpcyBjaG9zZW4gYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtb3JlIHRoYW5cbiAgICAgIC8vIG9uZSByZXBldGl0aW9uIHN5bWJvbHMgaW4gYSByZWdleCBpLmUuIGBhPyt7MiwzfWAuXG4gICAgICBjYXNlICd7JzpcbiAgICAgICAgdmFyIHJzID0gL14oXFxkKykoLChcXGQrKT8pP1xcfS8uZXhlYyhzdHIuc2xpY2UoaSkpLCBtaW4sIG1heDtcbiAgICAgICAgaWYgKHJzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pbiA9IHBhcnNlSW50KHJzWzFdLCAxMCk7XG4gICAgICAgICAgbWF4ID0gcnNbMl0gPyByc1szXSA/IHBhcnNlSW50KHJzWzNdLCAxMCkgOiBJbmZpbml0eSA6IG1pbjtcbiAgICAgICAgICBpICs9IHJzWzBdLmxlbmd0aDtcblxuICAgICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgdmFsdWU6IGxhc3QucG9wKCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVzLkNIQVIsXG4gICAgICAgICAgICB2YWx1ZTogMTIzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICc/JzpcbiAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVwZWF0RXJyKGkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuUkVQRVRJVElPTixcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJysnOlxuICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICBtYXg6IEluZmluaXR5LFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJyonOlxuICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IEluZmluaXR5LFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gRGVmYXVsdCBpcyBhIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBgXFxbXSgpe30/KypeJGAuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLkNIQVIsXG4gICAgICAgICAgdmFsdWU6IGMuY2hhckNvZGVBdCgwKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbnkgZ3JvdXBzIGhhdmUgbm90IGJlZW4gY2xvc2VkLlxuICBpZiAoZ3JvdXBTdGFjay5sZW5ndGggIT09IDApIHtcbiAgICB1dGlsLmVycm9yKHJlZ2V4cFN0ciwgJ1VudGVybWluYXRlZCBncm91cCcpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXJ0O1xufTtcblxubW9kdWxlLmV4cG9ydHMudHlwZXMgPSB0eXBlcztcbiIsImNvbnN0IHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xuZXhwb3J0cy53b3JkQm91bmRhcnkgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5QT1NJVElPTiwgdmFsdWU6ICdiJyB9KTtcbmV4cG9ydHMubm9uV29yZEJvdW5kYXJ5ID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnQicgfSk7XG5leHBvcnRzLmJlZ2luID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnXicgfSk7XG5leHBvcnRzLmVuZCA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlBPU0lUSU9OLCB2YWx1ZTogJyQnIH0pO1xuIiwiY29uc3QgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5cbmNvbnN0IElOVFMgPSAoKSA9PiBbeyB0eXBlOiB0eXBlcy5SQU5HRSAsIGZyb206IDQ4LCB0bzogNTcgfV07XG5cbmNvbnN0IFdPUkRTID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDk1IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5SQU5HRSwgZnJvbTogOTcsIHRvOiAxMjIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLlJBTkdFLCBmcm9tOiA2NSwgdG86IDkwIH1cbiAgXS5jb25jYXQoSU5UUygpKTtcbn07XG5cbmNvbnN0IFdISVRFU1BBQ0UgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogOSB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTEgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEzIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMzIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxNjAgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA1NzYwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5SQU5HRSwgZnJvbTogODE5MiwgdG86IDgyMDIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMyB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzkgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4Mjg3IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTIyODggfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA2NTI3OSB9XG4gIF07XG59O1xuXG5jb25zdCBOT1RBTllDSEFSID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTMgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMyB9LFxuICBdO1xufTtcblxuLy8gUHJlZGVmaW5lZCBjbGFzcyBvYmplY3RzLlxuZXhwb3J0cy53b3JkcyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXT1JEUygpLCBub3Q6IGZhbHNlIH0pO1xuZXhwb3J0cy5ub3RXb3JkcyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXT1JEUygpLCBub3Q6IHRydWUgfSk7XG5leHBvcnRzLmludHMgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogSU5UUygpLCBub3Q6IGZhbHNlIH0pO1xuZXhwb3J0cy5ub3RJbnRzID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IElOVFMoKSwgbm90OiB0cnVlIH0pO1xuZXhwb3J0cy53aGl0ZXNwYWNlID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IFdISVRFU1BBQ0UoKSwgbm90OiBmYWxzZSB9KTtcbmV4cG9ydHMubm90V2hpdGVzcGFjZSA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXSElURVNQQUNFKCksIG5vdDogdHJ1ZSB9KTtcbmV4cG9ydHMuYW55Q2hhciA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBOT1RBTllDSEFSKCksIG5vdDogdHJ1ZSB9KTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBST09UICAgICAgIDogMCxcbiAgR1JPVVAgICAgICA6IDEsXG4gIFBPU0lUSU9OICAgOiAyLFxuICBTRVQgICAgICAgIDogMyxcbiAgUkFOR0UgICAgICA6IDQsXG4gIFJFUEVUSVRJT04gOiA1LFxuICBSRUZFUkVOQ0UgIDogNixcbiAgQ0hBUiAgICAgICA6IDcsXG59O1xuIiwiY29uc3QgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5jb25zdCBzZXRzICA9IHJlcXVpcmUoJy4vc2V0cycpO1xuXG5cbmNvbnN0IENUUkwgPSAnQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXiA/JztcbmNvbnN0IFNMU0ggPSB7ICcwJzogMCwgJ3QnOiA5LCAnbic6IDEwLCAndic6IDExLCAnZic6IDEyLCAncic6IDEzIH07XG5cbi8qKlxuICogRmluZHMgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9ucyBpbiBzdHIgYW5kIGNvbnZlcnQgYWxsIHRvXG4gKiB0aGVpciByZXNwZWN0aXZlIGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydHMuc3RyVG9DaGFycyA9IGZ1bmN0aW9uKHN0cikge1xuICAvKiBqc2hpbnQgbWF4bGVuOiBmYWxzZSAqL1xuICB2YXIgY2hhcnNfcmVnZXggPSAvKFxcW1xcXFxiXFxdKXwoXFxcXCk/XFxcXCg/OnUoW0EtRjAtOV17NH0pfHgoW0EtRjAtOV17Mn0pfCgwP1swLTddezJ9KXxjKFtAQS1aW1xcXFxcXF1eP10pfChbMHRudmZyXSkpL2c7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKGNoYXJzX3JlZ2V4LCBmdW5jdGlvbihzLCBiLCBsYnMsIGExNiwgYjE2LCBjOCwgZGN0cmwsIGVzbHNoKSB7XG4gICAgaWYgKGxicykge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgdmFyIGNvZGUgPSBiID8gOCA6XG4gICAgICBhMTYgICA/IHBhcnNlSW50KGExNiwgMTYpIDpcbiAgICAgIGIxNiAgID8gcGFyc2VJbnQoYjE2LCAxNikgOlxuICAgICAgYzggICAgPyBwYXJzZUludChjOCwgICA4KSA6XG4gICAgICBkY3RybCA/IENUUkwuaW5kZXhPZihkY3RybCkgOlxuICAgICAgU0xTSFtlc2xzaF07XG5cbiAgICB2YXIgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG5cbiAgICAvLyBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzLlxuICAgIGlmICgvW1tcXF17fV4kLnw/KisoKV0vLnRlc3QoYykpIHtcbiAgICAgIGMgPSAnXFxcXCcgKyBjO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9KTtcblxuICByZXR1cm4gc3RyO1xufTtcblxuXG4vKipcbiAqIHR1cm5zIGNsYXNzIGludG8gdG9rZW5zXG4gKiByZWFkcyBzdHIgdW50aWwgaXQgZW5jb3VudGVycyBhIF0gbm90IHByZWNlZWRlZCBieSBhIFxcXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtTdHJpbmd9IHJlZ2V4cFN0clxuICogQHJldHVybiB7QXJyYXkuPEFycmF5LjxPYmplY3Q+LCBOdW1iZXI+fVxuICovXG5leHBvcnRzLnRva2VuaXplQ2xhc3MgPSAoc3RyLCByZWdleHBTdHIpID0+IHtcbiAgLyoganNoaW50IG1heGxlbjogZmFsc2UgKi9cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcmVnZXhwID0gL1xcXFwoPzoodyl8KGQpfChzKXwoVyl8KEQpfChTKSl8KCg/Oig/OlxcXFwpKC4pfChbXlxcXVxcXFxdKSktKD86XFxcXCk/KFteXFxdXSkpfChcXF0pfCg/OlxcXFwpPyhbXl0pL2c7XG4gIHZhciBycywgYztcblxuXG4gIHdoaWxlICgocnMgPSByZWdleHAuZXhlYyhzdHIpKSAhPSBudWxsKSB7XG4gICAgaWYgKHJzWzFdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLndvcmRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1syXSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5pbnRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1szXSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy53aGl0ZXNwYWNlKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1s0XSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5ub3RXb3JkcygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbNV0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMubm90SW50cygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbNl0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMubm90V2hpdGVzcGFjZSgpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbN10pIHtcbiAgICAgIHRva2Vucy5wdXNoKHtcbiAgICAgICAgdHlwZTogdHlwZXMuUkFOR0UsXG4gICAgICAgIGZyb206IChyc1s4XSB8fCByc1s5XSkuY2hhckNvZGVBdCgwKSxcbiAgICAgICAgdG86IHJzWzEwXS5jaGFyQ29kZUF0KDApLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2UgaWYgKChjID0gcnNbMTJdKSkge1xuICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICB0eXBlOiB0eXBlcy5DSEFSLFxuICAgICAgICB2YWx1ZTogYy5jaGFyQ29kZUF0KDApLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFt0b2tlbnMsIHJlZ2V4cC5sYXN0SW5kZXhdO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydHMuZXJyb3IocmVnZXhwU3RyLCAnVW50ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcycpO1xufTtcblxuXG4vKipcbiAqIFNob3J0Y3V0IHRvIHRocm93IGVycm9ycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcmVnZXhwXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnXG4gKi9cbmV4cG9ydHMuZXJyb3IgPSAocmVnZXhwLCBtc2cpID0+IHtcbiAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogLycgKyByZWdleHAgKyAnLzogJyArIG1zZyk7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBDb3B5IHN0YXRpYyBtZXRob2RzIGZyb20gQnVmZmVyXG5jb3B5UHJvcHMoQnVmZmVyLCBTYWZlQnVmZmVyKVxuXG5TYWZlQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHZhciBidWYgPSBCdWZmZXIoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmZpbGwoZmlsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoMClcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihzaXplKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSlcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0cikge1xuXHR2YXIgaXNFeHRlbmRlZExlbmd0aFBhdGggPSAvXlxcXFxcXFxcXFw/XFxcXC8udGVzdChzdHIpO1xuXHR2YXIgaGFzTm9uQXNjaWkgPSAvW15cXHgwMC1cXHg4MF0rLy50ZXN0KHN0cik7XG5cblx0aWYgKGlzRXh0ZW5kZWRMZW5ndGhQYXRoIHx8IGhhc05vbkFzY2lpKSB7XG5cdFx0cmV0dXJuIHN0cjtcblx0fVxuXG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufTtcbiIsInZhciB1bnBhcnNlID0gcmVxdWlyZSgnZXNjb2RlZ2VuJykuZ2VuZXJhdGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFzdCwgdmFycykge1xuICAgIGlmICghdmFycykgdmFycyA9IHt9O1xuICAgIHZhciBGQUlMID0ge307XG4gICAgXG4gICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbiB3YWxrIChub2RlLCBzY29wZVZhcnMpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdVbmFyeUV4cHJlc3Npb24nKXtcbiAgICAgICAgICAgIHZhciB2YWwgPSB3YWxrKG5vZGUuYXJndW1lbnQpXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJysnKSByZXR1cm4gK3ZhbFxuICAgICAgICAgICAgaWYgKG5vZGUub3BlcmF0b3IgPT09ICctJykgcmV0dXJuIC12YWxcbiAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdG9yID09PSAnficpIHJldHVybiB+dmFsXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJyEnKSByZXR1cm4gIXZhbFxuICAgICAgICAgICAgcmV0dXJuIEZBSUxcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdBcnJheUV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgeHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5lbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IHdhbGsobm9kZS5lbGVtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKHggPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIHhzLnB1c2goeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3AgPSBub2RlLnByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IHByb3AudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB3YWxrKHByb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICAgICAgb2JqW3Byb3Aua2V5LnZhbHVlIHx8IHByb3Aua2V5Lm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0JpbmFyeUV4cHJlc3Npb24nIHx8XG4gICAgICAgICAgICAgICAgIG5vZGUudHlwZSA9PT0gJ0xvZ2ljYWxFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIGwgPSB3YWxrKG5vZGUubGVmdCk7XG4gICAgICAgICAgICBpZiAobCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICB2YXIgciA9IHdhbGsobm9kZS5yaWdodCk7XG4gICAgICAgICAgICBpZiAociA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBvcCA9IG5vZGUub3BlcmF0b3I7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc9PScpIHJldHVybiBsID09IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc9PT0nKSByZXR1cm4gbCA9PT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyE9JykgcmV0dXJuIGwgIT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyE9PScpIHJldHVybiBsICE9PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnKycpIHJldHVybiBsICsgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJy0nKSByZXR1cm4gbCAtIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcqJykgcmV0dXJuIGwgKiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnLycpIHJldHVybiBsIC8gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyUnKSByZXR1cm4gbCAlIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc8JykgcmV0dXJuIGwgPCByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPD0nKSByZXR1cm4gbCA8PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPicpIHJldHVybiBsID4gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJz49JykgcmV0dXJuIGwgPj0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJ3wnKSByZXR1cm4gbCB8IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcmJykgcmV0dXJuIGwgJiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnXicpIHJldHVybiBsIF4gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyYmJykgcmV0dXJuIGwgJiYgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJ3x8JykgcmV0dXJuIGwgfHwgcjtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIEZBSUw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsIG5vZGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1tub2RlLm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSByZXR1cm4gRkFJTDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUaGlzRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsICd0aGlzJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1sndGhpcyddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSByZXR1cm4gRkFJTDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdDYWxsRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBjYWxsZWUgPSB3YWxrKG5vZGUuY2FsbGVlKTtcbiAgICAgICAgICAgIGlmIChjYWxsZWUgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsZWUgIT09ICdmdW5jdGlvbicpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIgY3R4ID0gbm9kZS5jYWxsZWUub2JqZWN0ID8gd2Fsayhub2RlLmNhbGxlZS5vYmplY3QpIDogRkFJTDtcbiAgICAgICAgICAgIGlmIChjdHggPT09IEZBSUwpIGN0eCA9IG51bGw7XG5cbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gd2Fsayhub2RlLmFyZ3VtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKHggPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjYWxsZWUuYXBwbHkoY3R4LCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIG9iaiA9IHdhbGsobm9kZS5vYmplY3QpO1xuICAgICAgICAgICAgLy8gZG8gbm90IGFsbG93IGFjY2VzcyB0byBtZXRob2RzIG9uIEZ1bmN0aW9uIFxuICAgICAgICAgICAgaWYoKG9iaiA9PT0gRkFJTCkgfHwgKHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialtub2RlLnByb3BlcnR5Lm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHByb3AgPSB3YWxrKG5vZGUucHJvcGVydHkpO1xuICAgICAgICAgICAgaWYgKHByb3AgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdDb25kaXRpb25hbEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gd2Fsayhub2RlLnRlc3QpXG4gICAgICAgICAgICBpZiAodmFsID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHJldHVybiB2YWwgPyB3YWxrKG5vZGUuY29uc2VxdWVudCkgOiB3YWxrKG5vZGUuYWx0ZXJuYXRlKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gd2Fsayhub2RlLmV4cHJlc3Npb24pXG4gICAgICAgICAgICBpZiAodmFsID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnUmV0dXJuU3RhdGVtZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIHdhbGsobm9kZS5hcmd1bWVudClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBib2RpZXMgPSBub2RlLmJvZHkuYm9keTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgXCJzY29wZVwiIGZvciBvdXIgYXJndW1lbnRzXG4gICAgICAgICAgICB2YXIgb2xkVmFycyA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXModmFycykuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KXtcbiAgICAgICAgICAgICAgICBvbGRWYXJzW2VsZW1lbnRdID0gdmFyc1tlbGVtZW50XTtcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG5vZGUucGFyYW1zLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICAgICAgaWYoa2V5LnR5cGUgPT0gJ0lkZW50aWZpZXInKXtcbiAgICAgICAgICAgICAgICAgIHZhcnNba2V5Lm5hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcih2YXIgaSBpbiBib2RpZXMpe1xuICAgICAgICAgICAgICAgIGlmKHdhbGsoYm9kaWVzW2ldKSA9PT0gRkFJTCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhlIHZhcnMgYW5kIHNjb3BlIGFmdGVyIHdlIHdhbGtcbiAgICAgICAgICAgIHZhcnMgPSBvbGRWYXJzO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhcnMpO1xuICAgICAgICAgICAgdmFyIHZhbHMgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1trZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24oa2V5cy5qb2luKCcsICcpLCAncmV0dXJuICcgKyB1bnBhcnNlKG5vZGUpKS5hcHBseShudWxsLCB2YWxzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUZW1wbGF0ZUxpdGVyYWwnKSB7XG4gICAgICAgICAgICB2YXIgc3RyID0gJyc7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gd2Fsayhub2RlLnF1YXNpc1tpXSk7XG4gICAgICAgICAgICAgICAgc3RyICs9IHdhbGsobm9kZS5leHByZXNzaW9uc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHIgKz0gd2Fsayhub2RlLnF1YXNpc1tpXSk7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciB0YWcgPSB3YWxrKG5vZGUudGFnKTtcbiAgICAgICAgICAgIHZhciBxdWFzaSA9IG5vZGUucXVhc2k7XG4gICAgICAgICAgICB2YXIgc3RyaW5ncyA9IHF1YXNpLnF1YXNpcy5tYXAod2Fsayk7XG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gcXVhc2kuZXhwcmVzc2lvbnMubWFwKHdhbGspO1xuICAgICAgICAgICAgcmV0dXJuIHRhZy5hcHBseShudWxsLCBbc3RyaW5nc10uY29uY2F0KHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RlbXBsYXRlRWxlbWVudCcpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlLmNvb2tlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHJldHVybiBGQUlMO1xuICAgIH0pKGFzdCk7XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gRkFJTCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbn07XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxNSBJbmd2YXIgU3RlcGFueWFuIDxtZUBycmV2ZXJzZXIuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTQgSXZhbiBOaWt1bGluIDxpZmFhYW5AZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNoYWVsIEZpY2FycmEgPGVzY29kZWdlbi5jb3B5cmlnaHRAbWljaGFlbC5maWNhcnJhLm1lPlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgSXJha2xpIEdvemFsaXNodmlsaSA8cmZvYmljQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIFJvYmVydCBHdXN0LUJhcmRvbiA8ZG9uYXRlQHJvYmVydC5ndXN0LWJhcmRvbi5vcmc+XG4gIENvcHlyaWdodCAoQykgMjAxMiBKb2huIEZyZWVtYW4gPGpmcmVlbWFuMDhAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEpvb3N0LVdpbSBCb2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgS3JpcyBLb3dhbCA8a3Jpcy5rb3dhbEBjaXhhci5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4vKmdsb2JhbCBleHBvcnRzOnRydWUsIHJlcXVpcmU6dHJ1ZSwgZ2xvYmFsOnRydWUqL1xuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgU3ludGF4LFxuICAgICAgICBQcmVjZWRlbmNlLFxuICAgICAgICBCaW5hcnlQcmVjZWRlbmNlLFxuICAgICAgICBTb3VyY2VOb2RlLFxuICAgICAgICBlc3RyYXZlcnNlLFxuICAgICAgICBlc3V0aWxzLFxuICAgICAgICBiYXNlLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGpzb24sXG4gICAgICAgIHJlbnVtYmVyLFxuICAgICAgICBoZXhhZGVjaW1hbCxcbiAgICAgICAgcXVvdGVzLFxuICAgICAgICBlc2NhcGVsZXNzLFxuICAgICAgICBuZXdsaW5lLFxuICAgICAgICBzcGFjZSxcbiAgICAgICAgcGFyZW50aGVzZXMsXG4gICAgICAgIHNlbWljb2xvbnMsXG4gICAgICAgIHNhZmVDb25jYXRlbmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmUsXG4gICAgICAgIGV4dHJhLFxuICAgICAgICBwYXJzZSxcbiAgICAgICAgc291cmNlTWFwLFxuICAgICAgICBzb3VyY2VDb2RlLFxuICAgICAgICBwcmVzZXJ2ZUJsYW5rTGluZXMsXG4gICAgICAgIEZPUk1BVF9NSU5JRlksXG4gICAgICAgIEZPUk1BVF9ERUZBVUxUUztcblxuICAgIGVzdHJhdmVyc2UgPSByZXF1aXJlKCdlc3RyYXZlcnNlJyk7XG4gICAgZXN1dGlscyA9IHJlcXVpcmUoJ2VzdXRpbHMnKTtcblxuICAgIFN5bnRheCA9IGVzdHJhdmVyc2UuU3ludGF4O1xuXG4gICAgLy8gR2VuZXJhdGlvbiBpcyBkb25lIGJ5IGdlbmVyYXRlRXhwcmVzc2lvbi5cbiAgICBmdW5jdGlvbiBpc0V4cHJlc3Npb24obm9kZSkge1xuICAgICAgICByZXR1cm4gQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uLmhhc093blByb3BlcnR5KG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGlvbiBpcyBkb25lIGJ5IGdlbmVyYXRlU3RhdGVtZW50LlxuICAgIGZ1bmN0aW9uIGlzU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIENvZGVHZW5lcmF0b3IuU3RhdGVtZW50Lmhhc093blByb3BlcnR5KG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgUHJlY2VkZW5jZSA9IHtcbiAgICAgICAgU2VxdWVuY2U6IDAsXG4gICAgICAgIFlpZWxkOiAxLFxuICAgICAgICBBd2FpdDogMSxcbiAgICAgICAgQXNzaWdubWVudDogMSxcbiAgICAgICAgQ29uZGl0aW9uYWw6IDIsXG4gICAgICAgIEFycm93RnVuY3Rpb246IDIsXG4gICAgICAgIExvZ2ljYWxPUjogMyxcbiAgICAgICAgTG9naWNhbEFORDogNCxcbiAgICAgICAgQml0d2lzZU9SOiA1LFxuICAgICAgICBCaXR3aXNlWE9SOiA2LFxuICAgICAgICBCaXR3aXNlQU5EOiA3LFxuICAgICAgICBFcXVhbGl0eTogOCxcbiAgICAgICAgUmVsYXRpb25hbDogOSxcbiAgICAgICAgQml0d2lzZVNISUZUOiAxMCxcbiAgICAgICAgQWRkaXRpdmU6IDExLFxuICAgICAgICBNdWx0aXBsaWNhdGl2ZTogMTIsXG4gICAgICAgIFVuYXJ5OiAxMyxcbiAgICAgICAgUG9zdGZpeDogMTQsXG4gICAgICAgIENhbGw6IDE1LFxuICAgICAgICBOZXc6IDE2LFxuICAgICAgICBUYWdnZWRUZW1wbGF0ZTogMTcsXG4gICAgICAgIE1lbWJlcjogMTgsXG4gICAgICAgIFByaW1hcnk6IDE5XG4gICAgfTtcblxuICAgIEJpbmFyeVByZWNlZGVuY2UgPSB7XG4gICAgICAgICd8fCc6IFByZWNlZGVuY2UuTG9naWNhbE9SLFxuICAgICAgICAnJiYnOiBQcmVjZWRlbmNlLkxvZ2ljYWxBTkQsXG4gICAgICAgICd8JzogUHJlY2VkZW5jZS5CaXR3aXNlT1IsXG4gICAgICAgICdeJzogUHJlY2VkZW5jZS5CaXR3aXNlWE9SLFxuICAgICAgICAnJic6IFByZWNlZGVuY2UuQml0d2lzZUFORCxcbiAgICAgICAgJz09JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJyE9JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJz09PSc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICchPT0nOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnaXMnOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnaXNudCc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICc8JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPic6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJzw9JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPj0nOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICdpbic6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJ2luc3RhbmNlb2YnOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICc8PCc6IFByZWNlZGVuY2UuQml0d2lzZVNISUZULFxuICAgICAgICAnPj4nOiBQcmVjZWRlbmNlLkJpdHdpc2VTSElGVCxcbiAgICAgICAgJz4+Pic6IFByZWNlZGVuY2UuQml0d2lzZVNISUZULFxuICAgICAgICAnKyc6IFByZWNlZGVuY2UuQWRkaXRpdmUsXG4gICAgICAgICctJzogUHJlY2VkZW5jZS5BZGRpdGl2ZSxcbiAgICAgICAgJyonOiBQcmVjZWRlbmNlLk11bHRpcGxpY2F0aXZlLFxuICAgICAgICAnJSc6IFByZWNlZGVuY2UuTXVsdGlwbGljYXRpdmUsXG4gICAgICAgICcvJzogUHJlY2VkZW5jZS5NdWx0aXBsaWNhdGl2ZVxuICAgIH07XG5cbiAgICAvL0ZsYWdzXG4gICAgdmFyIEZfQUxMT1dfSU4gPSAxLFxuICAgICAgICBGX0FMTE9XX0NBTEwgPSAxIDw8IDEsXG4gICAgICAgIEZfQUxMT1dfVU5QQVJBVEhfTkVXID0gMSA8PCAyLFxuICAgICAgICBGX0ZVTkNfQk9EWSA9IDEgPDwgMyxcbiAgICAgICAgRl9ESVJFQ1RJVkVfQ1RYID0gMSA8PCA0LFxuICAgICAgICBGX1NFTUlDT0xPTl9PUFQgPSAxIDw8IDU7XG5cbiAgICAvL0V4cHJlc3Npb24gZmxhZyBzZXRzXG4gICAgLy9OT1RFOiBGbGFnIG9yZGVyOlxuICAgIC8vIEZfQUxMT1dfSU5cbiAgICAvLyBGX0FMTE9XX0NBTExcbiAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FV1xuICAgIHZhciBFX0ZUVCA9IEZfQUxMT1dfQ0FMTCB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXLFxuICAgICAgICBFX1RURiA9IEZfQUxMT1dfSU4gfCBGX0FMTE9XX0NBTEwsXG4gICAgICAgIEVfVFRUID0gRl9BTExPV19JTiB8IEZfQUxMT1dfQ0FMTCB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXLFxuICAgICAgICBFX1RGRiA9IEZfQUxMT1dfSU4sXG4gICAgICAgIEVfRkZUID0gRl9BTExPV19VTlBBUkFUSF9ORVcsXG4gICAgICAgIEVfVEZUID0gRl9BTExPV19JTiB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXO1xuXG4gICAgLy9TdGF0ZW1lbnQgZmxhZyBzZXRzXG4gICAgLy9OT1RFOiBGbGFnIG9yZGVyOlxuICAgIC8vIEZfQUxMT1dfSU5cbiAgICAvLyBGX0ZVTkNfQk9EWVxuICAgIC8vIEZfRElSRUNUSVZFX0NUWFxuICAgIC8vIEZfU0VNSUNPTE9OX09QVFxuICAgIHZhciBTX1RGRkYgPSBGX0FMTE9XX0lOLFxuICAgICAgICBTX1RGRlQgPSBGX0FMTE9XX0lOIHwgRl9TRU1JQ09MT05fT1BULFxuICAgICAgICBTX0ZGRkYgPSAweDAwLFxuICAgICAgICBTX1RGVEYgPSBGX0FMTE9XX0lOIHwgRl9ESVJFQ1RJVkVfQ1RYLFxuICAgICAgICBTX1RURkYgPSBGX0FMTE9XX0lOIHwgRl9GVU5DX0JPRFk7XG5cbiAgICBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgICAgICAgLy8gZGVmYXVsdCBvcHRpb25zXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRlbnQ6IG51bGwsXG4gICAgICAgICAgICBiYXNlOiBudWxsLFxuICAgICAgICAgICAgcGFyc2U6IG51bGwsXG4gICAgICAgICAgICBjb21tZW50OiBmYWxzZSxcbiAgICAgICAgICAgIGZvcm1hdDoge1xuICAgICAgICAgICAgICAgIGluZGVudDoge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJyAgICAnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlOiAwLFxuICAgICAgICAgICAgICAgICAgICBhZGp1c3RNdWx0aWxpbmVDb21tZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3bGluZTogJ1xcbicsXG4gICAgICAgICAgICAgICAgc3BhY2U6ICcgJyxcbiAgICAgICAgICAgICAgICBqc29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZW51bWJlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGV4YWRlY2ltYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHF1b3RlczogJ3NpbmdsZScsXG4gICAgICAgICAgICAgICAgZXNjYXBlbGVzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29tcGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGFyZW50aGVzZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgc2VtaWNvbG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzYWZlQ29uY2F0ZW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcHJlc2VydmVCbGFua0xpbmVzOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vejoge1xuICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25FeHByZXNzaW9uU3RhcnRzV2l0aEFzc2lnbm1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHN0YXJsZXNzR2VuZXJhdG9yOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvdXJjZU1hcDogbnVsbCxcbiAgICAgICAgICAgIHNvdXJjZU1hcFJvb3Q6IG51bGwsXG4gICAgICAgICAgICBzb3VyY2VNYXBXaXRoQ29kZTogZmFsc2UsXG4gICAgICAgICAgICBkaXJlY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmF3OiB0cnVlLFxuICAgICAgICAgICAgdmVyYmF0aW06IG51bGwsXG4gICAgICAgICAgICBzb3VyY2VDb2RlOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5nUmVwZWF0KHN0ciwgbnVtKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJztcblxuICAgICAgICBmb3IgKG51bSB8PSAwOyBudW0gPiAwOyBudW0gPj4+PSAxLCBzdHIgKz0gc3RyKSB7XG4gICAgICAgICAgICBpZiAobnVtICYgMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdHI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0xpbmVUZXJtaW5hdG9yKHN0cikge1xuICAgICAgICByZXR1cm4gKC9bXFxyXFxuXS9nKS50ZXN0KHN0cik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kc1dpdGhMaW5lVGVybWluYXRvcihzdHIpIHtcbiAgICAgICAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7XG4gICAgICAgIHJldHVybiBsZW4gJiYgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3Ioc3RyLmNoYXJDb2RlQXQobGVuIC0gMSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgb3ZlcnJpZGUpIHtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChrZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGlmIChvdmVycmlkZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBvdmVycmlkZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlRGVlcGx5KHRhcmdldCwgb3ZlcnJpZGUpIHtcbiAgICAgICAgdmFyIGtleSwgdmFsO1xuXG4gICAgICAgIGZ1bmN0aW9uIGlzSGFzaE9iamVjdCh0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiB0YXJnZXQgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh0YXJnZXQgaW5zdGFuY2VvZiBSZWdFeHApO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChrZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGlmIChvdmVycmlkZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gb3ZlcnJpZGVba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIYXNoT2JqZWN0KHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGFzaE9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURlZXBseSh0YXJnZXRba2V5XSwgdmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gdXBkYXRlRGVlcGx5KHt9LCB2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVOdW1iZXIodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgcG9pbnQsIHRlbXAsIGV4cG9uZW50LCBwb3M7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOdW1lcmljIGxpdGVyYWwgd2hvc2UgdmFsdWUgaXMgTmFOJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTnVtZXJpYyBsaXRlcmFsIHdob3NlIHZhbHVlIGlzIG5lZ2F0aXZlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgPT09IDEgLyAwKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbiA/ICdudWxsJyA6IHJlbnVtYmVyID8gJzFlNDAwJyA6ICcxZSs0MDAnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gJycgKyB2YWx1ZTtcbiAgICAgICAgaWYgKCFyZW51bWJlciB8fCByZXN1bHQubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvaW50ID0gcmVzdWx0LmluZGV4T2YoJy4nKTtcbiAgICAgICAgaWYgKCFqc29uICYmIHJlc3VsdC5jaGFyQ29kZUF0KDApID09PSAweDMwICAvKiAwICovICYmIHBvaW50ID09PSAxKSB7XG4gICAgICAgICAgICBwb2ludCA9IDA7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGVtcCA9IHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoJ2UrJywgJ2UnKTtcbiAgICAgICAgZXhwb25lbnQgPSAwO1xuICAgICAgICBpZiAoKHBvcyA9IHRlbXAuaW5kZXhPZignZScpKSA+IDApIHtcbiAgICAgICAgICAgIGV4cG9uZW50ID0gK3RlbXAuc2xpY2UocG9zICsgMSk7XG4gICAgICAgICAgICB0ZW1wID0gdGVtcC5zbGljZSgwLCBwb3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2ludCA+PSAwKSB7XG4gICAgICAgICAgICBleHBvbmVudCAtPSB0ZW1wLmxlbmd0aCAtIHBvaW50IC0gMTtcbiAgICAgICAgICAgIHRlbXAgPSArKHRlbXAuc2xpY2UoMCwgcG9pbnQpICsgdGVtcC5zbGljZShwb2ludCArIDEpKSArICcnO1xuICAgICAgICB9XG4gICAgICAgIHBvcyA9IDA7XG4gICAgICAgIHdoaWxlICh0ZW1wLmNoYXJDb2RlQXQodGVtcC5sZW5ndGggKyBwb3MgLSAxKSA9PT0gMHgzMCAgLyogMCAqLykge1xuICAgICAgICAgICAgLS1wb3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyAhPT0gMCkge1xuICAgICAgICAgICAgZXhwb25lbnQgLT0gcG9zO1xuICAgICAgICAgICAgdGVtcCA9IHRlbXAuc2xpY2UoMCwgcG9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwb25lbnQgIT09IDApIHtcbiAgICAgICAgICAgIHRlbXAgKz0gJ2UnICsgZXhwb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0ZW1wLmxlbmd0aCA8IHJlc3VsdC5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgKGhleGFkZWNpbWFsICYmIHZhbHVlID4gMWUxMiAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWUgJiYgKHRlbXAgPSAnMHgnICsgdmFsdWUudG9TdHJpbmcoMTYpKS5sZW5ndGggPCByZXN1bHQubGVuZ3RoKSkgJiZcbiAgICAgICAgICAgICAgICArdGVtcCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHZhbGlkIFJlZ0V4cCBleHByZXNzaW9uLlxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL0NvbnN0ZWxsYXRpb24vaXYgRW5naW5lXG5cbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHBDaGFyYWN0ZXIoY2gsIHByZXZpb3VzSXNCYWNrc2xhc2gpIHtcbiAgICAgICAgLy8gbm90IGhhbmRsaW5nICdcXCcgYW5kIGhhbmRsaW5nIFxcdTIwMjggb3IgXFx1MjAyOSB0byB1bmljb2RlIGVzY2FwZSBzZXF1ZW5jZVxuICAgICAgICBpZiAoKGNoICYgfjEpID09PSAweDIwMjgpIHtcbiAgICAgICAgICAgIHJldHVybiAocHJldmlvdXNJc0JhY2tzbGFzaCA/ICd1JyA6ICdcXFxcdScpICsgKChjaCA9PT0gMHgyMDI4KSA/ICcyMDI4JyA6ICcyMDI5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDEwIHx8IGNoID09PSAxMykgeyAgLy8gXFxuLCBcXHJcbiAgICAgICAgICAgIHJldHVybiAocHJldmlvdXNJc0JhY2tzbGFzaCA/ICcnIDogJ1xcXFwnKSArICgoY2ggPT09IDEwKSA/ICduJyA6ICdyJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmVnRXhwKHJlZykge1xuICAgICAgICB2YXIgbWF0Y2gsIHJlc3VsdCwgZmxhZ3MsIGksIGl6LCBjaCwgY2hhcmFjdGVySW5CcmFjaywgcHJldmlvdXNJc0JhY2tzbGFzaDtcblxuICAgICAgICByZXN1bHQgPSByZWcudG9TdHJpbmcoKTtcblxuICAgICAgICBpZiAocmVnLnNvdXJjZSkge1xuICAgICAgICAgICAgLy8gZXh0cmFjdCBmbGFnIGZyb20gdG9TdHJpbmcgcmVzdWx0XG4gICAgICAgICAgICBtYXRjaCA9IHJlc3VsdC5tYXRjaCgvXFwvKFteL10qKSQvKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmbGFncyA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgICAgICAgICAgIGNoYXJhY3RlckluQnJhY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHByZXZpb3VzSXNCYWNrc2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gcmVnLnNvdXJjZS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgY2ggPSByZWcuc291cmNlLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSXNCYWNrc2xhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckluQnJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gOTMpIHsgIC8vIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJyYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDQ3KSB7ICAvLyAvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXFxcJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDkxKSB7ICAvLyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVySW5CcmFjayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZVJlZ0V4cENoYXJhY3RlcihjaCwgcHJldmlvdXNJc0JhY2tzbGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSXNCYWNrc2xhc2ggPSBjaCA9PT0gOTI7ICAvLyBcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIG5ldyBSZWdFeHAoXCJcXFxcXFxuJykgaXMgcHJvdmlkZWQsIGNyZWF0ZSAvXFxuL1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlUmVnRXhwQ2hhcmFjdGVyKGNoLCBwcmV2aW91c0lzQmFja3NsYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJldmVudCBsaWtlIC9cXFxcWy9dL1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0lzQmFja3NsYXNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJy8nICsgcmVzdWx0ICsgJy8nICsgZmxhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVzY2FwZUFsbG93ZWRDaGFyYWN0ZXIoY29kZSwgbmV4dCkge1xuICAgICAgICB2YXIgaGV4O1xuXG4gICAgICAgIGlmIChjb2RlID09PSAweDA4ICAvKiBcXGIgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXGInO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MEMgIC8qIFxcZiAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcZic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwOSAgLyogXFx0ICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGhleCA9IGNvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChqc29uIHx8IGNvZGUgPiAweEZGKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1JyArICcwMDAwJy5zbGljZShoZXgubGVuZ3RoKSArIGhleDtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDAwMDAgJiYgIWVzdXRpbHMuY29kZS5pc0RlY2ltYWxEaWdpdChuZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgwMDBCICAvKiBcXHYgKi8pIHsgLy8gJ1xcdidcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHgwQic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx4JyArICcwMCcuc2xpY2UoaGV4Lmxlbmd0aCkgKyBoZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVEaXNhbGxvd2VkQ2hhcmFjdGVyKGNvZGUpIHtcbiAgICAgICAgaWYgKGNvZGUgPT09IDB4NUMgIC8qIFxcICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxcXFxcJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDBBICAvKiBcXG4gKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXG4nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MEQgIC8qIFxcciAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxccic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgyMDI4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1MjAyOCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgyMDI5KSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1MjAyOSc7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdGx5IGNsYXNzaWZpZWQgY2hhcmFjdGVyJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlRGlyZWN0aXZlKHN0cikge1xuICAgICAgICB2YXIgaSwgaXosIGNvZGUsIHF1b3RlO1xuXG4gICAgICAgIHF1b3RlID0gcXVvdGVzID09PSAnZG91YmxlJyA/ICdcIicgOiAnXFwnJztcbiAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdHIubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDB4MjcgIC8qICcgKi8pIHtcbiAgICAgICAgICAgICAgICBxdW90ZSA9ICdcIic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MjIgIC8qIFwiICovKSB7XG4gICAgICAgICAgICAgICAgcXVvdGUgPSAnXFwnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg1QyAgLyogXFwgKi8pIHtcbiAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVvdGUgKyBzdHIgKyBxdW90ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJywgaSwgbGVuLCBjb2RlLCBzaW5nbGVRdW90ZXMgPSAwLCBkb3VibGVRdW90ZXMgPSAwLCBzaW5nbGUsIHF1b3RlO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDB4MjcgIC8qICcgKi8pIHtcbiAgICAgICAgICAgICAgICArK3NpbmdsZVF1b3RlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgyMiAgLyogXCIgKi8pIHtcbiAgICAgICAgICAgICAgICArK2RvdWJsZVF1b3RlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgyRiAgLyogLyAqLyAmJiBqc29uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXFxcJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSkgfHwgY29kZSA9PT0gMHg1QyAgLyogXFwgKi8pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlRGlzYWxsb3dlZENoYXJhY3Rlcihjb2RlKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGNvZGUpICYmIChqc29uICYmIGNvZGUgPCAweDIwICAvKiBTUCAqLyB8fCAhanNvbiAmJiAhZXNjYXBlbGVzcyAmJiAoY29kZSA8IDB4MjAgIC8qIFNQICovIHx8IGNvZGUgPiAweDdFICAvKiB+ICovKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlQWxsb3dlZENoYXJhY3Rlcihjb2RlLCBzdHIuY2hhckNvZGVBdChpICsgMSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaW5nbGUgPSAhKHF1b3RlcyA9PT0gJ2RvdWJsZScgfHwgKHF1b3RlcyA9PT0gJ2F1dG8nICYmIGRvdWJsZVF1b3RlcyA8IHNpbmdsZVF1b3RlcykpO1xuICAgICAgICBxdW90ZSA9IHNpbmdsZSA/ICdcXCcnIDogJ1wiJztcblxuICAgICAgICBpZiAoIShzaW5nbGUgPyBzaW5nbGVRdW90ZXMgOiBkb3VibGVRdW90ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVvdGUgKyByZXN1bHQgKyBxdW90ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ciA9IHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gcXVvdGU7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoKGNvZGUgPT09IDB4MjcgIC8qICcgKi8gJiYgc2luZ2xlKSB8fCAoY29kZSA9PT0gMHgyMiAgLyogXCIgKi8gJiYgIXNpbmdsZSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0ICsgcXVvdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmxhdHRlbiBhbiBhcnJheSB0byBhIHN0cmluZywgd2hlcmUgdGhlIGFycmF5IGNhbiBjb250YWluXG4gICAgICogZWl0aGVyIHN0cmluZ3Mgb3IgbmVzdGVkIGFycmF5c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5Ub1N0cmluZyhhcnIpIHtcbiAgICAgICAgdmFyIGksIGl6LCBlbGVtLCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yIChpID0gMCwgaXogPSBhcnIubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgZWxlbSA9IGFycltpXTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBBcnJheS5pc0FycmF5KGVsZW0pID8gZmxhdHRlblRvU3RyaW5nKGVsZW0pIDogZWxlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgZ2VuZXJhdGVkIHRvIGEgU291cmNlTm9kZSB3aGVuIHNvdXJjZSBtYXBzIGFyZSBlbmFibGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZ2VuZXJhdGVkLCBub2RlKSB7XG4gICAgICAgIGlmICghc291cmNlTWFwKSB7XG4gICAgICAgICAgICAvLyB3aXRoIG5vIHNvdXJjZSBtYXBzLCBnZW5lcmF0ZWQgaXMgZWl0aGVyIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBvciBhIHN0cmluZy4gIGlmIGFuIGFycmF5LCBmbGF0dGVuIGl0LlxuICAgICAgICAgICAgLy8gaWYgYSBzdHJpbmcsIGp1c3QgcmV0dXJuIGl0XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShnZW5lcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Ub1N0cmluZyhnZW5lcmF0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChnZW5lcmF0ZWQgaW5zdGFuY2VvZiBTb3VyY2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmxvYyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobnVsbCwgbnVsbCwgc291cmNlTWFwLCBnZW5lcmF0ZWQsIG5vZGUubmFtZSB8fCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobm9kZS5sb2Muc3RhcnQubGluZSwgbm9kZS5sb2Muc3RhcnQuY29sdW1uLCAoc291cmNlTWFwID09PSB0cnVlID8gbm9kZS5sb2Muc291cmNlIHx8IG51bGwgOiBzb3VyY2VNYXApLCBnZW5lcmF0ZWQsIG5vZGUubmFtZSB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub0VtcHR5U3BhY2UoKSB7XG4gICAgICAgIHJldHVybiAoc3BhY2UpID8gc3BhY2UgOiAnICc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gam9pbihsZWZ0LCByaWdodCkge1xuICAgICAgICB2YXIgbGVmdFNvdXJjZSxcbiAgICAgICAgICAgIHJpZ2h0U291cmNlLFxuICAgICAgICAgICAgbGVmdENoYXJDb2RlLFxuICAgICAgICAgICAgcmlnaHRDaGFyQ29kZTtcblxuICAgICAgICBsZWZ0U291cmNlID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChsZWZ0KS50b1N0cmluZygpO1xuICAgICAgICBpZiAobGVmdFNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbcmlnaHRdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmlnaHRTb3VyY2UgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJpZ2h0KS50b1N0cmluZygpO1xuICAgICAgICBpZiAocmlnaHRTb3VyY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW2xlZnRdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdENoYXJDb2RlID0gbGVmdFNvdXJjZS5jaGFyQ29kZUF0KGxlZnRTb3VyY2UubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJpZ2h0Q2hhckNvZGUgPSByaWdodFNvdXJjZS5jaGFyQ29kZUF0KDApO1xuXG4gICAgICAgIGlmICgobGVmdENoYXJDb2RlID09PSAweDJCICAvKiArICovIHx8IGxlZnRDaGFyQ29kZSA9PT0gMHgyRCAgLyogLSAqLykgJiYgbGVmdENoYXJDb2RlID09PSByaWdodENoYXJDb2RlIHx8XG4gICAgICAgICAgICBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShsZWZ0Q2hhckNvZGUpICYmIGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KHJpZ2h0Q2hhckNvZGUpIHx8XG4gICAgICAgICAgICBsZWZ0Q2hhckNvZGUgPT09IDB4MkYgIC8qIC8gKi8gJiYgcmlnaHRDaGFyQ29kZSA9PT0gMHg2OSAgLyogaSAqLykgeyAvLyBpbmZpeCB3b3JkIG9wZXJhdG9ycyBhbGwgc3RhcnQgd2l0aCBgaWBcbiAgICAgICAgICAgIHJldHVybiBbbGVmdCwgbm9FbXB0eVNwYWNlKCksIHJpZ2h0XTtcbiAgICAgICAgfSBlbHNlIGlmIChlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGxlZnRDaGFyQ29kZSkgfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IobGVmdENoYXJDb2RlKSB8fFxuICAgICAgICAgICAgICAgIGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UocmlnaHRDaGFyQ29kZSkgfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IocmlnaHRDaGFyQ29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbbGVmdCwgcmlnaHRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbGVmdCwgc3BhY2UsIHJpZ2h0XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRJbmRlbnQoc3RtdCkge1xuICAgICAgICByZXR1cm4gW2Jhc2UsIHN0bXRdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdpdGhJbmRlbnQoZm4pIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQmFzZTtcbiAgICAgICAgcHJldmlvdXNCYXNlID0gYmFzZTtcbiAgICAgICAgYmFzZSArPSBpbmRlbnQ7XG4gICAgICAgIGZuKGJhc2UpO1xuICAgICAgICBiYXNlID0gcHJldmlvdXNCYXNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVNwYWNlcyhzdHIpIHtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIGZvciAoaSA9IHN0ci5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgaWYgKGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKHN0ci5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoc3RyLmxlbmd0aCAtIDEpIC0gaTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGp1c3RNdWx0aWxpbmVDb21tZW50KHZhbHVlLCBzcGVjaWFsQmFzZSkge1xuICAgICAgICB2YXIgYXJyYXksIGksIGxlbiwgbGluZSwgaiwgc3BhY2VzLCBwcmV2aW91c0Jhc2UsIHNuO1xuXG4gICAgICAgIGFycmF5ID0gdmFsdWUuc3BsaXQoL1xcclxcbnxbXFxyXFxuXS8pO1xuICAgICAgICBzcGFjZXMgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuXG4gICAgICAgIC8vIGZpcnN0IGxpbmUgZG9lc24ndCBoYXZlIGluZGVudGF0aW9uXG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBsaW5lID0gYXJyYXlbaV07XG4gICAgICAgICAgICBqID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChqIDwgbGluZS5sZW5ndGggJiYgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShsaW5lLmNoYXJDb2RlQXQoaikpKSB7XG4gICAgICAgICAgICAgICAgKytqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNwYWNlcyA+IGopIHtcbiAgICAgICAgICAgICAgICBzcGFjZXMgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBzcGVjaWFsQmFzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHBhdHRlcm4gbGlrZVxuICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgLy8gICB2YXIgdCA9IDIwOyAgLypcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAqIHRoaXMgaXMgY29tbWVudFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBwcmV2aW91c0Jhc2UgPSBiYXNlO1xuICAgICAgICAgICAgaWYgKGFycmF5WzFdW3NwYWNlc10gPT09ICcqJykge1xuICAgICAgICAgICAgICAgIHNwZWNpYWxCYXNlICs9ICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJhc2UgPSBzcGVjaWFsQmFzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcGFjZXMgJiAxKSB7XG4gICAgICAgICAgICAgICAgLy8gLypcbiAgICAgICAgICAgICAgICAvLyAgKlxuICAgICAgICAgICAgICAgIC8vICAqL1xuICAgICAgICAgICAgICAgIC8vIElmIHNwYWNlcyBhcmUgb2RkIG51bWJlciwgYWJvdmUgcGF0dGVybiBpcyBjb25zaWRlcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIHdhc3RlIDEgc3BhY2UuXG4gICAgICAgICAgICAgICAgLS1zcGFjZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2aW91c0Jhc2UgPSBiYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIHNuID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChhZGRJbmRlbnQoYXJyYXlbaV0uc2xpY2Uoc3BhY2VzKSkpO1xuICAgICAgICAgICAgYXJyYXlbaV0gPSBzb3VyY2VNYXAgPyBzbi5qb2luKCcnKSA6IHNuO1xuICAgICAgICB9XG5cbiAgICAgICAgYmFzZSA9IHByZXZpb3VzQmFzZTtcblxuICAgICAgICByZXR1cm4gYXJyYXkuam9pbignXFxuJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQsIHNwZWNpYWxCYXNlKSB7XG4gICAgICAgIGlmIChjb21tZW50LnR5cGUgPT09ICdMaW5lJykge1xuICAgICAgICAgICAgaWYgKGVuZHNXaXRoTGluZVRlcm1pbmF0b3IoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJy8vJyArIGNvbW1lbnQudmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgTGluZVRlcm1pbmF0b3JcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gJy8vJyArIGNvbW1lbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChleHRyYS5mb3JtYXQuaW5kZW50LmFkanVzdE11bHRpbGluZUNvbW1lbnQgJiYgL1tcXG5cXHJdLy50ZXN0KGNvbW1lbnQudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRqdXN0TXVsdGlsaW5lQ29tbWVudCgnLyonICsgY29tbWVudC52YWx1ZSArICcqLycsIHNwZWNpYWxCYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy8qJyArIGNvbW1lbnQudmFsdWUgKyAnKi8nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZENvbW1lbnRzKHN0bXQsIHJlc3VsdCkge1xuICAgICAgICB2YXIgaSwgbGVuLCBjb21tZW50LCBzYXZlLCB0YWlsaW5nVG9TdGF0ZW1lbnQsIHNwZWNpYWxCYXNlLCBmcmFnbWVudCxcbiAgICAgICAgICAgIGV4dFJhbmdlLCByYW5nZSwgcHJldlJhbmdlLCBwcmVmaXgsIGluZml4LCBzdWZmaXgsIGNvdW50O1xuXG4gICAgICAgIGlmIChzdG10LmxlYWRpbmdDb21tZW50cyAmJiBzdG10LmxlYWRpbmdDb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzYXZlID0gcmVzdWx0O1xuXG4gICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZXh0UmFuZ2UgPSBjb21tZW50LmV4dGVuZGVkUmFuZ2U7XG4gICAgICAgICAgICAgICAgcmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgcHJlZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcoZXh0UmFuZ2VbMF0sIHJhbmdlWzBdKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IChwcmVmaXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJlZml4KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcmV2UmFuZ2UgPSByYW5nZTtcblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHN0bXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgICAgIGluZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocHJldlJhbmdlWzFdLCByYW5nZVswXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gKGluZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldlJhbmdlID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3VmZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMV0sIGV4dFJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IChzdWZmaXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0cmluZ1JlcGVhdCgnXFxuJywgY291bnQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChzYWZlQ29uY2F0ZW5hdGlvbiAmJiBzdG10LnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtICYmIHN0bXQuYm9keS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpO1xuICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHN0bXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBbZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZnJhZ21lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChzYXZlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RtdC50cmFpbGluZ0NvbW1lbnRzKSB7XG5cbiAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC50cmFpbGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGV4dFJhbmdlID0gY29tbWVudC5leHRlbmRlZFJhbmdlO1xuICAgICAgICAgICAgICAgIHJhbmdlID0gY29tbWVudC5yYW5nZTtcblxuICAgICAgICAgICAgICAgIHByZWZpeCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKGV4dFJhbmdlWzBdLCByYW5nZVswXSk7XG4gICAgICAgICAgICAgICAgY291bnQgPSAocHJlZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJlZml4KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhaWxpbmdUb1N0YXRlbWVudCA9ICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBzcGVjaWFsQmFzZSA9IHN0cmluZ1JlcGVhdCgnICcsIGNhbGN1bGF0ZVNwYWNlcyh0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKFtiYXNlLCByZXN1bHQsIGluZGVudF0pLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBzdG10LnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQudHJhaWxpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhaWxpbmdUb1N0YXRlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIHRhcmdldCBsaWtlIGZvbGxvd2luZyBzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgdCA9IDIwOyAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICogVGhpcyBpcyBjb21tZW50IG9mIHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsIGluZGVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsIHNwZWNpYWxCYXNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlQ29tbWVudChjb21tZW50LCBzcGVjaWFsQmFzZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgYWRkSW5kZW50KGdlbmVyYXRlQ29tbWVudChjb21tZW50KSldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSBsZW4gLSAxICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgJ1xcbiddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUJsYW5rTGluZXMoc3RhcnQsIGVuZCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBqLCBuZXdsaW5lQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDwgZW5kOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlW2pdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIG5ld2xpbmVDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChqID0gMTsgaiA8IG5ld2xpbmVDb3VudDsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudGhlc2l6ZSh0ZXh0LCBjdXJyZW50LCBzaG91bGQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPCBzaG91bGQpIHtcbiAgICAgICAgICAgIHJldHVybiBbJygnLCB0ZXh0LCAnKSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlVmVyYmF0aW1TdHJpbmcoc3RyaW5nKSB7XG4gICAgICAgIHZhciBpLCBpeiwgcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBzdHJpbmcuc3BsaXQoL1xcclxcbnxcXG4vKTtcbiAgICAgICAgZm9yIChpID0gMSwgaXogPSByZXN1bHQubGVuZ3RoOyBpIDwgaXo7IGkrKykge1xuICAgICAgICAgICAgcmVzdWx0W2ldID0gbmV3bGluZSArIGJhc2UgKyByZXN1bHRbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVZlcmJhdGltKGV4cHIsIHByZWNlZGVuY2UpIHtcbiAgICAgICAgdmFyIHZlcmJhdGltLCByZXN1bHQsIHByZWM7XG4gICAgICAgIHZlcmJhdGltID0gZXhwcltleHRyYS52ZXJiYXRpbV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2ZXJiYXRpbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudGhlc2l6ZShnZW5lcmF0ZVZlcmJhdGltU3RyaW5nKHZlcmJhdGltKSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB2ZXJiYXRpbSBpcyBvYmplY3RcbiAgICAgICAgICAgIHJlc3VsdCA9IGdlbmVyYXRlVmVyYmF0aW1TdHJpbmcodmVyYmF0aW0uY29udGVudCk7XG4gICAgICAgICAgICBwcmVjID0gKHZlcmJhdGltLnByZWNlZGVuY2UgIT0gbnVsbCkgPyB2ZXJiYXRpbS5wcmVjZWRlbmNlIDogUHJlY2VkZW5jZS5TZXF1ZW5jZTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudGhlc2l6ZShyZXN1bHQsIHByZWMsIHByZWNlZGVuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0LCBleHByKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBDb2RlR2VuZXJhdG9yKCkge1xuICAgIH1cblxuICAgIC8vIEhlbHBlcnMuXG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5tYXliZUJsb2NrID0gZnVuY3Rpb24oc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgbm9MZWFkaW5nQ29tbWVudCwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgbm9MZWFkaW5nQ29tbWVudCA9ICFleHRyYS5jb21tZW50IHx8ICFzdG10LmxlYWRpbmdDb21tZW50cztcblxuICAgICAgICBpZiAoc3RtdC50eXBlID09PSBTeW50YXguQmxvY2tTdGF0ZW1lbnQgJiYgbm9MZWFkaW5nQ29tbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtzcGFjZSwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LCBmbGFncyldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LkVtcHR5U3RhdGVtZW50ICYmIG5vTGVhZGluZ0NvbW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAnOyc7XG4gICAgICAgIH1cblxuICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICBuZXdsaW5lLFxuICAgICAgICAgICAgICAgIGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQsIGZsYWdzKSlcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLm1heWJlQmxvY2tTdWZmaXggPSBmdW5jdGlvbiAoc3RtdCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBlbmRzID0gZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSk7XG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09IFN5bnRheC5CbG9ja1N0YXRlbWVudCAmJiAoIWV4dHJhLmNvbW1lbnQgfHwgIXN0bXQubGVhZGluZ0NvbW1lbnRzKSAmJiAhZW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQsIHNwYWNlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQsIGJhc2VdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcmVzdWx0LCBuZXdsaW5lLCBiYXNlXTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQobm9kZS5uYW1lLCBub2RlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUFzeW5jUHJlZml4KG5vZGUsIHNwYWNlUmVxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuYXN5bmMgPyAnYXN5bmMnICsgKHNwYWNlUmVxdWlyZWQgPyBub0VtcHR5U3BhY2UoKSA6IHNwYWNlKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlU3RhclN1ZmZpeChub2RlKSB7XG4gICAgICAgIHZhciBpc0dlbmVyYXRvciA9IG5vZGUuZ2VuZXJhdG9yICYmICFleHRyYS5tb3ouc3Rhcmxlc3NHZW5lcmF0b3I7XG4gICAgICAgIHJldHVybiBpc0dlbmVyYXRvciA/ICcqJyArIHNwYWNlIDogJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVNZXRob2RQcmVmaXgocHJvcCkge1xuICAgICAgICB2YXIgZnVuYyA9IHByb3AudmFsdWUsIHByZWZpeCA9ICcnO1xuICAgICAgICBpZiAoZnVuYy5hc3luYykge1xuICAgICAgICAgICAgcHJlZml4ICs9IGdlbmVyYXRlQXN5bmNQcmVmaXgoZnVuYywgIXByb3AuY29tcHV0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmdW5jLmdlbmVyYXRvcikge1xuICAgICAgICAgICAgLy8gYXZvaWQgc3BhY2UgYmVmb3JlIG1ldGhvZCBuYW1lXG4gICAgICAgICAgICBwcmVmaXggKz0gZ2VuZXJhdGVTdGFyU3VmZml4KGZ1bmMpID8gJyonIDogJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZVBhdHRlcm4gPSBmdW5jdGlvbiAobm9kZSwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlkZW50aWZpZXIobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKG5vZGUsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVGdW5jdGlvblBhcmFtcyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBpLCBpeiwgcmVzdWx0LCBoYXNEZWZhdWx0O1xuXG4gICAgICAgIGhhc0RlZmF1bHQgPSBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5yZXN0ICYmICghbm9kZS5kZWZhdWx0cyB8fCBub2RlLmRlZmF1bHRzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgICAgICAgICBub2RlLnBhcmFtcy5sZW5ndGggPT09IDEgJiYgbm9kZS5wYXJhbXNbMF0udHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIC8vIGFyZyA9PiB7IH0gY2FzZVxuICAgICAgICAgICAgcmVzdWx0ID0gW2dlbmVyYXRlQXN5bmNQcmVmaXgobm9kZSwgdHJ1ZSksIGdlbmVyYXRlSWRlbnRpZmllcihub2RlLnBhcmFtc1swXSldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gbm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gPyBbZ2VuZXJhdGVBc3luY1ByZWZpeChub2RlLCBmYWxzZSldIDogW107XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKCcpO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gbm9kZS5wYXJhbXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNEZWZhdWx0ICYmIG5vZGUuZGVmYXVsdHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlQXNzaWdubWVudChub2RlLnBhcmFtc1tpXSwgbm9kZS5kZWZhdWx0c1tpXSwgJz0nLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZVBhdHRlcm4obm9kZS5wYXJhbXNbaV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5vZGUucmVzdCkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLi4uJyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUucmVzdCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVGdW5jdGlvbkJvZHkgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgcmVzdWx0LCBleHByO1xuXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZ2VuZXJhdGVGdW5jdGlvblBhcmFtcyhub2RlKTtcblxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc9PicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgZXhwciA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKG5vZGUuYm9keSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCk7XG4gICAgICAgICAgICBpZiAoZXhwci50b1N0cmluZygpLmNoYXJBdCgwKSA9PT0gJ3snKSB7XG4gICAgICAgICAgICAgICAgZXhwciA9IFsnKCcsIGV4cHIsICcpJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChleHByKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhub2RlLmJvZHksIFNfVFRGRikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVJdGVyYXRpb25Gb3JTdGF0ZW1lbnQgPSBmdW5jdGlvbiAob3BlcmF0b3IsIHN0bXQsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbJ2ZvcicgKyBzcGFjZSArIChzdG10LmF3YWl0ID8gJ2F3YWl0JyArIHNwYWNlIDogJycpICsgJygnXSwgdGhhdCA9IHRoaXM7XG4gICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHN0bXQubGVmdC50eXBlID09PSBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdG10LmxlZnQua2luZCArIG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmxlZnQuZGVjbGFyYXRpb25zWzBdLCBTX0ZGRkYpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5sZWZ0LCBQcmVjZWRlbmNlLkNhbGwsIEVfVFRUKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBvcGVyYXRvcik7XG4gICAgICAgICAgICByZXN1bHQgPSBbam9pbihcbiAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5yaWdodCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICApLCAnKSddO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVQcm9wZXJ0eUtleSA9IGZ1bmN0aW9uIChleHByLCBjb21wdXRlZCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnWycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwciwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcblxuICAgICAgICBpZiAoY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCddJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUFzc2lnbm1lbnQgPSBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIG9wZXJhdG9yLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICBpZiAoUHJlY2VkZW5jZS5Bc3NpZ25tZW50IDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24obGVmdCwgUHJlY2VkZW5jZS5DYWxsLCBmbGFncyksXG4gICAgICAgICAgICAgICAgc3BhY2UgKyBvcGVyYXRvciArIHNwYWNlLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHJpZ2h0LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFByZWNlZGVuY2UuQXNzaWdubWVudCxcbiAgICAgICAgICAgIHByZWNlZGVuY2VcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuc2VtaWNvbG9uID0gZnVuY3Rpb24gKGZsYWdzKSB7XG4gICAgICAgIGlmICghc2VtaWNvbG9ucyAmJiBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnOyc7XG4gICAgfTtcblxuICAgIC8vIFN0YXRlbWVudHMuXG5cbiAgICBDb2RlR2VuZXJhdG9yLlN0YXRlbWVudCA9IHtcblxuICAgICAgICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmFuZ2UsIGNvbnRlbnQsIHJlc3VsdCA9IFsneycsIG5ld2xpbmVdLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIGZ1bmN0aW9ucyB3aXRob3V0IGFueSBjb2RlXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuYm9keS5sZW5ndGggPT09IDAgJiYgcHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhbmdlID0gc3RtdC5yYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlWzFdIC0gcmFuZ2VbMF0gPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMF0gKyAxLCByYW5nZVsxXSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gWyd7J107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpLCBpeiwgZnJhZ21lbnQsIGJvZHlGbGFncztcbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9GVU5DX0JPRFkpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfRElSRUNUSVZFX0NUWDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuYm9keS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmVmb3JlIHRoZSBmaXJzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmJvZHlbMF0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50c1swXS5leHRlbmRlZFJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMF0sIHJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ3snXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVswXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQucmFuZ2VbMF0sIHN0bXQuYm9keVswXS5yYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmV0d2VlbiBsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSAtIDFdLnRyYWlsaW5nQ29tbWVudHMgICYmICFzdG10LmJvZHlbaV0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaSAtIDFdLnJhbmdlWzFdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmJvZHlbaV0ubGVhZGluZ0NvbW1lbnRzICYmIHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keVtpXSwgYm9keUZsYWdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5W2ldLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzICYmIGkgPCBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBhZGQgYSBuZXcgbGluZSBpZiB0aGVyZSBhcmUgbGVhZGluZyBjb21lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIG5leHQgc3RhdGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSArIDFdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBhZnRlciB0aGUgbGFzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaV0udHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5ib2R5W2ldLnJhbmdlWzFdLCBzdG10LnJhbmdlWzFdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoJ30nKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChzdG10LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdicmVhayAnICsgc3RtdC5sYWJlbC5uYW1lICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdicmVhaycgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgaWYgKHN0bXQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnRpbnVlICcgKyBzdG10LmxhYmVsLm5hbWUgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ2NvbnRpbnVlJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0JvZHk6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgJ3snLCBuZXdsaW5lXSwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5ib2R5Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5ib2R5W2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYmFzZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnfScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0RlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuICAgICAgICAgICAgcmVzdWx0ICA9IFsnY2xhc3MnXTtcbiAgICAgICAgICAgIGlmIChzdG10LmlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuaWQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RtdC5zdXBlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBqb2luKCdleHRlbmRzJywgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zdXBlckNsYXNzLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5LCBTX1RGRlQpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRGlyZWN0aXZlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5yYXcgJiYgc3RtdC5yYXcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RtdC5yYXcgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlRGlyZWN0aXZlKHN0bXQuZGlyZWN0aXZlKSArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIEJlY2F1c2UgYGRvIDQyIHdoaWxlIChjb25kKWAgaXMgU3ludGF4IEVycm9yLiBXZSBuZWVkIHNlbWljb2xvbi5cbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBqb2luKCdkbycsIHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIFNfVEZGRikpO1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICd3aGlsZScgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAnKScgKyB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIENhdGNoQ2xhdXNlOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGd1YXJkO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnY2F0Y2gnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQucGFyYW0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChzdG10Lmd1YXJkKSB7XG4gICAgICAgICAgICAgICAgICAgIGd1YXJkID0gdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5ndWFyZCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDIsIDAsICcgaWYgJywgZ3VhcmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGVidWdnZXInICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEVtcHR5U3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnOyc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbICdleHBvcnQnIF0sIGJvZHlGbGFncztcblxuICAgICAgICAgICAgYm9keUZsYWdzID0gKGZsYWdzICYgRl9TRU1JQ09MT05fT1BUKSA/IFNfVEZGVCA6IFNfVEZGRjtcblxuICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgSG9pc3RhYmxlRGVjbGFyYXRpb25bRGVmYXVsdF1cbiAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IEFzc2lnbm1lbnRFeHByZXNzaW9uW0luXSA7XG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ2RlZmF1bHQnKTtcbiAgICAgICAgICAgIGlmIChpc1N0YXRlbWVudChzdG10LmRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuZGVjbGFyYXRpb24sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5kZWNsYXJhdGlvbiwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkgKyB0aGlzLnNlbWljb2xvbihmbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbICdleHBvcnQnIF0sIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIGJvZHlGbGFncyA9IChmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkgPyBTX1RGRlQgOiBTX1RGRkY7XG5cbiAgICAgICAgICAgIC8vIGV4cG9ydCBWYXJpYWJsZVN0YXRlbWVudFxuICAgICAgICAgICAgLy8gZXhwb3J0IERlY2xhcmF0aW9uW0RlZmF1bHRdXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmRlY2xhcmF0aW9uLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXhwb3J0IEV4cG9ydENsYXVzZVtOb1JlZmVyZW5jZV0gRnJvbUNsYXVzZSA7XG4gICAgICAgICAgICAvLyBleHBvcnQgRXhwb3J0Q2xhdXNlIDtcbiAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ3snICsgc3BhY2UgKyAnfScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RtdC5zcGVjaWZpZXJzWzBdLnR5cGUgPT09IFN5bnRheC5FeHBvcnRCYXRjaFNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzWzBdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCAneycpO1xuICAgICAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LnNwZWNpZmllcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UgKyAnfScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5zZW1pY29sb24oZmxhZ3MpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIGV4cG9ydCAqIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAnZXhwb3J0JyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICcqJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICdmcm9tJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzQ2xhc3NQcmVmaXhlZChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlO1xuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudC5zbGljZSgwLCA1KSAhPT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZGUgPSBmcmFnbWVudC5jaGFyQ29kZUF0KDUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlID09PSAweDdCICAvKiAneycgKi8gfHwgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShjb2RlKSB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihjb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gaXNGdW5jdGlvblByZWZpeGVkKGZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGU7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKDAsIDgpICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29kZSA9IGZyYWdtZW50LmNoYXJDb2RlQXQoOCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IDB4MjggLyogJygnICovIHx8IGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoY29kZSkgfHwgY29kZSA9PT0gMHgyQSAgLyogJyonICovIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBpc0FzeW5jUHJlZml4ZWQoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZSwgaSwgaXo7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKDAsIDUpICE9PSAnYXN5bmMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGZyYWdtZW50LmNoYXJDb2RlQXQoNSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChpID0gNiwgaXogPSBmcmFnbWVudC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShmcmFnbWVudC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKGksIGkgKyA4KSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZGUgPSBmcmFnbWVudC5jaGFyQ29kZUF0KGkgKyA4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gMHgyOCAvKiAnKCcgKi8gfHwgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShjb2RlKSB8fCBjb2RlID09PSAweDJBICAvKiAnKicgKi8gfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IFt0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmV4cHJlc3Npb24sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKV07XG4gICAgICAgICAgICAvLyAxMi40ICd7JywgJ2Z1bmN0aW9uJywgJ2NsYXNzJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHBvc2l0aW9uLlxuICAgICAgICAgICAgLy8gd3JhcCBleHByZXNzaW9uIHdpdGggcGFyZW50aGVzZXNcbiAgICAgICAgICAgIGZyYWdtZW50ID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQuY2hhckNvZGVBdCgwKSA9PT0gMHg3QiAgLyogJ3snICovIHx8ICAvLyBPYmplY3RFeHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIGlzQ2xhc3NQcmVmaXhlZChmcmFnbWVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNGdW5jdGlvblByZWZpeGVkKGZyYWdtZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICBpc0FzeW5jUHJlZml4ZWQoZnJhZ21lbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChkaXJlY3RpdmUgJiYgKGZsYWdzICYgRl9ESVJFQ1RJVkVfQ1RYKSAmJiBzdG10LmV4cHJlc3Npb24udHlwZSA9PT0gU3ludGF4LkxpdGVyYWwgJiYgdHlwZW9mIHN0bXQuZXhwcmVzc2lvbi52YWx1ZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWycoJywgcmVzdWx0LCAnKScgKyB0aGlzLnNlbWljb2xvbihmbGFncyldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnNlbWljb2xvbihmbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBFUzY6IDE1LjIuMSB2YWxpZCBpbXBvcnQgZGVjbGFyYXRpb25zOlxuICAgICAgICAgICAgLy8gICAgIC0gaW1wb3J0IEltcG9ydENsYXVzZSBGcm9tQ2xhdXNlIDtcbiAgICAgICAgICAgIC8vICAgICAtIGltcG9ydCBNb2R1bGVTcGVjaWZpZXIgO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgY3Vyc29yLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgLy8gSWYgbm8gSW1wb3J0Q2xhdXNlIGlzIHByZXNlbnQsXG4gICAgICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBgaW1wb3J0IE1vZHVsZVNwZWNpZmllcmAgc28gc2tpcCBgZnJvbWBcbiAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllciBpcyBTdHJpbmdMaXRlcmFsLlxuICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBpbXBvcnQgTW9kdWxlU3BlY2lmaWVyIDtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAnaW1wb3J0JyxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNvdXJjZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpbXBvcnQgSW1wb3J0Q2xhdXNlIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICdpbXBvcnQnXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY3Vyc29yID0gMDtcblxuICAgICAgICAgICAgLy8gSW1wb3J0ZWRCaW5kaW5nXG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0udHlwZSA9PT0gU3ludGF4LkltcG9ydERlZmF1bHRTcGVjaWZpZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICsrY3Vyc29yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0pIHtcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLnR5cGUgPT09IFN5bnRheC5JbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZVNwYWNlSW1wb3J0XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYW1lZEltcG9ydHNcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAneycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgoc3RtdC5zcGVjaWZpZXJzLmxlbmd0aCAtIGN1cnNvcikgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcG9ydCB7IC4uLiB9IGZyb20gXCIuLi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAnfScgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBvcnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgLi4uLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgLi4uLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBmcm9tIFwiLi4uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gY3Vyc29yLCBpeiA9IHN0bXQuc3BlY2lmaWVycy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChiYXNlICsgJ30nICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICdmcm9tJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBpdGVtRmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX0lOKSA/IEVfVFRUIDogRV9GVFQ7XG4gICAgICAgICAgICBpZiAoc3RtdC5pbml0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pZCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBpdGVtRmxhZ3MpLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgJz0nLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pbml0LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGl0ZW1GbGFncylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVQYXR0ZXJuKHN0bXQuaWQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgaXRlbUZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIFZhcmlhYmxlRGVjbGFyYXRvciBpcyB0eXBlZCBhcyBTdGF0ZW1lbnQsXG4gICAgICAgICAgICAvLyBidXQgam9pbmVkIHdpdGggY29tbWEgKG5vdCBMaW5lVGVybWluYXRvcikuXG4gICAgICAgICAgICAvLyBTbyBpZiBjb21tZW50IGlzIGF0dGFjaGVkIHRvIHRhcmdldCBub2RlLCB3ZSBzaG91bGQgc3BlY2lhbGl6ZS5cbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBub2RlLCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICByZXN1bHQgPSBbIHN0bXQua2luZCBdO1xuXG4gICAgICAgICAgICBib2R5RmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX0lOKSA/IFNfVEZGRiA6IFNfRkZGRjtcblxuICAgICAgICAgICAgZnVuY3Rpb24gYmxvY2soKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHN0bXQuZGVjbGFyYXRpb25zWzBdO1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50ICYmIG5vZGUubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgYm9keUZsYWdzKSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IHN0bXQuZGVjbGFyYXRpb25zLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHN0bXQuZGVjbGFyYXRpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudCAmJiBub2RlLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJhdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoYmxvY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBibG9jaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnNlbWljb2xvbihmbGFncykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFRocm93U3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbam9pbihcbiAgICAgICAgICAgICAgICAndGhyb3cnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuYXJndW1lbnQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgKSwgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBUcnlTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIGd1YXJkZWRIYW5kbGVycztcblxuICAgICAgICAgICAgcmVzdWx0ID0gWyd0cnknLCB0aGlzLm1heWJlQmxvY2soc3RtdC5ibG9jaywgU19URkZGKV07XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5ibG9jaywgcmVzdWx0KTtcblxuICAgICAgICAgICAgaWYgKHN0bXQuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICAvLyBvbGQgaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmhhbmRsZXJzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5oYW5kbGVyc1tpXSwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplciB8fCBpICsgMSAhPT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmhhbmRsZXJzW2ldLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGd1YXJkZWRIYW5kbGVycyA9IHN0bXQuZ3VhcmRlZEhhbmRsZXJzIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBndWFyZGVkSGFuZGxlcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChndWFyZGVkSGFuZGxlcnNbaV0sIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIgfHwgaSArIDEgIT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoZ3VhcmRlZEhhbmRsZXJzW2ldLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBuZXcgaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuaGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdG10LmhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuaGFuZGxlci5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5oYW5kbGVyW2ldLCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIgfHwgaSArIDEgIT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmhhbmRsZXJbaV0uYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmhhbmRsZXIsIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuaGFuZGxlci5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFsnZmluYWxseScsIHRoaXMubWF5YmVCbG9jayhzdG10LmZpbmFsaXplciwgU19URkZGKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQsIGksIGl6LCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnc3dpdGNoJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmRpc2NyaW1pbmFudCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKScgKyBzcGFjZSArICd7JyArIG5ld2xpbmVcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc3RtdC5jYXNlcykge1xuICAgICAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuY2FzZXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5jYXNlc1tpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudCgnfScpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgU3dpdGNoQ2FzZTogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudCwgaSwgaXosIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC50ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oJ2Nhc2UnLCB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAnOidcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ2RlZmF1bHQ6J107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgaXogPSBzdG10LmNvbnNlcXVlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChpeiAmJiBzdG10LmNvbnNlcXVlbnRbMF0udHlwZSA9PT0gU3ludGF4LkJsb2NrU3RhdGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5tYXliZUJsb2NrKHN0bXQuY29uc2VxdWVudFswXSwgU19URkZGKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpID0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaSAhPT0gaXogJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSAmJiBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuY29uc2VxdWVudFtpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxICE9PSBpeiAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSWZTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgYm9keUZsYWdzLCBzZW1pY29sb25PcHRpb25hbCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICdpZicgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbWljb2xvbk9wdGlvbmFsID0gZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICBpZiAoc2VtaWNvbG9uT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0bXQuYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuY29uc2VxdWVudCwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuY29uc2VxdWVudCwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5hbHRlcm5hdGUudHlwZSA9PT0gU3ludGF4LklmU3RhdGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbJ2Vsc2UgJywgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmFsdGVybmF0ZSwgYm9keUZsYWdzKV0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBqb2luKCdlbHNlJywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYWx0ZXJuYXRlLCBib2R5RmxhZ3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5jb25zZXF1ZW50LCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRm9yU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWydmb3InICsgc3BhY2UgKyAnKCddO1xuICAgICAgICAgICAgICAgIGlmIChzdG10LmluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuaW5pdC50eXBlID09PSBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmluaXQsIFNfRkZGRikpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRl9BTExPV19JTiBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pbml0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX0ZUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc7Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQudGVzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnOycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudXBkYXRlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEZvckluU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlSXRlcmF0aW9uRm9yU3RhdGVtZW50KCdpbicsIHN0bXQsIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKTtcbiAgICAgICAgfSxcblxuICAgICAgICBGb3JPZlN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUl0ZXJhdGlvbkZvclN0YXRlbWVudCgnb2YnLCBzdG10LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0bXQubGFiZWwubmFtZSArICc6JywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBQcm9ncmFtOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCBpLCBpeiwgYm9keUZsYWdzO1xuICAgICAgICAgICAgaXogPSBzdG10LmJvZHkubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0ID0gW3NhZmVDb25jYXRlbmF0aW9uICYmIGl6ID4gMCA/ICdcXG4nIDogJyddO1xuICAgICAgICAgICAgYm9keUZsYWdzID0gU19URlRGO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNhZmVDb25jYXRlbmF0aW9uICYmIGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBiZWZvcmUgdGhlIGZpcnN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LnJhbmdlWzBdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGJldHdlZW4gbGluZXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJiAhc3RtdC5ib2R5W2ldLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaSAtIDFdLnJhbmdlWzFdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keVtpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6ICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2kgKyAxXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGFmdGVyIHRoZSBsYXN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaV0udHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaV0ucmFuZ2VbMV0sIHN0bXQucmFuZ2VbMV0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFzeW5jUHJlZml4KHN0bXQsIHRydWUpLFxuICAgICAgICAgICAgICAgICdmdW5jdGlvbicsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVTdGFyU3VmZml4KHN0bXQpIHx8IG5vRW1wdHlTcGFjZSgpLFxuICAgICAgICAgICAgICAgIHN0bXQuaWQgPyBnZW5lcmF0ZUlkZW50aWZpZXIoc3RtdC5pZCkgOiAnJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KHN0bXQpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoc3RtdC5hcmd1bWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbam9pbihcbiAgICAgICAgICAgICAgICAgICAgJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuYXJndW1lbnQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgICksIHRoaXMuc2VtaWNvbG9uKGZsYWdzKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gWydyZXR1cm4nICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBXaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ3doaWxlJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgV2l0aFN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ3dpdGgnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQub2JqZWN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgbWVyZ2UoQ29kZUdlbmVyYXRvci5wcm90b3R5cGUsIENvZGVHZW5lcmF0b3IuU3RhdGVtZW50KTtcblxuICAgIC8vIEV4cHJlc3Npb25zLlxuXG4gICAgQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uID0ge1xuXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpejtcbiAgICAgICAgICAgIGlmIChQcmVjZWRlbmNlLlNlcXVlbmNlIDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfQUxMT1dfSU47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5leHByZXNzaW9ucy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5leHByZXNzaW9uc1tpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncykpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVBc3NpZ25tZW50KGV4cHIubGVmdCwgZXhwci5yaWdodCwgZXhwci5vcGVyYXRvciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUodGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByKSwgUHJlY2VkZW5jZS5BcnJvd0Z1bmN0aW9uLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgaWYgKFByZWNlZGVuY2UuQ29uZGl0aW9uYWwgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnRlc3QsIFByZWNlZGVuY2UuTG9naWNhbE9SLCBmbGFncyksXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlICsgJz8nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuY29uc2VxdWVudCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncyksXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlICsgJzonICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYWx0ZXJuYXRlLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgUHJlY2VkZW5jZS5Db25kaXRpb25hbCxcbiAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkJpbmFyeUV4cHJlc3Npb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEJpbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgY3VycmVudFByZWNlZGVuY2UsIGZyYWdtZW50LCBsZWZ0U291cmNlO1xuICAgICAgICAgICAgY3VycmVudFByZWNlZGVuY2UgPSBCaW5hcnlQcmVjZWRlbmNlW2V4cHIub3BlcmF0b3JdO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFByZWNlZGVuY2UgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmxlZnQsIGN1cnJlbnRQcmVjZWRlbmNlLCBmbGFncyk7XG5cbiAgICAgICAgICAgIGxlZnRTb3VyY2UgPSBmcmFnbWVudC50b1N0cmluZygpO1xuXG4gICAgICAgICAgICBpZiAobGVmdFNvdXJjZS5jaGFyQ29kZUF0KGxlZnRTb3VyY2UubGVuZ3RoIC0gMSkgPT09IDB4MkYgLyogLyAqLyAmJiBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShleHByLm9wZXJhdG9yLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW2ZyYWdtZW50LCBub0VtcHR5U3BhY2UoKSwgZXhwci5vcGVyYXRvcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oZnJhZ21lbnQsIGV4cHIub3BlcmF0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucmlnaHQsIGN1cnJlbnRQcmVjZWRlbmNlICsgMSwgZmxhZ3MpO1xuXG4gICAgICAgICAgICBpZiAoZXhwci5vcGVyYXRvciA9PT0gJy8nICYmIGZyYWdtZW50LnRvU3RyaW5nKCkuY2hhckF0KDApID09PSAnLycgfHxcbiAgICAgICAgICAgIGV4cHIub3BlcmF0b3Iuc2xpY2UoLTEpID09PSAnPCcgJiYgZnJhZ21lbnQudG9TdHJpbmcoKS5zbGljZSgwLCAzKSA9PT0gJyEtLScpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiAnLycgY29uY2F0cyB3aXRoICcvJyBvciBgPGAgY29uY2F0cyB3aXRoIGAhLS1gLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBjb21tZW50IHN0YXJ0XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIub3BlcmF0b3IgPT09ICdpbicgJiYgIShmbGFncyAmIEZfQUxMT1dfSU4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnKCcsIHJlc3VsdCwgJyknXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBjdXJyZW50UHJlY2VkZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXo7XG4gICAgICAgICAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FVyBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgcmVzdWx0ID0gW3RoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuY2FsbGVlLCBQcmVjZWRlbmNlLkNhbGwsIEVfVFRGKV07XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKCcpO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByWydhcmd1bWVudHMnXS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwclsnYXJndW1lbnRzJ11baV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcblxuICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0FMTE9XX0NBTEwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnKCcsIHJlc3VsdCwgJyknXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLkNhbGwsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE5ld0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgbGVuZ3RoLCBpLCBpeiwgaXRlbUZsYWdzO1xuICAgICAgICAgICAgbGVuZ3RoID0gZXhwclsnYXJndW1lbnRzJ10ubGVuZ3RoO1xuXG4gICAgICAgICAgICAvLyBGX0FMTE9XX0NBTEwgYmVjb21lcyBmYWxzZS5cbiAgICAgICAgICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXIG1heSBiZWNvbWUgZmFsc2UuXG4gICAgICAgICAgICBpdGVtRmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX1VOUEFSQVRIX05FVyAmJiAhcGFyZW50aGVzZXMgJiYgbGVuZ3RoID09PSAwKSA/IEVfVEZUIDogRV9URkY7XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oXG4gICAgICAgICAgICAgICAgJ25ldycsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5jYWxsZWUsIFByZWNlZGVuY2UuTmV3LCBpdGVtRmxhZ3MpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfQUxMT1dfVU5QQVJBVEhfTkVXKSB8fCBwYXJlbnRoZXNlcyB8fCBsZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJygnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwclsnYXJndW1lbnRzJ11baV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5OZXcsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG5cbiAgICAgICAgICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXIGJlY29tZXMgZmFsc2UuXG4gICAgICAgICAgICByZXN1bHQgPSBbdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5vYmplY3QsIFByZWNlZGVuY2UuQ2FsbCwgKGZsYWdzICYgRl9BTExPV19DQUxMKSA/IEVfVFRGIDogRV9URkYpXTtcblxuICAgICAgICAgICAgaWYgKGV4cHIuY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnWycpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucHJvcGVydHksIFByZWNlZGVuY2UuU2VxdWVuY2UsIGZsYWdzICYgRl9BTExPV19DQUxMID8gRV9UVFQgOiBFX1RGVCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCddJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChleHByLm9iamVjdC50eXBlID09PSBTeW50YXguTGl0ZXJhbCAmJiB0eXBlb2YgZXhwci5vYmplY3QudmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhbGwgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAxLiBObyBmbG9hdGluZyBwb2ludFxuICAgICAgICAgICAgICAgICAgICAvLyAgIDIuIERvbid0IGhhdmUgZXhwb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIC8vICAgMy4gVGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgZGVjaW1hbCBkaWdpdFxuICAgICAgICAgICAgICAgICAgICAvLyAgIDQuIE5vdCBoZXhhZGVjaW1hbCBPUiBvY3RhbCBudW1iZXIgbGl0ZXJhbFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgYWRkIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC5pbmRleE9mKCcuJykgPCAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIS9bZUV4WF0vLnRlc3QoZnJhZ21lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN1dGlscy5jb2RlLmlzRGVjaW1hbERpZ2l0KGZyYWdtZW50LmNoYXJDb2RlQXQoZnJhZ21lbnQubGVuZ3RoIC0gMSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShmcmFnbWVudC5sZW5ndGggPj0gMiAmJiBmcmFnbWVudC5jaGFyQ29kZUF0KDApID09PSA0OCkgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLicpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlSWRlbnRpZmllcihleHByLnByb3BlcnR5KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLk1lbWJlciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTWV0YVByb3BlcnR5OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVvZiBleHByLm1ldGEgPT09IFwic3RyaW5nXCIgPyBleHByLm1ldGEgOiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5tZXRhKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnLicpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZW9mIGV4cHIucHJvcGVydHkgPT09IFwic3RyaW5nXCIgPyBleHByLnByb3BlcnR5IDogZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIucHJvcGVydHkpKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLk1lbWJlciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCByaWdodENoYXJDb2RlLCBsZWZ0U291cmNlLCBsZWZ0Q2hhckNvZGU7XG4gICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuVW5hcnksIEVfVFRUKTtcblxuICAgICAgICAgICAgaWYgKHNwYWNlID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oZXhwci5vcGVyYXRvciwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbZXhwci5vcGVyYXRvcl07XG4gICAgICAgICAgICAgICAgaWYgKGV4cHIub3BlcmF0b3IubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUsIHZvaWQsIHR5cGVvZlxuICAgICAgICAgICAgICAgICAgICAvLyBnZXQgYHR5cGVvZiBbXWAsIG5vdCBgdHlwZW9mW11gXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCBpbnNlcnRpbmcgc3BhY2VzIGJldHdlZW4gb3BlcmF0b3IgYW5kIGFyZ3VtZW50IGlmIGl0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgICAgICAgICAgICAgIC8vIGxpa2UsIGAhY29uZGBcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNvdXJjZSA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0Q2hhckNvZGUgPSBsZWZ0U291cmNlLmNoYXJDb2RlQXQobGVmdFNvdXJjZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRDaGFyQ29kZSA9IGZyYWdtZW50LnRvU3RyaW5nKCkuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKChsZWZ0Q2hhckNvZGUgPT09IDB4MkIgIC8qICsgKi8gfHwgbGVmdENoYXJDb2RlID09PSAweDJEICAvKiAtICovKSAmJiBsZWZ0Q2hhckNvZGUgPT09IHJpZ2h0Q2hhckNvZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGxlZnRDaGFyQ29kZSkgJiYgZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUocmlnaHRDaGFyQ29kZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5VbmFyeSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgWWllbGRFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICBpZiAoZXhwci5kZWxlZ2F0ZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9ICd5aWVsZConO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAneWllbGQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIuYXJndW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuWWllbGQsIEVfVFRUKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5ZaWVsZCwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXdhaXRFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBqb2luKFxuICAgICAgICAgICAgICAgIGV4cHIuYWxsID8gJ2F3YWl0KicgOiAnYXdhaXQnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuQXdhaXQsIEVfVFRUKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLkF3YWl0LCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChleHByLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLlVuYXJ5LCBFX1RUVClcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgUHJlY2VkZW5jZS5VbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5Qb3N0Zml4LCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgIGV4cHIub3BlcmF0b3JcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFByZWNlZGVuY2UuUG9zdGZpeCxcbiAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXN5bmNQcmVmaXgoZXhwciwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChleHByLmlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVTdGFyU3VmZml4KGV4cHIpIHx8IG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5pZCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZVN0YXJTdWZmaXgoZXhwcikgfHwgc3BhY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycmF5UGF0dGVybjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5BcnJheUV4cHJlc3Npb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MsIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzLCBpc1BhdHRlcm4pIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIG11bHRpbGluZSwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoIWV4cHIuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbXSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBpc1BhdHRlcm4gPyBmYWxzZSA6IGV4cHIuZWxlbWVudHMubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIHJlc3VsdCA9IFsnWycsIG11bHRpbGluZSA/IG5ld2xpbmUgOiAnJ107XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleHByLmVsZW1lbnRzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobXVsdGlsaW5lID8gaW5kZW50IDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5lbGVtZW50c1tpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyAobXVsdGlsaW5lID8gbmV3bGluZSA6IHNwYWNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmUgJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBiYXNlIDogJycpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ10nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgUmVzdEVsZW1lbnQ6IGZ1bmN0aW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJy4uLicgKyB0aGlzLmdlbmVyYXRlUGF0dGVybihleHByLmFyZ3VtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbJ2NsYXNzJ107XG4gICAgICAgICAgICBpZiAoZXhwci5pZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmlkLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIuc3VwZXJDbGFzcykge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbignZXh0ZW5kcycsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuc3VwZXJDbGFzcywgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KGV4cHIuYm9keSwgU19URkZUKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG4gICAgICAgICAgICBpZiAoZXhwclsnc3RhdGljJ10pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ3N0YXRpYycgKyBzcGFjZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIua2luZCA9PT0gJ2dldCcgfHwgZXhwci5raW5kID09PSAnc2V0Jykge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gW1xuICAgICAgICAgICAgICAgICAgICBqb2luKGV4cHIua2luZCwgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVNZXRob2RQcmVmaXgoZXhwciksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgUHJvcGVydHk6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgaWYgKGV4cHIua2luZCA9PT0gJ2dldCcgfHwgZXhwci5raW5kID09PSAnc2V0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIGV4cHIua2luZCwgbm9FbXB0eVNwYWNlKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5zaG9ydGhhbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhwci52YWx1ZS50eXBlID09PSBcIkFzc2lnbm1lbnRQYXR0ZXJuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQXNzaWdubWVudFBhdHRlcm4oZXhwci52YWx1ZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIubWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVNZXRob2RQcmVmaXgoZXhwciksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgJzonICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci52YWx1ZSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVClcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgbXVsdGlsaW5lLCByZXN1bHQsIGZyYWdtZW50LCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKCFleHByLnByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd7fSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBleHByLnByb3BlcnRpZXMubGVuZ3RoID4gMTtcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnRpZXNbMF0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIW11bHRpbGluZSkge1xuICAgICAgICAgICAgICAgIC8vIGlzc3VlcyA0XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IHRyYW5zZm9ybSBmcm9tXG4gICAgICAgICAgICAgICAgLy8gICBkZWphdnUuQ2xhc3MuZGVjbGFyZSh7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgbWV0aG9kMjogZnVuY3Rpb24gKCkge31cbiAgICAgICAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHRvXG4gICAgICAgICAgICAgICAgLy8gICBkZWphdnUuQ2xhc3MuZGVjbGFyZSh7bWV0aG9kMjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIH19KTtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0xpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbICd7Jywgc3BhY2UsIGZyYWdtZW50LCBzcGFjZSwgJ30nIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWyAneycsIG5ld2xpbmUsIGluZGVudCwgZnJhZ21lbnQgXTtcblxuICAgICAgICAgICAgICAgIGlmIChtdWx0aWxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGl6ID0gZXhwci5wcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnRpZXNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ30nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXNzaWdubWVudFBhdHRlcm46IGZ1bmN0aW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUFzc2lnbm1lbnQoZXhwci5sZWZ0LCBleHByLnJpZ2h0LCAnPScsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBPYmplY3RQYXR0ZXJuOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBtdWx0aWxpbmUsIHByb3BlcnR5LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghZXhwci5wcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAne30nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChleHByLnByb3BlcnRpZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBleHByLnByb3BlcnRpZXNbMF07XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnZhbHVlLnR5cGUgIT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpbGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnNob3J0aGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gWyd7JywgbXVsdGlsaW5lID8gbmV3bGluZSA6ICcnIF07XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG11bHRpbGluZSA/IGluZGVudCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5wcm9wZXJ0aWVzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgKG11bHRpbGluZSA/IG5ld2xpbmUgOiBzcGFjZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmUgJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBiYXNlIDogJycpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ30nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGhpc0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICd0aGlzJztcbiAgICAgICAgfSxcblxuICAgICAgICBTdXBlcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3N1cGVyJztcbiAgICAgICAgfSxcblxuICAgICAgICBJZGVudGlmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0RGVmYXVsdFNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIuaWQgfHwgZXhwci5sb2NhbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbJyonXTtcbiAgICAgICAgICAgIHZhciBpZCA9IGV4cHIuaWQgfHwgZXhwci5sb2NhbDtcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ2FzJyArIG5vRW1wdHlTcGFjZSgpICsgZ2VuZXJhdGVJZGVudGlmaWVyKGlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEltcG9ydFNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgaW1wb3J0ZWQgPSBleHByLmltcG9ydGVkO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgaW1wb3J0ZWQubmFtZSBdO1xuICAgICAgICAgICAgdmFyIGxvY2FsID0gZXhwci5sb2NhbDtcbiAgICAgICAgICAgIGlmIChsb2NhbCAmJiBsb2NhbC5uYW1lICE9PSBpbXBvcnRlZC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkgKyAnYXMnICsgbm9FbXB0eVNwYWNlKCkgKyBnZW5lcmF0ZUlkZW50aWZpZXIobG9jYWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbCA9IGV4cHIubG9jYWw7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyBsb2NhbC5uYW1lIF07XG4gICAgICAgICAgICB2YXIgZXhwb3J0ZWQgPSBleHByLmV4cG9ydGVkO1xuICAgICAgICAgICAgaWYgKGV4cG9ydGVkICYmIGV4cG9ydGVkLm5hbWUgIT09IGxvY2FsLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSArICdhcycgKyBub0VtcHR5U3BhY2UoKSArIGdlbmVyYXRlSWRlbnRpZmllcihleHBvcnRlZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBMaXRlcmFsOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByYXc7XG4gICAgICAgICAgICBpZiAoZXhwci5oYXNPd25Qcm9wZXJ0eSgncmF3JykgJiYgcGFyc2UgJiYgZXh0cmEucmF3KSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gcGFyc2UoZXhwci5yYXcpLmJvZHlbMF0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhdy50eXBlID09PSBTeW50YXguTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhdy52YWx1ZSA9PT0gZXhwci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHByLnJhdztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHVzZSByYXcgcHJvcGVydHlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBlc2NhcGVTdHJpbmcoZXhwci52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwci52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVOdW1iZXIoZXhwci52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwci52YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4cHIudmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5yZWdleCkge1xuICAgICAgICAgICAgICByZXR1cm4gJy8nICsgZXhwci5yZWdleC5wYXR0ZXJuICsgJy8nICsgZXhwci5yZWdleC5mbGFncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVJlZ0V4cChleHByLnZhbHVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBHZW5lcmF0b3JFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkNvbXByZWhlbnNpb25FeHByZXNzaW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBHZW5lcmF0b3JFeHByZXNzaW9uIHNob3VsZCBiZSBwYXJlbnRoZXNpemVkIHdpdGggKC4uLiksIENvbXByZWhlbnNpb25FeHByZXNzaW9uIHdpdGggWy4uLl1cbiAgICAgICAgICAgIC8vIER1ZSB0byBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM0NjggcG9zaXRpb24gb2YgZXhwci5ib2R5IGNhbiBkaWZmZXIgaW4gU3BpZGVybW9ua2V5IGFuZCBFUzZcblxuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIGZyYWdtZW50LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHJlc3VsdCA9IChleHByLnR5cGUgPT09IFN5bnRheC5HZW5lcmF0b3JFeHByZXNzaW9uKSA/IFsnKCddIDogWydbJ107XG5cbiAgICAgICAgICAgIGlmIChleHRyYS5tb3ouY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5ib2R5LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIuYmxvY2tzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5ibG9ja3NbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCB8fCBleHRyYS5tb3ouY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ2lmJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZmlsdGVyLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFsgJygnLCBmcmFnbWVudCwgJyknIF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWV4dHJhLm1vei5jb21wcmVoZW5zaW9uRXhwcmVzc2lvblN0YXJ0c1dpdGhBc3NpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmJvZHksIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goKGV4cHIudHlwZSA9PT0gU3ludGF4LkdlbmVyYXRvckV4cHJlc3Npb24pID8gJyknIDogJ10nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkJsb2NrOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBmcmFnbWVudDtcbiAgICAgICAgICAgIGlmIChleHByLmxlZnQudHlwZSA9PT0gU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5sZWZ0LmtpbmQsIG5vRW1wdHlTcGFjZSgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KGV4cHIubGVmdC5kZWNsYXJhdGlvbnNbMF0sIFNfRkZGRilcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIubGVmdCwgUHJlY2VkZW5jZS5DYWxsLCBFX1RUVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbihmcmFnbWVudCwgZXhwci5vZiA/ICdvZicgOiAnaW4nKTtcbiAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbihmcmFnbWVudCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5yaWdodCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcblxuICAgICAgICAgICAgcmV0dXJuIFsgJ2ZvcicgKyBzcGFjZSArICcoJywgZnJhZ21lbnQsICcpJyBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAnLi4uJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGl0ZW1GbGFncyA9IEVfVFRGO1xuICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0FMTE9XX0NBTEwpKSB7XG4gICAgICAgICAgICAgICAgaXRlbUZsYWdzID0gRV9URkY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIudGFnLCBQcmVjZWRlbmNlLkNhbGwsIGl0ZW1GbGFncyksXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5xdWFzaSwgUHJlY2VkZW5jZS5QcmltYXJ5LCBFX0ZGVClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5UYWdnZWRUZW1wbGF0ZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIERvbid0IHVzZSBcImNvb2tlZFwiLiBTaW5jZSB0YWdnZWQgdGVtcGxhdGUgY2FuIHVzZSByYXcgdGVtcGxhdGVcbiAgICAgICAgICAgIC8vIHJlcHJlc2VudGF0aW9uLiBTbyBpZiB3ZSBkbyBzbywgaXQgYnJlYWtzIHRoZSBzY3JpcHQgc2VtYW50aWNzLlxuICAgICAgICAgICAgcmV0dXJuIGV4cHIudmFsdWUucmF3O1xuICAgICAgICB9LFxuXG4gICAgICAgIFRlbXBsYXRlTGl0ZXJhbDogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpejtcbiAgICAgICAgICAgIHJlc3VsdCA9IFsgJ2AnIF07XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucXVhc2lzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnF1YXNpc1tpXSwgUHJlY2VkZW5jZS5QcmltYXJ5LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCckeycgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZXhwcmVzc2lvbnNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ30nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnYCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBNb2R1bGVTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBtZXJnZShDb2RlR2VuZXJhdG9yLnByb3RvdHlwZSwgQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uKTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICB2YXIgcmVzdWx0LCB0eXBlO1xuXG4gICAgICAgIHR5cGUgPSBleHByLnR5cGUgfHwgU3ludGF4LlByb3BlcnR5O1xuXG4gICAgICAgIGlmIChleHRyYS52ZXJiYXRpbSAmJiBleHByLmhhc093blByb3BlcnR5KGV4dHJhLnZlcmJhdGltKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVmVyYmF0aW0oZXhwciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgPSB0aGlzW3R5cGVdKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcblxuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhZGRDb21tZW50cyhleHByLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCwgZXhwcik7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlU3RhdGVtZW50ID0gZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgICBmcmFnbWVudDtcblxuICAgICAgICByZXN1bHQgPSB0aGlzW3N0bXQudHlwZV0oc3RtdCwgZmxhZ3MpO1xuXG4gICAgICAgIC8vIEF0dGFjaCBjb21tZW50c1xuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhZGRDb21tZW50cyhzdG10LCByZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJhZ21lbnQgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LlByb2dyYW0gJiYgIXNhZmVDb25jYXRlbmF0aW9uICYmIG5ld2xpbmUgPT09ICcnICYmICBmcmFnbWVudC5jaGFyQXQoZnJhZ21lbnQubGVuZ3RoIC0gMSkgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzb3VyY2VNYXAgPyB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkucmVwbGFjZVJpZ2h0KC9cXHMrJC8sICcnKSA6IGZyYWdtZW50LnJlcGxhY2UoL1xccyskLywgJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0LCBzdG10KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVJbnRlcm5hbChub2RlKSB7XG4gICAgICAgIHZhciBjb2RlZ2VuO1xuXG4gICAgICAgIGNvZGVnZW4gPSBuZXcgQ29kZUdlbmVyYXRvcigpO1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2RlZ2VuLmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIFNfVEZGRik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29kZWdlbi5nZW5lcmF0ZUV4cHJlc3Npb24obm9kZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdHlwZTogJyArIG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGUobm9kZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpLCByZXN1bHQsIHBhaXI7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gT2Jzb2xldGUgb3B0aW9uc1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgYG9wdGlvbnMuaW5kZW50YFxuICAgICAgICAgICAgLy8gICBgb3B0aW9ucy5iYXNlYFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlbSwgd2UgY2FuIHVzZSBgb3B0aW9uLmZvcm1hdC5pbmRlbnRgLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmluZGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucy5mb3JtYXQuaW5kZW50LnN0eWxlID0gb3B0aW9ucy5pbmRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYmFzZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucy5mb3JtYXQuaW5kZW50LmJhc2UgPSBvcHRpb25zLmJhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zID0gdXBkYXRlRGVlcGx5KGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGluZGVudCA9IG9wdGlvbnMuZm9ybWF0LmluZGVudC5zdHlsZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5iYXNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBvcHRpb25zLmJhc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBzdHJpbmdSZXBlYXQoaW5kZW50LCBvcHRpb25zLmZvcm1hdC5pbmRlbnQuYmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgICAgICAgICBpbmRlbnQgPSBvcHRpb25zLmZvcm1hdC5pbmRlbnQuc3R5bGU7XG4gICAgICAgICAgICBiYXNlID0gc3RyaW5nUmVwZWF0KGluZGVudCwgb3B0aW9ucy5mb3JtYXQuaW5kZW50LmJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIGpzb24gPSBvcHRpb25zLmZvcm1hdC5qc29uO1xuICAgICAgICByZW51bWJlciA9IG9wdGlvbnMuZm9ybWF0LnJlbnVtYmVyO1xuICAgICAgICBoZXhhZGVjaW1hbCA9IGpzb24gPyBmYWxzZSA6IG9wdGlvbnMuZm9ybWF0LmhleGFkZWNpbWFsO1xuICAgICAgICBxdW90ZXMgPSBqc29uID8gJ2RvdWJsZScgOiBvcHRpb25zLmZvcm1hdC5xdW90ZXM7XG4gICAgICAgIGVzY2FwZWxlc3MgPSBvcHRpb25zLmZvcm1hdC5lc2NhcGVsZXNzO1xuICAgICAgICBuZXdsaW5lID0gb3B0aW9ucy5mb3JtYXQubmV3bGluZTtcbiAgICAgICAgc3BhY2UgPSBvcHRpb25zLmZvcm1hdC5zcGFjZTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0LmNvbXBhY3QpIHtcbiAgICAgICAgICAgIG5ld2xpbmUgPSBzcGFjZSA9IGluZGVudCA9IGJhc2UgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnRoZXNlcyA9IG9wdGlvbnMuZm9ybWF0LnBhcmVudGhlc2VzO1xuICAgICAgICBzZW1pY29sb25zID0gb3B0aW9ucy5mb3JtYXQuc2VtaWNvbG9ucztcbiAgICAgICAgc2FmZUNvbmNhdGVuYXRpb24gPSBvcHRpb25zLmZvcm1hdC5zYWZlQ29uY2F0ZW5hdGlvbjtcbiAgICAgICAgZGlyZWN0aXZlID0gb3B0aW9ucy5kaXJlY3RpdmU7XG4gICAgICAgIHBhcnNlID0ganNvbiA/IG51bGwgOiBvcHRpb25zLnBhcnNlO1xuICAgICAgICBzb3VyY2VNYXAgPSBvcHRpb25zLnNvdXJjZU1hcDtcbiAgICAgICAgc291cmNlQ29kZSA9IG9wdGlvbnMuc291cmNlQ29kZTtcbiAgICAgICAgcHJlc2VydmVCbGFua0xpbmVzID0gb3B0aW9ucy5mb3JtYXQucHJlc2VydmVCbGFua0xpbmVzICYmIHNvdXJjZUNvZGUgIT09IG51bGw7XG4gICAgICAgIGV4dHJhID0gb3B0aW9ucztcblxuICAgICAgICBpZiAoc291cmNlTWFwKSB7XG4gICAgICAgICAgICBpZiAoIWV4cG9ydHMuYnJvd3Nlcikge1xuICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSBlbnZpcm9ubWVudCBpcyBub2RlLmpzXG4gICAgICAgICAgICAgICAgLy8gQW5kIHByZXZlbnQgZnJvbSBpbmNsdWRpbmcgc291cmNlLW1hcCBieSBicm93c2VyaWZ5XG4gICAgICAgICAgICAgICAgU291cmNlTm9kZSA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKS5Tb3VyY2VOb2RlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBTb3VyY2VOb2RlID0gZ2xvYmFsLnNvdXJjZU1hcC5Tb3VyY2VOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gZ2VuZXJhdGVJbnRlcm5hbChub2RlKTtcblxuICAgICAgICBpZiAoIXNvdXJjZU1hcCkge1xuICAgICAgICAgICAgcGFpciA9IHtjb2RlOiByZXN1bHQudG9TdHJpbmcoKSwgbWFwOiBudWxsfTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZU1hcFdpdGhDb2RlID8gcGFpciA6IHBhaXIuY29kZTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcGFpciA9IHJlc3VsdC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoe1xuICAgICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxuICAgICAgICAgICAgc291cmNlUm9vdDogb3B0aW9ucy5zb3VyY2VNYXBSb290XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNvdXJjZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIHBhaXIubWFwLnNldFNvdXJjZUNvbnRlbnQob3B0aW9ucy5zb3VyY2VNYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc291cmNlQ29udGVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VNYXBXaXRoQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhaXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFpci5tYXAudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBGT1JNQVRfTUlOSUZZID0ge1xuICAgICAgICBpbmRlbnQ6IHtcbiAgICAgICAgICAgIHN0eWxlOiAnJyxcbiAgICAgICAgICAgIGJhc2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAgcmVudW1iZXI6IHRydWUsXG4gICAgICAgIGhleGFkZWNpbWFsOiB0cnVlLFxuICAgICAgICBxdW90ZXM6ICdhdXRvJyxcbiAgICAgICAgZXNjYXBlbGVzczogdHJ1ZSxcbiAgICAgICAgY29tcGFjdDogdHJ1ZSxcbiAgICAgICAgcGFyZW50aGVzZXM6IGZhbHNlLFxuICAgICAgICBzZW1pY29sb25zOiBmYWxzZVxuICAgIH07XG5cbiAgICBGT1JNQVRfREVGQVVMVFMgPSBnZXREZWZhdWx0T3B0aW9ucygpLmZvcm1hdDtcblxuICAgIGV4cG9ydHMudmVyc2lvbiA9IHJlcXVpcmUoJy4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbiAgICBleHBvcnRzLmdlbmVyYXRlID0gZ2VuZXJhdGU7XG4gICAgZXhwb3J0cy5hdHRhY2hDb21tZW50cyA9IGVzdHJhdmVyc2UuYXR0YWNoQ29tbWVudHM7XG4gICAgZXhwb3J0cy5QcmVjZWRlbmNlID0gdXBkYXRlRGVlcGx5KHt9LCBQcmVjZWRlbmNlKTtcbiAgICBleHBvcnRzLmJyb3dzZXIgPSBmYWxzZTtcbiAgICBleHBvcnRzLkZPUk1BVF9NSU5JRlkgPSBGT1JNQVRfTUlOSUZZO1xuICAgIGV4cG9ydHMuRk9STUFUX0RFRkFVTFRTID0gRk9STUFUX0RFRkFVTFRTO1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2Zyb21cIjogXCJlc2NvZGVnZW5AXjEuOC4xXCIsXG4gIFwiX2lkXCI6IFwiZXNjb2RlZ2VuQDEuMTEuMFwiLFxuICBcIl9pbkJ1bmRsZVwiOiBmYWxzZSxcbiAgXCJfaW50ZWdyaXR5XCI6IFwic2hhNTEyLUllTVY0NVJlaXhIUzUzSy9PbWZLQUl6dE4vaWdESHpUSlVoWk0zazFqTWhJWldqazQ1U013QXRCc0VYaUpwM3ZTUG1UY3U2Q1huN21EdkZIUk42NmZ3PT1cIixcbiAgXCJfbG9jYXRpb25cIjogXCIvc3RhdGljLWV2YWwvZXNjb2RlZ2VuXCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiLFxuICAgIFwicmVnaXN0cnlcIjogdHJ1ZSxcbiAgICBcInJhd1wiOiBcImVzY29kZWdlbkBeMS44LjFcIixcbiAgICBcIm5hbWVcIjogXCJlc2NvZGVnZW5cIixcbiAgICBcImVzY2FwZWROYW1lXCI6IFwiZXNjb2RlZ2VuXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjEuOC4xXCIsXG4gICAgXCJzYXZlU3BlY1wiOiBudWxsLFxuICAgIFwiZmV0Y2hTcGVjXCI6IFwiXjEuOC4xXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvc3RhdGljLWV2YWxcIlxuICBdLFxuICBcIl9yZXNvbHZlZFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY29kZWdlbi8tL2VzY29kZWdlbi0xLjExLjAudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcImIyN2E5Mzg5NDgxZDViZmQ1YmVjNzZmN2JiMWViM2Y4ZjQ1NTY1ODlcIixcbiAgXCJfc3BlY1wiOiBcImVzY29kZWdlbkBeMS44LjFcIixcbiAgXCJfd2hlcmVcIjogXCIvVXNlcnMvamN3aGl0bG9jay9kZXZlbG9wbWVudC9zd2F5L25vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbFwiLFxuICBcImJpblwiOiB7XG4gICAgXCJlc2dlbmVyYXRlXCI6IFwiLi9iaW4vZXNnZW5lcmF0ZS5qc1wiLFxuICAgIFwiZXNjb2RlZ2VuXCI6IFwiLi9iaW4vZXNjb2RlZ2VuLmpzXCJcbiAgfSxcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlbi9pc3N1ZXNcIlxuICB9LFxuICBcImJ1bmRsZURlcGVuZGVuY2llc1wiOiBmYWxzZSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiZXNwcmltYVwiOiBcIl4zLjEuM1wiLFxuICAgIFwiZXN0cmF2ZXJzZVwiOiBcIl40LjIuMFwiLFxuICAgIFwiZXN1dGlsc1wiOiBcIl4yLjAuMlwiLFxuICAgIFwib3B0aW9uYXRvclwiOiBcIl4wLjguMVwiLFxuICAgIFwic291cmNlLW1hcFwiOiBcIn4wLjYuMVwiXG4gIH0sXG4gIFwiZGVwcmVjYXRlZFwiOiBmYWxzZSxcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkVDTUFTY3JpcHQgY29kZSBnZW5lcmF0b3JcIixcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWNvcm5cIjogXCJeNC4wLjRcIixcbiAgICBcImJsdWViaXJkXCI6IFwiXjMuNC43XCIsXG4gICAgXCJib3dlci1yZWdpc3RyeS1jbGllbnRcIjogXCJeMS4wLjBcIixcbiAgICBcImNoYWlcIjogXCJeMy41LjBcIixcbiAgICBcImNvbW1vbmpzLWV2ZXJ5d2hlcmVcIjogXCJeMC45LjdcIixcbiAgICBcImd1bHBcIjogXCJeMy44LjEwXCIsXG4gICAgXCJndWxwLWVzbGludFwiOiBcIl4zLjAuMVwiLFxuICAgIFwiZ3VscC1tb2NoYVwiOiBcIl4zLjAuMVwiLFxuICAgIFwic2VtdmVyXCI6IFwiXjUuMS4wXCJcbiAgfSxcbiAgXCJlbmdpbmVzXCI6IHtcbiAgICBcIm5vZGVcIjogXCI+PTQuMFwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiTElDRU5TRS5CU0RcIixcbiAgICBcIlJFQURNRS5tZFwiLFxuICAgIFwiYmluXCIsXG4gICAgXCJlc2NvZGVnZW4uanNcIixcbiAgICBcInBhY2thZ2UuanNvblwiXG4gIF0sXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlblwiLFxuICBcImxpY2Vuc2VcIjogXCJCU0QtMi1DbGF1c2VcIixcbiAgXCJtYWluXCI6IFwiZXNjb2RlZ2VuLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIll1c3VrZSBTdXp1a2lcIixcbiAgICAgIFwiZW1haWxcIjogXCJ1dGF0YW5lLnRlYUBnbWFpbC5jb21cIixcbiAgICAgIFwidXJsXCI6IFwiaHR0cDovL2dpdGh1Yi5jb20vQ29uc3RlbGxhdGlvblwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlc2NvZGVnZW5cIixcbiAgXCJvcHRpb25hbERlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJzb3VyY2UtbWFwXCI6IFwifjAuNi4xXCJcbiAgfSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlbi5naXRcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJjanNpZnkgLWEgcGF0aDogdG9vbHMvZW50cnktcG9pbnQuanMgPiBlc2NvZGVnZW4uYnJvd3Nlci5qc1wiLFxuICAgIFwiYnVpbGQtbWluXCI6IFwiY2pzaWZ5IC1tYSBwYXRoOiB0b29scy9lbnRyeS1wb2ludC5qcyA+IGVzY29kZWdlbi5icm93c2VyLm1pbi5qc1wiLFxuICAgIFwibGludFwiOiBcImd1bHAgbGludFwiLFxuICAgIFwicmVsZWFzZVwiOiBcIm5vZGUgdG9vbHMvcmVsZWFzZS5qc1wiLFxuICAgIFwidGVzdFwiOiBcImd1bHAgdHJhdmlzXCIsXG4gICAgXCJ1bml0LXRlc3RcIjogXCJndWxwIHRlc3RcIlxuICB9LFxuICBcInZlcnNpb25cIjogXCIxLjExLjBcIlxufVxuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cbi8qanNsaW50IHZhcnM6ZmFsc2UsIGJpdHdpc2U6dHJ1ZSovXG4vKmpzaGludCBpbmRlbnQ6NCovXG4vKmdsb2JhbCBleHBvcnRzOnRydWUqL1xuKGZ1bmN0aW9uIGNsb25lKGV4cG9ydHMpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgU3ludGF4LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBWaXNpdG9yT3B0aW9uLFxuICAgICAgICBWaXNpdG9yS2V5cyxcbiAgICAgICAgb2JqZWN0Q3JlYXRlLFxuICAgICAgICBvYmplY3RLZXlzLFxuICAgICAgICBCUkVBSyxcbiAgICAgICAgU0tJUCxcbiAgICAgICAgUkVNT1ZFO1xuXG4gICAgZnVuY3Rpb24gaWdub3JlSlNIaW50RXJyb3IoKSB7IH1cblxuICAgIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICAgIGlmICghaXNBcnJheSkge1xuICAgICAgICBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnJheSkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVlcENvcHkob2JqKSB7XG4gICAgICAgIHZhciByZXQgPSB7fSwga2V5LCB2YWw7XG4gICAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXRba2V5XSA9IGRlZXBDb3B5KHZhbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hhbGxvd0NvcHkob2JqKSB7XG4gICAgICAgIHZhciByZXQgPSB7fSwga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldFtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgaWdub3JlSlNIaW50RXJyb3Ioc2hhbGxvd0NvcHkpO1xuXG4gICAgLy8gYmFzZWQgb24gTExWTSBsaWJjKysgdXBwZXJfYm91bmQgLyBsb3dlcl9ib3VuZFxuICAgIC8vIE1JVCBMaWNlbnNlXG5cbiAgICBmdW5jdGlvbiB1cHBlckJvdW5kKGFycmF5LCBmdW5jKSB7XG4gICAgICAgIHZhciBkaWZmLCBsZW4sIGksIGN1cnJlbnQ7XG5cbiAgICAgICAgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgICAgICBpID0gMDtcblxuICAgICAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgICAgICBkaWZmID0gbGVuID4+PiAxO1xuICAgICAgICAgICAgY3VycmVudCA9IGkgKyBkaWZmO1xuICAgICAgICAgICAgaWYgKGZ1bmMoYXJyYXlbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZGlmZjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnQgKyAxO1xuICAgICAgICAgICAgICAgIGxlbiAtPSBkaWZmICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb3dlckJvdW5kKGFycmF5LCBmdW5jKSB7XG4gICAgICAgIHZhciBkaWZmLCBsZW4sIGksIGN1cnJlbnQ7XG5cbiAgICAgICAgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgICAgICBpID0gMDtcblxuICAgICAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgICAgICBkaWZmID0gbGVuID4+PiAxO1xuICAgICAgICAgICAgY3VycmVudCA9IGkgKyBkaWZmO1xuICAgICAgICAgICAgaWYgKGZ1bmMoYXJyYXlbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnQgKyAxO1xuICAgICAgICAgICAgICAgIGxlbiAtPSBkaWZmICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgaWdub3JlSlNIaW50RXJyb3IobG93ZXJCb3VuZCk7XG5cbiAgICBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIEYoKSB7IH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIEYucHJvdG90eXBlID0gbztcbiAgICAgICAgICAgIHJldHVybiBuZXcgRigpO1xuICAgICAgICB9O1xuICAgIH0pKCk7XG5cbiAgICBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgdmFyIGtleXMgPSBbXSwga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKHRvLCBmcm9tKSB7XG4gICAgICAgIHZhciBrZXlzID0gb2JqZWN0S2V5cyhmcm9tKSwga2V5LCBpLCBsZW47XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGtleXMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICB0b1trZXldID0gZnJvbVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICBTeW50YXggPSB7XG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4cHJlc3Npb24nLFxuICAgICAgICBBc3NpZ25tZW50UGF0dGVybjogJ0Fzc2lnbm1lbnRQYXR0ZXJuJyxcbiAgICAgICAgQXJyYXlFeHByZXNzaW9uOiAnQXJyYXlFeHByZXNzaW9uJyxcbiAgICAgICAgQXJyYXlQYXR0ZXJuOiAnQXJyYXlQYXR0ZXJuJyxcbiAgICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246ICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbicsXG4gICAgICAgIEF3YWl0RXhwcmVzc2lvbjogJ0F3YWl0RXhwcmVzc2lvbicsIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBCbG9ja1N0YXRlbWVudDogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogJ0JyZWFrU3RhdGVtZW50JyxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246ICdDYWxsRXhwcmVzc2lvbicsXG4gICAgICAgIENhdGNoQ2xhdXNlOiAnQ2F0Y2hDbGF1c2UnLFxuICAgICAgICBDbGFzc0JvZHk6ICdDbGFzc0JvZHknLFxuICAgICAgICBDbGFzc0RlY2xhcmF0aW9uOiAnQ2xhc3NEZWNsYXJhdGlvbicsXG4gICAgICAgIENsYXNzRXhwcmVzc2lvbjogJ0NsYXNzRXhwcmVzc2lvbicsXG4gICAgICAgIENvbXByZWhlbnNpb25CbG9jazogJ0NvbXByZWhlbnNpb25CbG9jaycsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246ICdDb21wcmVoZW5zaW9uRXhwcmVzc2lvbicsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJyxcbiAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6ICdDb250aW51ZVN0YXRlbWVudCcsXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1lbnQnLFxuICAgICAgICBEaXJlY3RpdmVTdGF0ZW1lbnQ6ICdEaXJlY3RpdmVTdGF0ZW1lbnQnLFxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIEVtcHR5U3RhdGVtZW50OiAnRW1wdHlTdGF0ZW1lbnQnLFxuICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbjogJ0V4cG9ydEFsbERlY2xhcmF0aW9uJyxcbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJyxcbiAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nLFxuICAgICAgICBFeHBvcnRTcGVjaWZpZXI6ICdFeHBvcnRTcGVjaWZpZXInLFxuICAgICAgICBFeHByZXNzaW9uU3RhdGVtZW50OiAnRXhwcmVzc2lvblN0YXRlbWVudCcsXG4gICAgICAgIEZvclN0YXRlbWVudDogJ0ZvclN0YXRlbWVudCcsXG4gICAgICAgIEZvckluU3RhdGVtZW50OiAnRm9ySW5TdGF0ZW1lbnQnLFxuICAgICAgICBGb3JPZlN0YXRlbWVudDogJ0Zvck9mU3RhdGVtZW50JyxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogJ0Z1bmN0aW9uRGVjbGFyYXRpb24nLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246ICdGdW5jdGlvbkV4cHJlc3Npb24nLFxuICAgICAgICBHZW5lcmF0b3JFeHByZXNzaW9uOiAnR2VuZXJhdG9yRXhwcmVzc2lvbicsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgSWRlbnRpZmllcjogJ0lkZW50aWZpZXInLFxuICAgICAgICBJZlN0YXRlbWVudDogJ0lmU3RhdGVtZW50JyxcbiAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246ICdJbXBvcnREZWNsYXJhdGlvbicsXG4gICAgICAgIEltcG9ydERlZmF1bHRTcGVjaWZpZXI6ICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJyxcbiAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJyxcbiAgICAgICAgSW1wb3J0U3BlY2lmaWVyOiAnSW1wb3J0U3BlY2lmaWVyJyxcbiAgICAgICAgTGl0ZXJhbDogJ0xpdGVyYWwnLFxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiAnTGFiZWxlZFN0YXRlbWVudCcsXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLFxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgIE1ldGFQcm9wZXJ0eTogJ01ldGFQcm9wZXJ0eScsXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246ICdNZXRob2REZWZpbml0aW9uJyxcbiAgICAgICAgTW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlU3BlY2lmaWVyJyxcbiAgICAgICAgTmV3RXhwcmVzc2lvbjogJ05ld0V4cHJlc3Npb24nLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiAnT2JqZWN0RXhwcmVzc2lvbicsXG4gICAgICAgIE9iamVjdFBhdHRlcm46ICdPYmplY3RQYXR0ZXJuJyxcbiAgICAgICAgUHJvZ3JhbTogJ1Byb2dyYW0nLFxuICAgICAgICBQcm9wZXJ0eTogJ1Byb3BlcnR5JyxcbiAgICAgICAgUmVzdEVsZW1lbnQ6ICdSZXN0RWxlbWVudCcsXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogJ1JldHVyblN0YXRlbWVudCcsXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogJ1NlcXVlbmNlRXhwcmVzc2lvbicsXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6ICdTcHJlYWRFbGVtZW50JyxcbiAgICAgICAgU3VwZXI6ICdTdXBlcicsXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsXG4gICAgICAgIFN3aXRjaENhc2U6ICdTd2l0Y2hDYXNlJyxcbiAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOiAnVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uJyxcbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiAnVGVtcGxhdGVFbGVtZW50JyxcbiAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiAnVGVtcGxhdGVMaXRlcmFsJyxcbiAgICAgICAgVGhpc0V4cHJlc3Npb246ICdUaGlzRXhwcmVzc2lvbicsXG4gICAgICAgIFRocm93U3RhdGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLFxuICAgICAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0ZW1lbnQnLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246ICdVbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiAnVXBkYXRlRXhwcmVzc2lvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiAnVmFyaWFibGVEZWNsYXJhdG9yJyxcbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6ICdXaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50JyxcbiAgICAgICAgWWllbGRFeHByZXNzaW9uOiAnWWllbGRFeHByZXNzaW9uJ1xuICAgIH07XG5cbiAgICBWaXNpdG9yS2V5cyA9IHtcbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBBc3NpZ25tZW50UGF0dGVybjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogWydlbGVtZW50cyddLFxuICAgICAgICBBcnJheVBhdHRlcm46IFsnZWxlbWVudHMnXSxcbiAgICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IFsncGFyYW1zJywgJ2JvZHknXSxcbiAgICAgICAgQXdhaXRFeHByZXNzaW9uOiBbJ2FyZ3VtZW50J10sIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBCbG9ja1N0YXRlbWVudDogWydib2R5J10sXG4gICAgICAgIEJpbmFyeUV4cHJlc3Npb246IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogWydsYWJlbCddLFxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogWydjYWxsZWUnLCAnYXJndW1lbnRzJ10sXG4gICAgICAgIENhdGNoQ2xhdXNlOiBbJ3BhcmFtJywgJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NCb2R5OiBbJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NEZWNsYXJhdGlvbjogWydpZCcsICdzdXBlckNsYXNzJywgJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NFeHByZXNzaW9uOiBbJ2lkJywgJ3N1cGVyQ2xhc3MnLCAnYm9keSddLFxuICAgICAgICBDb21wcmVoZW5zaW9uQmxvY2s6IFsnbGVmdCcsICdyaWdodCddLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbXByZWhlbnNpb25FeHByZXNzaW9uOiBbJ2Jsb2NrcycsICdmaWx0ZXInLCAnYm9keSddLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogWyd0ZXN0JywgJ2NvbnNlcXVlbnQnLCAnYWx0ZXJuYXRlJ10sXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiBbJ2xhYmVsJ10sXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiBbXSxcbiAgICAgICAgRGlyZWN0aXZlU3RhdGVtZW50OiBbXSxcbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogWydib2R5JywgJ3Rlc3QnXSxcbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6IFtdLFxuICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbjogWydzb3VyY2UnXSxcbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiBbJ2RlY2xhcmF0aW9uJ10sXG4gICAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246IFsnZGVjbGFyYXRpb24nLCAnc3BlY2lmaWVycycsICdzb3VyY2UnXSxcbiAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiBbJ2V4cG9ydGVkJywgJ2xvY2FsJ10sXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IFsnZXhwcmVzc2lvbiddLFxuICAgICAgICBGb3JTdGF0ZW1lbnQ6IFsnaW5pdCcsICd0ZXN0JywgJ3VwZGF0ZScsICdib2R5J10sXG4gICAgICAgIEZvckluU3RhdGVtZW50OiBbJ2xlZnQnLCAncmlnaHQnLCAnYm9keSddLFxuICAgICAgICBGb3JPZlN0YXRlbWVudDogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvZHknXSxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogWydpZCcsICdwYXJhbXMnLCAnYm9keSddLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246IFsnaWQnLCAncGFyYW1zJywgJ2JvZHknXSxcbiAgICAgICAgR2VuZXJhdG9yRXhwcmVzc2lvbjogWydibG9ja3MnLCAnZmlsdGVyJywgJ2JvZHknXSwgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBJZGVudGlmaWVyOiBbXSxcbiAgICAgICAgSWZTdGF0ZW1lbnQ6IFsndGVzdCcsICdjb25zZXF1ZW50JywgJ2FsdGVybmF0ZSddLFxuICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjogWydzcGVjaWZpZXJzJywgJ3NvdXJjZSddLFxuICAgICAgICBJbXBvcnREZWZhdWx0U3BlY2lmaWVyOiBbJ2xvY2FsJ10sXG4gICAgICAgIEltcG9ydE5hbWVzcGFjZVNwZWNpZmllcjogWydsb2NhbCddLFxuICAgICAgICBJbXBvcnRTcGVjaWZpZXI6IFsnaW1wb3J0ZWQnLCAnbG9jYWwnXSxcbiAgICAgICAgTGl0ZXJhbDogW10sXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6IFsnbGFiZWwnLCAnYm9keSddLFxuICAgICAgICBMb2dpY2FsRXhwcmVzc2lvbjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246IFsnb2JqZWN0JywgJ3Byb3BlcnR5J10sXG4gICAgICAgIE1ldGFQcm9wZXJ0eTogWydtZXRhJywgJ3Byb3BlcnR5J10sXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246IFsna2V5JywgJ3ZhbHVlJ10sXG4gICAgICAgIE1vZHVsZVNwZWNpZmllcjogW10sXG4gICAgICAgIE5ld0V4cHJlc3Npb246IFsnY2FsbGVlJywgJ2FyZ3VtZW50cyddLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiBbJ3Byb3BlcnRpZXMnXSxcbiAgICAgICAgT2JqZWN0UGF0dGVybjogWydwcm9wZXJ0aWVzJ10sXG4gICAgICAgIFByb2dyYW06IFsnYm9keSddLFxuICAgICAgICBQcm9wZXJ0eTogWydrZXknLCAndmFsdWUnXSxcbiAgICAgICAgUmVzdEVsZW1lbnQ6IFsgJ2FyZ3VtZW50JyBdLFxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6IFsnYXJndW1lbnQnXSxcbiAgICAgICAgU2VxdWVuY2VFeHByZXNzaW9uOiBbJ2V4cHJlc3Npb25zJ10sXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6IFsnYXJndW1lbnQnXSxcbiAgICAgICAgU3VwZXI6IFtdLFxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6IFsnZGlzY3JpbWluYW50JywgJ2Nhc2VzJ10sXG4gICAgICAgIFN3aXRjaENhc2U6IFsndGVzdCcsICdjb25zZXF1ZW50J10sXG4gICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogWyd0YWcnLCAncXVhc2knXSxcbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiBbXSxcbiAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiBbJ3F1YXNpcycsICdleHByZXNzaW9ucyddLFxuICAgICAgICBUaGlzRXhwcmVzc2lvbjogW10sXG4gICAgICAgIFRocm93U3RhdGVtZW50OiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFRyeVN0YXRlbWVudDogWydibG9jaycsICdoYW5kbGVyJywgJ2ZpbmFsaXplciddLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246IFsnYXJndW1lbnQnXSxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogWydhcmd1bWVudCddLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiBbJ2RlY2xhcmF0aW9ucyddLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6IFsnaWQnLCAnaW5pdCddLFxuICAgICAgICBXaGlsZVN0YXRlbWVudDogWyd0ZXN0JywgJ2JvZHknXSxcbiAgICAgICAgV2l0aFN0YXRlbWVudDogWydvYmplY3QnLCAnYm9keSddLFxuICAgICAgICBZaWVsZEV4cHJlc3Npb246IFsnYXJndW1lbnQnXVxuICAgIH07XG5cbiAgICAvLyB1bmlxdWUgaWRcbiAgICBCUkVBSyA9IHt9O1xuICAgIFNLSVAgPSB7fTtcbiAgICBSRU1PVkUgPSB7fTtcblxuICAgIFZpc2l0b3JPcHRpb24gPSB7XG4gICAgICAgIEJyZWFrOiBCUkVBSyxcbiAgICAgICAgU2tpcDogU0tJUCxcbiAgICAgICAgUmVtb3ZlOiBSRU1PVkVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gUmVmZXJlbmNlKHBhcmVudCwga2V5KSB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICB9XG5cbiAgICBSZWZlcmVuY2UucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRbdGhpcy5rZXldID0gbm9kZTtcbiAgICB9O1xuXG4gICAgUmVmZXJlbmNlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgIGlmIChpc0FycmF5KHRoaXMucGFyZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3BsaWNlKHRoaXMua2V5LCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXBsYWNlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIEVsZW1lbnQobm9kZSwgcGF0aCwgd3JhcCwgcmVmKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMud3JhcCA9IHdyYXA7XG4gICAgICAgIHRoaXMucmVmID0gcmVmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIENvbnRyb2xsZXIoKSB7IH1cblxuICAgIC8vIEFQSTpcbiAgICAvLyByZXR1cm4gcHJvcGVydHkgcGF0aCBhcnJheSBmcm9tIHJvb3QgdG8gY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gICAgICAgIHZhciBpLCBpeiwgaiwganosIHJlc3VsdCwgZWxlbWVudDtcblxuICAgICAgICBmdW5jdGlvbiBhZGRUb1BhdGgocmVzdWx0LCBwYXRoKSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgICAgIGZvciAoaiA9IDAsIGp6ID0gcGF0aC5sZW5ndGg7IGogPCBqejsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhdGhbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyByb290IG5vZGVcbiAgICAgICAgaWYgKCF0aGlzLl9fY3VycmVudC5wYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZpcnN0IG5vZGUgaXMgc2VudGluZWwsIHNlY29uZCBub2RlIGlzIHJvb3QgZWxlbWVudFxuICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMiwgaXogPSB0aGlzLl9fbGVhdmVsaXN0Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9fbGVhdmVsaXN0W2ldO1xuICAgICAgICAgICAgYWRkVG9QYXRoKHJlc3VsdCwgZWxlbWVudC5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRUb1BhdGgocmVzdWx0LCB0aGlzLl9fY3VycmVudC5wYXRoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiB0eXBlIG9mIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBub2RlID0gdGhpcy5jdXJyZW50KCk7XG4gICAgICAgIHJldHVybiBub2RlLnR5cGUgfHwgdGhpcy5fX2N1cnJlbnQud3JhcDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiBhcnJheSBvZiBwYXJlbnQgZWxlbWVudHNcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5wYXJlbnRzID0gZnVuY3Rpb24gcGFyZW50cygpIHtcbiAgICAgICAgdmFyIGksIGl6LCByZXN1bHQ7XG5cbiAgICAgICAgLy8gZmlyc3Qgbm9kZSBpcyBzZW50aW5lbFxuICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMSwgaXogPSB0aGlzLl9fbGVhdmVsaXN0Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX19sZWF2ZWxpc3RbaV0ubm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmV0dXJuIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbiBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2N1cnJlbnQubm9kZTtcbiAgICB9O1xuXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX19leGVjdXRlID0gZnVuY3Rpb24gX19leGVjdXRlKGNhbGxiYWNrLCBlbGVtZW50KSB7XG4gICAgICAgIHZhciBwcmV2aW91cywgcmVzdWx0O1xuXG4gICAgICAgIHJlc3VsdCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBwcmV2aW91cyAgPSB0aGlzLl9fY3VycmVudDtcbiAgICAgICAgdGhpcy5fX2N1cnJlbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLl9fc3RhdGUgPSBudWxsO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrLmNhbGwodGhpcywgZWxlbWVudC5ub2RlLCB0aGlzLl9fbGVhdmVsaXN0W3RoaXMuX19sZWF2ZWxpc3QubGVuZ3RoIC0gMV0ubm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fX2N1cnJlbnQgPSBwcmV2aW91cztcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gbm90aWZ5IGNvbnRyb2wgc2tpcCAvIGJyZWFrXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5KGZsYWcpIHtcbiAgICAgICAgdGhpcy5fX3N0YXRlID0gZmxhZztcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHNraXAgY2hpbGQgbm9kZXMgb2YgY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoU0tJUCk7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyBicmVhayB0cmF2ZXJzYWxzXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGVbJ2JyZWFrJ10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubm90aWZ5KEJSRUFLKTtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJlbW92ZSBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm5vdGlmeShSRU1PVkUpO1xuICAgIH07XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fX2luaXRpYWxpemUgPSBmdW5jdGlvbihyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHRoaXMudmlzaXRvciA9IHZpc2l0b3I7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgICAgIHRoaXMuX193b3JrbGlzdCA9IFtdO1xuICAgICAgICB0aGlzLl9fbGVhdmVsaXN0ID0gW107XG4gICAgICAgIHRoaXMuX19jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fX3N0YXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fX2ZhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgaWYgKHZpc2l0b3IuZmFsbGJhY2sgPT09ICdpdGVyYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLl9fZmFsbGJhY2sgPSBvYmplY3RLZXlzO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2aXNpdG9yLmZhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLl9fZmFsbGJhY2sgPSB2aXNpdG9yLmZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fX2tleXMgPSBWaXNpdG9yS2V5cztcbiAgICAgICAgaWYgKHZpc2l0b3Iua2V5cykge1xuICAgICAgICAgICAgdGhpcy5fX2tleXMgPSBleHRlbmQob2JqZWN0Q3JlYXRlKHRoaXMuX19rZXlzKSwgdmlzaXRvci5rZXlzKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc05vZGUobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Byb3BlcnR5KG5vZGVUeXBlLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIChub2RlVHlwZSA9PT0gU3ludGF4Lk9iamVjdEV4cHJlc3Npb24gfHwgbm9kZVR5cGUgPT09IFN5bnRheC5PYmplY3RQYXR0ZXJuKSAmJiAncHJvcGVydGllcycgPT09IGtleTtcbiAgICB9XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9uIHRyYXZlcnNlKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdmFyIHdvcmtsaXN0LFxuICAgICAgICAgICAgbGVhdmVsaXN0LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICBjdXJyZW50MixcbiAgICAgICAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICBzZW50aW5lbDtcblxuICAgICAgICB0aGlzLl9faW5pdGlhbGl6ZShyb290LCB2aXNpdG9yKTtcblxuICAgICAgICBzZW50aW5lbCA9IHt9O1xuXG4gICAgICAgIC8vIHJlZmVyZW5jZVxuICAgICAgICB3b3JrbGlzdCA9IHRoaXMuX193b3JrbGlzdDtcbiAgICAgICAgbGVhdmVsaXN0ID0gdGhpcy5fX2xlYXZlbGlzdDtcblxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQocm9vdCwgbnVsbCwgbnVsbCwgbnVsbCkpO1xuICAgICAgICBsZWF2ZWxpc3QucHVzaChuZXcgRWxlbWVudChudWxsLCBudWxsLCBudWxsLCBudWxsKSk7XG5cbiAgICAgICAgd2hpbGUgKHdvcmtsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZWxlbWVudCA9IHdvcmtsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCA9PT0gc2VudGluZWwpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gbGVhdmVsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICAgICAgcmV0ID0gdGhpcy5fX2V4ZWN1dGUodmlzaXRvci5sZWF2ZSwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCByZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm5vZGUpIHtcblxuICAgICAgICAgICAgICAgIHJldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IuZW50ZXIsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgcmV0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzZW50aW5lbCk7XG4gICAgICAgICAgICAgICAgbGVhdmVsaXN0LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBTS0lQIHx8IHJldCA9PT0gU0tJUCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBub2RlID0gZWxlbWVudC5ub2RlO1xuICAgICAgICAgICAgICAgIG5vZGVUeXBlID0gbm9kZS50eXBlIHx8IGVsZW1lbnQud3JhcDtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2tleXNbbm9kZVR5cGVdO1xuICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fX2ZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2ZhbGxiYWNrKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdHlwZSAnICsgbm9kZVR5cGUgKyAnLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdoaWxlICgoY3VycmVudCAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleSA9IGNhbmRpZGF0ZXNbY3VycmVudF07XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG5vZGVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDIgPSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50MiAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVbY3VycmVudDJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eShub2RlVHlwZSwgY2FuZGlkYXRlc1tjdXJyZW50XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgJ1Byb3BlcnR5JywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoY2FuZGlkYXRlW2N1cnJlbnQyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgbnVsbCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQoY2FuZGlkYXRlLCBrZXksIG51bGwsIG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciB3b3JrbGlzdCxcbiAgICAgICAgICAgIGxlYXZlbGlzdCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgY3VycmVudDIsXG4gICAgICAgICAgICBjYW5kaWRhdGVzLFxuICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgc2VudGluZWwsXG4gICAgICAgICAgICBvdXRlcixcbiAgICAgICAgICAgIGtleTtcblxuICAgICAgICBmdW5jdGlvbiByZW1vdmVFbGVtKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBuZXh0RWxlbSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnJlZi5yZW1vdmUoKSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHJlZmVyZW5jZSBpcyBhbiBlbGVtZW50IG9mIGFuIGFycmF5LlxuICAgICAgICAgICAgICAgIGtleSA9IGVsZW1lbnQucmVmLmtleTtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtZW50LnJlZi5wYXJlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiByZW1vdmVkIGZyb20gYXJyYXksIHRoZW4gZGVjcmVhc2UgZm9sbG93aW5nIGl0ZW1zJyBrZXlzLlxuICAgICAgICAgICAgICAgIGkgPSB3b3JrbGlzdC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0RWxlbSA9IHdvcmtsaXN0W2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEVsZW0ucmVmICYmIG5leHRFbGVtLnJlZi5wYXJlbnQgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgIChuZXh0RWxlbS5yZWYua2V5IDwga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAtLW5leHRFbGVtLnJlZi5rZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9faW5pdGlhbGl6ZShyb290LCB2aXNpdG9yKTtcblxuICAgICAgICBzZW50aW5lbCA9IHt9O1xuXG4gICAgICAgIC8vIHJlZmVyZW5jZVxuICAgICAgICB3b3JrbGlzdCA9IHRoaXMuX193b3JrbGlzdDtcbiAgICAgICAgbGVhdmVsaXN0ID0gdGhpcy5fX2xlYXZlbGlzdDtcblxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIG91dGVyID0ge1xuICAgICAgICAgICAgcm9vdDogcm9vdFxuICAgICAgICB9O1xuICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQocm9vdCwgbnVsbCwgbnVsbCwgbmV3IFJlZmVyZW5jZShvdXRlciwgJ3Jvb3QnKSk7XG4gICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIGxlYXZlbGlzdC5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgIHdoaWxlICh3b3JrbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB3b3JrbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT09IHNlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGxlYXZlbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IubGVhdmUsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gbm9kZSBtYXkgYmUgcmVwbGFjZWQgd2l0aCBudWxsLFxuICAgICAgICAgICAgICAgIC8vIHNvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdW5kZWZpbmVkIGFuZCBudWxsIGluIHRoaXMgcGxhY2VcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSBCUkVBSyAmJiB0YXJnZXQgIT09IFNLSVAgJiYgdGFyZ2V0ICE9PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlZi5yZXBsYWNlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gUkVNT1ZFIHx8IHRhcmdldCA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUVsZW0oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgdGFyZ2V0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0ZXIucm9vdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IuZW50ZXIsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyBub2RlIG1heSBiZSByZXBsYWNlZCB3aXRoIG51bGwsXG4gICAgICAgICAgICAvLyBzbyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHVuZGVmaW5lZCBhbmQgbnVsbCBpbiB0aGlzIHBsYWNlXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSBCUkVBSyAmJiB0YXJnZXQgIT09IFNLSVAgJiYgdGFyZ2V0ICE9PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICAvLyByZXBsYWNlXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZWYucmVwbGFjZSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQubm9kZSA9IHRhcmdldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gUkVNT1ZFIHx8IHRhcmdldCA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRWxlbShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm5vZGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCB0YXJnZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dGVyLnJvb3Q7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG5vZGUgbWF5IGJlIG51bGxcbiAgICAgICAgICAgIG5vZGUgPSBlbGVtZW50Lm5vZGU7XG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd29ya2xpc3QucHVzaChzZW50aW5lbCk7XG4gICAgICAgICAgICBsZWF2ZWxpc3QucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gU0tJUCB8fCB0YXJnZXQgPT09IFNLSVApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgZWxlbWVudC53cmFwO1xuICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19rZXlzW25vZGVUeXBlXTtcbiAgICAgICAgICAgIGlmICghY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19mYWxsYmFjayhub2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlICcgKyBub2RlVHlwZSArICcuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQgLT0gMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIGtleSA9IGNhbmRpZGF0ZXNbY3VycmVudF07XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDIgPSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQyIC09IDEpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlW2N1cnJlbnQyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvcGVydHkobm9kZVR5cGUsIGNhbmRpZGF0ZXNbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgJ1Byb3BlcnR5JywgbmV3IFJlZmVyZW5jZShjYW5kaWRhdGUsIGN1cnJlbnQyKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGVbY3VycmVudDJdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChjYW5kaWRhdGVbY3VycmVudDJdLCBba2V5LCBjdXJyZW50Ml0sIG51bGwsIG5ldyBSZWZlcmVuY2UoY2FuZGlkYXRlLCBjdXJyZW50MikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQoY2FuZGlkYXRlLCBrZXksIG51bGwsIG5ldyBSZWZlcmVuY2Uobm9kZSwga2V5KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRlci5yb290O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB0cmF2ZXJzZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIudHJhdmVyc2Uocm9vdCwgdmlzaXRvcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVwbGFjZShyb290LCB2aXNpdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmRDb21tZW50UmFuZ2UoY29tbWVudCwgdG9rZW5zKSB7XG4gICAgICAgIHZhciB0YXJnZXQ7XG5cbiAgICAgICAgdGFyZ2V0ID0gdXBwZXJCb3VuZCh0b2tlbnMsIGZ1bmN0aW9uIHNlYXJjaCh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuLnJhbmdlWzBdID4gY29tbWVudC5yYW5nZVswXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlID0gW2NvbW1lbnQucmFuZ2VbMF0sIGNvbW1lbnQucmFuZ2VbMV1dO1xuXG4gICAgICAgIGlmICh0YXJnZXQgIT09IHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVsxXSA9IHRva2Vuc1t0YXJnZXRdLnJhbmdlWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFyZ2V0IC09IDE7XG4gICAgICAgIGlmICh0YXJnZXQgPj0gMCkge1xuICAgICAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlWzBdID0gdG9rZW5zW3RhcmdldF0ucmFuZ2VbMV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhdHRhY2hDb21tZW50cyh0cmVlLCBwcm92aWRlZENvbW1lbnRzLCB0b2tlbnMpIHtcbiAgICAgICAgLy8gQXQgZmlyc3QsIHdlIHNob3VsZCBjYWxjdWxhdGUgZXh0ZW5kZWQgY29tbWVudCByYW5nZXMuXG4gICAgICAgIHZhciBjb21tZW50cyA9IFtdLCBjb21tZW50LCBsZW4sIGksIGN1cnNvcjtcblxuICAgICAgICBpZiAoIXRyZWUucmFuZ2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXR0YWNoQ29tbWVudHMgbmVlZHMgcmFuZ2UgaW5mb3JtYXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRva2VucyBhcnJheSBpcyBlbXB0eSwgd2UgYXR0YWNoIGNvbW1lbnRzIHRvIHRyZWUgYXMgJ2xlYWRpbmdDb21tZW50cydcbiAgICAgICAgaWYgKCF0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocHJvdmlkZWRDb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBwcm92aWRlZENvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBkZWVwQ29weShwcm92aWRlZENvbW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlID0gWzAsIHRyZWUucmFuZ2VbMF1dO1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmVlLmxlYWRpbmdDb21tZW50cyA9IGNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBwcm92aWRlZENvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb21tZW50cy5wdXNoKGV4dGVuZENvbW1lbnRSYW5nZShkZWVwQ29weShwcm92aWRlZENvbW1lbnRzW2ldKSwgdG9rZW5zKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIGlzIGJhc2VkIG9uIEpvaG4gRnJlZW1hbidzIGltcGxlbWVudGF0aW9uLlxuICAgICAgICBjdXJzb3IgPSAwO1xuICAgICAgICB0cmF2ZXJzZSh0cmVlLCB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29tbWVudDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRzW2N1cnNvcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50LmV4dGVuZGVkUmFuZ2VbMV0gPiBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50LmV4dGVuZGVkUmFuZ2VbMV0gPT09IG5vZGUucmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLnNwbGljZShjdXJzb3IsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IG91dCBvZiBvd25lZCBub2RlXG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciA9PT0gY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLkJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c1tjdXJzb3JdLmV4dGVuZGVkUmFuZ2VbMF0gPiBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLlNraXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjdXJzb3IgPSAwO1xuICAgICAgICB0cmF2ZXJzZSh0cmVlLCB7XG4gICAgICAgICAgICBsZWF2ZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29tbWVudDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRzW2N1cnNvcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnJhbmdlWzFdIDwgY29tbWVudC5leHRlbmRlZFJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnJhbmdlWzFdID09PSBjb21tZW50LmV4dGVuZGVkUmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS50cmFpbGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLnNwbGljZShjdXJzb3IsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IG91dCBvZiBvd25lZCBub2RlXG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciA9PT0gY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLkJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c1tjdXJzb3JdLmV4dGVuZGVkUmFuZ2VbMF0gPiBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLlNraXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdHJlZTtcbiAgICB9XG5cbiAgICBleHBvcnRzLnZlcnNpb24gPSByZXF1aXJlKCcuL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgZXhwb3J0cy5TeW50YXggPSBTeW50YXg7XG4gICAgZXhwb3J0cy50cmF2ZXJzZSA9IHRyYXZlcnNlO1xuICAgIGV4cG9ydHMucmVwbGFjZSA9IHJlcGxhY2U7XG4gICAgZXhwb3J0cy5hdHRhY2hDb21tZW50cyA9IGF0dGFjaENvbW1lbnRzO1xuICAgIGV4cG9ydHMuVmlzaXRvcktleXMgPSBWaXNpdG9yS2V5cztcbiAgICBleHBvcnRzLlZpc2l0b3JPcHRpb24gPSBWaXNpdG9yT3B0aW9uO1xuICAgIGV4cG9ydHMuQ29udHJvbGxlciA9IENvbnRyb2xsZXI7XG4gICAgZXhwb3J0cy5jbG9uZUVudmlyb25tZW50ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xvbmUoe30pOyB9O1xuXG4gICAgcmV0dXJuIGV4cG9ydHM7XG59KGV4cG9ydHMpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2Zyb21cIjogXCJlc3RyYXZlcnNlQF40LjIuMFwiLFxuICBcIl9pZFwiOiBcImVzdHJhdmVyc2VANC4yLjBcIixcbiAgXCJfaW5CdW5kbGVcIjogZmFsc2UsXG4gIFwiX2ludGVncml0eVwiOiBcInNoYTEtRGU0LzdUSDgxR2xoak9jMElKbjhHdm9MMnhNPVwiLFxuICBcIl9sb2NhdGlvblwiOiBcIi9zdGF0aWMtZXZhbC9lc3RyYXZlcnNlXCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiLFxuICAgIFwicmVnaXN0cnlcIjogdHJ1ZSxcbiAgICBcInJhd1wiOiBcImVzdHJhdmVyc2VAXjQuMi4wXCIsXG4gICAgXCJuYW1lXCI6IFwiZXN0cmF2ZXJzZVwiLFxuICAgIFwiZXNjYXBlZE5hbWVcIjogXCJlc3RyYXZlcnNlXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjQuMi4wXCIsXG4gICAgXCJzYXZlU3BlY1wiOiBudWxsLFxuICAgIFwiZmV0Y2hTcGVjXCI6IFwiXjQuMi4wXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvc3RhdGljLWV2YWwvZXNjb2RlZ2VuXCJcbiAgXSxcbiAgXCJfcmVzb2x2ZWRcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3RyYXZlcnNlLy0vZXN0cmF2ZXJzZS00LjIuMC50Z3pcIixcbiAgXCJfc2hhc3VtXCI6IFwiMGRlZTNmZWQzMWZjZDQ2OTYxOGNlNzM0MjA5OWZjMWFmYTBiZGIxM1wiLFxuICBcIl9zcGVjXCI6IFwiZXN0cmF2ZXJzZUBeNC4yLjBcIixcbiAgXCJfd2hlcmVcIjogXCIvVXNlcnMvamN3aGl0bG9jay9kZXZlbG9wbWVudC9zd2F5L25vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXNjb2RlZ2VuXCIsXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZXN0b29scy9lc3RyYXZlcnNlL2lzc3Vlc1wiXG4gIH0sXG4gIFwiYnVuZGxlRGVwZW5kZW5jaWVzXCI6IGZhbHNlLFxuICBcImRlcHJlY2F0ZWRcIjogZmFsc2UsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJFQ01BU2NyaXB0IEpTIEFTVCB0cmF2ZXJzYWwgZnVuY3Rpb25zXCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJhYmVsLXByZXNldC1lczIwMTVcIjogXCJeNi4zLjEzXCIsXG4gICAgXCJiYWJlbC1yZWdpc3RlclwiOiBcIl42LjMuMTNcIixcbiAgICBcImNoYWlcIjogXCJeMi4xLjFcIixcbiAgICBcImVzcHJlZVwiOiBcIl4xLjExLjBcIixcbiAgICBcImd1bHBcIjogXCJeMy44LjEwXCIsXG4gICAgXCJndWxwLWJ1bXBcIjogXCJeMC4yLjJcIixcbiAgICBcImd1bHAtZmlsdGVyXCI6IFwiXjIuMC4wXCIsXG4gICAgXCJndWxwLWdpdFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiZ3VscC10YWctdmVyc2lvblwiOiBcIl4xLjIuMVwiLFxuICAgIFwianNoaW50XCI6IFwiXjIuNS42XCIsXG4gICAgXCJtb2NoYVwiOiBcIl4yLjEuMFwiXG4gIH0sXG4gIFwiZW5naW5lc1wiOiB7XG4gICAgXCJub2RlXCI6IFwiPj0wLjEwLjBcIlxuICB9LFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2VzdG9vbHMvZXN0cmF2ZXJzZVwiLFxuICBcImxpY2Vuc2VcIjogXCJCU0QtMi1DbGF1c2VcIixcbiAgXCJtYWluXCI6IFwiZXN0cmF2ZXJzZS5qc1wiLFxuICBcIm1haW50YWluZXJzXCI6IFtcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJZdXN1a2UgU3V6dWtpXCIsXG4gICAgICBcImVtYWlsXCI6IFwidXRhdGFuZS50ZWFAZ21haWwuY29tXCIsXG4gICAgICBcInVybFwiOiBcImh0dHA6Ly9naXRodWIuY29tL0NvbnN0ZWxsYXRpb25cIlxuICAgIH1cbiAgXSxcbiAgXCJuYW1lXCI6IFwiZXN0cmF2ZXJzZVwiLFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2VzdG9vbHMvZXN0cmF2ZXJzZS5naXRcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwibGludFwiOiBcImpzaGludCBlc3RyYXZlcnNlLmpzXCIsXG4gICAgXCJ0ZXN0XCI6IFwibnBtIHJ1bi1zY3JpcHQgbGludCAmJiBucG0gcnVuLXNjcmlwdCB1bml0LXRlc3RcIixcbiAgICBcInVuaXQtdGVzdFwiOiBcIm1vY2hhIC0tY29tcGlsZXJzIGpzOmJhYmVsLXJlZ2lzdGVyXCJcbiAgfSxcbiAgXCJ2ZXJzaW9uXCI6IFwiNC4yLjBcIlxufVxuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG5leHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaC5cbiAqXG4gKiBAcGFyYW0gYUxvdyBJbmRpY2VzIGhlcmUgYW5kIGxvd2VyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFuZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IGJlaW5nIHNlYXJjaGVkIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIG5vbi1lbXB0eSBhcnJheSBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBGdW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEuXG4gKiBAcGFyYW0gYUJpYXMgRWl0aGVyICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgLy8gVGhpcyBmdW5jdGlvbiB0ZXJtaW5hdGVzIHdoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZTpcbiAgLy9cbiAgLy8gICAxLiBXZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgLy9cbiAgLy8gICAyLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGJ1dCB3ZSBjYW4gcmV0dXJuIHRoZSBpbmRleCBvZlxuICAvLyAgICAgIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudC5cbiAgLy9cbiAgLy8gICAzLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGFuZCB0aGVyZSBpcyBubyBuZXh0LWNsb3Nlc3RcbiAgLy8gICAgICBlbGVtZW50IHRoYW4gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgc28gd2UgcmV0dXJuIC0xLlxuICB2YXIgbWlkID0gTWF0aC5mbG9vcigoYUhpZ2ggLSBhTG93KSAvIDIpICsgYUxvdztcbiAgdmFyIGNtcCA9IGFDb21wYXJlKGFOZWVkbGUsIGFIYXlzdGFja1ttaWRdLCB0cnVlKTtcbiAgaWYgKGNtcCA9PT0gMCkge1xuICAgIC8vIEZvdW5kIHRoZSBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgICByZXR1cm4gbWlkO1xuICB9XG4gIGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGdyZWF0ZXIgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAoYUhpZ2ggLSBtaWQgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2gobWlkLCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgIH1cblxuICAgIC8vIFRoZSBleGFjdCBuZWVkbGUgZWxlbWVudCB3YXMgbm90IGZvdW5kIGluIHRoaXMgaGF5c3RhY2suIERldGVybWluZSBpZlxuICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgIHJldHVybiBhSGlnaCA8IGFIYXlzdGFjay5sZW5ndGggPyBhSGlnaCA6IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGxlc3MgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAobWlkIC0gYUxvdyA+IDEpIHtcbiAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSBsb3dlciBoYWxmLlxuICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBtaWQsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYUxvdyA8IDAgPyAtMSA6IGFMb3c7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoIHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuXG4gKiB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgZWxlbWVudCBpZiB0aGVyZSBpcyBubyBleGFjdCBoaXQuIFRoaXMgaXMgYmVjYXVzZVxuICogbWFwcGluZ3MgYmV0d2VlbiBvcmlnaW5hbCBhbmQgZ2VuZXJhdGVkIGxpbmUvY29sIHBhaXJzIGFyZSBzaW5nbGUgcG9pbnRzLFxuICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lvbiBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnNcbiAqIHRoYXQgeW91IGFyZW4ndCBvbiB0aGUgdmVyeSBzdGFydCBvZiBhIHJlZ2lvbi5cbiAqXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLlxuICogQHBhcmFtIGFIYXlzdGFjayBUaGUgYXJyYXkgdGhhdCBpcyBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHRoZSBuZWVkbGUgYW5kIGFuIGVsZW1lbnQgaW4gdGhlXG4gKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzXG4gKiAgICAgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCwgcmVzcGVjdGl2ZWx5LlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICovXG5leHBvcnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICBpZiAoYUhheXN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHJlY3Vyc2l2ZVNlYXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbXBhcmUsIGFCaWFzIHx8IGV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gV2UgaGF2ZSBmb3VuZCBlaXRoZXIgdGhlIGV4YWN0IGVsZW1lbnQsIG9yIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudCB0aGFuXG4gIC8vIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHN1Y2hcbiAgLy8gZWxlbWVudC4gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNtYWxsZXN0IG9mIHRoZXNlLlxuICB3aGlsZSAoaW5kZXggLSAxID49IDApIHtcbiAgICBpZiAoYUNvbXBhcmUoYUhheXN0YWNrW2luZGV4XSwgYUhheXN0YWNrW2luZGV4IC0gMV0sIHRydWUpICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLS1pbmRleDtcbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIHNvdXJjZVJlbGF0aXZlID0gc291cmNlRmlsZTtcbiAgICAgIGlmIChzb3VyY2VSb290ICE9PSBudWxsKSB7XG4gICAgICAgIHNvdXJjZVJlbGF0aXZlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnZW5lcmF0b3IuX3NvdXJjZXMuaGFzKHNvdXJjZVJlbGF0aXZlKSkge1xuICAgICAgICBnZW5lcmF0b3IuX3NvdXJjZXMuYWRkKHNvdXJjZVJlbGF0aXZlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIFNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVpcmUoJy4vc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vLyBNYXRjaGVzIGEgV2luZG93cy1zdHlsZSBgXFxyXFxuYCBuZXdsaW5lIG9yIGEgYFxcbmAgbmV3bGluZSB1c2VkIGJ5IGFsbCBvdGhlclxuLy8gb3BlcmF0aW5nIHN5c3RlbXMgdGhlc2UgZGF5cyAoY2FwdHVyaW5nIHRoZSByZXN1bHQpLlxudmFyIFJFR0VYX05FV0xJTkUgPSAvKFxccj9cXG4pLztcblxuLy8gTmV3bGluZSBjaGFyYWN0ZXIgY29kZSBmb3IgY2hhckNvZGVBdCgpIGNvbXBhcmlzb25zXG52YXIgTkVXTElORV9DT0RFID0gMTA7XG5cbi8vIFByaXZhdGUgc3ltYm9sIGZvciBpZGVudGlmeWluZyBgU291cmNlTm9kZWBzIHdoZW4gbXVsdGlwbGUgdmVyc2lvbnMgb2Zcbi8vIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkgYXJlIGxvYWRlZC4gVGhpcyBNVVNUIE5PVCBDSEFOR0UgYWNyb3NzXG4vLyB2ZXJzaW9ucyFcbnZhciBpc1NvdXJjZU5vZGUgPSBcIiQkJGlzU291cmNlTm9kZSQkJFwiO1xuXG4vKipcbiAqIFNvdXJjZU5vZGVzIHByb3ZpZGUgYSB3YXkgdG8gYWJzdHJhY3Qgb3ZlciBpbnRlcnBvbGF0aW5nL2NvbmNhdGVuYXRpbmdcbiAqIHNuaXBwZXRzIG9mIGdlbmVyYXRlZCBKYXZhU2NyaXB0IHNvdXJjZSBjb2RlIHdoaWxlIG1haW50YWluaW5nIHRoZSBsaW5lIGFuZFxuICogY29sdW1uIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIGFMaW5lIFRoZSBvcmlnaW5hbCBsaW5lIG51bWJlci5cbiAqIEBwYXJhbSBhQ29sdW1uIFRoZSBvcmlnaW5hbCBjb2x1bW4gbnVtYmVyLlxuICogQHBhcmFtIGFTb3VyY2UgVGhlIG9yaWdpbmFsIHNvdXJjZSdzIGZpbGVuYW1lLlxuICogQHBhcmFtIGFDaHVua3MgT3B0aW9uYWwuIEFuIGFycmF5IG9mIHN0cmluZ3Mgd2hpY2ggYXJlIHNuaXBwZXRzIG9mXG4gKiAgICAgICAgZ2VuZXJhdGVkIEpTLCBvciBvdGhlciBTb3VyY2VOb2Rlcy5cbiAqIEBwYXJhbSBhTmFtZSBUaGUgb3JpZ2luYWwgaWRlbnRpZmllci5cbiAqL1xuZnVuY3Rpb24gU291cmNlTm9kZShhTGluZSwgYUNvbHVtbiwgYVNvdXJjZSwgYUNodW5rcywgYU5hbWUpIHtcbiAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICB0aGlzLnNvdXJjZUNvbnRlbnRzID0ge307XG4gIHRoaXMubGluZSA9IGFMaW5lID09IG51bGwgPyBudWxsIDogYUxpbmU7XG4gIHRoaXMuY29sdW1uID0gYUNvbHVtbiA9PSBudWxsID8gbnVsbCA6IGFDb2x1bW47XG4gIHRoaXMuc291cmNlID0gYVNvdXJjZSA9PSBudWxsID8gbnVsbCA6IGFTb3VyY2U7XG4gIHRoaXMubmFtZSA9IGFOYW1lID09IG51bGwgPyBudWxsIDogYU5hbWU7XG4gIHRoaXNbaXNTb3VyY2VOb2RlXSA9IHRydWU7XG4gIGlmIChhQ2h1bmtzICE9IG51bGwpIHRoaXMuYWRkKGFDaHVua3MpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBTb3VyY2VOb2RlIGZyb20gZ2VuZXJhdGVkIGNvZGUgYW5kIGEgU291cmNlTWFwQ29uc3VtZXIuXG4gKlxuICogQHBhcmFtIGFHZW5lcmF0ZWRDb2RlIFRoZSBnZW5lcmF0ZWQgY29kZVxuICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgU291cmNlTWFwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhUmVsYXRpdmVQYXRoIE9wdGlvbmFsLiBUaGUgcGF0aCB0aGF0IHJlbGF0aXZlIHNvdXJjZXMgaW4gdGhlXG4gKiAgICAgICAgU291cmNlTWFwQ29uc3VtZXIgc2hvdWxkIGJlIHJlbGF0aXZlIHRvLlxuICovXG5Tb3VyY2VOb2RlLmZyb21TdHJpbmdXaXRoU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcChhR2VuZXJhdGVkQ29kZSwgYVNvdXJjZU1hcENvbnN1bWVyLCBhUmVsYXRpdmVQYXRoKSB7XG4gICAgLy8gVGhlIFNvdXJjZU5vZGUgd2Ugd2FudCB0byBmaWxsIHdpdGggdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAgLy8gYW5kIHRoZSBTb3VyY2VNYXBcbiAgICB2YXIgbm9kZSA9IG5ldyBTb3VyY2VOb2RlKCk7XG5cbiAgICAvLyBBbGwgZXZlbiBpbmRpY2VzIG9mIHRoaXMgYXJyYXkgYXJlIG9uZSBsaW5lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSxcbiAgICAvLyB3aGlsZSBhbGwgb2RkIGluZGljZXMgYXJlIHRoZSBuZXdsaW5lcyBiZXR3ZWVuIHR3byBhZGphY2VudCBsaW5lc1xuICAgIC8vIChzaW5jZSBgUkVHRVhfTkVXTElORWAgY2FwdHVyZXMgaXRzIG1hdGNoKS5cbiAgICAvLyBQcm9jZXNzZWQgZnJhZ21lbnRzIGFyZSBhY2Nlc3NlZCBieSBjYWxsaW5nIGBzaGlmdE5leHRMaW5lYC5cbiAgICB2YXIgcmVtYWluaW5nTGluZXMgPSBhR2VuZXJhdGVkQ29kZS5zcGxpdChSRUdFWF9ORVdMSU5FKTtcbiAgICB2YXIgcmVtYWluaW5nTGluZXNJbmRleCA9IDA7XG4gICAgdmFyIHNoaWZ0TmV4dExpbmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsaW5lQ29udGVudHMgPSBnZXROZXh0TGluZSgpO1xuICAgICAgLy8gVGhlIGxhc3QgbGluZSBvZiBhIGZpbGUgbWlnaHQgbm90IGhhdmUgYSBuZXdsaW5lLlxuICAgICAgdmFyIG5ld0xpbmUgPSBnZXROZXh0TGluZSgpIHx8IFwiXCI7XG4gICAgICByZXR1cm4gbGluZUNvbnRlbnRzICsgbmV3TGluZTtcblxuICAgICAgZnVuY3Rpb24gZ2V0TmV4dExpbmUoKSB7XG4gICAgICAgIHJldHVybiByZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoID9cbiAgICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXgrK10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHBvc2l0aW9uIG9mIFwicmVtYWluaW5nTGluZXNcIlxuICAgIHZhciBsYXN0R2VuZXJhdGVkTGluZSA9IDEsIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuXG4gICAgLy8gVGhlIGdlbmVyYXRlIFNvdXJjZU5vZGVzIHdlIG5lZWQgYSBjb2RlIHJhbmdlLlxuICAgIC8vIFRvIGV4dHJhY3QgaXQgY3VycmVudCBhbmQgbGFzdCBtYXBwaW5nIGlzIHVzZWQuXG4gICAgLy8gSGVyZSB3ZSBzdG9yZSB0aGUgbGFzdCBtYXBwaW5nLlxuICAgIHZhciBsYXN0TWFwcGluZyA9IG51bGw7XG5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChsYXN0TWFwcGluZyAhPT0gbnVsbCkge1xuICAgICAgICAvLyBXZSBhZGQgdGhlIGNvZGUgZnJvbSBcImxhc3RNYXBwaW5nXCIgdG8gXCJtYXBwaW5nXCI6XG4gICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZXJlIGlzIGEgbmV3IGxpbmUgaW4gYmV0d2Vlbi5cbiAgICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgLy8gQXNzb2NpYXRlIGZpcnN0IGxpbmUgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgICAvLyBUaGUgcmVtYWluaW5nIGNvZGUgaXMgYWRkZWQgd2l0aG91dCBtYXBwaW5nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV3IGxpbmUgaW4gYmV0d2Vlbi5cbiAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIGNvZGUgYmV0d2VlbiBcImxhc3RHZW5lcmF0ZWRDb2x1bW5cIiBhbmRcbiAgICAgICAgICAvLyBcIm1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXCIgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSB8fCAnJztcbiAgICAgICAgICB2YXIgY29kZSA9IG5leHRMaW5lLnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIGNvZGUpO1xuICAgICAgICAgIC8vIE5vIG1vcmUgcmVtYWluaW5nIGNvZGUsIGNvbnRpbnVlXG4gICAgICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gV2UgYWRkIHRoZSBnZW5lcmF0ZWQgY29kZSB1bnRpbCB0aGUgZmlyc3QgbWFwcGluZ1xuICAgICAgLy8gdG8gdGhlIFNvdXJjZU5vZGUgd2l0aG91dCBhbnkgbWFwcGluZy5cbiAgICAgIC8vIEVhY2ggbGluZSBpcyBhZGRlZCBhcyBzZXBhcmF0ZSBzdHJpbmcuXG4gICAgICB3aGlsZSAobGFzdEdlbmVyYXRlZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgbm9kZS5hZGQoc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0R2VuZXJhdGVkQ29sdW1uIDwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pIHtcbiAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgIG5vZGUuYWRkKG5leHRMaW5lLnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikpO1xuICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICB9LCB0aGlzKTtcbiAgICAvLyBXZSBoYXZlIHByb2Nlc3NlZCBhbGwgbWFwcGluZ3MuXG4gICAgaWYgKHJlbWFpbmluZ0xpbmVzSW5kZXggPCByZW1haW5pbmdMaW5lcy5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TWFwcGluZykge1xuICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlbWFpbmluZyBjb2RlIGluIHRoZSBjdXJyZW50IGxpbmUgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgfVxuICAgICAgLy8gYW5kIGFkZCB0aGUgcmVtYWluaW5nIGxpbmVzIHdpdGhvdXQgYW55IG1hcHBpbmdcbiAgICAgIG5vZGUuYWRkKHJlbWFpbmluZ0xpbmVzLnNwbGljZShyZW1haW5pbmdMaW5lc0luZGV4KS5qb2luKFwiXCIpKTtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50IGludG8gU291cmNlTm9kZVxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhUmVsYXRpdmVQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5qb2luKGFSZWxhdGl2ZVBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBub2RlO1xuXG4gICAgZnVuY3Rpb24gYWRkTWFwcGluZ1dpdGhDb2RlKG1hcHBpbmcsIGNvZGUpIHtcbiAgICAgIGlmIChtYXBwaW5nID09PSBudWxsIHx8IG1hcHBpbmcuc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZS5hZGQoY29kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc291cmNlID0gYVJlbGF0aXZlUGF0aFxuICAgICAgICAgID8gdXRpbC5qb2luKGFSZWxhdGl2ZVBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIDogbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIG5vZGUuYWRkKG5ldyBTb3VyY2VOb2RlKG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcubmFtZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBjaHVuayBvZiBnZW5lcmF0ZWQgSlMgdG8gdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2FkZChhQ2h1bmspIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYUNodW5rKSkge1xuICAgIGFDaHVuay5mb3JFYWNoKGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgdGhpcy5hZGQoY2h1bmspO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGVsc2UgaWYgKGFDaHVua1tpc1NvdXJjZU5vZGVdIHx8IHR5cGVvZiBhQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoYUNodW5rKSB7XG4gICAgICB0aGlzLmNoaWxkcmVuLnB1c2goYUNodW5rKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBZGQgYSBjaHVuayBvZiBnZW5lcmF0ZWQgSlMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNvdXJjZSBub2RlLlxuICpcbiAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3ByZXBlbmQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBmb3IgKHZhciBpID0gYUNodW5rLmxlbmd0aC0xOyBpID49IDA7IGktLSkge1xuICAgICAgdGhpcy5wcmVwZW5kKGFDaHVua1tpXSk7XG4gICAgfVxuICB9XG4gIGVsc2UgaWYgKGFDaHVua1tpc1NvdXJjZU5vZGVdIHx8IHR5cGVvZiBhQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYUNodW5rKTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBKUyBzbmlwcGV0cyBpbiB0aGlzIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi4gVGhlXG4gKiB3YWxraW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHNuaXBwZXQgb2YgSlMgYW5kIGlzIHBhc3NlZCB0aGF0XG4gKiBzbmlwcGV0IGFuZCB0aGUgaXRzIG9yaWdpbmFsIGFzc29jaWF0ZWQgc291cmNlJ3MgbGluZS9jb2x1bW4gbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIGFGbiBUaGUgdHJhdmVyc2FsIGZ1bmN0aW9uLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gU291cmNlTm9kZV93YWxrKGFGbikge1xuICB2YXIgY2h1bms7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY2h1bmsgPSB0aGlzLmNoaWxkcmVuW2ldO1xuICAgIGlmIChjaHVua1tpc1NvdXJjZU5vZGVdKSB7XG4gICAgICBjaHVuay53YWxrKGFGbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGNodW5rICE9PSAnJykge1xuICAgICAgICBhRm4oY2h1bmssIHsgc291cmNlOiB0aGlzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSxcbiAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIExpa2UgYFN0cmluZy5wcm90b3R5cGUuam9pbmAgZXhjZXB0IGZvciBTb3VyY2VOb2Rlcy4gSW5zZXJ0cyBgYVN0cmAgYmV0d2VlblxuICogZWFjaCBvZiBgdGhpcy5jaGlsZHJlbmAuXG4gKlxuICogQHBhcmFtIGFTZXAgVGhlIHNlcGFyYXRvci5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfam9pbihhU2VwKSB7XG4gIHZhciBuZXdDaGlsZHJlbjtcbiAgdmFyIGk7XG4gIHZhciBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBuZXdDaGlsZHJlbiA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW4tMTsgaSsrKSB7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaChhU2VwKTtcbiAgICB9XG4gICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICB0aGlzLmNoaWxkcmVuID0gbmV3Q2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENhbGwgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlIG9uIHRoZSB2ZXJ5IHJpZ2h0LW1vc3Qgc291cmNlIHNuaXBwZXQuIFVzZWZ1bFxuICogZm9yIHRyaW1taW5nIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIGEgc291cmNlIG5vZGUsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gYVBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAqIEBwYXJhbSBhUmVwbGFjZW1lbnQgVGhlIHRoaW5nIHRvIHJlcGxhY2UgdGhlIHBhdHRlcm4gd2l0aC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUucmVwbGFjZVJpZ2h0ID0gZnVuY3Rpb24gU291cmNlTm9kZV9yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkge1xuICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICBpZiAobGFzdENoaWxkW2lzU291cmNlTm9kZV0pIHtcbiAgICBsYXN0Q2hpbGQucmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiBsYXN0Q2hpbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdID0gbGFzdENoaWxkLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKCcnLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHNvdXJjZSBjb250ZW50IGZvciBhIHNvdXJjZSBmaWxlLiBUaGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvclxuICogaW4gdGhlIHNvdXJjZXNDb250ZW50IGZpZWxkLlxuICpcbiAqIEBwYXJhbSBhU291cmNlRmlsZSBUaGUgZmlsZW5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlXG4gKiBAcGFyYW0gYVNvdXJjZUNvbnRlbnQgVGhlIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBmaWxlXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnNldFNvdXJjZUNvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdGhpcy5zb3VyY2VDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKGFTb3VyY2VGaWxlKV0gPSBhU291cmNlQ29udGVudDtcbiAgfTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgU291cmNlTm9kZXMuIFRoZSB3YWxraW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZWFjaFxuICogc291cmNlIGZpbGUgY29udGVudCBhbmQgaXMgcGFzc2VkIHRoZSBmaWxlbmFtZSBhbmQgc291cmNlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGFGbiBUaGUgdHJhdmVyc2FsIGZ1bmN0aW9uLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrU291cmNlQ29udGVudHMgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX3dhbGtTb3VyY2VDb250ZW50cyhhRm4pIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKHRoaXMuY2hpbGRyZW5baV1baXNTb3VyY2VOb2RlXSkge1xuICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLndhbGtTb3VyY2VDb250ZW50cyhhRm4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzb3VyY2VzID0gT2JqZWN0LmtleXModGhpcy5zb3VyY2VDb250ZW50cyk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNvdXJjZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFGbih1dGlsLmZyb21TZXRTdHJpbmcoc291cmNlc1tpXSksIHRoaXMuc291cmNlQ29udGVudHNbc291cmNlc1tpXV0pO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlLiBXYWxrcyBvdmVyIHRoZSB0cmVlXG4gKiBhbmQgY29uY2F0ZW5hdGVzIGFsbCB0aGUgdmFyaW91cyBzbmlwcGV0cyB0b2dldGhlciB0byBvbmUgc3RyaW5nLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmcoKSB7XG4gIHZhciBzdHIgPSBcIlwiO1xuICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgc3RyICs9IGNodW5rO1xuICB9KTtcbiAgcmV0dXJuIHN0cjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUgYWxvbmcgd2l0aCBhIHNvdXJjZVxuICogbWFwLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS50b1N0cmluZ1dpdGhTb3VyY2VNYXAgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nV2l0aFNvdXJjZU1hcChhQXJncykge1xuICB2YXIgZ2VuZXJhdGVkID0ge1xuICAgIGNvZGU6IFwiXCIsXG4gICAgbGluZTogMSxcbiAgICBjb2x1bW46IDBcbiAgfTtcbiAgdmFyIG1hcCA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpO1xuICB2YXIgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICB2YXIgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbExpbmUgPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsQ29sdW1uID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbE5hbWUgPSBudWxsO1xuICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rLCBvcmlnaW5hbCkge1xuICAgIGdlbmVyYXRlZC5jb2RlICs9IGNodW5rO1xuICAgIGlmIChvcmlnaW5hbC5zb3VyY2UgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwubGluZSAhPT0gbnVsbFxuICAgICAgICAmJiBvcmlnaW5hbC5jb2x1bW4gIT09IG51bGwpIHtcbiAgICAgIGlmKGxhc3RPcmlnaW5hbFNvdXJjZSAhPT0gb3JpZ2luYWwuc291cmNlXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxMaW5lICE9PSBvcmlnaW5hbC5saW5lXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxDb2x1bW4gIT09IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTmFtZSAhPT0gb3JpZ2luYWwubmFtZSkge1xuICAgICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgIGxpbmU6IG9yaWdpbmFsLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgIGxhc3RPcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgbGFzdE9yaWdpbmFsQ29sdW1uID0gb3JpZ2luYWwuY29sdW1uO1xuICAgICAgbGFzdE9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsLm5hbWU7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaWR4ID0gMCwgbGVuZ3RoID0gY2h1bmsubGVuZ3RoOyBpZHggPCBsZW5ndGg7IGlkeCsrKSB7XG4gICAgICBpZiAoY2h1bmsuY2hhckNvZGVBdChpZHgpID09PSBORVdMSU5FX0NPREUpIHtcbiAgICAgICAgZ2VuZXJhdGVkLmxpbmUrKztcbiAgICAgICAgZ2VuZXJhdGVkLmNvbHVtbiA9IDA7XG4gICAgICAgIC8vIE1hcHBpbmdzIGVuZCBhdCBlb2xcbiAgICAgICAgaWYgKGlkeCArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgIGxpbmU6IG9yaWdpbmFsLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4rKztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB0aGlzLndhbGtTb3VyY2VDb250ZW50cyhmdW5jdGlvbiAoc291cmNlRmlsZSwgc291cmNlQ29udGVudCkge1xuICAgIG1hcC5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpO1xuICB9KTtcblxuICByZXR1cm4geyBjb2RlOiBnZW5lcmF0ZWQuY29kZSwgbWFwOiBtYXAgfTtcbn07XG5cbmV4cG9ydHMuU291cmNlTm9kZSA9IFNvdXJjZU5vZGU7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuIiwidmFyIENsaWVudFJlcXVlc3QgPSByZXF1aXJlKCcuL2xpYi9yZXF1ZXN0JylcbnZhciByZXNwb25zZSA9IHJlcXVpcmUoJy4vbGliL3Jlc3BvbnNlJylcbnZhciBleHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgc3RhdHVzQ29kZXMgPSByZXF1aXJlKCdidWlsdGluLXN0YXR1cy1jb2RlcycpXG52YXIgdXJsID0gcmVxdWlyZSgndXJsJylcblxudmFyIGh0dHAgPSBleHBvcnRzXG5cbmh0dHAucmVxdWVzdCA9IGZ1bmN0aW9uIChvcHRzLCBjYikge1xuXHRpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKVxuXHRcdG9wdHMgPSB1cmwucGFyc2Uob3B0cylcblx0ZWxzZVxuXHRcdG9wdHMgPSBleHRlbmQob3B0cylcblxuXHQvLyBOb3JtYWxseSwgdGhlIHBhZ2UgaXMgbG9hZGVkIGZyb20gaHR0cCBvciBodHRwcywgc28gbm90IHNwZWNpZnlpbmcgYSBwcm90b2NvbFxuXHQvLyB3aWxsIHJlc3VsdCBpbiBhICh2YWxpZCkgcHJvdG9jb2wtcmVsYXRpdmUgdXJsLiBIb3dldmVyLCB0aGlzIHdvbid0IHdvcmsgaWZcblx0Ly8gdGhlIHByb3RvY29sIGlzIHNvbWV0aGluZyBlbHNlLCBsaWtlICdmaWxlOidcblx0dmFyIGRlZmF1bHRQcm90b2NvbCA9IGdsb2JhbC5sb2NhdGlvbi5wcm90b2NvbC5zZWFyY2goL15odHRwcz86JC8pID09PSAtMSA/ICdodHRwOicgOiAnJ1xuXG5cdHZhciBwcm90b2NvbCA9IG9wdHMucHJvdG9jb2wgfHwgZGVmYXVsdFByb3RvY29sXG5cdHZhciBob3N0ID0gb3B0cy5ob3N0bmFtZSB8fCBvcHRzLmhvc3Rcblx0dmFyIHBvcnQgPSBvcHRzLnBvcnRcblx0dmFyIHBhdGggPSBvcHRzLnBhdGggfHwgJy8nXG5cblx0Ly8gTmVjZXNzYXJ5IGZvciBJUHY2IGFkZHJlc3Nlc1xuXHRpZiAoaG9zdCAmJiBob3N0LmluZGV4T2YoJzonKSAhPT0gLTEpXG5cdFx0aG9zdCA9ICdbJyArIGhvc3QgKyAnXSdcblxuXHQvLyBUaGlzIG1heSBiZSBhIHJlbGF0aXZlIHVybC4gVGhlIGJyb3dzZXIgc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGludGVycHJldCBpdCBjb3JyZWN0bHkuXG5cdG9wdHMudXJsID0gKGhvc3QgPyAocHJvdG9jb2wgKyAnLy8nICsgaG9zdCkgOiAnJykgKyAocG9ydCA/ICc6JyArIHBvcnQgOiAnJykgKyBwYXRoXG5cdG9wdHMubWV0aG9kID0gKG9wdHMubWV0aG9kIHx8ICdHRVQnKS50b1VwcGVyQ2FzZSgpXG5cdG9wdHMuaGVhZGVycyA9IG9wdHMuaGVhZGVycyB8fCB7fVxuXG5cdC8vIEFsc28gdmFsaWQgb3B0cy5hdXRoLCBvcHRzLm1vZGVcblxuXHR2YXIgcmVxID0gbmV3IENsaWVudFJlcXVlc3Qob3B0cylcblx0aWYgKGNiKVxuXHRcdHJlcS5vbigncmVzcG9uc2UnLCBjYilcblx0cmV0dXJuIHJlcVxufVxuXG5odHRwLmdldCA9IGZ1bmN0aW9uIGdldCAob3B0cywgY2IpIHtcblx0dmFyIHJlcSA9IGh0dHAucmVxdWVzdChvcHRzLCBjYilcblx0cmVxLmVuZCgpXG5cdHJldHVybiByZXFcbn1cblxuaHR0cC5DbGllbnRSZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdFxuaHR0cC5JbmNvbWluZ01lc3NhZ2UgPSByZXNwb25zZS5JbmNvbWluZ01lc3NhZ2VcblxuaHR0cC5BZ2VudCA9IGZ1bmN0aW9uICgpIHt9XG5odHRwLkFnZW50LmRlZmF1bHRNYXhTb2NrZXRzID0gNFxuXG5odHRwLmdsb2JhbEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoKVxuXG5odHRwLlNUQVRVU19DT0RFUyA9IHN0YXR1c0NvZGVzXG5cbmh0dHAuTUVUSE9EUyA9IFtcblx0J0NIRUNLT1VUJyxcblx0J0NPTk5FQ1QnLFxuXHQnQ09QWScsXG5cdCdERUxFVEUnLFxuXHQnR0VUJyxcblx0J0hFQUQnLFxuXHQnTE9DSycsXG5cdCdNLVNFQVJDSCcsXG5cdCdNRVJHRScsXG5cdCdNS0FDVElWSVRZJyxcblx0J01LQ09MJyxcblx0J01PVkUnLFxuXHQnTk9USUZZJyxcblx0J09QVElPTlMnLFxuXHQnUEFUQ0gnLFxuXHQnUE9TVCcsXG5cdCdQUk9QRklORCcsXG5cdCdQUk9QUEFUQ0gnLFxuXHQnUFVSR0UnLFxuXHQnUFVUJyxcblx0J1JFUE9SVCcsXG5cdCdTRUFSQ0gnLFxuXHQnU1VCU0NSSUJFJyxcblx0J1RSQUNFJyxcblx0J1VOTE9DSycsXG5cdCdVTlNVQlNDUklCRSdcbl0iLCJleHBvcnRzLmZldGNoID0gaXNGdW5jdGlvbihnbG9iYWwuZmV0Y2gpICYmIGlzRnVuY3Rpb24oZ2xvYmFsLlJlYWRhYmxlU3RyZWFtKVxuXG5leHBvcnRzLndyaXRhYmxlU3RyZWFtID0gaXNGdW5jdGlvbihnbG9iYWwuV3JpdGFibGVTdHJlYW0pXG5cbmV4cG9ydHMuYWJvcnRDb250cm9sbGVyID0gaXNGdW5jdGlvbihnbG9iYWwuQWJvcnRDb250cm9sbGVyKVxuXG5leHBvcnRzLmJsb2JDb25zdHJ1Y3RvciA9IGZhbHNlXG50cnkge1xuXHRuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEpXSlcblx0ZXhwb3J0cy5ibG9iQ29uc3RydWN0b3IgPSB0cnVlXG59IGNhdGNoIChlKSB7fVxuXG4vLyBUaGUgeGhyIHJlcXVlc3QgdG8gZXhhbXBsZS5jb20gbWF5IHZpb2xhdGUgc29tZSByZXN0cmljdGl2ZSBDU1AgY29uZmlndXJhdGlvbnMsXG4vLyBzbyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIGBmZXRjaGAsIGF2b2lkIGNhbGxpbmcgZ2V0WEhSKClcbi8vIGFuZCBhc3N1bWUgc3VwcG9ydCBmb3IgY2VydGFpbiBmZWF0dXJlcyBiZWxvdy5cbnZhciB4aHJcbmZ1bmN0aW9uIGdldFhIUiAoKSB7XG5cdC8vIENhY2hlIHRoZSB4aHIgdmFsdWVcblx0aWYgKHhociAhPT0gdW5kZWZpbmVkKSByZXR1cm4geGhyXG5cblx0aWYgKGdsb2JhbC5YTUxIdHRwUmVxdWVzdCkge1xuXHRcdHhociA9IG5ldyBnbG9iYWwuWE1MSHR0cFJlcXVlc3QoKVxuXHRcdC8vIElmIFhEb21haW5SZXF1ZXN0IGlzIGF2YWlsYWJsZSAoaWUgb25seSwgd2hlcmUgeGhyIG1pZ2h0IG5vdCB3b3JrXG5cdFx0Ly8gY3Jvc3MgZG9tYWluKSwgdXNlIHRoZSBwYWdlIGxvY2F0aW9uLiBPdGhlcndpc2UgdXNlIGV4YW1wbGUuY29tXG5cdFx0Ly8gTm90ZTogdGhpcyBkb2Vzbid0IGFjdHVhbGx5IG1ha2UgYW4gaHR0cCByZXF1ZXN0LlxuXHRcdHRyeSB7XG5cdFx0XHR4aHIub3BlbignR0VUJywgZ2xvYmFsLlhEb21haW5SZXF1ZXN0ID8gJy8nIDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nKVxuXHRcdH0gY2F0Y2goZSkge1xuXHRcdFx0eGhyID0gbnVsbFxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBTZXJ2aWNlIHdvcmtlcnMgZG9uJ3QgaGF2ZSBYSFJcblx0XHR4aHIgPSBudWxsXG5cdH1cblx0cmV0dXJuIHhoclxufVxuXG5mdW5jdGlvbiBjaGVja1R5cGVTdXBwb3J0ICh0eXBlKSB7XG5cdHZhciB4aHIgPSBnZXRYSFIoKVxuXHRpZiAoIXhocikgcmV0dXJuIGZhbHNlXG5cdHRyeSB7XG5cdFx0eGhyLnJlc3BvbnNlVHlwZSA9IHR5cGVcblx0XHRyZXR1cm4geGhyLnJlc3BvbnNlVHlwZSA9PT0gdHlwZVxuXHR9IGNhdGNoIChlKSB7fVxuXHRyZXR1cm4gZmFsc2Vcbn1cblxuLy8gRm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIFNhZmFyaSA3LjAgcmVwb3J0cyB0eXBlb2YgZ2xvYmFsLkFycmF5QnVmZmVyID09PSAnb2JqZWN0Jy5cbi8vIFNhZmFyaSA3LjEgYXBwZWFycyB0byBoYXZlIGZpeGVkIHRoaXMgYnVnLlxudmFyIGhhdmVBcnJheUJ1ZmZlciA9IHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnXG52YXIgaGF2ZVNsaWNlID0gaGF2ZUFycmF5QnVmZmVyICYmIGlzRnVuY3Rpb24oZ2xvYmFsLkFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSlcblxuLy8gSWYgZmV0Y2ggaXMgc3VwcG9ydGVkLCB0aGVuIGFycmF5YnVmZmVyIHdpbGwgYmUgc3VwcG9ydGVkIHRvby4gU2tpcCBjYWxsaW5nXG4vLyBjaGVja1R5cGVTdXBwb3J0KCksIHNpbmNlIHRoYXQgY2FsbHMgZ2V0WEhSKCkuXG5leHBvcnRzLmFycmF5YnVmZmVyID0gZXhwb3J0cy5mZXRjaCB8fCAoaGF2ZUFycmF5QnVmZmVyICYmIGNoZWNrVHlwZVN1cHBvcnQoJ2FycmF5YnVmZmVyJykpXG5cbi8vIFRoZXNlIG5leHQgdHdvIHRlc3RzIHVuYXZvaWRhYmx5IHNob3cgd2FybmluZ3MgaW4gQ2hyb21lLiBTaW5jZSBmZXRjaCB3aWxsIGFsd2F5c1xuLy8gYmUgdXNlZCBpZiBpdCdzIGF2YWlsYWJsZSwganVzdCByZXR1cm4gZmFsc2UgZm9yIHRoZXNlIHRvIGF2b2lkIHRoZSB3YXJuaW5ncy5cbmV4cG9ydHMubXNzdHJlYW0gPSAhZXhwb3J0cy5mZXRjaCAmJiBoYXZlU2xpY2UgJiYgY2hlY2tUeXBlU3VwcG9ydCgnbXMtc3RyZWFtJylcbmV4cG9ydHMubW96Y2h1bmtlZGFycmF5YnVmZmVyID0gIWV4cG9ydHMuZmV0Y2ggJiYgaGF2ZUFycmF5QnVmZmVyICYmXG5cdGNoZWNrVHlwZVN1cHBvcnQoJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJylcblxuLy8gSWYgZmV0Y2ggaXMgc3VwcG9ydGVkLCB0aGVuIG92ZXJyaWRlTWltZVR5cGUgd2lsbCBiZSBzdXBwb3J0ZWQgdG9vLiBTa2lwIGNhbGxpbmdcbi8vIGdldFhIUigpLlxuZXhwb3J0cy5vdmVycmlkZU1pbWVUeXBlID0gZXhwb3J0cy5mZXRjaCB8fCAoZ2V0WEhSKCkgPyBpc0Z1bmN0aW9uKGdldFhIUigpLm92ZXJyaWRlTWltZVR5cGUpIDogZmFsc2UpXG5cbmV4cG9ydHMudmJBcnJheSA9IGlzRnVuY3Rpb24oZ2xvYmFsLlZCQXJyYXkpXG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24gKHZhbHVlKSB7XG5cdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbn1cblxueGhyID0gbnVsbCAvLyBIZWxwIGdjXG4iLCJ2YXIgY2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vY2FwYWJpbGl0eScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgcmVzcG9uc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxudmFyIHRvQXJyYXlCdWZmZXIgPSByZXF1aXJlKCd0by1hcnJheWJ1ZmZlcicpXG5cbnZhciBJbmNvbWluZ01lc3NhZ2UgPSByZXNwb25zZS5JbmNvbWluZ01lc3NhZ2VcbnZhciByU3RhdGVzID0gcmVzcG9uc2UucmVhZHlTdGF0ZXNcblxuZnVuY3Rpb24gZGVjaWRlTW9kZSAocHJlZmVyQmluYXJ5LCB1c2VGZXRjaCkge1xuXHRpZiAoY2FwYWJpbGl0eS5mZXRjaCAmJiB1c2VGZXRjaCkge1xuXHRcdHJldHVybiAnZmV0Y2gnXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5tb3pjaHVua2VkYXJyYXlidWZmZXIpIHtcblx0XHRyZXR1cm4gJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkubXNzdHJlYW0pIHtcblx0XHRyZXR1cm4gJ21zLXN0cmVhbSdcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5LmFycmF5YnVmZmVyICYmIHByZWZlckJpbmFyeSkge1xuXHRcdHJldHVybiAnYXJyYXlidWZmZXInXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS52YkFycmF5ICYmIHByZWZlckJpbmFyeSkge1xuXHRcdHJldHVybiAndGV4dDp2YmFycmF5J1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiAndGV4dCdcblx0fVxufVxuXG52YXIgQ2xpZW50UmVxdWVzdCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdHMpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHN0cmVhbS5Xcml0YWJsZS5jYWxsKHNlbGYpXG5cblx0c2VsZi5fb3B0cyA9IG9wdHNcblx0c2VsZi5fYm9keSA9IFtdXG5cdHNlbGYuX2hlYWRlcnMgPSB7fVxuXHRpZiAob3B0cy5hdXRoKVxuXHRcdHNlbGYuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBuZXcgQnVmZmVyKG9wdHMuYXV0aCkudG9TdHJpbmcoJ2Jhc2U2NCcpKVxuXHRPYmplY3Qua2V5cyhvcHRzLmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcblx0XHRzZWxmLnNldEhlYWRlcihuYW1lLCBvcHRzLmhlYWRlcnNbbmFtZV0pXG5cdH0pXG5cblx0dmFyIHByZWZlckJpbmFyeVxuXHR2YXIgdXNlRmV0Y2ggPSB0cnVlXG5cdGlmIChvcHRzLm1vZGUgPT09ICdkaXNhYmxlLWZldGNoJyB8fCAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzICYmICFjYXBhYmlsaXR5LmFib3J0Q29udHJvbGxlcikpIHtcblx0XHQvLyBJZiB0aGUgdXNlIG9mIFhIUiBzaG91bGQgYmUgcHJlZmVycmVkLiBOb3QgdHlwaWNhbGx5IG5lZWRlZC5cblx0XHR1c2VGZXRjaCA9IGZhbHNlXG5cdFx0cHJlZmVyQmluYXJ5ID0gdHJ1ZVxuXHR9IGVsc2UgaWYgKG9wdHMubW9kZSA9PT0gJ3ByZWZlci1zdHJlYW1pbmcnKSB7XG5cdFx0Ly8gSWYgc3RyZWFtaW5nIGlzIGEgaGlnaCBwcmlvcml0eSBidXQgYmluYXJ5IGNvbXBhdGliaWxpdHkgYW5kXG5cdFx0Ly8gdGhlIGFjY3VyYWN5IG9mIHRoZSAnY29udGVudC10eXBlJyBoZWFkZXIgYXJlbid0XG5cdFx0cHJlZmVyQmluYXJ5ID0gZmFsc2Vcblx0fSBlbHNlIGlmIChvcHRzLm1vZGUgPT09ICdhbGxvdy13cm9uZy1jb250ZW50LXR5cGUnKSB7XG5cdFx0Ly8gSWYgc3RyZWFtaW5nIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4gcHJlc2VydmluZyB0aGUgJ2NvbnRlbnQtdHlwZScgaGVhZGVyXG5cdFx0cHJlZmVyQmluYXJ5ID0gIWNhcGFiaWxpdHkub3ZlcnJpZGVNaW1lVHlwZVxuXHR9IGVsc2UgaWYgKCFvcHRzLm1vZGUgfHwgb3B0cy5tb2RlID09PSAnZGVmYXVsdCcgfHwgb3B0cy5tb2RlID09PSAncHJlZmVyLWZhc3QnKSB7XG5cdFx0Ly8gVXNlIGJpbmFyeSBpZiB0ZXh0IHN0cmVhbWluZyBtYXkgY29ycnVwdCBkYXRhIG9yIHRoZSBjb250ZW50LXR5cGUgaGVhZGVyLCBvciBmb3Igc3BlZWRcblx0XHRwcmVmZXJCaW5hcnkgPSB0cnVlXG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBvcHRzLm1vZGUnKVxuXHR9XG5cdHNlbGYuX21vZGUgPSBkZWNpZGVNb2RlKHByZWZlckJpbmFyeSwgdXNlRmV0Y2gpXG5cdHNlbGYuX2ZldGNoVGltZXIgPSBudWxsXG5cblx0c2VsZi5vbignZmluaXNoJywgZnVuY3Rpb24gKCkge1xuXHRcdHNlbGYuX29uRmluaXNoKClcblx0fSlcbn1cblxuaW5oZXJpdHMoQ2xpZW50UmVxdWVzdCwgc3RyZWFtLldyaXRhYmxlKVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHZhciBsb3dlck5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKClcblx0Ly8gVGhpcyBjaGVjayBpcyBub3QgbmVjZXNzYXJ5LCBidXQgaXQgcHJldmVudHMgd2FybmluZ3MgZnJvbSBicm93c2VycyBhYm91dCBzZXR0aW5nIHVuc2FmZVxuXHQvLyBoZWFkZXJzLiBUbyBiZSBob25lc3QgSSdtIG5vdCBlbnRpcmVseSBzdXJlIGhpZGluZyB0aGVzZSB3YXJuaW5ncyBpcyBhIGdvb2QgdGhpbmcsIGJ1dFxuXHQvLyBodHRwLWJyb3dzZXJpZnkgZGlkIGl0LCBzbyBJIHdpbGwgdG9vLlxuXHRpZiAodW5zYWZlSGVhZGVycy5pbmRleE9mKGxvd2VyTmFtZSkgIT09IC0xKVxuXHRcdHJldHVyblxuXG5cdHNlbGYuX2hlYWRlcnNbbG93ZXJOYW1lXSA9IHtcblx0XHRuYW1lOiBuYW1lLFxuXHRcdHZhbHVlOiB2YWx1ZVxuXHR9XG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdHZhciBoZWFkZXIgPSB0aGlzLl9oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV1cblx0aWYgKGhlYWRlcilcblx0XHRyZXR1cm4gaGVhZGVyLnZhbHVlXG5cdHJldHVybiBudWxsXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnJlbW92ZUhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRkZWxldGUgc2VsZi5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl9vbkZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRyZXR1cm5cblx0dmFyIG9wdHMgPSBzZWxmLl9vcHRzXG5cblx0dmFyIGhlYWRlcnNPYmogPSBzZWxmLl9oZWFkZXJzXG5cdHZhciBib2R5ID0gbnVsbFxuXHRpZiAob3B0cy5tZXRob2QgIT09ICdHRVQnICYmIG9wdHMubWV0aG9kICE9PSAnSEVBRCcpIHtcblx0XHRpZiAoY2FwYWJpbGl0eS5hcnJheWJ1ZmZlcikge1xuXHRcdFx0Ym9keSA9IHRvQXJyYXlCdWZmZXIoQnVmZmVyLmNvbmNhdChzZWxmLl9ib2R5KSlcblx0XHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkuYmxvYkNvbnN0cnVjdG9yKSB7XG5cdFx0XHRib2R5ID0gbmV3IGdsb2JhbC5CbG9iKHNlbGYuX2JvZHkubWFwKGZ1bmN0aW9uIChidWZmZXIpIHtcblx0XHRcdFx0cmV0dXJuIHRvQXJyYXlCdWZmZXIoYnVmZmVyKVxuXHRcdFx0fSksIHtcblx0XHRcdFx0dHlwZTogKGhlYWRlcnNPYmpbJ2NvbnRlbnQtdHlwZSddIHx8IHt9KS52YWx1ZSB8fCAnJ1xuXHRcdFx0fSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZ2V0IHV0Zjggc3RyaW5nXG5cdFx0XHRib2R5ID0gQnVmZmVyLmNvbmNhdChzZWxmLl9ib2R5KS50b1N0cmluZygpXG5cdFx0fVxuXHR9XG5cblx0Ly8gY3JlYXRlIGZsYXR0ZW5lZCBsaXN0IG9mIGhlYWRlcnNcblx0dmFyIGhlYWRlcnNMaXN0ID0gW11cblx0T2JqZWN0LmtleXMoaGVhZGVyc09iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5TmFtZSkge1xuXHRcdHZhciBuYW1lID0gaGVhZGVyc09ialtrZXlOYW1lXS5uYW1lXG5cdFx0dmFyIHZhbHVlID0gaGVhZGVyc09ialtrZXlOYW1lXS52YWx1ZVxuXHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0dmFsdWUuZm9yRWFjaChmdW5jdGlvbiAodikge1xuXHRcdFx0XHRoZWFkZXJzTGlzdC5wdXNoKFtuYW1lLCB2XSlcblx0XHRcdH0pXG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWRlcnNMaXN0LnB1c2goW25hbWUsIHZhbHVlXSlcblx0XHR9XG5cdH0pXG5cblx0aWYgKHNlbGYuX21vZGUgPT09ICdmZXRjaCcpIHtcblx0XHR2YXIgc2lnbmFsID0gbnVsbFxuXHRcdHZhciBmZXRjaFRpbWVyID0gbnVsbFxuXHRcdGlmIChjYXBhYmlsaXR5LmFib3J0Q29udHJvbGxlcikge1xuXHRcdFx0dmFyIGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblx0XHRcdHNpZ25hbCA9IGNvbnRyb2xsZXIuc2lnbmFsXG5cdFx0XHRzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlciA9IGNvbnRyb2xsZXJcblxuXHRcdFx0aWYgKCdyZXF1ZXN0VGltZW91dCcgaW4gb3B0cyAmJiBvcHRzLnJlcXVlc3RUaW1lb3V0ICE9PSAwKSB7XG5cdFx0XHRcdHNlbGYuX2ZldGNoVGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0c2VsZi5lbWl0KCdyZXF1ZXN0VGltZW91dCcpXG5cdFx0XHRcdFx0aWYgKHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyKVxuXHRcdFx0XHRcdFx0c2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuXHRcdFx0XHR9LCBvcHRzLnJlcXVlc3RUaW1lb3V0KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGdsb2JhbC5mZXRjaChzZWxmLl9vcHRzLnVybCwge1xuXHRcdFx0bWV0aG9kOiBzZWxmLl9vcHRzLm1ldGhvZCxcblx0XHRcdGhlYWRlcnM6IGhlYWRlcnNMaXN0LFxuXHRcdFx0Ym9keTogYm9keSB8fCB1bmRlZmluZWQsXG5cdFx0XHRtb2RlOiAnY29ycycsXG5cdFx0XHRjcmVkZW50aWFsczogb3B0cy53aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuXHRcdFx0c2lnbmFsOiBzaWduYWxcblx0XHR9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuXHRcdFx0c2VsZi5fZmV0Y2hSZXNwb25zZSA9IHJlc3BvbnNlXG5cdFx0XHRzZWxmLl9jb25uZWN0KClcblx0XHR9LCBmdW5jdGlvbiAocmVhc29uKSB7XG5cdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KHNlbGYuX2ZldGNoVGltZXIpXG5cdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIHJlYXNvbilcblx0XHR9KVxuXHR9IGVsc2Uge1xuXHRcdHZhciB4aHIgPSBzZWxmLl94aHIgPSBuZXcgZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KClcblx0XHR0cnkge1xuXHRcdFx0eGhyLm9wZW4oc2VsZi5fb3B0cy5tZXRob2QsIHNlbGYuX29wdHMudXJsLCB0cnVlKVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0Ly8gQ2FuJ3Qgc2V0IHJlc3BvbnNlVHlwZSBvbiByZWFsbHkgb2xkIGJyb3dzZXJzXG5cdFx0aWYgKCdyZXNwb25zZVR5cGUnIGluIHhocilcblx0XHRcdHhoci5yZXNwb25zZVR5cGUgPSBzZWxmLl9tb2RlLnNwbGl0KCc6JylbMF1cblxuXHRcdGlmICgnd2l0aENyZWRlbnRpYWxzJyBpbiB4aHIpXG5cdFx0XHR4aHIud2l0aENyZWRlbnRpYWxzID0gISFvcHRzLndpdGhDcmVkZW50aWFsc1xuXG5cdFx0aWYgKHNlbGYuX21vZGUgPT09ICd0ZXh0JyAmJiAnb3ZlcnJpZGVNaW1lVHlwZScgaW4geGhyKVxuXHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQnKVxuXG5cdFx0aWYgKCdyZXF1ZXN0VGltZW91dCcgaW4gb3B0cykge1xuXHRcdFx0eGhyLnRpbWVvdXQgPSBvcHRzLnJlcXVlc3RUaW1lb3V0XG5cdFx0XHR4aHIub250aW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLmVtaXQoJ3JlcXVlc3RUaW1lb3V0Jylcblx0XHRcdH1cblx0XHR9XG5cblx0XHRoZWFkZXJzTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcblx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuXHRcdH0pXG5cblx0XHRzZWxmLl9yZXNwb25zZSA9IG51bGxcblx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0c3dpdGNoICh4aHIucmVhZHlTdGF0ZSkge1xuXHRcdFx0XHRjYXNlIHJTdGF0ZXMuTE9BRElORzpcblx0XHRcdFx0Y2FzZSByU3RhdGVzLkRPTkU6XG5cdFx0XHRcdFx0c2VsZi5fb25YSFJQcm9ncmVzcygpXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTmVjZXNzYXJ5IGZvciBzdHJlYW1pbmcgaW4gRmlyZWZveCwgc2luY2UgeGhyLnJlc3BvbnNlIGlzIE9OTFkgZGVmaW5lZFxuXHRcdC8vIGluIG9ucHJvZ3Jlc3MsIG5vdCBpbiBvbnJlYWR5c3RhdGVjaGFuZ2Ugd2l0aCB4aHIucmVhZHlTdGF0ZSA9IDNcblx0XHRpZiAoc2VsZi5fbW9kZSA9PT0gJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJykge1xuXHRcdFx0eGhyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuX29uWEhSUHJvZ3Jlc3MoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdYSFIgZXJyb3InKSlcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0eGhyLnNlbmQoYm9keSlcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0fSlcblx0XHRcdHJldHVyblxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB4aHIuc3RhdHVzIGlzIHJlYWRhYmxlIGFuZCBub24temVybywgaW5kaWNhdGluZyBubyBlcnJvci5cbiAqIEV2ZW4gdGhvdWdoIHRoZSBzcGVjIHNheXMgaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiByZWFkeVN0YXRlIDMsXG4gKiBhY2Nlc3NpbmcgaXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBJRThcbiAqL1xuZnVuY3Rpb24gc3RhdHVzVmFsaWQgKHhocikge1xuXHR0cnkge1xuXHRcdHZhciBzdGF0dXMgPSB4aHIuc3RhdHVzXG5cdFx0cmV0dXJuIChzdGF0dXMgIT09IG51bGwgJiYgc3RhdHVzICE9PSAwKVxuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX29uWEhSUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdGlmICghc3RhdHVzVmFsaWQoc2VsZi5feGhyKSB8fCBzZWxmLl9kZXN0cm95ZWQpXG5cdFx0cmV0dXJuXG5cblx0aWYgKCFzZWxmLl9yZXNwb25zZSlcblx0XHRzZWxmLl9jb25uZWN0KClcblxuXHRzZWxmLl9yZXNwb25zZS5fb25YSFJQcm9ncmVzcygpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl9jb25uZWN0ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdHJldHVyblxuXG5cdHNlbGYuX3Jlc3BvbnNlID0gbmV3IEluY29taW5nTWVzc2FnZShzZWxmLl94aHIsIHNlbGYuX2ZldGNoUmVzcG9uc2UsIHNlbGYuX21vZGUsIHNlbGYuX2ZldGNoVGltZXIpXG5cdHNlbGYuX3Jlc3BvbnNlLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVycikge1xuXHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdH0pXG5cblx0c2VsZi5lbWl0KCdyZXNwb25zZScsIHNlbGYuX3Jlc3BvbnNlKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRzZWxmLl9ib2R5LnB1c2goY2h1bmspXG5cdGNiKClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuYWJvcnQgPSBDbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c2VsZi5fZGVzdHJveWVkID0gdHJ1ZVxuXHRnbG9iYWwuY2xlYXJUaW1lb3V0KHNlbGYuX2ZldGNoVGltZXIpXG5cdGlmIChzZWxmLl9yZXNwb25zZSlcblx0XHRzZWxmLl9yZXNwb25zZS5fZGVzdHJveWVkID0gdHJ1ZVxuXHRpZiAoc2VsZi5feGhyKVxuXHRcdHNlbGYuX3hoci5hYm9ydCgpXG5cdGVsc2UgaWYgKHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyKVxuXHRcdHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyLmFib3J0KClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0aWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0Y2IgPSBkYXRhXG5cdFx0ZGF0YSA9IHVuZGVmaW5lZFxuXHR9XG5cblx0c3RyZWFtLldyaXRhYmxlLnByb3RvdHlwZS5lbmQuY2FsbChzZWxmLCBkYXRhLCBlbmNvZGluZywgY2IpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmZsdXNoSGVhZGVycyA9IGZ1bmN0aW9uICgpIHt9XG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkge31cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldE5vRGVsYXkgPSBmdW5jdGlvbiAoKSB7fVxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0U29ja2V0S2VlcEFsaXZlID0gZnVuY3Rpb24gKCkge31cblxuLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9YTUxIdHRwUmVxdWVzdC8jdGhlLXNldHJlcXVlc3RoZWFkZXIlMjglMjktbWV0aG9kXG52YXIgdW5zYWZlSGVhZGVycyA9IFtcblx0J2FjY2VwdC1jaGFyc2V0Jyxcblx0J2FjY2VwdC1lbmNvZGluZycsXG5cdCdhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LWhlYWRlcnMnLFxuXHQnYWNjZXNzLWNvbnRyb2wtcmVxdWVzdC1tZXRob2QnLFxuXHQnY29ubmVjdGlvbicsXG5cdCdjb250ZW50LWxlbmd0aCcsXG5cdCdjb29raWUnLFxuXHQnY29va2llMicsXG5cdCdkYXRlJyxcblx0J2RudCcsXG5cdCdleHBlY3QnLFxuXHQnaG9zdCcsXG5cdCdrZWVwLWFsaXZlJyxcblx0J29yaWdpbicsXG5cdCdyZWZlcmVyJyxcblx0J3RlJyxcblx0J3RyYWlsZXInLFxuXHQndHJhbnNmZXItZW5jb2RpbmcnLFxuXHQndXBncmFkZScsXG5cdCd2aWEnXG5dXG4iLCJ2YXIgY2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vY2FwYWJpbGl0eScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgc3RyZWFtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJylcblxudmFyIHJTdGF0ZXMgPSBleHBvcnRzLnJlYWR5U3RhdGVzID0ge1xuXHRVTlNFTlQ6IDAsXG5cdE9QRU5FRDogMSxcblx0SEVBREVSU19SRUNFSVZFRDogMixcblx0TE9BRElORzogMyxcblx0RE9ORTogNFxufVxuXG52YXIgSW5jb21pbmdNZXNzYWdlID0gZXhwb3J0cy5JbmNvbWluZ01lc3NhZ2UgPSBmdW5jdGlvbiAoeGhyLCByZXNwb25zZSwgbW9kZSwgZmV0Y2hUaW1lcikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c3RyZWFtLlJlYWRhYmxlLmNhbGwoc2VsZilcblxuXHRzZWxmLl9tb2RlID0gbW9kZVxuXHRzZWxmLmhlYWRlcnMgPSB7fVxuXHRzZWxmLnJhd0hlYWRlcnMgPSBbXVxuXHRzZWxmLnRyYWlsZXJzID0ge31cblx0c2VsZi5yYXdUcmFpbGVycyA9IFtdXG5cblx0Ly8gRmFrZSB0aGUgJ2Nsb3NlJyBldmVudCwgYnV0IG9ubHkgb25jZSAnZW5kJyBmaXJlc1xuXHRzZWxmLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gVGhlIG5leHRUaWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSAncmVxdWVzdCcgbW9kdWxlIGZyb20gY2F1c2luZyBhbiBpbmZpbml0ZSBsb29wXG5cdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRzZWxmLmVtaXQoJ2Nsb3NlJylcblx0XHR9KVxuXHR9KVxuXG5cdGlmIChtb2RlID09PSAnZmV0Y2gnKSB7XG5cdFx0c2VsZi5fZmV0Y2hSZXNwb25zZSA9IHJlc3BvbnNlXG5cblx0XHRzZWxmLnVybCA9IHJlc3BvbnNlLnVybFxuXHRcdHNlbGYuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c1xuXHRcdHNlbGYuc3RhdHVzTWVzc2FnZSA9IHJlc3BvbnNlLnN0YXR1c1RleHRcblx0XHRcblx0XHRyZXNwb25zZS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlciwga2V5KXtcblx0XHRcdHNlbGYuaGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV0gPSBoZWFkZXJcblx0XHRcdHNlbGYucmF3SGVhZGVycy5wdXNoKGtleSwgaGVhZGVyKVxuXHRcdH0pXG5cblx0XHRpZiAoY2FwYWJpbGl0eS53cml0YWJsZVN0cmVhbSkge1xuXHRcdFx0dmFyIHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3RyZWFtKHtcblx0XHRcdFx0d3JpdGU6IGZ1bmN0aW9uIChjaHVuaykge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRcdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdCgpXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYoc2VsZi5wdXNoKG5ldyBCdWZmZXIoY2h1bmspKSkge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHNlbGYuX3Jlc3VtZUZldGNoID0gcmVzb2x2ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXNwb25zZS5ib2R5LnBpcGVUbyh3cml0YWJsZSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gcGlwZVRvIG1ldGhvZCBpc24ndCBkZWZpbmVkLiBDYW4ndCBmaW5kIGEgYmV0dGVyIHdheSB0byBmZWF0dXJlIHRlc3QgdGhpc1xuXHRcdH1cblx0XHQvLyBmYWxsYmFjayBmb3Igd2hlbiB3cml0YWJsZVN0cmVhbSBvciBwaXBlVG8gYXJlbid0IGF2YWlsYWJsZVxuXHRcdHZhciByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpXG5cdFx0ZnVuY3Rpb24gcmVhZCAoKSB7XG5cdFx0XHRyZWFkZXIucmVhZCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuXHRcdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRpZiAocmVzdWx0LmRvbmUpIHtcblx0XHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIocmVzdWx0LnZhbHVlKSlcblx0XHRcdFx0cmVhZCgpXG5cdFx0XHR9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdH0pXG5cdFx0fVxuXHRcdHJlYWQoKVxuXHR9IGVsc2Uge1xuXHRcdHNlbGYuX3hociA9IHhoclxuXHRcdHNlbGYuX3BvcyA9IDBcblxuXHRcdHNlbGYudXJsID0geGhyLnJlc3BvbnNlVVJMXG5cdFx0c2VsZi5zdGF0dXNDb2RlID0geGhyLnN0YXR1c1xuXHRcdHNlbGYuc3RhdHVzTWVzc2FnZSA9IHhoci5zdGF0dXNUZXh0XG5cdFx0dmFyIGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkuc3BsaXQoL1xccj9cXG4vKVxuXHRcdGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyA9IGhlYWRlci5tYXRjaCgvXihbXjpdKyk6XFxzKiguKikvKVxuXHRcdFx0aWYgKG1hdGNoZXMpIHtcblx0XHRcdFx0dmFyIGtleSA9IG1hdGNoZXNbMV0udG9Mb3dlckNhc2UoKVxuXHRcdFx0XHRpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcblx0XHRcdFx0XHRpZiAoc2VsZi5oZWFkZXJzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gPSBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XS5wdXNoKG1hdGNoZXNbMl0pXG5cdFx0XHRcdH0gZWxzZSBpZiAoc2VsZi5oZWFkZXJzW2tleV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldICs9ICcsICcgKyBtYXRjaGVzWzJdXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gPSBtYXRjaGVzWzJdXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5yYXdIZWFkZXJzLnB1c2gobWF0Y2hlc1sxXSwgbWF0Y2hlc1syXSlcblx0XHRcdH1cblx0XHR9KVxuXG5cdFx0c2VsZi5fY2hhcnNldCA9ICd4LXVzZXItZGVmaW5lZCdcblx0XHRpZiAoIWNhcGFiaWxpdHkub3ZlcnJpZGVNaW1lVHlwZSkge1xuXHRcdFx0dmFyIG1pbWVUeXBlID0gc2VsZi5yYXdIZWFkZXJzWydtaW1lLXR5cGUnXVxuXHRcdFx0aWYgKG1pbWVUeXBlKSB7XG5cdFx0XHRcdHZhciBjaGFyc2V0TWF0Y2ggPSBtaW1lVHlwZS5tYXRjaCgvO1xccypjaGFyc2V0PShbXjtdKSg7fCQpLylcblx0XHRcdFx0aWYgKGNoYXJzZXRNYXRjaCkge1xuXHRcdFx0XHRcdHNlbGYuX2NoYXJzZXQgPSBjaGFyc2V0TWF0Y2hbMV0udG9Mb3dlckNhc2UoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXNlbGYuX2NoYXJzZXQpXG5cdFx0XHRcdHNlbGYuX2NoYXJzZXQgPSAndXRmLTgnIC8vIGJlc3QgZ3Vlc3Ncblx0XHR9XG5cdH1cbn1cblxuaW5oZXJpdHMoSW5jb21pbmdNZXNzYWdlLCBzdHJlYW0uUmVhZGFibGUpXG5cbkluY29taW5nTWVzc2FnZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHZhciByZXNvbHZlID0gc2VsZi5fcmVzdW1lRmV0Y2hcblx0aWYgKHJlc29sdmUpIHtcblx0XHRzZWxmLl9yZXN1bWVGZXRjaCA9IG51bGxcblx0XHRyZXNvbHZlKClcblx0fVxufVxuXG5JbmNvbWluZ01lc3NhZ2UucHJvdG90eXBlLl9vblhIUlByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHR2YXIgeGhyID0gc2VsZi5feGhyXG5cblx0dmFyIHJlc3BvbnNlID0gbnVsbFxuXHRzd2l0Y2ggKHNlbGYuX21vZGUpIHtcblx0XHRjYXNlICd0ZXh0OnZiYXJyYXknOiAvLyBGb3IgSUU5XG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuRE9ORSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIFRoaXMgZmFpbHMgaW4gSUU4XG5cdFx0XHRcdHJlc3BvbnNlID0gbmV3IGdsb2JhbC5WQkFycmF5KHhoci5yZXNwb25zZUJvZHkpLnRvQXJyYXkoKVxuXHRcdFx0fSBjYXRjaCAoZSkge31cblx0XHRcdGlmIChyZXNwb25zZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihyZXNwb25zZSkpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0XHQvLyBGYWxscyB0aHJvdWdoIGluIElFOFx0XG5cdFx0Y2FzZSAndGV4dCc6XG5cdFx0XHR0cnkgeyAvLyBUaGlzIHdpbGwgZmFpbCB3aGVuIHJlYWR5U3RhdGUgPSAzIGluIElFOS4gU3dpdGNoIG1vZGUgYW5kIHdhaXQgZm9yIHJlYWR5U3RhdGUgPSA0XG5cdFx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlVGV4dFxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRzZWxmLl9tb2RlID0gJ3RleHQ6dmJhcnJheSdcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHRcdGlmIChyZXNwb25zZS5sZW5ndGggPiBzZWxmLl9wb3MpIHtcblx0XHRcdFx0dmFyIG5ld0RhdGEgPSByZXNwb25zZS5zdWJzdHIoc2VsZi5fcG9zKVxuXHRcdFx0XHRpZiAoc2VsZi5fY2hhcnNldCA9PT0gJ3gtdXNlci1kZWZpbmVkJykge1xuXHRcdFx0XHRcdHZhciBidWZmZXIgPSBuZXcgQnVmZmVyKG5ld0RhdGEubGVuZ3RoKVxuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKylcblx0XHRcdFx0XHRcdGJ1ZmZlcltpXSA9IG5ld0RhdGEuY2hhckNvZGVBdChpKSAmIDB4ZmZcblxuXHRcdFx0XHRcdHNlbGYucHVzaChidWZmZXIpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZi5wdXNoKG5ld0RhdGEsIHNlbGYuX2NoYXJzZXQpXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5fcG9zID0gcmVzcG9uc2UubGVuZ3RoXG5cdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdGNhc2UgJ2FycmF5YnVmZmVyJzpcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5ET05FIHx8ICF4aHIucmVzcG9uc2UpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVxuXHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpKSlcblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInOiAvLyB0YWtlIHdob2xlXG5cdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkxPQURJTkcgfHwgIXJlc3BvbnNlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpKSlcblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnbXMtc3RyZWFtJzpcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuTE9BRElORylcblx0XHRcdFx0YnJlYWtcblx0XHRcdHZhciByZWFkZXIgPSBuZXcgZ2xvYmFsLk1TU3RyZWFtUmVhZGVyKClcblx0XHRcdHJlYWRlci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRpZiAocmVhZGVyLnJlc3VsdC5ieXRlTGVuZ3RoID4gc2VsZi5fcG9zKSB7XG5cdFx0XHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVhZGVyLnJlc3VsdC5zbGljZShzZWxmLl9wb3MpKSkpXG5cdFx0XHRcdFx0c2VsZi5fcG9zID0gcmVhZGVyLnJlc3VsdC5ieXRlTGVuZ3RoXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYucHVzaChudWxsKVxuXHRcdFx0fVxuXHRcdFx0Ly8gcmVhZGVyLm9uZXJyb3IgPSA/Pz8gLy8gVE9ETzogdGhpc1xuXHRcdFx0cmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKHJlc3BvbnNlKVxuXHRcdFx0YnJlYWtcblx0fVxuXG5cdC8vIFRoZSBtcy1zdHJlYW0gY2FzZSBoYW5kbGVzIGVuZCBzZXBhcmF0ZWx5IGluIHJlYWRlci5vbmxvYWQoKVxuXHRpZiAoc2VsZi5feGhyLnJlYWR5U3RhdGUgPT09IHJTdGF0ZXMuRE9ORSAmJiBzZWxmLl9tb2RlICE9PSAnbXMtc3RyZWFtJykge1xuXHRcdHNlbGYucHVzaChudWxsKVxuXHR9XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCJmdW5jdGlvbiBBZ2VudCgpIHtcbiAgdGhpcy5fZGVmYXVsdHMgPSBbXTtcbn1cblxuW1widXNlXCIsIFwib25cIiwgXCJvbmNlXCIsIFwic2V0XCIsIFwicXVlcnlcIiwgXCJ0eXBlXCIsIFwiYWNjZXB0XCIsIFwiYXV0aFwiLCBcIndpdGhDcmVkZW50aWFsc1wiLCBcInNvcnRRdWVyeVwiLCBcInJldHJ5XCIsIFwib2tcIiwgXCJyZWRpcmVjdHNcIixcbiBcInRpbWVvdXRcIiwgXCJidWZmZXJcIiwgXCJzZXJpYWxpemVcIiwgXCJwYXJzZVwiLCBcImNhXCIsIFwia2V5XCIsIFwicGZ4XCIsIFwiY2VydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGZuKSB7XG4gIC8qKiBEZWZhdWx0IHNldHRpbmcgZm9yIGFsbCByZXF1ZXN0cyBmcm9tIHRoaXMgYWdlbnQgKi9cbiAgQWdlbnQucHJvdG90eXBlW2ZuXSA9IGZ1bmN0aW9uKC8qdmFyYXJncyovKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMucHVzaCh7Zm46Zm4sIGFyZ3VtZW50czphcmd1bWVudHN9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufSk7XG5cbkFnZW50LnByb3RvdHlwZS5fc2V0RGVmYXVsdHMgPSBmdW5jdGlvbihyZXEpIHtcbiAgICB0aGlzLl9kZWZhdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGRlZikge1xuICAgICAgcmVxW2RlZi5mbl0uYXBwbHkocmVxLCBkZWYuYXJndW1lbnRzKTtcbiAgICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQWdlbnQ7XG4iLCIvKipcbiAqIFJvb3QgcmVmZXJlbmNlIGZvciBpZnJhbWVzLlxuICovXG5cbnZhciByb290O1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7IC8vIEJyb3dzZXIgd2luZG93XG4gIHJvb3QgPSB3aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgeyAvLyBXZWIgV29ya2VyXG4gIHJvb3QgPSBzZWxmO1xufSBlbHNlIHsgLy8gT3RoZXIgZW52aXJvbm1lbnRzXG4gIGNvbnNvbGUud2FybihcIlVzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG4gIHJvb3QgPSB0aGlzO1xufVxuXG52YXIgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG52YXIgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pcy1vYmplY3QnKTtcbnZhciBSZXNwb25zZUJhc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlLWJhc2UnKTtcbnZhciBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpe307XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG52YXIgcmVxdWVzdCA9IGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsKSB7XG4gIC8vIGNhbGxiYWNrXG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiB1cmwpIHtcbiAgICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdCgnR0VUJywgbWV0aG9kKS5lbmQodXJsKTtcbiAgfVxuXG4gIC8vIHVybCBmaXJzdFxuICBpZiAoMSA9PSBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59XG5cbmV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG5cbi8qKlxuICogRGV0ZXJtaW5lIFhIUi5cbiAqL1xuXG5yZXF1ZXN0LmdldFhIUiA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHJvb3QuWE1MSHR0cFJlcXVlc3RcbiAgICAgICYmICghcm9vdC5sb2NhdGlvbiB8fCAnZmlsZTonICE9IHJvb3QubG9jYXRpb24ucHJvdG9jb2xcbiAgICAgICAgICB8fCAhcm9vdC5BY3RpdmVYT2JqZWN0KSkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOyB9IGNhdGNoKGUpIHt9XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUC42LjAnKTsgfSBjYXRjaChlKSB7fVxuICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7IH0gY2F0Y2goZSkge31cbiAgICB0cnkgeyByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyk7IH0gY2F0Y2goZSkge31cbiAgfVxuICB0aHJvdyBFcnJvcihcIkJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSXCIpO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGFkZGVkIHRvIHN1cHBvcnQgSUUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbnZhciB0cmltID0gJycudHJpbVxuICA/IGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMudHJpbSgpOyB9XG4gIDogZnVuY3Rpb24ocykgeyByZXR1cm4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTsgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmopIHtcbiAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICB2YXIgcGFpcnMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIG9ialtrZXldKTtcbiAgfVxuICByZXR1cm4gcGFpcnMuam9pbignJicpO1xufVxuXG4vKipcbiAqIEhlbHBzICdzZXJpYWxpemUnIHdpdGggc2VyaWFsaXppbmcgYXJyYXlzLlxuICogTXV0YXRlcyB0aGUgcGFpcnMgYXJyYXkuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gcGFpcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbFxuICovXG5cbmZ1bmN0aW9uIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHZhbCkge1xuICBpZiAodmFsICE9IG51bGwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBmb3IodmFyIHN1YmtleSBpbiB2YWwpIHtcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSArICdbJyArIHN1YmtleSArICddJywgdmFsW3N1YmtleV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpXG4gICAgICAgICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpKTtcbiAgfVxufVxuXG4vKipcbiAqIEV4cG9zZSBzZXJpYWxpemF0aW9uIG1ldGhvZC5cbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZU9iamVjdCA9IHNlcmlhbGl6ZTtcblxuLyoqXG4gICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAgKlxuICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICogQGFwaSBwcml2YXRlXG4gICovXG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nKHN0cikge1xuICB2YXIgb2JqID0ge307XG4gIHZhciBwYWlycyA9IHN0ci5zcGxpdCgnJicpO1xuICB2YXIgcGFpcjtcbiAgdmFyIHBvcztcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gcGFpcnMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PSAtMSkge1xuICAgICAgb2JqW2RlY29kZVVSSUNvbXBvbmVudChwYWlyKV0gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2RlY29kZVVSSUNvbXBvbmVudChwYWlyLnNsaWNlKDAsIHBvcykpXSA9XG4gICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChwYWlyLnNsaWNlKHBvcyArIDEpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEV4cG9zZSBwYXJzZXIuXG4gKi9cblxucmVxdWVzdC5wYXJzZVN0cmluZyA9IHBhcnNlU3RyaW5nO1xuXG4vKipcbiAqIERlZmF1bHQgTUlNRSB0eXBlIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC50eXBlcy54bWwgPSAnYXBwbGljYXRpb24veG1sJztcbiAqXG4gKi9cblxucmVxdWVzdC50eXBlcyA9IHtcbiAgaHRtbDogJ3RleHQvaHRtbCcsXG4gIGpzb246ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgeG1sOiAndGV4dC94bWwnLFxuICB1cmxlbmNvZGVkOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgJ2Zvcm0nOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgJ2Zvcm0tZGF0YSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG4vKipcbiAqIERlZmF1bHQgc2VyaWFsaXphdGlvbiBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQuc2VyaWFsaXplWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKG9iail7XG4gKiAgICAgICByZXR1cm4gJ2dlbmVyYXRlZCB4bWwgaGVyZSc7XG4gKiAgICAgfTtcbiAqXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemUgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBzZXJpYWxpemUsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5zdHJpbmdpZnlcbn07XG5cbi8qKlxuICAqIERlZmF1bHQgcGFyc2Vycy5cbiAgKlxuICAqICAgICBzdXBlcmFnZW50LnBhcnNlWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKHN0cil7XG4gICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICAqICAgICB9O1xuICAqXG4gICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyKSB7XG4gIHZhciBsaW5lcyA9IHN0ci5zcGxpdCgvXFxyP1xcbi8pO1xuICB2YXIgZmllbGRzID0ge307XG4gIHZhciBpbmRleDtcbiAgdmFyIGxpbmU7XG4gIHZhciBmaWVsZDtcbiAgdmFyIHZhbDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBsaW5lID0gbGluZXNbaV07XG4gICAgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7IC8vIGNvdWxkIGJlIGVtcHR5IGxpbmUsIGp1c3Qgc2tpcCBpdFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGZpZWxkID0gbGluZS5zbGljZSgwLCBpbmRleCkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbDtcbiAgfVxuXG4gIHJldHVybiBmaWVsZHM7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYG1pbWVgIGlzIGpzb24gb3IgaGFzICtqc29uIHN0cnVjdHVyZWQgc3ludGF4IHN1ZmZpeC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWltZVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzSlNPTihtaW1lKSB7XG4gIC8vIHNob3VsZCBtYXRjaCAvanNvbiBvciAranNvblxuICAvLyBidXQgbm90IC9qc29uLXNlcVxuICByZXR1cm4gL1tcXC8rXWpzb24oJHxbXi1cXHddKS8udGVzdChtaW1lKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXNwb25zZWAgd2l0aCB0aGUgZ2l2ZW4gYHhocmAuXG4gKlxuICogIC0gc2V0IGZsYWdzICgub2ssIC5lcnJvciwgZXRjKVxuICogIC0gcGFyc2UgaGVhZGVyXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogIEFsaWFzaW5nIGBzdXBlcmFnZW50YCBhcyBgcmVxdWVzdGAgaXMgbmljZTpcbiAqXG4gKiAgICAgIHJlcXVlc3QgPSBzdXBlcmFnZW50O1xuICpcbiAqICBXZSBjYW4gdXNlIHRoZSBwcm9taXNlLWxpa2UgQVBJLCBvciBwYXNzIGNhbGxiYWNrczpcbiAqXG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJykuZW5kKGZ1bmN0aW9uKHJlcyl7fSk7XG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJywgZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgU2VuZGluZyBkYXRhIGNhbiBiZSBjaGFpbmVkOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5zZW5kKClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIE9yIHBhc3NlZCB0byBgLnBvc3QoKWA6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIE9yIGZ1cnRoZXIgcmVkdWNlZCB0byBhIHNpbmdsZSBjYWxsIGZvciBzaW1wbGUgY2FzZXM6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogQHBhcmFtIHtYTUxIVFRQUmVxdWVzdH0geGhyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gUmVzcG9uc2UocmVxKSB7XG4gIHRoaXMucmVxID0gcmVxO1xuICB0aGlzLnhociA9IHRoaXMucmVxLnhocjtcbiAgLy8gcmVzcG9uc2VUZXh0IGlzIGFjY2Vzc2libGUgb25seSBpZiByZXNwb25zZVR5cGUgaXMgJycgb3IgJ3RleHQnIGFuZCBvbiBvbGRlciBicm93c2Vyc1xuICB0aGlzLnRleHQgPSAoKHRoaXMucmVxLm1ldGhvZCAhPSdIRUFEJyAmJiAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8IHR5cGVvZiB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd1bmRlZmluZWQnKVxuICAgICA/IHRoaXMueGhyLnJlc3BvbnNlVGV4dFxuICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICB2YXIgc3RhdHVzID0gdGhpcy54aHIuc3RhdHVzO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cbiAgdGhpcy5fc2V0U3RhdHVzUHJvcGVydGllcyhzdGF0dXMpO1xuICB0aGlzLmhlYWRlciA9IHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgLy8gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIHNvbWV0aW1lcyBmYWxzZWx5IHJldHVybnMgXCJcIiBmb3IgQ09SUyByZXF1ZXN0cywgYnV0XG4gIC8vIGdldFJlc3BvbnNlSGVhZGVyIHN0aWxsIHdvcmtzLiBzbyB3ZSBnZXQgY29udGVudC10eXBlIGV2ZW4gaWYgZ2V0dGluZ1xuICAvLyBvdGhlciBoZWFkZXJzIGZhaWxzLlxuICB0aGlzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSB0aGlzLnhoci5nZXRSZXNwb25zZUhlYWRlcignY29udGVudC10eXBlJyk7XG4gIHRoaXMuX3NldEhlYWRlclByb3BlcnRpZXModGhpcy5oZWFkZXIpO1xuXG4gIGlmIChudWxsID09PSB0aGlzLnRleHQgJiYgcmVxLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnJlcS5tZXRob2QgIT0gJ0hFQUQnXG4gICAgICA/IHRoaXMuX3BhcnNlQm9keSh0aGlzLnRleHQgPyB0aGlzLnRleHQgOiB0aGlzLnhoci5yZXNwb25zZSlcbiAgICAgIDogbnVsbDtcbiAgfVxufVxuXG5SZXNwb25zZUJhc2UoUmVzcG9uc2UucHJvdG90eXBlKTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYm9keSBgc3RyYC5cbiAqXG4gKiBVc2VkIGZvciBhdXRvLXBhcnNpbmcgb2YgYm9kaWVzLiBQYXJzZXJzXG4gKiBhcmUgZGVmaW5lZCBvbiB0aGUgYHN1cGVyYWdlbnQucGFyc2VgIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtNaXhlZH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS5fcGFyc2VCb2R5ID0gZnVuY3Rpb24oc3RyKSB7XG4gIHZhciBwYXJzZSA9IHJlcXVlc3QucGFyc2VbdGhpcy50eXBlXTtcbiAgaWYgKHRoaXMucmVxLl9wYXJzZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEuX3BhcnNlcih0aGlzLCBzdHIpO1xuICB9XG4gIGlmICghcGFyc2UgJiYgaXNKU09OKHRoaXMudHlwZSkpIHtcbiAgICBwYXJzZSA9IHJlcXVlc3QucGFyc2VbJ2FwcGxpY2F0aW9uL2pzb24nXTtcbiAgfVxuICByZXR1cm4gcGFyc2UgJiYgc3RyICYmIChzdHIubGVuZ3RoIHx8IHN0ciBpbnN0YW5jZW9mIE9iamVjdClcbiAgICA/IHBhcnNlKHN0cilcbiAgICA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybiBhbiBgRXJyb3JgIHJlcHJlc2VudGF0aXZlIG9mIHRoaXMgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybiB7RXJyb3J9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS50b0Vycm9yID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgbWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgdmFyIHVybCA9IHJlcS51cmw7XG5cbiAgdmFyIG1zZyA9ICdjYW5ub3QgJyArIG1ldGhvZCArICcgJyArIHVybCArICcgKCcgKyB0aGlzLnN0YXR1cyArICcpJztcbiAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpO1xuICBlcnIuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVyci5tZXRob2QgPSBtZXRob2Q7XG4gIGVyci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZWAuXG4gKi9cblxucmVxdWVzdC5SZXNwb25zZSA9IFJlc3BvbnNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlcXVlc3RgIHdpdGggdGhlIGdpdmVuIGBtZXRob2RgIGFuZCBgdXJsYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFJlcXVlc3QobWV0aG9kLCB1cmwpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9xdWVyeSA9IHRoaXMuX3F1ZXJ5IHx8IFtdO1xuICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgdGhpcy51cmwgPSB1cmw7XG4gIHRoaXMuaGVhZGVyID0ge307IC8vIHByZXNlcnZlcyBoZWFkZXIgbmFtZSBjYXNlXG4gIHRoaXMuX2hlYWRlciA9IHt9OyAvLyBjb2VyY2VzIGhlYWRlciBuYW1lcyB0byBsb3dlcmNhc2VcbiAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24oKXtcbiAgICB2YXIgZXJyID0gbnVsbDtcbiAgICB2YXIgcmVzID0gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICByZXMgPSBuZXcgUmVzcG9uc2Uoc2VsZik7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBlcnIgPSBuZXcgRXJyb3IoJ1BhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlJyk7XG4gICAgICBlcnIucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyLm9yaWdpbmFsID0gZTtcbiAgICAgIC8vIGlzc3VlICM2NzU6IHJldHVybiB0aGUgcmF3IHJlc3BvbnNlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICBpZiAoc2VsZi54aHIpIHtcbiAgICAgICAgLy8gaWU5IGRvZXNuJ3QgaGF2ZSAncmVzcG9uc2UnIHByb3BlcnR5XG4gICAgICAgIGVyci5yYXdSZXNwb25zZSA9IHR5cGVvZiBzZWxmLnhoci5yZXNwb25zZVR5cGUgPT0gJ3VuZGVmaW5lZCcgPyBzZWxmLnhoci5yZXNwb25zZVRleHQgOiBzZWxmLnhoci5yZXNwb25zZTtcbiAgICAgICAgLy8gaXNzdWUgIzg3NjogcmV0dXJuIHRoZSBodHRwIHN0YXR1cyBjb2RlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICAgIGVyci5zdGF0dXMgPSBzZWxmLnhoci5zdGF0dXMgPyBzZWxmLnhoci5zdGF0dXMgOiBudWxsO1xuICAgICAgICBlcnIuc3RhdHVzQ29kZSA9IGVyci5zdGF0dXM7IC8vIGJhY2t3YXJkcy1jb21wYXQgb25seVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyLnJhd1Jlc3BvbnNlID0gbnVsbDtcbiAgICAgICAgZXJyLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycik7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdyZXNwb25zZScsIHJlcyk7XG5cbiAgICB2YXIgbmV3X2VycjtcbiAgICB0cnkge1xuICAgICAgaWYgKCFzZWxmLl9pc1Jlc3BvbnNlT0socmVzKSkge1xuICAgICAgICBuZXdfZXJyID0gbmV3IEVycm9yKHJlcy5zdGF0dXNUZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goY3VzdG9tX2Vycikge1xuICAgICAgbmV3X2VyciA9IGN1c3RvbV9lcnI7IC8vIG9rKCkgY2FsbGJhY2sgY2FuIHRocm93XG4gICAgfVxuXG4gICAgLy8gIzEwMDAgZG9uJ3QgY2F0Y2ggZXJyb3JzIGZyb20gdGhlIGNhbGxiYWNrIHRvIGF2b2lkIGRvdWJsZSBjYWxsaW5nIGl0XG4gICAgaWYgKG5ld19lcnIpIHtcbiAgICAgIG5ld19lcnIub3JpZ2luYWwgPSBlcnI7XG4gICAgICBuZXdfZXJyLnJlc3BvbnNlID0gcmVzO1xuICAgICAgbmV3X2Vyci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmNhbGxiYWNrKG51bGwsIHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBNaXhpbiBgRW1pdHRlcmAgYW5kIGBSZXF1ZXN0QmFzZWAuXG4gKi9cblxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5SZXF1ZXN0QmFzZShSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogU2V0IENvbnRlbnQtVHlwZSB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy54bWwgPSAnYXBwbGljYXRpb24veG1sJztcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqICAgICAgcmVxdWVzdC5wb3N0KCcvJylcbiAqICAgICAgICAudHlwZSgnYXBwbGljYXRpb24veG1sJylcbiAqICAgICAgICAuc2VuZCh4bWxzdHJpbmcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24odHlwZSl7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24odHlwZSl7XG4gIHRoaXMuc2V0KCdBY2NlcHQnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEF1dGhvcml6YXRpb24gZmllbGQgdmFsdWUgd2l0aCBgdXNlcmAgYW5kIGBwYXNzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXNlclxuICogQHBhcmFtIHtTdHJpbmd9IFtwYXNzXSBvcHRpb25hbCBpbiBjYXNlIG9mIHVzaW5nICdiZWFyZXInIGFzIHR5cGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHdpdGggJ3R5cGUnIHByb3BlcnR5ICdhdXRvJywgJ2Jhc2ljJyBvciAnYmVhcmVyJyAoZGVmYXVsdCAnYmFzaWMnKVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmF1dGggPSBmdW5jdGlvbih1c2VyLCBwYXNzLCBvcHRpb25zKXtcbiAgaWYgKDEgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHBhc3MgPSAnJztcbiAgaWYgKHR5cGVvZiBwYXNzID09PSAnb2JqZWN0JyAmJiBwYXNzICE9PSBudWxsKSB7IC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHR5cGU6ICdmdW5jdGlvbicgPT09IHR5cGVvZiBidG9hID8gJ2Jhc2ljJyA6ICdhdXRvJyxcbiAgICB9O1xuICB9XG5cbiAgdmFyIGVuY29kZXIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGJ0b2EpIHtcbiAgICAgIHJldHVybiBidG9hKHN0cmluZyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBiYXNpYyBhdXRoLCBidG9hIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24odmFsKXtcbiAgaWYgKCdzdHJpbmcnICE9IHR5cGVvZiB2YWwpIHZhbCA9IHNlcmlhbGl6ZSh2YWwpO1xuICBpZiAodmFsKSB0aGlzLl9xdWVyeS5wdXNoKHZhbCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbihmaWVsZCwgZmlsZSwgb3B0aW9ucyl7XG4gIGlmIChmaWxlKSB7XG4gICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgIHRocm93IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fZ2V0Rm9ybURhdGEgPSBmdW5jdGlvbigpe1xuICBpZiAoIXRoaXMuX2Zvcm1EYXRhKSB7XG4gICAgdGhpcy5fZm9ybURhdGEgPSBuZXcgcm9vdC5Gb3JtRGF0YSgpO1xuICB9XG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnIsIHJlcyl7XG4gIGlmICh0aGlzLl9zaG91bGRSZXRyeShlcnIsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIHZhciBmbiA9IHRoaXMuX2NhbGxiYWNrO1xuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuXG4gIGlmIChlcnIpIHtcbiAgICBpZiAodGhpcy5fbWF4UmV0cmllcykgZXJyLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgfVxuXG4gIGZuKGVyciwgcmVzKTtcbn07XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdpdGggeC1kb21haW4gZXJyb3IuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY3Jvc3NEb21haW5FcnJvciA9IGZ1bmN0aW9uKCl7XG4gIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1JlcXVlc3QgaGFzIGJlZW4gdGVybWluYXRlZFxcblBvc3NpYmxlIGNhdXNlczogdGhlIG5ldHdvcmsgaXMgb2ZmbGluZSwgT3JpZ2luIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiwgdGhlIHBhZ2UgaXMgYmVpbmcgdW5sb2FkZWQsIGV0Yy4nKTtcbiAgZXJyLmNyb3NzRG9tYWluID0gdHJ1ZTtcblxuICBlcnIuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVyci5tZXRob2QgPSB0aGlzLm1ldGhvZDtcbiAgZXJyLnVybCA9IHRoaXMudXJsO1xuXG4gIHRoaXMuY2FsbGJhY2soZXJyKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYnVmZmVyID0gUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudCA9IGZ1bmN0aW9uKCl7XG4gIGNvbnNvbGUud2FybihcIlRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudFwiKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUucGlwZSA9IFJlcXVlc3QucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oKXtcbiAgdGhyb3cgRXJyb3IoXCJTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudFwiKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0LnByb3RvdHlwZS5faXNIb3N0ID0gZnVuY3Rpb24gX2lzSG9zdChvYmopIHtcbiAgLy8gTmF0aXZlIG9iamVjdHMgc3RyaW5naWZ5IHRvIFtvYmplY3QgRmlsZV0sIFtvYmplY3QgQmxvYl0sIFtvYmplY3QgRm9ybURhdGFdLCBldGMuXG4gIHJldHVybiBvYmogJiYgJ29iamVjdCcgPT09IHR5cGVvZiBvYmogJiYgIUFycmF5LmlzQXJyYXkob2JqKSAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XSc7XG59XG5cbi8qKlxuICogSW5pdGlhdGUgcmVxdWVzdCwgaW52b2tpbmcgY2FsbGJhY2sgYGZuKHJlcylgXG4gKiB3aXRoIGFuIGluc3RhbmNlb2YgYFJlc3BvbnNlYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGZuKXtcbiAgaWYgKHRoaXMuX2VuZENhbGxlZCkge1xuICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IC5lbmQoKSB3YXMgY2FsbGVkIHR3aWNlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3VwZXJhZ2VudFwiKTtcbiAgfVxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB4aHIgPSAodGhpcy54aHIgPSByZXF1ZXN0LmdldFhIUigpKTtcbiAgdmFyIGRhdGEgPSB0aGlzLl9mb3JtRGF0YSB8fCB0aGlzLl9kYXRhO1xuXG4gIHRoaXMuX3NldFRpbWVvdXRzKCk7XG5cbiAgLy8gc3RhdGUgY2hhbmdlXG4gIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe1xuICAgIHZhciByZWFkeVN0YXRlID0geGhyLnJlYWR5U3RhdGU7XG4gICAgaWYgKHJlYWR5U3RhdGUgPj0gMiAmJiBzZWxmLl9yZXNwb25zZVRpbWVvdXRUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKTtcbiAgICB9XG4gICAgaWYgKDQgIT0gcmVhZHlTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIElFOSwgcmVhZHMgdG8gYW55IHByb3BlcnR5IChlLmcuIHN0YXR1cykgb2ZmIG9mIGFuIGFib3J0ZWQgWEhSIHdpbGxcbiAgICAvLyByZXN1bHQgaW4gdGhlIGVycm9yIFwiQ291bGQgbm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gZHVlIHRvIGVycm9yIGMwMGMwMjNmXCJcbiAgICB2YXIgc3RhdHVzO1xuICAgIHRyeSB7IHN0YXR1cyA9IHhoci5zdGF0dXMgfSBjYXRjaChlKSB7IHN0YXR1cyA9IDA7IH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuICAgIHNlbGYuZW1pdCgnZW5kJyk7XG4gIH07XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgdmFyIGhhbmRsZVByb2dyZXNzID0gZnVuY3Rpb24oZGlyZWN0aW9uLCBlKSB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSBlLmxvYWRlZCAvIGUudG90YWwgKiAxMDA7XG4gICAgfVxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcbiAgaWYgKHRoaXMuaGFzTGlzdGVuZXJzKCdwcm9ncmVzcycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHhoci5vbnByb2dyZXNzID0gaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKTtcbiAgICAgIGlmICh4aHIudXBsb2FkKSB7XG4gICAgICAgIHhoci51cGxvYWQub25wcm9ncmVzcyA9IGhhbmRsZVByb2dyZXNzLmJpbmQobnVsbCwgJ3VwbG9hZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZSkge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICAvLyBpbml0aWF0ZSByZXF1ZXN0XG4gIHRyeSB7XG4gICAgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgeGhyLm9wZW4odGhpcy5tZXRob2QsIHRoaXMudXJsLCB0cnVlLCB0aGlzLnVzZXJuYW1lLCB0aGlzLnBhc3N3b3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeGhyLm9wZW4odGhpcy5tZXRob2QsIHRoaXMudXJsLCB0cnVlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHNlZSAjMTE0OVxuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrKGVycik7XG4gIH1cblxuICAvLyBDT1JTXG4gIGlmICh0aGlzLl93aXRoQ3JlZGVudGlhbHMpIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuXG4gIC8vIGJvZHlcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSAmJiAnR0VUJyAhPSB0aGlzLm1ldGhvZCAmJiAnSEVBRCcgIT0gdGhpcy5tZXRob2QgJiYgJ3N0cmluZycgIT0gdHlwZW9mIGRhdGEgJiYgIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgIC8vIHNlcmlhbGl6ZSBzdHVmZlxuICAgIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2hlYWRlclsnY29udGVudC10eXBlJ107XG4gICAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX3NlcmlhbGl6ZXIgfHwgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuICAgIGlmIChzZXJpYWxpemUpIGRhdGEgPSBzZXJpYWxpemUoZGF0YSk7XG4gIH1cblxuICAvLyBzZXQgaGVhZGVyIGZpZWxkc1xuICBmb3IgKHZhciBmaWVsZCBpbiB0aGlzLmhlYWRlcikge1xuICAgIGlmIChudWxsID09IHRoaXMuaGVhZGVyW2ZpZWxkXSkgY29udGludWU7XG5cbiAgICBpZiAodGhpcy5oZWFkZXIuaGFzT3duUHJvcGVydHkoZmllbGQpKVxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoZmllbGQsIHRoaXMuaGVhZGVyW2ZpZWxkXSk7XG4gIH1cblxuICBpZiAodGhpcy5fcmVzcG9uc2VUeXBlKSB7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9IHRoaXMuX3Jlc3BvbnNlVHlwZTtcbiAgfVxuXG4gIC8vIHNlbmQgc3R1ZmZcbiAgdGhpcy5lbWl0KCdyZXF1ZXN0JywgdGhpcyk7XG5cbiAgLy8gSUUxMSB4aHIuc2VuZCh1bmRlZmluZWQpIHNlbmRzICd1bmRlZmluZWQnIHN0cmluZyBhcyBQT1NUIHBheWxvYWQgKGluc3RlYWQgb2Ygbm90aGluZylcbiAgLy8gV2UgbmVlZCBudWxsIGhlcmUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgeGhyLnNlbmQodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnID8gZGF0YSA6IG51bGwpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBBZ2VudCgpO1xufTtcblxuW1wiR0VUXCIsIFwiUE9TVFwiLCBcIk9QVElPTlNcIiwgXCJQQVRDSFwiLCBcIlBVVFwiLCBcIkRFTEVURVwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24odXJsLCBmbikge1xuICAgIHZhciByZXEgPSBuZXcgcmVxdWVzdC5SZXF1ZXN0KG1ldGhvZCwgdXJsKTtcbiAgICB0aGlzLl9zZXREZWZhdWx0cyhyZXEpO1xuICAgIGlmIChmbikge1xuICAgICAgcmVxLmVuZChmbik7XG4gICAgfVxuICAgIHJldHVybiByZXE7XG4gIH07XG59KTtcblxuQWdlbnQucHJvdG90eXBlLmRlbCA9IEFnZW50LnByb3RvdHlwZVsnZGVsZXRlJ107XG5cbi8qKlxuICogR0VUIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5nZXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdHRVQnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEucXVlcnkoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIEhFQUQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmhlYWQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdIRUFEJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBPUFRJT05TIHF1ZXJ5IHRvIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5vcHRpb25zID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbikge1xuICB2YXIgcmVxID0gcmVxdWVzdCgnT1BUSU9OUycsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBERUxFVEUgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlbCh1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn1cblxucmVxdWVzdFsnZGVsJ10gPSBkZWw7XG5yZXF1ZXN0WydkZWxldGUnXSA9IGRlbDtcblxuLyoqXG4gKiBQQVRDSCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wYXRjaCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIFBPU1QgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucG9zdCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn07XG5cbi8qKlxuICogUFVUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnB1dCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDaGVjayBpZiBgb2JqYCBpcyBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICByZXR1cm4gbnVsbCAhPT0gb2JqICYmICdvYmplY3QnID09PSB0eXBlb2Ygb2JqO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBvZiBtaXhlZC1pbiBmdW5jdGlvbnMgc2hhcmVkIGJldHdlZW4gbm9kZSBhbmQgY2xpZW50IGNvZGVcbiAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pcy1vYmplY3QnKTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlcXVlc3RCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlcXVlc3RCYXNlYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFJlcXVlc3RCYXNlKG9iaikge1xuICBpZiAob2JqKSByZXR1cm4gbWl4aW4ob2JqKTtcbn1cblxuLyoqXG4gKiBNaXhpbiB0aGUgcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWl4aW4ob2JqKSB7XG4gIGZvciAodmFyIGtleSBpbiBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpIHtcbiAgICBvYmpba2V5XSA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZVtrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogQ2xlYXIgcHJldmlvdXMgdGltZW91dC5cbiAqXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uIF9jbGVhclRpbWVvdXQoKXtcbiAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiBwYXJzZShmbil7XG4gIHRoaXMuX3BhcnNlciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IGZvcm1hdCBvZiBiaW5hcnkgcmVzcG9uc2UgYm9keS5cbiAqIEluIGJyb3dzZXIgdmFsaWQgZm9ybWF0cyBhcmUgJ2Jsb2InIGFuZCAnYXJyYXlidWZmZXInLFxuICogd2hpY2ggcmV0dXJuIEJsb2IgYW5kIEFycmF5QnVmZmVyLCByZXNwZWN0aXZlbHkuXG4gKlxuICogSW4gTm9kZSBhbGwgdmFsdWVzIHJlc3VsdCBpbiBCdWZmZXIuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAucmVzcG9uc2VUeXBlKCdibG9iJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnJlc3BvbnNlVHlwZSA9IGZ1bmN0aW9uKHZhbCl7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQgcmVxdWVzdCBib2R5IHNlcmlhbGl6ZXJcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIGNvbnZlcnQgZGF0YSBzZXQgdmlhIC5zZW5kIG9yIC5hdHRhY2ggaW50byBwYXlsb2FkIHRvIHNlbmRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuc2VyaWFsaXplID0gZnVuY3Rpb24gc2VyaWFsaXplKGZuKXtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqXG4gKiBWYWx1ZSBvZiAwIG9yIGZhbHNlIG1lYW5zIG5vIHRpbWVvdXQuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ8T2JqZWN0fSBtcyBvciB7cmVzcG9uc2UsIGRlYWRsaW5lfVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS50aW1lb3V0ID0gZnVuY3Rpb24gdGltZW91dChvcHRpb25zKXtcbiAgaWYgKCFvcHRpb25zIHx8ICdvYmplY3QnICE9PSB0eXBlb2Ygb3B0aW9ucykge1xuICAgIHRoaXMuX3RpbWVvdXQgPSBvcHRpb25zO1xuICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IDA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmb3IodmFyIG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgc3dpdGNoKG9wdGlvbikge1xuICAgICAgY2FzZSAnZGVhZGxpbmUnOlxuICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNwb25zZSc6XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKFwiVW5rbm93biB0aW1lb3V0IG9wdGlvblwiLCBvcHRpb24pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IG51bWJlciBvZiByZXRyeSBhdHRlbXB0cyBvbiBlcnJvci5cbiAqXG4gKiBGYWlsZWQgcmVxdWVzdHMgd2lsbCBiZSByZXRyaWVkICdjb3VudCcgdGltZXMgaWYgdGltZW91dCBvciBlcnIuY29kZSA+PSA1MDAuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGNvdW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnJldHJ5ID0gZnVuY3Rpb24gcmV0cnkoY291bnQsIGZuKXtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG52YXIgRVJST1JfQ09ERVMgPSBbXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQUREUklORk8nLFxuICAnRVNPQ0tFVFRJTUVET1VUJ1xuXTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEJvcnJvd2VkIGZyb20gc2VnbWVudGlvL3N1cGVyYWdlbnQtcmV0cnkpXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSBbcmVzXVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbihlcnIsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuX3JldHJ5Q2FsbGJhY2spIHtcbiAgICB0cnkge1xuICAgICAgdmFyIG92ZXJyaWRlID0gdGhpcy5fcmV0cnlDYWxsYmFjayhlcnIsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiByZXMuc3RhdHVzID49IDUwMCAmJiByZXMuc3RhdHVzICE9IDUwMSkgcmV0dXJuIHRydWU7XG4gIGlmIChlcnIpIHtcbiAgICBpZiAoZXJyLmNvZGUgJiYgfkVSUk9SX0NPREVTLmluZGV4T2YoZXJyLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyLnRpbWVvdXQgJiYgZXJyLmNvZGUgPT0gJ0VDT05OQUJPUlRFRCcpIHJldHVybiB0cnVlO1xuICAgIGlmIChlcnIuY3Jvc3NEb21haW4pIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uKCkge1xuXG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgLy8gbm9kZVxuICBpZiAodGhpcy5yZXEpIHtcbiAgICB0aGlzLnJlcSA9IG51bGw7XG4gICAgdGhpcy5yZXEgPSB0aGlzLnJlcXVlc3QoKTtcbiAgfVxuXG4gIHRoaXMuX2Fib3J0ZWQgPSBmYWxzZTtcbiAgdGhpcy50aW1lZG91dCA9IGZhbHNlO1xuXG4gIHJldHVybiB0aGlzLl9lbmQoKTtcbn07XG5cbi8qKlxuICogUHJvbWlzZSBzdXBwb3J0XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3JlamVjdF1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiB0aGVuKHJlc29sdmUsIHJlamVjdCkge1xuICBpZiAoIXRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlc1wiKTtcbiAgICB9XG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihpbm5lclJlc29sdmUsIGlubmVyUmVqZWN0KSB7XG4gICAgICBzZWxmLmVuZChmdW5jdGlvbihlcnIsIHJlcykge1xuICAgICAgICBpZiAoZXJyKSBpbm5lclJlamVjdChlcnIpO1xuICAgICAgICBlbHNlIGlubmVyUmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKGNiKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYik7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uKGNiKSB7XG4gIGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2YgY2IpIHRocm93IEVycm9yKFwiQ2FsbGJhY2sgcmVxdWlyZWRcIik7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uKHJlcykge1xuICBpZiAoIXJlcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0aGlzLl9va0NhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuX29rQ2FsbGJhY2socmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXMuc3RhdHVzID49IDIwMCAmJiByZXMuc3RhdHVzIDwgMzAwO1xufTtcblxuLyoqXG4gKiBHZXQgcmVxdWVzdCBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihmaWVsZCl7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihmaWVsZCwgdmFsKXtcbiAgaWYgKGlzT2JqZWN0KGZpZWxkKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBmaWVsZCkge1xuICAgICAgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdGhpcy5faGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldID0gdmFsO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAudW5zZXQoJ1VzZXItQWdlbnQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihmaWVsZCl7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd8QmxvYnxGaWxlfEJ1ZmZlcnxmcy5SZWFkU3RyZWFtfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24obmFtZSwgdmFsKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChudWxsID09PSBuYW1lIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCIuZmllbGQoKSBjYW4ndCBiZSB1c2VkIGlmIC5zZW5kKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdChuYW1lKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICB0aGlzLmZpZWxkKGtleSwgbmFtZVtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgZm9yICh2YXIgaSBpbiB2YWwpIHtcbiAgICAgIHRoaXMuZmllbGQobmFtZSwgdmFsW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmIChudWxsID09PSB2YWwgfHwgdW5kZWZpbmVkID09PSB2YWwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy5maWVsZChuYW1lLCB2YWwpIHZhbCBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cbiAgaWYgKCdib29sZWFuJyA9PT0gdHlwZW9mIHZhbCkge1xuICAgIHZhbCA9ICcnICsgdmFsO1xuICB9XG4gIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBYm9ydCB0aGUgcmVxdWVzdCwgYW5kIGNsZWFyIHBvdGVudGlhbCB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuYWJvcnQgPSBmdW5jdGlvbigpe1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHRoaXMuX2Fib3J0ZWQgPSB0cnVlO1xuICB0aGlzLnhociAmJiB0aGlzLnhoci5hYm9ydCgpOyAvLyBicm93c2VyXG4gIHRoaXMucmVxICYmIHRoaXMucmVxLmFib3J0KCk7IC8vIG5vZGVcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgdGhpcy5lbWl0KCdhYm9ydCcpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fYXV0aCA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYmFzZTY0RW5jb2Rlcih1c2VyICsgJzonICsgcGFzcykpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHVzZXIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbihvbikge1xuICAvLyBUaGlzIGlzIGJyb3dzZXItb25seSBmdW5jdGlvbmFsaXR5LiBOb2RlIHNpZGUgaXMgbm8tb3AuXG4gIGlmIChvbiA9PSB1bmRlZmluZWQpIG9uID0gdHJ1ZTtcbiAgdGhpcy5fd2l0aENyZWRlbnRpYWxzID0gb247XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIG1heCByZWRpcmVjdHMgdG8gYG5gLiBEb2VzIG5vdGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbihuKXtcbiAgdGhpcy5fbWF4UmVkaXJlY3RzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIE1heGltdW0gc2l6ZSBvZiBidWZmZXJlZCByZXNwb25zZSBib2R5LCBpbiBieXRlcy4gQ291bnRzIHVuY29tcHJlc3NlZCBzaXplLlxuICogRGVmYXVsdCAyMDBNQi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbihuKXtcbiAgaWYgKCdudW1iZXInICE9PSB0eXBlb2Ygbikge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXJndW1lbnRcIik7XG4gIH1cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIG1ldGhvZDogdGhpcy5tZXRob2QsXG4gICAgdXJsOiB0aGlzLnVybCxcbiAgICBkYXRhOiB0aGlzLl9kYXRhLFxuICAgIGhlYWRlcnM6IHRoaXMuX2hlYWRlcixcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbihkYXRhKXtcbiAgdmFyIGlzT2JqID0gaXNPYmplY3QoZGF0YSk7XG4gIHZhciB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLnNlbmQoKSBjYW4ndCBiZSB1c2VkIGlmIC5hdHRhY2goKSBvciAuZmllbGQoKSBpcyB1c2VkLiBQbGVhc2UgdXNlIG9ubHkgLnNlbmQoKSBvciBvbmx5IC5maWVsZCgpICYgLmF0dGFjaCgpXCIpO1xuICB9XG5cbiAgaWYgKGlzT2JqICYmICF0aGlzLl9kYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBbXTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF0YSAmJiB0aGlzLl9kYXRhICYmIHRoaXMuX2lzSG9zdCh0aGlzLl9kYXRhKSkge1xuICAgIHRocm93IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iaiAmJiBpc09iamVjdCh0aGlzLl9kYXRhKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICB0aGlzLl9kYXRhW2tleV0gPSBkYXRhW2tleV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBkYXRhKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyA9PSB0eXBlKSB7XG4gICAgICB0aGlzLl9kYXRhID0gdGhpcy5fZGF0YVxuICAgICAgICA/IHRoaXMuX2RhdGEgKyAnJicgKyBkYXRhXG4gICAgICAgIDogZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGF0YSA9ICh0aGlzLl9kYXRhIHx8ICcnKSArIGRhdGE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICB9XG5cbiAgaWYgKCFpc09iaiB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uKHNvcnQpIHtcbiAgLy8gX3NvcnQgZGVmYXVsdCB0byB0cnVlIGJ1dCBvdGhlcndpc2UgY2FuIGJlIGEgZnVuY3Rpb24gb3IgYm9vbGVhblxuICB0aGlzLl9zb3J0ID0gdHlwZW9mIHNvcnQgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IHNvcnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDb21wb3NlIHF1ZXJ5c3RyaW5nIHRvIGFwcGVuZCB0byByZXEudXJsXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fZmluYWxpemVRdWVyeVN0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHZhciBxdWVyeSA9IHRoaXMuX3F1ZXJ5LmpvaW4oJyYnKTtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgdGhpcy51cmwgKz0gKHRoaXMudXJsLmluZGV4T2YoJz8nKSA+PSAwID8gJyYnIDogJz8nKSArIHF1ZXJ5O1xuICB9XG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIHZhciBpbmRleCA9IHRoaXMudXJsLmluZGV4T2YoJz8nKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIHF1ZXJ5QXJyID0gdGhpcy51cmwuc3Vic3RyaW5nKGluZGV4ICsgMSkuc3BsaXQoJyYnKTtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgdGhpcy5fc29ydCkge1xuICAgICAgICBxdWVyeUFyci5zb3J0KHRoaXMuX3NvcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlBcnIuc29ydCgpO1xuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5zdWJzdHJpbmcoMCwgaW5kZXgpICsgJz8nICsgcXVlcnlBcnIuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9IGZ1bmN0aW9uKCkge2NvbnNvbGUudHJhY2UoXCJVbnN1cHBvcnRlZFwiKTt9XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdpdGggdGltZW91dCBlcnJvci5cbiAqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3RpbWVvdXRFcnJvciA9IGZ1bmN0aW9uKHJlYXNvbiwgdGltZW91dCwgZXJybm8pe1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgZXJyID0gbmV3IEVycm9yKHJlYXNvbiArIHRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnKTtcbiAgZXJyLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnIuY29kZSA9ICdFQ09OTkFCT1JURUQnO1xuICBlcnIuZXJybm8gPSBlcnJubztcbiAgdGhpcy50aW1lZG91dCA9IHRydWU7XG4gIHRoaXMuYWJvcnQoKTtcbiAgdGhpcy5jYWxsYmFjayhlcnIpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9zZXRUaW1lb3V0cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLy8gZGVhZGxpbmVcbiAgaWYgKHRoaXMuX3RpbWVvdXQgJiYgIXRoaXMuX3RpbWVyKSB7XG4gICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cbiAgLy8gcmVzcG9uc2UgdGltZW91dFxuICBpZiAodGhpcy5fcmVzcG9uc2VUaW1lb3V0ICYmICF0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lcikge1xuICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgc2VsZi5fdGltZW91dEVycm9yKCdSZXNwb25zZSB0aW1lb3V0IG9mICcsIHNlbGYuX3Jlc3BvbnNlVGltZW91dCwgJ0VUSU1FRE9VVCcpO1xuICAgIH0sIHRoaXMuX3Jlc3BvbnNlVGltZW91dCk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZUJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2VCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlQmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXNwb25zZUJhc2Uob2JqKSB7XG4gIGlmIChvYmopIHJldHVybiBtaXhpbihvYmopO1xufVxuXG4vKipcbiAqIE1peGluIHRoZSBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBtaXhpbihvYmopIHtcbiAgZm9yICh2YXIga2V5IGluIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpIHtcbiAgICBvYmpba2V5XSA9IFJlc3BvbnNlQmFzZS5wcm90b3R5cGVba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGBmaWVsZGAgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZmllbGQpIHtcbiAgcmV0dXJuIHRoaXMuaGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldO1xufTtcblxuLyoqXG4gKiBTZXQgaGVhZGVyIHJlbGF0ZWQgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gYC50eXBlYCB0aGUgY29udGVudCB0eXBlIHdpdGhvdXQgcGFyYW1zXG4gKlxuICogQSByZXNwb25zZSBvZiBcIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFwiXG4gKiB3aWxsIHByb3ZpZGUgeW91IHdpdGggYSBgLnR5cGVgIG9mIFwidGV4dC9wbGFpblwiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuX3NldEhlYWRlclByb3BlcnRpZXMgPSBmdW5jdGlvbihoZWFkZXIpe1xuICAgIC8vIFRPRE86IG1vYXIhXG4gICAgLy8gVE9ETzogbWFrZSB0aGlzIGEgdXRpbFxuXG4gICAgLy8gY29udGVudC10eXBlXG4gICAgdmFyIGN0ID0gaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB1dGlscy50eXBlKGN0KTtcblxuICAgIC8vIHBhcmFtc1xuICAgIHZhciBwYXJhbXMgPSB1dGlscy5wYXJhbXMoY3QpO1xuICAgIGZvciAodmFyIGtleSBpbiBwYXJhbXMpIHRoaXNba2V5XSA9IHBhcmFtc1trZXldO1xuXG4gICAgdGhpcy5saW5rcyA9IHt9O1xuXG4gICAgLy8gbGlua3NcbiAgICB0cnkge1xuICAgICAgICBpZiAoaGVhZGVyLmxpbmspIHtcbiAgICAgICAgICAgIHRoaXMubGlua3MgPSB1dGlscy5wYXJzZUxpbmtzKGhlYWRlci5saW5rKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICB9XG59O1xuXG4vKipcbiAqIFNldCBmbGFncyBzdWNoIGFzIGAub2tgIGJhc2VkIG9uIGBzdGF0dXNgLlxuICpcbiAqIEZvciBleGFtcGxlIGEgMnh4IHJlc3BvbnNlIHdpbGwgZ2l2ZSB5b3UgYSBgLm9rYCBvZiBfX3RydWVfX1xuICogd2hlcmVhcyA1eHggd2lsbCBiZSBfX2ZhbHNlX18gYW5kIGAuZXJyb3JgIHdpbGwgYmUgX190cnVlX18uIFRoZVxuICogYC5jbGllbnRFcnJvcmAgYW5kIGAuc2VydmVyRXJyb3JgIGFyZSBhbHNvIGF2YWlsYWJsZSB0byBiZSBtb3JlXG4gKiBzcGVjaWZpYywgYW5kIGAuc3RhdHVzVHlwZWAgaXMgdGhlIGNsYXNzIG9mIGVycm9yIHJhbmdpbmcgZnJvbSAxLi41XG4gKiBzb21ldGltZXMgdXNlZnVsIGZvciBtYXBwaW5nIHJlc3BvbmQgY29sb3JzIGV0Yy5cbiAqXG4gKiBcInN1Z2FyXCIgcHJvcGVydGllcyBhcmUgYWxzbyBkZWZpbmVkIGZvciBjb21tb24gY2FzZXMuIEN1cnJlbnRseSBwcm92aWRpbmc6XG4gKlxuICogICAtIC5ub0NvbnRlbnRcbiAqICAgLSAuYmFkUmVxdWVzdFxuICogICAtIC51bmF1dGhvcml6ZWRcbiAqICAgLSAubm90QWNjZXB0YWJsZVxuICogICAtIC5ub3RGb3VuZFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdGF0dXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuX3NldFN0YXR1c1Byb3BlcnRpZXMgPSBmdW5jdGlvbihzdGF0dXMpe1xuICAgIHZhciB0eXBlID0gc3RhdHVzIC8gMTAwIHwgMDtcblxuICAgIC8vIHN0YXR1cyAvIGNsYXNzXG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNUeXBlID0gdHlwZTtcblxuICAgIC8vIGJhc2ljc1xuICAgIHRoaXMuaW5mbyA9IDEgPT0gdHlwZTtcbiAgICB0aGlzLm9rID0gMiA9PSB0eXBlO1xuICAgIHRoaXMucmVkaXJlY3QgPSAzID09IHR5cGU7XG4gICAgdGhpcy5jbGllbnRFcnJvciA9IDQgPT0gdHlwZTtcbiAgICB0aGlzLnNlcnZlckVycm9yID0gNSA9PSB0eXBlO1xuICAgIHRoaXMuZXJyb3IgPSAoNCA9PSB0eXBlIHx8IDUgPT0gdHlwZSlcbiAgICAgICAgPyB0aGlzLnRvRXJyb3IoKVxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgLy8gc3VnYXJcbiAgICB0aGlzLmNyZWF0ZWQgPSAyMDEgPT0gc3RhdHVzO1xuICAgIHRoaXMuYWNjZXB0ZWQgPSAyMDIgPT0gc3RhdHVzO1xuICAgIHRoaXMubm9Db250ZW50ID0gMjA0ID09IHN0YXR1cztcbiAgICB0aGlzLmJhZFJlcXVlc3QgPSA0MDAgPT0gc3RhdHVzO1xuICAgIHRoaXMudW5hdXRob3JpemVkID0gNDAxID09IHN0YXR1cztcbiAgICB0aGlzLm5vdEFjY2VwdGFibGUgPSA0MDYgPT0gc3RhdHVzO1xuICAgIHRoaXMuZm9yYmlkZGVuID0gNDAzID09IHN0YXR1cztcbiAgICB0aGlzLm5vdEZvdW5kID0gNDA0ID09IHN0YXR1cztcbiAgICB0aGlzLnVucHJvY2Vzc2FibGVFbnRpdHkgPSA0MjIgPT0gc3RhdHVzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIG1pbWUgdHlwZSBmb3IgdGhlIGdpdmVuIGBzdHJgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMudHlwZSA9IGZ1bmN0aW9uKHN0cil7XG4gIHJldHVybiBzdHIuc3BsaXQoLyAqOyAqLykuc2hpZnQoKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhlYWRlciBmaWVsZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMucGFyYW1zID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5zcGxpdCgvICo7ICovKS5yZWR1Y2UoZnVuY3Rpb24ob2JqLCBzdHIpe1xuICAgIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgvICo9ICovKTtcbiAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKTtcbiAgICB2YXIgdmFsID0gcGFydHMuc2hpZnQoKTtcblxuICAgIGlmIChrZXkgJiYgdmFsKSBvYmpba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gb2JqO1xuICB9LCB7fSk7XG59O1xuXG4vKipcbiAqIFBhcnNlIExpbmsgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcnNlTGlua3MgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnNwbGl0KC8gKiwgKi8pLnJlZHVjZShmdW5jdGlvbihvYmosIHN0cil7XG4gICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KC8gKjsgKi8pO1xuICAgIHZhciB1cmwgPSBwYXJ0c1swXS5zbGljZSgxLCAtMSk7XG4gICAgdmFyIHJlbCA9IHBhcnRzWzFdLnNwbGl0KC8gKj0gKi8pWzFdLnNsaWNlKDEsIC0xKTtcbiAgICBvYmpbcmVsXSA9IHVybDtcbiAgICByZXR1cm4gb2JqO1xuICB9LCB7fSk7XG59O1xuXG4vKipcbiAqIFN0cmlwIGNvbnRlbnQgcmVsYXRlZCBmaWVsZHMgZnJvbSBgaGVhZGVyYC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAcmV0dXJuIHtPYmplY3R9IGhlYWRlclxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5jbGVhbkhlYWRlciA9IGZ1bmN0aW9uKGhlYWRlciwgY2hhbmdlc09yaWdpbil7XG4gIGRlbGV0ZSBoZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LWxlbmd0aCddO1xuICBkZWxldGUgaGVhZGVyWyd0cmFuc2Zlci1lbmNvZGluZyddO1xuICBkZWxldGUgaGVhZGVyWydob3N0J107XG4gIC8vIHNlY3VpcnR5XG4gIGlmIChjaGFuZ2VzT3JpZ2luKSB7XG4gICAgZGVsZXRlIGhlYWRlclsnYXV0aG9yaXphdGlvbiddO1xuICAgIGRlbGV0ZSBoZWFkZXJbJ2Nvb2tpZSddO1xuICB9XG4gIHJldHVybiBoZWFkZXI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2dldCcsICdwdXQnLCAncG9zdCcsICdkZWxldGUnLCAnb3B0aW9ucycsICdoZWFkJywgJ3BhdGNoJ1xuXTtcbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgXCJ0aXRsZVwiOiBcIkEgSlNPTiBTY2hlbWEgZm9yIFN3YWdnZXIgMi4wIEFQSS5cIixcbiAgXCJpZFwiOiBcImh0dHA6Ly9zd2FnZ2VyLmlvL3YyL3NjaGVtYS5qc29uI1wiLFxuICBcIiRzY2hlbWFcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSNcIixcbiAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gIFwicmVxdWlyZWRcIjogW1xuICAgIFwic3dhZ2dlclwiLFxuICAgIFwiaW5mb1wiLFxuICAgIFwicGF0aHNcIlxuICBdLFxuICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICBcIl54LVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgfVxuICB9LFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgIFwic3dhZ2dlclwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgIFwiMi4wXCJcbiAgICAgIF0sXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIFN3YWdnZXIgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50LlwiXG4gICAgfSxcbiAgICBcImluZm9cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9pbmZvXCJcbiAgICB9LFxuICAgIFwiaG9zdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwicGF0dGVyblwiOiBcIl5bXnt9LyA6XFxcXFxcXFxdKyg/OjpcXFxcZCspPyRcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgaG9zdCAobmFtZSBvciBpcCkgb2YgdGhlIEFQSS4gRXhhbXBsZTogJ3N3YWdnZXIuaW8nXCJcbiAgICB9LFxuICAgIFwiYmFzZVBhdGhcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcInBhdHRlcm5cIjogXCJeL1wiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBiYXNlIHBhdGggdG8gdGhlIEFQSS4gRXhhbXBsZTogJy9hcGknLlwiXG4gICAgfSxcbiAgICBcInNjaGVtZXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWVzTGlzdFwiXG4gICAgfSxcbiAgICBcImNvbnN1bWVzXCI6IHtcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxpc3Qgb2YgTUlNRSB0eXBlcyBhY2NlcHRlZCBieSB0aGUgQVBJLlwiLFxuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tZWRpYVR5cGVMaXN0XCJcbiAgICB9LFxuICAgIFwicHJvZHVjZXNcIjoge1xuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbGlzdCBvZiBNSU1FIHR5cGVzIHRoZSBBUEkgY2FuIHByb2R1Y2UuXCIsXG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgIH0sXG4gICAgXCJwYXRoc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdGhzXCJcbiAgICB9LFxuICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZpbml0aW9uc1wiXG4gICAgfSxcbiAgICBcInBhcmFtZXRlcnNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXJhbWV0ZXJEZWZpbml0aW9uc1wiXG4gICAgfSxcbiAgICBcInJlc3BvbnNlc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Jlc3BvbnNlRGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJzZWN1cml0eVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NlY3VyaXR5XCJcbiAgICB9LFxuICAgIFwic2VjdXJpdHlEZWZpbml0aW9uc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NlY3VyaXR5RGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJ0YWdzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy90YWdcIlxuICAgICAgfSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgIH1cbiAgfSxcbiAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgXCJpbmZvXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFQSS5cIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInZlcnNpb25cIixcbiAgICAgICAgXCJ0aXRsZVwiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0aXRsZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgdW5pcXVlIGFuZCBwcmVjaXNlIHRpdGxlIG9mIHRoZSBBUEkuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ2ZXJzaW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlciBvZiB0aGUgQVBJLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxvbmdlciBkZXNjcmlwdGlvbiBvZiB0aGUgQVBJLiBTaG91bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIHRpdGxlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXJtc09mU2VydmljZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSB0ZXJtcyBvZiBzZXJ2aWNlIGZvciB0aGUgQVBJLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29udGFjdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb250YWN0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJsaWNlbnNlXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2xpY2Vuc2VcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImNvbnRhY3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlIG93bmVycyBvZiB0aGUgQVBJLlwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBpZGVudGlmeWluZyBuYW1lIG9mIHRoZSBjb250YWN0IHBlcnNvbi9vcmdhbml6YXRpb24uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgVVJMIHBvaW50aW5nIHRvIHRoZSBjb250YWN0IGluZm9ybWF0aW9uLlwiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbWFpbFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBjb250YWN0IHBlcnNvbi9vcmdhbml6YXRpb24uXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJlbWFpbFwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJsaWNlbnNlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBsaWNlbnNlIHR5cGUuIEl0J3MgZW5jb3VyYWdlZCB0byB1c2UgYW4gT1NJIGNvbXBhdGlibGUgbGljZW5zZS5cIlxuICAgICAgICB9LFxuICAgICAgICBcInVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGxpY2Vuc2UuXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGF0aHNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiUmVsYXRpdmUgcGF0aHMgdG8gdGhlIGluZGl2aWR1YWwgZW5kcG9pbnRzLiBUaGV5IG11c3QgYmUgcmVsYXRpdmUgdG8gdGhlICdiYXNlUGF0aCcuXCIsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJeL1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXRoSXRlbVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgIH0sXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiT25lIG9yIG1vcmUgSlNPTiBvYmplY3RzIGRlc2NyaWJpbmcgdGhlIHNjaGVtYXMgYmVpbmcgY29uc3VtZWQgYW5kIHByb2R1Y2VkIGJ5IHRoZSBBUEkuXCJcbiAgICB9LFxuICAgIFwicGFyYW1ldGVyRGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXJhbWV0ZXJcIlxuICAgICAgfSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJPbmUgb3IgbW9yZSBKU09OIHJlcHJlc2VudGF0aW9ucyBmb3IgcGFyYW1ldGVyc1wiXG4gICAgfSxcbiAgICBcInJlc3BvbnNlRGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZVwiXG4gICAgICB9LFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIk9uZSBvciBtb3JlIEpTT04gcmVwcmVzZW50YXRpb25zIGZvciBwYXJhbWV0ZXJzXCJcbiAgICB9LFxuICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJpbmZvcm1hdGlvbiBhYm91dCBleHRlcm5hbCBkb2N1bWVudGF0aW9uXCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ1cmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJleGFtcGxlc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJtaW1lVHlwZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgTUlNRSB0eXBlIG9mIHRoZSBIVFRQIG1lc3NhZ2UuXCJcbiAgICB9LFxuICAgIFwib3BlcmF0aW9uXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwicmVzcG9uc2VzXCJcbiAgICAgIF0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInRhZ3NcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic3VtbWFyeVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgc3VtbWFyeSBvZiB0aGUgb3BlcmF0aW9uLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxvbmdlciBkZXNjcmlwdGlvbiBvZiB0aGUgb3BlcmF0aW9uLCBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9LFxuICAgICAgICBcIm9wZXJhdGlvbklkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3BlcmF0aW9uLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvZHVjZXNcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxpc3Qgb2YgTUlNRSB0eXBlcyB0aGUgQVBJIGNhbiBwcm9kdWNlLlwiLFxuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWVkaWFUeXBlTGlzdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29uc3VtZXNcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxpc3Qgb2YgTUlNRSB0eXBlcyB0aGUgQVBJIGNhbiBjb25zdW1lLlwiLFxuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWVkaWFUeXBlTGlzdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGFyYW1ldGVyc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXJhbWV0ZXJzTGlzdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVzcG9uc2VzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Jlc3BvbnNlc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NoZW1lc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWVzTGlzdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVwcmVjYXRlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInNlY3VyaXR5XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NlY3VyaXR5XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJwYXRoSXRlbVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwdXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwb3N0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVsZXRlXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImhlYWRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXRjaFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInBhcmFtZXRlcnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyc0xpc3RcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInJlc3BvbnNlc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJSZXNwb25zZSBvYmplY3RzIG5hbWVzIGNhbiBlaXRoZXIgYmUgYW55IHZhbGlkIEhUVFAgc3RhdHVzIGNvZGUgb3IgJ2RlZmF1bHQnLlwiLFxuICAgICAgXCJtaW5Qcm9wZXJ0aWVzXCI6IDEsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXihbMC05XXszfSkkfF4oZGVmYXVsdCkkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Jlc3BvbnNlVmFsdWVcIlxuICAgICAgICB9LFxuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJub3RcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJyZXNwb25zZVZhbHVlXCI6IHtcbiAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2pzb25SZWZlcmVuY2VcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBcInJlc3BvbnNlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NoZW1hXCI6IHtcbiAgICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9maWxlU2NoZW1hXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGVhZGVyc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9oZWFkZXJzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGFtcGxlc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGFtcGxlc1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiaGVhZGVyc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2hlYWRlclwiXG4gICAgICB9XG4gICAgfSxcbiAgICBcImhlYWRlclwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJ2ZW5kb3JFeHRlbnNpb25cIjoge1xuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkFueSBwcm9wZXJ0eSBzdGFydGluZyB3aXRoIHgtIGlzIHZhbGlkLlwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB0cnVlLFxuICAgICAgXCJhZGRpdGlvbmFsSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJib2R5UGFyYW1ldGVyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiLFxuICAgICAgICBcImluXCIsXG4gICAgICAgIFwic2NoZW1hXCJcbiAgICAgIF0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImJvZHlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInNjaGVtYVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJoZWFkZXJQYXJhbWV0ZXJTdWJTY2hlbWFcIjoge1xuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJoZWFkZXJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gVGhpcyBjb3VsZCBjb250YWluIGV4YW1wbGVzIG9mIHVzZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInF1ZXJ5UGFyYW1ldGVyU3ViU2NoZW1hXCI6IHtcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwicXVlcnlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gVGhpcyBjb3VsZCBjb250YWluIGV4YW1wbGVzIG9mIHVzZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhbGxvd0VtcHR5VmFsdWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2UsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcImFsbG93cyBzZW5kaW5nIGEgcGFyYW1ldGVyIGJ5IG5hbWUgb25seSBvciB3aXRoIGFuIGVtcHR5IHZhbHVlLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRXaXRoTXVsdGlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJmb3JtRGF0YVBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImZvcm1EYXRhXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxsb3dFbXB0eVZhbHVlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJhbGxvd3Mgc2VuZGluZyBhIHBhcmFtZXRlciBieSBuYW1lIG9ubHkgb3Igd2l0aCBhbiBlbXB0eSB2YWx1ZS5cIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImFycmF5XCIsXG4gICAgICAgICAgICBcImZpbGVcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRXaXRoTXVsdGlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJwYXRoUGFyYW1ldGVyU3ViU2NoZW1hXCI6IHtcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInJlcXVpcmVkXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInBhdGhcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gVGhpcyBjb3VsZCBjb250YWluIGV4YW1wbGVzIG9mIHVzZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm5vbkJvZHlQYXJhbWV0ZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICAgIFwiaW5cIixcbiAgICAgICAgXCJ0eXBlXCJcbiAgICAgIF0sXG4gICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaGVhZGVyUGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZm9ybURhdGFQYXJhbWV0ZXJTdWJTY2hlbWFcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9xdWVyeVBhcmFtZXRlclN1YlNjaGVtYVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdGhQYXJhbWV0ZXJTdWJTY2hlbWFcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBcInBhcmFtZXRlclwiOiB7XG4gICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvYm9keVBhcmFtZXRlclwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL25vbkJvZHlQYXJhbWV0ZXJcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBcInNjaGVtYVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGRldGVybWluaXN0aWMgdmVyc2lvbiBvZiBhIEpTT04gU2NoZW1hIG9iamVjdC5cIixcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0aXRsZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdGl0bGVcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZXNjcmlwdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4UHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdHlwZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxsT2ZcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcImRpc2NyaW1pbmF0b3JcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVhZE9ubHlcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJ4bWxcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMveG1sXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGFtcGxlXCI6IHt9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJmaWxlU2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgZGV0ZXJtaW5pc3RpYyB2ZXJzaW9uIG9mIGEgSlNPTiBTY2hlbWEgb2JqZWN0LlwiLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0aXRsZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdGl0bGVcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZXNjcmlwdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiZmlsZVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInJlYWRPbmx5XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhhbXBsZVwiOiB7fVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwicHJpbWl0aXZlc0l0ZW1zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eVJlcXVpcmVtZW50XCJcbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwic2VjdXJpdHlSZXF1aXJlbWVudFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICAgIH1cbiAgICB9LFxuICAgIFwieG1sXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lc3BhY2VcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwicHJlZml4XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImF0dHJpYnV0ZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIndyYXBwZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInRhZ1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJuYW1lXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJzZWN1cml0eURlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvYmFzaWNBdXRoZW50aWNhdGlvblNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvYXBpS2V5U2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJJbXBsaWNpdFNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyUGFzc3dvcmRTZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMkFwcGxpY2F0aW9uU2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJBY2Nlc3NDb2RlU2VjdXJpdHlcIlxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJiYXNpY0F1dGhlbnRpY2F0aW9uU2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJiYXNpY1wiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiYXBpS2V5U2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgXCJpblwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJhcGlLZXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJoZWFkZXJcIixcbiAgICAgICAgICAgIFwicXVlcnlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMkltcGxpY2l0U2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImZsb3dcIixcbiAgICAgICAgXCJhdXRob3JpemF0aW9uVXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcIm9hdXRoMlwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZsb3dcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImltcGxpY2l0XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NvcGVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlNjb3Blc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgyUGFzc3dvcmRTZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiZmxvd1wiLFxuICAgICAgICBcInRva2VuVXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcIm9hdXRoMlwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZsb3dcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInBhc3N3b3JkXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NvcGVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlNjb3Blc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG9rZW5VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMkFwcGxpY2F0aW9uU2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImZsb3dcIixcbiAgICAgICAgXCJ0b2tlblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvblwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInRva2VuVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJBY2Nlc3NDb2RlU2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImZsb3dcIixcbiAgICAgICAgXCJhdXRob3JpemF0aW9uVXJsXCIsXG4gICAgICAgIFwidG9rZW5VcmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwib2F1dGgyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmxvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYWNjZXNzQ29kZVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImF1dGhvcml6YXRpb25VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b2tlblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgyU2NvcGVzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9XG4gICAgfSxcbiAgICBcIm1lZGlhVHlwZUxpc3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbWVUeXBlXCJcbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwicGFyYW1ldGVyc0xpc3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gc2VuZCBhIHZhbGlkIEFQSSBjYWxsLlwiLFxuICAgICAgXCJhZGRpdGlvbmFsSXRlbXNcIjogZmFsc2UsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXJhbWV0ZXJcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9qc29uUmVmZXJlbmNlXCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwic2NoZW1lc0xpc3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgdHJhbnNmZXIgcHJvdG9jb2wgb2YgdGhlIEFQSS5cIixcbiAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICBcImh0dHBcIixcbiAgICAgICAgICBcImh0dHBzXCIsXG4gICAgICAgICAgXCJ3c1wiLFxuICAgICAgICAgIFwid3NzXCJcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgXCJjc3ZcIixcbiAgICAgICAgXCJzc3ZcIixcbiAgICAgICAgXCJ0c3ZcIixcbiAgICAgICAgXCJwaXBlc1wiXG4gICAgICBdLFxuICAgICAgXCJkZWZhdWx0XCI6IFwiY3N2XCJcbiAgICB9LFxuICAgIFwiY29sbGVjdGlvbkZvcm1hdFdpdGhNdWx0aVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgIFwiY3N2XCIsXG4gICAgICAgIFwic3N2XCIsXG4gICAgICAgIFwidHN2XCIsXG4gICAgICAgIFwicGlwZXNcIixcbiAgICAgICAgXCJtdWx0aVwiXG4gICAgICBdLFxuICAgICAgXCJkZWZhdWx0XCI6IFwiY3N2XCJcbiAgICB9LFxuICAgIFwidGl0bGVcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdGl0bGVcIlxuICAgIH0sXG4gICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZXNjcmlwdGlvblwiXG4gICAgfSxcbiAgICBcImRlZmF1bHRcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVmYXVsdFwiXG4gICAgfSxcbiAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbXVsdGlwbGVPZlwiXG4gICAgfSxcbiAgICBcIm1heGltdW1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbWF4aW11bVwiXG4gICAgfSxcbiAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgfSxcbiAgICBcIm1pbmltdW1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvbWluaW11bVwiXG4gICAgfSxcbiAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgfSxcbiAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICB9LFxuICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgfSxcbiAgICBcInBhdHRlcm5cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvcGF0dGVyblwiXG4gICAgfSxcbiAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgIH0sXG4gICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgIH0sXG4gICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy91bmlxdWVJdGVtc1wiXG4gICAgfSxcbiAgICBcImVudW1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZW51bVwiXG4gICAgfSxcbiAgICBcImpzb25SZWZlcmVuY2VcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCIkcmVmXCJcbiAgICAgIF0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwidmFyIG5leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy9icm93c2VyLmpzJykubmV4dFRpY2s7XG52YXIgYXBwbHkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgaW1tZWRpYXRlSWRzID0ge307XG52YXIgbmV4dEltbWVkaWF0ZUlkID0gMDtcblxuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcblxuZXhwb3J0cy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldFRpbWVvdXQsIHdpbmRvdywgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFySW50ZXJ2YWwpO1xufTtcbmV4cG9ydHMuY2xlYXJUaW1lb3V0ID1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHsgdGltZW91dC5jbG9zZSgpOyB9O1xuXG5mdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7XG4gIHRoaXMuX2lkID0gaWQ7XG4gIHRoaXMuX2NsZWFyRm4gPSBjbGVhckZuO1xufVxuVGltZW91dC5wcm90b3R5cGUudW5yZWYgPSBUaW1lb3V0LnByb3RvdHlwZS5yZWYgPSBmdW5jdGlvbigpIHt9O1xuVGltZW91dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY2xlYXJGbi5jYWxsKHdpbmRvdywgdGhpcy5faWQpO1xufTtcblxuLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuXG5leHBvcnRzLmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0sIG1zZWNzKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2Vjcztcbn07XG5cbmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSAtMTtcbn07XG5cbmV4cG9ydHMuX3VucmVmQWN0aXZlID0gZXhwb3J0cy5hY3RpdmUgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcblxuICB2YXIgbXNlY3MgPSBpdGVtLl9pZGxlVGltZW91dDtcbiAgaWYgKG1zZWNzID49IDApIHtcbiAgICBpdGVtLl9pZGxlVGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiBvblRpbWVvdXQoKSB7XG4gICAgICBpZiAoaXRlbS5fb25UaW1lb3V0KVxuICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTtcbiAgICB9LCBtc2Vjcyk7XG4gIH1cbn07XG5cbi8vIFRoYXQncyBub3QgaG93IG5vZGUuanMgaW1wbGVtZW50cyBpdCBidXQgdGhlIGV4cG9zZWQgYXBpIGlzIHRoZSBzYW1lLlxuZXhwb3J0cy5zZXRJbW1lZGlhdGUgPSB0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSBcImZ1bmN0aW9uXCIgPyBzZXRJbW1lZGlhdGUgOiBmdW5jdGlvbihmbikge1xuICB2YXIgaWQgPSBuZXh0SW1tZWRpYXRlSWQrKztcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGZhbHNlIDogc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gIGltbWVkaWF0ZUlkc1tpZF0gPSB0cnVlO1xuXG4gIG5leHRUaWNrKGZ1bmN0aW9uIG9uTmV4dFRpY2soKSB7XG4gICAgaWYgKGltbWVkaWF0ZUlkc1tpZF0pIHtcbiAgICAgIC8vIGZuLmNhbGwoKSBpcyBmYXN0ZXIgc28gd2Ugb3B0aW1pemUgZm9yIHRoZSBjb21tb24gdXNlLWNhc2VcbiAgICAgIC8vIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vY2FsbC1hcHBseS1zZWd1XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCk7XG4gICAgICB9XG4gICAgICAvLyBQcmV2ZW50IGlkcyBmcm9tIGxlYWtpbmdcbiAgICAgIGV4cG9ydHMuY2xlYXJJbW1lZGlhdGUoaWQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGlkO1xufTtcblxuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9IHR5cGVvZiBjbGVhckltbWVkaWF0ZSA9PT0gXCJmdW5jdGlvblwiID8gY2xlYXJJbW1lZGlhdGUgOiBmdW5jdGlvbihpZCkge1xuICBkZWxldGUgaW1tZWRpYXRlSWRzW2lkXTtcbn07IiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChidWYpIHtcblx0Ly8gSWYgdGhlIGJ1ZmZlciBpcyBiYWNrZWQgYnkgYSBVaW50OEFycmF5LCBhIGZhc3RlciB2ZXJzaW9uIHdpbGwgd29ya1xuXHRpZiAoYnVmIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHRcdC8vIElmIHRoZSBidWZmZXIgaXNuJ3QgYSBzdWJhcnJheSwgcmV0dXJuIHRoZSB1bmRlcmx5aW5nIEFycmF5QnVmZmVyXG5cdFx0aWYgKGJ1Zi5ieXRlT2Zmc2V0ID09PSAwICYmIGJ1Zi5ieXRlTGVuZ3RoID09PSBidWYuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcblx0XHRcdHJldHVybiBidWYuYnVmZmVyXG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgYnVmLmJ1ZmZlci5zbGljZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gZ2V0IGEgcHJvcGVyIGNvcHlcblx0XHRcdHJldHVybiBidWYuYnVmZmVyLnNsaWNlKGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZU9mZnNldCArIGJ1Zi5ieXRlTGVuZ3RoKVxuXHRcdH1cblx0fVxuXG5cdGlmIChCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuXHRcdC8vIFRoaXMgaXMgdGhlIHNsb3cgdmVyc2lvbiB0aGF0IHdpbGwgd29yayB3aXRoIGFueSBCdWZmZXJcblx0XHQvLyBpbXBsZW1lbnRhdGlvbiAoZXZlbiBpbiBvbGQgYnJvd3NlcnMpXG5cdFx0dmFyIGFycmF5Q29weSA9IG5ldyBVaW50OEFycmF5KGJ1Zi5sZW5ndGgpXG5cdFx0dmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRhcnJheUNvcHlbaV0gPSBidWZbaV1cblx0XHR9XG5cdFx0cmV0dXJuIGFycmF5Q29weS5idWZmZXJcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuXHR9XG59XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgZ2xvYmFsLCBkZWZpbmUsIFN5c3RlbSwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG52YXIgX19leHRlbmRzO1xyXG52YXIgX19hc3NpZ247XHJcbnZhciBfX3Jlc3Q7XHJcbnZhciBfX2RlY29yYXRlO1xyXG52YXIgX19wYXJhbTtcclxudmFyIF9fbWV0YWRhdGE7XHJcbnZhciBfX2F3YWl0ZXI7XHJcbnZhciBfX2dlbmVyYXRvcjtcclxudmFyIF9fZXhwb3J0U3RhcjtcclxudmFyIF9fdmFsdWVzO1xyXG52YXIgX19yZWFkO1xyXG52YXIgX19zcHJlYWQ7XHJcbnZhciBfX2F3YWl0O1xyXG52YXIgX19hc3luY0dlbmVyYXRvcjtcclxudmFyIF9fYXN5bmNEZWxlZ2F0b3I7XHJcbnZhciBfX2FzeW5jVmFsdWVzO1xyXG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3Q7XHJcbnZhciBfX2ltcG9ydFN0YXI7XHJcbnZhciBfX2ltcG9ydERlZmF1bHQ7XHJcbihmdW5jdGlvbiAoZmFjdG9yeSkge1xyXG4gICAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdHlwZW9mIHRoaXMgPT09IFwib2JqZWN0XCIgPyB0aGlzIDoge307XHJcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcclxuICAgICAgICBkZWZpbmUoXCJ0c2xpYlwiLCBbXCJleHBvcnRzXCJdLCBmdW5jdGlvbiAoZXhwb3J0cykgeyBmYWN0b3J5KGNyZWF0ZUV4cG9ydGVyKHJvb3QsIGNyZWF0ZUV4cG9ydGVyKGV4cG9ydHMpKSk7IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBmYWN0b3J5KGNyZWF0ZUV4cG9ydGVyKHJvb3QsIGNyZWF0ZUV4cG9ydGVyKG1vZHVsZS5leHBvcnRzKSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZmFjdG9yeShjcmVhdGVFeHBvcnRlcihyb290KSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjcmVhdGVFeHBvcnRlcihleHBvcnRzLCBwcmV2aW91cykge1xyXG4gICAgICAgIGlmIChleHBvcnRzICE9PSByb290KSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoaWQsIHYpIHsgcmV0dXJuIGV4cG9ydHNbaWRdID0gcHJldmlvdXMgPyBwcmV2aW91cyhpZCwgdikgOiB2OyB9O1xyXG4gICAgfVxyXG59KVxyXG4oZnVuY3Rpb24gKGV4cG9ydGVyKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuXHJcbiAgICBfX2V4dGVuZHMgPSBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcmVzdCA9IGZ1bmN0aW9uIChzLCBlKSB7XHJcbiAgICAgICAgdmFyIHQgPSB7fTtcclxuICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2RlY29yYXRlID0gZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICAgICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICAgICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxuICAgIH07XHJcblxyXG4gICAgX19wYXJhbSA9IGZ1bmN0aW9uIChwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19tZXRhZGF0YSA9IGZ1bmN0aW9uIChtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXdhaXRlciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2dlbmVyYXRvciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XHJcbiAgICAgICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fZXhwb3J0U3RhciA9IGZ1bmN0aW9uIChtLCBleHBvcnRzKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3ZhbHVlcyA9IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgICAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgX19yZWFkID0gZnVuY3Rpb24gKG8sIG4pIHtcclxuICAgICAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICAgICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgICAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFyO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcblxyXG4gICAgX19hd2FpdCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXN5bmNHZW5lcmF0b3IgPSBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgICAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICAgICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yID0gZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICB2YXIgaSwgcDtcclxuICAgICAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19hc3luY1ZhbHVlcyA9IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICAgICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCA9IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xyXG4gICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICAgICAgcmV0dXJuIGNvb2tlZDtcclxuICAgIH07XHJcblxyXG4gICAgX19pbXBvcnRTdGFyID0gZnVuY3Rpb24gKG1vZCkge1xyXG4gICAgICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICAgICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2ltcG9ydERlZmF1bHQgPSBmdW5jdGlvbiAobW9kKSB7XHJcbiAgICAgICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGV4cG9ydGVyKFwiX19leHRlbmRzXCIsIF9fZXh0ZW5kcyk7XHJcbiAgICBleHBvcnRlcihcIl9fYXNzaWduXCIsIF9fYXNzaWduKTtcclxuICAgIGV4cG9ydGVyKFwiX19yZXN0XCIsIF9fcmVzdCk7XHJcbiAgICBleHBvcnRlcihcIl9fZGVjb3JhdGVcIiwgX19kZWNvcmF0ZSk7XHJcbiAgICBleHBvcnRlcihcIl9fcGFyYW1cIiwgX19wYXJhbSk7XHJcbiAgICBleHBvcnRlcihcIl9fbWV0YWRhdGFcIiwgX19tZXRhZGF0YSk7XHJcbiAgICBleHBvcnRlcihcIl9fYXdhaXRlclwiLCBfX2F3YWl0ZXIpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2dlbmVyYXRvclwiLCBfX2dlbmVyYXRvcik7XHJcbiAgICBleHBvcnRlcihcIl9fZXhwb3J0U3RhclwiLCBfX2V4cG9ydFN0YXIpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3ZhbHVlc1wiLCBfX3ZhbHVlcyk7XHJcbiAgICBleHBvcnRlcihcIl9fcmVhZFwiLCBfX3JlYWQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3NwcmVhZFwiLCBfX3NwcmVhZCk7XHJcbiAgICBleHBvcnRlcihcIl9fYXdhaXRcIiwgX19hd2FpdCk7XHJcbiAgICBleHBvcnRlcihcIl9fYXN5bmNHZW5lcmF0b3JcIiwgX19hc3luY0dlbmVyYXRvcik7XHJcbiAgICBleHBvcnRlcihcIl9fYXN5bmNEZWxlZ2F0b3JcIiwgX19hc3luY0RlbGVnYXRvcik7XHJcbiAgICBleHBvcnRlcihcIl9fYXN5bmNWYWx1ZXNcIiwgX19hc3luY1ZhbHVlcyk7XHJcbiAgICBleHBvcnRlcihcIl9fbWFrZVRlbXBsYXRlT2JqZWN0XCIsIF9fbWFrZVRlbXBsYXRlT2JqZWN0KTtcclxuICAgIGV4cG9ydGVyKFwiX19pbXBvcnRTdGFyXCIsIF9faW1wb3J0U3Rhcik7XHJcbiAgICBleHBvcnRlcihcIl9faW1wb3J0RGVmYXVsdFwiLCBfX2ltcG9ydERlZmF1bHQpO1xyXG59KTtcclxuIiwiLy8gICAgIFVuZGVyc2NvcmUuanMgMS43LjBcbi8vICAgICBodHRwOi8vdW5kZXJzY29yZWpzLm9yZ1xuLy8gICAgIChjKSAyMDA5LTIwMTQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbi8vICAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuXG4oZnVuY3Rpb24oKSB7XG5cbiAgLy8gQmFzZWxpbmUgc2V0dXBcbiAgLy8gLS0tLS0tLS0tLS0tLS1cblxuICAvLyBFc3RhYmxpc2ggdGhlIHJvb3Qgb2JqZWN0LCBgd2luZG93YCBpbiB0aGUgYnJvd3Nlciwgb3IgYGV4cG9ydHNgIG9uIHRoZSBzZXJ2ZXIuXG4gIHZhciByb290ID0gdGhpcztcblxuICAvLyBTYXZlIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgYF9gIHZhcmlhYmxlLlxuICB2YXIgcHJldmlvdXNVbmRlcnNjb3JlID0gcm9vdC5fO1xuXG4gIC8vIFNhdmUgYnl0ZXMgaW4gdGhlIG1pbmlmaWVkIChidXQgbm90IGd6aXBwZWQpIHZlcnNpb246XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLCBPYmpQcm90byA9IE9iamVjdC5wcm90b3R5cGUsIEZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuICAvLyBDcmVhdGUgcXVpY2sgcmVmZXJlbmNlIHZhcmlhYmxlcyBmb3Igc3BlZWQgYWNjZXNzIHRvIGNvcmUgcHJvdG90eXBlcy5cbiAgdmFyXG4gICAgcHVzaCAgICAgICAgICAgICA9IEFycmF5UHJvdG8ucHVzaCxcbiAgICBzbGljZSAgICAgICAgICAgID0gQXJyYXlQcm90by5zbGljZSxcbiAgICBjb25jYXQgICAgICAgICAgID0gQXJyYXlQcm90by5jb25jYXQsXG4gICAgdG9TdHJpbmcgICAgICAgICA9IE9ialByb3RvLnRvU3RyaW5nLFxuICAgIGhhc093blByb3BlcnR5ICAgPSBPYmpQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAvLyBBbGwgKipFQ01BU2NyaXB0IDUqKiBuYXRpdmUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIHRoYXQgd2UgaG9wZSB0byB1c2VcbiAgLy8gYXJlIGRlY2xhcmVkIGhlcmUuXG4gIHZhclxuICAgIG5hdGl2ZUlzQXJyYXkgICAgICA9IEFycmF5LmlzQXJyYXksXG4gICAgbmF0aXZlS2V5cyAgICAgICAgID0gT2JqZWN0LmtleXMsXG4gICAgbmF0aXZlQmluZCAgICAgICAgID0gRnVuY1Byb3RvLmJpbmQ7XG5cbiAgLy8gQ3JlYXRlIGEgc2FmZSByZWZlcmVuY2UgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0IGZvciB1c2UgYmVsb3cuXG4gIHZhciBfID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIF8pIHJldHVybiBvYmo7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIF8pKSByZXR1cm4gbmV3IF8ob2JqKTtcbiAgICB0aGlzLl93cmFwcGVkID0gb2JqO1xuICB9O1xuXG4gIC8vIEV4cG9ydCB0aGUgVW5kZXJzY29yZSBvYmplY3QgZm9yICoqTm9kZS5qcyoqLCB3aXRoXG4gIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvciB0aGUgb2xkIGByZXF1aXJlKClgIEFQSS4gSWYgd2UncmUgaW5cbiAgLy8gdGhlIGJyb3dzZXIsIGFkZCBgX2AgYXMgYSBnbG9iYWwgb2JqZWN0LlxuICBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfO1xuICAgIH1cbiAgICBleHBvcnRzLl8gPSBfO1xuICB9IGVsc2Uge1xuICAgIHJvb3QuXyA9IF87XG4gIH1cblxuICAvLyBDdXJyZW50IHZlcnNpb24uXG4gIF8uVkVSU0lPTiA9ICcxLjcuMCc7XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVmZmljaWVudCAoZm9yIGN1cnJlbnQgZW5naW5lcykgdmVyc2lvblxuICAvLyBvZiB0aGUgcGFzc2VkLWluIGNhbGxiYWNrLCB0byBiZSByZXBlYXRlZGx5IGFwcGxpZWQgaW4gb3RoZXIgVW5kZXJzY29yZVxuICAvLyBmdW5jdGlvbnMuXG4gIHZhciBjcmVhdGVDYWxsYmFjayA9IGZ1bmN0aW9uKGZ1bmMsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgcmV0dXJuIGZ1bmM7XG4gICAgc3dpdGNoIChhcmdDb3VudCA9PSBudWxsID8gMyA6IGFyZ0NvdW50KSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlKTtcbiAgICAgIH07XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICB9O1xuICAgICAgY2FzZSA0OiByZXR1cm4gZnVuY3Rpb24oYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIEEgbW9zdGx5LWludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNhbGxiYWNrcyB0aGF0IGNhbiBiZSBhcHBsaWVkXG4gIC8vIHRvIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24sIHJldHVybmluZyB0aGUgZGVzaXJlZCByZXN1bHQg4oCUIGVpdGhlclxuICAvLyBpZGVudGl0eSwgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrLCBhIHByb3BlcnR5IG1hdGNoZXIsIG9yIGEgcHJvcGVydHkgYWNjZXNzb3IuXG4gIF8uaXRlcmF0ZWUgPSBmdW5jdGlvbih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIF8uaWRlbnRpdHk7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybiBjcmVhdGVDYWxsYmFjayh2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpO1xuICAgIGlmIChfLmlzT2JqZWN0KHZhbHVlKSkgcmV0dXJuIF8ubWF0Y2hlcyh2YWx1ZSk7XG4gICAgcmV0dXJuIF8ucHJvcGVydHkodmFsdWUpO1xuICB9O1xuXG4gIC8vIENvbGxlY3Rpb24gRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVGhlIGNvcm5lcnN0b25lLCBhbiBgZWFjaGAgaW1wbGVtZW50YXRpb24sIGFrYSBgZm9yRWFjaGAuXG4gIC8vIEhhbmRsZXMgcmF3IG9iamVjdHMgaW4gYWRkaXRpb24gdG8gYXJyYXktbGlrZXMuIFRyZWF0cyBhbGxcbiAgLy8gc3BhcnNlIGFycmF5LWxpa2VzIGFzIGlmIHRoZXkgd2VyZSBkZW5zZS5cbiAgXy5lYWNoID0gXy5mb3JFYWNoID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG9iajtcbiAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgaSwgbGVuZ3RoID0gb2JqLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoID09PSArbGVuZ3RoKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW2ldLCBpLCBvYmopO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopO1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRlZShvYmpba2V5c1tpXV0sIGtleXNbaV0sIG9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBpdGVyYXRlZSB0byBlYWNoIGVsZW1lbnQuXG4gIF8ubWFwID0gXy5jb2xsZWN0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHMgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICBjdXJyZW50S2V5O1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIHJlc3VsdHNbaW5kZXhdID0gaXRlcmF0ZWUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfTtcblxuICB2YXIgcmVkdWNlRXJyb3IgPSAnUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSc7XG5cbiAgLy8gKipSZWR1Y2UqKiBidWlsZHMgdXAgYSBzaW5nbGUgcmVzdWx0IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYWthIGBpbmplY3RgLFxuICAvLyBvciBgZm9sZGxgLlxuICBfLnJlZHVjZSA9IF8uZm9sZGwgPSBfLmluamVjdCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIG1lbW8sIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIG9iaiA9IFtdO1xuICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQsIDQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IDAsIGN1cnJlbnRLZXk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgICBpZiAoIWxlbmd0aCkgdGhyb3cgbmV3IFR5cGVFcnJvcihyZWR1Y2VFcnJvcik7XG4gICAgICBtZW1vID0gb2JqW2tleXMgPyBrZXlzW2luZGV4KytdIDogaW5kZXgrK107XG4gICAgfVxuICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgbWVtbyA9IGl0ZXJhdGVlKG1lbW8sIG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG5cbiAgLy8gVGhlIHJpZ2h0LWFzc29jaWF0aXZlIHZlcnNpb24gb2YgcmVkdWNlLCBhbHNvIGtub3duIGFzIGBmb2xkcmAuXG4gIF8ucmVkdWNlUmlnaHQgPSBfLmZvbGRyID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgb2JqID0gW107XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCwgNCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArIG9iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGluZGV4ID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIGN1cnJlbnRLZXk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgICBpZiAoIWluZGV4KSB0aHJvdyBuZXcgVHlwZUVycm9yKHJlZHVjZUVycm9yKTtcbiAgICAgIG1lbW8gPSBvYmpba2V5cyA/IGtleXNbLS1pbmRleF0gOiAtLWluZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIG1lbW8gPSBpdGVyYXRlZShtZW1vLCBvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBtZW1vO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgZmlyc3QgdmFsdWUgd2hpY2ggcGFzc2VzIGEgdHJ1dGggdGVzdC4gQWxpYXNlZCBhcyBgZGV0ZWN0YC5cbiAgXy5maW5kID0gXy5kZXRlY3QgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHQ7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIF8uc29tZShvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGxpc3QpKSB7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgcGFzcyBhIHRydXRoIHRlc3QuXG4gIC8vIEFsaWFzZWQgYXMgYHNlbGVjdGAuXG4gIF8uZmlsdGVyID0gXy5zZWxlY3QgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gcmVzdWx0cztcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgbGlzdCkpIHJlc3VsdHMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgZm9yIHdoaWNoIGEgdHJ1dGggdGVzdCBmYWlscy5cbiAgXy5yZWplY3QgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBfLmZpbHRlcihvYmosIF8ubmVnYXRlKF8uaXRlcmF0ZWUocHJlZGljYXRlKSksIGNvbnRleHQpO1xuICB9O1xuXG4gIC8vIERldGVybWluZSB3aGV0aGVyIGFsbCBvZiB0aGUgZWxlbWVudHMgbWF0Y2ggYSB0cnV0aCB0ZXN0LlxuICAvLyBBbGlhc2VkIGFzIGBhbGxgLlxuICBfLmV2ZXJ5ID0gXy5hbGwgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICBpbmRleCwgY3VycmVudEtleTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmICghcHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvLyBEZXRlcm1pbmUgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIG9iamVjdCBtYXRjaGVzIGEgdHJ1dGggdGVzdC5cbiAgLy8gQWxpYXNlZCBhcyBgYW55YC5cbiAgXy5zb21lID0gXy5hbnkgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgaW5kZXgsIGN1cnJlbnRLZXk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAocHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvLyBEZXRlcm1pbmUgaWYgdGhlIGFycmF5IG9yIG9iamVjdCBjb250YWlucyBhIGdpdmVuIHZhbHVlICh1c2luZyBgPT09YCkuXG4gIC8vIEFsaWFzZWQgYXMgYGluY2x1ZGVgLlxuICBfLmNvbnRhaW5zID0gXy5pbmNsdWRlID0gZnVuY3Rpb24ob2JqLCB0YXJnZXQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBpZiAob2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGgpIG9iaiA9IF8udmFsdWVzKG9iaik7XG4gICAgcmV0dXJuIF8uaW5kZXhPZihvYmosIHRhcmdldCkgPj0gMDtcbiAgfTtcblxuICAvLyBJbnZva2UgYSBtZXRob2QgKHdpdGggYXJndW1lbnRzKSBvbiBldmVyeSBpdGVtIGluIGEgY29sbGVjdGlvbi5cbiAgXy5pbnZva2UgPSBmdW5jdGlvbihvYmosIG1ldGhvZCkge1xuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgIHZhciBpc0Z1bmMgPSBfLmlzRnVuY3Rpb24obWV0aG9kKTtcbiAgICByZXR1cm4gXy5tYXAob2JqLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIChpc0Z1bmMgPyBtZXRob2QgOiB2YWx1ZVttZXRob2RdKS5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgbWFwYDogZmV0Y2hpbmcgYSBwcm9wZXJ0eS5cbiAgXy5wbHVjayA9IGZ1bmN0aW9uKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIF8ubWFwKG9iaiwgXy5wcm9wZXJ0eShrZXkpKTtcbiAgfTtcblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBmaWx0ZXJgOiBzZWxlY3Rpbmcgb25seSBvYmplY3RzXG4gIC8vIGNvbnRhaW5pbmcgc3BlY2lmaWMgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIF8ud2hlcmUgPSBmdW5jdGlvbihvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIF8uZmlsdGVyKG9iaiwgXy5tYXRjaGVzKGF0dHJzKSk7XG4gIH07XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgZmluZGA6IGdldHRpbmcgdGhlIGZpcnN0IG9iamVjdFxuICAvLyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBfLmZpbmRXaGVyZSA9IGZ1bmN0aW9uKG9iaiwgYXR0cnMpIHtcbiAgICByZXR1cm4gXy5maW5kKG9iaiwgXy5tYXRjaGVzKGF0dHJzKSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBtYXhpbXVtIGVsZW1lbnQgKG9yIGVsZW1lbnQtYmFzZWQgY29tcHV0YXRpb24pLlxuICBfLm1heCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gLUluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSAtSW5maW5pdHksXG4gICAgICAgIHZhbHVlLCBjb21wdXRlZDtcbiAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCAmJiBvYmogIT0gbnVsbCkge1xuICAgICAgb2JqID0gb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlID4gcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA+IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gLUluZmluaXR5ICYmIHJlc3VsdCA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgXy5taW4gPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IEluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSBJbmZpbml0eSxcbiAgICAgICAgdmFsdWUsIGNvbXB1dGVkO1xuICAgIGlmIChpdGVyYXRlZSA9PSBudWxsICYmIG9iaiAhPSBudWxsKSB7XG4gICAgICBvYmogPSBvYmoubGVuZ3RoID09PSArb2JqLmxlbmd0aCA/IG9iaiA6IF8udmFsdWVzKG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBpZiAodmFsdWUgPCByZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBsaXN0KTtcbiAgICAgICAgaWYgKGNvbXB1dGVkIDwgbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSBJbmZpbml0eSAmJiByZXN1bHQgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFNodWZmbGUgYSBjb2xsZWN0aW9uLCB1c2luZyB0aGUgbW9kZXJuIHZlcnNpb24gb2YgdGhlXG4gIC8vIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXLigJNZYXRlc19zaHVmZmxlKS5cbiAgXy5zaHVmZmxlID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIHNldCA9IG9iaiAmJiBvYmoubGVuZ3RoID09PSArb2JqLmxlbmd0aCA/IG9iaiA6IF8udmFsdWVzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IHNldC5sZW5ndGg7XG4gICAgdmFyIHNodWZmbGVkID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDAsIHJhbmQ7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICByYW5kID0gXy5yYW5kb20oMCwgaW5kZXgpO1xuICAgICAgaWYgKHJhbmQgIT09IGluZGV4KSBzaHVmZmxlZFtpbmRleF0gPSBzaHVmZmxlZFtyYW5kXTtcbiAgICAgIHNodWZmbGVkW3JhbmRdID0gc2V0W2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIHNodWZmbGVkO1xuICB9O1xuXG4gIC8vIFNhbXBsZSAqKm4qKiByYW5kb20gdmFsdWVzIGZyb20gYSBjb2xsZWN0aW9uLlxuICAvLyBJZiAqKm4qKiBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIGEgc2luZ2xlIHJhbmRvbSBlbGVtZW50LlxuICAvLyBUaGUgaW50ZXJuYWwgYGd1YXJkYCBhcmd1bWVudCBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBtYXBgLlxuICBfLnNhbXBsZSA9IGZ1bmN0aW9uKG9iaiwgbiwgZ3VhcmQpIHtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSB7XG4gICAgICBpZiAob2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGgpIG9iaiA9IF8udmFsdWVzKG9iaik7XG4gICAgICByZXR1cm4gb2JqW18ucmFuZG9tKG9iai5sZW5ndGggLSAxKV07XG4gICAgfVxuICAgIHJldHVybiBfLnNodWZmbGUob2JqKS5zbGljZSgwLCBNYXRoLm1heCgwLCBuKSk7XG4gIH07XG5cbiAgLy8gU29ydCB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uIHByb2R1Y2VkIGJ5IGFuIGl0ZXJhdGVlLlxuICBfLnNvcnRCeSA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHJldHVybiBfLnBsdWNrKF8ubWFwKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgbGlzdClcbiAgICAgIH07XG4gICAgfSkuc29ydChmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRlcmlhO1xuICAgICAgdmFyIGIgPSByaWdodC5jcml0ZXJpYTtcbiAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgIGlmIChhID4gYiB8fCBhID09PSB2b2lkIDApIHJldHVybiAxO1xuICAgICAgICBpZiAoYSA8IGIgfHwgYiA9PT0gdm9pZCAwKSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGVmdC5pbmRleCAtIHJpZ2h0LmluZGV4O1xuICAgIH0pLCAndmFsdWUnKTtcbiAgfTtcblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiB1c2VkIGZvciBhZ2dyZWdhdGUgXCJncm91cCBieVwiIG9wZXJhdGlvbnMuXG4gIHZhciBncm91cCA9IGZ1bmN0aW9uKGJlaGF2aW9yKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGtleSA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgb2JqKTtcbiAgICAgICAgYmVoYXZpb3IocmVzdWx0LCB2YWx1ZSwga2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIEdyb3VwcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLiBQYXNzIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGVcbiAgLy8gdG8gZ3JvdXAgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjcml0ZXJpb24uXG4gIF8uZ3JvdXBCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIGlmIChfLmhhcyhyZXN1bHQsIGtleSkpIHJlc3VsdFtrZXldLnB1c2godmFsdWUpOyBlbHNlIHJlc3VsdFtrZXldID0gW3ZhbHVlXTtcbiAgfSk7XG5cbiAgLy8gSW5kZXhlcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLCBzaW1pbGFyIHRvIGBncm91cEJ5YCwgYnV0IGZvclxuICAvLyB3aGVuIHlvdSBrbm93IHRoYXQgeW91ciBpbmRleCB2YWx1ZXMgd2lsbCBiZSB1bmlxdWUuXG4gIF8uaW5kZXhCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gIH0pO1xuXG4gIC8vIENvdW50cyBpbnN0YW5jZXMgb2YgYW4gb2JqZWN0IHRoYXQgZ3JvdXAgYnkgYSBjZXJ0YWluIGNyaXRlcmlvbi4gUGFzc1xuICAvLyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlIHRvIGNvdW50IGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgLy8gY3JpdGVyaW9uLlxuICBfLmNvdW50QnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoXy5oYXMocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XSsrOyBlbHNlIHJlc3VsdFtrZXldID0gMTtcbiAgfSk7XG5cbiAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHRoZSBzbWFsbGVzdCBpbmRleCBhdCB3aGljaFxuICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluc2VydGVkIHNvIGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guXG4gIF8uc29ydGVkSW5kZXggPSBmdW5jdGlvbihhcnJheSwgb2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgdmFyIHZhbHVlID0gaXRlcmF0ZWUob2JqKTtcbiAgICB2YXIgbG93ID0gMCwgaGlnaCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgdmFyIG1pZCA9IGxvdyArIGhpZ2ggPj4+IDE7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbWlkXSkgPCB2YWx1ZSkgbG93ID0gbWlkICsgMTsgZWxzZSBoaWdoID0gbWlkO1xuICAgIH1cbiAgICByZXR1cm4gbG93O1xuICB9O1xuXG4gIC8vIFNhZmVseSBjcmVhdGUgYSByZWFsLCBsaXZlIGFycmF5IGZyb20gYW55dGhpbmcgaXRlcmFibGUuXG4gIF8udG9BcnJheSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gW107XG4gICAgaWYgKF8uaXNBcnJheShvYmopKSByZXR1cm4gc2xpY2UuY2FsbChvYmopO1xuICAgIGlmIChvYmoubGVuZ3RoID09PSArb2JqLmxlbmd0aCkgcmV0dXJuIF8ubWFwKG9iaiwgXy5pZGVudGl0eSk7XG4gICAgcmV0dXJuIF8udmFsdWVzKG9iaik7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gb2JqZWN0LlxuICBfLnNpemUgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiAwO1xuICAgIHJldHVybiBvYmoubGVuZ3RoID09PSArb2JqLmxlbmd0aCA/IG9iai5sZW5ndGggOiBfLmtleXMob2JqKS5sZW5ndGg7XG4gIH07XG5cbiAgLy8gU3BsaXQgYSBjb2xsZWN0aW9uIGludG8gdHdvIGFycmF5czogb25lIHdob3NlIGVsZW1lbnRzIGFsbCBzYXRpc2Z5IHRoZSBnaXZlblxuICAvLyBwcmVkaWNhdGUsIGFuZCBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIGRvIG5vdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUuXG4gIF8ucGFydGl0aW9uID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgdmFyIHBhc3MgPSBbXSwgZmFpbCA9IFtdO1xuICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iaikge1xuICAgICAgKHByZWRpY2F0ZSh2YWx1ZSwga2V5LCBvYmopID8gcGFzcyA6IGZhaWwpLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBbcGFzcywgZmFpbF07XG4gIH07XG5cbiAgLy8gQXJyYXkgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgZmlyc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LiBBbGlhc2VkIGFzIGBoZWFkYCBhbmQgYHRha2VgLiBUaGUgKipndWFyZCoqIGNoZWNrXG4gIC8vIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgXy5maXJzdCA9IF8uaGVhZCA9IF8udGFrZSA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVswXTtcbiAgICBpZiAobiA8IDApIHJldHVybiBbXTtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgbik7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEVzcGVjaWFsbHkgdXNlZnVsIG9uXG4gIC8vIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIGFsbCB0aGUgdmFsdWVzIGluXG4gIC8vIHRoZSBhcnJheSwgZXhjbHVkaW5nIHRoZSBsYXN0IE4uIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aFxuICAvLyBgXy5tYXBgLlxuICBfLmluaXRpYWwgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gKG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKSkpO1xuICB9O1xuXG4gIC8vIEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBsYXN0IE5cbiAgLy8gdmFsdWVzIGluIHRoZSBhcnJheS4gVGhlICoqZ3VhcmQqKiBjaGVjayBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIF8ubGFzdCA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgTWF0aC5tYXgoYXJyYXkubGVuZ3RoIC0gbiwgMCkpO1xuICB9O1xuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBhcnJheS4gQWxpYXNlZCBhcyBgdGFpbGAgYW5kIGBkcm9wYC5cbiAgLy8gRXNwZWNpYWxseSB1c2VmdWwgb24gdGhlIGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgYW4gKipuKiogd2lsbCByZXR1cm5cbiAgLy8gdGhlIHJlc3QgTiB2YWx1ZXMgaW4gdGhlIGFycmF5LiBUaGUgKipndWFyZCoqXG4gIC8vIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgXy5yZXN0ID0gXy50YWlsID0gXy5kcm9wID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKTtcbiAgfTtcblxuICAvLyBUcmltIG91dCBhbGwgZmFsc3kgdmFsdWVzIGZyb20gYW4gYXJyYXkuXG4gIF8uY29tcGFjdCA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgcmV0dXJuIF8uZmlsdGVyKGFycmF5LCBfLmlkZW50aXR5KTtcbiAgfTtcblxuICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBhIHJlY3Vyc2l2ZSBgZmxhdHRlbmAgZnVuY3Rpb24uXG4gIHZhciBmbGF0dGVuID0gZnVuY3Rpb24oaW5wdXQsIHNoYWxsb3csIHN0cmljdCwgb3V0cHV0KSB7XG4gICAgaWYgKHNoYWxsb3cgJiYgXy5ldmVyeShpbnB1dCwgXy5pc0FycmF5KSkge1xuICAgICAgcmV0dXJuIGNvbmNhdC5hcHBseShvdXRwdXQsIGlucHV0KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGlucHV0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmICghXy5pc0FycmF5KHZhbHVlKSAmJiAhXy5pc0FyZ3VtZW50cyh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCFzdHJpY3QpIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2hhbGxvdykge1xuICAgICAgICBwdXNoLmFwcGx5KG91dHB1dCwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmxhdHRlbih2YWx1ZSwgc2hhbGxvdywgc3RyaWN0LCBvdXRwdXQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9O1xuXG4gIC8vIEZsYXR0ZW4gb3V0IGFuIGFycmF5LCBlaXRoZXIgcmVjdXJzaXZlbHkgKGJ5IGRlZmF1bHQpLCBvciBqdXN0IG9uZSBsZXZlbC5cbiAgXy5mbGF0dGVuID0gZnVuY3Rpb24oYXJyYXksIHNoYWxsb3cpIHtcbiAgICByZXR1cm4gZmxhdHRlbihhcnJheSwgc2hhbGxvdywgZmFsc2UsIFtdKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gYSB2ZXJzaW9uIG9mIHRoZSBhcnJheSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNwZWNpZmllZCB2YWx1ZShzKS5cbiAgXy53aXRob3V0ID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICByZXR1cm4gXy5kaWZmZXJlbmNlKGFycmF5LCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICB9O1xuXG4gIC8vIFByb2R1Y2UgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIHRoZSBhcnJheS4gSWYgdGhlIGFycmF5IGhhcyBhbHJlYWR5XG4gIC8vIGJlZW4gc29ydGVkLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIHVzaW5nIGEgZmFzdGVyIGFsZ29yaXRobS5cbiAgLy8gQWxpYXNlZCBhcyBgdW5pcXVlYC5cbiAgXy51bmlxID0gXy51bmlxdWUgPSBmdW5jdGlvbihhcnJheSwgaXNTb3J0ZWQsIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiBbXTtcbiAgICBpZiAoIV8uaXNCb29sZWFuKGlzU29ydGVkKSkge1xuICAgICAgY29udGV4dCA9IGl0ZXJhdGVlO1xuICAgICAgaXRlcmF0ZWUgPSBpc1NvcnRlZDtcbiAgICAgIGlzU29ydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVyYXRlZSAhPSBudWxsKSBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgc2VlbiA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaV07XG4gICAgICBpZiAoaXNTb3J0ZWQpIHtcbiAgICAgICAgaWYgKCFpIHx8IHNlZW4gIT09IHZhbHVlKSByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIHNlZW4gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUsIGksIGFycmF5KTtcbiAgICAgICAgaWYgKF8uaW5kZXhPZihzZWVuLCBjb21wdXRlZCkgPCAwKSB7XG4gICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXy5pbmRleE9mKHJlc3VsdCwgdmFsdWUpIDwgMCkge1xuICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUHJvZHVjZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSB1bmlvbjogZWFjaCBkaXN0aW5jdCBlbGVtZW50IGZyb20gYWxsIG9mXG4gIC8vIHRoZSBwYXNzZWQtaW4gYXJyYXlzLlxuICBfLnVuaW9uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIF8udW5pcShmbGF0dGVuKGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSwgW10pKTtcbiAgfTtcblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgZXZlcnkgaXRlbSBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlXG4gIC8vIHBhc3NlZC1pbiBhcnJheXMuXG4gIF8uaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IGFycmF5W2ldO1xuICAgICAgaWYgKF8uY29udGFpbnMocmVzdWx0LCBpdGVtKSkgY29udGludWU7XG4gICAgICBmb3IgKHZhciBqID0gMTsgaiA8IGFyZ3NMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoIV8uY29udGFpbnMoYXJndW1lbnRzW2pdLCBpdGVtKSkgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaiA9PT0gYXJnc0xlbmd0aCkgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gVGFrZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG9uZSBhcnJheSBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgYXJyYXlzLlxuICAvLyBPbmx5IHRoZSBlbGVtZW50cyBwcmVzZW50IGluIGp1c3QgdGhlIGZpcnN0IGFycmF5IHdpbGwgcmVtYWluLlxuICBfLmRpZmZlcmVuY2UgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIHZhciByZXN0ID0gZmxhdHRlbihzbGljZS5jYWxsKGFyZ3VtZW50cywgMSksIHRydWUsIHRydWUsIFtdKTtcbiAgICByZXR1cm4gXy5maWx0ZXIoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgIHJldHVybiAhXy5jb250YWlucyhyZXN0LCB2YWx1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gWmlwIHRvZ2V0aGVyIG11bHRpcGxlIGxpc3RzIGludG8gYSBzaW5nbGUgYXJyYXkgLS0gZWxlbWVudHMgdGhhdCBzaGFyZVxuICAvLyBhbiBpbmRleCBnbyB0b2dldGhlci5cbiAgXy56aXAgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gW107XG4gICAgdmFyIGxlbmd0aCA9IF8ubWF4KGFyZ3VtZW50cywgJ2xlbmd0aCcpLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0cyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0c1tpXSA9IF8ucGx1Y2soYXJndW1lbnRzLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgLy8gQ29udmVydHMgbGlzdHMgaW50byBvYmplY3RzLiBQYXNzIGVpdGhlciBhIHNpbmdsZSBhcnJheSBvZiBgW2tleSwgdmFsdWVdYFxuICAvLyBwYWlycywgb3IgdHdvIHBhcmFsbGVsIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGggLS0gb25lIG9mIGtleXMsIGFuZCBvbmUgb2ZcbiAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICBfLm9iamVjdCA9IGZ1bmN0aW9uKGxpc3QsIHZhbHVlcykge1xuICAgIGlmIChsaXN0ID09IG51bGwpIHJldHVybiB7fTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGxpc3QubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgcmVzdWx0W2xpc3RbaV1dID0gdmFsdWVzW2ldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2xpc3RbaV1bMF1dID0gbGlzdFtpXVsxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXksXG4gIC8vIG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuXG4gIC8vIElmIHRoZSBhcnJheSBpcyBsYXJnZSBhbmQgYWxyZWFkeSBpbiBzb3J0IG9yZGVyLCBwYXNzIGB0cnVlYFxuICAvLyBmb3IgKippc1NvcnRlZCoqIHRvIHVzZSBiaW5hcnkgc2VhcmNoLlxuICBfLmluZGV4T2YgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgaXNTb3J0ZWQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIC0xO1xuICAgIHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpc1NvcnRlZCkge1xuICAgICAgaWYgKHR5cGVvZiBpc1NvcnRlZCA9PSAnbnVtYmVyJykge1xuICAgICAgICBpID0gaXNTb3J0ZWQgPCAwID8gTWF0aC5tYXgoMCwgbGVuZ3RoICsgaXNTb3J0ZWQpIDogaXNTb3J0ZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpID0gXy5zb3J0ZWRJbmRleChhcnJheSwgaXRlbSk7XG4gICAgICAgIHJldHVybiBhcnJheVtpXSA9PT0gaXRlbSA/IGkgOiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICg7IGkgPCBsZW5ndGg7IGkrKykgaWYgKGFycmF5W2ldID09PSBpdGVtKSByZXR1cm4gaTtcbiAgICByZXR1cm4gLTE7XG4gIH07XG5cbiAgXy5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBmcm9tKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiAtMTtcbiAgICB2YXIgaWR4ID0gYXJyYXkubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgZnJvbSA9PSAnbnVtYmVyJykge1xuICAgICAgaWR4ID0gZnJvbSA8IDAgPyBpZHggKyBmcm9tICsgMSA6IE1hdGgubWluKGlkeCwgZnJvbSArIDEpO1xuICAgIH1cbiAgICB3aGlsZSAoLS1pZHggPj0gMCkgaWYgKGFycmF5W2lkeF0gPT09IGl0ZW0pIHJldHVybiBpZHg7XG4gICAgcmV0dXJuIC0xO1xuICB9O1xuXG4gIC8vIEdlbmVyYXRlIGFuIGludGVnZXIgQXJyYXkgY29udGFpbmluZyBhbiBhcml0aG1ldGljIHByb2dyZXNzaW9uLiBBIHBvcnQgb2ZcbiAgLy8gdGhlIG5hdGl2ZSBQeXRob24gYHJhbmdlKClgIGZ1bmN0aW9uLiBTZWVcbiAgLy8gW3RoZSBQeXRob24gZG9jdW1lbnRhdGlvbl0oaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI3JhbmdlKS5cbiAgXy5yYW5nZSA9IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPD0gMSkge1xuICAgICAgc3RvcCA9IHN0YXJ0IHx8IDA7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwIHx8IDE7XG5cbiAgICB2YXIgbGVuZ3RoID0gTWF0aC5tYXgoTWF0aC5jZWlsKChzdG9wIC0gc3RhcnQpIC8gc3RlcCksIDApO1xuICAgIHZhciByYW5nZSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBsZW5ndGg7IGlkeCsrLCBzdGFydCArPSBzdGVwKSB7XG4gICAgICByYW5nZVtpZHhdID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJhbmdlO1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIChhaGVtKSBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gUmV1c2FibGUgY29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIHByb3RvdHlwZSBzZXR0aW5nLlxuICB2YXIgQ3RvciA9IGZ1bmN0aW9uKCl7fTtcblxuICAvLyBDcmVhdGUgYSBmdW5jdGlvbiBib3VuZCB0byBhIGdpdmVuIG9iamVjdCAoYXNzaWduaW5nIGB0aGlzYCwgYW5kIGFyZ3VtZW50cyxcbiAgLy8gb3B0aW9uYWxseSkuIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBGdW5jdGlvbi5iaW5kYCBpZlxuICAvLyBhdmFpbGFibGUuXG4gIF8uYmluZCA9IGZ1bmN0aW9uKGZ1bmMsIGNvbnRleHQpIHtcbiAgICB2YXIgYXJncywgYm91bmQ7XG4gICAgaWYgKG5hdGl2ZUJpbmQgJiYgZnVuYy5iaW5kID09PSBuYXRpdmVCaW5kKSByZXR1cm4gbmF0aXZlQmluZC5hcHBseShmdW5jLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKGZ1bmMpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdCaW5kIG11c3QgYmUgY2FsbGVkIG9uIGEgZnVuY3Rpb24nKTtcbiAgICBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgIGJvdW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgYm91bmQpKSByZXR1cm4gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcbiAgICAgIEN0b3IucHJvdG90eXBlID0gZnVuYy5wcm90b3R5cGU7XG4gICAgICB2YXIgc2VsZiA9IG5ldyBDdG9yO1xuICAgICAgQ3Rvci5wcm90b3R5cGUgPSBudWxsO1xuICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkoc2VsZiwgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgICBpZiAoXy5pc09iamVjdChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfTtcbiAgICByZXR1cm4gYm91bmQ7XG4gIH07XG5cbiAgLy8gUGFydGlhbGx5IGFwcGx5IGEgZnVuY3Rpb24gYnkgY3JlYXRpbmcgYSB2ZXJzaW9uIHRoYXQgaGFzIGhhZCBzb21lIG9mIGl0c1xuICAvLyBhcmd1bWVudHMgcHJlLWZpbGxlZCwgd2l0aG91dCBjaGFuZ2luZyBpdHMgZHluYW1pYyBgdGhpc2AgY29udGV4dC4gXyBhY3RzXG4gIC8vIGFzIGEgcGxhY2Vob2xkZXIsIGFsbG93aW5nIGFueSBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMgdG8gYmUgcHJlLWZpbGxlZC5cbiAgXy5wYXJ0aWFsID0gZnVuY3Rpb24oZnVuYykge1xuICAgIHZhciBib3VuZEFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gMDtcbiAgICAgIHZhciBhcmdzID0gYm91bmRBcmdzLnNsaWNlKCk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYXJnc1tpXSA9PT0gXykgYXJnc1tpXSA9IGFyZ3VtZW50c1twb3NpdGlvbisrXTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGFyZ3VtZW50cy5sZW5ndGgpIGFyZ3MucHVzaChhcmd1bWVudHNbcG9zaXRpb24rK10pO1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICAvLyBCaW5kIGEgbnVtYmVyIG9mIGFuIG9iamVjdCdzIG1ldGhvZHMgdG8gdGhhdCBvYmplY3QuIFJlbWFpbmluZyBhcmd1bWVudHNcbiAgLy8gYXJlIHRoZSBtZXRob2QgbmFtZXMgdG8gYmUgYm91bmQuIFVzZWZ1bCBmb3IgZW5zdXJpbmcgdGhhdCBhbGwgY2FsbGJhY2tzXG4gIC8vIGRlZmluZWQgb24gYW4gb2JqZWN0IGJlbG9uZyB0byBpdC5cbiAgXy5iaW5kQWxsID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIGksIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsIGtleTtcbiAgICBpZiAobGVuZ3RoIDw9IDEpIHRocm93IG5ldyBFcnJvcignYmluZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1lcycpO1xuICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gYXJndW1lbnRzW2ldO1xuICAgICAgb2JqW2tleV0gPSBfLmJpbmQob2JqW2tleV0sIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gTWVtb2l6ZSBhbiBleHBlbnNpdmUgZnVuY3Rpb24gYnkgc3RvcmluZyBpdHMgcmVzdWx0cy5cbiAgXy5tZW1vaXplID0gZnVuY3Rpb24oZnVuYywgaGFzaGVyKSB7XG4gICAgdmFyIG1lbW9pemUgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBjYWNoZSA9IG1lbW9pemUuY2FjaGU7XG4gICAgICB2YXIgYWRkcmVzcyA9IGhhc2hlciA/IGhhc2hlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDoga2V5O1xuICAgICAgaWYgKCFfLmhhcyhjYWNoZSwgYWRkcmVzcykpIGNhY2hlW2FkZHJlc3NdID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIGNhY2hlW2FkZHJlc3NdO1xuICAgIH07XG4gICAgbWVtb2l6ZS5jYWNoZSA9IHt9O1xuICAgIHJldHVybiBtZW1vaXplO1xuICB9O1xuXG4gIC8vIERlbGF5cyBhIGZ1bmN0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgYW5kIHRoZW4gY2FsbHNcbiAgLy8gaXQgd2l0aCB0aGUgYXJndW1lbnRzIHN1cHBsaWVkLlxuICBfLmRlbGF5ID0gZnVuY3Rpb24oZnVuYywgd2FpdCkge1xuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9LCB3YWl0KTtcbiAgfTtcblxuICAvLyBEZWZlcnMgYSBmdW5jdGlvbiwgc2NoZWR1bGluZyBpdCB0byBydW4gYWZ0ZXIgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXNcbiAgLy8gY2xlYXJlZC5cbiAgXy5kZWZlciA9IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICByZXR1cm4gXy5kZWxheS5hcHBseShfLCBbZnVuYywgMV0uY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSkpO1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgd2hlbiBpbnZva2VkLCB3aWxsIG9ubHkgYmUgdHJpZ2dlcmVkIGF0IG1vc3Qgb25jZVxuICAvLyBkdXJpbmcgYSBnaXZlbiB3aW5kb3cgb2YgdGltZS4gTm9ybWFsbHksIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gd2lsbCBydW5cbiAgLy8gYXMgbXVjaCBhcyBpdCBjYW4sIHdpdGhvdXQgZXZlciBnb2luZyBtb3JlIHRoYW4gb25jZSBwZXIgYHdhaXRgIGR1cmF0aW9uO1xuICAvLyBidXQgaWYgeW91J2QgbGlrZSB0byBkaXNhYmxlIHRoZSBleGVjdXRpb24gb24gdGhlIGxlYWRpbmcgZWRnZSwgcGFzc1xuICAvLyBge2xlYWRpbmc6IGZhbHNlfWAuIFRvIGRpc2FibGUgZXhlY3V0aW9uIG9uIHRoZSB0cmFpbGluZyBlZGdlLCBkaXR0by5cbiAgXy50aHJvdHRsZSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICB2YXIgY29udGV4dCwgYXJncywgcmVzdWx0O1xuICAgIHZhciB0aW1lb3V0ID0gbnVsbDtcbiAgICB2YXIgcHJldmlvdXMgPSAwO1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcHJldmlvdXMgPSBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlID8gMCA6IF8ubm93KCk7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBub3cgPSBfLm5vdygpO1xuICAgICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlKSBwcmV2aW91cyA9IG5vdztcbiAgICAgIHZhciByZW1haW5pbmcgPSB3YWl0IC0gKG5vdyAtIHByZXZpb3VzKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIHByZXZpb3VzID0gbm93O1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoIXRpbWVvdXQgJiYgb3B0aW9ucy50cmFpbGluZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCBhcyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0byBiZSBpbnZva2VkLCB3aWxsIG5vdFxuICAvLyBiZSB0cmlnZ2VyZWQuIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWluZyBjYWxsZWQgZm9yXG4gIC8vIE4gbWlsbGlzZWNvbmRzLiBJZiBgaW1tZWRpYXRlYCBpcyBwYXNzZWQsIHRyaWdnZXIgdGhlIGZ1bmN0aW9uIG9uIHRoZVxuICAvLyBsZWFkaW5nIGVkZ2UsIGluc3RlYWQgb2YgdGhlIHRyYWlsaW5nLlxuICBfLmRlYm91bmNlID0gZnVuY3Rpb24oZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7XG4gICAgdmFyIHRpbWVvdXQsIGFyZ3MsIGNvbnRleHQsIHRpbWVzdGFtcCwgcmVzdWx0O1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGFzdCA9IF8ubm93KCkgLSB0aW1lc3RhbXA7XG5cbiAgICAgIGlmIChsYXN0IDwgd2FpdCAmJiBsYXN0ID4gMCkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBjb250ZXh0ID0gdGhpcztcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICB0aW1lc3RhbXAgPSBfLm5vdygpO1xuICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7XG4gICAgICBpZiAoIXRpbWVvdXQpIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgICAgIGlmIChjYWxsTm93KSB7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGZ1bmN0aW9uIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgc2Vjb25kLFxuICAvLyBhbGxvd2luZyB5b3UgdG8gYWRqdXN0IGFyZ3VtZW50cywgcnVuIGNvZGUgYmVmb3JlIGFuZCBhZnRlciwgYW5kXG4gIC8vIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXG4gIF8ud3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIHdyYXBwZXIpIHtcbiAgICByZXR1cm4gXy5wYXJ0aWFsKHdyYXBwZXIsIGZ1bmMpO1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBuZWdhdGVkIHZlcnNpb24gb2YgdGhlIHBhc3NlZC1pbiBwcmVkaWNhdGUuXG4gIF8ubmVnYXRlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBhIGxpc3Qgb2YgZnVuY3Rpb25zLCBlYWNoXG4gIC8vIGNvbnN1bWluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGZvbGxvd3MuXG4gIF8uY29tcG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBzdGFydCA9IGFyZ3MubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaSA9IHN0YXJ0O1xuICAgICAgdmFyIHJlc3VsdCA9IGFyZ3Nbc3RhcnRdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB3aGlsZSAoaS0tKSByZXN1bHQgPSBhcmdzW2ldLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgYWZ0ZXIgYmVpbmcgY2FsbGVkIE4gdGltZXMuXG4gIF8uYWZ0ZXIgPSBmdW5jdGlvbih0aW1lcywgZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgtLXRpbWVzIDwgMSkge1xuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIGJlZm9yZSBiZWluZyBjYWxsZWQgTiB0aW1lcy5cbiAgXy5iZWZvcmUgPSBmdW5jdGlvbih0aW1lcywgZnVuYykge1xuICAgIHZhciBtZW1vO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgtLXRpbWVzID4gMCkge1xuICAgICAgICBtZW1vID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnVuYyA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYXQgbW9zdCBvbmUgdGltZSwgbm8gbWF0dGVyIGhvd1xuICAvLyBvZnRlbiB5b3UgY2FsbCBpdC4gVXNlZnVsIGZvciBsYXp5IGluaXRpYWxpemF0aW9uLlxuICBfLm9uY2UgPSBfLnBhcnRpYWwoXy5iZWZvcmUsIDIpO1xuXG4gIC8vIE9iamVjdCBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFJldHJpZXZlIHRoZSBuYW1lcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLlxuICAvLyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgT2JqZWN0LmtleXNgXG4gIF8ua2V5cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgaWYgKG5hdGl2ZUtleXMpIHJldHVybiBuYXRpdmVLZXlzKG9iaik7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoXy5oYXMob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgICByZXR1cm4ga2V5cztcbiAgfTtcblxuICAvLyBSZXRyaWV2ZSB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuXG4gIF8udmFsdWVzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIHZhbHVlcyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWVzW2ldID0gb2JqW2tleXNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9O1xuXG4gIC8vIENvbnZlcnQgYW4gb2JqZWN0IGludG8gYSBsaXN0IG9mIGBba2V5LCB2YWx1ZV1gIHBhaXJzLlxuICBfLnBhaXJzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIHBhaXJzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBwYWlyc1tpXSA9IFtrZXlzW2ldLCBvYmpba2V5c1tpXV1dO1xuICAgIH1cbiAgICByZXR1cm4gcGFpcnM7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IHRoZSBrZXlzIGFuZCB2YWx1ZXMgb2YgYW4gb2JqZWN0LiBUaGUgdmFsdWVzIG11c3QgYmUgc2VyaWFsaXphYmxlLlxuICBfLmludmVydCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRbb2JqW2tleXNbaV1dXSA9IGtleXNbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgdGhlIGZ1bmN0aW9uIG5hbWVzIGF2YWlsYWJsZSBvbiB0aGUgb2JqZWN0LlxuICAvLyBBbGlhc2VkIGFzIGBtZXRob2RzYFxuICBfLmZ1bmN0aW9ucyA9IF8ubWV0aG9kcyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBuYW1lcyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ob2JqW2tleV0pKSBuYW1lcy5wdXNoKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBuYW1lcy5zb3J0KCk7XG4gIH07XG5cbiAgLy8gRXh0ZW5kIGEgZ2l2ZW4gb2JqZWN0IHdpdGggYWxsIHRoZSBwcm9wZXJ0aWVzIGluIHBhc3NlZC1pbiBvYmplY3QocykuXG4gIF8uZXh0ZW5kID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gICAgdmFyIHNvdXJjZSwgcHJvcDtcbiAgICBmb3IgKHZhciBpID0gMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHByb3AgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgcHJvcCkpIHtcbiAgICAgICAgICAgIG9ialtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCBvbmx5IGNvbnRhaW5pbmcgdGhlIHdoaXRlbGlzdGVkIHByb3BlcnRpZXMuXG4gIF8ucGljayA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0ge30sIGtleTtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiByZXN1bHQ7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgICBpZiAoaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqKSkgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBjb25jYXQuYXBwbHkoW10sIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgICBvYmogPSBuZXcgT2JqZWN0KG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICBpZiAoa2V5IGluIG9iaikgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IHdpdGhvdXQgdGhlIGJsYWNrbGlzdGVkIHByb3BlcnRpZXMuXG4gIF8ub21pdCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKGl0ZXJhdGVlKSkge1xuICAgICAgaXRlcmF0ZWUgPSBfLm5lZ2F0ZShpdGVyYXRlZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBrZXlzID0gXy5tYXAoY29uY2F0LmFwcGx5KFtdLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpLCBTdHJpbmcpO1xuICAgICAgaXRlcmF0ZWUgPSBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICAgIHJldHVybiAhXy5jb250YWlucyhrZXlzLCBrZXkpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIF8ucGljayhvYmosIGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgfTtcblxuICAvLyBGaWxsIGluIGEgZ2l2ZW4gb2JqZWN0IHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICBfLmRlZmF1bHRzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gICAgZm9yICh2YXIgaSA9IDEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChvYmpbcHJvcF0gPT09IHZvaWQgMCkgb2JqW3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIENyZWF0ZSBhIChzaGFsbG93LWNsb25lZCkgZHVwbGljYXRlIG9mIGFuIG9iamVjdC5cbiAgXy5jbG9uZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIHJldHVybiBfLmlzQXJyYXkob2JqKSA/IG9iai5zbGljZSgpIDogXy5leHRlbmQoe30sIG9iaik7XG4gIH07XG5cbiAgLy8gSW52b2tlcyBpbnRlcmNlcHRvciB3aXRoIHRoZSBvYmosIGFuZCB0aGVuIHJldHVybnMgb2JqLlxuICAvLyBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiwgaW5cbiAgLy8gb3JkZXIgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIGludGVybWVkaWF0ZSByZXN1bHRzIHdpdGhpbiB0aGUgY2hhaW4uXG4gIF8udGFwID0gZnVuY3Rpb24ob2JqLCBpbnRlcmNlcHRvcikge1xuICAgIGludGVyY2VwdG9yKG9iaik7XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYGlzRXF1YWxgLlxuICB2YXIgZXEgPSBmdW5jdGlvbihhLCBiLCBhU3RhY2ssIGJTdGFjaykge1xuICAgIC8vIElkZW50aWNhbCBvYmplY3RzIGFyZSBlcXVhbC4gYDAgPT09IC0wYCwgYnV0IHRoZXkgYXJlbid0IGlkZW50aWNhbC5cbiAgICAvLyBTZWUgdGhlIFtIYXJtb255IGBlZ2FsYCBwcm9wb3NhbF0oaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTplZ2FsKS5cbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIGEgIT09IDAgfHwgMSAvIGEgPT09IDEgLyBiO1xuICAgIC8vIEEgc3RyaWN0IGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5IGJlY2F1c2UgYG51bGwgPT0gdW5kZWZpbmVkYC5cbiAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkgcmV0dXJuIGEgPT09IGI7XG4gICAgLy8gVW53cmFwIGFueSB3cmFwcGVkIG9iamVjdHMuXG4gICAgaWYgKGEgaW5zdGFuY2VvZiBfKSBhID0gYS5fd3JhcHBlZDtcbiAgICBpZiAoYiBpbnN0YW5jZW9mIF8pIGIgPSBiLl93cmFwcGVkO1xuICAgIC8vIENvbXBhcmUgYFtbQ2xhc3NdXWAgbmFtZXMuXG4gICAgdmFyIGNsYXNzTmFtZSA9IHRvU3RyaW5nLmNhbGwoYSk7XG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdG9TdHJpbmcuY2FsbChiKSkgcmV0dXJuIGZhbHNlO1xuICAgIHN3aXRjaCAoY2xhc3NOYW1lKSB7XG4gICAgICAvLyBTdHJpbmdzLCBudW1iZXJzLCByZWd1bGFyIGV4cHJlc3Npb25zLCBkYXRlcywgYW5kIGJvb2xlYW5zIGFyZSBjb21wYXJlZCBieSB2YWx1ZS5cbiAgICAgIGNhc2UgJ1tvYmplY3QgUmVnRXhwXSc6XG4gICAgICAvLyBSZWdFeHBzIGFyZSBjb2VyY2VkIHRvIHN0cmluZ3MgZm9yIGNvbXBhcmlzb24gKE5vdGU6ICcnICsgL2EvaSA9PT0gJy9hL2knKVxuICAgICAgY2FzZSAnW29iamVjdCBTdHJpbmddJzpcbiAgICAgICAgLy8gUHJpbWl0aXZlcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBvYmplY3Qgd3JhcHBlcnMgYXJlIGVxdWl2YWxlbnQ7IHRodXMsIGBcIjVcImAgaXNcbiAgICAgICAgLy8gZXF1aXZhbGVudCB0byBgbmV3IFN0cmluZyhcIjVcIilgLlxuICAgICAgICByZXR1cm4gJycgKyBhID09PSAnJyArIGI7XG4gICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOlxuICAgICAgICAvLyBgTmFOYHMgYXJlIGVxdWl2YWxlbnQsIGJ1dCBub24tcmVmbGV4aXZlLlxuICAgICAgICAvLyBPYmplY3QoTmFOKSBpcyBlcXVpdmFsZW50IHRvIE5hTlxuICAgICAgICBpZiAoK2EgIT09ICthKSByZXR1cm4gK2IgIT09ICtiO1xuICAgICAgICAvLyBBbiBgZWdhbGAgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgZm9yIG90aGVyIG51bWVyaWMgdmFsdWVzLlxuICAgICAgICByZXR1cm4gK2EgPT09IDAgPyAxIC8gK2EgPT09IDEgLyBiIDogK2EgPT09ICtiO1xuICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XG4gICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcbiAgICAgICAgLy8gQ29lcmNlIGRhdGVzIGFuZCBib29sZWFucyB0byBudW1lcmljIHByaW1pdGl2ZSB2YWx1ZXMuIERhdGVzIGFyZSBjb21wYXJlZCBieSB0aGVpclxuICAgICAgICAvLyBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnMuIE5vdGUgdGhhdCBpbnZhbGlkIGRhdGVzIHdpdGggbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zXG4gICAgICAgIC8vIG9mIGBOYU5gIGFyZSBub3QgZXF1aXZhbGVudC5cbiAgICAgICAgcmV0dXJuICthID09PSArYjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gQXNzdW1lIGVxdWFsaXR5IGZvciBjeWNsaWMgc3RydWN0dXJlcy4gVGhlIGFsZ29yaXRobSBmb3IgZGV0ZWN0aW5nIGN5Y2xpY1xuICAgIC8vIHN0cnVjdHVyZXMgaXMgYWRhcHRlZCBmcm9tIEVTIDUuMSBzZWN0aW9uIDE1LjEyLjMsIGFic3RyYWN0IG9wZXJhdGlvbiBgSk9gLlxuICAgIHZhciBsZW5ndGggPSBhU3RhY2subGVuZ3RoO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgLy8gTGluZWFyIHNlYXJjaC4gUGVyZm9ybWFuY2UgaXMgaW52ZXJzZWx5IHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mXG4gICAgICAvLyB1bmlxdWUgbmVzdGVkIHN0cnVjdHVyZXMuXG4gICAgICBpZiAoYVN0YWNrW2xlbmd0aF0gPT09IGEpIHJldHVybiBiU3RhY2tbbGVuZ3RoXSA9PT0gYjtcbiAgICB9XG4gICAgLy8gT2JqZWN0cyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVpdmFsZW50LCBidXQgYE9iamVjdGBzXG4gICAgLy8gZnJvbSBkaWZmZXJlbnQgZnJhbWVzIGFyZS5cbiAgICB2YXIgYUN0b3IgPSBhLmNvbnN0cnVjdG9yLCBiQ3RvciA9IGIuY29uc3RydWN0b3I7XG4gICAgaWYgKFxuICAgICAgYUN0b3IgIT09IGJDdG9yICYmXG4gICAgICAvLyBIYW5kbGUgT2JqZWN0LmNyZWF0ZSh4KSBjYXNlc1xuICAgICAgJ2NvbnN0cnVjdG9yJyBpbiBhICYmICdjb25zdHJ1Y3RvcicgaW4gYiAmJlxuICAgICAgIShfLmlzRnVuY3Rpb24oYUN0b3IpICYmIGFDdG9yIGluc3RhbmNlb2YgYUN0b3IgJiZcbiAgICAgICAgXy5pc0Z1bmN0aW9uKGJDdG9yKSAmJiBiQ3RvciBpbnN0YW5jZW9mIGJDdG9yKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBBZGQgdGhlIGZpcnN0IG9iamVjdCB0byB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnB1c2goYSk7XG4gICAgYlN0YWNrLnB1c2goYik7XG4gICAgdmFyIHNpemUsIHJlc3VsdDtcbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgYW5kIGFycmF5cy5cbiAgICBpZiAoY2xhc3NOYW1lID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICAvLyBDb21wYXJlIGFycmF5IGxlbmd0aHMgdG8gZGV0ZXJtaW5lIGlmIGEgZGVlcCBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeS5cbiAgICAgIHNpemUgPSBhLmxlbmd0aDtcbiAgICAgIHJlc3VsdCA9IHNpemUgPT09IGIubGVuZ3RoO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAvLyBEZWVwIGNvbXBhcmUgdGhlIGNvbnRlbnRzLCBpZ25vcmluZyBub24tbnVtZXJpYyBwcm9wZXJ0aWVzLlxuICAgICAgICB3aGlsZSAoc2l6ZS0tKSB7XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID0gZXEoYVtzaXplXSwgYltzaXplXSwgYVN0YWNrLCBiU3RhY2spKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVlcCBjb21wYXJlIG9iamVjdHMuXG4gICAgICB2YXIga2V5cyA9IF8ua2V5cyhhKSwga2V5O1xuICAgICAgc2l6ZSA9IGtleXMubGVuZ3RoO1xuICAgICAgLy8gRW5zdXJlIHRoYXQgYm90aCBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUgbnVtYmVyIG9mIHByb3BlcnRpZXMgYmVmb3JlIGNvbXBhcmluZyBkZWVwIGVxdWFsaXR5LlxuICAgICAgcmVzdWx0ID0gXy5rZXlzKGIpLmxlbmd0aCA9PT0gc2l6ZTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgd2hpbGUgKHNpemUtLSkge1xuICAgICAgICAgIC8vIERlZXAgY29tcGFyZSBlYWNoIG1lbWJlclxuICAgICAgICAgIGtleSA9IGtleXNbc2l6ZV07XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID0gXy5oYXMoYiwga2V5KSAmJiBlcShhW2tleV0sIGJba2V5XSwgYVN0YWNrLCBiU3RhY2spKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIHRoZSBmaXJzdCBvYmplY3QgZnJvbSB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnBvcCgpO1xuICAgIGJTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFBlcmZvcm0gYSBkZWVwIGNvbXBhcmlzb24gdG8gY2hlY2sgaWYgdHdvIG9iamVjdHMgYXJlIGVxdWFsLlxuICBfLmlzRXF1YWwgPSBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGVxKGEsIGIsIFtdLCBbXSk7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiBhcnJheSwgc3RyaW5nLCBvciBvYmplY3QgZW1wdHk/XG4gIC8vIEFuIFwiZW1wdHlcIiBvYmplY3QgaGFzIG5vIGVudW1lcmFibGUgb3duLXByb3BlcnRpZXMuXG4gIF8uaXNFbXB0eSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKF8uaXNBcnJheShvYmopIHx8IF8uaXNTdHJpbmcob2JqKSB8fCBfLmlzQXJndW1lbnRzKG9iaikpIHJldHVybiBvYmoubGVuZ3RoID09PSAwO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIGlmIChfLmhhcyhvYmosIGtleSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgRE9NIGVsZW1lbnQ/XG4gIF8uaXNFbGVtZW50ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuICEhKG9iaiAmJiBvYmoubm9kZVR5cGUgPT09IDEpO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYW4gYXJyYXk/XG4gIC8vIERlbGVnYXRlcyB0byBFQ01BNSdzIG5hdGl2ZSBBcnJheS5pc0FycmF5XG4gIF8uaXNBcnJheSA9IG5hdGl2ZUlzQXJyYXkgfHwgZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIGFuIG9iamVjdD9cbiAgXy5pc09iamVjdCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIG9iajtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlID09PSAnb2JqZWN0JyAmJiAhIW9iajtcbiAgfTtcblxuICAvLyBBZGQgc29tZSBpc1R5cGUgbWV0aG9kczogaXNBcmd1bWVudHMsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc051bWJlciwgaXNEYXRlLCBpc1JlZ0V4cC5cbiAgXy5lYWNoKFsnQXJndW1lbnRzJywgJ0Z1bmN0aW9uJywgJ1N0cmluZycsICdOdW1iZXInLCAnRGF0ZScsICdSZWdFeHAnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIF9bJ2lzJyArIG5hbWVdID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCAnICsgbmFtZSArICddJztcbiAgICB9O1xuICB9KTtcblxuICAvLyBEZWZpbmUgYSBmYWxsYmFjayB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaW4gYnJvd3NlcnMgKGFoZW0sIElFKSwgd2hlcmVcbiAgLy8gdGhlcmUgaXNuJ3QgYW55IGluc3BlY3RhYmxlIFwiQXJndW1lbnRzXCIgdHlwZS5cbiAgaWYgKCFfLmlzQXJndW1lbnRzKGFyZ3VtZW50cykpIHtcbiAgICBfLmlzQXJndW1lbnRzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gXy5oYXMob2JqLCAnY2FsbGVlJyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIE9wdGltaXplIGBpc0Z1bmN0aW9uYCBpZiBhcHByb3ByaWF0ZS4gV29yayBhcm91bmQgYW4gSUUgMTEgYnVnLlxuICBpZiAodHlwZW9mIC8uLyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIF8uaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJyB8fCBmYWxzZTtcbiAgICB9O1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiBvYmplY3QgYSBmaW5pdGUgbnVtYmVyP1xuICBfLmlzRmluaXRlID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIGlzRmluaXRlKG9iaikgJiYgIWlzTmFOKHBhcnNlRmxvYXQob2JqKSk7XG4gIH07XG5cbiAgLy8gSXMgdGhlIGdpdmVuIHZhbHVlIGBOYU5gPyAoTmFOIGlzIHRoZSBvbmx5IG51bWJlciB3aGljaCBkb2VzIG5vdCBlcXVhbCBpdHNlbGYpLlxuICBfLmlzTmFOID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIF8uaXNOdW1iZXIob2JqKSAmJiBvYmogIT09ICtvYmo7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIGJvb2xlYW4/XG4gIF8uaXNCb29sZWFuID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gdHJ1ZSB8fCBvYmogPT09IGZhbHNlIHx8IHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgZXF1YWwgdG8gbnVsbD9cbiAgXy5pc051bGwgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSBudWxsO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgdW5kZWZpbmVkP1xuICBfLmlzVW5kZWZpbmVkID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gdm9pZCAwO1xuICB9O1xuXG4gIC8vIFNob3J0Y3V0IGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgZGlyZWN0bHlcbiAgLy8gb24gaXRzZWxmIChpbiBvdGhlciB3b3Jkcywgbm90IG9uIGEgcHJvdG90eXBlKS5cbiAgXy5oYXMgPSBmdW5jdGlvbihvYmosIGtleSkge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbiAgfTtcblxuICAvLyBVdGlsaXR5IEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFJ1biBVbmRlcnNjb3JlLmpzIGluICpub0NvbmZsaWN0KiBtb2RlLCByZXR1cm5pbmcgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHNcbiAgLy8gcHJldmlvdXMgb3duZXIuIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBfLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICByb290Ll8gPSBwcmV2aW91c1VuZGVyc2NvcmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gS2VlcCB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYXJvdW5kIGZvciBkZWZhdWx0IGl0ZXJhdGVlcy5cbiAgXy5pZGVudGl0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIF8uY29uc3RhbnQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICB9O1xuXG4gIF8ubm9vcCA9IGZ1bmN0aW9uKCl7fTtcblxuICBfLnByb3BlcnR5ID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9ialtrZXldO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIHByZWRpY2F0ZSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gc2V0IG9mIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBfLm1hdGNoZXMgPSBmdW5jdGlvbihhdHRycykge1xuICAgIHZhciBwYWlycyA9IF8ucGFpcnMoYXR0cnMpLCBsZW5ndGggPSBwYWlycy5sZW5ndGg7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gIWxlbmd0aDtcbiAgICAgIG9iaiA9IG5ldyBPYmplY3Qob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpXSwga2V5ID0gcGFpclswXTtcbiAgICAgICAgaWYgKHBhaXJbMV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUnVuIGEgZnVuY3Rpb24gKipuKiogdGltZXMuXG4gIF8udGltZXMgPSBmdW5jdGlvbihuLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciBhY2N1bSA9IEFycmF5KE1hdGgubWF4KDAsIG4pKTtcbiAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0LCAxKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgYWNjdW1baV0gPSBpdGVyYXRlZShpKTtcbiAgICByZXR1cm4gYWNjdW07XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiBtaW4gYW5kIG1heCAoaW5jbHVzaXZlKS5cbiAgXy5yYW5kb20gPSBmdW5jdGlvbihtaW4sIG1heCkge1xuICAgIGlmIChtYXggPT0gbnVsbCkge1xuICAgICAgbWF4ID0gbWluO1xuICAgICAgbWluID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIG1pbiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSk7XG4gIH07XG5cbiAgLy8gQSAocG9zc2libHkgZmFzdGVyKSB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBhcyBhbiBpbnRlZ2VyLlxuICBfLm5vdyA9IERhdGUubm93IHx8IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfTtcblxuICAgLy8gTGlzdCBvZiBIVE1MIGVudGl0aWVzIGZvciBlc2NhcGluZy5cbiAgdmFyIGVzY2FwZU1hcCA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmI3gyNzsnLFxuICAgICdgJzogJyYjeDYwOydcbiAgfTtcbiAgdmFyIHVuZXNjYXBlTWFwID0gXy5pbnZlcnQoZXNjYXBlTWFwKTtcblxuICAvLyBGdW5jdGlvbnMgZm9yIGVzY2FwaW5nIGFuZCB1bmVzY2FwaW5nIHN0cmluZ3MgdG8vZnJvbSBIVE1MIGludGVycG9sYXRpb24uXG4gIHZhciBjcmVhdGVFc2NhcGVyID0gZnVuY3Rpb24obWFwKSB7XG4gICAgdmFyIGVzY2FwZXIgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hcFttYXRjaF07XG4gICAgfTtcbiAgICAvLyBSZWdleGVzIGZvciBpZGVudGlmeWluZyBhIGtleSB0aGF0IG5lZWRzIHRvIGJlIGVzY2FwZWRcbiAgICB2YXIgc291cmNlID0gJyg/OicgKyBfLmtleXMobWFwKS5qb2luKCd8JykgKyAnKSc7XG4gICAgdmFyIHRlc3RSZWdleHAgPSBSZWdFeHAoc291cmNlKTtcbiAgICB2YXIgcmVwbGFjZVJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UsICdnJyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyAnJyA6ICcnICsgc3RyaW5nO1xuICAgICAgcmV0dXJuIHRlc3RSZWdleHAudGVzdChzdHJpbmcpID8gc3RyaW5nLnJlcGxhY2UocmVwbGFjZVJlZ2V4cCwgZXNjYXBlcikgOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgXy5lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKGVzY2FwZU1hcCk7XG4gIF8udW5lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKHVuZXNjYXBlTWFwKTtcblxuICAvLyBJZiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGBwcm9wZXJ0eWAgaXMgYSBmdW5jdGlvbiB0aGVuIGludm9rZSBpdCB3aXRoIHRoZVxuICAvLyBgb2JqZWN0YCBhcyBjb250ZXh0OyBvdGhlcndpc2UsIHJldHVybiBpdC5cbiAgXy5yZXN1bHQgPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgIHZhciB2YWx1ZSA9IG9iamVjdFtwcm9wZXJ0eV07XG4gICAgcmV0dXJuIF8uaXNGdW5jdGlvbih2YWx1ZSkgPyBvYmplY3RbcHJvcGVydHldKCkgOiB2YWx1ZTtcbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBhIHVuaXF1ZSBpbnRlZ2VyIGlkICh1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgY2xpZW50IHNlc3Npb24pLlxuICAvLyBVc2VmdWwgZm9yIHRlbXBvcmFyeSBET00gaWRzLlxuICB2YXIgaWRDb3VudGVyID0gMDtcbiAgXy51bmlxdWVJZCA9IGZ1bmN0aW9uKHByZWZpeCkge1xuICAgIHZhciBpZCA9ICsraWRDb3VudGVyICsgJyc7XG4gICAgcmV0dXJuIHByZWZpeCA/IHByZWZpeCArIGlkIDogaWQ7XG4gIH07XG5cbiAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlXG4gIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgXy50ZW1wbGF0ZVNldHRpbmdzID0ge1xuICAgIGV2YWx1YXRlICAgIDogLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xcc1xcU10rPyklPi9nLFxuICAgIGVzY2FwZSAgICAgIDogLzwlLShbXFxzXFxTXSs/KSU+L2dcbiAgfTtcblxuICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuXG4gIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXNcbiAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guXG4gIHZhciBub01hdGNoID0gLyguKV4vO1xuXG4gIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhXG4gIC8vIHN0cmluZyBsaXRlcmFsLlxuICB2YXIgZXNjYXBlcyA9IHtcbiAgICBcIidcIjogICAgICBcIidcIixcbiAgICAnXFxcXCc6ICAgICAnXFxcXCcsXG4gICAgJ1xccic6ICAgICAncicsXG4gICAgJ1xcbic6ICAgICAnbicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIHZhciBlc2NhcGVyID0gL1xcXFx8J3xcXHJ8XFxufFxcdTIwMjh8XFx1MjAyOS9nO1xuXG4gIHZhciBlc2NhcGVDaGFyID0gZnVuY3Rpb24obWF0Y2gpIHtcbiAgICByZXR1cm4gJ1xcXFwnICsgZXNjYXBlc1ttYXRjaF07XG4gIH07XG5cbiAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi5cbiAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLFxuICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS5cbiAgLy8gTkI6IGBvbGRTZXR0aW5nc2Agb25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgc2V0dGluZ3MsIG9sZFNldHRpbmdzKSB7XG4gICAgaWYgKCFzZXR0aW5ncyAmJiBvbGRTZXR0aW5ncykgc2V0dGluZ3MgPSBvbGRTZXR0aW5ncztcbiAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpO1xuXG4gICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uXG4gICAgdmFyIG1hdGNoZXIgPSBSZWdFeHAoW1xuICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsXG4gICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLFxuICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZVxuICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTtcblxuICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuXG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgc291cmNlID0gXCJfX3ArPSdcIjtcbiAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHtcbiAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UoZXNjYXBlciwgZXNjYXBlQ2hhcik7XG4gICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGVzY2FwZSArIFwiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXFxuJ1wiO1xuICAgICAgfSBlbHNlIGlmIChpbnRlcnBvbGF0ZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGludGVycG9sYXRlICsgXCIpKT09bnVsbD8nJzpfX3QpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlICsgXCJcXG5fX3ArPSdcIjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRvYmUgVk1zIG5lZWQgdGhlIG1hdGNoIHJldHVybmVkIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3Qgb2ZmZXN0LlxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pO1xuICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICAvLyBJZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLlxuICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xcbicgKyBzb3VyY2UgKyAnfVxcbic7XG5cbiAgICBzb3VyY2UgPSBcInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbixcIiArXG4gICAgICBcInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XFxuXCIgK1xuICAgICAgc291cmNlICsgJ3JldHVybiBfX3A7XFxuJztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTtcbiAgICB9O1xuXG4gICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLlxuICAgIHZhciBhcmd1bWVudCA9IHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonO1xuICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgYXJndW1lbnQgKyAnKXtcXG4nICsgc291cmNlICsgJ30nO1xuXG4gICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9O1xuXG4gIC8vIEFkZCBhIFwiY2hhaW5cIiBmdW5jdGlvbi4gU3RhcnQgY2hhaW5pbmcgYSB3cmFwcGVkIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBfLmNoYWluID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIGluc3RhbmNlID0gXyhvYmopO1xuICAgIGluc3RhbmNlLl9jaGFpbiA9IHRydWU7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xuXG4gIC8vIE9PUFxuICAvLyAtLS0tLS0tLS0tLS0tLS1cbiAgLy8gSWYgVW5kZXJzY29yZSBpcyBjYWxsZWQgYXMgYSBmdW5jdGlvbiwgaXQgcmV0dXJucyBhIHdyYXBwZWQgb2JqZWN0IHRoYXRcbiAgLy8gY2FuIGJlIHVzZWQgT08tc3R5bGUuIFRoaXMgd3JhcHBlciBob2xkcyBhbHRlcmVkIHZlcnNpb25zIG9mIGFsbCB0aGVcbiAgLy8gdW5kZXJzY29yZSBmdW5jdGlvbnMuIFdyYXBwZWQgb2JqZWN0cyBtYXkgYmUgY2hhaW5lZC5cblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udGludWUgY2hhaW5pbmcgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gIHZhciByZXN1bHQgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhaW4gPyBfKG9iaikuY2hhaW4oKSA6IG9iajtcbiAgfTtcblxuICAvLyBBZGQgeW91ciBvd24gY3VzdG9tIGZ1bmN0aW9ucyB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QuXG4gIF8ubWl4aW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICBfLmVhY2goXy5mdW5jdGlvbnMob2JqKSwgZnVuY3Rpb24obmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBfW25hbWVdID0gb2JqW25hbWVdO1xuICAgICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbdGhpcy5fd3JhcHBlZF07XG4gICAgICAgIHB1c2guYXBwbHkoYXJncywgYXJndW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5jYWxsKHRoaXMsIGZ1bmMuYXBwbHkoXywgYXJncykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBBZGQgYWxsIG9mIHRoZSBVbmRlcnNjb3JlIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlciBvYmplY3QuXG4gIF8ubWl4aW4oXyk7XG5cbiAgLy8gQWRkIGFsbCBtdXRhdG9yIEFycmF5IGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgXy5lYWNoKFsncG9wJywgJ3B1c2gnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9iaiA9IHRoaXMuX3dyYXBwZWQ7XG4gICAgICBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKChuYW1lID09PSAnc2hpZnQnIHx8IG5hbWUgPT09ICdzcGxpY2UnKSAmJiBvYmoubGVuZ3RoID09PSAwKSBkZWxldGUgb2JqWzBdO1xuICAgICAgcmV0dXJuIHJlc3VsdC5jYWxsKHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQWRkIGFsbCBhY2Nlc3NvciBBcnJheSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIuXG4gIF8uZWFjaChbJ2NvbmNhdCcsICdqb2luJywgJ3NsaWNlJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHJlc3VsdC5jYWxsKHRoaXMsIG1ldGhvZC5hcHBseSh0aGlzLl93cmFwcGVkLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcblxuICAvLyBFeHRyYWN0cyB0aGUgcmVzdWx0IGZyb20gYSB3cmFwcGVkIGFuZCBjaGFpbmVkIG9iamVjdC5cbiAgXy5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JhcHBlZDtcbiAgfTtcblxuICAvLyBBTUQgcmVnaXN0cmF0aW9uIGhhcHBlbnMgYXQgdGhlIGVuZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEFNRCBsb2FkZXJzXG4gIC8vIHRoYXQgbWF5IG5vdCBlbmZvcmNlIG5leHQtdHVybiBzZW1hbnRpY3Mgb24gbW9kdWxlcy4gRXZlbiB0aG91Z2ggZ2VuZXJhbFxuICAvLyBwcmFjdGljZSBmb3IgQU1EIHJlZ2lzdHJhdGlvbiBpcyB0byBiZSBhbm9ueW1vdXMsIHVuZGVyc2NvcmUgcmVnaXN0ZXJzXG4gIC8vIGFzIGEgbmFtZWQgbW9kdWxlIGJlY2F1c2UsIGxpa2UgalF1ZXJ5LCBpdCBpcyBhIGJhc2UgbGlicmFyeSB0aGF0IGlzXG4gIC8vIHBvcHVsYXIgZW5vdWdoIHRvIGJlIGJ1bmRsZWQgaW4gYSB0aGlyZCBwYXJ0eSBsaWIsIGJ1dCBub3QgYmUgcGFydCBvZlxuICAvLyBhbiBBTUQgbG9hZCByZXF1ZXN0LiBUaG9zZSBjYXNlcyBjb3VsZCBnZW5lcmF0ZSBhbiBlcnJvciB3aGVuIGFuXG4gIC8vIGFub255bW91cyBkZWZpbmUoKSBpcyBjYWxsZWQgb3V0c2lkZSBvZiBhIGxvYWRlciByZXF1ZXN0LlxuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKCd1bmRlcnNjb3JlJywgW10sIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCIvKiogQGxpY2Vuc2UgVVJJLmpzIHYzLjAuMSAoYykgMjAxMSBHYXJ5IENvdXJ0LiBMaWNlbnNlOiBodHRwOi8vZ2l0aHViLmNvbS9nYXJ5Y291cnQvdXJpLWpzICovXG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuXHR0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcblx0dHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG5cdChmYWN0b3J5KChnbG9iYWwuVVJJID0gZ2xvYmFsLlVSSSB8fCB7fSkpKTtcbn0odGhpcywgKGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gbWVyZ2UoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHNldHMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgc2V0c1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoc2V0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHNldHNbMF0gPSBzZXRzWzBdLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgdmFyIHhsID0gc2V0cy5sZW5ndGggLSAxO1xuICAgICAgICBmb3IgKHZhciB4ID0gMTsgeCA8IHhsOyArK3gpIHtcbiAgICAgICAgICAgIHNldHNbeF0gPSBzZXRzW3hdLnNsaWNlKDEsIC0xKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRzW3hsXSA9IHNldHNbeGxdLnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gc2V0cy5qb2luKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2V0c1swXTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdWJleHAoc3RyKSB7XG4gICAgcmV0dXJuIFwiKD86XCIgKyBzdHIgKyBcIilcIjtcbn1cbmZ1bmN0aW9uIHR5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8gPT09IHVuZGVmaW5lZCA/IFwidW5kZWZpbmVkXCIgOiBvID09PSBudWxsID8gXCJudWxsXCIgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc3BsaXQoXCIgXCIpLnBvcCgpLnNwbGl0KFwiXVwiKS5zaGlmdCgpLnRvTG93ZXJDYXNlKCk7XG59XG5mdW5jdGlvbiB0b1VwcGVyQ2FzZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7XG59XG5mdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICAgIHJldHVybiBvYmogIT09IHVuZGVmaW5lZCAmJiBvYmogIT09IG51bGwgPyBvYmogaW5zdGFuY2VvZiBBcnJheSA/IG9iaiA6IHR5cGVvZiBvYmoubGVuZ3RoICE9PSBcIm51bWJlclwiIHx8IG9iai5zcGxpdCB8fCBvYmouc2V0SW50ZXJ2YWwgfHwgb2JqLmNhbGwgPyBbb2JqXSA6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaikgOiBbXTtcbn1cblxuZnVuY3Rpb24gYnVpbGRFeHBzKGlzSVJJKSB7XG4gICAgdmFyIEFMUEhBJCQgPSBcIltBLVphLXpdXCIsXG4gICAgICAgIENSJCA9IFwiW1xcXFx4MERdXCIsXG4gICAgICAgIERJR0lUJCQgPSBcIlswLTldXCIsXG4gICAgICAgIERRVU9URSQkID0gXCJbXFxcXHgyMl1cIixcbiAgICAgICAgSEVYRElHJCQgPSBtZXJnZShESUdJVCQkLCBcIltBLUZhLWZdXCIpLFxuICAgICAgICAvL2Nhc2UtaW5zZW5zaXRpdmVcbiAgICBMRiQkID0gXCJbXFxcXHgwQV1cIixcbiAgICAgICAgU1AkJCA9IFwiW1xcXFx4MjBdXCIsXG4gICAgICAgIFBDVF9FTkNPREVEJCA9IHN1YmV4cChzdWJleHAoXCIlW0VGZWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVbODlBLUZhLWZdXCIgKyBIRVhESUckJCArIFwiJVwiICsgSEVYRElHJCQgKyBIRVhESUckJCkgKyBcInxcIiArIHN1YmV4cChcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpKSxcbiAgICAgICAgLy9leHBhbmRlZFxuICAgIEdFTl9ERUxJTVMkJCA9IFwiW1xcXFw6XFxcXC9cXFxcP1xcXFwjXFxcXFtcXFxcXVxcXFxAXVwiLFxuICAgICAgICBTVUJfREVMSU1TJCQgPSBcIltcXFxcIVxcXFwkXFxcXCZcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcO1xcXFw9XVwiLFxuICAgICAgICBSRVNFUlZFRCQkID0gbWVyZ2UoR0VOX0RFTElNUyQkLCBTVUJfREVMSU1TJCQpLFxuICAgICAgICBVQ1NDSEFSJCQgPSBpc0lSSSA/IFwiW1xcXFx4QTAtXFxcXHUyMDBEXFxcXHUyMDEwLVxcXFx1MjAyOVxcXFx1MjAyRi1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZFRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXQsIGV4Y2x1ZGVzIGJpZGkgY29udHJvbCBjaGFyYWN0ZXJzXG4gICAgSVBSSVZBVEUkJCA9IGlzSVJJID8gXCJbXFxcXHVFMDAwLVxcXFx1RjhGRl1cIiA6IFwiW11cIixcbiAgICAgICAgLy9zdWJzZXRcbiAgICBVTlJFU0VSVkVEJCQgPSBtZXJnZShBTFBIQSQkLCBESUdJVCQkLCBcIltcXFxcLVxcXFwuXFxcXF9cXFxcfl1cIiwgVUNTQ0hBUiQkKSxcbiAgICAgICAgU0NIRU1FJCA9IHN1YmV4cChBTFBIQSQkICsgbWVyZ2UoQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSArIFwiKlwiKSxcbiAgICAgICAgVVNFUklORk8kID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikpICsgXCIqXCIpLFxuICAgICAgICBERUNfT0NURVQkID0gc3ViZXhwKHN1YmV4cChcIjI1WzAtNV1cIikgKyBcInxcIiArIHN1YmV4cChcIjJbMC00XVwiICsgRElHSVQkJCkgKyBcInxcIiArIHN1YmV4cChcIjFcIiArIERJR0lUJCQgKyBESUdJVCQkKSArIFwifFwiICsgc3ViZXhwKFwiWzEtOV1cIiArIERJR0lUJCQpICsgXCJ8XCIgKyBESUdJVCQkKSxcbiAgICAgICAgSVBWNEFERFJFU1MkID0gc3ViZXhwKERFQ19PQ1RFVCQgKyBcIlxcXFwuXCIgKyBERUNfT0NURVQkICsgXCJcXFxcLlwiICsgREVDX09DVEVUJCArIFwiXFxcXC5cIiArIERFQ19PQ1RFVCQpLFxuICAgICAgICBIMTYkID0gc3ViZXhwKEhFWERJRyQkICsgXCJ7MSw0fVwiKSxcbiAgICAgICAgTFMzMiQgPSBzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIgKyBIMTYkKSArIFwifFwiICsgSVBWNEFERFJFU1MkKSxcbiAgICAgICAgSVBWNkFERFJFU1MxJCA9IHN1YmV4cChzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcIns2fVwiICsgTFMzMiQpLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzIkID0gc3ViZXhwKFwiXFxcXDpcXFxcOlwiICsgc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7NX1cIiArIExTMzIkKSxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgXCI6OlwiIDUoIGgxNiBcIjpcIiApIGxzMzJcbiAgICBJUFY2QUREUkVTUzMkID0gc3ViZXhwKHN1YmV4cChIMTYkKSArIFwiP1xcXFw6XFxcXDpcIiArIHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezR9XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAgICAgICAgICAgICAgIGgxNiBdIFwiOjpcIiA0KCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M0JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwxfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInszfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjEoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAzKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M1JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwyfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBzdWJleHAoSDE2JCArIFwiXFxcXDpcIikgKyBcInsyfVwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjIoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAyKCBoMTYgXCI6XCIgKSBsczMyXG4gICAgSVBWNkFERFJFU1M2JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCwzfVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkICsgXCJcXFxcOlwiICsgTFMzMiQpLFxuICAgICAgICAvL1sgKjMoIGgxNiBcIjpcIiApIGgxNiBdIFwiOjpcIiAgICBoMTYgXCI6XCIgICBsczMyXG4gICAgSVBWNkFERFJFU1M3JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw0fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBMUzMyJCksXG4gICAgICAgIC8vWyAqNCggaDE2IFwiOlwiICkgaDE2IF0gXCI6OlwiICAgICAgICAgICAgICBsczMyXG4gICAgSVBWNkFERFJFU1M4JCA9IHN1YmV4cChzdWJleHAoc3ViZXhwKEgxNiQgKyBcIlxcXFw6XCIpICsgXCJ7MCw1fVwiICsgSDE2JCkgKyBcIj9cXFxcOlxcXFw6XCIgKyBIMTYkKSxcbiAgICAgICAgLy9bICo1KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCIgICAgICAgICAgICAgIGgxNlxuICAgIElQVjZBRERSRVNTOSQgPSBzdWJleHAoc3ViZXhwKHN1YmV4cChIMTYkICsgXCJcXFxcOlwiKSArIFwiezAsNn1cIiArIEgxNiQpICsgXCI/XFxcXDpcXFxcOlwiKSxcbiAgICAgICAgLy9bICo2KCBoMTYgXCI6XCIgKSBoMTYgXSBcIjo6XCJcbiAgICBJUFY2QUREUkVTUyQgPSBzdWJleHAoW0lQVjZBRERSRVNTMSQsIElQVjZBRERSRVNTMiQsIElQVjZBRERSRVNTMyQsIElQVjZBRERSRVNTNCQsIElQVjZBRERSRVNTNSQsIElQVjZBRERSRVNTNiQsIElQVjZBRERSRVNTNyQsIElQVjZBRERSRVNTOCQsIElQVjZBRERSRVNTOSRdLmpvaW4oXCJ8XCIpKSxcbiAgICAgICAgSVBWRlVUVVJFJCA9IHN1YmV4cChcIlt2Vl1cIiArIEhFWERJRyQkICsgXCIrXFxcXC5cIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkLCBcIltcXFxcOl1cIikgKyBcIitcIiksXG4gICAgICAgIElQX0xJVEVSQUwkID0gc3ViZXhwKFwiXFxcXFtcIiArIHN1YmV4cChJUFY2QUREUkVTUyQgKyBcInxcIiArIElQVkZVVFVSRSQpICsgXCJcXFxcXVwiKSxcbiAgICAgICAgUkVHX05BTUUkID0gc3ViZXhwKHN1YmV4cChQQ1RfRU5DT0RFRCQgKyBcInxcIiArIG1lcmdlKFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSkgKyBcIipcIiksXG4gICAgICAgIEhPU1QkID0gc3ViZXhwKElQX0xJVEVSQUwkICsgXCJ8XCIgKyBJUFY0QUREUkVTUyQgKyBcIig/IVwiICsgUkVHX05BTUUkICsgXCIpXCIgKyBcInxcIiArIFJFR19OQU1FJCksXG4gICAgICAgIFBPUlQkID0gc3ViZXhwKERJR0lUJCQgKyBcIipcIiksXG4gICAgICAgIEFVVEhPUklUWSQgPSBzdWJleHAoc3ViZXhwKFVTRVJJTkZPJCArIFwiQFwiKSArIFwiP1wiICsgSE9TVCQgKyBzdWJleHAoXCJcXFxcOlwiICsgUE9SVCQpICsgXCI/XCIpLFxuICAgICAgICBQQ0hBUiQgPSBzdWJleHAoUENUX0VOQ09ERUQkICsgXCJ8XCIgKyBtZXJnZShVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQF1cIikpLFxuICAgICAgICBTRUdNRU5UJCA9IHN1YmV4cChQQ0hBUiQgKyBcIipcIiksXG4gICAgICAgIFNFR01FTlRfTlokID0gc3ViZXhwKFBDSEFSJCArIFwiK1wiKSxcbiAgICAgICAgU0VHTUVOVF9OWl9OQyQgPSBzdWJleHAoc3ViZXhwKFBDVF9FTkNPREVEJCArIFwifFwiICsgbWVyZ2UoVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFxAXVwiKSkgKyBcIitcIiksXG4gICAgICAgIFBBVEhfQUJFTVBUWSQgPSBzdWJleHAoc3ViZXhwKFwiXFxcXC9cIiArIFNFR01FTlQkKSArIFwiKlwiKSxcbiAgICAgICAgUEFUSF9BQlNPTFVURSQgPSBzdWJleHAoXCJcXFxcL1wiICsgc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCkgKyBcIj9cIiksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfTk9TQ0hFTUUkID0gc3ViZXhwKFNFR01FTlRfTlpfTkMkICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfUk9PVExFU1MkID0gc3ViZXhwKFNFR01FTlRfTlokICsgUEFUSF9BQkVNUFRZJCksXG4gICAgICAgIC8vc2ltcGxpZmllZFxuICAgIFBBVEhfRU1QVFkkID0gXCIoPyFcIiArIFBDSEFSJCArIFwiKVwiLFxuICAgICAgICBQQVRIJCA9IHN1YmV4cChQQVRIX0FCRU1QVFkkICsgXCJ8XCIgKyBQQVRIX0FCU09MVVRFJCArIFwifFwiICsgUEFUSF9OT1NDSEVNRSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFFVRVJZJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8XCIgKyBtZXJnZShcIltcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSkgKyBcIipcIiksXG4gICAgICAgIEZSQUdNRU5UJCA9IHN1YmV4cChzdWJleHAoUENIQVIkICsgXCJ8W1xcXFwvXFxcXD9dXCIpICsgXCIqXCIpLFxuICAgICAgICBISUVSX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFVSSSQgPSBzdWJleHAoU0NIRU1FJCArIFwiXFxcXDpcIiArIEhJRVJfUEFSVCQgKyBzdWJleHAoXCJcXFxcP1wiICsgUVVFUlkkKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCNcIiArIEZSQUdNRU5UJCkgKyBcIj9cIiksXG4gICAgICAgIFJFTEFUSVZFX1BBUlQkID0gc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC9cIiArIEFVVEhPUklUWSQgKyBQQVRIX0FCRU1QVFkkKSArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCksXG4gICAgICAgIFJFTEFUSVZFJCA9IHN1YmV4cChSRUxBVElWRV9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcI1wiICsgRlJBR01FTlQkKSArIFwiP1wiKSxcbiAgICAgICAgVVJJX1JFRkVSRU5DRSQgPSBzdWJleHAoVVJJJCArIFwifFwiICsgUkVMQVRJVkUkKSxcbiAgICAgICAgQUJTT0xVVEVfVVJJJCA9IHN1YmV4cChTQ0hFTUUkICsgXCJcXFxcOlwiICsgSElFUl9QQVJUJCArIHN1YmV4cChcIlxcXFw/XCIgKyBRVUVSWSQpICsgXCI/XCIpLFxuICAgICAgICBHRU5FUklDX1JFRiQgPSBcIl4oXCIgKyBTQ0hFTUUkICsgXCIpXFxcXDpcIiArIHN1YmV4cChzdWJleHAoXCJcXFxcL1xcXFwvKFwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/KVwiKSArIFwiPyhcIiArIFBBVEhfQUJFTVBUWSQgKyBcInxcIiArIFBBVEhfQUJTT0xVVEUkICsgXCJ8XCIgKyBQQVRIX1JPT1RMRVNTJCArIFwifFwiICsgUEFUSF9FTVBUWSQgKyBcIilcIikgKyBzdWJleHAoXCJcXFxcPyhcIiArIFFVRVJZJCArIFwiKVwiKSArIFwiP1wiICsgc3ViZXhwKFwiXFxcXCMoXCIgKyBGUkFHTUVOVCQgKyBcIilcIikgKyBcIj8kXCIsXG4gICAgICAgIFJFTEFUSVZFX1JFRiQgPSBcIl4oKXswfVwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfTk9TQ0hFTUUkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/XCIgKyBzdWJleHAoXCJcXFxcIyhcIiArIEZSQUdNRU5UJCArIFwiKVwiKSArIFwiPyRcIixcbiAgICAgICAgQUJTT0xVVEVfUkVGJCA9IFwiXihcIiArIFNDSEVNRSQgKyBcIilcXFxcOlwiICsgc3ViZXhwKHN1YmV4cChcIlxcXFwvXFxcXC8oXCIgKyBzdWJleHAoXCIoXCIgKyBVU0VSSU5GTyQgKyBcIilAXCIpICsgXCI/KFwiICsgSE9TVCQgKyBcIilcIiArIHN1YmV4cChcIlxcXFw6KFwiICsgUE9SVCQgKyBcIilcIikgKyBcIj8pXCIpICsgXCI/KFwiICsgUEFUSF9BQkVNUFRZJCArIFwifFwiICsgUEFUSF9BQlNPTFVURSQgKyBcInxcIiArIFBBVEhfUk9PVExFU1MkICsgXCJ8XCIgKyBQQVRIX0VNUFRZJCArIFwiKVwiKSArIHN1YmV4cChcIlxcXFw/KFwiICsgUVVFUlkkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBTQU1FRE9DX1JFRiQgPSBcIl5cIiArIHN1YmV4cChcIlxcXFwjKFwiICsgRlJBR01FTlQkICsgXCIpXCIpICsgXCI/JFwiLFxuICAgICAgICBBVVRIT1JJVFlfUkVGJCA9IFwiXlwiICsgc3ViZXhwKFwiKFwiICsgVVNFUklORk8kICsgXCIpQFwiKSArIFwiPyhcIiArIEhPU1QkICsgXCIpXCIgKyBzdWJleHAoXCJcXFxcOihcIiArIFBPUlQkICsgXCIpXCIpICsgXCI/JFwiO1xuICAgIHJldHVybiB7XG4gICAgICAgIE5PVF9TQ0hFTUU6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgQUxQSEEkJCwgRElHSVQkJCwgXCJbXFxcXCtcXFxcLVxcXFwuXVwiKSwgXCJnXCIpLFxuICAgICAgICBOT1RfVVNFUklORk86IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfSE9TVDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcW1xcXFxdXFxcXDpdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSDogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFw6XFxcXEBdXCIsIFVOUkVTRVJWRUQkJCwgU1VCX0RFTElNUyQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfUEFUSF9OT1NDSEVNRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXFxcXCVcXFxcL1xcXFxAXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgTk9UX1FVRVJZOiBuZXcgUmVnRXhwKG1lcmdlKFwiW15cXFxcJV1cIiwgVU5SRVNFUlZFRCQkLCBTVUJfREVMSU1TJCQsIFwiW1xcXFw6XFxcXEBcXFxcL1xcXFw/XVwiLCBJUFJJVkFURSQkKSwgXCJnXCIpLFxuICAgICAgICBOT1RfRlJBR01FTlQ6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCwgXCJbXFxcXDpcXFxcQFxcXFwvXFxcXD9dXCIpLCBcImdcIiksXG4gICAgICAgIEVTQ0FQRTogbmV3IFJlZ0V4cChtZXJnZShcIlteXVwiLCBVTlJFU0VSVkVEJCQsIFNVQl9ERUxJTVMkJCksIFwiZ1wiKSxcbiAgICAgICAgVU5SRVNFUlZFRDogbmV3IFJlZ0V4cChVTlJFU0VSVkVEJCQsIFwiZ1wiKSxcbiAgICAgICAgT1RIRVJfQ0hBUlM6IG5ldyBSZWdFeHAobWVyZ2UoXCJbXlxcXFwlXVwiLCBVTlJFU0VSVkVEJCQsIFJFU0VSVkVEJCQpLCBcImdcIiksXG4gICAgICAgIFBDVF9FTkNPREVEOiBuZXcgUmVnRXhwKFBDVF9FTkNPREVEJCwgXCJnXCIpLFxuICAgICAgICBJUFY2QUREUkVTUzogbmV3IFJlZ0V4cChcIlxcXFxbPyhcIiArIElQVjZBRERSRVNTJCArIFwiKVxcXFxdP1wiLCBcImdcIilcbiAgICB9O1xufVxudmFyIFVSSV9QUk9UT0NPTCA9IGJ1aWxkRXhwcyhmYWxzZSk7XG5cbnZhciBJUklfUFJPVE9DT0wgPSBidWlsZEV4cHModHJ1ZSk7XG5cbnZhciB0b0NvbnN1bWFibGVBcnJheSA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnIpO1xuICB9XG59O1xuXG4vKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5cbnZhciBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cbi8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cbnZhciBiYXNlID0gMzY7XG52YXIgdE1pbiA9IDE7XG52YXIgdE1heCA9IDI2O1xudmFyIHNrZXcgPSAzODtcbnZhciBkYW1wID0gNzAwO1xudmFyIGluaXRpYWxCaWFzID0gNzI7XG52YXIgaW5pdGlhbE4gPSAxMjg7IC8vIDB4ODBcbnZhciBkZWxpbWl0ZXIgPSAnLSc7IC8vICdcXHgyRCdcblxuLyoqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgKi9cbnZhciByZWdleFB1bnljb2RlID0gL154bi0tLztcbnZhciByZWdleE5vbkFTQ0lJID0gL1teXFwwLVxceDdFXS87IC8vIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuLyoqIEVycm9yIG1lc3NhZ2VzICovXG52YXIgZXJyb3JzID0ge1xuXHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yJDEodHlwZSkge1xuXHR0aHJvdyBuZXcgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZV0pO1xufVxuXG4vKipcbiAqIEEgZ2VuZXJpYyBgQXJyYXkjbWFwYCB1dGlsaXR5IGZ1bmN0aW9uLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgYXJyYXlcbiAqIGl0ZW0uXG4gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcblx0dmFyIHJlc3VsdCA9IFtdO1xuXHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG4gKiBhZGRyZXNzZXMuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuICogY2hhcmFjdGVyLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHR2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0dmFyIHJlc3VsdCA9ICcnO1xuXHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHQvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuXHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdHN0cmluZyA9IHBhcnRzWzFdO1xuXHR9XG5cdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0dmFyIGxhYmVscyA9IHN0cmluZy5zcGxpdCgnLicpO1xuXHR2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZGVjb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICovXG5mdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHR2YXIgb3V0cHV0ID0gW107XG5cdHZhciBjb3VudGVyID0gMDtcblx0dmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG5cdHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0dmFyIHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHQvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuXHRcdFx0dmFyIGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkge1xuXHRcdFx0XHQvLyBMb3cgc3Vycm9nYXRlLlxuXHRcdFx0XHRvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSXQncyBhbiB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGVcblx0XHRcdFx0Ly8gbmV4dCBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIuXG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXRwdXQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZW5jb2RlXG4gKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuICovXG52YXIgdWNzMmVuY29kZSA9IGZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcblx0cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50LmFwcGx5KFN0cmluZywgdG9Db25zdW1hYmxlQXJyYXkoYXJyYXkpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xudmFyIGJhc2ljVG9EaWdpdCA9IGZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcblx0aWYgKGNvZGVQb2ludCAtIDB4MzAgPCAweDBBKSB7XG5cdFx0cmV0dXJuIGNvZGVQb2ludCAtIDB4MTY7XG5cdH1cblx0aWYgKGNvZGVQb2ludCAtIDB4NDEgPCAweDFBKSB7XG5cdFx0cmV0dXJuIGNvZGVQb2ludCAtIDB4NDE7XG5cdH1cblx0aWYgKGNvZGVQb2ludCAtIDB4NjEgPCAweDFBKSB7XG5cdFx0cmV0dXJuIGNvZGVQb2ludCAtIDB4NjE7XG5cdH1cblx0cmV0dXJuIGJhc2U7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpcyBgZGlnaXRgLCB3aGljaCBuZWVkcyB0byBiZSBpbiB0aGUgcmFuZ2VcbiAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcbiAqIGlmIGBmbGFnYCBpcyBub24temVybyBhbmQgYGRpZ2l0YCBoYXMgbm8gdXBwZXJjYXNlIGZvcm0uXG4gKi9cbnZhciBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcblx0Ly8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcblx0Ly8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG5cdHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG59O1xuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICogQHByaXZhdGVcbiAqL1xudmFyIGFkYXB0ID0gZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdHZhciBrID0gMDtcblx0ZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcblx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRmb3IgKDsgLyogbm8gaW5pdGlhbGl6YXRpb24gKi9kZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuXHRcdGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcblx0fVxuXHRyZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcbiAqIHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqL1xudmFyIGRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHQvLyBEb24ndCB1c2UgVUNTLTIuXG5cdHZhciBvdXRwdXQgPSBbXTtcblx0dmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXHR2YXIgaSA9IDA7XG5cdHZhciBuID0gaW5pdGlhbE47XG5cdHZhciBiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdHZhciBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdGlmIChiYXNpYyA8IDApIHtcblx0XHRiYXNpYyA9IDA7XG5cdH1cblxuXHRmb3IgKHZhciBqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRlcnJvciQxKCdub3QtYmFzaWMnKTtcblx0XHR9XG5cdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdH1cblxuXHQvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG5cdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0Zm9yICh2YXIgaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOykgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqL3tcblxuXHRcdC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cblx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0Ly8gd2hpY2ggZ2V0cyBhZGRlZCB0byBgaWAuIFRoZSBvdmVyZmxvdyBjaGVja2luZyBpcyBlYXNpZXJcblx0XHQvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuXHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0dmFyIG9sZGkgPSBpO1xuXHRcdGZvciAodmFyIHcgPSAxLCBrID0gYmFzZTs7IC8qIG5vIGNvbmRpdGlvbiAqL2sgKz0gYmFzZSkge1xuXG5cdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0ZXJyb3IkMSgnaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0aSArPSBkaWdpdCAqIHc7XG5cdFx0XHR2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiBrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzO1xuXG5cdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0aWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuXHRcdFx0XHRlcnJvciQxKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHR3ICo9IGJhc2VNaW51c1Q7XG5cdFx0fVxuXG5cdFx0dmFyIG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0Ly8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcblx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0fVxuXG5cdFx0biArPSBmbG9vcihpIC8gb3V0KTtcblx0XHRpICU9IG91dDtcblxuXHRcdC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXQuXG5cdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXHR9XG5cblx0cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50LmFwcGx5KFN0cmluZywgb3V0cHV0KTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xudmFyIGVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuXHR2YXIgb3V0cHV0ID0gW107XG5cblx0Ly8gQ29udmVydCB0aGUgaW5wdXQgaW4gVUNTLTIgdG8gYW4gYXJyYXkgb2YgVW5pY29kZSBjb2RlIHBvaW50cy5cblx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHQvLyBDYWNoZSB0aGUgbGVuZ3RoLlxuXHR2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cblx0Ly8gSW5pdGlhbGl6ZSB0aGUgc3RhdGUuXG5cdHZhciBuID0gaW5pdGlhbE47XG5cdHZhciBkZWx0YSA9IDA7XG5cdHZhciBiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50cy5cblx0dmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHR2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcblx0dmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXG5cdHRyeSB7XG5cdFx0Zm9yICh2YXIgX2l0ZXJhdG9yID0gaW5wdXRbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gKF9zdGVwID0gX2l0ZXJhdG9yLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlKSB7XG5cdFx0XHR2YXIgX2N1cnJlbnRWYWx1ZTIgPSBfc3RlcC52YWx1ZTtcblxuXHRcdFx0aWYgKF9jdXJyZW50VmFsdWUyIDwgMHg4MCkge1xuXHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoX2N1cnJlbnRWYWx1ZTIpKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcblx0XHRfaXRlcmF0b3JFcnJvciA9IGVycjtcblx0fSBmaW5hbGx5IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uICYmIF9pdGVyYXRvci5yZXR1cm4pIHtcblx0XHRcdFx0X2l0ZXJhdG9yLnJldHVybigpO1xuXHRcdFx0fVxuXHRcdH0gZmluYWxseSB7XG5cdFx0XHRpZiAoX2RpZEl0ZXJhdG9yRXJyb3IpIHtcblx0XHRcdFx0dGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dmFyIGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDtcblx0dmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7XG5cblx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuXHQvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyB3aXRoIGEgZGVsaW1pdGVyIHVubGVzcyBpdCdzIGVtcHR5LlxuXHRpZiAoYmFzaWNMZW5ndGgpIHtcblx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHR9XG5cblx0Ly8gTWFpbiBlbmNvZGluZyBsb29wOlxuXHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0Ly8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dFxuXHRcdC8vIGxhcmdlciBvbmU6XG5cdFx0dmFyIG0gPSBtYXhJbnQ7XG5cdFx0dmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0XHR2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7XG5cdFx0dmFyIF9pdGVyYXRvckVycm9yMiA9IHVuZGVmaW5lZDtcblxuXHRcdHRyeSB7XG5cdFx0XHRmb3IgKHZhciBfaXRlcmF0b3IyID0gaW5wdXRbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDI7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSAoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWUpIHtcblx0XHRcdFx0dmFyIGN1cnJlbnRWYWx1ZSA9IF9zdGVwMi52YWx1ZTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuXHRcdFx0XHRcdG0gPSBjdXJyZW50VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuXHRcdFx0Ly8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuXHRcdFx0X2l0ZXJhdG9yRXJyb3IyID0gZXJyO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7XG5cdFx0XHRcdFx0X2l0ZXJhdG9yMi5yZXR1cm4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKF9kaWRJdGVyYXRvckVycm9yMikge1xuXHRcdFx0XHRcdHRocm93IF9pdGVyYXRvckVycm9yMjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHZhciBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdGVycm9yJDEoJ292ZXJmbG93Jyk7XG5cdFx0fVxuXG5cdFx0ZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcblx0XHRuID0gbTtcblxuXHRcdHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdFx0dmFyIF9kaWRJdGVyYXRvckVycm9yMyA9IGZhbHNlO1xuXHRcdHZhciBfaXRlcmF0b3JFcnJvcjMgPSB1bmRlZmluZWQ7XG5cblx0XHR0cnkge1xuXHRcdFx0Zm9yICh2YXIgX2l0ZXJhdG9yMyA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAzOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gKF9zdGVwMyA9IF9pdGVyYXRvcjMubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlKSB7XG5cdFx0XHRcdHZhciBfY3VycmVudFZhbHVlID0gX3N0ZXAzLnZhbHVlO1xuXG5cdFx0XHRcdGlmIChfY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG5cdFx0XHRcdFx0ZXJyb3IkMSgnb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoX2N1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG5cdFx0XHRcdFx0dmFyIHEgPSBkZWx0YTtcblx0XHRcdFx0XHRmb3IgKHZhciBrID0gYmFzZTs7IC8qIG5vIGNvbmRpdGlvbiAqL2sgKz0gYmFzZSkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBxTWludXNUID0gcSAtIHQ7XG5cdFx0XHRcdFx0XHR2YXIgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKSk7XG5cdFx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcblx0XHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRcdGRlbHRhID0gMDtcblx0XHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRfZGlkSXRlcmF0b3JFcnJvcjMgPSB0cnVlO1xuXHRcdFx0X2l0ZXJhdG9yRXJyb3IzID0gZXJyO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zICYmIF9pdGVyYXRvcjMucmV0dXJuKSB7XG5cdFx0XHRcdFx0X2l0ZXJhdG9yMy5yZXR1cm4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKF9kaWRJdGVyYXRvckVycm9yMykge1xuXHRcdFx0XHRcdHRocm93IF9pdGVyYXRvckVycm9yMztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCsrZGVsdGE7XG5cdFx0KytuO1xuXHR9XG5cdHJldHVybiBvdXRwdXQuam9pbignJyk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3NcbiAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cbiAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuICogY29udmVydGVkIHRvIFVuaWNvZGUuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cbiAqIGNvbnZlcnQgdG8gVW5pY29kZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuICogc3RyaW5nLlxuICovXG52YXIgdG9Vbmljb2RlID0gZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZykgPyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpIDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG4gKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcbiAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuICogQVNDSUkuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG4gKiBVbmljb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3JcbiAqIGVtYWlsIGFkZHJlc3MuXG4gKi9cbnZhciB0b0FTQ0lJID0gZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpID8gJ3huLS0nICsgZW5jb2RlKHN0cmluZykgOiBzdHJpbmc7XG5cdH0pO1xufTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKiBEZWZpbmUgdGhlIHB1YmxpYyBBUEkgKi9cbnZhciBwdW55Y29kZSA9IHtcblx0LyoqXG4gICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IFB1bnljb2RlLmpzIHZlcnNpb24gbnVtYmVyLlxuICAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICAqIEB0eXBlIFN0cmluZ1xuICAqL1xuXHQndmVyc2lvbic6ICcyLjEuMCcsXG5cdC8qKlxuICAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG4gICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cbiAgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAgKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAgKiBAdHlwZSBPYmplY3RcbiAgKi9cblx0J3VjczInOiB7XG5cdFx0J2RlY29kZSc6IHVjczJkZWNvZGUsXG5cdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0fSxcblx0J2RlY29kZSc6IGRlY29kZSxcblx0J2VuY29kZSc6IGVuY29kZSxcblx0J3RvQVNDSUknOiB0b0FTQ0lJLFxuXHQndG9Vbmljb2RlJzogdG9Vbmljb2RlXG59O1xuXG4vKipcclxuICogVVJJLmpzXHJcbiAqXHJcbiAqIEBmaWxlb3ZlcnZpZXcgQW4gUkZDIDM5ODYgY29tcGxpYW50LCBzY2hlbWUgZXh0ZW5kYWJsZSBVUkkgcGFyc2luZy92YWxpZGF0aW5nL3Jlc29sdmluZyBsaWJyYXJ5IGZvciBKYXZhU2NyaXB0LlxyXG4gKiBAYXV0aG9yIDxhIGhyZWY9XCJtYWlsdG86Z2FyeS5jb3VydEBnbWFpbC5jb21cIj5HYXJ5IENvdXJ0PC9hPlxyXG4gKiBAc2VlIGh0dHA6Ly9naXRodWIuY29tL2dhcnljb3VydC91cmktanNcclxuICovXG4vKipcclxuICogQ29weXJpZ2h0IDIwMTEgR2FyeSBDb3VydC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICpcclxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlXHJcbiAqIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxyXG4gKlxyXG4gKiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZlxyXG4gKiAgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXHJcbiAqXHJcbiAqICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0XHJcbiAqICAgICAgIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzXHJcbiAqICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cclxuICpcclxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHQVJZIENPVVJUIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRFxyXG4gKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EXHJcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHQVJZIENPVVJUIE9SXHJcbiAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SXHJcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcclxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTlxyXG4gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXHJcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRlxyXG4gKiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cclxuICpcclxuICogVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGVcclxuICogYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWRcclxuICogb3IgaW1wbGllZCwgb2YgR2FyeSBDb3VydC5cclxuICovXG52YXIgU0NIRU1FUyA9IHt9O1xuZnVuY3Rpb24gcGN0RW5jQ2hhcihjaHIpIHtcbiAgICB2YXIgYyA9IGNoci5jaGFyQ29kZUF0KDApO1xuICAgIHZhciBlID0gdm9pZCAwO1xuICAgIGlmIChjIDwgMTYpIGUgPSBcIiUwXCIgKyBjLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO2Vsc2UgaWYgKGMgPCAxMjgpIGUgPSBcIiVcIiArIGMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7ZWxzZSBpZiAoYyA8IDIwNDgpIGUgPSBcIiVcIiArIChjID4+IDYgfCAxOTIpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpICsgXCIlXCIgKyAoYyAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtlbHNlIGUgPSBcIiVcIiArIChjID4+IDEyIHwgMjI0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgPj4gNiAmIDYzIHwgMTI4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSArIFwiJVwiICsgKGMgJiA2MyB8IDEyOCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiBwY3REZWNDaGFycyhzdHIpIHtcbiAgICB2YXIgbmV3U3RyID0gXCJcIjtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlsID0gc3RyLmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGlsKSB7XG4gICAgICAgIHZhciBjID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgMSwgMiksIDE2KTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPj0gMTk0ICYmIGMgPCAyMjQpIHtcbiAgICAgICAgICAgIGlmIChpbCAtIGkgPj0gNikge1xuICAgICAgICAgICAgICAgIHZhciBjMiA9IHBhcnNlSW50KHN0ci5zdWJzdHIoaSArIDQsIDIpLCAxNik7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiAzMSkgPDwgNiB8IGMyICYgNjMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkgKz0gNjtcbiAgICAgICAgfSBlbHNlIGlmIChjID49IDIyNCkge1xuICAgICAgICAgICAgaWYgKGlsIC0gaSA+PSA5KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jID0gcGFyc2VJbnQoc3RyLnN1YnN0cihpICsgNCwgMiksIDE2KTtcbiAgICAgICAgICAgICAgICB2YXIgYzMgPSBwYXJzZUludChzdHIuc3Vic3RyKGkgKyA3LCAyKSwgMTYpO1xuICAgICAgICAgICAgICAgIG5ld1N0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgMTUpIDw8IDEyIHwgKF9jICYgNjMpIDw8IDYgfCBjMyAmIDYzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3U3RyICs9IHN0ci5zdWJzdHIoaSwgOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdHIgKz0gc3RyLnN1YnN0cihpLCAzKTtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3U3RyO1xufVxuZnVuY3Rpb24gX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKSB7XG4gICAgZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZChzdHIpIHtcbiAgICAgICAgdmFyIGRlY1N0ciA9IHBjdERlY0NoYXJzKHN0cik7XG4gICAgICAgIHJldHVybiAhZGVjU3RyLm1hdGNoKHByb3RvY29sLlVOUkVTRVJWRUQpID8gc3RyIDogZGVjU3RyO1xuICAgIH1cbiAgICBpZiAoY29tcG9uZW50cy5zY2hlbWUpIGNvbXBvbmVudHMuc2NoZW1lID0gU3RyaW5nKGNvbXBvbmVudHMuc2NoZW1lKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UocHJvdG9jb2wuTk9UX1NDSEVNRSwgXCJcIik7XG4gICAgaWYgKGNvbXBvbmVudHMudXNlcmluZm8gIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy51c2VyaW5mbyA9IFN0cmluZyhjb21wb25lbnRzLnVzZXJpbmZvKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKHByb3RvY29sLk5PVF9VU0VSSU5GTywgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QgIT09IHVuZGVmaW5lZCkgY29tcG9uZW50cy5ob3N0ID0gU3RyaW5nKGNvbXBvbmVudHMuaG9zdCkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHByb3RvY29sLk5PVF9IT1NULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgaWYgKGNvbXBvbmVudHMucGF0aCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLnBhdGggPSBTdHJpbmcoY29tcG9uZW50cy5wYXRoKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCBkZWNvZGVVbnJlc2VydmVkKS5yZXBsYWNlKGNvbXBvbmVudHMuc2NoZW1lID8gcHJvdG9jb2wuTk9UX1BBVEggOiBwcm90b2NvbC5OT1RfUEFUSF9OT1NDSEVNRSwgcGN0RW5jQ2hhcikucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpO1xuICAgIGlmIChjb21wb25lbnRzLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIGNvbXBvbmVudHMucXVlcnkgPSBTdHJpbmcoY29tcG9uZW50cy5xdWVyeSkucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShwcm90b2NvbC5OT1RfUVVFUlksIHBjdEVuY0NoYXIpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKTtcbiAgICBpZiAoY29tcG9uZW50cy5mcmFnbWVudCAhPT0gdW5kZWZpbmVkKSBjb21wb25lbnRzLmZyYWdtZW50ID0gU3RyaW5nKGNvbXBvbmVudHMuZnJhZ21lbnQpLnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UocHJvdG9jb2wuTk9UX0ZSQUdNRU5ULCBwY3RFbmNDaGFyKS5yZXBsYWNlKHByb3RvY29sLlBDVF9FTkNPREVELCB0b1VwcGVyQ2FzZSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbnZhciBVUklfUEFSU0UgPSAvXig/OihbXjpcXC8/I10rKTopPyg/OlxcL1xcLygoPzooW15cXC8/I0BdKilAKT8oXFxbW1xcZEEtRjouXStcXF18W15cXC8/IzpdKikoPzpcXDooXFxkKikpPykpPyhbXj8jXSopKD86XFw/KFteI10qKSk/KD86IygoPzoufFxcbnxcXHIpKikpPy9pO1xudmFyIE5PX01BVENIX0lTX1VOREVGSU5FRCA9IFwiXCIubWF0Y2goLygpezB9LylbMV0gPT09IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIHBhcnNlKHVyaVN0cmluZykge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgIHZhciBjb21wb25lbnRzID0ge307XG4gICAgdmFyIHByb3RvY29sID0gb3B0aW9ucy5pcmkgIT09IGZhbHNlID8gSVJJX1BST1RPQ09MIDogVVJJX1BST1RPQ09MO1xuICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSA9PT0gXCJzdWZmaXhcIikgdXJpU3RyaW5nID0gKG9wdGlvbnMuc2NoZW1lID8gb3B0aW9ucy5zY2hlbWUgKyBcIjpcIiA6IFwiXCIpICsgXCIvL1wiICsgdXJpU3RyaW5nO1xuICAgIHZhciBtYXRjaGVzID0gdXJpU3RyaW5nLm1hdGNoKFVSSV9QQVJTRSk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgaWYgKE5PX01BVENIX0lTX1VOREVGSU5FRCkge1xuICAgICAgICAgICAgLy9zdG9yZSBlYWNoIGNvbXBvbmVudFxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBtYXRjaGVzWzFdO1xuICAgICAgICAgICAgY29tcG9uZW50cy51c2VyaW5mbyA9IG1hdGNoZXNbM107XG4gICAgICAgICAgICBjb21wb25lbnRzLmhvc3QgPSBtYXRjaGVzWzRdO1xuICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gcGFyc2VJbnQobWF0Y2hlc1s1XSwgMTApO1xuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gbWF0Y2hlc1s2XSB8fCBcIlwiO1xuICAgICAgICAgICAgY29tcG9uZW50cy5xdWVyeSA9IG1hdGNoZXNbN107XG4gICAgICAgICAgICBjb21wb25lbnRzLmZyYWdtZW50ID0gbWF0Y2hlc1s4XTtcbiAgICAgICAgICAgIC8vZml4IHBvcnQgbnVtYmVyXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29tcG9uZW50cy5wb3J0KSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucG9ydCA9IG1hdGNoZXNbNV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL3N0b3JlIGVhY2ggY29tcG9uZW50XG4gICAgICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IG1hdGNoZXNbMV0gfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29tcG9uZW50cy51c2VyaW5mbyA9IHVyaVN0cmluZy5pbmRleE9mKFwiQFwiKSAhPT0gLTEgPyBtYXRjaGVzWzNdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gdXJpU3RyaW5nLmluZGV4T2YoXCIvL1wiKSAhPT0gLTEgPyBtYXRjaGVzWzRdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gcGFyc2VJbnQobWF0Y2hlc1s1XSwgMTApO1xuICAgICAgICAgICAgY29tcG9uZW50cy5wYXRoID0gbWF0Y2hlc1s2XSB8fCBcIlwiO1xuICAgICAgICAgICAgY29tcG9uZW50cy5xdWVyeSA9IHVyaVN0cmluZy5pbmRleE9mKFwiP1wiKSAhPT0gLTEgPyBtYXRjaGVzWzddIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mcmFnbWVudCA9IHVyaVN0cmluZy5pbmRleE9mKFwiI1wiKSAhPT0gLTEgPyBtYXRjaGVzWzhdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy9maXggcG9ydCBudW1iZXJcbiAgICAgICAgICAgIGlmIChpc05hTihjb21wb25lbnRzLnBvcnQpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gdXJpU3RyaW5nLm1hdGNoKC9cXC9cXC8oPzoufFxcbikqXFw6KD86XFwvfFxcP3xcXCN8JCkvKSA/IG1hdGNoZXNbNF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9zdHJpcCBicmFja2V0cyBmcm9tIElQdjYgaG9zdHNcbiAgICAgICAgaWYgKGNvbXBvbmVudHMuaG9zdCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gY29tcG9uZW50cy5ob3N0LnJlcGxhY2UocHJvdG9jb2wuSVBWNkFERFJFU1MsIFwiJDFcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy9kZXRlcm1pbmUgcmVmZXJlbmNlIHR5cGVcbiAgICAgICAgaWYgKGNvbXBvbmVudHMuc2NoZW1lID09PSB1bmRlZmluZWQgJiYgY29tcG9uZW50cy51c2VyaW5mbyA9PT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudHMuaG9zdCA9PT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudHMucG9ydCA9PT0gdW5kZWZpbmVkICYmICFjb21wb25lbnRzLnBhdGggJiYgY29tcG9uZW50cy5xdWVyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwic2FtZS1kb2N1bWVudFwiO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHMuc2NoZW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucmVmZXJlbmNlID0gXCJyZWxhdGl2ZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHMuZnJhZ21lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5yZWZlcmVuY2UgPSBcImFic29sdXRlXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnJlZmVyZW5jZSA9IFwidXJpXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9jaGVjayBmb3IgcmVmZXJlbmNlIGVycm9yc1xuICAgICAgICBpZiAob3B0aW9ucy5yZWZlcmVuY2UgJiYgb3B0aW9ucy5yZWZlcmVuY2UgIT09IFwic3VmZml4XCIgJiYgb3B0aW9ucy5yZWZlcmVuY2UgIT09IGNvbXBvbmVudHMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVSSSBpcyBub3QgYSBcIiArIG9wdGlvbnMucmVmZXJlbmNlICsgXCIgcmVmZXJlbmNlLlwiO1xuICAgICAgICB9XG4gICAgICAgIC8vZmluZCBzY2hlbWUgaGFuZGxlclxuICAgICAgICB2YXIgc2NoZW1lSGFuZGxlciA9IFNDSEVNRVNbKG9wdGlvbnMuc2NoZW1lIHx8IGNvbXBvbmVudHMuc2NoZW1lIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCldO1xuICAgICAgICAvL2NoZWNrIGlmIHNjaGVtZSBjYW4ndCBoYW5kbGUgSVJJc1xuICAgICAgICBpZiAoIW9wdGlvbnMudW5pY29kZVN1cHBvcnQgJiYgKCFzY2hlbWVIYW5kbGVyIHx8ICFzY2hlbWVIYW5kbGVyLnVuaWNvZGVTdXBwb3J0KSkge1xuICAgICAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhIGRvbWFpbiBuYW1lXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50cy5ob3N0ICYmIChvcHRpb25zLmRvbWFpbkhvc3QgfHwgc2NoZW1lSGFuZGxlciAmJiBzY2hlbWVIYW5kbGVyLmRvbWFpbkhvc3QpKSB7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0IFVuaWNvZGUgSUROIC0+IEFTQ0lJIElETlxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuaG9zdCA9IHB1bnljb2RlLnRvQVNDSUkoY29tcG9uZW50cy5ob3N0LnJlcGxhY2UocHJvdG9jb2wuUENUX0VOQ09ERUQsIHBjdERlY0NoYXJzKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiSG9zdCdzIGRvbWFpbiBuYW1lIGNhbiBub3QgYmUgY29udmVydGVkIHRvIEFTQ0lJIHZpYSBwdW55Y29kZTogXCIgKyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY29udmVydCBJUkkgLT4gVVJJXG4gICAgICAgICAgICBfbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcoY29tcG9uZW50cywgVVJJX1BST1RPQ09MKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vbm9ybWFsaXplIGVuY29kaW5nc1xuICAgICAgICAgICAgX25vcm1hbGl6ZUNvbXBvbmVudEVuY29kaW5nKGNvbXBvbmVudHMsIHByb3RvY29sKTtcbiAgICAgICAgfVxuICAgICAgICAvL3BlcmZvcm0gc2NoZW1lIHNwZWNpZmljIHBhcnNpbmdcbiAgICAgICAgaWYgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5wYXJzZSkge1xuICAgICAgICAgICAgc2NoZW1lSGFuZGxlci5wYXJzZShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiVVJJIGNhbiBub3QgYmUgcGFyc2VkLlwiO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gX3JlY29tcG9zZUF1dGhvcml0eShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgdmFyIHByb3RvY29sID0gb3B0aW9ucy5pcmkgIT09IGZhbHNlID8gSVJJX1BST1RPQ09MIDogVVJJX1BST1RPQ09MO1xuICAgIHZhciB1cmlUb2tlbnMgPSBbXTtcbiAgICBpZiAoY29tcG9uZW50cy51c2VyaW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMudXNlcmluZm8pO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIkBcIik7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLmhvc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvL2Vuc3VyZSBJUHY2IGFkZHJlc3NlcyBhcmUgYnJhY2tldGVkXG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFN0cmluZyhjb21wb25lbnRzLmhvc3QpLnJlcGxhY2UocHJvdG9jb2wuSVBWNkFERFJFU1MsIFwiWyQxXVwiKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29tcG9uZW50cy5wb3J0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiOlwiKTtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50cy5wb3J0LnRvU3RyaW5nKDEwKSk7XG4gICAgfVxuICAgIHJldHVybiB1cmlUb2tlbnMubGVuZ3RoID8gdXJpVG9rZW5zLmpvaW4oXCJcIikgOiB1bmRlZmluZWQ7XG59XG5cbnZhciBSRFMxID0gL15cXC5cXC4/XFwvLztcbnZhciBSRFMyID0gL15cXC9cXC4oXFwvfCQpLztcbnZhciBSRFMzID0gL15cXC9cXC5cXC4oXFwvfCQpLztcbnZhciBSRFM1ID0gL15cXC8/KD86LnxcXG4pKj8oPz1cXC98JCkvO1xuZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoaW5wdXQpIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgd2hpbGUgKGlucHV0Lmxlbmd0aCkge1xuICAgICAgICBpZiAoaW5wdXQubWF0Y2goUkRTMSkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShSRFMxLCBcIlwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMyKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzIsIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5tYXRjaChSRFMzKSkge1xuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFJEUzMsIFwiL1wiKTtcbiAgICAgICAgICAgIG91dHB1dC5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gXCIuXCIgfHwgaW5wdXQgPT09IFwiLi5cIikge1xuICAgICAgICAgICAgaW5wdXQgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGltID0gaW5wdXQubWF0Y2goUkRTNSk7XG4gICAgICAgICAgICBpZiAoaW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgcyA9IGltWzBdO1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2Uocy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGRvdCBzZWdtZW50IGNvbmRpdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgdmFyIHByb3RvY29sID0gb3B0aW9ucy5pcmkgPyBJUklfUFJPVE9DT0wgOiBVUklfUFJPVE9DT0w7XG4gICAgdmFyIHVyaVRva2VucyA9IFtdO1xuICAgIC8vZmluZCBzY2hlbWUgaGFuZGxlclxuICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1sob3B0aW9ucy5zY2hlbWUgfHwgY29tcG9uZW50cy5zY2hlbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKV07XG4gICAgLy9wZXJmb3JtIHNjaGVtZSBzcGVjaWZpYyBzZXJpYWxpemF0aW9uXG4gICAgaWYgKHNjaGVtZUhhbmRsZXIgJiYgc2NoZW1lSGFuZGxlci5zZXJpYWxpemUpIHNjaGVtZUhhbmRsZXIuc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIGlmIChjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgLy9pZiBob3N0IGNvbXBvbmVudCBpcyBhbiBJUHY2IGFkZHJlc3NcbiAgICAgICAgaWYgKHByb3RvY29sLklQVjZBRERSRVNTLnRlc3QoY29tcG9uZW50cy5ob3N0KSkge1xuICAgICAgICAgICAgLy9UT0RPOiBub3JtYWxpemUgSVB2NiBhZGRyZXNzIGFzIHBlciBSRkMgNTk1MlxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZG9tYWluSG9zdCB8fCBzY2hlbWVIYW5kbGVyICYmIHNjaGVtZUhhbmRsZXIuZG9tYWluSG9zdCkge1xuICAgICAgICAgICAgLy9jb252ZXJ0IElETiB2aWEgcHVueWNvZGVcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5ob3N0ID0gIW9wdGlvbnMuaXJpID8gcHVueWNvZGUudG9BU0NJSShjb21wb25lbnRzLmhvc3QucmVwbGFjZShwcm90b2NvbC5QQ1RfRU5DT0RFRCwgcGN0RGVjQ2hhcnMpLnRvTG93ZXJDYXNlKCkpIDogcHVueWNvZGUudG9Vbmljb2RlKGNvbXBvbmVudHMuaG9zdCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJIb3N0J3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9ub3JtYWxpemUgZW5jb2RpbmdcbiAgICBfbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcoY29tcG9uZW50cywgcHJvdG9jb2wpO1xuICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAhPT0gXCJzdWZmaXhcIiAmJiBjb21wb25lbnRzLnNjaGVtZSkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLnNjaGVtZSk7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKFwiOlwiKTtcbiAgICB9XG4gICAgdmFyIGF1dGhvcml0eSA9IF9yZWNvbXBvc2VBdXRob3JpdHkoY29tcG9uZW50cywgb3B0aW9ucyk7XG4gICAgaWYgKGF1dGhvcml0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChvcHRpb25zLnJlZmVyZW5jZSAhPT0gXCJzdWZmaXhcIikge1xuICAgICAgICAgICAgdXJpVG9rZW5zLnB1c2goXCIvL1wiKTtcbiAgICAgICAgfVxuICAgICAgICB1cmlUb2tlbnMucHVzaChhdXRob3JpdHkpO1xuICAgICAgICBpZiAoY29tcG9uZW50cy5wYXRoICYmIGNvbXBvbmVudHMucGF0aC5jaGFyQXQoMCkgIT09IFwiL1wiKSB7XG4gICAgICAgICAgICB1cmlUb2tlbnMucHVzaChcIi9cIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMucGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBzID0gY29tcG9uZW50cy5wYXRoO1xuICAgICAgICBpZiAoIW9wdGlvbnMuYWJzb2x1dGVQYXRoICYmICghc2NoZW1lSGFuZGxlciB8fCAhc2NoZW1lSGFuZGxlci5hYnNvbHV0ZVBhdGgpKSB7XG4gICAgICAgICAgICBzID0gcmVtb3ZlRG90U2VnbWVudHMocyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1dGhvcml0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzID0gcy5yZXBsYWNlKC9eXFwvXFwvLywgXCIvJTJGXCIpOyAvL2Rvbid0IGFsbG93IHRoZSBwYXRoIHRvIHN0YXJ0IHdpdGggXCIvL1wiXG4gICAgICAgIH1cbiAgICAgICAgdXJpVG9rZW5zLnB1c2gocyk7XG4gICAgfVxuICAgIGlmIChjb21wb25lbnRzLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXJpVG9rZW5zLnB1c2goXCI/XCIpO1xuICAgICAgICB1cmlUb2tlbnMucHVzaChjb21wb25lbnRzLnF1ZXJ5KTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudHMuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cmlUb2tlbnMucHVzaChcIiNcIik7XG4gICAgICAgIHVyaVRva2Vucy5wdXNoKGNvbXBvbmVudHMuZnJhZ21lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdXJpVG9rZW5zLmpvaW4oXCJcIik7IC8vbWVyZ2UgdG9rZW5zIGludG8gYSBzdHJpbmdcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudHMoYmFzZSwgcmVsYXRpdmUpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgdmFyIHNraXBOb3JtYWxpemF0aW9uID0gYXJndW1lbnRzWzNdO1xuXG4gICAgdmFyIHRhcmdldCA9IHt9O1xuICAgIGlmICghc2tpcE5vcm1hbGl6YXRpb24pIHtcbiAgICAgICAgYmFzZSA9IHBhcnNlKHNlcmlhbGl6ZShiYXNlLCBvcHRpb25zKSwgb3B0aW9ucyk7IC8vbm9ybWFsaXplIGJhc2UgY29tcG9uZW50c1xuICAgICAgICByZWxhdGl2ZSA9IHBhcnNlKHNlcmlhbGl6ZShyZWxhdGl2ZSwgb3B0aW9ucyksIG9wdGlvbnMpOyAvL25vcm1hbGl6ZSByZWxhdGl2ZSBjb21wb25lbnRzXG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiByZWxhdGl2ZS5zY2hlbWUpIHtcbiAgICAgICAgdGFyZ2V0LnNjaGVtZSA9IHJlbGF0aXZlLnNjaGVtZTtcbiAgICAgICAgLy90YXJnZXQuYXV0aG9yaXR5ID0gcmVsYXRpdmUuYXV0aG9yaXR5O1xuICAgICAgICB0YXJnZXQudXNlcmluZm8gPSByZWxhdGl2ZS51c2VyaW5mbztcbiAgICAgICAgdGFyZ2V0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0O1xuICAgICAgICB0YXJnZXQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCB8fCBcIlwiKTtcbiAgICAgICAgdGFyZ2V0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlbGF0aXZlLnVzZXJpbmZvICE9PSB1bmRlZmluZWQgfHwgcmVsYXRpdmUuaG9zdCAhPT0gdW5kZWZpbmVkIHx8IHJlbGF0aXZlLnBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy90YXJnZXQuYXV0aG9yaXR5ID0gcmVsYXRpdmUuYXV0aG9yaXR5O1xuICAgICAgICAgICAgdGFyZ2V0LnVzZXJpbmZvID0gcmVsYXRpdmUudXNlcmluZm87XG4gICAgICAgICAgICB0YXJnZXQuaG9zdCA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgICAgICB0YXJnZXQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgICAgICAgICB0YXJnZXQucGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJlbGF0aXZlLnBhdGggfHwgXCJcIik7XG4gICAgICAgICAgICB0YXJnZXQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghcmVsYXRpdmUucGF0aCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gYmFzZS5wYXRoO1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZS5xdWVyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUucGF0aC5jaGFyQXQoMCkgPT09IFwiL1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVtb3ZlRG90U2VnbWVudHMocmVsYXRpdmUucGF0aCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChiYXNlLnVzZXJpbmZvICE9PSB1bmRlZmluZWQgfHwgYmFzZS5ob3N0ICE9PSB1bmRlZmluZWQgfHwgYmFzZS5wb3J0ICE9PSB1bmRlZmluZWQpICYmICFiYXNlLnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gXCIvXCIgKyByZWxhdGl2ZS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYXNlLnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gcmVsYXRpdmUucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKDAsIGJhc2UucGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKSArIHJlbGF0aXZlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBhdGggPSByZW1vdmVEb3RTZWdtZW50cyh0YXJnZXQucGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRhcmdldC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy90YXJnZXQuYXV0aG9yaXR5ID0gYmFzZS5hdXRob3JpdHk7XG4gICAgICAgICAgICB0YXJnZXQudXNlcmluZm8gPSBiYXNlLnVzZXJpbmZvO1xuICAgICAgICAgICAgdGFyZ2V0Lmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB0YXJnZXQucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuc2NoZW1lID0gYmFzZS5zY2hlbWU7XG4gICAgfVxuICAgIHRhcmdldC5mcmFnbWVudCA9IHJlbGF0aXZlLmZyYWdtZW50O1xuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmUoYmFzZVVSSSwgcmVsYXRpdmVVUkksIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplKHJlc29sdmVDb21wb25lbnRzKHBhcnNlKGJhc2VVUkksIG9wdGlvbnMpLCBwYXJzZShyZWxhdGl2ZVVSSSwgb3B0aW9ucyksIG9wdGlvbnMsIHRydWUpLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHVyaSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHVyaSA9IHNlcmlhbGl6ZShwYXJzZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmkpID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHVyaSA9IHBhcnNlKHNlcmlhbGl6ZSh1cmksIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaTtcbn1cblxuZnVuY3Rpb24gZXF1YWwodXJpQSwgdXJpQiwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgdXJpQSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHBhcnNlKHVyaUEsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPZih1cmlBKSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB1cmlBID0gc2VyaWFsaXplKHVyaUEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHVyaUIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZShwYXJzZSh1cmlCLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh0eXBlT2YodXJpQikgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdXJpQiA9IHNlcmlhbGl6ZSh1cmlCLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaUEgPT09IHVyaUI7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLkVTQ0FQRSA6IElSSV9QUk9UT0NPTC5FU0NBUEUsIHBjdEVuY0NoYXIpO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZUNvbXBvbmVudChzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RyICYmIHN0ci50b1N0cmluZygpLnJlcGxhY2UoIW9wdGlvbnMgfHwgIW9wdGlvbnMuaXJpID8gVVJJX1BST1RPQ09MLlBDVF9FTkNPREVEIDogSVJJX1BST1RPQ09MLlBDVF9FTkNPREVELCBwY3REZWNDaGFycyk7XG59XG5cbnZhciBodHRwID0ge1xuICAgIHNjaGVtZTogXCJodHRwXCIsXG4gICAgZG9tYWluSG9zdDogdHJ1ZSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAvL3JlcG9ydCBtaXNzaW5nIGhvc3RcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmhvc3QpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBkZWZhdWx0IHBvcnRcbiAgICAgICAgaWYgKGNvbXBvbmVudHMucG9ydCA9PT0gKFN0cmluZyhjb21wb25lbnRzLnNjaGVtZSkudG9Mb3dlckNhc2UoKSAhPT0gXCJodHRwc1wiID8gODAgOiA0NDMpIHx8IGNvbXBvbmVudHMucG9ydCA9PT0gXCJcIikge1xuICAgICAgICAgICAgY29tcG9uZW50cy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vbm9ybWFsaXplIHRoZSBlbXB0eSBwYXRoXG4gICAgICAgIGlmICghY29tcG9uZW50cy5wYXRoKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBcIi9cIjtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFdlIGRvIG5vdCBwYXJzZSBxdWVyeSBzdHJpbmdzIGZvciBIVFRQIFVSSXNcbiAgICAgICAgLy9hcyBXV1cgRm9ybSBVcmwgRW5jb2RlZCBxdWVyeSBzdHJpbmdzIGFyZSBwYXJ0IG9mIHRoZSBIVE1MNCsgc3BlYyxcbiAgICAgICAgLy9hbmQgbm90IHRoZSBIVFRQIHNwZWMuXG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBodHRwcyA9IHtcbiAgICBzY2hlbWU6IFwiaHR0cHNcIixcbiAgICBkb21haW5Ib3N0OiBodHRwLmRvbWFpbkhvc3QsXG4gICAgcGFyc2U6IGh0dHAucGFyc2UsXG4gICAgc2VyaWFsaXplOiBodHRwLnNlcmlhbGl6ZVxufTtcblxudmFyIE8gPSB7fTtcbnZhciBpc0lSSSA9IHRydWU7XG4vL1JGQyAzOTg2XG52YXIgVU5SRVNFUlZFRCQkID0gXCJbQS1aYS16MC05XFxcXC1cXFxcLlxcXFxfXFxcXH5cIiArIChpc0lSSSA/IFwiXFxcXHhBMC1cXFxcdTIwMERcXFxcdTIwMTAtXFxcXHUyMDI5XFxcXHUyMDJGLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkVGXCIgOiBcIlwiKSArIFwiXVwiO1xudmFyIEhFWERJRyQkID0gXCJbMC05QS1GYS1mXVwiOyAvL2Nhc2UtaW5zZW5zaXRpdmVcbnZhciBQQ1RfRU5DT0RFRCQgPSBzdWJleHAoc3ViZXhwKFwiJVtFRmVmXVwiICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIlWzg5QS1GYS1mXVwiICsgSEVYRElHJCQgKyBcIiVcIiArIEhFWERJRyQkICsgSEVYRElHJCQpICsgXCJ8XCIgKyBzdWJleHAoXCIlXCIgKyBIRVhESUckJCArIEhFWERJRyQkKSk7IC8vZXhwYW5kZWRcbi8vUkZDIDUzMjIsIGV4Y2VwdCB0aGVzZSBzeW1ib2xzIGFzIHBlciBSRkMgNjA2ODogQCA6IC8gPyAjIFsgXSAmIDsgPVxuLy9jb25zdCBBVEVYVCQkID0gXCJbQS1aYS16MC05XFxcXCFcXFxcI1xcXFwkXFxcXCVcXFxcJlxcXFwnXFxcXCpcXFxcK1xcXFwtXFxcXC9cXFxcPVxcXFw/XFxcXF5cXFxcX1xcXFxgXFxcXHtcXFxcfFxcXFx9XFxcXH5dXCI7XG4vL2NvbnN0IFdTUCQkID0gXCJbXFxcXHgyMFxcXFx4MDldXCI7XG4vL2NvbnN0IE9CU19RVEVYVCQkID0gXCJbXFxcXHgwMS1cXFxceDA4XFxcXHgwQlxcXFx4MENcXFxceDBFLVxcXFx4MUZcXFxceDdGXVwiOyAgLy8oJWQxLTggLyAlZDExLTEyIC8gJWQxNC0zMSAvICVkMTI3KVxuLy9jb25zdCBRVEVYVCQkID0gbWVyZ2UoXCJbXFxcXHgyMVxcXFx4MjMtXFxcXHg1QlxcXFx4NUQtXFxcXHg3RV1cIiwgT0JTX1FURVhUJCQpOyAgLy8lZDMzIC8gJWQzNS05MSAvICVkOTMtMTI2IC8gb2JzLXF0ZXh0XG4vL2NvbnN0IFZDSEFSJCQgPSBcIltcXFxceDIxLVxcXFx4N0VdXCI7XG4vL2NvbnN0IFdTUCQkID0gXCJbXFxcXHgyMFxcXFx4MDldXCI7XG4vL2NvbnN0IE9CU19RUCQgPSBzdWJleHAoXCJcXFxcXFxcXFwiICsgbWVyZ2UoXCJbXFxcXHgwMFxcXFx4MERcXFxceDBBXVwiLCBPQlNfUVRFWFQkJCkpOyAgLy8lZDAgLyBDUiAvIExGIC8gb2JzLXF0ZXh0XG4vL2NvbnN0IEZXUyQgPSBzdWJleHAoc3ViZXhwKFdTUCQkICsgXCIqXCIgKyBcIlxcXFx4MERcXFxceDBBXCIpICsgXCI/XCIgKyBXU1AkJCArIFwiK1wiKTtcbi8vY29uc3QgUVVPVEVEX1BBSVIkID0gc3ViZXhwKHN1YmV4cChcIlxcXFxcXFxcXCIgKyBzdWJleHAoVkNIQVIkJCArIFwifFwiICsgV1NQJCQpKSArIFwifFwiICsgT0JTX1FQJCk7XG4vL2NvbnN0IFFVT1RFRF9TVFJJTkckID0gc3ViZXhwKCdcXFxcXCInICsgc3ViZXhwKEZXUyQgKyBcIj9cIiArIFFDT05URU5UJCkgKyBcIipcIiArIEZXUyQgKyBcIj9cIiArICdcXFxcXCInKTtcbnZhciBBVEVYVCQkID0gXCJbQS1aYS16MC05XFxcXCFcXFxcJFxcXFwlXFxcXCdcXFxcKlxcXFwrXFxcXC1cXFxcXlxcXFxfXFxcXGBcXFxce1xcXFx8XFxcXH1cXFxcfl1cIjtcbnZhciBRVEVYVCQkID0gXCJbXFxcXCFcXFxcJFxcXFwlXFxcXCdcXFxcKFxcXFwpXFxcXCpcXFxcK1xcXFwsXFxcXC1cXFxcLjAtOVxcXFw8XFxcXD5BLVpcXFxceDVFLVxcXFx4N0VdXCI7XG52YXIgVkNIQVIkJCA9IG1lcmdlKFFURVhUJCQsIFwiW1xcXFxcXFwiXFxcXFxcXFxdXCIpO1xudmFyIFNPTUVfREVMSU1TJCQgPSBcIltcXFxcIVxcXFwkXFxcXCdcXFxcKFxcXFwpXFxcXCpcXFxcK1xcXFwsXFxcXDtcXFxcOlxcXFxAXVwiO1xudmFyIFVOUkVTRVJWRUQgPSBuZXcgUmVnRXhwKFVOUkVTRVJWRUQkJCwgXCJnXCIpO1xudmFyIFBDVF9FTkNPREVEID0gbmV3IFJlZ0V4cChQQ1RfRU5DT0RFRCQsIFwiZ1wiKTtcbnZhciBOT1RfTE9DQUxfUEFSVCA9IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgQVRFWFQkJCwgXCJbXFxcXC5dXCIsICdbXFxcXFwiXScsIFZDSEFSJCQpLCBcImdcIik7XG52YXIgTk9UX0hGTkFNRSA9IG5ldyBSZWdFeHAobWVyZ2UoXCJbXl1cIiwgVU5SRVNFUlZFRCQkLCBTT01FX0RFTElNUyQkKSwgXCJnXCIpO1xudmFyIE5PVF9IRlZBTFVFID0gTk9UX0hGTkFNRTtcbmZ1bmN0aW9uIGRlY29kZVVucmVzZXJ2ZWQoc3RyKSB7XG4gICAgdmFyIGRlY1N0ciA9IHBjdERlY0NoYXJzKHN0cik7XG4gICAgcmV0dXJuICFkZWNTdHIubWF0Y2goVU5SRVNFUlZFRCkgPyBzdHIgOiBkZWNTdHI7XG59XG52YXIgbWFpbHRvID0ge1xuICAgIHNjaGVtZTogXCJtYWlsdG9cIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgdG8gPSBjb21wb25lbnRzLnRvID0gY29tcG9uZW50cy5wYXRoID8gY29tcG9uZW50cy5wYXRoLnNwbGl0KFwiLFwiKSA6IFtdO1xuICAgICAgICBjb21wb25lbnRzLnBhdGggPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChjb21wb25lbnRzLnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YXIgdW5rbm93bkhlYWRlcnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBoZWFkZXJzID0ge307XG4gICAgICAgICAgICB2YXIgaGZpZWxkcyA9IGNvbXBvbmVudHMucXVlcnkuc3BsaXQoXCImXCIpO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gaGZpZWxkcy5sZW5ndGg7IHggPCB4bDsgKyt4KSB7XG4gICAgICAgICAgICAgICAgdmFyIGhmaWVsZCA9IGhmaWVsZHNbeF0uc3BsaXQoXCI9XCIpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaGZpZWxkWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0b1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvQWRkcnMgPSBoZmllbGRbMV0uc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3ggPSAwLCBfeGwgPSB0b0FkZHJzLmxlbmd0aDsgX3ggPCBfeGw7ICsrX3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by5wdXNoKHRvQWRkcnNbX3hdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3ViamVjdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5zdWJqZWN0ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYm9keVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5ib2R5ID0gdW5lc2NhcGVDb21wb25lbnQoaGZpZWxkWzFdLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93bkhlYWRlcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1t1bmVzY2FwZUNvbXBvbmVudChoZmllbGRbMF0sIG9wdGlvbnMpXSA9IHVuZXNjYXBlQ29tcG9uZW50KGhmaWVsZFsxXSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5rbm93bkhlYWRlcnMpIGNvbXBvbmVudHMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50cy5xdWVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yICh2YXIgX3gyID0gMCwgX3hsMiA9IHRvLmxlbmd0aDsgX3gyIDwgX3hsMjsgKytfeDIpIHtcbiAgICAgICAgICAgIHZhciBhZGRyID0gdG9bX3gyXS5zcGxpdChcIkBcIik7XG4gICAgICAgICAgICBhZGRyWzBdID0gdW5lc2NhcGVDb21wb25lbnQoYWRkclswXSk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMudW5pY29kZVN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgVW5pY29kZSBJRE4gLT4gQVNDSUkgSUROXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkclsxXSA9IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoYWRkclsxXSwgb3B0aW9ucykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIkVtYWlsIGFkZHJlc3MncyBkb21haW4gbmFtZSBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBBU0NJSSB2aWEgcHVueWNvZGU6IFwiICsgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZHJbMV0gPSB1bmVzY2FwZUNvbXBvbmVudChhZGRyWzFdLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9bX3gyXSA9IGFkZHIuam9pbihcIkBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uIHNlcmlhbGl6ZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0byA9IHRvQXJyYXkoY29tcG9uZW50cy50byk7XG4gICAgICAgIGlmICh0bykge1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHhsID0gdG8ubGVuZ3RoOyB4IDwgeGw7ICsreCkge1xuICAgICAgICAgICAgICAgIHZhciB0b0FkZHIgPSBTdHJpbmcodG9beF0pO1xuICAgICAgICAgICAgICAgIHZhciBhdElkeCA9IHRvQWRkci5sYXN0SW5kZXhPZihcIkBcIik7XG4gICAgICAgICAgICAgICAgdmFyIGxvY2FsUGFydCA9IHRvQWRkci5zbGljZSgwLCBhdElkeCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgZGVjb2RlVW5yZXNlcnZlZCkucmVwbGFjZShQQ1RfRU5DT0RFRCwgdG9VcHBlckNhc2UpLnJlcGxhY2UoTk9UX0xPQ0FMX1BBUlQsIHBjdEVuY0NoYXIpO1xuICAgICAgICAgICAgICAgIHZhciBkb21haW4gPSB0b0FkZHIuc2xpY2UoYXRJZHggKyAxKTtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnQgSUROIHZpYSBwdW55Y29kZVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbiA9ICFvcHRpb25zLmlyaSA/IHB1bnljb2RlLnRvQVNDSUkodW5lc2NhcGVDb21wb25lbnQoZG9tYWluLCBvcHRpb25zKS50b0xvd2VyQ2FzZSgpKSA6IHB1bnljb2RlLnRvVW5pY29kZShkb21haW4pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5lcnJvciA9IGNvbXBvbmVudHMuZXJyb3IgfHwgXCJFbWFpbCBhZGRyZXNzJ3MgZG9tYWluIG5hbWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQgdG8gXCIgKyAoIW9wdGlvbnMuaXJpID8gXCJBU0NJSVwiIDogXCJVbmljb2RlXCIpICsgXCIgdmlhIHB1bnljb2RlOiBcIiArIGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvW3hdID0gbG9jYWxQYXJ0ICsgXCJAXCIgKyBkb21haW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSB0by5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGVhZGVycyA9IGNvbXBvbmVudHMuaGVhZGVycyA9IGNvbXBvbmVudHMuaGVhZGVycyB8fCB7fTtcbiAgICAgICAgaWYgKGNvbXBvbmVudHMuc3ViamVjdCkgaGVhZGVyc1tcInN1YmplY3RcIl0gPSBjb21wb25lbnRzLnN1YmplY3Q7XG4gICAgICAgIGlmIChjb21wb25lbnRzLmJvZHkpIGhlYWRlcnNbXCJib2R5XCJdID0gY29tcG9uZW50cy5ib2R5O1xuICAgICAgICB2YXIgZmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykge1xuICAgICAgICAgICAgaWYgKGhlYWRlcnNbbmFtZV0gIT09IE9bbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaChuYW1lLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRk5BTUUsIHBjdEVuY0NoYXIpICsgXCI9XCIgKyBoZWFkZXJzW25hbWVdLnJlcGxhY2UoUENUX0VOQ09ERUQsIGRlY29kZVVucmVzZXJ2ZWQpLnJlcGxhY2UoUENUX0VOQ09ERUQsIHRvVXBwZXJDYXNlKS5yZXBsYWNlKE5PVF9IRlZBTFVFLCBwY3RFbmNDaGFyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucXVlcnkgPSBmaWVsZHMuam9pbihcIiZcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxufTtcblxudmFyIE5JRCQgPSBcIig/OlswLTlBLVphLXpdWzAtOUEtWmEtelxcXFwtXXsxLDMxfSlcIjtcbnZhciBVUk5fU0NIRU1FID0gbmV3IFJlZ0V4cChcIl51cm5cXFxcOihcIiArIE5JRCQgKyBcIikkXCIpO1xudmFyIFVSTl9QQVJTRSA9IC9eKFteXFw6XSspXFw6KC4qKS87XG52YXIgVVJOX0VYQ0xVREVEID0gL1tcXHgwMC1cXHgyMFxcXFxcXFwiXFwmXFw8XFw+XFxbXFxdXFxeXFxgXFx7XFx8XFx9XFx+XFx4N0YtXFx4RkZdL2c7XG4vL1JGQyAyMTQxXG52YXIgdXJuID0ge1xuICAgIHNjaGVtZTogXCJ1cm5cIixcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGNvbXBvbmVudHMucGF0aCAmJiBjb21wb25lbnRzLnBhdGgubWF0Y2goVVJOX1BBUlNFKTtcbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgIHZhciBzY2hlbWUgPSBcInVybjpcIiArIG1hdGNoZXNbMV0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHZhciBzY2hlbWVIYW5kbGVyID0gU0NIRU1FU1tzY2hlbWVdO1xuICAgICAgICAgICAgLy9pbiBvcmRlciB0byBzZXJpYWxpemUgcHJvcGVybHksXG4gICAgICAgICAgICAvL2V2ZXJ5IFVSTiBtdXN0IGhhdmUgYSBzZXJpYWxpemVyIHRoYXQgY2FsbHMgdGhlIFVSTiBzZXJpYWxpemVyXG4gICAgICAgICAgICBpZiAoIXNjaGVtZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAvL2NyZWF0ZSBmYWtlIHNjaGVtZSBoYW5kbGVyXG4gICAgICAgICAgICAgICAgc2NoZW1lSGFuZGxlciA9IFNDSEVNRVNbc2NoZW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1lOiBzY2hlbWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSQkMShjb21wb25lbnRzLCBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplOiBTQ0hFTUVTW1widXJuXCJdLnNlcmlhbGl6ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IHNjaGVtZTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMucGF0aCA9IG1hdGNoZXNbMl07XG4gICAgICAgICAgICBjb21wb25lbnRzID0gc2NoZW1lSGFuZGxlci5wYXJzZShjb21wb25lbnRzLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZXJyb3IgPSBjb21wb25lbnRzLmVycm9yIHx8IFwiVVJOIGNhbiBub3QgYmUgcGFyc2VkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgc2NoZW1lID0gY29tcG9uZW50cy5zY2hlbWUgfHwgb3B0aW9ucy5zY2hlbWU7XG4gICAgICAgIGlmIChzY2hlbWUgJiYgc2NoZW1lICE9PSBcInVyblwiKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHNjaGVtZS5tYXRjaChVUk5fU0NIRU1FKSB8fCBbXCJ1cm46XCIgKyBzY2hlbWUsIHNjaGVtZV07XG4gICAgICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IFwidXJuXCI7XG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSBtYXRjaGVzWzFdICsgXCI6XCIgKyAoY29tcG9uZW50cy5wYXRoID8gY29tcG9uZW50cy5wYXRoLnJlcGxhY2UoVVJOX0VYQ0xVREVELCBwY3RFbmNDaGFyKSA6IFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbn07XG5cbnZhciBVVUlEID0gL15bMC05QS1GYS1mXXs4fSg/OlxcLVswLTlBLUZhLWZdezR9KXszfVxcLVswLTlBLUZhLWZdezEyfSQvO1xuLy9SRkMgNDEyMlxudmFyIHV1aWQgPSB7XG4gICAgc2NoZW1lOiBcInVybjp1dWlkXCIsXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlJCQxKGNvbXBvbmVudHMsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnRvbGVyYW50ICYmICghY29tcG9uZW50cy5wYXRoIHx8ICFjb21wb25lbnRzLnBhdGgubWF0Y2goVVVJRCkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmVycm9yID0gY29tcG9uZW50cy5lcnJvciB8fCBcIlVVSUQgaXMgbm90IHZhbGlkLlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH0sXG4gICAgc2VyaWFsaXplOiBmdW5jdGlvbiBzZXJpYWxpemUkJDEoY29tcG9uZW50cywgb3B0aW9ucykge1xuICAgICAgICAvL2Vuc3VyZSBVVUlEIGlzIHZhbGlkXG4gICAgICAgIGlmICghb3B0aW9ucy50b2xlcmFudCAmJiAoIWNvbXBvbmVudHMucGF0aCB8fCAhY29tcG9uZW50cy5wYXRoLm1hdGNoKFVVSUQpKSkge1xuICAgICAgICAgICAgLy9pbnZhbGlkIFVVSURzIGNhbiBub3QgaGF2ZSB0aGlzIHNjaGVtZVxuICAgICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSBVVUlEXG4gICAgICAgICAgICBjb21wb25lbnRzLnBhdGggPSAoY29tcG9uZW50cy5wYXRoIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFNDSEVNRVNbXCJ1cm5cIl0uc2VyaWFsaXplKGNvbXBvbmVudHMsIG9wdGlvbnMpO1xuICAgIH1cbn07XG5cblNDSEVNRVNbXCJodHRwXCJdID0gaHR0cDtcblNDSEVNRVNbXCJodHRwc1wiXSA9IGh0dHBzO1xuU0NIRU1FU1tcIm1haWx0b1wiXSA9IG1haWx0bztcblNDSEVNRVNbXCJ1cm5cIl0gPSB1cm47XG5TQ0hFTUVTW1widXJuOnV1aWRcIl0gPSB1dWlkO1xuXG5leHBvcnRzLlNDSEVNRVMgPSBTQ0hFTUVTO1xuZXhwb3J0cy5wY3RFbmNDaGFyID0gcGN0RW5jQ2hhcjtcbmV4cG9ydHMucGN0RGVjQ2hhcnMgPSBwY3REZWNDaGFycztcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMucmVtb3ZlRG90U2VnbWVudHMgPSByZW1vdmVEb3RTZWdtZW50cztcbmV4cG9ydHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuZXhwb3J0cy5yZXNvbHZlQ29tcG9uZW50cyA9IHJlc29sdmVDb21wb25lbnRzO1xuZXhwb3J0cy5yZXNvbHZlID0gcmVzb2x2ZTtcbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuZXhwb3J0cy5lcXVhbCA9IGVxdWFsO1xuZXhwb3J0cy5lc2NhcGVDb21wb25lbnQgPSBlc2NhcGVDb21wb25lbnQ7XG5leHBvcnRzLnVuZXNjYXBlQ29tcG9uZW50ID0gdW5lc2NhcGVDb21wb25lbnQ7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11cmkuYWxsLmpzLm1hcFxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHB1bnljb2RlID0gcmVxdWlyZSgncHVueWNvZGUnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbmV4cG9ydHMucGFyc2UgPSB1cmxQYXJzZTtcbmV4cG9ydHMucmVzb2x2ZSA9IHVybFJlc29sdmU7XG5leHBvcnRzLnJlc29sdmVPYmplY3QgPSB1cmxSZXNvbHZlT2JqZWN0O1xuZXhwb3J0cy5mb3JtYXQgPSB1cmxGb3JtYXQ7XG5cbmV4cG9ydHMuVXJsID0gVXJsO1xuXG5mdW5jdGlvbiBVcmwoKSB7XG4gIHRoaXMucHJvdG9jb2wgPSBudWxsO1xuICB0aGlzLnNsYXNoZXMgPSBudWxsO1xuICB0aGlzLmF1dGggPSBudWxsO1xuICB0aGlzLmhvc3QgPSBudWxsO1xuICB0aGlzLnBvcnQgPSBudWxsO1xuICB0aGlzLmhvc3RuYW1lID0gbnVsbDtcbiAgdGhpcy5oYXNoID0gbnVsbDtcbiAgdGhpcy5zZWFyY2ggPSBudWxsO1xuICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgdGhpcy5wYXRobmFtZSA9IG51bGw7XG4gIHRoaXMucGF0aCA9IG51bGw7XG4gIHRoaXMuaHJlZiA9IG51bGw7XG59XG5cbi8vIFJlZmVyZW5jZTogUkZDIDM5ODYsIFJGQyAxODA4LCBSRkMgMjM5NlxuXG4vLyBkZWZpbmUgdGhlc2UgaGVyZSBzbyBhdCBsZWFzdCB0aGV5IG9ubHkgaGF2ZSB0byBiZVxuLy8gY29tcGlsZWQgb25jZSBvbiB0aGUgZmlyc3QgbW9kdWxlIGxvYWQuXG52YXIgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaSxcbiAgICBwb3J0UGF0dGVybiA9IC86WzAtOV0qJC8sXG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gICAgc2ltcGxlUGF0aFBhdHRlcm4gPSAvXihcXC9cXC8/KD8hXFwvKVteXFw/XFxzXSopKFxcP1teXFxzXSopPyQvLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgcmVzZXJ2ZWQgZm9yIGRlbGltaXRpbmcgVVJMcy5cbiAgICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICAgIGRlbGltcyA9IFsnPCcsICc+JywgJ1wiJywgJ2AnLCAnICcsICdcXHInLCAnXFxuJywgJ1xcdCddLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbiAgICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgICAvLyBBbGxvd2VkIGJ5IFJGQ3MsIGJ1dCBjYXVzZSBvZiBYU1MgYXR0YWNrcy4gIEFsd2F5cyBlc2NhcGUgdGhlc2UuXG4gICAgYXV0b0VzY2FwZSA9IFsnXFwnJ10uY29uY2F0KHVud2lzZSksXG4gICAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgICAvLyBOb3RlIHRoYXQgYW55IGludmFsaWQgY2hhcnMgYXJlIGFsc28gaGFuZGxlZCwgYnV0IHRoZXNlXG4gICAgLy8gYXJlIHRoZSBvbmVzIHRoYXQgYXJlICpleHBlY3RlZCogdG8gYmUgc2Vlbiwgc28gd2UgZmFzdC1wYXRoXG4gICAgLy8gdGhlbS5cbiAgICBub25Ib3N0Q2hhcnMgPSBbJyUnLCAnLycsICc/JywgJzsnLCAnIyddLmNvbmNhdChhdXRvRXNjYXBlKSxcbiAgICBob3N0RW5kaW5nQ2hhcnMgPSBbJy8nLCAnPycsICcjJ10sXG4gICAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gICAgaG9zdG5hbWVQYXJ0UGF0dGVybiA9IC9eWythLXowLTlBLVpfLV17MCw2M30kLyxcbiAgICBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLyxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgICB1bnNhZmVQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IG5ldmVyIGhhdmUgYSBob3N0bmFtZS5cbiAgICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICAgIH0sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgYWx3YXlzIGNvbnRhaW4gYSAvLyBiaXQuXG4gICAgc2xhc2hlZFByb3RvY29sID0ge1xuICAgICAgJ2h0dHAnOiB0cnVlLFxuICAgICAgJ2h0dHBzJzogdHJ1ZSxcbiAgICAgICdmdHAnOiB0cnVlLFxuICAgICAgJ2dvcGhlcic6IHRydWUsXG4gICAgICAnZmlsZSc6IHRydWUsXG4gICAgICAnaHR0cDonOiB0cnVlLFxuICAgICAgJ2h0dHBzOic6IHRydWUsXG4gICAgICAnZnRwOic6IHRydWUsXG4gICAgICAnZ29waGVyOic6IHRydWUsXG4gICAgICAnZmlsZTonOiB0cnVlXG4gICAgfSxcbiAgICBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJyk7XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1dGlsLmlzT2JqZWN0KHVybCkgJiYgdXJsIGluc3RhbmNlb2YgVXJsKSByZXR1cm4gdXJsO1xuXG4gIHZhciB1ID0gbmV3IFVybDtcbiAgdS5wYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KTtcbiAgcmV0dXJuIHU7XG59XG5cblVybC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbih1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghdXRpbC5pc1N0cmluZyh1cmwpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlBhcmFtZXRlciAndXJsJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgXCIgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgICAgc3BsaXR0ZXIgPVxuICAgICAgICAgIChxdWVyeUluZGV4ICE9PSAtMSAmJiBxdWVyeUluZGV4IDwgdXJsLmluZGV4T2YoJyMnKSkgPyAnPycgOiAnIycsXG4gICAgICB1U3BsaXQgPSB1cmwuc3BsaXQoc3BsaXR0ZXIpLFxuICAgICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICB0aGlzLnBhdGggPSByZXN0O1xuICAgICAgdGhpcy5ocmVmID0gcmVzdDtcbiAgICAgIHRoaXMucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnNlYXJjaC5zdWJzdHIoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaC5zdWJzdHIoMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICB2YXIgbG93ZXJQcm90byA9IHByb3RvLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wcm90b2NvbCA9IGxvd2VyUHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHZhciBzbGFzaGVzID0gcmVzdC5zdWJzdHIoMCwgMikgPT09ICcvLyc7XG4gICAgaWYgKHNsYXNoZXMgJiYgIShwcm90byAmJiBob3N0bGVzc1Byb3RvY29sW3Byb3RvXSkpIHtcbiAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgIHRoaXMuc2xhc2hlcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgICAgKHNsYXNoZXMgfHwgKHByb3RvICYmICFzbGFzaGVkUHJvdG9jb2xbcHJvdG9dKSkpIHtcblxuICAgIC8vIHRoZXJlJ3MgYSBob3N0bmFtZS5cbiAgICAvLyB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgLywgPywgOywgb3IgIyBlbmRzIHRoZSBob3N0LlxuICAgIC8vXG4gICAgLy8gSWYgdGhlcmUgaXMgYW4gQCBpbiB0aGUgaG9zdG5hbWUsIHRoZW4gbm9uLWhvc3QgY2hhcnMgKmFyZSogYWxsb3dlZFxuICAgIC8vIHRvIHRoZSBsZWZ0IG9mIHRoZSBsYXN0IEAgc2lnbiwgdW5sZXNzIHNvbWUgaG9zdC1lbmRpbmcgY2hhcmFjdGVyXG4gICAgLy8gY29tZXMgKmJlZm9yZSogdGhlIEAtc2lnbi5cbiAgICAvLyBVUkxzIGFyZSBvYm5veGlvdXMuXG4gICAgLy9cbiAgICAvLyBleDpcbiAgICAvLyBodHRwOi8vYUBiQGMvID0+IHVzZXI6YUBiIGhvc3Q6Y1xuICAgIC8vIGh0dHA6Ly9hQGI/QGMgPT4gdXNlcjphIGhvc3Q6YyBwYXRoOi8/QGNcblxuICAgIC8vIHYwLjEyIFRPRE8oaXNhYWNzKTogVGhpcyBpcyBub3QgcXVpdGUgaG93IENocm9tZSBkb2VzIHRoaW5ncy5cbiAgICAvLyBSZXZpZXcgb3VyIHRlc3QgY2FzZSBhZ2FpbnN0IGJyb3dzZXJzIG1vcmUgY29tcHJlaGVuc2l2ZWx5LlxuXG4gICAgLy8gZmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgYW55IGhvc3RFbmRpbmdDaGFyc1xuICAgIHZhciBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG5cbiAgICAvLyBhdCB0aGlzIHBvaW50LCBlaXRoZXIgd2UgaGF2ZSBhbiBleHBsaWNpdCBwb2ludCB3aGVyZSB0aGVcbiAgICAvLyBhdXRoIHBvcnRpb24gY2Fubm90IGdvIHBhc3QsIG9yIHRoZSBsYXN0IEAgY2hhciBpcyB0aGUgZGVjaWRlci5cbiAgICB2YXIgYXV0aCwgYXRTaWduO1xuICAgIGlmIChob3N0RW5kID09PSAtMSkge1xuICAgICAgLy8gYXRTaWduIGNhbiBiZSBhbnl3aGVyZS5cbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYXRTaWduIG11c3QgYmUgaW4gYXV0aCBwb3J0aW9uLlxuICAgICAgLy8gaHR0cDovL2FAYi9jQGQgPT4gaG9zdDpiIGF1dGg6YSBwYXRoOi9jQGRcbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnLCBob3N0RW5kKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgd2UgaGF2ZSBhIHBvcnRpb24gd2hpY2ggaXMgZGVmaW5pdGVseSB0aGUgYXV0aC5cbiAgICAvLyBQdWxsIHRoYXQgb2ZmLlxuICAgIGlmIChhdFNpZ24gIT09IC0xKSB7XG4gICAgICBhdXRoID0gcmVzdC5zbGljZSgwLCBhdFNpZ24pO1xuICAgICAgcmVzdCA9IHJlc3Quc2xpY2UoYXRTaWduICsgMSk7XG4gICAgICB0aGlzLmF1dGggPSBkZWNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vbkhvc3RDaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgdGhpcy5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgdGhpcy5wYXJzZUhvc3QoKTtcblxuICAgIC8vIHdlJ3ZlIGluZGljYXRlZCB0aGF0IHRoZXJlIGlzIGEgaG9zdG5hbWUsXG4gICAgLy8gc28gZXZlbiBpZiBpdCdzIGVtcHR5LCBpdCBoYXMgdG8gYmUgcHJlc2VudC5cbiAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHRoaXMuaG9zdG5hbWVbMF0gPT09ICdbJyAmJlxuICAgICAgICB0aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGhvc3RwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcnQgPSBob3N0cGFydHNbaV07XG4gICAgICAgIGlmICghcGFydCkgY29udGludWU7XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gJyc7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGsgPSBwYXJ0Lmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2hhckNvZGVBdChqKSA+IDEyNykge1xuICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIG5vbi1BU0NJSSBjaGFyIHdpdGggYSB0ZW1wb3JhcnkgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIG1ha2Ugc3VyZSBzaXplIG9mIGhvc3RuYW1lIGlzIG5vdFxuICAgICAgICAgICAgICAvLyBicm9rZW4gYnkgcmVwbGFjaW5nIG5vbi1BU0NJSSBieSBub3RoaW5nXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSAnLycgKyBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBob3N0bmFtZXMgYXJlIGFsd2F5cyBsb3dlciBjYXNlLlxuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgLy8gSUROQSBTdXBwb3J0OiBSZXR1cm5zIGEgcHVueWNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIFwiZG9tYWluXCIuXG4gICAgICAvLyBJdCBvbmx5IGNvbnZlcnRzIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB0aGF0XG4gICAgICAvLyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4gICAgICAvLyB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQgYWxyZWFkeSBpcyBBU0NJSS1vbmx5LlxuICAgICAgdGhpcy5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkodGhpcy5ob3N0bmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIHAgPSB0aGlzLnBvcnQgPyAnOicgKyB0aGlzLnBvcnQgOiAnJztcbiAgICB2YXIgaCA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG4gICAgdGhpcy5ob3N0ID0gaCArIHA7XG4gICAgdGhpcy5ocmVmICs9IHRoaXMuaG9zdDtcblxuICAgIC8vIHN0cmlwIFsgYW5kIF0gZnJvbSB0aGUgaG9zdG5hbWVcbiAgICAvLyB0aGUgaG9zdCBmaWVsZCBzdGlsbCByZXRhaW5zIHRoZW0sIHRob3VnaFxuICAgIGlmIChpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnN1YnN0cigxLCB0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgaWYgKHJlc3RbMF0gIT09ICcvJykge1xuICAgICAgICByZXN0ID0gJy8nICsgcmVzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBub3cgcmVzdCBpcyBzZXQgdG8gdGhlIHBvc3QtaG9zdCBzdHVmZi5cbiAgLy8gY2hvcCBvZmYgYW55IGRlbGltIGNoYXJzLlxuICBpZiAoIXVuc2FmZVByb3RvY29sW2xvd2VyUHJvdG9dKSB7XG5cbiAgICAvLyBGaXJzdCwgbWFrZSAxMDAlIHN1cmUgdGhhdCBhbnkgXCJhdXRvRXNjYXBlXCIgY2hhcnMgZ2V0XG4gICAgLy8gZXNjYXBlZCwgZXZlbiBpZiBlbmNvZGVVUklDb21wb25lbnQgZG9lc24ndCB0aGluayB0aGV5XG4gICAgLy8gbmVlZCB0byBiZS5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgdGhpcy5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICB0aGlzLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5c3RyaW5nLnBhcnNlKHRoaXMucXVlcnkpO1xuICAgIH1cbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBxbSk7XG4gIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgIC8vIG5vIHF1ZXJ5IHN0cmluZywgYnV0IHBhcnNlUXVlcnlTdHJpbmcgc3RpbGwgcmVxdWVzdGVkXG4gICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICB0aGlzLnF1ZXJ5ID0ge307XG4gIH1cbiAgaWYgKHJlc3QpIHRoaXMucGF0aG5hbWUgPSByZXN0O1xuICBpZiAoc2xhc2hlZFByb3RvY29sW2xvd2VyUHJvdG9dICYmXG4gICAgICB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHRoaXMucGF0aG5hbWUgfHwgdGhpcy5zZWFyY2gpIHtcbiAgICB2YXIgcCA9IHRoaXMucGF0aG5hbWUgfHwgJyc7XG4gICAgdmFyIHMgPSB0aGlzLnNlYXJjaCB8fCAnJztcbiAgICB0aGlzLnBhdGggPSBwICsgcztcbiAgfVxuXG4gIC8vIGZpbmFsbHksIHJlY29uc3RydWN0IHRoZSBocmVmIGJhc2VkIG9uIHdoYXQgaGFzIGJlZW4gdmFsaWRhdGVkLlxuICB0aGlzLmhyZWYgPSB0aGlzLmZvcm1hdCgpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAodXRpbC5pc1N0cmluZyhvYmopKSBvYmogPSB1cmxQYXJzZShvYmopO1xuICBpZiAoIShvYmogaW5zdGFuY2VvZiBVcmwpKSByZXR1cm4gVXJsLnByb3RvdHlwZS5mb3JtYXQuY2FsbChvYmopO1xuICByZXR1cm4gb2JqLmZvcm1hdCgpO1xufVxuXG5VcmwucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgYXV0aCA9IHRoaXMuYXV0aCB8fCAnJztcbiAgaWYgKGF1dGgpIHtcbiAgICBhdXRoID0gZW5jb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIGF1dGggPSBhdXRoLnJlcGxhY2UoLyUzQS9pLCAnOicpO1xuICAgIGF1dGggKz0gJ0AnO1xuICB9XG5cbiAgdmFyIHByb3RvY29sID0gdGhpcy5wcm90b2NvbCB8fCAnJyxcbiAgICAgIHBhdGhuYW1lID0gdGhpcy5wYXRobmFtZSB8fCAnJyxcbiAgICAgIGhhc2ggPSB0aGlzLmhhc2ggfHwgJycsXG4gICAgICBob3N0ID0gZmFsc2UsXG4gICAgICBxdWVyeSA9ICcnO1xuXG4gIGlmICh0aGlzLmhvc3QpIHtcbiAgICBob3N0ID0gYXV0aCArIHRoaXMuaG9zdDtcbiAgfSBlbHNlIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgaG9zdCA9IGF1dGggKyAodGhpcy5ob3N0bmFtZS5pbmRleE9mKCc6JykgPT09IC0xID9cbiAgICAgICAgdGhpcy5ob3N0bmFtZSA6XG4gICAgICAgICdbJyArIHRoaXMuaG9zdG5hbWUgKyAnXScpO1xuICAgIGlmICh0aGlzLnBvcnQpIHtcbiAgICAgIGhvc3QgKz0gJzonICsgdGhpcy5wb3J0O1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLnF1ZXJ5ICYmXG4gICAgICB1dGlsLmlzT2JqZWN0KHRoaXMucXVlcnkpICYmXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5KS5sZW5ndGgpIHtcbiAgICBxdWVyeSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSB0aGlzLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAodGhpcy5zbGFzaGVzIHx8XG4gICAgICAoIXByb3RvY29sIHx8IHNsYXNoZWRQcm90b2NvbFtwcm90b2NvbF0pICYmIGhvc3QgIT09IGZhbHNlKSB7XG4gICAgaG9zdCA9ICcvLycgKyAoaG9zdCB8fCAnJyk7XG4gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSBwYXRobmFtZSA9ICcvJyArIHBhdGhuYW1lO1xuICB9IGVsc2UgaWYgKCFob3N0KSB7XG4gICAgaG9zdCA9ICcnO1xuICB9XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5jaGFyQXQoMCkgIT09ICcjJykgaGFzaCA9ICcjJyArIGhhc2g7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoLmNoYXJBdCgwKSAhPT0gJz8nKSBzZWFyY2ggPSAnPycgKyBzZWFyY2g7XG5cbiAgcGF0aG5hbWUgPSBwYXRobmFtZS5yZXBsYWNlKC9bPyNdL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChtYXRjaCk7XG4gIH0pO1xuICBzZWFyY2ggPSBzZWFyY2gucmVwbGFjZSgnIycsICclMjMnKTtcblxuICByZXR1cm4gcHJvdG9jb2wgKyBob3N0ICsgcGF0aG5hbWUgKyBzZWFyY2ggKyBoYXNoO1xufTtcblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmICh1dGlsLmlzU3RyaW5nKHJlbGF0aXZlKSkge1xuICAgIHZhciByZWwgPSBuZXcgVXJsKCk7XG4gICAgcmVsLnBhcnNlKHJlbGF0aXZlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgcmVsYXRpdmUgPSByZWw7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gbmV3IFVybCgpO1xuICB2YXIgdGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgZm9yICh2YXIgdGsgPSAwOyB0ayA8IHRrZXlzLmxlbmd0aDsgdGsrKykge1xuICAgIHZhciB0a2V5ID0gdGtleXNbdGtdO1xuICAgIHJlc3VsdFt0a2V5XSA9IHRoaXNbdGtleV07XG4gIH1cblxuICAvLyBoYXNoIGlzIGFsd2F5cyBvdmVycmlkZGVuLCBubyBtYXR0ZXIgd2hhdC5cbiAgLy8gZXZlbiBocmVmPVwiXCIgd2lsbCByZW1vdmUgaXQuXG4gIHJlc3VsdC5oYXNoID0gcmVsYXRpdmUuaGFzaDtcblxuICAvLyBpZiB0aGUgcmVsYXRpdmUgdXJsIGlzIGVtcHR5LCB0aGVuIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIGRvIGhlcmUuXG4gIGlmIChyZWxhdGl2ZS5ocmVmID09PSAnJykge1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBocmVmcyBsaWtlIC8vZm9vL2JhciBhbHdheXMgY3V0IHRvIHRoZSBwcm90b2NvbC5cbiAgaWYgKHJlbGF0aXZlLnNsYXNoZXMgJiYgIXJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgLy8gdGFrZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgcHJvdG9jb2wgZnJvbSByZWxhdGl2ZVxuICAgIHZhciBya2V5cyA9IE9iamVjdC5rZXlzKHJlbGF0aXZlKTtcbiAgICBmb3IgKHZhciByayA9IDA7IHJrIDwgcmtleXMubGVuZ3RoOyByaysrKSB7XG4gICAgICB2YXIgcmtleSA9IHJrZXlzW3JrXTtcbiAgICAgIGlmIChya2V5ICE9PSAncHJvdG9jb2wnKVxuICAgICAgICByZXN1bHRbcmtleV0gPSByZWxhdGl2ZVtya2V5XTtcbiAgICB9XG5cbiAgICAvL3VybFBhcnNlIGFwcGVuZHMgdHJhaWxpbmcgLyB0byB1cmxzIGxpa2UgaHR0cDovL3d3dy5leGFtcGxlLmNvbVxuICAgIGlmIChzbGFzaGVkUHJvdG9jb2xbcmVzdWx0LnByb3RvY29sXSAmJlxuICAgICAgICByZXN1bHQuaG9zdG5hbWUgJiYgIXJlc3VsdC5wYXRobmFtZSkge1xuICAgICAgcmVzdWx0LnBhdGggPSByZXN1bHQucGF0aG5hbWUgPSAnLyc7XG4gICAgfVxuXG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmIChyZWxhdGl2ZS5wcm90b2NvbCAmJiByZWxhdGl2ZS5wcm90b2NvbCAhPT0gcmVzdWx0LnByb3RvY29sKSB7XG4gICAgLy8gaWYgaXQncyBhIGtub3duIHVybCBwcm90b2NvbCwgdGhlbiBjaGFuZ2luZ1xuICAgIC8vIHRoZSBwcm90b2NvbCBkb2VzIHdlaXJkIHRoaW5nc1xuICAgIC8vIGZpcnN0LCBpZiBpdCdzIG5vdCBmaWxlOiwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBob3N0LFxuICAgIC8vIGFuZCBpZiB0aGVyZSB3YXMgYSBwYXRoXG4gICAgLy8gdG8gYmVnaW4gd2l0aCwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBwYXRoLlxuICAgIC8vIGlmIGl0IGlzIGZpbGU6LCB0aGVuIHRoZSBob3N0IGlzIGRyb3BwZWQsXG4gICAgLy8gYmVjYXVzZSB0aGF0J3Mga25vd24gdG8gYmUgaG9zdGxlc3MuXG4gICAgLy8gYW55dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGFic29sdXRlLlxuICAgIGlmICghc2xhc2hlZFByb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgICBmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW3ZdO1xuICAgICAgICByZXN1bHRba10gPSByZWxhdGl2ZVtrXTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHQucHJvdG9jb2wgPSByZWxhdGl2ZS5wcm90b2NvbDtcbiAgICBpZiAoIXJlbGF0aXZlLmhvc3QgJiYgIWhvc3RsZXNzUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICAgIGlzUmVsQWJzID0gKFxuICAgICAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgICAgICByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJ1xuICAgICAgKSxcbiAgICAgIG11c3RFbmRBYnMgPSAoaXNSZWxBYnMgfHwgaXNTb3VyY2VBYnMgfHxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5ob3N0ICYmIHJlbGF0aXZlLnBhdGhuYW1lKSksXG4gICAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICAgIHNyY1BhdGggPSByZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICByZWxQYXRoID0gcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuc3BsaXQoJy8nKSB8fCBbXSxcbiAgICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG5cbiAgLy8gaWYgdGhlIHVybCBpcyBhIG5vbi1zbGFzaGVkIHVybCwgdGhlbiByZWxhdGl2ZVxuICAvLyBsaW5rcyBsaWtlIC4uLy4uIHNob3VsZCBiZSBhYmxlXG4gIC8vIHRvIGNyYXdsIHVwIHRvIHRoZSBob3N0bmFtZSwgYXMgd2VsbC4gIFRoaXMgaXMgc3RyYW5nZS5cbiAgLy8gcmVzdWx0LnByb3RvY29sIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGJ5IG5vdy5cbiAgLy8gTGF0ZXIgb24sIHB1dCB0aGUgZmlyc3QgcGF0aCBwYXJ0IGludG8gdGhlIGhvc3QgZmllbGQuXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAnJztcbiAgICByZXN1bHQucG9ydCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5ob3N0KSB7XG4gICAgICBpZiAoc3JjUGF0aFswXSA9PT0gJycpIHNyY1BhdGhbMF0gPSByZXN1bHQuaG9zdDtcbiAgICAgIGVsc2Ugc3JjUGF0aC51bnNoaWZ0KHJlc3VsdC5ob3N0KTtcbiAgICB9XG4gICAgcmVzdWx0Lmhvc3QgPSAnJztcbiAgICBpZiAocmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAgIHJlbGF0aXZlLmhvc3RuYW1lID0gbnVsbDtcbiAgICAgIHJlbGF0aXZlLnBvcnQgPSBudWxsO1xuICAgICAgaWYgKHJlbGF0aXZlLmhvc3QpIHtcbiAgICAgICAgaWYgKHJlbFBhdGhbMF0gPT09ICcnKSByZWxQYXRoWzBdID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgZWxzZSByZWxQYXRoLnVuc2hpZnQocmVsYXRpdmUuaG9zdCk7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZS5ob3N0ID0gbnVsbDtcbiAgICB9XG4gICAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgJiYgKHJlbFBhdGhbMF0gPT09ICcnIHx8IHNyY1BhdGhbMF0gPT09ICcnKTtcbiAgfVxuXG4gIGlmIChpc1JlbEFicykge1xuICAgIC8vIGl0J3MgYWJzb2x1dGUuXG4gICAgcmVzdWx0Lmhvc3QgPSAocmVsYXRpdmUuaG9zdCB8fCByZWxhdGl2ZS5ob3N0ID09PSAnJykgP1xuICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdCA6IHJlc3VsdC5ob3N0O1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IChyZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0bmFtZSA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIXV0aWwuaXNOdWxsT3JVbmRlZmluZWQocmVsYXRpdmUuc2VhcmNoKSkge1xuICAgIC8vIGp1c3QgcHVsbCBvdXQgdGhlIHNlYXJjaC5cbiAgICAvLyBsaWtlIGhyZWY9Jz9mb28nLlxuICAgIC8vIFB1dCB0aGlzIGFmdGVyIHRoZSBvdGhlciB0d28gY2FzZXMgYmVjYXVzZSBpdCBzaW1wbGlmaWVzIHRoZSBib29sZWFuc1xuICAgIGlmIChwc3ljaG90aWMpIHtcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gc3JjUGF0aC5zaGlmdCgpO1xuICAgICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgICAgLy90aGlzIGVzcGVjaWFsbHkgaGFwcGVucyBpbiBjYXNlcyBsaWtlXG4gICAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgICAgdmFyIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIXV0aWwuaXNOdWxsKHJlc3VsdC5wYXRobmFtZSkgfHwgIXV0aWwuaXNOdWxsKHJlc3VsdC5zZWFyY2gpKSB7XG4gICAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgLy8gbm8gcGF0aCBhdCBhbGwuICBlYXN5LlxuICAgIC8vIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgb3RoZXIgc3R1ZmYgYWJvdmUuXG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gJy8nICsgcmVzdWx0LnNlYXJjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaWYgYSB1cmwgRU5EcyBpbiAuIG9yIC4uLCB0aGVuIGl0IG11c3QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIC8vIGhvd2V2ZXIsIGlmIGl0IGVuZHMgaW4gYW55dGhpbmcgZWxzZSBub24tc2xhc2h5LFxuICAvLyB0aGVuIGl0IG11c3QgTk9UIGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICB2YXIgbGFzdCA9IHNyY1BhdGguc2xpY2UoLTEpWzBdO1xuICB2YXIgaGFzVHJhaWxpbmdTbGFzaCA9IChcbiAgICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAgIChsYXN0ID09PSAnLicgfHwgbGFzdCA9PT0gJy4uJykgfHwgbGFzdCA9PT0gJycpO1xuXG4gIC8vIHN0cmlwIHNpbmdsZSBkb3RzLCByZXNvbHZlIGRvdWJsZSBkb3RzIHRvIHBhcmVudCBkaXJcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHNyY1BhdGgubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgIGxhc3QgPSBzcmNQYXRoW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmICghbXVzdEVuZEFicyAmJiAhcmVtb3ZlQWxsRG90cykge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgc3JjUGF0aC51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtdXN0RW5kQWJzICYmIHNyY1BhdGhbMF0gIT09ICcnICYmXG4gICAgICAoIXNyY1BhdGhbMF0gfHwgc3JjUGF0aFswXS5jaGFyQXQoMCkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2xhc2ggJiYgKHNyY1BhdGguam9pbignLycpLnN1YnN0cigtMSkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnB1c2goJycpO1xuICB9XG5cbiAgdmFyIGlzQWJzb2x1dGUgPSBzcmNQYXRoWzBdID09PSAnJyB8fFxuICAgICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgdmFyIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICB9XG4gIH1cblxuICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyB8fCAocmVzdWx0Lmhvc3QgJiYgc3JjUGF0aC5sZW5ndGgpO1xuXG4gIGlmIChtdXN0RW5kQWJzICYmICFpc0Fic29sdXRlKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBzcmNQYXRoLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCByZXF1ZXN0Lmh0dHBcbiAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gIH1cbiAgcmVzdWx0LmF1dGggPSByZWxhdGl2ZS5hdXRoIHx8IHJlc3VsdC5hdXRoO1xuICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuVXJsLnByb3RvdHlwZS5wYXJzZUhvc3QgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gIHZhciBwb3J0ID0gcG9ydFBhdHRlcm4uZXhlYyhob3N0KTtcbiAgaWYgKHBvcnQpIHtcbiAgICBwb3J0ID0gcG9ydFswXTtcbiAgICBpZiAocG9ydCAhPT0gJzonKSB7XG4gICAgICB0aGlzLnBvcnQgPSBwb3J0LnN1YnN0cigxKTtcbiAgICB9XG4gICAgaG9zdCA9IGhvc3Quc3Vic3RyKDAsIGhvc3QubGVuZ3RoIC0gcG9ydC5sZW5ndGgpO1xuICB9XG4gIGlmIChob3N0KSB0aGlzLmhvc3RuYW1lID0gaG9zdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1N0cmluZzogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZihhcmcpID09PSAnc3RyaW5nJztcbiAgfSxcbiAgaXNPYmplY3Q6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xuICB9LFxuICBpc051bGw6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgPT09IG51bGw7XG4gIH0sXG4gIGlzTnVsbE9yVW5kZWZpbmVkOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09IG51bGw7XG4gIH1cbn07XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdG9EYXRlID0gcmVxdWlyZSgnLi9saWIvdG9EYXRlJyk7XG5cbnZhciBfdG9EYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvRGF0ZSk7XG5cbnZhciBfdG9GbG9hdCA9IHJlcXVpcmUoJy4vbGliL3RvRmxvYXQnKTtcblxudmFyIF90b0Zsb2F0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvRmxvYXQpO1xuXG52YXIgX3RvSW50ID0gcmVxdWlyZSgnLi9saWIvdG9JbnQnKTtcblxudmFyIF90b0ludDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b0ludCk7XG5cbnZhciBfdG9Cb29sZWFuID0gcmVxdWlyZSgnLi9saWIvdG9Cb29sZWFuJyk7XG5cbnZhciBfdG9Cb29sZWFuMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvQm9vbGVhbik7XG5cbnZhciBfZXF1YWxzID0gcmVxdWlyZSgnLi9saWIvZXF1YWxzJyk7XG5cbnZhciBfZXF1YWxzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2VxdWFscyk7XG5cbnZhciBfY29udGFpbnMgPSByZXF1aXJlKCcuL2xpYi9jb250YWlucycpO1xuXG52YXIgX2NvbnRhaW5zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnRhaW5zKTtcblxudmFyIF9tYXRjaGVzID0gcmVxdWlyZSgnLi9saWIvbWF0Y2hlcycpO1xuXG52YXIgX21hdGNoZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWF0Y2hlcyk7XG5cbnZhciBfaXNFbWFpbCA9IHJlcXVpcmUoJy4vbGliL2lzRW1haWwnKTtcblxudmFyIF9pc0VtYWlsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRW1haWwpO1xuXG52YXIgX2lzVVJMID0gcmVxdWlyZSgnLi9saWIvaXNVUkwnKTtcblxudmFyIF9pc1VSTDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1VSTCk7XG5cbnZhciBfaXNNQUNBZGRyZXNzID0gcmVxdWlyZSgnLi9saWIvaXNNQUNBZGRyZXNzJyk7XG5cbnZhciBfaXNNQUNBZGRyZXNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzTUFDQWRkcmVzcyk7XG5cbnZhciBfaXNJUCA9IHJlcXVpcmUoJy4vbGliL2lzSVAnKTtcblxudmFyIF9pc0lQMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVApO1xuXG52YXIgX2lzSVBSYW5nZSA9IHJlcXVpcmUoJy4vbGliL2lzSVBSYW5nZScpO1xuXG52YXIgX2lzSVBSYW5nZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lQUmFuZ2UpO1xuXG52YXIgX2lzRlFETiA9IHJlcXVpcmUoJy4vbGliL2lzRlFETicpO1xuXG52YXIgX2lzRlFETjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0ZRRE4pO1xuXG52YXIgX2lzQm9vbGVhbiA9IHJlcXVpcmUoJy4vbGliL2lzQm9vbGVhbicpO1xuXG52YXIgX2lzQm9vbGVhbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0Jvb2xlYW4pO1xuXG52YXIgX2lzQWxwaGEgPSByZXF1aXJlKCcuL2xpYi9pc0FscGhhJyk7XG5cbnZhciBfaXNBbHBoYTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0FscGhhKTtcblxudmFyIF9pc0FscGhhbnVtZXJpYyA9IHJlcXVpcmUoJy4vbGliL2lzQWxwaGFudW1lcmljJyk7XG5cbnZhciBfaXNBbHBoYW51bWVyaWMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNBbHBoYW51bWVyaWMpO1xuXG52YXIgX2lzTnVtZXJpYyA9IHJlcXVpcmUoJy4vbGliL2lzTnVtZXJpYycpO1xuXG52YXIgX2lzTnVtZXJpYzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc051bWVyaWMpO1xuXG52YXIgX2lzUG9ydCA9IHJlcXVpcmUoJy4vbGliL2lzUG9ydCcpO1xuXG52YXIgX2lzUG9ydDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BvcnQpO1xuXG52YXIgX2lzTG93ZXJjYXNlID0gcmVxdWlyZSgnLi9saWIvaXNMb3dlcmNhc2UnKTtcblxudmFyIF9pc0xvd2VyY2FzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0xvd2VyY2FzZSk7XG5cbnZhciBfaXNVcHBlcmNhc2UgPSByZXF1aXJlKCcuL2xpYi9pc1VwcGVyY2FzZScpO1xuXG52YXIgX2lzVXBwZXJjYXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzVXBwZXJjYXNlKTtcblxudmFyIF9pc0FzY2lpID0gcmVxdWlyZSgnLi9saWIvaXNBc2NpaScpO1xuXG52YXIgX2lzQXNjaWkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNBc2NpaSk7XG5cbnZhciBfaXNGdWxsV2lkdGggPSByZXF1aXJlKCcuL2xpYi9pc0Z1bGxXaWR0aCcpO1xuXG52YXIgX2lzRnVsbFdpZHRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRnVsbFdpZHRoKTtcblxudmFyIF9pc0hhbGZXaWR0aCA9IHJlcXVpcmUoJy4vbGliL2lzSGFsZldpZHRoJyk7XG5cbnZhciBfaXNIYWxmV2lkdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNIYWxmV2lkdGgpO1xuXG52YXIgX2lzVmFyaWFibGVXaWR0aCA9IHJlcXVpcmUoJy4vbGliL2lzVmFyaWFibGVXaWR0aCcpO1xuXG52YXIgX2lzVmFyaWFibGVXaWR0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1ZhcmlhYmxlV2lkdGgpO1xuXG52YXIgX2lzTXVsdGlieXRlID0gcmVxdWlyZSgnLi9saWIvaXNNdWx0aWJ5dGUnKTtcblxudmFyIF9pc011bHRpYnl0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc011bHRpYnl0ZSk7XG5cbnZhciBfaXNTdXJyb2dhdGVQYWlyID0gcmVxdWlyZSgnLi9saWIvaXNTdXJyb2dhdGVQYWlyJyk7XG5cbnZhciBfaXNTdXJyb2dhdGVQYWlyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzU3Vycm9nYXRlUGFpcik7XG5cbnZhciBfaXNJbnQgPSByZXF1aXJlKCcuL2xpYi9pc0ludCcpO1xuXG52YXIgX2lzSW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSW50KTtcblxudmFyIF9pc0Zsb2F0ID0gcmVxdWlyZSgnLi9saWIvaXNGbG9hdCcpO1xuXG52YXIgX2lzRmxvYXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNGbG9hdCk7XG5cbnZhciBfaXNEZWNpbWFsID0gcmVxdWlyZSgnLi9saWIvaXNEZWNpbWFsJyk7XG5cbnZhciBfaXNEZWNpbWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRGVjaW1hbCk7XG5cbnZhciBfaXNIZXhhZGVjaW1hbCA9IHJlcXVpcmUoJy4vbGliL2lzSGV4YWRlY2ltYWwnKTtcblxudmFyIF9pc0hleGFkZWNpbWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSGV4YWRlY2ltYWwpO1xuXG52YXIgX2lzRGl2aXNpYmxlQnkgPSByZXF1aXJlKCcuL2xpYi9pc0RpdmlzaWJsZUJ5Jyk7XG5cbnZhciBfaXNEaXZpc2libGVCeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0RpdmlzaWJsZUJ5KTtcblxudmFyIF9pc0hleENvbG9yID0gcmVxdWlyZSgnLi9saWIvaXNIZXhDb2xvcicpO1xuXG52YXIgX2lzSGV4Q29sb3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNIZXhDb2xvcik7XG5cbnZhciBfaXNJU1JDID0gcmVxdWlyZSgnLi9saWIvaXNJU1JDJyk7XG5cbnZhciBfaXNJU1JDMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVNSQyk7XG5cbnZhciBfaXNNRCA9IHJlcXVpcmUoJy4vbGliL2lzTUQ1Jyk7XG5cbnZhciBfaXNNRDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc01EKTtcblxudmFyIF9pc0hhc2ggPSByZXF1aXJlKCcuL2xpYi9pc0hhc2gnKTtcblxudmFyIF9pc0hhc2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNIYXNoKTtcblxudmFyIF9pc0pXVCA9IHJlcXVpcmUoJy4vbGliL2lzSldUJyk7XG5cbnZhciBfaXNKV1QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNKV1QpO1xuXG52YXIgX2lzSlNPTiA9IHJlcXVpcmUoJy4vbGliL2lzSlNPTicpO1xuXG52YXIgX2lzSlNPTjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0pTT04pO1xuXG52YXIgX2lzRW1wdHkgPSByZXF1aXJlKCcuL2xpYi9pc0VtcHR5Jyk7XG5cbnZhciBfaXNFbXB0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0VtcHR5KTtcblxudmFyIF9pc0xlbmd0aCA9IHJlcXVpcmUoJy4vbGliL2lzTGVuZ3RoJyk7XG5cbnZhciBfaXNMZW5ndGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNMZW5ndGgpO1xuXG52YXIgX2lzQnl0ZUxlbmd0aCA9IHJlcXVpcmUoJy4vbGliL2lzQnl0ZUxlbmd0aCcpO1xuXG52YXIgX2lzQnl0ZUxlbmd0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0J5dGVMZW5ndGgpO1xuXG52YXIgX2lzVVVJRCA9IHJlcXVpcmUoJy4vbGliL2lzVVVJRCcpO1xuXG52YXIgX2lzVVVJRDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1VVSUQpO1xuXG52YXIgX2lzTW9uZ29JZCA9IHJlcXVpcmUoJy4vbGliL2lzTW9uZ29JZCcpO1xuXG52YXIgX2lzTW9uZ29JZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc01vbmdvSWQpO1xuXG52YXIgX2lzQWZ0ZXIgPSByZXF1aXJlKCcuL2xpYi9pc0FmdGVyJyk7XG5cbnZhciBfaXNBZnRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0FmdGVyKTtcblxudmFyIF9pc0JlZm9yZSA9IHJlcXVpcmUoJy4vbGliL2lzQmVmb3JlJyk7XG5cbnZhciBfaXNCZWZvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNCZWZvcmUpO1xuXG52YXIgX2lzSW4gPSByZXF1aXJlKCcuL2xpYi9pc0luJyk7XG5cbnZhciBfaXNJbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0luKTtcblxudmFyIF9pc0NyZWRpdENhcmQgPSByZXF1aXJlKCcuL2xpYi9pc0NyZWRpdENhcmQnKTtcblxudmFyIF9pc0NyZWRpdENhcmQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNDcmVkaXRDYXJkKTtcblxudmFyIF9pc0lTSU4gPSByZXF1aXJlKCcuL2xpYi9pc0lTSU4nKTtcblxudmFyIF9pc0lTSU4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU0lOKTtcblxudmFyIF9pc0lTQk4gPSByZXF1aXJlKCcuL2xpYi9pc0lTQk4nKTtcblxudmFyIF9pc0lTQk4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU0JOKTtcblxudmFyIF9pc0lTU04gPSByZXF1aXJlKCcuL2xpYi9pc0lTU04nKTtcblxudmFyIF9pc0lTU04yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU1NOKTtcblxudmFyIF9pc01vYmlsZVBob25lID0gcmVxdWlyZSgnLi9saWIvaXNNb2JpbGVQaG9uZScpO1xuXG52YXIgX2lzTW9iaWxlUGhvbmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNNb2JpbGVQaG9uZSk7XG5cbnZhciBfaXNDdXJyZW5jeSA9IHJlcXVpcmUoJy4vbGliL2lzQ3VycmVuY3knKTtcblxudmFyIF9pc0N1cnJlbmN5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzQ3VycmVuY3kpO1xuXG52YXIgX2lzSVNPID0gcmVxdWlyZSgnLi9saWIvaXNJU084NjAxJyk7XG5cbnZhciBfaXNJU08yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU08pO1xuXG52YXIgX2lzUkZDID0gcmVxdWlyZSgnLi9saWIvaXNSRkMzMzM5Jyk7XG5cbnZhciBfaXNSRkMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNSRkMpO1xuXG52YXIgX2lzSVNPMzE2NjFBbHBoYSA9IHJlcXVpcmUoJy4vbGliL2lzSVNPMzE2NjFBbHBoYTInKTtcblxudmFyIF9pc0lTTzMxNjYxQWxwaGEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJU08zMTY2MUFscGhhKTtcblxudmFyIF9pc0lTTzMxNjYxQWxwaGEzID0gcmVxdWlyZSgnLi9saWIvaXNJU08zMTY2MUFscGhhMycpO1xuXG52YXIgX2lzSVNPMzE2NjFBbHBoYTQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lTTzMxNjYxQWxwaGEzKTtcblxudmFyIF9pc0Jhc2UgPSByZXF1aXJlKCcuL2xpYi9pc0Jhc2U2NCcpO1xuXG52YXIgX2lzQmFzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0Jhc2UpO1xuXG52YXIgX2lzRGF0YVVSSSA9IHJlcXVpcmUoJy4vbGliL2lzRGF0YVVSSScpO1xuXG52YXIgX2lzRGF0YVVSSTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0RhdGFVUkkpO1xuXG52YXIgX2lzTWFnbmV0VVJJID0gcmVxdWlyZSgnLi9saWIvaXNNYWduZXRVUkknKTtcblxudmFyIF9pc01hZ25ldFVSSTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc01hZ25ldFVSSSk7XG5cbnZhciBfaXNNaW1lVHlwZSA9IHJlcXVpcmUoJy4vbGliL2lzTWltZVR5cGUnKTtcblxudmFyIF9pc01pbWVUeXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzTWltZVR5cGUpO1xuXG52YXIgX2lzTGF0TG9uZyA9IHJlcXVpcmUoJy4vbGliL2lzTGF0TG9uZycpO1xuXG52YXIgX2lzTGF0TG9uZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0xhdExvbmcpO1xuXG52YXIgX2lzUG9zdGFsQ29kZSA9IHJlcXVpcmUoJy4vbGliL2lzUG9zdGFsQ29kZScpO1xuXG52YXIgX2lzUG9zdGFsQ29kZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1Bvc3RhbENvZGUpO1xuXG52YXIgX2x0cmltID0gcmVxdWlyZSgnLi9saWIvbHRyaW0nKTtcblxudmFyIF9sdHJpbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sdHJpbSk7XG5cbnZhciBfcnRyaW0gPSByZXF1aXJlKCcuL2xpYi9ydHJpbScpO1xuXG52YXIgX3J0cmltMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3J0cmltKTtcblxudmFyIF90cmltID0gcmVxdWlyZSgnLi9saWIvdHJpbScpO1xuXG52YXIgX3RyaW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHJpbSk7XG5cbnZhciBfZXNjYXBlID0gcmVxdWlyZSgnLi9saWIvZXNjYXBlJyk7XG5cbnZhciBfZXNjYXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2VzY2FwZSk7XG5cbnZhciBfdW5lc2NhcGUgPSByZXF1aXJlKCcuL2xpYi91bmVzY2FwZScpO1xuXG52YXIgX3VuZXNjYXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VuZXNjYXBlKTtcblxudmFyIF9zdHJpcExvdyA9IHJlcXVpcmUoJy4vbGliL3N0cmlwTG93Jyk7XG5cbnZhciBfc3RyaXBMb3cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaXBMb3cpO1xuXG52YXIgX3doaXRlbGlzdCA9IHJlcXVpcmUoJy4vbGliL3doaXRlbGlzdCcpO1xuXG52YXIgX3doaXRlbGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93aGl0ZWxpc3QpO1xuXG52YXIgX2JsYWNrbGlzdCA9IHJlcXVpcmUoJy4vbGliL2JsYWNrbGlzdCcpO1xuXG52YXIgX2JsYWNrbGlzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ibGFja2xpc3QpO1xuXG52YXIgX2lzV2hpdGVsaXN0ZWQgPSByZXF1aXJlKCcuL2xpYi9pc1doaXRlbGlzdGVkJyk7XG5cbnZhciBfaXNXaGl0ZWxpc3RlZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1doaXRlbGlzdGVkKTtcblxudmFyIF9ub3JtYWxpemVFbWFpbCA9IHJlcXVpcmUoJy4vbGliL25vcm1hbGl6ZUVtYWlsJyk7XG5cbnZhciBfbm9ybWFsaXplRW1haWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbm9ybWFsaXplRW1haWwpO1xuXG52YXIgX3RvU3RyaW5nID0gcmVxdWlyZSgnLi9saWIvdXRpbC90b1N0cmluZycpO1xuXG52YXIgX3RvU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvU3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHZlcnNpb24gPSAnMTAuNy4wJztcblxudmFyIHZhbGlkYXRvciA9IHtcbiAgdmVyc2lvbjogdmVyc2lvbixcbiAgdG9EYXRlOiBfdG9EYXRlMi5kZWZhdWx0LFxuICB0b0Zsb2F0OiBfdG9GbG9hdDIuZGVmYXVsdCxcbiAgdG9JbnQ6IF90b0ludDIuZGVmYXVsdCxcbiAgdG9Cb29sZWFuOiBfdG9Cb29sZWFuMi5kZWZhdWx0LFxuICBlcXVhbHM6IF9lcXVhbHMyLmRlZmF1bHQsXG4gIGNvbnRhaW5zOiBfY29udGFpbnMyLmRlZmF1bHQsXG4gIG1hdGNoZXM6IF9tYXRjaGVzMi5kZWZhdWx0LFxuICBpc0VtYWlsOiBfaXNFbWFpbDIuZGVmYXVsdCxcbiAgaXNVUkw6IF9pc1VSTDIuZGVmYXVsdCxcbiAgaXNNQUNBZGRyZXNzOiBfaXNNQUNBZGRyZXNzMi5kZWZhdWx0LFxuICBpc0lQOiBfaXNJUDIuZGVmYXVsdCxcbiAgaXNJUFJhbmdlOiBfaXNJUFJhbmdlMi5kZWZhdWx0LFxuICBpc0ZRRE46IF9pc0ZRRE4yLmRlZmF1bHQsXG4gIGlzQm9vbGVhbjogX2lzQm9vbGVhbjIuZGVmYXVsdCxcbiAgaXNBbHBoYTogX2lzQWxwaGEyLmRlZmF1bHQsXG4gIGlzQWxwaGFudW1lcmljOiBfaXNBbHBoYW51bWVyaWMyLmRlZmF1bHQsXG4gIGlzTnVtZXJpYzogX2lzTnVtZXJpYzIuZGVmYXVsdCxcbiAgaXNQb3J0OiBfaXNQb3J0Mi5kZWZhdWx0LFxuICBpc0xvd2VyY2FzZTogX2lzTG93ZXJjYXNlMi5kZWZhdWx0LFxuICBpc1VwcGVyY2FzZTogX2lzVXBwZXJjYXNlMi5kZWZhdWx0LFxuICBpc0FzY2lpOiBfaXNBc2NpaTIuZGVmYXVsdCxcbiAgaXNGdWxsV2lkdGg6IF9pc0Z1bGxXaWR0aDIuZGVmYXVsdCxcbiAgaXNIYWxmV2lkdGg6IF9pc0hhbGZXaWR0aDIuZGVmYXVsdCxcbiAgaXNWYXJpYWJsZVdpZHRoOiBfaXNWYXJpYWJsZVdpZHRoMi5kZWZhdWx0LFxuICBpc011bHRpYnl0ZTogX2lzTXVsdGlieXRlMi5kZWZhdWx0LFxuICBpc1N1cnJvZ2F0ZVBhaXI6IF9pc1N1cnJvZ2F0ZVBhaXIyLmRlZmF1bHQsXG4gIGlzSW50OiBfaXNJbnQyLmRlZmF1bHQsXG4gIGlzRmxvYXQ6IF9pc0Zsb2F0Mi5kZWZhdWx0LFxuICBpc0RlY2ltYWw6IF9pc0RlY2ltYWwyLmRlZmF1bHQsXG4gIGlzSGV4YWRlY2ltYWw6IF9pc0hleGFkZWNpbWFsMi5kZWZhdWx0LFxuICBpc0RpdmlzaWJsZUJ5OiBfaXNEaXZpc2libGVCeTIuZGVmYXVsdCxcbiAgaXNIZXhDb2xvcjogX2lzSGV4Q29sb3IyLmRlZmF1bHQsXG4gIGlzSVNSQzogX2lzSVNSQzIuZGVmYXVsdCxcbiAgaXNNRDU6IF9pc01EMi5kZWZhdWx0LFxuICBpc0hhc2g6IF9pc0hhc2gyLmRlZmF1bHQsXG4gIGlzSldUOiBfaXNKV1QyLmRlZmF1bHQsXG4gIGlzSlNPTjogX2lzSlNPTjIuZGVmYXVsdCxcbiAgaXNFbXB0eTogX2lzRW1wdHkyLmRlZmF1bHQsXG4gIGlzTGVuZ3RoOiBfaXNMZW5ndGgyLmRlZmF1bHQsXG4gIGlzQnl0ZUxlbmd0aDogX2lzQnl0ZUxlbmd0aDIuZGVmYXVsdCxcbiAgaXNVVUlEOiBfaXNVVUlEMi5kZWZhdWx0LFxuICBpc01vbmdvSWQ6IF9pc01vbmdvSWQyLmRlZmF1bHQsXG4gIGlzQWZ0ZXI6IF9pc0FmdGVyMi5kZWZhdWx0LFxuICBpc0JlZm9yZTogX2lzQmVmb3JlMi5kZWZhdWx0LFxuICBpc0luOiBfaXNJbjIuZGVmYXVsdCxcbiAgaXNDcmVkaXRDYXJkOiBfaXNDcmVkaXRDYXJkMi5kZWZhdWx0LFxuICBpc0lTSU46IF9pc0lTSU4yLmRlZmF1bHQsXG4gIGlzSVNCTjogX2lzSVNCTjIuZGVmYXVsdCxcbiAgaXNJU1NOOiBfaXNJU1NOMi5kZWZhdWx0LFxuICBpc01vYmlsZVBob25lOiBfaXNNb2JpbGVQaG9uZTIuZGVmYXVsdCxcbiAgaXNQb3N0YWxDb2RlOiBfaXNQb3N0YWxDb2RlMi5kZWZhdWx0LFxuICBpc1Bvc3RhbENvZGVMb2NhbGVzOiBfaXNQb3N0YWxDb2RlLmxvY2FsZXMsXG4gIGlzQ3VycmVuY3k6IF9pc0N1cnJlbmN5Mi5kZWZhdWx0LFxuICBpc0lTTzg2MDE6IF9pc0lTTzIuZGVmYXVsdCxcbiAgaXNSRkMzMzM5OiBfaXNSRkMyLmRlZmF1bHQsXG4gIGlzSVNPMzE2NjFBbHBoYTI6IF9pc0lTTzMxNjYxQWxwaGEyLmRlZmF1bHQsXG4gIGlzSVNPMzE2NjFBbHBoYTM6IF9pc0lTTzMxNjYxQWxwaGE0LmRlZmF1bHQsXG4gIGlzQmFzZTY0OiBfaXNCYXNlMi5kZWZhdWx0LFxuICBpc0RhdGFVUkk6IF9pc0RhdGFVUkkyLmRlZmF1bHQsXG4gIGlzTWFnbmV0VVJJOiBfaXNNYWduZXRVUkkyLmRlZmF1bHQsXG4gIGlzTWltZVR5cGU6IF9pc01pbWVUeXBlMi5kZWZhdWx0LFxuICBpc0xhdExvbmc6IF9pc0xhdExvbmcyLmRlZmF1bHQsXG4gIGx0cmltOiBfbHRyaW0yLmRlZmF1bHQsXG4gIHJ0cmltOiBfcnRyaW0yLmRlZmF1bHQsXG4gIHRyaW06IF90cmltMi5kZWZhdWx0LFxuICBlc2NhcGU6IF9lc2NhcGUyLmRlZmF1bHQsXG4gIHVuZXNjYXBlOiBfdW5lc2NhcGUyLmRlZmF1bHQsXG4gIHN0cmlwTG93OiBfc3RyaXBMb3cyLmRlZmF1bHQsXG4gIHdoaXRlbGlzdDogX3doaXRlbGlzdDIuZGVmYXVsdCxcbiAgYmxhY2tsaXN0OiBfYmxhY2tsaXN0Mi5kZWZhdWx0LFxuICBpc1doaXRlbGlzdGVkOiBfaXNXaGl0ZWxpc3RlZDIuZGVmYXVsdCxcbiAgbm9ybWFsaXplRW1haWw6IF9ub3JtYWxpemVFbWFpbDIuZGVmYXVsdCxcbiAgdG9TdHJpbmc6IF90b1N0cmluZzIuZGVmYXVsdFxufTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gdmFsaWRhdG9yO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIGFscGhhID0gZXhwb3J0cy5hbHBoYSA9IHtcbiAgJ2VuLVVTJzogL15bQS1aXSskL2ksXG4gICdiZy1CRyc6IC9eW9CQLdCvXSskL2ksXG4gICdjcy1DWic6IC9eW0EtWsOBxIzEjsOJxJrDjcWHw5PFmMWgxaTDmsWuw53FvV0rJC9pLFxuICAnZGEtREsnOiAvXltBLVrDhsOYw4VdKyQvaSxcbiAgJ2RlLURFJzogL15bQS1aw4TDlsOcw59dKyQvaSxcbiAgJ2VsLUdSJzogL15bzpEtz4ldKyQvaSxcbiAgJ2VzLUVTJzogL15bQS1aw4HDicONw5HDk8Oaw5xdKyQvaSxcbiAgJ2ZyLUZSJzogL15bQS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhdKyQvaSxcbiAgJ2l0LUlUJzogL15bQS1aw4DDicOIw4zDjsOTw5LDmV0rJC9pLFxuICAnbmItTk8nOiAvXltBLVrDhsOYw4VdKyQvaSxcbiAgJ25sLU5MJzogL15bQS1aw4HDicOLw4/Dk8OWw5zDml0rJC9pLFxuICAnbm4tTk8nOiAvXltBLVrDhsOYw4VdKyQvaSxcbiAgJ2h1LUhVJzogL15bQS1aw4HDicONw5PDlsWQw5rDnMWwXSskL2ksXG4gICdwbC1QTCc6IC9eW0EtWsSExIbEmMWaxYHFg8OTxbvFuV0rJC9pLFxuICAncHQtUFQnOiAvXltBLVrDg8OBw4DDgsOHw4nDisONw5XDk8OUw5rDnF0rJC9pLFxuICAncnUtUlUnOiAvXlvQkC3Qr9CBXSskL2ksXG4gICdzay1TSyc6IC9eW0EtWsOBxIzEjsOJw43Fh8OTxaDFpMOaw53FvcS5xZTEvcOEw5RdKyQvaSxcbiAgJ3NyLVJTQGxhdGluJzogL15bQS1axIzEhsW9xaDEkF0rJC9pLFxuICAnc3ItUlMnOiAvXlvQkC3Qr9CC0IjQidCK0IvQj10rJC9pLFxuICAnc3YtU0UnOiAvXltBLVrDhcOEw5ZdKyQvaSxcbiAgJ3RyLVRSJzogL15bQS1aw4fEnsSwxLHDlsWew5xdKyQvaSxcbiAgJ3VrLVVBJzogL15b0JAt0KnQrNCu0K/QhEnQh9KQ0ZZdKyQvaSxcbiAgJ2t1LUlRJzogL15b2KbYp9io2b7Yqtis2obYrdiu2K/YsdqV2LLamNiz2LTYudi62YHapNmC2qnar9mE2rXZhdmG2Yjbhtq+25XbjNuO2YrYt9ik2KvYotil2KPZg9i22LXYqdi42LBdKyQvaSxcbiAgYXI6IC9eW9ih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52LrZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZsF0rJC9cbn07XG5cbnZhciBhbHBoYW51bWVyaWMgPSBleHBvcnRzLmFscGhhbnVtZXJpYyA9IHtcbiAgJ2VuLVVTJzogL15bMC05QS1aXSskL2ksXG4gICdiZy1CRyc6IC9eWzAtOdCQLdCvXSskL2ksXG4gICdjcy1DWic6IC9eWzAtOUEtWsOBxIzEjsOJxJrDjcWHw5PFmMWgxaTDmsWuw53FvV0rJC9pLFxuICAnZGEtREsnOiAvXlswLTlBLVrDhsOYw4VdKyQvaSxcbiAgJ2RlLURFJzogL15bMC05QS1aw4TDlsOcw59dKyQvaSxcbiAgJ2VsLUdSJzogL15bMC05zpEtz4ldKyQvaSxcbiAgJ2VzLUVTJzogL15bMC05QS1aw4HDicONw5HDk8Oaw5xdKyQvaSxcbiAgJ2ZyLUZSJzogL15bMC05QS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhdKyQvaSxcbiAgJ2l0LUlUJzogL15bMC05QS1aw4DDicOIw4zDjsOTw5LDmV0rJC9pLFxuICAnaHUtSFUnOiAvXlswLTlBLVrDgcOJw43Dk8OWxZDDmsOcxbBdKyQvaSxcbiAgJ25iLU5PJzogL15bMC05QS1aw4bDmMOFXSskL2ksXG4gICdubC1OTCc6IC9eWzAtOUEtWsOBw4nDi8OPw5PDlsOcw5pdKyQvaSxcbiAgJ25uLU5PJzogL15bMC05QS1aw4bDmMOFXSskL2ksXG4gICdwbC1QTCc6IC9eWzAtOUEtWsSExIbEmMWaxYHFg8OTxbvFuV0rJC9pLFxuICAncHQtUFQnOiAvXlswLTlBLVrDg8OBw4DDgsOHw4nDisONw5XDk8OUw5rDnF0rJC9pLFxuICAncnUtUlUnOiAvXlswLTnQkC3Qr9CBXSskL2ksXG4gICdzay1TSyc6IC9eWzAtOUEtWsOBxIzEjsOJw43Fh8OTxaDFpMOaw53FvcS5xZTEvcOEw5RdKyQvaSxcbiAgJ3NyLVJTQGxhdGluJzogL15bMC05QS1axIzEhsW9xaDEkF0rJC9pLFxuICAnc3ItUlMnOiAvXlswLTnQkC3Qr9CC0IjQidCK0IvQj10rJC9pLFxuICAnc3YtU0UnOiAvXlswLTlBLVrDhcOEw5ZdKyQvaSxcbiAgJ3RyLVRSJzogL15bMC05QS1aw4fEnsSwxLHDlsWew5xdKyQvaSxcbiAgJ3VrLVVBJzogL15bMC050JAt0KnQrNCu0K/QhEnQh9KQ0ZZdKyQvaSxcbiAgJ2t1LUlRJzogL15b2aDZodmi2aPZpNml2abZp9mo2akwLTnYptin2KjZvtiq2Kzahtit2K7Yr9ix2pXYstqY2LPYtNi52LrZgdqk2YLaqdqv2YTatdmF2YbZiNuG2r7blduM247Ziti32KTYq9ii2KXYo9mD2LbYtdip2LjYsF0rJC9pLFxuICBhcjogL15b2aDZodmi2aPZpNml2abZp9mo2akwLTnYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti32LjYudi62YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS2bBdKyQvXG59O1xuXG52YXIgZGVjaW1hbCA9IGV4cG9ydHMuZGVjaW1hbCA9IHtcbiAgJ2VuLVVTJzogJy4nLFxuICBhcjogJ9mrJ1xufTtcblxudmFyIGVuZ2xpc2hMb2NhbGVzID0gZXhwb3J0cy5lbmdsaXNoTG9jYWxlcyA9IFsnQVUnLCAnR0InLCAnSEsnLCAnSU4nLCAnTlonLCAnWkEnLCAnWk0nXTtcblxuZm9yICh2YXIgbG9jYWxlLCBpID0gMDsgaSA8IGVuZ2xpc2hMb2NhbGVzLmxlbmd0aDsgaSsrKSB7XG4gIGxvY2FsZSA9ICdlbi0nICsgZW5nbGlzaExvY2FsZXNbaV07XG4gIGFscGhhW2xvY2FsZV0gPSBhbHBoYVsnZW4tVVMnXTtcbiAgYWxwaGFudW1lcmljW2xvY2FsZV0gPSBhbHBoYW51bWVyaWNbJ2VuLVVTJ107XG4gIGRlY2ltYWxbbG9jYWxlXSA9IGRlY2ltYWxbJ2VuLVVTJ107XG59XG5cbi8vIFNvdXJjZTogaHR0cDovL3d3dy5sb2NhbGVwbGFuZXQuY29tL2phdmEvXG52YXIgYXJhYmljTG9jYWxlcyA9IGV4cG9ydHMuYXJhYmljTG9jYWxlcyA9IFsnQUUnLCAnQkgnLCAnRFonLCAnRUcnLCAnSVEnLCAnSk8nLCAnS1cnLCAnTEInLCAnTFknLCAnTUEnLCAnUU0nLCAnUUEnLCAnU0EnLCAnU0QnLCAnU1knLCAnVE4nLCAnWUUnXTtcblxuZm9yICh2YXIgX2xvY2FsZSwgX2kgPSAwOyBfaSA8IGFyYWJpY0xvY2FsZXMubGVuZ3RoOyBfaSsrKSB7XG4gIF9sb2NhbGUgPSAnYXItJyArIGFyYWJpY0xvY2FsZXNbX2ldO1xuICBhbHBoYVtfbG9jYWxlXSA9IGFscGhhLmFyO1xuICBhbHBoYW51bWVyaWNbX2xvY2FsZV0gPSBhbHBoYW51bWVyaWMuYXI7XG4gIGRlY2ltYWxbX2xvY2FsZV0gPSBkZWNpbWFsLmFyO1xufVxuXG4vLyBTb3VyY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY2ltYWxfbWFya1xudmFyIGRvdERlY2ltYWwgPSBleHBvcnRzLmRvdERlY2ltYWwgPSBbXTtcbnZhciBjb21tYURlY2ltYWwgPSBleHBvcnRzLmNvbW1hRGVjaW1hbCA9IFsnYmctQkcnLCAnY3MtQ1onLCAnZGEtREsnLCAnZGUtREUnLCAnZWwtR1InLCAnZXMtRVMnLCAnZnItRlInLCAnaXQtSVQnLCAna3UtSVEnLCAnaHUtSFUnLCAnbmItTk8nLCAnbm4tTk8nLCAnbmwtTkwnLCAncGwtUEwnLCAncHQtUFQnLCAncnUtUlUnLCAnc3ItUlNAbGF0aW4nLCAnc3ItUlMnLCAnc3YtU0UnLCAndHItVFInLCAndWstVUEnXTtcblxuZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgZG90RGVjaW1hbC5sZW5ndGg7IF9pMisrKSB7XG4gIGRlY2ltYWxbZG90RGVjaW1hbFtfaTJdXSA9IGRlY2ltYWxbJ2VuLVVTJ107XG59XG5cbmZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGNvbW1hRGVjaW1hbC5sZW5ndGg7IF9pMysrKSB7XG4gIGRlY2ltYWxbY29tbWFEZWNpbWFsW19pM11dID0gJywnO1xufVxuXG5hbHBoYVsncHQtQlInXSA9IGFscGhhWydwdC1QVCddO1xuYWxwaGFudW1lcmljWydwdC1CUiddID0gYWxwaGFudW1lcmljWydwdC1QVCddO1xuZGVjaW1hbFsncHQtQlInXSA9IGRlY2ltYWxbJ3B0LVBUJ107XG5cbi8vIHNlZSAjODYyXG5hbHBoYVsncGwtUGwnXSA9IGFscGhhWydwbC1QTCddO1xuYWxwaGFudW1lcmljWydwbC1QbCddID0gYWxwaGFudW1lcmljWydwbC1QTCddO1xuZGVjaW1hbFsncGwtUGwnXSA9IGRlY2ltYWxbJ3BsLVBMJ107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYmxhY2tsaXN0O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gYmxhY2tsaXN0KHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKCdbJyArIGNoYXJzICsgJ10rJywgJ2cnKSwgJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gY29udGFpbnM7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX3RvU3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL3RvU3RyaW5nJyk7XG5cbnZhciBfdG9TdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9TdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBjb250YWlucyhzdHIsIGVsZW0pIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIuaW5kZXhPZigoMCwgX3RvU3RyaW5nMi5kZWZhdWx0KShlbGVtKSkgPj0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGVxdWFscztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGVxdWFscyhzdHIsIGNvbXBhcmlzb24pIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIgPT09IGNvbXBhcmlzb247XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBlc2NhcGU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBlc2NhcGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvXCIvZywgJyZxdW90OycpLnJlcGxhY2UoLycvZywgJyYjeDI3OycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JykucmVwbGFjZSgvXFwvL2csICcmI3gyRjsnKS5yZXBsYWNlKC9cXFxcL2csICcmI3g1QzsnKS5yZXBsYWNlKC9gL2csICcmIzk2OycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNBZnRlcjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfdG9EYXRlID0gcmVxdWlyZSgnLi90b0RhdGUnKTtcblxudmFyIF90b0RhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9EYXRlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNBZnRlcihzdHIpIHtcbiAgdmFyIGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFN0cmluZyhuZXcgRGF0ZSgpKTtcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGNvbXBhcmlzb24gPSAoMCwgX3RvRGF0ZTIuZGVmYXVsdCkoZGF0ZSk7XG4gIHZhciBvcmlnaW5hbCA9ICgwLCBfdG9EYXRlMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gISEob3JpZ2luYWwgJiYgY29tcGFyaXNvbiAmJiBvcmlnaW5hbCA+IGNvbXBhcmlzb24pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNBbHBoYTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfYWxwaGEgPSByZXF1aXJlKCcuL2FscGhhJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzQWxwaGEoc3RyKSB7XG4gIHZhciBsb2NhbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdlbi1VUyc7XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChsb2NhbGUgaW4gX2FscGhhLmFscGhhKSB7XG4gICAgcmV0dXJuIF9hbHBoYS5hbHBoYVtsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9jYWxlIFxcJycgKyBsb2NhbGUgKyAnXFwnJyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0FscGhhbnVtZXJpYztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfYWxwaGEgPSByZXF1aXJlKCcuL2FscGhhJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzQWxwaGFudW1lcmljKHN0cikge1xuICB2YXIgbG9jYWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnZW4tVVMnO1xuXG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAobG9jYWxlIGluIF9hbHBoYS5hbHBoYW51bWVyaWMpIHtcbiAgICByZXR1cm4gX2FscGhhLmFscGhhbnVtZXJpY1tsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9jYWxlIFxcJycgKyBsb2NhbGUgKyAnXFwnJyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0FzY2lpO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCAqL1xudmFyIGFzY2lpID0gL15bXFx4MDAtXFx4N0ZdKyQvO1xuLyogZXNsaW50LWVuYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG5cbmZ1bmN0aW9uIGlzQXNjaWkoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gYXNjaWkudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCYXNlNjQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgbm90QmFzZTY0ID0gL1teQS1aMC05K1xcLz1dL2k7XG5cbmZ1bmN0aW9uIGlzQmFzZTY0KHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7XG4gIGlmICghbGVuIHx8IGxlbiAlIDQgIT09IDAgfHwgbm90QmFzZTY0LnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZmlyc3RQYWRkaW5nQ2hhciA9IHN0ci5pbmRleE9mKCc9Jyk7XG4gIHJldHVybiBmaXJzdFBhZGRpbmdDaGFyID09PSAtMSB8fCBmaXJzdFBhZGRpbmdDaGFyID09PSBsZW4gLSAxIHx8IGZpcnN0UGFkZGluZ0NoYXIgPT09IGxlbiAtIDIgJiYgc3RyW2xlbiAtIDFdID09PSAnPSc7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0JlZm9yZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfdG9EYXRlID0gcmVxdWlyZSgnLi90b0RhdGUnKTtcblxudmFyIF90b0RhdGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9EYXRlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNCZWZvcmUoc3RyKSB7XG4gIHZhciBkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBTdHJpbmcobmV3IERhdGUoKSk7XG5cbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBjb21wYXJpc29uID0gKDAsIF90b0RhdGUyLmRlZmF1bHQpKGRhdGUpO1xuICB2YXIgb3JpZ2luYWwgPSAoMCwgX3RvRGF0ZTIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICEhKG9yaWdpbmFsICYmIGNvbXBhcmlzb24gJiYgb3JpZ2luYWwgPCBjb21wYXJpc29uKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQm9vbGVhbjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBbJ3RydWUnLCAnZmFsc2UnLCAnMScsICcwJ10uaW5kZXhPZihzdHIpID49IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaXNCeXRlTGVuZ3RoO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLXJlc3QtcGFyYW1zICovXG5mdW5jdGlvbiBpc0J5dGVMZW5ndGgoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgbWluID0gdm9pZCAwO1xuICB2YXIgbWF4ID0gdm9pZCAwO1xuICBpZiAoKHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvcHRpb25zKSkgPT09ICdvYmplY3QnKSB7XG4gICAgbWluID0gb3B0aW9ucy5taW4gfHwgMDtcbiAgICBtYXggPSBvcHRpb25zLm1heDtcbiAgfSBlbHNlIHtcbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogaXNCeXRlTGVuZ3RoKHN0ciwgbWluIFssIG1heF0pXG4gICAgbWluID0gYXJndW1lbnRzWzFdO1xuICAgIG1heCA9IGFyZ3VtZW50c1syXTtcbiAgfVxuICB2YXIgbGVuID0gZW5jb2RlVVJJKHN0cikuc3BsaXQoLyUuLnwuLykubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGxlbiA+PSBtaW4gJiYgKHR5cGVvZiBtYXggPT09ICd1bmRlZmluZWQnIHx8IGxlbiA8PSBtYXgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNDcmVkaXRDYXJkO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xudmFyIGNyZWRpdENhcmQgPSAvXig/OjRbMC05XXsxMn0oPzpbMC05XXszfSk/fDVbMS01XVswLTldezE0fXwoMjIyWzEtOV18MjJbMy05XVswLTldfDJbMy02XVswLTldezJ9fDI3WzAxXVswLTldfDI3MjApWzAtOV17MTJ9fDYoPzowMTF8NVswLTldWzAtOV0pWzAtOV17MTJ9fDNbNDddWzAtOV17MTN9fDMoPzowWzAtNV18WzY4XVswLTldKVswLTldezExfXwoPzoyMTMxfDE4MDB8MzVcXGR7M30pXFxkezExfXw2WzI3XVswLTldezE0fSkkLztcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG5mdW5jdGlvbiBpc0NyZWRpdENhcmQoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgc2FuaXRpemVkID0gc3RyLnJlcGxhY2UoL1stIF0rL2csICcnKTtcbiAgaWYgKCFjcmVkaXRDYXJkLnRlc3Qoc2FuaXRpemVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgc3VtID0gMDtcbiAgdmFyIGRpZ2l0ID0gdm9pZCAwO1xuICB2YXIgdG1wTnVtID0gdm9pZCAwO1xuICB2YXIgc2hvdWxkRG91YmxlID0gdm9pZCAwO1xuICBmb3IgKHZhciBpID0gc2FuaXRpemVkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgZGlnaXQgPSBzYW5pdGl6ZWQuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICB0bXBOdW0gPSBwYXJzZUludChkaWdpdCwgMTApO1xuICAgIGlmIChzaG91bGREb3VibGUpIHtcbiAgICAgIHRtcE51bSAqPSAyO1xuICAgICAgaWYgKHRtcE51bSA+PSAxMCkge1xuICAgICAgICBzdW0gKz0gdG1wTnVtICUgMTAgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VtICs9IHRtcE51bTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3VtICs9IHRtcE51bTtcbiAgICB9XG4gICAgc2hvdWxkRG91YmxlID0gIXNob3VsZERvdWJsZTtcbiAgfVxuICByZXR1cm4gISEoc3VtICUgMTAgPT09IDAgPyBzYW5pdGl6ZWQgOiBmYWxzZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0N1cnJlbmN5O1xuXG52YXIgX21lcmdlID0gcmVxdWlyZSgnLi91dGlsL21lcmdlJyk7XG5cbnZhciBfbWVyZ2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWVyZ2UpO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gY3VycmVuY3lSZWdleChvcHRpb25zKSB7XG4gIHZhciBkZWNpbWFsX2RpZ2l0cyA9ICdcXFxcZHsnICsgb3B0aW9ucy5kaWdpdHNfYWZ0ZXJfZGVjaW1hbFswXSArICd9JztcbiAgb3B0aW9ucy5kaWdpdHNfYWZ0ZXJfZGVjaW1hbC5mb3JFYWNoKGZ1bmN0aW9uIChkaWdpdCwgaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggIT09IDApIGRlY2ltYWxfZGlnaXRzID0gZGVjaW1hbF9kaWdpdHMgKyAnfFxcXFxkeycgKyBkaWdpdCArICd9JztcbiAgfSk7XG4gIHZhciBzeW1ib2wgPSAnKFxcXFwnICsgb3B0aW9ucy5zeW1ib2wucmVwbGFjZSgvXFwuL2csICdcXFxcLicpICsgJyknICsgKG9wdGlvbnMucmVxdWlyZV9zeW1ib2wgPyAnJyA6ICc/JyksXG4gICAgICBuZWdhdGl2ZSA9ICctPycsXG4gICAgICB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhvdXRfc2VwID0gJ1sxLTldXFxcXGQqJyxcbiAgICAgIHdob2xlX2RvbGxhcl9hbW91bnRfd2l0aF9zZXAgPSAnWzEtOV1cXFxcZHswLDJ9KFxcXFwnICsgb3B0aW9ucy50aG91c2FuZHNfc2VwYXJhdG9yICsgJ1xcXFxkezN9KSonLFxuICAgICAgdmFsaWRfd2hvbGVfZG9sbGFyX2Ftb3VudHMgPSBbJzAnLCB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhvdXRfc2VwLCB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhfc2VwXSxcbiAgICAgIHdob2xlX2RvbGxhcl9hbW91bnQgPSAnKCcgKyB2YWxpZF93aG9sZV9kb2xsYXJfYW1vdW50cy5qb2luKCd8JykgKyAnKT8nLFxuICAgICAgZGVjaW1hbF9hbW91bnQgPSAnKFxcXFwnICsgb3B0aW9ucy5kZWNpbWFsX3NlcGFyYXRvciArICcoJyArIGRlY2ltYWxfZGlnaXRzICsgJykpJyArIChvcHRpb25zLnJlcXVpcmVfZGVjaW1hbCA/ICcnIDogJz8nKTtcbiAgdmFyIHBhdHRlcm4gPSB3aG9sZV9kb2xsYXJfYW1vdW50ICsgKG9wdGlvbnMuYWxsb3dfZGVjaW1hbCB8fCBvcHRpb25zLnJlcXVpcmVfZGVjaW1hbCA/IGRlY2ltYWxfYW1vdW50IDogJycpO1xuXG4gIC8vIGRlZmF1bHQgaXMgbmVnYXRpdmUgc2lnbiBiZWZvcmUgc3ltYm9sLCBidXQgdGhlcmUgYXJlIHR3byBvdGhlciBvcHRpb25zIChiZXNpZGVzIHBhcmVucylcbiAgaWYgKG9wdGlvbnMuYWxsb3dfbmVnYXRpdmVzICYmICFvcHRpb25zLnBhcmVuc19mb3JfbmVnYXRpdmVzKSB7XG4gICAgaWYgKG9wdGlvbnMubmVnYXRpdmVfc2lnbl9hZnRlcl9kaWdpdHMpIHtcbiAgICAgIHBhdHRlcm4gKz0gbmVnYXRpdmU7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLm5lZ2F0aXZlX3NpZ25fYmVmb3JlX2RpZ2l0cykge1xuICAgICAgcGF0dGVybiA9IG5lZ2F0aXZlICsgcGF0dGVybjtcbiAgICB9XG4gIH1cblxuICAvLyBTb3V0aCBBZnJpY2FuIFJhbmQsIGZvciBleGFtcGxlLCB1c2VzIFIgMTIzIChzcGFjZSkgYW5kIFItMTIzIChubyBzcGFjZSlcbiAgaWYgKG9wdGlvbnMuYWxsb3dfbmVnYXRpdmVfc2lnbl9wbGFjZWhvbGRlcikge1xuICAgIHBhdHRlcm4gPSAnKCAoPyFcXFxcLSkpPycgKyBwYXR0ZXJuO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuYWxsb3dfc3BhY2VfYWZ0ZXJfc3ltYm9sKSB7XG4gICAgcGF0dGVybiA9ICcgPycgKyBwYXR0ZXJuO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuYWxsb3dfc3BhY2VfYWZ0ZXJfZGlnaXRzKSB7XG4gICAgcGF0dGVybiArPSAnKCAoPyEkKSk/JztcbiAgfVxuXG4gIGlmIChvcHRpb25zLnN5bWJvbF9hZnRlcl9kaWdpdHMpIHtcbiAgICBwYXR0ZXJuICs9IHN5bWJvbDtcbiAgfSBlbHNlIHtcbiAgICBwYXR0ZXJuID0gc3ltYm9sICsgcGF0dGVybjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmFsbG93X25lZ2F0aXZlcykge1xuICAgIGlmIChvcHRpb25zLnBhcmVuc19mb3JfbmVnYXRpdmVzKSB7XG4gICAgICBwYXR0ZXJuID0gJyhcXFxcKCcgKyBwYXR0ZXJuICsgJ1xcXFwpfCcgKyBwYXR0ZXJuICsgJyknO1xuICAgIH0gZWxzZSBpZiAoIShvcHRpb25zLm5lZ2F0aXZlX3NpZ25fYmVmb3JlX2RpZ2l0cyB8fCBvcHRpb25zLm5lZ2F0aXZlX3NpZ25fYWZ0ZXJfZGlnaXRzKSkge1xuICAgICAgcGF0dGVybiA9IG5lZ2F0aXZlICsgcGF0dGVybjtcbiAgICB9XG4gIH1cblxuICAvLyBlbnN1cmUgdGhlcmUncyBhIGRvbGxhciBhbmQvb3IgZGVjaW1hbCBhbW91bnQsIGFuZCB0aGF0XG4gIC8vIGl0IGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIHNwYWNlIG9yIGEgbmVnYXRpdmUgc2lnbiBmb2xsb3dlZCBieSBhIHNwYWNlXG4gIHJldHVybiBuZXcgUmVnRXhwKCdeKD8hLT8gKSg/PS4qXFxcXGQpJyArIHBhdHRlcm4gKyAnJCcpO1xufVxuXG52YXIgZGVmYXVsdF9jdXJyZW5jeV9vcHRpb25zID0ge1xuICBzeW1ib2w6ICckJyxcbiAgcmVxdWlyZV9zeW1ib2w6IGZhbHNlLFxuICBhbGxvd19zcGFjZV9hZnRlcl9zeW1ib2w6IGZhbHNlLFxuICBzeW1ib2xfYWZ0ZXJfZGlnaXRzOiBmYWxzZSxcbiAgYWxsb3dfbmVnYXRpdmVzOiB0cnVlLFxuICBwYXJlbnNfZm9yX25lZ2F0aXZlczogZmFsc2UsXG4gIG5lZ2F0aXZlX3NpZ25fYmVmb3JlX2RpZ2l0czogZmFsc2UsXG4gIG5lZ2F0aXZlX3NpZ25fYWZ0ZXJfZGlnaXRzOiBmYWxzZSxcbiAgYWxsb3dfbmVnYXRpdmVfc2lnbl9wbGFjZWhvbGRlcjogZmFsc2UsXG4gIHRob3VzYW5kc19zZXBhcmF0b3I6ICcsJyxcbiAgZGVjaW1hbF9zZXBhcmF0b3I6ICcuJyxcbiAgYWxsb3dfZGVjaW1hbDogdHJ1ZSxcbiAgcmVxdWlyZV9kZWNpbWFsOiBmYWxzZSxcbiAgZGlnaXRzX2FmdGVyX2RlY2ltYWw6IFsyXSxcbiAgYWxsb3dfc3BhY2VfYWZ0ZXJfZGlnaXRzOiBmYWxzZVxufTtcblxuZnVuY3Rpb24gaXNDdXJyZW5jeShzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2N1cnJlbmN5X29wdGlvbnMpO1xuICByZXR1cm4gY3VycmVuY3lSZWdleChvcHRpb25zKS50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0RhdGFVUkk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgdmFsaWRNZWRpYVR5cGUgPSAvXlthLXpdK1xcL1thLXowLTlcXC1cXCtdKyQvaTtcblxudmFyIHZhbGlkQXR0cmlidXRlID0gL15bYS16XFwtXSs9W2EtejAtOVxcLV0rJC9pO1xuXG52YXIgdmFsaWREYXRhID0gL15bYS16MC05IVxcJCYnXFwoXFwpXFwqXFwrLDs9XFwtXFwuX346QFxcL1xcPyVcXHNdKiQvaTtcblxuZnVuY3Rpb24gaXNEYXRhVVJJKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGRhdGEgPSBzdHIuc3BsaXQoJywnKTtcbiAgaWYgKGRhdGEubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgYXR0cmlidXRlcyA9IGRhdGEuc2hpZnQoKS50cmltKCkuc3BsaXQoJzsnKTtcbiAgdmFyIHNjaGVtZUFuZE1lZGlhVHlwZSA9IGF0dHJpYnV0ZXMuc2hpZnQoKTtcbiAgaWYgKHNjaGVtZUFuZE1lZGlhVHlwZS5zdWJzdHIoMCwgNSkgIT09ICdkYXRhOicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIG1lZGlhVHlwZSA9IHNjaGVtZUFuZE1lZGlhVHlwZS5zdWJzdHIoNSk7XG4gIGlmIChtZWRpYVR5cGUgIT09ICcnICYmICF2YWxpZE1lZGlhVHlwZS50ZXN0KG1lZGlhVHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGkgPT09IGF0dHJpYnV0ZXMubGVuZ3RoIC0gMSAmJiBhdHRyaWJ1dGVzW2ldLnRvTG93ZXJDYXNlKCkgPT09ICdiYXNlNjQnKSB7XG4gICAgICAvLyBva1xuICAgIH0gZWxzZSBpZiAoIXZhbGlkQXR0cmlidXRlLnRlc3QoYXR0cmlidXRlc1tpXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGRhdGEubGVuZ3RoOyBfaSsrKSB7XG4gICAgaWYgKCF2YWxpZERhdGEudGVzdChkYXRhW19pXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0RlY2ltYWw7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2luY2x1ZGVzID0gcmVxdWlyZSgnLi91dGlsL2luY2x1ZGVzJyk7XG5cbnZhciBfaW5jbHVkZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5jbHVkZXMpO1xuXG52YXIgX2FscGhhID0gcmVxdWlyZSgnLi9hbHBoYScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBkZWNpbWFsUmVnRXhwKG9wdGlvbnMpIHtcbiAgdmFyIHJlZ0V4cCA9IG5ldyBSZWdFeHAoJ15bLStdPyhbMC05XSspPyhcXFxcJyArIF9hbHBoYS5kZWNpbWFsW29wdGlvbnMubG9jYWxlXSArICdbMC05XXsnICsgb3B0aW9ucy5kZWNpbWFsX2RpZ2l0cyArICd9KScgKyAob3B0aW9ucy5mb3JjZV9kZWNpbWFsID8gJycgOiAnPycpICsgJyQnKTtcbiAgcmV0dXJuIHJlZ0V4cDtcbn1cblxudmFyIGRlZmF1bHRfZGVjaW1hbF9vcHRpb25zID0ge1xuICBmb3JjZV9kZWNpbWFsOiBmYWxzZSxcbiAgZGVjaW1hbF9kaWdpdHM6ICcxLCcsXG4gIGxvY2FsZTogJ2VuLVVTJ1xufTtcblxudmFyIGJsYWNrbGlzdCA9IFsnJywgJy0nLCAnKyddO1xuXG5mdW5jdGlvbiBpc0RlY2ltYWwoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZTIuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF9kZWNpbWFsX29wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5sb2NhbGUgaW4gX2FscGhhLmRlY2ltYWwpIHtcbiAgICByZXR1cm4gISgwLCBfaW5jbHVkZXMyLmRlZmF1bHQpKGJsYWNrbGlzdCwgc3RyLnJlcGxhY2UoLyAvZywgJycpKSAmJiBkZWNpbWFsUmVnRXhwKG9wdGlvbnMpLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9jYWxlIFxcJycgKyBvcHRpb25zLmxvY2FsZSArICdcXCcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRGl2aXNpYmxlQnk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX3RvRmxvYXQgPSByZXF1aXJlKCcuL3RvRmxvYXQnKTtcblxudmFyIF90b0Zsb2F0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvRmxvYXQpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc0RpdmlzaWJsZUJ5KHN0ciwgbnVtKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gKDAsIF90b0Zsb2F0Mi5kZWZhdWx0KShzdHIpICUgcGFyc2VJbnQobnVtLCAxMCkgPT09IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0VtYWlsO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF9tZXJnZSA9IHJlcXVpcmUoJy4vdXRpbC9tZXJnZScpO1xuXG52YXIgX21lcmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlKTtcblxudmFyIF9pc0J5dGVMZW5ndGggPSByZXF1aXJlKCcuL2lzQnl0ZUxlbmd0aCcpO1xuXG52YXIgX2lzQnl0ZUxlbmd0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0J5dGVMZW5ndGgpO1xuXG52YXIgX2lzRlFETiA9IHJlcXVpcmUoJy4vaXNGUUROJyk7XG5cbnZhciBfaXNGUUROMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRlFETik7XG5cbnZhciBfaXNJUCA9IHJlcXVpcmUoJy4vaXNJUCcpO1xuXG52YXIgX2lzSVAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJUCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X2VtYWlsX29wdGlvbnMgPSB7XG4gIGFsbG93X2Rpc3BsYXlfbmFtZTogZmFsc2UsXG4gIHJlcXVpcmVfZGlzcGxheV9uYW1lOiBmYWxzZSxcbiAgYWxsb3dfdXRmOF9sb2NhbF9wYXJ0OiB0cnVlLFxuICByZXF1aXJlX3RsZDogdHJ1ZVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCAqL1xudmFyIGRpc3BsYXlOYW1lID0gL15bYS16XFxkISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5cXC5cXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdK1thLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9flxcLFxcLlxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRlxcc10qPCguKyk+JC9pO1xudmFyIGVtYWlsVXNlclBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl0rJC9pO1xudmFyIGdtYWlsVXNlclBhcnQgPSAvXlthLXpcXGRdKyQvO1xudmFyIHF1b3RlZEVtYWlsVXNlciA9IC9eKFtcXHNcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdlXXwoXFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl0pKSokL2k7XG52YXIgZW1haWxVc2VyVXRmOFBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9flxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0rJC9pO1xudmFyIHF1b3RlZEVtYWlsVXNlclV0ZjggPSAvXihbXFxzXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3ZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZVxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl18KFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkqJC9pO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cblxuZnVuY3Rpb24gaXNFbWFpbChzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2VtYWlsX29wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zLnJlcXVpcmVfZGlzcGxheV9uYW1lIHx8IG9wdGlvbnMuYWxsb3dfZGlzcGxheV9uYW1lKSB7XG4gICAgdmFyIGRpc3BsYXlfZW1haWwgPSBzdHIubWF0Y2goZGlzcGxheU5hbWUpO1xuICAgIGlmIChkaXNwbGF5X2VtYWlsKSB7XG4gICAgICBzdHIgPSBkaXNwbGF5X2VtYWlsWzFdO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZXF1aXJlX2Rpc3BsYXlfbmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgnQCcpO1xuICB2YXIgZG9tYWluID0gcGFydHMucG9wKCk7XG4gIHZhciB1c2VyID0gcGFydHMuam9pbignQCcpO1xuXG4gIHZhciBsb3dlcl9kb21haW4gPSBkb21haW4udG9Mb3dlckNhc2UoKTtcblxuICBpZiAob3B0aW9ucy5kb21haW5fc3BlY2lmaWNfdmFsaWRhdGlvbiAmJiAobG93ZXJfZG9tYWluID09PSAnZ21haWwuY29tJyB8fCBsb3dlcl9kb21haW4gPT09ICdnb29nbGVtYWlsLmNvbScpKSB7XG4gICAgLypcbiAgICAgIFByZXZpb3VzbHkgd2UgcmVtb3ZlZCBkb3RzIGZvciBnbWFpbCBhZGRyZXNzZXMgYmVmb3JlIHZhbGlkYXRpbmcuXG4gICAgICBUaGlzIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgYWxsb3dzIGBtdWx0aXBsZS4uZG90c0BnbWFpbC5jb21gXG4gICAgICB0byBiZSByZXBvcnRlZCBhcyB2YWxpZCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgIEdtYWlsIG9ubHkgbm9ybWFsaXplcyBzaW5nbGUgZG90cywgcmVtb3ZpbmcgdGhlbSBmcm9tIGhlcmUgaXMgcG9pbnRsZXNzLFxuICAgICAgc2hvdWxkIGJlIGRvbmUgaW4gbm9ybWFsaXplRW1haWxcbiAgICAqL1xuICAgIHVzZXIgPSB1c2VyLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBSZW1vdmluZyBzdWItYWRkcmVzcyBmcm9tIHVzZXJuYW1lIGJlZm9yZSBnbWFpbCB2YWxpZGF0aW9uXG4gICAgdmFyIHVzZXJuYW1lID0gdXNlci5zcGxpdCgnKycpWzBdO1xuXG4gICAgLy8gRG90cyBhcmUgbm90IGluY2x1ZGVkIGluIGdtYWlsIGxlbmd0aCByZXN0cmljdGlvblxuICAgIGlmICghKDAsIF9pc0J5dGVMZW5ndGgyLmRlZmF1bHQpKHVzZXJuYW1lLnJlcGxhY2UoJy4nLCAnJyksIHsgbWluOiA2LCBtYXg6IDMwIH0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIF91c2VyX3BhcnRzID0gdXNlcm5hbWUuc3BsaXQoJy4nKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IF91c2VyX3BhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWdtYWlsVXNlclBhcnQudGVzdChfdXNlcl9wYXJ0c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghKDAsIF9pc0J5dGVMZW5ndGgyLmRlZmF1bHQpKHVzZXIsIHsgbWF4OiA2NCB9KSB8fCAhKDAsIF9pc0J5dGVMZW5ndGgyLmRlZmF1bHQpKGRvbWFpbiwgeyBtYXg6IDI1NCB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKDAsIF9pc0ZRRE4yLmRlZmF1bHQpKGRvbWFpbiwgeyByZXF1aXJlX3RsZDogb3B0aW9ucy5yZXF1aXJlX3RsZCB9KSkge1xuICAgIGlmICghb3B0aW9ucy5hbGxvd19pcF9kb21haW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoISgwLCBfaXNJUDIuZGVmYXVsdCkoZG9tYWluKSkge1xuICAgICAgaWYgKCFkb21haW4uc3RhcnRzV2l0aCgnWycpIHx8ICFkb21haW4uZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBub0JyYWNrZXRkb21haW4gPSBkb21haW4uc3Vic3RyKDEsIGRvbWFpbi5sZW5ndGggLSAyKTtcblxuICAgICAgaWYgKG5vQnJhY2tldGRvbWFpbi5sZW5ndGggPT09IDAgfHwgISgwLCBfaXNJUDIuZGVmYXVsdCkobm9CcmFja2V0ZG9tYWluKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHVzZXJbMF0gPT09ICdcIicpIHtcbiAgICB1c2VyID0gdXNlci5zbGljZSgxLCB1c2VyLmxlbmd0aCAtIDEpO1xuICAgIHJldHVybiBvcHRpb25zLmFsbG93X3V0ZjhfbG9jYWxfcGFydCA/IHF1b3RlZEVtYWlsVXNlclV0ZjgudGVzdCh1c2VyKSA6IHF1b3RlZEVtYWlsVXNlci50ZXN0KHVzZXIpO1xuICB9XG5cbiAgdmFyIHBhdHRlcm4gPSBvcHRpb25zLmFsbG93X3V0ZjhfbG9jYWxfcGFydCA/IGVtYWlsVXNlclV0ZjhQYXJ0IDogZW1haWxVc2VyUGFydDtcblxuICB2YXIgdXNlcl9wYXJ0cyA9IHVzZXIuc3BsaXQoJy4nKTtcbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHVzZXJfcGFydHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgaWYgKCFwYXR0ZXJuLnRlc3QodXNlcl9wYXJ0c1tfaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0VtcHR5O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxudmFyIF9tZXJnZSA9IHJlcXVpcmUoJy4vdXRpbC9tZXJnZScpO1xuXG52YXIgX21lcmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRlZmF1bHRfaXNfZW1wdHlfb3B0aW9ucyA9IHtcbiAgaWdub3JlX3doaXRlc3BhY2U6IGZhbHNlXG59O1xuXG5mdW5jdGlvbiBpc0VtcHR5KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UyLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfaXNfZW1wdHlfb3B0aW9ucyk7XG5cbiAgcmV0dXJuIChvcHRpb25zLmlnbm9yZV93aGl0ZXNwYWNlID8gc3RyLnRyaW0oKS5sZW5ndGggOiBzdHIubGVuZ3RoKSA9PT0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRlFETjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfbWVyZ2UgPSByZXF1aXJlKCcuL3V0aWwvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0X2ZxZG5fb3B0aW9ucyA9IHtcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIGFsbG93X3VuZGVyc2NvcmVzOiBmYWxzZSxcbiAgYWxsb3dfdHJhaWxpbmdfZG90OiBmYWxzZVxufTtcblxuZnVuY3Rpb24gaXNGUUROKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UyLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZnFkbl9vcHRpb25zKTtcblxuICAvKiBSZW1vdmUgdGhlIG9wdGlvbmFsIHRyYWlsaW5nIGRvdCBiZWZvcmUgY2hlY2tpbmcgdmFsaWRpdHkgKi9cbiAgaWYgKG9wdGlvbnMuYWxsb3dfdHJhaWxpbmdfZG90ICYmIHN0cltzdHIubGVuZ3RoIC0gMV0gPT09ICcuJykge1xuICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpO1xuICB9XG4gIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgnLicpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHBhcnRzW2ldLmxlbmd0aCA+IDYzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChvcHRpb25zLnJlcXVpcmVfdGxkKSB7XG4gICAgdmFyIHRsZCA9IHBhcnRzLnBvcCgpO1xuICAgIGlmICghcGFydHMubGVuZ3RoIHx8ICEvXihbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH18eG5bYS16MC05LV17Mix9KSQvaS50ZXN0KHRsZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gZGlzYWxsb3cgc3BhY2VzXG4gICAgaWYgKC9bXFxzXFx1MjAwMi1cXHUyMDBCXFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1RkVGRlxcdURCNDBcXHVEQzIwXS8udGVzdCh0bGQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIHBhcnQsIF9pID0gMDsgX2kgPCBwYXJ0cy5sZW5ndGg7IF9pKyspIHtcbiAgICBwYXJ0ID0gcGFydHNbX2ldO1xuICAgIGlmIChvcHRpb25zLmFsbG93X3VuZGVyc2NvcmVzKSB7XG4gICAgICBwYXJ0ID0gcGFydC5yZXBsYWNlKC9fL2csICcnKTtcbiAgICB9XG4gICAgaWYgKCEvXlthLXpcXHUwMGExLVxcdWZmZmYwLTktXSskL2kudGVzdChwYXJ0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBkaXNhbGxvdyBmdWxsLXdpZHRoIGNoYXJzXG4gICAgaWYgKC9bXFx1ZmYwMS1cXHVmZjVlXS8udGVzdChwYXJ0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocGFydFswXSA9PT0gJy0nIHx8IHBhcnRbcGFydC5sZW5ndGggLSAxXSA9PT0gJy0nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNGbG9hdDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfYWxwaGEgPSByZXF1aXJlKCcuL2FscGhhJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzRmxvYXQoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGZsb2F0ID0gbmV3IFJlZ0V4cCgnXig/OlstK10pPyg/OlswLTldKyk/KD86XFxcXCcgKyAob3B0aW9ucy5sb2NhbGUgPyBfYWxwaGEuZGVjaW1hbFtvcHRpb25zLmxvY2FsZV0gOiAnLicpICsgJ1swLTldKik/KD86W2VFXVtcXFxcK1xcXFwtXT8oPzpbMC05XSspKT8kJyk7XG4gIGlmIChzdHIgPT09ICcnIHx8IHN0ciA9PT0gJy4nIHx8IHN0ciA9PT0gJy0nIHx8IHN0ciA9PT0gJysnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB2YWx1ZSA9IHBhcnNlRmxvYXQoc3RyLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgcmV0dXJuIGZsb2F0LnRlc3Qoc3RyKSAmJiAoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ21pbicpIHx8IHZhbHVlID49IG9wdGlvbnMubWluKSAmJiAoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ21heCcpIHx8IHZhbHVlIDw9IG9wdGlvbnMubWF4KSAmJiAoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2x0JykgfHwgdmFsdWUgPCBvcHRpb25zLmx0KSAmJiAoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2d0JykgfHwgdmFsdWUgPiBvcHRpb25zLmd0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZnVsbFdpZHRoID0gdW5kZWZpbmVkO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNGdWxsV2lkdGg7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZnVsbFdpZHRoID0gZXhwb3J0cy5mdWxsV2lkdGggPSAvW15cXHUwMDIwLVxcdTAwN0VcXHVGRjYxLVxcdUZGOUZcXHVGRkEwLVxcdUZGRENcXHVGRkU4LVxcdUZGRUUwLTlhLXpBLVpdLztcblxuZnVuY3Rpb24gaXNGdWxsV2lkdGgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gZnVsbFdpZHRoLnRlc3Qoc3RyKTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmhhbGZXaWR0aCA9IHVuZGVmaW5lZDtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSGFsZldpZHRoO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGhhbGZXaWR0aCA9IGV4cG9ydHMuaGFsZldpZHRoID0gL1tcXHUwMDIwLVxcdTAwN0VcXHVGRjYxLVxcdUZGOUZcXHVGRkEwLVxcdUZGRENcXHVGRkU4LVxcdUZGRUUwLTlhLXpBLVpdLztcblxuZnVuY3Rpb24gaXNIYWxmV2lkdGgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gaGFsZldpZHRoLnRlc3Qoc3RyKTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0hhc2g7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgbGVuZ3RocyA9IHtcbiAgbWQ1OiAzMixcbiAgbWQ0OiAzMixcbiAgc2hhMTogNDAsXG4gIHNoYTI1NjogNjQsXG4gIHNoYTM4NDogOTYsXG4gIHNoYTUxMjogMTI4LFxuICByaXBlbWQxMjg6IDMyLFxuICByaXBlbWQxNjA6IDQwLFxuICB0aWdlcjEyODogMzIsXG4gIHRpZ2VyMTYwOiA0MCxcbiAgdGlnZXIxOTI6IDQ4LFxuICBjcmMzMjogOCxcbiAgY3JjMzJiOiA4XG59O1xuXG5mdW5jdGlvbiBpc0hhc2goc3RyLCBhbGdvcml0aG0pIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBoYXNoID0gbmV3IFJlZ0V4cCgnXlthLWYwLTldeycgKyBsZW5ndGhzW2FsZ29yaXRobV0gKyAnfSQnKTtcbiAgcmV0dXJuIGhhc2gudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIZXhDb2xvcjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBoZXhjb2xvciA9IC9eIz8oWzAtOUEtRl17M318WzAtOUEtRl17Nn0pJC9pO1xuXG5mdW5jdGlvbiBpc0hleENvbG9yKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGhleGNvbG9yLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSGV4YWRlY2ltYWw7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaGV4YWRlY2ltYWwgPSAvXlswLTlBLUZdKyQvaTtcblxuZnVuY3Rpb24gaXNIZXhhZGVjaW1hbChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBoZXhhZGVjaW1hbC50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lQO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGlwdjRNYXliZSA9IC9eKFxcZHsxLDN9KVxcLihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KSQvO1xudmFyIGlwdjZCbG9jayA9IC9eWzAtOUEtRl17MSw0fSQvaTtcblxuZnVuY3Rpb24gaXNJUChzdHIpIHtcbiAgdmFyIHZlcnNpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuXG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICBpZiAoIXZlcnNpb24pIHtcbiAgICByZXR1cm4gaXNJUChzdHIsIDQpIHx8IGlzSVAoc3RyLCA2KTtcbiAgfSBlbHNlIGlmICh2ZXJzaW9uID09PSAnNCcpIHtcbiAgICBpZiAoIWlwdjRNYXliZS50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCcuJykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJ0c1szXSA8PSAyNTU7XG4gIH0gZWxzZSBpZiAodmVyc2lvbiA9PT0gJzYnKSB7XG4gICAgdmFyIGJsb2NrcyA9IHN0ci5zcGxpdCgnOicpO1xuICAgIHZhciBmb3VuZE9taXNzaW9uQmxvY2sgPSBmYWxzZTsgLy8gbWFya2VyIHRvIGluZGljYXRlIDo6XG5cbiAgICAvLyBBdCBsZWFzdCBzb21lIE9TIGFjY2VwdCB0aGUgbGFzdCAzMiBiaXRzIG9mIGFuIElQdjYgYWRkcmVzc1xuICAgIC8vIChpLmUuIDIgb2YgdGhlIGJsb2NrcykgaW4gSVB2NCBub3RhdGlvbiwgYW5kIFJGQyAzNDkzIHNheXNcbiAgICAvLyB0aGF0ICc6OmZmZmY6YS5iLmMuZCcgaXMgdmFsaWQgZm9yIElQdjQtbWFwcGVkIElQdjYgYWRkcmVzc2VzLFxuICAgIC8vIGFuZCAnOjphLmIuYy5kJyBpcyBkZXByZWNhdGVkLCBidXQgYWxzbyB2YWxpZC5cbiAgICB2YXIgZm91bmRJUHY0VHJhbnNpdGlvbkJsb2NrID0gaXNJUChibG9ja3NbYmxvY2tzLmxlbmd0aCAtIDFdLCA0KTtcbiAgICB2YXIgZXhwZWN0ZWROdW1iZXJPZkJsb2NrcyA9IGZvdW5kSVB2NFRyYW5zaXRpb25CbG9jayA/IDcgOiA4O1xuXG4gICAgaWYgKGJsb2Nrcy5sZW5ndGggPiBleHBlY3RlZE51bWJlck9mQmxvY2tzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGluaXRpYWwgb3IgZmluYWwgOjpcbiAgICBpZiAoc3RyID09PSAnOjonKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0ci5zdWJzdHIoMCwgMikgPT09ICc6OicpIHtcbiAgICAgIGJsb2Nrcy5zaGlmdCgpO1xuICAgICAgYmxvY2tzLnNoaWZ0KCk7XG4gICAgICBmb3VuZE9taXNzaW9uQmxvY2sgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gMikgPT09ICc6OicpIHtcbiAgICAgIGJsb2Nrcy5wb3AoKTtcbiAgICAgIGJsb2Nrcy5wb3AoKTtcbiAgICAgIGZvdW5kT21pc3Npb25CbG9jayA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3MubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8vIHRlc3QgZm9yIGEgOjogd2hpY2ggY2FuIG5vdCBiZSBhdCB0aGUgc3RyaW5nIHN0YXJ0L2VuZFxuICAgICAgLy8gc2luY2UgdGhvc2UgY2FzZXMgaGF2ZSBiZWVuIGhhbmRsZWQgYWJvdmVcbiAgICAgIGlmIChibG9ja3NbaV0gPT09ICcnICYmIGkgPiAwICYmIGkgPCBibG9ja3MubGVuZ3RoIC0gMSkge1xuICAgICAgICBpZiAoZm91bmRPbWlzc2lvbkJsb2NrKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBtdWx0aXBsZSA6OiBpbiBhZGRyZXNzXG4gICAgICAgIH1cbiAgICAgICAgZm91bmRPbWlzc2lvbkJsb2NrID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZm91bmRJUHY0VHJhbnNpdGlvbkJsb2NrICYmIGkgPT09IGJsb2Nrcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIC8vIGl0IGhhcyBiZWVuIGNoZWNrZWQgYmVmb3JlIHRoYXQgdGhlIGxhc3RcbiAgICAgICAgLy8gYmxvY2sgaXMgYSB2YWxpZCBJUHY0IGFkZHJlc3NcbiAgICAgIH0gZWxzZSBpZiAoIWlwdjZCbG9jay50ZXN0KGJsb2Nrc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm91bmRPbWlzc2lvbkJsb2NrKSB7XG4gICAgICByZXR1cm4gYmxvY2tzLmxlbmd0aCA+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tzLmxlbmd0aCA9PT0gZXhwZWN0ZWROdW1iZXJPZkJsb2NrcztcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lQUmFuZ2U7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2lzSVAgPSByZXF1aXJlKCcuL2lzSVAnKTtcblxudmFyIF9pc0lQMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSVApO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgc3VibmV0TWF5YmUgPSAvXlxcZHsxLDJ9JC87XG5cbmZ1bmN0aW9uIGlzSVBSYW5nZShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgnLycpO1xuXG4gIC8vIHBhcnRzWzBdIC0+IGlwLCBwYXJ0c1sxXSAtPiBzdWJuZXRcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghc3VibmV0TWF5YmUudGVzdChwYXJ0c1sxXSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBEaXNhbGxvdyBwcmVjZWRpbmcgMCBpLmUuIDAxLCAwMiwgLi4uXG4gIGlmIChwYXJ0c1sxXS5sZW5ndGggPiAxICYmIHBhcnRzWzFdLnN0YXJ0c1dpdGgoJzAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAoMCwgX2lzSVAyLmRlZmF1bHQpKHBhcnRzWzBdLCA0KSAmJiBwYXJ0c1sxXSA8PSAzMiAmJiBwYXJ0c1sxXSA+PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU0JOO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGlzYm4xME1heWJlID0gL14oPzpbMC05XXs5fVh8WzAtOV17MTB9KSQvO1xudmFyIGlzYm4xM01heWJlID0gL14oPzpbMC05XXsxM30pJC87XG52YXIgZmFjdG9yID0gWzEsIDNdO1xuXG5mdW5jdGlvbiBpc0lTQk4oc3RyKSB7XG4gIHZhciB2ZXJzaW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJztcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmVyc2lvbiA9IFN0cmluZyh2ZXJzaW9uKTtcbiAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgcmV0dXJuIGlzSVNCTihzdHIsIDEwKSB8fCBpc0lTQk4oc3RyLCAxMyk7XG4gIH1cbiAgdmFyIHNhbml0aXplZCA9IHN0ci5yZXBsYWNlKC9bXFxzLV0rL2csICcnKTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgdmFyIGkgPSB2b2lkIDA7XG4gIGlmICh2ZXJzaW9uID09PSAnMTAnKSB7XG4gICAgaWYgKCFpc2JuMTBNYXliZS50ZXN0KHNhbml0aXplZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IDk7IGkrKykge1xuICAgICAgY2hlY2tzdW0gKz0gKGkgKyAxKSAqIHNhbml0aXplZC5jaGFyQXQoaSk7XG4gICAgfVxuICAgIGlmIChzYW5pdGl6ZWQuY2hhckF0KDkpID09PSAnWCcpIHtcbiAgICAgIGNoZWNrc3VtICs9IDEwICogMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoZWNrc3VtICs9IDEwICogc2FuaXRpemVkLmNoYXJBdCg5KTtcbiAgICB9XG4gICAgaWYgKGNoZWNrc3VtICUgMTEgPT09IDApIHtcbiAgICAgIHJldHVybiAhIXNhbml0aXplZDtcbiAgICB9XG4gIH0gZWxzZSBpZiAodmVyc2lvbiA9PT0gJzEzJykge1xuICAgIGlmICghaXNibjEzTWF5YmUudGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICBjaGVja3N1bSArPSBmYWN0b3JbaSAlIDJdICogc2FuaXRpemVkLmNoYXJBdChpKTtcbiAgICB9XG4gICAgaWYgKHNhbml0aXplZC5jaGFyQXQoMTIpIC0gKDEwIC0gY2hlY2tzdW0gJSAxMCkgJSAxMCA9PT0gMCkge1xuICAgICAgcmV0dXJuICEhc2FuaXRpemVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lTSU47XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaXNpbiA9IC9eW0EtWl17Mn1bMC05QS1aXXs5fVswLTldJC87XG5cbmZ1bmN0aW9uIGlzSVNJTihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmICghaXNpbi50ZXN0KHN0cikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgY2hlY2tzdW1TdHIgPSBzdHIucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24gKGNoYXJhY3Rlcikge1xuICAgIHJldHVybiBwYXJzZUludChjaGFyYWN0ZXIsIDM2KTtcbiAgfSk7XG5cbiAgdmFyIHN1bSA9IDA7XG4gIHZhciBkaWdpdCA9IHZvaWQgMDtcbiAgdmFyIHRtcE51bSA9IHZvaWQgMDtcbiAgdmFyIHNob3VsZERvdWJsZSA9IHRydWU7XG4gIGZvciAodmFyIGkgPSBjaGVja3N1bVN0ci5sZW5ndGggLSAyOyBpID49IDA7IGktLSkge1xuICAgIGRpZ2l0ID0gY2hlY2tzdW1TdHIuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICB0bXBOdW0gPSBwYXJzZUludChkaWdpdCwgMTApO1xuICAgIGlmIChzaG91bGREb3VibGUpIHtcbiAgICAgIHRtcE51bSAqPSAyO1xuICAgICAgaWYgKHRtcE51bSA+PSAxMCkge1xuICAgICAgICBzdW0gKz0gdG1wTnVtICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1bSArPSB0bXBOdW07XG4gICAgfVxuICAgIHNob3VsZERvdWJsZSA9ICFzaG91bGREb3VibGU7XG4gIH1cblxuICByZXR1cm4gcGFyc2VJbnQoc3RyLnN1YnN0cihzdHIubGVuZ3RoIC0gMSksIDEwKSA9PT0gKDEwMDAwIC0gc3VtKSAlIDEwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU08zMTY2MUFscGhhMjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfaW5jbHVkZXMgPSByZXF1aXJlKCcuL3V0aWwvaW5jbHVkZXMnKTtcblxudmFyIF9pbmNsdWRlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmNsdWRlcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8vIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzMxNjYtMV9hbHBoYS0yXG52YXIgdmFsaWRJU08zMTY2MUFscGhhMkNvdW50cmllc0NvZGVzID0gWydBRCcsICdBRScsICdBRicsICdBRycsICdBSScsICdBTCcsICdBTScsICdBTycsICdBUScsICdBUicsICdBUycsICdBVCcsICdBVScsICdBVycsICdBWCcsICdBWicsICdCQScsICdCQicsICdCRCcsICdCRScsICdCRicsICdCRycsICdCSCcsICdCSScsICdCSicsICdCTCcsICdCTScsICdCTicsICdCTycsICdCUScsICdCUicsICdCUycsICdCVCcsICdCVicsICdCVycsICdCWScsICdCWicsICdDQScsICdDQycsICdDRCcsICdDRicsICdDRycsICdDSCcsICdDSScsICdDSycsICdDTCcsICdDTScsICdDTicsICdDTycsICdDUicsICdDVScsICdDVicsICdDVycsICdDWCcsICdDWScsICdDWicsICdERScsICdESicsICdESycsICdETScsICdETycsICdEWicsICdFQycsICdFRScsICdFRycsICdFSCcsICdFUicsICdFUycsICdFVCcsICdGSScsICdGSicsICdGSycsICdGTScsICdGTycsICdGUicsICdHQScsICdHQicsICdHRCcsICdHRScsICdHRicsICdHRycsICdHSCcsICdHSScsICdHTCcsICdHTScsICdHTicsICdHUCcsICdHUScsICdHUicsICdHUycsICdHVCcsICdHVScsICdHVycsICdHWScsICdISycsICdITScsICdITicsICdIUicsICdIVCcsICdIVScsICdJRCcsICdJRScsICdJTCcsICdJTScsICdJTicsICdJTycsICdJUScsICdJUicsICdJUycsICdJVCcsICdKRScsICdKTScsICdKTycsICdKUCcsICdLRScsICdLRycsICdLSCcsICdLSScsICdLTScsICdLTicsICdLUCcsICdLUicsICdLVycsICdLWScsICdLWicsICdMQScsICdMQicsICdMQycsICdMSScsICdMSycsICdMUicsICdMUycsICdMVCcsICdMVScsICdMVicsICdMWScsICdNQScsICdNQycsICdNRCcsICdNRScsICdNRicsICdNRycsICdNSCcsICdNSycsICdNTCcsICdNTScsICdNTicsICdNTycsICdNUCcsICdNUScsICdNUicsICdNUycsICdNVCcsICdNVScsICdNVicsICdNVycsICdNWCcsICdNWScsICdNWicsICdOQScsICdOQycsICdORScsICdORicsICdORycsICdOSScsICdOTCcsICdOTycsICdOUCcsICdOUicsICdOVScsICdOWicsICdPTScsICdQQScsICdQRScsICdQRicsICdQRycsICdQSCcsICdQSycsICdQTCcsICdQTScsICdQTicsICdQUicsICdQUycsICdQVCcsICdQVycsICdQWScsICdRQScsICdSRScsICdSTycsICdSUycsICdSVScsICdSVycsICdTQScsICdTQicsICdTQycsICdTRCcsICdTRScsICdTRycsICdTSCcsICdTSScsICdTSicsICdTSycsICdTTCcsICdTTScsICdTTicsICdTTycsICdTUicsICdTUycsICdTVCcsICdTVicsICdTWCcsICdTWScsICdTWicsICdUQycsICdURCcsICdURicsICdURycsICdUSCcsICdUSicsICdUSycsICdUTCcsICdUTScsICdUTicsICdUTycsICdUUicsICdUVCcsICdUVicsICdUVycsICdUWicsICdVQScsICdVRycsICdVTScsICdVUycsICdVWScsICdVWicsICdWQScsICdWQycsICdWRScsICdWRycsICdWSScsICdWTicsICdWVScsICdXRicsICdXUycsICdZRScsICdZVCcsICdaQScsICdaTScsICdaVyddO1xuXG5mdW5jdGlvbiBpc0lTTzMxNjYxQWxwaGEyKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICgwLCBfaW5jbHVkZXMyLmRlZmF1bHQpKHZhbGlkSVNPMzE2NjFBbHBoYTJDb3VudHJpZXNDb2Rlcywgc3RyLnRvVXBwZXJDYXNlKCkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU08zMTY2MUFscGhhMztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfaW5jbHVkZXMgPSByZXF1aXJlKCcuL3V0aWwvaW5jbHVkZXMnKTtcblxudmFyIF9pbmNsdWRlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmNsdWRlcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8vIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzMxNjYtMV9hbHBoYS0zXG52YXIgdmFsaWRJU08zMTY2MUFscGhhM0NvdW50cmllc0NvZGVzID0gWydBRkcnLCAnQUxBJywgJ0FMQicsICdEWkEnLCAnQVNNJywgJ0FORCcsICdBR08nLCAnQUlBJywgJ0FUQScsICdBVEcnLCAnQVJHJywgJ0FSTScsICdBQlcnLCAnQVVTJywgJ0FVVCcsICdBWkUnLCAnQkhTJywgJ0JIUicsICdCR0QnLCAnQlJCJywgJ0JMUicsICdCRUwnLCAnQkxaJywgJ0JFTicsICdCTVUnLCAnQlROJywgJ0JPTCcsICdCRVMnLCAnQklIJywgJ0JXQScsICdCVlQnLCAnQlJBJywgJ0lPVCcsICdCUk4nLCAnQkdSJywgJ0JGQScsICdCREknLCAnS0hNJywgJ0NNUicsICdDQU4nLCAnQ1BWJywgJ0NZTScsICdDQUYnLCAnVENEJywgJ0NITCcsICdDSE4nLCAnQ1hSJywgJ0NDSycsICdDT0wnLCAnQ09NJywgJ0NPRycsICdDT0QnLCAnQ09LJywgJ0NSSScsICdDSVYnLCAnSFJWJywgJ0NVQicsICdDVVcnLCAnQ1lQJywgJ0NaRScsICdETksnLCAnREpJJywgJ0RNQScsICdET00nLCAnRUNVJywgJ0VHWScsICdTTFYnLCAnR05RJywgJ0VSSScsICdFU1QnLCAnRVRIJywgJ0ZMSycsICdGUk8nLCAnRkpJJywgJ0ZJTicsICdGUkEnLCAnR1VGJywgJ1BZRicsICdBVEYnLCAnR0FCJywgJ0dNQicsICdHRU8nLCAnREVVJywgJ0dIQScsICdHSUInLCAnR1JDJywgJ0dSTCcsICdHUkQnLCAnR0xQJywgJ0dVTScsICdHVE0nLCAnR0dZJywgJ0dJTicsICdHTkInLCAnR1VZJywgJ0hUSScsICdITUQnLCAnVkFUJywgJ0hORCcsICdIS0cnLCAnSFVOJywgJ0lTTCcsICdJTkQnLCAnSUROJywgJ0lSTicsICdJUlEnLCAnSVJMJywgJ0lNTicsICdJU1InLCAnSVRBJywgJ0pBTScsICdKUE4nLCAnSkVZJywgJ0pPUicsICdLQVonLCAnS0VOJywgJ0tJUicsICdQUksnLCAnS09SJywgJ0tXVCcsICdLR1onLCAnTEFPJywgJ0xWQScsICdMQk4nLCAnTFNPJywgJ0xCUicsICdMQlknLCAnTElFJywgJ0xUVScsICdMVVgnLCAnTUFDJywgJ01LRCcsICdNREcnLCAnTVdJJywgJ01ZUycsICdNRFYnLCAnTUxJJywgJ01MVCcsICdNSEwnLCAnTVRRJywgJ01SVCcsICdNVVMnLCAnTVlUJywgJ01FWCcsICdGU00nLCAnTURBJywgJ01DTycsICdNTkcnLCAnTU5FJywgJ01TUicsICdNQVInLCAnTU9aJywgJ01NUicsICdOQU0nLCAnTlJVJywgJ05QTCcsICdOTEQnLCAnTkNMJywgJ05aTCcsICdOSUMnLCAnTkVSJywgJ05HQScsICdOSVUnLCAnTkZLJywgJ01OUCcsICdOT1InLCAnT01OJywgJ1BBSycsICdQTFcnLCAnUFNFJywgJ1BBTicsICdQTkcnLCAnUFJZJywgJ1BFUicsICdQSEwnLCAnUENOJywgJ1BPTCcsICdQUlQnLCAnUFJJJywgJ1FBVCcsICdSRVUnLCAnUk9VJywgJ1JVUycsICdSV0EnLCAnQkxNJywgJ1NITicsICdLTkEnLCAnTENBJywgJ01BRicsICdTUE0nLCAnVkNUJywgJ1dTTScsICdTTVInLCAnU1RQJywgJ1NBVScsICdTRU4nLCAnU1JCJywgJ1NZQycsICdTTEUnLCAnU0dQJywgJ1NYTScsICdTVksnLCAnU1ZOJywgJ1NMQicsICdTT00nLCAnWkFGJywgJ1NHUycsICdTU0QnLCAnRVNQJywgJ0xLQScsICdTRE4nLCAnU1VSJywgJ1NKTScsICdTV1onLCAnU1dFJywgJ0NIRScsICdTWVInLCAnVFdOJywgJ1RKSycsICdUWkEnLCAnVEhBJywgJ1RMUycsICdUR08nLCAnVEtMJywgJ1RPTicsICdUVE8nLCAnVFVOJywgJ1RVUicsICdUS00nLCAnVENBJywgJ1RVVicsICdVR0EnLCAnVUtSJywgJ0FSRScsICdHQlInLCAnVVNBJywgJ1VNSScsICdVUlknLCAnVVpCJywgJ1ZVVCcsICdWRU4nLCAnVk5NJywgJ1ZHQicsICdWSVInLCAnV0xGJywgJ0VTSCcsICdZRU0nLCAnWk1CJywgJ1pXRSddO1xuXG5mdW5jdGlvbiBpc0lTTzMxNjYxQWxwaGEzKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuICgwLCBfaW5jbHVkZXMyLmRlZmF1bHQpKHZhbGlkSVNPMzE2NjFBbHBoYTNDb3VudHJpZXNDb2Rlcywgc3RyLnRvVXBwZXJDYXNlKCkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU084NjAxO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLy8gZnJvbSBodHRwOi8vZ29vLmdsLzBlakhIV1xudmFyIGlzbzg2MDEgPSAvXihbXFwrLV0/XFxkezR9KD8hXFxkezJ9XFxiKSkoKC0/KSgoMFsxLTldfDFbMC0yXSkoXFwzKFsxMl1cXGR8MFsxLTldfDNbMDFdKSk/fFcoWzAtNF1cXGR8NVswLTJdKSgtP1sxLTddKT98KDAwWzEtOV18MFsxLTldXFxkfFsxMl1cXGR7Mn18MyhbMC01XVxcZHw2WzEtNl0pKSkoW1RcXHNdKCgoWzAxXVxcZHwyWzAtM10pKCg6PylbMC01XVxcZCk/fDI0Oj8wMCkoW1xcLixdXFxkKyg/ITopKT8pPyhcXDE3WzAtNV1cXGQoW1xcLixdXFxkKyk/KT8oW3paXXwoW1xcKy1dKShbMDFdXFxkfDJbMC0zXSk6PyhbMC01XVxcZCk/KT8pPyk/JC87XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuZnVuY3Rpb24gaXNJU084NjAxKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGlzbzg2MDEudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU1JDO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLy8gc2VlIGh0dHA6Ly9pc3JjLmlmcGkub3JnL2VuL2lzcmMtc3RhbmRhcmQvY29kZS1zeW50YXhcbnZhciBpc3JjID0gL15bQS1aXXsyfVswLTlBLVpdezN9XFxkezJ9XFxkezV9JC87XG5cbmZ1bmN0aW9uIGlzSVNSQyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBpc3JjLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNTTjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpc3NuID0gJ15cXFxcZHs0fS0/XFxcXGR7M31bXFxcXGRYXSQnO1xuXG5mdW5jdGlvbiBpc0lTU04oc3RyKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHRlc3RJc3NuID0gaXNzbjtcbiAgdGVzdElzc24gPSBvcHRpb25zLnJlcXVpcmVfaHlwaGVuID8gdGVzdElzc24ucmVwbGFjZSgnPycsICcnKSA6IHRlc3RJc3NuO1xuICB0ZXN0SXNzbiA9IG9wdGlvbnMuY2FzZV9zZW5zaXRpdmUgPyBuZXcgUmVnRXhwKHRlc3RJc3NuKSA6IG5ldyBSZWdFeHAodGVzdElzc24sICdpJyk7XG4gIGlmICghdGVzdElzc24udGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBkaWdpdHMgPSBzdHIucmVwbGFjZSgnLScsICcnKS50b1VwcGVyQ2FzZSgpO1xuICB2YXIgY2hlY2tzdW0gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaWdpdCA9IGRpZ2l0c1tpXTtcbiAgICBjaGVja3N1bSArPSAoZGlnaXQgPT09ICdYJyA/IDEwIDogK2RpZ2l0KSAqICg4IC0gaSk7XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtICUgMTEgPT09IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaXNJbjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfdG9TdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvdG9TdHJpbmcnKTtcblxudmFyIF90b1N0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b1N0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzSW4oc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgaSA9IHZvaWQgMDtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvcHRpb25zKSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIGZvciAoaSBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCBpKSkge1xuICAgICAgICBhcnJheVtpXSA9ICgwLCBfdG9TdHJpbmcyLmRlZmF1bHQpKG9wdGlvbnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXkuaW5kZXhPZihzdHIpID49IDA7XG4gIH0gZWxzZSBpZiAoKHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvcHRpb25zKSkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoc3RyKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5pbmRleE9mKHN0cikgPj0gMDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0ludDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpbnQgPSAvXig/OlstK10/KD86MHxbMS05XVswLTldKikpJC87XG52YXIgaW50TGVhZGluZ1plcm9lcyA9IC9eWy0rXT9bMC05XSskLztcblxuZnVuY3Rpb24gaXNJbnQoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBHZXQgdGhlIHJlZ2V4IHRvIHVzZSBmb3IgdGVzdGluZywgYmFzZWQgb24gd2hldGhlclxuICAvLyBsZWFkaW5nIHplcm9lcyBhcmUgYWxsb3dlZCBvciBub3QuXG4gIHZhciByZWdleCA9IG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsbG93X2xlYWRpbmdfemVyb2VzJykgJiYgIW9wdGlvbnMuYWxsb3dfbGVhZGluZ196ZXJvZXMgPyBpbnQgOiBpbnRMZWFkaW5nWmVyb2VzO1xuXG4gIC8vIENoZWNrIG1pbi9tYXgvbHQvZ3RcbiAgdmFyIG1pbkNoZWNrUGFzc2VkID0gIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ21pbicpIHx8IHN0ciA+PSBvcHRpb25zLm1pbjtcbiAgdmFyIG1heENoZWNrUGFzc2VkID0gIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ21heCcpIHx8IHN0ciA8PSBvcHRpb25zLm1heDtcbiAgdmFyIGx0Q2hlY2tQYXNzZWQgPSAhb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbHQnKSB8fCBzdHIgPCBvcHRpb25zLmx0O1xuICB2YXIgZ3RDaGVja1Bhc3NlZCA9ICFvcHRpb25zLmhhc093blByb3BlcnR5KCdndCcpIHx8IHN0ciA+IG9wdGlvbnMuZ3Q7XG5cbiAgcmV0dXJuIHJlZ2V4LnRlc3Qoc3RyKSAmJiBtaW5DaGVja1Bhc3NlZCAmJiBtYXhDaGVja1Bhc3NlZCAmJiBsdENoZWNrUGFzc2VkICYmIGd0Q2hlY2tQYXNzZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaXNKU09OO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNKU09OKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdHJ5IHtcbiAgICB2YXIgb2JqID0gSlNPTi5wYXJzZShzdHIpO1xuICAgIHJldHVybiAhIW9iaiAmJiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yob2JqKSkgPT09ICdvYmplY3QnO1xuICB9IGNhdGNoIChlKSB7LyogaWdub3JlICovfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0pXVDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBqd3QgPSAvXlthLXpBLVowLTlcXC1fXStcXC5bYS16QS1aMC05XFwtX10rXFwuW2EtekEtWjAtOVxcLV9dKyQvO1xuXG5mdW5jdGlvbiBpc0pXVChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBqd3QudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICBpZiAoIXN0ci5pbmNsdWRlcygnLCcpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBwYWlyID0gc3RyLnNwbGl0KCcsJyk7XG4gIHJldHVybiBsYXQudGVzdChwYWlyWzBdKSAmJiBsb25nLnRlc3QocGFpclsxXSk7XG59O1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGxhdCA9IC9eXFwoP1srLV0/KDkwKFxcLjArKT98WzEtOF0/XFxkKFxcLlxcZCspPykkLztcbnZhciBsb25nID0gL15cXHM/WystXT8oMTgwKFxcLjArKT98MVswLTddXFxkKFxcLlxcZCspP3xcXGR7MSwyfShcXC5cXGQrKT8pXFwpPyQvO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaXNMZW5ndGg7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItcmVzdC1wYXJhbXMgKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIG1pbiA9IHZvaWQgMDtcbiAgdmFyIG1heCA9IHZvaWQgMDtcbiAgaWYgKCh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yob3B0aW9ucykpID09PSAnb2JqZWN0Jykge1xuICAgIG1pbiA9IG9wdGlvbnMubWluIHx8IDA7XG4gICAgbWF4ID0gb3B0aW9ucy5tYXg7XG4gIH0gZWxzZSB7XG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IGlzTGVuZ3RoKHN0ciwgbWluIFssIG1heF0pXG4gICAgbWluID0gYXJndW1lbnRzWzFdO1xuICAgIG1heCA9IGFyZ3VtZW50c1syXTtcbiAgfVxuICB2YXIgc3Vycm9nYXRlUGFpcnMgPSBzdHIubWF0Y2goL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZykgfHwgW107XG4gIHZhciBsZW4gPSBzdHIubGVuZ3RoIC0gc3Vycm9nYXRlUGFpcnMubGVuZ3RoO1xuICByZXR1cm4gbGVuID49IG1pbiAmJiAodHlwZW9mIG1heCA9PT0gJ3VuZGVmaW5lZCcgfHwgbGVuIDw9IG1heCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0xvd2VyY2FzZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzTG93ZXJjYXNlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ciA9PT0gc3RyLnRvTG93ZXJDYXNlKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc01BQ0FkZHJlc3M7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgbWFjQWRkcmVzcyA9IC9eKFswLTlhLWZBLUZdWzAtOWEtZkEtRl06KXs1fShbMC05YS1mQS1GXVswLTlhLWZBLUZdKSQvO1xudmFyIG1hY0FkZHJlc3NOb0NvbG9ucyA9IC9eKFswLTlhLWZBLUZdKXsxMn0kLztcblxuZnVuY3Rpb24gaXNNQUNBZGRyZXNzKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ub19jb2xvbnMpIHtcbiAgICByZXR1cm4gbWFjQWRkcmVzc05vQ29sb25zLnRlc3Qoc3RyKTtcbiAgfVxuICByZXR1cm4gbWFjQWRkcmVzcy50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc01ENTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBtZDUgPSAvXlthLWYwLTldezMyfSQvO1xuXG5mdW5jdGlvbiBpc01ENShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBtZDUudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNYWduZXRVUkk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgbWFnbmV0VVJJID0gL15tYWduZXQ6XFw/eHQ9dXJuOlthLXowLTldKzpbYS16MC05XXszMiw0MH0mZG49LismdHI9LiskL2k7XG5cbmZ1bmN0aW9uIGlzTWFnbmV0VVJJKHVybCkge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkodXJsKTtcbiAgcmV0dXJuIG1hZ25ldFVSSS50ZXN0KHVybC50cmltKCkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNaW1lVHlwZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qXG4gIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgc3RyaW5nIG1hdGNoZXMgdG8gYSBjb3JyZWN0IE1lZGlhIHR5cGUgZm9ybWF0IChNSU1FIHR5cGUpXG5cbiAgVGhpcyBmdW5jdGlvbiBvbmx5IGNoZWNrcyBpcyB0aGUgc3RyaW5nIGZvcm1hdCBmb2xsb3dzIHRoZVxuICBldGFibGlzaGVkIHJ1bGVzIGJ5IHRoZSBhY2NvcmRpbmcgUkZDIHNwZWNpZmljYXRpb25zLlxuICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzICdjaGFyc2V0JyBpbiB0ZXh0dWFsIG1lZGlhIHR5cGVzXG4gIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjY1NykuXG5cbiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBhZ2FpbnN0IGFsbCB0aGUgbWVkaWEgdHlwZXMgbGlzdGVkXG4gIGJ5IHRoZSBJQU5BIChodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tZWRpYS10eXBlcy54aHRtbClcbiAgYmVjYXVzZSBvZiBsaWdodG5lc3MgcHVycG9zZXMgOiBpdCB3b3VsZCByZXF1aXJlIHRvIGluY2x1ZGVcbiAgYWxsIHRoZXNlIE1JTUUgdHlwZXMgaW4gdGhpcyBsaWJyYWlyeSwgd2hpY2ggd291bGQgd2VpZ2ggaXRcbiAgc2lnbmlmaWNhbnRseS4gVGhpcyBraW5kIG9mIGVmZm9ydCBtYXliZSBpcyBub3Qgd29ydGggZm9yIHRoZSB1c2UgdGhhdFxuICB0aGlzIGZ1bmN0aW9uIGhhcyBpbiB0aGlzIGVudGlyZSBsaWJyYWlyeS5cblxuICBNb3JlIGluZm9ybWF0aW9ucyBpbiB0aGUgUkZDIHNwZWNpZmljYXRpb25zIDpcbiAgLSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NVxuICAtIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ2XG4gIC0gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjEuMS4xXG4gIC0gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjEuMS41XG4qL1xuXG4vLyBNYXRjaCBzaW1wbGUgTUlNRSB0eXBlc1xuLy8gTkIgOlxuLy8gICBTdWJ0eXBlIGxlbmd0aCBtdXN0IG5vdCBleGNlZWQgMTAwIGNoYXJhY3RlcnMuXG4vLyAgIFRoaXMgcnVsZSBkb2VzIG5vdCBjb21wbHkgdG8gdGhlIFJGQyBzcGVjcyAod2hhdCBpcyB0aGUgbWF4IGxlbmd0aCA/KS5cbnZhciBtaW1lVHlwZVNpbXBsZSA9IC9eKGFwcGxpY2F0aW9ufGF1ZGlvfGZvbnR8aW1hZ2V8bWVzc2FnZXxtb2RlbHxtdWx0aXBhcnR8dGV4dHx2aWRlbylcXC9bYS16QS1aMC05XFwuXFwtXFwrXXsxLDEwMH0kL2k7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuXG4vLyBIYW5kbGUgXCJjaGFyc2V0XCIgaW4gXCJ0ZXh0LypcIlxudmFyIG1pbWVUeXBlVGV4dCA9IC9edGV4dFxcL1thLXpBLVowLTlcXC5cXC1cXCtdezEsMTAwfTtcXHM/Y2hhcnNldD0oXCJbYS16QS1aMC05XFwuXFwtXFwrXFxzXXswLDcwfVwifFthLXpBLVowLTlcXC5cXC1cXCtdezAsNzB9KShcXHM/XFwoW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MSwyMH1cXCkpPyQvaTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtbGVuXG5cbi8vIEhhbmRsZSBcImJvdW5kYXJ5XCIgaW4gXCJtdWx0aXBhcnQvKlwiXG52YXIgbWltZVR5cGVNdWx0aXBhcnQgPSAvXm11bHRpcGFydFxcL1thLXpBLVowLTlcXC5cXC1cXCtdezEsMTAwfSg7XFxzPyhib3VuZGFyeXxjaGFyc2V0KT0oXCJbYS16QS1aMC05XFwuXFwtXFwrXFxzXXswLDcwfVwifFthLXpBLVowLTlcXC5cXC1cXCtdezAsNzB9KShcXHM/XFwoW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MSwyMH1cXCkpPyl7MCwyfSQvaTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtbGVuXG5cbmZ1bmN0aW9uIGlzTWltZVR5cGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gbWltZVR5cGVTaW1wbGUudGVzdChzdHIpIHx8IG1pbWVUeXBlVGV4dC50ZXN0KHN0cikgfHwgbWltZVR5cGVNdWx0aXBhcnQudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNb2JpbGVQaG9uZTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbnZhciBwaG9uZXMgPSB7XG4gICdhci1BRSc6IC9eKChcXCs/OTcxKXwwKT81WzAyNDU2OF1cXGR7N30kLyxcbiAgJ2FyLURaJzogL14oXFwrPzIxM3wwKSg1fDZ8NylcXGR7OH0kLyxcbiAgJ2FyLUVHJzogL14oKFxcKz8yMCl8MCk/MVswMTJdXFxkezh9JC8sXG4gICdhci1JUSc6IC9eKFxcKz85NjR8MCk/N1swLTldXFxkezh9JC8sXG4gICdhci1KTyc6IC9eKFxcKz85NjJ8MCk/N1s3ODldXFxkezd9JC8sXG4gICdhci1LVyc6IC9eKFxcKz85NjUpWzU2OV1cXGR7N30kLyxcbiAgJ2FyLVNBJzogL14oIT8oXFwrPzk2Nil8MCk/NVxcZHs4fSQvLFxuICAnYXItU1knOiAvXighPyhcXCs/OTYzKXwwKT85XFxkezh9JC8sXG4gICdhci1UTic6IC9eKFxcKz8yMTYpP1syNDU5XVxcZHs3fSQvLFxuICAnYmUtQlknOiAvXihcXCs/Mzc1KT8oMjR8MjV8Mjl8MzN8NDQpXFxkezd9JC8sXG4gICdiZy1CRyc6IC9eKFxcKz8zNTl8MCk/OFs3ODldXFxkezd9JC8sXG4gICdibi1CRCc6IC9cXCs/KDg4KT8wPzFbMTU2Nzg5XVswLTldezh9XFxiLyxcbiAgJ2NzLUNaJzogL14oXFwrPzQyMCk/ID9bMS05XVswLTldezJ9ID9bMC05XXszfSA/WzAtOV17M30kLyxcbiAgJ2RhLURLJzogL14oXFwrPzQ1KT9cXHM/XFxkezJ9XFxzP1xcZHsyfVxccz9cXGR7Mn1cXHM/XFxkezJ9JC8sXG4gICdkZS1ERSc6IC9eKFxcKz80OVsgXFwuXFwtXT8pPyhbXFwoXXsxfVswLTldezEsNn1bXFwpXSk/KFswLTkgXFwuXFwtXFwvXXszLDIwfSkoKHh8ZXh0fGV4dGVuc2lvbilbIF0/WzAtOV17MSw0fSk/JC8sXG4gICdlbC1HUic6IC9eKFxcKz8zMHwwKT8oNjlcXGR7OH0pJC8sXG4gICdlbi1BVSc6IC9eKFxcKz82MXwwKTRcXGR7OH0kLyxcbiAgJ2VuLUdCJzogL14oXFwrPzQ0fDApN1xcZHs5fSQvLFxuICAnZW4tSEsnOiAvXihcXCs/ODUyXFwtPyk/WzQ1Njc4OV1cXGR7M31cXC0/XFxkezR9JC8sXG4gICdlbi1JTic6IC9eKFxcKz85MXwwKT9bNjc4OV1cXGR7OX0kLyxcbiAgJ2VuLUtFJzogL14oXFwrPzI1NHwwKT9bN11cXGR7OH0kLyxcbiAgJ2VuLU5HJzogL14oXFwrPzIzNHwwKT9bNzg5XVxcZHs5fSQvLFxuICAnZW4tTlonOiAvXihcXCs/NjR8MClbMjhdXFxkezcsOX0kLyxcbiAgJ2VuLVBLJzogL14oKFxcKzkyKXwoMDA5MikpLXswLDF9XFxkezN9LXswLDF9XFxkezd9JHxeXFxkezExfSR8XlxcZHs0fS1cXGR7N30kLyxcbiAgJ2VuLVJXJzogL14oXFwrPzI1MHwwKT9bN11cXGR7OH0kLyxcbiAgJ2VuLVNHJzogL14oXFwrNjUpP1s4OV1cXGR7N30kLyxcbiAgJ2VuLVRaJzogL14oXFwrPzI1NXwwKT9bNjddXFxkezh9JC8sXG4gICdlbi1VRyc6IC9eKFxcKz8yNTZ8MCk/WzddXFxkezh9JC8sXG4gICdlbi1VUyc6IC9eKFxcKz8xPyggfC0pPyk/KFxcKFsyLTldWzAtOV17Mn1cXCl8WzItOV1bMC05XXsyfSkoIHwtKT8oWzItOV1bMC05XXsyfSggfC0pP1swLTldezR9KSQvLFxuICAnZW4tWkEnOiAvXihcXCs/Mjd8MClcXGR7OX0kLyxcbiAgJ2VuLVpNJzogL14oXFwrPzI2KT8wOVs1NjddXFxkezd9JC8sXG4gICdlcy1FUyc6IC9eKFxcKz8zNCk/KDZcXGR7MX18N1sxMjM0XSlcXGR7N30kLyxcbiAgJ2VzLU1YJzogL14oXFwrPzUyKT8oMXwwMSk/XFxkezEwLDExfSQvLFxuICAnZXQtRUUnOiAvXihcXCs/MzcyKT9cXHM/KDV8OFsxLTRdKVxccz8oWzAtOV1cXHM/KXs2LDd9JC8sXG4gICdmYS1JUic6IC9eKFxcKz85OFtcXC1cXHNdP3wwKTlbMC0zOV1cXGRbXFwtXFxzXT9cXGR7M31bXFwtXFxzXT9cXGR7NH0kLyxcbiAgJ2ZpLUZJJzogL14oXFwrPzM1OHwwKVxccz8oNCgwfDF8Mnw0fDV8Nik/fDUwKVxccz8oXFxkXFxzPyl7NCw4fVxcZCQvLFxuICAnZm8tRk8nOiAvXihcXCs/Mjk4KT9cXHM/XFxkezJ9XFxzP1xcZHsyfVxccz9cXGR7Mn0kLyxcbiAgJ2ZyLUZSJzogL14oXFwrPzMzfDApWzY3XVxcZHs4fSQvLFxuICAnaGUtSUwnOiAvXihcXCs5NzJ8MCkoWzIzNDg5XXw1WzAxMjM0NTY4OV18NzcpWzEtOV1cXGR7Nn0vLFxuICAnaHUtSFUnOiAvXihcXCs/MzYpKDIwfDMwfDcwKVxcZHs3fSQvLFxuICAnaWQtSUQnOiAvXihcXCs/NjJ8MCkoMD84P1xcZFxcZFxccz9cXGQ/KShbXFxzP3xcXGRdezcsMTJ9KSQvLFxuICAnaXQtSVQnOiAvXihcXCs/MzkpP1xccz8zXFxkezJ9ID9cXGR7Niw3fSQvLFxuICAnamEtSlAnOiAvXihcXCs/ODF8MClbNzg5XTBbIFxcLV0/WzEtOV1cXGR7Mn1bIFxcLV0/XFxkezV9JC8sXG4gICdray1LWic6IC9eKFxcKz83fDgpPzdcXGR7OX0kLyxcbiAgJ2tsLUdMJzogL14oXFwrPzI5OSk/XFxzP1xcZHsyfVxccz9cXGR7Mn1cXHM/XFxkezJ9JC8sXG4gICdrby1LUic6IC9eKChcXCs/ODIpWyBcXC1dPyk/MD8xKFswfDF8Nnw3fDh8OV17MX0pWyBcXC1dP1xcZHszLDR9WyBcXC1dP1xcZHs0fSQvLFxuICAnbHQtTFQnOiAvXihcXCszNzB8OClcXGR7OH0kLyxcbiAgJ21zLU1ZJzogL14oXFwrPzY/MDEpezF9KChbMTQ1XXsxfShcXC18XFxzKT9cXGR7Nyw4fSl8KFsyMzY3ODldezF9KFxcc3xcXC0pP1xcZHs3fSkpJC8sXG4gICduYi1OTyc6IC9eKFxcKz80Nyk/WzQ5XVxcZHs3fSQvLFxuICAnbmwtQkUnOiAvXihcXCs/MzJ8MCk0P1xcZHs4fSQvLFxuICAnbm4tTk8nOiAvXihcXCs/NDcpP1s0OV1cXGR7N30kLyxcbiAgJ3BsLVBMJzogL14oXFwrPzQ4KT8gP1s1LThdXFxkID9cXGR7M30gP1xcZHsyfSA/XFxkezJ9JC8sXG4gICdwdC1CUic6IC8oPz1eKFxcKz81ezJ9XFwtP3wwKVsxLTldezJ9XFwtP1xcZHs0fVxcLT9cXGR7NH0kKSheKFxcKz81ezJ9XFwtP3wwKVsxLTldezJ9XFwtP1s2LTldezF9XFxkezN9XFwtP1xcZHs0fSQpfCheKFxcKz81ezJ9XFwtP3wwKVsxLTldezJ9XFwtPzlbNi05XXsxfVxcZHszfVxcLT9cXGR7NH0kKS8sXG4gICdwdC1QVCc6IC9eKFxcKz8zNTEpPzlbMTIzNl1cXGR7N30kLyxcbiAgJ3JvLVJPJzogL14oXFwrPzQ/MClcXHM/N1xcZHsyfShcXC98XFxzfFxcLnxcXC0pP1xcZHszfShcXHN8XFwufFxcLSk/XFxkezN9JC8sXG4gICdydS1SVSc6IC9eKFxcKz83fDgpPzlcXGR7OX0kLyxcbiAgJ3NrLVNLJzogL14oXFwrPzQyMSk/ID9bMS05XVswLTldezJ9ID9bMC05XXszfSA/WzAtOV17M30kLyxcbiAgJ3NyLVJTJzogL14oXFwrMzgxNnwwNilbLSBcXGRdezUsOX0kLyxcbiAgJ3N2LVNFJzogL14oXFwrPzQ2fDApW1xcc1xcLV0/N1tcXHNcXC1dP1swMjM2OV0oW1xcc1xcLV0/XFxkKXs3fSQvLFxuICAndGgtVEgnOiAvXihcXCs2Nnw2NnwwKVxcZHs5fSQvLFxuICAndHItVFInOiAvXihcXCs/OTB8MCk/NVxcZHs5fSQvLFxuICAndWstVUEnOiAvXihcXCs/Mzh8OCk/MFxcZHs5fSQvLFxuICAndmktVk4nOiAvXihcXCs/ODR8MCk/KCgxKDIoWzAtOV0pfDYoWzItOV0pfDg4fDk5KSl8KDkoKD8hNSlbMC05XSkpKShbMC05XXs3fSkkLyxcbiAgJ3poLUNOJzogL14oKFxcK3wwMCk4Nik/MShbMzU4XVswLTldfDRbNTc5XXw2Nnw3WzAxMzU2NzhdfDlbODldKVswLTldezh9JC8sXG4gICd6aC1UVyc6IC9eKFxcKz84ODZcXC0/fDApPzlcXGR7OH0kL1xufTtcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vLyBhbGlhc2VzXG5waG9uZXNbJ2VuLUNBJ10gPSBwaG9uZXNbJ2VuLVVTJ107XG5waG9uZXNbJ2ZyLUJFJ10gPSBwaG9uZXNbJ25sLUJFJ107XG5waG9uZXNbJ3poLUhLJ10gPSBwaG9uZXNbJ2VuLUhLJ107XG5cbmZ1bmN0aW9uIGlzTW9iaWxlUGhvbmUoc3RyLCBsb2NhbGUsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0TW9kZSAmJiAhc3RyLnN0YXJ0c1dpdGgoJysnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGUpKSB7XG4gICAgcmV0dXJuIGxvY2FsZS5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmIChwaG9uZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB2YXIgcGhvbmUgPSBwaG9uZXNba2V5XTtcbiAgICAgICAgaWYgKHBob25lLnRlc3Qoc3RyKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAobG9jYWxlIGluIHBob25lcykge1xuICAgIHJldHVybiBwaG9uZXNbbG9jYWxlXS50ZXN0KHN0cik7XG4gICAgLy8gYWxpYXMgZmFsc2V5IGxvY2FsZSBhcyAnYW55J1xuICB9IGVsc2UgaWYgKCFsb2NhbGUgfHwgbG9jYWxlID09PSAnYW55Jykge1xuICAgIGZvciAodmFyIGtleSBpbiBwaG9uZXMpIHtcbiAgICAgIGlmIChwaG9uZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB2YXIgcGhvbmUgPSBwaG9uZXNba2V5XTtcbiAgICAgICAgaWYgKHBob25lLnRlc3Qoc3RyKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9jYWxlIFxcJycgKyBsb2NhbGUgKyAnXFwnJyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc01vbmdvSWQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG52YXIgX2lzSGV4YWRlY2ltYWwgPSByZXF1aXJlKCcuL2lzSGV4YWRlY2ltYWwnKTtcblxudmFyIF9pc0hleGFkZWNpbWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSGV4YWRlY2ltYWwpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc01vbmdvSWQoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gKDAsIF9pc0hleGFkZWNpbWFsMi5kZWZhdWx0KShzdHIpICYmIHN0ci5sZW5ndGggPT09IDI0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNdWx0aWJ5dGU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG52YXIgbXVsdGlieXRlID0gL1teXFx4MDAtXFx4N0ZdLztcbi8qIGVzbGludC1lbmFibGUgbm8tY29udHJvbC1yZWdleCAqL1xuXG5mdW5jdGlvbiBpc011bHRpYnl0ZShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBtdWx0aWJ5dGUudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNOdW1lcmljO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIG51bWVyaWMgPSAvXlsrLV0/KFswLTldKlsuXSk/WzAtOV0rJC87XG52YXIgbnVtZXJpY05vU3ltYm9scyA9IC9eWzAtOV0rJC87XG5cbmZ1bmN0aW9uIGlzTnVtZXJpYyhzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMubm9fc3ltYm9scykge1xuICAgIHJldHVybiBudW1lcmljTm9TeW1ib2xzLnRlc3Qoc3RyKTtcbiAgfVxuICByZXR1cm4gbnVtZXJpYy50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1BvcnQ7XG5cbnZhciBfaXNJbnQgPSByZXF1aXJlKCcuL2lzSW50Jyk7XG5cbnZhciBfaXNJbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJbnQpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc1BvcnQoc3RyKSB7XG4gIHJldHVybiAoMCwgX2lzSW50Mi5kZWZhdWx0KShzdHIsIHsgbWluOiAwLCBtYXg6IDY1NTM1IH0pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5sb2NhbGVzID0gdW5kZWZpbmVkO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc3RyLCBsb2NhbGUpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChsb2NhbGUgaW4gcGF0dGVybnMpIHtcbiAgICByZXR1cm4gcGF0dGVybnNbbG9jYWxlXS50ZXN0KHN0cik7XG4gIH0gZWxzZSBpZiAobG9jYWxlID09PSAnYW55Jykge1xuICAgIGZvciAodmFyIGtleSBpbiBwYXR0ZXJucykge1xuICAgICAgaWYgKHBhdHRlcm5zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdmFyIHBhdHRlcm4gPSBwYXR0ZXJuc1trZXldO1xuICAgICAgICBpZiAocGF0dGVybi50ZXN0KHN0cikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsZSBcXCcnICsgbG9jYWxlICsgJ1xcJycpO1xufTtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8vIGNvbW1vbiBwYXR0ZXJuc1xudmFyIHRocmVlRGlnaXQgPSAvXlxcZHszfSQvO1xudmFyIGZvdXJEaWdpdCA9IC9eXFxkezR9JC87XG52YXIgZml2ZURpZ2l0ID0gL15cXGR7NX0kLztcbnZhciBzaXhEaWdpdCA9IC9eXFxkezZ9JC87XG5cbnZhciBwYXR0ZXJucyA9IHtcbiAgQUQ6IC9eQURcXGR7M30kLyxcbiAgQVQ6IGZvdXJEaWdpdCxcbiAgQVU6IGZvdXJEaWdpdCxcbiAgQkU6IGZvdXJEaWdpdCxcbiAgQkc6IGZvdXJEaWdpdCxcbiAgQ0E6IC9eW0FCQ0VHSEpLTE1OUFJTVFZYWV1cXGRbQUJDRUdISi1OUFJTVFYtWl1bXFxzXFwtXT9cXGRbQUJDRUdISi1OUFJTVFYtWl1cXGQkL2ksXG4gIENIOiBmb3VyRGlnaXQsXG4gIENaOiAvXlxcZHszfVxccz9cXGR7Mn0kLyxcbiAgREU6IGZpdmVEaWdpdCxcbiAgREs6IGZvdXJEaWdpdCxcbiAgRFo6IGZpdmVEaWdpdCxcbiAgRUU6IGZpdmVEaWdpdCxcbiAgRVM6IGZpdmVEaWdpdCxcbiAgRkk6IGZpdmVEaWdpdCxcbiAgRlI6IC9eXFxkezJ9XFxzP1xcZHszfSQvLFxuICBHQjogL14oZ2lyXFxzPzBhYXxbYS16XXsxLDJ9XFxkW1xcZGEtel0/XFxzPyhcXGRbYS16XXsyfSk/KSQvaSxcbiAgR1I6IC9eXFxkezN9XFxzP1xcZHsyfSQvLFxuICBIUjogL14oWzEtNV1cXGR7NH0kKS8sXG4gIEhVOiBmb3VyRGlnaXQsXG4gIElMOiBmaXZlRGlnaXQsXG4gIElOOiBzaXhEaWdpdCxcbiAgSVM6IHRocmVlRGlnaXQsXG4gIElUOiBmaXZlRGlnaXQsXG4gIEpQOiAvXlxcZHszfVxcLVxcZHs0fSQvLFxuICBLRTogZml2ZURpZ2l0LFxuICBMSTogL14oOTQ4WzUtOV18OTQ5WzAtN10pJC8sXG4gIExUOiAvXkxUXFwtXFxkezV9JC8sXG4gIExVOiBmb3VyRGlnaXQsXG4gIExWOiAvXkxWXFwtXFxkezR9JC8sXG4gIE1YOiBmaXZlRGlnaXQsXG4gIE5MOiAvXlxcZHs0fVxccz9bYS16XXsyfSQvaSxcbiAgTk86IGZvdXJEaWdpdCxcbiAgUEw6IC9eXFxkezJ9XFwtXFxkezN9JC8sXG4gIFBUOiAvXlxcZHs0fVxcLVxcZHszfT8kLyxcbiAgUk86IHNpeERpZ2l0LFxuICBSVTogc2l4RGlnaXQsXG4gIFNBOiBmaXZlRGlnaXQsXG4gIFNFOiAvXlxcZHszfVxccz9cXGR7Mn0kLyxcbiAgU0k6IGZvdXJEaWdpdCxcbiAgU0s6IC9eXFxkezN9XFxzP1xcZHsyfSQvLFxuICBUTjogZm91ckRpZ2l0LFxuICBUVzogL15cXGR7M30oXFxkezJ9KT8kLyxcbiAgVVM6IC9eXFxkezV9KC1cXGR7NH0pPyQvLFxuICBaQTogZm91ckRpZ2l0LFxuICBaTTogZml2ZURpZ2l0XG59O1xuXG52YXIgbG9jYWxlcyA9IGV4cG9ydHMubG9jYWxlcyA9IE9iamVjdC5rZXlzKHBhdHRlcm5zKTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1JGQzMzMzk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKiBCYXNlZCBvbiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNiAqL1xuXG52YXIgZGF0ZUZ1bGxZZWFyID0gL1swLTldezR9LztcbnZhciBkYXRlTW9udGggPSAvKDBbMS05XXwxWzAtMl0pLztcbnZhciBkYXRlTURheSA9IC8oWzEyXVxcZHwwWzEtOV18M1swMV0pLztcblxudmFyIHRpbWVIb3VyID0gLyhbMDFdWzAtOV18MlswLTNdKS87XG52YXIgdGltZU1pbnV0ZSA9IC9bMC01XVswLTldLztcbnZhciB0aW1lU2Vjb25kID0gLyhbMC01XVswLTldfDYwKS87XG5cbnZhciB0aW1lU2VjRnJhYyA9IC8oXFwuWzAtOV0rKT8vO1xudmFyIHRpbWVOdW1PZmZzZXQgPSBuZXcgUmVnRXhwKCdbLStdJyArIHRpbWVIb3VyLnNvdXJjZSArICc6JyArIHRpbWVNaW51dGUuc291cmNlKTtcbnZhciB0aW1lT2Zmc2V0ID0gbmV3IFJlZ0V4cCgnKFt6Wl18JyArIHRpbWVOdW1PZmZzZXQuc291cmNlICsgJyknKTtcblxudmFyIHBhcnRpYWxUaW1lID0gbmV3IFJlZ0V4cCh0aW1lSG91ci5zb3VyY2UgKyAnOicgKyB0aW1lTWludXRlLnNvdXJjZSArICc6JyArIHRpbWVTZWNvbmQuc291cmNlICsgdGltZVNlY0ZyYWMuc291cmNlKTtcblxudmFyIGZ1bGxEYXRlID0gbmV3IFJlZ0V4cChkYXRlRnVsbFllYXIuc291cmNlICsgJy0nICsgZGF0ZU1vbnRoLnNvdXJjZSArICctJyArIGRhdGVNRGF5LnNvdXJjZSk7XG52YXIgZnVsbFRpbWUgPSBuZXcgUmVnRXhwKCcnICsgcGFydGlhbFRpbWUuc291cmNlICsgdGltZU9mZnNldC5zb3VyY2UpO1xuXG52YXIgcmZjMzMzOSA9IG5ldyBSZWdFeHAoZnVsbERhdGUuc291cmNlICsgJ1sgdFRdJyArIGZ1bGxUaW1lLnNvdXJjZSk7XG5cbmZ1bmN0aW9uIGlzUkZDMzMzOShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiByZmMzMzM5LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzU3Vycm9nYXRlUGFpcjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBzdXJyb2dhdGVQYWlyID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vO1xuXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3Vycm9nYXRlUGFpci50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1VSTDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfaXNGUUROID0gcmVxdWlyZSgnLi9pc0ZRRE4nKTtcblxudmFyIF9pc0ZRRE4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNGUUROKTtcblxudmFyIF9pc0lQID0gcmVxdWlyZSgnLi9pc0lQJyk7XG5cbnZhciBfaXNJUDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lQKTtcblxudmFyIF9tZXJnZSA9IHJlcXVpcmUoJy4vdXRpbC9tZXJnZScpO1xuXG52YXIgX21lcmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRlZmF1bHRfdXJsX29wdGlvbnMgPSB7XG4gIHByb3RvY29sczogWydodHRwJywgJ2h0dHBzJywgJ2Z0cCddLFxuICByZXF1aXJlX3RsZDogdHJ1ZSxcbiAgcmVxdWlyZV9wcm90b2NvbDogZmFsc2UsXG4gIHJlcXVpcmVfaG9zdDogdHJ1ZSxcbiAgcmVxdWlyZV92YWxpZF9wcm90b2NvbDogdHJ1ZSxcbiAgYWxsb3dfdW5kZXJzY29yZXM6IGZhbHNlLFxuICBhbGxvd190cmFpbGluZ19kb3Q6IGZhbHNlLFxuICBhbGxvd19wcm90b2NvbF9yZWxhdGl2ZV91cmxzOiBmYWxzZVxufTtcblxudmFyIHdyYXBwZWRfaXB2NiA9IC9eXFxbKFteXFxdXSspXFxdKD86OihbMC05XSspKT8kLztcblxuZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSG9zdChob3N0LCBtYXRjaGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IG1hdGNoZXNbaV07XG4gICAgaWYgKGhvc3QgPT09IG1hdGNoIHx8IGlzUmVnRXhwKG1hdGNoKSAmJiBtYXRjaC50ZXN0KGhvc3QpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1VSTCh1cmwsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHVybCk7XG4gIGlmICghdXJsIHx8IHVybC5sZW5ndGggPj0gMjA4MyB8fCAvW1xcczw+XS8udGVzdCh1cmwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh1cmwuaW5kZXhPZignbWFpbHRvOicpID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X3VybF9vcHRpb25zKTtcbiAgdmFyIHByb3RvY29sID0gdm9pZCAwLFxuICAgICAgYXV0aCA9IHZvaWQgMCxcbiAgICAgIGhvc3QgPSB2b2lkIDAsXG4gICAgICBob3N0bmFtZSA9IHZvaWQgMCxcbiAgICAgIHBvcnQgPSB2b2lkIDAsXG4gICAgICBwb3J0X3N0ciA9IHZvaWQgMCxcbiAgICAgIHNwbGl0ID0gdm9pZCAwLFxuICAgICAgaXB2NiA9IHZvaWQgMDtcblxuICBzcGxpdCA9IHVybC5zcGxpdCgnIycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuXG4gIHNwbGl0ID0gdXJsLnNwbGl0KCc/Jyk7XG4gIHVybCA9IHNwbGl0LnNoaWZ0KCk7XG5cbiAgc3BsaXQgPSB1cmwuc3BsaXQoJzovLycpO1xuICBpZiAoc3BsaXQubGVuZ3RoID4gMSkge1xuICAgIHByb3RvY29sID0gc3BsaXQuc2hpZnQoKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlX3ZhbGlkX3Byb3RvY29sICYmIG9wdGlvbnMucHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLnJlcXVpcmVfcHJvdG9jb2wpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAodXJsLnN1YnN0cigwLCAyKSA9PT0gJy8vJykge1xuICAgIGlmICghb3B0aW9ucy5hbGxvd19wcm90b2NvbF9yZWxhdGl2ZV91cmxzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNwbGl0WzBdID0gdXJsLnN1YnN0cigyKTtcbiAgfVxuICB1cmwgPSBzcGxpdC5qb2luKCc6Ly8nKTtcblxuICBpZiAodXJsID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNwbGl0ID0gdXJsLnNwbGl0KCcvJyk7XG4gIHVybCA9IHNwbGl0LnNoaWZ0KCk7XG5cbiAgaWYgKHVybCA9PT0gJycgJiYgIW9wdGlvbnMucmVxdWlyZV9ob3N0KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzcGxpdCA9IHVybC5zcGxpdCgnQCcpO1xuICBpZiAoc3BsaXQubGVuZ3RoID4gMSkge1xuICAgIGF1dGggPSBzcGxpdC5zaGlmdCgpO1xuICAgIGlmIChhdXRoLmluZGV4T2YoJzonKSA+PSAwICYmIGF1dGguc3BsaXQoJzonKS5sZW5ndGggPiAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGhvc3RuYW1lID0gc3BsaXQuam9pbignQCcpO1xuXG4gIHBvcnRfc3RyID0gbnVsbDtcbiAgaXB2NiA9IG51bGw7XG4gIHZhciBpcHY2X21hdGNoID0gaG9zdG5hbWUubWF0Y2god3JhcHBlZF9pcHY2KTtcbiAgaWYgKGlwdjZfbWF0Y2gpIHtcbiAgICBob3N0ID0gJyc7XG4gICAgaXB2NiA9IGlwdjZfbWF0Y2hbMV07XG4gICAgcG9ydF9zdHIgPSBpcHY2X21hdGNoWzJdIHx8IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgc3BsaXQgPSBob3N0bmFtZS5zcGxpdCgnOicpO1xuICAgIGhvc3QgPSBzcGxpdC5zaGlmdCgpO1xuICAgIGlmIChzcGxpdC5sZW5ndGgpIHtcbiAgICAgIHBvcnRfc3RyID0gc3BsaXQuam9pbignOicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwb3J0X3N0ciAhPT0gbnVsbCkge1xuICAgIHBvcnQgPSBwYXJzZUludChwb3J0X3N0ciwgMTApO1xuICAgIGlmICghL15bMC05XSskLy50ZXN0KHBvcnRfc3RyKSB8fCBwb3J0IDw9IDAgfHwgcG9ydCA+IDY1NTM1KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCEoMCwgX2lzSVAyLmRlZmF1bHQpKGhvc3QpICYmICEoMCwgX2lzRlFETjIuZGVmYXVsdCkoaG9zdCwgb3B0aW9ucykgJiYgKCFpcHY2IHx8ICEoMCwgX2lzSVAyLmRlZmF1bHQpKGlwdjYsIDYpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhvc3QgPSBob3N0IHx8IGlwdjY7XG5cbiAgaWYgKG9wdGlvbnMuaG9zdF93aGl0ZWxpc3QgJiYgIWNoZWNrSG9zdChob3N0LCBvcHRpb25zLmhvc3Rfd2hpdGVsaXN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAob3B0aW9ucy5ob3N0X2JsYWNrbGlzdCAmJiBjaGVja0hvc3QoaG9zdCwgb3B0aW9ucy5ob3N0X2JsYWNrbGlzdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzVVVJRDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciB1dWlkID0ge1xuICAzOiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LTNbMC05QS1GXXszfS1bMC05QS1GXXs0fS1bMC05QS1GXXsxMn0kL2ksXG4gIDQ6IC9eWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tNFswLTlBLUZdezN9LVs4OUFCXVswLTlBLUZdezN9LVswLTlBLUZdezEyfSQvaSxcbiAgNTogL15bMC05QS1GXXs4fS1bMC05QS1GXXs0fS01WzAtOUEtRl17M30tWzg5QUJdWzAtOUEtRl17M30tWzAtOUEtRl17MTJ9JC9pLFxuICBhbGw6IC9eWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9JC9pXG59O1xuXG5mdW5jdGlvbiBpc1VVSUQoc3RyKSB7XG4gIHZhciB2ZXJzaW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnYWxsJztcblxuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHBhdHRlcm4gPSB1dWlkW3ZlcnNpb25dO1xuICByZXR1cm4gcGF0dGVybiAmJiBwYXR0ZXJuLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzVXBwZXJjYXNlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNVcHBlcmNhc2Uoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyID09PSBzdHIudG9VcHBlckNhc2UoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzVmFyaWFibGVXaWR0aDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfaXNGdWxsV2lkdGggPSByZXF1aXJlKCcuL2lzRnVsbFdpZHRoJyk7XG5cbnZhciBfaXNIYWxmV2lkdGggPSByZXF1aXJlKCcuL2lzSGFsZldpZHRoJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGlzVmFyaWFibGVXaWR0aChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBfaXNGdWxsV2lkdGguZnVsbFdpZHRoLnRlc3Qoc3RyKSAmJiBfaXNIYWxmV2lkdGguaGFsZldpZHRoLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzV2hpdGVsaXN0ZWQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBpc1doaXRlbGlzdGVkKHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGZvciAodmFyIGkgPSBzdHIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoY2hhcnMuaW5kZXhPZihzdHJbaV0pID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGx0cmltO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gbHRyaW0oc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHBhdHRlcm4gPSBjaGFycyA/IG5ldyBSZWdFeHAoJ15bJyArIGNoYXJzICsgJ10rJywgJ2cnKSA6IC9eXFxzKy9nO1xuICByZXR1cm4gc3RyLnJlcGxhY2UocGF0dGVybiwgJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbWF0Y2hlcztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIG1hdGNoZXMoc3RyLCBwYXR0ZXJuLCBtb2RpZmllcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcyLmRlZmF1bHQpKHN0cik7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocGF0dGVybikgIT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7XG4gICAgcGF0dGVybiA9IG5ldyBSZWdFeHAocGF0dGVybiwgbW9kaWZpZXJzKTtcbiAgfVxuICByZXR1cm4gcGF0dGVybi50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBub3JtYWxpemVFbWFpbDtcblxudmFyIF9tZXJnZSA9IHJlcXVpcmUoJy4vdXRpbC9tZXJnZScpO1xuXG52YXIgX21lcmdlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRlZmF1bHRfbm9ybWFsaXplX2VtYWlsX29wdGlvbnMgPSB7XG4gIC8vIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcHBseSB0byBhbGwgZW1haWwgYWRkcmVzc2VzXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIGVtYWlsIGFkZHJlc3MuXG4gIC8vIFBsZWFzZSBub3RlIHRoaXMgbWF5IHZpb2xhdGUgUkZDIDUzMjEgYXMgcGVyIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk4MDgzMzIvMTkyMDI0KS5cbiAgLy8gVGhlIGRvbWFpbiBpcyBhbHdheXMgbG93ZXJjYXNlZCwgYXMgcGVyIFJGQyAxMDM1XG4gIGFsbF9sb3dlcmNhc2U6IHRydWUsXG5cbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gR01haWxcbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgR01haWwgYWRkcmVzcyAoa25vd24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSlcbiAgZ21haWxfbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIGRvdHMgZnJvbSB0aGUgbG9jYWwgcGFydCBvZiB0aGUgZW1haWwgYWRkcmVzcywgYXMgdGhhdCdzIGlnbm9yZWQgYnkgR01haWxcbiAgZ21haWxfcmVtb3ZlX2RvdHM6IHRydWUsXG4gIC8vIFJlbW92ZXMgdGhlIHN1YmFkZHJlc3MgKGUuZy4gXCIrZm9vXCIpIGZyb20gdGhlIGVtYWlsIGFkZHJlc3NcbiAgZ21haWxfcmVtb3ZlX3N1YmFkZHJlc3M6IHRydWUsXG4gIC8vIENvbnZlcnN0cyB0aGUgZ29vZ2xlbWFpbC5jb20gZG9tYWluIHRvIGdtYWlsLmNvbVxuICBnbWFpbF9jb252ZXJ0X2dvb2dsZW1haWxkb3Rjb206IHRydWUsXG5cbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gT3V0bG9vay5jb20gLyBXaW5kb3dzIExpdmUgLyBIb3RtYWlsXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIE91dGxvb2suY29tIGFkZHJlc3MgKGtub3duIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUpXG4gIG91dGxvb2tkb3Rjb21fbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIHRoZSBzdWJhZGRyZXNzIChlLmcuIFwiK2Zvb1wiKSBmcm9tIHRoZSBlbWFpbCBhZGRyZXNzXG4gIG91dGxvb2tkb3Rjb21fcmVtb3ZlX3N1YmFkZHJlc3M6IHRydWUsXG5cbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gWWFob29cbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgWWFob28gYWRkcmVzcyAoa25vd24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSlcbiAgeWFob29fbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIHRoZSBzdWJhZGRyZXNzIChlLmcuIFwiLWZvb1wiKSBmcm9tIHRoZSBlbWFpbCBhZGRyZXNzXG4gIHlhaG9vX3JlbW92ZV9zdWJhZGRyZXNzOiB0cnVlLFxuXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIFlhbmRleFxuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBZYW5kZXggYWRkcmVzcyAoa25vd24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSlcbiAgeWFuZGV4X2xvd2VyY2FzZTogdHJ1ZSxcblxuICAvLyBUaGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIGFyZSBzcGVjaWZpYyB0byBpQ2xvdWRcbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgaUNsb3VkIGFkZHJlc3MgKGtub3duIHRvIGJlIGNhc2UtaW5zZW5zaXRpdmUpXG4gIGljbG91ZF9sb3dlcmNhc2U6IHRydWUsXG4gIC8vIFJlbW92ZXMgdGhlIHN1YmFkZHJlc3MgKGUuZy4gXCIrZm9vXCIpIGZyb20gdGhlIGVtYWlsIGFkZHJlc3NcbiAgaWNsb3VkX3JlbW92ZV9zdWJhZGRyZXNzOiB0cnVlXG59O1xuXG4vLyBMaXN0IG9mIGRvbWFpbnMgdXNlZCBieSBpQ2xvdWRcbnZhciBpY2xvdWRfZG9tYWlucyA9IFsnaWNsb3VkLmNvbScsICdtZS5jb20nXTtcblxuLy8gTGlzdCBvZiBkb21haW5zIHVzZWQgYnkgT3V0bG9vay5jb20gYW5kIGl0cyBwcmVkZWNlc3NvcnNcbi8vIFRoaXMgbGlzdCBpcyBsaWtlbHkgaW5jb21wbGV0ZS5cbi8vIFBhcnRpYWwgcmVmZXJlbmNlOlxuLy8gaHR0cHM6Ly9ibG9ncy5vZmZpY2UuY29tLzIwMTMvMDQvMTcvb3V0bG9vay1jb20tZ2V0cy10d28tc3RlcC12ZXJpZmljYXRpb24tc2lnbi1pbi1ieS1hbGlhcy1hbmQtbmV3LWludGVybmF0aW9uYWwtZG9tYWlucy9cbnZhciBvdXRsb29rZG90Y29tX2RvbWFpbnMgPSBbJ2hvdG1haWwuYXQnLCAnaG90bWFpbC5iZScsICdob3RtYWlsLmNhJywgJ2hvdG1haWwuY2wnLCAnaG90bWFpbC5jby5pbCcsICdob3RtYWlsLmNvLm56JywgJ2hvdG1haWwuY28udGgnLCAnaG90bWFpbC5jby51aycsICdob3RtYWlsLmNvbScsICdob3RtYWlsLmNvbS5hcicsICdob3RtYWlsLmNvbS5hdScsICdob3RtYWlsLmNvbS5icicsICdob3RtYWlsLmNvbS5ncicsICdob3RtYWlsLmNvbS5teCcsICdob3RtYWlsLmNvbS5wZScsICdob3RtYWlsLmNvbS50cicsICdob3RtYWlsLmNvbS52bicsICdob3RtYWlsLmN6JywgJ2hvdG1haWwuZGUnLCAnaG90bWFpbC5kaycsICdob3RtYWlsLmVzJywgJ2hvdG1haWwuZnInLCAnaG90bWFpbC5odScsICdob3RtYWlsLmlkJywgJ2hvdG1haWwuaWUnLCAnaG90bWFpbC5pbicsICdob3RtYWlsLml0JywgJ2hvdG1haWwuanAnLCAnaG90bWFpbC5rcicsICdob3RtYWlsLmx2JywgJ2hvdG1haWwubXknLCAnaG90bWFpbC5waCcsICdob3RtYWlsLnB0JywgJ2hvdG1haWwuc2EnLCAnaG90bWFpbC5zZycsICdob3RtYWlsLnNrJywgJ2xpdmUuYmUnLCAnbGl2ZS5jby51aycsICdsaXZlLmNvbScsICdsaXZlLmNvbS5hcicsICdsaXZlLmNvbS5teCcsICdsaXZlLmRlJywgJ2xpdmUuZXMnLCAnbGl2ZS5ldScsICdsaXZlLmZyJywgJ2xpdmUuaXQnLCAnbGl2ZS5ubCcsICdtc24uY29tJywgJ291dGxvb2suYXQnLCAnb3V0bG9vay5iZScsICdvdXRsb29rLmNsJywgJ291dGxvb2suY28uaWwnLCAnb3V0bG9vay5jby5ueicsICdvdXRsb29rLmNvLnRoJywgJ291dGxvb2suY29tJywgJ291dGxvb2suY29tLmFyJywgJ291dGxvb2suY29tLmF1JywgJ291dGxvb2suY29tLmJyJywgJ291dGxvb2suY29tLmdyJywgJ291dGxvb2suY29tLnBlJywgJ291dGxvb2suY29tLnRyJywgJ291dGxvb2suY29tLnZuJywgJ291dGxvb2suY3onLCAnb3V0bG9vay5kZScsICdvdXRsb29rLmRrJywgJ291dGxvb2suZXMnLCAnb3V0bG9vay5mcicsICdvdXRsb29rLmh1JywgJ291dGxvb2suaWQnLCAnb3V0bG9vay5pZScsICdvdXRsb29rLmluJywgJ291dGxvb2suaXQnLCAnb3V0bG9vay5qcCcsICdvdXRsb29rLmtyJywgJ291dGxvb2subHYnLCAnb3V0bG9vay5teScsICdvdXRsb29rLnBoJywgJ291dGxvb2sucHQnLCAnb3V0bG9vay5zYScsICdvdXRsb29rLnNnJywgJ291dGxvb2suc2snLCAncGFzc3BvcnQuY29tJ107XG5cbi8vIExpc3Qgb2YgZG9tYWlucyB1c2VkIGJ5IFlhaG9vIE1haWxcbi8vIFRoaXMgbGlzdCBpcyBsaWtlbHkgaW5jb21wbGV0ZVxudmFyIHlhaG9vX2RvbWFpbnMgPSBbJ3JvY2tldG1haWwuY29tJywgJ3lhaG9vLmNhJywgJ3lhaG9vLmNvLnVrJywgJ3lhaG9vLmNvbScsICd5YWhvby5kZScsICd5YWhvby5mcicsICd5YWhvby5pbicsICd5YWhvby5pdCcsICd5bWFpbC5jb20nXTtcblxuLy8gTGlzdCBvZiBkb21haW5zIHVzZWQgYnkgeWFuZGV4LnJ1XG52YXIgeWFuZGV4X2RvbWFpbnMgPSBbJ3lhbmRleC5ydScsICd5YW5kZXgudWEnLCAneWFuZGV4Lmt6JywgJ3lhbmRleC5jb20nLCAneWFuZGV4LmJ5JywgJ3lhLnJ1J107XG5cbi8vIHJlcGxhY2Ugc2luZ2xlIGRvdHMsIGJ1dCBub3QgbXVsdGlwbGUgY29uc2VjdXRpdmUgZG90c1xuZnVuY3Rpb24gZG90c1JlcGxhY2VyKG1hdGNoKSB7XG4gIGlmIChtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRW1haWwoZW1haWwsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UyLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfbm9ybWFsaXplX2VtYWlsX29wdGlvbnMpO1xuXG4gIHZhciByYXdfcGFydHMgPSBlbWFpbC5zcGxpdCgnQCcpO1xuICB2YXIgZG9tYWluID0gcmF3X3BhcnRzLnBvcCgpO1xuICB2YXIgdXNlciA9IHJhd19wYXJ0cy5qb2luKCdAJyk7XG4gIHZhciBwYXJ0cyA9IFt1c2VyLCBkb21haW5dO1xuXG4gIC8vIFRoZSBkb21haW4gaXMgYWx3YXlzIGxvd2VyY2FzZWQsIGFzIGl0J3MgY2FzZS1pbnNlbnNpdGl2ZSBwZXIgUkZDIDEwMzVcbiAgcGFydHNbMV0gPSBwYXJ0c1sxXS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChwYXJ0c1sxXSA9PT0gJ2dtYWlsLmNvbScgfHwgcGFydHNbMV0gPT09ICdnb29nbGVtYWlsLmNvbScpIHtcbiAgICAvLyBBZGRyZXNzIGlzIEdNYWlsXG4gICAgaWYgKG9wdGlvbnMuZ21haWxfcmVtb3ZlX3N1YmFkZHJlc3MpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0uc3BsaXQoJysnKVswXTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZ21haWxfcmVtb3ZlX2RvdHMpIHtcbiAgICAgIC8vIHRoaXMgZG9lcyBub3QgcmVwbGFjZSBjb25zZWN1dGl2ZSBkb3RzIGxpa2UgZXhhbXBsZS4uZW1haWxAZ21haWwuY29tXG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcLisvZywgZG90c1JlcGxhY2VyKTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0c1swXS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWxsX2xvd2VyY2FzZSB8fCBvcHRpb25zLmdtYWlsX2xvd2VyY2FzZSkge1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBwYXJ0c1sxXSA9IG9wdGlvbnMuZ21haWxfY29udmVydF9nb29nbGVtYWlsZG90Y29tID8gJ2dtYWlsLmNvbScgOiBwYXJ0c1sxXTtcbiAgfSBlbHNlIGlmIChpY2xvdWRfZG9tYWlucy5pbmRleE9mKHBhcnRzWzFdKSA+PSAwKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBpQ2xvdWRcbiAgICBpZiAob3B0aW9ucy5pY2xvdWRfcmVtb3ZlX3N1YmFkZHJlc3MpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0uc3BsaXQoJysnKVswXTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0c1swXS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWxsX2xvd2VyY2FzZSB8fCBvcHRpb25zLmljbG91ZF9sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3V0bG9va2RvdGNvbV9kb21haW5zLmluZGV4T2YocGFydHNbMV0pID49IDApIHtcbiAgICAvLyBBZGRyZXNzIGlzIE91dGxvb2suY29tXG4gICAgaWYgKG9wdGlvbnMub3V0bG9va2RvdGNvbV9yZW1vdmVfc3ViYWRkcmVzcykge1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zcGxpdCgnKycpWzBdO1xuICAgIH1cbiAgICBpZiAoIXBhcnRzWzBdLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hbGxfbG93ZXJjYXNlIHx8IG9wdGlvbnMub3V0bG9va2RvdGNvbV9sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeWFob29fZG9tYWlucy5pbmRleE9mKHBhcnRzWzFdKSA+PSAwKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBZYWhvb1xuICAgIGlmIChvcHRpb25zLnlhaG9vX3JlbW92ZV9zdWJhZGRyZXNzKSB7XG4gICAgICB2YXIgY29tcG9uZW50cyA9IHBhcnRzWzBdLnNwbGl0KCctJyk7XG4gICAgICBwYXJ0c1swXSA9IGNvbXBvbmVudHMubGVuZ3RoID4gMSA/IGNvbXBvbmVudHMuc2xpY2UoMCwgLTEpLmpvaW4oJy0nKSA6IGNvbXBvbmVudHNbMF07XG4gICAgfVxuICAgIGlmICghcGFydHNbMF0ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy55YWhvb19sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeWFuZGV4X2RvbWFpbnMuaW5kZXhPZihwYXJ0c1sxXSkgPj0gMCkge1xuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy55YW5kZXhfbG93ZXJjYXNlKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHBhcnRzWzFdID0gJ3lhbmRleC5ydSc7IC8vIGFsbCB5YW5kZXggZG9tYWlucyBhcmUgZXF1YWwsIDFzdCBwcmVmZmVyZWRcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UpIHtcbiAgICAvLyBBbnkgb3RoZXIgYWRkcmVzc1xuICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gcGFydHMuam9pbignQCcpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gcnRyaW07XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBydHJpbShzdHIsIGNoYXJzKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICB2YXIgcGF0dGVybiA9IGNoYXJzID8gbmV3IFJlZ0V4cCgnWycgKyBjaGFycyArICddJykgOiAvXFxzLztcblxuICB2YXIgaWR4ID0gc3RyLmxlbmd0aCAtIDE7XG4gIGZvciAoOyBpZHggPj0gMCAmJiBwYXR0ZXJuLnRlc3Qoc3RyW2lkeF0pOyBpZHgtLSkge31cblxuICByZXR1cm4gaWR4IDwgc3RyLmxlbmd0aCA/IHN0ci5zdWJzdHIoMCwgaWR4ICsgMSkgOiBzdHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBzdHJpcExvdztcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbnZhciBfYmxhY2tsaXN0ID0gcmVxdWlyZSgnLi9ibGFja2xpc3QnKTtcblxudmFyIF9ibGFja2xpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYmxhY2tsaXN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gc3RyaXBMb3coc3RyLCBrZWVwX25ld19saW5lcykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGNoYXJzID0ga2VlcF9uZXdfbGluZXMgPyAnXFxcXHgwMC1cXFxceDA5XFxcXHgwQlxcXFx4MENcXFxceDBFLVxcXFx4MUZcXFxceDdGJyA6ICdcXFxceDAwLVxcXFx4MUZcXFxceDdGJztcbiAgcmV0dXJuICgwLCBfYmxhY2tsaXN0Mi5kZWZhdWx0KShzdHIsIGNoYXJzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHRvQm9vbGVhbjtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHRvQm9vbGVhbihzdHIsIHN0cmljdCkge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKHN0cmljdCkge1xuICAgIHJldHVybiBzdHIgPT09ICcxJyB8fCBzdHIgPT09ICd0cnVlJztcbiAgfVxuICByZXR1cm4gc3RyICE9PSAnMCcgJiYgc3RyICE9PSAnZmFsc2UnICYmIHN0ciAhPT0gJyc7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b0RhdGU7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0b0RhdGUoZGF0ZSkge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoZGF0ZSk7XG4gIGRhdGUgPSBEYXRlLnBhcnNlKGRhdGUpO1xuICByZXR1cm4gIWlzTmFOKGRhdGUpID8gbmV3IERhdGUoZGF0ZSkgOiBudWxsO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdG9GbG9hdDtcblxudmFyIF9hc3NlcnRTdHJpbmcgPSByZXF1aXJlKCcuL3V0aWwvYXNzZXJ0U3RyaW5nJyk7XG5cbnZhciBfYXNzZXJ0U3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2VydFN0cmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHRvRmxvYXQoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdG9JbnQ7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB0b0ludChzdHIsIHJhZGl4KSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gcGFyc2VJbnQoc3RyLCByYWRpeCB8fCAxMCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0cmltO1xuXG52YXIgX3J0cmltID0gcmVxdWlyZSgnLi9ydHJpbScpO1xuXG52YXIgX3J0cmltMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3J0cmltKTtcblxudmFyIF9sdHJpbSA9IHJlcXVpcmUoJy4vbHRyaW0nKTtcblxudmFyIF9sdHJpbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sdHJpbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHRyaW0oc3RyLCBjaGFycykge1xuICByZXR1cm4gKDAsIF9ydHJpbTIuZGVmYXVsdCkoKDAsIF9sdHJpbTIuZGVmYXVsdCkoc3RyLCBjaGFycyksIGNoYXJzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVuZXNjYXBlO1xuXG52YXIgX2Fzc2VydFN0cmluZyA9IHJlcXVpcmUoJy4vdXRpbC9hc3NlcnRTdHJpbmcnKTtcblxudmFyIF9hc3NlcnRTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzZXJ0U3RyaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gdW5lc2NhcGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nMi5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyZhbXA7L2csICcmJykucmVwbGFjZSgvJnF1b3Q7L2csICdcIicpLnJlcGxhY2UoLyYjeDI3Oy9nLCBcIidcIikucmVwbGFjZSgvJmx0Oy9nLCAnPCcpLnJlcGxhY2UoLyZndDsvZywgJz4nKS5yZXBsYWNlKC8mI3gyRjsvZywgJy8nKS5yZXBsYWNlKC8mI3g1QzsvZywgJ1xcXFwnKS5yZXBsYWNlKC8mIzk2Oy9nLCAnYCcpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYXNzZXJ0U3RyaW5nO1xuZnVuY3Rpb24gYXNzZXJ0U3RyaW5nKGlucHV0KSB7XG4gIHZhciBpc1N0cmluZyA9IHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG5cbiAgaWYgKCFpc1N0cmluZykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoaXMgbGlicmFyeSAodmFsaWRhdG9yLmpzKSB2YWxpZGF0ZXMgc3RyaW5ncyBvbmx5Jyk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIGluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMoYXJyLCB2YWwpIHtcbiAgcmV0dXJuIGFyci5zb21lKGZ1bmN0aW9uIChhcnJWYWwpIHtcbiAgICByZXR1cm4gdmFsID09PSBhcnJWYWw7XG4gIH0pO1xufTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaW5jbHVkZXM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IG1lcmdlO1xuZnVuY3Rpb24gbWVyZ2UoKSB7XG4gIHZhciBvYmogPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICB2YXIgZGVmYXVsdHMgPSBhcmd1bWVudHNbMV07XG5cbiAgZm9yICh2YXIga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9ialtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5leHBvcnRzLmRlZmF1bHQgPSB0b1N0cmluZztcbmZ1bmN0aW9uIHRvU3RyaW5nKGlucHV0KSB7XG4gIGlmICgodHlwZW9mIGlucHV0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihpbnB1dCkpID09PSAnb2JqZWN0JyAmJiBpbnB1dCAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgaW5wdXQudG9TdHJpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQgPSAnW29iamVjdCBPYmplY3RdJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoaW5wdXQgPT09IG51bGwgfHwgdHlwZW9mIGlucHV0ID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihpbnB1dCkgJiYgIWlucHV0Lmxlbmd0aCkge1xuICAgIGlucHV0ID0gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyhpbnB1dCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB3aGl0ZWxpc3Q7XG5cbnZhciBfYXNzZXJ0U3RyaW5nID0gcmVxdWlyZSgnLi91dGlsL2Fzc2VydFN0cmluZycpO1xuXG52YXIgX2Fzc2VydFN0cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NlcnRTdHJpbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB3aGl0ZWxpc3Qoc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZzIuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoJ1teJyArIGNoYXJzICsgJ10rJywgJ2cnKSwgJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAgIElOVkFMSURfVFlQRTogICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIHR5cGUgezB9IGJ1dCBmb3VuZCB0eXBlIHsxfVwiLFxuICAgIElOVkFMSURfRk9STUFUOiAgICAgICAgICAgICAgICAgICAgICAgICBcIk9iamVjdCBkaWRuJ3QgcGFzcyB2YWxpZGF0aW9uIGZvciBmb3JtYXQgezB9OiB7MX1cIixcbiAgICBFTlVNX01JU01BVENIOiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJObyBlbnVtIG1hdGNoIGZvcjogezB9XCIsXG4gICAgRU5VTV9DQVNFX01JU01BVENIOiAgICAgICAgICAgICAgICAgICAgIFwiRW51bSBkb2VzIG5vdCBtYXRjaCBjYXNlIGZvcjogezB9XCIsXG4gICAgQU5ZX09GX01JU1NJTkc6ICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGF0YSBkb2VzIG5vdCBtYXRjaCBhbnkgc2NoZW1hcyBmcm9tICdhbnlPZidcIixcbiAgICBPTkVfT0ZfTUlTU0lORzogICAgICAgICAgICAgICAgICAgICAgICAgXCJEYXRhIGRvZXMgbm90IG1hdGNoIGFueSBzY2hlbWFzIGZyb20gJ29uZU9mJ1wiLFxuICAgIE9ORV9PRl9NVUxUSVBMRTogICAgICAgICAgICAgICAgICAgICAgICBcIkRhdGEgaXMgdmFsaWQgYWdhaW5zdCBtb3JlIHRoYW4gb25lIHNjaGVtYSBmcm9tICdvbmVPZidcIixcbiAgICBOT1RfUEFTU0VEOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEYXRhIG1hdGNoZXMgc2NoZW1hIGZyb20gJ25vdCdcIixcblxuICAgIC8vIEFycmF5IGVycm9yc1xuICAgIEFSUkFZX0xFTkdUSF9TSE9SVDogICAgICAgICAgICAgICAgICAgICBcIkFycmF5IGlzIHRvbyBzaG9ydCAoezB9KSwgbWluaW11bSB7MX1cIixcbiAgICBBUlJBWV9MRU5HVEhfTE9ORzogICAgICAgICAgICAgICAgICAgICAgXCJBcnJheSBpcyB0b28gbG9uZyAoezB9KSwgbWF4aW11bSB7MX1cIixcbiAgICBBUlJBWV9VTklRVUU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnJheSBpdGVtcyBhcmUgbm90IHVuaXF1ZSAoaW5kZXhlcyB7MH0gYW5kIHsxfSlcIixcbiAgICBBUlJBWV9BRERJVElPTkFMX0lURU1TOiAgICAgICAgICAgICAgICAgXCJBZGRpdGlvbmFsIGl0ZW1zIG5vdCBhbGxvd2VkXCIsXG5cbiAgICAvLyBOdW1lcmljIGVycm9yc1xuICAgIE1VTFRJUExFX09GOiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlZhbHVlIHswfSBpcyBub3QgYSBtdWx0aXBsZSBvZiB7MX1cIixcbiAgICBNSU5JTVVNOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJWYWx1ZSB7MH0gaXMgbGVzcyB0aGFuIG1pbmltdW0gezF9XCIsXG4gICAgTUlOSU1VTV9FWENMVVNJVkU6ICAgICAgICAgICAgICAgICAgICAgIFwiVmFsdWUgezB9IGlzIGVxdWFsIG9yIGxlc3MgdGhhbiBleGNsdXNpdmUgbWluaW11bSB7MX1cIixcbiAgICBNQVhJTVVNOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJWYWx1ZSB7MH0gaXMgZ3JlYXRlciB0aGFuIG1heGltdW0gezF9XCIsXG4gICAgTUFYSU1VTV9FWENMVVNJVkU6ICAgICAgICAgICAgICAgICAgICAgIFwiVmFsdWUgezB9IGlzIGVxdWFsIG9yIGdyZWF0ZXIgdGhhbiBleGNsdXNpdmUgbWF4aW11bSB7MX1cIixcblxuICAgIC8vIE9iamVjdCBlcnJvcnNcbiAgICBPQkpFQ1RfUFJPUEVSVElFU19NSU5JTVVNOiAgICAgICAgICAgICAgXCJUb28gZmV3IHByb3BlcnRpZXMgZGVmaW5lZCAoezB9KSwgbWluaW11bSB7MX1cIixcbiAgICBPQkpFQ1RfUFJPUEVSVElFU19NQVhJTVVNOiAgICAgICAgICAgICAgXCJUb28gbWFueSBwcm9wZXJ0aWVzIGRlZmluZWQgKHswfSksIG1heGltdW0gezF9XCIsXG4gICAgT0JKRUNUX01JU1NJTkdfUkVRVUlSRURfUFJPUEVSVFk6ICAgICAgIFwiTWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eTogezB9XCIsXG4gICAgT0JKRUNUX0FERElUSU9OQUxfUFJPUEVSVElFUzogICAgICAgICAgIFwiQWRkaXRpb25hbCBwcm9wZXJ0aWVzIG5vdCBhbGxvd2VkOiB7MH1cIixcbiAgICBPQkpFQ1RfREVQRU5ERU5DWV9LRVk6ICAgICAgICAgICAgICAgICAgXCJEZXBlbmRlbmN5IGZhaWxlZCAtIGtleSBtdXN0IGV4aXN0OiB7MH0gKGR1ZSB0byBrZXk6IHsxfSlcIixcblxuICAgIC8vIFN0cmluZyBlcnJvcnNcbiAgICBNSU5fTEVOR1RIOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdHJpbmcgaXMgdG9vIHNob3J0ICh7MH0gY2hhcnMpLCBtaW5pbXVtIHsxfVwiLFxuICAgIE1BWF9MRU5HVEg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0cmluZyBpcyB0b28gbG9uZyAoezB9IGNoYXJzKSwgbWF4aW11bSB7MX1cIixcbiAgICBQQVRURVJOOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdHJpbmcgZG9lcyBub3QgbWF0Y2ggcGF0dGVybiB7MH06IHsxfVwiLFxuXG4gICAgLy8gU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzXG4gICAgS0VZV09SRF9UWVBFX0VYUEVDVEVEOiAgICAgICAgICAgICAgICAgIFwiS2V5d29yZCAnezB9JyBpcyBleHBlY3RlZCB0byBiZSBvZiB0eXBlICd7MX0nXCIsXG4gICAgS0VZV09SRF9VTkRFRklORURfU1RSSUNUOiAgICAgICAgICAgICAgIFwiS2V5d29yZCAnezB9JyBtdXN0IGJlIGRlZmluZWQgaW4gc3RyaWN0IG1vZGVcIixcbiAgICBLRVlXT1JEX1VORVhQRUNURUQ6ICAgICAgICAgICAgICAgICAgICAgXCJLZXl3b3JkICd7MH0nIGlzIG5vdCBleHBlY3RlZCB0byBhcHBlYXIgaW4gdGhlIHNjaGVtYVwiLFxuICAgIEtFWVdPUkRfTVVTVF9CRTogICAgICAgICAgICAgICAgICAgICAgICBcIktleXdvcmQgJ3swfScgbXVzdCBiZSB7MX1cIixcbiAgICBLRVlXT1JEX0RFUEVOREVOQ1k6ICAgICAgICAgICAgICAgICAgICAgXCJLZXl3b3JkICd7MH0nIHJlcXVpcmVzIGtleXdvcmQgJ3sxfSdcIixcbiAgICBLRVlXT1JEX1BBVFRFUk46ICAgICAgICAgICAgICAgICAgICAgICAgXCJLZXl3b3JkICd7MH0nIGlzIG5vdCBhIHZhbGlkIFJlZ0V4cCBwYXR0ZXJuOiB7MX1cIixcbiAgICBLRVlXT1JEX1ZBTFVFX1RZUEU6ICAgICAgICAgICAgICAgICAgICAgXCJFYWNoIGVsZW1lbnQgb2Yga2V5d29yZCAnezB9JyBhcnJheSBtdXN0IGJlIGEgJ3sxfSdcIixcbiAgICBVTktOT1dOX0ZPUk1BVDogICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVyZSBpcyBubyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBmb3JtYXQgJ3swfSdcIixcbiAgICBDVVNUT01fTU9ERV9GT1JDRV9QUk9QRVJUSUVTOiAgICAgICAgICAgXCJ7MH0gbXVzdCBkZWZpbmUgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGlmIHByZXNlbnRcIixcblxuICAgIC8vIFJlbW90ZSBlcnJvcnNcbiAgICBSRUZfVU5SRVNPTFZFRDogICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZlcmVuY2UgaGFzIG5vdCBiZWVuIHJlc29sdmVkIGR1cmluZyBjb21waWxhdGlvbjogezB9XCIsXG4gICAgVU5SRVNPTFZBQkxFX1JFRkVSRU5DRTogICAgICAgICAgICAgICAgIFwiUmVmZXJlbmNlIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogezB9XCIsXG4gICAgU0NIRU1BX05PVF9SRUFDSEFCTEU6ICAgICAgICAgICAgICAgICAgIFwiVmFsaWRhdG9yIHdhcyBub3QgYWJsZSB0byByZWFkIHNjaGVtYSB3aXRoIHVyaTogezB9XCIsXG4gICAgU0NIRU1BX1RZUEVfRVhQRUNURUQ6ICAgICAgICAgICAgICAgICAgIFwiU2NoZW1hIGlzIGV4cGVjdGVkIHRvIGJlIG9mIHR5cGUgJ29iamVjdCdcIixcbiAgICBTQ0hFTUFfTk9UX0FOX09CSkVDVDogICAgICAgICAgICAgICAgICAgXCJTY2hlbWEgaXMgbm90IGFuIG9iamVjdDogezB9XCIsXG4gICAgQVNZTkNfVElNRU9VVDogICAgICAgICAgICAgICAgICAgICAgICAgIFwiezB9IGFzeW5jaHJvbm91cyB0YXNrKHMpIGhhdmUgdGltZWQgb3V0IGFmdGVyIHsxfSBtc1wiLFxuICAgIFBBUkVOVF9TQ0hFTUFfVkFMSURBVElPTl9GQUlMRUQ6ICAgICAgICBcIlNjaGVtYSBmYWlsZWQgdG8gdmFsaWRhdGUgYWdhaW5zdCBpdHMgcGFyZW50IHNjaGVtYSwgc2VlIGlubmVyIGVycm9ycyBmb3IgZGV0YWlscy5cIixcbiAgICBSRU1PVEVfTk9UX1ZBTElEOiAgICAgICAgICAgICAgICAgICAgICAgXCJSZW1vdGUgcmVmZXJlbmNlIGRpZG4ndCBjb21waWxlIHN1Y2Nlc3NmdWxseTogezB9XCJcblxufTtcbiIsIi8qanNoaW50IG1heGxlbjogZmFsc2UqL1xuXG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZShcInZhbGlkYXRvclwiKTtcblxudmFyIEZvcm1hdFZhbGlkYXRvcnMgPSB7XG4gICAgXCJkYXRlXCI6IGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZnVsbC1kYXRlIGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICAgICAgICB2YXIgbWF0Y2hlcyA9IC9eKFswLTldezR9KS0oWzAtOV17Mn0pLShbMC05XXsyfSkkLy5leGVjKGRhdGUpO1xuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHZhciB5ZWFyID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgLy8gdmFyIG1vbnRoID0gbWF0Y2hlc1syXTtcbiAgICAgICAgLy8gdmFyIGRheSA9IG1hdGNoZXNbM107XG4gICAgICAgIGlmIChtYXRjaGVzWzJdIDwgXCIwMVwiIHx8IG1hdGNoZXNbMl0gPiBcIjEyXCIgfHwgbWF0Y2hlc1szXSA8IFwiMDFcIiB8fCBtYXRjaGVzWzNdID4gXCIzMVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBcImRhdGUtdGltZVwiOiBmdW5jdGlvbiAoZGF0ZVRpbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRlVGltZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGF0ZS10aW1lIGZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSNzZWN0aW9uLTUuNlxuICAgICAgICB2YXIgcyA9IGRhdGVUaW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCJ0XCIpO1xuICAgICAgICBpZiAoIUZvcm1hdFZhbGlkYXRvcnMuZGF0ZShzWzBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtYXRjaGVzID0gL14oWzAtOV17Mn0pOihbMC05XXsyfSk6KFswLTldezJ9KSguWzAtOV0rKT8oenwoWystXVswLTldezJ9OlswLTldezJ9KSkkLy5leGVjKHNbMV0pO1xuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHZhciBob3VyID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgLy8gdmFyIG1pbnV0ZSA9IG1hdGNoZXNbMl07XG4gICAgICAgIC8vIHZhciBzZWNvbmQgPSBtYXRjaGVzWzNdO1xuICAgICAgICAvLyB2YXIgZnJhY3Rpb24gPSBtYXRjaGVzWzRdO1xuICAgICAgICAvLyB2YXIgdGltZXpvbmUgPSBtYXRjaGVzWzVdO1xuICAgICAgICBpZiAobWF0Y2hlc1sxXSA+IFwiMjNcIiB8fCBtYXRjaGVzWzJdID4gXCI1OVwiIHx8IG1hdGNoZXNbM10gPiBcIjU5XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIFwiZW1haWxcIjogZnVuY3Rpb24gKGVtYWlsKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZW1haWwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3IuaXNFbWFpbChlbWFpbCwgeyBcInJlcXVpcmVfdGxkXCI6IHRydWUgfSk7XG4gICAgfSxcbiAgICBcImhvc3RuYW1lXCI6IGZ1bmN0aW9uIChob3N0bmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIGhvc3RuYW1lICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvKlxuICAgICAgICAgICAgaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI2FuY2hvcjExNFxuICAgICAgICAgICAgQSBzdHJpbmcgaW5zdGFuY2UgaXMgdmFsaWQgYWdhaW5zdCB0aGlzIGF0dHJpYnV0ZSBpZiBpdCBpcyBhIHZhbGlkXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbiBmb3IgYW4gSW50ZXJuZXQgaG9zdCBuYW1lLCBhcyBkZWZpbmVkIGJ5IFJGQyAxMDM0LCBzZWN0aW9uIDMuMSBbUkZDMTAzNF0uXG5cbiAgICAgICAgICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzEwMzQjc2VjdGlvbi0zLjVcblxuICAgICAgICAgICAgPGRpZ2l0PiA6Oj0gYW55IG9uZSBvZiB0aGUgdGVuIGRpZ2l0cyAwIHRocm91Z2ggOVxuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gL1swLTldLztcblxuICAgICAgICAgICAgPGxldHRlcj4gOjo9IGFueSBvbmUgb2YgdGhlIDUyIGFscGhhYmV0aWMgY2hhcmFjdGVycyBBIHRocm91Z2ggWiBpbiB1cHBlciBjYXNlIGFuZCBhIHRocm91Z2ggeiBpbiBsb3dlciBjYXNlXG4gICAgICAgICAgICB2YXIgbGV0dGVyID0gL1thLXpBLVpdLztcblxuICAgICAgICAgICAgPGxldC1kaWc+IDo6PSA8bGV0dGVyPiB8IDxkaWdpdD5cbiAgICAgICAgICAgIHZhciBsZXREaWcgPSAvWzAtOWEtekEtWl0vO1xuXG4gICAgICAgICAgICA8bGV0LWRpZy1oeXA+IDo6PSA8bGV0LWRpZz4gfCBcIi1cIlxuICAgICAgICAgICAgdmFyIGxldERpZ0h5cCA9IC9bLTAtOWEtekEtWl0vO1xuXG4gICAgICAgICAgICA8bGRoLXN0cj4gOjo9IDxsZXQtZGlnLWh5cD4gfCA8bGV0LWRpZy1oeXA+IDxsZGgtc3RyPlxuICAgICAgICAgICAgdmFyIGxkaFN0ciA9IC9bLTAtOWEtekEtWl0rLztcblxuICAgICAgICAgICAgPGxhYmVsPiA6Oj0gPGxldHRlcj4gWyBbIDxsZGgtc3RyPiBdIDxsZXQtZGlnPiBdXG4gICAgICAgICAgICB2YXIgbGFiZWwgPSAvW2EtekEtWl0oKFstMC05YS16QS1aXSspP1swLTlhLXpBLVpdKT8vO1xuXG4gICAgICAgICAgICA8c3ViZG9tYWluPiA6Oj0gPGxhYmVsPiB8IDxzdWJkb21haW4+IFwiLlwiIDxsYWJlbD5cbiAgICAgICAgICAgIHZhciBzdWJkb21haW4gPSAvXlthLXpBLVpdKChbLTAtOWEtekEtWl0rKT9bMC05YS16QS1aXSk/KFxcLlthLXpBLVpdKChbLTAtOWEtekEtWl0rKT9bMC05YS16QS1aXSk/KSokLztcblxuICAgICAgICAgICAgPGRvbWFpbj4gOjo9IDxzdWJkb21haW4+IHwgXCIgXCJcbiAgICAgICAgICAgIHZhciBkb21haW4gPSBudWxsO1xuICAgICAgICAqL1xuICAgICAgICB2YXIgdmFsaWQgPSAvXlthLXpBLVpdKChbLTAtOWEtekEtWl0rKT9bMC05YS16QS1aXSk/KFxcLlthLXpBLVpdKChbLTAtOWEtekEtWl0rKT9bMC05YS16QS1aXSk/KSokLy50ZXN0KGhvc3RuYW1lKTtcbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAvLyB0aGUgc3VtIG9mIGFsbCBsYWJlbCBvY3RldHMgYW5kIGxhYmVsIGxlbmd0aHMgaXMgbGltaXRlZCB0byAyNTUuXG4gICAgICAgICAgICBpZiAoaG9zdG5hbWUubGVuZ3RoID4gMjU1KSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICAgICAgLy8gRWFjaCBub2RlIGhhcyBhIGxhYmVsLCB3aGljaCBpcyB6ZXJvIHRvIDYzIG9jdGV0cyBpbiBsZW5ndGhcbiAgICAgICAgICAgIHZhciBsYWJlbHMgPSBob3N0bmFtZS5zcGxpdChcIi5cIik7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykgeyBpZiAobGFiZWxzW2ldLmxlbmd0aCA+IDYzKSB7IHJldHVybiBmYWxzZTsgfSB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgIH0sXG4gICAgXCJob3N0LW5hbWVcIjogZnVuY3Rpb24gKGhvc3RuYW1lKSB7XG4gICAgICAgIHJldHVybiBGb3JtYXRWYWxpZGF0b3JzLmhvc3RuYW1lLmNhbGwodGhpcywgaG9zdG5hbWUpO1xuICAgIH0sXG4gICAgXCJpcHY0XCI6IGZ1bmN0aW9uIChpcHY0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXB2NCAhPT0gXCJzdHJpbmdcIikgeyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLmlzSVAoaXB2NCwgNCk7XG4gICAgfSxcbiAgICBcImlwdjZcIjogZnVuY3Rpb24gKGlwdjYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpcHY2ICE9PSBcInN0cmluZ1wiKSB7IHJldHVybiB0cnVlOyB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3IuaXNJUChpcHY2LCA2KTtcbiAgICB9LFxuICAgIFwicmVnZXhcIjogZnVuY3Rpb24gKHN0cikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVnRXhwKHN0cik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBcInVyaVwiOiBmdW5jdGlvbiAodXJpKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaWN0VXJpcykge1xuICAgICAgICAgICAgcmV0dXJuIEZvcm1hdFZhbGlkYXRvcnNbXCJzdHJpY3QtdXJpXCJdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3phZ2dpbm8vei1zY2hlbWEvaXNzdWVzLzE4XG4gICAgICAgIC8vIFJlZ0V4cCBmcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjYXBwZW5kaXgtQlxuICAgICAgICByZXR1cm4gdHlwZW9mIHVyaSAhPT0gXCJzdHJpbmdcIiB8fCBSZWdFeHAoXCJeKChbXjovPyNdKyk6KT8oLy8oW14vPyNdKikpPyhbXj8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT9cIikudGVzdCh1cmkpO1xuICAgIH0sXG4gICAgXCJzdHJpY3QtdXJpXCI6IGZ1bmN0aW9uICh1cmkpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1cmkgIT09IFwic3RyaW5nXCIgfHwgdmFsaWRhdG9yLmlzVVJMKHVyaSk7XG4gICAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGb3JtYXRWYWxpZGF0b3JzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBGb3JtYXRWYWxpZGF0b3JzID0gcmVxdWlyZShcIi4vRm9ybWF0VmFsaWRhdG9yc1wiKSxcbiAgICBSZXBvcnQgICAgICAgICAgID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpLFxuICAgIFV0aWxzICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9VdGlsc1wiKTtcblxudmFyIEpzb25WYWxpZGF0b3JzID0ge1xuICAgIG11bHRpcGxlT2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjEuMlxuICAgICAgICBpZiAodHlwZW9mIGpzb24gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKGpzb24gLyBzY2hlbWEubXVsdGlwbGVPZikgIT09IFwiaW50ZWdlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJNVUxUSVBMRV9PRlwiLCBbanNvbiwgc2NoZW1hLm11bHRpcGxlT2ZdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtYXhpbXVtOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMS4yLjJcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoanNvbiA+IHNjaGVtYS5tYXhpbXVtKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiTUFYSU1VTVwiLCBbanNvbiwgc2NoZW1hLm1heGltdW1dLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24gPj0gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJNQVhJTVVNX0VYQ0xVU0lWRVwiLCBbanNvbiwgc2NoZW1hLm1heGltdW1dLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBleGNsdXNpdmVNYXhpbXVtOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGNvdmVyZWQgaW4gbWF4aW11bVxuICAgIH0sXG4gICAgbWluaW11bTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjEuMy4yXG4gICAgICAgIGlmICh0eXBlb2YganNvbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGpzb24gPCBzY2hlbWEubWluaW11bSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk1JTklNVU1cIiwgW2pzb24sIHNjaGVtYS5taW5pbXVtXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uIDw9IHNjaGVtYS5taW5pbXVtKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiTUlOSU1VTV9FWENMVVNJVkVcIiwgW2pzb24sIHNjaGVtYS5taW5pbXVtXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgZXhjbHVzaXZlTWluaW11bTogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBjb3ZlcmVkIGluIG1pbmltdW1cbiAgICB9LFxuICAgIG1heExlbmd0aDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjIuMS4yXG4gICAgICAgIGlmICh0eXBlb2YganNvbiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChVdGlscy51Y3MyZGVjb2RlKGpzb24pLmxlbmd0aCA+IHNjaGVtYS5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk1BWF9MRU5HVEhcIiwgW2pzb24ubGVuZ3RoLCBzY2hlbWEubWF4TGVuZ3RoXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWluTGVuZ3RoOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMi4yLjJcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFV0aWxzLnVjczJkZWNvZGUoanNvbikubGVuZ3RoIDwgc2NoZW1hLm1pbkxlbmd0aCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiTUlOX0xFTkdUSFwiLCBbanNvbi5sZW5ndGgsIHNjaGVtYS5taW5MZW5ndGhdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwYXR0ZXJuOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMi4zLjJcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFJlZ0V4cChzY2hlbWEucGF0dGVybikudGVzdChqc29uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlBBVFRFUk5cIiwgW3NjaGVtYS5wYXR0ZXJuLCBqc29uXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkaXRpb25hbEl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4xLjJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIHZhbHVlIG9mIFwiYWRkaXRpb25hbEl0ZW1zXCIgaXMgYm9vbGVhbiB2YWx1ZSBmYWxzZSBhbmQgdGhlIHZhbHVlIG9mIFwiaXRlbXNcIiBpcyBhbiBhcnJheSxcbiAgICAgICAgLy8gdGhlIGpzb24gaXMgdmFsaWQgaWYgaXRzIHNpemUgaXMgbGVzcyB0aGFuLCBvciBlcXVhbCB0bywgdGhlIHNpemUgb2YgXCJpdGVtc1wiLlxuICAgICAgICBpZiAoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gZmFsc2UgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICBpZiAoanNvbi5sZW5ndGggPiBzY2hlbWEuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQVJSQVlfQURESVRJT05BTF9JVEVNU1wiLCBudWxsLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBpdGVtczogZnVuY3Rpb24gKCkgeyAvKnJlcG9ydCwgc2NoZW1hLCBqc29uKi9cbiAgICAgICAgLy8gY292ZXJlZCBpbiBhZGRpdGlvbmFsSXRlbXNcbiAgICB9LFxuICAgIG1heEl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4yLjJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGpzb24ubGVuZ3RoID4gc2NoZW1hLm1heEl0ZW1zKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJBUlJBWV9MRU5HVEhfTE9OR1wiLCBbanNvbi5sZW5ndGgsIHNjaGVtYS5tYXhJdGVtc10sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1pbkl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4zLjJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGpzb24ubGVuZ3RoIDwgc2NoZW1hLm1pbkl0ZW1zKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJBUlJBWV9MRU5HVEhfU0hPUlRcIiwgW2pzb24ubGVuZ3RoLCBzY2hlbWEubWluSXRlbXNdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB1bmlxdWVJdGVtczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjMuNC4yXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEudW5pcXVlSXRlbXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaGVzID0gW107XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNVbmlxdWVBcnJheShqc29uLCBtYXRjaGVzKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJBUlJBWV9VTklRVUVcIiwgbWF0Y2hlcywgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWF4UHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMS4yXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoanNvbikgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIga2V5c0NvdW50ID0gT2JqZWN0LmtleXMoanNvbikubGVuZ3RoO1xuICAgICAgICBpZiAoa2V5c0NvdW50ID4gc2NoZW1hLm1heFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk9CSkVDVF9QUk9QRVJUSUVTX01BWElNVU1cIiwgW2tleXNDb3VudCwgc2NoZW1hLm1heFByb3BlcnRpZXNdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtaW5Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC4yLjJcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhqc29uKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXlzQ291bnQgPSBPYmplY3Qua2V5cyhqc29uKS5sZW5ndGg7XG4gICAgICAgIGlmIChrZXlzQ291bnQgPCBzY2hlbWEubWluUHJvcGVydGllcykge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiT0JKRUNUX1BST1BFUlRJRVNfTUlOSU1VTVwiLCBba2V5c0NvdW50LCBzY2hlbWEubWluUHJvcGVydGllc10sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC4zLjJcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhqc29uKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpZHggPSBzY2hlbWEucmVxdWlyZWQubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIHZhciByZXF1aXJlZFByb3BlcnR5TmFtZSA9IHNjaGVtYS5yZXF1aXJlZFtpZHhdO1xuICAgICAgICAgICAgaWYgKGpzb25bcmVxdWlyZWRQcm9wZXJ0eU5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJPQkpFQ1RfTUlTU0lOR19SRVFVSVJFRF9QUk9QRVJUWVwiLCBbcmVxdWlyZWRQcm9wZXJ0eU5hbWVdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGNvdmVyZWQgaW4gcHJvcGVydGllcyBhbmQgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgICAgaWYgKHNjaGVtYS5wcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgJiYgc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBKc29uVmFsaWRhdG9ycy5wcm9wZXJ0aWVzLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBwYXR0ZXJuUHJvcGVydGllczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGNvdmVyZWQgaW4gcHJvcGVydGllc1xuICAgICAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25WYWxpZGF0b3JzLnByb3BlcnRpZXMuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjQuMlxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKGpzb24pICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBzY2hlbWEucHJvcGVydGllcyAhPT0gdW5kZWZpbmVkID8gc2NoZW1hLnByb3BlcnRpZXMgOiB7fTtcbiAgICAgICAgdmFyIHBhdHRlcm5Qcm9wZXJ0aWVzID0gc2NoZW1hLnBhdHRlcm5Qcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQgPyBzY2hlbWEucGF0dGVyblByb3BlcnRpZXMgOiB7fTtcbiAgICAgICAgaWYgKHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBzZXQgb2YgdGhlIGpzb24gdG8gdmFsaWRhdGUuXG4gICAgICAgICAgICB2YXIgcyA9IE9iamVjdC5rZXlzKGpzb24pO1xuICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHNldCBmcm9tIFwicHJvcGVydGllc1wiLlxuICAgICAgICAgICAgdmFyIHAgPSBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBzZXQgZnJvbSBcInBhdHRlcm5Qcm9wZXJ0aWVzXCIuXG4gICAgICAgICAgICB2YXIgcHAgPSBPYmplY3Qua2V5cyhwYXR0ZXJuUHJvcGVydGllcyk7XG4gICAgICAgICAgICAvLyByZW1vdmUgZnJvbSBcInNcIiBhbGwgZWxlbWVudHMgb2YgXCJwXCIsIGlmIGFueTtcbiAgICAgICAgICAgIHMgPSBVdGlscy5kaWZmZXJlbmNlKHMsIHApO1xuICAgICAgICAgICAgLy8gZm9yIGVhY2ggcmVnZXggaW4gXCJwcFwiLCByZW1vdmUgYWxsIGVsZW1lbnRzIG9mIFwic1wiIHdoaWNoIHRoaXMgcmVnZXggbWF0Y2hlcy5cbiAgICAgICAgICAgIHZhciBpZHggPSBwcC5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVnRXhwID0gUmVnRXhwKHBwW2lkeF0pLFxuICAgICAgICAgICAgICAgICAgICBpZHgyID0gcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGlkeDItLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnRXhwLnRlc3Qoc1tpZHgyXSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMuc3BsaWNlKGlkeDIsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiB0aGUganNvbiBzdWNjZWVkcyBpZiwgYWZ0ZXIgdGhlc2UgdHdvIHN0ZXBzLCBzZXQgXCJzXCIgaXMgZW1wdHkuXG4gICAgICAgICAgICBpZiAocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gYXNzdW1lQWRkaXRpb25hbCBjYW4gYmUgYW4gYXJyYXkgb2YgYWxsb3dlZCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgdmFyIGlkeDMgPSB0aGlzLm9wdGlvbnMuYXNzdW1lQWRkaXRpb25hbC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGlkeDMpIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlkeDMtLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlvID0gcy5pbmRleE9mKHRoaXMub3B0aW9ucy5hc3N1bWVBZGRpdGlvbmFsW2lkeDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbyAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNwbGljZShpbywgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJPQkpFQ1RfQURESVRJT05BTF9QUk9QRVJUSUVTXCIsIFtzXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuNS4yXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoanNvbikgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLmRlcGVuZGVuY2llcyksXG4gICAgICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgYWxsIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3lOYW1lID0ga2V5c1tpZHhdO1xuICAgICAgICAgICAgaWYgKGpzb25bZGVwZW5kZW5jeU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3lEZWZpbml0aW9uID0gc2NoZW1hLmRlcGVuZGVuY2llc1tkZXBlbmRlbmN5TmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhkZXBlbmRlbmN5RGVmaW5pdGlvbikgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgZGVwZW5kZW5jeSBpcyBhIHNjaGVtYSwgdmFsaWRhdGUgYWdhaW5zdCB0aGlzIHNjaGVtYVxuICAgICAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBkZXBlbmRlbmN5RGVmaW5pdGlvbiwganNvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgZGVwZW5kZW5jeSBpcyBhbiBhcnJheSwgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYWxsIHByb3BlcnRpZXMgaW4gdGhpcyBhcnJheVxuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4MiA9IGRlcGVuZGVuY3lEZWZpbml0aW9uLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlkeDItLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkUHJvcGVydHlOYW1lID0gZGVwZW5kZW5jeURlZmluaXRpb25baWR4Ml07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbltyZXF1aXJlZFByb3BlcnR5TmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk9CSkVDVF9ERVBFTkRFTkNZX0tFWVwiLCBbcmVxdWlyZWRQcm9wZXJ0eU5hbWUsIGRlcGVuZGVuY3lOYW1lXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgZW51bTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuMS4yXG4gICAgICAgIHZhciBtYXRjaCA9IGZhbHNlLFxuICAgICAgICAgICAgY2FzZUluc2Vuc2l0aXZlTWF0Y2ggPSBmYWxzZSxcbiAgICAgICAgICAgIGlkeCA9IHNjaGVtYS5lbnVtLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuYXJlRXF1YWwoanNvbiwgc2NoZW1hLmVudW1baWR4XSkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFV0aWxzLmFyZUVxdWFsKGpzb24sIHNjaGVtYS5lbnVtW2lkeF0pLCB7IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb246IHRydWUgfSkge1xuICAgICAgICAgICAgICAgIGNhc2VJbnNlbnNpdGl2ZU1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHZhciBlcnJvciA9IGNhc2VJbnNlbnNpdGl2ZU1hdGNoICYmIHRoaXMub3B0aW9ucy5lbnVtQ2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiA/IFwiRU5VTV9DQVNFX01JU01BVENIXCIgOiBcIkVOVU1fTUlTTUFUQ0hcIjtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihlcnJvciwgW2pzb25dLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB0eXBlOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS4yLjJcbiAgICAgICAgdmFyIGpzb25UeXBlID0gVXRpbHMud2hhdElzKGpzb24pO1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpZiAoanNvblR5cGUgIT09IHNjaGVtYS50eXBlICYmIChqc29uVHlwZSAhPT0gXCJpbnRlZ2VyXCIgfHwgc2NoZW1hLnR5cGUgIT09IFwibnVtYmVyXCIpKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiSU5WQUxJRF9UWVBFXCIsIFtzY2hlbWEudHlwZSwganNvblR5cGVdLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlLmluZGV4T2YoanNvblR5cGUpID09PSAtMSAmJiAoanNvblR5cGUgIT09IFwiaW50ZWdlclwiIHx8IHNjaGVtYS50eXBlLmluZGV4T2YoXCJudW1iZXJcIikgPT09IC0xKSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIklOVkFMSURfVFlQRVwiLCBbc2NoZW1hLnR5cGUsIGpzb25UeXBlXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWxsT2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjMuMlxuICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLmFsbE9mLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRhdGVSZXN1bHQgPSBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuYWxsT2ZbaWR4XSwganNvbik7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJyZWFrT25GaXJzdEVycm9yICYmIHZhbGlkYXRlUmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhbnlPZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNC4yXG4gICAgICAgIHZhciBzdWJSZXBvcnRzID0gW10sXG4gICAgICAgICAgICBwYXNzZWQgPSBmYWxzZSxcbiAgICAgICAgICAgIGlkeCA9IHNjaGVtYS5hbnlPZi5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGlkeC0tICYmIHBhc3NlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHZhciBzdWJSZXBvcnQgPSBuZXcgUmVwb3J0KHJlcG9ydCk7XG4gICAgICAgICAgICBzdWJSZXBvcnRzLnB1c2goc3ViUmVwb3J0KTtcbiAgICAgICAgICAgIHBhc3NlZCA9IGV4cG9ydHMudmFsaWRhdGUuY2FsbCh0aGlzLCBzdWJSZXBvcnQsIHNjaGVtYS5hbnlPZltpZHhdLCBqc29uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJBTllfT0ZfTUlTU0lOR1wiLCB1bmRlZmluZWQsIHN1YlJlcG9ydHMsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG9uZU9mOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS41LjJcbiAgICAgICAgdmFyIHBhc3NlcyA9IDAsXG4gICAgICAgICAgICBzdWJSZXBvcnRzID0gW10sXG4gICAgICAgICAgICBpZHggPSBzY2hlbWEub25lT2YubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIHN1YlJlcG9ydCA9IG5ldyBSZXBvcnQocmVwb3J0LCB7IG1heEVycm9yczogMSB9KTtcbiAgICAgICAgICAgIHN1YlJlcG9ydHMucHVzaChzdWJSZXBvcnQpO1xuICAgICAgICAgICAgaWYgKGV4cG9ydHMudmFsaWRhdGUuY2FsbCh0aGlzLCBzdWJSZXBvcnQsIHNjaGVtYS5vbmVPZltpZHhdLCBqc29uKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHBhc3NlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhc3NlcyA9PT0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiT05FX09GX01JU1NJTkdcIiwgdW5kZWZpbmVkLCBzdWJSZXBvcnRzLCBzY2hlbWEpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhc3NlcyA+IDEpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk9ORV9PRl9NVUxUSVBMRVwiLCBudWxsLCBudWxsLCBzY2hlbWEpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBub3Q6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjYuMlxuICAgICAgICB2YXIgc3ViUmVwb3J0ID0gbmV3IFJlcG9ydChyZXBvcnQpO1xuICAgICAgICBpZiAoZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHN1YlJlcG9ydCwgc2NoZW1hLm5vdCwganNvbikgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIk5PVF9QQVNTRURcIiwgbnVsbCwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGVmaW5pdGlvbnM6IGZ1bmN0aW9uICgpIHsgLypyZXBvcnQsIHNjaGVtYSwganNvbiovXG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNy4yXG4gICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZVxuICAgIH0sXG4gICAgZm9ybWF0OiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjcuMlxuICAgICAgICB2YXIgZm9ybWF0VmFsaWRhdG9yRm4gPSBGb3JtYXRWYWxpZGF0b3JzW3NjaGVtYS5mb3JtYXRdO1xuICAgICAgICBpZiAodHlwZW9mIGZvcm1hdFZhbGlkYXRvckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXRWYWxpZGF0b3JGbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAvLyBhc3luY1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRBc3luY1Rhc2soZm9ybWF0VmFsaWRhdG9yRm4sIFtqc29uXSwgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJJTlZBTElEX0ZPUk1BVFwiLCBbc2NoZW1hLmZvcm1hdCwganNvbl0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc3luY1xuICAgICAgICAgICAgICAgIGlmIChmb3JtYXRWYWxpZGF0b3JGbi5jYWxsKHRoaXMsIGpzb24pICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIklOVkFMSURfRk9STUFUXCIsIFtzY2hlbWEuZm9ybWF0LCBqc29uXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVVua25vd25Gb3JtYXRzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJVTktOT1dOX0ZPUk1BVFwiLCBbc2NoZW1hLmZvcm1hdF0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG52YXIgcmVjdXJzZUFycmF5ID0gZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hLCBqc29uKSB7XG4gICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjguMlxuXG4gICAgdmFyIGlkeCA9IGpzb24ubGVuZ3RoO1xuXG4gICAgLy8gSWYgXCJpdGVtc1wiIGlzIGFuIGFycmF5LCB0aGlzIHNpdHVhdGlvbiwgdGhlIHNjaGVtYSBkZXBlbmRzIG9uIHRoZSBpbmRleDpcbiAgICAvLyBpZiB0aGUgaW5kZXggaXMgbGVzcyB0aGFuLCBvciBlcXVhbCB0bywgdGhlIHNpemUgb2YgXCJpdGVtc1wiLFxuICAgIC8vIHRoZSBjaGlsZCBpbnN0YW5jZSBtdXN0IGJlIHZhbGlkIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgc2NoZW1hIGluIHRoZSBcIml0ZW1zXCIgYXJyYXk7XG4gICAgLy8gb3RoZXJ3aXNlLCBpdCBtdXN0IGJlIHZhbGlkIGFnYWluc3QgdGhlIHNjaGVtYSBkZWZpbmVkIGJ5IFwiYWRkaXRpb25hbEl0ZW1zXCIuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuXG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgLy8gZXF1YWwgdG8gZG9lc250IG1ha2Ugc2Vuc2UgaGVyZVxuICAgICAgICAgICAgaWYgKGlkeCA8IHNjaGVtYS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuaXRlbXNbaWR4XSwganNvbltpZHhdKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbWlnaHQgYmUgYm9vbGVhbiwgc28gY2hlY2sgdGhhdCBpdCdzIGFuIG9iamVjdFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywganNvbltpZHhdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEuaXRlbXMgPT09IFwib2JqZWN0XCIpIHtcblxuICAgICAgICAvLyBJZiBpdGVtcyBpcyBhIHNjaGVtYSwgdGhlbiB0aGUgY2hpbGQgaW5zdGFuY2UgbXVzdCBiZSB2YWxpZCBhZ2FpbnN0IHRoaXMgc2NoZW1hLFxuICAgICAgICAvLyByZWdhcmRsZXNzIG9mIGl0cyBpbmRleCwgYW5kIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIFwiYWRkaXRpb25hbEl0ZW1zXCIuXG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuaXRlbXMsIGpzb25baWR4XSk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgfVxufTtcblxudmFyIHJlY3Vyc2VPYmplY3QgPSBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEsIGpzb24pIHtcbiAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uOC4zXG5cbiAgICAvLyBJZiBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIgaXMgYWJzZW50LCBpdCBpcyBjb25zaWRlcmVkIHByZXNlbnQgd2l0aCBhbiBlbXB0eSBzY2hlbWEgYXMgYSB2YWx1ZS5cbiAgICAvLyBJbiBhZGRpdGlvbiwgYm9vbGVhbiB2YWx1ZSB0cnVlIGlzIGNvbnNpZGVyZWQgZXF1aXZhbGVudCB0byBhbiBlbXB0eSBzY2hlbWEuXG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzO1xuICAgIGlmIChhZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdHJ1ZSB8fCBhZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgLy8gcCAtIFRoZSBwcm9wZXJ0eSBzZXQgZnJvbSBcInByb3BlcnRpZXNcIi5cbiAgICB2YXIgcCA9IHNjaGVtYS5wcm9wZXJ0aWVzID8gT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMpIDogW107XG5cbiAgICAvLyBwcCAtIFRoZSBwcm9wZXJ0eSBzZXQgZnJvbSBcInBhdHRlcm5Qcm9wZXJ0aWVzXCIuIEVsZW1lbnRzIG9mIHRoaXMgc2V0IHdpbGwgYmUgY2FsbGVkIHJlZ2V4ZXMgZm9yIGNvbnZlbmllbmNlLlxuICAgIHZhciBwcCA9IHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcyA/IE9iamVjdC5rZXlzKHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcykgOiBbXTtcblxuICAgIC8vIG0gLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgY2hpbGQuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhqc29uKSxcbiAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIG0gPSBrZXlzW2lkeF0sXG4gICAgICAgICAgICBwcm9wZXJ0eVZhbHVlID0ganNvblttXTtcblxuICAgICAgICAvLyBzIC0gVGhlIHNldCBvZiBzY2hlbWFzIGZvciB0aGUgY2hpbGQgaW5zdGFuY2UuXG4gICAgICAgIHZhciBzID0gW107XG5cbiAgICAgICAgLy8gMS4gSWYgc2V0IFwicFwiIGNvbnRhaW5zIHZhbHVlIFwibVwiLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIHNjaGVtYSBpbiBcInByb3BlcnRpZXNcIiBpcyBhZGRlZCB0byBcInNcIi5cbiAgICAgICAgaWYgKHAuaW5kZXhPZihtKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHMucHVzaChzY2hlbWEucHJvcGVydGllc1ttXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBGb3IgZWFjaCByZWdleCBpbiBcInBwXCIsIGlmIGl0IG1hdGNoZXMgXCJtXCIgc3VjY2Vzc2Z1bGx5LCB0aGUgY29ycmVzcG9uZGluZyBzY2hlbWEgaW4gXCJwYXR0ZXJuUHJvcGVydGllc1wiIGlzIGFkZGVkIHRvIFwic1wiLlxuICAgICAgICB2YXIgaWR4MiA9IHBwLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeDItLSkge1xuICAgICAgICAgICAgdmFyIHJlZ2V4U3RyaW5nID0gcHBbaWR4Ml07XG4gICAgICAgICAgICBpZiAoUmVnRXhwKHJlZ2V4U3RyaW5nKS50ZXN0KG0pID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcy5wdXNoKHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllc1tyZWdleFN0cmluZ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gVGhlIHNjaGVtYSBkZWZpbmVkIGJ5IFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIiBpcyBhZGRlZCB0byBcInNcIiBpZiBhbmQgb25seSBpZiwgYXQgdGhpcyBzdGFnZSwgXCJzXCIgaXMgZW1wdHkuXG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMCAmJiBhZGRpdGlvbmFsUHJvcGVydGllcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHMucHVzaChhZGRpdGlvbmFsUHJvcGVydGllcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSBhcmUgcGFzc2luZyB0ZXN0cyBldmVuIHdpdGhvdXQgdGhpcyBhc3NlcnQgYmVjYXVzZSB0aGlzIGlzIGNvdmVyZWQgYnkgcHJvcGVydGllcyBjaGVja1xuICAgICAgICAvLyBpZiBzIGlzIGVtcHR5IGluIHRoaXMgc3RhZ2UsIG5vIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIGFyZSBhbGxvd2VkXG4gICAgICAgIC8vIHJlcG9ydC5leHBlY3Qocy5sZW5ndGggIT09IDAsICdFMDAxJywgbSk7XG5cbiAgICAgICAgLy8gSW5zdGFuY2UgcHJvcGVydHkgdmFsdWUgbXVzdCBwYXNzIGFsbCBzY2hlbWFzIGZyb20gc1xuICAgICAgICBpZHgyID0gcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2gobSk7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzW2lkeDJdLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0cy52YWxpZGF0ZSA9IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSwganNvbikge1xuXG4gICAgcmVwb3J0LmNvbW1vbkVycm9yTWVzc2FnZSA9IFwiSlNPTl9PQkpFQ1RfVkFMSURBVElPTl9GQUlMRURcIjtcblxuICAgIC8vIGNoZWNrIGlmIHNjaGVtYSBpcyBhbiBvYmplY3RcbiAgICB2YXIgdG8gPSBVdGlscy53aGF0SXMoc2NoZW1hKTtcbiAgICBpZiAodG8gIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiU0NIRU1BX05PVF9BTl9PQkpFQ1RcIiwgW3RvXSwgbnVsbCwgc2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHNjaGVtYSBpcyBlbXB0eSwgZXZlcnl0aGluZyBpcyB2YWxpZCBhZ2FpbnN0IGVtcHR5IHNjaGVtYVxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCByZWN1cnNpdmVseSwgc28gd2UgbmVlZCB0byByZW1lbWJlciBvdXIgcm9vdFxuICAgIHZhciBpc1Jvb3QgPSBmYWxzZTtcbiAgICBpZiAoIXJlcG9ydC5yb290U2NoZW1hKSB7XG4gICAgICAgIHJlcG9ydC5yb290U2NoZW1hID0gc2NoZW1hO1xuICAgICAgICBpc1Jvb3QgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZvbGxvdyBzY2hlbWEuJHJlZiBrZXlzXG4gICAgaWYgKHNjaGVtYS4kcmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gYXZvaWQgaW5maW5pdGUgbG9vcCB3aXRoIG1heFJlZnNcbiAgICAgICAgdmFyIG1heFJlZnMgPSA5OTtcbiAgICAgICAgd2hpbGUgKHNjaGVtYS4kcmVmICYmIG1heFJlZnMgPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5fXyRyZWZSZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlJFRl9VTlJFU09MVkVEXCIsIFtzY2hlbWEuJHJlZl0sIG51bGwsIHNjaGVtYSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5fXyRyZWZSZXNvbHZlZCA9PT0gc2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNjaGVtYSA9IHNjaGVtYS5fXyRyZWZSZXNvbHZlZDtcbiAgICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heFJlZnMtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4UmVmcyA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2lyY3VsYXIgZGVwZW5kZW5jeSBieSAkcmVmIHJlZmVyZW5jZXMhXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHlwZSBjaGVja2luZyBmaXJzdFxuICAgIHZhciBqc29uVHlwZSA9IFV0aWxzLndoYXRJcyhqc29uKTtcbiAgICBpZiAoc2NoZW1hLnR5cGUpIHtcbiAgICAgICAga2V5cy5zcGxpY2Uoa2V5cy5pbmRleE9mKFwidHlwZVwiKSwgMSk7XG4gICAgICAgIEpzb25WYWxpZGF0b3JzLnR5cGUuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgICAgIGlmIChyZXBvcnQuZXJyb3JzLmxlbmd0aCAmJiB0aGlzLm9wdGlvbnMuYnJlYWtPbkZpcnN0RXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vdyBpdGVyYXRlIGFsbCB0aGUga2V5cyBpbiBzY2hlbWEgYW5kIGV4ZWN1dGUgdmFsaWRhdGlvbiBtZXRob2RzXG4gICAgdmFyIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICBpZiAoSnNvblZhbGlkYXRvcnNba2V5c1tpZHhdXSkge1xuICAgICAgICAgICAgSnNvblZhbGlkYXRvcnNba2V5c1tpZHhdXS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLCBqc29uKTtcbiAgICAgICAgICAgIGlmIChyZXBvcnQuZXJyb3JzLmxlbmd0aCAmJiB0aGlzLm9wdGlvbnMuYnJlYWtPbkZpcnN0RXJyb3IpIHsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXBvcnQuZXJyb3JzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm9wdGlvbnMuYnJlYWtPbkZpcnN0RXJyb3IgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChqc29uVHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICByZWN1cnNlQXJyYXkuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoanNvblR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlY3Vyc2VPYmplY3QuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwganNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0b3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdG9yKHJlcG9ydCwgc2NoZW1hLCBqc29uKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZSByb290IHBvaW50ZXIgYW55bW9yZVxuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgcmVwb3J0LnJvb3RTY2hlbWEgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIHZhbGlkIGp1c3QgdG8gYmUgYWJsZSB0byBicmVhayBhdCBzb21lIGNvZGUgcG9pbnRzXG4gICAgcmV0dXJuIHJlcG9ydC5lcnJvcnMubGVuZ3RoID09PSAwO1xuXG59O1xuIiwiLy8gTnVtYmVyLmlzRmluaXRlIHBvbHlmaWxsXG4vLyBodHRwOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1udW1iZXIuaXNmaW5pdGVcbmlmICh0eXBlb2YgTnVtYmVyLmlzRmluaXRlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBOdW1iZXIuaXNGaW5pdGUgPSBmdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgICAvLyAxLiBJZiBUeXBlKG51bWJlcikgaXMgbm90IE51bWJlciwgcmV0dXJuIGZhbHNlLlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMi4gSWYgbnVtYmVyIGlzIE5hTiwgK+KIniwgb3Ig4oiS4oieLCByZXR1cm4gZmFsc2UuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUgfHwgdmFsdWUgPT09IEluZmluaXR5IHx8IHZhbHVlID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLiBPdGhlcndpc2UsIHJldHVybiB0cnVlLlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBnZXQgICAgPSByZXF1aXJlKFwibG9kYXNoLmdldFwiKTtcbnZhciBFcnJvcnMgPSByZXF1aXJlKFwiLi9FcnJvcnNcIik7XG52YXIgVXRpbHMgID0gcmVxdWlyZShcIi4vVXRpbHNcIik7XG5cbmZ1bmN0aW9uIFJlcG9ydChwYXJlbnRPck9wdGlvbnMsIHJlcG9ydE9wdGlvbnMpIHtcbiAgICB0aGlzLnBhcmVudFJlcG9ydCA9IHBhcmVudE9yT3B0aW9ucyBpbnN0YW5jZW9mIFJlcG9ydCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50T3JPcHRpb25zIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBwYXJlbnRPck9wdGlvbnMgaW5zdGFuY2VvZiBSZXBvcnQgP1xuICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPck9wdGlvbnMub3B0aW9ucyA6XG4gICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE9yT3B0aW9ucyB8fCB7fTtcblxuICAgIHRoaXMucmVwb3J0T3B0aW9ucyA9IHJlcG9ydE9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgIHRoaXMucGF0aCA9IFtdO1xuICAgIHRoaXMuYXN5bmNUYXNrcyA9IFtdO1xufVxuXG5SZXBvcnQucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuYXN5bmNUYXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFzeW5jIHRhc2tzIHBlbmRpbmcsIGNhbid0IGFuc3dlciBpc1ZhbGlkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lcnJvcnMubGVuZ3RoID09PSAwO1xufTtcblxuUmVwb3J0LnByb3RvdHlwZS5hZGRBc3luY1Rhc2sgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIGFzeW5jVGFza1Jlc3VsdFByb2Nlc3NGbikge1xuICAgIHRoaXMuYXN5bmNUYXNrcy5wdXNoKFtmbiwgYXJncywgYXN5bmNUYXNrUmVzdWx0UHJvY2Vzc0ZuXSk7XG59O1xuXG5SZXBvcnQucHJvdG90eXBlLnByb2Nlc3NBc3luY1Rhc2tzID0gZnVuY3Rpb24gKHRpbWVvdXQsIGNhbGxiYWNrKSB7XG5cbiAgICB2YXIgdmFsaWRhdGlvblRpbWVvdXQgPSB0aW1lb3V0IHx8IDIwMDAsXG4gICAgICAgIHRhc2tzQ291bnQgICAgICAgID0gdGhpcy5hc3luY1Rhc2tzLmxlbmd0aCxcbiAgICAgICAgaWR4ICAgICAgICAgICAgICAgPSB0YXNrc0NvdW50LFxuICAgICAgICB0aW1lZE91dCAgICAgICAgICA9IGZhbHNlLFxuICAgICAgICBzZWxmICAgICAgICAgICAgICA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBmaW5pc2goKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHZhbGlkID0gc2VsZi5lcnJvcnMubGVuZ3RoID09PSAwLFxuICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkID8gdW5kZWZpbmVkIDogc2VsZi5lcnJvcnM7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIsIHZhbGlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzcG9uZChhc3luY1Rhc2tSZXN1bHRQcm9jZXNzRm4pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhc3luY1Rhc2tSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmICh0aW1lZE91dCkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIGFzeW5jVGFza1Jlc3VsdFByb2Nlc3NGbihhc3luY1Rhc2tSZXN1bHQpO1xuICAgICAgICAgICAgaWYgKC0tdGFza3NDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbmlzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZpbmlzaCBpZiB0YXNrcyBhcmUgY29tcGxldGVkIG9yIHRoZXJlIGFyZSBhbnkgZXJyb3JzIGFuZCBicmVha2luZyBvbiBmaXJzdCBlcnJvciB3YXMgcmVxdWVzdGVkXG4gICAgaWYgKHRhc2tzQ291bnQgPT09IDAgfHwgKHRoaXMuZXJyb3JzLmxlbmd0aCA+IDAgJiYgdGhpcy5vcHRpb25zLmJyZWFrT25GaXJzdEVycm9yKSkge1xuICAgICAgICBmaW5pc2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICB2YXIgdGFzayA9IHRoaXMuYXN5bmNUYXNrc1tpZHhdO1xuICAgICAgICB0YXNrWzBdLmFwcGx5KG51bGwsIHRhc2tbMV0uY29uY2F0KHJlc3BvbmQodGFza1syXSkpKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRhc2tzQ291bnQgPiAwKSB7XG4gICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLmFkZEVycm9yKFwiQVNZTkNfVElNRU9VVFwiLCBbdGFza3NDb3VudCwgdmFsaWRhdGlvblRpbWVvdXRdKTtcbiAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuZXJyb3JzLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9LCB2YWxpZGF0aW9uVGltZW91dCk7XG5cbn07XG5cblJlcG9ydC5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uIChyZXR1cm5QYXRoQXNTdHJpbmcpIHtcbiAgICB2YXIgcGF0aCA9IFtdO1xuICAgIGlmICh0aGlzLnBhcmVudFJlcG9ydCkge1xuICAgICAgICBwYXRoID0gcGF0aC5jb25jYXQodGhpcy5wYXJlbnRSZXBvcnQucGF0aCk7XG4gICAgfVxuICAgIHBhdGggPSBwYXRoLmNvbmNhdCh0aGlzLnBhdGgpO1xuXG4gICAgaWYgKHJldHVyblBhdGhBc1N0cmluZyAhPT0gdHJ1ZSkge1xuICAgICAgICAvLyBTYW5pdGl6ZSB0aGUgcGF0aCBzZWdtZW50cyAoaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMSNzZWN0aW9uLTQpXG4gICAgICAgIHBhdGggPSBcIiMvXCIgKyBwYXRoLm1hcChmdW5jdGlvbiAoc2VnbWVudCkge1xuXG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNBYnNvbHV0ZVVyaShzZWdtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInVyaShcIiArIHNlZ21lbnQgKyBcIilcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnQucmVwbGFjZSgvXFx+L2csIFwifjBcIikucmVwbGFjZSgvXFwvL2csIFwifjFcIik7XG4gICAgICAgIH0pLmpvaW4oXCIvXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5cblJlcG9ydC5wcm90b3R5cGUuZ2V0U2NoZW1hSWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICBpZiAoIXRoaXMucm9vdFNjaGVtYSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBnZXQgdGhlIGVycm9yIHBhdGggYXMgYW4gYXJyYXlcbiAgICB2YXIgcGF0aCA9IFtdO1xuICAgIGlmICh0aGlzLnBhcmVudFJlcG9ydCkge1xuICAgICAgICBwYXRoID0gcGF0aC5jb25jYXQodGhpcy5wYXJlbnRSZXBvcnQucGF0aCk7XG4gICAgfVxuICAgIHBhdGggPSBwYXRoLmNvbmNhdCh0aGlzLnBhdGgpO1xuXG4gICAgLy8gdHJ5IHRvIGZpbmQgaWQgaW4gdGhlIGVycm9yIHBhdGhcbiAgICB3aGlsZSAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBvYmogPSBnZXQodGhpcy5yb290U2NoZW1hLCBwYXRoKTtcbiAgICAgICAgaWYgKG9iaiAmJiBvYmouaWQpIHsgcmV0dXJuIG9iai5pZDsgfVxuICAgICAgICBwYXRoLnBvcCgpO1xuICAgIH1cblxuICAgIC8vIHJldHVybiBpZCBvZiB0aGUgcm9vdFxuICAgIHJldHVybiB0aGlzLnJvb3RTY2hlbWEuaWQ7XG59O1xuXG5SZXBvcnQucHJvdG90eXBlLmhhc0Vycm9yID0gZnVuY3Rpb24gKGVycm9yQ29kZSwgcGFyYW1zKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuZXJyb3JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JzW2lkeF0uY29kZSA9PT0gZXJyb3JDb2RlKSB7XG4gICAgICAgICAgICAvLyBhc3N1bWUgbWF0Y2hcbiAgICAgICAgICAgIHZhciBtYXRjaCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBwYXJhbXMgdG9vXG4gICAgICAgICAgICB2YXIgaWR4MiA9IHRoaXMuZXJyb3JzW2lkeF0ucGFyYW1zLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJvcnNbaWR4XS5wYXJhbXNbaWR4Ml0gIT09IHBhcmFtc1tpZHgyXSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgbWF0Y2gsIHJldHVybiB0cnVlXG4gICAgICAgICAgICBpZiAobWF0Y2gpIHsgcmV0dXJuIG1hdGNoOyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuUmVwb3J0LnByb3RvdHlwZS5hZGRFcnJvciA9IGZ1bmN0aW9uIChlcnJvckNvZGUsIHBhcmFtcywgc3ViUmVwb3J0cywgc2NoZW1hKSB7XG4gICAgaWYgKCFlcnJvckNvZGUpIHsgdGhyb3cgbmV3IEVycm9yKFwiTm8gZXJyb3JDb2RlIHBhc3NlZCBpbnRvIGFkZEVycm9yKClcIik7IH1cblxuICAgIHRoaXMuYWRkQ3VzdG9tRXJyb3IoZXJyb3JDb2RlLCBFcnJvcnNbZXJyb3JDb2RlXSwgcGFyYW1zLCBzdWJSZXBvcnRzLCBzY2hlbWEpO1xufTtcblxuUmVwb3J0LnByb3RvdHlwZS5hZGRDdXN0b21FcnJvciA9IGZ1bmN0aW9uIChlcnJvckNvZGUsIGVycm9yTWVzc2FnZSwgcGFyYW1zLCBzdWJSZXBvcnRzLCBzY2hlbWEpIHtcbiAgICBpZiAodGhpcy5lcnJvcnMubGVuZ3RoID49IHRoaXMucmVwb3J0T3B0aW9ucy5tYXhFcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZXJyb3JNZXNzYWdlKSB7IHRocm93IG5ldyBFcnJvcihcIk5vIGVycm9yTWVzc2FnZSBrbm93biBmb3IgY29kZSBcIiArIGVycm9yQ29kZSk7IH1cblxuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCBbXTtcblxuICAgIHZhciBpZHggPSBwYXJhbXMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICB2YXIgd2hhdElzID0gVXRpbHMud2hhdElzKHBhcmFtc1tpZHhdKTtcbiAgICAgICAgdmFyIHBhcmFtID0gKHdoYXRJcyA9PT0gXCJvYmplY3RcIiB8fCB3aGF0SXMgPT09IFwibnVsbFwiKSA/IEpTT04uc3RyaW5naWZ5KHBhcmFtc1tpZHhdKSA6IHBhcmFtc1tpZHhdO1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UucmVwbGFjZShcIntcIiArIGlkeCArIFwifVwiLCBwYXJhbSk7XG4gICAgfVxuXG4gICAgdmFyIGVyciA9IHtcbiAgICAgICAgY29kZTogZXJyb3JDb2RlLFxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgodGhpcy5vcHRpb25zLnJlcG9ydFBhdGhBc0FycmF5KSxcbiAgICAgICAgc2NoZW1hSWQ6IHRoaXMuZ2V0U2NoZW1hSWQoKVxuICAgIH07XG5cbiAgICBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZXJyLmRlc2NyaXB0aW9uID0gc2NoZW1hO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKHNjaGVtYS50aXRsZSkge1xuICAgICAgICAgICAgZXJyLnRpdGxlID0gc2NoZW1hLnRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGVyci5kZXNjcmlwdGlvbiA9IHNjaGVtYS5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdWJSZXBvcnRzICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHN1YlJlcG9ydHMpKSB7XG4gICAgICAgICAgICBzdWJSZXBvcnRzID0gW3N1YlJlcG9ydHNdO1xuICAgICAgICB9XG4gICAgICAgIGVyci5pbm5lciA9IFtdO1xuICAgICAgICBpZHggPSBzdWJSZXBvcnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICB2YXIgc3ViUmVwb3J0ID0gc3ViUmVwb3J0c1tpZHhdLFxuICAgICAgICAgICAgICAgIGlkeDIgPSBzdWJSZXBvcnQuZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgICAgICBlcnIuaW5uZXIucHVzaChzdWJSZXBvcnQuZXJyb3JzW2lkeDJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyLmlubmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZXJyLmlubmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lcnJvcnMucHVzaChlcnIpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZXBvcnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzZXF1YWwgICAgICAgICAgICAgPSByZXF1aXJlKFwibG9kYXNoLmlzZXF1YWxcIik7XG52YXIgUmVwb3J0ICAgICAgICAgICAgICA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbnZhciBTY2hlbWFDb21waWxhdGlvbiAgID0gcmVxdWlyZShcIi4vU2NoZW1hQ29tcGlsYXRpb25cIik7XG52YXIgU2NoZW1hVmFsaWRhdGlvbiAgICA9IHJlcXVpcmUoXCIuL1NjaGVtYVZhbGlkYXRpb25cIik7XG52YXIgVXRpbHMgICAgICAgICAgICAgICA9IHJlcXVpcmUoXCIuL1V0aWxzXCIpO1xuXG5mdW5jdGlvbiBkZWNvZGVKU09OUG9pbnRlcihzdHIpIHtcbiAgICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWFwcHNhd2ctanNvbi1wb2ludGVyLTA3I3NlY3Rpb24tM1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3RyKS5yZXBsYWNlKC9+WzAtMV0vZywgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHggPT09IFwifjFcIiA/IFwiL1wiIDogXCJ+XCI7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFJlbW90ZVBhdGgodXJpKSB7XG4gICAgdmFyIGlvID0gdXJpLmluZGV4T2YoXCIjXCIpO1xuICAgIHJldHVybiBpbyA9PT0gLTEgPyB1cmkgOiB1cmkuc2xpY2UoMCwgaW8pO1xufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVBhdGgodXJpKSB7XG4gICAgdmFyIGlvID0gdXJpLmluZGV4T2YoXCIjXCIpO1xuICAgIHZhciByZXMgPSBpbyA9PT0gLTEgPyB1bmRlZmluZWQgOiB1cmkuc2xpY2UoaW8gKyAxKTtcbiAgICAvLyBXQVJOOiBkbyBub3Qgc2xpY2Ugc2xhc2gsICMvIG1lYW5zIHRha2Ugcm9vdCBhbmQgZ28gZG93biBmcm9tIGl0XG4gICAgLy8gaWYgKHJlcyAmJiByZXNbMF0gPT09IFwiL1wiKSB7IHJlcyA9IHJlcy5zbGljZSgxKTsgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJZChzY2hlbWEsIGlkKSB7XG4gICAgLy8gcHJvY2VzcyBvbmx5IGFycmF5cyBhbmQgb2JqZWN0c1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hICE9PSBcIm9iamVjdFwiIHx8IHNjaGVtYSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbm8gaWQgbWVhbnMgcm9vdCBzbyByZXR1cm4gaXRzZWxmXG4gICAgaWYgKCFpZCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaWQpIHtcbiAgICAgICAgaWYgKHNjaGVtYS5pZCA9PT0gaWQgfHwgc2NoZW1hLmlkWzBdID09PSBcIiNcIiAmJiBzY2hlbWEuaWQuc3Vic3RyaW5nKDEpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpZHgsIHJlc3VsdDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgICAgIGlkeCA9IHNjaGVtYS5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmluZElkKHNjaGVtYVtpZHhdLCBpZCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hKTtcbiAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIGsgPSBrZXlzW2lkeF07XG4gICAgICAgICAgICBpZiAoay5pbmRleE9mKFwiX18kXCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBmaW5kSWQoc2NoZW1hW2tdLCBpZCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0cy5jYWNoZVNjaGVtYUJ5VXJpID0gZnVuY3Rpb24gKHVyaSwgc2NoZW1hKSB7XG4gICAgdmFyIHJlbW90ZVBhdGggPSBnZXRSZW1vdGVQYXRoKHVyaSk7XG4gICAgaWYgKHJlbW90ZVBhdGgpIHtcbiAgICAgICAgdGhpcy5jYWNoZVtyZW1vdGVQYXRoXSA9IHNjaGVtYTtcbiAgICB9XG59O1xuXG5leHBvcnRzLnJlbW92ZUZyb21DYWNoZUJ5VXJpID0gZnVuY3Rpb24gKHVyaSkge1xuICAgIHZhciByZW1vdGVQYXRoID0gZ2V0UmVtb3RlUGF0aCh1cmkpO1xuICAgIGlmIChyZW1vdGVQYXRoKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlW3JlbW90ZVBhdGhdO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuY2hlY2tDYWNoZUZvclVyaSA9IGZ1bmN0aW9uICh1cmkpIHtcbiAgICB2YXIgcmVtb3RlUGF0aCA9IGdldFJlbW90ZVBhdGgodXJpKTtcbiAgICByZXR1cm4gcmVtb3RlUGF0aCA/IHRoaXMuY2FjaGVbcmVtb3RlUGF0aF0gIT0gbnVsbCA6IGZhbHNlO1xufTtcblxuZXhwb3J0cy5nZXRTY2hlbWEgPSBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBzY2hlbWEgPSBleHBvcnRzLmdldFNjaGVtYUJ5UmVmZXJlbmNlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzY2hlbWEgPSBleHBvcnRzLmdldFNjaGVtYUJ5VXJpLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0cy5nZXRTY2hlbWFCeVJlZmVyZW5jZSA9IGZ1bmN0aW9uIChyZXBvcnQsIGtleSkge1xuICAgIHZhciBpID0gdGhpcy5yZWZlcmVuY2VDYWNoZS5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBpZiAoaXNlcXVhbCh0aGlzLnJlZmVyZW5jZUNhY2hlW2ldWzBdLCBrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VDYWNoZVtpXVsxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBub3QgZm91bmRcbiAgICB2YXIgc2NoZW1hID0gVXRpbHMuY2xvbmVEZWVwKGtleSk7XG4gICAgdGhpcy5yZWZlcmVuY2VDYWNoZS5wdXNoKFtrZXksIHNjaGVtYV0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59O1xuXG5leHBvcnRzLmdldFNjaGVtYUJ5VXJpID0gZnVuY3Rpb24gKHJlcG9ydCwgdXJpLCByb290KSB7XG4gICAgdmFyIHJlbW90ZVBhdGggPSBnZXRSZW1vdGVQYXRoKHVyaSksXG4gICAgICAgIHF1ZXJ5UGF0aCA9IGdldFF1ZXJ5UGF0aCh1cmkpLFxuICAgICAgICByZXN1bHQgPSByZW1vdGVQYXRoID8gdGhpcy5jYWNoZVtyZW1vdGVQYXRoXSA6IHJvb3Q7XG5cbiAgICBpZiAocmVzdWx0ICYmIHJlbW90ZVBhdGgpIHtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBjb21waWxpbmcgc2NoZW1hcyBpbiBhIHJlY3Vyc2l2ZSBsb29wXG4gICAgICAgIHZhciBjb21waWxlUmVtb3RlID0gcmVzdWx0ICE9PSByb290O1xuICAgICAgICAvLyBub3cgd2UgbmVlZCB0byBjb21waWxlIGFuZCB2YWxpZGF0ZSByZXNvbHZlZCBzY2hlbWEgKGluIGNhc2UgaXQncyBub3QgYWxyZWFkeSlcbiAgICAgICAgaWYgKGNvbXBpbGVSZW1vdGUpIHtcblxuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChyZW1vdGVQYXRoKTtcblxuICAgICAgICAgICAgdmFyIHJlbW90ZVJlcG9ydCA9IG5ldyBSZXBvcnQocmVwb3J0KTtcbiAgICAgICAgICAgIGlmIChTY2hlbWFDb21waWxhdGlvbi5jb21waWxlU2NoZW1hLmNhbGwodGhpcywgcmVtb3RlUmVwb3J0LCByZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNhdmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBjdXN0b20gdmFsaWRhdGlvbk9wdGlvbnMgd2VyZSBwcm92aWRlZCB0byBzZXRSZW1vdGVSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHRoZW0gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdC5fXyR2YWxpZGF0aW9uT3B0aW9ucyB8fCB0aGlzLm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIFNjaGVtYVZhbGlkYXRpb24udmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZW1vdGVSZXBvcnQsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gc2F2ZWRPcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByZW1vdGVSZXBvcnRJc1ZhbGlkID0gcmVtb3RlUmVwb3J0LmlzVmFsaWQoKTtcbiAgICAgICAgICAgIGlmICghcmVtb3RlUmVwb3J0SXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlJFTU9URV9OT1RfVkFMSURcIiwgW3VyaV0sIHJlbW90ZVJlcG9ydCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAoIXJlbW90ZVJlcG9ydElzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCAmJiBxdWVyeVBhdGgpIHtcbiAgICAgICAgdmFyIHBhcnRzID0gcXVlcnlQYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgZm9yICh2YXIgaWR4ID0gMCwgbGltID0gcGFydHMubGVuZ3RoOyByZXN1bHQgJiYgaWR4IDwgbGltOyBpZHgrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGRlY29kZUpTT05Qb2ludGVyKHBhcnRzW2lkeF0pO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgeyAvLyBpdCdzIGFuIGlkXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmluZElkKHJlc3VsdCwga2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIGl0J3MgYSBwYXRoIGJlaGluZCBpZFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydHMuZ2V0UmVtb3RlUGF0aCA9IGdldFJlbW90ZVBhdGg7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIFJlcG9ydCAgICAgID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpO1xudmFyIFNjaGVtYUNhY2hlID0gcmVxdWlyZShcIi4vU2NoZW1hQ2FjaGVcIik7XG52YXIgVXRpbHMgICAgICAgPSByZXF1aXJlKFwiLi9VdGlsc1wiKTtcblxuZnVuY3Rpb24gbWVyZ2VSZWZlcmVuY2Uoc2NvcGUsIHJlZikge1xuICAgIGlmIChVdGlscy5pc0Fic29sdXRlVXJpKHJlZikpIHtcbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICB2YXIgam9pbmVkU2NvcGUgPSBzY29wZS5qb2luKFwiXCIpLFxuICAgICAgICBpc1Njb3BlQWJzb2x1dGUgPSBVdGlscy5pc0Fic29sdXRlVXJpKGpvaW5lZFNjb3BlKSxcbiAgICAgICAgaXNTY29wZVJlbGF0aXZlID0gVXRpbHMuaXNSZWxhdGl2ZVVyaShqb2luZWRTY29wZSksXG4gICAgICAgIGlzUmVmUmVsYXRpdmUgPSBVdGlscy5pc1JlbGF0aXZlVXJpKHJlZiksXG4gICAgICAgIHRvUmVtb3ZlO1xuXG4gICAgaWYgKGlzU2NvcGVBYnNvbHV0ZSAmJiBpc1JlZlJlbGF0aXZlKSB7XG4gICAgICAgIHRvUmVtb3ZlID0gam9pbmVkU2NvcGUubWF0Y2goL1xcL1teXFwvXSokLyk7XG4gICAgICAgIGlmICh0b1JlbW92ZSkge1xuICAgICAgICAgICAgam9pbmVkU2NvcGUgPSBqb2luZWRTY29wZS5zbGljZSgwLCB0b1JlbW92ZS5pbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1Njb3BlUmVsYXRpdmUgJiYgaXNSZWZSZWxhdGl2ZSkge1xuICAgICAgICBqb2luZWRTY29wZSA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG9SZW1vdmUgPSBqb2luZWRTY29wZS5tYXRjaCgvW14jL10rJC8pO1xuICAgICAgICBpZiAodG9SZW1vdmUpIHtcbiAgICAgICAgICAgIGpvaW5lZFNjb3BlID0gam9pbmVkU2NvcGUuc2xpY2UoMCwgdG9SZW1vdmUuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IGpvaW5lZFNjb3BlICsgcmVmO1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKC8jIy8sIFwiI1wiKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0UmVmZXJlbmNlcyhvYmosIHJlc3VsdHMsIHNjb3BlLCBwYXRoKSB7XG4gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG4gICAgc2NvcGUgPSBzY29wZSB8fCBbXTtcbiAgICBwYXRoID0gcGF0aCB8fCBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iai5pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzY29wZS5wdXNoKG9iai5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmouJHJlZiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2Ygb2JqLl9fJHJlZlJlc29sdmVkID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICByZWY6IG1lcmdlUmVmZXJlbmNlKHNjb3BlLCBvYmouJHJlZiksXG4gICAgICAgICAgICBrZXk6IFwiJHJlZlwiLFxuICAgICAgICAgICAgb2JqOiBvYmosXG4gICAgICAgICAgICBwYXRoOiBwYXRoLnNsaWNlKDApXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iai4kc2NoZW1hID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvYmouX18kc2NoZW1hUmVzb2x2ZWQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgIHJlZjogbWVyZ2VSZWZlcmVuY2Uoc2NvcGUsIG9iai4kc2NoZW1hKSxcbiAgICAgICAgICAgIGtleTogXCIkc2NoZW1hXCIsXG4gICAgICAgICAgICBvYmo6IG9iaixcbiAgICAgICAgICAgIHBhdGg6IHBhdGguc2xpY2UoMClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGlkeDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIGlkeCA9IG9iai5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgcGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGNvbGxlY3RSZWZlcmVuY2VzKG9ialtpZHhdLCByZXN1bHRzLCBzY29wZSwgcGF0aCk7XG4gICAgICAgICAgICBwYXRoLnBvcCgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAvLyBkbyBub3QgcmVjdXJzZSB0aHJvdWdoIHJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIG90aGVyIHotc2NoZW1hIHByb3BzXG4gICAgICAgICAgICBpZiAoa2V5c1tpZHhdLmluZGV4T2YoXCJfXyRcIikgPT09IDApIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIHBhdGgucHVzaChrZXlzW2lkeF0pO1xuICAgICAgICAgICAgY29sbGVjdFJlZmVyZW5jZXMob2JqW2tleXNbaWR4XV0sIHJlc3VsdHMsIHNjb3BlLCBwYXRoKTtcbiAgICAgICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iai5pZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzY29wZS5wb3AoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbn1cblxudmFyIGNvbXBpbGVBcnJheU9mU2NoZW1hc0xvb3AgPSBmdW5jdGlvbiAobWFpblJlcG9ydCwgYXJyKSB7XG4gICAgdmFyIGlkeCA9IGFyci5sZW5ndGgsXG4gICAgICAgIGNvbXBpbGVkQ291bnQgPSAwO1xuXG4gICAgd2hpbGUgKGlkeC0tKSB7XG5cbiAgICAgICAgLy8gdHJ5IHRvIGNvbXBpbGUgZWFjaCBzY2hlbWEgc2VwYXJhdGVseVxuICAgICAgICB2YXIgcmVwb3J0ID0gbmV3IFJlcG9ydChtYWluUmVwb3J0KTtcbiAgICAgICAgdmFyIGlzVmFsaWQgPSBleHBvcnRzLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIGFycltpZHhdKTtcbiAgICAgICAgaWYgKGlzVmFsaWQpIHsgY29tcGlsZWRDb3VudCsrOyB9XG5cbiAgICAgICAgLy8gY29weSBlcnJvcnMgdG8gcmVwb3J0XG4gICAgICAgIG1haW5SZXBvcnQuZXJyb3JzID0gbWFpblJlcG9ydC5lcnJvcnMuY29uY2F0KHJlcG9ydC5lcnJvcnMpO1xuXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkQ291bnQ7XG59O1xuXG5mdW5jdGlvbiBmaW5kSWQoYXJyLCBpZCkge1xuICAgIHZhciBpZHggPSBhcnIubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICBpZiAoYXJyW2lkeF0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBjb21waWxlQXJyYXlPZlNjaGVtYXMgPSBmdW5jdGlvbiAocmVwb3J0LCBhcnIpIHtcblxuICAgIHZhciBjb21waWxlZCA9IDAsXG4gICAgICAgIGxhc3RMb29wQ29tcGlsZWQ7XG5cbiAgICBkbyB7XG5cbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBVTlJFU09MVkFCTEVfUkVGRVJFTkNFIGVycm9ycyBiZWZvcmUgY29tcGlsaW5nIGFycmF5IGFnYWluXG4gICAgICAgIHZhciBpZHggPSByZXBvcnQuZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICBpZiAocmVwb3J0LmVycm9yc1tpZHhdLmNvZGUgPT09IFwiVU5SRVNPTFZBQkxFX1JFRkVSRU5DRVwiKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmVycm9ycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlbWVtYmVyIGhvdyBtYW55IHdlcmUgY29tcGlsZWQgaW4gdGhlIGxhc3QgbG9vcFxuICAgICAgICBsYXN0TG9vcENvbXBpbGVkID0gY29tcGlsZWQ7XG5cbiAgICAgICAgLy8gY291bnQgaG93IG1hbnkgYXJlIGNvbXBpbGVkIG5vd1xuICAgICAgICBjb21waWxlZCA9IGNvbXBpbGVBcnJheU9mU2NoZW1hc0xvb3AuY2FsbCh0aGlzLCByZXBvcnQsIGFycik7XG5cbiAgICAgICAgLy8gZml4IF9fJG1pc3NpbmdSZWZlcmVuY2VzIGlmIHBvc3NpYmxlXG4gICAgICAgIGlkeCA9IGFyci5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIHNjaCA9IGFycltpZHhdO1xuICAgICAgICAgICAgaWYgKHNjaC5fXyRtaXNzaW5nUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgIHZhciBpZHgyID0gc2NoLl9fJG1pc3NpbmdSZWZlcmVuY2VzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaWR4Mi0tKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWZPYmogPSBzY2guX18kbWlzc2luZ1JlZmVyZW5jZXNbaWR4Ml07XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGZpbmRJZChhcnIsIHJlZk9iai5yZWYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWlnaHQgY3JlYXRlIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iai5vYmpbXCJfX1wiICsgcmVmT2JqLmtleSArIFwiUmVzb2x2ZWRcIl0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3MgcmVzb2x2ZWQgbm93IHNvIGRlbGV0ZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NoLl9fJG1pc3NpbmdSZWZlcmVuY2VzLnNwbGljZShpZHgyLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2NoLl9fJG1pc3NpbmdSZWZlcmVuY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2NoLl9fJG1pc3NpbmdSZWZlcmVuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGtlZXAgcmVwZWF0aW5nIGlmIG5vdCBhbGwgY29tcGlsZWQgYW5kIGF0IGxlYXN0IG9uZSBtb3JlIHdhcyBjb21waWxlZCBpbiB0aGUgbGFzdCBsb29wXG4gICAgfSB3aGlsZSAoY29tcGlsZWQgIT09IGFyci5sZW5ndGggJiYgY29tcGlsZWQgIT09IGxhc3RMb29wQ29tcGlsZWQpO1xuXG4gICAgcmV0dXJuIHJlcG9ydC5pc1ZhbGlkKCk7XG5cbn07XG5cbmV4cG9ydHMuY29tcGlsZVNjaGVtYSA9IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuXG4gICAgcmVwb3J0LmNvbW1vbkVycm9yTWVzc2FnZSA9IFwiU0NIRU1BX0NPTVBJTEFUSU9OX0ZBSUxFRFwiO1xuXG4gICAgLy8gaWYgc2NoZW1hIGlzIGEgc3RyaW5nLCBhc3N1bWUgaXQncyBhIHVyaVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhciBsb2FkZWRTY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWFCeVVyaS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICAgICAgaWYgKCFsb2FkZWRTY2hlbWEpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIlNDSEVNQV9OT1RfUkVBQ0hBQkxFXCIsIFtzY2hlbWFdKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzY2hlbWEgPSBsb2FkZWRTY2hlbWE7XG4gICAgfVxuXG4gICAgLy8gaWYgc2NoZW1hIGlzIGFuIGFycmF5LCBhc3N1bWUgaXQncyBhbiBhcnJheSBvZiBzY2hlbWFzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gY29tcGlsZUFycmF5T2ZTY2hlbWFzLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYW4gaWQgdGhhbiBpdCBzaG91bGQgYmUgY2FjaGVkIGFscmVhZHkgKGlmIHRoaXMgaW5zdGFuY2UgaGFzIGNvbXBpbGVkIGl0KVxuICAgIGlmIChzY2hlbWEuX18kY29tcGlsZWQgJiYgc2NoZW1hLmlkICYmIFNjaGVtYUNhY2hlLmNoZWNrQ2FjaGVGb3JVcmkuY2FsbCh0aGlzLCBzY2hlbWEuaWQpID09PSBmYWxzZSkge1xuICAgICAgICBzY2hlbWEuX18kY29tcGlsZWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IHJlLWNvbXBpbGUgc2NoZW1hc1xuICAgIGlmIChzY2hlbWEuX18kY29tcGlsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5pZCAmJiB0eXBlb2Ygc2NoZW1hLmlkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIC8vIGFkZCB0aGlzIHRvIG91ciBzY2hlbWFDYWNoZSAoYmVmb3JlIGNvbXBpbGF0aW9uIGluIGNhc2Ugd2UgaGF2ZSByZWZlcmVuY2VzIGluY2x1ZGluZyBpZClcbiAgICAgICAgU2NoZW1hQ2FjaGUuY2FjaGVTY2hlbWFCeVVyaS5jYWxsKHRoaXMsIHNjaGVtYS5pZCwgc2NoZW1hKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LCBzbyB3ZSBuZWVkIHRvIHJlbWVtYmVyIG91ciByb290XG4gICAgdmFyIGlzUm9vdCA9IGZhbHNlO1xuICAgIGlmICghcmVwb3J0LnJvb3RTY2hlbWEpIHtcbiAgICAgICAgcmVwb3J0LnJvb3RTY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIGlzUm9vdCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gZGVsZXRlIGFsbCBfXyRtaXNzaW5nUmVmZXJlbmNlcyBmcm9tIHByZXZpb3VzIGNvbXBpbGF0aW9uIGF0dGVtcHRzXG4gICAgdmFyIGlzVmFsaWRFeGNlcHRSZWZlcmVuY2VzID0gcmVwb3J0LmlzVmFsaWQoKTtcbiAgICBkZWxldGUgc2NoZW1hLl9fJG1pc3NpbmdSZWZlcmVuY2VzO1xuXG4gICAgLy8gY29sbGVjdCBhbGwgcmVmZXJlbmNlcyB0aGF0IG5lZWQgdG8gYmUgcmVzb2x2ZWQgLSAkcmVmIGFuZCAkc2NoZW1hXG4gICAgdmFyIHJlZnMgPSBjb2xsZWN0UmVmZXJlbmNlcy5jYWxsKHRoaXMsIHNjaGVtYSksXG4gICAgICAgIGlkeCA9IHJlZnMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAvLyByZXNvbHZlIGFsbCB0aGUgY29sbGVjdGVkIHJlZmVyZW5jZXMgaW50byBfX3h4eFJlc29sdmVkIHBvaW50ZXJcbiAgICAgICAgdmFyIHJlZk9iaiA9IHJlZnNbaWR4XTtcbiAgICAgICAgdmFyIHJlc3BvbnNlID0gU2NoZW1hQ2FjaGUuZ2V0U2NoZW1hQnlVcmkuY2FsbCh0aGlzLCByZXBvcnQsIHJlZk9iai5yZWYsIHNjaGVtYSk7XG5cbiAgICAgICAgLy8gd2UgY2FuIHRyeSB0byB1c2UgY3VzdG9tIHNjaGVtYVJlYWRlciBpZiBhdmFpbGFibGVcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIHNjaGVtYVJlYWRlciA9IHRoaXMuZ2V0U2NoZW1hUmVhZGVyKCk7XG4gICAgICAgICAgICBpZiAoc2NoZW1hUmVhZGVyKSB7XG4gICAgICAgICAgICAgICAgLy8gaXQncyBzdXBwb3NlZCB0byByZXR1cm4gYSB2YWxpZCBzY2hlbWFcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHNjaGVtYVJlYWRlcihyZWZPYmoucmVmKTtcbiAgICAgICAgICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgICAgICAgICAvLyBpdCBuZWVkcyB0byBoYXZlIHRoZSBpZFxuICAgICAgICAgICAgICAgICAgICBzLmlkID0gcmVmT2JqLnJlZjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IHRvIGNvbXBpbGUgdGhlIHNjaGVtYVxuICAgICAgICAgICAgICAgICAgICB2YXIgc3VicmVwb3J0ID0gbmV3IFJlcG9ydChyZXBvcnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4cG9ydHMuY29tcGlsZVNjaGVtYS5jYWxsKHRoaXMsIHN1YnJlcG9ydCwgcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgZXJyb3JzIHRvIHJlcG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmVycm9ycyA9IHJlcG9ydC5lcnJvcnMuY29uY2F0KHN1YnJlcG9ydC5lcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWFCeVVyaS5jYWxsKHRoaXMsIHJlcG9ydCwgcmVmT2JqLnJlZiwgc2NoZW1hKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcblxuICAgICAgICAgICAgdmFyIGhhc05vdFZhbGlkID0gcmVwb3J0Lmhhc0Vycm9yKFwiUkVNT1RFX05PVF9WQUxJRFwiLCBbcmVmT2JqLnJlZl0pO1xuICAgICAgICAgICAgdmFyIGlzQWJzb2x1dGUgPSBVdGlscy5pc0Fic29sdXRlVXJpKHJlZk9iai5yZWYpO1xuICAgICAgICAgICAgdmFyIGlzRG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGlnbm9yZVVucmVzb2x2YWJsZVJlbW90ZXMgPSB0aGlzLm9wdGlvbnMuaWdub3JlVW5yZXNvbHZhYmxlUmVmZXJlbmNlcyA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGRuJ3QgYWRkIFVOUkVTT0xWQUJMRV9SRUZFUkVOQ0UgZm9yIHNjaGVtYXMgd2UgYWxyZWFkeSBoYXZlIGRvd25sb2FkZWRcbiAgICAgICAgICAgICAgICAvLyBhbmQgc2V0IHRocm91Z2ggc2V0UmVtb3RlUmVmZXJlbmNlIG1ldGhvZFxuICAgICAgICAgICAgICAgIGlzRG93bmxvYWRlZCA9IFNjaGVtYUNhY2hlLmNoZWNrQ2FjaGVGb3JVcmkuY2FsbCh0aGlzLCByZWZPYmoucmVmKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGhhc05vdFZhbGlkKSB7XG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXMgUkVNT1RFX05PVF9WQUxJRCBlcnJvciBmb3IgdGhpcyBvbmVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWdub3JlVW5yZXNvbHZhYmxlUmVtb3RlcyAmJiBpc0Fic29sdXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWdub3JlVW5yZXNvbHZhYmxlUmVtb3RlcyBpcyBvbiBhbmQgcmVtb3RlIGlzQWJzb2x1dGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNEb3dubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVtb3RlIGlzIGRvd25sb2FkZWQsIHNvIG5vIFVOUkVTT0xWQUJMRV9SRUZFUkVOQ0VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkocmVwb3J0LnBhdGgsIHJlZk9iai5wYXRoKTtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJVTlJFU09MVkFCTEVfUkVGRVJFTkNFXCIsIFtyZWZPYmoucmVmXSk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGggPSByZXBvcnQucGF0aC5zbGljZSgwLCAtcmVmT2JqLnBhdGgubGVuZ3RoKTtcblxuICAgICAgICAgICAgICAgIC8vIHB1c2JsaXNoIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBvdXRcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEV4Y2VwdFJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLl9fJG1pc3NpbmdSZWZlcmVuY2VzID0gc2NoZW1hLl9fJG1pc3NpbmdSZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuX18kbWlzc2luZ1JlZmVyZW5jZXMucHVzaChyZWZPYmopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzIG1pZ2h0IGNyZWF0ZSBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAgICAgIHJlZk9iai5vYmpbXCJfX1wiICsgcmVmT2JqLmtleSArIFwiUmVzb2x2ZWRcIl0gPSByZXNwb25zZTtcbiAgICB9XG5cbiAgICB2YXIgaXNWYWxpZCA9IHJlcG9ydC5pc1ZhbGlkKCk7XG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgc2NoZW1hLl9fJGNvbXBpbGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2NoZW1hLmlkICYmIHR5cGVvZiBzY2hlbWEuaWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGlzIHNjaGVtYSBmcm9tIHNjaGVtYUNhY2hlIGJlY2F1c2UgaXQgZmFpbGVkIHRvIGNvbXBpbGVcbiAgICAgICAgICAgIFNjaGVtYUNhY2hlLnJlbW92ZUZyb21DYWNoZUJ5VXJpLmNhbGwodGhpcywgc2NoZW1hLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IG5lZWQgdGhlIHJvb3QgcG9pbnRlciBhbnltb3JlXG4gICAgaWYgKGlzUm9vdCkge1xuICAgICAgICByZXBvcnQucm9vdFNjaGVtYSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZDtcblxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgRm9ybWF0VmFsaWRhdG9ycyA9IHJlcXVpcmUoXCIuL0Zvcm1hdFZhbGlkYXRvcnNcIiksXG4gICAgSnNvblZhbGlkYXRpb24gICA9IHJlcXVpcmUoXCIuL0pzb25WYWxpZGF0aW9uXCIpLFxuICAgIFJlcG9ydCAgICAgICAgICAgPSByZXF1aXJlKFwiLi9SZXBvcnRcIiksXG4gICAgVXRpbHMgICAgICAgICAgICA9IHJlcXVpcmUoXCIuL1V0aWxzXCIpO1xuXG52YXIgU2NoZW1hVmFsaWRhdG9ycyA9IHtcbiAgICAkcmVmOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1hcHBzYXdnLWpzb24tcG9pbnRlci0wN1xuICAgICAgICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1wYnJ5YW4tenlwLWpzb24tcmVmLTAzXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLiRyZWYgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCIkcmVmXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgJHNjaGVtYTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLWNvcmUuaHRtbCNyZmMuc2VjdGlvbi42XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLiRzY2hlbWEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCIkc2NoZW1hXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbXVsdGlwbGVPZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjEuMS4xXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm11bHRpcGxlT2YgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtdWx0aXBsZU9mXCIsIFwibnVtYmVyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubXVsdGlwbGVPZiA8PSAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wibXVsdGlwbGVPZlwiLCBcInN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWF4aW11bTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjEuMi4xXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtYXhpbXVtXCIsIFwibnVtYmVyXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZXhjbHVzaXZlTWF4aW11bTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjEuMi4xXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZXhjbHVzaXZlTWF4aW11bVwiLCBcImJvb2xlYW5cIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5tYXhpbXVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfREVQRU5ERU5DWVwiLCBbXCJleGNsdXNpdmVNYXhpbXVtXCIsIFwibWF4aW11bVwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1pbmltdW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjMuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5pbXVtICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWluaW11bVwiLCBcIm51bWJlclwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGV4Y2x1c2l2ZU1pbmltdW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4xLjMuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImV4Y2x1c2l2ZU1pbmltdW1cIiwgXCJib29sZWFuXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWluaW11bSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX0RFUEVOREVOQ1lcIiwgW1wiZXhjbHVzaXZlTWluaW11bVwiLCBcIm1pbmltdW1cIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtYXhMZW5ndGg6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4yLjEuMVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKHNjaGVtYS5tYXhMZW5ndGgpICE9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm1heExlbmd0aFwiLCBcImludGVnZXJcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5tYXhMZW5ndGggPCAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wibWF4TGVuZ3RoXCIsIFwiZ3JlYXRlciB0aGFuLCBvciBlcXVhbCB0byAwXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWluTGVuZ3RoOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMi4yLjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEubWluTGVuZ3RoKSAhPT0gXCJpbnRlZ2VyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtaW5MZW5ndGhcIiwgXCJpbnRlZ2VyXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEubWluTGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm1pbkxlbmd0aFwiLCBcImdyZWF0ZXIgdGhhbiwgb3IgZXF1YWwgdG8gMFwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHBhdHRlcm46IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4yLjMuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5wYXR0ZXJuICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wicGF0dGVyblwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFJlZ0V4cChzY2hlbWEucGF0dGVybik7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9QQVRURVJOXCIsIFtcInBhdHRlcm5cIiwgc2NoZW1hLnBhdHRlcm5dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkaXRpb25hbEl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4xLjFcbiAgICAgICAgdmFyIHR5cGUgPSBVdGlscy53aGF0SXMoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyk7XG4gICAgICAgIGlmICh0eXBlICE9PSBcImJvb2xlYW5cIiAmJiB0eXBlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiYWRkaXRpb25hbEl0ZW1zXCIsIFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl1dKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiYWRkaXRpb25hbEl0ZW1zXCIpO1xuICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaXRlbXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4zLjEuMVxuICAgICAgICB2YXIgdHlwZSA9IFV0aWxzLndoYXRJcyhzY2hlbWEuaXRlbXMpO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiaXRlbXNcIik7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuaXRlbXMpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJpdGVtc1wiKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuaXRlbXNbaWR4XSk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiaXRlbXNcIiwgW1wiYXJyYXlcIiwgXCJvYmplY3RcIl1dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGN1c3RvbSAtIHN0cmljdCBtb2RlXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VBZGRpdGlvbmFsID09PSB0cnVlICYmIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMgPT09IHVuZGVmaW5lZCAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJhZGRpdGlvbmFsSXRlbXNcIl0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1c3RvbWUgLSBhc3N1bWUgZGVmaW5lZCBmYWxzZSBtb2RlXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXNzdW1lQWRkaXRpb25hbCAmJiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID09PSB1bmRlZmluZWQgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1heEl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4yLjFcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4SXRlbXMgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJtYXhJdGVtc1wiLCBcImludGVnZXJcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5tYXhJdGVtcyA8IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJtYXhJdGVtc1wiLCBcImdyZWF0ZXIgdGhhbiwgb3IgZXF1YWwgdG8gMFwiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1pbkl0ZW1zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuMy4zLjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEubWluSXRlbXMpICE9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcIm1pbkl0ZW1zXCIsIFwiaW50ZWdlclwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLm1pbkl0ZW1zIDwgMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm1pbkl0ZW1zXCIsIFwiZ3JlYXRlciB0aGFuLCBvciBlcXVhbCB0byAwXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdW5pcXVlSXRlbXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS4zLjQuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS51bmlxdWVJdGVtcyAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJ1bmlxdWVJdGVtc1wiLCBcImJvb2xlYW5cIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtYXhQcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC4xLjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEubWF4UHJvcGVydGllcykgIT09IFwiaW50ZWdlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWF4UHJvcGVydGllc1wiLCBcImludGVnZXJcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5tYXhQcm9wZXJ0aWVzIDwgMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm1heFByb3BlcnRpZXNcIiwgXCJncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvIDBcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtaW5Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC4yLjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEubWluUHJvcGVydGllcykgIT09IFwiaW50ZWdlclwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wibWluUHJvcGVydGllc1wiLCBcImludGVnZXJcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5taW5Qcm9wZXJ0aWVzIDwgMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm1pblByb3BlcnRpZXNcIiwgXCJncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvIDBcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuMy4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLnJlcXVpcmVkKSAhPT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wicmVxdWlyZWRcIiwgXCJhcnJheVwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLnJlcXVpcmVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcInJlcXVpcmVkXCIsIFwiYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudFwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLnJlcXVpcmVkLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLnJlcXVpcmVkW2lkeF0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9WQUxVRV9UWVBFXCIsIFtcInJlcXVpcmVkXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNVbmlxdWVBcnJheShzY2hlbWEucmVxdWlyZWQpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJyZXF1aXJlZFwiLCBcImFuIGFycmF5IHdpdGggdW5pcXVlIGl0ZW1zXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjQuMVxuICAgICAgICB2YXIgdHlwZSA9IFV0aWxzLndoYXRJcyhzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICAgICAgICBpZiAodHlwZSAhPT0gXCJib29sZWFuXCIgJiYgdHlwZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCIsIFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl1dKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIik7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS40LjQuMVxuICAgICAgICBpZiAoVXRpbHMud2hhdElzKHNjaGVtYS5wcm9wZXJ0aWVzKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInByb3BlcnRpZXNcIiwgXCJvYmplY3RcIl0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEucHJvcGVydGllcyksXG4gICAgICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpZHhdLFxuICAgICAgICAgICAgICAgIHZhbCA9IHNjaGVtYS5wcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwicHJvcGVydGllc1wiKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHZhbCk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3VzdG9tIC0gc3RyaWN0IG1vZGVcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZUFkZGl0aW9uYWwgPT09IHRydWUgJiYgc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VzdG9tZSAtIGFzc3VtZSBkZWZpbmVkIGZhbHNlIG1vZGVcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hc3N1bWVBZGRpdGlvbmFsICYmIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjdXN0b20gLSBmb3JjZVByb3BlcnRpZXNcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZVByb3BlcnRpZXMgPT09IHRydWUgJiYga2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIkNVU1RPTV9NT0RFX0ZPUkNFX1BST1BFUlRJRVNcIiwgW1wicHJvcGVydGllc1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNC40LjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEucGF0dGVyblByb3BlcnRpZXMpICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wicGF0dGVyblByb3BlcnRpZXNcIiwgXCJvYmplY3RcIl0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEucGF0dGVyblByb3BlcnRpZXMpLFxuICAgICAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XSxcbiAgICAgICAgICAgICAgICB2YWwgPSBzY2hlbWEucGF0dGVyblByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgUmVnRXhwKGtleSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9QQVRURVJOXCIsIFtcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsIGtleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcInBhdHRlcm5Qcm9wZXJ0aWVzXCIpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChrZXkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCB2YWwpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGN1c3RvbSAtIGZvcmNlUHJvcGVydGllc1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlUHJvcGVydGllcyA9PT0gdHJ1ZSAmJiBrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiQ1VTVE9NX01PREVfRk9SQ0VfUFJPUEVSVElFU1wiLCBbXCJwYXR0ZXJuUHJvcGVydGllc1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjQuNS4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLmRlcGVuZGVuY2llcykgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJkZXBlbmRlbmNpZXNcIiwgXCJvYmplY3RcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEuZGVwZW5kZW5jaWVzKSxcbiAgICAgICAgICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHZhciBzY2hlbWFLZXkgPSBrZXlzW2lkeF0sXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYURlcGVuZGVuY3kgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW3NjaGVtYUtleV0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBVdGlscy53aGF0SXMoc2NoZW1hRGVwZW5kZW5jeSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiZGVwZW5kZW5jaWVzXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKHNjaGVtYUtleSk7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYURlcGVuZGVuY3kpO1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImFycmF5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeDIgPSBzY2hlbWFEZXBlbmRlbmN5Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeDIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJkZXBlbmRlbmNpZXNcIiwgXCJub3QgZW1wdHkgYXJyYXlcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpZHgyLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hRGVwZW5kZW5jeVtpZHgyXSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVkFMVUVfVFlQRVwiLCBbXCJkZXBlbmRlbnNpY2VzXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNVbmlxdWVBcnJheShzY2hlbWFEZXBlbmRlbmN5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJkZXBlbmRlbmNpZXNcIiwgXCJhbiBhcnJheSB3aXRoIHVuaXF1ZSBpdGVtc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1ZBTFVFX1RZUEVcIiwgW1wiZGVwZW5kZW5jaWVzXCIsIFwib2JqZWN0IG9yIGFycmF5XCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVudW06IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjEuMVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEuZW51bSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZW51bVwiLCBcImFycmF5XCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuZW51bS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJlbnVtXCIsIFwiYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudFwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoVXRpbHMuaXNVbmlxdWVBcnJheShzY2hlbWEuZW51bSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiZW51bVwiLCBcImFuIGFycmF5IHdpdGggdW5pcXVlIGVsZW1lbnRzXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdHlwZTogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuMi4xXG4gICAgICAgIHZhciBwcmltaXRpdmVUeXBlcyA9IFtcImFycmF5XCIsIFwiYm9vbGVhblwiLCBcImludGVnZXJcIiwgXCJudW1iZXJcIiwgXCJudWxsXCIsIFwib2JqZWN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgcHJpbWl0aXZlVHlwZVN0ciA9IHByaW1pdGl2ZVR5cGVzLmpvaW4oXCIsXCIpLFxuICAgICAgICAgICAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpO1xuXG4gICAgICAgIGlmIChpc0FycmF5KSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLnR5cGUubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVR5cGVzLmluZGV4T2Yoc2NoZW1hLnR5cGVbaWR4XSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJ0eXBlXCIsIHByaW1pdGl2ZVR5cGVTdHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNVbmlxdWVBcnJheShzY2hlbWEudHlwZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcInR5cGVcIiwgXCJhbiBvYmplY3Qgd2l0aCB1bmlxdWUgcHJvcGVydGllc1wiXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNjaGVtYS50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpZiAocHJpbWl0aXZlVHlwZXMuaW5kZXhPZihzY2hlbWEudHlwZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInR5cGVcIiwgcHJpbWl0aXZlVHlwZVN0cl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInR5cGVcIiwgW1wic3RyaW5nXCIsIFwiYXJyYXlcIl1dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubm9FbXB0eVN0cmluZ3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBpc0FycmF5ICYmIHNjaGVtYS50eXBlLmluZGV4T2YoXCJzdHJpbmdcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5taW5MZW5ndGggPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuZW51bSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5mb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5taW5MZW5ndGggPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5vRW1wdHlBcnJheXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJhcnJheVwiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcImFycmF5XCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWluSXRlbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzY2hlbWEubWluSXRlbXMgPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlUHJvcGVydGllcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSBcIm9iamVjdFwiIHx8IGlzQXJyYXkgJiYgc2NoZW1hLnR5cGUuaW5kZXhPZihcIm9iamVjdFwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCAmJiBzY2hlbWEucGF0dGVyblByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wicHJvcGVydGllc1wiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VJdGVtcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSBcImFycmF5XCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwiYXJyYXlcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5pdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJpdGVtc1wiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VNaW5JdGVtcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSBcImFycmF5XCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwiYXJyYXlcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5taW5JdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJtaW5JdGVtc1wiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VNYXhJdGVtcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSBcImFycmF5XCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwiYXJyYXlcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5tYXhJdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJtYXhJdGVtc1wiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VNaW5MZW5ndGggPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBpc0FycmF5ICYmIHNjaGVtYS50eXBlLmluZGV4T2YoXCJzdHJpbmdcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5taW5MZW5ndGggPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuZm9ybWF0ID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmVudW0gPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBzY2hlbWEucGF0dGVybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5ERUZJTkVEX1NUUklDVFwiLCBbXCJtaW5MZW5ndGhcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlTWF4TGVuZ3RoID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwic3RyaW5nXCIgfHwgaXNBcnJheSAmJiBzY2hlbWEudHlwZS5pbmRleE9mKFwic3RyaW5nXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubWF4TGVuZ3RoID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmZvcm1hdCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIHNjaGVtYS5lbnVtID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLnBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1wibWF4TGVuZ3RoXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFsbE9mOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS4zLjFcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmFsbE9mKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJhbGxPZlwiLCBcImFycmF5XCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuYWxsT2YubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX01VU1RfQkVcIiwgW1wiYWxsT2ZcIiwgXCJhbiBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50XCJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpZHggPSBzY2hlbWEuYWxsT2YubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImFsbE9mXCIpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goaWR4LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYS5hbGxPZltpZHhdKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYW55T2Y6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNS41LjQuMVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEuYW55T2YpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcImFueU9mXCIsIFwiYXJyYXlcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5hbnlPZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfTVVTVF9CRVwiLCBbXCJhbnlPZlwiLCBcImFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnRcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGlkeCA9IHNjaGVtYS5hbnlPZi5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiYW55T2ZcIik7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy52YWxpZGF0ZVNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hLmFueU9mW2lkeF0pO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBvbmVPZjogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNS4xXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5vbmVPZikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wib25lT2ZcIiwgXCJhcnJheVwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLm9uZU9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9NVVNUX0JFXCIsIFtcIm9uZU9mXCIsIFwiYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudFwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gc2NoZW1hLm9uZU9mLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJvbmVPZlwiKTtcbiAgICAgICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEub25lT2ZbaWR4XSk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG5vdDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi41LjUuNi4xXG4gICAgICAgIGlmIChVdGlscy53aGF0SXMoc2NoZW1hLm5vdCkgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJub3RcIiwgXCJvYmplY3RcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcIm5vdFwiKTtcbiAgICAgICAgICAgIGV4cG9ydHMudmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYS5ub3QpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRlZmluaXRpb25zOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjUuNS43LjFcbiAgICAgICAgaWYgKFV0aWxzLndoYXRJcyhzY2hlbWEuZGVmaW5pdGlvbnMpICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZGVmaW5pdGlvbnNcIiwgXCJvYmplY3RcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEuZGVmaW5pdGlvbnMpLFxuICAgICAgICAgICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XSxcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gc2NoZW1hLmRlZmluaXRpb25zW2tleV07XG4gICAgICAgICAgICAgICAgcmVwb3J0LnBhdGgucHVzaChcImRlZmluaXRpb25zXCIpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCB2YWwpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBmb3JtYXQ6IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5mb3JtYXQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJmb3JtYXRcIiwgXCJzdHJpbmdcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEZvcm1hdFZhbGlkYXRvcnNbc2NoZW1hLmZvcm1hdF0gPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMuaWdub3JlVW5rbm93bkZvcm1hdHMgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJVTktOT1dOX0ZPUk1BVFwiLCBbc2NoZW1hLmZvcm1hdF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBpZDogZnVuY3Rpb24gKHJlcG9ydCwgc2NoZW1hKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLWNvcmUuaHRtbCNyZmMuc2VjdGlvbi43LjJcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuaWQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVFlQRV9FWFBFQ1RFRFwiLCBbXCJpZFwiLCBcInN0cmluZ1wiXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRpdGxlOiBmdW5jdGlvbiAocmVwb3J0LCBzY2hlbWEpIHtcbiAgICAgICAgLy8gaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjYuMVxuICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS50aXRsZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiS0VZV09SRF9UWVBFX0VYUEVDVEVEXCIsIFtcInRpdGxlXCIsIFwic3RyaW5nXCJdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuICAgICAgICAvLyBodHRwOi8vanNvbi1zY2hlbWEub3JnL2xhdGVzdC9qc29uLXNjaGVtYS12YWxpZGF0aW9uLmh0bWwjcmZjLnNlY3Rpb24uNi4xXG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmRlc2NyaXB0aW9uICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1RZUEVfRVhQRUNURURcIiwgW1wiZGVzY3JpcHRpb25cIiwgXCJzdHJpbmdcIl0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBcImRlZmF1bHRcIjogZnVuY3Rpb24gKC8qIHJlcG9ydCwgc2NoZW1hICovKSB7XG4gICAgICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLXZhbGlkYXRpb24uaHRtbCNyZmMuc2VjdGlvbi42LjJcbiAgICAgICAgLy8gVGhlcmUgYXJlIG5vIHJlc3RyaWN0aW9ucyBwbGFjZWQgb24gdGhlIHZhbHVlIG9mIHRoaXMga2V5d29yZC5cbiAgICB9XG59O1xuXG52YXIgdmFsaWRhdGVBcnJheU9mU2NoZW1hcyA9IGZ1bmN0aW9uIChyZXBvcnQsIGFycikge1xuICAgIHZhciBpZHggPSBhcnIubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICBleHBvcnRzLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBhcnJbaWR4XSk7XG4gICAgfVxuICAgIHJldHVybiByZXBvcnQuaXNWYWxpZCgpO1xufTtcblxuZXhwb3J0cy52YWxpZGF0ZVNjaGVtYSA9IGZ1bmN0aW9uIChyZXBvcnQsIHNjaGVtYSkge1xuXG4gICAgcmVwb3J0LmNvbW1vbkVycm9yTWVzc2FnZSA9IFwiU0NIRU1BX1ZBTElEQVRJT05fRkFJTEVEXCI7XG5cbiAgICAvLyBpZiBzY2hlbWEgaXMgYW4gYXJyYXksIGFzc3VtZSBpdCdzIGFuIGFycmF5IG9mIHNjaGVtYXNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZUFycmF5T2ZTY2hlbWFzLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cblxuICAgIC8vIGRvIG5vdCByZXZhbGlkYXRlIHNjaGVtYSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIG9uY2VcbiAgICBpZiAoc2NoZW1hLl9fJHZhbGlkYXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiAkc2NoZW1hIGlzIHByZXNlbnQsIHRoaXMgc2NoZW1hIHNob3VsZCB2YWxpZGF0ZSBhZ2FpbnN0IHRoYXQgJHNjaGVtYVxuICAgIHZhciBoYXNQYXJlbnRTY2hlbWEgPSBzY2hlbWEuJHNjaGVtYSAmJiBzY2hlbWEuaWQgIT09IHNjaGVtYS4kc2NoZW1hO1xuICAgIGlmIChoYXNQYXJlbnRTY2hlbWEpIHtcbiAgICAgICAgaWYgKHNjaGVtYS5fXyRzY2hlbWFSZXNvbHZlZCAmJiBzY2hlbWEuX18kc2NoZW1hUmVzb2x2ZWQgIT09IHNjaGVtYSkge1xuICAgICAgICAgICAgdmFyIHN1YlJlcG9ydCA9IG5ldyBSZXBvcnQocmVwb3J0KTtcbiAgICAgICAgICAgIHZhciB2YWxpZCA9IEpzb25WYWxpZGF0aW9uLnZhbGlkYXRlLmNhbGwodGhpcywgc3ViUmVwb3J0LCBzY2hlbWEuX18kc2NoZW1hUmVzb2x2ZWQsIHNjaGVtYSk7XG4gICAgICAgICAgICBpZiAodmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiUEFSRU5UX1NDSEVNQV9WQUxJREFUSU9OX0ZBSUxFRFwiLCBudWxsLCBzdWJSZXBvcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVVbnJlc29sdmFibGVSZWZlcmVuY2VzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LmFkZEVycm9yKFwiUkVGX1VOUkVTT0xWRURcIiwgW3NjaGVtYS4kc2NoZW1hXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm5vVHlwZWxlc3MgPT09IHRydWUpIHtcbiAgICAgICAgLy8gaXNzdWUgIzM2IC0gaW5oZXJpdCB0eXBlIHRvIGFueU9mLCBvbmVPZiwgYWxsT2YgaWYgbm9UeXBlbGVzcyBpcyBkZWZpbmVkXG4gICAgICAgIGlmIChzY2hlbWEudHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgc2NoZW1hcyA9IFtdO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmFueU9mKSkgeyBzY2hlbWFzID0gc2NoZW1hcy5jb25jYXQoc2NoZW1hLmFueU9mKTsgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLm9uZU9mKSkgeyBzY2hlbWFzID0gc2NoZW1hcy5jb25jYXQoc2NoZW1hLm9uZU9mKTsgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmFsbE9mKSkgeyBzY2hlbWFzID0gc2NoZW1hcy5jb25jYXQoc2NoZW1hLmFsbE9mKTsgfVxuICAgICAgICAgICAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChzY2gpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNjaC50eXBlKSB7IHNjaC50eXBlID0gc2NoZW1hLnR5cGU7IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVuZCBpc3N1ZSAjMzZcbiAgICAgICAgaWYgKHNjaGVtYS5lbnVtID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHNjaGVtYS50eXBlID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHNjaGVtYS5hbnlPZiA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzY2hlbWEub25lT2YgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgc2NoZW1hLm5vdCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzY2hlbWEuJHJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXBvcnQuYWRkRXJyb3IoXCJLRVlXT1JEX1VOREVGSU5FRF9TVFJJQ1RcIiwgW1widHlwZVwiXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSksXG4gICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpZHhdO1xuICAgICAgICBpZiAoa2V5LmluZGV4T2YoXCJfX1wiKSA9PT0gMCkgeyBjb250aW51ZTsgfVxuICAgICAgICBpZiAoU2NoZW1hVmFsaWRhdG9yc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIFNjaGVtYVZhbGlkYXRvcnNba2V5XS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICAgICAgfSBlbHNlIGlmICghaGFzUGFyZW50U2NoZW1hKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5vRXh0cmFLZXl3b3JkcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5hZGRFcnJvcihcIktFWVdPUkRfVU5FWFBFQ1RFRFwiLCBba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBlZGFudGljQ2hlY2sgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICAgICAgICAvLyBicmVhayByZWN1cnNpb25cbiAgICAgICAgICAgIHZhciB0bXBTY2hlbWEgPSBVdGlscy5jbG9uZShzY2hlbWEpO1xuICAgICAgICAgICAgZGVsZXRlIHRtcFNjaGVtYS5lbnVtO1xuICAgICAgICAgICAgZGVsZXRlIHRtcFNjaGVtYS5kZWZhdWx0O1xuXG4gICAgICAgICAgICByZXBvcnQucGF0aC5wdXNoKFwiZW51bVwiKTtcbiAgICAgICAgICAgIGlkeCA9IHNjaGVtYS5lbnVtLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goaWR4LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIEpzb25WYWxpZGF0aW9uLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCB0bXBTY2hlbWEsIHNjaGVtYS5lbnVtW2lkeF0pO1xuICAgICAgICAgICAgICAgIHJlcG9ydC5wYXRoLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJlcG9ydC5wYXRoLnB1c2goXCJkZWZhdWx0XCIpO1xuICAgICAgICAgICAgSnNvblZhbGlkYXRpb24udmFsaWRhdGUuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSwgc2NoZW1hLmRlZmF1bHQpO1xuICAgICAgICAgICAgcmVwb3J0LnBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaXNWYWxpZCA9IHJlcG9ydC5pc1ZhbGlkKCk7XG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgc2NoZW1hLl9fJHZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBpc1ZhbGlkO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLmlzQWJzb2x1dGVVcmkgPSBmdW5jdGlvbiAodXJpKSB7XG4gICAgcmV0dXJuIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh1cmkpO1xufTtcblxuZXhwb3J0cy5pc1JlbGF0aXZlVXJpID0gZnVuY3Rpb24gKHVyaSkge1xuICAgIC8vIHJlbGF0aXZlIFVSSXMgdGhhdCBlbmQgd2l0aCBhIGhhc2ggc2lnbiwgaXNzdWUgIzU2XG4gICAgcmV0dXJuIC8uKyMvLnRlc3QodXJpKTtcbn07XG5cbmV4cG9ydHMud2hhdElzID0gZnVuY3Rpb24gKHdoYXQpIHtcblxuICAgIHZhciB0byA9IHR5cGVvZiB3aGF0O1xuXG4gICAgaWYgKHRvID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmICh3aGF0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkod2hhdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBcImFycmF5XCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwib2JqZWN0XCI7IC8vIHR5cGVvZiB3aGF0ID09PSAnb2JqZWN0JyAmJiB3aGF0ID09PSBPYmplY3Qod2hhdCkgJiYgIUFycmF5LmlzQXJyYXkod2hhdCk7XG4gICAgfVxuXG4gICAgaWYgKHRvID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUod2hhdCkpIHtcbiAgICAgICAgICAgIGlmICh3aGF0ICUgMSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImludGVnZXJcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih3aGF0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibm90LWEtbnVtYmVyXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwidW5rbm93bi1udW1iZXJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdG87IC8vIHVuZGVmaW5lZCwgYm9vbGVhbiwgc3RyaW5nLCBmdW5jdGlvblxuXG59O1xuXG5leHBvcnRzLmFyZUVxdWFsID0gZnVuY3Rpb24gYXJlRXF1YWwoanNvbjEsIGpzb24yLCBvcHRpb25zKSB7XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiA9IG9wdGlvbnMuY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiB8fCBmYWxzZTtcblxuICAgIC8vIGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvbGF0ZXN0L2pzb24tc2NoZW1hLWNvcmUuaHRtbCNyZmMuc2VjdGlvbi4zLjZcblxuICAgIC8vIFR3byBKU09OIHZhbHVlcyBhcmUgc2FpZCB0byBiZSBlcXVhbCBpZiBhbmQgb25seSBpZjpcbiAgICAvLyBib3RoIGFyZSBudWxsczsgb3JcbiAgICAvLyBib3RoIGFyZSBib29sZWFucywgYW5kIGhhdmUgdGhlIHNhbWUgdmFsdWU7IG9yXG4gICAgLy8gYm90aCBhcmUgc3RyaW5ncywgYW5kIGhhdmUgdGhlIHNhbWUgdmFsdWU7IG9yXG4gICAgLy8gYm90aCBhcmUgbnVtYmVycywgYW5kIGhhdmUgdGhlIHNhbWUgbWF0aGVtYXRpY2FsIHZhbHVlOyBvclxuICAgIGlmIChqc29uMSA9PT0ganNvbjIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gPT09IHRydWUgJiZcbiAgICAgIHR5cGVvZiBqc29uMSA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YganNvbjIgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgIGpzb24xLnRvVXBwZXJDYXNlKCkgPT09IGpzb24yLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGksIGxlbjtcblxuICAgIC8vIGJvdGggYXJlIGFycmF5cywgYW5kOlxuICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24xKSAmJiBBcnJheS5pc0FycmF5KGpzb24yKSkge1xuICAgICAgICAvLyBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtczsgYW5kXG4gICAgICAgIGlmIChqc29uMS5sZW5ndGggIT09IGpzb24yLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGl0ZW1zIGF0IHRoZSBzYW1lIGluZGV4IGFyZSBlcXVhbCBhY2NvcmRpbmcgdG8gdGhpcyBkZWZpbml0aW9uOyBvclxuICAgICAgICBsZW4gPSBqc29uMS5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKCFhcmVFcXVhbChqc29uMVtpXSwganNvbjJbaV0sIHsgY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbjogY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiB9KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBib3RoIGFyZSBvYmplY3RzLCBhbmQ6XG4gICAgaWYgKGV4cG9ydHMud2hhdElzKGpzb24xKSA9PT0gXCJvYmplY3RcIiAmJiBleHBvcnRzLndoYXRJcyhqc29uMikgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgLy8gaGF2ZSB0aGUgc2FtZSBzZXQgb2YgcHJvcGVydHkgbmFtZXM7IGFuZFxuICAgICAgICB2YXIga2V5czEgPSBPYmplY3Qua2V5cyhqc29uMSk7XG4gICAgICAgIHZhciBrZXlzMiA9IE9iamVjdC5rZXlzKGpzb24yKTtcbiAgICAgICAgaWYgKCFhcmVFcXVhbChrZXlzMSwga2V5czIsIHsgY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbjogY2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiB9KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHZhbHVlcyBmb3IgYSBzYW1lIHByb3BlcnR5IG5hbWUgYXJlIGVxdWFsIGFjY29yZGluZyB0byB0aGlzIGRlZmluaXRpb24uXG4gICAgICAgIGxlbiA9IGtleXMxLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIWFyZUVxdWFsKGpzb24xW2tleXMxW2ldXSwganNvbjJba2V5czFbaV1dLCB7IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb246IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gfSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0cy5pc1VuaXF1ZUFycmF5ID0gZnVuY3Rpb24gKGFyciwgaW5kZXhlcykge1xuICAgIHZhciBpLCBqLCBsID0gYXJyLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoZXhwb3J0cy5hcmVFcXVhbChhcnJbaV0sIGFycltqXSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhlcykgeyBpbmRleGVzLnB1c2goaSwgaik7IH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnRzLmRpZmZlcmVuY2UgPSBmdW5jdGlvbiAoYmlnU2V0LCBzdWJTZXQpIHtcbiAgICB2YXIgYXJyID0gW10sXG4gICAgICAgIGlkeCA9IGJpZ1NldC5sZW5ndGg7XG4gICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgIGlmIChzdWJTZXQuaW5kZXhPZihiaWdTZXRbaWR4XSkgPT09IC0xKSB7XG4gICAgICAgICAgICBhcnIucHVzaChiaWdTZXRbaWR4XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8vIE5PVCBhIGRlZXAgdmVyc2lvbiBvZiBjbG9uZVxuZXhwb3J0cy5jbG9uZSA9IGZ1bmN0aW9uIChzcmMpIHtcbiAgICBpZiAodHlwZW9mIHNyYyA9PT0gXCJ1bmRlZmluZWRcIikgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgaWYgKHR5cGVvZiBzcmMgIT09IFwib2JqZWN0XCIgfHwgc3JjID09PSBudWxsKSB7IHJldHVybiBzcmM7IH1cbiAgICB2YXIgcmVzLCBpZHg7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjKSkge1xuICAgICAgICByZXMgPSBbXTtcbiAgICAgICAgaWR4ID0gc3JjLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICByZXNbaWR4XSA9IHNyY1tpZHhdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzID0ge307XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3JjKTtcbiAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XTtcbiAgICAgICAgICAgIHJlc1trZXldID0gc3JjW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydHMuY2xvbmVEZWVwID0gZnVuY3Rpb24gKHNyYykge1xuICAgIHZhciB2aXNpdGVkID0gW10sIGNsb25lZCA9IFtdO1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcChzcmMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzcmMgIT09IFwib2JqZWN0XCIgfHwgc3JjID09PSBudWxsKSB7IHJldHVybiBzcmM7IH1cbiAgICAgICAgdmFyIHJlcywgaWR4LCBjaWR4O1xuXG4gICAgICAgIGNpZHggPSB2aXNpdGVkLmluZGV4T2Yoc3JjKTtcbiAgICAgICAgaWYgKGNpZHggIT09IC0xKSB7IHJldHVybiBjbG9uZWRbY2lkeF07IH1cblxuICAgICAgICB2aXNpdGVkLnB1c2goc3JjKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjKSkge1xuICAgICAgICAgICAgcmVzID0gW107XG4gICAgICAgICAgICBjbG9uZWQucHVzaChyZXMpO1xuICAgICAgICAgICAgaWR4ID0gc3JjLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICAgICAgICAgIHJlc1tpZHhdID0gY2xvbmVEZWVwKHNyY1tpZHhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHt9O1xuICAgICAgICAgICAgY2xvbmVkLnB1c2gocmVzKTtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3JjKTtcbiAgICAgICAgICAgIGlkeCA9IGtleXMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaWR4XTtcbiAgICAgICAgICAgICAgICByZXNba2V5XSA9IGNsb25lRGVlcChzcmNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lRGVlcChzcmMpO1xufTtcblxuLypcbiAgZm9sbG93aW5nIGZ1bmN0aW9uIGNvbWVzIGZyb20gcHVueWNvZGUuanMgbGlicmFyeVxuICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qc1xuKi9cbi8qanNoaW50IC1XMDE2Ki9cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG4gKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBkZWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG4gKi9cbmV4cG9ydHMudWNzMmRlY29kZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgb3V0cHV0ID0gW10sXG4gICAgICAgIGNvdW50ZXIgPSAwLFxuICAgICAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZXh0cmE7XG4gICAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgICAgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgICAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcbiAgICAgICAgICAgIGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICAgICAgICAgIGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcbiAgICAgICAgICAgICAgICAvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcbiAgICAgICAgICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59O1xuLypqc2hpbnQgK1cwMTYqL1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnJlcXVpcmUoXCIuL1BvbHlmaWxsc1wiKTtcbnZhciBnZXQgICAgICAgICAgICAgICA9IHJlcXVpcmUoXCJsb2Rhc2guZ2V0XCIpO1xudmFyIFJlcG9ydCAgICAgICAgICAgID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpO1xudmFyIEZvcm1hdFZhbGlkYXRvcnMgID0gcmVxdWlyZShcIi4vRm9ybWF0VmFsaWRhdG9yc1wiKTtcbnZhciBKc29uVmFsaWRhdGlvbiAgICA9IHJlcXVpcmUoXCIuL0pzb25WYWxpZGF0aW9uXCIpO1xudmFyIFNjaGVtYUNhY2hlICAgICAgID0gcmVxdWlyZShcIi4vU2NoZW1hQ2FjaGVcIik7XG52YXIgU2NoZW1hQ29tcGlsYXRpb24gPSByZXF1aXJlKFwiLi9TY2hlbWFDb21waWxhdGlvblwiKTtcbnZhciBTY2hlbWFWYWxpZGF0aW9uICA9IHJlcXVpcmUoXCIuL1NjaGVtYVZhbGlkYXRpb25cIik7XG52YXIgVXRpbHMgICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9VdGlsc1wiKTtcbnZhciBEcmFmdDRTY2hlbWEgICAgICA9IHJlcXVpcmUoXCIuL3NjaGVtYXMvc2NoZW1hLmpzb25cIik7XG52YXIgRHJhZnQ0SHlwZXJTY2hlbWEgPSByZXF1aXJlKFwiLi9zY2hlbWFzL2h5cGVyLXNjaGVtYS5qc29uXCIpO1xuXG4vKlxuICAgIGRlZmF1bHQgb3B0aW9uc1xuKi9cbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAvLyBkZWZhdWx0IHRpbWVvdXQgZm9yIGFsbCBhc3luYyB0YXNrc1xuICAgIGFzeW5jVGltZW91dDogMjAwMCxcbiAgICAvLyBmb3JjZSBhZGRpdGlvbmFsUHJvcGVydGllcyBhbmQgYWRkaXRpb25hbEl0ZW1zIHRvIGJlIGRlZmluZWQgb24gXCJvYmplY3RcIiBhbmQgXCJhcnJheVwiIHR5cGVzXG4gICAgZm9yY2VBZGRpdGlvbmFsOiBmYWxzZSxcbiAgICAvLyBhc3N1bWUgYWRkaXRpb25hbFByb3BlcnRpZXMgYW5kIGFkZGl0aW9uYWxJdGVtcyBhcmUgZGVmaW5lZCBhcyBcImZhbHNlXCIgd2hlcmUgYXBwcm9wcmlhdGVcbiAgICBhc3N1bWVBZGRpdGlvbmFsOiBmYWxzZSxcbiAgICAvLyBkbyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gZm9yIGVudW1zXG4gICAgZW51bUNhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb246IGZhbHNlLFxuICAgIC8vIGZvcmNlIGl0ZW1zIHRvIGJlIGRlZmluZWQgb24gXCJhcnJheVwiIHR5cGVzXG4gICAgZm9yY2VJdGVtczogZmFsc2UsXG4gICAgLy8gZm9yY2UgbWluSXRlbXMgdG8gYmUgZGVmaW5lZCBvbiBcImFycmF5XCIgdHlwZXNcbiAgICBmb3JjZU1pbkl0ZW1zOiBmYWxzZSxcbiAgICAvLyBmb3JjZSBtYXhJdGVtcyB0byBiZSBkZWZpbmVkIG9uIFwiYXJyYXlcIiB0eXBlc1xuICAgIGZvcmNlTWF4SXRlbXM6IGZhbHNlLFxuICAgIC8vIGZvcmNlIG1pbkxlbmd0aCB0byBiZSBkZWZpbmVkIG9uIFwic3RyaW5nXCIgdHlwZXNcbiAgICBmb3JjZU1pbkxlbmd0aDogZmFsc2UsXG4gICAgLy8gZm9yY2UgbWF4TGVuZ3RoIHRvIGJlIGRlZmluZWQgb24gXCJzdHJpbmdcIiB0eXBlc1xuICAgIGZvcmNlTWF4TGVuZ3RoOiBmYWxzZSxcbiAgICAvLyBmb3JjZSBwcm9wZXJ0aWVzIG9yIHBhdHRlcm5Qcm9wZXJ0aWVzIHRvIGJlIGRlZmluZWQgb24gXCJvYmplY3RcIiB0eXBlc1xuICAgIGZvcmNlUHJvcGVydGllczogZmFsc2UsXG4gICAgLy8gaWdub3JlIHJlZmVyZW5jZXMgdGhhdCBjYW5ub3QgYmUgcmVzb2x2ZWQgKHJlbW90ZSBzY2hlbWFzKSAvLyBUT0RPOiBtYWtlIHN1cmUgdGhpcyBpcyBvbmx5IGZvciByZW1vdGUgc2NoZW1hcywgbm90IGxvY2FsIG9uZXNcbiAgICBpZ25vcmVVbnJlc29sdmFibGVSZWZlcmVuY2VzOiBmYWxzZSxcbiAgICAvLyBkaXNhbGxvdyB1c2FnZSBvZiBrZXl3b3JkcyB0aGF0IHRoaXMgdmFsaWRhdG9yIGNhbid0IGhhbmRsZVxuICAgIG5vRXh0cmFLZXl3b3JkczogZmFsc2UsXG4gICAgLy8gZGlzYWxsb3cgdXNhZ2Ugb2Ygc2NoZW1hJ3Mgd2l0aG91dCBcInR5cGVcIiBkZWZpbmVkXG4gICAgbm9UeXBlbGVzczogZmFsc2UsXG4gICAgLy8gZGlzYWxsb3cgemVybyBsZW5ndGggc3RyaW5ncyBpbiB2YWxpZGF0ZWQgb2JqZWN0c1xuICAgIG5vRW1wdHlTdHJpbmdzOiBmYWxzZSxcbiAgICAvLyBkaXNhbGxvdyB6ZXJvIGxlbmd0aCBhcnJheXMgaW4gdmFsaWRhdGVkIG9iamVjdHNcbiAgICBub0VtcHR5QXJyYXlzOiBmYWxzZSxcbiAgICAvLyBmb3JjZXMgXCJ1cmlcIiBmb3JtYXQgdG8gYmUgaW4gZnVsbHkgcmZjMzk4NiBjb21wbGlhbnRcbiAgICBzdHJpY3RVcmlzOiBmYWxzZSxcbiAgICAvLyB0dXJuIG9uIHNvbWUgb2YgdGhlIGFib3ZlXG4gICAgc3RyaWN0TW9kZTogZmFsc2UsXG4gICAgLy8gcmVwb3J0IGVycm9yIHBhdGhzIGFzIGFuIGFycmF5IG9mIHBhdGggc2VnbWVudHMgdG8gZ2V0IHRvIHRoZSBvZmZlbmRpbmcgbm9kZVxuICAgIHJlcG9ydFBhdGhBc0FycmF5OiBmYWxzZSxcbiAgICAvLyBzdG9wcyB2YWxpZGF0aW9uIGFzIHNvb24gYXMgYW4gZXJyb3IgaXMgZm91bmQsIHRydWUgYnkgZGVmYXVsdCBidXQgY2FuIGJlIHR1cm5lZCBvZmZcbiAgICBicmVha09uRmlyc3RFcnJvcjogdHJ1ZSxcbiAgICAvLyBjaGVjayBpZiBzY2hlbWEgZm9sbG93IGJlc3QgcHJhY3RpY2VzIGFuZCBjb21tb24gc2VuY2VcbiAgICBwZWRhbnRpY0NoZWNrOiBmYWxzZSxcbiAgICAvLyBpZ25vcmUgdW5rbm93biBmb3JtYXRzIChkbyBub3QgcmVwb3J0IHRoZW0gYXMgYW4gZXJyb3IpXG4gICAgaWdub3JlVW5rbm93bkZvcm1hdHM6IGZhbHNlLFxuICAgIC8vIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBldmVyeSBzY2hlbWFcbiAgICBjdXN0b21WYWxpZGF0b3I6IG51bGxcbn07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucykge1xuICAgIHZhciBub3JtYWxpemVkO1xuXG4gICAgLy8gb3B0aW9uc1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpLFxuICAgICAgICAgICAgaWR4ID0ga2V5cy5sZW5ndGgsXG4gICAgICAgICAgICBrZXk7XG5cbiAgICAgICAgLy8gY2hlY2sgdGhhdCB0aGUgb3B0aW9ucyBhcmUgY29ycmVjdGx5IGNvbmZpZ3VyZWRcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXlzW2lkeF07XG4gICAgICAgICAgICBpZiAoZGVmYXVsdE9wdGlvbnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBvcHRpb24gcGFzc2VkIHRvIGNvbnN0cnVjdG9yOiBcIiArIGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb3B5IHRoZSBkZWZhdWx0IG9wdGlvbnMgaW50byBwYXNzZWQgb3B0aW9uc1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoZGVmYXVsdE9wdGlvbnMpO1xuICAgICAgICBpZHggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGlkeC0tKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXlzW2lkeF07XG4gICAgICAgICAgICBpZiAob3B0aW9uc1trZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zW2tleV0gPSBVdGlscy5jbG9uZShkZWZhdWx0T3B0aW9uc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG5vcm1hbGl6ZWQgPSBvcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBVdGlscy5jbG9uZShkZWZhdWx0T3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWQuc3RyaWN0TW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICBub3JtYWxpemVkLmZvcmNlQWRkaXRpb25hbCAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLmZvcmNlSXRlbXMgICAgICAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLmZvcmNlTWF4TGVuZ3RoICAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLmZvcmNlUHJvcGVydGllcyAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLm5vRXh0cmFLZXl3b3JkcyAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLm5vVHlwZWxlc3MgICAgICAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLm5vRW1wdHlTdHJpbmdzICAgPSB0cnVlO1xuICAgICAgICBub3JtYWxpemVkLm5vRW1wdHlBcnJheXMgICAgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKlxuICAgIGNvbnN0cnVjdG9yXG4qL1xuZnVuY3Rpb24gWlNjaGVtYShvcHRpb25zKSB7XG4gICAgdGhpcy5jYWNoZSA9IHt9O1xuICAgIHRoaXMucmVmZXJlbmNlQ2FjaGUgPSBbXTtcbiAgICB0aGlzLnZhbGlkYXRlT3B0aW9ucyA9IHt9O1xuXG4gICAgdGhpcy5vcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIERpc2FibGUgc3RyaWN0IHZhbGlkYXRpb24gZm9yIHRoZSBidWlsdC1pbiBzY2hlbWFzXG4gICAgdmFyIG1ldGFzY2hlbWFPcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucyh7IH0pO1xuXG4gICAgdGhpcy5zZXRSZW1vdGVSZWZlcmVuY2UoXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYVwiLCBEcmFmdDRTY2hlbWEsIG1ldGFzY2hlbWFPcHRpb25zKTtcbiAgICB0aGlzLnNldFJlbW90ZVJlZmVyZW5jZShcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvaHlwZXItc2NoZW1hXCIsIERyYWZ0NEh5cGVyU2NoZW1hLCBtZXRhc2NoZW1hT3B0aW9ucyk7XG59XG5cbi8qXG4gICAgaW5zdGFuY2UgbWV0aG9kc1xuKi9cblpTY2hlbWEucHJvdG90eXBlLmNvbXBpbGVTY2hlbWEgPSBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgdmFyIHJlcG9ydCA9IG5ldyBSZXBvcnQodGhpcy5vcHRpb25zKTtcblxuICAgIHNjaGVtYSA9IFNjaGVtYUNhY2hlLmdldFNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcblxuICAgIFNjaGVtYUNvbXBpbGF0aW9uLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG5cbiAgICB0aGlzLmxhc3RSZXBvcnQgPSByZXBvcnQ7XG4gICAgcmV0dXJuIHJlcG9ydC5pc1ZhbGlkKCk7XG59O1xuWlNjaGVtYS5wcm90b3R5cGUudmFsaWRhdGVTY2hlbWEgPSBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSAmJiBzY2hlbWEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIi52YWxpZGF0ZVNjaGVtYSB3YXMgY2FsbGVkIHdpdGggYW4gZW1wdHkgYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdmFyIHJlcG9ydCA9IG5ldyBSZXBvcnQodGhpcy5vcHRpb25zKTtcblxuICAgIHNjaGVtYSA9IFNjaGVtYUNhY2hlLmdldFNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcblxuICAgIHZhciBjb21waWxlZCA9IFNjaGVtYUNvbXBpbGF0aW9uLmNvbXBpbGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG4gICAgaWYgKGNvbXBpbGVkKSB7IFNjaGVtYVZhbGlkYXRpb24udmFsaWRhdGVTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7IH1cblxuICAgIHRoaXMubGFzdFJlcG9ydCA9IHJlcG9ydDtcbiAgICByZXR1cm4gcmVwb3J0LmlzVmFsaWQoKTtcbn07XG5aU2NoZW1hLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIChqc29uLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG5cbiAgICBpZiAoVXRpbHMud2hhdElzKG9wdGlvbnMpID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGlmICghb3B0aW9ucykgeyBvcHRpb25zID0ge307IH1cblxuICAgIHRoaXMudmFsaWRhdGVPcHRpb25zID0gb3B0aW9ucztcblxuICAgIHZhciB3aGF0SXMgPSBVdGlscy53aGF0SXMoc2NoZW1hKTtcbiAgICBpZiAod2hhdElzICE9PSBcInN0cmluZ1wiICYmIHdoYXRJcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihcIkludmFsaWQgLnZhbGlkYXRlIGNhbGwgLSBzY2hlbWEgbXVzdCBiZSBhbiBzdHJpbmcgb3Igb2JqZWN0IGJ1dCBcIiArIHdoYXRJcyArIFwiIHdhcyBwYXNzZWQhXCIpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFyIGZvdW5kRXJyb3IgPSBmYWxzZTtcbiAgICB2YXIgcmVwb3J0ID0gbmV3IFJlcG9ydCh0aGlzLm9wdGlvbnMpO1xuXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFyIHNjaGVtYU5hbWUgPSBzY2hlbWE7XG4gICAgICAgIHNjaGVtYSA9IFNjaGVtYUNhY2hlLmdldFNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hTmFtZSk7XG4gICAgICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2hlbWEgd2l0aCBpZCAnXCIgKyBzY2hlbWFOYW1lICsgXCInIHdhc24ndCBmb3VuZCBpbiB0aGUgdmFsaWRhdG9yIGNhY2hlIVwiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IFNjaGVtYUNhY2hlLmdldFNjaGVtYS5jYWxsKHRoaXMsIHJlcG9ydCwgc2NoZW1hKTtcbiAgICB9XG5cbiAgICB2YXIgY29tcGlsZWQgPSBmYWxzZTtcbiAgICBpZiAoIWZvdW5kRXJyb3IpIHtcbiAgICAgICAgY29tcGlsZWQgPSBTY2hlbWFDb21waWxhdGlvbi5jb21waWxlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cbiAgICBpZiAoIWNvbXBpbGVkKSB7XG4gICAgICAgIHRoaXMubGFzdFJlcG9ydCA9IHJlcG9ydDtcbiAgICAgICAgZm91bmRFcnJvciA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIHZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGlmICghZm91bmRFcnJvcikge1xuICAgICAgICB2YWxpZGF0ZWQgPSBTY2hlbWFWYWxpZGF0aW9uLnZhbGlkYXRlU2NoZW1hLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEpO1xuICAgIH1cbiAgICBpZiAoIXZhbGlkYXRlZCkge1xuICAgICAgICB0aGlzLmxhc3RSZXBvcnQgPSByZXBvcnQ7XG4gICAgICAgIGZvdW5kRXJyb3IgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNjaGVtYVBhdGgpIHtcbiAgICAgICAgcmVwb3J0LnJvb3RTY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIHNjaGVtYSA9IGdldChzY2hlbWEsIG9wdGlvbnMuc2NoZW1hUGF0aCk7XG4gICAgICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2hlbWEgcGF0aCAnXCIgKyBvcHRpb25zLnNjaGVtYVBhdGggKyBcIicgd2Fzbid0IGZvdW5kIGluIHRoZSBzY2hlbWEhXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZEVycm9yKSB7XG4gICAgICAgIEpzb25WYWxpZGF0aW9uLnZhbGlkYXRlLmNhbGwodGhpcywgcmVwb3J0LCBzY2hlbWEsIGpzb24pO1xuICAgIH1cblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICByZXBvcnQucHJvY2Vzc0FzeW5jVGFza3ModGhpcy5vcHRpb25zLmFzeW5jVGltZW91dCwgY2FsbGJhY2spO1xuICAgICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChyZXBvcnQuYXN5bmNUYXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgdmFsaWRhdGlvbiBoYXMgYXN5bmMgdGFza3MgYW5kIGNhbm5vdCBiZSBkb25lIGluIHN5bmMgbW9kZSwgcGxlYXNlIHByb3ZpZGUgY2FsbGJhY2sgYXJndW1lbnQuXCIpO1xuICAgIH1cblxuICAgIC8vIGFzc2lnbiBsYXN0UmVwb3J0IHNvIGVycm9ycyBhcmUgcmV0cmlldmFibGUgaW4gc3luYyBtb2RlXG4gICAgdGhpcy5sYXN0UmVwb3J0ID0gcmVwb3J0O1xuICAgIHJldHVybiByZXBvcnQuaXNWYWxpZCgpO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldExhc3RFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5sYXN0UmVwb3J0LmVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBlID0gbmV3IEVycm9yKCk7XG4gICAgZS5uYW1lID0gXCJ6LXNjaGVtYSB2YWxpZGF0aW9uIGVycm9yXCI7XG4gICAgZS5tZXNzYWdlID0gdGhpcy5sYXN0UmVwb3J0LmNvbW1vbkVycm9yTWVzc2FnZTtcbiAgICBlLmRldGFpbHMgPSB0aGlzLmxhc3RSZXBvcnQuZXJyb3JzO1xuICAgIHJldHVybiBlO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldExhc3RFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdFJlcG9ydCAmJiB0aGlzLmxhc3RSZXBvcnQuZXJyb3JzLmxlbmd0aCA+IDAgPyB0aGlzLmxhc3RSZXBvcnQuZXJyb3JzIDogdW5kZWZpbmVkO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldE1pc3NpbmdSZWZlcmVuY2VzID0gZnVuY3Rpb24gKGFycikge1xuICAgIGFyciA9IGFyciB8fCB0aGlzLmxhc3RSZXBvcnQuZXJyb3JzO1xuICAgIHZhciByZXMgPSBbXSxcbiAgICAgICAgaWR4ID0gYXJyLmxlbmd0aDtcbiAgICB3aGlsZSAoaWR4LS0pIHtcbiAgICAgICAgdmFyIGVycm9yID0gYXJyW2lkeF07XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSBcIlVOUkVTT0xWQUJMRV9SRUZFUkVOQ0VcIikge1xuICAgICAgICAgICAgdmFyIHJlZmVyZW5jZSA9IGVycm9yLnBhcmFtc1swXTtcbiAgICAgICAgICAgIGlmIChyZXMuaW5kZXhPZihyZWZlcmVuY2UpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yLmlubmVyKSB7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KHRoaXMuZ2V0TWlzc2luZ1JlZmVyZW5jZXMoZXJyb3IuaW5uZXIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldE1pc3NpbmdSZW1vdGVSZWZlcmVuY2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtaXNzaW5nUmVmZXJlbmNlcyA9IHRoaXMuZ2V0TWlzc2luZ1JlZmVyZW5jZXMoKSxcbiAgICAgICAgbWlzc2luZ1JlbW90ZVJlZmVyZW5jZXMgPSBbXSxcbiAgICAgICAgaWR4ID0gbWlzc2luZ1JlZmVyZW5jZXMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHgtLSkge1xuICAgICAgICB2YXIgcmVtb3RlUmVmZXJlbmNlID0gU2NoZW1hQ2FjaGUuZ2V0UmVtb3RlUGF0aChtaXNzaW5nUmVmZXJlbmNlc1tpZHhdKTtcbiAgICAgICAgaWYgKHJlbW90ZVJlZmVyZW5jZSAmJiBtaXNzaW5nUmVtb3RlUmVmZXJlbmNlcy5pbmRleE9mKHJlbW90ZVJlZmVyZW5jZSkgPT09IC0xKSB7XG4gICAgICAgICAgICBtaXNzaW5nUmVtb3RlUmVmZXJlbmNlcy5wdXNoKHJlbW90ZVJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pc3NpbmdSZW1vdGVSZWZlcmVuY2VzO1xufTtcblpTY2hlbWEucHJvdG90eXBlLnNldFJlbW90ZVJlZmVyZW5jZSA9IGZ1bmN0aW9uICh1cmksIHNjaGVtYSwgdmFsaWRhdGlvbk9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIHNjaGVtYSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzY2hlbWEgPSBKU09OLnBhcnNlKHNjaGVtYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2NoZW1hID0gVXRpbHMuY2xvbmVEZWVwKHNjaGVtYSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRpb25PcHRpb25zKSB7XG4gICAgICAgIHNjaGVtYS5fXyR2YWxpZGF0aW9uT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnModmFsaWRhdGlvbk9wdGlvbnMpO1xuICAgIH1cblxuICAgIFNjaGVtYUNhY2hlLmNhY2hlU2NoZW1hQnlVcmkuY2FsbCh0aGlzLCB1cmksIHNjaGVtYSk7XG59O1xuWlNjaGVtYS5wcm90b3R5cGUuZ2V0UmVzb2x2ZWRTY2hlbWEgPSBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgdmFyIHJlcG9ydCA9IG5ldyBSZXBvcnQodGhpcy5vcHRpb25zKTtcbiAgICBzY2hlbWEgPSBTY2hlbWFDYWNoZS5nZXRTY2hlbWEuY2FsbCh0aGlzLCByZXBvcnQsIHNjaGVtYSk7XG5cbiAgICAvLyBjbG9uZSBiZWZvcmUgbWFraW5nIGFueSBtb2RpZmljYXRpb25zXG4gICAgc2NoZW1hID0gVXRpbHMuY2xvbmVEZWVwKHNjaGVtYSk7XG5cbiAgICB2YXIgdmlzaXRlZCA9IFtdO1xuXG4gICAgLy8gY2xlYW4tdXAgdGhlIHNjaGVtYSBhbmQgcmVzb2x2ZSByZWZlcmVuY2VzXG4gICAgdmFyIGNsZWFudXAgPSBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgICAgIHZhciBrZXksXG4gICAgICAgICAgICB0eXBlT2YgPSBVdGlscy53aGF0SXMoc2NoZW1hKTtcbiAgICAgICAgaWYgKHR5cGVPZiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlT2YgIT09IFwiYXJyYXlcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5fX18kdmlzaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2NoZW1hLl9fXyR2aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgdmlzaXRlZC5wdXNoKHNjaGVtYSk7XG5cbiAgICAgICAgaWYgKHNjaGVtYS4kcmVmICYmIHNjaGVtYS5fXyRyZWZSZXNvbHZlZCkge1xuICAgICAgICAgICAgdmFyIGZyb20gPSBzY2hlbWEuX18kcmVmUmVzb2x2ZWQ7XG4gICAgICAgICAgICB2YXIgdG8gPSBzY2hlbWE7XG4gICAgICAgICAgICBkZWxldGUgc2NoZW1hLiRyZWY7XG4gICAgICAgICAgICBkZWxldGUgc2NoZW1hLl9fJHJlZlJlc29sdmVkO1xuICAgICAgICAgICAgZm9yIChrZXkgaW4gZnJvbSkge1xuICAgICAgICAgICAgICAgIGlmIChmcm9tLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9ba2V5XSA9IGZyb21ba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChrZXkgaW4gc2NoZW1hKSB7XG4gICAgICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoXCJfXyRcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNjaGVtYVtrZXldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoc2NoZW1hW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjbGVhbnVwKHNjaGVtYSk7XG4gICAgdmlzaXRlZC5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIGRlbGV0ZSBzLl9fXyR2aXNpdGVkO1xuICAgIH0pO1xuXG4gICAgdGhpcy5sYXN0UmVwb3J0ID0gcmVwb3J0O1xuICAgIGlmIChyZXBvcnQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgdGhpcy5nZXRMYXN0RXJyb3IoKTtcbiAgICB9XG59O1xuWlNjaGVtYS5wcm90b3R5cGUuc2V0U2NoZW1hUmVhZGVyID0gZnVuY3Rpb24gKHNjaGVtYVJlYWRlcikge1xuICAgIHJldHVybiBaU2NoZW1hLnNldFNjaGVtYVJlYWRlcihzY2hlbWFSZWFkZXIpO1xufTtcblpTY2hlbWEucHJvdG90eXBlLmdldFNjaGVtYVJlYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gWlNjaGVtYS5zY2hlbWFSZWFkZXI7XG59O1xuXG4vKlxuICAgIHN0YXRpYyBtZXRob2RzXG4qL1xuWlNjaGVtYS5zZXRTY2hlbWFSZWFkZXIgPSBmdW5jdGlvbiAoc2NoZW1hUmVhZGVyKSB7XG4gICAgWlNjaGVtYS5zY2hlbWFSZWFkZXIgPSBzY2hlbWFSZWFkZXI7XG59O1xuWlNjaGVtYS5yZWdpc3RlckZvcm1hdCA9IGZ1bmN0aW9uIChmb3JtYXROYW1lLCB2YWxpZGF0b3JGdW5jdGlvbikge1xuICAgIEZvcm1hdFZhbGlkYXRvcnNbZm9ybWF0TmFtZV0gPSB2YWxpZGF0b3JGdW5jdGlvbjtcbn07XG5aU2NoZW1hLnVucmVnaXN0ZXJGb3JtYXQgPSBmdW5jdGlvbiAoZm9ybWF0TmFtZSkge1xuICAgIGRlbGV0ZSBGb3JtYXRWYWxpZGF0b3JzW2Zvcm1hdE5hbWVdO1xufTtcblpTY2hlbWEuZ2V0UmVnaXN0ZXJlZEZvcm1hdHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKEZvcm1hdFZhbGlkYXRvcnMpO1xufTtcblpTY2hlbWEuZ2V0RGVmYXVsdE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFV0aWxzLmNsb25lRGVlcChkZWZhdWx0T3B0aW9ucyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFpTY2hlbWE7XG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gICAgXCIkc2NoZW1hXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9oeXBlci1zY2hlbWEjXCIsXG4gICAgXCJpZFwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvaHlwZXItc2NoZW1hI1wiLFxuICAgIFwidGl0bGVcIjogXCJKU09OIEh5cGVyLVNjaGVtYVwiLFxuICAgIFwiYWxsT2ZcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSNcIlxuICAgICAgICB9XG4gICAgXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImFkZGl0aW9uYWxJdGVtc1wiOiB7XG4gICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhbGxPZlwiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhbnlPZlwiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJvbmVPZlwiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJub3RcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiI1wiXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJsaW5rc1wiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9saW5rRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImZyYWdtZW50UmVzb2x1dGlvblwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1lZGlhXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBtZWRpYSB0eXBlLCBhcyBkZXNjcmliZWQgaW4gUkZDIDIwNDZcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiYmluYXJ5RW5jb2RpbmdcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBjb250ZW50IGVuY29kaW5nIHNjaGVtZSwgYXMgZGVzY3JpYmVkIGluIFJGQyAyMDQ1XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInBhdGhTdGFydFwiOiB7XG4gICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiSW5zdGFuY2VzJyBVUklzIG11c3Qgc3RhcnQgd2l0aCB0aGlzIHZhbHVlIGZvciB0aGlzIHNjaGVtYSB0byBhcHBseSB0byB0aGVtXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICAgIFwic2NoZW1hQXJyYXlcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImxpbmtEZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgICBcInRpdGxlXCI6IFwiTGluayBEZXNjcmlwdGlvbiBPYmplY3RcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJyZXF1aXJlZFwiOiBbIFwiaHJlZlwiLCBcInJlbFwiIF0sXG4gICAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgICAgIFwiaHJlZlwiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJhIFVSSSB0ZW1wbGF0ZSwgYXMgZGVmaW5lZCBieSBSRkMgNjU3MCwgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICQsICggYW5kICkgY2hhcmFjdGVycyBmb3IgcHJlLXByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwicmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcInJlbGF0aW9uIHRvIHRoZSB0YXJnZXQgcmVzb3VyY2Ugb2YgdGhlIGxpbmtcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiYSB0aXRsZSBmb3IgdGhlIGxpbmtcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0U2NoZW1hXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkpTT04gU2NoZW1hIGRlc2NyaWJpbmcgdGhlIGxpbmsgdGFyZ2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiNcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJtZWRpYVR5cGVcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwibWVkaWEgdHlwZSAoYXMgZGVmaW5lZCBieSBSRkMgMjA0NikgZGVzY3JpYmluZyB0aGUgbGluayB0YXJnZXRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwibWV0aG9kXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIm1ldGhvZCBmb3IgcmVxdWVzdGluZyB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIChlLmcuIGZvciBIVFRQIHRoaXMgbWlnaHQgYmUgXFxcIkdFVFxcXCIgb3IgXFxcIkRFTEVURVxcXCIpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImVuY1R5cGVcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG1lZGlhIHR5cGUgaW4gd2hpY2ggdG8gc3VibWl0IGRhdGEgYWxvbmcgd2l0aCB0aGUgcmVxdWVzdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0XCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInNjaGVtYVwiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJTY2hlbWEgZGVzY3JpYmluZyB0aGUgZGF0YSB0byBzdWJtaXQgYWxvbmcgd2l0aCB0aGUgcmVxdWVzdFwiLFxuICAgICAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgICBcImlkXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCIsXG4gICAgXCIkc2NoZW1hXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCIsXG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkNvcmUgc2NoZW1hIG1ldGEtc2NoZW1hXCIsXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICAgIFwic2NoZW1hQXJyYXlcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICAgIFwiaXRlbXNcIjogeyBcIiRyZWZcIjogXCIjXCIgfVxuICAgICAgICB9LFxuICAgICAgICBcInBvc2l0aXZlSW50ZWdlclwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcIm1pbmltdW1cIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInBvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCI6IHtcbiAgICAgICAgICAgIFwiYWxsT2ZcIjogWyB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCIgfSwgeyBcImRlZmF1bHRcIjogMCB9IF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzaW1wbGVUeXBlc1wiOiB7XG4gICAgICAgICAgICBcImVudW1cIjogWyBcImFycmF5XCIsIFwiYm9vbGVhblwiLCBcImludGVnZXJcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwic3RyaW5nXCIgXVxuICAgICAgICB9LFxuICAgICAgICBcInN0cmluZ0FycmF5XCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgICBcIml0ZW1zXCI6IHsgXCJ0eXBlXCI6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImlkXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcIiRzY2hlbWFcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge30sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwibWluaW11bVwiOiAwLFxuICAgICAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwiZm9ybWF0XCI6IFwicmVnZXhcIlxuICAgICAgICB9LFxuICAgICAgICBcImFkZGl0aW9uYWxJdGVtc1wiOiB7XG4gICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICB7IFwidHlwZVwiOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgIHsgXCIkcmVmXCI6IFwiI1wiIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICB7IFwiJHJlZlwiOiBcIiNcIiB9LFxuICAgICAgICAgICAgICAgIHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCIgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIiB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIm1heFByb3BlcnRpZXNcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiIH0sXG4gICAgICAgIFwibWluUHJvcGVydGllc1wiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIiB9LFxuICAgICAgICBcInJlcXVpcmVkXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwiIH0sXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICAgICAgeyBcInR5cGVcIjogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICB7IFwiJHJlZlwiOiBcIiNcIiB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHsgXCIkcmVmXCI6IFwiI1wiIH0sXG4gICAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7IFwiJHJlZlwiOiBcIiNcIiB9LFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHsgXCIkcmVmXCI6IFwiI1wiIH0sXG4gICAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgICAgICAgICAgeyBcIiRyZWZcIjogXCIjXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5XCIgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAgICAgIHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zaW1wbGVUeXBlc1wiIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgICAgICBcIml0ZW1zXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zaW1wbGVUeXBlc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICAgICAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7IFwidHlwZVwiOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIFwiYWxsT2ZcIjogeyBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYUFycmF5XCIgfSxcbiAgICAgICAgXCJhbnlPZlwiOiB7IFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hQXJyYXlcIiB9LFxuICAgICAgICBcIm9uZU9mXCI6IHsgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFBcnJheVwiIH0sXG4gICAgICAgIFwibm90XCI6IHsgXCIkcmVmXCI6IFwiI1wiIH1cbiAgICB9LFxuICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IFsgXCJtYXhpbXVtXCIgXSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IFsgXCJtaW5pbXVtXCIgXVxuICAgIH0sXG4gICAgXCJkZWZhdWx0XCI6IHt9XG59XG4iXX0= diff --git a/browser/sway.js b/browser/sway.js index 7063f589..d9dbd2c4 100644 --- a/browser/sway.js +++ b/browser/sway.js @@ -29,7 +29,7 @@ var _ = typeof window !== "undefined" ? window['_'] : typeof global !== "undefined" ? global['_'] : null; var helpers = require('./lib/helpers'); var JsonRefs = typeof window !== "undefined" ? window['JsonRefs'] : typeof global !== "undefined" ? global['JsonRefs'] : null; -var SwaggerApi = require('./lib/types/api'); +var ApiDefinition = require('./lib/types/api-definition'); var YAML = typeof window !== "undefined" ? window['jsyaml'] : typeof global !== "undefined" ? global['jsyaml'] : null; // Load promises polyfill if necessary @@ -39,25 +39,27 @@ if (typeof Promise === 'undefined') { } /** - * A library for simpler [Swagger](http://swagger.io/) integrations. + * A library that simplifies [OpenAPI](https://www.openapis.org/) integrations. * * @module sway */ /** - * Creates a SwaggerApi object from its Swagger definition(s). + * Creates an ApiDefinition object from the provided OpenAPI definition. * * @param {module:sway.CreateOptions} options - The options for loading the definition(s) * - * @returns {Promise} The promise + * @returns {Promise} The promise * * @example - * SwaggerApi.create({definition: 'http://petstore.swagger.io/v2/swagger.yaml'}) - * .then(function (api) { - * console.log('Documentation URL: ', api.documentationUrl); - * }, function (err) { - * console.error(err.stack); - * }); + * Sway.create({ + * definition: 'https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml' + * }) + * .then(function (apiDefinition) { + * console.log('Documentation URL: ', api.documentationUrl); + * }, function (err) { + * console.error(err.stack); + * }); */ module.exports.create = function (options) { var allTasks = Promise.resolve(); @@ -139,18 +141,18 @@ module.exports.create = function (options) { }); return { - // The original Swagger definition + // The original OpenAPI definition definition: _.isString(cOptions.definition) ? remoteResults.value : cOptions.definition, - // The original Swagger definition with its remote references resolved + // The original OpenAPI definition with its remote references resolved definitionRemotesResolved: remoteResults.resolved, - // The original Swagger definition with all its references resolved + // The original OpenAPI definition with all its references resolved definitionFullyResolved: results.resolved, // Merge the local reference details with the remote reference details refs: results.refs }; }); }) - // Process the Swagger document and return the API + // Process the OpenAPI document and return an ApiDefinition .then(function (results) { // We need to remove all circular objects as z-schema does not work with them: // https://github.com/zaggino/z-schema/issues/137 @@ -159,7 +161,7 @@ module.exports.create = function (options) { helpers.removeCirculars(results.definitionFullyResolved); // Create object model - return new SwaggerApi(results.definition, results.definitionRemotesResolved, results.definitionFullyResolved, results.refs, options); + return new ApiDefinition(results.definition, results.definitionRemotesResolved, results.definitionFullyResolved, results.refs, options); }); return allTasks; @@ -167,7 +169,7 @@ module.exports.create = function (options) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./lib/helpers":2,"./lib/types/api":3,"native-promise-only":229}],2:[function(require,module,exports){ +},{"./lib/helpers":2,"./lib/types/api-definition":3,"native-promise-only":229}],2:[function(require,module,exports){ (function (global){ /* * The MIT License (MIT) @@ -222,7 +224,7 @@ var dateTimeRegExp = new RegExp('^' + '\\d{4}' + // year var collectionFormats = [undefined, 'csv', 'multi', 'pipes', 'ssv', 'tsv']; var jsonMocker; var jsonSchemaValidator = createJSONValidator(); -// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#parameter-object +// https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject var parameterSchemaProperties = ['allowEmptyValue', 'default', 'description', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'format', 'items', 'maxItems', 'maxLength', 'maximum', 'minItems', 'minLength', 'minimum', 'multipleOf', 'pattern', 'type', 'uniqueItems']; var types = ['array', 'boolean', 'integer', 'object', 'number', 'string']; @@ -324,9 +326,9 @@ function normalizeError(obj) { } /** - * Helper method to take a Swagger parameter definition and compute its schema. + * Helper method to take an OpenAPI Parameter Object definition and compute its schema. * - * For non-body Swagger parameters, the definition itself is not suitable as a JSON Schema so we must compute it. + * For non-body OpenAPI parameters, the definition itself is not suitable as a JSON Schema so we must compute it. * * @param {object} paramDef - The parameter definition * @@ -605,7 +607,7 @@ module.exports.parameterLocations = ['body', 'formData', 'header', 'path', 'quer * Process validators. * * @param {object|module:Sway~ServerResponseWrapper} target - The thing being validated - * @param {module:Sway~SwaggerApi|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ + * @param {module:Sway~ApiDefinition|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ * @param {module:Sway~DocumentValidationFunction[]|module:Sway~RequestValidationFunction[]|module:Sway~ResposeValidationFunction[]} validators - The validators * @param {module:Sway~ValidationResults} results - The cumulative validation results */ @@ -882,45 +884,44 @@ var Path = require('./path'); var validators = require('../validation/validators'); /** - * The Swagger API object. + * The OpenAPI Definition object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object). * - * @param {object} definition - The original Swagger definition - * @param {object} definitionRemotesResolved - The Swagger definition with all of its remote references resolved - * @param {object} definitionFullyResolved - The Swagger definition with all of its references resolved - * @param {object} references - The location and resolution of the resolved references in the Swagger definition - * @param {object} options - The options passed to swaggerApi.create + * @param {object} definition - The original OpenAPI definition + * @param {object} definitionRemotesResolved - The OpenAPI definition with all of its remote references resolved + * @param {object} definitionFullyResolved - The OpenAPI definition with all of its references resolved + * @param {object} references - The location and resolution of the resolved references in the OpenAPI definition + * @param {object} options - The options passed to ApiDefinition.create * * @property {object} customFormats - The key/value pair of custom formats *(The keys are the format name and the values * are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* * @property {object} customFormatGenerators - The key/value pair of custom format generators *(The keys are the format name and the values * are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* * @property {module:sway.DocumentValidationFunction[]} customValidators - The array of custom validators - * @property {object} definition - The original Swagger definition - * @property {object} definitionRemotesResolved - The Swagger definition with only its remote references resolved *(This + * @property {object} definition - The original OpenAPI definition + * @property {object} definitionRemotesResolved - The OpenAPI definition with only its remote references resolved *(This * means all references to external/remote documents are replaced with its dereferenced value but all local references * are left unresolved.)* - * @property {object} definitionFullyResolved - The Swagger definition with all of its resolvable references resolved + * @property {object} definitionFullyResolved - The OpenAPI definition with all of its resolvable references resolved * *(This means that all resolvable references are replaced with their dereferenced value.)* - * @property {string} documentationUrl - The URL to the Swagger documentation + * @property {string} documentationUrl - The URL to the OpenAPI documentation * @property {module:sway.Path[]} pathObjects - The unique `Path` objects * @property {object} options - The options passed to the constructor * @property {object} references - The reference metadata *(See [JsonRefs~ResolvedRefDetails](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..ResolvedRefDetails))* - * - * @property {string} version - The Swagger API version + * @property {string} version - The OpenAPI version * * @constructor * * @memberof module:sway */ -function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolved, references, options) { +function ApiDefinition(definition, definitionRemotesResolved, definitionFullyResolved, references, options) { var that = this; - debug('Creating SwaggerApi from %s', _.isString(options.definition) ? options.definition : 'the provided document'); + debug('Creating ApiDefinition from %s', _.isString(options.definition) ? options.definition : 'the provided OpenAPI definition'); // Assign this so other object can use it this._debug = debug; @@ -937,17 +938,17 @@ function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolv this.references = references; this.version = '2.0'; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Object definition _.assign(this, definition); // Register custom formats - _.each(options.customFormats, _.bind(SwaggerApi.prototype.registerFormat, this)); + _.each(options.customFormats, _.bind(ApiDefinition.prototype.registerFormat, this)); // Register custom formats - _.each(options.customFormatGenerators, _.bind(SwaggerApi.prototype.registerFormatGenerator, this)); + _.each(options.customFormatGenerators, _.bind(ApiDefinition.prototype.registerFormatGenerator, this)); // Register custom validators - _.each(options.customValidators, _.bind(SwaggerApi.prototype.registerValidator, this)); + _.each(options.customValidators, _.bind(ApiDefinition.prototype.registerValidator, this)); debug(' Paths:'); @@ -968,14 +969,14 @@ function SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolv * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} idOrPathOrReq - The Swagger opeartion id, path string or the http client request *(or + * @param {string|object} idOrPathOrReq - The OpenAPI opeartion id, path string or the http client request *(or * equivalent)* - * @param {string} [method] - The Swagger operation method _(not used when providing an operation id)_ + * @param {string} [method] - The OpenAPI operation method _(not used when providing an operation id)_ * * @returns {module:sway.Operation} The `Operation` for the provided operation id, or path and method or `undefined` if * there is no operation for that operation id, or path and method combination */ -SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { +ApiDefinition.prototype.getOperation = function (idOrPathOrReq, method) { var pathObject; var operation; @@ -1003,11 +1004,11 @@ SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { /** * Returns all operations for the provided path or all operations in the API. * - * @param {string} [path] - The Swagger path + * @param {string} [path] - The OpenAPI path * * @returns {module:sway.Operation[]} All `Operation` objects for the provided path or all API operations */ -SwaggerApi.prototype.getOperations = function (path) { +ApiDefinition.prototype.getOperations = function (path) { var operations = []; var pathObject; @@ -1029,11 +1030,11 @@ SwaggerApi.prototype.getOperations = function (path) { /** * Returns all operations for the provided tag. * - * @param {string} [tag] - The Swagger tag + * @param {string} [tag] - The OpenAPI tag * * @returns {module:sway.Operation[]} All `Operation` objects for the provided tag */ -SwaggerApi.prototype.getOperationsByTag = function (tag) { +ApiDefinition.prototype.getOperationsByTag = function (tag) { return _.reduce(this.pathObjects, function (operations, pathObject) { operations.push.apply(operations, pathObject.getOperationsByTag(tag)); @@ -1051,11 +1052,11 @@ SwaggerApi.prototype.getOperationsByTag = function (tag) { * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} pathOrReq - The Swagger path string or the http client request *(or equivalent)* + * @param {string|object} pathOrReq - The OpenAPI path string or the http client request *(or equivalent)* * * @returns {module:sway.Path} The corresponding `Path` object for the requested path or request */ -SwaggerApi.prototype.getPath = function (pathOrReq) { +ApiDefinition.prototype.getPath = function (pathOrReq) { var lastIndex = -1; var nextIndex = -1; var matches; @@ -1121,11 +1122,11 @@ SwaggerApi.prototype.getPath = function (pathOrReq) { }; /** - * Returns all path objects for the Swagger API. + * Returns all path objects for the OpenAPI definition. * * @returns {module:sway.Path[]} The `Path` objects */ -SwaggerApi.prototype.getPaths = function () { +ApiDefinition.prototype.getPaths = function () { return this.pathObjects; }; @@ -1135,7 +1136,7 @@ SwaggerApi.prototype.getPaths = function () { * @param {string} name - The name of the format * @param {function} validator - The format validator *(See [ZSchema Custom Format](https://github.com/zaggino/z-schema#register-a-custom-format))* */ -SwaggerApi.prototype.registerFormat = function (name, validator) { +ApiDefinition.prototype.registerFormat = function (name, validator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -1157,7 +1158,7 @@ SwaggerApi.prototype.registerFormat = function (name, validator) { * @param {string} name - The name of the format * @param {function} formatGenerator - The format generator *(See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* */ -SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) { +ApiDefinition.prototype.registerFormatGenerator = function (name, formatGenerator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -1178,7 +1179,7 @@ SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) * * @param {string} name - The name of the format */ -SwaggerApi.prototype.unregisterFormat = function (name) { +ApiDefinition.prototype.unregisterFormat = function (name) { if (_.isString(name)) { delete this.customFormats[name]; @@ -1191,7 +1192,7 @@ SwaggerApi.prototype.unregisterFormat = function (name) { * * @param {string} name - The name of the format generator */ -SwaggerApi.prototype.unregisterFormatGenerator = function (name) { +ApiDefinition.prototype.unregisterFormatGenerator = function (name) { if (_.isString(name)) { delete this.customFormatGenerators[name]; @@ -1206,7 +1207,7 @@ SwaggerApi.prototype.unregisterFormatGenerator = function (name) { * * @throws {TypeError} If the validator is not a function */ -SwaggerApi.prototype.registerValidator = function (validator) { +ApiDefinition.prototype.registerValidator = function (validator) { if (_.isUndefined(validator)) { throw new TypeError('validator is required'); } else if (!_.isFunction(validator)) { @@ -1217,11 +1218,11 @@ SwaggerApi.prototype.registerValidator = function (validator) { }; /** - * Performs validation of the Swagger API document(s). + * Performs validation of the OpenAPI definition. * * @returns {module:sway.ValidationResults} The validation results */ -SwaggerApi.prototype.validate = function () { +ApiDefinition.prototype.validate = function () { var results = { errors: [], warnings: [] @@ -1242,7 +1243,7 @@ SwaggerApi.prototype.validate = function () { return results; }; -module.exports = SwaggerApi; +module.exports = ApiDefinition; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) @@ -1281,12 +1282,12 @@ var Response = require('./response'); var helpers = require('../helpers'); /** - * The Swagger Operation object. + * The OpenAPI Operation object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject). * * @param {module:sway.Path} pathObject - The Path object * @param {string} method - The operation method @@ -1314,20 +1315,20 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path var that = this; // Assign local properties - this.consumes = definitionFullyResolved.consumes || pathObject.api.consumes || []; + this.consumes = definitionFullyResolved.consumes || pathObject.apiDefinition.consumes || []; this.definition = _.cloneDeep(definition); // Clone so we do not alter the original this.definitionFullyResolved = _.cloneDeep(definitionFullyResolved); // Clone so we do not alter the original this.method = method; this.parameterObjects = []; // Computed below this.pathObject = pathObject; this.pathToDefinition = pathToDefinition; - this.produces = definitionFullyResolved.produces || pathObject.api.produces || []; + this.produces = definitionFullyResolved.produces || pathObject.apiDefinition.produces || []; this.ptr = JsonRefs.pathToPtr(pathToDefinition); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Operation Object definition _.assign(this, definitionFullyResolved); - this._debug = this.pathObject.api._debug; + this._debug = this.pathObject.apiDefinition._debug; // Add the Parameter objects from the Path object that were not redefined in the operation definition this.parameterObjects = _.map(pathObject.parameterObjects, function (parameterObject) { @@ -1350,7 +1351,7 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path var key = paramDef.in + ':' + paramDef.name; var seenIndex = seenParameters.indexOf(key); var pPath = pathToDefinition.concat(['parameters', index.toString()]); - var parameterObject = new Parameter(that, _.get(pathObject.api.definitionRemotesResolved, pPath), paramDef, pPath); + var parameterObject = new Parameter(that, _.get(pathObject.apiDefinition.definitionRemotesResolved, pPath), paramDef, pPath); if (seenIndex > -1) { that.parameterObjects[seenIndex] = parameterObject; @@ -1373,7 +1374,7 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path this.responseObjects = _.map(this.definitionFullyResolved.responses, function (responseDef, code) { var rPath = pathToDefinition.concat(['responses', code]); - return new Response(that, code, _.get(that.pathObject.api.definitionRemotesResolved, rPath), responseDef, rPath); + return new Response(that, code, _.get(that.pathObject.apiDefinition.definitionRemotesResolved, rPath), responseDef, rPath); }); this._debug(' Security:'); @@ -1381,11 +1382,11 @@ function Operation(pathObject, method, definition, definitionFullyResolved, path // Bring in the security definitions for easier access // Override global security with locally defined - var security = this.security || pathObject.api.definitionFullyResolved.security; + var security = this.security || pathObject.apiDefinition.definitionFullyResolved.security; this.securityDefinitions = _.reduce(security, function (defs, reqs) { _.each(reqs, function (req, name) { - var def = pathObject.api.definitionFullyResolved.securityDefinitions ? pathObject.api.definitionFullyResolved.securityDefinitions[name] : undefined; + var def = pathObject.apiDefinition.definitionFullyResolved.securityDefinitions ? pathObject.apiDefinition.definitionFullyResolved.securityDefinitions[name] : undefined; if (!_.isUndefined(def)) { defs[name] = def; @@ -1460,7 +1461,7 @@ Operation.prototype.getResponses = function () { * @returns {object[]} The security for this operation */ Operation.prototype.getSecurity = function () { - return this.definitionFullyResolved.security || this.pathObject.api.definitionFullyResolved.security; + return this.definitionFullyResolved.security || this.pathObject.apiDefinition.definitionFullyResolved.security; }; /** @@ -1573,7 +1574,7 @@ Operation.prototype.validateResponse = function (res, options) { response = this.getResponse(realStatusCode); if (_.isUndefined(response)) { - // If there is no response for the requested status, use the default if there is one (This is Swagger's approach) + // If there is no response for the requested status, use the default if there is one (This is OpenAPI's approach) response = this.getResponse('default'); if (_.isUndefined(response)) { @@ -1856,12 +1857,12 @@ var ParameterValue = require('./parameter-value'); var parseUrl = require('url').parse; /** - * The Swagger Parameter object. + * The OpenAPI Parameter object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject). * * @param {module:sway.Operation|module:sway.Path} opOrPathObject - The `Operation` or `Path` object * @param {object} definition - The parameter definition *(The raw parameter definition __after__ remote references were @@ -1898,14 +1899,14 @@ function Parameter(opOrPathObject, definition, definitionFullyResolved, pathToDe this.pathObject = opOrPathObject; } - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Parameter Object definition _.assign(this, definitionFullyResolved); if (_.isUndefined(this.schema)) { this.schema = helpers.computeParameterSchema(definitionFullyResolved); } - this.pathObject.api._debug(' %s%s (in: %s) at %s', _.isUndefined(this.operationObject) ? '' : ' ', definitionFullyResolved.name, definitionFullyResolved.in, this.ptr); + this.pathObject.apiDefinition._debug(' %s%s (in: %s) at %s', _.isUndefined(this.operationObject) ? '' : ' ', definitionFullyResolved.name, definitionFullyResolved.in, this.ptr); } /** @@ -2074,16 +2075,16 @@ var supportedHttpMethods = require('swagger-methods'); * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Path Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject). * - * @param {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @param {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @param {string} path - The path string * @param {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @param {object} definitionFullyResolved - The path definition with all of its resolvable references resolved * @param {string[]} pathToDefinition - The path segments to the path definition * - * @property {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @property {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @property {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @property {object} definitionFullyResolved - The path definition with all of its resolvable references resolved @@ -2098,8 +2099,8 @@ var supportedHttpMethods = require('swagger-methods'); * * @memberof module:sway */ -function Path(api, path, definition, definitionFullyResolved, pathToDefinition) { - var basePathPrefix = api.definitionFullyResolved.basePath || '/'; +function Path(apiDefinition, path, definition, definitionFullyResolved, pathToDefinition) { + var basePathPrefix = apiDefinition.definitionFullyResolved.basePath || '/'; var that = this; var sanitizedPath; @@ -2110,7 +2111,7 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) basePathPrefix = basePathPrefix.substring(0, basePathPrefix.length - 1); } - // Converts Swagger parameters to Express-style parameters, and also escapes all path-to-regexp special characters + // Converts OpenAPI parameters to Express-style parameters, and also escapes all path-to-regexp special characters // // @see: https://github.com/pillarjs/path-to-regexp/issues/76#issuecomment-219085357 sanitizedPath = basePathPrefix + path.replace('(', '\\(') // path-to-regexp @@ -2119,11 +2120,11 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) .replace('*', '\\*') // path-to-regexp .replace('+', '\\+') // path-to-regexp .replace('?', '\\?') // path-to-regexp - .replace(/\{/g, ':') // Swagger -> Express-style - .replace(/\}/g, ''); // Swagger -> Express-style + .replace(/\{/g, ':') // OpenAPI -> Express-style + .replace(/\}/g, ''); // OpenAPI -> Express-style // Assign local properties - this.api = api; + this.apiDefinition = apiDefinition; this.definition = definition; this.definitionFullyResolved = definitionFullyResolved; this.path = path; @@ -2131,17 +2132,17 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.regexp = pathToRegexp(sanitizedPath, { sensitive: true }); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Path Object definition _.assign(this, definitionFullyResolved); - this._debug = this.api._debug; + this._debug = this.apiDefinition._debug; this._debug(' %s', this.path); this.parameterObjects = _.map(definitionFullyResolved.parameters, function (paramDef, index) { var pPath = pathToDefinition.concat(['parameters', index.toString()]); - return new Parameter(that, _.get(api.definitionRemotesResolved, pPath), paramDef, pPath); + return new Parameter(that, _.get(apiDefinition.definitionRemotesResolved, pPath), paramDef, pPath); }); this._debug(' Operations:'); @@ -2150,7 +2151,7 @@ function Path(api, path, definition, definitionFullyResolved, pathToDefinition) var oPath = pathToDefinition.concat(method); if (supportedHttpMethods.indexOf(method) > -1) { - operations.push(new Operation(that, method, _.get(api.definitionRemotesResolved, oPath), operationDef, oPath)); + operations.push(new Operation(that, method, _.get(apiDefinition.definitionRemotesResolved, oPath), operationDef, oPath)); } return operations; @@ -2241,12 +2242,12 @@ var JsonRefs = typeof window !== "undefined" ? window['JsonRefs'] : typeof globa var YAML = typeof window !== "undefined" ? window['jsyaml'] : typeof global !== "undefined" ? global['jsyaml'] : null; /** - * The Swagger Response object. + * The OpenAPI Response object. * * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Response Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject). * * @param {module:sway.Operation} operationObject - The `Operation` object * @param {string} statusCode - The status code @@ -2276,10 +2277,10 @@ function Response(operationObject, statusCode, definition, definitionFullyResolv this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.statusCode = statusCode; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Response Object definition _.assign(this, definitionFullyResolved); - this.operationObject.pathObject.api._debug(' %s at %s', statusCode, this.ptr); + this.operationObject.pathObject.apiDefinition._debug(' %s at %s', statusCode, this.ptr); } /** @@ -2664,14 +2665,14 @@ function walkSchema(api, blacklist, schema, path, handlers, response) { } /** - * Validates the resolved Swagger document against the Swagger 2.0 JSON Schema. + * Validates the resolved OpenAPI Definition against the OpenAPI 3.x JSON Schema. * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateStructure(api) { - var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), swaggerSchema, api.definitionFullyResolved); +function validateStructure(apiDefinition) { + var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), swaggerSchema, apiDefinition.definitionFullyResolved); // Make complex JSON Schema validation errors easier to understand (Issue 15) results.errors = results.errors.map(function (error) { @@ -2700,7 +2701,7 @@ function validateStructure(api) { }); // Treat invalid/missing references as structural errors - _.each(api.references, function (refDetails, refPtr) { + _.each(apiDefinition.references, function (refDetails, refPtr) { var refPath = JsonRefs.pathFromPtr(refPtr); var err; @@ -2784,11 +2785,11 @@ function validateSchemaProperties(api, response, schema, path) { * * Identifies unreferenced referenceable definitions * * Identifies unresolvable references * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateReferences(api) { +function validateReferences(apiDefinition) { var docReferences = {}; var inheritanceDetails = {}; var referenceable = []; @@ -2875,19 +2876,19 @@ function validateReferences(api) { } // Identify referenceable definitions - _.forEach(api.definitionFullyResolved.definitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['definitions', name])); }); - _.forEach(api.definitionFullyResolved.parameters, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.parameters, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['parameters', name])); }); - _.forEach(api.definitionFullyResolved.responses, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.responses, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['responses', name])); }); - _.forEach(api.definitionFullyResolved.securityDefinitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.securityDefinitions, function (def, name) { var sPath = ['securityDefinitions', name]; referenceable.push(JsonRefs.pathToPtr(sPath)); @@ -2902,7 +2903,7 @@ function validateReferences(api) { }); // Identify references and build inheritance model - _.forEach(api.references, function (metadata, ptr) { + _.forEach(apiDefinition.references, function (metadata, ptr) { var ptrPath = JsonRefs.pathFromPtr(ptr); if (!_.has(metadata, 'missing')) { @@ -2956,9 +2957,9 @@ function validateReferences(api) { }); // Identify references and validate missing references for non-JSON References (security) - _.forEach(api.definitionFullyResolved.security, createSecurityProcessor(['security'])); + _.forEach(apiDefinition.definitionFullyResolved.security, createSecurityProcessor(['security'])); - _.forEach(api.definitionFullyResolved.paths, function (pathDef, name) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, name) { var pPath = ['paths', name]; _.forEach(pathDef.security, createSecurityProcessor(pPath.concat('security'))); @@ -2993,13 +2994,13 @@ function validateReferences(api) { * (@see {@link https://github.com/swagger-api/swagger-spec/issues/174}) * * Validates that all default values are valid based on its respective schema * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateSchemaObjects(api) { +function validateSchemaObjects(apiDefinition) { // Build a blacklist to avoid cascading errors/warnings - var blacklist = _.reduce(api.references, function (list, metadata, ptr) { + var blacklist = _.reduce(apiDefinition.references, function (list, metadata, ptr) { var refPath = JsonRefs.pathFromPtr(ptr); list.push(JsonRefs.pathToPtr(refPath)); @@ -3027,7 +3028,7 @@ function validateSchemaObjects(api) { parameterDef = helpers.computeParameterSchema(parameterDef); } - walkSchema(api, blacklist, parameterDef, pPath, validators, response); + walkSchema(apiDefinition, blacklist, parameterDef, pPath, validators, response); }); } @@ -3036,28 +3037,28 @@ function validateSchemaObjects(api) { var rPath = path.concat(name); _.forEach(responseDef.headers, function (header, hName) { - walkSchema(api, blacklist, header, rPath.concat(['headers', hName]), validators, response); + walkSchema(apiDefinition, blacklist, header, rPath.concat(['headers', hName]), validators, response); }); if (!_.isUndefined(responseDef.schema)) { - walkSchema(api, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); + walkSchema(apiDefinition, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); } }); } // Validate definitions - _.forEach(api.definitionFullyResolved.definitions, function (definitionDef, name) { - walkSchema(api, blacklist, definitionDef, ['definitions', name], validators, response); + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (definitionDef, name) { + walkSchema(apiDefinition, blacklist, definitionDef, ['definitions', name], validators, response); }); // Validate global parameter definitions - validateParameters(api.definitionFullyResolved.parameters, ['parameters']); + validateParameters(apiDefinition.definitionFullyResolved.parameters, ['parameters']); // Validate global response definitions - validateResponses(api.definitionFullyResolved.responses, ['responses']); + validateResponses(apiDefinition.definitionFullyResolved.responses, ['responses']); // Validate paths and operations - _.forEach(api.definitionFullyResolved.paths, function (pathDef, path) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, path) { var pPath = ['paths', path]; // Validate path-level parameter definitions @@ -3094,11 +3095,11 @@ function validateSchemaObjects(api) { * * Ensure that all operation ids are unique * * Ensure that path parameters have a name * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validatePathsAndOperations(api) { +function validatePathsAndOperations(apiDefinition) { var response = { errors: [], warnings: [] @@ -3121,7 +3122,7 @@ function validatePathsAndOperations(api) { return seenParameters; } - _.reduce(api.definitionFullyResolved.paths, function (metadata, pathDef, path) { + _.reduce(apiDefinition.definitionFullyResolved.paths, function (metadata, pathDef, path) { var declaredPathParameters = []; var normalizedPath = path; var pPath = ['paths', path]; @@ -3154,7 +3155,7 @@ function validatePathsAndOperations(api) { metadata.paths.push(normalizedPath); } - // Identify duplicate path-level parameters (We do this manually since SwaggerApi#getOperation consolidates them) + // Identify duplicate path-level parameters (We do this manually since ApiDefinition#getOperation consolidates them) _.reduce(pathDef.parameters, function (seenParameters, parameter, index) { return validateDuplicateParameter(seenParameters, parameter, pPath.concat(['parameters', index.toString()])); }, []); @@ -3189,8 +3190,8 @@ function validatePathsAndOperations(api) { return validateDuplicateParameter(seenParameters, parameter, oPath.concat(['parameters', index.toString()])); }, []); - // Use SwaggerApi#getOperation to avoid having to consolidate parameters - parameters = api.getOperation(path, method).getParameters(); + // Use ApiDefinition#getOperation to avoid having to consolidate parameters + parameters = apiDefinition.getOperation(path, method).getParameters(); pathMetadata = _.reduce(parameters, function (pMetadata, parameter) { // Record path parameters @@ -51469,4 +51470,4 @@ function extend() { },{}]},{},[1])(1) }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9oZWxwZXJzLmpzIiwibGliL3R5cGVzL2FwaS5qcyIsImxpYi90eXBlcy9vcGVyYXRpb24uanMiLCJsaWIvdHlwZXMvcGFyYW1ldGVyLXZhbHVlLmpzIiwibGliL3R5cGVzL3BhcmFtZXRlci5qcyIsImxpYi90eXBlcy9wYXRoLmpzIiwibGliL3R5cGVzL3Jlc3BvbnNlLmpzIiwibGliL3ZhbGlkYXRpb24vZm9ybWF0LWdlbmVyYXRvcnMuanMiLCJsaWIvdmFsaWRhdGlvbi9mb3JtYXQtdmFsaWRhdG9ycy5qcyIsImxpYi92YWxpZGF0aW9uL3ZhbGlkYXRvcnMuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L2Fzc2VydC5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Fzc2VydC9ub2RlX21vZHVsZXMvdXRpbC91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyLXJlc29sdmUvZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9saWIvX2VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3B1bnljb2RlL3B1bnljb2RlLmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWlsdGluLXN0YXR1cy1jb2Rlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NhbGwtbWUtbWF5YmUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9kZWVwLWV4dGVuZC9saWIvZGVlcC1leHRlbmQuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2Nsb25lLW9iai5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9maW5kLXJlZmVyZW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL25vcm1hbGl6ZS1zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvcmVzb2x2ZS1zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvZHJhbmdlL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9hc3QuanMiLCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIvY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9rZXl3b3JkLmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2FkZHJlc3MuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2NvbW1lcmNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9jb21wYW55LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9kYXRhYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZmFrZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvZmluYW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaGFja2VyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pYmFuLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pbWFnZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2ludGVybmV0LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvYnVpbGRpbmdfbnVtYmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL2NpdHlfcHJlZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eV9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY291bnRyeV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY291bnR5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvZGVmYXVsdF9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9wb3N0Y29kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3Bvc3Rjb2RlX2J5X3N0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc2Vjb25kYXJ5X2FkZHJlc3MuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0YXRlX2FiYnIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdHJlZXRfYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0cmVldF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RyZWV0X3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3RpbWVfem9uZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvYXV0aG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hcHAvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF9leHBpcnlfZGF0ZXMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYnVzaW5lc3MvY3JlZGl0X2NhcmRfbnVtYmVycy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF90eXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jZWxsX3Bob25lL2Zvcm1hdHMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY2VsbF9waG9uZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21tZXJjZS9jb2xvci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21tZXJjZS9kZXBhcnRtZW50LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL3Byb2R1Y3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2FkamVjdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX2FkamVjdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX25vdW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9ic192ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvZGVzY3JpcHRvci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L25vdW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvYW1lcmljYW5fZXhwcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9kaW5lcnNfY2x1Yi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9kaXNjb3Zlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9qY2IuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvbGFzZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvbWFlc3Ryby5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9tYXN0ZXJjYXJkLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL3NvbG8uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvc3dpdGNoLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL3Zpc2EuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvY29sbGF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGFiYXNlL2NvbHVtbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9lbmdpbmUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGUvbW9udGguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0ZS93ZWVrZGF5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvYWNjb3VudF90eXBlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvY3VycmVuY3kuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9maW5hbmNlL3RyYW5zYWN0aW9uX3R5cGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaGFja2VyL2FiYnJldmlhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvaW5ndmVyYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvdmVyYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9hdmF0YXJfdXJpLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2RvbWFpbl9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvZXhhbXBsZV9lbWFpbC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9mcmVlX2VtYWlsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL3N1cHBsZW1lbnRhbC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9sb3JlbS93b3Jkcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2ZpcnN0X25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2xhc3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9wcmVmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS9zdWZmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbmFtZS90aXRsZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9waG9uZV9udW1iZXIvZm9ybWF0cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9waG9uZV9udW1iZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vc3lzdGVtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3N5c3RlbS9taW1lVHlwZXMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vdGVhbS9jcmVhdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi90ZWFtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3RlYW0vbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9hZGRyZXNzL2RlZmF1bHRfY291bnRyeS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9hZGRyZXNzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvcG9zdGNvZGVfYnlfc3RhdGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvaW50ZXJuZXQvZG9tYWluX3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbnRlcm5ldC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9waG9uZV9udW1iZXIvYXJlYV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9leGNoYW5nZV9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9yZW0uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL3Bob25lX251bWJlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvcmFuZG9tLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9zeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbG9jYWxlL2VuX1VTLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL3ZlbmRvci9tZXJzZW5uZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci92ZW5kb3IvdXNlci1hZ2VudC5qcyIsIm5vZGVfbW9kdWxlcy9mb3JtYXQtdXRpbC9mb3JtYXQuanMiLCJub2RlX21vZHVsZXMvaHR0cHMtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2NvbW1vbi5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2R1bXBlci5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2V4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2xvYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL21hcmsuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvY29yZS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZGVmYXVsdF9zYWZlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2pzb24uanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9iaW5hcnkuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2Jvb2wuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2Zsb2F0LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9pbnQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL2Z1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9qcy9yZWdleHAuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3VuZGVmaW5lZC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbWFwLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9tZXJnZS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbnVsbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvb21hcC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvcGFpcnMuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3NlcS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvc2V0LmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zdHIuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3RpbWVzdGFtcC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1mYWtlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvYnVuZGxlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL2RlcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL25vcm1hbGl6ZS1hcmdzLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2UuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy9iaW5hcnkuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy9qc29uLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3BhcnNlcnMvdGV4dC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL3lhbWwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcG9pbnRlci5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZWYuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVmcy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZXNvbHZlLWV4dGVybmFsLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmVycy9maWxlLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmVycy9odHRwLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwvZGVidWcuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC9wbHVnaW5zLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwvdXJsLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3V0aWwveWFtbC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9nZW5lcmF0ZWQvYWVzcHJpbS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2dlbmVyYXRlZC9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2RpY3QuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2dyYW1tYXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2hhbmRsZXJzLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvcGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9zbGljZS5qcyIsIm5vZGVfbW9kdWxlcy9tcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9uYXRpdmUtcHJvbWlzZS1vbmx5L2xpYi9ucG8uc3JjLmpzIiwibm9kZV9tb2R1bGVzL29uby9saWIvb25vLmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLXRvLXJlZ2V4cC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLXRvLXJlZ2V4cC9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9jZXNzLW5leHRpY2stYXJncy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2RlY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZW5jb2RlLmpzIiwibm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5nLWVzMy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yYW5kZXhwL2xpYi9yYW5kZXhwLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3Bvc2l0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3NldHMuanMiLCJub2RlX21vZHVsZXMvcmV0L2xpYi90eXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzY29kZWdlbi9lc2NvZGVnZW4uanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzY29kZWdlbi9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL2VzdHJhdmVyc2UvZXN0cmF2ZXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXN0cmF2ZXJzZS9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2FycmF5LXNldC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYmFzZTY0LXZscS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYmFzZTY0LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iaW5hcnktc2VhcmNoLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9tYXBwaW5nLWxpc3QuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3F1aWNrLXNvcnQuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3NvdXJjZS1tYXAtY29uc3VtZXIuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2Utbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9zb3VyY2UtbWFwLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9jYXBhYmlsaXR5LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9yZXF1ZXN0LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9yZXNwb25zZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9saWIvc3RyaW5nX2RlY29kZXIuanMiLCJub2RlX21vZHVsZXMvc3dhZ2dlci1tZXRob2RzL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zd2FnZ2VyLXNjaGVtYS1vZmZpY2lhbC9zY2hlbWEuanNvbiIsIm5vZGVfbW9kdWxlcy90aW1lcnMtYnJvd3NlcmlmeS9tYWluLmpzIiwibm9kZV9tb2R1bGVzL3RvLWFycmF5YnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmpzIiwibm9kZV9tb2R1bGVzL3VuZGVyc2NvcmUvdW5kZXJzY29yZS5qcyIsIm5vZGVfbW9kdWxlcy91cmwvdXJsLmpzIiwibm9kZV9tb2R1bGVzL3VybC91dGlsLmpzIiwibm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMveHRlbmQvaW1tdXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7O0FBRUEsSUFBSSxJQUFLLE9BQU8sTUFBUCxLQUFrQixXQUFsQixHQUFnQyxPQUFPLEdBQVAsQ0FBaEMsR0FBOEMsT0FBTyxNQUFQLEtBQWtCLFdBQWxCLEdBQWdDLE9BQU8sR0FBUCxDQUFoQyxHQUE4QyxJQUFyRztBQUNBLElBQUksVUFBVSxRQUFRLGVBQVIsQ0FBZDtBQUNBLElBQUksV0FBWSxPQUFPLE1BQVAsS0FBa0IsV0FBbEIsR0FBZ0MsT0FBTyxVQUFQLENBQWhDLEdBQXFELE9BQU8sTUFBUCxLQUFrQixXQUFsQixHQUFnQyxPQUFPLFVBQVAsQ0FBaEMsR0FBcUQsSUFBMUg7QUFDQSxJQUFJLGFBQWEsUUFBUSxpQkFBUixDQUFqQjtBQUNBLElBQUksT0FBUSxPQUFPLE1B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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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ZUFBNUI7QUFDSCxDQWhORDs7Ozs7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3Y0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUVBLElBQUksV0FBVyxRQUFRLFVBQVIsQ0FBZjtBQUNBLElBQUksT0FBTyxRQUFRLFFBQVIsQ0FBWDs7QUFFQSxRQUFRLEtBQVIsR0FBZ0IsUUFBaEI7QUFDQSxRQUFRLE9BQVIsR0FBa0IsVUFBbEI7QUFDQSxRQUFRLGFBQVIsR0FBd0IsZ0JBQXhCO0FBQ0EsUUFBUSxNQUFSLEdBQWlCLFNBQWpCOztBQUVBLFFBQVEsR0FBUixHQUFjLEdBQWQ7O0FBRUEsU0FBUyxHQUFULEdBQWU7QUFDYixPQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxPQUFLLE9BQUwsR0FBZSxJQUFmO0FBQ0EsT0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLE9BQUssSUFBTCxHQUFZLElBQVo7QUFDQSxPQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0EsT0FBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsT0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLE9BQUssTUFBTCxHQUFjLElBQWQ7QUFDQSxPQUFLLEtBQUwsR0FBYSxJQUFiO0FBQ0EsT0FBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsT0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLE9BQUssSUFBTCxHQUFZLElBQVo7QUFDRDs7QUFFRDs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxrQkFBa0IsbUJBQXRCO0FBQUEsSUFDSSxjQUFjLFVBRGxCOzs7QUFHSTtBQUNBLG9CQUFvQixvQ0FKeEI7OztBQU1JO0FBQ0E7QUFDQSxTQUFTLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLEVBQXFCLEdBQXJCLEVBQTBCLElBQTFCLEVBQWdDLElBQWhDLEVBQXNDLElBQXRDLENBUmI7OztBQVVJO0FBQ0EsU0FBUyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixFQUFzQixHQUF0QixFQUEyQixHQUEzQixFQUFnQyxNQUFoQyxDQUF1QyxNQUF2QyxDQVhiOzs7QUFhSTtBQUNBLGFBQWEsQ0FBQyxJQUFELEVBQU8sTUFBUCxDQUFjLE1BQWQsQ0FkakI7O0FBZUk7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLEVBQXFCLEdBQXJCLEVBQTBCLE1BQTFCLENBQWlDLFVBQWpDLENBbkJuQjtBQUFBLElBb0JJLGtCQUFrQixDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxDQXBCdEI7QUFBQSxJQXFCSSxpQkFBaUIsR0FyQnJCO0FBQUEsSUFzQkksc0JBQXNCLHdCQXRCMUI7QUFBQSxJQXVCSSxvQkFBb0IsOEJBdkJ4Qjs7QUF3Qkk7QUFDQSxpQkFBaUI7QUFDZixnQkFBYyxJQURDO0FBRWYsaUJBQWU7QUFGQSxDQXpCckI7O0FBNkJJO0FBQ0EsbUJBQW1CO0FBQ2pCLGdCQUFjLElBREc7QUFFakIsaUJBQWU7QUFGRSxDQTlCdkI7O0FBa0NJO0FBQ0Esa0JBQWtCO0FBQ2hCLFVBQVEsSUFEUTtBQUVoQixXQUFTLElBRk87QUFHaEIsU0FBTyxJQUhTO0FBSWhCLFlBQVUsSUFKTTtBQUtoQixVQUFRLElBTFE7QUFNaEIsV0FBUyxJQU5PO0FBT2hCLFlBQVUsSUFQTTtBQVFoQixVQUFRLElBUlE7QUFTaEIsYUFBVyxJQVRLO0FBVWhCLFdBQVM7QUFWTyxDQW5DdEI7QUFBQSxJQStDSSxjQUFjLFFBQVEsYUFBUixDQS9DbEI7O0FBaURBLFNBQVMsUUFBVCxDQUFrQixHQUFsQixFQUF1QixnQkFBdkIsRUFBeUMsaUJBQXpDLEVBQTREO0FBQzFELE1BQUksT0FBTyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQVAsSUFBNkIsZUFBZSxHQUFoRCxFQUFxRCxPQUFPLEdBQVA7O0FBRXJELE1BQUksSUFBSSxJQUFJLEdBQUosRUFBUjtBQUNBLElBQUUsS0FBRixDQUFRLEdBQVIsRUFBYSxnQkFBYixFQUErQixpQkFBL0I7QUFDQSxTQUFPLENBQVA7QUFDRDs7QUFFRCxJQUFJLFNBQUosQ0FBYyxLQUFkLEdBQXNCLFVBQVMsR0FBVCxFQUFjLGdCQUFkLEVBQWdDLGlCQUFoQyxFQUFtRDtBQUN2RSxNQUFJLENBQUMsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFMLEVBQXlCO0FBQ3ZCLFVBQU0sSUFBSSxTQUFKLENBQWMsbURBQWtELEdBQWxELHlDQUFrRCxHQUFsRCxFQUFkLENBQU47QUFDRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxNQUFJLGFBQWEsSUFBSSxPQUFKLENBQVksR0FBWixDQUFqQjtBQUFBLE1BQ0ksV0FDSyxlQUFlLENBQUMsQ0FBaEIsSUFBcUIsYUFBYSxJQUFJLE9BQUosQ0FBWSxHQUFaLENBQW5DLEdBQXVELEdBQXZELEdBQTZELEdBRnJFO0FBQUEsTUFHSSxTQUFTLElBQUksS0FBSixDQUFVLFFBQVYsQ0FIYjtBQUFBLE1BSUksYUFBYSxLQUpqQjtBQUtBLFNBQU8sQ0FBUCxJQUFZLE9BQU8sQ0FBUCxFQUFVLE9BQVYsQ0FBa0IsVUFBbEIsRUFBOEIsR0FBOUIsQ0FBWjtBQUNBLFFBQU0sT0FBTyxJQUFQLENBQVksUUFBWixDQUFOOztBQUVBLE1BQUksT0FBTyxHQUFYOztBQUVBO0FBQ0E7QUFDQSxTQUFPLEtBQUssSUFBTCxFQUFQOztBQUVBLE1BQUksQ0FBQyxpQkFBRCxJQUFzQixJQUFJLEtBQUosQ0FBVSxHQUFWLEVBQWUsTUFBZixLQUEwQixDQUFwRCxFQUF1RDtBQUNyRDtBQUNBLFFBQUksYUFBYSxrQkFBa0IsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBakI7QUFDQSxRQUFJLFVBQUosRUFBZ0I7QUFDZCxXQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0EsV0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLFdBQUssUUFBTCxHQUFnQixXQUFXLENBQVgsQ0FBaEI7QUFDQSxVQUFJLFdBQVcsQ0FBWCxDQUFKLEVBQW1CO0FBQ2pCLGFBQUssTUFBTCxHQUFjLFdBQVcsQ0FBWCxDQUFkO0FBQ0EsWUFBSSxnQkFBSixFQUFzQjtBQUNwQixlQUFLLEtBQUwsR0FBYSxZQUFZLEtBQVosQ0FBa0IsS0FBSyxNQUFMLENBQVksTUFBWixDQUFtQixDQUFuQixDQUFsQixDQUFiO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsZUFBSyxLQUFMLEdBQWEsS0FBSyxNQUFMLENBQVksTUFBWixDQUFtQixDQUFuQixDQUFiO0FBQ0Q7QUFDRixPQVBELE1BT08sSUFBSSxnQkFBSixFQUFzQjtBQUMzQixhQUFLLE1BQUwsR0FBYyxFQUFkO0FBQ0EsYUFBSyxLQUFMLEdBQWEsRUFBYjtBQUNEO0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJLFFBQVEsZ0JBQWdCLElBQWhCLENBQXFCLElBQXJCLENBQVo7QUFDQSxNQUFJLEtBQUosRUFBVztBQUNULFlBQVEsTUFBTSxDQUFOLENBQVI7QUFDQSxRQUFJLGFBQWEsTUFBTSxXQUFOLEVBQWpCO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLFVBQWhCO0FBQ0EsV0FBTyxLQUFLLE1BQUwsQ0FBWSxNQUFNLE1BQWxCLENBQVA7QUFDRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUkscUJBQXFCLEtBQXJCLElBQThCLEtBQUssS0FBTCxDQUFXLHNCQUFYLENBQWxDLEVBQXNFO0FBQ3BFLFFBQUksVUFBVSxLQUFLLE1BQUwsQ0FBWSxDQUFaLEVBQWUsQ0FBZixNQUFzQixJQUFwQztBQUNBLFFBQUksV0FBVyxFQUFFLFNBQVMsaUJBQWlCLEtBQWpCLENBQVgsQ0FBZixFQUFvRDtBQUNsRCxhQUFPLEtBQUssTUFBTCxDQUFZLENBQVosQ0FBUDtBQUNBLFdBQUssT0FBTCxHQUFlLElBQWY7QUFDRDtBQUNGOztBQUVELE1BQUksQ0FBQyxpQkFBaUIsS0FBakIsQ0FBRCxLQUNDLFdBQVksU0FBUyxDQUFDLGdCQUFnQixLQUFoQixDQUR2QixDQUFKLEVBQ3FEOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxRQUFJLFVBQVUsQ0FBQyxDQUFmO0FBQ0EsU0FBSyxJQUFJLElBQUksQ0FBYixFQUFnQixJQUFJLGdCQUFnQixNQUFwQyxFQUE0QyxHQUE1QyxFQUFpRDtBQUMvQyxVQUFJLE1BQU0sS0FBSyxPQUFMLENBQWEsZ0JBQWdCLENBQWhCLENBQWIsQ0FBVjtBQUNBLFVBQUksUUFBUSxDQUFDLENBQVQsS0FBZSxZQUFZLENBQUMsQ0FBYixJQUFrQixNQUFNLE9BQXZDLENBQUosRUFDRSxVQUFVLEdBQVY7QUFDSDs7QUFFRDtBQUNBO0FBQ0EsUUFBSSxJQUFKLEVBQVUsTUFBVjtBQUNBLFFBQUksWUFBWSxDQUFDLENBQWpCLEVBQW9CO0FBQ2xCO0FBQ0EsZUFBUyxLQUFLLFdBQUwsQ0FBaUIsR0FBakIsQ0FBVDtBQUNELEtBSEQsTUFHTztBQUNMO0FBQ0E7QUFDQSxlQUFTLEtBQUssV0FBTCxDQUFpQixHQUFqQixFQUFzQixPQUF0QixDQUFUO0FBQ0Q7O0FBRUQ7QUFDQTtBQUNBLFFBQUksV0FBVyxDQUFDLENBQWhCLEVBQW1CO0FBQ2pCLGFBQU8sS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQWQsQ0FBUDtBQUNBLGFBQU8sS0FBSyxLQUFMLENBQVcsU0FBUyxDQUFwQixDQUFQO0FBQ0EsV0FBSyxJQUFMLEdBQVksbUJBQW1CLElBQW5CLENBQVo7QUFDRDs7QUFFRDtBQUNBLGNBQVUsQ0FBQyxDQUFYO0FBQ0EsU0FBSyxJQUFJLElBQUksQ0FBYixFQUFnQixJQUFJLGFBQWEsTUFBakMsRUFBeUMsR0FBekMsRUFBOEM7QUFDNUMsVUFBSSxNQUFNLEtBQUssT0FBTCxDQUFhLGFBQWEsQ0FBYixDQUFiLENBQVY7QUFDQSxVQUFJLFFBQVEsQ0FBQyxDQUFULEtBQWUsWUFBWSxDQUFDLENBQWIsSUFBa0IsTUFBTSxPQUF2QyxDQUFKLEVBQ0UsVUFBVSxHQUFWO0FBQ0g7QUFDRDtBQUNBLFFBQUksWUFBWSxDQUFDLENBQWpCLEVBQ0UsVUFBVSxLQUFLLE1BQWY7O0FBRUYsU0FBSyxJQUFMLEdBQVksS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLE9BQWQsQ0FBWjtBQUNBLFdBQU8sS0FBSyxLQUFMLENBQVcsT0FBWCxDQUFQOztBQUVBO0FBQ0EsU0FBSyxTQUFMOztBQUVBO0FBQ0E7QUFDQSxTQUFLLFFBQUwsR0FBZ0IsS0FBSyxRQUFMLElBQWlCLEVBQWpDOztBQUVBO0FBQ0E7QUFDQSxRQUFJLGVBQWUsS0FBSyxRQUFMLENBQWMsQ0FBZCxNQUFxQixHQUFyQixJQUNmLEtBQUssUUFBTCxDQUFjLEtBQUssUUFBTCxDQUFjLE1BQWQsR0FBdUIsQ0FBckMsTUFBNEMsR0FEaEQ7O0FBR0E7QUFDQSxRQUFJLENBQUMsWUFBTCxFQUFtQjtBQUNqQixVQUFJLFlBQVksS0FBSyxRQUFMLENBQWMsS0FBZCxDQUFvQixJQUFwQixDQUFoQjtBQUNBLFdBQUssSUFBSSxJQUFJLENBQVIsRUFBVyxJQUFJLFVBQVUsTUFBOUIsRUFBc0MsSUFBSSxDQUExQyxFQUE2QyxHQUE3QyxFQUFrRDtBQUNoRCxZQUFJLE9BQU8sVUFBVSxDQUFWLENBQVg7QUFDQSxZQUFJLENBQUMsSUFBTCxFQUFXO0FBQ1gsWUFBSSxDQUFDLEtBQUssS0FBTCxDQUFXLG1CQUFYLENBQUwsRUFBc0M7QUFDcEMsY0FBSSxVQUFVLEVBQWQ7QUFDQSxlQUFLLElBQUksSUFBSSxDQUFSLEVBQVcsSUFBSSxLQUFLLE1BQXpCLEVBQWlDLElBQUksQ0FBckMsRUFBd0MsR0FBeEMsRUFBNkM7QUFDM0MsZ0JBQUksS0FBSyxVQUFMLENBQWdCLENBQWhCLElBQXFCLEdBQXpCLEVBQThCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLHlCQUFXLEdBQVg7QUFDRCxhQUxELE1BS087QUFDTCx5QkFBVyxLQUFLLENBQUwsQ0FBWDtBQUNEO0FBQ0Y7QUFDRDtBQUNBLGNBQUksQ0FBQyxRQUFRLEtBQVIsQ0FBYyxtQkFBZCxDQUFMLEVBQXlDO0FBQ3ZDLGdCQUFJLGFBQWEsVUFBVSxLQUFWLENBQWdCLENBQWhCLEVBQW1CLENBQW5CLENBQWpCO0FBQ0EsZ0JBQUksVUFBVSxVQUFVLEtBQVYsQ0FBZ0IsSUFBSSxDQUFwQixDQUFkO0FBQ0EsZ0JBQUksTUFBTSxLQUFLLEtBQUwsQ0FBVyxpQkFBWCxDQUFWO0FBQ0EsZ0JBQUksR0FBSixFQUFTO0FBQ1AseUJBQVcsSUFBWCxDQUFnQixJQUFJLENBQUosQ0FBaEI7QUFDQSxzQkFBUSxPQUFSLENBQWdCLElBQUksQ0FBSixDQUFoQjtBQUNEO0FBQ0QsZ0JBQUksUUFBUSxNQUFaLEVBQW9CO0FBQ2xCLHFCQUFPLE1BQU0sUUFBUSxJQUFSLENBQWEsR0FBYixDQUFOLEdBQTBCLElBQWpDO0FBQ0Q7QUFDRCxpQkFBSyxRQUFMLEdBQWdCLFdBQVcsSUFBWCxDQUFnQixHQUFoQixDQUFoQjtBQUNBO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBRUQsUUFBSSxLQUFLLFFBQUwsQ0FBYyxNQUFkLEdBQXVCLGNBQTNCLEVBQTJDO0FBQ3pDLFdBQUssUUFBTCxHQUFnQixFQUFoQjtBQUNELEtBRkQsTUFFTztBQUNMO0FBQ0EsV0FBSyxRQUFMLEdBQWdCLEtBQUssUUFBTCxDQUFjLFdBQWQsRUFBaEI7QUFDRDs7QUFFRCxRQUFJLENBQUMsWUFBTCxFQUFtQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQUssUUFBTCxHQUFnQixTQUFTLE9BQVQsQ0FBaUIsS0FBSyxRQUF0QixDQUFoQjtBQUNEOztBQUVELFFBQUksSUFBSSxLQUFLLElBQUwsR0FBWSxNQUFNLEtBQUssSUFBdkIsR0FBOEIsRUFBdEM7QUFDQSxRQUFJLElBQUksS0FBSyxRQUFMLElBQWlCLEVBQXpCO0FBQ0EsU0FBSyxJQUFMLEdBQVksSUFBSSxDQUFoQjtBQUNBLFNBQUssSUFBTCxJQUFhLEtBQUssSUFBbEI7O0FBRUE7QUFDQTtBQUNBLFFBQUksWUFBSixFQUFrQjtBQUNoQixXQUFLLFFBQUwsR0FBZ0IsS0FBSyxRQUFMLENBQWMsTUFBZCxDQUFxQixDQUFyQixFQUF3QixLQUFLLFFBQUwsQ0FBYyxNQUFkLEdBQXVCLENBQS9DLENBQWhCO0FBQ0EsVUFBSSxLQUFLLENBQUwsTUFBWSxHQUFoQixFQUFxQjtBQUNuQixlQUFPLE1BQU0sSUFBYjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRDtBQUNBO0FBQ0EsTUFBSSxDQUFDLGVBQWUsVUFBZixDQUFMLEVBQWlDOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxTQUFLLElBQUksSUFBSSxDQUFSLEVBQVcsSUFBSSxXQUFXLE1BQS9CLEVBQXVDLElBQUksQ0FBM0MsRUFBOEMsR0FBOUMsRUFBbUQ7QUFDakQsVUFBSSxLQUFLLFdBQVcsQ0FBWCxDQUFUO0FBQ0EsVUFBSSxLQUFLLE9BQUwsQ0FBYSxFQUFiLE1BQXFCLENBQUMsQ0FBMUIsRUFDRTtBQUNGLFVBQUksTUFBTSxtQkFBbUIsRUFBbkIsQ0FBVjtBQUNBLFVBQUksUUFBUSxFQUFaLEVBQWdCO0FBQ2QsY0FBTSxPQUFPLEVBQVAsQ0FBTjtBQUNEO0FBQ0QsYUFBTyxLQUFLLEtBQUwsQ0FBVyxFQUFYLEVBQWUsSUFBZixDQUFvQixHQUFwQixDQUFQO0FBQ0Q7QUFDRjs7QUFHRDtBQUNBLE1BQUksT0FBTyxLQUFLLE9BQUwsQ0FBYSxHQUFiLENBQVg7QUFDQSxNQUFJLFNBQVMsQ0FBQyxDQUFkLEVBQWlCO0FBQ2Y7QUFDQSxTQUFLLElBQUwsR0FBWSxLQUFLLE1BQUwsQ0FBWSxJQUFaLENBQVo7QUFDQSxXQUFPLEtBQUssS0FBTCxDQUFXLENBQVgsRUFBYyxJQUFkLENBQVA7QUFDRDtBQUNELE1BQUksS0FBSyxLQUFLLE9BQUwsQ0FBYSxHQUFiLENBQVQ7QUFDQSxNQUFJLE9BQU8sQ0FBQyxDQUFaLEVBQWU7QUFDYixTQUFLLE1BQUwsR0FBYyxLQUFLLE1BQUwsQ0FBWSxFQUFaLENBQWQ7QUFDQSxTQUFLLEtBQUwsR0FBYSxLQUFLLE1BQUwsQ0FBWSxLQUFLLENBQWpCLENBQWI7QUFDQSxRQUFJLGdCQUFKLEVBQXNCO0FBQ3BCLFdBQUssS0FBTCxHQUFhLFlBQVksS0FBWixDQUFrQixLQUFLLEtBQXZCLENBQWI7QUFDRDtBQUNELFdBQU8sS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLEVBQWQsQ0FBUDtBQUNELEdBUEQsTUFPTyxJQUFJLGdCQUFKLEVBQXNCO0FBQzNCO0FBQ0EsU0FBSyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUssS0FBTCxHQUFhLEVBQWI7QUFDRDtBQUNELE1BQUksSUFBSixFQUFVLEtBQUssUUFBTCxHQUFnQixJQUFoQjtBQUNWLE1BQUksZ0JBQWdCLFVBQWhCLEtBQ0EsS0FBSyxRQURMLElBQ2lCLENBQUMsS0FBSyxRQUQzQixFQUNxQztBQUNuQyxTQUFLLFFBQUwsR0FBZ0IsR0FBaEI7QUFDRDs7QUFFRDtBQUNBLE1BQUksS0FBSyxRQUFMLElBQWlCLEtBQUssTUFBMUIsRUFBa0M7QUFDaEMsUUFBSSxJQUFJLEtBQUssUUFBTCxJQUFpQixFQUF6QjtBQUNBLFFBQUksSUFBSSxLQUFLLE1BQUwsSUFBZSxFQUF2QjtBQUNBLFNBQUssSUFBTCxHQUFZLElBQUksQ0FBaEI7QUFDRDs7QUFFRDtBQUNBLE9BQUssSUFBTCxHQUFZLEtBQUssTUFBTCxFQUFaO0FBQ0EsU0FBTyxJQUFQO0FBQ0QsQ0FuUUQ7O0FBcVFBO0FBQ0EsU0FBUyxTQUFULENBQW1CLEdBQW5CLEVBQXdCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQUosRUFBd0IsTUFBTSxTQUFTLEdBQVQsQ0FBTjtBQUN4QixNQUFJLEVBQUUsZUFBZSxHQUFqQixDQUFKLEVBQTJCLE9BQU8sSUFBSSxTQUFKLENBQWMsTUFBZCxDQUFxQixJQUFyQixDQUEwQixHQUExQixDQUFQO0FBQzNCLFNBQU8sSUFBSSxNQUFKLEVBQVA7QUFDRDs7QUFFRCxJQUFJLFNBQUosQ0FBYyxNQUFkLEdBQXVCLFlBQVc7QUFDaEMsTUFBSSxPQUFPLEtBQUssSUFBTCxJQUFhLEVBQXhCO0FBQ0EsTUFBSSxJQUFKLEVBQVU7QUFDUixXQUFPLG1CQUFtQixJQUFuQixDQUFQO0FBQ0EsV0FBTyxLQUFLLE9BQUwsQ0FBYSxNQUFiLEVBQXFCLEdBQXJCLENBQVA7QUFDQSxZQUFRLEdBQVI7QUFDRDs7QUFFRCxNQUFJLFdBQVcsS0FBSyxRQUFMLElBQWlCLEVBQWhDO0FBQUEsTUFDSSxXQUFXLEtBQUssUUFBTCxJQUFpQixFQURoQztBQUFBLE1BRUksT0FBTyxLQUFLLElBQUwsSUFBYSxFQUZ4QjtBQUFBLE1BR0ksT0FBTyxLQUhYO0FBQUEsTUFJSSxRQUFRLEVBSlo7O0FBTUEsTUFBSSxLQUFLLElBQVQsRUFBZTtBQUNiLFdBQU8sT0FBTyxLQUFLLElBQW5CO0FBQ0QsR0FGRCxNQUVPLElBQUksS0FBSyxRQUFULEVBQW1CO0FBQ3hCLFdBQU8sUUFBUSxLQUFLLFFBQUwsQ0FBYyxPQUFkLENBQXNCLEdBQXRCLE1BQStCLENBQUMsQ0FBaEMsR0FDWCxLQUFLLFFBRE0sR0FFWCxNQUFNLEtBQUssUUFBWCxHQUFzQixHQUZuQixDQUFQO0FBR0EsUUFBSSxLQUFLLElBQVQsRUFBZTtBQUNiLGNBQVEsTUFBTSxLQUFLLElBQW5CO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJLEtBQUssS0FBTCxJQUNBLEtBQUssUUFBTCxDQUFjLEtBQUssS0FBbkIsQ0FEQSxJQUVBLE9BQU8sSUFBUCxDQUFZLEtBQUssS0FBakIsRUFBd0IsTUFGNUIsRUFFb0M7QUFDbEMsWUFBUSxZQUFZLFNBQVosQ0FBc0IsS0FBSyxLQUEzQixDQUFSO0FBQ0Q7O0FBRUQsTUFBSSxTQUFTLEtBQUssTUFBTCxJQUFnQixTQUFVLE1BQU0sS0FBaEMsSUFBMkMsRUFBeEQ7O0FBRUEsTUFBSSxZQUFZLFNBQVMsTUFBVCxDQUFnQixDQUFDLENBQWpCLE1BQXdCLEdBQXhDLEVBQTZDLFlBQVksR0FBWjs7QUFFN0M7QUFDQTtBQUNBLE1BQUksS0FBSyxPQUFMLElBQ0EsQ0FBQyxDQUFDLFFBQUQsSUFBYSxnQkFBZ0IsUUFBaEIsQ0FBZCxLQUE0QyxTQUFTLEtBRHpELEVBQ2dFO0FBQzlELFdBQU8sUUFBUSxRQUFRLEVBQWhCLENBQVA7QUFDQSxRQUFJLFlBQVksU0FBUyxNQUFULENBQWdCLENBQWhCLE1BQXVCLEdBQXZDLEVBQTRDLFdBQVcsTUFBTSxRQUFqQjtBQUM3QyxHQUpELE1BSU8sSUFBSSxDQUFDLElBQUwsRUFBVztBQUNoQixXQUFPLEVBQVA7QUFDRDs7QUFFRCxNQUFJLFFBQVEsS0FBSyxNQUFMLENBQVksQ0FBWixNQUFtQixHQUEvQixFQUFvQyxPQUFPLE1BQU0sSUFBYjtBQUNwQyxNQUFJLFVBQVUsT0FBTyxNQUFQLENBQWMsQ0FBZCxNQUFxQixHQUFuQyxFQUF3QyxTQUFTLE1BQU0sTUFBZjs7QUFFeEMsYUFBVyxTQUFTLE9BQVQsQ0FBaUIsT0FBakIsRUFBMEIsVUFBUyxLQUFULEVBQWdCO0FBQ25ELFdBQU8sbUJBQW1CLEtBQW5CLENBQVA7QUFDRCxHQUZVLENBQVg7QUFHQSxXQUFTLE9BQU8sT0FBUCxDQUFlLEdBQWYsRUFBb0IsS0FBcEIsQ0FBVDs7QUFFQSxTQUFPLFdBQVcsSUFBWCxHQUFrQixRQUFsQixHQUE2QixNQUE3QixHQUFzQyxJQUE3QztBQUNELENBdEREOztBQXdEQSxTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBNEIsUUFBNUIsRUFBc0M7QUFDcEMsU0FBTyxTQUFTLE1BQVQsRUFBaUIsS0FBakIsRUFBd0IsSUFBeEIsRUFBOEIsT0FBOUIsQ0FBc0MsUUFBdEMsQ0FBUDtBQUNEOztBQUVELElBQUksU0FBSixDQUFjLE9BQWQsR0FBd0IsVUFBUyxRQUFULEVBQW1CO0FBQ3pDLFNBQU8sS0FBSyxhQUFMLENBQW1CLFNBQVMsUUFBVCxFQUFtQixLQUFuQixFQUEwQixJQUExQixDQUFuQixFQUFvRCxNQUFwRCxFQUFQO0FBQ0QsQ0FGRDs7QUFJQSxTQUFTLGdCQUFULENBQTBCLE1BQTFCLEVBQWtDLFFBQWxDLEVBQTRDO0FBQzFDLE1BQUksQ0FBQyxNQUFMLEVBQWEsT0FBTyxRQUFQO0FBQ2IsU0FBTyxTQUFTLE1BQVQsRUFBaUIsS0FBakIsRUFBd0IsSUFBeEIsRUFBOEIsYUFBOUIsQ0FBNEMsUUFBNUMsQ0FBUDtBQUNEOztBQUVELElBQUksU0FBSixDQUFjLGFBQWQsR0FBOEIsVUFBUyxRQUFULEVBQW1CO0FBQy9DLE1BQUksS0FBSyxRQUFMLENBQWMsUUFBZCxDQUFKLEVBQTZCO0FBQzNCLFFBQUksTUFBTSxJQUFJLEdBQUosRUFBVjtBQUNBLFFBQUksS0FBSixDQUFVLFFBQVYsRUFBb0IsS0FBcEIsRUFBMkIsSUFBM0I7QUFDQSxlQUFXLEdBQVg7QUFDRDs7QUFFRCxNQUFJLFNBQVMsSUFBSSxHQUFKLEVBQWI7QUFDQSxNQUFJLFFBQVEsT0FBTyxJQUFQLENBQVksSUFBWixDQUFaO0FBQ0EsT0FBSyxJQUFJLEtBQUssQ0FBZCxFQUFpQixLQUFLLE1BQU0sTUFBNUIsRUFBb0MsSUFBcEMsRUFBMEM7QUFDeEMsUUFBSSxPQUFPLE1BQU0sRUFBTixDQUFYO0FBQ0EsV0FBTyxJQUFQLElBQWUsS0FBSyxJQUFMLENBQWY7QUFDRDs7QUFFRDtBQUNBO0FBQ0EsU0FBTyxJQUFQLEdBQWMsU0FBUyxJQUF2Qjs7QUFFQTtBQUNBLE1BQUksU0FBUyxJQUFULEtBQWtCLEVBQXRCLEVBQTBCO0FBQ3hCLFdBQU8sSUFBUCxHQUFjLE9BQU8sTUFBUCxFQUFkO0FBQ0EsV0FBTyxNQUFQO0FBQ0Q7O0FBRUQ7QUFDQSxNQUFJLFNBQVMsT0FBVCxJQUFvQixDQUFDLFNBQVMsUUFBbEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLFFBQVEsT0FBTyxJQUFQLENBQVksUUFBWixDQUFaO0FBQ0EsU0FBSyxJQUFJLEtBQUssQ0FBZCxFQUFpQixLQUFLLE1BQU0sTUFBNUIsRUFBb0MsSUFBcEMsRUFBMEM7QUFDeEMsVUFBSSxPQUFPLE1BQU0sRUFBTixDQUFYO0FBQ0EsVUFBSSxTQUFTLFVBQWIsRUFDRSxPQUFPLElBQVAsSUFBZSxTQUFTLElBQVQsQ0FBZjtBQUNIOztBQUVEO0FBQ0EsUUFBSSxnQkFBZ0IsT0FBTyxRQUF2QixLQUNBLE9BQU8sUUFEUCxJQUNtQixDQUFDLE9BQU8sUUFEL0IsRUFDeUM7QUFDdkMsYUFBTyxJQUFQLEdBQWMsT0FBTyxRQUFQLEdBQWtCLEdBQWhDO0FBQ0Q7O0FBRUQsV0FBTyxJQUFQLEdBQWMsT0FBTyxNQUFQLEVBQWQ7QUFDQSxXQUFPLE1BQVA7QUFDRDs7QUFFRCxNQUFJLFNBQVMsUUFBVCxJQUFxQixTQUFTLFFBQVQsS0FBc0IsT0FBTyxRQUF0RCxFQUFnRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBSSxDQUFDLGdCQUFnQixTQUFTLFFBQXpCLENBQUwsRUFBeUM7QUFDdkMsVUFBSSxPQUFPLE9BQU8sSUFBUCxDQUFZLFFBQVosQ0FBWDtBQUNBLFdBQUssSUFBSSxJQUFJLENBQWIsRUFBZ0IsSUFBSSxLQUFLLE1BQXpCLEVBQWlDLEdBQWpDLEVBQXNDO0FBQ3BDLFlBQUksSUFBSSxLQUFLLENBQUwsQ0FBUjtBQUNBLGVBQU8sQ0FBUCxJQUFZLFNBQVMsQ0FBVCxDQUFaO0FBQ0Q7QUFDRCxhQUFPLElBQVAsR0FBYyxPQUFPLE1BQVAsRUFBZDtBQUNBLGFBQU8sTUFBUDtBQUNEOztBQUVELFdBQU8sUUFBUCxHQUFrQixTQUFTLFFBQTNCO0FBQ0EsUUFBSSxDQUFDLFNBQVMsSUFBVixJQUFrQixDQUFDLGlCQUFpQixTQUFTLFFBQTFCLENBQXZCLEVBQTREO0FBQzFELFVBQUksVUFBVSxDQUFDLFNBQVMsUUFBVCxJQUFxQixFQUF0QixFQUEwQixLQUExQixDQUFnQyxHQUFoQyxDQUFkO0FBQ0EsYUFBTyxRQUFRLE1BQVIsSUFBa0IsRUFBRSxTQUFTLElBQVQsR0FBZ0IsUUFBUSxLQUFSLEVBQWxCLENBQXpCO0FBQ0EsVUFBSSxDQUFDLFNBQVMsSUFBZCxFQUFvQixTQUFTLElBQVQsR0FBZ0IsRUFBaEI7QUFDcEIsVUFBSSxDQUFDLFNBQVMsUUFBZCxFQUF3QixTQUFTLFFBQVQsR0FBb0IsRUFBcEI7QUFDeEIsVUFBSSxRQUFRLENBQVIsTUFBZSxFQUFuQixFQUF1QixRQUFRLE9BQVIsQ0FBZ0IsRUFBaEI7QUFDdkIsVUFBSSxRQUFRLE1BQVIsR0FBaUIsQ0FBckIsRUFBd0IsUUFBUSxPQUFSLENBQWdCLEVBQWhCO0FBQ3hCLGFBQU8sUUFBUCxHQUFrQixRQUFRLElBQVIsQ0FBYSxHQUFiLENBQWxCO0FBQ0QsS0FSRCxNQVFPO0FBQ0wsYUFBTyxRQUFQLEdBQWtCLFNBQVMsUUFBM0I7QUFDRDtBQUNELFdBQU8sTUFBUCxHQUFnQixTQUFTLE1BQXpCO0FBQ0EsV0FBTyxLQUFQLEdBQWUsU0FBUyxLQUF4QjtBQUNBLFdBQU8sSUFBUCxHQUFjLFNBQVMsSUFBVCxJQUFpQixFQUEvQjtBQUNBLFdBQU8sSUFBUCxHQUFjLFNBQVMsSUFBdkI7QUFDQSxXQUFPLFFBQVAsR0FBa0IsU0FBUyxRQUFULElBQXFCLFNBQVMsSUFBaEQ7QUFDQSxXQUFPLElBQVAsR0FBYyxTQUFTLElBQXZCO0FBQ0E7QUFDQSxRQUFJLE9BQU8sUUFBUCxJQUFtQixPQUFPLE1BQTlCLEVBQXNDO0FBQ3BDLFVBQUksSUFBSSxPQUFPLFFBQVAsSUFBbUIsRUFBM0I7QUFDQSxVQUFJLElBQUksT0FBTyxNQUFQLElBQWlCLEVBQXpCO0FBQ0EsYUFBTyxJQUFQLEdBQWMsSUFBSSxDQUFsQjtBQUNEO0FBQ0QsV0FBTyxPQUFQLEdBQWlCLE9BQU8sT0FBUCxJQUFrQixTQUFTLE9BQTVDO0FBQ0EsV0FBTyxJQUFQLEdBQWMsT0FBTyxNQUFQLEVBQWQ7QUFDQSxXQUFPLE1BQVA7QUFDRDs7QUFFRCxNQUFJLGNBQWUsT0FBTyxRQUFQLElBQW1CLE9BQU8sUUFBUCxDQUFnQixNQUFoQixDQUF1QixDQUF2QixNQUE4QixHQUFwRTtBQUFBLE1BQ0ksV0FDSSxTQUFTLElBQVQsSUFDQSxTQUFTLFFBQVQsSUFBcUIsU0FBUyxRQUFULENBQWtCLE1BQWxCLENBQXlCLENBQXpCLE1BQWdDLEdBSDdEO0FBQUEsTUFLSSxhQUFjLFlBQVksV0FBWixJQUNDLE9BQU8sSUFBUCxJQUFlLFNBQVMsUUFOM0M7QUFBQSxNQU9JLGdCQUFnQixVQVBwQjtBQUFBLE1BUUksVUFBVSxPQUFPLFFBQVAsSUFBbUIsT0FBTyxRQUFQLENBQWdCLEtBQWhCLENBQXNCLEdBQXRCLENBQW5CLElBQWlELEVBUi9EO0FBQUEsTUFTSSxVQUFVLFNBQVMsUUFBVCxJQUFxQixTQUFTLFFBQVQsQ0FBa0IsS0FBbEIsQ0FBd0IsR0FBeEIsQ0FBckIsSUFBcUQsRUFUbkU7QUFBQSxNQVVJLFlBQVksT0FBTyxRQUFQLElBQW1CLENBQUMsZ0JBQWdCLE9BQU8sUUFBdkIsQ0FWcEM7O0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUksU0FBSixFQUFlO0FBQ2IsV0FBTyxRQUFQLEdBQWtCLEVBQWxCO0FBQ0EsV0FBTyxJQUFQLEdBQWMsSUFBZDtBQUNBLFFBQUksT0FBTyxJQUFYLEVBQWlCO0FBQ2YsVUFBSSxRQUFRLENBQVIsTUFBZSxFQUFuQixFQUF1QixRQUFRLENBQVIsSUFBYSxPQUFPLElBQXBCLENBQXZCLEtBQ0ssUUFBUSxPQUFSLENBQWdCLE9BQU8sSUFBdkI7QUFDTjtBQUNELFdBQU8sSUFBUCxHQUFjLEVBQWQ7QUFDQSxRQUFJLFNBQVMsUUFBYixFQUF1QjtBQUNyQixlQUFTLFFBQVQsR0FBb0IsSUFBcEI7QUFDQSxlQUFTLElBQVQsR0FBZ0IsSUFBaEI7QUFDQSxVQUFJLFNBQVMsSUFBYixFQUFtQjtBQUNqQixZQUFJLFFBQVEsQ0FBUixNQUFlLEVBQW5CLEVBQXVCLFFBQVEsQ0FBUixJQUFhLFNBQVMsSUFBdEIsQ0FBdkIsS0FDSyxRQUFRLE9BQVIsQ0FBZ0IsU0FBUyxJQUF6QjtBQUNOO0FBQ0QsZUFBUyxJQUFULEdBQWdCLElBQWhCO0FBQ0Q7QUFDRCxpQkFBYSxlQUFlLFFBQVEsQ0FBUixNQUFlLEVBQWYsSUFBcUIsUUFBUSxDQUFSLE1BQWUsRUFBbkQsQ0FBYjtBQUNEOztBQUVELE1BQUksUUFBSixFQUFjO0FBQ1o7QUFDQSxXQUFPLElBQVAsR0FBZSxTQUFTLElBQVQsSUFBaUIsU0FBUyxJQUFULEtBQWtCLEVBQXBDLEdBQ0EsU0FBUyxJQURULEdBQ2dCLE9BQU8sSUFEckM7QUFFQSxXQUFPLFFBQVAsR0FBbUIsU0FBUyxRQUFULElBQXFCLFNBQVMsUUFBVCxLQUFzQixFQUE1QyxHQUNBLFNBQVMsUUFEVCxHQUNvQixPQUFPLFFBRDdDO0FBRUEsV0FBTyxNQUFQLEdBQWdCLFNBQVMsTUFBekI7QUFDQSxXQUFPLEtBQVAsR0FBZSxTQUFTLEtBQXhCO0FBQ0EsY0FBVSxPQUFWO0FBQ0E7QUFDRCxHQVZELE1BVU8sSUFBSSxRQUFRLE1BQVosRUFBb0I7QUFDekI7QUFDQTtBQUNBLFFBQUksQ0FBQyxPQUFMLEVBQWMsVUFBVSxFQUFWO0FBQ2QsWUFBUSxHQUFSO0FBQ0EsY0FBVSxRQUFRLE1BQVIsQ0FBZSxPQUFmLENBQVY7QUFDQSxXQUFPLE1BQVAsR0FBZ0IsU0FBUyxNQUF6QjtBQUNBLFdBQU8sS0FBUCxHQUFlLFNBQVMsS0FBeEI7QUFDRCxHQVJNLE1BUUEsSUFBSSxDQUFDLEtBQUssaUJBQUwsQ0FBdUIsU0FBUyxNQUFoQyxDQUFMLEVBQThDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFFBQUksU0FBSixFQUFlO0FBQ2IsYUFBTyxRQUFQLEdBQWtCLE9BQU8sSUFBUCxHQUFjLFFBQVEsS0FBUixFQUFoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQUksYUFBYSxPQUFPLElBQVAsSUFBZSxPQUFPLElBQVAsQ0FBWSxPQUFaLENBQW9CLEdBQXBCLElBQTJCLENBQTFDLEdBQ0EsT0FBTyxJQUFQLENBQVksS0FBWixDQUFrQixHQUFsQixDQURBLEdBQ3lCLEtBRDFDO0FBRUEsVUFBSSxVQUFKLEVBQWdCO0FBQ2QsZUFBTyxJQUFQLEdBQWMsV0FBVyxLQUFYLEVBQWQ7QUFDQSxlQUFPLElBQVAsR0FBYyxPQUFPLFFBQVAsR0FBa0IsV0FBVyxLQUFYLEVBQWhDO0FBQ0Q7QUFDRjtBQUNELFdBQU8sTUFBUCxHQUFnQixTQUFTLE1BQXpCO0FBQ0EsV0FBTyxLQUFQLEdBQWUsU0FBUyxLQUF4QjtBQUNBO0FBQ0EsUUFBSSxDQUFDLEtBQUssTUFBTCxDQUFZLE9BQU8sUUFBbkIsQ0FBRCxJQUFpQyxDQUFDLEtBQUssTUFBTCxDQUFZLE9BQU8sTUFBbkIsQ0FBdEMsRUFBa0U7QUFDaEUsYUFBTyxJQUFQLEdBQWMsQ0FBQyxPQUFPLFFBQVAsR0FBa0IsT0FBTyxRQUF6QixHQUFvQyxFQUFyQyxLQUNDLE9BQU8sTUFBUCxHQUFnQixPQUFPLE1BQXZCLEdBQWdDLEVBRGpDLENBQWQ7QUFFRDtBQUNELFdBQU8sSUFBUCxHQUFjLE9BQU8sTUFBUCxFQUFkO0FBQ0EsV0FBTyxNQUFQO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLFFBQVEsTUFBYixFQUFxQjtBQUNuQjtBQUNBO0FBQ0EsV0FBTyxRQUFQLEdBQWtCLElBQWxCO0FBQ0E7QUFDQSxRQUFJLE9BQU8sTUFBWCxFQUFtQjtBQUNqQixhQUFPLElBQVAsR0FBYyxNQUFNLE9BQU8sTUFBM0I7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPLElBQVAsR0FBYyxJQUFkO0FBQ0Q7QUFDRCxXQUFPLElBQVAsR0FBYyxPQUFPLE1BQVAsRUFBZDtBQUNBLFdBQU8sTUFBUDtBQUNEOztBQUVEO0FBQ0E7QUFDQTtBQUNBLE1BQUksT0FBTyxRQUFRLEtBQVIsQ0FBYyxDQUFDLENBQWYsRUFBa0IsQ0FBbEIsQ0FBWDtBQUNBLE1BQUksbUJBQ0EsQ0FBQyxPQUFPLElBQVAsSUFBZSxTQUFTLElBQXhCLElBQWdDLFFBQVEsTUFBUixHQUFpQixDQUFsRCxNQUNDLFNBQVMsR0FBVCxJQUFnQixTQUFTLElBRDFCLEtBQ21DLFNBQVMsRUFGaEQ7O0FBSUE7QUFDQTtBQUNBLE1BQUksS0FBSyxDQUFUO0FBQ0EsT0FBSyxJQUFJLElBQUksUUFBUSxNQUFyQixFQUE2QixLQUFLLENBQWxDLEVBQXFDLEdBQXJDLEVBQTBDO0FBQ3hDLFdBQU8sUUFBUSxDQUFSLENBQVA7QUFDQSxRQUFJLFNBQVMsR0FBYixFQUFrQjtBQUNoQixjQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLENBQWxCO0FBQ0QsS0FGRCxNQUVPLElBQUksU0FBUyxJQUFiLEVBQW1CO0FBQ3hCLGNBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsQ0FBbEI7QUFDQTtBQUNELEtBSE0sTUFHQSxJQUFJLEVBQUosRUFBUTtBQUNiLGNBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsQ0FBbEI7QUFDQTtBQUNEO0FBQ0Y7O0FBRUQ7QUFDQSxNQUFJLENBQUMsVUFBRCxJQUFlLENBQUMsYUFBcEIsRUFBbUM7QUFDakMsV0FBTyxJQUFQLEVBQWEsRUFBYixFQUFpQjtBQUNmLGNBQVEsT0FBUixDQUFnQixJQUFoQjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxjQUFjLFFBQVEsQ0FBUixNQUFlLEVBQTdCLEtBQ0MsQ0FBQyxRQUFRLENBQVIsQ0FBRCxJQUFlLFFBQVEsQ0FBUixFQUFXLE1BQVgsQ0FBa0IsQ0FBbEIsTUFBeUIsR0FEekMsQ0FBSixFQUNtRDtBQUNqRCxZQUFRLE9BQVIsQ0FBZ0IsRUFBaEI7QUFDRDs7QUFFRCxNQUFJLG9CQUFxQixRQUFRLElBQVIsQ0FBYSxHQUFiLEVBQWtCLE1BQWxCLENBQXlCLENBQUMsQ0FBMUIsTUFBaUMsR0FBMUQsRUFBZ0U7QUFDOUQsWUFBUSxJQUFSLENBQWEsRUFBYjtBQUNEOztBQUVELE1BQUksYUFBYSxRQUFRLENBQVIsTUFBZSxFQUFmLElBQ1osUUFBUSxDQUFSLEtBQWMsUUFBUSxDQUFSLEVBQVcsTUFBWCxDQUFrQixDQUFsQixNQUF5QixHQUQ1Qzs7QUFHQTtBQUNBLE1BQUksU0FBSixFQUFlO0FBQ2IsV0FBTyxRQUFQLEdBQWtCLE9BQU8sSUFBUCxHQUFjLGFBQWEsRUFBYixHQUNBLFFBQVEsTUFBUixHQUFpQixRQUFRLEtBQVIsRUFBakIsR0FBbUMsRUFEbkU7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFJLGFBQWEsT0FBTyxJQUFQLElBQWUsT0FBTyxJQUFQLENBQVksT0FBWixDQUFvQixHQUFwQixJQUEyQixDQUExQyxHQUNBLE9BQU8sSUFBUCxDQUFZLEtBQVosQ0FBa0IsR0FBbEIsQ0FEQSxHQUN5QixLQUQxQztBQUVBLFFBQUksVUFBSixFQUFnQjtBQUNkLGFBQU8sSUFBUCxHQUFjLFdBQVcsS0FBWCxFQUFkO0FBQ0EsYUFBTyxJQUFQLEdBQWMsT0FBTyxRQUFQLEdBQWtCLFdBQVcsS0FBWCxFQUFoQztBQUNEO0FBQ0Y7O0FBRUQsZUFBYSxjQUFlLE9BQU8sSUFBUCxJQUFlLFFBQVEsTUFBbkQ7O0FBRUEsTUFBSSxjQUFjLENBQUMsVUFBbkIsRUFBK0I7QUFDN0IsWUFBUSxPQUFSLENBQWdCLEVBQWhCO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLFFBQVEsTUFBYixFQUFxQjtBQUNuQixXQUFPLFFBQVAsR0FBa0IsSUFBbEI7QUFDQSxXQUFPLElBQVAsR0FBYyxJQUFkO0FBQ0QsR0FIRCxNQUdPO0FBQ0wsV0FBTyxRQUFQLEdBQWtCLFFBQVEsSUFBUixDQUFhLEdBQWIsQ0FBbEI7QUFDRDs7QUFFRDtBQUNBLE1BQUksQ0FBQyxLQUFLLE1BQUwsQ0FBWSxPQUFPLFFBQW5CLENBQUQsSUFBaUMsQ0FBQyxLQUFLLE1BQUwsQ0FBWSxPQUFPLE1BQW5CLENBQXRDLEVBQWtFO0FBQ2hFLFdBQU8sSUFBUCxHQUFjLENBQUMsT0FBTyxRQUFQLEdBQWtCLE9BQU8sUUFBekIsR0FBb0MsRUFBckMsS0FDQyxPQUFPLE1BQVAsR0FBZ0IsT0FBTyxNQUF2QixHQUFnQyxFQURqQyxDQUFkO0FBRUQ7QUFDRCxTQUFPLElBQVAsR0FBYyxTQUFTLElBQVQsSUFBaUIsT0FBTyxJQUF0QztBQUNBLFNBQU8sT0FBUCxHQUFpQixPQUFPLE9BQVAsSUFBa0IsU0FBUyxPQUE1QztBQUNBLFNBQU8sSUFBUCxHQUFjLE9BQU8sTUFBUCxFQUFkO0FBQ0EsU0FBTyxNQUFQO0FBQ0QsQ0E1UUQ7O0FBOFFBLElBQUksU0FBSixDQUFjLFNBQWQsR0FBMEIsWUFBVztBQUNuQyxNQUFJLE9BQU8sS0FBSyxJQUFoQjtBQUNBLE1BQUksT0FBTyxZQUFZLElBQVosQ0FBaUIsSUFBakIsQ0FBWDtBQUNBLE1BQUksSUFBSixFQUFVO0FBQ1IsV0FBTyxLQUFLLENBQUwsQ0FBUDtBQUNBLFFBQUksU0FBUyxHQUFiLEVBQWtCO0FBQ2hCLFdBQUssSUFBTCxHQUFZLEtBQUssTUFBTCxDQUFZLENBQVosQ0FBWjtBQUNEO0FBQ0QsV0FBTyxLQUFLLE1BQUwsQ0FBWSxDQUFaLEVBQWUsS0FBSyxNQUFMLEdBQWMsS0FBSyxNQUFsQyxDQUFQO0FBQ0Q7QUFDRCxNQUFJLElBQUosRUFBVSxLQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDWCxDQVhEOzs7QUNodEJBOzs7O0FBRUEsT0FBTyxPQUFQLEdBQWlCO0FBQ2YsWUFBVSxrQkFBUyxHQUFULEVBQWM7QUFDdEIsV0FBTyxPQUFPLEdBQVAsS0FBZ0IsUUFBdkI7QUFDRCxHQUhjO0FBSWYsWUFBVSxrQkFBUyxHQUFULEVBQWM7QUFDdEIsV0FBTyxRQUFPLEdBQVAseUNBQU8sR0FBUCxPQUFnQixRQUFoQixJQUE0QixRQUFRLElBQTNDO0FBQ0QsR0FOYztBQU9mLFVBQVEsZ0JBQVMsR0FBVCxFQUFjO0FBQ3BCLFdBQU8sUUFBUSxJQUFmO0FBQ0QsR0FUYztBQVVmLHFCQUFtQiwyQkFBUyxHQUFULEVBQWM7QUFDL0IsV0FBTyxPQUFPLElBQWQ7QUFDRDtBQVpjLENBQWpCOzs7Ozs7QUNEQTs7OztBQUlBLE9BQU8sT0FBUCxHQUFpQixTQUFqQjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVMsU0FBVCxDQUFvQixFQUFwQixFQUF3QixHQUF4QixFQUE2QjtBQUMzQixNQUFJLE9BQU8sZUFBUCxDQUFKLEVBQTZCO0FBQzNCLFdBQU8sRUFBUDtBQUNEOztBQUVELE1BQUksU0FBUyxLQUFiO0FBQ0EsV0FBUyxVQUFULEdBQXNCO0FBQ3BCLFFBQUksQ0FBQyxNQUFMLEVBQWE7QUFDWCxVQUFJLE9BQU8sa0JBQVAsQ0FBSixFQUFnQztBQUM5QixjQUFNLElBQUksS0FBSixDQUFVLEdBQVYsQ0FBTjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU8sa0JBQVAsQ0FBSixFQUFnQztBQUNyQyxnQkFBUSxLQUFSLENBQWMsR0FBZDtBQUNELE9BRk0sTUFFQTtBQUNMLGdCQUFRLElBQVIsQ0FBYSxHQUFiO0FBQ0Q7QUFDRCxlQUFTLElBQVQ7QUFDRDtBQUNELFdBQU8sR0FBRyxLQUFILENBQVMsSUFBVCxFQUFlLFNBQWYsQ0FBUDtBQUNEOztBQUVELFNBQU8sVUFBUDtBQUNEOztBQUVEOzs7Ozs7OztBQVFBLFNBQVMsTUFBVCxDQUFpQixJQUFqQixFQUF1QjtBQUNyQjtBQUNBLE1BQUk7QUFDRixRQUFJLENBQUMsT0FBTyxZQUFaLEVBQTBCLE9BQU8sS0FBUDtBQUMzQixHQUZELENBRUUsT0FBTyxDQUFQLEVBQVU7QUFDVixXQUFPLEtBQVA7QUFDRDtBQUNELE1BQUksTUFBTSxPQUFPLFlBQVAsQ0FBb0IsSUFBcEIsQ0FBVjtBQUNBLE1BQUksUUFBUSxHQUFaLEVBQWlCLE9BQU8sS0FBUDtBQUNqQixTQUFPLE9BQU8sR0FBUCxFQUFZLFdBQVosT0FBOEIsTUFBckM7QUFDRDs7Ozs7OztBQ2xFRCxPQUFPLE9BQVAsR0FBaUIsTUFBakI7O0FBRUEsSUFBSSxpQkFBaUIsT0FBTyxTQUFQLENBQWlCLGNBQXRDOztBQUVBLFNBQVMsTUFBVCxHQUFrQjtBQUNkLFFBQUksU0FBUyxFQUFiOztBQUVBLFNBQUssSUFBSSxJQUFJLENBQWIsRUFBZ0IsSUFBSSxVQUFVLE1BQTlCLEVBQXNDLEdBQXRDLEVBQTJDO0FBQ3ZDLFlBQUksU0FBUyxVQUFVLENBQVYsQ0FBYjs7QUFFQSxhQUFLLElBQUksR0FBVCxJQUFnQixNQUFoQixFQUF3QjtBQUNwQixnQkFBSSxlQUFlLElBQWYsQ0FBb0IsTUFBcEIsRUFBNEIsR0FBNUIsQ0FBSixFQUFzQztBQUNsQyx1QkFBTyxHQUFQLElBQWMsT0FBTyxHQUFQLENBQWQ7QUFDSDtBQUNKO0FBQ0o7O0FBRUQsV0FBTyxNQUFQO0FBQ0giLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi9saWIvaGVscGVycycpO1xudmFyIEpzb25SZWZzID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ0pzb25SZWZzJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydKc29uUmVmcyddIDogbnVsbCk7XG52YXIgU3dhZ2dlckFwaSA9IHJlcXVpcmUoJy4vbGliL3R5cGVzL2FwaScpO1xudmFyIFlBTUwgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snanN5YW1sJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydqc3lhbWwnXSA6IG51bGwpO1xuXG4vLyBMb2FkIHByb21pc2VzIHBvbHlmaWxsIGlmIG5lY2Vzc2FyeVxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gIHJlcXVpcmUoJ25hdGl2ZS1wcm9taXNlLW9ubHknKTtcbn1cblxuLyoqXG4gKiBBIGxpYnJhcnkgZm9yIHNpbXBsZXIgW1N3YWdnZXJdKGh0dHA6Ly9zd2FnZ2VyLmlvLykgaW50ZWdyYXRpb25zLlxuICpcbiAqIEBtb2R1bGUgc3dheVxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIFN3YWdnZXJBcGkgb2JqZWN0IGZyb20gaXRzIFN3YWdnZXIgZGVmaW5pdGlvbihzKS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LkNyZWF0ZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgbG9hZGluZyB0aGUgZGVmaW5pdGlvbihzKVxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPG1vZHVsZTpzd2F5LlN3YWdnZXJBcGk+fSBUaGUgcHJvbWlzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBTd2FnZ2VyQXBpLmNyZWF0ZSh7ZGVmaW5pdGlvbjogJ2h0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIueWFtbCd9KVxuICogICAudGhlbihmdW5jdGlvbiAoYXBpKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ0RvY3VtZW50YXRpb24gVVJMOiAnLCBhcGkuZG9jdW1lbnRhdGlvblVybCk7XG4gKiAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gKiAgIH0pO1xuICovXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdmFyIGNPcHRpb25zO1xuXG4gIC8vIFZhbGlkYXRlIGFyZ3VtZW50c1xuICBhbGxUYXNrcyA9IGFsbFRhc2tzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBpcyByZXF1aXJlZCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuZGVmaW5pdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuZGVmaW5pdGlvbikgJiYgIV8uaXNTdHJpbmcob3B0aW9ucy5kZWZpbml0aW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmRlZmluaXRpb24gbXVzdCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIGEgc3RyaW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuanNvblJlZnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5qc29uUmVmcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5qc29uUmVmcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbUZvcm1hdHMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21Gb3JtYXRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbUZvcm1hdHMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfVxuXG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbUZvcm1hdHMsICdjdXN0b21Gb3JtYXRzJyk7XG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMsICdjdXN0b21Gb3JtYXRHZW5lcmF0b3JzJyk7XG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsICdjdXN0b21WYWxpZGF0b3JzJyk7XG5cbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGlucHV0IG9wdGlvbnMgc28gYXMgbm90IHRvIGFsdGVyIHRoZW1cbiAgY09wdGlvbnMgPSBfLmNsb25lRGVlcChvcHRpb25zKTtcblxuICAvL1xuICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgLy8gUmVzb2x2ZSByZWxhdGl2ZS9yZW1vdGUgcmVmZXJlbmNlc1xuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFByZXBhcmUgdGhlIGpzb24tcmVmcyBvcHRpb25zXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChjT3B0aW9ucy5qc29uUmVmcykpIHtcbiAgICAgICAgY09wdGlvbnMuanNvblJlZnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5jbHVkZSBpbnZhbGlkIHJlZmVyZW5jZSBpbmZvcm1hdGlvblxuICAgICAgY09wdGlvbnMuanNvblJlZnMuaW5jbHVkZUludmFsaWQgPSB0cnVlO1xuXG4gICAgICAvLyBSZXNvbHZlIG9ubHkgcmVsYXRpdmUvcmVtb3RlIHJlZmVyZW5jZXNcbiAgICAgIGNPcHRpb25zLmpzb25SZWZzLmZpbHRlciA9IFsncmVsYXRpdmUnLCAncmVtb3RlJ107XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUganNvbi1yZWZzIG9wdGlvbnMgdG8gcHJvY2VzcyBZQU1MXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChjT3B0aW9ucy5qc29uUmVmcy5sb2FkZXJPcHRpb25zKSkge1xuICAgICAgICBjT3B0aW9ucy5qc29uUmVmcy5sb2FkZXJPcHRpb25zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMucHJvY2Vzc0NvbnRlbnQpKSB7XG4gICAgICAgIGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMucHJvY2Vzc0NvbnRlbnQgPSBmdW5jdGlvbiAocmVzLCBjYikge1xuICAgICAgICAgIGNiKHVuZGVmaW5lZCwgWUFNTC5zYWZlTG9hZChyZXMudGV4dCkpO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIHRoZSBhcHByb3ByaWF0ZSBqc29uLXJlZnMgQVBJXG4gICAgICBpZiAoXy5pc1N0cmluZyhjT3B0aW9ucy5kZWZpbml0aW9uKSkge1xuICAgICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnNBdChjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnMoY09wdGlvbnMuZGVmaW5pdGlvbiwgY09wdGlvbnMuanNvblJlZnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gUmVzb2x2ZSBsb2NhbCByZWZlcmVuY2VzIGFuZCBtZXJnZSByZXN1bHRzXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlbW90ZVJlc3VsdHMpIHtcbiAgICAgIC8vIFJlc29sdmUgbG9jYWwgcmVmZXJlbmNlcyAoUmVtb3RlIHJlZmVyZW5jZXMgc2hvdWxkIGhhZCBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQpXG4gICAgICBjT3B0aW9ucy5qc29uUmVmcy5maWx0ZXIgPSAnbG9jYWwnO1xuXG4gICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnMocmVtb3RlUmVzdWx0cy5yZXNvbHZlZCB8fCBjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgICAgICBfLmVhY2gocmVtb3RlUmVzdWx0cy5yZWZzLCBmdW5jdGlvbiAocmVmRGV0YWlscywgcmVmUHRyKSB7XG4gICAgICAgICAgICByZXN1bHRzLnJlZnNbcmVmUHRyXSA9IHJlZkRldGFpbHM7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIFN3YWdnZXIgZGVmaW5pdGlvblxuICAgICAgICAgICAgZGVmaW5pdGlvbjogXy5pc1N0cmluZyhjT3B0aW9ucy5kZWZpbml0aW9uKSA/IHJlbW90ZVJlc3VsdHMudmFsdWUgOiBjT3B0aW9ucy5kZWZpbml0aW9uLFxuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIFN3YWdnZXIgZGVmaW5pdGlvbiB3aXRoIGl0cyByZW1vdGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICAgICAgICAgICAgZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZDogcmVtb3RlUmVzdWx0cy5yZXNvbHZlZCxcbiAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBTd2FnZ2VyIGRlZmluaXRpb24gd2l0aCBhbGwgaXRzIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAgICAgICAgICAgIGRlZmluaXRpb25GdWxseVJlc29sdmVkOiByZXN1bHRzLnJlc29sdmVkLFxuICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGxvY2FsIHJlZmVyZW5jZSBkZXRhaWxzIHdpdGggdGhlIHJlbW90ZSByZWZlcmVuY2UgZGV0YWlsc1xuICAgICAgICAgICAgcmVmczogcmVzdWx0cy5yZWZzXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC8vIFByb2Nlc3MgdGhlIFN3YWdnZXIgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgQVBJXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGFsbCBjaXJjdWxhciBvYmplY3RzIGFzIHotc2NoZW1hIGRvZXMgbm90IHdvcmsgd2l0aCB0aGVtOlxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYS9pc3N1ZXMvMTM3XG4gICAgICBoZWxwZXJzLnJlbW92ZUNpcmN1bGFycyhyZXN1bHRzLmRlZmluaXRpb24pO1xuICAgICAgaGVscGVycy5yZW1vdmVDaXJjdWxhcnMocmVzdWx0cy5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkKTtcbiAgICAgIGhlbHBlcnMucmVtb3ZlQ2lyY3VsYXJzKHJlc3VsdHMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gICAgICAvLyBDcmVhdGUgb2JqZWN0IG1vZGVsXG4gICAgICByZXR1cm4gbmV3IFN3YWdnZXJBcGkocmVzdWx0cy5kZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucmVmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgZm9ybWF0R2VuZXJhdG9ycyA9IHJlcXVpcmUoJy4vdmFsaWRhdGlvbi9mb3JtYXQtZ2VuZXJhdG9ycycpO1xudmFyIGZvcm1hdFZhbGlkYXRvcnMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb24vZm9ybWF0LXZhbGlkYXRvcnMnKTtcbnZhciBaU2NoZW1hID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ1pTY2hlbWEnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ1pTY2hlbWEnXSA6IG51bGwpO1xuXG4vLyBmdWxsLWRhdGUgZnJvbSBodHRwOi8veG1sMnJmYy5pZXRmLm9yZy9wdWJsaWMvcmZjL2h0bWwvcmZjMzMzOS5odG1sI2FuY2hvcjE0XG52YXIgZGF0ZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICdeJyArXG4gICdcXFxcZHs0fScgKyAvLyB5ZWFyXG4gICctJyArXG4gICcoWzBdXFxcXGR8MVswMTJdKScgKyAvLyBtb250aFxuICAnLScgK1xuICAnKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pJyArIC8vIGRheVxuICAnJCcpO1xuXG4vLyBkYXRlLXRpbWUgZnJvbSBodHRwOi8veG1sMnJmYy5pZXRmLm9yZy9wdWJsaWMvcmZjL2h0bWwvcmZjMzMzOS5odG1sI2FuY2hvcjE0XG52YXIgZGF0ZVRpbWVSZWdFeHAgPSBuZXcgUmVnRXhwKFxuICAnXicgK1xuICAnXFxcXGR7NH0nICsgLy8geWVhclxuICAnLScgK1xuICAnKFswXVxcXFxkfDFbMDEyXSknICsgLy8gbW9udGhcbiAgJy0nICtcbiAgJygwWzEtOV18WzEyXVxcXFxkfDNbMDFdKScgKyAvLyBkYXlcbiAgJ1QnICtcbiAgJyhbMDFdXFxcXGR8MlswLTNdKScgKyAvLyBob3VyXG4gICc6JyArXG4gICdbMC01XVxcXFxkJyArIC8vIG1pbnV0ZVxuICAnOicgK1xuICAnWzAtNV1cXFxcZCcgKyAvLyBzZWNvbmRcbiAgJyhcXFxcLlxcXFxkKyk/JyArIC8vIGZyYWN0aW9uYWwgc2Vjb25kc1xuICAnKFp8KFxcXFwrfC0pKFswMV1cXFxcZHwyWzAtNF0pOlswLTVdXFxcXGQpJyArIC8vIFogb3IgdGltZSBvZmZzZXRcbiAgJyQnKTtcblxudmFyIGNvbGxlY3Rpb25Gb3JtYXRzID0gW3VuZGVmaW5lZCwgJ2NzdicsICdtdWx0aScsICdwaXBlcycsICdzc3YnLCAndHN2J107XG52YXIganNvbk1vY2tlcjtcbnZhciBqc29uU2NoZW1hVmFsaWRhdG9yID0gY3JlYXRlSlNPTlZhbGlkYXRvcigpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjcGFyYW1ldGVyLW9iamVjdFxudmFyIHBhcmFtZXRlclNjaGVtYVByb3BlcnRpZXMgPSBbXG4gICdhbGxvd0VtcHR5VmFsdWUnLFxuICAnZGVmYXVsdCcsXG4gICdkZXNjcmlwdGlvbicsXG4gICdlbnVtJyxcbiAgJ2V4Y2x1c2l2ZU1heGltdW0nLFxuICAnZXhjbHVzaXZlTWluaW11bScsXG4gICdmb3JtYXQnLFxuICAnaXRlbXMnLFxuICAnbWF4SXRlbXMnLFxuICAnbWF4TGVuZ3RoJyxcbiAgJ21heGltdW0nLFxuICAnbWluSXRlbXMnLFxuICAnbWluTGVuZ3RoJyxcbiAgJ21pbmltdW0nLFxuICAnbXVsdGlwbGVPZicsXG4gICdwYXR0ZXJuJyxcbiAgJ3R5cGUnLFxuICAndW5pcXVlSXRlbXMnXG5dO1xudmFyIHR5cGVzID0gWydhcnJheScsICdib29sZWFuJywgJ2ludGVnZXInLCAnb2JqZWN0JywgJ251bWJlcicsICdzdHJpbmcnXTtcblxuZnVuY3Rpb24gY3JlYXRlSlNPTk1vY2tlciAobW9ja2VyKSB7XG4gIC8vIEV4dGVuZCBmYWtlci5qcyB0byBvbmx5IGluY2x1ZGUgdGhlICdlbicgbG9jYWxlXG4gIHZhciBmYWtlckxvY2FsZSA9IHJlcXVpcmUoJ2Zha2VyL2xvY2FsZS9lbl9VUycpO1xuXG4gIG1vY2tlci5leHRlbmQoJ2Zha2VyJywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlckxvY2FsZTtcbiAgfSk7XG5cbiAgLy8gQWRkIHRoZSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvcnNcbiAgXy5lYWNoKGZvcm1hdEdlbmVyYXRvcnMsIGZ1bmN0aW9uIChnZW4sIG5hbWUpIHtcbiAgICBtb2NrZXIuZm9ybWF0KG5hbWUsIGdlbihtb2NrZXIpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1vY2tlcjtcbn1cblxuZnVuY3Rpb24gZmluZEV4dHJhUGFyYW1ldGVycyAoZXhwZWN0ZWQsIGFjdHVhbCwgbG9jYXRpb24sIHJlc3VsdHMpIHtcbiAgdmFyIGNvZGVTdWZmaXggPSBsb2NhdGlvbi50b1VwcGVyQ2FzZSgpO1xuXG4gIHN3aXRjaCAobG9jYXRpb24pIHtcbiAgICBjYXNlICdmb3JtRGF0YSc6XG4gICAgICBjb2RlU3VmZml4ID0gJ0ZPUk1fREFUQSc7XG4gICAgICBsb2NhdGlvbiA9ICdmb3JtIGRhdGEgZmllbGQnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncXVlcnknOlxuICAgICAgbG9jYXRpb24gPSAncXVlcnkgcGFyYW1ldGVyJztcbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gbm8gZGVmYXVsdFxuICB9XG5cbiAgXy5lYWNoKGFjdHVhbCwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAoZXhwZWN0ZWQuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnUkVRVUVTVF9BRERJVElPTkFMXycgKyBjb2RlU3VmZml4LFxuICAgICAgICBtZXNzYWdlOiAnQWRkaXRpb25hbCAnICsgbG9jYXRpb24gKyAnIG5vdCBhbGxvd2VkOiAnICsgbmFtZSxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRm9ybWF0IChuYW1lLCB2YWxpZGF0b3IpIHtcbiAgWlNjaGVtYS5yZWdpc3RlckZvcm1hdChuYW1lLCB2YWxpZGF0b3IpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckZvcm1hdEdlbmVyYXRvciAobmFtZSwgZnVuYykge1xuICBnZXRKU09OU2NoZW1hTW9ja2VyKCkuZm9ybWF0KG5hbWUsIGZ1bmMpO1xufVxuXG5mdW5jdGlvbiB1bnJlZ2lzdGVyRm9ybWF0IChuYW1lKSB7XG4gIFpTY2hlbWEudW5yZWdpc3RlckZvcm1hdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gdW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciAobmFtZSkge1xuICBkZWxldGUgZ2V0SlNPTlNjaGVtYU1vY2tlcigpLmZvcm1hdCgpW25hbWVdO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVKU09OVmFsaWRhdG9yICgpIHtcbiAgdmFyIHZhbGlkYXRvciA9IG5ldyBaU2NoZW1hKHtcbiAgICBicmVha09uRmlyc3RFcnJvcjogZmFsc2UsXG4gICAgaWdub3JlVW5rbm93bkZvcm1hdHM6IHRydWUsXG4gICAgcmVwb3J0UGF0aEFzQXJyYXk6IHRydWVcbiAgfSk7XG5cbiAgLy8gQWRkIHRoZSBjdXN0b20gdmFsaWRhdG9yc1xuICBfLmVhY2goZm9ybWF0VmFsaWRhdG9ycywgZnVuY3Rpb24gKGhhbmRsZXIsIG5hbWUpIHtcbiAgICByZWdpc3RlckZvcm1hdChuYW1lLCBoYW5kbGVyKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbGlkYXRvcjtcbn1cblxuZnVuY3Rpb24gZ2V0SlNPTlNjaGVtYU1vY2tlciAoKSB7XG4gIHZhciBtb2NrZXI7XG5cbiAgaWYgKCFqc29uTW9ja2VyKSB7XG4gICAgbW9ja2VyID0gcmVxdWlyZSgnanNvbi1zY2hlbWEtZmFrZXIvbGliJyk7XG4gICAganNvbk1vY2tlciA9IGNyZWF0ZUpTT05Nb2NrZXIobW9ja2VyKTtcbiAgfVxuXG4gIHJldHVybiBqc29uTW9ja2VyO1xufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRXJyb3IgKG9iaikge1xuICAvLyBSZW1vdmUgc3VwZXJmbHVvdXMgZXJyb3IgZGV0YWlsc1xuICBpZiAoXy5pc1VuZGVmaW5lZChvYmouc2NoZW1hSWQpKSB7XG4gICAgZGVsZXRlIG9iai5zY2hlbWFJZDtcbiAgfVxuXG4gIGlmIChvYmouaW5uZXIpIHtcbiAgICBfLmVhY2gob2JqLmlubmVyLCBmdW5jdGlvbiAobk9iaikge1xuICAgICAgbm9ybWFsaXplRXJyb3Iobk9iaik7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgbWV0aG9kIHRvIHRha2UgYSBTd2FnZ2VyIHBhcmFtZXRlciBkZWZpbml0aW9uIGFuZCBjb21wdXRlIGl0cyBzY2hlbWEuXG4gKlxuICogRm9yIG5vbi1ib2R5IFN3YWdnZXIgcGFyYW1ldGVycywgdGhlIGRlZmluaXRpb24gaXRzZWxmIGlzIG5vdCBzdWl0YWJsZSBhcyBhIEpTT04gU2NoZW1hIHNvIHdlIG11c3QgY29tcHV0ZSBpdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1EZWYgLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgY29tcHV0ZWQgc2NoZW1hXG4gKi9cbm1vZHVsZS5leHBvcnRzLmNvbXB1dGVQYXJhbWV0ZXJTY2hlbWEgPSBmdW5jdGlvbiAocGFyYW1EZWYpIHtcbiAgdmFyIHNjaGVtYTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbURlZi5zY2hlbWEpKSB7XG4gICAgc2NoZW1hID0ge307XG5cbiAgICAvLyBCdWlsZCB0aGUgc2NoZW1hIGZyb20gdGhlIHNjaGVtYS1saWtlIHBhcmFtZXRlciBzdHJ1Y3R1cmVcbiAgICBfLmZvckVhY2gocGFyYW1ldGVyU2NoZW1hUHJvcGVydGllcywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbURlZltuYW1lXSkpIHtcbiAgICAgICAgc2NoZW1hW25hbWVdID0gcGFyYW1EZWZbbmFtZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgc2NoZW1hID0gcGFyYW1EZWYuc2NoZW1hO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSByYXcgSmF2YVNjcmlwdCB2YWx1ZSB0byBhIEpTT04gU2NoZW1hIHZhbHVlIGJhc2VkIG9uIGl0cyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYSAtIFRoZSBzY2hlbWEgZm9yIHRoZSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgY29udmVyc2lvbiBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29sbGVjdGlvbkZvcm1hdF0gLSBUaGUgY29sbGVjdGlvbiBmb3JtYXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5lbmNvZGluZ10gLSBUaGUgZW5jb2RpbmcgaWYgdGhlIHJhdyB2YWx1ZSBpcyBhIGBCdWZmZXJgXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIGNvbnZlcnRlZCB2YWx1ZVxuICpcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSUYgdGhlIGBjb2xsZWN0aW9uRm9ybWF0YCBvciBgdHlwZWAgaXMgaW52YWxpZCBmb3IgdGhlIGBzY2hlbWFgLCBvciBpZiBjb252ZXJzaW9uIGZhaWxzXG4gKi9cbnZhciBjb252ZXJ0VmFsdWUgPSBtb2R1bGUuZXhwb3J0cy5jb252ZXJ0VmFsdWUgPSBmdW5jdGlvbiAoc2NoZW1hLCBvcHRpb25zLCB2YWx1ZSkge1xuICB2YXIgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlOyAvLyBVc2VkIGluIGVycm9yIHJlcG9ydGluZyBmb3IgaW52YWxpZCB2YWx1ZXNcbiAgdmFyIHR5cGUgPSBfLmlzUGxhaW5PYmplY3Qoc2NoZW1hKSA/IHNjaGVtYS50eXBlIDogdW5kZWZpbmVkO1xuICB2YXIgcFZhbHVlID0gdmFsdWU7XG4gIHZhciBwVHlwZSA9IHR5cGVvZiBwVmFsdWU7XG4gIHZhciBlcnI7XG4gIHZhciBpc0RhdGU7XG4gIHZhciBpc0RhdGVUaW1lO1xuXG4gIC8vIElmIHRoZXJlIGlzIGFuIGV4cGxpY2l0IHR5cGUgcHJvdmlkZWQsIG1ha2Ugc3VyZSBpdCdzIG9uZSBvZiB0aGUgc3VwcG9ydGVkIG9uZXNcbiAgaWYgKF8uaGFzKHNjaGVtYSwgJ3R5cGUnKSAmJiB0eXBlcy5pbmRleE9mKHR5cGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgXFwndHlwZVxcJyB2YWx1ZTogJyArIHR5cGUpO1xuICB9XG5cbiAgLy8gU2luY2UgSlNPTiBTY2hlbWEgYWxsb3dzIHlvdSB0byBub3Qgc3BlY2lmeSBhIHR5cGUgYW5kIGl0IGlzIHRyZWF0ZWQgYXMgYSB3aWxkY2FyZCBvZiBzb3J0cywgd2Ugc2hvdWxkIG5vdCBkbyBhbnlcbiAgLy8gY29lcmNpb24gZm9yIHRoZXNlIHR5cGVzIG9mIHZhbHVlcy5cbiAgaWYgKF8uaXNVbmRlZmluZWQodHlwZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBpcyBubyB2YWx1ZSwgZG8gbm90IGNvbnZlcnQgaXRcbiAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gQ29udmVydCBCdWZmZXIgdmFsdWUgdG8gU3RyaW5nXG4gIC8vIChXZSB1c2UgdGhpcyB0eXBlIG9mIGNoZWNrIHRvIGlkZW50aWZ5IEJ1ZmZlciBvYmplY3RzLiAgVGhlIGJyb3dzZXIgZG9lcyBub3QgaGF2ZSBhIEJ1ZmZlciB0eXBlIGFuZCB0byBhdm9pZCBoYXZpbmdcbiAgLy8gIGltcG9ydCB0aGUgYnJvd3NlcmlmeSBidWZmZXIgbW9kdWxlLCB3ZSBqdXN0IGRvIGEgc2ltcGxlIGNoZWNrLiAgVGhpcyBpcyBicml0dGxlIGJ1dCBzaG91bGQgd29yay4pXG4gIGlmIChfLmlzRnVuY3Rpb24odmFsdWUucmVhZFVJbnQ4KSkge1xuICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgcFZhbHVlID0gdmFsdWU7XG4gICAgcFR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIH1cblxuICAvLyBJZiB0aGUgdmFsdWUgaXMgZW1wdHkgYW5kIGVtcHR5IGlzIGFsbG93ZWQsIHVzZSBpdFxuICBpZiAoc2NoZW1hLmFsbG93RW1wdHlWYWx1ZSAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBBdHRlbXB0IHRvIHBhcnNlIHRoZSBzdHJpbmcgYXMgSlNPTiBpZiB0aGUgdHlwZSBpcyBhcnJheSBvciBvYmplY3RcbiAgaWYgKFsnYXJyYXknLCAnb2JqZWN0J10uaW5kZXhPZih0eXBlKSA+IC0xICYmIF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgaWYgKCh0eXBlID09PSAnYXJyYXknICYmIHZhbHVlLmluZGV4T2YoJ1snKSA9PT0gMCkgfHwgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlLmluZGV4T2YoJ3snKSA9PT0gMCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gTm90aGluZyB0byBkbyBoZXJlLCBqdXN0IGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICBjYXNlICdhcnJheSc6XG4gICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbkZvcm1hdHMuaW5kZXhPZihvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXQpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFxcJ2NvbGxlY3Rpb25Gb3JtYXRcXCcgdmFsdWU6ICcgKyBvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMuY29sbGVjdGlvbkZvcm1hdCkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbXVsdGknOlxuICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGlwZXMnOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCd8Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3N2JzpcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Rzdic6XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJ1xcdCcpO1xuICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gXy5tYXAodmFsdWUsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gY29udmVydFZhbHVlKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpID8gc2NoZW1hLml0ZW1zW2luZGV4XSA6IHNjaGVtYS5pdGVtcywgb3B0aW9ucywgaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBicmVhaztcbiAgY2FzZSAnYm9vbGVhbic6XG4gICAgaWYgKCFfLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkIGJvb2xlYW46ICcgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIGNhc2UgJ2ludGVnZXInOlxuICAgIGlmICghXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSAmJiBfLnRyaW0odmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IE5hTjtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgaW50ZWdlcjogJyArIG9yaWdpbmFsVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJyZWFrO1xuICBjYXNlICdudW1iZXInOlxuICAgIGlmICghXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSAmJiBfLnRyaW0odmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IE5hTjtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgbnVtYmVyOiAnICsgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlICdzdHJpbmcnOlxuICAgIGlmIChbJ2RhdGUnLCAnZGF0ZS10aW1lJ10uaW5kZXhPZihzY2hlbWEuZm9ybWF0KSA+IC0xKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgaXNEYXRlID0gc2NoZW1hLmZvcm1hdCA9PT0gJ2RhdGUnICYmIGRhdGVSZWdFeHAudGVzdCh2YWx1ZSk7XG4gICAgICAgIGlzRGF0ZVRpbWUgPSBzY2hlbWEuZm9ybWF0ID09PSAnZGF0ZS10aW1lJyAmJiBkYXRlVGltZVJlZ0V4cC50ZXN0KHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzRGF0ZSAmJiAhaXNEYXRlVGltZSkge1xuICAgICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkICcgKyBzY2hlbWEuZm9ybWF0ICsgJyBzdHJpbmc6ICcgKyBvcmlnaW5hbFZhbHVlKTtcbiAgICAgICAgICBlcnIuY29kZSA9ICdJTlZBTElEX0ZPUk1BVCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFfLmlzRGF0ZSh2YWx1ZSkgfHwgdmFsdWUudG9TdHJpbmcoKSA9PT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgJyArIHNjaGVtYS5mb3JtYXQgKyAnIHN0cmluZzogJyArIG9yaWdpbmFsVmFsdWUpO1xuXG4gICAgICAgIGVyci5jb2RlID0gJ0lOVkFMSURfRk9STUFUJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgZXJyID0gbmV3IFR5cGVFcnJvcignTm90IGEgdmFsaWQgc3RyaW5nOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIGJyZWFrO1xuXG4gICAgLy8gbm8gZGVmYXVsdFxuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGVycikpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBlcnJvciB0byBiZSBtb3JlIGxpa2UgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZXJyLmNvZGUpKSB7XG4gICAgICBlcnIuY29kZSA9ICdJTlZBTElEX1RZUEUnO1xuICAgICAgZXJyLm1lc3NhZ2UgPSAnRXhwZWN0ZWQgdHlwZSAnICsgdHlwZSArICcgYnV0IGZvdW5kIHR5cGUgJyArIHBUeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnIubWVzc2FnZSA9ICdPYmplY3QgZGlkblxcJ3QgcGFzcyB2YWxpZGF0aW9uIGZvciBmb3JtYXQgJyArIHNjaGVtYS5mb3JtYXQgKyAnOiAnICsgcFZhbHVlO1xuICAgIH1cblxuICAgIC8vIEZvcm1hdCBhbmQgdHlwZSBlcnJvcnMgcmVzZW1ibGUgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICBlcnIuZmFpbGVkVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgZXJyLnBhdGggPSBbXTtcblxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdmlkZWQgY29udGVudCB0eXBlIG9yIGBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1gIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gKlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzcuaHRtbCNzZWM3LjIuMVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBoZWFkZXJzIC0gVGhlIGhlYWRlcnMgdG8gc2VhcmNoXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbnRlbnQgdHlwZVxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRDb250ZW50VHlwZSA9IGZ1bmN0aW9uIChoZWFkZXJzKSB7XG4gIHJldHVybiBnZXRIZWFkZXJWYWx1ZShoZWFkZXJzLCAnY29udGVudC10eXBlJykgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGhlYWRlciB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjYXNlIG9mIHRoZSBwcm92aWRlZC9yZXF1ZXN0ZWQgaGVhZGVyIG5hbWUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnMgLSBUaGUgaGVhZGVycyB0byBzZWFyY2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJOYW1lIC0gVGhlIGhlYWRlciBuYW1lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGhlYWRlciB2YWx1ZSBvciBgdW5kZWZpbmVkYCBpZiBpdCBpcyBub3QgZm91bmRcbiAqL1xudmFyIGdldEhlYWRlclZhbHVlID0gbW9kdWxlLmV4cG9ydHMuZ2V0SGVhZGVyVmFsdWUgPSBmdW5jdGlvbiAoaGVhZGVycywgaGVhZGVyTmFtZSkge1xuICAvLyBEZWZhdWx0IHRvIGFuIGVtcHR5IG9iamVjdFxuICBoZWFkZXJzID0gaGVhZGVycyB8fCB7fTtcblxuICB2YXIgbGNIZWFkZXJOYW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB2YXIgcmVhbEhlYWRlck5hbWUgPSBfLmZpbmQoT2JqZWN0LmtleXMoaGVhZGVycyksIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICByZXR1cm4gaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09IGxjSGVhZGVyTmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhlYWRlcnNbcmVhbEhlYWRlck5hbWVdO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBqc29uLXNjaGVtYS1mYWtlciBtb2NrZXIuXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIGpzb24tc2NoZW1hLWZha2VyIG1vY2tlciB0byB1c2VcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0SlNPTlNjaGVtYU1vY2tlciA9IGdldEpTT05TY2hlbWFNb2NrZXI7XG5cbm1vZHVsZS5leHBvcnRzLmdldFNhbXBsZSA9IGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgdmFyIHNhbXBsZTtcblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hKSkge1xuICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICBzYW1wbGUgPSAnVGhpcyBpcyBzYW1wbGUgY29udGVudCBmb3IgdGhlIFwiZmlsZVwiIHR5cGUuJztcbiAgICB9IGVsc2Uge1xuICAgICAgc2FtcGxlID0gZ2V0SlNPTlNjaGVtYU1vY2tlcigpKHNjaGVtYSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNhbXBsZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgei1zY2hlbWEgdmFsaWRhdG9yLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB6LXNjaGVtYSB2YWxpZGF0b3IgdG8gdXNlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBqc29uU2NoZW1hVmFsaWRhdG9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMucGFyYW1ldGVyTG9jYXRpb25zID0gWydib2R5JywgJ2Zvcm1EYXRhJywgJ2hlYWRlcicsICdwYXRoJywgJ3F1ZXJ5J107XG5cbi8qKlxuICogUHJvY2VzcyB2YWxpZGF0b3JzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fG1vZHVsZTpTd2F5flNlcnZlclJlc3BvbnNlV3JhcHBlcn0gdGFyZ2V0IC0gVGhlIHRoaW5nIGJlaW5nIHZhbGlkYXRlZFxuICogQHBhcmFtIHttb2R1bGU6U3dheX5Td2FnZ2VyQXBpfG1vZHVsZTpTd2F5fk9wZXJhdGlvbnxtb2R1bGU6U3dheX5SZXNwb25zZX0gY2FsbGVyIC0gVGhlIG9iamVjdCByZXF1ZXN0aW5nIHZhbGlkYXRpb24gXyhjYW4gYmUgYHVuZGVmaW5lZGApX1xuICogQHBhcmFtIHttb2R1bGU6U3dheX5Eb2N1bWVudFZhbGlkYXRpb25GdW5jdGlvbltdfG1vZHVsZTpTd2F5flJlcXVlc3RWYWxpZGF0aW9uRnVuY3Rpb25bXXxtb2R1bGU6U3dheX5SZXNwb3NlVmFsaWRhdGlvbkZ1bmN0aW9uW119IHZhbGlkYXRvcnMgLSBUaGUgdmFsaWRhdG9yc1xuICogQHBhcmFtIHttb2R1bGU6U3dheX5WYWxpZGF0aW9uUmVzdWx0c30gcmVzdWx0cyAtIFRoZSBjdW11bGF0aXZlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5tb2R1bGUuZXhwb3J0cy5wcm9jZXNzVmFsaWRhdG9ycyA9IGZ1bmN0aW9uICh0YXJnZXQsIGNhbGxlciwgdmFsaWRhdG9ycywgcmVzdWx0cykge1xuICBfLmVhY2godmFsaWRhdG9ycywgZnVuY3Rpb24gKHZhbGlkYXRvcikge1xuICAgIHZhciB2QXJncyA9IFt0YXJnZXRdO1xuICAgIHZhciB2UmVzdWx0cztcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChjYWxsZXIpKSB7XG4gICAgICB2QXJncy5wdXNoKGNhbGxlcik7XG4gICAgfVxuXG4gICAgdlJlc3VsdHMgPSB2YWxpZGF0b3IuYXBwbHkodW5kZWZpbmVkLCB2QXJncyk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMpKSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMuZXJyb3JzKSAmJiB2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLmVycm9ycy5wdXNoLmFwcGx5KHJlc3VsdHMuZXJyb3JzLCB2UmVzdWx0cy5lcnJvcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQodlJlc3VsdHMud2FybmluZ3MpICYmIHZSZXN1bHRzLndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0cy53YXJuaW5ncy5wdXNoLmFwcGx5KHJlc3VsdHMud2FybmluZ3MsIHZSZXN1bHRzLndhcm5pbmdzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB2YWxpZGF0b3IgLSBUaGUgZm9ybWF0IHZhbGlkYXRvciAqKFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYSNyZWdpc3Rlci1hLWN1c3RvbS1mb3JtYXQpKSpcbiAqL1xubW9kdWxlLmV4cG9ydHMucmVnaXN0ZXJGb3JtYXQgPSByZWdpc3RlckZvcm1hdDtcblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGdlbmVyYXRvciAtIFRoZSBmb3JtYXQgZ2VuZXJhdG9yICooU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gcmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3I7XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gdGhlIHByb3ZpZGVkIG9iamVjdCB3aXRoIGFuIGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqIC0gVGhlIEphdmFTY3JpcHQgb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlbW92ZUNpcmN1bGFycyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgd2FsayhvYmosIGZ1bmN0aW9uIChub2RlLCBwYXRoLCBhbmNlc3RvcnMpIHtcbiAgICAvLyBSZXBsYWNlIGNpcmN1bGFycyB3aXRoIHt9XG4gICAgaWYgKGFuY2VzdG9ycy5pbmRleE9mKG5vZGUpID4gLTEpIHtcbiAgICAgIF8uc2V0KG9iaiwgcGF0aCwge30pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICovXG5tb2R1bGUuZXhwb3J0cy51bnJlZ2lzdGVyRm9ybWF0ID0gdW5yZWdpc3RlckZvcm1hdDtcblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdCBnZW5lcmF0b3JcbiAqL1xubW9kdWxlLmV4cG9ydHMudW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciA9IHVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3I7XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBwcm92aWRlZCB2YWx1ZSBhZ2FpbnN0IHRoZSBKU09OIFNjaGVtYSBieSBuYW1lIG9yIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWxpZGF0b3IgLSBUaGUgSlNPTiBTY2hlbWEgdmFsaWRhdG9yIGNyZWF0ZWQgdmlhIHtAbGluayAjY3JlYXRlSlNPTlZhbGlkYXRvcn1cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWFcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdmFsaWRhdGVcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5tb2R1bGUuZXhwb3J0cy52YWxpZGF0ZUFnYWluc3RTY2hlbWEgPSBmdW5jdGlvbiAodmFsaWRhdG9yLCBzY2hlbWEsIHZhbHVlKSB7XG4gIHNjaGVtYSA9IF8uY2xvbmVEZWVwKHNjaGVtYSk7IC8vIENsb25lIHRoZSBzY2hlbWEgYXMgei1zY2hlbWEgYWx0ZXJzIHRoZSBwcm92aWRlZCBkb2N1bWVudFxuXG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGlmICghdmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCBzY2hlbWEpKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzID0gXy5tYXAodmFsaWRhdG9yLmdldExhc3RFcnJvcnMoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgbm9ybWFsaXplRXJyb3IoZXJyKTtcblxuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBjb250ZW50IHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnRUeXBlIC0gVGhlIENvbnRlbnQtVHlwZSB2YWx1ZSBvZiB0aGUgcmVxdWVzdC9yZXNwb25zZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gc3VwcG9ydGVkVHlwZXMgLSBUaGUgc3VwcG9ydGVkIChkZWNsYXJlZCkgQ29udGVudC1UeXBlIHZhbHVlcyBmb3IgdGhlIHJlcXVlc3QvcmVzcG9uc2VcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXN1bHRzIC0gVGhlIHJlc3VsdHMgb2JqZWN0IHRvIHVwZGF0ZSBpbiB0aGUgZXZlbnQgb2YgYW4gaW52YWxpZCBjb250ZW50IHR5cGVcbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVDb250ZW50VHlwZSA9IGZ1bmN0aW9uIChjb250ZW50VHlwZSwgc3VwcG9ydGVkVHlwZXMsIHJlc3VsdHMpIHtcbiAgdmFyIHJhd0NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGNvbnRlbnRUeXBlKSkge1xuICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTQuaHRtbCNzZWMxNC4xN1xuICAgIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuc3BsaXQoJzsnKVswXTsgLy8gU3RyaXAgdGhlIHBhcmFtZXRlcihzKSBmcm9tIHRoZSBjb250ZW50IHR5cGVcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBvciBtaW1lLXR5cGUgb25seSBtYXRjaFxuICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZFR5cGVzLCByYXdDb250ZW50VHlwZSkgPT09IC0xICYmIF8uaW5kZXhPZihzdXBwb3J0ZWRUeXBlcywgY29udGVudFR5cGUpID09PSAtMSkge1xuICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgY29kZTogJ0lOVkFMSURfQ09OVEVOVF9UWVBFJyxcbiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIENvbnRlbnQtVHlwZSAoJyArIGNvbnRlbnRUeXBlICsgJykuICBUaGVzZSBhcmUgc3VwcG9ydGVkOiAnICtcbiAgICAgICAgc3VwcG9ydGVkVHlwZXMuam9pbignLCAnKSxcbiAgICAgIHBhdGg6IFtdXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayBhbiBvYmplY3QgYW5kIGludm9rZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZm9yIGVhY2ggbm9kZS5cbiAqXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSBvYmplY3QgdG8gd2Fsa1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2ZuXSAtIFRoZSBmdW5jdGlvbiB0byBpbnZva2VcbiAqL1xudmFyIHdhbGsgPSBtb2R1bGUuZXhwb3J0cy53YWxrID0gZnVuY3Rpb24gKG9iaiwgZm4pIHtcbiAgdmFyIGNhbGxGbiA9IF8uaXNGdW5jdGlvbihmbik7XG5cbiAgZnVuY3Rpb24gZG9XYWxrIChhbmNlc3RvcnMsIG5vZGUsIHBhdGgpIHtcbiAgICBpZiAoY2FsbEZuKSB7XG4gICAgICBmbihub2RlLCBwYXRoLCBhbmNlc3RvcnMpO1xuICAgIH1cblxuICAgIC8vIFdlIGRvIG5vdCBwcm9jZXNzIGNpcmN1bGFyIG9iamVjdHMgYWdhaW5cbiAgICBpZiAoYW5jZXN0b3JzLmluZGV4T2Yobm9kZSkgPT09IC0xKSB7XG4gICAgICBhbmNlc3RvcnMucHVzaChub2RlKTtcblxuICAgICAgaWYgKF8uaXNBcnJheShub2RlKSB8fCBfLmlzUGxhaW5PYmplY3Qobm9kZSkpIHtcbiAgICAgICAgXy5lYWNoKG5vZGUsIGZ1bmN0aW9uIChtZW1iZXIsIGluZGV4T3JLZXkpIHtcbiAgICAgICAgICBkb1dhbGsoYW5jZXN0b3JzLCBtZW1iZXIsIHBhdGguY29uY2F0KGluZGV4T3JLZXkudG9TdHJpbmcoKSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhbmNlc3RvcnMucG9wKCk7XG4gIH1cblxuICBkb1dhbGsoW10sIG9iaiwgW10pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGF0IGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgYXJlIG9mIHR5cGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHthcnJheX0gYXJyIC0gVGhlIGFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1OYW1lIC0gVGhlIHBhcmFtZXRlciBuYW1lXG4gKi9cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyA9IGZ1bmN0aW9uIChhcnIsIHBhcmFtTmFtZSkge1xuICBfLmZvckVhY2goYXJyLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbihpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy4nICsgcGFyYW1OYW1lICsgJyBhdCBpbmRleCAnICsgaW5kZXggKyAnIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHN0cmljdGx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+T3BlcmF0aW9ufG1vZHVsZTpTd2F5flJlc3BvbnNlfSBvcE9yUmVzIC0gVGhlIFN3YXkgb3BlcmF0aW9uIG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge29iamVjdHxtb2R1bGU6U3dheX5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcU9yUmVzIC0gVGhlIGh0dHAgY2xpZW50IHJlcXVlc3QgKihvciBlcXVpdmFsZW50KSogb3IgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Ugb3IgKihyZXNwb25zZSBsaWtlIG9iamVjdCkqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RyaWN0TW9kZSAtIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBzdHJpY3QgbW9kZVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmZvcm1EYXRhIC0gV2hldGhlciBvciBub3QgZm9ybSBkYXRhIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzdHJpY3RseVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmhlYWRlciAtIFdoZXRoZXIgb3Igbm90IGhlYWRlciBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgc3RyaWN0bHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5xdWVyeSAtIFdoZXRoZXIgb3Igbm90IHF1ZXJ5IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzdHJpY3RseVxuICogQHBhcmFtIHttb2R1bGU6U3dheX5WYWxpZGF0aW9uUmVzdWx0c30gcmVzdWx0cyAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVTdHJpY3RNb2RlID0gZnVuY3Rpb24gKG9wT3JSZXMsIHJlcU9yUmVzLCBzdHJpY3RNb2RlLCByZXN1bHRzKSB7XG4gIHZhciBkZWZpbmVkUGFyYW1ldGVycyA9IHtcbiAgICBmb3JtRGF0YTogW10sXG4gICAgaGVhZGVyOiBbXSxcbiAgICBxdWVyeTogW11cbiAgfTtcbiAgdmFyIG1vZGUgPSBvcE9yUmVzLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdPcGVyYXRpb24nID8gJ3JlcScgOiAncmVzJztcbiAgdmFyIHN0cmljdE1vZGVWYWxpZGF0aW9uID0ge1xuICAgIGZvcm1EYXRhOiBmYWxzZSxcbiAgICBoZWFkZXI6IGZhbHNlLFxuICAgIHF1ZXJ5OiBmYWxzZVxuICB9O1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChzdHJpY3RNb2RlKSkge1xuICAgIGlmICghXy5pc0Jvb2xlYW4oc3RyaWN0TW9kZSkgJiYgIV8uaXNQbGFpbk9iamVjdChzdHJpY3RNb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5zdHJpY3RNb2RlIG11c3QgYmUgYSBib29sZWFuIG9yIGFuIG9iamVjdCcpO1xuICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHN0cmljdE1vZGUpKSB7XG4gICAgICBfLmVhY2goWydmb3JtRGF0YScsICdoZWFkZXInLCAncXVlcnknXSwgZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzdHJpY3RNb2RlW2xvY2F0aW9uXSkpIHtcbiAgICAgICAgICBpZiAoIV8uaXNCb29sZWFuKHN0cmljdE1vZGVbbG9jYXRpb25dKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5zdHJpY3RNb2RlLicgKyBsb2NhdGlvbiArICcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb25bbG9jYXRpb25dID0gc3RyaWN0TW9kZVtsb2NhdGlvbl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHN0cmljdE1vZGUgPT09IHRydWUpIHtcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmZvcm1EYXRhID0gdHJ1ZTtcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9IHRydWU7XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5xdWVyeSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gT25seSBwcm9jZXNzIHRoZSBwYXJhbWV0ZXJzIGlmIG5lY2Vzc2FyeVxuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24uZm9ybURhdGEgPT09IHRydWUgfHxcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9PT0gdHJ1ZSB8fFxuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24ucXVlcnkgPT09IHRydWUpIHtcbiAgICBfLmVhY2goKG1vZGUgPT09ICdyZXEnID8gb3BPclJlcyA6IG9wT3JSZXMub3BlcmF0aW9uT2JqZWN0KS5nZXRQYXJhbWV0ZXJzKCksIGZ1bmN0aW9uIChwYXJhbWV0ZXIpIHtcbiAgICAgIGlmIChfLmlzQXJyYXkoZGVmaW5lZFBhcmFtZXRlcnNbcGFyYW1ldGVyLmluXSkpIHtcbiAgICAgICAgZGVmaW5lZFBhcmFtZXRlcnNbcGFyYW1ldGVyLmluXS5wdXNoKHBhcmFtZXRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpbmcgZm9ybSBkYXRhIG9ubHkgbWF0dGVycyBmb3IgcmVxdWVzdHNcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLmZvcm1EYXRhID09PSB0cnVlICYmIG1vZGUgPT09ICdyZXEnKSB7XG4gICAgZmluZEV4dHJhUGFyYW1ldGVycyhkZWZpbmVkUGFyYW1ldGVycy5mb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNQbGFpbk9iamVjdChyZXFPclJlcy5ib2R5KSA/IE9iamVjdC5rZXlzKHJlcU9yUmVzLmJvZHkpIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybURhdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7XG4gIH1cblxuICAvLyBBbHdheXMgdmFsaWRhdGUgdGhlIGhlYWRlcnMgZm9yIHJlcXVlc3RzIGFuZCByZXNwb25zZXNcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLmhlYWRlciA9PT0gdHJ1ZSkge1xuICAgIGZpbmRFeHRyYVBhcmFtZXRlcnMoZGVmaW5lZFBhcmFtZXRlcnMuaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1BsYWluT2JqZWN0KHJlcU9yUmVzLmhlYWRlcnMpID8gT2JqZWN0LmtleXMocmVxT3JSZXMuaGVhZGVycykgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7XG4gIH1cblxuICAvLyBWYWxpZGF0aW5nIHRoZSBxdWVyeSBzdHJpbmcgb25seSBtYXR0ZXJzIGZvciByZXF1ZXN0c1xuICBpZiAoc3RyaWN0TW9kZVZhbGlkYXRpb24ucXVlcnkgPT09IHRydWUgJiYgbW9kZSA9PT0gJ3JlcScpIHtcbiAgICBmaW5kRXh0cmFQYXJhbWV0ZXJzKGRlZmluZWRQYXJhbWV0ZXJzLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1BsYWluT2JqZWN0KHJlcU9yUmVzLnF1ZXJ5KSA/IE9iamVjdC5rZXlzKHJlcU9yUmVzLnF1ZXJ5KSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMpO1xuICB9XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdzd2F5OmFwaScpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIgcGFyc2VVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZTtcbnZhciBQYXRoID0gcmVxdWlyZSgnLi9wYXRoJyk7XG52YXIgdmFsaWRhdG9ycyA9IHJlcXVpcmUoJy4uL3ZhbGlkYXRpb24vdmFsaWRhdG9ycycpO1xuXG4vKipcbiAqIFRoZSBTd2FnZ2VyIEFQSSBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBkZWZpbml0aW9uXG4gKiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgb3JpZ2luYWwgU3dhZ2dlciBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCAtIFRoZSBTd2FnZ2VyIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlbW90ZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgU3dhZ2dlciBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlcyAtIFRoZSBsb2NhdGlvbiBhbmQgcmVzb2x1dGlvbiBvZiB0aGUgcmVzb2x2ZWQgcmVmZXJlbmNlcyBpbiB0aGUgU3dhZ2dlciBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHBhc3NlZCB0byBzd2FnZ2VyQXBpLmNyZWF0ZVxuICpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBjdXN0b21Gb3JtYXRzIC0gVGhlIGtleS92YWx1ZSBwYWlyIG9mIGN1c3RvbSBmb3JtYXRzICooVGhlIGtleXMgYXJlIHRoZSBmb3JtYXQgbmFtZSBhbmQgdGhlIHZhbHVlc1xuICogYXJlIGFzeW5jIGZ1bmN0aW9ucy4gIFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0c10oaHR0cHM6Ly9naXRodWIuY29tL3phZ2dpbm8vei1zY2hlbWEjcmVnaXN0ZXItYS1jdXN0b20tZm9ybWF0KSkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gY3VzdG9tRm9ybWF0R2VuZXJhdG9ycyAtIFRoZSBrZXkvdmFsdWUgcGFpciBvZiBjdXN0b20gZm9ybWF0IGdlbmVyYXRvcnMgKihUaGUga2V5cyBhcmUgdGhlIGZvcm1hdCBuYW1lIGFuZCB0aGUgdmFsdWVzXG4gKiBhcmUgZnVuY3Rpb25zLiAgU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LkRvY3VtZW50VmFsaWRhdGlvbkZ1bmN0aW9uW119IGN1c3RvbVZhbGlkYXRvcnMgLSBUaGUgYXJyYXkgb2YgY3VzdG9tIHZhbGlkYXRvcnNcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9yaWdpbmFsIFN3YWdnZXIgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQgLSBUaGUgU3dhZ2dlciBkZWZpbml0aW9uIHdpdGggb25seSBpdHMgcmVtb3RlIHJlZmVyZW5jZXMgcmVzb2x2ZWQgKihUaGlzXG4gKiBtZWFucyBhbGwgcmVmZXJlbmNlcyB0byBleHRlcm5hbC9yZW1vdGUgZG9jdW1lbnRzIGFyZSByZXBsYWNlZCB3aXRoIGl0cyBkZXJlZmVyZW5jZWQgdmFsdWUgYnV0IGFsbCBsb2NhbCByZWZlcmVuY2VzXG4gKiBhcmUgbGVmdCB1bnJlc29sdmVkLikqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgU3dhZ2dlciBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqICooVGhpcyBtZWFucyB0aGF0IGFsbCByZXNvbHZhYmxlIHJlZmVyZW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggdGhlaXIgZGVyZWZlcmVuY2VkIHZhbHVlLikqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZG9jdW1lbnRhdGlvblVybCAtIFRoZSBVUkwgdG8gdGhlIFN3YWdnZXIgZG9jdW1lbnRhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRoW119IHBhdGhPYmplY3RzIC0gVGhlIHVuaXF1ZSBgUGF0aGAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yXG4gKiBAcHJvcGVydHkge29iamVjdH0gcmVmZXJlbmNlcyAtIFRoZSByZWZlcmVuY2UgbWV0YWRhdGEgKihTZWUgW0pzb25SZWZzflJlc29sdmVkUmVmRGV0YWlsc10oaHR0cHM6Ly9naXRodWIuY29tL3doaXRsb2NramMvanNvbi1yZWZzL2Jsb2IvbWFzdGVyL2RvY3MvQVBJLm1kI21vZHVsZV9Kc29uUmVmcy4uUmVzb2x2ZWRSZWZEZXRhaWxzKSkqXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb24gLSBUaGUgU3dhZ2dlciBBUEkgdmVyc2lvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBTd2FnZ2VyQXBpIChkZWZpbml0aW9uLCBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcmVmZXJlbmNlcywgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgZGVidWcoJ0NyZWF0aW5nIFN3YWdnZXJBcGkgZnJvbSAlcycsIF8uaXNTdHJpbmcob3B0aW9ucy5kZWZpbml0aW9uKSA/IG9wdGlvbnMuZGVmaW5pdGlvbiA6ICd0aGUgcHJvdmlkZWQgZG9jdW1lbnQnKTtcblxuICAvLyBBc3NpZ24gdGhpcyBzbyBvdGhlciBvYmplY3QgY2FuIHVzZSBpdFxuICB0aGlzLl9kZWJ1ZyA9IGRlYnVnO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuY3VzdG9tRm9ybWF0cyA9IHt9O1xuICB0aGlzLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMgPSB7fTtcbiAgdGhpcy5jdXN0b21WYWxpZGF0b3JzID0gW107XG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkID0gZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZDtcbiAgdGhpcy5kb2N1bWVudGF0aW9uVXJsID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kJztcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgdGhpcy52ZXJzaW9uID0gJzIuMCc7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgU3dhZ2dlciBkZWZpbml0aW9uIHByb3BlcnRpZXNcbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbik7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvcm1hdHNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tRm9ybWF0cywgXy5iaW5kKFN3YWdnZXJBcGkucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0LCB0aGlzKSk7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvcm1hdHNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycywgXy5iaW5kKFN3YWdnZXJBcGkucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yLCB0aGlzKSk7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIHZhbGlkYXRvcnNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgXy5iaW5kKFN3YWdnZXJBcGkucHJvdG90eXBlLnJlZ2lzdGVyVmFsaWRhdG9yLCB0aGlzKSk7XG5cbiAgZGVidWcoJyAgUGF0aHM6Jyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBQYXRoIG9iamVjdHNcbiAgdGhpcy5wYXRoT2JqZWN0cyA9IF8ubWFwKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAocGF0aERlZiwgcGF0aCkge1xuICAgIHJldHVybiBuZXcgUGF0aCh0aGF0LFxuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBfLmdldChkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBbJ3BhdGhzJywgcGF0aF0pLFxuICAgICAgICAgICAgICAgICAgICBwYXRoRGVmLFxuICAgICAgICAgICAgICAgICAgICBbJ3BhdGhzJywgcGF0aF0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcGVyYXRpb24gZm9yIHRoZSBnaXZlbiBwYXRoIGFuZCBvcGVyYXRpb24uXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMgdXNlZCB3aGVuIGByZXFPclBhdGhgIGlzIGFuIGBodHRwLkNsaWVudFJlcXVlc3RgICoob3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgbWV0aG9kYFxuICogICAqIGBvcmlnaW5hbFVybGBcbiAqICAgKiBgdXJsYFxuICpcbiAqICooU2VlOiB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2NsaWVudHJlcXVlc3R9KSpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IGlkT3JQYXRoT3JSZXEgLSBUaGUgU3dhZ2dlciBvcGVhcnRpb24gaWQsIHBhdGggc3RyaW5nIG9yIHRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3JcbiAqIGVxdWl2YWxlbnQpKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXRob2RdIC0gVGhlIFN3YWdnZXIgb3BlcmF0aW9uIG1ldGhvZCBfKG5vdCB1c2VkIHdoZW4gcHJvdmlkaW5nIGFuIG9wZXJhdGlvbiBpZClfXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbn0gVGhlIGBPcGVyYXRpb25gIGZvciB0aGUgcHJvdmlkZWQgb3BlcmF0aW9uIGlkLCBvciBwYXRoIGFuZCBtZXRob2Qgb3IgYHVuZGVmaW5lZGAgaWZcbiAqIHRoZXJlIGlzIG5vIG9wZXJhdGlvbiBmb3IgdGhhdCBvcGVyYXRpb24gaWQsIG9yIHBhdGggYW5kIG1ldGhvZCBjb21iaW5hdGlvblxuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5nZXRPcGVyYXRpb24gPSBmdW5jdGlvbiAoaWRPclBhdGhPclJlcSwgbWV0aG9kKSB7XG4gIHZhciBwYXRoT2JqZWN0O1xuICB2YXIgb3BlcmF0aW9uO1xuXG4gIGlmIChfLmlzT2JqZWN0KGlkT3JQYXRoT3JSZXEpKSB7XG4gICAgbWV0aG9kID0gaWRPclBhdGhPclJlcS5tZXRob2Q7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChtZXRob2QpKSB7XG4gICAgXy5lYWNoKHRoaXMuZ2V0UGF0aHMoKSwgZnVuY3Rpb24gKHBhdGgpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wZXJhdGlvbikpIHtcbiAgICAgICAgb3BlcmF0aW9uID0gcGF0aC5nZXRPcGVyYXRpb24oaWRPclBhdGhPclJlcSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aE9iamVjdCA9IHRoaXMuZ2V0UGF0aChpZE9yUGF0aE9yUmVxKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXRoT2JqZWN0KSkge1xuICAgICAgb3BlcmF0aW9uID0gcGF0aE9iamVjdC5nZXRPcGVyYXRpb24obWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3BlcmF0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBvcGVyYXRpb25zIGZvciB0aGUgcHJvdmlkZWQgcGF0aCBvciBhbGwgb3BlcmF0aW9ucyBpbiB0aGUgQVBJLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgU3dhZ2dlciBwYXRoXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbltdfSBBbGwgYE9wZXJhdGlvbmAgb2JqZWN0cyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggb3IgYWxsIEFQSSBvcGVyYXRpb25zXG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLmdldE9wZXJhdGlvbnMgPSBmdW5jdGlvbiAocGF0aCkge1xuICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICB2YXIgcGF0aE9iamVjdDtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXRoKSkge1xuICAgIF8uZWFjaCh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAocE9iamVjdCkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoLmFwcGx5KG9wZXJhdGlvbnMsIHBPYmplY3QuZ2V0T3BlcmF0aW9ucygpKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoT2JqZWN0ID0gdGhpcy5nZXRQYXRoKHBhdGgpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhdGhPYmplY3QpKSB7XG4gICAgICBvcGVyYXRpb25zID0gcGF0aE9iamVjdC5nZXRPcGVyYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbnM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIG9wZXJhdGlvbnMgZm9yIHRoZSBwcm92aWRlZCB0YWcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFt0YWddIC0gVGhlIFN3YWdnZXIgdGFnXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbltdfSBBbGwgYE9wZXJhdGlvbmAgb2JqZWN0cyBmb3IgdGhlIHByb3ZpZGVkIHRhZ1xuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5nZXRPcGVyYXRpb25zQnlUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBfLnJlZHVjZSh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9ucywgcGF0aE9iamVjdCkge1xuICAgIG9wZXJhdGlvbnMucHVzaC5hcHBseShvcGVyYXRpb25zLCBwYXRoT2JqZWN0LmdldE9wZXJhdGlvbnNCeVRhZyh0YWcpKTtcblxuICAgIHJldHVybiBvcGVyYXRpb25zO1xuICB9LCBbXSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGF0aCBvciByZXF1ZXN0LlxuICpcbiAqICoqTm90ZToqKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHVzZWQgd2hlbiBgcmVxT3JQYXRoYCBpcyBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCAqKG9yIGVxdWl2YWxlbnQpKjpcbiAqXG4gKiAgICogYG9yaWdpbmFsVXJsYFxuICogICAqIGB1cmxgXG4gKlxuICogKihTZWU6IHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX2NsYXNzX2h0dHBfY2xpZW50cmVxdWVzdH0pKlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcGF0aE9yUmVxIC0gVGhlIFN3YWdnZXIgcGF0aCBzdHJpbmcgb3IgdGhlIGh0dHAgY2xpZW50IHJlcXVlc3QgKihvciBlcXVpdmFsZW50KSpcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGF0aH0gVGhlIGNvcnJlc3BvbmRpbmcgYFBhdGhgIG9iamVjdCBmb3IgdGhlIHJlcXVlc3RlZCBwYXRoIG9yIHJlcXVlc3RcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uIChwYXRoT3JSZXEpIHtcbiAgdmFyIGxhc3RJbmRleCA9IC0xO1xuICB2YXIgbmV4dEluZGV4ID0gLTE7XG4gIHZhciBtYXRjaGVzO1xuICB2YXIgdXJsO1xuXG4gIGlmIChfLmlzT2JqZWN0KHBhdGhPclJlcSkpIHtcbiAgICB1cmwgPSBwYXJzZVVybChwYXRoT3JSZXEub3JpZ2luYWxVcmwgfHwgcGF0aE9yUmVxLnVybCkucGF0aG5hbWU7XG5cbiAgICAvLyBGaW5kIGFsbCBtYXRjaGluZyBwYXRoc1xuICAgIG1hdGNoZXMgPSBfLnJlZHVjZSh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAobmV3TWF0Y2hlcywgcGF0aE9iamVjdCwgaW5kZXgpIHtcbiAgICAgIHZhciBpc01hdGNoID0gXy5pc0FycmF5KHBhdGhPYmplY3QucmVnZXhwLmV4ZWModXJsKSk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIG5ld01hdGNoZXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgIHNlZ21lbnRzOiBwYXRoT2JqZWN0LnBhdGguc3BsaXQoJy8nKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3TWF0Y2hlcztcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBUT0RPOiBMb2cgYWxsIG1hdGNoZXNcblxuICAgIHdoaWxlIChtYXRjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIG1hdGNoZXMgPSBfLnJlZHVjZShtYXRjaGVzLCBmdW5jdGlvbiAobmV3TWF0Y2hlcywgbWF0Y2gpIHtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gXy5maW5kSW5kZXgobWF0Y2guc2VnbWVudHMsIGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIF8uc3RhcnRzV2l0aChzZWdtZW50LCAneycpICYmIF8uZW5kc1dpdGgoc2VnbWVudCwgJ30nKTtcbiAgICAgICAgfSwgbGFzdEluZGV4ICsgMSk7XG5cbiAgICAgICAgLy8gQ29tcGxldGUgc3RhdGljIG1hdGNoIHNvIHVzZSBzb21lIHZhbHVlIHRoYXQgY2FuJ3QgYmUgZXhjZWVkZWRcbiAgICAgICAgaWYgKG5ld0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIG5ld0luZGV4ID0gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3SW5kZXggPiBuZXh0SW5kZXgpIHtcbiAgICAgICAgICBuZXh0SW5kZXggPSBuZXdJbmRleDtcbiAgICAgICAgICBuZXdNYXRjaGVzID0gW21hdGNoXTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA9PT0gbmV4dEluZGV4KSB7XG4gICAgICAgICAgbmV3TWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdNYXRjaGVzO1xuICAgICAgfSwgW10pO1xuXG4gICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGhhdmUgdHJpZWQgdG8gZmlsdGVyIHRoZSBtYXRjaGVzIGJ1dCB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcyB0aGF0IGFyZSBpZGVudGljYWwgYW5kIGNhbm5vdFxuICAgICAgLy8gYmUgZmlsdGVyZWQgZnVydGhlci4gIFRoZSBvbmx5IGNob2ljZSBpcyB0byBjaG9vc2UgdGhlIGZpcnN0IG1hdGNoLlxuICAgICAgaWYgKGxhc3RJbmRleCA9PT0gbmV4dEluZGV4KSB7XG4gICAgICAgIG1hdGNoZXMuc3BsaWNlKDEpO1xuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogTG9nIG1hdGNoXG5cbiAgICByZXR1cm4gbWF0Y2hlcy5sZW5ndGggPiAwID8gdGhpcy5wYXRoT2JqZWN0c1ttYXRjaGVzWzBdLmluZGV4XSA6IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXy5maW5kKHRoaXMucGF0aE9iamVjdHMsIGZ1bmN0aW9uIChwYXRoT2JqZWN0KSB7XG4gICAgICByZXR1cm4gcGF0aE9yUmVxID09PSBwYXRoT2JqZWN0LnBhdGg7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgcGF0aCBvYmplY3RzIGZvciB0aGUgU3dhZ2dlciBBUEkuXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhdGhbXX0gVGhlIGBQYXRoYCBvYmplY3RzXG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLmdldFBhdGhzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wYXRoT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRvciAtIFRoZSBmb3JtYXQgdmFsaWRhdG9yICooU2VlIFtaU2NoZW1hIEN1c3RvbSBGb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS96YWdnaW5vL3otc2NoZW1hI3JlZ2lzdGVyLWEtY3VzdG9tLWZvcm1hdCkpKlxuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5yZWdpc3RlckZvcm1hdCA9IGZ1bmN0aW9uIChuYW1lLCB2YWxpZGF0b3IpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNTdHJpbmcobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc0Z1bmN0aW9uKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB0aGlzLmN1c3RvbUZvcm1hdHNbbmFtZV0gPSB2YWxpZGF0b3I7XG5cbiAgaGVscGVycy5yZWdpc3RlckZvcm1hdChuYW1lLCB2YWxpZGF0b3IpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gZm9ybWF0R2VuZXJhdG9yIC0gVGhlIGZvcm1hdCBnZW5lcmF0b3IgKihTZWUgW2pzb24tc2NoZW1hLW1vY2tlciBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vanNvbi1zY2hlbWEtZmFrZXIvanNvbi1zY2hlbWEtZmFrZXIjY3VzdG9tLWZvcm1hdHMpKSpcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAobmFtZSwgZm9ybWF0R2VuZXJhdG9yKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChmb3JtYXRHZW5lcmF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9ybWF0R2VuZXJhdG9yIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNGdW5jdGlvbihmb3JtYXRHZW5lcmF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9ybWF0R2VuZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdGhpcy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzW25hbWVdID0gZm9ybWF0R2VuZXJhdG9yO1xuXG4gIGhlbHBlcnMucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IobmFtZSwgZm9ybWF0R2VuZXJhdG9yKTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKi9cblN3YWdnZXJBcGkucHJvdG90eXBlLnVucmVnaXN0ZXJGb3JtYXQgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIGRlbGV0ZSB0aGlzLmN1c3RvbUZvcm1hdHNbbmFtZV07XG5cbiAgICBoZWxwZXJzLnVucmVnaXN0ZXJGb3JtYXQobmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdCBnZW5lcmF0b3JcbiAqL1xuU3dhZ2dlckFwaS5wcm90b3R5cGUudW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmIChfLmlzU3RyaW5nKG5hbWUpKSB7XG4gICAgZGVsZXRlIHRoaXMuY3VzdG9tRm9ybWF0R2VuZXJhdG9yc1tuYW1lXTtcblxuICAgIGhlbHBlcnMudW5yZWdpc3RlckZvcm1hdEdlbmVyYXRvcihuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSB2YWxpZGF0b3IuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5Eb2N1bWVudFZhbGlkYXRpb25GdW5jdGlvbn0gdmFsaWRhdG9yIC0gVGhlIHZhbGlkYXRvclxuICpcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgdGhlIHZhbGlkYXRvciBpcyBub3QgYSBmdW5jdGlvblxuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS5yZWdpc3RlclZhbGlkYXRvciA9IGZ1bmN0aW9uICh2YWxpZGF0b3IpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQodmFsaWRhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbGlkYXRvciBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzRnVuY3Rpb24odmFsaWRhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbGlkYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHRoaXMuY3VzdG9tVmFsaWRhdG9ycy5wdXNoKHZhbGlkYXRvcik7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIFN3YWdnZXIgQVBJIGRvY3VtZW50KHMpLlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5Td2FnZ2VyQXBpLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICAvLyBWYWxpZGF0ZSB0aGUgZG9jdW1lbnQgc3RydWN0dXJhbGx5XG4gIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnModGhpcywgdW5kZWZpbmVkLCBbdmFsaWRhdG9ycy5qc29uU2NoZW1hVmFsaWRhdG9yXSwgcmVzdWx0cyk7XG5cbiAgLy8gUGVyZm9ybSByZW1haW5pbmcgdmFsaWRhdGlvbiBvbmx5IGlmIHRoZSBkb2N1bWVudCBpcyBzdHJ1Y3R1cmFsbHkgdmFsaWRcbiAgaWYgKHJlc3VsdHMuZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFJ1biBwbHVnaW4gdmFsaWRhdG9yc1xuICAgIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnModGhpcywgdW5kZWZpbmVkLCB2YWxpZGF0b3JzLnNlbWFudGljVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgICAvLyBSdW4gY3VzdG9tIHZhbGlkYXRvcnNcbiAgICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHRoaXMsIHVuZGVmaW5lZCwgdGhpcy5jdXN0b21WYWxpZGF0b3JzLCByZXN1bHRzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTd2FnZ2VyQXBpO1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgSnNvblJlZnMgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snSnNvblJlZnMnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0pzb25SZWZzJ10gOiBudWxsKTtcbnZhciBQYXJhbWV0ZXIgPSByZXF1aXJlKCcuL3BhcmFtZXRlcicpO1xudmFyIFJlc3BvbnNlID0gcmVxdWlyZSgnLi9yZXNwb25zZScpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG5cbi8qKlxuICogVGhlIFN3YWdnZXIgT3BlcmF0aW9uIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGRlZmluaXRpb25cbiAqICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIFBhdGggb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBtZXRob2RcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uICooVGhlIHJhdyBvcGVyYXRpb24gZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiAqKFRoZSByYXcgb3BlcmF0aW9uIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB3ZXJlIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIGZvciB0aGlzIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIGBQYXRoYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IHBhcmFtZXRlck9iamVjdHMgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IHNlY3VyaXR5RGVmaW5pdGlvbnMgLSBUaGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGlzIG9wZXJhdGlvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBPcGVyYXRpb24gKHBhdGhPYmplY3QsIG1ldGhvZCwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgdmFyIHNlZW5QYXJhbWV0ZXJzID0gW107XG4gIHZhciB0aGF0ID0gdGhpcztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmNvbnN1bWVzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuY29uc3VtZXMgfHwgcGF0aE9iamVjdC5hcGkuY29uc3VtZXMgfHwgW107XG4gIHRoaXMuZGVmaW5pdGlvbiA9IF8uY2xvbmVEZWVwKGRlZmluaXRpb24pOyAvLyBDbG9uZSBzbyB3ZSBkbyBub3QgYWx0ZXIgdGhlIG9yaWdpbmFsXG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBfLmNsb25lRGVlcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7IC8vIENsb25lIHNvIHdlIGRvIG5vdCBhbHRlciB0aGUgb3JpZ2luYWxcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IFtdOyAvLyBDb21wdXRlZCBiZWxvd1xuICB0aGlzLnBhdGhPYmplY3QgPSBwYXRoT2JqZWN0O1xuICB0aGlzLnBhdGhUb0RlZmluaXRpb24gPSBwYXRoVG9EZWZpbml0aW9uO1xuICB0aGlzLnByb2R1Y2VzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucHJvZHVjZXMgfHwgcGF0aE9iamVjdC5hcGkucHJvZHVjZXMgfHwgW107XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiBwcm9wZXJ0aWVzXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICB0aGlzLl9kZWJ1ZyA9IHRoaXMucGF0aE9iamVjdC5hcGkuX2RlYnVnO1xuXG4gIC8vIEFkZCB0aGUgUGFyYW1ldGVyIG9iamVjdHMgZnJvbSB0aGUgUGF0aCBvYmplY3QgdGhhdCB3ZXJlIG5vdCByZWRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKHBhdGhPYmplY3QucGFyYW1ldGVyT2JqZWN0cywgZnVuY3Rpb24gKHBhcmFtZXRlck9iamVjdCkge1xuICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyT2JqZWN0LmluICsgJzonICsgcGFyYW1ldGVyT2JqZWN0Lm5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdDtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgJXMgYXQgJXMnLCB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnB0cik7XG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgQ29uc3VtZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMuY29uc3VtZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBQYXJhbWV0ZXJzOicpO1xuXG4gIC8vIENyZWF0ZSBQYXJhbWV0ZXIgb2JqZWN0cyBmcm9tIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgXy5lYWNoKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIga2V5ID0gcGFyYW1EZWYuaW4gKyAnOicgKyBwYXJhbURlZi5uYW1lO1xuICAgIHZhciBzZWVuSW5kZXggPSBzZWVuUGFyYW1ldGVycy5pbmRleE9mKGtleSk7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuICAgIHZhciBwYXJhbWV0ZXJPYmplY3QgPSBuZXcgUGFyYW1ldGVyKHRoYXQsIF8uZ2V0KHBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSwgcGFyYW1EZWYsIHBQYXRoKTtcblxuICAgIGlmIChzZWVuSW5kZXggPiAtMSkge1xuICAgICAgdGhhdC5wYXJhbWV0ZXJPYmplY3RzW3NlZW5JbmRleF0gPSBwYXJhbWV0ZXJPYmplY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQucGFyYW1ldGVyT2JqZWN0cy5wdXNoKHBhcmFtZXRlck9iamVjdCk7XG5cbiAgICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgUHJvZHVjZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMucHJvZHVjZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBSZXNwb25zZXM6Jyk7XG5cbiAgLy8gQ3JlYXRlIHJlc3BvbnNlIG9iamVjdHMgZnJvbSByZXNwb25zZXMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgdGhpcy5yZXNwb25zZU9iamVjdHMgPSBfLm1hcCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgZnVuY3Rpb24gKHJlc3BvbnNlRGVmLCBjb2RlKSB7XG4gICAgdmFyIHJQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydyZXNwb25zZXMnLCBjb2RlXSlcblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmdldCh0aGF0LnBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHJQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRGVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgclBhdGgpO1xuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgICAgIFNlY3VyaXR5OicpO1xuXG4gIC8vIEJyaW5nIGluIHRoZSBzZWN1cml0eSBkZWZpbml0aW9ucyBmb3IgZWFzaWVyIGFjY2Vzc1xuXG4gIC8vIE92ZXJyaWRlIGdsb2JhbCBzZWN1cml0eSB3aXRoIGxvY2FsbHkgZGVmaW5lZFxuICB2YXIgc2VjdXJpdHkgPSB0aGlzLnNlY3VyaXR5IHx8IHBhdGhPYmplY3QuYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5O1xuXG4gIHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyA9IF8ucmVkdWNlKHNlY3VyaXR5LCBmdW5jdGlvbiAoZGVmcywgcmVxcykge1xuICAgIF8uZWFjaChyZXFzLCBmdW5jdGlvbiAocmVxLCBuYW1lKSB7XG4gICAgICB2YXIgZGVmID0gcGF0aE9iamVjdC5hcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2VjdXJpdHlEZWZpbml0aW9ucyA/XG4gICAgICAgICAgICBwYXRoT2JqZWN0LmFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eURlZmluaXRpb25zW25hbWVdIDpcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGRlZikpIHtcbiAgICAgICAgZGVmc1tuYW1lXSA9IGRlZjtcbiAgICAgIH1cblxuICAgICAgdGhhdC5fZGVidWcoJyAgICAgICAgICAgICVzICh0eXBlOiAlcyknLCBuYW1lLCBfLmlzVW5kZWZpbmVkKGRlZikgPyAnbWlzc2luZyc6IGRlZi50eXBlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkZWZzO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyYW1ldGVyIHdpdGggdGhlIHByb3ZpZGVkIG5hbWUgYW5kIGxvY2F0aW9uIHdoZW4gcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xvY2F0aW9uXSAtIFRoZSBsb2NhdGlvbiAqKGBpbmApKiBvZiB0aGUgcGFyYW1ldGVyICooVXNlZCBmb3IgZGlzYW1iaWd1YXRpb24pKlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJ9IFRoZSBgUGFyYW1ldGVyYCBtYXRjaGluZyB0aGUgbG9jYXRpb24gYW5kIG5hbWUgY29tYmluYXRpb24gb3IgYHVuZGVmaW5lZGAgaWYgdGhlcmVcbiAqIGlzIG5vIG1hdGNoXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUuZ2V0UGFyYW1ldGVyID0gZnVuY3Rpb24gKG5hbWUsIGxvY2F0aW9uKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5wYXJhbWV0ZXJPYmplY3RzLCBmdW5jdGlvbiAocGFyYW1ldGVyT2JqZWN0KSB7XG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdC5uYW1lID09PSBuYW1lICYmIChfLmlzVW5kZWZpbmVkKGxvY2F0aW9uKSA/IHRydWUgOiBwYXJhbWV0ZXJPYmplY3QuaW4gPT09IGxvY2F0aW9uKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBBbGwgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhlIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cyBjb2RlIG9yIHRoZSBkZWZhdWx0IHJlc3BvbnNlICooaWYgYXZhaWxhYmxlKSogaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtzdGF0dXNDb2RlPSdkZWZhdWx0J10gLSBUaGUgc3RhdHVzIGNvZGVcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUmVzcG9uc2V9IFRoZSBgUmVzcG9uc2VgIG9yIGB1bmRlZmluZWRgIGlmIG9uZSBjYW5ub3QgYmUgZm91bmRcbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRSZXNwb25zZSA9IGZ1bmN0aW9uIChzdGF0dXNDb2RlKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHN0YXR1c0NvZGUpKSB7XG4gICAgc3RhdHVzQ29kZSA9ICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChfLmlzTnVtYmVyKHN0YXR1c0NvZGUpKSB7XG4gICAgc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiBfLmZpbmQodGhpcy5nZXRSZXNwb25zZXMoKSwgZnVuY3Rpb24gKHJlc3BvbnNlT2JqZWN0KSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0LnN0YXR1c0NvZGUgPT09IHN0YXR1c0NvZGU7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCByZXNwb25zZXMgZm9yIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlJlc3BvbnNlW119IEFsbCBgUmVzcG9uc2VgIG9iamVjdHMgZm9yIHRoZSBvcGVyYXRpb25cbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRSZXNwb25zZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlc3BvbnNlT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY29tcG9zaXRlIHNlY3VyaXR5IGRlZmluaXRpb25zIGZvciB0aGlzIG9wZXJhdGlvbi5cbiAqXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgQVBJIGFuZCBgdGhpcy5zZWN1cml0eWAgaXMgdGhhdCBgdGhpcy5zZWN1cml0eWAgaXMgdGhlIHJhdyBgc2VjdXJpdHlgIHZhbHVlIGZvciB0aGVcbiAqIG9wZXJhdGlvbiB3aGVyZSBhcyB0aGlzIEFQSSB3aWxsIHJldHVybiB0aGUgZ2xvYmFsIGBzZWN1cml0eWAgdmFsdWUgd2hlbiBhdmFpbGFibGUgYW5kIHRoaXMgb3BlcmF0aW9uJ3Mgc2VjdXJpdHlcbiAqIGlzIHVuZGVmaW5lZC5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0W119IFRoZSBzZWN1cml0eSBmb3IgdGhpcyBvcGVyYXRpb25cbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRTZWN1cml0eSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2VjdXJpdHkgfHwgdGhpcy5wYXRoT2JqZWN0LmFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlcXVlc3QuXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIGByZXFgIHByb3BlcnRpZXMgdXNlZCAqKHJlcSBzaG91bGQgYmUgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgb3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgYm9keWA6IFVzZWQgZm9yIGBib2R5YCBhbmQgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzXG4gKiAgICogYGZpbGVzYDogVXNlZCBmb3IgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzIHdob3NlIGB0eXBlYCBpcyBgZmlsZWBcbiAqICAgKiBgaGVhZGVyc2A6IFVzZWQgZm9yIGBoZWFkZXJgIHBhcmFtZXRlcnMgYW5kIGNvbnN1bWVzXG4gKiAgICogYG9yaWdpbmFsVXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqICAgKiBgcXVlcnlgOiBVc2VkIGZvciBgcXVlcnlgIHBhcmFtZXRlcnNcbiAqICAgKiBgdXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqXG4gKiBGb3IgYHBhdGhgIHBhcmFtZXRlcnMsIHdlIHdpbGwgdXNlIHRoZSBvcGVyYXRpb24ncyBgcmVnZXhwYCBwcm9wZXJ0eSB0byBwYXJzZSBvdXQgcGF0aCBwYXJhbWV0ZXJzIHVzaW5nIHRoZVxuICogYG9yaWdpbmFsVXJsYCBvciBgdXJsYCBwcm9wZXJ0eS5cbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcSAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlJlcXVlc3RWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLnZhbGlkYXRlUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXEsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgQ29udGVudC1UeXBlIGlmIHRoZXJlIGlzIGEgc2V0IG9mIGV4cGVjdGVkIGNvbnN1bWVzIGFuZCB0aGVyZSBpcyBhIGJvZHlcbiAgaWYgKHRoaXMuY29uc3VtZXMubGVuZ3RoID4gMCAmJiAhXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICBoZWxwZXJzLnZhbGlkYXRlQ29udGVudFR5cGUoaGVscGVycy5nZXRDb250ZW50VHlwZShyZXEuaGVhZGVycyksIHRoaXMuY29uc3VtZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgXy5lYWNoKHRoaXMuZ2V0UGFyYW1ldGVycygpLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICB2YXIgcGFyYW1WYWx1ZSA9IHBhcmFtLmdldFZhbHVlKHJlcSk7XG4gICAgdmFyIHZFcnI7XG5cbiAgICBpZiAoIXBhcmFtVmFsdWUudmFsaWQpIHtcbiAgICAgIHZFcnIgPSB7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFUVVFU1RfUEFSQU1FVEVSJyxcbiAgICAgICAgZXJyb3JzOiBwYXJhbVZhbHVlLmVycm9yLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogcGFyYW1WYWx1ZS5lcnJvci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbjogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QuaW4sXG4gICAgICAgIC8vIFJlcG9ydCB0aGUgYWN0dWFsIGVycm9yIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLiAgT3RoZXJ3aXNlLCByZXBvcnQgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBwYXJhbWV0ZXIgKCcgKyBwYXJhbS5uYW1lICsgJyk6ICcgKyAoKHBhcmFtVmFsdWUuZXJyb3JzIHx8IFtdKS5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlKSxcbiAgICAgICAgbmFtZTogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QubmFtZSxcbiAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICB9O1xuXG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHZFcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgc3RyaWN0IG1vZGVcbiAgaGVscGVycy52YWxpZGF0ZVN0cmljdE1vZGUodGhpcywgcmVxLCBvcHRpb25zLnN0cmljdE1vZGUsIHJlc3VsdHMpO1xuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIHZhbGlkYXRvcnNcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyhyZXEsIHRoaXMsIG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcyAtIFRoZSByZXNwb25zZSBvciByZXNwb25zZSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHttb2R1bGU6c3dheS5SZXNwb25zZVZhbGlkYXRpb25PcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgdmFsaWRhdGlvbiBvcHRpb25zXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHJlYWxTdGF0dXNDb2RlO1xuICB2YXIgcmVzcG9uc2U7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIHJlYWxTdGF0dXNDb2RlID0gcmVzLnN0YXR1c0NvZGUgfHwgJ2RlZmF1bHQnO1xuICByZXNwb25zZSA9IHRoaXMuZ2V0UmVzcG9uc2UocmVhbFN0YXR1c0NvZGUpO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlc3BvbnNlKSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cywgdXNlIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlzIG9uZSAoVGhpcyBpcyBTd2FnZ2VyJ3MgYXBwcm9hY2gpXG4gICAgcmVzcG9uc2UgPSB0aGlzLmdldFJlc3BvbnNlKCdkZWZhdWx0Jyk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9DT0RFJyxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYSBkZWZpbmVkIFxcJycgK1xuICAgICAgICAgICAgICAgICAgIChyZWFsU3RhdHVzQ29kZSA9PT0gJ2RlZmF1bHQnID9cbiAgICAgICAgICAgICAgICAgICAgcmVhbFN0YXR1c0NvZGUgOlxuICAgICAgICAgICAgICAgICAgICByZWFsU3RhdHVzQ29kZSArICdcXCcgb3IgXFwnZGVmYXVsdCcpICsgJ1xcJyByZXNwb25zZSBjb2RlJyxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICByZXN1bHRzID0gcmVzcG9uc2UudmFsaWRhdGVSZXNwb25zZShyZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9wZXJhdGlvbjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIgSnNvblJlZnMgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snSnNvblJlZnMnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0pzb25SZWZzJ10gOiBudWxsKTtcblxuLyoqXG4gKiBPYmplY3QgcmVwcmVzZW50aW5nIGEgcGFyYW1ldGVyIHZhbHVlLlxuICpcbiAqICoqTm90ZToqKiBEbyBub3QgdXNlIGRpcmVjdGx5LlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyfSBwYXJhbWV0ZXJPYmplY3QgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0XG4gKiBAcGFyYW0geyp9IHJhdyAtIFRoZSBvcmlnaW5hbC9yYXcgdmFsdWVcbiAqXG4gKiBAcHJvcGVydHkge0Vycm9yfSBlcnJvciAtIFRoZSBlcnJvcihzKSBlbmNvdW50ZXJlZCBkdXJpbmcgcHJvY2Vzc2luZy92YWxpZGF0aW5nIHRoZSBwYXJhbWV0ZXIgdmFsdWVcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyfSBwYXJhbWV0ZXJPYmplY3QgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0XG4gKiBAcHJvcGVydHkgeyp9IHJhdyAtIFRoZSBvcmlnaW5hbCBwYXJhbWV0ZXIgdmFsdWUgKihEb2VzIG5vdCB0YWtlIGRlZmF1bHQgdmFsdWVzIGludG8gYWNjb3VudCkqXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZhbGlkIC0gV2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgYmFzZWQgb24gaXRzIEpTT04gU2NoZW1hXG4gKiBAcHJvcGVydHkgeyp9IHZhbHVlIC0gVGhlIHByb2Nlc3NlZCB2YWx1ZSAqKFRha2VzIGRlZmF1bHQgdmFsdWVzIGludG8gYWNjb3VudCBhbmQgZG9lcyB0eXBlIGNvZXJjaW9uIHdoZW4gbmVjZXNzYXJ5XG4gKiBhbmQgcG9zc2libGUpKi4gIFRoaXMgY2FuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXZlbnQgdGhhdCBwcm9jZXNzaW5nIHRoZSB2YWx1ZSBpcyBpbXBvc3NpYmxlXG4gKiAqKG1pc3Npbmcgc2NoZW1hIHR5cGUpKiBvciBgdW5kZWZpbmVkYCBpZiBwcm9jZXNzaW5nIHRoZSB2YWx1ZSBmYWlsZWQgKihpbnZhbGlkIHR5cGVzLCBldGMuKSouXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhcmFtZXRlclZhbHVlIChwYXJhbWV0ZXJPYmplY3QsIHJhdykge1xuICB2YXIgcFBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwYXJhbWV0ZXJPYmplY3QucHRyKTtcbiAgdmFyIHByb2Nlc3NlZCA9IGZhbHNlO1xuICB2YXIgc2NoZW1hID0gcGFyYW1ldGVyT2JqZWN0LnNjaGVtYTtcbiAgdmFyIGVycm9yO1xuICB2YXIgaXNWYWxpZDtcbiAgdmFyIHByb2Nlc3NlZFZhbHVlO1xuXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0ID0gcGFyYW1ldGVyT2JqZWN0O1xuICB0aGlzLnJhdyA9IHJhdztcblxuICAvLyBVc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5IGZvciAndmFsdWUnIHRvIGFsbG93IGZvciBsYXp5IHByb2Nlc3Npbmcgb2YgdGhlIHJhdyB2YWx1ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgZXJyb3I6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQWx3YXlzIGNhbGwgdGhpcy52YWxpZCB0byBlbnN1cmUgd2UgdmFsaWRhdGUgdGhlIHZhbHVlIHByaW9yIHRvIHJldHVybmluZyBhbnkgdmFsdWVzXG4gICAgICAgIGlmICh0aGlzLnZhbGlkID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICB3YXJuaW5nczogW11cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNraXBWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgdmFyIHZFcnJvcjtcblxuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChpc1ZhbGlkKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGVycm9yKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWRuZXNzXG4gICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJPYmplY3QucmVxdWlyZWQgPT09IHRydWUgJiYgXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2RXJyb3IgPSBuZXcgRXJyb3IoJ1ZhbHVlIGlzIHJlcXVpcmVkIGJ1dCB3YXMgbm90IHByb3ZpZGVkJyk7XG5cbiAgICAgICAgICAgICAgICB2RXJyb3IuY29kZSA9ICdSRVFVSVJFRCc7XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBDYXNlcyB3ZSBkbyBub3Qgd2FudCB0byBkbyBzY2hlbWEgdmFsaWRhdGlvbjpcbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgZXhwbGljaXRseSBhbGxvd3MgZW1wdHkgdmFsdWVzIGFuZCB0aGUgdmFsdWUgaXMgZW1wdHlcbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgYWxsb3cgb3B0aW9uYWwgdmFsdWVzIGFuZCB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGRlZmluZXMgYSBmaWxlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBpcyBmb3IgYSBzdHJpbmcgdHlwZSB3aXRoIGRhdGUvZGF0ZS10aW1lIGZvcm1hdCBhbmQgdGhlIHZhbHVlIGlzIGEgZGF0ZVxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBpcyBmb3IgYSBzdHJpbmcgdHlwZSBhbmQgdGhlIHZhbHVlIGlzIGEgQnVmZmVyXG4gICAgICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZChwYXJhbWV0ZXJPYmplY3QucmVxdWlyZWQpIHx8IHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCA9PT0gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuYWxsb3dFbXB0eVZhbHVlID09PSB0cnVlICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJPYmplY3QudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChbJ2RhdGUnLCAnZGF0ZS10aW1lJ10uaW5kZXhPZihzY2hlbWEuZm9ybWF0KSA+IC0xICYmIF8uaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnICYmIF8uaXNGdW5jdGlvbih2YWx1ZS5yZWFkVUludDgpKSB7XG4gICAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFza2lwVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGFnYWluc3QgSlNPTiBTY2hlbWFcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKSwgcGFyYW1ldGVyT2JqZWN0LnNjaGVtYSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgZmFpbGVkIEpTT04gU2NoZW1hIHZhbGlkYXRpb24nKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ1NDSEVNQV9WQUxJREFUSU9OX0ZBSUxFRCc7XG4gICAgICAgICAgICAgICAgdkVycm9yLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBlcnIuZmFpbGVkVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIGVyci5wYXRoID0gcFBhdGg7XG5cbiAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZFcnJvcjtcblxuICAgICAgICBpZiAoIXByb2Nlc3NlZCkge1xuICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHJhdztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ29udmVydC9Db2VyY2UgdGhlIHJhdyB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgZW1wdGluZXNzIChwcmlvciB0byBjb2VyY2lvbiBmb3IgYmV0dGVyIGVycm9yIGhhbmRsaW5nKVxuICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyT2JqZWN0LmFsbG93RW1wdHlWYWx1ZSA9PT0gZmFsc2UgJiYgcmF3ID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgaXMgbm90IGFsbG93ZWQgdG8gYmUgZW1wdHknKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ0VNUFRZX05PVF9BTExPV0VEJztcblxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgZXJyb3IgaXMgbm90IGEgY29lcmNpb24gZXJyb3IsIHRoZSB2YWx1ZSBpcyBzZXQgdG8gcmF3XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSByYXc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgdkVycm9yO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBoZWxwZXJzLmNvbnZlcnRWYWx1ZShzY2hlbWEsIHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uRm9ybWF0OiBwYXJhbWV0ZXJPYmplY3QuY29sbGVjdGlvbkZvcm1hdFxuICAgICAgICAgICAgICB9LCByYXcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBzdGlsbCBubyB2YWx1ZSBhbmQgdGhlcmUgYXJlIG5vIGVycm9ycywgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIGlmIGF2YWlsYWJsZSAobm8gY29lcmNpb24pXG4gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChwcm9jZXNzZWRWYWx1ZSkgJiYgXy5pc1VuZGVmaW5lZChlcnJvcikpIHtcbiAgICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IF8ucmVkdWNlKHNjaGVtYS5pdGVtcywgZnVuY3Rpb24gKGl0ZW1zLCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbS5kZWZhdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGhhdmUgYSBkZWZhdWx0IHZhbHVlIHJlc2V0IHRoZSBwcm9jZXNzZWQgdmFsdWUgdG8gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgIGlmIChfLmV2ZXJ5KHByb2Nlc3NlZFZhbHVlLCBfLmlzVW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gW3NjaGVtYS5pdGVtcy5kZWZhdWx0XTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJvY2Vzc2VkIHZhbHVlIGlzIHN0aWxsIHVuZGVmaW5lZCBhbmQgaWYgdGhlcmUncyBhIGdsb2JhbCBkZWZhdWx0IHNldFxuICAgICAgICAgICAgICAvLyBmb3IgdGhlIGFycmF5LCB3ZSB1c2UgaXRcbiAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQocHJvY2Vzc2VkVmFsdWUpICYmICFfLmlzVW5kZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gc2NoZW1hLmRlZmF1bHQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyYW1ldGVyVmFsdWU7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIEpzb25SZWZzID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ0pzb25SZWZzJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydKc29uUmVmcyddIDogbnVsbCk7XG52YXIgUGFyYW1ldGVyVmFsdWUgPSByZXF1aXJlKCcuL3BhcmFtZXRlci12YWx1ZScpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgndXJsJykucGFyc2U7XG5cbi8qKlxuICogVGhlIFN3YWdnZXIgUGFyYW1ldGVyIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGRlZmluaXRpb25cbiAqIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5Lk9wZXJhdGlvbnxtb2R1bGU6c3dheS5QYXRofSBvcE9yUGF0aE9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvciBgUGF0aGAgb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiAqKFRoZSByYXcgcGFyYW1ldGVyIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gKihUaGUgcmF3IHBhcmFtZXRlciBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlc1xuICogd2VyZSByZXNvbHZlZCkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGFyYW1ldGVyIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3QgdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvICooQ2FuIGJlXG4gKiBgdW5kZWZpbmVkYCBmb3IgcGF0aC1sZXZlbCBwYXJhbWV0ZXJzKSpcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGF0aH0gcGF0aE9iamVjdCAtIFRoZSBgUGF0aGAgb2JqZWN0IHRoZSBwYXJhbWV0ZXIgYmVsb25ncyB0b1xuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gcGF0aFRvRGVmaW5pdGlvbiAtIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge29iamVjdH0gc2NoZW1hIC0gVGhlIEpTT04gU2NoZW1hIGZvciB0aGUgcGFyYW1ldGVyICooRm9yIG5vbi1ib2R5IHBhcmFtZXRlcnMsIHRoaXMgaXMgYSBjb21wdXRlZCB2YWx1ZSkqXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhcmFtZXRlciAob3BPclBhdGhPYmplY3QsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG5cbiAgaWYgKF8uaGFzKG9wT3JQYXRoT2JqZWN0LCAnY29uc3VtZXMnKSkge1xuICAgIHRoaXMub3BlcmF0aW9uT2JqZWN0ID0gb3BPclBhdGhPYmplY3Q7XG4gICAgdGhpcy5wYXRoT2JqZWN0ID0gb3BPclBhdGhPYmplY3QucGF0aE9iamVjdDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLm9wZXJhdGlvbk9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnBhdGhPYmplY3QgPSBvcE9yUGF0aE9iamVjdDtcbiAgfVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiBwcm9wZXJ0aWVzXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnNjaGVtYSkpIHtcbiAgICB0aGlzLnNjaGVtYSA9IGhlbHBlcnMuY29tcHV0ZVBhcmFtZXRlclNjaGVtYShkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG4gIH1cblxuICB0aGlzLnBhdGhPYmplY3QuYXBpLl9kZWJ1ZygnICAgICAgICAgICVzJXMgKGluOiAlcykgYXQgJXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHRoaXMub3BlcmF0aW9uT2JqZWN0KSA/ICcnIDogJyAgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHRyKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc2FtcGxlIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGJhc2VkIG9uIGl0cyBzY2hlbWE7XG4gKlxuICogQHJldHVybnMgeyp9IFRoZSBzYW1wbGUgdmFsdWVcbiAqL1xuUGFyYW1ldGVyLnByb3RvdHlwZS5nZXRTYW1wbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoZWxwZXJzLmdldFNhbXBsZSh0aGlzLnNjaGVtYSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhcmFtZXRlciB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0LlxuICpcbiAqICoqTm90ZToqKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBgcmVxYCBwcm9wZXJ0aWVzIHVzZWQgKihyZXEgc2hvdWxkIGJlIGFuIGBodHRwLkNsaWVudFJlcXVlc3RgIG9yIGVxdWl2YWxlbnQpKjpcbiAqXG4gKiAgICogYGJvZHlgOiBVc2VkIGZvciBgYm9keWAgYW5kIGBmb3JtRGF0YWAgcGFyYW1ldGVyc1xuICogICAqIGBmaWxlc2A6IFVzZWQgZm9yIGBmb3JtRGF0YWAgcGFyYW1ldGVycyB3aG9zZSBgdHlwZWAgaXMgYGZpbGVgXG4gKiAgICogYGhlYWRlcnNgOiBVc2VkIGZvciBgaGVhZGVyYCBwYXJhbWV0ZXJzXG4gKiAgICogYG9yaWdpbmFsVXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqICAgKiBgcXVlcnlgOiBVc2VkIGZvciBgcXVlcnlgIHBhcmFtZXRlcnNcbiAqICAgKiBgdXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqXG4gKiBGb3IgYHBhdGhgIHBhcmFtZXRlcnMsIHdlIHdpbGwgdXNlIHRoZSBvcGVyYXRpb24ncyBgcmVnZXhwYCBwcm9wZXJ0eSB0byBwYXJzZSBvdXQgcGF0aCBwYXJhbWV0ZXJzIHVzaW5nIHRoZVxuICogYG9yaWdpbmFsVXJsYCBvciBgdXJsYCBwcm9wZXJ0eS5cbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcSAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlclZhbHVlfSBUaGUgcGFyYW1ldGVyIHZhbHVlIG9iamVjdFxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYGluYCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyJ3Mgc2NoZW1hIGlzIG5vdCB2YWxpZCBvciBpZiB0aGUgYHJlcWAgcHJvcGVydHkgdG8gcmV0cmlldmUgdGhlXG4gKiBwYXJhbWV0ZXIgaXMgbWlzc2luZ1xuICovXG5QYXJhbWV0ZXIucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKHJlcSkge1xuICBpZiAoXy5pc1VuZGVmaW5lZChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKGhlbHBlcnMucGFyYW1ldGVyTG9jYXRpb25zLmluZGV4T2YodGhpcy5pbikgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFxcJ2luXFwnIHZhbHVlOiAnICsgdGhpcy5pbik7XG4gIH1cblxuICAvLyBXZSBkbyBub3QgbmVlZCB0byBleHBsaWNpdGx5IGNoZWNrIHRoZSB0eXBlIG9mIHJlcVxuXG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIHR5cGUgPSB0aGlzLnNjaGVtYS50eXBlO1xuICB2YXIgcGF0aE1hdGNoO1xuICB2YXIgdmFsdWU7XG5cbiAgc3dpdGNoICh0aGlzLmluKSB7XG4gIGNhc2UgJ2JvZHknOlxuICAgIHZhbHVlID0gcmVxLmJvZHk7XG4gICAgYnJlYWs7XG4gIGNhc2UgJ2Zvcm1EYXRhJzpcbiAgICAvLyBGb3IgZm9ybURhdGEsIGVpdGhlciB0aGUgdmFsdWUgaXMgYSBmaWxlIG9yIGEgcHJvcGVydHkgb2YgcmVxLmJvZHkuICByZXEuYm9keSBhcyBhIHdob2xlIGNhbiBuZXZlciBiZSB0aGVcbiAgICAvLyB2YWx1ZSBzaW5jZSB0aGUgSlNPTiBTY2hlbWEgZm9yIGZvcm1EYXRhIHBhcmFtZXRlcnMgZG9lcyBub3QgYWxsb3cgYSB0eXBlIG9mICdvYmplY3QnLlxuICAgIGlmICh0eXBlID09PSAnZmlsZScpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlcS5maWxlcykpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5maWxlcyBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdmb3JtRGF0YVxcJyBwYXJhbWV0ZXJzIG9mIHR5cGUgXFwnZmlsZVxcJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gcmVxLmZpbGVzW3RoaXMubmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlcS5ib2R5KSkge1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLmJvZHkgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwnZm9ybURhdGFcXCcgcGFyYW1ldGVycycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHJlcS5ib2R5W3RoaXMubmFtZV07XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlICdoZWFkZXInOlxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlcS5oZWFkZXJzKSkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEuaGVhZGVycyBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdoZWFkZXJcXCcgcGFyYW1ldGVycycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsdWUgPSBoZWxwZXJzLmdldEhlYWRlclZhbHVlKHJlcS5oZWFkZXJzLCB0aGlzLm5hbWUpO1xuICAgIGJyZWFrO1xuICBjYXNlICdwYXRoJzpcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEub3JpZ2luYWxVcmwpICYmIF8uaXNVbmRlZmluZWQocmVxLnVybCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLm9yaWdpbmFsVXJsIG9yIHJlcS51cmwgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwncGF0aFxcJyBwYXJhbWV0ZXJzJyk7XG4gICAgfVxuXG4gICAgcGF0aE1hdGNoID0gdGhpcy5wYXRoT2JqZWN0LnJlZ2V4cC5leGVjKHBhcnNlVXJsKHJlcS5vcmlnaW5hbFVybCB8fCByZXEudXJsKS5wYXRobmFtZSk7XG5cbiAgICBpZiAocGF0aE1hdGNoKSB7XG4gICAgICAvLyBkZWNvZGUgVVJJIGNvbXBvbmVudCBoZXJlIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGVuY29kZWQgc2xhc2hlc1xuICAgICAgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQocGF0aE1hdGNoW18uZmluZEluZGV4KHRoaXMucGF0aE9iamVjdC5yZWdleHAua2V5cywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5Lm5hbWUgPT09IHRoYXQubmFtZTtcbiAgICAgIH0pICsgMV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAncXVlcnknOlxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlcS5xdWVyeSkpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLnF1ZXJ5IG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ3F1ZXJ5XFwnIHBhcmFtZXRlcnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gXy5nZXQocmVxLnF1ZXJ5LCB0aGlzLm5hbWUpO1xuXG4gICAgYnJlYWs7XG5cbiAgICAvLyBubyBkZWZhdWx0XG4gIH1cblxuICByZXR1cm4gbmV3IFBhcmFtZXRlclZhbHVlKHRoaXMsIHZhbHVlKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyYW1ldGVyO1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgSnNvblJlZnMgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snSnNvblJlZnMnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0pzb25SZWZzJ10gOiBudWxsKTtcbnZhciBPcGVyYXRpb24gPSByZXF1aXJlKCcuL29wZXJhdGlvbicpO1xudmFyIFBhcmFtZXRlciA9IHJlcXVpcmUoJy4vcGFyYW1ldGVyJyk7XG52YXIgcGF0aFRvUmVnZXhwID0gcmVxdWlyZSgncGF0aC10by1yZWdleHAnKTtcbnZhciBzdXBwb3J0ZWRIdHRwTWV0aG9kcyA9IHJlcXVpcmUoJ3N3YWdnZXItbWV0aG9kcycpO1xuXG4vKipcbiAqIFRoZSBQYXRoIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5Td2FnZ2VyQXBpfSBhcGkgLSBUaGUgYFN3YWdnZXJBcGlgIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5Td2FnZ2VyQXBpfSBhcGkgLSBUaGUgYFN3YWdnZXJBcGlgIG9iamVjdFxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcGF0aCBkZWZpbml0aW9uICooVGhlIHJhdyBwYXRoIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBwYXRoIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gb3BlcmF0aW9uT2JqZWN0cyAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBwYXJhbWV0ZXJPYmplY3RzIC0gVGhlIHBhdGgtbGV2ZWwgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3B0cn0gcHRyIC0gVGhlIEpTT04gUG9pbnRlciB0byB0aGUgcGF0aFxuICogQHByb3BlcnR5IHtyZWdleHB9IHJlZ2V4cCAtIFRoZSBgUmVnRXhwYCB1c2VkIHRvIG1hdGNoIHJlcXVlc3QgcGF0aHMgYWdhaW5zdCB0aGlzIHBhdGhcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUGF0aCAoYXBpLCBwYXRoLCBkZWZpbml0aW9uLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcGF0aFRvRGVmaW5pdGlvbikge1xuICB2YXIgYmFzZVBhdGhQcmVmaXggPSBhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuYmFzZVBhdGggfHwgJy8nO1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBzYW5pdGl6ZWRQYXRoO1xuXG4gIC8vIFRPRE86IFdlIGNvdWxkL3Nob3VsZCByZWZhY3RvciB0aGlzIHRvIHVzZSB0aGUgcGF0aCBtb2R1bGVcblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgYmFzZVBhdGhQcmVmaXggc28gd2UgZG8gbm90IGVuZCB1cCB3aXRoIGRvdWJsZSBzbGFzaGVzXG4gIGlmIChiYXNlUGF0aFByZWZpeC5jaGFyQXQoYmFzZVBhdGhQcmVmaXgubGVuZ3RoIC0gMSkgPT09ICcvJykge1xuICAgIGJhc2VQYXRoUHJlZml4ID0gYmFzZVBhdGhQcmVmaXguc3Vic3RyaW5nKDAsIGJhc2VQYXRoUHJlZml4Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgLy8gQ29udmVydHMgU3dhZ2dlciBwYXJhbWV0ZXJzIHRvIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycywgYW5kIGFsc28gZXNjYXBlcyBhbGwgcGF0aC10by1yZWdleHAgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gIC8vXG4gIC8vIEBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waWxsYXJqcy9wYXRoLXRvLXJlZ2V4cC9pc3N1ZXMvNzYjaXNzdWVjb21tZW50LTIxOTA4NTM1N1xuICBzYW5pdGl6ZWRQYXRoID0gYmFzZVBhdGhQcmVmaXggKyBwYXRoLnJlcGxhY2UoJygnLCAnXFxcXCgnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyknLCAnXFxcXCknKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJzonLCAnXFxcXDonKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyonLCAnXFxcXConKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJysnLCAnXFxcXCsnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJz8nLCAnXFxcXD8nKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnOicpIC8vIFN3YWdnZXIgLT4gRXhwcmVzcy1zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcfS9nLCAnJyk7IC8vIFN3YWdnZXIgLT4gRXhwcmVzcy1zdHlsZVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuYXBpID0gYXBpO1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucGF0aFRvRGVmaW5pdGlvbiA9IHBhdGhUb0RlZmluaXRpb247XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuICB0aGlzLnJlZ2V4cCA9IHBhdGhUb1JlZ2V4cChzYW5pdGl6ZWRQYXRoLCB7c2Vuc2l0aXZlOiB0cnVlfSk7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgU3dhZ2dlciBkZWZpbml0aW9uIHByb3BlcnRpZXNcbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5hcGkuX2RlYnVnO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgJXMnLCB0aGlzLnBhdGgpO1xuXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIgcFBhdGggPSBwYXRoVG9EZWZpbml0aW9uLmNvbmNhdChbJ3BhcmFtZXRlcnMnLCBpbmRleC50b1N0cmluZygpXSk7XG5cbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlcih0aGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIF8uZ2V0KGFwaS5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBwUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1EZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcFBhdGgpO1xuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgT3BlcmF0aW9uczonKTtcblxuICB0aGlzLm9wZXJhdGlvbk9iamVjdHMgPSBfLnJlZHVjZShkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgZnVuY3Rpb24gKG9wZXJhdGlvbnMsIG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgdmFyIG9QYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQobWV0aG9kKTtcblxuICAgIGlmIChzdXBwb3J0ZWRIdHRwTWV0aG9kcy5pbmRleE9mKG1ldGhvZCkgPiAtMSkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKG5ldyBPcGVyYXRpb24odGhhdCwgbWV0aG9kLCBfLmdldChhcGkuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgb1BhdGgpLCBvcGVyYXRpb25EZWYsIG9QYXRoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnM7XG4gIH0sIFtdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbiBmb3IgdGhpcyBwYXRoIGFuZCBvcGVyYXRpb24gaWQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBpZCBvciBtZXRob2RcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGggYW5kIG1ldGhvZCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub1xuICogb3BlcmF0aW9uIGZvciB0aGUgcHJvdmlkZWQgbWV0aG9kXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbiA9IGZ1bmN0aW9uIChpZE9yTWV0aG9kKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5vcGVyYXRpb25PYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9uT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9wZXJhdGlvbk9iamVjdC5vcGVyYXRpb25JZCA9PT0gaWRPck1ldGhvZCB8fCBvcGVyYXRpb25PYmplY3QubWV0aG9kID09PSBpZE9yTWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcGF0aC5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGhcbiAqL1xuUGF0aC5wcm90b3R5cGUuZ2V0T3BlcmF0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMub3BlcmF0aW9uT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBvcGVyYXRpb25zIGZvciB0aGlzIHBhdGggYW5kIHRhZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gVGhlIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoaXMgcGF0aCBhbmQgdGFnXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbnNCeVRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMub3BlcmF0aW9uT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbk9iamVjdCkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKG9wZXJhdGlvbk9iamVjdC50YWdzLCB0YWcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIHBhdGguXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhpcyBwYXRoXG4gKi9cblBhdGgucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhdGg7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIGpzb25WYWxpZGF0b3IgPSBoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKTtcbnZhciBKc29uUmVmcyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydKc29uUmVmcyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnSnNvblJlZnMnXSA6IG51bGwpO1xudmFyIFlBTUwgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snanN5YW1sJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydqc3lhbWwnXSA6IG51bGwpO1xuXG4vKipcbiAqIFRoZSBTd2FnZ2VyIFJlc3BvbnNlIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBgT3BlcmF0aW9uYCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXNDb2RlIC0gVGhlIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSByZXNwb25zZSBkZWZpbml0aW9uICooVGhlIHJhdyByZXNwb25zZSBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcmVzcG9uc2UgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gKihUaGUgcmF3IHJlc3BvbnNlZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5PcGVyYXRpb259IG9wZXJhdGlvbk9iamVjdCAtIFRoZSBPcGVyYXRpb24gb2JqZWN0XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHJlc3BvbnNlIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0dXNDb2RlIC0gVGhlIHN0YXR1cyBjb2RlXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFJlc3BvbnNlIChvcGVyYXRpb25PYmplY3QsIHN0YXR1c0NvZGUsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5vcGVyYXRpb25PYmplY3QgPSBvcGVyYXRpb25PYmplY3Q7XG4gIHRoaXMucGF0aFRvRGVmaW5pdGlvbiA9IHBhdGhUb0RlZmluaXRpb247XG4gIHRoaXMucHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHBhdGhUb0RlZmluaXRpb24pO1xuICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiBwcm9wZXJ0aWVzXG4gIF8uYXNzaWduKHRoaXMsIGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcblxuICB0aGlzLm9wZXJhdGlvbk9iamVjdC5wYXRoT2JqZWN0LmFwaS5fZGVidWcoJyAgICAgICAgICAgICVzIGF0ICVzJywgc3RhdHVzQ29kZSwgdGhpcy5wdHIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGV4YW1wbGUgZm9yIHRoZSBtaW1lLXR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttaW1lVHlwZV0gLSBUaGUgbWltZSB0eXBlXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHJlc3BvbnNlIGV4YW1wbGUgYXMgYSBzdHJpbmcgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHJlc3BvbnNlIGNvZGUgYW5kL29yIG1pbWUtdHlwZSBpcyBtaXNzaW5nXG4gKi9cblJlc3BvbnNlLnByb3RvdHlwZS5nZXRFeGFtcGxlID0gZnVuY3Rpb24gKG1pbWVUeXBlKSB7XG4gIHZhciBleGFtcGxlO1xuXG4gIGlmIChfLmlzUGxhaW5PYmplY3QodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5leGFtcGxlcykpIHtcbiAgICBleGFtcGxlID0gdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5leGFtcGxlc1ttaW1lVHlwZV07XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQoZXhhbXBsZSkgJiYgIV8uaXNTdHJpbmcoZXhhbXBsZSkpIHtcbiAgICBpZiAobWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgZXhhbXBsZSA9IEpTT04uc3RyaW5naWZ5KGV4YW1wbGUsIG51bGwsIDIpO1xuICAgIH0gZWxzZSBpZiAobWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXlhbWwnKSB7XG4gICAgICBleGFtcGxlID0gWUFNTC5zYWZlRHVtcChleGFtcGxlLCB7aW5kZW50OiAyfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGU7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBzYW1wbGUgdmFsdWUuXG4gKlxuICogQHJldHVybnMgeyp9IFRoZSBzYW1wbGUgdmFsdWUgZm9yIHRoZSByZXNwb25zZSwgd2hpY2ggY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgcmVzcG9uc2Ugc2NoZW1hIGlzIG5vdCBwcm92aWRlZFxuICovXG5SZXNwb25zZS5wcm90b3R5cGUuZ2V0U2FtcGxlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGVscGVycy5nZXRTYW1wbGUodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEpO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuU2VydmVyUmVzcG9uc2VXcmFwcGVyfSByZXMgLSBUaGUgcmVzcG9uc2Ugb3IgcmVzcG9uc2UgbGlrZSBvYmplY3RcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuUmVzcG9uc2VWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5SZXNwb25zZS5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIGJvZHlWYWx1ZTtcbiAgdmFyIGJ2UmVzdWx0cztcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMuaGVhZGVycykpIHtcbiAgICByZXMuaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIENvbnRlbnQtVHlwZSBleGNlcHQgZm9yIHZvaWQgcmVzcG9uc2VzLCAyMDQgcmVzcG9uc2VzIGFuZCAzMDQgcmVzcG9uc2VzIGFzIHRoZXkgaGF2ZSBubyBib2R5XG4gIGlmICh0aGlzLm9wZXJhdGlvbk9iamVjdC5wcm9kdWNlcy5sZW5ndGggPiAwICYmICFfLmlzVW5kZWZpbmVkKHJlcy5ib2R5KSAmJlxuICAgICAgICAhXy5pc1VuZGVmaW5lZCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSkgJiYgXy5pbmRleE9mKFsnMjA0JywgJzMwNCddLCB0aGlzLnN0YXR1c0NvZGUpID09PSAtMSkge1xuICAgIGhlbHBlcnMudmFsaWRhdGVDb250ZW50VHlwZShoZWxwZXJzLmdldENvbnRlbnRUeXBlKHJlcy5oZWFkZXJzKSwgdGhpcy5vcGVyYXRpb25PYmplY3QucHJvZHVjZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGhlYWRlcnNcbiAgXy5mb3JFYWNoKHRoaXMuaGVhZGVycywgZnVuY3Rpb24gKHNjaGVtYSwgbmFtZSkge1xuICAgIHZhciBoZWFkZXJWYWx1ZTtcbiAgICB2YXIgaHZSZXN1bHRzO1xuXG4gICAgdHJ5IHtcbiAgICAgIGhlYWRlclZhbHVlID0gaGVscGVycy5jb252ZXJ0VmFsdWUoc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkZvcm1hdDogc2NoZW1hLmNvbGxlY3Rpb25Gb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3Zlcmx5IGNhdXRpb3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV0gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmhlYWRlcnNbbmFtZV0gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmRlZmF1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFU1BPTlNFX0hFQURFUicsXG4gICAgICAgIGVycm9yczogZXJyLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIHBhdGg6IGVyci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBoZWFkZXIgKCcgKyBuYW1lICsgJyk6ICcgKyBlcnIubWVzc2FnZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcGF0aDogZXJyLnBhdGhcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIER1ZSB0byBhbWJpZ3VpdHkgaW4gdGhlIFN3YWdnZXIgMi4wIFNwZWNpZmljYXRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvaXNzdWVzLzMyMSksIGl0XG4gICAgLy8gaXMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhIHRvIGRvIHJlcXVpcmVkbmVzcyBjaGVja3MgZm9yIHJlc3BvbnNlIGhlYWRlcnMuICBUaGlzIG1lYW5zIHdlIHdpbGwgdmFsaWRhdGVcbiAgICAvLyBleGlzdGluZyBoZWFkZXJzIGJ1dCB3aWxsIG5vdCB0aHJvdyBhbiBlcnJvciBpZiBhIGhlYWRlciBpcyBkZWZpbmVkIGluIGEgcmVzcG9uc2Ugc2NoZW1hIGJ1dCBub3QgaW4gdGhlIHJlc3BvbnNlLlxuICAgIC8vXG4gICAgLy8gV2UgYWxzbyBkbyBub3Qgd2FudCB0byB2YWxpZGF0ZSBkYXRlIG9iamVjdHMgYmVjYXVzZSBpdCBpcyByZWR1bmRhbnQuICBJZiB3ZSBoYXZlIGFscmVhZHkgY29udmVydGVkIHRoZSB2YWx1ZVxuICAgIC8vIGZyb20gYSBzdHJpbmcrZm9ybWF0IHRvIGEgZGF0ZSwgd2Uga25vdyBpdCBwYXNzZXMgc2NoZW1hIHZhbGlkYXRpb24uXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGhlYWRlclZhbHVlKSAmJiAhXy5pc0RhdGUoaGVhZGVyVmFsdWUpKSB7XG4gICAgICBodlJlc3VsdHMgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShqc29uVmFsaWRhdG9yLCBzY2hlbWEsIGhlYWRlclZhbHVlKTtcblxuICAgICAgaWYgKGh2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9IRUFERVInLFxuICAgICAgICAgIGVycm9yczogaHZSZXN1bHRzLmVycm9ycyxcbiAgICAgICAgICAvLyBSZXBvcnQgdGhlIGFjdHVhbCBlcnJvciBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4gIE90aGVyd2lzZSwgcmVwb3J0IGEgSlNPTiBTY2hlbWFcbiAgICAgICAgICAvLyB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGhlYWRlciAoJyArIG5hbWUgKyAnKTogJyArIChodlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDEgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZmFpbGVkIEpTT04gU2NoZW1hIHZhbGlkYXRpb24nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZSZXN1bHRzLmVycm9yc1swXS5tZXNzYWdlKSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHBhdGg6IFtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgcmVzcG9uc2UgZm9yIG5vbi12b2lkIHJlc3BvbnNlc1xuICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEpICYmIF8uaW5kZXhPZihbJzIwNCcsICczMDQnXSwgdGhpcy5zdGF0dXNDb2RlKSA9PT0gLTEpIHtcbiAgICB0cnkge1xuICAgICAgYm9keVZhbHVlID0gaGVscGVycy5jb252ZXJ0VmFsdWUodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEsIHtcbiAgICAgICAgZW5jb2Rpbmc6IHJlcy5lbmNvZGluZ1xuICAgICAgfSwgcmVzLmJvZHkpO1xuICAgICAgYnZSZXN1bHRzID0gaGVscGVycy52YWxpZGF0ZUFnYWluc3RTY2hlbWEoanNvblZhbGlkYXRvciwgdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zY2hlbWEsIGJvZHlWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBidlJlc3VsdHMgPSB7XG4gICAgICAgIGVycm9yczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6IGVyci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICBwYXRoOiBlcnIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoYnZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0lOVkFMSURfUkVTUE9OU0VfQk9EWScsXG4gICAgICAgIGVycm9yczogYnZSZXN1bHRzLmVycm9ycyxcbiAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgYm9keTogJyArIChidlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDEgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2UmVzdWx0cy5lcnJvcnNbMF0ubWVzc2FnZSksXG4gICAgICAgIHBhdGg6IFtdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzdHJpY3QgbW9kZVxuICBoZWxwZXJzLnZhbGlkYXRlU3RyaWN0TW9kZSh0aGlzLCByZXMsIG9wdGlvbnMuc3RyaWN0TW9kZSwgcmVzdWx0cyk7XG5cbiAgLy8gUHJvY2VzcyBjdXN0b20gdmFsaWRhdG9yc1xuICBoZWxwZXJzLnByb2Nlc3NWYWxpZGF0b3JzKHJlcywgdGhpcywgb3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCByZXN1bHRzKTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2U7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBCYXNlNjQgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snQmFzZTY0J10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydCYXNlNjQnXSA6IG51bGwpO1xuXG4vLyBEdWUgdG8gdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBub2RlLmpzIGFuZCB0aGUgYnJvd3NlciB1c2UganMtYmFzZTY0LCB3ZSBuZWVkIHRoaXMgaGFja1xuaWYgKHR5cGVvZiBCYXNlNjQuQmFzZTY0ICE9PSAndW5kZWZpbmVkJykge1xuICBCYXNlNjQgPSBCYXNlNjQuQmFzZTY0O1xufVxuXG4vKipcbiAqIFdlIGhhdmUgdG8gZmlsdGVyIHRoZSBzY2hlbWEgdG8gYXZvaWQgYSBtYXhpbXVtIGNhbGxzdGFjayBpc3N1ZSBieSBkZWxldGluZyB0aGUgZm9ybWF0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWEgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIGZpbHRlcmVkIHNjaGVtYVxuICovXG5mdW5jdGlvbiBmaWx0ZXJTY2hlbWEgKHNjaGVtYSkge1xuICB2YXIgY1NjaGVtYSA9IF8uY2xvbmVEZWVwKHNjaGVtYSk7XG5cbiAgZGVsZXRlIGNTY2hlbWEuZm9ybWF0O1xuXG4gIHJldHVybiBjU2NoZW1hO1xufVxuXG4vLyBCdWlsZCB0aGUgbGlzdCBvZiBjdXN0b20gSlNPTiBTY2hlbWEgZ2VuZXJhdG9yIGZvcm1hdHNcbm1vZHVsZS5leHBvcnRzLmJ5dGUgPSBmdW5jdGlvbiAobW9ja2VyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgcmV0dXJuIEJhc2U2NC5lbmNvZGUobW9ja2VyKGZpbHRlclNjaGVtYShzY2hlbWEpKSk7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5wYXNzd29yZCA9IGZ1bmN0aW9uIChtb2NrZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgICByZXR1cm4gbW9ja2VyKGZpbHRlclNjaGVtYShzY2hlbWEpKTtcbiAgfVxufTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xuXG5mdW5jdGlvbiByZXR1cm5UcnVlICgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzLmludDMyID0gbW9kdWxlLmV4cG9ydHMuaW50NjQgPSBmdW5jdGlvbiAodmFsKSB7XG4gIC8vIHotc2NoZW1hIHNlZW1zIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIGZvcm1hdCBldmVuIHdoZW4gdGhlIHR5cGUgaXMga25vd24gdG8gYmUgaW52YWxpZCBzbyB3ZSBtdXN0IGRvIGEgdHlwZVxuICAvLyBjaGVjayBwcmlvciB0byB2YWxpZGF0aW5nIHRoaXMgZm9ybWF0LlxuICByZXR1cm4gXy5pc051bWJlcih2YWwpICYmIHZhbCAlIDEgPT09IDA7XG59O1xuXG4vLyBUaGVzZSBmb3JtYXQgdmFsaWRhdG9ycyB3aWxsIGFsd2F5cyByZXR1cm4gJ3RydWUnIGJlY2F1c2UgdGhleSBhcmUgYWxyZWFkeSB0eXBlIHZhbGlkIGFuZCB0aGVyZSBhcmUgbm8gY29uc3RyYWludHNcbi8vIG9uIHRoZSBmb3JtYXQgdGhhdCB3b3VsZCBwcm9kdWNlIGFuIGludmFsaWQgdmFsdWUuXG5tb2R1bGUuZXhwb3J0cy5ieXRlID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLmRvdWJsZSA9IHJldHVyblRydWU7XG5tb2R1bGUuZXhwb3J0cy5mbG9hdCA9IHJldHVyblRydWU7XG5tb2R1bGUuZXhwb3J0cy5wYXNzd29yZCA9IHJldHVyblRydWU7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIEpzb25SZWZzID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ0pzb25SZWZzJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydKc29uUmVmcyddIDogbnVsbCk7XG52YXIgc3VwcG9ydGVkSHR0cE1ldGhvZHMgPSByZXF1aXJlKCdzd2FnZ2VyLW1ldGhvZHMnKTtcbnZhciBzd2FnZ2VyU2NoZW1hID0gcmVxdWlyZSgnc3dhZ2dlci1zY2hlbWEtb2ZmaWNpYWwvc2NoZW1hJyk7XG5cbmZ1bmN0aW9uIGdldFNjaGVtYVByb3BlcnRpZXMgKHNjaGVtYSkge1xuICB2YXIgcHJvcGVydGllcyA9IF8ua2V5cyhzY2hlbWEucHJvcGVydGllcyk7IC8vIFN0YXJ0IHdpdGggdGhlIGRlZmluZWQgcHJvcGVydGllc1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhlIHBhcmVudFxuICBfLmZvckVhY2goc2NoZW1hLmFsbE9mLCBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgXy5mb3JFYWNoKGdldFNjaGVtYVByb3BlcnRpZXMocGFyZW50KSwgZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICBpZiAoXy5pbmRleE9mKHByb3BlcnRpZXMsIHByb3BlcnR5KSA9PT0gLTEpIHtcbiAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5cbmZ1bmN0aW9uIHdhbGtTY2hlbWEgKGFwaSwgYmxhY2tsaXN0LCBzY2hlbWEsIHBhdGgsIGhhbmRsZXJzLCByZXNwb25zZSkge1xuICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlIHx8ICdvYmplY3QnO1xuXG4gIGZ1bmN0aW9uIHNob3VsZFNraXAgKGNQYXRoKSB7XG4gICAgcmV0dXJuIF8uaW5kZXhPZihibGFja2xpc3QsIEpzb25SZWZzLnBhdGhUb1B0cihjUGF0aCkpID4gLTE7XG4gIH1cblxuICAvLyBEbyBub3QgcHJvY2VzcyBpdGVtcyBpbiB0aGUgYmxhY2tsaXN0IGFzIHRoZXkndmUgYmVlbiBwcm9jZXNzZWQgYWxyZWFkeVxuICBpZiAoc2hvdWxkU2tpcChwYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhbGtlciAocFNjaGVtYSwgcFBhdGgpIHtcbiAgICAvLyBEbyBub3QgcHJvY2VzcyBpdGVtcyBpbiB0aGUgYmxhY2tsaXN0IGFzIHRoZXkndmUgYmVlbiBwcm9jZXNzZWQgYWxyZWFkeVxuICAgIGlmIChzaG91bGRTa2lwKHBQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF8uZm9yRWFjaChwU2NoZW1hLCBmdW5jdGlvbiAoaXRlbSwgbmFtZSkge1xuICAgICAgaWYgKF8uaXNOdW1iZXIobmFtZSkpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgaXRlbSwgcFBhdGguY29uY2F0KG5hbWUpLCBoYW5kbGVycywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5zY2hlbWEpKSB7XG4gICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgc2NoZW1hLnNjaGVtYSwgcGF0aC5jb25jYXQoJ3NjaGVtYScpLCBoYW5kbGVycywgcmVzcG9uc2UpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSkge1xuICAgIGlmIChfLmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgd2Fsa2VyKHNjaGVtYS5pdGVtcywgcGF0aC5jb25jYXQoJ2l0ZW1zJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBzY2hlbWEuaXRlbXMsIHBhdGguY29uY2F0KCdpdGVtcycpLCBoYW5kbGVycywgcmVzcG9uc2UpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMpKSB7XG4gICAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIHBhdGguY29uY2F0KCdhZGRpdGlvbmFsUHJvcGVydGllcycpLCBoYW5kbGVycywgcmVzcG9uc2UpO1xuICAgIH1cblxuICAgIF8uZm9yRWFjaChbJ2FsbE9mJywgJ3Byb3BlcnRpZXMnXSwgZnVuY3Rpb24gKHByb3BOYW1lKSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgd2Fsa2VyKHNjaGVtYVtwcm9wTmFtZV0sIHBhdGguY29uY2F0KHByb3BOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfLmZvckVhY2goaGFuZGxlcnMsIGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgaGFuZGxlcihhcGksIHJlc3BvbnNlLCBzY2hlbWEsIHBhdGgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlc29sdmVkIFN3YWdnZXIgZG9jdW1lbnQgYWdhaW5zdCB0aGUgU3dhZ2dlciAyLjAgSlNPTiBTY2hlbWEuXG4gKlxuICogQHBhcmFtIHtTd2FnZ2VyQXBpfSBhcGkgLSBUaGUgU3dhZ2dlckFwaSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZSAoYXBpKSB7XG4gIHZhciByZXN1bHRzID0gaGVscGVycy52YWxpZGF0ZUFnYWluc3RTY2hlbWEoaGVscGVycy5nZXRKU09OU2NoZW1hVmFsaWRhdG9yKCksIHN3YWdnZXJTY2hlbWEsIGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgLy8gTWFrZSBjb21wbGV4IEpTT04gU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIGVhc2llciB0byB1bmRlcnN0YW5kIChJc3N1ZSAxNSlcbiAgcmVzdWx0cy5lcnJvcnMgPSByZXN1bHRzLmVycm9ycy5tYXAoZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgdmFyIGRlZlR5cGUgPSBbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJywgJ2l0ZW1zJ10uaW5kZXhPZihlcnJvci5wYXRoW2Vycm9yLnBhdGgubGVuZ3RoIC0gMV0pID4gLTEgP1xuICAgICAgICAgICdzY2hlbWEnIDpcbiAgICAgICAgICBlcnJvci5wYXRoW2Vycm9yLnBhdGgubGVuZ3RoIC0gMl07XG5cbiAgICBpZiAoWydBTllfT0ZfTUlTU0lORycsICdPTkVfT0ZfTUlTU0lORyddLmluZGV4T2YoZXJyb3IuY29kZSkgPiAtMSkge1xuICAgICAgc3dpdGNoIChkZWZUeXBlKSB7XG4gICAgICBjYXNlICdwYXJhbWV0ZXJzJzpcbiAgICAgICAgZGVmVHlwZSA9ICdwYXJhbWV0ZXInO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzcG9uc2VzJzpcbiAgICAgICAgZGVmVHlwZSA9ICdyZXNwb25zZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgICBkZWZUeXBlICs9ICcgJyArIGVycm9yLnBhdGhbZXJyb3IucGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG5cbiAgICAgIGVycm9yLm1lc3NhZ2UgPSAnTm90IGEgdmFsaWQgJyArIGRlZlR5cGUgKyAnIGRlZmluaXRpb24nO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcjtcbiAgfSk7XG5cbiAgLy8gVHJlYXQgaW52YWxpZC9taXNzaW5nIHJlZmVyZW5jZXMgYXMgc3RydWN0dXJhbCBlcnJvcnNcbiAgXy5lYWNoKGFwaS5yZWZlcmVuY2VzLCBmdW5jdGlvbiAocmVmRGV0YWlscywgcmVmUHRyKSB7XG4gICAgdmFyIHJlZlBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihyZWZQdHIpO1xuICAgIHZhciBlcnI7XG5cbiAgICBpZiAocmVmRGV0YWlscy5taXNzaW5nKSB7XG4gICAgICBlcnIgPSB7XG4gICAgICAgIGNvZGU6ICdVTlJFU09MVkFCTEVfUkVGRVJFTkNFJyxcbiAgICAgICAgbWVzc2FnZTogJ1JlZmVyZW5jZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICcgKyByZWZEZXRhaWxzLnVyaSxcbiAgICAgICAgcGF0aDogcmVmUGF0aC5jb25jYXQoJyRyZWYnKVxuICAgICAgfTtcblxuICAgICAgaWYgKF8uaGFzKHJlZkRldGFpbHMsICdlcnJvcicpKSB7XG4gICAgICAgIGVyci5lcnJvciA9IHJlZkRldGFpbHMuZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goZXJyKTtcbiAgICB9IGVsc2UgaWYgKHJlZkRldGFpbHMudHlwZSA9PT0gJ2ludmFsaWQnKSB7XG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0lOVkFMSURfUkVGRVJFTkNFJyxcbiAgICAgICAgbWVzc2FnZTogcmVmRGV0YWlscy5lcnJvciB8fCAnSW52YWxpZCBKU09OIFJlZmVyZW5jZScsXG4gICAgICAgIHBhdGg6IHJlZlBhdGguY29uY2F0KCckcmVmJylcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoXy5oYXMocmVmRGV0YWlscywgJ3dhcm5pbmcnKSkge1xuICAgICAgLy8ganNvbi1yZWZzIG9ubHkgY3JlYXRlcyB3YXJuaW5ncyBmb3IgSlNPTiBSZWZlcmVuY2VzIHdpdGggc3VwZXJmbHVvdXMgcHJvcGVydGllcyB3aGljaCB3aWxsIGJlIGlnbm9yZWRcbiAgICAgIHJlc3VsdHMud2FybmluZ3MucHVzaCh7XG4gICAgICAgIGNvZGU6ICdFWFRSQV9SRUZFUkVOQ0VfUFJPUEVSVElFUycsXG4gICAgICAgIG1lc3NhZ2U6IHJlZkRldGFpbHMud2FybmluZyxcbiAgICAgICAgcGF0aDogcmVmUGF0aFxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyogU2NoZW1hIE9iamVjdCBWYWxpZGF0b3JzICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlQXJyYXlUeXBlSXRlbXNFeGlzdGVuY2UgKGFwaSwgcmVzcG9uc2UsIHNjaGVtYSwgcGF0aCkge1xuICBpZiAoc2NoZW1hLnR5cGUgPT09ICdhcnJheScgJiYgXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMpKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgY29kZTogJ09CSkVDVF9NSVNTSU5HX1JFUVVJUkVEX1BST1BFUlRZJyxcbiAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBpdGVtcycsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVEZWZhdWx0VmFsdWUgKGFwaSwgcmVzcG9uc2UsIHNjaGVtYSwgcGF0aCkge1xuICB2YXIgcmVzdWx0O1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEuZGVmYXVsdCkpIHtcbiAgICByZXN1bHQgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKSwgc2NoZW1hLCBzY2hlbWEuZGVmYXVsdCk7XG5cbiAgICBfLmZvckVhY2gocmVzdWx0LmVycm9ycywgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBlcnJvci5wYXRoID0gcGF0aC5jb25jYXQoZXJyb3IucGF0aC5jb25jYXQoJ2RlZmF1bHQnKSk7XG5cbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICB9KTtcblxuICAgIF8uZm9yRWFjaChyZXN1bHQud2FybmluZ3MsIGZ1bmN0aW9uICh3YXJuaW5nKSB7XG4gICAgICB3YXJuaW5nLnBhdGggPSBwYXRoLmNvbmNhdCh3YXJuaW5nLnBhdGgucHVzaCgnZGVmYXVsdCcpKTtcblxuICAgICAgcmVzcG9uc2Uud2FybmluZ3MucHVzaCh3YXJuaW5nKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYVByb3BlcnRpZXMgKGFwaSwgcmVzcG9uc2UsIHNjaGVtYSwgcGF0aCkge1xuICBfLmZvckVhY2goXy5kaWZmZXJlbmNlKHNjaGVtYS5yZXF1aXJlZCB8fCBbXSwgZ2V0U2NoZW1hUHJvcGVydGllcyhzY2hlbWEpKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICBjb2RlOiAnT0JKRUNUX01JU1NJTkdfUkVRVUlSRURfUFJPUEVSVFlfREVGSU5JVElPTicsXG4gICAgICBtZXNzYWdlOiAnTWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSBkZWZpbml0aW9uOiAnICsgbmFtZSxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFsbCByZWZlcmVuY2VzLlxuICpcbiAqICogSWRlbnRpZmllcyBjaXJjdWxhciBpbmhlcml0YW5jZSByZWZlcmVuY2VzXG4gKiAqIElkZW50aWZpZXMgdW5yZWZlcmVuY2VkIHJlZmVyZW5jZWFibGUgZGVmaW5pdGlvbnNcbiAqICogSWRlbnRpZmllcyB1bnJlc29sdmFibGUgcmVmZXJlbmNlc1xuICpcbiAqIEBwYXJhbSB7U3dhZ2dlckFwaX0gYXBpIC0gVGhlIFN3YWdnZXJBcGkgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3Mgb2YgdGhlIHZhbGlkYXRpb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVSZWZlcmVuY2VzIChhcGkpIHtcbiAgdmFyIGRvY1JlZmVyZW5jZXMgPSB7fTtcbiAgdmFyIGluaGVyaXRhbmNlRGV0YWlscyA9IHt9O1xuICB2YXIgcmVmZXJlbmNlYWJsZSA9IFtdO1xuICB2YXIgcmVmZXJlbmNlcyA9IHt9O1xuICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBmdW5jdGlvbiBhZGRBbmNlc3RvciAoZHNjLCBhbmMpIHtcbiAgICBpZiAoIV8uaGFzKGluaGVyaXRhbmNlRGV0YWlscywgZHNjKSkge1xuICAgICAgaW5oZXJpdGFuY2VEZXRhaWxzW2RzY10gPSB7XG4gICAgICAgIGxpbmVhZ2U6IFtdLFxuICAgICAgICBwYXJlbnRzOiBbXG4gICAgICAgICAgYW5jXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaGVyaXRhbmNlRGV0YWlsc1tkc2NdLnBhcmVudHMucHVzaChhbmMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFJlZmVyZW5jZSAocmVmLCBwdHIpIHtcbiAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZXMsIHJlZikgPT09IC0xKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZWZlcmVuY2VzW3JlZl0pKSB7XG4gICAgICAgIHJlZmVyZW5jZXNbcmVmXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcmVmZXJlbmNlcyB0byBhbmNlc3RvcnNcbiAgICAgIGlmIChyZWYuaW5kZXhPZignYWxsT2YnKSA+IC0xKSB7XG4gICAgICAgIGFkZFJlZmVyZW5jZShyZWYuc3Vic3RyaW5nKDAsIHJlZi5sYXN0SW5kZXhPZignL2FsbE9mJykpKTtcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlc1tyZWZdLnB1c2gocHRyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTZWN1cml0eVByb2Nlc3NvciAocGF0aCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VjdXJpdHksIGluZGV4KSB7XG4gICAgICBfLmZvckVhY2goc2VjdXJpdHksIGZ1bmN0aW9uIChzY29wZXMsIG5hbWUpIHtcbiAgICAgICAgdmFyIHNkUGF0aCA9IFsnc2VjdXJpdHlEZWZpbml0aW9ucycsIG5hbWVdO1xuICAgICAgICB2YXIgc2RQdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoKTtcbiAgICAgICAgdmFyIHNyUGF0aCA9IHBhdGguY29uY2F0KFtpbmRleC50b1N0cmluZygpLCBuYW1lXSk7XG5cbiAgICAgICAgLy8gSWRlbnRpZnkgbWlzc2luZyByZWZlcmVuY2UgdG8gdGhlIHNlY3VyaXR5IGRlZmluaXRpb25cbiAgICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBzZFB0cikgPT09IC0xKSB7XG4gICAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ1NlY3VyaXR5IGRlZmluaXRpb24gY291bGQgbm90IGJlIHJlc29sdmVkOiAnICsgbmFtZSxcbiAgICAgICAgICAgIHBhdGg6IHNyUGF0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFJlZmVyZW5jZShzZFB0ciwgSnNvblJlZnMucGF0aFRvUHRyKHNyUGF0aCkpO1xuXG4gICAgICAgICAgXy5mb3JFYWNoKHNjb3BlcywgZnVuY3Rpb24gKHNjb3BlLCBzSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBzc3JQYXRoID0gc3JQYXRoLmNvbmNhdChzSW5kZXgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB2YXIgc3NyUHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHNkUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKTtcblxuICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBzc3JQdHIpID09PSAtMSkge1xuICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdTZWN1cml0eSBzY29wZSBkZWZpbml0aW9uIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJyArIHNjb3BlLFxuICAgICAgICAgICAgICAgIHBhdGg6IHNzclBhdGhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhZGRSZWZlcmVuY2UoSnNvblJlZnMucGF0aFRvUHRyKHNkUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKSwgc3NyUHRyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhbGtMaW5lYWdlIChyb290LCBpZCwgbGluZWFnZSkge1xuICAgIHZhciBkZXRhaWxzID0gaW5oZXJpdGFuY2VEZXRhaWxzW2lkIHx8IHJvb3RdO1xuXG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIF8uZWFjaChkZXRhaWxzLnBhcmVudHMsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgbGluZWFnZS5wdXNoKHBhcmVudCk7XG5cbiAgICAgICAgaWYgKHJvb3QgIT09IHBhcmVudCkge1xuICAgICAgICAgIHdhbGtMaW5lYWdlKHJvb3QsIHBhcmVudCwgbGluZWFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIElkZW50aWZ5IHJlZmVyZW5jZWFibGUgZGVmaW5pdGlvbnNcbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5kZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoWydkZWZpbml0aW9ucycsIG5hbWVdKSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChhcGkuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGFyYW1ldGVycywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHJlZmVyZW5jZWFibGUucHVzaChKc29uUmVmcy5wYXRoVG9QdHIoWydwYXJhbWV0ZXJzJywgbmFtZV0pKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5yZXNwb25zZXMsIGZ1bmN0aW9uIChkZWYsIG5hbWUpIHtcbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKFsncmVzcG9uc2VzJywgbmFtZV0pKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eURlZmluaXRpb25zLCBmdW5jdGlvbiAoZGVmLCBuYW1lKSB7XG4gICAgdmFyIHNQYXRoID0gWydzZWN1cml0eURlZmluaXRpb25zJywgbmFtZV07XG5cbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKHNQYXRoKSk7XG5cbiAgICBfLmZvckVhY2goZGVmLnNjb3BlcywgZnVuY3Rpb24gKGRlc2NyaXB0aW9uLCBzY29wZSkge1xuICAgICAgdmFyIHB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihzUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKTtcblxuICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBwdHIpID09PSAtMSkge1xuICAgICAgICByZWZlcmVuY2VhYmxlLnB1c2gocHRyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSWRlbnRpZnkgcmVmZXJlbmNlcyBhbmQgYnVpbGQgaW5oZXJpdGFuY2UgbW9kZWxcbiAgXy5mb3JFYWNoKGFwaS5yZWZlcmVuY2VzLCBmdW5jdGlvbiAobWV0YWRhdGEsIHB0cikge1xuICAgIHZhciBwdHJQYXRoID0gSnNvblJlZnMucGF0aEZyb21QdHIocHRyKTtcblxuICAgIGlmICghXy5oYXMobWV0YWRhdGEsICdtaXNzaW5nJykpIHtcbiAgICAgIC8vIFRoaXMgcmVmZXJlbmNlIGlzIGEgZG9jdW1lbnQgcmVmZXJlbmNlLCByZWNvcmQgaXQgZm9yIGxhdGVyXG4gICAgICBpZiAoWydyZWxhdGl2ZScsICdyZW1vdGUnXS5pbmRleE9mKG1ldGFkYXRhLnR5cGUpID4gLTEgJiYgbWV0YWRhdGEuZnFVUkkuaW5kZXhPZignIycpID09PSAtMSkge1xuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChkb2NSZWZlcmVuY2VzW21ldGFkYXRhLmZxVVJJXSkpIHtcbiAgICAgICAgICBkb2NSZWZlcmVuY2VzW21ldGFkYXRhLmZxVVJJXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9jUmVmZXJlbmNlc1ttZXRhZGF0YS5mcVVSSV0ucHVzaChwdHIpO1xuICAgICAgfVxuXG4gICAgICBhZGRSZWZlcmVuY2UobWV0YWRhdGEuZnFVUkksIHB0cik7XG5cbiAgICAgIGlmIChwdHJQYXRoW3B0clBhdGgubGVuZ3RoIC0gMl0gPT09ICdhbGxPZicpIHtcbiAgICAgICAgYWRkQW5jZXN0b3IoSnNvblJlZnMucGF0aFRvUHRyKHB0clBhdGguc2xpY2UoMCwgcHRyUGF0aC5sZW5ndGggLSAyKSksIG1ldGFkYXRhLnVyaSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBqc29uLXJlZnMgb25seSBwcm9jZXNzZXMgZWFjaCByZWZlcmVuY2VkIGRvY3VtZW50IG9uY2UsIG5vIG1hdHRlciBob3cgbWFueSBwbGFjZXMgdGhhdCBkb2N1bWVudCBpcyByZWZlcmVuY2VkIGZyb20uXG4gIC8vIFRvIGVuc3VyZSB0aGF0IGFsbCBwbGFjZXMgd2hlcmUgcmVmZXJlbmNlYWJsZSBvYmplY3RzIGFyZSByZWZlcmVuY2VkIGNhbiBiZSBpZGVudGlmaWVkLCB3ZSBuZWVkIG90IHBvc3QtcHJvY2VzcyB0aGVcbiAgLy8gcmVmZXJlbmNlIG1vZGVsIGNyZWF0ZWQgYWJvdmUgYW5kIHJlY29yZCBlYWNoIHJlZmVyZW5jZSB3aXRoaW4gYSByZWxhdGl2ZS9yZW1vdGUgZG9jdW1lbnQgcmVsYXRpdmUgdG8gd2hlcmUgdGhlXG4gIC8vIGNvbnRhaW5pbmcgZG9jdW1lbnQgd2FzIHJlZmVyZW5jZWQuXG4gIHJlZmVyZW5jZXMgPSBfLnJlZHVjZShyZWZlcmVuY2VzLCBmdW5jdGlvbiAoYWxsUmVmcywgZnJvbSwgdG8pIHtcbiAgICB2YXIgdG9QYXJ0cyA9IHRvLnNwbGl0KCcjJyk7XG5cbiAgICBpZiAodG9QYXJ0c1swXSAhPT0gJycgJiYgdG9QYXJ0c1sxXSAhPT0gJycpIHtcbiAgICAgIF8uZm9yRWFjaChkb2NSZWZlcmVuY2VzW3RvUGFydHNbMF1dLCBmdW5jdGlvbiAoZEZyb20pIHtcbiAgICAgICAgYWxsUmVmc1tbZEZyb20sIHRvUGFydHNbMV1dLmpvaW4oJycpXSA9IGZyb207XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxsUmVmc1t0b10gPSBmcm9tO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxSZWZzO1xuICB9LCB7fSk7XG5cbiAgLy8gSWRlbnRpZnkgY2lyY3VsYXIgaW5oZXJpdGFuY2VcbiAgXy5mb3JFYWNoKGluaGVyaXRhbmNlRGV0YWlscywgZnVuY3Rpb24gKGRldGFpbHMsIHB0cikge1xuICAgIHdhbGtMaW5lYWdlKHB0ciwgdW5kZWZpbmVkLCBkZXRhaWxzLmxpbmVhZ2UpO1xuXG4gICAgaWYgKGRldGFpbHMubGluZWFnZS5sZW5ndGggPiAxICYmIGRldGFpbHMubGluZWFnZVtkZXRhaWxzLmxpbmVhZ2UubGVuZ3RoIC0gMV0gPT09IHB0ciB8fFxuICAgICAgICBkZXRhaWxzLnBhcmVudHNbMF0gPT09IHB0cikge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnQ0lSQ1VMQVJfSU5IRVJJVEFOQ0UnLFxuICAgICAgICBsaW5lYWdlOiBbcHRyXS5jb25jYXQoZGV0YWlscy5saW5lYWdlKSxcbiAgICAgICAgbWVzc2FnZTogJ1NjaGVtYSBvYmplY3QgaW5oZXJpdHMgZnJvbSBpdHNlbGY6ICcgKyBwdHIsXG4gICAgICAgIHBhdGg6IEpzb25SZWZzLnBhdGhGcm9tUHRyKHB0cilcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gSWRlbnRpZnkgcmVmZXJlbmNlcyBhbmQgdmFsaWRhdGUgbWlzc2luZyByZWZlcmVuY2VzIGZvciBub24tSlNPTiBSZWZlcmVuY2VzIChzZWN1cml0eSlcbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eSwgY3JlYXRlU2VjdXJpdHlQcm9jZXNzb3IoWydzZWN1cml0eSddKSk7XG5cbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKHBhdGhEZWYsIG5hbWUpIHtcbiAgICB2YXIgcFBhdGggPSBbJ3BhdGhzJywgbmFtZV07XG5cbiAgICBfLmZvckVhY2gocGF0aERlZi5zZWN1cml0eSwgY3JlYXRlU2VjdXJpdHlQcm9jZXNzb3IocFBhdGguY29uY2F0KCdzZWN1cml0eScpKSk7XG5cbiAgICBfLmZvckVhY2gocGF0aERlZiwgZnVuY3Rpb24gKG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBub24tb3BlcmF0aW9uc1xuICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRIdHRwTWV0aG9kcywgbWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfLmZvckVhY2gob3BlcmF0aW9uRGVmLnNlY3VyaXR5LFxuICAgICAgICAgICAgICAgIGNyZWF0ZVNlY3VyaXR5UHJvY2Vzc29yKHBQYXRoLmNvbmNhdChbbWV0aG9kLCAnc2VjdXJpdHknXSkpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSWRlbnRpZnkgdW51c2VkIHJlZmVyZW5jZXMgKG1pc3NpbmcgcmVmZXJlbmNlcyBhcmUgYWxyZWFkeSBoYW5kbGVkIGFib3ZlKVxuICBfLmZvckVhY2goXy5kaWZmZXJlbmNlKHJlZmVyZW5jZWFibGUsIE9iamVjdC5rZXlzKHJlZmVyZW5jZXMpKSwgZnVuY3Rpb24gKHB0cikge1xuICAgIHJlc3BvbnNlLndhcm5pbmdzLnB1c2goe1xuICAgICAgY29kZTogJ1VOVVNFRF9ERUZJTklUSU9OJyxcbiAgICAgIG1lc3NhZ2U6ICdEZWZpbml0aW9uIGlzIG5vdCB1c2VkOiAnICsgcHRyLFxuICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIocHRyKVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFsbCBzY2hlbWEgb2JqZWN0cyBhbmQgc2NoZW1hLWxpa2Ugb2JqZWN0cyAobm9uLWJvZHkgcGF0aCBwYXJhbWV0ZXJzKS5cbiAqXG4gKiAqIFZhbGlkYXRlcyBjaXJjdWxhciByZWZlcmVuY2VzIHJlbGF0ZWQgdG8gY29tcG9zaXRpb24vaW5oZXJpdGFuY2VcbiAqICogVmFsaWRhdGVzIHRoYXQgYWxsIGFycmF5IHR5cGVzIGhhdmUgdGhlaXIgcmVxdWlyZWQgaXRlbXMgcHJvcGVydHlcbiAqICAgICAoQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9pc3N1ZXMvMTc0fSlcbiAqICogVmFsaWRhdGVzIHRoYXQgYWxsIGRlZmF1bHQgdmFsdWVzIGFyZSB2YWxpZCBiYXNlZCBvbiBpdHMgcmVzcGVjdGl2ZSBzY2hlbWFcbiAqXG4gKiBAcGFyYW0ge1N3YWdnZXJBcGl9IGFwaSAtIFRoZSBTd2FnZ2VyQXBpIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hT2JqZWN0cyAoYXBpKSB7XG4gIC8vIEJ1aWxkIGEgYmxhY2tsaXN0IHRvIGF2b2lkIGNhc2NhZGluZyBlcnJvcnMvd2FybmluZ3NcbiAgdmFyIGJsYWNrbGlzdCA9IF8ucmVkdWNlKGFwaS5yZWZlcmVuY2VzLCBmdW5jdGlvbiAobGlzdCwgbWV0YWRhdGEsIHB0cikge1xuICAgIHZhciByZWZQYXRoID0gSnNvblJlZnMucGF0aEZyb21QdHIocHRyKTtcblxuICAgIGxpc3QucHVzaChKc29uUmVmcy5wYXRoVG9QdHIocmVmUGF0aCkpO1xuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH0sIFtdKTtcbiAgdmFyIHJlc3BvbnNlID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG4gIHZhciB2YWxpZGF0b3JzID0gW1xuICAgIHZhbGlkYXRlQXJyYXlUeXBlSXRlbXNFeGlzdGVuY2UsXG4gICAgdmFsaWRhdGVEZWZhdWx0VmFsdWUsXG4gICAgdmFsaWRhdGVTY2hlbWFQcm9wZXJ0aWVzXG4gIF07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVQYXJhbWV0ZXJzIChwYXJhbWV0ZXJzLCBwYXRoKSB7XG4gICAgXy5mb3JFYWNoKHBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbWV0ZXJEZWYsIG5hbWUpIHtcbiAgICAgIHZhciBwUGF0aDtcblxuICAgICAgaWYgKF8uaXNOdW1iZXIobmFtZSkpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgcFBhdGggPSBwYXRoLmNvbmNhdChuYW1lKTtcblxuICAgICAgLy8gQ3JlYXRlIEpTT04gU2NoZW1hIGZvciBub24tYm9keSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocGFyYW1ldGVyRGVmLmluICE9PSAnYm9keScpIHtcbiAgICAgICAgcGFyYW1ldGVyRGVmID0gaGVscGVycy5jb21wdXRlUGFyYW1ldGVyU2NoZW1hKHBhcmFtZXRlckRlZik7XG4gICAgICB9XG5cbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHBhcmFtZXRlckRlZiwgcFBhdGgsIHZhbGlkYXRvcnMsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VzIChyZXNwb25zZXMsIHBhdGgpIHtcbiAgICBfLmZvckVhY2gocmVzcG9uc2VzLCBmdW5jdGlvbiAocmVzcG9uc2VEZWYsIG5hbWUpIHtcbiAgICAgIHZhciByUGF0aCA9IHBhdGguY29uY2F0KG5hbWUpO1xuXG4gICAgICBfLmZvckVhY2gocmVzcG9uc2VEZWYuaGVhZGVycywgZnVuY3Rpb24gKGhlYWRlciwgaE5hbWUpIHtcbiAgICAgICAgd2Fsa1NjaGVtYShhcGksIGJsYWNrbGlzdCwgaGVhZGVyLCByUGF0aC5jb25jYXQoWydoZWFkZXJzJywgaE5hbWVdKSwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChyZXNwb25zZURlZi5zY2hlbWEpKSB7XG4gICAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHJlc3BvbnNlRGVmLnNjaGVtYSwgclBhdGguY29uY2F0KCdzY2hlbWEnKSwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZGVmaW5pdGlvbnNcbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5kZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZmluaXRpb25EZWYsIG5hbWUpIHtcbiAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBkZWZpbml0aW9uRGVmLCBbJ2RlZmluaXRpb25zJywgbmFtZV0sIHZhbGlkYXRvcnMsIHJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgZ2xvYmFsIHBhcmFtZXRlciBkZWZpbml0aW9uc1xuICB2YWxpZGF0ZVBhcmFtZXRlcnMoYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIFsncGFyYW1ldGVycyddKTtcblxuICAvLyBWYWxpZGF0ZSBnbG9iYWwgcmVzcG9uc2UgZGVmaW5pdGlvbnNcbiAgdmFsaWRhdGVSZXNwb25zZXMoYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnJlc3BvbnNlcywgWydyZXNwb25zZXMnXSk7XG5cbiAgLy8gVmFsaWRhdGUgcGF0aHMgYW5kIG9wZXJhdGlvbnNcbiAgXy5mb3JFYWNoKGFwaS5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKHBhdGhEZWYsIHBhdGgpIHtcbiAgICB2YXIgcFBhdGggPSBbJ3BhdGhzJywgcGF0aF07XG5cbiAgICAvLyBWYWxpZGF0ZSBwYXRoLWxldmVsIHBhcmFtZXRlciBkZWZpbml0aW9uc1xuICAgIHZhbGlkYXRlUGFyYW1ldGVycyhwYXRoRGVmLnBhcmFtZXRlcnMsIHBQYXRoLmNvbmNhdCgncGFyYW1ldGVycycpKTtcblxuICAgIF8uZm9yRWFjaChwYXRoRGVmLCBmdW5jdGlvbiAob3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICAgIHZhciBvUGF0aCA9IHBQYXRoLmNvbmNhdChtZXRob2QpO1xuXG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBub24tb3BlcmF0aW9uc1xuICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRIdHRwTWV0aG9kcywgbWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBvcGVyYXRpb24gcGFyYW1ldGVyIGRlZmluaXRpb25zXG4gICAgICB2YWxpZGF0ZVBhcmFtZXRlcnMob3BlcmF0aW9uRGVmLnBhcmFtZXRlcnMsIG9QYXRoLmNvbmNhdCgncGFyYW1ldGVycycpKTtcblxuICAgICAgLy8gVmFsaWRhdGUgb3BlcmF0aW9uIHJlc3BvbnNlIGRlZmluaXRpb25zXG4gICAgICB2YWxpZGF0ZVJlc3BvbnNlcyhvcGVyYXRpb25EZWYucmVzcG9uc2VzLCBvUGF0aC5jb25jYXQoJ3Jlc3BvbnNlcycpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBwYXRocyBhbmQgb3BlcmF0aW9ucyAoV3JpdHRlbiBhcyBvbmUgdmFsaWRhdG9yIHRvIGF2b2lkIG11bHRpcGxlIHBhc3NlcylcbiAqXG4gKiAqIEVuc3VyZSB0aGF0IHBhdGggcGFyYW1ldGVycyBhcmUgZGVmaW5lZCBmb3IgZWFjaCBwYXRoIHBhcmFtZXRlciBkZWNsYXJhdGlvblxuICogKiBFbnN1cmUgdGhhdCBkZWZpbmVkIHBhdGggcGFyYW1ldGVycyBtYXRjaCBhIGRlY2xhcmVkIHBhdGggcGFyYW1ldGVyXG4gKiAqIEVuc3VyZSB0aGF0IHBhdGhzIGFyZSBmdW5jdGlvbmFsbHkgZGlmZmVyZW50XG4gKiAqIEVuc3VyZSB0aGF0IGFuIG9wZXJhdGlvbiBvbmx5IGhhcyBvbmUgYm9keSBwYXJhbWV0ZXJcbiAqICogRW5zdXJlIHRoYXQgYW4gb3BlcmF0aW9uIGhhcyBvbmx5IGEgYm9keSBvciBmb3JtRGF0YSBwYXJhbWV0ZXIgYnV0IG5vdCBib3RoXG4gKiAqIEVuc3VyZSB0aGF0IGFsbCBvcGVyYXRpb24gcGFyYW1ldGVycyBhcmUgdW5pcXVlIChpbiArIG5hbWUpXG4gKiAqIEVuc3VyZSB0aGF0IGFsbCBvcGVyYXRpb24gaWRzIGFyZSB1bmlxdWVcbiAqICogRW5zdXJlIHRoYXQgcGF0aCBwYXJhbWV0ZXJzIGhhdmUgYSBuYW1lXG4gKlxuICogQHBhcmFtIHtTd2FnZ2VyQXBpfSBhcGkgLSBUaGUgU3dhZ2dlckFwaSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBhdGhzQW5kT3BlcmF0aW9ucyAoYXBpKSB7XG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlRHVwbGljYXRlUGFyYW1ldGVyIChzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBwYXRoKSB7XG4gICAgdmFyIHBOYW1lID0gcGFyYW1ldGVyLmluICsgJzonICsgcGFyYW1ldGVyLm5hbWU7XG5cbiAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzXG4gICAgaWYgKF8uaW5kZXhPZihzZWVuUGFyYW1ldGVycywgcE5hbWUpID4gLTEpIHtcbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0RVUExJQ0FURV9QQVJBTUVURVInLFxuICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXJzOiAnICsgSnNvblJlZnMucGF0aFRvUHRyKHBhdGgpLFxuICAgICAgICBwYXRoOiBwYXRoXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VlblBhcmFtZXRlcnMucHVzaChwTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlZW5QYXJhbWV0ZXJzO1xuICB9XG5cbiAgXy5yZWR1Y2UoYXBpLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAobWV0YWRhdGEsIHBhdGhEZWYsIHBhdGgpIHtcbiAgICB2YXIgZGVjbGFyZWRQYXRoUGFyYW1ldGVycyA9IFtdO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IHBhdGg7XG4gICAgdmFyIHBQYXRoID0gWydwYXRocycsIHBhdGhdO1xuXG4gICAgXy5mb3JFYWNoKHBhdGgubWF0Y2goL1xceyguKj8pXFx9L2cpLCBmdW5jdGlvbiAoYXJnLCBpbmRleCkge1xuICAgICAgLy8gUmVjb3JkIHRoZSBwYXRoIHBhcmFtZXRlciBuYW1lXG4gICAgICBkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzLnB1c2goYXJnLnJlcGxhY2UoL1t7fV0vZywgJycpKTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBub3JtYWxpemVkIHBhdGhcbiAgICAgIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZShhcmcsICdhcmcnICsgaW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLy8gSWRlbnRpZnkgcGF0aHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zXG4gICAgaWYgKGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMuaW5kZXhPZignJykgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRU1QVFlfUEFUSF9QQVJBTUVURVJfREVDTEFSQVRJT04nLFxuICAgICAgICBtZXNzYWdlOiAnUGF0aCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gY2Fubm90IGJlIGVtcHR5OiAnICsgcGF0aCxcbiAgICAgICAgcGF0aDogWydwYXRocycsIHBhdGhdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZGVuZml0eSBwYXRocyB0aGF0IGFyZSBmdW5jdGlvbmFsbHkgdGhlIHNhbWVcbiAgICBpZiAoXy5pbmRleE9mKG1ldGFkYXRhLnBhdGhzLCBub3JtYWxpemVkUGF0aCkgPiAtMSkge1xuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRVFVSVZBTEVOVF9QQVRIJyxcbiAgICAgICAgbWVzc2FnZTogJ0VxdWl2YWxlbnQgcGF0aCBhbHJlYWR5IGV4aXN0czogJyArIHBhdGgsXG4gICAgICAgIHBhdGg6IHBQYXRoXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWV0YWRhdGEucGF0aHMucHVzaChub3JtYWxpemVkUGF0aCk7XG4gICAgfVxuXG4gICAgLy8gSWRlbnRpZnkgZHVwbGljYXRlIHBhdGgtbGV2ZWwgcGFyYW1ldGVycyAoV2UgZG8gdGhpcyBtYW51YWxseSBzaW5jZSBTd2FnZ2VyQXBpI2dldE9wZXJhdGlvbiBjb25zb2xpZGF0ZXMgdGhlbSlcbiAgICBfLnJlZHVjZShwYXRoRGVmLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlRHVwbGljYXRlUGFyYW1ldGVyKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIHBQYXRoLmNvbmNhdChbJ3BhcmFtZXRlcnMnLCBpbmRleC50b1N0cmluZygpXSkpO1xuICAgIH0sIFtdKTtcblxuICAgIF8uZm9yRWFjaChwYXRoRGVmLCBmdW5jdGlvbiAob3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICAgIHZhciBkZWZpbmVkUGF0aFBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHZhciBvUGF0aCA9IHBQYXRoLmNvbmNhdChtZXRob2QpO1xuICAgICAgdmFyIG9wZXJhdGlvbklkID0gb3BlcmF0aW9uRGVmLm9wZXJhdGlvbklkO1xuICAgICAgdmFyIHBhdGhNZXRhZGF0YTtcbiAgICAgIHZhciBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBEbyBub3QgcHJvY2VzcyBub24tb3BlcmF0aW9uc1xuICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRIdHRwTWV0aG9kcywgbWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgb3BlcmF0aW9uSWRzXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3BlcmF0aW9uSWQpKSB7XG4gICAgICAgIGlmIChfLmluZGV4T2YobWV0YWRhdGEub3BlcmF0aW9uSWRzLCBvcGVyYXRpb25JZCkgIT09IC0xKSB7XG4gICAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogJ0RVUExJQ0FURV9PUEVSQVRJT05JRCcsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQ2Fubm90IGhhdmUgbXVsdGlwbGUgb3BlcmF0aW9ucyB3aXRoIHRoZSBzYW1lIG9wZXJhdGlvbklkOiAnICsgb3BlcmF0aW9uSWQsXG4gICAgICAgICAgICBwYXRoOiBvUGF0aC5jb25jYXQoWydvcGVyYXRpb25JZCddKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1ldGFkYXRhLm9wZXJhdGlvbklkcy5wdXNoKG9wZXJhdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgb3BlcmF0aW9uLWxldmVsIHBhcmFtZXRlcnMgKFdlIGRvIHRoaXMgbWFudWFsbHkgZm9yIHRoZSBzYW1lIHJlYXNvbnMgYWJvdmUpXG4gICAgICBfLnJlZHVjZShvcGVyYXRpb25EZWYucGFyYW1ldGVycywgZnVuY3Rpb24gKHNlZW5QYXJhbWV0ZXJzLCBwYXJhbWV0ZXIsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZUR1cGxpY2F0ZVBhcmFtZXRlcihzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBvUGF0aC5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pKTtcbiAgICAgIH0sIFtdKTtcblxuICAgICAgLy8gVXNlIFN3YWdnZXJBcGkjZ2V0T3BlcmF0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBjb25zb2xpZGF0ZSBwYXJhbWV0ZXJzXG4gICAgICBwYXJhbWV0ZXJzID0gYXBpLmdldE9wZXJhdGlvbihwYXRoLCBtZXRob2QpLmdldFBhcmFtZXRlcnMoKTtcblxuICAgICAgcGF0aE1ldGFkYXRhID0gXy5yZWR1Y2UocGFyYW1ldGVycywgZnVuY3Rpb24gKHBNZXRhZGF0YSwgcGFyYW1ldGVyKSB7XG4gICAgICAgIC8vIFJlY29yZCBwYXRoIHBhcmFtZXRlcnNcbiAgICAgICAgaWYgKHBhcmFtZXRlci5pbiA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgZGVmaW5lZFBhdGhQYXJhbWV0ZXJzW3BhcmFtZXRlci5uYW1lXSA9IHBhcmFtZXRlci5wdHI7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLmluID09PSAnYm9keScpIHtcbiAgICAgICAgICBwTWV0YWRhdGEuYm9keVBhcmFtZXRldGVycyArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5pbiA9PT0gJ2Zvcm1EYXRhJykge1xuICAgICAgICAgIHBNZXRhZGF0YS5mb3JtUGFyYW1ldGVycyArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBNZXRhZGF0YTtcbiAgICAgIH0sIHtib2R5UGFyYW1ldGV0ZXJzOiAwLCBmb3JtUGFyYW1ldGVyczogMH0pO1xuXG4gICAgICAvLyBJZGVudGlmeSBtdWx0aXBsZSBib2R5IHBhcmFtZXRlcnNcbiAgICAgIGlmIChwYXRoTWV0YWRhdGEuYm9keVBhcmFtZXRldGVycyA+IDEpIHtcbiAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdNVUxUSVBMRV9CT0RZX1BBUkFNRVRFUlMnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY2Fubm90IGhhdmUgbXVsdGlwbGUgYm9keSBwYXJhbWV0ZXJzJyxcbiAgICAgICAgICBwYXRoOiBvUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgaGF2aW5nIGJvdGggYSBib2R5IGFuZCBhIGZvcm0gcGFyYW1ldGVyXG4gICAgICBpZiAocGF0aE1ldGFkYXRhLmJvZHlQYXJhbWV0ZXRlcnMgPiAwICYmIHBhdGhNZXRhZGF0YS5mb3JtUGFyYW1ldGVycyA+IDApIHtcbiAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdJTlZBTElEX1BBUkFNRVRFUl9DT01CSU5BVElPTicsXG4gICAgICAgICAgbWVzc2FnZTogJ09wZXJhdGlvbiBjYW5ub3QgaGF2ZSBhIGJvZHkgcGFyYW1ldGVyIGFuZCBhIGZvcm1EYXRhIHBhcmFtZXRlcicsXG4gICAgICAgICAgcGF0aDogb1BhdGhcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElkZW50aWZ5IHVuZGVmaW5lZCBwYXRoIHBhcmFtZXRlcnNcbiAgICAgIF8uZm9yRWFjaChfLmRpZmZlcmVuY2UoZGVjbGFyZWRQYXRoUGFyYW1ldGVycywgXy5rZXlzKGRlZmluZWRQYXRoUGFyYW1ldGVycykpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ01JU1NJTkdfUEFUSF9QQVJBTUVURVJfREVGSU5JVElPTicsXG4gICAgICAgICAgbWVzc2FnZTogJ1BhdGggcGFyYW1ldGVyIGlzIGRlY2xhcmVkIGJ1dCBpcyBub3QgZGVmaW5lZDogJyArIG5hbWUsXG4gICAgICAgICAgcGF0aDogb1BhdGhcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSWRlbnRpZnkgdW5kZWNsYXJlZCBwYXRoIHBhcmFtZXRlcnNcbiAgICAgIF8uZm9yRWFjaChfLmRpZmZlcmVuY2UoXy5rZXlzKGRlZmluZWRQYXRoUGFyYW1ldGVycyksIGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ01JU1NJTkdfUEFUSF9QQVJBTUVURVJfREVDTEFSQVRJT04nLFxuICAgICAgICAgIG1lc3NhZ2U6ICdQYXRoIHBhcmFtZXRlciBpcyBkZWZpbmVkIGJ1dCBpcyBub3QgZGVjbGFyZWQ6ICcgKyBuYW1lLFxuICAgICAgICAgIHBhdGg6IEpzb25SZWZzLnBhdGhGcm9tUHRyKGRlZmluZWRQYXRoUGFyYW1ldGVyc1tuYW1lXSlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfSwge3BhdGhzOiBbXSwgb3BlcmF0aW9uSWRzOiBbXX0pO1xuXG4gIHJldHVybiByZXNwb25zZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGpzb25TY2hlbWFWYWxpZGF0b3I6IHZhbGlkYXRlU3RydWN0dXJlLFxuICBzZW1hbnRpY1ZhbGlkYXRvcnM6IFtcbiAgICB2YWxpZGF0ZVJlZmVyZW5jZXMsXG4gICAgdmFsaWRhdGVTY2hlbWFPYmplY3RzLFxuICAgIHZhbGlkYXRlUGF0aHNBbmRPcGVyYXRpb25zXG4gIF1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGNvbXBhcmUgYW5kIGlzQnVmZmVyIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvYmxvYi82ODBlOWU1ZTQ4OGYyMmFhYzI3NTk5YTU3ZGM4NDRhNjMxNTkyOGRkL2luZGV4LmpzXG4vLyBvcmlnaW5hbCBub3RpY2U6XG5cbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHggPSBhLmxlbmd0aDtcbiAgdmFyIHkgPSBiLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXTtcbiAgICAgIHkgPSBiW2ldO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICh5IDwgeCkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gaXNCdWZmZXIoYikge1xuICBpZiAoZ2xvYmFsLkJ1ZmZlciAmJiB0eXBlb2YgZ2xvYmFsLkJ1ZmZlci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBnbG9iYWwuQnVmZmVyLmlzQnVmZmVyKGIpO1xuICB9XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpO1xufVxuXG4vLyBiYXNlZCBvbiBub2RlIGFzc2VydCwgb3JpZ2luYWwgbm90aWNlOlxuXG4vLyBodHRwOi8vd2lraS5jb21tb25qcy5vcmcvd2lraS9Vbml0X1Rlc3RpbmcvMS4wXG4vL1xuLy8gVEhJUyBJUyBOT1QgVEVTVEVEIE5PUiBMSUtFTFkgVE8gV09SSyBPVVRTSURFIFY4IVxuLy9cbi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZylcbi8vIENvcHlyaWdodCAoYykgMjAwOSBUaG9tYXMgUm9iaW5zb24gPDI4MG5vcnRoLmNvbT5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAnU29mdHdhcmUnKSwgdG9cbi8vIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4vLyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OXG4vLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsLycpO1xudmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIGZ1bmN0aW9uc0hhdmVOYW1lcyA9IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb28oKSB7fS5uYW1lID09PSAnZm9vJztcbn0oKSk7XG5mdW5jdGlvbiBwVG9TdHJpbmcgKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG59XG5mdW5jdGlvbiBpc1ZpZXcoYXJyYnVmKSB7XG4gIGlmIChpc0J1ZmZlcihhcnJidWYpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgZ2xvYmFsLkFycmF5QnVmZmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhhcnJidWYpO1xuICB9XG4gIGlmICghYXJyYnVmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhcnJidWYgaW5zdGFuY2VvZiBEYXRhVmlldykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChhcnJidWYuYnVmZmVyICYmIGFycmJ1Zi5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbi8vIDEuIFRoZSBhc3NlcnQgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0aGF0IHRocm93XG4vLyBBc3NlcnRpb25FcnJvcidzIHdoZW4gcGFydGljdWxhciBjb25kaXRpb25zIGFyZSBub3QgbWV0LiBUaGVcbi8vIGFzc2VydCBtb2R1bGUgbXVzdCBjb25mb3JtIHRvIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlLlxuXG52YXIgYXNzZXJ0ID0gbW9kdWxlLmV4cG9ydHMgPSBvaztcblxuLy8gMi4gVGhlIEFzc2VydGlvbkVycm9yIGlzIGRlZmluZWQgaW4gYXNzZXJ0LlxuLy8gbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6IG1lc3NhZ2UsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiBhY3R1YWwsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkIH0pXG5cbnZhciByZWdleCA9IC9cXHMqZnVuY3Rpb25cXHMrKFteXFwoXFxzXSopXFxzKi87XG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lL2Jsb2IvYWRlZWVlYzhiZmNjNjA2OGIxODdkN2Q5ZmIzZDViYjFkM2EzMDg5OS9pbXBsZW1lbnRhdGlvbi5qc1xuZnVuY3Rpb24gZ2V0TmFtZShmdW5jKSB7XG4gIGlmICghdXRpbC5pc0Z1bmN0aW9uKGZ1bmMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmdW5jdGlvbnNIYXZlTmFtZXMpIHtcbiAgICByZXR1cm4gZnVuYy5uYW1lO1xuICB9XG4gIHZhciBzdHIgPSBmdW5jLnRvU3RyaW5nKCk7XG4gIHZhciBtYXRjaCA9IHN0ci5tYXRjaChyZWdleCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXTtcbn1cbmFzc2VydC5Bc3NlcnRpb25FcnJvciA9IGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG9wdGlvbnMpIHtcbiAgdGhpcy5uYW1lID0gJ0Fzc2VydGlvbkVycm9yJztcbiAgdGhpcy5hY3R1YWwgPSBvcHRpb25zLmFjdHVhbDtcbiAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gIHRoaXMub3BlcmF0b3IgPSBvcHRpb25zLm9wZXJhdG9yO1xuICBpZiAob3B0aW9ucy5tZXNzYWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlO1xuICAgIHRoaXMuZ2VuZXJhdGVkTWVzc2FnZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubWVzc2FnZSA9IGdldE1lc3NhZ2UodGhpcyk7XG4gICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgfVxuICB2YXIgc3RhY2tTdGFydEZ1bmN0aW9uID0gb3B0aW9ucy5zdGFja1N0YXJ0RnVuY3Rpb24gfHwgZmFpbDtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBub24gdjggYnJvd3NlcnMgc28gd2UgY2FuIGhhdmUgYSBzdGFja3RyYWNlXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xuICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgIHZhciBvdXQgPSBlcnIuc3RhY2s7XG5cbiAgICAgIC8vIHRyeSB0byBzdHJpcCB1c2VsZXNzIGZyYW1lc1xuICAgICAgdmFyIGZuX25hbWUgPSBnZXROYW1lKHN0YWNrU3RhcnRGdW5jdGlvbik7XG4gICAgICB2YXIgaWR4ID0gb3V0LmluZGV4T2YoJ1xcbicgKyBmbl9uYW1lKTtcbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAvLyBvbmNlIHdlIGhhdmUgbG9jYXRlZCB0aGUgZnVuY3Rpb24gZnJhbWVcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBiZWZvcmUgaXQgKGFuZCBpdHMgbGluZSlcbiAgICAgICAgdmFyIG5leHRfbGluZSA9IG91dC5pbmRleE9mKCdcXG4nLCBpZHggKyAxKTtcbiAgICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZyhuZXh0X2xpbmUgKyAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGFjayA9IG91dDtcbiAgICB9XG4gIH1cbn07XG5cbi8vIGFzc2VydC5Bc3NlcnRpb25FcnJvciBpbnN0YW5jZW9mIEVycm9yXG51dGlsLmluaGVyaXRzKGFzc2VydC5Bc3NlcnRpb25FcnJvciwgRXJyb3IpO1xuXG5mdW5jdGlvbiB0cnVuY2F0ZShzLCBuKSB7XG4gIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPCBuID8gcyA6IHMuc2xpY2UoMCwgbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc3BlY3Qoc29tZXRoaW5nKSB7XG4gIGlmIChmdW5jdGlvbnNIYXZlTmFtZXMgfHwgIXV0aWwuaXNGdW5jdGlvbihzb21ldGhpbmcpKSB7XG4gICAgcmV0dXJuIHV0aWwuaW5zcGVjdChzb21ldGhpbmcpO1xuICB9XG4gIHZhciByYXduYW1lID0gZ2V0TmFtZShzb21ldGhpbmcpO1xuICB2YXIgbmFtZSA9IHJhd25hbWUgPyAnOiAnICsgcmF3bmFtZSA6ICcnO1xuICByZXR1cm4gJ1tGdW5jdGlvbicgKyAgbmFtZSArICddJztcbn1cbmZ1bmN0aW9uIGdldE1lc3NhZ2Uoc2VsZikge1xuICByZXR1cm4gdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmFjdHVhbCksIDEyOCkgKyAnICcgK1xuICAgICAgICAgc2VsZi5vcGVyYXRvciArICcgJyArXG4gICAgICAgICB0cnVuY2F0ZShpbnNwZWN0KHNlbGYuZXhwZWN0ZWQpLCAxMjgpO1xufVxuXG4vLyBBdCBwcmVzZW50IG9ubHkgdGhlIHRocmVlIGtleXMgbWVudGlvbmVkIGFib3ZlIGFyZSB1c2VkIGFuZFxuLy8gdW5kZXJzdG9vZCBieSB0aGUgc3BlYy4gSW1wbGVtZW50YXRpb25zIG9yIHN1YiBtb2R1bGVzIGNhbiBwYXNzXG4vLyBvdGhlciBrZXlzIHRvIHRoZSBBc3NlcnRpb25FcnJvcidzIGNvbnN0cnVjdG9yIC0gdGhleSB3aWxsIGJlXG4vLyBpZ25vcmVkLlxuXG4vLyAzLiBBbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB0aHJvdyBhbiBBc3NlcnRpb25FcnJvclxuLy8gd2hlbiBhIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQsIHdpdGggYSBtZXNzYWdlIHRoYXRcbi8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiAgQWxsIGFzc2VydGlvbiBtZXRob2RzIHByb3ZpZGVcbi8vIGJvdGggdGhlIGFjdHVhbCBhbmQgZXhwZWN0ZWQgdmFsdWVzIHRvIHRoZSBhc3NlcnRpb24gZXJyb3IgZm9yXG4vLyBkaXNwbGF5IHB1cnBvc2VzLlxuXG5mdW5jdGlvbiBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yLCBzdGFja1N0YXJ0RnVuY3Rpb24pIHtcbiAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgIHN0YWNrU3RhcnRGdW5jdGlvbjogc3RhY2tTdGFydEZ1bmN0aW9uXG4gIH0pO1xufVxuXG4vLyBFWFRFTlNJT04hIGFsbG93cyBmb3Igd2VsbCBiZWhhdmVkIGVycm9ycyBkZWZpbmVkIGVsc2V3aGVyZS5cbmFzc2VydC5mYWlsID0gZmFpbDtcblxuLy8gNC4gUHVyZSBhc3NlcnRpb24gdGVzdHMgd2hldGhlciBhIHZhbHVlIGlzIHRydXRoeSwgYXMgZGV0ZXJtaW5lZFxuLy8gYnkgISFndWFyZC5cbi8vIGFzc2VydC5vayhndWFyZCwgbWVzc2FnZV9vcHQpO1xuLy8gVGhpcyBzdGF0ZW1lbnQgaXMgZXF1aXZhbGVudCB0byBhc3NlcnQuZXF1YWwodHJ1ZSwgISFndWFyZCxcbi8vIG1lc3NhZ2Vfb3B0KTsuIFRvIHRlc3Qgc3RyaWN0bHkgZm9yIHRoZSB2YWx1ZSB0cnVlLCB1c2Vcbi8vIGFzc2VydC5zdHJpY3RFcXVhbCh0cnVlLCBndWFyZCwgbWVzc2FnZV9vcHQpOy5cblxuZnVuY3Rpb24gb2sodmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKCF2YWx1ZSkgZmFpbCh2YWx1ZSwgdHJ1ZSwgbWVzc2FnZSwgJz09JywgYXNzZXJ0Lm9rKTtcbn1cbmFzc2VydC5vayA9IG9rO1xuXG4vLyA1LiBUaGUgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHNoYWxsb3csIGNvZXJjaXZlIGVxdWFsaXR5IHdpdGhcbi8vID09LlxuLy8gYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICc9PScsIGFzc2VydC5lcXVhbCk7XG59O1xuXG4vLyA2LiBUaGUgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igd2hldGhlciB0d28gb2JqZWN0cyBhcmUgbm90IGVxdWFsXG4vLyB3aXRoICE9IGFzc2VydC5ub3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIG5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9JywgYXNzZXJ0Lm5vdEVxdWFsKTtcbiAgfVxufTtcblxuLy8gNy4gVGhlIGVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBhIGRlZXAgZXF1YWxpdHkgcmVsYXRpb24uXG4vLyBhc3NlcnQuZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LmRlZXBFcXVhbCA9IGZ1bmN0aW9uIGRlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmICghX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBmYWxzZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdkZWVwRXF1YWwnLCBhc3NlcnQuZGVlcEVxdWFsKTtcbiAgfVxufTtcblxuYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIGRlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmICghX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCB0cnVlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBTdHJpY3RFcXVhbCcsIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0cmljdCwgbWVtb3MpIHtcbiAgLy8gNy4xLiBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4gIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAmJiBpc0J1ZmZlcihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gY29tcGFyZShhY3R1YWwsIGV4cGVjdGVkKSA9PT0gMDtcblxuICAvLyA3LjIuIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIERhdGUgb2JqZWN0LCB0aGUgYWN0dWFsIHZhbHVlIGlzXG4gIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIERhdGUgb2JqZWN0IHRoYXQgcmVmZXJzIHRvIHRoZSBzYW1lIHRpbWUuXG4gIH0gZWxzZSBpZiAodXRpbC5pc0RhdGUoYWN0dWFsKSAmJiB1dGlsLmlzRGF0ZShleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpO1xuXG4gIC8vIDcuMyBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0LCB0aGUgYWN0dWFsIHZhbHVlIGlzXG4gIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIFJlZ0V4cCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzb3VyY2UgYW5kXG4gIC8vIHByb3BlcnRpZXMgKGBnbG9iYWxgLCBgbXVsdGlsaW5lYCwgYGxhc3RJbmRleGAsIGBpZ25vcmVDYXNlYCkuXG4gIH0gZWxzZSBpZiAodXRpbC5pc1JlZ0V4cChhY3R1YWwpICYmIHV0aWwuaXNSZWdFeHAoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGFjdHVhbC5zb3VyY2UgPT09IGV4cGVjdGVkLnNvdXJjZSAmJlxuICAgICAgICAgICBhY3R1YWwuZ2xvYmFsID09PSBleHBlY3RlZC5nbG9iYWwgJiZcbiAgICAgICAgICAgYWN0dWFsLm11bHRpbGluZSA9PT0gZXhwZWN0ZWQubXVsdGlsaW5lICYmXG4gICAgICAgICAgIGFjdHVhbC5sYXN0SW5kZXggPT09IGV4cGVjdGVkLmxhc3RJbmRleCAmJlxuICAgICAgICAgICBhY3R1YWwuaWdub3JlQ2FzZSA9PT0gZXhwZWN0ZWQuaWdub3JlQ2FzZTtcblxuICAvLyA3LjQuIE90aGVyIHBhaXJzIHRoYXQgZG8gbm90IGJvdGggcGFzcyB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcsXG4gIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgPT0uXG4gIH0gZWxzZSBpZiAoKGFjdHVhbCA9PT0gbnVsbCB8fCB0eXBlb2YgYWN0dWFsICE9PSAnb2JqZWN0JykgJiZcbiAgICAgICAgICAgICAoZXhwZWN0ZWQgPT09IG51bGwgfHwgdHlwZW9mIGV4cGVjdGVkICE9PSAnb2JqZWN0JykpIHtcbiAgICByZXR1cm4gc3RyaWN0ID8gYWN0dWFsID09PSBleHBlY3RlZCA6IGFjdHVhbCA9PSBleHBlY3RlZDtcblxuICAvLyBJZiBib3RoIHZhbHVlcyBhcmUgaW5zdGFuY2VzIG9mIHR5cGVkIGFycmF5cywgd3JhcCB0aGVpciB1bmRlcmx5aW5nXG4gIC8vIEFycmF5QnVmZmVycyBpbiBhIEJ1ZmZlciBlYWNoIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlXG4gIC8vIFRoaXMgb3B0aW1pemF0aW9uIHJlcXVpcmVzIHRoZSBhcnJheXMgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIGNoZWNrZWQgYnlcbiAgLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAoYWthIHBUb1N0cmluZykuIE5ldmVyIHBlcmZvcm0gYmluYXJ5XG4gIC8vIGNvbXBhcmlzb25zIGZvciBGbG9hdCpBcnJheXMsIHRob3VnaCwgc2luY2UgZS5nLiArMCA9PT0gLTAgYnV0IHRoZWlyXG4gIC8vIGJpdCBwYXR0ZXJucyBhcmUgbm90IGlkZW50aWNhbC5cbiAgfSBlbHNlIGlmIChpc1ZpZXcoYWN0dWFsKSAmJiBpc1ZpZXcoZXhwZWN0ZWQpICYmXG4gICAgICAgICAgICAgcFRvU3RyaW5nKGFjdHVhbCkgPT09IHBUb1N0cmluZyhleHBlY3RlZCkgJiZcbiAgICAgICAgICAgICAhKGFjdHVhbCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSB8fFxuICAgICAgICAgICAgICAgYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSkge1xuICAgIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGFjdHVhbC5idWZmZXIpLFxuICAgICAgICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KGV4cGVjdGVkLmJ1ZmZlcikpID09PSAwO1xuXG4gIC8vIDcuNSBGb3IgYWxsIG90aGVyIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5IG9iamVjdHMsIGVxdWl2YWxlbmNlIGlzXG4gIC8vIGRldGVybWluZWQgYnkgaGF2aW5nIHRoZSBzYW1lIG51bWJlciBvZiBvd25lZCBwcm9wZXJ0aWVzIChhcyB2ZXJpZmllZFxuICAvLyB3aXRoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCksIHRoZSBzYW1lIHNldCBvZiBrZXlzXG4gIC8vIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLCBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnlcbiAgLy8gY29ycmVzcG9uZGluZyBrZXksIGFuZCBhbiBpZGVudGljYWwgJ3Byb3RvdHlwZScgcHJvcGVydHkuIE5vdGU6IHRoaXNcbiAgLy8gYWNjb3VudHMgZm9yIGJvdGggbmFtZWQgYW5kIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJheXMuXG4gIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAhPT0gaXNCdWZmZXIoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIG1lbW9zID0gbWVtb3MgfHwge2FjdHVhbDogW10sIGV4cGVjdGVkOiBbXX07XG5cbiAgICB2YXIgYWN0dWFsSW5kZXggPSBtZW1vcy5hY3R1YWwuaW5kZXhPZihhY3R1YWwpO1xuICAgIGlmIChhY3R1YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChhY3R1YWxJbmRleCA9PT0gbWVtb3MuZXhwZWN0ZWQuaW5kZXhPZihleHBlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb3MuYWN0dWFsLnB1c2goYWN0dWFsKTtcbiAgICBtZW1vcy5leHBlY3RlZC5wdXNoKGV4cGVjdGVkKTtcblxuICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBzdHJpY3QsIG1lbW9zKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0FyZ3VtZW50cyhvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xufVxuXG5mdW5jdGlvbiBvYmpFcXVpdihhLCBiLCBzdHJpY3QsIGFjdHVhbFZpc2l0ZWRPYmplY3RzKSB7XG4gIGlmIChhID09PSBudWxsIHx8IGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG4gIC8vIGlmIG9uZSBpcyBhIHByaW1pdGl2ZSwgdGhlIG90aGVyIG11c3QgYmUgc2FtZVxuICBpZiAodXRpbC5pc1ByaW1pdGl2ZShhKSB8fCB1dGlsLmlzUHJpbWl0aXZlKGIpKVxuICAgIHJldHVybiBhID09PSBiO1xuICBpZiAoc3RyaWN0ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihhKSAhPT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGIpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgdmFyIGFJc0FyZ3MgPSBpc0FyZ3VtZW50cyhhKTtcbiAgdmFyIGJJc0FyZ3MgPSBpc0FyZ3VtZW50cyhiKTtcbiAgaWYgKChhSXNBcmdzICYmICFiSXNBcmdzKSB8fCAoIWFJc0FyZ3MgJiYgYklzQXJncykpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoYUlzQXJncykge1xuICAgIGEgPSBwU2xpY2UuY2FsbChhKTtcbiAgICBiID0gcFNsaWNlLmNhbGwoYik7XG4gICAgcmV0dXJuIF9kZWVwRXF1YWwoYSwgYiwgc3RyaWN0KTtcbiAgfVxuICB2YXIga2EgPSBvYmplY3RLZXlzKGEpO1xuICB2YXIga2IgPSBvYmplY3RLZXlzKGIpO1xuICB2YXIga2V5LCBpO1xuICAvLyBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGtleXMgaW5jb3Jwb3JhdGVzXG4gIC8vIGhhc093blByb3BlcnR5KVxuICBpZiAoa2EubGVuZ3RoICE9PSBrYi5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuICAvL3RoZSBzYW1lIHNldCBvZiBrZXlzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLFxuICBrYS5zb3J0KCk7XG4gIGtiLnNvcnQoKTtcbiAgLy9+fn5jaGVhcCBrZXkgdGVzdFxuICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChrYVtpXSAhPT0ga2JbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy9lcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXksIGFuZFxuICAvL35+fnBvc3NpYmx5IGV4cGVuc2l2ZSBkZWVwIHRlc3RcbiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBrZXkgPSBrYVtpXTtcbiAgICBpZiAoIV9kZWVwRXF1YWwoYVtrZXldLCBiW2tleV0sIHN0cmljdCwgYWN0dWFsVmlzaXRlZE9iamVjdHMpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vLyA4LiBUaGUgbm9uLWVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBmb3IgYW55IGRlZXAgaW5lcXVhbGl0eS5cbi8vIGFzc2VydC5ub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gbm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcEVxdWFsJywgYXNzZXJ0Lm5vdERlZXBFcXVhbCk7XG4gIH1cbn07XG5cbmFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwgPSBub3REZWVwU3RyaWN0RXF1YWw7XG5mdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCB0cnVlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ25vdERlZXBTdHJpY3RFcXVhbCcsIG5vdERlZXBTdHJpY3RFcXVhbCk7XG4gIH1cbn1cblxuXG4vLyA5LiBUaGUgc3RyaWN0IGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzdHJpY3QgZXF1YWxpdHksIGFzIGRldGVybWluZWQgYnkgPT09LlxuLy8gYXNzZXJ0LnN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LnN0cmljdEVxdWFsID0gZnVuY3Rpb24gc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09PScsIGFzc2VydC5zdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbi8vIDEwLiBUaGUgc3RyaWN0IG5vbi1lcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgZm9yIHN0cmljdCBpbmVxdWFsaXR5LCBhc1xuLy8gZGV0ZXJtaW5lZCBieSAhPT0uICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQubm90U3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT09JywgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkge1xuICBpZiAoIWFjdHVhbCB8fCAhZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGV4cGVjdGVkKSA9PSAnW29iamVjdCBSZWdFeHBdJykge1xuICAgIHJldHVybiBleHBlY3RlZC50ZXN0KGFjdHVhbCk7XG4gIH1cblxuICB0cnkge1xuICAgIGlmIChhY3R1YWwgaW5zdGFuY2VvZiBleHBlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSWdub3JlLiAgVGhlIGluc3RhbmNlb2YgY2hlY2sgZG9lc24ndCB3b3JrIGZvciBhcnJvdyBmdW5jdGlvbnMuXG4gIH1cblxuICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZXhwZWN0ZWQuY2FsbCh7fSwgYWN0dWFsKSA9PT0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gX3RyeUJsb2NrKGJsb2NrKSB7XG4gIHZhciBlcnJvcjtcbiAgdHJ5IHtcbiAgICBibG9jaygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyb3IgPSBlO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gX3Rocm93cyhzaG91bGRUaHJvdywgYmxvY2ssIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIHZhciBhY3R1YWw7XG5cbiAgaWYgKHR5cGVvZiBibG9jayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYmxvY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgbWVzc2FnZSA9IGV4cGVjdGVkO1xuICAgIGV4cGVjdGVkID0gbnVsbDtcbiAgfVxuXG4gIGFjdHVhbCA9IF90cnlCbG9jayhibG9jayk7XG5cbiAgbWVzc2FnZSA9IChleHBlY3RlZCAmJiBleHBlY3RlZC5uYW1lID8gJyAoJyArIGV4cGVjdGVkLm5hbWUgKyAnKS4nIDogJy4nKSArXG4gICAgICAgICAgICAobWVzc2FnZSA/ICcgJyArIG1lc3NhZ2UgOiAnLicpO1xuXG4gIGlmIChzaG91bGRUaHJvdyAmJiAhYWN0dWFsKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnTWlzc2luZyBleHBlY3RlZCBleGNlcHRpb24nICsgbWVzc2FnZSk7XG4gIH1cblxuICB2YXIgdXNlclByb3ZpZGVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJztcbiAgdmFyIGlzVW53YW50ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgdXRpbC5pc0Vycm9yKGFjdHVhbCk7XG4gIHZhciBpc1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmICFleHBlY3RlZDtcblxuICBpZiAoKGlzVW53YW50ZWRFeGNlcHRpb24gJiZcbiAgICAgIHVzZXJQcm92aWRlZE1lc3NhZ2UgJiZcbiAgICAgIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpKSB8fFxuICAgICAgaXNVbmV4cGVjdGVkRXhjZXB0aW9uKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnR290IHVud2FudGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTtcbiAgfVxuXG4gIGlmICgoc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmIGV4cGVjdGVkICYmXG4gICAgICAhZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8ICghc2hvdWxkVGhyb3cgJiYgYWN0dWFsKSkge1xuICAgIHRocm93IGFjdHVhbDtcbiAgfVxufVxuXG4vLyAxMS4gRXhwZWN0ZWQgdG8gdGhyb3cgYW4gZXJyb3I6XG4vLyBhc3NlcnQudGhyb3dzKGJsb2NrLCBFcnJvcl9vcHQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LnRocm93cyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkge1xuICBfdGhyb3dzKHRydWUsIGJsb2NrLCBlcnJvciwgbWVzc2FnZSk7XG59O1xuXG4vLyBFWFRFTlNJT04hIFRoaXMgaXMgYW5ub3lpbmcgdG8gd3JpdGUgb3V0c2lkZSB0aGlzIG1vZHVsZS5cbmFzc2VydC5kb2VzTm90VGhyb3cgPSBmdW5jdGlvbihibG9jaywgLypvcHRpb25hbCovZXJyb3IsIC8qb3B0aW9uYWwqL21lc3NhZ2UpIHtcbiAgX3Rocm93cyhmYWxzZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTtcbn07XG5cbmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24oZXJyKSB7IGlmIChlcnIpIHRocm93IGVycjsgfTtcblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoaGFzT3duLmNhbGwob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4ga2V5cztcbn07XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIoYXJnKSB7XG4gIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCdcbiAgICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLmZpbGwgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLnJlYWRVSW50OCA9PT0gJ2Z1bmN0aW9uJztcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIC8vIEFsbG93IGZvciBkZXByZWNhdGluZyB0aGluZ3MgaW4gdGhlIHByb2Nlc3Mgb2Ygc3RhcnRpbmcgdXAuXG4gIGlmIChpc1VuZGVmaW5lZChnbG9iYWwucHJvY2VzcykpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZXhwb3J0cy5kZXByZWNhdGUoZm4sIG1zZykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKHByb2Nlc3Mubm9EZXByZWNhdGlvbiA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59O1xuXG5cbnZhciBkZWJ1Z3MgPSB7fTtcbnZhciBkZWJ1Z0Vudmlyb247XG5leHBvcnRzLmRlYnVnbG9nID0gZnVuY3Rpb24oc2V0KSB7XG4gIGlmIChpc1VuZGVmaW5lZChkZWJ1Z0Vudmlyb24pKVxuICAgIGRlYnVnRW52aXJvbiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJyc7XG4gIHNldCA9IHNldC50b1VwcGVyQ2FzZSgpO1xuICBpZiAoIWRlYnVnc1tzZXRdKSB7XG4gICAgaWYgKG5ldyBSZWdFeHAoJ1xcXFxiJyArIHNldCArICdcXFxcYicsICdpJykudGVzdChkZWJ1Z0Vudmlyb24pKSB7XG4gICAgICB2YXIgcGlkID0gcHJvY2Vzcy5waWQ7XG4gICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbXNnID0gZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywgYXJndW1lbnRzKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWJ1Z3Nbc2V0XTtcbn07XG5cblxuLyoqXG4gKiBFY2hvcyB0aGUgdmFsdWUgb2YgYSB2YWx1ZS4gVHJ5cyB0byBwcmludCB0aGUgdmFsdWUgb3V0XG4gKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcHJpbnQgb3V0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC5cbiAqL1xuLyogbGVnYWN5OiBvYmosIHNob3dIaWRkZW4sIGRlcHRoLCBjb2xvcnMqL1xuZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIGV4cG9ydHMuX2V4dGVuZChjdHgsIG9wdHMpO1xuICB9XG4gIC8vIHNldCBkZWZhdWx0IG9wdGlvbnNcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5zaG93SGlkZGVuKSkgY3R4LnNob3dIaWRkZW4gPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5kZXB0aCkpIGN0eC5kZXB0aCA9IDI7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY29sb3JzKSkgY3R4LmNvbG9ycyA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmN1c3RvbUluc3BlY3QpKSBjdHguY3VzdG9tSW5zcGVjdCA9IHRydWU7XG4gIGlmIChjdHguY29sb3JzKSBjdHguc3R5bGl6ZSA9IHN0eWxpemVXaXRoQ29sb3I7XG4gIHJldHVybiBmb3JtYXRWYWx1ZShjdHgsIG9iaiwgY3R4LmRlcHRoKTtcbn1cbmV4cG9ydHMuaW5zcGVjdCA9IGluc3BlY3Q7XG5cblxuLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTlNJX2VzY2FwZV9jb2RlI2dyYXBoaWNzXG5pbnNwZWN0LmNvbG9ycyA9IHtcbiAgJ2JvbGQnIDogWzEsIDIyXSxcbiAgJ2l0YWxpYycgOiBbMywgMjNdLFxuICAndW5kZXJsaW5lJyA6IFs0LCAyNF0sXG4gICdpbnZlcnNlJyA6IFs3LCAyN10sXG4gICd3aGl0ZScgOiBbMzcsIDM5XSxcbiAgJ2dyZXknIDogWzkwLCAzOV0sXG4gICdibGFjaycgOiBbMzAsIDM5XSxcbiAgJ2JsdWUnIDogWzM0LCAzOV0sXG4gICdjeWFuJyA6IFszNiwgMzldLFxuICAnZ3JlZW4nIDogWzMyLCAzOV0sXG4gICdtYWdlbnRhJyA6IFszNSwgMzldLFxuICAncmVkJyA6IFszMSwgMzldLFxuICAneWVsbG93JyA6IFszMywgMzldXG59O1xuXG4vLyBEb24ndCB1c2UgJ2JsdWUnIG5vdCB2aXNpYmxlIG9uIGNtZC5leGVcbmluc3BlY3Quc3R5bGVzID0ge1xuICAnc3BlY2lhbCc6ICdjeWFuJyxcbiAgJ251bWJlcic6ICd5ZWxsb3cnLFxuICAnYm9vbGVhbic6ICd5ZWxsb3cnLFxuICAndW5kZWZpbmVkJzogJ2dyZXknLFxuICAnbnVsbCc6ICdib2xkJyxcbiAgJ3N0cmluZyc6ICdncmVlbicsXG4gICdkYXRlJzogJ21hZ2VudGEnLFxuICAvLyBcIm5hbWVcIjogaW50ZW50aW9uYWxseSBub3Qgc3R5bGluZ1xuICAncmVnZXhwJzogJ3JlZCdcbn07XG5cblxuZnVuY3Rpb24gc3R5bGl6ZVdpdGhDb2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICB2YXIgc3R5bGUgPSBpbnNwZWN0LnN0eWxlc1tzdHlsZVR5cGVdO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHJldHVybiAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzBdICsgJ20nICsgc3RyICtcbiAgICAgICAgICAgJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVsxXSArICdtJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc3R5bGl6ZU5vQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgcmV0dXJuIHN0cjtcbn1cblxuXG5mdW5jdGlvbiBhcnJheVRvSGFzaChhcnJheSkge1xuICB2YXIgaGFzaCA9IHt9O1xuXG4gIGFycmF5LmZvckVhY2goZnVuY3Rpb24odmFsLCBpZHgpIHtcbiAgICBoYXNoW3ZhbF0gPSB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gaGFzaDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMpIHtcbiAgLy8gUHJvdmlkZSBhIGhvb2sgZm9yIHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLlxuICAvLyBDaGVjayB0aGF0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGFuIGluc3BlY3QgZnVuY3Rpb24gb24gaXRcbiAgaWYgKGN0eC5jdXN0b21JbnNwZWN0ICYmXG4gICAgICB2YWx1ZSAmJlxuICAgICAgaXNGdW5jdGlvbih2YWx1ZS5pbnNwZWN0KSAmJlxuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgdXRpbCBtb2R1bGUsIGl0J3MgaW5zcGVjdCBmdW5jdGlvbiBpcyBzcGVjaWFsXG4gICAgICB2YWx1ZS5pbnNwZWN0ICE9PSBleHBvcnRzLmluc3BlY3QgJiZcbiAgICAgIC8vIEFsc28gZmlsdGVyIG91dCBhbnkgcHJvdG90eXBlIG9iamVjdHMgdXNpbmcgdGhlIGNpcmN1bGFyIGNoZWNrLlxuICAgICAgISh2YWx1ZS5jb25zdHJ1Y3RvciAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgPT09IHZhbHVlKSkge1xuICAgIHZhciByZXQgPSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTtcbiAgICBpZiAoIWlzU3RyaW5nKHJldCkpIHtcbiAgICAgIHJldCA9IGZvcm1hdFZhbHVlKGN0eCwgcmV0LCByZWN1cnNlVGltZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLy8gUHJpbWl0aXZlIHR5cGVzIGNhbm5vdCBoYXZlIHByb3BlcnRpZXNcbiAgdmFyIHByaW1pdGl2ZSA9IGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKTtcbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHJldHVybiBwcmltaXRpdmU7XG4gIH1cblxuICAvLyBMb29rIHVwIHRoZSBrZXlzIG9mIHRoZSBvYmplY3QuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTtcblxuICBpZiAoY3R4LnNob3dIaWRkZW4pIHtcbiAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpO1xuICB9XG5cbiAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxkcyBub24tZW51bWVyYWJsZVxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvZHd3NTJzYnQodj12cy45NCkuYXNweFxuICBpZiAoaXNFcnJvcih2YWx1ZSlcbiAgICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVzY3JpcHRpb24nKSA+PSAwKSkge1xuICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICAvLyBTb21lIHR5cGUgb2Ygb2JqZWN0IHdpdGhvdXQgcHJvcGVydGllcyBjYW4gYmUgc2hvcnRjdXR0ZWQuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW0Z1bmN0aW9uJyArIG5hbWUgKyAnXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfVxuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdkYXRlJyk7XG4gICAgfVxuICAgIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZhbHNlLCBicmFjZXMgPSBbJ3snLCAnfSddO1xuXG4gIC8vIE1ha2UgQXJyYXkgc2F5IHRoYXQgdGhleSBhcmUgQXJyYXlcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgYXJyYXkgPSB0cnVlO1xuICAgIGJyYWNlcyA9IFsnWycsICddJ107XG4gIH1cblxuICAvLyBNYWtlIGZ1bmN0aW9ucyBzYXkgdGhhdCB0aGV5IGFyZSBmdW5jdGlvbnNcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgdmFyIG4gPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICBiYXNlID0gJyBbRnVuY3Rpb24nICsgbiArICddJztcbiAgfVxuXG4gIC8vIE1ha2UgUmVnRXhwcyBzYXkgdGhhdCB0aGV5IGFyZSBSZWdFeHBzXG4gIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZGF0ZXMgd2l0aCBwcm9wZXJ0aWVzIGZpcnN0IHNheSB0aGUgZGF0ZVxuICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0IHNheSB0aGUgZXJyb3JcbiAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCAmJiAoIWFycmF5IHx8IHZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgYnJhY2VzWzFdO1xuICB9XG5cbiAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHtcbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tPYmplY3RdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cblxuICBjdHguc2Vlbi5wdXNoKHZhbHVlKTtcblxuICB2YXIgb3V0cHV0O1xuICBpZiAoYXJyYXkpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKTtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGN0eC5zZWVuLnBvcCgpO1xuXG4gIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHZhciBzaW1wbGUgPSAnXFwnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eXCJ8XCIkL2csICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKSArICdcXCcnO1xuICAgIHJldHVybiBjdHguc3R5bGl6ZShzaW1wbGUsICdzdHJpbmcnKTtcbiAgfVxuICBpZiAoaXNOdW1iZXIodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnbnVtYmVyJyk7XG4gIGlmIChpc0Jvb2xlYW4odmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnYm9vbGVhbicpO1xuICAvLyBGb3Igc29tZSByZWFzb24gdHlwZW9mIG51bGwgaXMgXCJvYmplY3RcIiwgc28gc3BlY2lhbCBjYXNlIGhlcmUuXG4gIGlmIChpc051bGwodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0RXJyb3IodmFsdWUpIHtcbiAgcmV0dXJuICdbJyArIEVycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSArICddJztcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkodmFsdWUsIFN0cmluZyhpKSkpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAgU3RyaW5nKGkpLCB0cnVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gIH1cbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGlmICgha2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBrZXksIHRydWUpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHtcbiAgdmFyIG5hbWUsIHN0ciwgZGVzYztcbiAgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkgfHwgeyB2YWx1ZTogdmFsdWVba2V5XSB9O1xuICBpZiAoZGVzYy5nZXQpIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyL1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmICghaGFzT3duUHJvcGVydHkodmlzaWJsZUtleXMsIGtleSkpIHtcbiAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nO1xuICB9XG4gIGlmICghc3RyKSB7XG4gICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7XG4gICAgICBpZiAoaXNOdWxsKHJlY3Vyc2VUaW1lcykpIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgcmVjdXJzZVRpbWVzIC0gMSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyLmluZGV4T2YoJ1xcbicpID4gLTEpIHtcbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpLnN1YnN0cigyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHIgPSAnXFxuJyArIHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBpZiAoYXJyYXkgJiYga2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgbmFtZSA9IEpTT04uc3RyaW5naWZ5KCcnICsga2V5KTtcbiAgICBpZiAobmFtZS5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLykpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICduYW1lJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXlwifFwiJCkvZywgXCInXCIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICdzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZSArICc6ICcgKyBzdHI7XG59XG5cblxuZnVuY3Rpb24gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpIHtcbiAgdmFyIG51bUxpbmVzRXN0ID0gMDtcbiAgdmFyIGxlbmd0aCA9IG91dHB1dC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY3VyKSB7XG4gICAgbnVtTGluZXNFc3QrKztcbiAgICBpZiAoY3VyLmluZGV4T2YoJ1xcbicpID49IDApIG51bUxpbmVzRXN0Kys7XG4gICAgcmV0dXJuIHByZXYgKyBjdXIucmVwbGFjZSgvXFx1MDAxYlxcW1xcZFxcZD9tL2csICcnKS5sZW5ndGggKyAxO1xuICB9LCAwKTtcblxuICBpZiAobGVuZ3RoID4gNjApIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICtcbiAgICAgICAgICAgKGJhc2UgPT09ICcnID8gJycgOiBiYXNlICsgJ1xcbiAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIG91dHB1dC5qb2luKCcsXFxuICAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIGJyYWNlc1sxXTtcbiAgfVxuXG4gIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgJyAnICsgb3V0cHV0LmpvaW4oJywgJykgKyAnICcgKyBicmFjZXNbMV07XG59XG5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cbmZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gaXNPYmplY3QoZCkgJiYgb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGwgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8fCAgLy8gRVM2IHN5bWJvbFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSByZXF1aXJlKCcuL3N1cHBvcnQvaXNCdWZmZXInKTtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuXG5cbmZ1bmN0aW9uIHBhZChuKSB7XG4gIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuLnRvU3RyaW5nKDEwKSA6IG4udG9TdHJpbmcoMTApO1xufVxuXG5cbnZhciBtb250aHMgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJyxcbiAgICAgICAgICAgICAgJ09jdCcsICdOb3YnLCAnRGVjJ107XG5cbi8vIDI2IEZlYiAxNjoxOTozNFxuZnVuY3Rpb24gdGltZXN0YW1wKCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKCk7XG4gIHZhciB0aW1lID0gW3BhZChkLmdldEhvdXJzKCkpLFxuICAgICAgICAgICAgICBwYWQoZC5nZXRNaW51dGVzKCkpLFxuICAgICAgICAgICAgICBwYWQoZC5nZXRTZWNvbmRzKCkpXS5qb2luKCc6Jyk7XG4gIHJldHVybiBbZC5nZXREYXRlKCksIG1vbnRoc1tkLmdldE1vbnRoKCldLCB0aW1lXS5qb2luKCcgJyk7XG59XG5cblxuLy8gbG9nIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgdG8gY29uc29sZS5sb2cgdGhhdCBwcmVwZW5kcyBhIHRpbWVzdGFtcFxuZXhwb3J0cy5sb2cgPSBmdW5jdGlvbigpIHtcbiAgY29uc29sZS5sb2coJyVzIC0gJXMnLCB0aW1lc3RhbXAoKSwgZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywgYXJndW1lbnRzKSk7XG59O1xuXG5cbi8qKlxuICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyLlxuICpcbiAqIFRoZSBGdW5jdGlvbi5wcm90b3R5cGUuaW5oZXJpdHMgZnJvbSBsYW5nLmpzIHJld3JpdHRlbiBhcyBhIHN0YW5kYWxvbmVcbiAqIGZ1bmN0aW9uIChub3Qgb24gRnVuY3Rpb24ucHJvdG90eXBlKS4gTk9URTogSWYgdGhpcyBmaWxlIGlzIHRvIGJlIGxvYWRlZFxuICogZHVyaW5nIGJvb3RzdHJhcHBpbmcgdGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSByZXdyaXR0ZW4gdXNpbmcgc29tZSBuYXRpdmVcbiAqIGZ1bmN0aW9ucyBhcyBwcm90b3R5cGUgc2V0dXAgdXNpbmcgbm9ybWFsIEphdmFTY3JpcHQgZG9lcyBub3Qgd29yayBhc1xuICogZXhwZWN0ZWQgZHVyaW5nIGJvb3RzdHJhcHBpbmcgKHNlZSBtaXJyb3IuanMgaW4gcjExNDkwMykuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB3aGljaCBuZWVkcyB0byBpbmhlcml0IHRoZVxuICogICAgIHByb3RvdHlwZS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB0byBpbmhlcml0IHByb3RvdHlwZSBmcm9tLlxuICovXG5leHBvcnRzLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZXhwb3J0cy5fZXh0ZW5kID0gZnVuY3Rpb24ob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8XG4gICAgICByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMikge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gNClcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDEpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPj4gMilcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG4gIHJldHVybiBsb29rdXBbbnVtID4+IDE4ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gJiAweDNGXVxufVxuXG5mdW5jdGlvbiBlbmNvZGVDaHVuayAodWludDgsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHRtcFxuICB2YXIgb3V0cHV0ID0gW11cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IDMpIHtcbiAgICB0bXAgPVxuICAgICAgKCh1aW50OFtpXSA8PCAxNikgJiAweEZGMDAwMCkgK1xuICAgICAgKCh1aW50OFtpICsgMV0gPDwgOCkgJiAweEZGMDApICtcbiAgICAgICh1aW50OFtpICsgMl0gJiAweEZGKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVuID0gdWludDgubGVuZ3RoXG4gIHZhciBleHRyYUJ5dGVzID0gbGVuICUgMyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuICB2YXIgcGFydHMgPSBbXVxuICB2YXIgbWF4Q2h1bmtMZW5ndGggPSAxNjM4MyAvLyBtdXN0IGJlIG11bHRpcGxlIG9mIDNcblxuICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4yID0gbGVuIC0gZXh0cmFCeXRlczsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKFxuICAgICAgdWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKVxuICAgICkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAyXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdICtcbiAgICAgICc9PSdcbiAgICApXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArIHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMTBdICtcbiAgICAgIGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgMikgJiAweDNGXSArXG4gICAgICAnPSdcbiAgICApXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJaUlzSW1acGJHVWlPaUpsYlhCMGVTNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJaUlzSW1acGJHVWlPaUpmWlcxd2RIa3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2VzExOSIsIi8qISBodHRwczovL210aHMuYmUvcHVueWNvZGUgdjEuNC4xIGJ5IEBtYXRoaWFzICovXG47KGZ1bmN0aW9uKHJvb3QpIHtcblxuXHQvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGVzICovXG5cdHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiZcblx0XHQhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXHR2YXIgZnJlZU1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmXG5cdFx0IW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cdHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWw7XG5cdGlmIChcblx0XHRmcmVlR2xvYmFsLmdsb2JhbCA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwud2luZG93ID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC5zZWxmID09PSBmcmVlR2xvYmFsXG5cdCkge1xuXHRcdHJvb3QgPSBmcmVlR2xvYmFsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBgcHVueWNvZGVgIG9iamVjdC5cblx0ICogQG5hbWUgcHVueWNvZGVcblx0ICogQHR5cGUgT2JqZWN0XG5cdCAqL1xuXHR2YXIgcHVueWNvZGUsXG5cblx0LyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xuXHRtYXhJbnQgPSAyMTQ3NDgzNjQ3LCAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cblx0LyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xuXHRiYXNlID0gMzYsXG5cdHRNaW4gPSAxLFxuXHR0TWF4ID0gMjYsXG5cdHNrZXcgPSAzOCxcblx0ZGFtcCA9IDcwMCxcblx0aW5pdGlhbEJpYXMgPSA3Mixcblx0aW5pdGlhbE4gPSAxMjgsIC8vIDB4ODBcblx0ZGVsaW1pdGVyID0gJy0nLCAvLyAnXFx4MkQnXG5cblx0LyoqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgKi9cblx0cmVnZXhQdW55Y29kZSA9IC9eeG4tLS8sXG5cdHJlZ2V4Tm9uQVNDSUkgPSAvW15cXHgyMC1cXHg3RV0vLCAvLyB1bnByaW50YWJsZSBBU0NJSSBjaGFycyArIG5vbi1BU0NJSSBjaGFyc1xuXHRyZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nLCAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cblx0LyoqIEVycm9yIG1lc3NhZ2VzICovXG5cdGVycm9ycyA9IHtcblx0XHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHRcdCdub3QtYmFzaWMnOiAnSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KScsXG5cdFx0J2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcblx0fSxcblxuXHQvKiogQ29udmVuaWVuY2Ugc2hvcnRjdXRzICovXG5cdGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbixcblx0Zmxvb3IgPSBNYXRoLmZsb29yLFxuXHRzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLFxuXG5cdC8qKiBUZW1wb3JhcnkgdmFyaWFibGUgKi9cblx0a2V5O1xuXG5cdC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgZXJyb3IgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG5cdCAqIEByZXR1cm5zIHtFcnJvcn0gVGhyb3dzIGEgYFJhbmdlRXJyb3JgIHdpdGggdGhlIGFwcGxpY2FibGUgZXJyb3IgbWVzc2FnZS5cblx0ICovXG5cdGZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcblx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBgQXJyYXkjbWFwYCB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgYXJyYXlcblx0ICogaXRlbS5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuXHRcdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xuXHRcdHdoaWxlIChsZW5ndGgtLSkge1xuXHRcdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcblx0ICogYWRkcmVzc2VzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcblx0ICogY2hhcmFjdGVyLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG5cdFx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdFx0dmFyIHJlc3VsdCA9ICcnO1xuXHRcdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0XHQvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuXHRcdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0XHR9XG5cdFx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRcdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdFx0dmFyIGxhYmVscyA9IHN0cmluZy5zcGxpdCgnLicpO1xuXHRcdHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcblx0XHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG5cdCAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcblx0ICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcblx0ICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG5cdCAqIG1hdGNoaW5nIFVURi0xNi5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG5cdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBkZWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cblx0ICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0XHR2YXIgb3V0cHV0ID0gW10sXG5cdFx0ICAgIGNvdW50ZXIgPSAwLFxuXHRcdCAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuXHRcdCAgICB2YWx1ZSxcblx0XHQgICAgZXh0cmE7XG5cdFx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdFx0Ly8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG5cdFx0XHRcdGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcblx0XHRcdFx0XHRvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG5cdFx0XHRcdFx0Ly8gY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0cHV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGVuY29kZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdFx0cmV0dXJuIG1hcChhcnJheSwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdHZhciBvdXRwdXQgPSAnJztcblx0XHRcdGlmICh2YWx1ZSA+IDB4RkZGRikge1xuXHRcdFx0XHR2YWx1ZSAtPSAweDEwMDAwO1xuXHRcdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcblx0XHRcdFx0dmFsdWUgPSAweERDMDAgfCB2YWx1ZSAmIDB4M0ZGO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG5cdFx0XHRyZXR1cm4gb3V0cHV0O1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cblx0ICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcblx0ICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdFx0aWYgKGNvZGVQb2ludCAtIDQ4IDwgMTApIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSAyMjtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDY1IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA2NTtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDk3IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA5Nztcblx0XHR9XG5cdFx0cmV0dXJuIGJhc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3Jcblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpcyBgZGlnaXRgLCB3aGljaCBuZWVkcyB0byBiZSBpbiB0aGUgcmFuZ2Vcblx0ICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG5cdCAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG5cdCAqIGlmIGBmbGFnYCBpcyBub24temVybyBhbmQgYGRpZ2l0YCBoYXMgbm8gdXBwZXJjYXNlIGZvcm0uXG5cdCAqL1xuXHRmdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcblx0XHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHRcdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRcdHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG5cdH1cblxuXHQvKipcblx0ICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cblx0ICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHRcdHZhciBrID0gMDtcblx0XHRkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuXHRcdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0XHRmb3IgKC8qIG5vIGluaXRpYWxpemF0aW9uICovOyBkZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuXHRcdFx0ZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuXHRcdH1cblx0XHRyZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMgdG8gYSBzdHJpbmcgb2YgVW5pY29kZVxuXHQgKiBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0XHQvLyBEb24ndCB1c2UgVUNTLTJcblx0XHR2YXIgb3V0cHV0ID0gW10sXG5cdFx0ICAgIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLFxuXHRcdCAgICBvdXQsXG5cdFx0ICAgIGkgPSAwLFxuXHRcdCAgICBuID0gaW5pdGlhbE4sXG5cdFx0ICAgIGJpYXMgPSBpbml0aWFsQmlhcyxcblx0XHQgICAgYmFzaWMsXG5cdFx0ICAgIGosXG5cdFx0ICAgIGluZGV4LFxuXHRcdCAgICBvbGRpLFxuXHRcdCAgICB3LFxuXHRcdCAgICBrLFxuXHRcdCAgICBkaWdpdCxcblx0XHQgICAgdCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGJhc2VNaW51c1Q7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzOiBsZXQgYGJhc2ljYCBiZSB0aGUgbnVtYmVyIG9mIGlucHV0IGNvZGVcblx0XHQvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuXHRcdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdFx0YmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuXHRcdGlmIChiYXNpYyA8IDApIHtcblx0XHRcdGJhc2ljID0gMDtcblx0XHR9XG5cblx0XHRmb3IgKGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuXHRcdFx0Ly8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG5cdFx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRcdGVycm9yKCdub3QtYmFzaWMnKTtcblx0XHRcdH1cblx0XHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZGVjb2RpbmcgbG9vcDogc3RhcnQganVzdCBhZnRlciB0aGUgbGFzdCBkZWxpbWl0ZXIgaWYgYW55IGJhc2ljIGNvZGVcblx0XHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdFx0Zm9yIChpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7IC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi8pIHtcblxuXHRcdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdFx0Ly8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuXHRcdFx0Ly8gd2hpY2ggZ2V0cyBhZGRlZCB0byBgaWAuIFRoZSBvdmVyZmxvdyBjaGVja2luZyBpcyBlYXNpZXJcblx0XHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0XHQvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuXHRcdFx0Zm9yIChvbGRpID0gaSwgdyA9IDEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXG5cdFx0XHRcdGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuXHRcdFx0XHRcdGVycm9yKCdpbnZhbGlkLWlucHV0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpICs9IGRpZ2l0ICogdztcblx0XHRcdFx0dCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0IDwgdCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR3ICo9IGJhc2VNaW51c1Q7XG5cblx0XHRcdH1cblxuXHRcdFx0b3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG5cdFx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdFx0Ly8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcblx0XHRcdC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG5cdFx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRuICs9IGZsb29yKGkgLyBvdXQpO1xuXHRcdFx0aSAlPSBvdXQ7XG5cblx0XHRcdC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXRcblx0XHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblxuXHRcdH1cblxuXHRcdHJldHVybiB1Y3MyZW5jb2RlKG91dHB1dCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcblx0ICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZW5jb2RlKGlucHV0KSB7XG5cdFx0dmFyIG4sXG5cdFx0ICAgIGRlbHRhLFxuXHRcdCAgICBoYW5kbGVkQ1BDb3VudCxcblx0XHQgICAgYmFzaWNMZW5ndGgsXG5cdFx0ICAgIGJpYXMsXG5cdFx0ICAgIGosXG5cdFx0ICAgIG0sXG5cdFx0ICAgIHEsXG5cdFx0ICAgIGssXG5cdFx0ICAgIHQsXG5cdFx0ICAgIGN1cnJlbnRWYWx1ZSxcblx0XHQgICAgb3V0cHV0ID0gW10sXG5cdFx0ICAgIC8qKiBgaW5wdXRMZW5ndGhgIHdpbGwgaG9sZCB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIGBpbnB1dGAuICovXG5cdFx0ICAgIGlucHV0TGVuZ3RoLFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgaGFuZGxlZENQQ291bnRQbHVzT25lLFxuXHRcdCAgICBiYXNlTWludXNULFxuXHRcdCAgICBxTWludXNUO1xuXG5cdFx0Ly8gQ29udmVydCB0aGUgaW5wdXQgaW4gVUNTLTIgdG8gVW5pY29kZVxuXHRcdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0XHQvLyBDYWNoZSB0aGUgbGVuZ3RoXG5cdFx0aW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cblx0XHQvLyBJbml0aWFsaXplIHRoZSBzdGF0ZVxuXHRcdG4gPSBpbml0aWFsTjtcblx0XHRkZWx0YSA9IDA7XG5cdFx0YmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50c1xuXHRcdGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDtcblxuXHRcdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHRcdC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuXHRcdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIC0gaWYgaXQgaXMgbm90IGVtcHR5IC0gd2l0aCBhIGRlbGltaXRlclxuXHRcdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdFx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdFx0Ly8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dFxuXHRcdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHRcdGZvciAobSA9IG1heEludCwgaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuXHRcdFx0XHRcdG0gPSBjdXJyZW50VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuXHRcdFx0Ly8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3dcblx0XHRcdGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcblx0XHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdFx0biA9IG07XG5cblx0XHRcdGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPT0gbikge1xuXHRcdFx0XHRcdC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyXG5cdFx0XHRcdFx0Zm9yIChxID0gZGVsdGEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXHRcdFx0XHRcdFx0dCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cdFx0XHRcdFx0XHRpZiAocSA8IHQpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRxTWludXNUID0gcSAtIHQ7XG5cdFx0XHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaChcblx0XHRcdFx0XHRcdFx0c3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRcdGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG5cdFx0XHRcdFx0ZGVsdGEgPSAwO1xuXHRcdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0KytkZWx0YTtcblx0XHRcdCsrbjtcblxuXHRcdH1cblx0XHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3Ncblx0ICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuXHQgKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cblx0ICogY29udmVydGVkIHRvIFVuaWNvZGUuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIGNvbnZlcnQgdG8gVW5pY29kZS5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG5cdCAqIHN0cmluZy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKVxuXHRcdFx0XHQ6IHN0cmluZztcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG5cdCAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuXHQgKiBBU0NJSS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG5cdCAqIFVuaWNvZGUgc3RyaW5nLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG5cdCAqIGVtYWlsIGFkZHJlc3MuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b0FTQ0lJKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyAneG4tLScgKyBlbmNvZGUoc3RyaW5nKVxuXHRcdFx0XHQ6IHN0cmluZztcblx0XHR9KTtcblx0fVxuXG5cdC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdC8qKiBEZWZpbmUgdGhlIHB1YmxpYyBBUEkgKi9cblx0cHVueWNvZGUgPSB7XG5cdFx0LyoqXG5cdFx0ICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IFB1bnljb2RlLmpzIHZlcnNpb24gbnVtYmVyLlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIFN0cmluZ1xuXHRcdCAqL1xuXHRcdCd2ZXJzaW9uJzogJzEuNC4xJyxcblx0XHQvKipcblx0XHQgKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuXHRcdCAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG5cdFx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgT2JqZWN0XG5cdFx0ICovXG5cdFx0J3VjczInOiB7XG5cdFx0XHQnZGVjb2RlJzogdWNzMmRlY29kZSxcblx0XHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdFx0fSxcblx0XHQnZGVjb2RlJzogZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiBlbmNvZGUsXG5cdFx0J3RvQVNDSUknOiB0b0FTQ0lJLFxuXHRcdCd0b1VuaWNvZGUnOiB0b1VuaWNvZGVcblx0fTtcblxuXHQvKiogRXhwb3NlIGBwdW55Y29kZWAgKi9cblx0Ly8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3Igc3BlY2lmaWMgY29uZGl0aW9uIHBhdHRlcm5zXG5cdC8vIGxpa2UgdGhlIGZvbGxvd2luZzpcblx0aWYgKFxuXHRcdHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJlxuXHRcdHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmXG5cdFx0ZGVmaW5lLmFtZFxuXHQpIHtcblx0XHRkZWZpbmUoJ3B1bnljb2RlJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gcHVueWNvZGU7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAoZnJlZUV4cG9ydHMgJiYgZnJlZU1vZHVsZSkge1xuXHRcdGlmIChtb2R1bGUuZXhwb3J0cyA9PSBmcmVlRXhwb3J0cykge1xuXHRcdFx0Ly8gaW4gTm9kZS5qcywgaW8uanMsIG9yIFJpbmdvSlMgdjAuOC4wK1xuXHRcdFx0ZnJlZU1vZHVsZS5leHBvcnRzID0gcHVueWNvZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluIE5hcndoYWwgb3IgUmluZ29KUyB2MC43LjAtXG5cdFx0XHRmb3IgKGtleSBpbiBwdW55Y29kZSkge1xuXHRcdFx0XHRwdW55Y29kZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIChmcmVlRXhwb3J0c1trZXldID0gcHVueWNvZGVba2V5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIGluIFJoaW5vIG9yIGEgd2ViIGJyb3dzZXJcblx0XHRyb290LnB1bnljb2RlID0gcHVueWNvZGU7XG5cdH1cblxufSh0aGlzKSk7XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxudmFyIEtfTUFYX0xFTkdUSCA9IDB4N2ZmZmZmZmZcbmV4cG9ydHMua01heExlbmd0aCA9IEtfTUFYX0xFTkdUSFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBQcmludCB3YXJuaW5nIGFuZCByZWNvbW1lbmQgdXNpbmcgYGJ1ZmZlcmAgdjQueCB3aGljaCBoYXMgYW4gT2JqZWN0XG4gKiAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBXZSByZXBvcnQgdGhhdCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBpZiB0aGUgYXJlIG5vdCBzdWJjbGFzc2FibGVcbiAqIHVzaW5nIF9fcHJvdG9fXy4gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWBcbiAqIChTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOCkuIElFIDEwIGxhY2tzIHN1cHBvcnRcbiAqIGZvciBfX3Byb3RvX18gYW5kIGhhcyBhIGJ1Z2d5IHR5cGVkIGFycmF5IGltcGxlbWVudGF0aW9uLlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICBjb25zb2xlLmVycm9yKFxuICAgICdUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgJyArXG4gICAgJ2BidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuJ1xuICApXG59XG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgLy8gQ2FuIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkP1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7IF9fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfSB9XG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDJcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAncGFyZW50Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ1ZmZlclxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ29mZnNldCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ieXRlT2Zmc2V0XG4gIH1cbn0pXG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAobGVuZ3RoKSB7XG4gIGlmIChsZW5ndGggPiBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIGxlbmd0aCArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gIGJ1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBidWZcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZShhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20oYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgIT0gbnVsbCAmJlxuICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLCBTeW1ib2wuc3BlY2llcywge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSlcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2UodmFsdWUpXG4gIH1cblxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHRocm93IFR5cGVFcnJvcihcbiAgICAgICdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCAnICtcbiAgICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgICApXG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZSh2YWx1ZSwgQXJyYXlCdWZmZXIpIHx8XG4gICAgICAodmFsdWUgJiYgaXNJbnN0YW5jZSh2YWx1ZS5idWZmZXIsIEFycmF5QnVmZmVyKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInXG4gICAgKVxuICB9XG5cbiAgdmFyIHZhbHVlT2YgPSB2YWx1ZS52YWx1ZU9mICYmIHZhbHVlLnZhbHVlT2YoKVxuICBpZiAodmFsdWVPZiAhPSBudWxsICYmIHZhbHVlT2YgIT09IHZhbHVlKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHZhbHVlT2YsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIHZhciBiID0gZnJvbU9iamVjdCh2YWx1ZSlcbiAgaWYgKGIpIHJldHVybiBiXG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1ByaW1pdGl2ZSAhPSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShcbiAgICAgIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0oJ3N0cmluZycpLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGhcbiAgICApXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCAnICtcbiAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gIClcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBOb3RlOiBDaGFuZ2UgcHJvdG90eXBlICphZnRlciogQnVmZmVyLmZyb20gaXMgZGVmaW5lZCB0byB3b3JrYXJvdW5kIENocm9tZSBidWc6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzE0OFxuQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIHNpemUgKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplKVxuICB9XG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPbmx5IHBheSBhdHRlbnRpb24gdG8gZW5jb2RpbmcgaWYgaXQncyBhIHN0cmluZy4gVGhpc1xuICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGRcbiAgICAvLyBiZSBpbnRlcnByZXR0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB2YXIgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gYnVmLndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG5cbiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7XG4gICAgLy8gV3JpdGluZyBhIGhleCBzdHJpbmcsIGZvciBleGFtcGxlLCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyB3aWxsXG4gICAgLy8gY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgaW52YWxpZCBjaGFyYWN0ZXIgdG8gYmUgaWdub3JlZC4gKGUuZy5cbiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJylcbiAgICBidWYgPSBidWYuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlIChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHZhciBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgYnVmW2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcImxlbmd0aFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICB2YXIgYnVmXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBidWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKG9iaikge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iaikpIHtcbiAgICB2YXIgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICB2YXIgYnVmID0gY3JlYXRlQnVmZmVyKGxlbilcblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmXG4gICAgfVxuXG4gICAgb2JqLmNvcHkoYnVmLCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgaWYgKG9iai5sZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgbnVtYmVySXNOYU4ob2JqLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIoMClcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqKVxuICB9XG5cbiAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBBcnJheS5pc0FycmF5KG9iai5kYXRhKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iai5kYXRhKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBLX01BWF9MRU5HVEhgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIEtfTUFYX0xFTkdUSC50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuIGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlciA9PT0gdHJ1ZSAmJlxuICAgIGIgIT09IEJ1ZmZlci5wcm90b3R5cGUgLy8gc28gQnVmZmVyLmlzQnVmZmVyKEJ1ZmZlci5wcm90b3R5cGUpIHdpbGwgYmUgZmFsc2Vcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmIChpc0luc3RhbmNlKGEsIFVpbnQ4QXJyYXkpKSBhID0gQnVmZmVyLmZyb20oYSwgYS5vZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgaWYgKGlzSW5zdGFuY2UoYiwgVWludDhBcnJheSkpIGIgPSBCdWZmZXIuZnJvbShiLCBiLm9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJidWYxXCIsIFwiYnVmMlwiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5J1xuICAgIClcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmIChpc0luc3RhbmNlKGJ1ZiwgVWludDhBcnJheSkpIHtcbiAgICAgIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5sZW5ndGhcbiAgfVxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHN0cmluZykgfHwgaXNJbnN0YW5jZShzdHJpbmcsIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuICcgK1xuICAgICAgJ1JlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzdHJpbmdcbiAgICApXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbXVzdE1hdGNoID0gKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSA9PT0gdHJ1ZSlcbiAgaWYgKCFtdXN0TWF0Y2ggJiYgbGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIG11c3RNYXRjaCA/IC0xIDogdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgfVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCAoYW5kIHRoZSBgaXMtYnVmZmVyYCBucG0gcGFja2FnZSlcbi8vIHRvIGRldGVjdCBhIEJ1ZmZlciBpbnN0YW5jZS4gSXQncyBub3QgcG9zc2libGUgdG8gdXNlIGBpbnN0YW5jZW9mIEJ1ZmZlcmBcbi8vIHJlbGlhYmx5IGluIGEgYnJvd3NlcmlmeSBjb250ZXh0IGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgZGlmZmVyZW50XG4vLyBjb3BpZXMgb2YgdGhlICdidWZmZXInIHBhY2thZ2UgaW4gdXNlLiBUaGlzIG1ldGhvZCB3b3JrcyBldmVuIGZvciBCdWZmZXJcbi8vIGluc3RhbmNlcyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9tIGFub3RoZXIgY29weSBvZiB0aGUgYGJ1ZmZlcmAgcGFja2FnZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE1NFxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyA9IEJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmdcblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5yZXBsYWNlKC8oLnsyfSkvZywgJyQxICcpLnRyaW0oKVxuICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmIChpc0luc3RhbmNlKHRhcmdldCwgVWludDhBcnJheSkpIHtcbiAgICB0YXJnZXQgPSBCdWZmZXIuZnJvbSh0YXJnZXQsIHRhcmdldC5vZmZzZXQsIHRhcmdldC5ieXRlTGVuZ3RoKVxuICB9XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuICcgK1xuICAgICAgJ1JlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdGFyZ2V0KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICB2YXIgeSA9IGVuZCAtIHN0YXJ0XG4gIHZhciBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICB2YXIgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKG51bWJlcklzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKG51bWJlcklzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID4+PiAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgKGJ5dGVzW2kgKyAxXSAqIDI1NikpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlcicpXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gVXNlIGJ1aWx0LWluIHdoZW4gYXZhaWxhYmxlLCBtaXNzaW5nIGZyb20gSUUxMVxuICAgIHRoaXMuY29weVdpdGhpbih0YXJnZXRTdGFydCwgc3RhcnQsIGVuZClcbiAgfSBlbHNlIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKChlbmNvZGluZyA9PT0gJ3V0ZjgnICYmIGNvZGUgPCAxMjgpIHx8XG4gICAgICAgICAgZW5jb2RpbmcgPT09ICdsYXRpbjEnKSB7XG4gICAgICAgIC8vIEZhc3QgcGF0aDogSWYgYHZhbGAgZml0cyBpbnRvIGEgc2luZ2xlIGJ5dGUsIHVzZSB0aGF0IG51bWVyaWMgdmFsdWUuXG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBpZiAobGVuID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgXCInICsgdmFsICtcbiAgICAgICAgJ1wiIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50IFwidmFsdWVcIicpXG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teKy8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgdGFrZXMgZXF1YWwgc2lnbnMgYXMgZW5kIG9mIHRoZSBCYXNlNjQgZW5jb2RpbmdcbiAgc3RyID0gc3RyLnNwbGl0KCc9JylbMF1cbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG4vLyBBcnJheUJ1ZmZlciBvciBVaW50OEFycmF5IG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyAoaS5lLiBpZnJhbWVzKSBkbyBub3QgcGFzc1xuLy8gdGhlIGBpbnN0YW5jZW9mYCBjaGVjayBidXQgdGhleSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvZiB0aGF0IHR5cGUuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNjZcbmZ1bmN0aW9uIGlzSW5zdGFuY2UgKG9iaiwgdHlwZSkge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgdHlwZSB8fFxuICAgIChvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IubmFtZSAhPSBudWxsICYmXG4gICAgICBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gdHlwZS5uYW1lKVxufVxuZnVuY3Rpb24gbnVtYmVySXNOYU4gKG9iaikge1xuICAvLyBGb3IgSUUxMSBzdXBwb3J0XG4gIHJldHVybiBvYmogIT09IG9iaiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwiMTAwXCI6IFwiQ29udGludWVcIixcbiAgXCIxMDFcIjogXCJTd2l0Y2hpbmcgUHJvdG9jb2xzXCIsXG4gIFwiMTAyXCI6IFwiUHJvY2Vzc2luZ1wiLFxuICBcIjIwMFwiOiBcIk9LXCIsXG4gIFwiMjAxXCI6IFwiQ3JlYXRlZFwiLFxuICBcIjIwMlwiOiBcIkFjY2VwdGVkXCIsXG4gIFwiMjAzXCI6IFwiTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb25cIixcbiAgXCIyMDRcIjogXCJObyBDb250ZW50XCIsXG4gIFwiMjA1XCI6IFwiUmVzZXQgQ29udGVudFwiLFxuICBcIjIwNlwiOiBcIlBhcnRpYWwgQ29udGVudFwiLFxuICBcIjIwN1wiOiBcIk11bHRpLVN0YXR1c1wiLFxuICBcIjIwOFwiOiBcIkFscmVhZHkgUmVwb3J0ZWRcIixcbiAgXCIyMjZcIjogXCJJTSBVc2VkXCIsXG4gIFwiMzAwXCI6IFwiTXVsdGlwbGUgQ2hvaWNlc1wiLFxuICBcIjMwMVwiOiBcIk1vdmVkIFBlcm1hbmVudGx5XCIsXG4gIFwiMzAyXCI6IFwiRm91bmRcIixcbiAgXCIzMDNcIjogXCJTZWUgT3RoZXJcIixcbiAgXCIzMDRcIjogXCJOb3QgTW9kaWZpZWRcIixcbiAgXCIzMDVcIjogXCJVc2UgUHJveHlcIixcbiAgXCIzMDdcIjogXCJUZW1wb3JhcnkgUmVkaXJlY3RcIixcbiAgXCIzMDhcIjogXCJQZXJtYW5lbnQgUmVkaXJlY3RcIixcbiAgXCI0MDBcIjogXCJCYWQgUmVxdWVzdFwiLFxuICBcIjQwMVwiOiBcIlVuYXV0aG9yaXplZFwiLFxuICBcIjQwMlwiOiBcIlBheW1lbnQgUmVxdWlyZWRcIixcbiAgXCI0MDNcIjogXCJGb3JiaWRkZW5cIixcbiAgXCI0MDRcIjogXCJOb3QgRm91bmRcIixcbiAgXCI0MDVcIjogXCJNZXRob2QgTm90IEFsbG93ZWRcIixcbiAgXCI0MDZcIjogXCJOb3QgQWNjZXB0YWJsZVwiLFxuICBcIjQwN1wiOiBcIlByb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkXCIsXG4gIFwiNDA4XCI6IFwiUmVxdWVzdCBUaW1lb3V0XCIsXG4gIFwiNDA5XCI6IFwiQ29uZmxpY3RcIixcbiAgXCI0MTBcIjogXCJHb25lXCIsXG4gIFwiNDExXCI6IFwiTGVuZ3RoIFJlcXVpcmVkXCIsXG4gIFwiNDEyXCI6IFwiUHJlY29uZGl0aW9uIEZhaWxlZFwiLFxuICBcIjQxM1wiOiBcIlBheWxvYWQgVG9vIExhcmdlXCIsXG4gIFwiNDE0XCI6IFwiVVJJIFRvbyBMb25nXCIsXG4gIFwiNDE1XCI6IFwiVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZVwiLFxuICBcIjQxNlwiOiBcIlJhbmdlIE5vdCBTYXRpc2ZpYWJsZVwiLFxuICBcIjQxN1wiOiBcIkV4cGVjdGF0aW9uIEZhaWxlZFwiLFxuICBcIjQxOFwiOiBcIkknbSBhIHRlYXBvdFwiLFxuICBcIjQyMVwiOiBcIk1pc2RpcmVjdGVkIFJlcXVlc3RcIixcbiAgXCI0MjJcIjogXCJVbnByb2Nlc3NhYmxlIEVudGl0eVwiLFxuICBcIjQyM1wiOiBcIkxvY2tlZFwiLFxuICBcIjQyNFwiOiBcIkZhaWxlZCBEZXBlbmRlbmN5XCIsXG4gIFwiNDI1XCI6IFwiVW5vcmRlcmVkIENvbGxlY3Rpb25cIixcbiAgXCI0MjZcIjogXCJVcGdyYWRlIFJlcXVpcmVkXCIsXG4gIFwiNDI4XCI6IFwiUHJlY29uZGl0aW9uIFJlcXVpcmVkXCIsXG4gIFwiNDI5XCI6IFwiVG9vIE1hbnkgUmVxdWVzdHNcIixcbiAgXCI0MzFcIjogXCJSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlXCIsXG4gIFwiNDUxXCI6IFwiVW5hdmFpbGFibGUgRm9yIExlZ2FsIFJlYXNvbnNcIixcbiAgXCI1MDBcIjogXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIixcbiAgXCI1MDFcIjogXCJOb3QgSW1wbGVtZW50ZWRcIixcbiAgXCI1MDJcIjogXCJCYWQgR2F0ZXdheVwiLFxuICBcIjUwM1wiOiBcIlNlcnZpY2UgVW5hdmFpbGFibGVcIixcbiAgXCI1MDRcIjogXCJHYXRld2F5IFRpbWVvdXRcIixcbiAgXCI1MDVcIjogXCJIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZFwiLFxuICBcIjUwNlwiOiBcIlZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzXCIsXG4gIFwiNTA3XCI6IFwiSW5zdWZmaWNpZW50IFN0b3JhZ2VcIixcbiAgXCI1MDhcIjogXCJMb29wIERldGVjdGVkXCIsXG4gIFwiNTA5XCI6IFwiQmFuZHdpZHRoIExpbWl0IEV4Y2VlZGVkXCIsXG4gIFwiNTEwXCI6IFwiTm90IEV4dGVuZGVkXCIsXG4gIFwiNTExXCI6IFwiTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiXG59XG4iLCJcInVzZSBzdHJpY3RcIlxuXG52YXIgbmV4dCA9IChnbG9iYWwucHJvY2VzcyAmJiBwcm9jZXNzLm5leHRUaWNrKSB8fCBnbG9iYWwuc2V0SW1tZWRpYXRlIHx8IGZ1bmN0aW9uIChmKSB7XG4gIHNldFRpbWVvdXQoZiwgMClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtYXliZSAoY2IsIHByb21pc2UpIHtcbiAgaWYgKGNiKSB7XG4gICAgcHJvbWlzZVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBuZXh0KGZ1bmN0aW9uICgpIHsgY2IobnVsbCwgcmVzdWx0KSB9KVxuICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBuZXh0KGZ1bmN0aW9uICgpIHsgY2IoZXJyKSB9KVxuICAgICAgfSlcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuIiwiLyoqXG4gKiBUaGlzIGlzIHRoZSB3ZWIgYnJvd3NlciBpbXBsZW1lbnRhdGlvbiBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGVidWcnKTtcbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5mb3JtYXRBcmdzID0gZm9ybWF0QXJncztcbmV4cG9ydHMuc2F2ZSA9IHNhdmU7XG5leHBvcnRzLmxvYWQgPSBsb2FkO1xuZXhwb3J0cy51c2VDb2xvcnMgPSB1c2VDb2xvcnM7XG5leHBvcnRzLnN0b3JhZ2UgPSAndW5kZWZpbmVkJyAhPSB0eXBlb2YgY2hyb21lXG4gICAgICAgICAgICAgICAmJiAndW5kZWZpbmVkJyAhPSB0eXBlb2YgY2hyb21lLnN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgID8gY2hyb21lLnN0b3JhZ2UubG9jYWxcbiAgICAgICAgICAgICAgICAgIDogbG9jYWxzdG9yYWdlKCk7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gW1xuICAnIzAwMDBDQycsICcjMDAwMEZGJywgJyMwMDMzQ0MnLCAnIzAwMzNGRicsICcjMDA2NkNDJywgJyMwMDY2RkYnLCAnIzAwOTlDQycsXG4gICcjMDA5OUZGJywgJyMwMENDMDAnLCAnIzAwQ0MzMycsICcjMDBDQzY2JywgJyMwMENDOTknLCAnIzAwQ0NDQycsICcjMDBDQ0ZGJyxcbiAgJyMzMzAwQ0MnLCAnIzMzMDBGRicsICcjMzMzM0NDJywgJyMzMzMzRkYnLCAnIzMzNjZDQycsICcjMzM2NkZGJywgJyMzMzk5Q0MnLFxuICAnIzMzOTlGRicsICcjMzNDQzAwJywgJyMzM0NDMzMnLCAnIzMzQ0M2NicsICcjMzNDQzk5JywgJyMzM0NDQ0MnLCAnIzMzQ0NGRicsXG4gICcjNjYwMENDJywgJyM2NjAwRkYnLCAnIzY2MzNDQycsICcjNjYzM0ZGJywgJyM2NkNDMDAnLCAnIzY2Q0MzMycsICcjOTkwMENDJyxcbiAgJyM5OTAwRkYnLCAnIzk5MzNDQycsICcjOTkzM0ZGJywgJyM5OUNDMDAnLCAnIzk5Q0MzMycsICcjQ0MwMDAwJywgJyNDQzAwMzMnLFxuICAnI0NDMDA2NicsICcjQ0MwMDk5JywgJyNDQzAwQ0MnLCAnI0NDMDBGRicsICcjQ0MzMzAwJywgJyNDQzMzMzMnLCAnI0NDMzM2NicsXG4gICcjQ0MzMzk5JywgJyNDQzMzQ0MnLCAnI0NDMzNGRicsICcjQ0M2NjAwJywgJyNDQzY2MzMnLCAnI0NDOTkwMCcsICcjQ0M5OTMzJyxcbiAgJyNDQ0NDMDAnLCAnI0NDQ0MzMycsICcjRkYwMDAwJywgJyNGRjAwMzMnLCAnI0ZGMDA2NicsICcjRkYwMDk5JywgJyNGRjAwQ0MnLFxuICAnI0ZGMDBGRicsICcjRkYzMzAwJywgJyNGRjMzMzMnLCAnI0ZGMzM2NicsICcjRkYzMzk5JywgJyNGRjMzQ0MnLCAnI0ZGMzNGRicsXG4gICcjRkY2NjAwJywgJyNGRjY2MzMnLCAnI0ZGOTkwMCcsICcjRkY5OTMzJywgJyNGRkNDMDAnLCAnI0ZGQ0MzMydcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29sb3JzKCkge1xuICAvLyBOQjogSW4gYW4gRWxlY3Ryb24gcHJlbG9hZCBzY3JpcHQsIGRvY3VtZW50IHdpbGwgYmUgZGVmaW5lZCBidXQgbm90IGZ1bGx5XG4gIC8vIGluaXRpYWxpemVkLiBTaW5jZSB3ZSBrbm93IHdlJ3JlIGluIENocm9tZSwgd2UnbGwganVzdCBkZXRlY3QgdGhpcyBjYXNlXG4gIC8vIGV4cGxpY2l0bHlcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wcm9jZXNzICYmIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIEludGVybmV0IEV4cGxvcmVyIGFuZCBFZGdlIGRvIG5vdCBzdXBwb3J0IGNvbG9ycy5cbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVxcLyhcXGQrKS8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gaXMgd2Via2l0PyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNjQ1OTYwNi8zNzY3NzNcbiAgLy8gZG9jdW1lbnQgaXMgdW5kZWZpbmVkIGluIHJlYWN0LW5hdGl2ZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0LW5hdGl2ZS9wdWxsLzE2MzJcbiAgcmV0dXJuICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2UpIHx8XG4gICAgLy8gaXMgZmlyZWJ1Zz8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzk4MTIwLzM3Njc3M1xuICAgICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuY29uc29sZSAmJiAod2luZG93LmNvbnNvbGUuZmlyZWJ1ZyB8fCAod2luZG93LmNvbnNvbGUuZXhjZXB0aW9uICYmIHdpbmRvdy5jb25zb2xlLnRhYmxlKSkpIHx8XG4gICAgLy8gaXMgZmlyZWZveCA+PSB2MzE/XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9XZWJfQ29uc29sZSNTdHlsaW5nX21lc3NhZ2VzXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLykgJiYgcGFyc2VJbnQoUmVnRXhwLiQxLCAxMCkgPj0gMzEpIHx8XG4gICAgLy8gZG91YmxlIGNoZWNrIHdlYmtpdCBpbiB1c2VyQWdlbnQganVzdCBpbiBjYXNlIHdlIGFyZSBpbiBhIHdvcmtlclxuICAgICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcXC8oXFxkKykvKSk7XG59XG5cbi8qKlxuICogTWFwICVqIHRvIGBKU09OLnN0cmluZ2lmeSgpYCwgc2luY2Ugbm8gV2ViIEluc3BlY3RvcnMgZG8gdGhhdCBieSBkZWZhdWx0LlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24odikge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVyci5tZXNzYWdlO1xuICB9XG59O1xuXG5cbi8qKlxuICogQ29sb3JpemUgbG9nIGFyZ3VtZW50cyBpZiBlbmFibGVkLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0QXJncyhhcmdzKSB7XG4gIHZhciB1c2VDb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblxuICBhcmdzWzBdID0gKHVzZUNvbG9ycyA/ICclYycgOiAnJylcbiAgICArIHRoaXMubmFtZXNwYWNlXG4gICAgKyAodXNlQ29sb3JzID8gJyAlYycgOiAnICcpXG4gICAgKyBhcmdzWzBdXG4gICAgKyAodXNlQ29sb3JzID8gJyVjICcgOiAnICcpXG4gICAgKyAnKycgKyBleHBvcnRzLmh1bWFuaXplKHRoaXMuZGlmZik7XG5cbiAgaWYgKCF1c2VDb2xvcnMpIHJldHVybjtcblxuICB2YXIgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG4gIGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpXG5cbiAgLy8gdGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcbiAgLy8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuICAvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RDID0gMDtcbiAgYXJnc1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgaWYgKCclJScgPT09IG1hdGNoKSByZXR1cm47XG4gICAgaW5kZXgrKztcbiAgICBpZiAoJyVjJyA9PT0gbWF0Y2gpIHtcbiAgICAgIC8vIHdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuICAgICAgLy8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcbiAgICAgIGxhc3RDID0gaW5kZXg7XG4gICAgfVxuICB9KTtcblxuICBhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG59XG5cbi8qKlxuICogSW52b2tlcyBgY29uc29sZS5sb2coKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmxvZ2AgaXMgbm90IGEgXCJmdW5jdGlvblwiLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gbG9nKCkge1xuICAvLyB0aGlzIGhhY2tlcnkgaXMgcmVxdWlyZWQgZm9yIElFOC85LCB3aGVyZVxuICAvLyB0aGUgYGNvbnNvbGUubG9nYCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgJ2FwcGx5J1xuICByZXR1cm4gJ29iamVjdCcgPT09IHR5cGVvZiBjb25zb2xlXG4gICAgJiYgY29uc29sZS5sb2dcbiAgICAmJiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjb25zb2xlLmxvZywgY29uc29sZSwgYXJndW1lbnRzKTtcbn1cblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG4gIHRyeSB7XG4gICAgaWYgKG51bGwgPT0gbmFtZXNwYWNlcykge1xuICAgICAgZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cG9ydHMuc3RvcmFnZS5kZWJ1ZyA9IG5hbWVzcGFjZXM7XG4gICAgfVxuICB9IGNhdGNoKGUpIHt9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9hZCgpIHtcbiAgdmFyIHI7XG4gIHRyeSB7XG4gICAgciA9IGV4cG9ydHMuc3RvcmFnZS5kZWJ1ZztcbiAgfSBjYXRjaChlKSB7fVxuXG4gIC8vIElmIGRlYnVnIGlzbid0IHNldCBpbiBMUywgYW5kIHdlJ3JlIGluIEVsZWN0cm9uLCB0cnkgdG8gbG9hZCAkREVCVUdcbiAgaWYgKCFyICYmIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiAnZW52JyBpbiBwcm9jZXNzKSB7XG4gICAgciA9IHByb2Nlc3MuZW52LkRFQlVHO1xuICB9XG5cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogRW5hYmxlIG5hbWVzcGFjZXMgbGlzdGVkIGluIGBsb2NhbFN0b3JhZ2UuZGVidWdgIGluaXRpYWxseS5cbiAqL1xuXG5leHBvcnRzLmVuYWJsZShsb2FkKCkpO1xuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgfSBjYXRjaCAoZSkge31cbn1cbiIsIlxuLyoqXG4gKiBUaGlzIGlzIHRoZSBjb21tb24gbG9naWMgZm9yIGJvdGggdGhlIE5vZGUuanMgYW5kIHdlYiBicm93c2VyXG4gKiBpbXBsZW1lbnRhdGlvbnMgb2YgYGRlYnVnKClgLlxuICpcbiAqIEV4cG9zZSBgZGVidWcoKWAgYXMgdGhlIG1vZHVsZS5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVEZWJ1Zy5kZWJ1ZyA9IGNyZWF0ZURlYnVnWydkZWZhdWx0J10gPSBjcmVhdGVEZWJ1ZztcbmV4cG9ydHMuY29lcmNlID0gY29lcmNlO1xuZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcbmV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xuZXhwb3J0cy5lbmFibGVkID0gZW5hYmxlZDtcbmV4cG9ydHMuaHVtYW5pemUgPSByZXF1aXJlKCdtcycpO1xuXG4vKipcbiAqIEFjdGl2ZSBgZGVidWdgIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0cy5pbnN0YW5jZXMgPSBbXTtcblxuLyoqXG4gKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBkZWJ1ZyBtb2RlIG5hbWVzLCBhbmQgbmFtZXMgdG8gc2tpcC5cbiAqL1xuXG5leHBvcnRzLm5hbWVzID0gW107XG5leHBvcnRzLnNraXBzID0gW107XG5cbi8qKlxuICogTWFwIG9mIHNwZWNpYWwgXCIlblwiIGhhbmRsaW5nIGZ1bmN0aW9ucywgZm9yIHRoZSBkZWJ1ZyBcImZvcm1hdFwiIGFyZ3VtZW50LlxuICpcbiAqIFZhbGlkIGtleSBuYW1lcyBhcmUgYSBzaW5nbGUsIGxvd2VyIG9yIHVwcGVyLWNhc2UgbGV0dGVyLCBpLmUuIFwiblwiIGFuZCBcIk5cIi5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMgPSB7fTtcblxuLyoqXG4gKiBTZWxlY3QgYSBjb2xvci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlbGVjdENvbG9yKG5hbWVzcGFjZSkge1xuICB2YXIgaGFzaCA9IDAsIGk7XG5cbiAgZm9yIChpIGluIG5hbWVzcGFjZSkge1xuICAgIGhhc2ggID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBuYW1lc3BhY2UuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICB9XG5cbiAgcmV0dXJuIGV4cG9ydHMuY29sb3JzW01hdGguYWJzKGhhc2gpICUgZXhwb3J0cy5jb2xvcnMubGVuZ3RoXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkZWJ1Z2dlciB3aXRoIHRoZSBnaXZlbiBgbmFtZXNwYWNlYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlRGVidWcobmFtZXNwYWNlKSB7XG5cbiAgdmFyIHByZXZUaW1lO1xuXG4gIGZ1bmN0aW9uIGRlYnVnKCkge1xuICAgIC8vIGRpc2FibGVkP1xuICAgIGlmICghZGVidWcuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgdmFyIHNlbGYgPSBkZWJ1ZztcblxuICAgIC8vIHNldCBgZGlmZmAgdGltZXN0YW1wXG4gICAgdmFyIGN1cnIgPSArbmV3IERhdGUoKTtcbiAgICB2YXIgbXMgPSBjdXJyIC0gKHByZXZUaW1lIHx8IGN1cnIpO1xuICAgIHNlbGYuZGlmZiA9IG1zO1xuICAgIHNlbGYucHJldiA9IHByZXZUaW1lO1xuICAgIHNlbGYuY3VyciA9IGN1cnI7XG4gICAgcHJldlRpbWUgPSBjdXJyO1xuXG4gICAgLy8gdHVybiB0aGUgYGFyZ3VtZW50c2AgaW50byBhIHByb3BlciBBcnJheVxuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG5cbiAgICBhcmdzWzBdID0gZXhwb3J0cy5jb2VyY2UoYXJnc1swXSk7XG5cbiAgICBpZiAoJ3N0cmluZycgIT09IHR5cGVvZiBhcmdzWzBdKSB7XG4gICAgICAvLyBhbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuICAgICAgYXJncy51bnNoaWZ0KCclTycpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBhcmdzWzBdID0gYXJnc1swXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywgZnVuY3Rpb24obWF0Y2gsIGZvcm1hdCkge1xuICAgICAgLy8gaWYgd2UgZW5jb3VudGVyIGFuIGVzY2FwZWQgJSB0aGVuIGRvbid0IGluY3JlYXNlIHRoZSBhcnJheSBpbmRleFxuICAgICAgaWYgKG1hdGNoID09PSAnJSUnKSByZXR1cm4gbWF0Y2g7XG4gICAgICBpbmRleCsrO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IGV4cG9ydHMuZm9ybWF0dGVyc1tmb3JtYXRdO1xuICAgICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdmFyIHZhbCA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICBtYXRjaCA9IGZvcm1hdHRlci5jYWxsKHNlbGYsIHZhbCk7XG5cbiAgICAgICAgLy8gbm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuICAgICAgICBhcmdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGluZGV4LS07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG5cbiAgICAvLyBhcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuICAgIGV4cG9ydHMuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG4gICAgdmFyIGxvZ0ZuID0gZGVidWcubG9nIHx8IGV4cG9ydHMubG9nIHx8IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XG4gICAgbG9nRm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gIH1cblxuICBkZWJ1Zy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gIGRlYnVnLmVuYWJsZWQgPSBleHBvcnRzLmVuYWJsZWQobmFtZXNwYWNlKTtcbiAgZGVidWcudXNlQ29sb3JzID0gZXhwb3J0cy51c2VDb2xvcnMoKTtcbiAgZGVidWcuY29sb3IgPSBzZWxlY3RDb2xvcihuYW1lc3BhY2UpO1xuICBkZWJ1Zy5kZXN0cm95ID0gZGVzdHJveTtcblxuICAvLyBlbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGV4cG9ydHMuaW5pdCkge1xuICAgIGV4cG9ydHMuaW5pdChkZWJ1Zyk7XG4gIH1cblxuICBleHBvcnRzLmluc3RhbmNlcy5wdXNoKGRlYnVnKTtcblxuICByZXR1cm4gZGVidWc7XG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3kgKCkge1xuICB2YXIgaW5kZXggPSBleHBvcnRzLmluc3RhbmNlcy5pbmRleE9mKHRoaXMpO1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgZXhwb3J0cy5pbnN0YW5jZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBFbmFibGVzIGEgZGVidWcgbW9kZSBieSBuYW1lc3BhY2VzLiBUaGlzIGNhbiBpbmNsdWRlIG1vZGVzXG4gKiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZShuYW1lc3BhY2VzKSB7XG4gIGV4cG9ydHMuc2F2ZShuYW1lc3BhY2VzKTtcblxuICBleHBvcnRzLm5hbWVzID0gW107XG4gIGV4cG9ydHMuc2tpcHMgPSBbXTtcblxuICB2YXIgaTtcbiAgdmFyIHNwbGl0ID0gKHR5cGVvZiBuYW1lc3BhY2VzID09PSAnc3RyaW5nJyA/IG5hbWVzcGFjZXMgOiAnJykuc3BsaXQoL1tcXHMsXSsvKTtcbiAgdmFyIGxlbiA9IHNwbGl0Lmxlbmd0aDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIXNwbGl0W2ldKSBjb250aW51ZTsgLy8gaWdub3JlIGVtcHR5IHN0cmluZ3NcbiAgICBuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcbiAgICBpZiAobmFtZXNwYWNlc1swXSA9PT0gJy0nKSB7XG4gICAgICBleHBvcnRzLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzLnN1YnN0cigxKSArICckJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzICsgJyQnKSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4cG9ydHMuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGluc3RhbmNlID0gZXhwb3J0cy5pbnN0YW5jZXNbaV07XG4gICAgaW5zdGFuY2UuZW5hYmxlZCA9IGV4cG9ydHMuZW5hYmxlZChpbnN0YW5jZS5uYW1lc3BhY2UpO1xuICB9XG59XG5cbi8qKlxuICogRGlzYWJsZSBkZWJ1ZyBvdXRwdXQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkaXNhYmxlKCkge1xuICBleHBvcnRzLmVuYWJsZSgnJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBtb2RlIG5hbWUgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmFibGVkKG5hbWUpIHtcbiAgaWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGksIGxlbjtcbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5za2lwcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLnNraXBzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29lcmNlIGB2YWxgLlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbFxuICogQHJldHVybiB7TWl4ZWR9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb2VyY2UodmFsKSB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcbiAgcmV0dXJuIHZhbDtcbn1cbiIsIi8qIVxuICogQGRlc2NyaXB0aW9uIFJlY3Vyc2l2ZSBvYmplY3QgZXh0ZW5kaW5nXG4gKiBAYXV0aG9yIFZpYWNoZXNsYXYgTG90c21hbm92IDxsb3RzbWFub3Y4OUBnbWFpbC5jb20+XG4gKiBAbGljZW5zZSBNSVRcbiAqXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOCBWaWFjaGVzbGF2IExvdHNtYW5vdlxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2ZcbiAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbiAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbiAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4gKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4gKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4gKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGlzU3BlY2lmaWNWYWx1ZSh2YWwpIHtcblx0cmV0dXJuIChcblx0XHR2YWwgaW5zdGFuY2VvZiBCdWZmZXJcblx0XHR8fCB2YWwgaW5zdGFuY2VvZiBEYXRlXG5cdFx0fHwgdmFsIGluc3RhbmNlb2YgUmVnRXhwXG5cdCkgPyB0cnVlIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNsb25lU3BlY2lmaWNWYWx1ZSh2YWwpIHtcblx0aWYgKHZhbCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuXHRcdHZhciB4ID0gQnVmZmVyLmFsbG9jXG5cdFx0XHQ/IEJ1ZmZlci5hbGxvYyh2YWwubGVuZ3RoKVxuXHRcdFx0OiBuZXcgQnVmZmVyKHZhbC5sZW5ndGgpO1xuXHRcdHZhbC5jb3B5KHgpO1xuXHRcdHJldHVybiB4O1xuXHR9IGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRyZXR1cm4gbmV3IERhdGUodmFsLmdldFRpbWUoKSk7XG5cdH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdFx0cmV0dXJuIG5ldyBSZWdFeHAodmFsKTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc2l0dWF0aW9uJyk7XG5cdH1cbn1cblxuLyoqXG4gKiBSZWN1cnNpdmUgY2xvbmluZyBhcnJheS5cbiAqL1xuZnVuY3Rpb24gZGVlcENsb25lQXJyYXkoYXJyKSB7XG5cdHZhciBjbG9uZSA9IFtdO1xuXHRhcnIuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG5cdFx0XHRcdGNsb25lW2luZGV4XSA9IGRlZXBDbG9uZUFycmF5KGl0ZW0pO1xuXHRcdFx0fSBlbHNlIGlmIChpc1NwZWNpZmljVmFsdWUoaXRlbSkpIHtcblx0XHRcdFx0Y2xvbmVbaW5kZXhdID0gY2xvbmVTcGVjaWZpY1ZhbHVlKGl0ZW0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xvbmVbaW5kZXhdID0gZGVlcEV4dGVuZCh7fSwgaXRlbSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNsb25lW2luZGV4XSA9IGl0ZW07XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGNsb25lO1xufVxuXG5mdW5jdGlvbiBzYWZlR2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHRyZXR1cm4gcHJvcGVydHkgPT09ICdfX3Byb3RvX18nID8gdW5kZWZpbmVkIDogb2JqZWN0W3Byb3BlcnR5XTtcbn1cblxuLyoqXG4gKiBFeHRlbmluZyBvYmplY3QgdGhhdCBlbnRlcmVkIGluIGZpcnN0IGFyZ3VtZW50LlxuICpcbiAqIFJldHVybnMgZXh0ZW5kZWQgb2JqZWN0IG9yIGZhbHNlIGlmIGhhdmUgbm8gdGFyZ2V0IG9iamVjdCBvciBpbmNvcnJlY3QgdHlwZS5cbiAqXG4gKiBJZiB5b3Ugd2lzaCB0byBjbG9uZSBzb3VyY2Ugb2JqZWN0ICh3aXRob3V0IG1vZGlmeSBpdCksIGp1c3QgdXNlIGVtcHR5IG5ld1xuICogb2JqZWN0IGFzIGZpcnN0IGFyZ3VtZW50LCBsaWtlIHRoaXM6XG4gKiAgIGRlZXBFeHRlbmQoe30sIHlvdXJPYmpfMSwgW3lvdXJPYmpfTl0pO1xuICovXG52YXIgZGVlcEV4dGVuZCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKC8qb2JqXzEsIFtvYmpfMl0sIFtvYmpfTl0qLykge1xuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEgfHwgdHlwZW9mIGFyZ3VtZW50c1swXSAhPT0gJ29iamVjdCcpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzWzBdO1xuXHR9XG5cblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblxuXHQvLyBjb252ZXJ0IGFyZ3VtZW50cyB0byBhcnJheSBhbmQgY3V0IG9mZiB0YXJnZXQgb2JqZWN0XG5cdHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuXHR2YXIgdmFsLCBzcmMsIGNsb25lO1xuXG5cdGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG5cdFx0Ly8gc2tpcCBhcmd1bWVudCBpZiBpc24ndCBhbiBvYmplY3QsIGlzIG51bGwsIG9yIGlzIGFuIGFycmF5XG5cdFx0aWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0c3JjID0gc2FmZUdldFByb3BlcnR5KHRhcmdldCwga2V5KTsgLy8gc291cmNlIHZhbHVlXG5cdFx0XHR2YWwgPSBzYWZlR2V0UHJvcGVydHkob2JqLCBrZXkpOyAvLyBuZXcgdmFsdWVcblxuXHRcdFx0Ly8gcmVjdXJzaW9uIHByZXZlbnRpb25cblx0XHRcdGlmICh2YWwgPT09IHRhcmdldCkge1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogaWYgbmV3IHZhbHVlIGlzbid0IG9iamVjdCB0aGVuIGp1c3Qgb3ZlcndyaXRlIGJ5IG5ldyB2YWx1ZVxuXHRcdFx0ICogaW5zdGVhZCBvZiBleHRlbmRpbmcuXG5cdFx0XHQgKi9cblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbCAhPT0gJ29iamVjdCcgfHwgdmFsID09PSBudWxsKSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gdmFsO1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8vIGp1c3QgY2xvbmUgYXJyYXlzIChhbmQgcmVjdXJzaXZlIGNsb25lIG9iamVjdHMgaW5zaWRlKVxuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSBkZWVwQ2xvbmVBcnJheSh2YWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8vIGN1c3RvbSBjbG9uaW5nIGFuZCBvdmVyd3JpdGUgZm9yIHNwZWNpZmljIG9iamVjdHNcblx0XHRcdH0gZWxzZSBpZiAoaXNTcGVjaWZpY1ZhbHVlKHZhbCkpIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSBjbG9uZVNwZWNpZmljVmFsdWUodmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBvdmVyd3JpdGUgYnkgbmV3IHZhbHVlIGlmIHNvdXJjZSBpc24ndCBvYmplY3Qgb3IgYXJyYXlcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHNyYyAhPT0gJ29iamVjdCcgfHwgc3JjID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoc3JjKSkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGRlZXBFeHRlbmQoe30sIHZhbCk7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8gc291cmNlIHZhbHVlIGFuZCBuZXcgdmFsdWUgaXMgb2JqZWN0cyBib3RoLCBleHRlbmRpbmcuLi5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gZGVlcEV4dGVuZChzcmMsIHZhbCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkID0gcmVxdWlyZSgnLi91dGlsL2hlbHBlcnMnKTtcblxuJC5maW5kQnlSZWYgPSByZXF1aXJlKCcuL3V0aWwvZmluZC1yZWZlcmVuY2UnKTtcbiQucmVzb2x2ZVNjaGVtYSA9IHJlcXVpcmUoJy4vdXRpbC9yZXNvbHZlLXNjaGVtYScpO1xuJC5ub3JtYWxpemVTY2hlbWEgPSByZXF1aXJlKCcuL3V0aWwvbm9ybWFsaXplLXNjaGVtYScpO1xuXG52YXIgaW5zdGFuY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGYpIHtcbiAgZnVuY3Rpb24gJHJlZihmYWtlcm9vdCwgc2NoZW1hLCByZWZzLCBleCkge1xuICAgIGlmICh0eXBlb2YgZmFrZXJvb3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBleCA9IHJlZnM7XG4gICAgICByZWZzID0gc2NoZW1hO1xuICAgICAgc2NoZW1hID0gZmFrZXJvb3Q7XG4gICAgICBmYWtlcm9vdCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNjaGVtYSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2NoZW1hIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZWZzID09PSAnb2JqZWN0JyAmJiByZWZzICE9PSBudWxsKSB7XG4gICAgICB2YXIgYXV4ID0gcmVmcztcblxuICAgICAgcmVmcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrIGluIGF1eCkge1xuICAgICAgICBhdXhba10uaWQgPSBhdXhba10uaWQgfHwgaztcbiAgICAgICAgcmVmcy5wdXNoKGF1eFtrXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZWZzICE9PSAndW5kZWZpbmVkJyAmJiAhQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgZXggPSAhIXJlZnM7XG4gICAgICByZWZzID0gW107XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHVzaChyZWYpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVmLmlkID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgaWQgPSAkLnJlc29sdmVVUkwoZmFrZXJvb3QsIHJlZi5pZCkucmVwbGFjZSgvXFwvIz8kLywgJycpO1xuXG4gICAgICAgIGlmIChpZC5pbmRleE9mKCcjJykgPiAtMSkge1xuICAgICAgICAgIHZhciBwYXJ0cyA9IGlkLnNwbGl0KCcjJyk7XG5cbiAgICAgICAgICBpZiAocGFydHNbMV0uY2hhckF0KCkgPT09ICcvJykge1xuICAgICAgICAgICAgaWQgPSBwYXJ0c1swXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWQgPSBwYXJ0c1sxXSB8fCBwYXJ0c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISRyZWYucmVmc1tpZF0pIHtcbiAgICAgICAgICAkcmVmLnJlZnNbaWRdID0gcmVmO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgKHJlZnMgfHwgW10pLmNvbmNhdChbc2NoZW1hXSkuZm9yRWFjaChmdW5jdGlvbihyZWYpIHtcbiAgICAgIHNjaGVtYSA9ICQubm9ybWFsaXplU2NoZW1hKGZha2Vyb290LCByZWYsIHB1c2gpO1xuICAgICAgcHVzaChzY2hlbWEpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICQucmVzb2x2ZVNjaGVtYShzY2hlbWEsICRyZWYucmVmcywgZXgsIGYpO1xuICB9XG5cbiAgJHJlZi5yZWZzID0ge307XG4gICRyZWYudXRpbCA9ICQ7XG5cbiAgcmV0dXJuICRyZWY7XG59O1xuXG5pbnN0YW5jZS51dGlsID0gJDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNsb25lID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHNlZW4pIHtcbiAgc2VlbiA9IHNlZW4gfHwgW107XG5cbiAgaWYgKHNlZW4uaW5kZXhPZihvYmopID4gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSBkZXJlZmVyZW5jZSBjaXJjdWxhciBzdHJ1Y3R1cmVzJyk7XG4gIH1cblxuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBzZWVuID0gc2Vlbi5jb25jYXQoW29ial0pO1xuXG4gIHZhciB0YXJnZXQgPSBBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9O1xuXG4gIGZ1bmN0aW9uIGNvcHkoa2V5LCB2YWx1ZSkge1xuICAgIHRhcmdldFtrZXldID0gY2xvbmUodmFsdWUsIHNlZW4pO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIG9iai5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgIGNvcHkoa2V5LCB2YWx1ZSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgY29weShrZXksIG9ialtrZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJCA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG5mdW5jdGlvbiBnZXQob2JqLCBwYXRoKSB7XG4gIHZhciBoYXNoID0gcGF0aC5zcGxpdCgnIycpWzFdO1xuXG4gIHZhciBwYXJ0cyA9IGhhc2guc3BsaXQoJy8nKS5zbGljZSgxKTtcblxuICB3aGlsZSAocGFydHMubGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0cy5zaGlmdCgpKS5yZXBsYWNlKC9+MS9nLCAnLycpLnJlcGxhY2UoL34wL2csICd+Jyk7XG5cbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdKU09OIHBvaW50ZXIgbm90IGZvdW5kOiAnICsgcGF0aCk7XG4gICAgfVxuXG4gICAgb2JqID0gb2JqW2tleV07XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG52YXIgZmluZCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaWQsIHJlZnMsIGZpbHRlcikge1xuICB2YXIgdGFyZ2V0ID0gcmVmc1tpZF0gfHwgcmVmc1tpZC5zcGxpdCgnIycpWzFdXSB8fCByZWZzWyQuZ2V0RG9jdW1lbnRVUkkoaWQpXTtcblxuICB0cnkge1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIHRhcmdldCA9IGlkLmluZGV4T2YoJyMvJykgPiAtMSA/IGdldCh0YXJnZXQsIGlkKSA6IHRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIga2V5IGluIHJlZnMpIHtcbiAgICAgICAgaWYgKCQucmVzb2x2ZVVSTChyZWZzW2tleV0uaWQsIGlkKSA9PT0gcmVmc1trZXldLmlkKSB7XG4gICAgICAgICAgdGFyZ2V0ID0gcmVmc1trZXldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRhcmdldCA9IGZpbHRlcihpZCwgcmVmcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZmVyZW5jZSBub3QgZm91bmQ6ICcgKyBpZCk7XG4gIH1cblxuICB3aGlsZSAodGFyZ2V0LiRyZWYpIHtcbiAgICB0YXJnZXQgPSBmaW5kKHRhcmdldC4kcmVmLCByZWZzKTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9wanQzMy9lZmIyZjExMzRiYWI5ODYxMTNmZFxuXG5mdW5jdGlvbiBVUkxVdGlscyh1cmwsIGJhc2VVUkwpIHtcbiAgLy8gcmVtb3ZlIGxlYWRpbmcgLi9cbiAgdXJsID0gdXJsLnJlcGxhY2UoL15cXC5cXC8vLCAnJyk7XG5cbiAgdmFyIG0gPSBTdHJpbmcodXJsKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJykubWF0Y2goL14oW146XFwvPyNdKzopPyg/OlxcL1xcLyg/OihbXjpAXSopKD86OihbXjpAXSopKT9AKT8oKFteOlxcLz8jXSopKD86OihcXGQqKSk/KSk/KFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vKTtcbiAgaWYgKCFtKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoKTtcbiAgfVxuICB2YXIgaHJlZiA9IG1bMF0gfHwgJyc7XG4gIHZhciBwcm90b2NvbCA9IG1bMV0gfHwgJyc7XG4gIHZhciB1c2VybmFtZSA9IG1bMl0gfHwgJyc7XG4gIHZhciBwYXNzd29yZCA9IG1bM10gfHwgJyc7XG4gIHZhciBob3N0ID0gbVs0XSB8fCAnJztcbiAgdmFyIGhvc3RuYW1lID0gbVs1XSB8fCAnJztcbiAgdmFyIHBvcnQgPSBtWzZdIHx8ICcnO1xuICB2YXIgcGF0aG5hbWUgPSBtWzddIHx8ICcnO1xuICB2YXIgc2VhcmNoID0gbVs4XSB8fCAnJztcbiAgdmFyIGhhc2ggPSBtWzldIHx8ICcnO1xuICBpZiAoYmFzZVVSTCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGJhc2UgPSBuZXcgVVJMVXRpbHMoYmFzZVVSTCk7XG4gICAgdmFyIGZsYWcgPSBwcm90b2NvbCA9PT0gJycgJiYgaG9zdCA9PT0gJycgJiYgdXNlcm5hbWUgPT09ICcnO1xuICAgIGlmIChmbGFnICYmIHBhdGhuYW1lID09PSAnJyAmJiBzZWFyY2ggPT09ICcnKSB7XG4gICAgICBzZWFyY2ggPSBiYXNlLnNlYXJjaDtcbiAgICB9XG4gICAgaWYgKGZsYWcgJiYgcGF0aG5hbWUuY2hhckF0KDApICE9PSAnLycpIHtcbiAgICAgIHBhdGhuYW1lID0gKHBhdGhuYW1lICE9PSAnJyA/IChiYXNlLnBhdGhuYW1lLnNsaWNlKDAsIGJhc2UucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKSArIDEpICsgcGF0aG5hbWUpIDogYmFzZS5wYXRobmFtZSk7XG4gICAgfVxuICAgIC8vIGRvdCBzZWdtZW50cyByZW1vdmFsXG4gICAgdmFyIG91dHB1dCA9IFtdO1xuXG4gICAgcGF0aG5hbWUucmVwbGFjZSgvXFwvP1teXFwvXSsvZywgZnVuY3Rpb24ocCkge1xuICAgICAgaWYgKHAgPT09ICcvLi4nKSB7XG4gICAgICAgIG91dHB1dC5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcGF0aG5hbWUgPSBvdXRwdXQuam9pbignJykgfHwgJy8nO1xuXG4gICAgaWYgKGZsYWcpIHtcbiAgICAgIHBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICBob3N0bmFtZSA9IGJhc2UuaG9zdG5hbWU7XG4gICAgICBob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgcGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgdXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgIH1cbiAgICBpZiAocHJvdG9jb2wgPT09ICcnKSB7XG4gICAgICBwcm90b2NvbCA9IGJhc2UucHJvdG9jb2w7XG4gICAgfVxuICAgIGhyZWYgPSBwcm90b2NvbCArIChob3N0ICE9PSAnJyA/ICcvLycgOiAnJykgKyAodXNlcm5hbWUgIT09ICcnID8gdXNlcm5hbWUgKyAocGFzc3dvcmQgIT09ICcnID8gJzonICsgcGFzc3dvcmQgOiAnJykgKyAnQCcgOiAnJykgKyBob3N0ICsgcGF0aG5hbWUgKyBzZWFyY2ggKyBoYXNoO1xuICB9XG4gIHRoaXMuaHJlZiA9IGhyZWY7XG4gIHRoaXMub3JpZ2luID0gcHJvdG9jb2wgKyAoaG9zdCAhPT0gJycgPyAnLy8nICsgaG9zdCA6ICcnKTtcbiAgdGhpcy5wcm90b2NvbCA9IHByb3RvY29sO1xuICB0aGlzLnVzZXJuYW1lID0gdXNlcm5hbWU7XG4gIHRoaXMucGFzc3dvcmQgPSBwYXNzd29yZDtcbiAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgdGhpcy5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICB0aGlzLnBvcnQgPSBwb3J0O1xuICB0aGlzLnBhdGhuYW1lID0gcGF0aG5hbWU7XG4gIHRoaXMuc2VhcmNoID0gc2VhcmNoO1xuICB0aGlzLmhhc2ggPSBoYXNoO1xufVxuXG5mdW5jdGlvbiBpc1VSTChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgJiYgL15cXHcrOlxcL1xcLy8udGVzdChwYXRoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlVVJJKGhyZWYsIGJhc2UpIHtcbiAgcmV0dXJuIG5ldyBVUkxVdGlscyhocmVmLCBiYXNlKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVVSTChiYXNlLCBocmVmKSB7XG4gIGJhc2UgPSBiYXNlIHx8ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYSMnO1xuXG4gIGhyZWYgPSBwYXJzZVVSSShocmVmLCBiYXNlKTtcbiAgYmFzZSA9IHBhcnNlVVJJKGJhc2UpO1xuXG4gIGlmIChiYXNlLmhhc2ggJiYgIWhyZWYuaGFzaCkge1xuICAgIHJldHVybiBocmVmLmhyZWYgKyBiYXNlLmhhc2g7XG4gIH1cblxuICByZXR1cm4gaHJlZi5ocmVmO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudFVSSSh1cmkpIHtcbiAgcmV0dXJuIHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnICYmIHVyaS5zcGxpdCgnIycpWzBdO1xufVxuXG5mdW5jdGlvbiBpc0tleXdvcmQocHJvcCkge1xuICByZXR1cm4gcHJvcCA9PT0gJ2VudW0nIHx8IHByb3AgPT09ICdkZWZhdWx0JyB8fCBwcm9wID09PSAncmVxdWlyZWQnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNVUkw6IGlzVVJMLFxuICBwYXJzZVVSSTogcGFyc2VVUkksXG4gIGlzS2V5d29yZDogaXNLZXl3b3JkLFxuICByZXNvbHZlVVJMOiByZXNvbHZlVVJMLFxuICBnZXREb2N1bWVudFVSSTogZ2V0RG9jdW1lbnRVUklcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG5cbnZhciBjbG9uZU9iaiA9IHJlcXVpcmUoJy4vY2xvbmUtb2JqJyk7XG5cbnZhciBTQ0hFTUFfVVJJID0gW1xuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEjJyxcbiAgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hJyxcbiAgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIycsXG4gICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSdcbl07XG5cbmZ1bmN0aW9uIGV4cGFuZChvYmosIHBhcmVudCwgY2FsbGJhY2spIHtcbiAgaWYgKG9iaikge1xuICAgIHZhciBpZCA9IHR5cGVvZiBvYmouaWQgPT09ICdzdHJpbmcnID8gb2JqLmlkIDogJyMnO1xuXG4gICAgaWYgKCEkLmlzVVJMKGlkKSkge1xuICAgICAgaWQgPSAkLnJlc29sdmVVUkwocGFyZW50ID09PSBpZCA/IG51bGwgOiBwYXJlbnQsIGlkKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iai4kcmVmID09PSAnc3RyaW5nJyAmJiAhJC5pc1VSTChvYmouJHJlZikpIHtcbiAgICAgIG9iai4kcmVmID0gJC5yZXNvbHZlVVJMKGlkLCBvYmouJHJlZik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmouaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvYmouaWQgPSBwYXJlbnQgPSBpZDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhJC5pc0tleXdvcmQoa2V5KSkge1xuICAgICAgZXhwYW5kKHZhbHVlLCBwYXJlbnQsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sob2JqKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZha2Vyb290LCBzY2hlbWEsIHB1c2gpIHtcbiAgaWYgKHR5cGVvZiBmYWtlcm9vdCA9PT0gJ29iamVjdCcpIHtcbiAgICBwdXNoID0gc2NoZW1hO1xuICAgIHNjaGVtYSA9IGZha2Vyb290O1xuICAgIGZha2Vyb290ID0gbnVsbDtcbiAgfVxuXG4gIHZhciBiYXNlID0gZmFrZXJvb3QgfHwgJycsXG4gICAgICBjb3B5ID0gY2xvbmVPYmooc2NoZW1hKTtcblxuICBpZiAoY29weS4kc2NoZW1hICYmIFNDSEVNQV9VUkkuaW5kZXhPZihjb3B5LiRzY2hlbWEpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc2NoZW1hIHZlcnNpb24gKHY0IG9ubHkpJyk7XG4gIH1cblxuICBiYXNlID0gJC5yZXNvbHZlVVJMKGNvcHkuJHNjaGVtYSB8fCBTQ0hFTUFfVVJJWzBdLCBiYXNlKTtcblxuICBleHBhbmQoY29weSwgJC5yZXNvbHZlVVJMKGNvcHkuaWQgfHwgJyMnLCBiYXNlKSwgcHVzaCk7XG5cbiAgY29weS5pZCA9IGNvcHkuaWQgfHwgYmFzZTtcblxuICByZXR1cm4gY29weTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG5cbnZhciBmaW5kID0gcmVxdWlyZSgnLi9maW5kLXJlZmVyZW5jZScpO1xuXG52YXIgZGVlcEV4dGVuZCA9IHJlcXVpcmUoJ2RlZXAtZXh0ZW5kJyk7XG5cbmZ1bmN0aW9uIGNvcHkoXywgb2JqLCByZWZzLCBwYXJlbnQsIHJlc29sdmUsIGNhbGxiYWNrKSB7XG4gIHZhciB0YXJnZXQgPSAgQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcblxuICBpZiAodHlwZW9mIG9iai4kcmVmID09PSAnc3RyaW5nJykge1xuICAgIHZhciBpZCA9IG9iai4kcmVmO1xuICAgIHZhciBiYXNlID0gJC5nZXREb2N1bWVudFVSSShpZCk7XG4gICAgdmFyIGxvY2FsID0gaWQuaW5kZXhPZignIy8nKSA+IC0xO1xuXG4gICAgaWYgKGxvY2FsIHx8IChyZXNvbHZlICYmIGJhc2UgIT09IHBhcmVudCkpIHtcbiAgICAgIHZhciBmaXhlZCA9IGZpbmQoaWQsIHJlZnMsIGNhbGxiYWNrKTtcblxuICAgICAgZGVlcEV4dGVuZChvYmosIGZpeGVkKTtcblxuICAgICAgZGVsZXRlIG9iai4kcmVmO1xuICAgICAgZGVsZXRlIG9iai5pZDtcbiAgICB9XG5cbiAgICBpZiAoX1tpZF0gPiAxMCkge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBpZiAoX1tpZF0pIHtcbiAgICAgIF9baWRdICs9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9baWRdID0gMTtcbiAgICB9XG4gIH1cblxuXG4gIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XG5cbiAgICBpZiAodHlwZW9mIG9ialtwcm9wXSA9PT0gJ29iamVjdCcgJiYgb2JqW3Byb3BdICE9PSBudWxsICYmICEkLmlzS2V5d29yZChwcm9wKSkge1xuICAgICAgdGFyZ2V0W3Byb3BdID0gY29weShfLCBvYmpbcHJvcF0sIHJlZnMsIHBhcmVudCwgcmVzb2x2ZSwgY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSBvYmpbcHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHJlZnMsIHJlc29sdmUsIGNhbGxiYWNrKSB7XG4gIHZhciBmaXhlZElkID0gJC5yZXNvbHZlVVJMKG9iai4kc2NoZW1hLCBvYmouaWQpLFxuICAgICAgcGFyZW50ID0gJC5nZXREb2N1bWVudFVSSShmaXhlZElkKTtcblxuICByZXR1cm4gY29weSh7fSwgb2JqLCByZWZzLCBwYXJlbnQsIHJlc29sdmUsIGNhbGxiYWNrKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQgaW5kZW50OiA0ICovXG5cblxuLy8gUHJpdmF0ZSBoZWxwZXIgY2xhc3NcbmNsYXNzIFN1YlJhbmdlIHtcbiAgICBjb25zdHJ1Y3Rvcihsb3csIGhpZ2gpIHtcbiAgICAgICAgdGhpcy5sb3cgPSBsb3c7XG4gICAgICAgIHRoaXMuaGlnaCA9IGhpZ2g7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMSArIGhpZ2ggLSBsb3c7XG4gICAgfVxuXG4gICAgb3ZlcmxhcHMocmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5oaWdoIDwgcmFuZ2UubG93IHx8IHRoaXMubG93ID4gcmFuZ2UuaGlnaCk7XG4gICAgfVxuXG4gICAgdG91Y2hlcyhyYW5nZSkge1xuICAgICAgICByZXR1cm4gISh0aGlzLmhpZ2ggKyAxIDwgcmFuZ2UubG93IHx8IHRoaXMubG93IC0gMSA+IHJhbmdlLmhpZ2gpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgaW5jbHVzaXZlIGNvbWJpbmF0aW9uIG9mIFN1YlJhbmdlcyBhcyBhIFN1YlJhbmdlLlxuICAgIGFkZChyYW5nZSkge1xuICAgICAgICByZXR1cm4gbmV3IFN1YlJhbmdlKFxuICAgICAgICAgICAgTWF0aC5taW4odGhpcy5sb3csIHJhbmdlLmxvdyksXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLmhpZ2gsIHJhbmdlLmhpZ2gpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBzdWJ0cmFjdGlvbiBvZiBTdWJSYW5nZXMgYXMgYW4gYXJyYXkgb2YgU3ViUmFuZ2VzLlxuICAgIC8vIChUaGVyZSdzIGEgY2FzZSB3aGVyZSBzdWJ0cmFjdGlvbiBkaXZpZGVzIGl0IGluIDIpXG4gICAgc3VidHJhY3QocmFuZ2UpIHtcbiAgICAgICAgaWYgKHJhbmdlLmxvdyA8PSB0aGlzLmxvdyAmJiByYW5nZS5oaWdoID49IHRoaXMuaGlnaCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2UgaWYgKHJhbmdlLmxvdyA+IHRoaXMubG93ICYmIHJhbmdlLmhpZ2ggPCB0aGlzLmhpZ2gpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbmV3IFN1YlJhbmdlKHRoaXMubG93LCByYW5nZS5sb3cgLSAxKSxcbiAgICAgICAgICAgICAgICBuZXcgU3ViUmFuZ2UocmFuZ2UuaGlnaCArIDEsIHRoaXMuaGlnaClcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAocmFuZ2UubG93IDw9IHRoaXMubG93KSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBTdWJSYW5nZShyYW5nZS5oaWdoICsgMSwgdGhpcy5oaWdoKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBTdWJSYW5nZSh0aGlzLmxvdywgcmFuZ2UubG93IC0gMSldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvdyA9PSB0aGlzLmhpZ2ggP1xuICAgICAgICAgICAgdGhpcy5sb3cudG9TdHJpbmcoKSA6IHRoaXMubG93ICsgJy0nICsgdGhpcy5oaWdoO1xuICAgIH1cbn1cblxuXG5jbGFzcyBEUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKGEsIGIpIHtcbiAgICAgICAgdGhpcy5yYW5nZXMgPSBbXTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICBpZiAoYSAhPSBudWxsKSB0aGlzLmFkZChhLCBiKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlX2xlbmd0aCgpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLnJhbmdlcy5yZWR1Y2UoKHByZXZpb3VzLCByYW5nZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzICsgcmFuZ2UubGVuZ3RoO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICB2YXIgX2FkZCA9IChzdWJyYW5nZSkgPT4ge1xuICAgICAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgIXN1YnJhbmdlLnRvdWNoZXModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG5ld1JhbmdlcyA9IHRoaXMucmFuZ2VzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgc3VicmFuZ2UudG91Y2hlcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBzdWJyYW5nZSA9IHN1YnJhbmdlLmFkZCh0aGlzLnJhbmdlc1tpXSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3UmFuZ2VzLnB1c2goc3VicmFuZ2UpO1xuICAgICAgICAgICAgdGhpcy5yYW5nZXMgPSBuZXdSYW5nZXMuY29uY2F0KHRoaXMucmFuZ2VzLnNsaWNlKGkpKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZV9sZW5ndGgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgRFJhbmdlKSB7XG4gICAgICAgICAgICBhLnJhbmdlcy5mb3JFYWNoKF9hZGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGIgPT0gbnVsbCkgYiA9IGE7XG4gICAgICAgICAgICBfYWRkKG5ldyBTdWJSYW5nZShhLCBiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgc3VidHJhY3QoYSwgYikge1xuICAgICAgICB2YXIgX3N1YnRyYWN0ID0gKHN1YnJhbmdlKSA9PiB7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiAhc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG5ld1JhbmdlcyA9IHRoaXMucmFuZ2VzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgbmV3UmFuZ2VzID0gbmV3UmFuZ2VzLmNvbmNhdCh0aGlzLnJhbmdlc1tpXS5zdWJ0cmFjdChzdWJyYW5nZSkpO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmFuZ2VzID0gbmV3UmFuZ2VzLmNvbmNhdCh0aGlzLnJhbmdlcy5zbGljZShpKSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVfbGVuZ3RoKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgICAgICAgIGEucmFuZ2VzLmZvckVhY2goX3N1YnRyYWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChiID09IG51bGwpIGIgPSBhO1xuICAgICAgICAgICAgX3N1YnRyYWN0KG5ldyBTdWJSYW5nZShhLCBiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0KGEsIGIpIHtcbiAgICAgICAgdmFyIG5ld1JhbmdlcyA9IFtdO1xuICAgICAgICB2YXIgX2ludGVyc2VjdCA9IChzdWJyYW5nZSkgPT4ge1xuICAgICAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgIXN1YnJhbmdlLm92ZXJsYXBzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmIHN1YnJhbmdlLm92ZXJsYXBzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIHZhciBsb3cgPSBNYXRoLm1heCh0aGlzLnJhbmdlc1tpXS5sb3csIHN1YnJhbmdlLmxvdyk7XG4gICAgICAgICAgICAgICAgdmFyIGhpZ2ggPSBNYXRoLm1pbih0aGlzLnJhbmdlc1tpXS5oaWdoLCBzdWJyYW5nZS5oaWdoKTtcbiAgICAgICAgICAgICAgICBuZXdSYW5nZXMucHVzaChuZXcgU3ViUmFuZ2UobG93LCBoaWdoKSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgRFJhbmdlKSB7XG4gICAgICAgICAgICBhLnJhbmdlcy5mb3JFYWNoKF9pbnRlcnNlY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGIgPT0gbnVsbCkgYiA9IGE7XG4gICAgICAgICAgICBfaW50ZXJzZWN0KG5ldyBTdWJSYW5nZShhLCBiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYW5nZXMgPSBuZXdSYW5nZXM7XG4gICAgICAgIHRoaXMuX3VwZGF0ZV9sZW5ndGgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaW5kZXgoaW5kZXgpIHtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiB0aGlzLnJhbmdlc1tpXS5sZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgICAgICAgIGluZGV4IC09IHRoaXMucmFuZ2VzW2ldLmxlbmd0aDtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZXNbaV0ubG93ICsgaW5kZXg7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiAnWyAnICsgdGhpcy5yYW5nZXMuam9pbignLCAnKSArICcgXSc7XG4gICAgfVxuXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFJhbmdlKHRoaXMpO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEUmFuZ2U7XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJ0FTIElTJ1xuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGlzRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJheUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnQXNzaWdubWVudEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnQmluYXJ5RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdDYWxsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdDb25kaXRpb25hbEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnRnVuY3Rpb25FeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0lkZW50aWZpZXInOlxuICAgICAgICAgICAgY2FzZSAnTGl0ZXJhbCc6XG4gICAgICAgICAgICBjYXNlICdMb2dpY2FsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdNZW1iZXJFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ05ld0V4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnT2JqZWN0RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdTZXF1ZW5jZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnVGhpc0V4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnVW5hcnlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1VwZGF0ZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0l0ZXJhdGlvblN0YXRlbWVudChub2RlKSB7XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdEb1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvckluU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvclN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdXaGlsZVN0YXRlbWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0JyZWFrU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0NvbnRpbnVlU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0RlYnVnZ2VyU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0RvV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRW1wdHlTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRXhwcmVzc2lvblN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdGb3JJblN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdGb3JTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnSWZTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnTGFiZWxlZFN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdSZXR1cm5TdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnU3dpdGNoU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1Rocm93U3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1RyeVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdWYXJpYWJsZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1dpdGhTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NvdXJjZUVsZW1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIGlzU3RhdGVtZW50KG5vZGUpIHx8IG5vZGUgIT0gbnVsbCAmJiBub2RlLnR5cGUgPT09ICdGdW5jdGlvbkRlY2xhcmF0aW9uJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFpbGluZ1N0YXRlbWVudChub2RlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0lmU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGlmIChub2RlLmFsdGVybmF0ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuYWx0ZXJuYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY29uc2VxdWVudDtcblxuICAgICAgICBjYXNlICdMYWJlbGVkU3RhdGVtZW50JzpcbiAgICAgICAgY2FzZSAnRm9yU3RhdGVtZW50JzpcbiAgICAgICAgY2FzZSAnRm9ySW5TdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdXaGlsZVN0YXRlbWVudCc6XG4gICAgICAgIGNhc2UgJ1dpdGhTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYm9keTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Byb2JsZW1hdGljSWZTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICB2YXIgY3VycmVudDtcblxuICAgICAgICBpZiAobm9kZS50eXBlICE9PSAnSWZTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gbm9kZS5jb25zZXF1ZW50O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAoY3VycmVudC50eXBlID09PSAnSWZTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuYWx0ZXJuYXRlID09IG51bGwpICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnQgPSB0cmFpbGluZ1N0YXRlbWVudChjdXJyZW50KTtcbiAgICAgICAgfSB3aGlsZSAoY3VycmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0ge1xuICAgICAgICBpc0V4cHJlc3Npb246IGlzRXhwcmVzc2lvbixcbiAgICAgICAgaXNTdGF0ZW1lbnQ6IGlzU3RhdGVtZW50LFxuICAgICAgICBpc0l0ZXJhdGlvblN0YXRlbWVudDogaXNJdGVyYXRpb25TdGF0ZW1lbnQsXG4gICAgICAgIGlzU291cmNlRWxlbWVudDogaXNTb3VyY2VFbGVtZW50LFxuICAgICAgICBpc1Byb2JsZW1hdGljSWZTdGF0ZW1lbnQ6IGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudCxcblxuICAgICAgICB0cmFpbGluZ1N0YXRlbWVudDogdHJhaWxpbmdTdGF0ZW1lbnRcbiAgICB9O1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxNCBJdmFuIE5pa3VsaW4gPGlmYWFhbkBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgRVM2UmVnZXgsIEVTNVJlZ2V4LCBOT05fQVNDSUlfV0hJVEVTUEFDRVMsIElERU5USUZJRVJfU1RBUlQsIElERU5USUZJRVJfUEFSVCwgY2g7XG5cbiAgICAvLyBTZWUgYHRvb2xzL2dlbmVyYXRlLWlkZW50aWZpZXItcmVnZXguanNgLlxuICAgIEVTNVJlZ2V4ID0ge1xuICAgICAgICAvLyBFQ01BU2NyaXB0IDUuMS9Vbmljb2RlIHY3LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDpcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6IC9bXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwLVxcdTA4QjJcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNThcXHUwQzU5XFx1MEM2MFxcdTBDNjFcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENjBcXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxMVxcdTE3MjAtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QzEtXFx1MTlDN1xcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGMVxcdTFDRjVcXHUxQ0Y2XFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkUyRlxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXS8sXG4gICAgICAgIC8vIEVDTUFTY3JpcHQgNS4xL1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6IC9bXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzMDAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4My1cXHUwNDg3XFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MTAtXFx1MDYxQVxcdTA2MjAtXFx1MDY2OVxcdTA2NkUtXFx1MDZEM1xcdTA2RDUtXFx1MDZEQ1xcdTA2REYtXFx1MDZFOFxcdTA2RUEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwLVxcdTA3NEFcXHUwNzRELVxcdTA3QjFcXHUwN0MwLVxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODJEXFx1MDg0MC1cXHUwODVCXFx1MDhBMC1cXHUwOEIyXFx1MDhFNC1cXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk3MS1cXHUwOTgzXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCQy1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0VcXHUwOUQ3XFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTNcXHUwOUU2LVxcdTA5RjFcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OFxcdTBDNTlcXHUwQzYwLVxcdTBDNjNcXHUwQzY2LVxcdTBDNkZcXHUwQzgxLVxcdTBDODNcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JDLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDREVcXHUwQ0UwLVxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwQ0YxXFx1MENGMlxcdTBEMDEtXFx1MEQwM1xcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0QtXFx1MEQ0NFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0RVxcdTBENTdcXHUwRDYwLVxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDdBLVxcdTBEN0ZcXHUwRDgyXFx1MEQ4M1xcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUwMS1cXHUwRTNBXFx1MEU0MC1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjlcXHUwRUJCLVxcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRS1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY3MS1cXHUwRjg0XFx1MEY4Ni1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMDAtXFx1MTA0OVxcdTEwNTAtXFx1MTA5RFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzVELVxcdTEzNUZcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTRcXHUxNzIwLVxcdTE3MzRcXHUxNzQwLVxcdTE3NTNcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzcyXFx1MTc3M1xcdTE3ODAtXFx1MTdEM1xcdTE3RDdcXHUxN0RDXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MTAtXFx1MTgxOVxcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEOVxcdTFBMDAtXFx1MUExQlxcdTFBMjAtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQUIwLVxcdTFBQkRcXHUxQjAwLVxcdTFCNEJcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCRjNcXHUxQzAwLVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRjZcXHUxQ0Y4XFx1MUNGOVxcdTFEMDAtXFx1MURGNVxcdTFERkMtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OVxcdTMwOUFcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2OURcXHVBNjlGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3QURcXHVBN0IwXFx1QTdCMVxcdUE3RjctXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNFxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOTAwLVxcdUE5MkRcXHVBOTMwLVxcdUE5NTNcXHVBOTYwLVxcdUE5N0NcXHVBOTgwLVxcdUE5QzBcXHVBOUNGLVxcdUE5RDlcXHVBOUUwLVxcdUE5RkVcXHVBQTAwLVxcdUFBMzZcXHVBQTQwLVxcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTYwLVxcdUFBNzZcXHVBQTdBLVxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUZcXHVBQUYyLVxcdUFBRjZcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNUZcXHVBQjY0XFx1QUI2NVxcdUFCQzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkRcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdL1xuICAgIH07XG5cbiAgICBFUzZSZWdleCA9IHtcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA2L1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OlxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCMlxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE4LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlCLVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdBRFxcdUE3QjBcXHVBN0IxXFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNUZcXHVBQjY0XFx1QUI2NVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURENDAtXFx1REQ3NFxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMzAtXFx1REY0QVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRlxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdUREMDAtXFx1REQxNVxcdUREMjAtXFx1REQzOVxcdUREODAtXFx1RERCN1xcdUREQkVcXHVEREJGXFx1REUwMFxcdURFMTAtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzM1xcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNFxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMkJcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzgwLVxcdURDQUZcXHVEQ0M0XFx1RENDNVxcdURDQzdcXHVERDgwLVxcdUREQUVcXHVERTAwLVxcdURFMkZcXHVERTQ0XFx1REU4MC1cXHVERUFBXXxcXHVEODA2W1xcdURDQTAtXFx1RENERlxcdURDRkZcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk4XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV18W1xcdUQ4MENcXHVEODQwLVxcdUQ4NjhcXHVEODZBLVxcdUQ4NkNdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzAwLVxcdURDMkVdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURGMDAtXFx1REY0NFxcdURGNTBcXHVERjkzLVxcdURGOUZdfFxcdUQ4MkNbXFx1REMwMFxcdURDMDFdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4M0FbXFx1REMwMC1cXHVEQ0M0XXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXS8sXG4gICAgICAgIC8vIEVDTUFTY3JpcHQgNi9Vbmljb2RlIHY3LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OlxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiAvW1xceEFBXFx4QjVcXHhCN1xceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzMDAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODYtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwLVxcdTA4QjJcXHUwOEU0LVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTBBMDEtXFx1MEEwM1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTY2LVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkMtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQjAxLVxcdTBCMDNcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzQy1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU2XFx1MEI1N1xcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYzXFx1MEI2Ni1cXHUwQjZGXFx1MEI3MVxcdTBCODJcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCQkUtXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDRFxcdTBCRDBcXHUwQkQ3XFx1MEJFNi1cXHUwQkVGXFx1MEMwMC1cXHUwQzAzXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRC1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzU4XFx1MEM1OVxcdTBDNjAtXFx1MEM2M1xcdTBDNjYtXFx1MEM2RlxcdTBDODEtXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMS1cXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENjAtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzNjktXFx1MTM3MVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOURBXFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFBQjAtXFx1MUFCRFxcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFDRjhcXHUxQ0Y5XFx1MUQwMC1cXHUxREY1XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOC1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyRlxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOTktXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTY5RFxcdUE2OUYtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdBRFxcdUE3QjBcXHVBN0IxXFx1QTdGNy1cXHVBODI3XFx1QTg0MC1cXHVBODczXFx1QTg4MC1cXHVBOEM0XFx1QThEMC1cXHVBOEQ5XFx1QThFMC1cXHVBOEY3XFx1QThGQlxcdUE5MDAtXFx1QTkyRFxcdUE5MzAtXFx1QTk1M1xcdUE5NjAtXFx1QTk3Q1xcdUE5ODAtXFx1QTlDMFxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlGRVxcdUFBMDAtXFx1QUEzNlxcdUFBNDAtXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0EtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRFxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYxMC1cXHVGRjE5XFx1RkYyMS1cXHVGRjNBXFx1RkYzRlxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURENDAtXFx1REQ3NFxcdURERkRcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERUUwXFx1REYwMC1cXHVERjFGXFx1REYzMC1cXHVERjRBXFx1REY1MC1cXHVERjdBXFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQTAtXFx1RENBOVxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwLVxcdURFMDNcXHVERTA1XFx1REUwNlxcdURFMEMtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzM1xcdURFMzgtXFx1REUzQVxcdURFM0ZcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTZcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XXxcXHVEODA0W1xcdURDMDAtXFx1REM0NlxcdURDNjYtXFx1REM2RlxcdURDN0YtXFx1RENCQVxcdURDRDAtXFx1RENFOFxcdURDRjAtXFx1RENGOVxcdUREMDAtXFx1REQzNFxcdUREMzYtXFx1REQzRlxcdURENTAtXFx1REQ3M1xcdURENzZcXHVERDgwLVxcdUREQzRcXHVEREQwLVxcdUREREFcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMzdcXHVERUIwLVxcdURFRUFcXHVERUYwLVxcdURFRjlcXHVERjAxLVxcdURGMDNcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzQy1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjU3XFx1REY1RC1cXHVERjYzXFx1REY2Ni1cXHVERjZDXFx1REY3MC1cXHVERjc0XXxcXHVEODA1W1xcdURDODAtXFx1RENDNVxcdURDQzdcXHVEQ0QwLVxcdURDRDlcXHVERDgwLVxcdUREQjVcXHVEREI4LVxcdUREQzBcXHVERTAwLVxcdURFNDBcXHVERTQ0XFx1REU1MC1cXHVERTU5XFx1REU4MC1cXHVERUI3XFx1REVDMC1cXHVERUM5XXxcXHVEODA2W1xcdURDQTAtXFx1RENFOVxcdURDRkZcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk4XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV18W1xcdUQ4MENcXHVEODQwLVxcdUQ4NjhcXHVEODZBLVxcdUQ4NkNdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzAwLVxcdURDMkVdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REU2MC1cXHVERTY5XFx1REVEMC1cXHVERUVEXFx1REVGMC1cXHVERUY0XFx1REYwMC1cXHVERjM2XFx1REY0MC1cXHVERjQzXFx1REY1MC1cXHVERjU5XFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURGMDAtXFx1REY0NFxcdURGNTAtXFx1REY3RVxcdURGOEYtXFx1REY5Rl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTlcXHVEQzlEXFx1REM5RV18XFx1RDgzNFtcXHVERDY1LVxcdURENjlcXHVERDZELVxcdURENzJcXHVERDdCLVxcdUREODJcXHVERDg1LVxcdUREOEJcXHVEREFBLVxcdUREQURcXHVERTQyLVxcdURFNDRdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQlxcdURGQ0UtXFx1REZGRl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVEQ0QwLVxcdURDRDZdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXS9cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNEZWNpbWFsRGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuIDB4MzAgPD0gY2ggJiYgY2ggPD0gMHgzOTsgIC8vIDAuLjlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0hleERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAweDMwIDw9IGNoICYmIGNoIDw9IDB4MzkgfHwgIC8vIDAuLjlcbiAgICAgICAgICAgIDB4NjEgPD0gY2ggJiYgY2ggPD0gMHg2NiB8fCAgICAgLy8gYS4uZlxuICAgICAgICAgICAgMHg0MSA8PSBjaCAmJiBjaCA8PSAweDQ2OyAgICAgICAvLyBBLi5GXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPY3RhbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA+PSAweDMwICYmIGNoIDw9IDB4Mzc7ICAvLyAwLi43XG4gICAgfVxuXG4gICAgLy8gNy4yIFdoaXRlIFNwYWNlXG5cbiAgICBOT05fQVNDSUlfV0hJVEVTUEFDRVMgPSBbXG4gICAgICAgIDB4MTY4MCwgMHgxODBFLFxuICAgICAgICAweDIwMDAsIDB4MjAwMSwgMHgyMDAyLCAweDIwMDMsIDB4MjAwNCwgMHgyMDA1LCAweDIwMDYsIDB4MjAwNywgMHgyMDA4LCAweDIwMDksIDB4MjAwQSxcbiAgICAgICAgMHgyMDJGLCAweDIwNUYsXG4gICAgICAgIDB4MzAwMCxcbiAgICAgICAgMHhGRUZGXG4gICAgXTtcblxuICAgIGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjaCkge1xuICAgICAgICByZXR1cm4gY2ggPT09IDB4MjAgfHwgY2ggPT09IDB4MDkgfHwgY2ggPT09IDB4MEIgfHwgY2ggPT09IDB4MEMgfHwgY2ggPT09IDB4QTAgfHxcbiAgICAgICAgICAgIGNoID49IDB4MTY4MCAmJiBOT05fQVNDSUlfV0hJVEVTUEFDRVMuaW5kZXhPZihjaCkgPj0gMDtcbiAgICB9XG5cbiAgICAvLyA3LjMgTGluZSBUZXJtaW5hdG9yc1xuXG4gICAgZnVuY3Rpb24gaXNMaW5lVGVybWluYXRvcihjaCkge1xuICAgICAgICByZXR1cm4gY2ggPT09IDB4MEEgfHwgY2ggPT09IDB4MEQgfHwgY2ggPT09IDB4MjAyOCB8fCBjaCA9PT0gMHgyMDI5O1xuICAgIH1cblxuICAgIC8vIDcuNiBJZGVudGlmaWVyIE5hbWVzIGFuZCBJZGVudGlmaWVyc1xuXG4gICAgZnVuY3Rpb24gZnJvbUNvZGVQb2ludChjcCkge1xuICAgICAgICBpZiAoY3AgPD0gMHhGRkZGKSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTsgfVxuICAgICAgICB2YXIgY3UxID0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLmZsb29yKChjcCAtIDB4MTAwMDApIC8gMHg0MDApICsgMHhEODAwKTtcbiAgICAgICAgdmFyIGN1MiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjcCAtIDB4MTAwMDApICUgMHg0MDApICsgMHhEQzAwKTtcbiAgICAgICAgcmV0dXJuIGN1MSArIGN1MjtcbiAgICB9XG5cbiAgICBJREVOVElGSUVSX1NUQVJUID0gbmV3IEFycmF5KDB4ODApO1xuICAgIGZvcihjaCA9IDA7IGNoIDwgMHg4MDsgKytjaCkge1xuICAgICAgICBJREVOVElGSUVSX1NUQVJUW2NoXSA9XG4gICAgICAgICAgICBjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EgfHwgIC8vIGEuLnpcbiAgICAgICAgICAgIGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSB8fCAgLy8gQS4uWlxuICAgICAgICAgICAgY2ggPT09IDB4MjQgfHwgY2ggPT09IDB4NUY7ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgIH1cblxuICAgIElERU5USUZJRVJfUEFSVCA9IG5ldyBBcnJheSgweDgwKTtcbiAgICBmb3IoY2ggPSAwOyBjaCA8IDB4ODA7ICsrY2gpIHtcbiAgICAgICAgSURFTlRJRklFUl9QQVJUW2NoXSA9XG4gICAgICAgICAgICBjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EgfHwgIC8vIGEuLnpcbiAgICAgICAgICAgIGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSB8fCAgLy8gQS4uWlxuICAgICAgICAgICAgY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5IHx8ICAvLyAwLi45XG4gICAgICAgICAgICBjaCA9PT0gMHgyNCB8fCBjaCA9PT0gMHg1RjsgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2NvcmUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnRFUzUoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoIDwgMHg4MCA/IElERU5USUZJRVJfU1RBUlRbY2hdIDogRVM1UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChmcm9tQ29kZVBvaW50KGNoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydEVTNShjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9QQVJUW2NoXSA6IEVTNVJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclBhcnQudGVzdChmcm9tQ29kZVBvaW50KGNoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnRFUzYoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoIDwgMHg4MCA/IElERU5USUZJRVJfU1RBUlRbY2hdIDogRVM2UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChmcm9tQ29kZVBvaW50KGNoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydEVTNihjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9QQVJUW2NoXSA6IEVTNlJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclBhcnQudGVzdChmcm9tQ29kZVBvaW50KGNoKSk7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGlzRGVjaW1hbERpZ2l0OiBpc0RlY2ltYWxEaWdpdCxcbiAgICAgICAgaXNIZXhEaWdpdDogaXNIZXhEaWdpdCxcbiAgICAgICAgaXNPY3RhbERpZ2l0OiBpc09jdGFsRGlnaXQsXG4gICAgICAgIGlzV2hpdGVTcGFjZTogaXNXaGl0ZVNwYWNlLFxuICAgICAgICBpc0xpbmVUZXJtaW5hdG9yOiBpc0xpbmVUZXJtaW5hdG9yLFxuICAgICAgICBpc0lkZW50aWZpZXJTdGFydEVTNTogaXNJZGVudGlmaWVyU3RhcnRFUzUsXG4gICAgICAgIGlzSWRlbnRpZmllclBhcnRFUzU6IGlzSWRlbnRpZmllclBhcnRFUzUsXG4gICAgICAgIGlzSWRlbnRpZmllclN0YXJ0RVM2OiBpc0lkZW50aWZpZXJTdGFydEVTNixcbiAgICAgICAgaXNJZGVudGlmaWVyUGFydEVTNjogaXNJZGVudGlmaWVyUGFydEVTNlxuICAgIH07XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgY29kZSA9IHJlcXVpcmUoJy4vY29kZScpO1xuXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkRVM2KGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgY2FzZSAnaW1wbGVtZW50cyc6XG4gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG4gICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuICAgICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkJzpcbiAgICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgY2FzZSAnc3RhdGljJzpcbiAgICAgICAgY2FzZSAnbGV0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNLZXl3b3JkRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgLy8geWllbGQgc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGtleXdvcmQgdW5kZXIgbm9uLXN0cmljdCBtb2RlLlxuICAgICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PT0gJ3lpZWxkJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0tleXdvcmRFUzYoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmRFUzYoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoaWQubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpZicpIHx8IChpZCA9PT0gJ2luJykgfHwgKGlkID09PSAnZG8nKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3ZhcicpIHx8IChpZCA9PT0gJ2ZvcicpIHx8IChpZCA9PT0gJ25ldycpIHx8IChpZCA9PT0gJ3RyeScpO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAndGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8IChpZCA9PT0gJ2VudW0nKTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8IChpZCA9PT0gJ3lpZWxkJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8IChpZCA9PT0gJ3N1cGVyJyk7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdyZXR1cm4nKSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3N3aXRjaCcpIHx8IChpZCA9PT0gJ2V4cG9ydCcpIHx8IChpZCA9PT0gJ2ltcG9ydCcpO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnZGVmYXVsdCcpIHx8IChpZCA9PT0gJ2ZpbmFsbHknKSB8fCAoaWQgPT09ICdleHRlbmRzJyk7XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicpIHx8IChpZCA9PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXInKTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpbnN0YW5jZW9mJyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc2VydmVkV29yZEVTNShpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ251bGwnIHx8IGlkID09PSAndHJ1ZScgfHwgaWQgPT09ICdmYWxzZScgfHwgaXNLZXl3b3JkRVM1KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkRVM2KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnbnVsbCcgfHwgaWQgPT09ICd0cnVlJyB8fCBpZCA9PT0gJ2ZhbHNlJyB8fCBpc0tleXdvcmRFUzYoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZXN0cmljdGVkV29yZChpZCkge1xuICAgICAgICByZXR1cm4gaWQgPT09ICdldmFsJyB8fCBpZCA9PT0gJ2FyZ3VtZW50cyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZUVTNShpZCkge1xuICAgICAgICB2YXIgaSwgaXosIGNoO1xuXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY2ggPSBpZC5jaGFyQ29kZUF0KDApO1xuICAgICAgICBpZiAoIWNvZGUuaXNJZGVudGlmaWVyU3RhcnRFUzUoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IGlkLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGNoID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmICghY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGNoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWNvZGVVdGYxNihsZWFkLCB0cmFpbCkge1xuICAgICAgICByZXR1cm4gKGxlYWQgLSAweEQ4MDApICogMHg0MDAgKyAodHJhaWwgLSAweERDMDApICsgMHgxMDAwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJOYW1lRVM2KGlkKSB7XG4gICAgICAgIHZhciBpLCBpeiwgY2gsIGxvd0NoLCBjaGVjaztcblxuICAgICAgICBpZiAoaWQubGVuZ3RoID09PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgIGNoZWNrID0gY29kZS5pc0lkZW50aWZpZXJTdGFydEVTNjtcbiAgICAgICAgZm9yIChpID0gMCwgaXogPSBpZC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikge1xuICAgICAgICAgICAgICAgICsraTtcbiAgICAgICAgICAgICAgICBpZiAoaSA+PSBpeikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgICAgICAgICBsb3dDaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICAgICAgaWYgKCEoMHhEQzAwIDw9IGxvd0NoICYmIGxvd0NoIDw9IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjaCA9IGRlY29kZVV0ZjE2KGNoLCBsb3dDaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrKGNoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrID0gY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM2O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllckVTNShpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpc0lkZW50aWZpZXJOYW1lRVM1KGlkKSAmJiAhaXNSZXNlcnZlZFdvcmRFUzUoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyRVM2KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlzSWRlbnRpZmllck5hbWVFUzYoaWQpICYmICFpc1Jlc2VydmVkV29yZEVTNihpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNLZXl3b3JkRVM1OiBpc0tleXdvcmRFUzUsXG4gICAgICAgIGlzS2V5d29yZEVTNjogaXNLZXl3b3JkRVM2LFxuICAgICAgICBpc1Jlc2VydmVkV29yZEVTNTogaXNSZXNlcnZlZFdvcmRFUzUsXG4gICAgICAgIGlzUmVzZXJ2ZWRXb3JkRVM2OiBpc1Jlc2VydmVkV29yZEVTNixcbiAgICAgICAgaXNSZXN0cmljdGVkV29yZDogaXNSZXN0cmljdGVkV29yZCxcbiAgICAgICAgaXNJZGVudGlmaWVyTmFtZUVTNTogaXNJZGVudGlmaWVyTmFtZUVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyTmFtZUVTNjogaXNJZGVudGlmaWVyTmFtZUVTNixcbiAgICAgICAgaXNJZGVudGlmaWVyRVM1OiBpc0lkZW50aWZpZXJFUzUsXG4gICAgICAgIGlzSWRlbnRpZmllckVTNjogaXNJZGVudGlmaWVyRVM2XG4gICAgfTtcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEzIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZXhwb3J0cy5hc3QgPSByZXF1aXJlKCcuL2FzdCcpO1xuICAgIGV4cG9ydHMuY29kZSA9IHJlcXVpcmUoJy4vY29kZScpO1xuICAgIGV4cG9ydHMua2V5d29yZCA9IHJlcXVpcmUoJy4va2V5d29yZCcpO1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUgfHwgb2JqZWN0Q3JlYXRlUG9seWZpbGxcbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgb2JqZWN0S2V5c1BvbHlmaWxsXG52YXIgYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIHx8IGZ1bmN0aW9uQmluZFBvbHlmaWxsXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLCAnX2V2ZW50cycpKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbnZhciBkZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbnZhciBoYXNEZWZpbmVQcm9wZXJ0eTtcbnRyeSB7XG4gIHZhciBvID0ge307XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCAneCcsIHsgdmFsdWU6IDAgfSk7XG4gIGhhc0RlZmluZVByb3BlcnR5ID0gby54ID09PSAwO1xufSBjYXRjaCAoZXJyKSB7IGhhc0RlZmluZVByb3BlcnR5ID0gZmFsc2UgfVxuaWYgKGhhc0RlZmluZVByb3BlcnR5KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudEVtaXR0ZXIsICdkZWZhdWx0TWF4TGlzdGVuZXJzJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0TWF4TGlzdGVuZXJzO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIGlucHV0IGlzIGEgcG9zaXRpdmUgbnVtYmVyICh3aG9zZSB2YWx1ZSBpcyB6ZXJvIG9yXG4gICAgICAvLyBncmVhdGVyIGFuZCBub3QgYSBOYU4pLlxuICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgYXJnICE9PSBhcmcpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZGVmYXVsdE1heExpc3RlbmVyc1wiIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICAgIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBhcmc7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzID0gZGVmYXVsdE1heExpc3RlbmVycztcbn1cblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBpc05hTihuKSlcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcIm5cIiBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gJGdldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gJGdldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbi8vIFRoZXNlIHN0YW5kYWxvbmUgZW1pdCogZnVuY3Rpb25zIGFyZSB1c2VkIHRvIG9wdGltaXplIGNhbGxpbmcgb2YgZXZlbnRcbi8vIGhhbmRsZXJzIGZvciBmYXN0IGNhc2VzIGJlY2F1c2UgZW1pdCgpIGl0c2VsZiBvZnRlbiBoYXMgYSB2YXJpYWJsZSBudW1iZXIgb2Zcbi8vIGFyZ3VtZW50cyBhbmQgY2FuIGJlIGRlb3B0aW1pemVkIGJlY2F1c2Ugb2YgdGhhdC4gVGhlc2UgZnVuY3Rpb25zIGFsd2F5cyBoYXZlXG4vLyB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aHVzIGRvIG5vdCBnZXQgZGVvcHRpbWl6ZWQsIHNvIHRoZSBjb2RlXG4vLyBpbnNpZGUgdGhlbSBjYW4gZXhlY3V0ZSBmYXN0ZXIuXG5mdW5jdGlvbiBlbWl0Tm9uZShoYW5kbGVyLCBpc0ZuLCBzZWxmKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuY2FsbChzZWxmKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5jYWxsKHNlbGYpO1xuICB9XG59XG5mdW5jdGlvbiBlbWl0T25lKGhhbmRsZXIsIGlzRm4sIHNlbGYsIGFyZzEpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5jYWxsKHNlbGYsIGFyZzEpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmNhbGwoc2VsZiwgYXJnMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRUd28oaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJnMSwgYXJnMikge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZiwgYXJnMSwgYXJnMik7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuZnVuY3Rpb24gZW1pdFRocmVlKGhhbmRsZXIsIGlzRm4sIHNlbGYsIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5jYWxsKHNlbGYsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmNhbGwoc2VsZiwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdE1hbnkoaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJncykge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICB9XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgZXIsIGhhbmRsZXIsIGxlbiwgYXJncywgaSwgZXZlbnRzO1xuICB2YXIgZG9FcnJvciA9ICh0eXBlID09PSAnZXJyb3InKTtcblxuICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMpXG4gICAgZG9FcnJvciA9IChkb0Vycm9yICYmIGV2ZW50cy5lcnJvciA9PSBudWxsKTtcbiAgZWxzZSBpZiAoIWRvRXJyb3IpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKGRvRXJyb3IpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpXG4gICAgICBlciA9IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBcImVycm9yXCIgZXZlbnQuICgnICsgZXIgKyAnKScpO1xuICAgICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoIWhhbmRsZXIpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBpc0ZuID0gdHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbic7XG4gIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHN3aXRjaCAobGVuKSB7XG4gICAgICAvLyBmYXN0IGNhc2VzXG4gICAgY2FzZSAxOlxuICAgICAgZW1pdE5vbmUoaGFuZGxlciwgaXNGbiwgdGhpcyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBlbWl0T25lKGhhbmRsZXIsIGlzRm4sIHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICBlbWl0VHdvKGhhbmRsZXIsIGlzRm4sIHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIGVtaXRUaHJlZShoYW5kbGVyLCBpc0ZuLCB0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSwgYXJndW1lbnRzWzNdKTtcbiAgICAgIGJyZWFrO1xuICAgICAgLy8gc2xvd2VyXG4gICAgZGVmYXVsdDpcbiAgICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgICBmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspXG4gICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgZW1pdE1hbnkoaGFuZGxlciwgaXNGbiwgdGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIF9hZGRMaXN0ZW5lcih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBwcmVwZW5kKSB7XG4gIHZhciBtO1xuICB2YXIgZXZlbnRzO1xuICB2YXIgZXhpc3Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gIGlmICghZXZlbnRzKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lcikge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA/IGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gICAgICAvLyBSZS1hc3NpZ24gYGV2ZW50c2AgYmVjYXVzZSBhIG5ld0xpc3RlbmVyIGhhbmRsZXIgY291bGQgaGF2ZSBjYXVzZWQgdGhlXG4gICAgICAvLyB0aGlzLl9ldmVudHMgdG8gYmUgYXNzaWduZWQgdG8gYSBuZXcgb2JqZWN0XG4gICAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgICB9XG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV07XG4gIH1cblxuICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICAgIGlmIChwcmVwZW5kKSB7XG4gICAgICAgIGV4aXN0aW5nLnVuc2hpZnQobGlzdGVuZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBpZiAoIWV4aXN0aW5nLndhcm5lZCkge1xuICAgICAgbSA9ICRnZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICAgIGlmIChtICYmIG0gPiAwICYmIGV4aXN0aW5nLmxlbmd0aCA+IG0pIHtcbiAgICAgICAgZXhpc3Rpbmcud2FybmVkID0gdHJ1ZTtcbiAgICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICBleGlzdGluZy5sZW5ndGggKyAnIFwiJyArIFN0cmluZyh0eXBlKSArICdcIiBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgJ2luY3JlYXNlIGxpbWl0LicpO1xuICAgICAgICB3Lm5hbWUgPSAnTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nJztcbiAgICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgICB3LmNvdW50ID0gZXhpc3RpbmcubGVuZ3RoO1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09ICdvYmplY3QnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignJXM6ICVzJywgdy5uYW1lLCB3Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpO1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0LCBhcmd1bWVudHNbMF0pO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0LCBhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXSk7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdLFxuICAgICAgICAgICAgYXJndW1lbnRzWzJdKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyArK2kpXG4gICAgICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIF9vbmNlV3JhcCh0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBzdGF0ZSA9IHsgZmlyZWQ6IGZhbHNlLCB3cmFwRm46IHVuZGVmaW5lZCwgdGFyZ2V0OiB0YXJnZXQsIHR5cGU6IHR5cGUsIGxpc3RlbmVyOiBsaXN0ZW5lciB9O1xuICB2YXIgd3JhcHBlZCA9IGJpbmQuY2FsbChvbmNlV3JhcHBlciwgc3RhdGUpO1xuICB3cmFwcGVkLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHN0YXRlLndyYXBGbiA9IHdyYXBwZWQ7XG4gIHJldHVybiB3cmFwcGVkO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiBvbmNlKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB0aGlzLm9uKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmICghZXZlbnRzKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmICghbGlzdClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0Lmxpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbGlzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIGZvciAoaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTGlzdGVuZXIgPSBsaXN0W2ldLmxpc3RlbmVyO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09IDApXG4gICAgICAgICAgbGlzdC5zaGlmdCgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBvcmlnaW5hbExpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmICghZXZlbnRzKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICAgICAgaWYgKCFldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBvYmplY3RLZXlzKGV2ZW50cyk7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgICAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgLy8gTElGTyBvcmRlclxuICAgICAgICBmb3IgKGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuZnVuY3Rpb24gX2xpc3RlbmVycyh0YXJnZXQsIHR5cGUsIHVud3JhcCkge1xuICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG5cbiAgaWYgKCFldmVudHMpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoIWV2bGlzdGVuZXIpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/IHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzKSB7XG4gICAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG5cbiAgICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAoZXZsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdC5vd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbi8vIEFib3V0IDEuNXggZmFzdGVyIHRoYW4gdGhlIHR3by1hcmcgdmVyc2lvbiBvZiBBcnJheSNzcGxpY2UoKS5cbmZ1bmN0aW9uIHNwbGljZU9uZShsaXN0LCBpbmRleCkge1xuICBmb3IgKHZhciBpID0gaW5kZXgsIGsgPSBpICsgMSwgbiA9IGxpc3QubGVuZ3RoOyBrIDwgbjsgaSArPSAxLCBrICs9IDEpXG4gICAgbGlzdFtpXSA9IGxpc3Rba107XG4gIGxpc3QucG9wKCk7XG59XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q3JlYXRlUG9seWZpbGwocHJvdG8pIHtcbiAgdmFyIEYgPSBmdW5jdGlvbigpIHt9O1xuICBGLnByb3RvdHlwZSA9IHByb3RvO1xuICByZXR1cm4gbmV3IEY7XG59XG5mdW5jdGlvbiBvYmplY3RLZXlzUG9seWZpbGwob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGsgaW4gb2JqKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaykpIHtcbiAgICBrZXlzLnB1c2goayk7XG4gIH1cbiAgcmV0dXJuIGs7XG59XG5mdW5jdGlvbiBmdW5jdGlvbkJpbmRQb2x5ZmlsbChjb250ZXh0KSB7XG4gIHZhciBmbiA9IHRoaXM7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmFkZHJlc3NcbiAqL1xuZnVuY3Rpb24gQWRkcmVzcyAoZmFrZXIpIHtcbiAgdmFyIGYgPSBmYWtlci5mYWtlLFxuICAgICAgSGVscGVycyA9IGZha2VyLmhlbHBlcnM7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyByYW5kb20gemlwY29kZSBmcm9tIGZvcm1hdC4gSWYgZm9ybWF0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZVxuICAgKiBsb2NhbGUncyB6aXAgZm9ybWF0IGlzIHVzZWQuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy56aXBDb2RlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXRcbiAgICovXG4gIHRoaXMuemlwQ29kZSA9IGZ1bmN0aW9uKGZvcm1hdCkge1xuICAgIC8vIGlmIHppcCBmb3JtYXQgaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSB6aXAgZm9ybWF0IGRlZmluZWQgZm9yIHRoZSBsb2NhbGVcbiAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBsb2NhbGVGb3JtYXQgPSBmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnBvc3Rjb2RlO1xuICAgICAgaWYgKHR5cGVvZiBsb2NhbGVGb3JtYXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGZvcm1hdCA9IGxvY2FsZUZvcm1hdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1hdCA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQobG9jYWxlRm9ybWF0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoZm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSByYW5kb20gbG9jYWxpemVkIGNpdHkgbmFtZS4gVGhlIGZvcm1hdCBzdHJpbmcgY2FuIGNvbnRhaW4gYW55XG4gICAqIG1ldGhvZCBwcm92aWRlZCBieSBmYWtlciB3cmFwcGVkIGluIGB7e319YCwgZS5nLiBge3tuYW1lLmZpcnN0TmFtZX19YCBpblxuICAgKiBvcmRlciB0byBidWlsZCB0aGUgY2l0eSBuYW1lLlxuICAgKlxuICAgKiBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHByb3ZpZGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHJhbmRvbWx5IHVzZWQ6XG4gICAqIFxuICAgKiAqIGB7e2FkZHJlc3MuY2l0eVByZWZpeH19IHt7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX1gXG4gICAqICogYHt7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19YFxuICAgKiAqIGB7e25hbWUuZmlyc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19YFxuICAgKiAqIGB7e25hbWUubGFzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX1gXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jaXR5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXRcbiAgICovXG4gIHRoaXMuY2l0eSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICB2YXIgZm9ybWF0cyA9IFtcbiAgICAgICd7e2FkZHJlc3MuY2l0eVByZWZpeH19IHt7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX0nLFxuICAgICAgJ3t7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19JyxcbiAgICAgICd7e25hbWUuZmlyc3ROYW1lfX17e2FkZHJlc3MuY2l0eVN1ZmZpeH19JyxcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX0nXG4gICAgXTtcblxuICAgIGlmICh0eXBlb2YgZm9ybWF0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICBmb3JtYXQgPSBmYWtlci5yYW5kb20ubnVtYmVyKGZvcm1hdHMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGYoZm9ybWF0c1tmb3JtYXRdKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJhbmRvbSBsb2NhbGl6ZWQgY2l0eSBwcmVmaXhcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNpdHlQcmVmaXhcbiAgICovXG4gIHRoaXMuY2l0eVByZWZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNpdHlfcHJlZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByYW5kb20gbG9jYWxpemVkIGNpdHkgc3VmZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jaXR5U3VmZml4XG4gICAqL1xuICB0aGlzLmNpdHlTdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jaXR5X3N1ZmZpeCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHJhbmRvbSBsb2NhbGl6ZWQgc3RyZWV0IG5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWVcbiAgICovXG4gIHRoaXMuc3RyZWV0TmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICB2YXIgc3VmZml4ID0gZmFrZXIuYWRkcmVzcy5zdHJlZXRTdWZmaXgoKTtcbiAgICAgIGlmIChzdWZmaXggIT09IFwiXCIpIHtcbiAgICAgICAgICBzdWZmaXggPSBcIiBcIiArIHN1ZmZpeFxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGZha2VyLnJhbmRvbS5udW1iZXIoMSkpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXN1bHQgPSBmYWtlci5uYW1lLmxhc3ROYW1lKCkgKyBzdWZmaXg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgICAgcmVzdWx0ID0gZmFrZXIubmFtZS5maXJzdE5hbWUoKSArIHN1ZmZpeDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvL1xuICAvLyBUT0RPOiBjaGFuZ2UgYWxsIHRoZXNlIG1ldGhvZHMgdGhhdCBhY2NlcHQgYSBib29sZWFuIHRvIGluc3RlYWQgYWNjZXB0IGFuIG9wdGlvbnMgaGFzaC5cbiAgLy9cbiAgLyoqXG4gICAqIFJldHVybnMgYSByYW5kb20gbG9jYWxpemVkIHN0cmVldCBhZGRyZXNzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdHJlZXRBZGRyZXNzXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdXNlRnVsbEFkZHJlc3NcbiAgICovXG4gIHRoaXMuc3RyZWV0QWRkcmVzcyA9IGZ1bmN0aW9uICh1c2VGdWxsQWRkcmVzcykge1xuICAgICAgaWYgKHVzZUZ1bGxBZGRyZXNzID09PSB1bmRlZmluZWQpIHsgdXNlRnVsbEFkZHJlc3MgPSBmYWxzZTsgfVxuICAgICAgdmFyIGFkZHJlc3MgPSBcIlwiO1xuICAgICAgc3dpdGNoIChmYWtlci5yYW5kb20ubnVtYmVyKDIpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgICAgYWRkcmVzcyA9IEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoXCIjIyMjI1wiKSArIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgICAgYWRkcmVzcyA9IEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoXCIjIyMjXCIpICsgIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgICAgYWRkcmVzcyA9IEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoXCIjIyNcIikgKyBcIiBcIiArIGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVzZUZ1bGxBZGRyZXNzID8gKGFkZHJlc3MgKyBcIiBcIiArIGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzcygpKSA6IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogc3RyZWV0U3VmZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdHJlZXRTdWZmaXhcbiAgICovXG4gIHRoaXMuc3RyZWV0U3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5zdHJlZXRfc3VmZml4KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIHN0cmVldFByZWZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RyZWV0UHJlZml4XG4gICAqL1xuICB0aGlzLnN0cmVldFByZWZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3Muc3RyZWV0X3ByZWZpeCk7XG4gIH1cblxuICAvKipcbiAgICogc2Vjb25kYXJ5QWRkcmVzc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzc1xuICAgKi9cbiAgdGhpcy5zZWNvbmRhcnlBZGRyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChcbiAgICAgICAgICBbXG4gICAgICAgICAgICAgICdBcHQuICMjIycsXG4gICAgICAgICAgICAgICdTdWl0ZSAjIyMnXG4gICAgICAgICAgXVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogY291bnR5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jb3VudHlcbiAgICovXG4gIHRoaXMuY291bnR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY291bnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3VudHJ5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jb3VudHJ5XG4gICAqL1xuICB0aGlzLmNvdW50cnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jb3VudHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3VudHJ5Q29kZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY291bnRyeUNvZGVcbiAgICovXG4gIHRoaXMuY291bnRyeUNvZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jb3VudHJ5X2NvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXRlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdGF0ZVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHVzZUFiYnJcbiAgICovXG4gIHRoaXMuc3RhdGUgPSBmdW5jdGlvbiAodXNlQWJicikge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhdGVBYmJyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdGF0ZUFiYnJcbiAgICovXG4gIHRoaXMuc3RhdGVBYmJyID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5zdGF0ZV9hYmJyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsYXRpdHVkZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MubGF0aXR1ZGVcbiAgICovXG4gIHRoaXMubGF0aXR1ZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKGZha2VyLnJhbmRvbS5udW1iZXIoMTgwICogMTAwMDApIC8gMTAwMDAuMCAtIDkwLjApLnRvRml4ZWQoNCk7XG4gIH1cblxuICAvKipcbiAgICogbG9uZ2l0dWRlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5sb25naXR1ZGVcbiAgICovXG4gIHRoaXMubG9uZ2l0dWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIChmYWtlci5yYW5kb20ubnVtYmVyKDM2MCAqIDEwMDAwKSAvIDEwMDAwLjAgLSAxODAuMCkudG9GaXhlZCg0KTtcbiAgfVxuICBcbiAgcmV0dXJuIHRoaXM7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBBZGRyZXNzO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5jb21tZXJjZVxuICovXG52YXIgQ29tbWVyY2UgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBjb2xvclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLmNvbG9yXG4gICAqL1xuICBzZWxmLmNvbG9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5jb2xvcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGRlcGFydG1lbnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5kZXBhcnRtZW50XG4gICAqL1xuICBzZWxmLmRlcGFydG1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmRlcGFydG1lbnQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwcm9kdWN0TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3ROYW1lXG4gICAqL1xuICBzZWxmLnByb2R1Y3ROYW1lID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIuY29tbWVyY2UucHJvZHVjdEFkamVjdGl2ZSgpICsgXCIgXCIgK1xuICAgICAgICAgICAgICBmYWtlci5jb21tZXJjZS5wcm9kdWN0TWF0ZXJpYWwoKSArIFwiIFwiICtcbiAgICAgICAgICAgICAgZmFrZXIuY29tbWVyY2UucHJvZHVjdCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwcmljZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByaWNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heFxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVjXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2xcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgc2VsZi5wcmljZSA9IGZ1bmN0aW9uKG1pbiwgbWF4LCBkZWMsIHN5bWJvbCkge1xuICAgICAgbWluID0gbWluIHx8IDA7XG4gICAgICBtYXggPSBtYXggfHwgMTAwMDtcbiAgICAgIGRlYyA9IGRlYyA9PT0gdW5kZWZpbmVkID8gMiA6IGRlYztcbiAgICAgIHN5bWJvbCA9IHN5bWJvbCB8fCAnJztcblxuICAgICAgaWYgKG1pbiA8IDAgfHwgbWF4IDwgMCkge1xuICAgICAgICAgIHJldHVybiBzeW1ib2wgKyAwLjAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmFuZFZhbHVlID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1heDogbWF4LCBtaW46IG1pbiB9KTtcblxuICAgICAgcmV0dXJuIHN5bWJvbCArIChNYXRoLnJvdW5kKHJhbmRWYWx1ZSAqIE1hdGgucG93KDEwLCBkZWMpKSAvIE1hdGgucG93KDEwLCBkZWMpKS50b0ZpeGVkKGRlYyk7XG4gIH07XG5cbiAgLypcbiAgc2VsZi5jYXRlZ29yaWVzID0gZnVuY3Rpb24obnVtKSB7XG4gICAgICB2YXIgY2F0ZWdvcmllcyA9IFtdO1xuXG4gICAgICBkbyB7XG4gICAgICAgICAgdmFyIGNhdGVnb3J5ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5kZXBhcnRtZW50KTtcbiAgICAgICAgICBpZihjYXRlZ29yaWVzLmluZGV4T2YoY2F0ZWdvcnkpID09PSAtMSkge1xuICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgICAgIH1cbiAgICAgIH0gd2hpbGUoY2F0ZWdvcmllcy5sZW5ndGggPCBudW0pO1xuXG4gICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgfTtcblxuICAqL1xuICAvKlxuICBzZWxmLm1lcmdlQ2F0ZWdvcmllcyA9IGZ1bmN0aW9uKGNhdGVnb3JpZXMpIHtcbiAgICAgIHZhciBzZXBhcmF0b3IgPSBmYWtlci5kZWZpbml0aW9ucy5zZXBhcmF0b3IgfHwgXCIgJlwiO1xuICAgICAgLy8gVE9ETzogZmluZCB1bmRlZmluZWQgaGVyZVxuICAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMgfHwgZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UuY2F0ZWdvcmllcztcbiAgICAgIHZhciBjb21tYVNlcGFyYXRlZCA9IGNhdGVnb3JpZXMuc2xpY2UoMCwgLTEpLmpvaW4oJywgJyk7XG5cbiAgICAgIHJldHVybiBbY29tbWFTZXBhcmF0ZWQsIGNhdGVnb3JpZXNbY2F0ZWdvcmllcy5sZW5ndGggLSAxXV0uam9pbihzZXBhcmF0b3IgKyBcIiBcIik7XG4gIH07XG4gICovXG5cbiAgLyoqXG4gICAqIHByb2R1Y3RBZGplY3RpdmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcm9kdWN0QWRqZWN0aXZlXG4gICAqL1xuICBzZWxmLnByb2R1Y3RBZGplY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLnByb2R1Y3RfbmFtZS5hZGplY3RpdmUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwcm9kdWN0TWF0ZXJpYWxcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcm9kdWN0TWF0ZXJpYWxcbiAgICovXG4gIHNlbGYucHJvZHVjdE1hdGVyaWFsID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5wcm9kdWN0X25hbWUubWF0ZXJpYWwpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwcm9kdWN0XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJvZHVjdFxuICAgKi9cbiAgc2VsZi5wcm9kdWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5wcm9kdWN0X25hbWUucHJvZHVjdCk7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IENvbW1lcmNlO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5jb21wYW55XG4gKi9cbnZhciBDb21wYW55ID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIFxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBmID0gZmFrZXIuZmFrZTtcbiAgXG4gIC8qKlxuICAgKiBzdWZmaXhlc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuc3VmZml4ZXNcbiAgICovXG4gIHRoaXMuc3VmZml4ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0aGUgc291cmNlIGFycmF5IGV4cG9zZWQgdG8gbW9kaWZpY2F0aW9uLCBzbyByZXR1cm4gYSBjb3B5XG4gICAgcmV0dXJuIGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuc3VmZml4LnNsaWNlKDApO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhbnlOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jb21wYW55TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0XG4gICAqL1xuICB0aGlzLmNvbXBhbnlOYW1lID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuXG4gICAgdmFyIGZvcm1hdHMgPSBbXG4gICAgICAne3tuYW1lLmxhc3ROYW1lfX0ge3tjb21wYW55LmNvbXBhbnlTdWZmaXh9fScsXG4gICAgICAne3tuYW1lLmxhc3ROYW1lfX0gLSB7e25hbWUubGFzdE5hbWV9fScsXG4gICAgICAne3tuYW1lLmxhc3ROYW1lfX0sIHt7bmFtZS5sYXN0TmFtZX19IGFuZCB7e25hbWUubGFzdE5hbWV9fSdcbiAgICBdO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvcm1hdCA9IGZha2VyLnJhbmRvbS5udW1iZXIoZm9ybWF0cy5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZihmb3JtYXRzW2Zvcm1hdF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhbnlTdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNvbXBhbnlTdWZmaXhcbiAgICovXG4gIHRoaXMuY29tcGFueVN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmNvbXBhbnkuc3VmZml4ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogY2F0Y2hQaHJhc2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlXG4gICAqL1xuICB0aGlzLmNhdGNoUGhyYXNlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmKCd7e2NvbXBhbnkuY2F0Y2hQaHJhc2VBZGplY3RpdmV9fSB7e2NvbXBhbnkuY2F0Y2hQaHJhc2VEZXNjcmlwdG9yfX0ge3tjb21wYW55LmNhdGNoUGhyYXNlTm91bn19JylcbiAgfVxuXG4gIC8qKlxuICAgKiBic1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuYnNcbiAgICovXG4gIHRoaXMuYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGYoJ3t7Y29tcGFueS5ic0FkamVjdGl2ZX19IHt7Y29tcGFueS5ic0J1enp9fSB7e2NvbXBhbnkuYnNOb3VufX0nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZUFkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VBZGplY3RpdmVcbiAgICovXG4gIHRoaXMuY2F0Y2hQaHJhc2VBZGplY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmFkamVjdGl2ZSk7XG4gIH1cblxuICAvKipcbiAgICogY2F0Y2hQaHJhc2VEZXNjcmlwdG9yXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZURlc2NyaXB0b3JcbiAgICovXG4gIHRoaXMuY2F0Y2hQaHJhc2VEZXNjcmlwdG9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5kZXNjcmlwdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZU5vdW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlTm91blxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZU5vdW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55Lm5vdW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIGJzQWRqZWN0aXZlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic0FkamVjdGl2ZVxuICAgKi9cbiAgdGhpcy5ic0FkamVjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYnNfYWRqZWN0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBic0J1enpcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmJzQnV6elxuICAgKi9cbiAgdGhpcy5ic0J1enogPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmJzX3ZlcmIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGJzTm91blxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuYnNOb3VuXG4gICAqL1xuICB0aGlzLmJzTm91biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYnNfbm91bik7XG4gIH1cbiAgXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gQ29tcGFueTsiLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmRhdGFiYXNlXG4gKi9cbnZhciBEYXRhYmFzZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIC8qKlxuICAgKiBjb2x1bW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRhYmFzZS5jb2x1bW5cbiAgICovXG4gIHNlbGYuY29sdW1uID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZGF0YWJhc2UuY29sdW1uKTtcbiAgfTtcblxuICBzZWxmLmNvbHVtbi5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIGNvbHVtbiBuYW1lLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJpZFwiLCBcInRpdGxlXCIsIFwiY3JlYXRlZEF0XCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIHR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRhYmFzZS50eXBlXG4gICAqL1xuICBzZWxmLnR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5kYXRhYmFzZS50eXBlKTtcbiAgfTtcblxuICBzZWxmLnR5cGUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBjb2x1bW4gdHlwZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiYnl0ZVwiLCBcImludFwiLCBcInZhcmNoYXJcIiwgXCJ0aW1lc3RhbXBcIl1cbiAgfTtcblxuICAvKipcbiAgICogY29sbGF0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0YWJhc2UuY29sbGF0aW9uXG4gICAqL1xuICBzZWxmLmNvbGxhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLmNvbGxhdGlvbik7XG4gIH07XG5cbiAgc2VsZi5jb2xsYXRpb24uc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBjb2xsYXRpb24uXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcInV0ZjhfdW5pY29kZV9jaVwiLCBcInV0ZjhfYmluXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGVuZ2luZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLmVuZ2luZVxuICAgKi9cbiAgc2VsZi5lbmdpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5kYXRhYmFzZS5lbmdpbmUpO1xuICB9O1xuXG4gIHNlbGYuZW5naW5lLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgc3RvcmFnZSBlbmdpbmUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIk15SVNBTVwiLCBcIklubm9EQlwiXVxuICB9O1xufTtcblxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IERhdGFiYXNlO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5kYXRlXG4gKi9cbnZhciBfRGF0ZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIC8qKlxuICAgKiBwYXN0XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5wYXN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFyc1xuICAgKiBAcGFyYW0ge2RhdGV9IHJlZkRhdGVcbiAgICovXG4gIHNlbGYucGFzdCA9IGZ1bmN0aW9uICh5ZWFycywgcmVmRGF0ZSkge1xuICAgICAgdmFyIGRhdGUgPSAocmVmRGF0ZSkgPyBuZXcgRGF0ZShEYXRlLnBhcnNlKHJlZkRhdGUpKSA6IG5ldyBEYXRlKCk7XG4gICAgICB2YXIgcmFuZ2UgPSB7XG4gICAgICAgIG1pbjogMTAwMCxcbiAgICAgICAgbWF4OiAoeWVhcnMgfHwgMSkgKiAzNjUgKiAyNCAqIDM2MDAgKiAxMDAwXG4gICAgICB9O1xuXG4gICAgICB2YXIgcGFzdCA9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgcGFzdCAtPSBmYWtlci5yYW5kb20ubnVtYmVyKHJhbmdlKTsgLy8gc29tZSB0aW1lIGZyb20gbm93IHRvIE4geWVhcnMgYWdvLCBpbiBtaWxsaXNlY29uZHNcbiAgICAgIGRhdGUuc2V0VGltZShwYXN0KTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZ1dHVyZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUuZnV0dXJlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFyc1xuICAgKiBAcGFyYW0ge2RhdGV9IHJlZkRhdGVcbiAgICovXG4gIHNlbGYuZnV0dXJlID0gZnVuY3Rpb24gKHllYXJzLCByZWZEYXRlKSB7XG4gICAgICB2YXIgZGF0ZSA9IChyZWZEYXRlKSA/IG5ldyBEYXRlKERhdGUucGFyc2UocmVmRGF0ZSkpIDogbmV3IERhdGUoKTtcbiAgICAgIHZhciByYW5nZSA9IHtcbiAgICAgICAgbWluOiAxMDAwLFxuICAgICAgICBtYXg6ICh5ZWFycyB8fCAxKSAqIDM2NSAqIDI0ICogMzYwMCAqIDEwMDBcbiAgICAgIH07XG5cbiAgICAgIHZhciBmdXR1cmUgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIGZ1dHVyZSArPSBmYWtlci5yYW5kb20ubnVtYmVyKHJhbmdlKTsgLy8gc29tZSB0aW1lIGZyb20gbm93IHRvIE4geWVhcnMgbGF0ZXIsIGluIG1pbGxpc2Vjb25kc1xuICAgICAgZGF0ZS5zZXRUaW1lKGZ1dHVyZSk7XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBiZXR3ZWVuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5iZXR3ZWVuXG4gICAqIEBwYXJhbSB7ZGF0ZX0gZnJvbVxuICAgKiBAcGFyYW0ge2RhdGV9IHRvXG4gICAqL1xuICBzZWxmLmJldHdlZW4gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICAgIHZhciBmcm9tTWlsbGkgPSBEYXRlLnBhcnNlKGZyb20pO1xuICAgICAgdmFyIGRhdGVPZmZzZXQgPSBmYWtlci5yYW5kb20ubnVtYmVyKERhdGUucGFyc2UodG8pIC0gZnJvbU1pbGxpKTtcblxuICAgICAgdmFyIG5ld0RhdGUgPSBuZXcgRGF0ZShmcm9tTWlsbGkgKyBkYXRlT2Zmc2V0KTtcblxuICAgICAgcmV0dXJuIG5ld0RhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlY2VudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUucmVjZW50XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkYXlzXG4gICAqL1xuICBzZWxmLnJlY2VudCA9IGZ1bmN0aW9uIChkYXlzKSB7XG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICB2YXIgcmFuZ2UgPSB7XG4gICAgICAgIG1pbjogMTAwMCxcbiAgICAgICAgbWF4OiAoZGF5cyB8fCAxKSAqIDI0ICogMzYwMCAqIDEwMDBcbiAgICAgIH07XG5cbiAgICAgIHZhciBmdXR1cmUgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIGZ1dHVyZSAtPSBmYWtlci5yYW5kb20ubnVtYmVyKHJhbmdlKTsgLy8gc29tZSB0aW1lIGZyb20gbm93IHRvIE4gZGF5cyBhZ28sIGluIG1pbGxpc2Vjb25kc1xuICAgICAgZGF0ZS5zZXRUaW1lKGZ1dHVyZSk7XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtb250aFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGUubW9udGhcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHNlbGYubW9udGggPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIHZhciB0eXBlID0gJ3dpZGUnO1xuICAgICAgaWYgKG9wdGlvbnMuYWJicikge1xuICAgICAgICAgIHR5cGUgPSAnYWJicic7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5jb250ZXh0ICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5kYXRlLm1vbnRoW3R5cGUgKyAnX2NvbnRleHQnXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0eXBlICs9ICdfY29udGV4dCc7XG4gICAgICB9XG5cbiAgICAgIHZhciBzb3VyY2UgPSBmYWtlci5kZWZpbml0aW9ucy5kYXRlLm1vbnRoW3R5cGVdO1xuXG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChzb3VyY2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiB3ZWVrZGF5XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS53ZWVrZGF5XG4gICAqL1xuICBzZWxmLndlZWtkYXkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIHZhciB0eXBlID0gJ3dpZGUnO1xuICAgICAgaWYgKG9wdGlvbnMuYWJicikge1xuICAgICAgICAgIHR5cGUgPSAnYWJicic7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5jb250ZXh0ICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5kYXRlLndlZWtkYXlbdHlwZSArICdfY29udGV4dCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHR5cGUgKz0gJ19jb250ZXh0JztcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IGZha2VyLmRlZmluaXRpb25zLmRhdGUud2Vla2RheVt0eXBlXTtcblxuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoc291cmNlKTtcbiAgfTtcbiAgXG4gIHJldHVybiBzZWxmO1xuICBcbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gX0RhdGU7IiwiLypcbiAgZmFrZS5qcyAtIGdlbmVyYXRvciBtZXRob2QgZm9yIGNvbWJpbmluZyBmYWtlciBtZXRob2RzIGJhc2VkIG9uIHN0cmluZyBpbnB1dFxuXG4qL1xuXG5mdW5jdGlvbiBGYWtlIChmYWtlcikge1xuICBcbiAgLyoqXG4gICAqIEdlbmVyYXRvciBtZXRob2QgZm9yIGNvbWJpbmluZyBmYWtlciBtZXRob2RzIGJhc2VkIG9uIHN0cmluZyBpbnB1dFxuICAgKlxuICAgKiBfX0V4YW1wbGU6X19cbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnNvbGUubG9nKGZha2VyLmZha2UoJ3t7bmFtZS5sYXN0TmFtZX19LCB7e25hbWUuZmlyc3ROYW1lfX0ge3tuYW1lLnN1ZmZpeH19JykpO1xuICAgKiAvL291dHB1dHM6IFwiTWFya3MsIERlYW4gU3IuXCJcbiAgICogYGBgXG4gICAqXG4gICAqIFRoaXMgd2lsbCBpbnRlcnBvbGF0ZSB0aGUgZm9ybWF0IHN0cmluZyB3aXRoIHRoZSB2YWx1ZSBvZiBtZXRob2RzXG4gICAqIFtuYW1lLmxhc3ROYW1lXXtAbGluayBmYWtlci5uYW1lLmxhc3ROYW1lfSwgW25hbWUuZmlyc3ROYW1lXXtAbGluayBmYWtlci5uYW1lLmZpcnN0TmFtZX0sXG4gICAqIGFuZCBbbmFtZS5zdWZmaXhde0BsaW5rIGZha2VyLm5hbWUuc3VmZml4fVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZha2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgKi9cbiAgdGhpcy5mYWtlID0gZnVuY3Rpb24gZmFrZSAoc3RyKSB7XG4gICAgLy8gc2V0dXAgZGVmYXVsdCByZXNwb25zZSBhcyBlbXB0eSBzdHJpbmdcbiAgICB2YXIgcmVzID0gJyc7XG5cbiAgICAvLyBpZiBpbmNvbWluZyBzdHIgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgcmV0dXJuIGVycm9yIG1lc3NhZ2VcbiAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycgfHwgc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzID0gJ3N0cmluZyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQhJztcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gZmluZCBmaXJzdCBtYXRjaGluZyB7eyBhbmQgfX1cbiAgICB2YXIgc3RhcnQgPSBzdHIuc2VhcmNoKCd7eycpO1xuICAgIHZhciBlbmQgPSBzdHIuc2VhcmNoKCd9fScpO1xuXG4gICAgLy8gaWYgbm8ge3sgYW5kIH19IGlzIGZvdW5kLCB3ZSBhcmUgZG9uZVxuICAgIGlmIChzdGFydCA9PT0gLTEgJiYgZW5kID09PSAtMSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZygnYXR0ZW1wdGluZyB0byBwYXJzZScsIHN0cik7XG5cbiAgICAvLyBleHRyYWN0IG1ldGhvZCBuYW1lIGZyb20gYmV0d2VlbiB0aGUge3sgfX0gdGhhdCB3ZSBmb3VuZFxuICAgIC8vIGZvciBleGFtcGxlOiB7e25hbWUuZmlyc3ROYW1lfX1cbiAgICB2YXIgdG9rZW4gPSBzdHIuc3Vic3RyKHN0YXJ0ICsgMiwgIGVuZCAtIHN0YXJ0IC0gMik7XG4gICAgdmFyIG1ldGhvZCA9IHRva2VuLnJlcGxhY2UoJ319JywgJycpLnJlcGxhY2UoJ3t7JywgJycpO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ21ldGhvZCcsIG1ldGhvZClcblxuICAgIC8vIGV4dHJhY3QgbWV0aG9kIHBhcmFtZXRlcnNcbiAgICB2YXIgcmVnRXhwID0gL1xcKChbXildKylcXCkvO1xuICAgIHZhciBtYXRjaGVzID0gcmVnRXhwLmV4ZWMobWV0aG9kKTtcbiAgICB2YXIgcGFyYW1ldGVycyA9ICcnO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBtZXRob2QgPSBtZXRob2QucmVwbGFjZShyZWdFeHAsICcnKTtcbiAgICAgIHBhcmFtZXRlcnMgPSBtYXRjaGVzWzFdO1xuICAgIH1cblxuICAgIC8vIHNwbGl0IHRoZSBtZXRob2QgaW50byBtb2R1bGUgYW5kIGZ1bmN0aW9uXG4gICAgdmFyIHBhcnRzID0gbWV0aG9kLnNwbGl0KCcuJyk7XG5cbiAgICBpZiAodHlwZW9mIGZha2VyW3BhcnRzWzBdXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1vZHVsZTogJyArIHBhcnRzWzBdKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZha2VyW3BhcnRzWzBdXVtwYXJ0c1sxXV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZXRob2Q6ICcgKyBwYXJ0c1swXSArIFwiLlwiICsgcGFydHNbMV0pO1xuICAgIH1cblxuICAgIC8vIGFzc2lnbiB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgbW9kdWxlLmZ1bmN0aW9uIG5hbWVzcGFjZVxuICAgIHZhciBmbiA9IGZha2VyW3BhcnRzWzBdXVtwYXJ0c1sxXV07XG5cbiAgICAvLyBJZiBwYXJhbWV0ZXJzIGFyZSBwb3B1bGF0ZWQgaGVyZSwgdGhleSBhcmUgYWx3YXlzIGdvaW5nIHRvIGJlIG9mIHN0cmluZyB0eXBlXG4gICAgLy8gc2luY2Ugd2UgbWlnaHQgYWN0dWFsbHkgYmUgZGVhbGluZyB3aXRoIGFuIG9iamVjdCBvciBhcnJheSxcbiAgICAvLyB3ZSBhbHdheXMgYXR0ZW1wdCB0byB0aGUgcGFyc2UgdGhlIGluY29taW5nIHBhcmFtZXRlcnMgaW50byBKU09OXG4gICAgdmFyIHBhcmFtcztcbiAgICAvLyBOb3RlOiB3ZSBleHBlcmllbmNlIGEgc21hbGwgcGVyZm9ybWFuY2UgaGl0IGhlcmUgZHVlIHRvIEpTT04ucGFyc2UgdHJ5IC8gY2F0Y2hcbiAgICAvLyBJZiBhbnlvbmUgYWN0dWFsbHkgbmVlZHMgdG8gb3B0aW1pemUgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGgsIHBsZWFzZSBvcGVuIGEgc3VwcG9ydCBpc3N1ZSBvbiBnaXRodWJcbiAgICB0cnkge1xuICAgICAgcGFyYW1zID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gc2luY2UgSlNPTi5wYXJzZSB0aHJldyBhbiBlcnJvciwgYXNzdW1lIHBhcmFtZXRlcnMgd2FzIGFjdHVhbGx5IGEgc3RyaW5nXG4gICAgICBwYXJhbXMgPSBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKHR5cGVvZiBwYXJhbXMgPT09IFwic3RyaW5nXCIgJiYgcGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0ID0gZm4uY2FsbCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gZm4uY2FsbCh0aGlzLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIHJlcGxhY2UgdGhlIGZvdW5kIHRhZyB3aXRoIHRoZSByZXR1cm5lZCBmYWtlIHZhbHVlXG4gICAgcmVzID0gc3RyLnJlcGxhY2UoJ3t7JyArIHRva2VuICsgJ319JywgcmVzdWx0KTtcblxuICAgIC8vIHJldHVybiB0aGUgcmVzcG9uc2UgcmVjdXJzaXZlbHkgdW50aWwgd2UgYXJlIGRvbmUgZmluZGluZyBhbGwgdGFnc1xuICAgIHJldHVybiBmYWtlKHJlcyk7ICAgIFxuICB9XG4gIFxuICByZXR1cm4gdGhpcztcbiAgXG4gIFxufVxuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEZha2U7IiwiLyoqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmZpbmFuY2VcbiAqL1xudmFyIEZpbmFuY2UgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIGliYW5MaWIgPSByZXF1aXJlKFwiLi9pYmFuXCIpO1xuICB2YXIgSGVscGVycyA9IGZha2VyLmhlbHBlcnMsXG4gICAgICBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogYWNjb3VudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuYWNjb3VudFxuICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gICAqL1xuICBzZWxmLmFjY291bnQgPSBmdW5jdGlvbiAobGVuZ3RoKSB7XG5cbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8fCA4O1xuXG4gICAgICB2YXIgdGVtcGxhdGUgPSAnJztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUgKyAnIyc7XG4gICAgICB9XG4gICAgICBsZW5ndGggPSBudWxsO1xuICAgICAgcmV0dXJuIEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIodGVtcGxhdGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhY2NvdW50TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuYWNjb3VudE5hbWVcbiAgICovXG4gIHNlbGYuYWNjb3VudE5hbWUgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgIHJldHVybiBbSGVscGVycy5yYW5kb21pemUoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS5hY2NvdW50X3R5cGUpLCAnQWNjb3VudCddLmpvaW4oJyAnKTtcbiAgfTtcblxuICAvKipcbiAgICogbWFza1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UubWFza1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcGFyZW5zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWxsaXBzaXNcbiAgICovXG4gIHNlbGYubWFzayA9IGZ1bmN0aW9uIChsZW5ndGgsIHBhcmVucywgZWxsaXBzaXMpIHtcblxuICAgICAgLy9zZXQgZGVmYXVsdHNcbiAgICAgIGxlbmd0aCA9IChsZW5ndGggPT0gMCB8fCAhbGVuZ3RoIHx8IHR5cGVvZiBsZW5ndGggPT0gJ3VuZGVmaW5lZCcpID8gNCA6IGxlbmd0aDtcbiAgICAgIHBhcmVucyA9IChwYXJlbnMgPT09IG51bGwpID8gdHJ1ZSA6IHBhcmVucztcbiAgICAgIGVsbGlwc2lzID0gKGVsbGlwc2lzID09PSBudWxsKSA/IHRydWUgOiBlbGxpcHNpcztcblxuICAgICAgLy9jcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgbGVuZ3RoXG4gICAgICB2YXIgdGVtcGxhdGUgPSAnJztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUgKyAnIyc7XG4gICAgICB9XG5cbiAgICAgIC8vcHJlZml4IHdpdGggZWxsaXBzaXNcbiAgICAgIHRlbXBsYXRlID0gKGVsbGlwc2lzKSA/IFsnLi4uJywgdGVtcGxhdGVdLmpvaW4oJycpIDogdGVtcGxhdGU7XG5cbiAgICAgIHRlbXBsYXRlID0gKHBhcmVucykgPyBbJygnLCB0ZW1wbGF0ZSwgJyknXS5qb2luKCcnKSA6IHRlbXBsYXRlO1xuXG4gICAgICAvL2dlbmVyYXRlIHJhbmRvbSBudW1iZXJzXG4gICAgICB0ZW1wbGF0ZSA9IEhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIodGVtcGxhdGUpO1xuXG4gICAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH07XG5cbiAgLy9taW4gYW5kIG1heCB0YWtlIGluIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50cywgZGVjIGlzIHRoZSBkZWNpbWFsIHBsYWNlIHlvdSB3YW50IHJvdW5kZWQgdG8sIHN5bWJvbCBpcyAkLCDigqwsIMKjLCBldGNcbiAgLy9OT1RFOiB0aGlzIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlLCBpZiB5b3Ugd2FudCBhIG51bWJlciB1c2UgcGFyc2VGbG9hdCBhbmQgbm8gc3ltYm9sXG5cbiAgLyoqXG4gICAqIGFtb3VudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuYW1vdW50XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heFxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVjXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2xcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgc2VsZi5hbW91bnQgPSBmdW5jdGlvbiAobWluLCBtYXgsIGRlYywgc3ltYm9sKSB7XG5cbiAgICAgIG1pbiA9IG1pbiB8fCAwO1xuICAgICAgbWF4ID0gbWF4IHx8IDEwMDA7XG4gICAgICBkZWMgPSBkZWMgPT09IHVuZGVmaW5lZCA/IDIgOiBkZWM7XG4gICAgICBzeW1ib2wgPSBzeW1ib2wgfHwgJyc7XG4gICAgICB2YXIgcmFuZFZhbHVlID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1heDogbWF4LCBtaW46IG1pbiwgcHJlY2lzaW9uOiBNYXRoLnBvdygxMCwgLWRlYykgfSk7XG5cbiAgICAgIHJldHVybiBzeW1ib2wgKyByYW5kVmFsdWUudG9GaXhlZChkZWMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiB0cmFuc2FjdGlvblR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLnRyYW5zYWN0aW9uVHlwZVxuICAgKi9cbiAgc2VsZi50cmFuc2FjdGlvblR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5yYW5kb21pemUoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS50cmFuc2FjdGlvbl90eXBlKTtcbiAgfTtcblxuICAvKipcbiAgICogY3VycmVuY3lDb2RlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5jdXJyZW5jeUNvZGVcbiAgICovXG4gIHNlbGYuY3VycmVuY3lDb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5vYmplY3RFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UuY3VycmVuY3kpWydjb2RlJ107XG4gIH07XG5cbiAgLyoqXG4gICAqIGN1cnJlbmN5TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UuY3VycmVuY3lOYW1lXG4gICAqL1xuICBzZWxmLmN1cnJlbmN5TmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20ub2JqZWN0RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmN1cnJlbmN5LCAna2V5Jyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGN1cnJlbmN5U3ltYm9sXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5jdXJyZW5jeVN5bWJvbFxuICAgKi9cbiAgc2VsZi5jdXJyZW5jeVN5bWJvbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzeW1ib2w7XG5cbiAgICAgIHdoaWxlICghc3ltYm9sKSB7XG4gICAgICAgICAgc3ltYm9sID0gZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS5jdXJyZW5jeSlbJ3N5bWJvbCddO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN5bWJvbDtcbiAgfTtcblxuICAvKipcbiAgICogYml0Y29pbkFkZHJlc3NcbiAgICpcbiAgICogQG1ldGhvZCAgZmFrZXIuZmluYW5jZS5iaXRjb2luQWRkcmVzc1xuICAgKi9cbiAgc2VsZi5iaXRjb2luQWRkcmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYWRkcmVzc0xlbmd0aCA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtaW46IDI3LCBtYXg6IDM0IH0pO1xuXG4gICAgdmFyIGFkZHJlc3MgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFsnMScsICczJ10pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRyZXNzTGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgYWRkcmVzcyArPSBmYWtlci5yYW5kb20uYWxwaGFOdW1lcmljKCkudG9VcHBlckNhc2UoKTtcblxuICAgIHJldHVybiBhZGRyZXNzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBpYmFuXG4gICAqXG4gICAqIEBtZXRob2QgIGZha2VyLmZpbmFuY2UuaWJhblxuICAgKi9cbiAgc2VsZi5pYmFuID0gZnVuY3Rpb24gKGZvcm1hdHRlZCkge1xuICAgICAgdmFyIGliYW5Gb3JtYXQgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIuZm9ybWF0cyk7XG4gICAgICB2YXIgcyA9IFwiXCI7XG4gICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgZm9yICh2YXIgYiA9IDA7IGIgPCBpYmFuRm9ybWF0LmJiYW4ubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICB2YXIgYmJhbiA9IGliYW5Gb3JtYXQuYmJhbltiXTtcbiAgICAgICAgICB2YXIgYyA9IGJiYW4uY291bnQ7XG4gICAgICAgICAgY291bnQgKz0gYmJhbi5jb3VudDtcbiAgICAgICAgICB3aGlsZSAoYyA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKGJiYW4udHlwZSA9PSBcImFcIikge1xuICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIuYWxwaGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJiYW4udHlwZSA9PSBcImNcIikge1xuICAgICAgICAgICAgICAgICAgaWYgKGZha2VyLnJhbmRvbS5udW1iZXIoMTAwKSA8IDgwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20ubnVtYmVyKDkpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5hbHBoYSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoYyA+PSAzICYmIGZha2VyLnJhbmRvbS5udW1iZXIoMTAwKSA8IDMwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZha2VyLnJhbmRvbS5ib29sZWFuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGliYW5MaWIucGF0dGVybjEwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gMjtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5wYXR0ZXJuMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjLS07XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5udW1iZXIoOSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYy0tO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzID0gcy5zdWJzdHJpbmcoMCwgY291bnQpO1xuICAgICAgfVxuICAgICAgdmFyIGNoZWNrc3VtID0gOTggLSBpYmFuTGliLm1vZDk3KGliYW5MaWIudG9EaWdpdFN0cmluZyhzICsgaWJhbkZvcm1hdC5jb3VudHJ5ICsgXCIwMFwiKSk7XG4gICAgICBpZiAoY2hlY2tzdW0gPCAxMCkge1xuICAgICAgICAgIGNoZWNrc3VtID0gXCIwXCIgKyBjaGVja3N1bTtcbiAgICAgIH1cbiAgICAgIHZhciBpYmFuID0gaWJhbkZvcm1hdC5jb3VudHJ5ICsgY2hlY2tzdW0gKyBzO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZCA/IGliYW4ubWF0Y2goLy57MSw0fS9nKS5qb2luKFwiIFwiKSA6IGliYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIGJpY1xuICAgKlxuICAgKiBAbWV0aG9kICBmYWtlci5maW5hbmNlLmJpY1xuICAgKi9cbiAgc2VsZi5iaWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdm93ZWxzID0gW1wiQVwiLCBcIkVcIiwgXCJJXCIsIFwiT1wiLCBcIlVcIl07XG4gICAgICB2YXIgcHJvYiA9IGZha2VyLnJhbmRvbS5udW1iZXIoMTAwKTtcbiAgICAgIHJldHVybiBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKFwiPz8/XCIpICtcbiAgICAgICAgICBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHZvd2VscykgK1xuICAgICAgICAgIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5pc28zMTY2KSArXG4gICAgICAgICAgSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIj9cIikgKyBcIjFcIiArXG4gICAgICAgICAgKHByb2IgPCAxMCA/XG4gICAgICAgICAgICAgIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoXCI/XCIgKyBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHZvd2VscykgKyBcIj9cIikgOlxuICAgICAgICAgIHByb2IgPCA0MCA/XG4gICAgICAgICAgICAgIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoXCIjIyNcIikgOiBcIlwiKTtcbiAgfTtcbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gRmluYW5jZTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaGFja2VyXG4gKi9cbnZhciBIYWNrZXIgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBcbiAgLyoqXG4gICAqIGFiYnJldmlhdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5hYmJyZXZpYXRpb25cbiAgICovXG4gIHNlbGYuYWJicmV2aWF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci5hYmJyZXZpYXRpb24pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhZGplY3RpdmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIuYWRqZWN0aXZlXG4gICAqL1xuICBzZWxmLmFkamVjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIuYWRqZWN0aXZlKTtcbiAgfTtcblxuICAvKipcbiAgICogbm91blxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5ub3VuXG4gICAqL1xuICBzZWxmLm5vdW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLm5vdW4pO1xuICB9O1xuXG4gIC8qKlxuICAgKiB2ZXJiXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLnZlcmJcbiAgICovXG4gIHNlbGYudmVyYiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIudmVyYik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGluZ3ZlcmJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIuaW5ndmVyYlxuICAgKi9cbiAgc2VsZi5pbmd2ZXJiID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci5pbmd2ZXJiKTtcbiAgfTtcblxuICAvKipcbiAgICogcGhyYXNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLnBocmFzZVxuICAgKi9cbiAgc2VsZi5waHJhc2UgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIGFiYnJldmlhdGlvbjogc2VsZi5hYmJyZXZpYXRpb24sXG4gICAgICBhZGplY3RpdmU6IHNlbGYuYWRqZWN0aXZlLFxuICAgICAgaW5ndmVyYjogc2VsZi5pbmd2ZXJiLFxuICAgICAgbm91bjogc2VsZi5ub3VuLFxuICAgICAgdmVyYjogc2VsZi52ZXJiXG4gICAgfTtcblxuICAgIHZhciBwaHJhc2UgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFsgXCJJZiB3ZSB7e3ZlcmJ9fSB0aGUge3tub3VufX0sIHdlIGNhbiBnZXQgdG8gdGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0gdGhyb3VnaCB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJXZSBuZWVkIHRvIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcIlRyeSB0byB7e3ZlcmJ9fSB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSwgbWF5YmUgaXQgd2lsbCB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e25vdW59fSFcIixcbiAgICAgIFwiWW91IGNhbid0IHt7dmVyYn19IHRoZSB7e25vdW59fSB3aXRob3V0IHt7aW5ndmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcIlVzZSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19LCB0aGVuIHlvdSBjYW4ge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3tub3VufX0hXCIsXG4gICAgICBcIlRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IGlzIGRvd24sIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7bm91bn19IHNvIHdlIGNhbiB7e3ZlcmJ9fSB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwie3tpbmd2ZXJifX0gdGhlIHt7bm91bn19IHdvbid0IGRvIGFueXRoaW5nLCB3ZSBuZWVkIHRvIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcIkknbGwge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSwgdGhhdCBzaG91bGQge3tub3VufX0gdGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCJcbiAgIF0pO1xuXG4gICByZXR1cm4gZmFrZXIuaGVscGVycy5tdXN0YWNoZShwaHJhc2UsIGRhdGEpO1xuXG4gIH07XG4gIFxuICByZXR1cm4gc2VsZjtcbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gSGFja2VyOyIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaGVscGVyc1xuICovXG52YXIgSGVscGVycyA9IGZ1bmN0aW9uIChmYWtlcikge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogYmFja3dvcmQtY29tcGF0aWJpbGl0eVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMucmFuZG9taXplXG4gICAqIEBwYXJhbSB7YXJyYXl9IGFycmF5XG4gICAqL1xuICBzZWxmLnJhbmRvbWl6ZSA9IGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgYXJyYXkgPSBhcnJheSB8fCBbXCJhXCIsIFwiYlwiLCBcImNcIl07XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChhcnJheSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNsdWdpZmllcyBzdHJpbmdcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnNsdWdpZnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICAgKi9cbiAgc2VsZi5zbHVnaWZ5ID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nIHx8IFwiXCI7XG4gICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLyAvZywgJy0nKS5yZXBsYWNlKC9bXlxcd1xcLlxcLV0rL2csICcnKTtcbiAgfTtcblxuICAvKipcbiAgICogcGFyc2VzIHN0cmluZyBmb3IgYSBzeW1ib2wgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIHJhbmRvbSBudW1iZXIgZnJvbSAxLTEwXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgZGVmYXVsdHMgdG8gYFwiI1wiYFxuICAgKi9cbiAgc2VsZi5yZXBsYWNlU3ltYm9sV2l0aE51bWJlciA9IGZ1bmN0aW9uIChzdHJpbmcsIHN5bWJvbCkge1xuICAgICAgc3RyaW5nID0gc3RyaW5nIHx8IFwiXCI7XG4gICAgICAvLyBkZWZhdWx0IHN5bWJvbCBpcyAnIydcbiAgICAgIGlmIChzeW1ib2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN5bWJvbCA9ICcjJztcbiAgICAgIH1cblxuICAgICAgdmFyIHN0ciA9ICcnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoc3RyaW5nLmNoYXJBdChpKSA9PSBzeW1ib2wpIHtcbiAgICAgICAgICAgICAgc3RyICs9IGZha2VyLnJhbmRvbS5udW1iZXIoOSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RyICs9IHN0cmluZy5jaGFyQXQoaSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogcGFyc2VzIHN0cmluZyBmb3Igc3ltYm9scyAobnVtYmVycyBvciBsZXR0ZXJzKSBhbmQgcmVwbGFjZXMgdGhlbSBhcHByb3ByaWF0ZWx5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5yZXBsYWNlU3ltYm9sc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gICAqL1xuICBzZWxmLnJlcGxhY2VTeW1ib2xzID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nIHx8IFwiXCI7XG4gICAgICB2YXIgYWxwaGEgPSBbJ0EnLCdCJywnQycsJ0QnLCdFJywnRicsJ0cnLCdIJywnSScsJ0onLCdLJywnTCcsJ00nLCdOJywnTycsJ1AnLCdRJywnUicsJ1MnLCdUJywnVScsJ1YnLCdXJywnWCcsJ1knLCdaJ11cbiAgICAgIHZhciBzdHIgPSAnJztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoc3RyaW5nLmNoYXJBdChpKSA9PSBcIiNcIikge1xuICAgICAgICAgICAgICBzdHIgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0cmluZy5jaGFyQXQoaSkgPT0gXCI/XCIpIHtcbiAgICAgICAgICAgICAgc3RyICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoYWxwaGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0ciArPSBzdHJpbmcuY2hhckF0KGkpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIHRha2VzIGFuIGFycmF5IGFuZCByZXR1cm5zIGl0IHJhbmRvbWl6ZWRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnNodWZmbGVcbiAgICogQHBhcmFtIHthcnJheX0gb1xuICAgKi9cbiAgc2VsZi5zaHVmZmxlID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgIGlmICh0eXBlb2YgbyA9PT0gJ3VuZGVmaW5lZCcgfHwgby5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbyA9IG8gfHwgW1wiYVwiLCBcImJcIiwgXCJjXCJdO1xuICAgICAgZm9yICh2YXIgaiwgeCwgaSA9IG8ubGVuZ3RoLTE7IGk7IGogPSBmYWtlci5yYW5kb20ubnVtYmVyKGkpLCB4ID0gb1stLWldLCBvW2ldID0gb1tqXSwgb1tqXSA9IHgpO1xuICAgICAgcmV0dXJuIG87XG4gIH07XG5cbiAgLyoqXG4gICAqIG11c3RhY2hlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5tdXN0YWNoZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhXG4gICAqL1xuICBzZWxmLm11c3RhY2hlID0gZnVuY3Rpb24gKHN0ciwgZGF0YSkge1xuICAgIGlmICh0eXBlb2Ygc3RyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBmb3IodmFyIHAgaW4gZGF0YSkge1xuICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgne3snICsgcCArICd9fScsICdnJylcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKHJlLCBkYXRhW3BdKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogY3JlYXRlQ2FyZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuY3JlYXRlQ2FyZFxuICAgKi9cbiAgc2VsZi5jcmVhdGVDYXJkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBcIm5hbWVcIjogZmFrZXIubmFtZS5maW5kTmFtZSgpLFxuICAgICAgICAgIFwidXNlcm5hbWVcIjogZmFrZXIuaW50ZXJuZXQudXNlck5hbWUoKSxcbiAgICAgICAgICBcImVtYWlsXCI6IGZha2VyLmludGVybmV0LmVtYWlsKCksXG4gICAgICAgICAgXCJhZGRyZXNzXCI6IHtcbiAgICAgICAgICAgICAgXCJzdHJlZXRBXCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSgpLFxuICAgICAgICAgICAgICBcInN0cmVldEJcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXRBZGRyZXNzKCksXG4gICAgICAgICAgICAgIFwic3RyZWV0Q1wiOiBmYWtlci5hZGRyZXNzLnN0cmVldEFkZHJlc3ModHJ1ZSksXG4gICAgICAgICAgICAgIFwic3RyZWV0RFwiOiBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3MoKSxcbiAgICAgICAgICAgICAgXCJjaXR5XCI6IGZha2VyLmFkZHJlc3MuY2l0eSgpLFxuICAgICAgICAgICAgICBcInN0YXRlXCI6IGZha2VyLmFkZHJlc3Muc3RhdGUoKSxcbiAgICAgICAgICAgICAgXCJjb3VudHJ5XCI6IGZha2VyLmFkZHJlc3MuY291bnRyeSgpLFxuICAgICAgICAgICAgICBcInppcGNvZGVcIjogZmFrZXIuYWRkcmVzcy56aXBDb2RlKCksXG4gICAgICAgICAgICAgIFwiZ2VvXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibGF0XCI6IGZha2VyLmFkZHJlc3MubGF0aXR1ZGUoKSxcbiAgICAgICAgICAgICAgICAgIFwibG5nXCI6IGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwaG9uZVwiOiBmYWtlci5waG9uZS5waG9uZU51bWJlcigpLFxuICAgICAgICAgIFwid2Vic2l0ZVwiOiBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCksXG4gICAgICAgICAgXCJjb21wYW55XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWUoKSxcbiAgICAgICAgICAgICAgXCJjYXRjaFBocmFzZVwiOiBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlKCksXG4gICAgICAgICAgICAgIFwiYnNcIjogZmFrZXIuY29tcGFueS5icygpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBvc3RzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgXCJ3b3Jkc1wiOiBmYWtlci5sb3JlbS53b3JkcygpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZVwiOiBmYWtlci5sb3JlbS5zZW50ZW5jZSgpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZXNcIjogZmFrZXIubG9yZW0uc2VudGVuY2VzKCksXG4gICAgICAgICAgICAgICAgICBcInBhcmFncmFwaFwiOiBmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBcIndvcmRzXCI6IGZha2VyLmxvcmVtLndvcmRzKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlc1wiOiBmYWtlci5sb3JlbS5zZW50ZW5jZXMoKSxcbiAgICAgICAgICAgICAgICAgIFwicGFyYWdyYXBoXCI6IGZha2VyLmxvcmVtLnBhcmFncmFwaCgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFwid29yZHNcIjogZmFrZXIubG9yZW0ud29yZHMoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VcIjogZmFrZXIubG9yZW0uc2VudGVuY2UoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VzXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlcygpLFxuICAgICAgICAgICAgICAgICAgXCJwYXJhZ3JhcGhcIjogZmFrZXIubG9yZW0ucGFyYWdyYXBoKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJhY2NvdW50SGlzdG9yeVwiOiBbZmFrZXIuaGVscGVycy5jcmVhdGVUcmFuc2FjdGlvbigpLCBmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uKCksIGZha2VyLmhlbHBlcnMuY3JlYXRlVHJhbnNhY3Rpb24oKV1cbiAgICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnRleHR1YWxDYXJkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5jb250ZXh0dWFsQ2FyZFxuICAgKi9cbiAgc2VsZi5jb250ZXh0dWFsQ2FyZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbmFtZSA9IGZha2VyLm5hbWUuZmlyc3ROYW1lKCksXG4gICAgICAgIHVzZXJOYW1lID0gZmFrZXIuaW50ZXJuZXQudXNlck5hbWUobmFtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgXCJuYW1lXCI6IG5hbWUsXG4gICAgICAgIFwidXNlcm5hbWVcIjogdXNlck5hbWUsXG4gICAgICAgIFwiYXZhdGFyXCI6IGZha2VyLmludGVybmV0LmF2YXRhcigpLFxuICAgICAgICBcImVtYWlsXCI6IGZha2VyLmludGVybmV0LmVtYWlsKHVzZXJOYW1lKSxcbiAgICAgICAgXCJkb2JcIjogZmFrZXIuZGF0ZS5wYXN0KDUwLCBuZXcgRGF0ZShcIlNhdCBTZXAgMjAgMTk5MiAyMTozNTowMiBHTVQrMDIwMCAoQ0VTVClcIikpLFxuICAgICAgICBcInBob25lXCI6IGZha2VyLnBob25lLnBob25lTnVtYmVyKCksXG4gICAgICAgIFwiYWRkcmVzc1wiOiB7XG4gICAgICAgICAgICBcInN0cmVldFwiOiBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUodHJ1ZSksXG4gICAgICAgICAgICBcInN1aXRlXCI6IGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzcygpLFxuICAgICAgICAgICAgXCJjaXR5XCI6IGZha2VyLmFkZHJlc3MuY2l0eSgpLFxuICAgICAgICAgICAgXCJ6aXBjb2RlXCI6IGZha2VyLmFkZHJlc3MuemlwQ29kZSgpLFxuICAgICAgICAgICAgXCJnZW9cIjoge1xuICAgICAgICAgICAgICAgIFwibGF0XCI6IGZha2VyLmFkZHJlc3MubGF0aXR1ZGUoKSxcbiAgICAgICAgICAgICAgICBcImxuZ1wiOiBmYWtlci5hZGRyZXNzLmxvbmdpdHVkZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2Vic2l0ZVwiOiBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCksXG4gICAgICAgIFwiY29tcGFueVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgICAgICAgXCJjYXRjaFBocmFzZVwiOiBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlKCksXG4gICAgICAgICAgICBcImJzXCI6IGZha2VyLmNvbXBhbnkuYnMoKVxuICAgICAgICB9XG4gICAgfTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiB1c2VyQ2FyZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMudXNlckNhcmRcbiAgICovXG4gIHNlbGYudXNlckNhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5uYW1lLmZpbmROYW1lKCksXG4gICAgICAgICAgXCJ1c2VybmFtZVwiOiBmYWtlci5pbnRlcm5ldC51c2VyTmFtZSgpLFxuICAgICAgICAgIFwiZW1haWxcIjogZmFrZXIuaW50ZXJuZXQuZW1haWwoKSxcbiAgICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgICBcInN0cmVldFwiOiBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUodHJ1ZSksXG4gICAgICAgICAgICAgIFwic3VpdGVcIjogZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCksXG4gICAgICAgICAgICAgIFwiY2l0eVwiOiBmYWtlci5hZGRyZXNzLmNpdHkoKSxcbiAgICAgICAgICAgICAgXCJ6aXBjb2RlXCI6IGZha2VyLmFkZHJlc3MuemlwQ29kZSgpLFxuICAgICAgICAgICAgICBcImdlb1wiOiB7XG4gICAgICAgICAgICAgICAgICBcImxhdFwiOiBmYWtlci5hZGRyZXNzLmxhdGl0dWRlKCksXG4gICAgICAgICAgICAgICAgICBcImxuZ1wiOiBmYWtlci5hZGRyZXNzLmxvbmdpdHVkZSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGhvbmVcIjogZmFrZXIucGhvbmUucGhvbmVOdW1iZXIoKSxcbiAgICAgICAgICBcIndlYnNpdGVcIjogZmFrZXIuaW50ZXJuZXQuZG9tYWluTmFtZSgpLFxuICAgICAgICAgIFwiY29tcGFueVwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lKCksXG4gICAgICAgICAgICAgIFwiY2F0Y2hQaHJhc2VcIjogZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZSgpLFxuICAgICAgICAgICAgICBcImJzXCI6IGZha2VyLmNvbXBhbnkuYnMoKVxuICAgICAgICAgIH1cbiAgICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNyZWF0ZVRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5jcmVhdGVUcmFuc2FjdGlvblxuICAgKi9cbiAgc2VsZi5jcmVhdGVUcmFuc2FjdGlvbiA9IGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiYW1vdW50XCIgOiBmYWtlci5maW5hbmNlLmFtb3VudCgpLFxuICAgICAgXCJkYXRlXCIgOiBuZXcgRGF0ZSgyMDEyLCAxLCAyKSwgIC8vVE9ETzogYWRkIGEgcmFuZ2VkIGRhdGUgbWV0aG9kXG4gICAgICBcImJ1c2luZXNzXCI6IGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWUoKSxcbiAgICAgIFwibmFtZVwiOiBbZmFrZXIuZmluYW5jZS5hY2NvdW50TmFtZSgpLCBmYWtlci5maW5hbmNlLm1hc2soKV0uam9pbignICcpLFxuICAgICAgXCJ0eXBlXCIgOiBzZWxmLnJhbmRvbWl6ZShmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLnRyYW5zYWN0aW9uX3R5cGUpLFxuICAgICAgXCJhY2NvdW50XCIgOiBmYWtlci5maW5hbmNlLmFjY291bnQoKVxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG5cbn07XG5cblxuLypcblN0cmluZy5wcm90b3R5cGUuY2FwaXRhbGl6ZSA9IGZ1bmN0aW9uICgpIHsgLy92MS4wXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvXFx3Ky9nLCBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGEuc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG59O1xuKi9cblxubW9kdWxlWydleHBvcnRzJ10gPSBIZWxwZXJzO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgYWxwaGE6IFtcbiAgICAnQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsJ04nLCdPJywnUCcsJ1EnLCdSJywnUycsJ1QnLCdVJywnVicsJ1cnLCdYJywnWScsJ1onXG4gIF0sXG4gIHBhdHRlcm4xMDogW1xuICAgIFwiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIFwiMDRcIiwgXCIwNVwiLCBcIjA2XCIsIFwiMDdcIiwgXCIwOFwiLCBcIjA5XCJcbiAgXSxcbiAgcGF0dGVybjEwMDogW1xuICAgIFwiMDAxXCIsIFwiMDAyXCIsIFwiMDAzXCIsIFwiMDA0XCIsIFwiMDA1XCIsIFwiMDA2XCIsIFwiMDA3XCIsIFwiMDA4XCIsIFwiMDA5XCJcbiAgXSxcbiAgdG9EaWdpdFN0cmluZzogZnVuY3Rpb24gKHN0cikge1xuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bQS1aXS9naSwgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApIC0gNTU7XG4gICAgICB9KTtcbiAgfSxcbiAgbW9kOTc6IGZ1bmN0aW9uIChkaWdpdFN0cikge1xuICAgICAgdmFyIG0gPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdFN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG0gPSAoKG0gKiAxMCkgKyAoZGlnaXRTdHJbaV0gfDApKSAlIDk3O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG07XG4gIH0sXG4gIGZvcm1hdHM6IFtcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFMXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQUxrayBiYmJzIHNzc3ggY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFEXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQURrayBiYmJiIHNzc3MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJBVFwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkFUa2sgYmJiYiBiY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFaXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDIwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQVprayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJIXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE0XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkhrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQkVcIixcbiAgICAgIHRvdGFsOiAxNixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJFa2sgYmJiYyBjY2NjIGNjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCQVwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJBa2sgYmJicyBzc2NjIGNjY2MgY2N4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJSXCIsXG4gICAgICB0b3RhbDogMjksXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQlJrayBiYmJiIGJiYmIgc3NzcyBzY2NjIGNjY2MgY2NjdCBuXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQkdcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCR2trIGJiYmIgc3NzcyBkZGNjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJDUlwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkNSa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSFJcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA3XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJIUmtrIGJiYmIgYmJiYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkNZXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ1lrayBiYmJzIHNzc3MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkNaXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkNaa2sgYmJiYiBzc3NzIHNzY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiREtcIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJES2trIGJiYmIgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRE9cIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMjBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJET2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiVExcIixcbiAgICAgIHRvdGFsOiAyMyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJUTGtrIGJiYmMgY2NjYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRUVcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJFRWtrIGJic3MgY2NjYyBjY2NjIGNjY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJGT1wiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkZPa2sgYmJiYiBjY2NjIGNjY2MgY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJGSVwiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRklrayBiYmJiIGJiY2MgY2NjYyBjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkZSXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJGUmtrIGJiYmIgYmdnZyBnZ2NjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHRVwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdFa2sgYmJjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkRFXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiREVrayBiYmJiIGJiYmIgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR0lcIixcbiAgICAgIHRvdGFsOiAyMyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHSWtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiR1JcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA3XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHUmtrIGJiYnMgc3NzYyBjY2NjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHTFwiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdMa2sgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHVFwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJHVGtrIGJiYmIgbW10dCBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSFVcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJIVWtrIGJiYnMgc3NzayBjY2NjIGNjY2MgY2NjYyBjY2N4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSVNcIixcbiAgICAgIHRvdGFsOiAyNixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJJU2trIGJiYmIgc3NjYyBjY2NjIGlpaWkgaWlpaSBpaVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIklFXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSUVrayBhYWFhIGJiYmIgYmJjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSUxcIixcbiAgICAgIHRvdGFsOiAyMyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJJTGtrIGJiYm4gbm5jYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSVRcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklUa2sgeGFhYSBhYWJiIGJiYmMgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkpPXCIsXG4gICAgICB0b3RhbDogMzAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkpPa2sgYmJiYiBubm5uIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJLWlwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIktaa2sgYmJiYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlhLXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiWEtrayBiYmJiIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiS1dcIixcbiAgICAgIHRvdGFsOiAzMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMjJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJLV2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTFZcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMVmtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxCXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDIwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTEJrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxJXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTElrayBiYmJiIGJjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMVFwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxUa2sgYmJiYiBiY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxVXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTFVrayBiYmJjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTUtcIixcbiAgICAgIHRvdGFsOiAxOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTUtrayBiYmJjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNVFwiLFxuICAgICAgdG90YWw6IDMxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNVGtrIGJiYmIgc3NzcyBzY2NjIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1SXCIsXG4gICAgICB0b3RhbDogMjcsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Sa2sgYmJiYiBic3NzIHNzY2MgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1VXCIsXG4gICAgICB0b3RhbDogMzAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNVWtrIGJiYmIgYmJzcyBjY2NjIGNjY2MgY2NjYyAwMDBkIGRkXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTUNcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Da2sgYmJiYiBic3NzIHNzY2MgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1EXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTURrayBiYmNjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNRVwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Fa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyB4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk5MXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTkxrayBiYmJiIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk5PXCIsXG4gICAgICB0b3RhbDogMTUsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJOT2trIGJiYmIgY2NjYyBjY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQS1wiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBLa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUFNcIixcbiAgICAgIHRvdGFsOiAyOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUFNrayBiYmJiIHh4eHggeHh4eCB4Y2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUExcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJQTGtrIGJiYnMgc3NzeCBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUFRcIixcbiAgICAgIHRvdGFsOiAyNSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJQVGtrIGJiYmIgc3NzcyBjY2NjIGNjY2MgY2NjeCB4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiUUFcIixcbiAgICAgIHRvdGFsOiAyOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMjFcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJRQWtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJST1wiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlJPa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU01cIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNNa2sgeGFhYSBhYWJiIGJiYmMgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlNBXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU0FrayBiYmNjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJSU1wiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlJTa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyB4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlNLXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNLa2sgYmJiYiBzc3NzIHNzY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0lcIixcbiAgICAgIHRvdGFsOiAxOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTSWtrIGJic3Mgc2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkVTXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkVTa2sgYmJiYiBnZ2dnIHh4Y2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0VcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTdcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTRWtrIGJiYmMgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkNIXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ0hrayBiYmJiIGJjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJUTlwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlROa2sgYmJzcyBzY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiVFJcIixcbiAgICAgIHRvdGFsOiAyNixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiVFJrayBiYmJiIGJ4Y2MgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJBRVwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkFFa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHQlwiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdCa2sgYmJiYiBzc3NzIHNzY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlZHXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiVkdrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH1cbiAgXSxcbiAgaXNvMzE2NjogW1xuICAgIFwiQUNcIiwgXCJBRFwiLCBcIkFFXCIsIFwiQUZcIiwgXCJBR1wiLCBcIkFJXCIsIFwiQUxcIiwgXCJBTVwiLCBcIkFOXCIsIFwiQU9cIiwgXCJBUVwiLCBcIkFSXCIsIFwiQVNcIixcbiAgICBcIkFUXCIsIFwiQVVcIiwgXCJBV1wiLCBcIkFYXCIsIFwiQVpcIiwgXCJCQVwiLCBcIkJCXCIsIFwiQkRcIiwgXCJCRVwiLCBcIkJGXCIsIFwiQkdcIiwgXCJCSFwiLCBcIkJJXCIsXG4gICAgXCJCSlwiLCBcIkJMXCIsIFwiQk1cIiwgXCJCTlwiLCBcIkJPXCIsIFwiQlFcIiwgXCJCUlwiLCBcIkJTXCIsIFwiQlRcIiwgXCJCVVwiLCBcIkJWXCIsIFwiQldcIiwgXCJCWVwiLFxuICAgIFwiQlpcIiwgXCJDQVwiLCBcIkNDXCIsIFwiQ0RcIiwgXCJDRVwiLCBcIkNGXCIsIFwiQ0dcIiwgXCJDSFwiLCBcIkNJXCIsIFwiQ0tcIiwgXCJDTFwiLCBcIkNNXCIsIFwiQ05cIixcbiAgICBcIkNPXCIsIFwiQ1BcIiwgXCJDUlwiLCBcIkNTXCIsIFwiQ1NcIiwgXCJDVVwiLCBcIkNWXCIsIFwiQ1dcIiwgXCJDWFwiLCBcIkNZXCIsIFwiQ1pcIiwgXCJERFwiLCBcIkRFXCIsXG4gICAgXCJER1wiLCBcIkRKXCIsIFwiREtcIiwgXCJETVwiLCBcIkRPXCIsIFwiRFpcIiwgXCJFQVwiLCBcIkVDXCIsIFwiRUVcIiwgXCJFR1wiLCBcIkVIXCIsIFwiRVJcIiwgXCJFU1wiLFxuICAgIFwiRVRcIiwgXCJFVVwiLCBcIkZJXCIsIFwiRkpcIiwgXCJGS1wiLCBcIkZNXCIsIFwiRk9cIiwgXCJGUlwiLCBcIkZYXCIsIFwiR0FcIiwgXCJHQlwiLCBcIkdEXCIsIFwiR0VcIixcbiAgICBcIkdGXCIsIFwiR0dcIiwgXCJHSFwiLCBcIkdJXCIsIFwiR0xcIiwgXCJHTVwiLCBcIkdOXCIsIFwiR1BcIiwgXCJHUVwiLCBcIkdSXCIsIFwiR1NcIiwgXCJHVFwiLCBcIkdVXCIsXG4gICAgXCJHV1wiLCBcIkdZXCIsIFwiSEtcIiwgXCJITVwiLCBcIkhOXCIsIFwiSFJcIiwgXCJIVFwiLCBcIkhVXCIsIFwiSUNcIiwgXCJJRFwiLCBcIklFXCIsIFwiSUxcIiwgXCJJTVwiLFxuICAgIFwiSU5cIiwgXCJJT1wiLCBcIklRXCIsIFwiSVJcIiwgXCJJU1wiLCBcIklUXCIsIFwiSkVcIiwgXCJKTVwiLCBcIkpPXCIsIFwiSlBcIiwgXCJLRVwiLCBcIktHXCIsIFwiS0hcIixcbiAgICBcIktJXCIsIFwiS01cIiwgXCJLTlwiLCBcIktQXCIsIFwiS1JcIiwgXCJLV1wiLCBcIktZXCIsIFwiS1pcIiwgXCJMQVwiLCBcIkxCXCIsIFwiTENcIiwgXCJMSVwiLCBcIkxLXCIsXG4gICAgXCJMUlwiLCBcIkxTXCIsIFwiTFRcIiwgXCJMVVwiLCBcIkxWXCIsIFwiTFlcIiwgXCJNQVwiLCBcIk1DXCIsIFwiTURcIiwgXCJNRVwiLCBcIk1GXCIsIFwiTUdcIiwgXCJNSFwiLFxuICAgIFwiTUtcIiwgXCJNTFwiLCBcIk1NXCIsIFwiTU5cIiwgXCJNT1wiLCBcIk1QXCIsIFwiTVFcIiwgXCJNUlwiLCBcIk1TXCIsIFwiTVRcIiwgXCJNVVwiLCBcIk1WXCIsIFwiTVdcIixcbiAgICBcIk1YXCIsIFwiTVlcIiwgXCJNWlwiLCBcIk5BXCIsIFwiTkNcIiwgXCJORVwiLCBcIk5GXCIsIFwiTkdcIiwgXCJOSVwiLCBcIk5MXCIsIFwiTk9cIiwgXCJOUFwiLCBcIk5SXCIsXG4gICAgXCJOVFwiLCBcIk5VXCIsIFwiTlpcIiwgXCJPTVwiLCBcIlBBXCIsIFwiUEVcIiwgXCJQRlwiLCBcIlBHXCIsIFwiUEhcIiwgXCJQS1wiLCBcIlBMXCIsIFwiUE1cIiwgXCJQTlwiLFxuICAgIFwiUFJcIiwgXCJQU1wiLCBcIlBUXCIsIFwiUFdcIiwgXCJQWVwiLCBcIlFBXCIsIFwiUkVcIiwgXCJST1wiLCBcIlJTXCIsIFwiUlVcIiwgXCJSV1wiLCBcIlNBXCIsIFwiU0JcIixcbiAgICBcIlNDXCIsIFwiU0RcIiwgXCJTRVwiLCBcIlNHXCIsIFwiU0hcIiwgXCJTSVwiLCBcIlNKXCIsIFwiU0tcIiwgXCJTTFwiLCBcIlNNXCIsIFwiU05cIiwgXCJTT1wiLCBcIlNSXCIsXG4gICAgXCJTU1wiLCBcIlNUXCIsIFwiU1VcIiwgXCJTVlwiLCBcIlNYXCIsIFwiU1lcIiwgXCJTWlwiLCBcIlRBXCIsIFwiVENcIiwgXCJURFwiLCBcIlRGXCIsIFwiVEdcIiwgXCJUSFwiLFxuICAgIFwiVEpcIiwgXCJUS1wiLCBcIlRMXCIsIFwiVE1cIiwgXCJUTlwiLCBcIlRPXCIsIFwiVFJcIiwgXCJUVFwiLCBcIlRWXCIsIFwiVFdcIiwgXCJUWlwiLCBcIlVBXCIsIFwiVUdcIixcbiAgICBcIlVNXCIsIFwiVVNcIiwgXCJVWVwiLCBcIlVaXCIsIFwiVkFcIiwgXCJWQ1wiLCBcIlZFXCIsIFwiVkdcIiwgXCJWSVwiLCBcIlZOXCIsIFwiVlVcIiwgXCJXRlwiLCBcIldTXCIsXG4gICAgXCJZRVwiLCBcIllUXCIsIFwiWVVcIiwgXCJaQVwiLCBcIlpNXCIsIFwiWlJcIiwgXCJaV1wiXG4gIF1cbn0iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmltYWdlXG4gKi9cbnZhciBJbWFnZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5pbWFnZVxuICAgKi9cbiAgc2VsZi5pbWFnZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICB2YXIgY2F0ZWdvcmllcyA9IFtcImFic3RyYWN0XCIsIFwiYW5pbWFsc1wiLCBcImJ1c2luZXNzXCIsIFwiY2F0c1wiLCBcImNpdHlcIiwgXCJmb29kXCIsIFwibmlnaHRsaWZlXCIsIFwiZmFzaGlvblwiLCBcInBlb3BsZVwiLCBcIm5hdHVyZVwiLCBcInNwb3J0c1wiLCBcInRlY2huaWNzXCIsIFwidHJhbnNwb3J0XCJdO1xuICAgIHJldHVybiBzZWxmW2Zha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoY2F0ZWdvcmllcyldKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBhdmF0YXJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5hdmF0YXJcbiAgICovXG4gIHNlbGYuYXZhdGFyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5pbnRlcm5ldC5hdmF0YXIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIGltYWdlVXJsXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXRlZ29yeVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmltYWdlVXJsXG4gICAqL1xuICBzZWxmLmltYWdlVXJsID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIGNhdGVnb3J5LCByYW5kb21pemUsIGh0dHBzKSB7XG4gICAgICB2YXIgd2lkdGggPSB3aWR0aCB8fCA2NDA7XG4gICAgICB2YXIgaGVpZ2h0ID0gaGVpZ2h0IHx8IDQ4MDtcbiAgICAgIHZhciBwcm90b2NvbCA9ICdodHRwOi8vJztcbiAgICAgIGlmICh0eXBlb2YgaHR0cHMgIT09ICd1bmRlZmluZWQnICYmIGh0dHBzID09PSB0cnVlKSB7XG4gICAgICAgIHByb3RvY29sID0gJ2h0dHBzOi8vJztcbiAgICAgIH1cbiAgICAgIHZhciB1cmwgPSBwcm90b2NvbCArICdsb3JlbXBpeGVsLmNvbS8nICsgd2lkdGggKyAnLycgKyBoZWlnaHQ7XG4gICAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB1cmwgKz0gJy8nICsgY2F0ZWdvcnk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyYW5kb21pemUpIHtcbiAgICAgICAgdXJsICs9ICc/JyArIGZha2VyLnJhbmRvbS5udW1iZXIoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdXJsO1xuICB9O1xuICAvKipcbiAgICogYWJzdHJhY3RcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5hYnN0cmFjdFxuICAgKi9cbiAgc2VsZi5hYnN0cmFjdCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2Fic3RyYWN0JywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGFuaW1hbHNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5hbmltYWxzXG4gICAqL1xuICBzZWxmLmFuaW1hbHMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdhbmltYWxzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGJ1c2luZXNzXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuYnVzaW5lc3NcbiAgICovXG4gIHNlbGYuYnVzaW5lc3MgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdidXNpbmVzcycsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBjYXRzXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuY2F0c1xuICAgKi9cbiAgc2VsZi5jYXRzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnY2F0cycsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBjaXR5XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuY2l0eVxuICAgKi9cbiAgc2VsZi5jaXR5ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnY2l0eScsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBmb29kXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuZm9vZFxuICAgKi9cbiAgc2VsZi5mb29kID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnZm9vZCcsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBuaWdodGxpZmVcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5uaWdodGxpZmVcbiAgICovXG4gIHNlbGYubmlnaHRsaWZlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnbmlnaHRsaWZlJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGZhc2hpb25cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5mYXNoaW9uXG4gICAqL1xuICBzZWxmLmZhc2hpb24gPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdmYXNoaW9uJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHBlb3BsZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnBlb3BsZVxuICAgKi9cbiAgc2VsZi5wZW9wbGUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdwZW9wbGUnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogbmF0dXJlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UubmF0dXJlXG4gICAqL1xuICBzZWxmLm5hdHVyZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ25hdHVyZScsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBzcG9ydHNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5zcG9ydHNcbiAgICovXG4gIHNlbGYuc3BvcnRzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnc3BvcnRzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHRlY2huaWNzXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UudGVjaG5pY3NcbiAgICovXG4gIHNlbGYudGVjaG5pY3MgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICd0ZWNobmljcycsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiB0cmFuc3BvcnRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS50cmFuc3BvcnRcbiAgICovXG4gIHNlbGYudHJhbnNwb3J0ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAndHJhbnNwb3J0JywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGRhdGFVcmlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5kYXRhdXJsXG4gICAqL1xuICBzZWxmLmRhdGFVcmkgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciByYXdQcmVmaXggPSAnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJztcbiAgICB2YXIgc3ZnU3RyaW5nID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZlcnNpb249XCIxLjFcIiBiYXNlUHJvZmlsZT1cImZ1bGxcIiB3aWR0aD1cIicgKyB3aWR0aCArICdcIiBoZWlnaHQ9XCInICsgaGVpZ2h0ICsgJ1wiPiA8cmVjdCB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgZmlsbD1cImdyZXlcIi8+ICA8dGV4dCB4PVwiMFwiIHk9XCIyMFwiIGZvbnQtc2l6ZT1cIjIwXCIgdGV4dC1hbmNob3I9XCJzdGFydFwiIGZpbGw9XCJ3aGl0ZVwiPicgKyB3aWR0aCArICd4JyArIGhlaWdodCArICc8L3RleHQ+IDwvc3ZnPic7XG4gICAgcmV0dXJuIHJhd1ByZWZpeCArIGVuY29kZVVSSUNvbXBvbmVudChzdmdTdHJpbmcpO1xuICB9O1xufVxuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gSW1hZ2U7IiwiLypcblxuICAgdGhpcyBpbmRleC5qcyBmaWxlIGlzIHVzZWQgZm9yIGluY2x1ZGluZyB0aGUgZmFrZXIgbGlicmFyeSBhcyBhIENvbW1vbkpTIG1vZHVsZSwgaW5zdGVhZCBvZiBhIGJ1bmRsZVxuXG4gICB5b3UgY2FuIGluY2x1ZGUgdGhlIGZha2VyIGxpYnJhcnkgaW50byB5b3VyIGV4aXN0aW5nIG5vZGUuanMgYXBwbGljYXRpb24gYnkgcmVxdWlyaW5nIHRoZSBlbnRpcmUgL2Zha2VyIGRpcmVjdG9yeVxuXG4gICAgdmFyIGZha2VyID0gcmVxdWlyZSguL2Zha2VyKTtcbiAgICB2YXIgcmFuZG9tTmFtZSA9IGZha2VyLm5hbWUuZmluZE5hbWUoKTtcblxuICAgeW91IGNhbiBhbHNvIHNpbXBseSBpbmNsdWRlIHRoZSBcImZha2VyLmpzXCIgZmlsZSB3aGljaCBpcyB0aGUgYXV0by1nZW5lcmF0ZWQgYnVuZGxlZCB2ZXJzaW9uIG9mIHRoZSBmYWtlciBsaWJyYXJ5XG5cbiAgICB2YXIgZmFrZXIgPSByZXF1aXJlKC4vY3VzdG9tQXBwUGF0aC9mYWtlcik7XG4gICAgdmFyIHJhbmRvbU5hbWUgPSBmYWtlci5uYW1lLmZpbmROYW1lKCk7XG5cblxuICBpZiB5b3UgcGxhbiBvbiBtb2RpZnlpbmcgdGhlIGZha2VyIGxpYnJhcnkgeW91IHNob3VsZCBiZSBwZXJmb3JtaW5nIHlvdXIgY2hhbmdlcyBpbiB0aGUgL2xpYi8gZGlyZWN0b3J5XG5cbiovXG5cbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXJcbiAqL1xuZnVuY3Rpb24gRmFrZXIgKG9wdHMpIHtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgb3B0cyA9IG9wdHMgfHwge307XG5cbiAgLy8gYXNzaWduIG9wdGlvbnNcbiAgdmFyIGxvY2FsZXMgPSBzZWxmLmxvY2FsZXMgfHwgb3B0cy5sb2NhbGVzIHx8IHt9O1xuICB2YXIgbG9jYWxlID0gc2VsZi5sb2NhbGUgfHwgb3B0cy5sb2NhbGUgfHwgXCJlblwiO1xuICB2YXIgbG9jYWxlRmFsbGJhY2sgPSBzZWxmLmxvY2FsZUZhbGxiYWNrIHx8IG9wdHMubG9jYWxlRmFsbGJhY2sgfHwgXCJlblwiO1xuXG4gIHNlbGYubG9jYWxlcyA9IGxvY2FsZXM7XG4gIHNlbGYubG9jYWxlID0gbG9jYWxlO1xuICBzZWxmLmxvY2FsZUZhbGxiYWNrID0gbG9jYWxlRmFsbGJhY2s7XG5cbiAgc2VsZi5kZWZpbml0aW9ucyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGJpbmRBbGwob2JqKSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24obWV0aCkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW21ldGhdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIG9ialttZXRoXSA9IG9ialttZXRoXS5iaW5kKG9iaik7XG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIEZha2UgPSByZXF1aXJlKCcuL2Zha2UnKTtcbiAgc2VsZi5mYWtlID0gbmV3IEZha2Uoc2VsZikuZmFrZTtcblxuICB2YXIgUmFuZG9tID0gcmVxdWlyZSgnLi9yYW5kb20nKTtcbiAgc2VsZi5yYW5kb20gPSBiaW5kQWxsKG5ldyBSYW5kb20oc2VsZikpO1xuXG4gIHZhciBIZWxwZXJzID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG4gIHNlbGYuaGVscGVycyA9IG5ldyBIZWxwZXJzKHNlbGYpO1xuXG4gIHZhciBOYW1lID0gcmVxdWlyZSgnLi9uYW1lJyk7XG4gIHNlbGYubmFtZSA9IGJpbmRBbGwobmV3IE5hbWUoc2VsZikpO1xuXG4gIHZhciBBZGRyZXNzID0gcmVxdWlyZSgnLi9hZGRyZXNzJyk7XG4gIHNlbGYuYWRkcmVzcyA9IGJpbmRBbGwobmV3IEFkZHJlc3Moc2VsZikpO1xuXG4gIHZhciBDb21wYW55ID0gcmVxdWlyZSgnLi9jb21wYW55Jyk7XG4gIHNlbGYuY29tcGFueSA9IGJpbmRBbGwobmV3IENvbXBhbnkoc2VsZikpO1xuXG4gIHZhciBGaW5hbmNlID0gcmVxdWlyZSgnLi9maW5hbmNlJyk7XG4gIHNlbGYuZmluYW5jZSA9IGJpbmRBbGwobmV3IEZpbmFuY2Uoc2VsZikpO1xuXG4gIHZhciBJbWFnZSA9IHJlcXVpcmUoJy4vaW1hZ2UnKTtcbiAgc2VsZi5pbWFnZSA9IGJpbmRBbGwobmV3IEltYWdlKHNlbGYpKTtcblxuICB2YXIgTG9yZW0gPSByZXF1aXJlKCcuL2xvcmVtJyk7XG4gIHNlbGYubG9yZW0gPSBiaW5kQWxsKG5ldyBMb3JlbShzZWxmKSk7XG5cbiAgdmFyIEhhY2tlciA9IHJlcXVpcmUoJy4vaGFja2VyJyk7XG4gIHNlbGYuaGFja2VyID0gYmluZEFsbChuZXcgSGFja2VyKHNlbGYpKTtcblxuICB2YXIgSW50ZXJuZXQgPSByZXF1aXJlKCcuL2ludGVybmV0Jyk7XG4gIHNlbGYuaW50ZXJuZXQgPSBiaW5kQWxsKG5ldyBJbnRlcm5ldChzZWxmKSk7XG5cbiAgdmFyIERhdGFiYXNlID0gcmVxdWlyZSgnLi9kYXRhYmFzZScpO1xuICBzZWxmLmRhdGFiYXNlID0gYmluZEFsbChuZXcgRGF0YWJhc2Uoc2VsZikpO1xuXG4gIHZhciBQaG9uZSA9IHJlcXVpcmUoJy4vcGhvbmVfbnVtYmVyJyk7XG4gIHNlbGYucGhvbmUgPSBiaW5kQWxsKG5ldyBQaG9uZShzZWxmKSk7XG5cbiAgdmFyIF9EYXRlID0gcmVxdWlyZSgnLi9kYXRlJyk7XG4gIHNlbGYuZGF0ZSA9IGJpbmRBbGwobmV3IF9EYXRlKHNlbGYpKTtcblxuICB2YXIgQ29tbWVyY2UgPSByZXF1aXJlKCcuL2NvbW1lcmNlJyk7XG4gIHNlbGYuY29tbWVyY2UgPSBiaW5kQWxsKG5ldyBDb21tZXJjZShzZWxmKSk7XG5cbiAgdmFyIFN5c3RlbSA9IHJlcXVpcmUoJy4vc3lzdGVtJyk7XG4gIHNlbGYuc3lzdGVtID0gYmluZEFsbChuZXcgU3lzdGVtKHNlbGYpKTtcblxuICB2YXIgX2RlZmluaXRpb25zID0ge1xuICAgIFwibmFtZVwiOiBbXCJmaXJzdF9uYW1lXCIsIFwibGFzdF9uYW1lXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwidGl0bGVcIiwgXCJtYWxlX2ZpcnN0X25hbWVcIiwgXCJmZW1hbGVfZmlyc3RfbmFtZVwiLCBcIm1hbGVfbWlkZGxlX25hbWVcIiwgXCJmZW1hbGVfbWlkZGxlX25hbWVcIiwgXCJtYWxlX2xhc3RfbmFtZVwiLCBcImZlbWFsZV9sYXN0X25hbWVcIl0sXG4gICAgXCJhZGRyZXNzXCI6IFtcImNpdHlfcHJlZml4XCIsIFwiY2l0eV9zdWZmaXhcIiwgXCJzdHJlZXRfc3VmZml4XCIsIFwiY291bnR5XCIsIFwiY291bnRyeVwiLCBcImNvdW50cnlfY29kZVwiLCBcInN0YXRlXCIsIFwic3RhdGVfYWJiclwiLCBcInN0cmVldF9wcmVmaXhcIiwgXCJwb3N0Y29kZVwiXSxcbiAgICBcImNvbXBhbnlcIjogW1wiYWRqZWN0aXZlXCIsIFwibm91blwiLCBcImRlc2NyaXB0b3JcIiwgXCJic19hZGplY3RpdmVcIiwgXCJic19ub3VuXCIsIFwiYnNfdmVyYlwiLCBcInN1ZmZpeFwiXSxcbiAgICBcImxvcmVtXCI6IFtcIndvcmRzXCJdLFxuICAgIFwiaGFja2VyXCI6IFtcImFiYnJldmlhdGlvblwiLCBcImFkamVjdGl2ZVwiLCBcIm5vdW5cIiwgXCJ2ZXJiXCIsIFwiaW5ndmVyYlwiXSxcbiAgICBcInBob25lX251bWJlclwiOiBbXCJmb3JtYXRzXCJdLFxuICAgIFwiZmluYW5jZVwiOiBbXCJhY2NvdW50X3R5cGVcIiwgXCJ0cmFuc2FjdGlvbl90eXBlXCIsIFwiY3VycmVuY3lcIiwgXCJpYmFuXCJdLFxuICAgIFwiaW50ZXJuZXRcIjogW1wiYXZhdGFyX3VyaVwiLCBcImRvbWFpbl9zdWZmaXhcIiwgXCJmcmVlX2VtYWlsXCIsIFwiZXhhbXBsZV9lbWFpbFwiLCBcInBhc3N3b3JkXCJdLFxuICAgIFwiY29tbWVyY2VcIjogW1wiY29sb3JcIiwgXCJkZXBhcnRtZW50XCIsIFwicHJvZHVjdF9uYW1lXCIsIFwicHJpY2VcIiwgXCJjYXRlZ29yaWVzXCJdLFxuICAgIFwiZGF0YWJhc2VcIjogW1wiY29sbGF0aW9uXCIsIFwiY29sdW1uXCIsIFwiZW5naW5lXCIsIFwidHlwZVwiXSxcbiAgICBcInN5c3RlbVwiOiBbXCJtaW1lVHlwZXNcIl0sXG4gICAgXCJkYXRlXCI6IFtcIm1vbnRoXCIsIFwid2Vla2RheVwiXSxcbiAgICBcInRpdGxlXCI6IFwiXCIsXG4gICAgXCJzZXBhcmF0b3JcIjogXCJcIlxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIEdldHRlciBmb3IgYWxsIGRlZmluaXRpb25zLmZvby5iYXIgcHJvcGVydGllc1xuICBPYmplY3Qua2V5cyhfZGVmaW5pdGlvbnMpLmZvckVhY2goZnVuY3Rpb24oZCl7XG4gICAgaWYgKHR5cGVvZiBzZWxmLmRlZmluaXRpb25zW2RdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBzZWxmLmRlZmluaXRpb25zW2RdID0ge307XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfZGVmaW5pdGlvbnNbZF0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgc2VsZi5kZWZpbml0aW9uc1tkXSA9IF9kZWZpbml0aW9uc1tkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfZGVmaW5pdGlvbnNbZF0uZm9yRWFjaChmdW5jdGlvbihwKXtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLmRlZmluaXRpb25zW2RdLCBwLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZi5sb2NhbGVzW3NlbGYubG9jYWxlXVtkXSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2Ygc2VsZi5sb2NhbGVzW3NlbGYubG9jYWxlXVtkXVtwXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgLy8gY2VydGFpbiBsb2NhbGl6YXRpb24gc2V0cyBjb250YWluIGxlc3MgZGF0YSB0aGVuIG90aGVycy5cbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGEgbWlzc2luZyBkZWZpbml0aW9uLCB1c2UgdGhlIGRlZmF1bHQgbG9jYWxlRmFsbGJhY2sgdG8gc3Vic3RpdHV0ZSB0aGUgbWlzc2luZyBzZXQgZGF0YVxuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHByb3BlcnR5ICcgKyBkICsgcClcbiAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2FsZXNbbG9jYWxlRmFsbGJhY2tdW2RdW3BdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gbG9jYWxpemVkIGRhdGFcbiAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2FsZXNbc2VsZi5sb2NhbGVdW2RdW3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59O1xuXG5GYWtlci5wcm90b3R5cGUuc2VlZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBSYW5kb20gPSByZXF1aXJlKCcuL3JhbmRvbScpO1xuICB0aGlzLnNlZWRWYWx1ZSA9IHZhbHVlO1xuICB0aGlzLnJhbmRvbSA9IG5ldyBSYW5kb20odGhpcywgdGhpcy5zZWVkVmFsdWUpO1xufVxubW9kdWxlWydleHBvcnRzJ10gPSBGYWtlcjtcbiIsInZhciByYW5kb21fdWEgPSByZXF1aXJlKCcuLi92ZW5kb3IvdXNlci1hZ2VudCcpO1xuXG4vKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmludGVybmV0XG4gKi9cbnZhciBJbnRlcm5ldCA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIC8qKlxuICAgKiBhdmF0YXJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5hdmF0YXJcbiAgICovXG4gIHNlbGYuYXZhdGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaW50ZXJuZXQuYXZhdGFyX3VyaSk7XG4gIH07XG5cbiAgc2VsZi5hdmF0YXIuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBVUkwgZm9yIGFuIGF2YXRhci5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZ29yZ2FyeWJhbGRpLzEyOC5qcGdcIl1cbiAgfTtcblxuICAvKipcbiAgICogZW1haWxcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5lbWFpbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYXN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvdmlkZXJcbiAgICovXG4gIHNlbGYuZW1haWwgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgcHJvdmlkZXIpIHtcbiAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXIgfHwgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5pbnRlcm5ldC5mcmVlX2VtYWlsKTtcbiAgICAgIHJldHVybiAgZmFrZXIuaGVscGVycy5zbHVnaWZ5KGZha2VyLmludGVybmV0LnVzZXJOYW1lKGZpcnN0TmFtZSwgbGFzdE5hbWUpKSArIFwiQFwiICsgcHJvdmlkZXI7XG4gIH07XG5cbiAgc2VsZi5lbWFpbC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgYmFzZWQgb24gb3B0aW9uYWwgaW5wdXQgY3JpdGVyaWFcIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiZm9vLmJhckBnbWFpbC5jb21cIl0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiZmlyc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZmlyc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9LFxuICAgICAgXCJsYXN0TmFtZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGxhc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9LFxuICAgICAgXCJwcm92aWRlclwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGRvbWFpbiBvZiB0aGUgdXNlclwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogZXhhbXBsZUVtYWlsXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZXhhbXBsZUVtYWlsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhc3ROYW1lXG4gICAqL1xuICBzZWxmLmV4YW1wbGVFbWFpbCA9IGZ1bmN0aW9uIChmaXJzdE5hbWUsIGxhc3ROYW1lKSB7XG4gICAgICB2YXIgcHJvdmlkZXIgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmV4YW1wbGVfZW1haWwpO1xuICAgICAgcmV0dXJuIHNlbGYuZW1haWwoZmlyc3ROYW1lLCBsYXN0TmFtZSwgcHJvdmlkZXIpO1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2VyTmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnVzZXJOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhc3ROYW1lXG4gICAqL1xuICBzZWxmLnVzZXJOYW1lID0gZnVuY3Rpb24gKGZpcnN0TmFtZSwgbGFzdE5hbWUpIHtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICBmaXJzdE5hbWUgPSBmaXJzdE5hbWUgfHwgZmFrZXIubmFtZS5maXJzdE5hbWUoKTtcbiAgICAgIGxhc3ROYW1lID0gbGFzdE5hbWUgfHwgZmFrZXIubmFtZS5sYXN0TmFtZSgpO1xuICAgICAgc3dpdGNoIChmYWtlci5yYW5kb20ubnVtYmVyKDIpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgICAgcmVzdWx0ID0gZmlyc3ROYW1lICsgZmFrZXIucmFuZG9tLm51bWJlcig5OSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgICAgcmVzdWx0ID0gZmlyc3ROYW1lICsgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbXCIuXCIsIFwiX1wiXSkgKyBsYXN0TmFtZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXN1bHQgPSBmaXJzdE5hbWUgKyBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIi5cIiwgXCJfXCJdKSArIGxhc3ROYW1lICsgZmFrZXIucmFuZG9tLm51bWJlcig5OSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSByZXN1bHQudG9TdHJpbmcoKS5yZXBsYWNlKC8nL2csIFwiXCIpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyAvZywgXCJcIik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHNlbGYudXNlck5hbWUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSB1c2VybmFtZSBiYXNlZCBvbiBvbmUgb2Ygc2V2ZXJhbCBwYXR0ZXJucy4gVGhlIHBhdHRlcm4gaXMgY2hvc2VuIHJhbmRvbWx5LlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXG4gICAgICBcIktpcnN0aW4zOVwiLFxuICAgICAgXCJLaXJzdGluLlNtaXRoXCIsXG4gICAgICBcIktpcnN0aW4uU21pdGgzOVwiLFxuICAgICAgXCJLaXJzdGluU21pdGhcIixcbiAgICAgIFwiS2lyc3RpblNtaXRoMzlcIixcbiAgICBdLFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICBcImZpcnN0TmFtZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGZpcnN0IG5hbWUgb2YgdGhlIHVzZXJcIlxuICAgICAgfSxcbiAgICAgIFwibGFzdE5hbWVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBsYXN0IG5hbWUgb2YgdGhlIHVzZXJcIlxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcHJvdG9jb2xcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5wcm90b2NvbFxuICAgKi9cbiAgc2VsZi5wcm90b2NvbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm90b2NvbHMgPSBbJ2h0dHAnLCdodHRwcyddO1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQocHJvdG9jb2xzKTtcbiAgfTtcblxuICBzZWxmLnByb3RvY29sLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiUmFuZG9tbHkgZ2VuZXJhdGVzIGh0dHAgb3IgaHR0cHNcIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiaHR0cHNcIiwgXCJodHRwXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIHVybFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnVybFxuICAgKi9cbiAgc2VsZi51cmwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIuaW50ZXJuZXQucHJvdG9jb2woKSArICc6Ly8nICsgZmFrZXIuaW50ZXJuZXQuZG9tYWluTmFtZSgpO1xuICB9O1xuXG4gIHNlbGYudXJsLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIFVSTC4gVGhlIFVSTCBjb3VsZCBiZSBzZWN1cmUgb3IgaW5zZWN1cmUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcbiAgICAgIFwiaHR0cDovL3Jhc2hhd24ubmFtZVwiLFxuICAgICAgXCJodHRwczovL3Jhc2hhd24ubmFtZVwiXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBkb21haW5OYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZG9tYWluTmFtZVxuICAgKi9cbiAgc2VsZi5kb21haW5OYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLmludGVybmV0LmRvbWFpbldvcmQoKSArIFwiLlwiICsgZmFrZXIuaW50ZXJuZXQuZG9tYWluU3VmZml4KCk7XG4gIH07XG5cbiAgc2VsZi5kb21haW5OYW1lLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGRvbWFpbiBuYW1lLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJtYXJ2aW4ub3JnXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGRvbWFpblN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmRvbWFpblN1ZmZpeFxuICAgKi9cbiAgc2VsZi5kb21haW5TdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5pbnRlcm5ldC5kb21haW5fc3VmZml4KTtcbiAgfTtcblxuICBzZWxmLmRvbWFpblN1ZmZpeC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBkb21haW4gc3VmZml4LlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJuZXRcIl1cbiAgfTtcblxuICAvKipcbiAgICogZG9tYWluV29yZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmRvbWFpbldvcmRcbiAgICovXG4gIHNlbGYuZG9tYWluV29yZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5uYW1lLmZpcnN0TmFtZSgpLnJlcGxhY2UoLyhbXFxcXH4jJip7fS86PD4/fFxcXCInXSkvaWcsICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9O1xuXG4gIHNlbGYuZG9tYWluV29yZC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBkb21haW4gd29yZC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiYWx5Y2VcIl1cbiAgfTtcblxuICAvKipcbiAgICogaXBcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5pcFxuICAgKi9cbiAgc2VsZi5pcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciByYW5kTnVtID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAoZmFrZXIucmFuZG9tLm51bWJlcigyNTUpKS50b0ZpeGVkKDApO1xuICAgICAgfTtcblxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICByZXN1bHRbaV0gPSByYW5kTnVtKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQuam9pbihcIi5cIik7XG4gIH07XG5cbiAgc2VsZi5pcC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBJUC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiOTcuMjM4LjI0MS4xMVwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBpcHY2XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuaXB2NlxuICAgKi9cbiAgc2VsZi5pcHY2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJhbmRIYXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gKGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoW1wiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcImFcIiwgXCJiXCIsIFwiY1wiLCBcImRcIiwgXCJlXCIsIFwiZlwiXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9O1xuXG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgICAgICByZXN1bHRbaV0gPSByYW5kSGFzaCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKFwiOlwiKTtcbiAgfTtcblxuICBzZWxmLmlwdjYuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gSVB2NiBhZGRyZXNzLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCIyMDAxOjBkYjg6NjI3NjpiMWE3OjUyMTM6MjJmMToyNWRmOmM4YTBcIl1cbiAgfTtcblxuICAvKipcbiAgICogdXNlckFnZW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQudXNlckFnZW50XG4gICAqL1xuICBzZWxmLnVzZXJBZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmFuZG9tX3VhLmdlbmVyYXRlKCk7XG4gIH07XG5cbiAgc2VsZi51c2VyQWdlbnQuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gdXNlciBhZ2VudC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgUFBDIE1hYyBPUyBYIDEwXzdfNSBydjo2LjA7IFNMKSBBcHBsZVdlYktpdC81MzIuMC4xIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi83LjEuNiBTYWZhcmkvNTMyLjAuMVwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBjb2xvclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmNvbG9yXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlUmVkMjU1XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlR3JlZW4yNTVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGJhc2VCbHVlMjU1XG4gICAqL1xuICBzZWxmLmNvbG9yID0gZnVuY3Rpb24gKGJhc2VSZWQyNTUsIGJhc2VHcmVlbjI1NSwgYmFzZUJsdWUyNTUpIHtcbiAgICAgIGJhc2VSZWQyNTUgPSBiYXNlUmVkMjU1IHx8IDA7XG4gICAgICBiYXNlR3JlZW4yNTUgPSBiYXNlR3JlZW4yNTUgfHwgMDtcbiAgICAgIGJhc2VCbHVlMjU1ID0gYmFzZUJsdWUyNTUgfHwgMDtcbiAgICAgIC8vIGJhc2VkIG9uIGF3ZXNvbWUgcmVzcG9uc2UgOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQzMDQ0L2FsZ29yaXRobS10by1yYW5kb21seS1nZW5lcmF0ZS1hbi1hZXN0aGV0aWNhbGx5LXBsZWFzaW5nLWNvbG9yLXBhbGV0dGVcbiAgICAgIHZhciByZWQgPSBNYXRoLmZsb29yKChmYWtlci5yYW5kb20ubnVtYmVyKDI1NikgKyBiYXNlUmVkMjU1KSAvIDIpO1xuICAgICAgdmFyIGdyZWVuID0gTWF0aC5mbG9vcigoZmFrZXIucmFuZG9tLm51bWJlcigyNTYpICsgYmFzZUdyZWVuMjU1KSAvIDIpO1xuICAgICAgdmFyIGJsdWUgPSBNYXRoLmZsb29yKChmYWtlci5yYW5kb20ubnVtYmVyKDI1NikgKyBiYXNlQmx1ZTI1NSkgLyAyKTtcbiAgICAgIHZhciByZWRTdHIgPSByZWQudG9TdHJpbmcoMTYpO1xuICAgICAgdmFyIGdyZWVuU3RyID0gZ3JlZW4udG9TdHJpbmcoMTYpO1xuICAgICAgdmFyIGJsdWVTdHIgPSBibHVlLnRvU3RyaW5nKDE2KTtcbiAgICAgIHJldHVybiAnIycgK1xuICAgICAgICAocmVkU3RyLmxlbmd0aCA9PT0gMSA/ICcwJyA6ICcnKSArIHJlZFN0ciArXG4gICAgICAgIChncmVlblN0ci5sZW5ndGggPT09IDEgPyAnMCcgOiAnJykgKyBncmVlblN0ciArXG4gICAgICAgIChibHVlU3RyLmxlbmd0aCA9PT0gMSA/ICcwJzogJycpICsgYmx1ZVN0cjtcblxuICB9O1xuXG4gIHNlbGYuY29sb3Iuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gaGV4YWRlY2ltYWwgY29sb3IuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIiMwNjI2N2ZcIl0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiYmFzZVJlZDI1NVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHJlZCB2YWx1ZS4gVmFsaWQgdmFsdWVzIGFyZSAwIC0gMjU1LlwiXG4gICAgICB9LFxuICAgICAgXCJiYXNlR3JlZW4yNTVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBncmVlbiB2YWx1ZS4gVmFsaWQgdmFsdWVzIGFyZSAwIC0gMjU1LlwiXG4gICAgICB9LFxuICAgICAgXCJiYXNlQmx1ZTI1NVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGJsdWUgdmFsdWUuIFZhbGlkIHZhbHVlcyBhcmUgMCAtIDI1NS5cIlxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogbWFjXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQubWFjXG4gICAqL1xuICBzZWxmLm1hYyA9IGZ1bmN0aW9uKCl7XG4gICAgICB2YXIgaSwgbWFjID0gXCJcIjtcbiAgICAgIGZvciAoaT0wOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgIG1hYys9IGZha2VyLnJhbmRvbS5udW1iZXIoMTUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICBpZiAoaSUyPT0xICYmIGkgIT0gMTEpIHtcbiAgICAgICAgICAgICAgbWFjKz1cIjpcIjtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFjO1xuICB9O1xuXG4gIHNlbGYubWFjLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIG1hYyBhZGRyZXNzLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCI3ODowNjpjYzphZTpiMzo4MVwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBwYXNzd29yZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnBhc3N3b3JkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5cbiAgICogQHBhcmFtIHtib29sZWFufSBtZW1vcmFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdHRlcm5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxuICAgKi9cbiAgIHNlbGYucGFzc3dvcmQgPSBmdW5jdGlvbiAobGVuLCBtZW1vcmFibGUsIHBhdHRlcm4sIHByZWZpeCkge1xuICAgICBsZW4gPSBsZW4gfHwgMTU7XG4gICAgIGlmICh0eXBlb2YgbWVtb3JhYmxlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgbWVtb3JhYmxlID0gZmFsc2U7XG4gICAgIH1cbiAgICAgLypcbiAgICAgICogcGFzc3dvcmQtZ2VuZXJhdG9yICggZnVuY3Rpb24gKVxuICAgICAgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDEzIEJlcm1pIEZlcnJlciA8YmVybWlAYmVybWlsYWJzLmNvbT5cbiAgICAgICogTUlUIExpY2Vuc2VkXG4gICAgICAqL1xuICAgICB2YXIgY29uc29uYW50LCBsZXR0ZXIsIHBhc3N3b3JkLCB2b3dlbDtcbiAgICAgbGV0dGVyID0gL1thLXpBLVpdJC87XG4gICAgIHZvd2VsID0gL1thZWlvdUFFSU9VXSQvO1xuICAgICBjb25zb25hbnQgPSAvW2JjZGZnaGprbG1ucHFyc3R2d3h5ekJDREZHSEpLTE1OUFFSU1RWV1hZWl0kLztcbiAgICAgdmFyIF9wYXNzd29yZCA9IGZ1bmN0aW9uIChsZW5ndGgsIG1lbW9yYWJsZSwgcGF0dGVybiwgcHJlZml4KSB7XG4gICAgICAgdmFyIGNoYXIsIG47XG4gICAgICAgaWYgKGxlbmd0aCA9PSBudWxsKSB7XG4gICAgICAgICBsZW5ndGggPSAxMDtcbiAgICAgICB9XG4gICAgICAgaWYgKG1lbW9yYWJsZSA9PSBudWxsKSB7XG4gICAgICAgICBtZW1vcmFibGUgPSB0cnVlO1xuICAgICAgIH1cbiAgICAgICBpZiAocGF0dGVybiA9PSBudWxsKSB7XG4gICAgICAgICBwYXR0ZXJuID0gL1xcdy87XG4gICAgICAgfVxuICAgICAgIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgICAgICAgcHJlZml4ID0gJyc7XG4gICAgICAgfVxuICAgICAgIGlmIChwcmVmaXgubGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICAgICB9XG4gICAgICAgaWYgKG1lbW9yYWJsZSkge1xuICAgICAgICAgaWYgKHByZWZpeC5tYXRjaChjb25zb25hbnQpKSB7XG4gICAgICAgICAgIHBhdHRlcm4gPSB2b3dlbDtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIHBhdHRlcm4gPSBjb25zb25hbnQ7XG4gICAgICAgICB9XG4gICAgICAgfVxuICAgICAgIG4gPSBmYWtlci5yYW5kb20ubnVtYmVyKDk0KSArIDMzO1xuICAgICAgIGNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG4pO1xuICAgICAgIGlmIChtZW1vcmFibGUpIHtcbiAgICAgICAgIGNoYXIgPSBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgfVxuICAgICAgIGlmICghY2hhci5tYXRjaChwYXR0ZXJuKSkge1xuICAgICAgICAgcmV0dXJuIF9wYXNzd29yZChsZW5ndGgsIG1lbW9yYWJsZSwgcGF0dGVybiwgcHJlZml4KTtcbiAgICAgICB9XG4gICAgICAgcmV0dXJuIF9wYXNzd29yZChsZW5ndGgsIG1lbW9yYWJsZSwgcGF0dGVybiwgXCJcIiArIHByZWZpeCArIGNoYXIpO1xuICAgICB9O1xuICAgICByZXR1cm4gX3Bhc3N3b3JkKGxlbiwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpO1xuICAgfVxuXG4gIHNlbGYucGFzc3dvcmQuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gcGFzc3dvcmQuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcbiAgICAgIFwiQU03emw2TWdcIixcbiAgICAgIFwic3VzZWpvZmVcIlxuICAgIF0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwibGVuZ3RoXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHBhc3N3b3JkLlwiXG4gICAgICB9LFxuICAgICAgXCJtZW1vcmFibGVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGVhc3kgdG8gcmVtZW1iZXIuXCJcbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICBcInR5cGVcIjogXCJyZWdleFwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSByZWdleCB0byBtYXRjaCBlYWNoIGNoYXJhY3RlciBvZiB0aGUgcGFzc3dvcmQgYWdhaW5zdC4gVGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBuZWdhdGVkIGlmIHRoZSBtZW1vcmFibGUgc2V0dGluZyBpcyB0dXJuZWQgb24uXCJcbiAgICAgIH0sXG4gICAgICBcInByZWZpeFwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSB2YWx1ZSB0byBwcmVwZW5kIHRvIHRoZSBnZW5lcmF0ZWQgcGFzc3dvcmQuIFRoZSBwcmVmaXggY291bnRzIHRvd2FyZHMgdGhlIGxlbmd0aCBvZiB0aGUgcGFzc3dvcmQuXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbn07XG5cblxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IEludGVybmV0O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMjI1wiLFxuICBcIiMjIyNcIixcbiAgXCIjIyNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tjaXR5X3ByZWZpeH0gI3tOYW1lLmZpcnN0X25hbWV9I3tjaXR5X3N1ZmZpeH1cIixcbiAgXCIje2NpdHlfcHJlZml4fSAje05hbWUuZmlyc3RfbmFtZX1cIixcbiAgXCIje05hbWUuZmlyc3RfbmFtZX0je2NpdHlfc3VmZml4fVwiLFxuICBcIiN7TmFtZS5sYXN0X25hbWV9I3tjaXR5X3N1ZmZpeH1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiTm9ydGhcIixcbiAgXCJFYXN0XCIsXG4gIFwiV2VzdFwiLFxuICBcIlNvdXRoXCIsXG4gIFwiTmV3XCIsXG4gIFwiTGFrZVwiLFxuICBcIlBvcnRcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwidG93blwiLFxuICBcInRvblwiLFxuICBcImxhbmRcIixcbiAgXCJ2aWxsZVwiLFxuICBcImJlcmdcIixcbiAgXCJidXJnaFwiLFxuICBcImJvcm91Z2hcIixcbiAgXCJidXJ5XCIsXG4gIFwidmlld1wiLFxuICBcInBvcnRcIixcbiAgXCJtb3V0aFwiLFxuICBcInN0YWRcIixcbiAgXCJmdXJ0XCIsXG4gIFwiY2hlc3RlclwiLFxuICBcIm1vdXRoXCIsXG4gIFwiZm9ydFwiLFxuICBcImhhdmVuXCIsXG4gIFwic2lkZVwiLFxuICBcInNoaXJlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFmZ2hhbmlzdGFuXCIsXG4gIFwiQWxiYW5pYVwiLFxuICBcIkFsZ2VyaWFcIixcbiAgXCJBbWVyaWNhbiBTYW1vYVwiLFxuICBcIkFuZG9ycmFcIixcbiAgXCJBbmdvbGFcIixcbiAgXCJBbmd1aWxsYVwiLFxuICBcIkFudGFyY3RpY2EgKHRoZSB0ZXJyaXRvcnkgU291dGggb2YgNjAgZGVnIFMpXCIsXG4gIFwiQW50aWd1YSBhbmQgQmFyYnVkYVwiLFxuICBcIkFyZ2VudGluYVwiLFxuICBcIkFybWVuaWFcIixcbiAgXCJBcnViYVwiLFxuICBcIkF1c3RyYWxpYVwiLFxuICBcIkF1c3RyaWFcIixcbiAgXCJBemVyYmFpamFuXCIsXG4gIFwiQmFoYW1hc1wiLFxuICBcIkJhaHJhaW5cIixcbiAgXCJCYW5nbGFkZXNoXCIsXG4gIFwiQmFyYmFkb3NcIixcbiAgXCJCZWxhcnVzXCIsXG4gIFwiQmVsZ2l1bVwiLFxuICBcIkJlbGl6ZVwiLFxuICBcIkJlbmluXCIsXG4gIFwiQmVybXVkYVwiLFxuICBcIkJodXRhblwiLFxuICBcIkJvbGl2aWFcIixcbiAgXCJCb3NuaWEgYW5kIEhlcnplZ292aW5hXCIsXG4gIFwiQm90c3dhbmFcIixcbiAgXCJCb3V2ZXQgSXNsYW5kIChCb3V2ZXRveWEpXCIsXG4gIFwiQnJhemlsXCIsXG4gIFwiQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IChDaGFnb3MgQXJjaGlwZWxhZ28pXCIsXG4gIFwiQnJ1bmVpIERhcnVzc2FsYW1cIixcbiAgXCJCdWxnYXJpYVwiLFxuICBcIkJ1cmtpbmEgRmFzb1wiLFxuICBcIkJ1cnVuZGlcIixcbiAgXCJDYW1ib2RpYVwiLFxuICBcIkNhbWVyb29uXCIsXG4gIFwiQ2FuYWRhXCIsXG4gIFwiQ2FwZSBWZXJkZVwiLFxuICBcIkNheW1hbiBJc2xhbmRzXCIsXG4gIFwiQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljXCIsXG4gIFwiQ2hhZFwiLFxuICBcIkNoaWxlXCIsXG4gIFwiQ2hpbmFcIixcbiAgXCJDaHJpc3RtYXMgSXNsYW5kXCIsXG4gIFwiQ29jb3MgKEtlZWxpbmcpIElzbGFuZHNcIixcbiAgXCJDb2xvbWJpYVwiLFxuICBcIkNvbW9yb3NcIixcbiAgXCJDb25nb1wiLFxuICBcIkNvb2sgSXNsYW5kc1wiLFxuICBcIkNvc3RhIFJpY2FcIixcbiAgXCJDb3RlIGQnSXZvaXJlXCIsXG4gIFwiQ3JvYXRpYVwiLFxuICBcIkN1YmFcIixcbiAgXCJDeXBydXNcIixcbiAgXCJDemVjaCBSZXB1YmxpY1wiLFxuICBcIkRlbm1hcmtcIixcbiAgXCJEamlib3V0aVwiLFxuICBcIkRvbWluaWNhXCIsXG4gIFwiRG9taW5pY2FuIFJlcHVibGljXCIsXG4gIFwiRWN1YWRvclwiLFxuICBcIkVneXB0XCIsXG4gIFwiRWwgU2FsdmFkb3JcIixcbiAgXCJFcXVhdG9yaWFsIEd1aW5lYVwiLFxuICBcIkVyaXRyZWFcIixcbiAgXCJFc3RvbmlhXCIsXG4gIFwiRXRoaW9waWFcIixcbiAgXCJGYXJvZSBJc2xhbmRzXCIsXG4gIFwiRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpXCIsXG4gIFwiRmlqaVwiLFxuICBcIkZpbmxhbmRcIixcbiAgXCJGcmFuY2VcIixcbiAgXCJGcmVuY2ggR3VpYW5hXCIsXG4gIFwiRnJlbmNoIFBvbHluZXNpYVwiLFxuICBcIkZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllc1wiLFxuICBcIkdhYm9uXCIsXG4gIFwiR2FtYmlhXCIsXG4gIFwiR2VvcmdpYVwiLFxuICBcIkdlcm1hbnlcIixcbiAgXCJHaGFuYVwiLFxuICBcIkdpYnJhbHRhclwiLFxuICBcIkdyZWVjZVwiLFxuICBcIkdyZWVubGFuZFwiLFxuICBcIkdyZW5hZGFcIixcbiAgXCJHdWFkZWxvdXBlXCIsXG4gIFwiR3VhbVwiLFxuICBcIkd1YXRlbWFsYVwiLFxuICBcIkd1ZXJuc2V5XCIsXG4gIFwiR3VpbmVhXCIsXG4gIFwiR3VpbmVhLUJpc3NhdVwiLFxuICBcIkd1eWFuYVwiLFxuICBcIkhhaXRpXCIsXG4gIFwiSGVhcmQgSXNsYW5kIGFuZCBNY0RvbmFsZCBJc2xhbmRzXCIsXG4gIFwiSG9seSBTZWUgKFZhdGljYW4gQ2l0eSBTdGF0ZSlcIixcbiAgXCJIb25kdXJhc1wiLFxuICBcIkhvbmcgS29uZ1wiLFxuICBcIkh1bmdhcnlcIixcbiAgXCJJY2VsYW5kXCIsXG4gIFwiSW5kaWFcIixcbiAgXCJJbmRvbmVzaWFcIixcbiAgXCJJcmFuXCIsXG4gIFwiSXJhcVwiLFxuICBcIklyZWxhbmRcIixcbiAgXCJJc2xlIG9mIE1hblwiLFxuICBcIklzcmFlbFwiLFxuICBcIkl0YWx5XCIsXG4gIFwiSmFtYWljYVwiLFxuICBcIkphcGFuXCIsXG4gIFwiSmVyc2V5XCIsXG4gIFwiSm9yZGFuXCIsXG4gIFwiS2F6YWtoc3RhblwiLFxuICBcIktlbnlhXCIsXG4gIFwiS2lyaWJhdGlcIixcbiAgXCJEZW1vY3JhdGljIFBlb3BsZSdzIFJlcHVibGljIG9mIEtvcmVhXCIsXG4gIFwiUmVwdWJsaWMgb2YgS29yZWFcIixcbiAgXCJLdXdhaXRcIixcbiAgXCJLeXJneXogUmVwdWJsaWNcIixcbiAgXCJMYW8gUGVvcGxlJ3MgRGVtb2NyYXRpYyBSZXB1YmxpY1wiLFxuICBcIkxhdHZpYVwiLFxuICBcIkxlYmFub25cIixcbiAgXCJMZXNvdGhvXCIsXG4gIFwiTGliZXJpYVwiLFxuICBcIkxpYnlhbiBBcmFiIEphbWFoaXJpeWFcIixcbiAgXCJMaWVjaHRlbnN0ZWluXCIsXG4gIFwiTGl0aHVhbmlhXCIsXG4gIFwiTHV4ZW1ib3VyZ1wiLFxuICBcIk1hY2FvXCIsXG4gIFwiTWFjZWRvbmlhXCIsXG4gIFwiTWFkYWdhc2NhclwiLFxuICBcIk1hbGF3aVwiLFxuICBcIk1hbGF5c2lhXCIsXG4gIFwiTWFsZGl2ZXNcIixcbiAgXCJNYWxpXCIsXG4gIFwiTWFsdGFcIixcbiAgXCJNYXJzaGFsbCBJc2xhbmRzXCIsXG4gIFwiTWFydGluaXF1ZVwiLFxuICBcIk1hdXJpdGFuaWFcIixcbiAgXCJNYXVyaXRpdXNcIixcbiAgXCJNYXlvdHRlXCIsXG4gIFwiTWV4aWNvXCIsXG4gIFwiTWljcm9uZXNpYVwiLFxuICBcIk1vbGRvdmFcIixcbiAgXCJNb25hY29cIixcbiAgXCJNb25nb2xpYVwiLFxuICBcIk1vbnRlbmVncm9cIixcbiAgXCJNb250c2VycmF0XCIsXG4gIFwiTW9yb2Njb1wiLFxuICBcIk1vemFtYmlxdWVcIixcbiAgXCJNeWFubWFyXCIsXG4gIFwiTmFtaWJpYVwiLFxuICBcIk5hdXJ1XCIsXG4gIFwiTmVwYWxcIixcbiAgXCJOZXRoZXJsYW5kcyBBbnRpbGxlc1wiLFxuICBcIk5ldGhlcmxhbmRzXCIsXG4gIFwiTmV3IENhbGVkb25pYVwiLFxuICBcIk5ldyBaZWFsYW5kXCIsXG4gIFwiTmljYXJhZ3VhXCIsXG4gIFwiTmlnZXJcIixcbiAgXCJOaWdlcmlhXCIsXG4gIFwiTml1ZVwiLFxuICBcIk5vcmZvbGsgSXNsYW5kXCIsXG4gIFwiTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzXCIsXG4gIFwiTm9yd2F5XCIsXG4gIFwiT21hblwiLFxuICBcIlBha2lzdGFuXCIsXG4gIFwiUGFsYXVcIixcbiAgXCJQYWxlc3RpbmlhbiBUZXJyaXRvcnlcIixcbiAgXCJQYW5hbWFcIixcbiAgXCJQYXB1YSBOZXcgR3VpbmVhXCIsXG4gIFwiUGFyYWd1YXlcIixcbiAgXCJQZXJ1XCIsXG4gIFwiUGhpbGlwcGluZXNcIixcbiAgXCJQaXRjYWlybiBJc2xhbmRzXCIsXG4gIFwiUG9sYW5kXCIsXG4gIFwiUG9ydHVnYWxcIixcbiAgXCJQdWVydG8gUmljb1wiLFxuICBcIlFhdGFyXCIsXG4gIFwiUmV1bmlvblwiLFxuICBcIlJvbWFuaWFcIixcbiAgXCJSdXNzaWFuIEZlZGVyYXRpb25cIixcbiAgXCJSd2FuZGFcIixcbiAgXCJTYWludCBCYXJ0aGVsZW15XCIsXG4gIFwiU2FpbnQgSGVsZW5hXCIsXG4gIFwiU2FpbnQgS2l0dHMgYW5kIE5ldmlzXCIsXG4gIFwiU2FpbnQgTHVjaWFcIixcbiAgXCJTYWludCBNYXJ0aW5cIixcbiAgXCJTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uXCIsXG4gIFwiU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXNcIixcbiAgXCJTYW1vYVwiLFxuICBcIlNhbiBNYXJpbm9cIixcbiAgXCJTYW8gVG9tZSBhbmQgUHJpbmNpcGVcIixcbiAgXCJTYXVkaSBBcmFiaWFcIixcbiAgXCJTZW5lZ2FsXCIsXG4gIFwiU2VyYmlhXCIsXG4gIFwiU2V5Y2hlbGxlc1wiLFxuICBcIlNpZXJyYSBMZW9uZVwiLFxuICBcIlNpbmdhcG9yZVwiLFxuICBcIlNsb3Zha2lhIChTbG92YWsgUmVwdWJsaWMpXCIsXG4gIFwiU2xvdmVuaWFcIixcbiAgXCJTb2xvbW9uIElzbGFuZHNcIixcbiAgXCJTb21hbGlhXCIsXG4gIFwiU291dGggQWZyaWNhXCIsXG4gIFwiU291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHNcIixcbiAgXCJTcGFpblwiLFxuICBcIlNyaSBMYW5rYVwiLFxuICBcIlN1ZGFuXCIsXG4gIFwiU3VyaW5hbWVcIixcbiAgXCJTdmFsYmFyZCAmIEphbiBNYXllbiBJc2xhbmRzXCIsXG4gIFwiU3dhemlsYW5kXCIsXG4gIFwiU3dlZGVuXCIsXG4gIFwiU3dpdHplcmxhbmRcIixcbiAgXCJTeXJpYW4gQXJhYiBSZXB1YmxpY1wiLFxuICBcIlRhaXdhblwiLFxuICBcIlRhamlraXN0YW5cIixcbiAgXCJUYW56YW5pYVwiLFxuICBcIlRoYWlsYW5kXCIsXG4gIFwiVGltb3ItTGVzdGVcIixcbiAgXCJUb2dvXCIsXG4gIFwiVG9rZWxhdVwiLFxuICBcIlRvbmdhXCIsXG4gIFwiVHJpbmlkYWQgYW5kIFRvYmFnb1wiLFxuICBcIlR1bmlzaWFcIixcbiAgXCJUdXJrZXlcIixcbiAgXCJUdXJrbWVuaXN0YW5cIixcbiAgXCJUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHNcIixcbiAgXCJUdXZhbHVcIixcbiAgXCJVZ2FuZGFcIixcbiAgXCJVa3JhaW5lXCIsXG4gIFwiVW5pdGVkIEFyYWIgRW1pcmF0ZXNcIixcbiAgXCJVbml0ZWQgS2luZ2RvbVwiLFxuICBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICBcIlVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kc1wiLFxuICBcIlVydWd1YXlcIixcbiAgXCJVemJla2lzdGFuXCIsXG4gIFwiVmFudWF0dVwiLFxuICBcIlZlbmV6dWVsYVwiLFxuICBcIlZpZXRuYW1cIixcbiAgXCJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaFwiLFxuICBcIlZpcmdpbiBJc2xhbmRzLCBVLlMuXCIsXG4gIFwiV2FsbGlzIGFuZCBGdXR1bmFcIixcbiAgXCJXZXN0ZXJuIFNhaGFyYVwiLFxuICBcIlllbWVuXCIsXG4gIFwiWmFtYmlhXCIsXG4gIFwiWmltYmFid2VcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQURcIixcbiAgXCJBRVwiLFxuICBcIkFGXCIsXG4gIFwiQUdcIixcbiAgXCJBSVwiLFxuICBcIkFMXCIsXG4gIFwiQU1cIixcbiAgXCJBT1wiLFxuICBcIkFRXCIsXG4gIFwiQVJcIixcbiAgXCJBU1wiLFxuICBcIkFUXCIsXG4gIFwiQVVcIixcbiAgXCJBV1wiLFxuICBcIkFYXCIsXG4gIFwiQVpcIixcbiAgXCJCQVwiLFxuICBcIkJCXCIsXG4gIFwiQkRcIixcbiAgXCJCRVwiLFxuICBcIkJGXCIsXG4gIFwiQkdcIixcbiAgXCJCSFwiLFxuICBcIkJJXCIsXG4gIFwiQkpcIixcbiAgXCJCTFwiLFxuICBcIkJNXCIsXG4gIFwiQk5cIixcbiAgXCJCT1wiLFxuICBcIkJRXCIsXG4gIFwiQlFcIixcbiAgXCJCUlwiLFxuICBcIkJTXCIsXG4gIFwiQlRcIixcbiAgXCJCVlwiLFxuICBcIkJXXCIsXG4gIFwiQllcIixcbiAgXCJCWlwiLFxuICBcIkNBXCIsXG4gIFwiQ0NcIixcbiAgXCJDRFwiLFxuICBcIkNGXCIsXG4gIFwiQ0dcIixcbiAgXCJDSFwiLFxuICBcIkNJXCIsXG4gIFwiQ0tcIixcbiAgXCJDTFwiLFxuICBcIkNNXCIsXG4gIFwiQ05cIixcbiAgXCJDT1wiLFxuICBcIkNSXCIsXG4gIFwiQ1VcIixcbiAgXCJDVlwiLFxuICBcIkNXXCIsXG4gIFwiQ1hcIixcbiAgXCJDWVwiLFxuICBcIkNaXCIsXG4gIFwiREVcIixcbiAgXCJESlwiLFxuICBcIkRLXCIsXG4gIFwiRE1cIixcbiAgXCJET1wiLFxuICBcIkRaXCIsXG4gIFwiRUNcIixcbiAgXCJFRVwiLFxuICBcIkVHXCIsXG4gIFwiRUhcIixcbiAgXCJFUlwiLFxuICBcIkVTXCIsXG4gIFwiRVRcIixcbiAgXCJGSVwiLFxuICBcIkZKXCIsXG4gIFwiRktcIixcbiAgXCJGTVwiLFxuICBcIkZPXCIsXG4gIFwiRlJcIixcbiAgXCJHQVwiLFxuICBcIkdCXCIsXG4gIFwiR0RcIixcbiAgXCJHRVwiLFxuICBcIkdGXCIsXG4gIFwiR0dcIixcbiAgXCJHSFwiLFxuICBcIkdJXCIsXG4gIFwiR0xcIixcbiAgXCJHTVwiLFxuICBcIkdOXCIsXG4gIFwiR1BcIixcbiAgXCJHUVwiLFxuICBcIkdSXCIsXG4gIFwiR1NcIixcbiAgXCJHVFwiLFxuICBcIkdVXCIsXG4gIFwiR1dcIixcbiAgXCJHWVwiLFxuICBcIkhLXCIsXG4gIFwiSE1cIixcbiAgXCJITlwiLFxuICBcIkhSXCIsXG4gIFwiSFRcIixcbiAgXCJIVVwiLFxuICBcIklEXCIsXG4gIFwiSUVcIixcbiAgXCJJTFwiLFxuICBcIklNXCIsXG4gIFwiSU5cIixcbiAgXCJJT1wiLFxuICBcIklRXCIsXG4gIFwiSVJcIixcbiAgXCJJU1wiLFxuICBcIklUXCIsXG4gIFwiSkVcIixcbiAgXCJKTVwiLFxuICBcIkpPXCIsXG4gIFwiSlBcIixcbiAgXCJLRVwiLFxuICBcIktHXCIsXG4gIFwiS0hcIixcbiAgXCJLSVwiLFxuICBcIktNXCIsXG4gIFwiS05cIixcbiAgXCJLUFwiLFxuICBcIktSXCIsXG4gIFwiS1dcIixcbiAgXCJLWVwiLFxuICBcIktaXCIsXG4gIFwiTEFcIixcbiAgXCJMQlwiLFxuICBcIkxDXCIsXG4gIFwiTElcIixcbiAgXCJMS1wiLFxuICBcIkxSXCIsXG4gIFwiTFNcIixcbiAgXCJMVFwiLFxuICBcIkxVXCIsXG4gIFwiTFZcIixcbiAgXCJMWVwiLFxuICBcIk1BXCIsXG4gIFwiTUNcIixcbiAgXCJNRFwiLFxuICBcIk1FXCIsXG4gIFwiTUZcIixcbiAgXCJNR1wiLFxuICBcIk1IXCIsXG4gIFwiTUtcIixcbiAgXCJNTFwiLFxuICBcIk1NXCIsXG4gIFwiTU5cIixcbiAgXCJNT1wiLFxuICBcIk1QXCIsXG4gIFwiTVFcIixcbiAgXCJNUlwiLFxuICBcIk1TXCIsXG4gIFwiTVRcIixcbiAgXCJNVVwiLFxuICBcIk1WXCIsXG4gIFwiTVdcIixcbiAgXCJNWFwiLFxuICBcIk1ZXCIsXG4gIFwiTVpcIixcbiAgXCJOQVwiLFxuICBcIk5DXCIsXG4gIFwiTkVcIixcbiAgXCJORlwiLFxuICBcIk5HXCIsXG4gIFwiTklcIixcbiAgXCJOTFwiLFxuICBcIk5PXCIsXG4gIFwiTlBcIixcbiAgXCJOUlwiLFxuICBcIk5VXCIsXG4gIFwiTlpcIixcbiAgXCJPTVwiLFxuICBcIlBBXCIsXG4gIFwiUEVcIixcbiAgXCJQRlwiLFxuICBcIlBHXCIsXG4gIFwiUEhcIixcbiAgXCJQS1wiLFxuICBcIlBMXCIsXG4gIFwiUE1cIixcbiAgXCJQTlwiLFxuICBcIlBSXCIsXG4gIFwiUFNcIixcbiAgXCJQVFwiLFxuICBcIlBXXCIsXG4gIFwiUFlcIixcbiAgXCJRQVwiLFxuICBcIlJFXCIsXG4gIFwiUk9cIixcbiAgXCJSU1wiLFxuICBcIlJVXCIsXG4gIFwiUldcIixcbiAgXCJTQVwiLFxuICBcIlNCXCIsXG4gIFwiU0NcIixcbiAgXCJTRFwiLFxuICBcIlNFXCIsXG4gIFwiU0dcIixcbiAgXCJTSFwiLFxuICBcIlNJXCIsXG4gIFwiU0pcIixcbiAgXCJTS1wiLFxuICBcIlNMXCIsXG4gIFwiU01cIixcbiAgXCJTTlwiLFxuICBcIlNPXCIsXG4gIFwiU1JcIixcbiAgXCJTU1wiLFxuICBcIlNUXCIsXG4gIFwiU1ZcIixcbiAgXCJTWFwiLFxuICBcIlNZXCIsXG4gIFwiU1pcIixcbiAgXCJUQ1wiLFxuICBcIlREXCIsXG4gIFwiVEZcIixcbiAgXCJUR1wiLFxuICBcIlRIXCIsXG4gIFwiVEpcIixcbiAgXCJUS1wiLFxuICBcIlRMXCIsXG4gIFwiVE1cIixcbiAgXCJUTlwiLFxuICBcIlRPXCIsXG4gIFwiVFJcIixcbiAgXCJUVFwiLFxuICBcIlRWXCIsXG4gIFwiVFdcIixcbiAgXCJUWlwiLFxuICBcIlVBXCIsXG4gIFwiVUdcIixcbiAgXCJVTVwiLFxuICBcIlVTXCIsXG4gIFwiVVlcIixcbiAgXCJVWlwiLFxuICBcIlZBXCIsXG4gIFwiVkNcIixcbiAgXCJWRVwiLFxuICBcIlZHXCIsXG4gIFwiVklcIixcbiAgXCJWTlwiLFxuICBcIlZVXCIsXG4gIFwiV0ZcIixcbiAgXCJXU1wiLFxuICBcIllFXCIsXG4gIFwiWVRcIixcbiAgXCJaQVwiLFxuICBcIlpNXCIsXG4gIFwiWldcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQXZvblwiLFxuICBcIkJlZGZvcmRzaGlyZVwiLFxuICBcIkJlcmtzaGlyZVwiLFxuICBcIkJvcmRlcnNcIixcbiAgXCJCdWNraW5naGFtc2hpcmVcIixcbiAgXCJDYW1icmlkZ2VzaGlyZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIlxuXTtcbiIsInZhciBhZGRyZXNzID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGFkZHJlc3M7XG5hZGRyZXNzLmNpdHlfcHJlZml4ID0gcmVxdWlyZShcIi4vY2l0eV9wcmVmaXhcIik7XG5hZGRyZXNzLmNpdHlfc3VmZml4ID0gcmVxdWlyZShcIi4vY2l0eV9zdWZmaXhcIik7XG5hZGRyZXNzLmNvdW50eSA9IHJlcXVpcmUoXCIuL2NvdW50eVwiKTtcbmFkZHJlc3MuY291bnRyeSA9IHJlcXVpcmUoXCIuL2NvdW50cnlcIik7XG5hZGRyZXNzLmNvdW50cnlfY29kZSA9IHJlcXVpcmUoXCIuL2NvdW50cnlfY29kZVwiKTtcbmFkZHJlc3MuYnVpbGRpbmdfbnVtYmVyID0gcmVxdWlyZShcIi4vYnVpbGRpbmdfbnVtYmVyXCIpO1xuYWRkcmVzcy5zdHJlZXRfc3VmZml4ID0gcmVxdWlyZShcIi4vc3RyZWV0X3N1ZmZpeFwiKTtcbmFkZHJlc3Muc2Vjb25kYXJ5X2FkZHJlc3MgPSByZXF1aXJlKFwiLi9zZWNvbmRhcnlfYWRkcmVzc1wiKTtcbmFkZHJlc3MucG9zdGNvZGUgPSByZXF1aXJlKFwiLi9wb3N0Y29kZVwiKTtcbmFkZHJlc3MucG9zdGNvZGVfYnlfc3RhdGUgPSByZXF1aXJlKFwiLi9wb3N0Y29kZV9ieV9zdGF0ZVwiKTtcbmFkZHJlc3Muc3RhdGUgPSByZXF1aXJlKFwiLi9zdGF0ZVwiKTtcbmFkZHJlc3Muc3RhdGVfYWJiciA9IHJlcXVpcmUoXCIuL3N0YXRlX2FiYnJcIik7XG5hZGRyZXNzLnRpbWVfem9uZSA9IHJlcXVpcmUoXCIuL3RpbWVfem9uZVwiKTtcbmFkZHJlc3MuY2l0eSA9IHJlcXVpcmUoXCIuL2NpdHlcIik7XG5hZGRyZXNzLnN0cmVldF9uYW1lID0gcmVxdWlyZShcIi4vc3RyZWV0X25hbWVcIik7XG5hZGRyZXNzLnN0cmVldF9hZGRyZXNzID0gcmVxdWlyZShcIi4vc3RyZWV0X2FkZHJlc3NcIik7XG5hZGRyZXNzLmRlZmF1bHRfY291bnRyeSA9IHJlcXVpcmUoXCIuL2RlZmF1bHRfY291bnRyeVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjIyNcIixcbiAgXCIjIyMjIy0jIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIyMjXCIsXG4gIFwiIyMjIyMtIyMjI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBcHQuICMjI1wiLFxuICBcIlN1aXRlICMjI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBbGFiYW1hXCIsXG4gIFwiQWxhc2thXCIsXG4gIFwiQXJpem9uYVwiLFxuICBcIkFya2Fuc2FzXCIsXG4gIFwiQ2FsaWZvcm5pYVwiLFxuICBcIkNvbG9yYWRvXCIsXG4gIFwiQ29ubmVjdGljdXRcIixcbiAgXCJEZWxhd2FyZVwiLFxuICBcIkZsb3JpZGFcIixcbiAgXCJHZW9yZ2lhXCIsXG4gIFwiSGF3YWlpXCIsXG4gIFwiSWRhaG9cIixcbiAgXCJJbGxpbm9pc1wiLFxuICBcIkluZGlhbmFcIixcbiAgXCJJb3dhXCIsXG4gIFwiS2Fuc2FzXCIsXG4gIFwiS2VudHVja3lcIixcbiAgXCJMb3Vpc2lhbmFcIixcbiAgXCJNYWluZVwiLFxuICBcIk1hcnlsYW5kXCIsXG4gIFwiTWFzc2FjaHVzZXR0c1wiLFxuICBcIk1pY2hpZ2FuXCIsXG4gIFwiTWlubmVzb3RhXCIsXG4gIFwiTWlzc2lzc2lwcGlcIixcbiAgXCJNaXNzb3VyaVwiLFxuICBcIk1vbnRhbmFcIixcbiAgXCJOZWJyYXNrYVwiLFxuICBcIk5ldmFkYVwiLFxuICBcIk5ldyBIYW1wc2hpcmVcIixcbiAgXCJOZXcgSmVyc2V5XCIsXG4gIFwiTmV3IE1leGljb1wiLFxuICBcIk5ldyBZb3JrXCIsXG4gIFwiTm9ydGggQ2Fyb2xpbmFcIixcbiAgXCJOb3J0aCBEYWtvdGFcIixcbiAgXCJPaGlvXCIsXG4gIFwiT2tsYWhvbWFcIixcbiAgXCJPcmVnb25cIixcbiAgXCJQZW5uc3lsdmFuaWFcIixcbiAgXCJSaG9kZSBJc2xhbmRcIixcbiAgXCJTb3V0aCBDYXJvbGluYVwiLFxuICBcIlNvdXRoIERha290YVwiLFxuICBcIlRlbm5lc3NlZVwiLFxuICBcIlRleGFzXCIsXG4gIFwiVXRhaFwiLFxuICBcIlZlcm1vbnRcIixcbiAgXCJWaXJnaW5pYVwiLFxuICBcIldhc2hpbmd0b25cIixcbiAgXCJXZXN0IFZpcmdpbmlhXCIsXG4gIFwiV2lzY29uc2luXCIsXG4gIFwiV3lvbWluZ1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBTFwiLFxuICBcIkFLXCIsXG4gIFwiQVpcIixcbiAgXCJBUlwiLFxuICBcIkNBXCIsXG4gIFwiQ09cIixcbiAgXCJDVFwiLFxuICBcIkRFXCIsXG4gIFwiRkxcIixcbiAgXCJHQVwiLFxuICBcIkhJXCIsXG4gIFwiSURcIixcbiAgXCJJTFwiLFxuICBcIklOXCIsXG4gIFwiSUFcIixcbiAgXCJLU1wiLFxuICBcIktZXCIsXG4gIFwiTEFcIixcbiAgXCJNRVwiLFxuICBcIk1EXCIsXG4gIFwiTUFcIixcbiAgXCJNSVwiLFxuICBcIk1OXCIsXG4gIFwiTVNcIixcbiAgXCJNT1wiLFxuICBcIk1UXCIsXG4gIFwiTkVcIixcbiAgXCJOVlwiLFxuICBcIk5IXCIsXG4gIFwiTkpcIixcbiAgXCJOTVwiLFxuICBcIk5ZXCIsXG4gIFwiTkNcIixcbiAgXCJORFwiLFxuICBcIk9IXCIsXG4gIFwiT0tcIixcbiAgXCJPUlwiLFxuICBcIlBBXCIsXG4gIFwiUklcIixcbiAgXCJTQ1wiLFxuICBcIlNEXCIsXG4gIFwiVE5cIixcbiAgXCJUWFwiLFxuICBcIlVUXCIsXG4gIFwiVlRcIixcbiAgXCJWQVwiLFxuICBcIldBXCIsXG4gIFwiV1ZcIixcbiAgXCJXSVwiLFxuICBcIldZXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7YnVpbGRpbmdfbnVtYmVyfSAje3N0cmVldF9uYW1lfVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje05hbWUuZmlyc3RfbmFtZX0gI3tzdHJlZXRfc3VmZml4fVwiLFxuICBcIiN7TmFtZS5sYXN0X25hbWV9ICN7c3RyZWV0X3N1ZmZpeH1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWxsZXlcIixcbiAgXCJBdmVudWVcIixcbiAgXCJCcmFuY2hcIixcbiAgXCJCcmlkZ2VcIixcbiAgXCJCcm9va1wiLFxuICBcIkJyb29rc1wiLFxuICBcIkJ1cmdcIixcbiAgXCJCdXJnc1wiLFxuICBcIkJ5cGFzc1wiLFxuICBcIkNhbXBcIixcbiAgXCJDYW55b25cIixcbiAgXCJDYXBlXCIsXG4gIFwiQ2F1c2V3YXlcIixcbiAgXCJDZW50ZXJcIixcbiAgXCJDZW50ZXJzXCIsXG4gIFwiQ2lyY2xlXCIsXG4gIFwiQ2lyY2xlc1wiLFxuICBcIkNsaWZmXCIsXG4gIFwiQ2xpZmZzXCIsXG4gIFwiQ2x1YlwiLFxuICBcIkNvbW1vblwiLFxuICBcIkNvcm5lclwiLFxuICBcIkNvcm5lcnNcIixcbiAgXCJDb3Vyc2VcIixcbiAgXCJDb3VydFwiLFxuICBcIkNvdXJ0c1wiLFxuICBcIkNvdmVcIixcbiAgXCJDb3Zlc1wiLFxuICBcIkNyZWVrXCIsXG4gIFwiQ3Jlc2NlbnRcIixcbiAgXCJDcmVzdFwiLFxuICBcIkNyb3NzaW5nXCIsXG4gIFwiQ3Jvc3Nyb2FkXCIsXG4gIFwiQ3VydmVcIixcbiAgXCJEYWxlXCIsXG4gIFwiRGFtXCIsXG4gIFwiRGl2aWRlXCIsXG4gIFwiRHJpdmVcIixcbiAgXCJEcml2ZVwiLFxuICBcIkRyaXZlc1wiLFxuICBcIkVzdGF0ZVwiLFxuICBcIkVzdGF0ZXNcIixcbiAgXCJFeHByZXNzd2F5XCIsXG4gIFwiRXh0ZW5zaW9uXCIsXG4gIFwiRXh0ZW5zaW9uc1wiLFxuICBcIkZhbGxcIixcbiAgXCJGYWxsc1wiLFxuICBcIkZlcnJ5XCIsXG4gIFwiRmllbGRcIixcbiAgXCJGaWVsZHNcIixcbiAgXCJGbGF0XCIsXG4gIFwiRmxhdHNcIixcbiAgXCJGb3JkXCIsXG4gIFwiRm9yZHNcIixcbiAgXCJGb3Jlc3RcIixcbiAgXCJGb3JnZVwiLFxuICBcIkZvcmdlc1wiLFxuICBcIkZvcmtcIixcbiAgXCJGb3Jrc1wiLFxuICBcIkZvcnRcIixcbiAgXCJGcmVld2F5XCIsXG4gIFwiR2FyZGVuXCIsXG4gIFwiR2FyZGVuc1wiLFxuICBcIkdhdGV3YXlcIixcbiAgXCJHbGVuXCIsXG4gIFwiR2xlbnNcIixcbiAgXCJHcmVlblwiLFxuICBcIkdyZWVuc1wiLFxuICBcIkdyb3ZlXCIsXG4gIFwiR3JvdmVzXCIsXG4gIFwiSGFyYm9yXCIsXG4gIFwiSGFyYm9yc1wiLFxuICBcIkhhdmVuXCIsXG4gIFwiSGVpZ2h0c1wiLFxuICBcIkhpZ2h3YXlcIixcbiAgXCJIaWxsXCIsXG4gIFwiSGlsbHNcIixcbiAgXCJIb2xsb3dcIixcbiAgXCJJbmxldFwiLFxuICBcIklubGV0XCIsXG4gIFwiSXNsYW5kXCIsXG4gIFwiSXNsYW5kXCIsXG4gIFwiSXNsYW5kc1wiLFxuICBcIklzbGFuZHNcIixcbiAgXCJJc2xlXCIsXG4gIFwiSXNsZVwiLFxuICBcIkp1bmN0aW9uXCIsXG4gIFwiSnVuY3Rpb25zXCIsXG4gIFwiS2V5XCIsXG4gIFwiS2V5c1wiLFxuICBcIktub2xsXCIsXG4gIFwiS25vbGxzXCIsXG4gIFwiTGFrZVwiLFxuICBcIkxha2VzXCIsXG4gIFwiTGFuZFwiLFxuICBcIkxhbmRpbmdcIixcbiAgXCJMYW5lXCIsXG4gIFwiTGlnaHRcIixcbiAgXCJMaWdodHNcIixcbiAgXCJMb2FmXCIsXG4gIFwiTG9ja1wiLFxuICBcIkxvY2tzXCIsXG4gIFwiTG9ja3NcIixcbiAgXCJMb2RnZVwiLFxuICBcIkxvZGdlXCIsXG4gIFwiTG9vcFwiLFxuICBcIk1hbGxcIixcbiAgXCJNYW5vclwiLFxuICBcIk1hbm9yc1wiLFxuICBcIk1lYWRvd1wiLFxuICBcIk1lYWRvd3NcIixcbiAgXCJNZXdzXCIsXG4gIFwiTWlsbFwiLFxuICBcIk1pbGxzXCIsXG4gIFwiTWlzc2lvblwiLFxuICBcIk1pc3Npb25cIixcbiAgXCJNb3RvcndheVwiLFxuICBcIk1vdW50XCIsXG4gIFwiTW91bnRhaW5cIixcbiAgXCJNb3VudGFpblwiLFxuICBcIk1vdW50YWluc1wiLFxuICBcIk1vdW50YWluc1wiLFxuICBcIk5lY2tcIixcbiAgXCJPcmNoYXJkXCIsXG4gIFwiT3ZhbFwiLFxuICBcIk92ZXJwYXNzXCIsXG4gIFwiUGFya1wiLFxuICBcIlBhcmtzXCIsXG4gIFwiUGFya3dheVwiLFxuICBcIlBhcmt3YXlzXCIsXG4gIFwiUGFzc1wiLFxuICBcIlBhc3NhZ2VcIixcbiAgXCJQYXRoXCIsXG4gIFwiUGlrZVwiLFxuICBcIlBpbmVcIixcbiAgXCJQaW5lc1wiLFxuICBcIlBsYWNlXCIsXG4gIFwiUGxhaW5cIixcbiAgXCJQbGFpbnNcIixcbiAgXCJQbGFpbnNcIixcbiAgXCJQbGF6YVwiLFxuICBcIlBsYXphXCIsXG4gIFwiUG9pbnRcIixcbiAgXCJQb2ludHNcIixcbiAgXCJQb3J0XCIsXG4gIFwiUG9ydFwiLFxuICBcIlBvcnRzXCIsXG4gIFwiUG9ydHNcIixcbiAgXCJQcmFpcmllXCIsXG4gIFwiUHJhaXJpZVwiLFxuICBcIlJhZGlhbFwiLFxuICBcIlJhbXBcIixcbiAgXCJSYW5jaFwiLFxuICBcIlJhcGlkXCIsXG4gIFwiUmFwaWRzXCIsXG4gIFwiUmVzdFwiLFxuICBcIlJpZGdlXCIsXG4gIFwiUmlkZ2VzXCIsXG4gIFwiUml2ZXJcIixcbiAgXCJSb2FkXCIsXG4gIFwiUm9hZFwiLFxuICBcIlJvYWRzXCIsXG4gIFwiUm9hZHNcIixcbiAgXCJSb3V0ZVwiLFxuICBcIlJvd1wiLFxuICBcIlJ1ZVwiLFxuICBcIlJ1blwiLFxuICBcIlNob2FsXCIsXG4gIFwiU2hvYWxzXCIsXG4gIFwiU2hvcmVcIixcbiAgXCJTaG9yZXNcIixcbiAgXCJTa3l3YXlcIixcbiAgXCJTcHJpbmdcIixcbiAgXCJTcHJpbmdzXCIsXG4gIFwiU3ByaW5nc1wiLFxuICBcIlNwdXJcIixcbiAgXCJTcHVyc1wiLFxuICBcIlNxdWFyZVwiLFxuICBcIlNxdWFyZVwiLFxuICBcIlNxdWFyZXNcIixcbiAgXCJTcXVhcmVzXCIsXG4gIFwiU3RhdGlvblwiLFxuICBcIlN0YXRpb25cIixcbiAgXCJTdHJhdmVudWVcIixcbiAgXCJTdHJhdmVudWVcIixcbiAgXCJTdHJlYW1cIixcbiAgXCJTdHJlYW1cIixcbiAgXCJTdHJlZXRcIixcbiAgXCJTdHJlZXRcIixcbiAgXCJTdHJlZXRzXCIsXG4gIFwiU3VtbWl0XCIsXG4gIFwiU3VtbWl0XCIsXG4gIFwiVGVycmFjZVwiLFxuICBcIlRocm91Z2h3YXlcIixcbiAgXCJUcmFjZVwiLFxuICBcIlRyYWNrXCIsXG4gIFwiVHJhZmZpY3dheVwiLFxuICBcIlRyYWlsXCIsXG4gIFwiVHJhaWxcIixcbiAgXCJUdW5uZWxcIixcbiAgXCJUdW5uZWxcIixcbiAgXCJUdXJucGlrZVwiLFxuICBcIlR1cm5waWtlXCIsXG4gIFwiVW5kZXJwYXNzXCIsXG4gIFwiVW5pb25cIixcbiAgXCJVbmlvbnNcIixcbiAgXCJWYWxsZXlcIixcbiAgXCJWYWxsZXlzXCIsXG4gIFwiVmlhXCIsXG4gIFwiVmlhZHVjdFwiLFxuICBcIlZpZXdcIixcbiAgXCJWaWV3c1wiLFxuICBcIlZpbGxhZ2VcIixcbiAgXCJWaWxsYWdlXCIsXG4gIFwiVmlsbGFnZXNcIixcbiAgXCJWaWxsZVwiLFxuICBcIlZpc3RhXCIsXG4gIFwiVmlzdGFcIixcbiAgXCJXYWxrXCIsXG4gIFwiV2Fsa3NcIixcbiAgXCJXYWxsXCIsXG4gIFwiV2F5XCIsXG4gIFwiV2F5c1wiLFxuICBcIldlbGxcIixcbiAgXCJXZWxsc1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJQYWNpZmljL01pZHdheVwiLFxuICBcIlBhY2lmaWMvUGFnb19QYWdvXCIsXG4gIFwiUGFjaWZpYy9Ib25vbHVsdVwiLFxuICBcIkFtZXJpY2EvSnVuZWF1XCIsXG4gIFwiQW1lcmljYS9Mb3NfQW5nZWxlc1wiLFxuICBcIkFtZXJpY2EvVGlqdWFuYVwiLFxuICBcIkFtZXJpY2EvRGVudmVyXCIsXG4gIFwiQW1lcmljYS9QaG9lbml4XCIsXG4gIFwiQW1lcmljYS9DaGlodWFodWFcIixcbiAgXCJBbWVyaWNhL01hemF0bGFuXCIsXG4gIFwiQW1lcmljYS9DaGljYWdvXCIsXG4gIFwiQW1lcmljYS9SZWdpbmFcIixcbiAgXCJBbWVyaWNhL01leGljb19DaXR5XCIsXG4gIFwiQW1lcmljYS9NZXhpY29fQ2l0eVwiLFxuICBcIkFtZXJpY2EvTW9udGVycmV5XCIsXG4gIFwiQW1lcmljYS9HdWF0ZW1hbGFcIixcbiAgXCJBbWVyaWNhL05ld19Zb3JrXCIsXG4gIFwiQW1lcmljYS9JbmRpYW5hL0luZGlhbmFwb2xpc1wiLFxuICBcIkFtZXJpY2EvQm9nb3RhXCIsXG4gIFwiQW1lcmljYS9MaW1hXCIsXG4gIFwiQW1lcmljYS9MaW1hXCIsXG4gIFwiQW1lcmljYS9IYWxpZmF4XCIsXG4gIFwiQW1lcmljYS9DYXJhY2FzXCIsXG4gIFwiQW1lcmljYS9MYV9QYXpcIixcbiAgXCJBbWVyaWNhL1NhbnRpYWdvXCIsXG4gIFwiQW1lcmljYS9TdF9Kb2huc1wiLFxuICBcIkFtZXJpY2EvU2FvX1BhdWxvXCIsXG4gIFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzXCIsXG4gIFwiQW1lcmljYS9HdXlhbmFcIixcbiAgXCJBbWVyaWNhL0dvZHRoYWJcIixcbiAgXCJBdGxhbnRpYy9Tb3V0aF9HZW9yZ2lhXCIsXG4gIFwiQXRsYW50aWMvQXpvcmVzXCIsXG4gIFwiQXRsYW50aWMvQ2FwZV9WZXJkZVwiLFxuICBcIkV1cm9wZS9EdWJsaW5cIixcbiAgXCJFdXJvcGUvTG9uZG9uXCIsXG4gIFwiRXVyb3BlL0xpc2JvblwiLFxuICBcIkV1cm9wZS9Mb25kb25cIixcbiAgXCJBZnJpY2EvQ2FzYWJsYW5jYVwiLFxuICBcIkFmcmljYS9Nb25yb3ZpYVwiLFxuICBcIkV0Yy9VVENcIixcbiAgXCJFdXJvcGUvQmVsZ3JhZGVcIixcbiAgXCJFdXJvcGUvQnJhdGlzbGF2YVwiLFxuICBcIkV1cm9wZS9CdWRhcGVzdFwiLFxuICBcIkV1cm9wZS9ManVibGphbmFcIixcbiAgXCJFdXJvcGUvUHJhZ3VlXCIsXG4gIFwiRXVyb3BlL1NhcmFqZXZvXCIsXG4gIFwiRXVyb3BlL1Nrb3BqZVwiLFxuICBcIkV1cm9wZS9XYXJzYXdcIixcbiAgXCJFdXJvcGUvWmFncmViXCIsXG4gIFwiRXVyb3BlL0JydXNzZWxzXCIsXG4gIFwiRXVyb3BlL0NvcGVuaGFnZW5cIixcbiAgXCJFdXJvcGUvTWFkcmlkXCIsXG4gIFwiRXVyb3BlL1BhcmlzXCIsXG4gIFwiRXVyb3BlL0Ftc3RlcmRhbVwiLFxuICBcIkV1cm9wZS9CZXJsaW5cIixcbiAgXCJFdXJvcGUvQmVybGluXCIsXG4gIFwiRXVyb3BlL1JvbWVcIixcbiAgXCJFdXJvcGUvU3RvY2tob2xtXCIsXG4gIFwiRXVyb3BlL1ZpZW5uYVwiLFxuICBcIkFmcmljYS9BbGdpZXJzXCIsXG4gIFwiRXVyb3BlL0J1Y2hhcmVzdFwiLFxuICBcIkFmcmljYS9DYWlyb1wiLFxuICBcIkV1cm9wZS9IZWxzaW5raVwiLFxuICBcIkV1cm9wZS9LaWV2XCIsXG4gIFwiRXVyb3BlL1JpZ2FcIixcbiAgXCJFdXJvcGUvU29maWFcIixcbiAgXCJFdXJvcGUvVGFsbGlublwiLFxuICBcIkV1cm9wZS9WaWxuaXVzXCIsXG4gIFwiRXVyb3BlL0F0aGVuc1wiLFxuICBcIkV1cm9wZS9Jc3RhbmJ1bFwiLFxuICBcIkV1cm9wZS9NaW5za1wiLFxuICBcIkFzaWEvSmVydXNhbGVtXCIsXG4gIFwiQWZyaWNhL0hhcmFyZVwiLFxuICBcIkFmcmljYS9Kb2hhbm5lc2J1cmdcIixcbiAgXCJFdXJvcGUvTW9zY293XCIsXG4gIFwiRXVyb3BlL01vc2Nvd1wiLFxuICBcIkV1cm9wZS9Nb3Njb3dcIixcbiAgXCJBc2lhL0t1d2FpdFwiLFxuICBcIkFzaWEvUml5YWRoXCIsXG4gIFwiQWZyaWNhL05haXJvYmlcIixcbiAgXCJBc2lhL0JhZ2hkYWRcIixcbiAgXCJBc2lhL1RlaHJhblwiLFxuICBcIkFzaWEvTXVzY2F0XCIsXG4gIFwiQXNpYS9NdXNjYXRcIixcbiAgXCJBc2lhL0Jha3VcIixcbiAgXCJBc2lhL1RiaWxpc2lcIixcbiAgXCJBc2lhL1llcmV2YW5cIixcbiAgXCJBc2lhL0thYnVsXCIsXG4gIFwiQXNpYS9ZZWthdGVyaW5idXJnXCIsXG4gIFwiQXNpYS9LYXJhY2hpXCIsXG4gIFwiQXNpYS9LYXJhY2hpXCIsXG4gIFwiQXNpYS9UYXNoa2VudFwiLFxuICBcIkFzaWEvS29sa2F0YVwiLFxuICBcIkFzaWEvS29sa2F0YVwiLFxuICBcIkFzaWEvS29sa2F0YVwiLFxuICBcIkFzaWEvS29sa2F0YVwiLFxuICBcIkFzaWEvS2F0aG1hbmR1XCIsXG4gIFwiQXNpYS9EaGFrYVwiLFxuICBcIkFzaWEvRGhha2FcIixcbiAgXCJBc2lhL0NvbG9tYm9cIixcbiAgXCJBc2lhL0FsbWF0eVwiLFxuICBcIkFzaWEvTm92b3NpYmlyc2tcIixcbiAgXCJBc2lhL1Jhbmdvb25cIixcbiAgXCJBc2lhL0Jhbmdrb2tcIixcbiAgXCJBc2lhL0Jhbmdrb2tcIixcbiAgXCJBc2lhL0pha2FydGFcIixcbiAgXCJBc2lhL0tyYXNub3lhcnNrXCIsXG4gIFwiQXNpYS9TaGFuZ2hhaVwiLFxuICBcIkFzaWEvQ2hvbmdxaW5nXCIsXG4gIFwiQXNpYS9Ib25nX0tvbmdcIixcbiAgXCJBc2lhL1VydW1xaVwiLFxuICBcIkFzaWEvS3VhbGFfTHVtcHVyXCIsXG4gIFwiQXNpYS9TaW5nYXBvcmVcIixcbiAgXCJBc2lhL1RhaXBlaVwiLFxuICBcIkF1c3RyYWxpYS9QZXJ0aFwiLFxuICBcIkFzaWEvSXJrdXRza1wiLFxuICBcIkFzaWEvVWxhYW5iYWF0YXJcIixcbiAgXCJBc2lhL1Nlb3VsXCIsXG4gIFwiQXNpYS9Ub2t5b1wiLFxuICBcIkFzaWEvVG9reW9cIixcbiAgXCJBc2lhL1Rva3lvXCIsXG4gIFwiQXNpYS9ZYWt1dHNrXCIsXG4gIFwiQXVzdHJhbGlhL0RhcndpblwiLFxuICBcIkF1c3RyYWxpYS9BZGVsYWlkZVwiLFxuICBcIkF1c3RyYWxpYS9NZWxib3VybmVcIixcbiAgXCJBdXN0cmFsaWEvTWVsYm91cm5lXCIsXG4gIFwiQXVzdHJhbGlhL1N5ZG5leVwiLFxuICBcIkF1c3RyYWxpYS9CcmlzYmFuZVwiLFxuICBcIkF1c3RyYWxpYS9Ib2JhcnRcIixcbiAgXCJBc2lhL1ZsYWRpdm9zdG9rXCIsXG4gIFwiUGFjaWZpYy9HdWFtXCIsXG4gIFwiUGFjaWZpYy9Qb3J0X01vcmVzYnlcIixcbiAgXCJBc2lhL01hZ2FkYW5cIixcbiAgXCJBc2lhL01hZ2FkYW5cIixcbiAgXCJQYWNpZmljL05vdW1lYVwiLFxuICBcIlBhY2lmaWMvRmlqaVwiLFxuICBcIkFzaWEvS2FtY2hhdGthXCIsXG4gIFwiUGFjaWZpYy9NYWp1cm9cIixcbiAgXCJQYWNpZmljL0F1Y2tsYW5kXCIsXG4gIFwiUGFjaWZpYy9BdWNrbGFuZFwiLFxuICBcIlBhY2lmaWMvVG9uZ2F0YXB1XCIsXG4gIFwiUGFjaWZpYy9GYWthb2ZvXCIsXG4gIFwiUGFjaWZpYy9BcGlhXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7TmFtZS5uYW1lfVwiLFxuICBcIiN7Q29tcGFueS5uYW1lfVwiXG5dO1xuIiwidmFyIGFwcCA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBhcHA7XG5hcHAubmFtZSA9IHJlcXVpcmUoXCIuL25hbWVcIik7XG5hcHAudmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIik7XG5hcHAuYXV0aG9yID0gcmVxdWlyZShcIi4vYXV0aG9yXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJSZWRob2xkXCIsXG4gIFwiVHJlZWZsZXhcIixcbiAgXCJUcmlwcGxlZGV4XCIsXG4gIFwiS2FubGFtXCIsXG4gIFwiQmlndGF4XCIsXG4gIFwiRGFsdGZyZXNoXCIsXG4gIFwiVG91Z2hqb3lmYXhcIixcbiAgXCJNYXQgTGFtIFRhbVwiLFxuICBcIk90Y29tXCIsXG4gIFwiVHJlcy1aYXBcIixcbiAgXCJZLVNvbG93YXJtXCIsXG4gIFwiVHJlc29tXCIsXG4gIFwiVm9sdHNpbGxhbVwiLFxuICBcIkJpb2RleFwiLFxuICBcIkdyZWVubGFtXCIsXG4gIFwiVml2YVwiLFxuICBcIk1hdHNvZnRcIixcbiAgXCJUZW1wXCIsXG4gIFwiWm9vbGFiXCIsXG4gIFwiU3ViaW5cIixcbiAgXCJSYW5rXCIsXG4gIFwiSm9iXCIsXG4gIFwiU3RyaW5ndG91Z2hcIixcbiAgXCJUaW5cIixcbiAgXCJJdFwiLFxuICBcIkhvbWUgSW5nXCIsXG4gIFwiWmFtaXRcIixcbiAgXCJTb25zaW5nXCIsXG4gIFwiS29ua2xhYlwiLFxuICBcIkFscGhhXCIsXG4gIFwiTGF0bHV4XCIsXG4gIFwiVm95YXRvdWNoXCIsXG4gIFwiQWxwaGF6YXBcIixcbiAgXCJIb2xkbGFtaXNcIixcbiAgXCJaYWFtLURveFwiLFxuICBcIlN1Yi1FeFwiLFxuICBcIlF1byBMdXhcIixcbiAgXCJCYW1pdHlcIixcbiAgXCJWZW50b3NhbnphcFwiLFxuICBcIkxvdHN0cmluZ1wiLFxuICBcIkhhdGl0eVwiLFxuICBcIlRlbXBzb2Z0XCIsXG4gIFwiT3ZlcmhvbGRcIixcbiAgXCJGaXhmbGV4XCIsXG4gIFwiS29ua2x1eFwiLFxuICBcIlpvbnRyYXhcIixcbiAgXCJUYW1wZmxleFwiLFxuICBcIlNwYW5cIixcbiAgXCJOYW1maXhcIixcbiAgXCJUcmFuc2NvZlwiLFxuICBcIlN0aW1cIixcbiAgXCJGaXggU2FuXCIsXG4gIFwiU29uYWlyXCIsXG4gIFwiU3Ryb25naG9sZFwiLFxuICBcIkZpbnRvbmVcIixcbiAgXCJZLWZpbmRcIixcbiAgXCJPcGVsYVwiLFxuICBcIkxvdGx1eFwiLFxuICBcIlJvbnN0cmluZ1wiLFxuICBcIlphdGhpblwiLFxuICBcIkR1b2JhbVwiLFxuICBcIktleWxleFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIwLiMuI1wiLFxuICBcIjAuIyNcIixcbiAgXCIjLiMjXCIsXG4gIFwiIy4jXCIsXG4gIFwiIy4jLiNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMjAxMS0xMC0xMlwiLFxuICBcIjIwMTItMTEtMTJcIixcbiAgXCIyMDE1LTExLTExXCIsXG4gIFwiMjAxMy05LTEyXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjEyMzQtMjEyMS0xMjIxLTEyMTFcIixcbiAgXCIxMjEyLTEyMjEtMTEyMS0xMjM0XCIsXG4gIFwiMTIxMS0xMjIxLTEyMzQtMjIwMVwiLFxuICBcIjEyMjgtMTIyMS0xMjIxLTE0MzFcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwidmlzYVwiLFxuICBcIm1hc3RlcmNhcmRcIixcbiAgXCJhbWVyaWNhbmV4cHJlc3NcIixcbiAgXCJkaXNjb3ZlclwiXG5dO1xuIiwidmFyIGJ1c2luZXNzID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGJ1c2luZXNzO1xuYnVzaW5lc3MuY3JlZGl0X2NhcmRfbnVtYmVycyA9IHJlcXVpcmUoXCIuL2NyZWRpdF9jYXJkX251bWJlcnNcIik7XG5idXNpbmVzcy5jcmVkaXRfY2FyZF9leHBpcnlfZGF0ZXMgPSByZXF1aXJlKFwiLi9jcmVkaXRfY2FyZF9leHBpcnlfZGF0ZXNcIik7XG5idXNpbmVzcy5jcmVkaXRfY2FyZF90eXBlcyA9IHJlcXVpcmUoXCIuL2NyZWRpdF9jYXJkX3R5cGVzXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMtIyMjLSMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjXCJcbl07XG4iLCJ2YXIgY2VsbF9waG9uZSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBjZWxsX3Bob25lO1xuY2VsbF9waG9uZS5mb3JtYXRzID0gcmVxdWlyZShcIi4vZm9ybWF0c1wiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwicmVkXCIsXG4gIFwiZ3JlZW5cIixcbiAgXCJibHVlXCIsXG4gIFwieWVsbG93XCIsXG4gIFwicHVycGxlXCIsXG4gIFwibWludCBncmVlblwiLFxuICBcInRlYWxcIixcbiAgXCJ3aGl0ZVwiLFxuICBcImJsYWNrXCIsXG4gIFwib3JhbmdlXCIsXG4gIFwicGlua1wiLFxuICBcImdyZXlcIixcbiAgXCJtYXJvb25cIixcbiAgXCJ2aW9sZXRcIixcbiAgXCJ0dXJxdW9pc2VcIixcbiAgXCJ0YW5cIixcbiAgXCJza3kgYmx1ZVwiLFxuICBcInNhbG1vblwiLFxuICBcInBsdW1cIixcbiAgXCJvcmNoaWRcIixcbiAgXCJvbGl2ZVwiLFxuICBcIm1hZ2VudGFcIixcbiAgXCJsaW1lXCIsXG4gIFwiaXZvcnlcIixcbiAgXCJpbmRpZ29cIixcbiAgXCJnb2xkXCIsXG4gIFwiZnVjaHNpYVwiLFxuICBcImN5YW5cIixcbiAgXCJhenVyZVwiLFxuICBcImxhdmVuZGVyXCIsXG4gIFwic2lsdmVyXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkJvb2tzXCIsXG4gIFwiTW92aWVzXCIsXG4gIFwiTXVzaWNcIixcbiAgXCJHYW1lc1wiLFxuICBcIkVsZWN0cm9uaWNzXCIsXG4gIFwiQ29tcHV0ZXJzXCIsXG4gIFwiSG9tZVwiLFxuICBcIkdhcmRlblwiLFxuICBcIlRvb2xzXCIsXG4gIFwiR3JvY2VyeVwiLFxuICBcIkhlYWx0aFwiLFxuICBcIkJlYXV0eVwiLFxuICBcIlRveXNcIixcbiAgXCJLaWRzXCIsXG4gIFwiQmFieVwiLFxuICBcIkNsb3RoaW5nXCIsXG4gIFwiU2hvZXNcIixcbiAgXCJKZXdlbGVyeVwiLFxuICBcIlNwb3J0c1wiLFxuICBcIk91dGRvb3JzXCIsXG4gIFwiQXV0b21vdGl2ZVwiLFxuICBcIkluZHVzdHJpYWxcIlxuXTtcbiIsInZhciBjb21tZXJjZSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBjb21tZXJjZTtcbmNvbW1lcmNlLmNvbG9yID0gcmVxdWlyZShcIi4vY29sb3JcIik7XG5jb21tZXJjZS5kZXBhcnRtZW50ID0gcmVxdWlyZShcIi4vZGVwYXJ0bWVudFwiKTtcbmNvbW1lcmNlLnByb2R1Y3RfbmFtZSA9IHJlcXVpcmUoXCIuL3Byb2R1Y3RfbmFtZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiYWRqZWN0aXZlXCI6IFtcbiAgICBcIlNtYWxsXCIsXG4gICAgXCJFcmdvbm9taWNcIixcbiAgICBcIlJ1c3RpY1wiLFxuICAgIFwiSW50ZWxsaWdlbnRcIixcbiAgICBcIkdvcmdlb3VzXCIsXG4gICAgXCJJbmNyZWRpYmxlXCIsXG4gICAgXCJGYW50YXN0aWNcIixcbiAgICBcIlByYWN0aWNhbFwiLFxuICAgIFwiU2xlZWtcIixcbiAgICBcIkF3ZXNvbWVcIixcbiAgICBcIkdlbmVyaWNcIixcbiAgICBcIkhhbmRjcmFmdGVkXCIsXG4gICAgXCJIYW5kbWFkZVwiLFxuICAgIFwiTGljZW5zZWRcIixcbiAgICBcIlJlZmluZWRcIixcbiAgICBcIlVuYnJhbmRlZFwiLFxuICAgIFwiVGFzdHlcIlxuICBdLFxuICBcIm1hdGVyaWFsXCI6IFtcbiAgICBcIlN0ZWVsXCIsXG4gICAgXCJXb29kZW5cIixcbiAgICBcIkNvbmNyZXRlXCIsXG4gICAgXCJQbGFzdGljXCIsXG4gICAgXCJDb3R0b25cIixcbiAgICBcIkdyYW5pdGVcIixcbiAgICBcIlJ1YmJlclwiLFxuICAgIFwiTWV0YWxcIixcbiAgICBcIlNvZnRcIixcbiAgICBcIkZyZXNoXCIsXG4gICAgXCJGcm96ZW5cIlxuICBdLFxuICBcInByb2R1Y3RcIjogW1xuICAgIFwiQ2hhaXJcIixcbiAgICBcIkNhclwiLFxuICAgIFwiQ29tcHV0ZXJcIixcbiAgICBcIktleWJvYXJkXCIsXG4gICAgXCJNb3VzZVwiLFxuICAgIFwiQmlrZVwiLFxuICAgIFwiQmFsbFwiLFxuICAgIFwiR2xvdmVzXCIsXG4gICAgXCJQYW50c1wiLFxuICAgIFwiU2hpcnRcIixcbiAgICBcIlRhYmxlXCIsXG4gICAgXCJTaG9lc1wiLFxuICAgIFwiSGF0XCIsXG4gICAgXCJUb3dlbHNcIixcbiAgICBcIlNvYXBcIixcbiAgICBcIlR1bmFcIixcbiAgICBcIkNoaWNrZW5cIixcbiAgICBcIkZpc2hcIixcbiAgICBcIkNoZWVzZVwiLFxuICAgIFwiQmFjb25cIixcbiAgICBcIlBpenphXCIsXG4gICAgXCJTYWxhZFwiLFxuICAgIFwiU2F1c2FnZXNcIixcbiAgICBcIkNoaXBzXCJcbiAgXVxufTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWRhcHRpdmVcIixcbiAgXCJBZHZhbmNlZFwiLFxuICBcIkFtZWxpb3JhdGVkXCIsXG4gIFwiQXNzaW1pbGF0ZWRcIixcbiAgXCJBdXRvbWF0ZWRcIixcbiAgXCJCYWxhbmNlZFwiLFxuICBcIkJ1c2luZXNzLWZvY3VzZWRcIixcbiAgXCJDZW50cmFsaXplZFwiLFxuICBcIkNsb25lZFwiLFxuICBcIkNvbXBhdGlibGVcIixcbiAgXCJDb25maWd1cmFibGVcIixcbiAgXCJDcm9zcy1ncm91cFwiLFxuICBcIkNyb3NzLXBsYXRmb3JtXCIsXG4gIFwiQ3VzdG9tZXItZm9jdXNlZFwiLFxuICBcIkN1c3RvbWl6YWJsZVwiLFxuICBcIkRlY2VudHJhbGl6ZWRcIixcbiAgXCJEZS1lbmdpbmVlcmVkXCIsXG4gIFwiRGV2b2x2ZWRcIixcbiAgXCJEaWdpdGl6ZWRcIixcbiAgXCJEaXN0cmlidXRlZFwiLFxuICBcIkRpdmVyc2VcIixcbiAgXCJEb3duLXNpemVkXCIsXG4gIFwiRW5oYW5jZWRcIixcbiAgXCJFbnRlcnByaXNlLXdpZGVcIixcbiAgXCJFcmdvbm9taWNcIixcbiAgXCJFeGNsdXNpdmVcIixcbiAgXCJFeHBhbmRlZFwiLFxuICBcIkV4dGVuZGVkXCIsXG4gIFwiRmFjZSB0byBmYWNlXCIsXG4gIFwiRm9jdXNlZFwiLFxuICBcIkZyb250LWxpbmVcIixcbiAgXCJGdWxseS1jb25maWd1cmFibGVcIixcbiAgXCJGdW5jdGlvbi1iYXNlZFwiLFxuICBcIkZ1bmRhbWVudGFsXCIsXG4gIFwiRnV0dXJlLXByb29mZWRcIixcbiAgXCJHcmFzcy1yb290c1wiLFxuICBcIkhvcml6b250YWxcIixcbiAgXCJJbXBsZW1lbnRlZFwiLFxuICBcIklubm92YXRpdmVcIixcbiAgXCJJbnRlZ3JhdGVkXCIsXG4gIFwiSW50dWl0aXZlXCIsXG4gIFwiSW52ZXJzZVwiLFxuICBcIk1hbmFnZWRcIixcbiAgXCJNYW5kYXRvcnlcIixcbiAgXCJNb25pdG9yZWRcIixcbiAgXCJNdWx0aS1jaGFubmVsbGVkXCIsXG4gIFwiTXVsdGktbGF0ZXJhbFwiLFxuICBcIk11bHRpLWxheWVyZWRcIixcbiAgXCJNdWx0aS10aWVyZWRcIixcbiAgXCJOZXR3b3JrZWRcIixcbiAgXCJPYmplY3QtYmFzZWRcIixcbiAgXCJPcGVuLWFyY2hpdGVjdGVkXCIsXG4gIFwiT3Blbi1zb3VyY2VcIixcbiAgXCJPcGVyYXRpdmVcIixcbiAgXCJPcHRpbWl6ZWRcIixcbiAgXCJPcHRpb25hbFwiLFxuICBcIk9yZ2FuaWNcIixcbiAgXCJPcmdhbml6ZWRcIixcbiAgXCJQZXJzZXZlcmluZ1wiLFxuICBcIlBlcnNpc3RlbnRcIixcbiAgXCJQaGFzZWRcIixcbiAgXCJQb2xhcmlzZWRcIixcbiAgXCJQcmUtZW1wdGl2ZVwiLFxuICBcIlByb2FjdGl2ZVwiLFxuICBcIlByb2ZpdC1mb2N1c2VkXCIsXG4gIFwiUHJvZm91bmRcIixcbiAgXCJQcm9ncmFtbWFibGVcIixcbiAgXCJQcm9ncmVzc2l2ZVwiLFxuICBcIlB1YmxpYy1rZXlcIixcbiAgXCJRdWFsaXR5LWZvY3VzZWRcIixcbiAgXCJSZWFjdGl2ZVwiLFxuICBcIlJlYWxpZ25lZFwiLFxuICBcIlJlLWNvbnRleHR1YWxpemVkXCIsXG4gIFwiUmUtZW5naW5lZXJlZFwiLFxuICBcIlJlZHVjZWRcIixcbiAgXCJSZXZlcnNlLWVuZ2luZWVyZWRcIixcbiAgXCJSaWdodC1zaXplZFwiLFxuICBcIlJvYnVzdFwiLFxuICBcIlNlYW1sZXNzXCIsXG4gIFwiU2VjdXJlZFwiLFxuICBcIlNlbGYtZW5hYmxpbmdcIixcbiAgXCJTaGFyYWJsZVwiLFxuICBcIlN0YW5kLWFsb25lXCIsXG4gIFwiU3RyZWFtbGluZWRcIixcbiAgXCJTd2l0Y2hhYmxlXCIsXG4gIFwiU3luY2hyb25pc2VkXCIsXG4gIFwiU3luZXJnaXN0aWNcIixcbiAgXCJTeW5lcmdpemVkXCIsXG4gIFwiVGVhbS1vcmllbnRlZFwiLFxuICBcIlRvdGFsXCIsXG4gIFwiVHJpcGxlLWJ1ZmZlcmVkXCIsXG4gIFwiVW5pdmVyc2FsXCIsXG4gIFwiVXAtc2l6ZWRcIixcbiAgXCJVcGdyYWRhYmxlXCIsXG4gIFwiVXNlci1jZW50cmljXCIsXG4gIFwiVXNlci1mcmllbmRseVwiLFxuICBcIlZlcnNhdGlsZVwiLFxuICBcIlZpcnR1YWxcIixcbiAgXCJWaXNpb25hcnlcIixcbiAgXCJWaXNpb24tb3JpZW50ZWRcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiY2xpY2tzLWFuZC1tb3J0YXJcIixcbiAgXCJ2YWx1ZS1hZGRlZFwiLFxuICBcInZlcnRpY2FsXCIsXG4gIFwicHJvYWN0aXZlXCIsXG4gIFwicm9idXN0XCIsXG4gIFwicmV2b2x1dGlvbmFyeVwiLFxuICBcInNjYWxhYmxlXCIsXG4gIFwibGVhZGluZy1lZGdlXCIsXG4gIFwiaW5ub3ZhdGl2ZVwiLFxuICBcImludHVpdGl2ZVwiLFxuICBcInN0cmF0ZWdpY1wiLFxuICBcImUtYnVzaW5lc3NcIixcbiAgXCJtaXNzaW9uLWNyaXRpY2FsXCIsXG4gIFwic3RpY2t5XCIsXG4gIFwib25lLXRvLW9uZVwiLFxuICBcIjI0LzdcIixcbiAgXCJlbmQtdG8tZW5kXCIsXG4gIFwiZ2xvYmFsXCIsXG4gIFwiQjJCXCIsXG4gIFwiQjJDXCIsXG4gIFwiZ3JhbnVsYXJcIixcbiAgXCJmcmljdGlvbmxlc3NcIixcbiAgXCJ2aXJ0dWFsXCIsXG4gIFwidmlyYWxcIixcbiAgXCJkeW5hbWljXCIsXG4gIFwiMjQvMzY1XCIsXG4gIFwiYmVzdC1vZi1icmVlZFwiLFxuICBcImtpbGxlclwiLFxuICBcIm1hZ25ldGljXCIsXG4gIFwiYmxlZWRpbmctZWRnZVwiLFxuICBcIndlYi1lbmFibGVkXCIsXG4gIFwiaW50ZXJhY3RpdmVcIixcbiAgXCJkb3QtY29tXCIsXG4gIFwic2V4eVwiLFxuICBcImJhY2stZW5kXCIsXG4gIFwicmVhbC10aW1lXCIsXG4gIFwiZWZmaWNpZW50XCIsXG4gIFwiZnJvbnQtZW5kXCIsXG4gIFwiZGlzdHJpYnV0ZWRcIixcbiAgXCJzZWFtbGVzc1wiLFxuICBcImV4dGVuc2libGVcIixcbiAgXCJ0dXJuLWtleVwiLFxuICBcIndvcmxkLWNsYXNzXCIsXG4gIFwib3Blbi1zb3VyY2VcIixcbiAgXCJjcm9zcy1wbGF0Zm9ybVwiLFxuICBcImNyb3NzLW1lZGlhXCIsXG4gIFwic3luZXJnaXN0aWNcIixcbiAgXCJicmlja3MtYW5kLWNsaWNrc1wiLFxuICBcIm91dC1vZi10aGUtYm94XCIsXG4gIFwiZW50ZXJwcmlzZVwiLFxuICBcImludGVncmF0ZWRcIixcbiAgXCJpbXBhY3RmdWxcIixcbiAgXCJ3aXJlbGVzc1wiLFxuICBcInRyYW5zcGFyZW50XCIsXG4gIFwibmV4dC1nZW5lcmF0aW9uXCIsXG4gIFwiY3V0dGluZy1lZGdlXCIsXG4gIFwidXNlci1jZW50cmljXCIsXG4gIFwidmlzaW9uYXJ5XCIsXG4gIFwiY3VzdG9taXplZFwiLFxuICBcInViaXF1aXRvdXNcIixcbiAgXCJwbHVnLWFuZC1wbGF5XCIsXG4gIFwiY29sbGFib3JhdGl2ZVwiLFxuICBcImNvbXBlbGxpbmdcIixcbiAgXCJob2xpc3RpY1wiLFxuICBcInJpY2hcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwic3luZXJnaWVzXCIsXG4gIFwid2ViLXJlYWRpbmVzc1wiLFxuICBcInBhcmFkaWdtc1wiLFxuICBcIm1hcmtldHNcIixcbiAgXCJwYXJ0bmVyc2hpcHNcIixcbiAgXCJpbmZyYXN0cnVjdHVyZXNcIixcbiAgXCJwbGF0Zm9ybXNcIixcbiAgXCJpbml0aWF0aXZlc1wiLFxuICBcImNoYW5uZWxzXCIsXG4gIFwiZXllYmFsbHNcIixcbiAgXCJjb21tdW5pdGllc1wiLFxuICBcIlJPSVwiLFxuICBcInNvbHV0aW9uc1wiLFxuICBcImUtdGFpbGVyc1wiLFxuICBcImUtc2VydmljZXNcIixcbiAgXCJhY3Rpb24taXRlbXNcIixcbiAgXCJwb3J0YWxzXCIsXG4gIFwibmljaGVzXCIsXG4gIFwidGVjaG5vbG9naWVzXCIsXG4gIFwiY29udGVudFwiLFxuICBcInZvcnRhbHNcIixcbiAgXCJzdXBwbHktY2hhaW5zXCIsXG4gIFwiY29udmVyZ2VuY2VcIixcbiAgXCJyZWxhdGlvbnNoaXBzXCIsXG4gIFwiYXJjaGl0ZWN0dXJlc1wiLFxuICBcImludGVyZmFjZXNcIixcbiAgXCJlLW1hcmtldHNcIixcbiAgXCJlLWNvbW1lcmNlXCIsXG4gIFwic3lzdGVtc1wiLFxuICBcImJhbmR3aWR0aFwiLFxuICBcImluZm9tZWRpYXJpZXNcIixcbiAgXCJtb2RlbHNcIixcbiAgXCJtaW5kc2hhcmVcIixcbiAgXCJkZWxpdmVyYWJsZXNcIixcbiAgXCJ1c2Vyc1wiLFxuICBcInNjaGVtYXNcIixcbiAgXCJuZXR3b3Jrc1wiLFxuICBcImFwcGxpY2F0aW9uc1wiLFxuICBcIm1ldHJpY3NcIixcbiAgXCJlLWJ1c2luZXNzXCIsXG4gIFwiZnVuY3Rpb25hbGl0aWVzXCIsXG4gIFwiZXhwZXJpZW5jZXNcIixcbiAgXCJ3ZWIgc2VydmljZXNcIixcbiAgXCJtZXRob2RvbG9naWVzXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImltcGxlbWVudFwiLFxuICBcInV0aWxpemVcIixcbiAgXCJpbnRlZ3JhdGVcIixcbiAgXCJzdHJlYW1saW5lXCIsXG4gIFwib3B0aW1pemVcIixcbiAgXCJldm9sdmVcIixcbiAgXCJ0cmFuc2Zvcm1cIixcbiAgXCJlbWJyYWNlXCIsXG4gIFwiZW5hYmxlXCIsXG4gIFwib3JjaGVzdHJhdGVcIixcbiAgXCJsZXZlcmFnZVwiLFxuICBcInJlaW52ZW50XCIsXG4gIFwiYWdncmVnYXRlXCIsXG4gIFwiYXJjaGl0ZWN0XCIsXG4gIFwiZW5oYW5jZVwiLFxuICBcImluY2VudGl2aXplXCIsXG4gIFwibW9ycGhcIixcbiAgXCJlbXBvd2VyXCIsXG4gIFwiZW52aXNpb25lZXJcIixcbiAgXCJtb25ldGl6ZVwiLFxuICBcImhhcm5lc3NcIixcbiAgXCJmYWNpbGl0YXRlXCIsXG4gIFwic2VpemVcIixcbiAgXCJkaXNpbnRlcm1lZGlhdGVcIixcbiAgXCJzeW5lcmdpemVcIixcbiAgXCJzdHJhdGVnaXplXCIsXG4gIFwiZGVwbG95XCIsXG4gIFwiYnJhbmRcIixcbiAgXCJncm93XCIsXG4gIFwidGFyZ2V0XCIsXG4gIFwic3luZGljYXRlXCIsXG4gIFwic3ludGhlc2l6ZVwiLFxuICBcImRlbGl2ZXJcIixcbiAgXCJtZXNoXCIsXG4gIFwiaW5jdWJhdGVcIixcbiAgXCJlbmdhZ2VcIixcbiAgXCJtYXhpbWl6ZVwiLFxuICBcImJlbmNobWFya1wiLFxuICBcImV4cGVkaXRlXCIsXG4gIFwicmVpbnRlcm1lZGlhdGVcIixcbiAgXCJ3aGl0ZWJvYXJkXCIsXG4gIFwidmlzdWFsaXplXCIsXG4gIFwicmVwdXJwb3NlXCIsXG4gIFwiaW5ub3ZhdGVcIixcbiAgXCJzY2FsZVwiLFxuICBcInVubGVhc2hcIixcbiAgXCJkcml2ZVwiLFxuICBcImV4dGVuZFwiLFxuICBcImVuZ2luZWVyXCIsXG4gIFwicmV2b2x1dGlvbml6ZVwiLFxuICBcImdlbmVyYXRlXCIsXG4gIFwiZXhwbG9pdFwiLFxuICBcInRyYW5zaXRpb25cIixcbiAgXCJlLWVuYWJsZVwiLFxuICBcIml0ZXJhdGVcIixcbiAgXCJjdWx0aXZhdGVcIixcbiAgXCJtYXRyaXhcIixcbiAgXCJwcm9kdWN0aXplXCIsXG4gIFwicmVkZWZpbmVcIixcbiAgXCJyZWNvbnRleHR1YWxpemVcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMjQgaG91clwiLFxuICBcIjI0LzdcIixcbiAgXCIzcmQgZ2VuZXJhdGlvblwiLFxuICBcIjR0aCBnZW5lcmF0aW9uXCIsXG4gIFwiNXRoIGdlbmVyYXRpb25cIixcbiAgXCI2dGggZ2VuZXJhdGlvblwiLFxuICBcImFjdHVhdGluZ1wiLFxuICBcImFuYWx5emluZ1wiLFxuICBcImFzeW1tZXRyaWNcIixcbiAgXCJhc3luY2hyb25vdXNcIixcbiAgXCJhdHRpdHVkZS1vcmllbnRlZFwiLFxuICBcImJhY2tncm91bmRcIixcbiAgXCJiYW5kd2lkdGgtbW9uaXRvcmVkXCIsXG4gIFwiYmktZGlyZWN0aW9uYWxcIixcbiAgXCJiaWZ1cmNhdGVkXCIsXG4gIFwiYm90dG9tLWxpbmVcIixcbiAgXCJjbGVhci10aGlua2luZ1wiLFxuICBcImNsaWVudC1kcml2ZW5cIixcbiAgXCJjbGllbnQtc2VydmVyXCIsXG4gIFwiY29oZXJlbnRcIixcbiAgXCJjb2hlc2l2ZVwiLFxuICBcImNvbXBvc2l0ZVwiLFxuICBcImNvbnRleHQtc2Vuc2l0aXZlXCIsXG4gIFwiY29udGV4dHVhbGx5LWJhc2VkXCIsXG4gIFwiY29udGVudC1iYXNlZFwiLFxuICBcImRlZGljYXRlZFwiLFxuICBcImRlbWFuZC1kcml2ZW5cIixcbiAgXCJkaWRhY3RpY1wiLFxuICBcImRpcmVjdGlvbmFsXCIsXG4gIFwiZGlzY3JldGVcIixcbiAgXCJkaXNpbnRlcm1lZGlhdGVcIixcbiAgXCJkeW5hbWljXCIsXG4gIFwiZWNvLWNlbnRyaWNcIixcbiAgXCJlbXBvd2VyaW5nXCIsXG4gIFwiZW5jb21wYXNzaW5nXCIsXG4gIFwiZXZlbi1rZWVsZWRcIixcbiAgXCJleGVjdXRpdmVcIixcbiAgXCJleHBsaWNpdFwiLFxuICBcImV4dWRpbmdcIixcbiAgXCJmYXVsdC10b2xlcmFudFwiLFxuICBcImZvcmVncm91bmRcIixcbiAgXCJmcmVzaC10aGlua2luZ1wiLFxuICBcImZ1bGwtcmFuZ2VcIixcbiAgXCJnbG9iYWxcIixcbiAgXCJncmlkLWVuYWJsZWRcIixcbiAgXCJoZXVyaXN0aWNcIixcbiAgXCJoaWdoLWxldmVsXCIsXG4gIFwiaG9saXN0aWNcIixcbiAgXCJob21vZ2VuZW91c1wiLFxuICBcImh1bWFuLXJlc291cmNlXCIsXG4gIFwiaHlicmlkXCIsXG4gIFwiaW1wYWN0ZnVsXCIsXG4gIFwiaW5jcmVtZW50YWxcIixcbiAgXCJpbnRhbmdpYmxlXCIsXG4gIFwiaW50ZXJhY3RpdmVcIixcbiAgXCJpbnRlcm1lZGlhdGVcIixcbiAgXCJsZWFkaW5nIGVkZ2VcIixcbiAgXCJsb2NhbFwiLFxuICBcImxvZ2lzdGljYWxcIixcbiAgXCJtYXhpbWl6ZWRcIixcbiAgXCJtZXRob2RpY2FsXCIsXG4gIFwibWlzc2lvbi1jcml0aWNhbFwiLFxuICBcIm1vYmlsZVwiLFxuICBcIm1vZHVsYXJcIixcbiAgXCJtb3RpdmF0aW5nXCIsXG4gIFwibXVsdGltZWRpYVwiLFxuICBcIm11bHRpLXN0YXRlXCIsXG4gIFwibXVsdGktdGFza2luZ1wiLFxuICBcIm5hdGlvbmFsXCIsXG4gIFwibmVlZHMtYmFzZWRcIixcbiAgXCJuZXV0cmFsXCIsXG4gIFwibmV4dCBnZW5lcmF0aW9uXCIsXG4gIFwibm9uLXZvbGF0aWxlXCIsXG4gIFwib2JqZWN0LW9yaWVudGVkXCIsXG4gIFwib3B0aW1hbFwiLFxuICBcIm9wdGltaXppbmdcIixcbiAgXCJyYWRpY2FsXCIsXG4gIFwicmVhbC10aW1lXCIsXG4gIFwicmVjaXByb2NhbFwiLFxuICBcInJlZ2lvbmFsXCIsXG4gIFwicmVzcG9uc2l2ZVwiLFxuICBcInNjYWxhYmxlXCIsXG4gIFwic2Vjb25kYXJ5XCIsXG4gIFwic29sdXRpb24tb3JpZW50ZWRcIixcbiAgXCJzdGFibGVcIixcbiAgXCJzdGF0aWNcIixcbiAgXCJzeXN0ZW1hdGljXCIsXG4gIFwic3lzdGVtaWNcIixcbiAgXCJzeXN0ZW0td29ydGh5XCIsXG4gIFwidGFuZ2libGVcIixcbiAgXCJ0ZXJ0aWFyeVwiLFxuICBcInRyYW5zaXRpb25hbFwiLFxuICBcInVuaWZvcm1cIixcbiAgXCJ1cHdhcmQtdHJlbmRpbmdcIixcbiAgXCJ1c2VyLWZhY2luZ1wiLFxuICBcInZhbHVlLWFkZGVkXCIsXG4gIFwid2ViLWVuYWJsZWRcIixcbiAgXCJ3ZWxsLW1vZHVsYXRlZFwiLFxuICBcInplcm8gYWRtaW5pc3RyYXRpb25cIixcbiAgXCJ6ZXJvIGRlZmVjdFwiLFxuICBcInplcm8gdG9sZXJhbmNlXCJcbl07XG4iLCJ2YXIgY29tcGFueSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBjb21wYW55O1xuY29tcGFueS5zdWZmaXggPSByZXF1aXJlKFwiLi9zdWZmaXhcIik7XG5jb21wYW55LmFkamVjdGl2ZSA9IHJlcXVpcmUoXCIuL2FkamVjdGl2ZVwiKTtcbmNvbXBhbnkuZGVzY3JpcHRvciA9IHJlcXVpcmUoXCIuL2Rlc2NyaXB0b3JcIik7XG5jb21wYW55Lm5vdW4gPSByZXF1aXJlKFwiLi9ub3VuXCIpO1xuY29tcGFueS5ic192ZXJiID0gcmVxdWlyZShcIi4vYnNfdmVyYlwiKTtcbmNvbXBhbnkuYnNfYWRqZWN0aXZlID0gcmVxdWlyZShcIi4vYnNfYWRqZWN0aXZlXCIpO1xuY29tcGFueS5ic19ub3VuID0gcmVxdWlyZShcIi4vYnNfbm91blwiKTtcbmNvbXBhbnkubmFtZSA9IHJlcXVpcmUoXCIuL25hbWVcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7TmFtZS5sYXN0X25hbWV9ICN7c3VmZml4fVwiLFxuICBcIiN7TmFtZS5sYXN0X25hbWV9LSN7TmFtZS5sYXN0X25hbWV9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0sICN7TmFtZS5sYXN0X25hbWV9IGFuZCAje05hbWUubGFzdF9uYW1lfVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhYmlsaXR5XCIsXG4gIFwiYWNjZXNzXCIsXG4gIFwiYWRhcHRlclwiLFxuICBcImFsZ29yaXRobVwiLFxuICBcImFsbGlhbmNlXCIsXG4gIFwiYW5hbHl6ZXJcIixcbiAgXCJhcHBsaWNhdGlvblwiLFxuICBcImFwcHJvYWNoXCIsXG4gIFwiYXJjaGl0ZWN0dXJlXCIsXG4gIFwiYXJjaGl2ZVwiLFxuICBcImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIsXG4gIFwiYXJyYXlcIixcbiAgXCJhdHRpdHVkZVwiLFxuICBcImJlbmNobWFya1wiLFxuICBcImJ1ZGdldGFyeSBtYW5hZ2VtZW50XCIsXG4gIFwiY2FwYWJpbGl0eVwiLFxuICBcImNhcGFjaXR5XCIsXG4gIFwiY2hhbGxlbmdlXCIsXG4gIFwiY2lyY3VpdFwiLFxuICBcImNvbGxhYm9yYXRpb25cIixcbiAgXCJjb21wbGV4aXR5XCIsXG4gIFwiY29uY2VwdFwiLFxuICBcImNvbmdsb21lcmF0aW9uXCIsXG4gIFwiY29udGluZ2VuY3lcIixcbiAgXCJjb3JlXCIsXG4gIFwiY3VzdG9tZXIgbG95YWx0eVwiLFxuICBcImRhdGFiYXNlXCIsXG4gIFwiZGF0YS13YXJlaG91c2VcIixcbiAgXCJkZWZpbml0aW9uXCIsXG4gIFwiZW11bGF0aW9uXCIsXG4gIFwiZW5jb2RpbmdcIixcbiAgXCJlbmNyeXB0aW9uXCIsXG4gIFwiZXh0cmFuZXRcIixcbiAgXCJmaXJtd2FyZVwiLFxuICBcImZsZXhpYmlsaXR5XCIsXG4gIFwiZm9jdXMgZ3JvdXBcIixcbiAgXCJmb3JlY2FzdFwiLFxuICBcImZyYW1lXCIsXG4gIFwiZnJhbWV3b3JrXCIsXG4gIFwiZnVuY3Rpb25cIixcbiAgXCJmdW5jdGlvbmFsaXRpZXNcIixcbiAgXCJHcmFwaGljIEludGVyZmFjZVwiLFxuICBcImdyb3Vwd2FyZVwiLFxuICBcIkdyYXBoaWNhbCBVc2VyIEludGVyZmFjZVwiLFxuICBcImhhcmR3YXJlXCIsXG4gIFwiaGVscC1kZXNrXCIsXG4gIFwiaGllcmFyY2h5XCIsXG4gIFwiaHViXCIsXG4gIFwiaW1wbGVtZW50YXRpb25cIixcbiAgXCJpbmZvLW1lZGlhcmllc1wiLFxuICBcImluZnJhc3RydWN0dXJlXCIsXG4gIFwiaW5pdGlhdGl2ZVwiLFxuICBcImluc3RhbGxhdGlvblwiLFxuICBcImluc3RydWN0aW9uIHNldFwiLFxuICBcImludGVyZmFjZVwiLFxuICBcImludGVybmV0IHNvbHV0aW9uXCIsXG4gIFwiaW50cmFuZXRcIixcbiAgXCJrbm93bGVkZ2UgdXNlclwiLFxuICBcImtub3dsZWRnZSBiYXNlXCIsXG4gIFwibG9jYWwgYXJlYSBuZXR3b3JrXCIsXG4gIFwibGV2ZXJhZ2VcIixcbiAgXCJtYXRyaWNlc1wiLFxuICBcIm1hdHJpeFwiLFxuICBcIm1ldGhvZG9sb2d5XCIsXG4gIFwibWlkZGxld2FyZVwiLFxuICBcIm1pZ3JhdGlvblwiLFxuICBcIm1vZGVsXCIsXG4gIFwibW9kZXJhdG9yXCIsXG4gIFwibW9uaXRvcmluZ1wiLFxuICBcIm1vcmF0b3JpdW1cIixcbiAgXCJuZXVyYWwtbmV0XCIsXG4gIFwib3BlbiBhcmNoaXRlY3R1cmVcIixcbiAgXCJvcGVuIHN5c3RlbVwiLFxuICBcIm9yY2hlc3RyYXRpb25cIixcbiAgXCJwYXJhZGlnbVwiLFxuICBcInBhcmFsbGVsaXNtXCIsXG4gIFwicG9saWN5XCIsXG4gIFwicG9ydGFsXCIsXG4gIFwicHJpY2luZyBzdHJ1Y3R1cmVcIixcbiAgXCJwcm9jZXNzIGltcHJvdmVtZW50XCIsXG4gIFwicHJvZHVjdFwiLFxuICBcInByb2R1Y3Rpdml0eVwiLFxuICBcInByb2plY3RcIixcbiAgXCJwcm9qZWN0aW9uXCIsXG4gIFwicHJvdG9jb2xcIixcbiAgXCJzZWN1cmVkIGxpbmVcIixcbiAgXCJzZXJ2aWNlLWRlc2tcIixcbiAgXCJzb2Z0d2FyZVwiLFxuICBcInNvbHV0aW9uXCIsXG4gIFwic3RhbmRhcmRpemF0aW9uXCIsXG4gIFwic3RyYXRlZ3lcIixcbiAgXCJzdHJ1Y3R1cmVcIixcbiAgXCJzdWNjZXNzXCIsXG4gIFwic3VwZXJzdHJ1Y3R1cmVcIixcbiAgXCJzdXBwb3J0XCIsXG4gIFwic3luZXJneVwiLFxuICBcInN5c3RlbSBlbmdpbmVcIixcbiAgXCJ0YXNrLWZvcmNlXCIsXG4gIFwidGhyb3VnaHB1dFwiLFxuICBcInRpbWUtZnJhbWVcIixcbiAgXCJ0b29sc2V0XCIsXG4gIFwidXRpbGlzYXRpb25cIixcbiAgXCJ3ZWJzaXRlXCIsXG4gIFwid29ya2ZvcmNlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkluY1wiLFxuICBcImFuZCBTb25zXCIsXG4gIFwiTExDXCIsXG4gIFwiR3JvdXBcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzM0IyMtIyMjIyMjLSMjIyNML1wiLFxuICBcIi8zNyMjLSMjIyMjIy0jIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzMwWzAtNV0jLSMjIyMjIy0jIyNML1wiLFxuICBcIi8zNjgjLSMjIyMjIy0jIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNjAxMS0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjUjIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjRbNC05XSMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzYwMTEtNjIjIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjUjIy02MiMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NFs0LTldIy02MiMjLSMjIyMtIyMjIy0jIyNML1wiXG5dO1xuIiwidmFyIGNyZWRpdF9jYXJkID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNyZWRpdF9jYXJkO1xuY3JlZGl0X2NhcmQudmlzYSA9IHJlcXVpcmUoXCIuL3Zpc2FcIik7XG5jcmVkaXRfY2FyZC5tYXN0ZXJjYXJkID0gcmVxdWlyZShcIi4vbWFzdGVyY2FyZFwiKTtcbmNyZWRpdF9jYXJkLmRpc2NvdmVyID0gcmVxdWlyZShcIi4vZGlzY292ZXJcIik7XG5jcmVkaXRfY2FyZC5hbWVyaWNhbl9leHByZXNzID0gcmVxdWlyZShcIi4vYW1lcmljYW5fZXhwcmVzc1wiKTtcbmNyZWRpdF9jYXJkLmRpbmVyc19jbHViID0gcmVxdWlyZShcIi4vZGluZXJzX2NsdWJcIik7XG5jcmVkaXRfY2FyZC5qY2IgPSByZXF1aXJlKFwiLi9qY2JcIik7XG5jcmVkaXRfY2FyZC5zd2l0Y2ggPSByZXF1aXJlKFwiLi9zd2l0Y2hcIik7XG5jcmVkaXRfY2FyZC5zb2xvID0gcmVxdWlyZShcIi4vc29sb1wiKTtcbmNyZWRpdF9jYXJkLm1hZXN0cm8gPSByZXF1aXJlKFwiLi9tYWVzdHJvXCIpO1xuY3JlZGl0X2NhcmQubGFzZXIgPSByZXF1aXJlKFwiLi9sYXNlclwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzM1MjgtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzM1MjktIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzM1WzMtOF0jLSMjIyMtIyMjIy0jIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNjMwNCMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNjcwNiMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNjc3MSMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNjcwOSMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNjMwNCMjIyMjIyMjI3s1LDZ9TC9cIixcbiAgXCIvNjcwNiMjIyMjIyMjI3s1LDZ9TC9cIixcbiAgXCIvNjc3MSMjIyMjIyMjI3s1LDZ9TC9cIixcbiAgXCIvNjcwOSMjIyMjIyMjI3s1LDZ9TC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzUwI3s5LDE2fUwvXCIsXG4gIFwiLzVbNi04XSN7OSwxNn1ML1wiLFxuICBcIi81NiMjezksMTZ9TC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzVbMS01XSMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NzcxLTg5IyMtIyMjIy0jIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNjc2Ny0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjc2Ny0jIyMjLSMjIyMtIyMjIy0jTC9cIixcbiAgXCIvNjc2Ny0jIyMjLSMjIyMtIyMjIy0jI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82NzU5LSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NzU5LSMjIyMtIyMjIy0jIyMjLSNML1wiLFxuICBcIi82NzU5LSMjIyMtIyMjIy0jIyMjLSMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzQjIyMjIyMjIyMjI0wvXCIsXG4gIFwiLzQjIyMtIyMjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcInV0ZjhfdW5pY29kZV9jaVwiLFxuICBcInV0ZjhfZ2VuZXJhbF9jaVwiLFxuICBcInV0ZjhfYmluXCIsXG4gIFwiYXNjaWlfYmluXCIsXG4gIFwiYXNjaWlfZ2VuZXJhbF9jaVwiLFxuICBcImNwMTI1MF9iaW5cIixcbiAgXCJjcDEyNTBfZ2VuZXJhbF9jaVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJpZFwiLFxuICBcInRpdGxlXCIsXG4gIFwibmFtZVwiLFxuICBcImVtYWlsXCIsXG4gIFwicGhvbmVcIixcbiAgXCJ0b2tlblwiLFxuICBcImdyb3VwXCIsXG4gIFwiY2F0ZWdvcnlcIixcbiAgXCJwYXNzd29yZFwiLFxuICBcImNvbW1lbnRcIixcbiAgXCJhdmF0YXJcIixcbiAgXCJzdGF0dXNcIixcbiAgXCJjcmVhdGVkQXRcIixcbiAgXCJ1cGRhdGVkQXRcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiSW5ub0RCXCIsXG4gIFwiTXlJU0FNXCIsXG4gIFwiTUVNT1JZXCIsXG4gIFwiQ1NWXCIsXG4gIFwiQkxBQ0tIT0xFXCIsXG4gIFwiQVJDSElWRVwiXG5dO1xuIiwidmFyIGRhdGFiYXNlID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGRhdGFiYXNlO1xuZGF0YWJhc2UuY29sbGF0aW9uID0gcmVxdWlyZShcIi4vY29sbGF0aW9uXCIpO1xuZGF0YWJhc2UuY29sdW1uID0gcmVxdWlyZShcIi4vY29sdW1uXCIpO1xuZGF0YWJhc2UuZW5naW5lID0gcmVxdWlyZShcIi4vZW5naW5lXCIpO1xuZGF0YWJhc2UudHlwZSA9IHJlcXVpcmUoXCIuL3R5cGVcIik7IiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJpbnRcIixcbiAgXCJ2YXJjaGFyXCIsXG4gIFwidGV4dFwiLFxuICBcImRhdGVcIixcbiAgXCJkYXRldGltZVwiLFxuICBcInRpbnlpbnRcIixcbiAgXCJ0aW1lXCIsXG4gIFwidGltZXN0YW1wXCIsXG4gIFwic21hbGxpbnRcIixcbiAgXCJtZWRpdW1pbnRcIixcbiAgXCJiaWdpbnRcIixcbiAgXCJkZWNpbWFsXCIsXG4gIFwiZmxvYXRcIixcbiAgXCJkb3VibGVcIixcbiAgXCJyZWFsXCIsXG4gIFwiYml0XCIsXG4gIFwiYm9vbGVhblwiLFxuICBcInNlcmlhbFwiLFxuICBcImJsb2JcIixcbiAgXCJiaW5hcnlcIixcbiAgXCJlbnVtXCIsXG4gIFwic2V0XCIsXG4gIFwiZ2VvbWV0cnlcIixcbiAgXCJwb2ludFwiXG5dO1xuIiwidmFyIGRhdGUgPSB7fTtcbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBkYXRlO1xuZGF0ZS5tb250aCA9IHJlcXVpcmUoXCIuL21vbnRoXCIpO1xuZGF0ZS53ZWVrZGF5ID0gcmVxdWlyZShcIi4vd2Vla2RheVwiKTtcbiIsIi8vIFNvdXJjZTogaHR0cDovL3VuaWNvZGUub3JnL2NsZHIvdHJhYy9icm93c2VyL3RhZ3MvcmVsZWFzZS0yNy9jb21tb24vbWFpbi9lbi54bWwjTDE3OTlcbm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIHdpZGU6IFtcbiAgICBcIkphbnVhcnlcIixcbiAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgXCJNYXJjaFwiLFxuICAgIFwiQXByaWxcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuZVwiLFxuICAgIFwiSnVseVwiLFxuICAgIFwiQXVndXN0XCIsXG4gICAgXCJTZXB0ZW1iZXJcIixcbiAgICBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsXG4gICAgXCJEZWNlbWJlclwiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwid2lkZV9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcIndpZGVcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgd2lkZV9jb250ZXh0OiBbXG4gICAgXCJKYW51YXJ5XCIsXG4gICAgXCJGZWJydWFyeVwiLFxuICAgIFwiTWFyY2hcIixcbiAgICBcIkFwcmlsXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1bmVcIixcbiAgICBcIkp1bHlcIixcbiAgICBcIkF1Z3VzdFwiLFxuICAgIFwiU2VwdGVtYmVyXCIsXG4gICAgXCJPY3RvYmVyXCIsXG4gICAgXCJOb3ZlbWJlclwiLFxuICAgIFwiRGVjZW1iZXJcIlxuICBdLFxuICBhYmJyOiBbXG4gICAgXCJKYW5cIixcbiAgICBcIkZlYlwiLFxuICAgIFwiTWFyXCIsXG4gICAgXCJBcHJcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuXCIsXG4gICAgXCJKdWxcIixcbiAgICBcIkF1Z1wiLFxuICAgIFwiU2VwXCIsXG4gICAgXCJPY3RcIixcbiAgICBcIk5vdlwiLFxuICAgIFwiRGVjXCJcbiAgXSxcbiAgLy8gUHJvcGVydHkgXCJhYmJyX2NvbnRleHRcIiBpcyBvcHRpb25hbCwgaWYgbm90IHNldCB0aGVuIFwiYWJiclwiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gIC8vIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdvcmQgaW4gY29udGV4dCwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIGEgc3RhbmQtYWxvbmUgd29yZFxuICBhYmJyX2NvbnRleHQ6IFtcbiAgICBcIkphblwiLFxuICAgIFwiRmViXCIsXG4gICAgXCJNYXJcIixcbiAgICBcIkFwclwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5cIixcbiAgICBcIkp1bFwiLFxuICAgIFwiQXVnXCIsXG4gICAgXCJTZXBcIixcbiAgICBcIk9jdFwiLFxuICAgIFwiTm92XCIsXG4gICAgXCJEZWNcIlxuICBdXG59O1xuIiwiLy8gU291cmNlOiBodHRwOi8vdW5pY29kZS5vcmcvY2xkci90cmFjL2Jyb3dzZXIvdGFncy9yZWxlYXNlLTI3L2NvbW1vbi9tYWluL2VuLnhtbCNMMTg0N1xubW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgd2lkZTogW1xuICAgIFwiU3VuZGF5XCIsXG4gICAgXCJNb25kYXlcIixcbiAgICBcIlR1ZXNkYXlcIixcbiAgICBcIldlZG5lc2RheVwiLFxuICAgIFwiVGh1cnNkYXlcIixcbiAgICBcIkZyaWRheVwiLFxuICAgIFwiU2F0dXJkYXlcIlxuICBdLFxuICAvLyBQcm9wZXJ0eSBcIndpZGVfY29udGV4dFwiIGlzIG9wdGlvbmFsLCBpZiBub3Qgc2V0IHRoZW4gXCJ3aWRlXCIgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgLy8gSXQgaXMgdXNlZCB0byBzcGVjaWZ5IGEgd29yZCBpbiBjb250ZXh0LCB3aGljaCBtYXkgZGlmZmVyIGZyb20gYSBzdGFuZC1hbG9uZSB3b3JkXG4gIHdpZGVfY29udGV4dDogW1xuICAgIFwiU3VuZGF5XCIsXG4gICAgXCJNb25kYXlcIixcbiAgICBcIlR1ZXNkYXlcIixcbiAgICBcIldlZG5lc2RheVwiLFxuICAgIFwiVGh1cnNkYXlcIixcbiAgICBcIkZyaWRheVwiLFxuICAgIFwiU2F0dXJkYXlcIlxuICBdLFxuICBhYmJyOiBbXG4gICAgXCJTdW5cIixcbiAgICBcIk1vblwiLFxuICAgIFwiVHVlXCIsXG4gICAgXCJXZWRcIixcbiAgICBcIlRodVwiLFxuICAgIFwiRnJpXCIsXG4gICAgXCJTYXRcIlxuICBdLFxuICAvLyBQcm9wZXJ0eSBcImFiYnJfY29udGV4dFwiIGlzIG9wdGlvbmFsLCBpZiBub3Qgc2V0IHRoZW4gXCJhYmJyXCIgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgLy8gSXQgaXMgdXNlZCB0byBzcGVjaWZ5IGEgd29yZCBpbiBjb250ZXh0LCB3aGljaCBtYXkgZGlmZmVyIGZyb20gYSBzdGFuZC1hbG9uZSB3b3JkXG4gIGFiYnJfY29udGV4dDogW1xuICAgIFwiU3VuXCIsXG4gICAgXCJNb25cIixcbiAgICBcIlR1ZVwiLFxuICAgIFwiV2VkXCIsXG4gICAgXCJUaHVcIixcbiAgICBcIkZyaVwiLFxuICAgIFwiU2F0XCJcbiAgXVxufTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQ2hlY2tpbmdcIixcbiAgXCJTYXZpbmdzXCIsXG4gIFwiTW9uZXkgTWFya2V0XCIsXG4gIFwiSW52ZXN0bWVudFwiLFxuICBcIkhvbWUgTG9hblwiLFxuICBcIkNyZWRpdCBDYXJkXCIsXG4gIFwiQXV0byBMb2FuXCIsXG4gIFwiUGVyc29uYWwgTG9hblwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgXCJVQUUgRGlyaGFtXCI6IHtcbiAgICBcImNvZGVcIjogXCJBRURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQWZnaGFuaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQUZOXCIsXG4gICAgXCJzeW1ib2xcIjogXCLYi1wiXG4gIH0sXG4gIFwiTGVrXCI6IHtcbiAgICBcImNvZGVcIjogXCJBTExcIixcbiAgICBcInN5bWJvbFwiOiBcIkxla1wiXG4gIH0sXG4gIFwiQXJtZW5pYW4gRHJhbVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQU1EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk5ldGhlcmxhbmRzIEFudGlsbGlhbiBHdWlsZGVyXCI6IHtcbiAgICBcImNvZGVcIjogXCJBTkdcIixcbiAgICBcInN5bWJvbFwiOiBcIsaSXCJcbiAgfSxcbiAgXCJLd2FuemFcIjoge1xuICAgIFwiY29kZVwiOiBcIkFPQVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJBcmdlbnRpbmUgUGVzb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQVJTXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJBdXN0cmFsaWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQVVEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJBcnViYW4gR3VpbGRlclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQVdHXCIsXG4gICAgXCJzeW1ib2xcIjogXCLGklwiXG4gIH0sXG4gIFwiQXplcmJhaWphbmlhbiBNYW5hdFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQVpOXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQvNCw0L1cIlxuICB9LFxuICBcIkNvbnZlcnRpYmxlIE1hcmtzXCI6IHtcbiAgICBcImNvZGVcIjogXCJCQU1cIixcbiAgICBcInN5bWJvbFwiOiBcIktNXCJcbiAgfSxcbiAgXCJCYXJiYWRvcyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJCRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiVGFrYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkRUXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJ1bGdhcmlhbiBMZXZcIjoge1xuICAgIFwiY29kZVwiOiBcIkJHTlwiLFxuICAgIFwic3ltYm9sXCI6IFwi0LvQslwiXG4gIH0sXG4gIFwiQmFocmFpbmkgRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJIRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCdXJ1bmRpIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJCSUZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQmVybXVkaWFuIERvbGxhciAoY3VzdG9tYXJpbHkga25vd24gYXMgQmVybXVkYSBEb2xsYXIpXCI6IHtcbiAgICBcImNvZGVcIjogXCJCTURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkJydW5laSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJORFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQm9saXZpYW5vIE12ZG9sXCI6IHtcbiAgICBcImNvZGVcIjogXCJCT0IgQk9WXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkYlwiXG4gIH0sXG4gIFwiQnJhemlsaWFuIFJlYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIkJSTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiUiRcIlxuICB9LFxuICBcIkJhaGFtaWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQlNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJQdWxhXCI6IHtcbiAgICBcImNvZGVcIjogXCJCV1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlBcIlxuICB9LFxuICBcIkJlbGFydXNzaWFuIFJ1YmxlXCI6IHtcbiAgICBcImNvZGVcIjogXCJCWVJcIixcbiAgICBcInN5bWJvbFwiOiBcInAuXCJcbiAgfSxcbiAgXCJCZWxpemUgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCWkRcIixcbiAgICBcInN5bWJvbFwiOiBcIkJaJFwiXG4gIH0sXG4gIFwiQ2FuYWRpYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJDQURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkNvbmdvbGVzZSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ0RGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlN3aXNzIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJDSEZcIixcbiAgICBcInN5bWJvbFwiOiBcIkNIRlwiXG4gIH0sXG4gIFwiQ2hpbGVhbiBQZXNvIFVuaWRhZGVzIGRlIGZvbWVudG9cIjoge1xuICAgIFwiY29kZVwiOiBcIkNMUCBDTEZcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIll1YW4gUmVubWluYmlcIjoge1xuICAgIFwiY29kZVwiOiBcIkNOWVwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqVcIlxuICB9LFxuICBcIkNvbG9tYmlhbiBQZXNvIFVuaWRhZCBkZSBWYWxvciBSZWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJDT1AgQ09VXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJDb3N0YSBSaWNhbiBDb2xvblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ1JDXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqFcIlxuICB9LFxuICBcIkN1YmFuIFBlc28gUGVzbyBDb252ZXJ0aWJsZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ1VQIENVQ1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKxXCJcbiAgfSxcbiAgXCJDYXBlIFZlcmRlIEVzY3Vkb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ1ZFXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkN6ZWNoIEtvcnVuYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ1pLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJLxI1cIlxuICB9LFxuICBcIkRqaWJvdXRpIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJESkZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRGFuaXNoIEtyb25lXCI6IHtcbiAgICBcImNvZGVcIjogXCJES0tcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJEb21pbmljYW4gUGVzb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiRE9QXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSRCRcIlxuICB9LFxuICBcIkFsZ2VyaWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJEWkRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiS3Jvb25cIjoge1xuICAgIFwiY29kZVwiOiBcIkVFS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFZ3lwdGlhbiBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRUdQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTmFrZmFcIjoge1xuICAgIFwiY29kZVwiOiBcIkVSTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdGhpb3BpYW4gQmlyclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRVRCXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV1cm9cIjoge1xuICAgIFwiY29kZVwiOiBcIkVVUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKsXCJcbiAgfSxcbiAgXCJGaWppIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRkpEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJGYWxrbGFuZCBJc2xhbmRzIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJGS1BcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJQb3VuZCBTdGVybGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0JQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTGFyaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0VMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNlZGlcIjoge1xuICAgIFwiY29kZVwiOiBcIkdIU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJHaWJyYWx0YXIgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIkdJUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIkRhbGFzaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR01EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkd1aW5lYSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiR05GXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlF1ZXR6YWxcIjoge1xuICAgIFwiY29kZVwiOiBcIkdUUVwiLFxuICAgIFwic3ltYm9sXCI6IFwiUVwiXG4gIH0sXG4gIFwiR3V5YW5hIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR1lEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJIb25nIEtvbmcgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJIS0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkxlbXBpcmFcIjoge1xuICAgIFwiY29kZVwiOiBcIkhOTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTFwiXG4gIH0sXG4gIFwiQ3JvYXRpYW4gS3VuYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSFJLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJrblwiXG4gIH0sXG4gIFwiR291cmRlIFVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSFRHIFVTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJGb3JpbnRcIjoge1xuICAgIFwiY29kZVwiOiBcIkhVRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiRnRcIlxuICB9LFxuICBcIlJ1cGlhaFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSURSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJScFwiXG4gIH0sXG4gIFwiTmV3IElzcmFlbGkgU2hlcWVsXCI6IHtcbiAgICBcImNvZGVcIjogXCJJTFNcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqlwiXG4gIH0sXG4gIFwiSW5kaWFuIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJJTlJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSW5kaWFuIFJ1cGVlIE5ndWx0cnVtXCI6IHtcbiAgICBcImNvZGVcIjogXCJJTlIgQlROXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIklyYXFpIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJJUURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSXJhbmlhbiBSaWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJJUlJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiSWNlbGFuZCBLcm9uYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSVNLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJrclwiXG4gIH0sXG4gIFwiSmFtYWljYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJKTURcIixcbiAgICBcInN5bWJvbFwiOiBcIkokXCJcbiAgfSxcbiAgXCJKb3JkYW5pYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkpPRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJZZW5cIjoge1xuICAgIFwiY29kZVwiOiBcIkpQWVwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqVcIlxuICB9LFxuICBcIktlbnlhbiBTaGlsbGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiS0VTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlNvbVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS0dTXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJSaWVsXCI6IHtcbiAgICBcImNvZGVcIjogXCJLSFJcIixcbiAgICBcInN5bWJvbFwiOiBcIuGfm1wiXG4gIH0sXG4gIFwiQ29tb3JvIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJLTUZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTm9ydGggS29yZWFuIFdvblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1BXXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqlcIlxuICB9LFxuICBcIldvblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1JXXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqlcIlxuICB9LFxuICBcIkt1d2FpdGkgRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIktXRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDYXltYW4gSXNsYW5kcyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIktZRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiVGVuZ2VcIjoge1xuICAgIFwiY29kZVwiOiBcIktaVFwiLFxuICAgIFwic3ltYm9sXCI6IFwi0LvQslwiXG4gIH0sXG4gIFwiS2lwXCI6IHtcbiAgICBcImNvZGVcIjogXCJMQUtcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCrVwiXG4gIH0sXG4gIFwiTGViYW5lc2UgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIkxCUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIlNyaSBMYW5rYSBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTEtSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIkxpYmVyaWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTFJEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJMaXRodWFuaWFuIExpdGFzXCI6IHtcbiAgICBcImNvZGVcIjogXCJMVExcIixcbiAgICBcInN5bWJvbFwiOiBcIkx0XCJcbiAgfSxcbiAgXCJMYXR2aWFuIExhdHNcIjoge1xuICAgIFwiY29kZVwiOiBcIkxWTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTHNcIlxuICB9LFxuICBcIkxpYnlhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTFlEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1vcm9jY2FuIERpcmhhbVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTUFEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1vbGRvdmFuIExldVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTURMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1hbGFnYXN5IEFyaWFyeVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTUdBXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkRlbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJNS0RcIixcbiAgICBcInN5bWJvbFwiOiBcItC00LXQvVwiXG4gIH0sXG4gIFwiS3lhdFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTU1LXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlR1Z3Jpa1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTU5UXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigq5cIlxuICB9LFxuICBcIlBhdGFjYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTU9QXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk91Z3VpeWFcIjoge1xuICAgIFwiY29kZVwiOiBcIk1ST1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNYXVyaXRpdXMgUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIk1VUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJSdWZpeWFhXCI6IHtcbiAgICBcImNvZGVcIjogXCJNVlJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiS3dhY2hhXCI6IHtcbiAgICBcImNvZGVcIjogXCJNV0tcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTWV4aWNhbiBQZXNvIE1leGljYW4gVW5pZGFkIGRlIEludmVyc2lvbiAoVURJKVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVhOIE1YVlwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiTWFsYXlzaWFuIFJpbmdnaXRcIjoge1xuICAgIFwiY29kZVwiOiBcIk1ZUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiUk1cIlxuICB9LFxuICBcIk1ldGljYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIk1aTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiTVRcIlxuICB9LFxuICBcIk5haXJhXCI6IHtcbiAgICBcImNvZGVcIjogXCJOR05cIixcbiAgICBcInN5bWJvbFwiOiBcIuKCplwiXG4gIH0sXG4gIFwiQ29yZG9iYSBPcm9cIjoge1xuICAgIFwiY29kZVwiOiBcIk5JT1wiLFxuICAgIFwic3ltYm9sXCI6IFwiQyRcIlxuICB9LFxuICBcIk5vcndlZ2lhbiBLcm9uZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTk9LXCIsXG4gICAgXCJzeW1ib2xcIjogXCJrclwiXG4gIH0sXG4gIFwiTmVwYWxlc2UgUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIk5QUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJOZXcgWmVhbGFuZCBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIk5aRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiUmlhbCBPbWFuaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiT01SXCIsXG4gICAgXCJzeW1ib2xcIjogXCLvt7xcIlxuICB9LFxuICBcIkJhbGJvYSBVUyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlBBQiBVU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIkIvLlwiXG4gIH0sXG4gIFwiTnVldm8gU29sXCI6IHtcbiAgICBcImNvZGVcIjogXCJQRU5cIixcbiAgICBcInN5bWJvbFwiOiBcIlMvLlwiXG4gIH0sXG4gIFwiS2luYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEdLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlBoaWxpcHBpbmUgUGVzb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEhQXCIsXG4gICAgXCJzeW1ib2xcIjogXCJQaHBcIlxuICB9LFxuICBcIlBha2lzdGFuIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJQS1JcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiWmxvdHlcIjoge1xuICAgIFwiY29kZVwiOiBcIlBMTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiesWCXCJcbiAgfSxcbiAgXCJHdWFyYW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJQWUdcIixcbiAgICBcInN5bWJvbFwiOiBcIkdzXCJcbiAgfSxcbiAgXCJRYXRhcmkgUmlhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUUFSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLvt7xcIlxuICB9LFxuICBcIk5ldyBMZXVcIjoge1xuICAgIFwiY29kZVwiOiBcIlJPTlwiLFxuICAgIFwic3ltYm9sXCI6IFwibGVpXCJcbiAgfSxcbiAgXCJTZXJiaWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJSU0RcIixcbiAgICBcInN5bWJvbFwiOiBcItCU0LjQvS5cIlxuICB9LFxuICBcIlJ1c3NpYW4gUnVibGVcIjoge1xuICAgIFwiY29kZVwiOiBcIlJVQlwiLFxuICAgIFwic3ltYm9sXCI6IFwi0YDRg9CxXCJcbiAgfSxcbiAgXCJSd2FuZGEgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIlJXRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTYXVkaSBSaXlhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0FSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLvt7xcIlxuICB9LFxuICBcIlNvbG9tb24gSXNsYW5kcyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNCRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiU2V5Y2hlbGxlcyBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0NSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIlN1ZGFuZXNlIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJTREdcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU3dlZGlzaCBLcm9uYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0VLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJrclwiXG4gIH0sXG4gIFwiU2luZ2Fwb3JlIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0dEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTYWludCBIZWxlbmEgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIlNIUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIkxlb25lXCI6IHtcbiAgICBcImNvZGVcIjogXCJTTExcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU29tYWxpIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJTT1NcIixcbiAgICBcInN5bWJvbFwiOiBcIlNcIlxuICB9LFxuICBcIlN1cmluYW0gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJTUkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkRvYnJhXCI6IHtcbiAgICBcImNvZGVcIjogXCJTVERcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRWwgU2FsdmFkb3IgQ29sb24gVVMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJTVkMgVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTeXJpYW4gUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIlNZUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIkxpbGFuZ2VuaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1pMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJhaHRcIjoge1xuICAgIFwiY29kZVwiOiBcIlRIQlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4Li/XCJcbiAgfSxcbiAgXCJTb21vbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIlRKU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNYW5hdFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVE1UXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlR1bmlzaWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJUTkRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUGEnYW5nYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVE9QXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlR1cmtpc2ggTGlyYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVFJZXCIsXG4gICAgXCJzeW1ib2xcIjogXCJUTFwiXG4gIH0sXG4gIFwiVHJpbmlkYWQgYW5kIFRvYmFnbyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlRURFwiLFxuICAgIFwic3ltYm9sXCI6IFwiVFQkXCJcbiAgfSxcbiAgXCJOZXcgVGFpd2FuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVFdEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJOVCRcIlxuICB9LFxuICBcIlRhbnphbmlhbiBTaGlsbGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVFpTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkhyeXZuaWFcIjoge1xuICAgIFwiY29kZVwiOiBcIlVBSFwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oK0XCJcbiAgfSxcbiAgXCJVZ2FuZGEgU2hpbGxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIlVHWFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJVUyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlVTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiUGVzbyBVcnVndWF5byBVcnVndWF5IFBlc28gZW4gVW5pZGFkZXMgSW5kZXhhZGFzXCI6IHtcbiAgICBcImNvZGVcIjogXCJVWVUgVVlJXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkVVwiXG4gIH0sXG4gIFwiVXpiZWtpc3RhbiBTdW1cIjoge1xuICAgIFwiY29kZVwiOiBcIlVaU1wiLFxuICAgIFwic3ltYm9sXCI6IFwi0LvQslwiXG4gIH0sXG4gIFwiQm9saXZhciBGdWVydGVcIjoge1xuICAgIFwiY29kZVwiOiBcIlZFRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiQnNcIlxuICB9LFxuICBcIkRvbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIlZORFwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKrXCJcbiAgfSxcbiAgXCJWYXR1XCI6IHtcbiAgICBcImNvZGVcIjogXCJWVVZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVGFsYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiV1NUXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNGQSBGcmFuYyBCRUFDXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQUZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU2lsdmVyXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQUdcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiR29sZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEFVXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJvbmQgTWFya2V0cyBVbml0cyBFdXJvcGVhbiBDb21wb3NpdGUgVW5pdCAoRVVSQ08pXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQkFcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXVyb3BlYW4gTW9uZXRhcnkgVW5pdCAoRS5NLlUuLTYpXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQkJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXVyb3BlYW4gVW5pdCBvZiBBY2NvdW50IDkoRS5VLkEuLTkpXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQkNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXVyb3BlYW4gVW5pdCBvZiBBY2NvdW50IDE3KEUuVS5BLi0xNylcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFYXN0IENhcmliYmVhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlhDRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiU0RSXCI6IHtcbiAgICBcImNvZGVcIjogXCJYRFJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVUlDLUZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJYRlVcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ0ZBIEZyYW5jIEJDRUFPXCI6IHtcbiAgICBcImNvZGVcIjogXCJYT0ZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUGFsbGFkaXVtXCI6IHtcbiAgICBcImNvZGVcIjogXCJYUERcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ0ZQIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJYUEZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUGxhdGludW1cIjoge1xuICAgIFwiY29kZVwiOiBcIlhQVFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDb2RlcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHRlc3RpbmcgcHVycG9zZXNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhUU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJZZW1lbmkgUmlhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWUVSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLvt7xcIlxuICB9LFxuICBcIlJhbmRcIjoge1xuICAgIFwiY29kZVwiOiBcIlpBUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiUlwiXG4gIH0sXG4gIFwiUmFuZCBMb3RpXCI6IHtcbiAgICBcImNvZGVcIjogXCJaQVIgTFNMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlJhbmQgTmFtaWJpYSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlpBUiBOQURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiWmFtYmlhbiBLd2FjaGFcIjoge1xuICAgIFwiY29kZVwiOiBcIlpNS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJaaW1iYWJ3ZSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlpXTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfVxufTtcbiIsInZhciBmaW5hbmNlID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGZpbmFuY2U7XG5maW5hbmNlLmFjY291bnRfdHlwZSA9IHJlcXVpcmUoXCIuL2FjY291bnRfdHlwZVwiKTtcbmZpbmFuY2UudHJhbnNhY3Rpb25fdHlwZSA9IHJlcXVpcmUoXCIuL3RyYW5zYWN0aW9uX3R5cGVcIik7XG5maW5hbmNlLmN1cnJlbmN5ID0gcmVxdWlyZShcIi4vY3VycmVuY3lcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImRlcG9zaXRcIixcbiAgXCJ3aXRoZHJhd2FsXCIsXG4gIFwicGF5bWVudFwiLFxuICBcImludm9pY2VcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiVENQXCIsXG4gIFwiSFRUUFwiLFxuICBcIlNERFwiLFxuICBcIlJBTVwiLFxuICBcIkdCXCIsXG4gIFwiQ1NTXCIsXG4gIFwiU1NMXCIsXG4gIFwiQUdQXCIsXG4gIFwiU1FMXCIsXG4gIFwiRlRQXCIsXG4gIFwiUENJXCIsXG4gIFwiQUlcIixcbiAgXCJBRFBcIixcbiAgXCJSU1NcIixcbiAgXCJYTUxcIixcbiAgXCJFWEVcIixcbiAgXCJDT01cIixcbiAgXCJIRERcIixcbiAgXCJUSFhcIixcbiAgXCJTTVRQXCIsXG4gIFwiU01TXCIsXG4gIFwiVVNCXCIsXG4gIFwiUE5HXCIsXG4gIFwiU0FTXCIsXG4gIFwiSUJcIixcbiAgXCJTQ1NJXCIsXG4gIFwiSlNPTlwiLFxuICBcIlhTU1wiLFxuICBcIkpCT0RcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYXV4aWxpYXJ5XCIsXG4gIFwicHJpbWFyeVwiLFxuICBcImJhY2stZW5kXCIsXG4gIFwiZGlnaXRhbFwiLFxuICBcIm9wZW4tc291cmNlXCIsXG4gIFwidmlydHVhbFwiLFxuICBcImNyb3NzLXBsYXRmb3JtXCIsXG4gIFwicmVkdW5kYW50XCIsXG4gIFwib25saW5lXCIsXG4gIFwiaGFwdGljXCIsXG4gIFwibXVsdGktYnl0ZVwiLFxuICBcImJsdWV0b290aFwiLFxuICBcIndpcmVsZXNzXCIsXG4gIFwiMTA4MHBcIixcbiAgXCJuZXVyYWxcIixcbiAgXCJvcHRpY2FsXCIsXG4gIFwic29saWQgc3RhdGVcIixcbiAgXCJtb2JpbGVcIlxuXTtcbiIsInZhciBoYWNrZXIgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gaGFja2VyO1xuaGFja2VyLmFiYnJldmlhdGlvbiA9IHJlcXVpcmUoXCIuL2FiYnJldmlhdGlvblwiKTtcbmhhY2tlci5hZGplY3RpdmUgPSByZXF1aXJlKFwiLi9hZGplY3RpdmVcIik7XG5oYWNrZXIubm91biA9IHJlcXVpcmUoXCIuL25vdW5cIik7XG5oYWNrZXIudmVyYiA9IHJlcXVpcmUoXCIuL3ZlcmJcIik7XG5oYWNrZXIuaW5ndmVyYiA9IHJlcXVpcmUoXCIuL2luZ3ZlcmJcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImJhY2tpbmcgdXBcIixcbiAgXCJieXBhc3NpbmdcIixcbiAgXCJoYWNraW5nXCIsXG4gIFwib3ZlcnJpZGluZ1wiLFxuICBcImNvbXByZXNzaW5nXCIsXG4gIFwiY29weWluZ1wiLFxuICBcIm5hdmlnYXRpbmdcIixcbiAgXCJpbmRleGluZ1wiLFxuICBcImNvbm5lY3RpbmdcIixcbiAgXCJnZW5lcmF0aW5nXCIsXG4gIFwicXVhbnRpZnlpbmdcIixcbiAgXCJjYWxjdWxhdGluZ1wiLFxuICBcInN5bnRoZXNpemluZ1wiLFxuICBcInRyYW5zbWl0dGluZ1wiLFxuICBcInByb2dyYW1taW5nXCIsXG4gIFwicGFyc2luZ1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJkcml2ZXJcIixcbiAgXCJwcm90b2NvbFwiLFxuICBcImJhbmR3aWR0aFwiLFxuICBcInBhbmVsXCIsXG4gIFwibWljcm9jaGlwXCIsXG4gIFwicHJvZ3JhbVwiLFxuICBcInBvcnRcIixcbiAgXCJjYXJkXCIsXG4gIFwiYXJyYXlcIixcbiAgXCJpbnRlcmZhY2VcIixcbiAgXCJzeXN0ZW1cIixcbiAgXCJzZW5zb3JcIixcbiAgXCJmaXJld2FsbFwiLFxuICBcImhhcmQgZHJpdmVcIixcbiAgXCJwaXhlbFwiLFxuICBcImFsYXJtXCIsXG4gIFwiZmVlZFwiLFxuICBcIm1vbml0b3JcIixcbiAgXCJhcHBsaWNhdGlvblwiLFxuICBcInRyYW5zbWl0dGVyXCIsXG4gIFwiYnVzXCIsXG4gIFwiY2lyY3VpdFwiLFxuICBcImNhcGFjaXRvclwiLFxuICBcIm1hdHJpeFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJiYWNrIHVwXCIsXG4gIFwiYnlwYXNzXCIsXG4gIFwiaGFja1wiLFxuICBcIm92ZXJyaWRlXCIsXG4gIFwiY29tcHJlc3NcIixcbiAgXCJjb3B5XCIsXG4gIFwibmF2aWdhdGVcIixcbiAgXCJpbmRleFwiLFxuICBcImNvbm5lY3RcIixcbiAgXCJnZW5lcmF0ZVwiLFxuICBcInF1YW50aWZ5XCIsXG4gIFwiY2FsY3VsYXRlXCIsXG4gIFwic3ludGhlc2l6ZVwiLFxuICBcImlucHV0XCIsXG4gIFwidHJhbnNtaXRcIixcbiAgXCJwcm9ncmFtXCIsXG4gIFwicmVib290XCIsXG4gIFwicGFyc2VcIlxuXTtcbiIsInZhciBlbiA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBlbjtcbmVuLnRpdGxlID0gXCJFbmdsaXNoXCI7XG5lbi5zZXBhcmF0b3IgPSBcIiAmIFwiO1xuZW4uYWRkcmVzcyA9IHJlcXVpcmUoXCIuL2FkZHJlc3NcIik7XG5lbi5jcmVkaXRfY2FyZCA9IHJlcXVpcmUoXCIuL2NyZWRpdF9jYXJkXCIpO1xuZW4uY29tcGFueSA9IHJlcXVpcmUoXCIuL2NvbXBhbnlcIik7XG5lbi5pbnRlcm5ldCA9IHJlcXVpcmUoXCIuL2ludGVybmV0XCIpO1xuZW4uZGF0YWJhc2UgPSByZXF1aXJlKFwiLi9kYXRhYmFzZVwiKTtcbmVuLmxvcmVtID0gcmVxdWlyZShcIi4vbG9yZW1cIik7XG5lbi5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbmVuLnBob25lX251bWJlciA9IHJlcXVpcmUoXCIuL3Bob25lX251bWJlclwiKTtcbmVuLmNlbGxfcGhvbmUgPSByZXF1aXJlKFwiLi9jZWxsX3Bob25lXCIpO1xuZW4uYnVzaW5lc3MgPSByZXF1aXJlKFwiLi9idXNpbmVzc1wiKTtcbmVuLmNvbW1lcmNlID0gcmVxdWlyZShcIi4vY29tbWVyY2VcIik7XG5lbi50ZWFtID0gcmVxdWlyZShcIi4vdGVhbVwiKTtcbmVuLmhhY2tlciA9IHJlcXVpcmUoXCIuL2hhY2tlclwiKTtcbmVuLmFwcCA9IHJlcXVpcmUoXCIuL2FwcFwiKTtcbmVuLmZpbmFuY2UgPSByZXF1aXJlKFwiLi9maW5hbmNlXCIpO1xuZW4uZGF0ZSA9IHJlcXVpcmUoXCIuL2RhdGVcIik7XG5lbi5zeXN0ZW0gPSByZXF1aXJlKFwiLi9zeXN0ZW1cIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFyamFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21haGRpZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcHJheWFnYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydXppbmF2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1NreWhhcnRtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW9zY296LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1cmFmaXJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzkxYmlsYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWdvcmdhcnliYWxkaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYWxlYm9nZGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbHlraGludi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2VsaGVsaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VzaHNvbGl0YXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvcmV5d2ViLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nub3dzaGFkZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmV1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob2xkZW53ZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGV5aW1qdWFuaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbnZleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91bnRlcmRyZWh0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbGxlZ2VtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVlamZhbmNoZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5keWlzb25saW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3VsdHJhZ2V4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Z1Y2tfeW91X3R3by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGVsbGVjaGFybGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0ZW5ldXBvcHVsYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWhtZXRhbHBiYWxrYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU3RpZXZpdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2VyZW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3N2YWxkYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5nZWxjZWJhbGxvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGllcnJ5a29ibGVudHovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0ZXJsYW5kdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXRhcmluby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWdsb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhbmRjbGF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FobWV0c3VsZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmljb2xhc2ZvbGxpb3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamF5cm9iaW5zb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yZXJpeG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvbGFnZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoemVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtqZW5raW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY29sYWlfbGFyc2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25veGR6aW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsYWdvb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWRpb3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWl6a28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhZGVuZ2xlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211dGx1ODIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2ltb2JlbnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZvY2luby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndWlpaXBvbnRlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3lqYXZpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2hhdXN0aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9tYXNsYXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvVmluVGhvbWFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL01hbmlrUmF0aGVlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhbmdhdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2Vtc2hpZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWVtdW5yb2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3NoYWhlZGsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW5kYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9CaWxsU0tlbm5leS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaXZ5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NoaGVtc2xleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaW5kcmVzb3JodXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc29mZmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzlsZXNzb25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpbnV4MjkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQ2hha2ludG9zaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmFhbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9yZWlyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFkZWVkOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY290dGtjbGFyay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZWRicmlkZ2VzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbGxlZWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJha2FzaW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaWlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0JyaWFuUHVya2lzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsbWFydGluaG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVibGllbmtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RldmFua29zaGFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1phY2hhcnlab3JiYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltbWlsbHdvb2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaHVhc29ydGluby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW1lbmxlZXR1cmtzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvbWFzX2phbm91c2VrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcnJoYWFzZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9SdXNzZWxsQmlzaG9wLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYWplc2h3YXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2JyYWNjby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJtb25wYWludGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FiZHVsbGluZGVuaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNhY29zdGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VwcmIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWFsb3poa2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYW5kbGVydmR3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbWdhcnRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL192aWN0YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb21tYWRlbGltaXRlZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb3liYXJiZXJ1ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9heGVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZsYWRhcmJhdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZmYmVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N5cm9waWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fua2l0aW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RyYW5lYmxvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mbGFzaG11cnBoeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9DaHJpc0ZhcmluYTc4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbGlvbWVnYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXNjaGFtdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbV9kZW5pcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbm9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZW5ueWFkci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGF0eXJrby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaW5neWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlcnJ5eGxpZmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWFyb25pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpbmRheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcnJzdG4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWR1YXJkb3N0dWFydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaGlsaXBzaXZhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0dhdmljb0luZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWlyZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9oaXh4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JpZ21hbmNoby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibGFrZXNpbWtpbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVlaWlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RqcnVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ViZXJzY2hpem8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3lsZWZvdW5kcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2xhdWRpb2d1Z2xpZXJpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpcHBsZW1kay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9leGVudHJpY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFrZW1vb3JlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvYW9lZHVtZWRlaXJvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb29ybWluaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXJlc2hlbmtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXJ5aWxtYXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGF5ZG5fd29vZHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVkZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sbHVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NnYXVyYXZfYmFnaGVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phbWllYnJpdHRhaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFkbGl0dGxlZHVjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waWZhZ29yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fncm9tb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVuZWZyaXR6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vyd2FuaGVzcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGllc2VsbGF3cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbWlhaGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29yaWRoYW5keS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFlbnNlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXdjb2hlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbWFjem55LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvbnphbG9yb2JhaW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hbmRpbmlfbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zeWRsYXdyZW5jZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZGhhcnJpc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RnZXJrZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGV3aXNhaW5zbGllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXJsaWVjd2FpdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9iYnNjaGlsbGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZsZXhycy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0ZGV0YWlscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYXF1ZWx3aWxzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2Fyc2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJtYXJ0aW5lYXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3Buc3JjZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZ2hhcnJ5Z28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF4aW1zZXNodWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXhhbGV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbWloYWgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhbnBvcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhcnZpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NlbWFycXVlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZWZmZmlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tyeXN0YWxmaXN0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9rZXNoX2NvZGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZWRhbWlhbmhkZXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHBtYWNoYWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Z1bndhdGVyY2F0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RpbW90aHljZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdmFuZmlsaXBvdmJnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpY2FyZDEwMi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjb2JhcmJvc2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3Jhc25vdWtob3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZzNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkZW1pbHRlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNrZHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3BlcmF0aW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1bmdpd2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2h1Z29tYW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvZ29yYWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RjX3VzZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG9yYWNpb2JlbGxhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1NsYWFwTWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVlcmFnaXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXFvbmljZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbHlhX3Blc3Rvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXdhcnJvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zc2lza2luZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0hlbnJ5SG9mZm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZHNhdW5kZXJzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkYW1zeHUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3VyaW91c29mZmljZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVtYWRyYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGlnYW5ncmFoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29oZXR0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNrZnJhdHRlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydW5uaW5nc2t1bGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkeXNvbmRlc2lnbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJlbnRvbl9jbGFya2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVubnlzaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYWRlbmhhbW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VydGluYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbWFucnV6YWluaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb3JleWhhZ2dhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvS2FyaW1tb3ZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fhcm9uYWxmcmVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3d0cnNsZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qaXRhY2hpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZXJlYWxtYXJ2aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG1laXNzbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29vb216LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWNreTE0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plc3NlZGR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYW5laHVkc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrbXVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0lzYXJ5QW1haXJhbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJ0aHVyaG9sY29tYmUxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JveG1vZGVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Voc2FuZGlhcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvTHVjYXNQZXJkaWRhby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFsdDBuaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd2FwbG9yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYWVsaWZhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BsYmFiaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3VpbGxlbWJvdGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJpbmRhbV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVuYnlyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGlhZ292ZXJuZXR0aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbWlsbHNwYXlzYmlsbHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlrZW1haTJhd2Vzb21lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcnZvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21la2FsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YTFleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JlcmdkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZlbGlwZWNzbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZWEyMTEwODcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2FyYW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rob295ZW5nYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYm92ZWZ1bmN0aW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BjcmlkZXNhZ2Fpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYW5kb21saWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0JyeWFuSG9yc2V5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hleWtlbm5ldGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFocGFycmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxsdGhpbmdzc21pdHR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnZlcm5vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXdlaW5yZWljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbmNyZWFzZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWx2YXJhZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbHhuZHJ1c3Rpbm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvdXVmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29ya3VuY2F5bGFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0FNX0tuMi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZWFycGl4ZWxzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jhc3NhbW9sb2d5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpbWFyZXRob21hcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb3NtYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU1VMaWlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yamFtZXNub2JsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaWx2YW5tdWhsZW1hbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhbmVJeEQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFjaG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWlnaXRwaW5hcmJhc2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnV6enVzYm9ybmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWFyb25rd2hpdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm1sZXdpc3VrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dpYW5jYXJsb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmJpcmNrZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZF9ubnlfbV9jaGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NkaWRvbmF0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdGFyaWJveS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYm90YXAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FyYWxlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wc2Rlc2lnbnVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2x1ZHdpY3pha3Bhd2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lbWFuamFpdmFub3ZpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWx1bGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWhtYWRham1pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Zvdmthc29sb3Zldi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW1ncm92ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVyaWVuem83NzcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9uYXRoYW5zaW1tb25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lbHNvbmpveWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1MwdWZpNG4zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3h0b3BoZXJwYXVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29ha3RyZWVtZWRpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXRlc2NodWx0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9maW5kaW5namVubnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFtYW5rcmVhdGl2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRvbnl6b3Rvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZV9zb2NpYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVlaGFtYmxleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb2xpZF9jb2xvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmVsY2FiYW5zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21iaWxkZXJiYWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2trdXNhYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3JkeXZkYm9vbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NnYXZpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVjaGtpbmF0b3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmMyNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZGJhbm5vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcm9ha3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VyaWJibGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlcmloZW5hcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2F0YWRlbGVvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nY21vcmxleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdWl2dnYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FzY2hhZHJvc3RlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvckR1YnVncmFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dpbnRvcGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRiaWxvdHRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RheWxvcmxpbmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVnZHJhd3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVsbjFrcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWhtb3VkbWV0d2FsbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2lsdmVyZWRnZTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVyZWtlYnJhZGxleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXBweXBldGVyMTk4My8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmF2aXNfYXJub2xkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FydGVtX2tvc3RlbmtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fkb2JpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RheWtpaW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWtfZGp1cmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NjaXBzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pZ3VlbG1lbmRlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdXN0aW5yaGVlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fsc29icm9va3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJvbngvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWNmbHlkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FudGlfdXJzby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGxmb3JkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RheXViZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVydGJvZXJsYW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcm9zaG9sbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbW5hYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jeW50aGlhc2F2YXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211cmluZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFucm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGllbWlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phY2tpZXNhaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWR1dWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudGphbnVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fyb29uX3NoYXJtYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kc2hzdGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZWhhY2tlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsYnJvb2tzanIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnlhbm1jbGF1Z2hsaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2x1YmIzcnJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RheWJlbmxvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94cmlwdW5vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9teWFzdHJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkaXR5YXN1dG9tby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWdpdGFsbWF2ZXJpY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGphcnRzdHJvcm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXRvbG1hY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmF1Z2hhbm1vZmZpdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJkb3RzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lzbmlmZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VyZ2V5c2Fmb25vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NyYXBkbmIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNtajgzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpdG9ybGVhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb2thbml3YWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3pha2kzZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbGx5em9yZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW9jYWJ5dGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3NtYW5pbmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rqc2hlcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZGhlbXBoaWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dhZ2huZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVjb2R5bWljb25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcmF2ZWVuX3ZpamF5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWJicnVjY2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJhdmlzaGluZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VsZGFya2FsdmlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0VsdF9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BoaWxsYXBpZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2tzZWFuamF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lkODM1NTU5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1ZHJldGtlc2tpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmpoZXJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1Y2s0ZnVjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY290dF9yaWxleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3VmYWxpYnJhaGltLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2gxYnJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jvcmdlc19tYXJjb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGV2aW5oYWxsYWRheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaWFyYW5yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZvb28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlrZWJlZWNoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9ueW1pbGxpb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaHVhcmFpY2h1ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcmFlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldHJhbmdyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RtaXRyaXljaHV0YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFybGllZ2Fubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmFzaG1hbnRlZ2hpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkaGFtZGFubmF3YXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWluc2xleXdhZ29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N2ZW5sZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFpc2FsYWJpZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXNodXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybHlzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHV0Y2huYWRpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZWRkeXpldHRlcmx1bmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FtdWVsa3JhZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW9pbWVkaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9kZHJldy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2RlcG9ldF9ydS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnR2YXZzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlbm9pdGJvdWNhcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9tYXJtZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29sbWFybG9wZXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JlYXJ0aW5jLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvbWthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhYm9yZW50b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9iaW5jbGVkaWVyZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXhpbXNvcm9raW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGxhc3RpY2luZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qMmRlbWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVhY2hhbmFuci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXBhbHVjY2lvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlX2FzY2FuaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlrYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF3aWR3dS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjb3JhbWlyZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5nZWxjcmVhdGl2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ycGF0ZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9wZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVoYXRrYXRodXJpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVfcHVycGxlYnVubnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvMW1hcmtpei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hamF4eV9ydS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmVubXVycmVsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdWRlc3RlaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3NrYXJsZXZpbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3JzdHViZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVoZnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljaXZhZGVsaW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlYW5kcm92YXJhbmRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0Z2FsbGFudC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3JfaGF5ZGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhd3JiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5aGFuaGFzc2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FtYXl2cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hX2JyaXhlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJvbGtyYWtvd2lha18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVya3VsYW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlcmFuNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZ2dhdXJhdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc193aXRrby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb3Nvc2luYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb2xhcml0eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0bGF0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyYW5kb25idXJrZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb25zdGFudHgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGV5bG9yZmVsaXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JhaWdlbGltZWxpYWgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFjaGVscmV2ZWxleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZWFibzEwMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYWhtZWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2t5eWVhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qMDRudG9oLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NwYnJvbWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2ViYXNodG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pwZW5pY28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJhbmNpc192ZWdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rdGF5ZWxpcGVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpa2lsbG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFiYmlhbnovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFycnlnZXJhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQnJvdW1pWW91c3NlZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci8wdGhlcnBsYW5ldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYmlsYWxzaWRkaXF1ZTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW9udXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dycnJfbmwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGltaW5oYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYXdkaWdnaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnlhbmRvd25pZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXRobG91ZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGl4YWdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FycGl0bmovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3dpdG1lcjc3Ny8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3Nldm5jbGNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thbmlja2FpcmFqLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3B1emlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RiYWtkZXNpZ25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlc2J1anVwaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXBqb2V5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvd2llLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpbmtpYm9sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbGludG9yb3N6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ltY29kaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FndXN0aW5jcnVpei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndXNvdG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhvbWFzc2NocmlqZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VwZXJvdXRtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FsbWVycmF1dGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhYnJpZWxpemFsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nb2plYW55bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZGJhbGRpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fdm9qdG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGF1cmVuZ3JheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qeWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9teW15Ym95LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lbGxsZW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY2lvdG9sZWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pbmphZDNtMC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b19zb2hhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXNzbHVuc2ZvcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVyaWRyYWhoYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGV2aXNhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmFoYW1rZW5uZXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlcGV0aXRvZ3JlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudG9uZ2Vua2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lc3NvaWxhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FtYW5kYWJ1emFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWZyYW5rb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29jb2xlcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHNzNDkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dDMyMjQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmx1ZXNpeC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9xdWFpbGFuZHF1YXNhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9BbGJlcnRvQ29jb2NpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlcGluc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlbWVudGl5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21odWRvYml2bmlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWJhdXRfcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2xnYXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nob2piZXJnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL210b2xva29ubmlrb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVyZXRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hdXBpbnRvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWdvdHZpY2VzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hhZGhpeC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWN4aW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9kbnlsb2Jvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRjYW1wb3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkZWJ5dmFkaW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFydG9zemRhd3lkemlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cGVydm92YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJrcmV0emxvZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm9uYWNob28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFyeWx3cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGV2ZWRlc2lnbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL215bGVzYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJiaWd0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlcGF1bGF3YWduZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VzaGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dpem1lZWRldmlsMTk5MS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fc2NvdHRidXJnZXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpc292c2t5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhdmlkc2FzZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJ0ZF9zaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1lvdW5nQ3V0bGFzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZ29udG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXRzdG90YWxseWFteS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3JxdWlubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc21vbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2tzYW5hZnJld2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3phdWVya3JhdXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFta2VpdGhtYXNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaXRpbmhheWFyYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG1qYWJyZXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFuZGFsYXJlb3BlbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpbmtsZWZ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BvbmNob21lbmRpdmlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1YW1wZXJyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icnVub2Rlc2lnbjEyMDYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FzZXljYXZhbmFnaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdXhlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RvdGdyaWRsaW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NwZWR3aWcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkZXd1bGYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dHNhcGlpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlbGRlcmxlYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNzdHVtcGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamF5cGhlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uc2Ftb3lsb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXN2YW5kZXJrb29pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1c3RtZV90aW1vdGh5Zy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vdG96ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcmluemFkaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndTV0YWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3lyaWxfZ2FpbGxhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZF9rb2JlbHlhdHNreS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5pbG9jLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL253ZHNoYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb21hbmJ1bGFoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nra2lyaWxvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdmR3aW5kZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFubm9sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZWtldmluam9uZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvandhbHRlcjE0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RpbWd0aG9tYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVkZGhhc291cmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3V4cGlwZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhhdG9uZXRvbW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpYW5zaWdpdHAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRyaWVudGhzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tsaW1ta2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2thYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVyZWtjcmFtZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVubnl5by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXJyc29mdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94YWxpb25tYWxpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZGhlbmRlcnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXl1cmk4NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb3hhbmVqYW1tZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2ltY29vbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZGtmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdGtpbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxlc3NhbmRyb3JpYmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFja3NvbmxhdGthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlYnJvbmplbm5hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb3N0YXNwdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJsa2FuYWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21veW5paGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnBsaWVnby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXVsaWhpcnZpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlc2xleXRyYW5raW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmphZ3Vlcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm93YnJpY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFzaGFhYWFhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95YXNzaXJ5YWh5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcGFycmVsbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZm90b21hZ2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrYV9qYW1lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZW5pc2VwaXJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcWJhbHBlcmthc2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFydGluYW5zdHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFyc2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jfb3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdGlucm9iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhYnJpZWxyb3NzZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFsZ29yZG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhcmxmYWlyY2xvdWdoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxhYmVoc2VyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waWVycmVzdG9mZmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW5qb3l0aGV0YXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9nYW5qbGFtYmVydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ycGVlenkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29yZXlnaW5uaXZhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWxocm9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21zdmVldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saW5nZXN3YXJhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2xzdmVpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRlcjU3Ni8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZWlkZWlyZWRhbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9leW11cmRhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYXBoYWVsbmlrc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL212ZGhldXZlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXhsaW5kZXJtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamltbXVpcmhlYWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVncmVhdGl2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcmFua2llZnJlZXNiaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9idHVybGluY2t4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1RhbGJpX0NvblNlcHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9uZ2xpdmVteXdvcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmFuY2hlc3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFpa2xhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJtYW5vYnJvdGhlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZXpfX19hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyZWdzcXVlZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JlZW5iZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3JhZ3pvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRob255c3Vrb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmx1aWRicnVzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYWN0cnRyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plaG5nbHlubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJnbWFydGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2h1Z29jb3JuZWpvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19ra2dhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R6YW50aWV2bS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXdhbGF6YXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc292ZXNvdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9uc2dvdHdvb2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnlyeWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Z5dGF1dGFzX2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWl6aGdhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaWNlcm9ici8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWxzaGVsbWVyc3Nvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kMzNwdGhvdWdodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZlY3JhaWdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25ja2pydnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxleGFuZGVybWF5ZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamN1YmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NyYWlncmNvbGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhZ2F3YXJtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9iX3Rob21hczEwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZmxhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21haWtlbGsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnRnaWJib25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1c3NlbGxfYmF5bGlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21oZXNzbG93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZHlzYW5maWxpcHBvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlYnRhbnlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZGVieWJyZW50b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGNhbG9uYWNpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlcmZlY3RmbG93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pqc2lpaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWFyYWJwcmVldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdW1hcnJhamFuMTIxMjMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtc3RlZmZlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVtaWtlbmFnbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2Vla2F5dHdlZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFycnlib2x0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbnNwaXJhdG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbGxhc2JwZXRlcnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbjNkbWF4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlcnBpbW9zdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ieXJuZWNvcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIval9kcmFrZV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FsZWJqb3ljZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydXNzb2VkdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob2FuZ2xvaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b2J5c2F4b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ29mcmFzZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpbWFwb3NueXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGppc291c2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2thbmR1bmdlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iaWxseXJvc2hhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc2thbWF5YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb3Rpb250aGlua3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva25pbG9iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FzaG9ja2ExOC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJyaW1vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhcnRqby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vbW5penlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VybmVzdHNlbWVyZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVhc19wci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZGdhcmNocmlzOTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhvbWFzZ2Vpc2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dzZWd1aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9hbm5lZm91cm5pZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVtZXJzZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGFtbWFyc2Jhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXNpcndkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25fdGFzc29uZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXZvcnN6a3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlbXJkYXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3llY2lkc20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmljb2xsZXJpY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FuYXB1ZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGVnbHlubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWR6aGluX21pbGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rlc2lnbmVydnptLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpYW5vc2hwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V2YW5kcml4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsdGVyY2h1Y2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhydWJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hX3RpYXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3NiYl9tZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb3JwaGVybi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXVyaW9sZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icnVub19tYXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hY3RvcHVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZV93aW5zbGV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZW1kZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2hyaWlpaWltcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWNvYmJlbm5ldHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmZlZG9yb2ZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lhbWdsaW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsbGFncmluZ2F1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haWlhaWlhaWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2xhb2x1c29nYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idXJ5YWtuaWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dpbTFrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY2tsYWNrZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hMWNoYXBvbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RleW52aWxqb2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0cmlrZXdhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFua2lya21hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZXdhYm9nYWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rvb29vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWdhbjEyMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmlmZnNldGlhd2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsZW5hZGlzc2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXdhcmtlbnRpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGllcnJ5bWVpZXJfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JfZ2FyY2lhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RtYWNrZXJtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9yYW50dWxhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvbnVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NwYWNld29vZF8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnl1Y2hpMzExLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V2YW5zaGFqZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJpc3RhbmxlZ3Jvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaG9haWIyNTMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWlzbGlubmtlbGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rY29rZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltcGV0cmljb2xhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1bnNoaW5lZGdpcmwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhZGFtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVjbGFyc29uaXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm9taWRlc2lnbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0ZWJlcm5hcmRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0aWVkdWRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pbGxpbmV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ltc29wZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1hbW11aHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVuamFtaW5fa25pZ2h0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lcGR1ZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2tpNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYW5jZWd1eWF0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYm95MTg5NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbXl3ZWJiYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yd2V2ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXJ1aW50ZXNldHRkZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmljYnVydG9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lbHNoZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXRzaXJhaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wcmltb3pjaWdsZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamZmZ3JkbnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvOGQzay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZW5lc2VsZXpuZXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxfbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc291cGVycGhseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tc2xhcmtpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvMmZvY2t1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZGF2aXM1NjUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGllbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90dXJrdXR1dWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3V4d2FyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWJpbm9jbGFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXVyYXZqYXNzYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRtZXJyaXF1ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZHNpc3RvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld29mZmljZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29qb3VyaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG5pcm1hbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXZrYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcl9zaGl6bml0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsdWlzaW9fYXpldmVkby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jbG91ZHN0dWRpby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW52aWVyaWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZXhpdmFuaWNoa2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5fbWNoYW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlcnJldG1hZ2FsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXRyYXlkYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FkaWtrYXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdGJlZWRvdGNvbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbXl3b3Jib3lzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JwYXJ0cmlkZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGtvcGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbHYzcmd2bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGV2aXppby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2huc21pdGhhZ2VuY3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGF3bGJ3b3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdml0b3IzNzYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVzYXN0cm96by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGltb19jei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXNvbm1hcmtqb25lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saGF1c2VybWFubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94cmF2aWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3Vpc2NobWl0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWdvYnJvbngvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGFuZ2hhbDAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlndWVsa29vcmVtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VyZ2VvbmlzdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3RpYW5vbGlmZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXNwZXJncmwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFta2FybmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXBhdmVsZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGllcnJlX25lbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95MmdyYXBoaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlcmxpbmdydWxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGJ1c2NhaW5mby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5ueWppZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3R1c2hvbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXN0ZWJhbnVyaWJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtYnJjZWNyZWF0aW9ucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5pbGxvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGxpb3RsZXdpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFybGVzcnByYXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZsYWR5bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbW1lZmZlc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybG9zYmxhbmNvX2V1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlb25mZWRvdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbmdhZmFuZ3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNfZnJlZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGdvcm10eC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icnlhbl90b3BoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanBzY3JpYmJsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlnaHR5NTUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FyYm9udHdlbHZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lzYWFjZmlmdGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtamRlbGVvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbm93d3JpdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFycHV0cm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHJld2J5cmVlc2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FjaGFjb3JhenppLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jpc3RyaWFuaW9zaXAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFnb28wNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWhhbW9uZGVsbG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWF5dGVlamF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FfaGFycmlzODgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxndW5zYW5hYnJpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96Zm9ycmVzdGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL292YWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmxvc2pnc291c2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VvYmlrYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWhfbGljZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb29uZXlkb29kbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVyZGdyOC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZGdnY2NhYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96YWNrZWVsZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm9ybWFuYm94LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsX2Z1ZXJ0aXNpbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNtYWlsX2JpbHRhZ2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhbmdvbWV6dy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbm1ucmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGF0cmlja2Nvb21iZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFuam9obnNvbl9tZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJrb2xzY2hlc2t5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plZmZnb2xlbnNraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdmFzbmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhdWNob21hdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWZ1c2luYXR0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXZpbm9oLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29rYW5zdXJyZWVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkYW1hd2Vzb21lZmFjZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbWlsZWJvdWRlbGluZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmlzaGlfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1YW5tYW1hcnRpbmV6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dpa2l6aW5lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW50aG1zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21rZ2luZm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVycm9ycGl4ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3VyaW91c29uYXV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaGVlbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGNvbGVuc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZm9jenppLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnRpcDA3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoYW9kYW5nMTcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9obmNhZmF6emEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcm9iaW5sYXlmaWVsZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcmFuY2lzY29hbWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJkdWxoeWV1ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJrbGFtYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZG9iZW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJlc2VuZnJlZHJpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWthZWxqb3JodWx0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nocmlzc2xvd2lrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpbmNpYXJ0cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWVsZm9yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGxpb3Rub2x0ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWVodWRhYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWpheWthcnRoaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmZyb2hzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2VwX21hcnRpbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXR0YWNrcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXI0ZHllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R1bXNraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbnN0YWxveC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYW5nb3NhbmdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BhdWxmYXJpbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2F6YWt5OTk5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpd2l1cG92ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnZrem5lbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9tX2V2ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmF0YnVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dvb2RzbWFuMDAxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2htZWRlc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZXdpbGxiZWFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wc2Fpa2FsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2VfYmxhY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxlaW5hZHNheXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY3VzZ29yaWxsaXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvdGFfdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZ2h5bGxlYmVydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGluemUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFucGFsb3VuZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW1pZXNwb2tlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJfcnV1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnNvd3Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mZWxpcGVhcGlyZXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZ3VnemJyYW5kMmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9zdGVyam9iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hdGhhbGllX2ZzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JvYmJ5dHdvc2hvZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHJlaXpsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbXltb3V0b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxpc2FiZXRoa2phZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm90YmFkYXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21vaGFucm9oaXRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2psc29sZXJkZWx0b3JvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l0c2thd3Nhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbG93c3BvY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvenZjaGtlbGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dpbGphbnNsb2ZzdHJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NyYWlnaGVubmViZXJyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cnViZWF0dG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhdW1sb2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2Ftc2NvdXRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0Jlbm91YXJyYWRlTS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9naXBzeV9yYWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmV0b25ldF9pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmtva29sZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXRzYWppbWl0aGluZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbWFsb25zby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3JkZWFuZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX2R3aXRlXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNoYXJkZ2FycmV0dHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JlZ3J3aWxraW5zb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5hdG9saW5pY29sYWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbHU0c2gxaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVmYW5vdGlybG9uaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc3RpcmJ1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhcmN5c3RvbmdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25haXRhbmFtb3Jlbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGNvbWlza2V5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkaGlhcmRhbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY29tYW5vXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZGNhemFsaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFsY29uZXJpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVna2lsaWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JjcmFkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JvbHphbm1hcmNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvd19yZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhamtpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldGFyX3Byb2cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9ua3Nwci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ha21hbGZpa3JpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21mYWNjaGluZWxsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdGFuaXNtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhcnJ5X3Npc3RhbGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211cnJheXN3aWZ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JvYndhc3Nlcm1hbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2F2cjFsMC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRzaGVuc2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yX3N1YnRsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZpbGpob18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FsaW1pYW5vZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9ldHJ1ZXNkZWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R3aXR0eXBvcmsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWlyc2t5bGFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RuZXprdW1hci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZ2FqamFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoZXJpZl9iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbHZhZmMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG91aXNfY3VycmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlZWVucmlnaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3liaW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V5cm9ubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWNreXNoaXRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N3ZWV0ZGVsaXNhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nib2xsZXIxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJlc2RqYXNzby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWx2aW5kaWRpdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmR5c29sb21vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGFpc3NlbGVuYXRvcl8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbHZvdmVub2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2l1bGl1c2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVseWFldl9ycy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vdmVyY2xvYWNrZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FtYWxfY2hhbmVtYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW5jdWJvODIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVsbG9mZXZlcnJyci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taGFsaWdvd3NraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdW5sYW5kaWN0d2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1NzkyMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmR5dGxhdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbWVyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9maW5jaGprZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYW5pZ20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdW11cmdkay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY290dGZlbHRoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2Fuc2VyZW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211dHVfa3Jpc2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9keXRhZ2dhcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnRmYmxvZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90YW52ZWVycmFvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hmYWx1Y2FzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FseGxlcm95ZGV2YWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VjaW5nYmVsYW5nNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJnYW9yb2JhbG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29sZ3J1di8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGFsZXdpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3lsZWZyb3N0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhdW1hbm56b25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZ2VsY29sYmVyZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWNoaW5nYXdhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qanNoYXcxNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYW1hbmF0aGFuX3BkeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2huZGV6ZW1iZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmlsc2hvZW5zb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhbmRvbm1vcnJlYWxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL251dHp1bWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhbmRvbmZsYXRzb2RhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlcmdleWFsbW9uZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rbGVmdWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lyYW5nb3BhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXVtYW5uX2FsZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dGhld2theV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamF5X3dpbGJ1cm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hlc2dhcmVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FwcmllbmRlYXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9obnJpb3JkYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2FrZV9ncy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVrc2l0YXBwdXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vtc2d1bGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hpbGFudHJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ltb21lbnVpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpcmNhbGViZ3JvdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmV3YnJ1c2hlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oc2lueW8yMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tNHJpby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXRpZW1kYWx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3M0ZjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWNvbW1lcmNlaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFybGluamF5YWtvZHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3dvb3NoeWN1ZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FuZ2R0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2RlcmRpYXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmx1ZWZ4Xy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aXZla3BydnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FzaGFfc2hlc3Rha292LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V1Z2VuZWV3ZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGdjbGVnZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uMWdodF9jb2Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaXhjaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JsYWtlaGF3a3N3b3J0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cnVlYmxvb2RfMzMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFpX25pbmhfbmd1eWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNsZ29uemFsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWVzbWVjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVwaGNvdWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG9yb25tYWxraS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydWVobGRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmFzbmFrYXdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tpamFubWFoYXJqYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VhcmVzYXZhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVmdmRoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHdlZXR1YmhhaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVjYXJwZW50aWVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZpdGVyaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50b255cnluZHlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2QwMG1hei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVvbmx5emVrZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXNzYWFhbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybG9zbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYW5la2VudGhlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlZXRhamF5ZW5kcmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVyZW15c2hpbWtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1c3RpbnJncmFoYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlZmFub3pvZmZvbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3ZlcnJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yZWJheTAwNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaHZlbG85Ni8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9weXJvbml0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVkanBldGVyc2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J0eXVrbWFldi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fd2lsbGlhbWd1ZXJyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGJlcnRhdWd1c3Rpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWthc2hwYXRoYWsxOC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXZpbmpvaG5kYXl5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZqX2RlbWllbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2xpcnBpeG9pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nb2RkYXJkbGV3aXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFhc2xpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pxaXVzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXljYW10YXlsb3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFzdHlhX21hbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFzdGVybWluZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NjaW5vamFzc28xLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL255YW5jZWNvbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW5keXdvb2RydWZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JpZ2hhbmRkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2J0cmFuc3BhcmVudC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdmlkZGF5ZW50b25iYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmljaHdpbGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2F5c2l4X2Rpenp5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R1cjhsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXllZGhvc3NlaW4xLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaXZldHdhZ25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbW1hbmRlbm4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGV2X2Vzc2VudGlhbHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam1mc29jaWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL195YXJkZW5vb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0ZWFvZHZpdGV6YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWF2ZXJtZWRpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdWZhZGRhbF9tdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYWZlZXNraGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FzaGVybmF0YWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1bGFxby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZGRpZWNoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zZWNhcmxvc3BzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bV9mLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vucmljb2NpY2NvbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFubWFydGluNzAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ21vdXJpZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG9uamFpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcnhsb2thLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19wZWRyb3BpbmhvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VpdGFyYWZhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zY2Fyb3d1c3UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFscGhfbGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BhbmNoYWphbnlhZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93b29keWRvdG14LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcnJ5YmFpMTkwNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJzaGFsbGNoZW5fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hhbW9yZXAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWlvX19fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWFiYW5lX3dhaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHhjeC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ha2FzaHNoYXJtYTM5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhbGxpbmdfc291bC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWlucmFqYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdWd1a2FtaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9oYW5uZXNuZXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya3dpZW5hbmRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcnRoaXBhbnJhai8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWxha2F5dXJpeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGFuX3poYW5nXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXllcnNzc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FzcGVybm9yZGt2aXN0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pcmZhbnF1cmVzaGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFubmFfc21pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1ZNaWxlc2N1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Flb241Ni8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tX2thbGlicnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3JlZWppdGhleHAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGljZXNhbGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rob290X2FtaXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc21lbm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvbmVzb21lbGVtb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhZGltaXJkZXZpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2VsY2lwcmlhbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFsaWdhbGloYXJ1bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idWxlc3dhcG5pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXJlZmthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lmYXJhZm9ub3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmlrYXN2aW5mb3RlY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXJydXRpbWVvbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJlYW5kYWNvbS8xMjguanBnXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImNvbVwiLFxuICBcImJpelwiLFxuICBcImluZm9cIixcbiAgXCJuYW1lXCIsXG4gIFwibmV0XCIsXG4gIFwib3JnXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImV4YW1wbGUub3JnXCIsXG4gIFwiZXhhbXBsZS5jb21cIixcbiAgXCJleGFtcGxlLm5ldFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJnbWFpbC5jb21cIixcbiAgXCJ5YWhvby5jb21cIixcbiAgXCJob3RtYWlsLmNvbVwiXG5dO1xuIiwidmFyIGludGVybmV0ID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGludGVybmV0O1xuaW50ZXJuZXQuZnJlZV9lbWFpbCA9IHJlcXVpcmUoXCIuL2ZyZWVfZW1haWxcIik7XG5pbnRlcm5ldC5leGFtcGxlX2VtYWlsID0gcmVxdWlyZShcIi4vZXhhbXBsZV9lbWFpbFwiKTtcbmludGVybmV0LmRvbWFpbl9zdWZmaXggPSByZXF1aXJlKFwiLi9kb21haW5fc3VmZml4XCIpO1xuaW50ZXJuZXQuYXZhdGFyX3VyaSA9IHJlcXVpcmUoXCIuL2F2YXRhcl91cmlcIik7XG4iLCJ2YXIgbG9yZW0gPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gbG9yZW07XG5sb3JlbS53b3JkcyA9IHJlcXVpcmUoXCIuL3dvcmRzXCIpO1xubG9yZW0uc3VwcGxlbWVudGFsID0gcmVxdWlyZShcIi4vc3VwcGxlbWVudGFsXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhYmJhc1wiLFxuICBcImFiZHVjb1wiLFxuICBcImFiZW9cIixcbiAgXCJhYnNjaWRvXCIsXG4gIFwiYWJzY29uZGl0dXNcIixcbiAgXCJhYnNlbnNcIixcbiAgXCJhYnNvcmJlb1wiLFxuICBcImFic3F1ZVwiLFxuICBcImFic3RlcmdvXCIsXG4gIFwiYWJzdW1cIixcbiAgXCJhYnVuZGFuc1wiLFxuICBcImFidXRvclwiLFxuICBcImFjY2Vkb1wiLFxuICBcImFjY2VuZG9cIixcbiAgXCJhY2NlcHR1c1wiLFxuICBcImFjY2lwaW9cIixcbiAgXCJhY2NvbW1vZG9cIixcbiAgXCJhY2N1c2F0b3JcIixcbiAgXCJhY2VyXCIsXG4gIFwiYWNlcmJpdGFzXCIsXG4gIFwiYWNlcnZ1c1wiLFxuICBcImFjaWR1c1wiLFxuICBcImFjaWVzXCIsXG4gIFwiYWNxdWlyb1wiLFxuICBcImFjc2lcIixcbiAgXCJhZGFtb1wiLFxuICBcImFkYXVnZW9cIixcbiAgXCJhZGRvXCIsXG4gIFwiYWRkdWNvXCIsXG4gIFwiYWRlbXB0aW9cIixcbiAgXCJhZGVvXCIsXG4gIFwiYWRlcHRpb1wiLFxuICBcImFkZmVjdHVzXCIsXG4gIFwiYWRmZXJvXCIsXG4gIFwiYWRmaWNpb1wiLFxuICBcImFkZmxpY3RvXCIsXG4gIFwiYWRoYWVyb1wiLFxuICBcImFkaHVjXCIsXG4gIFwiYWRpY2lvXCIsXG4gIFwiYWRpbXBsZW9cIixcbiAgXCJhZGludmVudGl0aWFzXCIsXG4gIFwiYWRpcGlzY29yXCIsXG4gIFwiYWRpdXZvXCIsXG4gIFwiYWRtaW5pc3RyYXRpb1wiLFxuICBcImFkbWlyYXRpb1wiLFxuICBcImFkbWl0dG9cIixcbiAgXCJhZG1vbmVvXCIsXG4gIFwiYWRtb3Zlb1wiLFxuICBcImFkbnVvXCIsXG4gIFwiYWRvcHRvXCIsXG4gIFwiYWRzaWR1ZVwiLFxuICBcImFkc3RyaW5nb1wiLFxuICBcImFkc3Vlc2NvXCIsXG4gIFwiYWRzdW1cIixcbiAgXCJhZHVsYXRpb1wiLFxuICBcImFkdWxlc2NlbnNcIixcbiAgXCJhZHVsdHVzXCIsXG4gIFwiYWR1cm9cIixcbiAgXCJhZHZlbmlvXCIsXG4gIFwiYWR2ZXJzdXNcIixcbiAgXCJhZHZvY29cIixcbiAgXCJhZWRpZmljaXVtXCIsXG4gIFwiYWVnZXJcIixcbiAgXCJhZWdyZVwiLFxuICBcImFlZ3JvdGF0aW9cIixcbiAgXCJhZWdydXNcIixcbiAgXCJhZW5ldXNcIixcbiAgXCJhZXF1aXRhc1wiLFxuICBcImFlcXV1c1wiLFxuICBcImFlclwiLFxuICBcImFlc3Rhc1wiLFxuICBcImFlc3RpdnVzXCIsXG4gIFwiYWVzdHVzXCIsXG4gIFwiYWV0YXNcIixcbiAgXCJhZXRlcm51c1wiLFxuICBcImFnZXJcIixcbiAgXCJhZ2dlcm9cIixcbiAgXCJhZ2dyZWRpb3JcIixcbiAgXCJhZ25pdGlvXCIsXG4gIFwiYWdub3Njb1wiLFxuICBcImFnb1wiLFxuICBcImFpdFwiLFxuICBcImFpdW50XCIsXG4gIFwiYWxpZW51c1wiLFxuICBcImFsaWlcIixcbiAgXCJhbGlvcXVpXCIsXG4gIFwiYWxpcXVhXCIsXG4gIFwiYWxpdXNcIixcbiAgXCJhbGxhdHVzXCIsXG4gIFwiYWxvXCIsXG4gIFwiYWx0ZXJcIixcbiAgXCJhbHR1c1wiLFxuICBcImFsdmV1c1wiLFxuICBcImFtYXJpdHVkb1wiLFxuICBcImFtYml0dXNcIixcbiAgXCJhbWJ1bG9cIixcbiAgXCJhbWljaXRpYVwiLFxuICBcImFtaWN1bHVtXCIsXG4gIFwiYW1pc3Npb1wiLFxuICBcImFtaXRhXCIsXG4gIFwiYW1pdHRvXCIsXG4gIFwiYW1vXCIsXG4gIFwiYW1vclwiLFxuICBcImFtb3Zlb1wiLFxuICBcImFtcGxleHVzXCIsXG4gIFwiYW1wbGl0dWRvXCIsXG4gIFwiYW1wbHVzXCIsXG4gIFwiYW5jaWxsYVwiLFxuICBcImFuZ2VsdXNcIixcbiAgXCJhbmd1bHVzXCIsXG4gIFwiYW5ndXN0dXNcIixcbiAgXCJhbmltYWR2ZXJ0b1wiLFxuICBcImFuaW1pXCIsXG4gIFwiYW5pbXVzXCIsXG4gIFwiYW5udXNcIixcbiAgXCJhbnNlclwiLFxuICBcImFudGVcIixcbiAgXCJhbnRlYVwiLFxuICBcImFudGVwb25vXCIsXG4gIFwiYW50aXF1dXNcIixcbiAgXCJhcGVyaW9cIixcbiAgXCJhcGVydGVcIixcbiAgXCJhcG9zdG9sdXNcIixcbiAgXCJhcHBhcmF0dXNcIixcbiAgXCJhcHBlbGxvXCIsXG4gIFwiYXBwb25vXCIsXG4gIFwiYXBwb3NpdHVzXCIsXG4gIFwiYXBwcm9ib1wiLFxuICBcImFwdG9cIixcbiAgXCJhcHR1c1wiLFxuICBcImFwdWRcIixcbiAgXCJhcXVhXCIsXG4gIFwiYXJhXCIsXG4gIFwiYXJhbmVhXCIsXG4gIFwiYXJiaXRyb1wiLFxuICBcImFyYm9yXCIsXG4gIFwiYXJidXN0dW1cIixcbiAgXCJhcmNhXCIsXG4gIFwiYXJjZW9cIixcbiAgXCJhcmNlc3NvXCIsXG4gIFwiYXJjdXNcIixcbiAgXCJhcmdlbnR1bVwiLFxuICBcImFyZ3VtZW50dW1cIixcbiAgXCJhcmd1b1wiLFxuICBcImFybWFcIixcbiAgXCJhcm1hcml1bVwiLFxuICBcImFybW9cIixcbiAgXCJhcm9cIixcbiAgXCJhcnNcIixcbiAgXCJhcnRpY3VsdXNcIixcbiAgXCJhcnRpZmljaW9zZVwiLFxuICBcImFydG9cIixcbiAgXCJhcnhcIixcbiAgXCJhc2Npc2NvXCIsXG4gIFwiYXNjaXRcIixcbiAgXCJhc3BlclwiLFxuICBcImFzcGljaW9cIixcbiAgXCJhc3BvcnRvXCIsXG4gIFwiYXNzZW50YXRvclwiLFxuICBcImFzdHJ1bVwiLFxuICBcImF0YXZ1c1wiLFxuICBcImF0ZXJcIixcbiAgXCJhdHF1aVwiLFxuICBcImF0cm9jaXRhc1wiLFxuICBcImF0cm94XCIsXG4gIFwiYXR0ZXJvXCIsXG4gIFwiYXR0b2xsb1wiLFxuICBcImF0dG9uYml0dXNcIixcbiAgXCJhdWN0b3JcIixcbiAgXCJhdWN0dXNcIixcbiAgXCJhdWRhY2lhXCIsXG4gIFwiYXVkYXhcIixcbiAgXCJhdWRlbnRpYVwiLFxuICBcImF1ZGVvXCIsXG4gIFwiYXVkaW9cIixcbiAgXCJhdWRpdG9yXCIsXG4gIFwiYXVmZXJvXCIsXG4gIFwiYXVyZXVzXCIsXG4gIFwiYXVyaXNcIixcbiAgXCJhdXJ1bVwiLFxuICBcImF1dFwiLFxuICBcImF1dGVtXCIsXG4gIFwiYXV0dXNcIixcbiAgXCJhdXhpbGl1bVwiLFxuICBcImF2YXJpdGlhXCIsXG4gIFwiYXZhcnVzXCIsXG4gIFwiYXZlaG9cIixcbiAgXCJhdmVydG9cIixcbiAgXCJhdm9jb1wiLFxuICBcImJhaXVsdXNcIixcbiAgXCJiYWxidXNcIixcbiAgXCJiYXJiYVwiLFxuICBcImJhcmR1c1wiLFxuICBcImJhc2l1bVwiLFxuICBcImJlYXR1c1wiLFxuICBcImJlbGxpY3VzXCIsXG4gIFwiYmVsbHVtXCIsXG4gIFwiYmVuZVwiLFxuICBcImJlbmVmaWNpdW1cIixcbiAgXCJiZW5ldm9sZW50aWFcIixcbiAgXCJiZW5pZ25lXCIsXG4gIFwiYmVzdGlhXCIsXG4gIFwiYmlib1wiLFxuICBcImJpc1wiLFxuICBcImJsYW5kaW9yXCIsXG4gIFwiYm9udXNcIixcbiAgXCJib3NcIixcbiAgXCJicmV2aXNcIixcbiAgXCJjYWRvXCIsXG4gIFwiY2FlY3VzXCIsXG4gIFwiY2FlbGVzdGlzXCIsXG4gIFwiY2FlbHVtXCIsXG4gIFwiY2FsYW1pdGFzXCIsXG4gIFwiY2FsY2FyXCIsXG4gIFwiY2FsY29cIixcbiAgXCJjYWxjdWx1c1wiLFxuICBcImNhbGxpZGVcIixcbiAgXCJjYW1wYW5hXCIsXG4gIFwiY2FuZGlkdXNcIixcbiAgXCJjYW5pc1wiLFxuICBcImNhbm9uaWN1c1wiLFxuICBcImNhbnRvXCIsXG4gIFwiY2FwaWxsdXNcIixcbiAgXCJjYXBpb1wiLFxuICBcImNhcGl0dWx1c1wiLFxuICBcImNhcHRvXCIsXG4gIFwiY2FwdXRcIixcbiAgXCJjYXJib1wiLFxuICBcImNhcmNlclwiLFxuICBcImNhcmVvXCIsXG4gIFwiY2FyaWVzXCIsXG4gIFwiY2FyaW9zdXNcIixcbiAgXCJjYXJpdGFzXCIsXG4gIFwiY2FybWVuXCIsXG4gIFwiY2FycG9cIixcbiAgXCJjYXJ1c1wiLFxuICBcImNhc3NvXCIsXG4gIFwiY2FzdGVcIixcbiAgXCJjYXN1c1wiLFxuICBcImNhdGVuYVwiLFxuICBcImNhdGVydmFcIixcbiAgXCJjYXR0dXNcIixcbiAgXCJjYXVkYVwiLFxuICBcImNhdXNhXCIsXG4gIFwiY2F1dGVcIixcbiAgXCJjYXZlb1wiLFxuICBcImNhdnVzXCIsXG4gIFwiY2Vkb1wiLFxuICBcImNlbGVicmVyXCIsXG4gIFwiY2VsZXJcIixcbiAgXCJjZWxvXCIsXG4gIFwiY2VuYVwiLFxuICBcImNlbmFjdWx1bVwiLFxuICBcImNlbm9cIixcbiAgXCJjZW5zdXJhXCIsXG4gIFwiY2VudHVtXCIsXG4gIFwiY2Vybm9cIixcbiAgXCJjZXJudXVzXCIsXG4gIFwiY2VydGVcIixcbiAgXCJjZXJ0b1wiLFxuICBcImNlcnR1c1wiLFxuICBcImNlcnZ1c1wiLFxuICBcImNldGVyYVwiLFxuICBcImNoYXJpc21hXCIsXG4gIFwiY2hpcm9ncmFwaHVtXCIsXG4gIFwiY2lib1wiLFxuICBcImNpYnVzXCIsXG4gIFwiY2ljdXRhXCIsXG4gIFwiY2lsaWNpdW1cIixcbiAgXCJjaW1lbnRhcml1c1wiLFxuICBcImNpbWluYXRpb1wiLFxuICBcImNpbmlzXCIsXG4gIFwiY2lyY3VtdmVuaW9cIixcbiAgXCJjaXRvXCIsXG4gIFwiY2l2aXNcIixcbiAgXCJjaXZpdGFzXCIsXG4gIFwiY2xhbVwiLFxuICBcImNsYW1vXCIsXG4gIFwiY2xhcm9cIixcbiAgXCJjbGFydXNcIixcbiAgXCJjbGF1ZGVvXCIsXG4gIFwiY2xhdXN0cnVtXCIsXG4gIFwiY2xlbWVudGlhXCIsXG4gIFwiY2xpYmFudXNcIixcbiAgXCJjb2FkdW5hdGlvXCIsXG4gIFwiY29hZWdyZXNjb1wiLFxuICBcImNvZXBpXCIsXG4gIFwiY29lcmNlb1wiLFxuICBcImNvZ2l0b1wiLFxuICBcImNvZ25hdHVzXCIsXG4gIFwiY29nbm9tZW5cIixcbiAgXCJjb2dvXCIsXG4gIFwiY29oYWVyb1wiLFxuICBcImNvaGliZW9cIixcbiAgXCJjb2hvcnNcIixcbiAgXCJjb2xsaWdvXCIsXG4gIFwiY29sbG9jb1wiLFxuICBcImNvbGx1bVwiLFxuICBcImNvbG9cIixcbiAgXCJjb2xvclwiLFxuICBcImNvbWFcIixcbiAgXCJjb21iaWJvXCIsXG4gIFwiY29tYnVyb1wiLFxuICBcImNvbWVkb1wiLFxuICBcImNvbWVzXCIsXG4gIFwiY29tZXRlc1wiLFxuICBcImNvbWlzXCIsXG4gIFwiY29taXRhdHVzXCIsXG4gIFwiY29tbWVtb3JvXCIsXG4gIFwiY29tbWlub3JcIixcbiAgXCJjb21tb2RvXCIsXG4gIFwiY29tbXVuaXNcIixcbiAgXCJjb21wYXJvXCIsXG4gIFwiY29tcGVsbG9cIixcbiAgXCJjb21wbGVjdHVzXCIsXG4gIFwiY29tcG9ub1wiLFxuICBcImNvbXByZWhlbmRvXCIsXG4gIFwiY29tcHR1c1wiLFxuICBcImNvbmF0dXNcIixcbiAgXCJjb25jZWRvXCIsXG4gIFwiY29uY2lkb1wiLFxuICBcImNvbmN1bGNvXCIsXG4gIFwiY29uZGljb1wiLFxuICBcImNvbmR1Y29cIixcbiAgXCJjb25mZXJvXCIsXG4gIFwiY29uZmlkb1wiLFxuICBcImNvbmZvcnRvXCIsXG4gIFwiY29uZnVnb1wiLFxuICBcImNvbmdyZWdhdGlvXCIsXG4gIFwiY29uaWNpb1wiLFxuICBcImNvbmllY3RvXCIsXG4gIFwiY29uaXRvclwiLFxuICBcImNvbml1cmF0aW9cIixcbiAgXCJjb25vclwiLFxuICBcImNvbnF1ZXJvclwiLFxuICBcImNvbnNjZW5kb1wiLFxuICBcImNvbnNlcnZvXCIsXG4gIFwiY29uc2lkZXJvXCIsXG4gIFwiY29uc3BlcmdvXCIsXG4gIFwiY29uc3RhbnNcIixcbiAgXCJjb25zdWFzb3JcIixcbiAgXCJjb250YWJlc2NvXCIsXG4gIFwiY29udGVnb1wiLFxuICBcImNvbnRpZ29cIixcbiAgXCJjb250cmFcIixcbiAgXCJjb250dXJib1wiLFxuICBcImNvbnZlbnR1c1wiLFxuICBcImNvbnZvY29cIixcbiAgXCJjb3BpYVwiLFxuICBcImNvcGlvc2VcIixcbiAgXCJjb3JudVwiLFxuICBcImNvcm9uYVwiLFxuICBcImNvcnB1c1wiLFxuICBcImNvcnJlcHRpdXNcIixcbiAgXCJjb3JyaWdvXCIsXG4gIFwiY29ycm9ib3JvXCIsXG4gIFwiY29ycnVtcG9cIixcbiAgXCJjb3J1c2N1c1wiLFxuICBcImNvdGlkaWVcIixcbiAgXCJjcmFwdWxhXCIsXG4gIFwiY3Jhc1wiLFxuICBcImNyYXN0aW51c1wiLFxuICBcImNyZWF0b3JcIixcbiAgXCJjcmViZXJcIixcbiAgXCJjcmVicm9cIixcbiAgXCJjcmVkb1wiLFxuICBcImNyZW9cIixcbiAgXCJjcmVwdGlvXCIsXG4gIFwiY3JlcHVzY3VsdW1cIixcbiAgXCJjcmVzY29cIixcbiAgXCJjcmV0YVwiLFxuICBcImNyaWJyb1wiLFxuICBcImNyaW5pc1wiLFxuICBcImNydWNpYW1lbnR1bVwiLFxuICBcImNydWRlbGlzXCIsXG4gIFwiY3J1ZW50dXNcIixcbiAgXCJjcnVyXCIsXG4gIFwiY3J1c3R1bHVtXCIsXG4gIFwiY3J1eFwiLFxuICBcImN1YmljdWxhcmlzXCIsXG4gIFwiY3ViaXR1bVwiLFxuICBcImN1Ym9cIixcbiAgXCJjdWlcIixcbiAgXCJjdWl1c1wiLFxuICBcImN1bHBhXCIsXG4gIFwiY3VscG9cIixcbiAgXCJjdWx0ZWxsdXNcIixcbiAgXCJjdWx0dXJhXCIsXG4gIFwiY3VtXCIsXG4gIFwiY3VuYWJ1bGFcIixcbiAgXCJjdW5hZVwiLFxuICBcImN1bmN0YXRpb1wiLFxuICBcImN1cGlkaXRhc1wiLFxuICBcImN1cGlvXCIsXG4gIFwiY3VwcGVkaWFcIixcbiAgXCJjdXByZXNzdXNcIixcbiAgXCJjdXJcIixcbiAgXCJjdXJhXCIsXG4gIFwiY3VyYXRpb1wiLFxuICBcImN1cmlhXCIsXG4gIFwiY3VyaW9zaXRhc1wiLFxuICBcImN1cmlzXCIsXG4gIFwiY3Vyb1wiLFxuICBcImN1cnJpY3VsdW1cIixcbiAgXCJjdXJydXNcIixcbiAgXCJjdXJzaW1cIixcbiAgXCJjdXJzb1wiLFxuICBcImN1cnN1c1wiLFxuICBcImN1cnRvXCIsXG4gIFwiY3VydHVzXCIsXG4gIFwiY3Vydm9cIixcbiAgXCJjdXJ2dXNcIixcbiAgXCJjdXN0b2RpYVwiLFxuICBcImRhbW5hdGlvXCIsXG4gIFwiZGFtbm9cIixcbiAgXCJkYXBpZmVyXCIsXG4gIFwiZGViZW9cIixcbiAgXCJkZWJpbGl0b1wiLFxuICBcImRlY2Vuc1wiLFxuICBcImRlY2Vybm9cIixcbiAgXCJkZWNldFwiLFxuICBcImRlY2ltdXNcIixcbiAgXCJkZWNpcGlvXCIsXG4gIFwiZGVjb3JcIixcbiAgXCJkZWNyZXR1bVwiLFxuICBcImRlY3VtYm9cIixcbiAgXCJkZWRlY29yXCIsXG4gIFwiZGVkaWNvXCIsXG4gIFwiZGVkdWNvXCIsXG4gIFwiZGVmYWVjb1wiLFxuICBcImRlZmVuZG9cIixcbiAgXCJkZWZlcm9cIixcbiAgXCJkZWZlc3N1c1wiLFxuICBcImRlZmV0aXNjb3JcIixcbiAgXCJkZWZpY2lvXCIsXG4gIFwiZGVmaWdvXCIsXG4gIFwiZGVmbGVvXCIsXG4gIFwiZGVmbHVvXCIsXG4gIFwiZGVmdW5nb1wiLFxuICBcImRlZ2VuZXJvXCIsXG4gIFwiZGVnZXJvXCIsXG4gIFwiZGVndXN0b1wiLFxuICBcImRlaW5kZVwiLFxuICBcImRlbGVjdGF0aW9cIixcbiAgXCJkZWxlZ29cIixcbiAgXCJkZWxlb1wiLFxuICBcImRlbGliZXJvXCIsXG4gIFwiZGVsaWNhdGVcIixcbiAgXCJkZWxpbnF1b1wiLFxuICBcImRlbHVkb1wiLFxuICBcImRlbWVuc1wiLFxuICBcImRlbWVyZ29cIixcbiAgXCJkZW1pdHRvXCIsXG4gIFwiZGVtb1wiLFxuICBcImRlbW9uc3Ryb1wiLFxuICBcImRlbW9yb3JcIixcbiAgXCJkZW11bGNlb1wiLFxuICBcImRlbXVtXCIsXG4gIFwiZGVuZWdvXCIsXG4gIFwiZGVuaXF1ZVwiLFxuICBcImRlbnNcIixcbiAgXCJkZW51bmNpb1wiLFxuICBcImRlbnVvXCIsXG4gIFwiZGVvcnN1bVwiLFxuICBcImRlcGVyZW9cIixcbiAgXCJkZXBvbm9cIixcbiAgXCJkZXBvcHVsb1wiLFxuICBcImRlcG9ydG9cIixcbiAgXCJkZXByYWVkb3JcIixcbiAgXCJkZXByZWNhdG9yXCIsXG4gIFwiZGVwcmltb1wiLFxuICBcImRlcHJvbW9cIixcbiAgXCJkZXB1bHNvXCIsXG4gIFwiZGVwdXRvXCIsXG4gIFwiZGVyZWxpbnF1b1wiLFxuICBcImRlcmlkZW9cIixcbiAgXCJkZXJpcGlvXCIsXG4gIFwiZGVzaWRlcm9cIixcbiAgXCJkZXNpbm9cIixcbiAgXCJkZXNpcGlvXCIsXG4gIFwiZGVzb2xvXCIsXG4gIFwiZGVzcGFyYXR1c1wiLFxuICBcImRlc3BlY3RvXCIsXG4gIFwiZGVzcGlybWF0aW9cIixcbiAgXCJpbmZpdFwiLFxuICBcImluZmxhbW1hdGlvXCIsXG4gIFwicGFlbnNcIixcbiAgXCJwYXRpb3JcIixcbiAgXCJwYXRyaWFcIixcbiAgXCJwYXRyb2Npbm9yXCIsXG4gIFwicGF0cnV1c1wiLFxuICBcInBhdWNpXCIsXG4gIFwicGF1bGF0aW1cIixcbiAgXCJwYXVwZXJcIixcbiAgXCJwYXhcIixcbiAgXCJwZWNjYXR1c1wiLFxuICBcInBlY2NvXCIsXG4gIFwicGVjdG9cIixcbiAgXCJwZWN0dXNcIixcbiAgXCJwZWN1bmlhXCIsXG4gIFwicGVjdXNcIixcbiAgXCJwZWlvclwiLFxuICBcInBlbFwiLFxuICBcIm9jZXJcIixcbiAgXCJzb2NpdXNcIixcbiAgXCJzb2RhbGl0YXNcIixcbiAgXCJzb2xcIixcbiAgXCJzb2xlb1wiLFxuICBcInNvbGlvXCIsXG4gIFwic29saXR1ZG9cIixcbiAgXCJzb2xpdW1cIixcbiAgXCJzb2xsZXJzXCIsXG4gIFwic29sbGljaXRvXCIsXG4gIFwic29sdW1cIixcbiAgXCJzb2x1c1wiLFxuICBcInNvbHV0aW9cIixcbiAgXCJzb2x2b1wiLFxuICBcInNvbW5pY3Vsb3N1c1wiLFxuICBcInNvbW51c1wiLFxuICBcInNvbml0dXNcIixcbiAgXCJzb25vXCIsXG4gIFwic29waGlzbWF0YVwiLFxuICBcInNvcG9yXCIsXG4gIFwic29yZGVvXCIsXG4gIFwic29ydGl0dXNcIixcbiAgXCJzcGFyZ29cIixcbiAgXCJzcGVjaW9zdXNcIixcbiAgXCJzcGVjdGFjdWx1bVwiLFxuICBcInNwZWN1bHVtXCIsXG4gIFwic3Blcm5vXCIsXG4gIFwic3Blcm9cIixcbiAgXCJzcGVzXCIsXG4gIFwic3BpY3VsdW1cIixcbiAgXCJzcGlyaXR1c1wiLFxuICBcInNwb2xpYXRpb1wiLFxuICBcInNwb250ZVwiLFxuICBcInN0YWJpbGlzXCIsXG4gIFwic3RhdGltXCIsXG4gIFwic3RhdHVhXCIsXG4gIFwic3RlbGxhXCIsXG4gIFwic3RpbGxpY2lkaXVtXCIsXG4gIFwic3RpcGVzXCIsXG4gIFwic3RpcHNcIixcbiAgXCJzdG9cIixcbiAgXCJzdHJlbnV1c1wiLFxuICBcInN0cnVlc1wiLFxuICBcInN0dWRpb1wiLFxuICBcInN0dWx0dXNcIixcbiAgXCJzdWFkZW9cIixcbiAgXCJzdWFzb3JpYVwiLFxuICBcInN1YlwiLFxuICBcInN1Yml0b1wiLFxuICBcInN1Yml1bmdvXCIsXG4gIFwic3VibGltZVwiLFxuICBcInN1Ym5lY3RvXCIsXG4gIFwic3Vic2Vjb1wiLFxuICBcInN1YnN0YW50aWFcIixcbiAgXCJzdWJ2ZW5pb1wiLFxuICBcInN1Y2NlZG9cIixcbiAgXCJzdWNjdXJyb1wiLFxuICBcInN1ZmZpY2lvXCIsXG4gIFwic3VmZm9jb1wiLFxuICBcInN1ZmZyYWdpdW1cIixcbiAgXCJzdWdnZXJvXCIsXG4gIFwic3VpXCIsXG4gIFwic3VsdW1cIixcbiAgXCJzdW1cIixcbiAgXCJzdW1tYVwiLFxuICBcInN1bW1pc3NlXCIsXG4gIFwic3VtbW9wZXJlXCIsXG4gIFwic3Vtb1wiLFxuICBcInN1bXB0dXNcIixcbiAgXCJzdXBlbGxleFwiLFxuICBcInN1cGVyXCIsXG4gIFwic3VwcGVsbGV4XCIsXG4gIFwic3VwcGxhbnRvXCIsXG4gIFwic3VwcG9ub1wiLFxuICBcInN1cHJhXCIsXG4gIFwic3VyY3VsdXNcIixcbiAgXCJzdXJnb1wiLFxuICBcInN1cnN1bVwiLFxuICBcInN1c2NpcGlvXCIsXG4gIFwic3VzcGVuZG9cIixcbiAgXCJzdXN0aW5lb1wiLFxuICBcInN1dXNcIixcbiAgXCJzeW5hZ29nYVwiLFxuICBcInRhYmVsbGFcIixcbiAgXCJ0YWJlcm51c1wiLFxuICBcInRhYmVzY29cIixcbiAgXCJ0YWJnb1wiLFxuICBcInRhYnVsYVwiLFxuICBcInRhY2VvXCIsXG4gIFwidGFjdHVzXCIsXG4gIFwidGFlZGl1bVwiLFxuICBcInRhbGlvXCIsXG4gIFwidGFsaXNcIixcbiAgXCJ0YWx1c1wiLFxuICBcInRhbVwiLFxuICBcInRhbWRpdVwiLFxuICBcInRhbWVuXCIsXG4gIFwidGFtZXRzaVwiLFxuICBcInRhbWlzaXVtXCIsXG4gIFwidGFtcXVhbVwiLFxuICBcInRhbmRlbVwiLFxuICBcInRhbnRpbGx1c1wiLFxuICBcInRhbnR1bVwiLFxuICBcInRhcmR1c1wiLFxuICBcInRlZ29cIixcbiAgXCJ0ZW1lcml0YXNcIixcbiAgXCJ0ZW1wZXJhbnRpYVwiLFxuICBcInRlbXBsdW1cIixcbiAgXCJ0ZW1wdGF0aW9cIixcbiAgXCJ0ZW1wdXNcIixcbiAgXCJ0ZW5heFwiLFxuICBcInRlbmRvXCIsXG4gIFwidGVuZW9cIixcbiAgXCJ0ZW5lclwiLFxuICBcInRlbnVpc1wiLFxuICBcInRlbnVzXCIsXG4gIFwidGVwZXNjb1wiLFxuICBcInRlcGlkdXNcIixcbiAgXCJ0ZXJcIixcbiAgXCJ0ZXJlYnJvXCIsXG4gIFwidGVyZXNcIixcbiAgXCJ0ZXJnYVwiLFxuICBcInRlcmdlb1wiLFxuICBcInRlcmdpdmVyc2F0aW9cIixcbiAgXCJ0ZXJnb1wiLFxuICBcInRlcmd1bVwiLFxuICBcInRlcm1lc1wiLFxuICBcInRlcm1pbmF0aW9cIixcbiAgXCJ0ZXJvXCIsXG4gIFwidGVycmFcIixcbiAgXCJ0ZXJyZW9cIixcbiAgXCJ0ZXJyaXRvXCIsXG4gIFwidGVycm9yXCIsXG4gIFwidGVyc3VzXCIsXG4gIFwidGVydGl1c1wiLFxuICBcInRlc3RpbW9uaXVtXCIsXG4gIFwidGV4b1wiLFxuICBcInRleHRpbGlzXCIsXG4gIFwidGV4dG9yXCIsXG4gIFwidGV4dHVzXCIsXG4gIFwidGhhbGFzc2ludXNcIixcbiAgXCJ0aGVhdHJ1bVwiLFxuICBcInRoZWNhXCIsXG4gIFwidGhlbWFcIixcbiAgXCJ0aGVvbG9ndXNcIixcbiAgXCJ0aGVybWFlXCIsXG4gIFwidGhlc2F1cnVzXCIsXG4gIFwidGhlc2lzXCIsXG4gIFwidGhvcmF4XCIsXG4gIFwidGh5bWJyYVwiLFxuICBcInRoeW11bVwiLFxuICBcInRpYmlcIixcbiAgXCJ0aW1pZHVzXCIsXG4gIFwidGltb3JcIixcbiAgXCJ0aXR1bHVzXCIsXG4gIFwidG9sZXJvXCIsXG4gIFwidG9sbG9cIixcbiAgXCJ0b25kZW9cIixcbiAgXCJ0b25zb3JcIixcbiAgXCJ0b3JxdWVvXCIsXG4gIFwidG9ycmVuc1wiLFxuICBcInRvdFwiLFxuICBcInRvdGlkZW1cIixcbiAgXCJ0b3RpZXNcIixcbiAgXCJ0b3R1c1wiLFxuICBcInRyYWN0b1wiLFxuICBcInRyYWRvXCIsXG4gIFwidHJhaG9cIixcbiAgXCJ0cmFuc1wiLFxuICBcInRyZWRlY2ltXCIsXG4gIFwidHJlbW9cIixcbiAgXCJ0cmVwaWRlXCIsXG4gIFwidHJlc1wiLFxuICBcInRyaWJ1b1wiLFxuICBcInRyaWNlc2ltdXNcIixcbiAgXCJ0cmlkdWFuYVwiLFxuICBcInRyaWdpbnRhXCIsXG4gIFwidHJpcHVkaW9cIixcbiAgXCJ0cmlzdGlzXCIsXG4gIFwidHJpdW1waHVzXCIsXG4gIFwidHJ1Y2lkb1wiLFxuICBcInRydWN1bGVudGVyXCIsXG4gIFwidHViaW5ldXNcIixcbiAgXCJ0dWlcIixcbiAgXCJ0dW1cIixcbiAgXCJ0dW11bHR1c1wiLFxuICBcInR1bmNcIixcbiAgXCJ0dXJiYVwiLFxuICBcInR1cmJvXCIsXG4gIFwidHVycGVcIixcbiAgXCJ0dXJwaXNcIixcbiAgXCJ0dXRhbWVuXCIsXG4gIFwidHV0aXNcIixcbiAgXCJ0eXJhbm51c1wiLFxuICBcInViZXJyaW1lXCIsXG4gIFwidWJpXCIsXG4gIFwidWxjaXNjb3JcIixcbiAgXCJ1bGx1c1wiLFxuICBcInVsdGVyaXVzXCIsXG4gIFwidWx0aW9cIixcbiAgXCJ1bHRyYVwiLFxuICBcInVtYnJhXCIsXG4gIFwidW1lcnVzXCIsXG4gIFwidW1xdWFtXCIsXG4gIFwidW5hXCIsXG4gIFwidW5kZVwiLFxuICBcInVuZGlxdWVcIixcbiAgXCJ1bml2ZXJzZVwiLFxuICBcInVudXNcIixcbiAgXCJ1cmJhbnVzXCIsXG4gIFwidXJic1wiLFxuICBcInVyZWRvXCIsXG4gIFwidXNpdGFzXCIsXG4gIFwidXNxdWVcIixcbiAgXCJ1c3RpbG9cIixcbiAgXCJ1c3R1bG9cIixcbiAgXCJ1c3VzXCIsXG4gIFwidXRlclwiLFxuICBcInV0ZXJxdWVcIixcbiAgXCJ1dGlsaXNcIixcbiAgXCJ1dGlxdWVcIixcbiAgXCJ1dG9yXCIsXG4gIFwidXRwb3RlXCIsXG4gIFwidXRyaW1xdWVcIixcbiAgXCJ1dHJvcXVlXCIsXG4gIFwidXRydW1cIixcbiAgXCJ1eG9yXCIsXG4gIFwidmFjb1wiLFxuICBcInZhY3V1c1wiLFxuICBcInZhZG9cIixcbiAgXCJ2YWVcIixcbiAgXCJ2YWxkZVwiLFxuICBcInZhbGVuc1wiLFxuICBcInZhbGVvXCIsXG4gIFwidmFsZXR1ZG9cIixcbiAgXCJ2YWxpZHVzXCIsXG4gIFwidmFsbHVtXCIsXG4gIFwidmFwdWx1c1wiLFxuICBcInZhcmlldGFzXCIsXG4gIFwidmFyaXVzXCIsXG4gIFwidmVoZW1lbnNcIixcbiAgXCJ2ZWxcIixcbiAgXCJ2ZWxvY2l0ZXJcIixcbiAgXCJ2ZWx1bVwiLFxuICBcInZlbHV0XCIsXG4gIFwidmVuaWFcIixcbiAgXCJ2ZW5pb1wiLFxuICBcInZlbnRpdG9cIixcbiAgXCJ2ZW50b3N1c1wiLFxuICBcInZlbnR1c1wiLFxuICBcInZlbnVzdGFzXCIsXG4gIFwidmVyXCIsXG4gIFwidmVyYmVyYVwiLFxuICBcInZlcmJ1bVwiLFxuICBcInZlcmVcIixcbiAgXCJ2ZXJlY3VuZGlhXCIsXG4gIFwidmVyZW9yXCIsXG4gIFwidmVyZ29cIixcbiAgXCJ2ZXJpdGFzXCIsXG4gIFwidmVyb1wiLFxuICBcInZlcnN1c1wiLFxuICBcInZlcnRvXCIsXG4gIFwidmVydW10YW1lblwiLFxuICBcInZlcnVzXCIsXG4gIFwidmVzY29cIixcbiAgXCJ2ZXNpY2FcIixcbiAgXCJ2ZXNwZXJcIixcbiAgXCJ2ZXNwaWxsb1wiLFxuICBcInZlc3RlclwiLFxuICBcInZlc3RpZ2l1bVwiLFxuICBcInZlc3RydW1cIixcbiAgXCJ2ZXR1c1wiLFxuICBcInZpYVwiLFxuICBcInZpY2ludXNcIixcbiAgXCJ2aWNpc3NpdHVkb1wiLFxuICBcInZpY3RvcmlhXCIsXG4gIFwidmljdHVzXCIsXG4gIFwidmlkZWxpY2V0XCIsXG4gIFwidmlkZW9cIixcbiAgXCJ2aWR1YXRhXCIsXG4gIFwidmlkdW9cIixcbiAgXCJ2aWdpbG9cIixcbiAgXCJ2aWdvclwiLFxuICBcInZpbGljdXNcIixcbiAgXCJ2aWxpc1wiLFxuICBcInZpbGl0YXNcIixcbiAgXCJ2aWxsYVwiLFxuICBcInZpbmNvXCIsXG4gIFwidmluY3VsdW1cIixcbiAgXCJ2aW5kaWNvXCIsXG4gIFwidmluaXRvclwiLFxuICBcInZpbnVtXCIsXG4gIFwidmlyXCIsXG4gIFwidmlyZ2FcIixcbiAgXCJ2aXJnb1wiLFxuICBcInZpcmlkaXNcIixcbiAgXCJ2aXJpbGl0ZXJcIixcbiAgXCJ2aXJ0dXNcIixcbiAgXCJ2aXNcIixcbiAgXCJ2aXNjdXNcIixcbiAgXCJ2aXRhXCIsXG4gIFwidml0aW9zdXNcIixcbiAgXCJ2aXRpdW1cIixcbiAgXCJ2aXRvXCIsXG4gIFwidml2b1wiLFxuICBcInZpeFwiLFxuICBcInZvYmlzXCIsXG4gIFwidm9jaWZlcm9yXCIsXG4gIFwidm9jb1wiLFxuICBcInZvbGF0aWN1c1wiLFxuICBcInZvbG9cIixcbiAgXCJ2b2x1YmlsaXNcIixcbiAgXCJ2b2x1bnRhcml1c1wiLFxuICBcInZvbHVwXCIsXG4gIFwidm9sdXRhYnJ1bVwiLFxuICBcInZvbHZhXCIsXG4gIFwidm9tZXJcIixcbiAgXCJ2b21pY2FcIixcbiAgXCJ2b21pdG9cIixcbiAgXCJ2b3JhZ29cIixcbiAgXCJ2b3JheFwiLFxuICBcInZvcm9cIixcbiAgXCJ2b3NcIixcbiAgXCJ2b3R1bVwiLFxuICBcInZvdmVvXCIsXG4gIFwidm94XCIsXG4gIFwidnVsYXJpdGVyXCIsXG4gIFwidnVsZ2FyaXNcIixcbiAgXCJ2dWxnaXZhZ3VzXCIsXG4gIFwidnVsZ29cIixcbiAgXCJ2dWxndXNcIixcbiAgXCJ2dWxuZXJvXCIsXG4gIFwidnVsbnVzXCIsXG4gIFwidnVscGVzXCIsXG4gIFwidnVsdGljdWx1c1wiLFxuICBcInZ1bHR1b3N1c1wiLFxuICBcInhpcGhpYXNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYWxpYXNcIixcbiAgXCJjb25zZXF1YXR1clwiLFxuICBcImF1dFwiLFxuICBcInBlcmZlcmVuZGlzXCIsXG4gIFwic2l0XCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcImFjY3VzYW50aXVtXCIsXG4gIFwiZG9sb3JlbXF1ZVwiLFxuICBcImFwZXJpYW1cIixcbiAgXCJlYXF1ZVwiLFxuICBcImlwc2FcIixcbiAgXCJxdWFlXCIsXG4gIFwiYWJcIixcbiAgXCJpbGxvXCIsXG4gIFwiaW52ZW50b3JlXCIsXG4gIFwidmVyaXRhdGlzXCIsXG4gIFwiZXRcIixcbiAgXCJxdWFzaVwiLFxuICBcImFyY2hpdGVjdG9cIixcbiAgXCJiZWF0YWVcIixcbiAgXCJ2aXRhZVwiLFxuICBcImRpY3RhXCIsXG4gIFwic3VudFwiLFxuICBcImV4cGxpY2Fib1wiLFxuICBcImFzcGVybmF0dXJcIixcbiAgXCJhdXRcIixcbiAgXCJvZGl0XCIsXG4gIFwiYXV0XCIsXG4gIFwiZnVnaXRcIixcbiAgXCJzZWRcIixcbiAgXCJxdWlhXCIsXG4gIFwiY29uc2VxdXVudHVyXCIsXG4gIFwibWFnbmlcIixcbiAgXCJkb2xvcmVzXCIsXG4gIFwiZW9zXCIsXG4gIFwicXVpXCIsXG4gIFwicmF0aW9uZVwiLFxuICBcInZvbHVwdGF0ZW1cIixcbiAgXCJzZXF1aVwiLFxuICBcIm5lc2NpdW50XCIsXG4gIFwibmVxdWVcIixcbiAgXCJkb2xvcmVtXCIsXG4gIFwiaXBzdW1cIixcbiAgXCJxdWlhXCIsXG4gIFwiZG9sb3JcIixcbiAgXCJzaXRcIixcbiAgXCJhbWV0XCIsXG4gIFwiY29uc2VjdGV0dXJcIixcbiAgXCJhZGlwaXNjaVwiLFxuICBcInZlbGl0XCIsXG4gIFwic2VkXCIsXG4gIFwicXVpYVwiLFxuICBcIm5vblwiLFxuICBcIm51bXF1YW1cIixcbiAgXCJlaXVzXCIsXG4gIFwibW9kaVwiLFxuICBcInRlbXBvcmFcIixcbiAgXCJpbmNpZHVudFwiLFxuICBcInV0XCIsXG4gIFwibGFib3JlXCIsXG4gIFwiZXRcIixcbiAgXCJkb2xvcmVcIixcbiAgXCJtYWduYW1cIixcbiAgXCJhbGlxdWFtXCIsXG4gIFwicXVhZXJhdFwiLFxuICBcInZvbHVwdGF0ZW1cIixcbiAgXCJ1dFwiLFxuICBcImVuaW1cIixcbiAgXCJhZFwiLFxuICBcIm1pbmltYVwiLFxuICBcInZlbmlhbVwiLFxuICBcInF1aXNcIixcbiAgXCJub3N0cnVtXCIsXG4gIFwiZXhlcmNpdGF0aW9uZW1cIixcbiAgXCJ1bGxhbVwiLFxuICBcImNvcnBvcmlzXCIsXG4gIFwibmVtb1wiLFxuICBcImVuaW1cIixcbiAgXCJpcHNhbVwiLFxuICBcInZvbHVwdGF0ZW1cIixcbiAgXCJxdWlhXCIsXG4gIFwidm9sdXB0YXNcIixcbiAgXCJzaXRcIixcbiAgXCJzdXNjaXBpdFwiLFxuICBcImxhYm9yaW9zYW1cIixcbiAgXCJuaXNpXCIsXG4gIFwidXRcIixcbiAgXCJhbGlxdWlkXCIsXG4gIFwiZXhcIixcbiAgXCJlYVwiLFxuICBcImNvbW1vZGlcIixcbiAgXCJjb25zZXF1YXR1clwiLFxuICBcInF1aXNcIixcbiAgXCJhdXRlbVwiLFxuICBcInZlbFwiLFxuICBcImV1bVwiLFxuICBcIml1cmVcIixcbiAgXCJyZXByZWhlbmRlcml0XCIsXG4gIFwicXVpXCIsXG4gIFwiaW5cIixcbiAgXCJlYVwiLFxuICBcInZvbHVwdGF0ZVwiLFxuICBcInZlbGl0XCIsXG4gIFwiZXNzZVwiLFxuICBcInF1YW1cIixcbiAgXCJuaWhpbFwiLFxuICBcIm1vbGVzdGlhZVwiLFxuICBcImV0XCIsXG4gIFwiaXVzdG9cIixcbiAgXCJvZGlvXCIsXG4gIFwiZGlnbmlzc2ltb3NcIixcbiAgXCJkdWNpbXVzXCIsXG4gIFwicXVpXCIsXG4gIFwiYmxhbmRpdGlpc1wiLFxuICBcInByYWVzZW50aXVtXCIsXG4gIFwibGF1ZGFudGl1bVwiLFxuICBcInRvdGFtXCIsXG4gIFwicmVtXCIsXG4gIFwidm9sdXB0YXR1bVwiLFxuICBcImRlbGVuaXRpXCIsXG4gIFwiYXRxdWVcIixcbiAgXCJjb3JydXB0aVwiLFxuICBcInF1b3NcIixcbiAgXCJkb2xvcmVzXCIsXG4gIFwiZXRcIixcbiAgXCJxdWFzXCIsXG4gIFwibW9sZXN0aWFzXCIsXG4gIFwiZXhjZXB0dXJpXCIsXG4gIFwic2ludFwiLFxuICBcIm9jY2FlY2F0aVwiLFxuICBcImN1cGlkaXRhdGVcIixcbiAgXCJub25cIixcbiAgXCJwcm92aWRlbnRcIixcbiAgXCJzZWRcIixcbiAgXCJ1dFwiLFxuICBcInBlcnNwaWNpYXRpc1wiLFxuICBcInVuZGVcIixcbiAgXCJvbW5pc1wiLFxuICBcImlzdGVcIixcbiAgXCJuYXR1c1wiLFxuICBcImVycm9yXCIsXG4gIFwic2ltaWxpcXVlXCIsXG4gIFwic3VudFwiLFxuICBcImluXCIsXG4gIFwiY3VscGFcIixcbiAgXCJxdWlcIixcbiAgXCJvZmZpY2lhXCIsXG4gIFwiZGVzZXJ1bnRcIixcbiAgXCJtb2xsaXRpYVwiLFxuICBcImFuaW1pXCIsXG4gIFwiaWRcIixcbiAgXCJlc3RcIixcbiAgXCJsYWJvcnVtXCIsXG4gIFwiZXRcIixcbiAgXCJkb2xvcnVtXCIsXG4gIFwiZnVnYVwiLFxuICBcImV0XCIsXG4gIFwiaGFydW1cIixcbiAgXCJxdWlkZW1cIixcbiAgXCJyZXJ1bVwiLFxuICBcImZhY2lsaXNcIixcbiAgXCJlc3RcIixcbiAgXCJldFwiLFxuICBcImV4cGVkaXRhXCIsXG4gIFwiZGlzdGluY3Rpb1wiLFxuICBcIm5hbVwiLFxuICBcImxpYmVyb1wiLFxuICBcInRlbXBvcmVcIixcbiAgXCJjdW1cIixcbiAgXCJzb2x1dGFcIixcbiAgXCJub2Jpc1wiLFxuICBcImVzdFwiLFxuICBcImVsaWdlbmRpXCIsXG4gIFwib3B0aW9cIixcbiAgXCJjdW1xdWVcIixcbiAgXCJuaWhpbFwiLFxuICBcImltcGVkaXRcIixcbiAgXCJxdW9cIixcbiAgXCJwb3Jyb1wiLFxuICBcInF1aXNxdWFtXCIsXG4gIFwiZXN0XCIsXG4gIFwicXVpXCIsXG4gIFwibWludXNcIixcbiAgXCJpZFwiLFxuICBcInF1b2RcIixcbiAgXCJtYXhpbWVcIixcbiAgXCJwbGFjZWF0XCIsXG4gIFwiZmFjZXJlXCIsXG4gIFwicG9zc2ltdXNcIixcbiAgXCJvbW5pc1wiLFxuICBcInZvbHVwdGFzXCIsXG4gIFwiYXNzdW1lbmRhXCIsXG4gIFwiZXN0XCIsXG4gIFwib21uaXNcIixcbiAgXCJkb2xvclwiLFxuICBcInJlcGVsbGVuZHVzXCIsXG4gIFwidGVtcG9yaWJ1c1wiLFxuICBcImF1dGVtXCIsXG4gIFwicXVpYnVzZGFtXCIsXG4gIFwiZXRcIixcbiAgXCJhdXRcIixcbiAgXCJjb25zZXF1YXR1clwiLFxuICBcInZlbFwiLFxuICBcImlsbHVtXCIsXG4gIFwicXVpXCIsXG4gIFwiZG9sb3JlbVwiLFxuICBcImV1bVwiLFxuICBcImZ1Z2lhdFwiLFxuICBcInF1b1wiLFxuICBcInZvbHVwdGFzXCIsXG4gIFwibnVsbGFcIixcbiAgXCJwYXJpYXR1clwiLFxuICBcImF0XCIsXG4gIFwidmVyb1wiLFxuICBcImVvc1wiLFxuICBcImV0XCIsXG4gIFwiYWNjdXNhbXVzXCIsXG4gIFwib2ZmaWNpaXNcIixcbiAgXCJkZWJpdGlzXCIsXG4gIFwiYXV0XCIsXG4gIFwicmVydW1cIixcbiAgXCJuZWNlc3NpdGF0aWJ1c1wiLFxuICBcInNhZXBlXCIsXG4gIFwiZXZlbmlldFwiLFxuICBcInV0XCIsXG4gIFwiZXRcIixcbiAgXCJ2b2x1cHRhdGVzXCIsXG4gIFwicmVwdWRpYW5kYWVcIixcbiAgXCJzaW50XCIsXG4gIFwiZXRcIixcbiAgXCJtb2xlc3RpYWVcIixcbiAgXCJub25cIixcbiAgXCJyZWN1c2FuZGFlXCIsXG4gIFwiaXRhcXVlXCIsXG4gIFwiZWFydW1cIixcbiAgXCJyZXJ1bVwiLFxuICBcImhpY1wiLFxuICBcInRlbmV0dXJcIixcbiAgXCJhXCIsXG4gIFwic2FwaWVudGVcIixcbiAgXCJkZWxlY3R1c1wiLFxuICBcInV0XCIsXG4gIFwiYXV0XCIsXG4gIFwicmVpY2llbmRpc1wiLFxuICBcInZvbHVwdGF0aWJ1c1wiLFxuICBcIm1haW9yZXNcIixcbiAgXCJkb2xvcmlidXNcIixcbiAgXCJhc3BlcmlvcmVzXCIsXG4gIFwicmVwZWxsYXRcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWFsaXlhaFwiLFxuICBcIkFhcm9uXCIsXG4gIFwiQWJhZ2FpbFwiLFxuICBcIkFiYmV5XCIsXG4gIFwiQWJiaWVcIixcbiAgXCJBYmJpZ2FpbFwiLFxuICBcIkFiYnlcIixcbiAgXCJBYmRpZWxcIixcbiAgXCJBYmR1bFwiLFxuICBcIkFiZHVsbGFoXCIsXG4gIFwiQWJlXCIsXG4gIFwiQWJlbFwiLFxuICBcIkFiZWxhcmRvXCIsXG4gIFwiQWJpZ2FpbFwiLFxuICBcIkFiaWdhbGVcIixcbiAgXCJBYmlnYXlsZVwiLFxuICBcIkFibmVyXCIsXG4gIFwiQWJyYWhhbVwiLFxuICBcIkFkYVwiLFxuICBcIkFkYWhcIixcbiAgXCJBZGFsYmVydG9cIixcbiAgXCJBZGFsaW5lXCIsXG4gIFwiQWRhbVwiLFxuICBcIkFkYW5cIixcbiAgXCJBZGRpZVwiLFxuICBcIkFkZGlzb25cIixcbiAgXCJBZGVsYVwiLFxuICBcIkFkZWxiZXJ0XCIsXG4gIFwiQWRlbGVcIixcbiAgXCJBZGVsaWFcIixcbiAgXCJBZGVsaW5lXCIsXG4gIFwiQWRlbGxcIixcbiAgXCJBZGVsbGFcIixcbiAgXCJBZGVsbGVcIixcbiAgXCJBZGl0eWFcIixcbiAgXCJBZG9sZlwiLFxuICBcIkFkb2xmb1wiLFxuICBcIkFkb2xwaFwiLFxuICBcIkFkb2xwaHVzXCIsXG4gIFwiQWRvbmlzXCIsXG4gIFwiQWRyYWluXCIsXG4gIFwiQWRyaWFuXCIsXG4gIFwiQWRyaWFuYVwiLFxuICBcIkFkcmlhbm5hXCIsXG4gIFwiQWRyaWVsXCIsXG4gIFwiQWRyaWVuXCIsXG4gIFwiQWRyaWVubmVcIixcbiAgXCJBZnRvblwiLFxuICBcIkFnbGFlXCIsXG4gIFwiQWduZXNcIixcbiAgXCJBZ3VzdGluXCIsXG4gIFwiQWd1c3RpbmFcIixcbiAgXCJBaG1hZFwiLFxuICBcIkFobWVkXCIsXG4gIFwiQWlkYVwiLFxuICBcIkFpZGFuXCIsXG4gIFwiQWlkZW5cIixcbiAgXCJBaWxlZW5cIixcbiAgXCJBaW1lZVwiLFxuICBcIkFpc2hhXCIsXG4gIFwiQWl5YW5hXCIsXG4gIFwiQWtlZW1cIixcbiAgXCJBbFwiLFxuICBcIkFsYWluYVwiLFxuICBcIkFsYW5cIixcbiAgXCJBbGFuYVwiLFxuICBcIkFsYW5pc1wiLFxuICBcIkFsYW5uYVwiLFxuICBcIkFsYXluYVwiLFxuICBcIkFsYmFcIixcbiAgXCJBbGJlcnRcIixcbiAgXCJBbGJlcnRhXCIsXG4gIFwiQWxiZXJ0aGFcIixcbiAgXCJBbGJlcnRvXCIsXG4gIFwiQWxiaW5cIixcbiAgXCJBbGJpbmFcIixcbiAgXCJBbGRhXCIsXG4gIFwiQWxkZW5cIixcbiAgXCJBbGVjXCIsXG4gIFwiQWxlZW5cIixcbiAgXCJBbGVqYW5kcmFcIixcbiAgXCJBbGVqYW5kcmluXCIsXG4gIFwiQWxla1wiLFxuICBcIkFsZW5hXCIsXG4gIFwiQWxlbmVcIixcbiAgXCJBbGVzc2FuZHJhXCIsXG4gIFwiQWxlc3NhbmRyb1wiLFxuICBcIkFsZXNzaWFcIixcbiAgXCJBbGV0aGFcIixcbiAgXCJBbGV4XCIsXG4gIFwiQWxleGFcIixcbiAgXCJBbGV4YW5kZXJcIixcbiAgXCJBbGV4YW5kcmFcIixcbiAgXCJBbGV4YW5kcmVcIixcbiAgXCJBbGV4YW5kcmVhXCIsXG4gIFwiQWxleGFuZHJpYVwiLFxuICBcIkFsZXhhbmRyaW5lXCIsXG4gIFwiQWxleGFuZHJvXCIsXG4gIFwiQWxleGFuZVwiLFxuICBcIkFsZXhhbm5lXCIsXG4gIFwiQWxleGllXCIsXG4gIFwiQWxleGlzXCIsXG4gIFwiQWxleHlzXCIsXG4gIFwiQWxleHphbmRlclwiLFxuICBcIkFsZlwiLFxuICBcIkFsZm9uc29cIixcbiAgXCJBbGZvbnpvXCIsXG4gIFwiQWxmb3JkXCIsXG4gIFwiQWxmcmVkXCIsXG4gIFwiQWxmcmVkYVwiLFxuICBcIkFsZnJlZG9cIixcbiAgXCJBbGlcIixcbiAgXCJBbGlhXCIsXG4gIFwiQWxpY2VcIixcbiAgXCJBbGljaWFcIixcbiAgXCJBbGlzYVwiLFxuICBcIkFsaXNoYVwiLFxuICBcIkFsaXNvblwiLFxuICBcIkFsaXZpYVwiLFxuICBcIkFsaXlhXCIsXG4gIFwiQWxpeWFoXCIsXG4gIFwiQWxpemFcIixcbiAgXCJBbGl6ZVwiLFxuICBcIkFsbGFuXCIsXG4gIFwiQWxsZW5cIixcbiAgXCJBbGxlbmVcIixcbiAgXCJBbGxpZVwiLFxuICBcIkFsbGlzb25cIixcbiAgXCJBbGx5XCIsXG4gIFwiQWxwaG9uc29cIixcbiAgXCJBbHRhXCIsXG4gIFwiQWx0aGVhXCIsXG4gIFwiQWx2YVwiLFxuICBcIkFsdmFoXCIsXG4gIFwiQWx2ZW5hXCIsXG4gIFwiQWx2ZXJhXCIsXG4gIFwiQWx2ZXJ0YVwiLFxuICBcIkFsdmluYVwiLFxuICBcIkFsdmlzXCIsXG4gIFwiQWx5Y2VcIixcbiAgXCJBbHljaWFcIixcbiAgXCJBbHlzYVwiLFxuICBcIkFseXNoYVwiLFxuICBcIkFseXNvblwiLFxuICBcIkFseXNzb25cIixcbiAgXCJBbWFsaWFcIixcbiAgXCJBbWFuZGFcIixcbiAgXCJBbWFuaVwiLFxuICBcIkFtYXJhXCIsXG4gIFwiQW1hcmlcIixcbiAgXCJBbWF5YVwiLFxuICBcIkFtYmVyXCIsXG4gIFwiQW1icm9zZVwiLFxuICBcIkFtZWxpYVwiLFxuICBcIkFtZWxpZVwiLFxuICBcIkFtZWx5XCIsXG4gIFwiQW1lcmljYVwiLFxuICBcIkFtZXJpY29cIixcbiAgXCJBbWllXCIsXG4gIFwiQW1pbmFcIixcbiAgXCJBbWlyXCIsXG4gIFwiQW1pcmFcIixcbiAgXCJBbWl5YVwiLFxuICBcIkFtb3NcIixcbiAgXCJBbXBhcm9cIixcbiAgXCJBbXlcIixcbiAgXCJBbXlhXCIsXG4gIFwiQW5hXCIsXG4gIFwiQW5hYmVsXCIsXG4gIFwiQW5hYmVsbGVcIixcbiAgXCJBbmFoaVwiLFxuICBcIkFuYWlzXCIsXG4gIFwiQW5hc3RhY2lvXCIsXG4gIFwiQW5hc3Rhc2lhXCIsXG4gIFwiQW5kZXJzb25cIixcbiAgXCJBbmRyZVwiLFxuICBcIkFuZHJlYW5lXCIsXG4gIFwiQW5kcmVhbm5lXCIsXG4gIFwiQW5kcmVzXCIsXG4gIFwiQW5kcmV3XCIsXG4gIFwiQW5keVwiLFxuICBcIkFuZ2VsXCIsXG4gIFwiQW5nZWxhXCIsXG4gIFwiQW5nZWxpY2FcIixcbiAgXCJBbmdlbGluYVwiLFxuICBcIkFuZ2VsaW5lXCIsXG4gIFwiQW5nZWxpdGFcIixcbiAgXCJBbmdlbG9cIixcbiAgXCJBbmdpZVwiLFxuICBcIkFuZ3VzXCIsXG4gIFwiQW5pYmFsXCIsXG4gIFwiQW5pa2FcIixcbiAgXCJBbmlzc2FcIixcbiAgXCJBbml0YVwiLFxuICBcIkFuaXlhXCIsXG4gIFwiQW5peWFoXCIsXG4gIFwiQW5qYWxpXCIsXG4gIFwiQW5uYVwiLFxuICBcIkFubmFiZWxcIixcbiAgXCJBbm5hYmVsbFwiLFxuICBcIkFubmFiZWxsZVwiLFxuICBcIkFubmFsaXNlXCIsXG4gIFwiQW5uYW1hZVwiLFxuICBcIkFubmFtYXJpZVwiLFxuICBcIkFubmVcIixcbiAgXCJBbm5ldHRhXCIsXG4gIFwiQW5uZXR0ZVwiLFxuICBcIkFubmllXCIsXG4gIFwiQW5zZWxcIixcbiAgXCJBbnNsZXlcIixcbiAgXCJBbnRob255XCIsXG4gIFwiQW50b2luZXR0ZVwiLFxuICBcIkFudG9uZVwiLFxuICBcIkFudG9uZXR0YVwiLFxuICBcIkFudG9uZXR0ZVwiLFxuICBcIkFudG9uaWFcIixcbiAgXCJBbnRvbmlldHRhXCIsXG4gIFwiQW50b25pbmFcIixcbiAgXCJBbnRvbmlvXCIsXG4gIFwiQW50d2FuXCIsXG4gIFwiQW50d29uXCIsXG4gIFwiQW55YVwiLFxuICBcIkFwcmlsXCIsXG4gIFwiQXJhXCIsXG4gIFwiQXJhY2VsaVwiLFxuICBcIkFyYWNlbHlcIixcbiAgXCJBcmNoXCIsXG4gIFwiQXJjaGliYWxkXCIsXG4gIFwiQXJkZWxsYVwiLFxuICBcIkFyZGVuXCIsXG4gIFwiQXJkaXRoXCIsXG4gIFwiQXJlbHlcIixcbiAgXCJBcmlcIixcbiAgXCJBcmlhbmVcIixcbiAgXCJBcmlhbm5hXCIsXG4gIFwiQXJpY1wiLFxuICBcIkFyaWVsXCIsXG4gIFwiQXJpZWxsZVwiLFxuICBcIkFyanVuXCIsXG4gIFwiQXJsZW5lXCIsXG4gIFwiQXJsaWVcIixcbiAgXCJBcmxvXCIsXG4gIFwiQXJtYW5kXCIsXG4gIFwiQXJtYW5kb1wiLFxuICBcIkFybWFuaVwiLFxuICBcIkFybmFsZG9cIixcbiAgXCJBcm5lXCIsXG4gIFwiQXJub1wiLFxuICBcIkFybm9sZFwiLFxuICBcIkFybm9sZG9cIixcbiAgXCJBcm51bGZvXCIsXG4gIFwiQXJvblwiLFxuICBcIkFydFwiLFxuICBcIkFydGh1clwiLFxuICBcIkFydHVyb1wiLFxuICBcIkFydmVsXCIsXG4gIFwiQXJ2aWRcIixcbiAgXCJBcnZpbGxhXCIsXG4gIFwiQXJ5YW5uYVwiLFxuICBcIkFzYVwiLFxuICBcIkFzaGFcIixcbiAgXCJBc2hsZWVcIixcbiAgXCJBc2hsZWlnaFwiLFxuICBcIkFzaGxleVwiLFxuICBcIkFzaGx5XCIsXG4gIFwiQXNobHlublwiLFxuICBcIkFzaHRvblwiLFxuICBcIkFzaHR5blwiLFxuICBcIkFzaWFcIixcbiAgXCJBc3N1bnRhXCIsXG4gIFwiQXN0cmlkXCIsXG4gIFwiQXRoZW5hXCIsXG4gIFwiQXVicmVlXCIsXG4gIFwiQXVicmV5XCIsXG4gIFwiQXVkaWVcIixcbiAgXCJBdWRyYVwiLFxuICBcIkF1ZHJlYW5uZVwiLFxuICBcIkF1ZHJleVwiLFxuICBcIkF1Z3VzdFwiLFxuICBcIkF1Z3VzdGFcIixcbiAgXCJBdWd1c3RpbmVcIixcbiAgXCJBdWd1c3R1c1wiLFxuICBcIkF1cmVsaWFcIixcbiAgXCJBdXJlbGllXCIsXG4gIFwiQXVyZWxpb1wiLFxuICBcIkF1cm9yZVwiLFxuICBcIkF1c3RlblwiLFxuICBcIkF1c3RpblwiLFxuICBcIkF1c3R5blwiLFxuICBcIkF1dHVtblwiLFxuICBcIkF2YVwiLFxuICBcIkF2ZXJ5XCIsXG4gIFwiQXZpc1wiLFxuICBcIkF4ZWxcIixcbiAgXCJBeWFuYVwiLFxuICBcIkF5ZGVuXCIsXG4gIFwiQXlsYVwiLFxuICBcIkF5bGluXCIsXG4gIFwiQmFieVwiLFxuICBcIkJhaWxlZVwiLFxuICBcIkJhaWxleVwiLFxuICBcIkJhcmJhcmFcIixcbiAgXCJCYXJuZXlcIixcbiAgXCJCYXJvblwiLFxuICBcIkJhcnJldHRcIixcbiAgXCJCYXJyeVwiLFxuICBcIkJhcnRcIixcbiAgXCJCYXJ0aG9sb21lXCIsXG4gIFwiQmFydG9uXCIsXG4gIFwiQmF5bGVlXCIsXG4gIFwiQmVhdHJpY2VcIixcbiAgXCJCZWF1XCIsXG4gIFwiQmVhdWxhaFwiLFxuICBcIkJlbGxcIixcbiAgXCJCZWxsYVwiLFxuICBcIkJlbGxlXCIsXG4gIFwiQmVuXCIsXG4gIFwiQmVuZWRpY3RcIixcbiAgXCJCZW5qYW1pblwiLFxuICBcIkJlbm5ldHRcIixcbiAgXCJCZW5uaWVcIixcbiAgXCJCZW5ueVwiLFxuICBcIkJlbnRvblwiLFxuICBcIkJlcmVuaWNlXCIsXG4gIFwiQmVybmFkZXR0ZVwiLFxuICBcIkJlcm5hZGluZVwiLFxuICBcIkJlcm5hcmRcIixcbiAgXCJCZXJuYXJkb1wiLFxuICBcIkJlcm5laWNlXCIsXG4gIFwiQmVybmhhcmRcIixcbiAgXCJCZXJuaWNlXCIsXG4gIFwiQmVybmllXCIsXG4gIFwiQmVybmllY2VcIixcbiAgXCJCZXJuaXRhXCIsXG4gIFwiQmVycnlcIixcbiAgXCJCZXJ0XCIsXG4gIFwiQmVydGFcIixcbiAgXCJCZXJ0aGFcIixcbiAgXCJCZXJ0cmFtXCIsXG4gIFwiQmVydHJhbmRcIixcbiAgXCJCZXJ5bFwiLFxuICBcIkJlc3NpZVwiLFxuICBcIkJldGhcIixcbiAgXCJCZXRoYW55XCIsXG4gIFwiQmV0aGVsXCIsXG4gIFwiQmV0c3lcIixcbiAgXCJCZXR0ZVwiLFxuICBcIkJldHRpZVwiLFxuICBcIkJldHR5XCIsXG4gIFwiQmV0dHllXCIsXG4gIFwiQmV1bGFoXCIsXG4gIFwiQmV2ZXJseVwiLFxuICBcIkJpYW5rYVwiLFxuICBcIkJpbGxcIixcbiAgXCJCaWxsaWVcIixcbiAgXCJCaWxseVwiLFxuICBcIkJpcmRpZVwiLFxuICBcIkJsYWlyXCIsXG4gIFwiQmxhaXNlXCIsXG4gIFwiQmxha2VcIixcbiAgXCJCbGFuY2FcIixcbiAgXCJCbGFuY2hlXCIsXG4gIFwiQmxhemVcIixcbiAgXCJCb1wiLFxuICBcIkJvYmJpZVwiLFxuICBcIkJvYmJ5XCIsXG4gIFwiQm9uaXRhXCIsXG4gIFwiQm9ubmllXCIsXG4gIFwiQm9yaXNcIixcbiAgXCJCb3lkXCIsXG4gIFwiQnJhZFwiLFxuICBcIkJyYWRlblwiLFxuICBcIkJyYWRmb3JkXCIsXG4gIFwiQnJhZGxleVwiLFxuICBcIkJyYWRseVwiLFxuICBcIkJyYWR5XCIsXG4gIFwiQnJhZWRlblwiLFxuICBcIkJyYWluXCIsXG4gIFwiQnJhbmRpXCIsXG4gIFwiQnJhbmRvXCIsXG4gIFwiQnJhbmRvblwiLFxuICBcIkJyYW5kdFwiLFxuICBcIkJyYW5keVwiLFxuICBcIkJyYW5keW5cIixcbiAgXCJCcmFubm9uXCIsXG4gIFwiQnJhbnNvblwiLFxuICBcIkJyYW50XCIsXG4gIFwiQnJhdWxpb1wiLFxuICBcIkJyYXh0b25cIixcbiAgXCJCcmF5YW5cIixcbiAgXCJCcmVhbmFcIixcbiAgXCJCcmVhbm5hXCIsXG4gIFwiQnJlYW5uZVwiLFxuICBcIkJyZW5kYVwiLFxuICBcIkJyZW5kYW5cIixcbiAgXCJCcmVuZGVuXCIsXG4gIFwiQnJlbmRvblwiLFxuICBcIkJyZW5uYVwiLFxuICBcIkJyZW5uYW5cIixcbiAgXCJCcmVubm9uXCIsXG4gIFwiQnJlbnRcIixcbiAgXCJCcmV0XCIsXG4gIFwiQnJldHRcIixcbiAgXCJCcmlhXCIsXG4gIFwiQnJpYW5cIixcbiAgXCJCcmlhbmFcIixcbiAgXCJCcmlhbm5lXCIsXG4gIFwiQnJpY2VcIixcbiAgXCJCcmlkZ2V0XCIsXG4gIFwiQnJpZGdldHRlXCIsXG4gIFwiQnJpZGllXCIsXG4gIFwiQnJpZWxsZVwiLFxuICBcIkJyaWdpdHRlXCIsXG4gIFwiQnJpb25uYVwiLFxuICBcIkJyaXNhXCIsXG4gIFwiQnJpdG5leVwiLFxuICBcIkJyaXR0YW55XCIsXG4gIFwiQnJvY2tcIixcbiAgXCJCcm9kZXJpY2tcIixcbiAgXCJCcm9keVwiLFxuICBcIkJyb29rXCIsXG4gIFwiQnJvb2tlXCIsXG4gIFwiQnJvb2tseW5cIixcbiAgXCJCcm9va3NcIixcbiAgXCJCcm93blwiLFxuICBcIkJydWNlXCIsXG4gIFwiQnJ5YW5hXCIsXG4gIFwiQnJ5Y2VcIixcbiAgXCJCcnljZW5cIixcbiAgXCJCcnlvblwiLFxuICBcIkJ1Y2tcIixcbiAgXCJCdWRcIixcbiAgXCJCdWRkeVwiLFxuICBcIkJ1Zm9yZFwiLFxuICBcIkJ1bGFoXCIsXG4gIFwiQnVyZGV0dGVcIixcbiAgXCJCdXJsZXlcIixcbiAgXCJCdXJuaWNlXCIsXG4gIFwiQnVzdGVyXCIsXG4gIFwiQ2FkZVwiLFxuICBcIkNhZGVuXCIsXG4gIFwiQ2Flc2FyXCIsXG4gIFwiQ2FpdGx5blwiLFxuICBcIkNhbGVcIixcbiAgXCJDYWxlYlwiLFxuICBcIkNhbGVpZ2hcIixcbiAgXCJDYWxpXCIsXG4gIFwiQ2FsaXN0YVwiLFxuICBcIkNhbGxpZVwiLFxuICBcIkNhbWRlblwiLFxuICBcIkNhbWVyb25cIixcbiAgXCJDYW1pbGFcIixcbiAgXCJDYW1pbGxhXCIsXG4gIFwiQ2FtaWxsZVwiLFxuICBcIkNhbXJlblwiLFxuICBcIkNhbXJvblwiLFxuICBcIkNhbXJ5blwiLFxuICBcIkNhbXlsbGVcIixcbiAgXCJDYW5kYWNlXCIsXG4gIFwiQ2FuZGVsYXJpb1wiLFxuICBcIkNhbmRpY2VcIixcbiAgXCJDYW5kaWRhXCIsXG4gIFwiQ2FuZGlkb1wiLFxuICBcIkNhcmFcIixcbiAgXCJDYXJleVwiLFxuICBcIkNhcmlzc2FcIixcbiAgXCJDYXJsZWVcIixcbiAgXCJDYXJsZXRvblwiLFxuICBcIkNhcmxleVwiLFxuICBcIkNhcmxpXCIsXG4gIFwiQ2FybGllXCIsXG4gIFwiQ2FybG9cIixcbiAgXCJDYXJsb3NcIixcbiAgXCJDYXJsb3R0YVwiLFxuICBcIkNhcm1lbFwiLFxuICBcIkNhcm1lbGFcIixcbiAgXCJDYXJtZWxsYVwiLFxuICBcIkNhcm1lbG9cIixcbiAgXCJDYXJtZW5cIixcbiAgXCJDYXJtaW5lXCIsXG4gIFwiQ2Fyb2xcIixcbiAgXCJDYXJvbGFubmVcIixcbiAgXCJDYXJvbGVcIixcbiAgXCJDYXJvbGluYVwiLFxuICBcIkNhcm9saW5lXCIsXG4gIFwiQ2Fyb2x5blwiLFxuICBcIkNhcm9seW5lXCIsXG4gIFwiQ2FycmllXCIsXG4gIFwiQ2Fycm9sbFwiLFxuICBcIkNhcnNvblwiLFxuICBcIkNhcnRlclwiLFxuICBcIkNhcnlcIixcbiAgXCJDYXNhbmRyYVwiLFxuICBcIkNhc2V5XCIsXG4gIFwiQ2FzaW1lclwiLFxuICBcIkNhc2ltaXJcIixcbiAgXCJDYXNwZXJcIixcbiAgXCJDYXNzYW5kcmFcIixcbiAgXCJDYXNzYW5kcmVcIixcbiAgXCJDYXNzaWR5XCIsXG4gIFwiQ2Fzc2llXCIsXG4gIFwiQ2F0YWxpbmFcIixcbiAgXCJDYXRlcmluYVwiLFxuICBcIkNhdGhhcmluZVwiLFxuICBcIkNhdGhlcmluZVwiLFxuICBcIkNhdGhyaW5lXCIsXG4gIFwiQ2F0aHJ5blwiLFxuICBcIkNhdGh5XCIsXG4gIFwiQ2F5bGFcIixcbiAgXCJDZWFzYXJcIixcbiAgXCJDZWNlbGlhXCIsXG4gIFwiQ2VjaWxcIixcbiAgXCJDZWNpbGVcIixcbiAgXCJDZWNpbGlhXCIsXG4gIFwiQ2Vkcmlja1wiLFxuICBcIkNlbGVzdGluZVwiLFxuICBcIkNlbGVzdGlub1wiLFxuICBcIkNlbGlhXCIsXG4gIFwiQ2VsaW5lXCIsXG4gIFwiQ2VzYXJcIixcbiAgXCJDaGFkXCIsXG4gIFwiQ2hhZGRcIixcbiAgXCJDaGFkcmlja1wiLFxuICBcIkNoYWltXCIsXG4gIFwiQ2hhbmNlXCIsXG4gIFwiQ2hhbmRsZXJcIixcbiAgXCJDaGFuZWxcIixcbiAgXCJDaGFuZWxsZVwiLFxuICBcIkNoYXJpdHlcIixcbiAgXCJDaGFybGVuZVwiLFxuICBcIkNoYXJsZXNcIixcbiAgXCJDaGFybGV5XCIsXG4gIFwiQ2hhcmxpZVwiLFxuICBcIkNoYXJsb3R0ZVwiLFxuICBcIkNoYXNlXCIsXG4gIFwiQ2hhc2l0eVwiLFxuICBcIkNoYXVuY2V5XCIsXG4gIFwiQ2hheWFcIixcbiAgXCJDaGF6XCIsXG4gIFwiQ2hlbHNlYVwiLFxuICBcIkNoZWxzZXlcIixcbiAgXCJDaGVsc2llXCIsXG4gIFwiQ2hlc2xleVwiLFxuICBcIkNoZXN0ZXJcIixcbiAgXCJDaGV0XCIsXG4gIFwiQ2hleWFubmVcIixcbiAgXCJDaGV5ZW5uZVwiLFxuICBcIkNobG9lXCIsXG4gIFwiQ2hyaXNcIixcbiAgXCJDaHJpc3RcIixcbiAgXCJDaHJpc3RhXCIsXG4gIFwiQ2hyaXN0ZWxsZVwiLFxuICBcIkNocmlzdGlhblwiLFxuICBcIkNocmlzdGlhbmFcIixcbiAgXCJDaHJpc3RpbmFcIixcbiAgXCJDaHJpc3RpbmVcIixcbiAgXCJDaHJpc3RvcFwiLFxuICBcIkNocmlzdG9waGVcIixcbiAgXCJDaHJpc3RvcGhlclwiLFxuICBcIkNocmlzdHlcIixcbiAgXCJDaHluYVwiLFxuICBcIkNpYXJhXCIsXG4gIFwiQ2ljZXJvXCIsXG4gIFwiQ2llbG9cIixcbiAgXCJDaWVycmFcIixcbiAgXCJDaW5keVwiLFxuICBcIkNpdGxhbGxpXCIsXG4gIFwiQ2xhaXJcIixcbiAgXCJDbGFpcmVcIixcbiAgXCJDbGFyYVwiLFxuICBcIkNsYXJhYmVsbGVcIixcbiAgXCJDbGFyZVwiLFxuICBcIkNsYXJpc3NhXCIsXG4gIFwiQ2xhcmtcIixcbiAgXCJDbGF1ZFwiLFxuICBcIkNsYXVkZVwiLFxuICBcIkNsYXVkaWFcIixcbiAgXCJDbGF1ZGllXCIsXG4gIFwiQ2xhdWRpbmVcIixcbiAgXCJDbGF5XCIsXG4gIFwiQ2xlbWVuc1wiLFxuICBcIkNsZW1lbnRcIixcbiAgXCJDbGVtZW50aW5hXCIsXG4gIFwiQ2xlbWVudGluZVwiLFxuICBcIkNsZW1taWVcIixcbiAgXCJDbGVvXCIsXG4gIFwiQ2xlb3JhXCIsXG4gIFwiQ2xldGFcIixcbiAgXCJDbGV0dXNcIixcbiAgXCJDbGV2ZVwiLFxuICBcIkNsZXZlbGFuZFwiLFxuICBcIkNsaWZmb3JkXCIsXG4gIFwiQ2xpZnRvblwiLFxuICBcIkNsaW50XCIsXG4gIFwiQ2xpbnRvblwiLFxuICBcIkNsb3RpbGRlXCIsXG4gIFwiQ2xvdmlzXCIsXG4gIFwiQ2xveWRcIixcbiAgXCJDbHlkZVwiLFxuICBcIkNvYnlcIixcbiAgXCJDb2R5XCIsXG4gIFwiQ29sYnlcIixcbiAgXCJDb2xlXCIsXG4gIFwiQ29sZW1hblwiLFxuICBcIkNvbGluXCIsXG4gIFwiQ29sbGVlblwiLFxuICBcIkNvbGxpblwiLFxuICBcIkNvbHRcIixcbiAgXCJDb2x0ZW5cIixcbiAgXCJDb2x0b25cIixcbiAgXCJDb2x1bWJ1c1wiLFxuICBcIkNvbmNlcGNpb25cIixcbiAgXCJDb25uZXJcIixcbiAgXCJDb25uaWVcIixcbiAgXCJDb25ub3JcIixcbiAgXCJDb25vclwiLFxuICBcIkNvbnJhZFwiLFxuICBcIkNvbnN0YW5jZVwiLFxuICBcIkNvbnN0YW50aW5cIixcbiAgXCJDb25zdWVsb1wiLFxuICBcIkNvb3BlclwiLFxuICBcIkNvcmFcIixcbiAgXCJDb3JhbGllXCIsXG4gIFwiQ29yYmluXCIsXG4gIFwiQ29yZGVsaWFcIixcbiAgXCJDb3JkZWxsXCIsXG4gIFwiQ29yZGlhXCIsXG4gIFwiQ29yZGllXCIsXG4gIFwiQ29yZW5lXCIsXG4gIFwiQ29yaW5lXCIsXG4gIFwiQ29ybmVsaXVzXCIsXG4gIFwiQ29ybmVsbFwiLFxuICBcIkNvcnJpbmVcIixcbiAgXCJDb3J0ZXpcIixcbiAgXCJDb3J0bmV5XCIsXG4gIFwiQ29yeVwiLFxuICBcIkNvdHlcIixcbiAgXCJDb3VydG5leVwiLFxuICBcIkNveVwiLFxuICBcIkNyYWlnXCIsXG4gIFwiQ3Jhd2ZvcmRcIixcbiAgXCJDcmVvbGFcIixcbiAgXCJDcmlzdGFsXCIsXG4gIFwiQ3Jpc3RpYW5cIixcbiAgXCJDcmlzdGluYVwiLFxuICBcIkNyaXN0b2JhbFwiLFxuICBcIkNyaXN0b3BoZXJcIixcbiAgXCJDcnV6XCIsXG4gIFwiQ3J5c3RhbFwiLFxuICBcIkNyeXN0ZWxcIixcbiAgXCJDdWxsZW5cIixcbiAgXCJDdXJ0XCIsXG4gIFwiQ3VydGlzXCIsXG4gIFwiQ3lkbmV5XCIsXG4gIFwiQ3ludGhpYVwiLFxuICBcIkN5cmlsXCIsXG4gIFwiQ3lydXNcIixcbiAgXCJEYWdtYXJcIixcbiAgXCJEYWhsaWFcIixcbiAgXCJEYWlqYVwiLFxuICBcIkRhaXNoYVwiLFxuICBcIkRhaXN5XCIsXG4gIFwiRGFrb3RhXCIsXG4gIFwiRGFsZVwiLFxuICBcIkRhbGxhc1wiLFxuICBcIkRhbGxpblwiLFxuICBcIkRhbHRvblwiLFxuICBcIkRhbWFyaXNcIixcbiAgXCJEYW1lb25cIixcbiAgXCJEYW1pYW5cIixcbiAgXCJEYW1pZW5cIixcbiAgXCJEYW1pb25cIixcbiAgXCJEYW1vblwiLFxuICBcIkRhblwiLFxuICBcIkRhbmFcIixcbiAgXCJEYW5kcmVcIixcbiAgXCJEYW5lXCIsXG4gIFwiRCdhbmdlbG9cIixcbiAgXCJEYW5nZWxvXCIsXG4gIFwiRGFuaWFsXCIsXG4gIFwiRGFuaWVsYVwiLFxuICBcIkRhbmllbGxhXCIsXG4gIFwiRGFuaWVsbGVcIixcbiAgXCJEYW5pa2FcIixcbiAgXCJEYW5uaWVcIixcbiAgXCJEYW5ueVwiLFxuICBcIkRhbnRlXCIsXG4gIFwiRGFueWthXCIsXG4gIFwiRGFwaG5lXCIsXG4gIFwiRGFwaG5lZVwiLFxuICBcIkRhcGhuZXlcIixcbiAgXCJEYXJieVwiLFxuICBcIkRhcmVuXCIsXG4gIFwiRGFyaWFuXCIsXG4gIFwiRGFyaWFuYVwiLFxuICBcIkRhcmllblwiLFxuICBcIkRhcmlvXCIsXG4gIFwiRGFyaW9uXCIsXG4gIFwiRGFyaXVzXCIsXG4gIFwiRGFybGVuZVwiLFxuICBcIkRhcm9uXCIsXG4gIFwiRGFycmVsXCIsXG4gIFwiRGFycmVsbFwiLFxuICBcIkRhcnJlblwiLFxuICBcIkRhcnJpY2tcIixcbiAgXCJEYXJyaW5cIixcbiAgXCJEYXJyaW9uXCIsXG4gIFwiRGFycm9uXCIsXG4gIFwiRGFycnlsXCIsXG4gIFwiRGFyd2luXCIsXG4gIFwiRGFyeWxcIixcbiAgXCJEYXNoYXduXCIsXG4gIFwiRGFzaWFcIixcbiAgXCJEYXZlXCIsXG4gIFwiRGF2aWRcIixcbiAgXCJEYXZpblwiLFxuICBcIkRhdmlvblwiLFxuICBcIkRhdm9uXCIsXG4gIFwiRGF2b250ZVwiLFxuICBcIkRhd25cIixcbiAgXCJEYXdzb25cIixcbiAgXCJEYXhcIixcbiAgXCJEYXlhbmFcIixcbiAgXCJEYXluYVwiLFxuICBcIkRheW5lXCIsXG4gIFwiRGF5dG9uXCIsXG4gIFwiRGVhblwiLFxuICBcIkRlYW5nZWxvXCIsXG4gIFwiRGVhbm5hXCIsXG4gIFwiRGVib3JhaFwiLFxuICBcIkRlY2xhblwiLFxuICBcIkRlZHJpY1wiLFxuICBcIkRlZHJpY2tcIixcbiAgXCJEZWVcIixcbiAgXCJEZWlvblwiLFxuICBcIkRlamFcIixcbiAgXCJEZWphaFwiLFxuICBcIkRlam9uXCIsXG4gIFwiRGVqdWFuXCIsXG4gIFwiRGVsYW5leVwiLFxuICBcIkRlbGJlcnRcIixcbiAgXCJEZWxmaW5hXCIsXG4gIFwiRGVsaWFcIixcbiAgXCJEZWxpbGFoXCIsXG4gIFwiRGVsbFwiLFxuICBcIkRlbGxhXCIsXG4gIFwiRGVsbWVyXCIsXG4gIFwiRGVsb3Jlc1wiLFxuICBcIkRlbHBoYVwiLFxuICBcIkRlbHBoaWFcIixcbiAgXCJEZWxwaGluZVwiLFxuICBcIkRlbHRhXCIsXG4gIFwiRGVtYXJjb1wiLFxuICBcIkRlbWFyY3VzXCIsXG4gIFwiRGVtYXJpb1wiLFxuICBcIkRlbWV0cmlzXCIsXG4gIFwiRGVtZXRyaXVzXCIsXG4gIFwiRGVtb25kXCIsXG4gIFwiRGVuYVwiLFxuICBcIkRlbmlzXCIsXG4gIFwiRGVubmlzXCIsXG4gIFwiRGVvblwiLFxuICBcIkRlb25kcmVcIixcbiAgXCJEZW9udGFlXCIsXG4gIFwiRGVvbnRlXCIsXG4gIFwiRGVyZWNrXCIsXG4gIFwiRGVyZWtcIixcbiAgXCJEZXJpY2tcIixcbiAgXCJEZXJvblwiLFxuICBcIkRlcnJpY2tcIixcbiAgXCJEZXNoYXVuXCIsXG4gIFwiRGVzaGF3blwiLFxuICBcIkRlc2lyZWVcIixcbiAgXCJEZXNtb25kXCIsXG4gIFwiRGVzc2llXCIsXG4gIFwiRGVzdGFueVwiLFxuICBcIkRlc3RpblwiLFxuICBcIkRlc3RpbmVlXCIsXG4gIFwiRGVzdGluZXlcIixcbiAgXCJEZXN0aW5pXCIsXG4gIFwiRGVzdGlueVwiLFxuICBcIkRldmFuXCIsXG4gIFwiRGV2YW50ZVwiLFxuICBcIkRldmVuXCIsXG4gIFwiRGV2aW5cIixcbiAgXCJEZXZvblwiLFxuICBcIkRldm9udGVcIixcbiAgXCJEZXZ5blwiLFxuICBcIkRld2F5bmVcIixcbiAgXCJEZXdpdHRcIixcbiAgXCJEZXh0ZXJcIixcbiAgXCJEaWFtb25kXCIsXG4gIFwiRGlhbmFcIixcbiAgXCJEaWFubmFcIixcbiAgXCJEaWVnb1wiLFxuICBcIkRpbGxhblwiLFxuICBcIkRpbGxvblwiLFxuICBcIkRpbWl0cmlcIixcbiAgXCJEaW5hXCIsXG4gIFwiRGlub1wiLFxuICBcIkRpb25cIixcbiAgXCJEaXhpZVwiLFxuICBcIkRvY2tcIixcbiAgXCJEb2xseVwiLFxuICBcIkRvbG9yZXNcIixcbiAgXCJEb21lbmljXCIsXG4gIFwiRG9tZW5pY2FcIixcbiAgXCJEb21lbmlja1wiLFxuICBcIkRvbWVuaWNvXCIsXG4gIFwiRG9taW5nb1wiLFxuICBcIkRvbWluaWNcIixcbiAgXCJEb21pbmlxdWVcIixcbiAgXCJEb25cIixcbiAgXCJEb25hbGRcIixcbiAgXCJEb25hdG9cIixcbiAgXCJEb25hdm9uXCIsXG4gIFwiRG9ubmFcIixcbiAgXCJEb25uZWxsXCIsXG4gIFwiRG9ubmllXCIsXG4gIFwiRG9ubnlcIixcbiAgXCJEb3JhXCIsXG4gIFwiRG9yY2FzXCIsXG4gIFwiRG9yaWFuXCIsXG4gIFwiRG9yaXNcIixcbiAgXCJEb3JvdGhlYVwiLFxuICBcIkRvcm90aHlcIixcbiAgXCJEb3JyaXNcIixcbiAgXCJEb3J0aGFcIixcbiAgXCJEb3J0aHlcIixcbiAgXCJEb3VnXCIsXG4gIFwiRG91Z2xhc1wiLFxuICBcIkRvdmllXCIsXG4gIFwiRG95bGVcIixcbiAgXCJEcmFrZVwiLFxuICBcIkRyZXdcIixcbiAgXCJEdWFuZVwiLFxuICBcIkR1ZGxleVwiLFxuICBcIkR1bGNlXCIsXG4gIFwiRHVuY2FuXCIsXG4gIFwiRHVyd2FyZFwiLFxuICBcIkR1c3RpblwiLFxuICBcIkR1c3R5XCIsXG4gIFwiRHdpZ2h0XCIsXG4gIFwiRHlsYW5cIixcbiAgXCJFYXJsXCIsXG4gIFwiRWFybGVuZVwiLFxuICBcIkVhcmxpbmVcIixcbiAgXCJFYXJuZXN0XCIsXG4gIFwiRWFybmVzdGluZVwiLFxuICBcIkVhc3RlclwiLFxuICBcIkVhc3RvblwiLFxuICBcIkViYmFcIixcbiAgXCJFYm9ueVwiLFxuICBcIkVkXCIsXG4gIFwiRWRhXCIsXG4gIFwiRWRkXCIsXG4gIFwiRWRkaWVcIixcbiAgXCJFZGVuXCIsXG4gIFwiRWRnYXJcIixcbiAgXCJFZGdhcmRvXCIsXG4gIFwiRWRpc29uXCIsXG4gIFwiRWRtb25kXCIsXG4gIFwiRWRtdW5kXCIsXG4gIFwiRWRuYVwiLFxuICBcIkVkdWFyZG9cIixcbiAgXCJFZHdhcmRcIixcbiAgXCJFZHdhcmRvXCIsXG4gIFwiRWR3aW5cIixcbiAgXCJFZHdpbmFcIixcbiAgXCJFZHl0aFwiLFxuICBcIkVkeXRoZVwiLFxuICBcIkVmZmllXCIsXG4gIFwiRWZyYWluXCIsXG4gIFwiRWZyZW5cIixcbiAgXCJFaWxlZW5cIixcbiAgXCJFaW5hclwiLFxuICBcIkVpbm9cIixcbiAgXCJFbGFkaW9cIixcbiAgXCJFbGFpbmFcIixcbiAgXCJFbGJlcnRcIixcbiAgXCJFbGRhXCIsXG4gIFwiRWxkb25cIixcbiAgXCJFbGRvcmFcIixcbiAgXCJFbGRyZWRcIixcbiAgXCJFbGRyaWRnZVwiLFxuICBcIkVsZWFub3JhXCIsXG4gIFwiRWxlYW5vcmVcIixcbiAgXCJFbGVhemFyXCIsXG4gIFwiRWxlY3RhXCIsXG4gIFwiRWxlbmFcIixcbiAgXCJFbGVub3JcIixcbiAgXCJFbGVub3JhXCIsXG4gIFwiRWxlb25vcmVcIixcbiAgXCJFbGZyaWVkYVwiLFxuICBcIkVsaVwiLFxuICBcIkVsaWFuXCIsXG4gIFwiRWxpYW5lXCIsXG4gIFwiRWxpYXNcIixcbiAgXCJFbGllemVyXCIsXG4gIFwiRWxpamFoXCIsXG4gIFwiRWxpbm9yXCIsXG4gIFwiRWxpbm9yZVwiLFxuICBcIkVsaXNhXCIsXG4gIFwiRWxpc2FiZXRoXCIsXG4gIFwiRWxpc2VcIixcbiAgXCJFbGlzZW9cIixcbiAgXCJFbGlzaGFcIixcbiAgXCJFbGlzc2FcIixcbiAgXCJFbGl6YVwiLFxuICBcIkVsaXphYmV0aFwiLFxuICBcIkVsbGFcIixcbiAgXCJFbGxlblwiLFxuICBcIkVsbGllXCIsXG4gIFwiRWxsaW90XCIsXG4gIFwiRWxsaW90dFwiLFxuICBcIkVsbGlzXCIsXG4gIFwiRWxsc3dvcnRoXCIsXG4gIFwiRWxtZXJcIixcbiAgXCJFbG1pcmFcIixcbiAgXCJFbG1vXCIsXG4gIFwiRWxtb3JlXCIsXG4gIFwiRWxuYVwiLFxuICBcIkVsbm9yYVwiLFxuICBcIkVsb2R5XCIsXG4gIFwiRWxvaXNhXCIsXG4gIFwiRWxvaXNlXCIsXG4gIFwiRWxvdWlzZVwiLFxuICBcIkVsb3lcIixcbiAgXCJFbHJveVwiLFxuICBcIkVsc2FcIixcbiAgXCJFbHNlXCIsXG4gIFwiRWxzaWVcIixcbiAgXCJFbHRhXCIsXG4gIFwiRWx0b25cIixcbiAgXCJFbHZhXCIsXG4gIFwiRWx2ZXJhXCIsXG4gIFwiRWx2aWVcIixcbiAgXCJFbHZpc1wiLFxuICBcIkVsd2luXCIsXG4gIFwiRWx3eW5cIixcbiAgXCJFbHlzZVwiLFxuICBcIkVseXNzYVwiLFxuICBcIkVsemFcIixcbiAgXCJFbWFudWVsXCIsXG4gIFwiRW1lbGlhXCIsXG4gIFwiRW1lbGllXCIsXG4gIFwiRW1lbHlcIixcbiAgXCJFbWVyYWxkXCIsXG4gIFwiRW1lcnNvblwiLFxuICBcIkVtZXJ5XCIsXG4gIFwiRW1pZVwiLFxuICBcIkVtaWxcIixcbiAgXCJFbWlsZVwiLFxuICBcIkVtaWxpYVwiLFxuICBcIkVtaWxpYW5vXCIsXG4gIFwiRW1pbGllXCIsXG4gIFwiRW1pbGlvXCIsXG4gIFwiRW1pbHlcIixcbiAgXCJFbW1hXCIsXG4gIFwiRW1tYWxlZVwiLFxuICBcIkVtbWFudWVsXCIsXG4gIFwiRW1tYW51ZWxsZVwiLFxuICBcIkVtbWV0XCIsXG4gIFwiRW1tZXR0XCIsXG4gIFwiRW1taWVcIixcbiAgXCJFbW1pdHRcIixcbiAgXCJFbW15XCIsXG4gIFwiRW1vcnlcIixcbiAgXCJFbmFcIixcbiAgXCJFbmlkXCIsXG4gIFwiRW5vY2hcIixcbiAgXCJFbm9sYVwiLFxuICBcIkVub3NcIixcbiAgXCJFbnJpY29cIixcbiAgXCJFbnJpcXVlXCIsXG4gIFwiRXBocmFpbVwiLFxuICBcIkVyYVwiLFxuICBcIkVyaWJlcnRvXCIsXG4gIFwiRXJpY1wiLFxuICBcIkVyaWNhXCIsXG4gIFwiRXJpY2hcIixcbiAgXCJFcmlja1wiLFxuICBcIkVyaWNrYVwiLFxuICBcIkVyaWtcIixcbiAgXCJFcmlrYVwiLFxuICBcIkVyaW5cIixcbiAgXCJFcmxpbmdcIixcbiAgXCJFcm5hXCIsXG4gIFwiRXJuZXN0XCIsXG4gIFwiRXJuZXN0aW5hXCIsXG4gIFwiRXJuZXN0aW5lXCIsXG4gIFwiRXJuZXN0b1wiLFxuICBcIkVybmllXCIsXG4gIFwiRXJ2aW5cIixcbiAgXCJFcndpblwiLFxuICBcIkVyeW5cIixcbiAgXCJFc21lcmFsZGFcIixcbiAgXCJFc3BlcmFuemFcIixcbiAgXCJFc3RhXCIsXG4gIFwiRXN0ZWJhblwiLFxuICBcIkVzdGVmYW5pYVwiLFxuICBcIkVzdGVsXCIsXG4gIFwiRXN0ZWxsXCIsXG4gIFwiRXN0ZWxsYVwiLFxuICBcIkVzdGVsbGVcIixcbiAgXCJFc3RldmFuXCIsXG4gIFwiRXN0aGVyXCIsXG4gIFwiRXN0cmVsbGFcIixcbiAgXCJFdGhhXCIsXG4gIFwiRXRoYW5cIixcbiAgXCJFdGhlbFwiLFxuICBcIkV0aGVseW5cIixcbiAgXCJFdGh5bFwiLFxuICBcIkV0dGllXCIsXG4gIFwiRXVkb3JhXCIsXG4gIFwiRXVnZW5lXCIsXG4gIFwiRXVnZW5pYVwiLFxuICBcIkV1bGFcIixcbiAgXCJFdWxhaFwiLFxuICBcIkV1bGFsaWFcIixcbiAgXCJFdW5hXCIsXG4gIFwiRXVuaWNlXCIsXG4gIFwiRXVzZWJpb1wiLFxuICBcIkV2YVwiLFxuICBcIkV2YWx5blwiLFxuICBcIkV2YW5cIixcbiAgXCJFdmFuZ2VsaW5lXCIsXG4gIFwiRXZhbnNcIixcbiAgXCJFdmVcIixcbiAgXCJFdmVsaW5lXCIsXG4gIFwiRXZlbHluXCIsXG4gIFwiRXZlcmFyZG9cIixcbiAgXCJFdmVyZXR0XCIsXG4gIFwiRXZlcmV0dGVcIixcbiAgXCJFdmVydFwiLFxuICBcIkV2aWVcIixcbiAgXCJFd2FsZFwiLFxuICBcIkV3ZWxsXCIsXG4gIFwiRXpla2llbFwiLFxuICBcIkV6ZXF1aWVsXCIsXG4gIFwiRXpyYVwiLFxuICBcIkZhYmlhblwiLFxuICBcIkZhYmlvbGFcIixcbiAgXCJGYWVcIixcbiAgXCJGYW5uaWVcIixcbiAgXCJGYW5ueVwiLFxuICBcIkZhdGltYVwiLFxuICBcIkZhdXN0aW5vXCIsXG4gIFwiRmF1c3RvXCIsXG4gIFwiRmF2aWFuXCIsXG4gIFwiRmF5XCIsXG4gIFwiRmF5ZVwiLFxuICBcIkZlZGVyaWNvXCIsXG4gIFwiRmVsaWNpYVwiLFxuICBcIkZlbGljaXRhXCIsXG4gIFwiRmVsaWNpdHlcIixcbiAgXCJGZWxpcGFcIixcbiAgXCJGZWxpcGVcIixcbiAgXCJGZWxpeFwiLFxuICBcIkZlbHRvblwiLFxuICBcIkZlcm1pblwiLFxuICBcIkZlcm5cIixcbiAgXCJGZXJuYW5kb1wiLFxuICBcIkZlcm5lXCIsXG4gIFwiRmlkZWxcIixcbiAgXCJGaWxpYmVydG9cIixcbiAgXCJGaWxvbWVuYVwiLFxuICBcIkZpbm5cIixcbiAgXCJGaW9uYVwiLFxuICBcIkZsYXZpZVwiLFxuICBcIkZsYXZpb1wiLFxuICBcIkZsZXRhXCIsXG4gIFwiRmxldGNoZXJcIixcbiAgXCJGbG9cIixcbiAgXCJGbG9yZW5jZVwiLFxuICBcIkZsb3JlbmNpb1wiLFxuICBcIkZsb3JpYW5cIixcbiAgXCJGbG9yaWRhXCIsXG4gIFwiRmxvcmluZVwiLFxuICBcIkZsb3NzaWVcIixcbiAgXCJGbG95XCIsXG4gIFwiRmxveWRcIixcbiAgXCJGb3JkXCIsXG4gIFwiRm9yZXN0XCIsXG4gIFwiRm9ycmVzdFwiLFxuICBcIkZvc3RlclwiLFxuICBcIkZyYW5jZXNcIixcbiAgXCJGcmFuY2VzY2FcIixcbiAgXCJGcmFuY2VzY29cIixcbiAgXCJGcmFuY2lzXCIsXG4gIFwiRnJhbmNpc2NhXCIsXG4gIFwiRnJhbmNpc2NvXCIsXG4gIFwiRnJhbmNvXCIsXG4gIFwiRnJhbmtcIixcbiAgXCJGcmFua2llXCIsXG4gIFwiRnJhbnpcIixcbiAgXCJGcmVkXCIsXG4gIFwiRnJlZGFcIixcbiAgXCJGcmVkZGllXCIsXG4gIFwiRnJlZGR5XCIsXG4gIFwiRnJlZGVyaWNcIixcbiAgXCJGcmVkZXJpY2tcIixcbiAgXCJGcmVkZXJpa1wiLFxuICBcIkZyZWRlcmlxdWVcIixcbiAgXCJGcmVkcmlja1wiLFxuICBcIkZyZWR5XCIsXG4gIFwiRnJlZWRhXCIsXG4gIFwiRnJlZW1hblwiLFxuICBcIkZyZWlkYVwiLFxuICBcIkZyaWRhXCIsXG4gIFwiRnJpZWRhXCIsXG4gIFwiRnJpZWRyaWNoXCIsXG4gIFwiRnJpdHpcIixcbiAgXCJGdXJtYW5cIixcbiAgXCJHYWJlXCIsXG4gIFwiR2FicmllbFwiLFxuICBcIkdhYnJpZWxsYVwiLFxuICBcIkdhYnJpZWxsZVwiLFxuICBcIkdhZXRhbm9cIixcbiAgXCJHYWdlXCIsXG4gIFwiR2FpbFwiLFxuICBcIkdhcmRuZXJcIixcbiAgXCJHYXJldHRcIixcbiAgXCJHYXJmaWVsZFwiLFxuICBcIkdhcmxhbmRcIixcbiAgXCJHYXJuZXRcIixcbiAgXCJHYXJuZXR0XCIsXG4gIFwiR2FycmV0XCIsXG4gIFwiR2FycmV0dFwiLFxuICBcIkdhcnJpY2tcIixcbiAgXCJHYXJyaXNvblwiLFxuICBcIkdhcnJ5XCIsXG4gIFwiR2FydGhcIixcbiAgXCJHYXN0b25cIixcbiAgXCJHYXZpblwiLFxuICBcIkdheVwiLFxuICBcIkdheWxlXCIsXG4gIFwiR2F5bG9yZFwiLFxuICBcIkdlbmVcIixcbiAgXCJHZW5lcmFsXCIsXG4gIFwiR2VuZXNpc1wiLFxuICBcIkdlbmV2aWV2ZVwiLFxuICBcIkdlbm5hcm9cIixcbiAgXCJHZW5vdmV2YVwiLFxuICBcIkdlb1wiLFxuICBcIkdlb2ZmcmV5XCIsXG4gIFwiR2VvcmdlXCIsXG4gIFwiR2VvcmdldHRlXCIsXG4gIFwiR2VvcmdpYW5hXCIsXG4gIFwiR2VvcmdpYW5uYVwiLFxuICBcIkdlb3Zhbm5pXCIsXG4gIFwiR2VvdmFubnlcIixcbiAgXCJHZW92YW55XCIsXG4gIFwiR2VyYWxkXCIsXG4gIFwiR2VyYWxkaW5lXCIsXG4gIFwiR2VyYXJkXCIsXG4gIFwiR2VyYXJkb1wiLFxuICBcIkdlcmRhXCIsXG4gIFwiR2VyaGFyZFwiLFxuICBcIkdlcm1haW5lXCIsXG4gIFwiR2VybWFuXCIsXG4gIFwiR2VycnlcIixcbiAgXCJHZXJzb25cIixcbiAgXCJHZXJ0cnVkZVwiLFxuICBcIkdpYVwiLFxuICBcIkdpYW5uaVwiLFxuICBcIkdpZGVvblwiLFxuICBcIkdpbGJlcnRcIixcbiAgXCJHaWxiZXJ0b1wiLFxuICBcIkdpbGRhXCIsXG4gIFwiR2lsZXNcIixcbiAgXCJHaWxsaWFuXCIsXG4gIFwiR2luYVwiLFxuICBcIkdpbm9cIixcbiAgXCJHaW92YW5pXCIsXG4gIFwiR2lvdmFubmFcIixcbiAgXCJHaW92YW5uaVwiLFxuICBcIkdpb3Zhbm55XCIsXG4gIFwiR2lzc2VsbGVcIixcbiAgXCJHaXVzZXBwZVwiLFxuICBcIkdsYWR5Y2VcIixcbiAgXCJHbGFkeXNcIixcbiAgXCJHbGVuXCIsXG4gIFwiR2xlbmRhXCIsXG4gIFwiR2xlbm5hXCIsXG4gIFwiR2xlbm5pZVwiLFxuICBcIkdsb3JpYVwiLFxuICBcIkdvZGZyZXlcIixcbiAgXCJHb2xkYVwiLFxuICBcIkdvbGRlblwiLFxuICBcIkdvbnphbG9cIixcbiAgXCJHb3Jkb25cIixcbiAgXCJHcmFjZVwiLFxuICBcIkdyYWNpZVwiLFxuICBcIkdyYWNpZWxhXCIsXG4gIFwiR3JhZHlcIixcbiAgXCJHcmFoYW1cIixcbiAgXCJHcmFudFwiLFxuICBcIkdyYW52aWxsZVwiLFxuICBcIkdyYXljZVwiLFxuICBcIkdyYXlzb25cIixcbiAgXCJHcmVlblwiLFxuICBcIkdyZWdcIixcbiAgXCJHcmVnZ1wiLFxuICBcIkdyZWdvcmlhXCIsXG4gIFwiR3JlZ29yaW9cIixcbiAgXCJHcmVnb3J5XCIsXG4gIFwiR3JldGFcIixcbiAgXCJHcmV0Y2hlblwiLFxuICBcIkdyZXlzb25cIixcbiAgXCJHcmlmZmluXCIsXG4gIFwiR3JvdmVyXCIsXG4gIFwiR3VhZGFsdXBlXCIsXG4gIFwiR3VkcnVuXCIsXG4gIFwiR3VpZG9cIixcbiAgXCJHdWlsbGVybW9cIixcbiAgXCJHdWlzZXBwZVwiLFxuICBcIkd1bm5hclwiLFxuICBcIkd1bm5lclwiLFxuICBcIkd1c1wiLFxuICBcIkd1c3NpZVwiLFxuICBcIkd1c3RcIixcbiAgXCJHdXN0YXZlXCIsXG4gIFwiR3V5XCIsXG4gIFwiR3dlblwiLFxuICBcIkd3ZW5kb2x5blwiLFxuICBcIkhhZGxleVwiLFxuICBcIkhhaWxlZVwiLFxuICBcIkhhaWxleVwiLFxuICBcIkhhaWxpZVwiLFxuICBcIkhhbFwiLFxuICBcIkhhbGVpZ2hcIixcbiAgXCJIYWxleVwiLFxuICBcIkhhbGllXCIsXG4gIFwiSGFsbGVcIixcbiAgXCJIYWxsaWVcIixcbiAgXCJIYW5rXCIsXG4gIFwiSGFubmFcIixcbiAgXCJIYW5uYWhcIixcbiAgXCJIYW5zXCIsXG4gIFwiSGFyZHlcIixcbiAgXCJIYXJsZXlcIixcbiAgXCJIYXJtb25cIixcbiAgXCJIYXJtb255XCIsXG4gIFwiSGFyb2xkXCIsXG4gIFwiSGFycmlzb25cIixcbiAgXCJIYXJyeVwiLFxuICBcIkhhcnZleVwiLFxuICBcIkhhc2tlbGxcIixcbiAgXCJIYXNzYW5cIixcbiAgXCJIYXNzaWVcIixcbiAgXCJIYXR0aWVcIixcbiAgXCJIYXZlblwiLFxuICBcIkhheWRlblwiLFxuICBcIkhheWxlZVwiLFxuICBcIkhheWxleVwiLFxuICBcIkhheWxpZVwiLFxuICBcIkhhemVsXCIsXG4gIFwiSGF6bGVcIixcbiAgXCJIZWF0aFwiLFxuICBcIkhlYXRoZXJcIixcbiAgXCJIZWF2ZW5cIixcbiAgXCJIZWJlclwiLFxuICBcIkhlY3RvclwiLFxuICBcIkhlaWRpXCIsXG4gIFwiSGVsZW5cIixcbiAgXCJIZWxlbmFcIixcbiAgXCJIZWxlbmVcIixcbiAgXCJIZWxnYVwiLFxuICBcIkhlbGxlblwiLFxuICBcIkhlbG1lclwiLFxuICBcIkhlbG9pc2VcIixcbiAgXCJIZW5kZXJzb25cIixcbiAgXCJIZW5yaVwiLFxuICBcIkhlbnJpZXR0ZVwiLFxuICBcIkhlbnJ5XCIsXG4gIFwiSGVyYmVydFwiLFxuICBcIkhlcm1hblwiLFxuICBcIkhlcm1hbm5cIixcbiAgXCJIZXJtaW5hXCIsXG4gIFwiSGVybWluaWFcIixcbiAgXCJIZXJtaW5pb1wiLFxuICBcIkhlcnNoZWxcIixcbiAgXCJIZXJ0YVwiLFxuICBcIkhlcnRoYVwiLFxuICBcIkhlc3RlclwiLFxuICBcIkhldHRpZVwiLFxuICBcIkhpbGFyaW9cIixcbiAgXCJIaWxiZXJ0XCIsXG4gIFwiSGlsZGFcIixcbiAgXCJIaWxkZWdhcmRcIixcbiAgXCJIaWxsYXJkXCIsXG4gIFwiSGlsbGFyeVwiLFxuICBcIkhpbG1hXCIsXG4gIFwiSGlsdG9uXCIsXG4gIFwiSGlwb2xpdG9cIixcbiAgXCJIaXJhbVwiLFxuICBcIkhvYmFydFwiLFxuICBcIkhvbGRlblwiLFxuICBcIkhvbGxpZVwiLFxuICBcIkhvbGxpc1wiLFxuICBcIkhvbGx5XCIsXG4gIFwiSG9wZVwiLFxuICBcIkhvcmFjZVwiLFxuICBcIkhvcmFjaW9cIixcbiAgXCJIb3J0ZW5zZVwiLFxuICBcIkhvc2VhXCIsXG4gIFwiSG91c3RvblwiLFxuICBcIkhvd2FyZFwiLFxuICBcIkhvd2VsbFwiLFxuICBcIkhveXRcIixcbiAgXCJIdWJlcnRcIixcbiAgXCJIdWRzb25cIixcbiAgXCJIdWdoXCIsXG4gIFwiSHVsZGFcIixcbiAgXCJIdW1iZXJ0b1wiLFxuICBcIkh1bnRlclwiLFxuICBcIkh5bWFuXCIsXG4gIFwiSWFuXCIsXG4gIFwiSWJyYWhpbVwiLFxuICBcIkljaWVcIixcbiAgXCJJZGFcIixcbiAgXCJJZGVsbFwiLFxuICBcIklkZWxsYVwiLFxuICBcIklnbmFjaW9cIixcbiAgXCJJZ25hdGl1c1wiLFxuICBcIklrZVwiLFxuICBcIklsYVwiLFxuICBcIklsZW5lXCIsXG4gIFwiSWxpYW5hXCIsXG4gIFwiSW1hXCIsXG4gIFwiSW1hbmlcIixcbiAgXCJJbWVsZGFcIixcbiAgXCJJbW1hbnVlbFwiLFxuICBcIkltb2dlbmVcIixcbiAgXCJJbmVzXCIsXG4gIFwiSXJtYVwiLFxuICBcIklydmluZ1wiLFxuICBcIklyd2luXCIsXG4gIFwiSXNhYWNcIixcbiAgXCJJc2FiZWxcIixcbiAgXCJJc2FiZWxsXCIsXG4gIFwiSXNhYmVsbGFcIixcbiAgXCJJc2FiZWxsZVwiLFxuICBcIklzYWNcIixcbiAgXCJJc2Fkb3JlXCIsXG4gIFwiSXNhaVwiLFxuICBcIklzYWlhaFwiLFxuICBcIklzYWlhc1wiLFxuICBcIklzaWRyb1wiLFxuICBcIklzbWFlbFwiLFxuICBcIklzb2JlbFwiLFxuICBcIklzb21cIixcbiAgXCJJc3JhZWxcIixcbiAgXCJJc3NhY1wiLFxuICBcIkl0emVsXCIsXG4gIFwiSXZhXCIsXG4gIFwiSXZhaFwiLFxuICBcIkl2b3J5XCIsXG4gIFwiSXZ5XCIsXG4gIFwiSXphYmVsbGFcIixcbiAgXCJJemFpYWhcIixcbiAgXCJKYWJhcmlcIixcbiAgXCJKYWNlXCIsXG4gIFwiSmFjZXlcIixcbiAgXCJKYWNpbnRoZVwiLFxuICBcIkphY2ludG9cIixcbiAgXCJKYWNrXCIsXG4gIFwiSmFja2VsaW5lXCIsXG4gIFwiSmFja2llXCIsXG4gIFwiSmFja2x5blwiLFxuICBcIkphY2tzb25cIixcbiAgXCJKYWNreVwiLFxuICBcIkphY2x5blwiLFxuICBcIkphY3F1ZWx5blwiLFxuICBcIkphY3F1ZXNcIixcbiAgXCJKYWN5bnRoZVwiLFxuICBcIkphZGFcIixcbiAgXCJKYWRlXCIsXG4gIFwiSmFkZW5cIixcbiAgXCJKYWRvblwiLFxuICBcIkphZHluXCIsXG4gIFwiSmFlZGVuXCIsXG4gIFwiSmFpZGFcIixcbiAgXCJKYWlkZW5cIixcbiAgXCJKYWlseW5cIixcbiAgXCJKYWltZVwiLFxuICBcIkphaXJvXCIsXG4gIFwiSmFrYXlsYVwiLFxuICBcIkpha2VcIixcbiAgXCJKYWtvYlwiLFxuICBcIkphbGVlbFwiLFxuICBcIkphbGVuXCIsXG4gIFwiSmFsb25cIixcbiAgXCJKYWx5blwiLFxuICBcIkphbWFhbFwiLFxuICBcIkphbWFsXCIsXG4gIFwiSmFtYXJcIixcbiAgXCJKYW1hcmN1c1wiLFxuICBcIkphbWVsXCIsXG4gIFwiSmFtZXNvblwiLFxuICBcIkphbWV5XCIsXG4gIFwiSmFtaWVcIixcbiAgXCJKYW1pbFwiLFxuICBcIkphbWlyXCIsXG4gIFwiSmFtaXNvblwiLFxuICBcIkphbW1pZVwiLFxuICBcIkphblwiLFxuICBcIkphbmFcIixcbiAgXCJKYW5hZVwiLFxuICBcIkphbmVcIixcbiAgXCJKYW5lbGxlXCIsXG4gIFwiSmFuZXNzYVwiLFxuICBcIkphbmV0XCIsXG4gIFwiSmFuaWNlXCIsXG4gIFwiSmFuaWNrXCIsXG4gIFwiSmFuaWVcIixcbiAgXCJKYW5pc1wiLFxuICBcIkphbml5YVwiLFxuICBcIkphbm5pZVwiLFxuICBcIkphbnlcIixcbiAgXCJKYXF1YW5cIixcbiAgXCJKYXF1ZWxpblwiLFxuICBcIkphcXVlbGluZVwiLFxuICBcIkphcmVkXCIsXG4gIFwiSmFyZW5cIixcbiAgXCJKYXJvZFwiLFxuICBcIkphcm9uXCIsXG4gIFwiSmFycmVkXCIsXG4gIFwiSmFycmVsbFwiLFxuICBcIkphcnJldFwiLFxuICBcIkphcnJldHRcIixcbiAgXCJKYXJyb2RcIixcbiAgXCJKYXJ2aXNcIixcbiAgXCJKYXNlblwiLFxuICBcIkphc21pblwiLFxuICBcIkphc29uXCIsXG4gIFwiSmFzcGVyXCIsXG4gIFwiSmF1bml0YVwiLFxuICBcIkphdmllclwiLFxuICBcIkphdm9uXCIsXG4gIFwiSmF2b250ZVwiLFxuICBcIkpheVwiLFxuICBcIkpheWNlXCIsXG4gIFwiSmF5Y2VlXCIsXG4gIFwiSmF5ZGFcIixcbiAgXCJKYXlkZVwiLFxuICBcIkpheWRlblwiLFxuICBcIkpheWRvblwiLFxuICBcIkpheWxhblwiLFxuICBcIkpheWxlblwiLFxuICBcIkpheWxpblwiLFxuICBcIkpheWxvblwiLFxuICBcIkpheW1lXCIsXG4gIFwiSmF5bmVcIixcbiAgXCJKYXlzb25cIixcbiAgXCJKYXpseW5cIixcbiAgXCJKYXptaW5cIixcbiAgXCJKYXpteW5cIixcbiAgXCJKYXpteW5lXCIsXG4gIFwiSmVhblwiLFxuICBcIkplYW5ldHRlXCIsXG4gIFwiSmVhbmllXCIsXG4gIFwiSmVhbm5lXCIsXG4gIFwiSmVkXCIsXG4gIFwiSmVkZWRpYWhcIixcbiAgXCJKZWRpZGlhaFwiLFxuICBcIkplZmZcIixcbiAgXCJKZWZmZXJleVwiLFxuICBcIkplZmZlcnlcIixcbiAgXCJKZWZmcmV5XCIsXG4gIFwiSmVmZnJ5XCIsXG4gIFwiSmVuYVwiLFxuICBcIkplbmlmZXJcIixcbiAgXCJKZW5uaWVcIixcbiAgXCJKZW5uaWZlclwiLFxuICBcIkplbm5pbmdzXCIsXG4gIFwiSmVubnlmZXJcIixcbiAgXCJKZW5zZW5cIixcbiAgXCJKZXJhZFwiLFxuICBcIkplcmFsZFwiLFxuICBcIkplcmFtaWVcIixcbiAgXCJKZXJhbXlcIixcbiAgXCJKZXJlbFwiLFxuICBcIkplcmVtaWVcIixcbiAgXCJKZXJlbXlcIixcbiAgXCJKZXJtYWluXCIsXG4gIFwiSmVybWFpbmVcIixcbiAgXCJKZXJtZXlcIixcbiAgXCJKZXJvZFwiLFxuICBcIkplcm9tZVwiLFxuICBcIkplcm9teVwiLFxuICBcIkplcnJlbGxcIixcbiAgXCJKZXJyb2RcIixcbiAgXCJKZXJyb2xkXCIsXG4gIFwiSmVycnlcIixcbiAgXCJKZXNzXCIsXG4gIFwiSmVzc2VcIixcbiAgXCJKZXNzaWNhXCIsXG4gIFwiSmVzc2llXCIsXG4gIFwiSmVzc2lrYVwiLFxuICBcIkplc3N5XCIsXG4gIFwiSmVzc3ljYVwiLFxuICBcIkplc3VzXCIsXG4gIFwiSmV0dFwiLFxuICBcIkpldHRpZVwiLFxuICBcIkpldm9uXCIsXG4gIFwiSmV3ZWxcIixcbiAgXCJKZXdlbGxcIixcbiAgXCJKaWxsaWFuXCIsXG4gIFwiSmltbWllXCIsXG4gIFwiSmltbXlcIixcbiAgXCJKb1wiLFxuICBcIkpvYW5cIixcbiAgXCJKb2FuYVwiLFxuICBcIkpvYW5pZVwiLFxuICBcIkpvYW5uZVwiLFxuICBcIkpvYW5uaWVcIixcbiAgXCJKb2FubnlcIixcbiAgXCJKb2FueVwiLFxuICBcIkpvYXF1aW5cIixcbiAgXCJKb2NlbHluXCIsXG4gIFwiSm9kaWVcIixcbiAgXCJKb2R5XCIsXG4gIFwiSm9lXCIsXG4gIFwiSm9lbFwiLFxuICBcIkpvZWxsZVwiLFxuICBcIkpvZXNwaFwiLFxuICBcIkpvZXlcIixcbiAgXCJKb2hhblwiLFxuICBcIkpvaGFublwiLFxuICBcIkpvaGFubmFcIixcbiAgXCJKb2hhdGhhblwiLFxuICBcIkpvaG5cIixcbiAgXCJKb2huYXRoYW5cIixcbiAgXCJKb2huYXRob25cIixcbiAgXCJKb2hubmllXCIsXG4gIFwiSm9obm55XCIsXG4gIFwiSm9obnBhdWxcIixcbiAgXCJKb2huc29uXCIsXG4gIFwiSm9saWVcIixcbiAgXCJKb25cIixcbiAgXCJKb25hc1wiLFxuICBcIkpvbmF0YW5cIixcbiAgXCJKb25hdGhhblwiLFxuICBcIkpvbmF0aG9uXCIsXG4gIFwiSm9yZGFuXCIsXG4gIFwiSm9yZGFuZVwiLFxuICBcIkpvcmRpXCIsXG4gIFwiSm9yZG9uXCIsXG4gIFwiSm9yZHlcIixcbiAgXCJKb3JkeW5cIixcbiAgXCJKb3JnZVwiLFxuICBcIkpvc2VcIixcbiAgXCJKb3NlZmFcIixcbiAgXCJKb3NlZmluYVwiLFxuICBcIkpvc2VwaFwiLFxuICBcIkpvc2VwaGluZVwiLFxuICBcIkpvc2hcIixcbiAgXCJKb3NodWFcIixcbiAgXCJKb3NodWFoXCIsXG4gIFwiSm9zaWFoXCIsXG4gIFwiSm9zaWFuZVwiLFxuICBcIkpvc2lhbm5lXCIsXG4gIFwiSm9zaWVcIixcbiAgXCJKb3N1ZVwiLFxuICBcIkpvdmFuXCIsXG4gIFwiSm92YW5pXCIsXG4gIFwiSm92YW5ueVwiLFxuICBcIkpvdmFueVwiLFxuICBcIkpveVwiLFxuICBcIkpveWNlXCIsXG4gIFwiSnVhbmFcIixcbiAgXCJKdWFuaXRhXCIsXG4gIFwiSnVkYWhcIixcbiAgXCJKdWRkXCIsXG4gIFwiSnVkZVwiLFxuICBcIkp1ZGdlXCIsXG4gIFwiSnVkc29uXCIsXG4gIFwiSnVkeVwiLFxuICBcIkp1bGVzXCIsXG4gIFwiSnVsaWFcIixcbiAgXCJKdWxpYW5cIixcbiAgXCJKdWxpYW5hXCIsXG4gIFwiSnVsaWFubmVcIixcbiAgXCJKdWxpZVwiLFxuICBcIkp1bGllblwiLFxuICBcIkp1bGlldFwiLFxuICBcIkp1bGlvXCIsXG4gIFwiSnVsaXVzXCIsXG4gIFwiSnVuZVwiLFxuICBcIkp1bmlvclwiLFxuICBcIkp1bml1c1wiLFxuICBcIkp1c3RlblwiLFxuICBcIkp1c3RpY2VcIixcbiAgXCJKdXN0aW5hXCIsXG4gIFwiSnVzdGluZVwiLFxuICBcIkp1c3RvblwiLFxuICBcIkp1c3R1c1wiLFxuICBcIkp1c3R5blwiLFxuICBcIkp1dmVuYWxcIixcbiAgXCJKdXdhblwiLFxuICBcIkthY2V5XCIsXG4gIFwiS2FjaVwiLFxuICBcIkthY2llXCIsXG4gIFwiS2FkZVwiLFxuICBcIkthZGVuXCIsXG4gIFwiS2FkaW5cIixcbiAgXCJLYWVsYVwiLFxuICBcIkthZWx5blwiLFxuICBcIkthaWFcIixcbiAgXCJLYWlsZWVcIixcbiAgXCJLYWlsZXlcIixcbiAgXCJLYWlseW5cIixcbiAgXCJLYWl0bGluXCIsXG4gIFwiS2FpdGx5blwiLFxuICBcIkthbGVcIixcbiAgXCJLYWxlYlwiLFxuICBcIkthbGVpZ2hcIixcbiAgXCJLYWxleVwiLFxuICBcIkthbGlcIixcbiAgXCJLYWxsaWVcIixcbiAgXCJLYW1lcm9uXCIsXG4gIFwiS2FtaWxsZVwiLFxuICBcIkthbXJlblwiLFxuICBcIkthbXJvblwiLFxuICBcIkthbXJ5blwiLFxuICBcIkthbmVcIixcbiAgXCJLYXJhXCIsXG4gIFwiS2FyZWVtXCIsXG4gIFwiS2FyZWxsZVwiLFxuICBcIkthcmVuXCIsXG4gIFwiS2FyaVwiLFxuICBcIkthcmlhbmVcIixcbiAgXCJLYXJpYW5uZVwiLFxuICBcIkthcmluYVwiLFxuICBcIkthcmluZVwiLFxuICBcIkthcmxcIixcbiAgXCJLYXJsZWVcIixcbiAgXCJLYXJsZXlcIixcbiAgXCJLYXJsaVwiLFxuICBcIkthcmxpZVwiLFxuICBcIkthcm9sYW5uXCIsXG4gIFwiS2Fyc29uXCIsXG4gIFwiS2FzYW5kcmFcIixcbiAgXCJLYXNleVwiLFxuICBcIkthc3NhbmRyYVwiLFxuICBcIkthdGFyaW5hXCIsXG4gIFwiS2F0ZWxpblwiLFxuICBcIkthdGVseW5cIixcbiAgXCJLYXRlbHlublwiLFxuICBcIkthdGhhcmluYVwiLFxuICBcIkthdGhlcmluZVwiLFxuICBcIkthdGhlcnluXCIsXG4gIFwiS2F0aGxlZW5cIixcbiAgXCJLYXRobHluXCIsXG4gIFwiS2F0aHJ5blwiLFxuICBcIkthdGhyeW5lXCIsXG4gIFwiS2F0bHluXCIsXG4gIFwiS2F0bHlublwiLFxuICBcIkthdHJpbmFcIixcbiAgXCJLYXRyaW5lXCIsXG4gIFwiS2F0dGllXCIsXG4gIFwiS2F2b25cIixcbiAgXCJLYXlcIixcbiAgXCJLYXlhXCIsXG4gIFwiS2F5Y2VlXCIsXG4gIFwiS2F5ZGVuXCIsXG4gIFwiS2F5bGFcIixcbiAgXCJLYXlsYWhcIixcbiAgXCJLYXlsZWVcIixcbiAgXCJLYXlsZWlnaFwiLFxuICBcIktheWxleVwiLFxuICBcIktheWxpXCIsXG4gIFwiS2F5bGllXCIsXG4gIFwiS2F5bGluXCIsXG4gIFwiS2VhZ2FuXCIsXG4gIFwiS2VhbnVcIixcbiAgXCJLZWFyYVwiLFxuICBcIktlYXRvblwiLFxuICBcIktlZWdhblwiLFxuICBcIktlZWxleVwiLFxuICBcIktlZWx5XCIsXG4gIFwiS2VlbmFuXCIsXG4gIFwiS2VpcmFcIixcbiAgXCJLZWl0aFwiLFxuICBcIktlbGxlblwiLFxuICBcIktlbGxleVwiLFxuICBcIktlbGxpXCIsXG4gIFwiS2VsbGllXCIsXG4gIFwiS2VsbHlcIixcbiAgXCJLZWxzaVwiLFxuICBcIktlbHNpZVwiLFxuICBcIktlbHRvblwiLFxuICBcIktlbHZpblwiLFxuICBcIktlblwiLFxuICBcIktlbmRhbGxcIixcbiAgXCJLZW5kcmFcIixcbiAgXCJLZW5kcmlja1wiLFxuICBcIktlbm5hXCIsXG4gIFwiS2VubmVkaVwiLFxuICBcIktlbm5lZHlcIixcbiAgXCJLZW5uZXRoXCIsXG4gIFwiS2Vubml0aFwiLFxuICBcIktlbm55XCIsXG4gIFwiS2VudG9uXCIsXG4gIFwiS2VueWFcIixcbiAgXCJLZW55YXR0YVwiLFxuICBcIktlbnlvblwiLFxuICBcIktlb25cIixcbiAgXCJLZXNoYXVuXCIsXG4gIFwiS2VzaGF3blwiLFxuICBcIktldmVuXCIsXG4gIFwiS2V2aW5cIixcbiAgXCJLZXZvblwiLFxuICBcIktleW9uXCIsXG4gIFwiS2V5c2hhd25cIixcbiAgXCJLaGFsaWRcIixcbiAgXCJLaGFsaWxcIixcbiAgXCJLaWFuXCIsXG4gIFwiS2lhbmFcIixcbiAgXCJLaWFubmFcIixcbiAgXCJLaWFyYVwiLFxuICBcIktpYXJyYVwiLFxuICBcIktpZWxcIixcbiAgXCJLaWVyYVwiLFxuICBcIktpZXJhblwiLFxuICBcIktpbGV5XCIsXG4gIFwiS2ltXCIsXG4gIFwiS2ltYmVybHlcIixcbiAgXCJLaW5nXCIsXG4gIFwiS2lwXCIsXG4gIFwiS2lyYVwiLFxuICBcIktpcmtcIixcbiAgXCJLaXJzdGVuXCIsXG4gIFwiS2lyc3RpblwiLFxuICBcIktpdHR5XCIsXG4gIFwiS29iZVwiLFxuICBcIktvYnlcIixcbiAgXCJLb2R5XCIsXG4gIFwiS29sYnlcIixcbiAgXCJLb2xlXCIsXG4gIFwiS29yYmluXCIsXG4gIFwiS29yZXlcIixcbiAgXCJLb3J5XCIsXG4gIFwiS3JhaWdcIixcbiAgXCJLcmlzXCIsXG4gIFwiS3Jpc3RhXCIsXG4gIFwiS3Jpc3RpYW5cIixcbiAgXCJLcmlzdGluXCIsXG4gIFwiS3Jpc3RpbmFcIixcbiAgXCJLcmlzdG9mZXJcIixcbiAgXCJLcmlzdG9mZmVyXCIsXG4gIFwiS3Jpc3RvcGhlclwiLFxuICBcIktyaXN0eVwiLFxuICBcIktyeXN0YWxcIixcbiAgXCJLcnlzdGVsXCIsXG4gIFwiS3J5c3RpbmFcIixcbiAgXCJLdXJ0XCIsXG4gIFwiS3VydGlzXCIsXG4gIFwiS3lsYVwiLFxuICBcIkt5bGVcIixcbiAgXCJLeWxlZVwiLFxuICBcIkt5bGVpZ2hcIixcbiAgXCJLeWxlclwiLFxuICBcIkt5bGllXCIsXG4gIFwiS3lyYVwiLFxuICBcIkxhY2V5XCIsXG4gIFwiTGFjeVwiLFxuICBcIkxhZGFyaXVzXCIsXG4gIFwiTGFmYXlldHRlXCIsXG4gIFwiTGFpbGFcIixcbiAgXCJMYWlzaGFcIixcbiAgXCJMYW1hclwiLFxuICBcIkxhbWJlcnRcIixcbiAgXCJMYW1vbnRcIixcbiAgXCJMYW5jZVwiLFxuICBcIkxhbmRlblwiLFxuICBcIkxhbmVcIixcbiAgXCJMYW5leVwiLFxuICBcIkxhcmlzc2FcIixcbiAgXCJMYXJvblwiLFxuICBcIkxhcnJ5XCIsXG4gIFwiTGFydWVcIixcbiAgXCJMYXVyYVwiLFxuICBcIkxhdXJlbFwiLFxuICBcIkxhdXJlblwiLFxuICBcIkxhdXJlbmNlXCIsXG4gIFwiTGF1cmV0dGFcIixcbiAgXCJMYXVyaWFuZVwiLFxuICBcIkxhdXJpYW5uZVwiLFxuICBcIkxhdXJpZVwiLFxuICBcIkxhdXJpbmVcIixcbiAgXCJMYXVyeVwiLFxuICBcIkxhdXJ5blwiLFxuICBcIkxhdmFkYVwiLFxuICBcIkxhdmVyblwiLFxuICBcIkxhdmVybmFcIixcbiAgXCJMYXZlcm5lXCIsXG4gIFwiTGF2aW5hXCIsXG4gIFwiTGF2aW5pYVwiLFxuICBcIkxhdm9uXCIsXG4gIFwiTGF2b25uZVwiLFxuICBcIkxhd3JlbmNlXCIsXG4gIFwiTGF3c29uXCIsXG4gIFwiTGF5bGFcIixcbiAgXCJMYXluZVwiLFxuICBcIkxhemFyb1wiLFxuICBcIkxlYVwiLFxuICBcIkxlYW5uXCIsXG4gIFwiTGVhbm5hXCIsXG4gIFwiTGVhbm5lXCIsXG4gIFwiTGVhdGhhXCIsXG4gIFwiTGVkYVwiLFxuICBcIkxlZVwiLFxuICBcIkxlaWZcIixcbiAgXCJMZWlsYVwiLFxuICBcIkxlaWxhbmlcIixcbiAgXCJMZWxhXCIsXG4gIFwiTGVsYWhcIixcbiAgXCJMZWxhbmRcIixcbiAgXCJMZWxpYVwiLFxuICBcIkxlbXBpXCIsXG4gIFwiTGVtdWVsXCIsXG4gIFwiTGVubmFcIixcbiAgXCJMZW5uaWVcIixcbiAgXCJMZW5ueVwiLFxuICBcIkxlbm9yYVwiLFxuICBcIkxlbm9yZVwiLFxuICBcIkxlb1wiLFxuICBcIkxlb2xhXCIsXG4gIFwiTGVvblwiLFxuICBcIkxlb25hcmRcIixcbiAgXCJMZW9uYXJkb1wiLFxuICBcIkxlb25lXCIsXG4gIFwiTGVvbmVsXCIsXG4gIFwiTGVvbmllXCIsXG4gIFwiTGVvbm9yXCIsXG4gIFwiTGVvbm9yYVwiLFxuICBcIkxlb3BvbGRcIixcbiAgXCJMZW9wb2xkb1wiLFxuICBcIkxlb3JhXCIsXG4gIFwiTGVyYVwiLFxuICBcIkxlc2xleVwiLFxuICBcIkxlc2xpZVwiLFxuICBcIkxlc2x5XCIsXG4gIFwiTGVzc2llXCIsXG4gIFwiTGVzdGVyXCIsXG4gIFwiTGV0YVwiLFxuICBcIkxldGhhXCIsXG4gIFwiTGV0aXRpYVwiLFxuICBcIkxldmlcIixcbiAgXCJMZXdcIixcbiAgXCJMZXdpc1wiLFxuICBcIkxleGlcIixcbiAgXCJMZXhpZVwiLFxuICBcIkxleHVzXCIsXG4gIFwiTGlhXCIsXG4gIFwiTGlhbVwiLFxuICBcIkxpYW5hXCIsXG4gIFwiTGliYmllXCIsXG4gIFwiTGliYnlcIixcbiAgXCJMaWxhXCIsXG4gIFwiTGlsaWFuXCIsXG4gIFwiTGlsaWFuYVwiLFxuICBcIkxpbGlhbmVcIixcbiAgXCJMaWxsYVwiLFxuICBcIkxpbGxpYW5cIixcbiAgXCJMaWxsaWFuYVwiLFxuICBcIkxpbGxpZVwiLFxuICBcIkxpbGx5XCIsXG4gIFwiTGlseVwiLFxuICBcIkxpbHlhblwiLFxuICBcIkxpbmFcIixcbiAgXCJMaW5jb2xuXCIsXG4gIFwiTGluZGFcIixcbiAgXCJMaW5kc2F5XCIsXG4gIFwiTGluZHNleVwiLFxuICBcIkxpbm5lYVwiLFxuICBcIkxpbm5pZVwiLFxuICBcIkxpbndvb2RcIixcbiAgXCJMaW9uZWxcIixcbiAgXCJMaXNhXCIsXG4gIFwiTGlzYW5kcm9cIixcbiAgXCJMaXNldHRlXCIsXG4gIFwiTGl0enlcIixcbiAgXCJMaXphXCIsXG4gIFwiTGl6ZXRoXCIsXG4gIFwiTGl6emllXCIsXG4gIFwiTGxld2VsbHluXCIsXG4gIFwiTGxveWRcIixcbiAgXCJMb2dhblwiLFxuICBcIkxvaXNcIixcbiAgXCJMb2xhXCIsXG4gIFwiTG9saXRhXCIsXG4gIFwiTG9tYVwiLFxuICBcIkxvblwiLFxuICBcIkxvbmRvblwiLFxuICBcIkxvbmllXCIsXG4gIFwiTG9ubmllXCIsXG4gIFwiTG9ubnlcIixcbiAgXCJMb256b1wiLFxuICBcIkxvcmFcIixcbiAgXCJMb3JhaW5lXCIsXG4gIFwiTG9yZW5cIixcbiAgXCJMb3JlbmFcIixcbiAgXCJMb3JlbnpcIixcbiAgXCJMb3JlbnphXCIsXG4gIFwiTG9yZW56b1wiLFxuICBcIkxvcmlcIixcbiAgXCJMb3JpbmVcIixcbiAgXCJMb3JuYVwiLFxuICBcIkxvdHRpZVwiLFxuICBcIkxvdVwiLFxuICBcIkxvdWllXCIsXG4gIFwiTG91aXNhXCIsXG4gIFwiTG91cmRlc1wiLFxuICBcIkxvdXZlbmlhXCIsXG4gIFwiTG93ZWxsXCIsXG4gIFwiTG95XCIsXG4gIFwiTG95YWxcIixcbiAgXCJMb3ljZVwiLFxuICBcIkx1Y2FzXCIsXG4gIFwiTHVjaWFub1wiLFxuICBcIkx1Y2llXCIsXG4gIFwiTHVjaWVubmVcIixcbiAgXCJMdWNpbGVcIixcbiAgXCJMdWNpbmRhXCIsXG4gIFwiTHVjaW9cIixcbiAgXCJMdWNpb3VzXCIsXG4gIFwiTHVjaXVzXCIsXG4gIFwiTHVjeVwiLFxuICBcIkx1ZGllXCIsXG4gIFwiTHVkd2lnXCIsXG4gIFwiTHVlXCIsXG4gIFwiTHVlbGxhXCIsXG4gIFwiTHVpZ2lcIixcbiAgXCJMdWlzXCIsXG4gIFwiTHVpc2FcIixcbiAgXCJMdWthc1wiLFxuICBcIkx1bGFcIixcbiAgXCJMdWx1XCIsXG4gIFwiTHVuYVwiLFxuICBcIkx1cGVcIixcbiAgXCJMdXJhXCIsXG4gIFwiTHVybGluZVwiLFxuICBcIkx1dGhlclwiLFxuICBcIkx1elwiLFxuICBcIkx5ZGFcIixcbiAgXCJMeWRpYVwiLFxuICBcIkx5bGFcIixcbiAgXCJMeW5uXCIsXG4gIFwiTHlyaWNcIixcbiAgXCJMeXNhbm5lXCIsXG4gIFwiTWFiZWxcIixcbiAgXCJNYWJlbGxlXCIsXG4gIFwiTWFibGVcIixcbiAgXCJNYWNcIixcbiAgXCJNYWNleVwiLFxuICBcIk1hY2lcIixcbiAgXCJNYWNpZVwiLFxuICBcIk1hY2tcIixcbiAgXCJNYWNrZW56aWVcIixcbiAgXCJNYWN5XCIsXG4gIFwiTWFkYWxpbmVcIixcbiAgXCJNYWRhbHluXCIsXG4gIFwiTWFkZGlzb25cIixcbiAgXCJNYWRlbGluZVwiLFxuICBcIk1hZGVseW5cIixcbiAgXCJNYWRlbHlublwiLFxuICBcIk1hZGdlXCIsXG4gIFwiTWFkaWVcIixcbiAgXCJNYWRpbHluXCIsXG4gIFwiTWFkaXNlblwiLFxuICBcIk1hZGlzb25cIixcbiAgXCJNYWRpc3luXCIsXG4gIFwiTWFkb25uYVwiLFxuICBcIk1hZHlzb25cIixcbiAgXCJNYWVcIixcbiAgXCJNYWVnYW5cIixcbiAgXCJNYWV2ZVwiLFxuICBcIk1hZmFsZGFcIixcbiAgXCJNYWdhbGlcIixcbiAgXCJNYWdkYWxlblwiLFxuICBcIk1hZ2RhbGVuYVwiLFxuICBcIk1hZ2dpZVwiLFxuICBcIk1hZ25vbGlhXCIsXG4gIFwiTWFnbnVzXCIsXG4gIFwiTWFpYVwiLFxuICBcIk1haWRhXCIsXG4gIFwiTWFpeWFcIixcbiAgXCJNYWpvclwiLFxuICBcIk1ha2F5bGFcIixcbiAgXCJNYWtlbm5hXCIsXG4gIFwiTWFrZW56aWVcIixcbiAgXCJNYWxhY2hpXCIsXG4gIFwiTWFsY29sbVwiLFxuICBcIk1hbGlrYVwiLFxuICBcIk1hbGluZGFcIixcbiAgXCJNYWxsaWVcIixcbiAgXCJNYWxsb3J5XCIsXG4gIFwiTWFsdmluYVwiLFxuICBcIk1hbmR5XCIsXG4gIFwiTWFubGV5XCIsXG4gIFwiTWFudWVsXCIsXG4gIFwiTWFudWVsYVwiLFxuICBcIk1hcmFcIixcbiAgXCJNYXJjXCIsXG4gIFwiTWFyY2VsXCIsXG4gIFwiTWFyY2VsaW5hXCIsXG4gIFwiTWFyY2VsaW5vXCIsXG4gIFwiTWFyY2VsbGFcIixcbiAgXCJNYXJjZWxsZVwiLFxuICBcIk1hcmNlbGx1c1wiLFxuICBcIk1hcmNlbG9cIixcbiAgXCJNYXJjaWFcIixcbiAgXCJNYXJjb1wiLFxuICBcIk1hcmNvc1wiLFxuICBcIk1hcmN1c1wiLFxuICBcIk1hcmdhcmV0XCIsXG4gIFwiTWFyZ2FyZXRlXCIsXG4gIFwiTWFyZ2FyZXR0XCIsXG4gIFwiTWFyZ2FyZXR0YVwiLFxuICBcIk1hcmdhcmV0dGVcIixcbiAgXCJNYXJnYXJpdGFcIixcbiAgXCJNYXJnZVwiLFxuICBcIk1hcmdpZVwiLFxuICBcIk1hcmdvdFwiLFxuICBcIk1hcmdyZXRcIixcbiAgXCJNYXJndWVyaXRlXCIsXG4gIFwiTWFyaWFcIixcbiAgXCJNYXJpYWhcIixcbiAgXCJNYXJpYW1cIixcbiAgXCJNYXJpYW5cIixcbiAgXCJNYXJpYW5hXCIsXG4gIFwiTWFyaWFuZVwiLFxuICBcIk1hcmlhbm5hXCIsXG4gIFwiTWFyaWFubmVcIixcbiAgXCJNYXJpYW5vXCIsXG4gIFwiTWFyaWJlbFwiLFxuICBcIk1hcmllXCIsXG4gIFwiTWFyaWVsYVwiLFxuICBcIk1hcmllbGxlXCIsXG4gIFwiTWFyaWV0dGFcIixcbiAgXCJNYXJpbGllXCIsXG4gIFwiTWFyaWxvdVwiLFxuICBcIk1hcmlseW5lXCIsXG4gIFwiTWFyaW5hXCIsXG4gIFwiTWFyaW9cIixcbiAgXCJNYXJpb25cIixcbiAgXCJNYXJpc2FcIixcbiAgXCJNYXJpc29sXCIsXG4gIFwiTWFyaXR6YVwiLFxuICBcIk1hcmpvbGFpbmVcIixcbiAgXCJNYXJqb3JpZVwiLFxuICBcIk1hcmpvcnlcIixcbiAgXCJNYXJrXCIsXG4gIFwiTWFya3VzXCIsXG4gIFwiTWFybGVlXCIsXG4gIFwiTWFybGVuXCIsXG4gIFwiTWFybGVuZVwiLFxuICBcIk1hcmxleVwiLFxuICBcIk1hcmxpblwiLFxuICBcIk1hcmxvblwiLFxuICBcIk1hcnF1ZXNcIixcbiAgXCJNYXJxdWlzXCIsXG4gIFwiTWFycXVpc2VcIixcbiAgXCJNYXJzaGFsbFwiLFxuICBcIk1hcnRhXCIsXG4gIFwiTWFydGluXCIsXG4gIFwiTWFydGluYVwiLFxuICBcIk1hcnRpbmVcIixcbiAgXCJNYXJ0eVwiLFxuICBcIk1hcnZpblwiLFxuICBcIk1hcnlcIixcbiAgXCJNYXJ5YW1cIixcbiAgXCJNYXJ5amFuZVwiLFxuICBcIk1hcnlzZVwiLFxuICBcIk1hc29uXCIsXG4gIFwiTWF0ZW9cIixcbiAgXCJNYXRoZXdcIixcbiAgXCJNYXRoaWFzXCIsXG4gIFwiTWF0aGlsZGVcIixcbiAgXCJNYXRpbGRhXCIsXG4gIFwiTWF0aWxkZVwiLFxuICBcIk1hdHRcIixcbiAgXCJNYXR0ZW9cIixcbiAgXCJNYXR0aWVcIixcbiAgXCJNYXVkXCIsXG4gIFwiTWF1ZGVcIixcbiAgXCJNYXVkaWVcIixcbiAgXCJNYXVyZWVuXCIsXG4gIFwiTWF1cmljZVwiLFxuICBcIk1hdXJpY2lvXCIsXG4gIFwiTWF1cmluZVwiLFxuICBcIk1hdmVyaWNrXCIsXG4gIFwiTWF2aXNcIixcbiAgXCJNYXhcIixcbiAgXCJNYXhpZVwiLFxuICBcIk1heGltZVwiLFxuICBcIk1heGltaWxpYW5cIixcbiAgXCJNYXhpbWlsbGlhXCIsXG4gIFwiTWF4aW1pbGxpYW5cIixcbiAgXCJNYXhpbW9cIixcbiAgXCJNYXhpbXVzXCIsXG4gIFwiTWF4aW5lXCIsXG4gIFwiTWF4d2VsbFwiLFxuICBcIk1heVwiLFxuICBcIk1heWFcIixcbiAgXCJNYXliZWxsXCIsXG4gIFwiTWF5YmVsbGVcIixcbiAgXCJNYXllXCIsXG4gIFwiTWF5bWllXCIsXG4gIFwiTWF5bmFyZFwiLFxuICBcIk1heXJhXCIsXG4gIFwiTWF6aWVcIixcbiAgXCJNY2theWxhXCIsXG4gIFwiTWNrZW5uYVwiLFxuICBcIk1ja2VuemllXCIsXG4gIFwiTWVhZ2FuXCIsXG4gIFwiTWVhZ2hhblwiLFxuICBcIk1lZGFcIixcbiAgXCJNZWdhbmVcIixcbiAgXCJNZWdnaWVcIixcbiAgXCJNZWdoYW5cIixcbiAgXCJNZWtoaVwiLFxuICBcIk1lbGFueVwiLFxuICBcIk1lbGJhXCIsXG4gIFwiTWVsaXNhXCIsXG4gIFwiTWVsaXNzYVwiLFxuICBcIk1lbGxpZVwiLFxuICBcIk1lbG9keVwiLFxuICBcIk1lbHZpblwiLFxuICBcIk1lbHZpbmFcIixcbiAgXCJNZWx5bmFcIixcbiAgXCJNZWx5c3NhXCIsXG4gIFwiTWVyY2VkZXNcIixcbiAgXCJNZXJlZGl0aFwiLFxuICBcIk1lcmxcIixcbiAgXCJNZXJsZVwiLFxuICBcIk1lcmxpblwiLFxuICBcIk1lcnJpdHRcIixcbiAgXCJNZXJ0aWVcIixcbiAgXCJNZXJ2aW5cIixcbiAgXCJNZXRhXCIsXG4gIFwiTWlhXCIsXG4gIFwiTWljYWVsYVwiLFxuICBcIk1pY2FoXCIsXG4gIFwiTWljaGFlbFwiLFxuICBcIk1pY2hhZWxhXCIsXG4gIFwiTWljaGFsZVwiLFxuICBcIk1pY2hlYWxcIixcbiAgXCJNaWNoZWxcIixcbiAgXCJNaWNoZWxlXCIsXG4gIFwiTWljaGVsbGVcIixcbiAgXCJNaWd1ZWxcIixcbiAgXCJNaWtheWxhXCIsXG4gIFwiTWlrZVwiLFxuICBcIk1pa2VsXCIsXG4gIFwiTWlsYW5cIixcbiAgXCJNaWxlc1wiLFxuICBcIk1pbGZvcmRcIixcbiAgXCJNaWxsZXJcIixcbiAgXCJNaWxsaWVcIixcbiAgXCJNaWxvXCIsXG4gIFwiTWlsdG9uXCIsXG4gIFwiTWluYVwiLFxuICBcIk1pbmVydmFcIixcbiAgXCJNaW5uaWVcIixcbiAgXCJNaXJhY2xlXCIsXG4gIFwiTWlyZWlsbGVcIixcbiAgXCJNaXJleWFcIixcbiAgXCJNaXNhZWxcIixcbiAgXCJNaXNzb3VyaVwiLFxuICBcIk1pc3R5XCIsXG4gIFwiTWl0Y2hlbFwiLFxuICBcIk1pdGNoZWxsXCIsXG4gIFwiTWl0dGllXCIsXG4gIFwiTW9kZXN0YVwiLFxuICBcIk1vZGVzdG9cIixcbiAgXCJNb2hhbWVkXCIsXG4gIFwiTW9oYW1tYWRcIixcbiAgXCJNb2hhbW1lZFwiLFxuICBcIk1vaXNlc1wiLFxuICBcIk1vbGxpZVwiLFxuICBcIk1vbGx5XCIsXG4gIFwiTW9uYVwiLFxuICBcIk1vbmljYVwiLFxuICBcIk1vbmlxdWVcIixcbiAgXCJNb25yb2VcIixcbiAgXCJNb25zZXJyYXRcIixcbiAgXCJNb25zZXJyYXRlXCIsXG4gIFwiTW9udGFuYVwiLFxuICBcIk1vbnRlXCIsXG4gIFwiTW9udHlcIixcbiAgXCJNb3JnYW5cIixcbiAgXCJNb3JpYWhcIixcbiAgXCJNb3JyaXNcIixcbiAgXCJNb3J0aW1lclwiLFxuICBcIk1vcnRvblwiLFxuICBcIk1vc2VcIixcbiAgXCJNb3Nlc1wiLFxuICBcIk1vc2hlXCIsXG4gIFwiTW9zc2llXCIsXG4gIFwiTW96ZWxsXCIsXG4gIFwiTW96ZWxsZVwiLFxuICBcIk11aGFtbWFkXCIsXG4gIFwiTXVyaWVsXCIsXG4gIFwiTXVybFwiLFxuICBcIk11cnBoeVwiLFxuICBcIk11cnJheVwiLFxuICBcIk11c3RhZmFcIixcbiAgXCJNeWFcIixcbiAgXCJNeWFoXCIsXG4gIFwiTXlsZW5lXCIsXG4gIFwiTXlsZXNcIixcbiAgXCJNeXJhXCIsXG4gIFwiTXlyaWFtXCIsXG4gIFwiTXlybFwiLFxuICBcIk15cm5hXCIsXG4gIFwiTXlyb25cIixcbiAgXCJNeXJ0aWNlXCIsXG4gIFwiTXlydGllXCIsXG4gIFwiTXlydGlzXCIsXG4gIFwiTXlydGxlXCIsXG4gIFwiTmFkaWFcIixcbiAgXCJOYWtpYVwiLFxuICBcIk5hbWVcIixcbiAgXCJOYW5uaWVcIixcbiAgXCJOYW9taVwiLFxuICBcIk5hb21pZVwiLFxuICBcIk5hcG9sZW9uXCIsXG4gIFwiTmFyY2lzb1wiLFxuICBcIk5hc2hcIixcbiAgXCJOYXNpclwiLFxuICBcIk5hdFwiLFxuICBcIk5hdGFsaWFcIixcbiAgXCJOYXRhbGllXCIsXG4gIFwiTmF0YXNoYVwiLFxuICBcIk5hdGhhblwiLFxuICBcIk5hdGhhbmFlbFwiLFxuICBcIk5hdGhhbmlhbFwiLFxuICBcIk5hdGhhbmllbFwiLFxuICBcIk5hdGhlblwiLFxuICBcIk5heWVsaVwiLFxuICBcIk5lYWxcIixcbiAgXCJOZWRcIixcbiAgXCJOZWRyYVwiLFxuICBcIk5laGFcIixcbiAgXCJOZWlsXCIsXG4gIFwiTmVsZGFcIixcbiAgXCJOZWxsYVwiLFxuICBcIk5lbGxlXCIsXG4gIFwiTmVsbGllXCIsXG4gIFwiTmVsc1wiLFxuICBcIk5lbHNvblwiLFxuICBcIk5lb21hXCIsXG4gIFwiTmVzdG9yXCIsXG4gIFwiTmV0dGllXCIsXG4gIFwiTmV2YVwiLFxuICBcIk5ld2VsbFwiLFxuICBcIk5ld3RvblwiLFxuICBcIk5pYVwiLFxuICBcIk5pY2hvbGFzXCIsXG4gIFwiTmljaG9sYXVzXCIsXG4gIFwiTmljaG9sZVwiLFxuICBcIk5pY2tcIixcbiAgXCJOaWNrbGF1c1wiLFxuICBcIk5pY2tvbGFzXCIsXG4gIFwiTmljb1wiLFxuICBcIk5pY29sYVwiLFxuICBcIk5pY29sYXNcIixcbiAgXCJOaWNvbGVcIixcbiAgXCJOaWNvbGV0dGVcIixcbiAgXCJOaWdlbFwiLFxuICBcIk5pa2l0YVwiLFxuICBcIk5pa2tpXCIsXG4gIFwiTmlra29cIixcbiAgXCJOaWtvXCIsXG4gIFwiTmlrb2xhc1wiLFxuICBcIk5pbHNcIixcbiAgXCJOaW5hXCIsXG4gIFwiTm9haFwiLFxuICBcIk5vYmxlXCIsXG4gIFwiTm9lXCIsXG4gIFwiTm9lbFwiLFxuICBcIk5vZWxpYVwiLFxuICBcIk5vZW1pXCIsXG4gIFwiTm9lbWllXCIsXG4gIFwiTm9lbXlcIixcbiAgXCJOb2xhXCIsXG4gIFwiTm9sYW5cIixcbiAgXCJOb25hXCIsXG4gIFwiTm9yYVwiLFxuICBcIk5vcmJlcnRcIixcbiAgXCJOb3JiZXJ0b1wiLFxuICBcIk5vcmVuZVwiLFxuICBcIk5vcm1hXCIsXG4gIFwiTm9ycmlzXCIsXG4gIFwiTm9ydmFsXCIsXG4gIFwiTm9yd29vZFwiLFxuICBcIk5vdmFcIixcbiAgXCJOb3ZlbGxhXCIsXG4gIFwiTnlhXCIsXG4gIFwiTnlhaFwiLFxuICBcIk55YXNpYVwiLFxuICBcIk9iaWVcIixcbiAgXCJPY2VhbmVcIixcbiAgXCJPY2llXCIsXG4gIFwiT2N0YXZpYVwiLFxuICBcIk9kYVwiLFxuICBcIk9kZWxsXCIsXG4gIFwiT2Rlc3NhXCIsXG4gIFwiT2RpZVwiLFxuICBcIk9mZWxpYVwiLFxuICBcIk9rZXlcIixcbiAgXCJPbGFcIixcbiAgXCJPbGFmXCIsXG4gIFwiT2xlXCIsXG4gIFwiT2xlblwiLFxuICBcIk9sZXRhXCIsXG4gIFwiT2xnYVwiLFxuICBcIk9saW5cIixcbiAgXCJPbGl2ZXJcIixcbiAgXCJPbGxpZVwiLFxuICBcIk9tYVwiLFxuICBcIk9tYXJpXCIsXG4gIFwiT21lclwiLFxuICBcIk9uYVwiLFxuICBcIk9uaWVcIixcbiAgXCJPcGFsXCIsXG4gIFwiT3BoZWxpYVwiLFxuICBcIk9yYVwiLFxuICBcIk9yYWxcIixcbiAgXCJPcmFuXCIsXG4gIFwiT3JlblwiLFxuICBcIk9yaWVcIixcbiAgXCJPcmluXCIsXG4gIFwiT3Jpb25cIixcbiAgXCJPcmxhbmRcIixcbiAgXCJPcmxhbmRvXCIsXG4gIFwiT3Jsb1wiLFxuICBcIk9ycGhhXCIsXG4gIFwiT3JyaW5cIixcbiAgXCJPcnZhbFwiLFxuICBcIk9ydmlsbGVcIixcbiAgXCJPc2JhbGRvXCIsXG4gIFwiT3Nib3JuZVwiLFxuICBcIk9zY2FyXCIsXG4gIFwiT3N2YWxkb1wiLFxuICBcIk9zd2FsZFwiLFxuICBcIk9zd2FsZG9cIixcbiAgXCJPdGhhXCIsXG4gIFwiT3Rob1wiLFxuICBcIk90aWxpYVwiLFxuICBcIk90aXNcIixcbiAgXCJPdHRpbGllXCIsXG4gIFwiT3R0aXNcIixcbiAgXCJPdHRvXCIsXG4gIFwiT3ZhXCIsXG4gIFwiT3dlblwiLFxuICBcIk96ZWxsYVwiLFxuICBcIlBhYmxvXCIsXG4gIFwiUGFpZ2VcIixcbiAgXCJQYWxtYVwiLFxuICBcIlBhbWVsYVwiLFxuICBcIlBhbnN5XCIsXG4gIFwiUGFvbG9cIixcbiAgXCJQYXJpc1wiLFxuICBcIlBhcmtlclwiLFxuICBcIlBhc2NhbGVcIixcbiAgXCJQYXNxdWFsZVwiLFxuICBcIlBhdFwiLFxuICBcIlBhdGllbmNlXCIsXG4gIFwiUGF0cmljaWFcIixcbiAgXCJQYXRyaWNrXCIsXG4gIFwiUGF0c3lcIixcbiAgXCJQYXR0aWVcIixcbiAgXCJQYXVsXCIsXG4gIFwiUGF1bGFcIixcbiAgXCJQYXVsaW5lXCIsXG4gIFwiUGF4dG9uXCIsXG4gIFwiUGF5dG9uXCIsXG4gIFwiUGVhcmxcIixcbiAgXCJQZWFybGllXCIsXG4gIFwiUGVhcmxpbmVcIixcbiAgXCJQZWRyb1wiLFxuICBcIlBlZ2dpZVwiLFxuICBcIlBlbmVsb3BlXCIsXG4gIFwiUGVyY2l2YWxcIixcbiAgXCJQZXJjeVwiLFxuICBcIlBlcnJ5XCIsXG4gIFwiUGV0ZVwiLFxuICBcIlBldGVyXCIsXG4gIFwiUGV0cmFcIixcbiAgXCJQZXl0b25cIixcbiAgXCJQaGlsaXBcIixcbiAgXCJQaG9lYmVcIixcbiAgXCJQaHlsbGlzXCIsXG4gIFwiUGllcmNlXCIsXG4gIFwiUGllcnJlXCIsXG4gIFwiUGlldHJvXCIsXG4gIFwiUGlua1wiLFxuICBcIlBpbmtpZVwiLFxuICBcIlBpcGVyXCIsXG4gIFwiUG9sbHlcIixcbiAgXCJQb3J0ZXJcIixcbiAgXCJQcmVjaW91c1wiLFxuICBcIlByZXNsZXlcIixcbiAgXCJQcmVzdG9uXCIsXG4gIFwiUHJpY2VcIixcbiAgXCJQcmluY2VcIixcbiAgXCJQcmluY2Vzc1wiLFxuICBcIlByaXNjaWxsYVwiLFxuICBcIlByb3ZpZGVuY2lcIixcbiAgXCJQcnVkZW5jZVwiLFxuICBcIlF1ZWVuXCIsXG4gIFwiUXVlZW5pZVwiLFxuICBcIlF1ZW50aW5cIixcbiAgXCJRdWluY3lcIixcbiAgXCJRdWlublwiLFxuICBcIlF1aW50ZW5cIixcbiAgXCJRdWludG9uXCIsXG4gIFwiUmFjaGFlbFwiLFxuICBcIlJhY2hlbFwiLFxuICBcIlJhY2hlbGxlXCIsXG4gIFwiUmFlXCIsXG4gIFwiUmFlZ2FuXCIsXG4gIFwiUmFmYWVsXCIsXG4gIFwiUmFmYWVsYVwiLFxuICBcIlJhaGVlbVwiLFxuICBcIlJhaHNhYW5cIixcbiAgXCJSYWh1bFwiLFxuICBcIlJhaW5hXCIsXG4gIFwiUmFsZWlnaFwiLFxuICBcIlJhbHBoXCIsXG4gIFwiUmFtaXJvXCIsXG4gIFwiUmFtb25cIixcbiAgXCJSYW1vbmFcIixcbiAgXCJSYW5kYWxcIixcbiAgXCJSYW5kYWxsXCIsXG4gIFwiUmFuZGlcIixcbiAgXCJSYW5keVwiLFxuICBcIlJhbnNvbVwiLFxuICBcIlJhb3VsXCIsXG4gIFwiUmFwaGFlbFwiLFxuICBcIlJhcGhhZWxsZVwiLFxuICBcIlJhcXVlbFwiLFxuICBcIlJhc2hhZFwiLFxuICBcIlJhc2hhd25cIixcbiAgXCJSYXNoZWVkXCIsXG4gIFwiUmF1bFwiLFxuICBcIlJhdmVuXCIsXG4gIFwiUmF5XCIsXG4gIFwiUmF5bW9uZFwiLFxuICBcIlJheW11bmRvXCIsXG4gIFwiUmVhZ2FuXCIsXG4gIFwiUmVhbm5hXCIsXG4gIFwiUmViYVwiLFxuICBcIlJlYmVjYVwiLFxuICBcIlJlYmVjY2FcIixcbiAgXCJSZWJla2FcIixcbiAgXCJSZWJla2FoXCIsXG4gIFwiUmVlY2VcIixcbiAgXCJSZWVkXCIsXG4gIFwiUmVlc2VcIixcbiAgXCJSZWdhblwiLFxuICBcIlJlZ2dpZVwiLFxuICBcIlJlZ2luYWxkXCIsXG4gIFwiUmVpZFwiLFxuICBcIlJlaWxseVwiLFxuICBcIlJlaW5hXCIsXG4gIFwiUmVpbmhvbGRcIixcbiAgXCJSZW1pbmd0b25cIixcbiAgXCJSZW5lXCIsXG4gIFwiUmVuZWVcIixcbiAgXCJSZXNzaWVcIixcbiAgXCJSZXRhXCIsXG4gIFwiUmV0aGFcIixcbiAgXCJSZXR0YVwiLFxuICBcIlJldWJlblwiLFxuICBcIlJldmFcIixcbiAgXCJSZXhcIixcbiAgXCJSZXlcIixcbiAgXCJSZXllc1wiLFxuICBcIlJleW11bmRvXCIsXG4gIFwiUmV5bmFcIixcbiAgXCJSZXlub2xkXCIsXG4gIFwiUmhlYVwiLFxuICBcIlJoZXR0XCIsXG4gIFwiUmhpYW5uYVwiLFxuICBcIlJoaWFubm9uXCIsXG4gIFwiUmhvZGFcIixcbiAgXCJSaWNhcmRvXCIsXG4gIFwiUmljaGFyZFwiLFxuICBcIlJpY2hpZVwiLFxuICBcIlJpY2htb25kXCIsXG4gIFwiUmlja1wiLFxuICBcIlJpY2tleVwiLFxuICBcIlJpY2tpZVwiLFxuICBcIlJpY2t5XCIsXG4gIFwiUmljb1wiLFxuICBcIlJpZ29iZXJ0b1wiLFxuICBcIlJpbGV5XCIsXG4gIFwiUml0YVwiLFxuICBcIlJpdmVyXCIsXG4gIFwiUm9iYlwiLFxuICBcIlJvYmJpZVwiLFxuICBcIlJvYmVydFwiLFxuICBcIlJvYmVydGFcIixcbiAgXCJSb2JlcnRvXCIsXG4gIFwiUm9iaW5cIixcbiAgXCJSb2J5blwiLFxuICBcIlJvY2lvXCIsXG4gIFwiUm9ja3lcIixcbiAgXCJSb2RcIixcbiAgXCJSb2Rlcmlja1wiLFxuICBcIlJvZGdlclwiLFxuICBcIlJvZG9sZm9cIixcbiAgXCJSb2RyaWNrXCIsXG4gIFwiUm9kcmlnb1wiLFxuICBcIlJvZWxcIixcbiAgXCJSb2dlbGlvXCIsXG4gIFwiUm9nZXJcIixcbiAgXCJSb2dlcnNcIixcbiAgXCJSb2xhbmRvXCIsXG4gIFwiUm9sbGluXCIsXG4gIFwiUm9tYVwiLFxuICBcIlJvbWFpbmVcIixcbiAgXCJSb21hblwiLFxuICBcIlJvblwiLFxuICBcIlJvbmFsZG9cIixcbiAgXCJSb25ueVwiLFxuICBcIlJvb3NldmVsdFwiLFxuICBcIlJvcnlcIixcbiAgXCJSb3NhXCIsXG4gIFwiUm9zYWxlZVwiLFxuICBcIlJvc2FsaWFcIixcbiAgXCJSb3NhbGluZFwiLFxuICBcIlJvc2FsaW5kYVwiLFxuICBcIlJvc2FseW5cIixcbiAgXCJSb3NhbW9uZFwiLFxuICBcIlJvc2FubmFcIixcbiAgXCJSb3NhcmlvXCIsXG4gIFwiUm9zY29lXCIsXG4gIFwiUm9zZVwiLFxuICBcIlJvc2VsbGFcIixcbiAgXCJSb3NlbHluXCIsXG4gIFwiUm9zZW1hcmllXCIsXG4gIFwiUm9zZW1hcnlcIixcbiAgXCJSb3NlbmRvXCIsXG4gIFwiUm9zZXR0YVwiLFxuICBcIlJvc2llXCIsXG4gIFwiUm9zaW5hXCIsXG4gIFwiUm9zbHluXCIsXG4gIFwiUm9zc1wiLFxuICBcIlJvc3NpZVwiLFxuICBcIlJvd2FuXCIsXG4gIFwiUm93ZW5hXCIsXG4gIFwiUm93bGFuZFwiLFxuICBcIlJveGFuZVwiLFxuICBcIlJveGFubmVcIixcbiAgXCJSb3lcIixcbiAgXCJSb3lhbFwiLFxuICBcIlJveWNlXCIsXG4gIFwiUm96ZWxsYVwiLFxuICBcIlJ1YmVuXCIsXG4gIFwiUnViaWVcIixcbiAgXCJSdWJ5XCIsXG4gIFwiUnVieWVcIixcbiAgXCJSdWRvbHBoXCIsXG4gIFwiUnVkeVwiLFxuICBcIlJ1cGVydFwiLFxuICBcIlJ1c3NcIixcbiAgXCJSdXNzZWxcIixcbiAgXCJSdXNzZWxsXCIsXG4gIFwiUnVzdHlcIixcbiAgXCJSdXRoXCIsXG4gIFwiUnV0aGVcIixcbiAgXCJSdXRoaWVcIixcbiAgXCJSeWFuXCIsXG4gIFwiUnlhbm5cIixcbiAgXCJSeWRlclwiLFxuICBcIlJ5bGFuXCIsXG4gIFwiUnlsZWVcIixcbiAgXCJSeWxlaWdoXCIsXG4gIFwiUnlsZXlcIixcbiAgXCJTYWJpbmFcIixcbiAgXCJTYWJyaW5hXCIsXG4gIFwiU2FicnluYVwiLFxuICBcIlNhZGllXCIsXG4gIFwiU2FkeWVcIixcbiAgXCJTYWdlXCIsXG4gIFwiU2FpZ2VcIixcbiAgXCJTYWxsaWVcIixcbiAgXCJTYWxseVwiLFxuICBcIlNhbG1hXCIsXG4gIFwiU2FsdmFkb3JcIixcbiAgXCJTYWx2YXRvcmVcIixcbiAgXCJTYW1cIixcbiAgXCJTYW1hbnRhXCIsXG4gIFwiU2FtYW50aGFcIixcbiAgXCJTYW1hcmFcIixcbiAgXCJTYW1pclwiLFxuICBcIlNhbW1pZVwiLFxuICBcIlNhbW15XCIsXG4gIFwiU2Ftc29uXCIsXG4gIFwiU2FuZHJhXCIsXG4gIFwiU2FuZHJpbmVcIixcbiAgXCJTYW5keVwiLFxuICBcIlNhbmZvcmRcIixcbiAgXCJTYW50YVwiLFxuICBcIlNhbnRpYWdvXCIsXG4gIFwiU2FudGluYVwiLFxuICBcIlNhbnRpbm9cIixcbiAgXCJTYW50b3NcIixcbiAgXCJTYXJhaFwiLFxuICBcIlNhcmFpXCIsXG4gIFwiU2FyaW5hXCIsXG4gIFwiU2FzaGFcIixcbiAgXCJTYXVsXCIsXG4gIFwiU2F2YW5haFwiLFxuICBcIlNhdmFubmFcIixcbiAgXCJTYXZhbm5haFwiLFxuICBcIlNhdmlvblwiLFxuICBcIlNjYXJsZXR0XCIsXG4gIFwiU2NodXlsZXJcIixcbiAgXCJTY290XCIsXG4gIFwiU2NvdHRpZVwiLFxuICBcIlNjb3R0eVwiLFxuICBcIlNlYW11c1wiLFxuICBcIlNlYW5cIixcbiAgXCJTZWJhc3RpYW5cIixcbiAgXCJTZWRyaWNrXCIsXG4gIFwiU2VsZW5hXCIsXG4gIFwiU2VsaW5hXCIsXG4gIFwiU2VsbWVyXCIsXG4gIFwiU2VyZW5hXCIsXG4gIFwiU2VyZW5pdHlcIixcbiAgXCJTZXRoXCIsXG4gIFwiU2hhZFwiLFxuICBcIlNoYWluYVwiLFxuICBcIlNoYWtpcmFcIixcbiAgXCJTaGFuYVwiLFxuICBcIlNoYW5lXCIsXG4gIFwiU2hhbmVsXCIsXG4gIFwiU2hhbmVsbGVcIixcbiAgXCJTaGFuaWFcIixcbiAgXCJTaGFuaWVcIixcbiAgXCJTaGFuaXlhXCIsXG4gIFwiU2hhbm5hXCIsXG4gIFwiU2hhbm5vblwiLFxuICBcIlNoYW5ueVwiLFxuICBcIlNoYW5vblwiLFxuICBcIlNoYW55XCIsXG4gIFwiU2hhcm9uXCIsXG4gIFwiU2hhdW5cIixcbiAgXCJTaGF3blwiLFxuICBcIlNoYXduYVwiLFxuICBcIlNoYXlsZWVcIixcbiAgXCJTaGF5bmFcIixcbiAgXCJTaGF5bmVcIixcbiAgXCJTaGVhXCIsXG4gIFwiU2hlaWxhXCIsXG4gIFwiU2hlbGRvblwiLFxuICBcIlNoZW1hclwiLFxuICBcIlNoZXJpZGFuXCIsXG4gIFwiU2hlcm1hblwiLFxuICBcIlNoZXJ3b29kXCIsXG4gIFwiU2hpcmxleVwiLFxuICBcIlNoeWFublwiLFxuICBcIlNoeWFubmVcIixcbiAgXCJTaWJ5bFwiLFxuICBcIlNpZFwiLFxuICBcIlNpZG5leVwiLFxuICBcIlNpZW5uYVwiLFxuICBcIlNpZXJyYVwiLFxuICBcIlNpZ211bmRcIixcbiAgXCJTaWdyaWRcIixcbiAgXCJTaWd1cmRcIixcbiAgXCJTaWxhc1wiLFxuICBcIlNpbVwiLFxuICBcIlNpbWVvblwiLFxuICBcIlNpbW9uZVwiLFxuICBcIlNpbmNlcmVcIixcbiAgXCJTaXN0ZXJcIixcbiAgXCJTa3llXCIsXG4gIFwiU2t5bGFcIixcbiAgXCJTa3lsYXJcIixcbiAgXCJTb2ZpYVwiLFxuICBcIlNvbGVkYWRcIixcbiAgXCJTb2xvblwiLFxuICBcIlNvbmlhXCIsXG4gIFwiU29ubnlcIixcbiAgXCJTb255YVwiLFxuICBcIlNvcGhpYVwiLFxuICBcIlNvcGhpZVwiLFxuICBcIlNwZW5jZXJcIixcbiAgXCJTdGFjZXlcIixcbiAgXCJTdGFjeVwiLFxuICBcIlN0YW5cIixcbiAgXCJTdGFuZm9yZFwiLFxuICBcIlN0YW5sZXlcIixcbiAgXCJTdGFudG9uXCIsXG4gIFwiU3RlZmFuXCIsXG4gIFwiU3RlZmFuaWVcIixcbiAgXCJTdGVsbGFcIixcbiAgXCJTdGVwaGFuXCIsXG4gIFwiU3RlcGhhbmlhXCIsXG4gIFwiU3RlcGhhbmllXCIsXG4gIFwiU3RlcGhhbnlcIixcbiAgXCJTdGVwaGVuXCIsXG4gIFwiU3RlcGhvblwiLFxuICBcIlN0ZXJsaW5nXCIsXG4gIFwiU3RldmVcIixcbiAgXCJTdGV2aWVcIixcbiAgXCJTdGV3YXJ0XCIsXG4gIFwiU3RvbmVcIixcbiAgXCJTdHVhcnRcIixcbiAgXCJTdW1tZXJcIixcbiAgXCJTdW5ueVwiLFxuICBcIlN1c2FuXCIsXG4gIFwiU3VzYW5hXCIsXG4gIFwiU3VzYW5uYVwiLFxuICBcIlN1c2llXCIsXG4gIFwiU3V6YW5uZVwiLFxuICBcIlN2ZW5cIixcbiAgXCJTeWJsZVwiLFxuICBcIlN5ZG5lZVwiLFxuICBcIlN5ZG5leVwiLFxuICBcIlN5ZG5pXCIsXG4gIFwiU3lkbmllXCIsXG4gIFwiU3lsdmFuXCIsXG4gIFwiU3lsdmVzdGVyXCIsXG4gIFwiU3lsdmlhXCIsXG4gIFwiVGFiaXRoYVwiLFxuICBcIlRhZFwiLFxuICBcIlRhbGlhXCIsXG4gIFwiVGFsb25cIixcbiAgXCJUYW1hcmFcIixcbiAgXCJUYW1pYVwiLFxuICBcIlRhbmlhXCIsXG4gIFwiVGFubmVyXCIsXG4gIFwiVGFueWFcIixcbiAgXCJUYXJhXCIsXG4gIFwiVGFyeW5cIixcbiAgXCJUYXRlXCIsXG4gIFwiVGF0dW1cIixcbiAgXCJUYXR5YW5hXCIsXG4gIFwiVGF1cmVhblwiLFxuICBcIlRhdmFyZXNcIixcbiAgXCJUYXlhXCIsXG4gIFwiVGF5bG9yXCIsXG4gIFwiVGVhZ2FuXCIsXG4gIFwiVGVkXCIsXG4gIFwiVGVsbHlcIixcbiAgXCJUZXJlbmNlXCIsXG4gIFwiVGVyZXNhXCIsXG4gIFwiVGVycmFuY2VcIixcbiAgXCJUZXJyZWxsXCIsXG4gIFwiVGVycmVuY2VcIixcbiAgXCJUZXJyaWxsXCIsXG4gIFwiVGVycnlcIixcbiAgXCJUZXNzXCIsXG4gIFwiVGVzc2llXCIsXG4gIFwiVGV2aW5cIixcbiAgXCJUaGFkXCIsXG4gIFwiVGhhZGRldXNcIixcbiAgXCJUaGFsaWFcIixcbiAgXCJUaGVhXCIsXG4gIFwiVGhlbG1hXCIsXG4gIFwiVGhlb1wiLFxuICBcIlRoZW9kb3JhXCIsXG4gIFwiVGhlb2RvcmVcIixcbiAgXCJUaGVyZXNhXCIsXG4gIFwiVGhlcmVzZVwiLFxuICBcIlRoZXJlc2lhXCIsXG4gIFwiVGhlcm9uXCIsXG4gIFwiVGhvbWFzXCIsXG4gIFwiVGhvcmFcIixcbiAgXCJUaHVybWFuXCIsXG4gIFwiVGlhXCIsXG4gIFwiVGlhbmFcIixcbiAgXCJUaWFubmFcIixcbiAgXCJUaWFyYVwiLFxuICBcIlRpZXJyYVwiLFxuICBcIlRpZmZhbnlcIixcbiAgXCJUaWxsbWFuXCIsXG4gIFwiVGltbW90aHlcIixcbiAgXCJUaW1teVwiLFxuICBcIlRpbW90aHlcIixcbiAgXCJUaW5hXCIsXG4gIFwiVGl0b1wiLFxuICBcIlRpdHVzXCIsXG4gIFwiVG9iaW5cIixcbiAgXCJUb2J5XCIsXG4gIFwiVG9kXCIsXG4gIFwiVG9tXCIsXG4gIFwiVG9tYXNcIixcbiAgXCJUb21hc2FcIixcbiAgXCJUb21taWVcIixcbiAgXCJUb25leVwiLFxuICBcIlRvbmlcIixcbiAgXCJUb255XCIsXG4gIFwiVG9yZXlcIixcbiAgXCJUb3JyYW5jZVwiLFxuICBcIlRvcnJleVwiLFxuICBcIlRveVwiLFxuICBcIlRyYWNlXCIsXG4gIFwiVHJhY2V5XCIsXG4gIFwiVHJhY3lcIixcbiAgXCJUcmF2aXNcIixcbiAgXCJUcmF2b25cIixcbiAgXCJUcmVcIixcbiAgXCJUcmVtYWluZVwiLFxuICBcIlRyZW1heW5lXCIsXG4gIFwiVHJlbnRcIixcbiAgXCJUcmVudG9uXCIsXG4gIFwiVHJlc3NhXCIsXG4gIFwiVHJlc3NpZVwiLFxuICBcIlRyZXZhXCIsXG4gIFwiVHJldmVyXCIsXG4gIFwiVHJldmlvblwiLFxuICBcIlRyZXZvclwiLFxuICBcIlRyZXlcIixcbiAgXCJUcmluaXR5XCIsXG4gIFwiVHJpc2hhXCIsXG4gIFwiVHJpc3RpYW5cIixcbiAgXCJUcmlzdGluXCIsXG4gIFwiVHJpc3RvblwiLFxuICBcIlRyb3lcIixcbiAgXCJUcnVkaWVcIixcbiAgXCJUcnljaWFcIixcbiAgXCJUcnlzdGFuXCIsXG4gIFwiVHVybmVyXCIsXG4gIFwiVHdpbGFcIixcbiAgXCJUeWxlclwiLFxuICBcIlR5cmFcIixcbiAgXCJUeXJlZVwiLFxuICBcIlR5cmVla1wiLFxuICBcIlR5cmVsXCIsXG4gIFwiVHlyZWxsXCIsXG4gIFwiVHlyZXNlXCIsXG4gIFwiVHlyaXF1ZVwiLFxuICBcIlR5c2hhd25cIixcbiAgXCJUeXNvblwiLFxuICBcIlViYWxkb1wiLFxuICBcIlVsaWNlc1wiLFxuICBcIlVsaXNlc1wiLFxuICBcIlVuYVwiLFxuICBcIlVuaXF1ZVwiLFxuICBcIlVyYmFuXCIsXG4gIFwiVXJpYWhcIixcbiAgXCJVcmllbFwiLFxuICBcIlVyc3VsYVwiLFxuICBcIlZhZGFcIixcbiAgXCJWYWxlbnRpblwiLFxuICBcIlZhbGVudGluYVwiLFxuICBcIlZhbGVudGluZVwiLFxuICBcIlZhbGVyaWVcIixcbiAgXCJWYWxsaWVcIixcbiAgXCJWYW5cIixcbiAgXCJWYW5jZVwiLFxuICBcIlZhbmVzc2FcIixcbiAgXCJWYXVnaG5cIixcbiAgXCJWZWRhXCIsXG4gIFwiVmVsZGFcIixcbiAgXCJWZWxsYVwiLFxuICBcIlZlbG1hXCIsXG4gIFwiVmVsdmFcIixcbiAgXCJWZW5hXCIsXG4gIFwiVmVyZGFcIixcbiAgXCJWZXJkaWVcIixcbiAgXCJWZXJnaWVcIixcbiAgXCJWZXJsYVwiLFxuICBcIlZlcmxpZVwiLFxuICBcIlZlcm5cIixcbiAgXCJWZXJuYVwiLFxuICBcIlZlcm5lclwiLFxuICBcIlZlcm5pY2VcIixcbiAgXCJWZXJuaWVcIixcbiAgXCJWZXJub25cIixcbiAgXCJWZXJvbmFcIixcbiAgXCJWZXJvbmljYVwiLFxuICBcIlZlc3RhXCIsXG4gIFwiVmljZW50YVwiLFxuICBcIlZpY2VudGVcIixcbiAgXCJWaWNraWVcIixcbiAgXCJWaWNreVwiLFxuICBcIlZpY3RvclwiLFxuICBcIlZpY3RvcmlhXCIsXG4gIFwiVmlkYVwiLFxuICBcIlZpZGFsXCIsXG4gIFwiVmlsbWFcIixcbiAgXCJWaW5jZVwiLFxuICBcIlZpbmNlbnRcIixcbiAgXCJWaW5jZW56YVwiLFxuICBcIlZpbmNlbnpvXCIsXG4gIFwiVmlubmllXCIsXG4gIFwiVmlvbGFcIixcbiAgXCJWaW9sZXRcIixcbiAgXCJWaW9sZXR0ZVwiLFxuICBcIlZpcmdpZVwiLFxuICBcIlZpcmdpbFwiLFxuICBcIlZpcmdpbmlhXCIsXG4gIFwiVmlyZ2luaWVcIixcbiAgXCJWaXRhXCIsXG4gIFwiVml0b1wiLFxuICBcIlZpdmFcIixcbiAgXCJWaXZpYW5cIixcbiAgXCJWaXZpYW5lXCIsXG4gIFwiVml2aWFubmVcIixcbiAgXCJWaXZpZW5cIixcbiAgXCJWaXZpZW5uZVwiLFxuICBcIlZsYWRpbWlyXCIsXG4gIFwiV2FkZVwiLFxuICBcIldhaW5vXCIsXG4gIFwiV2FsZG9cIixcbiAgXCJXYWxrZXJcIixcbiAgXCJXYWxsYWNlXCIsXG4gIFwiV2FsdGVyXCIsXG4gIFwiV2FsdG9uXCIsXG4gIFwiV2FuZGFcIixcbiAgXCJXYXJkXCIsXG4gIFwiV2FycmVuXCIsXG4gIFwiV2F0c29uXCIsXG4gIFwiV2F2YVwiLFxuICBcIldheWxvblwiLFxuICBcIldheW5lXCIsXG4gIFwiV2Vic3RlclwiLFxuICBcIldlbGRvblwiLFxuICBcIldlbGxpbmd0b25cIixcbiAgXCJXZW5kZWxsXCIsXG4gIFwiV2VuZHlcIixcbiAgXCJXZXJuZXJcIixcbiAgXCJXZXN0bGV5XCIsXG4gIFwiV2VzdG9uXCIsXG4gIFwiV2hpdG5leVwiLFxuICBcIldpbGJlclwiLFxuICBcIldpbGJlcnRcIixcbiAgXCJXaWxidXJuXCIsXG4gIFwiV2lsZXlcIixcbiAgXCJXaWxmb3JkXCIsXG4gIFwiV2lsZnJlZFwiLFxuICBcIldpbGZyZWRvXCIsXG4gIFwiV2lsZnJpZFwiLFxuICBcIldpbGhlbG1cIixcbiAgXCJXaWxoZWxtaW5lXCIsXG4gIFwiV2lsbFwiLFxuICBcIldpbGxhXCIsXG4gIFwiV2lsbGFyZFwiLFxuICBcIldpbGxpYW1cIixcbiAgXCJXaWxsaWVcIixcbiAgXCJXaWxsaXNcIixcbiAgXCJXaWxsb3dcIixcbiAgXCJXaWxseVwiLFxuICBcIldpbG1hXCIsXG4gIFwiV2lsbWVyXCIsXG4gIFwiV2lsc29uXCIsXG4gIFwiV2lsdG9uXCIsXG4gIFwiV2luZmllbGRcIixcbiAgXCJXaW5pZnJlZFwiLFxuICBcIldpbm5pZnJlZFwiLFxuICBcIldpbm9uYVwiLFxuICBcIldpbnN0b25cIixcbiAgXCJXb29kcm93XCIsXG4gIFwiV3lhdHRcIixcbiAgXCJXeW1hblwiLFxuICBcIlhhbmRlclwiLFxuICBcIlhhdmllclwiLFxuICBcIlh6YXZpZXJcIixcbiAgXCJZYWRpcmFcIixcbiAgXCJZYXNtZWVuXCIsXG4gIFwiWWFzbWluXCIsXG4gIFwiWWFzbWluZVwiLFxuICBcIllhem1pblwiLFxuICBcIlllc2VuaWFcIixcbiAgXCJZZXNzZW5pYVwiLFxuICBcIllvbGFuZGFcIixcbiAgXCJZb3NoaWtvXCIsXG4gIFwiWXZldHRlXCIsXG4gIFwiWXZvbm5lXCIsXG4gIFwiWmFjaGFyaWFoXCIsXG4gIFwiWmFjaGFyeVwiLFxuICBcIlphY2hlcnlcIixcbiAgXCJaYWNrXCIsXG4gIFwiWmFja2FyeVwiLFxuICBcIlphY2tlcnlcIixcbiAgXCJaYWthcnlcIixcbiAgXCJaYW5kZXJcIixcbiAgXCJaYW5lXCIsXG4gIFwiWmFyaWFcIixcbiAgXCJaZWNoYXJpYWhcIixcbiAgXCJaZWxkYVwiLFxuICBcIlplbGxhXCIsXG4gIFwiWmVsbWFcIixcbiAgXCJaZW5hXCIsXG4gIFwiWmV0dGFcIixcbiAgXCJaaW9uXCIsXG4gIFwiWml0YVwiLFxuICBcIlpvZVwiLFxuICBcIlpvZXlcIixcbiAgXCJab2llXCIsXG4gIFwiWm9pbGFcIixcbiAgXCJab2xhXCIsXG4gIFwiWm9yYVwiLFxuICBcIlp1bGFcIlxuXTtcbiIsInZhciBuYW1lID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IG5hbWU7XG5uYW1lLmZpcnN0X25hbWUgPSByZXF1aXJlKFwiLi9maXJzdF9uYW1lXCIpO1xubmFtZS5sYXN0X25hbWUgPSByZXF1aXJlKFwiLi9sYXN0X25hbWVcIik7XG5uYW1lLnByZWZpeCA9IHJlcXVpcmUoXCIuL3ByZWZpeFwiKTtcbm5hbWUuc3VmZml4ID0gcmVxdWlyZShcIi4vc3VmZml4XCIpO1xubmFtZS50aXRsZSA9IHJlcXVpcmUoXCIuL3RpdGxlXCIpO1xubmFtZS5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWJib3R0XCIsXG4gIFwiQWJlcm5hdGh5XCIsXG4gIFwiQWJzaGlyZVwiLFxuICBcIkFkYW1zXCIsXG4gIFwiQWx0ZW53ZXJ0aFwiLFxuICBcIkFuZGVyc29uXCIsXG4gIFwiQW5rdW5kaW5nXCIsXG4gIFwiQXJtc3Ryb25nXCIsXG4gIFwiQXVlclwiLFxuICBcIkF1ZmRlcmhhclwiLFxuICBcIkJhaHJpbmdlclwiLFxuICBcIkJhaWxleVwiLFxuICBcIkJhbGlzdHJlcmlcIixcbiAgXCJCYXJyb3dzXCIsXG4gIFwiQmFydGVsbFwiLFxuICBcIkJhcnRvbGV0dGlcIixcbiAgXCJCYXJ0b25cIixcbiAgXCJCYXNoaXJpYW5cIixcbiAgXCJCYXR6XCIsXG4gIFwiQmF1Y2hcIixcbiAgXCJCYXVtYmFjaFwiLFxuICBcIkJheWVyXCIsXG4gIFwiQmVhaGFuXCIsXG4gIFwiQmVhdHR5XCIsXG4gIFwiQmVjaHRlbGFyXCIsXG4gIFwiQmVja2VyXCIsXG4gIFwiQmVkbmFyXCIsXG4gIFwiQmVlclwiLFxuICBcIkJlaWVyXCIsXG4gIFwiQmVyZ2VcIixcbiAgXCJCZXJnbmF1bVwiLFxuICBcIkJlcmdzdHJvbVwiLFxuICBcIkJlcm5oYXJkXCIsXG4gIFwiQmVybmllclwiLFxuICBcIkJpbnNcIixcbiAgXCJCbGFuZGFcIixcbiAgXCJCbGlja1wiLFxuICBcIkJsb2NrXCIsXG4gIFwiQm9kZVwiLFxuICBcIkJvZWhtXCIsXG4gIFwiQm9nYW5cIixcbiAgXCJCb2dpc2ljaFwiLFxuICBcIkJvcmVyXCIsXG4gIFwiQm9zY29cIixcbiAgXCJCb3RzZm9yZFwiLFxuICBcIkJveWVyXCIsXG4gIFwiQm95bGVcIixcbiAgXCJCcmFkdGtlXCIsXG4gIFwiQnJha3VzXCIsXG4gIFwiQnJhdW5cIixcbiAgXCJCcmVpdGVuYmVyZ1wiLFxuICBcIkJyZWtrZVwiLFxuICBcIkJyb3duXCIsXG4gIFwiQnJ1ZW5cIixcbiAgXCJCdWNrcmlkZ2VcIixcbiAgXCJDYXJyb2xsXCIsXG4gIFwiQ2FydGVyXCIsXG4gIFwiQ2FydHdyaWdodFwiLFxuICBcIkNhc3BlclwiLFxuICBcIkNhc3NpblwiLFxuICBcIkNoYW1wbGluXCIsXG4gIFwiQ2hyaXN0aWFuc2VuXCIsXG4gIFwiQ29sZVwiLFxuICBcIkNvbGxpZXJcIixcbiAgXCJDb2xsaW5zXCIsXG4gIFwiQ29ublwiLFxuICBcIkNvbm5lbGx5XCIsXG4gIFwiQ29ucm95XCIsXG4gIFwiQ29uc2lkaW5lXCIsXG4gIFwiQ29ya2VyeVwiLFxuICBcIkNvcm1pZXJcIixcbiAgXCJDb3J3aW5cIixcbiAgXCJDcmVtaW5cIixcbiAgXCJDcmlzdFwiLFxuICBcIkNyb25hXCIsXG4gIFwiQ3JvbmluXCIsXG4gIFwiQ3Jvb2tzXCIsXG4gIFwiQ3J1aWNrc2hhbmtcIixcbiAgXCJDdW1tZXJhdGFcIixcbiAgXCJDdW1taW5nc1wiLFxuICBcIkRhY2hcIixcbiAgXCJEJ0Ftb3JlXCIsXG4gIFwiRGFuaWVsXCIsXG4gIFwiRGFyZVwiLFxuICBcIkRhdWdoZXJ0eVwiLFxuICBcIkRhdmlzXCIsXG4gIFwiRGVja293XCIsXG4gIFwiRGVuZXNpa1wiLFxuICBcIkRpYmJlcnRcIixcbiAgXCJEaWNrZW5zXCIsXG4gIFwiRGlja2lcIixcbiAgXCJEaWNraW5zb25cIixcbiAgXCJEaWV0cmljaFwiLFxuICBcIkRvbm5lbGx5XCIsXG4gIFwiRG9vbGV5XCIsXG4gIFwiRG91Z2xhc1wiLFxuICBcIkRveWxlXCIsXG4gIFwiRHVCdXF1ZVwiLFxuICBcIkR1cmdhblwiLFxuICBcIkViZXJ0XCIsXG4gIFwiRWZmZXJ0elwiLFxuICBcIkVpY2htYW5uXCIsXG4gIFwiRW1hcmRcIixcbiAgXCJFbW1lcmljaFwiLFxuICBcIkVyZG1hblwiLFxuICBcIkVybnNlclwiLFxuICBcIkZhZGVsXCIsXG4gIFwiRmFoZXlcIixcbiAgXCJGYXJyZWxsXCIsXG4gIFwiRmF5XCIsXG4gIFwiRmVlbmV5XCIsXG4gIFwiRmVlc3RcIixcbiAgXCJGZWlsXCIsXG4gIFwiRmVycnlcIixcbiAgXCJGaXNoZXJcIixcbiAgXCJGbGF0bGV5XCIsXG4gIFwiRnJhbWlcIixcbiAgXCJGcmFuZWNraVwiLFxuICBcIkZyaWVzZW5cIixcbiAgXCJGcml0c2NoXCIsXG4gIFwiRnVua1wiLFxuICBcIkdheWxvcmRcIixcbiAgXCJHZXJob2xkXCIsXG4gIFwiR2VybGFjaFwiLFxuICBcIkdpYnNvblwiLFxuICBcIkdpc2xhc29uXCIsXG4gIFwiR2xlYXNvblwiLFxuICBcIkdsZWljaG5lclwiLFxuICBcIkdsb3ZlclwiLFxuICBcIkdvbGRuZXJcIixcbiAgXCJHb29kd2luXCIsXG4gIFwiR29yY3phbnlcIixcbiAgXCJHb3R0bGllYlwiLFxuICBcIkdveWV0dGVcIixcbiAgXCJHcmFkeVwiLFxuICBcIkdyYWhhbVwiLFxuICBcIkdyYW50XCIsXG4gIFwiR3JlZW5cIixcbiAgXCJHcmVlbmZlbGRlclwiLFxuICBcIkdyZWVuaG9sdFwiLFxuICBcIkdyaW1lc1wiLFxuICBcIkd1bGdvd3NraVwiLFxuICBcIkd1c2lrb3dza2lcIixcbiAgXCJHdXRrb3dza2lcIixcbiAgXCJHdXRtYW5uXCIsXG4gIFwiSGFhZ1wiLFxuICBcIkhhY2tldHRcIixcbiAgXCJIYWdlbmVzXCIsXG4gIFwiSGFoblwiLFxuICBcIkhhbGV5XCIsXG4gIFwiSGFsdm9yc29uXCIsXG4gIFwiSGFtaWxsXCIsXG4gIFwiSGFtbWVzXCIsXG4gIFwiSGFuZFwiLFxuICBcIkhhbmVcIixcbiAgXCJIYW5zZW5cIixcbiAgXCJIYXJiZXJcIixcbiAgXCJIYXJyaXNcIixcbiAgXCJIYXJ0bWFublwiLFxuICBcIkhhcnZleVwiLFxuICBcIkhhdWNrXCIsXG4gIFwiSGF5ZXNcIixcbiAgXCJIZWFuZXlcIixcbiAgXCJIZWF0aGNvdGVcIixcbiAgXCJIZWdtYW5uXCIsXG4gIFwiSGVpZGVucmVpY2hcIixcbiAgXCJIZWxsZXJcIixcbiAgXCJIZXJtYW5cIixcbiAgXCJIZXJtYW5uXCIsXG4gIFwiSGVybWlzdG9uXCIsXG4gIFwiSGVyem9nXCIsXG4gIFwiSGVzc2VsXCIsXG4gIFwiSGV0dGluZ2VyXCIsXG4gIFwiSGlja2xlXCIsXG4gIFwiSGlsbGxcIixcbiAgXCJIaWxsc1wiLFxuICBcIkhpbHBlcnRcIixcbiAgXCJIaW50elwiLFxuICBcIkhpcnRoZVwiLFxuICBcIkhvZGtpZXdpY3pcIixcbiAgXCJIb2VnZXJcIixcbiAgXCJIb21lbmlja1wiLFxuICBcIkhvcHBlXCIsXG4gIFwiSG93ZVwiLFxuICBcIkhvd2VsbFwiLFxuICBcIkh1ZHNvblwiLFxuICBcIkh1ZWxcIixcbiAgXCJIdWVsc1wiLFxuICBcIkh5YXR0XCIsXG4gIFwiSmFjb2JpXCIsXG4gIFwiSmFjb2JzXCIsXG4gIFwiSmFjb2Jzb25cIixcbiAgXCJKYWt1Ym93c2tpXCIsXG4gIFwiSmFza29sc2tpXCIsXG4gIFwiSmFzdFwiLFxuICBcIkplbmtpbnNcIixcbiAgXCJKZXJkZVwiLFxuICBcIkpvaG5zXCIsXG4gIFwiSm9obnNvblwiLFxuICBcIkpvaG5zdG9uXCIsXG4gIFwiSm9uZXNcIixcbiAgXCJLYXNzdWxrZVwiLFxuICBcIkthdXR6ZXJcIixcbiAgXCJLZWVibGVyXCIsXG4gIFwiS2VlbGluZ1wiLFxuICBcIktlbW1lclwiLFxuICBcIktlcmx1a2VcIixcbiAgXCJLZXJ0em1hbm5cIixcbiAgXCJLZXNzbGVyXCIsXG4gIFwiS2llaG5cIixcbiAgXCJLaWhuXCIsXG4gIFwiS2lsYmFja1wiLFxuICBcIktpbmdcIixcbiAgXCJLaXJsaW5cIixcbiAgXCJLbGVpblwiLFxuICBcIktsaW5nXCIsXG4gIFwiS2xvY2tvXCIsXG4gIFwiS29jaFwiLFxuICBcIktvZWxwaW5cIixcbiAgXCJLb2VwcFwiLFxuICBcIktvaGxlclwiLFxuICBcIktvbm9wZWxza2lcIixcbiAgXCJLb3NzXCIsXG4gIFwiS292YWNla1wiLFxuICBcIktvemV5XCIsXG4gIFwiS3JhamNpa1wiLFxuICBcIktyZWlnZXJcIixcbiAgXCJLcmlzXCIsXG4gIFwiS3NobGVyaW5cIixcbiAgXCJLdWJcIixcbiAgXCJLdWhpY1wiLFxuICBcIkt1aGxtYW5cIixcbiAgXCJLdWhuXCIsXG4gIFwiS3VsYXNcIixcbiAgXCJLdW5kZVwiLFxuICBcIkt1bnplXCIsXG4gIFwiS3VwaGFsXCIsXG4gIFwiS3V0Y2hcIixcbiAgXCJLdXZhbGlzXCIsXG4gIFwiTGFiYWRpZVwiLFxuICBcIkxha2luXCIsXG4gIFwiTGFuZ1wiLFxuICBcIkxhbmdvc2hcIixcbiAgXCJMYW5nd29ydGhcIixcbiAgXCJMYXJraW5cIixcbiAgXCJMYXJzb25cIixcbiAgXCJMZWFubm9uXCIsXG4gIFwiTGVic2Fja1wiLFxuICBcIkxlZG5lclwiLFxuICBcIkxlZmZsZXJcIixcbiAgXCJMZWdyb3NcIixcbiAgXCJMZWhuZXJcIixcbiAgXCJMZW1rZVwiLFxuICBcIkxlc2NoXCIsXG4gIFwiTGV1c2Noa2VcIixcbiAgXCJMaW5kXCIsXG4gIFwiTGluZGdyZW5cIixcbiAgXCJMaXR0ZWxcIixcbiAgXCJMaXR0bGVcIixcbiAgXCJMb2NrbWFuXCIsXG4gIFwiTG93ZVwiLFxuICBcIkx1Ym93aXR6XCIsXG4gIFwiTHVlaWx3aXR6XCIsXG4gIFwiTHVldHRnZW5cIixcbiAgXCJMeW5jaFwiLFxuICBcIk1hY2Vqa292aWNcIixcbiAgXCJNYWNHeXZlclwiLFxuICBcIk1hZ2dpb1wiLFxuICBcIk1hbm5cIixcbiAgXCJNYW50ZVwiLFxuICBcIk1hcmtzXCIsXG4gIFwiTWFycXVhcmR0XCIsXG4gIFwiTWFydmluXCIsXG4gIFwiTWF5ZXJcIixcbiAgXCJNYXllcnRcIixcbiAgXCJNY0NsdXJlXCIsXG4gIFwiTWNDdWxsb3VnaFwiLFxuICBcIk1jRGVybW90dFwiLFxuICBcIk1jR2x5bm5cIixcbiAgXCJNY0tlbnppZVwiLFxuICBcIk1jTGF1Z2hsaW5cIixcbiAgXCJNZWRodXJzdFwiLFxuICBcIk1lcnR6XCIsXG4gIFwiTWV0elwiLFxuICBcIk1pbGxlclwiLFxuICBcIk1pbGxzXCIsXG4gIFwiTWl0Y2hlbGxcIixcbiAgXCJNb2VuXCIsXG4gIFwiTW9oclwiLFxuICBcIk1vbmFoYW5cIixcbiAgXCJNb29yZVwiLFxuICBcIk1vcmFyXCIsXG4gIFwiTW9yaXNzZXR0ZVwiLFxuICBcIk1vc2Npc2tpXCIsXG4gIFwiTXJhelwiLFxuICBcIk11ZWxsZXJcIixcbiAgXCJNdWxsZXJcIixcbiAgXCJNdXJhemlrXCIsXG4gIFwiTXVycGh5XCIsXG4gIFwiTXVycmF5XCIsXG4gIFwiTmFkZXJcIixcbiAgXCJOaWNvbGFzXCIsXG4gIFwiTmllbm93XCIsXG4gIFwiTmlrb2xhdXNcIixcbiAgXCJOaXR6c2NoZVwiLFxuICBcIk5vbGFuXCIsXG4gIFwiT2JlcmJydW5uZXJcIixcbiAgXCJPJ0Nvbm5lbGxcIixcbiAgXCJPJ0Nvbm5lclwiLFxuICBcIk8nSGFyYVwiLFxuICBcIk8nS2VlZmVcIixcbiAgXCJPJ0tvblwiLFxuICBcIk9rdW5ldmFcIixcbiAgXCJPbHNvblwiLFxuICBcIk9uZHJpY2thXCIsXG4gIFwiTydSZWlsbHlcIixcbiAgXCJPcm5cIixcbiAgXCJPcnRpelwiLFxuICBcIk9zaW5za2lcIixcbiAgXCJQYWNvY2hhXCIsXG4gIFwiUGFkYmVyZ1wiLFxuICBcIlBhZ2FjXCIsXG4gIFwiUGFyaXNpYW5cIixcbiAgXCJQYXJrZXJcIixcbiAgXCJQYXVjZWtcIixcbiAgXCJQZmFubmVyc3RpbGxcIixcbiAgXCJQZmVmZmVyXCIsXG4gIFwiUG9sbGljaFwiLFxuICBcIlBvdXJvc1wiLFxuICBcIlBvd2xvd3NraVwiLFxuICBcIlByZWRvdmljXCIsXG4gIFwiUHJpY2VcIixcbiAgXCJQcm9oYXNrYVwiLFxuICBcIlByb3NhY2NvXCIsXG4gIFwiUHVyZHlcIixcbiAgXCJRdWlnbGV5XCIsXG4gIFwiUXVpdHpvblwiLFxuICBcIlJhdGhcIixcbiAgXCJSYXRrZVwiLFxuICBcIlJhdVwiLFxuICBcIlJheW5vclwiLFxuICBcIlJlaWNoZWxcIixcbiAgXCJSZWljaGVydFwiLFxuICBcIlJlaWxseVwiLFxuICBcIlJlaW5nZXJcIixcbiAgXCJSZW1wZWxcIixcbiAgXCJSZW5uZXJcIixcbiAgXCJSZXlub2xkc1wiLFxuICBcIlJpY2VcIixcbiAgXCJSaXBwaW5cIixcbiAgXCJSaXRjaGllXCIsXG4gIFwiUm9iZWxcIixcbiAgXCJSb2JlcnRzXCIsXG4gIFwiUm9kcmlndWV6XCIsXG4gIFwiUm9nYWhuXCIsXG4gIFwiUm9oYW5cIixcbiAgXCJSb2xmc29uXCIsXG4gIFwiUm9tYWd1ZXJhXCIsXG4gIFwiUm9vYlwiLFxuICBcIlJvc2VuYmF1bVwiLFxuICBcIlJvd2VcIixcbiAgXCJSdWVja2VyXCIsXG4gIFwiUnVub2xmc2RvdHRpclwiLFxuICBcIlJ1bm9sZnNzb25cIixcbiAgXCJSdW50ZVwiLFxuICBcIlJ1c3NlbFwiLFxuICBcIlJ1dGhlcmZvcmRcIixcbiAgXCJSeWFuXCIsXG4gIFwiU2FuZm9yZFwiLFxuICBcIlNhdHRlcmZpZWxkXCIsXG4gIFwiU2F1ZXJcIixcbiAgXCJTYXdheW5cIixcbiAgXCJTY2hhZGVuXCIsXG4gIFwiU2NoYWVmZXJcIixcbiAgXCJTY2hhbWJlcmdlclwiLFxuICBcIlNjaGlsbGVyXCIsXG4gIFwiU2NoaW1tZWxcIixcbiAgXCJTY2hpbm5lclwiLFxuICBcIlNjaG1lbGVyXCIsXG4gIFwiU2NobWlkdFwiLFxuICBcIlNjaG1pdHRcIixcbiAgXCJTY2huZWlkZXJcIixcbiAgXCJTY2hvZW5cIixcbiAgXCJTY2hvd2FsdGVyXCIsXG4gIFwiU2Nocm9lZGVyXCIsXG4gIFwiU2NodWxpc3RcIixcbiAgXCJTY2h1bHR6XCIsXG4gIFwiU2NodW1tXCIsXG4gIFwiU2NodXBwZVwiLFxuICBcIlNjaHVzdGVyXCIsXG4gIFwiU2VuZ2VyXCIsXG4gIFwiU2hhbmFoYW5cIixcbiAgXCJTaGllbGRzXCIsXG4gIFwiU2ltb25pc1wiLFxuICBcIlNpcGVzXCIsXG4gIFwiU2tpbGVzXCIsXG4gIFwiU21pdGhcIixcbiAgXCJTbWl0aGFtXCIsXG4gIFwiU3BlbmNlclwiLFxuICBcIlNwaW5rYVwiLFxuICBcIlNwb3JlclwiLFxuICBcIlN0YW1tXCIsXG4gIFwiU3RhbnRvblwiLFxuICBcIlN0YXJrXCIsXG4gIFwiU3RlaHJcIixcbiAgXCJTdGV1YmVyXCIsXG4gIFwiU3RpZWRlbWFublwiLFxuICBcIlN0b2tlc1wiLFxuICBcIlN0b2x0ZW5iZXJnXCIsXG4gIFwiU3RyYWNrZVwiLFxuICBcIlN0cmVpY2hcIixcbiAgXCJTdHJvbWFuXCIsXG4gIFwiU3Ryb3NpblwiLFxuICBcIlN3YW5pYXdza2lcIixcbiAgXCJTd2lmdFwiLFxuICBcIlRlcnJ5XCIsXG4gIFwiVGhpZWxcIixcbiAgXCJUaG9tcHNvblwiLFxuICBcIlRpbGxtYW5cIixcbiAgXCJUb3JwXCIsXG4gIFwiVG9ycGh5XCIsXG4gIFwiVG93bmVcIixcbiAgXCJUb3lcIixcbiAgXCJUcmFudG93XCIsXG4gIFwiVHJlbWJsYXlcIixcbiAgXCJUcmV1dGVsXCIsXG4gIFwiVHJvbXBcIixcbiAgXCJUdXJjb3R0ZVwiLFxuICBcIlR1cm5lclwiLFxuICBcIlVsbHJpY2hcIixcbiAgXCJVcHRvblwiLFxuICBcIlZhbmRlcnZvcnRcIixcbiAgXCJWZXVtXCIsXG4gIFwiVm9sa21hblwiLFxuICBcIlZvblwiLFxuICBcIlZvblJ1ZWRlblwiLFxuICBcIldhZWxjaGlcIixcbiAgXCJXYWxrZXJcIixcbiAgXCJXYWxzaFwiLFxuICBcIldhbHRlclwiLFxuICBcIldhcmRcIixcbiAgXCJXYXRlcnNcIixcbiAgXCJXYXRzaWNhXCIsXG4gIFwiV2ViZXJcIixcbiAgXCJXZWhuZXJcIixcbiAgXCJXZWltYW5uXCIsXG4gIFwiV2Vpc3NuYXRcIixcbiAgXCJXZWxjaFwiLFxuICBcIldlc3RcIixcbiAgXCJXaGl0ZVwiLFxuICBcIldpZWdhbmRcIixcbiAgXCJXaWxkZXJtYW5cIixcbiAgXCJXaWxraW5zb25cIixcbiAgXCJXaWxsXCIsXG4gIFwiV2lsbGlhbXNvblwiLFxuICBcIldpbGxtc1wiLFxuICBcIldpbmRsZXJcIixcbiAgXCJXaW50aGVpc2VyXCIsXG4gIFwiV2lzb2t5XCIsXG4gIFwiV2lzb3prXCIsXG4gIFwiV2l0dGluZ1wiLFxuICBcIldpemFcIixcbiAgXCJXb2xmXCIsXG4gIFwiV29sZmZcIixcbiAgXCJXdWNrZXJ0XCIsXG4gIFwiV3Vuc2NoXCIsXG4gIFwiV3ltYW5cIixcbiAgXCJZb3N0XCIsXG4gIFwiWXVuZHRcIixcbiAgXCJaYm9uY2FrXCIsXG4gIFwiWmVtbGFrXCIsXG4gIFwiWmllbWFublwiLFxuICBcIlppZW1lXCIsXG4gIFwiWnVsYXVmXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7cHJlZml4fSAje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9ICN7c3VmZml4fVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIk1yLlwiLFxuICBcIk1ycy5cIixcbiAgXCJNcy5cIixcbiAgXCJNaXNzXCIsXG4gIFwiRHIuXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkpyLlwiLFxuICBcIlNyLlwiLFxuICBcIklcIixcbiAgXCJJSVwiLFxuICBcIklJSVwiLFxuICBcIklWXCIsXG4gIFwiVlwiLFxuICBcIk1EXCIsXG4gIFwiRERTXCIsXG4gIFwiUGhEXCIsXG4gIFwiRFZNXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBcImRlc2NyaXB0b3JcIjogW1xuICAgIFwiTGVhZFwiLFxuICAgIFwiU2VuaW9yXCIsXG4gICAgXCJEaXJlY3RcIixcbiAgICBcIkNvcnBvcmF0ZVwiLFxuICAgIFwiRHluYW1pY1wiLFxuICAgIFwiRnV0dXJlXCIsXG4gICAgXCJQcm9kdWN0XCIsXG4gICAgXCJOYXRpb25hbFwiLFxuICAgIFwiUmVnaW9uYWxcIixcbiAgICBcIkRpc3RyaWN0XCIsXG4gICAgXCJDZW50cmFsXCIsXG4gICAgXCJHbG9iYWxcIixcbiAgICBcIkN1c3RvbWVyXCIsXG4gICAgXCJJbnZlc3RvclwiLFxuICAgIFwiRHluYW1pY1wiLFxuICAgIFwiSW50ZXJuYXRpb25hbFwiLFxuICAgIFwiTGVnYWN5XCIsXG4gICAgXCJGb3J3YXJkXCIsXG4gICAgXCJJbnRlcm5hbFwiLFxuICAgIFwiSHVtYW5cIixcbiAgICBcIkNoaWVmXCIsXG4gICAgXCJQcmluY2lwYWxcIlxuICBdLFxuICBcImxldmVsXCI6IFtcbiAgICBcIlNvbHV0aW9uc1wiLFxuICAgIFwiUHJvZ3JhbVwiLFxuICAgIFwiQnJhbmRcIixcbiAgICBcIlNlY3VyaXR5XCIsXG4gICAgXCJSZXNlYXJjaFwiLFxuICAgIFwiTWFya2V0aW5nXCIsXG4gICAgXCJEaXJlY3RpdmVzXCIsXG4gICAgXCJJbXBsZW1lbnRhdGlvblwiLFxuICAgIFwiSW50ZWdyYXRpb25cIixcbiAgICBcIkZ1bmN0aW9uYWxpdHlcIixcbiAgICBcIlJlc3BvbnNlXCIsXG4gICAgXCJQYXJhZGlnbVwiLFxuICAgIFwiVGFjdGljc1wiLFxuICAgIFwiSWRlbnRpdHlcIixcbiAgICBcIk1hcmtldHNcIixcbiAgICBcIkdyb3VwXCIsXG4gICAgXCJEaXZpc2lvblwiLFxuICAgIFwiQXBwbGljYXRpb25zXCIsXG4gICAgXCJPcHRpbWl6YXRpb25cIixcbiAgICBcIk9wZXJhdGlvbnNcIixcbiAgICBcIkluZnJhc3RydWN0dXJlXCIsXG4gICAgXCJJbnRyYW5ldFwiLFxuICAgIFwiQ29tbXVuaWNhdGlvbnNcIixcbiAgICBcIldlYlwiLFxuICAgIFwiQnJhbmRpbmdcIixcbiAgICBcIlF1YWxpdHlcIixcbiAgICBcIkFzc3VyYW5jZVwiLFxuICAgIFwiTW9iaWxpdHlcIixcbiAgICBcIkFjY291bnRzXCIsXG4gICAgXCJEYXRhXCIsXG4gICAgXCJDcmVhdGl2ZVwiLFxuICAgIFwiQ29uZmlndXJhdGlvblwiLFxuICAgIFwiQWNjb3VudGFiaWxpdHlcIixcbiAgICBcIkludGVyYWN0aW9uc1wiLFxuICAgIFwiRmFjdG9yc1wiLFxuICAgIFwiVXNhYmlsaXR5XCIsXG4gICAgXCJNZXRyaWNzXCJcbiAgXSxcbiAgXCJqb2JcIjogW1xuICAgIFwiU3VwZXJ2aXNvclwiLFxuICAgIFwiQXNzb2NpYXRlXCIsXG4gICAgXCJFeGVjdXRpdmVcIixcbiAgICBcIkxpYWlzb25cIixcbiAgICBcIk9mZmljZXJcIixcbiAgICBcIk1hbmFnZXJcIixcbiAgICBcIkVuZ2luZWVyXCIsXG4gICAgXCJTcGVjaWFsaXN0XCIsXG4gICAgXCJEaXJlY3RvclwiLFxuICAgIFwiQ29vcmRpbmF0b3JcIixcbiAgICBcIkFkbWluaXN0cmF0b3JcIixcbiAgICBcIkFyY2hpdGVjdFwiLFxuICAgIFwiQW5hbHlzdFwiLFxuICAgIFwiRGVzaWduZXJcIixcbiAgICBcIlBsYW5uZXJcIixcbiAgICBcIk9yY2hlc3RyYXRvclwiLFxuICAgIFwiVGVjaG5pY2lhblwiLFxuICAgIFwiRGV2ZWxvcGVyXCIsXG4gICAgXCJQcm9kdWNlclwiLFxuICAgIFwiQ29uc3VsdGFudFwiLFxuICAgIFwiQXNzaXN0YW50XCIsXG4gICAgXCJGYWNpbGl0YXRvclwiLFxuICAgIFwiQWdlbnRcIixcbiAgICBcIlJlcHJlc2VudGF0aXZlXCIsXG4gICAgXCJTdHJhdGVnaXN0XCJcbiAgXVxufTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjLSMjIy0jIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjI1wiLFxuICBcIiMjIy0jIyMtIyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyNcIixcbiAgXCIjIyMtIyMjLSMjIyMgeCMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjIHgjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjIyB4IyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjIHgjIyNcIixcbiAgXCIjIyMtIyMjLSMjIyMgeCMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjIyB4IyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjIHgjIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjIHgjIyMjXCIsXG4gIFwiIyMjLSMjIy0jIyMjIHgjIyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjIHgjIyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjIHgjIyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjIyB4IyMjIyNcIlxuXTtcbiIsInZhciBwaG9uZV9udW1iZXIgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gcGhvbmVfbnVtYmVyO1xucGhvbmVfbnVtYmVyLmZvcm1hdHMgPSByZXF1aXJlKFwiLi9mb3JtYXRzXCIpO1xuIiwidmFyIHN5c3RlbSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBzeXN0ZW07XG5zeXN0ZW0ubWltZVR5cGVzID0gcmVxdWlyZShcIi4vbWltZVR5cGVzXCIpOyIsIi8qXG5cblRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG5Db3B5cmlnaHQgKGMpIDIwMTQgSm9uYXRoYW4gT25nIG1lQGpvbmdsZWJlcnJ5LmNvbVxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG5vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG5pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG50byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG5jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG5hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG5PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG5USEUgU09GVFdBUkUuXG5cbkRlZmluaXRpb25zIGZyb20gbWltZS1kYiB2MS4yMS4wXG5Gb3IgdXBkYXRlcyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9taW1lLWRiL2Jsb2IvbWFzdGVyL2RiLmpzb25cblxuKi9cblxubW9kdWxlWydleHBvcnRzJ10gPSB7XG4gIFwiYXBwbGljYXRpb24vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uLzNncGRhc2gtcW9lLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vM2dwcC1pbXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2EybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hY3RpdmVtZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tY29zdG1hcCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwZmlsdGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWRpcmVjdG9yeStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludGNvc3QranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0cGFyYW1zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludHByb3BwYXJhbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZXJyb3IranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tbmV0d29ya21hcCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1uZXR3b3JrbWFwZmlsdGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYW5kcmV3LWluc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hcHBsZWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBwbGl4d2FyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRmeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRvbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21jYXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRvbWNhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9taWNtYWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21zdmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRvbXN2Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0eG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F1dGgtcG9saWN5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iYWNuZXQteGRkK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iYXRjaC1zbXRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Jkb2NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZG9jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmVlcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsZW5kYXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbGVuZGFyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxsLWNvbXBsZXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2Fscy0xODQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2NtcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2N4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2N4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZGZ4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLWNhcGFiaWxpdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktcXVldWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2VhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlYS0yMDE4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWxsbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nmd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY25ycCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29hcC1ncm91cCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29tbW9uZ3JvdW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvbmZlcmVuY2UtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3BsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3JhdHRyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3RhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3RhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N2bStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3Utc2VlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3liZXJjYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RhcnRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhc2hkZWx0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYXZtb3VudFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RjYS1yZnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RlYy1keFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWFsb2ctaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGljb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGlpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZG9jYm9vayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRia1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rza3BwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kc3NjK2RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRzc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kc3NjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkc3NjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY21hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWRpLWNvbnNlbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWRpLXgxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGlmYWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmNvbW1lbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmRldmljZWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnByb3ZpZGVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuc2VydmljZWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnN1YnNjcmliZXJpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbW1hK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbW90aW9ubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VuY2FwcnRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VwcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXB1Yit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlcHViXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXNob3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZmFzdGluZm9zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZmFzdHNvYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZmR0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9maXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtc2ZudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXRkcGZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid29mZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtd29mZjJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3b2ZmMlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZyYW1ld29yay1hdHRyaWJ1dGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ncHgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9neGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd4ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2d6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaDIyNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9oZWxkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9odHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2h5cGVyc3R1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLWtleS1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUtcGtnLXJlcGx5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUtcHAtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ltLWlzY29tcG9zaW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5jbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgub2JqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LnJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LnZuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmttbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbmtcIixcImlua21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW90cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pcGZpeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlwZml4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lzdXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphclwiLFwid2FyXCIsXCJlYXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhLXNlcmlhbGl6ZWQtb2JqZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhLXZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGFzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qb3NlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pyZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29uXCIsXCJtYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uNVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb241XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbm1sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vandrK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd2stc2V0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24va3BtbC1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9rcG1sLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9sZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29ubGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9saW5rLWZvcm1hdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9sb2FkLWNvbnRyb2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibG9zdHhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvc3RzeW5jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9seGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjLWJpbmhleDQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHF4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNwdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hY3dyaXRlaWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYWRzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvblwiOiB7XG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJtYW5pZmVzdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hcmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXJjeG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1yY3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRoZW1hdGljYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hXCIsXCJuYlwiLFwibWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWF0aG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aG1sLWNvbnRlbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhtbC1wcmVzZW50YXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtYXNzb2NpYXRlZC1wcm9jZWR1cmUtZGVzY3JpcHRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtZGVyZWdpc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1lbnZlbG9wZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtbXNrLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXByb3RlY3Rpb24tZGVzY3JpcHRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcmVjZXB0aW9uLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1yZWdpc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1yZWdpc3Rlci1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1zY2hlZHVsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy11c2VyLXNlcnZpY2UtZGVzY3JpcHRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ib3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYm94XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lZGlhX2NvbnRyb2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lZGlhc2VydmVyY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2NtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lcmdlLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ldGFsaW5rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ldGE0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWV0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZXRzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWY0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21pa2V5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW9kc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3Mta2V5c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3NzLXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3Nza2V5LWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zc2tleS1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wMjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtMjFcIixcIm1wMjFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRzXCIsXCJtNHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWlvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1pb2QteG10XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21yYi1jb25zdW1lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXJiLXB1Ymxpc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zYy1pdnIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zYy1taXhlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXN3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG9jXCIsXCJkb3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9teGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uYXNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtY2hlY2tncm91cHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmV3cy1ncm91cGluZm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmV3cy10cmFuc21pc3Npb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmxzbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25zc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3NwLXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2NzcC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiaW5cIixcImRtc1wiLFwibHJmXCIsXCJtYXJcIixcInNvXCIsXCJkaXN0XCIsXCJkaXN0elwiLFwicGtnXCIsXCJicGtcIixcImR1bXBcIixcImVsY1wiLFwiZGVwbG95XCIsXCJleGVcIixcImRsbFwiLFwiZGViXCIsXCJkbWdcIixcImlzb1wiLFwiaW1nXCIsXCJtc2lcIixcIm1zcFwiLFwibXNtXCIsXCJidWZmZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2VicHMtcGFja2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbWRvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9tZG9jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb25lbm90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib25ldG9jXCIsXCJvbmV0b2MyXCIsXCJvbmV0bXBcIixcIm9uZXBrZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL294cHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJveHBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wYXRjaC1vcHMtZXJyb3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGVyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZ3Ata2V5c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNjXCIsXCJzaWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9waWNzLXJ1bGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9waWRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9waWRmLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3MxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3MxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzNy1taW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdtXCIsXCJwN2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzNy1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1hdHRyLWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtY3JsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3JsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1wa2lwYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGtpcGF0aFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXhjbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wbHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcG9jLXNldHRpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaVwiLFwiZXBzXCIsXCJwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Byb3ZlbmFuY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5hbHZlc3RyYW5kLnRpdHJheC1zaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuY3d3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3d3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmhwdWIremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5ucHJlbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLnBsdWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLnJkZi14bWwtY3J5cHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLnhzZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHNrYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2tjeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcXNpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yYXB0b3JmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmRhcCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVnaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZWxheC1uZy1jb21wYWN0LXN5bnRheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbW90ZS1wcmludGluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXB1dG9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmZjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yaXNjb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmxtaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmxzLXNlcnZpY2VzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYnJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS1yb2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyb2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLXVwZG93blwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yc2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yc3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NhbWxhc3NlcnRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NhbWxtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2JtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NhaXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjaW0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcHFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2RwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXAtZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Nlc3Npb24taW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcGF5bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcGF5bWVudC1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2V0cGF5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXRyZWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZ21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWwtb3Blbi1jYXRhbG9nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NoZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaWV2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGUtZmlsdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGUtbWVzc2FnZS1zdW1tYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZXN5bWJvbGNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtaWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic21pXCIsXCJzbWlsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc21wdGUzMzZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NvYXArZmFzdGluZm9zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNyeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwaXJpdHMtZXZlbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NxbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcmdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3JhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NyZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3J4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcnUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3NkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWFwZXgtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtYXBleC11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWNvbW11bml0eS11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1jb21tdW5pdHktdXBkYXRlLWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1lcnJvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXNlcXVlbmNlLWFkanVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXNlcXVlbmNlLWFkanVzdC1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc3RhdHVzLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc3RhdHVzLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtdXBkYXRlLWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFyXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGVpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlaVwiLFwidGVpY29ycHVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGhyYXVkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRmaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXAtcmVwbHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wZWQtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3R0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3R2ZS10cmlnZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtZ3Jwc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy1yZXNzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXRhcmdldGRlc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy11aXNvY2tldGRlc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjYXJkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92Y2FyZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdmVtbWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdml2aWRlbmNlLnNjcmlwdGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAtcHJvc2UtcGMzY2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmFjY2Vzcy10cmFuc2Zlci1ldmVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmJzZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWlkLWNhbGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1sYXJnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1zbWFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBzYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy12YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdmJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3J2Y2MtZXh0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zdGF0ZS1hbmQtZXZlbnQtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAudXNzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAyLmJjbWNzaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAyLnNtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRjYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM20ucG9zdC1pdC1ub3Rlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB3blwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmFzb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmltcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImltcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjdVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb3JwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRjXCIsXCJhY3V0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZmxhc2gubW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmNkdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmeHBcIixcImZ4cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUucGFydGlhbC11cGxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhmZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWV0aGVyLmltcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWgtYmFyY29kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaGVhZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5hemZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhemZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXpzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXp3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFtaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbXVuZHNlbi5tYXplK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwa1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbmtpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItY2VydGlmaWNhdGUtaXNzdWUtaW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNpaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItZnVuZHMtdHJhbnNmZXItaW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnRpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFudGl4LmdhbWUtY29tcG9uZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0LmNvbXBhY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuanNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBpK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wa2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0zdThcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUucGtwYXNzXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGtwYXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFyYXN0cmEuc3dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzd2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJ0c3F1YXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hc3RyYWVhLXNvZnR3YXJlLmlvdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpb3RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmF1ZGlvZ3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXV0b3BhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmF2aXN0YXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1wclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmVraXR6dXItc3RlY2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iaW9wYXgucmRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZWljZS5tdWx0aXBhc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmVwLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmxlLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYm1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1pXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJ1c2luZXNzb2JqZWN0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJlcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYWItanNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2Fub24tY3BkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2Fub24tbGlwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2VuZGlvLnRoaW5saW5jLmNsaWVudGNvbmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNlbnR1cnktc3lzdGVtcy50Y3Bfc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaGlwbnV0cy5rYXJhb2tlLW1tZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1tZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaW5kZXJlbGxhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2R5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpcnBhY2suaXNkbi1leHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xheW1vcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycDlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImM0Z1wiLFwiYzRkXCIsXCJjNGZcIixcImM0cFwiLFwiYzR1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjMTFhbWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZy1wa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjMTFhbXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29mZmVlc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbi5kb2MranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLm5leHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21tZXJjZS1iYXR0ZWxsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RiY21zZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xreFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xra1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnBhbGV0dGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGtwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaXRpY2FsdG9vbHMud2JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndic1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3RjdC53cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBvc3RzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcHBkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXJhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3VybC5jYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLnBjdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY3VybFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jeWFuLmRlYW4ucm9vdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5YmFua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGFydFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGViaWFuLmJpbmFyeS1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmZcIixcInV2dmZcIixcInV2ZFwiLFwidXZ2ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ0XCIsXCJ1dnZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnhcIixcInV2dnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS56aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnpcIixcInV2dnpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGlua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZlX2xhdW5jaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZXNtdW1lLW1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kaXItYmkucGxhdGUtZGwtbm9zdWZmaXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRtLmRlbGVnYXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kbmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkbmFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9jdW1lbnQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1scFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tb2JpbGUuMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubW9iaWxlLjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvcmVtaXIuc2NvcmVjbG91ZC1iaW5hcnktZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRwZ3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkcGdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHJlYW1mYWN0b3J5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGZhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcml2ZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRzLWtleXBvaW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrcHh4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsLmZsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuaHRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmFpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZHZialwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmVzZ2NvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNkZnRub3RpZmFjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNnYWNjZXNzMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dwZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjcm9hbWluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwdHYuYWxmZWMtYmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwdHYuYWxmZWMtZW5oYW5jZW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1hZ2dyZWdhdGUtcm9vdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1jb250YWluZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtZ2VuZXJpYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1tc2dsaXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLXJlZ2lzdHJhdGlvbi1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLXJlZ2lzdHJhdGlvbi1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pbml0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLnBmclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLnNlcnZpY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHhyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2VvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR6clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWFzeWthcmFva2UuY2RnZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjZGlzLXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5maWxlcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmZpbGV1cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNyZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbWNsaWVudC5hY2Nlc3NyZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZW5saXZlblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbnBoYXNlLmVudm95XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHJpbnRzLmRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5lc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ubXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc2FsdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXJpY3Nzb24ucXVpY2tjYWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lc3ppZ25vMyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlczNcIixcImV0M1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYXNpYy1lK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hc2ljLXMremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmN1Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmNvbW1hbmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZkaXNjb3ZlcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWJjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWNvZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1ucHZyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2VydmljZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZ1ZXByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1jaWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1oZWc1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm92ZXJsb2FkLWNvbnRyb2wtcG9saWN5LWRhdGFzZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnBzdG4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnNjaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuc2ltc2VydnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRpbWVzdGFtcC10b2tlblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50c2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbC5kZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV1ZG9yYS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1hbGJ1bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV6MlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXozXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmYtc2VjdXJlLm1vYmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmFzdGNvcHktZGlzay1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZkc24ubXNlZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2VlZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWVkXCIsXCJkYXRhbGVzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZnNuc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmlsbWl0LnpmY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmludHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZpcmVtb25rZXlzLmNsb3VkY2VsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmxvZ3JhcGhpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdwaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnRjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZvbnQtZm9udGZvcmdlLXNmZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZtXCIsXCJmcmFtZVwiLFwibWFrZXJcIixcImJvb2tcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5mbmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnNjLndlYmxhdW5jaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2FzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2EyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2EzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZnNVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzcHJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmgyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5hcnQtZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5hcnQ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZGRkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGRkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5iaW5kZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5oYnBsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdXQtbWlzbmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnpzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbm9tYXRpeC50dXhlZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvY3ViZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLmZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZ2JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdndFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9tZXRyeS1leHBsb3JlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdleFwiLFwiZ3JlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb25leHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJneHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvcGxhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImcyd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImczd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZXJiZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdsb2JhbHBsYXRmb3JtLmNhcmQtY29udGVudC1tZ3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdsb2JhbHBsYXRmb3JtLmNhcmQtY29udGVudC1tZ3QtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdteFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5kb2N1bWVudFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3NsaWRlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zcHJlYWRzaGVldFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdzaGVldFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrbXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0remlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2sueG1sZGF0YWNvbnRhaW5lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyYWZlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdxZlwiLFwiZ3FzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyaWRtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWFjY291bnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWhlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWlkZW50aXR5LW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWluamVjdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3J2XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXZjYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoYWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6bW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGJjaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhiY2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGNsLWJpcmVwb3J0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGVyb2t1K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBnbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhwZ2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhwaWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWpseXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNseGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHR0cGhvbmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2ZkLWhkc3R4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5cGVyZHJpdmUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oem4tM2QtY3Jvc3N3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uYWZwbGluZWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5lbGVjdHJvbmljLW1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubWluaXBheVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1weVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWZwXCIsXCJsaXN0YWZwXCIsXCJsaXN0MzgyMFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ucmlnaHRzLW1hbmFnZW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpcm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLnNlY3VyZS1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNjXCIsXCJpY21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWVlZS4xOTA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pZ2xvYWRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZ1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXZ1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5saXMudjIucmVzdWx0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sY29uc3VtZXJwcm9maWxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29scHJveHkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eS5pZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHNldHRpbmdzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3Muc2ltcGxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtZWRjb250cm9sLnJtcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm9ybWl4LXZpc2lvbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3RlY2gucHJvamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3RlY2gucHJvamVjdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlubm9wYXRoLndhbXAubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyY29uLmZvcm1uZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHdcIixcInhweFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmdlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImkyZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcnRydXN0LmRpZ2lib3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3Qubm5jcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50dS5xYm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxYm9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50dS5xZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxZnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5jYXRhbG9naXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIuY29uY2VwdGl0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmtub3dsZWRnZWl0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLm5ld3NpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5uZXdzbWVzc2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGFja2FnZWl0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLnBsYW5uaW5naXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdW5wbHVnZ2VkLnJjcHJvZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJjcHJvZmlsZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcmVwb3NpdG9yeS5wYWNrYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlycFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcy14cHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmY3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWRpcmVjdG9yeS1zZXJ2aWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1qcG5zdG9yZS13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXBheW1lbnQtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXJlZ2lzdHJhdGlvbi13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXNldHN0b3JlLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC12ZXJpZmljYXRpb24td2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qY3AuamF2YW1lLm1pZGxldC1ybXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamlzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImppc3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuam9vc3Quam9kYS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiam9kYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qc2suaXNkbi1uZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmthaG9vdHpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrdHpcIixcImt0clwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2FyYm9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2FyYm9uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaHJ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtmb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrb25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtwcmVzZW50ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrcHJcIixcImtwdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3NwcmVhZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3dvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrd2RcIixcImt3dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZW5hbWVhYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHRrZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJraWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2luYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrbmVcIixcImtucFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rb2FuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2twXCIsXCJza2RcIixcInNrdFwiLFwic2ttXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtvZGFrLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYXN4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGliZXJ0eS1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZGVza3RvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5leGNoYW5nZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIxMjNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtYXBwcm9hY2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcHJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtZnJlZWxhbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW5vdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW9yZ2FuaXplclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9yZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1zY3JlZW5jYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtd29yZHByb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx3cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYWNwb3J0cy5wb3J0cGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG9ydHBrZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXBib3gtdmVjdG9yLXRpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uYWN0aW9udG9rZW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmNvbmZ0b2tlbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0ubGljZW5zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0ubWRjZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFzb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXhtaW5kLm1heG1pbmQtZGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1jZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1jZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZWRjYWxjZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1jMVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZWRpYXN0YXRpb24uY2RrZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGtleVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZXJpZGlhbi1zbGluZ3Nob3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1mZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtd2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWZtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1mbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNybytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguZmxvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguaWd4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWd4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5wb3J0YWJsZS1leGVjdXRhYmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWVsZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taW5pc29mdC1ocDMwMDAtc2F2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWl0c3ViaXNoaS5taXN0eS1ndWFyZC50cnVzdHdlYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRhZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGlzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1xeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1xeVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5wbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnR4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcG5cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmNlcnRpZmljYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmFkc2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5maXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5nb3RhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmttclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLnR0Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLndlbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuaXBybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4dWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtM21mZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWFydGdhbHJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2lsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWFzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtY2FiLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtY29sb3IuaWNjcHJvZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsc1wiLFwieGxtXCIsXCJ4bGFcIixcInhsY1wiLFwieGx0XCIsXCJ4bHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW90XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2htXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWltc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImltc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1scm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJscm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZXgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRobXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtb3BlbnR5cGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wYWNrYWdlLm9iZnVzY2F0ZWQtb3BlbnR5cGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnNlY2NhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2F0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zdGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wbGF5cmVhZHkuaW5pdGlhdG9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdFwiLFwicHBzXCIsXCJwb3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcGFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbGRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwc21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3RtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50ZGV2aWNlY2FwYWJpbGl0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRpbmcucHJpbnR0aWNrZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByb2plY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcHBcIixcIm1wdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy10bmVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLmRldmljZXBhaXJpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MubndwcmludGluZy5vb2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MucHJpbnRlcnBhaXJpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3Mud3NkLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubGljLWNobGctcmVxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5saWMtcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItY2hsZy1yZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLm1ldGVyLXJlc3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG9jbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29ya3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cHNcIixcIndrc1wiLFwid2NtXCIsXCJ3ZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd3BsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXhwc2RvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zYS1kaXNrLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tc2VxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNlcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tc2lnblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXVsdGlhZC5jcmVhdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3IuY2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdXNpYy1uaWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdXNpY2lhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm11c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdXZlZS5zdHlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zdHlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXluZmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YWdsZXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmNkLmNvbnRyb2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5jZC5yZWZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5lcnZhbmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5ldGZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmV1cm9sYW5ndWFnZS5ubHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubHVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8ubml0cm8ucm9tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaW50ZW5kby5zbmVzLnJvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubml0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm50ZlwiLFwibml0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1kaXJlY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtc2VhbGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm5zXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXdlYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5ud1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jYXRhbG9nc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY29ubWwrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNvbm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuaXB0di5jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pc2RzLXJhZGlvLXByZXNldHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrY29sbGVjdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5hYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmdkYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLnN5bWJpYW4uaW5zdGFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm4tZ2FnZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnBjZCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBzdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuY29udGVudC1zaGFyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmZpbGUtdHJhbnNmZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5vZ3dfcmVtb3RlLWFjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV9yZW1vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfdGNwX3N0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9iblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2Z0bi5sMTBuK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jb250ZW50YWNjZXNzZG93bmxvYWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3NzdHJlYW1pbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNzcGctaGV4YmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmRhZS5zdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmRhZS54aHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYubWlwcHZjb250cm9sbWVzc2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYucGFlLmdlbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5zcGRpc2NvdmVyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuc3BkbGlzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYudWVwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi51c2VycHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9scGMtc3VnYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4b1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWh0dHAtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtaHR0cC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmFzc29jaWF0ZWQtcHJvY2VkdXJlLXBhcmFtZXRlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5kcm0tdHJpZ2dlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5pbWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QubHRrbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lm5vdGlmaWNhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5wcm92aXNpb25pbmd0cmlnZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dib290XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dkZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2R1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2ltcGxlLXN5bWJvbC1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zbWFydGNhcmQtdHJpZ2dlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zcHJvdit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLWFkZHJlc3MtYm9vayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItZmVhdHVyZS1oYW5kbGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1wY2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXN1YnMtaW52aXRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi11c2VyLXByZWZzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRjZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRjZGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGQyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kcm0ucmlzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5ncm91cC11c2FnZS1saXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBhbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZGV0YWlsZWQtcHJvZ3Jlc3MtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5maW5hbC1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmdyb3Vwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuaW52b2NhdGlvbi1kZXNjcmlwdG9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5vcHRpbWl6ZWQtcHJvZ3Jlc3MtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnB1c2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5zY2lkbS5tZXNzYWdlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS54Y2FwLWRpcmVjdG9yeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWVtYWlsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZvbGRlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWxvYy1zdXBsLWluaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lLWJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbmV5ZS5vZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5vZmZpY2VvcmcuZXh0ZW5zaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJveHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b214bWxwcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtY29sb3JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1sYXlvdXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbXN0eWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZXh0ZW5kZWQtcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5jb21tZW50YXV0aG9ycyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuaGFuZG91dG1hc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLm5vdGVzbWFzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNzbGlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uLm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzcHJvcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsZHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZWxheW91dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbWFzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3cubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRldXBkYXRlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRhYmxlc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3R4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlLm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC52aWV3cHJvcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNhbGNjaGFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxsaW5rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdGNhY2hlZGVmaW5pdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZXJlY29yZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90dGFibGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5dGFibGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uaGVhZGVycyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25sb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZHN0cmluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0bWV0YWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlc2luZ2xlY2VsbHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlcm5hbWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZWRlcGVuZGVuY2llcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZW92ZXJyaWRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sZHJhd2luZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5jb21tZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2N4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQuZ2xvc3NhcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50Lm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmVuZG5vdGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb250dGFibGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvb3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9vdG5vdGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5udW1iZXJpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnNldHRpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5zdHlsZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb3R4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwud2Vic2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuZGlnaXRhbC1zaWduYXR1cmUteG1sc2lnbmF0dXJlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3JhY2xlLnJlc291cmNlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3JhbmdlLmluZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NhLm5ldGRlcGxveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnZW8ubWFwZ3VpZGUucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ncFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmJ1bmRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5kcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuc3Vic3lzdGVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXNhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm90cHMuY3Qta2lwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3hsaS5jb3VudGdyYXBoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYWdlcmR1dHkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYWxtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGRiXCIsXCJwcWFcIixcIm9wcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFub3BseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFvcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhb3MueG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBhd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wY29zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wZy5mb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGcub3Nhc2xpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWk2XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBpYWNjZXNzLmFwcGxpY2F0aW9uLWxpY2VuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBpY3NlbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVmaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG1pLndpZGdldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvYy5ncm91cC1hZHZlcnRpc2VtZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjctc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByZW1pbmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJib3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1nelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxcHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHZpLnB0aWQxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHRpZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wd2ctbXVsdGlwbGV4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB3Zy14aHRtbC1wcmludCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnF1YWxjb21tLmJyZXctYXBwLXJlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxeGRcIixcInF4dFwiLFwicXdkXCIsXCJxd3RcIixcInF4bFwiLFwicXhiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnF1b2JqZWN0LXF1b3hkb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tb21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWNvbmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29ubit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1kaWFsb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtc3RyZWFtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWNvbmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1iYXNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1mYXgtZGV0ZWN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1mYXgtc2VuZHJlY3YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWdyb3VwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1zcGVlY2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXRyYW5zZm9ybSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhaW5zdG9yLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhcGlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWFsdm5jLmJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJlZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm11c2ljeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlbmxlYXJuLnJscHJpbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3J5cHRvbm90ZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yaW0uY29kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjb2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEtdmJyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybXZiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJvdXRlNjYubGluazY2K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxpbms2NlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ycy0yNzR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ydWNrdXMuZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnMzc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zYWlsaW5ndHJhY2tlci50cmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNibS5jaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNibS5taWQyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zY3JpYnVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuM2RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuY3NmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuZW1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubWh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQucHB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQudGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnhsc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuaHRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwucGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlbWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW1hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW1kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW1mXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIml0cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNpbXRlY2gtbWluZG1hcHBlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR3ZFwiLFwidHdkc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaXJlbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hcnQubm90ZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0LnRlYWNoZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZWFjaGVyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNvZnR3YXJlNjAyLmZpbGxlci5mb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0teG1sLXppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RrbVwiLFwic2RrZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkeHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuc2ZzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2ZzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNzcy1jb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNzcy1kdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNzcy1udGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5jYWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uaW1wcmVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5tYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2R3XCIsXCJ2b3JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtemlwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5zdGVwY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdHJlZXQtc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3hjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3hkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdy50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3hpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcy50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3htXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIuZ2xvYmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdXMtY2FsZW5kYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdXNcIixcInN1c3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ZkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN3aWZ0dmlldy1pY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bWJpYW4uaW5zdGFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lzXCIsXCJzaXN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtLm5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG10bmRzK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG10bmRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRzLm5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRhb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2FwXCIsXCJjYXBcIixcImRtcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50bWQubWVkaWFmbGV4LmFwaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1vYmlsZS1saXZldHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0bW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpZC50cHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRydWVhcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cmFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJ1ZWRvY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWJpc29mdC53ZWJwbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVmZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1ZmRcIixcInVmZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXR6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVtYWppblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVtalwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51bml0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVuaXR5d2ViXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVvbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW9tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmJlYXJlci1jaG9pY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYmVhcmVyLWNob2ljZS13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNhY2hlb3Atd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2hhbm5lbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RjbWQtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuc2lnbmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cmktbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52YWx2ZS5zb3VyY2UubWF0ZXJpYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZC1zdHVkeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVjdG9yd29ya3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlcmltYXRyaXgudmNhc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmlkc29mdC52aWRjb25mZXJlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZzZFwiLFwidnN0XCIsXCJ2c3NcIixcInZzd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudml2aWRlbmNlLnNjcmlwdGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2xjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YnhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLndtbHNjcmlwdGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53ZWJ0dXJib1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInd0YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53ZmEucDJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53ZmEud3NjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53aW5kb3dzLmRldmljZXBhaXJpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndtY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud21mLmJvb3RzdHJhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5tYXRoZW1hdGljYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5tYXRoZW1hdGljYS5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5icFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndwZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53cWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3JxLWhwMzAwMC1sYWJlbGxlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3Quc3RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3YuY3NwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3Yuc3NwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGFjbWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54YXJhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhmZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZmRsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhmZGwud2ViZm9ybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1pK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUuY3BrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUuZHBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUucGxhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUucHBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUueGxpbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh2ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi12b2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh2cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXQub3NmcHZnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9zZnB2Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEucmVtb3RlLXNldHVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNhZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1waHJhc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnRocm91Z2gtbmduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEudHVubmVsLXVkcGVuY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW93ZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC56dWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6aXJcIixcInppcnpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuenphenouZGVjayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6YXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92b2ljZXhtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2eG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdnEtcnRjcHhyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dhdGNoZXJpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aG9pc3BwLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dob2lzcHAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2lkZ2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2luaGxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJobHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dvcmRwZXJmZWN0NS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dzZGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3NkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dzcG9saWN5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzcG9saWN5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCI3elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWJ3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWNlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFwcGxlLWRpc2tpbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG1nXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWFiXCIsXCJ4MzJcIixcInUzMlwiLFwidm94XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLXNlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWFzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iY3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmNwaW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJkb2NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZG9jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iaXR0b3JyZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0b3JyZW50XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ibG9yYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmxiXCIsXCJibG9yYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiejJcIixcImJvelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2JyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYnJcIixcImNiYVwiLFwiY2J0XCIsXCJjYnpcIixcImNiN1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2RsaW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNmcy1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNoYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNoYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGduXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jaHJvbWUtZXh0ZW5zaW9uXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3J4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jb2NvYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjY29cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jb25mZXJlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNwaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNwaW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kZWJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kZWJpYW4tcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGViXCIsXCJ1ZGViXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kZ2MtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGdjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kaXJlY3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGlyXCIsXCJkY3JcIixcImR4clwiLFwiY3N0XCIsXCJjY3RcIixcImN4dFwiLFwidzNkXCIsXCJmZ2RcIixcInN3YVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZG9vbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2FkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJuY3greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuY3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0Ym9vayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRicmVzb3VyY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR2aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHZpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1lbnZveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXZ5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ldmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV2YVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1iZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1kb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtZnJhbWVtYWtlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3NmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWxpYmdyeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1vdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXBjZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXNuZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic25mXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXNwZWVkb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zdW5vcy1uZXdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXR0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0dGZcIixcInR0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZhXCIsXCJwZmJcIixcInBmbVwiLFwiYWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXZmb250XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mcmVlYXJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nY2EtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2NhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nbHVseFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widWx4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nbnVtZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ251bWVyaWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdyYW1wcy14bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdyYW1wc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3RhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3RhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGhwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9uc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW5zdGFsbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaXNvOTY2MC1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXNvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUtZGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYXJkaWZmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiam5scFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbGF0ZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhdGV4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1sdWEtYnl0ZWNvZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdWFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHpoXCIsXCJsaGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1ha2VzZWxmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ1blwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbWllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByY1wiLFwibW9iaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXBlZ3VybFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcHBsaWNhdGlvblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtc2hvcnRjdXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxua1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtd21kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXdtelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid216XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy14YmFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YmFwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2FjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2JpbmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2NhcmRmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zY2xpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2Rvcy1wcm9ncmFtXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2Rvd25sb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGVcIixcImRsbFwiLFwiY29tXCIsXCJiYXRcIixcIm1zaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm12YlwiLFwibTEzXCIsXCJtMTRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zbWV0YWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZlwiLFwid216XCIsXCJlbWZcIixcImVtelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtb25leVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW55XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3B1Ymxpc2hlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHViXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3NjaGVkdWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zdGVybWluYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXN3cml0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3JpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1uZXRjZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5jXCIsXCJjZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnpiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuemJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBlcmxcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxcIixcInBtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1waWxvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmNcIixcInBkYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGtjczEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwMTJcIixcInBmeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN2JcIixcInNwY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydHJlcXJlc3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3clwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmVkaGF0LXBhY2thZ2UtbWFuYWdlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zZWFcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzd2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNpbHZlcmxpZ2h0LWFwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zcWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNxbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2l0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdHVmZml0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2l0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3VicmlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN2NGNwaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2NGNwaW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN2NGNyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3Y0Y3JjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0M1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGFkc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2FtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10Y2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRjbFwiLFwidGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGV4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXgtdGZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Zm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRleGluZm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRleGluZm9cIixcInRleGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRnaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9ialwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdXN0YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVzdGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3JjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13ZWItYXBwLW1hbmlmZXN0K2pzb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYmFwcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZXJcIixcImNydFwiLFwicGVtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14ZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhsaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14cGluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteHpcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC16bWFjaGluZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiejFcIixcInoyXCIsXCJ6M1wiLFwiejRcIixcIno1XCIsXCJ6NlwiLFwiejdcIixcIno4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veDQwMC1icFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YWNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGFtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhhbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWF0dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1jYXBzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1lbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1lcnJvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1ucyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjb24tY29uZmVyZW5jZS1pbmZvLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hlbmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGVuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGh0bWxcIixcInhodFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hodG1sLXZvaWNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG1sXCIsXCJ4c2xcIixcInhzZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbC1kdGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbC1leHRlcm5hbC1wYXJzZWQtZW50aXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbC1wYXRjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1wcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG9wK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG9wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHByb2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94c2x0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhzbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94c3BmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNwZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3h2K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14bWxcIixcInhodm1sXCIsXCJ4dm1sXCIsXCJ4dm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieWFuZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3lpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5aW5cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi96aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6aXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi96bGliXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby8zMmthZHBjbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby8zZ3BwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzNncHAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hZHBjbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWRwXCJdXG4gIH0sXG4gIFwiYXVkaW8vYW1yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Ftci13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hbXItd2IrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FwdHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXNjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2F0cmFjLWFkdmFuY2VkLWxvc3NsZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2F0cmFjLXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXRyYWMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Jhc2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXVcIixcInNuZFwiXVxuICB9LFxuICBcImF1ZGlvL2J2MTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYnYzMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9jbGVhcm1vZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vY25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZGF0MTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZGxzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMTEwOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIwNTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMjExXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjIxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kdmk0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2VhYzNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjLXFjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjYjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY2IxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNud1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjbncwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNudzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY3diXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmN3YjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY3diMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZndkcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MTEtMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzE5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyMjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTE2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtMjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi0zMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI5MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI5ZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI5ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nc21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZ3NtLWVmclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nc20taHItMDhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vaWxiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9pcC1tcl92Mi41XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2lzYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhdWRpby9sMTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbDIwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2wyNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby9sOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9scGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWlkXCIsXCJtaWRpXCIsXCJrYXJcIixcInJtaVwiXVxuICB9LFxuICBcImF1ZGlvL21vYmlsZS14bWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXA0YVwiLFwibTRhXCJdXG4gIH0sXG4gIFwiYXVkaW8vbXA0YS1sYXRtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tcGEtcm9idXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGdhXCIsXCJtcDJcIixcIm1wMmFcIixcIm1wM1wiLFwibTJhXCIsXCJtM2FcIl1cbiAgfSxcbiAgXCJhdWRpby9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL211c2VwYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXVkaW8vb2dnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2dhXCIsXCJvZ2dcIixcInNweFwiXVxuICB9LFxuICBcImF1ZGlvL29wdXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtYS13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY211XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbXUtd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcHJzLnNpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9xY2VscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9yYXB0b3JmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0cC1lbmMtYWVzY20xMjhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcnRwLW1pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3MzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiczNtXCJdXG4gIH0sXG4gIFwiYXVkaW8vc2lsa1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lsXCJdXG4gIH0sXG4gIFwiYXVkaW8vc212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Ntdi1xY3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc212MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zcC1taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3NwZWV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3QxNDBjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3QzOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90ZWxlcGhvbmUtZXZlbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdG9uZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby91ZW1jbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92ZHZpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Ztci13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuM2dwcC5pdWZwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC40c2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmF1ZGlva296XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jaXNjby5uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNtbGVzLnJhZGlvLWV2ZW50c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY25zLmFucDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNucy5pbmYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZhXCIsXCJ1dnZhXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlb2xcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZGxuYS5hZHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5tbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1wc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucGwyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJ6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wdWxzZS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kcmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkcmFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRzXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR0cy5oZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0c2hkXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR2Yi5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5ldmVyYWQucGxqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5obnMuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx2cFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHlhXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm5va2lhLm1vYmlsZS14bWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm5vcnRlbC52YmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNDgwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwNDgwMFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDc0NzBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA5NjAwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm9jdGVsLnNiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJoZXRvcmV4LjMya2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5yaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaXBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQucm4tcmVhbGF1ZGlvXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC52bXguY3ZzZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQud2F2ZVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby92b3JiaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vdm9yYmlzLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby93YXZcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby93YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdXG4gIH0sXG4gIFwiYXVkaW8vd2VibVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2ViYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtYWFjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWNcIl1cbiAgfSxcbiAgXCJhdWRpby94LWFpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpZlwiLFwiYWlmZlwiLFwiYWlmY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtY2FmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYWZcIl1cbiAgfSxcbiAgXCJhdWRpby94LWZsYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsYWNcIl1cbiAgfSxcbiAgXCJhdWRpby94LW00YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtNGFcIl1cbiAgfSxcbiAgXCJhdWRpby94LW1hdHJvc2thXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJta2FcIl1cbiAgfSxcbiAgXCJhdWRpby94LW1wZWd1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0zdVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXMtd2F4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXhcIl1cbiAgfSxcbiAgXCJhdWRpby94LW1zLXdtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21hXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1wbi1yZWFsYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhbVwiLFwicmFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtcFwiXVxuICB9LFxuICBcImF1ZGlvL3gtcmVhbGF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC10dGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhdWRpby94LXdhdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdXG4gIH0sXG4gIFwiYXVkaW8veG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhtXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeFwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWZcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNtZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtZGZcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21sXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jc21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc21sXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1wZGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJjaGVtaWNhbC94LXh5elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHl6XCJdXG4gIH0sXG4gIFwiZm9udC9vcGVudHlwZVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvYm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJtcFwiXVxuICB9LFxuICBcImltYWdlL2NnbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNnbVwiXVxuICB9LFxuICBcImltYWdlL2ZpdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvZzNmYXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnM1wiXVxuICB9LFxuICBcImltYWdlL2dpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdpZlwiXVxuICB9LFxuICBcImltYWdlL2llZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImllZlwiXVxuICB9LFxuICBcImltYWdlL2pwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9qcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBlZ1wiLFwianBnXCIsXCJqcGVcIl1cbiAgfSxcbiAgXCJpbWFnZS9qcG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvanB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL2t0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0eFwiXVxuICB9LFxuICBcImltYWdlL25hcGxwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9wanBlZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJpbWFnZS9wbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbmdcIl1cbiAgfSxcbiAgXCJpbWFnZS9wcnMuYnRpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ0aWZcIl1cbiAgfSxcbiAgXCJpbWFnZS9wcnMucHRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3B3Zy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvc2dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZ2lcIl1cbiAgfSxcbiAgXCJpbWFnZS9zdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdmdcIixcInN2Z3pcIl1cbiAgfSxcbiAgXCJpbWFnZS90MzhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvdGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRpZmZcIixcInRpZlwiXVxuICB9LFxuICBcImltYWdlL3RpZmYtZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNkXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmFpcnppcC5hY2NlbGVyYXRvci5henZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmNucy5pbmYyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5kZWNlLmdyYXBoaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmlcIixcInV2dmlcIixcInV2Z1wiLFwidXZ2Z1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5kanZ1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGp2dVwiLFwiZGp2XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR2Yi5zdWJ0aXRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1YlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5kd2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2dcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZHhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHhmXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZic1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmcHhcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnN0XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1yXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxjXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmdsb2JhbGdyYXBoaWNzLnBnYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubWljcm9zb2Z0Lmljb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1peFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubW96aWxsYS5hcG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5tcy1tb2RpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWRpXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1zLXBob3RvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZHBcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQubmV0LWZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5weFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5yYWRpYW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkLnBuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuZ2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5qcGdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnN2ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQudGVuY2VudC50YXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnZhbHZlLnNvdXJjZS50ZXh0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC53YXAud2JtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndibXBcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQueGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhpZlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC56YnJ1c2gucGN4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3dlYnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYnBcIl1cbiAgfSxcbiAgXCJpbWFnZS94LTNkc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2RzXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1jbXUtcmFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXNcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWNteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY214XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1mcmVlaGFuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmhcIixcImZoY1wiLFwiZmg0XCIsXCJmaDVcIixcImZoN1wiXVxuICB9LFxuICBcImltYWdlL3gtaWNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY29cIl1cbiAgfSxcbiAgXCJpbWFnZS94LWpuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbmdcIl1cbiAgfSxcbiAgXCJpbWFnZS94LW1yc2lkLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaWRcIl1cbiAgfSxcbiAgXCJpbWFnZS94LW1zLWJtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJtcFwiXVxuICB9LFxuICBcImltYWdlL3gtcGN4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY3hcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBpY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBpY1wiLFwicGN0XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBubVwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtYml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYm1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBnbVwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtcGl4bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcG1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXJnYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmdiXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC10Z2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRnYVwiXVxuICB9LFxuICBcImltYWdlL3gteGJpdG1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGJtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC14Y2ZcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiaW1hZ2UveC14cGl4bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cG1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXh3aW5kb3dkdW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4d2RcIl1cbiAgfSxcbiAgXCJtZXNzYWdlL2NwaW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9kaXNwb3NpdGlvbi1ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9leHRlcm5hbC1ib2R5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZmVlZGJhY2stcmVwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRlbGl2ZXJ5LXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbC1kaXNwb3NpdGlvbi1ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWwtaGVhZGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2h0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibWVzc2FnZS9pbWRuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcIm1lc3NhZ2UvbmV3c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3BhcnRpYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibWVzc2FnZS9yZmM4MjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtbFwiLFwibWltZVwiXVxuICB9LFxuICBcIm1lc3NhZ2Uvcy1odHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvc2lwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvc2lwZnJhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3RyYWNraW5nLXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL3ZuZC5zaS5zaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvdm5kLndmYS53c2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvaWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnc1wiLFwiaWdlc1wiXVxuICB9LFxuICBcIm1vZGVsL21lc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2hcIixcIm1lc2hcIixcInNpbG9cIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuY29sbGFkYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYWVcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuZHdmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHdmXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmZsYXRsYW5kLjNkbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdkbFwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5ncy1nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ3MuZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5ndHdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndHdcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQubW9tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLm10c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm10c1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5vcGVuZ2V4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQuYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQudGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQudmFsdmUuc291cmNlLmNvbXBpbGVkLW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQudnR1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnR1XCJdXG4gIH0sXG4gIFwibW9kZWwvdnJtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndybFwiLFwidnJtbFwiXVxuICB9LFxuICBcIm1vZGVsL3gzZCtiaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIngzZGJcIixcIngzZGJ6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3gzZCt2cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2R2XCIsXCJ4M2R2elwiXVxuICB9LFxuICBcIm1vZGVsL3gzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIngzZFwiLFwieDNkelwiXVxuICB9LFxuICBcIm1vZGVsL3gzZC12cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9hbHRlcm5hdGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYXBwbGVkb3VibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2J5dGVyYW5nZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2RpZ2VzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9mb3JtLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2hlYWRlci1zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L21peGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9wYXJhbGxlbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvcmVsYXRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvcmVwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9zaWduZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3ZvaWNlLW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0LzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2NhY2hlLW1hbmlmZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcHBjYWNoZVwiLFwibWFuaWZlc3RcIl1cbiAgfSxcbiAgXCJ0ZXh0L2NhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNzXCIsXCJpZmJcIl1cbiAgfSxcbiAgXCJ0ZXh0L2NhbGVuZGVyXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9jbWRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L2NvZmZlZXNjcmlwdFwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNvZmZlZVwiLFwibGl0Y29mZmVlXCJdXG4gIH0sXG4gIFwidGV4dC9jc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzc1wiXVxuICB9LFxuICBcInRleHQvY3N2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc3ZcIl1cbiAgfSxcbiAgXCJ0ZXh0L2Nzdi1zY2hlbWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9kaXJlY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9kbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9lY21hc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9lbnJpY2hlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2Z3ZHJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2dyYW1tYXItcmVmLWxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9oanNvblwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhqc29uXCJdXG4gIH0sXG4gIFwidGV4dC9odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodG1sXCIsXCJodG1cIixcInNodG1sXCJdXG4gIH0sXG4gIFwidGV4dC9qYWRlXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFkZVwiXVxuICB9LFxuICBcInRleHQvamF2YXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQvamNyLWNuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2pzeFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianN4XCJdXG4gIH0sXG4gIFwidGV4dC9sZXNzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGVzc1wiXVxuICB9LFxuICBcInRleHQvbWFya2Rvd25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9tYXRobWxcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1sXCJdXG4gIH0sXG4gIFwidGV4dC9taXphclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L24zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuM1wiXVxuICB9LFxuICBcInRleHQvcGFyYW1ldGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3BsYWluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eHRcIixcInRleHRcIixcImNvbmZcIixcImRlZlwiLFwibGlzdFwiLFwibG9nXCIsXCJpblwiLFwiaW5pXCJdXG4gIH0sXG4gIFwidGV4dC9wcm92ZW5hbmNlLW5vdGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcHJzLmZhbGxlbnN0ZWluLnJzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3Bycy5saW5lcy50YWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkc2NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3JlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3JmYzgyMi1oZWFkZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcmljaHRleHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0eFwiXVxuICB9LFxuICBcInRleHQvcnRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydGZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3J0cC1lbmMtYWVzY20xMjhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3NnbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZ21sXCIsXCJzZ21cIl1cbiAgfSxcbiAgXCJ0ZXh0L3N0eWx1c1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0eWx1c1wiLFwic3R5bFwiXVxuICB9LFxuICBcInRleHQvdDE0MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0c3ZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3Ryb2ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widFwiLFwidHJcIixcInJvZmZcIixcIm1hblwiLFwibWVcIixcIm1zXCJdXG4gIH0sXG4gIFwidGV4dC90dXJ0bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0dGxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3VyaS1saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1cmlcIixcInVyaXNcIixcInVybHNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZjYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2FyZFwiXVxuICB9LFxuICBcInRleHQvdm5kLmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuYWJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5kY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGN1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsLm1jdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmN1cmwuc2N1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZGViaWFuLmNvcHlyaWdodFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kbWNsaWVudHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kdmIuc3VidGl0bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdWJcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5lc21lcnRlYy50aGVtZS1kZXNjcmlwdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmZseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZseVwiXVxuICB9LFxuICBcInRleHQvdm5kLmZtaS5mbGV4c3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZseFwiXVxuICB9LFxuICBcInRleHQvdm5kLmdyYXBodml6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3ZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pbjNkLjNkbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZG1sXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuaW4zZC5zcG90XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BvdFwiXVxuICB9LFxuICBcInRleHQvdm5kLmlwdGMubmV3c21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmlwdGMubml0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5sYXRleC16XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLm1vdG9yb2xhLnJlZmxleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5tcy1tZWRpYXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubmV0MnBob25lLmNvbW1jZW50ZXIuY29tbWFuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5yYWRpc3lzLm1zbWwtYmFzaWMtbGF5b3V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnNpLnVyaWNhdGFsb2d1ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zdW4uajJtZS5hcHAtZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphZFwiXVxuICB9LFxuICBcInRleHQvdm5kLnRyb2xsdGVjaC5saW5ndWlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAuc2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLnNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLndhcC53bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sc1wiXVxuICB9LFxuICBcInRleHQvdnR0XCI6IHtcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ0dFwiXVxuICB9LFxuICBcInRleHQveC1hc21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNcIixcImFzbVwiXVxuICB9LFxuICBcInRleHQveC1jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjXCIsXCJjY1wiLFwiY3h4XCIsXCJjcHBcIixcImhcIixcImhoXCIsXCJkaWNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtY29tcG9uZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0Y1wiXVxuICB9LFxuICBcInRleHQveC1mb3J0cmFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmXCIsXCJmb3JcIixcImY3N1wiLFwiZjkwXCJdXG4gIH0sXG4gIFwidGV4dC94LWd3dC1ycGNcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhic1wiXVxuICB9LFxuICBcInRleHQveC1qYXZhLXNvdXJjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamF2YVwiXVxuICB9LFxuICBcInRleHQveC1qcXVlcnktdG1wbFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQveC1sdWFcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdWFcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtbWFya2Rvd25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hcmtkb3duXCIsXCJtZFwiLFwibWtkXCJdXG4gIH0sXG4gIFwidGV4dC94LW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmZvXCJdXG4gIH0sXG4gIFwidGV4dC94LW9wbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9wbWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtcGFzY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwXCIsXCJwYXNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtcHJvY2Vzc2luZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGRlXCJdXG4gIH0sXG4gIFwidGV4dC94LXNhc3NcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYXNzXCJdXG4gIH0sXG4gIFwidGV4dC94LXNjc3NcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY3NzXCJdXG4gIH0sXG4gIFwidGV4dC94LXNldGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXR4XCJdXG4gIH0sXG4gIFwidGV4dC94LXNmdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Z2XCJdXG4gIH0sXG4gIFwidGV4dC94LXN1c2UteW1wXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5bXBcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdXVlbmNvZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV1XCJdXG4gIH0sXG4gIFwidGV4dC94LXZjYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNzXCJdXG4gIH0sXG4gIFwidGV4dC94LXZjYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2ZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG1sXCJdXG4gIH0sXG4gIFwidGV4dC94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3lhbWxcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5YW1sXCIsXCJ5bWxcIl1cbiAgfSxcbiAgXCJ2aWRlby8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby8zZ3BwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZ3BcIixcIjNncHBcIl1cbiAgfSxcbiAgXCJ2aWRlby8zZ3BwLXR0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vM2dwcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNnMlwiXVxuICB9LFxuICBcInZpZGVvL2JtcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vYnQ2NTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9jZWxiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vZHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9oMjYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoMjYxXCJdXG4gIH0sXG4gIFwidmlkZW8vaDI2M1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2M1wiXVxuICB9LFxuICBcInZpZGVvL2gyNjMtMTk5OFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjMtMjAwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjRcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjY0LXJjZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9oMjY0LXN2Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2pwZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwZ3ZcIl1cbiAgfSxcbiAgXCJ2aWRlby9qcGVnMjAwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2pwbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBtXCIsXCJqcGdtXCJdXG4gIH0sXG4gIFwidmlkZW8vbWoyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtajJcIixcIm1qcDJcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcDFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXAycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL21wMnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzXCJdXG4gIH0sXG4gIFwidmlkZW8vbXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRcIixcIm1wNHZcIixcIm1wZzRcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcDR2LWVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBlZ1wiLFwibXBnXCIsXCJtcGVcIixcIm0xdlwiLFwibTJ2XCJdXG4gIH0sXG4gIFwidmlkZW8vbXBlZzQtZ2VuZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL21wdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL252XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vb2dnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ3ZcIl1cbiAgfSxcbiAgXCJ2aWRlby9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9wb2ludGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vcXVpY2t0aW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxdFwiLFwibW92XCJdXG4gIH0sXG4gIFwidmlkZW8vcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3NtcHRlMjkybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZjMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5jY3R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UuaGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aFwiLFwidXZ2aFwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLm1vYmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZtXCIsXCJ1dnZtXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UubXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UucGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2cFwiLFwidXZ2cFwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnNcIixcInV2dnNcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ2XCIsXCJ1dnZ2XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kaXJlY3R2Lm1wZWctdHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRsbmEubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZHZiLmZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR2YlwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5mdnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ2dFwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5obnMudmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjFkcGFyaXR5ZmVjLTEwMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjFkcGFyaXR5ZmVjLTIwMDVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTEwMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTIwMDVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLnR0c2F2Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzbXBlZzJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubW90b3JvbGEudmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubW90b3JvbGEudmlkZW9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1wZWd1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14dVwiLFwibTR1XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB5dlwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS5pbnRlcmxlYXZlZC1tdWx0aW1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm5va2lhLnZpZGVvdm9pcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5vYmplY3R2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWQubXBlZzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLm1wZWc0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZC5zd2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwubW92XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnV2dnUubXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnVcIixcInV2dnVcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQudml2b1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widml2XCJdXG4gIH0sXG4gIFwidmlkZW8vd2VibVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2VibVwiXVxuICB9LFxuICBcInZpZGVvL3gtZjR2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmNHZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LWZsaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxpXCJdXG4gIH0sXG4gIFwidmlkZW8veC1mbHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsdlwiXVxuICB9LFxuICBcInZpZGVvL3gtbTR2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtNHZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1hdHJvc2thXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJta3ZcIixcIm1rM2RcIixcIm1rc1wiXVxuICB9LFxuICBcInZpZGVvL3gtbW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbmdcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLWFzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNmXCIsXCJhc3hcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXZvYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widm9iXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21cIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdtdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid212XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13bXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndteFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd3Z4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3dnhcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zdmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF2aVwiXVxuICB9LFxuICBcInZpZGVvL3gtc2dpLW1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb3ZpZVwiXVxuICB9LFxuICBcInZpZGVvL3gtc212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbXZcIl1cbiAgfSxcbiAgXCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsa1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNlXCJdXG4gIH0sXG4gIFwieC1zaGFkZXIveC1mcmFnbWVudFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcIngtc2hhZGVyL3gtdmVydGV4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH1cbn0iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFudHNcIixcbiAgXCJiYXRzXCIsXG4gIFwiYmVhcnNcIixcbiAgXCJiZWVzXCIsXG4gIFwiYmlyZHNcIixcbiAgXCJidWZmYWxvXCIsXG4gIFwiY2F0c1wiLFxuICBcImNoaWNrZW5zXCIsXG4gIFwiY2F0dGxlXCIsXG4gIFwiZG9nc1wiLFxuICBcImRvbHBoaW5zXCIsXG4gIFwiZHVja3NcIixcbiAgXCJlbGVwaGFudHNcIixcbiAgXCJmaXNoZXNcIixcbiAgXCJmb3hlc1wiLFxuICBcImZyb2dzXCIsXG4gIFwiZ2Vlc2VcIixcbiAgXCJnb2F0c1wiLFxuICBcImhvcnNlc1wiLFxuICBcImthbmdhcm9vc1wiLFxuICBcImxpb25zXCIsXG4gIFwibW9ua2V5c1wiLFxuICBcIm93bHNcIixcbiAgXCJveGVuXCIsXG4gIFwicGVuZ3VpbnNcIixcbiAgXCJwZW9wbGVcIixcbiAgXCJwaWdzXCIsXG4gIFwicmFiYml0c1wiLFxuICBcInNoZWVwXCIsXG4gIFwidGlnZXJzXCIsXG4gIFwid2hhbGVzXCIsXG4gIFwid29sdmVzXCIsXG4gIFwiemVicmFzXCIsXG4gIFwiYmFuc2hlZXNcIixcbiAgXCJjcm93c1wiLFxuICBcImJsYWNrIGNhdHNcIixcbiAgXCJjaGltZXJhc1wiLFxuICBcImdob3N0c1wiLFxuICBcImNvbnNwaXJhdG9yc1wiLFxuICBcImRyYWdvbnNcIixcbiAgXCJkd2FydmVzXCIsXG4gIFwiZWx2ZXNcIixcbiAgXCJlbmNoYW50ZXJzXCIsXG4gIFwiZXhvcmNpc3RzXCIsXG4gIFwic29uc1wiLFxuICBcImZvZXNcIixcbiAgXCJnaWFudHNcIixcbiAgXCJnbm9tZXNcIixcbiAgXCJnb2JsaW5zXCIsXG4gIFwiZ29vc2VzXCIsXG4gIFwiZ3JpZmZpbnNcIixcbiAgXCJseWNhbnRocm9wZXNcIixcbiAgXCJuZW1lc2lzXCIsXG4gIFwib2dyZXNcIixcbiAgXCJvcmFjbGVzXCIsXG4gIFwicHJvcGhldHNcIixcbiAgXCJzb3JjZXJvcnNcIixcbiAgXCJzcGlkZXJzXCIsXG4gIFwic3Bpcml0c1wiLFxuICBcInZhbXBpcmVzXCIsXG4gIFwid2FybG9ja3NcIixcbiAgXCJ2aXhlbnNcIixcbiAgXCJ3ZXJld29sdmVzXCIsXG4gIFwid2l0Y2hlc1wiLFxuICBcIndvcnNoaXBlcnNcIixcbiAgXCJ6b21iaWVzXCIsXG4gIFwiZHJ1aWRzXCJcbl07XG4iLCJ2YXIgdGVhbSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSB0ZWFtO1xudGVhbS5jcmVhdHVyZSA9IHJlcXVpcmUoXCIuL2NyZWF0dXJlXCIpO1xudGVhbS5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tBZGRyZXNzLnN0YXRlfSAje2NyZWF0dXJlfVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJVbml0ZWQgU3RhdGVzXCIsXG4gIFwiVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhXCIsXG4gIFwiVVNBXCJcbl07XG4iLCJ2YXIgYWRkcmVzcyA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBhZGRyZXNzO1xuYWRkcmVzcy5kZWZhdWx0X2NvdW50cnkgPSByZXF1aXJlKFwiLi9kZWZhdWx0X2NvdW50cnlcIik7XG5hZGRyZXNzLnBvc3Rjb2RlX2J5X3N0YXRlID0gcmVxdWlyZShcIi4vcG9zdGNvZGVfYnlfc3RhdGVcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBcIkFMXCI6IFwiMzUwIyNcIixcbiAgXCJBS1wiOiBcIjk5NSMjXCIsXG4gIFwiQVNcIjogXCI5NjcjI1wiLFxuICBcIkFaXCI6IFwiODUwIyNcIixcbiAgXCJBUlwiOiBcIjcxNyMjXCIsXG4gIFwiQ0FcIjogXCI5MDAjI1wiLFxuICBcIkNPXCI6IFwiODAwIyNcIixcbiAgXCJDVFwiOiBcIjA2MSMjXCIsXG4gIFwiRENcIjogXCIyMDQjI1wiLFxuICBcIkRFXCI6IFwiMTk4IyNcIixcbiAgXCJGTFwiOiBcIjMyMiMjXCIsXG4gIFwiR0FcIjogXCIzMDEjI1wiLFxuICBcIkhJXCI6IFwiOTY3IyNcIixcbiAgXCJJRFwiOiBcIjgzMiMjXCIsXG4gIFwiSUxcIjogXCI2MDAjI1wiLFxuICBcIklOXCI6IFwiNDYzIyNcIixcbiAgXCJJQVwiOiBcIjUxMCMjXCIsXG4gIFwiS1NcIjogXCI2NjYjI1wiLFxuICBcIktZXCI6IFwiNDA0IyNcIixcbiAgXCJMQVwiOiBcIjcwMSMjXCIsXG4gIFwiTUVcIjogXCIwNDIjI1wiLFxuICBcIk1EXCI6IFwiMjEwIyNcIixcbiAgXCJNQVwiOiBcIjAyNiMjXCIsXG4gIFwiTUlcIjogXCI0ODAjI1wiLFxuICBcIk1OXCI6IFwiNTU1IyNcIixcbiAgXCJNU1wiOiBcIjM4NyMjXCIsXG4gIFwiTU9cIjogXCI2NTAjI1wiLFxuICBcIk1UXCI6IFwiNTkwIyNcIixcbiAgXCJORVwiOiBcIjY4OCMjXCIsXG4gIFwiTlZcIjogXCI4OTgjI1wiLFxuICBcIk5IXCI6IFwiMDM2IyNcIixcbiAgXCJOSlwiOiBcIjA3NiMjXCIsXG4gIFwiTk1cIjogXCI4ODAjI1wiLFxuICBcIk5ZXCI6IFwiMTIyIyNcIixcbiAgXCJOQ1wiOiBcIjI4OCMjXCIsXG4gIFwiTkRcIjogXCI1ODYjI1wiLFxuICBcIk9IXCI6IFwiNDQ0IyNcIixcbiAgXCJPS1wiOiBcIjczMCMjXCIsXG4gIFwiT1JcIjogXCI5NzkjI1wiLFxuICBcIlBBXCI6IFwiMTg2IyNcIixcbiAgXCJSSVwiOiBcIjAyOSMjXCIsXG4gIFwiU0NcIjogXCIyOTkjI1wiLFxuICBcIlNEXCI6IFwiNTc3IyNcIixcbiAgXCJUTlwiOiBcIjM4MyMjXCIsXG4gIFwiVFhcIjogXCI3OTgjI1wiLFxuICBcIlVUXCI6IFwiODQ3IyNcIixcbiAgXCJWVFwiOiBcIjA1MCMjXCIsXG4gIFwiVkFcIjogXCIyMjIjI1wiLFxuICBcIldBXCI6IFwiOTkwIyNcIixcbiAgXCJXVlwiOiBcIjI0NyMjXCIsXG4gIFwiV0lcIjogXCI1NDkjI1wiLFxuICBcIldZXCI6IFwiODMxIyNcIlxufTtcbiIsInZhciBlbl9VUyA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBlbl9VUztcbmVuX1VTLnRpdGxlID0gXCJVbml0ZWQgU3RhdGVzIChFbmdsaXNoKVwiO1xuZW5fVVMuaW50ZXJuZXQgPSByZXF1aXJlKFwiLi9pbnRlcm5ldFwiKTtcbmVuX1VTLmFkZHJlc3MgPSByZXF1aXJlKFwiLi9hZGRyZXNzXCIpO1xuZW5fVVMucGhvbmVfbnVtYmVyID0gcmVxdWlyZShcIi4vcGhvbmVfbnVtYmVyXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJjb21cIixcbiAgXCJ1c1wiLFxuICBcImJpelwiLFxuICBcImluZm9cIixcbiAgXCJuYW1lXCIsXG4gIFwibmV0XCIsXG4gIFwib3JnXCJcbl07XG4iLCJ2YXIgaW50ZXJuZXQgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gaW50ZXJuZXQ7XG5pbnRlcm5ldC5kb21haW5fc3VmZml4ID0gcmVxdWlyZShcIi4vZG9tYWluX3N1ZmZpeFwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMjAxXCIsXG4gIFwiMjAyXCIsXG4gIFwiMjAzXCIsXG4gIFwiMjA1XCIsXG4gIFwiMjA2XCIsXG4gIFwiMjA3XCIsXG4gIFwiMjA4XCIsXG4gIFwiMjA5XCIsXG4gIFwiMjEwXCIsXG4gIFwiMjEyXCIsXG4gIFwiMjEzXCIsXG4gIFwiMjE0XCIsXG4gIFwiMjE1XCIsXG4gIFwiMjE2XCIsXG4gIFwiMjE3XCIsXG4gIFwiMjE4XCIsXG4gIFwiMjE5XCIsXG4gIFwiMjI0XCIsXG4gIFwiMjI1XCIsXG4gIFwiMjI3XCIsXG4gIFwiMjI4XCIsXG4gIFwiMjI5XCIsXG4gIFwiMjMxXCIsXG4gIFwiMjM0XCIsXG4gIFwiMjM5XCIsXG4gIFwiMjQwXCIsXG4gIFwiMjQ4XCIsXG4gIFwiMjUxXCIsXG4gIFwiMjUyXCIsXG4gIFwiMjUzXCIsXG4gIFwiMjU0XCIsXG4gIFwiMjU2XCIsXG4gIFwiMjYwXCIsXG4gIFwiMjYyXCIsXG4gIFwiMjY3XCIsXG4gIFwiMjY5XCIsXG4gIFwiMjcwXCIsXG4gIFwiMjc2XCIsXG4gIFwiMjgxXCIsXG4gIFwiMjgzXCIsXG4gIFwiMzAxXCIsXG4gIFwiMzAyXCIsXG4gIFwiMzAzXCIsXG4gIFwiMzA0XCIsXG4gIFwiMzA1XCIsXG4gIFwiMzA3XCIsXG4gIFwiMzA4XCIsXG4gIFwiMzA5XCIsXG4gIFwiMzEwXCIsXG4gIFwiMzEyXCIsXG4gIFwiMzEzXCIsXG4gIFwiMzE0XCIsXG4gIFwiMzE1XCIsXG4gIFwiMzE2XCIsXG4gIFwiMzE3XCIsXG4gIFwiMzE4XCIsXG4gIFwiMzE5XCIsXG4gIFwiMzIwXCIsXG4gIFwiMzIxXCIsXG4gIFwiMzIzXCIsXG4gIFwiMzMwXCIsXG4gIFwiMzMxXCIsXG4gIFwiMzM0XCIsXG4gIFwiMzM2XCIsXG4gIFwiMzM3XCIsXG4gIFwiMzM5XCIsXG4gIFwiMzQ3XCIsXG4gIFwiMzUxXCIsXG4gIFwiMzUyXCIsXG4gIFwiMzYwXCIsXG4gIFwiMzYxXCIsXG4gIFwiMzg2XCIsXG4gIFwiNDAxXCIsXG4gIFwiNDAyXCIsXG4gIFwiNDA0XCIsXG4gIFwiNDA1XCIsXG4gIFwiNDA2XCIsXG4gIFwiNDA3XCIsXG4gIFwiNDA4XCIsXG4gIFwiNDA5XCIsXG4gIFwiNDEwXCIsXG4gIFwiNDEyXCIsXG4gIFwiNDEzXCIsXG4gIFwiNDE0XCIsXG4gIFwiNDE1XCIsXG4gIFwiNDE3XCIsXG4gIFwiNDE5XCIsXG4gIFwiNDIzXCIsXG4gIFwiNDI0XCIsXG4gIFwiNDI1XCIsXG4gIFwiNDM0XCIsXG4gIFwiNDM1XCIsXG4gIFwiNDQwXCIsXG4gIFwiNDQzXCIsXG4gIFwiNDQ1XCIsXG4gIFwiNDY0XCIsXG4gIFwiNDY5XCIsXG4gIFwiNDcwXCIsXG4gIFwiNDc1XCIsXG4gIFwiNDc4XCIsXG4gIFwiNDc5XCIsXG4gIFwiNDgwXCIsXG4gIFwiNDg0XCIsXG4gIFwiNTAxXCIsXG4gIFwiNTAyXCIsXG4gIFwiNTAzXCIsXG4gIFwiNTA0XCIsXG4gIFwiNTA1XCIsXG4gIFwiNTA3XCIsXG4gIFwiNTA4XCIsXG4gIFwiNTA5XCIsXG4gIFwiNTEwXCIsXG4gIFwiNTEyXCIsXG4gIFwiNTEzXCIsXG4gIFwiNTE1XCIsXG4gIFwiNTE2XCIsXG4gIFwiNTE3XCIsXG4gIFwiNTE4XCIsXG4gIFwiNTIwXCIsXG4gIFwiNTMwXCIsXG4gIFwiNTQwXCIsXG4gIFwiNTQxXCIsXG4gIFwiNTUxXCIsXG4gIFwiNTU3XCIsXG4gIFwiNTU5XCIsXG4gIFwiNTYxXCIsXG4gIFwiNTYyXCIsXG4gIFwiNTYzXCIsXG4gIFwiNTY0XCIsXG4gIFwiNTY3XCIsXG4gIFwiNTcwXCIsXG4gIFwiNTcxXCIsXG4gIFwiNTczXCIsXG4gIFwiNTc0XCIsXG4gIFwiNTgwXCIsXG4gIFwiNTg1XCIsXG4gIFwiNTg2XCIsXG4gIFwiNjAxXCIsXG4gIFwiNjAyXCIsXG4gIFwiNjAzXCIsXG4gIFwiNjA1XCIsXG4gIFwiNjA2XCIsXG4gIFwiNjA3XCIsXG4gIFwiNjA4XCIsXG4gIFwiNjA5XCIsXG4gIFwiNjEwXCIsXG4gIFwiNjEyXCIsXG4gIFwiNjE0XCIsXG4gIFwiNjE1XCIsXG4gIFwiNjE2XCIsXG4gIFwiNjE3XCIsXG4gIFwiNjE4XCIsXG4gIFwiNjE5XCIsXG4gIFwiNjIwXCIsXG4gIFwiNjIzXCIsXG4gIFwiNjI2XCIsXG4gIFwiNjMwXCIsXG4gIFwiNjMxXCIsXG4gIFwiNjM2XCIsXG4gIFwiNjQxXCIsXG4gIFwiNjQ2XCIsXG4gIFwiNjUwXCIsXG4gIFwiNjUxXCIsXG4gIFwiNjYwXCIsXG4gIFwiNjYxXCIsXG4gIFwiNjYyXCIsXG4gIFwiNjY3XCIsXG4gIFwiNjc4XCIsXG4gIFwiNjgyXCIsXG4gIFwiNzAxXCIsXG4gIFwiNzAyXCIsXG4gIFwiNzAzXCIsXG4gIFwiNzA0XCIsXG4gIFwiNzA2XCIsXG4gIFwiNzA3XCIsXG4gIFwiNzA4XCIsXG4gIFwiNzEyXCIsXG4gIFwiNzEzXCIsXG4gIFwiNzE0XCIsXG4gIFwiNzE1XCIsXG4gIFwiNzE2XCIsXG4gIFwiNzE3XCIsXG4gIFwiNzE4XCIsXG4gIFwiNzE5XCIsXG4gIFwiNzIwXCIsXG4gIFwiNzI0XCIsXG4gIFwiNzI3XCIsXG4gIFwiNzMxXCIsXG4gIFwiNzMyXCIsXG4gIFwiNzM0XCIsXG4gIFwiNzM3XCIsXG4gIFwiNzQwXCIsXG4gIFwiNzU0XCIsXG4gIFwiNzU3XCIsXG4gIFwiNzYwXCIsXG4gIFwiNzYzXCIsXG4gIFwiNzY1XCIsXG4gIFwiNzcwXCIsXG4gIFwiNzcyXCIsXG4gIFwiNzczXCIsXG4gIFwiNzc0XCIsXG4gIFwiNzc1XCIsXG4gIFwiNzgxXCIsXG4gIFwiNzg1XCIsXG4gIFwiNzg2XCIsXG4gIFwiODAxXCIsXG4gIFwiODAyXCIsXG4gIFwiODAzXCIsXG4gIFwiODA0XCIsXG4gIFwiODA1XCIsXG4gIFwiODA2XCIsXG4gIFwiODA4XCIsXG4gIFwiODEwXCIsXG4gIFwiODEyXCIsXG4gIFwiODEzXCIsXG4gIFwiODE0XCIsXG4gIFwiODE1XCIsXG4gIFwiODE2XCIsXG4gIFwiODE3XCIsXG4gIFwiODE4XCIsXG4gIFwiODI4XCIsXG4gIFwiODMwXCIsXG4gIFwiODMxXCIsXG4gIFwiODMyXCIsXG4gIFwiODM1XCIsXG4gIFwiODQzXCIsXG4gIFwiODQ1XCIsXG4gIFwiODQ3XCIsXG4gIFwiODQ4XCIsXG4gIFwiODUwXCIsXG4gIFwiODU2XCIsXG4gIFwiODU3XCIsXG4gIFwiODU4XCIsXG4gIFwiODU5XCIsXG4gIFwiODYwXCIsXG4gIFwiODYyXCIsXG4gIFwiODYzXCIsXG4gIFwiODY0XCIsXG4gIFwiODY1XCIsXG4gIFwiODcwXCIsXG4gIFwiODcyXCIsXG4gIFwiODc4XCIsXG4gIFwiOTAxXCIsXG4gIFwiOTAzXCIsXG4gIFwiOTA0XCIsXG4gIFwiOTA2XCIsXG4gIFwiOTA3XCIsXG4gIFwiOTA4XCIsXG4gIFwiOTA5XCIsXG4gIFwiOTEwXCIsXG4gIFwiOTEyXCIsXG4gIFwiOTEzXCIsXG4gIFwiOTE0XCIsXG4gIFwiOTE1XCIsXG4gIFwiOTE2XCIsXG4gIFwiOTE3XCIsXG4gIFwiOTE4XCIsXG4gIFwiOTE5XCIsXG4gIFwiOTIwXCIsXG4gIFwiOTI1XCIsXG4gIFwiOTI4XCIsXG4gIFwiOTMxXCIsXG4gIFwiOTM2XCIsXG4gIFwiOTM3XCIsXG4gIFwiOTQwXCIsXG4gIFwiOTQxXCIsXG4gIFwiOTQ3XCIsXG4gIFwiOTQ5XCIsXG4gIFwiOTUyXCIsXG4gIFwiOTU0XCIsXG4gIFwiOTU2XCIsXG4gIFwiOTU5XCIsXG4gIFwiOTcwXCIsXG4gIFwiOTcxXCIsXG4gIFwiOTcyXCIsXG4gIFwiOTczXCIsXG4gIFwiOTc1XCIsXG4gIFwiOTc4XCIsXG4gIFwiOTc5XCIsXG4gIFwiOTgwXCIsXG4gIFwiOTg0XCIsXG4gIFwiOTg1XCIsXG4gIFwiOTg5XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjIwMVwiLFxuICBcIjIwMlwiLFxuICBcIjIwM1wiLFxuICBcIjIwNVwiLFxuICBcIjIwNlwiLFxuICBcIjIwN1wiLFxuICBcIjIwOFwiLFxuICBcIjIwOVwiLFxuICBcIjIxMFwiLFxuICBcIjIxMlwiLFxuICBcIjIxM1wiLFxuICBcIjIxNFwiLFxuICBcIjIxNVwiLFxuICBcIjIxNlwiLFxuICBcIjIxN1wiLFxuICBcIjIxOFwiLFxuICBcIjIxOVwiLFxuICBcIjIyNFwiLFxuICBcIjIyNVwiLFxuICBcIjIyN1wiLFxuICBcIjIyOFwiLFxuICBcIjIyOVwiLFxuICBcIjIzMVwiLFxuICBcIjIzNFwiLFxuICBcIjIzOVwiLFxuICBcIjI0MFwiLFxuICBcIjI0OFwiLFxuICBcIjI1MVwiLFxuICBcIjI1MlwiLFxuICBcIjI1M1wiLFxuICBcIjI1NFwiLFxuICBcIjI1NlwiLFxuICBcIjI2MFwiLFxuICBcIjI2MlwiLFxuICBcIjI2N1wiLFxuICBcIjI2OVwiLFxuICBcIjI3MFwiLFxuICBcIjI3NlwiLFxuICBcIjI4MVwiLFxuICBcIjI4M1wiLFxuICBcIjMwMVwiLFxuICBcIjMwMlwiLFxuICBcIjMwM1wiLFxuICBcIjMwNFwiLFxuICBcIjMwNVwiLFxuICBcIjMwN1wiLFxuICBcIjMwOFwiLFxuICBcIjMwOVwiLFxuICBcIjMxMFwiLFxuICBcIjMxMlwiLFxuICBcIjMxM1wiLFxuICBcIjMxNFwiLFxuICBcIjMxNVwiLFxuICBcIjMxNlwiLFxuICBcIjMxN1wiLFxuICBcIjMxOFwiLFxuICBcIjMxOVwiLFxuICBcIjMyMFwiLFxuICBcIjMyMVwiLFxuICBcIjMyM1wiLFxuICBcIjMzMFwiLFxuICBcIjMzMVwiLFxuICBcIjMzNFwiLFxuICBcIjMzNlwiLFxuICBcIjMzN1wiLFxuICBcIjMzOVwiLFxuICBcIjM0N1wiLFxuICBcIjM1MVwiLFxuICBcIjM1MlwiLFxuICBcIjM2MFwiLFxuICBcIjM2MVwiLFxuICBcIjM4NlwiLFxuICBcIjQwMVwiLFxuICBcIjQwMlwiLFxuICBcIjQwNFwiLFxuICBcIjQwNVwiLFxuICBcIjQwNlwiLFxuICBcIjQwN1wiLFxuICBcIjQwOFwiLFxuICBcIjQwOVwiLFxuICBcIjQxMFwiLFxuICBcIjQxMlwiLFxuICBcIjQxM1wiLFxuICBcIjQxNFwiLFxuICBcIjQxNVwiLFxuICBcIjQxN1wiLFxuICBcIjQxOVwiLFxuICBcIjQyM1wiLFxuICBcIjQyNFwiLFxuICBcIjQyNVwiLFxuICBcIjQzNFwiLFxuICBcIjQzNVwiLFxuICBcIjQ0MFwiLFxuICBcIjQ0M1wiLFxuICBcIjQ0NVwiLFxuICBcIjQ2NFwiLFxuICBcIjQ2OVwiLFxuICBcIjQ3MFwiLFxuICBcIjQ3NVwiLFxuICBcIjQ3OFwiLFxuICBcIjQ3OVwiLFxuICBcIjQ4MFwiLFxuICBcIjQ4NFwiLFxuICBcIjUwMVwiLFxuICBcIjUwMlwiLFxuICBcIjUwM1wiLFxuICBcIjUwNFwiLFxuICBcIjUwNVwiLFxuICBcIjUwN1wiLFxuICBcIjUwOFwiLFxuICBcIjUwOVwiLFxuICBcIjUxMFwiLFxuICBcIjUxMlwiLFxuICBcIjUxM1wiLFxuICBcIjUxNVwiLFxuICBcIjUxNlwiLFxuICBcIjUxN1wiLFxuICBcIjUxOFwiLFxuICBcIjUyMFwiLFxuICBcIjUzMFwiLFxuICBcIjU0MFwiLFxuICBcIjU0MVwiLFxuICBcIjU1MVwiLFxuICBcIjU1N1wiLFxuICBcIjU1OVwiLFxuICBcIjU2MVwiLFxuICBcIjU2MlwiLFxuICBcIjU2M1wiLFxuICBcIjU2NFwiLFxuICBcIjU2N1wiLFxuICBcIjU3MFwiLFxuICBcIjU3MVwiLFxuICBcIjU3M1wiLFxuICBcIjU3NFwiLFxuICBcIjU4MFwiLFxuICBcIjU4NVwiLFxuICBcIjU4NlwiLFxuICBcIjYwMVwiLFxuICBcIjYwMlwiLFxuICBcIjYwM1wiLFxuICBcIjYwNVwiLFxuICBcIjYwNlwiLFxuICBcIjYwN1wiLFxuICBcIjYwOFwiLFxuICBcIjYwOVwiLFxuICBcIjYxMFwiLFxuICBcIjYxMlwiLFxuICBcIjYxNFwiLFxuICBcIjYxNVwiLFxuICBcIjYxNlwiLFxuICBcIjYxN1wiLFxuICBcIjYxOFwiLFxuICBcIjYxOVwiLFxuICBcIjYyMFwiLFxuICBcIjYyM1wiLFxuICBcIjYyNlwiLFxuICBcIjYzMFwiLFxuICBcIjYzMVwiLFxuICBcIjYzNlwiLFxuICBcIjY0MVwiLFxuICBcIjY0NlwiLFxuICBcIjY1MFwiLFxuICBcIjY1MVwiLFxuICBcIjY2MFwiLFxuICBcIjY2MVwiLFxuICBcIjY2MlwiLFxuICBcIjY2N1wiLFxuICBcIjY3OFwiLFxuICBcIjY4MlwiLFxuICBcIjcwMVwiLFxuICBcIjcwMlwiLFxuICBcIjcwM1wiLFxuICBcIjcwNFwiLFxuICBcIjcwNlwiLFxuICBcIjcwN1wiLFxuICBcIjcwOFwiLFxuICBcIjcxMlwiLFxuICBcIjcxM1wiLFxuICBcIjcxNFwiLFxuICBcIjcxNVwiLFxuICBcIjcxNlwiLFxuICBcIjcxN1wiLFxuICBcIjcxOFwiLFxuICBcIjcxOVwiLFxuICBcIjcyMFwiLFxuICBcIjcyNFwiLFxuICBcIjcyN1wiLFxuICBcIjczMVwiLFxuICBcIjczMlwiLFxuICBcIjczNFwiLFxuICBcIjczN1wiLFxuICBcIjc0MFwiLFxuICBcIjc1NFwiLFxuICBcIjc1N1wiLFxuICBcIjc2MFwiLFxuICBcIjc2M1wiLFxuICBcIjc2NVwiLFxuICBcIjc3MFwiLFxuICBcIjc3MlwiLFxuICBcIjc3M1wiLFxuICBcIjc3NFwiLFxuICBcIjc3NVwiLFxuICBcIjc4MVwiLFxuICBcIjc4NVwiLFxuICBcIjc4NlwiLFxuICBcIjgwMVwiLFxuICBcIjgwMlwiLFxuICBcIjgwM1wiLFxuICBcIjgwNFwiLFxuICBcIjgwNVwiLFxuICBcIjgwNlwiLFxuICBcIjgwOFwiLFxuICBcIjgxMFwiLFxuICBcIjgxMlwiLFxuICBcIjgxM1wiLFxuICBcIjgxNFwiLFxuICBcIjgxNVwiLFxuICBcIjgxNlwiLFxuICBcIjgxN1wiLFxuICBcIjgxOFwiLFxuICBcIjgyOFwiLFxuICBcIjgzMFwiLFxuICBcIjgzMVwiLFxuICBcIjgzMlwiLFxuICBcIjgzNVwiLFxuICBcIjg0M1wiLFxuICBcIjg0NVwiLFxuICBcIjg0N1wiLFxuICBcIjg0OFwiLFxuICBcIjg1MFwiLFxuICBcIjg1NlwiLFxuICBcIjg1N1wiLFxuICBcIjg1OFwiLFxuICBcIjg1OVwiLFxuICBcIjg2MFwiLFxuICBcIjg2MlwiLFxuICBcIjg2M1wiLFxuICBcIjg2NFwiLFxuICBcIjg2NVwiLFxuICBcIjg3MFwiLFxuICBcIjg3MlwiLFxuICBcIjg3OFwiLFxuICBcIjkwMVwiLFxuICBcIjkwM1wiLFxuICBcIjkwNFwiLFxuICBcIjkwNlwiLFxuICBcIjkwN1wiLFxuICBcIjkwOFwiLFxuICBcIjkwOVwiLFxuICBcIjkxMFwiLFxuICBcIjkxMlwiLFxuICBcIjkxM1wiLFxuICBcIjkxNFwiLFxuICBcIjkxNVwiLFxuICBcIjkxNlwiLFxuICBcIjkxN1wiLFxuICBcIjkxOFwiLFxuICBcIjkxOVwiLFxuICBcIjkyMFwiLFxuICBcIjkyNVwiLFxuICBcIjkyOFwiLFxuICBcIjkzMVwiLFxuICBcIjkzNlwiLFxuICBcIjkzN1wiLFxuICBcIjk0MFwiLFxuICBcIjk0MVwiLFxuICBcIjk0N1wiLFxuICBcIjk0OVwiLFxuICBcIjk1MlwiLFxuICBcIjk1NFwiLFxuICBcIjk1NlwiLFxuICBcIjk1OVwiLFxuICBcIjk3MFwiLFxuICBcIjk3MVwiLFxuICBcIjk3MlwiLFxuICBcIjk3M1wiLFxuICBcIjk3NVwiLFxuICBcIjk3OFwiLFxuICBcIjk3OVwiLFxuICBcIjk4MFwiLFxuICBcIjk4NFwiLFxuICBcIjk4NVwiLFxuICBcIjk4OVwiXG5dO1xuIiwidmFyIHBob25lX251bWJlciA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBwaG9uZV9udW1iZXI7XG5waG9uZV9udW1iZXIuYXJlYV9jb2RlID0gcmVxdWlyZShcIi4vYXJlYV9jb2RlXCIpO1xucGhvbmVfbnVtYmVyLmV4Y2hhbmdlX2NvZGUgPSByZXF1aXJlKFwiLi9leGNoYW5nZV9jb2RlXCIpO1xuIiwiXG4vKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmxvcmVtXG4gKi9cbnZhciBMb3JlbSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBIZWxwZXJzID0gZmFrZXIuaGVscGVycztcblxuICAvKipcbiAgICogd29yZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLndvcmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVxuICAgKi9cbiAgc2VsZi53b3JkID0gZnVuY3Rpb24gKG51bSkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmxvcmVtLndvcmRzKTtcbiAgfTtcblxuICAvKipcbiAgICogZ2VuZXJhdGVzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS53b3Jkc1xuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtIG51bWJlciBvZiB3b3JkcywgZGVmYXVsdHMgdG8gM1xuICAgKi9cbiAgc2VsZi53b3JkcyA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICAgIGlmICh0eXBlb2YgbnVtID09ICd1bmRlZmluZWQnKSB7IG51bSA9IDM7IH1cbiAgICAgIHZhciB3b3JkcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgICAgICB3b3Jkcy5wdXNoKGZha2VyLmxvcmVtLndvcmQoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd29yZHMuam9pbignICcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZW50ZW5jZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnNlbnRlbmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3b3JkQ291bnQgZGVmYXVsdHMgdG8gYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMyBhbmQgMTBcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlXG4gICAqL1xuICBzZWxmLnNlbnRlbmNlID0gZnVuY3Rpb24gKHdvcmRDb3VudCwgcmFuZ2UpIHtcbiAgICAgIGlmICh0eXBlb2Ygd29yZENvdW50ID09ICd1bmRlZmluZWQnKSB7IHdvcmRDb3VudCA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtaW46IDMsIG1heDogMTAgfSk7IH1cbiAgICAgIC8vIGlmICh0eXBlb2YgcmFuZ2UgPT0gJ3VuZGVmaW5lZCcpIHsgcmFuZ2UgPSA3OyB9XG5cbiAgICAgIC8vIHN0cmFuZ2UgaXNzdWUgd2l0aCB0aGUgbm9kZV9taW5fdGVzdCBmYWlsaW5nIGZvciBjYXB0aWFsaXplLCBwbGVhc2UgZml4IGFuZCBhZGQgZmFrZXIubG9yZW0uYmFja1xuICAgICAgLy9yZXR1cm4gIGZha2VyLmxvcmVtLndvcmRzKHdvcmRDb3VudCArIEhlbHBlcnMucmFuZG9tTnVtYmVyKHJhbmdlKSkuam9pbignICcpLmNhcGl0YWxpemUoKTtcblxuICAgICAgdmFyIHNlbnRlbmNlID0gZmFrZXIubG9yZW0ud29yZHMod29yZENvdW50KTtcbiAgICAgIHJldHVybiBzZW50ZW5jZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHNlbnRlbmNlLnNsaWNlKDEpICsgJy4nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzbHVnXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0uc2x1Z1xuICAgKiBAcGFyYW0ge251bWJlcn0gd29yZENvdW50IG51bWJlciBvZiB3b3JkcywgZGVmYXVsdHMgdG8gM1xuICAgKi9cbiAgc2VsZi5zbHVnID0gZnVuY3Rpb24gKHdvcmRDb3VudCkge1xuICAgICAgdmFyIHdvcmRzID0gZmFrZXIubG9yZW0ud29yZHMod29yZENvdW50KTtcbiAgICAgIHJldHVybiBIZWxwZXJzLnNsdWdpZnkod29yZHMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZW50ZW5jZXNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5zZW50ZW5jZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlbnRlbmNlQ291bnQgZGVmYXV0bHMgdG8gYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMiBhbmQgNlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yIGRlZmF1bHRzIHRvIGAnICdgXG4gICAqL1xuICBzZWxmLnNlbnRlbmNlcyA9IGZ1bmN0aW9uIChzZW50ZW5jZUNvdW50LCBzZXBhcmF0b3IpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VudGVuY2VDb3VudCA9PT0gJ3VuZGVmaW5lZCcpIHsgc2VudGVuY2VDb3VudCA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtaW46IDIsIG1heDogNiB9KTt9XG4gICAgICBpZiAodHlwZW9mIHNlcGFyYXRvciA9PSAndW5kZWZpbmVkJykgeyBzZXBhcmF0b3IgPSBcIiBcIjsgfVxuICAgICAgdmFyIHNlbnRlbmNlcyA9IFtdO1xuICAgICAgZm9yIChzZW50ZW5jZUNvdW50OyBzZW50ZW5jZUNvdW50ID4gMDsgc2VudGVuY2VDb3VudC0tKSB7XG4gICAgICAgIHNlbnRlbmNlcy5wdXNoKGZha2VyLmxvcmVtLnNlbnRlbmNlKCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlbnRlbmNlcy5qb2luKHNlcGFyYXRvcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhcmFncmFwaFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnBhcmFncmFwaFxuICAgKiBAcGFyYW0ge251bWJlcn0gc2VudGVuY2VDb3VudCBkZWZhdWx0cyB0byAzXG4gICAqL1xuICBzZWxmLnBhcmFncmFwaCA9IGZ1bmN0aW9uIChzZW50ZW5jZUNvdW50KSB7XG4gICAgICBpZiAodHlwZW9mIHNlbnRlbmNlQ291bnQgPT0gJ3VuZGVmaW5lZCcpIHsgc2VudGVuY2VDb3VudCA9IDM7IH1cbiAgICAgIHJldHVybiBmYWtlci5sb3JlbS5zZW50ZW5jZXMoc2VudGVuY2VDb3VudCArIGZha2VyLnJhbmRvbS5udW1iZXIoMykpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJhZ3JhcGhzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ucGFyYWdyYXBoc1xuICAgKiBAcGFyYW0ge251bWJlcn0gcGFyYWdyYXBoQ291bnQgZGVmYXVsdHMgdG8gM1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yIGRlZmF1bHRzIHRvIGAnXFxuIFxccidgXG4gICAqL1xuICBzZWxmLnBhcmFncmFwaHMgPSBmdW5jdGlvbiAocGFyYWdyYXBoQ291bnQsIHNlcGFyYXRvcikge1xuICAgIGlmICh0eXBlb2Ygc2VwYXJhdG9yID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBzZXBhcmF0b3IgPSBcIlxcbiBcXHJcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwYXJhZ3JhcGhDb3VudCA9PSAndW5kZWZpbmVkJykgeyBwYXJhZ3JhcGhDb3VudCA9IDM7IH1cbiAgICB2YXIgcGFyYWdyYXBocyA9IFtdO1xuICAgIGZvciAocGFyYWdyYXBoQ291bnQ7IHBhcmFncmFwaENvdW50ID4gMDsgcGFyYWdyYXBoQ291bnQtLSkge1xuICAgICAgICBwYXJhZ3JhcGhzLnB1c2goZmFrZXIubG9yZW0ucGFyYWdyYXBoKCkpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYWdyYXBocy5qb2luKHNlcGFyYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJucyByYW5kb20gdGV4dCBiYXNlZCBvbiBhIHJhbmRvbSBsb3JlbSBtZXRob2RcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS50ZXh0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lc1xuICAgKi9cbiAgc2VsZi50ZXh0ID0gZnVuY3Rpb24gbG9yZW1UZXh0ICh0aW1lcykge1xuICAgIHZhciBsb3JlbU1ldGhvZHMgPSBbJ2xvcmVtLndvcmQnLCAnbG9yZW0ud29yZHMnLCAnbG9yZW0uc2VudGVuY2UnLCAnbG9yZW0uc2VudGVuY2VzJywgJ2xvcmVtLnBhcmFncmFwaCcsICdsb3JlbS5wYXJhZ3JhcGhzJywgJ2xvcmVtLmxpbmVzJ107XG4gICAgdmFyIHJhbmRvbUxvcmVtTWV0aG9kID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChsb3JlbU1ldGhvZHMpO1xuICAgIHJldHVybiBmYWtlci5mYWtlKCd7eycgKyByYW5kb21Mb3JlbU1ldGhvZCArICd9fScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGxpbmVzIG9mIGxvcmVtIHNlcGFyYXRlZCBieSBgJ1xcbidgXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ubGluZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVDb3VudCBkZWZhdWx0cyB0byBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAxIGFuZCA1XG4gICAqL1xuICBzZWxmLmxpbmVzID0gZnVuY3Rpb24gbGluZXMgKGxpbmVDb3VudCkge1xuICAgIGlmICh0eXBlb2YgbGluZUNvdW50ID09PSAndW5kZWZpbmVkJykgeyBsaW5lQ291bnQgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWluOiAxLCBtYXg6IDUgfSk7fVxuICAgIHJldHVybiBmYWtlci5sb3JlbS5zZW50ZW5jZXMobGluZUNvdW50LCAnXFxuJylcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn07XG5cblxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IExvcmVtO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5uYW1lXG4gKi9cbmZ1bmN0aW9uIE5hbWUgKGZha2VyKSB7XG5cbiAgLyoqXG4gICAqIGZpcnN0TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge21peGVkfSBnZW5kZXJcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuZmlyc3ROYW1lID0gZnVuY3Rpb24gKGdlbmRlcikge1xuICAgIGlmICh0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5tYWxlX2ZpcnN0X25hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUuZmVtYWxlX2ZpcnN0X25hbWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIC8vIHNvbWUgbG9jYWxlIGRhdGFzZXRzICggbGlrZSBydSApIGhhdmUgZmlyc3RfbmFtZSBzcGxpdCBieSBnZW5kZXIuIHNpbmNlIHRoZSBuYW1lLmZpcnN0X25hbWUgZmllbGQgZG9lcyBub3QgZXhpc3QgaW4gdGhlc2UgZGF0YXNldHMsXG4gICAgICAvLyB3ZSBtdXN0IHJhbmRvbWx5IHBpY2sgYSBuYW1lIGZyb20gZWl0aGVyIGdlbmRlciBhcnJheSBzbyBmYWtlci5uYW1lLmZpcnN0TmFtZSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBsb2NhbGUgZGF0YSAoIGFuZCBub3QgZmFsbGJhY2sgKVxuICAgICAgaWYgKHR5cGVvZiBnZW5kZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGdlbmRlciA9IGZha2VyLnJhbmRvbS5udW1iZXIoMSk7XG4gICAgICB9XG4gICAgICBpZiAoZ2VuZGVyID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLm1hbGVfZmlyc3RfbmFtZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLmZlbWFsZV9maXJzdF9uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5maXJzdF9uYW1lKTtcbiAgfTtcblxuICAvKipcbiAgICogbGFzdE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBsYXN0TmFtZVxuICAgKiBAcGFyYW0ge21peGVkfSBnZW5kZXJcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMubGFzdE5hbWUgPSBmdW5jdGlvbiAoZ2VuZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLm1hbGVfbGFzdF9uYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZlbWFsZV9sYXN0X25hbWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIC8vIHNvbWUgbG9jYWxlIGRhdGFzZXRzICggbGlrZSBydSApIGhhdmUgbGFzdF9uYW1lIHNwbGl0IGJ5IGdlbmRlci4gaSBoYXZlIG5vIGlkZWEgaG93IGxhc3QgbmFtZXMgY2FuIGhhdmUgZ2VuZGVycywgYnV0IGFsc28gaSBkbyBub3Qgc3BlYWsgcnVzc2lhblxuICAgICAgLy8gc2VlIGFib3ZlIGNvbW1lbnQgb2YgZmlyc3ROYW1lIG1ldGhvZFxuICAgICAgaWYgKHR5cGVvZiBnZW5kZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGdlbmRlciA9IGZha2VyLnJhbmRvbS5udW1iZXIoMSk7XG4gICAgICB9XG4gICAgICBpZiAoZ2VuZGVyID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLm1hbGVfbGFzdF9uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmxvY2FsZXNbZmFrZXIubG9jYWxlXS5uYW1lLmZlbWFsZV9sYXN0X25hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLmxhc3RfbmFtZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZpbmROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmluZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICogQHBhcmFtIHttaXhlZH0gZ2VuZGVyXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmZpbmROYW1lID0gZnVuY3Rpb24gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGdlbmRlcikge1xuICAgICAgdmFyIHIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDgpO1xuICAgICAgdmFyIHByZWZpeCwgc3VmZml4O1xuICAgICAgLy8gaW4gcGFydGljdWxhciBsb2NhbGVzIGZpcnN0IGFuZCBsYXN0IG5hbWVzIHNwbGl0IGJ5IGdlbmRlcixcbiAgICAgIC8vIHRodXMgd2Uga2VlcCBjb25zaXN0ZW5jeSBieSBwYXNzaW5nIDAgYXMgbWFsZSBhbmQgMSBhcyBmZW1hbGVcbiAgICAgIGlmICh0eXBlb2YgZ2VuZGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICBnZW5kZXIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEpO1xuICAgICAgfVxuICAgICAgZmlyc3ROYW1lID0gZmlyc3ROYW1lIHx8IGZha2VyLm5hbWUuZmlyc3ROYW1lKGdlbmRlcik7XG4gICAgICBsYXN0TmFtZSA9IGxhc3ROYW1lIHx8IGZha2VyLm5hbWUubGFzdE5hbWUoZ2VuZGVyKTtcbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAgIHByZWZpeCA9IGZha2VyLm5hbWUucHJlZml4KGdlbmRlcik7XG4gICAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgXCIgXCIgKyBmaXJzdE5hbWUgKyBcIiBcIiArIGxhc3ROYW1lO1xuICAgICAgICAgIH1cbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICBzdWZmaXggPSBmYWtlci5uYW1lLnN1ZmZpeChnZW5kZXIpO1xuICAgICAgICAgIGlmIChzdWZmaXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0TmFtZSArIFwiIFwiICsgbGFzdE5hbWUgKyBcIiBcIiArIHN1ZmZpeDtcbiAgICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXJzdE5hbWUgKyBcIiBcIiArIGxhc3ROYW1lO1xuICB9O1xuXG4gIC8qKlxuICAgKiBqb2JUaXRsZVxuICAgKlxuICAgKiBAbWV0aG9kIGpvYlRpdGxlXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYlRpdGxlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAgZmFrZXIubmFtZS5qb2JEZXNjcmlwdG9yKCkgKyBcIiBcIiArXG4gICAgICBmYWtlci5uYW1lLmpvYkFyZWEoKSArIFwiIFwiICtcbiAgICAgIGZha2VyLm5hbWUuam9iVHlwZSgpO1xuICB9O1xuICBcbiAgLyoqXG4gICAqIHByZWZpeFxuICAgKlxuICAgKiBAbWV0aG9kIHByZWZpeFxuICAgKiBAcGFyYW0ge21peGVkfSBnZW5kZXJcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMucHJlZml4ID0gZnVuY3Rpb24gKGdlbmRlcikge1xuICAgIGlmICh0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5tYWxlX3ByZWZpeCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5mZW1hbGVfcHJlZml4ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGlmIChnZW5kZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUubWFsZV9wcmVmaXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUuZmVtYWxlX3ByZWZpeCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUucHJlZml4KTtcbiAgfTtcblxuICAvKipcbiAgICogc3VmZml4XG4gICAqXG4gICAqIEBtZXRob2Qgc3VmZml4XG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLnN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUuc3VmZml4KTtcbiAgfTtcblxuICAvKipcbiAgICogdGl0bGVcbiAgICpcbiAgICogQG1ldGhvZCB0aXRsZVxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy50aXRsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmRlc2NyaXB0b3IpLFxuICAgICAgICAgIGxldmVsICAgICAgID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmxldmVsKSxcbiAgICAgICAgICBqb2IgICAgICAgICA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5qb2IpO1xuXG4gICAgICByZXR1cm4gZGVzY3JpcHRvciArIFwiIFwiICsgbGV2ZWwgKyBcIiBcIiArIGpvYjtcbiAgfTtcblxuICAvKipcbiAgICogam9iRGVzY3JpcHRvclxuICAgKlxuICAgKiBAbWV0aG9kIGpvYkRlc2NyaXB0b3JcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuam9iRGVzY3JpcHRvciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmRlc2NyaXB0b3IpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBqb2JBcmVhXG4gICAqXG4gICAqIEBtZXRob2Qgam9iQXJlYVxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5qb2JBcmVhID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUubGV2ZWwpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBqb2JUeXBlXG4gICAqXG4gICAqIEBtZXRob2Qgam9iVHlwZVxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5qb2JUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuam9iKTtcbiAgfTtcblxufVxuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IE5hbWU7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLnBob25lXG4gKi9cbnZhciBQaG9uZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIHBob25lTnVtYmVyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucGhvbmUucGhvbmVOdW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgc2VsZi5waG9uZU51bWJlciA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCBmYWtlci5waG9uZS5waG9uZUZvcm1hdHMoKTtcbiAgICAgIHJldHVybiBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKGZvcm1hdCk7XG4gIH07XG5cbiAgLy8gRklYTUU6IHRoaXMgaXMgc3RyYW5nZSBwYXNzaW5nIGluIGFuIGFycmF5IGluZGV4LlxuICAvKipcbiAgICogcGhvbmVOdW1iZXJGb3JtYXRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5waG9uZS5waG9uZUZvcm1hdHNBcnJheUluZGV4XG4gICAqIEBwYXJhbSBwaG9uZUZvcm1hdHNBcnJheUluZGV4XG4gICAqL1xuICBzZWxmLnBob25lTnVtYmVyRm9ybWF0ID0gZnVuY3Rpb24gKHBob25lRm9ybWF0c0FycmF5SW5kZXgpIHtcbiAgICAgIHBob25lRm9ybWF0c0FycmF5SW5kZXggPSBwaG9uZUZvcm1hdHNBcnJheUluZGV4IHx8IDA7XG4gICAgICByZXR1cm4gZmFrZXIuaGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihmYWtlci5kZWZpbml0aW9ucy5waG9uZV9udW1iZXIuZm9ybWF0c1twaG9uZUZvcm1hdHNBcnJheUluZGV4XSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBob25lRm9ybWF0c1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnBob25lLnBob25lRm9ybWF0c1xuICAgKi9cbiAgc2VsZi5waG9uZUZvcm1hdHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMucGhvbmVfbnVtYmVyLmZvcm1hdHMpO1xuICB9O1xuICBcbiAgcmV0dXJuIHNlbGY7XG5cbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gUGhvbmU7IiwidmFyIG1lcnNlbm5lID0gcmVxdWlyZSgnLi4vdmVuZG9yL21lcnNlbm5lJyk7XG5cbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIucmFuZG9tXG4gKi9cbmZ1bmN0aW9uIFJhbmRvbSAoZmFrZXIsIHNlZWQpIHtcbiAgLy8gVXNlIGEgdXNlciBwcm92aWRlZCBzZWVkIGlmIGl0IGV4aXN0c1xuICBpZiAoc2VlZCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlZWQpICYmIHNlZWQubGVuZ3RoKSB7XG4gICAgICBtZXJzZW5uZS5zZWVkX2FycmF5KHNlZWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG1lcnNlbm5lLnNlZWQoc2VlZCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiByZXR1cm5zIGEgc2luZ2xlIHJhbmRvbSBudW1iZXIgYmFzZWQgb24gYSBtYXggbnVtYmVyIG9yIHJhbmdlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLm51bWJlclxuICAgKiBAcGFyYW0ge21peGVkfSBvcHRpb25zXG4gICAqL1xuICB0aGlzLm51bWJlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1heDogb3B0aW9uc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5taW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG9wdGlvbnMubWluID0gMDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubWF4ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBvcHRpb25zLm1heCA9IDk5OTk5O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucHJlY2lzaW9uID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBvcHRpb25zLnByZWNpc2lvbiA9IDE7XG4gICAgfVxuXG4gICAgLy8gTWFrZSB0aGUgcmFuZ2UgaW5jbHVzaXZlIG9mIHRoZSBtYXggdmFsdWVcbiAgICB2YXIgbWF4ID0gb3B0aW9ucy5tYXg7XG4gICAgaWYgKG1heCA+PSAwKSB7XG4gICAgICBtYXggKz0gb3B0aW9ucy5wcmVjaXNpb247XG4gICAgfVxuXG4gICAgdmFyIHJhbmRvbU51bWJlciA9IG9wdGlvbnMucHJlY2lzaW9uICogTWF0aC5mbG9vcihcbiAgICAgIG1lcnNlbm5lLnJhbmQobWF4IC8gb3B0aW9ucy5wcmVjaXNpb24sIG9wdGlvbnMubWluIC8gb3B0aW9ucy5wcmVjaXNpb24pKTtcblxuICAgIHJldHVybiByYW5kb21OdW1iZXI7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiB0YWtlcyBhbiBhcnJheSBhbmQgcmV0dXJucyBhIHJhbmRvbSBlbGVtZW50IG9mIHRoZSBhcnJheVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnRcbiAgICogQHBhcmFtIHthcnJheX0gYXJyYXlcbiAgICovXG4gIHRoaXMuYXJyYXlFbGVtZW50ID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICBhcnJheSA9IGFycmF5IHx8IFtcImFcIiwgXCJiXCIsIFwiY1wiXTtcbiAgICAgIHZhciByID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1heDogYXJyYXkubGVuZ3RoIC0gMSB9KTtcbiAgICAgIHJldHVybiBhcnJheVtyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0YWtlcyBhbiBvYmplY3QgYW5kIHJldHVybnMgdGhlIHJhbmRvbWx5IGtleSBvciB2YWx1ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5vYmplY3RFbGVtZW50XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHttaXhlZH0gZmllbGRcbiAgICovXG4gIHRoaXMub2JqZWN0RWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QsIGZpZWxkKSB7XG4gICAgICBvYmplY3QgPSBvYmplY3QgfHwgeyBcImZvb1wiOiBcImJhclwiLCBcInRvb1wiOiBcImNhclwiIH07XG4gICAgICB2YXIgYXJyYXkgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuICAgICAgdmFyIGtleSA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoYXJyYXkpO1xuXG4gICAgICByZXR1cm4gZmllbGQgPT09IFwia2V5XCIgPyBrZXkgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1dWlkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLnV1aWRcbiAgICovXG4gIHRoaXMudXVpZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBSRkM0MTIyX1RFTVBMQVRFID0gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCc7XG4gICAgICB2YXIgcmVwbGFjZVBsYWNlaG9sZGVycyA9IGZ1bmN0aW9uIChwbGFjZWhvbGRlcikge1xuICAgICAgICAgIHZhciByYW5kb20gPSBzZWxmLm51bWJlcih7IG1pbjogMCwgbWF4OiAxNSB9KTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBwbGFjZWhvbGRlciA9PSAneCcgPyByYW5kb20gOiAocmFuZG9tICYweDMgfCAweDgpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygxNik7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIFJGQzQxMjJfVEVNUExBVEUucmVwbGFjZSgvW3h5XS9nLCByZXBsYWNlUGxhY2Vob2xkZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBib29sZWFuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmJvb2xlYW5cbiAgICovXG4gIHRoaXMuYm9vbGVhbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhIWZha2VyLnJhbmRvbS5udW1iZXIoMSlcbiAgfVxuXG4gIC8vIFRPRE86IGhhdmUgYWJpbGl0eSB0byByZXR1cm4gc3BlY2lmaWMgdHlwZSBvZiB3b3JkPyBBcyBpbjogbm91biwgYWRqZWN0aXZlLCB2ZXJiLCBldGNcbiAgLyoqXG4gICAqIHdvcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ud29yZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAgKi9cbiAgdGhpcy53b3JkID0gZnVuY3Rpb24gcmFuZG9tV29yZCAodHlwZSkge1xuXG4gICAgdmFyIHdvcmRNZXRob2RzID0gW1xuICAgICdjb21tZXJjZS5kZXBhcnRtZW50JyxcbiAgICAnY29tbWVyY2UucHJvZHVjdE5hbWUnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0QWRqZWN0aXZlJyxcbiAgICAnY29tbWVyY2UucHJvZHVjdE1hdGVyaWFsJyxcbiAgICAnY29tbWVyY2UucHJvZHVjdCcsXG4gICAgJ2NvbW1lcmNlLmNvbG9yJyxcblxuICAgICdjb21wYW55LmNhdGNoUGhyYXNlQWRqZWN0aXZlJyxcbiAgICAnY29tcGFueS5jYXRjaFBocmFzZURlc2NyaXB0b3InLFxuICAgICdjb21wYW55LmNhdGNoUGhyYXNlTm91bicsXG4gICAgJ2NvbXBhbnkuYnNBZGplY3RpdmUnLFxuICAgICdjb21wYW55LmJzQnV6eicsXG4gICAgJ2NvbXBhbnkuYnNOb3VuJyxcbiAgICAnYWRkcmVzcy5zdHJlZXRTdWZmaXgnLFxuICAgICdhZGRyZXNzLmNvdW50eScsXG4gICAgJ2FkZHJlc3MuY291bnRyeScsXG4gICAgJ2FkZHJlc3Muc3RhdGUnLFxuXG4gICAgJ2ZpbmFuY2UuYWNjb3VudE5hbWUnLFxuICAgICdmaW5hbmNlLnRyYW5zYWN0aW9uVHlwZScsXG4gICAgJ2ZpbmFuY2UuY3VycmVuY3lOYW1lJyxcblxuICAgICdoYWNrZXIubm91bicsXG4gICAgJ2hhY2tlci52ZXJiJyxcbiAgICAnaGFja2VyLmFkamVjdGl2ZScsXG4gICAgJ2hhY2tlci5pbmd2ZXJiJyxcbiAgICAnaGFja2VyLmFiYnJldmlhdGlvbicsXG5cbiAgICAnbmFtZS5qb2JEZXNjcmlwdG9yJyxcbiAgICAnbmFtZS5qb2JBcmVhJyxcbiAgICAnbmFtZS5qb2JUeXBlJ107XG5cbiAgICAvLyByYW5kb21seSBwaWNrIGZyb20gdGhlIG1hbnkgZmFrZXIgbWV0aG9kcyB0aGF0IGNhbiBnZW5lcmF0ZSB3b3Jkc1xuICAgIHZhciByYW5kb21Xb3JkTWV0aG9kID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh3b3JkTWV0aG9kcyk7XG4gICAgcmV0dXJuIGZha2VyLmZha2UoJ3t7JyArIHJhbmRvbVdvcmRNZXRob2QgKyAnfX0nKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIHJhbmRvbVdvcmRzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLndvcmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBkZWZhdWx0cyB0byBhIHJhbmRvbSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDNcbiAgICovXG4gIHRoaXMud29yZHMgPSBmdW5jdGlvbiByYW5kb21Xb3JkcyAoY291bnQpIHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBpZiAodHlwZW9mIGNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb3VudCA9IGZha2VyLnJhbmRvbS5udW1iZXIoe21pbjoxLCBtYXg6IDN9KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGk8Y291bnQ7IGkrKykge1xuICAgICAgd29yZHMucHVzaChmYWtlci5yYW5kb20ud29yZCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb2NhbGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uaW1hZ2VcbiAgICovXG4gIHRoaXMuaW1hZ2UgPSBmdW5jdGlvbiByYW5kb21JbWFnZSAoKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogbG9jYWxlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmxvY2FsZVxuICAgKi9cbiAgdGhpcy5sb2NhbGUgPSBmdW5jdGlvbiByYW5kb21Mb2NhbGUgKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KE9iamVjdC5rZXlzKGZha2VyLmxvY2FsZXMpKTtcbiAgfTtcblxuICAvKipcbiAgICogYWxwaGFOdW1lcmljXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmFscGhhTnVtZXJpY1xuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgZGVmYXVsdHMgdG8gMVxuICAgKi9cbiAgdGhpcy5hbHBoYU51bWVyaWMgPSBmdW5jdGlvbiBhbHBoYU51bWVyaWMoY291bnQpIHtcbiAgICBpZiAodHlwZW9mIGNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb3VudCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIHdob2xlU3RyaW5nID0gXCJcIjtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgd2hvbGVTdHJpbmcgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiYVwiLCBcImJcIiwgXCJjXCIsIFwiZFwiLCBcImVcIiwgXCJmXCIsIFwiZ1wiLCBcImhcIiwgXCJpXCIsIFwialwiLCBcImtcIiwgXCJsXCIsIFwibVwiLCBcIm5cIiwgXCJvXCIsIFwicFwiLCBcInFcIiwgXCJyXCIsIFwic1wiLCBcInRcIiwgXCJ1XCIsIFwidlwiLCBcIndcIiwgXCJ4XCIsIFwieVwiLCBcInpcIl0pO1xuICAgIH1cblxuICAgIHJldHVybiB3aG9sZVN0cmluZztcbiAgfTtcblxuICByZXR1cm4gdGhpcztcblxufVxuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IFJhbmRvbTtcbiIsIi8vIGdlbmVyYXRlcyBmYWtlIGRhdGEgZm9yIG1hbnkgY29tcHV0ZXIgc3lzdGVtcyBwcm9wZXJ0aWVzXG5cbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuc3lzdGVtXG4gKi9cbmZ1bmN0aW9uIFN5c3RlbSAoZmFrZXIpIHtcblxuICAvKipcbiAgICogZ2VuZXJhdGVzIGEgZmlsZSBuYW1lIHdpdGggZXh0ZW5zaW9uIG9yIG9wdGlvbmFsIHR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZmlsZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAgKi9cbiAgdGhpcy5maWxlTmFtZSA9IGZ1bmN0aW9uIChleHQsIHR5cGUpIHtcbiAgICB2YXIgc3RyID0gZmFrZXIuZmFrZShcInt7cmFuZG9tLndvcmRzfX0ue3tzeXN0ZW0uZmlsZUV4dH19XCIpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8gL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC0vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxcXC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC8vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb21tb25GaWxlTmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5jb21tb25GaWxlTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLmNvbW1vbkZpbGVOYW1lID0gZnVuY3Rpb24gKGV4dCwgdHlwZSkge1xuICAgIHZhciBzdHIgPSBmYWtlci5yYW5kb20ud29yZHMoKSArIFwiLlwiICsgKGV4dCB8fCBmYWtlci5zeXN0ZW0uY29tbW9uRmlsZUV4dCgpKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvIC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXCwvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwtL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcXFwvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwvL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogbWltZVR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0ubWltZVR5cGVcbiAgICovXG4gIHRoaXMubWltZVR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoT2JqZWN0LmtleXMoZmFrZXIuZGVmaW5pdGlvbnMuc3lzdGVtLm1pbWVUeXBlcykpO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgY29tbW9ubHkgdXNlZCBmaWxlIHR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uY29tbW9uRmlsZVR5cGVcbiAgICovXG4gIHRoaXMuY29tbW9uRmlsZVR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHR5cGVzID0gWyd2aWRlbycsICdhdWRpbycsICdpbWFnZScsICd0ZXh0JywgJ2FwcGxpY2F0aW9uJ107XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodHlwZXMpXG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBjb21tb25seSB1c2VkIGZpbGUgZXh0ZW5zaW9uIGJhc2VkIG9uIG9wdGlvbmFsIHR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uY29tbW9uRmlsZUV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAgKi9cbiAgdGhpcy5jb21tb25GaWxlRXh0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgdHlwZXMgPSBbXG4gICAgICAnYXBwbGljYXRpb24vcGRmJyxcbiAgICAgICdhdWRpby9tcGVnJyxcbiAgICAgICdhdWRpby93YXYnLFxuICAgICAgJ2ltYWdlL3BuZycsXG4gICAgICAnaW1hZ2UvanBlZycsXG4gICAgICAnaW1hZ2UvZ2lmJyxcbiAgICAgICd2aWRlby9tcDQnLFxuICAgICAgJ3ZpZGVvL21wZWcnLFxuICAgICAgJ3RleHQvaHRtbCdcbiAgICBdO1xuICAgIHJldHVybiBmYWtlci5zeXN0ZW0uZmlsZUV4dChmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHR5cGVzKSk7XG4gIH07XG5cblxuICAvKipcbiAgICogcmV0dXJucyBhbnkgZmlsZSB0eXBlIGF2YWlsYWJsZSBhcyBtaW1lLXR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZmlsZVR5cGVcbiAgICovXG4gIHRoaXMuZmlsZVR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHR5cGVzID0gW107XG4gICAgdmFyIG1pbWVzID0gZmFrZXIuZGVmaW5pdGlvbnMuc3lzdGVtLm1pbWVUeXBlcztcbiAgICBPYmplY3Qua2V5cyhtaW1lcykuZm9yRWFjaChmdW5jdGlvbihtKXtcbiAgICAgIHZhciBwYXJ0cyA9IG0uc3BsaXQoJy8nKTtcbiAgICAgIGlmICh0eXBlcy5pbmRleE9mKHBhcnRzWzBdKSA9PT0gLTEpIHtcbiAgICAgICAgdHlwZXMucHVzaChwYXJ0c1swXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodHlwZXMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmaWxlRXh0XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmZpbGVFeHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlXG4gICAqL1xuICB0aGlzLmZpbGVFeHQgPSBmdW5jdGlvbiAobWltZVR5cGUpIHtcbiAgICB2YXIgZXh0cyA9IFtdO1xuICAgIHZhciBtaW1lcyA9IGZha2VyLmRlZmluaXRpb25zLnN5c3RlbS5taW1lVHlwZXM7XG5cbiAgICAvLyBnZXQgc3BlY2lmaWMgZXh0IGJ5IG1pbWUtdHlwZVxuICAgIGlmICh0eXBlb2YgbWltZXNbbWltZVR5cGVdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChtaW1lc1ttaW1lVHlwZV0uZXh0ZW5zaW9ucyk7XG4gICAgfVxuXG4gICAgLy8gcmVkdWNlIG1pbWUtdHlwZXMgdG8gdGhvc2Ugd2l0aCBmaWxlLWV4dGVuc2lvbnNcbiAgICBPYmplY3Qua2V5cyhtaW1lcykuZm9yRWFjaChmdW5jdGlvbihtKXtcbiAgICAgIGlmIChtaW1lc1ttXS5leHRlbnNpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgbWltZXNbbV0uZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGV4dCl7XG4gICAgICAgICAgZXh0cy5wdXNoKGV4dClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZXh0cyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIG5vdCB5ZXQgaW1wbGVtZW50ZWRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZGlyZWN0b3J5UGF0aFxuICAgKi9cbiAgdGhpcy5kaXJlY3RvcnlQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE9cbiAgfTtcblxuICAvKipcbiAgICogbm90IHlldCBpbXBsZW1lbnRlZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlUGF0aFxuICAgKi9cbiAgdGhpcy5maWxlUGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUT0RPXG4gIH07XG5cbiAgLyoqXG4gICAqIHNlbXZlclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5zZW12ZXJcbiAgICovXG4gIHRoaXMuc2VtdmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFtmYWtlci5yYW5kb20ubnVtYmVyKDkpLFxuICAgICAgICAgICAgICBmYWtlci5yYW5kb20ubnVtYmVyKDkpLFxuICAgICAgICAgICAgICBmYWtlci5yYW5kb20ubnVtYmVyKDkpXS5qb2luKCcuJyk7XG4gIH1cblxufVxuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IFN5c3RlbTtcbiIsInZhciBGYWtlciA9IHJlcXVpcmUoJy4uL2xpYicpO1xudmFyIGZha2VyID0gbmV3IEZha2VyKHsgbG9jYWxlOiAnZW5fVVMnLCBsb2NhbGVGYWxsYmFjazogJ2VuJyB9KTtcbmZha2VyLmxvY2FsZXNbJ2VuX1VTJ10gPSByZXF1aXJlKCcuLi9saWIvbG9jYWxlcy9lbl9VUycpO1xuZmFrZXIubG9jYWxlc1snZW4nXSA9IHJlcXVpcmUoJy4uL2xpYi9sb2NhbGVzL2VuJyk7XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGZha2VyO1xuIiwiLy8gdGhpcyBwcm9ncmFtIGlzIGEgSmF2YVNjcmlwdCB2ZXJzaW9uIG9mIE1lcnNlbm5lIFR3aXN0ZXIsIHdpdGggY29uY2VhbG1lbnQgYW5kIGVuY2Fwc3VsYXRpb24gaW4gY2xhc3MsXG4vLyBhbiBhbG1vc3Qgc3RyYWlnaHQgY29udmVyc2lvbiBmcm9tIHRoZSBvcmlnaW5hbCBwcm9ncmFtLCBtdDE5OTM3YXIuYyxcbi8vIHRyYW5zbGF0ZWQgYnkgeS4gb2thZGEgb24gSnVseSAxNywgMjAwNi5cbi8vIGFuZCBtb2RpZmllZCBhIGxpdHRsZSBhdCBqdWx5IDIwLCAyMDA2LCBidXQgdGhlcmUgYXJlIG5vdCBhbnkgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZXMuXG4vLyBpbiB0aGlzIHByb2dyYW0sIHByb2NlZHVyZSBkZXNjcmlwdGlvbnMgYW5kIGNvbW1lbnRzIG9mIG9yaWdpbmFsIHNvdXJjZSBjb2RlIHdlcmUgbm90IHJlbW92ZWQuXG4vLyBsaW5lcyBjb21tZW50ZWQgd2l0aCAvL2MvLyB3ZXJlIG9yaWdpbmFsbHkgZGVzY3JpcHRpb25zIG9mIGMgcHJvY2VkdXJlLiBhbmQgYSBmZXcgZm9sbG93aW5nIGxpbmVzIGFyZSBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0IGRlc2NyaXB0aW9ucy5cbi8vIGxpbmVzIGNvbW1lbnRlZCB3aXRoIC8qIGFuZCAqLyBhcmUgb3JpZ2luYWwgY29tbWVudHMuXG4vLyBsaW5lcyBjb21tZW50ZWQgd2l0aCAvLyBhcmUgYWRkaXRpb25hbCBjb21tZW50cyBpbiB0aGlzIEphdmFTY3JpcHQgdmVyc2lvbi5cbi8vIGJlZm9yZSB1c2luZyB0aGlzIHZlcnNpb24sIGNyZWF0ZSBhdCBsZWFzdCBvbmUgaW5zdGFuY2Ugb2YgTWVyc2VubmVUd2lzdGVyMTk5MzcgY2xhc3MsIGFuZCBpbml0aWFsaXplIHRoZSBlYWNoIHN0YXRlLCBnaXZlbiBiZWxvdyBpbiBjIGNvbW1lbnRzLCBvZiBhbGwgdGhlIGluc3RhbmNlcy5cbi8qXG4gICBBIEMtcHJvZ3JhbSBmb3IgTVQxOTkzNywgd2l0aCBpbml0aWFsaXphdGlvbiBpbXByb3ZlZCAyMDAyLzEvMjYuXG4gICBDb2RlZCBieSBUYWt1amkgTmlzaGltdXJhIGFuZCBNYWtvdG8gTWF0c3Vtb3RvLlxuXG4gICBCZWZvcmUgdXNpbmcsIGluaXRpYWxpemUgdGhlIHN0YXRlIGJ5IHVzaW5nIGluaXRfZ2VucmFuZChzZWVkKVxuICAgb3IgaW5pdF9ieV9hcnJheShpbml0X2tleSwga2V5X2xlbmd0aCkuXG5cbiAgIENvcHlyaWdodCAoQykgMTk5NyAtIDIwMDIsIE1ha290byBNYXRzdW1vdG8gYW5kIFRha3VqaSBOaXNoaW11cmEsXG4gICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgYXJlIG1ldDpcblxuICAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgIDMuIFRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGVcbiAgICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuXG4gICAgICAgIHBlcm1pc3Npb24uXG5cbiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAgIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SXG4gICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCxcbiAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTyxcbiAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cblxuICAgQW55IGZlZWRiYWNrIGlzIHZlcnkgd2VsY29tZS5cbiAgIGh0dHA6Ly93d3cubWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAvfm0tbWF0L01UL2VtdC5odG1sXG4gICBlbWFpbDogbS1tYXQgQCBtYXRoLnNjaS5oaXJvc2hpbWEtdS5hYy5qcCAocmVtb3ZlIHNwYWNlKVxuKi9cblxuZnVuY3Rpb24gTWVyc2VubmVUd2lzdGVyMTk5MzcoKVxue1xuXHQvKiBjb25zdGFudHMgc2hvdWxkIGJlIHNjb3BlZCBpbnNpZGUgdGhlIGNsYXNzICovXG5cdHZhciBOLCBNLCBNQVRSSVhfQSwgVVBQRVJfTUFTSywgTE9XRVJfTUFTSztcblx0LyogUGVyaW9kIHBhcmFtZXRlcnMgKi9cblx0Ly9jLy8jZGVmaW5lIE4gNjI0XG5cdC8vYy8vI2RlZmluZSBNIDM5N1xuXHQvL2MvLyNkZWZpbmUgTUFUUklYX0EgMHg5OTA4YjBkZlVMICAgLyogY29uc3RhbnQgdmVjdG9yIGEgKi9cblx0Ly9jLy8jZGVmaW5lIFVQUEVSX01BU0sgMHg4MDAwMDAwMFVMIC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi9cblx0Ly9jLy8jZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqL1xuXHROID0gNjI0O1xuXHRNID0gMzk3O1xuXHRNQVRSSVhfQSA9IDB4OTkwOGIwZGY7ICAgLyogY29uc3RhbnQgdmVjdG9yIGEgKi9cblx0VVBQRVJfTUFTSyA9IDB4ODAwMDAwMDA7IC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi9cblx0TE9XRVJfTUFTSyA9IDB4N2ZmZmZmZmY7IC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqL1xuXHQvL2MvL3N0YXRpYyB1bnNpZ25lZCBsb25nIG10W05dOyAvKiB0aGUgYXJyYXkgZm9yIHRoZSBzdGF0ZSB2ZWN0b3IgICovXG5cdC8vYy8vc3RhdGljIGludCBtdGk9TisxOyAvKiBtdGk9PU4rMSBtZWFucyBtdFtOXSBpcyBub3QgaW5pdGlhbGl6ZWQgKi9cblx0dmFyIG10ID0gbmV3IEFycmF5KE4pOyAgIC8qIHRoZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZlY3RvciAgKi9cblx0dmFyIG10aSA9IE4rMTsgICAgICAgICAgIC8qIG10aT09TisxIG1lYW5zIG10W05dIGlzIG5vdCBpbml0aWFsaXplZCAqL1xuXG5cdGZ1bmN0aW9uIHVuc2lnbmVkMzIgKG4xKSAvLyByZXR1cm5zIGEgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgZnJvbSBhbiBvcGVyYW5kIHRvIHdoaWNoIGFwcGxpZWQgYSBiaXQgb3BlcmF0b3IuXG5cdHtcblx0XHRyZXR1cm4gbjEgPCAwID8gKG4xIF4gVVBQRVJfTUFTSykgKyBVUFBFUl9NQVNLIDogbjE7XG5cdH1cblxuXHRmdW5jdGlvbiBzdWJ0cmFjdGlvbjMyIChuMSwgbjIpIC8vIGVtdWxhdGVzIGxvd2VyZmxvdyBvZiBhIGMgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgdmFyaWFibGUsIGluc3RlYWQgb2YgdGhlIG9wZXJhdG9yIC0uIHRoZXNlIGJvdGggYXJndW1lbnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGV4cHJlc3NpYmxlIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMuXG5cdHtcblx0XHRyZXR1cm4gbjEgPCBuMiA/IHVuc2lnbmVkMzIoKDB4MTAwMDAwMDAwIC0gKG4yIC0gbjEpKSAmIDB4ZmZmZmZmZmYpIDogbjEgLSBuMjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZGl0aW9uMzIgKG4xLCBuMikgLy8gZW11bGF0ZXMgb3ZlcmZsb3cgb2YgYSBjIDMyLWJpdHMgdW5zaWdlZCBpbnRlZ2VyIHZhcmlhYmxlLCBpbnN0ZWFkIG9mIHRoZSBvcGVyYXRvciArLiB0aGVzZSBib3RoIGFyZ3VtZW50cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBleHByZXNzaWJsZSB1c2luZyB1bnNpZ25lZCAzMiBiaXRzLlxuXHR7XG5cdFx0cmV0dXJuIHVuc2lnbmVkMzIoKG4xICsgbjIpICYgMHhmZmZmZmZmZilcblx0fVxuXG5cdGZ1bmN0aW9uIG11bHRpcGxpY2F0aW9uMzIgKG4xLCBuMikgLy8gZW11bGF0ZXMgb3ZlcmZsb3cgb2YgYSBjIDMyLWJpdHMgdW5zaWdlZCBpbnRlZ2VyIHZhcmlhYmxlLCBpbnN0ZWFkIG9mIHRoZSBvcGVyYXRvciAqLiB0aGVzZSBib3RoIGFyZ3VtZW50cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBleHByZXNzaWJsZSB1c2luZyB1bnNpZ25lZCAzMiBiaXRzLlxuXHR7XG5cdFx0dmFyIHN1bSA9IDA7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgKytpKXtcblx0XHRcdGlmICgobjEgPj4+IGkpICYgMHgxKXtcblx0XHRcdFx0c3VtID0gYWRkaXRpb24zMihzdW0sIHVuc2lnbmVkMzIobjIgPDwgaSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3VtO1xuXHR9XG5cblx0LyogaW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi9cblx0Ly9jLy92b2lkIGluaXRfZ2VucmFuZCh1bnNpZ25lZCBsb25nIHMpXG5cdHRoaXMuaW5pdF9nZW5yYW5kID0gZnVuY3Rpb24gKHMpXG5cdHtcblx0XHQvL2MvL210WzBdPSBzICYgMHhmZmZmZmZmZjtcblx0XHRtdFswXT0gdW5zaWduZWQzMihzICYgMHhmZmZmZmZmZik7XG5cdFx0Zm9yIChtdGk9MTsgbXRpPE47IG10aSsrKSB7XG5cdFx0XHRtdFttdGldID1cblx0XHRcdC8vYy8vKDE4MTI0MzMyNTMgKiAobXRbbXRpLTFdIF4gKG10W210aS0xXSA+PiAzMCkpICsgbXRpKTtcblx0XHRcdGFkZGl0aW9uMzIobXVsdGlwbGljYXRpb24zMigxODEyNDMzMjUzLCB1bnNpZ25lZDMyKG10W210aS0xXSBeIChtdFttdGktMV0gPj4+IDMwKSkpLCBtdGkpO1xuXHRcdFx0LyogU2VlIEtudXRoIFRBT0NQIFZvbDIuIDNyZCBFZC4gUC4xMDYgZm9yIG11bHRpcGxpZXIuICovXG5cdFx0XHQvKiBJbiB0aGUgcHJldmlvdXMgdmVyc2lvbnMsIE1TQnMgb2YgdGhlIHNlZWQgYWZmZWN0ICAgKi9cblx0XHRcdC8qIG9ubHkgTVNCcyBvZiB0aGUgYXJyYXkgbXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAqL1xuXHRcdFx0LyogMjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0c3Vtb3RvICAgICAgICAgICAgICovXG5cdFx0XHQvL2MvL210W210aV0gJj0gMHhmZmZmZmZmZjtcblx0XHRcdG10W210aV0gPSB1bnNpZ25lZDMyKG10W210aV0gJiAweGZmZmZmZmZmKTtcblx0XHRcdC8qIGZvciA+MzIgYml0IG1hY2hpbmVzICovXG5cdFx0fVxuXHR9XG5cblx0LyogaW5pdGlhbGl6ZSBieSBhbiBhcnJheSB3aXRoIGFycmF5LWxlbmd0aCAqL1xuXHQvKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovXG5cdC8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqL1xuXHQvKiBzbGlnaHQgY2hhbmdlIGZvciBDKyssIDIwMDQvMi8yNiAqL1xuXHQvL2MvL3ZvaWQgaW5pdF9ieV9hcnJheSh1bnNpZ25lZCBsb25nIGluaXRfa2V5W10sIGludCBrZXlfbGVuZ3RoKVxuXHR0aGlzLmluaXRfYnlfYXJyYXkgPSBmdW5jdGlvbiAoaW5pdF9rZXksIGtleV9sZW5ndGgpXG5cdHtcblx0XHQvL2MvL2ludCBpLCBqLCBrO1xuXHRcdHZhciBpLCBqLCBrO1xuXHRcdC8vYy8vaW5pdF9nZW5yYW5kKDE5NjUwMjE4KTtcblx0XHR0aGlzLmluaXRfZ2VucmFuZCgxOTY1MDIxOCk7XG5cdFx0aT0xOyBqPTA7XG5cdFx0ayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7XG5cdFx0Zm9yICg7IGs7IGstLSkge1xuXHRcdFx0Ly9jLy9tdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1KSlcblx0XHRcdC8vYy8vXHQrIGluaXRfa2V5W2pdICsgajsgLyogbm9uIGxpbmVhciAqL1xuXHRcdFx0bXRbaV0gPSBhZGRpdGlvbjMyKGFkZGl0aW9uMzIodW5zaWduZWQzMihtdFtpXSBeIG11bHRpcGxpY2F0aW9uMzIodW5zaWduZWQzMihtdFtpLTFdIF4gKG10W2ktMV0gPj4+IDMwKSksIDE2NjQ1MjUpKSwgaW5pdF9rZXlbal0pLCBqKTtcblx0XHRcdG10W2ldID1cblx0XHRcdC8vYy8vbXRbaV0gJj0gMHhmZmZmZmZmZjsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi9cblx0XHRcdHVuc2lnbmVkMzIobXRbaV0gJiAweGZmZmZmZmZmKTtcblx0XHRcdGkrKzsgaisrO1xuXHRcdFx0aWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH1cblx0XHRcdGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7XG5cdFx0fVxuXHRcdGZvciAoaz1OLTE7IGs7IGstLSkge1xuXHRcdFx0Ly9jLy9tdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxKSlcblx0XHRcdC8vYy8vLSBpOyAvKiBub24gbGluZWFyICovXG5cdFx0XHRtdFtpXSA9IHN1YnRyYWN0aW9uMzIodW5zaWduZWQzMigoZGJnPW10W2ldKSBeIG11bHRpcGxpY2F0aW9uMzIodW5zaWduZWQzMihtdFtpLTFdIF4gKG10W2ktMV0gPj4+IDMwKSksIDE1NjYwODM5NDEpKSwgaSk7XG5cdFx0XHQvL2MvL210W2ldICY9IDB4ZmZmZmZmZmY7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovXG5cdFx0XHRtdFtpXSA9IHVuc2lnbmVkMzIobXRbaV0gJiAweGZmZmZmZmZmKTtcblx0XHRcdGkrKztcblx0XHRcdGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9XG5cdFx0fVxuXHRcdG10WzBdID0gMHg4MDAwMDAwMDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi9cblx0fVxuXG4gICAgLyogbW92ZWQgb3V0c2lkZSBvZiBnZW5yYW5kX2ludDMyKCkgYnkgandhdHRlIDIwMTAtMTEtMTc7IGdlbmVyYXRlIGxlc3MgZ2FyYmFnZSAqL1xuICAgIHZhciBtYWcwMSA9IFsweDAsIE1BVFJJWF9BXTtcblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovXG5cdC8vYy8vdW5zaWduZWQgbG9uZyBnZW5yYW5kX2ludDMyKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9pbnQzMiA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3Vuc2lnbmVkIGxvbmcgeTtcblx0XHQvL2MvL3N0YXRpYyB1bnNpZ25lZCBsb25nIG1hZzAxWzJdPXsweDBVTCwgTUFUUklYX0F9O1xuXHRcdHZhciB5O1xuXHRcdC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi9cblxuXHRcdGlmIChtdGkgPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovXG5cdFx0XHQvL2MvL2ludCBraztcblx0XHRcdHZhciBraztcblxuXHRcdFx0aWYgKG10aSA9PSBOKzEpICAgLyogaWYgaW5pdF9nZW5yYW5kKCkgaGFzIG5vdCBiZWVuIGNhbGxlZCwgKi9cblx0XHRcdFx0Ly9jLy9pbml0X2dlbnJhbmQoNTQ4OSk7IC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAqL1xuXHRcdFx0XHR0aGlzLmluaXRfZ2VucmFuZCg1NDg5KTsgLyogYSBkZWZhdWx0IGluaXRpYWwgc2VlZCBpcyB1c2VkICovXG5cblx0XHRcdGZvciAoa2s9MDtrazxOLU07a2srKykge1xuXHRcdFx0XHQvL2MvL3kgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKTtcblx0XHRcdFx0Ly9jLy9tdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MV07XG5cdFx0XHRcdHkgPSB1bnNpZ25lZDMyKChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spKTtcblx0XHRcdFx0bXRba2tdID0gdW5zaWduZWQzMihtdFtraytNXSBeICh5ID4+PiAxKSBeIG1hZzAxW3kgJiAweDFdKTtcblx0XHRcdH1cblx0XHRcdGZvciAoO2trPE4tMTtraysrKSB7XG5cdFx0XHRcdC8vYy8veSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spO1xuXHRcdFx0XHQvL2MvL210W2trXSA9IG10W2trKyhNLU4pXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MV07XG5cdFx0XHRcdHkgPSB1bnNpZ25lZDMyKChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spKTtcblx0XHRcdFx0bXRba2tdID0gdW5zaWduZWQzMihtdFtraysoTS1OKV0gXiAoeSA+Pj4gMSkgXiBtYWcwMVt5ICYgMHgxXSk7XG5cdFx0XHR9XG5cdFx0XHQvL2MvL3kgPSAobXRbTi0xXSZVUFBFUl9NQVNLKXwobXRbMF0mTE9XRVJfTUFTSyk7XG5cdFx0XHQvL2MvL210W04tMV0gPSBtdFtNLTFdIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxXTtcblx0XHRcdHkgPSB1bnNpZ25lZDMyKChtdFtOLTFdJlVQUEVSX01BU0spfChtdFswXSZMT1dFUl9NQVNLKSk7XG5cdFx0XHRtdFtOLTFdID0gdW5zaWduZWQzMihtdFtNLTFdIF4gKHkgPj4+IDEpIF4gbWFnMDFbeSAmIDB4MV0pO1xuXHRcdFx0bXRpID0gMDtcblx0XHR9XG5cblx0XHR5ID0gbXRbbXRpKytdO1xuXG5cdFx0LyogVGVtcGVyaW5nICovXG5cdFx0Ly9jLy95IF49ICh5ID4+IDExKTtcblx0XHQvL2MvL3kgXj0gKHkgPDwgNykgJiAweDlkMmM1NjgwO1xuXHRcdC8vYy8veSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAwO1xuXHRcdC8vYy8veSBePSAoeSA+PiAxOCk7XG5cdFx0eSA9IHVuc2lnbmVkMzIoeSBeICh5ID4+PiAxMSkpO1xuXHRcdHkgPSB1bnNpZ25lZDMyKHkgXiAoKHkgPDwgNykgJiAweDlkMmM1NjgwKSk7XG5cdFx0eSA9IHVuc2lnbmVkMzIoeSBeICgoeSA8PCAxNSkgJiAweGVmYzYwMDAwKSk7XG5cdFx0eSA9IHVuc2lnbmVkMzIoeSBeICh5ID4+PiAxOCkpO1xuXG5cdFx0cmV0dXJuIHk7XG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4N2ZmZmZmZmZdLWludGVydmFsICovXG5cdC8vYy8vbG9uZyBnZW5yYW5kX2ludDMxKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9pbnQzMSA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiAoZ2VucmFuZF9pbnQzMigpPj4xKTtcblx0XHRyZXR1cm4gKHRoaXMuZ2VucmFuZF9pbnQzMigpPj4+MSk7XG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDFdLXJlYWwtaW50ZXJ2YWwgKi9cblx0Ly9jLy9kb3VibGUgZ2VucmFuZF9yZWFsMSh2b2lkKVxuXHR0aGlzLmdlbnJhbmRfcmVhbDEgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy9yZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5NS4wKTtcblx0XHRyZXR1cm4gdGhpcy5nZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApO1xuXHRcdC8qIGRpdmlkZWQgYnkgMl4zMi0xICovXG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDEpLXJlYWwtaW50ZXJ2YWwgKi9cblx0Ly9jLy9kb3VibGUgZ2VucmFuZF9yZWFsMih2b2lkKVxuXHR0aGlzLmdlbnJhbmRfcmVhbDIgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy9yZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5Ni4wKTtcblx0XHRyZXR1cm4gdGhpcy5nZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApO1xuXHRcdC8qIGRpdmlkZWQgYnkgMl4zMiAqL1xuXHR9XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiAoMCwxKS1yZWFsLWludGVydmFsICovXG5cdC8vYy8vZG91YmxlIGdlbnJhbmRfcmVhbDModm9pZClcblx0dGhpcy5nZW5yYW5kX3JlYWwzID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vcmV0dXJuICgoZ2VucmFuZF9pbnQzMigpKSArIDAuNSkqKDEuMC80Mjk0OTY3Mjk2LjApO1xuXHRcdHJldHVybiAoKHRoaXMuZ2VucmFuZF9pbnQzMigpKSArIDAuNSkqKDEuMC80Mjk0OTY3Mjk2LjApO1xuXHRcdC8qIGRpdmlkZWQgYnkgMl4zMiAqL1xuXHR9XG5cblx0LyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxKSB3aXRoIDUzLWJpdCByZXNvbHV0aW9uKi9cblx0Ly9jLy9kb3VibGUgZ2VucmFuZF9yZXM1Myh2b2lkKVxuXHR0aGlzLmdlbnJhbmRfcmVzNTMgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy91bnNpZ25lZCBsb25nIGE9Z2VucmFuZF9pbnQzMigpPj41LCBiPWdlbnJhbmRfaW50MzIoKT4+Njtcblx0XHR2YXIgYT10aGlzLmdlbnJhbmRfaW50MzIoKT4+PjUsIGI9dGhpcy5nZW5yYW5kX2ludDMyKCk+Pj42O1xuXHRcdHJldHVybihhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApO1xuXHR9XG5cdC8qIFRoZXNlIHJlYWwgdmVyc2lvbnMgYXJlIGR1ZSB0byBJc2FrdSBXYWRhLCAyMDAyLzAxLzA5IGFkZGVkICovXG59XG5cbi8vICBFeHBvcnRzOiBQdWJsaWMgQVBJXG5cbi8vICBFeHBvcnQgdGhlIHR3aXN0ZXIgY2xhc3NcbmV4cG9ydHMuTWVyc2VubmVUd2lzdGVyMTk5MzcgPSBNZXJzZW5uZVR3aXN0ZXIxOTkzNztcblxuLy8gIEV4cG9ydCBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgcmFuZG9tIG51bWJlcnNcbnZhciBnZW4gPSBuZXcgTWVyc2VubmVUd2lzdGVyMTk5Mzc7XG5nZW4uaW5pdF9nZW5yYW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpICUgMTAwMDAwMDAwMCk7XG5cbi8vIEFkZGVkIG1heCwgbWluIHJhbmdlIGZ1bmN0aW9uYWxpdHksIE1hcmFrIFNxdWlyZXMgU2VwdCAxMSAyMDE0XG5leHBvcnRzLnJhbmQgPSBmdW5jdGlvbihtYXgsIG1pbikge1xuICAgIGlmIChtYXggPT09IHVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICBtaW4gPSAwO1xuICAgICAgICBtYXggPSAzMjc2ODtcbiAgICAgICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGdlbi5nZW5yYW5kX3JlYWwyKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5leHBvcnRzLnNlZWQgPSBmdW5jdGlvbihTKSB7XG4gICAgaWYgKHR5cGVvZihTKSAhPSAnbnVtYmVyJylcbiAgICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZWVkKFMpIG11c3QgdGFrZSBudW1lcmljIGFyZ3VtZW50OyBpcyBcIiArIHR5cGVvZihTKSk7XG4gICAgICAgIH1cbiAgICBnZW4uaW5pdF9nZW5yYW5kKFMpO1xufVxuZXhwb3J0cy5zZWVkX2FycmF5ID0gZnVuY3Rpb24oQSkge1xuICAgIGlmICh0eXBlb2YoQSkgIT0gJ29iamVjdCcpXG4gICAgICAgIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2VlZF9hcnJheShBKSBtdXN0IHRha2UgYXJyYXkgb2YgbnVtYmVyczsgaXMgXCIgKyB0eXBlb2YoQSkpO1xuICAgICAgICB9XG4gICAgZ2VuLmluaXRfYnlfYXJyYXkoQSk7XG59XG4iLCIvKlxuXG5Db3B5cmlnaHQgKGMpIDIwMTItMjAxNCBKZWZmcmV5IE1lYWxvXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZFxuZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbnRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmRcbnRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlXG5Tb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRVxuV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SXG5DT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG5PVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5CYXNlZCBsb29zZWx5IG9uIEx1a2EgUHVzaWMncyBQSFAgU2NyaXB0OiBodHRwOi8vMzYwcGVyY2VudHMuY29tL3Bvc3RzL3BocC1yYW5kb20tdXNlci1hZ2VudC1nZW5lcmF0b3IvXG5cblRoZSBsaWNlbnNlIGZvciB0aGF0IHNjcmlwdCBpcyBhcyBmb2xsb3dzOlxuXG5cIlRIRSBCRUVSLVdBUkUgTElDRU5TRVwiIChSZXZpc2lvbiA0Mik6XG5cbjxwdXNpYzkzQGdtYWlsLmNvbT4gd3JvdGUgdGhpcyBmaWxlLiBBcyBsb25nIGFzIHlvdSByZXRhaW4gdGhpcyBub3RpY2UgeW91IGNhbiBkbyB3aGF0ZXZlciB5b3Ugd2FudCB3aXRoIHRoaXMgc3R1ZmYuXG5JZiB3ZSBtZWV0IHNvbWUgZGF5LCBhbmQgeW91IHRoaW5rIHRoaXMgc3R1ZmYgaXMgd29ydGggaXQsIHlvdSBjYW4gYnV5IG1lIGEgYmVlciBpbiByZXR1cm4uIEx1a2EgUHVzaWNcbiovXG5cbmZ1bmN0aW9uIHJuZChhLCBiKSB7XG4gICAgLy9jYWxsaW5nIHJuZCgpIHdpdGggbm8gYXJndW1lbnRzIGlzIGlkZW50aWNhbCB0byBybmQoMCwgMTAwKVxuICAgIGEgPSBhIHx8IDA7XG4gICAgYiA9IGIgfHwgMTAwO1xuXG4gICAgaWYgKHR5cGVvZiBiID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy9ybmQoaW50IG1pbiwgaW50IG1heCkgcmV0dXJucyBpbnRlZ2VyIGJldHdlZW4gbWluLCBtYXhcbiAgICAgICAgcmV0dXJuIChmdW5jdGlvbiAobWluLCBtYXgpIHtcbiAgICAgICAgICAgIGlmIChtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZXhwZWN0ZWQgbWluIDw9IG1heDsgZ290IG1pbiA9ICcgKyBtaW4gKyAnLCBtYXggPSAnICsgbWF4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xuICAgICAgICB9KGEsIGIpKTtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpID09PSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgICAgLy9yZXR1cm5zIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSBhcnJheSAoYSksIGV2ZW4gd2VpZ2h0aW5nXG4gICAgICAgIHJldHVybiBhW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGEubGVuZ3RoKV07XG4gICAgfVxuXG4gICAgaWYgKGEgJiYgdHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vcmV0dXJucyBhIHJhbmRvbSBrZXkgZnJvbSB0aGUgcGFzc2VkIG9iamVjdDsga2V5cyBhcmUgd2VpZ2h0ZWQgYnkgdGhlIGRlY2ltYWwgcHJvYmFiaWxpdHkgaW4gdGhlaXIgdmFsdWVcbiAgICAgICAgcmV0dXJuIChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICB2YXIgcmFuZCA9IHJuZCgwLCAxMDApIC8gMTAwLCBtaW4gPSAwLCBtYXggPSAwLCBrZXksIHJldHVybl92YWw7XG5cbiAgICAgICAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBtYXggPSBvYmpba2V5XSArIG1pbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbCA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmQgPj0gbWluICYmIHJhbmQgPD0gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBtaW4gKyBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXR1cm5fdmFsO1xuICAgICAgICB9KGEpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8gcm5kLiAoJyArIChiID8gYSArICcsICcgKyBiIDogYSkgKyAnKScpO1xufVxuXG5mdW5jdGlvbiByYW5kb21MYW5nKCkge1xuICAgIHJldHVybiBybmQoWydBQicsICdBRicsICdBTicsICdBUicsICdBUycsICdBWicsICdCRScsICdCRycsICdCTicsICdCTycsICdCUicsICdCUycsICdDQScsICdDRScsICdDTycsICdDUycsXG4gICAgICAgICAgICAgICAgJ0NVJywgJ0NZJywgJ0RBJywgJ0RFJywgJ0VMJywgJ0VOJywgJ0VPJywgJ0VTJywgJ0VUJywgJ0VVJywgJ0ZBJywgJ0ZJJywgJ0ZKJywgJ0ZPJywgJ0ZSJywgJ0ZZJyxcbiAgICAgICAgICAgICAgICAnR0EnLCAnR0QnLCAnR0wnLCAnR1YnLCAnSEUnLCAnSEknLCAnSFInLCAnSFQnLCAnSFUnLCAnSFknLCAnSUQnLCAnSVMnLCAnSVQnLCAnSkEnLCAnSlYnLCAnS0EnLFxuICAgICAgICAgICAgICAgICdLRycsICdLTycsICdLVScsICdLVycsICdLWScsICdMQScsICdMQicsICdMSScsICdMTicsICdMVCcsICdMVicsICdNRycsICdNSycsICdNTicsICdNTycsICdNUycsXG4gICAgICAgICAgICAgICAgJ01UJywgJ01ZJywgJ05CJywgJ05FJywgJ05MJywgJ05OJywgJ05PJywgJ09DJywgJ1BMJywgJ1BUJywgJ1JNJywgJ1JPJywgJ1JVJywgJ1NDJywgJ1NFJywgJ1NLJyxcbiAgICAgICAgICAgICAgICAnU0wnLCAnU08nLCAnU1EnLCAnU1InLCAnU1YnLCAnU1cnLCAnVEsnLCAnVFInLCAnVFknLCAnVUsnLCAnVVInLCAnVVonLCAnVkknLCAnVk8nLCAnWUknLCAnWkgnXSk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbUJyb3dzZXJBbmRPUygpIHtcbiAgICB2YXIgYnJvd3NlciA9IHJuZCh7XG4gICAgICAgIGNocm9tZTogICAgLjQ1MTMyODEwNTY2LFxuICAgICAgICBpZXhwbG9yZXI6IC4yNzQ3NzA2MTgzNixcbiAgICAgICAgZmlyZWZveDogICAuMTkzODQxNzA2MDgsXG4gICAgICAgIHNhZmFyaTogICAgLjA2MTg2NzgxMTE4LFxuICAgICAgICBvcGVyYTogICAgIC4wMTU3NDIzNjk1NVxuICAgIH0pLFxuICAgIG9zID0ge1xuICAgICAgICBjaHJvbWU6ICB7d2luOiAuODksICBtYWM6IC4wOSAsIGxpbjogLjAyfSxcbiAgICAgICAgZmlyZWZveDoge3dpbjogLjgzLCAgbWFjOiAuMTYsICBsaW46IC4wMX0sXG4gICAgICAgIG9wZXJhOiAgIHt3aW46IC45MSwgIG1hYzogLjAzICwgbGluOiAuMDZ9LFxuICAgICAgICBzYWZhcmk6ICB7d2luOiAuMDQgLCBtYWM6IC45NiAgfSxcbiAgICAgICAgaWV4cGxvcmVyOiBbJ3dpbiddXG4gICAgfTtcblxuICAgIHJldHVybiBbYnJvd3Nlciwgcm5kKG9zW2Jyb3dzZXJdKV07XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVByb2MoYXJjaCkge1xuICAgIHZhciBwcm9jcyA9IHtcbiAgICAgICAgbGluOlsnaTY4NicsICd4ODZfNjQnXSxcbiAgICAgICAgbWFjOiB7J0ludGVsJyA6IC40OCwgJ1BQQyc6IC4wMSwgJ1U7IEludGVsJzouNDgsICdVOyBQUEMnIDouMDF9LFxuICAgICAgICB3aW46WycnLCAnV09XNjQnLCAnV2luNjQ7IHg2NCddXG4gICAgfTtcbiAgICByZXR1cm4gcm5kKHByb2NzW2FyY2hdKTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tUmV2aXNpb24oZG90cykge1xuICAgIHZhciByZXR1cm5fdmFsID0gJyc7XG4gICAgLy9nZW5lcmF0ZSBhIHJhbmRvbSByZXZpc2lvblxuICAgIC8vZG90cyA9IDIgcmV0dXJucyAueC55IHdoZXJlIHggJiB5IGFyZSBiZXR3ZWVuIDAgYW5kIDlcbiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGRvdHM7IHgrKykge1xuICAgICAgICByZXR1cm5fdmFsICs9ICcuJyArIHJuZCgwLCA5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVybl92YWw7XG59XG5cbnZhciB2ZXJzaW9uX3N0cmluZyA9IHtcbiAgICBuZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtybmQoMSwgNCksIHJuZCgwLCA5KSwgcm5kKDEwMDAwLCA5OTk5OSksIHJuZCgwLCA5KV0uam9pbignLicpO1xuICAgIH0sXG4gICAgbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCg1LCA2KSArICcuJyArIHJuZCgwLCAzKTtcbiAgICB9LFxuICAgIGllOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoNywgMTEpO1xuICAgIH0sXG4gICAgdHJpZGVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDMsIDcpICsgJy4nICsgcm5kKDAsIDEpO1xuICAgIH0sXG4gICAgb3N4OiBmdW5jdGlvbiAoZGVsaW0pIHtcbiAgICAgICAgcmV0dXJuIFsxMCwgcm5kKDUsIDEwKSwgcm5kKDAsIDkpXS5qb2luKGRlbGltIHx8ICcuJyk7XG4gICAgfSxcbiAgICBjaHJvbWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtybmQoMTMsIDM5KSwgMCwgcm5kKDgwMCwgODk5KSwgMF0uam9pbignLicpO1xuICAgIH0sXG4gICAgcHJlc3RvOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnMi45LicgKyBybmQoMTYwLCAxOTApO1xuICAgIH0sXG4gICAgcHJlc3RvMjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDEwLCAxMikgKyAnLjAwJztcbiAgICB9LFxuICAgIHNhZmFyaTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDUzMSwgNTM4KSArICcuJyArIHJuZCgwLCAyKSArICcuJyArIHJuZCgwLDIpO1xuICAgIH1cbn07XG5cbnZhciBicm93c2VyID0ge1xuICAgIGZpcmVmb3g6IGZ1bmN0aW9uIGZpcmVmb3goYXJjaCkge1xuICAgICAgICAvL2h0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2Vja29fdXNlcl9hZ2VudF9zdHJpbmdfcmVmZXJlbmNlXG4gICAgICAgIHZhciBmaXJlZm94X3ZlciA9IHJuZCg1LCAxNSkgKyByYW5kb21SZXZpc2lvbigyKSxcbiAgICAgICAgICAgIGdlY2tvX3ZlciA9ICdHZWNrby8yMDEwMDEwMSBGaXJlZm94LycgKyBmaXJlZm94X3ZlcixcbiAgICAgICAgICAgIHByb2MgPSByYW5kb21Qcm9jKGFyY2gpLFxuICAgICAgICAgICAgb3NfdmVyID0gKGFyY2ggPT09ICd3aW4nKSA/ICcoV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICgocHJvYykgPyAnOyAnICsgcHJvYyA6ICcnKVxuICAgICAgICAgICAgOiAoYXJjaCA9PT0gJ21hYycpID8gJyhNYWNpbnRvc2g7ICcgKyBwcm9jICsgJyBNYWMgT1MgWCAnICsgdmVyc2lvbl9zdHJpbmcub3N4KClcbiAgICAgICAgICAgIDogJyhYMTE7IExpbnV4ICcgKyBwcm9jO1xuXG4gICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgJyArIG9zX3ZlciArICc7IHJ2OicgKyBmaXJlZm94X3Zlci5zbGljZSgwLCAtMikgKyAnKSAnICsgZ2Vja29fdmVyO1xuICAgIH0sXG5cbiAgICBpZXhwbG9yZXI6IGZ1bmN0aW9uIGlleHBsb3JlcigpIHtcbiAgICAgICAgdmFyIHZlciA9IHZlcnNpb25fc3RyaW5nLmllKCk7XG5cbiAgICAgICAgaWYgKHZlciA+PSAxMSkge1xuICAgICAgICAgICAgLy9odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg4NjkzMDEodj12cy44NSkuYXNweFxuICAgICAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LicgKyBybmQoMSwzKSArICc7IFRyaWRlbnQvNy4wOyAnICsgcm5kKFsnVG91Y2g7ICcsICcnXSkgKyAncnY6MTEuMCkgbGlrZSBHZWNrbyc7XG4gICAgICAgIH1cblxuICAgICAgICAvL2h0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9tczUzNzUwMyh2PXZzLjg1KS5hc3B4XG4gICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgJyArIHZlciArICcuMDsgV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICc7IFRyaWRlbnQvJyArXG4gICAgICAgICAgICB2ZXJzaW9uX3N0cmluZy50cmlkZW50KCkgKyAoKHJuZCgwLCAxKSA9PT0gMSkgPyAnOyAuTkVUIENMUiAnICsgdmVyc2lvbl9zdHJpbmcubmV0KCkgOiAnJykgKyAnKSc7XG4gICAgfSxcblxuICAgIG9wZXJhOiBmdW5jdGlvbiBvcGVyYShhcmNoKSB7XG4gICAgICAgIC8vaHR0cDovL3d3dy5vcGVyYS5jb20vZG9jcy9oaXN0b3J5L1xuICAgICAgICB2YXIgcHJlc3RvX3ZlciA9ICcgUHJlc3RvLycgKyB2ZXJzaW9uX3N0cmluZy5wcmVzdG8oKSArICcgVmVyc2lvbi8nICsgdmVyc2lvbl9zdHJpbmcucHJlc3RvMigpICsgJyknLFxuICAgICAgICAgICAgb3NfdmVyID0gKGFyY2ggPT09ICd3aW4nKSA/ICcoV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICc7IFU7ICcgKyByYW5kb21MYW5nKCkgKyBwcmVzdG9fdmVyXG4gICAgICAgICAgICA6IChhcmNoID09PSAnbGluJykgPyAnKFgxMTsgTGludXggJyArIHJhbmRvbVByb2MoYXJjaCkgKyAnOyBVOyAnICsgcmFuZG9tTGFuZygpICsgcHJlc3RvX3ZlclxuICAgICAgICAgICAgOiAnKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggJyArIHZlcnNpb25fc3RyaW5nLm9zeCgpICsgJyBVOyAnICsgcmFuZG9tTGFuZygpICsgJyBQcmVzdG8vJyArXG4gICAgICAgICAgICB2ZXJzaW9uX3N0cmluZy5wcmVzdG8oKSArICcgVmVyc2lvbi8nICsgdmVyc2lvbl9zdHJpbmcucHJlc3RvMigpICsgJyknO1xuXG4gICAgICAgIHJldHVybiAnT3BlcmEvJyArIHJuZCg5LCAxNCkgKyAnLicgKyBybmQoMCwgOTkpICsgJyAnICsgb3NfdmVyO1xuICAgIH0sXG5cbiAgICBzYWZhcmk6IGZ1bmN0aW9uIHNhZmFyaShhcmNoKSB7XG4gICAgICAgIHZhciBzYWZhcmkgPSB2ZXJzaW9uX3N0cmluZy5zYWZhcmkoKSxcbiAgICAgICAgICAgIHZlciA9IHJuZCg0LCA3KSArICcuJyArIHJuZCgwLDEpICsgJy4nICsgcm5kKDAsMTApLFxuICAgICAgICAgICAgb3NfdmVyID0gKGFyY2ggPT09ICdtYWMnKSA/ICcoTWFjaW50b3NoOyAnICsgcmFuZG9tUHJvYygnbWFjJykgKyAnIE1hYyBPUyBYICcrIHZlcnNpb25fc3RyaW5nLm9zeCgnXycpICsgJyBydjonICsgcm5kKDIsIDYpICsgJy4wOyAnKyByYW5kb21MYW5nKCkgKyAnKSAnXG4gICAgICAgICAgICA6ICcoV2luZG93czsgVTsgV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICcpJztcblxuICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wICcgKyBvc192ZXIgKyAnQXBwbGVXZWJLaXQvJyArIHNhZmFyaSArICcgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLycgKyB2ZXIgKyAnIFNhZmFyaS8nICsgc2FmYXJpO1xuICAgIH0sXG5cbiAgICBjaHJvbWU6IGZ1bmN0aW9uIGNocm9tZShhcmNoKSB7XG4gICAgICAgIHZhciBzYWZhcmkgPSB2ZXJzaW9uX3N0cmluZy5zYWZhcmkoKSxcbiAgICAgICAgICAgIG9zX3ZlciA9IChhcmNoID09PSAnbWFjJykgPyAnKE1hY2ludG9zaDsgJyArIHJhbmRvbVByb2MoJ21hYycpICsgJyBNYWMgT1MgWCAnICsgdmVyc2lvbl9zdHJpbmcub3N4KCdfJykgKyAnKSAnXG4gICAgICAgICAgICA6IChhcmNoID09PSAnd2luJykgPyAnKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgJyArIHZlcnNpb25fc3RyaW5nLm50KCkgKyAnKSdcbiAgICAgICAgICAgIDogJyhYMTE7IExpbnV4ICcgKyByYW5kb21Qcm9jKGFyY2gpO1xuXG4gICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgJyArIG9zX3ZlciArICcgQXBwbGVXZWJLaXQvJyArIHNhZmFyaSArICcgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvJyArIHZlcnNpb25fc3RyaW5nLmNocm9tZSgpICsgJyBTYWZhcmkvJyArIHNhZmFyaTtcbiAgICB9XG59O1xuXG5leHBvcnRzLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUoKSB7XG4gICAgdmFyIHJhbmRvbSA9IHJhbmRvbUJyb3dzZXJBbmRPUygpO1xuICAgIHJldHVybiBicm93c2VyW3JhbmRvbVswXV0ocmFuZG9tWzFdKTtcbn07XG4iLCJmdW5jdGlvbiBmb3JtYXQoZm10KSB7XG4gIHZhciByZSA9IC8oJT8pKCUoW2pkc10pKS9nXG4gICAgLCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgaWYoYXJncy5sZW5ndGgpIHtcbiAgICBmbXQgPSBmbXQucmVwbGFjZShyZSwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZWQsIHB0biwgZmxhZykge1xuICAgICAgdmFyIGFyZyA9IGFyZ3Muc2hpZnQoKTtcbiAgICAgIHN3aXRjaChmbGFnKSB7XG4gICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGFyZyA9ICcnICsgYXJnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICBhcmcgPSBOdW1iZXIoYXJnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgYXJnID0gSlNPTi5zdHJpbmdpZnkoYXJnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmKCFlc2NhcGVkKSB7XG4gICAgICAgIHJldHVybiBhcmc7IFxuICAgICAgfVxuICAgICAgYXJncy51bnNoaWZ0KGFyZyk7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSlcbiAgfVxuXG4gIC8vIGFyZ3VtZW50cyByZW1haW4gYWZ0ZXIgZm9ybWF0dGluZ1xuICBpZihhcmdzLmxlbmd0aCkge1xuICAgIGZtdCArPSAnICcgKyBhcmdzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSBlc2NhcGVkICUlIHZhbHVlc1xuICBmbXQgPSBmbXQucmVwbGFjZSgvJXsyLDJ9L2csICclJyk7XG5cbiAgcmV0dXJuICcnICsgZm10O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvcm1hdDtcbiIsInZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpXG52YXIgdXJsID0gcmVxdWlyZSgndXJsJylcblxudmFyIGh0dHBzID0gbW9kdWxlLmV4cG9ydHNcblxuZm9yICh2YXIga2V5IGluIGh0dHApIHtcbiAgaWYgKGh0dHAuaGFzT3duUHJvcGVydHkoa2V5KSkgaHR0cHNba2V5XSA9IGh0dHBba2V5XVxufVxuXG5odHRwcy5yZXF1ZXN0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2IpIHtcbiAgcGFyYW1zID0gdmFsaWRhdGVQYXJhbXMocGFyYW1zKVxuICByZXR1cm4gaHR0cC5yZXF1ZXN0LmNhbGwodGhpcywgcGFyYW1zLCBjYilcbn1cblxuaHR0cHMuZ2V0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2IpIHtcbiAgcGFyYW1zID0gdmFsaWRhdGVQYXJhbXMocGFyYW1zKVxuICByZXR1cm4gaHR0cC5nZXQuY2FsbCh0aGlzLCBwYXJhbXMsIGNiKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVBhcmFtcyAocGFyYW1zKSB7XG4gIGlmICh0eXBlb2YgcGFyYW1zID09PSAnc3RyaW5nJykge1xuICAgIHBhcmFtcyA9IHVybC5wYXJzZShwYXJhbXMpXG4gIH1cbiAgaWYgKCFwYXJhbXMucHJvdG9jb2wpIHtcbiAgICBwYXJhbXMucHJvdG9jb2wgPSAnaHR0cHM6J1xuICB9XG4gIGlmIChwYXJhbXMucHJvdG9jb2wgIT09ICdodHRwczonKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcm90b2NvbCBcIicgKyBwYXJhbXMucHJvdG9jb2wgKyAnXCIgbm90IHN1cHBvcnRlZC4gRXhwZWN0ZWQgXCJodHRwczpcIicpXG4gIH1cbiAgcmV0dXJuIHBhcmFtc1xufVxuIiwiZXhwb3J0cy5yZWFkID0gZnVuY3Rpb24gKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSAoZSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSAobSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnRzLndyaXRlID0gZnVuY3Rpb24gKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICgodmFsdWUgKiBjKSAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwiLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuXG4vLyBUaGUgX2lzQnVmZmVyIGNoZWNrIGlzIGZvciBTYWZhcmkgNS03IHN1cHBvcnQsIGJlY2F1c2UgaXQncyBtaXNzaW5nXG4vLyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLiBSZW1vdmUgdGhpcyBldmVudHVhbGx5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIChpc0J1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopIHx8ICEhb2JqLl9pc0J1ZmZlcilcbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0J1ZmZlcihvYmouc2xpY2UoMCwgMCkpXG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgeWFtbCA9IHJlcXVpcmUoJy4vbGliL2pzLXlhbWwuanMnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHlhbWw7XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIGxvYWRlciA9IHJlcXVpcmUoJy4vanMteWFtbC9sb2FkZXInKTtcbnZhciBkdW1wZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvZHVtcGVyJyk7XG5cblxuZnVuY3Rpb24gZGVwcmVjYXRlZChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiAnICsgbmFtZSArICcgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQuJyk7XG4gIH07XG59XG5cblxubW9kdWxlLmV4cG9ydHMuVHlwZSAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC90eXBlJyk7XG5tb2R1bGUuZXhwb3J0cy5TY2hlbWEgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYScpO1xubW9kdWxlLmV4cG9ydHMuRkFJTFNBRkVfU0NIRU1BICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkpTT05fU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2pzb24nKTtcbm1vZHVsZS5leHBvcnRzLkNPUkVfU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2NvcmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICAgICAgICAgID0gbG9hZGVyLmxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICAgICAgICAgID0gbG9hZGVyLmxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZCAgICAgICAgICAgID0gbG9hZGVyLnNhZmVMb2FkO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLmR1bXAgICAgICAgICAgICAgICAgPSBkdW1wZXIuZHVtcDtcbm1vZHVsZS5leHBvcnRzLnNhZmVEdW1wICAgICAgICAgICAgPSBkdW1wZXIuc2FmZUR1bXA7XG5tb2R1bGUuZXhwb3J0cy5ZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL2V4Y2VwdGlvbicpO1xuXG4vLyBEZXByZWNhdGVkIHNjaGVtYSBuYW1lcyBmcm9tIEpTLVlBTUwgMi4wLnhcbm1vZHVsZS5leHBvcnRzLk1JTklNQUxfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuU0FGRV9TQ0hFTUEgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xuXG4vLyBEZXByZWNhdGVkIGZ1bmN0aW9ucyBmcm9tIEpTLVlBTUwgMS54Lnhcbm1vZHVsZS5leHBvcnRzLnNjYW4gICAgICAgICAgID0gZGVwcmVjYXRlZCgnc2NhbicpO1xubW9kdWxlLmV4cG9ydHMucGFyc2UgICAgICAgICAgPSBkZXByZWNhdGVkKCdwYXJzZScpO1xubW9kdWxlLmV4cG9ydHMuY29tcG9zZSAgICAgICAgPSBkZXByZWNhdGVkKCdjb21wb3NlJyk7XG5tb2R1bGUuZXhwb3J0cy5hZGRDb25zdHJ1Y3RvciA9IGRlcHJlY2F0ZWQoJ2FkZENvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cblxuZnVuY3Rpb24gaXNOb3RoaW5nKHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ3VuZGVmaW5lZCcpIHx8IChzdWJqZWN0ID09PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICdvYmplY3QnKSAmJiAoc3ViamVjdCAhPT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gdG9BcnJheShzZXF1ZW5jZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShzZXF1ZW5jZSkpIHJldHVybiBzZXF1ZW5jZTtcbiAgZWxzZSBpZiAoaXNOb3RoaW5nKHNlcXVlbmNlKSkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBbIHNlcXVlbmNlIF07XG59XG5cblxuZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCBrZXksIHNvdXJjZUtleXM7XG5cbiAgaWYgKHNvdXJjZSkge1xuICAgIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHNvdXJjZUtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAga2V5ID0gc291cmNlS2V5c1tpbmRleF07XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cblxuZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgY291bnQpIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBjeWNsZTtcblxuICBmb3IgKGN5Y2xlID0gMDsgY3ljbGUgPCBjb3VudDsgY3ljbGUgKz0gMSkge1xuICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmVaZXJvKG51bWJlcikge1xuICByZXR1cm4gKG51bWJlciA9PT0gMCkgJiYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gMSAvIG51bWJlcik7XG59XG5cblxubW9kdWxlLmV4cG9ydHMuaXNOb3RoaW5nICAgICAgPSBpc05vdGhpbmc7XG5tb2R1bGUuZXhwb3J0cy5pc09iamVjdCAgICAgICA9IGlzT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMudG9BcnJheSAgICAgICAgPSB0b0FycmF5O1xubW9kdWxlLmV4cG9ydHMucmVwZWF0ICAgICAgICAgPSByZXBlYXQ7XG5tb2R1bGUuZXhwb3J0cy5pc05lZ2F0aXZlWmVybyA9IGlzTmVnYXRpdmVaZXJvO1xubW9kdWxlLmV4cG9ydHMuZXh0ZW5kICAgICAgICAgPSBleHRlbmQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcblxudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIENIQVJfVEFCICAgICAgICAgICAgICAgICAgPSAweDA5OyAvKiBUYWIgKi9cbnZhciBDSEFSX0xJTkVfRkVFRCAgICAgICAgICAgID0gMHgwQTsgLyogTEYgKi9cbnZhciBDSEFSX1NQQUNFICAgICAgICAgICAgICAgID0gMHgyMDsgLyogU3BhY2UgKi9cbnZhciBDSEFSX0VYQ0xBTUFUSU9OICAgICAgICAgID0gMHgyMTsgLyogISAqL1xudmFyIENIQVJfRE9VQkxFX1FVT1RFICAgICAgICAgPSAweDIyOyAvKiBcIiAqL1xudmFyIENIQVJfU0hBUlAgICAgICAgICAgICAgICAgPSAweDIzOyAvKiAjICovXG52YXIgQ0hBUl9QRVJDRU5UICAgICAgICAgICAgICA9IDB4MjU7IC8qICUgKi9cbnZhciBDSEFSX0FNUEVSU0FORCAgICAgICAgICAgID0gMHgyNjsgLyogJiAqL1xudmFyIENIQVJfU0lOR0xFX1FVT1RFICAgICAgICAgPSAweDI3OyAvKiAnICovXG52YXIgQ0hBUl9BU1RFUklTSyAgICAgICAgICAgICA9IDB4MkE7IC8qICogKi9cbnZhciBDSEFSX0NPTU1BICAgICAgICAgICAgICAgID0gMHgyQzsgLyogLCAqL1xudmFyIENIQVJfTUlOVVMgICAgICAgICAgICAgICAgPSAweDJEOyAvKiAtICovXG52YXIgQ0hBUl9DT0xPTiAgICAgICAgICAgICAgICA9IDB4M0E7IC8qIDogKi9cbnZhciBDSEFSX0dSRUFURVJfVEhBTiAgICAgICAgID0gMHgzRTsgLyogPiAqL1xudmFyIENIQVJfUVVFU1RJT04gICAgICAgICAgICAgPSAweDNGOyAvKiA/ICovXG52YXIgQ0hBUl9DT01NRVJDSUFMX0FUICAgICAgICA9IDB4NDA7IC8qIEAgKi9cbnZhciBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgID0gMHg1QjsgLyogWyAqL1xudmFyIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSAweDVEOyAvKiBdICovXG52YXIgQ0hBUl9HUkFWRV9BQ0NFTlQgICAgICAgICA9IDB4NjA7IC8qIGAgKi9cbnZhciBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVCAgID0gMHg3QjsgLyogeyAqL1xudmFyIENIQVJfVkVSVElDQUxfTElORSAgICAgICAgPSAweDdDOyAvKiB8ICovXG52YXIgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUICA9IDB4N0Q7IC8qIH0gKi9cblxudmFyIEVTQ0FQRV9TRVFVRU5DRVMgPSB7fTtcblxuRVNDQVBFX1NFUVVFTkNFU1sweDAwXSAgID0gJ1xcXFwwJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwN10gICA9ICdcXFxcYSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDhdICAgPSAnXFxcXGInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA5XSAgID0gJ1xcXFx0JztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQV0gICA9ICdcXFxcbic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MEJdICAgPSAnXFxcXHYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBDXSAgID0gJ1xcXFxmJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwRF0gICA9ICdcXFxccic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MUJdICAgPSAnXFxcXGUnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIyXSAgID0gJ1xcXFxcIic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4NUNdICAgPSAnXFxcXFxcXFwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDg1XSAgID0gJ1xcXFxOJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHhBMF0gICA9ICdcXFxcXyc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOF0gPSAnXFxcXEwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIwMjldID0gJ1xcXFxQJztcblxudmFyIERFUFJFQ0FURURfQk9PTEVBTlNfU1lOVEFYID0gW1xuICAneScsICdZJywgJ3llcycsICdZZXMnLCAnWUVTJywgJ29uJywgJ09uJywgJ09OJyxcbiAgJ24nLCAnTicsICdubycsICdObycsICdOTycsICdvZmYnLCAnT2ZmJywgJ09GRidcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZU1hcChzY2hlbWEsIG1hcCkge1xuICB2YXIgcmVzdWx0LCBrZXlzLCBpbmRleCwgbGVuZ3RoLCB0YWcsIHN0eWxlLCB0eXBlO1xuXG4gIGlmIChtYXAgPT09IG51bGwpIHJldHVybiB7fTtcblxuICByZXN1bHQgPSB7fTtcbiAga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHRhZyA9IGtleXNbaW5kZXhdO1xuICAgIHN0eWxlID0gU3RyaW5nKG1hcFt0YWddKTtcblxuICAgIGlmICh0YWcuc2xpY2UoMCwgMikgPT09ICchIScpIHtcbiAgICAgIHRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnLnNsaWNlKDIpO1xuICAgIH1cbiAgICB0eXBlID0gc2NoZW1hLmNvbXBpbGVkVHlwZU1hcFsnZmFsbGJhY2snXVt0YWddO1xuXG4gICAgaWYgKHR5cGUgJiYgX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5zdHlsZUFsaWFzZXMsIHN0eWxlKSkge1xuICAgICAgc3R5bGUgPSB0eXBlLnN0eWxlQWxpYXNlc1tzdHlsZV07XG4gICAgfVxuXG4gICAgcmVzdWx0W3RhZ10gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZUhleChjaGFyYWN0ZXIpIHtcbiAgdmFyIHN0cmluZywgaGFuZGxlLCBsZW5ndGg7XG5cbiAgc3RyaW5nID0gY2hhcmFjdGVyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgPD0gMHhGRikge1xuICAgIGhhbmRsZSA9ICd4JztcbiAgICBsZW5ndGggPSAyO1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkYpIHtcbiAgICBoYW5kbGUgPSAndSc7XG4gICAgbGVuZ3RoID0gNDtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGRkZGRikge1xuICAgIGhhbmRsZSA9ICdVJztcbiAgICBsZW5ndGggPSA4O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdjb2RlIHBvaW50IHdpdGhpbiBhIHN0cmluZyBtYXkgbm90IGJlIGdyZWF0ZXIgdGhhbiAweEZGRkZGRkZGJyk7XG4gIH1cblxuICByZXR1cm4gJ1xcXFwnICsgaGFuZGxlICsgY29tbW9uLnJlcGVhdCgnMCcsIGxlbmd0aCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBTdGF0ZShvcHRpb25zKSB7XG4gIHRoaXMuc2NoZW1hICAgICAgID0gb3B0aW9uc1snc2NoZW1hJ10gfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5pbmRlbnQgICAgICAgPSBNYXRoLm1heCgxLCAob3B0aW9uc1snaW5kZW50J10gfHwgMikpO1xuICB0aGlzLnNraXBJbnZhbGlkICA9IG9wdGlvbnNbJ3NraXBJbnZhbGlkJ10gfHwgZmFsc2U7XG4gIHRoaXMuZmxvd0xldmVsICAgID0gKGNvbW1vbi5pc05vdGhpbmcob3B0aW9uc1snZmxvd0xldmVsJ10pID8gLTEgOiBvcHRpb25zWydmbG93TGV2ZWwnXSk7XG4gIHRoaXMuc3R5bGVNYXAgICAgID0gY29tcGlsZVN0eWxlTWFwKHRoaXMuc2NoZW1hLCBvcHRpb25zWydzdHlsZXMnXSB8fCBudWxsKTtcbiAgdGhpcy5zb3J0S2V5cyAgICAgPSBvcHRpb25zWydzb3J0S2V5cyddIHx8IGZhbHNlO1xuICB0aGlzLmxpbmVXaWR0aCAgICA9IG9wdGlvbnNbJ2xpbmVXaWR0aCddIHx8IDgwO1xuICB0aGlzLm5vUmVmcyAgICAgICA9IG9wdGlvbnNbJ25vUmVmcyddIHx8IGZhbHNlO1xuICB0aGlzLm5vQ29tcGF0TW9kZSA9IG9wdGlvbnNbJ25vQ29tcGF0TW9kZSddIHx8IGZhbHNlO1xuICB0aGlzLmNvbmRlbnNlRmxvdyA9IG9wdGlvbnNbJ2NvbmRlbnNlRmxvdyddIHx8IGZhbHNlO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMuZXhwbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkRXhwbGljaXQ7XG5cbiAgdGhpcy50YWcgPSBudWxsO1xuICB0aGlzLnJlc3VsdCA9ICcnO1xuXG4gIHRoaXMuZHVwbGljYXRlcyA9IFtdO1xuICB0aGlzLnVzZWREdXBsaWNhdGVzID0gbnVsbDtcbn1cblxuLy8gSW5kZW50cyBldmVyeSBsaW5lIGluIGEgc3RyaW5nLiBFbXB0eSBsaW5lcyAoXFxuIG9ubHkpIGFyZSBub3QgaW5kZW50ZWQuXG5mdW5jdGlvbiBpbmRlbnRTdHJpbmcoc3RyaW5nLCBzcGFjZXMpIHtcbiAgdmFyIGluZCA9IGNvbW1vbi5yZXBlYXQoJyAnLCBzcGFjZXMpLFxuICAgICAgcG9zaXRpb24gPSAwLFxuICAgICAgbmV4dCA9IC0xLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBsaW5lLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICBuZXh0ID0gc3RyaW5nLmluZGV4T2YoJ1xcbicsIHBvc2l0aW9uKTtcbiAgICBpZiAobmV4dCA9PT0gLTEpIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24pO1xuICAgICAgcG9zaXRpb24gPSBsZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24sIG5leHQgKyAxKTtcbiAgICAgIHBvc2l0aW9uID0gbmV4dCArIDE7XG4gICAgfVxuXG4gICAgaWYgKGxpbmUubGVuZ3RoICYmIGxpbmUgIT09ICdcXG4nKSByZXN1bHQgKz0gaW5kO1xuXG4gICAgcmVzdWx0ICs9IGxpbmU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCkge1xuICByZXR1cm4gJ1xcbicgKyBjb21tb24ucmVwZWF0KCcgJywgc3RhdGUuaW5kZW50ICogbGV2ZWwpO1xufVxuXG5mdW5jdGlvbiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cikge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwgdHlwZTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbaW5kZXhdO1xuXG4gICAgaWYgKHR5cGUucmVzb2x2ZShzdHIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFszM10gcy13aGl0ZSA6Oj0gcy1zcGFjZSB8IHMtdGFiXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoYykge1xuICByZXR1cm4gYyA9PT0gQ0hBUl9TUEFDRSB8fCBjID09PSBDSEFSX1RBQjtcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgY2FuIGJlIHByaW50ZWQgd2l0aG91dCBlc2NhcGluZy5cbi8vIEZyb20gWUFNTCAxLjI6IFwiYW55IGFsbG93ZWQgY2hhcmFjdGVycyBrbm93biB0byBiZSBub24tcHJpbnRhYmxlXG4vLyBzaG91bGQgYWxzbyBiZSBlc2NhcGVkLiBbSG93ZXZlcixdIFRoaXMgaXNu4oCZdCBtYW5kYXRvcnlcIlxuLy8gRGVyaXZlZCBmcm9tIG5iLWNoYXIgLSBcXHQgLSAjeDg1IC0gI3hBMCAtICN4MjAyOCAtICN4MjAyOS5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKGMpIHtcbiAgcmV0dXJuICAoMHgwMDAyMCA8PSBjICYmIGMgPD0gMHgwMDAwN0UpXG4gICAgICB8fCAoKDB4MDAwQTEgPD0gYyAmJiBjIDw9IDB4MDBEN0ZGKSAmJiBjICE9PSAweDIwMjggJiYgYyAhPT0gMHgyMDI5KVxuICAgICAgfHwgKCgweDBFMDAwIDw9IGMgJiYgYyA8PSAweDAwRkZGRCkgJiYgYyAhPT0gMHhGRUZGIC8qIEJPTSAqLylcbiAgICAgIHx8ICAoMHgxMDAwMCA8PSBjICYmIGMgPD0gMHgxMEZGRkYpO1xufVxuXG4vLyBTaW1wbGlmaWVkIHRlc3QgZm9yIHZhbHVlcyBhbGxvd2VkIGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUuXG5mdW5jdGlvbiBpc1BsYWluU2FmZShjKSB7XG4gIC8vIFVzZXMgYSBzdWJzZXQgb2YgbmItY2hhciAtIGMtZmxvdy1pbmRpY2F0b3IgLSBcIjpcIiAtIFwiI1wiXG4gIC8vIHdoZXJlIG5iLWNoYXIgOjo9IGMtcHJpbnRhYmxlIC0gYi1jaGFyIC0gYy1ieXRlLW9yZGVyLW1hcmsuXG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkZcbiAgICAvLyAtIGMtZmxvdy1pbmRpY2F0b3JcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1BXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gICAgLy8gLSBcIjpcIiAtIFwiI1wiXG4gICAgJiYgYyAhPT0gQ0hBUl9DT0xPTlxuICAgICYmIGMgIT09IENIQVJfU0hBUlA7XG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlRmlyc3QoYykge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5zLWNoYXIgLSBjLWluZGljYXRvclxuICAvLyB3aGVyZSBucy1jaGFyID0gbmItY2hhciAtIHMtd2hpdGUuXG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkZcbiAgICAmJiAhaXNXaGl0ZXNwYWNlKGMpIC8vIC0gcy13aGl0ZVxuICAgIC8vIC0gKGMtaW5kaWNhdG9yIDo6PVxuICAgIC8vIOKAnC3igJ0gfCDigJw/4oCdIHwg4oCcOuKAnSB8IOKAnCzigJ0gfCDigJxb4oCdIHwg4oCcXeKAnSB8IOKAnHvigJ0gfCDigJx94oCdXG4gICAgJiYgYyAhPT0gQ0hBUl9NSU5VU1xuICAgICYmIGMgIT09IENIQVJfUVVFU1RJT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTE9OXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIHwg4oCcI+KAnSB8IOKAnCbigJ0gfCDigJwq4oCdIHwg4oCcIeKAnSB8IOKAnHzigJ0gfCDigJw+4oCdIHwg4oCcJ+KAnSB8IOKAnFwi4oCdXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUFxuICAgICYmIGMgIT09IENIQVJfQU1QRVJTQU5EXG4gICAgJiYgYyAhPT0gQ0hBUl9BU1RFUklTS1xuICAgICYmIGMgIT09IENIQVJfRVhDTEFNQVRJT05cbiAgICAmJiBjICE9PSBDSEFSX1ZFUlRJQ0FMX0xJTkVcbiAgICAmJiBjICE9PSBDSEFSX0dSRUFURVJfVEhBTlxuICAgICYmIGMgIT09IENIQVJfU0lOR0xFX1FVT1RFXG4gICAgJiYgYyAhPT0gQ0hBUl9ET1VCTEVfUVVPVEVcbiAgICAvLyB8IOKAnCXigJ0gfCDigJxA4oCdIHwg4oCcYOKAnSlcbiAgICAmJiBjICE9PSBDSEFSX1BFUkNFTlRcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1FUkNJQUxfQVRcbiAgICAmJiBjICE9PSBDSEFSX0dSQVZFX0FDQ0VOVDtcbn1cblxuLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBpcyByZXF1aXJlZC5cbmZ1bmN0aW9uIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSB7XG4gIHZhciBsZWFkaW5nU3BhY2VSZSA9IC9eXFxuKiAvO1xuICByZXR1cm4gbGVhZGluZ1NwYWNlUmUudGVzdChzdHJpbmcpO1xufVxuXG52YXIgU1RZTEVfUExBSU4gICA9IDEsXG4gICAgU1RZTEVfU0lOR0xFICA9IDIsXG4gICAgU1RZTEVfTElURVJBTCA9IDMsXG4gICAgU1RZTEVfRk9MREVEICA9IDQsXG4gICAgU1RZTEVfRE9VQkxFICA9IDU7XG5cbi8vIERldGVybWluZXMgd2hpY2ggc2NhbGFyIHN0eWxlcyBhcmUgcG9zc2libGUgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBzdHlsZS5cbi8vIGxpbmVXaWR0aCA9IC0xID0+IG5vIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0ci5sZW5ndGggPiAwLlxuLy8gUG9zdC1jb25kaXRpb25zOlxuLy8gICAgU1RZTEVfUExBSU4gb3IgU1RZTEVfU0lOR0xFID0+IG5vIFxcbiBhcmUgaW4gdGhlIHN0cmluZy5cbi8vICAgIFNUWUxFX0xJVEVSQUwgPT4gbm8gbGluZXMgYXJlIHN1aXRhYmxlIGZvciBmb2xkaW5nIChvciBsaW5lV2lkdGggaXMgLTEpLlxuLy8gICAgU1RZTEVfRk9MREVEID0+IGEgbGluZSA+IGxpbmVXaWR0aCBhbmQgY2FuIGJlIGZvbGRlZCAoYW5kIGxpbmVXaWR0aCAhPSAtMSkuXG5mdW5jdGlvbiBjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBpbmRlbnRQZXJMZXZlbCwgbGluZVdpZHRoLCB0ZXN0QW1iaWd1b3VzVHlwZSkge1xuICB2YXIgaTtcbiAgdmFyIGNoYXI7XG4gIHZhciBoYXNMaW5lQnJlYWsgPSBmYWxzZTtcbiAgdmFyIGhhc0ZvbGRhYmxlTGluZSA9IGZhbHNlOyAvLyBvbmx5IGNoZWNrZWQgaWYgc2hvdWxkVHJhY2tXaWR0aFxuICB2YXIgc2hvdWxkVHJhY2tXaWR0aCA9IGxpbmVXaWR0aCAhPT0gLTE7XG4gIHZhciBwcmV2aW91c0xpbmVCcmVhayA9IC0xOyAvLyBjb3VudCB0aGUgZmlyc3QgbGluZSBjb3JyZWN0bHlcbiAgdmFyIHBsYWluID0gaXNQbGFpblNhZmVGaXJzdChzdHJpbmcuY2hhckNvZGVBdCgwKSlcbiAgICAgICAgICAmJiAhaXNXaGl0ZXNwYWNlKHN0cmluZy5jaGFyQ29kZUF0KHN0cmluZy5sZW5ndGggLSAxKSk7XG5cbiAgaWYgKHNpbmdsZUxpbmVPbmx5KSB7XG4gICAgLy8gQ2FzZTogbm8gYmxvY2sgc3R5bGVzLlxuICAgIC8vIENoZWNrIGZvciBkaXNhbGxvd2VkIGNoYXJhY3RlcnMgdG8gcnVsZSBvdXQgcGxhaW4gYW5kIHNpbmdsZS5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBDYXNlOiBibG9jayBzdHlsZXMgcGVybWl0dGVkLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjaGFyID09PSBDSEFSX0xJTkVfRkVFRCkge1xuICAgICAgICBoYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkgbGluZSBjYW4gYmUgZm9sZGVkLlxuICAgICAgICBpZiAoc2hvdWxkVHJhY2tXaWR0aCkge1xuICAgICAgICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fFxuICAgICAgICAgICAgLy8gRm9sZGFibGUgbGluZSA9IHRvbyBsb25nLCBhbmQgbm90IG1vcmUtaW5kZW50ZWQuXG4gICAgICAgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpO1xuICAgICAgICAgIHByZXZpb3VzTGluZUJyZWFrID0gaTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhcik7XG4gICAgfVxuICAgIC8vIGluIGNhc2UgdGhlIGVuZCBpcyBtaXNzaW5nIGEgXFxuXG4gICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8IChzaG91bGRUcmFja1dpZHRoICYmXG4gICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpKTtcbiAgfVxuICAvLyBBbHRob3VnaCBldmVyeSBzdHlsZSBjYW4gcmVwcmVzZW50IFxcbiB3aXRob3V0IGVzY2FwaW5nLCBwcmVmZXIgYmxvY2sgc3R5bGVzXG4gIC8vIGZvciBtdWx0aWxpbmUsIHNpbmNlIHRoZXkncmUgbW9yZSByZWFkYWJsZSBhbmQgdGhleSBkb24ndCBhZGQgZW1wdHkgbGluZXMuXG4gIC8vIEFsc28gcHJlZmVyIGZvbGRpbmcgYSBzdXBlci1sb25nIGxpbmUuXG4gIGlmICghaGFzTGluZUJyZWFrICYmICFoYXNGb2xkYWJsZUxpbmUpIHtcbiAgICAvLyBTdHJpbmdzIGludGVycHJldGFibGUgYXMgYW5vdGhlciB0eXBlIGhhdmUgdG8gYmUgcXVvdGVkO1xuICAgIC8vIGUuZy4gdGhlIHN0cmluZyAndHJ1ZScgdnMuIHRoZSBib29sZWFuIHRydWUuXG4gICAgcmV0dXJuIHBsYWluICYmICF0ZXN0QW1iaWd1b3VzVHlwZShzdHJpbmcpXG4gICAgICA/IFNUWUxFX1BMQUlOIDogU1RZTEVfU0lOR0xFO1xuICB9XG4gIC8vIEVkZ2UgY2FzZTogYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGNhbiBvbmx5IGhhdmUgb25lIGRpZ2l0LlxuICBpZiAoaW5kZW50UGVyTGV2ZWwgPiA5ICYmIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSkge1xuICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gIH1cbiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGJsb2NrIHN0eWxlcyBhcmUgdmFsaWQuXG4gIC8vIFByZWZlciBsaXRlcmFsIHN0eWxlIHVubGVzcyB3ZSB3YW50IHRvIGZvbGQuXG4gIHJldHVybiBoYXNGb2xkYWJsZUxpbmUgPyBTVFlMRV9GT0xERUQgOiBTVFlMRV9MSVRFUkFMO1xufVxuXG4vLyBOb3RlOiBsaW5lIGJyZWFraW5nL2ZvbGRpbmcgaXMgaW1wbGVtZW50ZWQgZm9yIG9ubHkgdGhlIGZvbGRlZCBzdHlsZS5cbi8vIE5CLiBXZSBkcm9wIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUgKGlmIGFueSkgb2YgYSByZXR1cm5lZCBibG9jayBzY2FsYXJcbi8vICBzaW5jZSB0aGUgZHVtcGVyIGFkZHMgaXRzIG93biBuZXdsaW5lLiBUaGlzIGFsd2F5cyB3b3Jrczpcbi8vICAgIOKAoiBObyBlbmRpbmcgbmV3bGluZSA9PiB1bmFmZmVjdGVkOyBhbHJlYWR5IHVzaW5nIHN0cmlwIFwiLVwiIGNob21waW5nLlxuLy8gICAg4oCiIEVuZGluZyBuZXdsaW5lICAgID0+IHJlbW92ZWQgdGhlbiByZXN0b3JlZC5cbi8vICBJbXBvcnRhbnRseSwgdGhpcyBrZWVwcyB0aGUgXCIrXCIgY2hvbXAgaW5kaWNhdG9yIGZyb20gZ2FpbmluZyBhbiBleHRyYSBsaW5lLlxuZnVuY3Rpb24gd3JpdGVTY2FsYXIoc3RhdGUsIHN0cmluZywgbGV2ZWwsIGlza2V5KSB7XG4gIHN0YXRlLmR1bXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCInJ1wiO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLm5vQ29tcGF0TW9kZSAmJlxuICAgICAgICBERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWC5pbmRleE9mKHN0cmluZykgIT09IC0xKSB7XG4gICAgICByZXR1cm4gXCInXCIgKyBzdHJpbmcgKyBcIidcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZW50ID0gc3RhdGUuaW5kZW50ICogTWF0aC5tYXgoMSwgbGV2ZWwpOyAvLyBubyAwLWluZGVudCBzY2FsYXJzXG4gICAgLy8gQXMgaW5kZW50YXRpb24gZ2V0cyBkZWVwZXIsIGxldCB0aGUgd2lkdGggZGVjcmVhc2UgbW9ub3RvbmljYWxseVxuICAgIC8vIHRvIHRoZSBsb3dlciBib3VuZCBtaW4oc3RhdGUubGluZVdpZHRoLCA0MCkuXG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgaW1wbGllc1xuICAgIC8vICBzdGF0ZS5saW5lV2lkdGgg4omkIDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBpcyBmaXhlZCBhdCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCA+IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzIG5hcnJvd2VyIG9wdGlvbnMsXG4gICAgLy8gb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoIHRvIHN1ZGRlbmx5IGluY3JlYXNlLlxuICAgIHZhciBsaW5lV2lkdGggPSBzdGF0ZS5saW5lV2lkdGggPT09IC0xXG4gICAgICA/IC0xIDogTWF0aC5tYXgoTWF0aC5taW4oc3RhdGUubGluZVdpZHRoLCA0MCksIHN0YXRlLmxpbmVXaWR0aCAtIGluZGVudCk7XG5cbiAgICAvLyBXaXRob3V0IGtub3dpbmcgaWYga2V5cyBhcmUgaW1wbGljaXQvZXhwbGljaXQsIGFzc3VtZSBpbXBsaWNpdCBmb3Igc2FmZXR5LlxuICAgIHZhciBzaW5nbGVMaW5lT25seSA9IGlza2V5XG4gICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLlxuICAgICAgfHwgKHN0YXRlLmZsb3dMZXZlbCA+IC0xICYmIGxldmVsID49IHN0YXRlLmZsb3dMZXZlbCk7XG4gICAgZnVuY3Rpb24gdGVzdEFtYmlndWl0eShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cmluZyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBzdGF0ZS5pbmRlbnQsIGxpbmVXaWR0aCwgdGVzdEFtYmlndWl0eSkpIHtcbiAgICAgIGNhc2UgU1RZTEVfUExBSU46XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICBjYXNlIFNUWUxFX1NJTkdMRTpcbiAgICAgICAgcmV0dXJuIFwiJ1wiICsgc3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKSArIFwiJ1wiO1xuICAgICAgY2FzZSBTVFlMRV9MSVRFUkFMOlxuICAgICAgICByZXR1cm4gJ3wnICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoc3RyaW5nLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRk9MREVEOlxuICAgICAgICByZXR1cm4gJz4nICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9ET1VCTEU6XG4gICAgICAgIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cmluZywgbGluZVdpZHRoKSArICdcIic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignaW1wb3NzaWJsZSBlcnJvcjogaW52YWxpZCBzY2FsYXIgc3R5bGUnKTtcbiAgICB9XG4gIH0oKSk7XG59XG5cbi8vIFByZS1jb25kaXRpb25zOiBzdHJpbmcgaXMgdmFsaWQgZm9yIGEgYmxvY2sgc2NhbGFyLCAxIDw9IGluZGVudFBlckxldmVsIDw9IDkuXG5mdW5jdGlvbiBibG9ja0hlYWRlcihzdHJpbmcsIGluZGVudFBlckxldmVsKSB7XG4gIHZhciBpbmRlbnRJbmRpY2F0b3IgPSBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykgPyBTdHJpbmcoaW5kZW50UGVyTGV2ZWwpIDogJyc7XG5cbiAgLy8gbm90ZSB0aGUgc3BlY2lhbCBjYXNlOiB0aGUgc3RyaW5nICdcXG4nIGNvdW50cyBhcyBhIFwidHJhaWxpbmdcIiBlbXB0eSBsaW5lLlxuICB2YXIgY2xpcCA9ICAgICAgICAgIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nO1xuICB2YXIga2VlcCA9IGNsaXAgJiYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMl0gPT09ICdcXG4nIHx8IHN0cmluZyA9PT0gJ1xcbicpO1xuICB2YXIgY2hvbXAgPSBrZWVwID8gJysnIDogKGNsaXAgPyAnJyA6ICctJyk7XG5cbiAgcmV0dXJuIGluZGVudEluZGljYXRvciArIGNob21wICsgJ1xcbic7XG59XG5cbi8vIChTZWUgdGhlIG5vdGUgZm9yIHdyaXRlU2NhbGFyLilcbmZ1bmN0aW9uIGRyb3BFbmRpbmdOZXdsaW5lKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbicgPyBzdHJpbmcuc2xpY2UoMCwgLTEpIDogc3RyaW5nO1xufVxuXG4vLyBOb3RlOiBhIGxvbmcgbGluZSB3aXRob3V0IGEgc3VpdGFibGUgYnJlYWsgcG9pbnQgd2lsbCBleGNlZWQgdGhlIHdpZHRoIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IGV2ZXJ5IGNoYXIgaW4gc3RyIGlzUHJpbnRhYmxlLCBzdHIubGVuZ3RoID4gMCwgd2lkdGggPiAwLlxuZnVuY3Rpb24gZm9sZFN0cmluZyhzdHJpbmcsIHdpZHRoKSB7XG4gIC8vIEluIGZvbGRlZCBzdHlsZSwgJGskIGNvbnNlY3V0aXZlIG5ld2xpbmVzIG91dHB1dCBhcyAkaysxJCBuZXdsaW5lc+KAlFxuICAvLyB1bmxlc3MgdGhleSdyZSBiZWZvcmUgb3IgYWZ0ZXIgYSBtb3JlLWluZGVudGVkIGxpbmUsIG9yIGF0IHRoZSB2ZXJ5XG4gIC8vIGJlZ2lubmluZyBvciBlbmQsIGluIHdoaWNoIGNhc2UgJGskIG1hcHMgdG8gJGskLlxuICAvLyBUaGVyZWZvcmUsIHBhcnNlIGVhY2ggY2h1bmsgYXMgbmV3bGluZShzKSBmb2xsb3dlZCBieSBhIGNvbnRlbnQgbGluZS5cbiAgdmFyIGxpbmVSZSA9IC8oXFxuKykoW15cXG5dKikvZztcblxuICAvLyBmaXJzdCBsaW5lIChwb3NzaWJseSBhbiBlbXB0eSBsaW5lKVxuICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbmV4dExGID0gc3RyaW5nLmluZGV4T2YoJ1xcbicpO1xuICAgIG5leHRMRiA9IG5leHRMRiAhPT0gLTEgPyBuZXh0TEYgOiBzdHJpbmcubGVuZ3RoO1xuICAgIGxpbmVSZS5sYXN0SW5kZXggPSBuZXh0TEY7XG4gICAgcmV0dXJuIGZvbGRMaW5lKHN0cmluZy5zbGljZSgwLCBuZXh0TEYpLCB3aWR0aCk7XG4gIH0oKSk7XG4gIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZmlyc3QgY29udGVudCBsaW5lIHlldCwgZG9uJ3QgYWRkIGFuIGV4dHJhIFxcbi5cbiAgdmFyIHByZXZNb3JlSW5kZW50ZWQgPSBzdHJpbmdbMF0gPT09ICdcXG4nIHx8IHN0cmluZ1swXSA9PT0gJyAnO1xuICB2YXIgbW9yZUluZGVudGVkO1xuXG4gIC8vIHJlc3Qgb2YgdGhlIGxpbmVzXG4gIHZhciBtYXRjaDtcbiAgd2hpbGUgKChtYXRjaCA9IGxpbmVSZS5leGVjKHN0cmluZykpKSB7XG4gICAgdmFyIHByZWZpeCA9IG1hdGNoWzFdLCBsaW5lID0gbWF0Y2hbMl07XG4gICAgbW9yZUluZGVudGVkID0gKGxpbmVbMF0gPT09ICcgJyk7XG4gICAgcmVzdWx0ICs9IHByZWZpeFxuICAgICAgKyAoIXByZXZNb3JlSW5kZW50ZWQgJiYgIW1vcmVJbmRlbnRlZCAmJiBsaW5lICE9PSAnJ1xuICAgICAgICA/ICdcXG4nIDogJycpXG4gICAgICArIGZvbGRMaW5lKGxpbmUsIHdpZHRoKTtcbiAgICBwcmV2TW9yZUluZGVudGVkID0gbW9yZUluZGVudGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR3JlZWR5IGxpbmUgYnJlYWtpbmcuXG4vLyBQaWNrcyB0aGUgbG9uZ2VzdCBsaW5lIHVuZGVyIHRoZSBsaW1pdCBlYWNoIHRpbWUsXG4vLyBvdGhlcndpc2Ugc2V0dGxlcyBmb3IgdGhlIHNob3J0ZXN0IGxpbmUgb3ZlciB0aGUgbGltaXQuXG4vLyBOQi4gTW9yZS1pbmRlbnRlZCBsaW5lcyAqY2Fubm90KiBiZSBmb2xkZWQsIGFzIHRoYXQgd291bGQgYWRkIGFuIGV4dHJhIFxcbi5cbmZ1bmN0aW9uIGZvbGRMaW5lKGxpbmUsIHdpZHRoKSB7XG4gIGlmIChsaW5lID09PSAnJyB8fCBsaW5lWzBdID09PSAnICcpIHJldHVybiBsaW5lO1xuXG4gIC8vIFNpbmNlIGEgbW9yZS1pbmRlbnRlZCBsaW5lIGFkZHMgYSBcXG4sIGJyZWFrcyBjYW4ndCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLlxuICB2YXIgYnJlYWtSZSA9IC8gW14gXS9nOyAvLyBub3RlOiB0aGUgbWF0Y2ggaW5kZXggd2lsbCBhbHdheXMgYmUgPD0gbGVuZ3RoLTIuXG4gIHZhciBtYXRjaDtcbiAgLy8gc3RhcnQgaXMgYW4gaW5jbHVzaXZlIGluZGV4LiBlbmQsIGN1cnIsIGFuZCBuZXh0IGFyZSBleGNsdXNpdmUuXG4gIHZhciBzdGFydCA9IDAsIGVuZCwgY3VyciA9IDAsIG5leHQgPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgLy8gSW52YXJpYW50czogMCA8PSBzdGFydCA8PSBsZW5ndGgtMS5cbiAgLy8gICAwIDw9IGN1cnIgPD0gbmV4dCA8PSBtYXgoMCwgbGVuZ3RoLTIpLiBjdXJyIC0gc3RhcnQgPD0gd2lkdGguXG4gIC8vIEluc2lkZSB0aGUgbG9vcDpcbiAgLy8gICBBIG1hdGNoIGltcGxpZXMgbGVuZ3RoID49IDIsIHNvIGN1cnIgYW5kIG5leHQgYXJlIDw9IGxlbmd0aC0yLlxuICB3aGlsZSAoKG1hdGNoID0gYnJlYWtSZS5leGVjKGxpbmUpKSkge1xuICAgIG5leHQgPSBtYXRjaC5pbmRleDtcbiAgICAvLyBtYWludGFpbiBpbnZhcmlhbnQ6IGN1cnIgLSBzdGFydCA8PSB3aWR0aFxuICAgIGlmIChuZXh0IC0gc3RhcnQgPiB3aWR0aCkge1xuICAgICAgZW5kID0gKGN1cnIgPiBzdGFydCkgPyBjdXJyIDogbmV4dDsgLy8gZGVyaXZlIGVuZCA8PSBsZW5ndGgtMlxuICAgICAgcmVzdWx0ICs9ICdcXG4nICsgbGluZS5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIC8vIHNraXAgdGhlIHNwYWNlIHRoYXQgd2FzIG91dHB1dCBhcyBcXG5cbiAgICAgIHN0YXJ0ID0gZW5kICsgMTsgICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSBzdGFydCA8PSBsZW5ndGgtMVxuICAgIH1cbiAgICBjdXJyID0gbmV4dDtcbiAgfVxuXG4gIC8vIEJ5IHRoZSBpbnZhcmlhbnRzLCBzdGFydCA8PSBsZW5ndGgtMSwgc28gdGhlcmUgaXMgc29tZXRoaW5nIGxlZnQgb3Zlci5cbiAgLy8gSXQgaXMgZWl0aGVyIHRoZSB3aG9sZSBzdHJpbmcgb3IgYSBwYXJ0IHN0YXJ0aW5nIGZyb20gbm9uLXdoaXRlc3BhY2UuXG4gIHJlc3VsdCArPSAnXFxuJztcbiAgLy8gSW5zZXJ0IGEgYnJlYWsgaWYgdGhlIHJlbWFpbmRlciBpcyB0b28gbG9uZyBhbmQgdGhlcmUgaXMgYSBicmVhayBhdmFpbGFibGUuXG4gIGlmIChsaW5lLmxlbmd0aCAtIHN0YXJ0ID4gd2lkdGggJiYgY3VyciA+IHN0YXJ0KSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQsIGN1cnIpICsgJ1xcbicgKyBsaW5lLnNsaWNlKGN1cnIgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpOyAvLyBkcm9wIGV4dHJhIFxcbiBqb2luZXJcbn1cblxuLy8gRXNjYXBlcyBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLlxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjaGFyLCBuZXh0Q2hhcjtcbiAgdmFyIGVzY2FwZVNlcTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAvLyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXJzIChyZWZlcmVuY2UgVW5pY29kZSAzLjAgc2VjdGlvbiBcIjMuNyBTdXJyb2dhdGVzXCIpLlxuICAgIGlmIChjaGFyID49IDB4RDgwMCAmJiBjaGFyIDw9IDB4REJGRi8qIGhpZ2ggc3Vycm9nYXRlICovKSB7XG4gICAgICBuZXh0Q2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgIGlmIChuZXh0Q2hhciA+PSAweERDMDAgJiYgbmV4dENoYXIgPD0gMHhERkZGLyogbG93IHN1cnJvZ2F0ZSAqLykge1xuICAgICAgICAvLyBDb21iaW5lIHRoZSBzdXJyb2dhdGUgcGFpciBhbmQgc3RvcmUgaXQgZXNjYXBlZC5cbiAgICAgICAgcmVzdWx0ICs9IGVuY29kZUhleCgoY2hhciAtIDB4RDgwMCkgKiAweDQwMCArIG5leHRDaGFyIC0gMHhEQzAwICsgMHgxMDAwMCk7XG4gICAgICAgIC8vIEFkdmFuY2UgaW5kZXggb25lIGV4dHJhIHNpbmNlIHdlIGFscmVhZHkgdXNlZCB0aGF0IGNoYXIgaGVyZS5cbiAgICAgICAgaSsrOyBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXNjYXBlU2VxID0gRVNDQVBFX1NFUVVFTkNFU1tjaGFyXTtcbiAgICByZXN1bHQgKz0gIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKVxuICAgICAgPyBzdHJpbmdbaV1cbiAgICAgIDogZXNjYXBlU2VxIHx8IGVuY29kZUhleChjaGFyKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7XG4gIHZhciBfcmVzdWx0ID0gJycsXG4gICAgICBfdGFnICAgID0gc3RhdGUudGFnLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0W2luZGV4XSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgaWYgKGluZGV4ICE9PSAwKSBfcmVzdWx0ICs9ICcsJyArICghc3RhdGUuY29uZGVuc2VGbG93ID8gJyAnIDogJycpO1xuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAnWycgKyBfcmVzdWx0ICsgJ10nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0W2luZGV4XSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGlmICghY29tcGFjdCB8fCBpbmRleCAhPT0gMCkge1xuICAgICAgICBfcmVzdWx0ICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBfcmVzdWx0ICs9ICctJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0gJztcbiAgICAgIH1cblxuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICdbXSc7IC8vIEVtcHR5IHNlcXVlbmNlIGlmIG5vIHZhbGlkIHZhbHVlcy5cbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXJCdWZmZXIgPSBzdGF0ZS5jb25kZW5zZUZsb3cgPyAnXCInIDogJyc7XG5cbiAgICBpZiAoaW5kZXggIT09IDApIHBhaXJCdWZmZXIgKz0gJywgJztcblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdEtleSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCkgcGFpckJ1ZmZlciArPSAnPyAnO1xuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wICsgKHN0YXRlLmNvbmRlbnNlRmxvdyA/ICdcIicgOiAnJykgKyAnOicgKyAoc3RhdGUuY29uZGVuc2VGbG93ID8gJycgOiAnICcpO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RWYWx1ZSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS5cbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICAvLyBCb3RoIGtleSBhbmQgdmFsdWUgYXJlIHZhbGlkLlxuICAgIF9yZXN1bHQgKz0gcGFpckJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAneycgKyBfcmVzdWx0ICsgJ30nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrTWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgY29tcGFjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIGV4cGxpY2l0UGFpcixcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgLy8gQWxsb3cgc29ydGluZyBrZXlzIHNvIHRoYXQgdGhlIG91dHB1dCBmaWxlIGlzIGRldGVybWluaXN0aWNcbiAgaWYgKHN0YXRlLnNvcnRLZXlzID09PSB0cnVlKSB7XG4gICAgLy8gRGVmYXVsdCBzb3J0aW5nXG4gICAgb2JqZWN0S2V5TGlzdC5zb3J0KCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHN0YXRlLnNvcnRLZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gQ3VzdG9tIHNvcnQgZnVuY3Rpb25cbiAgICBvYmplY3RLZXlMaXN0LnNvcnQoc3RhdGUuc29ydEtleXMpO1xuICB9IGVsc2UgaWYgKHN0YXRlLnNvcnRLZXlzKSB7XG4gICAgLy8gU29tZXRoaW5nIGlzIHdyb25nXG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ3NvcnRLZXlzIG11c3QgYmUgYSBib29sZWFuIG9yIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyQnVmZmVyID0gJyc7XG5cbiAgICBpZiAoIWNvbXBhY3QgfHwgaW5kZXggIT09IDApIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RLZXksIHRydWUsIHRydWUsIHRydWUpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleS5cbiAgICB9XG5cbiAgICBleHBsaWNpdFBhaXIgPSAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB8fFxuICAgICAgICAgICAgICAgICAgIChzdGF0ZS5kdW1wICYmIHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCk7XG5cbiAgICBpZiAoZXhwbGljaXRQYWlyKSB7XG4gICAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIHBhaXJCdWZmZXIgKz0gJz8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdFZhbHVlLCB0cnVlLCBleHBsaWNpdFBhaXIpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzonO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYWlyQnVmZmVyICs9ICc6ICc7XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAne30nOyAvLyBFbXB0eSBtYXBwaW5nIGlmIG5vIHZhbGlkIHBhaXJzLlxufVxuXG5mdW5jdGlvbiBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIGV4cGxpY2l0KSB7XG4gIHZhciBfcmVzdWx0LCB0eXBlTGlzdCwgaW5kZXgsIGxlbmd0aCwgdHlwZSwgc3R5bGU7XG5cbiAgdHlwZUxpc3QgPSBleHBsaWNpdCA/IHN0YXRlLmV4cGxpY2l0VHlwZXMgOiBzdGF0ZS5pbXBsaWNpdFR5cGVzO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSB0eXBlTGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHR5cGVMaXN0W2luZGV4XTtcblxuICAgIGlmICgodHlwZS5pbnN0YW5jZU9mICB8fCB0eXBlLnByZWRpY2F0ZSkgJiZcbiAgICAgICAgKCF0eXBlLmluc3RhbmNlT2YgfHwgKCh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JykgJiYgKG9iamVjdCBpbnN0YW5jZW9mIHR5cGUuaW5zdGFuY2VPZikpKSAmJlxuICAgICAgICAoIXR5cGUucHJlZGljYXRlICB8fCB0eXBlLnByZWRpY2F0ZShvYmplY3QpKSkge1xuXG4gICAgICBzdGF0ZS50YWcgPSBleHBsaWNpdCA/IHR5cGUudGFnIDogJz8nO1xuXG4gICAgICBpZiAodHlwZS5yZXByZXNlbnQpIHtcbiAgICAgICAgc3R5bGUgPSBzdGF0ZS5zdHlsZU1hcFt0eXBlLnRhZ10gfHwgdHlwZS5kZWZhdWx0U3R5bGU7XG5cbiAgICAgICAgaWYgKF90b1N0cmluZy5jYWxsKHR5cGUucmVwcmVzZW50KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJykge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudChvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbCh0eXBlLnJlcHJlc2VudCwgc3R5bGUpKSB7XG4gICAgICAgICAgX3Jlc3VsdCA9IHR5cGUucmVwcmVzZW50W3N0eWxlXShvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignITwnICsgdHlwZS50YWcgKyAnPiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgXCInICsgc3R5bGUgKyAnXCIgc3R5bGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLmR1bXAgPSBfcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFNlcmlhbGl6ZXMgYG9iamVjdGAgYW5kIHdyaXRlcyBpdCB0byBnbG9iYWwgYHJlc3VsdGAuXG4vLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcywgb3IgZmFsc2Ugb24gaW52YWxpZCBvYmplY3QuXG4vL1xuZnVuY3Rpb24gd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBibG9jaywgY29tcGFjdCwgaXNrZXkpIHtcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuZHVtcCA9IG9iamVjdDtcblxuICBpZiAoIWRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZmFsc2UpKSB7XG4gICAgZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCB0cnVlKTtcbiAgfVxuXG4gIHZhciB0eXBlID0gX3RvU3RyaW5nLmNhbGwoc3RhdGUuZHVtcCk7XG5cbiAgaWYgKGJsb2NrKSB7XG4gICAgYmxvY2sgPSAoc3RhdGUuZmxvd0xldmVsIDwgMCB8fCBzdGF0ZS5mbG93TGV2ZWwgPiBsZXZlbCk7XG4gIH1cblxuICB2YXIgb2JqZWN0T3JBcnJheSA9IHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nIHx8IHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBkdXBsaWNhdGVJbmRleCxcbiAgICAgIGR1cGxpY2F0ZTtcblxuICBpZiAob2JqZWN0T3JBcnJheSkge1xuICAgIGR1cGxpY2F0ZUluZGV4ID0gc3RhdGUuZHVwbGljYXRlcy5pbmRleE9mKG9iamVjdCk7XG4gICAgZHVwbGljYXRlID0gZHVwbGljYXRlSW5kZXggIT09IC0xO1xuICB9XG5cbiAgaWYgKChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8IGR1cGxpY2F0ZSB8fCAoc3RhdGUuaW5kZW50ICE9PSAyICYmIGxldmVsID4gMCkpIHtcbiAgICBjb21wYWN0ID0gZmFsc2U7XG4gIH1cblxuICBpZiAoZHVwbGljYXRlICYmIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgIHN0YXRlLmR1bXAgPSAnKnJlZl8nICsgZHVwbGljYXRlSW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgaWYgKG9iamVjdE9yQXJyYXkgJiYgZHVwbGljYXRlICYmICFzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0pIHtcbiAgICAgIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgaWYgKGJsb2NrICYmIChPYmplY3Qua2V5cyhzdGF0ZS5kdW1wKS5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXApO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIGlmIChibG9jayAmJiAoc3RhdGUuZHVtcC5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpIHtcbiAgICAgIGlmIChzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgICB3cml0ZVNjYWxhcihzdGF0ZSwgc3RhdGUuZHVtcCwgbGV2ZWwsIGlza2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnNraXBJbnZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbigndW5hY2NlcHRhYmxlIGtpbmQgb2YgYW4gb2JqZWN0IHRvIGR1bXAgJyArIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgIHN0YXRlLmR1bXAgPSAnITwnICsgc3RhdGUudGFnICsgJz4gJyArIHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMob2JqZWN0LCBzdGF0ZSkge1xuICB2YXIgb2JqZWN0cyA9IFtdLFxuICAgICAgZHVwbGljYXRlc0luZGV4ZXMgPSBbXSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBkdXBsaWNhdGVzSW5kZXhlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgc3RhdGUuZHVwbGljYXRlcy5wdXNoKG9iamVjdHNbZHVwbGljYXRlc0luZGV4ZXNbaW5kZXhdXSk7XG4gIH1cbiAgc3RhdGUudXNlZER1cGxpY2F0ZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcykge1xuICB2YXIgb2JqZWN0S2V5TGlzdCxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGlmIChvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICBpbmRleCA9IG9iamVjdHMuaW5kZXhPZihvYmplY3QpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVzSW5kZXhlcy5pbmRleE9mKGluZGV4KSA9PT0gLTEpIHtcbiAgICAgICAgZHVwbGljYXRlc0luZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdHMucHVzaChvYmplY3QpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtpbmRleF0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtvYmplY3RLZXlMaXN0W2luZGV4XV0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShvcHRpb25zKTtcblxuICBpZiAoIXN0YXRlLm5vUmVmcykgZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhpbnB1dCwgc3RhdGUpO1xuXG4gIGlmICh3cml0ZU5vZGUoc3RhdGUsIDAsIGlucHV0LCB0cnVlLCB0cnVlKSkgcmV0dXJuIHN0YXRlLmR1bXAgKyAnXFxuJztcblxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIHNhZmVEdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBkdW1wKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZHVtcCAgICAgPSBkdW1wO1xubW9kdWxlLmV4cG9ydHMuc2FmZUR1bXAgPSBzYWZlRHVtcDtcbiIsIi8vIFlBTUwgZXJyb3IgY2xhc3MuIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODQ1ODk4NFxuLy9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gWUFNTEV4Y2VwdGlvbihyZWFzb24sIG1hcmspIHtcbiAgLy8gU3VwZXIgY29uc3RydWN0b3JcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICB0aGlzLm5hbWUgPSAnWUFNTEV4Y2VwdGlvbic7XG4gIHRoaXMucmVhc29uID0gcmVhc29uO1xuICB0aGlzLm1hcmsgPSBtYXJrO1xuICB0aGlzLm1lc3NhZ2UgPSAodGhpcy5yZWFzb24gfHwgJyh1bmtub3duIHJlYXNvbiknKSArICh0aGlzLm1hcmsgPyAnICcgKyB0aGlzLm1hcmsudG9TdHJpbmcoKSA6ICcnKTtcblxuICAvLyBJbmNsdWRlIHN0YWNrIHRyYWNlIGluIGVycm9yIG9iamVjdFxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAvLyBDaHJvbWUgYW5kIE5vZGVKU1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZGLCBJRSAxMCsgYW5kIFNhZmFyaSA2Ky4gRmFsbGJhY2sgZm9yIG90aGVyc1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrIHx8ICcnO1xuICB9XG59XG5cblxuLy8gSW5oZXJpdCBmcm9tIEVycm9yXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbllBTUxFeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUFNTEV4Y2VwdGlvbjtcblxuXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMubmFtZSArICc6ICc7XG5cbiAgcmVzdWx0ICs9IHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJztcblxuICBpZiAoIWNvbXBhY3QgJiYgdGhpcy5tYXJrKSB7XG4gICAgcmVzdWx0ICs9ICcgJyArIHRoaXMubWFyay50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBZQU1MRXhjZXB0aW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4sbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgTWFyayAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vbWFyaycpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbnZhciBERUZBVUxUX0ZVTExfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5cblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cblxudmFyIENPTlRFWFRfRkxPV19JTiAgID0gMTtcbnZhciBDT05URVhUX0ZMT1dfT1VUICA9IDI7XG52YXIgQ09OVEVYVF9CTE9DS19JTiAgPSAzO1xudmFyIENPTlRFWFRfQkxPQ0tfT1VUID0gNDtcblxuXG52YXIgQ0hPTVBJTkdfQ0xJUCAgPSAxO1xudmFyIENIT01QSU5HX1NUUklQID0gMjtcbnZhciBDSE9NUElOR19LRUVQICA9IDM7XG5cblxudmFyIFBBVFRFUk5fTk9OX1BSSU5UQUJMRSAgICAgICAgID0gL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdGLVxceDg0XFx4ODYtXFx4OUZcXHVGRkZFXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xudmFyIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTID0gL1tcXHg4NVxcdTIwMjhcXHUyMDI5XS87XG52YXIgUEFUVEVSTl9GTE9XX0lORElDQVRPUlMgICAgICAgPSAvWyxcXFtcXF1cXHtcXH1dLztcbnZhciBQQVRURVJOX1RBR19IQU5ETEUgICAgICAgICAgICA9IC9eKD86IXwhIXwhW2EtelxcLV0rISkkL2k7XG52YXIgUEFUVEVSTl9UQUdfVVJJICAgICAgICAgICAgICAgPSAvXig/OiF8W14sXFxbXFxdXFx7XFx9XSkoPzolWzAtOWEtZl17Mn18WzAtOWEtelxcLSM7XFwvXFw/OkAmPVxcK1xcJCxfXFwuIX5cXConXFwoXFwpXFxbXFxdXSkqJC9pO1xuXG5cbmZ1bmN0aW9uIGlzX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwQS8qIExGICovKSB8fCAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV0hJVEVfU1BBQ0UoYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8IChjID09PSAweDIwLyogU3BhY2UgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XU19PUl9FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEEvKiBMRiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19GTE9XX0lORElDQVRPUihjKSB7XG4gIHJldHVybiBjID09PSAweDJDLyogLCAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1Qi8qIFsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUQvKiBdICovIHx8XG4gICAgICAgICBjID09PSAweDdCLyogeyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3RC8qIH0gKi87XG59XG5cbmZ1bmN0aW9uIGZyb21IZXhDb2RlKGMpIHtcbiAgdmFyIGxjO1xuXG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cbiAgbGMgPSBjIHwgMHgyMDtcblxuICBpZiAoKDB4NjEvKiBhICovIDw9IGxjKSAmJiAobGMgPD0gMHg2Ni8qIGYgKi8pKSB7XG4gICAgcmV0dXJuIGxjIC0gMHg2MSArIDEwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkSGV4TGVuKGMpIHtcbiAgaWYgKGMgPT09IDB4NzgvKiB4ICovKSB7IHJldHVybiAyOyB9XG4gIGlmIChjID09PSAweDc1LyogdSAqLykgeyByZXR1cm4gNDsgfVxuICBpZiAoYyA9PT0gMHg1NS8qIFUgKi8pIHsgcmV0dXJuIDg7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGZyb21EZWNpbWFsQ29kZShjKSB7XG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFc2NhcGVTZXF1ZW5jZShjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuICByZXR1cm4gKGMgPT09IDB4MzAvKiAwICovKSA/ICdcXHgwMCcgOlxuICAgICAgICAoYyA9PT0gMHg2MS8qIGEgKi8pID8gJ1xceDA3JyA6XG4gICAgICAgIChjID09PSAweDYyLyogYiAqLykgPyAnXFx4MDgnIDpcbiAgICAgICAgKGMgPT09IDB4NzQvKiB0ICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHgwOS8qIFRhYiAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4NkUvKiBuICovKSA/ICdcXHgwQScgOlxuICAgICAgICAoYyA9PT0gMHg3Ni8qIHYgKi8pID8gJ1xceDBCJyA6XG4gICAgICAgIChjID09PSAweDY2LyogZiAqLykgPyAnXFx4MEMnIDpcbiAgICAgICAgKGMgPT09IDB4NzIvKiByICovKSA/ICdcXHgwRCcgOlxuICAgICAgICAoYyA9PT0gMHg2NS8qIGUgKi8pID8gJ1xceDFCJyA6XG4gICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pID8gJyAnIDpcbiAgICAgICAgKGMgPT09IDB4MjIvKiBcIiAqLykgPyAnXFx4MjInIDpcbiAgICAgICAgKGMgPT09IDB4MkYvKiAvICovKSA/ICcvJyA6XG4gICAgICAgIChjID09PSAweDVDLyogXFwgKi8pID8gJ1xceDVDJyA6XG4gICAgICAgIChjID09PSAweDRFLyogTiAqLykgPyAnXFx4ODUnIDpcbiAgICAgICAgKGMgPT09IDB4NUYvKiBfICovKSA/ICdcXHhBMCcgOlxuICAgICAgICAoYyA9PT0gMHg0Qy8qIEwgKi8pID8gJ1xcdTIwMjgnIDpcbiAgICAgICAgKGMgPT09IDB4NTAvKiBQICovKSA/ICdcXHUyMDI5JyA6ICcnO1xufVxuXG5mdW5jdGlvbiBjaGFyRnJvbUNvZGVwb2ludChjKSB7XG4gIGlmIChjIDw9IDB4RkZGRikge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICB9XG4gIC8vIEVuY29kZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXJcbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRlxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoKGMgLSAweDAxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICgoYyAtIDB4MDEwMDAwKSAmIDB4MDNGRikgKyAweERDMDBcbiAgKTtcbn1cblxudmFyIHNpbXBsZUVzY2FwZUNoZWNrID0gbmV3IEFycmF5KDI1Nik7IC8vIGludGVnZXIsIGZvciBmYXN0IGFjY2Vzc1xudmFyIHNpbXBsZUVzY2FwZU1hcCA9IG5ldyBBcnJheSgyNTYpO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuICBzaW1wbGVFc2NhcGVDaGVja1tpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpID8gMSA6IDA7XG4gIHNpbXBsZUVzY2FwZU1hcFtpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpO1xufVxuXG5cbmZ1bmN0aW9uIFN0YXRlKGlucHV0LCBvcHRpb25zKSB7XG4gIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICB0aGlzLmZpbGVuYW1lICA9IG9wdGlvbnNbJ2ZpbGVuYW1lJ10gIHx8IG51bGw7XG4gIHRoaXMuc2NoZW1hICAgID0gb3B0aW9uc1snc2NoZW1hJ10gICAgfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zWydvbldhcm5pbmcnXSB8fCBudWxsO1xuICB0aGlzLmxlZ2FjeSAgICA9IG9wdGlvbnNbJ2xlZ2FjeSddICAgIHx8IGZhbHNlO1xuICB0aGlzLmpzb24gICAgICA9IG9wdGlvbnNbJ2pzb24nXSAgICAgIHx8IGZhbHNlO1xuICB0aGlzLmxpc3RlbmVyICA9IG9wdGlvbnNbJ2xpc3RlbmVyJ10gIHx8IG51bGw7XG5cbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy50eXBlTWFwICAgICAgID0gdGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwO1xuXG4gIHRoaXMubGVuZ3RoICAgICA9IGlucHV0Lmxlbmd0aDtcbiAgdGhpcy5wb3NpdGlvbiAgID0gMDtcbiAgdGhpcy5saW5lICAgICAgID0gMDtcbiAgdGhpcy5saW5lU3RhcnQgID0gMDtcbiAgdGhpcy5saW5lSW5kZW50ID0gMDtcblxuICB0aGlzLmRvY3VtZW50cyA9IFtdO1xuXG4gIC8qXG4gIHRoaXMudmVyc2lvbjtcbiAgdGhpcy5jaGVja0xpbmVCcmVha3M7XG4gIHRoaXMudGFnTWFwO1xuICB0aGlzLmFuY2hvck1hcDtcbiAgdGhpcy50YWc7XG4gIHRoaXMuYW5jaG9yO1xuICB0aGlzLmtpbmQ7XG4gIHRoaXMucmVzdWx0OyovXG5cbn1cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgWUFNTEV4Y2VwdGlvbihcbiAgICBtZXNzYWdlLFxuICAgIG5ldyBNYXJrKHN0YXRlLmZpbGVuYW1lLCBzdGF0ZS5pbnB1dCwgc3RhdGUucG9zaXRpb24sIHN0YXRlLmxpbmUsIChzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydCkpKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICB0aHJvdyBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlLCBtZXNzYWdlKSB7XG4gIGlmIChzdGF0ZS5vbldhcm5pbmcpIHtcbiAgICBzdGF0ZS5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSk7XG4gIH1cbn1cblxuXG52YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7XG5cbiAgWUFNTDogZnVuY3Rpb24gaGFuZGxlWWFtbERpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7XG5cbiAgICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mICVZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1lBTUwgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBtYXRjaCA9IC9eKFswLTldKylcXC4oWzAtOV0rKSQvLmV4ZWMoYXJnc1swXSk7XG5cbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIGFyZ3VtZW50IG9mIHRoZSBZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIG1ham9yID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICBtaW5vciA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG5cbiAgICBpZiAobWFqb3IgIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cblxuICAgIHN0YXRlLnZlcnNpb24gPSBhcmdzWzBdO1xuICAgIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IChtaW5vciA8IDIpO1xuXG4gICAgaWYgKG1pbm9yICE9PSAxICYmIG1pbm9yICE9PSAyKSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuICB9LFxuXG4gIFRBRzogZnVuY3Rpb24gaGFuZGxlVGFnRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgaGFuZGxlLCBwcmVmaXg7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdUQUcgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSB0d28gYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgaGFuZGxlID0gYXJnc1swXTtcbiAgICBwcmVmaXggPSBhcmdzWzFdO1xuXG4gICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdChoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgaGFuZGxlIChmaXJzdCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCBoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGhlcmUgaXMgYSBwcmV2aW91c2x5IGRlY2xhcmVkIHN1ZmZpeCBmb3IgXCInICsgaGFuZGxlICsgJ1wiIHRhZyBoYW5kbGUnKTtcbiAgICB9XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHByZWZpeCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBwcmVmaXggKHNlY29uZCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS50YWdNYXBbaGFuZGxlXSA9IHByZWZpeDtcbiAgfVxufTtcblxuXG5mdW5jdGlvbiBjYXB0dXJlU2VnbWVudChzdGF0ZSwgc3RhcnQsIGVuZCwgY2hlY2tKc29uKSB7XG4gIHZhciBfcG9zaXRpb24sIF9sZW5ndGgsIF9jaGFyYWN0ZXIsIF9yZXN1bHQ7XG5cbiAgaWYgKHN0YXJ0IDwgZW5kKSB7XG4gICAgX3Jlc3VsdCA9IHN0YXRlLmlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgaWYgKGNoZWNrSnNvbikge1xuICAgICAgZm9yIChfcG9zaXRpb24gPSAwLCBfbGVuZ3RoID0gX3Jlc3VsdC5sZW5ndGg7IF9wb3NpdGlvbiA8IF9sZW5ndGg7IF9wb3NpdGlvbiArPSAxKSB7XG4gICAgICAgIF9jaGFyYWN0ZXIgPSBfcmVzdWx0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcbiAgICAgICAgaWYgKCEoX2NoYXJhY3RlciA9PT0gMHgwOSB8fFxuICAgICAgICAgICAgICAoMHgyMCA8PSBfY2hhcmFjdGVyICYmIF9jaGFyYWN0ZXIgPD0gMHgxMEZGRkYpKSkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCB2YWxpZCBKU09OIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZSBzdHJlYW0gY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuXG4gICAgc3RhdGUucmVzdWx0ICs9IF9yZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3ZlcnJpZGFibGVLZXlzKSB7XG4gIHZhciBzb3VyY2VLZXlzLCBrZXksIGluZGV4LCBxdWFudGl0eTtcblxuICBpZiAoIWNvbW1vbi5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlJyk7XG4gIH1cblxuICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuXG4gICAgaWYgKCFfaGFzT3duUHJvcGVydHkuY2FsbChkZXN0aW5hdGlvbiwga2V5KSkge1xuICAgICAgZGVzdGluYXRpb25ba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgb3ZlcnJpZGFibGVLZXlzW2tleV0gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBzdGFydExpbmUsIHN0YXJ0UG9zKSB7XG4gIHZhciBpbmRleCwgcXVhbnRpdHk7XG5cbiAga2V5Tm9kZSA9IFN0cmluZyhrZXlOb2RlKTtcblxuICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkge1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfVxuXG4gIGlmIChrZXlUYWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZVtpbmRleF0sIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFzdGF0ZS5qc29uICYmXG4gICAgICAgICFfaGFzT3duUHJvcGVydHkuY2FsbChvdmVycmlkYWJsZUtleXMsIGtleU5vZGUpICYmXG4gICAgICAgIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKF9yZXN1bHQsIGtleU5vZGUpKSB7XG4gICAgICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lIHx8IHN0YXRlLmxpbmU7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXJ0UG9zIHx8IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0ZWQgbWFwcGluZyBrZXknKTtcbiAgICB9XG4gICAgX3Jlc3VsdFtrZXlOb2RlXSA9IHZhbHVlTm9kZTtcbiAgICBkZWxldGUgb3ZlcnJpZGFibGVLZXlzW2tleU5vZGVdO1xuICB9XG5cbiAgcmV0dXJuIF9yZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5lQnJlYWsoc3RhdGUpIHtcbiAgdmFyIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDBBLyogTEYgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDBELyogQ1IgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBzdGF0ZS5saW5lICs9IDE7XG4gIHN0YXRlLmxpbmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBhbGxvd0NvbW1lbnRzLCBjaGVja0luZGVudCkge1xuICB2YXIgbGluZUJyZWFrcyA9IDAsXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dDb21tZW50cyAmJiBjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoY2ggIT09IDB4MEEvKiBMRiAqLyAmJiBjaCAhPT0gMHgwRC8qIENSICovICYmIGNoICE9PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBsaW5lQnJlYWtzKys7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgICAgd2hpbGUgKGNoID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0luZGVudCAhPT0gLTEgJiYgbGluZUJyZWFrcyAhPT0gMCAmJiBzdGF0ZS5saW5lSW5kZW50IDwgY2hlY2tJbmRlbnQpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdkZWZpY2llbnQgaW5kZW50YXRpb24nKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lQnJlYWtzO1xufVxuXG5mdW5jdGlvbiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgLy8gQ29uZGl0aW9uIHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgaXMgdGVzdGVkXG4gIC8vIGluIHBhcmVudCBvbiBlYWNoIGNhbGwsIGZvciBlZmZpY2llbmN5LiBObyBuZWVkcyB0byB0ZXN0IGhlcmUgYWdhaW4uXG4gIGlmICgoY2ggPT09IDB4MkQvKiAtICovIHx8IGNoID09PSAweDJFLyogLiAqLykgJiZcbiAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDEpICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAyKSkge1xuXG4gICAgX3Bvc2l0aW9uICs9IDM7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMCB8fCBpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIGNvdW50KSB7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gIH0gZWxzZSBpZiAoY291bnQgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGNvdW50IC0gMSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiByZWFkUGxhaW5TY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQsIHdpdGhpbkZsb3dDb2xsZWN0aW9uKSB7XG4gIHZhciBwcmVjZWRpbmcsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQsXG4gICAgICBfbGluZSxcbiAgICAgIF9saW5lU3RhcnQsXG4gICAgICBfbGluZUluZGVudCxcbiAgICAgIF9raW5kID0gc3RhdGUua2luZCxcbiAgICAgIF9yZXN1bHQgPSBzdGF0ZS5yZXN1bHQsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChpc19XU19PUl9FT0woY2gpICAgICAgfHxcbiAgICAgIGlzX0ZMT1dfSU5ESUNBVE9SKGNoKSB8fFxuICAgICAgY2ggPT09IDB4MjMvKiAjICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNi8qICYgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDJBLyogKiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjEvKiAhICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg3Qy8qIHwgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDNFLyogPiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjcvKiAnICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyMi8qIFwiICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNS8qICUgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDQwLyogQCAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4NjAvKiBgICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fFxuICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgcHJlY2VkaW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiAtIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHx8XG4gICAgICAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICAgIGJyZWFrO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgX2xpbmVJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIC0xKTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPj0gbm9kZUluZGVudCkge1xuICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucG9zaXRpb24gPSBjYXB0dXJlRW5kO1xuICAgICAgICBzdGF0ZS5saW5lID0gX2xpbmU7XG4gICAgICAgIHN0YXRlLmxpbmVTdGFydCA9IF9saW5lU3RhcnQ7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSBfbGluZUluZGVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBzdGF0ZS5saW5lIC0gX2xpbmUpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICB9XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG5cbiAgaWYgKHN0YXRlLnJlc3VsdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9IF9raW5kO1xuICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI3LyogJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGNhcHR1cmVFbmQsXG4gICAgICBoZXhMZW5ndGgsXG4gICAgICBoZXhSZXN1bHQsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyMi8qIFwiICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgc3RhdGUucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4MjIvKiBcIiAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1Qy8qIFxcICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KTtcblxuICAgICAgICAvLyBUT0RPOiByZXdvcmsgdG8gaW5saW5lIGZuIHdpdGggbm8gdHlwZSBjYXN0P1xuICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBzaW1wbGVFc2NhcGVDaGVja1tjaF0pIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IHNpbXBsZUVzY2FwZU1hcFtjaF07XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGVzY2FwZWRIZXhMZW4oY2gpKSA+IDApIHtcbiAgICAgICAgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICBoZXhSZXN1bHQgPSAwO1xuXG4gICAgICAgIGZvciAoOyBoZXhMZW5ndGggPiAwOyBoZXhMZW5ndGgtLSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICgodG1wID0gZnJvbUhleENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICAgICAgICBoZXhSZXN1bHQgPSAoaGV4UmVzdWx0IDw8IDQpICsgdG1wO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY2hhckZyb21Db2RlcG9pbnQoaGV4UmVzdWx0KTtcblxuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biBlc2NhcGUgc2VxdWVuY2UnKTtcbiAgICAgIH1cblxuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciByZWFkTmV4dCA9IHRydWUsXG4gICAgICBfbGluZSxcbiAgICAgIF90YWcgICAgID0gc3RhdGUudGFnLFxuICAgICAgX3Jlc3VsdCxcbiAgICAgIF9hbmNob3IgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgdGVybWluYXRvcixcbiAgICAgIGlzUGFpcixcbiAgICAgIGlzRXhwbGljaXRQYWlyLFxuICAgICAgaXNNYXBwaW5nLFxuICAgICAgb3ZlcnJpZGFibGVLZXlzID0ge30sXG4gICAgICBrZXlOb2RlLFxuICAgICAga2V5VGFnLFxuICAgICAgdmFsdWVOb2RlLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4NUIvKiBbICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4NUQ7LyogXSAqL1xuICAgIGlzTWFwcGluZyA9IGZhbHNlO1xuICAgIF9yZXN1bHQgPSBbXTtcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHg3Qi8qIHsgKi8pIHtcbiAgICB0ZXJtaW5hdG9yID0gMHg3RDsvKiB9ICovXG4gICAgaXNNYXBwaW5nID0gdHJ1ZTtcbiAgICBfcmVzdWx0ID0ge307XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IHRlcm1pbmF0b3IpIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgIHN0YXRlLmtpbmQgPSBpc01hcHBpbmcgPyAnbWFwcGluZycgOiAnc2VxdWVuY2UnO1xuICAgICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIXJlYWROZXh0KSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbWlzc2VkIGNvbW1hIGJldHdlZW4gZmxvdyBjb2xsZWN0aW9uIGVudHJpZXMnKTtcbiAgICB9XG5cbiAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuXG4gICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoaXNFeHBsaWNpdFBhaXIgfHwgc3RhdGUubGluZSA9PT0gX2xpbmUpICYmIGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgaXNQYWlyID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIH1cblxuICAgIGlmIChpc01hcHBpbmcpIHtcbiAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpO1xuICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICBfcmVzdWx0LnB1c2goc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgbnVsbCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfcmVzdWx0LnB1c2goa2V5Tm9kZSk7XG4gICAgfVxuXG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJDLyogLCAqLykge1xuICAgICAgcmVhZE5leHQgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFkTmV4dCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvbicpO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGZvbGRpbmcsXG4gICAgICBjaG9tcGluZyAgICAgICA9IENIT01QSU5HX0NMSVAsXG4gICAgICBkaWRSZWFkQ29udGVudCA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSBmYWxzZSxcbiAgICAgIHRleHRJbmRlbnQgICAgID0gbm9kZUluZGVudCxcbiAgICAgIGVtcHR5TGluZXMgICAgID0gMCxcbiAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2UsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg3Qy8qIHwgKi8pIHtcbiAgICBmb2xkaW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4M0UvKiA+ICovKSB7XG4gICAgZm9sZGluZyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDB4MkIvKiArICovIHx8IGNoID09PSAweDJELyogLSAqLykge1xuICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgIGNob21waW5nID0gKGNoID09PSAweDJCLyogKyAqLykgPyBDSE9NUElOR19LRUVQIDogQ0hPTVBJTkdfU1RSSVA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGEgY2hvbXBpbmcgbW9kZSBpZGVudGlmaWVyJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKCh0bXAgPSBmcm9tRGVjaW1hbENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICBpZiAodG1wID09PSAwKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgZXhwbGljaXQgaW5kZW50YXRpb24gd2lkdGggb2YgYSBibG9jayBzY2FsYXI7IGl0IGNhbm5vdCBiZSBsZXNzIHRoYW4gb25lJyk7XG4gICAgICB9IGVsc2UgaWYgKCFkZXRlY3RlZEluZGVudCkge1xuICAgICAgICB0ZXh0SW5kZW50ID0gbm9kZUluZGVudCArIHRtcCAtIDE7XG4gICAgICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYW4gaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpO1xuXG4gICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKTtcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICByZWFkTGluZUJyZWFrKHN0YXRlKTtcbiAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICB3aGlsZSAoKCFkZXRlY3RlZEluZGVudCB8fCBzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkgJiZcbiAgICAgICAgICAgKGNoID09PSAweDIwLyogU3BhY2UgKi8pKSB7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50Kys7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXRlY3RlZEluZGVudCAmJiBzdGF0ZS5saW5lSW5kZW50ID4gdGV4dEluZGVudCkge1xuICAgICAgdGV4dEluZGVudCA9IHN0YXRlLmxpbmVJbmRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGVtcHR5TGluZXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEVuZCBvZiB0aGUgc2NhbGFyLlxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkge1xuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBjaG9tcGluZy5cbiAgICAgIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfS0VFUCkge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgICAgfSBlbHNlIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfQ0xJUCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHRoZSBzY2FsYXIgaXMgbm90IGVtcHR5LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCcmVhayB0aGlzIGB3aGlsZWAgY3ljbGUgYW5kIGdvIHRvIHRoZSBmdW5jaXRvbidzIGVwaWxvZ3VlLlxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gRm9sZGVkIHN0eWxlOiB1c2UgZmFuY3kgcnVsZXMgdG8gaGFuZGxlIGxpbmUgYnJlYWtzLlxuICAgIGlmIChmb2xkaW5nKSB7XG5cbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuXG4gICAgICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gZXhjZXB0IGZvciB0aGUgZmlyc3QgY29udGVudCBsaW5lIChjZi4gRXhhbXBsZSA4LjEpXG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG5cbiAgICAgIC8vIEVuZCBvZiBtb3JlLWluZGVudGVkIGJsb2NrLlxuICAgICAgfSBlbHNlIGlmIChhdE1vcmVJbmRlbnRlZCkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZW1wdHlMaW5lcyArIDEpO1xuXG4gICAgICAvLyBKdXN0IG9uZSBsaW5lIGJyZWFrIC0gcGVyY2VpdmUgYXMgdGhlIHNhbWUgbGluZS5cbiAgICAgIH0gZWxzZSBpZiAoZW1wdHlMaW5lcyA9PT0gMCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHdlIGhhdmUgYWxyZWFkeSByZWFkIHNvbWUgc2NhbGFyIGNvbnRlbnQuXG4gICAgICAgICAgc3RhdGUucmVzdWx0ICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAvLyBTZXZlcmFsIGxpbmUgYnJlYWtzIC0gcGVyY2VpdmUgYXMgZGlmZmVyZW50IGxpbmVzLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMpO1xuICAgICAgfVxuXG4gICAgLy8gTGl0ZXJhbCBzdHlsZToganVzdCBhZGQgZXhhY3QgbnVtYmVyIG9mIGxpbmUgYnJlYWtzIGJldHdlZW4gY29udGVudCBsaW5lcy5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay5cbiAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgfVxuXG4gICAgZGlkUmVhZENvbnRlbnQgPSB0cnVlO1xuICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICBlbXB0eUxpbmVzID0gMDtcbiAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgX2xpbmUsXG4gICAgICBfdGFnICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfYW5jaG9yICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgPSBbXSxcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIGRldGVjdGVkICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG5cbiAgICBpZiAoY2ggIT09IDB4MkQvKiAtICovKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoIWlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDw9IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgX3Jlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBfcmVzdWx0LnB1c2goc3RhdGUucmVzdWx0KTtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnc2VxdWVuY2UnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBub2RlSW5kZW50LCBmbG93SW5kZW50KSB7XG4gIHZhciBmb2xsb3dpbmcsXG4gICAgICBhbGxvd0NvbXBhY3QsXG4gICAgICBfbGluZSxcbiAgICAgIF9wb3MsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgICAgICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIF9yZXN1bHQgICAgICAgPSB7fSxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IHt9LFxuICAgICAga2V5VGFnICAgICAgICA9IG51bGwsXG4gICAgICBrZXlOb2RlICAgICAgID0gbnVsbCxcbiAgICAgIHZhbHVlTm9kZSAgICAgPSBudWxsLFxuICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWQgICAgICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuICAgIF9saW5lID0gc3RhdGUubGluZTsgLy8gU2F2ZSB0aGUgY3VycmVudCBsaW5lLlxuICAgIF9wb3MgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIC8vXG4gICAgLy8gRXhwbGljaXQgbm90YXRpb24gY2FzZS4gVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBibG9ja3M6XG4gICAgLy8gZmlyc3QgZm9yIHRoZSBrZXkgKGRlbm90ZWQgYnkgXCI/XCIpIGFuZCBzZWNvbmQgZm9yIHRoZSB2YWx1ZSAoZGVub3RlZCBieSBcIjpcIilcbiAgICAvL1xuICAgIGlmICgoY2ggPT09IDB4M0YvKiA/ICovIHx8IGNoID09PSAweDNBLyogOiAqLykgJiYgaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcblxuICAgICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7XG5cbiAgICAgIH0gZWxzZSBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAvLyBpLmUuIDB4M0EvKiA6ICovID09PSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGV4cGxpY2l0IGtleS5cbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaW5jb21wbGV0ZSBleHBsaWNpdCBtYXBwaW5nIHBhaXI7IGEga2V5IG5vZGUgaXMgbWlzc2VkOyBvciBmb2xsb3dlZCBieSBhIG5vbi10YWJ1bGF0ZWQgZW1wdHkgbGluZScpO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICAgICAgY2ggPSBmb2xsb3dpbmc7XG5cbiAgICAvL1xuICAgIC8vIEltcGxpY2l0IG5vdGF0aW9uIGNhc2UuIEZsb3ctc3R5bGUgbm9kZSBhcyB0aGUga2V5IGZpcnN0LCB0aGVuIFwiOlwiLCBhbmQgdGhlIHZhbHVlLlxuICAgIC8vXG4gICAgfSBlbHNlIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX09VVCwgZmFsc2UsIHRydWUpKSB7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKCFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgICAgICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG5cbiAgICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYW4gaW1wbGljaXQgbWFwcGluZyBwYWlyOyBhIGNvbG9uIGlzIG1pc3NlZCcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYSBibG9jayBtYXBwaW5nIGVudHJ5OyBhIG11bHRpbGluZSBrZXkgbWF5IG5vdCBiZSBhbiBpbXBsaWNpdCBrZXknKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLlxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrOyAvLyBSZWFkaW5nIGlzIGRvbmUuIEdvIHRvIHRoZSBlcGlsb2d1ZS5cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIENvbW1vbiByZWFkaW5nIGNvZGUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IG5vdGF0aW9ucy5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkge1xuICAgICAgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX09VVCwgdHJ1ZSwgYWxsb3dDb21wYWN0KSkge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXRFeHBsaWNpdEtleSkge1xuICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfbGluZSwgX3Bvcyk7XG4gICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCAmJiAoY2ggIT09IDApKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgbWFwcGluZyBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEVwaWxvZ3VlLlxuICAvL1xuXG4gIC8vIFNwZWNpYWwgY2FzZTogbGFzdCBtYXBwaW5nJ3Mgbm9kZSBjb250YWlucyBvbmx5IHRoZSBrZXkgaW4gZXhwbGljaXQgbm90YXRpb24uXG4gIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHRoZSByZXN1bHRpbmcgbWFwcGluZy5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnbWFwcGluZyc7XG4gICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBkZXRlY3RlZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBpc1ZlcmJhdGltID0gZmFsc2UsXG4gICAgICBpc05hbWVkICAgID0gZmFsc2UsXG4gICAgICB0YWdIYW5kbGUsXG4gICAgICB0YWdOYW1lLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjEvKiAhICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhIHRhZyBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgzQy8qIDwgKi8pIHtcbiAgICBpc1ZlcmJhdGltID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICB0YWdIYW5kbGUgPSAnISEnO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB9IGVsc2Uge1xuICAgIHRhZ0hhbmRsZSA9ICchJztcbiAgfVxuXG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgY2ggIT09IDB4M0UvKiA+ICovKTtcblxuICAgIGlmIChzdGF0ZS5wb3NpdGlvbiA8IHN0YXRlLmxlbmd0aCkge1xuICAgICAgdGFnTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSB2ZXJiYXRpbSB0YWcnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICAgICAgaWYgKCFpc05hbWVkKSB7XG4gICAgICAgICAgdGFnSGFuZGxlID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uIC0gMSwgc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QodGFnSGFuZGxlKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWVkIHRhZyBoYW5kbGUgY2Fubm90IGNvbnRhaW4gc3VjaCBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXNOYW1lZCA9IHRydWU7XG4gICAgICAgICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24gKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGV4Y2xhbWF0aW9uIG1hcmtzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUy50ZXN0KHRhZ05hbWUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBmbG93IGluZGljYXRvciBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRhZ05hbWUgJiYgIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHRhZ05hbWUpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogJyArIHRhZ05hbWUpO1xuICB9XG5cbiAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICBzdGF0ZS50YWcgPSB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCB0YWdIYW5kbGUpKSB7XG4gICAgc3RhdGUudGFnID0gc3RhdGUudGFnTWFwW3RhZ0hhbmRsZV0gKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnIScpIHtcbiAgICBzdGF0ZS50YWcgPSAnIScgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnISEnKSB7XG4gICAgc3RhdGUudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZGVjbGFyZWQgdGFnIGhhbmRsZSBcIicgKyB0YWdIYW5kbGUgKyAnXCInKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI2LyogJiAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYW4gYW5jaG9yIHByb3BlcnR5Jyk7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbmNob3Igbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgc3RhdGUuYW5jaG9yID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQWxpYXMoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiwgYWxpYXMsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyQS8qICogKi8pIHJldHVybiBmYWxzZTtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbGlhcyBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7XG4gIH1cblxuICBhbGlhcyA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmICghc3RhdGUuYW5jaG9yTWFwLmhhc093blByb3BlcnR5KGFsaWFzKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmlkZW50aWZpZWQgYWxpYXMgXCInICsgYWxpYXMgKyAnXCInKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VsdCA9IHN0YXRlLmFuY2hvck1hcFthbGlhc107XG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbXBvc2VOb2RlKHN0YXRlLCBwYXJlbnRJbmRlbnQsIG5vZGVDb250ZXh0LCBhbGxvd1RvU2VlaywgYWxsb3dDb21wYWN0KSB7XG4gIHZhciBhbGxvd0Jsb2NrU3R5bGVzLFxuICAgICAgYWxsb3dCbG9ja1NjYWxhcnMsXG4gICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMsXG4gICAgICBpbmRlbnRTdGF0dXMgPSAxLCAvLyAxOiB0aGlzPnBhcmVudCwgMDogdGhpcz1wYXJlbnQsIC0xOiB0aGlzPHBhcmVudFxuICAgICAgYXROZXdMaW5lICA9IGZhbHNlLFxuICAgICAgaGFzQ29udGVudCA9IGZhbHNlLFxuICAgICAgdHlwZUluZGV4LFxuICAgICAgdHlwZVF1YW50aXR5LFxuICAgICAgdHlwZSxcbiAgICAgIGZsb3dJbmRlbnQsXG4gICAgICBibG9ja0luZGVudDtcblxuICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5saXN0ZW5lcignb3BlbicsIHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLnRhZyAgICA9IG51bGw7XG4gIHN0YXRlLmFuY2hvciA9IG51bGw7XG4gIHN0YXRlLmtpbmQgICA9IG51bGw7XG4gIHN0YXRlLnJlc3VsdCA9IG51bGw7XG5cbiAgYWxsb3dCbG9ja1N0eWxlcyA9IGFsbG93QmxvY2tTY2FsYXJzID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zID1cbiAgICBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQgfHxcbiAgICBDT05URVhUX0JMT0NLX0lOICA9PT0gbm9kZUNvbnRleHQ7XG5cbiAgaWYgKGFsbG93VG9TZWVrKSB7XG4gICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgIHdoaWxlIChyZWFkVGFnUHJvcGVydHkoc3RhdGUpIHx8IHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkpIHtcbiAgICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYWxsb3dCbG9ja1N0eWxlcztcblxuICAgICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMpIHtcbiAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhdE5ld0xpbmUgfHwgYWxsb3dDb21wYWN0O1xuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSB8fCBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICBpZiAoQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCB8fCBDT05URVhUX0ZMT1dfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudCArIDE7XG4gICAgfVxuXG4gICAgYmxvY2tJbmRlbnQgPSBzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydDtcblxuICAgIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICAgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiZcbiAgICAgICAgICAocmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KSB8fFxuICAgICAgICAgICByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBibG9ja0luZGVudCwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoYWxsb3dCbG9ja1NjYWxhcnMgJiYgcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkgfHxcbiAgICAgICAgICAgIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpIHx8XG4gICAgICAgICAgICByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVhZEFsaWFzKHN0YXRlKSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCB8fCBzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhbGlhcyBub2RlIHNob3VsZCBub3QgaGF2ZSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRQbGFpblNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXRlLnRhZyA9ICc/JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGluZGVudFN0YXR1cyA9PT0gMCkge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiBibG9jayBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBzYW1lIGluZGVudGF0aW9uIGxldmVsIGFzIHRoZSBwYXJlbnQuXG4gICAgICAvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI3OTk3ODRcbiAgICAgIGhhc0NvbnRlbnQgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYgcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJyEnKSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJz8nKSB7XG4gICAgICBmb3IgKHR5cGVJbmRleCA9IDAsIHR5cGVRdWFudGl0eSA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyB0eXBlSW5kZXggPCB0eXBlUXVhbnRpdHk7IHR5cGVJbmRleCArPSAxKSB7XG4gICAgICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW3R5cGVJbmRleF07XG5cbiAgICAgICAgLy8gSW1wbGljaXQgcmVzb2x2aW5nIGlzIG5vdCBhbGxvd2VkIGZvciBub24tc2NhbGFyIHR5cGVzLCBhbmQgJz8nXG4gICAgICAgIC8vIG5vbi1zcGVjaWZpYyB0YWcgaXMgb25seSBhc3NpZ25lZCB0byBwbGFpbiBzY2FsYXJzLiBTbywgaXQgaXNuJ3RcbiAgICAgICAgLy8gbmVlZGVkIHRvIGNoZWNrIGZvciAna2luZCcgY29uZm9ybWl0eS5cblxuICAgICAgICBpZiAodHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCkpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkXG4gICAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXSwgc3RhdGUudGFnKSkge1xuICAgICAgdHlwZSA9IHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXVtzdGF0ZS50YWddO1xuXG4gICAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHR5cGUua2luZCAhPT0gc3RhdGUua2luZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwnICsgc3RhdGUudGFnICsgJz4gdGFnOyBpdCBzaG91bGQgYmUgXCInICsgdHlwZS5raW5kICsgJ1wiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2Fubm90IHJlc29sdmUgYSBub2RlIHdpdGggITwnICsgc3RhdGUudGFnICsgJz4gZXhwbGljaXQgdGFnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gdGFnICE8JyArIHN0YXRlLnRhZyArICc+Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ2Nsb3NlJywgc3RhdGUpO1xuICB9XG4gIHJldHVybiBzdGF0ZS50YWcgIT09IG51bGwgfHwgIHN0YXRlLmFuY2hvciAhPT0gbnVsbCB8fCBoYXNDb250ZW50O1xufVxuXG5mdW5jdGlvbiByZWFkRG9jdW1lbnQoc3RhdGUpIHtcbiAgdmFyIGRvY3VtZW50U3RhcnQgPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIF9wb3NpdGlvbixcbiAgICAgIGRpcmVjdGl2ZU5hbWUsXG4gICAgICBkaXJlY3RpdmVBcmdzLFxuICAgICAgaGFzRGlyZWN0aXZlcyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgc3RhdGUudmVyc2lvbiA9IG51bGw7XG4gIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IHN0YXRlLmxlZ2FjeTtcbiAgc3RhdGUudGFnTWFwID0ge307XG4gIHN0YXRlLmFuY2hvck1hcCA9IHt9O1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiAwIHx8IGNoICE9PSAweDI1LyogJSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZGlyZWN0aXZlTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgIGRpcmVjdGl2ZUFyZ3MgPSBbXTtcblxuICAgIGlmIChkaXJlY3RpdmVOYW1lLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmUgbmFtZSBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciBpbiBsZW5ndGgnKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfRU9MKGNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkgYnJlYWs7XG5cbiAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBkaXJlY3RpdmVBcmdzLnB1c2goc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbikpO1xuICAgIH1cblxuICAgIGlmIChjaCAhPT0gMCkgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoZGlyZWN0aXZlSGFuZGxlcnMsIGRpcmVjdGl2ZU5hbWUpKSB7XG4gICAgICBkaXJlY3RpdmVIYW5kbGVyc1tkaXJlY3RpdmVOYW1lXShzdGF0ZSwgZGlyZWN0aXZlTmFtZSwgZGlyZWN0aXZlQXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJyArIGRpcmVjdGl2ZU5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH1cblxuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IDAgJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pICAgICA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKSA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAyKSA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgY29tcG9zZU5vZGUoc3RhdGUsIHN0YXRlLmxpbmVJbmRlbnQgLSAxLCBDT05URVhUX0JMT0NLX09VVCwgZmFsc2UsIHRydWUpO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmNoZWNrTGluZUJyZWFrcyAmJlxuICAgICAgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MudGVzdChzdGF0ZS5pbnB1dC5zbGljZShkb2N1bWVudFN0YXJ0LCBzdGF0ZS5wb3NpdGlvbikpKSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnbm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50Jyk7XG4gIH1cblxuICBzdGF0ZS5kb2N1bWVudHMucHVzaChzdGF0ZS5yZXN1bHQpO1xuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcblxuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyRS8qIC4gKi8pIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaW5wdXQgPSBTdHJpbmcoaW5wdXQpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5wdXQubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAvLyBBZGQgdGFpbGluZyBgXFxuYCBpZiBub3QgZXhpc3RzXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEEvKiBMRiAqLyAmJlxuICAgICAgICBpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBELyogQ1IgKi8pIHtcbiAgICAgIGlucHV0ICs9ICdcXG4nO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIEJPTVxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKGlucHV0LCBvcHRpb25zKTtcblxuICAvLyBVc2UgMCBhcyBzdHJpbmcgdGVybWluYXRvci4gVGhhdCBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgYm91bmRzIGNoZWNrLlxuICBzdGF0ZS5pbnB1dCArPSAnXFwwJztcblxuICB3aGlsZSAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MjAvKiBTcGFjZSAqLykge1xuICAgIHN0YXRlLmxpbmVJbmRlbnQgKz0gMTtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7XG4gICAgcmVhZERvY3VtZW50KHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZS5kb2N1bWVudHM7XG59XG5cblxuZnVuY3Rpb24gbG9hZEFsbChpbnB1dCwgaXRlcmF0b3IsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50cyA9IGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpLCBpbmRleCwgbGVuZ3RoO1xuXG4gIGlmICh0eXBlb2YgaXRlcmF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGRvY3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgaXRlcmF0b3IoZG9jdW1lbnRzW2luZGV4XSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTtcblxuICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzWzBdO1xuICB9XG4gIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtLCBidXQgZm91bmQgbW9yZScpO1xufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkQWxsKGlucHV0LCBvdXRwdXQsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBvdXRwdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsb2FkQWxsKGlucHV0LCBvdXRwdXQsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2FkQWxsKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBsb2FkKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICA9IGxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICA9IGxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZEFsbCA9IHNhZmVMb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgPSBzYWZlTG9hZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxuXG5mdW5jdGlvbiBNYXJrKG5hbWUsIGJ1ZmZlciwgcG9zaXRpb24sIGxpbmUsIGNvbHVtbikge1xuICB0aGlzLm5hbWUgICAgID0gbmFtZTtcbiAgdGhpcy5idWZmZXIgICA9IGJ1ZmZlcjtcbiAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICB0aGlzLmxpbmUgICAgID0gbGluZTtcbiAgdGhpcy5jb2x1bW4gICA9IGNvbHVtbjtcbn1cblxuXG5NYXJrLnByb3RvdHlwZS5nZXRTbmlwcGV0ID0gZnVuY3Rpb24gZ2V0U25pcHBldChpbmRlbnQsIG1heExlbmd0aCkge1xuICB2YXIgaGVhZCwgc3RhcnQsIHRhaWwsIGVuZCwgc25pcHBldDtcblxuICBpZiAoIXRoaXMuYnVmZmVyKSByZXR1cm4gbnVsbDtcblxuICBpbmRlbnQgPSBpbmRlbnQgfHwgNDtcbiAgbWF4TGVuZ3RoID0gbWF4TGVuZ3RoIHx8IDc1O1xuXG4gIGhlYWQgPSAnJztcbiAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChzdGFydCA+IDAgJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoc3RhcnQgLSAxKSkgPT09IC0xKSB7XG4gICAgc3RhcnQgLT0gMTtcbiAgICBpZiAodGhpcy5wb3NpdGlvbiAtIHN0YXJ0ID4gKG1heExlbmd0aCAvIDIgLSAxKSkge1xuICAgICAgaGVhZCA9ICcgLi4uICc7XG4gICAgICBzdGFydCArPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdGFpbCA9ICcnO1xuICBlbmQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChlbmQgPCB0aGlzLmJ1ZmZlci5sZW5ndGggJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoZW5kKSkgPT09IC0xKSB7XG4gICAgZW5kICs9IDE7XG4gICAgaWYgKGVuZCAtIHRoaXMucG9zaXRpb24gPiAobWF4TGVuZ3RoIC8gMiAtIDEpKSB7XG4gICAgICB0YWlsID0gJyAuLi4gJztcbiAgICAgIGVuZCAtPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc25pcHBldCA9IHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gIHJldHVybiBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50KSArIGhlYWQgKyBzbmlwcGV0ICsgdGFpbCArICdcXG4nICtcbiAgICAgICAgIGNvbW1vbi5yZXBlYXQoJyAnLCBpbmRlbnQgKyB0aGlzLnBvc2l0aW9uIC0gc3RhcnQgKyBoZWFkLmxlbmd0aCkgKyAnXic7XG59O1xuXG5cbk1hcmsucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICB2YXIgc25pcHBldCwgd2hlcmUgPSAnJztcblxuICBpZiAodGhpcy5uYW1lKSB7XG4gICAgd2hlcmUgKz0gJ2luIFwiJyArIHRoaXMubmFtZSArICdcIiAnO1xuICB9XG5cbiAgd2hlcmUgKz0gJ2F0IGxpbmUgJyArICh0aGlzLmxpbmUgKyAxKSArICcsIGNvbHVtbiAnICsgKHRoaXMuY29sdW1uICsgMSk7XG5cbiAgaWYgKCFjb21wYWN0KSB7XG4gICAgc25pcHBldCA9IHRoaXMuZ2V0U25pcHBldCgpO1xuXG4gICAgaWYgKHNuaXBwZXQpIHtcbiAgICAgIHdoZXJlICs9ICc6XFxuJyArIHNuaXBwZXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdoZXJlO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcms7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbiovXG5cbnZhciBjb21tb24gICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBZQU1MRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcbnZhciBUeXBlICAgICAgICAgID0gcmVxdWlyZSgnLi90eXBlJyk7XG5cblxuZnVuY3Rpb24gY29tcGlsZUxpc3Qoc2NoZW1hLCBuYW1lLCByZXN1bHQpIHtcbiAgdmFyIGV4Y2x1ZGUgPSBbXTtcblxuICBzY2hlbWEuaW5jbHVkZS5mb3JFYWNoKGZ1bmN0aW9uIChpbmNsdWRlZFNjaGVtYSkge1xuICAgIHJlc3VsdCA9IGNvbXBpbGVMaXN0KGluY2x1ZGVkU2NoZW1hLCBuYW1lLCByZXN1bHQpO1xuICB9KTtcblxuICBzY2hlbWFbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoY3VycmVudFR5cGUpIHtcbiAgICByZXN1bHQuZm9yRWFjaChmdW5jdGlvbiAocHJldmlvdXNUeXBlLCBwcmV2aW91c0luZGV4KSB7XG4gICAgICBpZiAocHJldmlvdXNUeXBlLnRhZyA9PT0gY3VycmVudFR5cGUudGFnICYmIHByZXZpb3VzVHlwZS5raW5kID09PSBjdXJyZW50VHlwZS5raW5kKSB7XG4gICAgICAgIGV4Y2x1ZGUucHVzaChwcmV2aW91c0luZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc3VsdC5wdXNoKGN1cnJlbnRUeXBlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGV4Y2x1ZGUuaW5kZXhPZihpbmRleCkgPT09IC0xO1xuICB9KTtcbn1cblxuXG5mdW5jdGlvbiBjb21waWxlTWFwKC8qIGxpc3RzLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7XG4gICAgICAgIHNjYWxhcjoge30sXG4gICAgICAgIHNlcXVlbmNlOiB7fSxcbiAgICAgICAgbWFwcGluZzoge30sXG4gICAgICAgIGZhbGxiYWNrOiB7fVxuICAgICAgfSwgaW5kZXgsIGxlbmd0aDtcblxuICBmdW5jdGlvbiBjb2xsZWN0VHlwZSh0eXBlKSB7XG4gICAgcmVzdWx0W3R5cGUua2luZF1bdHlwZS50YWddID0gcmVzdWx0WydmYWxsYmFjayddW3R5cGUudGFnXSA9IHR5cGU7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBhcmd1bWVudHNbaW5kZXhdLmZvckVhY2goY29sbGVjdFR5cGUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gU2NoZW1hKGRlZmluaXRpb24pIHtcbiAgdGhpcy5pbmNsdWRlICA9IGRlZmluaXRpb24uaW5jbHVkZSAgfHwgW107XG4gIHRoaXMuaW1wbGljaXQgPSBkZWZpbml0aW9uLmltcGxpY2l0IHx8IFtdO1xuICB0aGlzLmV4cGxpY2l0ID0gZGVmaW5pdGlvbi5leHBsaWNpdCB8fCBbXTtcblxuICB0aGlzLmltcGxpY2l0LmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBpZiAodHlwZS5sb2FkS2luZCAmJiB0eXBlLmxvYWRLaW5kICE9PSAnc2NhbGFyJykge1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1RoZXJlIGlzIGEgbm9uLXNjYWxhciB0eXBlIGluIHRoZSBpbXBsaWNpdCBsaXN0IG9mIGEgc2NoZW1hLiBJbXBsaWNpdCByZXNvbHZpbmcgb2Ygc3VjaCB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbiAgfSk7XG5cbiAgdGhpcy5jb21waWxlZEltcGxpY2l0ID0gY29tcGlsZUxpc3QodGhpcywgJ2ltcGxpY2l0JywgW10pO1xuICB0aGlzLmNvbXBpbGVkRXhwbGljaXQgPSBjb21waWxlTGlzdCh0aGlzLCAnZXhwbGljaXQnLCBbXSk7XG4gIHRoaXMuY29tcGlsZWRUeXBlTWFwICA9IGNvbXBpbGVNYXAodGhpcy5jb21waWxlZEltcGxpY2l0LCB0aGlzLmNvbXBpbGVkRXhwbGljaXQpO1xufVxuXG5cblNjaGVtYS5ERUZBVUxUID0gbnVsbDtcblxuXG5TY2hlbWEuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlU2NoZW1hKCkge1xuICB2YXIgc2NoZW1hcywgdHlwZXM7XG5cbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgc2NoZW1hcyA9IFNjaGVtYS5ERUZBVUxUO1xuICAgICAgdHlwZXMgPSBhcmd1bWVudHNbMF07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMjpcbiAgICAgIHNjaGVtYXMgPSBhcmd1bWVudHNbMF07XG4gICAgICB0eXBlcyA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBTY2hlbWEuY3JlYXRlIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBzY2hlbWFzID0gY29tbW9uLnRvQXJyYXkoc2NoZW1hcyk7XG4gIHR5cGVzID0gY29tbW9uLnRvQXJyYXkodHlwZXMpO1xuXG4gIGlmICghc2NoZW1hcy5ldmVyeShmdW5jdGlvbiAoc2NoZW1hKSB7IHJldHVybiBzY2hlbWEgaW5zdGFuY2VvZiBTY2hlbWE7IH0pKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIHN1cGVyIHNjaGVtYXMgKG9yIGEgc2luZ2xlIFNjaGVtYSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVNjaGVtYSBvYmplY3QuJyk7XG4gIH1cblxuICBpZiAoIXR5cGVzLmV2ZXJ5KGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0eXBlIGluc3RhbmNlb2YgVHlwZTsgfSkpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LicpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTY2hlbWEoe1xuICAgIGluY2x1ZGU6IHNjaGVtYXMsXG4gICAgZXhwbGljaXQ6IHR5cGVzXG4gIH0pO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYTtcbiIsIi8vIFN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwNDkyM1xuLy9cbi8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLlxuLy8gU28sIENvcmUgc2NoZW1hIGhhcyBubyBkaXN0aW5jdGlvbnMgZnJvbSBKU09OIHNjaGVtYSBpcyBKUy1ZQU1MLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vanNvbicpXG4gIF1cbn0pO1xuIiwiLy8gSlMtWUFNTCdzIGRlZmF1bHQgc2NoZW1hIGZvciBgbG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gSlMtWUFNTCdzIGRlZmF1bHQgc2FmZSBzY2hlbWEgYW5kIGluY2x1ZGVzXG4vLyBKYXZhU2NyaXB0LXNwZWNpZmljIHR5cGVzOiAhIWpzL3VuZGVmaW5lZCwgISFqcy9yZWdleHAgYW5kICEhanMvZnVuY3Rpb24uXG4vL1xuLy8gQWxzbyB0aGlzIHNjaGVtYSBpcyB1c2VkIGFzIGRlZmF1bHQgYmFzZSBzY2hlbWEgYXQgYFNjaGVtYS5jcmVhdGVgIGZ1bmN0aW9uLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWEuREVGQVVMVCA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9kZWZhdWx0X3NhZmUnKVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvdW5kZWZpbmVkJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9yZWdleHAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL2Z1bmN0aW9uJylcbiAgXVxufSk7XG4iLCIvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBzYWZlTG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gc3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hIGFuZCBpbmNsdWRlcyBtb3N0IG9mXG4vLyBleHRyYSB0eXBlcyBkZXNjcmliZWQgYXQgWUFNTCB0YWcgcmVwb3NpdG9yeS4gKGh0dHA6Ly95YW1sLm9yZy90eXBlLylcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2NvcmUnKVxuICBdLFxuICBpbXBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvdGltZXN0YW1wJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tZXJnZScpXG4gIF0sXG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9iaW5hcnknKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL29tYXAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3BhaXJzJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zZXQnKVxuICBdXG59KTtcbiIsIi8vIFN0YW5kYXJkIFlBTUwncyBGYWlsc2FmZSBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDIzNDZcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zdHInKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3NlcScpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvbWFwJylcbiAgXVxufSk7XG4iLCIvLyBTdGFuZGFyZCBZQU1MJ3MgSlNPTiBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDMyMzFcbi8vXG4vLyBOT1RFOiBKUy1ZQU1MIGRvZXMgbm90IHN1cHBvcnQgc2NoZW1hLXNwZWNpZmljIHRhZyByZXNvbHV0aW9uIHJlc3RyaWN0aW9ucy5cbi8vIFNvLCB0aGlzIHNjaGVtYSBpcyBub3Qgc3VjaCBzdHJpY3QgYXMgZGVmaW5lZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy8gSXQgYWxsb3dzIG51bWJlcnMgaW4gYmluYXJ5IG5vdGFpb24sIHVzZSBgTnVsbGAgYW5kIGBOVUxMYCBhcyBgbnVsbGAsIGV0Yy5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2ZhaWxzYWZlJylcbiAgXSxcbiAgaW1wbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL251bGwnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2Jvb2wnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2ludCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvZmxvYXQnKVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xuXG52YXIgVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TID0gW1xuICAna2luZCcsXG4gICdyZXNvbHZlJyxcbiAgJ2NvbnN0cnVjdCcsXG4gICdpbnN0YW5jZU9mJyxcbiAgJ3ByZWRpY2F0ZScsXG4gICdyZXByZXNlbnQnLFxuICAnZGVmYXVsdFN0eWxlJyxcbiAgJ3N0eWxlQWxpYXNlcydcbl07XG5cbnZhciBZQU1MX05PREVfS0lORFMgPSBbXG4gICdzY2FsYXInLFxuICAnc2VxdWVuY2UnLFxuICAnbWFwcGluZydcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZUFsaWFzZXMobWFwKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAobWFwICE9PSBudWxsKSB7XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgbWFwW3N0eWxlXS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgICByZXN1bHRbU3RyaW5nKGFsaWFzKV0gPSBzdHlsZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gVHlwZSh0YWcsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiIGlzIG1ldCBpbiBkZWZpbml0aW9uIG9mIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gICAgfVxuICB9KTtcblxuICAvLyBUT0RPOiBBZGQgdGFnIGZvcm1hdCBjaGVjay5cbiAgdGhpcy50YWcgICAgICAgICAgPSB0YWc7XG4gIHRoaXMua2luZCAgICAgICAgID0gb3B0aW9uc1sna2luZCddICAgICAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXNvbHZlICAgICAgPSBvcHRpb25zWydyZXNvbHZlJ10gICAgICB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuICB0aGlzLmNvbnN0cnVjdCAgICA9IG9wdGlvbnNbJ2NvbnN0cnVjdCddICAgIHx8IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhOyB9O1xuICB0aGlzLmluc3RhbmNlT2YgICA9IG9wdGlvbnNbJ2luc3RhbmNlT2YnXSAgIHx8IG51bGw7XG4gIHRoaXMucHJlZGljYXRlICAgID0gb3B0aW9uc1sncHJlZGljYXRlJ10gICAgfHwgbnVsbDtcbiAgdGhpcy5yZXByZXNlbnQgICAgPSBvcHRpb25zWydyZXByZXNlbnQnXSAgICB8fCBudWxsO1xuICB0aGlzLmRlZmF1bHRTdHlsZSA9IG9wdGlvbnNbJ2RlZmF1bHRTdHlsZSddIHx8IG51bGw7XG4gIHRoaXMuc3R5bGVBbGlhc2VzID0gY29tcGlsZVN0eWxlQWxpYXNlcyhvcHRpb25zWydzdHlsZUFsaWFzZXMnXSB8fCBudWxsKTtcblxuICBpZiAoWUFNTF9OT0RFX0tJTkRTLmluZGV4T2YodGhpcy5raW5kKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVW5rbm93biBraW5kIFwiJyArIHRoaXMua2luZCArICdcIiBpcyBzcGVjaWZpZWQgZm9yIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUeXBlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuXG52YXIgTm9kZUJ1ZmZlcjtcblxudHJ5IHtcbiAgLy8gQSB0cmljayBmb3IgYnJvd3NlcmlmaWVkIHZlcnNpb24sIHRvIG5vdCBpbmNsdWRlIGBCdWZmZXJgIHNoaW1cbiAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTtcbiAgTm9kZUJ1ZmZlciA9IF9yZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG59IGNhdGNoIChfXykge31cblxudmFyIFR5cGUgICAgICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cblxuLy8gWyA2NCwgNjUsIDY2IF0gLT4gWyBwYWRkaW5nLCBDUiwgTEYgXVxudmFyIEJBU0U2NF9NQVAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cXG5cXHInO1xuXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQmluYXJ5KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgY29kZSwgaWR4LCBiaXRsZW4gPSAwLCBtYXggPSBkYXRhLmxlbmd0aCwgbWFwID0gQkFTRTY0X01BUDtcblxuICAvLyBDb252ZXJ0IG9uZSBieSBvbmUuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGNvZGUgPSBtYXAuaW5kZXhPZihkYXRhLmNoYXJBdChpZHgpKTtcblxuICAgIC8vIFNraXAgQ1IvTEZcbiAgICBpZiAoY29kZSA+IDY0KSBjb250aW51ZTtcblxuICAgIC8vIEZhaWwgb24gaWxsZWdhbCBjaGFyYWN0ZXJzXG4gICAgaWYgKGNvZGUgPCAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBiaXRsZW4gKz0gNjtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGFyZSBhbnkgYml0cyBsZWZ0LCBzb3VyY2Ugd2FzIGNvcnJ1cHRlZFxuICByZXR1cm4gKGJpdGxlbiAlIDgpID09PSAwO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQmluYXJ5KGRhdGEpIHtcbiAgdmFyIGlkeCwgdGFpbGJpdHMsXG4gICAgICBpbnB1dCA9IGRhdGEucmVwbGFjZSgvW1xcclxcbj1dL2csICcnKSwgLy8gcmVtb3ZlIENSL0xGICYgcGFkZGluZyB0byBzaW1wbGlmeSBzY2FuXG4gICAgICBtYXggPSBpbnB1dC5sZW5ndGgsXG4gICAgICBtYXAgPSBCQVNFNjRfTUFQLFxuICAgICAgYml0cyA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICAvLyBDb2xsZWN0IGJ5IDYqNCBiaXRzICgzIGJ5dGVzKVxuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmICgoaWR4ICUgNCA9PT0gMCkgJiYgaWR4KSB7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDYpIHwgbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdGFpbGJpdHMgPSAobWF4ICUgNCkgKiA2O1xuXG4gIGlmICh0YWlsYml0cyA9PT0gMCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxOCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDEwKSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDIpICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDEyKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gNCkgJiAweEZGKTtcbiAgfVxuXG4gIC8vIFdyYXAgaW50byBCdWZmZXIgZm9yIE5vZGVKUyBhbmQgbGVhdmUgQXJyYXkgZm9yIGJyb3dzZXJcbiAgaWYgKE5vZGVCdWZmZXIpIHtcbiAgICAvLyBTdXBwb3J0IG5vZGUgNi4rIEJ1ZmZlciBBUEkgd2hlbiBhdmFpbGFibGVcbiAgICByZXR1cm4gTm9kZUJ1ZmZlci5mcm9tID8gTm9kZUJ1ZmZlci5mcm9tKHJlc3VsdCkgOiBuZXcgTm9kZUJ1ZmZlcihyZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBiaXRzID0gMCwgaWR4LCB0YWlsLFxuICAgICAgbWF4ID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBldmVyeSB0aHJlZSBieXRlcyB0byA0IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSAzID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF07XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsID0gbWF4ICUgMztcblxuICBpZiAodGFpbCA9PT0gMCkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMikge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTApICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAxKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzQmluYXJ5KG9iamVjdCkge1xuICByZXR1cm4gTm9kZUJ1ZmZlciAmJiBOb2RlQnVmZmVyLmlzQnVmZmVyKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJpbmFyeScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQmluYXJ5LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCaW5hcnksXG4gIHByZWRpY2F0ZTogaXNCaW5hcnksXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEJpbmFyeVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJvb2xlYW4oZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ3RydWUnIHx8IGRhdGEgPT09ICdUcnVlJyB8fCBkYXRhID09PSAnVFJVRScpKSB8fFxuICAgICAgICAgKG1heCA9PT0gNSAmJiAoZGF0YSA9PT0gJ2ZhbHNlJyB8fCBkYXRhID09PSAnRmFsc2UnIHx8IGRhdGEgPT09ICdGQUxTRScpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJvb2xlYW4oZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gJ3RydWUnIHx8XG4gICAgICAgICBkYXRhID09PSAnVHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUUlVFJztcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQm9vbGVhbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQm9vbGVhbixcbiAgcHJlZGljYXRlOiBpc0Jvb2xlYW4sXG4gIHJlcHJlc2VudDoge1xuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ3RydWUnIDogJ2ZhbHNlJzsgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUUlVFJyA6ICdGQUxTRSc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVHJ1ZScgOiAnRmFsc2UnOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgWUFNTF9GTE9BVF9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgLy8gMi41ZTQsIDIuNSBhbmQgaW50ZWdlcnNcbiAgJ14oPzpbLStdPyg/OjB8WzEtOV1bMC05X10qKSg/OlxcXFwuWzAtOV9dKik/KD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gLjJlNCwgLjJcbiAgLy8gc3BlY2lhbCBjYXNlLCBzZWVtcyBub3QgZnJvbSBzcGVjXG4gICd8XFxcXC5bMC05X10rKD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gMjA6NTlcbiAgJ3xbLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFxcXC5bMC05X10qJyArXG4gIC8vIC5pbmZcbiAgJ3xbLStdP1xcXFwuKD86aW5mfEluZnxJTkYpJyArXG4gIC8vIC5uYW5cbiAgJ3xcXFxcLig/Om5hbnxOYU58TkFOKSkkJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sRmxvYXQoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghWUFNTF9GTE9BVF9QQVRURVJOLnRlc3QoZGF0YSkgfHxcbiAgICAgIC8vIFF1aWNrIGhhY2sgdG8gbm90IGFsbG93IGludGVnZXJzIGVuZCB3aXRoIGBfYFxuICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIHVwZGF0ZSByZWdleHAgJiBjaGVjayBzcGVlZFxuICAgICAgZGF0YVtkYXRhLmxlbmd0aCAtIDFdID09PSAnXycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEZsb2F0KGRhdGEpIHtcbiAgdmFyIHZhbHVlLCBzaWduLCBiYXNlLCBkaWdpdHM7XG5cbiAgdmFsdWUgID0gZGF0YS5yZXBsYWNlKC9fL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICBzaWduICAgPSB2YWx1ZVswXSA9PT0gJy0nID8gLTEgOiAxO1xuICBkaWdpdHMgPSBbXTtcblxuICBpZiAoJystJy5pbmRleE9mKHZhbHVlWzBdKSA+PSAwKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJy5pbmYnKSB7XG4gICAgcmV0dXJuIChzaWduID09PSAxKSA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcblxuICB9IGVsc2UgaWYgKHZhbHVlID09PSAnLm5hbicpIHtcbiAgICByZXR1cm4gTmFOO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUuaW5kZXhPZignOicpID49IDApIHtcbiAgICB2YWx1ZS5zcGxpdCgnOicpLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIGRpZ2l0cy51bnNoaWZ0KHBhcnNlRmxvYXQodiwgMTApKTtcbiAgICB9KTtcblxuICAgIHZhbHVlID0gMC4wO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IGQgKiBiYXNlO1xuICAgICAgYmFzZSAqPSA2MDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduICogdmFsdWU7XG5cbiAgfVxuICByZXR1cm4gc2lnbiAqIHBhcnNlRmxvYXQodmFsdWUsIDEwKTtcbn1cblxuXG52YXIgU0NJRU5USUZJQ19XSVRIT1VUX0RPVCA9IC9eWy0rXT9bMC05XStlLztcblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEZsb2F0KG9iamVjdCwgc3R5bGUpIHtcbiAgdmFyIHJlcztcblxuICBpZiAoaXNOYU4ob2JqZWN0KSkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLm5hbic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5OQU4nO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuTmFOJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICctLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy0uSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLS5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSkge1xuICAgIHJldHVybiAnLTAuMCc7XG4gIH1cblxuICByZXMgPSBvYmplY3QudG9TdHJpbmcoMTApO1xuXG4gIC8vIEpTIHN0cmluZ2lmaWVyIGNhbiBidWlsZCBzY2llbnRpZmljIGZvcm1hdCB3aXRob3V0IGRvdHM6IDVlLTEwMCxcbiAgLy8gd2hpbGUgWUFNTCByZXF1cmVzIGRvdDogNS5lLTEwMC4gRml4IGl0IHdpdGggc2ltcGxlIGhhY2tcblxuICByZXR1cm4gU0NJRU5USUZJQ19XSVRIT1VUX0RPVC50ZXN0KHJlcykgPyByZXMucmVwbGFjZSgnZScsICcuZScpIDogcmVzO1xufVxuXG5mdW5jdGlvbiBpc0Zsb2F0KG9iamVjdCkge1xuICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBOdW1iZXJdJykgJiZcbiAgICAgICAgIChvYmplY3QgJSAxICE9PSAwIHx8IGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEZsb2F0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxGbG9hdCxcbiAgcHJlZGljYXRlOiBpc0Zsb2F0LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxGbG9hdCxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIGlzSGV4Q29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgfHxcbiAgICAgICAgICgoMHg0MS8qIEEgKi8gPD0gYykgJiYgKGMgPD0gMHg0Ni8qIEYgKi8pKSB8fFxuICAgICAgICAgKCgweDYxLyogYSAqLyA8PSBjKSAmJiAoYyA8PSAweDY2LyogZiAqLykpO1xufVxuXG5mdW5jdGlvbiBpc09jdENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM3LyogNyAqLykpO1xufVxuXG5mdW5jdGlvbiBpc0RlY0NvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEludGVnZXIoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGhhc0RpZ2l0cyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKCFtYXgpIHJldHVybiBmYWxzZTtcblxuICBjaCA9IGRhdGFbaW5kZXhdO1xuXG4gIC8vIHNpZ25cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgLy8gMFxuICAgIGlmIChpbmRleCArIDEgPT09IG1heCkgcmV0dXJuIHRydWU7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuXG4gICAgLy8gYmFzZSAyLCBiYXNlIDgsIGJhc2UgMTZcblxuICAgIGlmIChjaCA9PT0gJ2InKSB7XG4gICAgICAvLyBiYXNlIDJcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cblxuICAgIGlmIChjaCA9PT0gJ3gnKSB7XG4gICAgICAvLyBiYXNlIDE2XG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWlzSGV4Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICAgIH1cblxuICAgIC8vIGJhc2UgOFxuICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gIH1cblxuICAvLyBiYXNlIDEwIChleGNlcHQgMCkgb3IgYmFzZSA2MFxuXG4gIC8vIHZhbHVlIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgX2A7XG4gIGlmIChjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgaWYgKGNoID09PSAnOicpIGJyZWFrO1xuICAgIGlmICghaXNEZWNDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gIH1cblxuICAvLyBTaG91bGQgaGF2ZSBkaWdpdHMgYW5kIHNob3VsZCBub3QgZW5kIHdpdGggYF9gXG4gIGlmICghaGFzRGlnaXRzIHx8IGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICAvLyBpZiAhYmFzZTYwIC0gZG9uZTtcbiAgaWYgKGNoICE9PSAnOicpIHJldHVybiB0cnVlO1xuXG4gIC8vIGJhc2U2MCBhbG1vc3Qgbm90IHVzZWQsIG5vIG5lZWRzIHRvIG9wdGltaXplXG4gIHJldHVybiAvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QoZGF0YS5zbGljZShpbmRleCkpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sSW50ZWdlcihkYXRhKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGEsIHNpZ24gPSAxLCBjaCwgYmFzZSwgZGlnaXRzID0gW107XG5cbiAgaWYgKHZhbHVlLmluZGV4T2YoJ18nKSAhPT0gLTEpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL18vZywgJycpO1xuICB9XG5cbiAgY2ggPSB2YWx1ZVswXTtcblxuICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgaWYgKGNoID09PSAnLScpIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcwJykgcmV0dXJuIDA7XG5cbiAgaWYgKGNoID09PSAnMCcpIHtcbiAgICBpZiAodmFsdWVbMV0gPT09ICdiJykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMik7XG4gICAgaWYgKHZhbHVlWzFdID09PSAneCcpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDE2KTtcbiAgICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgfVxuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgdmFsdWUuc3BsaXQoJzonKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICBkaWdpdHMudW5zaGlmdChwYXJzZUludCh2LCAxMCkpO1xuICAgIH0pO1xuXG4gICAgdmFsdWUgPSAwO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IChkICogYmFzZSk7XG4gICAgICBiYXNlICo9IDYwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTtcblxuICB9XG5cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTApO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkpID09PSAnW29iamVjdCBOdW1iZXJdJyAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgPT09IDAgJiYgIWNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6aW50Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxJbnRlZ2VyLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxJbnRlZ2VyLFxuICBwcmVkaWNhdGU6IGlzSW50ZWdlcixcbiAgcmVwcmVzZW50OiB7XG4gICAgYmluYXJ5OiAgICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzBiJyArIG9iai50b1N0cmluZygyKSA6ICctMGInICsgb2JqLnRvU3RyaW5nKDIpLnNsaWNlKDEpOyB9LFxuICAgIG9jdGFsOiAgICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwJyAgKyBvYmoudG9TdHJpbmcoOCkgOiAnLTAnICArIG9iai50b1N0cmluZyg4KS5zbGljZSgxKTsgfSxcbiAgICBkZWNpbWFsOiAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqLnRvU3RyaW5nKDEwKTsgfSxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4gICAgaGV4YWRlY2ltYWw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSA6ICAnLTB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKTsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdkZWNpbWFsJyxcbiAgc3R5bGVBbGlhc2VzOiB7XG4gICAgYmluYXJ5OiAgICAgIFsgMiwgICdiaW4nIF0sXG4gICAgb2N0YWw6ICAgICAgIFsgOCwgICdvY3QnIF0sXG4gICAgZGVjaW1hbDogICAgIFsgMTAsICdkZWMnIF0sXG4gICAgaGV4YWRlY2ltYWw6IFsgMTYsICdoZXgnIF1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlc3ByaW1hO1xuXG4vLyBCcm93c2VyaWZpZWQgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIGVzcHJpbWFcbi8vXG4vLyAxLiBGb3Igbm9kZS5qcyBqdXN0IHJlcXVpcmUgbW9kdWxlIGFzIGRlcHNcbi8vIDIuIEZvciBicm93c2VyIHRyeSB0byByZXF1aXJlIG11ZHVsZSB2aWEgZXh0ZXJuYWwgQU1EIHN5c3RlbS5cbi8vICAgIElmIG5vdCBmb3VuZCAtIHRyeSB0byBmYWxsYmFjayB0byB3aW5kb3cuZXNwcmltYS4gSWYgbm90XG4vLyAgICBmb3VuZCB0b28gLSB0aGVuIGZhaWwgdG8gcGFyc2UuXG4vL1xudHJ5IHtcbiAgLy8gd29ya2Fyb3VuZCB0byBleGNsdWRlIHBhY2thZ2UgZnJvbSBicm93c2VyaWZ5IGxpc3QuXG4gIHZhciBfcmVxdWlyZSA9IHJlcXVpcmU7XG4gIGVzcHJpbWEgPSBfcmVxdWlyZSgnZXNwcmltYScpO1xufSBjYXRjaCAoXykge1xuICAvKmdsb2JhbCB3aW5kb3cgKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSBlc3ByaW1hID0gd2luZG93LmVzcHJpbWE7XG59XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB0cnkge1xuICAgIHZhciBzb3VyY2UgPSAnKCcgKyBkYXRhICsgJyknLFxuICAgICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KTtcblxuICAgIGlmIChhc3QudHlwZSAgICAgICAgICAgICAgICAgICAgIT09ICdQcm9ncmFtJyAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keS5sZW5ndGggICAgICAgICAgICAgIT09IDEgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgICAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nICYmXG4gICAgICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7XG4gIC8qanNsaW50IGV2aWw6dHJ1ZSovXG5cbiAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsXG4gICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KSxcbiAgICAgIHBhcmFtcyA9IFtdLFxuICAgICAgYm9keTtcblxuICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHxcbiAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyAmJlxuICAgICAgICBhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24ucGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgcGFyYW1zLnB1c2gocGFyYW0ubmFtZSk7XG4gIH0pO1xuXG4gIGJvZHkgPSBhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkucmFuZ2U7XG5cbiAgLy8gRXNwcmltYSdzIHJhbmdlcyBpbmNsdWRlIHRoZSBmaXJzdCAneycgYW5kIHRoZSBsYXN0ICd9JyBjaGFyYWN0ZXJzIG9uXG4gIC8vIGZ1bmN0aW9uIGV4cHJlc3Npb25zLiBTbyBjdXQgdGhlbSBvdXQuXG4gIGlmIChhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50Jykge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb24ocGFyYW1zLCBzb3VyY2Uuc2xpY2UoYm9keVswXSArIDEsIGJvZHlbMV0gLSAxKSk7XG4gIH1cbiAgLy8gRVM2IGFycm93IGZ1bmN0aW9ucyBjYW4gb21pdCB0aGUgQmxvY2tTdGF0ZW1lbnQuIEluIHRoYXQgY2FzZSwganVzdCByZXR1cm5cbiAgLy8gdGhlIGJvZHkuXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgJ3JldHVybiAnICsgc291cmNlLnNsaWNlKGJvZHlbMF0sIGJvZHlbMV0pKTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdEZ1bmN0aW9uKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvZnVuY3Rpb24nLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbixcbiAgcHJlZGljYXRlOiBpc0Z1bmN0aW9uLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvblxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdFJlZ0V4cChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciByZWdleHAgPSBkYXRhLFxuICAgICAgdGFpbCAgID0gL1xcLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSxcbiAgICAgIG1vZGlmaWVycyA9ICcnO1xuXG4gIC8vIGlmIHJlZ2V4cCBzdGFydHMgd2l0aCAnLycgaXQgY2FuIGhhdmUgbW9kaWZpZXJzIGFuZCBtdXN0IGJlIHByb3Blcmx5IGNsb3NlZFxuICAvLyBgL2Zvby9naW1gIC0gbW9kaWZpZXJzIHRhaWwgY2FuIGJlIG1heGltdW0gMyBjaGFyc1xuICBpZiAocmVnZXhwWzBdID09PSAnLycpIHtcbiAgICBpZiAodGFpbCkgbW9kaWZpZXJzID0gdGFpbFsxXTtcblxuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoID4gMykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGlmIGV4cHJlc3Npb24gc3RhcnRzIHdpdGggLywgaXMgc2hvdWxkIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWRcbiAgICBpZiAocmVnZXhwW3JlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMV0gIT09ICcvJykgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAoZGF0YSkge1xuICB2YXIgcmVnZXhwID0gZGF0YSxcbiAgICAgIHRhaWwgICA9IC9cXC8oW2dpbV0qKSQvLmV4ZWMoZGF0YSksXG4gICAgICBtb2RpZmllcnMgPSAnJztcblxuICAvLyBgL2Zvby9naW1gIC0gdGFpbCBjYW4gYmUgbWF4aW11bSA0IGNoYXJzXG4gIGlmIChyZWdleHBbMF0gPT09ICcvJykge1xuICAgIGlmICh0YWlsKSBtb2RpZmllcnMgPSB0YWlsWzFdO1xuICAgIHJlZ2V4cCA9IHJlZ2V4cC5zbGljZSgxLCByZWdleHAubGVuZ3RoIC0gbW9kaWZpZXJzLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXhwLCBtb2RpZmllcnMpO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0UmVnRXhwKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICB2YXIgcmVzdWx0ID0gJy8nICsgb2JqZWN0LnNvdXJjZSArICcvJztcblxuICBpZiAob2JqZWN0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKG9iamVjdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmIChvYmplY3QuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cChvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvcmVnZXhwJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZUphdmFzY3JpcHRSZWdFeHAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0SmF2YXNjcmlwdFJlZ0V4cCxcbiAgcHJlZGljYXRlOiBpc1JlZ0V4cCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRKYXZhc2NyaXB0UmVnRXhwXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL3VuZGVmaW5lZCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQsXG4gIHByZWRpY2F0ZTogaXNVbmRlZmluZWQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE1lcmdlKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgPT09ICc8PCcgfHwgZGF0YSA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE1lcmdlXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sTnVsbChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGg7XG5cbiAgcmV0dXJuIChtYXggPT09IDEgJiYgZGF0YSA9PT0gJ34nKSB8fFxuICAgICAgICAgKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICdOdWxsJyB8fCBkYXRhID09PSAnTlVMTCcpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpc051bGwob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm51bGwnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE51bGwsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE51bGwsXG4gIHByZWRpY2F0ZTogaXNOdWxsLFxuICByZXByZXNlbnQ6IHtcbiAgICBjYW5vbmljYWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICd+JzsgICAgfSxcbiAgICBsb3dlcmNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdudWxsJzsgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdOVUxMJzsgfSxcbiAgICBjYW1lbGNhc2U6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdOdWxsJzsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sT21hcChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgb2JqZWN0S2V5cyA9IFtdLCBpbmRleCwgbGVuZ3RoLCBwYWlyLCBwYWlyS2V5LCBwYWlySGFzS2V5LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcbiAgICBwYWlySGFzS2V5ID0gZmFsc2U7XG5cbiAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHBhaXJLZXkgaW4gcGFpcikge1xuICAgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhaXIsIHBhaXJLZXkpKSB7XG4gICAgICAgIGlmICghcGFpckhhc0tleSkgcGFpckhhc0tleSA9IHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGFpckhhc0tleSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iamVjdEtleXMuaW5kZXhPZihwYWlyS2V5KSA9PT0gLTEpIG9iamVjdEtleXMucHVzaChwYWlyS2V5KTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sT21hcChkYXRhKSB7XG4gIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE9tYXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE9tYXBcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAgaWYgKF90b1N0cmluZy5jYWxsKHBhaXIpICE9PSAnW29iamVjdCBPYmplY3RdJykgcmV0dXJuIGZhbHNlO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuXG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFBhaXJzKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBbXTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxQYWlycyxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sUGFpcnNcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2VxJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdOyB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIga2V5LCBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoa2V5IGluIG9iamVjdCkge1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgIGlmIChvYmplY3Rba2V5XSAhPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sU2V0KGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNldCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogJyc7IH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIFlBTUxfREFURV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICAnXihbMC05XVswLTldWzAtOV1bMC05XSknICAgICAgICAgICsgLy8gWzFdIHllYXJcbiAgJy0oWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFsyXSBtb250aFxuICAnLShbMC05XVswLTldKSQnKTsgICAgICAgICAgICAgICAgICAgLy8gWzNdIGRheVxuXG52YXIgWUFNTF9USU1FU1RBTVBfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICArIC8vIFszXSBkYXlcbiAgJyg/OltUdF18WyBcXFxcdF0rKScgICAgICAgICAgICAgICAgICsgLy8gLi4uXG4gICcoWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNF0gaG91clxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzVdIG1pbnV0ZVxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzZdIHNlY29uZFxuICAnKD86XFxcXC4oWzAtOV0qKSk/JyAgICAgICAgICAgICAgICAgKyAvLyBbN10gZnJhY3Rpb25cbiAgJyg/OlsgXFxcXHRdKihafChbLStdKShbMC05XVswLTldPyknICsgLy8gWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91clxuICAnKD86OihbMC05XVswLTldKSk/KSk/JCcpOyAgICAgICAgICAgLy8gWzExXSB0el9taW51dGVcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgdmFyIG1hdGNoLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24gPSAwLFxuICAgICAgZGVsdGEgPSBudWxsLCB0el9ob3VyLCB0el9taW51dGUsIGRhdGU7XG5cbiAgbWF0Y2ggPSBZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgbWF0Y2ggPSBZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKTtcblxuICBpZiAobWF0Y2ggPT09IG51bGwpIHRocm93IG5ldyBFcnJvcignRGF0ZSByZXNvbHZlIGVycm9yJyk7XG5cbiAgLy8gbWF0Y2g6IFsxXSB5ZWFyIFsyXSBtb250aCBbM10gZGF5XG5cbiAgeWVhciA9ICsobWF0Y2hbMV0pO1xuICBtb250aCA9ICsobWF0Y2hbMl0pIC0gMTsgLy8gSlMgbW9udGggc3RhcnRzIHdpdGggMFxuICBkYXkgPSArKG1hdGNoWzNdKTtcblxuICBpZiAoIW1hdGNoWzRdKSB7IC8vIG5vIGhvdXJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSkpO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs0XSBob3VyIFs1XSBtaW51dGUgWzZdIHNlY29uZCBbN10gZnJhY3Rpb25cblxuICBob3VyID0gKyhtYXRjaFs0XSk7XG4gIG1pbnV0ZSA9ICsobWF0Y2hbNV0pO1xuICBzZWNvbmQgPSArKG1hdGNoWzZdKTtcblxuICBpZiAobWF0Y2hbN10pIHtcbiAgICBmcmFjdGlvbiA9IG1hdGNoWzddLnNsaWNlKDAsIDMpO1xuICAgIHdoaWxlIChmcmFjdGlvbi5sZW5ndGggPCAzKSB7IC8vIG1pbGxpLXNlY29uZHNcbiAgICAgIGZyYWN0aW9uICs9ICcwJztcbiAgICB9XG4gICAgZnJhY3Rpb24gPSArZnJhY3Rpb247XG4gIH1cblxuICAvLyBtYXRjaDogWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91ciBbMTFdIHR6X21pbnV0ZVxuXG4gIGlmIChtYXRjaFs5XSkge1xuICAgIHR6X2hvdXIgPSArKG1hdGNoWzEwXSk7XG4gICAgdHpfbWludXRlID0gKyhtYXRjaFsxMV0gfHwgMCk7XG4gICAgZGVsdGEgPSAodHpfaG91ciAqIDYwICsgdHpfbWludXRlKSAqIDYwMDAwOyAvLyBkZWx0YSBpbiBtaWxpLXNlY29uZHNcbiAgICBpZiAobWF0Y2hbOV0gPT09ICctJykgZGVsdGEgPSAtZGVsdGE7XG4gIH1cblxuICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uKSk7XG5cbiAgaWYgKGRlbHRhKSBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgLSBkZWx0YSk7XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxUaW1lc3RhbXAob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHJldHVybiBvYmplY3QudG9JU09TdHJpbmcoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxUaW1lc3RhbXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFRpbWVzdGFtcCxcbiAgaW5zdGFuY2VPZjogRGF0ZSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sVGltZXN0YW1wXG59KTtcbiIsImZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfVxuXG52YXIgdHNsaWJfMSA9IHJlcXVpcmUoJ3RzbGliJyk7XG52YXIgUmFuZEV4cCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdyYW5kZXhwJykpO1xudmFyIGRlcmVmID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ2RlcmVmJykpO1xudmFyIGpzb25wYXRoID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ2pzb25wYXRoJykpO1xudmFyICRSZWZQYXJzZXIgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnanNvbi1zY2hlbWEtcmVmLXBhcnNlcicpKTtcblxuZnVuY3Rpb24gdGVtcGxhdGUodmFsdWUsIHNjaGVtYSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB0ZW1wbGF0ZSh4LCBzY2hlbWEpOyB9KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8jXFx7KFtcXHcuLV0rKVxcfS9nLCBmdW5jdGlvbiAoXywgJDEpIHsgcmV0dXJuIHNjaGVtYVskMV07IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG4vLyBkeW5hbWljIHByb3h5IGZvciBjdXN0b20gZ2VuZXJhdG9yc1xuZnVuY3Rpb24gcHJveHkoZ2VuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hLCBwcm9wZXJ0eSwgcm9vdFNjaGVtYSkge1xuICAgICAgICB2YXIgZm4gPSB2YWx1ZTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgLy8gc3VwcG9ydCBmb3IgbmVzdGVkIG9iamVjdCwgZmlyc3Qta2V5IGlzIHRoZSBnZW5lcmF0b3JcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGZuID0gT2JqZWN0LmtleXModmFsdWUpWzBdO1xuICAgICAgICAgICAgLy8gdHJlYXQgdGhlIGdpdmVuIGFycmF5IGFzIGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlW2ZuXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZ2VuZXJhdG9yIGlzIGV4cGVjdGluZyBhcnJheXMgdGhleSBzaG91bGQgYmUgbmVzdGVkLCBlLmcuIGBbWzEsIDIsIDNdLCB0cnVlLCAuLi5dYFxuICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZVtmbl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2godmFsdWVbZm5dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzdXBwb3J0IGZvciBrZXlwYXRocywgZS5nLiBcImludGVybmV0LmVtYWlsXCJcbiAgICAgICAgdmFyIHByb3BzID0gZm4uc3BsaXQoJy4nKTtcbiAgICAgICAgLy8gcmV0cmlldmUgYSBmcmVzaCBkZXBlbmRlbmN5XG4gICAgICAgIHZhciBjdHggPSBnZW4oKTtcbiAgICAgICAgd2hpbGUgKHByb3BzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGN0eCA9IGN0eFtwcm9wcy5zaGlmdCgpXTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXRyaWV2ZSBsYXN0IHZhbHVlIGZyb20gY29udGV4dCBvYmplY3RcbiAgICAgICAgdmFsdWUgPSB0eXBlb2YgY3R4ID09PSAnb2JqZWN0JyA/IGN0eFtwcm9wc1swXV0gOiBjdHg7XG4gICAgICAgIC8vIGludm9rZSBkeW5hbWljIGdlbmVyYXRvcnNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5hcHBseShjdHgsIGFyZ3MubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB0ZW1wbGF0ZSh4LCByb290U2NoZW1hKTsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRlc3QgZm9yIHBlbmRpbmcgY2FsbGJhY2tzXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlc29sdmUgdmFsdWUgZm9yIFwiJyArIHByb3BlcnR5ICsgJzogJyArIGZuICsgJ1wiLCBnaXZlbjogJyArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59XG4vKipcbiAqIENvbnRhaW5lciBpcyB1c2VkIHRvIHdyYXAgZXh0ZXJuYWwgZ2VuZXJhdG9ycyAoZmFrZXIsIGNoYW5jZSwgY2FzdWFsLCBldGMuKSBhbmQgaXRzIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAtIGBqc2YuZXh0ZW5kKCdmYWtlcicpYCB3aWxsIGVuaGFuY2Ugb3IgZGVmaW5lIHRoZSBnaXZlbiBkZXBlbmRlbmN5LlxuICogLSBganNmLmRlZmluZSgnZmFrZXInKWAgd2lsbCBwcm92aWRlIHRoZSBcImZha2VyXCIga2V5d29yZCBzdXBwb3J0LlxuICpcbiAqIFJhbmRFeHAgaXMgbm90IGxvbmdlciBjb25zaWRlcmVkIGFuIFwiZXh0ZW5zaW9uXCIuXG4gKi9cbnZhciBDb250YWluZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyKCkge1xuICAgICAgICAvLyBkeW5hbWljIHJlcXVpcmVzIC0gaGFuZGxlIGFsbCBkZXBlbmRlbmNpZXNcbiAgICAgICAgLy8gdGhleSB3aWxsIE5PVCBiZSBpbmNsdWRlZCBvbiB0aGUgYnVuZGxlXG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSB7fTtcbiAgICAgICAgdGhpcy5zdXBwb3J0ID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIGRlcGVuZGVuY3kgZ2l2ZW4gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5yZWdpc3RyeVtuYW1lXSA9IGNhbGxiYWNrKHRoaXMucmVnaXN0cnlbbmFtZV0pO1xuICAgICAgICAvLyBidWlsdC1pbiBwcm94eSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAgICAgIGlmICghdGhpcy5zdXBwb3J0W25hbWVdKSB7XG4gICAgICAgICAgICB0aGlzLnN1cHBvcnRbbmFtZV0gPSBwcm94eShmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5yZWdpc3RyeVtuYW1lXTsgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNldCBrZXl3b3JkIHN1cHBvcnQgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5kZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0W25hbWVdID0gY2FsbGJhY2s7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRlcGVuZGVuY3kgZ2l2ZW4gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHJldHVybnMge0RlcGVuZGVuY3l9XG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVnaXN0cnlbbmFtZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoJ1wiJyArIG5hbWUgKyAnXCIgZGVwZW5kZW5jeSBkb2VzblxcJ3QgZXhpc3QuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnlbbmFtZV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBcHBseSBhIGN1c3RvbSBrZXl3b3JkXG4gICAgICogQHBhcmFtIHNjaGVtYVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgICAgdmFyIGZuID0ga2V5c1tsZW5ndGhdLnJlcGxhY2UoL154LS8sICcnKTtcbiAgICAgICAgICAgIHZhciBnZW4gPSB0aGlzLnN1cHBvcnRbZm5dO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2NoZW1hLCAnZ2VuZXJhdGUnLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAocm9vdFNjaGVtYSkgeyByZXR1cm4gZ2VuLmNhbGwoY29udGV4dCwgc2NoZW1hW2tleXNbbGVuZ3RoXV0sIHNjaGVtYSwga2V5c1tsZW5ndGhdLCByb290U2NoZW1hKTsgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lcjtcbn0oKSk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcmVnaXN0cnkgZm9yIGN1c3RvbSBmb3JtYXRzIHVzZWQgd2l0aGluIEpTRi5cbiAqL1xudmFyIFJlZ2lzdHJ5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlZ2lzdHJ5KCkge1xuICAgICAgICAvLyBlbXB0eSBieSBkZWZhdWx0XG4gICAgICAgIHRoaXMuZGF0YSA9IHt9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgY3VzdG9tIGZvcm1hdFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmRhdGFbbmFtZV0gPSBjYWxsYmFjaztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIG1hbnkgZm9ybWF0cyBhdCBvbmUgc2hvdFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlck1hbnkgPSBmdW5jdGlvbiAoZm9ybWF0cykge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IGZvcm1hdHNbbmFtZV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgZWxlbWVudCBieSByZWdpc3RyeSBrZXlcbiAgICAgKi9cbiAgICBSZWdpc3RyeS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuZGF0YVtuYW1lXTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdob2xlIHJlZ2lzdHJ5IGNvbnRlbnRcbiAgICAgKi9cbiAgICBSZWdpc3RyeS5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9O1xuICAgIHJldHVybiBSZWdpc3RyeTtcbn0oKSk7XG5cbi8vIGluc3RhbnRpYXRlXG52YXIgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTtcbi8qKlxuICogQ3VzdG9tIGZvcm1hdCBBUElcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLXNjaGVtYS1mYWtlci9qc29uLXNjaGVtYS1mYWtlciNjdXN0b20tZm9ybWF0c1xuICogQHBhcmFtIG5hbWVPckZvcm1hdE1hcFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBmb3JtYXRBUEkobmFtZU9yRm9ybWF0TWFwLCBjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgbmFtZU9yRm9ybWF0TWFwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gcmVnaXN0cnkubGlzdCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgbmFtZU9yRm9ybWF0TWFwID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlcihuYW1lT3JGb3JtYXRNYXAsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWdpc3RyeS5nZXQobmFtZU9yRm9ybWF0TWFwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJNYW55KG5hbWVPckZvcm1hdE1hcCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoaXMgY2xhc3MgZGVmaW5lcyBhIHJlZ2lzdHJ5IGZvciBjdXN0b20gc2V0dGluZ3MgdXNlZCB3aXRoaW4gSlNGLlxuICovXG52YXIgT3B0aW9uUmVnaXN0cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgdHNsaWJfMS5fX2V4dGVuZHMoT3B0aW9uUmVnaXN0cnksIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gT3B0aW9uUmVnaXN0cnkoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBfdGhpcy5kZWZhdWx0cztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT3B0aW9uUmVnaXN0cnkucHJvdG90eXBlLCBcImRlZmF1bHRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgICAgZGF0YVsnZGVmYXVsdEludmFsaWRUeXBlUHJvZHVjdCddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ2RlZmF1bHRSYW5kRXhwTWF4J10gPSAxMDtcbiAgICAgICAgICAgIGRhdGFbJ2lnbm9yZVByb3BlcnRpZXMnXSA9IFtdO1xuICAgICAgICAgICAgZGF0YVsnaWdub3JlTWlzc2luZ1JlZnMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnZmFpbE9uSW52YWxpZFR5cGVzJ10gPSB0cnVlO1xuICAgICAgICAgICAgZGF0YVsnZmFpbE9uSW52YWxpZEZvcm1hdCddID0gdHJ1ZTtcbiAgICAgICAgICAgIGRhdGFbJ2Fsd2F5c0Zha2VPcHRpb25hbHMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnb3B0aW9uYWxzUHJvYmFiaWxpdHknXSA9IDAuMDtcbiAgICAgICAgICAgIGRhdGFbJ3VzZURlZmF1bHRWYWx1ZSddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydyZXF1aXJlZE9ubHknXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnbWluSXRlbXMnXSA9IDA7XG4gICAgICAgICAgICBkYXRhWydtYXhJdGVtcyddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ21heExlbmd0aCddID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGFbJ3Jlc29sdmVKc29uUGF0aCddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydyZXVzZVByb3BlcnRpZXMnXSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0YVsnZmlsbFByb3BlcnRpZXMnXSA9IHRydWU7XG4gICAgICAgICAgICBkYXRhWydyYW5kb20nXSA9IE1hdGgucmFuZG9tO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBPcHRpb25SZWdpc3RyeTtcbn0oUmVnaXN0cnkpKTtcblxuLy8gaW5zdGFudGlhdGVcbnZhciByZWdpc3RyeSQxID0gbmV3IE9wdGlvblJlZ2lzdHJ5KCk7XG4vKipcbiAqIEN1c3RvbSBvcHRpb24gQVBJXG4gKlxuICogQHBhcmFtIG5hbWVPck9wdGlvbk1hcFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gb3B0aW9uQVBJKG5hbWVPck9wdGlvbk1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZU9yT3B0aW9uTWFwID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcmVnaXN0cnkkMS5nZXQobmFtZU9yT3B0aW9uTWFwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeSQxLnJlZ2lzdGVyTWFueShuYW1lT3JPcHRpb25NYXApO1xuICAgIH1cbn1cbm9wdGlvbkFQSS5nZXREZWZhdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlZ2lzdHJ5JDEuZGVmYXVsdHM7IH07XG5cbnZhciBBTExfVFlQRVMgPSBbJ2FycmF5JywgJ29iamVjdCcsICdpbnRlZ2VyJywgJ251bWJlcicsICdzdHJpbmcnLCAnYm9vbGVhbicsICdudWxsJ107XG52YXIgTU9TVF9ORUFSX0RBVEVUSU1FID0gMjUyNDYwODAwMDAwMDtcbnZhciBNSU5fSU5URUdFUiA9IC0xMDAwMDAwMDA7XG52YXIgTUFYX0lOVEVHRVIgPSAxMDAwMDAwMDA7XG52YXIgTUlOX05VTUJFUiA9IC0xMDA7XG52YXIgTUFYX05VTUJFUiA9IDEwMDtcbnZhciBlbnYgPSB7XG4gICAgQUxMX1RZUEVTOiBBTExfVFlQRVMsXG4gICAgTUlOX05VTUJFUjogTUlOX05VTUJFUixcbiAgICBNQVhfTlVNQkVSOiBNQVhfTlVNQkVSLFxuICAgIE1JTl9JTlRFR0VSOiBNSU5fSU5URUdFUixcbiAgICBNQVhfSU5URUdFUjogTUFYX0lOVEVHRVIsXG4gICAgTU9TVF9ORUFSX0RBVEVUSU1FOiBNT1NUX05FQVJfREFURVRJTUUsXG59O1xuXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vaW5kZXguZC50c1wiIC8+XG5mdW5jdGlvbiBfcmFuZGV4cCh2YWx1ZSkge1xuICAgIC8vIHNldCBtYXhpbXVtIGRlZmF1bHQsIHNlZSAjMTkzXG4gICAgUmFuZEV4cC5wcm90b3R5cGUubWF4ID0gb3B0aW9uQVBJKCdkZWZhdWx0UmFuZEV4cE1heCcpO1xuICAgIC8vIHNhbWUgaW1wbGVtZW50YXRpb24gYXMgdGhlIG9yaWdpbmFsIGV4Y2VwdCB1c2luZyBvdXIgcmFuZG9tXG4gICAgUmFuZEV4cC5wcm90b3R5cGUucmFuZEludCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhICsgTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiAoMSArIGIgLSBhKSk7XG4gICAgfTtcbiAgICB2YXIgcmUgPSBuZXcgUmFuZEV4cCh2YWx1ZSk7XG4gICAgcmV0dXJuIHJlLmdlbigpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHJhbmRvbSBlbGVtZW50IG9mIGEgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZnVuY3Rpb24gcGljayhjb2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25bTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiBjb2xsZWN0aW9uLmxlbmd0aCldO1xufVxuLyoqXG4gKiBSZXR1cm5zIHNodWZmbGVkIGNvbGxlY3Rpb24gb2YgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvblxuICogQHJldHVybnMge1RbXX1cbiAqL1xuZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgdmFyIHRtcCwga2V5LCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgpLCBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICBmb3IgKDsgbGVuZ3RoID4gMDspIHtcbiAgICAgICAga2V5ID0gTWF0aC5mbG9vcihvcHRpb25BUEkoJ3JhbmRvbScpKCkgKiBsZW5ndGgpO1xuICAgICAgICAvLyBzd2FwXG4gICAgICAgIHRtcCA9IGNvcHlbLS1sZW5ndGhdO1xuICAgICAgICBjb3B5W2xlbmd0aF0gPSBjb3B5W2tleV07XG4gICAgICAgIGNvcHlba2V5XSA9IHRtcDtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59XG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIG1pbiAoaW5jbHVzaXZlKSBhbmQgbWF4IChpbmNsdXNpdmUpXG4gKiBVc2luZyBNYXRoLnJvdW5kKCkgd2lsbCBnaXZlIHlvdSBhIG5vbi11bmlmb3JtIGRpc3RyaWJ1dGlvbiFcbiAqIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUyNzgyMC83NjkzODRcbiAqL1xuZnVuY3Rpb24gZ2V0UmFuZG9tKG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIChtYXggLSBtaW4pICsgbWluO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9tIG51bWJlciBhY2NvcmRpbmcgdG8gcGFyYW1ldGVycyBwYXNzZWRcbiAqXG4gKiBAcGFyYW0gbWluXG4gKiBAcGFyYW0gbWF4XG4gKiBAcGFyYW0gZGVmTWluXG4gKiBAcGFyYW0gZGVmTWF4XG4gKiBAcGFyYW0gaGFzUHJlY2lzaW9uXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBudW1iZXIobWluLCBtYXgsIGRlZk1pbiwgZGVmTWF4LCBoYXNQcmVjaXNpb24pIHtcbiAgICBpZiAoaGFzUHJlY2lzaW9uID09PSB2b2lkIDApIHsgaGFzUHJlY2lzaW9uID0gZmFsc2U7IH1cbiAgICBkZWZNaW4gPSB0eXBlb2YgZGVmTWluID09PSAndW5kZWZpbmVkJyA/IGVudi5NSU5fTlVNQkVSIDogZGVmTWluO1xuICAgIGRlZk1heCA9IHR5cGVvZiBkZWZNYXggPT09ICd1bmRlZmluZWQnID8gZW52Lk1BWF9OVU1CRVIgOiBkZWZNYXg7XG4gICAgbWluID0gdHlwZW9mIG1pbiA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZNaW4gOiBtaW47XG4gICAgbWF4ID0gdHlwZW9mIG1heCA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZNYXggOiBtYXg7XG4gICAgaWYgKG1heCA8IG1pbikge1xuICAgICAgICBtYXggKz0gbWluO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gZ2V0UmFuZG9tKG1pbiwgbWF4KTtcbiAgICBpZiAoIWhhc1ByZWNpc2lvbikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChyZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gYnkodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMCwgNjApICogNjA7XG4gICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigxNSwgNTApICogNjEyO1xuICAgICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDEyLCA3MikgKiAzNjEyMztcbiAgICAgICAgY2FzZSAnZGF5cyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDcsIDMwKSAqIDg2NDEyMzQ1O1xuICAgICAgICBjYXNlICd3ZWVrcyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDQsIDUyKSAqIDYwNDgxMjM0NTtcbiAgICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMiwgMTMpICogMjU5MjAxMjM0NTtcbiAgICAgICAgY2FzZSAneWVhcnMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigxLCAyMCkgKiAzMTEwNDAxMjM0NTtcbiAgICB9XG59XG5mdW5jdGlvbiBkYXRlKHN0ZXApIHtcbiAgICBpZiAoc3RlcCkge1xuICAgICAgICByZXR1cm4gYnkoc3RlcCk7XG4gICAgfVxuICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIHZhciBkYXlzID0gbnVtYmVyKC0xMDAwLCBlbnYuTU9TVF9ORUFSX0RBVEVUSU1FKTtcbiAgICBub3cuc2V0VGltZShub3cuZ2V0VGltZSgpIC0gZGF5cyk7XG4gICAgcmV0dXJuIG5vdztcbn1cbnZhciByYW5kb20gPSB7XG4gICAgcGljazogcGljayxcbiAgICBkYXRlOiBkYXRlLFxuICAgIHJhbmRleHA6IF9yYW5kZXhwLFxuICAgIHNodWZmbGU6IHNodWZmbGUsXG4gICAgbnVtYmVyOiBudW1iZXIsXG59O1xuXG5mdW5jdGlvbiBnZXRTdWJBdHRyaWJ1dGUob2JqLCBkb3RTZXBhcmF0ZWRLZXkpIHtcbiAgICB2YXIga2V5RWxlbWVudHMgPSBkb3RTZXBhcmF0ZWRLZXkuc3BsaXQoJy4nKTtcbiAgICB3aGlsZSAoa2V5RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBwcm9wID0ga2V5RWxlbWVudHMuc2hpZnQoKTtcbiAgICAgICAgaWYgKCFvYmpbcHJvcF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iaiA9IG9ialtwcm9wXTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlL2ZhbHNlIHdoZXRoZXIgdGhlIG9iamVjdCBwYXJhbWV0ZXIgaGFzIGl0cyBvd24gcHJvcGVydGllcyBkZWZpbmVkXG4gKlxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNQcm9wZXJ0aWVzKG9iaikge1xuICAgIHZhciBwcm9wZXJ0aWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcHJvcGVydGllc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmpba2V5XSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfSkubGVuZ3RoID4gMDtcbn1cbi8qKlxuICogUmV0dXJucyB0eXBlY2FzdGVkIHZhbHVlLlxuICogRXh0ZXJuYWwgZ2VuZXJhdG9ycyAoZmFrZXIsIGNoYW5jZSwgY2FzdWFsKSBtYXkgcmV0dXJuIGRhdGEgaW4gbm9uLWV4cGVjdGVkIGZvcm1hdHMsIHN1Y2ggYXMgc3RyaW5nLCB3aGVuIHlvdSBtaWdodCBleHBlY3QgYW5cbiAqIGludGVnZXIuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmb3JjZSB0aGUgdHlwZWNhc3QuIFRoaXMgaXMgdGhlIGJhc2UgZm9ybWF0dGVyIGZvciBhbGwgcmVzdWx0IHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIHR5cGVjYXN0KHNjaGVtYSwgY2FsbGJhY2spIHtcbiAgICB2YXIgcGFyYW1zID0ge307XG4gICAgLy8gbm9ybWFsaXplIGNvbnN0cmFpbnRzXG4gICAgc3dpdGNoIChzY2hlbWEudHlwZSkge1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1pbmltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbmltdW0gPSBzY2hlbWEubWluaW11bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1heGltdW0gPSBzY2hlbWEubWF4aW11bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY2hlbWEuZW51bSkge1xuICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1heChwYXJhbXMubWluaW11bSB8fCAwLCAwKTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gTWF0aC5taW4ocGFyYW1zLm1heGltdW0gfHwgSW5maW5pdHksIEluZmluaXR5KTtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gJiYgbWluID09PSBzY2hlbWEubWluaW11bSkge1xuICAgICAgICAgICAgICAgICAgICBtaW4gKz0gc2NoZW1hLm11bHRpcGxlT2YgfHwgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICYmIG1heCA9PT0gc2NoZW1hLm1heGltdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4IC09IHNjaGVtYS5tdWx0aXBsZU9mIHx8IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgb3V0LW9mLWJvdW5kcyBlbnVtZXJhdGlvbnNcbiAgICAgICAgICAgICAgICBzY2hlbWEuZW51bSA9IHNjaGVtYS5lbnVtLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoeCA+PSBtaW4gJiYgeCA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWluTGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5taW5MZW5ndGggPSBzY2hlbWEubWluTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4TGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXhMZW5ndGggPSBzY2hlbWEubWF4TGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9tYXhMZW5ndGggPSBvcHRpb25BUEkoJ21heExlbmd0aCcpO1xuICAgICAgICAgICAgdmFyIF9taW5MZW5ndGggPSBvcHRpb25BUEkoJ21pbkxlbmd0aCcpO1xuICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdXNlciB0byBzZXQgbWF4IGxlbmd0aCBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICAgICAgaWYgKF9tYXhMZW5ndGggJiYgcGFyYW1zLm1heExlbmd0aCA+IF9tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWF4TGVuZ3RoID0gX21heExlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1pbiBsZW5ndGggYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgICAgIGlmIChfbWluTGVuZ3RoICYmIHBhcmFtcy5taW5MZW5ndGggPCBfbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbkxlbmd0aCA9IF9taW5MZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gZXhlY3V0ZSBnZW5lcmF0b3JcbiAgICB2YXIgdmFsdWUgPSBjYWxsYmFjayhwYXJhbXMpO1xuICAgIC8vIG5vcm1hbGl6ZSBvdXRwdXQgdmFsdWVcbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgdmFsdWUgPSAhIXZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB2YXIgbWluID0gTWF0aC5tYXgocGFyYW1zLm1pbkxlbmd0aCB8fCAwLCAwKTtcbiAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1pbihwYXJhbXMubWF4TGVuZ3RoIHx8IEluZmluaXR5LCBJbmZpbml0eSk7XG4gICAgICAgICAgICB3aGlsZSAodmFsdWUubGVuZ3RoIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJyAnICsgdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHIoMCwgbWF4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiW2tleV0gIT09ICdvYmplY3QnIHx8IGJba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYVtrZXldID0gYltrZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYltrZXldKSkge1xuICAgICAgICAgICAgYVtrZXldID0gYVtrZXldIHx8IFtdO1xuICAgICAgICAgICAgLy8gZml4ICMyOTIgLSBza2lwIGR1cGxpY2F0ZWQgdmFsdWVzIGZyb20gbWVyZ2Ugb2JqZWN0IChiKVxuICAgICAgICAgICAgYltrZXldLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFba2V5XS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhW2tleV0gIT09ICdvYmplY3QnIHx8IGFba2V5XSA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KGFba2V5XSkpIHtcbiAgICAgICAgICAgIGFba2V5XSA9IG1lcmdlKHt9LCBiW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYVtrZXldID0gbWVyZ2UoYVtrZXldLCBiW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gY2xlYW4ob2JqLCBpc0FycmF5LCByZXF1aXJlZFByb3BzKSB7XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmogPSBvYmpcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBjbGVhbih2YWx1ZSwgdHJ1ZSwgcmVxdWlyZWRQcm9wcyk7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJzsgfSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAoIXJlcXVpcmVkUHJvcHMgfHwgcmVxdWlyZWRQcm9wcy5pbmRleE9mKGspID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqW2tdKSAmJiAhb2JqW2tdLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvYmpba10gPSBjbGVhbihvYmpba10pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAmJiBpc0FycmF5KSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBzaG9ydChzY2hlbWEpIHtcbiAgICB2YXIgcyA9IEpTT04uc3RyaW5naWZ5KHNjaGVtYSk7XG4gICAgdmFyIGwgPSBKU09OLnN0cmluZ2lmeShzY2hlbWEsIG51bGwsIDIpO1xuICAgIHJldHVybiBzLmxlbmd0aCA+IDQwMCA/IGwuc3Vic3RyKDAsIDQwMCkgKyAnLi4uJyA6IGw7XG59XG5mdW5jdGlvbiBhbnlWYWx1ZSgpIHtcbiAgICByZXR1cm4gcmFuZG9tLnBpY2soW1xuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgLTEsXG4gICAgICAgIE5hTixcbiAgICAgICAgTWF0aC5QSSxcbiAgICAgICAgSW5maW5pdHksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgW10sXG4gICAgICAgIHt9LFxuICAgICAgICBNYXRoLnJhbmRvbSgpLFxuICAgICAgICBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiksXG4gICAgXSk7XG59XG5mdW5jdGlvbiBub3RWYWx1ZShzY2hlbWEsIHBhcmVudCkge1xuICAgIHZhciBjb3B5ID0gbWVyZ2Uoe30sIHBhcmVudCk7XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5tYXhpbXVtID0gc2NoZW1hLm1pbmltdW07XG4gICAgICAgIGNvcHkuZXhjbHVzaXZlTWF4aW11bSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWluaW11bSA9IHNjaGVtYS5tYXhpbXVtID4gY29weS5tYXhpbXVtID8gMCA6IHNjaGVtYS5tYXhpbXVtO1xuICAgICAgICBjb3B5LmV4Y2x1c2l2ZU1pbmltdW0gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5MZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWF4TGVuZ3RoID0gc2NoZW1hLm1pbkxlbmd0aDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4TGVuZ3RoICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb3B5Lm1pbkxlbmd0aCA9IHNjaGVtYS5tYXhMZW5ndGggPiBjb3B5Lm1heExlbmd0aCA/IDAgOiBzY2hlbWEubWF4TGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLnR5cGUpIHtcbiAgICAgICAgY29weS50eXBlID0gcmFuZG9tLnBpY2soZW52LkFMTF9UWVBFUy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIC8vIHRyZWF0IGJvdGggdHlwZXMgYXMgX3NpbWlsYXIgZW5vdWdoXyB0byBiZSBza2lwcGVkIGVxdWFsXG4gICAgICAgICAgICBpZiAoeCA9PT0gJ251bWJlcicgfHwgeCA9PT0gJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS50eXBlICE9PSAnbnVtYmVyJyAmJiBzY2hlbWEudHlwZSAhPT0gJ2ludGVnZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHggIT09IHNjaGVtYS50eXBlO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFueVZhbHVlKCk7XG4gICAgICAgIH0gd2hpbGUgKHNjaGVtYS5lbnVtLmluZGV4T2YodmFsdWUpICE9PSAtMSk7XG4gICAgICAgIGNvcHkuZW51bSA9IFt2YWx1ZV07XG4gICAgfVxuICAgIGlmIChzY2hlbWEucmVxdWlyZWQgJiYgY29weS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgICAgICBkZWxldGUgY29weS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gVE9ETzogZXhwbG9yZSBtb3JlIHNjZW5hcmlvc1xuICAgIHJldHVybiBjb3B5O1xufVxuLy8gRklYTUU6IGV2YWx1YXRlIG1vcmUgY29uc3RyYWludHM/XG5mdW5jdGlvbiB2YWxpZGF0ZSh2YWx1ZSwgc2NoZW1hcykge1xuICAgIHJldHVybiAhc2NoZW1hcy5ldmVyeShmdW5jdGlvbiAoeCkge1xuICAgICAgICBpZiAodHlwZW9mIHgubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgPj0geC5taW5pbXVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHgubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgPD0geC5tYXhpbXVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNLZXkocHJvcCkge1xuICAgIHJldHVybiBwcm9wID09PSAnZW51bScgfHwgcHJvcCA9PT0gJ2RlZmF1bHQnIHx8IHByb3AgPT09ICdyZXF1aXJlZCcgfHwgcHJvcCA9PT0gJ2RlZmluaXRpb25zJztcbn1cbmZ1bmN0aW9uIG9taXRQcm9wcyhvYmosIHByb3BzKSB7XG4gICAgdmFyIGNvcHkgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgaWYgKHByb3BzLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba10pKSB7XG4gICAgICAgICAgICAgICAgY29weVtrXSA9IG9ialtrXS5zbGljZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29weVtrXSA9IHR5cGVvZiBvYmpba10gPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgID8gbWVyZ2Uoe30sIG9ialtrXSlcbiAgICAgICAgICAgICAgICAgICAgOiBvYmpba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY29weTtcbn1cbnZhciB1dGlscyA9IHtcbiAgICBnZXRTdWJBdHRyaWJ1dGU6IGdldFN1YkF0dHJpYnV0ZSxcbiAgICBoYXNQcm9wZXJ0aWVzOiBoYXNQcm9wZXJ0aWVzLFxuICAgIG9taXRQcm9wczogb21pdFByb3BzLFxuICAgIHR5cGVjYXN0OiB0eXBlY2FzdCxcbiAgICBtZXJnZTogbWVyZ2UsXG4gICAgY2xlYW46IGNsZWFuLFxuICAgIHNob3J0OiBzaG9ydCxcbiAgICBub3RWYWx1ZTogbm90VmFsdWUsXG4gICAgYW55VmFsdWU6IGFueVZhbHVlLFxuICAgIHZhbGlkYXRlOiB2YWxpZGF0ZSxcbiAgICBpc0tleTogaXNLZXksXG59O1xuXG52YXIgUGFyc2VFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICB0c2xpYl8xLl9fZXh0ZW5kcyhQYXJzZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBhcnNlRXJyb3IobWVzc2FnZSwgcGF0aCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfdGhpcywgX3RoaXMuY29uc3RydWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLm5hbWUgPSAnUGFyc2VFcnJvcic7XG4gICAgICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBfdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gUGFyc2VFcnJvcjtcbn0oRXJyb3IpKTtcblxudmFyIGluZmVycmVkUHJvcGVydGllcyA9IHtcbiAgICBhcnJheTogW1xuICAgICAgICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgICAgICAgJ2l0ZW1zJyxcbiAgICAgICAgJ21heEl0ZW1zJyxcbiAgICAgICAgJ21pbkl0ZW1zJyxcbiAgICAgICAgJ3VuaXF1ZUl0ZW1zJ1xuICAgIF0sXG4gICAgaW50ZWdlcjogW1xuICAgICAgICAnZXhjbHVzaXZlTWF4aW11bScsXG4gICAgICAgICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgICAgICAgJ21heGltdW0nLFxuICAgICAgICAnbWluaW11bScsXG4gICAgICAgICdtdWx0aXBsZU9mJ1xuICAgIF0sXG4gICAgb2JqZWN0OiBbXG4gICAgICAgICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICAgICAgICdkZXBlbmRlbmNpZXMnLFxuICAgICAgICAnbWF4UHJvcGVydGllcycsXG4gICAgICAgICdtaW5Qcm9wZXJ0aWVzJyxcbiAgICAgICAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgICAgICAgJ3Byb3BlcnRpZXMnLFxuICAgICAgICAncmVxdWlyZWQnXG4gICAgXSxcbiAgICBzdHJpbmc6IFtcbiAgICAgICAgJ21heExlbmd0aCcsXG4gICAgICAgICdtaW5MZW5ndGgnLFxuICAgICAgICAncGF0dGVybidcbiAgICBdXG59O1xuaW5mZXJyZWRQcm9wZXJ0aWVzLm51bWJlciA9IGluZmVycmVkUHJvcGVydGllcy5pbnRlZ2VyO1xudmFyIHN1YnNjaGVtYVByb3BlcnRpZXMgPSBbXG4gICAgJ2FkZGl0aW9uYWxJdGVtcycsXG4gICAgJ2l0ZW1zJyxcbiAgICAnYWRkaXRpb25hbFByb3BlcnRpZXMnLFxuICAgICdkZXBlbmRlbmNpZXMnLFxuICAgICdwYXR0ZXJuUHJvcGVydGllcycsXG4gICAgJ3Byb3BlcnRpZXMnXG5dO1xuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCBrZXlzIG9mIGBvYmpgIGFuZDpcbiAqIC0gY2hlY2tzIHdoZXRoZXIgdGhvc2Uga2V5cyBtYXRjaCBwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gaW5mZXJyZWQgdHlwZVxuICogLSBtYWtlcyBzdXJlIHRoYXQgYG9iamAgaXMgbm90IGEgc3Vic2NoZW1hOyBfRG8gbm90IGF0dGVtcHQgdG8gaW5mZXIgcHJvcGVydGllcyBuYW1lZCBhcyBzdWJzY2hlbWEgY29udGFpbmVycy4gVGhlXG4gKiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBhbnkgcHJvcGVydHkgbmFtZSB3aXRoaW4gdGhvc2UgY29udGFpbmVycyB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIHVzZWQgZm9yXG4gKiBpbmZlcnJpbmcgbWlzc2luZyB0eXBlIHZhbHVlcyBjYXVzZXMgdGhlIGNvbnRhaW5lciBpdHNlbGYgdG8gZ2V0IHByb2Nlc3NlZCB3aGljaCBsZWFkcyB0byBpbnZhbGlkIG91dHB1dC4gKElzc3VlIDYyKV9cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1R5cGUob2JqLCBsYXN0RWxlbWVudEluUGF0aCwgaW5mZXJyZWRUeXBlUHJvcGVydGllcykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICB2YXIgaXNTdWJzY2hlbWEgPSBzdWJzY2hlbWFQcm9wZXJ0aWVzLmluZGV4T2YobGFzdEVsZW1lbnRJblBhdGgpID4gLTEsIGluZmVycmVkUHJvcGVydHlGb3VuZCA9IGluZmVycmVkVHlwZVByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA+IC0xO1xuICAgICAgICBpZiAoaW5mZXJyZWRQcm9wZXJ0eUZvdW5kICYmICFpc1N1YnNjaGVtYSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9KS5sZW5ndGggPiAwO1xufVxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBnaXZlbiBgb2JqYCB0eXBlIG1pZ2h0IGJlIGluZmVycmVkLiBUaGUgbWVjaGFuaXNtIGl0ZXJhdGVzIHRocm91Z2ggYWxsIGluZmVycmVkIHR5cGVzIGRlZmluaXRpb25zLFxuICogdHJpZXMgdG8gbWF0Y2ggYWxsb3dlZCBwcm9wZXJ0aWVzIHdpdGggcHJvcGVydGllcyBvZiBnaXZlbiBgb2JqYC4gUmV0dXJucyB0eXBlIG5hbWUsIGlmIGluZmVycmVkLCBvciBudWxsLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd8bnVsbH1cbiAqL1xuZnVuY3Rpb24gaW5mZXJUeXBlKG9iaiwgc2NoZW1hUGF0aCkge1xuICAgIGZvciAodmFyIHR5cGVOYW1lIGluIGluZmVycmVkUHJvcGVydGllcykge1xuICAgICAgICB2YXIgbGFzdEVsZW1lbnRJblBhdGggPSBzY2hlbWFQYXRoW3NjaGVtYVBhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChtYXRjaGVzVHlwZShvYmosIGxhc3RFbGVtZW50SW5QYXRoLCBpbmZlcnJlZFByb3BlcnRpZXNbdHlwZU5hbWVdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGJvb2xlYW5HZW5lcmF0b3IoKSB7XG4gICAgcmV0dXJuIG9wdGlvbkFQSSgncmFuZG9tJykoKSA+IDAuNTtcbn1cblxudmFyIGJvb2xlYW5UeXBlID0gYm9vbGVhbkdlbmVyYXRvcjtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgbnVsbCB2YWx1ZS5cbiAqXG4gKiBAcmV0dXJucyB7bnVsbH1cbiAqL1xuZnVuY3Rpb24gbnVsbEdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbn1cblxudmFyIG51bGxUeXBlID0gbnVsbEdlbmVyYXRvcjtcblxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiB1bmlxdWUocGF0aCwgaXRlbXMsIHZhbHVlLCBzYW1wbGUsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spIHtcbiAgICB2YXIgdG1wID0gW10sIHNlZW4gPSBbXTtcbiAgICBmdW5jdGlvbiB3YWxrKG9iaikge1xuICAgICAgICB2YXIganNvbiA9IEpTT04uc3RyaW5naWZ5KG9iaik7XG4gICAgICAgIGlmIChzZWVuLmluZGV4T2YoanNvbikgPT09IC0xKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goanNvbik7XG4gICAgICAgICAgICB0bXAucHVzaChvYmopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGl0ZW1zLmZvckVhY2god2Fsayk7XG4gICAgLy8gVE9ETzogZmluZCBhIGJldHRlciBzb2x1dGlvbj9cbiAgICB2YXIgbGltaXQgPSAxMDA7XG4gICAgd2hpbGUgKHRtcC5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICB3YWxrKHRyYXZlcnNlQ2FsbGJhY2sodmFsdWUuaXRlbXMgfHwgc2FtcGxlLCBwYXRoLCByZXNvbHZlKSk7XG4gICAgICAgIGlmICghbGltaXQtLSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRtcDtcbn1cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xudmFyIGFycmF5VHlwZSA9IGZ1bmN0aW9uIGFycmF5VHlwZSh2YWx1ZSwgcGF0aCwgcmVzb2x2ZSwgdHJhdmVyc2VDYWxsYmFjaykge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIGlmICghKHZhbHVlLml0ZW1zIHx8IHZhbHVlLmFkZGl0aW9uYWxJdGVtcykpIHtcbiAgICAgICAgaWYgKHV0aWxzLmhhc1Byb3BlcnRpZXModmFsdWUsICdtaW5JdGVtcycsICdtYXhJdGVtcycsICd1bmlxdWVJdGVtcycpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcignbWlzc2luZyBpdGVtcyBmb3IgJyArIHV0aWxzLnNob3J0KHZhbHVlKSwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICAvLyBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzgzNTUyMjgvNzY5Mzg0XG4gICAgLy8gYWZ0ZXIgdHlwZSBndWFyZHMgc3VwcG9ydCBzdWJwcm9wZXJ0aWVzIChpbiBUUyAyLjApIHdlIGNhbiBzaW1wbGlmeSBiZWxvdyB0byAodmFsdWUuaXRlbXMgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAvLyBzbyB0aGF0IHZhbHVlLml0ZW1zLm1hcCBiZWNvbWVzIHJlY29nbml6ZWQgZm9yIHR5cGVzY3JpcHQgY29tcGlsZXJcbiAgICB2YXIgdG1wSXRlbXMgPSB2YWx1ZS5pdGVtcztcbiAgICBpZiAodG1wSXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKGl0ZW1zLCB0bXBJdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0sIGtleSkge1xuICAgICAgICAgICAgdmFyIGl0ZW1TdWJwYXRoID0gcGF0aC5jb25jYXQoWydpdGVtcycsIGtleSArICcnXSk7XG4gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VDYWxsYmFjayhpdGVtLCBpdGVtU3VicGF0aCwgcmVzb2x2ZSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgdmFyIG1pbkl0ZW1zID0gdmFsdWUubWluSXRlbXM7XG4gICAgdmFyIG1heEl0ZW1zID0gdmFsdWUubWF4SXRlbXM7XG4gICAgaWYgKG9wdGlvbkFQSSgnbWluSXRlbXMnKSAmJiBtaW5JdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpeCBib3VuZGFyaWVzXG4gICAgICAgIG1pbkl0ZW1zID0gIW1heEl0ZW1zXG4gICAgICAgICAgICA/IG9wdGlvbkFQSSgnbWluSXRlbXMnKVxuICAgICAgICAgICAgOiBNYXRoLm1pbihvcHRpb25BUEkoJ21pbkl0ZW1zJyksIG1heEl0ZW1zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbkFQSSgnbWF4SXRlbXMnKSkge1xuICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtYXggaXRlbXMgYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgaWYgKG1heEl0ZW1zICYmIG1heEl0ZW1zID4gb3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgICBtYXhJdGVtcyA9IG9wdGlvbkFQSSgnbWF4SXRlbXMnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtaW4gaXRlbXMgYWJvdmUgb3VyIG1heGltdW1cbiAgICAgICAgaWYgKG1pbkl0ZW1zICYmIG1pbkl0ZW1zID4gb3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgICAgICBtaW5JdGVtcyA9IG1heEl0ZW1zO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBvcHRpb25hbHNQcm9iYWJpbGl0eSA9IG9wdGlvbkFQSSgnYWx3YXlzRmFrZU9wdGlvbmFscycpID09PSB0cnVlID8gMS4wIDogb3B0aW9uQVBJKCdvcHRpb25hbHNQcm9iYWJpbGl0eScpO1xuICAgIHZhciBsZW5ndGggPSAobWF4SXRlbXMgIT0gbnVsbCAmJiBvcHRpb25hbHNQcm9iYWJpbGl0eSlcbiAgICAgICAgPyBNYXRoLnJvdW5kKG1heEl0ZW1zICogb3B0aW9uYWxzUHJvYmFiaWxpdHkpXG4gICAgICAgIDogcmFuZG9tLm51bWJlcihtaW5JdGVtcywgbWF4SXRlbXMsIDEsIDUpLCBcbiAgICAvLyBUT0RPIGJlbG93IGxvb2tzIGJhZC4gU2hvdWxkIGFkZGl0aW9uYWxJdGVtcyBiZSBjb3BpZWQgYXMtaXM/XG4gICAgc2FtcGxlID0gdHlwZW9mIHZhbHVlLmFkZGl0aW9uYWxJdGVtcyA9PT0gJ29iamVjdCcgPyB2YWx1ZS5hZGRpdGlvbmFsSXRlbXMgOiB7fTtcbiAgICBmb3IgKHZhciBjdXJyZW50ID0gaXRlbXMubGVuZ3RoOyBjdXJyZW50IDwgbGVuZ3RoOyBjdXJyZW50KyspIHtcbiAgICAgICAgdmFyIGl0ZW1TdWJwYXRoID0gcGF0aC5jb25jYXQoWydpdGVtcycsIGN1cnJlbnQgKyAnJ10pO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRyYXZlcnNlQ2FsbGJhY2sodmFsdWUuaXRlbXMgfHwgc2FtcGxlLCBpdGVtU3VicGF0aCwgcmVzb2x2ZSk7XG4gICAgICAgIGl0ZW1zLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS51bmlxdWVJdGVtcykge1xuICAgICAgICByZXR1cm4gdW5pcXVlKHBhdGguY29uY2F0KFsnaXRlbXMnXSksIGl0ZW1zLCB2YWx1ZSwgc2FtcGxlLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xufTtcblxudmFyIG51bWJlclR5cGUgPSBmdW5jdGlvbiBudW1iZXJUeXBlKHZhbHVlKSB7XG4gICAgdmFyIG1pbiA9IHR5cGVvZiB2YWx1ZS5taW5pbXVtID09PSAndW5kZWZpbmVkJyA/IGVudi5NSU5fSU5URUdFUiA6IHZhbHVlLm1pbmltdW0sIG1heCA9IHR5cGVvZiB2YWx1ZS5tYXhpbXVtID09PSAndW5kZWZpbmVkJyA/IGVudi5NQVhfSU5URUdFUiA6IHZhbHVlLm1heGltdW0sIG11bHRpcGxlT2YgPSB2YWx1ZS5tdWx0aXBsZU9mO1xuICAgIGlmIChtdWx0aXBsZU9mKSB7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4IC8gbXVsdGlwbGVPZikgKiBtdWx0aXBsZU9mO1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluIC8gbXVsdGlwbGVPZikgKiBtdWx0aXBsZU9mO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZXhjbHVzaXZlTWluaW11bSAmJiBtaW4gPT09IHZhbHVlLm1pbmltdW0pIHtcbiAgICAgICAgbWluICs9IG11bHRpcGxlT2YgfHwgMTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmV4Y2x1c2l2ZU1heGltdW0gJiYgbWF4ID09PSB2YWx1ZS5tYXhpbXVtKSB7XG4gICAgICAgIG1heCAtPSBtdWx0aXBsZU9mIHx8IDE7XG4gICAgfVxuICAgIGlmIChtaW4gPiBtYXgpIHtcbiAgICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgaWYgKG11bHRpcGxlT2YpIHtcbiAgICAgICAgaWYgKFN0cmluZyhtdWx0aXBsZU9mKS5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgICAgICAgICB2YXIgYmFzZSA9IHJhbmRvbS5udW1iZXIoTWF0aC5mbG9vcihtaW4gLyBtdWx0aXBsZU9mKSwgTWF0aC5mbG9vcihtYXggLyBtdWx0aXBsZU9mKSkgKiBtdWx0aXBsZU9mO1xuICAgICAgICAgICAgd2hpbGUgKGJhc2UgPCBtaW4pIHtcbiAgICAgICAgICAgICAgICBiYXNlICs9IHZhbHVlLm11bHRpcGxlT2Y7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm91bmRhcnkgPSAobWF4IC0gbWluKSAvIG11bHRpcGxlT2Y7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHZhciBudW0gPSByYW5kb20ubnVtYmVyKDAsIGJvdW5kYXJ5KSAqIG11bHRpcGxlT2Y7XG4gICAgICAgICAgICB2YXIgZml4ID0gKG51bSAvIG11bHRpcGxlT2YpICUgMTtcbiAgICAgICAgfSB3aGlsZSAoZml4ICE9PSAwKTtcbiAgICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gICAgcmV0dXJuIHJhbmRvbS5udW1iZXIobWluLCBtYXgsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcbn07XG5cbi8vIFRoZSBgaW50ZWdlcmAgdHlwZSBpcyBqdXN0IGEgd3JhcHBlciBmb3IgdGhlIGBudW1iZXJgIHR5cGUuIFRoZSBgbnVtYmVyYCB0eXBlXG4vLyByZXR1cm5zIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZCBgaW50ZWdlcmAgdHlwZSB0cnVuY2F0ZXMgdGhlIGZyYWN0aW9uXG4vLyBwYXJ0LCBsZWF2aW5nIHRoZSByZXN1bHQgYXMgYW4gaW50ZWdlci5cbnZhciBpbnRlZ2VyVHlwZSA9IGZ1bmN0aW9uIGludGVnZXJUeXBlKHZhbHVlKSB7XG4gICAgdmFyIGdlbmVyYXRlZCA9IG51bWJlclR5cGUodmFsdWUpO1xuICAgIC8vIHdoZXRoZXIgdGhlIGdlbmVyYXRlZCBudW1iZXIgaXMgcG9zaXRpdmUgb3IgbmVnYXRpdmUsIG5lZWQgdG8gdXNlIGVpdGhlclxuICAgIC8vIGZsb29yIChwb3NpdGl2ZSkgb3IgY2VpbCAobmVnYXRpdmUpIGZ1bmN0aW9uIHRvIGdldCByaWQgb2YgdGhlIGZyYWN0aW9uXG4gICAgcmV0dXJuIGdlbmVyYXRlZCA+IDAgPyBNYXRoLmZsb29yKGdlbmVyYXRlZCkgOiBNYXRoLmNlaWwoZ2VuZXJhdGVkKTtcbn07XG5cbnZhciBMSVBTVU1fV09SRFMgPSAoJ0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlJ1xuICAgICsgJyBldCBkb2xvcmUgbWFnbmEgYWxpcXVhIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSdcbiAgICArICcgY29tbW9kbyBjb25zZXF1YXQgRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEnXG4gICAgKyAnIHBhcmlhdHVyIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QnXG4gICAgKyAnIGxhYm9ydW0nKS5zcGxpdCgnICcpO1xuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBhcnJheSBvZiBzaW5nbGUgbG9yZW0gaXBzdW0gd29yZHMuXG4gKlxuICogQHBhcmFtIGxlbmd0aFxuICogQHJldHVybnMge0FycmF5LjxzdHJpbmc+fVxuICovXG5mdW5jdGlvbiB3b3Jkc0dlbmVyYXRvcihsZW5ndGgpIHtcbiAgICB2YXIgd29yZHMgPSByYW5kb20uc2h1ZmZsZShMSVBTVU1fV09SRFMpO1xuICAgIHJldHVybiB3b3Jkcy5zbGljZSgwLCBsZW5ndGgpO1xufVxuXG4vLyBmYWxsYmFjayBnZW5lcmF0b3JcbnZhciBhbnlUeXBlID0geyB0eXBlOiBbJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJ10gfTtcbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xudmFyIG9iamVjdFR5cGUgPSBmdW5jdGlvbiBvYmplY3RUeXBlKHZhbHVlLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKSB7XG4gICAgdmFyIHByb3BzID0ge307XG4gICAgdmFyIHByb3BlcnRpZXMgPSB2YWx1ZS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBwYXR0ZXJuUHJvcGVydGllcyA9IHZhbHVlLnBhdHRlcm5Qcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciByZXF1aXJlZFByb3BlcnRpZXMgPSAodmFsdWUucmVxdWlyZWQgfHwgW10pLnNsaWNlKCk7XG4gICAgdmFyIGFsbG93c0FkZGl0aW9uYWwgPSB2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpO1xuICAgIHZhciBwYXR0ZXJuUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMocGF0dGVyblByb3BlcnRpZXMpO1xuICAgIHZhciBvcHRpb25hbFByb3BlcnRpZXMgPSBwcm9wZXJ0eUtleXMuY29uY2F0KHBhdHRlcm5Qcm9wZXJ0eUtleXMpLnJlZHVjZShmdW5jdGlvbiAoX3Jlc3BvbnNlLCBfa2V5KSB7XG4gICAgICAgIGlmIChyZXF1aXJlZFByb3BlcnRpZXMuaW5kZXhPZihfa2V5KSA9PT0gLTEpXG4gICAgICAgICAgICBfcmVzcG9uc2UucHVzaChfa2V5KTtcbiAgICAgICAgcmV0dXJuIF9yZXNwb25zZTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGFsbFByb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnRpZXMuY29uY2F0KG9wdGlvbmFsUHJvcGVydGllcyk7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gYWxsb3dzQWRkaXRpb25hbFxuICAgICAgICA/ICh2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gdHJ1ZSA/IHt9IDogdmFsdWUuYWRkaXRpb25hbFByb3BlcnRpZXMpXG4gICAgICAgIDogbnVsbDtcbiAgICBpZiAoIWFsbG93c0FkZGl0aW9uYWwgJiZcbiAgICAgICAgcHJvcGVydHlLZXlzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICB1dGlscy5oYXNQcm9wZXJ0aWVzKHZhbHVlLCAnbWluUHJvcGVydGllcycsICdtYXhQcm9wZXJ0aWVzJywgJ2RlcGVuZGVuY2llcycsICdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIGp1c3Qgbm90aGluZ1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvcHRpb25BUEkoJ3JlcXVpcmVkT25seScpID09PSB0cnVlKSB7XG4gICAgICAgIHJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRyYXZlcnNlQ2FsbGJhY2socHJvcHMsIHBhdGguY29uY2F0KFsncHJvcGVydGllcyddKSwgcmVzb2x2ZSk7XG4gICAgfVxuICAgIHZhciBvcHRpb25hbHNQcm9iYWJpbGl0eSA9IG9wdGlvbkFQSSgnYWx3YXlzRmFrZU9wdGlvbmFscycpID09PSB0cnVlID8gMS4wIDogb3B0aW9uQVBJKCdvcHRpb25hbHNQcm9iYWJpbGl0eScpO1xuICAgIHZhciBpZ25vcmVQcm9wZXJ0aWVzID0gb3B0aW9uQVBJKCdpZ25vcmVQcm9wZXJ0aWVzJykgfHwgW107XG4gICAgdmFyIG1pbiA9IE1hdGgubWF4KHZhbHVlLm1pblByb3BlcnRpZXMgfHwgMCwgcmVxdWlyZWRQcm9wZXJ0aWVzLmxlbmd0aCk7XG4gICAgdmFyIG1heCA9IE1hdGgubWF4KHZhbHVlLm1heFByb3BlcnRpZXMgfHwgYWxsUHJvcGVydGllcy5sZW5ndGgpO1xuICAgIHZhciBuZWVkZWRFeHRyYXMgPSBNYXRoLnJvdW5kKChtaW4gLSByZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKSArIG9wdGlvbmFsc1Byb2JhYmlsaXR5ICogKG1heCAtIG1pbikpO1xuICAgIHZhciBleHRyYVByb3BlcnRpZXNSYW5kb21PcmRlciA9IHJhbmRvbS5zaHVmZmxlKG9wdGlvbmFsUHJvcGVydGllcykuc2xpY2UoMCwgbmVlZGVkRXh0cmFzKTtcbiAgICB2YXIgZXh0cmFQcm9wZXJ0aWVzID0gb3B0aW9uYWxQcm9wZXJ0aWVzLmZpbHRlcihmdW5jdGlvbiAoX2l0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGV4dHJhUHJvcGVydGllc1JhbmRvbU9yZGVyLmluZGV4T2YoX2l0ZW0pICE9PSAtMTtcbiAgICB9KTtcbiAgICAvLyBwcm9wZXJ0aWVzIGFyZSByZWFkIGZyb20gcmlnaHQtdG8tbGVmdFxuICAgIHZhciBfcHJvcHMgPSByZXF1aXJlZFByb3BlcnRpZXMuY29uY2F0KGV4dHJhUHJvcGVydGllcykuc2xpY2UoMCwgbWF4KTtcbiAgICB2YXIgc2tpcHBlZCA9IFtdO1xuICAgIHZhciBtaXNzaW5nID0gW107XG4gICAgX3Byb3BzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlnbm9yZVByb3BlcnRpZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmICgoaWdub3JlUHJvcGVydGllc1tpXSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiBpZ25vcmVQcm9wZXJ0aWVzW2ldLnRlc3Qoa2V5KSlcbiAgICAgICAgICAgICAgICB8fCAodHlwZW9mIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09ICdzdHJpbmcnICYmIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09IGtleSlcbiAgICAgICAgICAgICAgICB8fCAodHlwZW9mIGlnbm9yZVByb3BlcnRpZXNbaV0gPT09ICdmdW5jdGlvbicgJiYgaWdub3JlUHJvcGVydGllc1tpXShwcm9wZXJ0aWVzW2tleV0sIGtleSkpKSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGZpcnN0IG9uZXMgYXJlIHRoZSByZXF1aXJlZCBwcm9wZXJpZXNcbiAgICAgICAgaWYgKHByb3BlcnRpZXNba2V5XSkge1xuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgIC8vIHRoZW4gdHJ5IHBhdHRlcm5Qcm9wZXJ0aWVzXG4gICAgICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmZvckVhY2goZnVuY3Rpb24gKF9rZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5Lm1hdGNoKG5ldyBSZWdFeHAoX2tleSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcmFuZG9tLnJhbmRleHAoa2V5KV0gPSBwYXR0ZXJuUHJvcGVydGllc1tfa2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyB0cnkgcGF0dGVyblByb3BlcnRpZXMgYWdhaW4sXG4gICAgICAgICAgICAgICAgdmFyIHN1YnNjaGVtYSA9IHBhdHRlcm5Qcm9wZXJ0aWVzW2tleV0gfHwgYWRkaXRpb25hbFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgLy8gRklYTUU6IGFsbG93IGFueVR5cGUgYXMgZmFsbGJhY2sgd2hlbiBubyBzdWJzY2hlbWEgaXMgZ2l2ZW4/XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2UgY2FuIHVzZSBhZGRpdGlvbmFsUHJvcGVydGllcz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcGF0dGVyblByb3BlcnRpZXNba2V5XSA/IHJhbmRvbS5yYW5kZXhwKGtleSkgOiBrZXldID0gc3Vic2NoZW1hO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZpbGxQcm9wcyA9IG9wdGlvbkFQSSgnZmlsbFByb3BlcnRpZXMnKTtcbiAgICB2YXIgcmV1c2VQcm9wcyA9IG9wdGlvbkFQSSgncmV1c2VQcm9wZXJ0aWVzJyk7XG4gICAgLy8gZGlzY2FyZCBhbHJlYWR5IGlnbm9yZWQgcHJvcHMgaWYgdGhleSdyZSBub3QgcmVxdWlyZWQgdG8gYmUgZmlsbGVkLi4uXG4gICAgdmFyIGN1cnJlbnQgPSBPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoICsgKGZpbGxQcm9wcyA/IDAgOiBza2lwcGVkLmxlbmd0aCk7XG4gICAgd2hpbGUgKGZpbGxQcm9wcykge1xuICAgICAgICBpZiAoIShwYXR0ZXJuUHJvcGVydHlLZXlzLmxlbmd0aCB8fCBhbGxvd3NBZGRpdGlvbmFsKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnQgPj0gbWluKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dzQWRkaXRpb25hbCkge1xuICAgICAgICAgICAgaWYgKHJldXNlUHJvcHMgJiYgKChwcm9wZXJ0eUtleXMubGVuZ3RoIC0gY3VycmVudCkgPiBtaW4pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgbGFyZ2Ugb2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAxMDAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gcmFuZG9tLnBpY2socHJvcGVydHlLZXlzKTtcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB3b3JkID0gd29yZHNHZW5lcmF0b3IoMSkgKyByYW5kb20ucmFuZGV4cCgnW2EtZlxcXFxkXXsxLDN9Jyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wc1t3b3JkXSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1t3b3JkXSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIHx8IGFueVR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVyblByb3BlcnR5S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChfa2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZCA9IHJhbmRvbS5yYW5kZXhwKF9rZXkpO1xuICAgICAgICAgICAgaWYgKCFwcm9wc1t3b3JkXSkge1xuICAgICAgICAgICAgICAgIHByb3BzW3dvcmRdID0gcGF0dGVyblByb3BlcnRpZXNbX2tleV07XG4gICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFhbGxvd3NBZGRpdGlvbmFsICYmIGN1cnJlbnQgPCBtaW4pIHtcbiAgICAgICAgaWYgKG1pc3NpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcigncHJvcGVydGllcyBcIicgKyBtaXNzaW5nLmpvaW4oJywgJykgKyAnXCIgd2VyZSBub3QgZm91bmQgd2hpbGUgYWRkaXRpb25hbFByb3BlcnRpZXMgaXMgZmFsc2U6XFxuJyArXG4gICAgICAgICAgICAgICAgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcigncHJvcGVydGllcyBjb25zdHJhaW50cyB3ZXJlIHRvbyBzdHJvbmcgdG8gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlIGEgdmFsaWQgb2JqZWN0IGZvcjpcXG4nICtcbiAgICAgICAgICAgIHV0aWxzLnNob3J0KHZhbHVlKSwgcGF0aCk7XG4gICAgfVxuICAgIHJldHVybiB0cmF2ZXJzZUNhbGxiYWNrKHByb3BzLCBwYXRoLmNvbmNhdChbJ3Byb3BlcnRpZXMnXSksIHJlc29sdmUpO1xufTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0aHVua0dlbmVyYXRvciB0byBwcm9kdWNlIHNvbWUgd29yZHMgZm9yIHRoZSBmaW5hbCByZXN1bHQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcHJvZHVjZSgpIHtcbiAgICB2YXIgbGVuZ3RoID0gcmFuZG9tLm51bWJlcigxLCA1KTtcbiAgICByZXR1cm4gd29yZHNHZW5lcmF0b3IobGVuZ3RoKS5qb2luKCcgJyk7XG59XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGNvbmNhdGVuYXRlZCBzdHJpbmcgYmFzZWQgb24gd29yZHMgZ2VuZXJhdG9yLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRodW5rR2VuZXJhdG9yKG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gdm9pZCAwKSB7IG1pbiA9IDA7IH1cbiAgICBpZiAobWF4ID09PSB2b2lkIDApIHsgbWF4ID0gMTQwOyB9XG4gICAgdmFyIG1pbiA9IE1hdGgubWF4KDAsIG1pbiksIG1heCA9IHJhbmRvbS5udW1iZXIobWluLCBtYXgpLCByZXN1bHQgPSBwcm9kdWNlKCk7XG4gICAgLy8gYXBwZW5kIHVudGlsIGxlbmd0aCBpcyByZWFjaGVkXG4gICAgd2hpbGUgKHJlc3VsdC5sZW5ndGggPCBtaW4pIHtcbiAgICAgICAgcmVzdWx0ICs9IHByb2R1Y2UoKTtcbiAgICB9XG4gICAgLy8gY3V0IGlmIG5lZWRlZFxuICAgIGlmIChyZXN1bHQubGVuZ3RoID4gbWF4KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHIoMCwgbWF4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBpcHY0IGFkZHJlc3MuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gaXB2NEdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gWzAsIDAsIDAsIDBdLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByYW5kb20ubnVtYmVyKDAsIDI1NSk7XG4gICAgfSkuam9pbignLicpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGRhdGUgdGltZSBJU08gZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gcmFuZG9tLmRhdGUoKS50b0lTT1N0cmluZygpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGRhdGUgZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBkYXRlR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpLnNsaWNlKDAsIDEwKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCB0aW1lIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdGltZUdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gZGF0ZVRpbWVHZW5lcmF0b3IoKS5zbGljZSgxMSk7XG59XG5cbi8qKlxuICogUHJlZGVmaW5lZCBjb3JlIGZvcm1hdHNcbiAqIEB0eXBlIHtba2V5OiBzdHJpbmddOiBzdHJpbmd9XG4gKi9cbnZhciByZWdleHBzID0ge1xuICAgIGVtYWlsOiAnW2EtekEtWlxcXFxkXVthLXpBLVpcXFxcZC1dezEsMTN9W2EtekEtWlxcXFxkXUB7aG9zdG5hbWV9JyxcbiAgICBob3N0bmFtZTogJ1thLXpBLVpdezEsMzN9XFxcXC5bYS16XXsyLDR9JyxcbiAgICBpcHY2OiAnW2EtZlxcXFxkXXs0fSg6W2EtZlxcXFxkXXs0fSl7N30nLFxuICAgIHVyaTogJ2h0dHBzPzovL1thLXpBLVpdW2EtekEtWjAtOSstLl0qJyxcbiAgICAndXJpLXJlZmVyZW5jZSc6ICcoaHR0cHM/Oi8vfCN8L3wpW2EtekEtWl1bYS16QS1aMC05Ky0uXSonLFxufTtcbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgc3RyaW5nIGJhc2luZyBvbiBhIGJ1aWx0LWluIHJlZ2V4IGZvcm1hdFxuICpcbiAqIEBwYXJhbSBjb3JlRm9ybWF0XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb3JlRm9ybWF0R2VuZXJhdG9yKGNvcmVGb3JtYXQpIHtcbiAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAocmVnZXhwc1tjb3JlRm9ybWF0XSkucmVwbGFjZSgvXFx7KFxcdyspXFx9LywgZnVuY3Rpb24gKG1hdGNoLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbS5yYW5kZXhwKHJlZ2V4cHNba2V5XSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRm9ybWF0KHZhbHVlLCBpbnZhbGlkKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gZm9ybWF0QVBJKHZhbHVlLmZvcm1hdCk7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsdWUpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHZhbHVlLmZvcm1hdCkge1xuICAgICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWVHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgIHJldHVybiB0aW1lR2VuZXJhdG9yKCk7XG4gICAgICAgIGNhc2UgJ2lwdjQnOlxuICAgICAgICAgICAgcmV0dXJuIGlwdjRHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAncmVnZXgnOlxuICAgICAgICAgICAgLy8gVE9ETzogZGlzY3Vzc1xuICAgICAgICAgICAgcmV0dXJuICcuKz8nO1xuICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIGNhc2UgJ2hvc3RuYW1lJzpcbiAgICAgICAgY2FzZSAnaXB2Nic6XG4gICAgICAgIGNhc2UgJ3VyaSc6XG4gICAgICAgIGNhc2UgJ3VyaS1yZWZlcmVuY2UnOlxuICAgICAgICAgICAgcmV0dXJuIGNvcmVGb3JtYXRHZW5lcmF0b3IodmFsdWUuZm9ybWF0KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbkFQSSgnZmFpbE9uSW52YWxpZEZvcm1hdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biByZWdpc3RyeSBrZXkgJyArIHV0aWxzLnNob3J0KHZhbHVlLmZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludmFsaWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIGZvcm1hdCBcIicgKyB2YWx1ZS5mb3JtYXQgKyAnXCInKTtcbiAgICB9XG59XG52YXIgc3RyaW5nVHlwZSA9IGZ1bmN0aW9uIHN0cmluZ1R5cGUodmFsdWUpIHtcbiAgICB2YXIgb3V0cHV0O1xuICAgIG91dHB1dCA9IHV0aWxzLnR5cGVjYXN0KHZhbHVlLCBmdW5jdGlvbiAob3B0cykge1xuICAgICAgICBpZiAodmFsdWUuZm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtYXQodmFsdWUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRodW5rR2VuZXJhdG9yKG9wdHMubWluTGVuZ3RoLCBvcHRzLm1heExlbmd0aCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5wYXR0ZXJuKSB7XG4gICAgICAgICAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAodmFsdWUucGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRodW5rR2VuZXJhdG9yKG9wdHMubWluTGVuZ3RoLCBvcHRzLm1heExlbmd0aCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dHB1dDtcbn07XG5cbnZhciB0eXBlTWFwID0ge1xuICAgIGJvb2xlYW46IGJvb2xlYW5UeXBlLFxuICAgIG51bGw6IG51bGxUeXBlLFxuICAgIGFycmF5OiBhcnJheVR5cGUsXG4gICAgaW50ZWdlcjogaW50ZWdlclR5cGUsXG4gICAgbnVtYmVyOiBudW1iZXJUeXBlLFxuICAgIG9iamVjdDogb2JqZWN0VHlwZSxcbiAgICBzdHJpbmc6IHN0cmluZ1R5cGVcbn07XG5cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xuZnVuY3Rpb24gdHJhdmVyc2Uoc2NoZW1hLCBwYXRoLCByZXNvbHZlLCByb290U2NoZW1hKSB7XG4gICAgc2NoZW1hID0gcmVzb2x2ZShzY2hlbWEpO1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB2YWx1ZXMgaGFzIGhpZ2hlciBwcmVjZWRlbmNlXG4gICAgaWYgKG9wdGlvbkFQSSgndXNlRGVmYXVsdFZhbHVlJykgJiYgJ2RlZmF1bHQnIGluIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmRlZmF1bHQ7XG4gICAgfVxuICAgIGlmIChzY2hlbWEubm90ICYmIHR5cGVvZiBzY2hlbWEubm90ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBzY2hlbWEgPSB1dGlscy5ub3RWYWx1ZShzY2hlbWEubm90LCB1dGlscy5vbWl0UHJvcHMoc2NoZW1hLCBbJ25vdCddKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5lbnVtKSkge1xuICAgICAgICByZXR1cm4gdXRpbHMudHlwZWNhc3Qoc2NoZW1hLCBmdW5jdGlvbiAoKSB7IHJldHVybiByYW5kb20ucGljayhzY2hlbWEuZW51bSk7IH0pO1xuICAgIH1cbiAgICAvLyB0aHVua3MgY2FuIHJldHVybiBzdWItc2NoZW1hc1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hLnRodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0cmF2ZXJzZShzY2hlbWEudGh1bmsoKSwgcGF0aCwgcmVzb2x2ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLmdlbmVyYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB1dGlscy50eXBlY2FzdChzY2hlbWEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjaGVtYS5nZW5lcmF0ZShyb290U2NoZW1hKTsgfSk7XG4gICAgfVxuICAgIC8vIFRPRE8gcmVtb3ZlIHRoZSB1Z2x5IG92ZXJjb21lXG4gICAgdmFyIHR5cGUgPSBzY2hlbWEudHlwZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICB0eXBlID0gcmFuZG9tLnBpY2sodHlwZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGluZmVyIHRoZSB0eXBlXG4gICAgICAgIHR5cGUgPSBpbmZlclR5cGUoc2NoZW1hLCBwYXRoKSB8fCB0eXBlO1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgc2NoZW1hLnR5cGUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCF0eXBlTWFwW3R5cGVdKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uQVBJKCdmYWlsT25JbnZhbGlkVHlwZXMnKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCd1bmtub3duIHByaW1pdGl2ZSAnICsgdXRpbHMuc2hvcnQodHlwZSksIHBhdGguY29uY2F0KFsndHlwZSddKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uQVBJKCdkZWZhdWx0SW52YWxpZFR5cGVQcm9kdWN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0eXBlTWFwW3R5cGVdKHNjaGVtYSwgcGF0aCwgcmVzb2x2ZSwgdHJhdmVyc2UpO1xuICAgICAgICAgICAgICAgIHZhciByZXF1aXJlZCA9IHNjaGVtYS5pdGVtc1xuICAgICAgICAgICAgICAgICAgICA/IHNjaGVtYS5pdGVtcy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICA6IHNjaGVtYS5yZXF1aXJlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMuY2xlYW4ocmVzdWx0LCBudWxsLCByZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZS5wYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihlLm1lc3NhZ2UsIHBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBjb3B5ID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgICAgICBjb3B5ID0gW107XG4gICAgfVxuICAgIGZvciAodmFyIHByb3AgaW4gc2NoZW1hKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hW3Byb3BdID09PSAnb2JqZWN0JyAmJiBwcm9wICE9PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICBjb3B5W3Byb3BdID0gdHJhdmVyc2Uoc2NoZW1hW3Byb3BdLCBwYXRoLmNvbmNhdChbcHJvcF0pLCByZXNvbHZlLCBjb3B5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvcHlbcHJvcF0gPSBzY2hlbWFbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHBpY2skMShkYXRhKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSlcbiAgICAgICAgPyByYW5kb20ucGljayhkYXRhKVxuICAgICAgICA6IGRhdGE7XG59XG5mdW5jdGlvbiBjeWNsZShkYXRhLCByZXZlcnNlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB2YXIgdmFsdWUgPSByZXZlcnNlXG4gICAgICAgID8gZGF0YS5wb3AoKVxuICAgICAgICA6IGRhdGEuc2hpZnQoKTtcbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBkYXRhLnVuc2hpZnQodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZGF0YS5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZShvYmosIGRhdGEsIHZhbHVlcywgcHJvcGVydHkpIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSB7fTtcbiAgICB9XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIGRhdGEgPSBvYmo7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG9iai5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHJlc29sdmUoeCwgZGF0YSwgdmFsdWVzLCBwcm9wZXJ0eSk7IH0pO1xuICAgIH1cbiAgICBpZiAob2JqLmpzb25QYXRoKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSB0eXBlb2Ygb2JqLmpzb25QYXRoICE9PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB7IHBhdGg6IG9iai5qc29uUGF0aCB9XG4gICAgICAgICAgICA6IG9iai5qc29uUGF0aDtcbiAgICAgICAgcGFyYW1zLmdyb3VwID0gb2JqLmdyb3VwIHx8IHBhcmFtcy5ncm91cCB8fCBwcm9wZXJ0eTtcbiAgICAgICAgcGFyYW1zLmN5Y2xlID0gb2JqLmN5Y2xlIHx8IHBhcmFtcy5jeWNsZSB8fCBmYWxzZTtcbiAgICAgICAgcGFyYW1zLnJldmVyc2UgPSBvYmoucmV2ZXJzZSB8fCBwYXJhbXMucmV2ZXJzZSB8fCBmYWxzZTtcbiAgICAgICAgcGFyYW1zLmNvdW50ID0gb2JqLmNvdW50IHx8IHBhcmFtcy5jb3VudCB8fCAxO1xuICAgICAgICB2YXIga2V5ID0gcGFyYW1zLmdyb3VwICsgXCJfX1wiICsgcGFyYW1zLnBhdGg7XG4gICAgICAgIGlmICghdmFsdWVzW2tleV0pIHtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBqc29ucGF0aC5xdWVyeShkYXRhLCBwYXJhbXMucGF0aCwgcGFyYW1zLmNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlc1trZXldID0ganNvbnBhdGgudmFsdWUoZGF0YSwgcGFyYW1zLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMuY3ljbGUgfHwgcGFyYW1zLnJldmVyc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBjeWNsZSh2YWx1ZXNba2V5XSwgcGFyYW1zLnJldmVyc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaWNrJDEodmFsdWVzW2tleV0pO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgb2JqW2tdID0gcmVzb2x2ZShvYmpba10sIGRhdGEsIHZhbHVlcywgayk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iajtcbn1cbi8vIFRPRE8gcHJvdmlkZSB0eXBlc1xuZnVuY3Rpb24gcnVuKHJlZnMsIHNjaGVtYSwgY29udGFpbmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlKHNjaGVtYSwgW10sIGZ1bmN0aW9uIHJlZHVjZShzdWIsIG1heFJlZHVjZURlcHRoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1heFJlZHVjZURlcHRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIG1heFJlZHVjZURlcHRoID0gcmFuZG9tLm51bWJlcigxLCAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3ViKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1Yi5nZW5lcmF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjbGVhbnVwXG4gICAgICAgICAgICBpZiAoc3ViLmlkICYmIHR5cGVvZiBzdWIuaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5pZDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLiRzY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1Yi4kcmVmID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChzdWIuJHJlZiA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHJlZjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi4kcmVmLmluZGV4T2YoJyMvJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBkZXJlZi51dGlsLmZpbmRCeVJlZihzdWIuJHJlZiwgcmVmcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZmVyZW5jZSBub3QgZm91bmQ6ICcgKyBzdWIuJHJlZik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8ganVzdCByZW1vdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHJlZjtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLmFsbE9mKSkge1xuICAgICAgICAgICAgICAgIHZhciBzY2hlbWFzID0gc3ViLmFsbE9mO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuYWxsT2Y7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgb25seSBjYXNlIHdoZXJlIGFsbCBzdWItc2NoZW1hc1xuICAgICAgICAgICAgICAgIC8vIG11c3QgYmUgcmVzb2x2ZWQgYmVmb3JlIGFueSBtZXJnZVxuICAgICAgICAgICAgICAgIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoc3ViU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfc3ViID0gcmVkdWNlKHN1YlNjaGVtYSwgbWF4UmVkdWNlRGVwdGggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBnaXZlbiB0aHVua3MgaWYgcHJlc2VudFxuICAgICAgICAgICAgICAgICAgICB1dGlscy5tZXJnZShzdWIsIHR5cGVvZiBfc3ViLnRodW5rID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9zdWIudGh1bmsoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfc3ViKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN1Yi5vbmVPZiB8fCBzdWIuYW55T2YpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1peCA9IHN1Yi5vbmVPZiB8fCBzdWIuYW55T2Y7XG4gICAgICAgICAgICAgICAgLy8gdGVzdCBldmVyeSB2YWx1ZSBmcm9tIHRoZSBlbnVtIGFnYWluc3QgZWFjaC1vbmVPZlxuICAgICAgICAgICAgICAgIC8vIHNjaGVtYSwgb25seSB2YWx1ZXMgdGhhdCB2YWxpZGF0ZSBvbmNlIGFyZSBrZXB0XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi5lbnVtICYmIHN1Yi5vbmVPZikge1xuICAgICAgICAgICAgICAgICAgICBzdWIuZW51bSA9IHN1Yi5lbnVtLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gdXRpbHMudmFsaWRhdGUoeCwgbWl4KTsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuYW55T2Y7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5vbmVPZjtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aHVuazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvcHkgPSB1dGlscy5tZXJnZSh7fSwgc3ViKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLm1lcmdlKGNvcHksIHJhbmRvbS5waWNrKG1peCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gc3ViKSB7XG4gICAgICAgICAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KHN1Yltwcm9wXSkgfHwgdHlwZW9mIHN1Yltwcm9wXSA9PT0gJ29iamVjdCcpICYmICF1dGlscy5pc0tleShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICBzdWJbcHJvcF0gPSByZWR1Y2Uoc3ViW3Byb3BdLCBtYXhSZWR1Y2VEZXB0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci53cmFwKHN1Yik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9uQVBJKCdyZXNvbHZlSnNvblBhdGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS5wYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlICsgJyBpbiAnICsgJy8nICsgZS5wYXRoLmpvaW4oJy8nKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG52YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpO1xuZnVuY3Rpb24gZ2V0UmVmcyhyZWZzKSB7XG4gICAgdmFyICRyZWZzID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmcykpIHtcbiAgICAgICAgcmVmcy5tYXAoZGVyZWYudXRpbC5ub3JtYWxpemVTY2hlbWEpLmZvckVhY2goZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgICAgICAgICAgJHJlZnNbc2NoZW1hLmlkXSA9IHNjaGVtYTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAkcmVmcyA9IHJlZnMgfHwge307XG4gICAgfVxuICAgIHJldHVybiAkcmVmcztcbn1cbmZ1bmN0aW9uIHdhbGsob2JqLCBjYikge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICB2YXIgcmV0dmFsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICByZXR2YWwgPSBjYihvYmpba2V5c1tpXV0sIGtleXNbaV0sIG9iaik7XG4gICAgICAgIGlmICghcmV0dmFsICYmIG9ialtrZXlzW2ldXSAmJiAhQXJyYXkuaXNBcnJheShvYmpba2V5c1tpXV0pICYmIHR5cGVvZiBvYmpba2V5c1tpXV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR2YWwgPSB3YWxrKG9ialtrZXlzW2ldXSwgY2IpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcmV0dmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbnZhciBqc2YgPSBmdW5jdGlvbiAoc2NoZW1hLCByZWZzKSB7XG4gICAgdmFyIGlnbm9yZSA9IG9wdGlvbkFQSSgnaWdub3JlTWlzc2luZ1JlZnMnKTtcbiAgICB2YXIgJCA9IGRlcmVmKGZ1bmN0aW9uIChpZCwgcmVmcykge1xuICAgICAgICAvLyBGSVhNRTogYWxsb3cgY3VzdG9tIGNhbGxiYWNrP1xuICAgICAgICBpZiAoaWdub3JlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgJHJlZnMgPSBnZXRSZWZzKHJlZnMpO1xuICAgIHJldHVybiBydW4oJHJlZnMsICQoc2NoZW1hLCAkcmVmcywgdHJ1ZSksIGNvbnRhaW5lcik7XG59O1xuanNmLnJlc29sdmUgPSBmdW5jdGlvbiAoc2NoZW1hLCByZWZzLCBjd2QpIHtcbiAgICBpZiAodHlwZW9mIHJlZnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGN3ZCA9IHJlZnM7XG4gICAgICAgIHJlZnMgPSB7fTtcbiAgICB9XG4gICAgLy8gbm9ybWFsaXplIGJhc2VkaXIgKGJyb3dzZXIgYXdhcmUpXG4gICAgY3dkID0gY3dkIHx8ICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgPyBwcm9jZXNzLmN3ZCgpIDogJycpO1xuICAgIGN3ZCA9IGN3ZC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJztcbiAgICB2YXIgJHJlZnMgPSBnZXRSZWZzKHJlZnMpO1xuICAgIC8vIGlkZW50aWNhbCBzZXR1cCBhcyBqc29uLXNjaGVtYS1zZXF1ZWxpemVyXG4gICAgdmFyIGZpeGVkUmVmcyA9IHtcbiAgICAgICAgb3JkZXI6IDMwMCxcbiAgICAgICAgY2FuUmVhZDogdHJ1ZSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB2YXIgaWQgPSBjd2QgIT09ICcvJ1xuICAgICAgICAgICAgICAgID8gZmlsZS51cmwucmVwbGFjZShjd2QsICcnKVxuICAgICAgICAgICAgICAgIDogZmlsZS51cmw7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGRlcmVmLnV0aWwuZmluZEJ5UmVmKGlkLCAkcmVmcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2FsayhzY2hlbWEsIGZ1bmN0aW9uICh2LCBrLCBzdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT09ICdpZCcgJiYgdiA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gJFJlZlBhcnNlclxuICAgICAgICAuZGVyZWZlcmVuY2UoY3dkLCBzY2hlbWEsIHtcbiAgICAgICAgcmVzb2x2ZTogeyBmaXhlZFJlZnM6IGZpeGVkUmVmcyB9LFxuICAgICAgICBkZXJlZmVyZW5jZToge1xuICAgICAgICAgICAgY2lyY3VsYXI6ICdpZ25vcmUnLFxuICAgICAgICB9LFxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gcnVuKCRyZWZzLCBzdWIsIGNvbnRhaW5lcik7IH0pO1xufTtcbmpzZi5mb3JtYXQgPSBmb3JtYXRBUEk7XG5qc2Yub3B0aW9uID0gb3B0aW9uQVBJO1xuanNmLnJhbmRvbSA9IHJhbmRvbTtcbi8vIGJ1aWx0LWluIHN1cHBvcnRcbmNvbnRhaW5lci5kZWZpbmUoJ3BhdHRlcm4nLCByYW5kb20ucmFuZGV4cCk7XG4vLyBza2lwIGRlZmF1bHQgZ2VuZXJhdG9yc1xuY29udGFpbmVyLmRlZmluZSgnanNvblBhdGgnLCBmdW5jdGlvbiAodmFsdWUsIHNjaGVtYSkge1xuICAgIGRlbGV0ZSBzY2hlbWEudHlwZTtcbiAgICByZXR1cm4gc2NoZW1hO1xufSk7XG4vLyBzYWZlIGF1dG8taW5jcmVtZW50IHZhbHVlc1xuY29udGFpbmVyLmRlZmluZSgnYXV0b0luY3JlbWVudCcsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKCF0aGlzLm9mZnNldCkge1xuICAgICAgICB2YXIgbWluID0gc2NoZW1hLm1pbmltdW0gfHwgMTtcbiAgICAgICAgdmFyIG1heCA9IG1pbiArIGVudi5NQVhfTlVNQkVSO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdmFsdWUuaW5pdGlhbE9mZnNldCB8fCBzY2hlbWEuaW5pdGlhbE9mZnNldDtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQgfHwgcmFuZG9tLm51bWJlcihtaW4sIG1heCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQrKztcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn0pO1xuLy8gc2FmZS1hbmQtc2VxdWVudGlhbCBkYXRlc1xuY29udGFpbmVyLmRlZmluZSgnc2VxdWVudGlhbERhdGUnLCBmdW5jdGlvbiAodmFsdWUsIHNjaGVtYSkge1xuICAgIGlmICghdGhpcy5ub3cpIHtcbiAgICAgICAgdGhpcy5ub3cgPSByYW5kb20uZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgc2NoZW1hID0gdGhpcy5ub3cudG9JU09TdHJpbmcoKTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyAnZGF5cydcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgIGlmIChbJ3NlY29uZHMnLCAnbWludXRlcycsICdob3VycycsICdkYXlzJywgJ3dlZWtzJywgJ21vbnRocycsICd5ZWFycyddLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgaW5jcmVtZW50IGJ5IFwiICsgdXRpbHMuc2hvcnQodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdy5zZXRUaW1lKHRoaXMubm93LmdldFRpbWUoKSArIHJhbmRvbS5kYXRlKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWE7XG59KTtcbi8vIHJldHVybnMgaXRzZWxmIGZvciBjaGFpbmluZ1xuanNmLmV4dGVuZCA9IGZ1bmN0aW9uIChuYW1lLCBjYikge1xuICAgIGNvbnRhaW5lci5leHRlbmQobmFtZSwgY2IpO1xuICAgIHJldHVybiBqc2Y7XG59O1xuanNmLmRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBjYikge1xuICAgIGNvbnRhaW5lci5kZWZpbmUobmFtZSwgY2IpO1xuICAgIHJldHVybiBqc2Y7XG59O1xuanNmLmxvY2F0ZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5nZXQobmFtZSk7XG59O1xudmFyIFZFUlNJT049XCIwLjUuMC1yYzE1XCI7XG5qc2YudmVyc2lvbiA9IFZFUlNJT047XG5cbm1vZHVsZS5leHBvcnRzID0ganNmO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXG4gICAgUG9pbnRlciA9IHJlcXVpcmUoJy4vcG9pbnRlcicpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1bmRsZTtcblxuLyoqXG4gKiBCdW5kbGVzIGFsbCBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMgaW50byB0aGUgbWFpbiBKU09OIHNjaGVtYSwgdGh1cyByZXN1bHRpbmcgaW4gYSBzY2hlbWEgdGhhdFxuICogb25seSBoYXMgKmludGVybmFsKiByZWZlcmVuY2VzLCBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIEpTT04gc2NoZW1hIG9iamVjdCwgYWRkaW5nIG5ldyByZWZlcmVuY2VzIGFuZCByZS1tYXBwaW5nIGV4aXN0aW5nIG9uZXMuXG4gKlxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gYnVuZGxlIChwYXJzZXIsIG9wdGlvbnMpIHtcbiAgZGVidWcoJ0J1bmRsaW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xuXG4gIC8vIEJ1aWxkIGFuIGludmVudG9yeSBvZiBhbGwgJHJlZiBwb2ludGVycyBpbiB0aGUgSlNPTiBTY2hlbWFcbiAgdmFyIGludmVudG9yeSA9IFtdO1xuICBjcmF3bChwYXJzZXIsICdzY2hlbWEnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGggKyAnIycsICcjJywgMCwgaW52ZW50b3J5LCBwYXJzZXIuJHJlZnMsIG9wdGlvbnMpO1xuXG4gIC8vIFJlbWFwIGFsbCAkcmVmIHBvaW50ZXJzXG4gIHJlbWFwKGludmVudG9yeSk7XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIGludmVudG9yaWVzIGFsbCBKU09OIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmVudCAtIFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gY3Jhd2wuIElmIHRoZSB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0IG9yIGFycmF5LCBpdCB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHByb3BlcnR5IGtleSBvZiBgcGFyZW50YCB0byBiZSBjcmF3bGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIHByb3BlcnR5IGJlaW5nIGNyYXdsZWQsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgYmVpbmcgY3Jhd2xlZCwgZnJvbSB0aGUgc2NoZW1hIHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0W119IGludmVudG9yeSAtIEFuIGFycmF5IG9mIGFscmVhZHktaW52ZW50b3JpZWQgJHJlZiBwb2ludGVyc1xuICogQHBhcmFtIHskUmVmc30gJHJlZnNcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gY3Jhd2wgKHBhcmVudCwga2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgb2JqID0ga2V5ID09PSBudWxsID8gcGFyZW50IDogcGFyZW50W2tleV07XG5cbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYob2JqKSkge1xuICAgICAgaW52ZW50b3J5JFJlZihwYXJlbnQsIGtleSwgcGF0aCwgcGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIENyYXdsIHRoZSBvYmplY3QgaW4gYSBzcGVjaWZpYyBvcmRlciB0aGF0J3Mgb3B0aW1pemVkIGZvciBidW5kbGluZy5cbiAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgZGV0ZXJtaW5lcyBob3cgYHBhdGhGcm9tUm9vdGAgZ2V0cyBidWlsdCxcbiAgICAgIC8vIHdoaWNoIGxhdGVyIGRldGVybWluZXMgd2hpY2gga2V5cyBnZXQgZGVyZWZlcmVuY2VkIGFuZCB3aGljaCBvbmVzIGdldCByZW1hcHBlZFxuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgLy8gTW9zdCBwZW9wbGUgd2lsbCBleHBlY3QgcmVmZXJlbmNlcyB0byBiZSBidW5kbGVkIGludG8gdGhlIHRoZSBcImRlZmluaXRpb25zXCIgcHJvcGVydHksXG4gICAgICAgICAgLy8gc28gd2UgYWx3YXlzIGNyYXdsIHRoYXQgcHJvcGVydHkgZmlyc3QsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICBpZiAoYSA9PT0gJ2RlZmluaXRpb25zJykge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChiID09PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNyYXdsIHRoZSBrZXlzIGJhc2VkIG9uIHRoZWlyIGxlbmd0aC5cbiAgICAgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIGJ1bmRsZWQgcmVmZXJlbmNlc1xuICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcbiAgICAgICAgdmFyIGtleVBhdGhGcm9tUm9vdCA9IFBvaW50ZXIuam9pbihwYXRoRnJvbVJvb3QsIGtleSk7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYodmFsdWUpKSB7XG4gICAgICAgICAgaW52ZW50b3J5JFJlZihvYmosIGtleSwgcGF0aCwga2V5UGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNyYXdsKG9iaiwga2V5LCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludmVudG9yaWVzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSAoaS5lLiByZWNvcmRzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGl0IHNvIHdlIGNhblxuICogb3B0aW1pemUgYWxsICRyZWZzIGluIHRoZSBzY2hlbWEpLCBhbmQgdGhlbiBjcmF3bHMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmUGFyZW50IC0gVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgSlNPTiBSZWZlcmVuY2UgYXMgb25lIG9mIGl0cyBrZXlzXG4gKiBAcGFyYW0ge3N0cmluZ30gJHJlZktleSAtIFRoZSBrZXkgaW4gYCRyZWZQYXJlbnRgIHRoYXQgaXMgYSBKU09OIFJlZmVyZW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIHRoZSBKU09OIFJlZmVyZW5jZSBhdCBgJHJlZktleWAsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiB0aGUgSlNPTiBSZWZlcmVuY2UgYXQgYCRyZWZLZXlgLCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxuICogQHBhcmFtIHtvYmplY3RbXX0gaW52ZW50b3J5IC0gQW4gYXJyYXkgb2YgYWxyZWFkeS1pbnZlbnRvcmllZCAkcmVmIHBvaW50ZXJzXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBpbnZlbnRvcnkkUmVmICgkcmVmUGFyZW50LCAkcmVmS2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgJHJlZiA9ICRyZWZLZXkgPT09IG51bGwgPyAkcmVmUGFyZW50IDogJHJlZlBhcmVudFskcmVmS2V5XTtcbiAgdmFyICRyZWZQYXRoID0gdXJsLnJlc29sdmUocGF0aCwgJHJlZi4kcmVmKTtcbiAgdmFyIHBvaW50ZXIgPSAkcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XG4gIHZhciBkZXB0aCA9IFBvaW50ZXIucGFyc2UocGF0aEZyb21Sb290KS5sZW5ndGg7XG4gIHZhciBmaWxlID0gdXJsLnN0cmlwSGFzaChwb2ludGVyLnBhdGgpO1xuICB2YXIgaGFzaCA9IHVybC5nZXRIYXNoKHBvaW50ZXIucGF0aCk7XG4gIHZhciBleHRlcm5hbCA9IGZpbGUgIT09ICRyZWZzLl9yb290JFJlZi5wYXRoO1xuICB2YXIgZXh0ZW5kZWQgPSAkUmVmLmlzRXh0ZW5kZWQkUmVmKCRyZWYpO1xuICBpbmRpcmVjdGlvbnMgKz0gcG9pbnRlci5pbmRpcmVjdGlvbnM7XG5cbiAgdmFyIGV4aXN0aW5nRW50cnkgPSBmaW5kSW5JbnZlbnRvcnkoaW52ZW50b3J5LCAkcmVmUGFyZW50LCAkcmVmS2V5KTtcbiAgaWYgKGV4aXN0aW5nRW50cnkpIHtcbiAgICAvLyBUaGlzICRSZWYgaGFzIGFscmVhZHkgYmVlbiBpbnZlbnRvcmllZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIGl0IGFnYWluXG4gICAgaWYgKGRlcHRoIDwgZXhpc3RpbmdFbnRyeS5kZXB0aCB8fCBpbmRpcmVjdGlvbnMgPCBleGlzdGluZ0VudHJ5LmluZGlyZWN0aW9ucykge1xuICAgICAgcmVtb3ZlRnJvbUludmVudG9yeShpbnZlbnRvcnksIGV4aXN0aW5nRW50cnkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpbnZlbnRvcnkucHVzaCh7XG4gICAgJHJlZjogJHJlZiwgICAgICAgICAgICAgICAgICAgLy8gVGhlIEpTT04gUmVmZXJlbmNlIChlLmcuIHskcmVmOiBzdHJpbmd9KVxuICAgIHBhcmVudDogJHJlZlBhcmVudCwgICAgICAgICAgIC8vIFRoZSBvYmplY3QgdGhhdCBjb250YWlucyB0aGlzICRyZWYgcG9pbnRlclxuICAgIGtleTogJHJlZktleSwgICAgICAgICAgICAgICAgIC8vIFRoZSBrZXkgaW4gYHBhcmVudGAgdGhhdCBpcyB0aGUgJHJlZiBwb2ludGVyXG4gICAgcGF0aEZyb21Sb290OiBwYXRoRnJvbVJvb3QsICAgLy8gVGhlIHBhdGggdG8gdGhlICRyZWYgcG9pbnRlciwgZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdFxuICAgIGRlcHRoOiBkZXB0aCwgICAgICAgICAgICAgICAgIC8vIEhvdyBmYXIgZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdCBpcyB0aGlzICRyZWYgcG9pbnRlcj9cbiAgICBmaWxlOiBmaWxlLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSB0aGF0IHRoZSAkcmVmIHBvaW50ZXIgcmVzb2x2ZXMgdG9cbiAgICBoYXNoOiBoYXNoLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCB3aXRoaW4gYGZpbGVgIHRoYXQgdGhlICRyZWYgcG9pbnRlciByZXNvbHZlcyB0b1xuICAgIHZhbHVlOiBwb2ludGVyLnZhbHVlLCAgICAgICAgIC8vIFRoZSByZXNvbHZlZCB2YWx1ZSBvZiB0aGUgJHJlZiBwb2ludGVyXG4gICAgY2lyY3VsYXI6IHBvaW50ZXIuY2lyY3VsYXIsICAgLy8gSXMgdGhpcyAkcmVmIHBvaW50ZXIgRElSRUNUTFkgY2lyY3VsYXI/IChpLmUuIGl0IHJlZmVyZW5jZXMgaXRzZWxmKVxuICAgIGV4dGVuZGVkOiBleHRlbmRlZCwgICAgICAgICAgIC8vIERvZXMgdGhpcyAkcmVmIGV4dGVuZCBpdHMgcmVzb2x2ZWQgdmFsdWU/IChpLmUuIGl0IGhhcyBleHRyYSBwcm9wZXJ0aWVzLCBpbiBhZGRpdGlvbiB0byBcIiRyZWZcIilcbiAgICBleHRlcm5hbDogZXh0ZXJuYWwsICAgICAgICAgICAvLyBEb2VzIHRoaXMgJHJlZiBwb2ludGVyIHBvaW50IHRvIGEgZmlsZSBvdGhlciB0aGFuIHRoZSBtYWluIEpTT04gU2NoZW1hIGZpbGU/XG4gICAgaW5kaXJlY3Rpb25zOiBpbmRpcmVjdGlvbnMsICAgLy8gVGhlIG51bWJlciBvZiBpbmRpcmVjdCByZWZlcmVuY2VzIHRoYXQgd2VyZSB0cmF2ZXJzZWQgdG8gcmVzb2x2ZSB0aGUgdmFsdWVcbiAgfSk7XG5cbiAgLy8gUmVjdXJzaXZlbHkgY3Jhd2wgdGhlIHJlc29sdmVkIHZhbHVlXG4gIGNyYXdsKHBvaW50ZXIudmFsdWUsIG51bGwsIHBvaW50ZXIucGF0aCwgcGF0aEZyb21Sb290LCBpbmRpcmVjdGlvbnMgKyAxLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZS1tYXBzIGV2ZXJ5ICRyZWYgcG9pbnRlciwgc28gdGhhdCB0aGV5J3JlIGFsbCByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgSlNPTiBTY2hlbWEuXG4gKiBFYWNoIHJlZmVyZW5jZWQgdmFsdWUgaXMgZGVyZWZlcmVuY2VkIEVYQUNUTFkgT05DRS4gIEFsbCBzdWJzZXF1ZW50IHJlZmVyZW5jZXMgdG8gdGhlIHNhbWVcbiAqIHZhbHVlIGFyZSByZS1tYXBwZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHJlZmVyZW5jZS5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBmaXJzdDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9zb21lL3BhcnQgfSxcbiAqICAgIHNlY29uZDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9hbm90aGVyL3BhcnQgfSxcbiAqICAgIHRoaXJkOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24gfSxcbiAqICAgIGZvdXJ0aDogeyAkcmVmOiBzb21lZmlsZS5qc29uIy9zb21lL3BhcnQvc3ViL3BhcnQgfVxuICogIH1cbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIHRoZXJlIGFyZSBmb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSwgYnV0IHNpbmNlIHRoZSB0aGlyZCByZWZlcmVuY2UgcG9pbnRzXG4gKiB0byB0aGUgRU5USVJFIGZpbGUsIHRoYXQncyB0aGUgb25seSBvbmUgd2UgbmVlZCB0byBkZXJlZmVyZW5jZS4gIFRoZSBvdGhlciB0aHJlZSBjYW4ganVzdCBiZVxuICogcmVtYXBwZWQgdG8gcG9pbnQgaW5zaWRlIHRoZSB0aGlyZCBvbmUuXG4gKlxuICogT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSB0aGlyZCByZWZlcmVuY2UgRElETidUIGV4aXN0LCB0aGVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIHdvdWxkIGJvdGggbmVlZFxuICogdG8gYmUgZGVyZWZlcmVuY2VkLCBzaW5jZSB0aGV5IHBvaW50IHRvIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgZmlsZS4gVGhlIGZvdXJ0aCByZWZlcmVuY2UgZG9lcyBOT1RcbiAqIG5lZWQgdG8gYmUgZGVyZWZlcmVuY2VkLCBiZWNhdXNlIGl0IGNhbiBiZSByZW1hcHBlZCB0byBwb2ludCBpbnNpZGUgdGhlIGZpcnN0IG9uZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbnZlbnRvcnlcbiAqL1xuZnVuY3Rpb24gcmVtYXAgKGludmVudG9yeSkge1xuICAvLyBHcm91cCAmIHNvcnQgYWxsIHRoZSAkcmVmIHBvaW50ZXJzLCBzbyB0aGV5J3JlIGluIHRoZSBvcmRlciB0aGF0IHdlIG5lZWQgdG8gZGVyZWZlcmVuY2UvcmVtYXAgdGhlbVxuICBpbnZlbnRvcnkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIGlmIChhLmZpbGUgIT09IGIuZmlsZSkge1xuICAgICAgLy8gR3JvdXAgYWxsIHRoZSAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIGZpbGVcbiAgICAgIHJldHVybiBhLmZpbGUgPCBiLmZpbGUgPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmhhc2ggIT09IGIuaGFzaCkge1xuICAgICAgLy8gR3JvdXAgYWxsIHRoZSAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIHBhcnQgb2YgdGhlIGZpbGVcbiAgICAgIHJldHVybiBhLmhhc2ggPCBiLmhhc2ggPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmNpcmN1bGFyICE9PSBiLmNpcmN1bGFyKSB7XG4gICAgICAvLyBJZiB0aGUgJHJlZiBwb2ludHMgdG8gaXRzZWxmLCB0aGVuIHNvcnQgaXQgaGlnaGVyIHRoYW4gb3RoZXIgJHJlZnMgdGhhdCBwb2ludCB0byB0aGlzICRyZWZcbiAgICAgIHJldHVybiBhLmNpcmN1bGFyID8gLTEgOiArMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYS5leHRlbmRlZCAhPT0gYi5leHRlbmRlZCkge1xuICAgICAgLy8gSWYgdGhlICRyZWYgZXh0ZW5kcyB0aGUgcmVzb2x2ZWQgdmFsdWUsIHRoZW4gc29ydCBpdCBsb3dlciB0aGFuIG90aGVyICRyZWZzIHRoYXQgZG9uJ3QgZXh0ZW5kIHRoZSB2YWx1ZVxuICAgICAgcmV0dXJuIGEuZXh0ZW5kZWQgPyArMSA6IC0xO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmluZGlyZWN0aW9ucyAhPT0gYi5pbmRpcmVjdGlvbnMpIHtcbiAgICAgIC8vIFNvcnQgZGlyZWN0IHJlZmVyZW5jZXMgaGlnaGVyIHRoYW4gaW5kaXJlY3QgcmVmZXJlbmNlc1xuICAgICAgcmV0dXJuIGEuaW5kaXJlY3Rpb25zIC0gYi5pbmRpcmVjdGlvbnM7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuZGVwdGggIT09IGIuZGVwdGgpIHtcbiAgICAgIC8vIFNvcnQgJHJlZnMgYnkgaG93IGNsb3NlIHRoZXkgYXJlIHRvIHRoZSBKU09OIFNjaGVtYSByb290XG4gICAgICByZXR1cm4gYS5kZXB0aCAtIGIuZGVwdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gRGV0ZXJtaW5lIGhvdyBmYXIgZWFjaCAkcmVmIGlzIGZyb20gdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eS5cbiAgICAgIC8vIE1vc3QgcGVvcGxlIHdpbGwgZXhwZWN0IHJlZmVyZW5jZXMgdG8gYmUgYnVuZGxlZCBpbnRvIHRoZSB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5IGlmIHBvc3NpYmxlLlxuICAgICAgdmFyIGFEZWZpbml0aW9uc0luZGV4ID0gYS5wYXRoRnJvbVJvb3QubGFzdEluZGV4T2YoJy9kZWZpbml0aW9ucycpO1xuICAgICAgdmFyIGJEZWZpbml0aW9uc0luZGV4ID0gYi5wYXRoRnJvbVJvb3QubGFzdEluZGV4T2YoJy9kZWZpbml0aW9ucycpO1xuXG4gICAgICBpZiAoYURlZmluaXRpb25zSW5kZXggIT09IGJEZWZpbml0aW9uc0luZGV4KSB7XG4gICAgICAgIC8vIEdpdmUgaGlnaGVyIHByaW9yaXR5IHRvIHRoZSAkcmVmIHRoYXQncyBjbG9zZXIgdG8gdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eVxuICAgICAgICByZXR1cm4gYkRlZmluaXRpb25zSW5kZXggLSBhRGVmaW5pdGlvbnNJbmRleDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBBbGwgZWxzZSBpcyBlcXVhbCwgc28gdXNlIHRoZSBzaG9ydGVyIHBhdGgsIHdoaWNoIHdpbGwgcHJvZHVjZSB0aGUgc2hvcnRlc3QgcG9zc2libGUgcmVmZXJlbmNlXG4gICAgICAgIHJldHVybiBhLnBhdGhGcm9tUm9vdC5sZW5ndGggLSBiLnBhdGhGcm9tUm9vdC5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB2YXIgZmlsZSwgaGFzaCwgcGF0aEZyb21Sb290O1xuICBpbnZlbnRvcnkuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBkZWJ1ZygnUmUtbWFwcGluZyAkcmVmIHBvaW50ZXIgXCIlc1wiIGF0ICVzJywgZW50cnkuJHJlZi4kcmVmLCBlbnRyeS5wYXRoRnJvbVJvb3QpO1xuXG4gICAgaWYgKCFlbnRyeS5leHRlcm5hbCkge1xuICAgICAgLy8gVGhpcyAkcmVmIGFscmVhZHkgcmVzb2x2ZXMgdG8gdGhlIG1haW4gSlNPTiBTY2hlbWEgZmlsZVxuICAgICAgZW50cnkuJHJlZi4kcmVmID0gZW50cnkuaGFzaDtcbiAgICB9XG4gICAgZWxzZSBpZiAoZW50cnkuZmlsZSA9PT0gZmlsZSAmJiBlbnRyeS5oYXNoID09PSBoYXNoKSB7XG4gICAgICAvLyBUaGlzICRyZWYgcG9pbnRzIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBwcmV2b3VzICRyZWYsIHNvIHJlbWFwIGl0IHRvIHRoZSBzYW1lIHBhdGhcbiAgICAgIGVudHJ5LiRyZWYuJHJlZiA9IHBhdGhGcm9tUm9vdDtcbiAgICB9XG4gICAgZWxzZSBpZiAoZW50cnkuZmlsZSA9PT0gZmlsZSAmJiBlbnRyeS5oYXNoLmluZGV4T2YoaGFzaCArICcvJykgPT09IDApIHtcbiAgICAgIC8vIFRoaXMgJHJlZiBwb2ludHMgdG8gdGhlIGEgc3ViLXZhbHVlIGFzIHRoZSBwcmV2b3VzICRyZWYsIHNvIHJlbWFwIGl0IGJlbmVhdGggdGhhdCBwYXRoXG4gICAgICBlbnRyeS4kcmVmLiRyZWYgPSBQb2ludGVyLmpvaW4ocGF0aEZyb21Sb290LCBQb2ludGVyLnBhcnNlKGVudHJ5Lmhhc2gpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBXZSd2ZSBtb3ZlZCB0byBhIG5ldyBmaWxlIG9yIG5ldyBoYXNoXG4gICAgICBmaWxlID0gZW50cnkuZmlsZTtcbiAgICAgIGhhc2ggPSBlbnRyeS5oYXNoO1xuICAgICAgcGF0aEZyb21Sb290ID0gZW50cnkucGF0aEZyb21Sb290O1xuXG4gICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAkcmVmIHRvIHBvaW50IHRvIHRoaXMgdmFsdWUsIHNvIGRlcmVmZXJlbmNlIHRoZSB2YWx1ZS5cbiAgICAgIC8vIEFueSBvdGhlciAkcmVmcyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lIHZhbHVlIHdpbGwgcG9pbnQgdG8gdGhpcyAkcmVmIGluc3RlYWRcbiAgICAgIGVudHJ5LiRyZWYgPSBlbnRyeS5wYXJlbnRbZW50cnkua2V5XSA9ICRSZWYuZGVyZWZlcmVuY2UoZW50cnkuJHJlZiwgZW50cnkudmFsdWUpO1xuXG4gICAgICBpZiAoZW50cnkuY2lyY3VsYXIpIHtcbiAgICAgICAgLy8gVGhpcyAkcmVmIHBvaW50cyB0byBpdHNlbGZcbiAgICAgICAgZW50cnkuJHJlZi4kcmVmID0gZW50cnkucGF0aEZyb21Sb290O1xuICAgICAgfVxuICAgIH1cblxuICAgIGRlYnVnKCcgICAgbmV3IHZhbHVlOiAlcycsIChlbnRyeS4kcmVmICYmIGVudHJ5LiRyZWYuJHJlZikgPyBlbnRyeS4kcmVmLiRyZWYgOiAnW29iamVjdCBPYmplY3RdJyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRPRE9cbiAqL1xuZnVuY3Rpb24gZmluZEluSW52ZW50b3J5IChpbnZlbnRvcnksICRyZWZQYXJlbnQsICRyZWZLZXkpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnZlbnRvcnkubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZXhpc3RpbmdFbnRyeSA9IGludmVudG9yeVtpXTtcbiAgICBpZiAoZXhpc3RpbmdFbnRyeS5wYXJlbnQgPT09ICRyZWZQYXJlbnQgJiYgZXhpc3RpbmdFbnRyeS5rZXkgPT09ICRyZWZLZXkpIHtcbiAgICAgIHJldHVybiBleGlzdGluZ0VudHJ5O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVGcm9tSW52ZW50b3J5IChpbnZlbnRvcnksIGVudHJ5KSB7XG4gIHZhciBpbmRleCA9IGludmVudG9yeS5pbmRleE9mKGVudHJ5KTtcbiAgaW52ZW50b3J5LnNwbGljZShpbmRleCwgMSk7XG59XG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXHJcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXHJcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcclxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXHJcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRlcmVmZXJlbmNlO1xyXG5cclxuLyoqXHJcbiAqIENyYXdscyB0aGUgSlNPTiBzY2hlbWEsIGZpbmRzIGFsbCBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlbS5cclxuICogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgSlNPTiBzY2hlbWEgb2JqZWN0LCByZXBsYWNpbmcgSlNPTiByZWZlcmVuY2VzIHdpdGggdGhlaXIgcmVzb2x2ZWQgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlcn0gcGFyc2VyXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcclxuICovXHJcbmZ1bmN0aW9uIGRlcmVmZXJlbmNlIChwYXJzZXIsIG9wdGlvbnMpIHtcclxuICBkZWJ1ZygnRGVyZWZlcmVuY2luZyAkcmVmIHBvaW50ZXJzIGluICVzJywgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoKTtcclxuICB2YXIgZGVyZWZlcmVuY2VkID0gY3Jhd2wocGFyc2VyLnNjaGVtYSwgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoLCAnIycsIFtdLCBwYXJzZXIuJHJlZnMsIG9wdGlvbnMpO1xyXG4gIHBhcnNlci4kcmVmcy5jaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICBwYXJzZXIuc2NoZW1hID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIGRlcmVmZXJlbmNlcyBhbnkgSlNPTiByZWZlcmVuY2VzLlxyXG4gKlxyXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSB2YWx1ZSB0byBjcmF3bC4gSWYgaXQncyBub3QgYW4gb2JqZWN0IG9yIGFycmF5LCBpdCB3aWxsIGJlIGlnbm9yZWQuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgb2JqYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aEZyb21Sb290IC0gVGhlIHBhdGggb2YgYG9iamAgZnJvbSB0aGUgc2NoZW1hIHJvb3RcclxuICogQHBhcmFtIHtvYmplY3RbXX0gcGFyZW50cyAtIEFuIGFycmF5IG9mIHRoZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRlcmVmZXJlbmNlZFxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHt7dmFsdWU6IG9iamVjdCwgY2lyY3VsYXI6IGJvb2xlYW59fVxyXG4gKi9cclxuZnVuY3Rpb24gY3Jhd2wgKG9iaiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucykge1xyXG4gIHZhciBkZXJlZmVyZW5jZWQ7XHJcbiAgdmFyIHJlc3VsdCA9IHtcclxuICAgIHZhbHVlOiBvYmosXHJcbiAgICBjaXJjdWxhcjogZmFsc2VcclxuICB9O1xyXG5cclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XHJcbiAgICBwYXJlbnRzLnB1c2gob2JqKTtcclxuXHJcbiAgICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKG9iaiwgb3B0aW9ucykpIHtcclxuICAgICAgZGVyZWZlcmVuY2VkID0gZGVyZWZlcmVuY2UkUmVmKG9iaiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgIHJlc3VsdC5jaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICAgICAgcmVzdWx0LnZhbHVlID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcclxuICAgICAgICB2YXIga2V5UGF0aEZyb21Sb290ID0gUG9pbnRlci5qb2luKHBhdGhGcm9tUm9vdCwga2V5KTtcclxuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcclxuICAgICAgICB2YXIgY2lyY3VsYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZih2YWx1ZSwgb3B0aW9ucykpIHtcclxuICAgICAgICAgIGRlcmVmZXJlbmNlZCA9IGRlcmVmZXJlbmNlJFJlZih2YWx1ZSwga2V5UGF0aCwga2V5UGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICBjaXJjdWxhciA9IGRlcmVmZXJlbmNlZC5jaXJjdWxhcjtcclxuICAgICAgICAgIG9ialtrZXldID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChwYXJlbnRzLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICBkZXJlZmVyZW5jZWQgPSBjcmF3bCh2YWx1ZSwga2V5UGF0aCwga2V5UGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICAgICAgICBvYmpba2V5XSA9IGRlcmVmZXJlbmNlZC52YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjaXJjdWxhciA9IGZvdW5kQ2lyY3VsYXJSZWZlcmVuY2Uoa2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBcImlzQ2lyY3VsYXJcIiBmbGFnIGlmIHRoaXMgb3IgYW55IG90aGVyIHByb3BlcnR5IGlzIGNpcmN1bGFyXHJcbiAgICAgICAgcmVzdWx0LmNpcmN1bGFyID0gcmVzdWx0LmNpcmN1bGFyIHx8IGNpcmN1bGFyO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJlbnRzLnBvcCgpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlcmVmZXJlbmNlcyB0aGUgZ2l2ZW4gSlNPTiBSZWZlcmVuY2UsIGFuZCB0aGVuIGNyYXdscyB0aGUgcmVzdWx0aW5nIHZhbHVlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3skcmVmOiBzdHJpbmd9fSAkcmVmIC0gVGhlIEpTT04gUmVmZXJlbmNlIHRvIHJlc29sdmVcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGAkcmVmYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aEZyb21Sb290IC0gVGhlIHBhdGggb2YgYCRyZWZgIGZyb20gdGhlIHNjaGVtYSByb290XHJcbiAqIEBwYXJhbSB7b2JqZWN0W119IHBhcmVudHMgLSBBbiBhcnJheSBvZiB0aGUgcGFyZW50IG9iamVjdHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkZXJlZmVyZW5jZWRcclxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7e3ZhbHVlOiBvYmplY3QsIGNpcmN1bGFyOiBib29sZWFufX1cclxuICovXHJcbmZ1bmN0aW9uIGRlcmVmZXJlbmNlJFJlZiAoJHJlZiwgcGF0aCwgcGF0aEZyb21Sb290LCBwYXJlbnRzLCAkcmVmcywgb3B0aW9ucykge1xyXG4gIGRlYnVnKCdEZXJlZmVyZW5jaW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCAkcmVmLiRyZWYsIHBhdGgpO1xyXG5cclxuICB2YXIgJHJlZlBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xyXG4gIHZhciBwb2ludGVyID0gJHJlZnMuX3Jlc29sdmUoJHJlZlBhdGgsIG9wdGlvbnMpO1xyXG5cclxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlc1xyXG4gIHZhciBkaXJlY3RDaXJjdWxhciA9IHBvaW50ZXIuY2lyY3VsYXI7XHJcbiAgdmFyIGNpcmN1bGFyID0gZGlyZWN0Q2lyY3VsYXIgfHwgcGFyZW50cy5pbmRleE9mKHBvaW50ZXIudmFsdWUpICE9PSAtMTtcclxuICBjaXJjdWxhciAmJiBmb3VuZENpcmN1bGFyUmVmZXJlbmNlKHBhdGgsICRyZWZzLCBvcHRpb25zKTtcclxuXHJcbiAgLy8gRGVyZWZlcmVuY2UgdGhlIEpTT04gcmVmZXJlbmNlXHJcbiAgdmFyIGRlcmVmZXJlbmNlZFZhbHVlID0gJFJlZi5kZXJlZmVyZW5jZSgkcmVmLCBwb2ludGVyLnZhbHVlKTtcclxuXHJcbiAgLy8gQ3Jhd2wgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZSAodW5sZXNzIGl0J3MgY2lyY3VsYXIpXHJcbiAgaWYgKCFjaXJjdWxhcikge1xyXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBkZXJlZmVyZW5jZWQgdmFsdWUgaXMgY2lyY3VsYXJcclxuICAgIHZhciBkZXJlZmVyZW5jZWQgPSBjcmF3bChkZXJlZmVyZW5jZWRWYWx1ZSwgcG9pbnRlci5wYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBpZiAoY2lyY3VsYXIgJiYgIWRpcmVjdENpcmN1bGFyICYmIG9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIgPT09ICdpZ25vcmUnKSB7XHJcbiAgICAvLyBUaGUgdXNlciBoYXMgY2hvc2VuIHRvIFwiaWdub3JlXCIgY2lyY3VsYXIgcmVmZXJlbmNlcywgc28gZG9uJ3QgY2hhbmdlIHRoZSB2YWx1ZVxyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUgPSAkcmVmO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRpcmVjdENpcmN1bGFyKSB7XHJcbiAgICAvLyBUaGUgcG9pbnRlciBpcyBhIERJUkVDVCBjaXJjdWxhciByZWZlcmVuY2UgKGkuZS4gaXQgcmVmZXJlbmNlcyBpdHNlbGYpLlxyXG4gICAgLy8gU28gcmVwbGFjZSB0aGUgJHJlZiBwYXRoIHdpdGggdGhlIGFic29sdXRlIHBhdGggZnJvbSB0aGUgSlNPTiBTY2hlbWEgcm9vdFxyXG4gICAgZGVyZWZlcmVuY2VkVmFsdWUuJHJlZiA9IHBhdGhGcm9tUm9vdDtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBjaXJjdWxhcjogY2lyY3VsYXIsXHJcbiAgICB2YWx1ZTogZGVyZWZlcmVuY2VkVmFsdWVcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ2FsbGVkIHdoZW4gYSBjaXJjdWxhciByZWZlcmVuY2UgaXMgZm91bmQuXHJcbiAqIEl0IHNldHMgdGhlIHtAbGluayAkUmVmcyNjaXJjdWxhcn0gZmxhZywgYW5kIHRocm93cyBhbiBlcnJvciBpZiBvcHRpb25zLmRlcmVmZXJlbmNlLmNpcmN1bGFyIGlzIGZhbHNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5UGF0aCAtIFRoZSBKU09OIFJlZmVyZW5jZSBwYXRoIG9mIHRoZSBjaXJjdWxhciByZWZlcmVuY2VcclxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBhbHdheXMgcmV0dXJucyB0cnVlLCB0byBpbmRpY2F0ZSB0aGF0IGEgY2lyY3VsYXIgcmVmZXJlbmNlIHdhcyBmb3VuZFxyXG4gKi9cclxuZnVuY3Rpb24gZm91bmRDaXJjdWxhclJlZmVyZW5jZSAoa2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpIHtcclxuICAkcmVmcy5jaXJjdWxhciA9IHRydWU7XHJcbiAgaWYgKCFvcHRpb25zLmRlcmVmZXJlbmNlLmNpcmN1bGFyKSB7XHJcbiAgICB0aHJvdyBvbm8ucmVmZXJlbmNlKCdDaXJjdWxhciAkcmVmIHBvaW50ZXIgZm91bmQgYXQgJXMnLCBrZXlQYXRoKTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgT3B0aW9ucyA9IHJlcXVpcmUoJy4vb3B0aW9ucycpLFxuICAgICRSZWZzID0gcmVxdWlyZSgnLi9yZWZzJyksXG4gICAgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyksXG4gICAgbm9ybWFsaXplQXJncyA9IHJlcXVpcmUoJy4vbm9ybWFsaXplLWFyZ3MnKSxcbiAgICByZXNvbHZlRXh0ZXJuYWwgPSByZXF1aXJlKCcuL3Jlc29sdmUtZXh0ZXJuYWwnKSxcbiAgICBidW5kbGUgPSByZXF1aXJlKCcuL2J1bmRsZScpLFxuICAgIGRlcmVmZXJlbmNlID0gcmVxdWlyZSgnLi9kZXJlZmVyZW5jZScpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKSxcbiAgICBtYXliZSA9IHJlcXVpcmUoJ2NhbGwtbWUtbWF5YmUnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMuWUFNTCA9IHJlcXVpcmUoJy4vdXRpbC95YW1sJyk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBwYXJzZXMgYSBKU09OIHNjaGVtYSwgYnVpbGRzIGEgbWFwIG9mIGl0cyBKU09OIHJlZmVyZW5jZXMgYW5kIHRoZWlyIHJlc29sdmVkIHZhbHVlcyxcbiAqIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvciB0cmF2ZXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBkZXJlZmVyZW5jaW5nIHRob3NlIHJlZmVyZW5jZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWZQYXJzZXIgKCkge1xuICAvKipcbiAgICogVGhlIHBhcnNlZCAoYW5kIHBvc3NpYmx5IGRlcmVmZXJlbmNlZCkgSlNPTiBzY2hlbWEgb2JqZWN0XG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEByZWFkb25seVxuICAgKi9cbiAgdGhpcy5zY2hlbWEgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gICAqXG4gICAqIEB0eXBlIHskUmVmc31cbiAgICogQHJlYWRvbmx5XG4gICAqL1xuICB0aGlzLiRyZWZzID0gbmV3ICRSZWZzKCk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYS5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJlc29sdmUgYW55IEpTT04gcmVmZXJlbmNlcy5cbiAqIEl0IGp1c3QgcmVhZHMgYSBzaW5nbGUgZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LCBhbmQgcGFyc2UgaXQgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wYXJzZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UucGFyc2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEuXG4gKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCByZXNvbHZlIGFueSBKU09OIHJlZmVyZW5jZXMuXG4gKiBJdCBqdXN0IHJlYWRzIGEgc2luZ2xlIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCwgYW5kIHBhcnNlIGl0IGFzIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghYXJncy5wYXRoICYmICFhcmdzLnNjaGVtYSkge1xuICAgIHZhciBlcnIgPSBvbm8oJ0V4cGVjdGVkIGEgZmlsZSBwYXRoLCBVUkwsIG9yIG9iamVjdC4gR290ICVzJywgYXJncy5wYXRoIHx8IGFyZ3Muc2NoZW1hKTtcbiAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gIH1cblxuICAvLyBSZXNldCBldmVyeXRoaW5nXG4gIHRoaXMuc2NoZW1hID0gbnVsbDtcbiAgdGhpcy4kcmVmcyA9IG5ldyAkUmVmcygpO1xuXG4gIC8vIElmIHRoZSBwYXRoIGlzIGEgZmlsZXN5c3RlbSBwYXRoLCB0aGVuIGNvbnZlcnQgaXQgdG8gYSBVUkwuXG4gIC8vIE5PVEU6IEFjY29yZGluZyB0byB0aGUgSlNPTiBSZWZlcmVuY2Ugc3BlYywgdGhlc2Ugc2hvdWxkIGFscmVhZHkgYmUgVVJMcyxcbiAgLy8gYnV0LCBpbiBwcmFjdGljZSwgbWFueSBwZW9wbGUgdXNlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHMgaW5zdGVhZC5cbiAgLy8gU28gd2UncmUgYmVpbmcgZ2VuZXJvdXMgaGVyZSBhbmQgZG9pbmcgdGhlIGNvbnZlcnNpb24gYXV0b21hdGljYWxseS5cbiAgLy8gVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYSAxMDAlIGJ1bGxldHByb29mIHNvbHV0aW9uLlxuICAvLyBJZiBpdCBkb2Vzbid0IHdvcmsgZm9yIHlvdXIgdXNlLWNhc2UsIHRoZW4gdXNlIGEgVVJMIGluc3RlYWQuXG4gIHZhciBwYXRoVHlwZSA9ICdodHRwJztcbiAgaWYgKHVybC5pc0ZpbGVTeXN0ZW1QYXRoKGFyZ3MucGF0aCkpIHtcbiAgICBhcmdzLnBhdGggPSB1cmwuZnJvbUZpbGVTeXN0ZW1QYXRoKGFyZ3MucGF0aCk7XG4gICAgcGF0aFR5cGUgPSAnZmlsZSc7XG4gIH1cblxuICAvLyBSZXNvbHZlIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzY2hlbWFcbiAgYXJncy5wYXRoID0gdXJsLnJlc29sdmUodXJsLmN3ZCgpLCBhcmdzLnBhdGgpO1xuXG4gIGlmIChhcmdzLnNjaGVtYSAmJiB0eXBlb2YgYXJncy5zY2hlbWEgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gQSBzY2hlbWEgb2JqZWN0IHdhcyBwYXNzZWQtaW4uXG4gICAgLy8gU28gaW1tZWRpYXRlbHkgYWRkIGEgbmV3ICRSZWYgd2l0aCB0aGUgc2NoZW1hIG9iamVjdCBhcyBpdHMgdmFsdWVcbiAgICB2YXIgJHJlZiA9IHRoaXMuJHJlZnMuX2FkZChhcmdzLnBhdGgpO1xuICAgICRyZWYudmFsdWUgPSBhcmdzLnNjaGVtYTtcbiAgICAkcmVmLnBhdGhUeXBlID0gcGF0aFR5cGU7XG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhcmdzLnNjaGVtYSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gUGFyc2UgdGhlIHNjaGVtYSBmaWxlL3VybFxuICAgIHByb21pc2UgPSBwYXJzZShhcmdzLnBhdGgsIHRoaXMuJHJlZnMsIGFyZ3Mub3B0aW9ucyk7XG4gIH1cblxuICB2YXIgbWUgPSB0aGlzO1xuICByZXR1cm4gcHJvbWlzZVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGlmICghcmVzdWx0IHx8IHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnIHx8IEJ1ZmZlci5pc0J1ZmZlcihyZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG9uby5zeW50YXgoJ1wiJXNcIiBpcyBub3QgYSB2YWxpZCBKU09OIFNjaGVtYScsIG1lLiRyZWZzLl9yb290JFJlZi5wYXRoIHx8IHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbWUuc2NoZW1hID0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZSkpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hIGFuZCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBpbmNsdWRpbmcgcmVmZXJlbmNlcyBpblxuICogZXh0ZXJuYWxseS1yZWZlcmVuY2VkIGZpbGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQgYW5kIHJlc29sdmVkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdXG4gKiAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIHtAbGluayAkUmVmc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIEpTT04gcmVmZXJlbmNlc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayAkUmVmc30gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIEpTT04gcmVmZXJlbmNlc1xuICovXG4kUmVmUGFyc2VyLnJlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgQ2xhc3MgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtdGhpc1xuICB2YXIgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoKTtcbiAgcmV0dXJuIGluc3RhbmNlLnJlc29sdmUuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEgYW5kIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGluY2x1ZGluZyByZWZlcmVuY2VzIGluXG4gKiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCBhbmQgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja11cbiAqIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcblxuICByZXR1cm4gdGhpcy5wYXJzZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVFeHRlcm5hbChtZSwgYXJncy5vcHRpb25zKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlc29sdmUobWUuJHJlZnMpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBidW5kbGVzIGFsbCBleHRlcm5hbCByZWZlcmVuY2VzXG4gKiBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLiBUaGlzIHByb2R1Y2VzIGEgSlNPTiBzY2hlbWEgdGhhdCBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsXG4gKiBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLmJ1bmRsZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UuYnVuZGxlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBhbmQgYnVuZGxlcyBhbGwgZXh0ZXJuYWwgcmVmZXJlbmNlc1xuICogaW50byB0aGUgbWFpbiBKU09OIHNjaGVtYS4gVGhpcyBwcm9kdWNlcyBhIEpTT04gc2NoZW1hIHRoYXQgb25seSBoYXMgKmludGVybmFsKiByZWZlcmVuY2VzLFxuICogbm90IGFueSAqZXh0ZXJuYWwqIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBidW5kbGVkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUuYnVuZGxlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHRoaXMucmVzb2x2ZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYnVuZGxlKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS5zY2hlbWEpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlIEpTT04gc2NoZW1hLlxuICogVGhhdCBpcywgYWxsIEpTT04gcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIuZGVyZWZlcmVuY2UgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgQ2xhc3MgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtdGhpc1xuICB2YXIgaW5zdGFuY2UgPSBuZXcgQ2xhc3MoKTtcbiAgcmV0dXJuIGluc3RhbmNlLmRlcmVmZXJlbmNlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLCByZXNvbHZlcyBhbnkgSlNPTiByZWZlcmVuY2VzLCBhbmQgZGVyZWZlcmVuY2VzIHRoZSBKU09OIHNjaGVtYS5cbiAqIFRoYXQgaXMsIGFsbCBKU09OIHJlZmVyZW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQsIHJlc29sdmVkLCBhbmQgZGVyZWZlcmVuY2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBkZXJlZmVyZW5jZWQgSlNPTiBzY2hlbWEgb2JqZWN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBkZXJlZmVyZW5jZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnByb3RvdHlwZS5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBtZSA9IHRoaXM7XG4gIHZhciBhcmdzID0gbm9ybWFsaXplQXJncyhhcmd1bWVudHMpO1xuXG4gIHJldHVybiB0aGlzLnJlc29sdmUoYXJncy5wYXRoLCBhcmdzLnNjaGVtYSwgYXJncy5vcHRpb25zKVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcmVmZXJlbmNlKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS5zY2hlbWEpKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZWplY3QoZXJyKSk7XG4gICAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgT3B0aW9ucyA9IHJlcXVpcmUoJy4vb3B0aW9ucycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZUFyZ3M7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhY2NvdW50aW5nIGZvciBvcHRpb25hbCBhcmdzLlxuICpcbiAqIEBwYXJhbSB7QXJndW1lbnRzfSBhcmdzXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBcmdzIChhcmdzKSB7XG4gIHZhciBwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrO1xuICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7XG5cbiAgaWYgKHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGUgbGFzdCBwYXJhbWV0ZXIgaXMgYSBjYWxsYmFjayBmdW5jdGlvblxuICAgIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBwYXRoXG4gICAgcGF0aCA9IGFyZ3NbMF07XG4gICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHNjaGVtYSwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgdGhlIG9wdGlvbnNcbiAgICAgIHNjaGVtYSA9IGFyZ3NbMV07XG4gICAgICBvcHRpb25zID0gYXJnc1syXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgb3B0aW9uc1xuICAgICAgc2NoZW1hID0gdW5kZWZpbmVkO1xuICAgICAgb3B0aW9ucyA9IGFyZ3NbMV07XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIC8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHNjaGVtYVxuICAgIHBhdGggPSAnJztcbiAgICBzY2hlbWEgPSBhcmdzWzBdO1xuICAgIG9wdGlvbnMgPSBhcmdzWzFdO1xuICB9XG5cbiAgaWYgKCEob3B0aW9ucyBpbnN0YW5jZW9mIE9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IG5ldyBPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gIH07XG59XG4iLCIvKiBlc2xpbnQgbGluZXMtYXJvdW5kLWNvbW1lbnQ6IFsyLCB7YmVmb3JlQmxvY2tDb21tZW50OiBmYWxzZX1dICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBqc29uUGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL2pzb24nKSxcbiAgICB5YW1sUGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL3lhbWwnKSxcbiAgICB0ZXh0UGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZXJzL3RleHQnKSxcbiAgICBiaW5hcnlQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvYmluYXJ5JyksXG4gICAgZmlsZVJlc29sdmVyID0gcmVxdWlyZSgnLi9yZXNvbHZlcnMvZmlsZScpLFxuICAgIGh0dHBSZXNvbHZlciA9IHJlcXVpcmUoJy4vcmVzb2x2ZXJzL2h0dHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmUGFyc2VyT3B0aW9ucztcblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyBKU09OIHNjaGVtYXMgYXJlIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE92ZXJyaWRkZW4gb3B0aW9uc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWZQYXJzZXJPcHRpb25zIChvcHRpb25zKSB7XG4gIG1lcmdlKHRoaXMsICRSZWZQYXJzZXJPcHRpb25zLmRlZmF1bHRzKTtcbiAgbWVyZ2UodGhpcywgb3B0aW9ucyk7XG59XG5cbiRSZWZQYXJzZXJPcHRpb25zLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgZGlmZmVyZW50IHR5cGVzIG9mIGZpbGVzIHdpbGwgYmUgcGFyc2VkLlxuICAgKlxuICAgKiBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIHBhcnNlcnMgb2YgeW91ciBvd24sIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIHdpdGhcbiAgICogeW91ciBvd24gaW1wbGVtZW5hdGlvbiwgb3IgZGlzYWJsZSBhbnkgcGFyc2VyIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXG4gICAqL1xuICBwYXJzZToge1xuICAgIGpzb246IGpzb25QYXJzZXIsXG4gICAgeWFtbDogeWFtbFBhcnNlcixcbiAgICB0ZXh0OiB0ZXh0UGFyc2VyLFxuICAgIGJpbmFyeTogYmluYXJ5UGFyc2VyLFxuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBKU09OIFJlZmVyZW5jZXMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICpcbiAgICogWW91IGNhbiBhZGQgYWRkaXRpb25hbCByZXNvbHZlcnMgb2YgeW91ciBvd24sIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIHdpdGhcbiAgICogeW91ciBvd24gaW1wbGVtZW5hdGlvbiwgb3IgZGlzYWJsZSBhbnkgcmVzb2x2ZXIgYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cbiAgICovXG4gIHJlc29sdmU6IHtcbiAgICBmaWxlOiBmaWxlUmVzb2x2ZXIsXG4gICAgaHR0cDogaHR0cFJlc29sdmVyLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGV4dGVybmFsICRyZWYgcG9pbnRlcnMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgdGhlbiBub25lIG9mIGFib3ZlIHJlc29sdmVycyB3aWxsIGJlIGNhbGxlZC5cbiAgICAgKiBJbnN0ZWFkLCBleHRlcm5hbCAkcmVmIHBvaW50ZXJzIHdpbGwgc2ltcGx5IGJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBleHRlcm5hbDogdHJ1ZSxcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdHlwZXMgb2YgSlNPTiByZWZlcmVuY2VzIHRoYXQgYXJlIGFsbG93ZWQuXG4gICAqL1xuICBkZXJlZmVyZW5jZToge1xuICAgIC8qKlxuICAgICAqIERlcmVmZXJlbmNlIGNpcmN1bGFyIChyZWN1cnNpdmUpIEpTT04gcmVmZXJlbmNlcz9cbiAgICAgKiBJZiBmYWxzZSwgdGhlbiBhIHtAbGluayBSZWZlcmVuY2VFcnJvcn0gd2lsbCBiZSB0aHJvd24gaWYgYSBjaXJjdWxhciByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogSWYgXCJpZ25vcmVcIiwgdGhlbiBjaXJjdWxhciByZWZlcmVuY2VzIHdpbGwgbm90IGJlIGRlcmVmZXJlbmNlZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufHN0cmluZ31cbiAgICAgKi9cbiAgICBjaXJjdWxhcjogdHJ1ZVxuICB9LFxufTtcblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBvYmplY3QgaW50byB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0IC0gVGhlIG9iamVjdCB0aGF0IHdlJ3JlIHBvcHVsYXRpbmdcbiAqIEBwYXJhbSB7P29iamVjdH0gc291cmNlIC0gVGhlIG9wdGlvbnMgdGhhdCBhcmUgYmVpbmcgbWVyZ2VkXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBtZXJnZSAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKGlzTWVyZ2VhYmxlKHNvdXJjZSkpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciBzb3VyY2VTZXR0aW5nID0gc291cmNlW2tleV07XG4gICAgICB2YXIgdGFyZ2V0U2V0dGluZyA9IHRhcmdldFtrZXldO1xuXG4gICAgICBpZiAoaXNNZXJnZWFibGUoc291cmNlU2V0dGluZykpIHtcbiAgICAgICAgLy8gSXQncyBhIG5lc3RlZCBvYmplY3QsIHNvIG1lcmdlIGl0IHJlY3Vyc2l2ZWx5XG4gICAgICAgIHRhcmdldFtrZXldID0gbWVyZ2UodGFyZ2V0U2V0dGluZyB8fCB7fSwgc291cmNlU2V0dGluZyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChzb3VyY2VTZXR0aW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gSXQncyBhIHNjYWxhciB2YWx1ZSwgZnVuY3Rpb24sIG9yIGFycmF5LiBObyBtZXJnaW5nIG5lY2Vzc2FyeS4gSnVzdCBvdmVyd3JpdGUgdGhlIHRhcmdldCB2YWx1ZS5cbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2VTZXR0aW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIG1lcmdlZCxcbiAqIG9yIGlmIGl0IGlzIGEgc2NhbGFyIHZhbHVlIHRoYXQgc2hvdWxkIGp1c3Qgb3ZlcnJpZGUgdGhlIHRhcmdldCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gICB7Kn0gIHZhbFxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTWVyZ2VhYmxlICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAmJlxuICAgICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JykgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWwpICYmXG4gICAgISh2YWwgaW5zdGFuY2VvZiBSZWdFeHApICYmXG4gICAgISh2YWwgaW5zdGFuY2VvZiBEYXRlKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi91dGlsL2RlYnVnJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpLFxuICAgIHBsdWdpbnMgPSByZXF1aXJlKCcuL3V0aWwvcGx1Z2lucycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgdGhlIHNwZWNpZmllZCBmaWxlIHBhdGggb3IgVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhpcyBwYXRoIE1VU1QgYWxyZWFkeSBiZSByZXNvbHZlZCwgc2luY2UgYHJlYWRgIGRvZXNuJ3Qga25vdyB0aGUgcmVzb2x1dGlvbiBjb250ZXh0XG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIGZpbGUgY29udGVudHMsIE5PVCB0aGUgcmF3IChCdWZmZXIpIGNvbnRlbnRzLlxuICovXG5mdW5jdGlvbiBwYXJzZSAocGF0aCwgJHJlZnMsIG9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICAvLyBSZW1vdmUgdGhlIFVSTCBmcmFnbWVudCwgaWYgYW55XG4gICAgcGF0aCA9IHVybC5zdHJpcEhhc2gocGF0aCk7XG5cbiAgICAvLyBBZGQgYSBuZXcgJFJlZiBmb3IgdGhpcyBmaWxlLCBldmVuIHRob3VnaCB3ZSBkb24ndCBoYXZlIHRoZSB2YWx1ZSB5ZXQuXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3Qgc2ltdWx0YW5lb3VzbHkgcmVhZCAmIHBhcnNlIHRoZSBzYW1lIGZpbGUgbXVsdGlwbGUgdGltZXNcbiAgICB2YXIgJHJlZiA9ICRyZWZzLl9hZGQocGF0aCk7XG5cbiAgICAvLyBUaGlzIFwiZmlsZSBvYmplY3RcIiB3aWxsIGJlIHBhc3NlZCB0byBhbGwgcmVzb2x2ZXJzIGFuZCBwYXJzZXJzLlxuICAgIHZhciBmaWxlID0ge1xuICAgICAgdXJsOiBwYXRoLFxuICAgICAgZXh0ZW5zaW9uOiB1cmwuZ2V0RXh0ZW5zaW9uKHBhdGgpLFxuICAgIH07XG5cbiAgICAvLyBSZWFkIHRoZSBmaWxlIGFuZCB0aGVuIHBhcnNlIHRoZSBkYXRhXG4gICAgcmV0dXJuIHJlYWRGaWxlKGZpbGUsIG9wdGlvbnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzb2x2ZXIpIHtcbiAgICAgICAgJHJlZi5wYXRoVHlwZSA9IHJlc29sdmVyLnBsdWdpbi5uYW1lO1xuICAgICAgICBmaWxlLmRhdGEgPSByZXNvbHZlci5yZXN1bHQ7XG4gICAgICAgIHJldHVybiBwYXJzZUZpbGUoZmlsZSwgb3B0aW9ucyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHBhcnNlcikge1xuICAgICAgICAkcmVmLnZhbHVlID0gcGFyc2VyLnJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZXN1bHQ7XG4gICAgICB9KTtcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBnaXZlbiBmaWxlLCB1c2luZyB0aGUgY29uZmlndXJlZCByZXNvbHZlciBwbHVnaW5zXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSByYXcgZmlsZSBjb250ZW50cyBhbmQgdGhlIHJlc29sdmVyIHRoYXQgd2FzIHVzZWQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRGaWxlIChmaWxlLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ1JlYWRpbmcgJXMnLCBmaWxlLnVybCk7XG5cbiAgICAvLyBGaW5kIHRoZSByZXNvbHZlcnMgdGhhdCBjYW4gcmVhZCB0aGlzIGZpbGVcbiAgICB2YXIgcmVzb2x2ZXJzID0gcGx1Z2lucy5hbGwob3B0aW9ucy5yZXNvbHZlKTtcbiAgICByZXNvbHZlcnMgPSBwbHVnaW5zLmZpbHRlcihyZXNvbHZlcnMsICdjYW5SZWFkJywgZmlsZSk7XG5cbiAgICAvLyBSdW4gdGhlIHJlc29sdmVycywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHN1Y2NlZWRzXG4gICAgcGx1Z2lucy5zb3J0KHJlc29sdmVycyk7XG4gICAgcGx1Z2lucy5ydW4ocmVzb2x2ZXJzLCAncmVhZCcsIGZpbGUpXG4gICAgICAudGhlbihyZXNvbHZlLCBvbkVycm9yKTtcblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgLy8gVGhyb3cgdGhlIG9yaWdpbmFsIGVycm9yLCBpZiBpdCdzIG9uZSBvZiBvdXIgb3duICh1c2VyLWZyaWVuZGx5KSBlcnJvcnMuXG4gICAgICAvLyBPdGhlcndpc2UsIHRocm93IGEgZ2VuZXJpYywgZnJpZW5kbHkgZXJyb3IuXG4gICAgICBpZiAoZXJyICYmICEoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlamVjdChvbm8uc3ludGF4KCdVbmFibGUgdG8gcmVzb2x2ZSAkcmVmIHBvaW50ZXIgXCIlc1wiJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gZmlsZSdzIGNvbnRlbnRzLCB1c2luZyB0aGUgY29uZmlndXJlZCBwYXJzZXIgcGx1Z2lucy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBmaWxlIGNvbnRlbnRzIGFuZCB0aGUgcGFyc2VyIHRoYXQgd2FzIHVzZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmlsZSAoZmlsZSwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGRlYnVnKCdQYXJzaW5nICVzJywgZmlsZS51cmwpO1xuXG4gICAgLy8gRmluZCB0aGUgcGFyc2VycyB0aGF0IGNhbiByZWFkIHRoaXMgZmlsZSB0eXBlLlxuICAgIC8vIElmIG5vbmUgb2YgdGhlIHBhcnNlcnMgYXJlIGFuIGV4YWN0IG1hdGNoIGZvciB0aGlzIGZpbGUsIHRoZW4gd2UnbGwgdHJ5IEFMTCBvZiB0aGVtLlxuICAgIC8vIFRoaXMgaGFuZGxlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBmaWxlIElTIGEgc3VwcG9ydGVkIHR5cGUsIGp1c3Qgd2l0aCBhbiB1bmtub3duIGV4dGVuc2lvbi5cbiAgICB2YXIgYWxsUGFyc2VycyA9IHBsdWdpbnMuYWxsKG9wdGlvbnMucGFyc2UpO1xuICAgIHZhciBmaWx0ZXJlZFBhcnNlcnMgPSBwbHVnaW5zLmZpbHRlcihhbGxQYXJzZXJzLCAnY2FuUGFyc2UnLCBmaWxlKTtcbiAgICB2YXIgcGFyc2VycyA9IGZpbHRlcmVkUGFyc2Vycy5sZW5ndGggPiAwID8gZmlsdGVyZWRQYXJzZXJzIDogYWxsUGFyc2VycztcblxuICAgIC8vIFJ1biB0aGUgcGFyc2VycywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHN1Y2NlZWRzXG4gICAgcGx1Z2lucy5zb3J0KHBhcnNlcnMpO1xuICAgIHBsdWdpbnMucnVuKHBhcnNlcnMsICdwYXJzZScsIGZpbGUpXG4gICAgICAudGhlbihvblBhcnNlZCwgb25FcnJvcik7XG5cbiAgICBmdW5jdGlvbiBvblBhcnNlZCAocGFyc2VyKSB7XG4gICAgICBpZiAoIXBhcnNlci5wbHVnaW4uYWxsb3dFbXB0eSAmJiBpc0VtcHR5KHBhcnNlci5yZXN1bHQpKSB7XG4gICAgICAgIHJlamVjdChvbm8uc3ludGF4KCdFcnJvciBwYXJzaW5nIFwiJXNcIiBhcyAlcy4gXFxuUGFyc2VkIHZhbHVlIGlzIGVtcHR5JywgZmlsZS51cmwsIHBhcnNlci5wbHVnaW4ubmFtZSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlc29sdmUocGFyc2VyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkVycm9yIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZXJyID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoZXJyLCAnRXJyb3IgcGFyc2luZyAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ1VuYWJsZSB0byBwYXJzZSAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBhcnNlZCB2YWx1ZSBpcyBcImVtcHR5XCIuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkgKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB8fFxuICAgIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCSU5BUllfUkVHRVhQID0gL1xcLihqcGVnfGpwZ3xnaWZ8cG5nfGJtcHxpY28pJC9pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcGFyc2VyIHdpbGwgcnVuLCBpbiByZWxhdGlvbiB0byBvdGhlciBwYXJzZXJzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgb3JkZXI6IDQwMCxcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBcImVtcHR5XCIgZmlsZXMgKHplcm8gYnl0ZXMpLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIGJlIHNraXBwZWQsIFVOTEVTUyBhbGwgcGFyc2VycyByZXR1cm5lZCBmYWxzZSwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGlzQmluYXJ5IChmaWxlKSB7XG4gICAgLy8gVXNlIHRoaXMgcGFyc2VyIGlmIHRoZSBmaWxlIGlzIGEgQnVmZmVyLCBhbmQgaGFzIGEga25vd24gYmluYXJ5IGV4dGVuc2lvblxuICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSAmJiBCSU5BUllfUkVHRVhQLnRlc3QoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGRhdGEgYXMgYSBCdWZmZXIgKGJ5dGUgYXJyYXkpLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZUJpbmFyeSAoZmlsZSkge1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZpbGUuZGF0YTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGlzIHdpbGwgcmVqZWN0IGlmIGRhdGEgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBhIHN0cmluZyBvciB0eXBlZCBhcnJheVxuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIoZmlsZS5kYXRhKTtcbiAgICB9XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMTAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcy4gVGhpcyBpbmNsdWRlcyB6ZXJvLWJ5dGUgZmlsZXMsIGFzIHdlbGwgYXMgZW1wdHkgSlNPTiBvYmplY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IG1hdGNoIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IGRvbid0IG1hdGNoIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIG5vbmUgb2YgdGhlIHBhcnNlcnMgbWF0Y2gsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtSZWdFeHB8c3RyaW5nW118ZnVuY3Rpb259XG4gICAqL1xuICBjYW5QYXJzZTogJy5qc29uJyxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIEpTT05cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlSlNPTiAoZmlsZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGZpbGUuZGF0YTtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZGF0YS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpOyAgLy8gVGhpcyBtaXJyb3JzIHRoZSBZQU1MIGJlaGF2aW9yXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGRhdGEgaXMgYWxyZWFkeSBhIEphdmFTY3JpcHQgdmFsdWUgKG9iamVjdCwgYXJyYXksIG51bWJlciwgbnVsbCwgTmFOLCBldGMuKVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVEVYVF9SRUdFWFAgPSAvXFwuKHR4dHxodG18aHRtbHxtZHx4bWx8anN8bWlufG1hcHxjc3N8c2Nzc3xsZXNzfHN2ZykkL2k7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMzAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcyAoemVybyBieXRlcykuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogVGhlIGVuY29kaW5nIHRoYXQgdGhlIHRleHQgaXMgZXhwZWN0ZWQgdG8gYmUgaW4uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBlbmNvZGluZzogJ3V0ZjgnLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyBwYXJzZXIgY2FuIHBhcnNlIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFBhcnNlcnMgdGhhdCByZXR1cm4gdHJ1ZSB3aWxsIGJlIHRyaWVkLCBpbiBvcmRlciwgdW50aWwgb25lIHN1Y2Nlc3NmdWxseSBwYXJzZXMgdGhlIGZpbGUuXG4gICAqIFBhcnNlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBiZSBza2lwcGVkLCBVTkxFU1MgYWxsIHBhcnNlcnMgcmV0dXJuZWQgZmFsc2UsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblBhcnNlOiBmdW5jdGlvbiBpc1RleHQgKGZpbGUpIHtcbiAgICAvLyBVc2UgdGhpcyBwYXJzZXIgaWYgdGhlIGZpbGUgaXMgYSBzdHJpbmcgb3IgQnVmZmVyLCBhbmQgaGFzIGEga25vd24gdGV4dC1iYXNlZCBleHRlbnNpb25cbiAgICByZXR1cm4gKHR5cGVvZiBmaWxlLmRhdGEgPT09ICdzdHJpbmcnIHx8IEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSAmJiBURVhUX1JFR0VYUC50ZXN0KGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIHRleHRcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VUZXh0IChmaWxlKSB7XG4gICAgaWYgKHR5cGVvZiBmaWxlLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhO1xuICAgIH1cbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoZmlsZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZpbGUuZGF0YS50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgaXMgbm90IHRleHQnKTtcbiAgICB9XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBZQU1MID0gcmVxdWlyZSgnLi4vdXRpbC95YW1sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMjAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcy4gVGhpcyBpbmNsdWRlcyB6ZXJvLWJ5dGUgZmlsZXMsIGFzIHdlbGwgYXMgZW1wdHkgSlNPTiBvYmplY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGFsbG93RW1wdHk6IHRydWUsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IG1hdGNoIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IGRvbid0IG1hdGNoIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIG5vbmUgb2YgdGhlIHBhcnNlcnMgbWF0Y2gsIGluIHdoaWNoIGNhc2VcbiAgICogZXZlcnkgcGFyc2VyIHdpbGwgYmUgdHJpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtSZWdFeHB8c3RyaW5nW118ZnVuY3Rpb259XG4gICAqL1xuICBjYW5QYXJzZTogWycueWFtbCcsICcueW1sJywgJy5qc29uJ10sICAvLyBKU09OIGlzIHZhbGlkIFlBTUxcblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlIGFzIFlBTUxcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlWUFNTCAoZmlsZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGZpbGUuZGF0YTtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXNvbHZlKFlBTUwucGFyc2UoZGF0YSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGRhdGEgaXMgYWxyZWFkeSBhIEphdmFTY3JpcHQgdmFsdWUgKG9iamVjdCwgYXJyYXksIG51bWJlciwgbnVsbCwgTmFOLCBldGMuKVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvaW50ZXI7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgc2xhc2hlcyA9IC9cXC8vZyxcbiAgICB0aWxkZXMgPSAvfi9nLFxuICAgIGVzY2FwZWRTbGFzaCA9IC9+MS9nLFxuICAgIGVzY2FwZWRUaWxkZSA9IC9+MC9nO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbmdsZSBKU09OIHBvaW50ZXIgYW5kIGl0cyByZXNvbHZlZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0geyRSZWZ9ICRyZWZcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZyaWVuZGx5UGF0aF0gLSBUaGUgb3JpZ2luYWwgdXNlci1zcGVjaWZpZWQgcGF0aCAodXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gUG9pbnRlciAoJHJlZiwgcGF0aCwgZnJpZW5kbHlQYXRoKSB7XG4gIC8qKlxuICAgKiBUaGUge0BsaW5rICRSZWZ9IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMge0BsaW5rIFBvaW50ZXJ9IG9iamVjdC5cbiAgICogQHR5cGUgeyRSZWZ9XG4gICAqL1xuICB0aGlzLiRyZWYgPSAkcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIG9yIFVSTCwgY29udGFpbmluZyB0aGUgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoLlxuICAgKiBUaGlzIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIHBhdGggb2YgdGhlIG1haW4gSlNPTiBzY2hlbWEgZmlsZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHRoaXMucGF0aCA9IHBhdGg7XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBwYXRoIG9yIFVSTCwgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLm9yaWdpbmFsUGF0aCA9IGZyaWVuZGx5UGF0aCB8fCBwYXRoO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIEpTT04gcG9pbnRlci5cbiAgICogQ2FuIGJlIGFueSBKU09OIHR5cGUsIG5vdCBqdXN0IG9iamVjdHMuIFVua25vd24gZmlsZSB0eXBlcyBhcmUgcmVwcmVzZW50ZWQgYXMgQnVmZmVycyAoYnl0ZSBhcnJheXMpLlxuICAgKiBAdHlwZSB7Pyp9XG4gICAqL1xuICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcG9pbnRlciByZWZlcmVuY2VzIGl0c2VsZi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICB0aGlzLmNpcmN1bGFyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaW5kaXJlY3QgcmVmZXJlbmNlcyB0aGF0IHdlcmUgdHJhdmVyc2VkIHRvIHJlc29sdmUgdGhlIHZhbHVlLlxuICAgKiBSZXNvbHZpbmcgYSBzaW5nbGUgcG9pbnRlciBtYXkgcmVxdWlyZSByZXNvbHZpbmcgbXVsdGlwbGUgJFJlZnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICB0aGlzLmluZGlyZWN0aW9ucyA9IDA7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IHdpdGhpbiB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgY3Jhd2xlZFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxuICogUmV0dXJucyBhIEpTT04gcG9pbnRlciB3aG9zZSB7QGxpbmsgUG9pbnRlciN2YWx1ZX0gaXMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogSWYgcmVzb2x2aW5nIHRoaXMgdmFsdWUgcmVxdWlyZWQgcmVzb2x2aW5nIG90aGVyIEpTT04gcmVmZXJlbmNlcywgdGhlblxuICogdGhlIHtAbGluayBQb2ludGVyIyRyZWZ9IGFuZCB7QGxpbmsgUG9pbnRlciNwYXRofSB3aWxsIHJlZmxlY3QgdGhlIHJlc29sdXRpb24gcGF0aFxuICogb2YgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5Qb2ludGVyLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKG9iaiwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gUG9pbnRlci5wYXJzZSh0aGlzLnBhdGgpO1xuXG4gIC8vIENyYXdsIHRoZSBvYmplY3QsIG9uZSB0b2tlbiBhdCBhIHRpbWVcbiAgdGhpcy52YWx1ZSA9IG9iajtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKSkge1xuICAgICAgLy8gVGhlICRyZWYgcGF0aCBoYXMgY2hhbmdlZCwgc28gYXBwZW5kIHRoZSByZW1haW5pbmcgdG9rZW5zIHRvIHRoZSBwYXRoXG4gICAgICB0aGlzLnBhdGggPSBQb2ludGVyLmpvaW4odGhpcy5wYXRoLCB0b2tlbnMuc2xpY2UoaSkpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICBpZiAodGhpcy52YWx1ZVt0b2tlbl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgb25vLnN5bnRheCgnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblRva2VuIFwiJXNcIiBkb2VzIG5vdCBleGlzdC4nLCB0aGlzLm9yaWdpbmFsUGF0aCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlW3Rva2VuXTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNvbHZlIHRoZSBmaW5hbCB2YWx1ZVxuICByZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBjcmF3bGVkXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gdGhlIHZhbHVlIHRvIGFzc2lnblxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHsqfVxuICogUmV0dXJucyB0aGUgbW9kaWZpZWQgb2JqZWN0LCBvciBhbiBlbnRpcmVseSBuZXcgb2JqZWN0IGlmIHRoZSBlbnRpcmUgb2JqZWN0IGlzIG92ZXJ3cml0dGVuLlxuICovXG5Qb2ludGVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2JqLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gUG9pbnRlci5wYXJzZSh0aGlzLnBhdGgpO1xuICB2YXIgdG9rZW47XG5cbiAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBUaGVyZSBhcmUgbm8gdG9rZW5zLCByZXBsYWNlIHRoZSBlbnRpcmUgb2JqZWN0IHdpdGggdGhlIG5ldyB2YWx1ZVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBDcmF3bCB0aGUgb2JqZWN0LCBvbmUgdG9rZW4gYXQgYSB0aW1lXG4gIHRoaXMudmFsdWUgPSBvYmo7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIHJlc29sdmVJZiRSZWYodGhpcywgb3B0aW9ucyk7XG5cbiAgICB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW3Rva2VuXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBUaGUgdG9rZW4gZXhpc3RzXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZVt0b2tlbl07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gVGhlIHRva2VuIGRvZXNuJ3QgZXhpc3QsIHNvIGNyZWF0ZSBpdFxuICAgICAgdGhpcy52YWx1ZSA9IHNldFZhbHVlKHRoaXMsIHRva2VuLCB7fSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZmluYWwgdG9rZW5cbiAgcmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKTtcbiAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICBzZXRWYWx1ZSh0aGlzLCB0b2tlbiwgdmFsdWUpO1xuXG4gIC8vIFJldHVybiB0aGUgdXBkYXRlZCBvYmplY3RcbiAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEgSlNPTiBwb2ludGVyIChvciBhIHBhdGggY29udGFpbmluZyBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaClcbiAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBwb2ludGVyJ3MgdG9rZW5zLlxuICogKGUuZy4gXCJzY2hlbWEuanNvbiMvZGVmaW5pdGlvbnMvcGVyc29uL25hbWVcIiA9PiBbXCJkZWZpbml0aW9uc1wiLCBcInBlcnNvblwiLCBcIm5hbWVcIl0pXG4gKlxuICogVGhlIHBvaW50ZXIgaXMgcGFyc2VkIGFjY29yZGluZyB0byBSRkMgNjkwMVxuICoge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTAxI3NlY3Rpb24tM31cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ1tdfVxuICovXG5Qb2ludGVyLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgLy8gR2V0IHRoZSBKU09OIHBvaW50ZXIgZnJvbSB0aGUgcGF0aCdzIGhhc2hcbiAgdmFyIHBvaW50ZXIgPSB1cmwuZ2V0SGFzaChwYXRoKS5zdWJzdHIoMSk7XG5cbiAgLy8gSWYgdGhlcmUncyBubyBwb2ludGVyLCB0aGVuIHRoZXJlIGFyZSBubyB0b2tlbnMsXG4gIC8vIHNvIHJldHVybiBhbiBlbXB0eSBhcnJheVxuICBpZiAoIXBvaW50ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBTcGxpdCBpbnRvIGFuIGFycmF5XG4gIHBvaW50ZXIgPSBwb2ludGVyLnNwbGl0KCcvJyk7XG5cbiAgLy8gRGVjb2RlIGVhY2ggcGFydCwgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlci5sZW5ndGg7IGkrKykge1xuICAgIHBvaW50ZXJbaV0gPSBkZWNvZGVVUklDb21wb25lbnQocG9pbnRlcltpXS5yZXBsYWNlKGVzY2FwZWRTbGFzaCwgJy8nKS5yZXBsYWNlKGVzY2FwZWRUaWxkZSwgJ34nKSk7XG4gIH1cblxuICBpZiAocG9pbnRlclswXSAhPT0gJycpIHtcbiAgICB0aHJvdyBvbm8uc3ludGF4KCdJbnZhbGlkICRyZWYgcG9pbnRlciBcIiVzXCIuIFBvaW50ZXJzIG11c3QgYmVnaW4gd2l0aCBcIiMvXCInLCBwb2ludGVyKTtcbiAgfVxuXG4gIHJldHVybiBwb2ludGVyLnNsaWNlKDEpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgSlNPTiBwb2ludGVyIHBhdGgsIGJ5IGpvaW5pbmcgb25lIG9yIG1vcmUgdG9rZW5zIHRvIGEgYmFzZSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIC0gVGhlIGJhc2UgcGF0aCAoZS5nLiBcInNjaGVtYS5qc29uIy9kZWZpbml0aW9ucy9wZXJzb25cIilcbiAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSB0b2tlbnMgLSBUaGUgdG9rZW4ocykgdG8gYXBwZW5kIChlLmcuIFtcIm5hbWVcIiwgXCJmaXJzdFwiXSlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblBvaW50ZXIuam9pbiA9IGZ1bmN0aW9uIChiYXNlLCB0b2tlbnMpIHtcbiAgLy8gRW5zdXJlIHRoYXQgdGhlIGJhc2UgcGF0aCBjb250YWlucyBhIGhhc2hcbiAgaWYgKGJhc2UuaW5kZXhPZignIycpID09PSAtMSkge1xuICAgIGJhc2UgKz0gJyMnO1xuICB9XG5cbiAgLy8gQXBwZW5kIGVhY2ggdG9rZW4gdG8gdGhlIGJhc2UgcGF0aFxuICB0b2tlbnMgPSBBcnJheS5pc0FycmF5KHRva2VucykgPyB0b2tlbnMgOiBbdG9rZW5zXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgLy8gRW5jb2RlIHRoZSB0b2tlbiwgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gICAgYmFzZSArPSAnLycgKyBlbmNvZGVVUklDb21wb25lbnQodG9rZW4ucmVwbGFjZSh0aWxkZXMsICd+MCcpLnJlcGxhY2Uoc2xhc2hlcywgJ34xJykpO1xuICB9XG5cbiAgcmV0dXJuIGJhc2U7XG59O1xuXG4vKipcbiAqIElmIHRoZSBnaXZlbiBwb2ludGVyJ3Mge0BsaW5rIFBvaW50ZXIjdmFsdWV9IGlzIGEgSlNPTiByZWZlcmVuY2UsXG4gKiB0aGVuIHRoZSByZWZlcmVuY2UgaXMgcmVzb2x2ZWQgYW5kIHtAbGluayBQb2ludGVyI3ZhbHVlfSBpcyByZXBsYWNlZCB3aXRoIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqIEluIGFkZGl0aW9uLCB7QGxpbmsgUG9pbnRlciNwYXRofSBhbmQge0BsaW5rIFBvaW50ZXIjJHJlZn0gYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGVcbiAqIHJlc29sdXRpb24gcGF0aCBvZiB0aGUgbmV3IHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7UG9pbnRlcn0gcG9pbnRlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlc29sdXRpb24gcGF0aCBjaGFuZ2VkXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVJZiRSZWYgKHBvaW50ZXIsIG9wdGlvbnMpIHtcbiAgLy8gSXMgdGhlIHZhbHVlIGEgSlNPTiByZWZlcmVuY2U/IChhbmQgYWxsb3dlZD8pXG5cbiAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZihwb2ludGVyLnZhbHVlLCBvcHRpb25zKSkge1xuICAgIHZhciAkcmVmUGF0aCA9IHVybC5yZXNvbHZlKHBvaW50ZXIucGF0aCwgcG9pbnRlci52YWx1ZS4kcmVmKTtcblxuICAgIGlmICgkcmVmUGF0aCA9PT0gcG9pbnRlci5wYXRoKSB7XG4gICAgICAvLyBUaGUgdmFsdWUgaXMgYSByZWZlcmVuY2UgdG8gaXRzZWxmLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uXG4gICAgICBwb2ludGVyLmNpcmN1bGFyID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgcmVzb2x2ZWQgPSBwb2ludGVyLiRyZWYuJHJlZnMuX3Jlc29sdmUoJHJlZlBhdGgsIG9wdGlvbnMpO1xuICAgICAgcG9pbnRlci5pbmRpcmVjdGlvbnMgKz0gcmVzb2x2ZWQuaW5kaXJlY3Rpb25zICsgMTtcblxuICAgICAgaWYgKCRSZWYuaXNFeHRlbmRlZCRSZWYocG9pbnRlci52YWx1ZSkpIHtcbiAgICAgICAgLy8gVGhpcyBKU09OIHJlZmVyZW5jZSBcImV4dGVuZHNcIiB0aGUgcmVzb2x2ZWQgdmFsdWUsIHJhdGhlciB0aGFuIHNpbXBseSBwb2ludGluZyB0byBpdC5cbiAgICAgICAgLy8gU28gdGhlIHJlc29sdmVkIHBhdGggZG9lcyBOT1QgY2hhbmdlLiAgSnVzdCB0aGUgdmFsdWUgZG9lcy5cbiAgICAgICAgcG9pbnRlci52YWx1ZSA9ICRSZWYuZGVyZWZlcmVuY2UocG9pbnRlci52YWx1ZSwgcmVzb2x2ZWQudmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgIHBvaW50ZXIuJHJlZiA9IHJlc29sdmVkLiRyZWY7XG4gICAgICAgIHBvaW50ZXIucGF0aCA9IHJlc29sdmVkLnBhdGg7XG4gICAgICAgIHBvaW50ZXIudmFsdWUgPSByZXNvbHZlZC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2V0cyB0aGUgc3BlY2lmaWVkIHRva2VuIHZhbHVlIG9mIHRoZSB7QGxpbmsgUG9pbnRlciN2YWx1ZX0uXG4gKlxuICogVGhlIHRva2VuIGlzIGV2YWx1YXRlZCBhY2NvcmRpbmcgdG8gUkZDIDY5MDEuXG4gKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi00fVxuICpcbiAqIEBwYXJhbSB7UG9pbnRlcn0gcG9pbnRlciAtIFRoZSBKU09OIFBvaW50ZXIgd2hvc2UgdmFsdWUgd2lsbCBiZSBtb2RpZmllZFxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIC0gQSBKU09OIFBvaW50ZXIgdG9rZW4gdGhhdCBpbmRpY2F0ZXMgaG93IHRvIG1vZGlmeSBgb2JqYFxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIGFzc2lnbmVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNldFZhbHVlIChwb2ludGVyLCB0b2tlbiwgdmFsdWUpIHtcbiAgaWYgKHBvaW50ZXIudmFsdWUgJiYgdHlwZW9mIHBvaW50ZXIudmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKHRva2VuID09PSAnLScgJiYgQXJyYXkuaXNBcnJheShwb2ludGVyLnZhbHVlKSkge1xuICAgICAgcG9pbnRlci52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBwb2ludGVyLnZhbHVlW3Rva2VuXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBvbm8uc3ludGF4KCdFcnJvciBhc3NpZ25pbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuQ2Fubm90IHNldCBcIiVzXCIgb2YgYSBub24tb2JqZWN0LicsIHBvaW50ZXIucGF0aCwgdG9rZW4pO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAkUmVmO1xuXG52YXIgUG9pbnRlciA9IHJlcXVpcmUoJy4vcG9pbnRlcicpO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbmdsZSBKU09OIHJlZmVyZW5jZSBhbmQgaXRzIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiAkUmVmICgpIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGUuXG4gICAqIFRoaXMgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGF0aCBvZiB0aGUgbWFpbiBKU09OIHNjaGVtYSBmaWxlLlxuICAgKlxuICAgKiBUaGlzIHBhdGggZG9lcyBOT1QgY29udGFpbiBkb2N1bWVudCBmcmFnbWVudHMgKEpTT04gcG9pbnRlcnMpLiBJdCBhbHdheXMgcmVmZXJlbmNlcyBhbiBFTlRJUkUgZmlsZS5cbiAgICogVXNlIG1ldGhvZHMgc3VjaCBhcyB7QGxpbmsgJFJlZiNnZXR9LCB7QGxpbmsgJFJlZiNyZXNvbHZlfSwgYW5kIHtAbGluayAkUmVmI2V4aXN0c30gdG8gZ2V0XG4gICAqIHNwZWNpZmljIEpTT04gcG9pbnRlcnMgd2l0aGluIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5wYXRoID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIEpTT04gcmVmZXJlbmNlLlxuICAgKiBDYW4gYmUgYW55IEpTT04gdHlwZSwgbm90IGp1c3Qgb2JqZWN0cy4gVW5rbm93biBmaWxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBhcyBCdWZmZXJzIChieXRlIGFycmF5cykuXG4gICAqIEB0eXBlIHs/Kn1cbiAgICovXG4gIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgJFJlZnN9IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMge0BsaW5rICRSZWZ9IG9iamVjdC5cbiAgICogQHR5cGUgeyRSZWZzfVxuICAgKi9cbiAgdGhpcy4kcmVmcyA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHtAbGluayAkUmVmI3BhdGh9IChlLmcuIFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcbiAgICogQHR5cGUgez9zdHJpbmd9XG4gICAqL1xuICB0aGlzLnBhdGhUeXBlID0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UgZXhpc3RzIHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgdGhpcy5yZXNvbHZlKHBhdGgsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0gYW5kIHJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZVxuICovXG4kUmVmLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5yZXNvbHZlKHBhdGgsIG9wdGlvbnMpLnZhbHVlO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2Ugd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZyaWVuZGx5UGF0aF0gLSBUaGUgb3JpZ2luYWwgdXNlci1zcGVjaWZpZWQgcGF0aCAodXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcmV0dXJucyB7UG9pbnRlcn1cbiAqL1xuJFJlZi5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zLCBmcmllbmRseVBhdGgpIHtcbiAgdmFyIHBvaW50ZXIgPSBuZXcgUG9pbnRlcih0aGlzLCBwYXRoLCBmcmllbmRseVBhdGgpO1xuICByZXR1cm4gcG9pbnRlci5yZXNvbHZlKHRoaXMudmFsdWUsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXG4gKiBJZiB0aGUgcHJvcGVydHksIG9yIGFueSBvZiBpdHMgcGFyZW50cyBkb24ndCBleGlzdCwgdGhleSB3aWxsIGJlIGNyZWF0ZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cbiAqL1xuJFJlZi5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHBhdGgsIHZhbHVlKSB7XG4gIHZhciBwb2ludGVyID0gbmV3IFBvaW50ZXIodGhpcywgcGF0aCk7XG4gIHRoaXMudmFsdWUgPSBwb2ludGVyLnNldCh0aGlzLnZhbHVlLCB2YWx1ZSk7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZS5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUuJHJlZiA9PT0gJ3N0cmluZycgJiYgdmFsdWUuJHJlZi5sZW5ndGggPiAwO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXNFeHRlcm5hbCRSZWYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuICRSZWYuaXMkUmVmKHZhbHVlKSAmJiB2YWx1ZS4kcmVmWzBdICE9PSAnIyc7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZSwgYW5kIHdoZXRoZXIgaXQgaXMgYWxsb3dlZCBieSB0aGUgb3B0aW9ucy5cbiAqIEZvciBleGFtcGxlLCBpZiBpdCByZWZlcmVuY2VzIGFuIGV4dGVybmFsIGZpbGUsIHRoZW4gb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsIG11c3QgYmUgdHJ1ZS5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzQWxsb3dlZCRSZWYgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCRSZWYuaXMkUmVmKHZhbHVlKSkge1xuICAgIGlmICh2YWx1ZS4kcmVmLnN1YnN0cigwLCAyKSA9PT0gJyMvJyB8fCB2YWx1ZS4kcmVmID09PSAnIycpIHtcbiAgICAgIC8vIEl0J3MgYSBKU09OIFBvaW50ZXIgcmVmZXJlbmNlLCB3aGljaCBpcyBhbHdheXMgYWxsb3dlZFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLiRyZWZbMF0gIT09ICcjJyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsKSkge1xuICAgICAgLy8gSXQncyBhbiBleHRlcm5hbCByZWZlcmVuY2UsIHdoaWNoIGlzIGFsbG93ZWQgYnkgdGhlIG9wdGlvbnNcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgSlNPTiByZWZlcmVuY2UgdGhhdCBcImV4dGVuZHNcIiBpdHMgcmVzb2x2ZWQgdmFsdWUuXG4gKiBUaGF0IGlzLCBpdCBoYXMgZXh0cmEgcHJvcGVydGllcyAoaW4gYWRkaXRpb24gdG8gXCIkcmVmXCIpLCBzbyByYXRoZXIgdGhhbiBzaW1wbHkgcG9pbnRpbmcgdG9cbiAqIGFuIGV4aXN0aW5nIHZhbHVlLCB0aGlzICRyZWYgYWN0dWFsbHkgY3JlYXRlcyBhIE5FVyB2YWx1ZSB0aGF0IGlzIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSByZXNvbHZlZFxuICogdmFsdWUsIHBsdXMgdGhlIGV4dHJhIHByb3BlcnRpZXMuXG4gKlxuICogQGV4YW1wbGU6XG4gKiAge1xuICogICAgcGVyc29uOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICBmaXJzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICB9XG4gKiAgICB9XG4gKiAgICBlbXBsb3llZToge1xuICogICAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgICAgJHJlZjogIy9wZXJzb24vcHJvcGVydGllc1xuICogICAgICAgIHNhbGFyeTogeyB0eXBlOiBudW1iZXIgfVxuICogICAgICB9XG4gKiAgICB9XG4gKiAgfVxuICpcbiAqICBJbiB0aGlzIGV4YW1wbGUsIFwiZW1wbG95ZWVcIiBpcyBhbiBleHRlbmRlZCAkcmVmLCBzaW5jZSBpdCBleHRlbmRzIFwicGVyc29uXCIgd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiAgcHJvcGVydHkgKHNhbGFyeSkuICBUaGUgcmVzdWx0IGlzIGEgTkVXIHZhbHVlIHRoYXQgbG9va3MgbGlrZSB0aGlzOlxuICpcbiAqICB7XG4gKiAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBpbnNwZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5pc0V4dGVuZGVkJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gJFJlZi5pcyRSZWYodmFsdWUpICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZSBvZiBhIEpTT04gUmVmZXJlbmNlLlxuICogSWYgbmVjZXNzYXJ5LCB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgbWVyZ2VkIHdpdGggdGhlIEpTT04gUmVmZXJlbmNlIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBwZXJzb246IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICAgIGVtcGxveWVlOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICAkcmVmOiAjL3BlcnNvbi9wcm9wZXJ0aWVzXG4gKiAgICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogIFdoZW4gXCJwZXJzb25cIiBhbmQgXCJlbXBsb3llZVwiIGFyZSBtZXJnZWQsIHlvdSBlbmQgdXAgd2l0aCB0aGUgZm9sbG93aW5nIG9iamVjdDpcbiAqXG4gKiAge1xuICogICAgcHJvcGVydGllczoge1xuICogICAgICBmaXJzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgbGFzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICB9XG4gKiAgfVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmIC0gVGhlIEpTT04gcmVmZXJlbmNlIG9iamVjdCAodGhlIG9uZSB3aXRoIHRoZSBcIiRyZWZcIiBwcm9wZXJ0eSlcbiAqIEBwYXJhbSB7Kn0gcmVzb2x2ZWRWYWx1ZSAtIFRoZSByZXNvbHZlZCB2YWx1ZSwgd2hpY2ggY2FuIGJlIGFueSB0eXBlXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSBkZXJlZmVyZW5jZWQgdmFsdWVcbiAqL1xuJFJlZi5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uICgkcmVmLCByZXNvbHZlZFZhbHVlKSB7XG4gIGlmIChyZXNvbHZlZFZhbHVlICYmIHR5cGVvZiByZXNvbHZlZFZhbHVlID09PSAnb2JqZWN0JyAmJiAkUmVmLmlzRXh0ZW5kZWQkUmVmKCRyZWYpKSB7XG4gICAgdmFyIG1lcmdlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKCRyZWYpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKGtleSAhPT0gJyRyZWYnKSB7XG4gICAgICAgIG1lcmdlZFtrZXldID0gJHJlZltrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHJlc29sdmVkVmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKCEoa2V5IGluIG1lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSByZXNvbHZlZFZhbHVlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBDb21wbGV0ZWx5IHJlcGxhY2UgdGhlIG9yaWdpbmFsIHJlZmVyZW5jZSB3aXRoIHRoZSByZXNvbHZlZCB2YWx1ZVxuICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxyXG4gICAgJFJlZiA9IHJlcXVpcmUoJy4vcmVmJyksXHJcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZzO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY2xhc3MgaXMgYSBtYXAgb2YgSlNPTiByZWZlcmVuY2VzIGFuZCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiAkUmVmcyAoKSB7XHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNjaGVtYSBjb250YWlucyBhbnkgY2lyY3VsYXIgcmVmZXJlbmNlcy5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqL1xyXG4gIHRoaXMuY2lyY3VsYXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBtYXAgb2YgcGF0aHMvdXJscyB0byB7QGxpbmsgJFJlZn0gb2JqZWN0c1xyXG4gICAqXHJcbiAgICogQHR5cGUge29iamVjdH1cclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgdGhpcy5fJHJlZnMgPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHtAbGluayAkUmVmfSBvYmplY3QgdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgSlNPTiBzY2hlbWEuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7JFJlZn1cclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICovXHJcbiAgdGhpcy5fcm9vdCRSZWYgPSBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgcGF0aHMgb2YgYWxsIHRoZSBmaWxlcy9VUkxzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIEpTT04gc2NoZW1hLFxyXG4gKiBpbmNsdWRpbmcgdGhlIHNjaGVtYSBpdHNlbGYuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcGF0aHMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5wYXRocyA9IGZ1bmN0aW9uICh0eXBlcykge1xyXG4gIHZhciBwYXRocyA9IGdldFBhdGhzKHRoaXMuXyRyZWZzLCBhcmd1bWVudHMpO1xyXG4gIHJldHVybiBwYXRocy5tYXAoZnVuY3Rpb24gKHBhdGgpIHtcclxuICAgIHJldHVybiBwYXRoLmRlY29kZWQ7XHJcbiAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgbWFwIG9mIEpTT04gcmVmZXJlbmNlcyBhbmQgdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLlxyXG4gKlxyXG4gKiBAcGFyYW0gey4uLnN0cmluZ3xzdHJpbmdbXX0gW3R5cGVzXSAtIE9ubHkgcmV0dXJuIHJlZmVyZW5jZXMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtvYmplY3R9XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKHR5cGVzKSB7XHJcbiAgdmFyICRyZWZzID0gdGhpcy5fJHJlZnM7XHJcbiAgdmFyIHBhdGhzID0gZ2V0UGF0aHMoJHJlZnMsIGFyZ3VtZW50cyk7XHJcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZShmdW5jdGlvbiAob2JqLCBwYXRoKSB7XHJcbiAgICBvYmpbcGF0aC5kZWNvZGVkXSA9ICRyZWZzW3BhdGguZW5jb2RlZF0udmFsdWU7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH0sIHt9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgUE9KTyAocGxhaW4gb2xkIEphdmFTY3JpcHQgb2JqZWN0KSBmb3Igc2VyaWFsaXphdGlvbiBhcyBKU09OLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLnRvSlNPTiA9ICRSZWZzLnByb3RvdHlwZS52YWx1ZXM7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBleGlzdHMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc11cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcclxuICB0cnkge1xyXG4gICAgdGhpcy5fcmVzb2x2ZShwYXRoLCBvcHRpb25zKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBjYXRjaCAoZSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UgYW5kIHJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXVxyXG4gKiBAcmV0dXJucyB7Kn0gLSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XHJcbiAgcmV0dXJuIHRoaXMuX3Jlc29sdmUocGF0aCwgb3B0aW9ucykudmFsdWU7XHJcbn07XHJcblxyXG4vKipcclxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxyXG4gKiBJZiB0aGUgcHJvcGVydHksIG9yIGFueSBvZiBpdHMgcGFyZW50cyBkb24ndCBleGlzdCwgdGhleSB3aWxsIGJlIGNyZWF0ZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYXNzaWduXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHBhdGgsIHZhbHVlKSB7XHJcbiAgdmFyIGFic1BhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKGFic1BhdGgpO1xyXG4gIHZhciAkcmVmID0gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG5cclxuICBpZiAoISRyZWYpIHtcclxuICAgIHRocm93IG9ubygnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblwiJXNcIiBub3QgZm91bmQuJywgcGF0aCwgd2l0aG91dEhhc2gpO1xyXG4gIH1cclxuXHJcbiAgJHJlZi5zZXQoYWJzUGF0aCwgdmFsdWUpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rICRSZWZ9IG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGlzIHtAbGluayAkUmVmc30gb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAgLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX2FkZCA9IGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcclxuXHJcbiAgdmFyICRyZWYgPSBuZXcgJFJlZigpO1xyXG4gICRyZWYucGF0aCA9IHdpdGhvdXRIYXNoO1xyXG4gICRyZWYuJHJlZnMgPSB0aGlzO1xyXG5cclxuICB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF0gPSAkcmVmO1xyXG4gIHRoaXMuX3Jvb3QkUmVmID0gdGhpcy5fcm9vdCRSZWYgfHwgJHJlZjtcclxuXHJcbiAgcmV0dXJuICRyZWY7XHJcbn07XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdXHJcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxyXG4gKiBAcHJvdGVjdGVkXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX3Jlc29sdmUgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xyXG4gIHZhciBhYnNQYXRoID0gdXJsLnJlc29sdmUodGhpcy5fcm9vdCRSZWYucGF0aCwgcGF0aCk7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChhYnNQYXRoKTtcclxuICB2YXIgJHJlZiA9IHRoaXMuXyRyZWZzW3dpdGhvdXRIYXNoXTtcclxuXHJcbiAgaWYgKCEkcmVmKSB7XHJcbiAgICB0aHJvdyBvbm8oJ0Vycm9yIHJlc29sdmluZyAkcmVmIHBvaW50ZXIgXCIlc1wiLiBcXG5cIiVzXCIgbm90IGZvdW5kLicsIHBhdGgsIHdpdGhvdXRIYXNoKTtcclxuICB9XHJcblxyXG4gIHJldHVybiAkcmVmLnJlc29sdmUoYWJzUGF0aCwgb3B0aW9ucywgcGF0aCk7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHtAbGluayAkUmVmfSBvYmplY3QsIG9yIHVuZGVmaW5lZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEByZXR1cm5zIHskUmVmfHVuZGVmaW5lZH1cclxuICogQHByb3RlY3RlZFxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLl9nZXQkUmVmID0gZnVuY3Rpb24gKHBhdGgpIHtcclxuICBwYXRoID0gdXJsLnJlc29sdmUodGhpcy5fcm9vdCRSZWYucGF0aCwgcGF0aCk7XHJcbiAgdmFyIHdpdGhvdXRIYXNoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcclxuICByZXR1cm4gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGVuY29kZWQgYW5kIGRlY29kZWQgcGF0aHMga2V5cyBvZiB0aGUgZ2l2ZW4gb2JqZWN0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge29iamVjdH0gJHJlZnMgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIFVSTC1lbmNvZGVkIHBhdGhzXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcGF0aHMgb2YgdGhlIGdpdmVuIHR5cGVzIChcImZpbGVcIiwgXCJodHRwXCIsIGV0Yy4pXHJcbiAqIEByZXR1cm5zIHtvYmplY3RbXX1cclxuICovXHJcbmZ1bmN0aW9uIGdldFBhdGhzICgkcmVmcywgdHlwZXMpIHtcclxuICB2YXIgcGF0aHMgPSBPYmplY3Qua2V5cygkcmVmcyk7XHJcblxyXG4gIC8vIEZpbHRlciB0aGUgcGF0aHMgYnkgdHlwZVxyXG4gIHR5cGVzID0gQXJyYXkuaXNBcnJheSh0eXBlc1swXSkgPyB0eXBlc1swXSA6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHR5cGVzKTtcclxuICBpZiAodHlwZXMubGVuZ3RoID4gMCAmJiB0eXBlc1swXSkge1xyXG4gICAgcGF0aHMgPSBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICByZXR1cm4gdHlwZXMuaW5kZXhPZigkcmVmc1trZXldLnBhdGhUeXBlKSAhPT0gLTE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIERlY29kZSBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXHJcbiAgcmV0dXJuIHBhdGhzLm1hcChmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZW5jb2RlZDogcGF0aCxcclxuICAgICAgZGVjb2RlZDogJHJlZnNbcGF0aF0ucGF0aFR5cGUgPT09ICdmaWxlJyA/IHVybC50b0ZpbGVTeXN0ZW1QYXRoKHBhdGgsIHRydWUpIDogcGF0aFxyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXG4gICAgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZUV4dGVybmFsO1xuXG4vKipcbiAqIENyYXdscyB0aGUgSlNPTiBzY2hlbWEsIGZpbmRzIGFsbCBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMsIGFuZCByZXNvbHZlcyB0aGVpciB2YWx1ZXMuXG4gKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBtdXRhdGUgdGhlIEpTT04gc2NoZW1hLiBUaGUgcmVzb2x2ZWQgdmFsdWVzIGFyZSBhZGRlZCB0byB7QGxpbmsgJFJlZlBhcnNlciMkcmVmc30uXG4gKlxuICogTk9URTogV2Ugb25seSBjYXJlIGFib3V0IEVYVEVSTkFMIHJlZmVyZW5jZXMgaGVyZS4gSU5URVJOQUwgcmVmZXJlbmNlcyBhcmUgb25seSByZWxldmFudCB3aGVuIGRlcmVmZXJlbmNpbmcuXG4gKlxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIG9uY2UgYWxsIEpTT04gcmVmZXJlbmNlcyBpbiB0aGUgc2NoZW1hIGhhdmUgYmVlbiByZXNvbHZlZCxcbiAqIGluY2x1ZGluZyBuZXN0ZWQgcmVmZXJlbmNlcyB0aGF0IGFyZSBjb250YWluZWQgaW4gZXh0ZXJuYWxseS1yZWZlcmVuY2VkIGZpbGVzLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRXh0ZXJuYWwgKHBhcnNlciwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMucmVzb2x2ZS5leHRlcm5hbCkge1xuICAgIC8vIE5vdGhpbmcgdG8gcmVzb2x2ZSwgc28gZXhpdCBlYXJseVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgZGVidWcoJ1Jlc29sdmluZyAkcmVmIHBvaW50ZXJzIGluICVzJywgcGFyc2VyLiRyZWZzLl9yb290JFJlZi5wYXRoKTtcbiAgICB2YXIgcHJvbWlzZXMgPSBjcmF3bChwYXJzZXIuc2NoZW1hLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGggKyAnIycsIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGNyYXdscyB0aGUgZ2l2ZW4gdmFsdWUsIGFuZCByZXNvbHZlcyBhbnkgZXh0ZXJuYWwgSlNPTiByZWZlcmVuY2VzLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIHZhbHVlIHRvIGNyYXdsLiBJZiBpdCdzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgb2JqYCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHskUmVmc30gJHJlZnNcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZVtdfVxuICogUmV0dXJucyBhbiBhcnJheSBvZiBwcm9taXNlcy4gVGhlcmUgd2lsbCBiZSBvbmUgcHJvbWlzZSBmb3IgZWFjaCBKU09OIHJlZmVyZW5jZSBpbiBgb2JqYC5cbiAqIElmIGBvYmpgIGRvZXMgbm90IGNvbnRhaW4gYW55IEpTT04gcmVmZXJlbmNlcywgdGhlbiB0aGUgYXJyYXkgd2lsbCBiZSBlbXB0eS5cbiAqIElmIGFueSBvZiB0aGUgSlNPTiByZWZlcmVuY2VzIHBvaW50IHRvIGZpbGVzIHRoYXQgY29udGFpbiBhZGRpdGlvbmFsIEpTT04gcmVmZXJlbmNlcyxcbiAqIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgcHJvbWlzZSB3aWxsIGludGVybmFsbHkgcmVmZXJlbmNlIGFuIGFycmF5IG9mIHByb21pc2VzLlxuICovXG5mdW5jdGlvbiBjcmF3bCAob2JqLCBwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICB2YXIgcHJvbWlzZXMgPSBbXTtcblxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCRSZWYuaXNFeHRlcm5hbCRSZWYob2JqKSkge1xuICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlJFJlZihvYmosIHBhdGgsICRyZWZzLCBvcHRpb25zKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIGtleVBhdGggPSBQb2ludGVyLmpvaW4ocGF0aCwga2V5KTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKCRSZWYuaXNFeHRlcm5hbCRSZWYodmFsdWUpKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlJFJlZih2YWx1ZSwga2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBwcm9taXNlcyA9IHByb21pc2VzLmNvbmNhdChjcmF3bCh2YWx1ZSwga2V5UGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb21pc2VzO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSwgYW5kIHRoZW4gY3Jhd2xzIHRoZSByZXN1bHRpbmcgdmFsdWUuXG4gKlxuICogQHBhcmFtIHt7JHJlZjogc3RyaW5nfX0gJHJlZiAtIFRoZSBKU09OIFJlZmVyZW5jZSB0byByZXNvbHZlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgYCRyZWZgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgb25jZSBhbGwgSlNPTiByZWZlcmVuY2VzIGluIHRoZSBvYmplY3QgaGF2ZSBiZWVuIHJlc29sdmVkLFxuICogaW5jbHVkaW5nIG5lc3RlZCByZWZlcmVuY2VzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmUkUmVmICgkcmVmLCBwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCAkcmVmLiRyZWYsIHBhdGgpO1xuXG4gIHZhciByZXNvbHZlZFBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHJlc29sdmVkUGF0aCk7XG5cbiAgLy8gRG8gd2UgYWxyZWFkeSBoYXZlIHRoaXMgJHJlZj9cbiAgJHJlZiA9ICRyZWZzLl8kcmVmc1t3aXRob3V0SGFzaF07XG4gIGlmICgkcmVmKSB7XG4gICAgLy8gV2UndmUgYWxyZWFkeSBwYXJzZWQgdGhpcyAkcmVmLCBzbyB1c2UgdGhlIGV4aXN0aW5nIHZhbHVlXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgkcmVmLnZhbHVlKTtcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSAkcmVmZXJlbmNlZCBmaWxlL3VybFxuICByZXR1cm4gcGFyc2UocmVzb2x2ZWRQYXRoLCAkcmVmcywgb3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAvLyBDcmF3bCB0aGUgcGFyc2VkIHZhbHVlXG4gICAgICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCB3aXRob3V0SGFzaCk7XG4gICAgICB2YXIgcHJvbWlzZXMgPSBjcmF3bChyZXN1bHQsIHdpdGhvdXRIYXNoICsgJyMnLCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuLi91dGlsL3VybCcpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi4vdXRpbC9kZWJ1ZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcmVzb2x2ZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHJlc29sdmVycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAxMDAsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHJlc29sdmVyIGNhbiByZWFkIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHJlc29sdmVzIHRoZSBmaWxlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBub3QgYmUgZ2l2ZW4gYSBjaGFuY2UgdG8gcmVzb2x2ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblJlYWQ6IGZ1bmN0aW9uIGlzRmlsZSAoZmlsZSkge1xuICAgIHJldHVybiB1cmwuaXNGaWxlU3lzdGVtUGF0aChmaWxlLnVybCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBnaXZlbiBmaWxlIGFuZCByZXR1cm5zIGl0cyByYXcgY29udGVudHMgYXMgYSBCdWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHJlYWQ6IGZ1bmN0aW9uIHJlYWRGaWxlIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGF0aCA9IHVybC50b0ZpbGVTeXN0ZW1QYXRoKGZpbGUudXJsKTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9uby51cmkoZXJyLCAnTWFsZm9ybWVkIFVSSTogJXMnLCBmaWxlLnVybCkpO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnT3BlbmluZyBmaWxlOiAlcycsIHBhdGgpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmcy5yZWFkRmlsZShwYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBvcGVuaW5nIGZpbGUgXCIlc1wiJywgcGF0aCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBvcGVuaW5nIGZpbGUgXCIlc1wiJywgcGF0aCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSxcbiAgICBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi4vdXRpbC91cmwnKSxcbiAgICBkZWJ1ZyA9IHJlcXVpcmUoJy4uL3V0aWwvZGVidWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHJlc29sdmVyIHdpbGwgcnVuLCBpbiByZWxhdGlvbiB0byBvdGhlciByZXNvbHZlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogMjAwLFxuXG4gIC8qKlxuICAgKiBIVFRQIGhlYWRlcnMgdG8gc2VuZCB3aGVuIGRvd25sb2FkaW5nIGZpbGVzLlxuICAgKlxuICAgKiBAZXhhbXBsZTpcbiAgICoge1xuICAgKiAgIFwiVXNlci1BZ2VudFwiOiBcIkpTT04gU2NoZW1hICRSZWYgUGFyc2VyXCIsXG4gICAqICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgKiB9XG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqL1xuICBoZWFkZXJzOiBudWxsLFxuXG4gIC8qKlxuICAgKiBIVFRQIHJlcXVlc3QgdGltZW91dCAoaW4gbWlsbGlzZWNvbmRzKS5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHRpbWVvdXQ6IDUwMDAsIC8vIDUgc2Vjb25kc1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUCByZWRpcmVjdHMgdG8gZm9sbG93LlxuICAgKiBUbyBkaXNhYmxlIGF1dG9tYXRpYyBmb2xsb3dpbmcgb2YgcmVkaXJlY3RzLCBzZXQgdGhpcyB0byB6ZXJvLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgcmVkaXJlY3RzOiA1LFxuXG4gIC8qKlxuICAgKiBUaGUgYHdpdGhDcmVkZW50aWFsc2Agb3B0aW9uIG9mIFhNTEh0dHBSZXF1ZXN0LlxuICAgKiBTZXQgdGhpcyB0byBgdHJ1ZWAgaWYgeW91J3JlIGRvd25sb2FkaW5nIGZpbGVzIGZyb20gYSBDT1JTLWVuYWJsZWQgc2VydmVyIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyByZXNvbHZlciBjYW4gcmVhZCBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gdHJ1ZSB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHJlc29sdmVzIHRoZSBmaWxlLlxuICAgKiBSZXNvbHZlcnMgdGhhdCByZXR1cm4gZmFsc2Ugd2lsbCBub3QgYmUgZ2l2ZW4gYSBjaGFuY2UgdG8gcmVzb2x2ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNhblJlYWQ6IGZ1bmN0aW9uIGlzSHR0cCAoZmlsZSkge1xuICAgIHJldHVybiB1cmwuaXNIdHRwKGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIGdpdmVuIFVSTCBhbmQgcmV0dXJucyBpdHMgcmF3IGNvbnRlbnRzIGFzIGEgQnVmZmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59XG4gICAqL1xuICByZWFkOiBmdW5jdGlvbiByZWFkSHR0cCAoZmlsZSkge1xuICAgIHZhciB1ID0gdXJsLnBhcnNlKGZpbGUudXJsKTtcblxuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIgJiYgIXUucHJvdG9jb2wpIHtcbiAgICAgIC8vIFVzZSB0aGUgcHJvdG9jb2wgb2YgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgdS5wcm90b2NvbCA9IHVybC5wYXJzZShsb2NhdGlvbi5ocmVmKS5wcm90b2NvbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZG93bmxvYWQodSwgdGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogRG93bmxvYWRzIHRoZSBnaXZlbiBmaWxlLlxuICpcbiAqIEBwYXJhbSB7VXJsfHN0cmluZ30gdSAgICAgICAgLSBUaGUgdXJsIHRvIGRvd25sb2FkIChjYW4gYmUgYSBwYXJzZWQge0BsaW5rIFVybH0gb2JqZWN0KVxuICogQHBhcmFtIHtvYmplY3R9IGh0dHBPcHRpb25zICAtIFRoZSBgb3B0aW9ucy5yZXNvbHZlLmh0dHBgIG9iamVjdFxuICogQHBhcmFtIHtudW1iZXJ9IFtyZWRpcmVjdHNdICAtIFRoZSByZWRpcmVjdCBVUkxzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZm9sbG93ZWRcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcmF3IGRvd25sb2FkZWQgZGF0YSwgb3IgcmVqZWN0cyBpZiB0aGVyZSBpcyBhbiBIVFRQIGVycm9yLlxuICovXG5mdW5jdGlvbiBkb3dubG9hZCAodSwgaHR0cE9wdGlvbnMsIHJlZGlyZWN0cykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHUgPSB1cmwucGFyc2UodSk7XG4gICAgcmVkaXJlY3RzID0gcmVkaXJlY3RzIHx8IFtdO1xuICAgIHJlZGlyZWN0cy5wdXNoKHUuaHJlZik7XG5cbiAgICBnZXQodSwgaHR0cE9wdGlvbnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgICAgICB0aHJvdyBvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdIVFRQIEVSUk9SICVkJywgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlcy5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgICAgIGlmIChyZWRpcmVjdHMubGVuZ3RoID4gaHR0cE9wdGlvbnMucmVkaXJlY3RzKSB7XG4gICAgICAgICAgICByZWplY3Qob25vKHsgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSB9LCAnRXJyb3IgZG93bmxvYWRpbmcgJXMuIFxcblRvbyBtYW55IHJlZGlyZWN0czogXFxuICAlcycsXG4gICAgICAgICAgICAgIHJlZGlyZWN0c1swXSwgcmVkaXJlY3RzLmpvaW4oJyBcXG4gICcpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFyZXMuaGVhZGVycy5sb2NhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgb25vKHsgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSB9LCAnSFRUUCAlZCByZWRpcmVjdCB3aXRoIG5vIGxvY2F0aW9uIGhlYWRlcicsIHJlcy5zdGF0dXNDb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWJ1ZygnSFRUUCAlZCByZWRpcmVjdCAlcyAtPiAlcycsIHJlcy5zdGF0dXNDb2RlLCB1LmhyZWYsIHJlcy5oZWFkZXJzLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIHZhciByZWRpcmVjdFRvID0gdXJsLnJlc29sdmUodSwgcmVzLmhlYWRlcnMubG9jYXRpb24pO1xuICAgICAgICAgICAgZG93bmxvYWQocmVkaXJlY3RUbywgaHR0cE9wdGlvbnMsIHJlZGlyZWN0cykudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcy5ib2R5IHx8IG5ldyBCdWZmZXIoMCkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KG9ubyhlcnIsICdFcnJvciBkb3dubG9hZGluZycsIHUuaHJlZikpO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFNlbmRzIGFuIEhUVFAgR0VUIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtVcmx9IHUgLSBBIHBhcnNlZCB7QGxpbmsgVXJsfSBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBodHRwT3B0aW9ucyAtIFRoZSBgb3B0aW9ucy5yZXNvbHZlLmh0dHBgIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3BvbnNlPn1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIEhUVFAgUmVzcG9uc2Ugb2JqZWN0LlxuICovXG5mdW5jdGlvbiBnZXQgKHUsIGh0dHBPcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ0dFVCcsIHUuaHJlZik7XG5cbiAgICB2YXIgcHJvdG9jb2wgPSB1LnByb3RvY29sID09PSAnaHR0cHM6JyA/IGh0dHBzIDogaHR0cDtcbiAgICB2YXIgcmVxID0gcHJvdG9jb2wuZ2V0KHtcbiAgICAgIGhvc3RuYW1lOiB1Lmhvc3RuYW1lLFxuICAgICAgcG9ydDogdS5wb3J0LFxuICAgICAgcGF0aDogdS5wYXRoLFxuICAgICAgYXV0aDogdS5hdXRoLFxuICAgICAgcHJvdG9jb2w6IHUucHJvdG9jb2wsXG4gICAgICBoZWFkZXJzOiBodHRwT3B0aW9ucy5oZWFkZXJzIHx8IHt9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBodHRwT3B0aW9ucy53aXRoQ3JlZGVudGlhbHNcbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgcmVxLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlcS5zZXRUaW1lb3V0KGh0dHBPcHRpb25zLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIHJlcS5vbigndGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcS5hYm9ydCgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7XG5cbiAgICByZXEub25jZSgncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICByZXMuYm9keSA9IG5ldyBCdWZmZXIoMCk7XG5cbiAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHJlcy5ib2R5ID0gQnVmZmVyLmNvbmNhdChbcmVzLmJvZHksIG5ldyBCdWZmZXIoZGF0YSldKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXMub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgICAgcmVzLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKTtcblxuLyoqXG4gKiBXcml0ZXMgbWVzc2FnZXMgdG8gc3Rkb3V0LlxuICogTG9nIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBERUJVRyB2YXJpYWJsZS5cbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBkZWJ1ZygnanNvbi1zY2hlbWEtcmVmLXBhcnNlcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVidWcgPSByZXF1aXJlKCcuL2RlYnVnJyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZ2l2ZW4gcGx1Z2lucyBhcyBhbiBhcnJheSwgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IG1hcC5cbiAqIEFsbCBvdGhlciBtZXRob2RzIGluIHRoaXMgbW9kdWxlIGV4cGVjdCBhbiBhcnJheSBvZiBwbHVnaW5zIHJhdGhlciB0aGFuIGFuIG9iamVjdCBtYXAuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0fSBwbHVnaW5zIC0gQSBtYXAgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnRzLmFsbCA9IGZ1bmN0aW9uIChwbHVnaW5zKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhwbHVnaW5zKVxuICAgIC5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBwbHVnaW5zW2tleV0gPT09ICdvYmplY3QnO1xuICAgIH0pXG4gICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBwbHVnaW5zW2tleV0ubmFtZSA9IGtleTtcbiAgICAgIHJldHVybiBwbHVnaW5zW2tleV07XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIEZpbHRlcnMgdGhlIGdpdmVuIHBsdWdpbnMsIHJldHVybmluZyBvbmx5IHRoZSBvbmVzIHJldHVybiBgdHJ1ZWAgZm9yIHRoZSBnaXZlbiBtZXRob2QuXG4gKlxuICogQHBhcmFtICB7b2JqZWN0W119IHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHBhcmFtICB7c3RyaW5nfSAgIG1ldGhvZCAgLSBUaGUgbmFtZSBvZiB0aGUgZmlsdGVyIG1ldGhvZCB0byBpbnZva2UgZm9yIGVhY2ggcGx1Z2luXG4gKiBAcGFyYW0gIHtvYmplY3R9ICAgZmlsZSAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZWFjaCBtZXRob2RcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnRzLmZpbHRlciA9IGZ1bmN0aW9uIChwbHVnaW5zLCBtZXRob2QsIGZpbGUpIHtcbiAgcmV0dXJuIHBsdWdpbnNcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIHJldHVybiAhIWdldFJlc3VsdChwbHVnaW4sIG1ldGhvZCwgZmlsZSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFNvcnRzIHRoZSBnaXZlbiBwbHVnaW5zLCBpbiBwbGFjZSwgYnkgdGhlaXIgYG9yZGVyYCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBwbHVnaW5zIC0gQW4gYXJyYXkgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEByZXR1cm5zIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0cy5zb3J0ID0gZnVuY3Rpb24gKHBsdWdpbnMpIHtcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICBwbHVnaW4ub3JkZXIgPSBwbHVnaW4ub3JkZXIgfHwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gIH0pO1xuXG4gIHJldHVybiBwbHVnaW5zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyOyB9KTtcbn07XG5cbi8qKlxuICogUnVucyB0aGUgc3BlY2lmaWVkIG1ldGhvZCBvZiB0aGUgZ2l2ZW4gcGx1Z2lucywgaW4gb3JkZXIsIHVudGlsIG9uZSBvZiB0aGVtIHJldHVybnMgYSBzdWNjZXNzZnVsIHJlc3VsdC5cbiAqIEVhY2ggbWV0aG9kIGNhbiByZXR1cm4gYSBzeW5jaHJvbm91cyB2YWx1ZSwgYSBQcm9taXNlLCBvciBjYWxsIGFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLlxuICogSWYgdGhlIHByb21pc2UgcmVzb2x2ZXMgc3VjY2Vzc2Z1bGx5LCBvciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gdGhlIHJlc3VsdFxuICogaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgYW5kIG5vIGZ1cnRoZXIgcGx1Z2lucyBhcmUgY2FsbGVkLlxuICogSWYgdGhlIHByb21pc2UgcmVqZWN0cywgb3IgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGFuIGVycm9yLCB0aGVuIHRoZSBuZXh0IHBsdWdpbiBpcyBjYWxsZWQuXG4gKiBJZiBBTEwgcGx1Z2lucyBmYWlsLCB0aGVuIHRoZSBsYXN0IGVycm9yIGlzIHRocm93bi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdFtdfSAgcGx1Z2lucyAtIEFuIGFycmF5IG9mIHBsdWdpbiBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgbWV0aG9kICAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIGZvciBlYWNoIHBsdWdpblxuICogQHBhcmFtIHtvYmplY3R9ICAgIGZpbGUgICAgLSBBIGZpbGUgaW5mbyBvYmplY3QsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGVhY2ggbWV0aG9kXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqL1xuZXhwb3J0cy5ydW4gPSBmdW5jdGlvbiAocGx1Z2lucywgbWV0aG9kLCBmaWxlKSB7XG4gIHZhciBwbHVnaW4sIGxhc3RFcnJvciwgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcnVuTmV4dFBsdWdpbigpO1xuXG4gICAgZnVuY3Rpb24gcnVuTmV4dFBsdWdpbiAoKSB7XG4gICAgICBwbHVnaW4gPSBwbHVnaW5zW2luZGV4KytdO1xuICAgICAgaWYgKCFwbHVnaW4pIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG1vcmUgZnVuY3Rpb25zLCBzbyByZS10aHJvdyB0aGUgbGFzdCBlcnJvclxuICAgICAgICByZXR1cm4gcmVqZWN0KGxhc3RFcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGRlYnVnKCcgICVzJywgcGx1Z2luLm5hbWUpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0UmVzdWx0KHBsdWdpbiwgbWV0aG9kLCBmaWxlLCBjYWxsYmFjayk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgLy8gQSBwcm9taXNlIHdhcyByZXR1cm5lZFxuICAgICAgICAgIHJlc3VsdC50aGVuKG9uU3VjY2Vzcywgb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBBIHN5bmNocm9ub3VzIHJlc3VsdCB3YXMgcmV0dXJuZWRcbiAgICAgICAgICBvblN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlIHsgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIH1cbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsbGJhY2sgKGVyciwgcmVzdWx0KSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblN1Y2Nlc3MgKHJlc3VsdCkge1xuICAgICAgZGVidWcoJyAgICBzdWNjZXNzJyk7XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgcGx1Z2luOiBwbHVnaW4sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkVycm9yIChlcnIpIHtcbiAgICAgIGRlYnVnKCcgICAgJXMnLCBlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgbGFzdEVycm9yID0gZXJyO1xuICAgICAgcnVuTmV4dFBsdWdpbigpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGlzIHJldHVybmVkLlxuICogSWYgdGhlIHZhbHVlIGlzIGEgUmVnRXhwLCB0aGVuIGl0IHdpbGwgYmUgdGVzdGVkIGFnYWluc3QgdGhlIGZpbGUgVVJMLlxuICogSWYgdGhlIHZhbHVlIGlzIGFuIGFyYXksIHRoZW4gaXQgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgIG9iaiAgICAgICAgLSBUaGUgb2JqZWN0IHdob3NlIHByb3BlcnR5L21ldGhvZCBpcyBjYWxsZWRcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICAgcHJvcCAgICAgICAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS9tZXRob2QgdG8gaW52b2tlXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgIGZpbGUgICAgICAgLSBBIGZpbGUgaW5mbyBvYmplY3QsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBtZXRob2RcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBtZXRob2RcbiAqIEByZXR1cm5zIHsqfVxuICovXG5mdW5jdGlvbiBnZXRSZXN1bHQgKG9iaiwgcHJvcCwgZmlsZSwgY2FsbGJhY2spIHtcbiAgdmFyIHZhbHVlID0gb2JqW3Byb3BdO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWUuYXBwbHkob2JqLCBbZmlsZSwgY2FsbGJhY2tdKTtcbiAgfVxuXG4gIGlmICghY2FsbGJhY2spIHtcbiAgICAvLyBUaGUgc3luY2hyb25vdXMgcGx1Z2luIGZ1bmN0aW9ucyAoY2FuUGFyc2UgYW5kIGNhblJlYWQpXG4gICAgLy8gYWxsb3cgYSBcInNob3J0aGFuZFwiIHN5bnRheCwgd2hlcmUgdGhlIHVzZXIgY2FuIG1hdGNoXG4gICAgLy8gZmlsZXMgYnkgUmVnRXhwIG9yIGJ5IGZpbGUgZXh0ZW5zaW9uLlxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRlc3QoZmlsZS51cmwpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IGZpbGUuZXh0ZW5zaW9uO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZmlsZS5leHRlbnNpb24pICE9PSAtMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc1dpbmRvd3MgPSAvXndpbi8udGVzdChwcm9jZXNzLnBsYXRmb3JtKSxcbiAgICBmb3J3YXJkU2xhc2hQYXR0ZXJuID0gL1xcLy9nLFxuICAgIHByb3RvY29sUGF0dGVybiA9IC9eKFxcd3syLH0pOlxcL1xcLy9pLFxuICAgIHVybCA9IG1vZHVsZS5leHBvcnRzO1xuXG4vLyBSZWdFeHAgcGF0dGVybnMgdG8gVVJMLWVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gbG9jYWwgZmlsZXN5c3RlbSBwYXRoc1xudmFyIHVybEVuY29kZVBhdHRlcm5zID0gW1xuICAvXFw/L2csICclM0YnLFxuICAvXFwjL2csICclMjMnLFxuXTtcblxuLy8gUmVnRXhwIHBhdHRlcm5zIHRvIFVSTC1kZWNvZGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZvciBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXG52YXIgdXJsRGVjb2RlUGF0dGVybnMgPSBbXG4gIC9cXCUyMy9nLCAnIycsXG4gIC9cXCUyNC9nLCAnJCcsXG4gIC9cXCUyNi9nLCAnJicsXG4gIC9cXCUyQy9nLCAnLCcsXG4gIC9cXCU0MC9nLCAnQCdcbl07XG5cbmV4cG9ydHMucGFyc2UgPSByZXF1aXJlKCd1cmwnKS5wYXJzZTtcbmV4cG9ydHMucmVzb2x2ZSA9IHJlcXVpcmUoJ3VybCcpLnJlc29sdmU7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAoaW4gTm9kZSkgb3IgdGhlIGN1cnJlbnQgcGFnZSBVUkwgKGluIGJyb3dzZXJzKS5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLmN3ZCA9IGZ1bmN0aW9uIGN3ZCAoKSB7XG4gIHJldHVybiBwcm9jZXNzLmJyb3dzZXIgPyBsb2NhdGlvbi5ocmVmIDogcHJvY2Vzcy5jd2QoKSArICcvJztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdG9jb2wgb2YgdGhlIGdpdmVuIFVSTCwgb3IgYHVuZGVmaW5lZGAgaWYgaXQgaGFzIG5vIHByb3RvY29sLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHs/c3RyaW5nfVxuICovXG5leHBvcnRzLmdldFByb3RvY29sID0gZnVuY3Rpb24gZ2V0UHJvdG9jb2wgKHBhdGgpIHtcbiAgdmFyIG1hdGNoID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocGF0aCk7XG4gIGlmIChtYXRjaCkge1xuICAgIHJldHVybiBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIFVSTCxcbiAqIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBpdCBoYXMgbm8gZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0RXh0ZW5zaW9uID0gZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uIChwYXRoKSB7XG4gIHZhciBsYXN0RG90ID0gcGF0aC5sYXN0SW5kZXhPZignLicpO1xuICBpZiAobGFzdERvdCA+PSAwKSB7XG4gICAgcmV0dXJuIHBhdGguc3Vic3RyKGxhc3REb3QpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuICcnO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoYXNoIChVUkwgZnJhZ21lbnQpLCBvZiB0aGUgZ2l2ZW4gcGF0aC5cbiAqIElmIHRoZXJlIGlzIG5vIGhhc2gsIHRoZW4gdGhlIHJvb3QgaGFzaCAoXCIjXCIpIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0SGFzaCA9IGZ1bmN0aW9uIGdldEhhc2ggKHBhdGgpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpO1xuICBpZiAoaGFzaEluZGV4ID49IDApIHtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHIoaGFzaEluZGV4KTtcbiAgfVxuICByZXR1cm4gJyMnO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBoYXNoIChVUkwgZnJhZ21lbnQpLCBpZiBhbnksIGZyb20gdGhlIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5zdHJpcEhhc2ggPSBmdW5jdGlvbiBzdHJpcEhhc2ggKHBhdGgpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZignIycpO1xuICBpZiAoaGFzaEluZGV4ID49IDApIHtcbiAgICBwYXRoID0gcGF0aC5zdWJzdHIoMCwgaGFzaEluZGV4KTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBwYXRoIGlzIGFuIEhUVFAoUykgVVJMLlxuICpcbiAqIEBwYXJhbSAgIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnRzLmlzSHR0cCA9IGZ1bmN0aW9uIGlzSHR0cCAocGF0aCkge1xuICB2YXIgcHJvdG9jb2wgPSB1cmwuZ2V0UHJvdG9jb2wocGF0aCk7XG4gIGlmIChwcm90b2NvbCA9PT0gJ2h0dHAnIHx8IHByb3RvY29sID09PSAnaHR0cHMnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZWxzZSBpZiAocHJvdG9jb2wgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFRoZXJlIGlzIG5vIHByb3RvY29sLiAgSWYgd2UncmUgcnVubmluZyBpbiBhIGJyb3dzZXIsIHRoZW4gYXNzdW1lIGl0J3MgSFRUUC5cbiAgICByZXR1cm4gcHJvY2Vzcy5icm93c2VyO1xuICB9XG4gIGVsc2Uge1xuICAgIC8vIEl0J3Mgc29tZSBvdGhlciBwcm90b2NvbCwgc3VjaCBhcyBcImZ0cDovL1wiLCBcIm1vbmdvZGI6Ly9cIiwgZXRjLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgYSBmaWxlc3lzdGVtIHBhdGguXG4gKiBUaGlzIGluY2x1ZGVzIFwiZmlsZTovL1wiIFVSTHMuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNGaWxlU3lzdGVtUGF0aCA9IGZ1bmN0aW9uIGlzRmlsZVN5c3RlbVBhdGggKHBhdGgpIHtcbiAgaWYgKHByb2Nlc3MuYnJvd3Nlcikge1xuICAgIC8vIFdlJ3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyLCBzbyBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXJlIFVSTHMuXG4gICAgLy8gVGhpcyB3YXksIGV2ZW4gcmVsYXRpdmUgcGF0aHMgd2lsbCBiZSB0cmVhdGVkIGFzIFVSTHMgcmF0aGVyIHRoYW4gYXMgZmlsZXN5c3RlbSBwYXRoc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHVybC5nZXRQcm90b2NvbChwYXRoKTtcbiAgcmV0dXJuIHByb3RvY29sID09PSB1bmRlZmluZWQgfHwgcHJvdG9jb2wgPT09ICdmaWxlJztcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlc3lzdGVtIHBhdGggdG8gYSBwcm9wZXJseS1lbmNvZGVkIFVSTC5cbiAqXG4gKiBUaGlzIGlzIGludGVuZGVkIHRvIGhhbmRsZSBzaXR1YXRpb25zIHdoZXJlIEpTT04gU2NoZW1hICRSZWYgUGFyc2VyIGlzIGNhbGxlZFxuICogd2l0aCBhIGZpbGVzeXN0ZW0gcGF0aCB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgd2hpY2ggYXJlIG5vdCBhbGxvd2VkIGluIFVSTHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIFRoZSBmb2xsb3dpbmcgZmlsZXN5c3RlbSBwYXRocyB3b3VsZCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGZvbGxvd2luZyBVUkxzOlxuICpcbiAqICAgIDxcIiFAIyQlXiYqKz0/Jz4uanNvbiAgICAgICAgICAgICAgPT0+ICAgJTNDJTIyIUAlMjMkJTI1JTVFJiorPSUzRlxcJyUzRS5qc29uXG4gKiAgICBDOlxcXFxNeSBEb2N1bWVudHNcXFxcRmlsZSAoMSkuanNvbiAgID09PiAgIEM6L015JTIwRG9jdW1lbnRzL0ZpbGUlMjAoMSkuanNvblxuICogICAgZmlsZTovL1Byb2plY3QgIzQyL2ZpbGUuanNvbiAgICAgID09PiAgIGZpbGU6Ly9Qcm9qZWN0JTIwJTIzNDIvZmlsZS5qc29uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZnJvbUZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gZnJvbUZpbGVTeXN0ZW1QYXRoIChwYXRoKSB7XG4gIC8vIFN0ZXAgMTogT24gV2luZG93cywgcmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcyxcbiAgLy8gcmF0aGVyIHRoYW4gZW5jb2RpbmcgdGhlbSBhcyBcIiU1Q1wiXG4gIGlmIChpc1dpbmRvd3MpIHtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIH1cblxuICAvLyBTdGVwIDI6IGBlbmNvZGVVUklgIHdpbGwgdGFrZSBjYXJlIG9mIE1PU1QgY2hhcmFjdGVyc1xuICBwYXRoID0gZW5jb2RlVVJJKHBhdGgpO1xuXG4gIC8vIFN0ZXAgMzogTWFudWFsbHkgZW5jb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGVuY29kZWQgYnkgYGVuY29kZVVSSWAuXG4gIC8vIFRoaXMgaW5jbHVkZXMgY2hhcmFjdGVycyBzdWNoIGFzIFwiI1wiIGFuZCBcIj9cIiwgd2hpY2ggaGF2ZSBzcGVjaWFsIG1lYW5pbmcgaW4gVVJMcyxcbiAgLy8gYnV0IGFyZSBqdXN0IG5vcm1hbCBjaGFyYWN0ZXJzIGluIGEgZmlsZXN5c3RlbSBwYXRoLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybEVuY29kZVBhdHRlcm5zLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSh1cmxFbmNvZGVQYXR0ZXJuc1tpXSwgdXJsRW5jb2RlUGF0dGVybnNbaSArIDFdKTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVSTCB0byBhIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gIHBhdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2tlZXBGaWxlUHJvdG9jb2xdIC0gSWYgdHJ1ZSwgdGhlbiBcImZpbGU6Ly9cIiB3aWxsIE5PVCBiZSBzdHJpcHBlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy50b0ZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gdG9GaWxlU3lzdGVtUGF0aCAocGF0aCwga2VlcEZpbGVQcm90b2NvbCkge1xuICAvLyBTdGVwIDE6IGBkZWNvZGVVUklgIHdpbGwgZGVjb2RlIGNoYXJhY3RlcnMgc3VjaCBhcyBDeXJpbGxpYyBjaGFyYWN0ZXJzLCBzcGFjZXMsIGV0Yy5cbiAgcGF0aCA9IGRlY29kZVVSSShwYXRoKTtcblxuICAvLyBTdGVwIDI6IE1hbnVhbGx5IGRlY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBkZWNvZGVkIGJ5IGBkZWNvZGVVUklgLlxuICAvLyBUaGlzIGluY2x1ZGVzIGNoYXJhY3RlcnMgc3VjaCBhcyBcIiNcIiBhbmQgXCI/XCIsIHdoaWNoIGhhdmUgc3BlY2lhbCBtZWFuaW5nIGluIFVSTHMsXG4gIC8vIGJ1dCBhcmUganVzdCBub3JtYWwgY2hhcmFjdGVycyBpbiBhIGZpbGVzeXN0ZW0gcGF0aC5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxEZWNvZGVQYXR0ZXJucy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UodXJsRGVjb2RlUGF0dGVybnNbaV0sIHVybERlY29kZVBhdHRlcm5zW2kgKyAxXSk7XG4gIH1cblxuICAvLyBTdGVwIDM6IElmIGl0J3MgYSBcImZpbGU6Ly9cIiBVUkwsIHRoZW4gZm9ybWF0IGl0IGNvbnNpc3RlbnRseVxuICAvLyBvciBjb252ZXJ0IGl0IHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoXG4gIHZhciBpc0ZpbGVVcmwgPSBwYXRoLnN1YnN0cigwLCA3KS50b0xvd2VyQ2FzZSgpID09PSAnZmlsZTovLyc7XG4gIGlmIChpc0ZpbGVVcmwpIHtcbiAgICAvLyBTdHJpcC1vZmYgdGhlIHByb3RvY29sLCBhbmQgdGhlIGluaXRpYWwgXCIvXCIsIGlmIHRoZXJlIGlzIG9uZVxuICAgIHBhdGggPSBwYXRoWzddID09PSAnLycgPyBwYXRoLnN1YnN0cig4KSA6IHBhdGguc3Vic3RyKDcpO1xuXG4gICAgLy8gaW5zZXJ0IGEgY29sb24gKFwiOlwiKSBhZnRlciB0aGUgZHJpdmUgbGV0dGVyIG9uIFdpbmRvd3NcbiAgICBpZiAoaXNXaW5kb3dzICYmIHBhdGhbMV0gPT09ICcvJykge1xuICAgICAgcGF0aCA9IHBhdGhbMF0gKyAnOicgKyBwYXRoLnN1YnN0cigxKTtcbiAgICB9XG5cbiAgICBpZiAoa2VlcEZpbGVQcm90b2NvbCkge1xuICAgICAgLy8gUmV0dXJuIHRoZSBjb25zaXN0ZW50bHktZm9ybWF0dGVkIFwiZmlsZTovL1wiIFVSTFxuICAgICAgcGF0aCA9ICdmaWxlOi8vLycgKyBwYXRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIENvbnZlcnQgdGhlIFwiZmlsZTovL1wiIFVSTCB0byBhIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aC5cbiAgICAgIC8vIE9uIFdpbmRvd3MsIGl0IHdpbGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgbGlrZSBcIkM6L1wiLlxuICAgICAgLy8gT24gUG9zaXgsIGl0IHdpbGwgc3RhcnQgd2l0aCBcIi9cIlxuICAgICAgaXNGaWxlVXJsID0gZmFsc2U7XG4gICAgICBwYXRoID0gaXNXaW5kb3dzID8gcGF0aCA6ICcvJyArIHBhdGg7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RlcCA0OiBOb3JtYWxpemUgV2luZG93cyBwYXRocyAodW5sZXNzIGl0J3MgYSBcImZpbGU6Ly9cIiBVUkwpXG4gIGlmIChpc1dpbmRvd3MgJiYgIWlzRmlsZVVybCkge1xuICAgIC8vIFJlcGxhY2UgZm9yd2FyZCBzbGFzaGVzIHdpdGggYmFja3NsYXNoZXNcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGZvcndhcmRTbGFzaFBhdHRlcm4sICdcXFxcJyk7XG5cbiAgICAvLyBDYXBpdGFsaXplIHRoZSBkcml2ZSBsZXR0ZXJcbiAgICBpZiAocGF0aC5zdWJzdHIoMSwgMikgPT09ICc6XFxcXCcpIHtcbiAgICAgIHBhdGggPSBwYXRoWzBdLnRvVXBwZXJDYXNlKCkgKyBwYXRoLnN1YnN0cigxKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn07XG4iLCIvKiBlc2xpbnQgbGluZXMtYXJvdW5kLWNvbW1lbnQ6IFsyLCB7YmVmb3JlQmxvY2tDb21tZW50OiBmYWxzZX1dICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciB5YW1sID0gcmVxdWlyZSgnanMteWFtbCcpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpO1xuXG4vKipcbiAqIFNpbXBsZSBZQU1MIHBhcnNpbmcgZnVuY3Rpb25zLCBzaW1pbGFyIHRvIHtAbGluayBKU09OLnBhcnNlfSBhbmQge0BsaW5rIEpTT04uc3RyaW5naWZ5fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFBhcnNlcyBhIFlBTUwgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgWUFNTCBzdHJpbmcgdG8gYmUgcGFyc2VkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtyZXZpdmVyXSAtIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiBQcm92aWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB7QGxpbmsgSlNPTi5wYXJzZX1cbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24geWFtbFBhcnNlICh0ZXh0LCByZXZpdmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB5YW1sLnNhZmVMb2FkKHRleHQpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9pc3N1ZXMvMTUzXG4gICAgICAgIHRocm93IG9ubyhlLCBlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ29udmVydHMgYSBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgWUFNTCBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSAgIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIFlBTUxcbiAgICogQHBhcmFtICAge2Z1bmN0aW9ufGFycmF5fSByZXBsYWNlciAtIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiBQcm92aWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB7QGxpbmsgSlNPTi5zdHJpbmdpZnl9XG4gICAqIEBwYXJhbSAgIHtzdHJpbmd8bnVtYmVyfSBzcGFjZSAtIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIHVzZSBmb3IgaW5kZW50YXRpb24sIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzcGFjZXMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHlhbWxTdHJpbmdpZnkgKHZhbHVlLCByZXBsYWNlciwgc3BhY2UpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGluZGVudCA9ICh0eXBlb2Ygc3BhY2UgPT09ICdzdHJpbmcnID8gc3BhY2UubGVuZ3RoIDogc3BhY2UpIHx8IDI7XG4gICAgICByZXR1cm4geWFtbC5zYWZlRHVtcCh2YWx1ZSwgeyBpbmRlbnQ6IGluZGVudCB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvaXNzdWVzLzE1M1xuICAgICAgICB0aHJvdyBvbm8oZSwgZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMyBUaGFkZGVlIFR5bCA8dGhhZGRlZS50eWxAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEpvb3N0LVdpbSBCb2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgS3JpcyBLb3dhbCA8a3Jpcy5rb3dhbEBjaXhhci5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDExIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbi8qanNsaW50IGJpdHdpc2U6dHJ1ZSBwbHVzcGx1czp0cnVlICovXG4vKmdsb2JhbCBlc3ByaW1hOnRydWUsIGRlZmluZTp0cnVlLCBleHBvcnRzOnRydWUsIHdpbmRvdzogdHJ1ZSxcbnRocm93RXJyb3JUb2xlcmFudDogdHJ1ZSxcbnRocm93RXJyb3I6IHRydWUsIGdlbmVyYXRlU3RhdGVtZW50OiB0cnVlLCBwZWVrOiB0cnVlLFxucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbjogdHJ1ZSwgcGFyc2VCbG9jazogdHJ1ZSwgcGFyc2VFeHByZXNzaW9uOiB0cnVlLFxucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uOiB0cnVlLCBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50czogdHJ1ZSwgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXI6IHRydWUsXG5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb246IHRydWUsXG5wYXJzZVVuYXJ5RXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQ6IHRydWUgKi9cblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8gVW5pdmVyc2FsIE1vZHVsZSBEZWZpbml0aW9uIChVTUQpIHRvIHN1cHBvcnQgQU1ELCBDb21tb25KUy9Ob2RlLmpzLFxuICAgIC8vIFJoaW5vLCBhbmQgcGxhaW4gYnJvd3NlciBsb2FkaW5nLlxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZmFjdG9yeShleHBvcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5KChyb290LmVzcHJpbWEgPSB7fSkpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgVG9rZW4sXG4gICAgICAgIFRva2VuTmFtZSxcbiAgICAgICAgRm5FeHByVG9rZW5zLFxuICAgICAgICBTeW50YXgsXG4gICAgICAgIFByb3BlcnR5S2luZCxcbiAgICAgICAgTWVzc2FnZXMsXG4gICAgICAgIFJlZ2V4LFxuICAgICAgICBTeW50YXhUcmVlRGVsZWdhdGUsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgc3RyaWN0LFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbGluZU51bWJlcixcbiAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICBsZW5ndGgsXG4gICAgICAgIGRlbGVnYXRlLFxuICAgICAgICBsb29rYWhlYWQsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRyYTtcblxuICAgIFRva2VuID0ge1xuICAgICAgICBCb29sZWFuTGl0ZXJhbDogMSxcbiAgICAgICAgRU9GOiAyLFxuICAgICAgICBJZGVudGlmaWVyOiAzLFxuICAgICAgICBLZXl3b3JkOiA0LFxuICAgICAgICBOdWxsTGl0ZXJhbDogNSxcbiAgICAgICAgTnVtZXJpY0xpdGVyYWw6IDYsXG4gICAgICAgIFB1bmN0dWF0b3I6IDcsXG4gICAgICAgIFN0cmluZ0xpdGVyYWw6IDgsXG4gICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uOiA5XG4gICAgfTtcblxuICAgIFRva2VuTmFtZSA9IHt9O1xuICAgIFRva2VuTmFtZVtUb2tlbi5Cb29sZWFuTGl0ZXJhbF0gPSAnQm9vbGVhbic7XG4gICAgVG9rZW5OYW1lW1Rva2VuLkVPRl0gPSAnPGVuZD4nO1xuICAgIFRva2VuTmFtZVtUb2tlbi5JZGVudGlmaWVyXSA9ICdJZGVudGlmaWVyJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uS2V5d29yZF0gPSAnS2V5d29yZCc7XG4gICAgVG9rZW5OYW1lW1Rva2VuLk51bGxMaXRlcmFsXSA9ICdOdWxsJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uTnVtZXJpY0xpdGVyYWxdID0gJ051bWVyaWMnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5QdW5jdHVhdG9yXSA9ICdQdW5jdHVhdG9yJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uU3RyaW5nTGl0ZXJhbF0gPSAnU3RyaW5nJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uUmVndWxhckV4cHJlc3Npb25dID0gJ1JlZ3VsYXJFeHByZXNzaW9uJztcblxuICAgIC8vIEEgZnVuY3Rpb24gZm9sbG93aW5nIG9uZSBvZiB0aG9zZSB0b2tlbnMgaXMgYW4gZXhwcmVzc2lvbi5cbiAgICBGbkV4cHJUb2tlbnMgPSBbJygnLCAneycsICdbJywgJ2luJywgJ3R5cGVvZicsICdpbnN0YW5jZW9mJywgJ25ldycsXG4gICAgICAgICAgICAgICAgICAgICdyZXR1cm4nLCAnY2FzZScsICdkZWxldGUnLCAndGhyb3cnLCAndm9pZCcsXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3JzXG4gICAgICAgICAgICAgICAgICAgICc9JywgJys9JywgJy09JywgJyo9JywgJy89JywgJyU9JywgJzw8PScsICc+Pj0nLCAnPj4+PScsXG4gICAgICAgICAgICAgICAgICAgICcmPScsICd8PScsICdePScsICcsJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5L3VuYXJ5IG9wZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgICAnKycsICctJywgJyonLCAnLycsICclJywgJysrJywgJy0tJywgJzw8JywgJz4+JywgJz4+PicsICcmJyxcbiAgICAgICAgICAgICAgICAgICAgJ3wnLCAnXicsICchJywgJ34nLCAnJiYnLCAnfHwnLCAnPycsICc6JywgJz09PScsICc9PScsICc+PScsXG4gICAgICAgICAgICAgICAgICAgICc8PScsICc8JywgJz4nLCAnIT0nLCAnIT09J107XG5cbiAgICBTeW50YXggPSB7XG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4cHJlc3Npb24nLFxuICAgICAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24nLFxuICAgICAgICBCbG9ja1N0YXRlbWVudDogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogJ0JyZWFrU3RhdGVtZW50JyxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246ICdDYWxsRXhwcmVzc2lvbicsXG4gICAgICAgIENhdGNoQ2xhdXNlOiAnQ2F0Y2hDbGF1c2UnLFxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICdDb25kaXRpb25hbEV4cHJlc3Npb24nLFxuICAgICAgICBDb250aW51ZVN0YXRlbWVudDogJ0NvbnRpbnVlU3RhdGVtZW50JyxcbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogJ0RvV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudDogJ0RlYnVnZ2VyU3RhdGVtZW50JyxcbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6ICdFbXB0eVN0YXRlbWVudCcsXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6ICdFeHByZXNzaW9uU3RhdGVtZW50JyxcbiAgICAgICAgRm9yU3RhdGVtZW50OiAnRm9yU3RhdGVtZW50JyxcbiAgICAgICAgRm9ySW5TdGF0ZW1lbnQ6ICdGb3JJblN0YXRlbWVudCcsXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246ICdGdW5jdGlvbkRlY2xhcmF0aW9uJyxcbiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHByZXNzaW9uJyxcbiAgICAgICAgSWRlbnRpZmllcjogJ0lkZW50aWZpZXInLFxuICAgICAgICBJZlN0YXRlbWVudDogJ0lmU3RhdGVtZW50JyxcbiAgICAgICAgTGl0ZXJhbDogJ0xpdGVyYWwnLFxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiAnTGFiZWxlZFN0YXRlbWVudCcsXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLFxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgIE5ld0V4cHJlc3Npb246ICdOZXdFeHByZXNzaW9uJyxcbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogJ09iamVjdEV4cHJlc3Npb24nLFxuICAgICAgICBQcm9ncmFtOiAnUHJvZ3JhbScsXG4gICAgICAgIFByb3BlcnR5OiAnUHJvcGVydHknLFxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6ICdSZXR1cm5TdGF0ZW1lbnQnLFxuICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246ICdTZXF1ZW5jZUV4cHJlc3Npb24nLFxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICdTd2l0Y2hTdGF0ZW1lbnQnLFxuICAgICAgICBTd2l0Y2hDYXNlOiAnU3dpdGNoQ2FzZScsXG4gICAgICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4cHJlc3Npb24nLFxuICAgICAgICBUaHJvd1N0YXRlbWVudDogJ1Rocm93U3RhdGVtZW50JyxcbiAgICAgICAgVHJ5U3RhdGVtZW50OiAnVHJ5U3RhdGVtZW50JyxcbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiAnVW5hcnlFeHByZXNzaW9uJyxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogJ1VwZGF0ZUV4cHJlc3Npb24nLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAnVmFyaWFibGVEZWNsYXJhdGlvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogJ1ZhcmlhYmxlRGVjbGFyYXRvcicsXG4gICAgICAgIFdoaWxlU3RhdGVtZW50OiAnV2hpbGVTdGF0ZW1lbnQnLFxuICAgICAgICBXaXRoU3RhdGVtZW50OiAnV2l0aFN0YXRlbWVudCdcbiAgICB9O1xuXG4gICAgUHJvcGVydHlLaW5kID0ge1xuICAgICAgICBEYXRhOiAxLFxuICAgICAgICBHZXQ6IDIsXG4gICAgICAgIFNldDogNFxuICAgIH07XG5cbiAgICAvLyBFcnJvciBtZXNzYWdlcyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIFY4LlxuICAgIE1lc3NhZ2VzID0ge1xuICAgICAgICBVbmV4cGVjdGVkVG9rZW46ICAnVW5leHBlY3RlZCB0b2tlbiAlMCcsXG4gICAgICAgIFVuZXhwZWN0ZWROdW1iZXI6ICAnVW5leHBlY3RlZCBudW1iZXInLFxuICAgICAgICBVbmV4cGVjdGVkU3RyaW5nOiAgJ1VuZXhwZWN0ZWQgc3RyaW5nJyxcbiAgICAgICAgVW5leHBlY3RlZElkZW50aWZpZXI6ICAnVW5leHBlY3RlZCBpZGVudGlmaWVyJyxcbiAgICAgICAgVW5leHBlY3RlZFJlc2VydmVkOiAgJ1VuZXhwZWN0ZWQgcmVzZXJ2ZWQgd29yZCcsXG4gICAgICAgIFVuZXhwZWN0ZWRFT1M6ICAnVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQnLFxuICAgICAgICBOZXdsaW5lQWZ0ZXJUaHJvdzogICdJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3cnLFxuICAgICAgICBJbnZhbGlkUmVnRXhwOiAnSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24nLFxuICAgICAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICAnSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgLycsXG4gICAgICAgIEludmFsaWRMSFNJbkFzc2lnbm1lbnQ6ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBhc3NpZ25tZW50JyxcbiAgICAgICAgSW52YWxpZExIU0luRm9ySW46ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3ItaW4nLFxuICAgICAgICBNdWx0aXBsZURlZmF1bHRzSW5Td2l0Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQnLFxuICAgICAgICBOb0NhdGNoT3JGaW5hbGx5OiAgJ01pc3NpbmcgY2F0Y2ggb3IgZmluYWxseSBhZnRlciB0cnknLFxuICAgICAgICBVbmtub3duTGFiZWw6ICdVbmRlZmluZWQgbGFiZWwgXFwnJTBcXCcnLFxuICAgICAgICBSZWRlY2xhcmF0aW9uOiAnJTAgXFwnJTFcXCcgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCcsXG4gICAgICAgIElsbGVnYWxDb250aW51ZTogJ0lsbGVnYWwgY29udGludWUgc3RhdGVtZW50JyxcbiAgICAgICAgSWxsZWdhbEJyZWFrOiAnSWxsZWdhbCBicmVhayBzdGF0ZW1lbnQnLFxuICAgICAgICBJbGxlZ2FsUmV0dXJuOiAnSWxsZWdhbCByZXR1cm4gc3RhdGVtZW50JyxcbiAgICAgICAgU3RyaWN0TW9kZVdpdGg6ICAnU3RyaWN0IG1vZGUgY29kZSBtYXkgbm90IGluY2x1ZGUgYSB3aXRoIHN0YXRlbWVudCcsXG4gICAgICAgIFN0cmljdENhdGNoVmFyaWFibGU6ICAnQ2F0Y2ggdmFyaWFibGUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIFN0cmljdFZhck5hbWU6ICAnVmFyaWFibGUgbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UGFyYW1OYW1lOiAgJ1BhcmFtZXRlciBuYW1lIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UGFyYW1EdXBlOiAnU3RyaWN0IG1vZGUgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMnLFxuICAgICAgICBTdHJpY3RGdW5jdGlvbk5hbWU6ICAnRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0T2N0YWxMaXRlcmFsOiAgJ09jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4nLFxuICAgICAgICBTdHJpY3REZWxldGU6ICAnRGVsZXRlIG9mIGFuIHVucXVhbGlmaWVkIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUuJyxcbiAgICAgICAgU3RyaWN0RHVwbGljYXRlUHJvcGVydHk6ICAnRHVwbGljYXRlIGRhdGEgcHJvcGVydHkgaW4gb2JqZWN0IGxpdGVyYWwgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBBY2Nlc3NvckRhdGFQcm9wZXJ0eTogICdPYmplY3QgbGl0ZXJhbCBtYXkgbm90IGhhdmUgZGF0YSBhbmQgYWNjZXNzb3IgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lJyxcbiAgICAgICAgQWNjZXNzb3JHZXRTZXQ6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIG11bHRpcGxlIGdldC9zZXQgYWNjZXNzb3JzIHdpdGggdGhlIHNhbWUgbmFtZScsXG4gICAgICAgIFN0cmljdExIU0Fzc2lnbm1lbnQ6ICAnQXNzaWdubWVudCB0byBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIFN0cmljdExIU1Bvc3RmaXg6ICAnUG9zdGZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0TEhTUHJlZml4OiAgJ1ByZWZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0UmVzZXJ2ZWRXb3JkOiAgJ1VzZSBvZiBmdXR1cmUgcmVzZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZSdcbiAgICB9O1xuXG4gICAgLy8gU2VlIGFsc28gdG9vbHMvZ2VuZXJhdGUtdW5pY29kZS1yZWdleC5weS5cbiAgICBSZWdleCA9IHtcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6IG5ldyBSZWdFeHAoJ1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyN1xcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMFxcdTA4QTItXFx1MDhBQ1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTc3XFx1MDk3OS1cXHUwOTdGXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkYwXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OTdcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTgwLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10nKSxcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogbmV3IFJlZ0V4cCgnW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzAwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4My1cXHUwNDg3XFx1MDQ4QS1cXHUwNTI3XFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MTAtXFx1MDYxQVxcdTA2MjAtXFx1MDY2OVxcdTA2NkUtXFx1MDZEM1xcdTA2RDUtXFx1MDZEQ1xcdTA2REYtXFx1MDZFOFxcdTA2RUEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwLVxcdTA3NEFcXHUwNzRELVxcdTA3QjFcXHUwN0MwLVxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODJEXFx1MDg0MC1cXHUwODVCXFx1MDhBMFxcdTA4QTItXFx1MDhBQ1xcdTA4RTQtXFx1MDhGRVxcdTA5MDAtXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5NzEtXFx1MDk3N1xcdTA5NzktXFx1MDk3RlxcdTA5ODEtXFx1MDk4M1xcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkMtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNFXFx1MDlEN1xcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUzXFx1MDlFNi1cXHUwOUYxXFx1MEEwMS1cXHUwQTAzXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCQy1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFEMFxcdTBBRTAtXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAxLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNThcXHUwQzU5XFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MlxcdTBDODNcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JDLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDREVcXHUwQ0UwLVxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwQ0YxXFx1MENGMlxcdTBEMDJcXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENjAtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGMFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOUQ5XFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFEMDAtXFx1MURFNlxcdTFERkMtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OVxcdTMwOUFcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2OTdcXHVBNjlGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzRcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0JcXHVBQTgwLVxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUZcXHVBQUYyLVxcdUFBRjZcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQkMwLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTI2XFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjEwLVxcdUZGMTlcXHVGRjIxLVxcdUZGM0FcXHVGRjNGXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXScpXG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB0aGUgY29uZGl0aW9uIGlzIHRydWUsIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cbiAgICAvLyBUaGlzIGlzIG9ubHkgdG8gaGF2ZSBhIGJldHRlciBjb250cmFjdCBzZW1hbnRpYywgaS5lLiBhbm90aGVyIHNhZmV0eSBuZXRcbiAgICAvLyB0byBjYXRjaCBhIGxvZ2ljIGVycm9yLiBUaGUgY29uZGl0aW9uIHNoYWxsIGJlIGZ1bGZpbGxlZCBpbiBub3JtYWwgY2FzZS5cbiAgICAvLyBEbyBOT1QgdXNlIHRoaXMgdG8gZW5mb3JjZSBhIGNlcnRhaW4gY29uZGl0aW9uIG9uIGFueSB1c2VyIGlucHV0LlxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVNTRVJUOiAnICsgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID49IDQ4ICYmIGNoIDw9IDU3KTsgICAvLyAwLi45XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNIZXhEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gJzAxMjM0NTY3ODlhYmNkZWZBQkNERUYnLmluZGV4T2YoY2gpID49IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPY3RhbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAnMDEyMzQ1NjcnLmluZGV4T2YoY2gpID49IDA7XG4gICAgfVxuXG5cbiAgICAvLyA3LjIgV2hpdGUgU3BhY2VcblxuICAgIGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDIwKSB8fCAoY2ggPT09IDB4MDkpIHx8IChjaCA9PT0gMHgwQikgfHwgKGNoID09PSAweDBDKSB8fCAoY2ggPT09IDB4QTApIHx8XG4gICAgICAgICAgICAoY2ggPj0gMHgxNjgwICYmIFsweDE2ODAsIDB4MTgwRSwgMHgyMDAwLCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLCAweDIwMDQsIDB4MjAwNSwgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsIDB4MjAyRiwgMHgyMDVGLCAweDMwMDAsIDB4RkVGRl0uaW5kZXhPZihjaCkgPj0gMCk7XG4gICAgfVxuXG4gICAgLy8gNy4zIExpbmUgVGVybWluYXRvcnNcblxuICAgIGZ1bmN0aW9uIGlzTGluZVRlcm1pbmF0b3IoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgwQSkgfHwgKGNoID09PSAweDBEKSB8fCAoY2ggPT09IDB4MjAyOCkgfHwgKGNoID09PSAweDIwMjkpO1xuICAgIH1cblxuICAgIC8vIDcuNiBJZGVudGlmaWVyIE5hbWVzIGFuZCBJZGVudGlmaWVyc1xuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnQoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PSAweDQwKSB8fCAgKGNoID09PSAweDI0KSB8fCAoY2ggPT09IDB4NUYpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAgICAgICAvLyBBLi5aXG4gICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAgICAgICAgIC8vIGEuLnpcbiAgICAgICAgICAgIChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAgICAgLy8gXFwgKGJhY2tzbGFzaClcbiAgICAgICAgICAgICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoY2gpIHtcbiAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgyNCkgfHwgKGNoID09PSAweDVGKSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSlcbiAgICAgICAgICAgIChjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEpIHx8ICAgICAgICAgLy8gQS4uWlxuICAgICAgICAgICAgKGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSkgfHwgICAgICAgICAvLyBhLi56XG4gICAgICAgICAgICAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5KSB8fCAgICAgICAgIC8vIDAuLjlcbiAgICAgICAgICAgIChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAgICAgLy8gXFwgKGJhY2tzbGFzaClcbiAgICAgICAgICAgICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7XG4gICAgfVxuXG4gICAgLy8gNy42LjEuMiBGdXR1cmUgUmVzZXJ2ZWQgV29yZHNcblxuICAgIGZ1bmN0aW9uIGlzRnV0dXJlUmVzZXJ2ZWRXb3JkKGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgY2FzZSAnZXh0ZW5kcyc6XG4gICAgICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICAgIGNhc2UgJ3N1cGVyJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgY2FzZSAnaW1wbGVtZW50cyc6XG4gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG4gICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuICAgICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkJzpcbiAgICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgY2FzZSAnc3RhdGljJzpcbiAgICAgICAgY2FzZSAneWllbGQnOlxuICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc3RyaWN0ZWRXb3JkKGlkKSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJztcbiAgICB9XG5cbiAgICAvLyA3LjYuMS4xIEtleXdvcmRzXG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmQoaWQpIHtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdjb25zdCcgaXMgc3BlY2lhbGl6ZWQgYXMgS2V5d29yZCBpbiBWOC5cbiAgICAgICAgLy8gJ3lpZWxkJyBhbmQgJ2xldCcgYXJlIGZvciBjb21wYXRpYmxpdHkgd2l0aCBTcGlkZXJNb25rZXkgYW5kIEVTLm5leHQuXG4gICAgICAgIC8vIFNvbWUgb3RoZXJzIGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZlZCB3b3Jkcy5cblxuICAgICAgICBzd2l0Y2ggKGlkLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnaWYnKSB8fCAoaWQgPT09ICdpbicpIHx8IChpZCA9PT0gJ2RvJyk7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAoaWQgPT09ICduZXcnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3RyeScpIHx8IChpZCA9PT0gJ2xldCcpO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAndGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8IChpZCA9PT0gJ2VudW0nKTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8IChpZCA9PT0gJ3lpZWxkJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8IChpZCA9PT0gJ3N1cGVyJyk7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdyZXR1cm4nKSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3N3aXRjaCcpIHx8IChpZCA9PT0gJ2V4cG9ydCcpIHx8IChpZCA9PT0gJ2ltcG9ydCcpO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnZGVmYXVsdCcpIHx8IChpZCA9PT0gJ2ZpbmFsbHknKSB8fCAoaWQgPT09ICdleHRlbmRzJyk7XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicpIHx8IChpZCA9PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXInKTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpbnN0YW5jZW9mJyk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA3LjQgQ29tbWVudHNcblxuICAgIGZ1bmN0aW9uIGFkZENvbW1lbnQodHlwZSwgdmFsdWUsIHN0YXJ0LCBlbmQsIGxvYykge1xuICAgICAgICB2YXIgY29tbWVudCwgYXR0YWNoZXI7XG5cbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicsICdDb21tZW50IG11c3QgaGF2ZSB2YWxpZCBwb3NpdGlvbicpO1xuXG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIHdheSB0aGUgYWN0dWFsIHRva2VuIGlzIHNjYW5uZWQsIG9mdGVuIHRoZSBjb21tZW50c1xuICAgICAgICAvLyAoaWYgYW55KSBhcmUgc2tpcHBlZCB0d2ljZSBkdXJpbmcgdGhlIGxleGljYWwgYW5hbHlzaXMuXG4gICAgICAgIC8vIFRodXMsIHdlIG5lZWQgdG8gc2tpcCBhZGRpbmcgYSBjb21tZW50IGlmIHRoZSBjb21tZW50IGFycmF5IGFscmVhZHlcbiAgICAgICAgLy8gaGFuZGxlZCBpdC5cbiAgICAgICAgaWYgKHN0YXRlLmxhc3RDb21tZW50U3RhcnQgPj0gc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sYXN0Q29tbWVudFN0YXJ0ID0gc3RhcnQ7XG5cbiAgICAgICAgY29tbWVudCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICBjb21tZW50LnJhbmdlID0gW3N0YXJ0LCBlbmRdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHRyYS5sb2MpIHtcbiAgICAgICAgICAgIGNvbW1lbnQubG9jID0gbG9jO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7XG4gICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBTaW5nbGVMaW5lQ29tbWVudChvZmZzZXQpIHtcbiAgICAgICAgdmFyIHN0YXJ0LCBsb2MsIGNoLCBjb21tZW50O1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXggLSBvZmZzZXQ7XG4gICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gb2Zmc2V0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIG9mZnNldCwgaW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBhZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQsIGluZGV4IC0gMSwgbG9jKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAxMyAmJiBzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyBvZmZzZXQsIGluZGV4KTtcbiAgICAgICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWRkQ29tbWVudCgnTGluZScsIGNvbW1lbnQsIHN0YXJ0LCBpbmRleCwgbG9jKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBNdWx0aUxpbmVDb21tZW50KCkge1xuICAgICAgICB2YXIgc3RhcnQsIGxvYywgY2gsIGNvbW1lbnQ7XG5cbiAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICBzdGFydCA9IGluZGV4IC0gMjtcbiAgICAgICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4MEEpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyQSkge1xuICAgICAgICAgICAgICAgIC8vIEJsb2NrIGNvbW1lbnQgZW5kcyB3aXRoICcqLycuXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4MkYpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgMiwgaW5kZXggLSAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tbWVudCgnQmxvY2snLCBjb21tZW50LCBzdGFydCwgaW5kZXgsIGxvYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNraXBDb21tZW50KCkge1xuICAgICAgICB2YXIgY2gsIHN0YXJ0O1xuXG4gICAgICAgIHN0YXJ0ID0gKGluZGV4ID09PSAwKTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcblxuICAgICAgICAgICAgaWYgKGlzV2hpdGVTcGFjZShjaCkpIHtcbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgwQSkge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7XG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyRikgeyAvLyBVKzAwMkYgaXMgJy8nXG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMHgyRikge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoMik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJBKSB7ICAvLyBVKzAwMkEgaXMgJyonXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHNraXBNdWx0aUxpbmVDb21tZW50KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydCAmJiBjaCA9PT0gMHgyRCkgeyAvLyBVKzAwMkQgaXMgJy0nXG4gICAgICAgICAgICAgICAgLy8gVSswMDNFIGlzICc+J1xuICAgICAgICAgICAgICAgIGlmICgoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgyRCkgJiYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMikgPT09IDB4M0UpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICctLT4nIGlzIGEgc2luZ2xlLWxpbmUgY29tbWVudFxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAzO1xuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoMyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgzQykgeyAvLyBVKzAwM0MgaXMgJzwnXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNCkgPT09ICchLS0nKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGA8YFxuICAgICAgICAgICAgICAgICAgICArK2luZGV4OyAvLyBgIWBcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1gXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAtYFxuICAgICAgICAgICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5IZXhFc2NhcGUocHJlZml4KSB7XG4gICAgICAgIHZhciBpLCBsZW4sIGNoLCBjb2RlID0gMDtcblxuICAgICAgICBsZW4gPSAocHJlZml4ID09PSAndScpID8gNCA6IDI7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzSGV4RGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDE2ICsgJzAxMjM0NTY3ODlhYmNkZWYnLmluZGV4T2YoY2gudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFc2NhcGVkSWRlbnRpZmllcigpIHtcbiAgICAgICAgdmFyIGNoLCBpZDtcblxuICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KyspO1xuICAgICAgICBpZCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuXG4gICAgICAgIC8vICdcXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKGNoID09PSAweDVDKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAweDc1KSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGNoID0gc2NhbkhleEVzY2FwZSgndScpO1xuICAgICAgICAgICAgaWYgKCFjaCB8fCBjaCA9PT0gJ1xcXFwnIHx8ICFpc0lkZW50aWZpZXJTdGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlkID0gY2g7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJQYXJ0KGNoKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuXG4gICAgICAgICAgICAvLyAnXFx1JyAoVSswMDVDLCBVKzAwNzUpIGRlbm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAgICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGlkLnN1YnN0cigwLCBpZC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAweDc1KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnXFxcXCcgfHwgIWlzSWRlbnRpZmllclBhcnQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZCArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGNoO1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXgrKztcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gMHg1Qykge1xuICAgICAgICAgICAgICAgIC8vIEJsYWNrc2xhc2ggKFUrMDA1QykgbWFya3MgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXG4gICAgICAgICAgICAgICAgaW5kZXggPSBzdGFydDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RXNjYXBlZElkZW50aWZpZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJQYXJ0KGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5JZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGlkLCB0eXBlO1xuXG4gICAgICAgIHN0YXJ0ID0gaW5kZXg7XG5cbiAgICAgICAgLy8gQmFja3NsYXNoIChVKzAwNUMpIHN0YXJ0cyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgaWQgPSAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDVDKSA/IGdldEVzY2FwZWRJZGVudGlmaWVyKCkgOiBnZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgLy8gVGhlcmUgaXMgbm8ga2V5d29yZCBvciBsaXRlcmFsIHdpdGggb25seSBvbmUgY2hhcmFjdGVyLlxuICAgICAgICAvLyBUaHVzLCBpdCBtdXN0IGJlIGFuIGlkZW50aWZpZXIuXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5JZGVudGlmaWVyO1xuICAgICAgICB9IGVsc2UgaWYgKGlzS2V5d29yZChpZCkpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5LZXl3b3JkO1xuICAgICAgICB9IGVsc2UgaWYgKGlkID09PSAnbnVsbCcpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5OdWxsTGl0ZXJhbDtcbiAgICAgICAgfSBlbHNlIGlmIChpZCA9PT0gJ3RydWUnIHx8IGlkID09PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW4uQm9vbGVhbkxpdGVyYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0eXBlID0gVG9rZW4uSWRlbnRpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgdmFsdWU6IGlkLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuXG4gICAgLy8gNy43IFB1bmN0dWF0b3JzXG5cbiAgICBmdW5jdGlvbiBzY2FuUHVuY3R1YXRvcigpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gaW5kZXgsXG4gICAgICAgICAgICBjb2RlID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpLFxuICAgICAgICAgICAgY29kZTIsXG4gICAgICAgICAgICBjaDEgPSBzb3VyY2VbaW5kZXhdLFxuICAgICAgICAgICAgY2gyLFxuICAgICAgICAgICAgY2gzLFxuICAgICAgICAgICAgY2g0O1xuXG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5nbGUtY2hhcmFjdGVyIHB1bmN0dWF0b3JzLlxuICAgICAgICBjYXNlIDB4MkU6ICAvLyAuIGRvdFxuICAgICAgICBjYXNlIDB4Mjg6ICAvLyAoIG9wZW4gYnJhY2tldFxuICAgICAgICBjYXNlIDB4Mjk6ICAvLyApIGNsb3NlIGJyYWNrZXRcbiAgICAgICAgY2FzZSAweDNCOiAgLy8gOyBzZW1pY29sb25cbiAgICAgICAgY2FzZSAweDJDOiAgLy8gLCBjb21tYVxuICAgICAgICBjYXNlIDB4N0I6ICAvLyB7IG9wZW4gY3VybHkgYnJhY2VcbiAgICAgICAgY2FzZSAweDdEOiAgLy8gfSBjbG9zZSBjdXJseSBicmFjZVxuICAgICAgICBjYXNlIDB4NUI6ICAvLyBbXG4gICAgICAgIGNhc2UgMHg1RDogIC8vIF1cbiAgICAgICAgY2FzZSAweDNBOiAgLy8gOlxuICAgICAgICBjYXNlIDB4M0Y6ICAvLyA/XG4gICAgICAgIGNhc2UgMHg3RTogIC8vIH5cbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyOCkge1xuICAgICAgICAgICAgICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IGV4dHJhLnRva2Vucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDdCKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSksXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY29kZTIgPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpO1xuXG4gICAgICAgICAgICAvLyAnPScgKFUrMDAzRCkgbWFya3MgYW4gYXNzaWdubWVudCBvciBjb21wYXJpc29uIG9wZXJhdG9yLlxuICAgICAgICAgICAgaWYgKGNvZGUyID09PSAweDNEKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAweDJCOiAgLy8gK1xuICAgICAgICAgICAgICAgIGNhc2UgMHgyRDogIC8vIC1cbiAgICAgICAgICAgICAgICBjYXNlIDB4MkY6ICAvLyAvXG4gICAgICAgICAgICAgICAgY2FzZSAweDNDOiAgLy8gPFxuICAgICAgICAgICAgICAgIGNhc2UgMHgzRTogIC8vID5cbiAgICAgICAgICAgICAgICBjYXNlIDB4NUU6ICAvLyBeXG4gICAgICAgICAgICAgICAgY2FzZSAweDdDOiAgLy8gfFxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNTogIC8vICVcbiAgICAgICAgICAgICAgICBjYXNlIDB4MjY6ICAvLyAmXG4gICAgICAgICAgICAgICAgY2FzZSAweDJBOiAgLy8gKlxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpICsgU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlMiksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjYXNlIDB4MjE6IC8vICFcbiAgICAgICAgICAgICAgICBjYXNlIDB4M0Q6IC8vID1cbiAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjtcblxuICAgICAgICAgICAgICAgICAgICAvLyAhPT0gYW5kID09PVxuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDNEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQtY2hhcmFjdGVyIHB1bmN0dWF0b3I6ID4+Pj1cblxuICAgICAgICBjaDQgPSBzb3VyY2Uuc3Vic3RyKGluZGV4LCA0KTtcblxuICAgICAgICBpZiAoY2g0ID09PSAnPj4+PScpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IDQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNoNCxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy1jaGFyYWN0ZXIgcHVuY3R1YXRvcnM6ID09PSAhPT0gPj4+IDw8PSA+Pj1cblxuICAgICAgICBjaDMgPSBjaDQuc3Vic3RyKDAsIDMpO1xuXG4gICAgICAgIGlmIChjaDMgPT09ICc+Pj4nIHx8IGNoMyA9PT0gJzw8PScgfHwgY2gzID09PSAnPj49Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gMztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2gzLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlciAyLWNoYXJhY3RlciBwdW5jdHVhdG9yczogKysgLS0gPDwgPj4gJiYgfHxcbiAgICAgICAgY2gyID0gY2gzLnN1YnN0cigwLCAyKTtcblxuICAgICAgICBpZiAoKGNoMSA9PT0gY2gyWzFdICYmICgnKy08PiZ8Jy5pbmRleE9mKGNoMSkgPj0gMCkpIHx8IGNoMiA9PT0gJz0+Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2gyLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPCA+ID0gISArIC0gKiAlICYgfCBeIC9cbiAgICAgICAgaWYgKCc8Pj0hKy0qJSZ8Xi8nLmluZGV4T2YoY2gxKSA+PSAwKSB7XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDEsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICB9XG5cbiAgICAvLyA3LjguMyBOdW1lcmljIExpdGVyYWxzXG5cbiAgICBmdW5jdGlvbiBzY2FuSGV4TGl0ZXJhbChzdGFydCkge1xuICAgICAgICB2YXIgbnVtYmVyID0gJyc7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoIWlzSGV4RGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobnVtYmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbi5OdW1lcmljTGl0ZXJhbCxcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCgnMHgnICsgbnVtYmVyLCAxNiksXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2Nhbk9jdGFsTGl0ZXJhbChzdGFydCkge1xuICAgICAgICB2YXIgbnVtYmVyID0gJzAnICsgc291cmNlW2luZGV4KytdO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghaXNPY3RhbERpZ2l0KHNvdXJjZVtpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkgfHwgaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KG51bWJlciwgOCksXG4gICAgICAgICAgICBvY3RhbDogdHJ1ZSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuTnVtZXJpY0xpdGVyYWwoKSB7XG4gICAgICAgIHZhciBudW1iZXIsIHN0YXJ0LCBjaDtcblxuICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydChpc0RlY2ltYWxEaWdpdChjaC5jaGFyQ29kZUF0KDApKSB8fCAoY2ggPT09ICcuJyksXG4gICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIGRlY2ltYWwgZGlnaXQgb3IgYSBkZWNpbWFsIHBvaW50Jyk7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcbiAgICAgICAgbnVtYmVyID0gJyc7XG4gICAgICAgIGlmIChjaCAhPT0gJy4nKSB7XG4gICAgICAgICAgICBudW1iZXIgPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG5cbiAgICAgICAgICAgIC8vIEhleCBudW1iZXIgc3RhcnRzIHdpdGggJzB4Jy5cbiAgICAgICAgICAgIC8vIE9jdGFsIG51bWJlciBzdGFydHMgd2l0aCAnMCcuXG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAnMCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd4JyB8fCBjaCA9PT0gJ1gnKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuSGV4TGl0ZXJhbChzdGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBkZWNpbWFsIG51bWJlciBzdGFydHMgd2l0aCAnMCcgc3VjaCBhcyAnMDknIGlzIGlsbGVnYWwuXG4gICAgICAgICAgICAgICAgaWYgKGNoICYmIGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdoaWxlIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAnZScgfHwgY2ggPT09ICdFJykge1xuICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcblxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnKycgfHwgY2ggPT09ICctJykge1xuICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlRmxvYXQobnVtYmVyKSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyA3LjguNCBTdHJpbmcgTGl0ZXJhbHNcblxuICAgIGZ1bmN0aW9uIHNjYW5TdHJpbmdMaXRlcmFsKCkge1xuICAgICAgICB2YXIgc3RyID0gJycsIHF1b3RlLCBzdGFydCwgY2gsIGNvZGUsIHVuZXNjYXBlZCwgcmVzdG9yZSwgb2N0YWwgPSBmYWxzZSwgc3RhcnRMaW5lTnVtYmVyLCBzdGFydExpbmVTdGFydDtcbiAgICAgICAgc3RhcnRMaW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnRMaW5lU3RhcnQgPSBsaW5lU3RhcnQ7XG5cbiAgICAgICAgcXVvdGUgPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICBhc3NlcnQoKHF1b3RlID09PSAnXFwnJyB8fCBxdW90ZSA9PT0gJ1wiJyksXG4gICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWwgbXVzdCBzdGFydHMgd2l0aCBhIHF1b3RlJyk7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcbiAgICAgICAgKytpbmRleDtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgICAgICBpZiAoY2ggPT09IHF1b3RlKSB7XG4gICAgICAgICAgICAgICAgcXVvdGUgPSAnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIGlmICghY2ggfHwgIWlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4RXNjYXBlKGNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmVzY2FwZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdW5lc2NhcGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXGInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXGYnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXHgwQic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxcMCBpcyBub3Qgb2N0YWwgZXNjYXBlIHNlcXVlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDggKyAnMDEyMzQ1NjcnLmluZGV4T2Yoc291cmNlW2luZGV4KytdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzIGRpZ2l0cyBhcmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0YXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIDAsIDEsIDIsIDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcwMTIzJy5pbmRleE9mKGNoKSA+PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBsZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAgJ1xccicgJiYgc291cmNlW2luZGV4XSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChxdW90ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlbi5TdHJpbmdMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHN0cixcbiAgICAgICAgICAgIG9jdGFsOiBvY3RhbCxcbiAgICAgICAgICAgIHN0YXJ0TGluZU51bWJlcjogc3RhcnRMaW5lTnVtYmVyLFxuICAgICAgICAgICAgc3RhcnRMaW5lU3RhcnQ6IHN0YXJ0TGluZVN0YXJ0LFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRlc3RSZWdFeHAocGF0dGVybiwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZFJlZ0V4cCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBCb2R5KCkge1xuICAgICAgICB2YXIgY2gsIHN0ciwgY2xhc3NNYXJrZXIsIHRlcm1pbmF0ZWQsIGJvZHk7XG5cbiAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICBhc3NlcnQoY2ggPT09ICcvJywgJ1JlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoJyk7XG4gICAgICAgIHN0ciA9IHNvdXJjZVtpbmRleCsrXTtcblxuICAgICAgICBjbGFzc01hcmtlciA9IGZhbHNlO1xuICAgICAgICB0ZXJtaW5hdGVkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIC8vIEVDTUEtMjYyIDcuOC41XG4gICAgICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xhc3NNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc01hcmtlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdbJykge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc01hcmtlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXhjbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaC5cbiAgICAgICAgYm9keSA9IHN0ci5zdWJzdHIoMSwgc3RyLmxlbmd0aCAtIDIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IGJvZHksXG4gICAgICAgICAgICBsaXRlcmFsOiBzdHJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmVnRXhwRmxhZ3MoKSB7XG4gICAgICAgIHZhciBjaCwgc3RyLCBmbGFncywgcmVzdG9yZTtcblxuICAgICAgICBzdHIgPSAnJztcbiAgICAgICAgZmxhZ3MgPSAnJztcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3UnKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY2ggPSBzY2FuSGV4RXNjYXBlKCd1Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHN0ciArPSAnXFxcXHUnOyByZXN0b3JlIDwgaW5kZXg7ICsrcmVzdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzb3VyY2VbcmVzdG9yZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSAndSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFx1JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZsYWdzICs9IGNoO1xuICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogZmxhZ3MsXG4gICAgICAgICAgICBsaXRlcmFsOiBzdHJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmVnRXhwKCkge1xuICAgICAgICB2YXIgc3RhcnQsIGJvZHksIGZsYWdzLCBwYXR0ZXJuLCB2YWx1ZTtcblxuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBzdGFydCA9IGluZGV4O1xuXG4gICAgICAgIGJvZHkgPSBzY2FuUmVnRXhwQm9keSgpO1xuICAgICAgICBmbGFncyA9IHNjYW5SZWdFeHBGbGFncygpO1xuICAgICAgICB2YWx1ZSA9IHRlc3RSZWdFeHAoYm9keS52YWx1ZSwgZmxhZ3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5SZWd1bGFyRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaXRlcmFsOiBib2R5LmxpdGVyYWwgKyBmbGFncy5saXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbGxlY3RSZWdleCgpIHtcbiAgICAgICAgdmFyIHBvcywgbG9jLCByZWdleCwgdG9rZW47XG5cbiAgICAgICAgc2tpcENvbW1lbnQoKTtcblxuICAgICAgICBwb3MgPSBpbmRleDtcbiAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZWdleCA9IHNjYW5SZWdFeHAoKTtcbiAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgIH07XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgd2hpY2ggaXMgbGlrZWx5ICcvJyBvciAnLz0nXG4gICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS50b2tlbnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnJhbmdlWzBdID09PSBwb3MgJiYgdG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJy8nIHx8IHRva2VuLnZhbHVlID09PSAnLz0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUmVndWxhckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiByZWdleC5saXRlcmFsLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbcG9zLCBpbmRleF0sXG4gICAgICAgICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWUodG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLktleXdvcmQgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLkJvb2xlYW5MaXRlcmFsIHx8XG4gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbi5OdWxsTGl0ZXJhbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZHZhbmNlU2xhc2goKSB7XG4gICAgICAgIHZhciBwcmV2VG9rZW4sXG4gICAgICAgICAgICBjaGVja1Rva2VuO1xuICAgICAgICAvLyBVc2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc3dlZXQuanMvd2lraS9kZXNpZ25cbiAgICAgICAgcHJldlRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCFwcmV2VG9rZW4pIHtcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgYmVmb3JlIHRoYXQ6IGl0IGNhbm5vdCBiZSBhIGRpdmlzaW9uLlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7XG4gICAgICAgICAgICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmV2VG9rZW4udmFsdWUgPT09ICcpJykge1xuICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlblBhcmVuVG9rZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tUb2tlbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi50eXBlID09PSAnS2V5d29yZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja1Rva2VuLnZhbHVlID09PSAnaWYnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3doaWxlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09ICdmb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3dpdGgnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJ30nKSB7XG4gICAgICAgICAgICAgICAgLy8gRGl2aWRpbmcgYSBmdW5jdGlvbiBieSBhbnl0aGluZyBtYWtlcyBsaXR0bGUgc2Vuc2UsXG4gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoYXQuXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDNdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSAzXS50eXBlID09PSAnS2V5d29yZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQW5vbnltb3VzIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XS50eXBlID09PSAnS2V5d29yZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA1XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY2hlY2tUb2tlbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzXG4gICAgICAgICAgICAgICAgLy8gYSBkZWNsYXJhdGlvbiBvciBhbiBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgIGlmIChGbkV4cHJUb2tlbnMuaW5kZXhPZihjaGVja1Rva2VuLnZhbHVlKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGFuIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIGRlY2xhcmF0aW9uLlxuICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJldlRva2VuLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkdmFuY2UoKSB7XG4gICAgICAgIHZhciBjaDtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuXG4gICAgICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uRU9GLFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IGluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTtcblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbklkZW50aWZpZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZlcnkgY29tbW9uOiAoIGFuZCApIGFuZCA7XG4gICAgICAgIGlmIChjaCA9PT0gMHgyOCB8fCBjaCA9PT0gMHgyOSB8fCBjaCA9PT0gMHgzQikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdHJpbmcgbGl0ZXJhbCBzdGFydHMgd2l0aCBzaW5nbGUgcXVvdGUgKFUrMDAyNykgb3IgZG91YmxlIHF1b3RlIChVKzAwMjIpLlxuICAgICAgICBpZiAoY2ggPT09IDB4MjcgfHwgY2ggPT09IDB4MjIpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FuU3RyaW5nTGl0ZXJhbCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyBEb3QgKC4pIFUrMDAyRSBjYW4gYWxzbyBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciwgaGVuY2UgdGhlIG5lZWRcbiAgICAgICAgLy8gdG8gY2hlY2sgdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoY2ggPT09IDB4MkUpIHtcbiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuTnVtZXJpY0xpdGVyYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2xhc2ggKC8pIFUrMDAyRiBjYW4gYWxzbyBzdGFydCBhIHJlZ2V4LlxuICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUgJiYgY2ggPT09IDB4MkYpIHtcbiAgICAgICAgICAgIHJldHVybiBhZHZhbmNlU2xhc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbGxlY3RUb2tlbigpIHtcbiAgICAgICAgdmFyIGxvYywgdG9rZW4sIHJhbmdlLCB2YWx1ZTtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBsb2MgPSB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRva2VuID0gYWR2YW5jZSgpO1xuICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKTtcbiAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbk5hbWVbdG9rZW4udHlwZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbdG9rZW4uc3RhcnQsIHRva2VuLmVuZF0sXG4gICAgICAgICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBpbmRleCA9IHRva2VuLmVuZDtcbiAgICAgICAgbGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7XG4gICAgICAgIGxpbmVTdGFydCA9IHRva2VuLmxpbmVTdGFydDtcblxuICAgICAgICBsb29rYWhlYWQgPSAodHlwZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpID8gY29sbGVjdFRva2VuKCkgOiBhZHZhbmNlKCk7XG5cbiAgICAgICAgaW5kZXggPSB0b2tlbi5lbmQ7XG4gICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7XG5cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBlZWsoKSB7XG4gICAgICAgIHZhciBwb3MsIGxpbmUsIHN0YXJ0O1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsaW5lID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2UoKTtcbiAgICAgICAgaW5kZXggPSBwb3M7XG4gICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBQb3NpdGlvbihsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgbGluZSwgY29sdW1uKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgUG9zaXRpb24oc3RhcnRMaW5lLCBzdGFydENvbHVtbik7XG4gICAgICAgIHRoaXMuZW5kID0gbmV3IFBvc2l0aW9uKGxpbmUsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgU3ludGF4VHJlZURlbGVnYXRlID0ge1xuXG4gICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJyxcblxuICAgICAgICBwcm9jZXNzQ29tbWVudDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQsIHRyYWlsaW5nQ29tbWVudHM7XG5cbiAgICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuYm9keS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEudHJhaWxpbmdDb21tZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBleHRyYS50cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFpbGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFYXRpbmcgdGhlIHN0YWNrLlxuICAgICAgICAgICAgd2hpbGUgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJiBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgIGxhc3RDaGlsZCA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucG9wKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAobGFzdENoaWxkLmxlYWRpbmdDb21tZW50cyAmJiBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzW2xhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoIC0gMV0ucmFuZ2VbMV0gPD0gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDAgJiYgZXh0cmEubGVhZGluZ0NvbW1lbnRzW2V4dHJhLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBleHRyYS5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgZXh0cmEubGVhZGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKHRyYWlsaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMgPSB0cmFpbGluZ0NvbW1lbnRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWFya0VuZDogZnVuY3Rpb24gKG5vZGUsIHN0YXJ0VG9rZW4pIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5yYW5nZSkge1xuICAgICAgICAgICAgICAgIG5vZGUucmFuZ2UgPSBbc3RhcnRUb2tlbi5zdGFydCwgaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgICAgIG5vZGUubG9jID0gbmV3IFNvdXJjZUxvY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0TGluZU51bWJlciA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGluZU51bWJlciA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0IC0gKHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQgPT09IHVuZGVmaW5lZCA/ICBzdGFydFRva2VuLmxpbmVTdGFydCA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQpLFxuICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0UHJvY2Vzcyhub2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NDb21tZW50KG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcG9zdFByb2Nlc3M6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmEuc291cmNlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sb2Muc291cmNlID0gZXh0cmEuc291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQXJyYXlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFycmF5RXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBlbGVtZW50czogZWxlbWVudHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFzc2lnbm1lbnRFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVCaW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IChvcGVyYXRvciA9PT0gJ3x8JyB8fCBvcGVyYXRvciA9PT0gJyYmJykgPyBTeW50YXguTG9naWNhbEV4cHJlc3Npb24gOlxuICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4LkJpbmFyeUV4cHJlc3Npb247XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiAoYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQmxvY2tTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVCcmVha1N0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5CcmVha1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNhbGxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNhbGxlZTogY2FsbGVlLFxuICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNhdGNoQ2xhdXNlOiBmdW5jdGlvbiAocGFyYW0sIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNhdGNoQ2xhdXNlLFxuICAgICAgICAgICAgICAgIHBhcmFtOiBwYXJhbSxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbjogZnVuY3Rpb24gKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudCxcbiAgICAgICAgICAgICAgICBhbHRlcm5hdGU6IGFsdGVybmF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVDb250aW51ZVN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db250aW51ZVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRGVidWdnZXJTdGF0ZW1lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkRlYnVnZ2VyU3RhdGVtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChib2R5LCB0ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Eb1doaWxlU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVFbXB0eVN0YXRlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRW1wdHlTdGF0ZW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudDogZnVuY3Rpb24gKGV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVGb3JTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZvclN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBpbml0OiBpbml0LFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGUsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVGb3JJblN0YXRlbWVudDogZnVuY3Rpb24gKGxlZnQsIHJpZ2h0LCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Gb3JJblN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgIGVhY2g6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uIChpZCwgcGFyYW1zLCBkZWZhdWx0cywgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgcmVzdDogbnVsbCxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5jdGlvbkV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgIHJlc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVJZGVudGlmaWVyOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUlmU3RhdGVtZW50OiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZlN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQsXG4gICAgICAgICAgICAgICAgYWx0ZXJuYXRlOiBhbHRlcm5hdGVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5MYWJlbGVkU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUxpdGVyYWw6IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguTGl0ZXJhbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICAgICAgICAgICAgcmF3OiBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQsIHRva2VuLmVuZClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTWVtYmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFjY2Vzc29yLCBvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5NZW1iZXJFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBhY2Nlc3NvciA9PT0gJ1snLFxuICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0LFxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVOZXdFeHByZXNzaW9uOiBmdW5jdGlvbiAoY2FsbGVlLCBhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5OZXdFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNhbGxlZTogY2FsbGVlLFxuICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb246IGZ1bmN0aW9uIChwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5PYmplY3RFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUG9zdGZpeEV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudCxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByb2dyYW06IGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Qcm9ncmFtLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUHJvcGVydHk6IGZ1bmN0aW9uIChraW5kLCBrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAga2luZDoga2luZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguUmV0dXJuU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByZXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU2VxdWVuY2VFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiBleHByZXNzaW9uc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTd2l0Y2hDYXNlOiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoQ2FzZSxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlU3dpdGNoU3RhdGVtZW50OiBmdW5jdGlvbiAoZGlzY3JpbWluYW50LCBjYXNlcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmFudDogZGlzY3JpbWluYW50LFxuICAgICAgICAgICAgICAgIGNhc2VzOiBjYXNlc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVUaGlzRXhwcmVzc2lvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGhpc0V4cHJlc3Npb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVGhyb3dTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGhyb3dTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVRyeVN0YXRlbWVudDogZnVuY3Rpb24gKGJsb2NrLCBndWFyZGVkSGFuZGxlcnMsIGhhbmRsZXJzLCBmaW5hbGl6ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRyeVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBibG9jazogYmxvY2ssXG4gICAgICAgICAgICAgICAgZ3VhcmRlZEhhbmRsZXJzOiBndWFyZGVkSGFuZGxlcnMsXG4gICAgICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplcjogZmluYWxpemVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVVuYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBhcmd1bWVudCkge1xuICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnKysnIHx8IG9wZXJhdG9yID09PSAnLS0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVW5hcnlFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsXG4gICAgICAgICAgICAgICAgcHJlZml4OiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb246IGZ1bmN0aW9uIChkZWNsYXJhdGlvbnMsIGtpbmQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgICAgZGVjbGFyYXRpb25zOiBkZWNsYXJhdGlvbnMsXG4gICAgICAgICAgICAgICAga2luZDoga2luZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVWYXJpYWJsZURlY2xhcmF0b3I6IGZ1bmN0aW9uIChpZCwgaW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVmFyaWFibGVEZWNsYXJhdG9yLFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBpbml0OiBpbml0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVdoaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAodGVzdCwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguV2hpbGVTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVdpdGhTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChvYmplY3QsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LldpdGhTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGxpbmUgdGVybWluYXRvciBiZWZvcmUgdGhlIG5leHQgdG9rZW4uXG5cbiAgICBmdW5jdGlvbiBwZWVrTGluZVRlcm1pbmF0b3IoKSB7XG4gICAgICAgIHZhciBwb3MsIGxpbmUsIHN0YXJ0LCBmb3VuZDtcblxuICAgICAgICBwb3MgPSBpbmRleDtcbiAgICAgICAgbGluZSA9IGxpbmVOdW1iZXI7XG4gICAgICAgIHN0YXJ0ID0gbGluZVN0YXJ0O1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBmb3VuZCA9IGxpbmVOdW1iZXIgIT09IGxpbmU7XG4gICAgICAgIGluZGV4ID0gcG9zO1xuICAgICAgICBsaW5lTnVtYmVyID0gbGluZTtcbiAgICAgICAgbGluZVN0YXJ0ID0gc3RhcnQ7XG5cbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cblxuICAgIC8vIFRocm93IGFuIGV4Y2VwdGlvblxuXG4gICAgZnVuY3Rpb24gdGhyb3dFcnJvcih0b2tlbiwgbWVzc2FnZUZvcm1hdCkge1xuICAgICAgICB2YXIgZXJyb3IsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSxcbiAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2VGb3JtYXQucmVwbGFjZShcbiAgICAgICAgICAgICAgICAvJShcXGQpL2csXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdob2xlLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBhc3NlcnQoaW5kZXggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUgaW4gcmFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbi5saW5lTnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIHRva2VuLmxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTtcbiAgICAgICAgICAgIGVycm9yLmluZGV4ID0gdG9rZW4uc3RhcnQ7XG4gICAgICAgICAgICBlcnJvci5saW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJlcjtcbiAgICAgICAgICAgIGVycm9yLmNvbHVtbiA9IHRva2VuLnN0YXJ0IC0gbGluZVN0YXJ0ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKCdMaW5lICcgKyBsaW5lTnVtYmVyICsgJzogJyArIG1zZyk7XG4gICAgICAgICAgICBlcnJvci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgZXJyb3IubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gICAgICAgICAgICBlcnJvci5jb2x1bW4gPSBpbmRleCAtIGxpbmVTdGFydCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvci5kZXNjcmlwdGlvbiA9IG1zZztcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGhyb3dFcnJvclRvbGVyYW50KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhyb3dFcnJvci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuZXJyb3JzLnB1c2goZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIHRoZSB0b2tlbi5cblxuICAgIGZ1bmN0aW9uIHRocm93VW5leHBlY3RlZCh0b2tlbikge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkRU9TKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5OdW1lcmljTGl0ZXJhbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZElkZW50aWZpZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIGlmIChpc0Z1dHVyZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkUmVzZXJ2ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJvb2xlYW5MaXRlcmFsLCBOdWxsTGl0ZXJhbCwgb3IgUHVuY3R1YXRvci5cbiAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci5cbiAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cblxuICAgIGZ1bmN0aW9uIGV4cGVjdCh2YWx1ZSkge1xuICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgfHwgdG9rZW4udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5d29yZC5cbiAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cblxuICAgIGZ1bmN0aW9uIGV4cGVjdEtleXdvcmQoa2V5d29yZCkge1xuICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQgfHwgdG9rZW4udmFsdWUgIT09IGtleXdvcmQpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci5cblxuICAgIGZ1bmN0aW9uIG1hdGNoKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudmFsdWUgPT09IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXl3b3JkXG5cbiAgICBmdW5jdGlvbiBtYXRjaEtleXdvcmQoa2V5d29yZCkge1xuICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQgJiYgbG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIGlzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIG1hdGNoQXNzaWduKCkge1xuICAgICAgICB2YXIgb3A7XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb3AgPSBsb29rYWhlYWQudmFsdWU7XG4gICAgICAgIHJldHVybiBvcCA9PT0gJz0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJyo9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICcvPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnJT0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJys9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICctPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnPDw9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICc+Pj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJz4+Pj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJyY9JyB8fFxuICAgICAgICAgICAgb3AgPT09ICdePScgfHxcbiAgICAgICAgICAgIG9wID09PSAnfD0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnN1bWVTZW1pY29sb24oKSB7XG4gICAgICAgIHZhciBsaW5lO1xuXG4gICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWljb2xvbiAoVSswMDNCKS5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQiB8fCBtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyO1xuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBpZiAobGluZU51bWJlciAhPT0gbGluZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YgJiYgIW1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgcHJvdmlkZWQgZXhwcmVzc2lvbiBpcyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uXG5cbiAgICBmdW5jdGlvbiBpc0xlZnRIYW5kU2lkZShleHByKSB7XG4gICAgICAgIHJldHVybiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyIHx8IGV4cHIudHlwZSA9PT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgLy8gMTEuMS40IEFycmF5IEluaXRpYWxpc2VyXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IFtdLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdCgnWycpO1xuXG4gICAgICAgIHdoaWxlICghbWF0Y2goJ10nKSkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCddJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMS41IE9iamVjdCBJbml0aWFsaXNlclxuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHBhcmFtLCBmaXJzdCkge1xuICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QsIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKGZpcnN0ICYmIHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtWzBdLm5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3QsIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBwYXJhbSwgW10sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCkge1xuICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcblxuICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gcGFyc2VPYmplY3RQcm9wZXJ0eSgpLCB3aGVyZVxuICAgICAgICAvLyBFT0YgYW5kIFB1bmN0dWF0b3IgdG9rZW5zIGFyZSBhbHJlYWR5IGZpbHRlcmVkIG91dC5cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCB8fCB0b2tlbi50eXBlID09PSBUb2tlbi5OdW1lcmljTGl0ZXJhbCkge1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiB0b2tlbi5vY3RhbCkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5KCkge1xuICAgICAgICB2YXIgdG9rZW4sIGtleSwgaWQsIHZhbHVlLCBwYXJhbSwgc3RhcnRUb2tlbjtcblxuICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuXG4gICAgICAgICAgICBpZCA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcblxuICAgICAgICAgICAgLy8gUHJvcGVydHkgQXNzaWdubWVudDogR2V0dGVyIGFuZCBTZXR0ZXIuXG5cbiAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ2dldCcgJiYgIW1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24oW10pO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdzZXQnICYmICFtYXRjaCgnOicpKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnKCcpO1xuICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgdG9rZW4udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihbXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBbIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgXTtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHBhcmFtLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdzZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBpZCwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uRU9GIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdEluaXRpYWxpc2VyKCkge1xuICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtdLCBwcm9wZXJ0eSwgbmFtZSwga2V5LCBraW5kLCBtYXAgPSB7fSwgdG9TdHJpbmcgPSBTdHJpbmcsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICB3aGlsZSAoIW1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eSgpO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHkua2V5LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IHByb3BlcnR5LmtleS5uYW1lO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gdG9TdHJpbmcocHJvcGVydHkua2V5LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtpbmQgPSAocHJvcGVydHkua2luZCA9PT0gJ2luaXQnKSA/IFByb3BlcnR5S2luZC5EYXRhIDogKHByb3BlcnR5LmtpbmQgPT09ICdnZXQnKSA/IFByb3BlcnR5S2luZC5HZXQgOiBQcm9wZXJ0eUtpbmQuU2V0O1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBuYW1lO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtYXAsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFwW2tleV0gPT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYga2luZCA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0RHVwbGljYXRlUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgIT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5BY2Nlc3NvckRhdGFQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwW2tleV0gJiBraW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yR2V0U2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYXBba2V5XSB8PSBraW5kO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXBba2V5XSA9IGtpbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIGlmICghbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0KCd9Jyk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMS42IFRoZSBHcm91cGluZyBPcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gcGFyc2VHcm91cEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cblxuICAgIC8vIDExLjEgUHJpbWFyeSBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHR5cGUsIHRva2VuLCBleHByLCBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmIChtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VHcm91cEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJheUluaXRpYWxpc2VyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBsb29rYWhlYWQudHlwZTtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgZXhwciA9ICBkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKGxleCgpLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGxvb2thaGVhZC5vY3RhbCkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChsb29rYWhlYWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChsZXgoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndGhpcycpKSB7XG4gICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVRoaXNFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwpIHtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICB0b2tlbi52YWx1ZSA9ICh0b2tlbi52YWx1ZSA9PT0gJ3RydWUnKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5OdWxsTGl0ZXJhbCkge1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnLycpIHx8IG1hdGNoKCcvPScpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChjb2xsZWN0UmVnZXgoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHNjYW5SZWdFeHAoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWVrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTEuMiBMZWZ0LUhhbmQtU2lkZSBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2goJyknKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIGlmICghaXNJZGVudGlmaWVyTmFtZSh0b2tlbikpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpIHtcbiAgICAgICAgZXhwZWN0KCcuJyk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSB7XG4gICAgICAgIHZhciBleHByO1xuXG4gICAgICAgIGV4cGVjdCgnWycpO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJ10nKTtcblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBjYWxsZWUsIGFyZ3MsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnbmV3Jyk7XG4gICAgICAgIGNhbGxlZSA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpO1xuICAgICAgICBhcmdzID0gbWF0Y2goJygnKSA/IHBhcnNlQXJndW1lbnRzKCkgOiBbXTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVOZXdFeHByZXNzaW9uKGNhbGxlZSwgYXJncyksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgYXJncywgcHJvcGVydHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTtcbiAgICAgICAgZXhwciA9IG1hdGNoS2V5d29yZCgnbmV3JykgPyBwYXJzZU5ld0V4cHJlc3Npb24oKSA6IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcblxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJy4nKSkge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICAgICAgYXJncyA9IHBhcnNlQXJndW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGV4cHIsIGFyZ3MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgcHJvcGVydHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luO1xuXG4gICAgICAgIHdoaWxlIChtYXRjaCgnLicpIHx8IG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnWycpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjMgUG9zdGZpeCBFeHByZXNzaW9uc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHIsIHRva2VuLCBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwoKTtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIGlmICgobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpICYmICFwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgICAgIC8vIDExLjMuMSwgMTEuMy4yXG4gICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdExIU1Bvc3RmaXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghaXNMZWZ0SGFuZFNpZGUoZXhwcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBvc3RmaXhFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICAvLyAxMS40IFVuYXJ5IE9wZXJhdG9yc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VVbmFyeUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgZXhwciwgc3RhcnRUb2tlbjtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnR5cGUgIT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpIHtcbiAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAvLyAxMS40LjQsIDExLjQuNVxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUHJlZml4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJysnKSB8fCBtYXRjaCgnLScpIHx8IG1hdGNoKCd+JykgfHwgbWF0Y2goJyEnKSkge1xuICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8fCBtYXRjaEtleXdvcmQoJ3ZvaWQnKSB8fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7XG4gICAgICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci5vcGVyYXRvciA9PT0gJ2RlbGV0ZScgJiYgZXhwci5hcmd1bWVudC50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0RGVsZXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBhbGxvd0luKSB7XG4gICAgICAgIHZhciBwcmVjID0gMDtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciAmJiB0b2tlbi50eXBlICE9PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnfHwnOlxuICAgICAgICAgICAgcHJlYyA9IDE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcmJic6XG4gICAgICAgICAgICBwcmVjID0gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgcHJlYyA9IDM7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdeJzpcbiAgICAgICAgICAgIHByZWMgPSA0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnJic6XG4gICAgICAgICAgICBwcmVjID0gNTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJz09JzpcbiAgICAgICAgY2FzZSAnIT0nOlxuICAgICAgICBjYXNlICc9PT0nOlxuICAgICAgICBjYXNlICchPT0nOlxuICAgICAgICAgICAgcHJlYyA9IDY7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FzZSAnPic6XG4gICAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgY2FzZSAnPj0nOlxuICAgICAgICBjYXNlICdpbnN0YW5jZW9mJzpcbiAgICAgICAgICAgIHByZWMgPSA3O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnaW4nOlxuICAgICAgICAgICAgcHJlYyA9IGFsbG93SW4gPyA3IDogMDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJzw8JzpcbiAgICAgICAgY2FzZSAnPj4nOlxuICAgICAgICBjYXNlICc+Pj4nOlxuICAgICAgICAgICAgcHJlYyA9IDg7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICBwcmVjID0gOTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICBjYXNlICcvJzpcbiAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICBwcmVjID0gMTE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJlYztcbiAgICB9XG5cbiAgICAvLyAxMS41IE11bHRpcGxpY2F0aXZlIE9wZXJhdG9yc1xuICAgIC8vIDExLjYgQWRkaXRpdmUgT3BlcmF0b3JzXG4gICAgLy8gMTEuNyBCaXR3aXNlIFNoaWZ0IE9wZXJhdG9yc1xuICAgIC8vIDExLjggUmVsYXRpb25hbCBPcGVyYXRvcnNcbiAgICAvLyAxMS45IEVxdWFsaXR5IE9wZXJhdG9yc1xuICAgIC8vIDExLjEwIEJpbmFyeSBCaXR3aXNlIE9wZXJhdG9yc1xuICAgIC8vIDExLjExIEJpbmFyeSBMb2dpY2FsIE9wZXJhdG9yc1xuXG4gICAgZnVuY3Rpb24gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgbWFya2VyLCBtYXJrZXJzLCBleHByLCB0b2tlbiwgcHJlYywgc3RhY2ssIHJpZ2h0LCBvcGVyYXRvciwgbGVmdCwgaTtcblxuICAgICAgICBtYXJrZXIgPSBsb29rYWhlYWQ7XG4gICAgICAgIGxlZnQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBwcmVjID0gYmluYXJ5UHJlY2VkZW5jZSh0b2tlbiwgc3RhdGUuYWxsb3dJbik7XG4gICAgICAgIGlmIChwcmVjID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdDtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbi5wcmVjID0gcHJlYztcbiAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgbWFya2VycyA9IFttYXJrZXIsIGxvb2thaGVhZF07XG4gICAgICAgIHJpZ2h0ID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcblxuICAgICAgICBzdGFjayA9IFtsZWZ0LCB0b2tlbiwgcmlnaHRdO1xuXG4gICAgICAgIHdoaWxlICgocHJlYyA9IGJpbmFyeVByZWNlZGVuY2UobG9va2FoZWFkLCBzdGF0ZS5hbGxvd0luKSkgPiAwKSB7XG5cbiAgICAgICAgICAgIC8vIFJlZHVjZTogbWFrZSBhIGJpbmFyeSBleHByZXNzaW9uIGZyb20gdGhlIHRocmVlIHRvcG1vc3QgZW50cmllcy5cbiAgICAgICAgICAgIHdoaWxlICgoc3RhY2subGVuZ3RoID4gMikgJiYgKHByZWMgPD0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMl0ucHJlYykpIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gc3RhY2sucG9wKCkudmFsdWU7XG4gICAgICAgICAgICAgICAgbGVmdCA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICAgICAgbWFya2Vycy5wb3AoKTtcbiAgICAgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJzW21hcmtlcnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBtYXJrZXIpO1xuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goZXhwcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNoaWZ0LlxuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnByZWMgPSBwcmVjO1xuICAgICAgICAgICAgc3RhY2sucHVzaCh0b2tlbik7XG4gICAgICAgICAgICBtYXJrZXJzLnB1c2gobG9va2FoZWFkKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmFsIHJlZHVjZSB0byBjbGVhbi11cCB0aGUgc3RhY2suXG4gICAgICAgIGkgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBleHByID0gc3RhY2tbaV07XG4gICAgICAgIG1hcmtlcnMucG9wKCk7XG4gICAgICAgIHdoaWxlIChpID4gMSkge1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oc3RhY2tbaSAtIDFdLnZhbHVlLCBzdGFja1tpIC0gMl0sIGV4cHIpO1xuICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgbWFya2VyID0gbWFya2Vycy5wb3AoKTtcbiAgICAgICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgbWFya2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuXG4gICAgLy8gMTEuMTIgQ29uZGl0aW9uYWwgT3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgZXhwciwgcHJldmlvdXNBbGxvd0luLCBjb25zZXF1ZW50LCBhbHRlcm5hdGUsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHByID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCc/JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcHJldmlvdXNBbGxvd0luID0gc3RhdGUuYWxsb3dJbjtcbiAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuICAgICAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG4gICAgICAgICAgICBleHBlY3QoJzonKTtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcblxuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihleHByLCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpO1xuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjEzIEFzc2lnbm1lbnQgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgdG9rZW4sIGxlZnQsIHJpZ2h0LCBub2RlLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIG5vZGUgPSBsZWZ0ID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2hBc3NpZ24oKSkge1xuICAgICAgICAgICAgLy8gTGVmdEhhbmRTaWRlRXhwcmVzc2lvblxuICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShsZWZ0KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIDExLjEzLjFcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbGVmdC50eXBlID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGxlZnQubmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdExIU0Fzc2lnbm1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBub2RlID0gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgbGVmdCwgcmlnaHQpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIC8vIDExLjE0IENvbW1hIE9wZXJhdG9yXG5cbiAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByLCBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24oWyBleHByIF0pO1xuXG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCcsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgIGV4cHIuZXhwcmVzc2lvbnMucHVzaChwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTIuMSBCbG9ja1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRMaXN0KCkge1xuICAgICAgICB2YXIgbGlzdCA9IFtdLFxuICAgICAgICAgICAgc3RhdGVtZW50O1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaXN0LnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKSB7XG4gICAgICAgIHZhciBibG9jaywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICBibG9jayA9IHBhcnNlU3RhdGVtZW50TGlzdCgpO1xuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUJsb2NrU3RhdGVtZW50KGJsb2NrKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTIuMiBWYXJpYWJsZSBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcblxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oa2luZCkge1xuICAgICAgICB2YXIgaW5pdCA9IG51bGwsIGlkLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICAvLyAxMi4yLjFcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGlkLm5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdFZhck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtpbmQgPT09ICdjb25zdCcpIHtcbiAgICAgICAgICAgIGV4cGVjdCgnPScpO1xuICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnPScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQpIHtcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBsaXN0LnB1c2gocGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gbGlzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgZGVjbGFyYXRpb25zO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3ZhcicpO1xuXG4gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCAndmFyJyk7XG4gICAgfVxuXG4gICAgLy8ga2luZCBtYXkgYmUgYGNvbnN0YCBvciBgbGV0YFxuICAgIC8vIEJvdGggYXJlIGV4cGVyaW1lbnRhbCBhbmQgbm90IGluIHRoZSBzcGVjaWZpY2F0aW9uIHlldC5cbiAgICAvLyBzZWUgaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTpjb25zdFxuICAgIC8vIGFuZCBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmxldFxuICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbihraW5kKSB7XG4gICAgICAgIHZhciBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKGtpbmQpO1xuXG4gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qoa2luZCk7XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTIuMyBFbXB0eSBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSB7XG4gICAgICAgIGV4cGVjdCgnOycpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRW1wdHlTdGF0ZW1lbnQoKTtcbiAgICB9XG5cbiAgICAvLyAxMi40IEV4cHJlc3Npb24gU3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcik7XG4gICAgfVxuXG4gICAgLy8gMTIuNSBJZiBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGU7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnaWYnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZWxzZScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbHRlcm5hdGUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUlmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7XG4gICAgfVxuXG4gICAgLy8gMTIuNiBJdGVyYXRpb24gU3RhdGVtZW50c1xuXG4gICAgZnVuY3Rpb24gcGFyc2VEb1doaWxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgYm9keSwgdGVzdCwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZG8nKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBpZiAobWF0Y2goJzsnKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChib2R5LCB0ZXN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVdoaWxlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgdGVzdCwgYm9keSwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnd2hpbGUnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjtcbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuXG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVdoaWxlU3RhdGVtZW50KHRlc3QsIGJvZHkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRm9yVmFyaWFibGVEZWNsYXJhdGlvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCB0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRm9yU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgaW5pdCwgdGVzdCwgdXBkYXRlLCBsZWZ0LCByaWdodCwgYm9keSwgb2xkSW5JdGVyYXRpb247XG5cbiAgICAgICAgaW5pdCA9IHRlc3QgPSB1cGRhdGUgPSBudWxsO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2ZvcicpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGlmIChtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ3ZhcicpIHx8IG1hdGNoS2V5d29yZCgnbGV0JykpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaW5pdCA9IHBhcnNlRm9yVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGluaXQuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBtYXRjaEtleXdvcmQoJ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0O1xuICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpbml0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdpbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExlZnRIYW5kU2lkZUV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShpbml0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JJbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGV4cGVjdCgnOycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuXG4gICAgICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHBlY3QoJzsnKTtcblxuICAgICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICByZXR1cm4gKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykgP1xuICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNyZWF0ZUZvclN0YXRlbWVudChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpIDpcbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5jcmVhdGVGb3JJblN0YXRlbWVudChsZWZ0LCByaWdodCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gMTIuNyBUaGUgY29udGludWUgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBrZXk7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnY29udGludWUnKTtcblxuICAgICAgICAvLyBPcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gZm9ybTogJ2NvbnRpbnVlOycuXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0IpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBpZiAoIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICBpZiAoIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsYWJlbCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgaWYgKGxhYmVsID09PSBudWxsICYmICFzdGF0ZS5pbkl0ZXJhdGlvbikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gMTIuOCBUaGUgYnJlYWsgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUJyZWFrU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBrZXk7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnYnJlYWsnKTtcblxuICAgICAgICAvLyBDYXRjaCB0aGUgdmVyeSBjb21tb24gY2FzZSBmaXJzdDogaW1tZWRpYXRlbHkgYSBzZW1pY29sb24gKFUrMDAzQikuXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0IpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBpZiAoIShzdGF0ZS5pbkl0ZXJhdGlvbiB8fCBzdGF0ZS5pblN3aXRjaCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIGlmICghKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikge1xuICAgICAgICAgICAgbGFiZWwgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBsYWJlbC5uYW1lO1xuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdGUubGFiZWxTZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Vbmtub3duTGFiZWwsIGxhYmVsLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIGlmIChsYWJlbCA9PT0gbnVsbCAmJiAhKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChsYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gMTIuOSBUaGUgcmV0dXJuIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBhcmd1bWVudCA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgncmV0dXJuJyk7XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5pbkZ1bmN0aW9uQm9keSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbGxlZ2FsUmV0dXJuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdyZXR1cm4nIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYW5kIGFuIGlkZW50aWZpZXIgaXMgdmVyeSBjb21tb24uXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4MjApIHtcbiAgICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBpZiAoIW1hdGNoKCd9JykgJiYgbG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVudCk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTAgVGhlIHdpdGggc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZVdpdGhTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBvYmplY3QsIGJvZHk7XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgLy8gVE9ETyhpa2FyaWVuYXRvcik6IFNob3VsZCB3ZSB1cGRhdGUgdGhlIHRlc3QgY2FzZXMgaW5zdGVhZD9cbiAgICAgICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdE1vZGVXaXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3dpdGgnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBvYmplY3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkpO1xuICAgIH1cblxuICAgIC8vIDEyLjEwIFRoZSBzd2l0aCBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpIHtcbiAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQgPSBbXSwgc3RhdGVtZW50LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICB0ZXN0ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2Nhc2UnKTtcbiAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuICAgICAgICBleHBlY3QoJzonKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnfScpIHx8IG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpIHx8IG1hdGNoS2V5d29yZCgnY2FzZScpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgY29uc2VxdWVudC5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hDYXNlKHRlc3QsIGNvbnNlcXVlbnQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGRpc2NyaW1pbmFudCwgY2FzZXMsIGNsYXVzZSwgb2xkSW5Td2l0Y2gsIGRlZmF1bHRGb3VuZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBkaXNjcmltaW5hbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICBjYXNlcyA9IFtdO1xuXG4gICAgICAgIGlmIChtYXRjaCgnfScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRJblN3aXRjaCA9IHN0YXRlLmluU3dpdGNoO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IHRydWU7XG4gICAgICAgIGRlZmF1bHRGb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsYXVzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKGNsYXVzZS50ZXN0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5NdWx0aXBsZURlZmF1bHRzSW5Td2l0Y2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZXMucHVzaChjbGF1c2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuaW5Td2l0Y2ggPSBvbGRJblN3aXRjaDtcblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlU3dpdGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpO1xuICAgIH1cblxuICAgIC8vIDEyLjEzIFRoZSB0aHJvdyBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlVGhyb3dTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBhcmd1bWVudDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd0aHJvdycpO1xuXG4gICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTmV3bGluZUFmdGVyVGhyb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVRocm93U3RhdGVtZW50KGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICAvLyAxMi4xNCBUaGUgdHJ5IHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VDYXRjaENsYXVzZSgpIHtcbiAgICAgICAgdmFyIHBhcmFtLCBib2R5LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2NhdGNoJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcbiAgICAgICAgLy8gMTIuMTQuMVxuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQocGFyYW0ubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0Q2F0Y2hWYXJpYWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgYm9keSA9IHBhcnNlQmxvY2soKTtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQ2F0Y2hDbGF1c2UocGFyYW0sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVRyeVN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGJsb2NrLCBoYW5kbGVycyA9IFtdLCBmaW5hbGl6ZXIgPSBudWxsO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3RyeScpO1xuXG4gICAgICAgIGJsb2NrID0gcGFyc2VCbG9jaygpO1xuXG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2NhdGNoJykpIHtcbiAgICAgICAgICAgIGhhbmRsZXJzLnB1c2gocGFyc2VDYXRjaENsYXVzZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2ZpbmFsbHknKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICBmaW5hbGl6ZXIgPSBwYXJzZUJsb2NrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFuZGxlcnMubGVuZ3RoID09PSAwICYmICFmaW5hbGl6ZXIpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk5vQ2F0Y2hPckZpbmFsbHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVRyeVN0YXRlbWVudChibG9jaywgW10sIGhhbmRsZXJzLCBmaW5hbGl6ZXIpO1xuICAgIH1cblxuICAgIC8vIDEyLjE1IFRoZSBkZWJ1Z2dlciBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSB7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2RlYnVnZ2VyJyk7XG5cbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVEZWJ1Z2dlclN0YXRlbWVudCgpO1xuICAgIH1cblxuICAgIC8vIDEyIFN0YXRlbWVudHNcblxuICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgdHlwZSA9IGxvb2thaGVhZC50eXBlLFxuICAgICAgICAgICAgZXhwcixcbiAgICAgICAgICAgIGxhYmVsZWRCb2R5LFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgc3RhcnRUb2tlbjtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC52YWx1ZSA9PT0gJ3snKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJzsnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICcoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdicmVhayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VCcmVha1N0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRpbnVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUNvbnRpbnVlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZGVidWdnZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdkbyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VEb1doaWxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZm9yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZvclN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdpZic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VJZlN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3JldHVybic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdzd2l0Y2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlU3dpdGNoU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAndGhyb3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVGhyb3dTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd0cnknOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVHJ5U3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAndmFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnd2hpbGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd3aXRoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVdpdGhTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIC8vIDEyLjEyIExhYmVsbGVkIFN0YXRlbWVudHNcbiAgICAgICAgaWYgKChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSAmJiBtYXRjaCgnOicpKSB7XG4gICAgICAgICAgICBsZXgoKTtcblxuICAgICAgICAgICAga2V5ID0gJyQnICsgZXhwci5uYW1lO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlJlZGVjbGFyYXRpb24sICdMYWJlbCcsIGV4cHIubmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXRlLmxhYmVsU2V0W2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgbGFiZWxlZEJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmxhYmVsU2V0W2tleV07XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVMYWJlbGVkU3RhdGVtZW50KGV4cHIsIGxhYmVsZWRCb2R5KSwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTMgRnVuY3Rpb24gRGVmaW5pdGlvblxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCkge1xuICAgICAgICB2YXIgc291cmNlRWxlbWVudCwgc291cmNlRWxlbWVudHMgPSBbXSwgdG9rZW4sIGRpcmVjdGl2ZSwgZmlyc3RSZXN0cmljdGVkLFxuICAgICAgICAgICAgb2xkTGFiZWxTZXQsIG9sZEluSXRlcmF0aW9uLCBvbGRJblN3aXRjaCwgb2xkSW5GdW5jdGlvbkJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0KCd7Jyk7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50cy5wdXNoKHNvdXJjZUVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQuZXhwcmVzc2lvbi50eXBlICE9PSBTeW50YXguTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IGRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlyZWN0aXZlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0ICsgMSwgdG9rZW4uZW5kIC0gMSk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlID09PSAndXNlIHN0cmljdCcpIHtcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGZpcnN0UmVzdHJpY3RlZCwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZmlyc3RSZXN0cmljdGVkICYmIHRva2VuLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9sZExhYmVsU2V0ID0gc3RhdGUubGFiZWxTZXQ7XG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7XG4gICAgICAgIG9sZEluRnVuY3Rpb25Cb2R5ID0gc3RhdGUuaW5GdW5jdGlvbkJvZHk7XG5cbiAgICAgICAgc3RhdGUubGFiZWxTZXQgPSB7fTtcbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBmYWxzZTtcbiAgICAgICAgc3RhdGUuaW5Td2l0Y2ggPSBmYWxzZTtcbiAgICAgICAgc3RhdGUuaW5GdW5jdGlvbkJvZHkgPSB0cnVlO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICBzdGF0ZS5sYWJlbFNldCA9IG9sZExhYmVsU2V0O1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoO1xuICAgICAgICBzdGF0ZS5pbkZ1bmN0aW9uQm9keSA9IG9sZEluRnVuY3Rpb25Cb2R5O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUJsb2NrU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgIHZhciBwYXJhbSwgcGFyYW1zID0gW10sIHRva2VuLCBzdHJpY3RlZCwgcGFyYW1TZXQsIGtleSwgbWVzc2FnZTtcbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICBwYXJhbVNldCA9IHt9O1xuICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgICAgIGtleSA9ICckJyArIHRva2VuLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pO1xuICAgICAgICAgICAgICAgIHBhcmFtU2V0W2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgIHN0cmljdGVkOiBzdHJpY3RlZCxcbiAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZDogZmlyc3RSZXN0cmljdGVkLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpIHtcbiAgICAgICAgdmFyIGlkLCBwYXJhbXMgPSBbXSwgYm9keSwgdG9rZW4sIHN0cmljdGVkLCB0bXAsIGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSwgcHJldmlvdXNTdHJpY3QsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpO1xuICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRtcCA9IHBhcnNlUGFyYW1zKGZpcnN0UmVzdHJpY3RlZCk7XG4gICAgICAgIHBhcmFtcyA9IHRtcC5wYXJhbXM7XG4gICAgICAgIHN0cmljdGVkID0gdG1wLnN0cmljdGVkO1xuICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0bXAuZmlyc3RSZXN0cmljdGVkO1xuICAgICAgICBpZiAodG1wLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB0bXAubWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0O1xuICAgICAgICBib2R5ID0gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCk7XG4gICAgICAgIGlmIChzdHJpY3QgJiYgZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmljdCAmJiBzdHJpY3RlZCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgaWQgPSBudWxsLCBzdHJpY3RlZCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCB0bXAsIHBhcmFtcyA9IFtdLCBib2R5LCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpO1xuXG4gICAgICAgIGlmICghbWF0Y2goJygnKSkge1xuICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTtcbiAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtcztcbiAgICAgICAgc3RyaWN0ZWQgPSB0bXAuc3RyaWN0ZWQ7XG4gICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7XG4gICAgICAgIGlmICh0bXAubWVzc2FnZSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5tZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaWN0ICYmIHN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihpZCwgcGFyYW1zLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIC8vIDE0IFByb2dyYW1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnY29uc3QnOlxuICAgICAgICAgICAgY2FzZSAnbGV0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGxvb2thaGVhZC52YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudHMoKSB7XG4gICAgICAgIHZhciBzb3VyY2VFbGVtZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwgZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0ZWQ7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5TdHJpbmdMaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQgLSAxKTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykge1xuICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3RSZXN0cmljdGVkLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdFJlc3RyaWN0ZWQgJiYgdG9rZW4ub2N0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlUHJvZ3JhbSgpIHtcbiAgICAgICAgdmFyIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc2tpcENvbW1lbnQoKTtcbiAgICAgICAgcGVlaygpO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTb3VyY2VFbGVtZW50cygpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9ncmFtKGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJUb2tlbkxvY2F0aW9uKCkge1xuICAgICAgICB2YXIgaSwgZW50cnksIHRva2VuLCB0b2tlbnMgPSBbXTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEudG9rZW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBlbnRyeSA9IGV4dHJhLnRva2Vuc1tpXTtcbiAgICAgICAgICAgIHRva2VuID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IGVudHJ5LnR5cGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVudHJ5LnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucmFuZ2UgPSBlbnRyeS5yYW5nZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRyYS5sb2MpIHtcbiAgICAgICAgICAgICAgICB0b2tlbi5sb2MgPSBlbnRyeS5sb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBleHRyYS50b2tlbnMgPSB0b2tlbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9rZW5pemUoY29kZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgdG9TdHJpbmcsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIHRva2VucztcblxuICAgICAgICB0b1N0cmluZyA9IFN0cmluZztcbiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAhKGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb2RlID0gdG9TdHJpbmcoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRyZWVEZWxlZ2F0ZTtcbiAgICAgICAgc291cmNlID0gY29kZTtcbiAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICAgICAgICBsaW5lU3RhcnQgPSAwO1xuICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgIGFsbG93SW46IHRydWUsXG4gICAgICAgICAgICBsYWJlbFNldDoge30sXG4gICAgICAgICAgICBpbkZ1bmN0aW9uQm9keTogZmFsc2UsXG4gICAgICAgICAgICBpbkl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsXG4gICAgICAgICAgICBsYXN0Q29tbWVudFN0YXJ0OiAtMVxuICAgICAgICB9O1xuXG4gICAgICAgIGV4dHJhID0ge307XG5cbiAgICAgICAgLy8gT3B0aW9ucyBtYXRjaGluZy5cbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgLy8gT2YgY291cnNlIHdlIGNvbGxlY3QgdG9rZW5zIGhlcmUuXG4gICAgICAgIG9wdGlvbnMudG9rZW5zID0gdHJ1ZTtcbiAgICAgICAgZXh0cmEudG9rZW5zID0gW107XG4gICAgICAgIGV4dHJhLnRva2VuaXplID0gdHJ1ZTtcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gZmllbGRzIGFyZSBuZWNlc3NhcnkgdG8gY29tcHV0ZSB0aGUgUmVnZXggdG9rZW5zLlxuICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IC0xO1xuICAgICAgICBleHRyYS5vcGVuQ3VybHlUb2tlbiA9IC0xO1xuXG4gICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7XG4gICAgICAgIGV4dHJhLmxvYyA9ICh0eXBlb2Ygb3B0aW9ucy5sb2MgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5sb2M7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIGV4dHJhLmNvbW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2xlcmFudCkge1xuICAgICAgICAgICAgZXh0cmEuZXJyb3JzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGVlaygpO1xuICAgICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXh0cmEudG9rZW5zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgd2hpbGUgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGxleEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMucHVzaChsZXhFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGJyZWFrIG9uIHRoZSBmaXJzdCBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGxleEVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0aW9uKCk7XG4gICAgICAgICAgICB0b2tlbnMgPSBleHRyYS50b2tlbnM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRva2Vucy5jb21tZW50cyA9IGV4dHJhLmNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5lcnJvcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLmVycm9ycyA9IGV4dHJhLmVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGV4dHJhID0ge307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZShjb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBwcm9ncmFtLCB0b1N0cmluZztcblxuICAgICAgICB0b1N0cmluZyA9IFN0cmluZztcbiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAhKGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb2RlID0gdG9TdHJpbmcoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRyZWVEZWxlZ2F0ZTtcbiAgICAgICAgc291cmNlID0gY29kZTtcbiAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICAgICAgICBsaW5lU3RhcnQgPSAwO1xuICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICBsb29rYWhlYWQgPSBudWxsO1xuICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICAgIGFsbG93SW46IHRydWUsXG4gICAgICAgICAgICBsYWJlbFNldDoge30sXG4gICAgICAgICAgICBpbkZ1bmN0aW9uQm9keTogZmFsc2UsXG4gICAgICAgICAgICBpbkl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsXG4gICAgICAgICAgICBsYXN0Q29tbWVudFN0YXJ0OiAtMVxuICAgICAgICB9O1xuXG4gICAgICAgIGV4dHJhID0ge307XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7XG4gICAgICAgICAgICBleHRyYS5sb2MgPSAodHlwZW9mIG9wdGlvbnMubG9jID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMubG9jO1xuICAgICAgICAgICAgZXh0cmEuYXR0YWNoQ29tbWVudCA9ICh0eXBlb2Ygb3B0aW9ucy5hdHRhY2hDb21tZW50ID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMuYXR0YWNoQ29tbWVudDtcblxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYyAmJiBvcHRpb25zLnNvdXJjZSAhPT0gbnVsbCAmJiBvcHRpb25zLnNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuc291cmNlID0gdG9TdHJpbmcob3B0aW9ucy5zb3VyY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9rZW5zID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2tlbnMpIHtcbiAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb21tZW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2xlcmFudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMudG9sZXJhbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7XG4gICAgICAgICAgICAgICAgZXh0cmEucmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGV4dHJhLmNvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9ncmFtID0gcGFyc2VQcm9ncmFtKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHByb2dyYW0uY29tbWVudHMgPSBleHRyYS5jb21tZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZpbHRlclRva2VuTG9jYXRpb24oKTtcbiAgICAgICAgICAgICAgICBwcm9ncmFtLnRva2VucyA9IGV4dHJhLnRva2VucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuZXJyb3JzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHByb2dyYW0uZXJyb3JzID0gZXh0cmEuZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9ncmFtO1xuICAgIH1cblxuICAgIC8vIFN5bmMgd2l0aCAqLmpzb24gbWFuaWZlc3RzLlxuICAgIGV4cG9ydHMudmVyc2lvbiA9ICcxLjIuMic7XG5cbiAgICBleHBvcnRzLnRva2VuaXplID0gdG9rZW5pemU7XG5cbiAgICBleHBvcnRzLnBhcnNlID0gcGFyc2U7XG5cbiAgICAvLyBEZWVwIGNvcHkuXG4gICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGV4cG9ydHMuU3ludGF4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5hbWUsIHR5cGVzID0ge307XG5cbiAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKG5hbWUgaW4gU3ludGF4KSB7XG4gICAgICAgICAgICBpZiAoU3ludGF4Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdHlwZXNbbmFtZV0gPSBTeW50YXhbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5mcmVlemUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIE9iamVjdC5mcmVlemUodHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH0oKSk7XG5cbn0pKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG5cbiIsIi8qIHBhcnNlciBnZW5lcmF0ZWQgYnkgamlzb24gMC40LjEzICovXG4vKlxuICBSZXR1cm5zIGEgUGFyc2VyIG9iamVjdCBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcblxuICBQYXJzZXI6IHtcbiAgICB5eToge31cbiAgfVxuXG4gIFBhcnNlci5wcm90b3R5cGU6IHtcbiAgICB5eToge30sXG4gICAgdHJhY2U6IGZ1bmN0aW9uKCksXG4gICAgc3ltYm9sc186IHthc3NvY2lhdGl2ZSBsaXN0OiBuYW1lID09PiBudW1iZXJ9LFxuICAgIHRlcm1pbmFsc186IHthc3NvY2lhdGl2ZSBsaXN0OiBudW1iZXIgPT0+IG5hbWV9LFxuICAgIHByb2R1Y3Rpb25zXzogWy4uLl0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCksXG4gICAgdGFibGU6IFsuLi5dLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7Li4ufSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbihzdHIsIGhhc2gpLFxuICAgIHBhcnNlOiBmdW5jdGlvbihpbnB1dCksXG5cbiAgICBsZXhlcjoge1xuICAgICAgICBFT0Y6IDEsXG4gICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uKHN0ciwgaGFzaCksXG4gICAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCksXG4gICAgICAgIGlucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICB1bnB1dDogZnVuY3Rpb24oc3RyKSxcbiAgICAgICAgbW9yZTogZnVuY3Rpb24oKSxcbiAgICAgICAgbGVzczogZnVuY3Rpb24obiksXG4gICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSxcbiAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSxcbiAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpLFxuICAgICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihyZWdleF9tYXRjaF9hcnJheSwgcnVsZV9pbmRleCksXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIGxleDogZnVuY3Rpb24oKSxcbiAgICAgICAgYmVnaW46IGZ1bmN0aW9uKGNvbmRpdGlvbiksXG4gICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbigpLFxuICAgICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbigpLFxuICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24oKSxcbiAgICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbihjb25kaXRpb24pLFxuXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHJhbmdlczogYm9vbGVhbiAgICAgICAgICAgKG9wdGlvbmFsOiB0cnVlID09PiB0b2tlbiBsb2NhdGlvbiBpbmZvIHdpbGwgaW5jbHVkZSBhIC5yYW5nZVtdIG1lbWJlcilcbiAgICAgICAgICAgIGZsZXg6IGJvb2xlYW4gICAgICAgICAgICAgKG9wdGlvbmFsOiB0cnVlID09PiBmbGV4LWxpa2UgbGV4aW5nIGJlaGF2aW91ciB3aGVyZSB0aGUgcnVsZXMgYXJlIHRlc3RlZCBleGhhdXN0aXZlbHkgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaClcbiAgICAgICAgICAgIGJhY2t0cmFja19sZXhlcjogYm9vbGVhbiAgKG9wdGlvbmFsOiB0cnVlID09PiBsZXhlciByZWdleGVzIGFyZSB0ZXN0ZWQgaW4gb3JkZXIgYW5kIGZvciBlYWNoIG1hdGNoaW5nIHJlZ2V4IHRoZSBhY3Rpb24gY29kZSBpcyBpbnZva2VkOyB0aGUgbGV4ZXIgdGVybWluYXRlcyB0aGUgc2NhbiB3aGVuIGEgdG9rZW4gaXMgcmV0dXJuZWQgYnkgdGhlIGFjdGlvbiBjb2RlKVxuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSxcbiAgICAgICAgcnVsZXM6IFsuLi5dLFxuICAgICAgICBjb25kaXRpb25zOiB7YXNzb2NpYXRpdmUgbGlzdDogbmFtZSA9PT4gc2V0fSxcbiAgICB9XG4gIH1cblxuXG4gIHRva2VuIGxvY2F0aW9uIGluZm8gKEAkLCBfJCwgZXRjLik6IHtcbiAgICBmaXJzdF9saW5lOiBuLFxuICAgIGxhc3RfbGluZTogbixcbiAgICBmaXJzdF9jb2x1bW46IG4sXG4gICAgbGFzdF9jb2x1bW46IG4sXG4gICAgcmFuZ2U6IFtzdGFydF9udW1iZXIsIGVuZF9udW1iZXJdICAgICAgICh3aGVyZSB0aGUgbnVtYmVycyBhcmUgaW5kZXhlcyBpbnRvIHRoZSBpbnB1dCBzdHJpbmcsIHJlZ3VsYXIgemVyby1iYXNlZClcbiAgfVxuXG5cbiAgdGhlIHBhcnNlRXJyb3IgZnVuY3Rpb24gcmVjZWl2ZXMgYSAnaGFzaCcgb2JqZWN0IHdpdGggdGhlc2UgbWVtYmVycyBmb3IgbGV4ZXIgYW5kIHBhcnNlciBlcnJvcnM6IHtcbiAgICB0ZXh0OiAgICAgICAgKG1hdGNoZWQgdGV4dClcbiAgICB0b2tlbjogICAgICAgKHRoZSBwcm9kdWNlZCB0ZXJtaW5hbCB0b2tlbiwgaWYgYW55KVxuICAgIGxpbmU6ICAgICAgICAoeXlsaW5lbm8pXG4gIH1cbiAgd2hpbGUgcGFyc2VyIChncmFtbWFyKSBlcnJvcnMgd2lsbCBhbHNvIHByb3ZpZGUgdGhlc2UgbWVtYmVycywgaS5lLiBwYXJzZXIgZXJyb3JzIGRlbGl2ZXIgYSBzdXBlcnNldCBvZiBhdHRyaWJ1dGVzOiB7XG4gICAgbG9jOiAgICAgICAgICh5eWxsb2MpXG4gICAgZXhwZWN0ZWQ6ICAgIChzdHJpbmcgZGVzY3JpYmluZyB0aGUgc2V0IG9mIGV4cGVjdGVkIHRva2VucylcbiAgICByZWNvdmVyYWJsZTogKGJvb2xlYW46IFRSVUUgd2hlbiB0aGUgcGFyc2VyIGhhcyBhIGVycm9yIHJlY292ZXJ5IHJ1bGUgYXZhaWxhYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgZXJyb3IpXG4gIH1cbiovXG52YXIgcGFyc2VyID0gKGZ1bmN0aW9uKCl7XG52YXIgcGFyc2VyID0ge3RyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHsgfSxcbnl5OiB7fSxcbnN5bWJvbHNfOiB7XCJlcnJvclwiOjIsXCJKU09OX1BBVEhcIjozLFwiRE9MTEFSXCI6NCxcIlBBVEhfQ09NUE9ORU5UU1wiOjUsXCJMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OXCI6NixcIlBBVEhfQ09NUE9ORU5UXCI6NyxcIk1FTUJFUl9DT01QT05FTlRcIjo4LFwiU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjksXCJDSElMRF9NRU1CRVJfQ09NUE9ORU5UXCI6MTAsXCJERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlRcIjoxMSxcIkRPVFwiOjEyLFwiTUVNQkVSX0VYUFJFU1NJT05cIjoxMyxcIkRPVF9ET1RcIjoxNCxcIlNUQVJcIjoxNSxcIklERU5USUZJRVJcIjoxNixcIlNDUklQVF9FWFBSRVNTSU9OXCI6MTcsXCJJTlRFR0VSXCI6MTgsXCJFTkRcIjoxOSxcIkNISUxEX1NVQlNDUklQVF9DT01QT05FTlRcIjoyMCxcIkRFU0NFTkRBTlRfU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjIxLFwiW1wiOjIyLFwiU1VCU0NSSVBUXCI6MjMsXCJdXCI6MjQsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTlwiOjI1LFwiU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVFwiOjI2LFwiU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEVcIjoyNyxcIixcIjoyOCxcIlNUUklOR19MSVRFUkFMXCI6MjksXCJBUlJBWV9TTElDRVwiOjMwLFwiRklMVEVSX0VYUFJFU1NJT05cIjozMSxcIlFRX1NUUklOR1wiOjMyLFwiUV9TVFJJTkdcIjozMyxcIiRhY2NlcHRcIjowLFwiJGVuZFwiOjF9LFxudGVybWluYWxzXzogezI6XCJlcnJvclwiLDQ6XCJET0xMQVJcIiwxMjpcIkRPVFwiLDE0OlwiRE9UX0RPVFwiLDE1OlwiU1RBUlwiLDE2OlwiSURFTlRJRklFUlwiLDE3OlwiU0NSSVBUX0VYUFJFU1NJT05cIiwxODpcIklOVEVHRVJcIiwxOTpcIkVORFwiLDIyOlwiW1wiLDI0OlwiXVwiLDI4OlwiLFwiLDMwOlwiQVJSQVlfU0xJQ0VcIiwzMTpcIkZJTFRFUl9FWFBSRVNTSU9OXCIsMzI6XCJRUV9TVFJJTkdcIiwzMzpcIlFfU1RSSU5HXCJ9LFxucHJvZHVjdGlvbnNfOiBbMCxbMywxXSxbMywyXSxbMywxXSxbMywyXSxbNSwxXSxbNSwyXSxbNywxXSxbNywxXSxbOCwxXSxbOCwxXSxbMTAsMl0sWzYsMV0sWzExLDJdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzksMV0sWzksMV0sWzIwLDNdLFsyMSw0XSxbMjMsMV0sWzIzLDFdLFsyNiwxXSxbMjYsM10sWzI3LDFdLFsyNywxXSxbMjcsMV0sWzI1LDFdLFsyNSwxXSxbMjUsMV0sWzI5LDFdLFsyOSwxXV0sXG5wZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSAvKiBhY3Rpb25bMV0gKi8sICQkIC8qIHZzdGFjayAqLywgXyQgLyogbHN0YWNrICovXG4vKiovKSB7XG4vKiB0aGlzID09IHl5dmFsICovXG5pZiAoIXl5LmFzdCkge1xuICAgIHl5LmFzdCA9IF9hc3Q7XG4gICAgX2FzdC5pbml0aWFsaXplKCk7XG59XG5cbnZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG5zd2l0Y2ggKHl5c3RhdGUpIHtcbmNhc2UgMTp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQkWyQwXSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSAyOnl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJCRbJDAtMV0gfSB9KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpXG5icmVhaztcbmNhc2UgMzp5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSA0Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIsIHNjb3BlOiBcImNoaWxkXCIsIGV4cHJlc3Npb246IHsgdHlwZTogXCJpZGVudGlmaWVyXCIsIHZhbHVlOiAkJFskMC0xXSB9fSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDU6XG5icmVhaztcbmNhc2UgNjpcbmJyZWFrO1xuY2FzZSA3Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIgfSk7IHl5LmFzdC5wdXNoKClcbmJyZWFrO1xuY2FzZSA4Onl5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwic3Vic2NyaXB0XCIgfSk7IHl5LmFzdC5wdXNoKCkgXG5icmVhaztcbmNhc2UgOTp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KVxuYnJlYWs7XG5jYXNlIDEwOnl5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSlcbmJyZWFrO1xuY2FzZSAxMTpcbmJyZWFrO1xuY2FzZSAxMjp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiwgb3BlcmF0aW9uOiBcIm1lbWJlclwiIH0pXG5icmVhaztcbmNhc2UgMTM6XG5icmVhaztcbmNhc2UgMTQ6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNTp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQkWyQwXSB9IH0pXG5icmVhaztcbmNhc2UgMTY6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzY3JpcHRfZXhwcmVzc2lvblwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNzp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJCRbJDBdKSB9IH0pXG5icmVhaztcbmNhc2UgMTg6XG5icmVhaztcbmNhc2UgMTk6eXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSlcbmJyZWFrO1xuY2FzZSAyMDp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiZGVzY2VuZGFudFwiIH0pXG5icmVhaztcbmNhc2UgMjE6XG5icmVhaztcbmNhc2UgMjI6XG5icmVhaztcbmNhc2UgMjM6XG5icmVhaztcbmNhc2UgMjQ6JCRbJDBdLmxlbmd0aCA+IDE/IHl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwidW5pb25cIiwgdmFsdWU6ICQkWyQwXSB9IH0pIDogdGhpcy4kID0gJCRbJDBdXG5icmVhaztcbmNhc2UgMjU6dGhpcy4kID0gWyQkWyQwXV1cbmJyZWFrO1xuY2FzZSAyNjp0aGlzLiQgPSAkJFskMC0yXS5jb25jYXQoJCRbJDBdKVxuYnJlYWs7XG5jYXNlIDI3OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJCRbJDBdKSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDI4OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInN0cmluZ19saXRlcmFsXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAyOTp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzbGljZVwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzA6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwid2lsZGNhcmRcIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDMxOnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMjp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJmaWx0ZXJfZXhwcmVzc2lvblwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzM6dGhpcy4kID0gJCRbJDBdXG5icmVhaztcbmNhc2UgMzQ6dGhpcy4kID0gJCRbJDBdXG5icmVhaztcbn1cbn0sXG50YWJsZTogW3szOjEsNDpbMSwyXSw2OjMsMTM6NCwxNTpbMSw1XSwxNjpbMSw2XSwxNzpbMSw3XSwxODpbMSw4XSwxOTpbMSw5XX0sezE6WzNdfSx7MTpbMiwxXSw1OjEwLDc6MTEsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiwzXSw1OjIxLDc6MTEsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiwxMl0sMTI6WzIsMTJdLDE0OlsyLDEyXSwyMjpbMiwxMl19LHsxOlsyLDE0XSwxMjpbMiwxNF0sMTQ6WzIsMTRdLDIyOlsyLDE0XX0sezE6WzIsMTVdLDEyOlsyLDE1XSwxNDpbMiwxNV0sMjI6WzIsMTVdfSx7MTpbMiwxNl0sMTI6WzIsMTZdLDE0OlsyLDE2XSwyMjpbMiwxNl19LHsxOlsyLDE3XSwxMjpbMiwxN10sMTQ6WzIsMTddLDIyOlsyLDE3XX0sezE6WzIsMThdLDEyOlsyLDE4XSwxNDpbMiwxOF0sMjI6WzIsMThdfSx7MTpbMiwyXSw3OjIyLDg6MTIsOToxMywxMDoxNCwxMToxNSwxMjpbMSwxOF0sMTQ6WzEsMTldLDIwOjE2LDIxOjE3LDIyOlsxLDIwXX0sezE6WzIsNV0sMTI6WzIsNV0sMTQ6WzIsNV0sMjI6WzIsNV19LHsxOlsyLDddLDEyOlsyLDddLDE0OlsyLDddLDIyOlsyLDddfSx7MTpbMiw4XSwxMjpbMiw4XSwxNDpbMiw4XSwyMjpbMiw4XX0sezE6WzIsOV0sMTI6WzIsOV0sMTQ6WzIsOV0sMjI6WzIsOV19LHsxOlsyLDEwXSwxMjpbMiwxMF0sMTQ6WzIsMTBdLDIyOlsyLDEwXX0sezE6WzIsMTldLDEyOlsyLDE5XSwxNDpbMiwxOV0sMjI6WzIsMTldfSx7MTpbMiwyMF0sMTI6WzIsMjBdLDE0OlsyLDIwXSwyMjpbMiwyMF19LHsxMzoyMywxNTpbMSw1XSwxNjpbMSw2XSwxNzpbMSw3XSwxODpbMSw4XSwxOTpbMSw5XX0sezEzOjI0LDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldLDIyOlsxLDI1XX0sezE1OlsxLDI5XSwxNzpbMSwzMF0sMTg6WzEsMzNdLDIzOjI2LDI1OjI3LDI2OjI4LDI3OjMyLDI5OjM0LDMwOlsxLDM1XSwzMTpbMSwzMV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezE6WzIsNF0sNzoyMiw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDZdLDEyOlsyLDZdLDE0OlsyLDZdLDIyOlsyLDZdfSx7MTpbMiwxMV0sMTI6WzIsMTFdLDE0OlsyLDExXSwyMjpbMiwxMV19LHsxOlsyLDEzXSwxMjpbMiwxM10sMTQ6WzIsMTNdLDIyOlsyLDEzXX0sezE1OlsxLDI5XSwxNzpbMSwzMF0sMTg6WzEsMzNdLDIzOjM4LDI1OjI3LDI2OjI4LDI3OjMyLDI5OjM0LDMwOlsxLDM1XSwzMTpbMSwzMV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezI0OlsxLDM5XX0sezI0OlsyLDIzXX0sezI0OlsyLDI0XSwyODpbMSw0MF19LHsyNDpbMiwzMF19LHsyNDpbMiwzMV19LHsyNDpbMiwzMl19LHsyNDpbMiwyNV0sMjg6WzIsMjVdfSx7MjQ6WzIsMjddLDI4OlsyLDI3XX0sezI0OlsyLDI4XSwyODpbMiwyOF19LHsyNDpbMiwyOV0sMjg6WzIsMjldfSx7MjQ6WzIsMzNdLDI4OlsyLDMzXX0sezI0OlsyLDM0XSwyODpbMiwzNF19LHsyNDpbMSw0MV19LHsxOlsyLDIxXSwxMjpbMiwyMV0sMTQ6WzIsMjFdLDIyOlsyLDIxXX0sezE4OlsxLDMzXSwyNzo0MiwyOTozNCwzMDpbMSwzNV0sMzI6WzEsMzZdLDMzOlsxLDM3XX0sezE6WzIsMjJdLDEyOlsyLDIyXSwxNDpbMiwyMl0sMjI6WzIsMjJdfSx7MjQ6WzIsMjZdLDI4OlsyLDI2XX1dLFxuZGVmYXVsdEFjdGlvbnM6IHsyNzpbMiwyM10sMjk6WzIsMzBdLDMwOlsyLDMxXSwzMTpbMiwzMl19LFxucGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgfVxufSxcbnBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gJycsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpO1xuICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5O1xuICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyO1xuICAgIHRoaXMueXkucGFyc2VyID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMubGV4ZXIueXlsbG9jID0ge307XG4gICAgfVxuICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICB2YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7XG4gICAgICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuO1xuICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47XG4gICAgICAgIGxzdGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCBFT0Y7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG4gICAgdmFyIHN5bWJvbCwgcHJlRXJyb3JTeW1ib2wsIHN0YXRlLCBhY3Rpb24sIGEsIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAnJztcbiAgICAgICAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCdcXCcnICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgJ1xcJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAnUGFyc2UgZXJyb3Igb24gbGluZSAnICsgKHl5bGluZW5vICsgMSkgKyAnOlxcbicgKyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgJ1xcbkV4cGVjdGluZyAnICsgZXhwZWN0ZWQuam9pbignLCAnKSArICcsIGdvdCBcXCcnICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAnXFwnJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAnUGFyc2UgZXJyb3Igb24gbGluZSAnICsgKHl5bGluZW5vICsgMSkgKyAnOiBVbmV4cGVjdGVkICcgKyAoc3ltYm9sID09IEVPRiA/ICdlbmQgb2YgaW5wdXQnIDogJ1xcJycgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICdcXCcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxleGVyLm1hdGNoLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLFxuICAgICAgICAgICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAnICsgc3RhdGUgKyAnLCB0b2tlbjogJyArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2godGhpcy5sZXhlci55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHtcbiAgICAgICAgICAgICAgICB5eWxlbmcgPSB0aGlzLmxleGVyLnl5bGVuZztcbiAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDtcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIueXlsaW5lbm87XG4gICAgICAgICAgICAgICAgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmluZy0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gcHJlRXJyb3JTeW1ib2w7XG4gICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgICB0aGlzLnl5LFxuICAgICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufX07XG52YXIgX2FzdCA9IHtcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2RlcyA9IFtdO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgICB0aGlzLl9zdGFzaCA9IFtdO1xuICB9LFxuXG4gIHNldDogZnVuY3Rpb24ocHJvcHMpIHtcbiAgICBmb3IgKHZhciBrIGluIHByb3BzKSB0aGlzLl9ub2RlW2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH0sXG5cbiAgbm9kZTogZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHRoaXMuX25vZGUgPSBvYmo7XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH0sXG5cbiAgcHVzaDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbm9kZXMucHVzaCh0aGlzLl9ub2RlKTtcbiAgICB0aGlzLl9ub2RlID0ge307XG4gIH0sXG5cbiAgdW5zaGlmdDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbm9kZXMudW5zaGlmdCh0aGlzLl9ub2RlKTtcbiAgICB0aGlzLl9ub2RlID0ge307XG4gIH0sXG5cbiAgeWllbGQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBfbm9kZXMgPSB0aGlzLl9ub2RlcztcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICByZXR1cm4gX25vZGVzO1xuICB9XG59O1xuLyogZ2VuZXJhdGVkIGJ5IGppc29uLWxleCAwLjIuMSAqL1xudmFyIGxleGVyID0gKGZ1bmN0aW9uKCl7XG52YXIgbGV4ZXIgPSB7XG5cbkVPRjoxLFxuXG5wYXJzZUVycm9yOmZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuc2V0SW5wdXQ6ZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuaW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICB9LFxuXG4vLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG51bnB1dDpmdW5jdGlvbiAoY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcblxuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbiAtIDEpO1xuICAgICAgICAvL3RoaXMueXlsZW5nIC09IGxlbjtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcblxuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG5cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID9cbiAgICAgICAgICAgICAgICAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKVxuICAgICAgICAgICAgICAgICArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG5tb3JlOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG5yZWplY3Q6ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxubGVzczpmdW5jdGlvbiAobikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnBhc3RJbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyAnLi4uJzonJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICB9LFxuXG4vLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnVwY29taW5nSW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMC1uZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICB9LFxuXG4vLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG5zaG93UG9zaXRpb246ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgIH0sXG5cbi8vIHRlc3QgdGhlIGxleGVkIHRva2VuOiByZXR1cm4gRkFMU0Ugd2hlbiBub3QgYSBtYXRjaCwgb3RoZXJ3aXNlIHJldHVybiB0b2tlblxudGVzdF9tYXRjaDpmdW5jdGlvbiAobWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBsaW5lcyxcbiAgICAgICAgICAgIGJhY2t1cDtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgLy8gc2F2ZSBjb250ZXh0XG4gICAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgIC8vIHJlY292ZXIgY29udGV4dFxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgdGhlIG5leHQgcnVsZSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbi8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG5uZXh0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgIHRlbXBNYXRjaCxcbiAgICAgICAgICAgIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgYSBydWxlIE1JU21hdGNoLlxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5yZWNvZ25pemVkIHRleHQuXFxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxubGV4OmZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuYmVnaW46ZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgIH0sXG5cbi8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG5wb3BTdGF0ZTpmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG5fY3VycmVudFJ1bGVzOmZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxudG9wU3RhdGU6ZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxucHVzaFN0YXRlOmZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgIH0sXG5cbi8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG5zdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgIH0sXG5vcHRpb25zOiB7fSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSx5eV8sJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucyxZWV9TVEFSVFxuLyoqLykge1xuXG52YXIgWVlTVEFURT1ZWV9TVEFSVDtcbnN3aXRjaCgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7XG5jYXNlIDA6cmV0dXJuIDRcbmJyZWFrO1xuY2FzZSAxOnJldHVybiAxNFxuYnJlYWs7XG5jYXNlIDI6cmV0dXJuIDEyXG5icmVhaztcbmNhc2UgMzpyZXR1cm4gMTVcbmJyZWFrO1xuY2FzZSA0OnJldHVybiAxNlxuYnJlYWs7XG5jYXNlIDU6cmV0dXJuIDIyXG5icmVhaztcbmNhc2UgNjpyZXR1cm4gMjRcbmJyZWFrO1xuY2FzZSA3OnJldHVybiAyOFxuYnJlYWs7XG5jYXNlIDg6cmV0dXJuIDMwXG5icmVhaztcbmNhc2UgOTpyZXR1cm4gMThcbmJyZWFrO1xuY2FzZSAxMDp5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSx5eV8ueXlsZW5nLTIpOyByZXR1cm4gMzI7XG5icmVhaztcbmNhc2UgMTE6eXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKDEseXlfLnl5bGVuZy0yKTsgcmV0dXJuIDMzO1xuYnJlYWs7XG5jYXNlIDEyOnJldHVybiAxN1xuYnJlYWs7XG5jYXNlIDEzOnJldHVybiAzMVxuYnJlYWs7XG59XG59LFxucnVsZXM6IFsvXig/OlxcJCkvLC9eKD86XFwuXFwuKS8sL14oPzpcXC4pLywvXig/OlxcKikvLC9eKD86W2EtekEtWl9dK1thLXpBLVowLTlfXSopLywvXig/OlxcWykvLC9eKD86XFxdKS8sL14oPzosKS8sL14oPzooKC0/KD86MHxbMS05XVswLTldKikpKT9cXDooKC0/KD86MHxbMS05XVswLTldKikpKT8oXFw6KCgtPyg/OjB8WzEtOV1bMC05XSopKSk/KT8pLywvXig/OigtPyg/OjB8WzEtOV1bMC05XSopKSkvLC9eKD86XCIoPzpcXFxcW1wiYmZucnQvXFxcXF18XFxcXHVbYS1mQS1GMC05XXs0fXxbXlwiXFxcXF0pKlwiKS8sL14oPzonKD86XFxcXFsnYmZucnQvXFxcXF18XFxcXHVbYS1mQS1GMC05XXs0fXxbXidcXFxcXSkqJykvLC9eKD86XFwoLis/XFwpKD89XFxdKSkvLC9eKD86XFw/XFwoLis/XFwpKD89XFxdKSkvXSxcbmNvbmRpdGlvbnM6IHtcIklOSVRJQUxcIjp7XCJydWxlc1wiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzXSxcImluY2x1c2l2ZVwiOnRydWV9fVxufTtcbnJldHVybiBsZXhlcjtcbn0pKCk7XG5wYXJzZXIubGV4ZXIgPSBsZXhlcjtcbmZ1bmN0aW9uIFBhcnNlciAoKSB7XG4gIHRoaXMueXkgPSB7fTtcbn1cblBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbnJldHVybiBuZXcgUGFyc2VyO1xufSkoKTtcblxuXG5pZiAodHlwZW9mIHJlcXVpcmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuZXhwb3J0cy5wYXJzZXIgPSBwYXJzZXI7XG5leHBvcnRzLlBhcnNlciA9IHBhcnNlci5QYXJzZXI7XG5leHBvcnRzLnBhcnNlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VyLnBhcnNlLmFwcGx5KHBhcnNlciwgYXJndW1lbnRzKTsgfTtcbmV4cG9ydHMubWFpbiA9IGZ1bmN0aW9uIGNvbW1vbmpzTWFpbihhcmdzKSB7XG4gICAgaWYgKCFhcmdzWzFdKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdVc2FnZTogJythcmdzWzBdKycgRklMRScpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICAgIHZhciBzb3VyY2UgPSByZXF1aXJlKCdmcycpLnJlYWRGaWxlU3luYyhyZXF1aXJlKCdwYXRoJykubm9ybWFsaXplKGFyZ3NbMV0pLCBcInV0ZjhcIik7XG4gICAgcmV0dXJuIGV4cG9ydHMucGFyc2VyLnBhcnNlKHNvdXJjZSk7XG59O1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGV4cG9ydHMubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSkpO1xufVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9pbmRleCcpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlkZW50aWZpZXI6IFwiW2EtekEtWl9dK1thLXpBLVowLTlfXSpcIixcbiAgaW50ZWdlcjogXCItPyg/OjB8WzEtOV1bMC05XSopXCIsXG4gIHFxX3N0cmluZzogXCJcXFwiKD86XFxcXFxcXFxbXFxcImJmbnJ0L1xcXFxcXFxcXXxcXFxcXFxcXHVbYS1mQS1GMC05XXs0fXxbXlxcXCJcXFxcXFxcXF0pKlxcXCJcIixcbiAgcV9zdHJpbmc6IFwiJyg/OlxcXFxcXFxcW1xcJ2JmbnJ0L1xcXFxcXFxcXXxcXFxcXFxcXHVbYS1mQS1GMC05XXs0fXxbXlxcJ1xcXFxcXFxcXSkqJ1wiXG59O1xuIiwidmFyIGRpY3QgPSByZXF1aXJlKCcuL2RpY3QnKTtcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG52YXIgZ3JhbW1hciA9IHtcblxuICAgIGxleDoge1xuXG4gICAgICAgIG1hY3Jvczoge1xuICAgICAgICAgICAgZXNjOiBcIlxcXFxcXFxcXCIsXG4gICAgICAgICAgICBpbnQ6IGRpY3QuaW50ZWdlclxuICAgICAgICB9LFxuXG4gICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICBbXCJcXFxcJFwiLCBcInJldHVybiAnRE9MTEFSJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFwuXFxcXC5cIiwgXCJyZXR1cm4gJ0RPVF9ET1QnXCJdLFxuICAgICAgICAgICAgW1wiXFxcXC5cIiwgXCJyZXR1cm4gJ0RPVCdcIl0sXG4gICAgICAgICAgICBbXCJcXFxcKlwiLCBcInJldHVybiAnU1RBUidcIl0sXG4gICAgICAgICAgICBbZGljdC5pZGVudGlmaWVyLCBcInJldHVybiAnSURFTlRJRklFUidcIl0sXG4gICAgICAgICAgICBbXCJcXFxcW1wiLCBcInJldHVybiAnWydcIl0sXG4gICAgICAgICAgICBbXCJcXFxcXVwiLCBcInJldHVybiAnXSdcIl0sXG4gICAgICAgICAgICBbXCIsXCIsIFwicmV0dXJuICcsJ1wiXSxcbiAgICAgICAgICAgIFtcIih7aW50fSk/XFxcXDooe2ludH0pPyhcXFxcOih7aW50fSk/KT9cIiwgXCJyZXR1cm4gJ0FSUkFZX1NMSUNFJ1wiXSxcbiAgICAgICAgICAgIFtcIntpbnR9XCIsIFwicmV0dXJuICdJTlRFR0VSJ1wiXSxcbiAgICAgICAgICAgIFtkaWN0LnFxX3N0cmluZywgXCJ5eXRleHQgPSB5eXRleHQuc3Vic3RyKDEseXlsZW5nLTIpOyByZXR1cm4gJ1FRX1NUUklORyc7XCJdLFxuICAgICAgICAgICAgW2RpY3QucV9zdHJpbmcsIFwieXl0ZXh0ID0geXl0ZXh0LnN1YnN0cigxLHl5bGVuZy0yKTsgcmV0dXJuICdRX1NUUklORyc7XCJdLFxuICAgICAgICAgICAgW1wiXFxcXCguKz9cXFxcKSg/PVxcXFxdKVwiLCBcInJldHVybiAnU0NSSVBUX0VYUFJFU1NJT04nXCJdLFxuICAgICAgICAgICAgW1wiXFxcXD9cXFxcKC4rP1xcXFwpKD89XFxcXF0pXCIsIFwicmV0dXJuICdGSUxURVJfRVhQUkVTU0lPTidcIl1cbiAgICAgICAgXVxuICAgIH0sXG5cbiAgICBzdGFydDogXCJKU09OX1BBVEhcIixcblxuICAgIGJuZjoge1xuXG4gICAgICAgIEpTT05fUEFUSDogW1xuICAgICAgICAgICAgICAgIFsgJ0RPTExBUicsICAgICAgICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiAkMSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnRE9MTEFSIFBBVEhfQ09NUE9ORU5UUycsICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQxIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OJywgICAgICAgICAgICAgICAgICd5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnTEVBRElOR19DSElMRF9NRU1CRVJfRVhQUkVTU0lPTiBQQVRIX0NPTVBPTkVOVFMnLCAneXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiwgc2NvcGU6IFwiY2hpbGRcIiwgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQxIH19KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpJyBdIF0sXG5cbiAgICAgICAgUEFUSF9DT01QT05FTlRTOiBbXG4gICAgICAgICAgICAgICAgWyAnUEFUSF9DT01QT05FTlQnLCAgICAgICAgICAgICAgICAgJycgXSxcbiAgICAgICAgICAgICAgICBbICdQQVRIX0NPTVBPTkVOVFMgUEFUSF9DT01QT05FTlQnLCAnJyBdIF0sXG5cbiAgICAgICAgUEFUSF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdNRU1CRVJfQ09NUE9ORU5UJywgICAgJ3l5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwibWVtYmVyXCIgfSk7IHl5LmFzdC5wdXNoKCknIF0sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0NPTVBPTkVOVCcsICd5eS5hc3Quc2V0KHsgb3BlcmF0aW9uOiBcInN1YnNjcmlwdFwiIH0pOyB5eS5hc3QucHVzaCgpICcgXSBdLFxuXG4gICAgICAgIE1FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdDSElMRF9NRU1CRVJfQ09NUE9ORU5UJywgICAgICAneXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnREVTQ0VOREFOVF9NRU1CRVJfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSknIF0gXSxcblxuICAgICAgICBDSElMRF9NRU1CRVJfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9UIE1FTUJFUl9FWFBSRVNTSU9OJywgJycgXSBdLFxuXG4gICAgICAgIExFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT046IFtcbiAgICAgICAgICAgICAgICBbICdNRU1CRVJfRVhQUkVTU0lPTicsICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiwgb3BlcmF0aW9uOiBcIm1lbWJlclwiIH0pJyBdIF0sXG5cbiAgICAgICAgREVTQ0VOREFOVF9NRU1CRVJfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9UX0RPVCBNRU1CRVJfRVhQUkVTU0lPTicsICcnIF0gXSxcblxuICAgICAgICBNRU1CRVJfRVhQUkVTU0lPTjogW1xuICAgICAgICAgICAgICAgIFsgJ1NUQVInLCAgICAgICAgICAgICAgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwid2lsZGNhcmRcIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnSURFTlRJRklFUicsICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJpZGVudGlmaWVyXCIsIHZhbHVlOiAkMSB9IH0pJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NDUklQVF9FWFBSRVNTSU9OJywgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnSU5URUdFUicsICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJudW1lcmljX2xpdGVyYWxcIiwgdmFsdWU6IHBhcnNlSW50KCQxKSB9IH0pJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0VORCcsICAgICAgICAgICAgICAgJycgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdDSElMRF9TVUJTQ1JJUFRfQ09NUE9ORU5UJywgICAgICAneXkuYXN0LnNldCh7IHNjb3BlOiBcImNoaWxkXCIgfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnREVTQ0VOREFOVF9TVUJTQ1JJUFRfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSknIF0gXSxcblxuICAgICAgICBDSElMRF9TVUJTQ1JJUFRfQ09NUE9ORU5UOiBbXG4gICAgICAgICAgICAgICAgWyAnWyBTVUJTQ1JJUFQgXScsICcnIF0gXSxcblxuICAgICAgICBERVNDRU5EQU5UX1NVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1RfRE9UIFsgU1VCU0NSSVBUIF0nLCAnJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUOiBbXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT04nLCAnJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1QnLCAnJDEubGVuZ3RoID4gMT8geXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ1bmlvblwiLCB2YWx1ZTogJDEgfSB9KSA6ICQkID0gJDEnIF0gXSxcblxuICAgICAgICBTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUOiBbXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEUnLCAnJCQgPSBbJDFdJ10sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVCAsIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1RBQkxFJywgJyQkID0gJDEuY29uY2F0KCQzKScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1RBQkxFOiBbXG4gICAgICAgICAgICAgICAgWyAnSU5URUdFUicsICAgICAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJudW1lcmljX2xpdGVyYWxcIiwgdmFsdWU6IHBhcnNlSW50KCQxKSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NUUklOR19MSVRFUkFMJywgICAgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic3RyaW5nX2xpdGVyYWxcIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnQVJSQVlfU0xJQ0UnLCAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzbGljZVwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OOiBbXG4gICAgICAgICAgICAgICAgWyAnU1RBUicsICAgICAgICAgICAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSxcbiAgICAgICAgICAgICAgICBbICdTQ1JJUFRfRVhQUkVTU0lPTicsICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0ZJTFRFUl9FWFBSRVNTSU9OJywgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwiZmlsdGVyX2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0gXSxcblxuICAgICAgICBTVFJJTkdfTElURVJBTDogW1xuICAgICAgICAgICAgICAgIFsgJ1FRX1NUUklORycsIFwiJCQgPSAkMVwiIF0sXG4gICAgICAgICAgICAgICAgWyAnUV9TVFJJTkcnLCAgXCIkJCA9ICQxXCIgXSBdXG4gICAgfVxufTtcbmlmIChmcy5yZWFkRmlsZVN5bmMpIHtcbiAgZ3JhbW1hci5tb2R1bGVJbmNsdWRlID0gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZShcIi4uL2luY2x1ZGUvbW9kdWxlLmpzXCIpKTtcbiAgZ3JhbW1hci5hY3Rpb25JbmNsdWRlID0gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZShcIi4uL2luY2x1ZGUvYWN0aW9uLmpzXCIpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncmFtbWFyO1xuIiwidmFyIGFlc3ByaW0gPSByZXF1aXJlKCcuL2Flc3ByaW0nKTtcbnZhciBzbGljZSA9IHJlcXVpcmUoJy4vc2xpY2UnKTtcbnZhciBfZXZhbHVhdGUgPSByZXF1aXJlKCdzdGF0aWMtZXZhbCcpO1xudmFyIF91bmlxID0gcmVxdWlyZSgndW5kZXJzY29yZScpLnVuaXE7XG5cbnZhciBIYW5kbGVycyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMudHJhdmVyc2UgPSB0cmF2ZXJzZXIodHJ1ZSk7XG4gIHRoaXMuZGVzY2VuZCA9IHRyYXZlcnNlcigpO1xufVxuXG5IYW5kbGVycy5wcm90b3R5cGUua2V5cyA9IE9iamVjdC5rZXlzO1xuXG5IYW5kbGVycy5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKGNvbXBvbmVudCkge1xuXG4gIHZhciBrZXkgPSBbIGNvbXBvbmVudC5vcGVyYXRpb24sIGNvbXBvbmVudC5zY29wZSwgY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSBdLmpvaW4oJy0nKTtcbiAgdmFyIG1ldGhvZCA9IHRoaXMuX2Zuc1trZXldO1xuXG4gIGlmICghbWV0aG9kKSB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCByZXNvbHZlIGtleTogXCIgKyBrZXkpO1xuICByZXR1cm4gbWV0aG9kLmJpbmQodGhpcyk7XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbihrZXksIGhhbmRsZXIpIHtcblxuICBpZiAoIWhhbmRsZXIgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImhhbmRsZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgdGhpcy5fZm5zW2tleV0gPSBoYW5kbGVyO1xufTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnMgPSB7XG5cbiAgJ21lbWJlci1jaGlsZC1pZGVudGlmaWVyJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsKSB7XG4gICAgdmFyIGtleSA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlO1xuICAgIHZhciB2YWx1ZSA9IHBhcnRpYWwudmFsdWU7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIGtleSBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIFsgeyB2YWx1ZTogdmFsdWVba2V5XSwgcGF0aDogcGFydGlhbC5wYXRoLmNvbmNhdChrZXkpIH0gXVxuICAgIH1cbiAgfSxcblxuICAnbWVtYmVyLWRlc2NlbmRhbnQtaWRlbnRpZmllcic6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKGtleSwgdmFsdWUsIHJlZikgeyByZXR1cm4ga2V5ID09IHJlZiB9KSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT09IHJlZiB9KSxcblxuICAnbWVtYmVyLWNoaWxkLW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBTdHJpbmcoa2V5KSA9PT0gU3RyaW5nKHJlZikgfSksXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LW51bWVyaWNfbGl0ZXJhbCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKGtleSwgdmFsdWUsIHJlZikgeyByZXR1cm4ga2V5ID09PSByZWYgfSksXG5cbiAgJ21lbWJlci1jaGlsZC13aWxkY2FyZCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC13aWxkY2FyZCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZSB9KSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtd2lsZGNhcmQnOlxuICAgIF90cmF2ZXJzZShmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC13aWxkY2FyZCc6XG4gICAgX2Rlc2NlbmQoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtc2xpY2UnOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICBpZiAoaXNfYXJyYXkocGFydGlhbC52YWx1ZSkpIHtcbiAgICAgIHZhciBhcmdzID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc3BsaXQoJzonKS5tYXAoX3BhcnNlX251bGxhYmxlX2ludCk7XG4gICAgICB2YXIgdmFsdWVzID0gcGFydGlhbC52YWx1ZS5tYXAoZnVuY3Rpb24odiwgaSkgeyByZXR1cm4geyB2YWx1ZTogdiwgcGF0aDogcGFydGlhbC5wYXRoLmNvbmNhdChpKSB9IH0pO1xuICAgICAgcmV0dXJuIHNsaWNlLmFwcGx5KG51bGwsIFt2YWx1ZXNdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtdW5pb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50KSB7XG4gICAgICB2YXIgX2NvbXBvbmVudCA9IHsgb3BlcmF0aW9uOiAnc3Vic2NyaXB0Jywgc2NvcGU6ICdjaGlsZCcsIGV4cHJlc3Npb246IGNvbXBvbmVudC5leHByZXNzaW9uIH07XG4gICAgICB2YXIgaGFuZGxlciA9IHRoaXMucmVzb2x2ZShfY29tcG9uZW50KTtcbiAgICAgIHZhciBfcmVzdWx0cyA9IGhhbmRsZXIoX2NvbXBvbmVudCwgcGFydGlhbCk7XG4gICAgICBpZiAoX3Jlc3VsdHMpIHtcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KF9yZXN1bHRzKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcblxuICAgIHJldHVybiB1bmlxdWUocmVzdWx0cyk7XG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LXVuaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgdmFyIGpwID0gcmVxdWlyZSgnLi4nKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIHZhciBub2RlcyA9IGpwLm5vZGVzKHBhcnRpYWwsICckLi4qJykuc2xpY2UoMSk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgcmV0dXJuO1xuICAgICAgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB7IG9wZXJhdGlvbjogJ3N1YnNjcmlwdCcsIHNjb3BlOiAnY2hpbGQnLCBleHByZXNzaW9uOiBjb21wb25lbnQuZXhwcmVzc2lvbiB9O1xuICAgICAgICB2YXIgaGFuZGxlciA9IHNlbGYucmVzb2x2ZShfY29tcG9uZW50KTtcbiAgICAgICAgdmFyIF9yZXN1bHRzID0gaGFuZGxlcihfY29tcG9uZW50LCBub2RlKTtcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KF9yZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVuaXF1ZShyZXN1bHRzKTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLWZpbHRlcl9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgLy8gc2xpY2Ugb3V0IHRoZSBleHByZXNzaW9uIGZyb20gPyhleHByZXNzaW9uKVxuICAgIHZhciBzcmMgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgyLCAtMSk7XG4gICAgdmFyIGFzdCA9IGFlc3ByaW0ucGFyc2Uoc3JjKS5ib2R5WzBdLmV4cHJlc3Npb247XG5cbiAgICB2YXIgcGFzc2FibGUgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gZXZhbHVhdGUoYXN0LCB7ICdAJzogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChwYXJ0aWFsLCBudWxsLCBwYXNzYWJsZSwgY291bnQpO1xuXG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1kZXNjZW5kYW50LWZpbHRlcl9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuXG4gICAgLy8gc2xpY2Ugb3V0IHRoZSBleHByZXNzaW9uIGZyb20gPyhleHByZXNzaW9uKVxuICAgIHZhciBzcmMgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgyLCAtMSk7XG4gICAgdmFyIGFzdCA9IGFlc3ByaW0ucGFyc2Uoc3JjKS5ib2R5WzBdLmV4cHJlc3Npb247XG5cbiAgICB2YXIgcGFzc2FibGUgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gZXZhbHVhdGUoYXN0LCB7ICdAJzogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJhdmVyc2UocGFydGlhbCwgbnVsbCwgcGFzc2FibGUsIGNvdW50KTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLXNjcmlwdF9leHByZXNzaW9uJzogZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsKSB7XG4gICAgdmFyIGV4cCA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICByZXR1cm4gZXZhbF9yZWN1cnNlKHBhcnRpYWwsIGV4cCwgJyRbe3t2YWx1ZX19XScpO1xuICB9LFxuXG4gICdtZW1iZXItY2hpbGQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJC57e3ZhbHVlfX0nKTtcbiAgfSxcblxuICAnbWVtYmVyLWRlc2NlbmRhbnQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJC4udmFsdWUnKTtcbiAgfVxufTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ3N1YnNjcmlwdC1jaGlsZC1zdHJpbmdfbGl0ZXJhbCddID1cblx0SGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1jaGlsZC1pZGVudGlmaWVyJ107XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5fZm5zWydtZW1iZXItZGVzY2VuZGFudC1udW1lcmljX2xpdGVyYWwnXSA9XG4gICAgSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ3N1YnNjcmlwdC1kZXNjZW5kYW50LXN0cmluZ19saXRlcmFsJ10gPVxuICAgIEhhbmRsZXJzLnByb3RvdHlwZS5fZm5zWydtZW1iZXItZGVzY2VuZGFudC1pZGVudGlmaWVyJ107XG5cbmZ1bmN0aW9uIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBzcmMsIHRlbXBsYXRlKSB7XG5cbiAgdmFyIGpwID0gcmVxdWlyZSgnLi9pbmRleCcpO1xuICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcbiAgdmFyIHZhbHVlID0gZXZhbHVhdGUoYXN0LCB7ICdAJzogcGFydGlhbC52YWx1ZSB9KTtcbiAgdmFyIHBhdGggPSB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHtcXHtcXHMqdmFsdWVcXHMqXFx9XFx9L2csIHZhbHVlKTtcblxuICB2YXIgcmVzdWx0cyA9IGpwLm5vZGVzKHBhcnRpYWwudmFsdWUsIHBhdGgpO1xuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24ocikge1xuICAgIHIucGF0aCA9IHBhcnRpYWwucGF0aC5jb25jYXQoci5wYXRoLnNsaWNlKDEpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGlzX2FycmF5KHZhbCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xufVxuXG5mdW5jdGlvbiBpc19vYmplY3QodmFsKSB7XG4gIC8vIGlzIHRoaXMgYSBub24tYXJyYXksIG5vbi1udWxsIG9iamVjdD9cbiAgcmV0dXJuIHZhbCAmJiAhKHZhbCBpbnN0YW5jZW9mIEFycmF5KSAmJiB2YWwgaW5zdGFuY2VvZiBPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYXZlcnNlcihyZWN1cnNlKSB7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHBhcnRpYWwsIHJlZiwgcGFzc2FibGUsIGNvdW50KSB7XG5cbiAgICB2YXIgdmFsdWUgPSBwYXJ0aWFsLnZhbHVlO1xuICAgIHZhciBwYXRoID0gcGFydGlhbC5wYXRoO1xuXG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICAgIHZhciBkZXNjZW5kID0gZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcblxuICAgICAgaWYgKGlzX2FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4KSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSB7IHJldHVybiB9XG4gICAgICAgICAgaWYgKHBhc3NhYmxlKGluZGV4LCBlbGVtZW50LCByZWYpKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2goeyBwYXRoOiBwYXRoLmNvbmNhdChpbmRleCksIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocmVjdXJzZSkge1xuICAgICAgICAgICAgZGVzY2VuZChlbGVtZW50LCBwYXRoLmNvbmNhdChpbmRleCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzX29iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocGFzc2FibGUoaywgdmFsdWVba10sIHJlZikpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7IHBhdGg6IHBhdGguY29uY2F0KGspLCB2YWx1ZTogdmFsdWVba10gfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgICAgICBkZXNjZW5kKHZhbHVlW2tdLCBwYXRoLmNvbmNhdChrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LmJpbmQodGhpcyk7XG4gICAgZGVzY2VuZCh2YWx1ZSwgcGF0aCk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2Rlc2NlbmQocGFzc2FibGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCwgY291bnQpIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKHBhcnRpYWwsIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLCBwYXNzYWJsZSwgY291bnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShwYXNzYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuICAgIHJldHVybiB0aGlzLnRyYXZlcnNlKHBhcnRpYWwsIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLCBwYXNzYWJsZSwgY291bnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2YWx1YXRlKCkge1xuICB0cnkgeyByZXR1cm4gX2V2YWx1YXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICBjYXRjaCAoZSkgeyB9XG59XG5cbmZ1bmN0aW9uIHVuaXF1ZShyZXN1bHRzKSB7XG4gIHJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVybiBkIH0pXG4gIHJldHVybiBfdW5pcShcbiAgICByZXN1bHRzLFxuICAgIGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIucGF0aC5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gU3RyaW5nKGMpLnJlcGxhY2UoJy0nLCAnLS0nKSB9KS5qb2luKCctJykgfVxuICApO1xufVxuXG5mdW5jdGlvbiBfcGFyc2VfbnVsbGFibGVfaW50KHZhbCkge1xuICB2YXIgc3ZhbCA9IFN0cmluZyh2YWwpO1xuICByZXR1cm4gc3ZhbC5tYXRjaCgvXi0/WzAtOV0rJC8pID8gcGFyc2VJbnQoc3ZhbCkgOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhbmRsZXJzO1xuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xudmFyIGRpY3QgPSByZXF1aXJlKCcuL2RpY3QnKTtcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpO1xudmFyIEhhbmRsZXJzID0gcmVxdWlyZSgnLi9oYW5kbGVycycpO1xuXG52YXIgSlNPTlBhdGggPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnBhcnNlciA9IG5ldyBQYXJzZXIoKTtcbiAgdGhpcy5oYW5kbGVycyA9IG5ldyBIYW5kbGVycygpO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGFzc2VydC5vayhfaXNfc3RyaW5nKHN0cmluZyksIFwid2UgbmVlZCBhIHBhdGhcIik7XG4gIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShzdHJpbmcpO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nKSB7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBub2RlID0gdGhpcy5ub2RlcyhvYmosIHN0cmluZylbMF07XG4gIHZhciBrZXkgPSBub2RlLnBhdGgucG9wKCk7IC8qIGpzaGludCB1bnVzZWQ6ZmFsc2UgKi9cbiAgcmV0dXJuIHRoaXMudmFsdWUob2JqLCBub2RlLnBhdGgpO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgZm4pIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG4gIGFzc2VydC5lcXVhbCh0eXBlb2YgZm4sIFwiZnVuY3Rpb25cIiwgXCJmbiBuZWVkcyB0byBiZSBmdW5jdGlvblwiKVxuXG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcpLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIC8vIHNvcnQgbm9kZXMgc28gd2UgYXBwbHkgZnJvbSB0aGUgYm90dG9tIHVwXG4gICAgcmV0dXJuIGIucGF0aC5sZW5ndGggLSBhLnBhdGgubGVuZ3RoO1xuICB9KTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIga2V5ID0gbm9kZS5wYXRoLnBvcCgpO1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnZhbHVlKG9iaiwgdGhpcy5zdHJpbmdpZnkobm9kZS5wYXRoKSk7XG4gICAgdmFyIHZhbCA9IG5vZGUudmFsdWUgPSBmbi5jYWxsKG9iaiwgcGFyZW50W2tleV0pO1xuICAgIHBhcmVudFtrZXldID0gdmFsO1xuICB9LCB0aGlzKTtcblxuICByZXR1cm4gbm9kZXM7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKG9iaiwgcGF0aCwgdmFsdWUpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMubm9kZXMob2JqLCBwYXRoKS5zaGlmdCgpO1xuICAgIGlmICghbm9kZSkgcmV0dXJuIHRoaXMuX3ZpdmlmeShvYmosIHBhdGgsIHZhbHVlKTtcbiAgICB2YXIga2V5ID0gbm9kZS5wYXRoLnNsaWNlKC0xKS5zaGlmdCgpO1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudChvYmosIHRoaXMuc3RyaW5naWZ5KG5vZGUucGF0aCkpO1xuICAgIHBhcmVudFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXMucXVlcnkob2JqLCB0aGlzLnN0cmluZ2lmeShwYXRoKSwgMSkuc2hpZnQoKTtcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLl92aXZpZnkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgdmFsdWUpIHtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBwYXRoID0gdGhpcy5wYXJzZXIucGFyc2Uoc3RyaW5nKVxuICAgIC5tYXAoZnVuY3Rpb24oY29tcG9uZW50KSB7IHJldHVybiBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZSB9KTtcblxuICB2YXIgc2V0VmFsdWUgPSBmdW5jdGlvbihwYXRoLCB2YWx1ZSkge1xuICAgIHZhciBrZXkgPSBwYXRoLnBvcCgpO1xuICAgIHZhciBub2RlID0gc2VsZi52YWx1ZShvYmosIHBhdGgpO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgc2V0VmFsdWUocGF0aC5jb25jYXQoKSwgdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyB7fSA6IFtdKTtcbiAgICAgIG5vZGUgPSBzZWxmLnZhbHVlKG9iaiwgcGF0aCk7XG4gICAgfVxuICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICB9XG4gIHNldFZhbHVlKHBhdGgsIHZhbHVlKTtcbiAgcmV0dXJuIHRoaXMucXVlcnkob2JqLCBzdHJpbmcpWzBdO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihvYmosIHN0cmluZywgY291bnQpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhfaXNfc3RyaW5nKHN0cmluZyksIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHJlc3VsdHMgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nLCBjb3VudClcbiAgICAubWFwKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIudmFsdWUgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGF0aHMgPSBmdW5jdGlvbihvYmosIHN0cmluZywgY291bnQpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHJlc3VsdHMgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nLCBjb3VudClcbiAgICAubWFwKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIucGF0aCB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5ub2RlcyA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICBpZiAoY291bnQgPT09IDApIHJldHVybiBbXTtcblxuICB2YXIgcGF0aCA9IHRoaXMucGFyc2VyLnBhcnNlKHN0cmluZyk7XG4gIHZhciBoYW5kbGVycyA9IHRoaXMuaGFuZGxlcnM7XG5cbiAgdmFyIHBhcnRpYWxzID0gWyB7IHBhdGg6IFsnJCddLCB2YWx1ZTogb2JqIH0gXTtcbiAgdmFyIG1hdGNoZXMgPSBbXTtcblxuICBpZiAocGF0aC5sZW5ndGggJiYgcGF0aFswXS5leHByZXNzaW9uLnR5cGUgPT0gJ3Jvb3QnKSBwYXRoLnNoaWZ0KCk7XG5cbiAgaWYgKCFwYXRoLmxlbmd0aCkgcmV0dXJuIHBhcnRpYWxzO1xuXG4gIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQsIGluZGV4KSB7XG5cbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggPj0gY291bnQpIHJldHVybjtcbiAgICB2YXIgaGFuZGxlciA9IGhhbmRsZXJzLnJlc29sdmUoY29tcG9uZW50KTtcbiAgICB2YXIgX3BhcnRpYWxzID0gW107XG5cbiAgICBwYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcblxuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID49IGNvdW50KSByZXR1cm47XG4gICAgICB2YXIgcmVzdWx0cyA9IGhhbmRsZXIoY29tcG9uZW50LCBwLCBjb3VudCk7XG5cbiAgICAgIGlmIChpbmRleCA9PSBwYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gaWYgd2UncmUgdGhyb3VnaCB0aGUgY29tcG9uZW50cyB3ZSdyZSBkb25lXG4gICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzLmNvbmNhdChyZXN1bHRzIHx8IFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG90aGVyd2lzZSBhY2N1bXVsYXRlIGFuZCBjYXJyeSBvbiB0aHJvdWdoXG4gICAgICAgIF9wYXJ0aWFscyA9IF9wYXJ0aWFscy5jb25jYXQocmVzdWx0cyB8fCBbXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXJ0aWFscyA9IF9wYXJ0aWFscztcblxuICB9KTtcblxuICByZXR1cm4gY291bnQgPyBtYXRjaGVzLnNsaWNlKDAsIGNvdW50KSA6IG1hdGNoZXM7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUuc3RyaW5naWZ5ID0gZnVuY3Rpb24ocGF0aCkge1xuXG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIHZhciBzdHJpbmcgPSAnJCc7XG5cbiAgdmFyIHRlbXBsYXRlcyA9IHtcbiAgICAnZGVzY2VuZGFudC1tZW1iZXInOiAnLi57e3ZhbHVlfX0nLFxuICAgICdjaGlsZC1tZW1iZXInOiAnLnt7dmFsdWV9fScsXG4gICAgJ2Rlc2NlbmRhbnQtc3Vic2NyaXB0JzogJy4uW3t7dmFsdWV9fV0nLFxuICAgICdjaGlsZC1zdWJzY3JpcHQnOiAnW3t7dmFsdWV9fV0nXG4gIH07XG5cbiAgcGF0aCA9IHRoaXMuX25vcm1hbGl6ZShwYXRoKTtcblxuICBwYXRoLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50KSB7XG5cbiAgICBpZiAoY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSA9PSAncm9vdCcpIHJldHVybjtcblxuICAgIHZhciBrZXkgPSBbY29tcG9uZW50LnNjb3BlLCBjb21wb25lbnQub3BlcmF0aW9uXS5qb2luKCctJyk7XG4gICAgdmFyIHRlbXBsYXRlID0gdGVtcGxhdGVzW2tleV07XG4gICAgdmFyIHZhbHVlO1xuXG4gICAgaWYgKGNvbXBvbmVudC5leHByZXNzaW9uLnR5cGUgPT0gJ3N0cmluZ19saXRlcmFsJykge1xuICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRlbXBsYXRlKSB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCBmaW5kIHRlbXBsYXRlIFwiICsga2V5KTtcblxuICAgIHN0cmluZyArPSB0ZW1wbGF0ZS5yZXBsYWNlKC97e3ZhbHVlfX0vLCB2YWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuXG4gIGFzc2VydC5vayhwYXRoLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PSBcInN0cmluZ1wiKSB7XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGFyc2UocGF0aCk7XG5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhdGgpICYmIHR5cGVvZiBwYXRoWzBdID09IFwic3RyaW5nXCIpIHtcblxuICAgIHZhciBfcGF0aCA9IFsgeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogXCIkXCIgfSB9IF07XG5cbiAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24oY29tcG9uZW50LCBpbmRleCkge1xuXG4gICAgICBpZiAoY29tcG9uZW50ID09ICckJyAmJiBpbmRleCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCA9PSBcInN0cmluZ1wiICYmIGNvbXBvbmVudC5tYXRjaChcIl5cIiArIGRpY3QuaWRlbnRpZmllciArIFwiJFwiKSkge1xuXG4gICAgICAgIF9wYXRoLnB1c2goe1xuICAgICAgICAgIG9wZXJhdGlvbjogJ21lbWJlcicsXG4gICAgICAgICAgc2NvcGU6ICdjaGlsZCcsXG4gICAgICAgICAgZXhwcmVzc2lvbjogeyB2YWx1ZTogY29tcG9uZW50LCB0eXBlOiAnaWRlbnRpZmllcicgfVxuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBjb21wb25lbnQgPT0gXCJudW1iZXJcIiA/XG4gICAgICAgICAgJ251bWVyaWNfbGl0ZXJhbCcgOiAnc3RyaW5nX2xpdGVyYWwnO1xuXG4gICAgICAgIF9wYXRoLnB1c2goe1xuICAgICAgICAgIG9wZXJhdGlvbjogJ3N1YnNjcmlwdCcsXG4gICAgICAgICAgc2NvcGU6ICdjaGlsZCcsXG4gICAgICAgICAgZXhwcmVzc2lvbjogeyB2YWx1ZTogY29tcG9uZW50LCB0eXBlOiB0eXBlIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3BhdGg7XG5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhdGgpICYmIHR5cGVvZiBwYXRoWzBdID09IFwib2JqZWN0XCIpIHtcblxuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZG4ndCB1bmRlcnN0YW5kIHBhdGggXCIgKyBwYXRoKTtcbn1cblxuZnVuY3Rpb24gX2lzX3N0cmluZyhvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0IFN0cmluZ10nO1xufVxuXG5KU09OUGF0aC5IYW5kbGVycyA9IEhhbmRsZXJzO1xuSlNPTlBhdGguUGFyc2VyID0gUGFyc2VyO1xuXG52YXIgaW5zdGFuY2UgPSBuZXcgSlNPTlBhdGg7XG5pbnN0YW5jZS5KU09OUGF0aCA9IEpTT05QYXRoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbmNlO1xuIiwidmFyIGdyYW1tYXIgPSByZXF1aXJlKCcuL2dyYW1tYXInKTtcbnZhciBncGFyc2VyID0gcmVxdWlyZSgnLi4vZ2VuZXJhdGVkL3BhcnNlcicpO1xuXG52YXIgUGFyc2VyID0gZnVuY3Rpb24oKSB7XG5cbiAgdmFyIHBhcnNlciA9IG5ldyBncGFyc2VyLlBhcnNlcigpO1xuXG4gIHZhciBfcGFyc2VFcnJvciA9IHBhcnNlci5wYXJzZUVycm9yO1xuICBwYXJzZXIueXkucGFyc2VFcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChwYXJzZXIueXkuYXN0KSB7XG4gICAgICBwYXJzZXIueXkuYXN0LmluaXRpYWxpemUoKTtcbiAgICB9XG4gICAgX3BhcnNlRXJyb3IuYXBwbHkocGFyc2VyLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlcjtcblxufTtcblxuUGFyc2VyLmdyYW1tYXIgPSBncmFtbWFyO1xubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgc3RhcnQsIGVuZCwgc3RlcCkge1xuXG4gIGlmICh0eXBlb2Ygc3RhcnQgPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInN0YXJ0IGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcbiAgaWYgKHR5cGVvZiBlbmQgPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcImVuZCBjYW5ub3QgYmUgYSBzdHJpbmdcIik7XG4gIGlmICh0eXBlb2Ygc3RlcCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgYSBzdHJpbmdcIik7XG5cbiAgdmFyIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgaWYgKHN0ZXAgPT09IDApIHRocm93IG5ldyBFcnJvcihcInN0ZXAgY2Fubm90IGJlIHplcm9cIik7XG4gIHN0ZXAgPSBzdGVwID8gaW50ZWdlcihzdGVwKSA6IDE7XG5cbiAgLy8gbm9ybWFsaXplIG5lZ2F0aXZlIHZhbHVlc1xuICBzdGFydCA9IHN0YXJ0IDwgMCA/IGxlbiArIHN0YXJ0IDogc3RhcnQ7XG4gIGVuZCA9IGVuZCA8IDAgPyBsZW4gKyBlbmQgOiBlbmQ7XG5cbiAgLy8gZGVmYXVsdCBleHRlbnRzIHRvIGV4dGVudHNcbiAgc3RhcnQgPSBpbnRlZ2VyKHN0YXJ0ID09PSAwID8gMCA6ICFzdGFydCA/IChzdGVwID4gMCA/IDAgOiBsZW4gLSAxKSA6IHN0YXJ0KTtcbiAgZW5kID0gaW50ZWdlcihlbmQgPT09IDAgPyAwIDogIWVuZCA/IChzdGVwID4gMCA/IGxlbiA6IC0xKSA6IGVuZCk7XG5cbiAgLy8gY2xhbXAgZXh0ZW50c1xuICBzdGFydCA9IHN0ZXAgPiAwID8gTWF0aC5tYXgoMCwgc3RhcnQpIDogTWF0aC5taW4obGVuLCBzdGFydCk7XG4gIGVuZCA9IHN0ZXAgPiAwID8gTWF0aC5taW4oZW5kLCBsZW4pIDogTWF0aC5tYXgoLTEsIGVuZCk7XG5cbiAgLy8gcmV0dXJuIGVtcHR5IGlmIGV4dGVudHMgYXJlIGJhY2t3YXJkc1xuICBpZiAoc3RlcCA+IDAgJiYgZW5kIDw9IHN0YXJ0KSByZXR1cm4gW107XG4gIGlmIChzdGVwIDwgMCAmJiBzdGFydCA8PSBlbmQpIHJldHVybiBbXTtcblxuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpICE9IGVuZDsgaSArPSBzdGVwKSB7XG4gICAgaWYgKChzdGVwIDwgMCAmJiBpIDw9IGVuZCkgfHwgKHN0ZXAgPiAwICYmIGkgPj0gZW5kKSkgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2goYXJyW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGludGVnZXIodmFsKSB7XG4gIHJldHVybiBTdHJpbmcodmFsKS5tYXRjaCgvXlswLTldKyQvKSA/IHBhcnNlSW50KHZhbCkgOlxuICAgIE51bWJlci5pc0Zpbml0ZSh2YWwpID8gcGFyc2VJbnQodmFsLCAxMCkgOiAwO1xufVxuIiwiLyoqXG4gKiBIZWxwZXJzLlxuICovXG5cbnZhciBzID0gMTAwMDtcbnZhciBtID0gcyAqIDYwO1xudmFyIGggPSBtICogNjA7XG52YXIgZCA9IGggKiAyNDtcbnZhciB5ID0gZCAqIDM2NS4yNTtcblxuLyoqXG4gKiBQYXJzZSBvciBmb3JtYXQgdGhlIGdpdmVuIGB2YWxgLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogIC0gYGxvbmdgIHZlcmJvc2UgZm9ybWF0dGluZyBbZmFsc2VdXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEB0aHJvd3Mge0Vycm9yfSB0aHJvdyBhbiBlcnJvciBpZiB2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIG51bWJlclxuICogQHJldHVybiB7U3RyaW5nfE51bWJlcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih2YWwsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbDtcbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnICYmIHZhbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHBhcnNlKHZhbCk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5sb25nID8gZm10TG9uZyh2YWwpIDogZm10U2hvcnQodmFsKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3ZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9JyArXG4gICAgICBKU09OLnN0cmluZ2lmeSh2YWwpXG4gICk7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBgc3RyYCBhbmQgcmV0dXJuIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZShzdHIpIHtcbiAgc3RyID0gU3RyaW5nKHN0cik7XG4gIGlmIChzdHIubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBtYXRjaCA9IC9eKCg/OlxcZCspP1xcLj9cXGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoXG4gICAgc3RyXG4gICk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG4gPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgdmFyIHR5cGUgPSAobWF0Y2hbMl0gfHwgJ21zJykudG9Mb3dlckNhc2UoKTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAneWVhcnMnOlxuICAgIGNhc2UgJ3llYXInOlxuICAgIGNhc2UgJ3lycyc6XG4gICAgY2FzZSAneXInOlxuICAgIGNhc2UgJ3knOlxuICAgICAgcmV0dXJuIG4gKiB5O1xuICAgIGNhc2UgJ2RheXMnOlxuICAgIGNhc2UgJ2RheSc6XG4gICAgY2FzZSAnZCc6XG4gICAgICByZXR1cm4gbiAqIGQ7XG4gICAgY2FzZSAnaG91cnMnOlxuICAgIGNhc2UgJ2hvdXInOlxuICAgIGNhc2UgJ2hycyc6XG4gICAgY2FzZSAnaHInOlxuICAgIGNhc2UgJ2gnOlxuICAgICAgcmV0dXJuIG4gKiBoO1xuICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgY2FzZSAnbWlucyc6XG4gICAgY2FzZSAnbWluJzpcbiAgICBjYXNlICdtJzpcbiAgICAgIHJldHVybiBuICogbTtcbiAgICBjYXNlICdzZWNvbmRzJzpcbiAgICBjYXNlICdzZWNvbmQnOlxuICAgIGNhc2UgJ3NlY3MnOlxuICAgIGNhc2UgJ3NlYyc6XG4gICAgY2FzZSAncyc6XG4gICAgICByZXR1cm4gbiAqIHM7XG4gICAgY2FzZSAnbWlsbGlzZWNvbmRzJzpcbiAgICBjYXNlICdtaWxsaXNlY29uZCc6XG4gICAgY2FzZSAnbXNlY3MnOlxuICAgIGNhc2UgJ21zZWMnOlxuICAgIGNhc2UgJ21zJzpcbiAgICAgIHJldHVybiBuO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogU2hvcnQgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10U2hvcnQobXMpIHtcbiAgaWYgKG1zID49IGQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGQpICsgJ2QnO1xuICB9XG4gIGlmIChtcyA+PSBoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBoKSArICdoJztcbiAgfVxuICBpZiAobXMgPj0gbSkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gbSkgKyAnbSc7XG4gIH1cbiAgaWYgKG1zID49IHMpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIHMpICsgJ3MnO1xuICB9XG4gIHJldHVybiBtcyArICdtcyc7XG59XG5cbi8qKlxuICogTG9uZyBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRMb25nKG1zKSB7XG4gIHJldHVybiBwbHVyYWwobXMsIGQsICdkYXknKSB8fFxuICAgIHBsdXJhbChtcywgaCwgJ2hvdXInKSB8fFxuICAgIHBsdXJhbChtcywgbSwgJ21pbnV0ZScpIHx8XG4gICAgcGx1cmFsKG1zLCBzLCAnc2Vjb25kJykgfHxcbiAgICBtcyArICcgbXMnO1xufVxuXG4vKipcbiAqIFBsdXJhbGl6YXRpb24gaGVscGVyLlxuICovXG5cbmZ1bmN0aW9uIHBsdXJhbChtcywgbiwgbmFtZSkge1xuICBpZiAobXMgPCBuKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChtcyA8IG4gKiAxLjUpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihtcyAvIG4pICsgJyAnICsgbmFtZTtcbiAgfVxuICByZXR1cm4gTWF0aC5jZWlsKG1zIC8gbikgKyAnICcgKyBuYW1lICsgJ3MnO1xufVxuIiwiLyohIE5hdGl2ZSBQcm9taXNlIE9ubHlcbiAgICB2MC44LjEgKGMpIEt5bGUgU2ltcHNvblxuICAgIE1JVCBMaWNlbnNlOiBodHRwOi8vZ2V0aWZ5Lm1pdC1saWNlbnNlLm9yZ1xuKi9cblxuKGZ1bmN0aW9uIFVNRChuYW1lLGNvbnRleHQsZGVmaW5pdGlvbil7XG5cdC8vIHNwZWNpYWwgZm9ybSBvZiBVTUQgZm9yIHBvbHlmaWxsaW5nIGFjcm9zcyBldmlyb25tZW50c1xuXHRjb250ZXh0W25hbWVdID0gY29udGV4dFtuYW1lXSB8fCBkZWZpbml0aW9uKCk7XG5cdGlmICh0eXBlb2YgbW9kdWxlICE9IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHsgbW9kdWxlLmV4cG9ydHMgPSBjb250ZXh0W25hbWVdOyB9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHsgZGVmaW5lKGZ1bmN0aW9uICRBTUQkKCl7IHJldHVybiBjb250ZXh0W25hbWVdOyB9KTsgfVxufSkoXCJQcm9taXNlXCIsdHlwZW9mIGdsb2JhbCAhPSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdGhpcyxmdW5jdGlvbiBERUYoKXtcblx0Lypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIGJ1aWx0SW5Qcm9wLCBjeWNsZSwgc2NoZWR1bGluZ19xdWV1ZSxcblx0XHRUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsXG5cdFx0dGltZXIgPSAodHlwZW9mIHNldEltbWVkaWF0ZSAhPSBcInVuZGVmaW5lZFwiKSA/XG5cdFx0XHRmdW5jdGlvbiB0aW1lcihmbikgeyByZXR1cm4gc2V0SW1tZWRpYXRlKGZuKTsgfSA6XG5cdFx0XHRzZXRUaW1lb3V0XG5cdDtcblxuXHQvLyBkYW1taXQsIElFOC5cblx0dHJ5IHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJ4XCIse30pO1xuXHRcdGJ1aWx0SW5Qcm9wID0gZnVuY3Rpb24gYnVpbHRJblByb3Aob2JqLG5hbWUsdmFsLGNvbmZpZykge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosbmFtZSx7XG5cdFx0XHRcdHZhbHVlOiB2YWwsXG5cdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRjb25maWd1cmFibGU6IGNvbmZpZyAhPT0gZmFsc2Vcblx0XHRcdH0pO1xuXHRcdH07XG5cdH1cblx0Y2F0Y2ggKGVycikge1xuXHRcdGJ1aWx0SW5Qcm9wID0gZnVuY3Rpb24gYnVpbHRJblByb3Aob2JqLG5hbWUsdmFsKSB7XG5cdFx0XHRvYmpbbmFtZV0gPSB2YWw7XG5cdFx0XHRyZXR1cm4gb2JqO1xuXHRcdH07XG5cdH1cblxuXHQvLyBOb3RlOiB1c2luZyBhIHF1ZXVlIGluc3RlYWQgb2YgYXJyYXkgZm9yIGVmZmljaWVuY3lcblx0c2NoZWR1bGluZ19xdWV1ZSA9IChmdW5jdGlvbiBRdWV1ZSgpIHtcblx0XHR2YXIgZmlyc3QsIGxhc3QsIGl0ZW07XG5cblx0XHRmdW5jdGlvbiBJdGVtKGZuLHNlbGYpIHtcblx0XHRcdHRoaXMuZm4gPSBmbjtcblx0XHRcdHRoaXMuc2VsZiA9IHNlbGY7XG5cdFx0XHR0aGlzLm5leHQgPSB2b2lkIDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFkZDogZnVuY3Rpb24gYWRkKGZuLHNlbGYpIHtcblx0XHRcdFx0aXRlbSA9IG5ldyBJdGVtKGZuLHNlbGYpO1xuXHRcdFx0XHRpZiAobGFzdCkge1xuXHRcdFx0XHRcdGxhc3QubmV4dCA9IGl0ZW07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Zmlyc3QgPSBpdGVtO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxhc3QgPSBpdGVtO1xuXHRcdFx0XHRpdGVtID0gdm9pZCAwO1xuXHRcdFx0fSxcblx0XHRcdGRyYWluOiBmdW5jdGlvbiBkcmFpbigpIHtcblx0XHRcdFx0dmFyIGYgPSBmaXJzdDtcblx0XHRcdFx0Zmlyc3QgPSBsYXN0ID0gY3ljbGUgPSB2b2lkIDA7XG5cblx0XHRcdFx0d2hpbGUgKGYpIHtcblx0XHRcdFx0XHRmLmZuLmNhbGwoZi5zZWxmKTtcblx0XHRcdFx0XHRmID0gZi5uZXh0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSkoKTtcblxuXHRmdW5jdGlvbiBzY2hlZHVsZShmbixzZWxmKSB7XG5cdFx0c2NoZWR1bGluZ19xdWV1ZS5hZGQoZm4sc2VsZik7XG5cdFx0aWYgKCFjeWNsZSkge1xuXHRcdFx0Y3ljbGUgPSB0aW1lcihzY2hlZHVsaW5nX3F1ZXVlLmRyYWluKTtcblx0XHR9XG5cdH1cblxuXHQvLyBwcm9taXNlIGR1Y2sgdHlwaW5nXG5cdGZ1bmN0aW9uIGlzVGhlbmFibGUobykge1xuXHRcdHZhciBfdGhlbiwgb190eXBlID0gdHlwZW9mIG87XG5cblx0XHRpZiAobyAhPSBudWxsICYmXG5cdFx0XHQoXG5cdFx0XHRcdG9fdHlwZSA9PSBcIm9iamVjdFwiIHx8IG9fdHlwZSA9PSBcImZ1bmN0aW9uXCJcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdF90aGVuID0gby50aGVuO1xuXHRcdH1cblx0XHRyZXR1cm4gdHlwZW9mIF90aGVuID09IFwiZnVuY3Rpb25cIiA/IF90aGVuIDogZmFsc2U7XG5cdH1cblxuXHRmdW5jdGlvbiBub3RpZnkoKSB7XG5cdFx0Zm9yICh2YXIgaT0wOyBpPHRoaXMuY2hhaW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdG5vdGlmeUlzb2xhdGVkKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHQodGhpcy5zdGF0ZSA9PT0gMSkgPyB0aGlzLmNoYWluW2ldLnN1Y2Nlc3MgOiB0aGlzLmNoYWluW2ldLmZhaWx1cmUsXG5cdFx0XHRcdHRoaXMuY2hhaW5baV1cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHRoaXMuY2hhaW4ubGVuZ3RoID0gMDtcblx0fVxuXG5cdC8vIE5PVEU6IFRoaXMgaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBpc29sYXRlXG5cdC8vIHRoZSBgdHJ5Li5jYXRjaGAgc28gdGhhdCBvdGhlciBjb2RlIGNhbiBiZVxuXHQvLyBvcHRpbWl6ZWQgYmV0dGVyXG5cdGZ1bmN0aW9uIG5vdGlmeUlzb2xhdGVkKHNlbGYsY2IsY2hhaW4pIHtcblx0XHR2YXIgcmV0LCBfdGhlbjtcblx0XHR0cnkge1xuXHRcdFx0aWYgKGNiID09PSBmYWxzZSkge1xuXHRcdFx0XHRjaGFpbi5yZWplY3Qoc2VsZi5tc2cpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmIChjYiA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdHJldCA9IHNlbGYubXNnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHJldCA9IGNiLmNhbGwodm9pZCAwLHNlbGYubXNnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChyZXQgPT09IGNoYWluLnByb21pc2UpIHtcblx0XHRcdFx0XHRjaGFpbi5yZWplY3QoVHlwZUVycm9yKFwiUHJvbWlzZS1jaGFpbiBjeWNsZVwiKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAoX3RoZW4gPSBpc1RoZW5hYmxlKHJldCkpIHtcblx0XHRcdFx0XHRfdGhlbi5jYWxsKHJldCxjaGFpbi5yZXNvbHZlLGNoYWluLnJlamVjdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y2hhaW4ucmVzb2x2ZShyZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNhdGNoIChlcnIpIHtcblx0XHRcdGNoYWluLnJlamVjdChlcnIpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIHJlc29sdmUobXNnKSB7XG5cdFx0dmFyIF90aGVuLCBzZWxmID0gdGhpcztcblxuXHRcdC8vIGFscmVhZHkgdHJpZ2dlcmVkP1xuXHRcdGlmIChzZWxmLnRyaWdnZXJlZCkgeyByZXR1cm47IH1cblxuXHRcdHNlbGYudHJpZ2dlcmVkID0gdHJ1ZTtcblxuXHRcdC8vIHVud3JhcFxuXHRcdGlmIChzZWxmLmRlZikge1xuXHRcdFx0c2VsZiA9IHNlbGYuZGVmO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRpZiAoX3RoZW4gPSBpc1RoZW5hYmxlKG1zZykpIHtcblx0XHRcdFx0c2NoZWR1bGUoZnVuY3Rpb24oKXtcblx0XHRcdFx0XHR2YXIgZGVmX3dyYXBwZXIgPSBuZXcgTWFrZURlZldyYXBwZXIoc2VsZik7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdF90aGVuLmNhbGwobXNnLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAkcmVzb2x2ZSQoKXsgcmVzb2x2ZS5hcHBseShkZWZfd3JhcHBlcixhcmd1bWVudHMpOyB9LFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAkcmVqZWN0JCgpeyByZWplY3QuYXBwbHkoZGVmX3dyYXBwZXIsYXJndW1lbnRzKTsgfVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0cmVqZWN0LmNhbGwoZGVmX3dyYXBwZXIsZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0c2VsZi5tc2cgPSBtc2c7XG5cdFx0XHRcdHNlbGYuc3RhdGUgPSAxO1xuXHRcdFx0XHRpZiAoc2VsZi5jaGFpbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0c2NoZWR1bGUobm90aWZ5LHNlbGYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNhdGNoIChlcnIpIHtcblx0XHRcdHJlamVjdC5jYWxsKG5ldyBNYWtlRGVmV3JhcHBlcihzZWxmKSxlcnIpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIHJlamVjdChtc2cpIHtcblx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0XHQvLyBhbHJlYWR5IHRyaWdnZXJlZD9cblx0XHRpZiAoc2VsZi50cmlnZ2VyZWQpIHsgcmV0dXJuOyB9XG5cblx0XHRzZWxmLnRyaWdnZXJlZCA9IHRydWU7XG5cblx0XHQvLyB1bndyYXBcblx0XHRpZiAoc2VsZi5kZWYpIHtcblx0XHRcdHNlbGYgPSBzZWxmLmRlZjtcblx0XHR9XG5cblx0XHRzZWxmLm1zZyA9IG1zZztcblx0XHRzZWxmLnN0YXRlID0gMjtcblx0XHRpZiAoc2VsZi5jaGFpbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRzY2hlZHVsZShub3RpZnksc2VsZik7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gaXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLGFycixyZXNvbHZlcixyZWplY3Rlcikge1xuXHRcdGZvciAodmFyIGlkeD0wOyBpZHg8YXJyLmxlbmd0aDsgaWR4KyspIHtcblx0XHRcdChmdW5jdGlvbiBJSUZFKGlkeCl7XG5cdFx0XHRcdENvbnN0cnVjdG9yLnJlc29sdmUoYXJyW2lkeF0pXG5cdFx0XHRcdC50aGVuKFxuXHRcdFx0XHRcdGZ1bmN0aW9uICRyZXNvbHZlciQobXNnKXtcblx0XHRcdFx0XHRcdHJlc29sdmVyKGlkeCxtc2cpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cmVqZWN0ZXJcblx0XHRcdFx0KTtcblx0XHRcdH0pKGlkeCk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gTWFrZURlZldyYXBwZXIoc2VsZikge1xuXHRcdHRoaXMuZGVmID0gc2VsZjtcblx0XHR0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuXHR9XG5cblx0ZnVuY3Rpb24gTWFrZURlZihzZWxmKSB7XG5cdFx0dGhpcy5wcm9taXNlID0gc2VsZjtcblx0XHR0aGlzLnN0YXRlID0gMDtcblx0XHR0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuXHRcdHRoaXMuY2hhaW4gPSBbXTtcblx0XHR0aGlzLm1zZyA9IHZvaWQgMDtcblx0fVxuXG5cdGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcblx0XHRpZiAodHlwZW9mIGV4ZWN1dG9yICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX19OUE9fXyAhPT0gMCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgcHJvbWlzZVwiKTtcblx0XHR9XG5cblx0XHQvLyBpbnN0YW5jZSBzaGFkb3dpbmcgdGhlIGluaGVyaXRlZCBcImJyYW5kXCJcblx0XHQvLyB0byBzaWduYWwgYW4gYWxyZWFkeSBcImluaXRpYWxpemVkXCIgcHJvbWlzZVxuXHRcdHRoaXMuX19OUE9fXyA9IDE7XG5cblx0XHR2YXIgZGVmID0gbmV3IE1ha2VEZWYodGhpcyk7XG5cblx0XHR0aGlzW1widGhlblwiXSA9IGZ1bmN0aW9uIHRoZW4oc3VjY2VzcyxmYWlsdXJlKSB7XG5cdFx0XHR2YXIgbyA9IHtcblx0XHRcdFx0c3VjY2VzczogdHlwZW9mIHN1Y2Nlc3MgPT0gXCJmdW5jdGlvblwiID8gc3VjY2VzcyA6IHRydWUsXG5cdFx0XHRcdGZhaWx1cmU6IHR5cGVvZiBmYWlsdXJlID09IFwiZnVuY3Rpb25cIiA/IGZhaWx1cmUgOiBmYWxzZVxuXHRcdFx0fTtcblx0XHRcdC8vIE5vdGU6IGB0aGVuKC4uKWAgaXRzZWxmIGNhbiBiZSBib3Jyb3dlZCB0byBiZSB1c2VkIGFnYWluc3Rcblx0XHRcdC8vIGEgZGlmZmVyZW50IHByb21pc2UgY29uc3RydWN0b3IgZm9yIG1ha2luZyB0aGUgY2hhaW5lZCBwcm9taXNlLFxuXHRcdFx0Ly8gYnkgc3Vic3RpdHV0aW5nIGEgZGlmZmVyZW50IGB0aGlzYCBiaW5kaW5nLlxuXHRcdFx0by5wcm9taXNlID0gbmV3IHRoaXMuY29uc3RydWN0b3IoZnVuY3Rpb24gZXh0cmFjdENoYWluKHJlc29sdmUscmVqZWN0KSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG8ucmVzb2x2ZSA9IHJlc29sdmU7XG5cdFx0XHRcdG8ucmVqZWN0ID0gcmVqZWN0O1xuXHRcdFx0fSk7XG5cdFx0XHRkZWYuY2hhaW4ucHVzaChvKTtcblxuXHRcdFx0aWYgKGRlZi5zdGF0ZSAhPT0gMCkge1xuXHRcdFx0XHRzY2hlZHVsZShub3RpZnksZGVmKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG8ucHJvbWlzZTtcblx0XHR9O1xuXHRcdHRoaXNbXCJjYXRjaFwiXSA9IGZ1bmN0aW9uICRjYXRjaCQoZmFpbHVyZSkge1xuXHRcdFx0cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZmFpbHVyZSk7XG5cdFx0fTtcblxuXHRcdHRyeSB7XG5cdFx0XHRleGVjdXRvci5jYWxsKFxuXHRcdFx0XHR2b2lkIDAsXG5cdFx0XHRcdGZ1bmN0aW9uIHB1YmxpY1Jlc29sdmUobXNnKXtcblx0XHRcdFx0XHRyZXNvbHZlLmNhbGwoZGVmLG1zZyk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZ1bmN0aW9uIHB1YmxpY1JlamVjdChtc2cpIHtcblx0XHRcdFx0XHRyZWplY3QuY2FsbChkZWYsbXNnKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0cmVqZWN0LmNhbGwoZGVmLGVycik7XG5cdFx0fVxuXHR9XG5cblx0dmFyIFByb21pc2VQcm90b3R5cGUgPSBidWlsdEluUHJvcCh7fSxcImNvbnN0cnVjdG9yXCIsUHJvbWlzZSxcblx0XHQvKmNvbmZpZ3VyYWJsZT0qL2ZhbHNlXG5cdCk7XG5cblx0Ly8gTm90ZTogQW5kcm9pZCA0IGNhbm5vdCB1c2UgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSguLilgIGhlcmVcblx0UHJvbWlzZS5wcm90b3R5cGUgPSBQcm9taXNlUHJvdG90eXBlO1xuXG5cdC8vIGJ1aWx0LWluIFwiYnJhbmRcIiB0byBzaWduYWwgYW4gXCJ1bmluaXRpYWxpemVkXCIgcHJvbWlzZVxuXHRidWlsdEluUHJvcChQcm9taXNlUHJvdG90eXBlLFwiX19OUE9fX1wiLDAsXG5cdFx0Lypjb25maWd1cmFibGU9Ki9mYWxzZVxuXHQpO1xuXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2UsXCJyZXNvbHZlXCIsZnVuY3Rpb24gUHJvbWlzZSRyZXNvbHZlKG1zZykge1xuXHRcdHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cblx0XHQvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXHRcdC8vIG5vdGU6IGJlc3QgXCJpc1Byb21pc2VcIiBjaGVjayB0aGF0J3MgcHJhY3RpY2FsIGZvciBub3dcblx0XHRpZiAobXNnICYmIHR5cGVvZiBtc2cgPT0gXCJvYmplY3RcIiAmJiBtc2cuX19OUE9fXyA9PT0gMSkge1xuXHRcdFx0cmV0dXJuIG1zZztcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdHJlc29sdmUobXNnKTtcblx0XHR9KTtcblx0fSk7XG5cblx0YnVpbHRJblByb3AoUHJvbWlzZSxcInJlamVjdFwiLGZ1bmN0aW9uIFByb21pc2UkcmVqZWN0KG1zZykge1xuXHRcdHJldHVybiBuZXcgdGhpcyhmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLHJlamVjdCl7XG5cdFx0XHRpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWplY3QobXNnKTtcblx0XHR9KTtcblx0fSk7XG5cblx0YnVpbHRJblByb3AoUHJvbWlzZSxcImFsbFwiLGZ1bmN0aW9uIFByb21pc2UkYWxsKGFycikge1xuXHRcdHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cblx0XHQvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXHRcdGlmIChUb1N0cmluZy5jYWxsKGFycikgIT0gXCJbb2JqZWN0IEFycmF5XVwiKSB7XG5cdFx0XHRyZXR1cm4gQ29uc3RydWN0b3IucmVqZWN0KFR5cGVFcnJvcihcIk5vdCBhbiBhcnJheVwiKSk7XG5cdFx0fVxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gQ29uc3RydWN0b3IucmVzb2x2ZShbXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBDb25zdHJ1Y3RvcihmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLHJlamVjdCl7XG5cdFx0XHRpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgbGVuID0gYXJyLmxlbmd0aCwgbXNncyA9IEFycmF5KGxlbiksIGNvdW50ID0gMDtcblxuXHRcdFx0aXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLGFycixmdW5jdGlvbiByZXNvbHZlcihpZHgsbXNnKSB7XG5cdFx0XHRcdG1zZ3NbaWR4XSA9IG1zZztcblx0XHRcdFx0aWYgKCsrY291bnQgPT09IGxlbikge1xuXHRcdFx0XHRcdHJlc29sdmUobXNncyk7XG5cdFx0XHRcdH1cblx0XHRcdH0scmVqZWN0KTtcblx0XHR9KTtcblx0fSk7XG5cblx0YnVpbHRJblByb3AoUHJvbWlzZSxcInJhY2VcIixmdW5jdGlvbiBQcm9taXNlJHJhY2UoYXJyKSB7XG5cdFx0dmFyIENvbnN0cnVjdG9yID0gdGhpcztcblxuXHRcdC8vIHNwZWMgbWFuZGF0ZWQgY2hlY2tzXG5cdFx0aWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcblx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdGl0ZXJhdGVQcm9taXNlcyhDb25zdHJ1Y3RvcixhcnIsZnVuY3Rpb24gcmVzb2x2ZXIoaWR4LG1zZyl7XG5cdFx0XHRcdHJlc29sdmUobXNnKTtcblx0XHRcdH0scmVqZWN0KTtcblx0XHR9KTtcblx0fSk7XG5cblx0cmV0dXJuIFByb21pc2U7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvcm1hdCA9IHJlcXVpcmUoJ2Zvcm1hdC11dGlsJyk7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgcHJvdGVjdGVkUHJvcGVydGllcyA9IFsnbmFtZScsICdtZXNzYWdlJywgJ3N0YWNrJ107XG52YXIgZXJyb3JQcm90b3R5cGVQcm9wZXJ0aWVzID0gW1xuICAnbmFtZScsICdtZXNzYWdlJywgJ2Rlc2NyaXB0aW9uJywgJ251bWJlcicsICdjb2RlJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnY29sdW1uTnVtYmVyJyxcbiAgJ3NvdXJjZVVSTCcsICdsaW5lJywgJ2NvbHVtbicsICdzdGFjaydcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlKEVycm9yKTtcbm1vZHVsZS5leHBvcnRzLmVycm9yID0gY3JlYXRlKEVycm9yKTtcbm1vZHVsZS5leHBvcnRzLmV2YWwgPSBjcmVhdGUoRXZhbEVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnJhbmdlID0gY3JlYXRlKFJhbmdlRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMucmVmZXJlbmNlID0gY3JlYXRlKFJlZmVyZW5jZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnN5bnRheCA9IGNyZWF0ZShTeW50YXhFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy50eXBlID0gY3JlYXRlKFR5cGVFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy51cmkgPSBjcmVhdGUoVVJJRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuZm9ybWF0dGVyID0gZm9ybWF0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIG9ub30gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBnaXZlbiBFcnJvciBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge0NsYXNzfSBLbGFzcyAtIFRoZSBFcnJvciBzdWJjbGFzcyB0byBjcmVhdGVcbiAqIEByZXR1cm5zIHtvbm99XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZSAoS2xhc3MpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RXJyb3J9ICAgW2Vycl0gICAgIC0gVGhlIG9yaWdpbmFsIGVycm9yLCBpZiBhbnlcbiAgICogQHBhcmFtIHtvYmplY3R9ICBbcHJvcHNdICAgLSBBbiBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBlcnJvciBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9ICBbbWVzc2FnZV0gLSBUaGUgZXJyb3IgbWVzc2FnZS4gTWF5IGNvbnRhaW4ge0BsaW5rIHV0aWwjZm9ybWF0fSBwbGFjZWhvbGRlcnNcbiAgICogQHBhcmFtIHsuLi4qfSAgICBbcGFyYW1zXSAgLSBQYXJhbWV0ZXJzIHRoYXQgbWFwIHRvIHRoZSBgbWVzc2FnZWAgcGxhY2Vob2xkZXJzXG4gICAqIEByZXR1cm5zIHtFcnJvcn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiBvbm9GYWN0b3J5IChlcnIsIHByb3BzLCBtZXNzYWdlLCBwYXJhbXMpIHsgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIGZvcm1hdEFyZ3MgPSBbXTtcbiAgICB2YXIgZm9ybWF0dGVkTWVzc2FnZSA9ICcnO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGFyZ3VtZW50cyB3ZXJlIGFjdHVhbGx5IHNwZWNpZmllZFxuICAgIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgZm9ybWF0QXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgIGVyciA9IHByb3BzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtYXRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgcHJvcHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgZm9ybWF0QXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGZvcm1hdCBhcmd1bWVudHMsIHRoZW4gZm9ybWF0IHRoZSBlcnJvciBtZXNzYWdlXG4gICAgaWYgKGZvcm1hdEFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9ybWF0dGVkTWVzc2FnZSA9IG1vZHVsZS5leHBvcnRzLmZvcm1hdHRlci5hcHBseShudWxsLCBmb3JtYXRBcmdzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyICYmIGVyci5tZXNzYWdlKSB7XG4gICAgICAvLyBUaGUgaW5uZXItZXJyb3IncyBtZXNzYWdlIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG5ldyBtZXNzYWdlXG4gICAgICBmb3JtYXR0ZWRNZXNzYWdlICs9IChmb3JtYXR0ZWRNZXNzYWdlID8gJyBcXG4nIDogJycpICsgZXJyLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBuZXcgZXJyb3JcbiAgICAvLyBOT1RFOiBET04nVCBtb3ZlIHRoaXMgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiEgV2UgZG9uJ3Qgd2FudCB0byBwb2xsdXRlIHRoZSBzdGFjayB0cmFjZVxuICAgIHZhciBuZXdFcnJvciA9IG5ldyBLbGFzcyhmb3JtYXR0ZWRNZXNzYWdlKTtcblxuICAgIC8vIEV4dGVuZCB0aGUgbmV3IGVycm9yIHdpdGggdGhlIGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgIGV4dGVuZEVycm9yKG5ld0Vycm9yLCBlcnIpOyAgIC8vIENvcHkgcHJvcGVydGllcyBvZiB0aGUgb3JpZ2luYWwgZXJyb3JcbiAgICBleHRlbmRUb0pTT04obmV3RXJyb3IpOyAgICAgICAvLyBSZXBsYWNlIHRoZSBvcmlnaW5hbCB0b0pTT04gbWV0aG9kXG4gICAgZXh0ZW5kKG5ld0Vycm9yLCBwcm9wcyk7ICAgICAgLy8gQ29weSBjdXN0b20gcHJvcGVydGllcywgcG9zc2libHkgaW5jbHVkaW5nIGEgY3VzdG9tIHRvSlNPTiBtZXRob2RcblxuICAgIHJldHVybiBuZXdFcnJvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIHRoZSB0YXJnZXRFcnJvciB3aXRoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzb3VyY2UgZXJyb3IuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gICB0YXJnZXRFcnJvciAtIFRoZSBlcnJvciBvYmplY3QgdG8gZXh0ZW5kXG4gKiBAcGFyYW0gez9FcnJvcn0gIHNvdXJjZUVycm9yIC0gVGhlIHNvdXJjZSBlcnJvciBvYmplY3QsIGlmIGFueVxuICovXG5mdW5jdGlvbiBleHRlbmRFcnJvciAodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKSB7XG4gIGV4dGVuZFN0YWNrKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcik7XG4gIGV4dGVuZCh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpO1xufVxuXG4vKipcbiAqIEphdmFTY3JpcHQgZW5naW5lcyBkaWZmZXIgaW4gaG93IGVycm9ycyBhcmUgc2VyaWFsaXplZCB0byBKU09OIC0gZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzXG4gKiB0byBjdXN0b20gZXJyb3IgcHJvcGVydGllcyBhbmQgc3RhY2sgdHJhY2VzLiAgU28gd2UgYWRkIG91ciBvd24gdG9KU09OIG1ldGhvZCB0aGF0IEFMV0FZU1xuICogb3V0cHV0cyBldmVyeSBwcm9wZXJ0eSBvZiB0aGUgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZFRvSlNPTiAoZXJyb3IpIHtcbiAgZXJyb3IudG9KU09OID0gZXJyb3JUb0pTT047XG5cbiAgLy8gQWxzbyBhZGQgYW4gaW5zcGVjdCgpIG1ldGhvZCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBOb2RlLmpzJyBgdXRpbC5pbnNwZWN0KClgIG1ldGhvZFxuICBlcnJvci5pbnNwZWN0ID0gZXJyb3JUb1N0cmluZztcbn1cblxuLyoqXG4gKiBFeHRlbmRzIHRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICB0YXJnZXQgLSBUaGUgb2JqZWN0IHRvIGV4dGVuZFxuICogQHBhcmFtIHs/c291cmNlfSBzb3VyY2UgLSBUaGUgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYXJlIGNvcGllZFxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRhcmdldCwgc291cmNlKSB7XG4gIGlmIChzb3VyY2UgJiYgdHlwZW9mIHNvdXJjZSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgLy8gRG9uJ3QgY29weSBcInByb3RlY3RlZFwiIHByb3BlcnRpZXMsIHNpbmNlIHRoZXkgaGF2ZSBzcGVjaWFsIG1lYW5pbmcvYmVoYXZpb3JcbiAgICAgIC8vIGFuZCBhcmUgc2V0IGJ5IHRoZSBvbm9GYWN0b3J5IGZ1bmN0aW9uXG4gICAgICBpZiAocHJvdGVjdGVkUHJvcGVydGllcy5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgcmVhZC1vbmx5LCBzbyBpdCBjYW4ndCBiZSBjb3BpZWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDdXN0b20gSlNPTiBzZXJpYWxpemVyIGZvciBFcnJvciBvYmplY3RzLlxuICogUmV0dXJucyBhbGwgYnVpbHQtaW4gZXJyb3IgcHJvcGVydGllcywgYXMgd2VsbCBhcyBleHRlbmRlZCBwcm9wZXJ0aWVzLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGVycm9yVG9KU09OICgpIHtcbiAgdmFyIGpzb24gPSB7fTtcblxuICAvLyBHZXQgYWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgZXJyb3JcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcblxuICAvLyBBbHNvIGluY2x1ZGUgcHJvcGVydGllcyBmcm9tIHRoZSBFcnJvciBwcm90b3R5cGVcbiAga2V5cyA9IGtleXMuY29uY2F0KGVycm9yUHJvdG90eXBlUHJvcGVydGllcyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgdmFyIHZhbHVlID0gdGhpc1trZXldO1xuICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgIGlmICh0eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBqc29uW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ganNvbjtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIEVycm9yIG9iamVjdHMgYXMgaHVtYW4tcmVhZGFibGUgSlNPTiBzdHJpbmdzIGZvciBkZWJ1Z2dpbmcvbG9nZ2luZyBwdXJwb3Nlcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlcnJvclRvU3RyaW5nICgpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIG51bGwsIDIpLnJlcGxhY2UoL1xcXFxuL2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFeHRlbmQgdGhlIGVycm9yIHN0YWNrIHRvIGluY2x1ZGUgaXRzIGNhdXNlXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gdGFyZ2V0RXJyb3JcbiAqIEBwYXJhbSB7RXJyb3J9IHNvdXJjZUVycm9yXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZFN0YWNrICh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpIHtcbiAgaWYgKGhhc0xhenlTdGFjayh0YXJnZXRFcnJvcikpIHtcbiAgICBpZiAoc291cmNlRXJyb3IpIHtcbiAgICAgIGxhenlKb2luU3RhY2tzKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbGF6eVBvcFN0YWNrKHRhcmdldEVycm9yKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgaWYgKHNvdXJjZUVycm9yKSB7XG4gICAgICB0YXJnZXRFcnJvci5zdGFjayA9IGpvaW5TdGFja3ModGFyZ2V0RXJyb3Iuc3RhY2ssIHNvdXJjZUVycm9yLnN0YWNrKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0YXJnZXRFcnJvci5zdGFjayA9IHBvcFN0YWNrKHRhcmdldEVycm9yLnN0YWNrKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBvcmlnaW5hbCB7QGxpbmsgRXJyb3Ijc3RhY2t9IHByb3BlcnR5IHRvIHRoZSBuZXcgRXJyb3IncyBzdGFjay5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3U3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFN0YWNrXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBqb2luU3RhY2tzIChuZXdTdGFjaywgb3JpZ2luYWxTdGFjaykge1xuICBuZXdTdGFjayA9IHBvcFN0YWNrKG5ld1N0YWNrKTtcblxuICBpZiAobmV3U3RhY2sgJiYgb3JpZ2luYWxTdGFjaykge1xuICAgIHJldHVybiBuZXdTdGFjayArICdcXG5cXG4nICsgb3JpZ2luYWxTdGFjaztcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gbmV3U3RhY2sgfHwgb3JpZ2luYWxTdGFjaztcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgT25vIGZyb20gdGhlIHN0YWNrLCBzbyB0aGF0IHRoZSBzdGFjayBzdGFydHMgYXQgdGhlIG9yaWdpbmFsIGVycm9yIGxvY2F0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YWNrXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBwb3BTdGFjayAoc3RhY2spIHtcbiAgaWYgKHN0YWNrKSB7XG4gICAgdmFyIGxpbmVzID0gc3RhY2suc3BsaXQoJ1xcbicpO1xuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIC8vIFRoZSBzdGFjayBvbmx5IGhhcyBvbmUgbGluZSwgc28gdGhlcmUncyBub3RoaW5nIHdlIGNhbiByZW1vdmVcbiAgICAgIHJldHVybiBzdGFjaztcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBgb25vRmFjdG9yeWAgY2FsbCBpbiB0aGUgc3RhY2ssIGFuZCByZW1vdmUgaXRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgaWYgKGxpbmUuaW5kZXhPZignb25vRmFjdG9yeScpID49IDApIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gdGhlIHN0YWNrIGRvZXNuJ3QgY29udGFpbiBhIGNhbGwgdG8gYG9ub0ZhY3RvcnlgLlxuICAgIC8vIFRoaXMgbWF5IGJlIGR1ZSB0byBtaW5pZmljYXRpb24gb3Igc29tZSBvcHRpbWl6YXRpb24gb2YgdGhlIEpTIGVuZ2luZS5cbiAgICAvLyBTbyBqdXN0IHJldHVybiB0aGUgc3RhY2sgYXMtaXMuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG5cbi8qKlxuICogRG9lcyBhIG9uZS10aW1lIGRldGVybWluYXRpb24gb2Ygd2hldGhlciB0aGlzIEphdmFTY3JpcHQgZW5naW5lXG4gKiBzdXBwb3J0cyBsYXp5IGBFcnJvci5zdGFja2AgcHJvcGVydGllcy5cbiAqL1xudmFyIHN1cHBvcnRzTGF6eVN0YWNrID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhKFxuICAgIC8vIEVTNSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBtdXN0IGJlIHN1cHBvcnRlZFxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmXG5cbiAgICAvLyBDaHJvbWUgb24gQW5kcm9pZCBkb2Vzbid0IHN1cHBvcnQgbGF6eSBzdGFja3MgOihcbiAgICAodHlwZW9mIG5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcgfHwgIS9BbmRyb2lkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKVxuICApO1xufSgpKTtcblxuLyoqXG4gKiBEb2VzIHRoaXMgZXJyb3IgaGF2ZSBhIGxhenkgc3RhY2sgcHJvcGVydHk/XG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaGFzTGF6eVN0YWNrIChlcnIpIHtcbiAgaWYgKCFzdXBwb3J0c0xhenlTdGFjaykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlcnIsICdzdGFjaycpO1xuICBpZiAoIWRlc2NyaXB0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBDYWxscyB7QGxpbmsgam9pblN0YWNrc30gbGF6aWx5LCB3aGVuIHRoZSB7QGxpbmsgRXJyb3Ijc3RhY2t9IHByb3BlcnR5IGlzIGFjY2Vzc2VkLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IHRhcmdldEVycm9yXG4gKiBAcGFyYW0ge0Vycm9yfSBzb3VyY2VFcnJvclxuICovXG5mdW5jdGlvbiBsYXp5Sm9pblN0YWNrcyAodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKSB7XG4gIHZhciB0YXJnZXRTdGFjayA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0RXJyb3IsICdzdGFjaycpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXRFcnJvciwgJ3N0YWNrJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGpvaW5TdGFja3ModGFyZ2V0U3RhY2suZ2V0LmFwcGx5KHRhcmdldEVycm9yKSwgc291cmNlRXJyb3Iuc3RhY2spO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIENhbGxzIHtAbGluayBwb3BTdGFja30gbGF6aWx5LCB3aGVuIHRoZSB7QGxpbmsgRXJyb3Ijc3RhY2t9IHByb3BlcnR5IGlzIGFjY2Vzc2VkLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbmZ1bmN0aW9uIGxhenlQb3BTdGFjayAoZXJyb3IpIHtcbiAgdmFyIHRhcmdldFN0YWNrID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlcnJvciwgJ3N0YWNrJyk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcG9wU3RhY2sodGFyZ2V0U3RhY2suZ2V0LmFwcGx5KGVycm9yKSk7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG4iLCIvLyAuZGlybmFtZSwgLmJhc2VuYW1lLCBhbmQgLmV4dG5hbWUgbWV0aG9kcyBhcmUgZXh0cmFjdGVkIGZyb20gTm9kZS5qcyB2OC4xMS4xLFxuLy8gYmFja3BvcnRlZCBhbmQgdHJhbnNwbGl0ZWQgd2l0aCBCYWJlbCwgd2l0aCBiYWNrd2FyZHMtY29tcGF0IGZpeGVzXG5cbi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzb2x2ZWRQYXRoID0gJycsXG4gICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICB2YXIgcGF0aCA9IChpID49IDApID8gYXJndW1lbnRzW2ldIDogcHJvY2Vzcy5jd2QoKTtcblxuICAgIC8vIFNraXAgZW1wdHkgYW5kIGludmFsaWQgZW50cmllc1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfSBlbHNlIGlmICghcGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihyZXNvbHZlZFBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhcmVzb2x2ZWRBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIHJldHVybiAoKHJlc29sdmVkQWJzb2x1dGUgPyAnLycgOiAnJykgKyByZXNvbHZlZFBhdGgpIHx8ICcuJztcbn07XG5cbi8vIHBhdGgubm9ybWFsaXplKHBhdGgpXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgdmFyIGlzQWJzb2x1dGUgPSBleHBvcnRzLmlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHBhdGggPSAnLic7XG4gIH1cbiAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkge1xuICAgIHBhdGggKz0gJy8nO1xuICB9XG5cbiAgcmV0dXJuIChpc0Fic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmpvaW4gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgcmV0dXJuIGV4cG9ydHMubm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn07XG5cblxuLy8gcGF0aC5yZWxhdGl2ZShmcm9tLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICBmcm9tID0gZXhwb3J0cy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSBleHBvcnRzLnJlc29sdmUodG8pLnN1YnN0cigxKTtcblxuICBmdW5jdGlvbiB0cmltKGFycikge1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgZm9yICg7IHN0YXJ0IDwgYXJyLmxlbmd0aDsgc3RhcnQrKykge1xuICAgICAgaWYgKGFycltzdGFydF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgZW5kID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkge1xuICAgICAgaWYgKGFycltlbmRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTtcbiAgfVxuXG4gIHZhciBmcm9tUGFydHMgPSB0cmltKGZyb20uc3BsaXQoJy8nKSk7XG4gIHZhciB0b1BhcnRzID0gdHJpbSh0by5zcGxpdCgnLycpKTtcblxuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oZnJvbVBhcnRzLmxlbmd0aCwgdG9QYXJ0cy5sZW5ndGgpO1xuICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0c1tpXSkge1xuICAgICAgc2FtZVBhcnRzTGVuZ3RoID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvdXRwdXRQYXJ0cyA9IFtdO1xuICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0UGFydHMucHVzaCgnLi4nKTtcbiAgfVxuXG4gIG91dHB1dFBhcnRzID0gb3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7XG5cbiAgcmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oJy8nKTtcbn07XG5cbmV4cG9ydHMuc2VwID0gJy8nO1xuZXhwb3J0cy5kZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydHMuZGlybmFtZSA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gIHZhciBoYXNSb290ID0gY29kZSA9PT0gNDcgLyovKi87XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7XG4gICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/ICcvJyA6ICcuJztcbiAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSB7XG4gICAgLy8gcmV0dXJuICcvLyc7XG4gICAgLy8gQmFja3dhcmRzLWNvbXBhdCBmaXg6XG4gICAgcmV0dXJuICcvJztcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufTtcblxuZnVuY3Rpb24gYmFzZW5hbWUocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuXG4gIHZhciBzdGFydCA9IDA7XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIHZhciBpO1xuXG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gJyc7XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuXG4vLyBVc2VzIGEgbWl4ZWQgYXBwcm9hY2ggZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCBhcyBleHQgYmVoYXZpb3IgY2hhbmdlZFxuLy8gaW4gbmV3IE5vZGUuanMgdmVyc2lvbnMsIHNvIG9ubHkgYmFzZW5hbWUoKSBhYm92ZSBpcyBiYWNrcG9ydGVkIGhlcmVcbmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbiAocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gYmFzZW5hbWUocGF0aCk7XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5leHBvcnRzLmV4dG5hbWUgPSBmdW5jdGlvbiAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuICB2YXIgc3RhcnREb3QgPSAtMTtcbiAgdmFyIHN0YXJ0UGFydCA9IDA7XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgdmFyIHByZURvdFN0YXRlID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ2IC8qLiovKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgIHN0YXJ0RG90ID0gaTtcbiAgICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpXG4gICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXJ0RG90ID09PSAtMSB8fCBlbmQgPT09IC0xIHx8XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xufTtcblxuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYidcbiAgICA/IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfVxuICAgIDogZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwidmFyIGlzYXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuLyoqXG4gKiBFeHBvc2UgYHBhdGhUb1JlZ2V4cGAuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gcGF0aFRvUmVnZXhwXG5tb2R1bGUuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5tb2R1bGUuZXhwb3J0cy5jb21waWxlID0gY29tcGlsZVxubW9kdWxlLmV4cG9ydHMudG9rZW5zVG9GdW5jdGlvbiA9IHRva2Vuc1RvRnVuY3Rpb25cbm1vZHVsZS5leHBvcnRzLnRva2Vuc1RvUmVnRXhwID0gdG9rZW5zVG9SZWdFeHBcblxuLyoqXG4gKiBUaGUgbWFpbiBwYXRoIG1hdGNoaW5nIHJlZ2V4cCB1dGlsaXR5LlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbnZhciBQQVRIX1JFR0VYUCA9IG5ldyBSZWdFeHAoW1xuICAvLyBNYXRjaCBlc2NhcGVkIGNoYXJhY3RlcnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYXBwZWFyIGluIGZ1dHVyZSBtYXRjaGVzLlxuICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRoYXQgd29uJ3QgdHJhbnNmb3JtLlxuICAnKFxcXFxcXFxcLiknLFxuICAvLyBNYXRjaCBFeHByZXNzLXN0eWxlIHBhcmFtZXRlcnMgYW5kIHVuLW5hbWVkIHBhcmFtZXRlcnMgd2l0aCBhIHByZWZpeFxuICAvLyBhbmQgb3B0aW9uYWwgc3VmZml4ZXMuIE1hdGNoZXMgYXBwZWFyIGFzOlxuICAvL1xuICAvLyBcIi86dGVzdChcXFxcZCspP1wiID0+IFtcIi9cIiwgXCJ0ZXN0XCIsIFwiXFxkK1wiLCB1bmRlZmluZWQsIFwiP1wiLCB1bmRlZmluZWRdXG4gIC8vIFwiL3JvdXRlKFxcXFxkKylcIiAgPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiXFxkK1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgLy8gXCIvKlwiICAgICAgICAgICAgPT4gW1wiL1wiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFwiKlwiXVxuICAnKFtcXFxcLy5dKT8oPzooPzpcXFxcOihcXFxcdyspKD86XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSk/fFxcXFwoKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKCldKSspXFxcXCkpKFsrKj9dKT98KFxcXFwqKSknXG5dLmpvaW4oJ3wnKSwgJ2cnKVxuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIGZvciB0aGUgcmF3IHRva2Vucy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBzdHJcbiAqIEBwYXJhbSAge09iamVjdD19IG9wdGlvbnNcbiAqIEByZXR1cm4geyFBcnJheX1cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKHN0ciwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gW11cbiAgdmFyIGtleSA9IDBcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgcGF0aCA9ICcnXG4gIHZhciBkZWZhdWx0RGVsaW1pdGVyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlbGltaXRlciB8fCAnLydcbiAgdmFyIHJlc1xuXG4gIHdoaWxlICgocmVzID0gUEFUSF9SRUdFWFAuZXhlYyhzdHIpKSAhPSBudWxsKSB7XG4gICAgdmFyIG0gPSByZXNbMF1cbiAgICB2YXIgZXNjYXBlZCA9IHJlc1sxXVxuICAgIHZhciBvZmZzZXQgPSByZXMuaW5kZXhcbiAgICBwYXRoICs9IHN0ci5zbGljZShpbmRleCwgb2Zmc2V0KVxuICAgIGluZGV4ID0gb2Zmc2V0ICsgbS5sZW5ndGhcblxuICAgIC8vIElnbm9yZSBhbHJlYWR5IGVzY2FwZWQgc2VxdWVuY2VzLlxuICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICBwYXRoICs9IGVzY2FwZWRbMV1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdmFyIG5leHQgPSBzdHJbaW5kZXhdXG4gICAgdmFyIHByZWZpeCA9IHJlc1syXVxuICAgIHZhciBuYW1lID0gcmVzWzNdXG4gICAgdmFyIGNhcHR1cmUgPSByZXNbNF1cbiAgICB2YXIgZ3JvdXAgPSByZXNbNV1cbiAgICB2YXIgbW9kaWZpZXIgPSByZXNbNl1cbiAgICB2YXIgYXN0ZXJpc2sgPSByZXNbN11cblxuICAgIC8vIFB1c2ggdGhlIGN1cnJlbnQgcGF0aCBvbnRvIHRoZSB0b2tlbnMuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gICAgICBwYXRoID0gJydcbiAgICB9XG5cbiAgICB2YXIgcGFydGlhbCA9IHByZWZpeCAhPSBudWxsICYmIG5leHQgIT0gbnVsbCAmJiBuZXh0ICE9PSBwcmVmaXhcbiAgICB2YXIgcmVwZWF0ID0gbW9kaWZpZXIgPT09ICcrJyB8fCBtb2RpZmllciA9PT0gJyonXG4gICAgdmFyIG9wdGlvbmFsID0gbW9kaWZpZXIgPT09ICc/JyB8fCBtb2RpZmllciA9PT0gJyonXG4gICAgdmFyIGRlbGltaXRlciA9IHJlc1syXSB8fCBkZWZhdWx0RGVsaW1pdGVyXG4gICAgdmFyIHBhdHRlcm4gPSBjYXB0dXJlIHx8IGdyb3VwXG5cbiAgICB0b2tlbnMucHVzaCh7XG4gICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgcHJlZml4OiBwcmVmaXggfHwgJycsXG4gICAgICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgcGFydGlhbDogcGFydGlhbCxcbiAgICAgIGFzdGVyaXNrOiAhIWFzdGVyaXNrLFxuICAgICAgcGF0dGVybjogcGF0dGVybiA/IGVzY2FwZUdyb3VwKHBhdHRlcm4pIDogKGFzdGVyaXNrID8gJy4qJyA6ICdbXicgKyBlc2NhcGVTdHJpbmcoZGVsaW1pdGVyKSArICddKz8nKVxuICAgIH0pXG4gIH1cblxuICAvLyBNYXRjaCBhbnkgY2hhcmFjdGVycyBzdGlsbCByZW1haW5pbmcuXG4gIGlmIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICBwYXRoICs9IHN0ci5zdWJzdHIoaW5kZXgpXG4gIH1cblxuICAvLyBJZiB0aGUgcGF0aCBleGlzdHMsIHB1c2ggaXQgb250byB0aGUgZW5kLlxuICBpZiAocGF0aCkge1xuICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gIH1cblxuICByZXR1cm4gdG9rZW5zXG59XG5cbi8qKlxuICogQ29tcGlsZSBhIHN0cmluZyB0byBhIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciB0aGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgIHN0clxuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshZnVuY3Rpb24oT2JqZWN0PSwgT2JqZWN0PSl9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUgKHN0ciwgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9GdW5jdGlvbihwYXJzZShzdHIsIG9wdGlvbnMpKVxufVxuXG4vKipcbiAqIFByZXR0aWVyIGVuY29kaW5nIG9mIFVSSSBwYXRoIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1tcXC8/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRW5jb2RlIHRoZSBhc3RlcmlzayBwYXJhbWV0ZXIuIFNpbWlsYXIgdG8gYHByZXR0eWAsIGJ1dCBhbGxvd3Mgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzdGVyaXNrIChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSShzdHIpLnJlcGxhY2UoL1s/I10vZywgZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvRnVuY3Rpb24gKHRva2Vucykge1xuICAvLyBDb21waWxlIGFsbCB0aGUgdG9rZW5zIGludG8gcmVnZXhwcy5cbiAgdmFyIG1hdGNoZXMgPSBuZXcgQXJyYXkodG9rZW5zLmxlbmd0aClcblxuICAvLyBDb21waWxlIGFsbCB0aGUgcGF0dGVybnMgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0eXBlb2YgdG9rZW5zW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgbWF0Y2hlc1tpXSA9IG5ldyBSZWdFeHAoJ14oPzonICsgdG9rZW5zW2ldLnBhdHRlcm4gKyAnKSQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAob2JqLCBvcHRzKSB7XG4gICAgdmFyIHBhdGggPSAnJ1xuICAgIHZhciBkYXRhID0gb2JqIHx8IHt9XG4gICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9XG4gICAgdmFyIGVuY29kZSA9IG9wdGlvbnMucHJldHR5ID8gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IDogZW5jb2RlVVJJQ29tcG9uZW50XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHBhdGggKz0gdG9rZW5cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhW3Rva2VuLm5hbWVdXG4gICAgICB2YXIgc2VnbWVudFxuXG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAvLyBQcmVwZW5kIHBhcnRpYWwgc2VnbWVudCBwcmVmaXhlcy5cbiAgICAgICAgICBpZiAodG9rZW4ucGFydGlhbCkge1xuICAgICAgICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXhcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gYmUgZGVmaW5lZCcpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzYXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGlmICghdG9rZW4ucmVwZWF0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBub3QgcmVwZWF0LCBidXQgcmVjZWl2ZWQgYCcgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAnYCcpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCBiZSBlbXB0eScpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWx1ZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHNlZ21lbnQgPSBlbmNvZGUodmFsdWVbal0pXG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxsIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkoc2VnbWVudCkgKyAnYCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aCArPSAoaiA9PT0gMCA/IHRva2VuLnByZWZpeCA6IHRva2VuLmRlbGltaXRlcikgKyBzZWdtZW50XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBzZWdtZW50ID0gdG9rZW4uYXN0ZXJpc2sgPyBlbmNvZGVBc3Rlcmlzayh2YWx1ZSkgOiBlbmNvZGUodmFsdWUpXG5cbiAgICAgIGlmICghbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIFwiJyArIHNlZ21lbnQgKyAnXCInKVxuICAgICAgfVxuXG4gICAgICBwYXRoICs9IHRva2VuLnByZWZpeCArIHNlZ21lbnRcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aFxuICB9XG59XG5cbi8qKlxuICogRXNjYXBlIGEgcmVndWxhciBleHByZXNzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18XFwvXFxcXF0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEVzY2FwZSB0aGUgY2FwdHVyaW5nIGdyb3VwIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgbWVhbmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGdyb3VwXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUdyb3VwIChncm91cCkge1xuICByZXR1cm4gZ3JvdXAucmVwbGFjZSgvKFs9ITokXFwvKCldKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGtleXMgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFSZWdFeHB9IHJlXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhdHRhY2hLZXlzIChyZSwga2V5cykge1xuICByZS5rZXlzID0ga2V5c1xuICByZXR1cm4gcmVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZsYWdzIGZvciBhIHJlZ2V4cCBmcm9tIHRoZSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmbGFncyAob3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5zZW5zaXRpdmUgPyAnJyA6ICdpJ1xufVxuXG4vKipcbiAqIFB1bGwgb3V0IGtleXMgZnJvbSBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshUmVnRXhwfSBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiByZWdleHBUb1JlZ2V4cCAocGF0aCwga2V5cykge1xuICAvLyBVc2UgYSBuZWdhdGl2ZSBsb29rYWhlYWQgdG8gbWF0Y2ggb25seSBjYXB0dXJpbmcgZ3JvdXBzLlxuICB2YXIgZ3JvdXBzID0gcGF0aC5zb3VyY2UubWF0Y2goL1xcKCg/IVxcPykvZylcblxuICBpZiAoZ3JvdXBzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleXMucHVzaCh7XG4gICAgICAgIG5hbWU6IGksXG4gICAgICAgIHByZWZpeDogbnVsbCxcbiAgICAgICAgZGVsaW1pdGVyOiBudWxsLFxuICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgIHBhcnRpYWw6IGZhbHNlLFxuICAgICAgICBhc3RlcmlzazogZmFsc2UsXG4gICAgICAgIHBhdHRlcm46IG51bGxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMocGF0aCwga2V5cylcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gYXJyYXkgaW50byBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBwYXRoXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhcnJheVRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIHZhciBwYXJ0cyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgcGFydHMucHVzaChwYXRoVG9SZWdleHAocGF0aFtpXSwga2V5cywgb3B0aW9ucykuc291cmNlKVxuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoJyg/OicgKyBwYXJ0cy5qb2luKCd8JykgKyAnKScsIGZsYWdzKG9wdGlvbnMpKVxuXG4gIHJldHVybiBhdHRhY2hLZXlzKHJlZ2V4cCwga2V5cylcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXRoIHJlZ2V4cCBmcm9tIHN0cmluZyBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcGFyYW0gIHshT2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBzdHJpbmdUb1JlZ2V4cCAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9SZWdFeHAocGFyc2UocGF0aCwgb3B0aW9ucyksIGtleXMsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogRXhwb3NlIGEgZnVuY3Rpb24gZm9yIHRha2luZyB0b2tlbnMgYW5kIHJldHVybmluZyBhIFJlZ0V4cC5cbiAqXG4gKiBAcGFyYW0gIHshQXJyYXl9ICAgICAgICAgIHRva2Vuc1xuICogQHBhcmFtICB7KEFycmF5fE9iamVjdCk9fSBrZXlzXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvUmVnRXhwICh0b2tlbnMsIGtleXMsIG9wdGlvbnMpIHtcbiAgaWYgKCFpc2FycmF5KGtleXMpKSB7XG4gICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKGtleXMgfHwgb3B0aW9ucylcbiAgICBrZXlzID0gW11cbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0XG4gIHZhciBlbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2VcbiAgdmFyIHJvdXRlID0gJydcblxuICAvLyBJdGVyYXRlIG92ZXIgdGhlIHRva2VucyBhbmQgY3JlYXRlIG91ciByZWdleHAgc3RyaW5nLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXVxuXG4gICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJvdXRlICs9IGVzY2FwZVN0cmluZyh0b2tlbilcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHByZWZpeCA9IGVzY2FwZVN0cmluZyh0b2tlbi5wcmVmaXgpXG4gICAgICB2YXIgY2FwdHVyZSA9ICcoPzonICsgdG9rZW4ucGF0dGVybiArICcpJ1xuXG4gICAgICBrZXlzLnB1c2godG9rZW4pXG5cbiAgICAgIGlmICh0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgY2FwdHVyZSArPSAnKD86JyArIHByZWZpeCArIGNhcHR1cmUgKyAnKSonXG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICBpZiAoIXRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICBjYXB0dXJlID0gJyg/OicgKyBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJykpPydcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYXB0dXJlID0gcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpPydcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FwdHVyZSA9IHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKSdcbiAgICAgIH1cblxuICAgICAgcm91dGUgKz0gY2FwdHVyZVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZWxpbWl0ZXIgPSBlc2NhcGVTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXIgfHwgJy8nKVxuICB2YXIgZW5kc1dpdGhEZWxpbWl0ZXIgPSByb3V0ZS5zbGljZSgtZGVsaW1pdGVyLmxlbmd0aCkgPT09IGRlbGltaXRlclxuXG4gIC8vIEluIG5vbi1zdHJpY3QgbW9kZSB3ZSBhbGxvdyBhIHNsYXNoIGF0IHRoZSBlbmQgb2YgbWF0Y2guIElmIHRoZSBwYXRoIHRvXG4gIC8vIG1hdGNoIGFscmVhZHkgZW5kcyB3aXRoIGEgc2xhc2gsIHdlIHJlbW92ZSBpdCBmb3IgY29uc2lzdGVuY3kuIFRoZSBzbGFzaFxuICAvLyBpcyB2YWxpZCBhdCB0aGUgZW5kIG9mIGEgcGF0aCBtYXRjaCwgbm90IGluIHRoZSBtaWRkbGUuIFRoaXMgaXMgaW1wb3J0YW50XG4gIC8vIGluIG5vbi1lbmRpbmcgbW9kZSwgd2hlcmUgXCIvdGVzdC9cIiBzaG91bGRuJ3QgbWF0Y2ggXCIvdGVzdC8vcm91dGVcIi5cbiAgaWYgKCFzdHJpY3QpIHtcbiAgICByb3V0ZSA9IChlbmRzV2l0aERlbGltaXRlciA/IHJvdXRlLnNsaWNlKDAsIC1kZWxpbWl0ZXIubGVuZ3RoKSA6IHJvdXRlKSArICcoPzonICsgZGVsaW1pdGVyICsgJyg/PSQpKT8nXG4gIH1cblxuICBpZiAoZW5kKSB7XG4gICAgcm91dGUgKz0gJyQnXG4gIH0gZWxzZSB7XG4gICAgLy8gSW4gbm9uLWVuZGluZyBtb2RlLCB3ZSBuZWVkIHRoZSBjYXB0dXJpbmcgZ3JvdXBzIHRvIG1hdGNoIGFzIG11Y2ggYXNcbiAgICAvLyBwb3NzaWJsZSBieSB1c2luZyBhIHBvc2l0aXZlIGxvb2thaGVhZCB0byB0aGUgZW5kIG9yIG5leHQgcGF0aCBzZWdtZW50LlxuICAgIHJvdXRlICs9IHN0cmljdCAmJiBlbmRzV2l0aERlbGltaXRlciA/ICcnIDogJyg/PScgKyBkZWxpbWl0ZXIgKyAnfCQpJ1xuICB9XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMobmV3IFJlZ0V4cCgnXicgKyByb3V0ZSwgZmxhZ3Mob3B0aW9ucykpLCBrZXlzKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gcGF0aCBzdHJpbmcsIHJldHVybmluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBBbiBlbXB0eSBhcnJheSBjYW4gYmUgcGFzc2VkIGluIGZvciB0aGUga2V5cywgd2hpY2ggd2lsbCBob2xkIHRoZVxuICogcGxhY2Vob2xkZXIga2V5IGRlc2NyaXB0aW9ucy4gRm9yIGV4YW1wbGUsIHVzaW5nIGAvdXNlci86aWRgLCBga2V5c2Agd2lsbFxuICogY29udGFpbiBgW3sgbmFtZTogJ2lkJywgZGVsaW1pdGVyOiAnLycsIG9wdGlvbmFsOiBmYWxzZSwgcmVwZWF0OiBmYWxzZSB9XWAuXG4gKlxuICogQHBhcmFtICB7KHN0cmluZ3xSZWdFeHB8QXJyYXkpfSBwYXRoXG4gKiBAcGFyYW0gIHsoQXJyYXl8T2JqZWN0KT19ICAgICAgIGtleXNcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gcGF0aFRvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIGlmICghaXNhcnJheShrZXlzKSkge1xuICAgIG9wdGlvbnMgPSAvKiogQHR5cGUgeyFPYmplY3R9ICovIChrZXlzIHx8IG9wdGlvbnMpXG4gICAga2V5cyA9IFtdXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmIChwYXRoIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgcmV0dXJuIHJlZ2V4cFRvUmVnZXhwKHBhdGgsIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cykpXG4gIH1cblxuICBpZiAoaXNhcnJheShwYXRoKSkge1xuICAgIHJldHVybiBhcnJheVRvUmVnZXhwKC8qKiBAdHlwZSB7IUFycmF5fSAqLyAocGF0aCksIC8qKiBAdHlwZSB7IUFycmF5fSAqLyAoa2V5cyksIG9wdGlvbnMpXG4gIH1cblxuICByZXR1cm4gc3RyaW5nVG9SZWdleHAoLyoqIEB0eXBlIHtzdHJpbmd9ICovIChwYXRoKSwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSwgb3B0aW9ucylcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSB7IG5leHRUaWNrOiBuZXh0VGljayB9O1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBwcm9jZXNzXG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cblxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ocXMsIHNlcCwgZXEsIG9wdGlvbnMpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIHZhciBvYmogPSB7fTtcblxuICBpZiAodHlwZW9mIHFzICE9PSAnc3RyaW5nJyB8fCBxcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IC9cXCsvZztcbiAgcXMgPSBxcy5zcGxpdChzZXApO1xuXG4gIHZhciBtYXhLZXlzID0gMTAwMDtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubWF4S2V5cyA9PT0gJ251bWJlcicpIHtcbiAgICBtYXhLZXlzID0gb3B0aW9ucy5tYXhLZXlzO1xuICB9XG5cbiAgdmFyIGxlbiA9IHFzLmxlbmd0aDtcbiAgLy8gbWF4S2V5cyA8PSAwIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIG5vdCBsaW1pdCBrZXlzIGNvdW50XG4gIGlmIChtYXhLZXlzID4gMCAmJiBsZW4gPiBtYXhLZXlzKSB7XG4gICAgbGVuID0gbWF4S2V5cztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgeCA9IHFzW2ldLnJlcGxhY2UocmVnZXhwLCAnJTIwJyksXG4gICAgICAgIGlkeCA9IHguaW5kZXhPZihlcSksXG4gICAgICAgIGtzdHIsIHZzdHIsIGssIHY7XG5cbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgIGtzdHIgPSB4LnN1YnN0cigwLCBpZHgpO1xuICAgICAgdnN0ciA9IHguc3Vic3RyKGlkeCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrc3RyID0geDtcbiAgICAgIHZzdHIgPSAnJztcbiAgICB9XG5cbiAgICBrID0gZGVjb2RlVVJJQ29tcG9uZW50KGtzdHIpO1xuICAgIHYgPSBkZWNvZGVVUklDb21wb25lbnQodnN0cik7XG5cbiAgICBpZiAoIWhhc093blByb3BlcnR5KG9iaiwgaykpIHtcbiAgICAgIG9ialtrXSA9IHY7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgIG9ialtrXS5wdXNoKHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba10gPSBbb2JqW2tdLCB2XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5UHJpbWl0aXZlID0gZnVuY3Rpb24odikge1xuICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gdiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6ICcnO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHNlcCwgZXEsIG5hbWUpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIGlmIChvYmogPT09IG51bGwpIHtcbiAgICBvYmogPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbWFwKG9iamVjdEtleXMob2JqKSwgZnVuY3Rpb24oaykge1xuICAgICAgdmFyIGtzID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShrKSkgKyBlcTtcbiAgICAgIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcChvYmpba10sIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKHYpKTtcbiAgICAgICAgfSkuam9pbihzZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmpba10pKTtcbiAgICAgIH1cbiAgICB9KS5qb2luKHNlcCk7XG5cbiAgfVxuXG4gIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShuYW1lKSkgKyBlcSArXG4gICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9iaikpO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbmZ1bmN0aW9uIG1hcCAoeHMsIGYpIHtcbiAgaWYgKHhzLm1hcCkgcmV0dXJuIHhzLm1hcChmKTtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzLnB1c2goZih4c1tpXSwgaSkpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgcmVzLnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5kZWNvZGUgPSBleHBvcnRzLnBhcnNlID0gcmVxdWlyZSgnLi9kZWNvZGUnKTtcbmV4cG9ydHMuZW5jb2RlID0gZXhwb3J0cy5zdHJpbmdpZnkgPSByZXF1aXJlKCcuL2VuY29kZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCByZXQgICAgPSByZXF1aXJlKCdyZXQnKTtcbmNvbnN0IERSYW5nZSA9IHJlcXVpcmUoJ2RyYW5nZScpO1xuY29uc3QgdHlwZXMgID0gcmV0LnR5cGVzO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUmFuZEV4cCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSByZWdleHBcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1cbiAgICovXG4gIGNvbnN0cnVjdG9yKHJlZ2V4cCwgbSkge1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlZ2V4cCk7XG4gICAgaWYgKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgdGhpcy5pZ25vcmVDYXNlID0gcmVnZXhwLmlnbm9yZUNhc2U7XG4gICAgICB0aGlzLm11bHRpbGluZSA9IHJlZ2V4cC5tdWx0aWxpbmU7XG4gICAgICByZWdleHAgPSByZWdleHAuc291cmNlO1xuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5pZ25vcmVDYXNlID0gbSAmJiBtLmluZGV4T2YoJ2knKSAhPT0gLTE7XG4gICAgICB0aGlzLm11bHRpbGluZSA9IG0gJiYgbS5pbmRleE9mKCdtJykgIT09IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgcmVnZXhwIG9yIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMudG9rZW5zID0gcmV0KHJlZ2V4cCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgc29tZSBjdXN0b20gcHJvcGVydGllcyBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHJlZ2V4cC5cbiAgICpcbiAgICogQHBhcmFtIHtSYW5kRXhwfSByYW5kZXhwXG4gICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHBcbiAgICovXG4gIF9zZXREZWZhdWx0cyhyZWdleHApIHtcbiAgICAvLyBXaGVuIGEgcmVwZXRpdGlvbmFsIHRva2VuIGhhcyBpdHMgbWF4IHNldCB0byBJbmZpbml0ZSxcbiAgICAvLyByYW5kZXhwIHdvbid0IGFjdHVhbGx5IGdlbmVyYXRlIGEgcmFuZG9tIGFtb3VudCBiZXR3ZWVuIG1pbiBhbmQgSW5maW5pdGVcbiAgICAvLyBpbnN0ZWFkIGl0IHdpbGwgc2VlIEluZmluaXRlIGFzIG1pbiArIDEwMC5cbiAgICB0aGlzLm1heCA9IHJlZ2V4cC5tYXggIT0gbnVsbCA/IHJlZ2V4cC5tYXggOlxuICAgICAgUmFuZEV4cC5wcm90b3R5cGUubWF4ICE9IG51bGwgPyBSYW5kRXhwLnByb3RvdHlwZS5tYXggOiAxMDA7XG5cbiAgICAvLyBUaGlzIGFsbG93cyBleHBhbmRpbmcgdG8gaW5jbHVkZSBhZGRpdGlvbmFsIGNoYXJhY3RlcnNcbiAgICAvLyBmb3IgaW5zdGFuY2U6IFJhbmRFeHAuZGVmYXVsdFJhbmdlLmFkZCgwLCA2NTUzNSk7XG4gICAgdGhpcy5kZWZhdWx0UmFuZ2UgPSByZWdleHAuZGVmYXVsdFJhbmdlID9cbiAgICAgIHJlZ2V4cC5kZWZhdWx0UmFuZ2UgOiB0aGlzLmRlZmF1bHRSYW5nZS5jbG9uZSgpO1xuXG4gICAgaWYgKHJlZ2V4cC5yYW5kSW50KSB7XG4gICAgICB0aGlzLnJhbmRJbnQgPSByZWdleHAucmFuZEludDtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHJhbmRvbSBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIGdlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2VuKHRoaXMudG9rZW5zLCBbXSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByYW5kb20gc3RyaW5nIG1vZGVsZWQgYWZ0ZXIgZ2l2ZW4gdG9rZW5zLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gZ3JvdXBzXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG4gIF9nZW4odG9rZW4sIGdyb3Vwcykge1xuICAgIHZhciBzdGFjaywgc3RyLCBuLCBpLCBsO1xuXG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICBjYXNlIHR5cGVzLlJPT1Q6XG4gICAgICBjYXNlIHR5cGVzLkdST1VQOlxuICAgICAgICAvLyBJZ25vcmUgbG9va2FoZWFkcyBmb3Igbm93LlxuICAgICAgICBpZiAodG9rZW4uZm9sbG93ZWRCeSB8fCB0b2tlbi5ub3RGb2xsb3dlZEJ5KSB7IHJldHVybiAnJzsgfVxuXG4gICAgICAgIC8vIEluc2VydCBwbGFjZWhvbGRlciB1bnRpbCBncm91cCBzdHJpbmcgaXMgZ2VuZXJhdGVkLlxuICAgICAgICBpZiAodG9rZW4ucmVtZW1iZXIgJiYgdG9rZW4uZ3JvdXBOdW1iZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRva2VuLmdyb3VwTnVtYmVyID0gZ3JvdXBzLnB1c2gobnVsbCkgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhY2sgPSB0b2tlbi5vcHRpb25zID9cbiAgICAgICAgICB0aGlzLl9yYW5kU2VsZWN0KHRva2VuLm9wdGlvbnMpIDogdG9rZW4uc3RhY2s7XG5cbiAgICAgICAgc3RyID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBzdGFjay5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBzdHIgKz0gdGhpcy5fZ2VuKHN0YWNrW2ldLCBncm91cHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnJlbWVtYmVyKSB7XG4gICAgICAgICAgZ3JvdXBzW3Rva2VuLmdyb3VwTnVtYmVyXSA9IHN0cjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuXG4gICAgICBjYXNlIHR5cGVzLlBPU0lUSU9OOlxuICAgICAgICAvLyBEbyBub3RoaW5nIGZvciBub3cuXG4gICAgICAgIHJldHVybiAnJztcblxuICAgICAgY2FzZSB0eXBlcy5TRVQ6XG4gICAgICAgIHZhciBleHBhbmRlZFNldCA9IHRoaXMuX2V4cGFuZCh0b2tlbik7XG4gICAgICAgIGlmICghZXhwYW5kZWRTZXQubGVuZ3RoKSB7IHJldHVybiAnJzsgfVxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLl9yYW5kU2VsZWN0KGV4cGFuZGVkU2V0KSk7XG5cbiAgICAgIGNhc2UgdHlwZXMuUkVQRVRJVElPTjpcbiAgICAgICAgLy8gUmFuZG9tbHkgZ2VuZXJhdGUgbnVtYmVyIGJldHdlZW4gbWluIGFuZCBtYXguXG4gICAgICAgIG4gPSB0aGlzLnJhbmRJbnQodG9rZW4ubWluLFxuICAgICAgICAgIHRva2VuLm1heCA9PT0gSW5maW5pdHkgPyB0b2tlbi5taW4gKyB0aGlzLm1heCA6IHRva2VuLm1heCk7XG5cbiAgICAgICAgc3RyID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzdHIgKz0gdGhpcy5fZ2VuKHRva2VuLnZhbHVlLCBncm91cHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cjtcblxuICAgICAgY2FzZSB0eXBlcy5SRUZFUkVOQ0U6XG4gICAgICAgIHJldHVybiBncm91cHNbdG9rZW4udmFsdWUgLSAxXSB8fCAnJztcblxuICAgICAgY2FzZSB0eXBlcy5DSEFSOlxuICAgICAgICB2YXIgY29kZSA9IHRoaXMuaWdub3JlQ2FzZSAmJiB0aGlzLl9yYW5kQm9vbCgpID9cbiAgICAgICAgICB0aGlzLl90b090aGVyQ2FzZSh0b2tlbi52YWx1ZSkgOiB0b2tlbi52YWx1ZTtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogSWYgY29kZSBpcyBhbHBoYWJldGljLCBjb252ZXJ0cyB0byBvdGhlciBjYXNlLlxuICAgKiBJZiBub3QgYWxwaGFiZXRpYywgcmV0dXJucyBiYWNrIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIF90b090aGVyQ2FzZShjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgKyAoOTcgPD0gY29kZSAmJiBjb2RlIDw9IDEyMiA/IC0zMiA6XG4gICAgICA2NSA8PSBjb2RlICYmIGNvZGUgPD0gOTAgID8gIDMyIDogMCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSYW5kb21seSByZXR1cm5zIGEgdHJ1ZSBvciBmYWxzZSB2YWx1ZS5cbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIF9yYW5kQm9vbCgpIHtcbiAgICByZXR1cm4gIXRoaXMucmFuZEludCgwLCAxKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJhbmRvbWx5IHNlbGVjdHMgYW5kIHJldHVybnMgYSB2YWx1ZSBmcm9tIHRoZSBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheS48T2JqZWN0Pn0gYXJyXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIF9yYW5kU2VsZWN0KGFycikge1xuICAgIGlmIChhcnIgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgIHJldHVybiBhcnIuaW5kZXgodGhpcy5yYW5kSW50KDAsIGFyci5sZW5ndGggLSAxKSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJbdGhpcy5yYW5kSW50KDAsIGFyci5sZW5ndGggLSAxKV07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBleHBhbmRzIGEgdG9rZW4gdG8gYSBEaXNjb250aW51b3VzUmFuZ2Ugb2YgY2hhcmFjdGVycyB3aGljaCBoYXMgYVxuICAgKiBsZW5ndGggYW5kIGFuIGluZGV4IGZ1bmN0aW9uIChmb3IgcmFuZG9tIHNlbGVjdGluZylcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEByZXR1cm4ge0Rpc2NvbnRpbnVvdXNSYW5nZX1cbiAgICovXG4gIF9leHBhbmQodG9rZW4pIHtcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gcmV0LnR5cGVzLkNIQVIpIHtcbiAgICAgIHJldHVybiBuZXcgRFJhbmdlKHRva2VuLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IHJldC50eXBlcy5SQU5HRSkge1xuICAgICAgcmV0dXJuIG5ldyBEUmFuZ2UodG9rZW4uZnJvbSwgdG9rZW4udG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZHJhbmdlID0gbmV3IERSYW5nZSgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHN1YnJhbmdlID0gdGhpcy5fZXhwYW5kKHRva2VuLnNldFtpXSk7XG4gICAgICAgIGRyYW5nZS5hZGQoc3VicmFuZ2UpO1xuICAgICAgICBpZiAodGhpcy5pZ25vcmVDYXNlKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdWJyYW5nZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbGV0IGNvZGUgPSBzdWJyYW5nZS5pbmRleChqKTtcbiAgICAgICAgICAgIGxldCBvdGhlckNhc2VDb2RlID0gdGhpcy5fdG9PdGhlckNhc2UoY29kZSk7XG4gICAgICAgICAgICBpZiAoY29kZSAhPT0gb3RoZXJDYXNlQ29kZSkge1xuICAgICAgICAgICAgICBkcmFuZ2UuYWRkKG90aGVyQ2FzZUNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRva2VuLm5vdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UmFuZ2UuY2xvbmUoKS5zdWJ0cmFjdChkcmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFJhbmdlLmNsb25lKCkuaW50ZXJzZWN0KGRyYW5nZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogUmFuZG9tbHkgZ2VuZXJhdGVzIGFuZCByZXR1cm5zIGEgbnVtYmVyIGJldHdlZW4gYSBhbmQgYiAoaW5jbHVzaXZlKS5cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGJcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgcmFuZEludChhLCBiKSB7XG4gICAgcmV0dXJuIGEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoMSArIGIgLSBhKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJhbmdlIG9mIGNoYXJhY3RlcnMgdG8gZ2VuZXJhdGUgZnJvbS5cbiAgICovXG4gIGdldCBkZWZhdWx0UmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlID0gdGhpcy5fcmFuZ2UgfHwgbmV3IERSYW5nZSgzMiwgMTI2KTtcbiAgfVxuXG4gIHNldCBkZWZhdWx0UmFuZ2UocmFuZ2UpIHtcbiAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xuICB9XG5cblxuICAvKipcbiAgICpcbiAgICogRW5hYmxlcyB1c2Ugb2YgcmFuZGV4cCB3aXRoIGEgc2hvcnRlciBjYWxsLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd8IHJlZ2V4cH1cbiAgICogQHBhcmFtIHtTdHJpbmd9IG1cbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIHJhbmRleHAocmVnZXhwLCBtKSB7XG4gICAgdmFyIHJhbmRleHA7XG4gICAgaWYodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwLCBtKTtcbiAgICB9XG5cbiAgICBpZiAocmVnZXhwLl9yYW5kZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJhbmRleHAgPSBuZXcgUmFuZEV4cChyZWdleHAsIG0pO1xuICAgICAgcmVnZXhwLl9yYW5kZXhwID0gcmFuZGV4cDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZGV4cCA9IHJlZ2V4cC5fcmFuZGV4cDtcbiAgICAgIHJhbmRleHAuX3NldERlZmF1bHRzKHJlZ2V4cCk7XG4gICAgfVxuICAgIHJldHVybiByYW5kZXhwLmdlbigpO1xuICB9XG5cblxuICAvKipcbiAgICogRW5hYmxlcyBzdWdhcnkgL3JlZ2V4cC8uZ2VuIHN5bnRheC5cbiAgICovXG4gIHN0YXRpYyBzdWdhcigpIHtcbiAgICAvKiBlc2hpbnQgZnJlZXplOmZhbHNlICovXG4gICAgUmVnRXhwLnByb3RvdHlwZS5nZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBSYW5kRXhwLnJhbmRleHAodGhpcyk7XG4gICAgfTtcbiAgfVxufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnV0aWwuaW5oZXJpdHMoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gYXZvaWQgc2NvcGUgY3JlZXAsIHRoZSBrZXlzIGFycmF5IGNhbiB0aGVuIGJlIGNvbGxlY3RlZFxuICB2YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcblxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIG9uZW5kKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcG5hLm5leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgdGhpcy5lbmQoKTtcblxuICBwbmEubmV4dFRpY2soY2IsIGVycik7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgZGVidWcgPSB2b2lkIDA7XG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uICgpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXJMaXN0ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QnKTtcbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGtQcm94eUV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyKGV2ZW50LCBmbik7XG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xufVxuXG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgcmVhZGFibGVId20gPSBvcHRpb25zLnJlYWRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmIChyZWFkYWJsZUh3bSB8fCByZWFkYWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHJlYWRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZFxuICAvLyBpbW1lZGlhdGVseSwgb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZVxuICAvLyBhbnkgYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3QgcmVhZCBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcbiAgdGhpcy5hd2FpdERyYWluID0gMDtcblxuICAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcblxuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5wdXNoKG51bGwpO1xuICBjYihlcnIpO1xufTtcblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cbiAgICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIGVuY29kaW5nLCBmYWxzZSwgc2tpcENodW5rQ2hlY2spO1xufTtcblxuLy8gVW5zaGlmdCBzaG91bGQgKmFsd2F5cyogYmUgc29tZXRoaW5nIGRpcmVjdGx5IG91dCBvZiByZWFkKClcblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuICAgIGlmIChlcikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50JykpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG4vLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKTtcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IGVuYztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CXG52YXIgTUFYX0hXTSA9IDB4ODAwMDAwO1xuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47XG4gIC8vIERvbid0IGhhdmUgZW5vdWdoXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzdGF0ZS5sZW5ndGg7XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGEgYnVuY2ggb2YgZGF0YSBpbiB0aGUgYnVmZmVyLCB0aGVuIGp1c3QgdHJpZ2dlclxuICAvLyB0aGUgJ3JlYWRhYmxlJyBldmVudCBhbmQgbW92ZSBvbi5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBkZWJ1ZygncmVhZDogZW1pdFJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7ZWxzZSBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7XG5cbiAgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkge1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIGVuZFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cblxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG4gIHZhciBkb1JlYWQgPSBzdGF0ZS5uZWVkUmVhZGFibGU7XG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKTtcblxuICAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWU7XG4gICAgZGVidWcoJ2xlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrJywgZG9SZWFkKTtcbiAgfVxuXG4gIC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgICAvLyBpZiB0aGUgbGVuZ3RoIGlzIGN1cnJlbnRseSB6ZXJvLCB0aGVuIHdlICpuZWVkKiBhIHJlYWRhYmxlIGV2ZW50LlxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG4gICAgc3RhdGUuc3luYyA9IGZhbHNlO1xuICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cbiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO1xuICB9XG5cbiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTtcblxuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwbmEubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHBuYS5uZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUsIHVucGlwZUluZm8pIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKys7XG4gICAgICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpO1xuICAgIHVucGlwZSgpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgaWYgKEVFbGlzdGVuZXJDb3VudChkZXN0LCAnZXJyb3InKSA9PT0gMCkgZGVzdC5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKTtcbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH1cblxuICAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpO1xuXG4gIC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BpcGUgcmVzdW1lJyk7XG4gICAgc3JjLnJlc3VtZSgpO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5mdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiA9PT0gMCAmJiBFRWxpc3RlbmVyQ291bnQoc3JjLCAnZGF0YScpKSB7XG4gICAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICAgIGZsb3coc3JjKTtcbiAgICB9XG4gIH07XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgdW5waXBlSW5mbyA9IHsgaGFzVW5waXBlZDogZmFsc2UgfTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTtcbiAgICB9cmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG5cbiAgc3RhdGUucGlwZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3RhdGUucGlwZXNDb3VudCAtPSAxO1xuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTtcblxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldiwgZm4pO1xuXG4gIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgLy8gU3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHRoaXMucmVzdW1lKCk7XG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHBuYS5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgX3RoaXMucHVzaChjaHVuayk7XG4gICAgfVxuXG4gICAgX3RoaXMucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH1cblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICB0aGlzLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qIDxyZXBsYWNlbWVudD4gKi9cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcG5hLm5leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcblxuICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTtcblxuICAvLyBpZiBfZmluYWwgaGFzIGJlZW4gY2FsbGVkXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTtcblxuICAvLyBkcmFpbiBldmVudCBmbGFnLlxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTtcblxuLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgaWYgKHJlYWxIYXNJbnN0YW5jZS5jYWxsKHRoaXMsIG9iamVjdCkpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHRoaXMgIT09IFdyaXRhYmxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHtcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB9XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmluYWwgPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZpbmFsID0gb3B0aW9ucy5maW5hbDtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHBuYS5uZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBjYikge1xuICB2YXIgdmFsaWQgPSB0cnVlO1xuICB2YXIgZXIgPSBmYWxzZTtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcblxuICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcDtcblxuICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKTtcbiAgfVxufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykge1xuICAvLyBub2RlOjpQYXJzZUVuY29kaW5nKCkgcmVxdWlyZXMgbG93ZXIgY2FzZS5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIGVuY29kaW5nID0gZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKSB7XG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICB9XG4gIHJldHVybiBjaHVuaztcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGlmICghaXNCdWYpIHtcbiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcbiAgICBpZiAoY2h1bmsgIT09IG5ld0NodW5rKSB7XG4gICAgICBpc0J1ZiA9IHRydWU7XG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInO1xuICAgICAgY2h1bmsgPSBuZXdDaHVuaztcbiAgICB9XG4gIH1cbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IHtcbiAgICAgIGNodW5rOiBjaHVuayxcbiAgICAgIGVuY29kaW5nOiBlbmNvZGluZyxcbiAgICAgIGlzQnVmOiBpc0J1ZixcbiAgICAgIGNhbGxiYWNrOiBjYixcbiAgICAgIG5leHQ6IG51bGxcbiAgICB9O1xuICAgIGlmIChsYXN0KSB7XG4gICAgICBsYXN0Lm5leHQgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCArPSAxO1xuICB9IGVsc2Uge1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuO1xuICBzdGF0ZS53cml0ZWNiID0gY2I7XG4gIHN0YXRlLndyaXRpbmcgPSB0cnVlO1xuICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpO1xuICBzdGF0ZS5zeW5jID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpIHtcbiAgLS1zdGF0ZS5wZW5kaW5nY2I7XG5cbiAgaWYgKHN5bmMpIHtcbiAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBzeW5jaHJvbm91c2x5XG4gICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2tcbiAgICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbiAgICAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYW5kIGl0IHdpbGwgYWx3YXlzIGhhcHBlblxuICAgIC8vIGFmdGVyIGVycm9yXG4gICAgcG5hLm5leHRUaWNrKGZpbmlzaE1heWJlLCBzdHJlYW0sIHN0YXRlKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gdGhlIGNhbGxlciBleHBlY3QgdGhpcyB0byBoYXBwZW4gYmVmb3JlIGlmXG4gICAgLy8gaXQgaXMgYXN5bmNcbiAgICBjYihlcik7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBidXQgZmluaXNoIG11c3RcbiAgICAvLyBhbHdheXMgZm9sbG93IGVycm9yXG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7XG4gIGlmICghZmluaXNoZWQpIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKTtcbiAgc3RhdGUucGVuZGluZ2NiLS07XG4gIGNiKCk7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG4vLyBNdXN0IGZvcmNlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiBuZXh0VGljaywgc28gdGhhdCB3ZSBkb24ndFxuLy8gZW1pdCAnZHJhaW4nIGJlZm9yZSB0aGUgd3JpdGUoKSBjb25zdW1lciBnZXRzIHRoZSAnZmFsc2UnIHJldHVyblxuLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci5cbmZ1bmN0aW9uIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUubmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2RyYWluJyk7XG4gIH1cbn1cblxuLy8gaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXRcbmZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IHRydWU7XG4gIHZhciBlbnRyeSA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdDtcblxuICBpZiAoc3RyZWFtLl93cml0ZXYgJiYgZW50cnkgJiYgZW50cnkubmV4dCkge1xuICAgIC8vIEZhc3QgY2FzZSwgd3JpdGUgZXZlcnl0aGluZyB1c2luZyBfd3JpdGV2KClcbiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50O1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobCk7XG4gICAgdmFyIGhvbGRlciA9IHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZTtcbiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTtcblxuICAgIHZhciBjb3VudCA9IDA7XG4gICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgYnVmZmVyW2NvdW50XSA9IGVudHJ5O1xuICAgICAgaWYgKCFlbnRyeS5pc0J1ZikgYWxsQnVmZmVycyA9IGZhbHNlO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgYnVmZmVyLmFsbEJ1ZmZlcnMgPSBhbGxCdWZmZXJzO1xuXG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpO1xuXG4gICAgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgICBpZiAoaG9sZGVyLm5leHQpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGhvbGRlci5uZXh0O1xuICAgICAgaG9sZGVyLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBTbG93IGNhc2UsIHdyaXRlIGNodW5rcyBvbmUtYnktb25lXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbnRyeS5jaHVuaztcbiAgICAgIHZhciBlbmNvZGluZyA9IGVudHJ5LmVuY29kaW5nO1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudC0tO1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdfd3JpdGUoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rO1xuICAgIGNodW5rID0gbnVsbDtcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nICYmICFzdGF0ZS5maW5pc2hlZCkgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbn07XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cbmZ1bmN0aW9uIGNhbGxGaW5hbChzdHJlYW0sIHN0YXRlKSB7XG4gIHN0cmVhbS5fZmluYWwoZnVuY3Rpb24gKGVycikge1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgfVxuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlO1xuICAgICAgcG5hLm5leHRUaWNrKGNhbGxGaW5hbCwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuICBpZiAobmVlZCkge1xuICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICBpZiAoc3RhdGUucGVuZGluZ2NiID09PSAwKSB7XG4gICAgICBzdGF0ZS5maW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgnZmluaXNoJyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZWVkO1xufVxuXG5mdW5jdGlvbiBlbmRXcml0YWJsZShzdHJlYW0sIHN0YXRlLCBjYikge1xuICBzdGF0ZS5lbmRpbmcgPSB0cnVlO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwbmEubmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbkNvcmtlZEZpbmlzaChjb3JrUmVxLCBzdGF0ZSwgZXJyKSB7XG4gIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7XG4gIGNvcmtSZXEuZW50cnkgPSBudWxsO1xuICB3aGlsZSAoZW50cnkpIHtcbiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBjYihlcnIpO1xuICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgfVxuICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGNvcmtSZXE7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuV3JpdGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLmVuZCgpO1xuICBjYihlcnIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5mdW5jdGlvbiBjb3B5QnVmZmVyKHNyYywgdGFyZ2V0LCBvZmZzZXQpIHtcbiAgc3JjLmNvcHkodGFyZ2V0LCBvZmZzZXQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnVmZmVyTGlzdCk7XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2godikge1xuICAgIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogbnVsbCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICArK3RoaXMubGVuZ3RoO1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IHRoaXMuaGVhZCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7XG4gICAgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uIHNoaWZ0KCkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAtLXRoaXMubGVuZ3RoO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihzKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHJldCA9ICcnICsgcC5kYXRhO1xuICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICByZXQgKz0gcyArIHAuZGF0YTtcbiAgICB9cmV0dXJuIHJldDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQobikge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAocCkge1xuICAgICAgY29weUJ1ZmZlcihwLmRhdGEsIHJldCwgaSk7XG4gICAgICBpICs9IHAuZGF0YS5sZW5ndGg7XG4gICAgICBwID0gcC5uZXh0O1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpO1xuXG5pZiAodXRpbCAmJiB1dGlsLmluc3BlY3QgJiYgdXRpbC5pbnNwZWN0LmN1c3RvbSkge1xuICBtb2R1bGUuZXhwb3J0cy5wcm90b3R5cGVbdXRpbC5pbnNwZWN0LmN1c3RvbV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IHV0aWwuaW5zcGVjdCh7IGxlbmd0aDogdGhpcy5sZW5ndGggfSk7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArICcgJyArIG9iajtcbiAgfTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8vIHVuZG9jdW1lbnRlZCBjYigpIEFQSSwgbmVlZGVkIGZvciBjb3JlLCBub3QgZm9yIHB1YmxpYyBBUElcbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG5cbiAgaWYgKHJlYWRhYmxlRGVzdHJveWVkIHx8IHdyaXRhYmxlRGVzdHJveWVkKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH0gZWxzZSBpZiAoZXJyICYmICghdGhpcy5fd3JpdGFibGVTdGF0ZSB8fCAhdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQpKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCBfdGhpcywgZXJyKTtcbiAgICAgIGlmIChfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRFcnJvck5UKHNlbGYsIGVycikge1xuICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gIHVuZGVzdHJveTogdW5kZXN0cm95XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbiIsImNvbnN0IHV0aWwgICAgICA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuY29uc3QgdHlwZXMgICAgID0gcmVxdWlyZSgnLi90eXBlcycpO1xuY29uc3Qgc2V0cyAgICAgID0gcmVxdWlyZSgnLi9zZXRzJyk7XG5jb25zdCBwb3NpdGlvbnMgPSByZXF1aXJlKCcuL3Bvc2l0aW9ucycpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gKHJlZ2V4cFN0cikgPT4ge1xuICB2YXIgaSA9IDAsIGwsIGMsXG4gICAgc3RhcnQgPSB7IHR5cGU6IHR5cGVzLlJPT1QsIHN0YWNrOiBbXX0sXG5cbiAgICAvLyBLZWVwIHRyYWNrIG9mIGxhc3QgY2xhdXNlL2dyb3VwIGFuZCBzdGFjay5cbiAgICBsYXN0R3JvdXAgPSBzdGFydCxcbiAgICBsYXN0ID0gc3RhcnQuc3RhY2ssXG4gICAgZ3JvdXBTdGFjayA9IFtdO1xuXG5cbiAgdmFyIHJlcGVhdEVyciA9IChpKSA9PiB7XG4gICAgdXRpbC5lcnJvcihyZWdleHBTdHIsIGBOb3RoaW5nIHRvIHJlcGVhdCBhdCBjb2x1bW4gJHtpIC0gMX1gKTtcbiAgfTtcblxuICAvLyBEZWNvZGUgYSBmZXcgZXNjYXBlZCBjaGFyYWN0ZXJzLlxuICB2YXIgc3RyID0gdXRpbC5zdHJUb0NoYXJzKHJlZ2V4cFN0cik7XG4gIGwgPSBzdHIubGVuZ3RoO1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNoYXJhY3RlciBpbiBzdHJpbmcuXG4gIHdoaWxlIChpIDwgbCkge1xuICAgIGMgPSBzdHJbaSsrXTtcblxuICAgIHN3aXRjaCAoYykge1xuICAgICAgLy8gSGFuZGxlIGVzY2FwZWQgY2hhcmFjdGVycywgaW5jbHVlcyBhIGZldyBzZXRzLlxuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIGMgPSBzdHJbaSsrXTtcblxuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlICdiJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMud29yZEJvdW5kYXJ5KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMubm9uV29yZEJvdW5kYXJ5KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLndvcmRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLm5vdFdvcmRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLmludHMoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMubm90SW50cygpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy53aGl0ZXNwYWNlKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLm5vdFdoaXRlc3BhY2UoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBjIGlzIGludGVnZXIuXG4gICAgICAgICAgICAvLyBJbiB3aGljaCBjYXNlIGl0J3MgYSByZWZlcmVuY2UuXG4gICAgICAgICAgICBpZiAoL1xcZC8udGVzdChjKSkge1xuICAgICAgICAgICAgICBsYXN0LnB1c2goeyB0eXBlOiB0eXBlcy5SRUZFUkVOQ0UsIHZhbHVlOiBwYXJzZUludChjLCAxMCkgfSk7XG5cbiAgICAgICAgICAgIC8vIEVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdC5wdXNoKHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IGMuY2hhckNvZGVBdCgwKSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFBvc2l0aW9uYWxzLlxuICAgICAgY2FzZSAnXic6XG4gICAgICAgIGxhc3QucHVzaChwb3NpdGlvbnMuYmVnaW4oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICckJzpcbiAgICAgICAgbGFzdC5wdXNoKHBvc2l0aW9ucy5lbmQoKSk7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIEhhbmRsZSBjdXN0b20gc2V0cy5cbiAgICAgIGNhc2UgJ1snOlxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGNsYXNzIGlzICdhbnRpJyBpLmUuIFteYWJjXS5cbiAgICAgICAgdmFyIG5vdDtcbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ14nKSB7XG4gICAgICAgICAgbm90ID0gdHJ1ZTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm90ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIGNsYXNzLlxuICAgICAgICB2YXIgY2xhc3NUb2tlbnMgPSB1dGlsLnRva2VuaXplQ2xhc3Moc3RyLnNsaWNlKGkpLCByZWdleHBTdHIpO1xuXG4gICAgICAgIC8vIEluY3JlYXNlIGluZGV4IGJ5IGxlbmd0aCBvZiBjbGFzcy5cbiAgICAgICAgaSArPSBjbGFzc1Rva2Vuc1sxXTtcbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5TRVQsXG4gICAgICAgICAgc2V0OiBjbGFzc1Rva2Vuc1swXSxcbiAgICAgICAgICBub3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIENsYXNzIG9mIGFueSBjaGFyYWN0ZXIgZXhjZXB0IFxcbi5cbiAgICAgIGNhc2UgJy4nOlxuICAgICAgICBsYXN0LnB1c2goc2V0cy5hbnlDaGFyKCkpO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBQdXNoIGdyb3VwIG9udG8gc3RhY2suXG4gICAgICBjYXNlICcoJzpcbiAgICAgICAgLy8gQ3JlYXRlIGdyb3VwLlxuICAgICAgICB2YXIgZ3JvdXAgPSB7XG4gICAgICAgICAgdHlwZTogdHlwZXMuR1JPVVAsXG4gICAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgICAgIHJlbWVtYmVyOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGMgPSBzdHJbaV07XG5cbiAgICAgICAgLy8gSWYgaWYgdGhpcyBpcyBhIHNwZWNpYWwga2luZCBvZiBncm91cC5cbiAgICAgICAgaWYgKGMgPT09ICc/Jykge1xuICAgICAgICAgIGMgPSBzdHJbaSArIDFdO1xuICAgICAgICAgIGkgKz0gMjtcblxuICAgICAgICAgIC8vIE1hdGNoIGlmIGZvbGxvd2VkIGJ5LlxuICAgICAgICAgIGlmIChjID09PSAnPScpIHtcbiAgICAgICAgICAgIGdyb3VwLmZvbGxvd2VkQnkgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gTWF0Y2ggaWYgbm90IGZvbGxvd2VkIGJ5LlxuICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyEnKSB7XG4gICAgICAgICAgICBncm91cC5ub3RGb2xsb3dlZEJ5ID0gdHJ1ZTtcblxuICAgICAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJzonKSB7XG4gICAgICAgICAgICB1dGlsLmVycm9yKHJlZ2V4cFN0cixcbiAgICAgICAgICAgICAgYEludmFsaWQgZ3JvdXAsIGNoYXJhY3RlciAnJHtjfSdgICtcbiAgICAgICAgICAgICAgYCBhZnRlciAnPycgYXQgY29sdW1uICR7aSAtIDF9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JvdXAucmVtZW1iZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluc2VydCBzdWJncm91cCBpbnRvIGN1cnJlbnQgZ3JvdXAgc3RhY2suXG4gICAgICAgIGxhc3QucHVzaChncm91cCk7XG5cbiAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGN1cnJlbnQgZ3JvdXAgZm9yIHdoZW4gdGhlIGdyb3VwIGNsb3Nlcy5cbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKGxhc3RHcm91cCk7XG5cbiAgICAgICAgLy8gTWFrZSB0aGlzIG5ldyBncm91cCB0aGUgY3VycmVudCBncm91cC5cbiAgICAgICAgbGFzdEdyb3VwID0gZ3JvdXA7XG4gICAgICAgIGxhc3QgPSBncm91cC5zdGFjaztcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gUG9wIGdyb3VwIG91dCBvZiBzdGFjay5cbiAgICAgIGNhc2UgJyknOlxuICAgICAgICBpZiAoZ3JvdXBTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB1dGlsLmVycm9yKHJlZ2V4cFN0ciwgYFVubWF0Y2hlZCApIGF0IGNvbHVtbiAke2kgLSAxfWApO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RHcm91cCA9IGdyb3VwU3RhY2sucG9wKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBncm91cCBoYXMgYSBQSVBFLlxuICAgICAgICAvLyBUbyBnZXQgYmFjayB0aGUgY29ycmVjdCBsYXN0IHN0YWNrLlxuICAgICAgICBsYXN0ID0gbGFzdEdyb3VwLm9wdGlvbnMgP1xuICAgICAgICAgIGxhc3RHcm91cC5vcHRpb25zW2xhc3RHcm91cC5vcHRpb25zLmxlbmd0aCAtIDFdIDogbGFzdEdyb3VwLnN0YWNrO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBVc2UgcGlwZSBjaGFyYWN0ZXIgdG8gZ2l2ZSBtb3JlIGNob2ljZXMuXG4gICAgICBjYXNlICd8JzpcbiAgICAgICAgLy8gQ3JlYXRlIGFycmF5IHdoZXJlIG9wdGlvbnMgYXJlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IFBJUEVcbiAgICAgICAgLy8gaW4gdGhpcyBjbGF1c2UuXG4gICAgICAgIGlmICghbGFzdEdyb3VwLm9wdGlvbnMpIHtcbiAgICAgICAgICBsYXN0R3JvdXAub3B0aW9ucyA9IFtsYXN0R3JvdXAuc3RhY2tdO1xuICAgICAgICAgIGRlbGV0ZSBsYXN0R3JvdXAuc3RhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc3RhY2sgYW5kIGFkZCB0byBvcHRpb25zIGZvciByZXN0IG9mIGNsYXVzZS5cbiAgICAgICAgdmFyIHN0YWNrID0gW107XG4gICAgICAgIGxhc3RHcm91cC5vcHRpb25zLnB1c2goc3RhY2spO1xuICAgICAgICBsYXN0ID0gc3RhY2s7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFJlcGV0aXRpb24uXG4gICAgICAvLyBGb3IgZXZlcnkgcmVwZXRpdGlvbiwgcmVtb3ZlIGxhc3QgZWxlbWVudCBmcm9tIGxhc3Qgc3RhY2tcbiAgICAgIC8vIHRoZW4gaW5zZXJ0IGJhY2sgYSBSQU5HRSBvYmplY3QuXG4gICAgICAvLyBUaGlzIGRlc2lnbiBpcyBjaG9zZW4gYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtb3JlIHRoYW5cbiAgICAgIC8vIG9uZSByZXBldGl0aW9uIHN5bWJvbHMgaW4gYSByZWdleCBpLmUuIGBhPyt7MiwzfWAuXG4gICAgICBjYXNlICd7JzpcbiAgICAgICAgdmFyIHJzID0gL14oXFxkKykoLChcXGQrKT8pP1xcfS8uZXhlYyhzdHIuc2xpY2UoaSkpLCBtaW4sIG1heDtcbiAgICAgICAgaWYgKHJzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1pbiA9IHBhcnNlSW50KHJzWzFdLCAxMCk7XG4gICAgICAgICAgbWF4ID0gcnNbMl0gPyByc1szXSA/IHBhcnNlSW50KHJzWzNdLCAxMCkgOiBJbmZpbml0eSA6IG1pbjtcbiAgICAgICAgICBpICs9IHJzWzBdLmxlbmd0aDtcblxuICAgICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgdmFsdWU6IGxhc3QucG9wKCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVzLkNIQVIsXG4gICAgICAgICAgICB2YWx1ZTogMTIzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICc/JzpcbiAgICAgICAgaWYgKGxhc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmVwZWF0RXJyKGkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuUkVQRVRJVElPTixcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJysnOlxuICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICBtYXg6IEluZmluaXR5LFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJyonOlxuICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IEluZmluaXR5LFxuICAgICAgICAgIHZhbHVlOiBsYXN0LnBvcCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gRGVmYXVsdCBpcyBhIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBgXFxbXSgpe30/KypeJGAuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLkNIQVIsXG4gICAgICAgICAgdmFsdWU6IGMuY2hhckNvZGVBdCgwKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbnkgZ3JvdXBzIGhhdmUgbm90IGJlZW4gY2xvc2VkLlxuICBpZiAoZ3JvdXBTdGFjay5sZW5ndGggIT09IDApIHtcbiAgICB1dGlsLmVycm9yKHJlZ2V4cFN0ciwgJ1VudGVybWluYXRlZCBncm91cCcpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXJ0O1xufTtcblxubW9kdWxlLmV4cG9ydHMudHlwZXMgPSB0eXBlcztcbiIsImNvbnN0IHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xuZXhwb3J0cy53b3JkQm91bmRhcnkgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5QT1NJVElPTiwgdmFsdWU6ICdiJyB9KTtcbmV4cG9ydHMubm9uV29yZEJvdW5kYXJ5ID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnQicgfSk7XG5leHBvcnRzLmJlZ2luID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnXicgfSk7XG5leHBvcnRzLmVuZCA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlBPU0lUSU9OLCB2YWx1ZTogJyQnIH0pO1xuIiwiY29uc3QgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5cbmNvbnN0IElOVFMgPSAoKSA9PiBbeyB0eXBlOiB0eXBlcy5SQU5HRSAsIGZyb206IDQ4LCB0bzogNTcgfV07XG5cbmNvbnN0IFdPUkRTID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDk1IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5SQU5HRSwgZnJvbTogOTcsIHRvOiAxMjIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLlJBTkdFLCBmcm9tOiA2NSwgdG86IDkwIH1cbiAgXS5jb25jYXQoSU5UUygpKTtcbn07XG5cbmNvbnN0IFdISVRFU1BBQ0UgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogOSB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTEgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEzIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMzIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxNjAgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA1NzYwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5SQU5HRSwgZnJvbTogODE5MiwgdG86IDgyMDIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMyB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzkgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4Mjg3IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTIyODggfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA2NTI3OSB9XG4gIF07XG59O1xuXG5jb25zdCBOT1RBTllDSEFSID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEwIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTMgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzMyB9LFxuICBdO1xufTtcblxuLy8gUHJlZGVmaW5lZCBjbGFzcyBvYmplY3RzLlxuZXhwb3J0cy53b3JkcyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXT1JEUygpLCBub3Q6IGZhbHNlIH0pO1xuZXhwb3J0cy5ub3RXb3JkcyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXT1JEUygpLCBub3Q6IHRydWUgfSk7XG5leHBvcnRzLmludHMgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogSU5UUygpLCBub3Q6IGZhbHNlIH0pO1xuZXhwb3J0cy5ub3RJbnRzID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IElOVFMoKSwgbm90OiB0cnVlIH0pO1xuZXhwb3J0cy53aGl0ZXNwYWNlID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IFdISVRFU1BBQ0UoKSwgbm90OiBmYWxzZSB9KTtcbmV4cG9ydHMubm90V2hpdGVzcGFjZSA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBXSElURVNQQUNFKCksIG5vdDogdHJ1ZSB9KTtcbmV4cG9ydHMuYW55Q2hhciA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBOT1RBTllDSEFSKCksIG5vdDogdHJ1ZSB9KTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBST09UICAgICAgIDogMCxcbiAgR1JPVVAgICAgICA6IDEsXG4gIFBPU0lUSU9OICAgOiAyLFxuICBTRVQgICAgICAgIDogMyxcbiAgUkFOR0UgICAgICA6IDQsXG4gIFJFUEVUSVRJT04gOiA1LFxuICBSRUZFUkVOQ0UgIDogNixcbiAgQ0hBUiAgICAgICA6IDcsXG59O1xuIiwiY29uc3QgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5jb25zdCBzZXRzICA9IHJlcXVpcmUoJy4vc2V0cycpO1xuXG5cbmNvbnN0IENUUkwgPSAnQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXiA/JztcbmNvbnN0IFNMU0ggPSB7ICcwJzogMCwgJ3QnOiA5LCAnbic6IDEwLCAndic6IDExLCAnZic6IDEyLCAncic6IDEzIH07XG5cbi8qKlxuICogRmluZHMgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9ucyBpbiBzdHIgYW5kIGNvbnZlcnQgYWxsIHRvXG4gKiB0aGVpciByZXNwZWN0aXZlIGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydHMuc3RyVG9DaGFycyA9IGZ1bmN0aW9uKHN0cikge1xuICAvKiBqc2hpbnQgbWF4bGVuOiBmYWxzZSAqL1xuICB2YXIgY2hhcnNfcmVnZXggPSAvKFxcW1xcXFxiXFxdKXwoXFxcXCk/XFxcXCg/OnUoW0EtRjAtOV17NH0pfHgoW0EtRjAtOV17Mn0pfCgwP1swLTddezJ9KXxjKFtAQS1aW1xcXFxcXF1eP10pfChbMHRudmZyXSkpL2c7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKGNoYXJzX3JlZ2V4LCBmdW5jdGlvbihzLCBiLCBsYnMsIGExNiwgYjE2LCBjOCwgZGN0cmwsIGVzbHNoKSB7XG4gICAgaWYgKGxicykge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgdmFyIGNvZGUgPSBiID8gOCA6XG4gICAgICBhMTYgICA/IHBhcnNlSW50KGExNiwgMTYpIDpcbiAgICAgIGIxNiAgID8gcGFyc2VJbnQoYjE2LCAxNikgOlxuICAgICAgYzggICAgPyBwYXJzZUludChjOCwgICA4KSA6XG4gICAgICBkY3RybCA/IENUUkwuaW5kZXhPZihkY3RybCkgOlxuICAgICAgU0xTSFtlc2xzaF07XG5cbiAgICB2YXIgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG5cbiAgICAvLyBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzLlxuICAgIGlmICgvW1tcXF17fV4kLnw/KisoKV0vLnRlc3QoYykpIHtcbiAgICAgIGMgPSAnXFxcXCcgKyBjO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9KTtcblxuICByZXR1cm4gc3RyO1xufTtcblxuXG4vKipcbiAqIHR1cm5zIGNsYXNzIGludG8gdG9rZW5zXG4gKiByZWFkcyBzdHIgdW50aWwgaXQgZW5jb3VudGVycyBhIF0gbm90IHByZWNlZWRlZCBieSBhIFxcXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtTdHJpbmd9IHJlZ2V4cFN0clxuICogQHJldHVybiB7QXJyYXkuPEFycmF5LjxPYmplY3Q+LCBOdW1iZXI+fVxuICovXG5leHBvcnRzLnRva2VuaXplQ2xhc3MgPSAoc3RyLCByZWdleHBTdHIpID0+IHtcbiAgLyoganNoaW50IG1heGxlbjogZmFsc2UgKi9cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcmVnZXhwID0gL1xcXFwoPzoodyl8KGQpfChzKXwoVyl8KEQpfChTKSl8KCg/Oig/OlxcXFwpKC4pfChbXlxcXVxcXFxdKSktKD86XFxcXCk/KFteXFxdXSkpfChcXF0pfCg/OlxcXFwpPyhbXl0pL2c7XG4gIHZhciBycywgYztcblxuXG4gIHdoaWxlICgocnMgPSByZWdleHAuZXhlYyhzdHIpKSAhPSBudWxsKSB7XG4gICAgaWYgKHJzWzFdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLndvcmRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1syXSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5pbnRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1szXSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy53aGl0ZXNwYWNlKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1s0XSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5ub3RXb3JkcygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbNV0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMubm90SW50cygpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbNl0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMubm90V2hpdGVzcGFjZSgpKTtcblxuICAgIH0gZWxzZSBpZiAocnNbN10pIHtcbiAgICAgIHRva2Vucy5wdXNoKHtcbiAgICAgICAgdHlwZTogdHlwZXMuUkFOR0UsXG4gICAgICAgIGZyb206IChyc1s4XSB8fCByc1s5XSkuY2hhckNvZGVBdCgwKSxcbiAgICAgICAgdG86IHJzWzEwXS5jaGFyQ29kZUF0KDApLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2UgaWYgKChjID0gcnNbMTJdKSkge1xuICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICB0eXBlOiB0eXBlcy5DSEFSLFxuICAgICAgICB2YWx1ZTogYy5jaGFyQ29kZUF0KDApLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFt0b2tlbnMsIHJlZ2V4cC5sYXN0SW5kZXhdO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydHMuZXJyb3IocmVnZXhwU3RyLCAnVW50ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcycpO1xufTtcblxuXG4vKipcbiAqIFNob3J0Y3V0IHRvIHRocm93IGVycm9ycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcmVnZXhwXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnXG4gKi9cbmV4cG9ydHMuZXJyb3IgPSAocmVnZXhwLCBtc2cpID0+IHtcbiAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogLycgKyByZWdleHAgKyAnLzogJyArIG1zZyk7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBDb3B5IHN0YXRpYyBtZXRob2RzIGZyb20gQnVmZmVyXG5jb3B5UHJvcHMoQnVmZmVyLCBTYWZlQnVmZmVyKVxuXG5TYWZlQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHZhciBidWYgPSBCdWZmZXIoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmZpbGwoZmlsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoMClcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihzaXplKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSlcbn1cbiIsInZhciB1bnBhcnNlID0gcmVxdWlyZSgnZXNjb2RlZ2VuJykuZ2VuZXJhdGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFzdCwgdmFycykge1xuICAgIGlmICghdmFycykgdmFycyA9IHt9O1xuICAgIHZhciBGQUlMID0ge307XG4gICAgXG4gICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbiB3YWxrIChub2RlLCBzY29wZVZhcnMpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdVbmFyeUV4cHJlc3Npb24nKXtcbiAgICAgICAgICAgIHZhciB2YWwgPSB3YWxrKG5vZGUuYXJndW1lbnQpXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJysnKSByZXR1cm4gK3ZhbFxuICAgICAgICAgICAgaWYgKG5vZGUub3BlcmF0b3IgPT09ICctJykgcmV0dXJuIC12YWxcbiAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdG9yID09PSAnficpIHJldHVybiB+dmFsXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJyEnKSByZXR1cm4gIXZhbFxuICAgICAgICAgICAgcmV0dXJuIEZBSUxcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdBcnJheUV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgeHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5lbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IHdhbGsobm9kZS5lbGVtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKHggPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIHhzLnB1c2goeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3AgPSBub2RlLnByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IHByb3AudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB3YWxrKHByb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICAgICAgb2JqW3Byb3Aua2V5LnZhbHVlIHx8IHByb3Aua2V5Lm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0JpbmFyeUV4cHJlc3Npb24nIHx8XG4gICAgICAgICAgICAgICAgIG5vZGUudHlwZSA9PT0gJ0xvZ2ljYWxFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIGwgPSB3YWxrKG5vZGUubGVmdCk7XG4gICAgICAgICAgICBpZiAobCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICB2YXIgciA9IHdhbGsobm9kZS5yaWdodCk7XG4gICAgICAgICAgICBpZiAociA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBvcCA9IG5vZGUub3BlcmF0b3I7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc9PScpIHJldHVybiBsID09IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc9PT0nKSByZXR1cm4gbCA9PT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyE9JykgcmV0dXJuIGwgIT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyE9PScpIHJldHVybiBsICE9PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnKycpIHJldHVybiBsICsgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJy0nKSByZXR1cm4gbCAtIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcqJykgcmV0dXJuIGwgKiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnLycpIHJldHVybiBsIC8gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyUnKSByZXR1cm4gbCAlIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc8JykgcmV0dXJuIGwgPCByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPD0nKSByZXR1cm4gbCA8PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPicpIHJldHVybiBsID4gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJz49JykgcmV0dXJuIGwgPj0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJ3wnKSByZXR1cm4gbCB8IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcmJykgcmV0dXJuIGwgJiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnXicpIHJldHVybiBsIF4gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyYmJykgcmV0dXJuIGwgJiYgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJ3x8JykgcmV0dXJuIGwgfHwgcjtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIEZBSUw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsIG5vZGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1tub2RlLm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSByZXR1cm4gRkFJTDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUaGlzRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsICd0aGlzJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1sndGhpcyddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSByZXR1cm4gRkFJTDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdDYWxsRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciBjYWxsZWUgPSB3YWxrKG5vZGUuY2FsbGVlKTtcbiAgICAgICAgICAgIGlmIChjYWxsZWUgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsZWUgIT09ICdmdW5jdGlvbicpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIgY3R4ID0gbm9kZS5jYWxsZWUub2JqZWN0ID8gd2Fsayhub2RlLmNhbGxlZS5vYmplY3QpIDogRkFJTDtcbiAgICAgICAgICAgIGlmIChjdHggPT09IEZBSUwpIGN0eCA9IG51bGw7XG5cbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gd2Fsayhub2RlLmFyZ3VtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKHggPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjYWxsZWUuYXBwbHkoY3R4LCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIG9iaiA9IHdhbGsobm9kZS5vYmplY3QpO1xuICAgICAgICAgICAgLy8gZG8gbm90IGFsbG93IGFjY2VzcyB0byBtZXRob2RzIG9uIEZ1bmN0aW9uIFxuICAgICAgICAgICAgaWYoKG9iaiA9PT0gRkFJTCkgfHwgKHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialtub2RlLnByb3BlcnR5Lm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHByb3AgPSB3YWxrKG5vZGUucHJvcGVydHkpO1xuICAgICAgICAgICAgaWYgKHByb3AgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdDb25kaXRpb25hbEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gd2Fsayhub2RlLnRlc3QpXG4gICAgICAgICAgICBpZiAodmFsID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHJldHVybiB2YWwgPyB3YWxrKG5vZGUuY29uc2VxdWVudCkgOiB3YWxrKG5vZGUuYWx0ZXJuYXRlKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gd2Fsayhub2RlLmV4cHJlc3Npb24pXG4gICAgICAgICAgICBpZiAodmFsID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnUmV0dXJuU3RhdGVtZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIHdhbGsobm9kZS5hcmd1bWVudClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBib2RpZXMgPSBub2RlLmJvZHkuYm9keTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgXCJzY29wZVwiIGZvciBvdXIgYXJndW1lbnRzXG4gICAgICAgICAgICB2YXIgb2xkVmFycyA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXModmFycykuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KXtcbiAgICAgICAgICAgICAgICBvbGRWYXJzW2VsZW1lbnRdID0gdmFyc1tlbGVtZW50XTtcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG5vZGUucGFyYW1zLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICAgICAgaWYoa2V5LnR5cGUgPT0gJ0lkZW50aWZpZXInKXtcbiAgICAgICAgICAgICAgICAgIHZhcnNba2V5Lm5hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcih2YXIgaSBpbiBib2RpZXMpe1xuICAgICAgICAgICAgICAgIGlmKHdhbGsoYm9kaWVzW2ldKSA9PT0gRkFJTCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhlIHZhcnMgYW5kIHNjb3BlIGFmdGVyIHdlIHdhbGtcbiAgICAgICAgICAgIHZhcnMgPSBvbGRWYXJzO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhcnMpO1xuICAgICAgICAgICAgdmFyIHZhbHMgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyc1trZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gRnVuY3Rpb24oa2V5cy5qb2luKCcsICcpLCAncmV0dXJuICcgKyB1bnBhcnNlKG5vZGUpKS5hcHBseShudWxsLCB2YWxzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdUZW1wbGF0ZUxpdGVyYWwnKSB7XG4gICAgICAgICAgICB2YXIgc3RyID0gJyc7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gd2Fsayhub2RlLnF1YXNpc1tpXSk7XG4gICAgICAgICAgICAgICAgc3RyICs9IHdhbGsobm9kZS5leHByZXNzaW9uc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHIgKz0gd2Fsayhub2RlLnF1YXNpc1tpXSk7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciB0YWcgPSB3YWxrKG5vZGUudGFnKTtcbiAgICAgICAgICAgIHZhciBxdWFzaSA9IG5vZGUucXVhc2k7XG4gICAgICAgICAgICB2YXIgc3RyaW5ncyA9IHF1YXNpLnF1YXNpcy5tYXAod2Fsayk7XG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gcXVhc2kuZXhwcmVzc2lvbnMubWFwKHdhbGspO1xuICAgICAgICAgICAgcmV0dXJuIHRhZy5hcHBseShudWxsLCBbc3RyaW5nc10uY29uY2F0KHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RlbXBsYXRlRWxlbWVudCcpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlLmNvb2tlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHJldHVybiBGQUlMO1xuICAgIH0pKGFzdCk7XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gRkFJTCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbn07XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxNSBJbmd2YXIgU3RlcGFueWFuIDxtZUBycmV2ZXJzZXIuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTQgSXZhbiBOaWt1bGluIDxpZmFhYW5AZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNaWNoYWVsIEZpY2FycmEgPGVzY29kZWdlbi5jb3B5cmlnaHRAbWljaGFlbC5maWNhcnJhLm1lPlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgSXJha2xpIEdvemFsaXNodmlsaSA8cmZvYmljQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIFJvYmVydCBHdXN0LUJhcmRvbiA8ZG9uYXRlQHJvYmVydC5ndXN0LWJhcmRvbi5vcmc+XG4gIENvcHlyaWdodCAoQykgMjAxMiBKb2huIEZyZWVtYW4gPGpmcmVlbWFuMDhAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEpvb3N0LVdpbSBCb2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgS3JpcyBLb3dhbCA8a3Jpcy5rb3dhbEBjaXhhci5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4vKmdsb2JhbCBleHBvcnRzOnRydWUsIHJlcXVpcmU6dHJ1ZSwgZ2xvYmFsOnRydWUqL1xuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgU3ludGF4LFxuICAgICAgICBQcmVjZWRlbmNlLFxuICAgICAgICBCaW5hcnlQcmVjZWRlbmNlLFxuICAgICAgICBTb3VyY2VOb2RlLFxuICAgICAgICBlc3RyYXZlcnNlLFxuICAgICAgICBlc3V0aWxzLFxuICAgICAgICBiYXNlLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGpzb24sXG4gICAgICAgIHJlbnVtYmVyLFxuICAgICAgICBoZXhhZGVjaW1hbCxcbiAgICAgICAgcXVvdGVzLFxuICAgICAgICBlc2NhcGVsZXNzLFxuICAgICAgICBuZXdsaW5lLFxuICAgICAgICBzcGFjZSxcbiAgICAgICAgcGFyZW50aGVzZXMsXG4gICAgICAgIHNlbWljb2xvbnMsXG4gICAgICAgIHNhZmVDb25jYXRlbmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmUsXG4gICAgICAgIGV4dHJhLFxuICAgICAgICBwYXJzZSxcbiAgICAgICAgc291cmNlTWFwLFxuICAgICAgICBzb3VyY2VDb2RlLFxuICAgICAgICBwcmVzZXJ2ZUJsYW5rTGluZXMsXG4gICAgICAgIEZPUk1BVF9NSU5JRlksXG4gICAgICAgIEZPUk1BVF9ERUZBVUxUUztcblxuICAgIGVzdHJhdmVyc2UgPSByZXF1aXJlKCdlc3RyYXZlcnNlJyk7XG4gICAgZXN1dGlscyA9IHJlcXVpcmUoJ2VzdXRpbHMnKTtcblxuICAgIFN5bnRheCA9IGVzdHJhdmVyc2UuU3ludGF4O1xuXG4gICAgLy8gR2VuZXJhdGlvbiBpcyBkb25lIGJ5IGdlbmVyYXRlRXhwcmVzc2lvbi5cbiAgICBmdW5jdGlvbiBpc0V4cHJlc3Npb24obm9kZSkge1xuICAgICAgICByZXR1cm4gQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uLmhhc093blByb3BlcnR5KG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGlvbiBpcyBkb25lIGJ5IGdlbmVyYXRlU3RhdGVtZW50LlxuICAgIGZ1bmN0aW9uIGlzU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIENvZGVHZW5lcmF0b3IuU3RhdGVtZW50Lmhhc093blByb3BlcnR5KG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgUHJlY2VkZW5jZSA9IHtcbiAgICAgICAgU2VxdWVuY2U6IDAsXG4gICAgICAgIFlpZWxkOiAxLFxuICAgICAgICBBd2FpdDogMSxcbiAgICAgICAgQXNzaWdubWVudDogMSxcbiAgICAgICAgQ29uZGl0aW9uYWw6IDIsXG4gICAgICAgIEFycm93RnVuY3Rpb246IDIsXG4gICAgICAgIExvZ2ljYWxPUjogMyxcbiAgICAgICAgTG9naWNhbEFORDogNCxcbiAgICAgICAgQml0d2lzZU9SOiA1LFxuICAgICAgICBCaXR3aXNlWE9SOiA2LFxuICAgICAgICBCaXR3aXNlQU5EOiA3LFxuICAgICAgICBFcXVhbGl0eTogOCxcbiAgICAgICAgUmVsYXRpb25hbDogOSxcbiAgICAgICAgQml0d2lzZVNISUZUOiAxMCxcbiAgICAgICAgQWRkaXRpdmU6IDExLFxuICAgICAgICBNdWx0aXBsaWNhdGl2ZTogMTIsXG4gICAgICAgIFVuYXJ5OiAxMyxcbiAgICAgICAgUG9zdGZpeDogMTQsXG4gICAgICAgIENhbGw6IDE1LFxuICAgICAgICBOZXc6IDE2LFxuICAgICAgICBUYWdnZWRUZW1wbGF0ZTogMTcsXG4gICAgICAgIE1lbWJlcjogMTgsXG4gICAgICAgIFByaW1hcnk6IDE5XG4gICAgfTtcblxuICAgIEJpbmFyeVByZWNlZGVuY2UgPSB7XG4gICAgICAgICd8fCc6IFByZWNlZGVuY2UuTG9naWNhbE9SLFxuICAgICAgICAnJiYnOiBQcmVjZWRlbmNlLkxvZ2ljYWxBTkQsXG4gICAgICAgICd8JzogUHJlY2VkZW5jZS5CaXR3aXNlT1IsXG4gICAgICAgICdeJzogUHJlY2VkZW5jZS5CaXR3aXNlWE9SLFxuICAgICAgICAnJic6IFByZWNlZGVuY2UuQml0d2lzZUFORCxcbiAgICAgICAgJz09JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJyE9JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJz09PSc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICchPT0nOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnaXMnOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnaXNudCc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICc8JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPic6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJzw9JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPj0nOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICdpbic6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJ2luc3RhbmNlb2YnOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICc8PCc6IFByZWNlZGVuY2UuQml0d2lzZVNISUZULFxuICAgICAgICAnPj4nOiBQcmVjZWRlbmNlLkJpdHdpc2VTSElGVCxcbiAgICAgICAgJz4+Pic6IFByZWNlZGVuY2UuQml0d2lzZVNISUZULFxuICAgICAgICAnKyc6IFByZWNlZGVuY2UuQWRkaXRpdmUsXG4gICAgICAgICctJzogUHJlY2VkZW5jZS5BZGRpdGl2ZSxcbiAgICAgICAgJyonOiBQcmVjZWRlbmNlLk11bHRpcGxpY2F0aXZlLFxuICAgICAgICAnJSc6IFByZWNlZGVuY2UuTXVsdGlwbGljYXRpdmUsXG4gICAgICAgICcvJzogUHJlY2VkZW5jZS5NdWx0aXBsaWNhdGl2ZVxuICAgIH07XG5cbiAgICAvL0ZsYWdzXG4gICAgdmFyIEZfQUxMT1dfSU4gPSAxLFxuICAgICAgICBGX0FMTE9XX0NBTEwgPSAxIDw8IDEsXG4gICAgICAgIEZfQUxMT1dfVU5QQVJBVEhfTkVXID0gMSA8PCAyLFxuICAgICAgICBGX0ZVTkNfQk9EWSA9IDEgPDwgMyxcbiAgICAgICAgRl9ESVJFQ1RJVkVfQ1RYID0gMSA8PCA0LFxuICAgICAgICBGX1NFTUlDT0xPTl9PUFQgPSAxIDw8IDU7XG5cbiAgICAvL0V4cHJlc3Npb24gZmxhZyBzZXRzXG4gICAgLy9OT1RFOiBGbGFnIG9yZGVyOlxuICAgIC8vIEZfQUxMT1dfSU5cbiAgICAvLyBGX0FMTE9XX0NBTExcbiAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FV1xuICAgIHZhciBFX0ZUVCA9IEZfQUxMT1dfQ0FMTCB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXLFxuICAgICAgICBFX1RURiA9IEZfQUxMT1dfSU4gfCBGX0FMTE9XX0NBTEwsXG4gICAgICAgIEVfVFRUID0gRl9BTExPV19JTiB8IEZfQUxMT1dfQ0FMTCB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXLFxuICAgICAgICBFX1RGRiA9IEZfQUxMT1dfSU4sXG4gICAgICAgIEVfRkZUID0gRl9BTExPV19VTlBBUkFUSF9ORVcsXG4gICAgICAgIEVfVEZUID0gRl9BTExPV19JTiB8IEZfQUxMT1dfVU5QQVJBVEhfTkVXO1xuXG4gICAgLy9TdGF0ZW1lbnQgZmxhZyBzZXRzXG4gICAgLy9OT1RFOiBGbGFnIG9yZGVyOlxuICAgIC8vIEZfQUxMT1dfSU5cbiAgICAvLyBGX0ZVTkNfQk9EWVxuICAgIC8vIEZfRElSRUNUSVZFX0NUWFxuICAgIC8vIEZfU0VNSUNPTE9OX09QVFxuICAgIHZhciBTX1RGRkYgPSBGX0FMTE9XX0lOLFxuICAgICAgICBTX1RGRlQgPSBGX0FMTE9XX0lOIHwgRl9TRU1JQ09MT05fT1BULFxuICAgICAgICBTX0ZGRkYgPSAweDAwLFxuICAgICAgICBTX1RGVEYgPSBGX0FMTE9XX0lOIHwgRl9ESVJFQ1RJVkVfQ1RYLFxuICAgICAgICBTX1RURkYgPSBGX0FMTE9XX0lOIHwgRl9GVU5DX0JPRFk7XG5cbiAgICBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgICAgICAgLy8gZGVmYXVsdCBvcHRpb25zXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRlbnQ6IG51bGwsXG4gICAgICAgICAgICBiYXNlOiBudWxsLFxuICAgICAgICAgICAgcGFyc2U6IG51bGwsXG4gICAgICAgICAgICBjb21tZW50OiBmYWxzZSxcbiAgICAgICAgICAgIGZvcm1hdDoge1xuICAgICAgICAgICAgICAgIGluZGVudDoge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJyAgICAnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlOiAwLFxuICAgICAgICAgICAgICAgICAgICBhZGp1c3RNdWx0aWxpbmVDb21tZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmV3bGluZTogJ1xcbicsXG4gICAgICAgICAgICAgICAgc3BhY2U6ICcgJyxcbiAgICAgICAgICAgICAgICBqc29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZW51bWJlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGV4YWRlY2ltYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHF1b3RlczogJ3NpbmdsZScsXG4gICAgICAgICAgICAgICAgZXNjYXBlbGVzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29tcGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGFyZW50aGVzZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgc2VtaWNvbG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzYWZlQ29uY2F0ZW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcHJlc2VydmVCbGFua0xpbmVzOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vejoge1xuICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25FeHByZXNzaW9uU3RhcnRzV2l0aEFzc2lnbm1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHN0YXJsZXNzR2VuZXJhdG9yOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvdXJjZU1hcDogbnVsbCxcbiAgICAgICAgICAgIHNvdXJjZU1hcFJvb3Q6IG51bGwsXG4gICAgICAgICAgICBzb3VyY2VNYXBXaXRoQ29kZTogZmFsc2UsXG4gICAgICAgICAgICBkaXJlY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmF3OiB0cnVlLFxuICAgICAgICAgICAgdmVyYmF0aW06IG51bGwsXG4gICAgICAgICAgICBzb3VyY2VDb2RlOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5nUmVwZWF0KHN0ciwgbnVtKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJztcblxuICAgICAgICBmb3IgKG51bSB8PSAwOyBudW0gPiAwOyBudW0gPj4+PSAxLCBzdHIgKz0gc3RyKSB7XG4gICAgICAgICAgICBpZiAobnVtICYgMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdHI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0xpbmVUZXJtaW5hdG9yKHN0cikge1xuICAgICAgICByZXR1cm4gKC9bXFxyXFxuXS9nKS50ZXN0KHN0cik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kc1dpdGhMaW5lVGVybWluYXRvcihzdHIpIHtcbiAgICAgICAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7XG4gICAgICAgIHJldHVybiBsZW4gJiYgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3Ioc3RyLmNoYXJDb2RlQXQobGVuIC0gMSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgb3ZlcnJpZGUpIHtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChrZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGlmIChvdmVycmlkZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBvdmVycmlkZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlRGVlcGx5KHRhcmdldCwgb3ZlcnJpZGUpIHtcbiAgICAgICAgdmFyIGtleSwgdmFsO1xuXG4gICAgICAgIGZ1bmN0aW9uIGlzSGFzaE9iamVjdCh0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiB0YXJnZXQgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh0YXJnZXQgaW5zdGFuY2VvZiBSZWdFeHApO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChrZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGlmIChvdmVycmlkZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gb3ZlcnJpZGVba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIYXNoT2JqZWN0KHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGFzaE9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURlZXBseSh0YXJnZXRba2V5XSwgdmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gdXBkYXRlRGVlcGx5KHt9LCB2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVOdW1iZXIodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgcG9pbnQsIHRlbXAsIGV4cG9uZW50LCBwb3M7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOdW1lcmljIGxpdGVyYWwgd2hvc2UgdmFsdWUgaXMgTmFOJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTnVtZXJpYyBsaXRlcmFsIHdob3NlIHZhbHVlIGlzIG5lZ2F0aXZlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgPT09IDEgLyAwKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbiA/ICdudWxsJyA6IHJlbnVtYmVyID8gJzFlNDAwJyA6ICcxZSs0MDAnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gJycgKyB2YWx1ZTtcbiAgICAgICAgaWYgKCFyZW51bWJlciB8fCByZXN1bHQubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvaW50ID0gcmVzdWx0LmluZGV4T2YoJy4nKTtcbiAgICAgICAgaWYgKCFqc29uICYmIHJlc3VsdC5jaGFyQ29kZUF0KDApID09PSAweDMwICAvKiAwICovICYmIHBvaW50ID09PSAxKSB7XG4gICAgICAgICAgICBwb2ludCA9IDA7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGVtcCA9IHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoJ2UrJywgJ2UnKTtcbiAgICAgICAgZXhwb25lbnQgPSAwO1xuICAgICAgICBpZiAoKHBvcyA9IHRlbXAuaW5kZXhPZignZScpKSA+IDApIHtcbiAgICAgICAgICAgIGV4cG9uZW50ID0gK3RlbXAuc2xpY2UocG9zICsgMSk7XG4gICAgICAgICAgICB0ZW1wID0gdGVtcC5zbGljZSgwLCBwb3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2ludCA+PSAwKSB7XG4gICAgICAgICAgICBleHBvbmVudCAtPSB0ZW1wLmxlbmd0aCAtIHBvaW50IC0gMTtcbiAgICAgICAgICAgIHRlbXAgPSArKHRlbXAuc2xpY2UoMCwgcG9pbnQpICsgdGVtcC5zbGljZShwb2ludCArIDEpKSArICcnO1xuICAgICAgICB9XG4gICAgICAgIHBvcyA9IDA7XG4gICAgICAgIHdoaWxlICh0ZW1wLmNoYXJDb2RlQXQodGVtcC5sZW5ndGggKyBwb3MgLSAxKSA9PT0gMHgzMCAgLyogMCAqLykge1xuICAgICAgICAgICAgLS1wb3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyAhPT0gMCkge1xuICAgICAgICAgICAgZXhwb25lbnQgLT0gcG9zO1xuICAgICAgICAgICAgdGVtcCA9IHRlbXAuc2xpY2UoMCwgcG9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwb25lbnQgIT09IDApIHtcbiAgICAgICAgICAgIHRlbXAgKz0gJ2UnICsgZXhwb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0ZW1wLmxlbmd0aCA8IHJlc3VsdC5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgKGhleGFkZWNpbWFsICYmIHZhbHVlID4gMWUxMiAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWUgJiYgKHRlbXAgPSAnMHgnICsgdmFsdWUudG9TdHJpbmcoMTYpKS5sZW5ndGggPCByZXN1bHQubGVuZ3RoKSkgJiZcbiAgICAgICAgICAgICAgICArdGVtcCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHZhbGlkIFJlZ0V4cCBleHByZXNzaW9uLlxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL0NvbnN0ZWxsYXRpb24vaXYgRW5naW5lXG5cbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHBDaGFyYWN0ZXIoY2gsIHByZXZpb3VzSXNCYWNrc2xhc2gpIHtcbiAgICAgICAgLy8gbm90IGhhbmRsaW5nICdcXCcgYW5kIGhhbmRsaW5nIFxcdTIwMjggb3IgXFx1MjAyOSB0byB1bmljb2RlIGVzY2FwZSBzZXF1ZW5jZVxuICAgICAgICBpZiAoKGNoICYgfjEpID09PSAweDIwMjgpIHtcbiAgICAgICAgICAgIHJldHVybiAocHJldmlvdXNJc0JhY2tzbGFzaCA/ICd1JyA6ICdcXFxcdScpICsgKChjaCA9PT0gMHgyMDI4KSA/ICcyMDI4JyA6ICcyMDI5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDEwIHx8IGNoID09PSAxMykgeyAgLy8gXFxuLCBcXHJcbiAgICAgICAgICAgIHJldHVybiAocHJldmlvdXNJc0JhY2tzbGFzaCA/ICcnIDogJ1xcXFwnKSArICgoY2ggPT09IDEwKSA/ICduJyA6ICdyJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmVnRXhwKHJlZykge1xuICAgICAgICB2YXIgbWF0Y2gsIHJlc3VsdCwgZmxhZ3MsIGksIGl6LCBjaCwgY2hhcmFjdGVySW5CcmFjaywgcHJldmlvdXNJc0JhY2tzbGFzaDtcblxuICAgICAgICByZXN1bHQgPSByZWcudG9TdHJpbmcoKTtcblxuICAgICAgICBpZiAocmVnLnNvdXJjZSkge1xuICAgICAgICAgICAgLy8gZXh0cmFjdCBmbGFnIGZyb20gdG9TdHJpbmcgcmVzdWx0XG4gICAgICAgICAgICBtYXRjaCA9IHJlc3VsdC5tYXRjaCgvXFwvKFteL10qKSQvKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmbGFncyA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgICAgICAgICAgIGNoYXJhY3RlckluQnJhY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHByZXZpb3VzSXNCYWNrc2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gcmVnLnNvdXJjZS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgY2ggPSByZWcuc291cmNlLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSXNCYWNrc2xhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckluQnJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gOTMpIHsgIC8vIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJyYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDQ3KSB7ICAvLyAvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXFxcJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDkxKSB7ICAvLyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVySW5CcmFjayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVzY2FwZVJlZ0V4cENoYXJhY3RlcihjaCwgcHJldmlvdXNJc0JhY2tzbGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSXNCYWNrc2xhc2ggPSBjaCA9PT0gOTI7ICAvLyBcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIG5ldyBSZWdFeHAoXCJcXFxcXFxuJykgaXMgcHJvdmlkZWQsIGNyZWF0ZSAvXFxuL1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlUmVnRXhwQ2hhcmFjdGVyKGNoLCBwcmV2aW91c0lzQmFja3NsYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJldmVudCBsaWtlIC9cXFxcWy9dL1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0lzQmFja3NsYXNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJy8nICsgcmVzdWx0ICsgJy8nICsgZmxhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVzY2FwZUFsbG93ZWRDaGFyYWN0ZXIoY29kZSwgbmV4dCkge1xuICAgICAgICB2YXIgaGV4O1xuXG4gICAgICAgIGlmIChjb2RlID09PSAweDA4ICAvKiBcXGIgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXGInO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MEMgIC8qIFxcZiAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcZic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwOSAgLyogXFx0ICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGhleCA9IGNvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChqc29uIHx8IGNvZGUgPiAweEZGKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1JyArICcwMDAwJy5zbGljZShoZXgubGVuZ3RoKSArIGhleDtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDAwMDAgJiYgIWVzdXRpbHMuY29kZS5pc0RlY2ltYWxEaWdpdChuZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgwMDBCICAvKiBcXHYgKi8pIHsgLy8gJ1xcdidcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHgwQic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx4JyArICcwMCcuc2xpY2UoaGV4Lmxlbmd0aCkgKyBoZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVEaXNhbGxvd2VkQ2hhcmFjdGVyKGNvZGUpIHtcbiAgICAgICAgaWYgKGNvZGUgPT09IDB4NUMgIC8qIFxcICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxcXFxcJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDBBICAvKiBcXG4gKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXG4nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MEQgIC8qIFxcciAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxccic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgyMDI4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1MjAyOCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgyMDI5KSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx1MjAyOSc7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdGx5IGNsYXNzaWZpZWQgY2hhcmFjdGVyJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlRGlyZWN0aXZlKHN0cikge1xuICAgICAgICB2YXIgaSwgaXosIGNvZGUsIHF1b3RlO1xuXG4gICAgICAgIHF1b3RlID0gcXVvdGVzID09PSAnZG91YmxlJyA/ICdcIicgOiAnXFwnJztcbiAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdHIubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDB4MjcgIC8qICcgKi8pIHtcbiAgICAgICAgICAgICAgICBxdW90ZSA9ICdcIic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MjIgIC8qIFwiICovKSB7XG4gICAgICAgICAgICAgICAgcXVvdGUgPSAnXFwnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg1QyAgLyogXFwgKi8pIHtcbiAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVvdGUgKyBzdHIgKyBxdW90ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJywgaSwgbGVuLCBjb2RlLCBzaW5nbGVRdW90ZXMgPSAwLCBkb3VibGVRdW90ZXMgPSAwLCBzaW5nbGUsIHF1b3RlO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDB4MjcgIC8qICcgKi8pIHtcbiAgICAgICAgICAgICAgICArK3NpbmdsZVF1b3RlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgyMiAgLyogXCIgKi8pIHtcbiAgICAgICAgICAgICAgICArK2RvdWJsZVF1b3RlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgyRiAgLyogLyAqLyAmJiBqc29uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXFxcJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSkgfHwgY29kZSA9PT0gMHg1QyAgLyogXFwgKi8pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlRGlzYWxsb3dlZENoYXJhY3Rlcihjb2RlKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGNvZGUpICYmIChqc29uICYmIGNvZGUgPCAweDIwICAvKiBTUCAqLyB8fCAhanNvbiAmJiAhZXNjYXBlbGVzcyAmJiAoY29kZSA8IDB4MjAgIC8qIFNQICovIHx8IGNvZGUgPiAweDdFICAvKiB+ICovKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlQWxsb3dlZENoYXJhY3Rlcihjb2RlLCBzdHIuY2hhckNvZGVBdChpICsgMSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaW5nbGUgPSAhKHF1b3RlcyA9PT0gJ2RvdWJsZScgfHwgKHF1b3RlcyA9PT0gJ2F1dG8nICYmIGRvdWJsZVF1b3RlcyA8IHNpbmdsZVF1b3RlcykpO1xuICAgICAgICBxdW90ZSA9IHNpbmdsZSA/ICdcXCcnIDogJ1wiJztcblxuICAgICAgICBpZiAoIShzaW5nbGUgPyBzaW5nbGVRdW90ZXMgOiBkb3VibGVRdW90ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVvdGUgKyByZXN1bHQgKyBxdW90ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ciA9IHJlc3VsdDtcbiAgICAgICAgcmVzdWx0ID0gcXVvdGU7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoKGNvZGUgPT09IDB4MjcgIC8qICcgKi8gJiYgc2luZ2xlKSB8fCAoY29kZSA9PT0gMHgyMiAgLyogXCIgKi8gJiYgIXNpbmdsZSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0ICsgcXVvdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmxhdHRlbiBhbiBhcnJheSB0byBhIHN0cmluZywgd2hlcmUgdGhlIGFycmF5IGNhbiBjb250YWluXG4gICAgICogZWl0aGVyIHN0cmluZ3Mgb3IgbmVzdGVkIGFycmF5c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5Ub1N0cmluZyhhcnIpIHtcbiAgICAgICAgdmFyIGksIGl6LCBlbGVtLCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yIChpID0gMCwgaXogPSBhcnIubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgZWxlbSA9IGFycltpXTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBBcnJheS5pc0FycmF5KGVsZW0pID8gZmxhdHRlblRvU3RyaW5nKGVsZW0pIDogZWxlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgZ2VuZXJhdGVkIHRvIGEgU291cmNlTm9kZSB3aGVuIHNvdXJjZSBtYXBzIGFyZSBlbmFibGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZ2VuZXJhdGVkLCBub2RlKSB7XG4gICAgICAgIGlmICghc291cmNlTWFwKSB7XG4gICAgICAgICAgICAvLyB3aXRoIG5vIHNvdXJjZSBtYXBzLCBnZW5lcmF0ZWQgaXMgZWl0aGVyIGFuXG4gICAgICAgICAgICAvLyBhcnJheSBvciBhIHN0cmluZy4gIGlmIGFuIGFycmF5LCBmbGF0dGVuIGl0LlxuICAgICAgICAgICAgLy8gaWYgYSBzdHJpbmcsIGp1c3QgcmV0dXJuIGl0XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShnZW5lcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Ub1N0cmluZyhnZW5lcmF0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChnZW5lcmF0ZWQgaW5zdGFuY2VvZiBTb3VyY2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmxvYyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobnVsbCwgbnVsbCwgc291cmNlTWFwLCBnZW5lcmF0ZWQsIG5vZGUubmFtZSB8fCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobm9kZS5sb2Muc3RhcnQubGluZSwgbm9kZS5sb2Muc3RhcnQuY29sdW1uLCAoc291cmNlTWFwID09PSB0cnVlID8gbm9kZS5sb2Muc291cmNlIHx8IG51bGwgOiBzb3VyY2VNYXApLCBnZW5lcmF0ZWQsIG5vZGUubmFtZSB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub0VtcHR5U3BhY2UoKSB7XG4gICAgICAgIHJldHVybiAoc3BhY2UpID8gc3BhY2UgOiAnICc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gam9pbihsZWZ0LCByaWdodCkge1xuICAgICAgICB2YXIgbGVmdFNvdXJjZSxcbiAgICAgICAgICAgIHJpZ2h0U291cmNlLFxuICAgICAgICAgICAgbGVmdENoYXJDb2RlLFxuICAgICAgICAgICAgcmlnaHRDaGFyQ29kZTtcblxuICAgICAgICBsZWZ0U291cmNlID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChsZWZ0KS50b1N0cmluZygpO1xuICAgICAgICBpZiAobGVmdFNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbcmlnaHRdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmlnaHRTb3VyY2UgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJpZ2h0KS50b1N0cmluZygpO1xuICAgICAgICBpZiAocmlnaHRTb3VyY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW2xlZnRdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdENoYXJDb2RlID0gbGVmdFNvdXJjZS5jaGFyQ29kZUF0KGxlZnRTb3VyY2UubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJpZ2h0Q2hhckNvZGUgPSByaWdodFNvdXJjZS5jaGFyQ29kZUF0KDApO1xuXG4gICAgICAgIGlmICgobGVmdENoYXJDb2RlID09PSAweDJCICAvKiArICovIHx8IGxlZnRDaGFyQ29kZSA9PT0gMHgyRCAgLyogLSAqLykgJiYgbGVmdENoYXJDb2RlID09PSByaWdodENoYXJDb2RlIHx8XG4gICAgICAgICAgICBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShsZWZ0Q2hhckNvZGUpICYmIGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KHJpZ2h0Q2hhckNvZGUpIHx8XG4gICAgICAgICAgICBsZWZ0Q2hhckNvZGUgPT09IDB4MkYgIC8qIC8gKi8gJiYgcmlnaHRDaGFyQ29kZSA9PT0gMHg2OSAgLyogaSAqLykgeyAvLyBpbmZpeCB3b3JkIG9wZXJhdG9ycyBhbGwgc3RhcnQgd2l0aCBgaWBcbiAgICAgICAgICAgIHJldHVybiBbbGVmdCwgbm9FbXB0eVNwYWNlKCksIHJpZ2h0XTtcbiAgICAgICAgfSBlbHNlIGlmIChlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGxlZnRDaGFyQ29kZSkgfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IobGVmdENoYXJDb2RlKSB8fFxuICAgICAgICAgICAgICAgIGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UocmlnaHRDaGFyQ29kZSkgfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IocmlnaHRDaGFyQ29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbbGVmdCwgcmlnaHRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbGVmdCwgc3BhY2UsIHJpZ2h0XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRJbmRlbnQoc3RtdCkge1xuICAgICAgICByZXR1cm4gW2Jhc2UsIHN0bXRdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdpdGhJbmRlbnQoZm4pIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQmFzZTtcbiAgICAgICAgcHJldmlvdXNCYXNlID0gYmFzZTtcbiAgICAgICAgYmFzZSArPSBpbmRlbnQ7XG4gICAgICAgIGZuKGJhc2UpO1xuICAgICAgICBiYXNlID0gcHJldmlvdXNCYXNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVNwYWNlcyhzdHIpIHtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIGZvciAoaSA9IHN0ci5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgaWYgKGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKHN0ci5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoc3RyLmxlbmd0aCAtIDEpIC0gaTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGp1c3RNdWx0aWxpbmVDb21tZW50KHZhbHVlLCBzcGVjaWFsQmFzZSkge1xuICAgICAgICB2YXIgYXJyYXksIGksIGxlbiwgbGluZSwgaiwgc3BhY2VzLCBwcmV2aW91c0Jhc2UsIHNuO1xuXG4gICAgICAgIGFycmF5ID0gdmFsdWUuc3BsaXQoL1xcclxcbnxbXFxyXFxuXS8pO1xuICAgICAgICBzcGFjZXMgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuXG4gICAgICAgIC8vIGZpcnN0IGxpbmUgZG9lc24ndCBoYXZlIGluZGVudGF0aW9uXG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBsaW5lID0gYXJyYXlbaV07XG4gICAgICAgICAgICBqID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChqIDwgbGluZS5sZW5ndGggJiYgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShsaW5lLmNoYXJDb2RlQXQoaikpKSB7XG4gICAgICAgICAgICAgICAgKytqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNwYWNlcyA+IGopIHtcbiAgICAgICAgICAgICAgICBzcGFjZXMgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBzcGVjaWFsQmFzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHBhdHRlcm4gbGlrZVxuICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgLy8gICB2YXIgdCA9IDIwOyAgLypcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAqIHRoaXMgaXMgY29tbWVudFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBwcmV2aW91c0Jhc2UgPSBiYXNlO1xuICAgICAgICAgICAgaWYgKGFycmF5WzFdW3NwYWNlc10gPT09ICcqJykge1xuICAgICAgICAgICAgICAgIHNwZWNpYWxCYXNlICs9ICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJhc2UgPSBzcGVjaWFsQmFzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcGFjZXMgJiAxKSB7XG4gICAgICAgICAgICAgICAgLy8gLypcbiAgICAgICAgICAgICAgICAvLyAgKlxuICAgICAgICAgICAgICAgIC8vICAqL1xuICAgICAgICAgICAgICAgIC8vIElmIHNwYWNlcyBhcmUgb2RkIG51bWJlciwgYWJvdmUgcGF0dGVybiBpcyBjb25zaWRlcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIHdhc3RlIDEgc3BhY2UuXG4gICAgICAgICAgICAgICAgLS1zcGFjZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2aW91c0Jhc2UgPSBiYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIHNuID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChhZGRJbmRlbnQoYXJyYXlbaV0uc2xpY2Uoc3BhY2VzKSkpO1xuICAgICAgICAgICAgYXJyYXlbaV0gPSBzb3VyY2VNYXAgPyBzbi5qb2luKCcnKSA6IHNuO1xuICAgICAgICB9XG5cbiAgICAgICAgYmFzZSA9IHByZXZpb3VzQmFzZTtcblxuICAgICAgICByZXR1cm4gYXJyYXkuam9pbignXFxuJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQsIHNwZWNpYWxCYXNlKSB7XG4gICAgICAgIGlmIChjb21tZW50LnR5cGUgPT09ICdMaW5lJykge1xuICAgICAgICAgICAgaWYgKGVuZHNXaXRoTGluZVRlcm1pbmF0b3IoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJy8vJyArIGNvbW1lbnQudmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgTGluZVRlcm1pbmF0b3JcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gJy8vJyArIGNvbW1lbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChleHRyYS5mb3JtYXQuaW5kZW50LmFkanVzdE11bHRpbGluZUNvbW1lbnQgJiYgL1tcXG5cXHJdLy50ZXN0KGNvbW1lbnQudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRqdXN0TXVsdGlsaW5lQ29tbWVudCgnLyonICsgY29tbWVudC52YWx1ZSArICcqLycsIHNwZWNpYWxCYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy8qJyArIGNvbW1lbnQudmFsdWUgKyAnKi8nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZENvbW1lbnRzKHN0bXQsIHJlc3VsdCkge1xuICAgICAgICB2YXIgaSwgbGVuLCBjb21tZW50LCBzYXZlLCB0YWlsaW5nVG9TdGF0ZW1lbnQsIHNwZWNpYWxCYXNlLCBmcmFnbWVudCxcbiAgICAgICAgICAgIGV4dFJhbmdlLCByYW5nZSwgcHJldlJhbmdlLCBwcmVmaXgsIGluZml4LCBzdWZmaXgsIGNvdW50O1xuXG4gICAgICAgIGlmIChzdG10LmxlYWRpbmdDb21tZW50cyAmJiBzdG10LmxlYWRpbmdDb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzYXZlID0gcmVzdWx0O1xuXG4gICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZXh0UmFuZ2UgPSBjb21tZW50LmV4dGVuZGVkUmFuZ2U7XG4gICAgICAgICAgICAgICAgcmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgcHJlZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcoZXh0UmFuZ2VbMF0sIHJhbmdlWzBdKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IChwcmVmaXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJlZml4KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcmV2UmFuZ2UgPSByYW5nZTtcblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHN0bXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgICAgIGluZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocHJldlJhbmdlWzFdLCByYW5nZVswXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gKGluZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldlJhbmdlID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3VmZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMV0sIGV4dFJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IChzdWZmaXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0cmluZ1JlcGVhdCgnXFxuJywgY291bnQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChzYWZlQ29uY2F0ZW5hdGlvbiAmJiBzdG10LnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtICYmIHN0bXQuYm9keS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpO1xuICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHN0bXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LmxlYWRpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBbZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZnJhZ21lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChzYXZlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RtdC50cmFpbGluZ0NvbW1lbnRzKSB7XG5cbiAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC50cmFpbGluZ0NvbW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGV4dFJhbmdlID0gY29tbWVudC5leHRlbmRlZFJhbmdlO1xuICAgICAgICAgICAgICAgIHJhbmdlID0gY29tbWVudC5yYW5nZTtcblxuICAgICAgICAgICAgICAgIHByZWZpeCA9IHNvdXJjZUNvZGUuc3Vic3RyaW5nKGV4dFJhbmdlWzBdLCByYW5nZVswXSk7XG4gICAgICAgICAgICAgICAgY291bnQgPSAocHJlZml4Lm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJlZml4KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhaWxpbmdUb1N0YXRlbWVudCA9ICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBzcGVjaWFsQmFzZSA9IHN0cmluZ1JlcGVhdCgnICcsIGNhbGN1bGF0ZVNwYWNlcyh0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKFtiYXNlLCByZXN1bHQsIGluZGVudF0pLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBzdG10LnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQudHJhaWxpbmdDb21tZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhaWxpbmdUb1N0YXRlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIHRhcmdldCBsaWtlIGZvbGxvd2luZyBzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgdCA9IDIwOyAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICogVGhpcyBpcyBjb21tZW50IG9mIHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsIGluZGVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtyZXN1bHQsIHNwZWNpYWxCYXNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlQ29tbWVudChjb21tZW50LCBzcGVjaWFsQmFzZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgYWRkSW5kZW50KGdlbmVyYXRlQ29tbWVudChjb21tZW50KSldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSBsZW4gLSAxICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgJ1xcbiddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUJsYW5rTGluZXMoc3RhcnQsIGVuZCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBqLCBuZXdsaW5lQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDwgZW5kOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlW2pdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIG5ld2xpbmVDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChqID0gMTsgaiA8IG5ld2xpbmVDb3VudDsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudGhlc2l6ZSh0ZXh0LCBjdXJyZW50LCBzaG91bGQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPCBzaG91bGQpIHtcbiAgICAgICAgICAgIHJldHVybiBbJygnLCB0ZXh0LCAnKSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlVmVyYmF0aW1TdHJpbmcoc3RyaW5nKSB7XG4gICAgICAgIHZhciBpLCBpeiwgcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBzdHJpbmcuc3BsaXQoL1xcclxcbnxcXG4vKTtcbiAgICAgICAgZm9yIChpID0gMSwgaXogPSByZXN1bHQubGVuZ3RoOyBpIDwgaXo7IGkrKykge1xuICAgICAgICAgICAgcmVzdWx0W2ldID0gbmV3bGluZSArIGJhc2UgKyByZXN1bHRbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVZlcmJhdGltKGV4cHIsIHByZWNlZGVuY2UpIHtcbiAgICAgICAgdmFyIHZlcmJhdGltLCByZXN1bHQsIHByZWM7XG4gICAgICAgIHZlcmJhdGltID0gZXhwcltleHRyYS52ZXJiYXRpbV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2ZXJiYXRpbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudGhlc2l6ZShnZW5lcmF0ZVZlcmJhdGltU3RyaW5nKHZlcmJhdGltKSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB2ZXJiYXRpbSBpcyBvYmplY3RcbiAgICAgICAgICAgIHJlc3VsdCA9IGdlbmVyYXRlVmVyYmF0aW1TdHJpbmcodmVyYmF0aW0uY29udGVudCk7XG4gICAgICAgICAgICBwcmVjID0gKHZlcmJhdGltLnByZWNlZGVuY2UgIT0gbnVsbCkgPyB2ZXJiYXRpbS5wcmVjZWRlbmNlIDogUHJlY2VkZW5jZS5TZXF1ZW5jZTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudGhlc2l6ZShyZXN1bHQsIHByZWMsIHByZWNlZGVuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0LCBleHByKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBDb2RlR2VuZXJhdG9yKCkge1xuICAgIH1cblxuICAgIC8vIEhlbHBlcnMuXG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5tYXliZUJsb2NrID0gZnVuY3Rpb24oc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdCwgbm9MZWFkaW5nQ29tbWVudCwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgbm9MZWFkaW5nQ29tbWVudCA9ICFleHRyYS5jb21tZW50IHx8ICFzdG10LmxlYWRpbmdDb21tZW50cztcblxuICAgICAgICBpZiAoc3RtdC50eXBlID09PSBTeW50YXguQmxvY2tTdGF0ZW1lbnQgJiYgbm9MZWFkaW5nQ29tbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtzcGFjZSwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LCBmbGFncyldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LkVtcHR5U3RhdGVtZW50ICYmIG5vTGVhZGluZ0NvbW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAnOyc7XG4gICAgICAgIH1cblxuICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICBuZXdsaW5lLFxuICAgICAgICAgICAgICAgIGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQsIGZsYWdzKSlcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLm1heWJlQmxvY2tTdWZmaXggPSBmdW5jdGlvbiAoc3RtdCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBlbmRzID0gZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSk7XG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09IFN5bnRheC5CbG9ja1N0YXRlbWVudCAmJiAoIWV4dHJhLmNvbW1lbnQgfHwgIXN0bXQubGVhZGluZ0NvbW1lbnRzKSAmJiAhZW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQsIHNwYWNlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQsIGJhc2VdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcmVzdWx0LCBuZXdsaW5lLCBiYXNlXTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQobm9kZS5uYW1lLCBub2RlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUFzeW5jUHJlZml4KG5vZGUsIHNwYWNlUmVxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuYXN5bmMgPyAnYXN5bmMnICsgKHNwYWNlUmVxdWlyZWQgPyBub0VtcHR5U3BhY2UoKSA6IHNwYWNlKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlU3RhclN1ZmZpeChub2RlKSB7XG4gICAgICAgIHZhciBpc0dlbmVyYXRvciA9IG5vZGUuZ2VuZXJhdG9yICYmICFleHRyYS5tb3ouc3Rhcmxlc3NHZW5lcmF0b3I7XG4gICAgICAgIHJldHVybiBpc0dlbmVyYXRvciA/ICcqJyArIHNwYWNlIDogJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVNZXRob2RQcmVmaXgocHJvcCkge1xuICAgICAgICB2YXIgZnVuYyA9IHByb3AudmFsdWUsIHByZWZpeCA9ICcnO1xuICAgICAgICBpZiAoZnVuYy5hc3luYykge1xuICAgICAgICAgICAgcHJlZml4ICs9IGdlbmVyYXRlQXN5bmNQcmVmaXgoZnVuYywgIXByb3AuY29tcHV0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmdW5jLmdlbmVyYXRvcikge1xuICAgICAgICAgICAgLy8gYXZvaWQgc3BhY2UgYmVmb3JlIG1ldGhvZCBuYW1lXG4gICAgICAgICAgICBwcmVmaXggKz0gZ2VuZXJhdGVTdGFyU3VmZml4KGZ1bmMpID8gJyonIDogJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZVBhdHRlcm4gPSBmdW5jdGlvbiAobm9kZSwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlkZW50aWZpZXIobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKG5vZGUsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVGdW5jdGlvblBhcmFtcyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBpLCBpeiwgcmVzdWx0LCBoYXNEZWZhdWx0O1xuXG4gICAgICAgIGhhc0RlZmF1bHQgPSBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5yZXN0ICYmICghbm9kZS5kZWZhdWx0cyB8fCBub2RlLmRlZmF1bHRzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgICAgICAgICBub2RlLnBhcmFtcy5sZW5ndGggPT09IDEgJiYgbm9kZS5wYXJhbXNbMF0udHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIC8vIGFyZyA9PiB7IH0gY2FzZVxuICAgICAgICAgICAgcmVzdWx0ID0gW2dlbmVyYXRlQXN5bmNQcmVmaXgobm9kZSwgdHJ1ZSksIGdlbmVyYXRlSWRlbnRpZmllcihub2RlLnBhcmFtc1swXSldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gbm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gPyBbZ2VuZXJhdGVBc3luY1ByZWZpeChub2RlLCBmYWxzZSldIDogW107XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKCcpO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGVmYXVsdHMpIHtcbiAgICAgICAgICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gbm9kZS5wYXJhbXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNEZWZhdWx0ICYmIG5vZGUuZGVmYXVsdHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlQXNzaWdubWVudChub2RlLnBhcmFtc1tpXSwgbm9kZS5kZWZhdWx0c1tpXSwgJz0nLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZVBhdHRlcm4obm9kZS5wYXJhbXNbaV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5vZGUucmVzdCkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLi4uJyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUucmVzdCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVGdW5jdGlvbkJvZHkgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgcmVzdWx0LCBleHByO1xuXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZ2VuZXJhdGVGdW5jdGlvblBhcmFtcyhub2RlKTtcblxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBTeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc9PicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgZXhwciA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKG5vZGUuYm9keSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCk7XG4gICAgICAgICAgICBpZiAoZXhwci50b1N0cmluZygpLmNoYXJBdCgwKSA9PT0gJ3snKSB7XG4gICAgICAgICAgICAgICAgZXhwciA9IFsnKCcsIGV4cHIsICcpJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChleHByKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhub2RlLmJvZHksIFNfVFRGRikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVJdGVyYXRpb25Gb3JTdGF0ZW1lbnQgPSBmdW5jdGlvbiAob3BlcmF0b3IsIHN0bXQsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbJ2ZvcicgKyBzcGFjZSArIChzdG10LmF3YWl0ID8gJ2F3YWl0JyArIHNwYWNlIDogJycpICsgJygnXSwgdGhhdCA9IHRoaXM7XG4gICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHN0bXQubGVmdC50eXBlID09PSBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdG10LmxlZnQua2luZCArIG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmxlZnQuZGVjbGFyYXRpb25zWzBdLCBTX0ZGRkYpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5sZWZ0LCBQcmVjZWRlbmNlLkNhbGwsIEVfVFRUKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBvcGVyYXRvcik7XG4gICAgICAgICAgICByZXN1bHQgPSBbam9pbihcbiAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5yaWdodCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICApLCAnKSddO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVQcm9wZXJ0eUtleSA9IGZ1bmN0aW9uIChleHByLCBjb21wdXRlZCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnWycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwciwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcblxuICAgICAgICBpZiAoY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCddJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUFzc2lnbm1lbnQgPSBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIG9wZXJhdG9yLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICBpZiAoUHJlY2VkZW5jZS5Bc3NpZ25tZW50IDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24obGVmdCwgUHJlY2VkZW5jZS5DYWxsLCBmbGFncyksXG4gICAgICAgICAgICAgICAgc3BhY2UgKyBvcGVyYXRvciArIHNwYWNlLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHJpZ2h0LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFByZWNlZGVuY2UuQXNzaWdubWVudCxcbiAgICAgICAgICAgIHByZWNlZGVuY2VcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuc2VtaWNvbG9uID0gZnVuY3Rpb24gKGZsYWdzKSB7XG4gICAgICAgIGlmICghc2VtaWNvbG9ucyAmJiBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnOyc7XG4gICAgfTtcblxuICAgIC8vIFN0YXRlbWVudHMuXG5cbiAgICBDb2RlR2VuZXJhdG9yLlN0YXRlbWVudCA9IHtcblxuICAgICAgICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmFuZ2UsIGNvbnRlbnQsIHJlc3VsdCA9IFsneycsIG5ld2xpbmVdLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIGZ1bmN0aW9ucyB3aXRob3V0IGFueSBjb2RlXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuYm9keS5sZW5ndGggPT09IDAgJiYgcHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhbmdlID0gc3RtdC5yYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlWzFdIC0gcmFuZ2VbMF0gPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMF0gKyAxLCByYW5nZVsxXSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gWyd7J107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpLCBpeiwgZnJhZ21lbnQsIGJvZHlGbGFncztcbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9GVU5DX0JPRFkpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfRElSRUNUSVZFX0NUWDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuYm9keS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmVmb3JlIHRoZSBmaXJzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmJvZHlbMF0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50c1swXS5leHRlbmRlZFJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gc291cmNlQ29kZS5zdWJzdHJpbmcocmFuZ2VbMF0sIHJhbmdlWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ3snXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVswXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQucmFuZ2VbMF0sIHN0bXQuYm9keVswXS5yYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmV0d2VlbiBsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSAtIDFdLnRyYWlsaW5nQ29tbWVudHMgICYmICFzdG10LmJvZHlbaV0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaSAtIDFdLnJhbmdlWzFdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmJvZHlbaV0ubGVhZGluZ0NvbW1lbnRzICYmIHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keVtpXSwgYm9keUZsYWdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5W2ldLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzICYmIGkgPCBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBhZGQgYSBuZXcgbGluZSBpZiB0aGVyZSBhcmUgbGVhZGluZyBjb21lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIG5leHQgc3RhdGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSArIDFdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBhZnRlciB0aGUgbGFzdCBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaV0udHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5ib2R5W2ldLnJhbmdlWzFdLCBzdG10LnJhbmdlWzFdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQoJ30nKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChzdG10LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdicmVhayAnICsgc3RtdC5sYWJlbC5uYW1lICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdicmVhaycgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgaWYgKHN0bXQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnRpbnVlICcgKyBzdG10LmxhYmVsLm5hbWUgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ2NvbnRpbnVlJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0JvZHk6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgJ3snLCBuZXdsaW5lXSwgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5ib2R5Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5ib2R5W2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYmFzZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnfScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0RlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50O1xuICAgICAgICAgICAgcmVzdWx0ICA9IFsnY2xhc3MnXTtcbiAgICAgICAgICAgIGlmIChzdG10LmlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuaWQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RtdC5zdXBlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBqb2luKCdleHRlbmRzJywgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zdXBlckNsYXNzLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5LCBTX1RGRlQpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRGlyZWN0aXZlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5yYXcgJiYgc3RtdC5yYXcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RtdC5yYXcgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlRGlyZWN0aXZlKHN0bXQuZGlyZWN0aXZlKSArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIEJlY2F1c2UgYGRvIDQyIHdoaWxlIChjb25kKWAgaXMgU3ludGF4IEVycm9yLiBXZSBuZWVkIHNlbWljb2xvbi5cbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBqb2luKCdkbycsIHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIFNfVEZGRikpO1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICd3aGlsZScgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAnKScgKyB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIENhdGNoQ2xhdXNlOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGd1YXJkO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnY2F0Y2gnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQucGFyYW0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChzdG10Lmd1YXJkKSB7XG4gICAgICAgICAgICAgICAgICAgIGd1YXJkID0gdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5ndWFyZCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDIsIDAsICcgaWYgJywgZ3VhcmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGVidWdnZXInICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEVtcHR5U3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnOyc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbICdleHBvcnQnIF0sIGJvZHlGbGFncztcblxuICAgICAgICAgICAgYm9keUZsYWdzID0gKGZsYWdzICYgRl9TRU1JQ09MT05fT1BUKSA/IFNfVEZGVCA6IFNfVEZGRjtcblxuICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgSG9pc3RhYmxlRGVjbGFyYXRpb25bRGVmYXVsdF1cbiAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IEFzc2lnbm1lbnRFeHByZXNzaW9uW0luXSA7XG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ2RlZmF1bHQnKTtcbiAgICAgICAgICAgIGlmIChpc1N0YXRlbWVudChzdG10LmRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuZGVjbGFyYXRpb24sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5kZWNsYXJhdGlvbiwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkgKyB0aGlzLnNlbWljb2xvbihmbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbICdleHBvcnQnIF0sIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIGJvZHlGbGFncyA9IChmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkgPyBTX1RGRlQgOiBTX1RGRkY7XG5cbiAgICAgICAgICAgIC8vIGV4cG9ydCBWYXJpYWJsZVN0YXRlbWVudFxuICAgICAgICAgICAgLy8gZXhwb3J0IERlY2xhcmF0aW9uW0RlZmF1bHRdXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmRlY2xhcmF0aW9uLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXhwb3J0IEV4cG9ydENsYXVzZVtOb1JlZmVyZW5jZV0gRnJvbUNsYXVzZSA7XG4gICAgICAgICAgICAvLyBleHBvcnQgRXhwb3J0Q2xhdXNlIDtcbiAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ3snICsgc3BhY2UgKyAnfScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RtdC5zcGVjaWZpZXJzWzBdLnR5cGUgPT09IFN5bnRheC5FeHBvcnRCYXRjaFNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzWzBdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCAneycpO1xuICAgICAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LnNwZWNpZmllcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UgKyAnfScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2R1bGVTcGVjaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5zZW1pY29sb24oZmxhZ3MpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIGV4cG9ydCAqIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAnZXhwb3J0JyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICcqJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgICdmcm9tJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzQ2xhc3NQcmVmaXhlZChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlO1xuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudC5zbGljZSgwLCA1KSAhPT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZGUgPSBmcmFnbWVudC5jaGFyQ29kZUF0KDUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlID09PSAweDdCICAvKiAneycgKi8gfHwgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShjb2RlKSB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihjb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gaXNGdW5jdGlvblByZWZpeGVkKGZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGU7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKDAsIDgpICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29kZSA9IGZyYWdtZW50LmNoYXJDb2RlQXQoOCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IDB4MjggLyogJygnICovIHx8IGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoY29kZSkgfHwgY29kZSA9PT0gMHgyQSAgLyogJyonICovIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBpc0FzeW5jUHJlZml4ZWQoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZSwgaSwgaXo7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKDAsIDUpICE9PSAnYXN5bmMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGZyYWdtZW50LmNoYXJDb2RlQXQoNSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChpID0gNiwgaXogPSBmcmFnbWVudC5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShmcmFnbWVudC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKGksIGkgKyA4KSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZGUgPSBmcmFnbWVudC5jaGFyQ29kZUF0KGkgKyA4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gMHgyOCAvKiAnKCcgKi8gfHwgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShjb2RlKSB8fCBjb2RlID09PSAweDJBICAvKiAnKicgKi8gfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IFt0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmV4cHJlc3Npb24sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKV07XG4gICAgICAgICAgICAvLyAxMi40ICd7JywgJ2Z1bmN0aW9uJywgJ2NsYXNzJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHBvc2l0aW9uLlxuICAgICAgICAgICAgLy8gd3JhcCBleHByZXNzaW9uIHdpdGggcGFyZW50aGVzZXNcbiAgICAgICAgICAgIGZyYWdtZW50ID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQuY2hhckNvZGVBdCgwKSA9PT0gMHg3QiAgLyogJ3snICovIHx8ICAvLyBPYmplY3RFeHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIGlzQ2xhc3NQcmVmaXhlZChmcmFnbWVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNGdW5jdGlvblByZWZpeGVkKGZyYWdtZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICBpc0FzeW5jUHJlZml4ZWQoZnJhZ21lbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChkaXJlY3RpdmUgJiYgKGZsYWdzICYgRl9ESVJFQ1RJVkVfQ1RYKSAmJiBzdG10LmV4cHJlc3Npb24udHlwZSA9PT0gU3ludGF4LkxpdGVyYWwgJiYgdHlwZW9mIHN0bXQuZXhwcmVzc2lvbi52YWx1ZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWycoJywgcmVzdWx0LCAnKScgKyB0aGlzLnNlbWljb2xvbihmbGFncyldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnNlbWljb2xvbihmbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBFUzY6IDE1LjIuMSB2YWxpZCBpbXBvcnQgZGVjbGFyYXRpb25zOlxuICAgICAgICAgICAgLy8gICAgIC0gaW1wb3J0IEltcG9ydENsYXVzZSBGcm9tQ2xhdXNlIDtcbiAgICAgICAgICAgIC8vICAgICAtIGltcG9ydCBNb2R1bGVTcGVjaWZpZXIgO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgY3Vyc29yLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgLy8gSWYgbm8gSW1wb3J0Q2xhdXNlIGlzIHByZXNlbnQsXG4gICAgICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBgaW1wb3J0IE1vZHVsZVNwZWNpZmllcmAgc28gc2tpcCBgZnJvbWBcbiAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllciBpcyBTdHJpbmdMaXRlcmFsLlxuICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBpbXBvcnQgTW9kdWxlU3BlY2lmaWVyIDtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAnaW1wb3J0JyxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNvdXJjZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpbXBvcnQgSW1wb3J0Q2xhdXNlIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICdpbXBvcnQnXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY3Vyc29yID0gMDtcblxuICAgICAgICAgICAgLy8gSW1wb3J0ZWRCaW5kaW5nXG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0udHlwZSA9PT0gU3ludGF4LkltcG9ydERlZmF1bHRTcGVjaWZpZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICsrY3Vyc29yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0pIHtcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLnR5cGUgPT09IFN5bnRheC5JbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZVNwYWNlSW1wb3J0XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYW1lZEltcG9ydHNcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAneycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgoc3RtdC5zcGVjaWZpZXJzLmxlbmd0aCAtIGN1cnNvcikgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcG9ydCB7IC4uLiB9IGZyb20gXCIuLi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tjdXJzb3JdLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAnfScgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBvcnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgLi4uLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgLi4uLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBmcm9tIFwiLi4uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gY3Vyc29yLCBpeiA9IHN0bXQuc3BlY2lmaWVycy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc3BlY2lmaWVyc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChiYXNlICsgJ30nICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgW1xuICAgICAgICAgICAgICAgICdmcm9tJyArIHNwYWNlLFxuICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24oZmxhZ3MpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBpdGVtRmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX0lOKSA/IEVfVFRUIDogRV9GVFQ7XG4gICAgICAgICAgICBpZiAoc3RtdC5pbml0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pZCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBpdGVtRmxhZ3MpLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgJz0nLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pbml0LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGl0ZW1GbGFncylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVQYXR0ZXJuKHN0bXQuaWQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgaXRlbUZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIFZhcmlhYmxlRGVjbGFyYXRvciBpcyB0eXBlZCBhcyBTdGF0ZW1lbnQsXG4gICAgICAgICAgICAvLyBidXQgam9pbmVkIHdpdGggY29tbWEgKG5vdCBMaW5lVGVybWluYXRvcikuXG4gICAgICAgICAgICAvLyBTbyBpZiBjb21tZW50IGlzIGF0dGFjaGVkIHRvIHRhcmdldCBub2RlLCB3ZSBzaG91bGQgc3BlY2lhbGl6ZS5cbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBub2RlLCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICByZXN1bHQgPSBbIHN0bXQua2luZCBdO1xuXG4gICAgICAgICAgICBib2R5RmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX0lOKSA/IFNfVEZGRiA6IFNfRkZGRjtcblxuICAgICAgICAgICAgZnVuY3Rpb24gYmxvY2soKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHN0bXQuZGVjbGFyYXRpb25zWzBdO1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50ICYmIG5vZGUubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgYm9keUZsYWdzKSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IHN0bXQuZGVjbGFyYXRpb25zLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHN0bXQuZGVjbGFyYXRpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudCAmJiBub2RlLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJhdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoYmxvY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBibG9jaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnNlbWljb2xvbihmbGFncykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFRocm93U3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbam9pbihcbiAgICAgICAgICAgICAgICAndGhyb3cnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuYXJndW1lbnQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgKSwgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBUcnlTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIGd1YXJkZWRIYW5kbGVycztcblxuICAgICAgICAgICAgcmVzdWx0ID0gWyd0cnknLCB0aGlzLm1heWJlQmxvY2soc3RtdC5ibG9jaywgU19URkZGKV07XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5ibG9jaywgcmVzdWx0KTtcblxuICAgICAgICAgICAgaWYgKHN0bXQuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICAvLyBvbGQgaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmhhbmRsZXJzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5oYW5kbGVyc1tpXSwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplciB8fCBpICsgMSAhPT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmhhbmRsZXJzW2ldLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGd1YXJkZWRIYW5kbGVycyA9IHN0bXQuZ3VhcmRlZEhhbmRsZXJzIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBndWFyZGVkSGFuZGxlcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChndWFyZGVkSGFuZGxlcnNbaV0sIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIgfHwgaSArIDEgIT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoZ3VhcmRlZEhhbmRsZXJzW2ldLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBuZXcgaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuaGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdG10LmhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuaGFuZGxlci5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5oYW5kbGVyW2ldLCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIgfHwgaSArIDEgIT09IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmhhbmRsZXJbaV0uYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmhhbmRsZXIsIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuaGFuZGxlci5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFsnZmluYWxseScsIHRoaXMubWF5YmVCbG9jayhzdG10LmZpbmFsaXplciwgU19URkZGKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQsIGksIGl6LCBib2R5RmxhZ3MsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnc3dpdGNoJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmRpc2NyaW1pbmFudCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKScgKyBzcGFjZSArICd7JyArIG5ld2xpbmVcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc3RtdC5jYXNlcykge1xuICAgICAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuY2FzZXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5jYXNlc1tpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudCgnfScpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgU3dpdGNoQ2FzZTogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudCwgaSwgaXosIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC50ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oJ2Nhc2UnLCB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAnOidcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ2RlZmF1bHQ6J107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgaXogPSBzdG10LmNvbnNlcXVlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChpeiAmJiBzdG10LmNvbnNlcXVlbnRbMF0udHlwZSA9PT0gU3ludGF4LkJsb2NrU3RhdGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5tYXliZUJsb2NrKHN0bXQuY29uc2VxdWVudFswXSwgU19URkZGKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpID0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaSAhPT0gaXogJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSAmJiBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZsYWdzIHw9IEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuY29uc2VxdWVudFtpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxICE9PSBpeiAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGZyYWdtZW50KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSWZTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgYm9keUZsYWdzLCBzZW1pY29sb25PcHRpb25hbCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICdpZicgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbWljb2xvbk9wdGlvbmFsID0gZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGRkY7XG4gICAgICAgICAgICBpZiAoc2VtaWNvbG9uT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0bXQuYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuY29uc2VxdWVudCwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuY29uc2VxdWVudCwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5hbHRlcm5hdGUudHlwZSA9PT0gU3ludGF4LklmU3RhdGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbJ2Vsc2UgJywgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmFsdGVybmF0ZSwgYm9keUZsYWdzKV0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBqb2luKCdlbHNlJywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYWx0ZXJuYXRlLCBib2R5RmxhZ3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5jb25zZXF1ZW50LCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRm9yU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWydmb3InICsgc3BhY2UgKyAnKCddO1xuICAgICAgICAgICAgICAgIGlmIChzdG10LmluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuaW5pdC50eXBlID09PSBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmluaXQsIFNfRkZGRikpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRl9BTExPV19JTiBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pbml0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX0ZUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc7Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQudGVzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnOycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdG10LnVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudXBkYXRlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEZvckluU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlSXRlcmF0aW9uRm9yU3RhdGVtZW50KCdpbicsIHN0bXQsIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKTtcbiAgICAgICAgfSxcblxuICAgICAgICBGb3JPZlN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUl0ZXJhdGlvbkZvclN0YXRlbWVudCgnb2YnLCBzdG10LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0bXQubGFiZWwubmFtZSArICc6JywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBQcm9ncmFtOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCBpLCBpeiwgYm9keUZsYWdzO1xuICAgICAgICAgICAgaXogPSBzdG10LmJvZHkubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0ID0gW3NhZmVDb25jYXRlbmF0aW9uICYmIGl6ID4gMCA/ICdcXG4nIDogJyddO1xuICAgICAgICAgICAgYm9keUZsYWdzID0gU19URlRGO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNhZmVDb25jYXRlbmF0aW9uICYmIGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBiZWZvcmUgdGhlIGZpcnN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LnJhbmdlWzBdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGJldHdlZW4gbGluZXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJiAhc3RtdC5ib2R5W2ldLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaSAtIDFdLnJhbmdlWzFdLCBzdG10LmJvZHlbaV0ucmFuZ2VbMF0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGFkZEluZGVudCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYm9keVtpXSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6ICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2kgKyAxXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGFmdGVyIHRoZSBsYXN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaV0udHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaV0ucmFuZ2VbMV0sIHN0bXQucmFuZ2VbMV0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFzeW5jUHJlZml4KHN0bXQsIHRydWUpLFxuICAgICAgICAgICAgICAgICdmdW5jdGlvbicsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVTdGFyU3VmZml4KHN0bXQpIHx8IG5vRW1wdHlTcGFjZSgpLFxuICAgICAgICAgICAgICAgIHN0bXQuaWQgPyBnZW5lcmF0ZUlkZW50aWZpZXIoc3RtdC5pZCkgOiAnJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KHN0bXQpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoc3RtdC5hcmd1bWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbam9pbihcbiAgICAgICAgICAgICAgICAgICAgJ3JldHVybicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuYXJndW1lbnQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKVxuICAgICAgICAgICAgICAgICksIHRoaXMuc2VtaWNvbG9uKGZsYWdzKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gWydyZXR1cm4nICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgfSxcblxuICAgICAgICBXaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ3doaWxlJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgV2l0aFN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ3dpdGgnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQub2JqZWN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmJvZHksIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgbWVyZ2UoQ29kZUdlbmVyYXRvci5wcm90b3R5cGUsIENvZGVHZW5lcmF0b3IuU3RhdGVtZW50KTtcblxuICAgIC8vIEV4cHJlc3Npb25zLlxuXG4gICAgQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uID0ge1xuXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpejtcbiAgICAgICAgICAgIGlmIChQcmVjZWRlbmNlLlNlcXVlbmNlIDwgcHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfQUxMT1dfSU47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5leHByZXNzaW9ucy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5leHByZXNzaW9uc1tpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncykpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVBc3NpZ25tZW50KGV4cHIubGVmdCwgZXhwci5yaWdodCwgZXhwci5vcGVyYXRvciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUodGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByKSwgUHJlY2VkZW5jZS5BcnJvd0Z1bmN0aW9uLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgaWYgKFByZWNlZGVuY2UuQ29uZGl0aW9uYWwgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnRlc3QsIFByZWNlZGVuY2UuTG9naWNhbE9SLCBmbGFncyksXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlICsgJz8nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuY29uc2VxdWVudCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBmbGFncyksXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlICsgJzonICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYWx0ZXJuYXRlLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgUHJlY2VkZW5jZS5Db25kaXRpb25hbCxcbiAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkJpbmFyeUV4cHJlc3Npb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEJpbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgY3VycmVudFByZWNlZGVuY2UsIGZyYWdtZW50LCBsZWZ0U291cmNlO1xuICAgICAgICAgICAgY3VycmVudFByZWNlZGVuY2UgPSBCaW5hcnlQcmVjZWRlbmNlW2V4cHIub3BlcmF0b3JdO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFByZWNlZGVuY2UgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmxlZnQsIGN1cnJlbnRQcmVjZWRlbmNlLCBmbGFncyk7XG5cbiAgICAgICAgICAgIGxlZnRTb3VyY2UgPSBmcmFnbWVudC50b1N0cmluZygpO1xuXG4gICAgICAgICAgICBpZiAobGVmdFNvdXJjZS5jaGFyQ29kZUF0KGxlZnRTb3VyY2UubGVuZ3RoIC0gMSkgPT09IDB4MkYgLyogLyAqLyAmJiBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShleHByLm9wZXJhdG9yLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW2ZyYWdtZW50LCBub0VtcHR5U3BhY2UoKSwgZXhwci5vcGVyYXRvcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oZnJhZ21lbnQsIGV4cHIub3BlcmF0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucmlnaHQsIGN1cnJlbnRQcmVjZWRlbmNlICsgMSwgZmxhZ3MpO1xuXG4gICAgICAgICAgICBpZiAoZXhwci5vcGVyYXRvciA9PT0gJy8nICYmIGZyYWdtZW50LnRvU3RyaW5nKCkuY2hhckF0KDApID09PSAnLycgfHxcbiAgICAgICAgICAgIGV4cHIub3BlcmF0b3Iuc2xpY2UoLTEpID09PSAnPCcgJiYgZnJhZ21lbnQudG9TdHJpbmcoKS5zbGljZSgwLCAzKSA9PT0gJyEtLScpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiAnLycgY29uY2F0cyB3aXRoICcvJyBvciBgPGAgY29uY2F0cyB3aXRoIGAhLS1gLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBjb21tZW50IHN0YXJ0XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIub3BlcmF0b3IgPT09ICdpbicgJiYgIShmbGFncyAmIEZfQUxMT1dfSU4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnKCcsIHJlc3VsdCwgJyknXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBjdXJyZW50UHJlY2VkZW5jZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXo7XG4gICAgICAgICAgICAvLyBGX0FMTE9XX1VOUEFSQVRIX05FVyBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgcmVzdWx0ID0gW3RoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuY2FsbGVlLCBQcmVjZWRlbmNlLkNhbGwsIEVfVFRGKV07XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKCcpO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByWydhcmd1bWVudHMnXS5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwclsnYXJndW1lbnRzJ11baV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcblxuICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0FMTE9XX0NBTEwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnKCcsIHJlc3VsdCwgJyknXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLkNhbGwsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE5ld0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgbGVuZ3RoLCBpLCBpeiwgaXRlbUZsYWdzO1xuICAgICAgICAgICAgbGVuZ3RoID0gZXhwclsnYXJndW1lbnRzJ10ubGVuZ3RoO1xuXG4gICAgICAgICAgICAvLyBGX0FMTE9XX0NBTEwgYmVjb21lcyBmYWxzZS5cbiAgICAgICAgICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXIG1heSBiZWNvbWUgZmFsc2UuXG4gICAgICAgICAgICBpdGVtRmxhZ3MgPSAoZmxhZ3MgJiBGX0FMTE9XX1VOUEFSQVRIX05FVyAmJiAhcGFyZW50aGVzZXMgJiYgbGVuZ3RoID09PSAwKSA/IEVfVEZUIDogRV9URkY7XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oXG4gICAgICAgICAgICAgICAgJ25ldycsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5jYWxsZWUsIFByZWNlZGVuY2UuTmV3LCBpdGVtRmxhZ3MpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfQUxMT1dfVU5QQVJBVEhfTkVXKSB8fCBwYXJlbnRoZXNlcyB8fCBsZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJygnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwclsnYXJndW1lbnRzJ11baV0sIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5OZXcsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG5cbiAgICAgICAgICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXIGJlY29tZXMgZmFsc2UuXG4gICAgICAgICAgICByZXN1bHQgPSBbdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5vYmplY3QsIFByZWNlZGVuY2UuQ2FsbCwgKGZsYWdzICYgRl9BTExPV19DQUxMKSA/IEVfVFRGIDogRV9URkYpXTtcblxuICAgICAgICAgICAgaWYgKGV4cHIuY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnWycpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucHJvcGVydHksIFByZWNlZGVuY2UuU2VxdWVuY2UsIGZsYWdzICYgRl9BTExPV19DQUxMID8gRV9UVFQgOiBFX1RGVCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCddJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChleHByLm9iamVjdC50eXBlID09PSBTeW50YXguTGl0ZXJhbCAmJiB0eXBlb2YgZXhwci5vYmplY3QudmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhbGwgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAxLiBObyBmbG9hdGluZyBwb2ludFxuICAgICAgICAgICAgICAgICAgICAvLyAgIDIuIERvbid0IGhhdmUgZXhwb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIC8vICAgMy4gVGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgZGVjaW1hbCBkaWdpdFxuICAgICAgICAgICAgICAgICAgICAvLyAgIDQuIE5vdCBoZXhhZGVjaW1hbCBPUiBvY3RhbCBudW1iZXIgbGl0ZXJhbFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgYWRkIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC5pbmRleE9mKCcuJykgPCAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIS9bZUV4WF0vLnRlc3QoZnJhZ21lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN1dGlscy5jb2RlLmlzRGVjaW1hbERpZ2l0KGZyYWdtZW50LmNoYXJDb2RlQXQoZnJhZ21lbnQubGVuZ3RoIC0gMSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShmcmFnbWVudC5sZW5ndGggPj0gMiAmJiBmcmFnbWVudC5jaGFyQ29kZUF0KDApID09PSA0OCkgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLicpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlSWRlbnRpZmllcihleHByLnByb3BlcnR5KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLk1lbWJlciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTWV0YVByb3BlcnR5OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVvZiBleHByLm1ldGEgPT09IFwic3RyaW5nXCIgPyBleHByLm1ldGEgOiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5tZXRhKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnLicpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZW9mIGV4cHIucHJvcGVydHkgPT09IFwic3RyaW5nXCIgPyBleHByLnByb3BlcnR5IDogZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIucHJvcGVydHkpKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLk1lbWJlciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCByaWdodENoYXJDb2RlLCBsZWZ0U291cmNlLCBsZWZ0Q2hhckNvZGU7XG4gICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuVW5hcnksIEVfVFRUKTtcblxuICAgICAgICAgICAgaWYgKHNwYWNlID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oZXhwci5vcGVyYXRvciwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbZXhwci5vcGVyYXRvcl07XG4gICAgICAgICAgICAgICAgaWYgKGV4cHIub3BlcmF0b3IubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUsIHZvaWQsIHR5cGVvZlxuICAgICAgICAgICAgICAgICAgICAvLyBnZXQgYHR5cGVvZiBbXWAsIG5vdCBgdHlwZW9mW11gXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCBpbnNlcnRpbmcgc3BhY2VzIGJldHdlZW4gb3BlcmF0b3IgYW5kIGFyZ3VtZW50IGlmIGl0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgICAgICAgICAgICAgIC8vIGxpa2UsIGAhY29uZGBcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNvdXJjZSA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0Q2hhckNvZGUgPSBsZWZ0U291cmNlLmNoYXJDb2RlQXQobGVmdFNvdXJjZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRDaGFyQ29kZSA9IGZyYWdtZW50LnRvU3RyaW5nKCkuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKChsZWZ0Q2hhckNvZGUgPT09IDB4MkIgIC8qICsgKi8gfHwgbGVmdENoYXJDb2RlID09PSAweDJEICAvKiAtICovKSAmJiBsZWZ0Q2hhckNvZGUgPT09IHJpZ2h0Q2hhckNvZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGxlZnRDaGFyQ29kZSkgJiYgZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUocmlnaHRDaGFyQ29kZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5VbmFyeSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgWWllbGRFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICBpZiAoZXhwci5kZWxlZ2F0ZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9ICd5aWVsZConO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAneWllbGQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIuYXJndW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuWWllbGQsIEVfVFRUKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5ZaWVsZCwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXdhaXRFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBqb2luKFxuICAgICAgICAgICAgICAgIGV4cHIuYWxsID8gJ2F3YWl0KicgOiAnYXdhaXQnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuQXdhaXQsIEVfVFRUKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLkF3YWl0LCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChleHByLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLlVuYXJ5LCBFX1RUVClcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgUHJlY2VkZW5jZS5VbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5Qb3N0Zml4LCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgIGV4cHIub3BlcmF0b3JcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFByZWNlZGVuY2UuUG9zdGZpeCxcbiAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXN5bmNQcmVmaXgoZXhwciwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChleHByLmlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVTdGFyU3VmZml4KGV4cHIpIHx8IG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5pZCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZVN0YXJTdWZmaXgoZXhwcikgfHwgc3BhY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycmF5UGF0dGVybjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5BcnJheUV4cHJlc3Npb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MsIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzLCBpc1BhdHRlcm4pIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIG11bHRpbGluZSwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoIWV4cHIuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbXSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBpc1BhdHRlcm4gPyBmYWxzZSA6IGV4cHIuZWxlbWVudHMubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIHJlc3VsdCA9IFsnWycsIG11bHRpbGluZSA/IG5ld2xpbmUgOiAnJ107XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleHByLmVsZW1lbnRzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobXVsdGlsaW5lID8gaW5kZW50IDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5lbGVtZW50c1tpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyAobXVsdGlsaW5lID8gbmV3bGluZSA6IHNwYWNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmUgJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBiYXNlIDogJycpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ10nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgUmVzdEVsZW1lbnQ6IGZ1bmN0aW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJy4uLicgKyB0aGlzLmdlbmVyYXRlUGF0dGVybihleHByLmFyZ3VtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBDbGFzc0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbJ2NsYXNzJ107XG4gICAgICAgICAgICBpZiAoZXhwci5pZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmlkLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIuc3VwZXJDbGFzcykge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbignZXh0ZW5kcycsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuc3VwZXJDbGFzcywgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlU3RhdGVtZW50KGV4cHIuYm9keSwgU19URkZUKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG4gICAgICAgICAgICBpZiAoZXhwclsnc3RhdGljJ10pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ3N0YXRpYycgKyBzcGFjZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIua2luZCA9PT0gJ2dldCcgfHwgZXhwci5raW5kID09PSAnc2V0Jykge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gW1xuICAgICAgICAgICAgICAgICAgICBqb2luKGV4cHIua2luZCwgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVNZXRob2RQcmVmaXgoZXhwciksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgUHJvcGVydHk6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgaWYgKGV4cHIua2luZCA9PT0gJ2dldCcgfHwgZXhwci5raW5kID09PSAnc2V0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIGV4cHIua2luZCwgbm9FbXB0eVNwYWNlKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5zaG9ydGhhbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhwci52YWx1ZS50eXBlID09PSBcIkFzc2lnbm1lbnRQYXR0ZXJuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQXNzaWdubWVudFBhdHRlcm4oZXhwci52YWx1ZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIubWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVNZXRob2RQcmVmaXgoZXhwciksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoZXhwci52YWx1ZSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVQcm9wZXJ0eUtleShleHByLmtleSwgZXhwci5jb21wdXRlZCksXG4gICAgICAgICAgICAgICAgJzonICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci52YWx1ZSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVClcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgT2JqZWN0RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgbXVsdGlsaW5lLCByZXN1bHQsIGZyYWdtZW50LCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKCFleHByLnByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd7fSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBleHByLnByb3BlcnRpZXMubGVuZ3RoID4gMTtcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnRpZXNbMF0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIW11bHRpbGluZSkge1xuICAgICAgICAgICAgICAgIC8vIGlzc3VlcyA0XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IHRyYW5zZm9ybSBmcm9tXG4gICAgICAgICAgICAgICAgLy8gICBkZWphdnUuQ2xhc3MuZGVjbGFyZSh7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgbWV0aG9kMjogZnVuY3Rpb24gKCkge31cbiAgICAgICAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHRvXG4gICAgICAgICAgICAgICAgLy8gICBkZWphdnUuQ2xhc3MuZGVjbGFyZSh7bWV0aG9kMjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIH19KTtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0xpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbICd7Jywgc3BhY2UsIGZyYWdtZW50LCBzcGFjZSwgJ30nIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uIChpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgaXo7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWyAneycsIG5ld2xpbmUsIGluZGVudCwgZnJhZ21lbnQgXTtcblxuICAgICAgICAgICAgICAgIGlmIChtdWx0aWxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGl6ID0gZXhwci5wcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnRpZXNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ30nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXNzaWdubWVudFBhdHRlcm46IGZ1bmN0aW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUFzc2lnbm1lbnQoZXhwci5sZWZ0LCBleHByLnJpZ2h0LCAnPScsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBPYmplY3RQYXR0ZXJuOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6LCBtdWx0aWxpbmUsIHByb3BlcnR5LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghZXhwci5wcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAne30nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtdWx0aWxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChleHByLnByb3BlcnRpZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBleHByLnByb3BlcnRpZXNbMF07XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnZhbHVlLnR5cGUgIT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpbGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnNob3J0aGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gWyd7JywgbXVsdGlsaW5lID8gbmV3bGluZSA6ICcnIF07XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG11bHRpbGluZSA/IGluZGVudCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5wcm9wZXJ0aWVzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgKG11bHRpbGluZSA/IG5ld2xpbmUgOiBzcGFjZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChtdWx0aWxpbmUgJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBiYXNlIDogJycpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ30nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGhpc0V4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICd0aGlzJztcbiAgICAgICAgfSxcblxuICAgICAgICBTdXBlcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3N1cGVyJztcbiAgICAgICAgfSxcblxuICAgICAgICBJZGVudGlmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0RGVmYXVsdFNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIuaWQgfHwgZXhwci5sb2NhbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbJyonXTtcbiAgICAgICAgICAgIHZhciBpZCA9IGV4cHIuaWQgfHwgZXhwci5sb2NhbDtcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ2FzJyArIG5vRW1wdHlTcGFjZSgpICsgZ2VuZXJhdGVJZGVudGlmaWVyKGlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEltcG9ydFNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgaW1wb3J0ZWQgPSBleHByLmltcG9ydGVkO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgaW1wb3J0ZWQubmFtZSBdO1xuICAgICAgICAgICAgdmFyIGxvY2FsID0gZXhwci5sb2NhbDtcbiAgICAgICAgICAgIGlmIChsb2NhbCAmJiBsb2NhbC5uYW1lICE9PSBpbXBvcnRlZC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkgKyAnYXMnICsgbm9FbXB0eVNwYWNlKCkgKyBnZW5lcmF0ZUlkZW50aWZpZXIobG9jYWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbCA9IGV4cHIubG9jYWw7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyBsb2NhbC5uYW1lIF07XG4gICAgICAgICAgICB2YXIgZXhwb3J0ZWQgPSBleHByLmV4cG9ydGVkO1xuICAgICAgICAgICAgaWYgKGV4cG9ydGVkICYmIGV4cG9ydGVkLm5hbWUgIT09IGxvY2FsLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSArICdhcycgKyBub0VtcHR5U3BhY2UoKSArIGdlbmVyYXRlSWRlbnRpZmllcihleHBvcnRlZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBMaXRlcmFsOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByYXc7XG4gICAgICAgICAgICBpZiAoZXhwci5oYXNPd25Qcm9wZXJ0eSgncmF3JykgJiYgcGFyc2UgJiYgZXh0cmEucmF3KSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gcGFyc2UoZXhwci5yYXcpLmJvZHlbMF0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhdy50eXBlID09PSBTeW50YXguTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhdy52YWx1ZSA9PT0gZXhwci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHByLnJhdztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHVzZSByYXcgcHJvcGVydHlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBlc2NhcGVTdHJpbmcoZXhwci52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwci52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVOdW1iZXIoZXhwci52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwci52YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4cHIudmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5yZWdleCkge1xuICAgICAgICAgICAgICByZXR1cm4gJy8nICsgZXhwci5yZWdleC5wYXR0ZXJuICsgJy8nICsgZXhwci5yZWdleC5mbGFncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVJlZ0V4cChleHByLnZhbHVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBHZW5lcmF0b3JFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkNvbXByZWhlbnNpb25FeHByZXNzaW9uKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICAvLyBHZW5lcmF0b3JFeHByZXNzaW9uIHNob3VsZCBiZSBwYXJlbnRoZXNpemVkIHdpdGggKC4uLiksIENvbXByZWhlbnNpb25FeHByZXNzaW9uIHdpdGggWy4uLl1cbiAgICAgICAgICAgIC8vIER1ZSB0byBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM0NjggcG9zaXRpb24gb2YgZXhwci5ib2R5IGNhbiBkaWZmZXIgaW4gU3BpZGVybW9ua2V5IGFuZCBFUzZcblxuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIGZyYWdtZW50LCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHJlc3VsdCA9IChleHByLnR5cGUgPT09IFN5bnRheC5HZW5lcmF0b3JFeHByZXNzaW9uKSA/IFsnKCddIDogWydbJ107XG5cbiAgICAgICAgICAgIGlmIChleHRyYS5tb3ouY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5ib2R5LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIuYmxvY2tzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5ibG9ja3NbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCB8fCBleHRyYS5tb3ouY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgJ2lmJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZmlsdGVyLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFsgJygnLCBmcmFnbWVudCwgJyknIF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWV4dHJhLm1vei5jb21wcmVoZW5zaW9uRXhwcmVzc2lvblN0YXJ0c1dpdGhBc3NpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmJvZHksIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goKGV4cHIudHlwZSA9PT0gU3ludGF4LkdlbmVyYXRvckV4cHJlc3Npb24pID8gJyknIDogJ10nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkJsb2NrOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBmcmFnbWVudDtcbiAgICAgICAgICAgIGlmIChleHByLmxlZnQudHlwZSA9PT0gU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5sZWZ0LmtpbmQsIG5vRW1wdHlTcGFjZSgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KGV4cHIubGVmdC5kZWNsYXJhdGlvbnNbMF0sIFNfRkZGRilcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIubGVmdCwgUHJlY2VkZW5jZS5DYWxsLCBFX1RUVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbihmcmFnbWVudCwgZXhwci5vZiA/ICdvZicgOiAnaW4nKTtcbiAgICAgICAgICAgIGZyYWdtZW50ID0gam9pbihmcmFnbWVudCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5yaWdodCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcblxuICAgICAgICAgICAgcmV0dXJuIFsgJ2ZvcicgKyBzcGFjZSArICcoJywgZnJhZ21lbnQsICcpJyBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAnLi4uJyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGl0ZW1GbGFncyA9IEVfVFRGO1xuICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0FMTE9XX0NBTEwpKSB7XG4gICAgICAgICAgICAgICAgaXRlbUZsYWdzID0gRV9URkY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIudGFnLCBQcmVjZWRlbmNlLkNhbGwsIGl0ZW1GbGFncyksXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5xdWFzaSwgUHJlY2VkZW5jZS5QcmltYXJ5LCBFX0ZGVClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKHJlc3VsdCwgUHJlY2VkZW5jZS5UYWdnZWRUZW1wbGF0ZSwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIERvbid0IHVzZSBcImNvb2tlZFwiLiBTaW5jZSB0YWdnZWQgdGVtcGxhdGUgY2FuIHVzZSByYXcgdGVtcGxhdGVcbiAgICAgICAgICAgIC8vIHJlcHJlc2VudGF0aW9uLiBTbyBpZiB3ZSBkbyBzbywgaXQgYnJlYWtzIHRoZSBzY3JpcHQgc2VtYW50aWNzLlxuICAgICAgICAgICAgcmV0dXJuIGV4cHIudmFsdWUucmF3O1xuICAgICAgICB9LFxuXG4gICAgICAgIFRlbXBsYXRlTGl0ZXJhbDogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpejtcbiAgICAgICAgICAgIHJlc3VsdCA9IFsgJ2AnIF07XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIucXVhc2lzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnF1YXNpc1tpXSwgUHJlY2VkZW5jZS5QcmltYXJ5LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCckeycgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuZXhwcmVzc2lvbnNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlICsgJ30nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnYCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBNb2R1bGVTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuTGl0ZXJhbChleHByLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBtZXJnZShDb2RlR2VuZXJhdG9yLnByb3RvdHlwZSwgQ29kZUdlbmVyYXRvci5FeHByZXNzaW9uKTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICB2YXIgcmVzdWx0LCB0eXBlO1xuXG4gICAgICAgIHR5cGUgPSBleHByLnR5cGUgfHwgU3ludGF4LlByb3BlcnR5O1xuXG4gICAgICAgIGlmIChleHRyYS52ZXJiYXRpbSAmJiBleHByLmhhc093blByb3BlcnR5KGV4dHJhLnZlcmJhdGltKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVmVyYmF0aW0oZXhwciwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgPSB0aGlzW3R5cGVdKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcblxuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhZGRDb21tZW50cyhleHByLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCwgZXhwcik7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlU3RhdGVtZW50ID0gZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgICBmcmFnbWVudDtcblxuICAgICAgICByZXN1bHQgPSB0aGlzW3N0bXQudHlwZV0oc3RtdCwgZmxhZ3MpO1xuXG4gICAgICAgIC8vIEF0dGFjaCBjb21tZW50c1xuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhZGRDb21tZW50cyhzdG10LCByZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJhZ21lbnQgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LlByb2dyYW0gJiYgIXNhZmVDb25jYXRlbmF0aW9uICYmIG5ld2xpbmUgPT09ICcnICYmICBmcmFnbWVudC5jaGFyQXQoZnJhZ21lbnQubGVuZ3RoIC0gMSkgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzb3VyY2VNYXAgPyB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkucmVwbGFjZVJpZ2h0KC9cXHMrJC8sICcnKSA6IGZyYWdtZW50LnJlcGxhY2UoL1xccyskLywgJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0LCBzdG10KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVJbnRlcm5hbChub2RlKSB7XG4gICAgICAgIHZhciBjb2RlZ2VuO1xuXG4gICAgICAgIGNvZGVnZW4gPSBuZXcgQ29kZUdlbmVyYXRvcigpO1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2RlZ2VuLmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIFNfVEZGRik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29kZWdlbi5nZW5lcmF0ZUV4cHJlc3Npb24obm9kZSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdHlwZTogJyArIG5vZGUudHlwZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGUobm9kZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpLCByZXN1bHQsIHBhaXI7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gT2Jzb2xldGUgb3B0aW9uc1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgYG9wdGlvbnMuaW5kZW50YFxuICAgICAgICAgICAgLy8gICBgb3B0aW9ucy5iYXNlYFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlbSwgd2UgY2FuIHVzZSBgb3B0aW9uLmZvcm1hdC5pbmRlbnRgLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmluZGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucy5mb3JtYXQuaW5kZW50LnN0eWxlID0gb3B0aW9ucy5pbmRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYmFzZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucy5mb3JtYXQuaW5kZW50LmJhc2UgPSBvcHRpb25zLmJhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zID0gdXBkYXRlRGVlcGx5KGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGluZGVudCA9IG9wdGlvbnMuZm9ybWF0LmluZGVudC5zdHlsZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5iYXNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBvcHRpb25zLmJhc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBzdHJpbmdSZXBlYXQoaW5kZW50LCBvcHRpb25zLmZvcm1hdC5pbmRlbnQuYmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgICAgICAgICBpbmRlbnQgPSBvcHRpb25zLmZvcm1hdC5pbmRlbnQuc3R5bGU7XG4gICAgICAgICAgICBiYXNlID0gc3RyaW5nUmVwZWF0KGluZGVudCwgb3B0aW9ucy5mb3JtYXQuaW5kZW50LmJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIGpzb24gPSBvcHRpb25zLmZvcm1hdC5qc29uO1xuICAgICAgICByZW51bWJlciA9IG9wdGlvbnMuZm9ybWF0LnJlbnVtYmVyO1xuICAgICAgICBoZXhhZGVjaW1hbCA9IGpzb24gPyBmYWxzZSA6IG9wdGlvbnMuZm9ybWF0LmhleGFkZWNpbWFsO1xuICAgICAgICBxdW90ZXMgPSBqc29uID8gJ2RvdWJsZScgOiBvcHRpb25zLmZvcm1hdC5xdW90ZXM7XG4gICAgICAgIGVzY2FwZWxlc3MgPSBvcHRpb25zLmZvcm1hdC5lc2NhcGVsZXNzO1xuICAgICAgICBuZXdsaW5lID0gb3B0aW9ucy5mb3JtYXQubmV3bGluZTtcbiAgICAgICAgc3BhY2UgPSBvcHRpb25zLmZvcm1hdC5zcGFjZTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0LmNvbXBhY3QpIHtcbiAgICAgICAgICAgIG5ld2xpbmUgPSBzcGFjZSA9IGluZGVudCA9IGJhc2UgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnRoZXNlcyA9IG9wdGlvbnMuZm9ybWF0LnBhcmVudGhlc2VzO1xuICAgICAgICBzZW1pY29sb25zID0gb3B0aW9ucy5mb3JtYXQuc2VtaWNvbG9ucztcbiAgICAgICAgc2FmZUNvbmNhdGVuYXRpb24gPSBvcHRpb25zLmZvcm1hdC5zYWZlQ29uY2F0ZW5hdGlvbjtcbiAgICAgICAgZGlyZWN0aXZlID0gb3B0aW9ucy5kaXJlY3RpdmU7XG4gICAgICAgIHBhcnNlID0ganNvbiA/IG51bGwgOiBvcHRpb25zLnBhcnNlO1xuICAgICAgICBzb3VyY2VNYXAgPSBvcHRpb25zLnNvdXJjZU1hcDtcbiAgICAgICAgc291cmNlQ29kZSA9IG9wdGlvbnMuc291cmNlQ29kZTtcbiAgICAgICAgcHJlc2VydmVCbGFua0xpbmVzID0gb3B0aW9ucy5mb3JtYXQucHJlc2VydmVCbGFua0xpbmVzICYmIHNvdXJjZUNvZGUgIT09IG51bGw7XG4gICAgICAgIGV4dHJhID0gb3B0aW9ucztcblxuICAgICAgICBpZiAoc291cmNlTWFwKSB7XG4gICAgICAgICAgICBpZiAoIWV4cG9ydHMuYnJvd3Nlcikge1xuICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSBlbnZpcm9ubWVudCBpcyBub2RlLmpzXG4gICAgICAgICAgICAgICAgLy8gQW5kIHByZXZlbnQgZnJvbSBpbmNsdWRpbmcgc291cmNlLW1hcCBieSBicm93c2VyaWZ5XG4gICAgICAgICAgICAgICAgU291cmNlTm9kZSA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKS5Tb3VyY2VOb2RlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBTb3VyY2VOb2RlID0gZ2xvYmFsLnNvdXJjZU1hcC5Tb3VyY2VOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gZ2VuZXJhdGVJbnRlcm5hbChub2RlKTtcblxuICAgICAgICBpZiAoIXNvdXJjZU1hcCkge1xuICAgICAgICAgICAgcGFpciA9IHtjb2RlOiByZXN1bHQudG9TdHJpbmcoKSwgbWFwOiBudWxsfTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZU1hcFdpdGhDb2RlID8gcGFpciA6IHBhaXIuY29kZTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcGFpciA9IHJlc3VsdC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoe1xuICAgICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxuICAgICAgICAgICAgc291cmNlUm9vdDogb3B0aW9ucy5zb3VyY2VNYXBSb290XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNvdXJjZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIHBhaXIubWFwLnNldFNvdXJjZUNvbnRlbnQob3B0aW9ucy5zb3VyY2VNYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc291cmNlQ29udGVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VNYXBXaXRoQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhaXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFpci5tYXAudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBGT1JNQVRfTUlOSUZZID0ge1xuICAgICAgICBpbmRlbnQ6IHtcbiAgICAgICAgICAgIHN0eWxlOiAnJyxcbiAgICAgICAgICAgIGJhc2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAgcmVudW1iZXI6IHRydWUsXG4gICAgICAgIGhleGFkZWNpbWFsOiB0cnVlLFxuICAgICAgICBxdW90ZXM6ICdhdXRvJyxcbiAgICAgICAgZXNjYXBlbGVzczogdHJ1ZSxcbiAgICAgICAgY29tcGFjdDogdHJ1ZSxcbiAgICAgICAgcGFyZW50aGVzZXM6IGZhbHNlLFxuICAgICAgICBzZW1pY29sb25zOiBmYWxzZVxuICAgIH07XG5cbiAgICBGT1JNQVRfREVGQVVMVFMgPSBnZXREZWZhdWx0T3B0aW9ucygpLmZvcm1hdDtcblxuICAgIGV4cG9ydHMudmVyc2lvbiA9IHJlcXVpcmUoJy4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbiAgICBleHBvcnRzLmdlbmVyYXRlID0gZ2VuZXJhdGU7XG4gICAgZXhwb3J0cy5hdHRhY2hDb21tZW50cyA9IGVzdHJhdmVyc2UuYXR0YWNoQ29tbWVudHM7XG4gICAgZXhwb3J0cy5QcmVjZWRlbmNlID0gdXBkYXRlRGVlcGx5KHt9LCBQcmVjZWRlbmNlKTtcbiAgICBleHBvcnRzLmJyb3dzZXIgPSBmYWxzZTtcbiAgICBleHBvcnRzLkZPUk1BVF9NSU5JRlkgPSBGT1JNQVRfTUlOSUZZO1xuICAgIGV4cG9ydHMuRk9STUFUX0RFRkFVTFRTID0gRk9STUFUX0RFRkFVTFRTO1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2Zyb21cIjogXCJlc2NvZGVnZW5AXjEuOC4xXCIsXG4gIFwiX2lkXCI6IFwiZXNjb2RlZ2VuQDEuMTEuMFwiLFxuICBcIl9pbkJ1bmRsZVwiOiBmYWxzZSxcbiAgXCJfaW50ZWdyaXR5XCI6IFwic2hhNTEyLUllTVY0NVJlaXhIUzUzSy9PbWZLQUl6dE4vaWdESHpUSlVoWk0zazFqTWhJWldqazQ1U013QXRCc0VYaUpwM3ZTUG1UY3U2Q1huN21EdkZIUk42NmZ3PT1cIixcbiAgXCJfbG9jYXRpb25cIjogXCIvc3RhdGljLWV2YWwvZXNjb2RlZ2VuXCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiLFxuICAgIFwicmVnaXN0cnlcIjogdHJ1ZSxcbiAgICBcInJhd1wiOiBcImVzY29kZWdlbkBeMS44LjFcIixcbiAgICBcIm5hbWVcIjogXCJlc2NvZGVnZW5cIixcbiAgICBcImVzY2FwZWROYW1lXCI6IFwiZXNjb2RlZ2VuXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjEuOC4xXCIsXG4gICAgXCJzYXZlU3BlY1wiOiBudWxsLFxuICAgIFwiZmV0Y2hTcGVjXCI6IFwiXjEuOC4xXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvc3RhdGljLWV2YWxcIlxuICBdLFxuICBcIl9yZXNvbHZlZFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY29kZWdlbi8tL2VzY29kZWdlbi0xLjExLjAudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcImIyN2E5Mzg5NDgxZDViZmQ1YmVjNzZmN2JiMWViM2Y4ZjQ1NTY1ODlcIixcbiAgXCJfc3BlY1wiOiBcImVzY29kZWdlbkBeMS44LjFcIixcbiAgXCJfd2hlcmVcIjogXCIvVXNlcnMvamN3aGl0bG9jay9kZXZlbG9wbWVudC9zd2F5L25vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbFwiLFxuICBcImJpblwiOiB7XG4gICAgXCJlc2dlbmVyYXRlXCI6IFwiLi9iaW4vZXNnZW5lcmF0ZS5qc1wiLFxuICAgIFwiZXNjb2RlZ2VuXCI6IFwiLi9iaW4vZXNjb2RlZ2VuLmpzXCJcbiAgfSxcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlbi9pc3N1ZXNcIlxuICB9LFxuICBcImJ1bmRsZURlcGVuZGVuY2llc1wiOiBmYWxzZSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiZXNwcmltYVwiOiBcIl4zLjEuM1wiLFxuICAgIFwiZXN0cmF2ZXJzZVwiOiBcIl40LjIuMFwiLFxuICAgIFwiZXN1dGlsc1wiOiBcIl4yLjAuMlwiLFxuICAgIFwib3B0aW9uYXRvclwiOiBcIl4wLjguMVwiLFxuICAgIFwic291cmNlLW1hcFwiOiBcIn4wLjYuMVwiXG4gIH0sXG4gIFwiZGVwcmVjYXRlZFwiOiBmYWxzZSxcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkVDTUFTY3JpcHQgY29kZSBnZW5lcmF0b3JcIixcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWNvcm5cIjogXCJeNC4wLjRcIixcbiAgICBcImJsdWViaXJkXCI6IFwiXjMuNC43XCIsXG4gICAgXCJib3dlci1yZWdpc3RyeS1jbGllbnRcIjogXCJeMS4wLjBcIixcbiAgICBcImNoYWlcIjogXCJeMy41LjBcIixcbiAgICBcImNvbW1vbmpzLWV2ZXJ5d2hlcmVcIjogXCJeMC45LjdcIixcbiAgICBcImd1bHBcIjogXCJeMy44LjEwXCIsXG4gICAgXCJndWxwLWVzbGludFwiOiBcIl4zLjAuMVwiLFxuICAgIFwiZ3VscC1tb2NoYVwiOiBcIl4zLjAuMVwiLFxuICAgIFwic2VtdmVyXCI6IFwiXjUuMS4wXCJcbiAgfSxcbiAgXCJlbmdpbmVzXCI6IHtcbiAgICBcIm5vZGVcIjogXCI+PTQuMFwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiTElDRU5TRS5CU0RcIixcbiAgICBcIlJFQURNRS5tZFwiLFxuICAgIFwiYmluXCIsXG4gICAgXCJlc2NvZGVnZW4uanNcIixcbiAgICBcInBhY2thZ2UuanNvblwiXG4gIF0sXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlblwiLFxuICBcImxpY2Vuc2VcIjogXCJCU0QtMi1DbGF1c2VcIixcbiAgXCJtYWluXCI6IFwiZXNjb2RlZ2VuLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIll1c3VrZSBTdXp1a2lcIixcbiAgICAgIFwiZW1haWxcIjogXCJ1dGF0YW5lLnRlYUBnbWFpbC5jb21cIixcbiAgICAgIFwidXJsXCI6IFwiaHR0cDovL2dpdGh1Yi5jb20vQ29uc3RlbGxhdGlvblwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlc2NvZGVnZW5cIixcbiAgXCJvcHRpb25hbERlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJzb3VyY2UtbWFwXCI6IFwifjAuNi4xXCJcbiAgfSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9lc3Rvb2xzL2VzY29kZWdlbi5naXRcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJjanNpZnkgLWEgcGF0aDogdG9vbHMvZW50cnktcG9pbnQuanMgPiBlc2NvZGVnZW4uYnJvd3Nlci5qc1wiLFxuICAgIFwiYnVpbGQtbWluXCI6IFwiY2pzaWZ5IC1tYSBwYXRoOiB0b29scy9lbnRyeS1wb2ludC5qcyA+IGVzY29kZWdlbi5icm93c2VyLm1pbi5qc1wiLFxuICAgIFwibGludFwiOiBcImd1bHAgbGludFwiLFxuICAgIFwicmVsZWFzZVwiOiBcIm5vZGUgdG9vbHMvcmVsZWFzZS5qc1wiLFxuICAgIFwidGVzdFwiOiBcImd1bHAgdHJhdmlzXCIsXG4gICAgXCJ1bml0LXRlc3RcIjogXCJndWxwIHRlc3RcIlxuICB9LFxuICBcInZlcnNpb25cIjogXCIxLjExLjBcIlxufVxuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cbi8qanNsaW50IHZhcnM6ZmFsc2UsIGJpdHdpc2U6dHJ1ZSovXG4vKmpzaGludCBpbmRlbnQ6NCovXG4vKmdsb2JhbCBleHBvcnRzOnRydWUqL1xuKGZ1bmN0aW9uIGNsb25lKGV4cG9ydHMpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgU3ludGF4LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBWaXNpdG9yT3B0aW9uLFxuICAgICAgICBWaXNpdG9yS2V5cyxcbiAgICAgICAgb2JqZWN0Q3JlYXRlLFxuICAgICAgICBvYmplY3RLZXlzLFxuICAgICAgICBCUkVBSyxcbiAgICAgICAgU0tJUCxcbiAgICAgICAgUkVNT1ZFO1xuXG4gICAgZnVuY3Rpb24gaWdub3JlSlNIaW50RXJyb3IoKSB7IH1cblxuICAgIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICAgIGlmICghaXNBcnJheSkge1xuICAgICAgICBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnJheSkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVlcENvcHkob2JqKSB7XG4gICAgICAgIHZhciByZXQgPSB7fSwga2V5LCB2YWw7XG4gICAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXRba2V5XSA9IGRlZXBDb3B5KHZhbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hhbGxvd0NvcHkob2JqKSB7XG4gICAgICAgIHZhciByZXQgPSB7fSwga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldFtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgaWdub3JlSlNIaW50RXJyb3Ioc2hhbGxvd0NvcHkpO1xuXG4gICAgLy8gYmFzZWQgb24gTExWTSBsaWJjKysgdXBwZXJfYm91bmQgLyBsb3dlcl9ib3VuZFxuICAgIC8vIE1JVCBMaWNlbnNlXG5cbiAgICBmdW5jdGlvbiB1cHBlckJvdW5kKGFycmF5LCBmdW5jKSB7XG4gICAgICAgIHZhciBkaWZmLCBsZW4sIGksIGN1cnJlbnQ7XG5cbiAgICAgICAgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgICAgICBpID0gMDtcblxuICAgICAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgICAgICBkaWZmID0gbGVuID4+PiAxO1xuICAgICAgICAgICAgY3VycmVudCA9IGkgKyBkaWZmO1xuICAgICAgICAgICAgaWYgKGZ1bmMoYXJyYXlbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZGlmZjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnQgKyAxO1xuICAgICAgICAgICAgICAgIGxlbiAtPSBkaWZmICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb3dlckJvdW5kKGFycmF5LCBmdW5jKSB7XG4gICAgICAgIHZhciBkaWZmLCBsZW4sIGksIGN1cnJlbnQ7XG5cbiAgICAgICAgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgICAgICBpID0gMDtcblxuICAgICAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgICAgICBkaWZmID0gbGVuID4+PiAxO1xuICAgICAgICAgICAgY3VycmVudCA9IGkgKyBkaWZmO1xuICAgICAgICAgICAgaWYgKGZ1bmMoYXJyYXlbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnQgKyAxO1xuICAgICAgICAgICAgICAgIGxlbiAtPSBkaWZmICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgaWdub3JlSlNIaW50RXJyb3IobG93ZXJCb3VuZCk7XG5cbiAgICBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIEYoKSB7IH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIEYucHJvdG90eXBlID0gbztcbiAgICAgICAgICAgIHJldHVybiBuZXcgRigpO1xuICAgICAgICB9O1xuICAgIH0pKCk7XG5cbiAgICBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgdmFyIGtleXMgPSBbXSwga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKHRvLCBmcm9tKSB7XG4gICAgICAgIHZhciBrZXlzID0gb2JqZWN0S2V5cyhmcm9tKSwga2V5LCBpLCBsZW47XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGtleXMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICB0b1trZXldID0gZnJvbVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICBTeW50YXggPSB7XG4gICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4cHJlc3Npb24nLFxuICAgICAgICBBc3NpZ25tZW50UGF0dGVybjogJ0Fzc2lnbm1lbnRQYXR0ZXJuJyxcbiAgICAgICAgQXJyYXlFeHByZXNzaW9uOiAnQXJyYXlFeHByZXNzaW9uJyxcbiAgICAgICAgQXJyYXlQYXR0ZXJuOiAnQXJyYXlQYXR0ZXJuJyxcbiAgICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246ICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbicsXG4gICAgICAgIEF3YWl0RXhwcmVzc2lvbjogJ0F3YWl0RXhwcmVzc2lvbicsIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBCbG9ja1N0YXRlbWVudDogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogJ0JyZWFrU3RhdGVtZW50JyxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246ICdDYWxsRXhwcmVzc2lvbicsXG4gICAgICAgIENhdGNoQ2xhdXNlOiAnQ2F0Y2hDbGF1c2UnLFxuICAgICAgICBDbGFzc0JvZHk6ICdDbGFzc0JvZHknLFxuICAgICAgICBDbGFzc0RlY2xhcmF0aW9uOiAnQ2xhc3NEZWNsYXJhdGlvbicsXG4gICAgICAgIENsYXNzRXhwcmVzc2lvbjogJ0NsYXNzRXhwcmVzc2lvbicsXG4gICAgICAgIENvbXByZWhlbnNpb25CbG9jazogJ0NvbXByZWhlbnNpb25CbG9jaycsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246ICdDb21wcmVoZW5zaW9uRXhwcmVzc2lvbicsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJyxcbiAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6ICdDb250aW51ZVN0YXRlbWVudCcsXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1lbnQnLFxuICAgICAgICBEaXJlY3RpdmVTdGF0ZW1lbnQ6ICdEaXJlY3RpdmVTdGF0ZW1lbnQnLFxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIEVtcHR5U3RhdGVtZW50OiAnRW1wdHlTdGF0ZW1lbnQnLFxuICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbjogJ0V4cG9ydEFsbERlY2xhcmF0aW9uJyxcbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJyxcbiAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nLFxuICAgICAgICBFeHBvcnRTcGVjaWZpZXI6ICdFeHBvcnRTcGVjaWZpZXInLFxuICAgICAgICBFeHByZXNzaW9uU3RhdGVtZW50OiAnRXhwcmVzc2lvblN0YXRlbWVudCcsXG4gICAgICAgIEZvclN0YXRlbWVudDogJ0ZvclN0YXRlbWVudCcsXG4gICAgICAgIEZvckluU3RhdGVtZW50OiAnRm9ySW5TdGF0ZW1lbnQnLFxuICAgICAgICBGb3JPZlN0YXRlbWVudDogJ0Zvck9mU3RhdGVtZW50JyxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogJ0Z1bmN0aW9uRGVjbGFyYXRpb24nLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246ICdGdW5jdGlvbkV4cHJlc3Npb24nLFxuICAgICAgICBHZW5lcmF0b3JFeHByZXNzaW9uOiAnR2VuZXJhdG9yRXhwcmVzc2lvbicsICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgSWRlbnRpZmllcjogJ0lkZW50aWZpZXInLFxuICAgICAgICBJZlN0YXRlbWVudDogJ0lmU3RhdGVtZW50JyxcbiAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246ICdJbXBvcnREZWNsYXJhdGlvbicsXG4gICAgICAgIEltcG9ydERlZmF1bHRTcGVjaWZpZXI6ICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJyxcbiAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJyxcbiAgICAgICAgSW1wb3J0U3BlY2lmaWVyOiAnSW1wb3J0U3BlY2lmaWVyJyxcbiAgICAgICAgTGl0ZXJhbDogJ0xpdGVyYWwnLFxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiAnTGFiZWxlZFN0YXRlbWVudCcsXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLFxuICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgIE1ldGFQcm9wZXJ0eTogJ01ldGFQcm9wZXJ0eScsXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246ICdNZXRob2REZWZpbml0aW9uJyxcbiAgICAgICAgTW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlU3BlY2lmaWVyJyxcbiAgICAgICAgTmV3RXhwcmVzc2lvbjogJ05ld0V4cHJlc3Npb24nLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiAnT2JqZWN0RXhwcmVzc2lvbicsXG4gICAgICAgIE9iamVjdFBhdHRlcm46ICdPYmplY3RQYXR0ZXJuJyxcbiAgICAgICAgUHJvZ3JhbTogJ1Byb2dyYW0nLFxuICAgICAgICBQcm9wZXJ0eTogJ1Byb3BlcnR5JyxcbiAgICAgICAgUmVzdEVsZW1lbnQ6ICdSZXN0RWxlbWVudCcsXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogJ1JldHVyblN0YXRlbWVudCcsXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogJ1NlcXVlbmNlRXhwcmVzc2lvbicsXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6ICdTcHJlYWRFbGVtZW50JyxcbiAgICAgICAgU3VwZXI6ICdTdXBlcicsXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsXG4gICAgICAgIFN3aXRjaENhc2U6ICdTd2l0Y2hDYXNlJyxcbiAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOiAnVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uJyxcbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiAnVGVtcGxhdGVFbGVtZW50JyxcbiAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiAnVGVtcGxhdGVMaXRlcmFsJyxcbiAgICAgICAgVGhpc0V4cHJlc3Npb246ICdUaGlzRXhwcmVzc2lvbicsXG4gICAgICAgIFRocm93U3RhdGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLFxuICAgICAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0ZW1lbnQnLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246ICdVbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiAnVXBkYXRlRXhwcmVzc2lvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiAnVmFyaWFibGVEZWNsYXJhdG9yJyxcbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6ICdXaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50JyxcbiAgICAgICAgWWllbGRFeHByZXNzaW9uOiAnWWllbGRFeHByZXNzaW9uJ1xuICAgIH07XG5cbiAgICBWaXNpdG9yS2V5cyA9IHtcbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBBc3NpZ25tZW50UGF0dGVybjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogWydlbGVtZW50cyddLFxuICAgICAgICBBcnJheVBhdHRlcm46IFsnZWxlbWVudHMnXSxcbiAgICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IFsncGFyYW1zJywgJ2JvZHknXSxcbiAgICAgICAgQXdhaXRFeHByZXNzaW9uOiBbJ2FyZ3VtZW50J10sIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBCbG9ja1N0YXRlbWVudDogWydib2R5J10sXG4gICAgICAgIEJpbmFyeUV4cHJlc3Npb246IFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBCcmVha1N0YXRlbWVudDogWydsYWJlbCddLFxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogWydjYWxsZWUnLCAnYXJndW1lbnRzJ10sXG4gICAgICAgIENhdGNoQ2xhdXNlOiBbJ3BhcmFtJywgJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NCb2R5OiBbJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NEZWNsYXJhdGlvbjogWydpZCcsICdzdXBlckNsYXNzJywgJ2JvZHknXSxcbiAgICAgICAgQ2xhc3NFeHByZXNzaW9uOiBbJ2lkJywgJ3N1cGVyQ2xhc3MnLCAnYm9keSddLFxuICAgICAgICBDb21wcmVoZW5zaW9uQmxvY2s6IFsnbGVmdCcsICdyaWdodCddLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbXByZWhlbnNpb25FeHByZXNzaW9uOiBbJ2Jsb2NrcycsICdmaWx0ZXInLCAnYm9keSddLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogWyd0ZXN0JywgJ2NvbnNlcXVlbnQnLCAnYWx0ZXJuYXRlJ10sXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiBbJ2xhYmVsJ10sXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiBbXSxcbiAgICAgICAgRGlyZWN0aXZlU3RhdGVtZW50OiBbXSxcbiAgICAgICAgRG9XaGlsZVN0YXRlbWVudDogWydib2R5JywgJ3Rlc3QnXSxcbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6IFtdLFxuICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbjogWydzb3VyY2UnXSxcbiAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiBbJ2RlY2xhcmF0aW9uJ10sXG4gICAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246IFsnZGVjbGFyYXRpb24nLCAnc3BlY2lmaWVycycsICdzb3VyY2UnXSxcbiAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiBbJ2V4cG9ydGVkJywgJ2xvY2FsJ10sXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IFsnZXhwcmVzc2lvbiddLFxuICAgICAgICBGb3JTdGF0ZW1lbnQ6IFsnaW5pdCcsICd0ZXN0JywgJ3VwZGF0ZScsICdib2R5J10sXG4gICAgICAgIEZvckluU3RhdGVtZW50OiBbJ2xlZnQnLCAncmlnaHQnLCAnYm9keSddLFxuICAgICAgICBGb3JPZlN0YXRlbWVudDogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvZHknXSxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogWydpZCcsICdwYXJhbXMnLCAnYm9keSddLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246IFsnaWQnLCAncGFyYW1zJywgJ2JvZHknXSxcbiAgICAgICAgR2VuZXJhdG9yRXhwcmVzc2lvbjogWydibG9ja3MnLCAnZmlsdGVyJywgJ2JvZHknXSwgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBJZGVudGlmaWVyOiBbXSxcbiAgICAgICAgSWZTdGF0ZW1lbnQ6IFsndGVzdCcsICdjb25zZXF1ZW50JywgJ2FsdGVybmF0ZSddLFxuICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjogWydzcGVjaWZpZXJzJywgJ3NvdXJjZSddLFxuICAgICAgICBJbXBvcnREZWZhdWx0U3BlY2lmaWVyOiBbJ2xvY2FsJ10sXG4gICAgICAgIEltcG9ydE5hbWVzcGFjZVNwZWNpZmllcjogWydsb2NhbCddLFxuICAgICAgICBJbXBvcnRTcGVjaWZpZXI6IFsnaW1wb3J0ZWQnLCAnbG9jYWwnXSxcbiAgICAgICAgTGl0ZXJhbDogW10sXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6IFsnbGFiZWwnLCAnYm9keSddLFxuICAgICAgICBMb2dpY2FsRXhwcmVzc2lvbjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246IFsnb2JqZWN0JywgJ3Byb3BlcnR5J10sXG4gICAgICAgIE1ldGFQcm9wZXJ0eTogWydtZXRhJywgJ3Byb3BlcnR5J10sXG4gICAgICAgIE1ldGhvZERlZmluaXRpb246IFsna2V5JywgJ3ZhbHVlJ10sXG4gICAgICAgIE1vZHVsZVNwZWNpZmllcjogW10sXG4gICAgICAgIE5ld0V4cHJlc3Npb246IFsnY2FsbGVlJywgJ2FyZ3VtZW50cyddLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiBbJ3Byb3BlcnRpZXMnXSxcbiAgICAgICAgT2JqZWN0UGF0dGVybjogWydwcm9wZXJ0aWVzJ10sXG4gICAgICAgIFByb2dyYW06IFsnYm9keSddLFxuICAgICAgICBQcm9wZXJ0eTogWydrZXknLCAndmFsdWUnXSxcbiAgICAgICAgUmVzdEVsZW1lbnQ6IFsgJ2FyZ3VtZW50JyBdLFxuICAgICAgICBSZXR1cm5TdGF0ZW1lbnQ6IFsnYXJndW1lbnQnXSxcbiAgICAgICAgU2VxdWVuY2VFeHByZXNzaW9uOiBbJ2V4cHJlc3Npb25zJ10sXG4gICAgICAgIFNwcmVhZEVsZW1lbnQ6IFsnYXJndW1lbnQnXSxcbiAgICAgICAgU3VwZXI6IFtdLFxuICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6IFsnZGlzY3JpbWluYW50JywgJ2Nhc2VzJ10sXG4gICAgICAgIFN3aXRjaENhc2U6IFsndGVzdCcsICdjb25zZXF1ZW50J10sXG4gICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogWyd0YWcnLCAncXVhc2knXSxcbiAgICAgICAgVGVtcGxhdGVFbGVtZW50OiBbXSxcbiAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiBbJ3F1YXNpcycsICdleHByZXNzaW9ucyddLFxuICAgICAgICBUaGlzRXhwcmVzc2lvbjogW10sXG4gICAgICAgIFRocm93U3RhdGVtZW50OiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFRyeVN0YXRlbWVudDogWydibG9jaycsICdoYW5kbGVyJywgJ2ZpbmFsaXplciddLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246IFsnYXJndW1lbnQnXSxcbiAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogWydhcmd1bWVudCddLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiBbJ2RlY2xhcmF0aW9ucyddLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6IFsnaWQnLCAnaW5pdCddLFxuICAgICAgICBXaGlsZVN0YXRlbWVudDogWyd0ZXN0JywgJ2JvZHknXSxcbiAgICAgICAgV2l0aFN0YXRlbWVudDogWydvYmplY3QnLCAnYm9keSddLFxuICAgICAgICBZaWVsZEV4cHJlc3Npb246IFsnYXJndW1lbnQnXVxuICAgIH07XG5cbiAgICAvLyB1bmlxdWUgaWRcbiAgICBCUkVBSyA9IHt9O1xuICAgIFNLSVAgPSB7fTtcbiAgICBSRU1PVkUgPSB7fTtcblxuICAgIFZpc2l0b3JPcHRpb24gPSB7XG4gICAgICAgIEJyZWFrOiBCUkVBSyxcbiAgICAgICAgU2tpcDogU0tJUCxcbiAgICAgICAgUmVtb3ZlOiBSRU1PVkVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gUmVmZXJlbmNlKHBhcmVudCwga2V5KSB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICB9XG5cbiAgICBSZWZlcmVuY2UucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRbdGhpcy5rZXldID0gbm9kZTtcbiAgICB9O1xuXG4gICAgUmVmZXJlbmNlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgIGlmIChpc0FycmF5KHRoaXMucGFyZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3BsaWNlKHRoaXMua2V5LCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXBsYWNlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIEVsZW1lbnQobm9kZSwgcGF0aCwgd3JhcCwgcmVmKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMud3JhcCA9IHdyYXA7XG4gICAgICAgIHRoaXMucmVmID0gcmVmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIENvbnRyb2xsZXIoKSB7IH1cblxuICAgIC8vIEFQSTpcbiAgICAvLyByZXR1cm4gcHJvcGVydHkgcGF0aCBhcnJheSBmcm9tIHJvb3QgdG8gY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gICAgICAgIHZhciBpLCBpeiwgaiwganosIHJlc3VsdCwgZWxlbWVudDtcblxuICAgICAgICBmdW5jdGlvbiBhZGRUb1BhdGgocmVzdWx0LCBwYXRoKSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgICAgIGZvciAoaiA9IDAsIGp6ID0gcGF0aC5sZW5ndGg7IGogPCBqejsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhdGhbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyByb290IG5vZGVcbiAgICAgICAgaWYgKCF0aGlzLl9fY3VycmVudC5wYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZpcnN0IG5vZGUgaXMgc2VudGluZWwsIHNlY29uZCBub2RlIGlzIHJvb3QgZWxlbWVudFxuICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMiwgaXogPSB0aGlzLl9fbGVhdmVsaXN0Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9fbGVhdmVsaXN0W2ldO1xuICAgICAgICAgICAgYWRkVG9QYXRoKHJlc3VsdCwgZWxlbWVudC5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRUb1BhdGgocmVzdWx0LCB0aGlzLl9fY3VycmVudC5wYXRoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiB0eXBlIG9mIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBub2RlID0gdGhpcy5jdXJyZW50KCk7XG4gICAgICAgIHJldHVybiBub2RlLnR5cGUgfHwgdGhpcy5fX2N1cnJlbnQud3JhcDtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiBhcnJheSBvZiBwYXJlbnQgZWxlbWVudHNcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5wYXJlbnRzID0gZnVuY3Rpb24gcGFyZW50cygpIHtcbiAgICAgICAgdmFyIGksIGl6LCByZXN1bHQ7XG5cbiAgICAgICAgLy8gZmlyc3Qgbm9kZSBpcyBzZW50aW5lbFxuICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMSwgaXogPSB0aGlzLl9fbGVhdmVsaXN0Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX19sZWF2ZWxpc3RbaV0ubm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmV0dXJuIGN1cnJlbnQgbm9kZVxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbiBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2N1cnJlbnQubm9kZTtcbiAgICB9O1xuXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX19leGVjdXRlID0gZnVuY3Rpb24gX19leGVjdXRlKGNhbGxiYWNrLCBlbGVtZW50KSB7XG4gICAgICAgIHZhciBwcmV2aW91cywgcmVzdWx0O1xuXG4gICAgICAgIHJlc3VsdCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBwcmV2aW91cyAgPSB0aGlzLl9fY3VycmVudDtcbiAgICAgICAgdGhpcy5fX2N1cnJlbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLl9fc3RhdGUgPSBudWxsO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrLmNhbGwodGhpcywgZWxlbWVudC5ub2RlLCB0aGlzLl9fbGVhdmVsaXN0W3RoaXMuX19sZWF2ZWxpc3QubGVuZ3RoIC0gMV0ubm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fX2N1cnJlbnQgPSBwcmV2aW91cztcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gbm90aWZ5IGNvbnRyb2wgc2tpcCAvIGJyZWFrXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5KGZsYWcpIHtcbiAgICAgICAgdGhpcy5fX3N0YXRlID0gZmxhZztcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHNraXAgY2hpbGQgbm9kZXMgb2YgY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoU0tJUCk7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyBicmVhayB0cmF2ZXJzYWxzXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGVbJ2JyZWFrJ10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubm90aWZ5KEJSRUFLKTtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJlbW92ZSBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm5vdGlmeShSRU1PVkUpO1xuICAgIH07XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fX2luaXRpYWxpemUgPSBmdW5jdGlvbihyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHRoaXMudmlzaXRvciA9IHZpc2l0b3I7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgICAgIHRoaXMuX193b3JrbGlzdCA9IFtdO1xuICAgICAgICB0aGlzLl9fbGVhdmVsaXN0ID0gW107XG4gICAgICAgIHRoaXMuX19jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fX3N0YXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fX2ZhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgaWYgKHZpc2l0b3IuZmFsbGJhY2sgPT09ICdpdGVyYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLl9fZmFsbGJhY2sgPSBvYmplY3RLZXlzO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2aXNpdG9yLmZhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLl9fZmFsbGJhY2sgPSB2aXNpdG9yLmZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fX2tleXMgPSBWaXNpdG9yS2V5cztcbiAgICAgICAgaWYgKHZpc2l0b3Iua2V5cykge1xuICAgICAgICAgICAgdGhpcy5fX2tleXMgPSBleHRlbmQob2JqZWN0Q3JlYXRlKHRoaXMuX19rZXlzKSwgdmlzaXRvci5rZXlzKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc05vZGUobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Byb3BlcnR5KG5vZGVUeXBlLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIChub2RlVHlwZSA9PT0gU3ludGF4Lk9iamVjdEV4cHJlc3Npb24gfHwgbm9kZVR5cGUgPT09IFN5bnRheC5PYmplY3RQYXR0ZXJuKSAmJiAncHJvcGVydGllcycgPT09IGtleTtcbiAgICB9XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9uIHRyYXZlcnNlKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdmFyIHdvcmtsaXN0LFxuICAgICAgICAgICAgbGVhdmVsaXN0LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICBjdXJyZW50MixcbiAgICAgICAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICBzZW50aW5lbDtcblxuICAgICAgICB0aGlzLl9faW5pdGlhbGl6ZShyb290LCB2aXNpdG9yKTtcblxuICAgICAgICBzZW50aW5lbCA9IHt9O1xuXG4gICAgICAgIC8vIHJlZmVyZW5jZVxuICAgICAgICB3b3JrbGlzdCA9IHRoaXMuX193b3JrbGlzdDtcbiAgICAgICAgbGVhdmVsaXN0ID0gdGhpcy5fX2xlYXZlbGlzdDtcblxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQocm9vdCwgbnVsbCwgbnVsbCwgbnVsbCkpO1xuICAgICAgICBsZWF2ZWxpc3QucHVzaChuZXcgRWxlbWVudChudWxsLCBudWxsLCBudWxsLCBudWxsKSk7XG5cbiAgICAgICAgd2hpbGUgKHdvcmtsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZWxlbWVudCA9IHdvcmtsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCA9PT0gc2VudGluZWwpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gbGVhdmVsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICAgICAgcmV0ID0gdGhpcy5fX2V4ZWN1dGUodmlzaXRvci5sZWF2ZSwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCByZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm5vZGUpIHtcblxuICAgICAgICAgICAgICAgIHJldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IuZW50ZXIsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgcmV0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzZW50aW5lbCk7XG4gICAgICAgICAgICAgICAgbGVhdmVsaXN0LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBTS0lQIHx8IHJldCA9PT0gU0tJUCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBub2RlID0gZWxlbWVudC5ub2RlO1xuICAgICAgICAgICAgICAgIG5vZGVUeXBlID0gbm9kZS50eXBlIHx8IGVsZW1lbnQud3JhcDtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2tleXNbbm9kZVR5cGVdO1xuICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fX2ZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2ZhbGxiYWNrKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5vZGUgdHlwZSAnICsgbm9kZVR5cGUgKyAnLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdoaWxlICgoY3VycmVudCAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleSA9IGNhbmRpZGF0ZXNbY3VycmVudF07XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG5vZGVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDIgPSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50MiAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVbY3VycmVudDJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eShub2RlVHlwZSwgY2FuZGlkYXRlc1tjdXJyZW50XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgJ1Byb3BlcnR5JywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoY2FuZGlkYXRlW2N1cnJlbnQyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgbnVsbCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQoY2FuZGlkYXRlLCBrZXksIG51bGwsIG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciB3b3JrbGlzdCxcbiAgICAgICAgICAgIGxlYXZlbGlzdCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgY3VycmVudDIsXG4gICAgICAgICAgICBjYW5kaWRhdGVzLFxuICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgc2VudGluZWwsXG4gICAgICAgICAgICBvdXRlcixcbiAgICAgICAgICAgIGtleTtcblxuICAgICAgICBmdW5jdGlvbiByZW1vdmVFbGVtKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBuZXh0RWxlbSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnJlZi5yZW1vdmUoKSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHJlZmVyZW5jZSBpcyBhbiBlbGVtZW50IG9mIGFuIGFycmF5LlxuICAgICAgICAgICAgICAgIGtleSA9IGVsZW1lbnQucmVmLmtleTtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtZW50LnJlZi5wYXJlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiByZW1vdmVkIGZyb20gYXJyYXksIHRoZW4gZGVjcmVhc2UgZm9sbG93aW5nIGl0ZW1zJyBrZXlzLlxuICAgICAgICAgICAgICAgIGkgPSB3b3JrbGlzdC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0RWxlbSA9IHdvcmtsaXN0W2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEVsZW0ucmVmICYmIG5leHRFbGVtLnJlZi5wYXJlbnQgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgIChuZXh0RWxlbS5yZWYua2V5IDwga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAtLW5leHRFbGVtLnJlZi5rZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9faW5pdGlhbGl6ZShyb290LCB2aXNpdG9yKTtcblxuICAgICAgICBzZW50aW5lbCA9IHt9O1xuXG4gICAgICAgIC8vIHJlZmVyZW5jZVxuICAgICAgICB3b3JrbGlzdCA9IHRoaXMuX193b3JrbGlzdDtcbiAgICAgICAgbGVhdmVsaXN0ID0gdGhpcy5fX2xlYXZlbGlzdDtcblxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIG91dGVyID0ge1xuICAgICAgICAgICAgcm9vdDogcm9vdFxuICAgICAgICB9O1xuICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQocm9vdCwgbnVsbCwgbnVsbCwgbmV3IFJlZmVyZW5jZShvdXRlciwgJ3Jvb3QnKSk7XG4gICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIGxlYXZlbGlzdC5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgIHdoaWxlICh3b3JrbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB3b3JrbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT09IHNlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGxlYXZlbGlzdC5wb3AoKTtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IubGVhdmUsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gbm9kZSBtYXkgYmUgcmVwbGFjZWQgd2l0aCBudWxsLFxuICAgICAgICAgICAgICAgIC8vIHNvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdW5kZWZpbmVkIGFuZCBudWxsIGluIHRoaXMgcGxhY2VcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSBCUkVBSyAmJiB0YXJnZXQgIT09IFNLSVAgJiYgdGFyZ2V0ICE9PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlZi5yZXBsYWNlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gUkVNT1ZFIHx8IHRhcmdldCA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUVsZW0oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gQlJFQUsgfHwgdGFyZ2V0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0ZXIucm9vdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuX19leGVjdXRlKHZpc2l0b3IuZW50ZXIsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyBub2RlIG1heSBiZSByZXBsYWNlZCB3aXRoIG51bGwsXG4gICAgICAgICAgICAvLyBzbyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHVuZGVmaW5lZCBhbmQgbnVsbCBpbiB0aGlzIHBsYWNlXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSBCUkVBSyAmJiB0YXJnZXQgIT09IFNLSVAgJiYgdGFyZ2V0ICE9PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICAvLyByZXBsYWNlXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZWYucmVwbGFjZSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQubm9kZSA9IHRhcmdldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gUkVNT1ZFIHx8IHRhcmdldCA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRWxlbShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm5vZGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCB0YXJnZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dGVyLnJvb3Q7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG5vZGUgbWF5IGJlIG51bGxcbiAgICAgICAgICAgIG5vZGUgPSBlbGVtZW50Lm5vZGU7XG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd29ya2xpc3QucHVzaChzZW50aW5lbCk7XG4gICAgICAgICAgICBsZWF2ZWxpc3QucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX19zdGF0ZSA9PT0gU0tJUCB8fCB0YXJnZXQgPT09IFNLSVApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgZWxlbWVudC53cmFwO1xuICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19rZXlzW25vZGVUeXBlXTtcbiAgICAgICAgICAgIGlmICghY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcyA9IHRoaXMuX19mYWxsYmFjayhub2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlICcgKyBub2RlVHlwZSArICcuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQgLT0gMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIGtleSA9IGNhbmRpZGF0ZXNbY3VycmVudF07XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDIgPSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQyIC09IDEpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlW2N1cnJlbnQyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvcGVydHkobm9kZVR5cGUsIGNhbmRpZGF0ZXNbY3VycmVudF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgJ1Byb3BlcnR5JywgbmV3IFJlZmVyZW5jZShjYW5kaWRhdGUsIGN1cnJlbnQyKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGVbY3VycmVudDJdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChjYW5kaWRhdGVbY3VycmVudDJdLCBba2V5LCBjdXJyZW50Ml0sIG51bGwsIG5ldyBSZWZlcmVuY2UoY2FuZGlkYXRlLCBjdXJyZW50MikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2gobmV3IEVsZW1lbnQoY2FuZGlkYXRlLCBrZXksIG51bGwsIG5ldyBSZWZlcmVuY2Uobm9kZSwga2V5KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRlci5yb290O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB0cmF2ZXJzZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIudHJhdmVyc2Uocm9vdCwgdmlzaXRvcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZShyb290LCB2aXNpdG9yKSB7XG4gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVwbGFjZShyb290LCB2aXNpdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmRDb21tZW50UmFuZ2UoY29tbWVudCwgdG9rZW5zKSB7XG4gICAgICAgIHZhciB0YXJnZXQ7XG5cbiAgICAgICAgdGFyZ2V0ID0gdXBwZXJCb3VuZCh0b2tlbnMsIGZ1bmN0aW9uIHNlYXJjaCh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuLnJhbmdlWzBdID4gY29tbWVudC5yYW5nZVswXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlID0gW2NvbW1lbnQucmFuZ2VbMF0sIGNvbW1lbnQucmFuZ2VbMV1dO1xuXG4gICAgICAgIGlmICh0YXJnZXQgIT09IHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVsxXSA9IHRva2Vuc1t0YXJnZXRdLnJhbmdlWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFyZ2V0IC09IDE7XG4gICAgICAgIGlmICh0YXJnZXQgPj0gMCkge1xuICAgICAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlWzBdID0gdG9rZW5zW3RhcmdldF0ucmFuZ2VbMV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhdHRhY2hDb21tZW50cyh0cmVlLCBwcm92aWRlZENvbW1lbnRzLCB0b2tlbnMpIHtcbiAgICAgICAgLy8gQXQgZmlyc3QsIHdlIHNob3VsZCBjYWxjdWxhdGUgZXh0ZW5kZWQgY29tbWVudCByYW5nZXMuXG4gICAgICAgIHZhciBjb21tZW50cyA9IFtdLCBjb21tZW50LCBsZW4sIGksIGN1cnNvcjtcblxuICAgICAgICBpZiAoIXRyZWUucmFuZ2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXR0YWNoQ29tbWVudHMgbmVlZHMgcmFuZ2UgaW5mb3JtYXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRva2VucyBhcnJheSBpcyBlbXB0eSwgd2UgYXR0YWNoIGNvbW1lbnRzIHRvIHRyZWUgYXMgJ2xlYWRpbmdDb21tZW50cydcbiAgICAgICAgaWYgKCF0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAocHJvdmlkZWRDb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBwcm92aWRlZENvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBkZWVwQ29weShwcm92aWRlZENvbW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlID0gWzAsIHRyZWUucmFuZ2VbMF1dO1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmVlLmxlYWRpbmdDb21tZW50cyA9IGNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBwcm92aWRlZENvbW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb21tZW50cy5wdXNoKGV4dGVuZENvbW1lbnRSYW5nZShkZWVwQ29weShwcm92aWRlZENvbW1lbnRzW2ldKSwgdG9rZW5zKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIGlzIGJhc2VkIG9uIEpvaG4gRnJlZW1hbidzIGltcGxlbWVudGF0aW9uLlxuICAgICAgICBjdXJzb3IgPSAwO1xuICAgICAgICB0cmF2ZXJzZSh0cmVlLCB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29tbWVudDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRzW2N1cnNvcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50LmV4dGVuZGVkUmFuZ2VbMV0gPiBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50LmV4dGVuZGVkUmFuZ2VbMV0gPT09IG5vZGUucmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLnNwbGljZShjdXJzb3IsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IG91dCBvZiBvd25lZCBub2RlXG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciA9PT0gY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLkJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c1tjdXJzb3JdLmV4dGVuZGVkUmFuZ2VbMF0gPiBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLlNraXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjdXJzb3IgPSAwO1xuICAgICAgICB0cmF2ZXJzZSh0cmVlLCB7XG4gICAgICAgICAgICBsZWF2ZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29tbWVudDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRzW2N1cnNvcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnJhbmdlWzFdIDwgY29tbWVudC5leHRlbmRlZFJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnJhbmdlWzFdID09PSBjb21tZW50LmV4dGVuZGVkUmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS50cmFpbGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLnNwbGljZShjdXJzb3IsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IG91dCBvZiBvd25lZCBub2RlXG4gICAgICAgICAgICAgICAgaWYgKGN1cnNvciA9PT0gY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLkJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c1tjdXJzb3JdLmV4dGVuZGVkUmFuZ2VbMF0gPiBub2RlLnJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdG9yT3B0aW9uLlNraXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdHJlZTtcbiAgICB9XG5cbiAgICBleHBvcnRzLnZlcnNpb24gPSByZXF1aXJlKCcuL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgZXhwb3J0cy5TeW50YXggPSBTeW50YXg7XG4gICAgZXhwb3J0cy50cmF2ZXJzZSA9IHRyYXZlcnNlO1xuICAgIGV4cG9ydHMucmVwbGFjZSA9IHJlcGxhY2U7XG4gICAgZXhwb3J0cy5hdHRhY2hDb21tZW50cyA9IGF0dGFjaENvbW1lbnRzO1xuICAgIGV4cG9ydHMuVmlzaXRvcktleXMgPSBWaXNpdG9yS2V5cztcbiAgICBleHBvcnRzLlZpc2l0b3JPcHRpb24gPSBWaXNpdG9yT3B0aW9uO1xuICAgIGV4cG9ydHMuQ29udHJvbGxlciA9IENvbnRyb2xsZXI7XG4gICAgZXhwb3J0cy5jbG9uZUVudmlyb25tZW50ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xvbmUoe30pOyB9O1xuXG4gICAgcmV0dXJuIGV4cG9ydHM7XG59KGV4cG9ydHMpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2Zyb21cIjogXCJlc3RyYXZlcnNlQF40LjIuMFwiLFxuICBcIl9pZFwiOiBcImVzdHJhdmVyc2VANC4yLjBcIixcbiAgXCJfaW5CdW5kbGVcIjogZmFsc2UsXG4gIFwiX2ludGVncml0eVwiOiBcInNoYTEtRGU0LzdUSDgxR2xoak9jMElKbjhHdm9MMnhNPVwiLFxuICBcIl9sb2NhdGlvblwiOiBcIi9zdGF0aWMtZXZhbC9lc3RyYXZlcnNlXCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiLFxuICAgIFwicmVnaXN0cnlcIjogdHJ1ZSxcbiAgICBcInJhd1wiOiBcImVzdHJhdmVyc2VAXjQuMi4wXCIsXG4gICAgXCJuYW1lXCI6IFwiZXN0cmF2ZXJzZVwiLFxuICAgIFwiZXNjYXBlZE5hbWVcIjogXCJlc3RyYXZlcnNlXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjQuMi4wXCIsXG4gICAgXCJzYXZlU3BlY1wiOiBudWxsLFxuICAgIFwiZmV0Y2hTcGVjXCI6IFwiXjQuMi4wXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvc3RhdGljLWV2YWwvZXNjb2RlZ2VuXCJcbiAgXSxcbiAgXCJfcmVzb2x2ZWRcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3RyYXZlcnNlLy0vZXN0cmF2ZXJzZS00LjIuMC50Z3pcIixcbiAgXCJfc2hhc3VtXCI6IFwiMGRlZTNmZWQzMWZjZDQ2OTYxOGNlNzM0MjA5OWZjMWFmYTBiZGIxM1wiLFxuICBcIl9zcGVjXCI6IFwiZXN0cmF2ZXJzZUBeNC4yLjBcIixcbiAgXCJfd2hlcmVcIjogXCIvVXNlcnMvamN3aGl0bG9jay9kZXZlbG9wbWVudC9zd2F5L25vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXNjb2RlZ2VuXCIsXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZXN0b29scy9lc3RyYXZlcnNlL2lzc3Vlc1wiXG4gIH0sXG4gIFwiYnVuZGxlRGVwZW5kZW5jaWVzXCI6IGZhbHNlLFxuICBcImRlcHJlY2F0ZWRcIjogZmFsc2UsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJFQ01BU2NyaXB0IEpTIEFTVCB0cmF2ZXJzYWwgZnVuY3Rpb25zXCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJhYmVsLXByZXNldC1lczIwMTVcIjogXCJeNi4zLjEzXCIsXG4gICAgXCJiYWJlbC1yZWdpc3RlclwiOiBcIl42LjMuMTNcIixcbiAgICBcImNoYWlcIjogXCJeMi4xLjFcIixcbiAgICBcImVzcHJlZVwiOiBcIl4xLjExLjBcIixcbiAgICBcImd1bHBcIjogXCJeMy44LjEwXCIsXG4gICAgXCJndWxwLWJ1bXBcIjogXCJeMC4yLjJcIixcbiAgICBcImd1bHAtZmlsdGVyXCI6IFwiXjIuMC4wXCIsXG4gICAgXCJndWxwLWdpdFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiZ3VscC10YWctdmVyc2lvblwiOiBcIl4xLjIuMVwiLFxuICAgIFwianNoaW50XCI6IFwiXjIuNS42XCIsXG4gICAgXCJtb2NoYVwiOiBcIl4yLjEuMFwiXG4gIH0sXG4gIFwiZW5naW5lc1wiOiB7XG4gICAgXCJub2RlXCI6IFwiPj0wLjEwLjBcIlxuICB9LFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2VzdG9vbHMvZXN0cmF2ZXJzZVwiLFxuICBcImxpY2Vuc2VcIjogXCJCU0QtMi1DbGF1c2VcIixcbiAgXCJtYWluXCI6IFwiZXN0cmF2ZXJzZS5qc1wiLFxuICBcIm1haW50YWluZXJzXCI6IFtcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJZdXN1a2UgU3V6dWtpXCIsXG4gICAgICBcImVtYWlsXCI6IFwidXRhdGFuZS50ZWFAZ21haWwuY29tXCIsXG4gICAgICBcInVybFwiOiBcImh0dHA6Ly9naXRodWIuY29tL0NvbnN0ZWxsYXRpb25cIlxuICAgIH1cbiAgXSxcbiAgXCJuYW1lXCI6IFwiZXN0cmF2ZXJzZVwiLFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2VzdG9vbHMvZXN0cmF2ZXJzZS5naXRcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwibGludFwiOiBcImpzaGludCBlc3RyYXZlcnNlLmpzXCIsXG4gICAgXCJ0ZXN0XCI6IFwibnBtIHJ1bi1zY3JpcHQgbGludCAmJiBucG0gcnVuLXNjcmlwdCB1bml0LXRlc3RcIixcbiAgICBcInVuaXQtdGVzdFwiOiBcIm1vY2hhIC0tY29tcGlsZXJzIGpzOmJhYmVsLXJlZ2lzdGVyXCJcbiAgfSxcbiAgXCJ2ZXJzaW9uXCI6IFwiNC4yLjBcIlxufVxuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG5leHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaC5cbiAqXG4gKiBAcGFyYW0gYUxvdyBJbmRpY2VzIGhlcmUgYW5kIGxvd2VyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFuZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IGJlaW5nIHNlYXJjaGVkIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIG5vbi1lbXB0eSBhcnJheSBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBGdW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEuXG4gKiBAcGFyYW0gYUJpYXMgRWl0aGVyICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgLy8gVGhpcyBmdW5jdGlvbiB0ZXJtaW5hdGVzIHdoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZTpcbiAgLy9cbiAgLy8gICAxLiBXZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgLy9cbiAgLy8gICAyLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGJ1dCB3ZSBjYW4gcmV0dXJuIHRoZSBpbmRleCBvZlxuICAvLyAgICAgIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudC5cbiAgLy9cbiAgLy8gICAzLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGFuZCB0aGVyZSBpcyBubyBuZXh0LWNsb3Nlc3RcbiAgLy8gICAgICBlbGVtZW50IHRoYW4gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgc28gd2UgcmV0dXJuIC0xLlxuICB2YXIgbWlkID0gTWF0aC5mbG9vcigoYUhpZ2ggLSBhTG93KSAvIDIpICsgYUxvdztcbiAgdmFyIGNtcCA9IGFDb21wYXJlKGFOZWVkbGUsIGFIYXlzdGFja1ttaWRdLCB0cnVlKTtcbiAgaWYgKGNtcCA9PT0gMCkge1xuICAgIC8vIEZvdW5kIHRoZSBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgICByZXR1cm4gbWlkO1xuICB9XG4gIGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGdyZWF0ZXIgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAoYUhpZ2ggLSBtaWQgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2gobWlkLCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgIH1cblxuICAgIC8vIFRoZSBleGFjdCBuZWVkbGUgZWxlbWVudCB3YXMgbm90IGZvdW5kIGluIHRoaXMgaGF5c3RhY2suIERldGVybWluZSBpZlxuICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgIHJldHVybiBhSGlnaCA8IGFIYXlzdGFjay5sZW5ndGggPyBhSGlnaCA6IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGxlc3MgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAobWlkIC0gYUxvdyA+IDEpIHtcbiAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSBsb3dlciBoYWxmLlxuICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBtaWQsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYUxvdyA8IDAgPyAtMSA6IGFMb3c7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoIHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuXG4gKiB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgZWxlbWVudCBpZiB0aGVyZSBpcyBubyBleGFjdCBoaXQuIFRoaXMgaXMgYmVjYXVzZVxuICogbWFwcGluZ3MgYmV0d2VlbiBvcmlnaW5hbCBhbmQgZ2VuZXJhdGVkIGxpbmUvY29sIHBhaXJzIGFyZSBzaW5nbGUgcG9pbnRzLFxuICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lvbiBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnNcbiAqIHRoYXQgeW91IGFyZW4ndCBvbiB0aGUgdmVyeSBzdGFydCBvZiBhIHJlZ2lvbi5cbiAqXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLlxuICogQHBhcmFtIGFIYXlzdGFjayBUaGUgYXJyYXkgdGhhdCBpcyBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHRoZSBuZWVkbGUgYW5kIGFuIGVsZW1lbnQgaW4gdGhlXG4gKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzXG4gKiAgICAgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCwgcmVzcGVjdGl2ZWx5LlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICovXG5leHBvcnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICBpZiAoYUhheXN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHJlY3Vyc2l2ZVNlYXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbXBhcmUsIGFCaWFzIHx8IGV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gV2UgaGF2ZSBmb3VuZCBlaXRoZXIgdGhlIGV4YWN0IGVsZW1lbnQsIG9yIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudCB0aGFuXG4gIC8vIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHN1Y2hcbiAgLy8gZWxlbWVudC4gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNtYWxsZXN0IG9mIHRoZXNlLlxuICB3aGlsZSAoaW5kZXggLSAxID49IDApIHtcbiAgICBpZiAoYUNvbXBhcmUoYUhheXN0YWNrW2luZGV4XSwgYUhheXN0YWNrW2luZGV4IC0gMV0sIHRydWUpICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLS1pbmRleDtcbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIHNvdXJjZVJlbGF0aXZlID0gc291cmNlRmlsZTtcbiAgICAgIGlmIChzb3VyY2VSb290ICE9PSBudWxsKSB7XG4gICAgICAgIHNvdXJjZVJlbGF0aXZlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnZW5lcmF0b3IuX3NvdXJjZXMuaGFzKHNvdXJjZVJlbGF0aXZlKSkge1xuICAgICAgICBnZW5lcmF0b3IuX3NvdXJjZXMuYWRkKHNvdXJjZVJlbGF0aXZlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIFNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVpcmUoJy4vc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vLyBNYXRjaGVzIGEgV2luZG93cy1zdHlsZSBgXFxyXFxuYCBuZXdsaW5lIG9yIGEgYFxcbmAgbmV3bGluZSB1c2VkIGJ5IGFsbCBvdGhlclxuLy8gb3BlcmF0aW5nIHN5c3RlbXMgdGhlc2UgZGF5cyAoY2FwdHVyaW5nIHRoZSByZXN1bHQpLlxudmFyIFJFR0VYX05FV0xJTkUgPSAvKFxccj9cXG4pLztcblxuLy8gTmV3bGluZSBjaGFyYWN0ZXIgY29kZSBmb3IgY2hhckNvZGVBdCgpIGNvbXBhcmlzb25zXG52YXIgTkVXTElORV9DT0RFID0gMTA7XG5cbi8vIFByaXZhdGUgc3ltYm9sIGZvciBpZGVudGlmeWluZyBgU291cmNlTm9kZWBzIHdoZW4gbXVsdGlwbGUgdmVyc2lvbnMgb2Zcbi8vIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkgYXJlIGxvYWRlZC4gVGhpcyBNVVNUIE5PVCBDSEFOR0UgYWNyb3NzXG4vLyB2ZXJzaW9ucyFcbnZhciBpc1NvdXJjZU5vZGUgPSBcIiQkJGlzU291cmNlTm9kZSQkJFwiO1xuXG4vKipcbiAqIFNvdXJjZU5vZGVzIHByb3ZpZGUgYSB3YXkgdG8gYWJzdHJhY3Qgb3ZlciBpbnRlcnBvbGF0aW5nL2NvbmNhdGVuYXRpbmdcbiAqIHNuaXBwZXRzIG9mIGdlbmVyYXRlZCBKYXZhU2NyaXB0IHNvdXJjZSBjb2RlIHdoaWxlIG1haW50YWluaW5nIHRoZSBsaW5lIGFuZFxuICogY29sdW1uIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIGFMaW5lIFRoZSBvcmlnaW5hbCBsaW5lIG51bWJlci5cbiAqIEBwYXJhbSBhQ29sdW1uIFRoZSBvcmlnaW5hbCBjb2x1bW4gbnVtYmVyLlxuICogQHBhcmFtIGFTb3VyY2UgVGhlIG9yaWdpbmFsIHNvdXJjZSdzIGZpbGVuYW1lLlxuICogQHBhcmFtIGFDaHVua3MgT3B0aW9uYWwuIEFuIGFycmF5IG9mIHN0cmluZ3Mgd2hpY2ggYXJlIHNuaXBwZXRzIG9mXG4gKiAgICAgICAgZ2VuZXJhdGVkIEpTLCBvciBvdGhlciBTb3VyY2VOb2Rlcy5cbiAqIEBwYXJhbSBhTmFtZSBUaGUgb3JpZ2luYWwgaWRlbnRpZmllci5cbiAqL1xuZnVuY3Rpb24gU291cmNlTm9kZShhTGluZSwgYUNvbHVtbiwgYVNvdXJjZSwgYUNodW5rcywgYU5hbWUpIHtcbiAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICB0aGlzLnNvdXJjZUNvbnRlbnRzID0ge307XG4gIHRoaXMubGluZSA9IGFMaW5lID09IG51bGwgPyBudWxsIDogYUxpbmU7XG4gIHRoaXMuY29sdW1uID0gYUNvbHVtbiA9PSBudWxsID8gbnVsbCA6IGFDb2x1bW47XG4gIHRoaXMuc291cmNlID0gYVNvdXJjZSA9PSBudWxsID8gbnVsbCA6IGFTb3VyY2U7XG4gIHRoaXMubmFtZSA9IGFOYW1lID09IG51bGwgPyBudWxsIDogYU5hbWU7XG4gIHRoaXNbaXNTb3VyY2VOb2RlXSA9IHRydWU7XG4gIGlmIChhQ2h1bmtzICE9IG51bGwpIHRoaXMuYWRkKGFDaHVua3MpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBTb3VyY2VOb2RlIGZyb20gZ2VuZXJhdGVkIGNvZGUgYW5kIGEgU291cmNlTWFwQ29uc3VtZXIuXG4gKlxuICogQHBhcmFtIGFHZW5lcmF0ZWRDb2RlIFRoZSBnZW5lcmF0ZWQgY29kZVxuICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgU291cmNlTWFwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhUmVsYXRpdmVQYXRoIE9wdGlvbmFsLiBUaGUgcGF0aCB0aGF0IHJlbGF0aXZlIHNvdXJjZXMgaW4gdGhlXG4gKiAgICAgICAgU291cmNlTWFwQ29uc3VtZXIgc2hvdWxkIGJlIHJlbGF0aXZlIHRvLlxuICovXG5Tb3VyY2VOb2RlLmZyb21TdHJpbmdXaXRoU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcChhR2VuZXJhdGVkQ29kZSwgYVNvdXJjZU1hcENvbnN1bWVyLCBhUmVsYXRpdmVQYXRoKSB7XG4gICAgLy8gVGhlIFNvdXJjZU5vZGUgd2Ugd2FudCB0byBmaWxsIHdpdGggdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAgLy8gYW5kIHRoZSBTb3VyY2VNYXBcbiAgICB2YXIgbm9kZSA9IG5ldyBTb3VyY2VOb2RlKCk7XG5cbiAgICAvLyBBbGwgZXZlbiBpbmRpY2VzIG9mIHRoaXMgYXJyYXkgYXJlIG9uZSBsaW5lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSxcbiAgICAvLyB3aGlsZSBhbGwgb2RkIGluZGljZXMgYXJlIHRoZSBuZXdsaW5lcyBiZXR3ZWVuIHR3byBhZGphY2VudCBsaW5lc1xuICAgIC8vIChzaW5jZSBgUkVHRVhfTkVXTElORWAgY2FwdHVyZXMgaXRzIG1hdGNoKS5cbiAgICAvLyBQcm9jZXNzZWQgZnJhZ21lbnRzIGFyZSBhY2Nlc3NlZCBieSBjYWxsaW5nIGBzaGlmdE5leHRMaW5lYC5cbiAgICB2YXIgcmVtYWluaW5nTGluZXMgPSBhR2VuZXJhdGVkQ29kZS5zcGxpdChSRUdFWF9ORVdMSU5FKTtcbiAgICB2YXIgcmVtYWluaW5nTGluZXNJbmRleCA9IDA7XG4gICAgdmFyIHNoaWZ0TmV4dExpbmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsaW5lQ29udGVudHMgPSBnZXROZXh0TGluZSgpO1xuICAgICAgLy8gVGhlIGxhc3QgbGluZSBvZiBhIGZpbGUgbWlnaHQgbm90IGhhdmUgYSBuZXdsaW5lLlxuICAgICAgdmFyIG5ld0xpbmUgPSBnZXROZXh0TGluZSgpIHx8IFwiXCI7XG4gICAgICByZXR1cm4gbGluZUNvbnRlbnRzICsgbmV3TGluZTtcblxuICAgICAgZnVuY3Rpb24gZ2V0TmV4dExpbmUoKSB7XG4gICAgICAgIHJldHVybiByZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoID9cbiAgICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXgrK10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHBvc2l0aW9uIG9mIFwicmVtYWluaW5nTGluZXNcIlxuICAgIHZhciBsYXN0R2VuZXJhdGVkTGluZSA9IDEsIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuXG4gICAgLy8gVGhlIGdlbmVyYXRlIFNvdXJjZU5vZGVzIHdlIG5lZWQgYSBjb2RlIHJhbmdlLlxuICAgIC8vIFRvIGV4dHJhY3QgaXQgY3VycmVudCBhbmQgbGFzdCBtYXBwaW5nIGlzIHVzZWQuXG4gICAgLy8gSGVyZSB3ZSBzdG9yZSB0aGUgbGFzdCBtYXBwaW5nLlxuICAgIHZhciBsYXN0TWFwcGluZyA9IG51bGw7XG5cbiAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChsYXN0TWFwcGluZyAhPT0gbnVsbCkge1xuICAgICAgICAvLyBXZSBhZGQgdGhlIGNvZGUgZnJvbSBcImxhc3RNYXBwaW5nXCIgdG8gXCJtYXBwaW5nXCI6XG4gICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZXJlIGlzIGEgbmV3IGxpbmUgaW4gYmV0d2Vlbi5cbiAgICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgLy8gQXNzb2NpYXRlIGZpcnN0IGxpbmUgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgICAvLyBUaGUgcmVtYWluaW5nIGNvZGUgaXMgYWRkZWQgd2l0aG91dCBtYXBwaW5nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV3IGxpbmUgaW4gYmV0d2Vlbi5cbiAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIGNvZGUgYmV0d2VlbiBcImxhc3RHZW5lcmF0ZWRDb2x1bW5cIiBhbmRcbiAgICAgICAgICAvLyBcIm1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXCIgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSB8fCAnJztcbiAgICAgICAgICB2YXIgY29kZSA9IG5leHRMaW5lLnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIGNvZGUpO1xuICAgICAgICAgIC8vIE5vIG1vcmUgcmVtYWluaW5nIGNvZGUsIGNvbnRpbnVlXG4gICAgICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gV2UgYWRkIHRoZSBnZW5lcmF0ZWQgY29kZSB1bnRpbCB0aGUgZmlyc3QgbWFwcGluZ1xuICAgICAgLy8gdG8gdGhlIFNvdXJjZU5vZGUgd2l0aG91dCBhbnkgbWFwcGluZy5cbiAgICAgIC8vIEVhY2ggbGluZSBpcyBhZGRlZCBhcyBzZXBhcmF0ZSBzdHJpbmcuXG4gICAgICB3aGlsZSAobGFzdEdlbmVyYXRlZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgbm9kZS5hZGQoc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0R2VuZXJhdGVkQ29sdW1uIDwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pIHtcbiAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gfHwgJyc7XG4gICAgICAgIG5vZGUuYWRkKG5leHRMaW5lLnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikpO1xuICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICB9LCB0aGlzKTtcbiAgICAvLyBXZSBoYXZlIHByb2Nlc3NlZCBhbGwgbWFwcGluZ3MuXG4gICAgaWYgKHJlbWFpbmluZ0xpbmVzSW5kZXggPCByZW1haW5pbmdMaW5lcy5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TWFwcGluZykge1xuICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlbWFpbmluZyBjb2RlIGluIHRoZSBjdXJyZW50IGxpbmUgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgfVxuICAgICAgLy8gYW5kIGFkZCB0aGUgcmVtYWluaW5nIGxpbmVzIHdpdGhvdXQgYW55IG1hcHBpbmdcbiAgICAgIG5vZGUuYWRkKHJlbWFpbmluZ0xpbmVzLnNwbGljZShyZW1haW5pbmdMaW5lc0luZGV4KS5qb2luKFwiXCIpKTtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50IGludG8gU291cmNlTm9kZVxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhUmVsYXRpdmVQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5qb2luKGFSZWxhdGl2ZVBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBub2RlO1xuXG4gICAgZnVuY3Rpb24gYWRkTWFwcGluZ1dpdGhDb2RlKG1hcHBpbmcsIGNvZGUpIHtcbiAgICAgIGlmIChtYXBwaW5nID09PSBudWxsIHx8IG1hcHBpbmcuc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZS5hZGQoY29kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc291cmNlID0gYVJlbGF0aXZlUGF0aFxuICAgICAgICAgID8gdXRpbC5qb2luKGFSZWxhdGl2ZVBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIDogbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIG5vZGUuYWRkKG5ldyBTb3VyY2VOb2RlKG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcubmFtZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBjaHVuayBvZiBnZW5lcmF0ZWQgSlMgdG8gdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2FkZChhQ2h1bmspIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYUNodW5rKSkge1xuICAgIGFDaHVuay5mb3JFYWNoKGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgdGhpcy5hZGQoY2h1bmspO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGVsc2UgaWYgKGFDaHVua1tpc1NvdXJjZU5vZGVdIHx8IHR5cGVvZiBhQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoYUNodW5rKSB7XG4gICAgICB0aGlzLmNoaWxkcmVuLnB1c2goYUNodW5rKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBZGQgYSBjaHVuayBvZiBnZW5lcmF0ZWQgSlMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNvdXJjZSBub2RlLlxuICpcbiAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3ByZXBlbmQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBmb3IgKHZhciBpID0gYUNodW5rLmxlbmd0aC0xOyBpID49IDA7IGktLSkge1xuICAgICAgdGhpcy5wcmVwZW5kKGFDaHVua1tpXSk7XG4gICAgfVxuICB9XG4gIGVsc2UgaWYgKGFDaHVua1tpc1NvdXJjZU5vZGVdIHx8IHR5cGVvZiBhQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYUNodW5rKTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBKUyBzbmlwcGV0cyBpbiB0aGlzIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi4gVGhlXG4gKiB3YWxraW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHNuaXBwZXQgb2YgSlMgYW5kIGlzIHBhc3NlZCB0aGF0XG4gKiBzbmlwcGV0IGFuZCB0aGUgaXRzIG9yaWdpbmFsIGFzc29jaWF0ZWQgc291cmNlJ3MgbGluZS9jb2x1bW4gbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIGFGbiBUaGUgdHJhdmVyc2FsIGZ1bmN0aW9uLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gU291cmNlTm9kZV93YWxrKGFGbikge1xuICB2YXIgY2h1bms7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY2h1bmsgPSB0aGlzLmNoaWxkcmVuW2ldO1xuICAgIGlmIChjaHVua1tpc1NvdXJjZU5vZGVdKSB7XG4gICAgICBjaHVuay53YWxrKGFGbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGNodW5rICE9PSAnJykge1xuICAgICAgICBhRm4oY2h1bmssIHsgc291cmNlOiB0aGlzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSxcbiAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIExpa2UgYFN0cmluZy5wcm90b3R5cGUuam9pbmAgZXhjZXB0IGZvciBTb3VyY2VOb2Rlcy4gSW5zZXJ0cyBgYVN0cmAgYmV0d2VlblxuICogZWFjaCBvZiBgdGhpcy5jaGlsZHJlbmAuXG4gKlxuICogQHBhcmFtIGFTZXAgVGhlIHNlcGFyYXRvci5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfam9pbihhU2VwKSB7XG4gIHZhciBuZXdDaGlsZHJlbjtcbiAgdmFyIGk7XG4gIHZhciBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBuZXdDaGlsZHJlbiA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW4tMTsgaSsrKSB7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaChhU2VwKTtcbiAgICB9XG4gICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICB0aGlzLmNoaWxkcmVuID0gbmV3Q2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENhbGwgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlIG9uIHRoZSB2ZXJ5IHJpZ2h0LW1vc3Qgc291cmNlIHNuaXBwZXQuIFVzZWZ1bFxuICogZm9yIHRyaW1taW5nIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIGEgc291cmNlIG5vZGUsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gYVBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAqIEBwYXJhbSBhUmVwbGFjZW1lbnQgVGhlIHRoaW5nIHRvIHJlcGxhY2UgdGhlIHBhdHRlcm4gd2l0aC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUucmVwbGFjZVJpZ2h0ID0gZnVuY3Rpb24gU291cmNlTm9kZV9yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkge1xuICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICBpZiAobGFzdENoaWxkW2lzU291cmNlTm9kZV0pIHtcbiAgICBsYXN0Q2hpbGQucmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiBsYXN0Q2hpbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdID0gbGFzdENoaWxkLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKCcnLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHNvdXJjZSBjb250ZW50IGZvciBhIHNvdXJjZSBmaWxlLiBUaGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvclxuICogaW4gdGhlIHNvdXJjZXNDb250ZW50IGZpZWxkLlxuICpcbiAqIEBwYXJhbSBhU291cmNlRmlsZSBUaGUgZmlsZW5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlXG4gKiBAcGFyYW0gYVNvdXJjZUNvbnRlbnQgVGhlIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBmaWxlXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnNldFNvdXJjZUNvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdGhpcy5zb3VyY2VDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKGFTb3VyY2VGaWxlKV0gPSBhU291cmNlQ29udGVudDtcbiAgfTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgU291cmNlTm9kZXMuIFRoZSB3YWxraW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZWFjaFxuICogc291cmNlIGZpbGUgY29udGVudCBhbmQgaXMgcGFzc2VkIHRoZSBmaWxlbmFtZSBhbmQgc291cmNlIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIGFGbiBUaGUgdHJhdmVyc2FsIGZ1bmN0aW9uLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrU291cmNlQ29udGVudHMgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX3dhbGtTb3VyY2VDb250ZW50cyhhRm4pIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKHRoaXMuY2hpbGRyZW5baV1baXNTb3VyY2VOb2RlXSkge1xuICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLndhbGtTb3VyY2VDb250ZW50cyhhRm4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzb3VyY2VzID0gT2JqZWN0LmtleXModGhpcy5zb3VyY2VDb250ZW50cyk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNvdXJjZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFGbih1dGlsLmZyb21TZXRTdHJpbmcoc291cmNlc1tpXSksIHRoaXMuc291cmNlQ29udGVudHNbc291cmNlc1tpXV0pO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlLiBXYWxrcyBvdmVyIHRoZSB0cmVlXG4gKiBhbmQgY29uY2F0ZW5hdGVzIGFsbCB0aGUgdmFyaW91cyBzbmlwcGV0cyB0b2dldGhlciB0byBvbmUgc3RyaW5nLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmcoKSB7XG4gIHZhciBzdHIgPSBcIlwiO1xuICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgc3RyICs9IGNodW5rO1xuICB9KTtcbiAgcmV0dXJuIHN0cjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUgYWxvbmcgd2l0aCBhIHNvdXJjZVxuICogbWFwLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS50b1N0cmluZ1dpdGhTb3VyY2VNYXAgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nV2l0aFNvdXJjZU1hcChhQXJncykge1xuICB2YXIgZ2VuZXJhdGVkID0ge1xuICAgIGNvZGU6IFwiXCIsXG4gICAgbGluZTogMSxcbiAgICBjb2x1bW46IDBcbiAgfTtcbiAgdmFyIG1hcCA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpO1xuICB2YXIgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICB2YXIgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbExpbmUgPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsQ29sdW1uID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbE5hbWUgPSBudWxsO1xuICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rLCBvcmlnaW5hbCkge1xuICAgIGdlbmVyYXRlZC5jb2RlICs9IGNodW5rO1xuICAgIGlmIChvcmlnaW5hbC5zb3VyY2UgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwubGluZSAhPT0gbnVsbFxuICAgICAgICAmJiBvcmlnaW5hbC5jb2x1bW4gIT09IG51bGwpIHtcbiAgICAgIGlmKGxhc3RPcmlnaW5hbFNvdXJjZSAhPT0gb3JpZ2luYWwuc291cmNlXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxMaW5lICE9PSBvcmlnaW5hbC5saW5lXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxDb2x1bW4gIT09IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTmFtZSAhPT0gb3JpZ2luYWwubmFtZSkge1xuICAgICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgIGxpbmU6IG9yaWdpbmFsLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgIGxhc3RPcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgbGFzdE9yaWdpbmFsQ29sdW1uID0gb3JpZ2luYWwuY29sdW1uO1xuICAgICAgbGFzdE9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsLm5hbWU7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaWR4ID0gMCwgbGVuZ3RoID0gY2h1bmsubGVuZ3RoOyBpZHggPCBsZW5ndGg7IGlkeCsrKSB7XG4gICAgICBpZiAoY2h1bmsuY2hhckNvZGVBdChpZHgpID09PSBORVdMSU5FX0NPREUpIHtcbiAgICAgICAgZ2VuZXJhdGVkLmxpbmUrKztcbiAgICAgICAgZ2VuZXJhdGVkLmNvbHVtbiA9IDA7XG4gICAgICAgIC8vIE1hcHBpbmdzIGVuZCBhdCBlb2xcbiAgICAgICAgaWYgKGlkeCArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgIGxpbmU6IG9yaWdpbmFsLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4rKztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB0aGlzLndhbGtTb3VyY2VDb250ZW50cyhmdW5jdGlvbiAoc291cmNlRmlsZSwgc291cmNlQ29udGVudCkge1xuICAgIG1hcC5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpO1xuICB9KTtcblxuICByZXR1cm4geyBjb2RlOiBnZW5lcmF0ZWQuY29kZSwgbWFwOiBtYXAgfTtcbn07XG5cbmV4cG9ydHMuU291cmNlTm9kZSA9IFNvdXJjZU5vZGU7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICogb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIGdldHRpbmcuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICogZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGFOYW1lIGluIGFBcmdzKSB7XG4gICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIGFEZWZhdWx0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICB9XG59XG5leHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxudmFyIHVybFJlZ2V4cCA9IC9eKD86KFtcXHcrXFwtLl0rKTopP1xcL1xcLyg/OihcXHcrOlxcdyspQCk/KFtcXHcuLV0qKSg/OjooXFxkKykpPyguKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgdXJsUmVnZXhwLnRlc3QoYVBhdGgpO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gKiBzb3VyY2UvbmFtZS9vcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYVxuICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwIHx8IG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICBpZiAoYVN0cjEgPT09IGFTdHIyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoYVN0cjEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gMTsgLy8gYVN0cjIgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTsgLy8gYVN0cjEgIT09IG51bGxcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuLyoqXG4gKiBTdHJpcCBhbnkgSlNPTiBYU1NJIGF2b2lkYW5jZSBwcmVmaXggZnJvbSB0aGUgc3RyaW5nIChhcyBkb2N1bWVudGVkXG4gKiBpbiB0aGUgc291cmNlIG1hcHMgc3BlY2lmaWNhdGlvbiksIGFuZCB0aGVuIHBhcnNlIHRoZSBzdHJpbmcgYXNcbiAqIEpTT04uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU291cmNlTWFwSW5wdXQoc3RyKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHN0ci5yZXBsYWNlKC9eXFwpXX0nW15cXG5dKlxcbi8sICcnKSk7XG59XG5leHBvcnRzLnBhcnNlU291cmNlTWFwSW5wdXQgPSBwYXJzZVNvdXJjZU1hcElucHV0O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIFVSTCBvZiBhIHNvdXJjZSBnaXZlbiB0aGUgdGhlIHNvdXJjZSByb290LCB0aGUgc291cmNlJ3NcbiAqIFVSTCwgYW5kIHRoZSBzb3VyY2UgbWFwJ3MgVVJMLlxuICovXG5mdW5jdGlvbiBjb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKSB7XG4gIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCAnJztcblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIC8vIFRoaXMgZm9sbG93cyB3aGF0IENocm9tZSBkb2VzLlxuICAgIGlmIChzb3VyY2VSb290W3NvdXJjZVJvb3QubGVuZ3RoIC0gMV0gIT09ICcvJyAmJiBzb3VyY2VVUkxbMF0gIT09ICcvJykge1xuICAgICAgc291cmNlUm9vdCArPSAnLyc7XG4gICAgfVxuICAgIC8vIFRoZSBzcGVjIHNheXM6XG4gICAgLy8gICBMaW5lIDQ6IEFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlXG4gICAgLy8gICBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlXG4gICAgLy8gICDigJxzb3VyY2Vz4oCdIGVudHJ5LiAgVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWxcbiAgICAvLyAgIGVudHJpZXMgaW4gdGhlIOKAnHNvdXJjZeKAnSBmaWVsZC5cbiAgICBzb3VyY2VVUkwgPSBzb3VyY2VSb290ICsgc291cmNlVVJMO1xuICB9XG5cbiAgLy8gSGlzdG9yaWNhbGx5LCBTb3VyY2VNYXBDb25zdW1lciBkaWQgbm90IHRha2UgdGhlIHNvdXJjZU1hcFVSTCBhc1xuICAvLyBhIHBhcmFtZXRlci4gIFRoaXMgbW9kZSBpcyBzdGlsbCBzb21ld2hhdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeVxuICAvLyB0aGlzIGNvZGUgYmxvY2sgaXMgY29uZGl0aW9uYWwuICBIb3dldmVyLCBpdCdzIHByZWZlcmFibGUgdG8gcGFzc1xuICAvLyB0aGUgc291cmNlIG1hcCBVUkwgdG8gU291cmNlTWFwQ29uc3VtZXIsIHNvIHRoYXQgdGhpcyBmdW5jdGlvblxuICAvLyBjYW4gaW1wbGVtZW50IHRoZSBzb3VyY2UgVVJMIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIG91dGxpbmVkIGluXG4gIC8vIHRoZSBzcGVjLiAgVGhpcyBibG9jayBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxlbnQgb2Y6XG4gIC8vICAgIG5ldyBVUkwoc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpLnRvU3RyaW5nKClcbiAgLy8gLi4uIGV4Y2VwdCBpdCBhdm9pZHMgdXNpbmcgVVJMLCB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGluIHRoZVxuICAvLyBvbGRlciByZWxlYXNlcyBvZiBub2RlIHN0aWxsIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gIC8vXG4gIC8vIFRoZSBzcGVjIHNheXM6XG4gIC8vICAgSWYgdGhlIHNvdXJjZXMgYXJlIG5vdCBhYnNvbHV0ZSBVUkxzIGFmdGVyIHByZXBlbmRpbmcgb2YgdGhlXG4gIC8vICAg4oCcc291cmNlUm9vdOKAnSwgdGhlIHNvdXJjZXMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZVxuICAvLyAgIFNvdXJjZU1hcCAobGlrZSByZXNvbHZpbmcgc2NyaXB0IHNyYyBpbiBhIGh0bWwgZG9jdW1lbnQpLlxuICBpZiAoc291cmNlTWFwVVJMKSB7XG4gICAgdmFyIHBhcnNlZCA9IHVybFBhcnNlKHNvdXJjZU1hcFVSTCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZU1hcFVSTCBjb3VsZCBub3QgYmUgcGFyc2VkXCIpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkLnBhdGgpIHtcbiAgICAgIC8vIFN0cmlwIHRoZSBsYXN0IHBhdGggY29tcG9uZW50LCBidXQga2VlcCB0aGUgXCIvXCIuXG4gICAgICB2YXIgaW5kZXggPSBwYXJzZWQucGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcGFyc2VkLnBhdGggPSBwYXJzZWQucGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlVVJMID0gam9pbih1cmxHZW5lcmF0ZShwYXJzZWQpLCBzb3VyY2VVUkwpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShzb3VyY2VVUkwpO1xufVxuZXhwb3J0cy5jb21wdXRlU291cmNlVVJMID0gY29tcHV0ZVNvdXJjZVVSTDtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuIiwidmFyIENsaWVudFJlcXVlc3QgPSByZXF1aXJlKCcuL2xpYi9yZXF1ZXN0JylcbnZhciByZXNwb25zZSA9IHJlcXVpcmUoJy4vbGliL3Jlc3BvbnNlJylcbnZhciBleHRlbmQgPSByZXF1aXJlKCd4dGVuZCcpXG52YXIgc3RhdHVzQ29kZXMgPSByZXF1aXJlKCdidWlsdGluLXN0YXR1cy1jb2RlcycpXG52YXIgdXJsID0gcmVxdWlyZSgndXJsJylcblxudmFyIGh0dHAgPSBleHBvcnRzXG5cbmh0dHAucmVxdWVzdCA9IGZ1bmN0aW9uIChvcHRzLCBjYikge1xuXHRpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKVxuXHRcdG9wdHMgPSB1cmwucGFyc2Uob3B0cylcblx0ZWxzZVxuXHRcdG9wdHMgPSBleHRlbmQob3B0cylcblxuXHQvLyBOb3JtYWxseSwgdGhlIHBhZ2UgaXMgbG9hZGVkIGZyb20gaHR0cCBvciBodHRwcywgc28gbm90IHNwZWNpZnlpbmcgYSBwcm90b2NvbFxuXHQvLyB3aWxsIHJlc3VsdCBpbiBhICh2YWxpZCkgcHJvdG9jb2wtcmVsYXRpdmUgdXJsLiBIb3dldmVyLCB0aGlzIHdvbid0IHdvcmsgaWZcblx0Ly8gdGhlIHByb3RvY29sIGlzIHNvbWV0aGluZyBlbHNlLCBsaWtlICdmaWxlOidcblx0dmFyIGRlZmF1bHRQcm90b2NvbCA9IGdsb2JhbC5sb2NhdGlvbi5wcm90b2NvbC5zZWFyY2goL15odHRwcz86JC8pID09PSAtMSA/ICdodHRwOicgOiAnJ1xuXG5cdHZhciBwcm90b2NvbCA9IG9wdHMucHJvdG9jb2wgfHwgZGVmYXVsdFByb3RvY29sXG5cdHZhciBob3N0ID0gb3B0cy5ob3N0bmFtZSB8fCBvcHRzLmhvc3Rcblx0dmFyIHBvcnQgPSBvcHRzLnBvcnRcblx0dmFyIHBhdGggPSBvcHRzLnBhdGggfHwgJy8nXG5cblx0Ly8gTmVjZXNzYXJ5IGZvciBJUHY2IGFkZHJlc3Nlc1xuXHRpZiAoaG9zdCAmJiBob3N0LmluZGV4T2YoJzonKSAhPT0gLTEpXG5cdFx0aG9zdCA9ICdbJyArIGhvc3QgKyAnXSdcblxuXHQvLyBUaGlzIG1heSBiZSBhIHJlbGF0aXZlIHVybC4gVGhlIGJyb3dzZXIgc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGludGVycHJldCBpdCBjb3JyZWN0bHkuXG5cdG9wdHMudXJsID0gKGhvc3QgPyAocHJvdG9jb2wgKyAnLy8nICsgaG9zdCkgOiAnJykgKyAocG9ydCA/ICc6JyArIHBvcnQgOiAnJykgKyBwYXRoXG5cdG9wdHMubWV0aG9kID0gKG9wdHMubWV0aG9kIHx8ICdHRVQnKS50b1VwcGVyQ2FzZSgpXG5cdG9wdHMuaGVhZGVycyA9IG9wdHMuaGVhZGVycyB8fCB7fVxuXG5cdC8vIEFsc28gdmFsaWQgb3B0cy5hdXRoLCBvcHRzLm1vZGVcblxuXHR2YXIgcmVxID0gbmV3IENsaWVudFJlcXVlc3Qob3B0cylcblx0aWYgKGNiKVxuXHRcdHJlcS5vbigncmVzcG9uc2UnLCBjYilcblx0cmV0dXJuIHJlcVxufVxuXG5odHRwLmdldCA9IGZ1bmN0aW9uIGdldCAob3B0cywgY2IpIHtcblx0dmFyIHJlcSA9IGh0dHAucmVxdWVzdChvcHRzLCBjYilcblx0cmVxLmVuZCgpXG5cdHJldHVybiByZXFcbn1cblxuaHR0cC5DbGllbnRSZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdFxuaHR0cC5JbmNvbWluZ01lc3NhZ2UgPSByZXNwb25zZS5JbmNvbWluZ01lc3NhZ2VcblxuaHR0cC5BZ2VudCA9IGZ1bmN0aW9uICgpIHt9XG5odHRwLkFnZW50LmRlZmF1bHRNYXhTb2NrZXRzID0gNFxuXG5odHRwLmdsb2JhbEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoKVxuXG5odHRwLlNUQVRVU19DT0RFUyA9IHN0YXR1c0NvZGVzXG5cbmh0dHAuTUVUSE9EUyA9IFtcblx0J0NIRUNLT1VUJyxcblx0J0NPTk5FQ1QnLFxuXHQnQ09QWScsXG5cdCdERUxFVEUnLFxuXHQnR0VUJyxcblx0J0hFQUQnLFxuXHQnTE9DSycsXG5cdCdNLVNFQVJDSCcsXG5cdCdNRVJHRScsXG5cdCdNS0FDVElWSVRZJyxcblx0J01LQ09MJyxcblx0J01PVkUnLFxuXHQnTk9USUZZJyxcblx0J09QVElPTlMnLFxuXHQnUEFUQ0gnLFxuXHQnUE9TVCcsXG5cdCdQUk9QRklORCcsXG5cdCdQUk9QUEFUQ0gnLFxuXHQnUFVSR0UnLFxuXHQnUFVUJyxcblx0J1JFUE9SVCcsXG5cdCdTRUFSQ0gnLFxuXHQnU1VCU0NSSUJFJyxcblx0J1RSQUNFJyxcblx0J1VOTE9DSycsXG5cdCdVTlNVQlNDUklCRSdcbl0iLCJleHBvcnRzLmZldGNoID0gaXNGdW5jdGlvbihnbG9iYWwuZmV0Y2gpICYmIGlzRnVuY3Rpb24oZ2xvYmFsLlJlYWRhYmxlU3RyZWFtKVxuXG5leHBvcnRzLndyaXRhYmxlU3RyZWFtID0gaXNGdW5jdGlvbihnbG9iYWwuV3JpdGFibGVTdHJlYW0pXG5cbmV4cG9ydHMuYWJvcnRDb250cm9sbGVyID0gaXNGdW5jdGlvbihnbG9iYWwuQWJvcnRDb250cm9sbGVyKVxuXG5leHBvcnRzLmJsb2JDb25zdHJ1Y3RvciA9IGZhbHNlXG50cnkge1xuXHRuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEpXSlcblx0ZXhwb3J0cy5ibG9iQ29uc3RydWN0b3IgPSB0cnVlXG59IGNhdGNoIChlKSB7fVxuXG4vLyBUaGUgeGhyIHJlcXVlc3QgdG8gZXhhbXBsZS5jb20gbWF5IHZpb2xhdGUgc29tZSByZXN0cmljdGl2ZSBDU1AgY29uZmlndXJhdGlvbnMsXG4vLyBzbyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIGBmZXRjaGAsIGF2b2lkIGNhbGxpbmcgZ2V0WEhSKClcbi8vIGFuZCBhc3N1bWUgc3VwcG9ydCBmb3IgY2VydGFpbiBmZWF0dXJlcyBiZWxvdy5cbnZhciB4aHJcbmZ1bmN0aW9uIGdldFhIUiAoKSB7XG5cdC8vIENhY2hlIHRoZSB4aHIgdmFsdWVcblx0aWYgKHhociAhPT0gdW5kZWZpbmVkKSByZXR1cm4geGhyXG5cblx0aWYgKGdsb2JhbC5YTUxIdHRwUmVxdWVzdCkge1xuXHRcdHhociA9IG5ldyBnbG9iYWwuWE1MSHR0cFJlcXVlc3QoKVxuXHRcdC8vIElmIFhEb21haW5SZXF1ZXN0IGlzIGF2YWlsYWJsZSAoaWUgb25seSwgd2hlcmUgeGhyIG1pZ2h0IG5vdCB3b3JrXG5cdFx0Ly8gY3Jvc3MgZG9tYWluKSwgdXNlIHRoZSBwYWdlIGxvY2F0aW9uLiBPdGhlcndpc2UgdXNlIGV4YW1wbGUuY29tXG5cdFx0Ly8gTm90ZTogdGhpcyBkb2Vzbid0IGFjdHVhbGx5IG1ha2UgYW4gaHR0cCByZXF1ZXN0LlxuXHRcdHRyeSB7XG5cdFx0XHR4aHIub3BlbignR0VUJywgZ2xvYmFsLlhEb21haW5SZXF1ZXN0ID8gJy8nIDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nKVxuXHRcdH0gY2F0Y2goZSkge1xuXHRcdFx0eGhyID0gbnVsbFxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBTZXJ2aWNlIHdvcmtlcnMgZG9uJ3QgaGF2ZSBYSFJcblx0XHR4aHIgPSBudWxsXG5cdH1cblx0cmV0dXJuIHhoclxufVxuXG5mdW5jdGlvbiBjaGVja1R5cGVTdXBwb3J0ICh0eXBlKSB7XG5cdHZhciB4aHIgPSBnZXRYSFIoKVxuXHRpZiAoIXhocikgcmV0dXJuIGZhbHNlXG5cdHRyeSB7XG5cdFx0eGhyLnJlc3BvbnNlVHlwZSA9IHR5cGVcblx0XHRyZXR1cm4geGhyLnJlc3BvbnNlVHlwZSA9PT0gdHlwZVxuXHR9IGNhdGNoIChlKSB7fVxuXHRyZXR1cm4gZmFsc2Vcbn1cblxuLy8gRm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIFNhZmFyaSA3LjAgcmVwb3J0cyB0eXBlb2YgZ2xvYmFsLkFycmF5QnVmZmVyID09PSAnb2JqZWN0Jy5cbi8vIFNhZmFyaSA3LjEgYXBwZWFycyB0byBoYXZlIGZpeGVkIHRoaXMgYnVnLlxudmFyIGhhdmVBcnJheUJ1ZmZlciA9IHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnXG52YXIgaGF2ZVNsaWNlID0gaGF2ZUFycmF5QnVmZmVyICYmIGlzRnVuY3Rpb24oZ2xvYmFsLkFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSlcblxuLy8gSWYgZmV0Y2ggaXMgc3VwcG9ydGVkLCB0aGVuIGFycmF5YnVmZmVyIHdpbGwgYmUgc3VwcG9ydGVkIHRvby4gU2tpcCBjYWxsaW5nXG4vLyBjaGVja1R5cGVTdXBwb3J0KCksIHNpbmNlIHRoYXQgY2FsbHMgZ2V0WEhSKCkuXG5leHBvcnRzLmFycmF5YnVmZmVyID0gZXhwb3J0cy5mZXRjaCB8fCAoaGF2ZUFycmF5QnVmZmVyICYmIGNoZWNrVHlwZVN1cHBvcnQoJ2FycmF5YnVmZmVyJykpXG5cbi8vIFRoZXNlIG5leHQgdHdvIHRlc3RzIHVuYXZvaWRhYmx5IHNob3cgd2FybmluZ3MgaW4gQ2hyb21lLiBTaW5jZSBmZXRjaCB3aWxsIGFsd2F5c1xuLy8gYmUgdXNlZCBpZiBpdCdzIGF2YWlsYWJsZSwganVzdCByZXR1cm4gZmFsc2UgZm9yIHRoZXNlIHRvIGF2b2lkIHRoZSB3YXJuaW5ncy5cbmV4cG9ydHMubXNzdHJlYW0gPSAhZXhwb3J0cy5mZXRjaCAmJiBoYXZlU2xpY2UgJiYgY2hlY2tUeXBlU3VwcG9ydCgnbXMtc3RyZWFtJylcbmV4cG9ydHMubW96Y2h1bmtlZGFycmF5YnVmZmVyID0gIWV4cG9ydHMuZmV0Y2ggJiYgaGF2ZUFycmF5QnVmZmVyICYmXG5cdGNoZWNrVHlwZVN1cHBvcnQoJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJylcblxuLy8gSWYgZmV0Y2ggaXMgc3VwcG9ydGVkLCB0aGVuIG92ZXJyaWRlTWltZVR5cGUgd2lsbCBiZSBzdXBwb3J0ZWQgdG9vLiBTa2lwIGNhbGxpbmdcbi8vIGdldFhIUigpLlxuZXhwb3J0cy5vdmVycmlkZU1pbWVUeXBlID0gZXhwb3J0cy5mZXRjaCB8fCAoZ2V0WEhSKCkgPyBpc0Z1bmN0aW9uKGdldFhIUigpLm92ZXJyaWRlTWltZVR5cGUpIDogZmFsc2UpXG5cbmV4cG9ydHMudmJBcnJheSA9IGlzRnVuY3Rpb24oZ2xvYmFsLlZCQXJyYXkpXG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24gKHZhbHVlKSB7XG5cdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbn1cblxueGhyID0gbnVsbCAvLyBIZWxwIGdjXG4iLCJ2YXIgY2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vY2FwYWJpbGl0eScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgcmVzcG9uc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxudmFyIHRvQXJyYXlCdWZmZXIgPSByZXF1aXJlKCd0by1hcnJheWJ1ZmZlcicpXG5cbnZhciBJbmNvbWluZ01lc3NhZ2UgPSByZXNwb25zZS5JbmNvbWluZ01lc3NhZ2VcbnZhciByU3RhdGVzID0gcmVzcG9uc2UucmVhZHlTdGF0ZXNcblxuZnVuY3Rpb24gZGVjaWRlTW9kZSAocHJlZmVyQmluYXJ5LCB1c2VGZXRjaCkge1xuXHRpZiAoY2FwYWJpbGl0eS5mZXRjaCAmJiB1c2VGZXRjaCkge1xuXHRcdHJldHVybiAnZmV0Y2gnXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5tb3pjaHVua2VkYXJyYXlidWZmZXIpIHtcblx0XHRyZXR1cm4gJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkubXNzdHJlYW0pIHtcblx0XHRyZXR1cm4gJ21zLXN0cmVhbSdcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5LmFycmF5YnVmZmVyICYmIHByZWZlckJpbmFyeSkge1xuXHRcdHJldHVybiAnYXJyYXlidWZmZXInXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS52YkFycmF5ICYmIHByZWZlckJpbmFyeSkge1xuXHRcdHJldHVybiAndGV4dDp2YmFycmF5J1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiAndGV4dCdcblx0fVxufVxuXG52YXIgQ2xpZW50UmVxdWVzdCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdHMpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHN0cmVhbS5Xcml0YWJsZS5jYWxsKHNlbGYpXG5cblx0c2VsZi5fb3B0cyA9IG9wdHNcblx0c2VsZi5fYm9keSA9IFtdXG5cdHNlbGYuX2hlYWRlcnMgPSB7fVxuXHRpZiAob3B0cy5hdXRoKVxuXHRcdHNlbGYuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBuZXcgQnVmZmVyKG9wdHMuYXV0aCkudG9TdHJpbmcoJ2Jhc2U2NCcpKVxuXHRPYmplY3Qua2V5cyhvcHRzLmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcblx0XHRzZWxmLnNldEhlYWRlcihuYW1lLCBvcHRzLmhlYWRlcnNbbmFtZV0pXG5cdH0pXG5cblx0dmFyIHByZWZlckJpbmFyeVxuXHR2YXIgdXNlRmV0Y2ggPSB0cnVlXG5cdGlmIChvcHRzLm1vZGUgPT09ICdkaXNhYmxlLWZldGNoJyB8fCAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzICYmICFjYXBhYmlsaXR5LmFib3J0Q29udHJvbGxlcikpIHtcblx0XHQvLyBJZiB0aGUgdXNlIG9mIFhIUiBzaG91bGQgYmUgcHJlZmVycmVkLiBOb3QgdHlwaWNhbGx5IG5lZWRlZC5cblx0XHR1c2VGZXRjaCA9IGZhbHNlXG5cdFx0cHJlZmVyQmluYXJ5ID0gdHJ1ZVxuXHR9IGVsc2UgaWYgKG9wdHMubW9kZSA9PT0gJ3ByZWZlci1zdHJlYW1pbmcnKSB7XG5cdFx0Ly8gSWYgc3RyZWFtaW5nIGlzIGEgaGlnaCBwcmlvcml0eSBidXQgYmluYXJ5IGNvbXBhdGliaWxpdHkgYW5kXG5cdFx0Ly8gdGhlIGFjY3VyYWN5IG9mIHRoZSAnY29udGVudC10eXBlJyBoZWFkZXIgYXJlbid0XG5cdFx0cHJlZmVyQmluYXJ5ID0gZmFsc2Vcblx0fSBlbHNlIGlmIChvcHRzLm1vZGUgPT09ICdhbGxvdy13cm9uZy1jb250ZW50LXR5cGUnKSB7XG5cdFx0Ly8gSWYgc3RyZWFtaW5nIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4gcHJlc2VydmluZyB0aGUgJ2NvbnRlbnQtdHlwZScgaGVhZGVyXG5cdFx0cHJlZmVyQmluYXJ5ID0gIWNhcGFiaWxpdHkub3ZlcnJpZGVNaW1lVHlwZVxuXHR9IGVsc2UgaWYgKCFvcHRzLm1vZGUgfHwgb3B0cy5tb2RlID09PSAnZGVmYXVsdCcgfHwgb3B0cy5tb2RlID09PSAncHJlZmVyLWZhc3QnKSB7XG5cdFx0Ly8gVXNlIGJpbmFyeSBpZiB0ZXh0IHN0cmVhbWluZyBtYXkgY29ycnVwdCBkYXRhIG9yIHRoZSBjb250ZW50LXR5cGUgaGVhZGVyLCBvciBmb3Igc3BlZWRcblx0XHRwcmVmZXJCaW5hcnkgPSB0cnVlXG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBvcHRzLm1vZGUnKVxuXHR9XG5cdHNlbGYuX21vZGUgPSBkZWNpZGVNb2RlKHByZWZlckJpbmFyeSwgdXNlRmV0Y2gpXG5cdHNlbGYuX2ZldGNoVGltZXIgPSBudWxsXG5cblx0c2VsZi5vbignZmluaXNoJywgZnVuY3Rpb24gKCkge1xuXHRcdHNlbGYuX29uRmluaXNoKClcblx0fSlcbn1cblxuaW5oZXJpdHMoQ2xpZW50UmVxdWVzdCwgc3RyZWFtLldyaXRhYmxlKVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdHZhciBsb3dlck5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKClcblx0Ly8gVGhpcyBjaGVjayBpcyBub3QgbmVjZXNzYXJ5LCBidXQgaXQgcHJldmVudHMgd2FybmluZ3MgZnJvbSBicm93c2VycyBhYm91dCBzZXR0aW5nIHVuc2FmZVxuXHQvLyBoZWFkZXJzLiBUbyBiZSBob25lc3QgSSdtIG5vdCBlbnRpcmVseSBzdXJlIGhpZGluZyB0aGVzZSB3YXJuaW5ncyBpcyBhIGdvb2QgdGhpbmcsIGJ1dFxuXHQvLyBodHRwLWJyb3dzZXJpZnkgZGlkIGl0LCBzbyBJIHdpbGwgdG9vLlxuXHRpZiAodW5zYWZlSGVhZGVycy5pbmRleE9mKGxvd2VyTmFtZSkgIT09IC0xKVxuXHRcdHJldHVyblxuXG5cdHNlbGYuX2hlYWRlcnNbbG93ZXJOYW1lXSA9IHtcblx0XHRuYW1lOiBuYW1lLFxuXHRcdHZhbHVlOiB2YWx1ZVxuXHR9XG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdHZhciBoZWFkZXIgPSB0aGlzLl9oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV1cblx0aWYgKGhlYWRlcilcblx0XHRyZXR1cm4gaGVhZGVyLnZhbHVlXG5cdHJldHVybiBudWxsXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnJlbW92ZUhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRkZWxldGUgc2VsZi5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl9vbkZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRyZXR1cm5cblx0dmFyIG9wdHMgPSBzZWxmLl9vcHRzXG5cblx0dmFyIGhlYWRlcnNPYmogPSBzZWxmLl9oZWFkZXJzXG5cdHZhciBib2R5ID0gbnVsbFxuXHRpZiAob3B0cy5tZXRob2QgIT09ICdHRVQnICYmIG9wdHMubWV0aG9kICE9PSAnSEVBRCcpIHtcblx0XHRpZiAoY2FwYWJpbGl0eS5hcnJheWJ1ZmZlcikge1xuXHRcdFx0Ym9keSA9IHRvQXJyYXlCdWZmZXIoQnVmZmVyLmNvbmNhdChzZWxmLl9ib2R5KSlcblx0XHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkuYmxvYkNvbnN0cnVjdG9yKSB7XG5cdFx0XHRib2R5ID0gbmV3IGdsb2JhbC5CbG9iKHNlbGYuX2JvZHkubWFwKGZ1bmN0aW9uIChidWZmZXIpIHtcblx0XHRcdFx0cmV0dXJuIHRvQXJyYXlCdWZmZXIoYnVmZmVyKVxuXHRcdFx0fSksIHtcblx0XHRcdFx0dHlwZTogKGhlYWRlcnNPYmpbJ2NvbnRlbnQtdHlwZSddIHx8IHt9KS52YWx1ZSB8fCAnJ1xuXHRcdFx0fSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZ2V0IHV0Zjggc3RyaW5nXG5cdFx0XHRib2R5ID0gQnVmZmVyLmNvbmNhdChzZWxmLl9ib2R5KS50b1N0cmluZygpXG5cdFx0fVxuXHR9XG5cblx0Ly8gY3JlYXRlIGZsYXR0ZW5lZCBsaXN0IG9mIGhlYWRlcnNcblx0dmFyIGhlYWRlcnNMaXN0ID0gW11cblx0T2JqZWN0LmtleXMoaGVhZGVyc09iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5TmFtZSkge1xuXHRcdHZhciBuYW1lID0gaGVhZGVyc09ialtrZXlOYW1lXS5uYW1lXG5cdFx0dmFyIHZhbHVlID0gaGVhZGVyc09ialtrZXlOYW1lXS52YWx1ZVxuXHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0dmFsdWUuZm9yRWFjaChmdW5jdGlvbiAodikge1xuXHRcdFx0XHRoZWFkZXJzTGlzdC5wdXNoKFtuYW1lLCB2XSlcblx0XHRcdH0pXG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWRlcnNMaXN0LnB1c2goW25hbWUsIHZhbHVlXSlcblx0XHR9XG5cdH0pXG5cblx0aWYgKHNlbGYuX21vZGUgPT09ICdmZXRjaCcpIHtcblx0XHR2YXIgc2lnbmFsID0gbnVsbFxuXHRcdHZhciBmZXRjaFRpbWVyID0gbnVsbFxuXHRcdGlmIChjYXBhYmlsaXR5LmFib3J0Q29udHJvbGxlcikge1xuXHRcdFx0dmFyIGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblx0XHRcdHNpZ25hbCA9IGNvbnRyb2xsZXIuc2lnbmFsXG5cdFx0XHRzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlciA9IGNvbnRyb2xsZXJcblxuXHRcdFx0aWYgKCdyZXF1ZXN0VGltZW91dCcgaW4gb3B0cyAmJiBvcHRzLnJlcXVlc3RUaW1lb3V0ICE9PSAwKSB7XG5cdFx0XHRcdHNlbGYuX2ZldGNoVGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0c2VsZi5lbWl0KCdyZXF1ZXN0VGltZW91dCcpXG5cdFx0XHRcdFx0aWYgKHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyKVxuXHRcdFx0XHRcdFx0c2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuXHRcdFx0XHR9LCBvcHRzLnJlcXVlc3RUaW1lb3V0KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGdsb2JhbC5mZXRjaChzZWxmLl9vcHRzLnVybCwge1xuXHRcdFx0bWV0aG9kOiBzZWxmLl9vcHRzLm1ldGhvZCxcblx0XHRcdGhlYWRlcnM6IGhlYWRlcnNMaXN0LFxuXHRcdFx0Ym9keTogYm9keSB8fCB1bmRlZmluZWQsXG5cdFx0XHRtb2RlOiAnY29ycycsXG5cdFx0XHRjcmVkZW50aWFsczogb3B0cy53aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuXHRcdFx0c2lnbmFsOiBzaWduYWxcblx0XHR9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuXHRcdFx0c2VsZi5fZmV0Y2hSZXNwb25zZSA9IHJlc3BvbnNlXG5cdFx0XHRzZWxmLl9jb25uZWN0KClcblx0XHR9LCBmdW5jdGlvbiAocmVhc29uKSB7XG5cdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KHNlbGYuX2ZldGNoVGltZXIpXG5cdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIHJlYXNvbilcblx0XHR9KVxuXHR9IGVsc2Uge1xuXHRcdHZhciB4aHIgPSBzZWxmLl94aHIgPSBuZXcgZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KClcblx0XHR0cnkge1xuXHRcdFx0eGhyLm9wZW4oc2VsZi5fb3B0cy5tZXRob2QsIHNlbGYuX29wdHMudXJsLCB0cnVlKVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0Ly8gQ2FuJ3Qgc2V0IHJlc3BvbnNlVHlwZSBvbiByZWFsbHkgb2xkIGJyb3dzZXJzXG5cdFx0aWYgKCdyZXNwb25zZVR5cGUnIGluIHhocilcblx0XHRcdHhoci5yZXNwb25zZVR5cGUgPSBzZWxmLl9tb2RlLnNwbGl0KCc6JylbMF1cblxuXHRcdGlmICgnd2l0aENyZWRlbnRpYWxzJyBpbiB4aHIpXG5cdFx0XHR4aHIud2l0aENyZWRlbnRpYWxzID0gISFvcHRzLndpdGhDcmVkZW50aWFsc1xuXG5cdFx0aWYgKHNlbGYuX21vZGUgPT09ICd0ZXh0JyAmJiAnb3ZlcnJpZGVNaW1lVHlwZScgaW4geGhyKVxuXHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQnKVxuXG5cdFx0aWYgKCdyZXF1ZXN0VGltZW91dCcgaW4gb3B0cykge1xuXHRcdFx0eGhyLnRpbWVvdXQgPSBvcHRzLnJlcXVlc3RUaW1lb3V0XG5cdFx0XHR4aHIub250aW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLmVtaXQoJ3JlcXVlc3RUaW1lb3V0Jylcblx0XHRcdH1cblx0XHR9XG5cblx0XHRoZWFkZXJzTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcblx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuXHRcdH0pXG5cblx0XHRzZWxmLl9yZXNwb25zZSA9IG51bGxcblx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0c3dpdGNoICh4aHIucmVhZHlTdGF0ZSkge1xuXHRcdFx0XHRjYXNlIHJTdGF0ZXMuTE9BRElORzpcblx0XHRcdFx0Y2FzZSByU3RhdGVzLkRPTkU6XG5cdFx0XHRcdFx0c2VsZi5fb25YSFJQcm9ncmVzcygpXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTmVjZXNzYXJ5IGZvciBzdHJlYW1pbmcgaW4gRmlyZWZveCwgc2luY2UgeGhyLnJlc3BvbnNlIGlzIE9OTFkgZGVmaW5lZFxuXHRcdC8vIGluIG9ucHJvZ3Jlc3MsIG5vdCBpbiBvbnJlYWR5c3RhdGVjaGFuZ2Ugd2l0aCB4aHIucmVhZHlTdGF0ZSA9IDNcblx0XHRpZiAoc2VsZi5fbW9kZSA9PT0gJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJykge1xuXHRcdFx0eGhyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuX29uWEhSUHJvZ3Jlc3MoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKHNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdYSFIgZXJyb3InKSlcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0eGhyLnNlbmQoYm9keSlcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0fSlcblx0XHRcdHJldHVyblxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB4aHIuc3RhdHVzIGlzIHJlYWRhYmxlIGFuZCBub24temVybywgaW5kaWNhdGluZyBubyBlcnJvci5cbiAqIEV2ZW4gdGhvdWdoIHRoZSBzcGVjIHNheXMgaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiByZWFkeVN0YXRlIDMsXG4gKiBhY2Nlc3NpbmcgaXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBJRThcbiAqL1xuZnVuY3Rpb24gc3RhdHVzVmFsaWQgKHhocikge1xuXHR0cnkge1xuXHRcdHZhciBzdGF0dXMgPSB4aHIuc3RhdHVzXG5cdFx0cmV0dXJuIChzdGF0dXMgIT09IG51bGwgJiYgc3RhdHVzICE9PSAwKVxuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX29uWEhSUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdGlmICghc3RhdHVzVmFsaWQoc2VsZi5feGhyKSB8fCBzZWxmLl9kZXN0cm95ZWQpXG5cdFx0cmV0dXJuXG5cblx0aWYgKCFzZWxmLl9yZXNwb25zZSlcblx0XHRzZWxmLl9jb25uZWN0KClcblxuXHRzZWxmLl9yZXNwb25zZS5fb25YSFJQcm9ncmVzcygpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl9jb25uZWN0ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdHJldHVyblxuXG5cdHNlbGYuX3Jlc3BvbnNlID0gbmV3IEluY29taW5nTWVzc2FnZShzZWxmLl94aHIsIHNlbGYuX2ZldGNoUmVzcG9uc2UsIHNlbGYuX21vZGUsIHNlbGYuX2ZldGNoVGltZXIpXG5cdHNlbGYuX3Jlc3BvbnNlLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVycikge1xuXHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdH0pXG5cblx0c2VsZi5lbWl0KCdyZXNwb25zZScsIHNlbGYuX3Jlc3BvbnNlKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRzZWxmLl9ib2R5LnB1c2goY2h1bmspXG5cdGNiKClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuYWJvcnQgPSBDbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c2VsZi5fZGVzdHJveWVkID0gdHJ1ZVxuXHRnbG9iYWwuY2xlYXJUaW1lb3V0KHNlbGYuX2ZldGNoVGltZXIpXG5cdGlmIChzZWxmLl9yZXNwb25zZSlcblx0XHRzZWxmLl9yZXNwb25zZS5fZGVzdHJveWVkID0gdHJ1ZVxuXHRpZiAoc2VsZi5feGhyKVxuXHRcdHNlbGYuX3hoci5hYm9ydCgpXG5cdGVsc2UgaWYgKHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyKVxuXHRcdHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyLmFib3J0KClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0aWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0Y2IgPSBkYXRhXG5cdFx0ZGF0YSA9IHVuZGVmaW5lZFxuXHR9XG5cblx0c3RyZWFtLldyaXRhYmxlLnByb3RvdHlwZS5lbmQuY2FsbChzZWxmLCBkYXRhLCBlbmNvZGluZywgY2IpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLmZsdXNoSGVhZGVycyA9IGZ1bmN0aW9uICgpIHt9XG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKCkge31cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldE5vRGVsYXkgPSBmdW5jdGlvbiAoKSB7fVxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0U29ja2V0S2VlcEFsaXZlID0gZnVuY3Rpb24gKCkge31cblxuLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9YTUxIdHRwUmVxdWVzdC8jdGhlLXNldHJlcXVlc3RoZWFkZXIlMjglMjktbWV0aG9kXG52YXIgdW5zYWZlSGVhZGVycyA9IFtcblx0J2FjY2VwdC1jaGFyc2V0Jyxcblx0J2FjY2VwdC1lbmNvZGluZycsXG5cdCdhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LWhlYWRlcnMnLFxuXHQnYWNjZXNzLWNvbnRyb2wtcmVxdWVzdC1tZXRob2QnLFxuXHQnY29ubmVjdGlvbicsXG5cdCdjb250ZW50LWxlbmd0aCcsXG5cdCdjb29raWUnLFxuXHQnY29va2llMicsXG5cdCdkYXRlJyxcblx0J2RudCcsXG5cdCdleHBlY3QnLFxuXHQnaG9zdCcsXG5cdCdrZWVwLWFsaXZlJyxcblx0J29yaWdpbicsXG5cdCdyZWZlcmVyJyxcblx0J3RlJyxcblx0J3RyYWlsZXInLFxuXHQndHJhbnNmZXItZW5jb2RpbmcnLFxuXHQndXBncmFkZScsXG5cdCd2aWEnXG5dXG4iLCJ2YXIgY2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vY2FwYWJpbGl0eScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgc3RyZWFtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJylcblxudmFyIHJTdGF0ZXMgPSBleHBvcnRzLnJlYWR5U3RhdGVzID0ge1xuXHRVTlNFTlQ6IDAsXG5cdE9QRU5FRDogMSxcblx0SEVBREVSU19SRUNFSVZFRDogMixcblx0TE9BRElORzogMyxcblx0RE9ORTogNFxufVxuXG52YXIgSW5jb21pbmdNZXNzYWdlID0gZXhwb3J0cy5JbmNvbWluZ01lc3NhZ2UgPSBmdW5jdGlvbiAoeGhyLCByZXNwb25zZSwgbW9kZSwgZmV0Y2hUaW1lcikge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c3RyZWFtLlJlYWRhYmxlLmNhbGwoc2VsZilcblxuXHRzZWxmLl9tb2RlID0gbW9kZVxuXHRzZWxmLmhlYWRlcnMgPSB7fVxuXHRzZWxmLnJhd0hlYWRlcnMgPSBbXVxuXHRzZWxmLnRyYWlsZXJzID0ge31cblx0c2VsZi5yYXdUcmFpbGVycyA9IFtdXG5cblx0Ly8gRmFrZSB0aGUgJ2Nsb3NlJyBldmVudCwgYnV0IG9ubHkgb25jZSAnZW5kJyBmaXJlc1xuXHRzZWxmLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gVGhlIG5leHRUaWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSAncmVxdWVzdCcgbW9kdWxlIGZyb20gY2F1c2luZyBhbiBpbmZpbml0ZSBsb29wXG5cdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRzZWxmLmVtaXQoJ2Nsb3NlJylcblx0XHR9KVxuXHR9KVxuXG5cdGlmIChtb2RlID09PSAnZmV0Y2gnKSB7XG5cdFx0c2VsZi5fZmV0Y2hSZXNwb25zZSA9IHJlc3BvbnNlXG5cblx0XHRzZWxmLnVybCA9IHJlc3BvbnNlLnVybFxuXHRcdHNlbGYuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c1xuXHRcdHNlbGYuc3RhdHVzTWVzc2FnZSA9IHJlc3BvbnNlLnN0YXR1c1RleHRcblx0XHRcblx0XHRyZXNwb25zZS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlciwga2V5KXtcblx0XHRcdHNlbGYuaGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV0gPSBoZWFkZXJcblx0XHRcdHNlbGYucmF3SGVhZGVycy5wdXNoKGtleSwgaGVhZGVyKVxuXHRcdH0pXG5cblx0XHRpZiAoY2FwYWJpbGl0eS53cml0YWJsZVN0cmVhbSkge1xuXHRcdFx0dmFyIHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3RyZWFtKHtcblx0XHRcdFx0d3JpdGU6IGZ1bmN0aW9uIChjaHVuaykge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRcdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdCgpXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYoc2VsZi5wdXNoKG5ldyBCdWZmZXIoY2h1bmspKSkge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHNlbGYuX3Jlc3VtZUZldGNoID0gcmVzb2x2ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXNwb25zZS5ib2R5LnBpcGVUbyh3cml0YWJsZSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gcGlwZVRvIG1ldGhvZCBpc24ndCBkZWZpbmVkLiBDYW4ndCBmaW5kIGEgYmV0dGVyIHdheSB0byBmZWF0dXJlIHRlc3QgdGhpc1xuXHRcdH1cblx0XHQvLyBmYWxsYmFjayBmb3Igd2hlbiB3cml0YWJsZVN0cmVhbSBvciBwaXBlVG8gYXJlbid0IGF2YWlsYWJsZVxuXHRcdHZhciByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpXG5cdFx0ZnVuY3Rpb24gcmVhZCAoKSB7XG5cdFx0XHRyZWFkZXIucmVhZCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuXHRcdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRpZiAocmVzdWx0LmRvbmUpIHtcblx0XHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIocmVzdWx0LnZhbHVlKSlcblx0XHRcdFx0cmVhZCgpXG5cdFx0XHR9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdH0pXG5cdFx0fVxuXHRcdHJlYWQoKVxuXHR9IGVsc2Uge1xuXHRcdHNlbGYuX3hociA9IHhoclxuXHRcdHNlbGYuX3BvcyA9IDBcblxuXHRcdHNlbGYudXJsID0geGhyLnJlc3BvbnNlVVJMXG5cdFx0c2VsZi5zdGF0dXNDb2RlID0geGhyLnN0YXR1c1xuXHRcdHNlbGYuc3RhdHVzTWVzc2FnZSA9IHhoci5zdGF0dXNUZXh0XG5cdFx0dmFyIGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkuc3BsaXQoL1xccj9cXG4vKVxuXHRcdGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyA9IGhlYWRlci5tYXRjaCgvXihbXjpdKyk6XFxzKiguKikvKVxuXHRcdFx0aWYgKG1hdGNoZXMpIHtcblx0XHRcdFx0dmFyIGtleSA9IG1hdGNoZXNbMV0udG9Mb3dlckNhc2UoKVxuXHRcdFx0XHRpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcblx0XHRcdFx0XHRpZiAoc2VsZi5oZWFkZXJzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gPSBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XS5wdXNoKG1hdGNoZXNbMl0pXG5cdFx0XHRcdH0gZWxzZSBpZiAoc2VsZi5oZWFkZXJzW2tleV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldICs9ICcsICcgKyBtYXRjaGVzWzJdXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gPSBtYXRjaGVzWzJdXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5yYXdIZWFkZXJzLnB1c2gobWF0Y2hlc1sxXSwgbWF0Y2hlc1syXSlcblx0XHRcdH1cblx0XHR9KVxuXG5cdFx0c2VsZi5fY2hhcnNldCA9ICd4LXVzZXItZGVmaW5lZCdcblx0XHRpZiAoIWNhcGFiaWxpdHkub3ZlcnJpZGVNaW1lVHlwZSkge1xuXHRcdFx0dmFyIG1pbWVUeXBlID0gc2VsZi5yYXdIZWFkZXJzWydtaW1lLXR5cGUnXVxuXHRcdFx0aWYgKG1pbWVUeXBlKSB7XG5cdFx0XHRcdHZhciBjaGFyc2V0TWF0Y2ggPSBtaW1lVHlwZS5tYXRjaCgvO1xccypjaGFyc2V0PShbXjtdKSg7fCQpLylcblx0XHRcdFx0aWYgKGNoYXJzZXRNYXRjaCkge1xuXHRcdFx0XHRcdHNlbGYuX2NoYXJzZXQgPSBjaGFyc2V0TWF0Y2hbMV0udG9Mb3dlckNhc2UoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXNlbGYuX2NoYXJzZXQpXG5cdFx0XHRcdHNlbGYuX2NoYXJzZXQgPSAndXRmLTgnIC8vIGJlc3QgZ3Vlc3Ncblx0XHR9XG5cdH1cbn1cblxuaW5oZXJpdHMoSW5jb21pbmdNZXNzYWdlLCBzdHJlYW0uUmVhZGFibGUpXG5cbkluY29taW5nTWVzc2FnZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHZhciByZXNvbHZlID0gc2VsZi5fcmVzdW1lRmV0Y2hcblx0aWYgKHJlc29sdmUpIHtcblx0XHRzZWxmLl9yZXN1bWVGZXRjaCA9IG51bGxcblx0XHRyZXNvbHZlKClcblx0fVxufVxuXG5JbmNvbWluZ01lc3NhZ2UucHJvdG90eXBlLl9vblhIUlByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHR2YXIgeGhyID0gc2VsZi5feGhyXG5cblx0dmFyIHJlc3BvbnNlID0gbnVsbFxuXHRzd2l0Y2ggKHNlbGYuX21vZGUpIHtcblx0XHRjYXNlICd0ZXh0OnZiYXJyYXknOiAvLyBGb3IgSUU5XG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuRE9ORSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIFRoaXMgZmFpbHMgaW4gSUU4XG5cdFx0XHRcdHJlc3BvbnNlID0gbmV3IGdsb2JhbC5WQkFycmF5KHhoci5yZXNwb25zZUJvZHkpLnRvQXJyYXkoKVxuXHRcdFx0fSBjYXRjaCAoZSkge31cblx0XHRcdGlmIChyZXNwb25zZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihyZXNwb25zZSkpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0XHQvLyBGYWxscyB0aHJvdWdoIGluIElFOFx0XG5cdFx0Y2FzZSAndGV4dCc6XG5cdFx0XHR0cnkgeyAvLyBUaGlzIHdpbGwgZmFpbCB3aGVuIHJlYWR5U3RhdGUgPSAzIGluIElFOS4gU3dpdGNoIG1vZGUgYW5kIHdhaXQgZm9yIHJlYWR5U3RhdGUgPSA0XG5cdFx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlVGV4dFxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRzZWxmLl9tb2RlID0gJ3RleHQ6dmJhcnJheSdcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHRcdGlmIChyZXNwb25zZS5sZW5ndGggPiBzZWxmLl9wb3MpIHtcblx0XHRcdFx0dmFyIG5ld0RhdGEgPSByZXNwb25zZS5zdWJzdHIoc2VsZi5fcG9zKVxuXHRcdFx0XHRpZiAoc2VsZi5fY2hhcnNldCA9PT0gJ3gtdXNlci1kZWZpbmVkJykge1xuXHRcdFx0XHRcdHZhciBidWZmZXIgPSBuZXcgQnVmZmVyKG5ld0RhdGEubGVuZ3RoKVxuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKylcblx0XHRcdFx0XHRcdGJ1ZmZlcltpXSA9IG5ld0RhdGEuY2hhckNvZGVBdChpKSAmIDB4ZmZcblxuXHRcdFx0XHRcdHNlbGYucHVzaChidWZmZXIpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZi5wdXNoKG5ld0RhdGEsIHNlbGYuX2NoYXJzZXQpXG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5fcG9zID0gcmVzcG9uc2UubGVuZ3RoXG5cdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdGNhc2UgJ2FycmF5YnVmZmVyJzpcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5ET05FIHx8ICF4aHIucmVzcG9uc2UpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVxuXHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpKSlcblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInOiAvLyB0YWtlIHdob2xlXG5cdFx0XHRyZXNwb25zZSA9IHhoci5yZXNwb25zZVxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkxPQURJTkcgfHwgIXJlc3BvbnNlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpKSlcblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnbXMtc3RyZWFtJzpcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuTE9BRElORylcblx0XHRcdFx0YnJlYWtcblx0XHRcdHZhciByZWFkZXIgPSBuZXcgZ2xvYmFsLk1TU3RyZWFtUmVhZGVyKClcblx0XHRcdHJlYWRlci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRpZiAocmVhZGVyLnJlc3VsdC5ieXRlTGVuZ3RoID4gc2VsZi5fcG9zKSB7XG5cdFx0XHRcdFx0c2VsZi5wdXNoKG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkocmVhZGVyLnJlc3VsdC5zbGljZShzZWxmLl9wb3MpKSkpXG5cdFx0XHRcdFx0c2VsZi5fcG9zID0gcmVhZGVyLnJlc3VsdC5ieXRlTGVuZ3RoXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYucHVzaChudWxsKVxuXHRcdFx0fVxuXHRcdFx0Ly8gcmVhZGVyLm9uZXJyb3IgPSA/Pz8gLy8gVE9ETzogdGhpc1xuXHRcdFx0cmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKHJlc3BvbnNlKVxuXHRcdFx0YnJlYWtcblx0fVxuXG5cdC8vIFRoZSBtcy1zdHJlYW0gY2FzZSBoYW5kbGVzIGVuZCBzZXBhcmF0ZWx5IGluIHJlYWRlci5vbmxvYWQoKVxuXHRpZiAoc2VsZi5feGhyLnJlYWR5U3RhdGUgPT09IHJTdGF0ZXMuRE9ORSAmJiBzZWxmLl9tb2RlICE9PSAnbXMtc3RyZWFtJykge1xuXHRcdHNlbGYucHVzaChudWxsKVxuXHR9XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gW1xuICAnZ2V0JywgJ3B1dCcsICdwb3N0JywgJ2RlbGV0ZScsICdvcHRpb25zJywgJ2hlYWQnLCAncGF0Y2gnXG5dO1xuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcInRpdGxlXCI6IFwiQSBKU09OIFNjaGVtYSBmb3IgU3dhZ2dlciAyLjAgQVBJLlwiLFxuICBcImlkXCI6IFwiaHR0cDovL3N3YWdnZXIuaW8vdjIvc2NoZW1hLmpzb24jXCIsXG4gIFwiJHNjaGVtYVwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hI1wiLFxuICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgXCJyZXF1aXJlZFwiOiBbXG4gICAgXCJzd2FnZ2VyXCIsXG4gICAgXCJpbmZvXCIsXG4gICAgXCJwYXRoc1wiXG4gIF0sXG4gIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgIFwiXngtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICB9XG4gIH0sXG4gIFwicHJvcGVydGllc1wiOiB7XG4gICAgXCJzd2FnZ2VyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgXCIyLjBcIlxuICAgICAgXSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgU3dhZ2dlciB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuXCJcbiAgICB9LFxuICAgIFwiaW5mb1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2luZm9cIlxuICAgIH0sXG4gICAgXCJob3N0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJwYXR0ZXJuXCI6IFwiXltee30vIDpcXFxcXFxcXF0rKD86OlxcXFxkKyk/JFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBob3N0IChuYW1lIG9yIGlwKSBvZiB0aGUgQVBJLiBFeGFtcGxlOiAnc3dhZ2dlci5pbydcIlxuICAgIH0sXG4gICAgXCJiYXNlUGF0aFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwicGF0dGVyblwiOiBcIl4vXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGJhc2UgcGF0aCB0byB0aGUgQVBJLiBFeGFtcGxlOiAnL2FwaScuXCJcbiAgICB9LFxuICAgIFwic2NoZW1lc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtZXNMaXN0XCJcbiAgICB9LFxuICAgIFwiY29uc3VtZXNcIjoge1xuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbGlzdCBvZiBNSU1FIHR5cGVzIGFjY2VwdGVkIGJ5IHRoZSBBUEkuXCIsXG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgIH0sXG4gICAgXCJwcm9kdWNlc1wiOiB7XG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhlIEFQSSBjYW4gcHJvZHVjZS5cIixcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWVkaWFUeXBlTGlzdFwiXG4gICAgfSxcbiAgICBcInBhdGhzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0aHNcIlxuICAgIH0sXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwicGFyYW1ldGVyc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlckRlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwicmVzcG9uc2VzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VEZWZpbml0aW9uc1wiXG4gICAgfSxcbiAgICBcInNlY3VyaXR5XCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2VjdXJpdHlcIlxuICAgIH0sXG4gICAgXCJzZWN1cml0eURlZmluaXRpb25zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2VjdXJpdHlEZWZpbml0aW9uc1wiXG4gICAgfSxcbiAgICBcInRhZ3NcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3RhZ1wiXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgfVxuICB9LFxuICBcImRlZmluaXRpb25zXCI6IHtcbiAgICBcImluZm9cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQVBJLlwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidmVyc2lvblwiLFxuICAgICAgICBcInRpdGxlXCJcbiAgICAgIF0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSB1bmlxdWUgYW5kIHByZWNpc2UgdGl0bGUgb2YgdGhlIEFQSS5cIlxuICAgICAgICB9LFxuICAgICAgICBcInZlcnNpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHNlbWFudGljIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBBUEkuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbG9uZ2VyIGRlc2NyaXB0aW9uIG9mIHRoZSBBUEkuIFNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgdGl0bGUuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcInRlcm1zT2ZTZXJ2aWNlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHRlcm1zIG9mIHNlcnZpY2UgZm9yIHRoZSBBUEkuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb250YWN0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbnRhY3RcIlxuICAgICAgICB9LFxuICAgICAgICBcImxpY2Vuc2VcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbGljZW5zZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiY29udGFjdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDb250YWN0IGluZm9ybWF0aW9uIGZvciB0aGUgb3duZXJzIG9mIHRoZSBBUEkuXCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGlkZW50aWZ5aW5nIG5hbWUgb2YgdGhlIGNvbnRhY3QgcGVyc29uL29yZ2FuaXphdGlvbi5cIlxuICAgICAgICB9LFxuICAgICAgICBcInVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBVUkwgcG9pbnRpbmcgdG8gdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24uXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImVtYWlsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGNvbnRhY3QgcGVyc29uL29yZ2FuaXphdGlvbi5cIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcImVtYWlsXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImxpY2Vuc2VcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJuYW1lXCJcbiAgICAgIF0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIGxpY2Vuc2UgdHlwZS4gSXQncyBlbmNvdXJhZ2VkIHRvIHVzZSBhbiBPU0kgY29tcGF0aWJsZSBsaWNlbnNlLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIFVSTCBwb2ludGluZyB0byB0aGUgbGljZW5zZS5cIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJwYXRoc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJSZWxhdGl2ZSBwYXRocyB0byB0aGUgaW5kaXZpZHVhbCBlbmRwb2ludHMuIFRoZXkgbXVzdCBiZSByZWxhdGl2ZSB0byB0aGUgJ2Jhc2VQYXRoJy5cIixcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcIl4vXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdGhJdGVtXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgfSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJPbmUgb3IgbW9yZSBKU09OIG9iamVjdHMgZGVzY3JpYmluZyB0aGUgc2NoZW1hcyBiZWluZyBjb25zdW1lZCBhbmQgcHJvZHVjZWQgYnkgdGhlIEFQSS5cIlxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJEZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlclwiXG4gICAgICB9LFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIk9uZSBvciBtb3JlIEpTT04gcmVwcmVzZW50YXRpb25zIGZvciBwYXJhbWV0ZXJzXCJcbiAgICB9LFxuICAgIFwicmVzcG9uc2VEZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Jlc3BvbnNlXCJcbiAgICAgIH0sXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiT25lIG9yIG1vcmUgSlNPTiByZXByZXNlbnRhdGlvbnMgZm9yIHBhcmFtZXRlcnNcIlxuICAgIH0sXG4gICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcImluZm9ybWF0aW9uIGFib3V0IGV4dGVybmFsIGRvY3VtZW50YXRpb25cIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImV4YW1wbGVzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcIm1pbWVUeXBlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBNSU1FIHR5cGUgb2YgdGhlIEhUVFAgbWVzc2FnZS5cIlxuICAgIH0sXG4gICAgXCJvcGVyYXRpb25cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJyZXNwb25zZXNcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidGFnc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdW1tYXJ5XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBzdW1tYXJ5IG9mIHRoZSBvcGVyYXRpb24uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbG9uZ2VyIGRlc2NyaXB0aW9uIG9mIHRoZSBvcGVyYXRpb24sIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwib3BlcmF0aW9uSWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcGVyYXRpb24uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwcm9kdWNlc1wiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbGlzdCBvZiBNSU1FIHR5cGVzIHRoZSBBUEkgY2FuIHByb2R1Y2UuXCIsXG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tZWRpYVR5cGVMaXN0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb25zdW1lc1wiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbGlzdCBvZiBNSU1FIHR5cGVzIHRoZSBBUEkgY2FuIGNvbnN1bWUuXCIsXG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tZWRpYVR5cGVMaXN0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXJhbWV0ZXJzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlcnNMaXN0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXNwb25zZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY2hlbWVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtZXNMaXN0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXByZWNhdGVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2VjdXJpdHlcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2VjdXJpdHlcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInBhdGhJdGVtXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInB1dFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInBvc3RcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWxldGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGVhZFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdGNoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGFyYW1ldGVyc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXJhbWV0ZXJzTGlzdFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicmVzcG9uc2VzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlJlc3BvbnNlIG9iamVjdHMgbmFtZXMgY2FuIGVpdGhlciBiZSBhbnkgdmFsaWQgSFRUUCBzdGF0dXMgY29kZSBvciAnZGVmYXVsdCcuXCIsXG4gICAgICBcIm1pblByb3BlcnRpZXNcIjogMSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeKFswLTldezN9KSR8XihkZWZhdWx0KSRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VWYWx1ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcIm5vdFwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInJlc3BvbnNlVmFsdWVcIjoge1xuICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3Jlc3BvbnNlXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvanNvblJlZmVyZW5jZVwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIFwicmVzcG9uc2VcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY2hlbWFcIjoge1xuICAgICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2ZpbGVTY2hlbWFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJoZWFkZXJzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2hlYWRlcnNcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4YW1wbGVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4YW1wbGVzXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJoZWFkZXJzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaGVhZGVyXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFwiaGVhZGVyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInZlbmRvckV4dGVuc2lvblwiOiB7XG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQW55IHByb3BlcnR5IHN0YXJ0aW5nIHdpdGggeC0gaXMgdmFsaWQuXCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHRydWUsXG4gICAgICBcImFkZGl0aW9uYWxJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcImJvZHlQYXJhbWV0ZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICAgIFwiaW5cIixcbiAgICAgICAgXCJzY2hlbWFcIlxuICAgICAgXSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gVGhpcyBjb3VsZCBjb250YWluIGV4YW1wbGVzIG9mIHVzZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYm9keVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NoZW1hXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcImhlYWRlclBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImhlYWRlclwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicXVlcnlQYXJhbWV0ZXJTdWJTY2hlbWFcIjoge1xuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJxdWVyeVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFsbG93RW1wdHlWYWx1ZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiYWxsb3dzIHNlbmRpbmcgYSBwYXJhbWV0ZXIgYnkgbmFtZSBvbmx5IG9yIHdpdGggYW4gZW1wdHkgdmFsdWUuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFdpdGhNdWx0aVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImZvcm1EYXRhUGFyYW1ldGVyU3ViU2NoZW1hXCI6IHtcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiZm9ybURhdGFcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gVGhpcyBjb3VsZCBjb250YWluIGV4YW1wbGVzIG9mIHVzZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhbGxvd0VtcHR5VmFsdWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2UsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcImFsbG93cyBzZW5kaW5nIGEgcGFyYW1ldGVyIGJ5IG5hbWUgb25seSBvciB3aXRoIGFuIGVtcHR5IHZhbHVlLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIixcbiAgICAgICAgICAgIFwiZmlsZVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFdpdGhNdWx0aVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInBhdGhQYXJhbWV0ZXJTdWJTY2hlbWFcIjoge1xuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwicmVxdWlyZWRcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwicGF0aFwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwibm9uQm9keVBhcmFtZXRlclwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgXCJpblwiLFxuICAgICAgICBcInR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9oZWFkZXJQYXJhbWV0ZXJTdWJTY2hlbWFcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9mb3JtRGF0YVBhcmFtZXRlclN1YlNjaGVtYVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3F1ZXJ5UGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0aFBhcmFtZXRlclN1YlNjaGVtYVwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIFwicGFyYW1ldGVyXCI6IHtcbiAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ib2R5UGFyYW1ldGVyXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbm9uQm9keVBhcmFtZXRlclwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIFwic2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgZGV0ZXJtaW5pc3RpYyB2ZXJzaW9uIG9mIGEgSlNPTiBTY2hlbWEgb2JqZWN0LlwiLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy90aXRsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy90eXBlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCJhbnlPZlwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJhbGxPZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGlzY3JpbWluYXRvclwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZWFkT25seVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInhtbFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy94bWxcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4YW1wbGVcIjoge31cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcImZpbGVTY2hlbWFcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBkZXRlcm1pbmlzdGljIHZlcnNpb24gb2YgYSBKU09OIFNjaGVtYSBvYmplY3QuXCIsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy90aXRsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3N0cmluZ0FycmF5XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJmaWxlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVhZE9ubHlcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGFtcGxlXCI6IHt9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJwcmltaXRpdmVzSXRlbXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwic2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NlY3VyaXR5UmVxdWlyZW1lbnRcIlxuICAgICAgfSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJzZWN1cml0eVJlcXVpcmVtZW50XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJ4bWxcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVzcGFjZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwcmVmaXhcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXR0cmlidXRlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwid3JhcHBlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwidGFnXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInNlY3VyaXR5RGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9iYXNpY0F1dGhlbnRpY2F0aW9uU2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9hcGlLZXlTZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMkltcGxpY2l0U2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJQYXNzd29yZFNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyQXBwbGljYXRpb25TZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMkFjY2Vzc0NvZGVTZWN1cml0eVwiXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICBcImJhc2ljQXV0aGVudGljYXRpb25TZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImJhc2ljXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJhcGlLZXlTZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwibmFtZVwiLFxuICAgICAgICBcImluXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImFwaUtleVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImhlYWRlclwiLFxuICAgICAgICAgICAgXCJxdWVyeVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgySW1wbGljaXRTZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiZmxvd1wiLFxuICAgICAgICBcImF1dGhvcml6YXRpb25VcmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwib2F1dGgyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmxvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiaW1wbGljaXRcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhdXRob3JpemF0aW9uVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJQYXNzd29yZFNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwidG9rZW5VcmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwib2F1dGgyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmxvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwicGFzc3dvcmRcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b2tlblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgyQXBwbGljYXRpb25TZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiZmxvd1wiLFxuICAgICAgICBcInRva2VuVXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcIm9hdXRoMlwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZsb3dcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NvcGVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlNjb3Blc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG9rZW5VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMkFjY2Vzc0NvZGVTZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiZmxvd1wiLFxuICAgICAgICBcImF1dGhvcml6YXRpb25VcmxcIixcbiAgICAgICAgXCJ0b2tlblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJhY2Nlc3NDb2RlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NvcGVzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlNjb3Blc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcInRva2VuVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJTY29wZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFwibWVkaWFUeXBlTGlzdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWltZVR5cGVcIlxuICAgICAgfSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJzTGlzdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBwYXJhbWV0ZXJzIG5lZWRlZCB0byBzZW5kIGEgdmFsaWQgQVBJIGNhbGwuXCIsXG4gICAgICBcImFkZGl0aW9uYWxJdGVtc1wiOiBmYWxzZSxcbiAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlclwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2pzb25SZWZlcmVuY2VcIlxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgIH0sXG4gICAgXCJzY2hlbWVzTGlzdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSB0cmFuc2ZlciBwcm90b2NvbCBvZiB0aGUgQVBJLlwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgIFwiaHR0cFwiLFxuICAgICAgICAgIFwiaHR0cHNcIixcbiAgICAgICAgICBcIndzXCIsXG4gICAgICAgICAgXCJ3c3NcIlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImVudW1cIjogW1xuICAgICAgICBcImNzdlwiLFxuICAgICAgICBcInNzdlwiLFxuICAgICAgICBcInRzdlwiLFxuICAgICAgICBcInBpcGVzXCJcbiAgICAgIF0sXG4gICAgICBcImRlZmF1bHRcIjogXCJjc3ZcIlxuICAgIH0sXG4gICAgXCJjb2xsZWN0aW9uRm9ybWF0V2l0aE11bHRpXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgXCJjc3ZcIixcbiAgICAgICAgXCJzc3ZcIixcbiAgICAgICAgXCJ0c3ZcIixcbiAgICAgICAgXCJwaXBlc1wiLFxuICAgICAgICBcIm11bHRpXCJcbiAgICAgIF0sXG4gICAgICBcImRlZmF1bHRcIjogXCJjc3ZcIlxuICAgIH0sXG4gICAgXCJ0aXRsZVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy90aXRsZVwiXG4gICAgfSxcbiAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2Rlc2NyaXB0aW9uXCJcbiAgICB9LFxuICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9kZWZhdWx0XCJcbiAgICB9LFxuICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9tdWx0aXBsZU9mXCJcbiAgICB9LFxuICAgIFwibWF4aW11bVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9tYXhpbXVtXCJcbiAgICB9LFxuICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICB9LFxuICAgIFwibWluaW11bVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9taW5pbXVtXCJcbiAgICB9LFxuICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICB9LFxuICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgIH0sXG4gICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICB9LFxuICAgIFwicGF0dGVyblwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9wYXR0ZXJuXCJcbiAgICB9LFxuICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgfSxcbiAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgfSxcbiAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3VuaXF1ZUl0ZW1zXCJcbiAgICB9LFxuICAgIFwiZW51bVwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvcHJvcGVydGllcy9lbnVtXCJcbiAgICB9LFxuICAgIFwianNvblJlZmVyZW5jZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIiRyZWZcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJ2YXIgbmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzL2Jyb3dzZXIuanMnKS5uZXh0VGljaztcbnZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBpbW1lZGlhdGVJZHMgPSB7fTtcbnZhciBuZXh0SW1tZWRpYXRlSWQgPSAwO1xuXG4vLyBET00gQVBJcywgZm9yIGNvbXBsZXRlbmVzc1xuXG5leHBvcnRzLnNldFRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0VGltZW91dCwgd2luZG93LCBhcmd1bWVudHMpLCBjbGVhclRpbWVvdXQpO1xufTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0SW50ZXJ2YWwsIHdpbmRvdywgYXJndW1lbnRzKSwgY2xlYXJJbnRlcnZhbCk7XG59O1xuZXhwb3J0cy5jbGVhclRpbWVvdXQgPVxuZXhwb3J0cy5jbGVhckludGVydmFsID0gZnVuY3Rpb24odGltZW91dCkgeyB0aW1lb3V0LmNsb3NlKCk7IH07XG5cbmZ1bmN0aW9uIFRpbWVvdXQoaWQsIGNsZWFyRm4pIHtcbiAgdGhpcy5faWQgPSBpZDtcbiAgdGhpcy5fY2xlYXJGbiA9IGNsZWFyRm47XG59XG5UaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307XG5UaW1lb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LCB0aGlzLl9pZCk7XG59O1xuXG4vLyBEb2VzIG5vdCBzdGFydCB0aGUgdGltZSwganVzdCBzZXRzIHVwIHRoZSBtZW1iZXJzIG5lZWRlZC5cbmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IG1zZWNzO1xufTtcblxuZXhwb3J0cy51bmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IC0xO1xufTtcblxuZXhwb3J0cy5fdW5yZWZBY3RpdmUgPSBleHBvcnRzLmFjdGl2ZSA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuXG4gIHZhciBtc2VjcyA9IGl0ZW0uX2lkbGVUaW1lb3V0O1xuICBpZiAobXNlY3MgPj0gMCkge1xuICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHtcbiAgICAgIGlmIChpdGVtLl9vblRpbWVvdXQpXG4gICAgICAgIGl0ZW0uX29uVGltZW91dCgpO1xuICAgIH0sIG1zZWNzKTtcbiAgfVxufTtcblxuLy8gVGhhdCdzIG5vdCBob3cgbm9kZS5qcyBpbXBsZW1lbnRzIGl0IGJ1dCB0aGUgZXhwb3NlZCBhcGkgaXMgdGhlIHNhbWUuXG5leHBvcnRzLnNldEltbWVkaWF0ZSA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHNldEltbWVkaWF0ZSA6IGZ1bmN0aW9uKGZuKSB7XG4gIHZhciBpZCA9IG5leHRJbW1lZGlhdGVJZCsrO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZmFsc2UgOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgaW1tZWRpYXRlSWRzW2lkXSA9IHRydWU7XG5cbiAgbmV4dFRpY2soZnVuY3Rpb24gb25OZXh0VGljaygpIHtcbiAgICBpZiAoaW1tZWRpYXRlSWRzW2lkXSkge1xuICAgICAgLy8gZm4uY2FsbCgpIGlzIGZhc3RlciBzbyB3ZSBvcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiB1c2UtY2FzZVxuICAgICAgLy8gQHNlZSBodHRwOi8vanNwZXJmLmNvbS9jYWxsLWFwcGx5LXNlZ3VcbiAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm4uY2FsbChudWxsKTtcbiAgICAgIH1cbiAgICAgIC8vIFByZXZlbnQgaWRzIGZyb20gbGVha2luZ1xuICAgICAgZXhwb3J0cy5jbGVhckltbWVkaWF0ZShpZCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaWQ7XG59O1xuXG5leHBvcnRzLmNsZWFySW1tZWRpYXRlID0gdHlwZW9mIGNsZWFySW1tZWRpYXRlID09PSBcImZ1bmN0aW9uXCIgPyBjbGVhckltbWVkaWF0ZSA6IGZ1bmN0aW9uKGlkKSB7XG4gIGRlbGV0ZSBpbW1lZGlhdGVJZHNbaWRdO1xufTsiLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJ1Zikge1xuXHQvLyBJZiB0aGUgYnVmZmVyIGlzIGJhY2tlZCBieSBhIFVpbnQ4QXJyYXksIGEgZmFzdGVyIHZlcnNpb24gd2lsbCB3b3JrXG5cdGlmIChidWYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG5cdFx0Ly8gSWYgdGhlIGJ1ZmZlciBpc24ndCBhIHN1YmFycmF5LCByZXR1cm4gdGhlIHVuZGVybHlpbmcgQXJyYXlCdWZmZXJcblx0XHRpZiAoYnVmLmJ5dGVPZmZzZXQgPT09IDAgJiYgYnVmLmJ5dGVMZW5ndGggPT09IGJ1Zi5idWZmZXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIGJ1Zi5idWZmZXJcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBidWYuYnVmZmVyLnNsaWNlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBnZXQgYSBwcm9wZXIgY29weVxuXHRcdFx0cmV0dXJuIGJ1Zi5idWZmZXIuc2xpY2UoYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlT2Zmc2V0ICsgYnVmLmJ5dGVMZW5ndGgpXG5cdFx0fVxuXHR9XG5cblx0aWYgKEJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG5cdFx0Ly8gVGhpcyBpcyB0aGUgc2xvdyB2ZXJzaW9uIHRoYXQgd2lsbCB3b3JrIHdpdGggYW55IEJ1ZmZlclxuXHRcdC8vIGltcGxlbWVudGF0aW9uIChldmVuIGluIG9sZCBicm93c2Vycylcblx0XHR2YXIgYXJyYXlDb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmxlbmd0aClcblx0XHR2YXIgbGVuID0gYnVmLmxlbmd0aFxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGFycmF5Q29weVtpXSA9IGJ1ZltpXVxuXHRcdH1cblx0XHRyZXR1cm4gYXJyYXlDb3B5LmJ1ZmZlclxuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG5cdH1cbn1cbiIsIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXHJcbkxpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcblxyXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbktJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRURcclxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcclxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xyXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBnbG9iYWwsIGRlZmluZSwgU3lzdGVtLCBSZWZsZWN0LCBQcm9taXNlICovXHJcbnZhciBfX2V4dGVuZHM7XHJcbnZhciBfX2Fzc2lnbjtcclxudmFyIF9fcmVzdDtcclxudmFyIF9fZGVjb3JhdGU7XHJcbnZhciBfX3BhcmFtO1xyXG52YXIgX19tZXRhZGF0YTtcclxudmFyIF9fYXdhaXRlcjtcclxudmFyIF9fZ2VuZXJhdG9yO1xyXG52YXIgX19leHBvcnRTdGFyO1xyXG52YXIgX192YWx1ZXM7XHJcbnZhciBfX3JlYWQ7XHJcbnZhciBfX3NwcmVhZDtcclxudmFyIF9fYXdhaXQ7XHJcbnZhciBfX2FzeW5jR2VuZXJhdG9yO1xyXG52YXIgX19hc3luY0RlbGVnYXRvcjtcclxudmFyIF9fYXN5bmNWYWx1ZXM7XHJcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdDtcclxudmFyIF9faW1wb3J0U3RhcjtcclxudmFyIF9faW1wb3J0RGVmYXVsdDtcclxuKGZ1bmN0aW9uIChmYWN0b3J5KSB7XHJcbiAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOiB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOiB7fTtcclxuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgICAgIGRlZmluZShcInRzbGliXCIsIFtcImV4cG9ydHNcIl0sIGZ1bmN0aW9uIChleHBvcnRzKSB7IGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCwgY3JlYXRlRXhwb3J0ZXIoZXhwb3J0cykpKTsgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCwgY3JlYXRlRXhwb3J0ZXIobW9kdWxlLmV4cG9ydHMpKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBmYWN0b3J5KGNyZWF0ZUV4cG9ydGVyKHJvb3QpKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUV4cG9ydGVyKGV4cG9ydHMsIHByZXZpb3VzKSB7XHJcbiAgICAgICAgaWYgKGV4cG9ydHMgIT09IHJvb3QpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChpZCwgdikgeyByZXR1cm4gZXhwb3J0c1tpZF0gPSBwcmV2aW91cyA/IHByZXZpb3VzKGlkLCB2KSA6IHY7IH07XHJcbiAgICB9XHJcbn0pXHJcbihmdW5jdGlvbiAoZXhwb3J0ZXIpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG5cclxuICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcblxyXG4gICAgX19yZXN0ID0gZnVuY3Rpb24gKHMsIGUpIHtcclxuICAgICAgICB2YXIgdCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgICAgICB0W3BdID0gc1twXTtcclxuICAgICAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIGlmIChlLmluZGV4T2YocFtpXSkgPCAwKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fZGVjb3JhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgICAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICAgICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgICAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3BhcmFtID0gZnVuY3Rpb24gKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX21ldGFkYXRhID0gZnVuY3Rpb24gKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxuICAgIH07XHJcblxyXG4gICAgX19hd2FpdGVyID0gZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fZ2VuZXJhdG9yID0gZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgX19leHBvcnRTdGFyID0gZnVuY3Rpb24gKG0sIGV4cG9ydHMpIHtcclxuICAgICAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbiAgICB9O1xyXG5cclxuICAgIF9fdmFsdWVzID0gZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xyXG4gICAgICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3JlYWQgPSBmdW5jdGlvbiAobywgbikge1xyXG4gICAgICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgICAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fc3ByZWFkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICAgICAgcmV0dXJuIGFyO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2F3YWl0ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxuICAgIH07XHJcblxyXG4gICAgX19hc3luY0dlbmVyYXRvciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7ICB9XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgICAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXN5bmNEZWxlZ2F0b3IgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBpLCBwO1xyXG4gICAgICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX2FzeW5jVmFsdWVzID0gZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICAgICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgICAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgICAgICByZXR1cm4gY29va2VkO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2ltcG9ydFN0YXIgPSBmdW5jdGlvbiAobW9kKSB7XHJcbiAgICAgICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgICAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICAgICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgICAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIF9faW1wb3J0RGVmYXVsdCA9IGZ1bmN0aW9uIChtb2QpIHtcclxuICAgICAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcclxuICAgIH07XHJcblxyXG4gICAgZXhwb3J0ZXIoXCJfX2V4dGVuZHNcIiwgX19leHRlbmRzKTtcclxuICAgIGV4cG9ydGVyKFwiX19hc3NpZ25cIiwgX19hc3NpZ24pO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3Jlc3RcIiwgX19yZXN0KTtcclxuICAgIGV4cG9ydGVyKFwiX19kZWNvcmF0ZVwiLCBfX2RlY29yYXRlKTtcclxuICAgIGV4cG9ydGVyKFwiX19wYXJhbVwiLCBfX3BhcmFtKTtcclxuICAgIGV4cG9ydGVyKFwiX19tZXRhZGF0YVwiLCBfX21ldGFkYXRhKTtcclxuICAgIGV4cG9ydGVyKFwiX19hd2FpdGVyXCIsIF9fYXdhaXRlcik7XHJcbiAgICBleHBvcnRlcihcIl9fZ2VuZXJhdG9yXCIsIF9fZ2VuZXJhdG9yKTtcclxuICAgIGV4cG9ydGVyKFwiX19leHBvcnRTdGFyXCIsIF9fZXhwb3J0U3Rhcik7XHJcbiAgICBleHBvcnRlcihcIl9fdmFsdWVzXCIsIF9fdmFsdWVzKTtcclxuICAgIGV4cG9ydGVyKFwiX19yZWFkXCIsIF9fcmVhZCk7XHJcbiAgICBleHBvcnRlcihcIl9fc3ByZWFkXCIsIF9fc3ByZWFkKTtcclxuICAgIGV4cG9ydGVyKFwiX19hd2FpdFwiLCBfX2F3YWl0KTtcclxuICAgIGV4cG9ydGVyKFwiX19hc3luY0dlbmVyYXRvclwiLCBfX2FzeW5jR2VuZXJhdG9yKTtcclxuICAgIGV4cG9ydGVyKFwiX19hc3luY0RlbGVnYXRvclwiLCBfX2FzeW5jRGVsZWdhdG9yKTtcclxuICAgIGV4cG9ydGVyKFwiX19hc3luY1ZhbHVlc1wiLCBfX2FzeW5jVmFsdWVzKTtcclxuICAgIGV4cG9ydGVyKFwiX19tYWtlVGVtcGxhdGVPYmplY3RcIiwgX19tYWtlVGVtcGxhdGVPYmplY3QpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2ltcG9ydFN0YXJcIiwgX19pbXBvcnRTdGFyKTtcclxuICAgIGV4cG9ydGVyKFwiX19pbXBvcnREZWZhdWx0XCIsIF9faW1wb3J0RGVmYXVsdCk7XHJcbn0pO1xyXG4iLCIvLyAgICAgVW5kZXJzY29yZS5qcyAxLjcuMFxuLy8gICAgIGh0dHA6Ly91bmRlcnNjb3JlanMub3JnXG4vLyAgICAgKGMpIDIwMDktMjAxNCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbihmdW5jdGlvbigpIHtcblxuICAvLyBCYXNlbGluZSBzZXR1cFxuICAvLyAtLS0tLS0tLS0tLS0tLVxuXG4gIC8vIEVzdGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIGluIHRoZSBicm93c2VyLCBvciBgZXhwb3J0c2Agb24gdGhlIHNlcnZlci5cbiAgdmFyIHJvb3QgPSB0aGlzO1xuXG4gIC8vIFNhdmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBgX2AgdmFyaWFibGUuXG4gIHZhciBwcmV2aW91c1VuZGVyc2NvcmUgPSByb290Ll87XG5cbiAgLy8gU2F2ZSBieXRlcyBpbiB0aGUgbWluaWZpZWQgKGJ1dCBub3QgZ3ppcHBlZCkgdmVyc2lvbjpcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsIE9ialByb3RvID0gT2JqZWN0LnByb3RvdHlwZSwgRnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4gIC8vIENyZWF0ZSBxdWljayByZWZlcmVuY2UgdmFyaWFibGVzIGZvciBzcGVlZCBhY2Nlc3MgdG8gY29yZSBwcm90b3R5cGVzLlxuICB2YXJcbiAgICBwdXNoICAgICAgICAgICAgID0gQXJyYXlQcm90by5wdXNoLFxuICAgIHNsaWNlICAgICAgICAgICAgPSBBcnJheVByb3RvLnNsaWNlLFxuICAgIGNvbmNhdCAgICAgICAgICAgPSBBcnJheVByb3RvLmNvbmNhdCxcbiAgICB0b1N0cmluZyAgICAgICAgID0gT2JqUHJvdG8udG9TdHJpbmcsXG4gICAgaGFzT3duUHJvcGVydHkgICA9IE9ialByb3RvLmhhc093blByb3BlcnR5O1xuXG4gIC8vIEFsbCAqKkVDTUFTY3JpcHQgNSoqIG5hdGl2ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3ZSBob3BlIHRvIHVzZVxuICAvLyBhcmUgZGVjbGFyZWQgaGVyZS5cbiAgdmFyXG4gICAgbmF0aXZlSXNBcnJheSAgICAgID0gQXJyYXkuaXNBcnJheSxcbiAgICBuYXRpdmVLZXlzICAgICAgICAgPSBPYmplY3Qua2V5cyxcbiAgICBuYXRpdmVCaW5kICAgICAgICAgPSBGdW5jUHJvdG8uYmluZDtcblxuICAvLyBDcmVhdGUgYSBzYWZlIHJlZmVyZW5jZSB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QgZm9yIHVzZSBiZWxvdy5cbiAgdmFyIF8gPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgXykgcmV0dXJuIG9iajtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgXykpIHJldHVybiBuZXcgXyhvYmopO1xuICAgIHRoaXMuX3dyYXBwZWQgPSBvYmo7XG4gIH07XG5cbiAgLy8gRXhwb3J0IHRoZSBVbmRlcnNjb3JlIG9iamVjdCBmb3IgKipOb2RlLmpzKiosIHdpdGhcbiAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHRoZSBvbGQgYHJlcXVpcmUoKWAgQVBJLiBJZiB3ZSdyZSBpblxuICAvLyB0aGUgYnJvd3NlciwgYWRkIGBfYCBhcyBhIGdsb2JhbCBvYmplY3QuXG4gIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAgIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF87XG4gICAgfVxuICAgIGV4cG9ydHMuXyA9IF87XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5fID0gXztcbiAgfVxuXG4gIC8vIEN1cnJlbnQgdmVyc2lvbi5cbiAgXy5WRVJTSU9OID0gJzEuNy4wJztcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZWZmaWNpZW50IChmb3IgY3VycmVudCBlbmdpbmVzKSB2ZXJzaW9uXG4gIC8vIG9mIHRoZSBwYXNzZWQtaW4gY2FsbGJhY2ssIHRvIGJlIHJlcGVhdGVkbHkgYXBwbGllZCBpbiBvdGhlciBVbmRlcnNjb3JlXG4gIC8vIGZ1bmN0aW9ucy5cbiAgdmFyIGNyZWF0ZUNhbGxiYWNrID0gZnVuY3Rpb24oZnVuYywgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSByZXR1cm4gZnVuYztcbiAgICBzd2l0Y2ggKGFyZ0NvdW50ID09IG51bGwgPyAzIDogYXJnQ291bnQpIHtcbiAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgdmFsdWUpO1xuICAgICAgfTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgICBjYXNlIDQ6IHJldHVybiBmdW5jdGlvbihhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gQSBtb3N0bHktaW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgY2FsbGJhY2tzIHRoYXQgY2FuIGJlIGFwcGxpZWRcbiAgLy8gdG8gZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiwgcmV0dXJuaW5nIHRoZSBkZXNpcmVkIHJlc3VsdCDigJQgZWl0aGVyXG4gIC8vIGlkZW50aXR5LCBhbiBhcmJpdHJhcnkgY2FsbGJhY2ssIGEgcHJvcGVydHkgbWF0Y2hlciwgb3IgYSBwcm9wZXJ0eSBhY2Nlc3Nvci5cbiAgXy5pdGVyYXRlZSA9IGZ1bmN0aW9uKHZhbHVlLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gXy5pZGVudGl0eTtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlKSkgcmV0dXJuIGNyZWF0ZUNhbGxiYWNrKHZhbHVlLCBjb250ZXh0LCBhcmdDb3VudCk7XG4gICAgaWYgKF8uaXNPYmplY3QodmFsdWUpKSByZXR1cm4gXy5tYXRjaGVzKHZhbHVlKTtcbiAgICByZXR1cm4gXy5wcm9wZXJ0eSh2YWx1ZSk7XG4gIH07XG5cbiAgLy8gQ29sbGVjdGlvbiBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBUaGUgY29ybmVyc3RvbmUsIGFuIGBlYWNoYCBpbXBsZW1lbnRhdGlvbiwgYWthIGBmb3JFYWNoYC5cbiAgLy8gSGFuZGxlcyByYXcgb2JqZWN0cyBpbiBhZGRpdGlvbiB0byBhcnJheS1saWtlcy4gVHJlYXRzIGFsbFxuICAvLyBzcGFyc2UgYXJyYXktbGlrZXMgYXMgaWYgdGhleSB3ZXJlIGRlbnNlLlxuICBfLmVhY2ggPSBfLmZvckVhY2ggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gb2JqO1xuICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBpLCBsZW5ndGggPSBvYmoubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggPT09ICtsZW5ndGgpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRlZShvYmpbaV0sIGksIG9iaik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtrZXlzW2ldXSwga2V5c1tpXSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGl0ZXJhdGVlIHRvIGVhY2ggZWxlbWVudC5cbiAgXy5tYXAgPSBfLmNvbGxlY3QgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gW107XG4gICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgcmVzdWx0cyA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgIGN1cnJlbnRLZXk7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgcmVzdWx0c1tpbmRleF0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIHZhciByZWR1Y2VFcnJvciA9ICdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJztcblxuICAvLyAqKlJlZHVjZSoqIGJ1aWxkcyB1cCBhIHNpbmdsZSByZXN1bHQgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBha2EgYGluamVjdGAsXG4gIC8vIG9yIGBmb2xkbGAuXG4gIF8ucmVkdWNlID0gXy5mb2xkbCA9IF8uaW5qZWN0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgY29udGV4dCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgb2JqID0gW107XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCwgNCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gMCwgY3VycmVudEtleTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICAgIGlmICghbGVuZ3RoKSB0aHJvdyBuZXcgVHlwZUVycm9yKHJlZHVjZUVycm9yKTtcbiAgICAgIG1lbW8gPSBvYmpba2V5cyA/IGtleXNbaW5kZXgrK10gOiBpbmRleCsrXTtcbiAgICB9XG4gICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcblxuICAvLyBUaGUgcmlnaHQtYXNzb2NpYXRpdmUgdmVyc2lvbiBvZiByZWR1Y2UsIGFsc28ga25vd24gYXMgYGZvbGRyYC5cbiAgXy5yZWR1Y2VSaWdodCA9IF8uZm9sZHIgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSBbXTtcbiAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0LCA0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICsgb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgaW5kZXggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgY3VycmVudEtleTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICAgIGlmICghaW5kZXgpIHRocm93IG5ldyBUeXBlRXJyb3IocmVkdWNlRXJyb3IpO1xuICAgICAgbWVtbyA9IG9ialtrZXlzID8ga2V5c1stLWluZGV4XSA6IC0taW5kZXhdO1xuICAgIH1cbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgbWVtbyA9IGl0ZXJhdGVlKG1lbW8sIG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBmaXJzdCB2YWx1ZSB3aGljaCBwYXNzZXMgYSB0cnV0aCB0ZXN0LiBBbGlhc2VkIGFzIGBkZXRlY3RgLlxuICBfLmZpbmQgPSBfLmRldGVjdCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgXy5zb21lKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgbGlzdCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgLy8gQWxpYXNlZCBhcyBgc2VsZWN0YC5cbiAgXy5maWx0ZXIgPSBfLnNlbGVjdCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiByZXN1bHRzO1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBsaXN0KSkgcmVzdWx0cy5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfTtcblxuICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBmb3Igd2hpY2ggYSB0cnV0aCB0ZXN0IGZhaWxzLlxuICBfLnJlamVjdCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIF8uZmlsdGVyKG9iaiwgXy5uZWdhdGUoXy5pdGVyYXRlZShwcmVkaWNhdGUpKSwgY29udGV4dCk7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYWxsIG9mIHRoZSBlbGVtZW50cyBtYXRjaCBhIHRydXRoIHRlc3QuXG4gIC8vIEFsaWFzZWQgYXMgYGFsbGAuXG4gIF8uZXZlcnkgPSBfLmFsbCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIGluZGV4LCBjdXJyZW50S2V5O1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgaWYgKCFwcmVkaWNhdGUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8vIERldGVybWluZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgb2JqZWN0IG1hdGNoZXMgYSB0cnV0aCB0ZXN0LlxuICAvLyBBbGlhc2VkIGFzIGBhbnlgLlxuICBfLnNvbWUgPSBfLmFueSA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICBpbmRleCwgY3VycmVudEtleTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmIChwcmVkaWNhdGUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8vIERldGVybWluZSBpZiB0aGUgYXJyYXkgb3Igb2JqZWN0IGNvbnRhaW5zIGEgZ2l2ZW4gdmFsdWUgKHVzaW5nIGA9PT1gKS5cbiAgLy8gQWxpYXNlZCBhcyBgaW5jbHVkZWAuXG4gIF8uY29udGFpbnMgPSBfLmluY2x1ZGUgPSBmdW5jdGlvbihvYmosIHRhcmdldCkge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCkgb2JqID0gXy52YWx1ZXMob2JqKTtcbiAgICByZXR1cm4gXy5pbmRleE9mKG9iaiwgdGFyZ2V0KSA+PSAwO1xuICB9O1xuXG4gIC8vIEludm9rZSBhIG1ldGhvZCAod2l0aCBhcmd1bWVudHMpIG9uIGV2ZXJ5IGl0ZW0gaW4gYSBjb2xsZWN0aW9uLlxuICBfLmludm9rZSA9IGZ1bmN0aW9uKG9iaiwgbWV0aG9kKSB7XG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgdmFyIGlzRnVuYyA9IF8uaXNGdW5jdGlvbihtZXRob2QpO1xuICAgIHJldHVybiBfLm1hcChvYmosIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gKGlzRnVuYyA/IG1ldGhvZCA6IHZhbHVlW21ldGhvZF0pLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBtYXBgOiBmZXRjaGluZyBhIHByb3BlcnR5LlxuICBfLnBsdWNrID0gZnVuY3Rpb24ob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gXy5tYXAob2JqLCBfLnByb3BlcnR5KGtleSkpO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYGZpbHRlcmA6IHNlbGVjdGluZyBvbmx5IG9iamVjdHNcbiAgLy8gY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy53aGVyZSA9IGZ1bmN0aW9uKG9iaiwgYXR0cnMpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIob2JqLCBfLm1hdGNoZXMoYXR0cnMpKTtcbiAgfTtcblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBmaW5kYDogZ2V0dGluZyB0aGUgZmlyc3Qgb2JqZWN0XG4gIC8vIGNvbnRhaW5pbmcgc3BlY2lmaWMgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIF8uZmluZFdoZXJlID0gZnVuY3Rpb24ob2JqLCBhdHRycykge1xuICAgIHJldHVybiBfLmZpbmQob2JqLCBfLm1hdGNoZXMoYXR0cnMpKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIG1heGltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIF8ubWF4ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHQgPSAtSW5maW5pdHksIGxhc3RDb21wdXRlZCA9IC1JbmZpbml0eSxcbiAgICAgICAgdmFsdWUsIGNvbXB1dGVkO1xuICAgIGlmIChpdGVyYXRlZSA9PSBudWxsICYmIG9iaiAhPSBudWxsKSB7XG4gICAgICBvYmogPSBvYmoubGVuZ3RoID09PSArb2JqLmxlbmd0aCA/IG9iaiA6IF8udmFsdWVzKG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBpZiAodmFsdWUgPiByZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBsaXN0KTtcbiAgICAgICAgaWYgKGNvbXB1dGVkID4gbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSAtSW5maW5pdHkgJiYgcmVzdWx0ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBsYXN0Q29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBtaW5pbXVtIGVsZW1lbnQgKG9yIGVsZW1lbnQtYmFzZWQgY29tcHV0YXRpb24pLlxuICBfLm1pbiA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gSW5maW5pdHksIGxhc3RDb21wdXRlZCA9IEluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoID8gb2JqIDogXy52YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSA8IHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPCBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IEluZmluaXR5ICYmIHJlc3VsdCA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBsYXN0Q29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gU2h1ZmZsZSBhIGNvbGxlY3Rpb24sIHVzaW5nIHRoZSBtb2Rlcm4gdmVyc2lvbiBvZiB0aGVcbiAgLy8gW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlcuKAk1lhdGVzX3NodWZmbGUpLlxuICBfLnNodWZmbGUgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgc2V0ID0gb2JqICYmIG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoID8gb2JqIDogXy52YWx1ZXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gc2V0Lmxlbmd0aDtcbiAgICB2YXIgc2h1ZmZsZWQgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMCwgcmFuZDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHJhbmQgPSBfLnJhbmRvbSgwLCBpbmRleCk7XG4gICAgICBpZiAocmFuZCAhPT0gaW5kZXgpIHNodWZmbGVkW2luZGV4XSA9IHNodWZmbGVkW3JhbmRdO1xuICAgICAgc2h1ZmZsZWRbcmFuZF0gPSBzZXRbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gc2h1ZmZsZWQ7XG4gIH07XG5cbiAgLy8gU2FtcGxlICoqbioqIHJhbmRvbSB2YWx1ZXMgZnJvbSBhIGNvbGxlY3Rpb24uXG4gIC8vIElmICoqbioqIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgYSBzaW5nbGUgcmFuZG9tIGVsZW1lbnQuXG4gIC8vIFRoZSBpbnRlcm5hbCBgZ3VhcmRgIGFyZ3VtZW50IGFsbG93cyBpdCB0byB3b3JrIHdpdGggYG1hcGAuXG4gIF8uc2FtcGxlID0gZnVuY3Rpb24ob2JqLCBuLCBndWFyZCkge1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHtcbiAgICAgIGlmIChvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCkgb2JqID0gXy52YWx1ZXMob2JqKTtcbiAgICAgIHJldHVybiBvYmpbXy5yYW5kb20ob2JqLmxlbmd0aCAtIDEpXTtcbiAgICB9XG4gICAgcmV0dXJuIF8uc2h1ZmZsZShvYmopLnNsaWNlKDAsIE1hdGgubWF4KDAsIG4pKTtcbiAgfTtcblxuICAvLyBTb3J0IHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24gcHJvZHVjZWQgYnkgYW4gaXRlcmF0ZWUuXG4gIF8uc29ydEJ5ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgcmV0dXJuIF8ucGx1Y2soXy5tYXAob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBjcml0ZXJpYTogaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBsaXN0KVxuICAgICAgfTtcbiAgICB9KS5zb3J0KGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgICB2YXIgYSA9IGxlZnQuY3JpdGVyaWE7XG4gICAgICB2YXIgYiA9IHJpZ2h0LmNyaXRlcmlhO1xuICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgaWYgKGEgPiBiIHx8IGEgPT09IHZvaWQgMCkgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhIDwgYiB8fCBiID09PSB2b2lkIDApIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7XG4gICAgfSksICd2YWx1ZScpO1xuICB9O1xuXG4gIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgZm9yIGFnZ3JlZ2F0ZSBcImdyb3VwIGJ5XCIgb3BlcmF0aW9ucy5cbiAgdmFyIGdyb3VwID0gZnVuY3Rpb24oYmVoYXZpb3IpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xuICAgICAgICB2YXIga2V5ID0gaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBvYmopO1xuICAgICAgICBiZWhhdmlvcihyZXN1bHQsIHZhbHVlLCBrZXkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG5cbiAgLy8gR3JvdXBzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24uIFBhc3MgZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZVxuICAvLyB0byBncm91cCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGNyaXRlcmlvbi5cbiAgXy5ncm91cEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKF8uaGFzKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7IGVsc2UgcmVzdWx0W2tleV0gPSBbdmFsdWVdO1xuICB9KTtcblxuICAvLyBJbmRleGVzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24sIHNpbWlsYXIgdG8gYGdyb3VwQnlgLCBidXQgZm9yXG4gIC8vIHdoZW4geW91IGtub3cgdGhhdCB5b3VyIGluZGV4IHZhbHVlcyB3aWxsIGJlIHVuaXF1ZS5cbiAgXy5pbmRleEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgLy8gQ291bnRzIGluc3RhbmNlcyBvZiBhbiBvYmplY3QgdGhhdCBncm91cCBieSBhIGNlcnRhaW4gY3JpdGVyaW9uLiBQYXNzXG4gIC8vIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGUgdG8gY291bnQgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAvLyBjcml0ZXJpb24uXG4gIF8uY291bnRCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIGlmIChfLmhhcyhyZXN1bHQsIGtleSkpIHJlc3VsdFtrZXldKys7IGVsc2UgcmVzdWx0W2tleV0gPSAxO1xuICB9KTtcblxuICAvLyBVc2UgYSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGZpZ3VyZSBvdXQgdGhlIHNtYWxsZXN0IGluZGV4IGF0IHdoaWNoXG4gIC8vIGFuIG9iamVjdCBzaG91bGQgYmUgaW5zZXJ0ZWQgc28gYXMgdG8gbWFpbnRhaW4gb3JkZXIuIFVzZXMgYmluYXJ5IHNlYXJjaC5cbiAgXy5zb3J0ZWRJbmRleCA9IGZ1bmN0aW9uKGFycmF5LCBvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0LCAxKTtcbiAgICB2YXIgdmFsdWUgPSBpdGVyYXRlZShvYmopO1xuICAgIHZhciBsb3cgPSAwLCBoaWdoID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICB2YXIgbWlkID0gbG93ICsgaGlnaCA+Pj4gMTtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVttaWRdKSA8IHZhbHVlKSBsb3cgPSBtaWQgKyAxOyBlbHNlIGhpZ2ggPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG4gIH07XG5cbiAgLy8gU2FmZWx5IGNyZWF0ZSBhIHJlYWwsIGxpdmUgYXJyYXkgZnJvbSBhbnl0aGluZyBpdGVyYWJsZS5cbiAgXy50b0FycmF5ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKCFvYmopIHJldHVybiBbXTtcbiAgICBpZiAoXy5pc0FycmF5KG9iaikpIHJldHVybiBzbGljZS5jYWxsKG9iaik7XG4gICAgaWYgKG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoKSByZXR1cm4gXy5tYXAob2JqLCBfLmlkZW50aXR5KTtcbiAgICByZXR1cm4gXy52YWx1ZXMob2JqKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBvYmplY3QuXG4gIF8uc2l6ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoID8gb2JqLmxlbmd0aCA6IF8ua2V5cyhvYmopLmxlbmd0aDtcbiAgfTtcblxuICAvLyBTcGxpdCBhIGNvbGxlY3Rpb24gaW50byB0d28gYXJyYXlzOiBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIHNhdGlzZnkgdGhlIGdpdmVuXG4gIC8vIHByZWRpY2F0ZSwgYW5kIG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgZG8gbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS5cbiAgXy5wYXJ0aXRpb24gPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgcGFzcyA9IFtdLCBmYWlsID0gW107XG4gICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqKSB7XG4gICAgICAocHJlZGljYXRlKHZhbHVlLCBrZXksIG9iaikgPyBwYXNzIDogZmFpbCkucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtwYXNzLCBmYWlsXTtcbiAgfTtcblxuICAvLyBBcnJheSBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gR2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYGhlYWRgIGFuZCBgdGFrZWAuIFRoZSAqKmd1YXJkKiogY2hlY2tcbiAgLy8gYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBfLmZpcnN0ID0gXy5oZWFkID0gXy50YWtlID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFycmF5WzBdO1xuICAgIGlmIChuIDwgMCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCAwLCBuKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBsYXN0IGVudHJ5IG9mIHRoZSBhcnJheS4gRXNwZWNpYWxseSB1c2VmdWwgb25cbiAgLy8gdGhlIGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gYWxsIHRoZSB2YWx1ZXMgaW5cbiAgLy8gdGhlIGFycmF5LCBleGNsdWRpbmcgdGhlIGxhc3QgTi4gVGhlICoqZ3VhcmQqKiBjaGVjayBhbGxvd3MgaXQgdG8gd29yayB3aXRoXG4gIC8vIGBfLm1hcGAuXG4gIF8uaW5pdGlhbCA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCAwLCBNYXRoLm1heCgwLCBhcnJheS5sZW5ndGggLSAobiA9PSBudWxsIHx8IGd1YXJkID8gMSA6IG4pKSk7XG4gIH07XG5cbiAgLy8gR2V0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYW4gYXJyYXkuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gdGhlIGxhc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LiBUaGUgKipndWFyZCoqIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgXy5sYXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCBNYXRoLm1heChhcnJheS5sZW5ndGggLSBuLCAwKSk7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBldmVyeXRoaW5nIGJ1dCB0aGUgZmlyc3QgZW50cnkgb2YgdGhlIGFycmF5LiBBbGlhc2VkIGFzIGB0YWlsYCBhbmQgYGRyb3BgLlxuICAvLyBFc3BlY2lhbGx5IHVzZWZ1bCBvbiB0aGUgYXJndW1lbnRzIG9iamVjdC4gUGFzc2luZyBhbiAqKm4qKiB3aWxsIHJldHVyblxuICAvLyB0aGUgcmVzdCBOIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKipcbiAgLy8gY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBfLnJlc3QgPSBfLnRhaWwgPSBfLmRyb3AgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgbiA9PSBudWxsIHx8IGd1YXJkID8gMSA6IG4pO1xuICB9O1xuXG4gIC8vIFRyaW0gb3V0IGFsbCBmYWxzeSB2YWx1ZXMgZnJvbSBhbiBhcnJheS5cbiAgXy5jb21wYWN0ID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIoYXJyYXksIF8uaWRlbnRpdHkpO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGEgcmVjdXJzaXZlIGBmbGF0dGVuYCBmdW5jdGlvbi5cbiAgdmFyIGZsYXR0ZW4gPSBmdW5jdGlvbihpbnB1dCwgc2hhbGxvdywgc3RyaWN0LCBvdXRwdXQpIHtcbiAgICBpZiAoc2hhbGxvdyAmJiBfLmV2ZXJ5KGlucHV0LCBfLmlzQXJyYXkpKSB7XG4gICAgICByZXR1cm4gY29uY2F0LmFwcGx5KG91dHB1dCwgaW5wdXQpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gaW5wdXQubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKCFfLmlzQXJyYXkodmFsdWUpICYmICFfLmlzQXJndW1lbnRzKHZhbHVlKSkge1xuICAgICAgICBpZiAoIXN0cmljdCkgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChzaGFsbG93KSB7XG4gICAgICAgIHB1c2guYXBwbHkob3V0cHV0LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbGF0dGVuKHZhbHVlLCBzaGFsbG93LCBzdHJpY3QsIG91dHB1dCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH07XG5cbiAgLy8gRmxhdHRlbiBvdXQgYW4gYXJyYXksIGVpdGhlciByZWN1cnNpdmVseSAoYnkgZGVmYXVsdCksIG9yIGp1c3Qgb25lIGxldmVsLlxuICBfLmZsYXR0ZW4gPSBmdW5jdGlvbihhcnJheSwgc2hhbGxvdykge1xuICAgIHJldHVybiBmbGF0dGVuKGFycmF5LCBzaGFsbG93LCBmYWxzZSwgW10pO1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHZlcnNpb24gb2YgdGhlIGFycmF5IHRoYXQgZG9lcyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIHZhbHVlKHMpLlxuICBfLndpdGhvdXQgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIHJldHVybiBfLmRpZmZlcmVuY2UoYXJyYXksIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gIH07XG5cbiAgLy8gUHJvZHVjZSBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgdGhlIGFycmF5LiBJZiB0aGUgYXJyYXkgaGFzIGFscmVhZHlcbiAgLy8gYmVlbiBzb3J0ZWQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgdXNpbmcgYSBmYXN0ZXIgYWxnb3JpdGhtLlxuICAvLyBBbGlhc2VkIGFzIGB1bmlxdWVgLlxuICBfLnVuaXEgPSBfLnVuaXF1ZSA9IGZ1bmN0aW9uKGFycmF5LCBpc1NvcnRlZCwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIGlmICghXy5pc0Jvb2xlYW4oaXNTb3J0ZWQpKSB7XG4gICAgICBjb250ZXh0ID0gaXRlcmF0ZWU7XG4gICAgICBpdGVyYXRlZSA9IGlzU29ydGVkO1xuICAgICAgaXNTb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGl0ZXJhdGVlICE9IG51bGwpIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBzZWVuID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpXTtcbiAgICAgIGlmIChpc1NvcnRlZCkge1xuICAgICAgICBpZiAoIWkgfHwgc2VlbiAhPT0gdmFsdWUpIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgc2VlbiA9IHZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpdGVyYXRlZSkge1xuICAgICAgICB2YXIgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSwgaSwgYXJyYXkpO1xuICAgICAgICBpZiAoXy5pbmRleE9mKHNlZW4sIGNvbXB1dGVkKSA8IDApIHtcbiAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChfLmluZGV4T2YocmVzdWx0LCB2YWx1ZSkgPCAwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHVuaW9uOiBlYWNoIGRpc3RpbmN0IGVsZW1lbnQgZnJvbSBhbGwgb2ZcbiAgLy8gdGhlIHBhc3NlZC1pbiBhcnJheXMuXG4gIF8udW5pb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXy51bmlxKGZsYXR0ZW4oYXJndW1lbnRzLCB0cnVlLCB0cnVlLCBbXSkpO1xuICB9O1xuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyBldmVyeSBpdGVtIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGVcbiAgLy8gcGFzc2VkLWluIGFycmF5cy5cbiAgXy5pbnRlcnNlY3Rpb24gPSBmdW5jdGlvbihhcnJheSkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gW107XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gYXJyYXlbaV07XG4gICAgICBpZiAoXy5jb250YWlucyhyZXN1bHQsIGl0ZW0pKSBjb250aW51ZTtcbiAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgYXJnc0xlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmICghXy5jb250YWlucyhhcmd1bWVudHNbal0sIGl0ZW0pKSBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChqID09PSBhcmdzTGVuZ3RoKSByZXN1bHQucHVzaChpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBUYWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb25lIGFycmF5IGFuZCBhIG51bWJlciBvZiBvdGhlciBhcnJheXMuXG4gIC8vIE9ubHkgdGhlIGVsZW1lbnRzIHByZXNlbnQgaW4ganVzdCB0aGUgZmlyc3QgYXJyYXkgd2lsbCByZW1haW4uXG4gIF8uZGlmZmVyZW5jZSA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgdmFyIHJlc3QgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgdHJ1ZSwgdHJ1ZSwgW10pO1xuICAgIHJldHVybiBfLmZpbHRlcihhcnJheSwgZnVuY3Rpb24odmFsdWUpe1xuICAgICAgcmV0dXJuICFfLmNvbnRhaW5zKHJlc3QsIHZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBaaXAgdG9nZXRoZXIgbXVsdGlwbGUgbGlzdHMgaW50byBhIHNpbmdsZSBhcnJheSAtLSBlbGVtZW50cyB0aGF0IHNoYXJlXG4gIC8vIGFuIGluZGV4IGdvIHRvZ2V0aGVyLlxuICBfLnppcCA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiBbXTtcbiAgICB2YXIgbGVuZ3RoID0gXy5tYXgoYXJndW1lbnRzLCAnbGVuZ3RoJykubGVuZ3RoO1xuICAgIHZhciByZXN1bHRzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRzW2ldID0gXy5wbHVjayhhcmd1bWVudHMsIGkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfTtcblxuICAvLyBDb252ZXJ0cyBsaXN0cyBpbnRvIG9iamVjdHMuIFBhc3MgZWl0aGVyIGEgc2luZ2xlIGFycmF5IG9mIGBba2V5LCB2YWx1ZV1gXG4gIC8vIHBhaXJzLCBvciB0d28gcGFyYWxsZWwgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCAtLSBvbmUgb2Yga2V5cywgYW5kIG9uZSBvZlxuICAvLyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gIF8ub2JqZWN0ID0gZnVuY3Rpb24obGlzdCwgdmFsdWVzKSB7XG4gICAgaWYgKGxpc3QgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gbGlzdC5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICByZXN1bHRbbGlzdFtpXV0gPSB2YWx1ZXNbaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbbGlzdFtpXVswXV0gPSBsaXN0W2ldWzFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gaXRlbSBpbiBhbiBhcnJheSxcbiAgLy8gb3IgLTEgaWYgdGhlIGl0ZW0gaXMgbm90IGluY2x1ZGVkIGluIHRoZSBhcnJheS5cbiAgLy8gSWYgdGhlIGFycmF5IGlzIGxhcmdlIGFuZCBhbHJlYWR5IGluIHNvcnQgb3JkZXIsIHBhc3MgYHRydWVgXG4gIC8vIGZvciAqKmlzU29ydGVkKiogdG8gdXNlIGJpbmFyeSBzZWFyY2guXG4gIF8uaW5kZXhPZiA9IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBpc1NvcnRlZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gLTE7XG4gICAgdmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgaWYgKGlzU29ydGVkKSB7XG4gICAgICBpZiAodHlwZW9mIGlzU29ydGVkID09ICdudW1iZXInKSB7XG4gICAgICAgIGkgPSBpc1NvcnRlZCA8IDAgPyBNYXRoLm1heCgwLCBsZW5ndGggKyBpc1NvcnRlZCkgOiBpc1NvcnRlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkgPSBfLnNvcnRlZEluZGV4KGFycmF5LCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGFycmF5W2ldID09PSBpdGVtID8gaSA6IC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSBpZiAoYXJyYXlbaV0gPT09IGl0ZW0pIHJldHVybiBpO1xuICAgIHJldHVybiAtMTtcbiAgfTtcblxuICBfLmxhc3RJbmRleE9mID0gZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGZyb20pIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIC0xO1xuICAgIHZhciBpZHggPSBhcnJheS5sZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBmcm9tID09ICdudW1iZXInKSB7XG4gICAgICBpZHggPSBmcm9tIDwgMCA/IGlkeCArIGZyb20gKyAxIDogTWF0aC5taW4oaWR4LCBmcm9tICsgMSk7XG4gICAgfVxuICAgIHdoaWxlICgtLWlkeCA+PSAwKSBpZiAoYXJyYXlbaWR4XSA9PT0gaXRlbSkgcmV0dXJuIGlkeDtcbiAgICByZXR1cm4gLTE7XG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBBcnJheSBjb250YWluaW5nIGFuIGFyaXRobWV0aWMgcHJvZ3Jlc3Npb24uIEEgcG9ydCBvZlxuICAvLyB0aGUgbmF0aXZlIFB5dGhvbiBgcmFuZ2UoKWAgZnVuY3Rpb24uIFNlZVxuICAvLyBbdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uXShodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvZnVuY3Rpb25zLmh0bWwjcmFuZ2UpLlxuICBfLnJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICBzdG9wID0gc3RhcnQgfHwgMDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgc3RlcCA9IHN0ZXAgfHwgMTtcblxuICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkgLyBzdGVwKSwgMCk7XG4gICAgdmFyIHJhbmdlID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgaWR4KyssIHN0YXJ0ICs9IHN0ZXApIHtcbiAgICAgIHJhbmdlW2lkeF0gPSBzdGFydDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgLy8gRnVuY3Rpb24gKGFoZW0pIEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBSZXVzYWJsZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgcHJvdG90eXBlIHNldHRpbmcuXG4gIHZhciBDdG9yID0gZnVuY3Rpb24oKXt9O1xuXG4gIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIGJvdW5kIHRvIGEgZ2l2ZW4gb2JqZWN0IChhc3NpZ25pbmcgYHRoaXNgLCBhbmQgYXJndW1lbnRzLFxuICAvLyBvcHRpb25hbGx5KS4gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYEZ1bmN0aW9uLmJpbmRgIGlmXG4gIC8vIGF2YWlsYWJsZS5cbiAgXy5iaW5kID0gZnVuY3Rpb24oZnVuYywgY29udGV4dCkge1xuICAgIHZhciBhcmdzLCBib3VuZDtcbiAgICBpZiAobmF0aXZlQmluZCAmJiBmdW5jLmJpbmQgPT09IG5hdGl2ZUJpbmQpIHJldHVybiBuYXRpdmVCaW5kLmFwcGx5KGZ1bmMsIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24oZnVuYykpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdW5jdGlvbicpO1xuICAgIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgYm91bmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkpIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgICAgQ3Rvci5wcm90b3R5cGUgPSBmdW5jLnByb3RvdHlwZTtcbiAgICAgIHZhciBzZWxmID0gbmV3IEN0b3I7XG4gICAgICBDdG9yLnByb3RvdHlwZSA9IG51bGw7XG4gICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseShzZWxmLCBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcbiAgICAgIGlmIChfLmlzT2JqZWN0KHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9O1xuICAgIHJldHVybiBib3VuZDtcbiAgfTtcblxuICAvLyBQYXJ0aWFsbHkgYXBwbHkgYSBmdW5jdGlvbiBieSBjcmVhdGluZyBhIHZlcnNpb24gdGhhdCBoYXMgaGFkIHNvbWUgb2YgaXRzXG4gIC8vIGFyZ3VtZW50cyBwcmUtZmlsbGVkLCB3aXRob3V0IGNoYW5naW5nIGl0cyBkeW5hbWljIGB0aGlzYCBjb250ZXh0LiBfIGFjdHNcbiAgLy8gYXMgYSBwbGFjZWhvbGRlciwgYWxsb3dpbmcgYW55IGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB0byBiZSBwcmUtZmlsbGVkLlxuICBfLnBhcnRpYWwgPSBmdW5jdGlvbihmdW5jKSB7XG4gICAgdmFyIGJvdW5kQXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcG9zaXRpb24gPSAwO1xuICAgICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3Muc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcmdzW2ldID09PSBfKSBhcmdzW2ldID0gYXJndW1lbnRzW3Bvc2l0aW9uKytdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgYXJndW1lbnRzLmxlbmd0aCkgYXJncy5wdXNoKGFyZ3VtZW50c1twb3NpdGlvbisrXSk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIEJpbmQgYSBudW1iZXIgb2YgYW4gb2JqZWN0J3MgbWV0aG9kcyB0byB0aGF0IG9iamVjdC4gUmVtYWluaW5nIGFyZ3VtZW50c1xuICAvLyBhcmUgdGhlIG1ldGhvZCBuYW1lcyB0byBiZSBib3VuZC4gVXNlZnVsIGZvciBlbnN1cmluZyB0aGF0IGFsbCBjYWxsYmFja3NcbiAgLy8gZGVmaW5lZCBvbiBhbiBvYmplY3QgYmVsb25nIHRvIGl0LlxuICBfLmJpbmRBbGwgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgaSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwga2V5O1xuICAgIGlmIChsZW5ndGggPD0gMSkgdGhyb3cgbmV3IEVycm9yKCdiaW5kQWxsIG11c3QgYmUgcGFzc2VkIGZ1bmN0aW9uIG5hbWVzJyk7XG4gICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBhcmd1bWVudHNbaV07XG4gICAgICBvYmpba2V5XSA9IF8uYmluZChvYmpba2V5XSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBNZW1vaXplIGFuIGV4cGVuc2l2ZSBmdW5jdGlvbiBieSBzdG9yaW5nIGl0cyByZXN1bHRzLlxuICBfLm1lbW9pemUgPSBmdW5jdGlvbihmdW5jLCBoYXNoZXIpIHtcbiAgICB2YXIgbWVtb2l6ZSA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgdmFyIGNhY2hlID0gbWVtb2l6ZS5jYWNoZTtcbiAgICAgIHZhciBhZGRyZXNzID0gaGFzaGVyID8gaGFzaGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBrZXk7XG4gICAgICBpZiAoIV8uaGFzKGNhY2hlLCBhZGRyZXNzKSkgY2FjaGVbYWRkcmVzc10gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICByZXR1cm4gY2FjaGVbYWRkcmVzc107XG4gICAgfTtcbiAgICBtZW1vaXplLmNhY2hlID0ge307XG4gICAgcmV0dXJuIG1lbW9pemU7XG4gIH07XG5cbiAgLy8gRGVsYXlzIGEgZnVuY3Rpb24gZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCBhbmQgdGhlbiBjYWxsc1xuICAvLyBpdCB3aXRoIHRoZSBhcmd1bWVudHMgc3VwcGxpZWQuXG4gIF8uZGVsYXkgPSBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0sIHdhaXQpO1xuICB9O1xuXG4gIC8vIERlZmVycyBhIGZ1bmN0aW9uLCBzY2hlZHVsaW5nIGl0IHRvIHJ1biBhZnRlciB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhc1xuICAvLyBjbGVhcmVkLlxuICBfLmRlZmVyID0gZnVuY3Rpb24oZnVuYykge1xuICAgIHJldHVybiBfLmRlbGF5LmFwcGx5KF8sIFtmdW5jLCAxXS5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKSk7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCB3aGVuIGludm9rZWQsIHdpbGwgb25seSBiZSB0cmlnZ2VyZWQgYXQgbW9zdCBvbmNlXG4gIC8vIGR1cmluZyBhIGdpdmVuIHdpbmRvdyBvZiB0aW1lLiBOb3JtYWxseSwgdGhlIHRocm90dGxlZCBmdW5jdGlvbiB3aWxsIHJ1blxuICAvLyBhcyBtdWNoIGFzIGl0IGNhbiwgd2l0aG91dCBldmVyIGdvaW5nIG1vcmUgdGhhbiBvbmNlIHBlciBgd2FpdGAgZHVyYXRpb247XG4gIC8vIGJ1dCBpZiB5b3UnZCBsaWtlIHRvIGRpc2FibGUgdGhlIGV4ZWN1dGlvbiBvbiB0aGUgbGVhZGluZyBlZGdlLCBwYXNzXG4gIC8vIGB7bGVhZGluZzogZmFsc2V9YC4gVG8gZGlzYWJsZSBleGVjdXRpb24gb24gdGhlIHRyYWlsaW5nIGVkZ2UsIGRpdHRvLlxuICBfLnRocm90dGxlID0gZnVuY3Rpb24oZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgIHZhciBjb250ZXh0LCBhcmdzLCByZXN1bHQ7XG4gICAgdmFyIHRpbWVvdXQgPSBudWxsO1xuICAgIHZhciBwcmV2aW91cyA9IDA7XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBwcmV2aW91cyA9IG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UgPyAwIDogXy5ub3coKTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG5vdyA9IF8ubm93KCk7XG4gICAgICBpZiAoIXByZXZpb3VzICYmIG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UpIHByZXZpb3VzID0gbm93O1xuICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAobm93IC0gcHJldmlvdXMpO1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwIHx8IHJlbWFpbmluZyA+IHdhaXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgcHJldmlvdXMgPSBub3c7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmICghdGltZW91dCAmJiBvcHRpb25zLnRyYWlsaW5nICE9PSBmYWxzZSkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgcmVtYWluaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIGFzIGxvbmcgYXMgaXQgY29udGludWVzIHRvIGJlIGludm9rZWQsIHdpbGwgbm90XG4gIC8vIGJlIHRyaWdnZXJlZC4gVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIGl0IHN0b3BzIGJlaW5nIGNhbGxlZCBmb3JcbiAgLy8gTiBtaWxsaXNlY29uZHMuIElmIGBpbW1lZGlhdGVgIGlzIHBhc3NlZCwgdHJpZ2dlciB0aGUgZnVuY3Rpb24gb24gdGhlXG4gIC8vIGxlYWRpbmcgZWRnZSwgaW5zdGVhZCBvZiB0aGUgdHJhaWxpbmcuXG4gIF8uZGVib3VuY2UgPSBmdW5jdGlvbihmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgICB2YXIgdGltZW91dCwgYXJncywgY29udGV4dCwgdGltZXN0YW1wLCByZXN1bHQ7XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsYXN0ID0gXy5ub3coKSAtIHRpbWVzdGFtcDtcblxuICAgICAgaWYgKGxhc3QgPCB3YWl0ICYmIGxhc3QgPiAwKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0IC0gbGFzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKCFpbW1lZGlhdGUpIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIHRpbWVzdGFtcCA9IF8ubm93KCk7XG4gICAgICB2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcbiAgICAgIGlmICghdGltZW91dCkgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICAgICAgaWYgKGNhbGxOb3cpIHtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3QgZnVuY3Rpb24gcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBzZWNvbmQsXG4gIC8vIGFsbG93aW5nIHlvdSB0byBhZGp1c3QgYXJndW1lbnRzLCBydW4gY29kZSBiZWZvcmUgYW5kIGFmdGVyLCBhbmRcbiAgLy8gY29uZGl0aW9uYWxseSBleGVjdXRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAgXy53cmFwID0gZnVuY3Rpb24oZnVuYywgd3JhcHBlcikge1xuICAgIHJldHVybiBfLnBhcnRpYWwod3JhcHBlciwgZnVuYyk7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIG5lZ2F0ZWQgdmVyc2lvbiBvZiB0aGUgcGFzc2VkLWluIHByZWRpY2F0ZS5cbiAgXy5uZWdhdGUgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIGEgbGlzdCBvZiBmdW5jdGlvbnMsIGVhY2hcbiAgLy8gY29uc3VtaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgZm9sbG93cy5cbiAgXy5jb21wb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHN0YXJ0ID0gYXJncy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpID0gc3RhcnQ7XG4gICAgICB2YXIgcmVzdWx0ID0gYXJnc1tzdGFydF0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHdoaWxlIChpLS0pIHJlc3VsdCA9IGFyZ3NbaV0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgb25seSBiZSBleGVjdXRlZCBhZnRlciBiZWluZyBjYWxsZWQgTiB0aW1lcy5cbiAgXy5hZnRlciA9IGZ1bmN0aW9uKHRpbWVzLCBmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPCAxKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBOIHRpbWVzLlxuICBfLmJlZm9yZSA9IGZ1bmN0aW9uKHRpbWVzLCBmdW5jKSB7XG4gICAgdmFyIG1lbW87XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPiAwKSB7XG4gICAgICAgIG1lbW8gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmdW5jID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBtb3N0IG9uZSB0aW1lLCBubyBtYXR0ZXIgaG93XG4gIC8vIG9mdGVuIHlvdSBjYWxsIGl0LiBVc2VmdWwgZm9yIGxhenkgaW5pdGlhbGl6YXRpb24uXG4gIF8ub25jZSA9IF8ucGFydGlhbChfLmJlZm9yZSwgMik7XG5cbiAgLy8gT2JqZWN0IEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gUmV0cmlldmUgdGhlIG5hbWVzIG9mIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuXG4gIC8vIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBPYmplY3Qua2V5c2BcbiAgXy5rZXlzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBbXTtcbiAgICBpZiAobmF0aXZlS2V5cykgcmV0dXJuIG5hdGl2ZUtleXMob2JqKTtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIGlmIChfLmhhcyhvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICAgIHJldHVybiBrZXlzO1xuICB9O1xuXG4gIC8vIFJldHJpZXZlIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgXy52YWx1ZXMgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgdmFsdWVzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZXNbaV0gPSBvYmpba2V5c1tpXV07XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH07XG5cbiAgLy8gQ29udmVydCBhbiBvYmplY3QgaW50byBhIGxpc3Qgb2YgYFtrZXksIHZhbHVlXWAgcGFpcnMuXG4gIF8ucGFpcnMgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgcGFpcnMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhaXJzW2ldID0gW2tleXNbaV0sIG9ialtrZXlzW2ldXV07XG4gICAgfVxuICAgIHJldHVybiBwYWlycztcbiAgfTtcblxuICAvLyBJbnZlcnQgdGhlIGtleXMgYW5kIHZhbHVlcyBvZiBhbiBvYmplY3QuIFRoZSB2YWx1ZXMgbXVzdCBiZSBzZXJpYWxpemFibGUuXG4gIF8uaW52ZXJ0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdFtvYmpba2V5c1tpXV1dID0ga2V5c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiB0aGUgZnVuY3Rpb24gbmFtZXMgYXZhaWxhYmxlIG9uIHRoZSBvYmplY3QuXG4gIC8vIEFsaWFzZWQgYXMgYG1ldGhvZHNgXG4gIF8uZnVuY3Rpb25zID0gXy5tZXRob2RzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIG5hbWVzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihvYmpba2V5XSkpIG5hbWVzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzLnNvcnQoKTtcbiAgfTtcblxuICAvLyBFeHRlbmQgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIHByb3BlcnRpZXMgaW4gcGFzc2VkLWluIG9iamVjdChzKS5cbiAgXy5leHRlbmQgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICB2YXIgc291cmNlLCBwcm9wO1xuICAgIGZvciAodmFyIGkgPSAxLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAocHJvcCBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBwcm9wKSkge1xuICAgICAgICAgICAgb2JqW3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IG9ubHkgY29udGFpbmluZyB0aGUgd2hpdGVsaXN0ZWQgcHJvcGVydGllcy5cbiAgXy5waWNrID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHQgPSB7fSwga2V5O1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKGl0ZXJhdGVlKSkge1xuICAgICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG4gICAgICAgIGlmIChpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmopKSByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IGNvbmNhdC5hcHBseShbXSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICAgIG9iaiA9IG5ldyBPYmplY3Qob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIGlmIChrZXkgaW4gb2JqKSByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgd2l0aG91dCB0aGUgYmxhY2tsaXN0ZWQgcHJvcGVydGllcy5cbiAgXy5vbWl0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmIChfLmlzRnVuY3Rpb24oaXRlcmF0ZWUpKSB7XG4gICAgICBpdGVyYXRlZSA9IF8ubmVnYXRlKGl0ZXJhdGVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBfLm1hcChjb25jYXQuYXBwbHkoW10sIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSksIFN0cmluZyk7XG4gICAgICBpdGVyYXRlZSA9IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuICFfLmNvbnRhaW5zKGtleXMsIGtleSk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gXy5waWNrKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpO1xuICB9O1xuXG4gIC8vIEZpbGwgaW4gYSBnaXZlbiBvYmplY3Qgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXMuXG4gIF8uZGVmYXVsdHMgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICBmb3IgKHZhciBpID0gMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKG9ialtwcm9wXSA9PT0gdm9pZCAwKSBvYmpbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgKHNoYWxsb3ctY2xvbmVkKSBkdXBsaWNhdGUgb2YgYW4gb2JqZWN0LlxuICBfLmNsb25lID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gICAgcmV0dXJuIF8uaXNBcnJheShvYmopID8gb2JqLnNsaWNlKCkgOiBfLmV4dGVuZCh7fSwgb2JqKTtcbiAgfTtcblxuICAvLyBJbnZva2VzIGludGVyY2VwdG9yIHdpdGggdGhlIG9iaiwgYW5kIHRoZW4gcmV0dXJucyBvYmouXG4gIC8vIFRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJ0YXAgaW50b1wiIGEgbWV0aG9kIGNoYWluLCBpblxuICAvLyBvcmRlciB0byBwZXJmb3JtIG9wZXJhdGlvbnMgb24gaW50ZXJtZWRpYXRlIHJlc3VsdHMgd2l0aGluIHRoZSBjaGFpbi5cbiAgXy50YXAgPSBmdW5jdGlvbihvYmosIGludGVyY2VwdG9yKSB7XG4gICAgaW50ZXJjZXB0b3Iob2JqKTtcbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIEludGVybmFsIHJlY3Vyc2l2ZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBgaXNFcXVhbGAuXG4gIHZhciBlcSA9IGZ1bmN0aW9uKGEsIGIsIGFTdGFjaywgYlN0YWNrKSB7XG4gICAgLy8gSWRlbnRpY2FsIG9iamVjdHMgYXJlIGVxdWFsLiBgMCA9PT0gLTBgLCBidXQgdGhleSBhcmVuJ3QgaWRlbnRpY2FsLlxuICAgIC8vIFNlZSB0aGUgW0hhcm1vbnkgYGVnYWxgIHByb3Bvc2FsXShodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmVnYWwpLlxuICAgIGlmIChhID09PSBiKSByZXR1cm4gYSAhPT0gMCB8fCAxIC8gYSA9PT0gMSAvIGI7XG4gICAgLy8gQSBzdHJpY3QgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgbnVsbCA9PSB1bmRlZmluZWRgLlxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gYSA9PT0gYjtcbiAgICAvLyBVbndyYXAgYW55IHdyYXBwZWQgb2JqZWN0cy5cbiAgICBpZiAoYSBpbnN0YW5jZW9mIF8pIGEgPSBhLl93cmFwcGVkO1xuICAgIGlmIChiIGluc3RhbmNlb2YgXykgYiA9IGIuX3dyYXBwZWQ7XG4gICAgLy8gQ29tcGFyZSBgW1tDbGFzc11dYCBuYW1lcy5cbiAgICB2YXIgY2xhc3NOYW1lID0gdG9TdHJpbmcuY2FsbChhKTtcbiAgICBpZiAoY2xhc3NOYW1lICE9PSB0b1N0cmluZy5jYWxsKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgIC8vIFN0cmluZ3MsIG51bWJlcnMsIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIGRhdGVzLCBhbmQgYm9vbGVhbnMgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlLlxuICAgICAgY2FzZSAnW29iamVjdCBSZWdFeHBdJzpcbiAgICAgIC8vIFJlZ0V4cHMgYXJlIGNvZXJjZWQgdG8gc3RyaW5ncyBmb3IgY29tcGFyaXNvbiAoTm90ZTogJycgKyAvYS9pID09PSAnL2EvaScpXG4gICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxuICAgICAgICAvLyBQcmltaXRpdmVzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIG9iamVjdCB3cmFwcGVycyBhcmUgZXF1aXZhbGVudDsgdGh1cywgYFwiNVwiYCBpc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIGBuZXcgU3RyaW5nKFwiNVwiKWAuXG4gICAgICAgIHJldHVybiAnJyArIGEgPT09ICcnICsgYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgTnVtYmVyXSc6XG4gICAgICAgIC8vIGBOYU5gcyBhcmUgZXF1aXZhbGVudCwgYnV0IG5vbi1yZWZsZXhpdmUuXG4gICAgICAgIC8vIE9iamVjdChOYU4pIGlzIGVxdWl2YWxlbnQgdG8gTmFOXG4gICAgICAgIGlmICgrYSAhPT0gK2EpIHJldHVybiArYiAhPT0gK2I7XG4gICAgICAgIC8vIEFuIGBlZ2FsYCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBmb3Igb3RoZXIgbnVtZXJpYyB2YWx1ZXMuXG4gICAgICAgIHJldHVybiArYSA9PT0gMCA/IDEgLyArYSA9PT0gMSAvIGIgOiArYSA9PT0gK2I7XG4gICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcbiAgICAgIGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxuICAgICAgICAvLyBDb2VyY2UgZGF0ZXMgYW5kIGJvb2xlYW5zIHRvIG51bWVyaWMgcHJpbWl0aXZlIHZhbHVlcy4gRGF0ZXMgYXJlIGNvbXBhcmVkIGJ5IHRoZWlyXG4gICAgICAgIC8vIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9ucy4gTm90ZSB0aGF0IGludmFsaWQgZGF0ZXMgd2l0aCBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnNcbiAgICAgICAgLy8gb2YgYE5hTmAgYXJlIG5vdCBlcXVpdmFsZW50LlxuICAgICAgICByZXR1cm4gK2EgPT09ICtiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGEgIT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgIT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAvLyBBc3N1bWUgZXF1YWxpdHkgZm9yIGN5Y2xpYyBzdHJ1Y3R1cmVzLiBUaGUgYWxnb3JpdGhtIGZvciBkZXRlY3RpbmcgY3ljbGljXG4gICAgLy8gc3RydWN0dXJlcyBpcyBhZGFwdGVkIGZyb20gRVMgNS4xIHNlY3Rpb24gMTUuMTIuMywgYWJzdHJhY3Qgb3BlcmF0aW9uIGBKT2AuXG4gICAgdmFyIGxlbmd0aCA9IGFTdGFjay5sZW5ndGg7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAvLyBMaW5lYXIgc2VhcmNoLiBQZXJmb3JtYW5jZSBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2ZcbiAgICAgIC8vIHVuaXF1ZSBuZXN0ZWQgc3RydWN0dXJlcy5cbiAgICAgIGlmIChhU3RhY2tbbGVuZ3RoXSA9PT0gYSkgcmV0dXJuIGJTdGFja1tsZW5ndGhdID09PSBiO1xuICAgIH1cbiAgICAvLyBPYmplY3RzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWl2YWxlbnQsIGJ1dCBgT2JqZWN0YHNcbiAgICAvLyBmcm9tIGRpZmZlcmVudCBmcmFtZXMgYXJlLlxuICAgIHZhciBhQ3RvciA9IGEuY29uc3RydWN0b3IsIGJDdG9yID0gYi5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoXG4gICAgICBhQ3RvciAhPT0gYkN0b3IgJiZcbiAgICAgIC8vIEhhbmRsZSBPYmplY3QuY3JlYXRlKHgpIGNhc2VzXG4gICAgICAnY29uc3RydWN0b3InIGluIGEgJiYgJ2NvbnN0cnVjdG9yJyBpbiBiICYmXG4gICAgICAhKF8uaXNGdW5jdGlvbihhQ3RvcikgJiYgYUN0b3IgaW5zdGFuY2VvZiBhQ3RvciAmJlxuICAgICAgICBfLmlzRnVuY3Rpb24oYkN0b3IpICYmIGJDdG9yIGluc3RhbmNlb2YgYkN0b3IpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIEFkZCB0aGUgZmlyc3Qgb2JqZWN0IHRvIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICBhU3RhY2sucHVzaChhKTtcbiAgICBiU3RhY2sucHVzaChiKTtcbiAgICB2YXIgc2l6ZSwgcmVzdWx0O1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyBhbmQgYXJyYXlzLlxuICAgIGlmIChjbGFzc05hbWUgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIC8vIENvbXBhcmUgYXJyYXkgbGVuZ3RocyB0byBkZXRlcm1pbmUgaWYgYSBkZWVwIGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5LlxuICAgICAgc2l6ZSA9IGEubGVuZ3RoO1xuICAgICAgcmVzdWx0ID0gc2l6ZSA9PT0gYi5sZW5ndGg7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIERlZXAgY29tcGFyZSB0aGUgY29udGVudHMsIGlnbm9yaW5nIG5vbi1udW1lcmljIHByb3BlcnRpZXMuXG4gICAgICAgIHdoaWxlIChzaXplLS0pIHtcbiAgICAgICAgICBpZiAoIShyZXN1bHQgPSBlcShhW3NpemVdLCBiW3NpemVdLCBhU3RhY2ssIGJTdGFjaykpKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgb2JqZWN0cy5cbiAgICAgIHZhciBrZXlzID0gXy5rZXlzKGEpLCBrZXk7XG4gICAgICBzaXplID0ga2V5cy5sZW5ndGg7XG4gICAgICAvLyBFbnN1cmUgdGhhdCBib3RoIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBudW1iZXIgb2YgcHJvcGVydGllcyBiZWZvcmUgY29tcGFyaW5nIGRlZXAgZXF1YWxpdHkuXG4gICAgICByZXN1bHQgPSBfLmtleXMoYikubGVuZ3RoID09PSBzaXplO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB3aGlsZSAoc2l6ZS0tKSB7XG4gICAgICAgICAgLy8gRGVlcCBjb21wYXJlIGVhY2ggbWVtYmVyXG4gICAgICAgICAga2V5ID0ga2V5c1tzaXplXTtcbiAgICAgICAgICBpZiAoIShyZXN1bHQgPSBfLmhhcyhiLCBrZXkpICYmIGVxKGFba2V5XSwgYltrZXldLCBhU3RhY2ssIGJTdGFjaykpKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgdGhlIGZpcnN0IG9iamVjdCBmcm9tIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICBhU3RhY2sucG9wKCk7XG4gICAgYlN0YWNrLnBvcCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUGVyZm9ybSBhIGRlZXAgY29tcGFyaXNvbiB0byBjaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZXF1YWwuXG4gIF8uaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXEoYSwgYiwgW10sIFtdKTtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIGFycmF5LCBzdHJpbmcsIG9yIG9iamVjdCBlbXB0eT9cbiAgLy8gQW4gXCJlbXB0eVwiIG9iamVjdCBoYXMgbm8gZW51bWVyYWJsZSBvd24tcHJvcGVydGllcy5cbiAgXy5pc0VtcHR5ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoXy5pc0FycmF5KG9iaikgfHwgXy5pc1N0cmluZyhvYmopIHx8IF8uaXNBcmd1bWVudHMob2JqKSkgcmV0dXJuIG9iai5sZW5ndGggPT09IDA7XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikgaWYgKF8uaGFzKG9iaiwga2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBET00gZWxlbWVudD9cbiAgXy5pc0VsZW1lbnQgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gISEob2JqICYmIG9iai5ub2RlVHlwZSA9PT0gMSk7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhbiBhcnJheT9cbiAgLy8gRGVsZWdhdGVzIHRvIEVDTUE1J3MgbmF0aXZlIEFycmF5LmlzQXJyYXlcbiAgXy5pc0FycmF5ID0gbmF0aXZlSXNBcnJheSB8fCBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgYW4gb2JqZWN0P1xuICBfLmlzT2JqZWN0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGUgPT09ICdvYmplY3QnICYmICEhb2JqO1xuICB9O1xuXG4gIC8vIEFkZCBzb21lIGlzVHlwZSBtZXRob2RzOiBpc0FyZ3VtZW50cywgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0RhdGUsIGlzUmVnRXhwLlxuICBfLmVhY2goWydBcmd1bWVudHMnLCAnRnVuY3Rpb24nLCAnU3RyaW5nJywgJ051bWJlcicsICdEYXRlJywgJ1JlZ0V4cCddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgX1snaXMnICsgbmFtZV0gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0ICcgKyBuYW1lICsgJ10nO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIERlZmluZSBhIGZhbGxiYWNrIHZlcnNpb24gb2YgdGhlIG1ldGhvZCBpbiBicm93c2VycyAoYWhlbSwgSUUpLCB3aGVyZVxuICAvLyB0aGVyZSBpc24ndCBhbnkgaW5zcGVjdGFibGUgXCJBcmd1bWVudHNcIiB0eXBlLlxuICBpZiAoIV8uaXNBcmd1bWVudHMoYXJndW1lbnRzKSkge1xuICAgIF8uaXNBcmd1bWVudHMgPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBfLmhhcyhvYmosICdjYWxsZWUnKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gT3B0aW1pemUgYGlzRnVuY3Rpb25gIGlmIGFwcHJvcHJpYXRlLiBXb3JrIGFyb3VuZCBhbiBJRSAxMSBidWcuXG4gIGlmICh0eXBlb2YgLy4vICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgXy5pc0Z1bmN0aW9uID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nIHx8IGZhbHNlO1xuICAgIH07XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIG9iamVjdCBhIGZpbml0ZSBudW1iZXI/XG4gIF8uaXNGaW5pdGUgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gaXNGaW5pdGUob2JqKSAmJiAhaXNOYU4ocGFyc2VGbG9hdChvYmopKTtcbiAgfTtcblxuICAvLyBJcyB0aGUgZ2l2ZW4gdmFsdWUgYE5hTmA/IChOYU4gaXMgdGhlIG9ubHkgbnVtYmVyIHdoaWNoIGRvZXMgbm90IGVxdWFsIGl0c2VsZikuXG4gIF8uaXNOYU4gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gXy5pc051bWJlcihvYmopICYmIG9iaiAhPT0gK29iajtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgYm9vbGVhbj9cbiAgXy5pc0Jvb2xlYW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSB0cnVlIHx8IG9iaiA9PT0gZmFsc2UgfHwgdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBCb29sZWFuXSc7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBlcXVhbCB0byBudWxsP1xuICBfLmlzTnVsbCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IG51bGw7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YXJpYWJsZSB1bmRlZmluZWQ/XG4gIF8uaXNVbmRlZmluZWQgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSB2b2lkIDA7XG4gIH07XG5cbiAgLy8gU2hvcnRjdXQgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBwcm9wZXJ0eSBkaXJlY3RseVxuICAvLyBvbiBpdHNlbGYgKGluIG90aGVyIHdvcmRzLCBub3Qgb24gYSBwcm90b3R5cGUpLlxuICBfLmhhcyA9IGZ1bmN0aW9uKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xuICB9O1xuXG4gIC8vIFV0aWxpdHkgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gUnVuIFVuZGVyc2NvcmUuanMgaW4gKm5vQ29uZmxpY3QqIG1vZGUsIHJldHVybmluZyB0aGUgYF9gIHZhcmlhYmxlIHRvIGl0c1xuICAvLyBwcmV2aW91cyBvd25lci4gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QuXG4gIF8ubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIHJvb3QuXyA9IHByZXZpb3VzVW5kZXJzY29yZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBLZWVwIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBhcm91bmQgZm9yIGRlZmF1bHQgaXRlcmF0ZWVzLlxuICBfLmlkZW50aXR5ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgXy5jb25zdGFudCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH07XG5cbiAgXy5ub29wID0gZnVuY3Rpb24oKXt9O1xuXG4gIF8ucHJvcGVydHkgPSBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV07XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgcHJlZGljYXRlIGZvciBjaGVja2luZyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBzZXQgb2YgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIF8ubWF0Y2hlcyA9IGZ1bmN0aW9uKGF0dHJzKSB7XG4gICAgdmFyIHBhaXJzID0gXy5wYWlycyhhdHRycyksIGxlbmd0aCA9IHBhaXJzLmxlbmd0aDtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiAhbGVuZ3RoO1xuICAgICAgb2JqID0gbmV3IE9iamVjdChvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2ldLCBrZXkgPSBwYWlyWzBdO1xuICAgICAgICBpZiAocGFpclsxXSAhPT0gb2JqW2tleV0gfHwgIShrZXkgaW4gb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSdW4gYSBmdW5jdGlvbiAqKm4qKiB0aW1lcy5cbiAgXy50aW1lcyA9IGZ1bmN0aW9uKG4sIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIGFjY3VtID0gQXJyYXkoTWF0aC5tYXgoMCwgbikpO1xuICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSBhY2N1bVtpXSA9IGl0ZXJhdGVlKGkpO1xuICAgIHJldHVybiBhY2N1bTtcbiAgfTtcblxuICAvLyBSZXR1cm4gYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIG1pbiBhbmQgbWF4IChpbmNsdXNpdmUpLlxuICBfLnJhbmRvbSA9IGZ1bmN0aW9uKG1pbiwgbWF4KSB7XG4gICAgaWYgKG1heCA9PSBudWxsKSB7XG4gICAgICBtYXggPSBtaW47XG4gICAgICBtaW4gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gbWluICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKTtcbiAgfTtcblxuICAvLyBBIChwb3NzaWJseSBmYXN0ZXIpIHdheSB0byBnZXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGFzIGFuIGludGVnZXIuXG4gIF8ubm93ID0gRGF0ZS5ub3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICB9O1xuXG4gICAvLyBMaXN0IG9mIEhUTUwgZW50aXRpZXMgZm9yIGVzY2FwaW5nLlxuICB2YXIgZXNjYXBlTWFwID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjeDI3OycsXG4gICAgJ2AnOiAnJiN4NjA7J1xuICB9O1xuICB2YXIgdW5lc2NhcGVNYXAgPSBfLmludmVydChlc2NhcGVNYXApO1xuXG4gIC8vIEZ1bmN0aW9ucyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5ncyB0by9mcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIGNyZWF0ZUVzY2FwZXIgPSBmdW5jdGlvbihtYXApIHtcbiAgICB2YXIgZXNjYXBlciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWFwW21hdGNoXTtcbiAgICB9O1xuICAgIC8vIFJlZ2V4ZXMgZm9yIGlkZW50aWZ5aW5nIGEga2V5IHRoYXQgbmVlZHMgdG8gYmUgZXNjYXBlZFxuICAgIHZhciBzb3VyY2UgPSAnKD86JyArIF8ua2V5cyhtYXApLmpvaW4oJ3wnKSArICcpJztcbiAgICB2YXIgdGVzdFJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UpO1xuICAgIHZhciByZXBsYWNlUmVnZXhwID0gUmVnRXhwKHNvdXJjZSwgJ2cnKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgPT0gbnVsbCA/ICcnIDogJycgKyBzdHJpbmc7XG4gICAgICByZXR1cm4gdGVzdFJlZ2V4cC50ZXN0KHN0cmluZykgPyBzdHJpbmcucmVwbGFjZShyZXBsYWNlUmVnZXhwLCBlc2NhcGVyKSA6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBfLmVzY2FwZSA9IGNyZWF0ZUVzY2FwZXIoZXNjYXBlTWFwKTtcbiAgXy51bmVzY2FwZSA9IGNyZWF0ZUVzY2FwZXIodW5lc2NhcGVNYXApO1xuXG4gIC8vIElmIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgYHByb3BlcnR5YCBpcyBhIGZ1bmN0aW9uIHRoZW4gaW52b2tlIGl0IHdpdGggdGhlXG4gIC8vIGBvYmplY3RgIGFzIGNvbnRleHQ7IG90aGVyd2lzZSwgcmV0dXJuIGl0LlxuICBfLnJlc3VsdCA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgdmFyIHZhbHVlID0gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICByZXR1cm4gXy5pc0Z1bmN0aW9uKHZhbHVlKSA/IG9iamVjdFtwcm9wZXJ0eV0oKSA6IHZhbHVlO1xuICB9O1xuXG4gIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGludGVnZXIgaWQgKHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBjbGllbnQgc2Vzc2lvbikuXG4gIC8vIFVzZWZ1bCBmb3IgdGVtcG9yYXJ5IERPTSBpZHMuXG4gIHZhciBpZENvdW50ZXIgPSAwO1xuICBfLnVuaXF1ZUlkID0gZnVuY3Rpb24ocHJlZml4KSB7XG4gICAgdmFyIGlkID0gKytpZENvdW50ZXIgKyAnJztcbiAgICByZXR1cm4gcHJlZml4ID8gcHJlZml4ICsgaWQgOiBpZDtcbiAgfTtcblxuICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGVcbiAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG4gICAgZXZhbHVhdGUgICAgOiAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgIGludGVycG9sYXRlIDogLzwlPShbXFxzXFxTXSs/KSU+L2csXG4gICAgZXNjYXBlICAgICAgOiAvPCUtKFtcXHNcXFNdKz8pJT4vZ1xuICB9O1xuXG4gIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW5cbiAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpc1xuICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC5cbiAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87XG5cbiAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGFcbiAgLy8gc3RyaW5nIGxpdGVyYWwuXG4gIHZhciBlc2NhcGVzID0ge1xuICAgIFwiJ1wiOiAgICAgIFwiJ1wiLFxuICAgICdcXFxcJzogICAgICdcXFxcJyxcbiAgICAnXFxyJzogICAgICdyJyxcbiAgICAnXFxuJzogICAgICduJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgdmFyIGVzY2FwZXIgPSAvXFxcXHwnfFxccnxcXG58XFx1MjAyOHxcXHUyMDI5L2c7XG5cbiAgdmFyIGVzY2FwZUNoYXIgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiAnXFxcXCcgKyBlc2NhcGVzW21hdGNoXTtcbiAgfTtcblxuICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLlxuICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsXG4gIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLlxuICAvLyBOQjogYG9sZFNldHRpbmdzYCBvbmx5IGV4aXN0cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBzZXR0aW5ncywgb2xkU2V0dGluZ3MpIHtcbiAgICBpZiAoIXNldHRpbmdzICYmIG9sZFNldHRpbmdzKSBzZXR0aW5ncyA9IG9sZFNldHRpbmdzO1xuICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7XG5cbiAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi5cbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cChbXG4gICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsXG4gICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlXG4gICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpO1xuXG4gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS5cbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBzb3VyY2UgPSBcIl9fcCs9J1wiO1xuICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkge1xuICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShlc2NhcGVyLCBlc2NhcGVDaGFyKTtcbiAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICBpZiAoZXNjYXBlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIicrXFxuKChfX3Q9KFwiICsgZXNjYXBlICsgXCIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGludGVycG9sYXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIicrXFxuKChfX3Q9KFwiICsgaW50ZXJwb2xhdGUgKyBcIikpPT1udWxsPycnOl9fdCkrXFxuJ1wiO1xuICAgICAgfSBlbHNlIGlmIChldmFsdWF0ZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGUgKyBcIlxcbl9fcCs9J1wiO1xuICAgICAgfVxuXG4gICAgICAvLyBBZG9iZSBWTXMgbmVlZCB0aGUgbWF0Y2ggcmV0dXJuZWQgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBvZmZlc3QuXG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG4gICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuXG4gICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XFxuJyArIHNvdXJjZSArICd9XFxuJztcblxuICAgIHNvdXJjZSA9IFwidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLFwiICtcbiAgICAgIFwicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcXG5cIiArXG4gICAgICBzb3VyY2UgKyAncmV0dXJuIF9fcDtcXG4nO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pO1xuICAgIH07XG5cbiAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uXG4gICAgdmFyIGFyZ3VtZW50ID0gc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaic7XG4gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyBhcmd1bWVudCArICcpe1xcbicgKyBzb3VyY2UgKyAnfSc7XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH07XG5cbiAgLy8gQWRkIGEgXCJjaGFpblwiIGZ1bmN0aW9uLiBTdGFydCBjaGFpbmluZyBhIHdyYXBwZWQgVW5kZXJzY29yZSBvYmplY3QuXG4gIF8uY2hhaW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBfKG9iaik7XG4gICAgaW5zdGFuY2UuX2NoYWluID0gdHJ1ZTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgLy8gT09QXG4gIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAvLyBJZiBVbmRlcnNjb3JlIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBpdCByZXR1cm5zIGEgd3JhcHBlZCBvYmplY3QgdGhhdFxuICAvLyBjYW4gYmUgdXNlZCBPTy1zdHlsZS4gVGhpcyB3cmFwcGVyIGhvbGRzIGFsdGVyZWQgdmVyc2lvbnMgb2YgYWxsIHRoZVxuICAvLyB1bmRlcnNjb3JlIGZ1bmN0aW9ucy4gV3JhcHBlZCBvYmplY3RzIG1heSBiZSBjaGFpbmVkLlxuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjb250aW51ZSBjaGFpbmluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cy5cbiAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0aGlzLl9jaGFpbiA/IF8ob2JqKS5jaGFpbigpIDogb2JqO1xuICB9O1xuXG4gIC8vIEFkZCB5b3VyIG93biBjdXN0b20gZnVuY3Rpb25zIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdC5cbiAgXy5taXhpbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIF8uZWFjaChfLmZ1bmN0aW9ucyhvYmopLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IF9bbmFtZV0gPSBvYmpbbmFtZV07XG4gICAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IFt0aGlzLl93cmFwcGVkXTtcbiAgICAgICAgcHVzaC5hcHBseShhcmdzLCBhcmd1bWVudHMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmNhbGwodGhpcywgZnVuYy5hcHBseShfLCBhcmdzKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEFkZCBhbGwgb2YgdGhlIFVuZGVyc2NvcmUgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgXy5taXhpbihfKTtcblxuICAvLyBBZGQgYWxsIG11dGF0b3IgQXJyYXkgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBfLmVhY2goWydwb3AnLCAncHVzaCcsICdyZXZlcnNlJywgJ3NoaWZ0JywgJ3NvcnQnLCAnc3BsaWNlJywgJ3Vuc2hpZnQnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdO1xuICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb2JqID0gdGhpcy5fd3JhcHBlZDtcbiAgICAgIG1ldGhvZC5hcHBseShvYmosIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoKG5hbWUgPT09ICdzaGlmdCcgfHwgbmFtZSA9PT0gJ3NwbGljZScpICYmIG9iai5sZW5ndGggPT09IDApIGRlbGV0ZSBvYmpbMF07XG4gICAgICByZXR1cm4gcmVzdWx0LmNhbGwodGhpcywgb2JqKTtcbiAgICB9O1xuICB9KTtcblxuICAvLyBBZGQgYWxsIGFjY2Vzc29yIEFycmF5IGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgXy5lYWNoKFsnY29uY2F0JywgJ2pvaW4nLCAnc2xpY2UnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdO1xuICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNhbGwodGhpcywgbWV0aG9kLmFwcGx5KHRoaXMuX3dyYXBwZWQsIGFyZ3VtZW50cykpO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIEV4dHJhY3RzIHRoZSByZXN1bHQgZnJvbSBhIHdyYXBwZWQgYW5kIGNoYWluZWQgb2JqZWN0LlxuICBfLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl93cmFwcGVkO1xuICB9O1xuXG4gIC8vIEFNRCByZWdpc3RyYXRpb24gaGFwcGVucyBhdCB0aGUgZW5kIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQU1EIGxvYWRlcnNcbiAgLy8gdGhhdCBtYXkgbm90IGVuZm9yY2UgbmV4dC10dXJuIHNlbWFudGljcyBvbiBtb2R1bGVzLiBFdmVuIHRob3VnaCBnZW5lcmFsXG4gIC8vIHByYWN0aWNlIGZvciBBTUQgcmVnaXN0cmF0aW9uIGlzIHRvIGJlIGFub255bW91cywgdW5kZXJzY29yZSByZWdpc3RlcnNcbiAgLy8gYXMgYSBuYW1lZCBtb2R1bGUgYmVjYXVzZSwgbGlrZSBqUXVlcnksIGl0IGlzIGEgYmFzZSBsaWJyYXJ5IHRoYXQgaXNcbiAgLy8gcG9wdWxhciBlbm91Z2ggdG8gYmUgYnVuZGxlZCBpbiBhIHRoaXJkIHBhcnR5IGxpYiwgYnV0IG5vdCBiZSBwYXJ0IG9mXG4gIC8vIGFuIEFNRCBsb2FkIHJlcXVlc3QuIFRob3NlIGNhc2VzIGNvdWxkIGdlbmVyYXRlIGFuIGVycm9yIHdoZW4gYW5cbiAgLy8gYW5vbnltb3VzIGRlZmluZSgpIGlzIGNhbGxlZCBvdXRzaWRlIG9mIGEgbG9hZGVyIHJlcXVlc3QuXG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICBkZWZpbmUoJ3VuZGVyc2NvcmUnLCBbXSwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXztcbiAgICB9KTtcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5leHBvcnRzLnBhcnNlID0gdXJsUGFyc2U7XG5leHBvcnRzLnJlc29sdmUgPSB1cmxSZXNvbHZlO1xuZXhwb3J0cy5yZXNvbHZlT2JqZWN0ID0gdXJsUmVzb2x2ZU9iamVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gdXJsRm9ybWF0O1xuXG5leHBvcnRzLlVybCA9IFVybDtcblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGZvciB2YXJpb3VzIHJlYXNvbnMuXG4gICAgdW53aXNlID0gWyd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCddLmNvbmNhdChkZWxpbXMpLFxuXG4gICAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICAgIGF1dG9Fc2NhcGUgPSBbJ1xcJyddLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gICAgaG9zdEVuZGluZ0NoYXJzID0gWycvJywgJz8nLCAnIyddLFxuICAgIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICAgIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gICAgaG9zdG5hbWVQYXJ0U3RhcnQgPSAvXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gICAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gICAgfSxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH0sXG4gICAgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgdXRpbC5pc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuXG5VcmwucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24odXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAoIXV0aWwuaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvLyBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgLy8gQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gIHZhciBxdWVyeUluZGV4ID0gdXJsLmluZGV4T2YoJz8nKSxcbiAgICAgIHNwbGl0dGVyID1cbiAgICAgICAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgICAgdVNwbGl0ID0gdXJsLnNwbGl0KHNwbGl0dGVyKSxcbiAgICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcmVzdDtcbiAgICAgIHRoaXMuaHJlZiA9IHJlc3Q7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlzdHJpbmcucGFyc2UodGhpcy5zZWFyY2guc3Vic3RyKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2guc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICAgICAgdGhpcy5xdWVyeSA9IHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3RvID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF07XG4gICAgdmFyIGxvd2VyUHJvdG8gPSBwcm90by50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucHJvdG9jb2wgPSBsb3dlclByb3RvO1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpO1xuICB9XG5cbiAgLy8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIGhvc3RcbiAgLy8gdXNlckBzZXJ2ZXIgaXMgKmFsd2F5cyogaW50ZXJwcmV0ZWQgYXMgYSBob3N0bmFtZSwgYW5kIHVybFxuICAvLyByZXNvbHV0aW9uIHdpbGwgdHJlYXQgLy9mb28vYmFyIGFzIGhvc3Q9Zm9vLHBhdGg9YmFyIGJlY2F1c2UgdGhhdCdzXG4gIC8vIGhvdyB0aGUgYnJvd3NlciByZXNvbHZlcyByZWxhdGl2ZSBVUkxzLlxuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQFxcL10rQFteQFxcL10rLykpIHtcbiAgICB2YXIgc2xhc2hlcyA9IHJlc3Quc3Vic3RyKDAsIDIpID09PSAnLy8nO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKGhvc3RFbmRpbmdDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpXG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgZWl0aGVyIHdlIGhhdmUgYW4gZXhwbGljaXQgcG9pbnQgd2hlcmUgdGhlXG4gICAgLy8gYXV0aCBwb3J0aW9uIGNhbm5vdCBnbyBwYXN0LCBvciB0aGUgbGFzdCBAIGNoYXIgaXMgdGhlIGRlY2lkZXIuXG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgIC8vIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJywgaG9zdEVuZCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgLy8gUHVsbCB0aGF0IG9mZi5cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIH1cblxuICAgIC8vIHRoZSBob3N0IGlzIHRoZSByZW1haW5pbmcgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG5vbi1ob3N0IGNoYXJcbiAgICBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSlcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcblxuICAgIHRoaXMuaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KCk7XG5cbiAgICAvLyB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgIC8vIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG5cbiAgICAvLyBpZiBob3N0bmFtZSBiZWdpbnMgd2l0aCBbIGFuZCBlbmRzIHdpdGggXVxuICAgIC8vIGFzc3VtZSB0aGF0IGl0J3MgYW4gSVB2NiBhZGRyZXNzLlxuICAgIHZhciBpcHY2SG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lWzBdID09PSAnWycgJiZcbiAgICAgICAgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICB2YXIgbmV3cGFydCA9ICcnO1xuICAgICAgICAgIGZvciAodmFyIGogPSAwLCBrID0gcGFydC5sZW5ndGg7IGogPCBrOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgLy8gd2UgcmVwbGFjZSBub24tQVNDSUkgY2hhciB3aXRoIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byBtYWtlIHN1cmUgc2l6ZSBvZiBob3N0bmFtZSBpcyBub3RcbiAgICAgICAgICAgICAgLy8gYnJva2VuIGJ5IHJlcGxhY2luZyBub24tQVNDSUkgYnkgbm90aGluZ1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9ICd4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydFtqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gd2UgdGVzdCBhZ2FpbiB3aXRoIEFTQ0lJIGNoYXIgb25seVxuICAgICAgICAgIGlmICghbmV3cGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkUGFydHMgPSBob3N0cGFydHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB2YXIgbm90SG9zdCA9IGhvc3RwYXJ0cy5zbGljZShpICsgMSk7XG4gICAgICAgICAgICB2YXIgYml0ID0gcGFydC5tYXRjaChob3N0bmFtZVBhcnRTdGFydCk7XG4gICAgICAgICAgICBpZiAoYml0KSB7XG4gICAgICAgICAgICAgIHZhbGlkUGFydHMucHVzaChiaXRbMV0pO1xuICAgICAgICAgICAgICBub3RIb3N0LnVuc2hpZnQoYml0WzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3RIb3N0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXN0ID0gJy8nICsgbm90SG9zdC5qb2luKCcuJykgKyByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0bmFtZSA9IHZhbGlkUGFydHMuam9pbignLicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9zdG5hbWVzIGFyZSBhbHdheXMgbG93ZXIgY2FzZS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIC8vIElETkEgU3VwcG9ydDogUmV0dXJucyBhIHB1bnljb2RlZCByZXByZXNlbnRhdGlvbiBvZiBcImRvbWFpblwiLlxuICAgICAgLy8gSXQgb25seSBjb252ZXJ0cyBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgdGhhdFxuICAgICAgLy8gaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycywgaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZlxuICAgICAgLy8geW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0IGFscmVhZHkgaXMgQVNDSUktb25seS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSBwdW55Y29kZS50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBwID0gdGhpcy5wb3J0ID8gJzonICsgdGhpcy5wb3J0IDogJyc7XG4gICAgdmFyIGggPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuICAgIHRoaXMuaG9zdCA9IGggKyBwO1xuICAgIHRoaXMuaHJlZiArPSB0aGlzLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB2YXIgZXNjID0gZW5jb2RlVVJJQ29tcG9uZW50KGFlKTtcbiAgICAgIGlmIChlc2MgPT09IGFlKSB7XG4gICAgICAgIGVzYyA9IGVzY2FwZShhZSk7XG4gICAgICB9XG4gICAgICByZXN0ID0gcmVzdC5zcGxpdChhZSkuam9pbihlc2MpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgdGhpcy5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAvLyBubyBxdWVyeSBzdHJpbmcsIGJ1dCBwYXJzZVF1ZXJ5U3RyaW5nIHN0aWxsIHJlcXVlc3RlZFxuICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5xdWVyeSA9IHt9O1xuICB9XG4gIGlmIChyZXN0KSB0aGlzLnBhdGhuYW1lID0gcmVzdDtcbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJlxuICAgICAgdGhpcy5ob3N0bmFtZSAmJiAhdGhpcy5wYXRobmFtZSkge1xuICAgIHRoaXMucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmICh0aGlzLnBhdGhuYW1lIHx8IHRoaXMuc2VhcmNoKSB7XG4gICAgdmFyIHAgPSB0aGlzLnBhdGhuYW1lIHx8ICcnO1xuICAgIHZhciBzID0gdGhpcy5zZWFyY2ggfHwgJyc7XG4gICAgdGhpcy5wYXRoID0gcCArIHM7XG4gIH1cblxuICAvLyBmaW5hbGx5LCByZWNvbnN0cnVjdCB0aGUgaHJlZiBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHZhbGlkYXRlZC5cbiAgdGhpcy5ocmVmID0gdGhpcy5mb3JtYXQoKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8vIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gIC8vIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gIC8vIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgLy8gdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgaWYgKHV0aWwuaXNTdHJpbmcob2JqKSkgb2JqID0gdXJsUGFyc2Uob2JqKTtcbiAgaWYgKCEob2JqIGluc3RhbmNlb2YgVXJsKSkgcmV0dXJuIFVybC5wcm90b3R5cGUuZm9ybWF0LmNhbGwob2JqKTtcbiAgcmV0dXJuIG9iai5mb3JtYXQoKTtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGF1dGggPSB0aGlzLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgfHwgJycsXG4gICAgICBwYXRobmFtZSA9IHRoaXMucGF0aG5hbWUgfHwgJycsXG4gICAgICBoYXNoID0gdGhpcy5oYXNoIHx8ICcnLFxuICAgICAgaG9zdCA9IGZhbHNlLFxuICAgICAgcXVlcnkgPSAnJztcblxuICBpZiAodGhpcy5ob3N0KSB7XG4gICAgaG9zdCA9IGF1dGggKyB0aGlzLmhvc3Q7XG4gIH0gZWxzZSBpZiAodGhpcy5ob3N0bmFtZSkge1xuICAgIGhvc3QgPSBhdXRoICsgKHRoaXMuaG9zdG5hbWUuaW5kZXhPZignOicpID09PSAtMSA/XG4gICAgICAgIHRoaXMuaG9zdG5hbWUgOlxuICAgICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAodGhpcy5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHRoaXMucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5xdWVyeSAmJlxuICAgICAgdXRpbC5pc09iamVjdCh0aGlzLnF1ZXJ5KSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkodGhpcy5xdWVyeSk7XG4gIH1cblxuICB2YXIgc2VhcmNoID0gdGhpcy5zZWFyY2ggfHwgKHF1ZXJ5ICYmICgnPycgKyBxdWVyeSkpIHx8ICcnO1xuXG4gIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbC5zdWJzdHIoLTEpICE9PSAnOicpIHByb3RvY29sICs9ICc6JztcblxuICAvLyBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgLy8gdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgaWYgKHRoaXMuc2xhc2hlcyB8fFxuICAgICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmVPYmplY3QodXJsUGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKSkuZm9ybWF0KCk7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlT2JqZWN0KHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiByZWxhdGl2ZTtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICBpZiAodXRpbC5pc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgICAgcmVzdWx0Lmhvc3RuYW1lICYmICFyZXN1bHQucGF0aG5hbWUpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gcmVzdWx0LnBhdGhuYW1lID0gJy8nO1xuICAgIH1cblxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIHJlbFBhdGggPSAocmVsYXRpdmUucGF0aG5hbWUgfHwgJycpLnNwbGl0KCcvJyk7XG4gICAgICB3aGlsZSAocmVsUGF0aC5sZW5ndGggJiYgIShyZWxhdGl2ZS5ob3N0ID0gcmVsUGF0aC5zaGlmdCgpKSk7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3QpIHJlbGF0aXZlLmhvc3QgPSAnJztcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHJlbGF0aXZlLmhvc3RuYW1lID0gJyc7XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICBpZiAocmVsUGF0aC5sZW5ndGggPCAyKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSAocmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyksXG4gICAgICBpc1JlbEFicyA9IChcbiAgICAgICAgICByZWxhdGl2ZS5ob3N0IHx8XG4gICAgICAgICAgcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLydcbiAgICAgICksXG4gICAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQuaG9zdCAmJiByZWxhdGl2ZS5wYXRobmFtZSkpLFxuICAgICAgcmVtb3ZlQWxsRG90cyA9IG11c3RFbmRBYnMsXG4gICAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgICAgcmVsUGF0aCA9IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICBwc3ljaG90aWMgPSByZXN1bHQucHJvdG9jb2wgJiYgIXNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdO1xuXG4gIC8vIGlmIHRoZSB1cmwgaXMgYSBub24tc2xhc2hlZCB1cmwsIHRoZW4gcmVsYXRpdmVcbiAgLy8gbGlua3MgbGlrZSAuLi8uLiBzaG91bGQgYmUgYWJsZVxuICAvLyB0byBjcmF3bCB1cCB0byB0aGUgaG9zdG5hbWUsIGFzIHdlbGwuICBUaGlzIGlzIHN0cmFuZ2UuXG4gIC8vIHJlc3VsdC5wcm90b2NvbCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBub3cuXG4gIC8vIExhdGVyIG9uLCBwdXQgdGhlIGZpcnN0IHBhdGggcGFydCBpbnRvIHRoZSBob3N0IGZpZWxkLlxuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gJyc7XG4gICAgcmVzdWx0LnBvcnQgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuaG9zdCkge1xuICAgICAgaWYgKHNyY1BhdGhbMF0gPT09ICcnKSBzcmNQYXRoWzBdID0gcmVzdWx0Lmhvc3Q7XG4gICAgICBlbHNlIHNyY1BhdGgudW5zaGlmdChyZXN1bHQuaG9zdCk7XG4gICAgfVxuICAgIHJlc3VsdC5ob3N0ID0gJyc7XG4gICAgaWYgKHJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA9IG51bGw7XG4gICAgICByZWxhdGl2ZS5wb3J0ID0gbnVsbDtcbiAgICAgIGlmIChyZWxhdGl2ZS5ob3N0KSB7XG4gICAgICAgIGlmIChyZWxQYXRoWzBdID09PSAnJykgcmVsUGF0aFswXSA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIGVsc2UgcmVsUGF0aC51bnNoaWZ0KHJlbGF0aXZlLmhvc3QpO1xuICAgICAgfVxuICAgICAgcmVsYXRpdmUuaG9zdCA9IG51bGw7XG4gICAgfVxuICAgIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzICYmIChyZWxQYXRoWzBdID09PSAnJyB8fCBzcmNQYXRoWzBdID09PSAnJyk7XG4gIH1cblxuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgOiByZXN1bHQuaG9zdG5hbWU7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICBzcmNQYXRoID0gcmVsUGF0aDtcbiAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIGRvdC1oYW5kbGluZyBiZWxvdy5cbiAgfSBlbHNlIGlmIChyZWxQYXRoLmxlbmd0aCkge1xuICAgIC8vIGl0J3MgcmVsYXRpdmVcbiAgICAvLyB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICBpZiAoIXNyY1BhdGgpIHNyY1BhdGggPSBbXTtcbiAgICBzcmNQYXRoLnBvcCgpO1xuICAgIHNyY1BhdGggPSBzcmNQYXRoLmNvbmNhdChyZWxQYXRoKTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKCF1dGlsLmlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIC8vIG5vIHBhdGggYXQgYWxsLiAgZWFzeS5cbiAgICAvLyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIG90aGVyIHN0dWZmIGFib3ZlLlxuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQuc2VhcmNoKSB7XG4gICAgICByZXN1bHQucGF0aCA9ICcvJyArIHJlc3VsdC5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGEgdXJsIEVORHMgaW4gLiBvciAuLiwgdGhlbiBpdCBtdXN0IGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAvLyBob3dldmVyLCBpZiBpdCBlbmRzIGluIGFueXRoaW5nIGVsc2Ugbm9uLXNsYXNoeSxcbiAgLy8gdGhlbiBpdCBtdXN0IE5PVCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgdmFyIGxhc3QgPSBzcmNQYXRoLnNsaWNlKC0xKVswXTtcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSAoXG4gICAgICAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmXG4gICAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICAgKCFzcmNQYXRoWzBdIHx8IHNyY1BhdGhbMF0uY2hhckF0KDApICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIChzcmNQYXRoLmpvaW4oJy8nKS5zdWJzdHIoLTEpICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC5wdXNoKCcnKTtcbiAgfVxuXG4gIHZhciBpc0Fic29sdXRlID0gc3JjUGF0aFswXSA9PT0gJycgfHxcbiAgICAgIChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IGlzQWJzb2x1dGUgPyAnJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgcmVzdWx0Lmhvc3QgPSByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgfVxuICB9XG5cbiAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgfHwgKHJlc3VsdC5ob3N0ICYmIHNyY1BhdGgubGVuZ3RoKTtcblxuICBpZiAobXVzdEVuZEFicyAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gc3JjUGF0aC5qb2luKCcvJyk7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgcmVxdWVzdC5odHRwXG4gIGlmICghdXRpbC5pc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhdXRpbC5pc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICB2YXIgcG9ydCA9IHBvcnRQYXR0ZXJuLmV4ZWMoaG9zdCk7XG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF07XG4gICAgaWYgKHBvcnQgIT09ICc6Jykge1xuICAgICAgdGhpcy5wb3J0ID0gcG9ydC5zdWJzdHIoMSk7XG4gICAgfVxuICAgIGhvc3QgPSBob3N0LnN1YnN0cigwLCBob3N0Lmxlbmd0aCAtIHBvcnQubGVuZ3RoKTtcbiAgfVxuICBpZiAoaG9zdCkgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNTdHJpbmc6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ3N0cmluZyc7XG4gIH0sXG4gIGlzT2JqZWN0OiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mKGFyZykgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbiAgfSxcbiAgaXNOdWxsOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09PSBudWxsO1xuICB9LFxuICBpc051bGxPclVuZGVmaW5lZDogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyA9PSBudWxsO1xuICB9XG59O1xuIiwiXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlO1xuXG4vKipcbiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKiBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudGhyb3dEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50cmFjZURlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIGZ1bmN0aW9uIHRvIGRlcHJlY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBuZXcgXCJkZXByZWNhdGVkXCIgdmVyc2lvbiBvZiBgZm5gXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZSAoZm4sIG1zZykge1xuICBpZiAoY29uZmlnKCdub0RlcHJlY2F0aW9uJykpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnKCd0cmFjZURlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBgbG9jYWxTdG9yYWdlYCBmb3IgYm9vbGVhbiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29uZmlnIChuYW1lKSB7XG4gIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzXG4gIHRyeSB7XG4gICAgaWYgKCFnbG9iYWwubG9jYWxTdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07XG4gIGlmIChudWxsID09IHZhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9oZWxwZXJzLmpzIiwibGliL3R5cGVzL2FwaS1kZWZpbml0aW9uLmpzIiwibGliL3R5cGVzL29wZXJhdGlvbi5qcyIsImxpYi90eXBlcy9wYXJhbWV0ZXItdmFsdWUuanMiLCJsaWIvdHlwZXMvcGFyYW1ldGVyLmpzIiwibGliL3R5cGVzL3BhdGguanMiLCJsaWIvdHlwZXMvcmVzcG9uc2UuanMiLCJsaWIvdmFsaWRhdGlvbi9mb3JtYXQtZ2VuZXJhdG9ycy5qcyIsImxpYi92YWxpZGF0aW9uL2Zvcm1hdC12YWxpZGF0b3JzLmpzIiwibGliL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvYXNzZXJ0LmpzIiwibm9kZV9tb2R1bGVzL2Fzc2VydC9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC9pc0J1ZmZlckJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYXNzZXJ0L25vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L2xpYi9fZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanMiLCJub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1aWx0aW4tc3RhdHVzLWNvZGVzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY2FsbC1tZS1tYXliZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGVidWcvc3JjL2RlYnVnLmpzIiwibm9kZV9tb2R1bGVzL2RlZXAtZXh0ZW5kL2xpYi9kZWVwLWV4dGVuZC5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvY2xvbmUtb2JqLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2ZpbmQtcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL2RlcmVmL2xpYi91dGlsL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvZGVyZWYvbGliL3V0aWwvbm9ybWFsaXplLXNjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9kZXJlZi9saWIvdXRpbC9yZXNvbHZlLXNjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9kcmFuZ2UvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2FzdC5qcyIsIm5vZGVfbW9kdWxlcy9lc3V0aWxzL2xpYi9jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2tleXdvcmQuanMiLCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvY29tbWVyY2UuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2NvbXBhbnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2RhdGFiYXNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9kYXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9mYWtlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9maW5hbmNlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9oYWNrZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2liYW4uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2ltYWdlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvaW50ZXJuZXQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9idWlsZGluZ19udW1iZXIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jaXR5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvY2l0eV9wcmVmaXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jaXR5X3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL2NvdW50cnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHJ5X2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9jb3VudHkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9kZWZhdWx0X2NvdW50cnkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3Bvc3Rjb2RlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvcG9zdGNvZGVfYnlfc3RhdGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zZWNvbmRhcnlfYWRkcmVzcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RhdGVfYWJici5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9hZGRyZXNzL3N0cmVldF9hZGRyZXNzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3Mvc3RyZWV0X25hbWUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYWRkcmVzcy9zdHJlZXRfc3VmZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FkZHJlc3MvdGltZV96b25lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9hdXRob3IuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vYXBwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2FwcC92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2NyZWRpdF9jYXJkX2V4cGlyeV9kYXRlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9idXNpbmVzcy9jcmVkaXRfY2FyZF9udW1iZXJzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2NyZWRpdF9jYXJkX3R5cGVzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2J1c2luZXNzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NlbGxfcGhvbmUvZm9ybWF0cy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jZWxsX3Bob25lL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2NvbG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbW1lcmNlL2RlcGFydG1lbnQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tbWVyY2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tbWVyY2UvcHJvZHVjdF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYnNfYWRqZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvYnNfbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L2JzX3ZlcmIuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY29tcGFueS9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NvbXBhbnkvbm91bi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jb21wYW55L3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9hbWVyaWNhbl9leHByZXNzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2RpbmVyc19jbHViLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2Rpc2NvdmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL2pjYi5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9sYXNlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9tYWVzdHJvLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2NyZWRpdF9jYXJkL21hc3RlcmNhcmQuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvc29sby5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9jcmVkaXRfY2FyZC9zd2l0Y2guanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vY3JlZGl0X2NhcmQvdmlzYS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9jb2xsYXRpb24uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0YWJhc2UvY29sdW1uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGFiYXNlL2VuZ2luZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRhYmFzZS90eXBlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2RhdGUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZGF0ZS9tb250aC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9kYXRlL3dlZWtkYXkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9hY2NvdW50X3R5cGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vZmluYW5jZS9jdXJyZW5jeS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9maW5hbmNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ZpbmFuY2UvdHJhbnNhY3Rpb25fdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9oYWNrZXIvYWJicmV2aWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9hZGplY3RpdmUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaGFja2VyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9pbmd2ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci9ub3VuLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2hhY2tlci92ZXJiLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2F2YXRhcl91cmkuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvZG9tYWluX3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9pbnRlcm5ldC9leGFtcGxlX2VtYWlsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2ludGVybmV0L2ZyZWVfZW1haWwuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vaW50ZXJuZXQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbG9yZW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vbG9yZW0vc3VwcGxlbWVudGFsLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL2xvcmVtL3dvcmRzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvZmlyc3RfbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvbGFzdF9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL25hbWUvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3ByZWZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3N1ZmZpeC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9uYW1lL3RpdGxlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3Bob25lX251bWJlci9mb3JtYXRzLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3Bob25lX251bWJlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi9zeXN0ZW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vc3lzdGVtL21pbWVUeXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbi90ZWFtL2NyZWF0dXJlLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuL3RlYW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW4vdGVhbS9uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvZGVmYXVsdF9jb3VudHJ5LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2FkZHJlc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvYWRkcmVzcy9wb3N0Y29kZV9ieV9zdGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbG9jYWxlcy9lbl9VUy9pbnRlcm5ldC9kb21haW5fc3VmZml4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL2ludGVybmV0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb2NhbGVzL2VuX1VTL3Bob25lX251bWJlci9hcmVhX2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvcGhvbmVfbnVtYmVyL2V4Y2hhbmdlX2NvZGUuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL2xvY2FsZXMvZW5fVVMvcGhvbmVfbnVtYmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9sb3JlbS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9saWIvcGhvbmVfbnVtYmVyLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL2xpYi9yYW5kb20uanMiLCJub2RlX21vZHVsZXMvZmFrZXIvbGliL3N5c3RlbS5qcyIsIm5vZGVfbW9kdWxlcy9mYWtlci9sb2NhbGUvZW5fVVMuanMiLCJub2RlX21vZHVsZXMvZmFrZXIvdmVuZG9yL21lcnNlbm5lLmpzIiwibm9kZV9tb2R1bGVzL2Zha2VyL3ZlbmRvci91c2VyLWFnZW50LmpzIiwibm9kZV9tb2R1bGVzL2Zvcm1hdC11dGlsL2Zvcm1hdC5qcyIsIm5vZGVfbW9kdWxlcy9odHRwcy1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzYXJyYXkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvZHVtcGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvZXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbG9hZGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbWFyay5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9jb3JlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZmFpbHNhZmUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2JpbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvYm9vbC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvZmxvYXQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2ludC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3JlZ2V4cC5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9tYXAuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL21lcmdlLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9udWxsLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9vbWFwLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9wYWlycy5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvc2VxLmpzIiwibm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXQuanMiLCJub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3N0ci5qcyIsIm5vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvdGltZXN0YW1wLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLWZha2VyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9idW5kbGUuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvZGVyZWZlcmVuY2UuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvbm9ybWFsaXplLWFyZ3MuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvb3B0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL2JpbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wYXJzZXJzL2pzb24uanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcGFyc2Vycy90ZXh0LmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3BhcnNlcnMveWFtbC5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9wb2ludGVyLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3JlZi5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi9yZWZzLmpzIiwibm9kZV9tb2R1bGVzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvbGliL3Jlc29sdmUtZXh0ZXJuYWwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVzb2x2ZXJzL2ZpbGUuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvcmVzb2x2ZXJzL2h0dHAuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2xpYi91dGlsL3BsdWdpbnMuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC91cmwuanMiLCJub2RlX21vZHVsZXMvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9saWIvdXRpbC95YW1sLmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2dlbmVyYXRlZC9hZXNwcmltLWJyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvZ2VuZXJhdGVkL3BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvZGljdC5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvZ3JhbW1hci5qcyIsIm5vZGVfbW9kdWxlcy9qc29ucGF0aC9saWIvaGFuZGxlcnMuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pzb25wYXRoL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvanNvbnBhdGgvbGliL3NsaWNlLmpzIiwibm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL25hdGl2ZS1wcm9taXNlLW9ubHkvbGliL25wby5zcmMuanMiLCJub2RlX21vZHVsZXMvb25vL2xpYi9vbm8uanMiLCJub2RlX21vZHVsZXMvcGF0aC1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtdG8tcmVnZXhwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtdG8tcmVnZXhwL25vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MtbmV4dGljay1hcmdzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZGVjb2RlLmpzIiwibm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5nLWVzMy9lbmNvZGUuanMiLCJub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JhbmRleHAvbGliL3JhbmRleHAuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0tYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUtYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JldC9saWIvcG9zaXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JldC9saWIvc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9yZXQvbGliL3R5cGVzLmpzIiwibm9kZV9tb2R1bGVzL3JldC9saWIvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXNjb2RlZ2VuL2VzY29kZWdlbi5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXNjb2RlZ2VuL3BhY2thZ2UuanNvbiIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvZXN0cmF2ZXJzZS9lc3RyYXZlcnNlLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9lc3RyYXZlcnNlL3BhY2thZ2UuanNvbiIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYXJyYXktc2V0LmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iYXNlNjQtdmxxLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iYXNlNjQuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2JpbmFyeS1zZWFyY2guanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL21hcHBpbmctbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvcXVpY2stc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIm5vZGVfbW9kdWxlcy9zdGF0aWMtZXZhbC9ub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvc291cmNlLW1hcC1nZW5lcmF0b3IuanMiLCJub2RlX21vZHVsZXMvc3RhdGljLWV2YWwvbm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3NvdXJjZS1ub2RlLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL3NvdXJjZS1tYXAuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWh0dHAvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWh0dHAvbGliL2NhcGFiaWxpdHkuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWh0dHAvbGliL3JlcXVlc3QuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWh0dHAvbGliL3Jlc3BvbnNlLmpzIiwibm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9zd2FnZ2VyLW1ldGhvZHMvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N3YWdnZXItc2NoZW1hLW9mZmljaWFsL3NjaGVtYS5qc29uIiwibm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanMiLCJub2RlX21vZHVsZXMvdG8tYXJyYXlidWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuanMiLCJub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpzIiwibm9kZV9tb2R1bGVzL3VybC91cmwuanMiLCJub2RlX21vZHVsZXMvdXJsL3V0aWwuanMiLCJub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy94dGVuZC9pbW11dGFibGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTs7QUFFQSxJQUFJLElBQUssT0FBTyxNQUFQLEtBQWtCLFdBQWxCLEdBQWdDLE9BQU8sR0FBUCxDQUFoQyxHQUE4QyxPQUFPLE1BQVAsS0FBa0IsV0FBbEIsR0FBZ0MsT0FBTyxHQUFQLENBQWhDLEdBQThDLElBQXJHO0FBQ0EsSUFBSSxVQUFVLFFBQVEsZUFBUixDQUFkO0FBQ0EsSUFBSSxXQUFZLE9BQU8sTUFBUCxLQUFrQixXQUFsQixHQUFnQyxPQUFPLFVBQVAsQ0FBaEMsR0FBcUQsT0FBTyxNQUFQLEtBQWtCLFdBQWxCLEdBQWdDLE9BQU8sVUFBUCxDQUFoQyxHQUFxRCxJQUExSDtBQUNBLElBQUksZ0JBQWdCLFFBQVEsNEJBQVIsQ0FBcEI7QUFDQSxJQUFJ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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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WUFBekI7QUFDQSxhQUFTLGlCQUFULEVBQTRCLGVBQTVCO0FBQ0gsQ0FoTkQ7Ozs7O0FDbENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2NENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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WUFBWixFQUEwQixPQUFPLEtBQVA7QUFDM0IsR0FGRCxDQUVFLE9BQU8sQ0FBUCxFQUFVO0FBQ1YsV0FBTyxLQUFQO0FBQ0Q7QUFDRCxNQUFJLE1BQU0sT0FBTyxZQUFQLENBQW9CLElBQXBCLENBQVY7QUFDQSxNQUFJLFFBQVEsR0FBWixFQUFpQixPQUFPLEtBQVA7QUFDakIsU0FBTyxPQUFPLEdBQVAsRUFBWSxXQUFaLE9BQThCLE1BQXJDO0FBQ0Q7Ozs7Ozs7QUNsRUQsT0FBTyxPQUFQLEdBQWlCLE1BQWpCOztBQUVBLElBQUksaUJBQWlCLE9BQU8sU0FBUCxDQUFpQixjQUF0Qzs7QUFFQSxTQUFTLE1BQVQsR0FBa0I7QUFDZCxRQUFJLFNBQVMsRUFBYjs7QUFFQSxTQUFLLElBQUksSUFBSSxDQUFiLEVBQWdCLElBQUksVUFBVSxNQUE5QixFQUFzQyxHQUF0QyxFQUEyQztBQUN2QyxZQUFJLFNBQVMsVUFBVSxDQUFWLENBQWI7O0FBRUEsYUFBSyxJQUFJLEdBQVQsSUFBZ0IsTUFBaEIsRUFBd0I7QUFDcEIsZ0JBQUksZUFBZSxJQUFmLENBQW9CLE1BQXBCLEVBQTRCLEdBQTVCLENBQUosRUFBc0M7QUFDbEMsdUJBQU8sR0FBUCxJQUFjLE9BQU8sR0FBUCxDQUFkO0FBQ0g7QUFDSjtBQUNKOztBQUVELFdBQU8sTUFBUDtBQUNIIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vbGliL2hlbHBlcnMnKTtcbnZhciBKc29uUmVmcyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydKc29uUmVmcyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnSnNvblJlZnMnXSA6IG51bGwpO1xudmFyIEFwaURlZmluaXRpb24gPSByZXF1aXJlKCcuL2xpYi90eXBlcy9hcGktZGVmaW5pdGlvbicpO1xudmFyIFlBTUwgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snanN5YW1sJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydqc3lhbWwnXSA6IG51bGwpO1xuXG4vLyBMb2FkIHByb21pc2VzIHBvbHlmaWxsIGlmIG5lY2Vzc2FyeVxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gIHJlcXVpcmUoJ25hdGl2ZS1wcm9taXNlLW9ubHknKTtcbn1cblxuLyoqXG4gKiBBIGxpYnJhcnkgdGhhdCBzaW1wbGlmaWVzIFtPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBpbnRlZ3JhdGlvbnMuXG4gKlxuICogQG1vZHVsZSBzd2F5XG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGFuIEFwaURlZmluaXRpb24gb2JqZWN0IGZyb20gdGhlIHByb3ZpZGVkIE9wZW5BUEkgZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LkNyZWF0ZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgbG9hZGluZyB0aGUgZGVmaW5pdGlvbihzKVxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPG1vZHVsZTpzd2F5LkFwaURlZmluaXRpb24+fSBUaGUgcHJvbWlzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBTd2F5LmNyZWF0ZSh7XG4gKiAgIGRlZmluaXRpb246ICdodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLnlhbWwnXG4gKiB9KVxuICogLnRoZW4oZnVuY3Rpb24gKGFwaURlZmluaXRpb24pIHtcbiAqICAgY29uc29sZS5sb2coJ0RvY3VtZW50YXRpb24gVVJMOiAnLCBhcGkuZG9jdW1lbnRhdGlvblVybCk7XG4gKiB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyLnN0YWNrKTtcbiAqIH0pO1xuICovXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgYWxsVGFza3MgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdmFyIGNPcHRpb25zO1xuXG4gIC8vIFZhbGlkYXRlIGFyZ3VtZW50c1xuICBhbGxUYXNrcyA9IGFsbFRhc2tzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBpcyByZXF1aXJlZCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRlZmluaXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuZGVmaW5pdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuZGVmaW5pdGlvbikgJiYgIV8uaXNTdHJpbmcob3B0aW9ucy5kZWZpbml0aW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmRlZmluaXRpb24gbXVzdCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIGEgc3RyaW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMuanNvblJlZnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5qc29uUmVmcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucy5qc29uUmVmcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbUZvcm1hdHMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21Gb3JtYXRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbUZvcm1hdHMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpICYmICFfLmlzQXJyYXkob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgfVxuXG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbUZvcm1hdHMsICdjdXN0b21Gb3JtYXRzJyk7XG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnMsICdjdXN0b21Gb3JtYXRHZW5lcmF0b3JzJyk7XG4gICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsICdjdXN0b21WYWxpZGF0b3JzJyk7XG5cbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGlucHV0IG9wdGlvbnMgc28gYXMgbm90IHRvIGFsdGVyIHRoZW1cbiAgY09wdGlvbnMgPSBfLmNsb25lRGVlcChvcHRpb25zKTtcblxuICAvL1xuICBhbGxUYXNrcyA9IGFsbFRhc2tzXG4gICAgLy8gUmVzb2x2ZSByZWxhdGl2ZS9yZW1vdGUgcmVmZXJlbmNlc1xuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFByZXBhcmUgdGhlIGpzb24tcmVmcyBvcHRpb25zXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChjT3B0aW9ucy5qc29uUmVmcykpIHtcbiAgICAgICAgY09wdGlvbnMuanNvblJlZnMgPSB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5jbHVkZSBpbnZhbGlkIHJlZmVyZW5jZSBpbmZvcm1hdGlvblxuICAgICAgY09wdGlvbnMuanNvblJlZnMuaW5jbHVkZUludmFsaWQgPSB0cnVlO1xuXG4gICAgICAvLyBSZXNvbHZlIG9ubHkgcmVsYXRpdmUvcmVtb3RlIHJlZmVyZW5jZXNcbiAgICAgIGNPcHRpb25zLmpzb25SZWZzLmZpbHRlciA9IFsncmVsYXRpdmUnLCAncmVtb3RlJ107XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUganNvbi1yZWZzIG9wdGlvbnMgdG8gcHJvY2VzcyBZQU1MXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChjT3B0aW9ucy5qc29uUmVmcy5sb2FkZXJPcHRpb25zKSkge1xuICAgICAgICBjT3B0aW9ucy5qc29uUmVmcy5sb2FkZXJPcHRpb25zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMucHJvY2Vzc0NvbnRlbnQpKSB7XG4gICAgICAgIGNPcHRpb25zLmpzb25SZWZzLmxvYWRlck9wdGlvbnMucHJvY2Vzc0NvbnRlbnQgPSBmdW5jdGlvbiAocmVzLCBjYikge1xuICAgICAgICAgIGNiKHVuZGVmaW5lZCwgWUFNTC5zYWZlTG9hZChyZXMudGV4dCkpO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIHRoZSBhcHByb3ByaWF0ZSBqc29uLXJlZnMgQVBJXG4gICAgICBpZiAoXy5pc1N0cmluZyhjT3B0aW9ucy5kZWZpbml0aW9uKSkge1xuICAgICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnNBdChjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnMoY09wdGlvbnMuZGVmaW5pdGlvbiwgY09wdGlvbnMuanNvblJlZnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gUmVzb2x2ZSBsb2NhbCByZWZlcmVuY2VzIGFuZCBtZXJnZSByZXN1bHRzXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlbW90ZVJlc3VsdHMpIHtcbiAgICAgIC8vIFJlc29sdmUgbG9jYWwgcmVmZXJlbmNlcyAoUmVtb3RlIHJlZmVyZW5jZXMgc2hvdWxkIGhhZCBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQpXG4gICAgICBjT3B0aW9ucy5qc29uUmVmcy5maWx0ZXIgPSAnbG9jYWwnO1xuXG4gICAgICByZXR1cm4gSnNvblJlZnMucmVzb2x2ZVJlZnMocmVtb3RlUmVzdWx0cy5yZXNvbHZlZCB8fCBjT3B0aW9ucy5kZWZpbml0aW9uLCBjT3B0aW9ucy5qc29uUmVmcylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgICAgICBfLmVhY2gocmVtb3RlUmVzdWx0cy5yZWZzLCBmdW5jdGlvbiAocmVmRGV0YWlscywgcmVmUHRyKSB7XG4gICAgICAgICAgICByZXN1bHRzLnJlZnNbcmVmUHRyXSA9IHJlZkRldGFpbHM7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIE9wZW5BUEkgZGVmaW5pdGlvblxuICAgICAgICAgICAgZGVmaW5pdGlvbjogXy5pc1N0cmluZyhjT3B0aW9ucy5kZWZpbml0aW9uKSA/IHJlbW90ZVJlc3VsdHMudmFsdWUgOiBjT3B0aW9ucy5kZWZpbml0aW9uLFxuICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIE9wZW5BUEkgZGVmaW5pdGlvbiB3aXRoIGl0cyByZW1vdGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICAgICAgICAgICAgZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZDogcmVtb3RlUmVzdWx0cy5yZXNvbHZlZCxcbiAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCBhbGwgaXRzIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAgICAgICAgICAgIGRlZmluaXRpb25GdWxseVJlc29sdmVkOiByZXN1bHRzLnJlc29sdmVkLFxuICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGxvY2FsIHJlZmVyZW5jZSBkZXRhaWxzIHdpdGggdGhlIHJlbW90ZSByZWZlcmVuY2UgZGV0YWlsc1xuICAgICAgICAgICAgcmVmczogcmVzdWx0cy5yZWZzXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC8vIFByb2Nlc3MgdGhlIE9wZW5BUEkgZG9jdW1lbnQgYW5kIHJldHVybiBhbiBBcGlEZWZpbml0aW9uXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGFsbCBjaXJjdWxhciBvYmplY3RzIGFzIHotc2NoZW1hIGRvZXMgbm90IHdvcmsgd2l0aCB0aGVtOlxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYS9pc3N1ZXMvMTM3XG4gICAgICBoZWxwZXJzLnJlbW92ZUNpcmN1bGFycyhyZXN1bHRzLmRlZmluaXRpb24pO1xuICAgICAgaGVscGVycy5yZW1vdmVDaXJjdWxhcnMocmVzdWx0cy5kZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkKTtcbiAgICAgIGhlbHBlcnMucmVtb3ZlQ2lyY3VsYXJzKHJlc3VsdHMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gICAgICAvLyBDcmVhdGUgb2JqZWN0IG1vZGVsXG4gICAgICByZXR1cm4gbmV3IEFwaURlZmluaXRpb24ocmVzdWx0cy5kZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucmVmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWxsVGFza3M7XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG52YXIgZm9ybWF0R2VuZXJhdG9ycyA9IHJlcXVpcmUoJy4vdmFsaWRhdGlvbi9mb3JtYXQtZ2VuZXJhdG9ycycpO1xudmFyIGZvcm1hdFZhbGlkYXRvcnMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb24vZm9ybWF0LXZhbGlkYXRvcnMnKTtcbnZhciBaU2NoZW1hID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ1pTY2hlbWEnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ1pTY2hlbWEnXSA6IG51bGwpO1xuXG4vLyBmdWxsLWRhdGUgZnJvbSBodHRwOi8veG1sMnJmYy5pZXRmLm9yZy9wdWJsaWMvcmZjL2h0bWwvcmZjMzMzOS5odG1sI2FuY2hvcjE0XG52YXIgZGF0ZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICdeJyArXG4gICdcXFxcZHs0fScgKyAvLyB5ZWFyXG4gICctJyArXG4gICcoWzBdXFxcXGR8MVswMTJdKScgKyAvLyBtb250aFxuICAnLScgK1xuICAnKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pJyArIC8vIGRheVxuICAnJCcpO1xuXG4vLyBkYXRlLXRpbWUgZnJvbSBodHRwOi8veG1sMnJmYy5pZXRmLm9yZy9wdWJsaWMvcmZjL2h0bWwvcmZjMzMzOS5odG1sI2FuY2hvcjE0XG52YXIgZGF0ZVRpbWVSZWdFeHAgPSBuZXcgUmVnRXhwKFxuICAnXicgK1xuICAnXFxcXGR7NH0nICsgLy8geWVhclxuICAnLScgK1xuICAnKFswXVxcXFxkfDFbMDEyXSknICsgLy8gbW9udGhcbiAgJy0nICtcbiAgJygwWzEtOV18WzEyXVxcXFxkfDNbMDFdKScgKyAvLyBkYXlcbiAgJ1QnICtcbiAgJyhbMDFdXFxcXGR8MlswLTNdKScgKyAvLyBob3VyXG4gICc6JyArXG4gICdbMC01XVxcXFxkJyArIC8vIG1pbnV0ZVxuICAnOicgK1xuICAnWzAtNV1cXFxcZCcgKyAvLyBzZWNvbmRcbiAgJyhcXFxcLlxcXFxkKyk/JyArIC8vIGZyYWN0aW9uYWwgc2Vjb25kc1xuICAnKFp8KFxcXFwrfC0pKFswMV1cXFxcZHwyWzAtNF0pOlswLTVdXFxcXGQpJyArIC8vIFogb3IgdGltZSBvZmZzZXRcbiAgJyQnKTtcblxudmFyIGNvbGxlY3Rpb25Gb3JtYXRzID0gW3VuZGVmaW5lZCwgJ2NzdicsICdtdWx0aScsICdwaXBlcycsICdzc3YnLCAndHN2J107XG52YXIganNvbk1vY2tlcjtcbnZhciBqc29uU2NoZW1hVmFsaWRhdG9yID0gY3JlYXRlSlNPTlZhbGlkYXRvcigpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjcGFyYW1ldGVyT2JqZWN0XG52YXIgcGFyYW1ldGVyU2NoZW1hUHJvcGVydGllcyA9IFtcbiAgJ2FsbG93RW1wdHlWYWx1ZScsXG4gICdkZWZhdWx0JyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2VudW0nLFxuICAnZXhjbHVzaXZlTWF4aW11bScsXG4gICdleGNsdXNpdmVNaW5pbXVtJyxcbiAgJ2Zvcm1hdCcsXG4gICdpdGVtcycsXG4gICdtYXhJdGVtcycsXG4gICdtYXhMZW5ndGgnLFxuICAnbWF4aW11bScsXG4gICdtaW5JdGVtcycsXG4gICdtaW5MZW5ndGgnLFxuICAnbWluaW11bScsXG4gICdtdWx0aXBsZU9mJyxcbiAgJ3BhdHRlcm4nLFxuICAndHlwZScsXG4gICd1bmlxdWVJdGVtcydcbl07XG52YXIgdHlwZXMgPSBbJ2FycmF5JywgJ2Jvb2xlYW4nLCAnaW50ZWdlcicsICdvYmplY3QnLCAnbnVtYmVyJywgJ3N0cmluZyddO1xuXG5mdW5jdGlvbiBjcmVhdGVKU09OTW9ja2VyIChtb2NrZXIpIHtcbiAgLy8gRXh0ZW5kIGZha2VyLmpzIHRvIG9ubHkgaW5jbHVkZSB0aGUgJ2VuJyBsb2NhbGVcbiAgdmFyIGZha2VyTG9jYWxlID0gcmVxdWlyZSgnZmFrZXIvbG9jYWxlL2VuX1VTJyk7XG5cbiAgbW9ja2VyLmV4dGVuZCgnZmFrZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyTG9jYWxlO1xuICB9KTtcblxuICAvLyBBZGQgdGhlIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9yc1xuICBfLmVhY2goZm9ybWF0R2VuZXJhdG9ycywgZnVuY3Rpb24gKGdlbiwgbmFtZSkge1xuICAgIG1vY2tlci5mb3JtYXQobmFtZSwgZ2VuKG1vY2tlcikpO1xuICB9KTtcblxuICByZXR1cm4gbW9ja2VyO1xufVxuXG5mdW5jdGlvbiBmaW5kRXh0cmFQYXJhbWV0ZXJzIChleHBlY3RlZCwgYWN0dWFsLCBsb2NhdGlvbiwgcmVzdWx0cykge1xuICB2YXIgY29kZVN1ZmZpeCA9IGxvY2F0aW9uLnRvVXBwZXJDYXNlKCk7XG5cbiAgc3dpdGNoIChsb2NhdGlvbikge1xuICAgIGNhc2UgJ2Zvcm1EYXRhJzpcbiAgICAgIGNvZGVTdWZmaXggPSAnRk9STV9EQVRBJztcbiAgICAgIGxvY2F0aW9uID0gJ2Zvcm0gZGF0YSBmaWVsZCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdxdWVyeSc6XG4gICAgICBsb2NhdGlvbiA9ICdxdWVyeSBwYXJhbWV0ZXInO1xuICAgICAgYnJlYWs7XG5cbiAgICAvLyBubyBkZWZhdWx0XG4gIH1cblxuICBfLmVhY2goYWN0dWFsLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChleHBlY3RlZC5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdSRVFVRVNUX0FERElUSU9OQUxfJyArIGNvZGVTdWZmaXgsXG4gICAgICAgIG1lc3NhZ2U6ICdBZGRpdGlvbmFsICcgKyBsb2NhdGlvbiArICcgbm90IGFsbG93ZWQ6ICcgKyBuYW1lLFxuICAgICAgICBwYXRoOiBbXVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJGb3JtYXQgKG5hbWUsIHZhbGlkYXRvcikge1xuICBaU2NoZW1hLnJlZ2lzdGVyRm9ybWF0KG5hbWUsIHZhbGlkYXRvcik7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yIChuYW1lLCBmdW5jKSB7XG4gIGdldEpTT05TY2hlbWFNb2NrZXIoKS5mb3JtYXQobmFtZSwgZnVuYyk7XG59XG5cbmZ1bmN0aW9uIHVucmVnaXN0ZXJGb3JtYXQgKG5hbWUpIHtcbiAgWlNjaGVtYS51bnJlZ2lzdGVyRm9ybWF0KG5hbWUpO1xufVxuXG5mdW5jdGlvbiB1bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yIChuYW1lKSB7XG4gIGRlbGV0ZSBnZXRKU09OU2NoZW1hTW9ja2VyKCkuZm9ybWF0KClbbmFtZV07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUpTT05WYWxpZGF0b3IgKCkge1xuICB2YXIgdmFsaWRhdG9yID0gbmV3IFpTY2hlbWEoe1xuICAgIGJyZWFrT25GaXJzdEVycm9yOiBmYWxzZSxcbiAgICBpZ25vcmVVbmtub3duRm9ybWF0czogdHJ1ZSxcbiAgICByZXBvcnRQYXRoQXNBcnJheTogdHJ1ZVxuICB9KTtcblxuICAvLyBBZGQgdGhlIGN1c3RvbSB2YWxpZGF0b3JzXG4gIF8uZWFjaChmb3JtYXRWYWxpZGF0b3JzLCBmdW5jdGlvbiAoaGFuZGxlciwgbmFtZSkge1xuICAgIHJlZ2lzdGVyRm9ybWF0KG5hbWUsIGhhbmRsZXIpO1xuICB9KTtcblxuICByZXR1cm4gdmFsaWRhdG9yO1xufVxuXG5mdW5jdGlvbiBnZXRKU09OU2NoZW1hTW9ja2VyICgpIHtcbiAgdmFyIG1vY2tlcjtcblxuICBpZiAoIWpzb25Nb2NrZXIpIHtcbiAgICBtb2NrZXIgPSByZXF1aXJlKCdqc29uLXNjaGVtYS1mYWtlci9saWInKTtcbiAgICBqc29uTW9ja2VyID0gY3JlYXRlSlNPTk1vY2tlcihtb2NrZXIpO1xuICB9XG5cbiAgcmV0dXJuIGpzb25Nb2NrZXI7XG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemVFcnJvciAob2JqKSB7XG4gIC8vIFJlbW92ZSBzdXBlcmZsdW91cyBlcnJvciBkZXRhaWxzXG4gIGlmIChfLmlzVW5kZWZpbmVkKG9iai5zY2hlbWFJZCkpIHtcbiAgICBkZWxldGUgb2JqLnNjaGVtYUlkO1xuICB9XG5cbiAgaWYgKG9iai5pbm5lcikge1xuICAgIF8uZWFjaChvYmouaW5uZXIsIGZ1bmN0aW9uIChuT2JqKSB7XG4gICAgICBub3JtYWxpemVFcnJvcihuT2JqKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBtZXRob2QgdG8gdGFrZSBhbiBPcGVuQVBJIFBhcmFtZXRlciBPYmplY3QgZGVmaW5pdGlvbiBhbmQgY29tcHV0ZSBpdHMgc2NoZW1hLlxuICpcbiAqIEZvciBub24tYm9keSBPcGVuQVBJIHBhcmFtZXRlcnMsIHRoZSBkZWZpbml0aW9uIGl0c2VsZiBpcyBub3Qgc3VpdGFibGUgYXMgYSBKU09OIFNjaGVtYSBzbyB3ZSBtdXN0IGNvbXB1dGUgaXQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtRGVmIC0gVGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKlxuICogQHJldHVybnMge29iamVjdH0gVGhlIGNvbXB1dGVkIHNjaGVtYVxuICovXG5tb2R1bGUuZXhwb3J0cy5jb21wdXRlUGFyYW1ldGVyU2NoZW1hID0gZnVuY3Rpb24gKHBhcmFtRGVmKSB7XG4gIHZhciBzY2hlbWE7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1EZWYuc2NoZW1hKSkge1xuICAgIHNjaGVtYSA9IHt9O1xuXG4gICAgLy8gQnVpbGQgdGhlIHNjaGVtYSBmcm9tIHRoZSBzY2hlbWEtbGlrZSBwYXJhbWV0ZXIgc3RydWN0dXJlXG4gICAgXy5mb3JFYWNoKHBhcmFtZXRlclNjaGVtYVByb3BlcnRpZXMsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFyYW1EZWZbbmFtZV0pKSB7XG4gICAgICAgIHNjaGVtYVtuYW1lXSA9IHBhcmFtRGVmW25hbWVdO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHNjaGVtYSA9IHBhcmFtRGVmLnNjaGVtYTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcmF3IEphdmFTY3JpcHQgdmFsdWUgdG8gYSBKU09OIFNjaGVtYSB2YWx1ZSBiYXNlZCBvbiBpdHMgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgc2NoZW1hIGZvciB0aGUgdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gVGhlIGNvbnZlcnNpb24gb3B0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXRdIC0gVGhlIGNvbGxlY3Rpb24gZm9ybWF0XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZW5jb2RpbmddIC0gVGhlIGVuY29kaW5nIGlmIHRoZSByYXcgdmFsdWUgaXMgYSBgQnVmZmVyYFxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgeyp9IFRoZSBjb252ZXJ0ZWQgdmFsdWVcbiAqXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElGIHRoZSBgY29sbGVjdGlvbkZvcm1hdGAgb3IgYHR5cGVgIGlzIGludmFsaWQgZm9yIHRoZSBgc2NoZW1hYCwgb3IgaWYgY29udmVyc2lvbiBmYWlsc1xuICovXG52YXIgY29udmVydFZhbHVlID0gbW9kdWxlLmV4cG9ydHMuY29udmVydFZhbHVlID0gZnVuY3Rpb24gKHNjaGVtYSwgb3B0aW9ucywgdmFsdWUpIHtcbiAgdmFyIG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTsgLy8gVXNlZCBpbiBlcnJvciByZXBvcnRpbmcgZm9yIGludmFsaWQgdmFsdWVzXG4gIHZhciB0eXBlID0gXy5pc1BsYWluT2JqZWN0KHNjaGVtYSkgPyBzY2hlbWEudHlwZSA6IHVuZGVmaW5lZDtcbiAgdmFyIHBWYWx1ZSA9IHZhbHVlO1xuICB2YXIgcFR5cGUgPSB0eXBlb2YgcFZhbHVlO1xuICB2YXIgZXJyO1xuICB2YXIgaXNEYXRlO1xuICB2YXIgaXNEYXRlVGltZTtcblxuICAvLyBJZiB0aGVyZSBpcyBhbiBleHBsaWNpdCB0eXBlIHByb3ZpZGVkLCBtYWtlIHN1cmUgaXQncyBvbmUgb2YgdGhlIHN1cHBvcnRlZCBvbmVzXG4gIGlmIChfLmhhcyhzY2hlbWEsICd0eXBlJykgJiYgdHlwZXMuaW5kZXhPZih0eXBlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFxcJ3R5cGVcXCcgdmFsdWU6ICcgKyB0eXBlKTtcbiAgfVxuXG4gIC8vIFNpbmNlIEpTT04gU2NoZW1hIGFsbG93cyB5b3UgdG8gbm90IHNwZWNpZnkgYSB0eXBlIGFuZCBpdCBpcyB0cmVhdGVkIGFzIGEgd2lsZGNhcmQgb2Ygc29ydHMsIHdlIHNob3VsZCBub3QgZG8gYW55XG4gIC8vIGNvZXJjaW9uIGZvciB0aGVzZSB0eXBlcyBvZiB2YWx1ZXMuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHR5cGUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gdmFsdWUsIGRvIG5vdCBjb252ZXJ0IGl0XG4gIGlmIChfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgQnVmZmVyIHZhbHVlIHRvIFN0cmluZ1xuICAvLyAoV2UgdXNlIHRoaXMgdHlwZSBvZiBjaGVjayB0byBpZGVudGlmeSBCdWZmZXIgb2JqZWN0cy4gIFRoZSBicm93c2VyIGRvZXMgbm90IGhhdmUgYSBCdWZmZXIgdHlwZSBhbmQgdG8gYXZvaWQgaGF2aW5nXG4gIC8vICBpbXBvcnQgdGhlIGJyb3dzZXJpZnkgYnVmZmVyIG1vZHVsZSwgd2UganVzdCBkbyBhIHNpbXBsZSBjaGVjay4gIFRoaXMgaXMgYnJpdHRsZSBidXQgc2hvdWxkIHdvcmsuKVxuICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlLnJlYWRVSW50OCkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHBWYWx1ZSA9IHZhbHVlO1xuICAgIHBUeXBlID0gdHlwZW9mIHZhbHVlO1xuICB9XG5cbiAgLy8gSWYgdGhlIHZhbHVlIGlzIGVtcHR5IGFuZCBlbXB0eSBpcyBhbGxvd2VkLCB1c2UgaXRcbiAgaWYgKHNjaGVtYS5hbGxvd0VtcHR5VmFsdWUgJiYgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gQXR0ZW1wdCB0byBwYXJzZSB0aGUgc3RyaW5nIGFzIEpTT04gaWYgdGhlIHR5cGUgaXMgYXJyYXkgb3Igb2JqZWN0XG4gIGlmIChbJ2FycmF5JywgJ29iamVjdCddLmluZGV4T2YodHlwZSkgPiAtMSAmJiBfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgIGlmICgodHlwZSA9PT0gJ2FycmF5JyAmJiB2YWx1ZS5pbmRleE9mKCdbJykgPT09IDApIHx8ICh0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pbmRleE9mKCd7JykgPT09IDApKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwganVzdCBmYWxsIHRocm91Z2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgY2FzZSAnYXJyYXknOlxuICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgaWYgKGNvbGxlY3Rpb25Gb3JtYXRzLmluZGV4T2Yob3B0aW9ucy5jb2xsZWN0aW9uRm9ybWF0KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBcXCdjb2xsZWN0aW9uRm9ybWF0XFwnIHZhbHVlOiAnICsgb3B0aW9ucy5jb2xsZWN0aW9uRm9ybWF0KTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChvcHRpb25zLmNvbGxlY3Rpb25Gb3JtYXQpIHtcbiAgICAgIGNhc2UgJ2Nzdic6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ211bHRpJzpcbiAgICAgICAgdmFsdWUgPSBbdmFsdWVdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BpcGVzJzpcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnfCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Nzdic6XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJyAnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0c3YnOlxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCdcXHQnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgLy8gbm8gZGVmYXVsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfLmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IF8ubWFwKHZhbHVlLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZShfLmlzQXJyYXkoc2NoZW1hLml0ZW1zKSA/IHNjaGVtYS5pdGVtc1tpbmRleF0gOiBzY2hlbWEuaXRlbXMsIG9wdGlvbnMsIGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIGNhc2UgJ2Jvb2xlYW4nOlxuICAgIGlmICghXy5pc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgICB2YWx1ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCBib29sZWFuOiAnICsgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJyZWFrO1xuICBjYXNlICdpbnRlZ2VyJzpcbiAgICBpZiAoIV8uaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkgJiYgXy50cmltKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBOYU47XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkIGludGVnZXI6ICcgKyBvcmlnaW5hbFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBicmVhaztcbiAgY2FzZSAnbnVtYmVyJzpcbiAgICBpZiAoIV8uaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkgJiYgXy50cmltKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBOYU47XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkIG51bWJlcjogJyArIG9yaWdpbmFsVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAnc3RyaW5nJzpcbiAgICBpZiAoWydkYXRlJywgJ2RhdGUtdGltZSddLmluZGV4T2Yoc2NoZW1hLmZvcm1hdCkgPiAtMSkge1xuICAgICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIGlzRGF0ZSA9IHNjaGVtYS5mb3JtYXQgPT09ICdkYXRlJyAmJiBkYXRlUmVnRXhwLnRlc3QodmFsdWUpO1xuICAgICAgICBpc0RhdGVUaW1lID0gc2NoZW1hLmZvcm1hdCA9PT0gJ2RhdGUtdGltZScgJiYgZGF0ZVRpbWVSZWdFeHAudGVzdCh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc0RhdGUgJiYgIWlzRGF0ZVRpbWUpIHtcbiAgICAgICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKCdOb3QgYSB2YWxpZCAnICsgc2NoZW1hLmZvcm1hdCArICcgc3RyaW5nOiAnICsgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgICAgZXJyLmNvZGUgPSAnSU5WQUxJRF9GT1JNQVQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghXy5pc0RhdGUodmFsdWUpIHx8IHZhbHVlLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkICcgKyBzY2hlbWEuZm9ybWF0ICsgJyBzdHJpbmc6ICcgKyBvcmlnaW5hbFZhbHVlKTtcblxuICAgICAgICBlcnIuY29kZSA9ICdJTlZBTElEX0ZPUk1BVCc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGVyciA9IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHZhbGlkIHN0cmluZzogJyArIHZhbHVlKTtcbiAgICB9XG5cbiAgICBicmVhaztcblxuICAgIC8vIG5vIGRlZmF1bHRcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChlcnIpKSB7XG4gICAgLy8gQ29udmVydCB0aGUgZXJyb3IgdG8gYmUgbW9yZSBsaWtlIGEgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBlcnJvclxuICAgIGlmIChfLmlzVW5kZWZpbmVkKGVyci5jb2RlKSkge1xuICAgICAgZXJyLmNvZGUgPSAnSU5WQUxJRF9UWVBFJztcbiAgICAgIGVyci5tZXNzYWdlID0gJ0V4cGVjdGVkIHR5cGUgJyArIHR5cGUgKyAnIGJ1dCBmb3VuZCB0eXBlICcgKyBwVHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyLm1lc3NhZ2UgPSAnT2JqZWN0IGRpZG5cXCd0IHBhc3MgdmFsaWRhdGlvbiBmb3IgZm9ybWF0ICcgKyBzY2hlbWEuZm9ybWF0ICsgJzogJyArIHBWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBGb3JtYXQgYW5kIHR5cGUgZXJyb3JzIHJlc2VtYmxlIEpTT04gU2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzXG4gICAgZXJyLmZhaWxlZFZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGVyci5wYXRoID0gW107XG5cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgdHlwZSBvciBgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM3Lmh0bWwjc2VjNy4yLjFcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gaGVhZGVycyAtIFRoZSBoZWFkZXJzIHRvIHNlYXJjaFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb250ZW50IHR5cGVcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0Q29udGVudFR5cGUgPSBmdW5jdGlvbiAoaGVhZGVycykge1xuICByZXR1cm4gZ2V0SGVhZGVyVmFsdWUoaGVhZGVycywgJ2NvbnRlbnQtdHlwZScpIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoZWFkZXIgdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgY2FzZSBvZiB0aGUgcHJvdmlkZWQvcmVxdWVzdGVkIGhlYWRlciBuYW1lLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBoZWFkZXJzIC0gVGhlIGhlYWRlcnMgdG8gc2VhcmNoXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyTmFtZSAtIFRoZSBoZWFkZXIgbmFtZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoZWFkZXIgdmFsdWUgb3IgYHVuZGVmaW5lZGAgaWYgaXQgaXMgbm90IGZvdW5kXG4gKi9cbnZhciBnZXRIZWFkZXJWYWx1ZSA9IG1vZHVsZS5leHBvcnRzLmdldEhlYWRlclZhbHVlID0gZnVuY3Rpb24gKGhlYWRlcnMsIGhlYWRlck5hbWUpIHtcbiAgLy8gRGVmYXVsdCB0byBhbiBlbXB0eSBvYmplY3RcbiAgaGVhZGVycyA9IGhlYWRlcnMgfHwge307XG5cbiAgdmFyIGxjSGVhZGVyTmFtZSA9IGhlYWRlck5hbWUudG9Mb3dlckNhc2UoKTtcbiAgdmFyIHJlYWxIZWFkZXJOYW1lID0gXy5maW5kKE9iamVjdC5rZXlzKGhlYWRlcnMpLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4gICAgcmV0dXJuIGhlYWRlci50b0xvd2VyQ2FzZSgpID09PSBsY0hlYWRlck5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiBoZWFkZXJzW3JlYWxIZWFkZXJOYW1lXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEganNvbi1zY2hlbWEtZmFrZXIgbW9ja2VyLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBqc29uLXNjaGVtYS1mYWtlciBtb2NrZXIgdG8gdXNlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEpTT05TY2hlbWFNb2NrZXIgPSBnZXRKU09OU2NoZW1hTW9ja2VyO1xuXG5tb2R1bGUuZXhwb3J0cy5nZXRTYW1wbGUgPSBmdW5jdGlvbiAoc2NoZW1hKSB7XG4gIHZhciBzYW1wbGU7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYSkpIHtcbiAgICBpZiAoc2NoZW1hLnR5cGUgPT09ICdmaWxlJykge1xuICAgICAgc2FtcGxlID0gJ1RoaXMgaXMgc2FtcGxlIGNvbnRlbnQgZm9yIHRoZSBcImZpbGVcIiB0eXBlLic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNhbXBsZSA9IGdldEpTT05TY2hlbWFNb2NrZXIoKShzY2hlbWEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzYW1wbGU7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHotc2NoZW1hIHZhbGlkYXRvci5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgei1zY2hlbWEgdmFsaWRhdG9yIHRvIHVzZVxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRKU09OU2NoZW1hVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4ganNvblNjaGVtYVZhbGlkYXRvcjtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnBhcmFtZXRlckxvY2F0aW9ucyA9IFsnYm9keScsICdmb3JtRGF0YScsICdoZWFkZXInLCAncGF0aCcsICdxdWVyeSddO1xuXG4vKipcbiAqIFByb2Nlc3MgdmFsaWRhdG9ycy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHxtb2R1bGU6U3dheX5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHRhcmdldCAtIFRoZSB0aGluZyBiZWluZyB2YWxpZGF0ZWRcbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+QXBpRGVmaW5pdGlvbnxtb2R1bGU6U3dheX5PcGVyYXRpb258bW9kdWxlOlN3YXl+UmVzcG9uc2V9IGNhbGxlciAtIFRoZSBvYmplY3QgcmVxdWVzdGluZyB2YWxpZGF0aW9uIF8oY2FuIGJlIGB1bmRlZmluZWRgKV9cbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+RG9jdW1lbnRWYWxpZGF0aW9uRnVuY3Rpb25bXXxtb2R1bGU6U3dheX5SZXF1ZXN0VmFsaWRhdGlvbkZ1bmN0aW9uW118bW9kdWxlOlN3YXl+UmVzcG9zZVZhbGlkYXRpb25GdW5jdGlvbltdfSB2YWxpZGF0b3JzIC0gVGhlIHZhbGlkYXRvcnNcbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+VmFsaWRhdGlvblJlc3VsdHN9IHJlc3VsdHMgLSBUaGUgY3VtdWxhdGl2ZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAqL1xubW9kdWxlLmV4cG9ydHMucHJvY2Vzc1ZhbGlkYXRvcnMgPSBmdW5jdGlvbiAodGFyZ2V0LCBjYWxsZXIsIHZhbGlkYXRvcnMsIHJlc3VsdHMpIHtcbiAgXy5lYWNoKHZhbGlkYXRvcnMsIGZ1bmN0aW9uICh2YWxpZGF0b3IpIHtcbiAgICB2YXIgdkFyZ3MgPSBbdGFyZ2V0XTtcbiAgICB2YXIgdlJlc3VsdHM7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoY2FsbGVyKSkge1xuICAgICAgdkFyZ3MucHVzaChjYWxsZXIpO1xuICAgIH1cblxuICAgIHZSZXN1bHRzID0gdmFsaWRhdG9yLmFwcGx5KHVuZGVmaW5lZCwgdkFyZ3MpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZSZXN1bHRzKSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZSZXN1bHRzLmVycm9ycykgJiYgdlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaC5hcHBseShyZXN1bHRzLmVycm9ycywgdlJlc3VsdHMuZXJyb3JzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZSZXN1bHRzLndhcm5pbmdzKSAmJiB2UmVzdWx0cy53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdHMud2FybmluZ3MucHVzaC5hcHBseShyZXN1bHRzLndhcm5pbmdzLCB2UmVzdWx0cy53YXJuaW5ncyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gdmFsaWRhdG9yIC0gVGhlIGZvcm1hdCB2YWxpZGF0b3IgKihTZWUgW1pTY2hlbWEgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL3phZ2dpbm8vei1zY2hlbWEjcmVnaXN0ZXItYS1jdXN0b20tZm9ybWF0KSkqXG4gKi9cbm1vZHVsZS5leHBvcnRzLnJlZ2lzdGVyRm9ybWF0ID0gcmVnaXN0ZXJGb3JtYXQ7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdCBnZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZW5lcmF0b3IgLSBUaGUgZm9ybWF0IGdlbmVyYXRvciAqKFNlZSBbanNvbi1zY2hlbWEtbW9ja2VyIEN1c3RvbSBGb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLXNjaGVtYS1mYWtlci9qc29uLXNjaGVtYS1mYWtlciNjdXN0b20tZm9ybWF0cykpKlxuICovXG5tb2R1bGUuZXhwb3J0cy5yZWdpc3RlckZvcm1hdEdlbmVyYXRvciA9IHJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yO1xuXG4vKipcbiAqIFJlcGxhY2VzIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBwcm92aWRlZCBvYmplY3Qgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iaiAtIFRoZSBKYXZhU2NyaXB0IG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cy5yZW1vdmVDaXJjdWxhcnMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHdhbGsob2JqLCBmdW5jdGlvbiAobm9kZSwgcGF0aCwgYW5jZXN0b3JzKSB7XG4gICAgLy8gUmVwbGFjZSBjaXJjdWxhcnMgd2l0aCB7fVxuICAgIGlmIChhbmNlc3RvcnMuaW5kZXhPZihub2RlKSA+IC0xKSB7XG4gICAgICBfLnNldChvYmosIHBhdGgsIHt9KTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgY3VzdG9tIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqL1xubW9kdWxlLmV4cG9ydHMudW5yZWdpc3RlckZvcm1hdCA9IHVucmVnaXN0ZXJGb3JtYXQ7XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXQgZ2VuZXJhdG9yXG4gKi9cbm1vZHVsZS5leHBvcnRzLnVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgPSB1bnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yO1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcHJvdmlkZWQgdmFsdWUgYWdhaW5zdCB0aGUgSlNPTiBTY2hlbWEgYnkgbmFtZSBvciB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsaWRhdG9yIC0gVGhlIEpTT04gU2NoZW1hIHZhbGlkYXRvciBjcmVhdGVkIHZpYSB7QGxpbmsgI2NyZWF0ZUpTT05WYWxpZGF0b3J9XG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hIC0gVGhlIEpTT04gU2NoZW1hXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gKlxuICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3Mgb2YgdGhlIHZhbGlkYXRpb25cbiAqL1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hID0gZnVuY3Rpb24gKHZhbGlkYXRvciwgc2NoZW1hLCB2YWx1ZSkge1xuICBzY2hlbWEgPSBfLmNsb25lRGVlcChzY2hlbWEpOyAvLyBDbG9uZSB0aGUgc2NoZW1hIGFzIHotc2NoZW1hIGFsdGVycyB0aGUgcHJvdmlkZWQgZG9jdW1lbnRcblxuICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBpZiAoIXZhbGlkYXRvci52YWxpZGF0ZSh2YWx1ZSwgc2NoZW1hKSkge1xuICAgIHJlc3BvbnNlLmVycm9ycyA9IF8ubWFwKHZhbGlkYXRvci5nZXRMYXN0RXJyb3JzKCksIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIG5vcm1hbGl6ZUVycm9yKGVycik7XG5cbiAgICAgIHJldHVybiBlcnI7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgY29udGVudCB0eXBlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50VHlwZSAtIFRoZSBDb250ZW50LVR5cGUgdmFsdWUgb2YgdGhlIHJlcXVlc3QvcmVzcG9uc2VcbiAqIEBwYXJhbSB7c3RyaW5nW119IHN1cHBvcnRlZFR5cGVzIC0gVGhlIHN1cHBvcnRlZCAoZGVjbGFyZWQpIENvbnRlbnQtVHlwZSB2YWx1ZXMgZm9yIHRoZSByZXF1ZXN0L3Jlc3BvbnNlXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzdWx0cyAtIFRoZSByZXN1bHRzIG9iamVjdCB0byB1cGRhdGUgaW4gdGhlIGV2ZW50IG9mIGFuIGludmFsaWQgY29udGVudCB0eXBlXG4gKi9cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlQ29udGVudFR5cGUgPSBmdW5jdGlvbiAoY29udGVudFR5cGUsIHN1cHBvcnRlZFR5cGVzLCByZXN1bHRzKSB7XG4gIHZhciByYXdDb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuXG4gIGlmICghXy5pc1VuZGVmaW5lZChjb250ZW50VHlwZSkpIHtcbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzE0Lmh0bWwjc2VjMTQuMTdcbiAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7JylbMF07IC8vIFN0cmlwIHRoZSBwYXJhbWV0ZXIocykgZnJvbSB0aGUgY29udGVudCB0eXBlXG4gIH1cblxuICAvLyBDaGVjayBmb3IgZXhhY3QgbWF0Y2ggb3IgbWltZS10eXBlIG9ubHkgbWF0Y2hcbiAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRUeXBlcywgcmF3Q29udGVudFR5cGUpID09PSAtMSAmJiBfLmluZGV4T2Yoc3VwcG9ydGVkVHlwZXMsIGNvbnRlbnRUeXBlKSA9PT0gLTEpIHtcbiAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgIGNvZGU6ICdJTlZBTElEX0NPTlRFTlRfVFlQRScsXG4gICAgICBtZXNzYWdlOiAnSW52YWxpZCBDb250ZW50LVR5cGUgKCcgKyBjb250ZW50VHlwZSArICcpLiAgVGhlc2UgYXJlIHN1cHBvcnRlZDogJyArXG4gICAgICAgIHN1cHBvcnRlZFR5cGVzLmpvaW4oJywgJyksXG4gICAgICBwYXRoOiBbXVxuICAgIH0pO1xuICB9XG59O1xuXG4vKipcbiAqIFdhbGsgYW4gb2JqZWN0IGFuZCBpbnZva2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGZvciBlYWNoIG5vZGUuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgb2JqZWN0IHRvIHdhbGtcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtmbl0gLSBUaGUgZnVuY3Rpb24gdG8gaW52b2tlXG4gKi9cbnZhciB3YWxrID0gbW9kdWxlLmV4cG9ydHMud2FsayA9IGZ1bmN0aW9uIChvYmosIGZuKSB7XG4gIHZhciBjYWxsRm4gPSBfLmlzRnVuY3Rpb24oZm4pO1xuXG4gIGZ1bmN0aW9uIGRvV2FsayAoYW5jZXN0b3JzLCBub2RlLCBwYXRoKSB7XG4gICAgaWYgKGNhbGxGbikge1xuICAgICAgZm4obm9kZSwgcGF0aCwgYW5jZXN0b3JzKTtcbiAgICB9XG5cbiAgICAvLyBXZSBkbyBub3QgcHJvY2VzcyBjaXJjdWxhciBvYmplY3RzIGFnYWluXG4gICAgaWYgKGFuY2VzdG9ycy5pbmRleE9mKG5vZGUpID09PSAtMSkge1xuICAgICAgYW5jZXN0b3JzLnB1c2gobm9kZSk7XG5cbiAgICAgIGlmIChfLmlzQXJyYXkobm9kZSkgfHwgXy5pc1BsYWluT2JqZWN0KG5vZGUpKSB7XG4gICAgICAgIF8uZWFjaChub2RlLCBmdW5jdGlvbiAobWVtYmVyLCBpbmRleE9yS2V5KSB7XG4gICAgICAgICAgZG9XYWxrKGFuY2VzdG9ycywgbWVtYmVyLCBwYXRoLmNvbmNhdChpbmRleE9yS2V5LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYW5jZXN0b3JzLnBvcCgpO1xuICB9XG5cbiAgZG9XYWxrKFtdLCBvYmosIFtdKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5IGFyZSBvZiB0eXBlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGFyciAtIFRoZSBhcnJheVxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtTmFtZSAtIFRoZSBwYXJhbWV0ZXIgbmFtZVxuICovXG5tb2R1bGUuZXhwb3J0cy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMgPSBmdW5jdGlvbiAoYXJyLCBwYXJhbU5hbWUpIHtcbiAgXy5mb3JFYWNoKGFyciwgZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24oaXRlbSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuJyArIHBhcmFtTmFtZSArICcgYXQgaW5kZXggJyArIGluZGV4ICsgJyBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVxdWVzdC9yZXNwb25zZSBzdHJpY3RseSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpTd2F5fk9wZXJhdGlvbnxtb2R1bGU6U3dheX5SZXNwb25zZX0gb3BPclJlcyAtIFRoZSBTd2F5IG9wZXJhdGlvbiBvciByZXNwb25zZVxuICogQHBhcmFtIHtvYmplY3R8bW9kdWxlOlN3YXl+U2VydmVyUmVzcG9uc2VXcmFwcGVyfSByZXFPclJlcyAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqIG9yIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlIG9yICoocmVzcG9uc2UgbGlrZSBvYmplY3QpKlxuICogQHBhcmFtIHtvYmplY3R9IHN0cmljdE1vZGUgLSBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgc3RyaWN0IG1vZGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5mb3JtRGF0YSAtIFdoZXRoZXIgb3Igbm90IGZvcm0gZGF0YSBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgc3RyaWN0bHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5oZWFkZXIgLSBXaGV0aGVyIG9yIG5vdCBoZWFkZXIgcGFyYW1ldGVycyBzaG91bGQgYmUgdmFsaWRhdGVkIHN0cmljdGx5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucXVlcnkgLSBXaGV0aGVyIG9yIG5vdCBxdWVyeSBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgc3RyaWN0bHlcbiAqIEBwYXJhbSB7bW9kdWxlOlN3YXl+VmFsaWRhdGlvblJlc3VsdHN9IHJlc3VsdHMgLSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlU3RyaWN0TW9kZSA9IGZ1bmN0aW9uIChvcE9yUmVzLCByZXFPclJlcywgc3RyaWN0TW9kZSwgcmVzdWx0cykge1xuICB2YXIgZGVmaW5lZFBhcmFtZXRlcnMgPSB7XG4gICAgZm9ybURhdGE6IFtdLFxuICAgIGhlYWRlcjogW10sXG4gICAgcXVlcnk6IFtdXG4gIH07XG4gIHZhciBtb2RlID0gb3BPclJlcy5jb25zdHJ1Y3Rvci5uYW1lID09PSAnT3BlcmF0aW9uJyA/ICdyZXEnIDogJ3Jlcyc7XG4gIHZhciBzdHJpY3RNb2RlVmFsaWRhdGlvbiA9IHtcbiAgICBmb3JtRGF0YTogZmFsc2UsXG4gICAgaGVhZGVyOiBmYWxzZSxcbiAgICBxdWVyeTogZmFsc2VcbiAgfTtcblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc3RyaWN0TW9kZSkpIHtcbiAgICBpZiAoIV8uaXNCb29sZWFuKHN0cmljdE1vZGUpICYmICFfLmlzUGxhaW5PYmplY3Qoc3RyaWN0TW9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuc3RyaWN0TW9kZSBtdXN0IGJlIGEgYm9vbGVhbiBvciBhbiBvYmplY3QnKTtcbiAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChzdHJpY3RNb2RlKSkge1xuICAgICAgXy5lYWNoKFsnZm9ybURhdGEnLCAnaGVhZGVyJywgJ3F1ZXJ5J10sIGZ1bmN0aW9uIChsb2NhdGlvbikge1xuICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc3RyaWN0TW9kZVtsb2NhdGlvbl0pKSB7XG4gICAgICAgICAgaWYgKCFfLmlzQm9vbGVhbihzdHJpY3RNb2RlW2xvY2F0aW9uXSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuc3RyaWN0TW9kZS4nICsgbG9jYXRpb24gKyAnIG11c3QgYmUgYSBib29sZWFuJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uW2xvY2F0aW9uXSA9IHN0cmljdE1vZGVbbG9jYXRpb25dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChzdHJpY3RNb2RlID09PSB0cnVlKSB7XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5mb3JtRGF0YSA9IHRydWU7XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5oZWFkZXIgPSB0cnVlO1xuICAgICAgc3RyaWN0TW9kZVZhbGlkYXRpb24ucXVlcnkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9ubHkgcHJvY2VzcyB0aGUgcGFyYW1ldGVycyBpZiBuZWNlc3NhcnlcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLmZvcm1EYXRhID09PSB0cnVlIHx8XG4gICAgICBzdHJpY3RNb2RlVmFsaWRhdGlvbi5oZWFkZXIgPT09IHRydWUgfHxcbiAgICAgIHN0cmljdE1vZGVWYWxpZGF0aW9uLnF1ZXJ5ID09PSB0cnVlKSB7XG4gICAgXy5lYWNoKChtb2RlID09PSAncmVxJyA/IG9wT3JSZXMgOiBvcE9yUmVzLm9wZXJhdGlvbk9iamVjdCkuZ2V0UGFyYW1ldGVycygpLCBmdW5jdGlvbiAocGFyYW1ldGVyKSB7XG4gICAgICBpZiAoXy5pc0FycmF5KGRlZmluZWRQYXJhbWV0ZXJzW3BhcmFtZXRlci5pbl0pKSB7XG4gICAgICAgIGRlZmluZWRQYXJhbWV0ZXJzW3BhcmFtZXRlci5pbl0ucHVzaChwYXJhbWV0ZXIubmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0aW5nIGZvcm0gZGF0YSBvbmx5IG1hdHRlcnMgZm9yIHJlcXVlc3RzXG4gIGlmIChzdHJpY3RNb2RlVmFsaWRhdGlvbi5mb3JtRGF0YSA9PT0gdHJ1ZSAmJiBtb2RlID09PSAncmVxJykge1xuICAgIGZpbmRFeHRyYVBhcmFtZXRlcnMoZGVmaW5lZFBhcmFtZXRlcnMuZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmlzUGxhaW5PYmplY3QocmVxT3JSZXMuYm9keSkgPyBPYmplY3Qua2V5cyhyZXFPclJlcy5ib2R5KSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1EYXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gQWx3YXlzIHZhbGlkYXRlIHRoZSBoZWFkZXJzIGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzXG4gIGlmIChzdHJpY3RNb2RlVmFsaWRhdGlvbi5oZWFkZXIgPT09IHRydWUpIHtcbiAgICBmaW5kRXh0cmFQYXJhbWV0ZXJzKGRlZmluZWRQYXJhbWV0ZXJzLmhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNQbGFpbk9iamVjdChyZXFPclJlcy5oZWFkZXJzKSA/IE9iamVjdC5rZXlzKHJlcU9yUmVzLmhlYWRlcnMpIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGluZyB0aGUgcXVlcnkgc3RyaW5nIG9ubHkgbWF0dGVycyBmb3IgcmVxdWVzdHNcbiAgaWYgKHN0cmljdE1vZGVWYWxpZGF0aW9uLnF1ZXJ5ID09PSB0cnVlICYmIG1vZGUgPT09ICdyZXEnKSB7XG4gICAgZmluZEV4dHJhUGFyYW1ldGVycyhkZWZpbmVkUGFyYW1ldGVycy5xdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNQbGFpbk9iamVjdChyZXFPclJlcy5xdWVyeSkgPyBPYmplY3Qua2V5cyhyZXFPclJlcy5xdWVyeSkgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzKTtcbiAgfVxufTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnc3dheTphcGknKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgndXJsJykucGFyc2U7XG52YXIgUGF0aCA9IHJlcXVpcmUoJy4vcGF0aCcpO1xudmFyIHZhbGlkYXRvcnMgPSByZXF1aXJlKCcuLi92YWxpZGF0aW9uL3ZhbGlkYXRvcnMnKTtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBEZWZpbml0aW9uIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiBbT3BlbkFQSSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI29wZW5hcGktb2JqZWN0KS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcmlnaW5hbCBPcGVuQVBJIGRlZmluaXRpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkIC0gVGhlIE9wZW5BUEkgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVtb3RlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7b2JqZWN0fSByZWZlcmVuY2VzIC0gVGhlIGxvY2F0aW9uIGFuZCByZXNvbHV0aW9uIG9mIHRoZSByZXNvbHZlZCByZWZlcmVuY2VzIGluIHRoZSBPcGVuQVBJIGRlZmluaXRpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgcGFzc2VkIHRvIEFwaURlZmluaXRpb24uY3JlYXRlXG4gKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGN1c3RvbUZvcm1hdHMgLSBUaGUga2V5L3ZhbHVlIHBhaXIgb2YgY3VzdG9tIGZvcm1hdHMgKihUaGUga2V5cyBhcmUgdGhlIGZvcm1hdCBuYW1lIGFuZCB0aGUgdmFsdWVzXG4gKiBhcmUgYXN5bmMgZnVuY3Rpb25zLiAgU2VlIFtaU2NoZW1hIEN1c3RvbSBGb3JtYXRzXShodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYSNyZWdpc3Rlci1hLWN1c3RvbS1mb3JtYXQpKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBjdXN0b21Gb3JtYXRHZW5lcmF0b3JzIC0gVGhlIGtleS92YWx1ZSBwYWlyIG9mIGN1c3RvbSBmb3JtYXQgZ2VuZXJhdG9ycyAqKFRoZSBrZXlzIGFyZSB0aGUgZm9ybWF0IG5hbWUgYW5kIHRoZSB2YWx1ZXNcbiAqIGFyZSBmdW5jdGlvbnMuICBTZWUgW2pzb24tc2NoZW1hLW1vY2tlciBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vanNvbi1zY2hlbWEtZmFrZXIvanNvbi1zY2hlbWEtZmFrZXIjY3VzdG9tLWZvcm1hdHMpKSpcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuRG9jdW1lbnRWYWxpZGF0aW9uRnVuY3Rpb25bXX0gY3VzdG9tVmFsaWRhdG9ycyAtIFRoZSBhcnJheSBvZiBjdXN0b20gdmFsaWRhdG9yc1xuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgb3JpZ2luYWwgT3BlbkFQSSBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCAtIFRoZSBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCBvbmx5IGl0cyByZW1vdGUgcmVmZXJlbmNlcyByZXNvbHZlZCAqKFRoaXNcbiAqIG1lYW5zIGFsbCByZWZlcmVuY2VzIHRvIGV4dGVybmFsL3JlbW90ZSBkb2N1bWVudHMgYXJlIHJlcGxhY2VkIHdpdGggaXRzIGRlcmVmZXJlbmNlZCB2YWx1ZSBidXQgYWxsIGxvY2FsIHJlZmVyZW5jZXNcbiAqIGFyZSBsZWZ0IHVucmVzb2x2ZWQuKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCBhbGwgb2YgaXRzIHJlc29sdmFibGUgcmVmZXJlbmNlcyByZXNvbHZlZFxuICogKihUaGlzIG1lYW5zIHRoYXQgYWxsIHJlc29sdmFibGUgcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGVpciBkZXJlZmVyZW5jZWQgdmFsdWUuKSpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkb2N1bWVudGF0aW9uVXJsIC0gVGhlIFVSTCB0byB0aGUgT3BlbkFQSSBkb2N1bWVudGF0aW9uXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5LlBhdGhbXX0gcGF0aE9iamVjdHMgLSBUaGUgdW5pcXVlIGBQYXRoYCBvYmplY3RzXG4gKiBAcHJvcGVydHkge29iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3JcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSByZWZlcmVuY2VzIC0gVGhlIHJlZmVyZW5jZSBtZXRhZGF0YSAqKFNlZSBbSnNvblJlZnN+UmVzb2x2ZWRSZWZEZXRhaWxzXShodHRwczovL2dpdGh1Yi5jb20vd2hpdGxvY2tqYy9qc29uLXJlZnMvYmxvYi9tYXN0ZXIvZG9jcy9BUEkubWQjbW9kdWxlX0pzb25SZWZzLi5SZXNvbHZlZFJlZkRldGFpbHMpKSpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gVGhlIE9wZW5BUEkgdmVyc2lvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBBcGlEZWZpbml0aW9uIChkZWZpbml0aW9uLCBkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCwgcmVmZXJlbmNlcywgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgZGVidWcoJ0NyZWF0aW5nIEFwaURlZmluaXRpb24gZnJvbSAlcycsXG4gICAgICAgIF8uaXNTdHJpbmcob3B0aW9ucy5kZWZpbml0aW9uKSA/IG9wdGlvbnMuZGVmaW5pdGlvbiA6ICd0aGUgcHJvdmlkZWQgT3BlbkFQSSBkZWZpbml0aW9uJyk7XG5cbiAgLy8gQXNzaWduIHRoaXMgc28gb3RoZXIgb2JqZWN0IGNhbiB1c2UgaXRcbiAgdGhpcy5fZGVidWcgPSBkZWJ1ZztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmN1c3RvbUZvcm1hdHMgPSB7fTtcbiAgdGhpcy5jdXN0b21Gb3JtYXRHZW5lcmF0b3JzID0ge307XG4gIHRoaXMuY3VzdG9tVmFsaWRhdG9ycyA9IFtdO1xuICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQ7XG4gIHRoaXMuZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCA9IGRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQ7XG4gIHRoaXMuZG9jdW1lbnRhdGlvblVybCA9ICdodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCc7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gIHRoaXMudmVyc2lvbiA9ICcyLjAnO1xuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gdGhlIE9wZW5BUEkgT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbik7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvcm1hdHNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tRm9ybWF0cywgXy5iaW5kKEFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0LCB0aGlzKSk7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvcm1hdHNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tRm9ybWF0R2VuZXJhdG9ycywgXy5iaW5kKEFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yLCB0aGlzKSk7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIHZhbGlkYXRvcnNcbiAgXy5lYWNoKG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgXy5iaW5kKEFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyVmFsaWRhdG9yLCB0aGlzKSk7XG5cbiAgZGVidWcoJyAgUGF0aHM6Jyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBQYXRoIG9iamVjdHNcbiAgdGhpcy5wYXRoT2JqZWN0cyA9IF8ubWFwKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAocGF0aERlZiwgcGF0aCkge1xuICAgIHJldHVybiBuZXcgUGF0aCh0aGF0LFxuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBfLmdldChkZWZpbml0aW9uUmVtb3Rlc1Jlc29sdmVkLCBbJ3BhdGhzJywgcGF0aF0pLFxuICAgICAgICAgICAgICAgICAgICBwYXRoRGVmLFxuICAgICAgICAgICAgICAgICAgICBbJ3BhdGhzJywgcGF0aF0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcGVyYXRpb24gZm9yIHRoZSBnaXZlbiBwYXRoIGFuZCBvcGVyYXRpb24uXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMgdXNlZCB3aGVuIGByZXFPclBhdGhgIGlzIGFuIGBodHRwLkNsaWVudFJlcXVlc3RgICoob3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgbWV0aG9kYFxuICogICAqIGBvcmlnaW5hbFVybGBcbiAqICAgKiBgdXJsYFxuICpcbiAqICooU2VlOiB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2NsaWVudHJlcXVlc3R9KSpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IGlkT3JQYXRoT3JSZXEgLSBUaGUgT3BlbkFQSSBvcGVhcnRpb24gaWQsIHBhdGggc3RyaW5nIG9yIHRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3JcbiAqIGVxdWl2YWxlbnQpKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXRob2RdIC0gVGhlIE9wZW5BUEkgb3BlcmF0aW9uIG1ldGhvZCBfKG5vdCB1c2VkIHdoZW4gcHJvdmlkaW5nIGFuIG9wZXJhdGlvbiBpZClfXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbn0gVGhlIGBPcGVyYXRpb25gIGZvciB0aGUgcHJvdmlkZWQgb3BlcmF0aW9uIGlkLCBvciBwYXRoIGFuZCBtZXRob2Qgb3IgYHVuZGVmaW5lZGAgaWZcbiAqIHRoZXJlIGlzIG5vIG9wZXJhdGlvbiBmb3IgdGhhdCBvcGVyYXRpb24gaWQsIG9yIHBhdGggYW5kIG1ldGhvZCBjb21iaW5hdGlvblxuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS5nZXRPcGVyYXRpb24gPSBmdW5jdGlvbiAoaWRPclBhdGhPclJlcSwgbWV0aG9kKSB7XG4gIHZhciBwYXRoT2JqZWN0O1xuICB2YXIgb3BlcmF0aW9uO1xuXG4gIGlmIChfLmlzT2JqZWN0KGlkT3JQYXRoT3JSZXEpKSB7XG4gICAgbWV0aG9kID0gaWRPclBhdGhPclJlcS5tZXRob2Q7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChtZXRob2QpKSB7XG4gICAgXy5lYWNoKHRoaXMuZ2V0UGF0aHMoKSwgZnVuY3Rpb24gKHBhdGgpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wZXJhdGlvbikpIHtcbiAgICAgICAgb3BlcmF0aW9uID0gcGF0aC5nZXRPcGVyYXRpb24oaWRPclBhdGhPclJlcSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aE9iamVjdCA9IHRoaXMuZ2V0UGF0aChpZE9yUGF0aE9yUmVxKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXRoT2JqZWN0KSkge1xuICAgICAgb3BlcmF0aW9uID0gcGF0aE9iamVjdC5nZXRPcGVyYXRpb24obWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3BlcmF0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBvcGVyYXRpb25zIGZvciB0aGUgcHJvdmlkZWQgcGF0aCBvciBhbGwgb3BlcmF0aW9ucyBpbiB0aGUgQVBJLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgT3BlbkFQSSBwYXRoXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbltdfSBBbGwgYE9wZXJhdGlvbmAgb2JqZWN0cyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggb3IgYWxsIEFQSSBvcGVyYXRpb25zXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLmdldE9wZXJhdGlvbnMgPSBmdW5jdGlvbiAocGF0aCkge1xuICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICB2YXIgcGF0aE9iamVjdDtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXRoKSkge1xuICAgIF8uZWFjaCh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAocE9iamVjdCkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoLmFwcGx5KG9wZXJhdGlvbnMsIHBPYmplY3QuZ2V0T3BlcmF0aW9ucygpKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoT2JqZWN0ID0gdGhpcy5nZXRQYXRoKHBhdGgpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhdGhPYmplY3QpKSB7XG4gICAgICBvcGVyYXRpb25zID0gcGF0aE9iamVjdC5nZXRPcGVyYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbnM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIG9wZXJhdGlvbnMgZm9yIHRoZSBwcm92aWRlZCB0YWcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFt0YWddIC0gVGhlIE9wZW5BUEkgdGFnXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5Lk9wZXJhdGlvbltdfSBBbGwgYE9wZXJhdGlvbmAgb2JqZWN0cyBmb3IgdGhlIHByb3ZpZGVkIHRhZ1xuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS5nZXRPcGVyYXRpb25zQnlUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBfLnJlZHVjZSh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9ucywgcGF0aE9iamVjdCkge1xuICAgIG9wZXJhdGlvbnMucHVzaC5hcHBseShvcGVyYXRpb25zLCBwYXRoT2JqZWN0LmdldE9wZXJhdGlvbnNCeVRhZyh0YWcpKTtcblxuICAgIHJldHVybiBvcGVyYXRpb25zO1xuICB9LCBbXSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGF0aCBvciByZXF1ZXN0LlxuICpcbiAqICoqTm90ZToqKiBCZWxvdyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHVzZWQgd2hlbiBgcmVxT3JQYXRoYCBpcyBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCAqKG9yIGVxdWl2YWxlbnQpKjpcbiAqXG4gKiAgICogYG9yaWdpbmFsVXJsYFxuICogICAqIGB1cmxgXG4gKlxuICogKihTZWU6IHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX2NsYXNzX2h0dHBfY2xpZW50cmVxdWVzdH0pKlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcGF0aE9yUmVxIC0gVGhlIE9wZW5BUEkgcGF0aCBzdHJpbmcgb3IgdGhlIGh0dHAgY2xpZW50IHJlcXVlc3QgKihvciBlcXVpdmFsZW50KSpcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGF0aH0gVGhlIGNvcnJlc3BvbmRpbmcgYFBhdGhgIG9iamVjdCBmb3IgdGhlIHJlcXVlc3RlZCBwYXRoIG9yIHJlcXVlc3RcbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uIChwYXRoT3JSZXEpIHtcbiAgdmFyIGxhc3RJbmRleCA9IC0xO1xuICB2YXIgbmV4dEluZGV4ID0gLTE7XG4gIHZhciBtYXRjaGVzO1xuICB2YXIgdXJsO1xuXG4gIGlmIChfLmlzT2JqZWN0KHBhdGhPclJlcSkpIHtcbiAgICB1cmwgPSBwYXJzZVVybChwYXRoT3JSZXEub3JpZ2luYWxVcmwgfHwgcGF0aE9yUmVxLnVybCkucGF0aG5hbWU7XG5cbiAgICAvLyBGaW5kIGFsbCBtYXRjaGluZyBwYXRoc1xuICAgIG1hdGNoZXMgPSBfLnJlZHVjZSh0aGlzLnBhdGhPYmplY3RzLCBmdW5jdGlvbiAobmV3TWF0Y2hlcywgcGF0aE9iamVjdCwgaW5kZXgpIHtcbiAgICAgIHZhciBpc01hdGNoID0gXy5pc0FycmF5KHBhdGhPYmplY3QucmVnZXhwLmV4ZWModXJsKSk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIG5ld01hdGNoZXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgIHNlZ21lbnRzOiBwYXRoT2JqZWN0LnBhdGguc3BsaXQoJy8nKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3TWF0Y2hlcztcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBUT0RPOiBMb2cgYWxsIG1hdGNoZXNcblxuICAgIHdoaWxlIChtYXRjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIG1hdGNoZXMgPSBfLnJlZHVjZShtYXRjaGVzLCBmdW5jdGlvbiAobmV3TWF0Y2hlcywgbWF0Y2gpIHtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gXy5maW5kSW5kZXgobWF0Y2guc2VnbWVudHMsIGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIF8uc3RhcnRzV2l0aChzZWdtZW50LCAneycpICYmIF8uZW5kc1dpdGgoc2VnbWVudCwgJ30nKTtcbiAgICAgICAgfSwgbGFzdEluZGV4ICsgMSk7XG5cbiAgICAgICAgLy8gQ29tcGxldGUgc3RhdGljIG1hdGNoIHNvIHVzZSBzb21lIHZhbHVlIHRoYXQgY2FuJ3QgYmUgZXhjZWVkZWRcbiAgICAgICAgaWYgKG5ld0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIG5ld0luZGV4ID0gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3SW5kZXggPiBuZXh0SW5kZXgpIHtcbiAgICAgICAgICBuZXh0SW5kZXggPSBuZXdJbmRleDtcbiAgICAgICAgICBuZXdNYXRjaGVzID0gW21hdGNoXTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA9PT0gbmV4dEluZGV4KSB7XG4gICAgICAgICAgbmV3TWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdNYXRjaGVzO1xuICAgICAgfSwgW10pO1xuXG4gICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGhhdmUgdHJpZWQgdG8gZmlsdGVyIHRoZSBtYXRjaGVzIGJ1dCB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcyB0aGF0IGFyZSBpZGVudGljYWwgYW5kIGNhbm5vdFxuICAgICAgLy8gYmUgZmlsdGVyZWQgZnVydGhlci4gIFRoZSBvbmx5IGNob2ljZSBpcyB0byBjaG9vc2UgdGhlIGZpcnN0IG1hdGNoLlxuICAgICAgaWYgKGxhc3RJbmRleCA9PT0gbmV4dEluZGV4KSB7XG4gICAgICAgIG1hdGNoZXMuc3BsaWNlKDEpO1xuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogTG9nIG1hdGNoXG5cbiAgICByZXR1cm4gbWF0Y2hlcy5sZW5ndGggPiAwID8gdGhpcy5wYXRoT2JqZWN0c1ttYXRjaGVzWzBdLmluZGV4XSA6IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXy5maW5kKHRoaXMucGF0aE9iamVjdHMsIGZ1bmN0aW9uIChwYXRoT2JqZWN0KSB7XG4gICAgICByZXR1cm4gcGF0aE9yUmVxID09PSBwYXRoT2JqZWN0LnBhdGg7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgcGF0aCBvYmplY3RzIGZvciB0aGUgT3BlbkFQSSBkZWZpbml0aW9uLlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXRoW119IFRoZSBgUGF0aGAgb2JqZWN0c1xuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS5nZXRQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGF0aE9iamVjdHM7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGN1c3RvbSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybWF0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB2YWxpZGF0b3IgLSBUaGUgZm9ybWF0IHZhbGlkYXRvciAqKFNlZSBbWlNjaGVtYSBDdXN0b20gRm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vemFnZ2luby96LXNjaGVtYSNyZWdpc3Rlci1hLWN1c3RvbS1mb3JtYXQpKSpcbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUucmVnaXN0ZXJGb3JtYXQgPSBmdW5jdGlvbiAobmFtZSwgdmFsaWRhdG9yKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzU3RyaW5nKG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbmFtZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsaWRhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdGhpcy5jdXN0b21Gb3JtYXRzW25hbWVdID0gdmFsaWRhdG9yO1xuXG4gIGhlbHBlcnMucmVnaXN0ZXJGb3JtYXQobmFtZSwgdmFsaWRhdG9yKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZvcm1hdEdlbmVyYXRvciAtIFRoZSBmb3JtYXQgZ2VuZXJhdG9yICooU2VlIFtqc29uLXNjaGVtYS1tb2NrZXIgQ3VzdG9tIEZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzKSkqXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yID0gZnVuY3Rpb24gKG5hbWUsIGZvcm1hdEdlbmVyYXRvcikge1xuICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoZm9ybWF0R2VuZXJhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Zvcm1hdEdlbmVyYXRvciBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzRnVuY3Rpb24oZm9ybWF0R2VuZXJhdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Zvcm1hdEdlbmVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHRoaXMuY3VzdG9tRm9ybWF0R2VuZXJhdG9yc1tuYW1lXSA9IGZvcm1hdEdlbmVyYXRvcjtcblxuICBoZWxwZXJzLnJlZ2lzdGVyRm9ybWF0R2VuZXJhdG9yKG5hbWUsIGZvcm1hdEdlbmVyYXRvcik7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm1hdFxuICovXG5BcGlEZWZpbml0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKF8uaXNTdHJpbmcobmFtZSkpIHtcbiAgICBkZWxldGUgdGhpcy5jdXN0b21Gb3JtYXRzW25hbWVdO1xuXG4gICAgaGVscGVycy51bnJlZ2lzdGVyRm9ybWF0KG5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBjdXN0b20gZm9ybWF0IGdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtYXQgZ2VuZXJhdG9yXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLnVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoXy5pc1N0cmluZyhuYW1lKSkge1xuICAgIGRlbGV0ZSB0aGlzLmN1c3RvbUZvcm1hdEdlbmVyYXRvcnNbbmFtZV07XG5cbiAgICBoZWxwZXJzLnVucmVnaXN0ZXJGb3JtYXRHZW5lcmF0b3IobmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjdXN0b20gdmFsaWRhdG9yLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuRG9jdW1lbnRWYWxpZGF0aW9uRnVuY3Rpb259IHZhbGlkYXRvciAtIFRoZSB2YWxpZGF0b3JcbiAqXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIHRoZSB2YWxpZGF0b3IgaXMgbm90IGEgZnVuY3Rpb25cbiAqL1xuQXBpRGVmaW5pdGlvbi5wcm90b3R5cGUucmVnaXN0ZXJWYWxpZGF0b3IgPSBmdW5jdGlvbiAodmFsaWRhdG9yKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc0Z1bmN0aW9uKHZhbGlkYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWxpZGF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB0aGlzLmN1c3RvbVZhbGlkYXRvcnMucHVzaCh2YWxpZGF0b3IpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBPcGVuQVBJIGRlZmluaXRpb24uXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbkFwaURlZmluaXRpb24ucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcmVzdWx0cyA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIC8vIFZhbGlkYXRlIHRoZSBkb2N1bWVudCBzdHJ1Y3R1cmFsbHlcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyh0aGlzLCB1bmRlZmluZWQsIFt2YWxpZGF0b3JzLmpzb25TY2hlbWFWYWxpZGF0b3JdLCByZXN1bHRzKTtcblxuICAvLyBQZXJmb3JtIHJlbWFpbmluZyB2YWxpZGF0aW9uIG9ubHkgaWYgdGhlIGRvY3VtZW50IGlzIHN0cnVjdHVyYWxseSB2YWxpZFxuICBpZiAocmVzdWx0cy5lcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gUnVuIHBsdWdpbiB2YWxpZGF0b3JzXG4gICAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyh0aGlzLCB1bmRlZmluZWQsIHZhbGlkYXRvcnMuc2VtYW50aWNWYWxpZGF0b3JzLCByZXN1bHRzKTtcblxuICAgIC8vIFJ1biBjdXN0b20gdmFsaWRhdG9yc1xuICAgIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnModGhpcywgdW5kZWZpbmVkLCB0aGlzLmN1c3RvbVZhbGlkYXRvcnMsIHJlc3VsdHMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFwaURlZmluaXRpb247XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBKc29uUmVmcyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydKc29uUmVmcyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnSnNvblJlZnMnXSA6IG51bGwpO1xudmFyIFBhcmFtZXRlciA9IHJlcXVpcmUoJy4vcGFyYW1ldGVyJyk7XG52YXIgUmVzcG9uc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlJyk7XG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBPcGVyYXRpb24gb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBEbyBub3QgdXNlIGRpcmVjdGx5LlxuICpcbiAqICoqRXh0cmEgUHJvcGVydGllczoqKiBPdGhlciB0aGFuIHRoZSBkb2N1bWVudGVkIHByb3BlcnRpZXMsIHRoaXMgb2JqZWN0IGFsc28gZXhwb3NlcyBhbGwgcHJvcGVydGllcyBvZiB0aGVcbiAqIFtPcGVuQVBJIE9wZXJhdGlvbiBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI29wZXJhdGlvbk9iamVjdCkuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIFBhdGggb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBtZXRob2RcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uICooVGhlIHJhdyBvcGVyYXRpb24gZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiAqKFRoZSByYXcgb3BlcmF0aW9uIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB3ZXJlIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIGZvciB0aGlzIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIGBQYXRoYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IHBhcmFtZXRlck9iamVjdHMgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IHNlY3VyaXR5RGVmaW5pdGlvbnMgLSBUaGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGlzIG9wZXJhdGlvblxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICpcbiAqIEBtZW1iZXJvZiBtb2R1bGU6c3dheVxuICovXG5mdW5jdGlvbiBPcGVyYXRpb24gKHBhdGhPYmplY3QsIG1ldGhvZCwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgdmFyIHNlZW5QYXJhbWV0ZXJzID0gW107XG4gIHZhciB0aGF0ID0gdGhpcztcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllc1xuICB0aGlzLmNvbnN1bWVzID0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuY29uc3VtZXMgfHwgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmNvbnN1bWVzIHx8IFtdO1xuICB0aGlzLmRlZmluaXRpb24gPSBfLmNsb25lRGVlcChkZWZpbml0aW9uKTsgLy8gQ2xvbmUgc28gd2UgZG8gbm90IGFsdGVyIHRoZSBvcmlnaW5hbFxuICB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkID0gXy5jbG9uZURlZXAoZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpOyAvLyBDbG9uZSBzbyB3ZSBkbyBub3QgYWx0ZXIgdGhlIG9yaWdpbmFsXG4gIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICB0aGlzLnBhcmFtZXRlck9iamVjdHMgPSBbXTsgLy8gQ29tcHV0ZWQgYmVsb3dcbiAgdGhpcy5wYXRoT2JqZWN0ID0gcGF0aE9iamVjdDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wcm9kdWNlcyA9IGRlZmluaXRpb25GdWxseVJlc29sdmVkLnByb2R1Y2VzIHx8IHBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5wcm9kdWNlcyB8fCBbXTtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgT3BlbkFQSSBPcGVyYXRpb24gT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5wYXRoT2JqZWN0LmFwaURlZmluaXRpb24uX2RlYnVnO1xuXG4gIC8vIEFkZCB0aGUgUGFyYW1ldGVyIG9iamVjdHMgZnJvbSB0aGUgUGF0aCBvYmplY3QgdGhhdCB3ZXJlIG5vdCByZWRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0cyA9IF8ubWFwKHBhdGhPYmplY3QucGFyYW1ldGVyT2JqZWN0cywgZnVuY3Rpb24gKHBhcmFtZXRlck9iamVjdCkge1xuICAgIHNlZW5QYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyT2JqZWN0LmluICsgJzonICsgcGFyYW1ldGVyT2JqZWN0Lm5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlck9iamVjdDtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgJXMgYXQgJXMnLCB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnB0cik7XG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgQ29uc3VtZXM6Jyk7XG5cbiAgXy5lYWNoKHRoaXMuY29uc3VtZXMsIGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHRoYXQuX2RlYnVnKCcgICAgICAgICAgICAlcycsIG1pbWVUeXBlKTtcbiAgfSk7XG5cbiAgdGhpcy5fZGVidWcoJyAgICAgICAgICBQYXJhbWV0ZXJzOicpO1xuXG4gIC8vIENyZWF0ZSBQYXJhbWV0ZXIgb2JqZWN0cyBmcm9tIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb25cbiAgXy5lYWNoKGRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbURlZiwgaW5kZXgpIHtcbiAgICB2YXIga2V5ID0gcGFyYW1EZWYuaW4gKyAnOicgKyBwYXJhbURlZi5uYW1lO1xuICAgIHZhciBzZWVuSW5kZXggPSBzZWVuUGFyYW1ldGVycy5pbmRleE9mKGtleSk7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuICAgIHZhciBwYXJhbWV0ZXJPYmplY3QgPSBuZXcgUGFyYW1ldGVyKHRoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5nZXQocGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbURlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0aCk7XG5cbiAgICBpZiAoc2VlbkluZGV4ID4gLTEpIHtcbiAgICAgIHRoYXQucGFyYW1ldGVyT2JqZWN0c1tzZWVuSW5kZXhdID0gcGFyYW1ldGVyT2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGF0LnBhcmFtZXRlck9iamVjdHMucHVzaChwYXJhbWV0ZXJPYmplY3QpO1xuXG4gICAgICBzZWVuUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgfVxuICB9KTtcblxuICB0aGlzLl9kZWJ1ZygnICAgICAgICAgIFByb2R1Y2VzOicpO1xuXG4gIF8uZWFjaCh0aGlzLnByb2R1Y2VzLCBmdW5jdGlvbiAobWltZVR5cGUpIHtcbiAgICB0aGF0Ll9kZWJ1ZygnICAgICAgICAgICAgJXMnLCBtaW1lVHlwZSk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgUmVzcG9uc2VzOicpO1xuXG4gIC8vIENyZWF0ZSByZXNwb25zZSBvYmplY3RzIGZyb20gcmVzcG9uc2VzIGRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBkZWZpbml0aW9uXG4gIHRoaXMucmVzcG9uc2VPYmplY3RzID0gXy5tYXAodGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5yZXNwb25zZXMsIGZ1bmN0aW9uIChyZXNwb25zZURlZiwgY29kZSkge1xuICAgIHZhciByUGF0aCA9IHBhdGhUb0RlZmluaXRpb24uY29uY2F0KFsncmVzcG9uc2VzJywgY29kZV0pXG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5nZXQodGhhdC5wYXRoT2JqZWN0LmFwaURlZmluaXRpb24uZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgclBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICByUGF0aCk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICAgICAgU2VjdXJpdHk6Jyk7XG5cbiAgLy8gQnJpbmcgaW4gdGhlIHNlY3VyaXR5IGRlZmluaXRpb25zIGZvciBlYXNpZXIgYWNjZXNzXG5cbiAgLy8gT3ZlcnJpZGUgZ2xvYmFsIHNlY3VyaXR5IHdpdGggbG9jYWxseSBkZWZpbmVkXG4gIHZhciBzZWN1cml0eSA9IHRoaXMuc2VjdXJpdHkgfHwgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5O1xuXG4gIHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyA9IF8ucmVkdWNlKHNlY3VyaXR5LCBmdW5jdGlvbiAoZGVmcywgcmVxcykge1xuICAgIF8uZWFjaChyZXFzLCBmdW5jdGlvbiAocmVxLCBuYW1lKSB7XG4gICAgICB2YXIgZGVmID0gcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5RGVmaW5pdGlvbnMgP1xuICAgICAgICAgICAgcGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNlY3VyaXR5RGVmaW5pdGlvbnNbbmFtZV0gOlxuICAgICAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZGVmKSkge1xuICAgICAgICBkZWZzW25hbWVdID0gZGVmO1xuICAgICAgfVxuXG4gICAgICB0aGF0Ll9kZWJ1ZygnICAgICAgICAgICAgJXMgKHR5cGU6ICVzKScsIG5hbWUsIF8uaXNVbmRlZmluZWQoZGVmKSA/ICdtaXNzaW5nJzogZGVmLnR5cGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlZnM7XG4gIH0sIHt9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSBhbmQgbG9jYXRpb24gd2hlbiBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbG9jYXRpb25dIC0gVGhlIGxvY2F0aW9uICooYGluYCkqIG9mIHRoZSBwYXJhbWV0ZXIgKihVc2VkIGZvciBkaXNhbWJpZ3VhdGlvbikqXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcn0gVGhlIGBQYXJhbWV0ZXJgIG1hdGNoaW5nIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBjb21iaW5hdGlvbiBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZVxuICogaXMgbm8gbWF0Y2hcbiAqL1xuT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXIgPSBmdW5jdGlvbiAobmFtZSwgbG9jYXRpb24pIHtcbiAgcmV0dXJuIF8uZmluZCh0aGlzLnBhcmFtZXRlck9iamVjdHMsIGZ1bmN0aW9uIChwYXJhbWV0ZXJPYmplY3QpIHtcbiAgICByZXR1cm4gcGFyYW1ldGVyT2JqZWN0Lm5hbWUgPT09IG5hbWUgJiYgKF8uaXNVbmRlZmluZWQobG9jYXRpb24pID8gdHJ1ZSA6IHBhcmFtZXRlck9iamVjdC5pbiA9PT0gbG9jYXRpb24pO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgcGFyYW1ldGVycyBmb3IgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyW119IEFsbCBgUGFyYW1ldGVyYCBvYmplY3RzIGZvciB0aGUgb3BlcmF0aW9uXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGFyYW1ldGVyT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0ZWQgc3RhdHVzIGNvZGUgb3IgdGhlIGRlZmF1bHQgcmVzcG9uc2UgKihpZiBhdmFpbGFibGUpKiBpZiBub25lIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gW3N0YXR1c0NvZGU9J2RlZmF1bHQnXSAtIFRoZSBzdGF0dXMgY29kZVxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5SZXNwb25zZX0gVGhlIGBSZXNwb25zZWAgb3IgYHVuZGVmaW5lZGAgaWYgb25lIGNhbm5vdCBiZSBmb3VuZFxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFJlc3BvbnNlID0gZnVuY3Rpb24gKHN0YXR1c0NvZGUpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQoc3RhdHVzQ29kZSkpIHtcbiAgICBzdGF0dXNDb2RlID0gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKF8uaXNOdW1iZXIoc3RhdHVzQ29kZSkpIHtcbiAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZS50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIF8uZmluZCh0aGlzLmdldFJlc3BvbnNlcygpLCBmdW5jdGlvbiAocmVzcG9uc2VPYmplY3QpIHtcbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Quc3RhdHVzQ29kZSA9PT0gc3RhdHVzQ29kZTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYWxsIHJlc3BvbnNlcyBmb3IgdGhlIG9wZXJhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuUmVzcG9uc2VbXX0gQWxsIGBSZXNwb25zZWAgb2JqZWN0cyBmb3IgdGhlIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFJlc3BvbnNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVzcG9uc2VPYmplY3RzO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wb3NpdGUgc2VjdXJpdHkgZGVmaW5pdGlvbnMgZm9yIHRoaXMgb3BlcmF0aW9uLlxuICpcbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBBUEkgYW5kIGB0aGlzLnNlY3VyaXR5YCBpcyB0aGF0IGB0aGlzLnNlY3VyaXR5YCBpcyB0aGUgcmF3IGBzZWN1cml0eWAgdmFsdWUgZm9yIHRoZVxuICogb3BlcmF0aW9uIHdoZXJlIGFzIHRoaXMgQVBJIHdpbGwgcmV0dXJuIHRoZSBnbG9iYWwgYHNlY3VyaXR5YCB2YWx1ZSB3aGVuIGF2YWlsYWJsZSBhbmQgdGhpcyBvcGVyYXRpb24ncyBzZWN1cml0eVxuICogaXMgdW5kZWZpbmVkLlxuICpcbiAqIEByZXR1cm5zIHtvYmplY3RbXX0gVGhlIHNlY3VyaXR5IGZvciB0aGlzIG9wZXJhdGlvblxuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLmdldFNlY3VyaXR5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eSB8fCB0aGlzLnBhdGhPYmplY3QuYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHJlcXVlc3QuXG4gKlxuICogKipOb3RlOioqIEJlbG93IGlzIHRoZSBsaXN0IG9mIGByZXFgIHByb3BlcnRpZXMgdXNlZCAqKHJlcSBzaG91bGQgYmUgYW4gYGh0dHAuQ2xpZW50UmVxdWVzdGAgb3IgZXF1aXZhbGVudCkqOlxuICpcbiAqICAgKiBgYm9keWA6IFVzZWQgZm9yIGBib2R5YCBhbmQgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzXG4gKiAgICogYGZpbGVzYDogVXNlZCBmb3IgYGZvcm1EYXRhYCBwYXJhbWV0ZXJzIHdob3NlIGB0eXBlYCBpcyBgZmlsZWBcbiAqICAgKiBgaGVhZGVyc2A6IFVzZWQgZm9yIGBoZWFkZXJgIHBhcmFtZXRlcnMgYW5kIGNvbnN1bWVzXG4gKiAgICogYG9yaWdpbmFsVXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqICAgKiBgcXVlcnlgOiBVc2VkIGZvciBgcXVlcnlgIHBhcmFtZXRlcnNcbiAqICAgKiBgdXJsYDogdXNlZCBmb3IgYHBhdGhgIHBhcmFtZXRlcnNcbiAqXG4gKiBGb3IgYHBhdGhgIHBhcmFtZXRlcnMsIHdlIHdpbGwgdXNlIHRoZSBvcGVyYXRpb24ncyBgcmVnZXhwYCBwcm9wZXJ0eSB0byBwYXJzZSBvdXQgcGF0aCBwYXJhbWV0ZXJzIHVzaW5nIHRoZVxuICogYG9yaWdpbmFsVXJsYCBvciBgdXJsYCBwcm9wZXJ0eS5cbiAqXG4gKiAqKFNlZToge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9jbGllbnRyZXF1ZXN0fSkqXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcSAtIFRoZSBodHRwIGNsaWVudCByZXF1ZXN0ICoob3IgZXF1aXZhbGVudCkqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LlJlcXVlc3RWYWxpZGF0aW9uT3B0aW9uc30gW29wdGlvbnNdIC0gVGhlIHZhbGlkYXRpb24gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5WYWxpZGF0aW9uUmVzdWx0c30gVGhlIHZhbGlkYXRpb24gcmVzdWx0c1xuICovXG5PcGVyYXRpb24ucHJvdG90eXBlLnZhbGlkYXRlUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXEsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZChyZXEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVxIGlzIHJlcXVpcmVkJyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnMpICYmICFfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNVbmRlZmluZWQob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzKSkge1xuICAgICBpZiAoIV8uaXNBcnJheShvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICB9XG5cbiAgICAgaGVscGVycy52YWxpZGF0ZU9wdGlvbnNBbGxBcmVGdW5jdGlvbnMob3B0aW9ucy5jdXN0b21WYWxpZGF0b3JzLCAnY3VzdG9tVmFsaWRhdG9ycycpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgQ29udGVudC1UeXBlIGlmIHRoZXJlIGlzIGEgc2V0IG9mIGV4cGVjdGVkIGNvbnN1bWVzIGFuZCB0aGVyZSBpcyBhIGJvZHlcbiAgaWYgKHRoaXMuY29uc3VtZXMubGVuZ3RoID4gMCAmJiAhXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICBoZWxwZXJzLnZhbGlkYXRlQ29udGVudFR5cGUoaGVscGVycy5nZXRDb250ZW50VHlwZShyZXEuaGVhZGVycyksIHRoaXMuY29uc3VtZXMsIHJlc3VsdHMpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgXy5lYWNoKHRoaXMuZ2V0UGFyYW1ldGVycygpLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICB2YXIgcGFyYW1WYWx1ZSA9IHBhcmFtLmdldFZhbHVlKHJlcSk7XG4gICAgdmFyIHZFcnI7XG5cbiAgICBpZiAoIXBhcmFtVmFsdWUudmFsaWQpIHtcbiAgICAgIHZFcnIgPSB7XG4gICAgICAgIGNvZGU6ICdJTlZBTElEX1JFUVVFU1RfUEFSQU1FVEVSJyxcbiAgICAgICAgZXJyb3JzOiBwYXJhbVZhbHVlLmVycm9yLmVycm9ycyB8fCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogcGFyYW1WYWx1ZS5lcnJvci5jb2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBpbjogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QuaW4sXG4gICAgICAgIC8vIFJlcG9ydCB0aGUgYWN0dWFsIGVycm9yIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLiAgT3RoZXJ3aXNlLCByZXBvcnQgYSBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBwYXJhbWV0ZXIgKCcgKyBwYXJhbS5uYW1lICsgJyk6ICcgKyAoKHBhcmFtVmFsdWUuZXJyb3JzIHx8IFtdKS5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5lcnJvci5tZXNzYWdlKSxcbiAgICAgICAgbmFtZTogcGFyYW1WYWx1ZS5wYXJhbWV0ZXJPYmplY3QubmFtZSxcbiAgICAgICAgcGF0aDogcGFyYW1WYWx1ZS5lcnJvci5wYXRoXG4gICAgICB9O1xuXG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHZFcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgc3RyaWN0IG1vZGVcbiAgaGVscGVycy52YWxpZGF0ZVN0cmljdE1vZGUodGhpcywgcmVxLCBvcHRpb25zLnN0cmljdE1vZGUsIHJlc3VsdHMpO1xuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIHZhbGlkYXRvcnNcbiAgaGVscGVycy5wcm9jZXNzVmFsaWRhdG9ycyhyZXEsIHRoaXMsIG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycywgcmVzdWx0cyk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcyAtIFRoZSByZXNwb25zZSBvciByZXNwb25zZSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHttb2R1bGU6c3dheS5SZXNwb25zZVZhbGlkYXRpb25PcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgdmFsaWRhdGlvbiBvcHRpb25zXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cbk9wZXJhdGlvbi5wcm90b3R5cGUudmFsaWRhdGVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXMsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcbiAgdmFyIHJlYWxTdGF0dXNDb2RlO1xuICB2YXIgcmVzcG9uc2U7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcyBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIHJlYWxTdGF0dXNDb2RlID0gcmVzLnN0YXR1c0NvZGUgfHwgJ2RlZmF1bHQnO1xuICByZXNwb25zZSA9IHRoaXMuZ2V0UmVzcG9uc2UocmVhbFN0YXR1c0NvZGUpO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlc3BvbnNlKSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdGVkIHN0YXR1cywgdXNlIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlzIG9uZSAoVGhpcyBpcyBPcGVuQVBJJ3MgYXBwcm9hY2gpXG4gICAgcmVzcG9uc2UgPSB0aGlzLmdldFJlc3BvbnNlKCdkZWZhdWx0Jyk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9DT0RFJyxcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYSBkZWZpbmVkIFxcJycgK1xuICAgICAgICAgICAgICAgICAgIChyZWFsU3RhdHVzQ29kZSA9PT0gJ2RlZmF1bHQnID9cbiAgICAgICAgICAgICAgICAgICAgcmVhbFN0YXR1c0NvZGUgOlxuICAgICAgICAgICAgICAgICAgICByZWFsU3RhdHVzQ29kZSArICdcXCcgb3IgXFwnZGVmYXVsdCcpICsgJ1xcJyByZXNwb25zZSBjb2RlJyxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChyZXNwb25zZSkpIHtcbiAgICByZXN1bHRzID0gcmVzcG9uc2UudmFsaWRhdGVSZXNwb25zZShyZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9wZXJhdGlvbjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIgSnNvblJlZnMgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snSnNvblJlZnMnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0pzb25SZWZzJ10gOiBudWxsKTtcblxuLyoqXG4gKiBPYmplY3QgcmVwcmVzZW50aW5nIGEgcGFyYW1ldGVyIHZhbHVlLlxuICpcbiAqICoqTm90ZToqKiBEbyBub3QgdXNlIGRpcmVjdGx5LlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyfSBwYXJhbWV0ZXJPYmplY3QgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0XG4gKiBAcGFyYW0geyp9IHJhdyAtIFRoZSBvcmlnaW5hbC9yYXcgdmFsdWVcbiAqXG4gKiBAcHJvcGVydHkge0Vycm9yfSBlcnJvciAtIFRoZSBlcnJvcihzKSBlbmNvdW50ZXJlZCBkdXJpbmcgcHJvY2Vzc2luZy92YWxpZGF0aW5nIHRoZSBwYXJhbWV0ZXIgdmFsdWVcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuUGFyYW1ldGVyfSBwYXJhbWV0ZXJPYmplY3QgLSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0XG4gKiBAcHJvcGVydHkgeyp9IHJhdyAtIFRoZSBvcmlnaW5hbCBwYXJhbWV0ZXIgdmFsdWUgKihEb2VzIG5vdCB0YWtlIGRlZmF1bHQgdmFsdWVzIGludG8gYWNjb3VudCkqXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZhbGlkIC0gV2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgYmFzZWQgb24gaXRzIEpTT04gU2NoZW1hXG4gKiBAcHJvcGVydHkgeyp9IHZhbHVlIC0gVGhlIHByb2Nlc3NlZCB2YWx1ZSAqKFRha2VzIGRlZmF1bHQgdmFsdWVzIGludG8gYWNjb3VudCBhbmQgZG9lcyB0eXBlIGNvZXJjaW9uIHdoZW4gbmVjZXNzYXJ5XG4gKiBhbmQgcG9zc2libGUpKi4gIFRoaXMgY2FuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXZlbnQgdGhhdCBwcm9jZXNzaW5nIHRoZSB2YWx1ZSBpcyBpbXBvc3NpYmxlXG4gKiAqKG1pc3Npbmcgc2NoZW1hIHR5cGUpKiBvciBgdW5kZWZpbmVkYCBpZiBwcm9jZXNzaW5nIHRoZSB2YWx1ZSBmYWlsZWQgKihpbnZhbGlkIHR5cGVzLCBldGMuKSouXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhcmFtZXRlclZhbHVlIChwYXJhbWV0ZXJPYmplY3QsIHJhdykge1xuICB2YXIgcFBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwYXJhbWV0ZXJPYmplY3QucHRyKTtcbiAgdmFyIHByb2Nlc3NlZCA9IGZhbHNlO1xuICB2YXIgc2NoZW1hID0gcGFyYW1ldGVyT2JqZWN0LnNjaGVtYTtcbiAgdmFyIGVycm9yO1xuICB2YXIgaXNWYWxpZDtcbiAgdmFyIHByb2Nlc3NlZFZhbHVlO1xuXG4gIHRoaXMucGFyYW1ldGVyT2JqZWN0ID0gcGFyYW1ldGVyT2JqZWN0O1xuICB0aGlzLnJhdyA9IHJhdztcblxuICAvLyBVc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5IGZvciAndmFsdWUnIHRvIGFsbG93IGZvciBsYXp5IHByb2Nlc3Npbmcgb2YgdGhlIHJhdyB2YWx1ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgZXJyb3I6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQWx3YXlzIGNhbGwgdGhpcy52YWxpZCB0byBlbnN1cmUgd2UgdmFsaWRhdGUgdGhlIHZhbHVlIHByaW9yIHRvIHJldHVybmluZyBhbnkgdmFsdWVzXG4gICAgICAgIGlmICh0aGlzLnZhbGlkID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICB3YXJuaW5nczogW11cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNraXBWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgdmFyIHZFcnJvcjtcblxuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChpc1ZhbGlkKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGVycm9yKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWRuZXNzXG4gICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJPYmplY3QucmVxdWlyZWQgPT09IHRydWUgJiYgXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2RXJyb3IgPSBuZXcgRXJyb3IoJ1ZhbHVlIGlzIHJlcXVpcmVkIGJ1dCB3YXMgbm90IHByb3ZpZGVkJyk7XG5cbiAgICAgICAgICAgICAgICB2RXJyb3IuY29kZSA9ICdSRVFVSVJFRCc7XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBDYXNlcyB3ZSBkbyBub3Qgd2FudCB0byBkbyBzY2hlbWEgdmFsaWRhdGlvbjpcbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgZXhwbGljaXRseSBhbGxvd3MgZW1wdHkgdmFsdWVzIGFuZCB0aGUgdmFsdWUgaXMgZW1wdHlcbiAgICAgICAgICAgICAgLy8gICAqIFRoZSBzY2hlbWEgYWxsb3cgb3B0aW9uYWwgdmFsdWVzIGFuZCB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgICAgIC8vICAgKiBUaGUgc2NoZW1hIGRlZmluZXMgYSBmaWxlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBpcyBmb3IgYSBzdHJpbmcgdHlwZSB3aXRoIGRhdGUvZGF0ZS10aW1lIGZvcm1hdCBhbmQgdGhlIHZhbHVlIGlzIGEgZGF0ZVxuICAgICAgICAgICAgICAvLyAgICogVGhlIHNjaGVtYSBpcyBmb3IgYSBzdHJpbmcgdHlwZSBhbmQgdGhlIHZhbHVlIGlzIGEgQnVmZmVyXG4gICAgICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZChwYXJhbWV0ZXJPYmplY3QucmVxdWlyZWQpIHx8IHBhcmFtZXRlck9iamVjdC5yZXF1aXJlZCA9PT0gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEuYWxsb3dFbXB0eVZhbHVlID09PSB0cnVlICYmIHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNraXBWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJPYmplY3QudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChbJ2RhdGUnLCAnZGF0ZS10aW1lJ10uaW5kZXhPZihzY2hlbWEuZm9ybWF0KSA+IC0xICYmIF8uaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hLnR5cGUgPT09ICdzdHJpbmcnICYmIF8uaXNGdW5jdGlvbih2YWx1ZS5yZWFkVUludDgpKSB7XG4gICAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFza2lwVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGFnYWluc3QgSlNPTiBTY2hlbWFcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKSwgcGFyYW1ldGVyT2JqZWN0LnNjaGVtYSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgZmFpbGVkIEpTT04gU2NoZW1hIHZhbGlkYXRpb24nKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ1NDSEVNQV9WQUxJREFUSU9OX0ZBSUxFRCc7XG4gICAgICAgICAgICAgICAgdkVycm9yLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG5cbiAgICAgICAgICAgICAgICB0aHJvdyB2RXJyb3I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBlcnIuZmFpbGVkVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIGVyci5wYXRoID0gcFBhdGg7XG5cbiAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZFcnJvcjtcblxuICAgICAgICBpZiAoIXByb2Nlc3NlZCkge1xuICAgICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHJhdztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ29udmVydC9Db2VyY2UgdGhlIHJhdyB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgZW1wdGluZXNzIChwcmlvciB0byBjb2VyY2lvbiBmb3IgYmV0dGVyIGVycm9yIGhhbmRsaW5nKVxuICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyT2JqZWN0LmFsbG93RW1wdHlWYWx1ZSA9PT0gZmFsc2UgJiYgcmF3ID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZFcnJvciA9IG5ldyBFcnJvcignVmFsdWUgaXMgbm90IGFsbG93ZWQgdG8gYmUgZW1wdHknKTtcblxuICAgICAgICAgICAgICAgIHZFcnJvci5jb2RlID0gJ0VNUFRZX05PVF9BTExPV0VEJztcblxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgZXJyb3IgaXMgbm90IGEgY29lcmNpb24gZXJyb3IsIHRoZSB2YWx1ZSBpcyBzZXQgdG8gcmF3XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSByYXc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgdkVycm9yO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcHJvY2Vzc2VkVmFsdWUgPSBoZWxwZXJzLmNvbnZlcnRWYWx1ZShzY2hlbWEsIHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uRm9ybWF0OiBwYXJhbWV0ZXJPYmplY3QuY29sbGVjdGlvbkZvcm1hdFxuICAgICAgICAgICAgICB9LCByYXcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBzdGlsbCBubyB2YWx1ZSBhbmQgdGhlcmUgYXJlIG5vIGVycm9ycywgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIGlmIGF2YWlsYWJsZSAobm8gY29lcmNpb24pXG4gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChwcm9jZXNzZWRWYWx1ZSkgJiYgXy5pc1VuZGVmaW5lZChlcnJvcikpIHtcbiAgICAgICAgICAgICAgaWYgKHNjaGVtYS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IF8ucmVkdWNlKHNjaGVtYS5pdGVtcywgZnVuY3Rpb24gKGl0ZW1zLCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbS5kZWZhdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGhhdmUgYSBkZWZhdWx0IHZhbHVlIHJlc2V0IHRoZSBwcm9jZXNzZWQgdmFsdWUgdG8gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgIGlmIChfLmV2ZXJ5KHByb2Nlc3NlZFZhbHVlLCBfLmlzVW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gW3NjaGVtYS5pdGVtcy5kZWZhdWx0XTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJvY2Vzc2VkIHZhbHVlIGlzIHN0aWxsIHVuZGVmaW5lZCBhbmQgaWYgdGhlcmUncyBhIGdsb2JhbCBkZWZhdWx0IHNldFxuICAgICAgICAgICAgICAvLyBmb3IgdGhlIGFycmF5LCB3ZSB1c2UgaXRcbiAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQocHJvY2Vzc2VkVmFsdWUpICYmICFfLmlzVW5kZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZFZhbHVlID0gc2NoZW1hLmRlZmF1bHQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyYW1ldGVyVmFsdWU7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIEpzb25SZWZzID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ0pzb25SZWZzJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydKc29uUmVmcyddIDogbnVsbCk7XG52YXIgUGFyYW1ldGVyVmFsdWUgPSByZXF1aXJlKCcuL3BhcmFtZXRlci12YWx1ZScpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgndXJsJykucGFyc2U7XG5cbi8qKlxuICogVGhlIE9wZW5BUEkgUGFyYW1ldGVyIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiBbT3BlbkFQSSBQYXJhbWV0ZXIgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNwYXJhbWV0ZXJPYmplY3QpLlxuICpcbiAqIEBwYXJhbSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9ufG1vZHVsZTpzd2F5LlBhdGh9IG9wT3JQYXRoT2JqZWN0IC0gVGhlIGBPcGVyYXRpb25gIG9yIGBQYXRoYCBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhcmFtZXRlciBkZWZpbml0aW9uICooVGhlIHJhdyBwYXJhbWV0ZXIgZGVmaW5pdGlvbiBfX2FmdGVyX18gcmVtb3RlIHJlZmVyZW5jZXMgd2VyZVxuICogcmVzb2x2ZWQpKlxuICogQHBhcmFtIHtvYmplY3R9IGRlZmluaXRpb25GdWxseVJlc29sdmVkIC0gVGhlIHBhcmFtZXRlciBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbiAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiAqKFRoZSByYXcgcGFyYW1ldGVyIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzXG4gKiB3ZXJlIHJlc29sdmVkKSpcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSBwYXJhbWV0ZXIgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5Lk9wZXJhdGlvbn0gb3BlcmF0aW9uT2JqZWN0IC0gVGhlIGBPcGVyYXRpb25gIG9iamVjdCB0aGUgcGFyYW1ldGVyIGJlbG9uZ3MgdG8gKihDYW4gYmVcbiAqIGB1bmRlZmluZWRgIGZvciBwYXRoLWxldmVsIHBhcmFtZXRlcnMpKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXRofSBwYXRoT2JqZWN0IC0gVGhlIGBQYXRoYCBvYmplY3QgdGhlIHBhcmFtZXRlciBiZWxvbmdzIHRvXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhcmFtZXRlciBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHRyIC0gVGhlIEpTT04gUG9pbnRlciB0byB0aGUgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWEgZm9yIHRoZSBwYXJhbWV0ZXIgKihGb3Igbm9uLWJvZHkgcGFyYW1ldGVycywgdGhpcyBpcyBhIGNvbXB1dGVkIHZhbHVlKSpcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUGFyYW1ldGVyIChvcE9yUGF0aE9iamVjdCwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXNcbiAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCA9IGRlZmluaXRpb25GdWxseVJlc29sdmVkO1xuICB0aGlzLnBhdGhUb0RlZmluaXRpb24gPSBwYXRoVG9EZWZpbml0aW9uO1xuICB0aGlzLnB0ciA9IEpzb25SZWZzLnBhdGhUb1B0cihwYXRoVG9EZWZpbml0aW9uKTtcblxuICBpZiAoXy5oYXMob3BPclBhdGhPYmplY3QsICdjb25zdW1lcycpKSB7XG4gICAgdGhpcy5vcGVyYXRpb25PYmplY3QgPSBvcE9yUGF0aE9iamVjdDtcbiAgICB0aGlzLnBhdGhPYmplY3QgPSBvcE9yUGF0aE9iamVjdC5wYXRoT2JqZWN0O1xuICB9IGVsc2Uge1xuICAgIHRoaXMub3BlcmF0aW9uT2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGF0aE9iamVjdCA9IG9wT3JQYXRoT2JqZWN0O1xuICB9XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgT3BlbkFQSSBQYXJhbWV0ZXIgT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuc2NoZW1hKSkge1xuICAgIHRoaXMuc2NoZW1hID0gaGVscGVycy5jb21wdXRlUGFyYW1ldGVyU2NoZW1hKGRlZmluaXRpb25GdWxseVJlc29sdmVkKTtcbiAgfVxuXG4gIHRoaXMucGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLl9kZWJ1ZygnICAgICAgICAgICVzJXMgKGluOiAlcykgYXQgJXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh0aGlzLm9wZXJhdGlvbk9iamVjdCkgPyAnJyA6ICcgICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0cik7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHNhbXBsZSB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBiYXNlZCBvbiBpdHMgc2NoZW1hO1xuICpcbiAqIEByZXR1cm5zIHsqfSBUaGUgc2FtcGxlIHZhbHVlXG4gKi9cblBhcmFtZXRlci5wcm90b3R5cGUuZ2V0U2FtcGxlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGVscGVycy5nZXRTYW1wbGUodGhpcy5zY2hlbWEpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdC5cbiAqXG4gKiAqKk5vdGU6KiogQmVsb3cgaXMgdGhlIGxpc3Qgb2YgYHJlcWAgcHJvcGVydGllcyB1c2VkICoocmVxIHNob3VsZCBiZSBhbiBgaHR0cC5DbGllbnRSZXF1ZXN0YCBvciBlcXVpdmFsZW50KSo6XG4gKlxuICogICAqIGBib2R5YDogVXNlZCBmb3IgYGJvZHlgIGFuZCBgZm9ybURhdGFgIHBhcmFtZXRlcnNcbiAqICAgKiBgZmlsZXNgOiBVc2VkIGZvciBgZm9ybURhdGFgIHBhcmFtZXRlcnMgd2hvc2UgYHR5cGVgIGlzIGBmaWxlYFxuICogICAqIGBoZWFkZXJzYDogVXNlZCBmb3IgYGhlYWRlcmAgcGFyYW1ldGVyc1xuICogICAqIGBvcmlnaW5hbFVybGA6IHVzZWQgZm9yIGBwYXRoYCBwYXJhbWV0ZXJzXG4gKiAgICogYHF1ZXJ5YDogVXNlZCBmb3IgYHF1ZXJ5YCBwYXJhbWV0ZXJzXG4gKiAgICogYHVybGA6IHVzZWQgZm9yIGBwYXRoYCBwYXJhbWV0ZXJzXG4gKlxuICogRm9yIGBwYXRoYCBwYXJhbWV0ZXJzLCB3ZSB3aWxsIHVzZSB0aGUgb3BlcmF0aW9uJ3MgYHJlZ2V4cGAgcHJvcGVydHkgdG8gcGFyc2Ugb3V0IHBhdGggcGFyYW1ldGVycyB1c2luZyB0aGVcbiAqIGBvcmlnaW5hbFVybGAgb3IgYHVybGAgcHJvcGVydHkuXG4gKlxuICogKihTZWU6IHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX2NsYXNzX2h0dHBfY2xpZW50cmVxdWVzdH0pKlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXEgLSBUaGUgaHR0cCBjbGllbnQgcmVxdWVzdCAqKG9yIGVxdWl2YWxlbnQpKlxuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5QYXJhbWV0ZXJWYWx1ZX0gVGhlIHBhcmFtZXRlciB2YWx1ZSBvYmplY3RcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGBpbmAgdmFsdWUgb2YgdGhlIHBhcmFtZXRlcidzIHNjaGVtYSBpcyBub3QgdmFsaWQgb3IgaWYgdGhlIGByZXFgIHByb3BlcnR5IHRvIHJldHJpZXZlIHRoZVxuICogcGFyYW1ldGVyIGlzIG1pc3NpbmdcbiAqL1xuUGFyYW1ldGVyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIChyZXEpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocmVxKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBpcyByZXF1aXJlZCcpO1xuICB9IGVsc2UgaWYgKCFfLmlzT2JqZWN0KHJlcSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXEgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfSBlbHNlIGlmIChoZWxwZXJzLnBhcmFtZXRlckxvY2F0aW9ucy5pbmRleE9mKHRoaXMuaW4pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBcXCdpblxcJyB2YWx1ZTogJyArIHRoaXMuaW4pO1xuICB9XG5cbiAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayB0aGUgdHlwZSBvZiByZXFcblxuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciB0eXBlID0gdGhpcy5zY2hlbWEudHlwZTtcbiAgdmFyIHBhdGhNYXRjaDtcbiAgdmFyIHZhbHVlO1xuXG4gIHN3aXRjaCAodGhpcy5pbikge1xuICBjYXNlICdib2R5JzpcbiAgICB2YWx1ZSA9IHJlcS5ib2R5O1xuICAgIGJyZWFrO1xuICBjYXNlICdmb3JtRGF0YSc6XG4gICAgLy8gRm9yIGZvcm1EYXRhLCBlaXRoZXIgdGhlIHZhbHVlIGlzIGEgZmlsZSBvciBhIHByb3BlcnR5IG9mIHJlcS5ib2R5LiAgcmVxLmJvZHkgYXMgYSB3aG9sZSBjYW4gbmV2ZXIgYmUgdGhlXG4gICAgLy8gdmFsdWUgc2luY2UgdGhlIEpTT04gU2NoZW1hIGZvciBmb3JtRGF0YSBwYXJhbWV0ZXJzIGRvZXMgbm90IGFsbG93IGEgdHlwZSBvZiAnb2JqZWN0Jy5cbiAgICBpZiAodHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuZmlsZXMpKSB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXEuZmlsZXMgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwnZm9ybURhdGFcXCcgcGFyYW1ldGVycyBvZiB0eXBlIFxcJ2ZpbGVcXCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IHJlcS5maWxlc1t0aGlzLm5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuYm9keSkpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5ib2R5IG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ2Zvcm1EYXRhXFwnIHBhcmFtZXRlcnMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFsdWUgPSByZXEuYm9keVt0aGlzLm5hbWVdO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAnaGVhZGVyJzpcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEuaGVhZGVycykpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVxLmhlYWRlcnMgbXVzdCBiZSBwcm92aWRlZCBmb3IgXFwnaGVhZGVyXFwnIHBhcmFtZXRlcnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gaGVscGVycy5nZXRIZWFkZXJWYWx1ZShyZXEuaGVhZGVycywgdGhpcy5uYW1lKTtcbiAgICBicmVhaztcbiAgY2FzZSAncGF0aCc6XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVxLm9yaWdpbmFsVXJsKSAmJiBfLmlzVW5kZWZpbmVkKHJlcS51cmwpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5vcmlnaW5hbFVybCBvciByZXEudXJsIG11c3QgYmUgcHJvdmlkZWQgZm9yIFxcJ3BhdGhcXCcgcGFyYW1ldGVycycpO1xuICAgIH1cblxuICAgIHBhdGhNYXRjaCA9IHRoaXMucGF0aE9iamVjdC5yZWdleHAuZXhlYyhwYXJzZVVybChyZXEub3JpZ2luYWxVcmwgfHwgcmVxLnVybCkucGF0aG5hbWUpO1xuXG4gICAgaWYgKHBhdGhNYXRjaCkge1xuICAgICAgLy8gZGVjb2RlIFVSSSBjb21wb25lbnQgaGVyZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBlbmNvZGVkIHNsYXNoZXNcbiAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhNYXRjaFtfLmZpbmRJbmRleCh0aGlzLnBhdGhPYmplY3QucmVnZXhwLmtleXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleS5uYW1lID09PSB0aGF0Lm5hbWU7XG4gICAgICB9KSArIDFdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgJ3F1ZXJ5JzpcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZXEucXVlcnkpKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcS5xdWVyeSBtdXN0IGJlIHByb3ZpZGVkIGZvciBcXCdxdWVyeVxcJyBwYXJhbWV0ZXJzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWx1ZSA9IF8uZ2V0KHJlcS5xdWVyeSwgdGhpcy5uYW1lKTtcblxuICAgIGJyZWFrO1xuXG4gICAgLy8gbm8gZGVmYXVsdFxuICB9XG5cbiAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJWYWx1ZSh0aGlzLCB2YWx1ZSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcmFtZXRlcjtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIEpzb25SZWZzID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ0pzb25SZWZzJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydKc29uUmVmcyddIDogbnVsbCk7XG52YXIgT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9vcGVyYXRpb24nKTtcbnZhciBQYXJhbWV0ZXIgPSByZXF1aXJlKCcuL3BhcmFtZXRlcicpO1xudmFyIHBhdGhUb1JlZ2V4cCA9IHJlcXVpcmUoJ3BhdGgtdG8tcmVnZXhwJyk7XG52YXIgc3VwcG9ydGVkSHR0cE1ldGhvZHMgPSByZXF1aXJlKCdzd2FnZ2VyLW1ldGhvZHMnKTtcblxuLyoqXG4gKiBUaGUgUGF0aCBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIERvIG5vdCB1c2UgZGlyZWN0bHkuXG4gKlxuICogKipFeHRyYSBQcm9wZXJ0aWVzOioqIE90aGVyIHRoYW4gdGhlIGRvY3VtZW50ZWQgcHJvcGVydGllcywgdGhpcyBvYmplY3QgYWxzbyBleHBvc2VzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZVxuICogW09wZW5BUEkgUGF0aCBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3BhdGhJdGVtT2JqZWN0KS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5LkFwaURlZmluaXRpb259IGFwaURlZmluaXRpb24gLSBUaGUgYEFwaURlZmluaXRpb25gIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBzdHJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5BcGlEZWZpbml0aW9ufSBhcGlEZWZpbml0aW9uIC0gVGhlIGBBcGlEZWZpbml0aW9uYCBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHBhdGggZGVmaW5pdGlvbiAqKFRoZSByYXcgcGF0aCBkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcGF0aCBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwcm9wZXJ0eSB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IG9wZXJhdGlvbk9iamVjdHMgLSBUaGUgYE9wZXJhdGlvbmAgb2JqZWN0c1xuICogQHByb3BlcnR5IHttb2R1bGU6c3dheS5QYXJhbWV0ZXJbXX0gcGFyYW1ldGVyT2JqZWN0cyAtIFRoZSBwYXRoLWxldmVsIGBQYXJhbWV0ZXJgIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBwYXRoVG9EZWZpbml0aW9uIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gdGhlIHBhdGggZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtwdHJ9IHB0ciAtIFRoZSBKU09OIFBvaW50ZXIgdG8gdGhlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7cmVnZXhwfSByZWdleHAgLSBUaGUgYFJlZ0V4cGAgdXNlZCB0byBtYXRjaCByZXF1ZXN0IHBhdGhzIGFnYWluc3QgdGhpcyBwYXRoXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQG1lbWJlcm9mIG1vZHVsZTpzd2F5XG4gKi9cbmZ1bmN0aW9uIFBhdGggKGFwaURlZmluaXRpb24sIHBhdGgsIGRlZmluaXRpb24sIGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBwYXRoVG9EZWZpbml0aW9uKSB7XG4gIHZhciBiYXNlUGF0aFByZWZpeCA9IGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuYmFzZVBhdGggfHwgJy8nO1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBzYW5pdGl6ZWRQYXRoO1xuXG4gIC8vIFRPRE86IFdlIGNvdWxkL3Nob3VsZCByZWZhY3RvciB0aGlzIHRvIHVzZSB0aGUgcGF0aCBtb2R1bGVcblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgYmFzZVBhdGhQcmVmaXggc28gd2UgZG8gbm90IGVuZCB1cCB3aXRoIGRvdWJsZSBzbGFzaGVzXG4gIGlmIChiYXNlUGF0aFByZWZpeC5jaGFyQXQoYmFzZVBhdGhQcmVmaXgubGVuZ3RoIC0gMSkgPT09ICcvJykge1xuICAgIGJhc2VQYXRoUHJlZml4ID0gYmFzZVBhdGhQcmVmaXguc3Vic3RyaW5nKDAsIGJhc2VQYXRoUHJlZml4Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgLy8gQ29udmVydHMgT3BlbkFQSSBwYXJhbWV0ZXJzIHRvIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycywgYW5kIGFsc28gZXNjYXBlcyBhbGwgcGF0aC10by1yZWdleHAgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gIC8vXG4gIC8vIEBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9waWxsYXJqcy9wYXRoLXRvLXJlZ2V4cC9pc3N1ZXMvNzYjaXNzdWVjb21tZW50LTIxOTA4NTM1N1xuICBzYW5pdGl6ZWRQYXRoID0gYmFzZVBhdGhQcmVmaXggKyBwYXRoLnJlcGxhY2UoJygnLCAnXFxcXCgnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyknLCAnXFxcXCknKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJzonLCAnXFxcXDonKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJyonLCAnXFxcXConKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJysnLCAnXFxcXCsnKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJz8nLCAnXFxcXD8nKSAvLyBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnOicpIC8vIE9wZW5BUEkgLT4gRXhwcmVzcy1zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcfS9nLCAnJyk7IC8vIE9wZW5BUEkgLT4gRXhwcmVzcy1zdHlsZVxuXG4gIC8vIEFzc2lnbiBsb2NhbCBwcm9wZXJ0aWVzXG4gIHRoaXMuYXBpRGVmaW5pdGlvbiA9IGFwaURlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgPSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZDtcbiAgdGhpcy5wYXRoID0gcGF0aDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG4gIHRoaXMucmVnZXhwID0gcGF0aFRvUmVnZXhwKHNhbml0aXplZFBhdGgsIHtzZW5zaXRpdmU6IHRydWV9KTtcblxuICAvLyBBc3NpZ24gbG9jYWwgcHJvcGVydGllcyBmcm9tIHRoZSBPcGVuQVBJIFBhdGggT2JqZWN0IGRlZmluaXRpb25cbiAgXy5hc3NpZ24odGhpcywgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIHRoaXMuX2RlYnVnID0gdGhpcy5hcGlEZWZpbml0aW9uLl9kZWJ1ZztcblxuICB0aGlzLl9kZWJ1ZygnICAgICVzJywgdGhpcy5wYXRoKTtcblxuICB0aGlzLnBhcmFtZXRlck9iamVjdHMgPSBfLm1hcChkZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAocGFyYW1EZWYsIGluZGV4KSB7XG4gICAgdmFyIHBQYXRoID0gcGF0aFRvRGVmaW5pdGlvbi5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pO1xuXG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXIodGhhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBfLmdldChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25SZW1vdGVzUmVzb2x2ZWQsIHBQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbURlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0aCk7XG4gIH0pO1xuXG4gIHRoaXMuX2RlYnVnKCcgICAgICBPcGVyYXRpb25zOicpO1xuXG4gIHRoaXMub3BlcmF0aW9uT2JqZWN0cyA9IF8ucmVkdWNlKGRlZmluaXRpb25GdWxseVJlc29sdmVkLCBmdW5jdGlvbiAob3BlcmF0aW9ucywgb3BlcmF0aW9uRGVmLCBtZXRob2QpIHtcbiAgICB2YXIgb1BhdGggPSBwYXRoVG9EZWZpbml0aW9uLmNvbmNhdChtZXRob2QpO1xuXG4gICAgaWYgKHN1cHBvcnRlZEh0dHBNZXRob2RzLmluZGV4T2YobWV0aG9kKSA+IC0xKSB7XG4gICAgICBvcGVyYXRpb25zLnB1c2gobmV3IE9wZXJhdGlvbih0aGF0LCBtZXRob2QsIF8uZ2V0KGFwaURlZmluaXRpb24uZGVmaW5pdGlvblJlbW90ZXNSZXNvbHZlZCwgb1BhdGgpLCBvcGVyYXRpb25EZWYsIG9QYXRoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnM7XG4gIH0sIFtdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbiBmb3IgdGhpcyBwYXRoIGFuZCBvcGVyYXRpb24gaWQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZE9yTWV0aG9kIC0gVGhlIG9wZXJhdGlvbiBpZCBvciBtZXRob2RcbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGggYW5kIG1ldGhvZCBvciBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub1xuICogb3BlcmF0aW9uIGZvciB0aGUgcHJvdmlkZWQgbWV0aG9kXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbiA9IGZ1bmN0aW9uIChpZE9yTWV0aG9kKSB7XG4gIHJldHVybiBfLmZpbmQodGhpcy5vcGVyYXRpb25PYmplY3RzLCBmdW5jdGlvbiAob3BlcmF0aW9uT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9wZXJhdGlvbk9iamVjdC5vcGVyYXRpb25JZCA9PT0gaWRPck1ldGhvZCB8fCBvcGVyYXRpb25PYmplY3QubWV0aG9kID09PSBpZE9yTWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcGF0aC5cbiAqXG4gKiBAcmV0dXJucyB7bW9kdWxlOnN3YXkuT3BlcmF0aW9uW119IFRoZSBgT3BlcmF0aW9uYCBvYmplY3RzIGZvciB0aGlzIHBhdGhcbiAqL1xuUGF0aC5wcm90b3R5cGUuZ2V0T3BlcmF0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMub3BlcmF0aW9uT2JqZWN0cztcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBvcGVyYXRpb25zIGZvciB0aGlzIHBhdGggYW5kIHRhZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZ1xuICpcbiAqIEByZXR1cm5zIHttb2R1bGU6c3dheS5PcGVyYXRpb25bXX0gVGhlIGBPcGVyYXRpb25gIG9iamVjdHMgZm9yIHRoaXMgcGF0aCBhbmQgdGFnXG4gKi9cblBhdGgucHJvdG90eXBlLmdldE9wZXJhdGlvbnNCeVRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMub3BlcmF0aW9uT2JqZWN0cywgZnVuY3Rpb24gKG9wZXJhdGlvbk9iamVjdCkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKG9wZXJhdGlvbk9iamVjdC50YWdzLCB0YWcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIHBhdGguXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlBhcmFtZXRlcltdfSBUaGUgYFBhcmFtZXRlcmAgb2JqZWN0cyBmb3IgdGhpcyBwYXRoXG4gKi9cblBhdGgucHJvdG90eXBlLmdldFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBhcmFtZXRlck9iamVjdHM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhdGg7XG4iLCIvKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1IEFwaWdlZSBDb3Jwb3JhdGlvblxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydfJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydfJ10gOiBudWxsKTtcbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycpO1xudmFyIGpzb25WYWxpZGF0b3IgPSBoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKTtcbnZhciBKc29uUmVmcyA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydKc29uUmVmcyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnSnNvblJlZnMnXSA6IG51bGwpO1xudmFyIFlBTUwgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snanN5YW1sJ10gOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsWydqc3lhbWwnXSA6IG51bGwpO1xuXG4vKipcbiAqIFRoZSBPcGVuQVBJIFJlc3BvbnNlIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogRG8gbm90IHVzZSBkaXJlY3RseS5cbiAqXG4gKiAqKkV4dHJhIFByb3BlcnRpZXM6KiogT3RoZXIgdGhhbiB0aGUgZG9jdW1lbnRlZCBwcm9wZXJ0aWVzLCB0aGlzIG9iamVjdCBhbHNvIGV4cG9zZXMgYWxsIHByb3BlcnRpZXMgb2YgdGhlXG4gKiBbT3BlbkFQSSBSZXNwb25zZSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3Jlc3BvbnNlT2JqZWN0KS5cbiAqXG4gKiBAcGFyYW0ge21vZHVsZTpzd2F5Lk9wZXJhdGlvbn0gb3BlcmF0aW9uT2JqZWN0IC0gVGhlIGBPcGVyYXRpb25gIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1c0NvZGUgLSBUaGUgc3RhdHVzIGNvZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIHJlc3BvbnNlIGRlZmluaXRpb24gKihUaGUgcmF3IHJlc3BvbnNlIGRlZmluaXRpb24gX19hZnRlcl9fIHJlbW90ZSByZWZlcmVuY2VzIHdlcmVcbiAqIHJlc29sdmVkKSpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCAtIFRoZSByZXNwb25zZSBkZWZpbml0aW9uIHdpdGggYWxsIG9mIGl0cyByZXNvbHZhYmxlIHJlZmVyZW5jZXMgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKlxuICogQHByb3BlcnR5IHtvYmplY3R9IGRlZmluaXRpb24gLSBUaGUgcmVzcG9uc2UgZGVmaW5pdGlvbiAqKFRoZSByYXcgcmVzcG9uc2VkZWZpbml0aW9uIF9fYWZ0ZXJfXyByZW1vdGUgcmVmZXJlbmNlcyB3ZXJlXG4gKiByZXNvbHZlZCkqXG4gKiBAcHJvcGVydHkge29iamVjdH0gZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQgLSBUaGUgcmVzcG9uc2UgZGVmaW5pdGlvbiB3aXRoIGFsbCBvZiBpdHMgcmVzb2x2YWJsZSByZWZlcmVuY2VzIHJlc29sdmVkXG4gKiBAcHJvcGVydHkge21vZHVsZTpzd2F5Lk9wZXJhdGlvbn0gb3BlcmF0aW9uT2JqZWN0IC0gVGhlIE9wZXJhdGlvbiBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHBhdGhUb0RlZmluaXRpb24gLSBUaGUgcGF0aCBzZWdtZW50cyB0byB0aGUgcGF0aCBkZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHRyIC0gVGhlIEpTT04gUG9pbnRlciB0byB0aGUgcmVzcG9uc2UgZGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0YXR1c0NvZGUgLSBUaGUgc3RhdHVzIGNvZGVcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOnN3YXlcbiAqL1xuZnVuY3Rpb24gUmVzcG9uc2UgKG9wZXJhdGlvbk9iamVjdCwgc3RhdHVzQ29kZSwgZGVmaW5pdGlvbiwgZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQsIHBhdGhUb0RlZmluaXRpb24pIHtcbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXNcbiAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgdGhpcy5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZCA9IGRlZmluaXRpb25GdWxseVJlc29sdmVkO1xuICB0aGlzLm9wZXJhdGlvbk9iamVjdCA9IG9wZXJhdGlvbk9iamVjdDtcbiAgdGhpcy5wYXRoVG9EZWZpbml0aW9uID0gcGF0aFRvRGVmaW5pdGlvbjtcbiAgdGhpcy5wdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIocGF0aFRvRGVmaW5pdGlvbik7XG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG5cbiAgLy8gQXNzaWduIGxvY2FsIHByb3BlcnRpZXMgZnJvbSB0aGUgT3BlbkFQSSBSZXNwb25zZSBPYmplY3QgZGVmaW5pdGlvblxuICBfLmFzc2lnbih0aGlzLCBkZWZpbml0aW9uRnVsbHlSZXNvbHZlZCk7XG5cbiAgdGhpcy5vcGVyYXRpb25PYmplY3QucGF0aE9iamVjdC5hcGlEZWZpbml0aW9uLl9kZWJ1ZygnICAgICAgICAgICAgJXMgYXQgJXMnLCBzdGF0dXNDb2RlLCB0aGlzLnB0cik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVzcG9uc2UgZXhhbXBsZSBmb3IgdGhlIG1pbWUtdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21pbWVUeXBlXSAtIFRoZSBtaW1lIHR5cGVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcmVzcG9uc2UgZXhhbXBsZSBhcyBhIHN0cmluZyBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVzcG9uc2UgY29kZSBhbmQvb3IgbWltZS10eXBlIGlzIG1pc3NpbmdcbiAqL1xuUmVzcG9uc2UucHJvdG90eXBlLmdldEV4YW1wbGUgPSBmdW5jdGlvbiAobWltZVR5cGUpIHtcbiAgdmFyIGV4YW1wbGU7XG5cbiAgaWYgKF8uaXNQbGFpbk9iamVjdCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLmV4YW1wbGVzKSkge1xuICAgIGV4YW1wbGUgPSB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLmV4YW1wbGVzW21pbWVUeXBlXTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChleGFtcGxlKSAmJiAhXy5pc1N0cmluZyhleGFtcGxlKSkge1xuICAgIGlmIChtaW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICBleGFtcGxlID0gSlNPTi5zdHJpbmdpZnkoZXhhbXBsZSwgbnVsbCwgMik7XG4gICAgfSBlbHNlIGlmIChtaW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gteWFtbCcpIHtcbiAgICAgIGV4YW1wbGUgPSBZQU1MLnNhZmVEdW1wKGV4YW1wbGUsIHtpbmRlbnQ6IDJ9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhhbXBsZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIHNhbXBsZSB2YWx1ZS5cbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHNhbXBsZSB2YWx1ZSBmb3IgdGhlIHJlc3BvbnNlLCB3aGljaCBjYW4gYmUgdW5kZWZpbmVkIGlmIHRoZSByZXNwb25zZSBzY2hlbWEgaXMgbm90IHByb3ZpZGVkXG4gKi9cblJlc3BvbnNlLnByb3RvdHlwZS5nZXRTYW1wbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoZWxwZXJzLmdldFNhbXBsZSh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSk7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHttb2R1bGU6c3dheS5TZXJ2ZXJSZXNwb25zZVdyYXBwZXJ9IHJlcyAtIFRoZSByZXNwb25zZSBvciByZXNwb25zZSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHttb2R1bGU6c3dheS5SZXNwb25zZVZhbGlkYXRpb25PcHRpb25zfSBbb3B0aW9uc10gLSBUaGUgdmFsaWRhdGlvbiBvcHRpb25zXG4gKlxuICogQHJldHVybnMge21vZHVsZTpzd2F5LlZhbGlkYXRpb25SZXN1bHRzfSBUaGUgdmFsaWRhdGlvbiByZXN1bHRzXG4gKi9cblJlc3BvbnNlLnByb3RvdHlwZS52YWxpZGF0ZVJlc3BvbnNlID0gZnVuY3Rpb24gKHJlcywgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0cyA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuICB2YXIgYm9keVZhbHVlO1xuICB2YXIgYnZSZXN1bHRzO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgaXMgcmVxdWlyZWQnKTtcbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9ucykgJiYgIV8uaXNQbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChvcHRpb25zKSAmJiAhXy5pc1VuZGVmaW5lZChvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMpKSB7XG4gICAgIGlmICghXy5pc0FycmF5KG9wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMuY3VzdG9tVmFsaWRhdG9ycyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgIH1cblxuICAgICBoZWxwZXJzLnZhbGlkYXRlT3B0aW9uc0FsbEFyZUZ1bmN0aW9ucyhvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsICdjdXN0b21WYWxpZGF0b3JzJyk7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHJlcy5oZWFkZXJzKSkge1xuICAgIHJlcy5oZWFkZXJzID0ge307XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgQ29udGVudC1UeXBlIGV4Y2VwdCBmb3Igdm9pZCByZXNwb25zZXMsIDIwNCByZXNwb25zZXMgYW5kIDMwNCByZXNwb25zZXMgYXMgdGhleSBoYXZlIG5vIGJvZHlcbiAgaWYgKHRoaXMub3BlcmF0aW9uT2JqZWN0LnByb2R1Y2VzLmxlbmd0aCA+IDAgJiYgIV8uaXNVbmRlZmluZWQocmVzLmJvZHkpICYmXG4gICAgICAgICFfLmlzVW5kZWZpbmVkKHRoaXMuZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2NoZW1hKSAmJiBfLmluZGV4T2YoWycyMDQnLCAnMzA0J10sIHRoaXMuc3RhdHVzQ29kZSkgPT09IC0xKSB7XG4gICAgaGVscGVycy52YWxpZGF0ZUNvbnRlbnRUeXBlKGhlbHBlcnMuZ2V0Q29udGVudFR5cGUocmVzLmhlYWRlcnMpLCB0aGlzLm9wZXJhdGlvbk9iamVjdC5wcm9kdWNlcywgcmVzdWx0cyk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgaGVhZGVyc1xuICBfLmZvckVhY2godGhpcy5oZWFkZXJzLCBmdW5jdGlvbiAoc2NoZW1hLCBuYW1lKSB7XG4gICAgdmFyIGhlYWRlclZhbHVlO1xuICAgIHZhciBodlJlc3VsdHM7XG5cbiAgICB0cnkge1xuICAgICAgaGVhZGVyVmFsdWUgPSBoZWxwZXJzLmNvbnZlcnRWYWx1ZShzY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uRm9ybWF0OiBzY2hlbWEuY29sbGVjdGlvbkZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdmVybHkgY2F1dGlvdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmhlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuaGVhZGVyc1tuYW1lXSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWEuZGVmYXVsdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXN1bHRzLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0lOVkFMSURfUkVTUE9OU0VfSEVBREVSJyxcbiAgICAgICAgZXJyb3JzOiBlcnIuZXJyb3JzIHx8IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiBlcnIuY29kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgcGF0aDogZXJyLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGhlYWRlciAoJyArIG5hbWUgKyAnKTogJyArIGVyci5tZXNzYWdlLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBwYXRoOiBlcnIucGF0aFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRHVlIHRvIGFtYmlndWl0eSBpbiB0aGUgU3dhZ2dlciAyLjAgU3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9pc3N1ZXMvMzIxKSwgaXRcbiAgICAvLyBpcyBwcm9iYWJseSBub3QgYSBnb29kIGlkZWEgdG8gZG8gcmVxdWlyZWRuZXNzIGNoZWNrcyBmb3IgcmVzcG9uc2UgaGVhZGVycy4gIFRoaXMgbWVhbnMgd2Ugd2lsbCB2YWxpZGF0ZVxuICAgIC8vIGV4aXN0aW5nIGhlYWRlcnMgYnV0IHdpbGwgbm90IHRocm93IGFuIGVycm9yIGlmIGEgaGVhZGVyIGlzIGRlZmluZWQgaW4gYSByZXNwb25zZSBzY2hlbWEgYnV0IG5vdCBpbiB0aGUgcmVzcG9uc2UuXG4gICAgLy9cbiAgICAvLyBXZSBhbHNvIGRvIG5vdCB3YW50IHRvIHZhbGlkYXRlIGRhdGUgb2JqZWN0cyBiZWNhdXNlIGl0IGlzIHJlZHVuZGFudC4gIElmIHdlIGhhdmUgYWxyZWFkeSBjb252ZXJ0ZWQgdGhlIHZhbHVlXG4gICAgLy8gZnJvbSBhIHN0cmluZytmb3JtYXQgdG8gYSBkYXRlLCB3ZSBrbm93IGl0IHBhc3NlcyBzY2hlbWEgdmFsaWRhdGlvbi5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoaGVhZGVyVmFsdWUpICYmICFfLmlzRGF0ZShoZWFkZXJWYWx1ZSkpIHtcbiAgICAgIGh2UmVzdWx0cyA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGpzb25WYWxpZGF0b3IsIHNjaGVtYSwgaGVhZGVyVmFsdWUpO1xuXG4gICAgICBpZiAoaHZSZXN1bHRzLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdJTlZBTElEX1JFU1BPTlNFX0hFQURFUicsXG4gICAgICAgICAgZXJyb3JzOiBodlJlc3VsdHMuZXJyb3JzLFxuICAgICAgICAgIC8vIFJlcG9ydCB0aGUgYWN0dWFsIGVycm9yIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLiAgT3RoZXJ3aXNlLCByZXBvcnQgYSBKU09OIFNjaGVtYVxuICAgICAgICAgIC8vIHZhbGlkYXRpb24gZXJyb3IuXG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaGVhZGVyICgnICsgbmFtZSArICcpOiAnICsgKGh2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWYWx1ZSBmYWlsZWQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodlJlc3VsdHMuZXJyb3JzWzBdLm1lc3NhZ2UpLFxuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgcGF0aDogW11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBWYWxpZGF0ZSByZXNwb25zZSBmb3Igbm9uLXZvaWQgcmVzcG9uc2VzXG4gIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSkgJiYgXy5pbmRleE9mKFsnMjA0JywgJzMwNCddLCB0aGlzLnN0YXR1c0NvZGUpID09PSAtMSkge1xuICAgIHRyeSB7XG4gICAgICBib2R5VmFsdWUgPSBoZWxwZXJzLmNvbnZlcnRWYWx1ZSh0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSwge1xuICAgICAgICBlbmNvZGluZzogcmVzLmVuY29kaW5nXG4gICAgICB9LCByZXMuYm9keSk7XG4gICAgICBidlJlc3VsdHMgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShqc29uVmFsaWRhdG9yLCB0aGlzLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnNjaGVtYSwgYm9keVZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGJ2UmVzdWx0cyA9IHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kZTogZXJyLmNvZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIHBhdGg6IGVyci5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChidlJlc3VsdHMuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRVNQT05TRV9CT0RZJyxcbiAgICAgICAgZXJyb3JzOiBidlJlc3VsdHMuZXJyb3JzLFxuICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBib2R5OiAnICsgKGJ2UmVzdWx0cy5lcnJvcnMubGVuZ3RoID4gMSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZhbHVlIGZhaWxlZCBKU09OIFNjaGVtYSB2YWxpZGF0aW9uJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZSZXN1bHRzLmVycm9yc1swXS5tZXNzYWdlKSxcbiAgICAgICAgcGF0aDogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHN0cmljdCBtb2RlXG4gIGhlbHBlcnMudmFsaWRhdGVTdHJpY3RNb2RlKHRoaXMsIHJlcywgb3B0aW9ucy5zdHJpY3RNb2RlLCByZXN1bHRzKTtcblxuICAvLyBQcm9jZXNzIGN1c3RvbSB2YWxpZGF0b3JzXG4gIGhlbHBlcnMucHJvY2Vzc1ZhbGlkYXRvcnMocmVzLCB0aGlzLCBvcHRpb25zLmN1c3RvbVZhbGlkYXRvcnMsIHJlc3VsdHMpO1xuXG4gIHJldHVybiByZXN1bHRzO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZXNwb25zZTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIEJhc2U2NCA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93WydCYXNlNjQnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0Jhc2U2NCddIDogbnVsbCk7XG5cbi8vIER1ZSB0byB0aGUgZGlmZmVyZW5jZXMgaW4gaG93IG5vZGUuanMgYW5kIHRoZSBicm93c2VyIHVzZSBqcy1iYXNlNjQsIHdlIG5lZWQgdGhpcyBoYWNrXG5pZiAodHlwZW9mIEJhc2U2NC5CYXNlNjQgIT09ICd1bmRlZmluZWQnKSB7XG4gIEJhc2U2NCA9IEJhc2U2NC5CYXNlNjQ7XG59XG5cbi8qKlxuICogV2UgaGF2ZSB0byBmaWx0ZXIgdGhlIHNjaGVtYSB0byBhdm9pZCBhIG1heGltdW0gY2FsbHN0YWNrIGlzc3VlIGJ5IGRlbGV0aW5nIHRoZSBmb3JtYXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYSAtIFRoZSBKU09OIFNjaGVtYSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgZmlsdGVyZWQgc2NoZW1hXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclNjaGVtYSAoc2NoZW1hKSB7XG4gIHZhciBjU2NoZW1hID0gXy5jbG9uZURlZXAoc2NoZW1hKTtcblxuICBkZWxldGUgY1NjaGVtYS5mb3JtYXQ7XG5cbiAgcmV0dXJuIGNTY2hlbWE7XG59XG5cbi8vIEJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBKU09OIFNjaGVtYSBnZW5lcmF0b3IgZm9ybWF0c1xubW9kdWxlLmV4cG9ydHMuYnl0ZSA9IGZ1bmN0aW9uIChtb2NrZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzY2hlbWEpIHtcbiAgICByZXR1cm4gQmFzZTY0LmVuY29kZShtb2NrZXIoZmlsdGVyU2NoZW1hKHNjaGVtYSkpKTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnBhc3N3b3JkID0gZnVuY3Rpb24gKG1vY2tlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgIHJldHVybiBtb2NrZXIoZmlsdGVyU2NoZW1hKHNjaGVtYSkpO1xuICB9XG59O1xuIiwiLypcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBBcGlnZWUgQ29ycG9yYXRpb25cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF8gPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snXyddIDogdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbFsnXyddIDogbnVsbCk7XG5cbmZ1bmN0aW9uIHJldHVyblRydWUgKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMuaW50MzIgPSBtb2R1bGUuZXhwb3J0cy5pbnQ2NCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgLy8gei1zY2hlbWEgc2VlbXMgdG8gY29udGludWUgcHJvY2Vzc2luZyB0aGUgZm9ybWF0IGV2ZW4gd2hlbiB0aGUgdHlwZSBpcyBrbm93biB0byBiZSBpbnZhbGlkIHNvIHdlIG11c3QgZG8gYSB0eXBlXG4gIC8vIGNoZWNrIHByaW9yIHRvIHZhbGlkYXRpbmcgdGhpcyBmb3JtYXQuXG4gIHJldHVybiBfLmlzTnVtYmVyKHZhbCkgJiYgdmFsICUgMSA9PT0gMDtcbn07XG5cbi8vIFRoZXNlIGZvcm1hdCB2YWxpZGF0b3JzIHdpbGwgYWx3YXlzIHJldHVybiAndHJ1ZScgYmVjYXVzZSB0aGV5IGFyZSBhbHJlYWR5IHR5cGUgdmFsaWQgYW5kIHRoZXJlIGFyZSBubyBjb25zdHJhaW50c1xuLy8gb24gdGhlIGZvcm1hdCB0aGF0IHdvdWxkIHByb2R1Y2UgYW4gaW52YWxpZCB2YWx1ZS5cbm1vZHVsZS5leHBvcnRzLmJ5dGUgPSByZXR1cm5UcnVlO1xubW9kdWxlLmV4cG9ydHMuZG91YmxlID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLmZsb2F0ID0gcmV0dXJuVHJ1ZTtcbm1vZHVsZS5leHBvcnRzLnBhc3N3b3JkID0gcmV0dXJuVHJ1ZTtcbiIsIi8qXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBpZ2VlIENvcnBvcmF0aW9uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfID0gKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3dbJ18nXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ18nXSA6IG51bGwpO1xudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyk7XG52YXIgSnNvblJlZnMgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvd1snSnNvblJlZnMnXSA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxbJ0pzb25SZWZzJ10gOiBudWxsKTtcbnZhciBzdXBwb3J0ZWRIdHRwTWV0aG9kcyA9IHJlcXVpcmUoJ3N3YWdnZXItbWV0aG9kcycpO1xudmFyIHN3YWdnZXJTY2hlbWEgPSByZXF1aXJlKCdzd2FnZ2VyLXNjaGVtYS1vZmZpY2lhbC9zY2hlbWEnKTtcblxuZnVuY3Rpb24gZ2V0U2NoZW1hUHJvcGVydGllcyAoc2NoZW1hKSB7XG4gIHZhciBwcm9wZXJ0aWVzID0gXy5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzKTsgLy8gU3RhcnQgd2l0aCB0aGUgZGVmaW5lZCBwcm9wZXJ0aWVzXG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgZGVmaW5lZCBpbiB0aGUgcGFyZW50XG4gIF8uZm9yRWFjaChzY2hlbWEuYWxsT2YsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICBfLmZvckVhY2goZ2V0U2NoZW1hUHJvcGVydGllcyhwYXJlbnQpLCBmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChfLmluZGV4T2YocHJvcGVydGllcywgcHJvcGVydHkpID09PSAtMSkge1xuICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZnVuY3Rpb24gd2Fsa1NjaGVtYSAoYXBpLCBibGFja2xpc3QsIHNjaGVtYSwgcGF0aCwgaGFuZGxlcnMsIHJlc3BvbnNlKSB7XG4gIHZhciB0eXBlID0gc2NoZW1hLnR5cGUgfHwgJ29iamVjdCc7XG5cbiAgZnVuY3Rpb24gc2hvdWxkU2tpcCAoY1BhdGgpIHtcbiAgICByZXR1cm4gXy5pbmRleE9mKGJsYWNrbGlzdCwgSnNvblJlZnMucGF0aFRvUHRyKGNQYXRoKSkgPiAtMTtcbiAgfVxuXG4gIC8vIERvIG5vdCBwcm9jZXNzIGl0ZW1zIGluIHRoZSBibGFja2xpc3QgYXMgdGhleSd2ZSBiZWVuIHByb2Nlc3NlZCBhbHJlYWR5XG4gIGlmIChzaG91bGRTa2lwKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2Fsa2VyIChwU2NoZW1hLCBwUGF0aCkge1xuICAgIC8vIERvIG5vdCBwcm9jZXNzIGl0ZW1zIGluIHRoZSBibGFja2xpc3QgYXMgdGhleSd2ZSBiZWVuIHByb2Nlc3NlZCBhbHJlYWR5XG4gICAgaWYgKHNob3VsZFNraXAocFBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgXy5mb3JFYWNoKHBTY2hlbWEsIGZ1bmN0aW9uIChpdGVtLCBuYW1lKSB7XG4gICAgICBpZiAoXy5pc051bWJlcihuYW1lKSkge1xuICAgICAgICBuYW1lID0gbmFtZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBpdGVtLCBwUGF0aC5jb25jYXQobmFtZSksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLnNjaGVtYSkpIHtcbiAgICB3YWxrU2NoZW1hKGFwaSwgYmxhY2tsaXN0LCBzY2hlbWEuc2NoZW1hLCBwYXRoLmNvbmNhdCgnc2NoZW1hJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5JyAmJiAhXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMpKSB7XG4gICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICB3YWxrZXIoc2NoZW1hLml0ZW1zLCBwYXRoLmNvbmNhdCgnaXRlbXMnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHNjaGVtYS5pdGVtcywgcGF0aC5jb25jYXQoJ2l0ZW1zJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICAgIHdhbGtTY2hlbWEoYXBpLCBibGFja2xpc3QsIHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcywgcGF0aC5jb25jYXQoJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyksIGhhbmRsZXJzLCByZXNwb25zZSk7XG4gICAgfVxuXG4gICAgXy5mb3JFYWNoKFsnYWxsT2YnLCAncHJvcGVydGllcyddLCBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWFbcHJvcE5hbWVdKSkge1xuICAgICAgICB3YWxrZXIoc2NoZW1hW3Byb3BOYW1lXSwgcGF0aC5jb25jYXQocHJvcE5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF8uZm9yRWFjaChoYW5kbGVycywgZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICBoYW5kbGVyKGFwaSwgcmVzcG9uc2UsIHNjaGVtYSwgcGF0aCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgcmVzb2x2ZWQgT3BlbkFQSSBEZWZpbml0aW9uIGFnYWluc3QgdGhlIE9wZW5BUEkgMy54IEpTT04gU2NoZW1hLlxuICpcbiAqIEBwYXJhbSB7QXBpRGVmaW5pdGlvbn0gYXBpRGVmaW5pdGlvbiAtIFRoZSBgQXBpRGVmaW5pdGlvbmAgb2JqZWN0XG4gKlxuICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3Mgb2YgdGhlIHZhbGlkYXRpb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdHJ1Y3R1cmUgKGFwaURlZmluaXRpb24pIHtcbiAgdmFyIHJlc3VsdHMgPSBoZWxwZXJzLnZhbGlkYXRlQWdhaW5zdFNjaGVtYShoZWxwZXJzLmdldEpTT05TY2hlbWFWYWxpZGF0b3IoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FnZ2VyU2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQpO1xuXG4gIC8vIE1ha2UgY29tcGxleCBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyBlYXNpZXIgdG8gdW5kZXJzdGFuZCAoSXNzdWUgMTUpXG4gIHJlc3VsdHMuZXJyb3JzID0gcmVzdWx0cy5lcnJvcnMubWFwKGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHZhciBkZWZUeXBlID0gWydhZGRpdGlvbmFsUHJvcGVydGllcycsICdpdGVtcyddLmluZGV4T2YoZXJyb3IucGF0aFtlcnJvci5wYXRoLmxlbmd0aCAtIDFdKSA+IC0xID9cbiAgICAgICAgICAnc2NoZW1hJyA6XG4gICAgICAgICAgZXJyb3IucGF0aFtlcnJvci5wYXRoLmxlbmd0aCAtIDJdO1xuXG4gICAgaWYgKFsnQU5ZX09GX01JU1NJTkcnLCAnT05FX09GX01JU1NJTkcnXS5pbmRleE9mKGVycm9yLmNvZGUpID4gLTEpIHtcbiAgICAgIHN3aXRjaCAoZGVmVHlwZSkge1xuICAgICAgY2FzZSAncGFyYW1ldGVycyc6XG4gICAgICAgIGRlZlR5cGUgPSAncGFyYW1ldGVyJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3Jlc3BvbnNlcyc6XG4gICAgICAgIGRlZlR5cGUgPSAncmVzcG9uc2UnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2NoZW1hJzpcbiAgICAgICAgZGVmVHlwZSArPSAnICcgKyBlcnJvci5wYXRoW2Vycm9yLnBhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gbm8gZGVmYXVsdFxuICAgICAgfVxuXG4gICAgICBlcnJvci5tZXNzYWdlID0gJ05vdCBhIHZhbGlkICcgKyBkZWZUeXBlICsgJyBkZWZpbml0aW9uJztcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3I7XG4gIH0pO1xuXG4gIC8vIFRyZWF0IGludmFsaWQvbWlzc2luZyByZWZlcmVuY2VzIGFzIHN0cnVjdHVyYWwgZXJyb3JzXG4gIF8uZWFjaChhcGlEZWZpbml0aW9uLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChyZWZEZXRhaWxzLCByZWZQdHIpIHtcbiAgICB2YXIgcmVmUGF0aCA9IEpzb25SZWZzLnBhdGhGcm9tUHRyKHJlZlB0cik7XG4gICAgdmFyIGVycjtcblxuICAgIGlmIChyZWZEZXRhaWxzLm1pc3NpbmcpIHtcbiAgICAgIGVyciA9IHtcbiAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICBtZXNzYWdlOiAnUmVmZXJlbmNlIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJyArIHJlZkRldGFpbHMudXJpLFxuICAgICAgICBwYXRoOiByZWZQYXRoLmNvbmNhdCgnJHJlZicpXG4gICAgICB9O1xuXG4gICAgICBpZiAoXy5oYXMocmVmRGV0YWlscywgJ2Vycm9yJykpIHtcbiAgICAgICAgZXJyLmVycm9yID0gcmVmRGV0YWlscy5lcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0cy5lcnJvcnMucHVzaChlcnIpO1xuICAgIH0gZWxzZSBpZiAocmVmRGV0YWlscy50eXBlID09PSAnaW52YWxpZCcpIHtcbiAgICAgIHJlc3VsdHMuZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnSU5WQUxJRF9SRUZFUkVOQ0UnLFxuICAgICAgICBtZXNzYWdlOiByZWZEZXRhaWxzLmVycm9yIHx8ICdJbnZhbGlkIEpTT04gUmVmZXJlbmNlJyxcbiAgICAgICAgcGF0aDogcmVmUGF0aC5jb25jYXQoJyRyZWYnKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChfLmhhcyhyZWZEZXRhaWxzLCAnd2FybmluZycpKSB7XG4gICAgICAvLyBqc29uLXJlZnMgb25seSBjcmVhdGVzIHdhcm5pbmdzIGZvciBKU09OIFJlZmVyZW5jZXMgd2l0aCBzdXBlcmZsdW91cyBwcm9wZXJ0aWVzIHdoaWNoIHdpbGwgYmUgaWdub3JlZFxuICAgICAgcmVzdWx0cy53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0VYVFJBX1JFRkVSRU5DRV9QUk9QRVJUSUVTJyxcbiAgICAgICAgbWVzc2FnZTogcmVmRGV0YWlscy53YXJuaW5nLFxuICAgICAgICBwYXRoOiByZWZQYXRoXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKiBTY2hlbWEgT2JqZWN0IFZhbGlkYXRvcnMgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVBcnJheVR5cGVJdGVtc0V4aXN0ZW5jZSAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIGlmIChzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyAmJiBfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykpIHtcbiAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICBjb2RlOiAnT0JKRUNUX01JU1NJTkdfUkVRVUlSRURfUFJPUEVSVFknLFxuICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGl0ZW1zJyxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURlZmF1bHRWYWx1ZSAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIHZhciByZXN1bHQ7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkge1xuICAgIHJlc3VsdCA9IGhlbHBlcnMudmFsaWRhdGVBZ2FpbnN0U2NoZW1hKGhlbHBlcnMuZ2V0SlNPTlNjaGVtYVZhbGlkYXRvcigpLCBzY2hlbWEsIHNjaGVtYS5kZWZhdWx0KTtcblxuICAgIF8uZm9yRWFjaChyZXN1bHQuZXJyb3JzLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGVycm9yLnBhdGggPSBwYXRoLmNvbmNhdChlcnJvci5wYXRoLmNvbmNhdCgnZGVmYXVsdCcpKTtcblxuICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgXy5mb3JFYWNoKHJlc3VsdC53YXJuaW5ncywgZnVuY3Rpb24gKHdhcm5pbmcpIHtcbiAgICAgIHdhcm5pbmcucGF0aCA9IHBhdGguY29uY2F0KHdhcm5pbmcucGF0aC5wdXNoKCdkZWZhdWx0JykpO1xuXG4gICAgICByZXNwb25zZS53YXJuaW5ncy5wdXNoKHdhcm5pbmcpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hUHJvcGVydGllcyAoYXBpLCByZXNwb25zZSwgc2NoZW1hLCBwYXRoKSB7XG4gIF8uZm9yRWFjaChfLmRpZmZlcmVuY2Uoc2NoZW1hLnJlcXVpcmVkIHx8IFtdLCBnZXRTY2hlbWFQcm9wZXJ0aWVzKHNjaGVtYSkpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgIGNvZGU6ICdPQkpFQ1RfTUlTU0lOR19SRVFVSVJFRF9QUk9QRVJUWV9ERUZJTklUSU9OJyxcbiAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IGRlZmluaXRpb246ICcgKyBuYW1lLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYWxsIHJlZmVyZW5jZXMuXG4gKlxuICogKiBJZGVudGlmaWVzIGNpcmN1bGFyIGluaGVyaXRhbmNlIHJlZmVyZW5jZXNcbiAqICogSWRlbnRpZmllcyB1bnJlZmVyZW5jZWQgcmVmZXJlbmNlYWJsZSBkZWZpbml0aW9uc1xuICogKiBJZGVudGlmaWVzIHVucmVzb2x2YWJsZSByZWZlcmVuY2VzXG4gKlxuICogQHBhcmFtIHtBcGlEZWZpbml0aW9ufSBhcGlEZWZpbml0aW9uIC0gVGhlIGBBcGlEZWZpbml0aW9uYCBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVJlZmVyZW5jZXMgKGFwaURlZmluaXRpb24pIHtcbiAgdmFyIGRvY1JlZmVyZW5jZXMgPSB7fTtcbiAgdmFyIGluaGVyaXRhbmNlRGV0YWlscyA9IHt9O1xuICB2YXIgcmVmZXJlbmNlYWJsZSA9IFtdO1xuICB2YXIgcmVmZXJlbmNlcyA9IHt9O1xuICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgZXJyb3JzOiBbXSxcbiAgICB3YXJuaW5nczogW11cbiAgfTtcblxuICBmdW5jdGlvbiBhZGRBbmNlc3RvciAoZHNjLCBhbmMpIHtcbiAgICBpZiAoIV8uaGFzKGluaGVyaXRhbmNlRGV0YWlscywgZHNjKSkge1xuICAgICAgaW5oZXJpdGFuY2VEZXRhaWxzW2RzY10gPSB7XG4gICAgICAgIGxpbmVhZ2U6IFtdLFxuICAgICAgICBwYXJlbnRzOiBbXG4gICAgICAgICAgYW5jXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaGVyaXRhbmNlRGV0YWlsc1tkc2NdLnBhcmVudHMucHVzaChhbmMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFJlZmVyZW5jZSAocmVmLCBwdHIpIHtcbiAgICBpZiAoXy5pbmRleE9mKHJlZmVyZW5jZXMsIHJlZikgPT09IC0xKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChyZWZlcmVuY2VzW3JlZl0pKSB7XG4gICAgICAgIHJlZmVyZW5jZXNbcmVmXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcmVmZXJlbmNlcyB0byBhbmNlc3RvcnNcbiAgICAgIGlmIChyZWYuaW5kZXhPZignYWxsT2YnKSA+IC0xKSB7XG4gICAgICAgIGFkZFJlZmVyZW5jZShyZWYuc3Vic3RyaW5nKDAsIHJlZi5sYXN0SW5kZXhPZignL2FsbE9mJykpKTtcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlc1tyZWZdLnB1c2gocHRyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTZWN1cml0eVByb2Nlc3NvciAocGF0aCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VjdXJpdHksIGluZGV4KSB7XG4gICAgICBfLmZvckVhY2goc2VjdXJpdHksIGZ1bmN0aW9uIChzY29wZXMsIG5hbWUpIHtcbiAgICAgICAgdmFyIHNkUGF0aCA9IFsnc2VjdXJpdHlEZWZpbml0aW9ucycsIG5hbWVdO1xuICAgICAgICB2YXIgc2RQdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIoc2RQYXRoKTtcbiAgICAgICAgdmFyIHNyUGF0aCA9IHBhdGguY29uY2F0KFtpbmRleC50b1N0cmluZygpLCBuYW1lXSk7XG5cbiAgICAgICAgLy8gSWRlbnRpZnkgbWlzc2luZyByZWZlcmVuY2UgdG8gdGhlIHNlY3VyaXR5IGRlZmluaXRpb25cbiAgICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBzZFB0cikgPT09IC0xKSB7XG4gICAgICAgICAgcmVzcG9uc2UuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ1NlY3VyaXR5IGRlZmluaXRpb24gY291bGQgbm90IGJlIHJlc29sdmVkOiAnICsgbmFtZSxcbiAgICAgICAgICAgIHBhdGg6IHNyUGF0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFJlZmVyZW5jZShzZFB0ciwgSnNvblJlZnMucGF0aFRvUHRyKHNyUGF0aCkpO1xuXG4gICAgICAgICAgXy5mb3JFYWNoKHNjb3BlcywgZnVuY3Rpb24gKHNjb3BlLCBzSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBzc3JQYXRoID0gc3JQYXRoLmNvbmNhdChzSW5kZXgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB2YXIgc3NyUHRyID0gSnNvblJlZnMucGF0aFRvUHRyKHNkUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKTtcblxuICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihyZWZlcmVuY2VhYmxlLCBzc3JQdHIpID09PSAtMSkge1xuICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogJ1VOUkVTT0xWQUJMRV9SRUZFUkVOQ0UnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdTZWN1cml0eSBzY29wZSBkZWZpbml0aW9uIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJyArIHNjb3BlLFxuICAgICAgICAgICAgICAgIHBhdGg6IHNzclBhdGhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhZGRSZWZlcmVuY2UoSnNvblJlZnMucGF0aFRvUHRyKHNkUGF0aC5jb25jYXQoWydzY29wZXMnLCBzY29wZV0pKSwgc3NyUHRyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhbGtMaW5lYWdlIChyb290LCBpZCwgbGluZWFnZSkge1xuICAgIHZhciBkZXRhaWxzID0gaW5oZXJpdGFuY2VEZXRhaWxzW2lkIHx8IHJvb3RdO1xuXG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIF8uZWFjaChkZXRhaWxzLnBhcmVudHMsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgbGluZWFnZS5wdXNoKHBhcmVudCk7XG5cbiAgICAgICAgaWYgKHJvb3QgIT09IHBhcmVudCkge1xuICAgICAgICAgIHdhbGtMaW5lYWdlKHJvb3QsIHBhcmVudCwgbGluZWFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIElkZW50aWZ5IHJlZmVyZW5jZWFibGUgZGVmaW5pdGlvbnNcbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuZGVmaW5pdGlvbnMsIGZ1bmN0aW9uIChkZWYsIG5hbWUpIHtcbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKFsnZGVmaW5pdGlvbnMnLCBuYW1lXSkpO1xuICB9KTtcblxuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAoZGVmLCBuYW1lKSB7XG4gICAgcmVmZXJlbmNlYWJsZS5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihbJ3BhcmFtZXRlcnMnLCBuYW1lXSkpO1xuICB9KTtcblxuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5yZXNwb25zZXMsIGZ1bmN0aW9uIChkZWYsIG5hbWUpIHtcbiAgICByZWZlcmVuY2VhYmxlLnB1c2goSnNvblJlZnMucGF0aFRvUHRyKFsncmVzcG9uc2VzJywgbmFtZV0pKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuc2VjdXJpdHlEZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZiwgbmFtZSkge1xuICAgIHZhciBzUGF0aCA9IFsnc2VjdXJpdHlEZWZpbml0aW9ucycsIG5hbWVdO1xuXG4gICAgcmVmZXJlbmNlYWJsZS5wdXNoKEpzb25SZWZzLnBhdGhUb1B0cihzUGF0aCkpO1xuXG4gICAgXy5mb3JFYWNoKGRlZi5zY29wZXMsIGZ1bmN0aW9uIChkZXNjcmlwdGlvbiwgc2NvcGUpIHtcbiAgICAgIHZhciBwdHIgPSBKc29uUmVmcy5wYXRoVG9QdHIoc1BhdGguY29uY2F0KFsnc2NvcGVzJywgc2NvcGVdKSk7XG5cbiAgICAgIGlmIChfLmluZGV4T2YocmVmZXJlbmNlYWJsZSwgcHRyKSA9PT0gLTEpIHtcbiAgICAgICAgcmVmZXJlbmNlYWJsZS5wdXNoKHB0cik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIElkZW50aWZ5IHJlZmVyZW5jZXMgYW5kIGJ1aWxkIGluaGVyaXRhbmNlIG1vZGVsXG4gIF8uZm9yRWFjaChhcGlEZWZpbml0aW9uLnJlZmVyZW5jZXMsIGZ1bmN0aW9uIChtZXRhZGF0YSwgcHRyKSB7XG4gICAgdmFyIHB0clBhdGggPSBKc29uUmVmcy5wYXRoRnJvbVB0cihwdHIpO1xuXG4gICAgaWYgKCFfLmhhcyhtZXRhZGF0YSwgJ21pc3NpbmcnKSkge1xuICAgICAgLy8gVGhpcyByZWZlcmVuY2UgaXMgYSBkb2N1bWVudCByZWZlcmVuY2UsIHJlY29yZCBpdCBmb3IgbGF0ZXJcbiAgICAgIGlmIChbJ3JlbGF0aXZlJywgJ3JlbW90ZSddLmluZGV4T2YobWV0YWRhdGEudHlwZSkgPiAtMSAmJiBtZXRhZGF0YS5mcVVSSS5pbmRleE9mKCcjJykgPT09IC0xKSB7XG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGRvY1JlZmVyZW5jZXNbbWV0YWRhdGEuZnFVUkldKSkge1xuICAgICAgICAgIGRvY1JlZmVyZW5jZXNbbWV0YWRhdGEuZnFVUkldID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBkb2NSZWZlcmVuY2VzW21ldGFkYXRhLmZxVVJJXS5wdXNoKHB0cik7XG4gICAgICB9XG5cbiAgICAgIGFkZFJlZmVyZW5jZShtZXRhZGF0YS5mcVVSSSwgcHRyKTtcblxuICAgICAgaWYgKHB0clBhdGhbcHRyUGF0aC5sZW5ndGggLSAyXSA9PT0gJ2FsbE9mJykge1xuICAgICAgICBhZGRBbmNlc3RvcihKc29uUmVmcy5wYXRoVG9QdHIocHRyUGF0aC5zbGljZSgwLCBwdHJQYXRoLmxlbmd0aCAtIDIpKSwgbWV0YWRhdGEudXJpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIGpzb24tcmVmcyBvbmx5IHByb2Nlc3NlcyBlYWNoIHJlZmVyZW5jZWQgZG9jdW1lbnQgb25jZSwgbm8gbWF0dGVyIGhvdyBtYW55IHBsYWNlcyB0aGF0IGRvY3VtZW50IGlzIHJlZmVyZW5jZWQgZnJvbS5cbiAgLy8gVG8gZW5zdXJlIHRoYXQgYWxsIHBsYWNlcyB3aGVyZSByZWZlcmVuY2VhYmxlIG9iamVjdHMgYXJlIHJlZmVyZW5jZWQgY2FuIGJlIGlkZW50aWZpZWQsIHdlIG5lZWQgb3QgcG9zdC1wcm9jZXNzIHRoZVxuICAvLyByZWZlcmVuY2UgbW9kZWwgY3JlYXRlZCBhYm92ZSBhbmQgcmVjb3JkIGVhY2ggcmVmZXJlbmNlIHdpdGhpbiBhIHJlbGF0aXZlL3JlbW90ZSBkb2N1bWVudCByZWxhdGl2ZSB0byB3aGVyZSB0aGVcbiAgLy8gY29udGFpbmluZyBkb2N1bWVudCB3YXMgcmVmZXJlbmNlZC5cbiAgcmVmZXJlbmNlcyA9IF8ucmVkdWNlKHJlZmVyZW5jZXMsIGZ1bmN0aW9uIChhbGxSZWZzLCBmcm9tLCB0bykge1xuICAgIHZhciB0b1BhcnRzID0gdG8uc3BsaXQoJyMnKTtcblxuICAgIGlmICh0b1BhcnRzWzBdICE9PSAnJyAmJiB0b1BhcnRzWzFdICE9PSAnJykge1xuICAgICAgXy5mb3JFYWNoKGRvY1JlZmVyZW5jZXNbdG9QYXJ0c1swXV0sIGZ1bmN0aW9uIChkRnJvbSkge1xuICAgICAgICBhbGxSZWZzW1tkRnJvbSwgdG9QYXJ0c1sxXV0uam9pbignJyldID0gZnJvbTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGxSZWZzW3RvXSA9IGZyb207XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJlZnM7XG4gIH0sIHt9KTtcblxuICAvLyBJZGVudGlmeSBjaXJjdWxhciBpbmhlcml0YW5jZVxuICBfLmZvckVhY2goaW5oZXJpdGFuY2VEZXRhaWxzLCBmdW5jdGlvbiAoZGV0YWlscywgcHRyKSB7XG4gICAgd2Fsa0xpbmVhZ2UocHRyLCB1bmRlZmluZWQsIGRldGFpbHMubGluZWFnZSk7XG5cbiAgICBpZiAoZGV0YWlscy5saW5lYWdlLmxlbmd0aCA+IDEgJiYgZGV0YWlscy5saW5lYWdlW2RldGFpbHMubGluZWFnZS5sZW5ndGggLSAxXSA9PT0gcHRyIHx8XG4gICAgICAgIGRldGFpbHMucGFyZW50c1swXSA9PT0gcHRyKSB7XG4gICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdDSVJDVUxBUl9JTkhFUklUQU5DRScsXG4gICAgICAgIGxpbmVhZ2U6IFtwdHJdLmNvbmNhdChkZXRhaWxzLmxpbmVhZ2UpLFxuICAgICAgICBtZXNzYWdlOiAnU2NoZW1hIG9iamVjdCBpbmhlcml0cyBmcm9tIGl0c2VsZjogJyArIHB0cixcbiAgICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIocHRyKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBJZGVudGlmeSByZWZlcmVuY2VzIGFuZCB2YWxpZGF0ZSBtaXNzaW5nIHJlZmVyZW5jZXMgZm9yIG5vbi1KU09OIFJlZmVyZW5jZXMgKHNlY3VyaXR5KVxuICBfLmZvckVhY2goYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5zZWN1cml0eSwgY3JlYXRlU2VjdXJpdHlQcm9jZXNzb3IoWydzZWN1cml0eSddKSk7XG5cbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQucGF0aHMsIGZ1bmN0aW9uIChwYXRoRGVmLCBuYW1lKSB7XG4gICAgdmFyIHBQYXRoID0gWydwYXRocycsIG5hbWVdO1xuXG4gICAgXy5mb3JFYWNoKHBhdGhEZWYuc2VjdXJpdHksIGNyZWF0ZVNlY3VyaXR5UHJvY2Vzc29yKHBQYXRoLmNvbmNhdCgnc2VjdXJpdHknKSkpO1xuXG4gICAgXy5mb3JFYWNoKHBhdGhEZWYsIGZ1bmN0aW9uIChvcGVyYXRpb25EZWYsIG1ldGhvZCkge1xuICAgICAgLy8gRG8gbm90IHByb2Nlc3Mgbm9uLW9wZXJhdGlvbnNcbiAgICAgIGlmIChfLmluZGV4T2Yoc3VwcG9ydGVkSHR0cE1ldGhvZHMsIG1ldGhvZCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgXy5mb3JFYWNoKG9wZXJhdGlvbkRlZi5zZWN1cml0eSxcbiAgICAgICAgICAgICAgICBjcmVhdGVTZWN1cml0eVByb2Nlc3NvcihwUGF0aC5jb25jYXQoW21ldGhvZCwgJ3NlY3VyaXR5J10pKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIElkZW50aWZ5IHVudXNlZCByZWZlcmVuY2VzIChtaXNzaW5nIHJlZmVyZW5jZXMgYXJlIGFscmVhZHkgaGFuZGxlZCBhYm92ZSlcbiAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShyZWZlcmVuY2VhYmxlLCBPYmplY3Qua2V5cyhyZWZlcmVuY2VzKSksIGZ1bmN0aW9uIChwdHIpIHtcbiAgICByZXNwb25zZS53YXJuaW5ncy5wdXNoKHtcbiAgICAgIGNvZGU6ICdVTlVTRURfREVGSU5JVElPTicsXG4gICAgICBtZXNzYWdlOiAnRGVmaW5pdGlvbiBpcyBub3QgdXNlZDogJyArIHB0cixcbiAgICAgIHBhdGg6IEpzb25SZWZzLnBhdGhGcm9tUHRyKHB0cilcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbGwgc2NoZW1hIG9iamVjdHMgYW5kIHNjaGVtYS1saWtlIG9iamVjdHMgKG5vbi1ib2R5IHBhdGggcGFyYW1ldGVycykuXG4gKlxuICogKiBWYWxpZGF0ZXMgY2lyY3VsYXIgcmVmZXJlbmNlcyByZWxhdGVkIHRvIGNvbXBvc2l0aW9uL2luaGVyaXRhbmNlXG4gKiAqIFZhbGlkYXRlcyB0aGF0IGFsbCBhcnJheSB0eXBlcyBoYXZlIHRoZWlyIHJlcXVpcmVkIGl0ZW1zIHByb3BlcnR5XG4gKiAgICAgKEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvaXNzdWVzLzE3NH0pXG4gKiAqIFZhbGlkYXRlcyB0aGF0IGFsbCBkZWZhdWx0IHZhbHVlcyBhcmUgdmFsaWQgYmFzZWQgb24gaXRzIHJlc3BlY3RpdmUgc2NoZW1hXG4gKlxuICogQHBhcmFtIHtBcGlEZWZpbml0aW9ufSBhcGlEZWZpbml0aW9uIC0gVGhlIGBBcGlEZWZpbml0aW9uYCBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgZXJyb3JzIGFuZCB3YXJuaW5ncyBvZiB0aGUgdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYU9iamVjdHMgKGFwaURlZmluaXRpb24pIHtcbiAgLy8gQnVpbGQgYSBibGFja2xpc3QgdG8gYXZvaWQgY2FzY2FkaW5nIGVycm9ycy93YXJuaW5nc1xuICB2YXIgYmxhY2tsaXN0ID0gXy5yZWR1Y2UoYXBpRGVmaW5pdGlvbi5yZWZlcmVuY2VzLCBmdW5jdGlvbiAobGlzdCwgbWV0YWRhdGEsIHB0cikge1xuICAgIHZhciByZWZQYXRoID0gSnNvblJlZnMucGF0aEZyb21QdHIocHRyKTtcblxuICAgIGxpc3QucHVzaChKc29uUmVmcy5wYXRoVG9QdHIocmVmUGF0aCkpO1xuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH0sIFtdKTtcbiAgdmFyIHJlc3BvbnNlID0ge1xuICAgIGVycm9yczogW10sXG4gICAgd2FybmluZ3M6IFtdXG4gIH07XG4gIHZhciB2YWxpZGF0b3JzID0gW1xuICAgIHZhbGlkYXRlQXJyYXlUeXBlSXRlbXNFeGlzdGVuY2UsXG4gICAgdmFsaWRhdGVEZWZhdWx0VmFsdWUsXG4gICAgdmFsaWRhdGVTY2hlbWFQcm9wZXJ0aWVzXG4gIF07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVQYXJhbWV0ZXJzIChwYXJhbWV0ZXJzLCBwYXRoKSB7XG4gICAgXy5mb3JFYWNoKHBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbWV0ZXJEZWYsIG5hbWUpIHtcbiAgICAgIHZhciBwUGF0aDtcblxuICAgICAgaWYgKF8uaXNOdW1iZXIobmFtZSkpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgcFBhdGggPSBwYXRoLmNvbmNhdChuYW1lKTtcblxuICAgICAgLy8gQ3JlYXRlIEpTT04gU2NoZW1hIGZvciBub24tYm9keSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocGFyYW1ldGVyRGVmLmluICE9PSAnYm9keScpIHtcbiAgICAgICAgcGFyYW1ldGVyRGVmID0gaGVscGVycy5jb21wdXRlUGFyYW1ldGVyU2NoZW1hKHBhcmFtZXRlckRlZik7XG4gICAgICB9XG5cbiAgICAgIHdhbGtTY2hlbWEoYXBpRGVmaW5pdGlvbiwgYmxhY2tsaXN0LCBwYXJhbWV0ZXJEZWYsIHBQYXRoLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlcyAocmVzcG9uc2VzLCBwYXRoKSB7XG4gICAgXy5mb3JFYWNoKHJlc3BvbnNlcywgZnVuY3Rpb24gKHJlc3BvbnNlRGVmLCBuYW1lKSB7XG4gICAgICB2YXIgclBhdGggPSBwYXRoLmNvbmNhdChuYW1lKTtcblxuICAgICAgXy5mb3JFYWNoKHJlc3BvbnNlRGVmLmhlYWRlcnMsIGZ1bmN0aW9uIChoZWFkZXIsIGhOYW1lKSB7XG4gICAgICAgIHdhbGtTY2hlbWEoYXBpRGVmaW5pdGlvbiwgYmxhY2tsaXN0LCBoZWFkZXIsIHJQYXRoLmNvbmNhdChbJ2hlYWRlcnMnLCBoTmFtZV0pLCB2YWxpZGF0b3JzLCByZXNwb25zZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJlc3BvbnNlRGVmLnNjaGVtYSkpIHtcbiAgICAgICAgd2Fsa1NjaGVtYShhcGlEZWZpbml0aW9uLCBibGFja2xpc3QsIHJlc3BvbnNlRGVmLnNjaGVtYSwgclBhdGguY29uY2F0KCdzY2hlbWEnKSwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZGVmaW5pdGlvbnNcbiAgXy5mb3JFYWNoKGFwaURlZmluaXRpb24uZGVmaW5pdGlvbkZ1bGx5UmVzb2x2ZWQuZGVmaW5pdGlvbnMsIGZ1bmN0aW9uIChkZWZpbml0aW9uRGVmLCBuYW1lKSB7XG4gICAgd2Fsa1NjaGVtYShhcGlEZWZpbml0aW9uLCBibGFja2xpc3QsIGRlZmluaXRpb25EZWYsIFsnZGVmaW5pdGlvbnMnLCBuYW1lXSwgdmFsaWRhdG9ycywgcmVzcG9uc2UpO1xuICB9KTtcblxuICAvLyBWYWxpZGF0ZSBnbG9iYWwgcGFyYW1ldGVyIGRlZmluaXRpb25zXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhcmFtZXRlcnMsIFsncGFyYW1ldGVycyddKTtcblxuICAvLyBWYWxpZGF0ZSBnbG9iYWwgcmVzcG9uc2UgZGVmaW5pdGlvbnNcbiAgdmFsaWRhdGVSZXNwb25zZXMoYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5yZXNwb25zZXMsIFsncmVzcG9uc2VzJ10pO1xuXG4gIC8vIFZhbGlkYXRlIHBhdGhzIGFuZCBvcGVyYXRpb25zXG4gIF8uZm9yRWFjaChhcGlEZWZpbml0aW9uLmRlZmluaXRpb25GdWxseVJlc29sdmVkLnBhdGhzLCBmdW5jdGlvbiAocGF0aERlZiwgcGF0aCkge1xuICAgIHZhciBwUGF0aCA9IFsncGF0aHMnLCBwYXRoXTtcblxuICAgIC8vIFZhbGlkYXRlIHBhdGgtbGV2ZWwgcGFyYW1ldGVyIGRlZmluaXRpb25zXG4gICAgdmFsaWRhdGVQYXJhbWV0ZXJzKHBhdGhEZWYucGFyYW1ldGVycywgcFBhdGguY29uY2F0KCdwYXJhbWV0ZXJzJykpO1xuXG4gICAgXy5mb3JFYWNoKHBhdGhEZWYsIGZ1bmN0aW9uIChvcGVyYXRpb25EZWYsIG1ldGhvZCkge1xuICAgICAgdmFyIG9QYXRoID0gcFBhdGguY29uY2F0KG1ldGhvZCk7XG5cbiAgICAgIC8vIERvIG5vdCBwcm9jZXNzIG5vbi1vcGVyYXRpb25zXG4gICAgICBpZiAoXy5pbmRleE9mKHN1cHBvcnRlZEh0dHBNZXRob2RzLCBtZXRob2QpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIG9wZXJhdGlvbiBwYXJhbWV0ZXIgZGVmaW5pdGlvbnNcbiAgICAgIHZhbGlkYXRlUGFyYW1ldGVycyhvcGVyYXRpb25EZWYucGFyYW1ldGVycywgb1BhdGguY29uY2F0KCdwYXJhbWV0ZXJzJykpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBvcGVyYXRpb24gcmVzcG9uc2UgZGVmaW5pdGlvbnNcbiAgICAgIHZhbGlkYXRlUmVzcG9uc2VzKG9wZXJhdGlvbkRlZi5yZXNwb25zZXMsIG9QYXRoLmNvbmNhdCgncmVzcG9uc2VzJykpO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHBhdGhzIGFuZCBvcGVyYXRpb25zIChXcml0dGVuIGFzIG9uZSB2YWxpZGF0b3IgdG8gYXZvaWQgbXVsdGlwbGUgcGFzc2VzKVxuICpcbiAqICogRW5zdXJlIHRoYXQgcGF0aCBwYXJhbWV0ZXJzIGFyZSBkZWZpbmVkIGZvciBlYWNoIHBhdGggcGFyYW1ldGVyIGRlY2xhcmF0aW9uXG4gKiAqIEVuc3VyZSB0aGF0IGRlZmluZWQgcGF0aCBwYXJhbWV0ZXJzIG1hdGNoIGEgZGVjbGFyZWQgcGF0aCBwYXJhbWV0ZXJcbiAqICogRW5zdXJlIHRoYXQgcGF0aHMgYXJlIGZ1bmN0aW9uYWxseSBkaWZmZXJlbnRcbiAqICogRW5zdXJlIHRoYXQgYW4gb3BlcmF0aW9uIG9ubHkgaGFzIG9uZSBib2R5IHBhcmFtZXRlclxuICogKiBFbnN1cmUgdGhhdCBhbiBvcGVyYXRpb24gaGFzIG9ubHkgYSBib2R5IG9yIGZvcm1EYXRhIHBhcmFtZXRlciBidXQgbm90IGJvdGhcbiAqICogRW5zdXJlIHRoYXQgYWxsIG9wZXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSB1bmlxdWUgKGluICsgbmFtZSlcbiAqICogRW5zdXJlIHRoYXQgYWxsIG9wZXJhdGlvbiBpZHMgYXJlIHVuaXF1ZVxuICogKiBFbnN1cmUgdGhhdCBwYXRoIHBhcmFtZXRlcnMgaGF2ZSBhIG5hbWVcbiAqXG4gKiBAcGFyYW0ge0FwaURlZmluaXRpb259IGFwaURlZmluaXRpb24gLSBUaGUgYEFwaURlZmluaXRpb25gIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBlcnJvcnMgYW5kIHdhcm5pbmdzIG9mIHRoZSB2YWxpZGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGF0aHNBbmRPcGVyYXRpb25zIChhcGlEZWZpbml0aW9uKSB7XG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBlcnJvcnM6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlRHVwbGljYXRlUGFyYW1ldGVyIChzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBwYXRoKSB7XG4gICAgdmFyIHBOYW1lID0gcGFyYW1ldGVyLmluICsgJzonICsgcGFyYW1ldGVyLm5hbWU7XG5cbiAgICAvLyBJZGVudGlmeSBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzXG4gICAgaWYgKF8uaW5kZXhPZihzZWVuUGFyYW1ldGVycywgcE5hbWUpID4gLTEpIHtcbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0RVUExJQ0FURV9QQVJBTUVURVInLFxuICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXJzOiAnICsgSnNvblJlZnMucGF0aFRvUHRyKHBhdGgpLFxuICAgICAgICBwYXRoOiBwYXRoXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VlblBhcmFtZXRlcnMucHVzaChwTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlZW5QYXJhbWV0ZXJzO1xuICB9XG5cbiAgXy5yZWR1Y2UoYXBpRGVmaW5pdGlvbi5kZWZpbml0aW9uRnVsbHlSZXNvbHZlZC5wYXRocywgZnVuY3Rpb24gKG1ldGFkYXRhLCBwYXRoRGVmLCBwYXRoKSB7XG4gICAgdmFyIGRlY2xhcmVkUGF0aFBhcmFtZXRlcnMgPSBbXTtcbiAgICB2YXIgbm9ybWFsaXplZFBhdGggPSBwYXRoO1xuICAgIHZhciBwUGF0aCA9IFsncGF0aHMnLCBwYXRoXTtcblxuICAgIF8uZm9yRWFjaChwYXRoLm1hdGNoKC9cXHsoLio/KVxcfS9nKSwgZnVuY3Rpb24gKGFyZywgaW5kZXgpIHtcbiAgICAgIC8vIFJlY29yZCB0aGUgcGF0aCBwYXJhbWV0ZXIgbmFtZVxuICAgICAgZGVjbGFyZWRQYXRoUGFyYW1ldGVycy5wdXNoKGFyZy5yZXBsYWNlKC9be31dL2csICcnKSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgbm9ybWFsaXplZCBwYXRoXG4gICAgICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoYXJnLCAnYXJnJyArIGluZGV4KTtcbiAgICB9KTtcblxuICAgIC8vIElkZW50aWZ5IHBhdGhzIHdpdGggZW1wdHkgcGFyYW1ldGVyIGRlY2xhcmF0aW9uc1xuICAgIGlmIChkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzLmluZGV4T2YoJycpID4gLTEpIHtcbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0VNUFRZX1BBVEhfUEFSQU1FVEVSX0RFQ0xBUkFUSU9OJyxcbiAgICAgICAgbWVzc2FnZTogJ1BhdGggcGFyYW1ldGVyIGRlY2xhcmF0aW9uIGNhbm5vdCBiZSBlbXB0eTogJyArIHBhdGgsXG4gICAgICAgIHBhdGg6IFsncGF0aHMnLCBwYXRoXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWRlbmZpdHkgcGF0aHMgdGhhdCBhcmUgZnVuY3Rpb25hbGx5IHRoZSBzYW1lXG4gICAgaWYgKF8uaW5kZXhPZihtZXRhZGF0YS5wYXRocywgbm9ybWFsaXplZFBhdGgpID4gLTEpIHtcbiAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogJ0VRVUlWQUxFTlRfUEFUSCcsXG4gICAgICAgIG1lc3NhZ2U6ICdFcXVpdmFsZW50IHBhdGggYWxyZWFkeSBleGlzdHM6ICcgKyBwYXRoLFxuICAgICAgICBwYXRoOiBwUGF0aFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGFkYXRhLnBhdGhzLnB1c2gobm9ybWFsaXplZFBhdGgpO1xuICAgIH1cblxuICAgIC8vIElkZW50aWZ5IGR1cGxpY2F0ZSBwYXRoLWxldmVsIHBhcmFtZXRlcnMgKFdlIGRvIHRoaXMgbWFudWFsbHkgc2luY2UgQXBpRGVmaW5pdGlvbiNnZXRPcGVyYXRpb24gY29uc29saWRhdGVzIHRoZW0pXG4gICAgXy5yZWR1Y2UocGF0aERlZi5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAoc2VlblBhcmFtZXRlcnMsIHBhcmFtZXRlciwgaW5kZXgpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUR1cGxpY2F0ZVBhcmFtZXRlcihzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBwUGF0aC5jb25jYXQoWydwYXJhbWV0ZXJzJywgaW5kZXgudG9TdHJpbmcoKV0pKTtcbiAgICB9LCBbXSk7XG5cbiAgICBfLmZvckVhY2gocGF0aERlZiwgZnVuY3Rpb24gKG9wZXJhdGlvbkRlZiwgbWV0aG9kKSB7XG4gICAgICB2YXIgZGVmaW5lZFBhdGhQYXJhbWV0ZXJzID0ge307XG4gICAgICB2YXIgb1BhdGggPSBwUGF0aC5jb25jYXQobWV0aG9kKTtcbiAgICAgIHZhciBvcGVyYXRpb25JZCA9IG9wZXJhdGlvbkRlZi5vcGVyYXRpb25JZDtcbiAgICAgIHZhciBwYXRoTWV0YWRhdGE7XG4gICAgICB2YXIgcGFyYW1ldGVycztcblxuICAgICAgLy8gRG8gbm90IHByb2Nlc3Mgbm9uLW9wZXJhdGlvbnNcbiAgICAgIGlmIChfLmluZGV4T2Yoc3VwcG9ydGVkSHR0cE1ldGhvZHMsIG1ldGhvZCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgZHVwbGljYXRlIG9wZXJhdGlvbklkc1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9wZXJhdGlvbklkKSkge1xuICAgICAgICBpZiAoXy5pbmRleE9mKG1ldGFkYXRhLm9wZXJhdGlvbklkcywgb3BlcmF0aW9uSWQpICE9PSAtMSkge1xuICAgICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6ICdEVVBMSUNBVEVfT1BFUkFUSU9OSUQnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0Nhbm5vdCBoYXZlIG11bHRpcGxlIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZSBvcGVyYXRpb25JZDogJyArIG9wZXJhdGlvbklkLFxuICAgICAgICAgICAgcGF0aDogb1BhdGguY29uY2F0KFsnb3BlcmF0aW9uSWQnXSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXRhZGF0YS5vcGVyYXRpb25JZHMucHVzaChvcGVyYXRpb25JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgZHVwbGljYXRlIG9wZXJhdGlvbi1sZXZlbCBwYXJhbWV0ZXJzIChXZSBkbyB0aGlzIG1hbnVhbGx5IGZvciB0aGUgc2FtZSByZWFzb25zIGFib3ZlKVxuICAgICAgXy5yZWR1Y2Uob3BlcmF0aW9uRGVmLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChzZWVuUGFyYW1ldGVycywgcGFyYW1ldGVyLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVEdXBsaWNhdGVQYXJhbWV0ZXIoc2VlblBhcmFtZXRlcnMsIHBhcmFtZXRlciwgb1BhdGguY29uY2F0KFsncGFyYW1ldGVycycsIGluZGV4LnRvU3RyaW5nKCldKSk7XG4gICAgICB9LCBbXSk7XG5cbiAgICAgIC8vIFVzZSBBcGlEZWZpbml0aW9uI2dldE9wZXJhdGlvbiB0byBhdm9pZCBoYXZpbmcgdG8gY29uc29saWRhdGUgcGFyYW1ldGVyc1xuICAgICAgcGFyYW1ldGVycyA9IGFwaURlZmluaXRpb24uZ2V0T3BlcmF0aW9uKHBhdGgsIG1ldGhvZCkuZ2V0UGFyYW1ldGVycygpO1xuXG4gICAgICBwYXRoTWV0YWRhdGEgPSBfLnJlZHVjZShwYXJhbWV0ZXJzLCBmdW5jdGlvbiAocE1ldGFkYXRhLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgLy8gUmVjb3JkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgICBpZiAocGFyYW1ldGVyLmluID09PSAncGF0aCcpIHtcbiAgICAgICAgICBkZWZpbmVkUGF0aFBhcmFtZXRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyLnB0cjtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIuaW4gPT09ICdib2R5Jykge1xuICAgICAgICAgIHBNZXRhZGF0YS5ib2R5UGFyYW1ldGV0ZXJzICs9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLmluID09PSAnZm9ybURhdGEnKSB7XG4gICAgICAgICAgcE1ldGFkYXRhLmZvcm1QYXJhbWV0ZXJzICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcE1ldGFkYXRhO1xuICAgICAgfSwge2JvZHlQYXJhbWV0ZXRlcnM6IDAsIGZvcm1QYXJhbWV0ZXJzOiAwfSk7XG5cbiAgICAgIC8vIElkZW50aWZ5IG11bHRpcGxlIGJvZHkgcGFyYW1ldGVyc1xuICAgICAgaWYgKHBhdGhNZXRhZGF0YS5ib2R5UGFyYW1ldGV0ZXJzID4gMSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ01VTFRJUExFX0JPRFlfUEFSQU1FVEVSUycsXG4gICAgICAgICAgbWVzc2FnZTogJ09wZXJhdGlvbiBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBib2R5IHBhcmFtZXRlcnMnLFxuICAgICAgICAgIHBhdGg6IG9QYXRoXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBJZGVudGlmeSBoYXZpbmcgYm90aCBhIGJvZHkgYW5kIGEgZm9ybSBwYXJhbWV0ZXJcbiAgICAgIGlmIChwYXRoTWV0YWRhdGEuYm9keVBhcmFtZXRldGVycyA+IDAgJiYgcGF0aE1ldGFkYXRhLmZvcm1QYXJhbWV0ZXJzID4gMCkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogJ0lOVkFMSURfUEFSQU1FVEVSX0NPTUJJTkFUSU9OJyxcbiAgICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNhbm5vdCBoYXZlIGEgYm9keSBwYXJhbWV0ZXIgYW5kIGEgZm9ybURhdGEgcGFyYW1ldGVyJyxcbiAgICAgICAgICBwYXRoOiBvUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbnRpZnkgdW5kZWZpbmVkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShkZWNsYXJlZFBhdGhQYXJhbWV0ZXJzLCBfLmtleXMoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzKSksIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnTUlTU0lOR19QQVRIX1BBUkFNRVRFUl9ERUZJTklUSU9OJyxcbiAgICAgICAgICBtZXNzYWdlOiAnUGF0aCBwYXJhbWV0ZXIgaXMgZGVjbGFyZWQgYnV0IGlzIG5vdCBkZWZpbmVkOiAnICsgbmFtZSxcbiAgICAgICAgICBwYXRoOiBvUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZGVudGlmeSB1bmRlY2xhcmVkIHBhdGggcGFyYW1ldGVyc1xuICAgICAgXy5mb3JFYWNoKF8uZGlmZmVyZW5jZShfLmtleXMoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzKSwgZGVjbGFyZWRQYXRoUGFyYW1ldGVycyksIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJlc3BvbnNlLmVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnTUlTU0lOR19QQVRIX1BBUkFNRVRFUl9ERUNMQVJBVElPTicsXG4gICAgICAgICAgbWVzc2FnZTogJ1BhdGggcGFyYW1ldGVyIGlzIGRlZmluZWQgYnV0IGlzIG5vdCBkZWNsYXJlZDogJyArIG5hbWUsXG4gICAgICAgICAgcGF0aDogSnNvblJlZnMucGF0aEZyb21QdHIoZGVmaW5lZFBhdGhQYXJhbWV0ZXJzW25hbWVdKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9LCB7cGF0aHM6IFtdLCBvcGVyYXRpb25JZHM6IFtdfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAganNvblNjaGVtYVZhbGlkYXRvcjogdmFsaWRhdGVTdHJ1Y3R1cmUsXG4gIHNlbWFudGljVmFsaWRhdG9yczogW1xuICAgIHZhbGlkYXRlUmVmZXJlbmNlcyxcbiAgICB2YWxpZGF0ZVNjaGVtYU9iamVjdHMsXG4gICAgdmFsaWRhdGVQYXRoc0FuZE9wZXJhdGlvbnNcbiAgXVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gY29tcGFyZSBhbmQgaXNCdWZmZXIgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9ibG9iLzY4MGU5ZTVlNDg4ZjIyYWFjMjc1OTlhNTdkYzg0NGE2MzE1OTI4ZGQvaW5kZXguanNcbi8vIG9yaWdpbmFsIG5vdGljZTpcblxuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgeCA9IGEubGVuZ3RoO1xuICB2YXIgeSA9IGIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldO1xuICAgICAgeSA9IGJbaV07XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKHkgPCB4KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBpc0J1ZmZlcihiKSB7XG4gIGlmIChnbG9iYWwuQnVmZmVyICYmIHR5cGVvZiBnbG9iYWwuQnVmZmVyLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoYik7XG4gIH1cbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcik7XG59XG5cbi8vIGJhc2VkIG9uIG5vZGUgYXNzZXJ0LCBvcmlnaW5hbCBub3RpY2U6XG5cbi8vIGh0dHA6Ly93aWtpLmNvbW1vbmpzLm9yZy93aWtpL1VuaXRfVGVzdGluZy8xLjBcbi8vXG4vLyBUSElTIElTIE5PVCBURVNURUQgTk9SIExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghXG4vL1xuLy8gT3JpZ2luYWxseSBmcm9tIG5hcndoYWwuanMgKGh0dHA6Ly9uYXJ3aGFsanMub3JnKVxuLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0b1xuLy8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU5cbi8vIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT05cbi8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwvJyk7XG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwU2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgZnVuY3Rpb25zSGF2ZU5hbWVzID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbygpIHt9Lm5hbWUgPT09ICdmb28nO1xufSgpKTtcbmZ1bmN0aW9uIHBUb1N0cmluZyAob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcbn1cbmZ1bmN0aW9uIGlzVmlldyhhcnJidWYpIHtcbiAgaWYgKGlzQnVmZmVyKGFycmJ1ZikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGFycmJ1Zik7XG4gIH1cbiAgaWYgKCFhcnJidWYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGFycmJ1ZiBpbnN0YW5jZW9mIERhdGFWaWV3KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGFycmJ1Zi5idWZmZXIgJiYgYXJyYnVmLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gMS4gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3dcbi8vIEFzc2VydGlvbkVycm9yJ3Mgd2hlbiBwYXJ0aWN1bGFyIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuIFRoZVxuLy8gYXNzZXJ0IG1vZHVsZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGZvbGxvd2luZyBpbnRlcmZhY2UuXG5cbnZhciBhc3NlcnQgPSBtb2R1bGUuZXhwb3J0cyA9IG9rO1xuXG4vLyAyLiBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBhc3NlcnQuXG4vLyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogbWVzc2FnZSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IGFjdHVhbCxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgfSlcblxudmFyIHJlZ2V4ID0gL1xccypmdW5jdGlvblxccysoW15cXChcXHNdKilcXHMqLztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUvYmxvYi9hZGVlZWVjOGJmY2M2MDY4YjE4N2Q3ZDlmYjNkNWJiMWQzYTMwODk5L2ltcGxlbWVudGF0aW9uLmpzXG5mdW5jdGlvbiBnZXROYW1lKGZ1bmMpIHtcbiAgaWYgKCF1dGlsLmlzRnVuY3Rpb24oZnVuYykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcykge1xuICAgIHJldHVybiBmdW5jLm5hbWU7XG4gIH1cbiAgdmFyIHN0ciA9IGZ1bmMudG9TdHJpbmcoKTtcbiAgdmFyIG1hdGNoID0gc3RyLm1hdGNoKHJlZ2V4KTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xufVxuYXNzZXJ0LkFzc2VydGlvbkVycm9yID0gZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Iob3B0aW9ucykge1xuICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICB0aGlzLmFjdHVhbCA9IG9wdGlvbnMuYWN0dWFsO1xuICB0aGlzLmV4cGVjdGVkID0gb3B0aW9ucy5leHBlY3RlZDtcbiAgdGhpcy5vcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3I7XG4gIGlmIChvcHRpb25zLm1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2U7XG4gICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0TWVzc2FnZSh0aGlzKTtcbiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICB9XG4gIHZhciBzdGFja1N0YXJ0RnVuY3Rpb24gPSBvcHRpb25zLnN0YWNrU3RhcnRGdW5jdGlvbiB8fCBmYWlsO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBzdGFja1N0YXJ0RnVuY3Rpb24pO1xuICB9IGVsc2Uge1xuICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJhY2VcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG4gICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgdmFyIG91dCA9IGVyci5zdGFjaztcblxuICAgICAgLy8gdHJ5IHRvIHN0cmlwIHVzZWxlc3MgZnJhbWVzXG4gICAgICB2YXIgZm5fbmFtZSA9IGdldE5hbWUoc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgICAgIHZhciBpZHggPSBvdXQuaW5kZXhPZignXFxuJyArIGZuX25hbWUpO1xuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIC8vIG9uY2Ugd2UgaGF2ZSBsb2NhdGVkIHRoZSBmdW5jdGlvbiBmcmFtZVxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHN0cmlwIG91dCBldmVyeXRoaW5nIGJlZm9yZSBpdCAoYW5kIGl0cyBsaW5lKVxuICAgICAgICB2YXIgbmV4dF9saW5lID0gb3V0LmluZGV4T2YoJ1xcbicsIGlkeCArIDEpO1xuICAgICAgICBvdXQgPSBvdXQuc3Vic3RyaW5nKG5leHRfbGluZSArIDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YWNrID0gb3V0O1xuICAgIH1cbiAgfVxufTtcblxuLy8gYXNzZXJ0LkFzc2VydGlvbkVycm9yIGluc3RhbmNlb2YgRXJyb3JcbnV0aWwuaW5oZXJpdHMoYXNzZXJ0LkFzc2VydGlvbkVycm9yLCBFcnJvcik7XG5cbmZ1bmN0aW9uIHRydW5jYXRlKHMsIG4pIHtcbiAgaWYgKHR5cGVvZiBzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuZnVuY3Rpb24gaW5zcGVjdChzb21ldGhpbmcpIHtcbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcyB8fCAhdXRpbC5pc0Z1bmN0aW9uKHNvbWV0aGluZykpIHtcbiAgICByZXR1cm4gdXRpbC5pbnNwZWN0KHNvbWV0aGluZyk7XG4gIH1cbiAgdmFyIHJhd25hbWUgPSBnZXROYW1lKHNvbWV0aGluZyk7XG4gIHZhciBuYW1lID0gcmF3bmFtZSA/ICc6ICcgKyByYXduYW1lIDogJyc7XG4gIHJldHVybiAnW0Z1bmN0aW9uJyArICBuYW1lICsgJ10nO1xufVxuZnVuY3Rpb24gZ2V0TWVzc2FnZShzZWxmKSB7XG4gIHJldHVybiB0cnVuY2F0ZShpbnNwZWN0KHNlbGYuYWN0dWFsKSwgMTI4KSArICcgJyArXG4gICAgICAgICBzZWxmLm9wZXJhdG9yICsgJyAnICtcbiAgICAgICAgIHRydW5jYXRlKGluc3BlY3Qoc2VsZi5leHBlY3RlZCksIDEyOCk7XG59XG5cbi8vIEF0IHByZXNlbnQgb25seSB0aGUgdGhyZWUga2V5cyBtZW50aW9uZWQgYWJvdmUgYXJlIHVzZWQgYW5kXG4vLyB1bmRlcnN0b29kIGJ5IHRoZSBzcGVjLiBJbXBsZW1lbnRhdGlvbnMgb3Igc3ViIG1vZHVsZXMgY2FuIHBhc3Ncbi8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3MgY29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmVcbi8vIGlnbm9yZWQuXG5cbi8vIDMuIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yXG4vLyB3aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2UgdGhhdFxuLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuICBBbGwgYXNzZXJ0aW9uIG1ldGhvZHMgcHJvdmlkZVxuLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3Jcbi8vIGRpc3BsYXkgcHVycG9zZXMuXG5cbmZ1bmN0aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRGdW5jdGlvbikge1xuICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGFjdHVhbDogYWN0dWFsLFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFja1N0YXJ0RnVuY3Rpb25cbiAgfSk7XG59XG5cbi8vIEVYVEVOU0lPTiEgYWxsb3dzIGZvciB3ZWxsIGJlaGF2ZWQgZXJyb3JzIGRlZmluZWQgZWxzZXdoZXJlLlxuYXNzZXJ0LmZhaWwgPSBmYWlsO1xuXG4vLyA0LiBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBhcyBkZXRlcm1pbmVkXG4vLyBieSAhIWd1YXJkLlxuLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdlX29wdCk7XG4vLyBUaGlzIHN0YXRlbWVudCBpcyBlcXVpdmFsZW50IHRvIGFzc2VydC5lcXVhbCh0cnVlLCAhIWd1YXJkLFxuLy8gbWVzc2FnZV9vcHQpOy4gVG8gdGVzdCBzdHJpY3RseSBmb3IgdGhlIHZhbHVlIHRydWUsIHVzZVxuLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNzYWdlX29wdCk7LlxuXG5mdW5jdGlvbiBvayh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAoIXZhbHVlKSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spO1xufVxuYXNzZXJ0Lm9rID0gb2s7XG5cbi8vIDUuIFRoZSBlcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgc2hhbGxvdywgY29lcmNpdmUgZXF1YWxpdHkgd2l0aFxuLy8gPT0uXG4vLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTtcbn07XG5cbi8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBvYmplY3RzIGFyZSBub3QgZXF1YWxcbi8vIHdpdGggIT0gYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT0nLCBhc3NlcnQubm90RXF1YWwpO1xuICB9XG59O1xuXG4vLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi5cbi8vIGFzc2VydC5kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGZhbHNlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBFcXVhbCcsIGFzc2VydC5kZWVwRXF1YWwpO1xuICB9XG59O1xuXG5hc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnZGVlcFN0cmljdEVxdWFsJywgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcykge1xuICAvLyA3LjEuIEFsbCBpZGVudGljYWwgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICYmIGlzQnVmZmVyKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBjb21wYXJlKGFjdHVhbCwgZXhwZWN0ZWQpID09PSAwO1xuXG4gIC8vIDcuMi4gSWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgRGF0ZSBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgRGF0ZSBvYmplY3QgdGhhdCByZWZlcnMgdG8gdGhlIHNhbWUgdGltZS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzRGF0ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBhY3R1YWwuZ2V0VGltZSgpID09PSBleHBlY3RlZC5nZXRUaW1lKCk7XG5cbiAgLy8gNy4zIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgUmVnRXhwIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNvdXJjZSBhbmRcbiAgLy8gcHJvcGVydGllcyAoYGdsb2JhbGAsIGBtdWx0aWxpbmVgLCBgbGFzdEluZGV4YCwgYGlnbm9yZUNhc2VgKS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkgJiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gYWN0dWFsLnNvdXJjZSA9PT0gZXhwZWN0ZWQuc291cmNlICYmXG4gICAgICAgICAgIGFjdHVhbC5nbG9iYWwgPT09IGV4cGVjdGVkLmdsb2JhbCAmJlxuICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5tdWx0aWxpbmUgJiZcbiAgICAgICAgICAgYWN0dWFsLmxhc3RJbmRleCA9PT0gZXhwZWN0ZWQubGFzdEluZGV4ICYmXG4gICAgICAgICAgIGFjdHVhbC5pZ25vcmVDYXNlID09PSBleHBlY3RlZC5pZ25vcmVDYXNlO1xuXG4gIC8vIDcuNC4gT3RoZXIgcGFpcnMgdGhhdCBkbyBub3QgYm90aCBwYXNzIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyxcbiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS5cbiAgfSBlbHNlIGlmICgoYWN0dWFsID09PSBudWxsIHx8IHR5cGVvZiBhY3R1YWwgIT09ICdvYmplY3QnKSAmJlxuICAgICAgICAgICAgIChleHBlY3RlZCA9PT0gbnVsbCB8fCB0eXBlb2YgZXhwZWN0ZWQgIT09ICdvYmplY3QnKSkge1xuICAgIHJldHVybiBzdHJpY3QgPyBhY3R1YWwgPT09IGV4cGVjdGVkIDogYWN0dWFsID09IGV4cGVjdGVkO1xuXG4gIC8vIElmIGJvdGggdmFsdWVzIGFyZSBpbnN0YW5jZXMgb2YgdHlwZWQgYXJyYXlzLCB3cmFwIHRoZWlyIHVuZGVybHlpbmdcbiAgLy8gQXJyYXlCdWZmZXJzIGluIGEgQnVmZmVyIGVhY2ggdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2VcbiAgLy8gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhlIGFycmF5cyB0byBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgY2hlY2tlZCBieVxuICAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIChha2EgcFRvU3RyaW5nKS4gTmV2ZXIgcGVyZm9ybSBiaW5hcnlcbiAgLy8gY29tcGFyaXNvbnMgZm9yIEZsb2F0KkFycmF5cywgdGhvdWdoLCBzaW5jZSBlLmcuICswID09PSAtMCBidXQgdGhlaXJcbiAgLy8gYml0IHBhdHRlcm5zIGFyZSBub3QgaWRlbnRpY2FsLlxuICB9IGVsc2UgaWYgKGlzVmlldyhhY3R1YWwpICYmIGlzVmlldyhleHBlY3RlZCkgJiZcbiAgICAgICAgICAgICBwVG9TdHJpbmcoYWN0dWFsKSA9PT0gcFRvU3RyaW5nKGV4cGVjdGVkKSAmJlxuICAgICAgICAgICAgICEoYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG4gICAgICAgICAgICAgICBhY3R1YWwgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYWN0dWFsLmJ1ZmZlciksXG4gICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyKSkgPT09IDA7XG5cbiAgLy8gNy41IEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywgZXF1aXZhbGVuY2UgaXNcbiAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkXG4gIC8vIHdpdGggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKSwgdGhlIHNhbWUgc2V0IG9mIGtleXNcbiAgLy8gKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeVxuICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpc1xuICAvLyBhY2NvdW50cyBmb3IgYm90aCBuYW1lZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy5cbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICE9PSBpc0J1ZmZlcihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgbWVtb3MgPSBtZW1vcyB8fCB7YWN0dWFsOiBbXSwgZXhwZWN0ZWQ6IFtdfTtcblxuICAgIHZhciBhY3R1YWxJbmRleCA9IG1lbW9zLmFjdHVhbC5pbmRleE9mKGFjdHVhbCk7XG4gICAgaWYgKGFjdHVhbEluZGV4ICE9PSAtMSkge1xuICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBtZW1vcy5leHBlY3RlZC5pbmRleE9mKGV4cGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vcy5hY3R1YWwucHVzaChhY3R1YWwpO1xuICAgIG1lbW9zLmV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpO1xuXG4gICAgcmV0dXJuIG9iakVxdWl2KGFjdHVhbCwgZXhwZWN0ZWQsIHN0cmljdCwgbWVtb3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIHN0cmljdCwgYWN0dWFsVmlzaXRlZE9iamVjdHMpIHtcbiAgaWYgKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy8gaWYgb25lIGlzIGEgcHJpbWl0aXZlLCB0aGUgb3RoZXIgbXVzdCBiZSBzYW1lXG4gIGlmICh1dGlsLmlzUHJpbWl0aXZlKGEpIHx8IHV0aWwuaXNQcmltaXRpdmUoYikpXG4gICAgcmV0dXJuIGEgPT09IGI7XG4gIGlmIChzdHJpY3QgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYikpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB2YXIgYUlzQXJncyA9IGlzQXJndW1lbnRzKGEpO1xuICB2YXIgYklzQXJncyA9IGlzQXJndW1lbnRzKGIpO1xuICBpZiAoKGFJc0FyZ3MgJiYgIWJJc0FyZ3MpIHx8ICghYUlzQXJncyAmJiBiSXNBcmdzKSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChhSXNBcmdzKSB7XG4gICAgYSA9IHBTbGljZS5jYWxsKGEpO1xuICAgIGIgPSBwU2xpY2UuY2FsbChiKTtcbiAgICByZXR1cm4gX2RlZXBFcXVhbChhLCBiLCBzdHJpY3QpO1xuICB9XG4gIHZhciBrYSA9IG9iamVjdEtleXMoYSk7XG4gIHZhciBrYiA9IG9iamVjdEtleXMoYik7XG4gIHZhciBrZXksIGk7XG4gIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXNcbiAgLy8gaGFzT3duUHJvcGVydHkpXG4gIGlmIChrYS5sZW5ndGggIT09IGtiLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG4gIC8vdGhlIHNhbWUgc2V0IG9mIGtleXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksXG4gIGthLnNvcnQoKTtcbiAga2Iuc29ydCgpO1xuICAvL35+fmNoZWFwIGtleSB0ZXN0XG4gIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGthW2ldICE9PSBrYltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvL2VxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kXG4gIC8vfn5+cG9zc2libHkgZXhwZW5zaXZlIGRlZXAgdGVzdFxuICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGtleSA9IGthW2ldO1xuICAgIGlmICghX2RlZXBFcXVhbChhW2tleV0sIGJba2V5XSwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIDguIFRoZSBub24tZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGZvciBhbnkgZGVlcCBpbmVxdWFsaXR5LlxuLy8gYXNzZXJ0Lm5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3REZWVwRXF1YWwgPSBmdW5jdGlvbiBub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBmYWxzZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQubm90RGVlcEVxdWFsKTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbCA9IG5vdERlZXBTdHJpY3RFcXVhbDtcbmZ1bmN0aW9uIG5vdERlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcFN0cmljdEVxdWFsJywgbm90RGVlcFN0cmljdEVxdWFsKTtcbiAgfVxufVxuXG5cbi8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4vLyBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnPT09JywgYXNzZXJ0LnN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuLy8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0IGluZXF1YWxpdHksIGFzXG4vLyBkZXRlcm1pbmVkIGJ5ICE9PS4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3RTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICchPT0nLCBhc3NlcnQubm90U3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7XG4gIGlmICghYWN0dWFsIHx8ICFleHBlY3RlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXhwZWN0ZWQpID09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7XG4gICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJZ25vcmUuICBUaGUgaW5zdGFuY2VvZiBjaGVjayBkb2Vzbid0IHdvcmsgZm9yIGFycm93IGZ1bmN0aW9ucy5cbiAgfVxuXG4gIGlmIChFcnJvci5pc1Byb3RvdHlwZU9mKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiBfdHJ5QmxvY2soYmxvY2spIHtcbiAgdmFyIGVycm9yO1xuICB0cnkge1xuICAgIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBfdGhyb3dzKHNob3VsZFRocm93LCBibG9jaywgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGFjdHVhbDtcblxuICBpZiAodHlwZW9mIGJsb2NrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJibG9ja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gZXhwZWN0ZWQ7XG4gICAgZXhwZWN0ZWQgPSBudWxsO1xuICB9XG5cbiAgYWN0dWFsID0gX3RyeUJsb2NrKGJsb2NrKTtcblxuICBtZXNzYWdlID0gKGV4cGVjdGVkICYmIGV4cGVjdGVkLm5hbWUgPyAnICgnICsgZXhwZWN0ZWQubmFtZSArICcpLicgOiAnLicpICtcbiAgICAgICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7XG5cbiAgaWYgKHNob3VsZFRocm93ICYmICFhY3R1YWwpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTtcbiAgfVxuXG4gIHZhciB1c2VyUHJvdmlkZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnO1xuICB2YXIgaXNVbndhbnRlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiB1dGlsLmlzRXJyb3IoYWN0dWFsKTtcbiAgdmFyIGlzVW5leHBlY3RlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgIWV4cGVjdGVkO1xuXG4gIGlmICgoaXNVbndhbnRlZEV4Y2VwdGlvbiAmJlxuICAgICAgdXNlclByb3ZpZGVkTWVzc2FnZSAmJlxuICAgICAgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8XG4gICAgICBpc1VuZXhwZWN0ZWRFeGNlcHRpb24pIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdHb3QgdW53YW50ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpO1xuICB9XG5cbiAgaWYgKChzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgZXhwZWN0ZWQgJiZcbiAgICAgICFleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1YWwpKSB7XG4gICAgdGhyb3cgYWN0dWFsO1xuICB9XG59XG5cbi8vIDExLiBFeHBlY3RlZCB0byB0aHJvdyBhbiBlcnJvcjpcbi8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQudGhyb3dzID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7XG4gIF90aHJvd3ModHJ1ZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTtcbn07XG5cbi8vIEVYVEVOU0lPTiEgVGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLlxuYXNzZXJ0LmRvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkge1xuICBfdGhyb3dzKGZhbHNlLCBibG9jaywgZXJyb3IsIG1lc3NhZ2UpO1xufTtcblxuYXNzZXJ0LmlmRXJyb3IgPSBmdW5jdGlvbihlcnIpIHsgaWYgKGVycikgdGhyb3cgZXJyOyB9O1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiBrZXlzO1xufTtcbiIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlcihhcmcpIHtcbiAgcmV0dXJuIGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0J1xuICAgICYmIHR5cGVvZiBhcmcuY29weSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcuZmlsbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcucmVhZFVJbnQ4ID09PSAnZnVuY3Rpb24nO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZm9ybWF0UmVnRXhwID0gLyVbc2RqJV0vZztcbmV4cG9ydHMuZm9ybWF0ID0gZnVuY3Rpb24oZikge1xuICBpZiAoIWlzU3RyaW5nKGYpKSB7XG4gICAgdmFyIG9iamVjdHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgb2JqZWN0cy5wdXNoKGluc3BlY3QoYXJndW1lbnRzW2ldKSk7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHZhciBpID0gMTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIHN0ciA9IFN0cmluZyhmKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24oeCkge1xuICAgIGlmICh4ID09PSAnJSUnKSByZXR1cm4gJyUnO1xuICAgIGlmIChpID49IGxlbikgcmV0dXJuIHg7XG4gICAgc3dpdGNoICh4KSB7XG4gICAgICBjYXNlICclcyc6IHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWonOlxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICB9KTtcbiAgZm9yICh2YXIgeCA9IGFyZ3NbaV07IGkgPCBsZW47IHggPSBhcmdzWysraV0pIHtcbiAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVjdCh4KSkge1xuICAgICAgc3RyICs9ICcgJyArIHg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciArPSAnICcgKyBpbnNwZWN0KHgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyO1xufTtcblxuXG4vLyBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLlxuLy8gUmV0dXJucyBhIG1vZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC5cbi8vIElmIC0tbm8tZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG5leHBvcnRzLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKGZuLCBtc2cpIHtcbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKGlzVW5kZWZpbmVkKGdsb2JhbC5wcm9jZXNzKSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn07XG5cblxudmFyIGRlYnVncyA9IHt9O1xudmFyIGRlYnVnRW52aXJvbjtcbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpXG4gICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJztcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAobmV3IFJlZ0V4cCgnXFxcXGInICsgc2V0ICsgJ1xcXFxiJywgJ2knKS50ZXN0KGRlYnVnRW52aXJvbikpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZnVuY3Rpb24gaXNBcnJheShhcikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcik7XG59XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7XG59XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcblxuZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGwgPSBpc051bGw7XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5leHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiBpc09iamVjdChyZSkgJiYgb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gaXNPYmplY3QoZSkgJiZcbiAgICAgIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IHJlcXVpcmUoJy4vc3VwcG9ydC9pc0J1ZmZlcicpO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG5cblxuZnVuY3Rpb24gcGFkKG4pIHtcbiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJpbmcoMTApIDogbi50b1N0cmluZygxMCk7XG59XG5cblxudmFyIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLFxuICAgICAgICAgICAgICAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuLy8gMjYgRmViIDE2OjE5OjM0XG5mdW5jdGlvbiB0aW1lc3RhbXAoKSB7XG4gIHZhciBkID0gbmV3IERhdGUoKTtcbiAgdmFyIHRpbWUgPSBbcGFkKGQuZ2V0SG91cnMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldE1pbnV0ZXMoKSksXG4gICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTtcbiAgcmV0dXJuIFtkLmdldERhdGUoKSwgbW9udGhzW2QuZ2V0TW9udGgoKV0sIHRpbWVdLmpvaW4oJyAnKTtcbn1cblxuXG4vLyBsb2cgaXMganVzdCBhIHRoaW4gd3JhcHBlciB0byBjb25zb2xlLmxvZyB0aGF0IHByZXBlbmRzIGEgdGltZXN0YW1wXG5leHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkge1xuICBjb25zb2xlLmxvZygnJXMgLSAlcycsIHRpbWVzdGFtcCgpLCBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpKTtcbn07XG5cblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuXG4gKlxuICogVGhlIEZ1bmN0aW9uLnByb3RvdHlwZS5pbmhlcml0cyBmcm9tIGxhbmcuanMgcmV3cml0dGVuIGFzIGEgc3RhbmRhbG9uZVxuICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkXG4gKiBkdXJpbmcgYm9vdHN0cmFwcGluZyB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJld3JpdHRlbiB1c2luZyBzb21lIG5hdGl2ZVxuICogZnVuY3Rpb25zIGFzIHByb3RvdHlwZSBzZXR1cCB1c2luZyBub3JtYWwgSmF2YVNjcmlwdCBkb2VzIG5vdCB3b3JrIGFzXG4gKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBpbiByMTE0OTAzKS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHdoaWNoIG5lZWRzIHRvIGluaGVyaXQgdGhlXG4gKiAgICAgcHJvdG90eXBlLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHRvIGluaGVyaXQgcHJvdG90eXBlIGZyb20uXG4gKi9cbmV4cG9ydHMuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5leHBvcnRzLl9leHRlbmQgPSBmdW5jdGlvbihvcmlnaW4sIGFkZCkge1xuICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBhZGQgaXNuJ3QgYW4gb2JqZWN0XG4gIGlmICghYWRkIHx8ICFpc09iamVjdChhZGQpKSByZXR1cm4gb3JpZ2luO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWRkKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIG9yaWdpbltrZXlzW2ldXSA9IGFkZFtrZXlzW2ldXTtcbiAgfVxuICByZXR1cm4gb3JpZ2luO1xufTtcblxuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsoXG4gICAgICB1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpXG4gICAgKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbVpwYkdVaU9pSmxiWEIwZVM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbVpwYkdVaU9pSmZaVzF3ZEhrdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXMTE5IiwiLyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjEgYnkgQG1hdGhpYXMgKi9cbjsoZnVuY3Rpb24ocm9vdCkge1xuXG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZXMgKi9cblx0dmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJlxuXHRcdCFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cdHZhciBmcmVlTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiZcblx0XHQhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblx0dmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbDtcblx0aWYgKFxuXHRcdGZyZWVHbG9iYWwuZ2xvYmFsID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC53aW5kb3cgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLnNlbGYgPT09IGZyZWVHbG9iYWxcblx0KSB7XG5cdFx0cm9vdCA9IGZyZWVHbG9iYWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwdW55Y29kZWAgb2JqZWN0LlxuXHQgKiBAbmFtZSBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdHZhciBwdW55Y29kZSxcblxuXHQvKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5cdG1heEludCA9IDIxNDc0ODM2NDcsIC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuXHQvKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG5cdGJhc2UgPSAzNixcblx0dE1pbiA9IDEsXG5cdHRNYXggPSAyNixcblx0c2tldyA9IDM4LFxuXHRkYW1wID0gNzAwLFxuXHRpbml0aWFsQmlhcyA9IDcyLFxuXHRpbml0aWFsTiA9IDEyOCwgLy8gMHg4MFxuXHRkZWxpbWl0ZXIgPSAnLScsIC8vICdcXHgyRCdcblxuXHQvKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xuXHRyZWdleFB1bnljb2RlID0gL154bi0tLyxcblx0cmVnZXhOb25BU0NJSSA9IC9bXlxceDIwLVxceDdFXS8sIC8vIHVucHJpbnRhYmxlIEFTQ0lJIGNoYXJzICsgbm9uLUFTQ0lJIGNoYXJzXG5cdHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2csIC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuXHQvKiogRXJyb3IgbWVzc2FnZXMgKi9cblx0ZXJyb3JzID0ge1xuXHRcdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdFx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0XHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xuXHR9LFxuXG5cdC8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cblx0YmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluLFxuXHRmbG9vciA9IE1hdGguZmxvb3IsXG5cdHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsXG5cblx0LyoqIFRlbXBvcmFyeSB2YXJpYWJsZSAqL1xuXHRrZXk7XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cblx0ICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXJyb3IodHlwZSkge1xuXHRcdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG5cdH1cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuXHQgKiBpdGVtLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0XHR2YXIgcmVzdWx0ID0gW107XG5cdFx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuXHQgKiBhZGRyZXNzZXMuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuXHQgKiBjaGFyYWN0ZXIuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG5cdCAqIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0XHR2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0XHR2YXIgcmVzdWx0ID0gJyc7XG5cdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRcdHN0cmluZyA9IHBhcnRzWzFdO1xuXHRcdH1cblx0XHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdFx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0XHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdFx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRcdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcblx0ICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuXHQgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuXHQgKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcblx0ICogbWF0Y2hpbmcgVVRGLTE2LlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGRlY29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgY291bnRlciA9IDAsXG5cdFx0ICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG5cdFx0ICAgIHZhbHVlLFxuXHRcdCAgICBleHRyYTtcblx0XHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0dmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0XHQvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcblx0XHRcdFx0ZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcblx0XHRcdFx0XHQvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcblx0XHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZW5jb2RlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcblx0XHRyZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuXHRcdFx0dmFyIG91dHB1dCA9ICcnO1xuXHRcdFx0aWYgKHZhbHVlID4gMHhGRkZGKSB7XG5cdFx0XHRcdHZhbHVlIC09IDB4MTAwMDA7XG5cdFx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApO1xuXHRcdFx0XHR2YWx1ZSA9IDB4REMwMCB8IHZhbHVlICYgMHgzRkY7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlKTtcblx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuXHQgKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuXHQgKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcblx0XHRpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDIyO1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDY1O1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDk3O1xuXHRcdH1cblx0XHRyZXR1cm4gYmFzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuXHQgKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcblx0ICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcblx0ICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cblx0ICovXG5cdGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHRcdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdFx0Ly8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG5cdFx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuXHQgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdFx0dmFyIGsgPSAwO1xuXHRcdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdFx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRcdGZvciAoLyogbm8gaW5pdGlhbGl6YXRpb24gKi87IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdFx0fVxuXHRcdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG5cdCAqIHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHRcdC8vIERvbid0IHVzZSBVQ1MtMlxuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG5cdFx0ICAgIG91dCxcblx0XHQgICAgaSA9IDAsXG5cdFx0ICAgIG4gPSBpbml0aWFsTixcblx0XHQgICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuXHRcdCAgICBiYXNpYyxcblx0XHQgICAgaixcblx0XHQgICAgaW5kZXgsXG5cdFx0ICAgIG9sZGksXG5cdFx0ICAgIHcsXG5cdFx0ICAgIGssXG5cdFx0ICAgIGRpZ2l0LFxuXHRcdCAgICB0LFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgYmFzZU1pbnVzVDtcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHRcdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdFx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0XHRiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdFx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdFx0YmFzaWMgPSAwO1xuXHRcdH1cblxuXHRcdGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdFx0ZXJyb3IoJ25vdC1iYXNpYycpO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHRcdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0XHRmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0XHRmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdFx0fVxuXG5cdFx0XHRvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0XHRpICU9IG91dDtcblxuXHRcdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuXHRcdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuXHQgKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0XHR2YXIgbixcblx0XHQgICAgZGVsdGEsXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50LFxuXHRcdCAgICBiYXNpY0xlbmd0aCxcblx0XHQgICAgYmlhcyxcblx0XHQgICAgaixcblx0XHQgICAgbSxcblx0XHQgICAgcSxcblx0XHQgICAgayxcblx0XHQgICAgdCxcblx0XHQgICAgY3VycmVudFZhbHVlLFxuXHRcdCAgICBvdXRwdXQgPSBbXSxcblx0XHQgICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cblx0XHQgICAgaW5wdXRMZW5ndGgsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG5cdFx0ICAgIGJhc2VNaW51c1QsXG5cdFx0ICAgIHFNaW51c1Q7XG5cblx0XHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG5cdFx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHRcdC8vIENhY2hlIHRoZSBsZW5ndGhcblx0XHRpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHRcdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG5cdFx0biA9IGluaXRpYWxOO1xuXHRcdGRlbHRhID0gMDtcblx0XHRiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG5cdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG5cdFx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdFx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdFx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG5cdFx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0XHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdFx0Zm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuXHRcdFx0aGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0XHRuID0gbTtcblxuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcblx0XHRcdFx0XHRmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQrK2RlbHRhO1xuXHRcdFx0KytuO1xuXG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuXHQgKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG5cdCAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuXHQgKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogY29udmVydCB0byBVbmljb2RlLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcblx0ICogc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcblx0ICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG5cdCAqIEFTQ0lJLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcblx0ICogVW5pY29kZSBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3Jcblx0ICogZW1haWwgYWRkcmVzcy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuXHRwdW55Y29kZSA9IHtcblx0XHQvKipcblx0XHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgU3RyaW5nXG5cdFx0ICovXG5cdFx0J3ZlcnNpb24nOiAnMS40LjEnLFxuXHRcdC8qKlxuXHRcdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdFx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0XHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBPYmplY3Rcblx0XHQgKi9cblx0XHQndWNzMic6IHtcblx0XHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0XHR9LFxuXHRcdCdkZWNvZGUnOiBkZWNvZGUsXG5cdFx0J2VuY29kZSc6IGVuY29kZSxcblx0XHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdFx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxuXHR9O1xuXG5cdC8qKiBFeHBvc2UgYHB1bnljb2RlYCAqL1xuXHQvLyBTb21lIEFNRCBidWlsZCBvcHRpbWl6ZXJzLCBsaWtlIHIuanMsIGNoZWNrIGZvciBzcGVjaWZpYyBjb25kaXRpb24gcGF0dGVybnNcblx0Ly8gbGlrZSB0aGUgZm9sbG93aW5nOlxuXHRpZiAoXG5cdFx0dHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0dHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiZcblx0XHRkZWZpbmUuYW1kXG5cdCkge1xuXHRcdGRlZmluZSgncHVueWNvZGUnLCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBwdW55Y29kZTtcblx0XHR9KTtcblx0fSBlbHNlIGlmIChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlKSB7XG5cdFx0aWYgKG1vZHVsZS5leHBvcnRzID09IGZyZWVFeHBvcnRzKSB7XG5cdFx0XHQvLyBpbiBOb2RlLmpzLCBpby5qcywgb3IgUmluZ29KUyB2MC44LjArXG5cdFx0XHRmcmVlTW9kdWxlLmV4cG9ydHMgPSBwdW55Y29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW4gTmFyd2hhbCBvciBSaW5nb0pTIHYwLjcuMC1cblx0XHRcdGZvciAoa2V5IGluIHB1bnljb2RlKSB7XG5cdFx0XHRcdHB1bnljb2RlLmhhc093blByb3BlcnR5KGtleSkgJiYgKGZyZWVFeHBvcnRzW2tleV0gPSBwdW55Y29kZVtrZXldKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaW4gUmhpbm8gb3IgYSB3ZWIgYnJvd3NlclxuXHRcdHJvb3QucHVueWNvZGUgPSBwdW55Y29kZTtcblx0fVxuXG59KHRoaXMpKTtcbiIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG52YXIgS19NQVhfTEVOR1RIID0gMHg3ZmZmZmZmZlxuZXhwb3J0cy5rTWF4TGVuZ3RoID0gS19NQVhfTEVOR1RIXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFByaW50IHdhcm5pbmcgYW5kIHJlY29tbWVuZCB1c2luZyBgYnVmZmVyYCB2NC54IHdoaWNoIGhhcyBhbiBPYmplY3RcbiAqICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIFdlIHJlcG9ydCB0aGF0IHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGlmIHRoZSBhcmUgbm90IHN1YmNsYXNzYWJsZVxuICogdXNpbmcgX19wcm90b19fLiBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YFxuICogKFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4KS4gSUUgMTAgbGFja3Mgc3VwcG9ydFxuICogZm9yIF9fcHJvdG9fXyBhbmQgaGFzIGEgYnVnZ3kgdHlwZWQgYXJyYXkgaW1wbGVtZW50YXRpb24uXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5pZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gIGNvbnNvbGUuZXJyb3IoXG4gICAgJ1RoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSAnICtcbiAgICAnYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC4nXG4gIClcbn1cblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICAvLyBDYW4gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWQ/XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHsgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9IH1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MlxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdwYXJlbnQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAnb2Zmc2V0Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ5dGVPZmZzZXRcbiAgfVxufSlcblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKGxlbmd0aCA+IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgbGVuZ3RoICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgYnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGJ1ZlxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKGFyZylcbiAgfVxuICByZXR1cm4gZnJvbShhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAhPSBudWxsICYmXG4gICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgdmFsdWU6IG51bGwsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICAgIClcbiAgfVxuXG4gIGlmIChpc0luc3RhbmNlKHZhbHVlLCBBcnJheUJ1ZmZlcikgfHxcbiAgICAgICh2YWx1ZSAmJiBpc0luc3RhbmNlKHZhbHVlLmJ1ZmZlciwgQXJyYXlCdWZmZXIpKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICApXG4gIH1cblxuICB2YXIgdmFsdWVPZiA9IHZhbHVlLnZhbHVlT2YgJiYgdmFsdWUudmFsdWVPZigpXG4gIGlmICh2YWx1ZU9mICE9IG51bGwgJiYgdmFsdWVPZiAhPT0gdmFsdWUpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVPZiwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgdmFyIGIgPSBmcm9tT2JqZWN0KHZhbHVlKVxuICBpZiAoYikgcmV0dXJuIGJcblxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvUHJpbWl0aXZlICE9IG51bGwgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFxuICAgICAgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJyksIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aFxuICAgIClcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5CdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG5CdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHZhciBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSBidWYud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIGJ1ZiA9IGJ1Zi5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICBidWZbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIHZhciBidWZcbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIGJ1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAob2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHZhciBidWYgPSBjcmVhdGVCdWZmZXIobGVuKVxuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWZcbiAgICB9XG5cbiAgICBvYmouY29weShidWYsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBpZiAob2JqLmxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBudW1iZXJJc05hTihvYmoubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmopXG4gIH1cblxuICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqLmRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IEtfTUFYX0xFTkdUSGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsgS19NQVhfTEVOR1RILnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyID09PSB0cnVlICYmXG4gICAgYiAhPT0gQnVmZmVyLnByb3RvdHlwZSAvLyBzbyBCdWZmZXIuaXNCdWZmZXIoQnVmZmVyLnByb3RvdHlwZSkgd2lsbCBiZSBmYWxzZVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGlzSW5zdGFuY2UoYSwgVWludDhBcnJheSkpIGEgPSBCdWZmZXIuZnJvbShhLCBhLm9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBpZiAoaXNJbnN0YW5jZShiLCBVaW50OEFycmF5KSkgYiA9IEJ1ZmZlci5mcm9tKGIsIGIub2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknXG4gICAgKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKGlzSW5zdGFuY2UoYnVmLCBVaW50OEFycmF5KSkge1xuICAgICAgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBpc0luc3RhbmNlKHN0cmluZywgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHN0cmluZ1xuICAgIClcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBtdXN0TWF0Y2ggPSAoYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdID09PSB0cnVlKVxuICBpZiAoIW11c3RNYXRjaCAmJiBsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHtcbiAgICAgICAgICByZXR1cm4gbXVzdE1hdGNoID8gLTEgOiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICB9XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIChhbmQgdGhlIGBpcy1idWZmZXJgIG5wbSBwYWNrYWdlKVxuLy8gdG8gZGV0ZWN0IGEgQnVmZmVyIGluc3RhbmNlLiBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGluc3RhbmNlb2YgQnVmZmVyYFxuLy8gcmVsaWFibHkgaW4gYSBicm93c2VyaWZ5IGNvbnRleHQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnRcbi8vIGNvcGllcyBvZiB0aGUgJ2J1ZmZlcicgcGFja2FnZSBpbiB1c2UuIFRoaXMgbWV0aG9kIHdvcmtzIGV2ZW4gZm9yIEJ1ZmZlclxuLy8gaW5zdGFuY2VzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gYW5vdGhlciBjb3B5IG9mIHRoZSBgYnVmZmVyYCBwYWNrYWdlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTU0XG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nID0gQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZ1xuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLnJlcGxhY2UoLyguezJ9KS9nLCAnJDEgJykudHJpbSgpXG4gIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKGlzSW5zdGFuY2UodGFyZ2V0LCBVaW50OEFycmF5KSkge1xuICAgIHRhcmdldCA9IEJ1ZmZlci5mcm9tKHRhcmdldCwgdGFyZ2V0Lm9mZnNldCwgdGFyZ2V0LmJ5dGVMZW5ndGgpXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB0YXJnZXQpXG4gICAgKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAobnVtYmVySXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmICh0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAobnVtYmVySXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPj4+IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyAoYnl0ZXNbaSArIDFdICogMjU2KSlcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyJylcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVc2UgYnVpbHQtaW4gd2hlbiBhdmFpbGFibGUsIG1pc3NpbmcgZnJvbSBJRTExXG4gICAgdGhpcy5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2UgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZCksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoKGVuY29kaW5nID09PSAndXRmOCcgJiYgY29kZSA8IDEyOCkgfHxcbiAgICAgICAgICBlbmNvZGluZyA9PT0gJ2xhdGluMScpIHtcbiAgICAgICAgLy8gRmFzdCBwYXRoOiBJZiBgdmFsYCBmaXRzIGludG8gYSBzaW5nbGUgYnl0ZSwgdXNlIHRoYXQgbnVtZXJpYyB2YWx1ZS5cbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGlmIChsZW4gPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyB2YWwgK1xuICAgICAgICAnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJylcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSB0YWtlcyBlcXVhbCBzaWducyBhcyBlbmQgb2YgdGhlIEJhc2U2NCBlbmNvZGluZ1xuICBzdHIgPSBzdHIuc3BsaXQoJz0nKVswXVxuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbi8vIEFycmF5QnVmZmVyIG9yIFVpbnQ4QXJyYXkgb2JqZWN0cyBmcm9tIG90aGVyIGNvbnRleHRzIChpLmUuIGlmcmFtZXMpIGRvIG5vdCBwYXNzXG4vLyB0aGUgYGluc3RhbmNlb2ZgIGNoZWNrIGJ1dCB0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGFzIG9mIHRoYXQgdHlwZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE2NlxuZnVuY3Rpb24gaXNJbnN0YW5jZSAob2JqLCB0eXBlKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiB0eXBlIHx8XG4gICAgKG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9IG51bGwgJiZcbiAgICAgIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSB0eXBlLm5hbWUpXG59XG5mdW5jdGlvbiBudW1iZXJJc05hTiAob2JqKSB7XG4gIC8vIEZvciBJRTExIHN1cHBvcnRcbiAgcmV0dXJuIG9iaiAhPT0gb2JqIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCIxMDBcIjogXCJDb250aW51ZVwiLFxuICBcIjEwMVwiOiBcIlN3aXRjaGluZyBQcm90b2NvbHNcIixcbiAgXCIxMDJcIjogXCJQcm9jZXNzaW5nXCIsXG4gIFwiMjAwXCI6IFwiT0tcIixcbiAgXCIyMDFcIjogXCJDcmVhdGVkXCIsXG4gIFwiMjAyXCI6IFwiQWNjZXB0ZWRcIixcbiAgXCIyMDNcIjogXCJOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvblwiLFxuICBcIjIwNFwiOiBcIk5vIENvbnRlbnRcIixcbiAgXCIyMDVcIjogXCJSZXNldCBDb250ZW50XCIsXG4gIFwiMjA2XCI6IFwiUGFydGlhbCBDb250ZW50XCIsXG4gIFwiMjA3XCI6IFwiTXVsdGktU3RhdHVzXCIsXG4gIFwiMjA4XCI6IFwiQWxyZWFkeSBSZXBvcnRlZFwiLFxuICBcIjIyNlwiOiBcIklNIFVzZWRcIixcbiAgXCIzMDBcIjogXCJNdWx0aXBsZSBDaG9pY2VzXCIsXG4gIFwiMzAxXCI6IFwiTW92ZWQgUGVybWFuZW50bHlcIixcbiAgXCIzMDJcIjogXCJGb3VuZFwiLFxuICBcIjMwM1wiOiBcIlNlZSBPdGhlclwiLFxuICBcIjMwNFwiOiBcIk5vdCBNb2RpZmllZFwiLFxuICBcIjMwNVwiOiBcIlVzZSBQcm94eVwiLFxuICBcIjMwN1wiOiBcIlRlbXBvcmFyeSBSZWRpcmVjdFwiLFxuICBcIjMwOFwiOiBcIlBlcm1hbmVudCBSZWRpcmVjdFwiLFxuICBcIjQwMFwiOiBcIkJhZCBSZXF1ZXN0XCIsXG4gIFwiNDAxXCI6IFwiVW5hdXRob3JpemVkXCIsXG4gIFwiNDAyXCI6IFwiUGF5bWVudCBSZXF1aXJlZFwiLFxuICBcIjQwM1wiOiBcIkZvcmJpZGRlblwiLFxuICBcIjQwNFwiOiBcIk5vdCBGb3VuZFwiLFxuICBcIjQwNVwiOiBcIk1ldGhvZCBOb3QgQWxsb3dlZFwiLFxuICBcIjQwNlwiOiBcIk5vdCBBY2NlcHRhYmxlXCIsXG4gIFwiNDA3XCI6IFwiUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWRcIixcbiAgXCI0MDhcIjogXCJSZXF1ZXN0IFRpbWVvdXRcIixcbiAgXCI0MDlcIjogXCJDb25mbGljdFwiLFxuICBcIjQxMFwiOiBcIkdvbmVcIixcbiAgXCI0MTFcIjogXCJMZW5ndGggUmVxdWlyZWRcIixcbiAgXCI0MTJcIjogXCJQcmVjb25kaXRpb24gRmFpbGVkXCIsXG4gIFwiNDEzXCI6IFwiUGF5bG9hZCBUb28gTGFyZ2VcIixcbiAgXCI0MTRcIjogXCJVUkkgVG9vIExvbmdcIixcbiAgXCI0MTVcIjogXCJVbnN1cHBvcnRlZCBNZWRpYSBUeXBlXCIsXG4gIFwiNDE2XCI6IFwiUmFuZ2UgTm90IFNhdGlzZmlhYmxlXCIsXG4gIFwiNDE3XCI6IFwiRXhwZWN0YXRpb24gRmFpbGVkXCIsXG4gIFwiNDE4XCI6IFwiSSdtIGEgdGVhcG90XCIsXG4gIFwiNDIxXCI6IFwiTWlzZGlyZWN0ZWQgUmVxdWVzdFwiLFxuICBcIjQyMlwiOiBcIlVucHJvY2Vzc2FibGUgRW50aXR5XCIsXG4gIFwiNDIzXCI6IFwiTG9ja2VkXCIsXG4gIFwiNDI0XCI6IFwiRmFpbGVkIERlcGVuZGVuY3lcIixcbiAgXCI0MjVcIjogXCJVbm9yZGVyZWQgQ29sbGVjdGlvblwiLFxuICBcIjQyNlwiOiBcIlVwZ3JhZGUgUmVxdWlyZWRcIixcbiAgXCI0MjhcIjogXCJQcmVjb25kaXRpb24gUmVxdWlyZWRcIixcbiAgXCI0MjlcIjogXCJUb28gTWFueSBSZXF1ZXN0c1wiLFxuICBcIjQzMVwiOiBcIlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2VcIixcbiAgXCI0NTFcIjogXCJVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29uc1wiLFxuICBcIjUwMFwiOiBcIkludGVybmFsIFNlcnZlciBFcnJvclwiLFxuICBcIjUwMVwiOiBcIk5vdCBJbXBsZW1lbnRlZFwiLFxuICBcIjUwMlwiOiBcIkJhZCBHYXRld2F5XCIsXG4gIFwiNTAzXCI6IFwiU2VydmljZSBVbmF2YWlsYWJsZVwiLFxuICBcIjUwNFwiOiBcIkdhdGV3YXkgVGltZW91dFwiLFxuICBcIjUwNVwiOiBcIkhUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkXCIsXG4gIFwiNTA2XCI6IFwiVmFyaWFudCBBbHNvIE5lZ290aWF0ZXNcIixcbiAgXCI1MDdcIjogXCJJbnN1ZmZpY2llbnQgU3RvcmFnZVwiLFxuICBcIjUwOFwiOiBcIkxvb3AgRGV0ZWN0ZWRcIixcbiAgXCI1MDlcIjogXCJCYW5kd2lkdGggTGltaXQgRXhjZWVkZWRcIixcbiAgXCI1MTBcIjogXCJOb3QgRXh0ZW5kZWRcIixcbiAgXCI1MTFcIjogXCJOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkXCJcbn1cbiIsIlwidXNlIHN0cmljdFwiXG5cbnZhciBuZXh0ID0gKGdsb2JhbC5wcm9jZXNzICYmIHByb2Nlc3MubmV4dFRpY2spIHx8IGdsb2JhbC5zZXRJbW1lZGlhdGUgfHwgZnVuY3Rpb24gKGYpIHtcbiAgc2V0VGltZW91dChmLCAwKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1heWJlIChjYiwgcHJvbWlzZSkge1xuICBpZiAoY2IpIHtcbiAgICBwcm9taXNlXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIG5leHQoZnVuY3Rpb24gKCkgeyBjYihudWxsLCByZXN1bHQpIH0pXG4gICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIG5leHQoZnVuY3Rpb24gKCkgeyBjYihlcnIpIH0pXG4gICAgICB9KVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCIvKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9ICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWVcbiAgICAgICAgICAgICAgICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWUuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgPyBjaHJvbWUuc3RvcmFnZS5sb2NhbFxuICAgICAgICAgICAgICAgICAgOiBsb2NhbHN0b3JhZ2UoKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbXG4gICcjMDAwMENDJywgJyMwMDAwRkYnLCAnIzAwMzNDQycsICcjMDAzM0ZGJywgJyMwMDY2Q0MnLCAnIzAwNjZGRicsICcjMDA5OUNDJyxcbiAgJyMwMDk5RkYnLCAnIzAwQ0MwMCcsICcjMDBDQzMzJywgJyMwMENDNjYnLCAnIzAwQ0M5OScsICcjMDBDQ0NDJywgJyMwMENDRkYnLFxuICAnIzMzMDBDQycsICcjMzMwMEZGJywgJyMzMzMzQ0MnLCAnIzMzMzNGRicsICcjMzM2NkNDJywgJyMzMzY2RkYnLCAnIzMzOTlDQycsXG4gICcjMzM5OUZGJywgJyMzM0NDMDAnLCAnIzMzQ0MzMycsICcjMzNDQzY2JywgJyMzM0NDOTknLCAnIzMzQ0NDQycsICcjMzNDQ0ZGJyxcbiAgJyM2NjAwQ0MnLCAnIzY2MDBGRicsICcjNjYzM0NDJywgJyM2NjMzRkYnLCAnIzY2Q0MwMCcsICcjNjZDQzMzJywgJyM5OTAwQ0MnLFxuICAnIzk5MDBGRicsICcjOTkzM0NDJywgJyM5OTMzRkYnLCAnIzk5Q0MwMCcsICcjOTlDQzMzJywgJyNDQzAwMDAnLCAnI0NDMDAzMycsXG4gICcjQ0MwMDY2JywgJyNDQzAwOTknLCAnI0NDMDBDQycsICcjQ0MwMEZGJywgJyNDQzMzMDAnLCAnI0NDMzMzMycsICcjQ0MzMzY2JyxcbiAgJyNDQzMzOTknLCAnI0NDMzNDQycsICcjQ0MzM0ZGJywgJyNDQzY2MDAnLCAnI0NDNjYzMycsICcjQ0M5OTAwJywgJyNDQzk5MzMnLFxuICAnI0NDQ0MwMCcsICcjQ0NDQzMzJywgJyNGRjAwMDAnLCAnI0ZGMDAzMycsICcjRkYwMDY2JywgJyNGRjAwOTknLCAnI0ZGMDBDQycsXG4gICcjRkYwMEZGJywgJyNGRjMzMDAnLCAnI0ZGMzMzMycsICcjRkYzMzY2JywgJyNGRjMzOTknLCAnI0ZGMzNDQycsICcjRkYzM0ZGJyxcbiAgJyNGRjY2MDAnLCAnI0ZGNjYzMycsICcjRkY5OTAwJywgJyNGRjk5MzMnLCAnI0ZGQ0MwMCcsICcjRkZDQzMzJ1xuXTtcblxuLyoqXG4gKiBDdXJyZW50bHkgb25seSBXZWJLaXQtYmFzZWQgV2ViIEluc3BlY3RvcnMsIEZpcmVmb3ggPj0gdjMxLFxuICogYW5kIHRoZSBGaXJlYnVnIGV4dGVuc2lvbiAoYW55IEZpcmVmb3ggdmVyc2lvbikgYXJlIGtub3duXG4gKiB0byBzdXBwb3J0IFwiJWNcIiBDU1MgY3VzdG9taXphdGlvbnMuXG4gKlxuICogVE9ETzogYWRkIGEgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgdG8gZXhwbGljaXRseSBlbmFibGUvZGlzYWJsZSBjb2xvcnNcbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG4gIC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcbiAgLy8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2VcbiAgLy8gZXhwbGljaXRseVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBpcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuICAvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuICByZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcbiAgICAvLyBpcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG4gICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcbiAgICAvLyBpcyBmaXJlZm94ID49IHYzMT9cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcbiAgICAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcbiAgICAvLyBkb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbih2KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyLm1lc3NhZ2U7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcbiAgdmFyIHVzZUNvbG9ycyA9IHRoaXMudXNlQ29sb3JzO1xuXG4gIGFyZ3NbMF0gPSAodXNlQ29sb3JzID8gJyVjJyA6ICcnKVxuICAgICsgdGhpcy5uYW1lc3BhY2VcbiAgICArICh1c2VDb2xvcnMgPyAnICVjJyA6ICcgJylcbiAgICArIGFyZ3NbMF1cbiAgICArICh1c2VDb2xvcnMgPyAnJWMgJyA6ICcgJylcbiAgICArICcrJyArIGV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuICBpZiAoIXVzZUNvbG9ycykgcmV0dXJuO1xuXG4gIHZhciBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcbiAgYXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0JylcblxuICAvLyB0aGUgZmluYWwgXCIlY1wiIGlzIHNvbWV3aGF0IHRyaWNreSwgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlclxuICAvLyBhcmd1bWVudHMgcGFzc2VkIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlICVjLCBzbyB3ZSBuZWVkIHRvXG4gIC8vIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgaW5kZXggdG8gaW5zZXJ0IHRoZSBDU1MgaW50b1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEMgPSAwO1xuICBhcmdzWzBdLnJlcGxhY2UoLyVbYS16QS1aJV0vZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICBpZiAoJyUlJyA9PT0gbWF0Y2gpIHJldHVybjtcbiAgICBpbmRleCsrO1xuICAgIGlmICgnJWMnID09PSBtYXRjaCkge1xuICAgICAgLy8gd2Ugb25seSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgKmxhc3QqICVjXG4gICAgICAvLyAodGhlIHVzZXIgbWF5IGhhdmUgcHJvdmlkZWQgdGhlaXIgb3duKVxuICAgICAgbGFzdEMgPSBpbmRleDtcbiAgICB9XG4gIH0pO1xuXG4gIGFyZ3Muc3BsaWNlKGxhc3RDLCAwLCBjKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGBjb25zb2xlLmxvZygpYCB3aGVuIGF2YWlsYWJsZS5cbiAqIE5vLW9wIHdoZW4gYGNvbnNvbGUubG9nYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBsb2coKSB7XG4gIC8vIHRoaXMgaGFja2VyeSBpcyByZXF1aXJlZCBmb3IgSUU4LzksIHdoZXJlXG4gIC8vIHRoZSBgY29uc29sZS5sb2dgIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSAnYXBwbHknXG4gIHJldHVybiAnb2JqZWN0JyA9PT0gdHlwZW9mIGNvbnNvbGVcbiAgICAmJiBjb25zb2xlLmxvZ1xuICAgICYmIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGUubG9nLCBjb25zb2xlLCBhcmd1bWVudHMpO1xufVxuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzYXZlKG5hbWVzcGFjZXMpIHtcbiAgdHJ5IHtcbiAgICBpZiAobnVsbCA9PSBuYW1lc3BhY2VzKSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5zdG9yYWdlLmRlYnVnID0gbmFtZXNwYWNlcztcbiAgICB9XG4gIH0gY2F0Y2goZSkge31cbn1cblxuLyoqXG4gKiBMb2FkIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybnMgdGhlIHByZXZpb3VzbHkgcGVyc2lzdGVkIGRlYnVnIG1vZGVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkKCkge1xuICB2YXIgcjtcbiAgdHJ5IHtcbiAgICByID0gZXhwb3J0cy5zdG9yYWdlLmRlYnVnO1xuICB9IGNhdGNoKGUpIHt9XG5cbiAgLy8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuICBpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcbiAgICByID0gcHJvY2Vzcy5lbnYuREVCVUc7XG4gIH1cblxuICByZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBFbmFibGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gYGxvY2FsU3RvcmFnZS5kZWJ1Z2AgaW5pdGlhbGx5LlxuICovXG5cbmV4cG9ydHMuZW5hYmxlKGxvYWQoKSk7XG5cbi8qKlxuICogTG9jYWxzdG9yYWdlIGF0dGVtcHRzIHRvIHJldHVybiB0aGUgbG9jYWxzdG9yYWdlLlxuICpcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc2FmYXJpIHRocm93c1xuICogd2hlbiBhIHVzZXIgZGlzYWJsZXMgY29va2llcy9sb2NhbHN0b3JhZ2VcbiAqIGFuZCB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgaXQuXG4gKlxuICogQHJldHVybiB7TG9jYWxTdG9yYWdlfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9jYWxzdG9yYWdlKCkge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xuICB9IGNhdGNoIChlKSB7fVxufVxuIiwiXG4vKipcbiAqIFRoaXMgaXMgdGhlIGNvbW1vbiBsb2dpYyBmb3IgYm90aCB0aGUgTm9kZS5qcyBhbmQgd2ViIGJyb3dzZXJcbiAqIGltcGxlbWVudGF0aW9ucyBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZURlYnVnLmRlYnVnID0gY3JlYXRlRGVidWdbJ2RlZmF1bHQnXSA9IGNyZWF0ZURlYnVnO1xuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5leHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5leHBvcnRzLmVuYWJsZWQgPSBlbmFibGVkO1xuZXhwb3J0cy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cbi8qKlxuICogQWN0aXZlIGBkZWJ1Z2AgaW5zdGFuY2VzLlxuICovXG5leHBvcnRzLmluc3RhbmNlcyA9IFtdO1xuXG4vKipcbiAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGRlYnVnIG1vZGUgbmFtZXMsIGFuZCBuYW1lcyB0byBza2lwLlxuICovXG5cbmV4cG9ydHMubmFtZXMgPSBbXTtcbmV4cG9ydHMuc2tpcHMgPSBbXTtcblxuLyoqXG4gKiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG4gKlxuICogVmFsaWQga2V5IG5hbWVzIGFyZSBhIHNpbmdsZSwgbG93ZXIgb3IgdXBwZXItY2FzZSBsZXR0ZXIsIGkuZS4gXCJuXCIgYW5kIFwiTlwiLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycyA9IHt9O1xuXG4vKipcbiAqIFNlbGVjdCBhIGNvbG9yLlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG4gIHZhciBoYXNoID0gMCwgaTtcblxuICBmb3IgKGkgaW4gbmFtZXNwYWNlKSB7XG4gICAgaGFzaCAgPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cblxuICByZXR1cm4gZXhwb3J0cy5jb2xvcnNbTWF0aC5hYnMoaGFzaCkgJSBleHBvcnRzLmNvbG9ycy5sZW5ndGhdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRlYnVnZ2VyIHdpdGggdGhlIGdpdmVuIGBuYW1lc3BhY2VgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblxuICB2YXIgcHJldlRpbWU7XG5cbiAgZnVuY3Rpb24gZGVidWcoKSB7XG4gICAgLy8gZGlzYWJsZWQ/XG4gICAgaWYgKCFkZWJ1Zy5lbmFibGVkKSByZXR1cm47XG5cbiAgICB2YXIgc2VsZiA9IGRlYnVnO1xuXG4gICAgLy8gc2V0IGBkaWZmYCB0aW1lc3RhbXBcbiAgICB2YXIgY3VyciA9ICtuZXcgRGF0ZSgpO1xuICAgIHZhciBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG4gICAgc2VsZi5kaWZmID0gbXM7XG4gICAgc2VsZi5wcmV2ID0gcHJldlRpbWU7XG4gICAgc2VsZi5jdXJyID0gY3VycjtcbiAgICBwcmV2VGltZSA9IGN1cnI7XG5cbiAgICAvLyB0dXJuIHRoZSBgYXJndW1lbnRzYCBpbnRvIGEgcHJvcGVyIEFycmF5XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIGFyZ3NbMF0gPSBleHBvcnRzLmNvZXJjZShhcmdzWzBdKTtcblxuICAgIGlmICgnc3RyaW5nJyAhPT0gdHlwZW9mIGFyZ3NbMF0pIHtcbiAgICAgIC8vIGFueXRoaW5nIGVsc2UgbGV0J3MgaW5zcGVjdCB3aXRoICVPXG4gICAgICBhcmdzLnVuc2hpZnQoJyVPJyk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgYW55IGBmb3JtYXR0ZXJzYCB0cmFuc2Zvcm1hdGlvbnNcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGFyZ3NbMF0gPSBhcmdzWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCBmdW5jdGlvbihtYXRjaCwgZm9ybWF0KSB7XG4gICAgICAvLyBpZiB3ZSBlbmNvdW50ZXIgYW4gZXNjYXBlZCAlIHRoZW4gZG9uJ3QgaW5jcmVhc2UgdGhlIGFycmF5IGluZGV4XG4gICAgICBpZiAobWF0Y2ggPT09ICclJScpIHJldHVybiBtYXRjaDtcbiAgICAgIGluZGV4Kys7XG4gICAgICB2YXIgZm9ybWF0dGVyID0gZXhwb3J0cy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG4gICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGZvcm1hdHRlcikge1xuICAgICAgICB2YXIgdmFsID0gYXJnc1tpbmRleF07XG4gICAgICAgIG1hdGNoID0gZm9ybWF0dGVyLmNhbGwoc2VsZiwgdmFsKTtcblxuICAgICAgICAvLyBub3cgd2UgbmVlZCB0byByZW1vdmUgYGFyZ3NbaW5kZXhdYCBzaW5jZSBpdCdzIGlubGluZWQgaW4gdGhlIGBmb3JtYXRgXG4gICAgICAgIGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcblxuICAgIC8vIGFwcGx5IGVudi1zcGVjaWZpYyBmb3JtYXR0aW5nIChjb2xvcnMsIGV0Yy4pXG4gICAgZXhwb3J0cy5mb3JtYXRBcmdzLmNhbGwoc2VsZiwgYXJncyk7XG5cbiAgICB2YXIgbG9nRm4gPSBkZWJ1Zy5sb2cgfHwgZXhwb3J0cy5sb2cgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKTtcbiAgICBsb2dGbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgZGVidWcuZW5hYmxlZCA9IGV4cG9ydHMuZW5hYmxlZChuYW1lc3BhY2UpO1xuICBkZWJ1Zy51c2VDb2xvcnMgPSBleHBvcnRzLnVzZUNvbG9ycygpO1xuICBkZWJ1Zy5jb2xvciA9IHNlbGVjdENvbG9yKG5hbWVzcGFjZSk7XG4gIGRlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXG4gIC8vIGVudi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgZGVidWcgaW5zdGFuY2VzXG4gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZXhwb3J0cy5pbml0KSB7XG4gICAgZXhwb3J0cy5pbml0KGRlYnVnKTtcbiAgfVxuXG4gIGV4cG9ydHMuaW5zdGFuY2VzLnB1c2goZGVidWcpO1xuXG4gIHJldHVybiBkZWJ1Zztcbn1cblxuZnVuY3Rpb24gZGVzdHJveSAoKSB7XG4gIHZhciBpbmRleCA9IGV4cG9ydHMuaW5zdGFuY2VzLmluZGV4T2YodGhpcyk7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBleHBvcnRzLmluc3RhbmNlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEVuYWJsZXMgYSBkZWJ1ZyBtb2RlIGJ5IG5hbWVzcGFjZXMuIFRoaXMgY2FuIGluY2x1ZGUgbW9kZXNcbiAqIHNlcGFyYXRlZCBieSBhIGNvbG9uIGFuZCB3aWxkY2FyZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZW5hYmxlKG5hbWVzcGFjZXMpIHtcbiAgZXhwb3J0cy5zYXZlKG5hbWVzcGFjZXMpO1xuXG4gIGV4cG9ydHMubmFtZXMgPSBbXTtcbiAgZXhwb3J0cy5za2lwcyA9IFtdO1xuXG4gIHZhciBpO1xuICB2YXIgc3BsaXQgPSAodHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcyA6ICcnKS5zcGxpdCgvW1xccyxdKy8pO1xuICB2YXIgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmICghc3BsaXRbaV0pIGNvbnRpbnVlOyAvLyBpZ25vcmUgZW1wdHkgc3RyaW5nc1xuICAgIG5hbWVzcGFjZXMgPSBzcGxpdFtpXS5yZXBsYWNlKC9cXCovZywgJy4qPycpO1xuICAgIGlmIChuYW1lc3BhY2VzWzBdID09PSAnLScpIHtcbiAgICAgIGV4cG9ydHMuc2tpcHMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMuc3Vic3RyKDEpICsgJyQnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cG9ydHMubmFtZXMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMgKyAnJCcpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhwb3J0cy5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBleHBvcnRzLmluc3RhbmNlc1tpXTtcbiAgICBpbnN0YW5jZS5lbmFibGVkID0gZXhwb3J0cy5lbmFibGVkKGluc3RhbmNlLm5hbWVzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gIGV4cG9ydHMuZW5hYmxlKCcnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZWQobmFtZSkge1xuICBpZiAobmFtZVtuYW1lLmxlbmd0aCAtIDFdID09PSAnKicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaSwgbGVuO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBleHBvcnRzLnNraXBzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGV4cG9ydHMuc2tpcHNbaV0udGVzdChuYW1lKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBmb3IgKGkgPSAwLCBsZW4gPSBleHBvcnRzLm5hbWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGV4cG9ydHMubmFtZXNbaV0udGVzdChuYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb2VyY2UgYHZhbGAuXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gdmFsXG4gKiBAcmV0dXJuIHtNaXhlZH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvZXJjZSh2YWwpIHtcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSByZXR1cm4gdmFsLnN0YWNrIHx8IHZhbC5tZXNzYWdlO1xuICByZXR1cm4gdmFsO1xufVxuIiwiLyohXG4gKiBAZGVzY3JpcHRpb24gUmVjdXJzaXZlIG9iamVjdCBleHRlbmRpbmdcbiAqIEBhdXRob3IgVmlhY2hlc2xhdiBMb3RzbWFub3YgPGxvdHNtYW5vdjg5QGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICpcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE4IFZpYWNoZXNsYXYgTG90c21hbm92XG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxuICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpblxuICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0b1xuICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2ZcbiAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbyxcbiAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTU1xuICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SXG4gKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVJcbiAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOXG4gKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gaXNTcGVjaWZpY1ZhbHVlKHZhbCkge1xuXHRyZXR1cm4gKFxuXHRcdHZhbCBpbnN0YW5jZW9mIEJ1ZmZlclxuXHRcdHx8IHZhbCBpbnN0YW5jZW9mIERhdGVcblx0XHR8fCB2YWwgaW5zdGFuY2VvZiBSZWdFeHBcblx0KSA/IHRydWUgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2xvbmVTcGVjaWZpY1ZhbHVlKHZhbCkge1xuXHRpZiAodmFsIGluc3RhbmNlb2YgQnVmZmVyKSB7XG5cdFx0dmFyIHggPSBCdWZmZXIuYWxsb2Ncblx0XHRcdD8gQnVmZmVyLmFsbG9jKHZhbC5sZW5ndGgpXG5cdFx0XHQ6IG5ldyBCdWZmZXIodmFsLmxlbmd0aCk7XG5cdFx0dmFsLmNvcHkoeCk7XG5cdFx0cmV0dXJuIHg7XG5cdH0gZWxzZSBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdHJldHVybiBuZXcgRGF0ZSh2YWwuZ2V0VGltZSgpKTtcblx0fSBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRyZXR1cm4gbmV3IFJlZ0V4cCh2YWwpO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBzaXR1YXRpb24nKTtcblx0fVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBjbG9uaW5nIGFycmF5LlxuICovXG5mdW5jdGlvbiBkZWVwQ2xvbmVBcnJheShhcnIpIHtcblx0dmFyIGNsb25lID0gW107XG5cdGFyci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuXHRcdGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcblx0XHRcdFx0Y2xvbmVbaW5kZXhdID0gZGVlcENsb25lQXJyYXkoaXRlbSk7XG5cdFx0XHR9IGVsc2UgaWYgKGlzU3BlY2lmaWNWYWx1ZShpdGVtKSkge1xuXHRcdFx0XHRjbG9uZVtpbmRleF0gPSBjbG9uZVNwZWNpZmljVmFsdWUoaXRlbSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZVtpbmRleF0gPSBkZWVwRXh0ZW5kKHt9LCBpdGVtKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2xvbmVbaW5kZXhdID0gaXRlbTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gY2xvbmU7XG59XG5cbmZ1bmN0aW9uIHNhZmVHZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5KSB7XG5cdHJldHVybiBwcm9wZXJ0eSA9PT0gJ19fcHJvdG9fXycgPyB1bmRlZmluZWQgOiBvYmplY3RbcHJvcGVydHldO1xufVxuXG4vKipcbiAqIEV4dGVuaW5nIG9iamVjdCB0aGF0IGVudGVyZWQgaW4gZmlyc3QgYXJndW1lbnQuXG4gKlxuICogUmV0dXJucyBleHRlbmRlZCBvYmplY3Qgb3IgZmFsc2UgaWYgaGF2ZSBubyB0YXJnZXQgb2JqZWN0IG9yIGluY29ycmVjdCB0eXBlLlxuICpcbiAqIElmIHlvdSB3aXNoIHRvIGNsb25lIHNvdXJjZSBvYmplY3QgKHdpdGhvdXQgbW9kaWZ5IGl0KSwganVzdCB1c2UgZW1wdHkgbmV3XG4gKiBvYmplY3QgYXMgZmlyc3QgYXJndW1lbnQsIGxpa2UgdGhpczpcbiAqICAgZGVlcEV4dGVuZCh7fSwgeW91ck9ial8xLCBbeW91ck9ial9OXSk7XG4gKi9cbnZhciBkZWVwRXh0ZW5kID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoLypvYmpfMSwgW29ial8yXSwgW29ial9OXSovKSB7XG5cdGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSB8fCB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuXHRcdHJldHVybiBhcmd1bWVudHNbMF07XG5cdH1cblxuXHR2YXIgdGFyZ2V0ID0gYXJndW1lbnRzWzBdO1xuXG5cdC8vIGNvbnZlcnQgYXJndW1lbnRzIHRvIGFycmF5IGFuZCBjdXQgb2ZmIHRhcmdldCBvYmplY3Rcblx0dmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG5cdHZhciB2YWwsIHNyYywgY2xvbmU7XG5cblx0YXJncy5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcblx0XHQvLyBza2lwIGFyZ3VtZW50IGlmIGlzbid0IGFuIG9iamVjdCwgaXMgbnVsbCwgb3IgaXMgYW4gYXJyYXlcblx0XHRpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRzcmMgPSBzYWZlR2V0UHJvcGVydHkodGFyZ2V0LCBrZXkpOyAvLyBzb3VyY2UgdmFsdWVcblx0XHRcdHZhbCA9IHNhZmVHZXRQcm9wZXJ0eShvYmosIGtleSk7IC8vIG5ldyB2YWx1ZVxuXG5cdFx0XHQvLyByZWN1cnNpb24gcHJldmVudGlvblxuXHRcdFx0aWYgKHZhbCA9PT0gdGFyZ2V0KSB7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBpZiBuZXcgdmFsdWUgaXNuJ3Qgb2JqZWN0IHRoZW4ganVzdCBvdmVyd3JpdGUgYnkgbmV3IHZhbHVlXG5cdFx0XHQgKiBpbnN0ZWFkIG9mIGV4dGVuZGluZy5cblx0XHRcdCAqL1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0JyB8fCB2YWwgPT09IG51bGwpIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSB2YWw7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8ganVzdCBjbG9uZSBhcnJheXMgKGFuZCByZWN1cnNpdmUgY2xvbmUgb2JqZWN0cyBpbnNpZGUpXG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGRlZXBDbG9uZUFycmF5KHZhbCk7XG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Ly8gY3VzdG9tIGNsb25pbmcgYW5kIG92ZXJ3cml0ZSBmb3Igc3BlY2lmaWMgb2JqZWN0c1xuXHRcdFx0fSBlbHNlIGlmIChpc1NwZWNpZmljVmFsdWUodmFsKSkge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IGNsb25lU3BlY2lmaWNWYWx1ZSh2YWwpO1xuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdC8vIG92ZXJ3cml0ZSBieSBuZXcgdmFsdWUgaWYgc291cmNlIGlzbid0IG9iamVjdCBvciBhcnJheVxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygc3JjICE9PSAnb2JqZWN0JyB8fCBzcmMgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShzcmMpKSB7XG5cdFx0XHRcdHRhcmdldFtrZXldID0gZGVlcEV4dGVuZCh7fSwgdmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBzb3VyY2UgdmFsdWUgYW5kIG5ldyB2YWx1ZSBpcyBvYmplY3RzIGJvdGgsIGV4dGVuZGluZy4uLlxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGFyZ2V0W2tleV0gPSBkZWVwRXh0ZW5kKHNyYywgdmFsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL3V0aWwvaGVscGVycycpO1xuXG4kLmZpbmRCeVJlZiA9IHJlcXVpcmUoJy4vdXRpbC9maW5kLXJlZmVyZW5jZScpO1xuJC5yZXNvbHZlU2NoZW1hID0gcmVxdWlyZSgnLi91dGlsL3Jlc29sdmUtc2NoZW1hJyk7XG4kLm5vcm1hbGl6ZVNjaGVtYSA9IHJlcXVpcmUoJy4vdXRpbC9ub3JtYWxpemUtc2NoZW1hJyk7XG5cbnZhciBpbnN0YW5jZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZikge1xuICBmdW5jdGlvbiAkcmVmKGZha2Vyb290LCBzY2hlbWEsIHJlZnMsIGV4KSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlcm9vdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGV4ID0gcmVmcztcbiAgICAgIHJlZnMgPSBzY2hlbWE7XG4gICAgICBzY2hlbWEgPSBmYWtlcm9vdDtcbiAgICAgIGZha2Vyb290ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2NoZW1hICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzY2hlbWEgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZnMgPT09ICdvYmplY3QnICYmIHJlZnMgIT09IG51bGwpIHtcbiAgICAgIHZhciBhdXggPSByZWZzO1xuXG4gICAgICByZWZzID0gW107XG5cbiAgICAgIGZvciAodmFyIGsgaW4gYXV4KSB7XG4gICAgICAgIGF1eFtrXS5pZCA9IGF1eFtrXS5pZCB8fCBrO1xuICAgICAgICByZWZzLnB1c2goYXV4W2tdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZnMgIT09ICd1bmRlZmluZWQnICYmICFBcnJheS5pc0FycmF5KHJlZnMpKSB7XG4gICAgICBleCA9ICEhcmVmcztcbiAgICAgIHJlZnMgPSBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoKHJlZikge1xuICAgICAgaWYgKHR5cGVvZiByZWYuaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBpZCA9ICQucmVzb2x2ZVVSTChmYWtlcm9vdCwgcmVmLmlkKS5yZXBsYWNlKC9cXC8jPyQvLCAnJyk7XG5cbiAgICAgICAgaWYgKGlkLmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICAgICAgdmFyIHBhcnRzID0gaWQuc3BsaXQoJyMnKTtcblxuICAgICAgICAgIGlmIChwYXJ0c1sxXS5jaGFyQXQoKSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBpZCA9IHBhcnRzWzBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZCA9IHBhcnRzWzFdIHx8IHBhcnRzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghJHJlZi5yZWZzW2lkXSkge1xuICAgICAgICAgICRyZWYucmVmc1tpZF0gPSByZWY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAocmVmcyB8fCBbXSkuY29uY2F0KFtzY2hlbWFdKS5mb3JFYWNoKGZ1bmN0aW9uKHJlZikge1xuICAgICAgc2NoZW1hID0gJC5ub3JtYWxpemVTY2hlbWEoZmFrZXJvb3QsIHJlZiwgcHVzaCk7XG4gICAgICBwdXNoKHNjaGVtYSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gJC5yZXNvbHZlU2NoZW1hKHNjaGVtYSwgJHJlZi5yZWZzLCBleCwgZik7XG4gIH1cblxuICAkcmVmLnJlZnMgPSB7fTtcbiAgJHJlZi51dGlsID0gJDtcblxuICByZXR1cm4gJHJlZjtcbn07XG5cbmluc3RhbmNlLnV0aWwgPSAkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2xvbmUgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iaiwgc2Vlbikge1xuICBzZWVuID0gc2VlbiB8fCBbXTtcblxuICBpZiAoc2Vlbi5pbmRleE9mKG9iaikgPiAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIGRlcmVmZXJlbmNlIGNpcmN1bGFyIHN0cnVjdHVyZXMnKTtcbiAgfVxuXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHNlZW4gPSBzZWVuLmNvbmNhdChbb2JqXSk7XG5cbiAgdmFyIHRhcmdldCA9IEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XG5cbiAgZnVuY3Rpb24gY29weShrZXksIHZhbHVlKSB7XG4gICAgdGFyZ2V0W2tleV0gPSBjbG9uZSh2YWx1ZSwgc2Vlbik7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgb2JqLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgY29weShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICBjb3B5KGtleSwgb2JqW2tleV0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG5cbmZ1bmN0aW9uIGdldChvYmosIHBhdGgpIHtcbiAgdmFyIGhhc2ggPSBwYXRoLnNwbGl0KCcjJylbMV07XG5cbiAgdmFyIHBhcnRzID0gaGFzaC5zcGxpdCgnLycpLnNsaWNlKDEpO1xuXG4gIHdoaWxlIChwYXJ0cy5sZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhcnRzLnNoaWZ0KCkpLnJlcGxhY2UoL34xL2csICcvJykucmVwbGFjZSgvfjAvZywgJ34nKTtcblxuICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pTT04gcG9pbnRlciBub3QgZm91bmQ6ICcgKyBwYXRoKTtcbiAgICB9XG5cbiAgICBvYmogPSBvYmpba2V5XTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbnZhciBmaW5kID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpZCwgcmVmcywgZmlsdGVyKSB7XG4gIHZhciB0YXJnZXQgPSByZWZzW2lkXSB8fCByZWZzW2lkLnNwbGl0KCcjJylbMV1dIHx8IHJlZnNbJC5nZXREb2N1bWVudFVSSShpZCldO1xuXG4gIHRyeSB7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ID0gaWQuaW5kZXhPZignIy8nKSA+IC0xID8gZ2V0KHRhcmdldCwgaWQpIDogdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcmVmcykge1xuICAgICAgICBpZiAoJC5yZXNvbHZlVVJMKHJlZnNba2V5XS5pZCwgaWQpID09PSByZWZzW2tleV0uaWQpIHtcbiAgICAgICAgICB0YXJnZXQgPSByZWZzW2tleV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGFyZ2V0ID0gZmlsdGVyKGlkLCByZWZzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVmZXJlbmNlIG5vdCBmb3VuZDogJyArIGlkKTtcbiAgfVxuXG4gIHdoaWxlICh0YXJnZXQuJHJlZikge1xuICAgIHRhcmdldCA9IGZpbmQodGFyZ2V0LiRyZWYsIHJlZnMpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3BqdDMzL2VmYjJmMTEzNGJhYjk4NjExM2ZkXG5cbmZ1bmN0aW9uIFVSTFV0aWxzKHVybCwgYmFzZVVSTCkge1xuICAvLyByZW1vdmUgbGVhZGluZyAuL1xuICB1cmwgPSB1cmwucmVwbGFjZSgvXlxcLlxcLy8sICcnKTtcblxuICB2YXIgbSA9IFN0cmluZyh1cmwpLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKS5tYXRjaCgvXihbXjpcXC8/I10rOik/KD86XFwvXFwvKD86KFteOkBdKikoPzo6KFteOkBdKikpP0ApPygoW146XFwvPyNdKikoPzo6KFxcZCopKT8pKT8oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8pO1xuICBpZiAoIW0pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigpO1xuICB9XG4gIHZhciBocmVmID0gbVswXSB8fCAnJztcbiAgdmFyIHByb3RvY29sID0gbVsxXSB8fCAnJztcbiAgdmFyIHVzZXJuYW1lID0gbVsyXSB8fCAnJztcbiAgdmFyIHBhc3N3b3JkID0gbVszXSB8fCAnJztcbiAgdmFyIGhvc3QgPSBtWzRdIHx8ICcnO1xuICB2YXIgaG9zdG5hbWUgPSBtWzVdIHx8ICcnO1xuICB2YXIgcG9ydCA9IG1bNl0gfHwgJyc7XG4gIHZhciBwYXRobmFtZSA9IG1bN10gfHwgJyc7XG4gIHZhciBzZWFyY2ggPSBtWzhdIHx8ICcnO1xuICB2YXIgaGFzaCA9IG1bOV0gfHwgJyc7XG4gIGlmIChiYXNlVVJMICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgYmFzZSA9IG5ldyBVUkxVdGlscyhiYXNlVVJMKTtcbiAgICB2YXIgZmxhZyA9IHByb3RvY29sID09PSAnJyAmJiBob3N0ID09PSAnJyAmJiB1c2VybmFtZSA9PT0gJyc7XG4gICAgaWYgKGZsYWcgJiYgcGF0aG5hbWUgPT09ICcnICYmIHNlYXJjaCA9PT0gJycpIHtcbiAgICAgIHNlYXJjaCA9IGJhc2Uuc2VhcmNoO1xuICAgIH1cbiAgICBpZiAoZmxhZyAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykge1xuICAgICAgcGF0aG5hbWUgPSAocGF0aG5hbWUgIT09ICcnID8gKGJhc2UucGF0aG5hbWUuc2xpY2UoMCwgYmFzZS5wYXRobmFtZS5sYXN0SW5kZXhPZignLycpICsgMSkgKyBwYXRobmFtZSkgOiBiYXNlLnBhdGhuYW1lKTtcbiAgICB9XG4gICAgLy8gZG90IHNlZ21lbnRzIHJlbW92YWxcbiAgICB2YXIgb3V0cHV0ID0gW107XG5cbiAgICBwYXRobmFtZS5yZXBsYWNlKC9cXC8/W15cXC9dKy9nLCBmdW5jdGlvbihwKSB7XG4gICAgICBpZiAocCA9PT0gJy8uLicpIHtcbiAgICAgICAgb3V0cHV0LnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2gocCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXRobmFtZSA9IG91dHB1dC5qb2luKCcnKSB8fCAnLyc7XG5cbiAgICBpZiAoZmxhZykge1xuICAgICAgcG9ydCA9IGJhc2UucG9ydDtcbiAgICAgIGhvc3RuYW1lID0gYmFzZS5ob3N0bmFtZTtcbiAgICAgIGhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICBwYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICB1c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgfVxuICAgIGlmIChwcm90b2NvbCA9PT0gJycpIHtcbiAgICAgIHByb3RvY29sID0gYmFzZS5wcm90b2NvbDtcbiAgICB9XG4gICAgaHJlZiA9IHByb3RvY29sICsgKGhvc3QgIT09ICcnID8gJy8vJyA6ICcnKSArICh1c2VybmFtZSAhPT0gJycgPyB1c2VybmFtZSArIChwYXNzd29yZCAhPT0gJycgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJyA6ICcnKSArIGhvc3QgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gIH1cbiAgdGhpcy5ocmVmID0gaHJlZjtcbiAgdGhpcy5vcmlnaW4gPSBwcm90b2NvbCArIChob3N0ICE9PSAnJyA/ICcvLycgKyBob3N0IDogJycpO1xuICB0aGlzLnByb3RvY29sID0gcHJvdG9jb2w7XG4gIHRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgdGhpcy5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICB0aGlzLmhvc3QgPSBob3N0O1xuICB0aGlzLmhvc3RuYW1lID0gaG9zdG5hbWU7XG4gIHRoaXMucG9ydCA9IHBvcnQ7XG4gIHRoaXMucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgdGhpcy5zZWFyY2ggPSBzZWFyY2g7XG4gIHRoaXMuaGFzaCA9IGhhc2g7XG59XG5cbmZ1bmN0aW9uIGlzVVJMKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJyAmJiAvXlxcdys6XFwvXFwvLy50ZXN0KHBhdGgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VVUkkoaHJlZiwgYmFzZSkge1xuICByZXR1cm4gbmV3IFVSTFV0aWxzKGhyZWYsIGJhc2UpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVVJMKGJhc2UsIGhyZWYpIHtcbiAgYmFzZSA9IGJhc2UgfHwgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIyc7XG5cbiAgaHJlZiA9IHBhcnNlVVJJKGhyZWYsIGJhc2UpO1xuICBiYXNlID0gcGFyc2VVUkkoYmFzZSk7XG5cbiAgaWYgKGJhc2UuaGFzaCAmJiAhaHJlZi5oYXNoKSB7XG4gICAgcmV0dXJuIGhyZWYuaHJlZiArIGJhc2UuaGFzaDtcbiAgfVxuXG4gIHJldHVybiBocmVmLmhyZWY7XG59XG5cbmZ1bmN0aW9uIGdldERvY3VtZW50VVJJKHVyaSkge1xuICByZXR1cm4gdHlwZW9mIHVyaSA9PT0gJ3N0cmluZycgJiYgdXJpLnNwbGl0KCcjJylbMF07XG59XG5cbmZ1bmN0aW9uIGlzS2V5d29yZChwcm9wKSB7XG4gIHJldHVybiBwcm9wID09PSAnZW51bScgfHwgcHJvcCA9PT0gJ2RlZmF1bHQnIHx8IHByb3AgPT09ICdyZXF1aXJlZCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1VSTDogaXNVUkwsXG4gIHBhcnNlVVJJOiBwYXJzZVVSSSxcbiAgaXNLZXl3b3JkOiBpc0tleXdvcmQsXG4gIHJlc29sdmVVUkw6IHJlc29sdmVVUkwsXG4gIGdldERvY3VtZW50VVJJOiBnZXREb2N1bWVudFVSSVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIGNsb25lT2JqID0gcmVxdWlyZSgnLi9jbG9uZS1vYmonKTtcblxudmFyIFNDSEVNQV9VUkkgPSBbXG4gICdodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYSMnLFxuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWEnLFxuICAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjJyxcbiAgJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hJ1xuXTtcblxuZnVuY3Rpb24gZXhwYW5kKG9iaiwgcGFyZW50LCBjYWxsYmFjaykge1xuICBpZiAob2JqKSB7XG4gICAgdmFyIGlkID0gdHlwZW9mIG9iai5pZCA9PT0gJ3N0cmluZycgPyBvYmouaWQgOiAnIyc7XG5cbiAgICBpZiAoISQuaXNVUkwoaWQpKSB7XG4gICAgICBpZCA9ICQucmVzb2x2ZVVSTChwYXJlbnQgPT09IGlkID8gbnVsbCA6IHBhcmVudCwgaWQpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqLiRyZWYgPT09ICdzdHJpbmcnICYmICEkLmlzVVJMKG9iai4kcmVmKSkge1xuICAgICAgb2JqLiRyZWYgPSAkLnJlc29sdmVVUkwoaWQsIG9iai4kcmVmKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iai5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iai5pZCA9IHBhcmVudCA9IGlkO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICEkLmlzS2V5d29yZChrZXkpKSB7XG4gICAgICBleHBhbmQodmFsdWUsIHBhcmVudCwgY2FsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayhvYmopO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZmFrZXJvb3QsIHNjaGVtYSwgcHVzaCkge1xuICBpZiAodHlwZW9mIGZha2Vyb290ID09PSAnb2JqZWN0Jykge1xuICAgIHB1c2ggPSBzY2hlbWE7XG4gICAgc2NoZW1hID0gZmFrZXJvb3Q7XG4gICAgZmFrZXJvb3QgPSBudWxsO1xuICB9XG5cbiAgdmFyIGJhc2UgPSBmYWtlcm9vdCB8fCAnJyxcbiAgICAgIGNvcHkgPSBjbG9uZU9iaihzY2hlbWEpO1xuXG4gIGlmIChjb3B5LiRzY2hlbWEgJiYgU0NIRU1BX1VSSS5pbmRleE9mKGNvcHkuJHNjaGVtYSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzY2hlbWEgdmVyc2lvbiAodjQgb25seSknKTtcbiAgfVxuXG4gIGJhc2UgPSAkLnJlc29sdmVVUkwoY29weS4kc2NoZW1hIHx8IFNDSEVNQV9VUklbMF0sIGJhc2UpO1xuXG4gIGV4cGFuZChjb3B5LCAkLnJlc29sdmVVUkwoY29weS5pZCB8fCAnIycsIGJhc2UpLCBwdXNoKTtcblxuICBjb3B5LmlkID0gY29weS5pZCB8fCBiYXNlO1xuXG4gIHJldHVybiBjb3B5O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIGZpbmQgPSByZXF1aXJlKCcuL2ZpbmQtcmVmZXJlbmNlJyk7XG5cbnZhciBkZWVwRXh0ZW5kID0gcmVxdWlyZSgnZGVlcC1leHRlbmQnKTtcblxuZnVuY3Rpb24gY29weShfLCBvYmosIHJlZnMsIHBhcmVudCwgcmVzb2x2ZSwgY2FsbGJhY2spIHtcbiAgdmFyIHRhcmdldCA9ICBBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9O1xuXG4gIGlmICh0eXBlb2Ygb2JqLiRyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGlkID0gb2JqLiRyZWY7XG4gICAgdmFyIGJhc2UgPSAkLmdldERvY3VtZW50VVJJKGlkKTtcbiAgICB2YXIgbG9jYWwgPSBpZC5pbmRleE9mKCcjLycpID4gLTE7XG5cbiAgICBpZiAobG9jYWwgfHwgKHJlc29sdmUgJiYgYmFzZSAhPT0gcGFyZW50KSkge1xuICAgICAgdmFyIGZpeGVkID0gZmluZChpZCwgcmVmcywgY2FsbGJhY2spO1xuXG4gICAgICBkZWVwRXh0ZW5kKG9iaiwgZml4ZWQpO1xuXG4gICAgICBkZWxldGUgb2JqLiRyZWY7XG4gICAgICBkZWxldGUgb2JqLmlkO1xuICAgIH1cblxuICAgIGlmIChfW2lkXSA+IDEwKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIGlmIChfW2lkXSkge1xuICAgICAgX1tpZF0gKz0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgX1tpZF0gPSAxO1xuICAgIH1cbiAgfVxuXG5cbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcblxuICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BdID09PSAnb2JqZWN0JyAmJiBvYmpbcHJvcF0gIT09IG51bGwgJiYgISQuaXNLZXl3b3JkKHByb3ApKSB7XG4gICAgICB0YXJnZXRbcHJvcF0gPSBjb3B5KF8sIG9ialtwcm9wXSwgcmVmcywgcGFyZW50LCByZXNvbHZlLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldFtwcm9wXSA9IG9ialtwcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iaiwgcmVmcywgcmVzb2x2ZSwgY2FsbGJhY2spIHtcbiAgdmFyIGZpeGVkSWQgPSAkLnJlc29sdmVVUkwob2JqLiRzY2hlbWEsIG9iai5pZCksXG4gICAgICBwYXJlbnQgPSAkLmdldERvY3VtZW50VVJJKGZpeGVkSWQpO1xuXG4gIHJldHVybiBjb3B5KHt9LCBvYmosIHJlZnMsIHBhcmVudCwgcmVzb2x2ZSwgY2FsbGJhY2spO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludCBpbmRlbnQ6IDQgKi9cblxuXG4vLyBQcml2YXRlIGhlbHBlciBjbGFzc1xuY2xhc3MgU3ViUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKGxvdywgaGlnaCkge1xuICAgICAgICB0aGlzLmxvdyA9IGxvdztcbiAgICAgICAgdGhpcy5oaWdoID0gaGlnaDtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAxICsgaGlnaCAtIGxvdztcbiAgICB9XG5cbiAgICBvdmVybGFwcyhyYW5nZSkge1xuICAgICAgICByZXR1cm4gISh0aGlzLmhpZ2ggPCByYW5nZS5sb3cgfHwgdGhpcy5sb3cgPiByYW5nZS5oaWdoKTtcbiAgICB9XG5cbiAgICB0b3VjaGVzKHJhbmdlKSB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuaGlnaCArIDEgPCByYW5nZS5sb3cgfHwgdGhpcy5sb3cgLSAxID4gcmFuZ2UuaGlnaCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBpbmNsdXNpdmUgY29tYmluYXRpb24gb2YgU3ViUmFuZ2VzIGFzIGEgU3ViUmFuZ2UuXG4gICAgYWRkKHJhbmdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3ViUmFuZ2UoXG4gICAgICAgICAgICBNYXRoLm1pbih0aGlzLmxvdywgcmFuZ2UubG93KSxcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuaGlnaCwgcmFuZ2UuaGlnaClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHN1YnRyYWN0aW9uIG9mIFN1YlJhbmdlcyBhcyBhbiBhcnJheSBvZiBTdWJSYW5nZXMuXG4gICAgLy8gKFRoZXJlJ3MgYSBjYXNlIHdoZXJlIHN1YnRyYWN0aW9uIGRpdmlkZXMgaXQgaW4gMilcbiAgICBzdWJ0cmFjdChyYW5nZSkge1xuICAgICAgICBpZiAocmFuZ2UubG93IDw9IHRoaXMubG93ICYmIHJhbmdlLmhpZ2ggPj0gdGhpcy5oaWdoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSBpZiAocmFuZ2UubG93ID4gdGhpcy5sb3cgJiYgcmFuZ2UuaGlnaCA8IHRoaXMuaGlnaCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBuZXcgU3ViUmFuZ2UodGhpcy5sb3csIHJhbmdlLmxvdyAtIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBTdWJSYW5nZShyYW5nZS5oaWdoICsgMSwgdGhpcy5oaWdoKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmIChyYW5nZS5sb3cgPD0gdGhpcy5sb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3IFN1YlJhbmdlKHJhbmdlLmhpZ2ggKyAxLCB0aGlzLmhpZ2gpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3IFN1YlJhbmdlKHRoaXMubG93LCByYW5nZS5sb3cgLSAxKV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG93ID09IHRoaXMuaGlnaCA/XG4gICAgICAgICAgICB0aGlzLmxvdy50b1N0cmluZygpIDogdGhpcy5sb3cgKyAnLScgKyB0aGlzLmhpZ2g7XG4gICAgfVxufVxuXG5cbmNsYXNzIERSYW5nZSB7XG4gICAgY29uc3RydWN0b3IoYSwgYikge1xuICAgICAgICB0aGlzLnJhbmdlcyA9IFtdO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHRoaXMuYWRkKGEsIGIpO1xuICAgIH1cblxuICAgIF91cGRhdGVfbGVuZ3RoKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IHRoaXMucmFuZ2VzLnJlZHVjZSgocHJldmlvdXMsIHJhbmdlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgKyByYW5nZS5sZW5ndGg7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHZhciBfYWRkID0gKHN1YnJhbmdlKSA9PiB7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiAhc3VicmFuZ2UudG91Y2hlcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5yYW5nZXMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiBzdWJyYW5nZS50b3VjaGVzKHRoaXMucmFuZ2VzW2ldKSkge1xuICAgICAgICAgICAgICAgIHN1YnJhbmdlID0gc3VicmFuZ2UuYWRkKHRoaXMucmFuZ2VzW2ldKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdSYW5nZXMucHVzaChzdWJyYW5nZSk7XG4gICAgICAgICAgICB0aGlzLnJhbmdlcyA9IG5ld1Jhbmdlcy5jb25jYXQodGhpcy5yYW5nZXMuc2xpY2UoaSkpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlX2xlbmd0aCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgICAgICAgIGEucmFuZ2VzLmZvckVhY2goX2FkZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYiA9PSBudWxsKSBiID0gYTtcbiAgICAgICAgICAgIF9hZGQobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdWJ0cmFjdChhLCBiKSB7XG4gICAgICAgIHZhciBfc3VidHJhY3QgPSAoc3VicmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmICFzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5yYW5nZXMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiBzdWJyYW5nZS5vdmVybGFwcyh0aGlzLnJhbmdlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICBuZXdSYW5nZXMgPSBuZXdSYW5nZXMuY29uY2F0KHRoaXMucmFuZ2VzW2ldLnN1YnRyYWN0KHN1YnJhbmdlKSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yYW5nZXMgPSBuZXdSYW5nZXMuY29uY2F0KHRoaXMucmFuZ2VzLnNsaWNlKGkpKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZV9sZW5ndGgoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERSYW5nZSkge1xuICAgICAgICAgICAgYS5yYW5nZXMuZm9yRWFjaChfc3VidHJhY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGIgPT0gbnVsbCkgYiA9IGE7XG4gICAgICAgICAgICBfc3VidHJhY3QobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpbnRlcnNlY3QoYSwgYikge1xuICAgICAgICB2YXIgbmV3UmFuZ2VzID0gW107XG4gICAgICAgIHZhciBfaW50ZXJzZWN0ID0gKHN1YnJhbmdlKSA9PiB7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoaSA8IHRoaXMucmFuZ2VzLmxlbmd0aCAmJiAhc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnJhbmdlcy5sZW5ndGggJiYgc3VicmFuZ2Uub3ZlcmxhcHModGhpcy5yYW5nZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxvdyA9IE1hdGgubWF4KHRoaXMucmFuZ2VzW2ldLmxvdywgc3VicmFuZ2UubG93KTtcbiAgICAgICAgICAgICAgICB2YXIgaGlnaCA9IE1hdGgubWluKHRoaXMucmFuZ2VzW2ldLmhpZ2gsIHN1YnJhbmdlLmhpZ2gpO1xuICAgICAgICAgICAgICAgIG5ld1Jhbmdlcy5wdXNoKG5ldyBTdWJSYW5nZShsb3csIGhpZ2gpKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUmFuZ2UpIHtcbiAgICAgICAgICAgIGEucmFuZ2VzLmZvckVhY2goX2ludGVyc2VjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYiA9PSBudWxsKSBiID0gYTtcbiAgICAgICAgICAgIF9pbnRlcnNlY3QobmV3IFN1YlJhbmdlKGEsIGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJhbmdlcyA9IG5ld1JhbmdlcztcbiAgICAgICAgdGhpcy5fdXBkYXRlX2xlbmd0aCgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpbmRleChpbmRleCkge1xuICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy5yYW5nZXMubGVuZ3RoICYmIHRoaXMucmFuZ2VzW2ldLmxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICAgICAgaW5kZXggLT0gdGhpcy5yYW5nZXNbaV0ubGVuZ3RoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlc1tpXS5sb3cgKyBpbmRleDtcbiAgICB9XG5cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuICdbICcgKyB0aGlzLnJhbmdlcy5qb2luKCcsICcpICsgJyBdJztcbiAgICB9XG5cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUmFuZ2UodGhpcyk7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERSYW5nZTtcbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAnQVMgSVMnXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gaXNFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0FycmF5RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdBc3NpZ25tZW50RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdCaW5hcnlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NhbGxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdGdW5jdGlvbkV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnSWRlbnRpZmllcic6XG4gICAgICAgICAgICBjYXNlICdMaXRlcmFsJzpcbiAgICAgICAgICAgIGNhc2UgJ0xvZ2ljYWxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnTmV3RXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdPYmplY3RFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ1NlcXVlbmNlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdUaGlzRXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdVbmFyeUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnVXBkYXRlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSXRlcmF0aW9uU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0RvV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9ySW5TdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRm9yU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnQnJlYWtTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnQ29udGludWVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRGVidWdnZXJTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnRG9XaGlsZVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdFbXB0eVN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdFeHByZXNzaW9uU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvckluU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0ZvclN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdJZlN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMYWJlbGVkU3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1JldHVyblN0YXRlbWVudCc6XG4gICAgICAgICAgICBjYXNlICdTd2l0Y2hTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnVGhyb3dTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnVHJ5U3RhdGVtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnV2hpbGVTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnV2l0aFN0YXRlbWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU291cmNlRWxlbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gaXNTdGF0ZW1lbnQobm9kZSkgfHwgbm9kZSAhPSBudWxsICYmIG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYWlsaW5nU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnSWZTdGF0ZW1lbnQnOlxuICAgICAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hbHRlcm5hdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jb25zZXF1ZW50O1xuXG4gICAgICAgIGNhc2UgJ0xhYmVsZWRTdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdGb3JTdGF0ZW1lbnQnOlxuICAgICAgICBjYXNlICdGb3JJblN0YXRlbWVudCc6XG4gICAgICAgIGNhc2UgJ1doaWxlU3RhdGVtZW50JzpcbiAgICAgICAgY2FzZSAnV2l0aFN0YXRlbWVudCc6XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5ib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudChub2RlKSB7XG4gICAgICAgIHZhciBjdXJyZW50O1xuXG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09ICdJZlN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5hbHRlcm5hdGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBub2RlLmNvbnNlcXVlbnQ7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdJZlN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5hbHRlcm5hdGUgPT0gbnVsbCkgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudCA9IHRyYWlsaW5nU3RhdGVtZW50KGN1cnJlbnQpO1xuICAgICAgICB9IHdoaWxlIChjdXJyZW50KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGlzRXhwcmVzc2lvbjogaXNFeHByZXNzaW9uLFxuICAgICAgICBpc1N0YXRlbWVudDogaXNTdGF0ZW1lbnQsXG4gICAgICAgIGlzSXRlcmF0aW9uU3RhdGVtZW50OiBpc0l0ZXJhdGlvblN0YXRlbWVudCxcbiAgICAgICAgaXNTb3VyY2VFbGVtZW50OiBpc1NvdXJjZUVsZW1lbnQsXG4gICAgICAgIGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudDogaXNQcm9ibGVtYXRpY0lmU3RhdGVtZW50LFxuXG4gICAgICAgIHRyYWlsaW5nU3RhdGVtZW50OiB0cmFpbGluZ1N0YXRlbWVudFxuICAgIH07XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDE0IEl2YW4gTmlrdWxpbiA8aWZhYWFuQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBFUzZSZWdleCwgRVM1UmVnZXgsIE5PTl9BU0NJSV9XSElURVNQQUNFUywgSURFTlRJRklFUl9TVEFSVCwgSURFTlRJRklFUl9QQVJULCBjaDtcblxuICAgIC8vIFNlZSBgdG9vbHMvZ2VuZXJhdGUtaWRlbnRpZmllci1yZWdleC5qc2AuXG4gICAgRVM1UmVnZXggPSB7XG4gICAgICAgIC8vIEVDTUFTY3JpcHQgNS4xL1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OlxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCMlxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3QURcXHVBN0IwXFx1QTdCMVxcdUE3RjctXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdLyxcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA1LjEvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDpcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwLVxcdTA4QjJcXHUwOEU0LVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTBBMDEtXFx1MEEwM1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTY2LVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkMtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQjAxLVxcdTBCMDNcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzQy1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU2XFx1MEI1N1xcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYzXFx1MEI2Ni1cXHUwQjZGXFx1MEI3MVxcdTBCODJcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCQkUtXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDRFxcdTBCRDBcXHUwQkQ3XFx1MEJFNi1cXHUwQkVGXFx1MEMwMC1cXHUwQzAzXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRC1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzU4XFx1MEM1OVxcdTBDNjAtXFx1MEM2M1xcdTBDNjYtXFx1MEM2RlxcdTBDODEtXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMS1cXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENjAtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOUQ5XFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFBQjAtXFx1MUFCRFxcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFDRjhcXHUxQ0Y5XFx1MUQwMC1cXHUxREY1XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5XFx1MzA5QVxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTY5RFxcdUE2OUYtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdBRFxcdUE3QjBcXHVBN0IxXFx1QTdGNy1cXHVBODI3XFx1QTg0MC1cXHVBODczXFx1QTg4MC1cXHVBOEM0XFx1QThEMC1cXHVBOEQ5XFx1QThFMC1cXHVBOEY3XFx1QThGQlxcdUE5MDAtXFx1QTkyRFxcdUE5MzAtXFx1QTk1M1xcdUE5NjAtXFx1QTk3Q1xcdUE5ODAtXFx1QTlDMFxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlGRVxcdUFBMDAtXFx1QUEzNlxcdUFBNDAtXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0EtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRFxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYxMC1cXHVGRjE5XFx1RkYyMS1cXHVGRjNBXFx1RkYzRlxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10vXG4gICAgfTtcblxuICAgIEVTNlJlZ2V4ID0ge1xuICAgICAgICAvLyBFQ01BU2NyaXB0IDYvVW5pY29kZSB2Ny4wLjAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEIyXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI1RlxcdUFCNjRcXHVBQjY1XFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REQ0MC1cXHVERDc0XFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYzMC1cXHVERjRBXFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OF18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDUwLVxcdURENzJcXHVERDc2XFx1REQ4My1cXHVEREIyXFx1RERDMS1cXHVEREM0XFx1REREQVxcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1RC1cXHVERjYxXXxcXHVEODA1W1xcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0RGXFx1RENGRlxcdURFQzAtXFx1REVGOF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOThdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXXxbXFx1RDgwQ1xcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MFxcdURGOTMtXFx1REY5Rl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdLyxcbiAgICAgICAgLy8gRUNNQVNjcmlwdCA2L1VuaWNvZGUgdjcuMC4wIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6IC9bXFx4QUFcXHhCNVxceEI3XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4Ni1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0ODMtXFx1MDQ4N1xcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjEwLVxcdTA2MUFcXHUwNjIwLVxcdTA2NjlcXHUwNjZFLVxcdTA2RDNcXHUwNkQ1LVxcdTA2RENcXHUwNkRGLVxcdTA2RThcXHUwNkVBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMC1cXHUwNzRBXFx1MDc0RC1cXHUwN0IxXFx1MDdDMC1cXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgyRFxcdTA4NDAtXFx1MDg1QlxcdTA4QTAtXFx1MDhCMlxcdTA4RTQtXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5NzEtXFx1MDk4M1xcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkMtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNFXFx1MDlEN1xcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUzXFx1MDlFNi1cXHUwOUYxXFx1MEEwMS1cXHUwQTAzXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCQy1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFEMFxcdTBBRTAtXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAwLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNThcXHUwQzU5XFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MS1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAxLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU3XFx1MEQ2MC1cXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4MlxcdTBEODNcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREU2LVxcdTBERUZcXHUwREYyXFx1MERGM1xcdTBFMDEtXFx1MEUzQVxcdTBFNDAtXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUI5XFx1MEVCQi1cXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0UtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGNzEtXFx1MEY4NFxcdTBGODYtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDAwLVxcdTEwNDlcXHUxMDUwLVxcdTEwOURcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM1RC1cXHUxMzVGXFx1MTM2OS1cXHUxMzcxXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzE0XFx1MTcyMC1cXHUxNzM0XFx1MTc0MC1cXHUxNzUzXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc3MlxcdTE3NzNcXHUxNzgwLVxcdTE3RDNcXHUxN0Q3XFx1MTdEQ1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODEwLVxcdTE4MTlcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxOUQwLVxcdTE5REFcXHUxQTAwLVxcdTFBMUJcXHUxQTIwLVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUE3XFx1MUFCMC1cXHUxQUJEXFx1MUIwMC1cXHUxQjRCXFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQkYzXFx1MUMwMC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM0RC1cXHUxQzdEXFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0Y2XFx1MUNGOFxcdTFDRjlcXHUxRDAwLVxcdTFERjVcXHUxREZDLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjAwQ1xcdTIwMERcXHUyMDNGXFx1MjA0MFxcdTIwNTRcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE4LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ3Ri1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkRFMC1cXHUyREZGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OS1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjJCXFx1QTY0MC1cXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY3Ri1cXHVBNjlEXFx1QTY5Ri1cXHVBNkYxXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0FEXFx1QTdCMFxcdUE3QjFcXHVBN0Y3LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzRcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QTlFMC1cXHVBOUZFXFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QS1cXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVGXFx1QUFGMi1cXHVBQUY2XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjVGXFx1QUI2NFxcdUFCNjVcXHVBQkMwLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJEXFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjEwLVxcdUZGMTlcXHVGRjIxLVxcdUZGM0FcXHVGRjNGXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REQ0MC1cXHVERDc0XFx1RERGRFxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURFRTBcXHVERjAwLVxcdURGMUZcXHVERjMwLVxcdURGNEFcXHVERjUwLVxcdURGN0FcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1RENBMC1cXHVEQ0E5XFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDAtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNlxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzQ2XFx1REM2Ni1cXHVEQzZGXFx1REM3Ri1cXHVEQ0JBXFx1RENEMC1cXHVEQ0U4XFx1RENGMC1cXHVEQ0Y5XFx1REQwMC1cXHVERDM0XFx1REQzNi1cXHVERDNGXFx1REQ1MC1cXHVERDczXFx1REQ3NlxcdUREODAtXFx1RERDNFxcdURERDAtXFx1REREQVxcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUzN1xcdURFQjAtXFx1REVFQVxcdURFRjAtXFx1REVGOVxcdURGMDEtXFx1REYwM1xcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNDLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjVELVxcdURGNjNcXHVERjY2LVxcdURGNkNcXHVERjcwLVxcdURGNzRdfFxcdUQ4MDVbXFx1REM4MC1cXHVEQ0M1XFx1RENDN1xcdURDRDAtXFx1RENEOVxcdUREODAtXFx1RERCNVxcdUREQjgtXFx1RERDMFxcdURFMDAtXFx1REU0MFxcdURFNDRcXHVERTUwLVxcdURFNTlcXHVERTgwLVxcdURFQjdcXHVERUMwLVxcdURFQzldfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0U5XFx1RENGRlxcdURFQzAtXFx1REVGOF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOThdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXXxbXFx1RDgwQ1xcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERTYwLVxcdURFNjlcXHVERUQwLVxcdURFRURcXHVERUYwLVxcdURFRjRcXHVERjAwLVxcdURGMzZcXHVERjQwLVxcdURGNDNcXHVERjUwLVxcdURGNTlcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MC1cXHVERjdFXFx1REY4Ri1cXHVERjlGXXxcXHVEODJDW1xcdURDMDBcXHVEQzAxXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OVxcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjUtXFx1REQ2OVxcdURENkQtXFx1REQ3MlxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXFx1REZDRS1cXHVERkZGXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdURDRDAtXFx1RENENl18XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVENlxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1REI0MFtcXHVERDAwLVxcdURERUZdL1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChjaCkge1xuICAgICAgICByZXR1cm4gMHgzMCA8PSBjaCAmJiBjaCA8PSAweDM5OyAgLy8gMC4uOVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSGV4RGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuIDB4MzAgPD0gY2ggJiYgY2ggPD0gMHgzOSB8fCAgLy8gMC4uOVxuICAgICAgICAgICAgMHg2MSA8PSBjaCAmJiBjaCA8PSAweDY2IHx8ICAgICAvLyBhLi5mXG4gICAgICAgICAgICAweDQxIDw9IGNoICYmIGNoIDw9IDB4NDY7ICAgICAgIC8vIEEuLkZcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09jdGFsRGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuIGNoID49IDB4MzAgJiYgY2ggPD0gMHgzNzsgIC8vIDAuLjdcbiAgICB9XG5cbiAgICAvLyA3LjIgV2hpdGUgU3BhY2VcblxuICAgIE5PTl9BU0NJSV9XSElURVNQQUNFUyA9IFtcbiAgICAgICAgMHgxNjgwLCAweDE4MEUsXG4gICAgICAgIDB4MjAwMCwgMHgyMDAxLCAweDIwMDIsIDB4MjAwMywgMHgyMDA0LCAweDIwMDUsIDB4MjAwNiwgMHgyMDA3LCAweDIwMDgsIDB4MjAwOSwgMHgyMDBBLFxuICAgICAgICAweDIwMkYsIDB4MjA1RixcbiAgICAgICAgMHgzMDAwLFxuICAgICAgICAweEZFRkZcbiAgICBdO1xuXG4gICAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA9PT0gMHgyMCB8fCBjaCA9PT0gMHgwOSB8fCBjaCA9PT0gMHgwQiB8fCBjaCA9PT0gMHgwQyB8fCBjaCA9PT0gMHhBMCB8fFxuICAgICAgICAgICAgY2ggPj0gMHgxNjgwICYmIE5PTl9BU0NJSV9XSElURVNQQUNFUy5pbmRleE9mKGNoKSA+PSAwO1xuICAgIH1cblxuICAgIC8vIDcuMyBMaW5lIFRlcm1pbmF0b3JzXG5cbiAgICBmdW5jdGlvbiBpc0xpbmVUZXJtaW5hdG9yKGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA9PT0gMHgwQSB8fCBjaCA9PT0gMHgwRCB8fCBjaCA9PT0gMHgyMDI4IHx8IGNoID09PSAweDIwMjk7XG4gICAgfVxuXG4gICAgLy8gNy42IElkZW50aWZpZXIgTmFtZXMgYW5kIElkZW50aWZpZXJzXG5cbiAgICBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KGNwKSB7XG4gICAgICAgIGlmIChjcCA8PSAweEZGRkYpIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3ApOyB9XG4gICAgICAgIHZhciBjdTEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGguZmxvb3IoKGNwIC0gMHgxMDAwMCkgLyAweDQwMCkgKyAweEQ4MDApO1xuICAgICAgICB2YXIgY3UyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGNwIC0gMHgxMDAwMCkgJSAweDQwMCkgKyAweERDMDApO1xuICAgICAgICByZXR1cm4gY3UxICsgY3UyO1xuICAgIH1cblxuICAgIElERU5USUZJRVJfU1RBUlQgPSBuZXcgQXJyYXkoMHg4MCk7XG4gICAgZm9yKGNoID0gMDsgY2ggPCAweDgwOyArK2NoKSB7XG4gICAgICAgIElERU5USUZJRVJfU1RBUlRbY2hdID1cbiAgICAgICAgICAgIGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSB8fCAgLy8gYS4uelxuICAgICAgICAgICAgY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBIHx8ICAvLyBBLi5aXG4gICAgICAgICAgICBjaCA9PT0gMHgyNCB8fCBjaCA9PT0gMHg1RjsgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2NvcmUpXG4gICAgfVxuXG4gICAgSURFTlRJRklFUl9QQVJUID0gbmV3IEFycmF5KDB4ODApO1xuICAgIGZvcihjaCA9IDA7IGNoIDwgMHg4MDsgKytjaCkge1xuICAgICAgICBJREVOVElGSUVSX1BBUlRbY2hdID1cbiAgICAgICAgICAgIGNoID49IDB4NjEgJiYgY2ggPD0gMHg3QSB8fCAgLy8gYS4uelxuICAgICAgICAgICAgY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBIHx8ICAvLyBBLi5aXG4gICAgICAgICAgICBjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkgfHwgIC8vIDAuLjlcbiAgICAgICAgICAgIGNoID09PSAweDI0IHx8IGNoID09PSAweDVGOyAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydEVTNShjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9TVEFSVFtjaF0gOiBFUzVSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0RVM1KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1BBUlRbY2hdIDogRVM1UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydEVTNihjaCkge1xuICAgICAgICByZXR1cm4gY2ggPCAweDgwID8gSURFTlRJRklFUl9TVEFSVFtjaF0gOiBFUzZSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0RVM2KGNoKSB7XG4gICAgICAgIHJldHVybiBjaCA8IDB4ODAgPyBJREVOVElGSUVSX1BBUlRbY2hdIDogRVM2UmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gpKTtcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNEZWNpbWFsRGlnaXQ6IGlzRGVjaW1hbERpZ2l0LFxuICAgICAgICBpc0hleERpZ2l0OiBpc0hleERpZ2l0LFxuICAgICAgICBpc09jdGFsRGlnaXQ6IGlzT2N0YWxEaWdpdCxcbiAgICAgICAgaXNXaGl0ZVNwYWNlOiBpc1doaXRlU3BhY2UsXG4gICAgICAgIGlzTGluZVRlcm1pbmF0b3I6IGlzTGluZVRlcm1pbmF0b3IsXG4gICAgICAgIGlzSWRlbnRpZmllclN0YXJ0RVM1OiBpc0lkZW50aWZpZXJTdGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyUGFydEVTNTogaXNJZGVudGlmaWVyUGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyU3RhcnRFUzY6IGlzSWRlbnRpZmllclN0YXJ0RVM2LFxuICAgICAgICBpc0lkZW50aWZpZXJQYXJ0RVM2OiBpc0lkZW50aWZpZXJQYXJ0RVM2XG4gICAgfTtcbn0oKSk7XG4vKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqL1xuIiwiLypcbiAgQ29weXJpZ2h0IChDKSAyMDEzIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBjb2RlID0gcmVxdWlyZSgnLi9jb2RlJyk7XG5cbiAgICBmdW5jdGlvbiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmRFUzYoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdpbXBsZW1lbnRzJzpcbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQnOlxuICAgICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICBjYXNlICdzdGF0aWMnOlxuICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmRFUzUoaWQsIHN0cmljdCkge1xuICAgICAgICAvLyB5aWVsZCBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMga2V5d29yZCB1bmRlciBub24tc3RyaWN0IG1vZGUuXG4gICAgICAgIGlmICghc3RyaWN0ICYmIGlkID09PSAneWllbGQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzS2V5d29yZEVTNihpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0tleXdvcmRFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZEVTNihpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChpZC5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2lmJykgfHwgKGlkID09PSAnaW4nKSB8fCAoaWQgPT09ICdkbycpO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAndmFyJykgfHwgKGlkID09PSAnZm9yJykgfHwgKGlkID09PSAnbmV3JykgfHwgKGlkID09PSAndHJ5Jyk7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd0aGlzJykgfHwgKGlkID09PSAnZWxzZScpIHx8IChpZCA9PT0gJ2Nhc2UnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9PT0gJ2NhdGNoJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNoJykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2Z1bmN0aW9uJykgfHwgKGlkID09PSAnY29udGludWUnKSB8fCAoaWQgPT09ICdkZWJ1Z2dlcicpO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnbnVsbCcgfHwgaWQgPT09ICd0cnVlJyB8fCBpZCA9PT0gJ2ZhbHNlJyB8fCBpc0tleXdvcmRFUzUoaWQsIHN0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZXNlcnZlZFdvcmRFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaWQgPT09ICdudWxsJyB8fCBpZCA9PT0gJ3RydWUnIHx8IGlkID09PSAnZmFsc2UnIHx8IGlzS2V5d29yZEVTNihpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jlc3RyaWN0ZWRXb3JkKGlkKSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJOYW1lRVM1KGlkKSB7XG4gICAgICAgIHZhciBpLCBpeiwgY2g7XG5cbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGlmICghY29kZS5pc0lkZW50aWZpZXJTdGFydEVTNShjaCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDEsIGl6ID0gaWQubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgY2ggPSBpZC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKCFjb2RlLmlzSWRlbnRpZmllclBhcnRFUzUoY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlY29kZVV0ZjE2KGxlYWQsIHRyYWlsKSB7XG4gICAgICAgIHJldHVybiAobGVhZCAtIDB4RDgwMCkgKiAweDQwMCArICh0cmFpbCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWVFUzYoaWQpIHtcbiAgICAgICAgdmFyIGksIGl6LCBjaCwgbG93Q2gsIGNoZWNrO1xuXG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY2hlY2sgPSBjb2RlLmlzSWRlbnRpZmllclN0YXJ0RVM2O1xuICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGlkLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgIGNoID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKSB7XG4gICAgICAgICAgICAgICAgKytpO1xuICAgICAgICAgICAgICAgIGlmIChpID49IGl6KSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICAgICAgICAgIGxvd0NoID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgICAgICBpZiAoISgweERDMDAgPD0gbG93Q2ggJiYgbG93Q2ggPD0gMHhERkZGKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNoID0gZGVjb2RlVXRmMTYoY2gsIGxvd0NoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2hlY2soY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hlY2sgPSBjb2RlLmlzSWRlbnRpZmllclBhcnRFUzY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlzSWRlbnRpZmllck5hbWVFUzUoaWQpICYmICFpc1Jlc2VydmVkV29yZEVTNShpZCwgc3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaXNJZGVudGlmaWVyTmFtZUVTNihpZCkgJiYgIWlzUmVzZXJ2ZWRXb3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0ge1xuICAgICAgICBpc0tleXdvcmRFUzU6IGlzS2V5d29yZEVTNSxcbiAgICAgICAgaXNLZXl3b3JkRVM2OiBpc0tleXdvcmRFUzYsXG4gICAgICAgIGlzUmVzZXJ2ZWRXb3JkRVM1OiBpc1Jlc2VydmVkV29yZEVTNSxcbiAgICAgICAgaXNSZXNlcnZlZFdvcmRFUzY6IGlzUmVzZXJ2ZWRXb3JkRVM2LFxuICAgICAgICBpc1Jlc3RyaWN0ZWRXb3JkOiBpc1Jlc3RyaWN0ZWRXb3JkLFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM1OiBpc0lkZW50aWZpZXJOYW1lRVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM2OiBpc0lkZW50aWZpZXJOYW1lRVM2LFxuICAgICAgICBpc0lkZW50aWZpZXJFUzU6IGlzSWRlbnRpZmllckVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyRVM2OiBpc0lkZW50aWZpZXJFUzZcbiAgICB9O1xufSgpKTtcbi8qIHZpbTogc2V0IHN3PTQgdHM9NCBldCB0dz04MCA6ICovXG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTMgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBleHBvcnRzLmFzdCA9IHJlcXVpcmUoJy4vYXN0Jyk7XG4gICAgZXhwb3J0cy5jb2RlID0gcmVxdWlyZSgnLi9jb2RlJyk7XG4gICAgZXhwb3J0cy5rZXl3b3JkID0gcmVxdWlyZSgnLi9rZXl3b3JkJyk7XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCBvYmplY3RDcmVhdGVQb2x5ZmlsbFxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBvYmplY3RLZXlzUG9seWZpbGxcbnZhciBiaW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgZnVuY3Rpb25CaW5kUG9seWZpbGxcblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsICdfZXZlbnRzJykpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxudmFyIGhhc0RlZmluZVByb3BlcnR5O1xudHJ5IHtcbiAgdmFyIG8gPSB7fTtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sICd4JywgeyB2YWx1ZTogMCB9KTtcbiAgaGFzRGVmaW5lUHJvcGVydHkgPSBvLnggPT09IDA7XG59IGNhdGNoIChlcnIpIHsgaGFzRGVmaW5lUHJvcGVydHkgPSBmYWxzZSB9XG5pZiAoaGFzRGVmaW5lUHJvcGVydHkpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgaW5wdXQgaXMgYSBwb3NpdGl2ZSBudW1iZXIgKHdob3NlIHZhbHVlIGlzIHplcm8gb3JcbiAgICAgIC8vIGdyZWF0ZXIgYW5kIG5vdCBhIE5hTikuXG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBhcmcgIT09IGFyZylcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBkZWZhdWx0TWF4TGlzdGVuZXJzO1xufVxuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiblwiIGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiAkZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiAkZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuLy8gVGhlc2Ugc3RhbmRhbG9uZSBlbWl0KiBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gb3B0aW1pemUgY2FsbGluZyBvZiBldmVudFxuLy8gaGFuZGxlcnMgZm9yIGZhc3QgY2FzZXMgYmVjYXVzZSBlbWl0KCkgaXRzZWxmIG9mdGVuIGhhcyBhIHZhcmlhYmxlIG51bWJlciBvZlxuLy8gYXJndW1lbnRzIGFuZCBjYW4gYmUgZGVvcHRpbWl6ZWQgYmVjYXVzZSBvZiB0aGF0LiBUaGVzZSBmdW5jdGlvbnMgYWx3YXlzIGhhdmVcbi8vIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHRodXMgZG8gbm90IGdldCBkZW9wdGltaXplZCwgc28gdGhlIGNvZGVcbi8vIGluc2lkZSB0aGVtIGNhbiBleGVjdXRlIGZhc3Rlci5cbmZ1bmN0aW9uIGVtaXROb25lKGhhbmRsZXIsIGlzRm4sIHNlbGYpIHtcbiAgaWYgKGlzRm4pXG4gICAgaGFuZGxlci5jYWxsKHNlbGYpO1xuICBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgbGlzdGVuZXJzW2ldLmNhbGwoc2VsZik7XG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRPbmUoaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJnMSkge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZiwgYXJnMSk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmLCBhcmcxKTtcbiAgfVxufVxuZnVuY3Rpb24gZW1pdFR3byhoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmcxLCBhcmcyKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuY2FsbChzZWxmLCBhcmcxLCBhcmcyKTtcbiAgZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIGxpc3RlbmVyc1tpXS5jYWxsKHNlbGYsIGFyZzEsIGFyZzIpO1xuICB9XG59XG5mdW5jdGlvbiBlbWl0VGhyZWUoaGFuZGxlciwgaXNGbiwgc2VsZiwgYXJnMSwgYXJnMiwgYXJnMykge1xuICBpZiAoaXNGbilcbiAgICBoYW5kbGVyLmNhbGwoc2VsZiwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uY2FsbChzZWxmLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0TWFueShoYW5kbGVyLCBpc0ZuLCBzZWxmLCBhcmdzKSB7XG4gIGlmIChpc0ZuKVxuICAgIGhhbmRsZXIuYXBwbHkoc2VsZiwgYXJncyk7XG4gIGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkoc2VsZiwgYXJncyk7XG4gIH1cbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBldmVudHM7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cylcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09IG51bGwpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSlcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmICghaGFuZGxlcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGlzRm4gPSB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJztcbiAgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgc3dpdGNoIChsZW4pIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICBjYXNlIDE6XG4gICAgICBlbWl0Tm9uZShoYW5kbGVyLCBpc0ZuLCB0aGlzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIGVtaXRPbmUoaGFuZGxlciwgaXNGbiwgdGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIGVtaXRUd28oaGFuZGxlciwgaXNGbiwgdGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgZW1pdFRocmVlKGhhbmRsZXIsIGlzRm4sIHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdLCBhcmd1bWVudHNbM10pO1xuICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICBkZWZhdWx0OlxuICAgICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICBlbWl0TWFueShoYW5kbGVyLCBpc0ZuLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKCFldmVudHMpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmICghZXhpc3RpbmcpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgICAgaWYgKHByZXBlbmQpIHtcbiAgICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIGlmICghZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBtID0gJGdldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgICAgaWYgKG0gJiYgbSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSkge1xuICAgICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgXCInICsgU3RyaW5nKHR5cGUpICsgJ1wiIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQuJyk7XG4gICAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ29iamVjdCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCclczogJXMnLCB3Lm5hbWUsIHcubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsIGFyZ3VtZW50c1swXSk7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKTtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCwgYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sXG4gICAgICAgICAgICBhcmd1bWVudHNbMl0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSlcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gYmluZC5jYWxsKG9uY2VXcmFwcGVyLCBzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJylcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKCFldmVudHMpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKCFsaXN0KVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKCFldmVudHMpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoIWV2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBvYmplY3RDcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IG9iamVjdEtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycykge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoIWV2ZW50cylcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmICghZXZsaXN0ZW5lcilcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID8gdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuLy8gQWJvdXQgMS41eCBmYXN0ZXIgdGhhbiB0aGUgdHdvLWFyZyB2ZXJzaW9uIG9mIEFycmF5I3NwbGljZSgpLlxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAodmFyIGkgPSBpbmRleCwgayA9IGkgKyAxLCBuID0gbGlzdC5sZW5ndGg7IGsgPCBuOyBpICs9IDEsIGsgKz0gMSlcbiAgICBsaXN0W2ldID0gbGlzdFtrXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBvYmplY3RDcmVhdGVQb2x5ZmlsbChwcm90bykge1xuICB2YXIgRiA9IGZ1bmN0aW9uKCkge307XG4gIEYucHJvdG90eXBlID0gcHJvdG87XG4gIHJldHVybiBuZXcgRjtcbn1cbmZ1bmN0aW9uIG9iamVjdEtleXNQb2x5ZmlsbChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIgayBpbiBvYmopIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrKSkge1xuICAgIGtleXMucHVzaChrKTtcbiAgfVxuICByZXR1cm4gaztcbn1cbmZ1bmN0aW9uIGZ1bmN0aW9uQmluZFBvbHlmaWxsKGNvbnRleHQpIHtcbiAgdmFyIGZuID0gdGhpcztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuYWRkcmVzc1xuICovXG5mdW5jdGlvbiBBZGRyZXNzIChmYWtlcikge1xuICB2YXIgZiA9IGZha2VyLmZha2UsXG4gICAgICBIZWxwZXJzID0gZmFrZXIuaGVscGVycztcblxuICAvKipcbiAgICogR2VuZXJhdGVzIHJhbmRvbSB6aXBjb2RlIGZyb20gZm9ybWF0LiBJZiBmb3JtYXQgaXMgbm90IHNwZWNpZmllZCwgdGhlXG4gICAqIGxvY2FsZSdzIHppcCBmb3JtYXQgaXMgdXNlZC5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnppcENvZGVcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgdGhpcy56aXBDb2RlID0gZnVuY3Rpb24oZm9ybWF0KSB7XG4gICAgLy8gaWYgemlwIGZvcm1hdCBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIHppcCBmb3JtYXQgZGVmaW5lZCBmb3IgdGhlIGxvY2FsZVxuICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIGxvY2FsZUZvcm1hdCA9IGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MucG9zdGNvZGU7XG4gICAgICBpZiAodHlwZW9mIGxvY2FsZUZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZm9ybWF0ID0gbG9jYWxlRm9ybWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChsb2NhbGVGb3JtYXQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9scyhmb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJhbmRvbSBsb2NhbGl6ZWQgY2l0eSBuYW1lLiBUaGUgZm9ybWF0IHN0cmluZyBjYW4gY29udGFpbiBhbnlcbiAgICogbWV0aG9kIHByb3ZpZGVkIGJ5IGZha2VyIHdyYXBwZWQgaW4gYHt7fX1gLCBlLmcuIGB7e25hbWUuZmlyc3ROYW1lfX1gIGluXG4gICAqIG9yZGVyIHRvIGJ1aWxkIHRoZSBjaXR5IG5hbWUuXG4gICAqXG4gICAqIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgcmFuZG9tbHkgdXNlZDpcbiAgICogXG4gICAqICogYHt7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fWBcbiAgICogKiBge3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX1gXG4gICAqICogYHt7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX1gXG4gICAqICogYHt7bmFtZS5sYXN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fWBcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNpdHlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFxuICAgKi9cbiAgdGhpcy5jaXR5ID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgIHZhciBmb3JtYXRzID0gW1xuICAgICAgJ3t7YWRkcmVzcy5jaXR5UHJlZml4fX0ge3tuYW1lLmZpcnN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fScsXG4gICAgICAne3thZGRyZXNzLmNpdHlQcmVmaXh9fSB7e25hbWUuZmlyc3ROYW1lfX0nLFxuICAgICAgJ3t7bmFtZS5maXJzdE5hbWV9fXt7YWRkcmVzcy5jaXR5U3VmZml4fX0nLFxuICAgICAgJ3t7bmFtZS5sYXN0TmFtZX19e3thZGRyZXNzLmNpdHlTdWZmaXh9fSdcbiAgICBdO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGZvcm1hdCA9IGZha2VyLnJhbmRvbS5udW1iZXIoZm9ybWF0cy5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZihmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmFuZG9tIGxvY2FsaXplZCBjaXR5IHByZWZpeFxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3MuY2l0eVByZWZpeFxuICAgKi9cbiAgdGhpcy5jaXR5UHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmFkZHJlc3MuY2l0eV9wcmVmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHJhbmRvbSBsb2NhbGl6ZWQgY2l0eSBzdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNpdHlTdWZmaXhcbiAgICovXG4gIHRoaXMuY2l0eVN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNpdHlfc3VmZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmFuZG9tIGxvY2FsaXplZCBzdHJlZXQgbmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZVxuICAgKi9cbiAgdGhpcy5zdHJlZXROYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHZhciBzdWZmaXggPSBmYWtlci5hZGRyZXNzLnN0cmVldFN1ZmZpeCgpO1xuICAgICAgaWYgKHN1ZmZpeCAhPT0gXCJcIikge1xuICAgICAgICAgIHN1ZmZpeCA9IFwiIFwiICsgc3VmZml4XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZmFrZXIucmFuZG9tLm51bWJlcigxKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJlc3VsdCA9IGZha2VyLm5hbWUubGFzdE5hbWUoKSArIHN1ZmZpeDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXN1bHQgPSBmYWtlci5uYW1lLmZpcnN0TmFtZSgpICsgc3VmZml4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vXG4gIC8vIFRPRE86IGNoYW5nZSBhbGwgdGhlc2UgbWV0aG9kcyB0aGF0IGFjY2VwdCBhIGJvb2xlYW4gdG8gaW5zdGVhZCBhY2NlcHQgYW4gb3B0aW9ucyBoYXNoLlxuICAvL1xuICAvKipcbiAgICogUmV0dXJucyBhIHJhbmRvbSBsb2NhbGl6ZWQgc3RyZWV0IGFkZHJlc3NcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldEFkZHJlc3NcbiAgICogQHBhcmFtIHtCb29sZWFufSB1c2VGdWxsQWRkcmVzc1xuICAgKi9cbiAgdGhpcy5zdHJlZXRBZGRyZXNzID0gZnVuY3Rpb24gKHVzZUZ1bGxBZGRyZXNzKSB7XG4gICAgICBpZiAodXNlRnVsbEFkZHJlc3MgPT09IHVuZGVmaW5lZCkgeyB1c2VGdWxsQWRkcmVzcyA9IGZhbHNlOyB9XG4gICAgICB2YXIgYWRkcmVzcyA9IFwiXCI7XG4gICAgICBzd2l0Y2ggKGZha2VyLnJhbmRvbS5udW1iZXIoMikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjIyMjXCIpICsgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjIyNcIikgKyAgXCIgXCIgKyBmYWtlci5hZGRyZXNzLnN0cmVldE5hbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgICBhZGRyZXNzID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihcIiMjI1wiKSArIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXNlRnVsbEFkZHJlc3MgPyAoYWRkcmVzcyArIFwiIFwiICsgZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCkpIDogYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdHJlZXRTdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0cmVldFN1ZmZpeFxuICAgKi9cbiAgdGhpcy5zdHJlZXRTdWZmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0cmVldF9zdWZmaXgpO1xuICB9XG4gIFxuICAvKipcbiAgICogc3RyZWV0UHJlZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zdHJlZXRQcmVmaXhcbiAgICovXG4gIHRoaXMuc3RyZWV0UHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5zdHJlZXRfcHJlZml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWNvbmRhcnlBZGRyZXNzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzXG4gICAqL1xuICB0aGlzLnNlY29uZGFyeUFkZHJlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcihmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFxuICAgICAgICAgIFtcbiAgICAgICAgICAgICAgJ0FwdC4gIyMjJyxcbiAgICAgICAgICAgICAgJ1N1aXRlICMjIydcbiAgICAgICAgICBdXG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3VudHlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNvdW50eVxuICAgKi9cbiAgdGhpcy5jb3VudHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuYWRkcmVzcy5jb3VudHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvdW50cnlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmNvdW50cnlcbiAgICovXG4gIHRoaXMuY291bnRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNvdW50cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvdW50cnlDb2RlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5jb3VudHJ5Q29kZVxuICAgKi9cbiAgdGhpcy5jb3VudHJ5Q29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLmNvdW50cnlfY29kZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhdGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0YXRlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gdXNlQWJiclxuICAgKi9cbiAgdGhpcy5zdGF0ZSA9IGZ1bmN0aW9uICh1c2VBYmJyKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGF0ZUFiYnJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLnN0YXRlQWJiclxuICAgKi9cbiAgdGhpcy5zdGF0ZUFiYnIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5hZGRyZXNzLnN0YXRlX2FiYnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxhdGl0dWRlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuYWRkcmVzcy5sYXRpdHVkZVxuICAgKi9cbiAgdGhpcy5sYXRpdHVkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoZmFrZXIucmFuZG9tLm51bWJlcigxODAgKiAxMDAwMCkgLyAxMDAwMC4wIC0gOTAuMCkudG9GaXhlZCg0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb25naXR1ZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5hZGRyZXNzLmxvbmdpdHVkZVxuICAgKi9cbiAgdGhpcy5sb25naXR1ZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKGZha2VyLnJhbmRvbS5udW1iZXIoMzYwICogMTAwMDApIC8gMTAwMDAuMCAtIDE4MC4wKS50b0ZpeGVkKDQpO1xuICB9XG4gIFxuICByZXR1cm4gdGhpcztcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IEFkZHJlc3M7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmNvbW1lcmNlXG4gKi9cbnZhciBDb21tZXJjZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLyoqXG4gICAqIGNvbG9yXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UuY29sb3JcbiAgICovXG4gIHNlbGYuY29sb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmNvbG9yKTtcbiAgfTtcblxuICAvKipcbiAgICogZGVwYXJ0bWVudFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLmRlcGFydG1lbnRcbiAgICovXG4gIHNlbGYuZGVwYXJ0bWVudCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UuZGVwYXJ0bWVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3ROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJvZHVjdE5hbWVcbiAgICovXG4gIHNlbGYucHJvZHVjdE5hbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5jb21tZXJjZS5wcm9kdWN0QWRqZWN0aXZlKCkgKyBcIiBcIiArXG4gICAgICAgICAgICAgIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RNYXRlcmlhbCgpICsgXCIgXCIgK1xuICAgICAgICAgICAgICBmYWtlci5jb21tZXJjZS5wcm9kdWN0KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByaWNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tbWVyY2UucHJpY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pblxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbFxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBzZWxmLnByaWNlID0gZnVuY3Rpb24obWluLCBtYXgsIGRlYywgc3ltYm9sKSB7XG4gICAgICBtaW4gPSBtaW4gfHwgMDtcbiAgICAgIG1heCA9IG1heCB8fCAxMDAwO1xuICAgICAgZGVjID0gZGVjID09PSB1bmRlZmluZWQgPyAyIDogZGVjO1xuICAgICAgc3ltYm9sID0gc3ltYm9sIHx8ICcnO1xuXG4gICAgICBpZiAobWluIDwgMCB8fCBtYXggPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIHN5bWJvbCArIDAuMDA7XG4gICAgICB9XG5cbiAgICAgIHZhciByYW5kVmFsdWUgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBtYXgsIG1pbjogbWluIH0pO1xuXG4gICAgICByZXR1cm4gc3ltYm9sICsgKE1hdGgucm91bmQocmFuZFZhbHVlICogTWF0aC5wb3coMTAsIGRlYykpIC8gTWF0aC5wb3coMTAsIGRlYykpLnRvRml4ZWQoZGVjKTtcbiAgfTtcblxuICAvKlxuICBzZWxmLmNhdGVnb3JpZXMgPSBmdW5jdGlvbihudW0pIHtcbiAgICAgIHZhciBjYXRlZ29yaWVzID0gW107XG5cbiAgICAgIGRvIHtcbiAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLmRlcGFydG1lbnQpO1xuICAgICAgICAgIGlmKGNhdGVnb3JpZXMuaW5kZXhPZihjYXRlZ29yeSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XG4gICAgICAgICAgfVxuICAgICAgfSB3aGlsZShjYXRlZ29yaWVzLmxlbmd0aCA8IG51bSk7XG5cbiAgICAgIHJldHVybiBjYXRlZ29yaWVzO1xuICB9O1xuXG4gICovXG4gIC8qXG4gIHNlbGYubWVyZ2VDYXRlZ29yaWVzID0gZnVuY3Rpb24oY2F0ZWdvcmllcykge1xuICAgICAgdmFyIHNlcGFyYXRvciA9IGZha2VyLmRlZmluaXRpb25zLnNlcGFyYXRvciB8fCBcIiAmXCI7XG4gICAgICAvLyBUT0RPOiBmaW5kIHVuZGVmaW5lZCBoZXJlXG4gICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcyB8fCBmYWtlci5kZWZpbml0aW9ucy5jb21tZXJjZS5jYXRlZ29yaWVzO1xuICAgICAgdmFyIGNvbW1hU2VwYXJhdGVkID0gY2F0ZWdvcmllcy5zbGljZSgwLCAtMSkuam9pbignLCAnKTtcblxuICAgICAgcmV0dXJuIFtjb21tYVNlcGFyYXRlZCwgY2F0ZWdvcmllc1tjYXRlZ29yaWVzLmxlbmd0aCAtIDFdXS5qb2luKHNlcGFyYXRvciArIFwiIFwiKTtcbiAgfTtcbiAgKi9cblxuICAvKipcbiAgICogcHJvZHVjdEFkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RBZGplY3RpdmVcbiAgICovXG4gIHNlbGYucHJvZHVjdEFkamVjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tbWVyY2UucHJvZHVjdF9uYW1lLmFkamVjdGl2ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3RNYXRlcmlhbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbW1lcmNlLnByb2R1Y3RNYXRlcmlhbFxuICAgKi9cbiAgc2VsZi5wcm9kdWN0TWF0ZXJpYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLnByb2R1Y3RfbmFtZS5tYXRlcmlhbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHByb2R1Y3RcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21tZXJjZS5wcm9kdWN0XG4gICAqL1xuICBzZWxmLnByb2R1Y3QgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbW1lcmNlLnByb2R1Y3RfbmFtZS5wcm9kdWN0KTtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn07XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gQ29tbWVyY2U7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmNvbXBhbnlcbiAqL1xudmFyIENvbXBhbnkgPSBmdW5jdGlvbiAoZmFrZXIpIHtcbiAgXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGYgPSBmYWtlci5mYWtlO1xuICBcbiAgLyoqXG4gICAqIHN1ZmZpeGVzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5zdWZmaXhlc1xuICAgKi9cbiAgdGhpcy5zdWZmaXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBEb24ndCB3YW50IHRoZSBzb3VyY2UgYXJyYXkgZXhwb3NlZCB0byBtb2RpZmljYXRpb24sIHNvIHJldHVybiBhIGNvcHlcbiAgICByZXR1cm4gZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5zdWZmaXguc2xpY2UoMCk7XG4gIH1cblxuICAvKipcbiAgICogY29tcGFueU5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICovXG4gIHRoaXMuY29tcGFueU5hbWUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG5cbiAgICB2YXIgZm9ybWF0cyA9IFtcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSB7e2NvbXBhbnkuY29tcGFueVN1ZmZpeH19JyxcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSAtIHt7bmFtZS5sYXN0TmFtZX19JyxcbiAgICAgICd7e25hbWUubGFzdE5hbWV9fSwge3tuYW1lLmxhc3ROYW1lfX0gYW5kIHt7bmFtZS5sYXN0TmFtZX19J1xuICAgIF07XG5cbiAgICBpZiAodHlwZW9mIGZvcm1hdCAhPT0gXCJudW1iZXJcIikge1xuICAgICAgZm9ybWF0ID0gZmFrZXIucmFuZG9tLm51bWJlcihmb3JtYXRzLmxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBmKGZvcm1hdHNbZm9ybWF0XSk7XG4gIH1cblxuICAvKipcbiAgICogY29tcGFueVN1ZmZpeFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY29tcGFueVN1ZmZpeFxuICAgKi9cbiAgdGhpcy5jb21wYW55U3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuY29tcGFueS5zdWZmaXhlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VcbiAgICovXG4gIHRoaXMuY2F0Y2hQaHJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGYoJ3t7Y29tcGFueS5jYXRjaFBocmFzZUFkamVjdGl2ZX19IHt7Y29tcGFueS5jYXRjaFBocmFzZURlc2NyaXB0b3J9fSB7e2NvbXBhbnkuY2F0Y2hQaHJhc2VOb3VufX0nKVxuICB9XG5cbiAgLyoqXG4gICAqIGJzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic1xuICAgKi9cbiAgdGhpcy5icyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZigne3tjb21wYW55LmJzQWRqZWN0aXZlfX0ge3tjb21wYW55LmJzQnV6en19IHt7Y29tcGFueS5ic05vdW59fScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlQWRqZWN0aXZlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5jYXRjaFBocmFzZUFkamVjdGl2ZVxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZUFkamVjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYWRqZWN0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXRjaFBocmFzZURlc2NyaXB0b3JcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlRGVzY3JpcHRvclxuICAgKi9cbiAgdGhpcy5jYXRjaFBocmFzZURlc2NyaXB0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5jb21wYW55LmRlc2NyaXB0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhdGNoUGhyYXNlTm91blxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2VOb3VuXG4gICAqL1xuICB0aGlzLmNhdGNoUGhyYXNlTm91biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkubm91bik7XG4gIH1cblxuICAvKipcbiAgICogYnNBZGplY3RpdmVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5jb21wYW55LmJzQWRqZWN0aXZlXG4gICAqL1xuICB0aGlzLmJzQWRqZWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ic19hZGplY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIGJzQnV6elxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmNvbXBhbnkuYnNCdXp6XG4gICAqL1xuICB0aGlzLmJzQnV6eiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmNvbXBhbnkuYnNfdmVyYik7XG4gIH1cblxuICAvKipcbiAgICogYnNOb3VuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuY29tcGFueS5ic05vdW5cbiAgICovXG4gIHRoaXMuYnNOb3VuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuY29tcGFueS5ic19ub3VuKTtcbiAgfVxuICBcbn1cblxubW9kdWxlWydleHBvcnRzJ10gPSBDb21wYW55OyIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuZGF0YWJhc2VcbiAqL1xudmFyIERhdGFiYXNlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIGNvbHVtblxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLmNvbHVtblxuICAgKi9cbiAgc2VsZi5jb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5kYXRhYmFzZS5jb2x1bW4pO1xuICB9O1xuXG4gIHNlbGYuY29sdW1uLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgY29sdW1uIG5hbWUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcImlkXCIsIFwidGl0bGVcIiwgXCJjcmVhdGVkQXRcIl1cbiAgfTtcblxuICAvKipcbiAgICogdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmRhdGFiYXNlLnR5cGVcbiAgICovXG4gIHNlbGYudHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLnR5cGUpO1xuICB9O1xuXG4gIHNlbGYudHlwZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIGNvbHVtbiB0eXBlLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJieXRlXCIsIFwiaW50XCIsIFwidmFyY2hhclwiLCBcInRpbWVzdGFtcFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBjb2xsYXRpb25cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRhYmFzZS5jb2xsYXRpb25cbiAgICovXG4gIHNlbGYuY29sbGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZGF0YWJhc2UuY29sbGF0aW9uKTtcbiAgfTtcblxuICBzZWxmLmNvbGxhdGlvbi5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIGNvbGxhdGlvbi5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1widXRmOF91bmljb2RlX2NpXCIsIFwidXRmOF9iaW5cIl1cbiAgfTtcblxuICAvKipcbiAgICogZW5naW5lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0YWJhc2UuZW5naW5lXG4gICAqL1xuICBzZWxmLmVuZ2luZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmRhdGFiYXNlLmVuZ2luZSk7XG4gIH07XG5cbiAgc2VsZi5lbmdpbmUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSBzdG9yYWdlIGVuZ2luZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiTXlJU0FNXCIsIFwiSW5ub0RCXCJdXG4gIH07XG59O1xuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gRGF0YWJhc2U7XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLmRhdGVcbiAqL1xudmFyIF9EYXRlID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIHBhc3RcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLnBhc3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHllYXJzXG4gICAqIEBwYXJhbSB7ZGF0ZX0gcmVmRGF0ZVxuICAgKi9cbiAgc2VsZi5wYXN0ID0gZnVuY3Rpb24gKHllYXJzLCByZWZEYXRlKSB7XG4gICAgICB2YXIgZGF0ZSA9IChyZWZEYXRlKSA/IG5ldyBEYXRlKERhdGUucGFyc2UocmVmRGF0ZSkpIDogbmV3IERhdGUoKTtcbiAgICAgIHZhciByYW5nZSA9IHtcbiAgICAgICAgbWluOiAxMDAwLFxuICAgICAgICBtYXg6ICh5ZWFycyB8fCAxKSAqIDM2NSAqIDI0ICogMzYwMCAqIDEwMDBcbiAgICAgIH07XG5cbiAgICAgIHZhciBwYXN0ID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICBwYXN0IC09IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiB5ZWFycyBhZ28sIGluIG1pbGxpc2Vjb25kc1xuICAgICAgZGF0ZS5zZXRUaW1lKHBhc3QpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogZnV0dXJlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5mdXR1cmVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHllYXJzXG4gICAqIEBwYXJhbSB7ZGF0ZX0gcmVmRGF0ZVxuICAgKi9cbiAgc2VsZi5mdXR1cmUgPSBmdW5jdGlvbiAoeWVhcnMsIHJlZkRhdGUpIHtcbiAgICAgIHZhciBkYXRlID0gKHJlZkRhdGUpID8gbmV3IERhdGUoRGF0ZS5wYXJzZShyZWZEYXRlKSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgdmFyIHJhbmdlID0ge1xuICAgICAgICBtaW46IDEwMDAsXG4gICAgICAgIG1heDogKHllYXJzIHx8IDEpICogMzY1ICogMjQgKiAzNjAwICogMTAwMFxuICAgICAgfTtcblxuICAgICAgdmFyIGZ1dHVyZSA9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgZnV0dXJlICs9IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiB5ZWFycyBsYXRlciwgaW4gbWlsbGlzZWNvbmRzXG4gICAgICBkYXRlLnNldFRpbWUoZnV0dXJlKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGJldHdlZW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLmJldHdlZW5cbiAgICogQHBhcmFtIHtkYXRlfSBmcm9tXG4gICAqIEBwYXJhbSB7ZGF0ZX0gdG9cbiAgICovXG4gIHNlbGYuYmV0d2VlbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgICAgdmFyIGZyb21NaWxsaSA9IERhdGUucGFyc2UoZnJvbSk7XG4gICAgICB2YXIgZGF0ZU9mZnNldCA9IGZha2VyLnJhbmRvbS5udW1iZXIoRGF0ZS5wYXJzZSh0bykgLSBmcm9tTWlsbGkpO1xuXG4gICAgICB2YXIgbmV3RGF0ZSA9IG5ldyBEYXRlKGZyb21NaWxsaSArIGRhdGVPZmZzZXQpO1xuXG4gICAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogcmVjZW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5yZWNlbnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRheXNcbiAgICovXG4gIHNlbGYucmVjZW50ID0gZnVuY3Rpb24gKGRheXMpIHtcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIHZhciByYW5nZSA9IHtcbiAgICAgICAgbWluOiAxMDAwLFxuICAgICAgICBtYXg6IChkYXlzIHx8IDEpICogMjQgKiAzNjAwICogMTAwMFxuICAgICAgfTtcblxuICAgICAgdmFyIGZ1dHVyZSA9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgZnV0dXJlIC09IGZha2VyLnJhbmRvbS5udW1iZXIocmFuZ2UpOyAvLyBzb21lIHRpbWUgZnJvbSBub3cgdG8gTiBkYXlzIGFnbywgaW4gbWlsbGlzZWNvbmRzXG4gICAgICBkYXRlLnNldFRpbWUoZnV0dXJlKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIG1vbnRoXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZGF0ZS5tb250aFxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgc2VsZi5tb250aCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgdmFyIHR5cGUgPSAnd2lkZSc7XG4gICAgICBpZiAob3B0aW9ucy5hYmJyKSB7XG4gICAgICAgICAgdHlwZSA9ICdhYmJyJztcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLmRhdGUubW9udGhbdHlwZSArICdfY29udGV4dCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHR5cGUgKz0gJ19jb250ZXh0JztcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IGZha2VyLmRlZmluaXRpb25zLmRhdGUubW9udGhbdHlwZV07XG5cbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHNvdXJjZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHdlZWtkYXlcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAgICogQG1ldGhvZCBmYWtlci5kYXRlLndlZWtkYXlcbiAgICovXG4gIHNlbGYud2Vla2RheSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgdmFyIHR5cGUgPSAnd2lkZSc7XG4gICAgICBpZiAob3B0aW9ucy5hYmJyKSB7XG4gICAgICAgICAgdHlwZSA9ICdhYmJyJztcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNvbnRleHQgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLmRhdGUud2Vla2RheVt0eXBlICsgJ19jb250ZXh0J10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdHlwZSArPSAnX2NvbnRleHQnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gZmFrZXIuZGVmaW5pdGlvbnMuZGF0ZS53ZWVrZGF5W3R5cGVdO1xuXG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChzb3VyY2UpO1xuICB9O1xuICBcbiAgcmV0dXJuIHNlbGY7XG4gIFxufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBfRGF0ZTsiLCIvKlxuICBmYWtlLmpzIC0gZ2VuZXJhdG9yIG1ldGhvZCBmb3IgY29tYmluaW5nIGZha2VyIG1ldGhvZHMgYmFzZWQgb24gc3RyaW5nIGlucHV0XG5cbiovXG5cbmZ1bmN0aW9uIEZha2UgKGZha2VyKSB7XG4gIFxuICAvKipcbiAgICogR2VuZXJhdG9yIG1ldGhvZCBmb3IgY29tYmluaW5nIGZha2VyIG1ldGhvZHMgYmFzZWQgb24gc3RyaW5nIGlucHV0XG4gICAqXG4gICAqIF9fRXhhbXBsZTpfX1xuICAgKlxuICAgKiBgYGBcbiAgICogY29uc29sZS5sb2coZmFrZXIuZmFrZSgne3tuYW1lLmxhc3ROYW1lfX0sIHt7bmFtZS5maXJzdE5hbWV9fSB7e25hbWUuc3VmZml4fX0nKSk7XG4gICAqIC8vb3V0cHV0czogXCJNYXJrcywgRGVhbiBTci5cIlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyB3aWxsIGludGVycG9sYXRlIHRoZSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIHZhbHVlIG9mIG1ldGhvZHNcbiAgICogW25hbWUubGFzdE5hbWVde0BsaW5rIGZha2VyLm5hbWUubGFzdE5hbWV9LCBbbmFtZS5maXJzdE5hbWVde0BsaW5rIGZha2VyLm5hbWUuZmlyc3ROYW1lfSxcbiAgICogYW5kIFtuYW1lLnN1ZmZpeF17QGxpbmsgZmFrZXIubmFtZS5zdWZmaXh9XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmFrZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAqL1xuICB0aGlzLmZha2UgPSBmdW5jdGlvbiBmYWtlIChzdHIpIHtcbiAgICAvLyBzZXR1cCBkZWZhdWx0IHJlc3BvbnNlIGFzIGVtcHR5IHN0cmluZ1xuICAgIHZhciByZXMgPSAnJztcblxuICAgIC8vIGlmIGluY29taW5nIHN0ciBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCByZXR1cm4gZXJyb3IgbWVzc2FnZVxuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXMgPSAnc3RyaW5nIHBhcmFtZXRlciBpcyByZXF1aXJlZCEnO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBmaW5kIGZpcnN0IG1hdGNoaW5nIHt7IGFuZCB9fVxuICAgIHZhciBzdGFydCA9IHN0ci5zZWFyY2goJ3t7Jyk7XG4gICAgdmFyIGVuZCA9IHN0ci5zZWFyY2goJ319Jyk7XG5cbiAgICAvLyBpZiBubyB7eyBhbmQgfX0gaXMgZm91bmQsIHdlIGFyZSBkb25lXG4gICAgaWYgKHN0YXJ0ID09PSAtMSAmJiBlbmQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKCdhdHRlbXB0aW5nIHRvIHBhcnNlJywgc3RyKTtcblxuICAgIC8vIGV4dHJhY3QgbWV0aG9kIG5hbWUgZnJvbSBiZXR3ZWVuIHRoZSB7eyB9fSB0aGF0IHdlIGZvdW5kXG4gICAgLy8gZm9yIGV4YW1wbGU6IHt7bmFtZS5maXJzdE5hbWV9fVxuICAgIHZhciB0b2tlbiA9IHN0ci5zdWJzdHIoc3RhcnQgKyAyLCAgZW5kIC0gc3RhcnQgLSAyKTtcbiAgICB2YXIgbWV0aG9kID0gdG9rZW4ucmVwbGFjZSgnfX0nLCAnJykucmVwbGFjZSgne3snLCAnJyk7XG5cbiAgICAvLyBjb25zb2xlLmxvZygnbWV0aG9kJywgbWV0aG9kKVxuXG4gICAgLy8gZXh0cmFjdCBtZXRob2QgcGFyYW1ldGVyc1xuICAgIHZhciByZWdFeHAgPSAvXFwoKFteKV0rKVxcKS87XG4gICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyhtZXRob2QpO1xuICAgIHZhciBwYXJhbWV0ZXJzID0gJyc7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIG1ldGhvZCA9IG1ldGhvZC5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuICAgICAgcGFyYW1ldGVycyA9IG1hdGNoZXNbMV07XG4gICAgfVxuXG4gICAgLy8gc3BsaXQgdGhlIG1ldGhvZCBpbnRvIG1vZHVsZSBhbmQgZnVuY3Rpb25cbiAgICB2YXIgcGFydHMgPSBtZXRob2Quc3BsaXQoJy4nKTtcblxuICAgIGlmICh0eXBlb2YgZmFrZXJbcGFydHNbMF1dID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlOiAnICsgcGFydHNbMF0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmFrZXJbcGFydHNbMF1dW3BhcnRzWzFdXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1ldGhvZDogJyArIHBhcnRzWzBdICsgXCIuXCIgKyBwYXJ0c1sxXSk7XG4gICAgfVxuXG4gICAgLy8gYXNzaWduIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUuZnVuY3Rpb24gbmFtZXNwYWNlXG4gICAgdmFyIGZuID0gZmFrZXJbcGFydHNbMF1dW3BhcnRzWzFdXTtcblxuICAgIC8vIElmIHBhcmFtZXRlcnMgYXJlIHBvcHVsYXRlZCBoZXJlLCB0aGV5IGFyZSBhbHdheXMgZ29pbmcgdG8gYmUgb2Ygc3RyaW5nIHR5cGVcbiAgICAvLyBzaW5jZSB3ZSBtaWdodCBhY3R1YWxseSBiZSBkZWFsaW5nIHdpdGggYW4gb2JqZWN0IG9yIGFycmF5LFxuICAgIC8vIHdlIGFsd2F5cyBhdHRlbXB0IHRvIHRoZSBwYXJzZSB0aGUgaW5jb21pbmcgcGFyYW1ldGVycyBpbnRvIEpTT05cbiAgICB2YXIgcGFyYW1zO1xuICAgIC8vIE5vdGU6IHdlIGV4cGVyaWVuY2UgYSBzbWFsbCBwZXJmb3JtYW5jZSBoaXQgaGVyZSBkdWUgdG8gSlNPTi5wYXJzZSB0cnkgLyBjYXRjaFxuICAgIC8vIElmIGFueW9uZSBhY3R1YWxseSBuZWVkcyB0byBvcHRpbWl6ZSB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCwgcGxlYXNlIG9wZW4gYSBzdXBwb3J0IGlzc3VlIG9uIGdpdGh1YlxuICAgIHRyeSB7XG4gICAgICBwYXJhbXMgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBzaW5jZSBKU09OLnBhcnNlIHRocmV3IGFuIGVycm9yLCBhc3N1bWUgcGFyYW1ldGVycyB3YXMgYWN0dWFsbHkgYSBzdHJpbmdcbiAgICAgIHBhcmFtcyA9IHBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIiAmJiBwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSBmbi5jYWxsKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBmbi5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLy8gcmVwbGFjZSB0aGUgZm91bmQgdGFnIHdpdGggdGhlIHJldHVybmVkIGZha2UgdmFsdWVcbiAgICByZXMgPSBzdHIucmVwbGFjZSgne3snICsgdG9rZW4gKyAnfX0nLCByZXN1bHQpO1xuXG4gICAgLy8gcmV0dXJuIHRoZSByZXNwb25zZSByZWN1cnNpdmVseSB1bnRpbCB3ZSBhcmUgZG9uZSBmaW5kaW5nIGFsbCB0YWdzXG4gICAgcmV0dXJuIGZha2UocmVzKTsgICAgXG4gIH1cbiAgXG4gIHJldHVybiB0aGlzO1xuICBcbiAgXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gRmFrZTsiLCIvKipcbiAqIEBuYW1lc3BhY2UgZmFrZXIuZmluYW5jZVxuICovXG52YXIgRmluYW5jZSA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgaWJhbkxpYiA9IHJlcXVpcmUoXCIuL2liYW5cIik7XG4gIHZhciBIZWxwZXJzID0gZmFrZXIuaGVscGVycyxcbiAgICAgIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBhY2NvdW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hY2NvdW50XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAgICovXG4gIHNlbGYuYWNjb3VudCA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcblxuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHx8IDg7XG5cbiAgICAgIHZhciB0ZW1wbGF0ZSA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSArICcjJztcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG51bGw7XG4gICAgICByZXR1cm4gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcih0ZW1wbGF0ZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFjY291bnROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hY2NvdW50TmFtZVxuICAgKi9cbiAgc2VsZi5hY2NvdW50TmFtZSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgcmV0dXJuIFtIZWxwZXJzLnJhbmRvbWl6ZShmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmFjY291bnRfdHlwZSksICdBY2NvdW50J10uam9pbignICcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtYXNrXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5tYXNrXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAgICogQHBhcmFtIHtib29sZWFufSBwYXJlbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbGxpcHNpc1xuICAgKi9cbiAgc2VsZi5tYXNrID0gZnVuY3Rpb24gKGxlbmd0aCwgcGFyZW5zLCBlbGxpcHNpcykge1xuXG4gICAgICAvL3NldCBkZWZhdWx0c1xuICAgICAgbGVuZ3RoID0gKGxlbmd0aCA9PSAwIHx8ICFsZW5ndGggfHwgdHlwZW9mIGxlbmd0aCA9PSAndW5kZWZpbmVkJykgPyA0IDogbGVuZ3RoO1xuICAgICAgcGFyZW5zID0gKHBhcmVucyA9PT0gbnVsbCkgPyB0cnVlIDogcGFyZW5zO1xuICAgICAgZWxsaXBzaXMgPSAoZWxsaXBzaXMgPT09IG51bGwpID8gdHJ1ZSA6IGVsbGlwc2lzO1xuXG4gICAgICAvL2NyZWF0ZSBhIHRlbXBsYXRlIGZvciBsZW5ndGhcbiAgICAgIHZhciB0ZW1wbGF0ZSA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZSArICcjJztcbiAgICAgIH1cblxuICAgICAgLy9wcmVmaXggd2l0aCBlbGxpcHNpc1xuICAgICAgdGVtcGxhdGUgPSAoZWxsaXBzaXMpID8gWycuLi4nLCB0ZW1wbGF0ZV0uam9pbignJykgOiB0ZW1wbGF0ZTtcblxuICAgICAgdGVtcGxhdGUgPSAocGFyZW5zKSA/IFsnKCcsIHRlbXBsYXRlLCAnKSddLmpvaW4oJycpIDogdGVtcGxhdGU7XG5cbiAgICAgIC8vZ2VuZXJhdGUgcmFuZG9tIG51bWJlcnNcbiAgICAgIHRlbXBsYXRlID0gSGVscGVycy5yZXBsYWNlU3ltYm9sV2l0aE51bWJlcih0ZW1wbGF0ZSk7XG5cbiAgICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfTtcblxuICAvL21pbiBhbmQgbWF4IHRha2UgaW4gbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnRzLCBkZWMgaXMgdGhlIGRlY2ltYWwgcGxhY2UgeW91IHdhbnQgcm91bmRlZCB0bywgc3ltYm9sIGlzICQsIOKCrCwgwqMsIGV0Y1xuICAvL05PVEU6IHRoaXMgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUsIGlmIHlvdSB3YW50IGEgbnVtYmVyIHVzZSBwYXJzZUZsb2F0IGFuZCBubyBzeW1ib2xcblxuICAvKipcbiAgICogYW1vdW50XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5hbW91bnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pblxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbFxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBzZWxmLmFtb3VudCA9IGZ1bmN0aW9uIChtaW4sIG1heCwgZGVjLCBzeW1ib2wpIHtcblxuICAgICAgbWluID0gbWluIHx8IDA7XG4gICAgICBtYXggPSBtYXggfHwgMTAwMDtcbiAgICAgIGRlYyA9IGRlYyA9PT0gdW5kZWZpbmVkID8gMiA6IGRlYztcbiAgICAgIHN5bWJvbCA9IHN5bWJvbCB8fCAnJztcbiAgICAgIHZhciByYW5kVmFsdWUgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBtYXgsIG1pbjogbWluLCBwcmVjaXNpb246IE1hdGgucG93KDEwLCAtZGVjKSB9KTtcblxuICAgICAgcmV0dXJuIHN5bWJvbCArIHJhbmRWYWx1ZS50b0ZpeGVkKGRlYyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHRyYW5zYWN0aW9uVHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmZpbmFuY2UudHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBzZWxmLnRyYW5zYWN0aW9uVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBIZWxwZXJzLnJhbmRvbWl6ZShmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLnRyYW5zYWN0aW9uX3R5cGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjdXJyZW5jeUNvZGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmN1cnJlbmN5Q29kZVxuICAgKi9cbiAgc2VsZi5jdXJyZW5jeUNvZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuZmluYW5jZS5jdXJyZW5jeSlbJ2NvZGUnXTtcbiAgfTtcblxuICAvKipcbiAgICogY3VycmVuY3lOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuZmluYW5jZS5jdXJyZW5jeU5hbWVcbiAgICovXG4gIHNlbGYuY3VycmVuY3lOYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5vYmplY3RFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UuY3VycmVuY3ksICdrZXknKTtcbiAgfTtcblxuICAvKipcbiAgICogY3VycmVuY3lTeW1ib2xcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5maW5hbmNlLmN1cnJlbmN5U3ltYm9sXG4gICAqL1xuICBzZWxmLmN1cnJlbmN5U3ltYm9sID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN5bWJvbDtcblxuICAgICAgd2hpbGUgKCFzeW1ib2wpIHtcbiAgICAgICAgICBzeW1ib2wgPSBmYWtlci5yYW5kb20ub2JqZWN0RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5maW5hbmNlLmN1cnJlbmN5KVsnc3ltYm9sJ107XG4gICAgICB9XG4gICAgICByZXR1cm4gc3ltYm9sO1xuICB9O1xuXG4gIC8qKlxuICAgKiBiaXRjb2luQWRkcmVzc1xuICAgKlxuICAgKiBAbWV0aG9kICBmYWtlci5maW5hbmNlLmJpdGNvaW5BZGRyZXNzXG4gICAqL1xuICBzZWxmLmJpdGNvaW5BZGRyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhZGRyZXNzTGVuZ3RoID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMjcsIG1heDogMzQgfSk7XG5cbiAgICB2YXIgYWRkcmVzcyA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoWycxJywgJzMnXSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZHJlc3NMZW5ndGggLSAxOyBpKyspXG4gICAgICBhZGRyZXNzICs9IGZha2VyLnJhbmRvbS5hbHBoYU51bWVyaWMoKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGFkZHJlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIGliYW5cbiAgICpcbiAgICogQG1ldGhvZCAgZmFrZXIuZmluYW5jZS5pYmFuXG4gICAqL1xuICBzZWxmLmliYW4gPSBmdW5jdGlvbiAoZm9ybWF0dGVkKSB7XG4gICAgICB2YXIgaWJhbkZvcm1hdCA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5mb3JtYXRzKTtcbiAgICAgIHZhciBzID0gXCJcIjtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3IgKHZhciBiID0gMDsgYiA8IGliYW5Gb3JtYXQuYmJhbi5sZW5ndGg7IGIrKykge1xuICAgICAgICAgIHZhciBiYmFuID0gaWJhbkZvcm1hdC5iYmFuW2JdO1xuICAgICAgICAgIHZhciBjID0gYmJhbi5jb3VudDtcbiAgICAgICAgICBjb3VudCArPSBiYmFuLmNvdW50O1xuICAgICAgICAgIHdoaWxlIChjID4gMCkge1xuICAgICAgICAgICAgICBpZiAoYmJhbi50eXBlID09IFwiYVwiKSB7XG4gICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5hbHBoYSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmJhbi50eXBlID09IFwiY1wiKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmFrZXIucmFuZG9tLm51bWJlcigxMDApIDwgODApIHtcbiAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5udW1iZXIoOSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmFscGhhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGlmIChjID49IDMgJiYgZmFrZXIucmFuZG9tLm51bWJlcigxMDApIDwgMzApIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFrZXIucmFuZG9tLmJvb2xlYW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoaWJhbkxpYi5wYXR0ZXJuMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAyO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLnBhdHRlcm4xMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMtLTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHMgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjLS07XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBjb3VudCk7XG4gICAgICB9XG4gICAgICB2YXIgY2hlY2tzdW0gPSA5OCAtIGliYW5MaWIubW9kOTcoaWJhbkxpYi50b0RpZ2l0U3RyaW5nKHMgKyBpYmFuRm9ybWF0LmNvdW50cnkgKyBcIjAwXCIpKTtcbiAgICAgIGlmIChjaGVja3N1bSA8IDEwKSB7XG4gICAgICAgICAgY2hlY2tzdW0gPSBcIjBcIiArIGNoZWNrc3VtO1xuICAgICAgfVxuICAgICAgdmFyIGliYW4gPSBpYmFuRm9ybWF0LmNvdW50cnkgKyBjaGVja3N1bSArIHM7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkID8gaWJhbi5tYXRjaCgvLnsxLDR9L2cpLmpvaW4oXCIgXCIpIDogaWJhbjtcbiAgfTtcblxuICAvKipcbiAgICogYmljXG4gICAqXG4gICAqIEBtZXRob2QgIGZha2VyLmZpbmFuY2UuYmljXG4gICAqL1xuICBzZWxmLmJpYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2b3dlbHMgPSBbXCJBXCIsIFwiRVwiLCBcIklcIiwgXCJPXCIsIFwiVVwiXTtcbiAgICAgIHZhciBwcm9iID0gZmFrZXIucmFuZG9tLm51bWJlcigxMDApO1xuICAgICAgcmV0dXJuIEhlbHBlcnMucmVwbGFjZVN5bWJvbHMoXCI/Pz9cIikgK1xuICAgICAgICAgIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodm93ZWxzKSArXG4gICAgICAgICAgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChpYmFuTGliLmlzbzMxNjYpICtcbiAgICAgICAgICBIZWxwZXJzLnJlcGxhY2VTeW1ib2xzKFwiP1wiKSArIFwiMVwiICtcbiAgICAgICAgICAocHJvYiA8IDEwID9cbiAgICAgICAgICAgICAgSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIj9cIiArIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodm93ZWxzKSArIFwiP1wiKSA6XG4gICAgICAgICAgcHJvYiA8IDQwID9cbiAgICAgICAgICAgICAgSGVscGVycy5yZXBsYWNlU3ltYm9scyhcIiMjI1wiKSA6IFwiXCIpO1xuICB9O1xufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBGaW5hbmNlO1xuIiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5oYWNrZXJcbiAqL1xudmFyIEhhY2tlciA9IGZ1bmN0aW9uIChmYWtlcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIFxuICAvKipcbiAgICogYWJicmV2aWF0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLmFiYnJldmlhdGlvblxuICAgKi9cbiAgc2VsZi5hYmJyZXZpYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLmFiYnJldmlhdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGFkamVjdGl2ZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5hZGplY3RpdmVcbiAgICovXG4gIHNlbGYuYWRqZWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci5hZGplY3RpdmUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBub3VuXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGFja2VyLm5vdW5cbiAgICovXG4gIHNlbGYubm91biA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5oYWNrZXIubm91bik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHZlcmJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIudmVyYlxuICAgKi9cbiAgc2VsZi52ZXJiID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmhhY2tlci52ZXJiKTtcbiAgfTtcblxuICAvKipcbiAgICogaW5ndmVyYlxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhhY2tlci5pbmd2ZXJiXG4gICAqL1xuICBzZWxmLmluZ3ZlcmIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaGFja2VyLmluZ3ZlcmIpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwaHJhc2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oYWNrZXIucGhyYXNlXG4gICAqL1xuICBzZWxmLnBocmFzZSA9IGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgYWJicmV2aWF0aW9uOiBzZWxmLmFiYnJldmlhdGlvbixcbiAgICAgIGFkamVjdGl2ZTogc2VsZi5hZGplY3RpdmUsXG4gICAgICBpbmd2ZXJiOiBzZWxmLmluZ3ZlcmIsXG4gICAgICBub3VuOiBzZWxmLm5vdW4sXG4gICAgICB2ZXJiOiBzZWxmLnZlcmJcbiAgICB9O1xuXG4gICAgdmFyIHBocmFzZSA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoWyBcIklmIHdlIHt7dmVyYn19IHRoZSB7e25vdW59fSwgd2UgY2FuIGdldCB0byB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSB0aHJvdWdoIHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0hXCIsXG4gICAgICBcIldlIG5lZWQgdG8ge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiVHJ5IHRvIHt7dmVyYn19IHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19LCBtYXliZSBpdCB3aWxsIHt7dmVyYn19IHRoZSB7e2FkamVjdGl2ZX19IHt7bm91bn19IVwiLFxuICAgICAgXCJZb3UgY2FuJ3Qge3t2ZXJifX0gdGhlIHt7bm91bn19IHdpdGhvdXQge3tpbmd2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiVXNlIHRoZSB7e2FkamVjdGl2ZX19IHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0sIHRoZW4geW91IGNhbiB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e25vdW59fSFcIixcbiAgICAgIFwiVGhlIHt7YWJicmV2aWF0aW9ufX0ge3tub3VufX0gaXMgZG93biwge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3tub3VufX0gc28gd2UgY2FuIHt7dmVyYn19IHRoZSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19IVwiLFxuICAgICAgXCJ7e2luZ3ZlcmJ9fSB0aGUge3tub3VufX0gd29uJ3QgZG8gYW55dGhpbmcsIHdlIG5lZWQgdG8ge3t2ZXJifX0gdGhlIHt7YWRqZWN0aXZlfX0ge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIixcbiAgICAgIFwiSSdsbCB7e3ZlcmJ9fSB0aGUge3thZGplY3RpdmV9fSB7e2FiYnJldmlhdGlvbn19IHt7bm91bn19LCB0aGF0IHNob3VsZCB7e25vdW59fSB0aGUge3thYmJyZXZpYXRpb259fSB7e25vdW59fSFcIlxuICAgXSk7XG5cbiAgIHJldHVybiBmYWtlci5oZWxwZXJzLm11c3RhY2hlKHBocmFzZSwgZGF0YSk7XG5cbiAgfTtcbiAgXG4gIHJldHVybiBzZWxmO1xufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBIYWNrZXI7IiwiLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5oZWxwZXJzXG4gKi9cbnZhciBIZWxwZXJzID0gZnVuY3Rpb24gKGZha2VyKSB7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBiYWNrd29yZC1jb21wYXRpYmlsaXR5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5yYW5kb21pemVcbiAgICogQHBhcmFtIHthcnJheX0gYXJyYXlcbiAgICovXG4gIHNlbGYucmFuZG9taXplID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICBhcnJheSA9IGFycmF5IHx8IFtcImFcIiwgXCJiXCIsIFwiY1wiXTtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGFycmF5KTtcbiAgfTtcblxuICAvKipcbiAgICogc2x1Z2lmaWVzIHN0cmluZ1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuc2x1Z2lmeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gICAqL1xuICBzZWxmLnNsdWdpZnkgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvIC9nLCAnLScpLnJlcGxhY2UoL1teXFx3XFwuXFwtXSsvZywgJycpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJzZXMgc3RyaW5nIGZvciBhIHN5bWJvbCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgcmFuZG9tIG51bWJlciBmcm9tIDEtMTBcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBkZWZhdWx0cyB0byBgXCIjXCJgXG4gICAqL1xuICBzZWxmLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyID0gZnVuY3Rpb24gKHN0cmluZywgc3ltYm9sKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIC8vIGRlZmF1bHQgc3ltYm9sIGlzICcjJ1xuICAgICAgaWYgKHN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3ltYm9sID0gJyMnO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RyID0gJyc7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09IHN5bWJvbCkge1xuICAgICAgICAgICAgICBzdHIgKz0gZmFrZXIucmFuZG9tLm51bWJlcig5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHIgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBwYXJzZXMgc3RyaW5nIGZvciBzeW1ib2xzIChudW1iZXJzIG9yIGxldHRlcnMpIGFuZCByZXBsYWNlcyB0aGVtIGFwcHJvcHJpYXRlbHlcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICovXG4gIHNlbGYucmVwbGFjZVN5bWJvbHMgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgIHZhciBhbHBoYSA9IFsnQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsJ04nLCdPJywnUCcsJ1EnLCdSJywnUycsJ1QnLCdVJywnVicsJ1cnLCdYJywnWScsJ1onXVxuICAgICAgdmFyIHN0ciA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09IFwiI1wiKSB7XG4gICAgICAgICAgICAgIHN0ciArPSBmYWtlci5yYW5kb20ubnVtYmVyKDkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nLmNoYXJBdChpKSA9PSBcIj9cIikge1xuICAgICAgICAgICAgICBzdHIgKz0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChhbHBoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RyICs9IHN0cmluZy5jaGFyQXQoaSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogdGFrZXMgYW4gYXJyYXkgYW5kIHJldHVybnMgaXQgcmFuZG9taXplZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmhlbHBlcnMuc2h1ZmZsZVxuICAgKiBAcGFyYW0ge2FycmF5fSBvXG4gICAqL1xuICBzZWxmLnNodWZmbGUgPSBmdW5jdGlvbiAobykge1xuICAgICAgaWYgKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyB8fCBvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvID0gbyB8fCBbXCJhXCIsIFwiYlwiLCBcImNcIl07XG4gICAgICBmb3IgKHZhciBqLCB4LCBpID0gby5sZW5ndGgtMTsgaTsgaiA9IGZha2VyLnJhbmRvbS5udW1iZXIoaSksIHggPSBvWy0taV0sIG9baV0gPSBvW2pdLCBvW2pdID0geCk7XG4gICAgICByZXR1cm4gbztcbiAgfTtcblxuICAvKipcbiAgICogbXVzdGFjaGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLm11c3RhY2hlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGRhdGFcbiAgICovXG4gIHNlbGYubXVzdGFjaGUgPSBmdW5jdGlvbiAoc3RyLCBkYXRhKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZvcih2YXIgcCBpbiBkYXRhKSB7XG4gICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKCd7eycgKyBwICsgJ319JywgJ2cnKVxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UocmUsIGRhdGFbcF0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjcmVhdGVDYXJkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy5jcmVhdGVDYXJkXG4gICAqL1xuICBzZWxmLmNyZWF0ZUNhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5uYW1lLmZpbmROYW1lKCksXG4gICAgICAgICAgXCJ1c2VybmFtZVwiOiBmYWtlci5pbnRlcm5ldC51c2VyTmFtZSgpLFxuICAgICAgICAgIFwiZW1haWxcIjogZmFrZXIuaW50ZXJuZXQuZW1haWwoKSxcbiAgICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgICBcInN0cmVldEFcIjogZmFrZXIuYWRkcmVzcy5zdHJlZXROYW1lKCksXG4gICAgICAgICAgICAgIFwic3RyZWV0QlwiOiBmYWtlci5hZGRyZXNzLnN0cmVldEFkZHJlc3MoKSxcbiAgICAgICAgICAgICAgXCJzdHJlZXRDXCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0QWRkcmVzcyh0cnVlKSxcbiAgICAgICAgICAgICAgXCJzdHJlZXREXCI6IGZha2VyLmFkZHJlc3Muc2Vjb25kYXJ5QWRkcmVzcygpLFxuICAgICAgICAgICAgICBcImNpdHlcIjogZmFrZXIuYWRkcmVzcy5jaXR5KCksXG4gICAgICAgICAgICAgIFwic3RhdGVcIjogZmFrZXIuYWRkcmVzcy5zdGF0ZSgpLFxuICAgICAgICAgICAgICBcImNvdW50cnlcIjogZmFrZXIuYWRkcmVzcy5jb3VudHJ5KCksXG4gICAgICAgICAgICAgIFwiemlwY29kZVwiOiBmYWtlci5hZGRyZXNzLnppcENvZGUoKSxcbiAgICAgICAgICAgICAgXCJnZW9cIjoge1xuICAgICAgICAgICAgICAgICAgXCJsYXRcIjogZmFrZXIuYWRkcmVzcy5sYXRpdHVkZSgpLFxuICAgICAgICAgICAgICAgICAgXCJsbmdcIjogZmFrZXIuYWRkcmVzcy5sb25naXR1ZGUoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBob25lXCI6IGZha2VyLnBob25lLnBob25lTnVtYmVyKCksXG4gICAgICAgICAgXCJ3ZWJzaXRlXCI6IGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKSxcbiAgICAgICAgICBcImNvbXBhbnlcIjoge1xuICAgICAgICAgICAgICBcIm5hbWVcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgICAgICAgICBcImNhdGNoUGhyYXNlXCI6IGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2UoKSxcbiAgICAgICAgICAgICAgXCJic1wiOiBmYWtlci5jb21wYW55LmJzKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicG9zdHNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBcIndvcmRzXCI6IGZha2VyLmxvcmVtLndvcmRzKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlKCksXG4gICAgICAgICAgICAgICAgICBcInNlbnRlbmNlc1wiOiBmYWtlci5sb3JlbS5zZW50ZW5jZXMoKSxcbiAgICAgICAgICAgICAgICAgIFwicGFyYWdyYXBoXCI6IGZha2VyLmxvcmVtLnBhcmFncmFwaCgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFwid29yZHNcIjogZmFrZXIubG9yZW0ud29yZHMoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VcIjogZmFrZXIubG9yZW0uc2VudGVuY2UoKSxcbiAgICAgICAgICAgICAgICAgIFwic2VudGVuY2VzXCI6IGZha2VyLmxvcmVtLnNlbnRlbmNlcygpLFxuICAgICAgICAgICAgICAgICAgXCJwYXJhZ3JhcGhcIjogZmFrZXIubG9yZW0ucGFyYWdyYXBoKClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgXCJ3b3Jkc1wiOiBmYWtlci5sb3JlbS53b3JkcygpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZVwiOiBmYWtlci5sb3JlbS5zZW50ZW5jZSgpLFxuICAgICAgICAgICAgICAgICAgXCJzZW50ZW5jZXNcIjogZmFrZXIubG9yZW0uc2VudGVuY2VzKCksXG4gICAgICAgICAgICAgICAgICBcInBhcmFncmFwaFwiOiBmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImFjY291bnRIaXN0b3J5XCI6IFtmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uKCksIGZha2VyLmhlbHBlcnMuY3JlYXRlVHJhbnNhY3Rpb24oKSwgZmFrZXIuaGVscGVycy5jcmVhdGVUcmFuc2FjdGlvbigpXVxuICAgICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY29udGV4dHVhbENhcmRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLmNvbnRleHR1YWxDYXJkXG4gICAqL1xuICBzZWxmLmNvbnRleHR1YWxDYXJkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuYW1lID0gZmFrZXIubmFtZS5maXJzdE5hbWUoKSxcbiAgICAgICAgdXNlck5hbWUgPSBmYWtlci5pbnRlcm5ldC51c2VyTmFtZShuYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBcIm5hbWVcIjogbmFtZSxcbiAgICAgICAgXCJ1c2VybmFtZVwiOiB1c2VyTmFtZSxcbiAgICAgICAgXCJhdmF0YXJcIjogZmFrZXIuaW50ZXJuZXQuYXZhdGFyKCksXG4gICAgICAgIFwiZW1haWxcIjogZmFrZXIuaW50ZXJuZXQuZW1haWwodXNlck5hbWUpLFxuICAgICAgICBcImRvYlwiOiBmYWtlci5kYXRlLnBhc3QoNTAsIG5ldyBEYXRlKFwiU2F0IFNlcCAyMCAxOTkyIDIxOjM1OjAyIEdNVCswMjAwIChDRVNUKVwiKSksXG4gICAgICAgIFwicGhvbmVcIjogZmFrZXIucGhvbmUucGhvbmVOdW1iZXIoKSxcbiAgICAgICAgXCJhZGRyZXNzXCI6IHtcbiAgICAgICAgICAgIFwic3RyZWV0XCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSh0cnVlKSxcbiAgICAgICAgICAgIFwic3VpdGVcIjogZmFrZXIuYWRkcmVzcy5zZWNvbmRhcnlBZGRyZXNzKCksXG4gICAgICAgICAgICBcImNpdHlcIjogZmFrZXIuYWRkcmVzcy5jaXR5KCksXG4gICAgICAgICAgICBcInppcGNvZGVcIjogZmFrZXIuYWRkcmVzcy56aXBDb2RlKCksXG4gICAgICAgICAgICBcImdlb1wiOiB7XG4gICAgICAgICAgICAgICAgXCJsYXRcIjogZmFrZXIuYWRkcmVzcy5sYXRpdHVkZSgpLFxuICAgICAgICAgICAgICAgIFwibG5nXCI6IGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJzaXRlXCI6IGZha2VyLmludGVybmV0LmRvbWFpbk5hbWUoKSxcbiAgICAgICAgXCJjb21wYW55XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBmYWtlci5jb21wYW55LmNvbXBhbnlOYW1lKCksXG4gICAgICAgICAgICBcImNhdGNoUGhyYXNlXCI6IGZha2VyLmNvbXBhbnkuY2F0Y2hQaHJhc2UoKSxcbiAgICAgICAgICAgIFwiYnNcIjogZmFrZXIuY29tcGFueS5icygpXG4gICAgICAgIH1cbiAgICB9O1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIHVzZXJDYXJkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaGVscGVycy51c2VyQ2FyZFxuICAgKi9cbiAgc2VsZi51c2VyQ2FyZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICAgXCJuYW1lXCI6IGZha2VyLm5hbWUuZmluZE5hbWUoKSxcbiAgICAgICAgICBcInVzZXJuYW1lXCI6IGZha2VyLmludGVybmV0LnVzZXJOYW1lKCksXG4gICAgICAgICAgXCJlbWFpbFwiOiBmYWtlci5pbnRlcm5ldC5lbWFpbCgpLFxuICAgICAgICAgIFwiYWRkcmVzc1wiOiB7XG4gICAgICAgICAgICAgIFwic3RyZWV0XCI6IGZha2VyLmFkZHJlc3Muc3RyZWV0TmFtZSh0cnVlKSxcbiAgICAgICAgICAgICAgXCJzdWl0ZVwiOiBmYWtlci5hZGRyZXNzLnNlY29uZGFyeUFkZHJlc3MoKSxcbiAgICAgICAgICAgICAgXCJjaXR5XCI6IGZha2VyLmFkZHJlc3MuY2l0eSgpLFxuICAgICAgICAgICAgICBcInppcGNvZGVcIjogZmFrZXIuYWRkcmVzcy56aXBDb2RlKCksXG4gICAgICAgICAgICAgIFwiZ2VvXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibGF0XCI6IGZha2VyLmFkZHJlc3MubGF0aXR1ZGUoKSxcbiAgICAgICAgICAgICAgICAgIFwibG5nXCI6IGZha2VyLmFkZHJlc3MubG9uZ2l0dWRlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwaG9uZVwiOiBmYWtlci5waG9uZS5waG9uZU51bWJlcigpLFxuICAgICAgICAgIFwid2Vic2l0ZVwiOiBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCksXG4gICAgICAgICAgXCJjb21wYW55XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IGZha2VyLmNvbXBhbnkuY29tcGFueU5hbWUoKSxcbiAgICAgICAgICAgICAgXCJjYXRjaFBocmFzZVwiOiBmYWtlci5jb21wYW55LmNhdGNoUGhyYXNlKCksXG4gICAgICAgICAgICAgIFwiYnNcIjogZmFrZXIuY29tcGFueS5icygpXG4gICAgICAgICAgfVxuICAgICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY3JlYXRlVHJhbnNhY3Rpb25cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5oZWxwZXJzLmNyZWF0ZVRyYW5zYWN0aW9uXG4gICAqL1xuICBzZWxmLmNyZWF0ZVRyYW5zYWN0aW9uID0gZnVuY3Rpb24oKXtcbiAgICByZXR1cm4ge1xuICAgICAgXCJhbW91bnRcIiA6IGZha2VyLmZpbmFuY2UuYW1vdW50KCksXG4gICAgICBcImRhdGVcIiA6IG5ldyBEYXRlKDIwMTIsIDEsIDIpLCAgLy9UT0RPOiBhZGQgYSByYW5nZWQgZGF0ZSBtZXRob2RcbiAgICAgIFwiYnVzaW5lc3NcIjogZmFrZXIuY29tcGFueS5jb21wYW55TmFtZSgpLFxuICAgICAgXCJuYW1lXCI6IFtmYWtlci5maW5hbmNlLmFjY291bnROYW1lKCksIGZha2VyLmZpbmFuY2UubWFzaygpXS5qb2luKCcgJyksXG4gICAgICBcInR5cGVcIiA6IHNlbGYucmFuZG9taXplKGZha2VyLmRlZmluaXRpb25zLmZpbmFuY2UudHJhbnNhY3Rpb25fdHlwZSksXG4gICAgICBcImFjY291bnRcIiA6IGZha2VyLmZpbmFuY2UuYWNjb3VudCgpXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcblxufTtcblxuXG4vKlxuU3RyaW5nLnByb3RvdHlwZS5jYXBpdGFsaXplID0gZnVuY3Rpb24gKCkgeyAvL3YxLjBcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9cXHcrL2csIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHJldHVybiBhLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgYS5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcbn07XG4qL1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEhlbHBlcnM7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBhbHBoYTogW1xuICAgICdBJywnQicsJ0MnLCdEJywnRScsJ0YnLCdHJywnSCcsJ0knLCdKJywnSycsJ0wnLCdNJywnTicsJ08nLCdQJywnUScsJ1InLCdTJywnVCcsJ1UnLCdWJywnVycsJ1gnLCdZJywnWidcbiAgXSxcbiAgcGF0dGVybjEwOiBbXG4gICAgXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgXCIwNFwiLCBcIjA1XCIsIFwiMDZcIiwgXCIwN1wiLCBcIjA4XCIsIFwiMDlcIlxuICBdLFxuICBwYXR0ZXJuMTAwOiBbXG4gICAgXCIwMDFcIiwgXCIwMDJcIiwgXCIwMDNcIiwgXCIwMDRcIiwgXCIwMDVcIiwgXCIwMDZcIiwgXCIwMDdcIiwgXCIwMDhcIiwgXCIwMDlcIlxuICBdLFxuICB0b0RpZ2l0U3RyaW5nOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tBLVpdL2dpLCBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgICAgIHJldHVybiBtYXRjaC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCkgLSA1NTtcbiAgICAgIH0pO1xuICB9LFxuICBtb2Q5NzogZnVuY3Rpb24gKGRpZ2l0U3RyKSB7XG4gICAgICB2YXIgbSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0U3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbSA9ICgobSAqIDEwKSArIChkaWdpdFN0cltpXSB8MCkpICUgOTc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbTtcbiAgfSxcbiAgZm9ybWF0czogW1xuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQUxcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBTGtrIGJiYnMgc3NzeCBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQURcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBRGtrIGJiYmIgc3NzcyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFUXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQVRrayBiYmJiIGJjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQVpcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMjBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJBWmtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQkhcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTRcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCSGtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCRVwiLFxuICAgICAgdG90YWw6IDE2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA5XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkVrayBiYmJjIGNjY2MgY2N4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkJBXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQkFrayBiYmJzIHNzY2MgY2NjYyBjY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQlJcIixcbiAgICAgIHRvdGFsOiAyOSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogMVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJCUmtrIGJiYmIgYmJiYiBzc3NzIHNjY2MgY2NjYyBjY2N0IG5cIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJCR1wiLFxuICAgICAgdG90YWw6IDIyLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA2XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkJHa2sgYmJiYiBzc3NzIGRkY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkNSXCIsXG4gICAgICB0b3RhbDogMjEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE0XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ1JrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJIUlwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkhSa2sgYmJiYiBiYmJjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ1lcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDWWtrIGJiYnMgc3NzcyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ1pcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQ1prayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJES1wiLFxuICAgICAgdG90YWw6IDE4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkRLa2sgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJET1wiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkRPa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJUTFwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlRMa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjeHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJFRVwiLFxuICAgICAgdG90YWw6IDIwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkVFa2sgYmJzcyBjY2NjIGNjY2MgY2NjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkZPXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRk9rayBiYmJiIGNjY2MgY2NjYyBjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkZJXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJGSWtrIGJiYmIgYmJjYyBjY2NjIGN4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRlJcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkZSa2sgYmJiYiBiZ2dnIGdnY2MgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdFXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0VrayBiYmNjIGNjY2MgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiREVcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJERWtrIGJiYmIgYmJiYiBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHSVwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdJa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJHUlwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdSa2sgYmJicyBzc3NjIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdMXCIsXG4gICAgICB0b3RhbDogMTgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0xrayBiYmJiIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdUXCIsXG4gICAgICB0b3RhbDogMjgsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkdUa2sgYmJiYiBtbXR0IGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJIVVwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkhVa2sgYmJicyBzc3NrIGNjY2MgY2NjYyBjY2NjIGNjY3hcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJU1wiLFxuICAgICAgdG90YWw6IDI2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklTa2sgYmJiYiBzc2NjIGNjY2MgaWlpaSBpaWlpIGlpXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSUVcIixcbiAgICAgIHRvdGFsOiAyMixcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJJRWtrIGFhYWEgYmJiYiBiYmNjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJTFwiLFxuICAgICAgdG90YWw6IDIzLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIklMa2sgYmJibiBubmNjIGNjY2MgY2NjYyBjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJJVFwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSVRrayB4YWFhIGFhYmIgYmJiYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiSk9cIixcbiAgICAgIHRvdGFsOiAzMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiSk9rayBiYmJiIG5ubm4gY2NjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIktaXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiS1prayBiYmJjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiWEtcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJYS2trIGJiYmIgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJLV1wiLFxuICAgICAgdG90YWw6IDMwLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyMlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIktXa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2MgY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJMVlwiLFxuICAgICAgdG90YWw6IDIxLFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIkxWa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTEJcIixcbiAgICAgIHRvdGFsOiAyOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMjBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMQmtrIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTElcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMSWtrIGJiYmIgYmNjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkxUXCIsXG4gICAgICB0b3RhbDogMjAsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDExXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTFRrayBiYmJiIGJjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTFVcIixcbiAgICAgIHRvdGFsOiAyMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTNcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJMVWtrIGJiYmMgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNS1wiLFxuICAgICAgdG90YWw6IDE5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNS2trIGJiYmMgY2NjYyBjY2NjIGN4eFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1UXCIsXG4gICAgICB0b3RhbDogMzEsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxOFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Ua2sgYmJiYiBzc3NzIHNjY2MgY2NjYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTVJcIixcbiAgICAgIHRvdGFsOiAyNyxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEzXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTVJrayBiYmJiIGJzc3Mgc3NjYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTVVcIixcbiAgICAgIHRvdGFsOiAzMCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk1Va2sgYmJiYiBiYnNzIGNjY2MgY2NjYyBjY2NjIDAwMGQgZGRcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJNQ1wiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTUNrayBiYmJiIGJzc3Mgc3NjYyBjY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTURcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJNRGtrIGJiY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIk1FXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiTUVrayBiYmJjIGNjY2MgY2NjYyBjY2NjIHh4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTkxcIixcbiAgICAgIHRvdGFsOiAxOCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiYVwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJOTGtrIGJiYmIgY2NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiTk9cIixcbiAgICAgIHRvdGFsOiAxNSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogN1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIk5Pa2sgYmJiYiBjY2NjIGNjeFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlBLXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUEtrayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQU1wiLFxuICAgICAgdG90YWw6IDI5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA5XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJQU2trIGJiYmIgeHh4eCB4eHh4IHhjY2MgY2NjYyBjY2NjIGNcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQTFwiLFxuICAgICAgdG90YWw6IDI4LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxNlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBMa2sgYmJicyBzc3N4IGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJQVFwiLFxuICAgICAgdG90YWw6IDI1LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxM1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlBUa2sgYmJiYiBzc3NzIGNjY2MgY2NjYyBjY2N4IHhcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJRQVwiLFxuICAgICAgdG90YWw6IDI5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAyMVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlFBa2sgYmJiYiBjY2NjIGNjY2MgY2NjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlJPXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUk9rayBiYmJiIGNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTTVwiLFxuICAgICAgdG90YWw6IDI3LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJhXCIsXG4gICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJjXCIsXG4gICAgICAgICAgY291bnQ6IDEyXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU01rayB4YWFhIGFhYmIgYmJiYyBjY2NjIGNjY2MgY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0FcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMThcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJTQWtrIGJiY2MgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlJTXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiUlNrayBiYmJjIGNjY2MgY2NjYyBjY2NjIHh4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiU0tcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiU0trayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTSVwiLFxuICAgICAgdG90YWw6IDE5LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNJa2sgYmJzcyBzY2NjIGNjY2MgY3h4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiRVNcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxMFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDEwXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiRVNrayBiYmJiIGdnZ2cgeHhjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJTRVwiLFxuICAgICAgdG90YWw6IDI0LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiAxN1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybWF0OiBcIlNFa2sgYmJiYyBjY2NjIGNjY2MgY2NjYyBjY2NjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiQ0hcIixcbiAgICAgIHRvdGFsOiAyMSxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJDSGtrIGJiYmIgYmNjYyBjY2NjIGNjY2MgY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIlROXCIsXG4gICAgICB0b3RhbDogMjQsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE1XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiVE5rayBiYnNzIHNjY2MgY2NjYyBjY2NjIGNjY2NcIlxuICAgIH0sXG4gICAge1xuICAgICAgY291bnRyeTogXCJUUlwiLFxuICAgICAgdG90YWw6IDI2LFxuICAgICAgYmJhbjogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNcIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJUUmtrIGJiYmIgYnhjYyBjY2NjIGNjY2MgY2NjYyBjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkFFXCIsXG4gICAgICB0b3RhbDogMjMsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogM1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDE2XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiQUVrayBiYmJjIGNjY2MgY2NjYyBjY2NjIGNjY1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBjb3VudHJ5OiBcIkdCXCIsXG4gICAgICB0b3RhbDogMjIsXG4gICAgICBiYmFuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImFcIixcbiAgICAgICAgICBjb3VudDogNFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJuXCIsXG4gICAgICAgICAgY291bnQ6IDZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiblwiLFxuICAgICAgICAgIGNvdW50OiA4XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBmb3JtYXQ6IFwiR0JrayBiYmJiIHNzc3Mgc3NjYyBjY2NjIGNjXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvdW50cnk6IFwiVkdcIixcbiAgICAgIHRvdGFsOiAyNCxcbiAgICAgIGJiYW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY1wiLFxuICAgICAgICAgIGNvdW50OiA0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm5cIixcbiAgICAgICAgICBjb3VudDogMTZcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZvcm1hdDogXCJWR2trIGJiYmIgY2NjYyBjY2NjIGNjY2MgY2NjY1wiXG4gICAgfVxuICBdLFxuICBpc28zMTY2OiBbXG4gICAgXCJBQ1wiLCBcIkFEXCIsIFwiQUVcIiwgXCJBRlwiLCBcIkFHXCIsIFwiQUlcIiwgXCJBTFwiLCBcIkFNXCIsIFwiQU5cIiwgXCJBT1wiLCBcIkFRXCIsIFwiQVJcIiwgXCJBU1wiLFxuICAgIFwiQVRcIiwgXCJBVVwiLCBcIkFXXCIsIFwiQVhcIiwgXCJBWlwiLCBcIkJBXCIsIFwiQkJcIiwgXCJCRFwiLCBcIkJFXCIsIFwiQkZcIiwgXCJCR1wiLCBcIkJIXCIsIFwiQklcIixcbiAgICBcIkJKXCIsIFwiQkxcIiwgXCJCTVwiLCBcIkJOXCIsIFwiQk9cIiwgXCJCUVwiLCBcIkJSXCIsIFwiQlNcIiwgXCJCVFwiLCBcIkJVXCIsIFwiQlZcIiwgXCJCV1wiLCBcIkJZXCIsXG4gICAgXCJCWlwiLCBcIkNBXCIsIFwiQ0NcIiwgXCJDRFwiLCBcIkNFXCIsIFwiQ0ZcIiwgXCJDR1wiLCBcIkNIXCIsIFwiQ0lcIiwgXCJDS1wiLCBcIkNMXCIsIFwiQ01cIiwgXCJDTlwiLFxuICAgIFwiQ09cIiwgXCJDUFwiLCBcIkNSXCIsIFwiQ1NcIiwgXCJDU1wiLCBcIkNVXCIsIFwiQ1ZcIiwgXCJDV1wiLCBcIkNYXCIsIFwiQ1lcIiwgXCJDWlwiLCBcIkREXCIsIFwiREVcIixcbiAgICBcIkRHXCIsIFwiREpcIiwgXCJES1wiLCBcIkRNXCIsIFwiRE9cIiwgXCJEWlwiLCBcIkVBXCIsIFwiRUNcIiwgXCJFRVwiLCBcIkVHXCIsIFwiRUhcIiwgXCJFUlwiLCBcIkVTXCIsXG4gICAgXCJFVFwiLCBcIkVVXCIsIFwiRklcIiwgXCJGSlwiLCBcIkZLXCIsIFwiRk1cIiwgXCJGT1wiLCBcIkZSXCIsIFwiRlhcIiwgXCJHQVwiLCBcIkdCXCIsIFwiR0RcIiwgXCJHRVwiLFxuICAgIFwiR0ZcIiwgXCJHR1wiLCBcIkdIXCIsIFwiR0lcIiwgXCJHTFwiLCBcIkdNXCIsIFwiR05cIiwgXCJHUFwiLCBcIkdRXCIsIFwiR1JcIiwgXCJHU1wiLCBcIkdUXCIsIFwiR1VcIixcbiAgICBcIkdXXCIsIFwiR1lcIiwgXCJIS1wiLCBcIkhNXCIsIFwiSE5cIiwgXCJIUlwiLCBcIkhUXCIsIFwiSFVcIiwgXCJJQ1wiLCBcIklEXCIsIFwiSUVcIiwgXCJJTFwiLCBcIklNXCIsXG4gICAgXCJJTlwiLCBcIklPXCIsIFwiSVFcIiwgXCJJUlwiLCBcIklTXCIsIFwiSVRcIiwgXCJKRVwiLCBcIkpNXCIsIFwiSk9cIiwgXCJKUFwiLCBcIktFXCIsIFwiS0dcIiwgXCJLSFwiLFxuICAgIFwiS0lcIiwgXCJLTVwiLCBcIktOXCIsIFwiS1BcIiwgXCJLUlwiLCBcIktXXCIsIFwiS1lcIiwgXCJLWlwiLCBcIkxBXCIsIFwiTEJcIiwgXCJMQ1wiLCBcIkxJXCIsIFwiTEtcIixcbiAgICBcIkxSXCIsIFwiTFNcIiwgXCJMVFwiLCBcIkxVXCIsIFwiTFZcIiwgXCJMWVwiLCBcIk1BXCIsIFwiTUNcIiwgXCJNRFwiLCBcIk1FXCIsIFwiTUZcIiwgXCJNR1wiLCBcIk1IXCIsXG4gICAgXCJNS1wiLCBcIk1MXCIsIFwiTU1cIiwgXCJNTlwiLCBcIk1PXCIsIFwiTVBcIiwgXCJNUVwiLCBcIk1SXCIsIFwiTVNcIiwgXCJNVFwiLCBcIk1VXCIsIFwiTVZcIiwgXCJNV1wiLFxuICAgIFwiTVhcIiwgXCJNWVwiLCBcIk1aXCIsIFwiTkFcIiwgXCJOQ1wiLCBcIk5FXCIsIFwiTkZcIiwgXCJOR1wiLCBcIk5JXCIsIFwiTkxcIiwgXCJOT1wiLCBcIk5QXCIsIFwiTlJcIixcbiAgICBcIk5UXCIsIFwiTlVcIiwgXCJOWlwiLCBcIk9NXCIsIFwiUEFcIiwgXCJQRVwiLCBcIlBGXCIsIFwiUEdcIiwgXCJQSFwiLCBcIlBLXCIsIFwiUExcIiwgXCJQTVwiLCBcIlBOXCIsXG4gICAgXCJQUlwiLCBcIlBTXCIsIFwiUFRcIiwgXCJQV1wiLCBcIlBZXCIsIFwiUUFcIiwgXCJSRVwiLCBcIlJPXCIsIFwiUlNcIiwgXCJSVVwiLCBcIlJXXCIsIFwiU0FcIiwgXCJTQlwiLFxuICAgIFwiU0NcIiwgXCJTRFwiLCBcIlNFXCIsIFwiU0dcIiwgXCJTSFwiLCBcIlNJXCIsIFwiU0pcIiwgXCJTS1wiLCBcIlNMXCIsIFwiU01cIiwgXCJTTlwiLCBcIlNPXCIsIFwiU1JcIixcbiAgICBcIlNTXCIsIFwiU1RcIiwgXCJTVVwiLCBcIlNWXCIsIFwiU1hcIiwgXCJTWVwiLCBcIlNaXCIsIFwiVEFcIiwgXCJUQ1wiLCBcIlREXCIsIFwiVEZcIiwgXCJUR1wiLCBcIlRIXCIsXG4gICAgXCJUSlwiLCBcIlRLXCIsIFwiVExcIiwgXCJUTVwiLCBcIlROXCIsIFwiVE9cIiwgXCJUUlwiLCBcIlRUXCIsIFwiVFZcIiwgXCJUV1wiLCBcIlRaXCIsIFwiVUFcIiwgXCJVR1wiLFxuICAgIFwiVU1cIiwgXCJVU1wiLCBcIlVZXCIsIFwiVVpcIiwgXCJWQVwiLCBcIlZDXCIsIFwiVkVcIiwgXCJWR1wiLCBcIlZJXCIsIFwiVk5cIiwgXCJWVVwiLCBcIldGXCIsIFwiV1NcIixcbiAgICBcIllFXCIsIFwiWVRcIiwgXCJZVVwiLCBcIlpBXCIsIFwiWk1cIiwgXCJaUlwiLCBcIlpXXCJcbiAgXVxufSIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaW1hZ2VcbiAqL1xudmFyIEltYWdlID0gZnVuY3Rpb24gKGZha2VyKSB7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8qKlxuICAgKiBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmltYWdlXG4gICAqL1xuICBzZWxmLmltYWdlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHZhciBjYXRlZ29yaWVzID0gW1wiYWJzdHJhY3RcIiwgXCJhbmltYWxzXCIsIFwiYnVzaW5lc3NcIiwgXCJjYXRzXCIsIFwiY2l0eVwiLCBcImZvb2RcIiwgXCJuaWdodGxpZmVcIiwgXCJmYXNoaW9uXCIsIFwicGVvcGxlXCIsIFwibmF0dXJlXCIsIFwic3BvcnRzXCIsIFwidGVjaG5pY3NcIiwgXCJ0cmFuc3BvcnRcIl07XG4gICAgcmV0dXJuIHNlbGZbZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChjYXRlZ29yaWVzKV0od2lkdGgsIGhlaWdodCwgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGF2YXRhclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmF2YXRhclxuICAgKi9cbiAgc2VsZi5hdmF0YXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLmludGVybmV0LmF2YXRhcigpO1xuICB9O1xuICAvKipcbiAgICogaW1hZ2VVcmxcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhdGVnb3J5XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UuaW1hZ2VVcmxcbiAgICovXG4gIHNlbGYuaW1hZ2VVcmwgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgY2F0ZWdvcnksIHJhbmRvbWl6ZSwgaHR0cHMpIHtcbiAgICAgIHZhciB3aWR0aCA9IHdpZHRoIHx8IDY0MDtcbiAgICAgIHZhciBoZWlnaHQgPSBoZWlnaHQgfHwgNDgwO1xuICAgICAgdmFyIHByb3RvY29sID0gJ2h0dHA6Ly8nO1xuICAgICAgaWYgKHR5cGVvZiBodHRwcyAhPT0gJ3VuZGVmaW5lZCcgJiYgaHR0cHMgPT09IHRydWUpIHtcbiAgICAgICAgcHJvdG9jb2wgPSAnaHR0cHM6Ly8nO1xuICAgICAgfVxuICAgICAgdmFyIHVybCA9IHByb3RvY29sICsgJ2xvcmVtcGl4ZWwuY29tLycgKyB3aWR0aCArICcvJyArIGhlaWdodDtcbiAgICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHVybCArPSAnLycgKyBjYXRlZ29yeTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmRvbWl6ZSkge1xuICAgICAgICB1cmwgKz0gJz8nICsgZmFrZXIucmFuZG9tLm51bWJlcigpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1cmw7XG4gIH07XG4gIC8qKlxuICAgKiBhYnN0cmFjdFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmFic3RyYWN0XG4gICAqL1xuICBzZWxmLmFic3RyYWN0ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnYWJzdHJhY3QnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogYW5pbWFsc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmFuaW1hbHNcbiAgICovXG4gIHNlbGYuYW5pbWFscyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2FuaW1hbHMnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogYnVzaW5lc3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5idXNpbmVzc1xuICAgKi9cbiAgc2VsZi5idXNpbmVzcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2J1c2luZXNzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGNhdHNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5jYXRzXG4gICAqL1xuICBzZWxmLmNhdHMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdjYXRzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGNpdHlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5jaXR5XG4gICAqL1xuICBzZWxmLmNpdHkgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdjaXR5JywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIGZvb2RcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5mb29kXG4gICAqL1xuICBzZWxmLmZvb2QgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdmb29kJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIG5pZ2h0bGlmZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLm5pZ2h0bGlmZVxuICAgKi9cbiAgc2VsZi5uaWdodGxpZmUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICduaWdodGxpZmUnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogZmFzaGlvblxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmZhc2hpb25cbiAgICovXG4gIHNlbGYuZmFzaGlvbiA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ2Zhc2hpb24nLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogcGVvcGxlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmFuZG9taXplXG4gICAqIEBtZXRob2QgZmFrZXIuaW1hZ2UucGVvcGxlXG4gICAqL1xuICBzZWxmLnBlb3BsZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3Blb3BsZScsIHJhbmRvbWl6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBuYXR1cmVcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS5uYXR1cmVcbiAgICovXG4gIHNlbGYubmF0dXJlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHJhbmRvbWl6ZSkge1xuICAgIHJldHVybiBmYWtlci5pbWFnZS5pbWFnZVVybCh3aWR0aCwgaGVpZ2h0LCAnbmF0dXJlJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHNwb3J0c1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnNwb3J0c1xuICAgKi9cbiAgc2VsZi5zcG9ydHMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICdzcG9ydHMnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogdGVjaG5pY3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSByYW5kb21pemVcbiAgICogQG1ldGhvZCBmYWtlci5pbWFnZS50ZWNobmljc1xuICAgKi9cbiAgc2VsZi50ZWNobmljcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCByYW5kb21pemUpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2VVcmwod2lkdGgsIGhlaWdodCwgJ3RlY2huaWNzJywgcmFuZG9taXplKTtcbiAgfTtcbiAgLyoqXG4gICAqIHRyYW5zcG9ydFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhbmRvbWl6ZVxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLnRyYW5zcG9ydFxuICAgKi9cbiAgc2VsZi50cmFuc3BvcnQgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgcmFuZG9taXplKSB7XG4gICAgcmV0dXJuIGZha2VyLmltYWdlLmltYWdlVXJsKHdpZHRoLCBoZWlnaHQsICd0cmFuc3BvcnQnLCByYW5kb21pemUpO1xuICB9O1xuICAvKipcbiAgICogZGF0YVVyaVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodFxuICAgKiBAbWV0aG9kIGZha2VyLmltYWdlLmRhdGF1cmxcbiAgICovXG4gIHNlbGYuZGF0YVVyaSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIHJhd1ByZWZpeCA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwnO1xuICAgIHZhciBzdmdTdHJpbmcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmVyc2lvbj1cIjEuMVwiIGJhc2VQcm9maWxlPVwiZnVsbFwiIHdpZHRoPVwiJyArIHdpZHRoICsgJ1wiIGhlaWdodD1cIicgKyBoZWlnaHQgKyAnXCI+IDxyZWN0IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBmaWxsPVwiZ3JleVwiLz4gIDx0ZXh0IHg9XCIwXCIgeT1cIjIwXCIgZm9udC1zaXplPVwiMjBcIiB0ZXh0LWFuY2hvcj1cInN0YXJ0XCIgZmlsbD1cIndoaXRlXCI+JyArIHdpZHRoICsgJ3gnICsgaGVpZ2h0ICsgJzwvdGV4dD4gPC9zdmc+JztcbiAgICByZXR1cm4gcmF3UHJlZml4ICsgZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cmluZyk7XG4gIH07XG59XG5cbm1vZHVsZVtcImV4cG9ydHNcIl0gPSBJbWFnZTsiLCIvKlxuXG4gICB0aGlzIGluZGV4LmpzIGZpbGUgaXMgdXNlZCBmb3IgaW5jbHVkaW5nIHRoZSBmYWtlciBsaWJyYXJ5IGFzIGEgQ29tbW9uSlMgbW9kdWxlLCBpbnN0ZWFkIG9mIGEgYnVuZGxlXG5cbiAgIHlvdSBjYW4gaW5jbHVkZSB0aGUgZmFrZXIgbGlicmFyeSBpbnRvIHlvdXIgZXhpc3Rpbmcgbm9kZS5qcyBhcHBsaWNhdGlvbiBieSByZXF1aXJpbmcgdGhlIGVudGlyZSAvZmFrZXIgZGlyZWN0b3J5XG5cbiAgICB2YXIgZmFrZXIgPSByZXF1aXJlKC4vZmFrZXIpO1xuICAgIHZhciByYW5kb21OYW1lID0gZmFrZXIubmFtZS5maW5kTmFtZSgpO1xuXG4gICB5b3UgY2FuIGFsc28gc2ltcGx5IGluY2x1ZGUgdGhlIFwiZmFrZXIuanNcIiBmaWxlIHdoaWNoIGlzIHRoZSBhdXRvLWdlbmVyYXRlZCBidW5kbGVkIHZlcnNpb24gb2YgdGhlIGZha2VyIGxpYnJhcnlcblxuICAgIHZhciBmYWtlciA9IHJlcXVpcmUoLi9jdXN0b21BcHBQYXRoL2Zha2VyKTtcbiAgICB2YXIgcmFuZG9tTmFtZSA9IGZha2VyLm5hbWUuZmluZE5hbWUoKTtcblxuXG4gIGlmIHlvdSBwbGFuIG9uIG1vZGlmeWluZyB0aGUgZmFrZXIgbGlicmFyeSB5b3Ugc2hvdWxkIGJlIHBlcmZvcm1pbmcgeW91ciBjaGFuZ2VzIGluIHRoZSAvbGliLyBkaXJlY3RvcnlcblxuKi9cblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlclxuICovXG5mdW5jdGlvbiBGYWtlciAob3B0cykge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICBvcHRzID0gb3B0cyB8fCB7fTtcblxuICAvLyBhc3NpZ24gb3B0aW9uc1xuICB2YXIgbG9jYWxlcyA9IHNlbGYubG9jYWxlcyB8fCBvcHRzLmxvY2FsZXMgfHwge307XG4gIHZhciBsb2NhbGUgPSBzZWxmLmxvY2FsZSB8fCBvcHRzLmxvY2FsZSB8fCBcImVuXCI7XG4gIHZhciBsb2NhbGVGYWxsYmFjayA9IHNlbGYubG9jYWxlRmFsbGJhY2sgfHwgb3B0cy5sb2NhbGVGYWxsYmFjayB8fCBcImVuXCI7XG5cbiAgc2VsZi5sb2NhbGVzID0gbG9jYWxlcztcbiAgc2VsZi5sb2NhbGUgPSBsb2NhbGU7XG4gIHNlbGYubG9jYWxlRmFsbGJhY2sgPSBsb2NhbGVGYWxsYmFjaztcblxuICBzZWxmLmRlZmluaXRpb25zID0ge307XG5cbiAgZnVuY3Rpb24gYmluZEFsbChvYmopIHtcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihtZXRoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBvYmpbbWV0aF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgb2JqW21ldGhdID0gb2JqW21ldGhdLmJpbmQob2JqKTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgRmFrZSA9IHJlcXVpcmUoJy4vZmFrZScpO1xuICBzZWxmLmZha2UgPSBuZXcgRmFrZShzZWxmKS5mYWtlO1xuXG4gIHZhciBSYW5kb20gPSByZXF1aXJlKCcuL3JhbmRvbScpO1xuICBzZWxmLnJhbmRvbSA9IGJpbmRBbGwobmV3IFJhbmRvbShzZWxmKSk7XG5cbiAgdmFyIEhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcbiAgc2VsZi5oZWxwZXJzID0gbmV3IEhlbHBlcnMoc2VsZik7XG5cbiAgdmFyIE5hbWUgPSByZXF1aXJlKCcuL25hbWUnKTtcbiAgc2VsZi5uYW1lID0gYmluZEFsbChuZXcgTmFtZShzZWxmKSk7XG5cbiAgdmFyIEFkZHJlc3MgPSByZXF1aXJlKCcuL2FkZHJlc3MnKTtcbiAgc2VsZi5hZGRyZXNzID0gYmluZEFsbChuZXcgQWRkcmVzcyhzZWxmKSk7XG5cbiAgdmFyIENvbXBhbnkgPSByZXF1aXJlKCcuL2NvbXBhbnknKTtcbiAgc2VsZi5jb21wYW55ID0gYmluZEFsbChuZXcgQ29tcGFueShzZWxmKSk7XG5cbiAgdmFyIEZpbmFuY2UgPSByZXF1aXJlKCcuL2ZpbmFuY2UnKTtcbiAgc2VsZi5maW5hbmNlID0gYmluZEFsbChuZXcgRmluYW5jZShzZWxmKSk7XG5cbiAgdmFyIEltYWdlID0gcmVxdWlyZSgnLi9pbWFnZScpO1xuICBzZWxmLmltYWdlID0gYmluZEFsbChuZXcgSW1hZ2Uoc2VsZikpO1xuXG4gIHZhciBMb3JlbSA9IHJlcXVpcmUoJy4vbG9yZW0nKTtcbiAgc2VsZi5sb3JlbSA9IGJpbmRBbGwobmV3IExvcmVtKHNlbGYpKTtcblxuICB2YXIgSGFja2VyID0gcmVxdWlyZSgnLi9oYWNrZXInKTtcbiAgc2VsZi5oYWNrZXIgPSBiaW5kQWxsKG5ldyBIYWNrZXIoc2VsZikpO1xuXG4gIHZhciBJbnRlcm5ldCA9IHJlcXVpcmUoJy4vaW50ZXJuZXQnKTtcbiAgc2VsZi5pbnRlcm5ldCA9IGJpbmRBbGwobmV3IEludGVybmV0KHNlbGYpKTtcblxuICB2YXIgRGF0YWJhc2UgPSByZXF1aXJlKCcuL2RhdGFiYXNlJyk7XG4gIHNlbGYuZGF0YWJhc2UgPSBiaW5kQWxsKG5ldyBEYXRhYmFzZShzZWxmKSk7XG5cbiAgdmFyIFBob25lID0gcmVxdWlyZSgnLi9waG9uZV9udW1iZXInKTtcbiAgc2VsZi5waG9uZSA9IGJpbmRBbGwobmV3IFBob25lKHNlbGYpKTtcblxuICB2YXIgX0RhdGUgPSByZXF1aXJlKCcuL2RhdGUnKTtcbiAgc2VsZi5kYXRlID0gYmluZEFsbChuZXcgX0RhdGUoc2VsZikpO1xuXG4gIHZhciBDb21tZXJjZSA9IHJlcXVpcmUoJy4vY29tbWVyY2UnKTtcbiAgc2VsZi5jb21tZXJjZSA9IGJpbmRBbGwobmV3IENvbW1lcmNlKHNlbGYpKTtcblxuICB2YXIgU3lzdGVtID0gcmVxdWlyZSgnLi9zeXN0ZW0nKTtcbiAgc2VsZi5zeXN0ZW0gPSBiaW5kQWxsKG5ldyBTeXN0ZW0oc2VsZikpO1xuXG4gIHZhciBfZGVmaW5pdGlvbnMgPSB7XG4gICAgXCJuYW1lXCI6IFtcImZpcnN0X25hbWVcIiwgXCJsYXN0X25hbWVcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJ0aXRsZVwiLCBcIm1hbGVfZmlyc3RfbmFtZVwiLCBcImZlbWFsZV9maXJzdF9uYW1lXCIsIFwibWFsZV9taWRkbGVfbmFtZVwiLCBcImZlbWFsZV9taWRkbGVfbmFtZVwiLCBcIm1hbGVfbGFzdF9uYW1lXCIsIFwiZmVtYWxlX2xhc3RfbmFtZVwiXSxcbiAgICBcImFkZHJlc3NcIjogW1wiY2l0eV9wcmVmaXhcIiwgXCJjaXR5X3N1ZmZpeFwiLCBcInN0cmVldF9zdWZmaXhcIiwgXCJjb3VudHlcIiwgXCJjb3VudHJ5XCIsIFwiY291bnRyeV9jb2RlXCIsIFwic3RhdGVcIiwgXCJzdGF0ZV9hYmJyXCIsIFwic3RyZWV0X3ByZWZpeFwiLCBcInBvc3Rjb2RlXCJdLFxuICAgIFwiY29tcGFueVwiOiBbXCJhZGplY3RpdmVcIiwgXCJub3VuXCIsIFwiZGVzY3JpcHRvclwiLCBcImJzX2FkamVjdGl2ZVwiLCBcImJzX25vdW5cIiwgXCJic192ZXJiXCIsIFwic3VmZml4XCJdLFxuICAgIFwibG9yZW1cIjogW1wid29yZHNcIl0sXG4gICAgXCJoYWNrZXJcIjogW1wiYWJicmV2aWF0aW9uXCIsIFwiYWRqZWN0aXZlXCIsIFwibm91blwiLCBcInZlcmJcIiwgXCJpbmd2ZXJiXCJdLFxuICAgIFwicGhvbmVfbnVtYmVyXCI6IFtcImZvcm1hdHNcIl0sXG4gICAgXCJmaW5hbmNlXCI6IFtcImFjY291bnRfdHlwZVwiLCBcInRyYW5zYWN0aW9uX3R5cGVcIiwgXCJjdXJyZW5jeVwiLCBcImliYW5cIl0sXG4gICAgXCJpbnRlcm5ldFwiOiBbXCJhdmF0YXJfdXJpXCIsIFwiZG9tYWluX3N1ZmZpeFwiLCBcImZyZWVfZW1haWxcIiwgXCJleGFtcGxlX2VtYWlsXCIsIFwicGFzc3dvcmRcIl0sXG4gICAgXCJjb21tZXJjZVwiOiBbXCJjb2xvclwiLCBcImRlcGFydG1lbnRcIiwgXCJwcm9kdWN0X25hbWVcIiwgXCJwcmljZVwiLCBcImNhdGVnb3JpZXNcIl0sXG4gICAgXCJkYXRhYmFzZVwiOiBbXCJjb2xsYXRpb25cIiwgXCJjb2x1bW5cIiwgXCJlbmdpbmVcIiwgXCJ0eXBlXCJdLFxuICAgIFwic3lzdGVtXCI6IFtcIm1pbWVUeXBlc1wiXSxcbiAgICBcImRhdGVcIjogW1wibW9udGhcIiwgXCJ3ZWVrZGF5XCJdLFxuICAgIFwidGl0bGVcIjogXCJcIixcbiAgICBcInNlcGFyYXRvclwiOiBcIlwiXG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgR2V0dGVyIGZvciBhbGwgZGVmaW5pdGlvbnMuZm9vLmJhciBwcm9wZXJ0aWVzXG4gIE9iamVjdC5rZXlzKF9kZWZpbml0aW9ucykuZm9yRWFjaChmdW5jdGlvbihkKXtcbiAgICBpZiAodHlwZW9mIHNlbGYuZGVmaW5pdGlvbnNbZF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHNlbGYuZGVmaW5pdGlvbnNbZF0gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9kZWZpbml0aW9uc1tkXSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzZWxmLmRlZmluaXRpb25zW2RdID0gX2RlZmluaXRpb25zW2RdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9kZWZpbml0aW9uc1tkXS5mb3JFYWNoKGZ1bmN0aW9uKHApe1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlbGYuZGVmaW5pdGlvbnNbZF0sIHAsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLmxvY2FsZXNbc2VsZi5sb2NhbGVdW2RdID09PSBcInVuZGVmaW5lZFwiIHx8IHR5cGVvZiBzZWxmLmxvY2FsZXNbc2VsZi5sb2NhbGVdW2RdW3BdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAvLyBjZXJ0YWluIGxvY2FsaXphdGlvbiBzZXRzIGNvbnRhaW4gbGVzcyBkYXRhIHRoZW4gb3RoZXJzLlxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgYSBtaXNzaW5nIGRlZmluaXRpb24sIHVzZSB0aGUgZGVmYXVsdCBsb2NhbGVGYWxsYmFjayB0byBzdWJzdGl0dXRlIHRoZSBtaXNzaW5nIHNldCBkYXRhXG4gICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcHJvcGVydHkgJyArIGQgKyBwKVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9jYWxlc1tsb2NhbGVGYWxsYmFja11bZF1bcF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBsb2NhbGl6ZWQgZGF0YVxuICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9jYWxlc1tzZWxmLmxvY2FsZV1bZF1bcF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn07XG5cbkZha2VyLnByb3RvdHlwZS5zZWVkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIFJhbmRvbSA9IHJlcXVpcmUoJy4vcmFuZG9tJyk7XG4gIHRoaXMuc2VlZFZhbHVlID0gdmFsdWU7XG4gIHRoaXMucmFuZG9tID0gbmV3IFJhbmRvbSh0aGlzLCB0aGlzLnNlZWRWYWx1ZSk7XG59XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IEZha2VyO1xuIiwidmFyIHJhbmRvbV91YSA9IHJlcXVpcmUoJy4uL3ZlbmRvci91c2VyLWFnZW50Jyk7XG5cbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIuaW50ZXJuZXRcbiAqL1xudmFyIEludGVybmV0ID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLyoqXG4gICAqIGF2YXRhclxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmF2YXRhclxuICAgKi9cbiAgc2VsZi5hdmF0YXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5pbnRlcm5ldC5hdmF0YXJfdXJpKTtcbiAgfTtcblxuICBzZWxmLmF2YXRhci5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIFVSTCBmb3IgYW4gYXZhdGFyLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lnb3JnYXJ5YmFsZGkvMTI4LmpwZ1wiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBlbWFpbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmVtYWlsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaXJzdE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm92aWRlclxuICAgKi9cbiAgc2VsZi5lbWFpbCA9IGZ1bmN0aW9uIChmaXJzdE5hbWUsIGxhc3ROYW1lLCBwcm92aWRlcikge1xuICAgICAgcHJvdmlkZXIgPSBwcm92aWRlciB8fCBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmZyZWVfZW1haWwpO1xuICAgICAgcmV0dXJuICBmYWtlci5oZWxwZXJzLnNsdWdpZnkoZmFrZXIuaW50ZXJuZXQudXNlck5hbWUoZmlyc3ROYW1lLCBsYXN0TmFtZSkpICsgXCJAXCIgKyBwcm92aWRlcjtcbiAgfTtcblxuICBzZWxmLmVtYWlsLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgdmFsaWQgZW1haWwgYWRkcmVzcyBiYXNlZCBvbiBvcHRpb25hbCBpbnB1dCBjcml0ZXJpYVwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJmb28uYmFyQGdtYWlsLmNvbVwiXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJmaXJzdE5hbWVcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBmaXJzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH0sXG4gICAgICBcImxhc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbGFzdCBuYW1lIG9mIHRoZSB1c2VyXCJcbiAgICAgIH0sXG4gICAgICBcInByb3ZpZGVyXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZG9tYWluIG9mIHRoZSB1c2VyXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBleGFtcGxlRW1haWxcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5leGFtcGxlRW1haWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICovXG4gIHNlbGYuZXhhbXBsZUVtYWlsID0gZnVuY3Rpb24gKGZpcnN0TmFtZSwgbGFzdE5hbWUpIHtcbiAgICAgIHZhciBwcm92aWRlciA9IGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMuaW50ZXJuZXQuZXhhbXBsZV9lbWFpbCk7XG4gICAgICByZXR1cm4gc2VsZi5lbWFpbChmaXJzdE5hbWUsIGxhc3ROYW1lLCBwcm92aWRlcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZXJOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQudXNlck5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpcnN0TmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFzdE5hbWVcbiAgICovXG4gIHNlbGYudXNlck5hbWUgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSkge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGZpcnN0TmFtZSA9IGZpcnN0TmFtZSB8fCBmYWtlci5uYW1lLmZpcnN0TmFtZSgpO1xuICAgICAgbGFzdE5hbWUgPSBsYXN0TmFtZSB8fCBmYWtlci5uYW1lLmxhc3ROYW1lKCk7XG4gICAgICBzd2l0Y2ggKGZha2VyLnJhbmRvbS5udW1iZXIoMikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXN1bHQgPSBmaXJzdE5hbWUgKyBmYWtlci5yYW5kb20ubnVtYmVyKDk5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXN1bHQgPSBmaXJzdE5hbWUgKyBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIi5cIiwgXCJfXCJdKSArIGxhc3ROYW1lO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAgIHJlc3VsdCA9IGZpcnN0TmFtZSArIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoW1wiLlwiLCBcIl9cIl0pICsgbGFzdE5hbWUgKyBmYWtlci5yYW5kb20ubnVtYmVyKDk5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1N0cmluZygpLnJlcGxhY2UoLycvZywgXCJcIik7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvIC9nLCBcIlwiKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgc2VsZi51c2VyTmFtZS5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHVzZXJuYW1lIGJhc2VkIG9uIG9uZSBvZiBzZXZlcmFsIHBhdHRlcm5zLiBUaGUgcGF0dGVybiBpcyBjaG9zZW4gcmFuZG9tbHkuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcbiAgICAgIFwiS2lyc3RpbjM5XCIsXG4gICAgICBcIktpcnN0aW4uU21pdGhcIixcbiAgICAgIFwiS2lyc3Rpbi5TbWl0aDM5XCIsXG4gICAgICBcIktpcnN0aW5TbWl0aFwiLFxuICAgICAgXCJLaXJzdGluU21pdGgzOVwiLFxuICAgIF0sXG4gICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiZmlyc3ROYW1lXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZmlyc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9LFxuICAgICAgXCJsYXN0TmFtZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGxhc3QgbmFtZSBvZiB0aGUgdXNlclwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBwcm90b2NvbFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LnByb3RvY29sXG4gICAqL1xuICBzZWxmLnByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb3RvY29scyA9IFsnaHR0cCcsJ2h0dHBzJ107XG4gICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChwcm90b2NvbHMpO1xuICB9O1xuXG4gIHNlbGYucHJvdG9jb2wuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJSYW5kb21seSBnZW5lcmF0ZXMgaHR0cCBvciBodHRwc1wiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJodHRwc1wiLCBcImh0dHBcIl1cbiAgfTtcblxuICAvKipcbiAgICogdXJsXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQudXJsXG4gICAqL1xuICBzZWxmLnVybCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5pbnRlcm5ldC5wcm90b2NvbCgpICsgJzovLycgKyBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lKCk7XG4gIH07XG5cbiAgc2VsZi51cmwuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gVVJMLiBUaGUgVVJMIGNvdWxkIGJlIHNlY3VyZSBvciBpbnNlY3VyZS5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1xuICAgICAgXCJodHRwOi8vcmFzaGF3bi5uYW1lXCIsXG4gICAgICBcImh0dHBzOi8vcmFzaGF3bi5uYW1lXCJcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIGRvbWFpbk5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5kb21haW5OYW1lXG4gICAqL1xuICBzZWxmLmRvbWFpbk5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFrZXIuaW50ZXJuZXQuZG9tYWluV29yZCgpICsgXCIuXCIgKyBmYWtlci5pbnRlcm5ldC5kb21haW5TdWZmaXgoKTtcbiAgfTtcblxuICBzZWxmLmRvbWFpbk5hbWUuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gZG9tYWluIG5hbWUuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIm1hcnZpbi5vcmdcIl1cbiAgfTtcblxuICAvKipcbiAgICogZG9tYWluU3VmZml4XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZG9tYWluU3VmZml4XG4gICAqL1xuICBzZWxmLmRvbWFpblN1ZmZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLmludGVybmV0LmRvbWFpbl9zdWZmaXgpO1xuICB9O1xuXG4gIHNlbGYuZG9tYWluU3VmZml4LnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGRvbWFpbiBzdWZmaXguXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIm5ldFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBkb21haW5Xb3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuZG9tYWluV29yZFxuICAgKi9cbiAgc2VsZi5kb21haW5Xb3JkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLm5hbWUuZmlyc3ROYW1lKCkucmVwbGFjZSgvKFtcXFxcfiMmKnt9Lzo8Pj98XFxcIiddKS9pZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH07XG5cbiAgc2VsZi5kb21haW5Xb3JkLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIGRvbWFpbiB3b3JkLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJhbHljZVwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiBpcFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmludGVybmV0LmlwXG4gICAqL1xuICBzZWxmLmlwID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJhbmROdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIChmYWtlci5yYW5kb20ubnVtYmVyKDI1NSkpLnRvRml4ZWQoMCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgIHJlc3VsdFtpXSA9IHJhbmROdW0oKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKFwiLlwiKTtcbiAgfTtcblxuICBzZWxmLmlwLnNjaGVtYSA9IHtcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiR2VuZXJhdGVzIGEgcmFuZG9tIElQLlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCI5Ny4yMzguMjQxLjExXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGlwdjZcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5pcHY2XG4gICAqL1xuICBzZWxmLmlwdjYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmFuZEhhc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAoZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiYVwiLCBcImJcIiwgXCJjXCIsIFwiZFwiLCBcImVcIiwgXCJmXCJdKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH07XG5cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IHJhbmRIYXNoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0LmpvaW4oXCI6XCIpO1xuICB9O1xuXG4gIHNlbGYuaXB2Ni5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBJUHY2IGFkZHJlc3MuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIjIwMDE6MGRiODo2Mjc2OmIxYTc6NTIxMzoyMmYxOjI1ZGY6YzhhMFwiXVxuICB9O1xuXG4gIC8qKlxuICAgKiB1c2VyQWdlbnRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC51c2VyQWdlbnRcbiAgICovXG4gIHNlbGYudXNlckFnZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByYW5kb21fdWEuZ2VuZXJhdGUoKTtcbiAgfTtcblxuICBzZWxmLnVzZXJBZ2VudC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSB1c2VyIGFnZW50LlwiLFxuICAgIFwic2FtcGxlUmVzdWx0c1wiOiBbXCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFggMTBfN181IHJ2OjYuMDsgU0wpIEFwcGxlV2ViS2l0LzUzMi4wLjEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzcuMS42IFNhZmFyaS81MzIuMC4xXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbG9yXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQuY29sb3JcbiAgICogQHBhcmFtIHtudW1iZXJ9IGJhc2VSZWQyNTVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGJhc2VHcmVlbjI1NVxuICAgKiBAcGFyYW0ge251bWJlcn0gYmFzZUJsdWUyNTVcbiAgICovXG4gIHNlbGYuY29sb3IgPSBmdW5jdGlvbiAoYmFzZVJlZDI1NSwgYmFzZUdyZWVuMjU1LCBiYXNlQmx1ZTI1NSkge1xuICAgICAgYmFzZVJlZDI1NSA9IGJhc2VSZWQyNTUgfHwgMDtcbiAgICAgIGJhc2VHcmVlbjI1NSA9IGJhc2VHcmVlbjI1NSB8fCAwO1xuICAgICAgYmFzZUJsdWUyNTUgPSBiYXNlQmx1ZTI1NSB8fCAwO1xuICAgICAgLy8gYmFzZWQgb24gYXdlc29tZSByZXNwb25zZSA6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDMwNDQvYWxnb3JpdGhtLXRvLXJhbmRvbWx5LWdlbmVyYXRlLWFuLWFlc3RoZXRpY2FsbHktcGxlYXNpbmctY29sb3ItcGFsZXR0ZVxuICAgICAgdmFyIHJlZCA9IE1hdGguZmxvb3IoKGZha2VyLnJhbmRvbS5udW1iZXIoMjU2KSArIGJhc2VSZWQyNTUpIC8gMik7XG4gICAgICB2YXIgZ3JlZW4gPSBNYXRoLmZsb29yKChmYWtlci5yYW5kb20ubnVtYmVyKDI1NikgKyBiYXNlR3JlZW4yNTUpIC8gMik7XG4gICAgICB2YXIgYmx1ZSA9IE1hdGguZmxvb3IoKGZha2VyLnJhbmRvbS5udW1iZXIoMjU2KSArIGJhc2VCbHVlMjU1KSAvIDIpO1xuICAgICAgdmFyIHJlZFN0ciA9IHJlZC50b1N0cmluZygxNik7XG4gICAgICB2YXIgZ3JlZW5TdHIgPSBncmVlbi50b1N0cmluZygxNik7XG4gICAgICB2YXIgYmx1ZVN0ciA9IGJsdWUudG9TdHJpbmcoMTYpO1xuICAgICAgcmV0dXJuICcjJyArXG4gICAgICAgIChyZWRTdHIubGVuZ3RoID09PSAxID8gJzAnIDogJycpICsgcmVkU3RyICtcbiAgICAgICAgKGdyZWVuU3RyLmxlbmd0aCA9PT0gMSA/ICcwJyA6ICcnKSArIGdyZWVuU3RyICtcbiAgICAgICAgKGJsdWVTdHIubGVuZ3RoID09PSAxID8gJzAnOiAnJykgKyBibHVlU3RyO1xuXG4gIH07XG5cbiAgc2VsZi5jb2xvci5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBoZXhhZGVjaW1hbCBjb2xvci5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1wiIzA2MjY3ZlwiXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJiYXNlUmVkMjU1XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgcmVkIHZhbHVlLiBWYWxpZCB2YWx1ZXMgYXJlIDAgLSAyNTUuXCJcbiAgICAgIH0sXG4gICAgICBcImJhc2VHcmVlbjI1NVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiLFxuICAgICAgICBcInJlcXVpcmVkXCI6IGZhbHNlLFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGdyZWVuIHZhbHVlLiBWYWxpZCB2YWx1ZXMgYXJlIDAgLSAyNTUuXCJcbiAgICAgIH0sXG4gICAgICBcImJhc2VCbHVlMjU1XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgYmx1ZSB2YWx1ZS4gVmFsaWQgdmFsdWVzIGFyZSAwIC0gMjU1LlwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBtYWNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5pbnRlcm5ldC5tYWNcbiAgICovXG4gIHNlbGYubWFjID0gZnVuY3Rpb24oKXtcbiAgICAgIHZhciBpLCBtYWMgPSBcIlwiO1xuICAgICAgZm9yIChpPTA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgbWFjKz0gZmFrZXIucmFuZG9tLm51bWJlcigxNSkudG9TdHJpbmcoMTYpO1xuICAgICAgICAgIGlmIChpJTI9PTEgJiYgaSAhPSAxMSkge1xuICAgICAgICAgICAgICBtYWMrPVwiOlwiO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtYWM7XG4gIH07XG5cbiAgc2VsZi5tYWMuc2NoZW1hID0ge1xuICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0ZXMgYSByYW5kb20gbWFjIGFkZHJlc3MuXCIsXG4gICAgXCJzYW1wbGVSZXN1bHRzXCI6IFtcIjc4OjA2OmNjOmFlOmIzOjgxXCJdXG4gIH07XG5cbiAgLyoqXG4gICAqIHBhc3N3b3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuaW50ZXJuZXQucGFzc3dvcmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1lbW9yYWJsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0dGVyblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqL1xuICAgc2VsZi5wYXNzd29yZCA9IGZ1bmN0aW9uIChsZW4sIG1lbW9yYWJsZSwgcGF0dGVybiwgcHJlZml4KSB7XG4gICAgIGxlbiA9IGxlbiB8fCAxNTtcbiAgICAgaWYgKHR5cGVvZiBtZW1vcmFibGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICBtZW1vcmFibGUgPSBmYWxzZTtcbiAgICAgfVxuICAgICAvKlxuICAgICAgKiBwYXNzd29yZC1nZW5lcmF0b3IgKCBmdW5jdGlvbiApXG4gICAgICAqIENvcHlyaWdodChjKSAyMDExLTIwMTMgQmVybWkgRmVycmVyIDxiZXJtaUBiZXJtaWxhYnMuY29tPlxuICAgICAgKiBNSVQgTGljZW5zZWRcbiAgICAgICovXG4gICAgIHZhciBjb25zb25hbnQsIGxldHRlciwgcGFzc3dvcmQsIHZvd2VsO1xuICAgICBsZXR0ZXIgPSAvW2EtekEtWl0kLztcbiAgICAgdm93ZWwgPSAvW2FlaW91QUVJT1VdJC87XG4gICAgIGNvbnNvbmFudCA9IC9bYmNkZmdoamtsbW5wcXJzdHZ3eHl6QkNERkdISktMTU5QUVJTVFZXWFlaXSQvO1xuICAgICB2YXIgX3Bhc3N3b3JkID0gZnVuY3Rpb24gKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpIHtcbiAgICAgICB2YXIgY2hhciwgbjtcbiAgICAgICBpZiAobGVuZ3RoID09IG51bGwpIHtcbiAgICAgICAgIGxlbmd0aCA9IDEwO1xuICAgICAgIH1cbiAgICAgICBpZiAobWVtb3JhYmxlID09IG51bGwpIHtcbiAgICAgICAgIG1lbW9yYWJsZSA9IHRydWU7XG4gICAgICAgfVxuICAgICAgIGlmIChwYXR0ZXJuID09IG51bGwpIHtcbiAgICAgICAgIHBhdHRlcm4gPSAvXFx3LztcbiAgICAgICB9XG4gICAgICAgaWYgKHByZWZpeCA9PSBudWxsKSB7XG4gICAgICAgICBwcmVmaXggPSAnJztcbiAgICAgICB9XG4gICAgICAgaWYgKHByZWZpeC5sZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgICAgIH1cbiAgICAgICBpZiAobWVtb3JhYmxlKSB7XG4gICAgICAgICBpZiAocHJlZml4Lm1hdGNoKGNvbnNvbmFudCkpIHtcbiAgICAgICAgICAgcGF0dGVybiA9IHZvd2VsO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgcGF0dGVybiA9IGNvbnNvbmFudDtcbiAgICAgICAgIH1cbiAgICAgICB9XG4gICAgICAgbiA9IGZha2VyLnJhbmRvbS5udW1iZXIoOTQpICsgMzM7XG4gICAgICAgY2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobik7XG4gICAgICAgaWYgKG1lbW9yYWJsZSkge1xuICAgICAgICAgY2hhciA9IGNoYXIudG9Mb3dlckNhc2UoKTtcbiAgICAgICB9XG4gICAgICAgaWYgKCFjaGFyLm1hdGNoKHBhdHRlcm4pKSB7XG4gICAgICAgICByZXR1cm4gX3Bhc3N3b3JkKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBwcmVmaXgpO1xuICAgICAgIH1cbiAgICAgICByZXR1cm4gX3Bhc3N3b3JkKGxlbmd0aCwgbWVtb3JhYmxlLCBwYXR0ZXJuLCBcIlwiICsgcHJlZml4ICsgY2hhcik7XG4gICAgIH07XG4gICAgIHJldHVybiBfcGFzc3dvcmQobGVuLCBtZW1vcmFibGUsIHBhdHRlcm4sIHByZWZpeCk7XG4gICB9XG5cbiAgc2VsZi5wYXNzd29yZC5zY2hlbWEgPSB7XG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIkdlbmVyYXRlcyBhIHJhbmRvbSBwYXNzd29yZC5cIixcbiAgICBcInNhbXBsZVJlc3VsdHNcIjogW1xuICAgICAgXCJBTTd6bDZNZ1wiLFxuICAgICAgXCJzdXNlam9mZVwiXG4gICAgXSxcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJsZW5ndGhcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgcGFzc3dvcmQuXCJcbiAgICAgIH0sXG4gICAgICBcIm1lbW9yYWJsZVwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgXCJyZXF1aXJlZFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgYSBwYXNzd29yZCBzaG91bGQgYmUgZWFzeSB0byByZW1lbWJlci5cIlxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgIFwidHlwZVwiOiBcInJlZ2V4XCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHJlZ2V4IHRvIG1hdGNoIGVhY2ggY2hhcmFjdGVyIG9mIHRoZSBwYXNzd29yZCBhZ2FpbnN0LiBUaGlzIHBhcmFtZXRlciB3aWxsIGJlIG5lZ2F0ZWQgaWYgdGhlIG1lbW9yYWJsZSBzZXR0aW5nIGlzIHR1cm5lZCBvbi5cIlxuICAgICAgfSxcbiAgICAgIFwicHJlZml4XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwicmVxdWlyZWRcIjogZmFsc2UsXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHZhbHVlIHRvIHByZXBlbmQgdG8gdGhlIGdlbmVyYXRlZCBwYXNzd29yZC4gVGhlIHByZWZpeCBjb3VudHMgdG93YXJkcyB0aGUgbGVuZ3RoIG9mIHRoZSBwYXNzd29yZC5cIlxuICAgICAgfVxuICAgIH1cbiAgfTtcblxufTtcblxuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gSW50ZXJuZXQ7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIyMjXCIsXG4gIFwiIyMjI1wiLFxuICBcIiMjI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje2NpdHlfcHJlZml4fSAje05hbWUuZmlyc3RfbmFtZX0je2NpdHlfc3VmZml4fVwiLFxuICBcIiN7Y2l0eV9wcmVmaXh9ICN7TmFtZS5maXJzdF9uYW1lfVwiLFxuICBcIiN7TmFtZS5maXJzdF9uYW1lfSN7Y2l0eV9zdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0je2NpdHlfc3VmZml4fVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJOb3J0aFwiLFxuICBcIkVhc3RcIixcbiAgXCJXZXN0XCIsXG4gIFwiU291dGhcIixcbiAgXCJOZXdcIixcbiAgXCJMYWtlXCIsXG4gIFwiUG9ydFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJ0b3duXCIsXG4gIFwidG9uXCIsXG4gIFwibGFuZFwiLFxuICBcInZpbGxlXCIsXG4gIFwiYmVyZ1wiLFxuICBcImJ1cmdoXCIsXG4gIFwiYm9yb3VnaFwiLFxuICBcImJ1cnlcIixcbiAgXCJ2aWV3XCIsXG4gIFwicG9ydFwiLFxuICBcIm1vdXRoXCIsXG4gIFwic3RhZFwiLFxuICBcImZ1cnRcIixcbiAgXCJjaGVzdGVyXCIsXG4gIFwibW91dGhcIixcbiAgXCJmb3J0XCIsXG4gIFwiaGF2ZW5cIixcbiAgXCJzaWRlXCIsXG4gIFwic2hpcmVcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQWZnaGFuaXN0YW5cIixcbiAgXCJBbGJhbmlhXCIsXG4gIFwiQWxnZXJpYVwiLFxuICBcIkFtZXJpY2FuIFNhbW9hXCIsXG4gIFwiQW5kb3JyYVwiLFxuICBcIkFuZ29sYVwiLFxuICBcIkFuZ3VpbGxhXCIsXG4gIFwiQW50YXJjdGljYSAodGhlIHRlcnJpdG9yeSBTb3V0aCBvZiA2MCBkZWcgUylcIixcbiAgXCJBbnRpZ3VhIGFuZCBCYXJidWRhXCIsXG4gIFwiQXJnZW50aW5hXCIsXG4gIFwiQXJtZW5pYVwiLFxuICBcIkFydWJhXCIsXG4gIFwiQXVzdHJhbGlhXCIsXG4gIFwiQXVzdHJpYVwiLFxuICBcIkF6ZXJiYWlqYW5cIixcbiAgXCJCYWhhbWFzXCIsXG4gIFwiQmFocmFpblwiLFxuICBcIkJhbmdsYWRlc2hcIixcbiAgXCJCYXJiYWRvc1wiLFxuICBcIkJlbGFydXNcIixcbiAgXCJCZWxnaXVtXCIsXG4gIFwiQmVsaXplXCIsXG4gIFwiQmVuaW5cIixcbiAgXCJCZXJtdWRhXCIsXG4gIFwiQmh1dGFuXCIsXG4gIFwiQm9saXZpYVwiLFxuICBcIkJvc25pYSBhbmQgSGVyemVnb3ZpbmFcIixcbiAgXCJCb3Rzd2FuYVwiLFxuICBcIkJvdXZldCBJc2xhbmQgKEJvdXZldG95YSlcIixcbiAgXCJCcmF6aWxcIixcbiAgXCJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnkgKENoYWdvcyBBcmNoaXBlbGFnbylcIixcbiAgXCJCcnVuZWkgRGFydXNzYWxhbVwiLFxuICBcIkJ1bGdhcmlhXCIsXG4gIFwiQnVya2luYSBGYXNvXCIsXG4gIFwiQnVydW5kaVwiLFxuICBcIkNhbWJvZGlhXCIsXG4gIFwiQ2FtZXJvb25cIixcbiAgXCJDYW5hZGFcIixcbiAgXCJDYXBlIFZlcmRlXCIsXG4gIFwiQ2F5bWFuIElzbGFuZHNcIixcbiAgXCJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWNcIixcbiAgXCJDaGFkXCIsXG4gIFwiQ2hpbGVcIixcbiAgXCJDaGluYVwiLFxuICBcIkNocmlzdG1hcyBJc2xhbmRcIixcbiAgXCJDb2NvcyAoS2VlbGluZykgSXNsYW5kc1wiLFxuICBcIkNvbG9tYmlhXCIsXG4gIFwiQ29tb3Jvc1wiLFxuICBcIkNvbmdvXCIsXG4gIFwiQ29vayBJc2xhbmRzXCIsXG4gIFwiQ29zdGEgUmljYVwiLFxuICBcIkNvdGUgZCdJdm9pcmVcIixcbiAgXCJDcm9hdGlhXCIsXG4gIFwiQ3ViYVwiLFxuICBcIkN5cHJ1c1wiLFxuICBcIkN6ZWNoIFJlcHVibGljXCIsXG4gIFwiRGVubWFya1wiLFxuICBcIkRqaWJvdXRpXCIsXG4gIFwiRG9taW5pY2FcIixcbiAgXCJEb21pbmljYW4gUmVwdWJsaWNcIixcbiAgXCJFY3VhZG9yXCIsXG4gIFwiRWd5cHRcIixcbiAgXCJFbCBTYWx2YWRvclwiLFxuICBcIkVxdWF0b3JpYWwgR3VpbmVhXCIsXG4gIFwiRXJpdHJlYVwiLFxuICBcIkVzdG9uaWFcIixcbiAgXCJFdGhpb3BpYVwiLFxuICBcIkZhcm9lIElzbGFuZHNcIixcbiAgXCJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcylcIixcbiAgXCJGaWppXCIsXG4gIFwiRmlubGFuZFwiLFxuICBcIkZyYW5jZVwiLFxuICBcIkZyZW5jaCBHdWlhbmFcIixcbiAgXCJGcmVuY2ggUG9seW5lc2lhXCIsXG4gIFwiRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzXCIsXG4gIFwiR2Fib25cIixcbiAgXCJHYW1iaWFcIixcbiAgXCJHZW9yZ2lhXCIsXG4gIFwiR2VybWFueVwiLFxuICBcIkdoYW5hXCIsXG4gIFwiR2licmFsdGFyXCIsXG4gIFwiR3JlZWNlXCIsXG4gIFwiR3JlZW5sYW5kXCIsXG4gIFwiR3JlbmFkYVwiLFxuICBcIkd1YWRlbG91cGVcIixcbiAgXCJHdWFtXCIsXG4gIFwiR3VhdGVtYWxhXCIsXG4gIFwiR3Vlcm5zZXlcIixcbiAgXCJHdWluZWFcIixcbiAgXCJHdWluZWEtQmlzc2F1XCIsXG4gIFwiR3V5YW5hXCIsXG4gIFwiSGFpdGlcIixcbiAgXCJIZWFyZCBJc2xhbmQgYW5kIE1jRG9uYWxkIElzbGFuZHNcIixcbiAgXCJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKVwiLFxuICBcIkhvbmR1cmFzXCIsXG4gIFwiSG9uZyBLb25nXCIsXG4gIFwiSHVuZ2FyeVwiLFxuICBcIkljZWxhbmRcIixcbiAgXCJJbmRpYVwiLFxuICBcIkluZG9uZXNpYVwiLFxuICBcIklyYW5cIixcbiAgXCJJcmFxXCIsXG4gIFwiSXJlbGFuZFwiLFxuICBcIklzbGUgb2YgTWFuXCIsXG4gIFwiSXNyYWVsXCIsXG4gIFwiSXRhbHlcIixcbiAgXCJKYW1haWNhXCIsXG4gIFwiSmFwYW5cIixcbiAgXCJKZXJzZXlcIixcbiAgXCJKb3JkYW5cIixcbiAgXCJLYXpha2hzdGFuXCIsXG4gIFwiS2VueWFcIixcbiAgXCJLaXJpYmF0aVwiLFxuICBcIkRlbW9jcmF0aWMgUGVvcGxlJ3MgUmVwdWJsaWMgb2YgS29yZWFcIixcbiAgXCJSZXB1YmxpYyBvZiBLb3JlYVwiLFxuICBcIkt1d2FpdFwiLFxuICBcIkt5cmd5eiBSZXB1YmxpY1wiLFxuICBcIkxhbyBQZW9wbGUncyBEZW1vY3JhdGljIFJlcHVibGljXCIsXG4gIFwiTGF0dmlhXCIsXG4gIFwiTGViYW5vblwiLFxuICBcIkxlc290aG9cIixcbiAgXCJMaWJlcmlhXCIsXG4gIFwiTGlieWFuIEFyYWIgSmFtYWhpcml5YVwiLFxuICBcIkxpZWNodGVuc3RlaW5cIixcbiAgXCJMaXRodWFuaWFcIixcbiAgXCJMdXhlbWJvdXJnXCIsXG4gIFwiTWFjYW9cIixcbiAgXCJNYWNlZG9uaWFcIixcbiAgXCJNYWRhZ2FzY2FyXCIsXG4gIFwiTWFsYXdpXCIsXG4gIFwiTWFsYXlzaWFcIixcbiAgXCJNYWxkaXZlc1wiLFxuICBcIk1hbGlcIixcbiAgXCJNYWx0YVwiLFxuICBcIk1hcnNoYWxsIElzbGFuZHNcIixcbiAgXCJNYXJ0aW5pcXVlXCIsXG4gIFwiTWF1cml0YW5pYVwiLFxuICBcIk1hdXJpdGl1c1wiLFxuICBcIk1heW90dGVcIixcbiAgXCJNZXhpY29cIixcbiAgXCJNaWNyb25lc2lhXCIsXG4gIFwiTW9sZG92YVwiLFxuICBcIk1vbmFjb1wiLFxuICBcIk1vbmdvbGlhXCIsXG4gIFwiTW9udGVuZWdyb1wiLFxuICBcIk1vbnRzZXJyYXRcIixcbiAgXCJNb3JvY2NvXCIsXG4gIFwiTW96YW1iaXF1ZVwiLFxuICBcIk15YW5tYXJcIixcbiAgXCJOYW1pYmlhXCIsXG4gIFwiTmF1cnVcIixcbiAgXCJOZXBhbFwiLFxuICBcIk5ldGhlcmxhbmRzIEFudGlsbGVzXCIsXG4gIFwiTmV0aGVybGFuZHNcIixcbiAgXCJOZXcgQ2FsZWRvbmlhXCIsXG4gIFwiTmV3IFplYWxhbmRcIixcbiAgXCJOaWNhcmFndWFcIixcbiAgXCJOaWdlclwiLFxuICBcIk5pZ2VyaWFcIixcbiAgXCJOaXVlXCIsXG4gIFwiTm9yZm9sayBJc2xhbmRcIixcbiAgXCJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHNcIixcbiAgXCJOb3J3YXlcIixcbiAgXCJPbWFuXCIsXG4gIFwiUGFraXN0YW5cIixcbiAgXCJQYWxhdVwiLFxuICBcIlBhbGVzdGluaWFuIFRlcnJpdG9yeVwiLFxuICBcIlBhbmFtYVwiLFxuICBcIlBhcHVhIE5ldyBHdWluZWFcIixcbiAgXCJQYXJhZ3VheVwiLFxuICBcIlBlcnVcIixcbiAgXCJQaGlsaXBwaW5lc1wiLFxuICBcIlBpdGNhaXJuIElzbGFuZHNcIixcbiAgXCJQb2xhbmRcIixcbiAgXCJQb3J0dWdhbFwiLFxuICBcIlB1ZXJ0byBSaWNvXCIsXG4gIFwiUWF0YXJcIixcbiAgXCJSZXVuaW9uXCIsXG4gIFwiUm9tYW5pYVwiLFxuICBcIlJ1c3NpYW4gRmVkZXJhdGlvblwiLFxuICBcIlJ3YW5kYVwiLFxuICBcIlNhaW50IEJhcnRoZWxlbXlcIixcbiAgXCJTYWludCBIZWxlbmFcIixcbiAgXCJTYWludCBLaXR0cyBhbmQgTmV2aXNcIixcbiAgXCJTYWludCBMdWNpYVwiLFxuICBcIlNhaW50IE1hcnRpblwiLFxuICBcIlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb25cIixcbiAgXCJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lc1wiLFxuICBcIlNhbW9hXCIsXG4gIFwiU2FuIE1hcmlub1wiLFxuICBcIlNhbyBUb21lIGFuZCBQcmluY2lwZVwiLFxuICBcIlNhdWRpIEFyYWJpYVwiLFxuICBcIlNlbmVnYWxcIixcbiAgXCJTZXJiaWFcIixcbiAgXCJTZXljaGVsbGVzXCIsXG4gIFwiU2llcnJhIExlb25lXCIsXG4gIFwiU2luZ2Fwb3JlXCIsXG4gIFwiU2xvdmFraWEgKFNsb3ZhayBSZXB1YmxpYylcIixcbiAgXCJTbG92ZW5pYVwiLFxuICBcIlNvbG9tb24gSXNsYW5kc1wiLFxuICBcIlNvbWFsaWFcIixcbiAgXCJTb3V0aCBBZnJpY2FcIixcbiAgXCJTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kc1wiLFxuICBcIlNwYWluXCIsXG4gIFwiU3JpIExhbmthXCIsXG4gIFwiU3VkYW5cIixcbiAgXCJTdXJpbmFtZVwiLFxuICBcIlN2YWxiYXJkICYgSmFuIE1heWVuIElzbGFuZHNcIixcbiAgXCJTd2F6aWxhbmRcIixcbiAgXCJTd2VkZW5cIixcbiAgXCJTd2l0emVybGFuZFwiLFxuICBcIlN5cmlhbiBBcmFiIFJlcHVibGljXCIsXG4gIFwiVGFpd2FuXCIsXG4gIFwiVGFqaWtpc3RhblwiLFxuICBcIlRhbnphbmlhXCIsXG4gIFwiVGhhaWxhbmRcIixcbiAgXCJUaW1vci1MZXN0ZVwiLFxuICBcIlRvZ29cIixcbiAgXCJUb2tlbGF1XCIsXG4gIFwiVG9uZ2FcIixcbiAgXCJUcmluaWRhZCBhbmQgVG9iYWdvXCIsXG4gIFwiVHVuaXNpYVwiLFxuICBcIlR1cmtleVwiLFxuICBcIlR1cmttZW5pc3RhblwiLFxuICBcIlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kc1wiLFxuICBcIlR1dmFsdVwiLFxuICBcIlVnYW5kYVwiLFxuICBcIlVrcmFpbmVcIixcbiAgXCJVbml0ZWQgQXJhYiBFbWlyYXRlc1wiLFxuICBcIlVuaXRlZCBLaW5nZG9tXCIsXG4gIFwiVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhXCIsXG4gIFwiVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzXCIsXG4gIFwiVXJ1Z3VheVwiLFxuICBcIlV6YmVraXN0YW5cIixcbiAgXCJWYW51YXR1XCIsXG4gIFwiVmVuZXp1ZWxhXCIsXG4gIFwiVmlldG5hbVwiLFxuICBcIlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoXCIsXG4gIFwiVmlyZ2luIElzbGFuZHMsIFUuUy5cIixcbiAgXCJXYWxsaXMgYW5kIEZ1dHVuYVwiLFxuICBcIldlc3Rlcm4gU2FoYXJhXCIsXG4gIFwiWWVtZW5cIixcbiAgXCJaYW1iaWFcIixcbiAgXCJaaW1iYWJ3ZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBRFwiLFxuICBcIkFFXCIsXG4gIFwiQUZcIixcbiAgXCJBR1wiLFxuICBcIkFJXCIsXG4gIFwiQUxcIixcbiAgXCJBTVwiLFxuICBcIkFPXCIsXG4gIFwiQVFcIixcbiAgXCJBUlwiLFxuICBcIkFTXCIsXG4gIFwiQVRcIixcbiAgXCJBVVwiLFxuICBcIkFXXCIsXG4gIFwiQVhcIixcbiAgXCJBWlwiLFxuICBcIkJBXCIsXG4gIFwiQkJcIixcbiAgXCJCRFwiLFxuICBcIkJFXCIsXG4gIFwiQkZcIixcbiAgXCJCR1wiLFxuICBcIkJIXCIsXG4gIFwiQklcIixcbiAgXCJCSlwiLFxuICBcIkJMXCIsXG4gIFwiQk1cIixcbiAgXCJCTlwiLFxuICBcIkJPXCIsXG4gIFwiQlFcIixcbiAgXCJCUVwiLFxuICBcIkJSXCIsXG4gIFwiQlNcIixcbiAgXCJCVFwiLFxuICBcIkJWXCIsXG4gIFwiQldcIixcbiAgXCJCWVwiLFxuICBcIkJaXCIsXG4gIFwiQ0FcIixcbiAgXCJDQ1wiLFxuICBcIkNEXCIsXG4gIFwiQ0ZcIixcbiAgXCJDR1wiLFxuICBcIkNIXCIsXG4gIFwiQ0lcIixcbiAgXCJDS1wiLFxuICBcIkNMXCIsXG4gIFwiQ01cIixcbiAgXCJDTlwiLFxuICBcIkNPXCIsXG4gIFwiQ1JcIixcbiAgXCJDVVwiLFxuICBcIkNWXCIsXG4gIFwiQ1dcIixcbiAgXCJDWFwiLFxuICBcIkNZXCIsXG4gIFwiQ1pcIixcbiAgXCJERVwiLFxuICBcIkRKXCIsXG4gIFwiREtcIixcbiAgXCJETVwiLFxuICBcIkRPXCIsXG4gIFwiRFpcIixcbiAgXCJFQ1wiLFxuICBcIkVFXCIsXG4gIFwiRUdcIixcbiAgXCJFSFwiLFxuICBcIkVSXCIsXG4gIFwiRVNcIixcbiAgXCJFVFwiLFxuICBcIkZJXCIsXG4gIFwiRkpcIixcbiAgXCJGS1wiLFxuICBcIkZNXCIsXG4gIFwiRk9cIixcbiAgXCJGUlwiLFxuICBcIkdBXCIsXG4gIFwiR0JcIixcbiAgXCJHRFwiLFxuICBcIkdFXCIsXG4gIFwiR0ZcIixcbiAgXCJHR1wiLFxuICBcIkdIXCIsXG4gIFwiR0lcIixcbiAgXCJHTFwiLFxuICBcIkdNXCIsXG4gIFwiR05cIixcbiAgXCJHUFwiLFxuICBcIkdRXCIsXG4gIFwiR1JcIixcbiAgXCJHU1wiLFxuICBcIkdUXCIsXG4gIFwiR1VcIixcbiAgXCJHV1wiLFxuICBcIkdZXCIsXG4gIFwiSEtcIixcbiAgXCJITVwiLFxuICBcIkhOXCIsXG4gIFwiSFJcIixcbiAgXCJIVFwiLFxuICBcIkhVXCIsXG4gIFwiSURcIixcbiAgXCJJRVwiLFxuICBcIklMXCIsXG4gIFwiSU1cIixcbiAgXCJJTlwiLFxuICBcIklPXCIsXG4gIFwiSVFcIixcbiAgXCJJUlwiLFxuICBcIklTXCIsXG4gIFwiSVRcIixcbiAgXCJKRVwiLFxuICBcIkpNXCIsXG4gIFwiSk9cIixcbiAgXCJKUFwiLFxuICBcIktFXCIsXG4gIFwiS0dcIixcbiAgXCJLSFwiLFxuICBcIktJXCIsXG4gIFwiS01cIixcbiAgXCJLTlwiLFxuICBcIktQXCIsXG4gIFwiS1JcIixcbiAgXCJLV1wiLFxuICBcIktZXCIsXG4gIFwiS1pcIixcbiAgXCJMQVwiLFxuICBcIkxCXCIsXG4gIFwiTENcIixcbiAgXCJMSVwiLFxuICBcIkxLXCIsXG4gIFwiTFJcIixcbiAgXCJMU1wiLFxuICBcIkxUXCIsXG4gIFwiTFVcIixcbiAgXCJMVlwiLFxuICBcIkxZXCIsXG4gIFwiTUFcIixcbiAgXCJNQ1wiLFxuICBcIk1EXCIsXG4gIFwiTUVcIixcbiAgXCJNRlwiLFxuICBcIk1HXCIsXG4gIFwiTUhcIixcbiAgXCJNS1wiLFxuICBcIk1MXCIsXG4gIFwiTU1cIixcbiAgXCJNTlwiLFxuICBcIk1PXCIsXG4gIFwiTVBcIixcbiAgXCJNUVwiLFxuICBcIk1SXCIsXG4gIFwiTVNcIixcbiAgXCJNVFwiLFxuICBcIk1VXCIsXG4gIFwiTVZcIixcbiAgXCJNV1wiLFxuICBcIk1YXCIsXG4gIFwiTVlcIixcbiAgXCJNWlwiLFxuICBcIk5BXCIsXG4gIFwiTkNcIixcbiAgXCJORVwiLFxuICBcIk5GXCIsXG4gIFwiTkdcIixcbiAgXCJOSVwiLFxuICBcIk5MXCIsXG4gIFwiTk9cIixcbiAgXCJOUFwiLFxuICBcIk5SXCIsXG4gIFwiTlVcIixcbiAgXCJOWlwiLFxuICBcIk9NXCIsXG4gIFwiUEFcIixcbiAgXCJQRVwiLFxuICBcIlBGXCIsXG4gIFwiUEdcIixcbiAgXCJQSFwiLFxuICBcIlBLXCIsXG4gIFwiUExcIixcbiAgXCJQTVwiLFxuICBcIlBOXCIsXG4gIFwiUFJcIixcbiAgXCJQU1wiLFxuICBcIlBUXCIsXG4gIFwiUFdcIixcbiAgXCJQWVwiLFxuICBcIlFBXCIsXG4gIFwiUkVcIixcbiAgXCJST1wiLFxuICBcIlJTXCIsXG4gIFwiUlVcIixcbiAgXCJSV1wiLFxuICBcIlNBXCIsXG4gIFwiU0JcIixcbiAgXCJTQ1wiLFxuICBcIlNEXCIsXG4gIFwiU0VcIixcbiAgXCJTR1wiLFxuICBcIlNIXCIsXG4gIFwiU0lcIixcbiAgXCJTSlwiLFxuICBcIlNLXCIsXG4gIFwiU0xcIixcbiAgXCJTTVwiLFxuICBcIlNOXCIsXG4gIFwiU09cIixcbiAgXCJTUlwiLFxuICBcIlNTXCIsXG4gIFwiU1RcIixcbiAgXCJTVlwiLFxuICBcIlNYXCIsXG4gIFwiU1lcIixcbiAgXCJTWlwiLFxuICBcIlRDXCIsXG4gIFwiVERcIixcbiAgXCJURlwiLFxuICBcIlRHXCIsXG4gIFwiVEhcIixcbiAgXCJUSlwiLFxuICBcIlRLXCIsXG4gIFwiVExcIixcbiAgXCJUTVwiLFxuICBcIlROXCIsXG4gIFwiVE9cIixcbiAgXCJUUlwiLFxuICBcIlRUXCIsXG4gIFwiVFZcIixcbiAgXCJUV1wiLFxuICBcIlRaXCIsXG4gIFwiVUFcIixcbiAgXCJVR1wiLFxuICBcIlVNXCIsXG4gIFwiVVNcIixcbiAgXCJVWVwiLFxuICBcIlVaXCIsXG4gIFwiVkFcIixcbiAgXCJWQ1wiLFxuICBcIlZFXCIsXG4gIFwiVkdcIixcbiAgXCJWSVwiLFxuICBcIlZOXCIsXG4gIFwiVlVcIixcbiAgXCJXRlwiLFxuICBcIldTXCIsXG4gIFwiWUVcIixcbiAgXCJZVFwiLFxuICBcIlpBXCIsXG4gIFwiWk1cIixcbiAgXCJaV1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBdm9uXCIsXG4gIFwiQmVkZm9yZHNoaXJlXCIsXG4gIFwiQmVya3NoaXJlXCIsXG4gIFwiQm9yZGVyc1wiLFxuICBcIkJ1Y2tpbmdoYW1zaGlyZVwiLFxuICBcIkNhbWJyaWRnZXNoaXJlXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiXG5dO1xuIiwidmFyIGFkZHJlc3MgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYWRkcmVzcztcbmFkZHJlc3MuY2l0eV9wcmVmaXggPSByZXF1aXJlKFwiLi9jaXR5X3ByZWZpeFwiKTtcbmFkZHJlc3MuY2l0eV9zdWZmaXggPSByZXF1aXJlKFwiLi9jaXR5X3N1ZmZpeFwiKTtcbmFkZHJlc3MuY291bnR5ID0gcmVxdWlyZShcIi4vY291bnR5XCIpO1xuYWRkcmVzcy5jb3VudHJ5ID0gcmVxdWlyZShcIi4vY291bnRyeVwiKTtcbmFkZHJlc3MuY291bnRyeV9jb2RlID0gcmVxdWlyZShcIi4vY291bnRyeV9jb2RlXCIpO1xuYWRkcmVzcy5idWlsZGluZ19udW1iZXIgPSByZXF1aXJlKFwiLi9idWlsZGluZ19udW1iZXJcIik7XG5hZGRyZXNzLnN0cmVldF9zdWZmaXggPSByZXF1aXJlKFwiLi9zdHJlZXRfc3VmZml4XCIpO1xuYWRkcmVzcy5zZWNvbmRhcnlfYWRkcmVzcyA9IHJlcXVpcmUoXCIuL3NlY29uZGFyeV9hZGRyZXNzXCIpO1xuYWRkcmVzcy5wb3N0Y29kZSA9IHJlcXVpcmUoXCIuL3Bvc3Rjb2RlXCIpO1xuYWRkcmVzcy5wb3N0Y29kZV9ieV9zdGF0ZSA9IHJlcXVpcmUoXCIuL3Bvc3Rjb2RlX2J5X3N0YXRlXCIpO1xuYWRkcmVzcy5zdGF0ZSA9IHJlcXVpcmUoXCIuL3N0YXRlXCIpO1xuYWRkcmVzcy5zdGF0ZV9hYmJyID0gcmVxdWlyZShcIi4vc3RhdGVfYWJiclwiKTtcbmFkZHJlc3MudGltZV96b25lID0gcmVxdWlyZShcIi4vdGltZV96b25lXCIpO1xuYWRkcmVzcy5jaXR5ID0gcmVxdWlyZShcIi4vY2l0eVwiKTtcbmFkZHJlc3Muc3RyZWV0X25hbWUgPSByZXF1aXJlKFwiLi9zdHJlZXRfbmFtZVwiKTtcbmFkZHJlc3Muc3RyZWV0X2FkZHJlc3MgPSByZXF1aXJlKFwiLi9zdHJlZXRfYWRkcmVzc1wiKTtcbmFkZHJlc3MuZGVmYXVsdF9jb3VudHJ5ID0gcmVxdWlyZShcIi4vZGVmYXVsdF9jb3VudHJ5XCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMjI1wiLFxuICBcIiMjIyMjLSMjIyNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiIyMjIyNcIixcbiAgXCIjIyMjIy0jIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFwdC4gIyMjXCIsXG4gIFwiU3VpdGUgIyMjXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFsYWJhbWFcIixcbiAgXCJBbGFza2FcIixcbiAgXCJBcml6b25hXCIsXG4gIFwiQXJrYW5zYXNcIixcbiAgXCJDYWxpZm9ybmlhXCIsXG4gIFwiQ29sb3JhZG9cIixcbiAgXCJDb25uZWN0aWN1dFwiLFxuICBcIkRlbGF3YXJlXCIsXG4gIFwiRmxvcmlkYVwiLFxuICBcIkdlb3JnaWFcIixcbiAgXCJIYXdhaWlcIixcbiAgXCJJZGFob1wiLFxuICBcIklsbGlub2lzXCIsXG4gIFwiSW5kaWFuYVwiLFxuICBcIklvd2FcIixcbiAgXCJLYW5zYXNcIixcbiAgXCJLZW50dWNreVwiLFxuICBcIkxvdWlzaWFuYVwiLFxuICBcIk1haW5lXCIsXG4gIFwiTWFyeWxhbmRcIixcbiAgXCJNYXNzYWNodXNldHRzXCIsXG4gIFwiTWljaGlnYW5cIixcbiAgXCJNaW5uZXNvdGFcIixcbiAgXCJNaXNzaXNzaXBwaVwiLFxuICBcIk1pc3NvdXJpXCIsXG4gIFwiTW9udGFuYVwiLFxuICBcIk5lYnJhc2thXCIsXG4gIFwiTmV2YWRhXCIsXG4gIFwiTmV3IEhhbXBzaGlyZVwiLFxuICBcIk5ldyBKZXJzZXlcIixcbiAgXCJOZXcgTWV4aWNvXCIsXG4gIFwiTmV3IFlvcmtcIixcbiAgXCJOb3J0aCBDYXJvbGluYVwiLFxuICBcIk5vcnRoIERha290YVwiLFxuICBcIk9oaW9cIixcbiAgXCJPa2xhaG9tYVwiLFxuICBcIk9yZWdvblwiLFxuICBcIlBlbm5zeWx2YW5pYVwiLFxuICBcIlJob2RlIElzbGFuZFwiLFxuICBcIlNvdXRoIENhcm9saW5hXCIsXG4gIFwiU291dGggRGFrb3RhXCIsXG4gIFwiVGVubmVzc2VlXCIsXG4gIFwiVGV4YXNcIixcbiAgXCJVdGFoXCIsXG4gIFwiVmVybW9udFwiLFxuICBcIlZpcmdpbmlhXCIsXG4gIFwiV2FzaGluZ3RvblwiLFxuICBcIldlc3QgVmlyZ2luaWFcIixcbiAgXCJXaXNjb25zaW5cIixcbiAgXCJXeW9taW5nXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIkFMXCIsXG4gIFwiQUtcIixcbiAgXCJBWlwiLFxuICBcIkFSXCIsXG4gIFwiQ0FcIixcbiAgXCJDT1wiLFxuICBcIkNUXCIsXG4gIFwiREVcIixcbiAgXCJGTFwiLFxuICBcIkdBXCIsXG4gIFwiSElcIixcbiAgXCJJRFwiLFxuICBcIklMXCIsXG4gIFwiSU5cIixcbiAgXCJJQVwiLFxuICBcIktTXCIsXG4gIFwiS1lcIixcbiAgXCJMQVwiLFxuICBcIk1FXCIsXG4gIFwiTURcIixcbiAgXCJNQVwiLFxuICBcIk1JXCIsXG4gIFwiTU5cIixcbiAgXCJNU1wiLFxuICBcIk1PXCIsXG4gIFwiTVRcIixcbiAgXCJORVwiLFxuICBcIk5WXCIsXG4gIFwiTkhcIixcbiAgXCJOSlwiLFxuICBcIk5NXCIsXG4gIFwiTllcIixcbiAgXCJOQ1wiLFxuICBcIk5EXCIsXG4gIFwiT0hcIixcbiAgXCJPS1wiLFxuICBcIk9SXCIsXG4gIFwiUEFcIixcbiAgXCJSSVwiLFxuICBcIlNDXCIsXG4gIFwiU0RcIixcbiAgXCJUTlwiLFxuICBcIlRYXCIsXG4gIFwiVVRcIixcbiAgXCJWVFwiLFxuICBcIlZBXCIsXG4gIFwiV0FcIixcbiAgXCJXVlwiLFxuICBcIldJXCIsXG4gIFwiV1lcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tidWlsZGluZ19udW1iZXJ9ICN7c3RyZWV0X25hbWV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiN7TmFtZS5maXJzdF9uYW1lfSAje3N0cmVldF9zdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0gI3tzdHJlZXRfc3VmZml4fVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBbGxleVwiLFxuICBcIkF2ZW51ZVwiLFxuICBcIkJyYW5jaFwiLFxuICBcIkJyaWRnZVwiLFxuICBcIkJyb29rXCIsXG4gIFwiQnJvb2tzXCIsXG4gIFwiQnVyZ1wiLFxuICBcIkJ1cmdzXCIsXG4gIFwiQnlwYXNzXCIsXG4gIFwiQ2FtcFwiLFxuICBcIkNhbnlvblwiLFxuICBcIkNhcGVcIixcbiAgXCJDYXVzZXdheVwiLFxuICBcIkNlbnRlclwiLFxuICBcIkNlbnRlcnNcIixcbiAgXCJDaXJjbGVcIixcbiAgXCJDaXJjbGVzXCIsXG4gIFwiQ2xpZmZcIixcbiAgXCJDbGlmZnNcIixcbiAgXCJDbHViXCIsXG4gIFwiQ29tbW9uXCIsXG4gIFwiQ29ybmVyXCIsXG4gIFwiQ29ybmVyc1wiLFxuICBcIkNvdXJzZVwiLFxuICBcIkNvdXJ0XCIsXG4gIFwiQ291cnRzXCIsXG4gIFwiQ292ZVwiLFxuICBcIkNvdmVzXCIsXG4gIFwiQ3JlZWtcIixcbiAgXCJDcmVzY2VudFwiLFxuICBcIkNyZXN0XCIsXG4gIFwiQ3Jvc3NpbmdcIixcbiAgXCJDcm9zc3JvYWRcIixcbiAgXCJDdXJ2ZVwiLFxuICBcIkRhbGVcIixcbiAgXCJEYW1cIixcbiAgXCJEaXZpZGVcIixcbiAgXCJEcml2ZVwiLFxuICBcIkRyaXZlXCIsXG4gIFwiRHJpdmVzXCIsXG4gIFwiRXN0YXRlXCIsXG4gIFwiRXN0YXRlc1wiLFxuICBcIkV4cHJlc3N3YXlcIixcbiAgXCJFeHRlbnNpb25cIixcbiAgXCJFeHRlbnNpb25zXCIsXG4gIFwiRmFsbFwiLFxuICBcIkZhbGxzXCIsXG4gIFwiRmVycnlcIixcbiAgXCJGaWVsZFwiLFxuICBcIkZpZWxkc1wiLFxuICBcIkZsYXRcIixcbiAgXCJGbGF0c1wiLFxuICBcIkZvcmRcIixcbiAgXCJGb3Jkc1wiLFxuICBcIkZvcmVzdFwiLFxuICBcIkZvcmdlXCIsXG4gIFwiRm9yZ2VzXCIsXG4gIFwiRm9ya1wiLFxuICBcIkZvcmtzXCIsXG4gIFwiRm9ydFwiLFxuICBcIkZyZWV3YXlcIixcbiAgXCJHYXJkZW5cIixcbiAgXCJHYXJkZW5zXCIsXG4gIFwiR2F0ZXdheVwiLFxuICBcIkdsZW5cIixcbiAgXCJHbGVuc1wiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZW5zXCIsXG4gIFwiR3JvdmVcIixcbiAgXCJHcm92ZXNcIixcbiAgXCJIYXJib3JcIixcbiAgXCJIYXJib3JzXCIsXG4gIFwiSGF2ZW5cIixcbiAgXCJIZWlnaHRzXCIsXG4gIFwiSGlnaHdheVwiLFxuICBcIkhpbGxcIixcbiAgXCJIaWxsc1wiLFxuICBcIkhvbGxvd1wiLFxuICBcIklubGV0XCIsXG4gIFwiSW5sZXRcIixcbiAgXCJJc2xhbmRcIixcbiAgXCJJc2xhbmRcIixcbiAgXCJJc2xhbmRzXCIsXG4gIFwiSXNsYW5kc1wiLFxuICBcIklzbGVcIixcbiAgXCJJc2xlXCIsXG4gIFwiSnVuY3Rpb25cIixcbiAgXCJKdW5jdGlvbnNcIixcbiAgXCJLZXlcIixcbiAgXCJLZXlzXCIsXG4gIFwiS25vbGxcIixcbiAgXCJLbm9sbHNcIixcbiAgXCJMYWtlXCIsXG4gIFwiTGFrZXNcIixcbiAgXCJMYW5kXCIsXG4gIFwiTGFuZGluZ1wiLFxuICBcIkxhbmVcIixcbiAgXCJMaWdodFwiLFxuICBcIkxpZ2h0c1wiLFxuICBcIkxvYWZcIixcbiAgXCJMb2NrXCIsXG4gIFwiTG9ja3NcIixcbiAgXCJMb2Nrc1wiLFxuICBcIkxvZGdlXCIsXG4gIFwiTG9kZ2VcIixcbiAgXCJMb29wXCIsXG4gIFwiTWFsbFwiLFxuICBcIk1hbm9yXCIsXG4gIFwiTWFub3JzXCIsXG4gIFwiTWVhZG93XCIsXG4gIFwiTWVhZG93c1wiLFxuICBcIk1ld3NcIixcbiAgXCJNaWxsXCIsXG4gIFwiTWlsbHNcIixcbiAgXCJNaXNzaW9uXCIsXG4gIFwiTWlzc2lvblwiLFxuICBcIk1vdG9yd2F5XCIsXG4gIFwiTW91bnRcIixcbiAgXCJNb3VudGFpblwiLFxuICBcIk1vdW50YWluXCIsXG4gIFwiTW91bnRhaW5zXCIsXG4gIFwiTW91bnRhaW5zXCIsXG4gIFwiTmVja1wiLFxuICBcIk9yY2hhcmRcIixcbiAgXCJPdmFsXCIsXG4gIFwiT3ZlcnBhc3NcIixcbiAgXCJQYXJrXCIsXG4gIFwiUGFya3NcIixcbiAgXCJQYXJrd2F5XCIsXG4gIFwiUGFya3dheXNcIixcbiAgXCJQYXNzXCIsXG4gIFwiUGFzc2FnZVwiLFxuICBcIlBhdGhcIixcbiAgXCJQaWtlXCIsXG4gIFwiUGluZVwiLFxuICBcIlBpbmVzXCIsXG4gIFwiUGxhY2VcIixcbiAgXCJQbGFpblwiLFxuICBcIlBsYWluc1wiLFxuICBcIlBsYWluc1wiLFxuICBcIlBsYXphXCIsXG4gIFwiUGxhemFcIixcbiAgXCJQb2ludFwiLFxuICBcIlBvaW50c1wiLFxuICBcIlBvcnRcIixcbiAgXCJQb3J0XCIsXG4gIFwiUG9ydHNcIixcbiAgXCJQb3J0c1wiLFxuICBcIlByYWlyaWVcIixcbiAgXCJQcmFpcmllXCIsXG4gIFwiUmFkaWFsXCIsXG4gIFwiUmFtcFwiLFxuICBcIlJhbmNoXCIsXG4gIFwiUmFwaWRcIixcbiAgXCJSYXBpZHNcIixcbiAgXCJSZXN0XCIsXG4gIFwiUmlkZ2VcIixcbiAgXCJSaWRnZXNcIixcbiAgXCJSaXZlclwiLFxuICBcIlJvYWRcIixcbiAgXCJSb2FkXCIsXG4gIFwiUm9hZHNcIixcbiAgXCJSb2Fkc1wiLFxuICBcIlJvdXRlXCIsXG4gIFwiUm93XCIsXG4gIFwiUnVlXCIsXG4gIFwiUnVuXCIsXG4gIFwiU2hvYWxcIixcbiAgXCJTaG9hbHNcIixcbiAgXCJTaG9yZVwiLFxuICBcIlNob3Jlc1wiLFxuICBcIlNreXdheVwiLFxuICBcIlNwcmluZ1wiLFxuICBcIlNwcmluZ3NcIixcbiAgXCJTcHJpbmdzXCIsXG4gIFwiU3B1clwiLFxuICBcIlNwdXJzXCIsXG4gIFwiU3F1YXJlXCIsXG4gIFwiU3F1YXJlXCIsXG4gIFwiU3F1YXJlc1wiLFxuICBcIlNxdWFyZXNcIixcbiAgXCJTdGF0aW9uXCIsXG4gIFwiU3RhdGlvblwiLFxuICBcIlN0cmF2ZW51ZVwiLFxuICBcIlN0cmF2ZW51ZVwiLFxuICBcIlN0cmVhbVwiLFxuICBcIlN0cmVhbVwiLFxuICBcIlN0cmVldFwiLFxuICBcIlN0cmVldFwiLFxuICBcIlN0cmVldHNcIixcbiAgXCJTdW1taXRcIixcbiAgXCJTdW1taXRcIixcbiAgXCJUZXJyYWNlXCIsXG4gIFwiVGhyb3VnaHdheVwiLFxuICBcIlRyYWNlXCIsXG4gIFwiVHJhY2tcIixcbiAgXCJUcmFmZmljd2F5XCIsXG4gIFwiVHJhaWxcIixcbiAgXCJUcmFpbFwiLFxuICBcIlR1bm5lbFwiLFxuICBcIlR1bm5lbFwiLFxuICBcIlR1cm5waWtlXCIsXG4gIFwiVHVybnBpa2VcIixcbiAgXCJVbmRlcnBhc3NcIixcbiAgXCJVbmlvblwiLFxuICBcIlVuaW9uc1wiLFxuICBcIlZhbGxleVwiLFxuICBcIlZhbGxleXNcIixcbiAgXCJWaWFcIixcbiAgXCJWaWFkdWN0XCIsXG4gIFwiVmlld1wiLFxuICBcIlZpZXdzXCIsXG4gIFwiVmlsbGFnZVwiLFxuICBcIlZpbGxhZ2VcIixcbiAgXCJWaWxsYWdlc1wiLFxuICBcIlZpbGxlXCIsXG4gIFwiVmlzdGFcIixcbiAgXCJWaXN0YVwiLFxuICBcIldhbGtcIixcbiAgXCJXYWxrc1wiLFxuICBcIldhbGxcIixcbiAgXCJXYXlcIixcbiAgXCJXYXlzXCIsXG4gIFwiV2VsbFwiLFxuICBcIldlbGxzXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlBhY2lmaWMvTWlkd2F5XCIsXG4gIFwiUGFjaWZpYy9QYWdvX1BhZ29cIixcbiAgXCJQYWNpZmljL0hvbm9sdWx1XCIsXG4gIFwiQW1lcmljYS9KdW5lYXVcIixcbiAgXCJBbWVyaWNhL0xvc19BbmdlbGVzXCIsXG4gIFwiQW1lcmljYS9UaWp1YW5hXCIsXG4gIFwiQW1lcmljYS9EZW52ZXJcIixcbiAgXCJBbWVyaWNhL1Bob2VuaXhcIixcbiAgXCJBbWVyaWNhL0NoaWh1YWh1YVwiLFxuICBcIkFtZXJpY2EvTWF6YXRsYW5cIixcbiAgXCJBbWVyaWNhL0NoaWNhZ29cIixcbiAgXCJBbWVyaWNhL1JlZ2luYVwiLFxuICBcIkFtZXJpY2EvTWV4aWNvX0NpdHlcIixcbiAgXCJBbWVyaWNhL01leGljb19DaXR5XCIsXG4gIFwiQW1lcmljYS9Nb250ZXJyZXlcIixcbiAgXCJBbWVyaWNhL0d1YXRlbWFsYVwiLFxuICBcIkFtZXJpY2EvTmV3X1lvcmtcIixcbiAgXCJBbWVyaWNhL0luZGlhbmEvSW5kaWFuYXBvbGlzXCIsXG4gIFwiQW1lcmljYS9Cb2dvdGFcIixcbiAgXCJBbWVyaWNhL0xpbWFcIixcbiAgXCJBbWVyaWNhL0xpbWFcIixcbiAgXCJBbWVyaWNhL0hhbGlmYXhcIixcbiAgXCJBbWVyaWNhL0NhcmFjYXNcIixcbiAgXCJBbWVyaWNhL0xhX1BhelwiLFxuICBcIkFtZXJpY2EvU2FudGlhZ29cIixcbiAgXCJBbWVyaWNhL1N0X0pvaG5zXCIsXG4gIFwiQW1lcmljYS9TYW9fUGF1bG9cIixcbiAgXCJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXNcIixcbiAgXCJBbWVyaWNhL0d1eWFuYVwiLFxuICBcIkFtZXJpY2EvR29kdGhhYlwiLFxuICBcIkF0bGFudGljL1NvdXRoX0dlb3JnaWFcIixcbiAgXCJBdGxhbnRpYy9Bem9yZXNcIixcbiAgXCJBdGxhbnRpYy9DYXBlX1ZlcmRlXCIsXG4gIFwiRXVyb3BlL0R1YmxpblwiLFxuICBcIkV1cm9wZS9Mb25kb25cIixcbiAgXCJFdXJvcGUvTGlzYm9uXCIsXG4gIFwiRXVyb3BlL0xvbmRvblwiLFxuICBcIkFmcmljYS9DYXNhYmxhbmNhXCIsXG4gIFwiQWZyaWNhL01vbnJvdmlhXCIsXG4gIFwiRXRjL1VUQ1wiLFxuICBcIkV1cm9wZS9CZWxncmFkZVwiLFxuICBcIkV1cm9wZS9CcmF0aXNsYXZhXCIsXG4gIFwiRXVyb3BlL0J1ZGFwZXN0XCIsXG4gIFwiRXVyb3BlL0xqdWJsamFuYVwiLFxuICBcIkV1cm9wZS9QcmFndWVcIixcbiAgXCJFdXJvcGUvU2FyYWpldm9cIixcbiAgXCJFdXJvcGUvU2tvcGplXCIsXG4gIFwiRXVyb3BlL1dhcnNhd1wiLFxuICBcIkV1cm9wZS9aYWdyZWJcIixcbiAgXCJFdXJvcGUvQnJ1c3NlbHNcIixcbiAgXCJFdXJvcGUvQ29wZW5oYWdlblwiLFxuICBcIkV1cm9wZS9NYWRyaWRcIixcbiAgXCJFdXJvcGUvUGFyaXNcIixcbiAgXCJFdXJvcGUvQW1zdGVyZGFtXCIsXG4gIFwiRXVyb3BlL0JlcmxpblwiLFxuICBcIkV1cm9wZS9CZXJsaW5cIixcbiAgXCJFdXJvcGUvUm9tZVwiLFxuICBcIkV1cm9wZS9TdG9ja2hvbG1cIixcbiAgXCJFdXJvcGUvVmllbm5hXCIsXG4gIFwiQWZyaWNhL0FsZ2llcnNcIixcbiAgXCJFdXJvcGUvQnVjaGFyZXN0XCIsXG4gIFwiQWZyaWNhL0NhaXJvXCIsXG4gIFwiRXVyb3BlL0hlbHNpbmtpXCIsXG4gIFwiRXVyb3BlL0tpZXZcIixcbiAgXCJFdXJvcGUvUmlnYVwiLFxuICBcIkV1cm9wZS9Tb2ZpYVwiLFxuICBcIkV1cm9wZS9UYWxsaW5uXCIsXG4gIFwiRXVyb3BlL1ZpbG5pdXNcIixcbiAgXCJFdXJvcGUvQXRoZW5zXCIsXG4gIFwiRXVyb3BlL0lzdGFuYnVsXCIsXG4gIFwiRXVyb3BlL01pbnNrXCIsXG4gIFwiQXNpYS9KZXJ1c2FsZW1cIixcbiAgXCJBZnJpY2EvSGFyYXJlXCIsXG4gIFwiQWZyaWNhL0pvaGFubmVzYnVyZ1wiLFxuICBcIkV1cm9wZS9Nb3Njb3dcIixcbiAgXCJFdXJvcGUvTW9zY293XCIsXG4gIFwiRXVyb3BlL01vc2Nvd1wiLFxuICBcIkFzaWEvS3V3YWl0XCIsXG4gIFwiQXNpYS9SaXlhZGhcIixcbiAgXCJBZnJpY2EvTmFpcm9iaVwiLFxuICBcIkFzaWEvQmFnaGRhZFwiLFxuICBcIkFzaWEvVGVocmFuXCIsXG4gIFwiQXNpYS9NdXNjYXRcIixcbiAgXCJBc2lhL011c2NhdFwiLFxuICBcIkFzaWEvQmFrdVwiLFxuICBcIkFzaWEvVGJpbGlzaVwiLFxuICBcIkFzaWEvWWVyZXZhblwiLFxuICBcIkFzaWEvS2FidWxcIixcbiAgXCJBc2lhL1lla2F0ZXJpbmJ1cmdcIixcbiAgXCJBc2lhL0thcmFjaGlcIixcbiAgXCJBc2lhL0thcmFjaGlcIixcbiAgXCJBc2lhL1Rhc2hrZW50XCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9Lb2xrYXRhXCIsXG4gIFwiQXNpYS9LYXRobWFuZHVcIixcbiAgXCJBc2lhL0RoYWthXCIsXG4gIFwiQXNpYS9EaGFrYVwiLFxuICBcIkFzaWEvQ29sb21ib1wiLFxuICBcIkFzaWEvQWxtYXR5XCIsXG4gIFwiQXNpYS9Ob3Zvc2liaXJza1wiLFxuICBcIkFzaWEvUmFuZ29vblwiLFxuICBcIkFzaWEvQmFuZ2tva1wiLFxuICBcIkFzaWEvQmFuZ2tva1wiLFxuICBcIkFzaWEvSmFrYXJ0YVwiLFxuICBcIkFzaWEvS3Jhc25veWFyc2tcIixcbiAgXCJBc2lhL1NoYW5naGFpXCIsXG4gIFwiQXNpYS9DaG9uZ3FpbmdcIixcbiAgXCJBc2lhL0hvbmdfS29uZ1wiLFxuICBcIkFzaWEvVXJ1bXFpXCIsXG4gIFwiQXNpYS9LdWFsYV9MdW1wdXJcIixcbiAgXCJBc2lhL1NpbmdhcG9yZVwiLFxuICBcIkFzaWEvVGFpcGVpXCIsXG4gIFwiQXVzdHJhbGlhL1BlcnRoXCIsXG4gIFwiQXNpYS9Jcmt1dHNrXCIsXG4gIFwiQXNpYS9VbGFhbmJhYXRhclwiLFxuICBcIkFzaWEvU2VvdWxcIixcbiAgXCJBc2lhL1Rva3lvXCIsXG4gIFwiQXNpYS9Ub2t5b1wiLFxuICBcIkFzaWEvVG9reW9cIixcbiAgXCJBc2lhL1lha3V0c2tcIixcbiAgXCJBdXN0cmFsaWEvRGFyd2luXCIsXG4gIFwiQXVzdHJhbGlhL0FkZWxhaWRlXCIsXG4gIFwiQXVzdHJhbGlhL01lbGJvdXJuZVwiLFxuICBcIkF1c3RyYWxpYS9NZWxib3VybmVcIixcbiAgXCJBdXN0cmFsaWEvU3lkbmV5XCIsXG4gIFwiQXVzdHJhbGlhL0JyaXNiYW5lXCIsXG4gIFwiQXVzdHJhbGlhL0hvYmFydFwiLFxuICBcIkFzaWEvVmxhZGl2b3N0b2tcIixcbiAgXCJQYWNpZmljL0d1YW1cIixcbiAgXCJQYWNpZmljL1BvcnRfTW9yZXNieVwiLFxuICBcIkFzaWEvTWFnYWRhblwiLFxuICBcIkFzaWEvTWFnYWRhblwiLFxuICBcIlBhY2lmaWMvTm91bWVhXCIsXG4gIFwiUGFjaWZpYy9GaWppXCIsXG4gIFwiQXNpYS9LYW1jaGF0a2FcIixcbiAgXCJQYWNpZmljL01hanVyb1wiLFxuICBcIlBhY2lmaWMvQXVja2xhbmRcIixcbiAgXCJQYWNpZmljL0F1Y2tsYW5kXCIsXG4gIFwiUGFjaWZpYy9Ub25nYXRhcHVcIixcbiAgXCJQYWNpZmljL0Zha2FvZm9cIixcbiAgXCJQYWNpZmljL0FwaWFcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tOYW1lLm5hbWV9XCIsXG4gIFwiI3tDb21wYW55Lm5hbWV9XCJcbl07XG4iLCJ2YXIgYXBwID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGFwcDtcbmFwcC5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbmFwcC52ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKTtcbmFwcC5hdXRob3IgPSByZXF1aXJlKFwiLi9hdXRob3JcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlJlZGhvbGRcIixcbiAgXCJUcmVlZmxleFwiLFxuICBcIlRyaXBwbGVkZXhcIixcbiAgXCJLYW5sYW1cIixcbiAgXCJCaWd0YXhcIixcbiAgXCJEYWx0ZnJlc2hcIixcbiAgXCJUb3VnaGpveWZheFwiLFxuICBcIk1hdCBMYW0gVGFtXCIsXG4gIFwiT3Rjb21cIixcbiAgXCJUcmVzLVphcFwiLFxuICBcIlktU29sb3dhcm1cIixcbiAgXCJUcmVzb21cIixcbiAgXCJWb2x0c2lsbGFtXCIsXG4gIFwiQmlvZGV4XCIsXG4gIFwiR3JlZW5sYW1cIixcbiAgXCJWaXZhXCIsXG4gIFwiTWF0c29mdFwiLFxuICBcIlRlbXBcIixcbiAgXCJab29sYWJcIixcbiAgXCJTdWJpblwiLFxuICBcIlJhbmtcIixcbiAgXCJKb2JcIixcbiAgXCJTdHJpbmd0b3VnaFwiLFxuICBcIlRpblwiLFxuICBcIkl0XCIsXG4gIFwiSG9tZSBJbmdcIixcbiAgXCJaYW1pdFwiLFxuICBcIlNvbnNpbmdcIixcbiAgXCJLb25rbGFiXCIsXG4gIFwiQWxwaGFcIixcbiAgXCJMYXRsdXhcIixcbiAgXCJWb3lhdG91Y2hcIixcbiAgXCJBbHBoYXphcFwiLFxuICBcIkhvbGRsYW1pc1wiLFxuICBcIlphYW0tRG94XCIsXG4gIFwiU3ViLUV4XCIsXG4gIFwiUXVvIEx1eFwiLFxuICBcIkJhbWl0eVwiLFxuICBcIlZlbnRvc2FuemFwXCIsXG4gIFwiTG90c3RyaW5nXCIsXG4gIFwiSGF0aXR5XCIsXG4gIFwiVGVtcHNvZnRcIixcbiAgXCJPdmVyaG9sZFwiLFxuICBcIkZpeGZsZXhcIixcbiAgXCJLb25rbHV4XCIsXG4gIFwiWm9udHJheFwiLFxuICBcIlRhbXBmbGV4XCIsXG4gIFwiU3BhblwiLFxuICBcIk5hbWZpeFwiLFxuICBcIlRyYW5zY29mXCIsXG4gIFwiU3RpbVwiLFxuICBcIkZpeCBTYW5cIixcbiAgXCJTb25haXJcIixcbiAgXCJTdHJvbmdob2xkXCIsXG4gIFwiRmludG9uZVwiLFxuICBcIlktZmluZFwiLFxuICBcIk9wZWxhXCIsXG4gIFwiTG90bHV4XCIsXG4gIFwiUm9uc3RyaW5nXCIsXG4gIFwiWmF0aGluXCIsXG4gIFwiRHVvYmFtXCIsXG4gIFwiS2V5bGV4XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIjAuIy4jXCIsXG4gIFwiMC4jI1wiLFxuICBcIiMuIyNcIixcbiAgXCIjLiNcIixcbiAgXCIjLiMuI1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyMDExLTEwLTEyXCIsXG4gIFwiMjAxMi0xMS0xMlwiLFxuICBcIjIwMTUtMTEtMTFcIixcbiAgXCIyMDEzLTktMTJcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMTIzNC0yMTIxLTEyMjEtMTIxMVwiLFxuICBcIjEyMTItMTIyMS0xMTIxLTEyMzRcIixcbiAgXCIxMjExLTEyMjEtMTIzNC0yMjAxXCIsXG4gIFwiMTIyOC0xMjIxLTEyMjEtMTQzMVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJ2aXNhXCIsXG4gIFwibWFzdGVyY2FyZFwiLFxuICBcImFtZXJpY2FuZXhwcmVzc1wiLFxuICBcImRpc2NvdmVyXCJcbl07XG4iLCJ2YXIgYnVzaW5lc3MgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gYnVzaW5lc3M7XG5idXNpbmVzcy5jcmVkaXRfY2FyZF9udW1iZXJzID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRfbnVtYmVyc1wiKTtcbmJ1c2luZXNzLmNyZWRpdF9jYXJkX2V4cGlyeV9kYXRlcyA9IHJlcXVpcmUoXCIuL2NyZWRpdF9jYXJkX2V4cGlyeV9kYXRlc1wiKTtcbmJ1c2luZXNzLmNyZWRpdF9jYXJkX3R5cGVzID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRfdHlwZXNcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIiMjIy0jIyMtIyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyNcIlxuXTtcbiIsInZhciBjZWxsX3Bob25lID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNlbGxfcGhvbmU7XG5jZWxsX3Bob25lLmZvcm1hdHMgPSByZXF1aXJlKFwiLi9mb3JtYXRzXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJyZWRcIixcbiAgXCJncmVlblwiLFxuICBcImJsdWVcIixcbiAgXCJ5ZWxsb3dcIixcbiAgXCJwdXJwbGVcIixcbiAgXCJtaW50IGdyZWVuXCIsXG4gIFwidGVhbFwiLFxuICBcIndoaXRlXCIsXG4gIFwiYmxhY2tcIixcbiAgXCJvcmFuZ2VcIixcbiAgXCJwaW5rXCIsXG4gIFwiZ3JleVwiLFxuICBcIm1hcm9vblwiLFxuICBcInZpb2xldFwiLFxuICBcInR1cnF1b2lzZVwiLFxuICBcInRhblwiLFxuICBcInNreSBibHVlXCIsXG4gIFwic2FsbW9uXCIsXG4gIFwicGx1bVwiLFxuICBcIm9yY2hpZFwiLFxuICBcIm9saXZlXCIsXG4gIFwibWFnZW50YVwiLFxuICBcImxpbWVcIixcbiAgXCJpdm9yeVwiLFxuICBcImluZGlnb1wiLFxuICBcImdvbGRcIixcbiAgXCJmdWNoc2lhXCIsXG4gIFwiY3lhblwiLFxuICBcImF6dXJlXCIsXG4gIFwibGF2ZW5kZXJcIixcbiAgXCJzaWx2ZXJcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiQm9va3NcIixcbiAgXCJNb3ZpZXNcIixcbiAgXCJNdXNpY1wiLFxuICBcIkdhbWVzXCIsXG4gIFwiRWxlY3Ryb25pY3NcIixcbiAgXCJDb21wdXRlcnNcIixcbiAgXCJIb21lXCIsXG4gIFwiR2FyZGVuXCIsXG4gIFwiVG9vbHNcIixcbiAgXCJHcm9jZXJ5XCIsXG4gIFwiSGVhbHRoXCIsXG4gIFwiQmVhdXR5XCIsXG4gIFwiVG95c1wiLFxuICBcIktpZHNcIixcbiAgXCJCYWJ5XCIsXG4gIFwiQ2xvdGhpbmdcIixcbiAgXCJTaG9lc1wiLFxuICBcIkpld2VsZXJ5XCIsXG4gIFwiU3BvcnRzXCIsXG4gIFwiT3V0ZG9vcnNcIixcbiAgXCJBdXRvbW90aXZlXCIsXG4gIFwiSW5kdXN0cmlhbFwiXG5dO1xuIiwidmFyIGNvbW1lcmNlID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNvbW1lcmNlO1xuY29tbWVyY2UuY29sb3IgPSByZXF1aXJlKFwiLi9jb2xvclwiKTtcbmNvbW1lcmNlLmRlcGFydG1lbnQgPSByZXF1aXJlKFwiLi9kZXBhcnRtZW50XCIpO1xuY29tbWVyY2UucHJvZHVjdF9uYW1lID0gcmVxdWlyZShcIi4vcHJvZHVjdF9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgXCJhZGplY3RpdmVcIjogW1xuICAgIFwiU21hbGxcIixcbiAgICBcIkVyZ29ub21pY1wiLFxuICAgIFwiUnVzdGljXCIsXG4gICAgXCJJbnRlbGxpZ2VudFwiLFxuICAgIFwiR29yZ2VvdXNcIixcbiAgICBcIkluY3JlZGlibGVcIixcbiAgICBcIkZhbnRhc3RpY1wiLFxuICAgIFwiUHJhY3RpY2FsXCIsXG4gICAgXCJTbGVla1wiLFxuICAgIFwiQXdlc29tZVwiLFxuICAgIFwiR2VuZXJpY1wiLFxuICAgIFwiSGFuZGNyYWZ0ZWRcIixcbiAgICBcIkhhbmRtYWRlXCIsXG4gICAgXCJMaWNlbnNlZFwiLFxuICAgIFwiUmVmaW5lZFwiLFxuICAgIFwiVW5icmFuZGVkXCIsXG4gICAgXCJUYXN0eVwiXG4gIF0sXG4gIFwibWF0ZXJpYWxcIjogW1xuICAgIFwiU3RlZWxcIixcbiAgICBcIldvb2RlblwiLFxuICAgIFwiQ29uY3JldGVcIixcbiAgICBcIlBsYXN0aWNcIixcbiAgICBcIkNvdHRvblwiLFxuICAgIFwiR3Jhbml0ZVwiLFxuICAgIFwiUnViYmVyXCIsXG4gICAgXCJNZXRhbFwiLFxuICAgIFwiU29mdFwiLFxuICAgIFwiRnJlc2hcIixcbiAgICBcIkZyb3plblwiXG4gIF0sXG4gIFwicHJvZHVjdFwiOiBbXG4gICAgXCJDaGFpclwiLFxuICAgIFwiQ2FyXCIsXG4gICAgXCJDb21wdXRlclwiLFxuICAgIFwiS2V5Ym9hcmRcIixcbiAgICBcIk1vdXNlXCIsXG4gICAgXCJCaWtlXCIsXG4gICAgXCJCYWxsXCIsXG4gICAgXCJHbG92ZXNcIixcbiAgICBcIlBhbnRzXCIsXG4gICAgXCJTaGlydFwiLFxuICAgIFwiVGFibGVcIixcbiAgICBcIlNob2VzXCIsXG4gICAgXCJIYXRcIixcbiAgICBcIlRvd2Vsc1wiLFxuICAgIFwiU29hcFwiLFxuICAgIFwiVHVuYVwiLFxuICAgIFwiQ2hpY2tlblwiLFxuICAgIFwiRmlzaFwiLFxuICAgIFwiQ2hlZXNlXCIsXG4gICAgXCJCYWNvblwiLFxuICAgIFwiUGl6emFcIixcbiAgICBcIlNhbGFkXCIsXG4gICAgXCJTYXVzYWdlc1wiLFxuICAgIFwiQ2hpcHNcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBZGFwdGl2ZVwiLFxuICBcIkFkdmFuY2VkXCIsXG4gIFwiQW1lbGlvcmF0ZWRcIixcbiAgXCJBc3NpbWlsYXRlZFwiLFxuICBcIkF1dG9tYXRlZFwiLFxuICBcIkJhbGFuY2VkXCIsXG4gIFwiQnVzaW5lc3MtZm9jdXNlZFwiLFxuICBcIkNlbnRyYWxpemVkXCIsXG4gIFwiQ2xvbmVkXCIsXG4gIFwiQ29tcGF0aWJsZVwiLFxuICBcIkNvbmZpZ3VyYWJsZVwiLFxuICBcIkNyb3NzLWdyb3VwXCIsXG4gIFwiQ3Jvc3MtcGxhdGZvcm1cIixcbiAgXCJDdXN0b21lci1mb2N1c2VkXCIsXG4gIFwiQ3VzdG9taXphYmxlXCIsXG4gIFwiRGVjZW50cmFsaXplZFwiLFxuICBcIkRlLWVuZ2luZWVyZWRcIixcbiAgXCJEZXZvbHZlZFwiLFxuICBcIkRpZ2l0aXplZFwiLFxuICBcIkRpc3RyaWJ1dGVkXCIsXG4gIFwiRGl2ZXJzZVwiLFxuICBcIkRvd24tc2l6ZWRcIixcbiAgXCJFbmhhbmNlZFwiLFxuICBcIkVudGVycHJpc2Utd2lkZVwiLFxuICBcIkVyZ29ub21pY1wiLFxuICBcIkV4Y2x1c2l2ZVwiLFxuICBcIkV4cGFuZGVkXCIsXG4gIFwiRXh0ZW5kZWRcIixcbiAgXCJGYWNlIHRvIGZhY2VcIixcbiAgXCJGb2N1c2VkXCIsXG4gIFwiRnJvbnQtbGluZVwiLFxuICBcIkZ1bGx5LWNvbmZpZ3VyYWJsZVwiLFxuICBcIkZ1bmN0aW9uLWJhc2VkXCIsXG4gIFwiRnVuZGFtZW50YWxcIixcbiAgXCJGdXR1cmUtcHJvb2ZlZFwiLFxuICBcIkdyYXNzLXJvb3RzXCIsXG4gIFwiSG9yaXpvbnRhbFwiLFxuICBcIkltcGxlbWVudGVkXCIsXG4gIFwiSW5ub3ZhdGl2ZVwiLFxuICBcIkludGVncmF0ZWRcIixcbiAgXCJJbnR1aXRpdmVcIixcbiAgXCJJbnZlcnNlXCIsXG4gIFwiTWFuYWdlZFwiLFxuICBcIk1hbmRhdG9yeVwiLFxuICBcIk1vbml0b3JlZFwiLFxuICBcIk11bHRpLWNoYW5uZWxsZWRcIixcbiAgXCJNdWx0aS1sYXRlcmFsXCIsXG4gIFwiTXVsdGktbGF5ZXJlZFwiLFxuICBcIk11bHRpLXRpZXJlZFwiLFxuICBcIk5ldHdvcmtlZFwiLFxuICBcIk9iamVjdC1iYXNlZFwiLFxuICBcIk9wZW4tYXJjaGl0ZWN0ZWRcIixcbiAgXCJPcGVuLXNvdXJjZVwiLFxuICBcIk9wZXJhdGl2ZVwiLFxuICBcIk9wdGltaXplZFwiLFxuICBcIk9wdGlvbmFsXCIsXG4gIFwiT3JnYW5pY1wiLFxuICBcIk9yZ2FuaXplZFwiLFxuICBcIlBlcnNldmVyaW5nXCIsXG4gIFwiUGVyc2lzdGVudFwiLFxuICBcIlBoYXNlZFwiLFxuICBcIlBvbGFyaXNlZFwiLFxuICBcIlByZS1lbXB0aXZlXCIsXG4gIFwiUHJvYWN0aXZlXCIsXG4gIFwiUHJvZml0LWZvY3VzZWRcIixcbiAgXCJQcm9mb3VuZFwiLFxuICBcIlByb2dyYW1tYWJsZVwiLFxuICBcIlByb2dyZXNzaXZlXCIsXG4gIFwiUHVibGljLWtleVwiLFxuICBcIlF1YWxpdHktZm9jdXNlZFwiLFxuICBcIlJlYWN0aXZlXCIsXG4gIFwiUmVhbGlnbmVkXCIsXG4gIFwiUmUtY29udGV4dHVhbGl6ZWRcIixcbiAgXCJSZS1lbmdpbmVlcmVkXCIsXG4gIFwiUmVkdWNlZFwiLFxuICBcIlJldmVyc2UtZW5naW5lZXJlZFwiLFxuICBcIlJpZ2h0LXNpemVkXCIsXG4gIFwiUm9idXN0XCIsXG4gIFwiU2VhbWxlc3NcIixcbiAgXCJTZWN1cmVkXCIsXG4gIFwiU2VsZi1lbmFibGluZ1wiLFxuICBcIlNoYXJhYmxlXCIsXG4gIFwiU3RhbmQtYWxvbmVcIixcbiAgXCJTdHJlYW1saW5lZFwiLFxuICBcIlN3aXRjaGFibGVcIixcbiAgXCJTeW5jaHJvbmlzZWRcIixcbiAgXCJTeW5lcmdpc3RpY1wiLFxuICBcIlN5bmVyZ2l6ZWRcIixcbiAgXCJUZWFtLW9yaWVudGVkXCIsXG4gIFwiVG90YWxcIixcbiAgXCJUcmlwbGUtYnVmZmVyZWRcIixcbiAgXCJVbml2ZXJzYWxcIixcbiAgXCJVcC1zaXplZFwiLFxuICBcIlVwZ3JhZGFibGVcIixcbiAgXCJVc2VyLWNlbnRyaWNcIixcbiAgXCJVc2VyLWZyaWVuZGx5XCIsXG4gIFwiVmVyc2F0aWxlXCIsXG4gIFwiVmlydHVhbFwiLFxuICBcIlZpc2lvbmFyeVwiLFxuICBcIlZpc2lvbi1vcmllbnRlZFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJjbGlja3MtYW5kLW1vcnRhclwiLFxuICBcInZhbHVlLWFkZGVkXCIsXG4gIFwidmVydGljYWxcIixcbiAgXCJwcm9hY3RpdmVcIixcbiAgXCJyb2J1c3RcIixcbiAgXCJyZXZvbHV0aW9uYXJ5XCIsXG4gIFwic2NhbGFibGVcIixcbiAgXCJsZWFkaW5nLWVkZ2VcIixcbiAgXCJpbm5vdmF0aXZlXCIsXG4gIFwiaW50dWl0aXZlXCIsXG4gIFwic3RyYXRlZ2ljXCIsXG4gIFwiZS1idXNpbmVzc1wiLFxuICBcIm1pc3Npb24tY3JpdGljYWxcIixcbiAgXCJzdGlja3lcIixcbiAgXCJvbmUtdG8tb25lXCIsXG4gIFwiMjQvN1wiLFxuICBcImVuZC10by1lbmRcIixcbiAgXCJnbG9iYWxcIixcbiAgXCJCMkJcIixcbiAgXCJCMkNcIixcbiAgXCJncmFudWxhclwiLFxuICBcImZyaWN0aW9ubGVzc1wiLFxuICBcInZpcnR1YWxcIixcbiAgXCJ2aXJhbFwiLFxuICBcImR5bmFtaWNcIixcbiAgXCIyNC8zNjVcIixcbiAgXCJiZXN0LW9mLWJyZWVkXCIsXG4gIFwia2lsbGVyXCIsXG4gIFwibWFnbmV0aWNcIixcbiAgXCJibGVlZGluZy1lZGdlXCIsXG4gIFwid2ViLWVuYWJsZWRcIixcbiAgXCJpbnRlcmFjdGl2ZVwiLFxuICBcImRvdC1jb21cIixcbiAgXCJzZXh5XCIsXG4gIFwiYmFjay1lbmRcIixcbiAgXCJyZWFsLXRpbWVcIixcbiAgXCJlZmZpY2llbnRcIixcbiAgXCJmcm9udC1lbmRcIixcbiAgXCJkaXN0cmlidXRlZFwiLFxuICBcInNlYW1sZXNzXCIsXG4gIFwiZXh0ZW5zaWJsZVwiLFxuICBcInR1cm4ta2V5XCIsXG4gIFwid29ybGQtY2xhc3NcIixcbiAgXCJvcGVuLXNvdXJjZVwiLFxuICBcImNyb3NzLXBsYXRmb3JtXCIsXG4gIFwiY3Jvc3MtbWVkaWFcIixcbiAgXCJzeW5lcmdpc3RpY1wiLFxuICBcImJyaWNrcy1hbmQtY2xpY2tzXCIsXG4gIFwib3V0LW9mLXRoZS1ib3hcIixcbiAgXCJlbnRlcnByaXNlXCIsXG4gIFwiaW50ZWdyYXRlZFwiLFxuICBcImltcGFjdGZ1bFwiLFxuICBcIndpcmVsZXNzXCIsXG4gIFwidHJhbnNwYXJlbnRcIixcbiAgXCJuZXh0LWdlbmVyYXRpb25cIixcbiAgXCJjdXR0aW5nLWVkZ2VcIixcbiAgXCJ1c2VyLWNlbnRyaWNcIixcbiAgXCJ2aXNpb25hcnlcIixcbiAgXCJjdXN0b21pemVkXCIsXG4gIFwidWJpcXVpdG91c1wiLFxuICBcInBsdWctYW5kLXBsYXlcIixcbiAgXCJjb2xsYWJvcmF0aXZlXCIsXG4gIFwiY29tcGVsbGluZ1wiLFxuICBcImhvbGlzdGljXCIsXG4gIFwicmljaFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJzeW5lcmdpZXNcIixcbiAgXCJ3ZWItcmVhZGluZXNzXCIsXG4gIFwicGFyYWRpZ21zXCIsXG4gIFwibWFya2V0c1wiLFxuICBcInBhcnRuZXJzaGlwc1wiLFxuICBcImluZnJhc3RydWN0dXJlc1wiLFxuICBcInBsYXRmb3Jtc1wiLFxuICBcImluaXRpYXRpdmVzXCIsXG4gIFwiY2hhbm5lbHNcIixcbiAgXCJleWViYWxsc1wiLFxuICBcImNvbW11bml0aWVzXCIsXG4gIFwiUk9JXCIsXG4gIFwic29sdXRpb25zXCIsXG4gIFwiZS10YWlsZXJzXCIsXG4gIFwiZS1zZXJ2aWNlc1wiLFxuICBcImFjdGlvbi1pdGVtc1wiLFxuICBcInBvcnRhbHNcIixcbiAgXCJuaWNoZXNcIixcbiAgXCJ0ZWNobm9sb2dpZXNcIixcbiAgXCJjb250ZW50XCIsXG4gIFwidm9ydGFsc1wiLFxuICBcInN1cHBseS1jaGFpbnNcIixcbiAgXCJjb252ZXJnZW5jZVwiLFxuICBcInJlbGF0aW9uc2hpcHNcIixcbiAgXCJhcmNoaXRlY3R1cmVzXCIsXG4gIFwiaW50ZXJmYWNlc1wiLFxuICBcImUtbWFya2V0c1wiLFxuICBcImUtY29tbWVyY2VcIixcbiAgXCJzeXN0ZW1zXCIsXG4gIFwiYmFuZHdpZHRoXCIsXG4gIFwiaW5mb21lZGlhcmllc1wiLFxuICBcIm1vZGVsc1wiLFxuICBcIm1pbmRzaGFyZVwiLFxuICBcImRlbGl2ZXJhYmxlc1wiLFxuICBcInVzZXJzXCIsXG4gIFwic2NoZW1hc1wiLFxuICBcIm5ldHdvcmtzXCIsXG4gIFwiYXBwbGljYXRpb25zXCIsXG4gIFwibWV0cmljc1wiLFxuICBcImUtYnVzaW5lc3NcIixcbiAgXCJmdW5jdGlvbmFsaXRpZXNcIixcbiAgXCJleHBlcmllbmNlc1wiLFxuICBcIndlYiBzZXJ2aWNlc1wiLFxuICBcIm1ldGhvZG9sb2dpZXNcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaW1wbGVtZW50XCIsXG4gIFwidXRpbGl6ZVwiLFxuICBcImludGVncmF0ZVwiLFxuICBcInN0cmVhbWxpbmVcIixcbiAgXCJvcHRpbWl6ZVwiLFxuICBcImV2b2x2ZVwiLFxuICBcInRyYW5zZm9ybVwiLFxuICBcImVtYnJhY2VcIixcbiAgXCJlbmFibGVcIixcbiAgXCJvcmNoZXN0cmF0ZVwiLFxuICBcImxldmVyYWdlXCIsXG4gIFwicmVpbnZlbnRcIixcbiAgXCJhZ2dyZWdhdGVcIixcbiAgXCJhcmNoaXRlY3RcIixcbiAgXCJlbmhhbmNlXCIsXG4gIFwiaW5jZW50aXZpemVcIixcbiAgXCJtb3JwaFwiLFxuICBcImVtcG93ZXJcIixcbiAgXCJlbnZpc2lvbmVlclwiLFxuICBcIm1vbmV0aXplXCIsXG4gIFwiaGFybmVzc1wiLFxuICBcImZhY2lsaXRhdGVcIixcbiAgXCJzZWl6ZVwiLFxuICBcImRpc2ludGVybWVkaWF0ZVwiLFxuICBcInN5bmVyZ2l6ZVwiLFxuICBcInN0cmF0ZWdpemVcIixcbiAgXCJkZXBsb3lcIixcbiAgXCJicmFuZFwiLFxuICBcImdyb3dcIixcbiAgXCJ0YXJnZXRcIixcbiAgXCJzeW5kaWNhdGVcIixcbiAgXCJzeW50aGVzaXplXCIsXG4gIFwiZGVsaXZlclwiLFxuICBcIm1lc2hcIixcbiAgXCJpbmN1YmF0ZVwiLFxuICBcImVuZ2FnZVwiLFxuICBcIm1heGltaXplXCIsXG4gIFwiYmVuY2htYXJrXCIsXG4gIFwiZXhwZWRpdGVcIixcbiAgXCJyZWludGVybWVkaWF0ZVwiLFxuICBcIndoaXRlYm9hcmRcIixcbiAgXCJ2aXN1YWxpemVcIixcbiAgXCJyZXB1cnBvc2VcIixcbiAgXCJpbm5vdmF0ZVwiLFxuICBcInNjYWxlXCIsXG4gIFwidW5sZWFzaFwiLFxuICBcImRyaXZlXCIsXG4gIFwiZXh0ZW5kXCIsXG4gIFwiZW5naW5lZXJcIixcbiAgXCJyZXZvbHV0aW9uaXplXCIsXG4gIFwiZ2VuZXJhdGVcIixcbiAgXCJleHBsb2l0XCIsXG4gIFwidHJhbnNpdGlvblwiLFxuICBcImUtZW5hYmxlXCIsXG4gIFwiaXRlcmF0ZVwiLFxuICBcImN1bHRpdmF0ZVwiLFxuICBcIm1hdHJpeFwiLFxuICBcInByb2R1Y3RpemVcIixcbiAgXCJyZWRlZmluZVwiLFxuICBcInJlY29udGV4dHVhbGl6ZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyNCBob3VyXCIsXG4gIFwiMjQvN1wiLFxuICBcIjNyZCBnZW5lcmF0aW9uXCIsXG4gIFwiNHRoIGdlbmVyYXRpb25cIixcbiAgXCI1dGggZ2VuZXJhdGlvblwiLFxuICBcIjZ0aCBnZW5lcmF0aW9uXCIsXG4gIFwiYWN0dWF0aW5nXCIsXG4gIFwiYW5hbHl6aW5nXCIsXG4gIFwiYXN5bW1ldHJpY1wiLFxuICBcImFzeW5jaHJvbm91c1wiLFxuICBcImF0dGl0dWRlLW9yaWVudGVkXCIsXG4gIFwiYmFja2dyb3VuZFwiLFxuICBcImJhbmR3aWR0aC1tb25pdG9yZWRcIixcbiAgXCJiaS1kaXJlY3Rpb25hbFwiLFxuICBcImJpZnVyY2F0ZWRcIixcbiAgXCJib3R0b20tbGluZVwiLFxuICBcImNsZWFyLXRoaW5raW5nXCIsXG4gIFwiY2xpZW50LWRyaXZlblwiLFxuICBcImNsaWVudC1zZXJ2ZXJcIixcbiAgXCJjb2hlcmVudFwiLFxuICBcImNvaGVzaXZlXCIsXG4gIFwiY29tcG9zaXRlXCIsXG4gIFwiY29udGV4dC1zZW5zaXRpdmVcIixcbiAgXCJjb250ZXh0dWFsbHktYmFzZWRcIixcbiAgXCJjb250ZW50LWJhc2VkXCIsXG4gIFwiZGVkaWNhdGVkXCIsXG4gIFwiZGVtYW5kLWRyaXZlblwiLFxuICBcImRpZGFjdGljXCIsXG4gIFwiZGlyZWN0aW9uYWxcIixcbiAgXCJkaXNjcmV0ZVwiLFxuICBcImRpc2ludGVybWVkaWF0ZVwiLFxuICBcImR5bmFtaWNcIixcbiAgXCJlY28tY2VudHJpY1wiLFxuICBcImVtcG93ZXJpbmdcIixcbiAgXCJlbmNvbXBhc3NpbmdcIixcbiAgXCJldmVuLWtlZWxlZFwiLFxuICBcImV4ZWN1dGl2ZVwiLFxuICBcImV4cGxpY2l0XCIsXG4gIFwiZXh1ZGluZ1wiLFxuICBcImZhdWx0LXRvbGVyYW50XCIsXG4gIFwiZm9yZWdyb3VuZFwiLFxuICBcImZyZXNoLXRoaW5raW5nXCIsXG4gIFwiZnVsbC1yYW5nZVwiLFxuICBcImdsb2JhbFwiLFxuICBcImdyaWQtZW5hYmxlZFwiLFxuICBcImhldXJpc3RpY1wiLFxuICBcImhpZ2gtbGV2ZWxcIixcbiAgXCJob2xpc3RpY1wiLFxuICBcImhvbW9nZW5lb3VzXCIsXG4gIFwiaHVtYW4tcmVzb3VyY2VcIixcbiAgXCJoeWJyaWRcIixcbiAgXCJpbXBhY3RmdWxcIixcbiAgXCJpbmNyZW1lbnRhbFwiLFxuICBcImludGFuZ2libGVcIixcbiAgXCJpbnRlcmFjdGl2ZVwiLFxuICBcImludGVybWVkaWF0ZVwiLFxuICBcImxlYWRpbmcgZWRnZVwiLFxuICBcImxvY2FsXCIsXG4gIFwibG9naXN0aWNhbFwiLFxuICBcIm1heGltaXplZFwiLFxuICBcIm1ldGhvZGljYWxcIixcbiAgXCJtaXNzaW9uLWNyaXRpY2FsXCIsXG4gIFwibW9iaWxlXCIsXG4gIFwibW9kdWxhclwiLFxuICBcIm1vdGl2YXRpbmdcIixcbiAgXCJtdWx0aW1lZGlhXCIsXG4gIFwibXVsdGktc3RhdGVcIixcbiAgXCJtdWx0aS10YXNraW5nXCIsXG4gIFwibmF0aW9uYWxcIixcbiAgXCJuZWVkcy1iYXNlZFwiLFxuICBcIm5ldXRyYWxcIixcbiAgXCJuZXh0IGdlbmVyYXRpb25cIixcbiAgXCJub24tdm9sYXRpbGVcIixcbiAgXCJvYmplY3Qtb3JpZW50ZWRcIixcbiAgXCJvcHRpbWFsXCIsXG4gIFwib3B0aW1pemluZ1wiLFxuICBcInJhZGljYWxcIixcbiAgXCJyZWFsLXRpbWVcIixcbiAgXCJyZWNpcHJvY2FsXCIsXG4gIFwicmVnaW9uYWxcIixcbiAgXCJyZXNwb25zaXZlXCIsXG4gIFwic2NhbGFibGVcIixcbiAgXCJzZWNvbmRhcnlcIixcbiAgXCJzb2x1dGlvbi1vcmllbnRlZFwiLFxuICBcInN0YWJsZVwiLFxuICBcInN0YXRpY1wiLFxuICBcInN5c3RlbWF0aWNcIixcbiAgXCJzeXN0ZW1pY1wiLFxuICBcInN5c3RlbS13b3J0aHlcIixcbiAgXCJ0YW5naWJsZVwiLFxuICBcInRlcnRpYXJ5XCIsXG4gIFwidHJhbnNpdGlvbmFsXCIsXG4gIFwidW5pZm9ybVwiLFxuICBcInVwd2FyZC10cmVuZGluZ1wiLFxuICBcInVzZXItZmFjaW5nXCIsXG4gIFwidmFsdWUtYWRkZWRcIixcbiAgXCJ3ZWItZW5hYmxlZFwiLFxuICBcIndlbGwtbW9kdWxhdGVkXCIsXG4gIFwiemVybyBhZG1pbmlzdHJhdGlvblwiLFxuICBcInplcm8gZGVmZWN0XCIsXG4gIFwiemVybyB0b2xlcmFuY2VcIlxuXTtcbiIsInZhciBjb21wYW55ID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGNvbXBhbnk7XG5jb21wYW55LnN1ZmZpeCA9IHJlcXVpcmUoXCIuL3N1ZmZpeFwiKTtcbmNvbXBhbnkuYWRqZWN0aXZlID0gcmVxdWlyZShcIi4vYWRqZWN0aXZlXCIpO1xuY29tcGFueS5kZXNjcmlwdG9yID0gcmVxdWlyZShcIi4vZGVzY3JpcHRvclwiKTtcbmNvbXBhbnkubm91biA9IHJlcXVpcmUoXCIuL25vdW5cIik7XG5jb21wYW55LmJzX3ZlcmIgPSByZXF1aXJlKFwiLi9ic192ZXJiXCIpO1xuY29tcGFueS5ic19hZGplY3RpdmUgPSByZXF1aXJlKFwiLi9ic19hZGplY3RpdmVcIik7XG5jb21wYW55LmJzX25vdW4gPSByZXF1aXJlKFwiLi9ic19ub3VuXCIpO1xuY29tcGFueS5uYW1lID0gcmVxdWlyZShcIi4vbmFtZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0gI3tzdWZmaXh9XCIsXG4gIFwiI3tOYW1lLmxhc3RfbmFtZX0tI3tOYW1lLmxhc3RfbmFtZX1cIixcbiAgXCIje05hbWUubGFzdF9uYW1lfSwgI3tOYW1lLmxhc3RfbmFtZX0gYW5kICN7TmFtZS5sYXN0X25hbWV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFiaWxpdHlcIixcbiAgXCJhY2Nlc3NcIixcbiAgXCJhZGFwdGVyXCIsXG4gIFwiYWxnb3JpdGhtXCIsXG4gIFwiYWxsaWFuY2VcIixcbiAgXCJhbmFseXplclwiLFxuICBcImFwcGxpY2F0aW9uXCIsXG4gIFwiYXBwcm9hY2hcIixcbiAgXCJhcmNoaXRlY3R1cmVcIixcbiAgXCJhcmNoaXZlXCIsXG4gIFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIixcbiAgXCJhcnJheVwiLFxuICBcImF0dGl0dWRlXCIsXG4gIFwiYmVuY2htYXJrXCIsXG4gIFwiYnVkZ2V0YXJ5IG1hbmFnZW1lbnRcIixcbiAgXCJjYXBhYmlsaXR5XCIsXG4gIFwiY2FwYWNpdHlcIixcbiAgXCJjaGFsbGVuZ2VcIixcbiAgXCJjaXJjdWl0XCIsXG4gIFwiY29sbGFib3JhdGlvblwiLFxuICBcImNvbXBsZXhpdHlcIixcbiAgXCJjb25jZXB0XCIsXG4gIFwiY29uZ2xvbWVyYXRpb25cIixcbiAgXCJjb250aW5nZW5jeVwiLFxuICBcImNvcmVcIixcbiAgXCJjdXN0b21lciBsb3lhbHR5XCIsXG4gIFwiZGF0YWJhc2VcIixcbiAgXCJkYXRhLXdhcmVob3VzZVwiLFxuICBcImRlZmluaXRpb25cIixcbiAgXCJlbXVsYXRpb25cIixcbiAgXCJlbmNvZGluZ1wiLFxuICBcImVuY3J5cHRpb25cIixcbiAgXCJleHRyYW5ldFwiLFxuICBcImZpcm13YXJlXCIsXG4gIFwiZmxleGliaWxpdHlcIixcbiAgXCJmb2N1cyBncm91cFwiLFxuICBcImZvcmVjYXN0XCIsXG4gIFwiZnJhbWVcIixcbiAgXCJmcmFtZXdvcmtcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcImZ1bmN0aW9uYWxpdGllc1wiLFxuICBcIkdyYXBoaWMgSW50ZXJmYWNlXCIsXG4gIFwiZ3JvdXB3YXJlXCIsXG4gIFwiR3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlXCIsXG4gIFwiaGFyZHdhcmVcIixcbiAgXCJoZWxwLWRlc2tcIixcbiAgXCJoaWVyYXJjaHlcIixcbiAgXCJodWJcIixcbiAgXCJpbXBsZW1lbnRhdGlvblwiLFxuICBcImluZm8tbWVkaWFyaWVzXCIsXG4gIFwiaW5mcmFzdHJ1Y3R1cmVcIixcbiAgXCJpbml0aWF0aXZlXCIsXG4gIFwiaW5zdGFsbGF0aW9uXCIsXG4gIFwiaW5zdHJ1Y3Rpb24gc2V0XCIsXG4gIFwiaW50ZXJmYWNlXCIsXG4gIFwiaW50ZXJuZXQgc29sdXRpb25cIixcbiAgXCJpbnRyYW5ldFwiLFxuICBcImtub3dsZWRnZSB1c2VyXCIsXG4gIFwia25vd2xlZGdlIGJhc2VcIixcbiAgXCJsb2NhbCBhcmVhIG5ldHdvcmtcIixcbiAgXCJsZXZlcmFnZVwiLFxuICBcIm1hdHJpY2VzXCIsXG4gIFwibWF0cml4XCIsXG4gIFwibWV0aG9kb2xvZ3lcIixcbiAgXCJtaWRkbGV3YXJlXCIsXG4gIFwibWlncmF0aW9uXCIsXG4gIFwibW9kZWxcIixcbiAgXCJtb2RlcmF0b3JcIixcbiAgXCJtb25pdG9yaW5nXCIsXG4gIFwibW9yYXRvcml1bVwiLFxuICBcIm5ldXJhbC1uZXRcIixcbiAgXCJvcGVuIGFyY2hpdGVjdHVyZVwiLFxuICBcIm9wZW4gc3lzdGVtXCIsXG4gIFwib3JjaGVzdHJhdGlvblwiLFxuICBcInBhcmFkaWdtXCIsXG4gIFwicGFyYWxsZWxpc21cIixcbiAgXCJwb2xpY3lcIixcbiAgXCJwb3J0YWxcIixcbiAgXCJwcmljaW5nIHN0cnVjdHVyZVwiLFxuICBcInByb2Nlc3MgaW1wcm92ZW1lbnRcIixcbiAgXCJwcm9kdWN0XCIsXG4gIFwicHJvZHVjdGl2aXR5XCIsXG4gIFwicHJvamVjdFwiLFxuICBcInByb2plY3Rpb25cIixcbiAgXCJwcm90b2NvbFwiLFxuICBcInNlY3VyZWQgbGluZVwiLFxuICBcInNlcnZpY2UtZGVza1wiLFxuICBcInNvZnR3YXJlXCIsXG4gIFwic29sdXRpb25cIixcbiAgXCJzdGFuZGFyZGl6YXRpb25cIixcbiAgXCJzdHJhdGVneVwiLFxuICBcInN0cnVjdHVyZVwiLFxuICBcInN1Y2Nlc3NcIixcbiAgXCJzdXBlcnN0cnVjdHVyZVwiLFxuICBcInN1cHBvcnRcIixcbiAgXCJzeW5lcmd5XCIsXG4gIFwic3lzdGVtIGVuZ2luZVwiLFxuICBcInRhc2stZm9yY2VcIixcbiAgXCJ0aHJvdWdocHV0XCIsXG4gIFwidGltZS1mcmFtZVwiLFxuICBcInRvb2xzZXRcIixcbiAgXCJ1dGlsaXNhdGlvblwiLFxuICBcIndlYnNpdGVcIixcbiAgXCJ3b3JrZm9yY2VcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiSW5jXCIsXG4gIFwiYW5kIFNvbnNcIixcbiAgXCJMTENcIixcbiAgXCJHcm91cFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzQjIy0jIyMjIyMtIyMjI0wvXCIsXG4gIFwiLzM3IyMtIyMjIyMjLSMjIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzBbMC01XSMtIyMjIyMjLSMjI0wvXCIsXG4gIFwiLzM2OCMtIyMjIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82MDExLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NSMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NFs0LTldIy0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvNjAxMS02MiMjLSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NSMjLTYyIyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY0WzQtOV0jLTYyIyMtIyMjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJ2YXIgY3JlZGl0X2NhcmQgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gY3JlZGl0X2NhcmQ7XG5jcmVkaXRfY2FyZC52aXNhID0gcmVxdWlyZShcIi4vdmlzYVwiKTtcbmNyZWRpdF9jYXJkLm1hc3RlcmNhcmQgPSByZXF1aXJlKFwiLi9tYXN0ZXJjYXJkXCIpO1xuY3JlZGl0X2NhcmQuZGlzY292ZXIgPSByZXF1aXJlKFwiLi9kaXNjb3ZlclwiKTtcbmNyZWRpdF9jYXJkLmFtZXJpY2FuX2V4cHJlc3MgPSByZXF1aXJlKFwiLi9hbWVyaWNhbl9leHByZXNzXCIpO1xuY3JlZGl0X2NhcmQuZGluZXJzX2NsdWIgPSByZXF1aXJlKFwiLi9kaW5lcnNfY2x1YlwiKTtcbmNyZWRpdF9jYXJkLmpjYiA9IHJlcXVpcmUoXCIuL2pjYlwiKTtcbmNyZWRpdF9jYXJkLnN3aXRjaCA9IHJlcXVpcmUoXCIuL3N3aXRjaFwiKTtcbmNyZWRpdF9jYXJkLnNvbG8gPSByZXF1aXJlKFwiLi9zb2xvXCIpO1xuY3JlZGl0X2NhcmQubWFlc3RybyA9IHJlcXVpcmUoXCIuL21hZXN0cm9cIik7XG5jcmVkaXRfY2FyZC5sYXNlciA9IHJlcXVpcmUoXCIuL2xhc2VyXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvMzUyOC0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvMzUyOS0jIyMjLSMjIyMtIyMjTC9cIixcbiAgXCIvMzVbMy04XSMtIyMjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82MzA0IyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzA2IyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzcxIyMjIyMjIyMjIyNML1wiLFxuICBcIi82NzA5IyMjIyMjIyMjIyNML1wiLFxuICBcIi82MzA0IyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzA2IyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzcxIyMjIyMjIyMjezUsNn1ML1wiLFxuICBcIi82NzA5IyMjIyMjIyMjezUsNn1ML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNTAjezksMTZ9TC9cIixcbiAgXCIvNVs2LThdI3s5LDE2fUwvXCIsXG4gIFwiLzU2IyN7OSwxNn1ML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNVsxLTVdIyMtIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY3NzEtODkjIy0jIyMjLSMjI0wvXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIi82NzY3LSMjIyMtIyMjIy0jIyNML1wiLFxuICBcIi82NzY3LSMjIyMtIyMjIy0jIyMjLSNML1wiLFxuICBcIi82NzY3LSMjIyMtIyMjIy0jIyMjLSMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjI0wvXCIsXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjIyMtI0wvXCIsXG4gIFwiLzY3NTktIyMjIy0jIyMjLSMjIyMtIyNML1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIvNCMjIyMjIyMjIyMjTC9cIixcbiAgXCIvNCMjIy0jIyMjLSMjIyMtIyMjTC9cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwidXRmOF91bmljb2RlX2NpXCIsXG4gIFwidXRmOF9nZW5lcmFsX2NpXCIsXG4gIFwidXRmOF9iaW5cIixcbiAgXCJhc2NpaV9iaW5cIixcbiAgXCJhc2NpaV9nZW5lcmFsX2NpXCIsXG4gIFwiY3AxMjUwX2JpblwiLFxuICBcImNwMTI1MF9nZW5lcmFsX2NpXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImlkXCIsXG4gIFwidGl0bGVcIixcbiAgXCJuYW1lXCIsXG4gIFwiZW1haWxcIixcbiAgXCJwaG9uZVwiLFxuICBcInRva2VuXCIsXG4gIFwiZ3JvdXBcIixcbiAgXCJjYXRlZ29yeVwiLFxuICBcInBhc3N3b3JkXCIsXG4gIFwiY29tbWVudFwiLFxuICBcImF2YXRhclwiLFxuICBcInN0YXR1c1wiLFxuICBcImNyZWF0ZWRBdFwiLFxuICBcInVwZGF0ZWRBdFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJJbm5vREJcIixcbiAgXCJNeUlTQU1cIixcbiAgXCJNRU1PUllcIixcbiAgXCJDU1ZcIixcbiAgXCJCTEFDS0hPTEVcIixcbiAgXCJBUkNISVZFXCJcbl07XG4iLCJ2YXIgZGF0YWJhc2UgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZGF0YWJhc2U7XG5kYXRhYmFzZS5jb2xsYXRpb24gPSByZXF1aXJlKFwiLi9jb2xsYXRpb25cIik7XG5kYXRhYmFzZS5jb2x1bW4gPSByZXF1aXJlKFwiLi9jb2x1bW5cIik7XG5kYXRhYmFzZS5lbmdpbmUgPSByZXF1aXJlKFwiLi9lbmdpbmVcIik7XG5kYXRhYmFzZS50eXBlID0gcmVxdWlyZShcIi4vdHlwZVwiKTsiLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImludFwiLFxuICBcInZhcmNoYXJcIixcbiAgXCJ0ZXh0XCIsXG4gIFwiZGF0ZVwiLFxuICBcImRhdGV0aW1lXCIsXG4gIFwidGlueWludFwiLFxuICBcInRpbWVcIixcbiAgXCJ0aW1lc3RhbXBcIixcbiAgXCJzbWFsbGludFwiLFxuICBcIm1lZGl1bWludFwiLFxuICBcImJpZ2ludFwiLFxuICBcImRlY2ltYWxcIixcbiAgXCJmbG9hdFwiLFxuICBcImRvdWJsZVwiLFxuICBcInJlYWxcIixcbiAgXCJiaXRcIixcbiAgXCJib29sZWFuXCIsXG4gIFwic2VyaWFsXCIsXG4gIFwiYmxvYlwiLFxuICBcImJpbmFyeVwiLFxuICBcImVudW1cIixcbiAgXCJzZXRcIixcbiAgXCJnZW9tZXRyeVwiLFxuICBcInBvaW50XCJcbl07XG4iLCJ2YXIgZGF0ZSA9IHt9O1xubW9kdWxlW1wiZXhwb3J0c1wiXSA9IGRhdGU7XG5kYXRlLm1vbnRoID0gcmVxdWlyZShcIi4vbW9udGhcIik7XG5kYXRlLndlZWtkYXkgPSByZXF1aXJlKFwiLi93ZWVrZGF5XCIpO1xuIiwiLy8gU291cmNlOiBodHRwOi8vdW5pY29kZS5vcmcvY2xkci90cmFjL2Jyb3dzZXIvdGFncy9yZWxlYXNlLTI3L2NvbW1vbi9tYWluL2VuLnhtbCNMMTc5OVxubW9kdWxlW1wiZXhwb3J0c1wiXSA9IHtcbiAgd2lkZTogW1xuICAgIFwiSmFudWFyeVwiLFxuICAgIFwiRmVicnVhcnlcIixcbiAgICBcIk1hcmNoXCIsXG4gICAgXCJBcHJpbFwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5lXCIsXG4gICAgXCJKdWx5XCIsXG4gICAgXCJBdWd1c3RcIixcbiAgICBcIlNlcHRlbWJlclwiLFxuICAgIFwiT2N0b2JlclwiLFxuICAgIFwiTm92ZW1iZXJcIixcbiAgICBcIkRlY2VtYmVyXCJcbiAgXSxcbiAgLy8gUHJvcGVydHkgXCJ3aWRlX2NvbnRleHRcIiBpcyBvcHRpb25hbCwgaWYgbm90IHNldCB0aGVuIFwid2lkZVwiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gIC8vIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdvcmQgaW4gY29udGV4dCwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIGEgc3RhbmQtYWxvbmUgd29yZFxuICB3aWRlX2NvbnRleHQ6IFtcbiAgICBcIkphbnVhcnlcIixcbiAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgXCJNYXJjaFwiLFxuICAgIFwiQXByaWxcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuZVwiLFxuICAgIFwiSnVseVwiLFxuICAgIFwiQXVndXN0XCIsXG4gICAgXCJTZXB0ZW1iZXJcIixcbiAgICBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsXG4gICAgXCJEZWNlbWJlclwiXG4gIF0sXG4gIGFiYnI6IFtcbiAgICBcIkphblwiLFxuICAgIFwiRmViXCIsXG4gICAgXCJNYXJcIixcbiAgICBcIkFwclwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5cIixcbiAgICBcIkp1bFwiLFxuICAgIFwiQXVnXCIsXG4gICAgXCJTZXBcIixcbiAgICBcIk9jdFwiLFxuICAgIFwiTm92XCIsXG4gICAgXCJEZWNcIlxuICBdLFxuICAvLyBQcm9wZXJ0eSBcImFiYnJfY29udGV4dFwiIGlzIG9wdGlvbmFsLCBpZiBub3Qgc2V0IHRoZW4gXCJhYmJyXCIgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgLy8gSXQgaXMgdXNlZCB0byBzcGVjaWZ5IGEgd29yZCBpbiBjb250ZXh0LCB3aGljaCBtYXkgZGlmZmVyIGZyb20gYSBzdGFuZC1hbG9uZSB3b3JkXG4gIGFiYnJfY29udGV4dDogW1xuICAgIFwiSmFuXCIsXG4gICAgXCJGZWJcIixcbiAgICBcIk1hclwiLFxuICAgIFwiQXByXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1blwiLFxuICAgIFwiSnVsXCIsXG4gICAgXCJBdWdcIixcbiAgICBcIlNlcFwiLFxuICAgIFwiT2N0XCIsXG4gICAgXCJOb3ZcIixcbiAgICBcIkRlY1wiXG4gIF1cbn07XG4iLCIvLyBTb3VyY2U6IGh0dHA6Ly91bmljb2RlLm9yZy9jbGRyL3RyYWMvYnJvd3Nlci90YWdzL3JlbGVhc2UtMjcvY29tbW9uL21haW4vZW4ueG1sI0wxODQ3XG5tb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICB3aWRlOiBbXG4gICAgXCJTdW5kYXlcIixcbiAgICBcIk1vbmRheVwiLFxuICAgIFwiVHVlc2RheVwiLFxuICAgIFwiV2VkbmVzZGF5XCIsXG4gICAgXCJUaHVyc2RheVwiLFxuICAgIFwiRnJpZGF5XCIsXG4gICAgXCJTYXR1cmRheVwiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwid2lkZV9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcIndpZGVcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgd2lkZV9jb250ZXh0OiBbXG4gICAgXCJTdW5kYXlcIixcbiAgICBcIk1vbmRheVwiLFxuICAgIFwiVHVlc2RheVwiLFxuICAgIFwiV2VkbmVzZGF5XCIsXG4gICAgXCJUaHVyc2RheVwiLFxuICAgIFwiRnJpZGF5XCIsXG4gICAgXCJTYXR1cmRheVwiXG4gIF0sXG4gIGFiYnI6IFtcbiAgICBcIlN1blwiLFxuICAgIFwiTW9uXCIsXG4gICAgXCJUdWVcIixcbiAgICBcIldlZFwiLFxuICAgIFwiVGh1XCIsXG4gICAgXCJGcmlcIixcbiAgICBcIlNhdFwiXG4gIF0sXG4gIC8vIFByb3BlcnR5IFwiYWJicl9jb250ZXh0XCIgaXMgb3B0aW9uYWwsIGlmIG5vdCBzZXQgdGhlbiBcImFiYnJcIiB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAvLyBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3b3JkIGluIGNvbnRleHQsIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBhIHN0YW5kLWFsb25lIHdvcmRcbiAgYWJicl9jb250ZXh0OiBbXG4gICAgXCJTdW5cIixcbiAgICBcIk1vblwiLFxuICAgIFwiVHVlXCIsXG4gICAgXCJXZWRcIixcbiAgICBcIlRodVwiLFxuICAgIFwiRnJpXCIsXG4gICAgXCJTYXRcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJDaGVja2luZ1wiLFxuICBcIlNhdmluZ3NcIixcbiAgXCJNb25leSBNYXJrZXRcIixcbiAgXCJJbnZlc3RtZW50XCIsXG4gIFwiSG9tZSBMb2FuXCIsXG4gIFwiQ3JlZGl0IENhcmRcIixcbiAgXCJBdXRvIExvYW5cIixcbiAgXCJQZXJzb25hbCBMb2FuXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0ge1xuICBcIlVBRSBEaXJoYW1cIjoge1xuICAgIFwiY29kZVwiOiBcIkFFRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJBZmdoYW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJBRk5cIixcbiAgICBcInN5bWJvbFwiOiBcItiLXCJcbiAgfSxcbiAgXCJMZWtcIjoge1xuICAgIFwiY29kZVwiOiBcIkFMTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTGVrXCJcbiAgfSxcbiAgXCJBcm1lbmlhbiBEcmFtXCI6IHtcbiAgICBcImNvZGVcIjogXCJBTURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTmV0aGVybGFuZHMgQW50aWxsaWFuIEd1aWxkZXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkFOR1wiLFxuICAgIFwic3ltYm9sXCI6IFwixpJcIlxuICB9LFxuICBcIkt3YW56YVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQU9BXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkFyZ2VudGluZSBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJBUlNcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkF1c3RyYWxpYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJBVURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkFydWJhbiBHdWlsZGVyXCI6IHtcbiAgICBcImNvZGVcIjogXCJBV0dcIixcbiAgICBcInN5bWJvbFwiOiBcIsaSXCJcbiAgfSxcbiAgXCJBemVyYmFpamFuaWFuIE1hbmF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJBWk5cIixcbiAgICBcInN5bWJvbFwiOiBcItC80LDQvVwiXG4gIH0sXG4gIFwiQ29udmVydGlibGUgTWFya3NcIjoge1xuICAgIFwiY29kZVwiOiBcIkJBTVwiLFxuICAgIFwic3ltYm9sXCI6IFwiS01cIlxuICB9LFxuICBcIkJhcmJhZG9zIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkJEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJUYWthXCI6IHtcbiAgICBcImNvZGVcIjogXCJCRFRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQnVsZ2FyaWFuIExldlwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkdOXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJCYWhyYWluaSBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQkhEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkJ1cnVuZGkgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkJJRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJCZXJtdWRpYW4gRG9sbGFyIChjdXN0b21hcmlseSBrbm93biBhcyBCZXJtdWRhIERvbGxhcilcIjoge1xuICAgIFwiY29kZVwiOiBcIkJNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQnJ1bmVpIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQk5EXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJCb2xpdmlhbm8gTXZkb2xcIjoge1xuICAgIFwiY29kZVwiOiBcIkJPQiBCT1ZcIixcbiAgICBcInN5bWJvbFwiOiBcIiRiXCJcbiAgfSxcbiAgXCJCcmF6aWxpYW4gUmVhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQlJMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSJFwiXG4gIH0sXG4gIFwiQmFoYW1pYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJCU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlB1bGFcIjoge1xuICAgIFwiY29kZVwiOiBcIkJXUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiUFwiXG4gIH0sXG4gIFwiQmVsYXJ1c3NpYW4gUnVibGVcIjoge1xuICAgIFwiY29kZVwiOiBcIkJZUlwiLFxuICAgIFwic3ltYm9sXCI6IFwicC5cIlxuICB9LFxuICBcIkJlbGl6ZSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkJaRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiQlokXCJcbiAgfSxcbiAgXCJDYW5hZGlhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkNBRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiQ29uZ29sZXNlIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJDREZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU3dpc3MgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkNIRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiQ0hGXCJcbiAgfSxcbiAgXCJDaGlsZWFuIFBlc28gVW5pZGFkZXMgZGUgZm9tZW50b1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ0xQIENMRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiWXVhbiBSZW5taW5iaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiQ05ZXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCpVwiXG4gIH0sXG4gIFwiQ29sb21iaWFuIFBlc28gVW5pZGFkIGRlIFZhbG9yIFJlYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIkNPUCBDT1VcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkNvc3RhIFJpY2FuIENvbG9uXCI6IHtcbiAgICBcImNvZGVcIjogXCJDUkNcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCoVwiXG4gIH0sXG4gIFwiQ3ViYW4gUGVzbyBQZXNvIENvbnZlcnRpYmxlXCI6IHtcbiAgICBcImNvZGVcIjogXCJDVVAgQ1VDXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigrFcIlxuICB9LFxuICBcIkNhcGUgVmVyZGUgRXNjdWRvXCI6IHtcbiAgICBcImNvZGVcIjogXCJDVkVcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ3plY2ggS29ydW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJDWktcIixcbiAgICBcInN5bWJvbFwiOiBcIkvEjVwiXG4gIH0sXG4gIFwiRGppYm91dGkgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIkRKRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJEYW5pc2ggS3JvbmVcIjoge1xuICAgIFwiY29kZVwiOiBcIkRLS1wiLFxuICAgIFwic3ltYm9sXCI6IFwia3JcIlxuICB9LFxuICBcIkRvbWluaWNhbiBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJET1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlJEJFwiXG4gIH0sXG4gIFwiQWxnZXJpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkRaRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJLcm9vblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRUVLXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkVneXB0aWFuIFBvdW5kXCI6IHtcbiAgICBcImNvZGVcIjogXCJFR1BcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJOYWtmYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiRVJOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkV0aGlvcGlhbiBCaXJyXCI6IHtcbiAgICBcImNvZGVcIjogXCJFVEJcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRXVyb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiRVVSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqxcIlxuICB9LFxuICBcIkZpamkgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJGSkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkZhbGtsYW5kIElzbGFuZHMgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIkZLUFwiLFxuICAgIFwic3ltYm9sXCI6IFwiwqNcIlxuICB9LFxuICBcIlBvdW5kIFN0ZXJsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJHQlBcIixcbiAgICBcInN5bWJvbFwiOiBcIsKjXCJcbiAgfSxcbiAgXCJMYXJpXCI6IHtcbiAgICBcImNvZGVcIjogXCJHRUxcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ2VkaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0hTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkdpYnJhbHRhciBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR0lQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiRGFsYXNpXCI6IHtcbiAgICBcImNvZGVcIjogXCJHTURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiR3VpbmVhIEZyYW5jXCI6IHtcbiAgICBcImNvZGVcIjogXCJHTkZcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUXVldHphbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiR1RRXCIsXG4gICAgXCJzeW1ib2xcIjogXCJRXCJcbiAgfSxcbiAgXCJHdXlhbmEgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJHWURcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkhvbmcgS29uZyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkhLRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiTGVtcGlyYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSE5MXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMXCJcbiAgfSxcbiAgXCJDcm9hdGlhbiBLdW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJIUktcIixcbiAgICBcInN5bWJvbFwiOiBcImtuXCJcbiAgfSxcbiAgXCJHb3VyZGUgVVMgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJIVEcgVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkZvcmludFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSFVGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJGdFwiXG4gIH0sXG4gIFwiUnVwaWFoXCI6IHtcbiAgICBcImNvZGVcIjogXCJJRFJcIixcbiAgICBcInN5bWJvbFwiOiBcIlJwXCJcbiAgfSxcbiAgXCJOZXcgSXNyYWVsaSBTaGVxZWxcIjoge1xuICAgIFwiY29kZVwiOiBcIklMU1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKqXCJcbiAgfSxcbiAgXCJJbmRpYW4gUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIklOUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJJbmRpYW4gUnVwZWUgTmd1bHRydW1cIjoge1xuICAgIFwiY29kZVwiOiBcIklOUiBCVE5cIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSXJhcWkgRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIklRRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJJcmFuaWFuIFJpYWxcIjoge1xuICAgIFwiY29kZVwiOiBcIklSUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi77e8XCJcbiAgfSxcbiAgXCJJY2VsYW5kIEtyb25hXCI6IHtcbiAgICBcImNvZGVcIjogXCJJU0tcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJKYW1haWNhbiBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIkpNRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiSiRcIlxuICB9LFxuICBcIkpvcmRhbmlhbiBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSk9EXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlllblwiOiB7XG4gICAgXCJjb2RlXCI6IFwiSlBZXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCpVwiXG4gIH0sXG4gIFwiS2VueWFuIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJLRVNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiU29tXCI6IHtcbiAgICBcImNvZGVcIjogXCJLR1NcIixcbiAgICBcInN5bWJvbFwiOiBcItC70LJcIlxuICB9LFxuICBcIlJpZWxcIjoge1xuICAgIFwiY29kZVwiOiBcIktIUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4Z+bXCJcbiAgfSxcbiAgXCJDb21vcm8gRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIktNRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJOb3J0aCBLb3JlYW4gV29uXCI6IHtcbiAgICBcImNvZGVcIjogXCJLUFdcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqVwiXG4gIH0sXG4gIFwiV29uXCI6IHtcbiAgICBcImNvZGVcIjogXCJLUldcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqVwiXG4gIH0sXG4gIFwiS3V3YWl0aSBEaW5hclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1dEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNheW1hbiBJc2xhbmRzIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1lEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJUZW5nZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiS1pUXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJLaXBcIjoge1xuICAgIFwiY29kZVwiOiBcIkxBS1wiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKtXCJcbiAgfSxcbiAgXCJMZWJhbmVzZSBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTEJQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiU3JpIExhbmthIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJMS1JcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiTGliZXJpYW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJMUkRcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIkxpdGh1YW5pYW4gTGl0YXNcIjoge1xuICAgIFwiY29kZVwiOiBcIkxUTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiTHRcIlxuICB9LFxuICBcIkxhdHZpYW4gTGF0c1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTFZMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJMc1wiXG4gIH0sXG4gIFwiTGlieWFuIERpbmFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJMWURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTW9yb2NjYW4gRGlyaGFtXCI6IHtcbiAgICBcImNvZGVcIjogXCJNQURcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTW9sZG92YW4gTGV1XCI6IHtcbiAgICBcImNvZGVcIjogXCJNRExcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiTWFsYWdhc3kgQXJpYXJ5XCI6IHtcbiAgICBcImNvZGVcIjogXCJNR0FcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiRGVuYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIk1LRFwiLFxuICAgIFwic3ltYm9sXCI6IFwi0LTQtdC9XCJcbiAgfSxcbiAgXCJLeWF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJNTUtcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVncmlrXCI6IHtcbiAgICBcImNvZGVcIjogXCJNTlRcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCrlwiXG4gIH0sXG4gIFwiUGF0YWNhXCI6IHtcbiAgICBcImNvZGVcIjogXCJNT1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiT3VndWl5YVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVJPXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1hdXJpdGl1cyBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVVSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIlJ1Zml5YWFcIjoge1xuICAgIFwiY29kZVwiOiBcIk1WUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJLd2FjaGFcIjoge1xuICAgIFwiY29kZVwiOiBcIk1XS1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJNZXhpY2FuIFBlc28gTWV4aWNhbiBVbmlkYWQgZGUgSW52ZXJzaW9uIChVREkpXCI6IHtcbiAgICBcImNvZGVcIjogXCJNWE4gTVhWXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJNYWxheXNpYW4gUmluZ2dpdFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVlSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSTVwiXG4gIH0sXG4gIFwiTWV0aWNhbFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTVpOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJNVFwiXG4gIH0sXG4gIFwiTmFpcmFcIjoge1xuICAgIFwiY29kZVwiOiBcIk5HTlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKmXCJcbiAgfSxcbiAgXCJDb3Jkb2JhIE9yb1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiTklPXCIsXG4gICAgXCJzeW1ib2xcIjogXCJDJFwiXG4gIH0sXG4gIFwiTm9yd2VnaWFuIEtyb25lXCI6IHtcbiAgICBcImNvZGVcIjogXCJOT0tcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJOZXBhbGVzZSBSdXBlZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTlBSXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqhcIlxuICB9LFxuICBcIk5ldyBaZWFsYW5kIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiTlpEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJSaWFsIE9tYW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJPTVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiQmFsYm9hIFVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUEFCIFVTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiQi8uXCJcbiAgfSxcbiAgXCJOdWV2byBTb2xcIjoge1xuICAgIFwiY29kZVwiOiBcIlBFTlwiLFxuICAgIFwic3ltYm9sXCI6IFwiUy8uXCJcbiAgfSxcbiAgXCJLaW5hXCI6IHtcbiAgICBcImNvZGVcIjogXCJQR0tcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUGhpbGlwcGluZSBQZXNvXCI6IHtcbiAgICBcImNvZGVcIjogXCJQSFBcIixcbiAgICBcInN5bWJvbFwiOiBcIlBocFwiXG4gIH0sXG4gIFwiUGFraXN0YW4gUnVwZWVcIjoge1xuICAgIFwiY29kZVwiOiBcIlBLUlwiLFxuICAgIFwic3ltYm9sXCI6IFwi4oKoXCJcbiAgfSxcbiAgXCJabG90eVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUExOXCIsXG4gICAgXCJzeW1ib2xcIjogXCJ6xYJcIlxuICB9LFxuICBcIkd1YXJhbmlcIjoge1xuICAgIFwiY29kZVwiOiBcIlBZR1wiLFxuICAgIFwic3ltYm9sXCI6IFwiR3NcIlxuICB9LFxuICBcIlFhdGFyaSBSaWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJRQVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiTmV3IExldVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUk9OXCIsXG4gICAgXCJzeW1ib2xcIjogXCJsZWlcIlxuICB9LFxuICBcIlNlcmJpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlJTRFwiLFxuICAgIFwic3ltYm9sXCI6IFwi0JTQuNC9LlwiXG4gIH0sXG4gIFwiUnVzc2lhbiBSdWJsZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiUlVCXCIsXG4gICAgXCJzeW1ib2xcIjogXCLRgNGD0LFcIlxuICB9LFxuICBcIlJ3YW5kYSBGcmFuY1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiUldGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlNhdWRpIFJpeWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJTQVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiU29sb21vbiBJc2xhbmRzIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0JEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTZXljaGVsbGVzIFJ1cGVlXCI6IHtcbiAgICBcImNvZGVcIjogXCJTQ1JcIixcbiAgICBcInN5bWJvbFwiOiBcIuKCqFwiXG4gIH0sXG4gIFwiU3VkYW5lc2UgUG91bmRcIjoge1xuICAgIFwiY29kZVwiOiBcIlNER1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTd2VkaXNoIEtyb25hXCI6IHtcbiAgICBcImNvZGVcIjogXCJTRUtcIixcbiAgICBcInN5bWJvbFwiOiBcImtyXCJcbiAgfSxcbiAgXCJTaW5nYXBvcmUgRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJTR0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlNhaW50IEhlbGVuYSBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU0hQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTGVvbmVcIjoge1xuICAgIFwiY29kZVwiOiBcIlNMTFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTb21hbGkgU2hpbGxpbmdcIjoge1xuICAgIFwiY29kZVwiOiBcIlNPU1wiLFxuICAgIFwic3ltYm9sXCI6IFwiU1wiXG4gIH0sXG4gIFwiU3VyaW5hbSBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNSRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiJFwiXG4gIH0sXG4gIFwiRG9icmFcIjoge1xuICAgIFwiY29kZVwiOiBcIlNURFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFbCBTYWx2YWRvciBDb2xvbiBVUyBEb2xsYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlNWQyBVU0RcIixcbiAgICBcInN5bWJvbFwiOiBcIiRcIlxuICB9LFxuICBcIlN5cmlhbiBQb3VuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiU1lQXCIsXG4gICAgXCJzeW1ib2xcIjogXCLCo1wiXG4gIH0sXG4gIFwiTGlsYW5nZW5pXCI6IHtcbiAgICBcImNvZGVcIjogXCJTWkxcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQmFodFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVEhCXCIsXG4gICAgXCJzeW1ib2xcIjogXCLguL9cIlxuICB9LFxuICBcIlNvbW9uaVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVEpTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIk1hbmF0XCI6IHtcbiAgICBcImNvZGVcIjogXCJUTVRcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVuaXNpYW4gRGluYXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlRORFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQYSdhbmdhXCI6IHtcbiAgICBcImNvZGVcIjogXCJUT1BcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiVHVya2lzaCBMaXJhXCI6IHtcbiAgICBcImNvZGVcIjogXCJUUllcIixcbiAgICBcInN5bWJvbFwiOiBcIlRMXCJcbiAgfSxcbiAgXCJUcmluaWRhZCBhbmQgVG9iYWdvIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVFREXCIsXG4gICAgXCJzeW1ib2xcIjogXCJUVCRcIlxuICB9LFxuICBcIk5ldyBUYWl3YW4gRG9sbGFyXCI6IHtcbiAgICBcImNvZGVcIjogXCJUV0RcIixcbiAgICBcInN5bWJvbFwiOiBcIk5UJFwiXG4gIH0sXG4gIFwiVGFuemFuaWFuIFNoaWxsaW5nXCI6IHtcbiAgICBcImNvZGVcIjogXCJUWlNcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiSHJ5dm5pYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVUFIXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigrRcIlxuICB9LFxuICBcIlVnYW5kYSBTaGlsbGluZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVUdYXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlVTIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVVNEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJQZXNvIFVydWd1YXlvIFVydWd1YXkgUGVzbyBlbiBVbmlkYWRlcyBJbmRleGFkYXNcIjoge1xuICAgIFwiY29kZVwiOiBcIlVZVSBVWUlcIixcbiAgICBcInN5bWJvbFwiOiBcIiRVXCJcbiAgfSxcbiAgXCJVemJla2lzdGFuIFN1bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVVpTXCIsXG4gICAgXCJzeW1ib2xcIjogXCLQu9CyXCJcbiAgfSxcbiAgXCJCb2xpdmFyIEZ1ZXJ0ZVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiVkVGXCIsXG4gICAgXCJzeW1ib2xcIjogXCJCc1wiXG4gIH0sXG4gIFwiRG9uZ1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiVk5EXCIsXG4gICAgXCJzeW1ib2xcIjogXCLigqtcIlxuICB9LFxuICBcIlZhdHVcIjoge1xuICAgIFwiY29kZVwiOiBcIlZVVlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJUYWxhXCI6IHtcbiAgICBcImNvZGVcIjogXCJXU1RcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQ0ZBIEZyYW5jIEJFQUNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhBRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJTaWx2ZXJcIjoge1xuICAgIFwiY29kZVwiOiBcIlhBR1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJHb2xkXCI6IHtcbiAgICBcImNvZGVcIjogXCJYQVVcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiQm9uZCBNYXJrZXRzIFVuaXRzIEV1cm9wZWFuIENvbXBvc2l0ZSBVbml0IChFVVJDTylcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBNb25ldGFyeSBVbml0IChFLk0uVS4tNilcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBVbml0IG9mIEFjY291bnQgOShFLlUuQS4tOSlcIjoge1xuICAgIFwiY29kZVwiOiBcIlhCQ1wiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJFdXJvcGVhbiBVbml0IG9mIEFjY291bnQgMTcoRS5VLkEuLTE3KVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWEJEXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkVhc3QgQ2FyaWJiZWFuIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWENEXCIsXG4gICAgXCJzeW1ib2xcIjogXCIkXCJcbiAgfSxcbiAgXCJTRFJcIjoge1xuICAgIFwiY29kZVwiOiBcIlhEUlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJVSUMtRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhGVVwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDRkEgRnJhbmMgQkNFQU9cIjoge1xuICAgIFwiY29kZVwiOiBcIlhPRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQYWxsYWRpdW1cIjoge1xuICAgIFwiY29kZVwiOiBcIlhQRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJDRlAgRnJhbmNcIjoge1xuICAgIFwiY29kZVwiOiBcIlhQRlwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJQbGF0aW51bVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFBUXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIkNvZGVzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3IgdGVzdGluZyBwdXJwb3Nlc1wiOiB7XG4gICAgXCJjb2RlXCI6IFwiWFRTXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlllbWVuaSBSaWFsXCI6IHtcbiAgICBcImNvZGVcIjogXCJZRVJcIixcbiAgICBcInN5bWJvbFwiOiBcIu+3vFwiXG4gIH0sXG4gIFwiUmFuZFwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWkFSXCIsXG4gICAgXCJzeW1ib2xcIjogXCJSXCJcbiAgfSxcbiAgXCJSYW5kIExvdGlcIjoge1xuICAgIFwiY29kZVwiOiBcIlpBUiBMU0xcIixcbiAgICBcInN5bWJvbFwiOiBcIlwiXG4gIH0sXG4gIFwiUmFuZCBOYW1pYmlhIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWkFSIE5BRFwiLFxuICAgIFwic3ltYm9sXCI6IFwiXCJcbiAgfSxcbiAgXCJaYW1iaWFuIEt3YWNoYVwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWk1LXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9LFxuICBcIlppbWJhYndlIERvbGxhclwiOiB7XG4gICAgXCJjb2RlXCI6IFwiWldMXCIsXG4gICAgXCJzeW1ib2xcIjogXCJcIlxuICB9XG59O1xuIiwidmFyIGZpbmFuY2UgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZmluYW5jZTtcbmZpbmFuY2UuYWNjb3VudF90eXBlID0gcmVxdWlyZShcIi4vYWNjb3VudF90eXBlXCIpO1xuZmluYW5jZS50cmFuc2FjdGlvbl90eXBlID0gcmVxdWlyZShcIi4vdHJhbnNhY3Rpb25fdHlwZVwiKTtcbmZpbmFuY2UuY3VycmVuY3kgPSByZXF1aXJlKFwiLi9jdXJyZW5jeVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZGVwb3NpdFwiLFxuICBcIndpdGhkcmF3YWxcIixcbiAgXCJwYXltZW50XCIsXG4gIFwiaW52b2ljZVwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJUQ1BcIixcbiAgXCJIVFRQXCIsXG4gIFwiU0REXCIsXG4gIFwiUkFNXCIsXG4gIFwiR0JcIixcbiAgXCJDU1NcIixcbiAgXCJTU0xcIixcbiAgXCJBR1BcIixcbiAgXCJTUUxcIixcbiAgXCJGVFBcIixcbiAgXCJQQ0lcIixcbiAgXCJBSVwiLFxuICBcIkFEUFwiLFxuICBcIlJTU1wiLFxuICBcIlhNTFwiLFxuICBcIkVYRVwiLFxuICBcIkNPTVwiLFxuICBcIkhERFwiLFxuICBcIlRIWFwiLFxuICBcIlNNVFBcIixcbiAgXCJTTVNcIixcbiAgXCJVU0JcIixcbiAgXCJQTkdcIixcbiAgXCJTQVNcIixcbiAgXCJJQlwiLFxuICBcIlNDU0lcIixcbiAgXCJKU09OXCIsXG4gIFwiWFNTXCIsXG4gIFwiSkJPRFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhdXhpbGlhcnlcIixcbiAgXCJwcmltYXJ5XCIsXG4gIFwiYmFjay1lbmRcIixcbiAgXCJkaWdpdGFsXCIsXG4gIFwib3Blbi1zb3VyY2VcIixcbiAgXCJ2aXJ0dWFsXCIsXG4gIFwiY3Jvc3MtcGxhdGZvcm1cIixcbiAgXCJyZWR1bmRhbnRcIixcbiAgXCJvbmxpbmVcIixcbiAgXCJoYXB0aWNcIixcbiAgXCJtdWx0aS1ieXRlXCIsXG4gIFwiYmx1ZXRvb3RoXCIsXG4gIFwid2lyZWxlc3NcIixcbiAgXCIxMDgwcFwiLFxuICBcIm5ldXJhbFwiLFxuICBcIm9wdGljYWxcIixcbiAgXCJzb2xpZCBzdGF0ZVwiLFxuICBcIm1vYmlsZVwiXG5dO1xuIiwidmFyIGhhY2tlciA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBoYWNrZXI7XG5oYWNrZXIuYWJicmV2aWF0aW9uID0gcmVxdWlyZShcIi4vYWJicmV2aWF0aW9uXCIpO1xuaGFja2VyLmFkamVjdGl2ZSA9IHJlcXVpcmUoXCIuL2FkamVjdGl2ZVwiKTtcbmhhY2tlci5ub3VuID0gcmVxdWlyZShcIi4vbm91blwiKTtcbmhhY2tlci52ZXJiID0gcmVxdWlyZShcIi4vdmVyYlwiKTtcbmhhY2tlci5pbmd2ZXJiID0gcmVxdWlyZShcIi4vaW5ndmVyYlwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYmFja2luZyB1cFwiLFxuICBcImJ5cGFzc2luZ1wiLFxuICBcImhhY2tpbmdcIixcbiAgXCJvdmVycmlkaW5nXCIsXG4gIFwiY29tcHJlc3NpbmdcIixcbiAgXCJjb3B5aW5nXCIsXG4gIFwibmF2aWdhdGluZ1wiLFxuICBcImluZGV4aW5nXCIsXG4gIFwiY29ubmVjdGluZ1wiLFxuICBcImdlbmVyYXRpbmdcIixcbiAgXCJxdWFudGlmeWluZ1wiLFxuICBcImNhbGN1bGF0aW5nXCIsXG4gIFwic3ludGhlc2l6aW5nXCIsXG4gIFwidHJhbnNtaXR0aW5nXCIsXG4gIFwicHJvZ3JhbW1pbmdcIixcbiAgXCJwYXJzaW5nXCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImRyaXZlclwiLFxuICBcInByb3RvY29sXCIsXG4gIFwiYmFuZHdpZHRoXCIsXG4gIFwicGFuZWxcIixcbiAgXCJtaWNyb2NoaXBcIixcbiAgXCJwcm9ncmFtXCIsXG4gIFwicG9ydFwiLFxuICBcImNhcmRcIixcbiAgXCJhcnJheVwiLFxuICBcImludGVyZmFjZVwiLFxuICBcInN5c3RlbVwiLFxuICBcInNlbnNvclwiLFxuICBcImZpcmV3YWxsXCIsXG4gIFwiaGFyZCBkcml2ZVwiLFxuICBcInBpeGVsXCIsXG4gIFwiYWxhcm1cIixcbiAgXCJmZWVkXCIsXG4gIFwibW9uaXRvclwiLFxuICBcImFwcGxpY2F0aW9uXCIsXG4gIFwidHJhbnNtaXR0ZXJcIixcbiAgXCJidXNcIixcbiAgXCJjaXJjdWl0XCIsXG4gIFwiY2FwYWNpdG9yXCIsXG4gIFwibWF0cml4XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImJhY2sgdXBcIixcbiAgXCJieXBhc3NcIixcbiAgXCJoYWNrXCIsXG4gIFwib3ZlcnJpZGVcIixcbiAgXCJjb21wcmVzc1wiLFxuICBcImNvcHlcIixcbiAgXCJuYXZpZ2F0ZVwiLFxuICBcImluZGV4XCIsXG4gIFwiY29ubmVjdFwiLFxuICBcImdlbmVyYXRlXCIsXG4gIFwicXVhbnRpZnlcIixcbiAgXCJjYWxjdWxhdGVcIixcbiAgXCJzeW50aGVzaXplXCIsXG4gIFwiaW5wdXRcIixcbiAgXCJ0cmFuc21pdFwiLFxuICBcInByb2dyYW1cIixcbiAgXCJyZWJvb3RcIixcbiAgXCJwYXJzZVwiXG5dO1xuIiwidmFyIGVuID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGVuO1xuZW4udGl0bGUgPSBcIkVuZ2xpc2hcIjtcbmVuLnNlcGFyYXRvciA9IFwiICYgXCI7XG5lbi5hZGRyZXNzID0gcmVxdWlyZShcIi4vYWRkcmVzc1wiKTtcbmVuLmNyZWRpdF9jYXJkID0gcmVxdWlyZShcIi4vY3JlZGl0X2NhcmRcIik7XG5lbi5jb21wYW55ID0gcmVxdWlyZShcIi4vY29tcGFueVwiKTtcbmVuLmludGVybmV0ID0gcmVxdWlyZShcIi4vaW50ZXJuZXRcIik7XG5lbi5kYXRhYmFzZSA9IHJlcXVpcmUoXCIuL2RhdGFiYXNlXCIpO1xuZW4ubG9yZW0gPSByZXF1aXJlKFwiLi9sb3JlbVwiKTtcbmVuLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuZW4ucGhvbmVfbnVtYmVyID0gcmVxdWlyZShcIi4vcGhvbmVfbnVtYmVyXCIpO1xuZW4uY2VsbF9waG9uZSA9IHJlcXVpcmUoXCIuL2NlbGxfcGhvbmVcIik7XG5lbi5idXNpbmVzcyA9IHJlcXVpcmUoXCIuL2J1c2luZXNzXCIpO1xuZW4uY29tbWVyY2UgPSByZXF1aXJlKFwiLi9jb21tZXJjZVwiKTtcbmVuLnRlYW0gPSByZXF1aXJlKFwiLi90ZWFtXCIpO1xuZW4uaGFja2VyID0gcmVxdWlyZShcIi4vaGFja2VyXCIpO1xuZW4uYXBwID0gcmVxdWlyZShcIi4vYXBwXCIpO1xuZW4uZmluYW5jZSA9IHJlcXVpcmUoXCIuL2ZpbmFuY2VcIik7XG5lbi5kYXRlID0gcmVxdWlyZShcIi4vZGF0ZVwiKTtcbmVuLnN5c3RlbSA9IHJlcXVpcmUoXCIuL3N5c3RlbVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXJqYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFoZGlmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NwcmF5YWdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1emluYXYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2t5aGFydG1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb3Njb3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VyYWZpcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvOTFiaWxhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZ29yZ2FyeWJhbGRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhbGVib2dkZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFseWtoaW52LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZWxoZWxpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdXNoc29saXRhcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29yZXl3ZWIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc25vd3NoYWRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyZXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvbGRlbndlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXlpbWp1YW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VudmV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3VudGVyZHJlaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29sbGVnZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWVqZmFuY2hlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmR5aXNvbmxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdWx0cmFnZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnVja195b3VfdHdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkZWxsZWNoYXJsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXRlbmV1cG9wdWxhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haG1ldGFscGJhbGthbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TdGlldml1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rZXJlbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc3ZhbGRhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmdlbGNlYmFsbG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWVycnlrb2JsZW50ei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRlcmxhbmR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NhdGFyaW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlZ2xvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZGNsYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWhtZXRzdWxlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGFzZm9sbGlvdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlyb2JpbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWN0b3Jlcml4b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29sYWdlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2h6ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFya2plbmtpbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmljb2xhaV9sYXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbm94ZHppbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxhZ29vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZGlvdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXprby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFkZW5nbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXV0bHU4Mi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaW1vYmVuc28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm9jaW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1aWlpcG9udGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NveWphdmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaGF1c3Rpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b21hc2xhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9WaW5UaG9tYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvTWFuaWtSYXRoZWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGFuZ2F0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZW1zaGlkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlZW11bnJvZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fc2hhaGVkay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbmRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0JpbGxTS2VubmV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpdnlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2hoZW1zbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbmRyZXNvcmh1cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb2ZmZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvOWxlc3NvbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGludXgyOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9DaGFraW50b3NoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuYWFtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3JlaXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYWRlZWQ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0a2NsYXJrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plZGJyaWRnZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FsbGVlZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmFrYXNpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJpaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQnJpYW5QdXJraXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxtYXJ0aW5oby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idWJsaWVua28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGV2YW5rb3NoYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvWmFjaGFyeVpvcmJhcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1taWxsd29vZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NodWFzb3J0aW5vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbWVubGVldHVya3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdG9tYXNfamFub3VzZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVycmhhYXNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL1J1c3NlbGxCaXNob3AvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhamVzaHdhci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYnJhY2NvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlcm1vbnBhaW50ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWJkdWxsaW5kZW5pcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc2Fjb3N0YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXByYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95YWxvemhraW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhbmRsZXJ2ZHcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtZ2FydGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3ZpY3RhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbW1hZGVsaW1pdGVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JveWJhcmJlcnVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F4ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhZGFyYmF0b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmZiZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3lyb3BpYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5raXRpbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHJhbmVibG93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZsYXNobXVycGh5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0NocmlzRmFyaW5hNzgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsaW9tZWdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhc2NoYW10LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ptX2RlbmlzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fub2ZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlbm55YWRyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXR5cmtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rpbmd5aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVycnl4bGlmZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYXJvbmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2luZGF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BycnN0bi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lZHVhcmRvc3R1YXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RoaWxpcHNpdmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvR2F2aWNvSW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhaXJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2hpeHgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlnbWFuY2hvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JsYWtlc2lta2lucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWVpaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGpydXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdWJlcnNjaGl6by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9reWxlZm91bmRyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jbGF1ZGlvZ3VnbGllcmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlwcGxlbWRrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2V4ZW50cmljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWtlbW9vcmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9hb2VkdW1lZGVpcm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Bvb3JtaW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlcmVzaGVua292LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tlcnlpbG1hei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYXlkbl93b29kcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydWRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xsdW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2dhdXJhdl9iYWdoZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFtaWVicml0dGFpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYWRsaXR0bGVkdWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpZmFnb3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWdyb21vdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5lZnJpdHovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXJ3YW5oZXNyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWVzZWxsYXdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVtaWFoYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb3JpZGhhbmR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYWVuc2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2NvaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NtYWN6bnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ29uemFsb3JvYmFpbmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFuZGluaV9tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N5ZGxhd3JlbmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NkaGFycmlzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGdlcmtlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXdpc2FpbnNsaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhcmxpZWN3YWl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2Jic2NoaWxsZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmxleHJzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRkZXRhaWxzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhcXVlbHdpbHNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tcm1hcnRpbmVhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vcG5zcmNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hnaGFycnlnby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXhpbXNlc2h1ay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91eGFsZXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FtaWhhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFucG9yeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFydmluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2VtYXJxdWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plZmZmaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3J5c3RhbGZpc3Rlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb2tlc2hfY29kZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlZGFtaWFuaGRlei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcG1hY2hhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnVud2F0ZXJjYXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltb3RoeWNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2l2YW5maWxpcG92YmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGljYXJkMTAyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNvYmFyYm9zYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rcmFzbm91a2hvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nM2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRlbWlsdGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2tkdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vcGVyYXRpbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnVuZ2l3YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaHVnb21hbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9nb3JhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGNfdXNlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ob3JhY2lvYmVsbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvU2xhYXBNZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZWVyYWdpdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcW9uaWNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lseWFfcGVzdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2Fycm93LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NzaXNraW5kLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvSGVucnlIb2ZmbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jkc2F1bmRlcnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbXN4dS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jdXJpb3Vzb2ZmaWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW1hZHJheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoaWdhbmdyYWhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2hldHRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY2tmcmF0dGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1bm5pbmdza3VsbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWR5c29uZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmVudG9uX2NsYXJrZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZW5ueXNoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhZGVuaGFtbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdXJ0aW5jLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FtYW5ydXphaW5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvcmV5aGFnZ2FyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9LYXJpbW1vdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWFyb25hbGZyZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd3Ryc2xkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ppdGFjaGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlcmVhbG1hcnZpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wbWVpc3NuZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb29vbXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhY2t5MTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVzc2VkZHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hhbmVodWRzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWttdXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvSXNhcnlBbWFpcmFuaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnRodXJob2xjb21iZTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm94bW9kZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWhzYW5kaWFyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9MdWNhc1BlcmRpZGFvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoYWx0MG5pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N3YXBsb3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thZWxpZmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGxiYWJpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndWlsbGVtYm90aS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmluZGFtXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZW5ieXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWFnb3Zlcm5ldHRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ptaWxsc3BheXNiaWxscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWtlbWFpMmF3ZXNvbWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVydm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWVrYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RhMWV4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvYmVyZ2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmVsaXBlY3NsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJlYTIxMTA4Ny8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXJhbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhvb3llbmdhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fib3ZlZnVuY3Rpb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGNyaWRlc2FnYWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbmRvbWxpZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQnJ5YW5Ib3JzZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGV5a2VubmV0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYWhwYXJyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGx0aGluZ3NzbWl0dHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFudmVybm9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jld2VpbnJlaWNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2luY3JlYXNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhbHZhcmFkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FseG5kcnVzdGlub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc291dWYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3JrdW5jYXlsYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQU1fS24yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlYXJwaXhlbHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFzc2Ftb2xvZ3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmltYXJldGhvbWFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvc21hci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TVUxpaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJqYW1lc25vYmxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NpbHZhbm11aGxlbWFubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGFuZUl4RC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYWNoby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95aWdpdHBpbmFyYmFzaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idXp6dXNib3JuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYXJvbmt3aGl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ybWxld2lzdWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2lhbmNhcmxvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYmlyY2tlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kX25ueV9tX2NoZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2RpZG9uYXRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0YXJpYm95LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fib3RhcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXJhbGVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BzZGVzaWdudWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbHVkd2ljemFrcGF3ZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVtYW5qYWl2YW5vdmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbHVsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haG1hZGFqbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdm92a2Fzb2xvdmV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbWdyb3Zlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJpZW56bzc3Ny8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25hdGhhbnNpbW1vbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsc29uam95Y2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvUzB1Zmk0bjMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveHRvcGhlcnBhdWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2FrdHJlZW1lZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hdGVzY2h1bHRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZpbmRpbmdqZW5ueS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYW1hbmtyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudG9ueXpvdG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlX3NvY2lhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZWVoYW1ibGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NvbGlkX2NvbG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FiZWxjYWJhbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWJpbGRlcmJhY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2t1c2FhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvcmR5dmRib29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhcmxvc2dhdmluYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWNoa2luYXRvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YzI3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JkYmFubm9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nyb2FreC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXJpYmJsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2VyaWhlbmFyZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXRhZGVsZW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2djbW9ybGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1aXZ2di8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXNjaGFkcm9zdGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmljdG9yRHVidWdyYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2ludG9waWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0dGJpbG90dGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGF5bG9ybGluZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWdkcmF3cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tZWxuMWtzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21haG1vdWRtZXR3YWxseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TaWx2ZXJlZGdlOS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJla2VicmFkbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhcHB5cGV0ZXIxOTgzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RyYXZpc19hcm5vbGQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJ0ZW1fa29zdGVua28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRvYmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF5a2lpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxla19kanVyaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NpcHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlndWVsbWVuZGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1c3RpbnJoZWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxzb2Jyb29rcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcm9ueC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tY2ZseWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW50aV91cnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsbGZvcmRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGF5dWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJ0Ym9lcmxhbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyb3Nob2xseS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZGFtbmFjLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2N5bnRoaWFzYXZhcmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVyaW5nYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5yby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oaWVtaWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamFja2llc2Fpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pZHV1Y2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50amFudXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJvb25fc2hhcm1hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RzaHN0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlaGFja2VyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhZWxicm9va3Nqci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFubWNsYXVnaGxpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jbHViYjNycnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGF5YmVubG9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hyaXB1bm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL215YXN0cm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRpdHlhc3V0b21vLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpZ2l0YWxtYXZlcmljay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oamFydHN0cm9ybi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdG9sbWFjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YXVnaGFubW9mZml0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmRvdHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNuaWZlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZXJnZXlzYWZvbm92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zY3JhcGRuYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc21qODMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdml0b3JsZWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nva2FuaXdhYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemFraTNkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lsbHl6b3Jlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tb2NhYnl0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc21hbmluY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGpzaGVybWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkaGVtcGhpbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2FnaG5lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWNvZHltaWNvbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByYXZlZW5fdmlqYXlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZhYmJydWNjaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmF2aXNoaW5lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdWxkYXJrYWx2aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvRWx0X24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGhpbGxhcGllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va3NlYW5qYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWQ4MzU1NTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3VkcmV0a2Vza2luLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fuamhlcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHVjazRmdWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0X3JpbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25vdWZhbGlicmFoaW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaDFicmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9yZ2VzX21hcmNvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZpbmhhbGxhZGF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NpYXJhbnIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RlZm9vby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWtlYmVlY2hhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b255bWlsbGlvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NodWFyYWljaHVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lyYWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0cmFuZ3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG1pdHJpeWNodXRhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXJsaWVnYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyYXNobWFudGVnaGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRoYW1kYW5uYXdheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haW5zbGV5d2Fnb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Zlbmxlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWlzYWxhYmlkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlc2h1ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJseXNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kdXRjaG5hZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RlZGR5emV0dGVybHVuZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW11ZWxrcmFmdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hb2ltZWRpYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b2RkcmV3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZGVwb2V0X3J1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FydHZhdnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVub2l0Ym91Y2FydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb21hcm1lbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2xtYXJsb3Blei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmVhcnRpbmMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG9ta2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2Fib3JlbnRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JpbmNsZWRpZXJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21heGltc29yb2tpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wbGFzdGljaW5lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2oyZGVtZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZWFjaGFuYW5yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcGFsdWNjaW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVfYXNjYW5pby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWthcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXdpZHd1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmNvcmFtaXJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmdlbGNyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JwYXRleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb3BleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yZWhhdGthdGh1cmlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZV9wdXJwbGVidW5ueS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci8xbWFya2l6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FqYXh5X3J1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyZW5tdXJyZWxsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R1ZGVzdGVpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vc2thcmxldmluc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcnN0dWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZWhmeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWNpdmFkZWxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVhbmRyb3ZhcmFuZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRnYWxsYW50LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3Rvcl9oYXlkaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2F3cmIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnloYW5oYXNzYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW1heXZzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FfYnJpeGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcm9sa3Jha293aWFrXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZXJrdWxhbm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2VyYW43LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NnZ2F1cmF2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzX3dpdGtvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvc29zaW5hLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BvbGFyaXR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdHRsYXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnJhbmRvbmJ1cmtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbnN0YW50eC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXlsb3JmZWxpei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jcmFpZ2VsaW1lbGlhaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYWNoZWxyZXZlbGV5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlYWJvMTAxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhaG1lZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmlja3l5ZWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2owNG50b2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Bicm9tYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zZWJhc2h0b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanBlbmljby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mcmFuY2lzX3ZlZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2t0YXllbGlwZWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lraWxsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWJiaWFuei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXJyeWdlcmFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9Ccm91bWlZb3Vzc2VmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyLzB0aGVycGxhbmV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21iaWxhbHNpZGRpcXVlMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pb251c3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3Jycl9ubC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9saW1pbmhhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jhd2RpZ2dpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeWFuZG93bmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NldGhsb3VleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waXhhZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXJwaXRuai8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd2l0bWVyNzc3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvc2V2bmNsY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FuaWNrYWlyYWovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHV6aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGJha2Rlc2lnbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmVzYnVqdXBpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cGpvZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG93aWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGlua2lib2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFsaW50b3Jvc3ovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1jb2RpbmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWd1c3RpbmNydWl6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1c290by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aG9tYXNzY2hyaWplci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXBlcm91dG1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYWxtZXJyYXV0YW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2FicmllbGl6YWxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvamVhbnluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkYmFsZGllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL192b2p0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXVyZW5ncmF5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p5ZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL215bXlib3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsbGxlby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjaW90b2xlZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmluamFkM20wLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvX3NvaGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhc3NsdW5zZm9yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tdXJpZHJhaGhhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sZXZpc2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyYWhhbWtlbm5lcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVwZXRpdG9ncmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW50b25nZW5raW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVzc29pbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW1hbmRhYnV6YXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhZnJhbmtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2NvbGVyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kc3M0OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0MzIyNC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibHVlc2l4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3F1YWlsYW5kcXVhc2FyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL0FsYmVydG9Db2NvY2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVwaW5za2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VtZW50aXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWh1ZG9iaXZuaWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhpYmF1dF9yZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vbGdhcnkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2hvamJlcmcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXRvbG9rb25uaWtvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZXJldG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmF1cGludG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlZ290dmljZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGFkaGl4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hY3hpbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2RueWxvYm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZGNhbXBvcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRlYnl2YWRpbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJ0b3N6ZGF3eWR6aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VwZXJ2b3ZhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtyZXR6bG9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92b25hY2hvby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXJ5bHdzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXZlZGVzaWduZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXlsZXNiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcmJpZ3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVwYXVsYXdhZ25lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZXNoYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2l6bWVlZGV2aWwxOTkxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL19zY290dGJ1cmdlc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGlzb3Zza3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGF2aWRzYXNkYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcnRkX3NpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvWW91bmdDdXRsYXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21nb250by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdHN0b3RhbGx5YW15LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcnF1aW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zbW9uZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va3NhbmFmcmV3ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvemF1ZXJrcmF1dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1rZWl0aG1hc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pdGluaGF5YXJhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sbWphYnJldS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYW5kYWxhcmVvcGVucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGlua2xlZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcG9uY2hvbWVuZGl2aWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhbXBlcnJvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JydW5vZGVzaWduMTIwNi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXNleWNhdmFuYWdoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2x1eGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG90Z3JpZGxpbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3BlZHdpZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWRld3VsZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0c2FwaWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGVsZGVybGVhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3N0dW1waC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlwaGVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25zYW1veWxvdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc3ZhbmRlcmtvb2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdG1lX3RpbW90aHlnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL290b3prLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaW56YWRpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2d1NXRhZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jeXJpbF9nYWlsbGFyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kX2tvYmVseWF0c2t5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Rhbmlsb2MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbndkc2hhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JvbWFuYnVsYWgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2traXJpbG92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2R2ZHdpbmRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5ub2wvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhla2V2aW5qb25lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qd2FsdGVyMTQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGltZ3Rob21hcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9idWRkaGFzb3VyY2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXhwaXBlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGF0b25ldG9tbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGlhbnNpZ2l0cC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZHJpZW50aHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2xpbW1rYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9na2FhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXJla2NyYW1lci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZW5ueXlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25lcnJzb2Z0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hhbGlvbm1hbGlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkaGVuZGVyc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tleXVyaTg1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JveGFuZWphbW1ldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raW1jb29sLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vka2YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0a2lucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVzc2FuZHJvcmliZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYWNrc29ubGF0a2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVicm9uamVubmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvc3Rhc3B0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thcmxrYW5hbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW95bmloYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFucGxpZWdvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhdWxpaGlydmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VzbGV5dHJhbmtpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mamFndWVyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3dicmljay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXNoYWFhYWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3lhc3NpcnlhaHlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RwYXJyZWxsaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mb3RvbWFnaW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWthX2phbWVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RlbmlzZXBpcmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2lxYmFscGVya2FzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJ0aW5hbnN0eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcl9veS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdXN0aW5yb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2FicmllbHJvc3Nlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWxnb3Jkb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybGZhaXJjbG91Z2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWljaGFlbGFiZWhzZXJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BpZXJyZXN0b2ZmZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbmpveXRoZXRhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb2dhbmpsYW1iZXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JwZWV6eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb3JleWdpbm5pdmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pY2hhbGhyb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXN2ZWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xpbmdlc3dhcmFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tvbHN2ZWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BldGVyNTc2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JlaWRlaXJlZGFsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2V5bXVyZGFoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhcGhhZWxuaWtzb24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXZkaGV1dmVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21heGxpbmRlcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qaW1tdWlyaGVhZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZWdyZWF0aXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5raWVmcmVlc2JpZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2J0dXJsaW5ja3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvVGFsYmlfQ29uU2VwdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb25nbGl2ZW15d29yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92YW5jaGVzei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWlrbGFtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcm1hbm9icm90aGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Jlel9fX2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3JlZ3NxdWVlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVlbmJlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fcmFnem9yLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FudGhvbnlzdWtvdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mbHVpZGJydXNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhY3RydHIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVobmdseW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JlcmdtYXJ0aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaHVnb2Nvcm5lam8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX2trZ2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZHphbnRpZXZtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nhd2FsYXphci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3Zlc292ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25zZ290d29vZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ieXJ5YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdnl0YXV0YXNfYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taXpoZ2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NpY2Vyb2JyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pbHNoZWxtZXJzc29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2QzM3B0aG91Z2h0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmVjcmFpZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmNranJ2cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGV4YW5kZXJtYXllcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qY3ViaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JhaWdyY29sZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFnYXdhcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JfdGhvbWFzMTAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29mbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFpa2Vsay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ydGdpYmJvbnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnVzc2VsbF9iYXlsaXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWhlc3Nsb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29keXNhbmZpbGlwcG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2VidGFueWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFkZWJ5YnJlbnRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kY2Fsb25hY2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVyZmVjdGZsb3cvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvampzaWlpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhYXJhYnByZWV0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t1bWFycmFqYW4xMjEyMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1zdGVmZmVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW1pa2VuYWdsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jZWVrYXl0d2VldC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXJyeWJvbHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY29uc3BpcmF0b3IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFsbGFzYnBldGVycy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uM2RtYXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGVycGltb3N0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J5cm5lY29yZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qX2RyYWtlXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYWxlYmpveWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1c3NvZWR1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hvYW5nbG9pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RvYnlzYXhvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nb2ZyYXNkZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGltYXBvc255eS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90amlzb3VzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9va2FuZHVuZ2VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JpbGx5cm9zaGFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29za2FtYXlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21vdGlvbnRoaW5rcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rbmlsb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXNob2NrYTE4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnJpbW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmFydGpvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29tbml6eWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXJuZXN0c2VtZXJkYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmRyZWFzX3ByLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkZ2FyY2hyaXM5OS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aG9tYXNnZWlzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ3NlZ3Vpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2FubmVmb3Vybmllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZW1lcnNkZXNpZ25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FkYW1tYXJzYmFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25hc2lyd2QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbl90YXNzb25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phdm9yc3preS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aGVtcmRhdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveWVjaWRzbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWNvbGxlcmljaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYW5hcHVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL25pY29sZWdseW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2p1ZHpoaW5fbWlsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVzaWduZXJ2em0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lhbm9zaHAvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXZhbmRyaXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx0ZXJjaHVjYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaHJ1Ym8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFfdGlheC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zc2JiX21lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RvcnBoZXJuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hdXJpb2xnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JydW5vX21hcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFjdG9wdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhlX3dpbnNsZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9lbWRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9TaHJpaWlpaW1wLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phY29iYmVubmV0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZmVkb3JvZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWFtZ2xpbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxsYWdyaW5nYXVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FpaWFpaWFpaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vbGFvbHVzb2dhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1cnlha25pY2svMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2ltMWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmlja2xhY2tlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ExY2hhcG9uZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGV5bnZpbGpvZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3RyaWtld2FuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5raXJrbWFuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHJld2Fib2dhZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG9vb29uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phZ2FuMTIzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaWZmc2V0aWF3YW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxlbmFkaXNzaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9td2Fya2VudGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaWVycnltZWllcl8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcl9nYXJjaWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG1hY2tlcm1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ib3JhbnR1bGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva29udXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3BhY2V3b29kXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yeXVjaGkzMTEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXZhbnNoYWplZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90cmlzdGFubGVncm9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nob2FpYjI1My8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haXNsaW5ua2VsbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2tjb2tlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90aW1wZXRyaWNvbGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3Vuc2hpbmVkZ2lybC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaGFkYW1pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWNsYXJzb25pdi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub21pZGVzaWducy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wZXRlYmVybmFyZG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2NvdHRpZWR1ZGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlsbGluZXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1zb3Blci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbWFtbXVodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZW5qYW1pbl9rbmlnaHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVwZHVkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pva2k0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xhbmNlZ3V5YXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jib3kxODk1LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FteXdlYmJiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J3ZXZlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhcnVpbnRlc2V0dGRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNidXJ0b24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmVsc2hkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhdHNpcmFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ByaW1vemNpZ2xlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZmZncmRuci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci84ZDNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dlbmVzZWxlem5ldi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbF9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zb3VwZXJwaGx5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21zbGFya2luYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci8yZm9ja3VzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NkYXZpczU2NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci94aWVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3R1cmt1dHV1bGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdXh3YXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xlYmlub2NsYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dhdXJhdmphc3NhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYXZpZG1lcnJpcXVlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21kc2lzdG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmV3b2ZmaWNlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rb2pvdXJpbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kbmlybWFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmthLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yX3NoaXpuaXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx1aXNpb19hemV2ZWRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nsb3Vkc3R1ZGlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnZpZXJpY2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWxleGl2YW5pY2hraW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZnJhbl9tY2hhbXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGVycmV0bWFnYWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JldHJheWRhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYWRpa2thcmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWF0YmVlZG90Y29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVteXdvcmJveXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnBhcnRyaWRnZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsa29wZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2lsdjNyZ3ZuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZXZpemlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5zbWl0aGFnZW5jeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYXdsYndveS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aXRvcjM3Ni8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXNhc3Ryb3pvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoaW1vX2N6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2phc29ubWFya2pvbmVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xoYXVzZXJtYW5uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3hyYXZpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ndWlzY2htaXR0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpZ29icm9ueC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYW5naGFsMC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWd1ZWxrb29yZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdXJnZW9uaXN0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NocmlzdGlhbm9saWZmLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Nhc3BlcmdybC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1rYXJuYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pcGF2ZWxlay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9waWVycmVfbmVsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3kyZ3JhcGhpYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVybGluZ3J1bGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsYnVzY2FpbmZvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jlbm55amllbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdHVzaG9uYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lc3RlYmFudXJpYmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1icmNlY3JlYXRpb25zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbmlsbG9zLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsbGlvdGxld2lzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NoYXJsZXNycHJhdHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmxhZHluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtbWVmZmVzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NibGFuY29fZXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbGVvbmZlZG90b3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmFuZ2FmYW5ncy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jaHJpc19mcmVlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90Z29ybXR4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JyeWFuX3RvcGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qcHNjcmliYmxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWdodHk1NS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJib250d2VsdmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXNhYWNmaWZ0aC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pYW1qZGVsZW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nub3d3cml0ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iYXJwdXRyby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcmV3YnlyZWVzZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWNoYWNvcmF6emkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlzdHJpYW5pb3NpcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYWdvbzA0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BlaGFtb25kZWxsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95YXl0ZWVqYXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYV9oYXJyaXM4OC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGd1bnNhbmFicmlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3pmb3JyZXN0ZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3ZhbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2FybG9zamdzb3VzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nZW9iaWthcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haF9saWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xvb25leWRvb2RsZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXJkZ3I4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RkZ2djY2FhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3phY2tlZWxlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3JtYW5ib3gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWxfZnVlcnRpc2ltby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pc21haWxfYmlsdGFnaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWFuZ29tZXp3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pubW5yZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wYXRyaWNrY29vbWJlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J5YW5qb2huc29uX21lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtvbHNjaGVza3kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVmZmdvbGVuc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2t2YXNuaWMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZ2F1Y2hvbWF0dC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hZnVzaW5hdHRvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmlub2gvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb2thbnN1cnJlZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRhbWF3ZXNvbWVmYWNlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtaWxlYm91ZGVsaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FyaXNoaV8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVhbm1hbWFydGluZXovMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2lraXppbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhbnRobXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWtnaW5mby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90ZXJyb3JwaXhlbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jdXJpb3Vzb25hdXQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJoZWVtby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsY29sZW5zby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mb2N6emkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFydGlwMDcvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhhb2RhbmcxNy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2huY2FmYXp6YS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yb2JpbmxheWZpZWxkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZyYW5jaXNjb2Ftay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hYmR1bGh5ZXVrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcmtsYW1iLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Vkb2JlbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVzZW5mcmVkcmlrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pa2FlbGpvcmh1bHQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hyaXNzbG93aWsvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmluY2lhcnRzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lZWxmb3JkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VsbGlvdG5vbHRlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95ZWh1ZGFiLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpamF5a2FydGhpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZnJvaHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zZXBfbWFydGlucy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hdHRhY2tzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1cjRkeWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHVtc2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2luc3RhbG94LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmdvc2FuZ28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGF1bGZhcmluby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXpha3k5OTkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2l3aXVwb3Zlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9udmt6bmVtby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90b21fZXZlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYXRidXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd29vZHNtYW4wMDEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvam9zaG1lZGVza2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdGhld2lsbGJlYXJkLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3BzYWlrYWxpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZV9ibGFjay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbGVpbmFkc2F5cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjdXNnb3JpbGxpdXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaG90YV92LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pnaHlsbGViZXJ0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NoaW56ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYW5wYWxvdW5lay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbWllc3Bva2VuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hlcl9ydXUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFuc293dGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZlbGlwZWFwaXJlc3MvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFndWd6YnJhbmQyZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9wb3N0ZXJqb2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmF0aGFsaWVfZnMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9iYnl0d29zaG9lcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kcmVpemxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVteW1vdXRvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lbGlzYWJldGhramFlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ub3RiYWRhcnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbW9oYW5yb2hpdGgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamxzb2xlcmRlbHRvcm8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaXRza2F3c2FyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Nsb3dzcG9jay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci96dmNoa2VsbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvd2lsamFuc2xvZnN0cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY3JhaWdoZW5uZWJlcnJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RydWJlYXR0by8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qdWF1bWxvbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW1zY291dG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvQmVub3VhcnJhZGVNLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dpcHN5X3JhZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXRvbmV0X2lsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Fya29rb2xleS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pdHNhamltaXRoaW5nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NtYWxvbnNvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY3RvcmRlYW5kYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9fZHdpdGVfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JpY2hhcmRnYXJyZXR0cy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ncmVncndpbGtpbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbmF0b2xpbmljb2xhZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdTRzaDFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZhbm90aXJsb25pLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL29zdGlyYnUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGFyY3lzdG9uZ2UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbmFpdGFuYW1vcmVuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9taWNoYWVsY29taXNrZXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWRoaWFyZGFuYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJjb21hbm9fLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RhdmlkY2F6YWxpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9mYWxjb25lcmllLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dyZWdraWxpYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmNyYWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9semFubWFyY28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG93X3Jlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFqa2kvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGV0YXJfcHJvZy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb25rc3ByLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrbWFsZmlrcmkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWZhY2NoaW5lbGxvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F0YW5pc20vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGFycnlfc2lzdGFsYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXVycmF5c3dpZnQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYm9id2Fzc2VybWFubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYXZyMWwwLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hZHNoZW5zZWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJfc3VidGxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RldmlsamhvXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYWxpbWlhbm9mZi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2V0cnVlc2RlbGwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHdpdHR5cG9yay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haXJza3lsYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZG5lemt1bWFyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RnYWpqYXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hlcmlmX2IvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2FsdmFmYy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sb3Vpc19jdXJyaWUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGVlZW5yaWdodC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jeWJpbmQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXlyb25uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpY2t5c2hpdHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3dlZXRkZWxpc2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2JvbGxlcjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5kcmVzZGphc3NvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21lbHZpbmRpZGl0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHlzb2xvbW9uLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoYWlzc2VsZW5hdG9yXy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sdm92ZW5vay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9naXVsaXVzYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9iZWx5YWV2X3JzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL292ZXJjbG9hY2tlZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYW1hbF9jaGFuZW1hbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9pbmN1Ym84Mi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oZWxsb2ZldmVycnJyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21oYWxpZ293c2tpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N1bmxhbmRpY3R3aW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYnU3OTIxLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuZHl0bGF3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2plcmVtZXJ5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2ZpbmNoamtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmlnbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91bXVyZ2RrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Njb3R0ZmVsdGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nYW5zZXJlbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXV0dV9rcmlzaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2R5dGFnZ2FydC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9udGZibG9nLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RhbnZlZXJyYW8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaGZhbHVjYXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWx4bGVyb3lkZXZhbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rdWNpbmdiZWxhbmc0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2Jhcmdhb3JvYmFsby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jb2xncnV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0YWxld2luZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9reWxlZnJvc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmF1bWFubnpvbmUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYW5nZWxjb2xiZXJnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhY2hpbmdhd2FzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pqc2hhdzE0LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3JhbWFuYXRoYW5fcGR5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvaG5kZXplbWJlci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uaWxzaG9lbnNvbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZG9ubW9ycmVhbGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnV0enVtaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9icmFuZG9uZmxhdHNvZGEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2VyZ2V5YWxtb25lLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tsZWZ1ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9raXJhbmdvcGFsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhdW1hbm5fYWxleC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXR0aGV3a2F5Xy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qYXlfd2lsYnVybi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zaGVzZ2FyZWQvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXByaWVuZGVhdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2hucmlvcmRhbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93YWtlX2dzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWtzaXRhcHB1cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW1zZ3VsYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGlsYW50cmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaW1vbWVudWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc2lyY2FsZWJncm92ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uZXdicnVzaGVzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hzaW55bzIzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL200cmlvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2thdGllbWRhbHkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvczRmMS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9lY29tbWVyY2VpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJsaW5qYXlha29keS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zd29vc2h5Y3VlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYW5nZHRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvZGVyZGlhei8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9ibHVlZnhfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZpdmVrcHJ2ci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYXNoYV9zaGVzdGFrb3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZXVnZW5lZXdlYi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZ2NsZWdnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL24xZ2h0X2NvZGVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2RpeGNoZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmxha2VoYXdrc3dvcnRoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RydWVibG9vZF8zMy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYWlfbmluaF9uZ3V5ZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWFyY2xnb256YWxlcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci95ZXNtZWNrLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZXBoY291ZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb3Jvbm1hbGtpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3J1ZWhsZGVzaWduLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FuYXNuYWthd2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2lqYW5tYWhhcmphbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci93ZWFyZXNhdmFzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3N0ZWZ2ZGhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90d2VldHViaGFpLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsZWNhcnBlbnRpZXIvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZml0ZXJpay8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hbnRvbnlyeW5keWEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZDAwbWF6LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZW9ubHl6ZWtlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21pc3NhYWFteS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9jYXJsb3NtLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hbmVrZW50aGUvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcmVldGFqYXllbmRyYS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qZXJlbXlzaGlta28vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanVzdGlucmdyYWhhbS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zdGVmYW5vem9mZm9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9vdmVycmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbXJlYmF5MDA3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NodmVsbzk2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3B5cm9uaXRlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3RoZWRqcGV0ZXJzZW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcnR5dWttYWV2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL193aWxsaWFtZ3VlcnJhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsYmVydGF1Z3VzdGluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3Zpa2FzaHBhdGhhazE4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2tldmluam9obmRheXkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdmpfZGVtaWVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2NvbGlycGl4b2lsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2dvZGRhcmRsZXdpcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9sYWFzbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvanFpdXNzLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hleWNhbXRheWxvci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9uYXN0eWFfbWFuZS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXN0ZXJtaW5kZXNpZ24vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2Npbm9qYXNzbzEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbnlhbmNlY29tLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhbmR5d29vZHJ1ZmYvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYmlnaGFuZGRlc2lnbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zYnRyYW5zcGFyZW50LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2F2aWRkYXllbnRvbmJheS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yaWNod2lsZC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXlzaXhfZGl6enkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvdHVyOGxlLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NleWVkaG9zc2VpbjEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcHJpdmV0d2FnbmVyLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VtbWFuZGVubi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kZXZfZXNzZW50aWFscy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qbWZzb2NpYWwvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3lhcmRlbm9vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXRlYW9kdml0ZXphLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dlYXZlcm1lZGlhLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211ZmFkZGFsX213LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2hhZmVlc2toYW4vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYXNoZXJuYXRhbGkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvc3VsYXFvLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2VkZGllY2hlbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb3NlY2FybG9zcHNoLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3ZtX2YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZW5yaWNvY2ljY29uaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kYW5tYXJ0aW43MC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9nbW91cmllci8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kb25qYWluLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21yeGxva2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvX3BlZHJvcGluaG8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZWl0YXJhZmEvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvb3NjYXJvd3VzdS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9yYWxwaF9sYW0vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvcGFuY2hhamFueWFnLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3dvb2R5ZG90bXgvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvamVycnliYWkxOTA3LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21hcnNoYWxsY2hlbl8vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIveGFtb3JlcC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9haW9fX18vMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvY2hhYWJhbmVfd2FpbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci90eGN4LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FrYXNoc2hhcm1hMzkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZmFsbGluZ19zb3VsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NhaW5yYWphLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL211Z3VrYW1pbC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9qb2hhbm5lc25ldS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9tYXJrd2llbmFuZHMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIva2FydGhpcGFucmFqLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2JhbGFrYXl1cml5LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2FsYW5femhhbmdfLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2xheWVyc3Nzcy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9rYXNwZXJub3Jka3Zpc3QvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbWlyZmFucXVyZXNoaS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYW5uYV9zbWkvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvVk1pbGVzY3UvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvYWVvbjU2LzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL21fa2FsaWJyeS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zcmVlaml0aGV4cC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9kaWNlc2FsZXMvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvZGhvb3RfYW1pdC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9zbWVub3YvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvbG9uZXNvbWVsZW1vbi8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92bGFkaW1pcmRldmljLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2pvZWxjaXByaWFuby8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9oYWxpZ2FsaWhhcnVuLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL2J1bGVzd2FwbmlsLzEyOC5qcGdcIixcbiAgXCJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdWlmYWNlcy9mYWNlcy90d2l0dGVyL3NlcmVma2EvMTI4LmpwZ1wiLFxuICBcImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS91aWZhY2VzL2ZhY2VzL3R3aXR0ZXIvaWZhcmFmb25vdy8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci92aWthc3ZpbmZvdGVjaC8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci91cnJ1dGltZW9saS8xMjguanBnXCIsXG4gIFwiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL3VpZmFjZXMvZmFjZXMvdHdpdHRlci9hcmVhbmRhY29tLzEyOC5qcGdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiY29tXCIsXG4gIFwiYml6XCIsXG4gIFwiaW5mb1wiLFxuICBcIm5hbWVcIixcbiAgXCJuZXRcIixcbiAgXCJvcmdcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiZXhhbXBsZS5vcmdcIixcbiAgXCJleGFtcGxlLmNvbVwiLFxuICBcImV4YW1wbGUubmV0XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImdtYWlsLmNvbVwiLFxuICBcInlhaG9vLmNvbVwiLFxuICBcImhvdG1haWwuY29tXCJcbl07XG4iLCJ2YXIgaW50ZXJuZXQgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gaW50ZXJuZXQ7XG5pbnRlcm5ldC5mcmVlX2VtYWlsID0gcmVxdWlyZShcIi4vZnJlZV9lbWFpbFwiKTtcbmludGVybmV0LmV4YW1wbGVfZW1haWwgPSByZXF1aXJlKFwiLi9leGFtcGxlX2VtYWlsXCIpO1xuaW50ZXJuZXQuZG9tYWluX3N1ZmZpeCA9IHJlcXVpcmUoXCIuL2RvbWFpbl9zdWZmaXhcIik7XG5pbnRlcm5ldC5hdmF0YXJfdXJpID0gcmVxdWlyZShcIi4vYXZhdGFyX3VyaVwiKTtcbiIsInZhciBsb3JlbSA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBsb3JlbTtcbmxvcmVtLndvcmRzID0gcmVxdWlyZShcIi4vd29yZHNcIik7XG5sb3JlbS5zdXBwbGVtZW50YWwgPSByZXF1aXJlKFwiLi9zdXBwbGVtZW50YWxcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImFiYmFzXCIsXG4gIFwiYWJkdWNvXCIsXG4gIFwiYWJlb1wiLFxuICBcImFic2NpZG9cIixcbiAgXCJhYnNjb25kaXR1c1wiLFxuICBcImFic2Vuc1wiLFxuICBcImFic29yYmVvXCIsXG4gIFwiYWJzcXVlXCIsXG4gIFwiYWJzdGVyZ29cIixcbiAgXCJhYnN1bVwiLFxuICBcImFidW5kYW5zXCIsXG4gIFwiYWJ1dG9yXCIsXG4gIFwiYWNjZWRvXCIsXG4gIFwiYWNjZW5kb1wiLFxuICBcImFjY2VwdHVzXCIsXG4gIFwiYWNjaXBpb1wiLFxuICBcImFjY29tbW9kb1wiLFxuICBcImFjY3VzYXRvclwiLFxuICBcImFjZXJcIixcbiAgXCJhY2VyYml0YXNcIixcbiAgXCJhY2VydnVzXCIsXG4gIFwiYWNpZHVzXCIsXG4gIFwiYWNpZXNcIixcbiAgXCJhY3F1aXJvXCIsXG4gIFwiYWNzaVwiLFxuICBcImFkYW1vXCIsXG4gIFwiYWRhdWdlb1wiLFxuICBcImFkZG9cIixcbiAgXCJhZGR1Y29cIixcbiAgXCJhZGVtcHRpb1wiLFxuICBcImFkZW9cIixcbiAgXCJhZGVwdGlvXCIsXG4gIFwiYWRmZWN0dXNcIixcbiAgXCJhZGZlcm9cIixcbiAgXCJhZGZpY2lvXCIsXG4gIFwiYWRmbGljdG9cIixcbiAgXCJhZGhhZXJvXCIsXG4gIFwiYWRodWNcIixcbiAgXCJhZGljaW9cIixcbiAgXCJhZGltcGxlb1wiLFxuICBcImFkaW52ZW50aXRpYXNcIixcbiAgXCJhZGlwaXNjb3JcIixcbiAgXCJhZGl1dm9cIixcbiAgXCJhZG1pbmlzdHJhdGlvXCIsXG4gIFwiYWRtaXJhdGlvXCIsXG4gIFwiYWRtaXR0b1wiLFxuICBcImFkbW9uZW9cIixcbiAgXCJhZG1vdmVvXCIsXG4gIFwiYWRudW9cIixcbiAgXCJhZG9wdG9cIixcbiAgXCJhZHNpZHVlXCIsXG4gIFwiYWRzdHJpbmdvXCIsXG4gIFwiYWRzdWVzY29cIixcbiAgXCJhZHN1bVwiLFxuICBcImFkdWxhdGlvXCIsXG4gIFwiYWR1bGVzY2Vuc1wiLFxuICBcImFkdWx0dXNcIixcbiAgXCJhZHVyb1wiLFxuICBcImFkdmVuaW9cIixcbiAgXCJhZHZlcnN1c1wiLFxuICBcImFkdm9jb1wiLFxuICBcImFlZGlmaWNpdW1cIixcbiAgXCJhZWdlclwiLFxuICBcImFlZ3JlXCIsXG4gIFwiYWVncm90YXRpb1wiLFxuICBcImFlZ3J1c1wiLFxuICBcImFlbmV1c1wiLFxuICBcImFlcXVpdGFzXCIsXG4gIFwiYWVxdXVzXCIsXG4gIFwiYWVyXCIsXG4gIFwiYWVzdGFzXCIsXG4gIFwiYWVzdGl2dXNcIixcbiAgXCJhZXN0dXNcIixcbiAgXCJhZXRhc1wiLFxuICBcImFldGVybnVzXCIsXG4gIFwiYWdlclwiLFxuICBcImFnZ2Vyb1wiLFxuICBcImFnZ3JlZGlvclwiLFxuICBcImFnbml0aW9cIixcbiAgXCJhZ25vc2NvXCIsXG4gIFwiYWdvXCIsXG4gIFwiYWl0XCIsXG4gIFwiYWl1bnRcIixcbiAgXCJhbGllbnVzXCIsXG4gIFwiYWxpaVwiLFxuICBcImFsaW9xdWlcIixcbiAgXCJhbGlxdWFcIixcbiAgXCJhbGl1c1wiLFxuICBcImFsbGF0dXNcIixcbiAgXCJhbG9cIixcbiAgXCJhbHRlclwiLFxuICBcImFsdHVzXCIsXG4gIFwiYWx2ZXVzXCIsXG4gIFwiYW1hcml0dWRvXCIsXG4gIFwiYW1iaXR1c1wiLFxuICBcImFtYnVsb1wiLFxuICBcImFtaWNpdGlhXCIsXG4gIFwiYW1pY3VsdW1cIixcbiAgXCJhbWlzc2lvXCIsXG4gIFwiYW1pdGFcIixcbiAgXCJhbWl0dG9cIixcbiAgXCJhbW9cIixcbiAgXCJhbW9yXCIsXG4gIFwiYW1vdmVvXCIsXG4gIFwiYW1wbGV4dXNcIixcbiAgXCJhbXBsaXR1ZG9cIixcbiAgXCJhbXBsdXNcIixcbiAgXCJhbmNpbGxhXCIsXG4gIFwiYW5nZWx1c1wiLFxuICBcImFuZ3VsdXNcIixcbiAgXCJhbmd1c3R1c1wiLFxuICBcImFuaW1hZHZlcnRvXCIsXG4gIFwiYW5pbWlcIixcbiAgXCJhbmltdXNcIixcbiAgXCJhbm51c1wiLFxuICBcImFuc2VyXCIsXG4gIFwiYW50ZVwiLFxuICBcImFudGVhXCIsXG4gIFwiYW50ZXBvbm9cIixcbiAgXCJhbnRpcXV1c1wiLFxuICBcImFwZXJpb1wiLFxuICBcImFwZXJ0ZVwiLFxuICBcImFwb3N0b2x1c1wiLFxuICBcImFwcGFyYXR1c1wiLFxuICBcImFwcGVsbG9cIixcbiAgXCJhcHBvbm9cIixcbiAgXCJhcHBvc2l0dXNcIixcbiAgXCJhcHByb2JvXCIsXG4gIFwiYXB0b1wiLFxuICBcImFwdHVzXCIsXG4gIFwiYXB1ZFwiLFxuICBcImFxdWFcIixcbiAgXCJhcmFcIixcbiAgXCJhcmFuZWFcIixcbiAgXCJhcmJpdHJvXCIsXG4gIFwiYXJib3JcIixcbiAgXCJhcmJ1c3R1bVwiLFxuICBcImFyY2FcIixcbiAgXCJhcmNlb1wiLFxuICBcImFyY2Vzc29cIixcbiAgXCJhcmN1c1wiLFxuICBcImFyZ2VudHVtXCIsXG4gIFwiYXJndW1lbnR1bVwiLFxuICBcImFyZ3VvXCIsXG4gIFwiYXJtYVwiLFxuICBcImFybWFyaXVtXCIsXG4gIFwiYXJtb1wiLFxuICBcImFyb1wiLFxuICBcImFyc1wiLFxuICBcImFydGljdWx1c1wiLFxuICBcImFydGlmaWNpb3NlXCIsXG4gIFwiYXJ0b1wiLFxuICBcImFyeFwiLFxuICBcImFzY2lzY29cIixcbiAgXCJhc2NpdFwiLFxuICBcImFzcGVyXCIsXG4gIFwiYXNwaWNpb1wiLFxuICBcImFzcG9ydG9cIixcbiAgXCJhc3NlbnRhdG9yXCIsXG4gIFwiYXN0cnVtXCIsXG4gIFwiYXRhdnVzXCIsXG4gIFwiYXRlclwiLFxuICBcImF0cXVpXCIsXG4gIFwiYXRyb2NpdGFzXCIsXG4gIFwiYXRyb3hcIixcbiAgXCJhdHRlcm9cIixcbiAgXCJhdHRvbGxvXCIsXG4gIFwiYXR0b25iaXR1c1wiLFxuICBcImF1Y3RvclwiLFxuICBcImF1Y3R1c1wiLFxuICBcImF1ZGFjaWFcIixcbiAgXCJhdWRheFwiLFxuICBcImF1ZGVudGlhXCIsXG4gIFwiYXVkZW9cIixcbiAgXCJhdWRpb1wiLFxuICBcImF1ZGl0b3JcIixcbiAgXCJhdWZlcm9cIixcbiAgXCJhdXJldXNcIixcbiAgXCJhdXJpc1wiLFxuICBcImF1cnVtXCIsXG4gIFwiYXV0XCIsXG4gIFwiYXV0ZW1cIixcbiAgXCJhdXR1c1wiLFxuICBcImF1eGlsaXVtXCIsXG4gIFwiYXZhcml0aWFcIixcbiAgXCJhdmFydXNcIixcbiAgXCJhdmVob1wiLFxuICBcImF2ZXJ0b1wiLFxuICBcImF2b2NvXCIsXG4gIFwiYmFpdWx1c1wiLFxuICBcImJhbGJ1c1wiLFxuICBcImJhcmJhXCIsXG4gIFwiYmFyZHVzXCIsXG4gIFwiYmFzaXVtXCIsXG4gIFwiYmVhdHVzXCIsXG4gIFwiYmVsbGljdXNcIixcbiAgXCJiZWxsdW1cIixcbiAgXCJiZW5lXCIsXG4gIFwiYmVuZWZpY2l1bVwiLFxuICBcImJlbmV2b2xlbnRpYVwiLFxuICBcImJlbmlnbmVcIixcbiAgXCJiZXN0aWFcIixcbiAgXCJiaWJvXCIsXG4gIFwiYmlzXCIsXG4gIFwiYmxhbmRpb3JcIixcbiAgXCJib251c1wiLFxuICBcImJvc1wiLFxuICBcImJyZXZpc1wiLFxuICBcImNhZG9cIixcbiAgXCJjYWVjdXNcIixcbiAgXCJjYWVsZXN0aXNcIixcbiAgXCJjYWVsdW1cIixcbiAgXCJjYWxhbWl0YXNcIixcbiAgXCJjYWxjYXJcIixcbiAgXCJjYWxjb1wiLFxuICBcImNhbGN1bHVzXCIsXG4gIFwiY2FsbGlkZVwiLFxuICBcImNhbXBhbmFcIixcbiAgXCJjYW5kaWR1c1wiLFxuICBcImNhbmlzXCIsXG4gIFwiY2Fub25pY3VzXCIsXG4gIFwiY2FudG9cIixcbiAgXCJjYXBpbGx1c1wiLFxuICBcImNhcGlvXCIsXG4gIFwiY2FwaXR1bHVzXCIsXG4gIFwiY2FwdG9cIixcbiAgXCJjYXB1dFwiLFxuICBcImNhcmJvXCIsXG4gIFwiY2FyY2VyXCIsXG4gIFwiY2FyZW9cIixcbiAgXCJjYXJpZXNcIixcbiAgXCJjYXJpb3N1c1wiLFxuICBcImNhcml0YXNcIixcbiAgXCJjYXJtZW5cIixcbiAgXCJjYXJwb1wiLFxuICBcImNhcnVzXCIsXG4gIFwiY2Fzc29cIixcbiAgXCJjYXN0ZVwiLFxuICBcImNhc3VzXCIsXG4gIFwiY2F0ZW5hXCIsXG4gIFwiY2F0ZXJ2YVwiLFxuICBcImNhdHR1c1wiLFxuICBcImNhdWRhXCIsXG4gIFwiY2F1c2FcIixcbiAgXCJjYXV0ZVwiLFxuICBcImNhdmVvXCIsXG4gIFwiY2F2dXNcIixcbiAgXCJjZWRvXCIsXG4gIFwiY2VsZWJyZXJcIixcbiAgXCJjZWxlclwiLFxuICBcImNlbG9cIixcbiAgXCJjZW5hXCIsXG4gIFwiY2VuYWN1bHVtXCIsXG4gIFwiY2Vub1wiLFxuICBcImNlbnN1cmFcIixcbiAgXCJjZW50dW1cIixcbiAgXCJjZXJub1wiLFxuICBcImNlcm51dXNcIixcbiAgXCJjZXJ0ZVwiLFxuICBcImNlcnRvXCIsXG4gIFwiY2VydHVzXCIsXG4gIFwiY2VydnVzXCIsXG4gIFwiY2V0ZXJhXCIsXG4gIFwiY2hhcmlzbWFcIixcbiAgXCJjaGlyb2dyYXBodW1cIixcbiAgXCJjaWJvXCIsXG4gIFwiY2lidXNcIixcbiAgXCJjaWN1dGFcIixcbiAgXCJjaWxpY2l1bVwiLFxuICBcImNpbWVudGFyaXVzXCIsXG4gIFwiY2ltaW5hdGlvXCIsXG4gIFwiY2luaXNcIixcbiAgXCJjaXJjdW12ZW5pb1wiLFxuICBcImNpdG9cIixcbiAgXCJjaXZpc1wiLFxuICBcImNpdml0YXNcIixcbiAgXCJjbGFtXCIsXG4gIFwiY2xhbW9cIixcbiAgXCJjbGFyb1wiLFxuICBcImNsYXJ1c1wiLFxuICBcImNsYXVkZW9cIixcbiAgXCJjbGF1c3RydW1cIixcbiAgXCJjbGVtZW50aWFcIixcbiAgXCJjbGliYW51c1wiLFxuICBcImNvYWR1bmF0aW9cIixcbiAgXCJjb2FlZ3Jlc2NvXCIsXG4gIFwiY29lcGlcIixcbiAgXCJjb2VyY2VvXCIsXG4gIFwiY29naXRvXCIsXG4gIFwiY29nbmF0dXNcIixcbiAgXCJjb2dub21lblwiLFxuICBcImNvZ29cIixcbiAgXCJjb2hhZXJvXCIsXG4gIFwiY29oaWJlb1wiLFxuICBcImNvaG9yc1wiLFxuICBcImNvbGxpZ29cIixcbiAgXCJjb2xsb2NvXCIsXG4gIFwiY29sbHVtXCIsXG4gIFwiY29sb1wiLFxuICBcImNvbG9yXCIsXG4gIFwiY29tYVwiLFxuICBcImNvbWJpYm9cIixcbiAgXCJjb21idXJvXCIsXG4gIFwiY29tZWRvXCIsXG4gIFwiY29tZXNcIixcbiAgXCJjb21ldGVzXCIsXG4gIFwiY29taXNcIixcbiAgXCJjb21pdGF0dXNcIixcbiAgXCJjb21tZW1vcm9cIixcbiAgXCJjb21taW5vclwiLFxuICBcImNvbW1vZG9cIixcbiAgXCJjb21tdW5pc1wiLFxuICBcImNvbXBhcm9cIixcbiAgXCJjb21wZWxsb1wiLFxuICBcImNvbXBsZWN0dXNcIixcbiAgXCJjb21wb25vXCIsXG4gIFwiY29tcHJlaGVuZG9cIixcbiAgXCJjb21wdHVzXCIsXG4gIFwiY29uYXR1c1wiLFxuICBcImNvbmNlZG9cIixcbiAgXCJjb25jaWRvXCIsXG4gIFwiY29uY3VsY29cIixcbiAgXCJjb25kaWNvXCIsXG4gIFwiY29uZHVjb1wiLFxuICBcImNvbmZlcm9cIixcbiAgXCJjb25maWRvXCIsXG4gIFwiY29uZm9ydG9cIixcbiAgXCJjb25mdWdvXCIsXG4gIFwiY29uZ3JlZ2F0aW9cIixcbiAgXCJjb25pY2lvXCIsXG4gIFwiY29uaWVjdG9cIixcbiAgXCJjb25pdG9yXCIsXG4gIFwiY29uaXVyYXRpb1wiLFxuICBcImNvbm9yXCIsXG4gIFwiY29ucXVlcm9yXCIsXG4gIFwiY29uc2NlbmRvXCIsXG4gIFwiY29uc2Vydm9cIixcbiAgXCJjb25zaWRlcm9cIixcbiAgXCJjb25zcGVyZ29cIixcbiAgXCJjb25zdGFuc1wiLFxuICBcImNvbnN1YXNvclwiLFxuICBcImNvbnRhYmVzY29cIixcbiAgXCJjb250ZWdvXCIsXG4gIFwiY29udGlnb1wiLFxuICBcImNvbnRyYVwiLFxuICBcImNvbnR1cmJvXCIsXG4gIFwiY29udmVudHVzXCIsXG4gIFwiY29udm9jb1wiLFxuICBcImNvcGlhXCIsXG4gIFwiY29waW9zZVwiLFxuICBcImNvcm51XCIsXG4gIFwiY29yb25hXCIsXG4gIFwiY29ycHVzXCIsXG4gIFwiY29ycmVwdGl1c1wiLFxuICBcImNvcnJpZ29cIixcbiAgXCJjb3Jyb2Jvcm9cIixcbiAgXCJjb3JydW1wb1wiLFxuICBcImNvcnVzY3VzXCIsXG4gIFwiY290aWRpZVwiLFxuICBcImNyYXB1bGFcIixcbiAgXCJjcmFzXCIsXG4gIFwiY3Jhc3RpbnVzXCIsXG4gIFwiY3JlYXRvclwiLFxuICBcImNyZWJlclwiLFxuICBcImNyZWJyb1wiLFxuICBcImNyZWRvXCIsXG4gIFwiY3Jlb1wiLFxuICBcImNyZXB0aW9cIixcbiAgXCJjcmVwdXNjdWx1bVwiLFxuICBcImNyZXNjb1wiLFxuICBcImNyZXRhXCIsXG4gIFwiY3JpYnJvXCIsXG4gIFwiY3JpbmlzXCIsXG4gIFwiY3J1Y2lhbWVudHVtXCIsXG4gIFwiY3J1ZGVsaXNcIixcbiAgXCJjcnVlbnR1c1wiLFxuICBcImNydXJcIixcbiAgXCJjcnVzdHVsdW1cIixcbiAgXCJjcnV4XCIsXG4gIFwiY3ViaWN1bGFyaXNcIixcbiAgXCJjdWJpdHVtXCIsXG4gIFwiY3Vib1wiLFxuICBcImN1aVwiLFxuICBcImN1aXVzXCIsXG4gIFwiY3VscGFcIixcbiAgXCJjdWxwb1wiLFxuICBcImN1bHRlbGx1c1wiLFxuICBcImN1bHR1cmFcIixcbiAgXCJjdW1cIixcbiAgXCJjdW5hYnVsYVwiLFxuICBcImN1bmFlXCIsXG4gIFwiY3VuY3RhdGlvXCIsXG4gIFwiY3VwaWRpdGFzXCIsXG4gIFwiY3VwaW9cIixcbiAgXCJjdXBwZWRpYVwiLFxuICBcImN1cHJlc3N1c1wiLFxuICBcImN1clwiLFxuICBcImN1cmFcIixcbiAgXCJjdXJhdGlvXCIsXG4gIFwiY3VyaWFcIixcbiAgXCJjdXJpb3NpdGFzXCIsXG4gIFwiY3VyaXNcIixcbiAgXCJjdXJvXCIsXG4gIFwiY3VycmljdWx1bVwiLFxuICBcImN1cnJ1c1wiLFxuICBcImN1cnNpbVwiLFxuICBcImN1cnNvXCIsXG4gIFwiY3Vyc3VzXCIsXG4gIFwiY3VydG9cIixcbiAgXCJjdXJ0dXNcIixcbiAgXCJjdXJ2b1wiLFxuICBcImN1cnZ1c1wiLFxuICBcImN1c3RvZGlhXCIsXG4gIFwiZGFtbmF0aW9cIixcbiAgXCJkYW1ub1wiLFxuICBcImRhcGlmZXJcIixcbiAgXCJkZWJlb1wiLFxuICBcImRlYmlsaXRvXCIsXG4gIFwiZGVjZW5zXCIsXG4gIFwiZGVjZXJub1wiLFxuICBcImRlY2V0XCIsXG4gIFwiZGVjaW11c1wiLFxuICBcImRlY2lwaW9cIixcbiAgXCJkZWNvclwiLFxuICBcImRlY3JldHVtXCIsXG4gIFwiZGVjdW1ib1wiLFxuICBcImRlZGVjb3JcIixcbiAgXCJkZWRpY29cIixcbiAgXCJkZWR1Y29cIixcbiAgXCJkZWZhZWNvXCIsXG4gIFwiZGVmZW5kb1wiLFxuICBcImRlZmVyb1wiLFxuICBcImRlZmVzc3VzXCIsXG4gIFwiZGVmZXRpc2NvclwiLFxuICBcImRlZmljaW9cIixcbiAgXCJkZWZpZ29cIixcbiAgXCJkZWZsZW9cIixcbiAgXCJkZWZsdW9cIixcbiAgXCJkZWZ1bmdvXCIsXG4gIFwiZGVnZW5lcm9cIixcbiAgXCJkZWdlcm9cIixcbiAgXCJkZWd1c3RvXCIsXG4gIFwiZGVpbmRlXCIsXG4gIFwiZGVsZWN0YXRpb1wiLFxuICBcImRlbGVnb1wiLFxuICBcImRlbGVvXCIsXG4gIFwiZGVsaWJlcm9cIixcbiAgXCJkZWxpY2F0ZVwiLFxuICBcImRlbGlucXVvXCIsXG4gIFwiZGVsdWRvXCIsXG4gIFwiZGVtZW5zXCIsXG4gIFwiZGVtZXJnb1wiLFxuICBcImRlbWl0dG9cIixcbiAgXCJkZW1vXCIsXG4gIFwiZGVtb25zdHJvXCIsXG4gIFwiZGVtb3JvclwiLFxuICBcImRlbXVsY2VvXCIsXG4gIFwiZGVtdW1cIixcbiAgXCJkZW5lZ29cIixcbiAgXCJkZW5pcXVlXCIsXG4gIFwiZGVuc1wiLFxuICBcImRlbnVuY2lvXCIsXG4gIFwiZGVudW9cIixcbiAgXCJkZW9yc3VtXCIsXG4gIFwiZGVwZXJlb1wiLFxuICBcImRlcG9ub1wiLFxuICBcImRlcG9wdWxvXCIsXG4gIFwiZGVwb3J0b1wiLFxuICBcImRlcHJhZWRvclwiLFxuICBcImRlcHJlY2F0b3JcIixcbiAgXCJkZXByaW1vXCIsXG4gIFwiZGVwcm9tb1wiLFxuICBcImRlcHVsc29cIixcbiAgXCJkZXB1dG9cIixcbiAgXCJkZXJlbGlucXVvXCIsXG4gIFwiZGVyaWRlb1wiLFxuICBcImRlcmlwaW9cIixcbiAgXCJkZXNpZGVyb1wiLFxuICBcImRlc2lub1wiLFxuICBcImRlc2lwaW9cIixcbiAgXCJkZXNvbG9cIixcbiAgXCJkZXNwYXJhdHVzXCIsXG4gIFwiZGVzcGVjdG9cIixcbiAgXCJkZXNwaXJtYXRpb1wiLFxuICBcImluZml0XCIsXG4gIFwiaW5mbGFtbWF0aW9cIixcbiAgXCJwYWVuc1wiLFxuICBcInBhdGlvclwiLFxuICBcInBhdHJpYVwiLFxuICBcInBhdHJvY2lub3JcIixcbiAgXCJwYXRydXVzXCIsXG4gIFwicGF1Y2lcIixcbiAgXCJwYXVsYXRpbVwiLFxuICBcInBhdXBlclwiLFxuICBcInBheFwiLFxuICBcInBlY2NhdHVzXCIsXG4gIFwicGVjY29cIixcbiAgXCJwZWN0b1wiLFxuICBcInBlY3R1c1wiLFxuICBcInBlY3VuaWFcIixcbiAgXCJwZWN1c1wiLFxuICBcInBlaW9yXCIsXG4gIFwicGVsXCIsXG4gIFwib2NlclwiLFxuICBcInNvY2l1c1wiLFxuICBcInNvZGFsaXRhc1wiLFxuICBcInNvbFwiLFxuICBcInNvbGVvXCIsXG4gIFwic29saW9cIixcbiAgXCJzb2xpdHVkb1wiLFxuICBcInNvbGl1bVwiLFxuICBcInNvbGxlcnNcIixcbiAgXCJzb2xsaWNpdG9cIixcbiAgXCJzb2x1bVwiLFxuICBcInNvbHVzXCIsXG4gIFwic29sdXRpb1wiLFxuICBcInNvbHZvXCIsXG4gIFwic29tbmljdWxvc3VzXCIsXG4gIFwic29tbnVzXCIsXG4gIFwic29uaXR1c1wiLFxuICBcInNvbm9cIixcbiAgXCJzb3BoaXNtYXRhXCIsXG4gIFwic29wb3JcIixcbiAgXCJzb3JkZW9cIixcbiAgXCJzb3J0aXR1c1wiLFxuICBcInNwYXJnb1wiLFxuICBcInNwZWNpb3N1c1wiLFxuICBcInNwZWN0YWN1bHVtXCIsXG4gIFwic3BlY3VsdW1cIixcbiAgXCJzcGVybm9cIixcbiAgXCJzcGVyb1wiLFxuICBcInNwZXNcIixcbiAgXCJzcGljdWx1bVwiLFxuICBcInNwaXJpdHVzXCIsXG4gIFwic3BvbGlhdGlvXCIsXG4gIFwic3BvbnRlXCIsXG4gIFwic3RhYmlsaXNcIixcbiAgXCJzdGF0aW1cIixcbiAgXCJzdGF0dWFcIixcbiAgXCJzdGVsbGFcIixcbiAgXCJzdGlsbGljaWRpdW1cIixcbiAgXCJzdGlwZXNcIixcbiAgXCJzdGlwc1wiLFxuICBcInN0b1wiLFxuICBcInN0cmVudXVzXCIsXG4gIFwic3RydWVzXCIsXG4gIFwic3R1ZGlvXCIsXG4gIFwic3R1bHR1c1wiLFxuICBcInN1YWRlb1wiLFxuICBcInN1YXNvcmlhXCIsXG4gIFwic3ViXCIsXG4gIFwic3ViaXRvXCIsXG4gIFwic3ViaXVuZ29cIixcbiAgXCJzdWJsaW1lXCIsXG4gIFwic3VibmVjdG9cIixcbiAgXCJzdWJzZWNvXCIsXG4gIFwic3Vic3RhbnRpYVwiLFxuICBcInN1YnZlbmlvXCIsXG4gIFwic3VjY2Vkb1wiLFxuICBcInN1Y2N1cnJvXCIsXG4gIFwic3VmZmljaW9cIixcbiAgXCJzdWZmb2NvXCIsXG4gIFwic3VmZnJhZ2l1bVwiLFxuICBcInN1Z2dlcm9cIixcbiAgXCJzdWlcIixcbiAgXCJzdWx1bVwiLFxuICBcInN1bVwiLFxuICBcInN1bW1hXCIsXG4gIFwic3VtbWlzc2VcIixcbiAgXCJzdW1tb3BlcmVcIixcbiAgXCJzdW1vXCIsXG4gIFwic3VtcHR1c1wiLFxuICBcInN1cGVsbGV4XCIsXG4gIFwic3VwZXJcIixcbiAgXCJzdXBwZWxsZXhcIixcbiAgXCJzdXBwbGFudG9cIixcbiAgXCJzdXBwb25vXCIsXG4gIFwic3VwcmFcIixcbiAgXCJzdXJjdWx1c1wiLFxuICBcInN1cmdvXCIsXG4gIFwic3Vyc3VtXCIsXG4gIFwic3VzY2lwaW9cIixcbiAgXCJzdXNwZW5kb1wiLFxuICBcInN1c3RpbmVvXCIsXG4gIFwic3V1c1wiLFxuICBcInN5bmFnb2dhXCIsXG4gIFwidGFiZWxsYVwiLFxuICBcInRhYmVybnVzXCIsXG4gIFwidGFiZXNjb1wiLFxuICBcInRhYmdvXCIsXG4gIFwidGFidWxhXCIsXG4gIFwidGFjZW9cIixcbiAgXCJ0YWN0dXNcIixcbiAgXCJ0YWVkaXVtXCIsXG4gIFwidGFsaW9cIixcbiAgXCJ0YWxpc1wiLFxuICBcInRhbHVzXCIsXG4gIFwidGFtXCIsXG4gIFwidGFtZGl1XCIsXG4gIFwidGFtZW5cIixcbiAgXCJ0YW1ldHNpXCIsXG4gIFwidGFtaXNpdW1cIixcbiAgXCJ0YW1xdWFtXCIsXG4gIFwidGFuZGVtXCIsXG4gIFwidGFudGlsbHVzXCIsXG4gIFwidGFudHVtXCIsXG4gIFwidGFyZHVzXCIsXG4gIFwidGVnb1wiLFxuICBcInRlbWVyaXRhc1wiLFxuICBcInRlbXBlcmFudGlhXCIsXG4gIFwidGVtcGx1bVwiLFxuICBcInRlbXB0YXRpb1wiLFxuICBcInRlbXB1c1wiLFxuICBcInRlbmF4XCIsXG4gIFwidGVuZG9cIixcbiAgXCJ0ZW5lb1wiLFxuICBcInRlbmVyXCIsXG4gIFwidGVudWlzXCIsXG4gIFwidGVudXNcIixcbiAgXCJ0ZXBlc2NvXCIsXG4gIFwidGVwaWR1c1wiLFxuICBcInRlclwiLFxuICBcInRlcmVicm9cIixcbiAgXCJ0ZXJlc1wiLFxuICBcInRlcmdhXCIsXG4gIFwidGVyZ2VvXCIsXG4gIFwidGVyZ2l2ZXJzYXRpb1wiLFxuICBcInRlcmdvXCIsXG4gIFwidGVyZ3VtXCIsXG4gIFwidGVybWVzXCIsXG4gIFwidGVybWluYXRpb1wiLFxuICBcInRlcm9cIixcbiAgXCJ0ZXJyYVwiLFxuICBcInRlcnJlb1wiLFxuICBcInRlcnJpdG9cIixcbiAgXCJ0ZXJyb3JcIixcbiAgXCJ0ZXJzdXNcIixcbiAgXCJ0ZXJ0aXVzXCIsXG4gIFwidGVzdGltb25pdW1cIixcbiAgXCJ0ZXhvXCIsXG4gIFwidGV4dGlsaXNcIixcbiAgXCJ0ZXh0b3JcIixcbiAgXCJ0ZXh0dXNcIixcbiAgXCJ0aGFsYXNzaW51c1wiLFxuICBcInRoZWF0cnVtXCIsXG4gIFwidGhlY2FcIixcbiAgXCJ0aGVtYVwiLFxuICBcInRoZW9sb2d1c1wiLFxuICBcInRoZXJtYWVcIixcbiAgXCJ0aGVzYXVydXNcIixcbiAgXCJ0aGVzaXNcIixcbiAgXCJ0aG9yYXhcIixcbiAgXCJ0aHltYnJhXCIsXG4gIFwidGh5bXVtXCIsXG4gIFwidGliaVwiLFxuICBcInRpbWlkdXNcIixcbiAgXCJ0aW1vclwiLFxuICBcInRpdHVsdXNcIixcbiAgXCJ0b2xlcm9cIixcbiAgXCJ0b2xsb1wiLFxuICBcInRvbmRlb1wiLFxuICBcInRvbnNvclwiLFxuICBcInRvcnF1ZW9cIixcbiAgXCJ0b3JyZW5zXCIsXG4gIFwidG90XCIsXG4gIFwidG90aWRlbVwiLFxuICBcInRvdGllc1wiLFxuICBcInRvdHVzXCIsXG4gIFwidHJhY3RvXCIsXG4gIFwidHJhZG9cIixcbiAgXCJ0cmFob1wiLFxuICBcInRyYW5zXCIsXG4gIFwidHJlZGVjaW1cIixcbiAgXCJ0cmVtb1wiLFxuICBcInRyZXBpZGVcIixcbiAgXCJ0cmVzXCIsXG4gIFwidHJpYnVvXCIsXG4gIFwidHJpY2VzaW11c1wiLFxuICBcInRyaWR1YW5hXCIsXG4gIFwidHJpZ2ludGFcIixcbiAgXCJ0cmlwdWRpb1wiLFxuICBcInRyaXN0aXNcIixcbiAgXCJ0cml1bXBodXNcIixcbiAgXCJ0cnVjaWRvXCIsXG4gIFwidHJ1Y3VsZW50ZXJcIixcbiAgXCJ0dWJpbmV1c1wiLFxuICBcInR1aVwiLFxuICBcInR1bVwiLFxuICBcInR1bXVsdHVzXCIsXG4gIFwidHVuY1wiLFxuICBcInR1cmJhXCIsXG4gIFwidHVyYm9cIixcbiAgXCJ0dXJwZVwiLFxuICBcInR1cnBpc1wiLFxuICBcInR1dGFtZW5cIixcbiAgXCJ0dXRpc1wiLFxuICBcInR5cmFubnVzXCIsXG4gIFwidWJlcnJpbWVcIixcbiAgXCJ1YmlcIixcbiAgXCJ1bGNpc2NvclwiLFxuICBcInVsbHVzXCIsXG4gIFwidWx0ZXJpdXNcIixcbiAgXCJ1bHRpb1wiLFxuICBcInVsdHJhXCIsXG4gIFwidW1icmFcIixcbiAgXCJ1bWVydXNcIixcbiAgXCJ1bXF1YW1cIixcbiAgXCJ1bmFcIixcbiAgXCJ1bmRlXCIsXG4gIFwidW5kaXF1ZVwiLFxuICBcInVuaXZlcnNlXCIsXG4gIFwidW51c1wiLFxuICBcInVyYmFudXNcIixcbiAgXCJ1cmJzXCIsXG4gIFwidXJlZG9cIixcbiAgXCJ1c2l0YXNcIixcbiAgXCJ1c3F1ZVwiLFxuICBcInVzdGlsb1wiLFxuICBcInVzdHVsb1wiLFxuICBcInVzdXNcIixcbiAgXCJ1dGVyXCIsXG4gIFwidXRlcnF1ZVwiLFxuICBcInV0aWxpc1wiLFxuICBcInV0aXF1ZVwiLFxuICBcInV0b3JcIixcbiAgXCJ1dHBvdGVcIixcbiAgXCJ1dHJpbXF1ZVwiLFxuICBcInV0cm9xdWVcIixcbiAgXCJ1dHJ1bVwiLFxuICBcInV4b3JcIixcbiAgXCJ2YWNvXCIsXG4gIFwidmFjdXVzXCIsXG4gIFwidmFkb1wiLFxuICBcInZhZVwiLFxuICBcInZhbGRlXCIsXG4gIFwidmFsZW5zXCIsXG4gIFwidmFsZW9cIixcbiAgXCJ2YWxldHVkb1wiLFxuICBcInZhbGlkdXNcIixcbiAgXCJ2YWxsdW1cIixcbiAgXCJ2YXB1bHVzXCIsXG4gIFwidmFyaWV0YXNcIixcbiAgXCJ2YXJpdXNcIixcbiAgXCJ2ZWhlbWVuc1wiLFxuICBcInZlbFwiLFxuICBcInZlbG9jaXRlclwiLFxuICBcInZlbHVtXCIsXG4gIFwidmVsdXRcIixcbiAgXCJ2ZW5pYVwiLFxuICBcInZlbmlvXCIsXG4gIFwidmVudGl0b1wiLFxuICBcInZlbnRvc3VzXCIsXG4gIFwidmVudHVzXCIsXG4gIFwidmVudXN0YXNcIixcbiAgXCJ2ZXJcIixcbiAgXCJ2ZXJiZXJhXCIsXG4gIFwidmVyYnVtXCIsXG4gIFwidmVyZVwiLFxuICBcInZlcmVjdW5kaWFcIixcbiAgXCJ2ZXJlb3JcIixcbiAgXCJ2ZXJnb1wiLFxuICBcInZlcml0YXNcIixcbiAgXCJ2ZXJvXCIsXG4gIFwidmVyc3VzXCIsXG4gIFwidmVydG9cIixcbiAgXCJ2ZXJ1bXRhbWVuXCIsXG4gIFwidmVydXNcIixcbiAgXCJ2ZXNjb1wiLFxuICBcInZlc2ljYVwiLFxuICBcInZlc3BlclwiLFxuICBcInZlc3BpbGxvXCIsXG4gIFwidmVzdGVyXCIsXG4gIFwidmVzdGlnaXVtXCIsXG4gIFwidmVzdHJ1bVwiLFxuICBcInZldHVzXCIsXG4gIFwidmlhXCIsXG4gIFwidmljaW51c1wiLFxuICBcInZpY2lzc2l0dWRvXCIsXG4gIFwidmljdG9yaWFcIixcbiAgXCJ2aWN0dXNcIixcbiAgXCJ2aWRlbGljZXRcIixcbiAgXCJ2aWRlb1wiLFxuICBcInZpZHVhdGFcIixcbiAgXCJ2aWR1b1wiLFxuICBcInZpZ2lsb1wiLFxuICBcInZpZ29yXCIsXG4gIFwidmlsaWN1c1wiLFxuICBcInZpbGlzXCIsXG4gIFwidmlsaXRhc1wiLFxuICBcInZpbGxhXCIsXG4gIFwidmluY29cIixcbiAgXCJ2aW5jdWx1bVwiLFxuICBcInZpbmRpY29cIixcbiAgXCJ2aW5pdG9yXCIsXG4gIFwidmludW1cIixcbiAgXCJ2aXJcIixcbiAgXCJ2aXJnYVwiLFxuICBcInZpcmdvXCIsXG4gIFwidmlyaWRpc1wiLFxuICBcInZpcmlsaXRlclwiLFxuICBcInZpcnR1c1wiLFxuICBcInZpc1wiLFxuICBcInZpc2N1c1wiLFxuICBcInZpdGFcIixcbiAgXCJ2aXRpb3N1c1wiLFxuICBcInZpdGl1bVwiLFxuICBcInZpdG9cIixcbiAgXCJ2aXZvXCIsXG4gIFwidml4XCIsXG4gIFwidm9iaXNcIixcbiAgXCJ2b2NpZmVyb3JcIixcbiAgXCJ2b2NvXCIsXG4gIFwidm9sYXRpY3VzXCIsXG4gIFwidm9sb1wiLFxuICBcInZvbHViaWxpc1wiLFxuICBcInZvbHVudGFyaXVzXCIsXG4gIFwidm9sdXBcIixcbiAgXCJ2b2x1dGFicnVtXCIsXG4gIFwidm9sdmFcIixcbiAgXCJ2b21lclwiLFxuICBcInZvbWljYVwiLFxuICBcInZvbWl0b1wiLFxuICBcInZvcmFnb1wiLFxuICBcInZvcmF4XCIsXG4gIFwidm9yb1wiLFxuICBcInZvc1wiLFxuICBcInZvdHVtXCIsXG4gIFwidm92ZW9cIixcbiAgXCJ2b3hcIixcbiAgXCJ2dWxhcml0ZXJcIixcbiAgXCJ2dWxnYXJpc1wiLFxuICBcInZ1bGdpdmFndXNcIixcbiAgXCJ2dWxnb1wiLFxuICBcInZ1bGd1c1wiLFxuICBcInZ1bG5lcm9cIixcbiAgXCJ2dWxudXNcIixcbiAgXCJ2dWxwZXNcIixcbiAgXCJ2dWx0aWN1bHVzXCIsXG4gIFwidnVsdHVvc3VzXCIsXG4gIFwieGlwaGlhc1wiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJhbGlhc1wiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwiYXV0XCIsXG4gIFwicGVyZmVyZW5kaXNcIixcbiAgXCJzaXRcIixcbiAgXCJ2b2x1cHRhdGVtXCIsXG4gIFwiYWNjdXNhbnRpdW1cIixcbiAgXCJkb2xvcmVtcXVlXCIsXG4gIFwiYXBlcmlhbVwiLFxuICBcImVhcXVlXCIsXG4gIFwiaXBzYVwiLFxuICBcInF1YWVcIixcbiAgXCJhYlwiLFxuICBcImlsbG9cIixcbiAgXCJpbnZlbnRvcmVcIixcbiAgXCJ2ZXJpdGF0aXNcIixcbiAgXCJldFwiLFxuICBcInF1YXNpXCIsXG4gIFwiYXJjaGl0ZWN0b1wiLFxuICBcImJlYXRhZVwiLFxuICBcInZpdGFlXCIsXG4gIFwiZGljdGFcIixcbiAgXCJzdW50XCIsXG4gIFwiZXhwbGljYWJvXCIsXG4gIFwiYXNwZXJuYXR1clwiLFxuICBcImF1dFwiLFxuICBcIm9kaXRcIixcbiAgXCJhdXRcIixcbiAgXCJmdWdpdFwiLFxuICBcInNlZFwiLFxuICBcInF1aWFcIixcbiAgXCJjb25zZXF1dW50dXJcIixcbiAgXCJtYWduaVwiLFxuICBcImRvbG9yZXNcIixcbiAgXCJlb3NcIixcbiAgXCJxdWlcIixcbiAgXCJyYXRpb25lXCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInNlcXVpXCIsXG4gIFwibmVzY2l1bnRcIixcbiAgXCJuZXF1ZVwiLFxuICBcImRvbG9yZW1cIixcbiAgXCJpcHN1bVwiLFxuICBcInF1aWFcIixcbiAgXCJkb2xvclwiLFxuICBcInNpdFwiLFxuICBcImFtZXRcIixcbiAgXCJjb25zZWN0ZXR1clwiLFxuICBcImFkaXBpc2NpXCIsXG4gIFwidmVsaXRcIixcbiAgXCJzZWRcIixcbiAgXCJxdWlhXCIsXG4gIFwibm9uXCIsXG4gIFwibnVtcXVhbVwiLFxuICBcImVpdXNcIixcbiAgXCJtb2RpXCIsXG4gIFwidGVtcG9yYVwiLFxuICBcImluY2lkdW50XCIsXG4gIFwidXRcIixcbiAgXCJsYWJvcmVcIixcbiAgXCJldFwiLFxuICBcImRvbG9yZVwiLFxuICBcIm1hZ25hbVwiLFxuICBcImFsaXF1YW1cIixcbiAgXCJxdWFlcmF0XCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInV0XCIsXG4gIFwiZW5pbVwiLFxuICBcImFkXCIsXG4gIFwibWluaW1hXCIsXG4gIFwidmVuaWFtXCIsXG4gIFwicXVpc1wiLFxuICBcIm5vc3RydW1cIixcbiAgXCJleGVyY2l0YXRpb25lbVwiLFxuICBcInVsbGFtXCIsXG4gIFwiY29ycG9yaXNcIixcbiAgXCJuZW1vXCIsXG4gIFwiZW5pbVwiLFxuICBcImlwc2FtXCIsXG4gIFwidm9sdXB0YXRlbVwiLFxuICBcInF1aWFcIixcbiAgXCJ2b2x1cHRhc1wiLFxuICBcInNpdFwiLFxuICBcInN1c2NpcGl0XCIsXG4gIFwibGFib3Jpb3NhbVwiLFxuICBcIm5pc2lcIixcbiAgXCJ1dFwiLFxuICBcImFsaXF1aWRcIixcbiAgXCJleFwiLFxuICBcImVhXCIsXG4gIFwiY29tbW9kaVwiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwicXVpc1wiLFxuICBcImF1dGVtXCIsXG4gIFwidmVsXCIsXG4gIFwiZXVtXCIsXG4gIFwiaXVyZVwiLFxuICBcInJlcHJlaGVuZGVyaXRcIixcbiAgXCJxdWlcIixcbiAgXCJpblwiLFxuICBcImVhXCIsXG4gIFwidm9sdXB0YXRlXCIsXG4gIFwidmVsaXRcIixcbiAgXCJlc3NlXCIsXG4gIFwicXVhbVwiLFxuICBcIm5paGlsXCIsXG4gIFwibW9sZXN0aWFlXCIsXG4gIFwiZXRcIixcbiAgXCJpdXN0b1wiLFxuICBcIm9kaW9cIixcbiAgXCJkaWduaXNzaW1vc1wiLFxuICBcImR1Y2ltdXNcIixcbiAgXCJxdWlcIixcbiAgXCJibGFuZGl0aWlzXCIsXG4gIFwicHJhZXNlbnRpdW1cIixcbiAgXCJsYXVkYW50aXVtXCIsXG4gIFwidG90YW1cIixcbiAgXCJyZW1cIixcbiAgXCJ2b2x1cHRhdHVtXCIsXG4gIFwiZGVsZW5pdGlcIixcbiAgXCJhdHF1ZVwiLFxuICBcImNvcnJ1cHRpXCIsXG4gIFwicXVvc1wiLFxuICBcImRvbG9yZXNcIixcbiAgXCJldFwiLFxuICBcInF1YXNcIixcbiAgXCJtb2xlc3RpYXNcIixcbiAgXCJleGNlcHR1cmlcIixcbiAgXCJzaW50XCIsXG4gIFwib2NjYWVjYXRpXCIsXG4gIFwiY3VwaWRpdGF0ZVwiLFxuICBcIm5vblwiLFxuICBcInByb3ZpZGVudFwiLFxuICBcInNlZFwiLFxuICBcInV0XCIsXG4gIFwicGVyc3BpY2lhdGlzXCIsXG4gIFwidW5kZVwiLFxuICBcIm9tbmlzXCIsXG4gIFwiaXN0ZVwiLFxuICBcIm5hdHVzXCIsXG4gIFwiZXJyb3JcIixcbiAgXCJzaW1pbGlxdWVcIixcbiAgXCJzdW50XCIsXG4gIFwiaW5cIixcbiAgXCJjdWxwYVwiLFxuICBcInF1aVwiLFxuICBcIm9mZmljaWFcIixcbiAgXCJkZXNlcnVudFwiLFxuICBcIm1vbGxpdGlhXCIsXG4gIFwiYW5pbWlcIixcbiAgXCJpZFwiLFxuICBcImVzdFwiLFxuICBcImxhYm9ydW1cIixcbiAgXCJldFwiLFxuICBcImRvbG9ydW1cIixcbiAgXCJmdWdhXCIsXG4gIFwiZXRcIixcbiAgXCJoYXJ1bVwiLFxuICBcInF1aWRlbVwiLFxuICBcInJlcnVtXCIsXG4gIFwiZmFjaWxpc1wiLFxuICBcImVzdFwiLFxuICBcImV0XCIsXG4gIFwiZXhwZWRpdGFcIixcbiAgXCJkaXN0aW5jdGlvXCIsXG4gIFwibmFtXCIsXG4gIFwibGliZXJvXCIsXG4gIFwidGVtcG9yZVwiLFxuICBcImN1bVwiLFxuICBcInNvbHV0YVwiLFxuICBcIm5vYmlzXCIsXG4gIFwiZXN0XCIsXG4gIFwiZWxpZ2VuZGlcIixcbiAgXCJvcHRpb1wiLFxuICBcImN1bXF1ZVwiLFxuICBcIm5paGlsXCIsXG4gIFwiaW1wZWRpdFwiLFxuICBcInF1b1wiLFxuICBcInBvcnJvXCIsXG4gIFwicXVpc3F1YW1cIixcbiAgXCJlc3RcIixcbiAgXCJxdWlcIixcbiAgXCJtaW51c1wiLFxuICBcImlkXCIsXG4gIFwicXVvZFwiLFxuICBcIm1heGltZVwiLFxuICBcInBsYWNlYXRcIixcbiAgXCJmYWNlcmVcIixcbiAgXCJwb3NzaW11c1wiLFxuICBcIm9tbmlzXCIsXG4gIFwidm9sdXB0YXNcIixcbiAgXCJhc3N1bWVuZGFcIixcbiAgXCJlc3RcIixcbiAgXCJvbW5pc1wiLFxuICBcImRvbG9yXCIsXG4gIFwicmVwZWxsZW5kdXNcIixcbiAgXCJ0ZW1wb3JpYnVzXCIsXG4gIFwiYXV0ZW1cIixcbiAgXCJxdWlidXNkYW1cIixcbiAgXCJldFwiLFxuICBcImF1dFwiLFxuICBcImNvbnNlcXVhdHVyXCIsXG4gIFwidmVsXCIsXG4gIFwiaWxsdW1cIixcbiAgXCJxdWlcIixcbiAgXCJkb2xvcmVtXCIsXG4gIFwiZXVtXCIsXG4gIFwiZnVnaWF0XCIsXG4gIFwicXVvXCIsXG4gIFwidm9sdXB0YXNcIixcbiAgXCJudWxsYVwiLFxuICBcInBhcmlhdHVyXCIsXG4gIFwiYXRcIixcbiAgXCJ2ZXJvXCIsXG4gIFwiZW9zXCIsXG4gIFwiZXRcIixcbiAgXCJhY2N1c2FtdXNcIixcbiAgXCJvZmZpY2lpc1wiLFxuICBcImRlYml0aXNcIixcbiAgXCJhdXRcIixcbiAgXCJyZXJ1bVwiLFxuICBcIm5lY2Vzc2l0YXRpYnVzXCIsXG4gIFwic2FlcGVcIixcbiAgXCJldmVuaWV0XCIsXG4gIFwidXRcIixcbiAgXCJldFwiLFxuICBcInZvbHVwdGF0ZXNcIixcbiAgXCJyZXB1ZGlhbmRhZVwiLFxuICBcInNpbnRcIixcbiAgXCJldFwiLFxuICBcIm1vbGVzdGlhZVwiLFxuICBcIm5vblwiLFxuICBcInJlY3VzYW5kYWVcIixcbiAgXCJpdGFxdWVcIixcbiAgXCJlYXJ1bVwiLFxuICBcInJlcnVtXCIsXG4gIFwiaGljXCIsXG4gIFwidGVuZXR1clwiLFxuICBcImFcIixcbiAgXCJzYXBpZW50ZVwiLFxuICBcImRlbGVjdHVzXCIsXG4gIFwidXRcIixcbiAgXCJhdXRcIixcbiAgXCJyZWljaWVuZGlzXCIsXG4gIFwidm9sdXB0YXRpYnVzXCIsXG4gIFwibWFpb3Jlc1wiLFxuICBcImRvbG9yaWJ1c1wiLFxuICBcImFzcGVyaW9yZXNcIixcbiAgXCJyZXBlbGxhdFwiXG5dO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBYWxpeWFoXCIsXG4gIFwiQWFyb25cIixcbiAgXCJBYmFnYWlsXCIsXG4gIFwiQWJiZXlcIixcbiAgXCJBYmJpZVwiLFxuICBcIkFiYmlnYWlsXCIsXG4gIFwiQWJieVwiLFxuICBcIkFiZGllbFwiLFxuICBcIkFiZHVsXCIsXG4gIFwiQWJkdWxsYWhcIixcbiAgXCJBYmVcIixcbiAgXCJBYmVsXCIsXG4gIFwiQWJlbGFyZG9cIixcbiAgXCJBYmlnYWlsXCIsXG4gIFwiQWJpZ2FsZVwiLFxuICBcIkFiaWdheWxlXCIsXG4gIFwiQWJuZXJcIixcbiAgXCJBYnJhaGFtXCIsXG4gIFwiQWRhXCIsXG4gIFwiQWRhaFwiLFxuICBcIkFkYWxiZXJ0b1wiLFxuICBcIkFkYWxpbmVcIixcbiAgXCJBZGFtXCIsXG4gIFwiQWRhblwiLFxuICBcIkFkZGllXCIsXG4gIFwiQWRkaXNvblwiLFxuICBcIkFkZWxhXCIsXG4gIFwiQWRlbGJlcnRcIixcbiAgXCJBZGVsZVwiLFxuICBcIkFkZWxpYVwiLFxuICBcIkFkZWxpbmVcIixcbiAgXCJBZGVsbFwiLFxuICBcIkFkZWxsYVwiLFxuICBcIkFkZWxsZVwiLFxuICBcIkFkaXR5YVwiLFxuICBcIkFkb2xmXCIsXG4gIFwiQWRvbGZvXCIsXG4gIFwiQWRvbHBoXCIsXG4gIFwiQWRvbHBodXNcIixcbiAgXCJBZG9uaXNcIixcbiAgXCJBZHJhaW5cIixcbiAgXCJBZHJpYW5cIixcbiAgXCJBZHJpYW5hXCIsXG4gIFwiQWRyaWFubmFcIixcbiAgXCJBZHJpZWxcIixcbiAgXCJBZHJpZW5cIixcbiAgXCJBZHJpZW5uZVwiLFxuICBcIkFmdG9uXCIsXG4gIFwiQWdsYWVcIixcbiAgXCJBZ25lc1wiLFxuICBcIkFndXN0aW5cIixcbiAgXCJBZ3VzdGluYVwiLFxuICBcIkFobWFkXCIsXG4gIFwiQWhtZWRcIixcbiAgXCJBaWRhXCIsXG4gIFwiQWlkYW5cIixcbiAgXCJBaWRlblwiLFxuICBcIkFpbGVlblwiLFxuICBcIkFpbWVlXCIsXG4gIFwiQWlzaGFcIixcbiAgXCJBaXlhbmFcIixcbiAgXCJBa2VlbVwiLFxuICBcIkFsXCIsXG4gIFwiQWxhaW5hXCIsXG4gIFwiQWxhblwiLFxuICBcIkFsYW5hXCIsXG4gIFwiQWxhbmlzXCIsXG4gIFwiQWxhbm5hXCIsXG4gIFwiQWxheW5hXCIsXG4gIFwiQWxiYVwiLFxuICBcIkFsYmVydFwiLFxuICBcIkFsYmVydGFcIixcbiAgXCJBbGJlcnRoYVwiLFxuICBcIkFsYmVydG9cIixcbiAgXCJBbGJpblwiLFxuICBcIkFsYmluYVwiLFxuICBcIkFsZGFcIixcbiAgXCJBbGRlblwiLFxuICBcIkFsZWNcIixcbiAgXCJBbGVlblwiLFxuICBcIkFsZWphbmRyYVwiLFxuICBcIkFsZWphbmRyaW5cIixcbiAgXCJBbGVrXCIsXG4gIFwiQWxlbmFcIixcbiAgXCJBbGVuZVwiLFxuICBcIkFsZXNzYW5kcmFcIixcbiAgXCJBbGVzc2FuZHJvXCIsXG4gIFwiQWxlc3NpYVwiLFxuICBcIkFsZXRoYVwiLFxuICBcIkFsZXhcIixcbiAgXCJBbGV4YVwiLFxuICBcIkFsZXhhbmRlclwiLFxuICBcIkFsZXhhbmRyYVwiLFxuICBcIkFsZXhhbmRyZVwiLFxuICBcIkFsZXhhbmRyZWFcIixcbiAgXCJBbGV4YW5kcmlhXCIsXG4gIFwiQWxleGFuZHJpbmVcIixcbiAgXCJBbGV4YW5kcm9cIixcbiAgXCJBbGV4YW5lXCIsXG4gIFwiQWxleGFubmVcIixcbiAgXCJBbGV4aWVcIixcbiAgXCJBbGV4aXNcIixcbiAgXCJBbGV4eXNcIixcbiAgXCJBbGV4emFuZGVyXCIsXG4gIFwiQWxmXCIsXG4gIFwiQWxmb25zb1wiLFxuICBcIkFsZm9uem9cIixcbiAgXCJBbGZvcmRcIixcbiAgXCJBbGZyZWRcIixcbiAgXCJBbGZyZWRhXCIsXG4gIFwiQWxmcmVkb1wiLFxuICBcIkFsaVwiLFxuICBcIkFsaWFcIixcbiAgXCJBbGljZVwiLFxuICBcIkFsaWNpYVwiLFxuICBcIkFsaXNhXCIsXG4gIFwiQWxpc2hhXCIsXG4gIFwiQWxpc29uXCIsXG4gIFwiQWxpdmlhXCIsXG4gIFwiQWxpeWFcIixcbiAgXCJBbGl5YWhcIixcbiAgXCJBbGl6YVwiLFxuICBcIkFsaXplXCIsXG4gIFwiQWxsYW5cIixcbiAgXCJBbGxlblwiLFxuICBcIkFsbGVuZVwiLFxuICBcIkFsbGllXCIsXG4gIFwiQWxsaXNvblwiLFxuICBcIkFsbHlcIixcbiAgXCJBbHBob25zb1wiLFxuICBcIkFsdGFcIixcbiAgXCJBbHRoZWFcIixcbiAgXCJBbHZhXCIsXG4gIFwiQWx2YWhcIixcbiAgXCJBbHZlbmFcIixcbiAgXCJBbHZlcmFcIixcbiAgXCJBbHZlcnRhXCIsXG4gIFwiQWx2aW5hXCIsXG4gIFwiQWx2aXNcIixcbiAgXCJBbHljZVwiLFxuICBcIkFseWNpYVwiLFxuICBcIkFseXNhXCIsXG4gIFwiQWx5c2hhXCIsXG4gIFwiQWx5c29uXCIsXG4gIFwiQWx5c3NvblwiLFxuICBcIkFtYWxpYVwiLFxuICBcIkFtYW5kYVwiLFxuICBcIkFtYW5pXCIsXG4gIFwiQW1hcmFcIixcbiAgXCJBbWFyaVwiLFxuICBcIkFtYXlhXCIsXG4gIFwiQW1iZXJcIixcbiAgXCJBbWJyb3NlXCIsXG4gIFwiQW1lbGlhXCIsXG4gIFwiQW1lbGllXCIsXG4gIFwiQW1lbHlcIixcbiAgXCJBbWVyaWNhXCIsXG4gIFwiQW1lcmljb1wiLFxuICBcIkFtaWVcIixcbiAgXCJBbWluYVwiLFxuICBcIkFtaXJcIixcbiAgXCJBbWlyYVwiLFxuICBcIkFtaXlhXCIsXG4gIFwiQW1vc1wiLFxuICBcIkFtcGFyb1wiLFxuICBcIkFteVwiLFxuICBcIkFteWFcIixcbiAgXCJBbmFcIixcbiAgXCJBbmFiZWxcIixcbiAgXCJBbmFiZWxsZVwiLFxuICBcIkFuYWhpXCIsXG4gIFwiQW5haXNcIixcbiAgXCJBbmFzdGFjaW9cIixcbiAgXCJBbmFzdGFzaWFcIixcbiAgXCJBbmRlcnNvblwiLFxuICBcIkFuZHJlXCIsXG4gIFwiQW5kcmVhbmVcIixcbiAgXCJBbmRyZWFubmVcIixcbiAgXCJBbmRyZXNcIixcbiAgXCJBbmRyZXdcIixcbiAgXCJBbmR5XCIsXG4gIFwiQW5nZWxcIixcbiAgXCJBbmdlbGFcIixcbiAgXCJBbmdlbGljYVwiLFxuICBcIkFuZ2VsaW5hXCIsXG4gIFwiQW5nZWxpbmVcIixcbiAgXCJBbmdlbGl0YVwiLFxuICBcIkFuZ2Vsb1wiLFxuICBcIkFuZ2llXCIsXG4gIFwiQW5ndXNcIixcbiAgXCJBbmliYWxcIixcbiAgXCJBbmlrYVwiLFxuICBcIkFuaXNzYVwiLFxuICBcIkFuaXRhXCIsXG4gIFwiQW5peWFcIixcbiAgXCJBbml5YWhcIixcbiAgXCJBbmphbGlcIixcbiAgXCJBbm5hXCIsXG4gIFwiQW5uYWJlbFwiLFxuICBcIkFubmFiZWxsXCIsXG4gIFwiQW5uYWJlbGxlXCIsXG4gIFwiQW5uYWxpc2VcIixcbiAgXCJBbm5hbWFlXCIsXG4gIFwiQW5uYW1hcmllXCIsXG4gIFwiQW5uZVwiLFxuICBcIkFubmV0dGFcIixcbiAgXCJBbm5ldHRlXCIsXG4gIFwiQW5uaWVcIixcbiAgXCJBbnNlbFwiLFxuICBcIkFuc2xleVwiLFxuICBcIkFudGhvbnlcIixcbiAgXCJBbnRvaW5ldHRlXCIsXG4gIFwiQW50b25lXCIsXG4gIFwiQW50b25ldHRhXCIsXG4gIFwiQW50b25ldHRlXCIsXG4gIFwiQW50b25pYVwiLFxuICBcIkFudG9uaWV0dGFcIixcbiAgXCJBbnRvbmluYVwiLFxuICBcIkFudG9uaW9cIixcbiAgXCJBbnR3YW5cIixcbiAgXCJBbnR3b25cIixcbiAgXCJBbnlhXCIsXG4gIFwiQXByaWxcIixcbiAgXCJBcmFcIixcbiAgXCJBcmFjZWxpXCIsXG4gIFwiQXJhY2VseVwiLFxuICBcIkFyY2hcIixcbiAgXCJBcmNoaWJhbGRcIixcbiAgXCJBcmRlbGxhXCIsXG4gIFwiQXJkZW5cIixcbiAgXCJBcmRpdGhcIixcbiAgXCJBcmVseVwiLFxuICBcIkFyaVwiLFxuICBcIkFyaWFuZVwiLFxuICBcIkFyaWFubmFcIixcbiAgXCJBcmljXCIsXG4gIFwiQXJpZWxcIixcbiAgXCJBcmllbGxlXCIsXG4gIFwiQXJqdW5cIixcbiAgXCJBcmxlbmVcIixcbiAgXCJBcmxpZVwiLFxuICBcIkFybG9cIixcbiAgXCJBcm1hbmRcIixcbiAgXCJBcm1hbmRvXCIsXG4gIFwiQXJtYW5pXCIsXG4gIFwiQXJuYWxkb1wiLFxuICBcIkFybmVcIixcbiAgXCJBcm5vXCIsXG4gIFwiQXJub2xkXCIsXG4gIFwiQXJub2xkb1wiLFxuICBcIkFybnVsZm9cIixcbiAgXCJBcm9uXCIsXG4gIFwiQXJ0XCIsXG4gIFwiQXJ0aHVyXCIsXG4gIFwiQXJ0dXJvXCIsXG4gIFwiQXJ2ZWxcIixcbiAgXCJBcnZpZFwiLFxuICBcIkFydmlsbGFcIixcbiAgXCJBcnlhbm5hXCIsXG4gIFwiQXNhXCIsXG4gIFwiQXNoYVwiLFxuICBcIkFzaGxlZVwiLFxuICBcIkFzaGxlaWdoXCIsXG4gIFwiQXNobGV5XCIsXG4gIFwiQXNobHlcIixcbiAgXCJBc2hseW5uXCIsXG4gIFwiQXNodG9uXCIsXG4gIFwiQXNodHluXCIsXG4gIFwiQXNpYVwiLFxuICBcIkFzc3VudGFcIixcbiAgXCJBc3RyaWRcIixcbiAgXCJBdGhlbmFcIixcbiAgXCJBdWJyZWVcIixcbiAgXCJBdWJyZXlcIixcbiAgXCJBdWRpZVwiLFxuICBcIkF1ZHJhXCIsXG4gIFwiQXVkcmVhbm5lXCIsXG4gIFwiQXVkcmV5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiQXVndXN0YVwiLFxuICBcIkF1Z3VzdGluZVwiLFxuICBcIkF1Z3VzdHVzXCIsXG4gIFwiQXVyZWxpYVwiLFxuICBcIkF1cmVsaWVcIixcbiAgXCJBdXJlbGlvXCIsXG4gIFwiQXVyb3JlXCIsXG4gIFwiQXVzdGVuXCIsXG4gIFwiQXVzdGluXCIsXG4gIFwiQXVzdHluXCIsXG4gIFwiQXV0dW1uXCIsXG4gIFwiQXZhXCIsXG4gIFwiQXZlcnlcIixcbiAgXCJBdmlzXCIsXG4gIFwiQXhlbFwiLFxuICBcIkF5YW5hXCIsXG4gIFwiQXlkZW5cIixcbiAgXCJBeWxhXCIsXG4gIFwiQXlsaW5cIixcbiAgXCJCYWJ5XCIsXG4gIFwiQmFpbGVlXCIsXG4gIFwiQmFpbGV5XCIsXG4gIFwiQmFyYmFyYVwiLFxuICBcIkJhcm5leVwiLFxuICBcIkJhcm9uXCIsXG4gIFwiQmFycmV0dFwiLFxuICBcIkJhcnJ5XCIsXG4gIFwiQmFydFwiLFxuICBcIkJhcnRob2xvbWVcIixcbiAgXCJCYXJ0b25cIixcbiAgXCJCYXlsZWVcIixcbiAgXCJCZWF0cmljZVwiLFxuICBcIkJlYXVcIixcbiAgXCJCZWF1bGFoXCIsXG4gIFwiQmVsbFwiLFxuICBcIkJlbGxhXCIsXG4gIFwiQmVsbGVcIixcbiAgXCJCZW5cIixcbiAgXCJCZW5lZGljdFwiLFxuICBcIkJlbmphbWluXCIsXG4gIFwiQmVubmV0dFwiLFxuICBcIkJlbm5pZVwiLFxuICBcIkJlbm55XCIsXG4gIFwiQmVudG9uXCIsXG4gIFwiQmVyZW5pY2VcIixcbiAgXCJCZXJuYWRldHRlXCIsXG4gIFwiQmVybmFkaW5lXCIsXG4gIFwiQmVybmFyZFwiLFxuICBcIkJlcm5hcmRvXCIsXG4gIFwiQmVybmVpY2VcIixcbiAgXCJCZXJuaGFyZFwiLFxuICBcIkJlcm5pY2VcIixcbiAgXCJCZXJuaWVcIixcbiAgXCJCZXJuaWVjZVwiLFxuICBcIkJlcm5pdGFcIixcbiAgXCJCZXJyeVwiLFxuICBcIkJlcnRcIixcbiAgXCJCZXJ0YVwiLFxuICBcIkJlcnRoYVwiLFxuICBcIkJlcnRyYW1cIixcbiAgXCJCZXJ0cmFuZFwiLFxuICBcIkJlcnlsXCIsXG4gIFwiQmVzc2llXCIsXG4gIFwiQmV0aFwiLFxuICBcIkJldGhhbnlcIixcbiAgXCJCZXRoZWxcIixcbiAgXCJCZXRzeVwiLFxuICBcIkJldHRlXCIsXG4gIFwiQmV0dGllXCIsXG4gIFwiQmV0dHlcIixcbiAgXCJCZXR0eWVcIixcbiAgXCJCZXVsYWhcIixcbiAgXCJCZXZlcmx5XCIsXG4gIFwiQmlhbmthXCIsXG4gIFwiQmlsbFwiLFxuICBcIkJpbGxpZVwiLFxuICBcIkJpbGx5XCIsXG4gIFwiQmlyZGllXCIsXG4gIFwiQmxhaXJcIixcbiAgXCJCbGFpc2VcIixcbiAgXCJCbGFrZVwiLFxuICBcIkJsYW5jYVwiLFxuICBcIkJsYW5jaGVcIixcbiAgXCJCbGF6ZVwiLFxuICBcIkJvXCIsXG4gIFwiQm9iYmllXCIsXG4gIFwiQm9iYnlcIixcbiAgXCJCb25pdGFcIixcbiAgXCJCb25uaWVcIixcbiAgXCJCb3Jpc1wiLFxuICBcIkJveWRcIixcbiAgXCJCcmFkXCIsXG4gIFwiQnJhZGVuXCIsXG4gIFwiQnJhZGZvcmRcIixcbiAgXCJCcmFkbGV5XCIsXG4gIFwiQnJhZGx5XCIsXG4gIFwiQnJhZHlcIixcbiAgXCJCcmFlZGVuXCIsXG4gIFwiQnJhaW5cIixcbiAgXCJCcmFuZGlcIixcbiAgXCJCcmFuZG9cIixcbiAgXCJCcmFuZG9uXCIsXG4gIFwiQnJhbmR0XCIsXG4gIFwiQnJhbmR5XCIsXG4gIFwiQnJhbmR5blwiLFxuICBcIkJyYW5ub25cIixcbiAgXCJCcmFuc29uXCIsXG4gIFwiQnJhbnRcIixcbiAgXCJCcmF1bGlvXCIsXG4gIFwiQnJheHRvblwiLFxuICBcIkJyYXlhblwiLFxuICBcIkJyZWFuYVwiLFxuICBcIkJyZWFubmFcIixcbiAgXCJCcmVhbm5lXCIsXG4gIFwiQnJlbmRhXCIsXG4gIFwiQnJlbmRhblwiLFxuICBcIkJyZW5kZW5cIixcbiAgXCJCcmVuZG9uXCIsXG4gIFwiQnJlbm5hXCIsXG4gIFwiQnJlbm5hblwiLFxuICBcIkJyZW5ub25cIixcbiAgXCJCcmVudFwiLFxuICBcIkJyZXRcIixcbiAgXCJCcmV0dFwiLFxuICBcIkJyaWFcIixcbiAgXCJCcmlhblwiLFxuICBcIkJyaWFuYVwiLFxuICBcIkJyaWFubmVcIixcbiAgXCJCcmljZVwiLFxuICBcIkJyaWRnZXRcIixcbiAgXCJCcmlkZ2V0dGVcIixcbiAgXCJCcmlkaWVcIixcbiAgXCJCcmllbGxlXCIsXG4gIFwiQnJpZ2l0dGVcIixcbiAgXCJCcmlvbm5hXCIsXG4gIFwiQnJpc2FcIixcbiAgXCJCcml0bmV5XCIsXG4gIFwiQnJpdHRhbnlcIixcbiAgXCJCcm9ja1wiLFxuICBcIkJyb2Rlcmlja1wiLFxuICBcIkJyb2R5XCIsXG4gIFwiQnJvb2tcIixcbiAgXCJCcm9va2VcIixcbiAgXCJCcm9va2x5blwiLFxuICBcIkJyb29rc1wiLFxuICBcIkJyb3duXCIsXG4gIFwiQnJ1Y2VcIixcbiAgXCJCcnlhbmFcIixcbiAgXCJCcnljZVwiLFxuICBcIkJyeWNlblwiLFxuICBcIkJyeW9uXCIsXG4gIFwiQnVja1wiLFxuICBcIkJ1ZFwiLFxuICBcIkJ1ZGR5XCIsXG4gIFwiQnVmb3JkXCIsXG4gIFwiQnVsYWhcIixcbiAgXCJCdXJkZXR0ZVwiLFxuICBcIkJ1cmxleVwiLFxuICBcIkJ1cm5pY2VcIixcbiAgXCJCdXN0ZXJcIixcbiAgXCJDYWRlXCIsXG4gIFwiQ2FkZW5cIixcbiAgXCJDYWVzYXJcIixcbiAgXCJDYWl0bHluXCIsXG4gIFwiQ2FsZVwiLFxuICBcIkNhbGViXCIsXG4gIFwiQ2FsZWlnaFwiLFxuICBcIkNhbGlcIixcbiAgXCJDYWxpc3RhXCIsXG4gIFwiQ2FsbGllXCIsXG4gIFwiQ2FtZGVuXCIsXG4gIFwiQ2FtZXJvblwiLFxuICBcIkNhbWlsYVwiLFxuICBcIkNhbWlsbGFcIixcbiAgXCJDYW1pbGxlXCIsXG4gIFwiQ2FtcmVuXCIsXG4gIFwiQ2Ftcm9uXCIsXG4gIFwiQ2FtcnluXCIsXG4gIFwiQ2FteWxsZVwiLFxuICBcIkNhbmRhY2VcIixcbiAgXCJDYW5kZWxhcmlvXCIsXG4gIFwiQ2FuZGljZVwiLFxuICBcIkNhbmRpZGFcIixcbiAgXCJDYW5kaWRvXCIsXG4gIFwiQ2FyYVwiLFxuICBcIkNhcmV5XCIsXG4gIFwiQ2FyaXNzYVwiLFxuICBcIkNhcmxlZVwiLFxuICBcIkNhcmxldG9uXCIsXG4gIFwiQ2FybGV5XCIsXG4gIFwiQ2FybGlcIixcbiAgXCJDYXJsaWVcIixcbiAgXCJDYXJsb1wiLFxuICBcIkNhcmxvc1wiLFxuICBcIkNhcmxvdHRhXCIsXG4gIFwiQ2FybWVsXCIsXG4gIFwiQ2FybWVsYVwiLFxuICBcIkNhcm1lbGxhXCIsXG4gIFwiQ2FybWVsb1wiLFxuICBcIkNhcm1lblwiLFxuICBcIkNhcm1pbmVcIixcbiAgXCJDYXJvbFwiLFxuICBcIkNhcm9sYW5uZVwiLFxuICBcIkNhcm9sZVwiLFxuICBcIkNhcm9saW5hXCIsXG4gIFwiQ2Fyb2xpbmVcIixcbiAgXCJDYXJvbHluXCIsXG4gIFwiQ2Fyb2x5bmVcIixcbiAgXCJDYXJyaWVcIixcbiAgXCJDYXJyb2xsXCIsXG4gIFwiQ2Fyc29uXCIsXG4gIFwiQ2FydGVyXCIsXG4gIFwiQ2FyeVwiLFxuICBcIkNhc2FuZHJhXCIsXG4gIFwiQ2FzZXlcIixcbiAgXCJDYXNpbWVyXCIsXG4gIFwiQ2FzaW1pclwiLFxuICBcIkNhc3BlclwiLFxuICBcIkNhc3NhbmRyYVwiLFxuICBcIkNhc3NhbmRyZVwiLFxuICBcIkNhc3NpZHlcIixcbiAgXCJDYXNzaWVcIixcbiAgXCJDYXRhbGluYVwiLFxuICBcIkNhdGVyaW5hXCIsXG4gIFwiQ2F0aGFyaW5lXCIsXG4gIFwiQ2F0aGVyaW5lXCIsXG4gIFwiQ2F0aHJpbmVcIixcbiAgXCJDYXRocnluXCIsXG4gIFwiQ2F0aHlcIixcbiAgXCJDYXlsYVwiLFxuICBcIkNlYXNhclwiLFxuICBcIkNlY2VsaWFcIixcbiAgXCJDZWNpbFwiLFxuICBcIkNlY2lsZVwiLFxuICBcIkNlY2lsaWFcIixcbiAgXCJDZWRyaWNrXCIsXG4gIFwiQ2VsZXN0aW5lXCIsXG4gIFwiQ2VsZXN0aW5vXCIsXG4gIFwiQ2VsaWFcIixcbiAgXCJDZWxpbmVcIixcbiAgXCJDZXNhclwiLFxuICBcIkNoYWRcIixcbiAgXCJDaGFkZFwiLFxuICBcIkNoYWRyaWNrXCIsXG4gIFwiQ2hhaW1cIixcbiAgXCJDaGFuY2VcIixcbiAgXCJDaGFuZGxlclwiLFxuICBcIkNoYW5lbFwiLFxuICBcIkNoYW5lbGxlXCIsXG4gIFwiQ2hhcml0eVwiLFxuICBcIkNoYXJsZW5lXCIsXG4gIFwiQ2hhcmxlc1wiLFxuICBcIkNoYXJsZXlcIixcbiAgXCJDaGFybGllXCIsXG4gIFwiQ2hhcmxvdHRlXCIsXG4gIFwiQ2hhc2VcIixcbiAgXCJDaGFzaXR5XCIsXG4gIFwiQ2hhdW5jZXlcIixcbiAgXCJDaGF5YVwiLFxuICBcIkNoYXpcIixcbiAgXCJDaGVsc2VhXCIsXG4gIFwiQ2hlbHNleVwiLFxuICBcIkNoZWxzaWVcIixcbiAgXCJDaGVzbGV5XCIsXG4gIFwiQ2hlc3RlclwiLFxuICBcIkNoZXRcIixcbiAgXCJDaGV5YW5uZVwiLFxuICBcIkNoZXllbm5lXCIsXG4gIFwiQ2hsb2VcIixcbiAgXCJDaHJpc1wiLFxuICBcIkNocmlzdFwiLFxuICBcIkNocmlzdGFcIixcbiAgXCJDaHJpc3RlbGxlXCIsXG4gIFwiQ2hyaXN0aWFuXCIsXG4gIFwiQ2hyaXN0aWFuYVwiLFxuICBcIkNocmlzdGluYVwiLFxuICBcIkNocmlzdGluZVwiLFxuICBcIkNocmlzdG9wXCIsXG4gIFwiQ2hyaXN0b3BoZVwiLFxuICBcIkNocmlzdG9waGVyXCIsXG4gIFwiQ2hyaXN0eVwiLFxuICBcIkNoeW5hXCIsXG4gIFwiQ2lhcmFcIixcbiAgXCJDaWNlcm9cIixcbiAgXCJDaWVsb1wiLFxuICBcIkNpZXJyYVwiLFxuICBcIkNpbmR5XCIsXG4gIFwiQ2l0bGFsbGlcIixcbiAgXCJDbGFpclwiLFxuICBcIkNsYWlyZVwiLFxuICBcIkNsYXJhXCIsXG4gIFwiQ2xhcmFiZWxsZVwiLFxuICBcIkNsYXJlXCIsXG4gIFwiQ2xhcmlzc2FcIixcbiAgXCJDbGFya1wiLFxuICBcIkNsYXVkXCIsXG4gIFwiQ2xhdWRlXCIsXG4gIFwiQ2xhdWRpYVwiLFxuICBcIkNsYXVkaWVcIixcbiAgXCJDbGF1ZGluZVwiLFxuICBcIkNsYXlcIixcbiAgXCJDbGVtZW5zXCIsXG4gIFwiQ2xlbWVudFwiLFxuICBcIkNsZW1lbnRpbmFcIixcbiAgXCJDbGVtZW50aW5lXCIsXG4gIFwiQ2xlbW1pZVwiLFxuICBcIkNsZW9cIixcbiAgXCJDbGVvcmFcIixcbiAgXCJDbGV0YVwiLFxuICBcIkNsZXR1c1wiLFxuICBcIkNsZXZlXCIsXG4gIFwiQ2xldmVsYW5kXCIsXG4gIFwiQ2xpZmZvcmRcIixcbiAgXCJDbGlmdG9uXCIsXG4gIFwiQ2xpbnRcIixcbiAgXCJDbGludG9uXCIsXG4gIFwiQ2xvdGlsZGVcIixcbiAgXCJDbG92aXNcIixcbiAgXCJDbG95ZFwiLFxuICBcIkNseWRlXCIsXG4gIFwiQ29ieVwiLFxuICBcIkNvZHlcIixcbiAgXCJDb2xieVwiLFxuICBcIkNvbGVcIixcbiAgXCJDb2xlbWFuXCIsXG4gIFwiQ29saW5cIixcbiAgXCJDb2xsZWVuXCIsXG4gIFwiQ29sbGluXCIsXG4gIFwiQ29sdFwiLFxuICBcIkNvbHRlblwiLFxuICBcIkNvbHRvblwiLFxuICBcIkNvbHVtYnVzXCIsXG4gIFwiQ29uY2VwY2lvblwiLFxuICBcIkNvbm5lclwiLFxuICBcIkNvbm5pZVwiLFxuICBcIkNvbm5vclwiLFxuICBcIkNvbm9yXCIsXG4gIFwiQ29ucmFkXCIsXG4gIFwiQ29uc3RhbmNlXCIsXG4gIFwiQ29uc3RhbnRpblwiLFxuICBcIkNvbnN1ZWxvXCIsXG4gIFwiQ29vcGVyXCIsXG4gIFwiQ29yYVwiLFxuICBcIkNvcmFsaWVcIixcbiAgXCJDb3JiaW5cIixcbiAgXCJDb3JkZWxpYVwiLFxuICBcIkNvcmRlbGxcIixcbiAgXCJDb3JkaWFcIixcbiAgXCJDb3JkaWVcIixcbiAgXCJDb3JlbmVcIixcbiAgXCJDb3JpbmVcIixcbiAgXCJDb3JuZWxpdXNcIixcbiAgXCJDb3JuZWxsXCIsXG4gIFwiQ29ycmluZVwiLFxuICBcIkNvcnRlelwiLFxuICBcIkNvcnRuZXlcIixcbiAgXCJDb3J5XCIsXG4gIFwiQ290eVwiLFxuICBcIkNvdXJ0bmV5XCIsXG4gIFwiQ295XCIsXG4gIFwiQ3JhaWdcIixcbiAgXCJDcmF3Zm9yZFwiLFxuICBcIkNyZW9sYVwiLFxuICBcIkNyaXN0YWxcIixcbiAgXCJDcmlzdGlhblwiLFxuICBcIkNyaXN0aW5hXCIsXG4gIFwiQ3Jpc3RvYmFsXCIsXG4gIFwiQ3Jpc3RvcGhlclwiLFxuICBcIkNydXpcIixcbiAgXCJDcnlzdGFsXCIsXG4gIFwiQ3J5c3RlbFwiLFxuICBcIkN1bGxlblwiLFxuICBcIkN1cnRcIixcbiAgXCJDdXJ0aXNcIixcbiAgXCJDeWRuZXlcIixcbiAgXCJDeW50aGlhXCIsXG4gIFwiQ3lyaWxcIixcbiAgXCJDeXJ1c1wiLFxuICBcIkRhZ21hclwiLFxuICBcIkRhaGxpYVwiLFxuICBcIkRhaWphXCIsXG4gIFwiRGFpc2hhXCIsXG4gIFwiRGFpc3lcIixcbiAgXCJEYWtvdGFcIixcbiAgXCJEYWxlXCIsXG4gIFwiRGFsbGFzXCIsXG4gIFwiRGFsbGluXCIsXG4gIFwiRGFsdG9uXCIsXG4gIFwiRGFtYXJpc1wiLFxuICBcIkRhbWVvblwiLFxuICBcIkRhbWlhblwiLFxuICBcIkRhbWllblwiLFxuICBcIkRhbWlvblwiLFxuICBcIkRhbW9uXCIsXG4gIFwiRGFuXCIsXG4gIFwiRGFuYVwiLFxuICBcIkRhbmRyZVwiLFxuICBcIkRhbmVcIixcbiAgXCJEJ2FuZ2Vsb1wiLFxuICBcIkRhbmdlbG9cIixcbiAgXCJEYW5pYWxcIixcbiAgXCJEYW5pZWxhXCIsXG4gIFwiRGFuaWVsbGFcIixcbiAgXCJEYW5pZWxsZVwiLFxuICBcIkRhbmlrYVwiLFxuICBcIkRhbm5pZVwiLFxuICBcIkRhbm55XCIsXG4gIFwiRGFudGVcIixcbiAgXCJEYW55a2FcIixcbiAgXCJEYXBobmVcIixcbiAgXCJEYXBobmVlXCIsXG4gIFwiRGFwaG5leVwiLFxuICBcIkRhcmJ5XCIsXG4gIFwiRGFyZW5cIixcbiAgXCJEYXJpYW5cIixcbiAgXCJEYXJpYW5hXCIsXG4gIFwiRGFyaWVuXCIsXG4gIFwiRGFyaW9cIixcbiAgXCJEYXJpb25cIixcbiAgXCJEYXJpdXNcIixcbiAgXCJEYXJsZW5lXCIsXG4gIFwiRGFyb25cIixcbiAgXCJEYXJyZWxcIixcbiAgXCJEYXJyZWxsXCIsXG4gIFwiRGFycmVuXCIsXG4gIFwiRGFycmlja1wiLFxuICBcIkRhcnJpblwiLFxuICBcIkRhcnJpb25cIixcbiAgXCJEYXJyb25cIixcbiAgXCJEYXJyeWxcIixcbiAgXCJEYXJ3aW5cIixcbiAgXCJEYXJ5bFwiLFxuICBcIkRhc2hhd25cIixcbiAgXCJEYXNpYVwiLFxuICBcIkRhdmVcIixcbiAgXCJEYXZpZFwiLFxuICBcIkRhdmluXCIsXG4gIFwiRGF2aW9uXCIsXG4gIFwiRGF2b25cIixcbiAgXCJEYXZvbnRlXCIsXG4gIFwiRGF3blwiLFxuICBcIkRhd3NvblwiLFxuICBcIkRheFwiLFxuICBcIkRheWFuYVwiLFxuICBcIkRheW5hXCIsXG4gIFwiRGF5bmVcIixcbiAgXCJEYXl0b25cIixcbiAgXCJEZWFuXCIsXG4gIFwiRGVhbmdlbG9cIixcbiAgXCJEZWFubmFcIixcbiAgXCJEZWJvcmFoXCIsXG4gIFwiRGVjbGFuXCIsXG4gIFwiRGVkcmljXCIsXG4gIFwiRGVkcmlja1wiLFxuICBcIkRlZVwiLFxuICBcIkRlaW9uXCIsXG4gIFwiRGVqYVwiLFxuICBcIkRlamFoXCIsXG4gIFwiRGVqb25cIixcbiAgXCJEZWp1YW5cIixcbiAgXCJEZWxhbmV5XCIsXG4gIFwiRGVsYmVydFwiLFxuICBcIkRlbGZpbmFcIixcbiAgXCJEZWxpYVwiLFxuICBcIkRlbGlsYWhcIixcbiAgXCJEZWxsXCIsXG4gIFwiRGVsbGFcIixcbiAgXCJEZWxtZXJcIixcbiAgXCJEZWxvcmVzXCIsXG4gIFwiRGVscGhhXCIsXG4gIFwiRGVscGhpYVwiLFxuICBcIkRlbHBoaW5lXCIsXG4gIFwiRGVsdGFcIixcbiAgXCJEZW1hcmNvXCIsXG4gIFwiRGVtYXJjdXNcIixcbiAgXCJEZW1hcmlvXCIsXG4gIFwiRGVtZXRyaXNcIixcbiAgXCJEZW1ldHJpdXNcIixcbiAgXCJEZW1vbmRcIixcbiAgXCJEZW5hXCIsXG4gIFwiRGVuaXNcIixcbiAgXCJEZW5uaXNcIixcbiAgXCJEZW9uXCIsXG4gIFwiRGVvbmRyZVwiLFxuICBcIkRlb250YWVcIixcbiAgXCJEZW9udGVcIixcbiAgXCJEZXJlY2tcIixcbiAgXCJEZXJla1wiLFxuICBcIkRlcmlja1wiLFxuICBcIkRlcm9uXCIsXG4gIFwiRGVycmlja1wiLFxuICBcIkRlc2hhdW5cIixcbiAgXCJEZXNoYXduXCIsXG4gIFwiRGVzaXJlZVwiLFxuICBcIkRlc21vbmRcIixcbiAgXCJEZXNzaWVcIixcbiAgXCJEZXN0YW55XCIsXG4gIFwiRGVzdGluXCIsXG4gIFwiRGVzdGluZWVcIixcbiAgXCJEZXN0aW5leVwiLFxuICBcIkRlc3RpbmlcIixcbiAgXCJEZXN0aW55XCIsXG4gIFwiRGV2YW5cIixcbiAgXCJEZXZhbnRlXCIsXG4gIFwiRGV2ZW5cIixcbiAgXCJEZXZpblwiLFxuICBcIkRldm9uXCIsXG4gIFwiRGV2b250ZVwiLFxuICBcIkRldnluXCIsXG4gIFwiRGV3YXluZVwiLFxuICBcIkRld2l0dFwiLFxuICBcIkRleHRlclwiLFxuICBcIkRpYW1vbmRcIixcbiAgXCJEaWFuYVwiLFxuICBcIkRpYW5uYVwiLFxuICBcIkRpZWdvXCIsXG4gIFwiRGlsbGFuXCIsXG4gIFwiRGlsbG9uXCIsXG4gIFwiRGltaXRyaVwiLFxuICBcIkRpbmFcIixcbiAgXCJEaW5vXCIsXG4gIFwiRGlvblwiLFxuICBcIkRpeGllXCIsXG4gIFwiRG9ja1wiLFxuICBcIkRvbGx5XCIsXG4gIFwiRG9sb3Jlc1wiLFxuICBcIkRvbWVuaWNcIixcbiAgXCJEb21lbmljYVwiLFxuICBcIkRvbWVuaWNrXCIsXG4gIFwiRG9tZW5pY29cIixcbiAgXCJEb21pbmdvXCIsXG4gIFwiRG9taW5pY1wiLFxuICBcIkRvbWluaXF1ZVwiLFxuICBcIkRvblwiLFxuICBcIkRvbmFsZFwiLFxuICBcIkRvbmF0b1wiLFxuICBcIkRvbmF2b25cIixcbiAgXCJEb25uYVwiLFxuICBcIkRvbm5lbGxcIixcbiAgXCJEb25uaWVcIixcbiAgXCJEb25ueVwiLFxuICBcIkRvcmFcIixcbiAgXCJEb3JjYXNcIixcbiAgXCJEb3JpYW5cIixcbiAgXCJEb3Jpc1wiLFxuICBcIkRvcm90aGVhXCIsXG4gIFwiRG9yb3RoeVwiLFxuICBcIkRvcnJpc1wiLFxuICBcIkRvcnRoYVwiLFxuICBcIkRvcnRoeVwiLFxuICBcIkRvdWdcIixcbiAgXCJEb3VnbGFzXCIsXG4gIFwiRG92aWVcIixcbiAgXCJEb3lsZVwiLFxuICBcIkRyYWtlXCIsXG4gIFwiRHJld1wiLFxuICBcIkR1YW5lXCIsXG4gIFwiRHVkbGV5XCIsXG4gIFwiRHVsY2VcIixcbiAgXCJEdW5jYW5cIixcbiAgXCJEdXJ3YXJkXCIsXG4gIFwiRHVzdGluXCIsXG4gIFwiRHVzdHlcIixcbiAgXCJEd2lnaHRcIixcbiAgXCJEeWxhblwiLFxuICBcIkVhcmxcIixcbiAgXCJFYXJsZW5lXCIsXG4gIFwiRWFybGluZVwiLFxuICBcIkVhcm5lc3RcIixcbiAgXCJFYXJuZXN0aW5lXCIsXG4gIFwiRWFzdGVyXCIsXG4gIFwiRWFzdG9uXCIsXG4gIFwiRWJiYVwiLFxuICBcIkVib255XCIsXG4gIFwiRWRcIixcbiAgXCJFZGFcIixcbiAgXCJFZGRcIixcbiAgXCJFZGRpZVwiLFxuICBcIkVkZW5cIixcbiAgXCJFZGdhclwiLFxuICBcIkVkZ2FyZG9cIixcbiAgXCJFZGlzb25cIixcbiAgXCJFZG1vbmRcIixcbiAgXCJFZG11bmRcIixcbiAgXCJFZG5hXCIsXG4gIFwiRWR1YXJkb1wiLFxuICBcIkVkd2FyZFwiLFxuICBcIkVkd2FyZG9cIixcbiAgXCJFZHdpblwiLFxuICBcIkVkd2luYVwiLFxuICBcIkVkeXRoXCIsXG4gIFwiRWR5dGhlXCIsXG4gIFwiRWZmaWVcIixcbiAgXCJFZnJhaW5cIixcbiAgXCJFZnJlblwiLFxuICBcIkVpbGVlblwiLFxuICBcIkVpbmFyXCIsXG4gIFwiRWlub1wiLFxuICBcIkVsYWRpb1wiLFxuICBcIkVsYWluYVwiLFxuICBcIkVsYmVydFwiLFxuICBcIkVsZGFcIixcbiAgXCJFbGRvblwiLFxuICBcIkVsZG9yYVwiLFxuICBcIkVsZHJlZFwiLFxuICBcIkVsZHJpZGdlXCIsXG4gIFwiRWxlYW5vcmFcIixcbiAgXCJFbGVhbm9yZVwiLFxuICBcIkVsZWF6YXJcIixcbiAgXCJFbGVjdGFcIixcbiAgXCJFbGVuYVwiLFxuICBcIkVsZW5vclwiLFxuICBcIkVsZW5vcmFcIixcbiAgXCJFbGVvbm9yZVwiLFxuICBcIkVsZnJpZWRhXCIsXG4gIFwiRWxpXCIsXG4gIFwiRWxpYW5cIixcbiAgXCJFbGlhbmVcIixcbiAgXCJFbGlhc1wiLFxuICBcIkVsaWV6ZXJcIixcbiAgXCJFbGlqYWhcIixcbiAgXCJFbGlub3JcIixcbiAgXCJFbGlub3JlXCIsXG4gIFwiRWxpc2FcIixcbiAgXCJFbGlzYWJldGhcIixcbiAgXCJFbGlzZVwiLFxuICBcIkVsaXNlb1wiLFxuICBcIkVsaXNoYVwiLFxuICBcIkVsaXNzYVwiLFxuICBcIkVsaXphXCIsXG4gIFwiRWxpemFiZXRoXCIsXG4gIFwiRWxsYVwiLFxuICBcIkVsbGVuXCIsXG4gIFwiRWxsaWVcIixcbiAgXCJFbGxpb3RcIixcbiAgXCJFbGxpb3R0XCIsXG4gIFwiRWxsaXNcIixcbiAgXCJFbGxzd29ydGhcIixcbiAgXCJFbG1lclwiLFxuICBcIkVsbWlyYVwiLFxuICBcIkVsbW9cIixcbiAgXCJFbG1vcmVcIixcbiAgXCJFbG5hXCIsXG4gIFwiRWxub3JhXCIsXG4gIFwiRWxvZHlcIixcbiAgXCJFbG9pc2FcIixcbiAgXCJFbG9pc2VcIixcbiAgXCJFbG91aXNlXCIsXG4gIFwiRWxveVwiLFxuICBcIkVscm95XCIsXG4gIFwiRWxzYVwiLFxuICBcIkVsc2VcIixcbiAgXCJFbHNpZVwiLFxuICBcIkVsdGFcIixcbiAgXCJFbHRvblwiLFxuICBcIkVsdmFcIixcbiAgXCJFbHZlcmFcIixcbiAgXCJFbHZpZVwiLFxuICBcIkVsdmlzXCIsXG4gIFwiRWx3aW5cIixcbiAgXCJFbHd5blwiLFxuICBcIkVseXNlXCIsXG4gIFwiRWx5c3NhXCIsXG4gIFwiRWx6YVwiLFxuICBcIkVtYW51ZWxcIixcbiAgXCJFbWVsaWFcIixcbiAgXCJFbWVsaWVcIixcbiAgXCJFbWVseVwiLFxuICBcIkVtZXJhbGRcIixcbiAgXCJFbWVyc29uXCIsXG4gIFwiRW1lcnlcIixcbiAgXCJFbWllXCIsXG4gIFwiRW1pbFwiLFxuICBcIkVtaWxlXCIsXG4gIFwiRW1pbGlhXCIsXG4gIFwiRW1pbGlhbm9cIixcbiAgXCJFbWlsaWVcIixcbiAgXCJFbWlsaW9cIixcbiAgXCJFbWlseVwiLFxuICBcIkVtbWFcIixcbiAgXCJFbW1hbGVlXCIsXG4gIFwiRW1tYW51ZWxcIixcbiAgXCJFbW1hbnVlbGxlXCIsXG4gIFwiRW1tZXRcIixcbiAgXCJFbW1ldHRcIixcbiAgXCJFbW1pZVwiLFxuICBcIkVtbWl0dFwiLFxuICBcIkVtbXlcIixcbiAgXCJFbW9yeVwiLFxuICBcIkVuYVwiLFxuICBcIkVuaWRcIixcbiAgXCJFbm9jaFwiLFxuICBcIkVub2xhXCIsXG4gIFwiRW5vc1wiLFxuICBcIkVucmljb1wiLFxuICBcIkVucmlxdWVcIixcbiAgXCJFcGhyYWltXCIsXG4gIFwiRXJhXCIsXG4gIFwiRXJpYmVydG9cIixcbiAgXCJFcmljXCIsXG4gIFwiRXJpY2FcIixcbiAgXCJFcmljaFwiLFxuICBcIkVyaWNrXCIsXG4gIFwiRXJpY2thXCIsXG4gIFwiRXJpa1wiLFxuICBcIkVyaWthXCIsXG4gIFwiRXJpblwiLFxuICBcIkVybGluZ1wiLFxuICBcIkVybmFcIixcbiAgXCJFcm5lc3RcIixcbiAgXCJFcm5lc3RpbmFcIixcbiAgXCJFcm5lc3RpbmVcIixcbiAgXCJFcm5lc3RvXCIsXG4gIFwiRXJuaWVcIixcbiAgXCJFcnZpblwiLFxuICBcIkVyd2luXCIsXG4gIFwiRXJ5blwiLFxuICBcIkVzbWVyYWxkYVwiLFxuICBcIkVzcGVyYW56YVwiLFxuICBcIkVzdGFcIixcbiAgXCJFc3RlYmFuXCIsXG4gIFwiRXN0ZWZhbmlhXCIsXG4gIFwiRXN0ZWxcIixcbiAgXCJFc3RlbGxcIixcbiAgXCJFc3RlbGxhXCIsXG4gIFwiRXN0ZWxsZVwiLFxuICBcIkVzdGV2YW5cIixcbiAgXCJFc3RoZXJcIixcbiAgXCJFc3RyZWxsYVwiLFxuICBcIkV0aGFcIixcbiAgXCJFdGhhblwiLFxuICBcIkV0aGVsXCIsXG4gIFwiRXRoZWx5blwiLFxuICBcIkV0aHlsXCIsXG4gIFwiRXR0aWVcIixcbiAgXCJFdWRvcmFcIixcbiAgXCJFdWdlbmVcIixcbiAgXCJFdWdlbmlhXCIsXG4gIFwiRXVsYVwiLFxuICBcIkV1bGFoXCIsXG4gIFwiRXVsYWxpYVwiLFxuICBcIkV1bmFcIixcbiAgXCJFdW5pY2VcIixcbiAgXCJFdXNlYmlvXCIsXG4gIFwiRXZhXCIsXG4gIFwiRXZhbHluXCIsXG4gIFwiRXZhblwiLFxuICBcIkV2YW5nZWxpbmVcIixcbiAgXCJFdmFuc1wiLFxuICBcIkV2ZVwiLFxuICBcIkV2ZWxpbmVcIixcbiAgXCJFdmVseW5cIixcbiAgXCJFdmVyYXJkb1wiLFxuICBcIkV2ZXJldHRcIixcbiAgXCJFdmVyZXR0ZVwiLFxuICBcIkV2ZXJ0XCIsXG4gIFwiRXZpZVwiLFxuICBcIkV3YWxkXCIsXG4gIFwiRXdlbGxcIixcbiAgXCJFemVraWVsXCIsXG4gIFwiRXplcXVpZWxcIixcbiAgXCJFenJhXCIsXG4gIFwiRmFiaWFuXCIsXG4gIFwiRmFiaW9sYVwiLFxuICBcIkZhZVwiLFxuICBcIkZhbm5pZVwiLFxuICBcIkZhbm55XCIsXG4gIFwiRmF0aW1hXCIsXG4gIFwiRmF1c3Rpbm9cIixcbiAgXCJGYXVzdG9cIixcbiAgXCJGYXZpYW5cIixcbiAgXCJGYXlcIixcbiAgXCJGYXllXCIsXG4gIFwiRmVkZXJpY29cIixcbiAgXCJGZWxpY2lhXCIsXG4gIFwiRmVsaWNpdGFcIixcbiAgXCJGZWxpY2l0eVwiLFxuICBcIkZlbGlwYVwiLFxuICBcIkZlbGlwZVwiLFxuICBcIkZlbGl4XCIsXG4gIFwiRmVsdG9uXCIsXG4gIFwiRmVybWluXCIsXG4gIFwiRmVyblwiLFxuICBcIkZlcm5hbmRvXCIsXG4gIFwiRmVybmVcIixcbiAgXCJGaWRlbFwiLFxuICBcIkZpbGliZXJ0b1wiLFxuICBcIkZpbG9tZW5hXCIsXG4gIFwiRmlublwiLFxuICBcIkZpb25hXCIsXG4gIFwiRmxhdmllXCIsXG4gIFwiRmxhdmlvXCIsXG4gIFwiRmxldGFcIixcbiAgXCJGbGV0Y2hlclwiLFxuICBcIkZsb1wiLFxuICBcIkZsb3JlbmNlXCIsXG4gIFwiRmxvcmVuY2lvXCIsXG4gIFwiRmxvcmlhblwiLFxuICBcIkZsb3JpZGFcIixcbiAgXCJGbG9yaW5lXCIsXG4gIFwiRmxvc3NpZVwiLFxuICBcIkZsb3lcIixcbiAgXCJGbG95ZFwiLFxuICBcIkZvcmRcIixcbiAgXCJGb3Jlc3RcIixcbiAgXCJGb3JyZXN0XCIsXG4gIFwiRm9zdGVyXCIsXG4gIFwiRnJhbmNlc1wiLFxuICBcIkZyYW5jZXNjYVwiLFxuICBcIkZyYW5jZXNjb1wiLFxuICBcIkZyYW5jaXNcIixcbiAgXCJGcmFuY2lzY2FcIixcbiAgXCJGcmFuY2lzY29cIixcbiAgXCJGcmFuY29cIixcbiAgXCJGcmFua1wiLFxuICBcIkZyYW5raWVcIixcbiAgXCJGcmFuelwiLFxuICBcIkZyZWRcIixcbiAgXCJGcmVkYVwiLFxuICBcIkZyZWRkaWVcIixcbiAgXCJGcmVkZHlcIixcbiAgXCJGcmVkZXJpY1wiLFxuICBcIkZyZWRlcmlja1wiLFxuICBcIkZyZWRlcmlrXCIsXG4gIFwiRnJlZGVyaXF1ZVwiLFxuICBcIkZyZWRyaWNrXCIsXG4gIFwiRnJlZHlcIixcbiAgXCJGcmVlZGFcIixcbiAgXCJGcmVlbWFuXCIsXG4gIFwiRnJlaWRhXCIsXG4gIFwiRnJpZGFcIixcbiAgXCJGcmllZGFcIixcbiAgXCJGcmllZHJpY2hcIixcbiAgXCJGcml0elwiLFxuICBcIkZ1cm1hblwiLFxuICBcIkdhYmVcIixcbiAgXCJHYWJyaWVsXCIsXG4gIFwiR2FicmllbGxhXCIsXG4gIFwiR2FicmllbGxlXCIsXG4gIFwiR2FldGFub1wiLFxuICBcIkdhZ2VcIixcbiAgXCJHYWlsXCIsXG4gIFwiR2FyZG5lclwiLFxuICBcIkdhcmV0dFwiLFxuICBcIkdhcmZpZWxkXCIsXG4gIFwiR2FybGFuZFwiLFxuICBcIkdhcm5ldFwiLFxuICBcIkdhcm5ldHRcIixcbiAgXCJHYXJyZXRcIixcbiAgXCJHYXJyZXR0XCIsXG4gIFwiR2Fycmlja1wiLFxuICBcIkdhcnJpc29uXCIsXG4gIFwiR2FycnlcIixcbiAgXCJHYXJ0aFwiLFxuICBcIkdhc3RvblwiLFxuICBcIkdhdmluXCIsXG4gIFwiR2F5XCIsXG4gIFwiR2F5bGVcIixcbiAgXCJHYXlsb3JkXCIsXG4gIFwiR2VuZVwiLFxuICBcIkdlbmVyYWxcIixcbiAgXCJHZW5lc2lzXCIsXG4gIFwiR2VuZXZpZXZlXCIsXG4gIFwiR2VubmFyb1wiLFxuICBcIkdlbm92ZXZhXCIsXG4gIFwiR2VvXCIsXG4gIFwiR2VvZmZyZXlcIixcbiAgXCJHZW9yZ2VcIixcbiAgXCJHZW9yZ2V0dGVcIixcbiAgXCJHZW9yZ2lhbmFcIixcbiAgXCJHZW9yZ2lhbm5hXCIsXG4gIFwiR2VvdmFubmlcIixcbiAgXCJHZW92YW5ueVwiLFxuICBcIkdlb3ZhbnlcIixcbiAgXCJHZXJhbGRcIixcbiAgXCJHZXJhbGRpbmVcIixcbiAgXCJHZXJhcmRcIixcbiAgXCJHZXJhcmRvXCIsXG4gIFwiR2VyZGFcIixcbiAgXCJHZXJoYXJkXCIsXG4gIFwiR2VybWFpbmVcIixcbiAgXCJHZXJtYW5cIixcbiAgXCJHZXJyeVwiLFxuICBcIkdlcnNvblwiLFxuICBcIkdlcnRydWRlXCIsXG4gIFwiR2lhXCIsXG4gIFwiR2lhbm5pXCIsXG4gIFwiR2lkZW9uXCIsXG4gIFwiR2lsYmVydFwiLFxuICBcIkdpbGJlcnRvXCIsXG4gIFwiR2lsZGFcIixcbiAgXCJHaWxlc1wiLFxuICBcIkdpbGxpYW5cIixcbiAgXCJHaW5hXCIsXG4gIFwiR2lub1wiLFxuICBcIkdpb3ZhbmlcIixcbiAgXCJHaW92YW5uYVwiLFxuICBcIkdpb3Zhbm5pXCIsXG4gIFwiR2lvdmFubnlcIixcbiAgXCJHaXNzZWxsZVwiLFxuICBcIkdpdXNlcHBlXCIsXG4gIFwiR2xhZHljZVwiLFxuICBcIkdsYWR5c1wiLFxuICBcIkdsZW5cIixcbiAgXCJHbGVuZGFcIixcbiAgXCJHbGVubmFcIixcbiAgXCJHbGVubmllXCIsXG4gIFwiR2xvcmlhXCIsXG4gIFwiR29kZnJleVwiLFxuICBcIkdvbGRhXCIsXG4gIFwiR29sZGVuXCIsXG4gIFwiR29uemFsb1wiLFxuICBcIkdvcmRvblwiLFxuICBcIkdyYWNlXCIsXG4gIFwiR3JhY2llXCIsXG4gIFwiR3JhY2llbGFcIixcbiAgXCJHcmFkeVwiLFxuICBcIkdyYWhhbVwiLFxuICBcIkdyYW50XCIsXG4gIFwiR3JhbnZpbGxlXCIsXG4gIFwiR3JheWNlXCIsXG4gIFwiR3JheXNvblwiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZ1wiLFxuICBcIkdyZWdnXCIsXG4gIFwiR3JlZ29yaWFcIixcbiAgXCJHcmVnb3Jpb1wiLFxuICBcIkdyZWdvcnlcIixcbiAgXCJHcmV0YVwiLFxuICBcIkdyZXRjaGVuXCIsXG4gIFwiR3JleXNvblwiLFxuICBcIkdyaWZmaW5cIixcbiAgXCJHcm92ZXJcIixcbiAgXCJHdWFkYWx1cGVcIixcbiAgXCJHdWRydW5cIixcbiAgXCJHdWlkb1wiLFxuICBcIkd1aWxsZXJtb1wiLFxuICBcIkd1aXNlcHBlXCIsXG4gIFwiR3VubmFyXCIsXG4gIFwiR3VubmVyXCIsXG4gIFwiR3VzXCIsXG4gIFwiR3Vzc2llXCIsXG4gIFwiR3VzdFwiLFxuICBcIkd1c3RhdmVcIixcbiAgXCJHdXlcIixcbiAgXCJHd2VuXCIsXG4gIFwiR3dlbmRvbHluXCIsXG4gIFwiSGFkbGV5XCIsXG4gIFwiSGFpbGVlXCIsXG4gIFwiSGFpbGV5XCIsXG4gIFwiSGFpbGllXCIsXG4gIFwiSGFsXCIsXG4gIFwiSGFsZWlnaFwiLFxuICBcIkhhbGV5XCIsXG4gIFwiSGFsaWVcIixcbiAgXCJIYWxsZVwiLFxuICBcIkhhbGxpZVwiLFxuICBcIkhhbmtcIixcbiAgXCJIYW5uYVwiLFxuICBcIkhhbm5haFwiLFxuICBcIkhhbnNcIixcbiAgXCJIYXJkeVwiLFxuICBcIkhhcmxleVwiLFxuICBcIkhhcm1vblwiLFxuICBcIkhhcm1vbnlcIixcbiAgXCJIYXJvbGRcIixcbiAgXCJIYXJyaXNvblwiLFxuICBcIkhhcnJ5XCIsXG4gIFwiSGFydmV5XCIsXG4gIFwiSGFza2VsbFwiLFxuICBcIkhhc3NhblwiLFxuICBcIkhhc3NpZVwiLFxuICBcIkhhdHRpZVwiLFxuICBcIkhhdmVuXCIsXG4gIFwiSGF5ZGVuXCIsXG4gIFwiSGF5bGVlXCIsXG4gIFwiSGF5bGV5XCIsXG4gIFwiSGF5bGllXCIsXG4gIFwiSGF6ZWxcIixcbiAgXCJIYXpsZVwiLFxuICBcIkhlYXRoXCIsXG4gIFwiSGVhdGhlclwiLFxuICBcIkhlYXZlblwiLFxuICBcIkhlYmVyXCIsXG4gIFwiSGVjdG9yXCIsXG4gIFwiSGVpZGlcIixcbiAgXCJIZWxlblwiLFxuICBcIkhlbGVuYVwiLFxuICBcIkhlbGVuZVwiLFxuICBcIkhlbGdhXCIsXG4gIFwiSGVsbGVuXCIsXG4gIFwiSGVsbWVyXCIsXG4gIFwiSGVsb2lzZVwiLFxuICBcIkhlbmRlcnNvblwiLFxuICBcIkhlbnJpXCIsXG4gIFwiSGVucmlldHRlXCIsXG4gIFwiSGVucnlcIixcbiAgXCJIZXJiZXJ0XCIsXG4gIFwiSGVybWFuXCIsXG4gIFwiSGVybWFublwiLFxuICBcIkhlcm1pbmFcIixcbiAgXCJIZXJtaW5pYVwiLFxuICBcIkhlcm1pbmlvXCIsXG4gIFwiSGVyc2hlbFwiLFxuICBcIkhlcnRhXCIsXG4gIFwiSGVydGhhXCIsXG4gIFwiSGVzdGVyXCIsXG4gIFwiSGV0dGllXCIsXG4gIFwiSGlsYXJpb1wiLFxuICBcIkhpbGJlcnRcIixcbiAgXCJIaWxkYVwiLFxuICBcIkhpbGRlZ2FyZFwiLFxuICBcIkhpbGxhcmRcIixcbiAgXCJIaWxsYXJ5XCIsXG4gIFwiSGlsbWFcIixcbiAgXCJIaWx0b25cIixcbiAgXCJIaXBvbGl0b1wiLFxuICBcIkhpcmFtXCIsXG4gIFwiSG9iYXJ0XCIsXG4gIFwiSG9sZGVuXCIsXG4gIFwiSG9sbGllXCIsXG4gIFwiSG9sbGlzXCIsXG4gIFwiSG9sbHlcIixcbiAgXCJIb3BlXCIsXG4gIFwiSG9yYWNlXCIsXG4gIFwiSG9yYWNpb1wiLFxuICBcIkhvcnRlbnNlXCIsXG4gIFwiSG9zZWFcIixcbiAgXCJIb3VzdG9uXCIsXG4gIFwiSG93YXJkXCIsXG4gIFwiSG93ZWxsXCIsXG4gIFwiSG95dFwiLFxuICBcIkh1YmVydFwiLFxuICBcIkh1ZHNvblwiLFxuICBcIkh1Z2hcIixcbiAgXCJIdWxkYVwiLFxuICBcIkh1bWJlcnRvXCIsXG4gIFwiSHVudGVyXCIsXG4gIFwiSHltYW5cIixcbiAgXCJJYW5cIixcbiAgXCJJYnJhaGltXCIsXG4gIFwiSWNpZVwiLFxuICBcIklkYVwiLFxuICBcIklkZWxsXCIsXG4gIFwiSWRlbGxhXCIsXG4gIFwiSWduYWNpb1wiLFxuICBcIklnbmF0aXVzXCIsXG4gIFwiSWtlXCIsXG4gIFwiSWxhXCIsXG4gIFwiSWxlbmVcIixcbiAgXCJJbGlhbmFcIixcbiAgXCJJbWFcIixcbiAgXCJJbWFuaVwiLFxuICBcIkltZWxkYVwiLFxuICBcIkltbWFudWVsXCIsXG4gIFwiSW1vZ2VuZVwiLFxuICBcIkluZXNcIixcbiAgXCJJcm1hXCIsXG4gIFwiSXJ2aW5nXCIsXG4gIFwiSXJ3aW5cIixcbiAgXCJJc2FhY1wiLFxuICBcIklzYWJlbFwiLFxuICBcIklzYWJlbGxcIixcbiAgXCJJc2FiZWxsYVwiLFxuICBcIklzYWJlbGxlXCIsXG4gIFwiSXNhY1wiLFxuICBcIklzYWRvcmVcIixcbiAgXCJJc2FpXCIsXG4gIFwiSXNhaWFoXCIsXG4gIFwiSXNhaWFzXCIsXG4gIFwiSXNpZHJvXCIsXG4gIFwiSXNtYWVsXCIsXG4gIFwiSXNvYmVsXCIsXG4gIFwiSXNvbVwiLFxuICBcIklzcmFlbFwiLFxuICBcIklzc2FjXCIsXG4gIFwiSXR6ZWxcIixcbiAgXCJJdmFcIixcbiAgXCJJdmFoXCIsXG4gIFwiSXZvcnlcIixcbiAgXCJJdnlcIixcbiAgXCJJemFiZWxsYVwiLFxuICBcIkl6YWlhaFwiLFxuICBcIkphYmFyaVwiLFxuICBcIkphY2VcIixcbiAgXCJKYWNleVwiLFxuICBcIkphY2ludGhlXCIsXG4gIFwiSmFjaW50b1wiLFxuICBcIkphY2tcIixcbiAgXCJKYWNrZWxpbmVcIixcbiAgXCJKYWNraWVcIixcbiAgXCJKYWNrbHluXCIsXG4gIFwiSmFja3NvblwiLFxuICBcIkphY2t5XCIsXG4gIFwiSmFjbHluXCIsXG4gIFwiSmFjcXVlbHluXCIsXG4gIFwiSmFjcXVlc1wiLFxuICBcIkphY3ludGhlXCIsXG4gIFwiSmFkYVwiLFxuICBcIkphZGVcIixcbiAgXCJKYWRlblwiLFxuICBcIkphZG9uXCIsXG4gIFwiSmFkeW5cIixcbiAgXCJKYWVkZW5cIixcbiAgXCJKYWlkYVwiLFxuICBcIkphaWRlblwiLFxuICBcIkphaWx5blwiLFxuICBcIkphaW1lXCIsXG4gIFwiSmFpcm9cIixcbiAgXCJKYWtheWxhXCIsXG4gIFwiSmFrZVwiLFxuICBcIkpha29iXCIsXG4gIFwiSmFsZWVsXCIsXG4gIFwiSmFsZW5cIixcbiAgXCJKYWxvblwiLFxuICBcIkphbHluXCIsXG4gIFwiSmFtYWFsXCIsXG4gIFwiSmFtYWxcIixcbiAgXCJKYW1hclwiLFxuICBcIkphbWFyY3VzXCIsXG4gIFwiSmFtZWxcIixcbiAgXCJKYW1lc29uXCIsXG4gIFwiSmFtZXlcIixcbiAgXCJKYW1pZVwiLFxuICBcIkphbWlsXCIsXG4gIFwiSmFtaXJcIixcbiAgXCJKYW1pc29uXCIsXG4gIFwiSmFtbWllXCIsXG4gIFwiSmFuXCIsXG4gIFwiSmFuYVwiLFxuICBcIkphbmFlXCIsXG4gIFwiSmFuZVwiLFxuICBcIkphbmVsbGVcIixcbiAgXCJKYW5lc3NhXCIsXG4gIFwiSmFuZXRcIixcbiAgXCJKYW5pY2VcIixcbiAgXCJKYW5pY2tcIixcbiAgXCJKYW5pZVwiLFxuICBcIkphbmlzXCIsXG4gIFwiSmFuaXlhXCIsXG4gIFwiSmFubmllXCIsXG4gIFwiSmFueVwiLFxuICBcIkphcXVhblwiLFxuICBcIkphcXVlbGluXCIsXG4gIFwiSmFxdWVsaW5lXCIsXG4gIFwiSmFyZWRcIixcbiAgXCJKYXJlblwiLFxuICBcIkphcm9kXCIsXG4gIFwiSmFyb25cIixcbiAgXCJKYXJyZWRcIixcbiAgXCJKYXJyZWxsXCIsXG4gIFwiSmFycmV0XCIsXG4gIFwiSmFycmV0dFwiLFxuICBcIkphcnJvZFwiLFxuICBcIkphcnZpc1wiLFxuICBcIkphc2VuXCIsXG4gIFwiSmFzbWluXCIsXG4gIFwiSmFzb25cIixcbiAgXCJKYXNwZXJcIixcbiAgXCJKYXVuaXRhXCIsXG4gIFwiSmF2aWVyXCIsXG4gIFwiSmF2b25cIixcbiAgXCJKYXZvbnRlXCIsXG4gIFwiSmF5XCIsXG4gIFwiSmF5Y2VcIixcbiAgXCJKYXljZWVcIixcbiAgXCJKYXlkYVwiLFxuICBcIkpheWRlXCIsXG4gIFwiSmF5ZGVuXCIsXG4gIFwiSmF5ZG9uXCIsXG4gIFwiSmF5bGFuXCIsXG4gIFwiSmF5bGVuXCIsXG4gIFwiSmF5bGluXCIsXG4gIFwiSmF5bG9uXCIsXG4gIFwiSmF5bWVcIixcbiAgXCJKYXluZVwiLFxuICBcIkpheXNvblwiLFxuICBcIkphemx5blwiLFxuICBcIkphem1pblwiLFxuICBcIkphem15blwiLFxuICBcIkphem15bmVcIixcbiAgXCJKZWFuXCIsXG4gIFwiSmVhbmV0dGVcIixcbiAgXCJKZWFuaWVcIixcbiAgXCJKZWFubmVcIixcbiAgXCJKZWRcIixcbiAgXCJKZWRlZGlhaFwiLFxuICBcIkplZGlkaWFoXCIsXG4gIFwiSmVmZlwiLFxuICBcIkplZmZlcmV5XCIsXG4gIFwiSmVmZmVyeVwiLFxuICBcIkplZmZyZXlcIixcbiAgXCJKZWZmcnlcIixcbiAgXCJKZW5hXCIsXG4gIFwiSmVuaWZlclwiLFxuICBcIkplbm5pZVwiLFxuICBcIkplbm5pZmVyXCIsXG4gIFwiSmVubmluZ3NcIixcbiAgXCJKZW5ueWZlclwiLFxuICBcIkplbnNlblwiLFxuICBcIkplcmFkXCIsXG4gIFwiSmVyYWxkXCIsXG4gIFwiSmVyYW1pZVwiLFxuICBcIkplcmFteVwiLFxuICBcIkplcmVsXCIsXG4gIFwiSmVyZW1pZVwiLFxuICBcIkplcmVteVwiLFxuICBcIkplcm1haW5cIixcbiAgXCJKZXJtYWluZVwiLFxuICBcIkplcm1leVwiLFxuICBcIkplcm9kXCIsXG4gIFwiSmVyb21lXCIsXG4gIFwiSmVyb215XCIsXG4gIFwiSmVycmVsbFwiLFxuICBcIkplcnJvZFwiLFxuICBcIkplcnJvbGRcIixcbiAgXCJKZXJyeVwiLFxuICBcIkplc3NcIixcbiAgXCJKZXNzZVwiLFxuICBcIkplc3NpY2FcIixcbiAgXCJKZXNzaWVcIixcbiAgXCJKZXNzaWthXCIsXG4gIFwiSmVzc3lcIixcbiAgXCJKZXNzeWNhXCIsXG4gIFwiSmVzdXNcIixcbiAgXCJKZXR0XCIsXG4gIFwiSmV0dGllXCIsXG4gIFwiSmV2b25cIixcbiAgXCJKZXdlbFwiLFxuICBcIkpld2VsbFwiLFxuICBcIkppbGxpYW5cIixcbiAgXCJKaW1taWVcIixcbiAgXCJKaW1teVwiLFxuICBcIkpvXCIsXG4gIFwiSm9hblwiLFxuICBcIkpvYW5hXCIsXG4gIFwiSm9hbmllXCIsXG4gIFwiSm9hbm5lXCIsXG4gIFwiSm9hbm5pZVwiLFxuICBcIkpvYW5ueVwiLFxuICBcIkpvYW55XCIsXG4gIFwiSm9hcXVpblwiLFxuICBcIkpvY2VseW5cIixcbiAgXCJKb2RpZVwiLFxuICBcIkpvZHlcIixcbiAgXCJKb2VcIixcbiAgXCJKb2VsXCIsXG4gIFwiSm9lbGxlXCIsXG4gIFwiSm9lc3BoXCIsXG4gIFwiSm9leVwiLFxuICBcIkpvaGFuXCIsXG4gIFwiSm9oYW5uXCIsXG4gIFwiSm9oYW5uYVwiLFxuICBcIkpvaGF0aGFuXCIsXG4gIFwiSm9oblwiLFxuICBcIkpvaG5hdGhhblwiLFxuICBcIkpvaG5hdGhvblwiLFxuICBcIkpvaG5uaWVcIixcbiAgXCJKb2hubnlcIixcbiAgXCJKb2hucGF1bFwiLFxuICBcIkpvaG5zb25cIixcbiAgXCJKb2xpZVwiLFxuICBcIkpvblwiLFxuICBcIkpvbmFzXCIsXG4gIFwiSm9uYXRhblwiLFxuICBcIkpvbmF0aGFuXCIsXG4gIFwiSm9uYXRob25cIixcbiAgXCJKb3JkYW5cIixcbiAgXCJKb3JkYW5lXCIsXG4gIFwiSm9yZGlcIixcbiAgXCJKb3Jkb25cIixcbiAgXCJKb3JkeVwiLFxuICBcIkpvcmR5blwiLFxuICBcIkpvcmdlXCIsXG4gIFwiSm9zZVwiLFxuICBcIkpvc2VmYVwiLFxuICBcIkpvc2VmaW5hXCIsXG4gIFwiSm9zZXBoXCIsXG4gIFwiSm9zZXBoaW5lXCIsXG4gIFwiSm9zaFwiLFxuICBcIkpvc2h1YVwiLFxuICBcIkpvc2h1YWhcIixcbiAgXCJKb3NpYWhcIixcbiAgXCJKb3NpYW5lXCIsXG4gIFwiSm9zaWFubmVcIixcbiAgXCJKb3NpZVwiLFxuICBcIkpvc3VlXCIsXG4gIFwiSm92YW5cIixcbiAgXCJKb3ZhbmlcIixcbiAgXCJKb3Zhbm55XCIsXG4gIFwiSm92YW55XCIsXG4gIFwiSm95XCIsXG4gIFwiSm95Y2VcIixcbiAgXCJKdWFuYVwiLFxuICBcIkp1YW5pdGFcIixcbiAgXCJKdWRhaFwiLFxuICBcIkp1ZGRcIixcbiAgXCJKdWRlXCIsXG4gIFwiSnVkZ2VcIixcbiAgXCJKdWRzb25cIixcbiAgXCJKdWR5XCIsXG4gIFwiSnVsZXNcIixcbiAgXCJKdWxpYVwiLFxuICBcIkp1bGlhblwiLFxuICBcIkp1bGlhbmFcIixcbiAgXCJKdWxpYW5uZVwiLFxuICBcIkp1bGllXCIsXG4gIFwiSnVsaWVuXCIsXG4gIFwiSnVsaWV0XCIsXG4gIFwiSnVsaW9cIixcbiAgXCJKdWxpdXNcIixcbiAgXCJKdW5lXCIsXG4gIFwiSnVuaW9yXCIsXG4gIFwiSnVuaXVzXCIsXG4gIFwiSnVzdGVuXCIsXG4gIFwiSnVzdGljZVwiLFxuICBcIkp1c3RpbmFcIixcbiAgXCJKdXN0aW5lXCIsXG4gIFwiSnVzdG9uXCIsXG4gIFwiSnVzdHVzXCIsXG4gIFwiSnVzdHluXCIsXG4gIFwiSnV2ZW5hbFwiLFxuICBcIkp1d2FuXCIsXG4gIFwiS2FjZXlcIixcbiAgXCJLYWNpXCIsXG4gIFwiS2FjaWVcIixcbiAgXCJLYWRlXCIsXG4gIFwiS2FkZW5cIixcbiAgXCJLYWRpblwiLFxuICBcIkthZWxhXCIsXG4gIFwiS2FlbHluXCIsXG4gIFwiS2FpYVwiLFxuICBcIkthaWxlZVwiLFxuICBcIkthaWxleVwiLFxuICBcIkthaWx5blwiLFxuICBcIkthaXRsaW5cIixcbiAgXCJLYWl0bHluXCIsXG4gIFwiS2FsZVwiLFxuICBcIkthbGViXCIsXG4gIFwiS2FsZWlnaFwiLFxuICBcIkthbGV5XCIsXG4gIFwiS2FsaVwiLFxuICBcIkthbGxpZVwiLFxuICBcIkthbWVyb25cIixcbiAgXCJLYW1pbGxlXCIsXG4gIFwiS2FtcmVuXCIsXG4gIFwiS2Ftcm9uXCIsXG4gIFwiS2FtcnluXCIsXG4gIFwiS2FuZVwiLFxuICBcIkthcmFcIixcbiAgXCJLYXJlZW1cIixcbiAgXCJLYXJlbGxlXCIsXG4gIFwiS2FyZW5cIixcbiAgXCJLYXJpXCIsXG4gIFwiS2FyaWFuZVwiLFxuICBcIkthcmlhbm5lXCIsXG4gIFwiS2FyaW5hXCIsXG4gIFwiS2FyaW5lXCIsXG4gIFwiS2FybFwiLFxuICBcIkthcmxlZVwiLFxuICBcIkthcmxleVwiLFxuICBcIkthcmxpXCIsXG4gIFwiS2FybGllXCIsXG4gIFwiS2Fyb2xhbm5cIixcbiAgXCJLYXJzb25cIixcbiAgXCJLYXNhbmRyYVwiLFxuICBcIkthc2V5XCIsXG4gIFwiS2Fzc2FuZHJhXCIsXG4gIFwiS2F0YXJpbmFcIixcbiAgXCJLYXRlbGluXCIsXG4gIFwiS2F0ZWx5blwiLFxuICBcIkthdGVseW5uXCIsXG4gIFwiS2F0aGFyaW5hXCIsXG4gIFwiS2F0aGVyaW5lXCIsXG4gIFwiS2F0aGVyeW5cIixcbiAgXCJLYXRobGVlblwiLFxuICBcIkthdGhseW5cIixcbiAgXCJLYXRocnluXCIsXG4gIFwiS2F0aHJ5bmVcIixcbiAgXCJLYXRseW5cIixcbiAgXCJLYXRseW5uXCIsXG4gIFwiS2F0cmluYVwiLFxuICBcIkthdHJpbmVcIixcbiAgXCJLYXR0aWVcIixcbiAgXCJLYXZvblwiLFxuICBcIktheVwiLFxuICBcIktheWFcIixcbiAgXCJLYXljZWVcIixcbiAgXCJLYXlkZW5cIixcbiAgXCJLYXlsYVwiLFxuICBcIktheWxhaFwiLFxuICBcIktheWxlZVwiLFxuICBcIktheWxlaWdoXCIsXG4gIFwiS2F5bGV5XCIsXG4gIFwiS2F5bGlcIixcbiAgXCJLYXlsaWVcIixcbiAgXCJLYXlsaW5cIixcbiAgXCJLZWFnYW5cIixcbiAgXCJLZWFudVwiLFxuICBcIktlYXJhXCIsXG4gIFwiS2VhdG9uXCIsXG4gIFwiS2VlZ2FuXCIsXG4gIFwiS2VlbGV5XCIsXG4gIFwiS2VlbHlcIixcbiAgXCJLZWVuYW5cIixcbiAgXCJLZWlyYVwiLFxuICBcIktlaXRoXCIsXG4gIFwiS2VsbGVuXCIsXG4gIFwiS2VsbGV5XCIsXG4gIFwiS2VsbGlcIixcbiAgXCJLZWxsaWVcIixcbiAgXCJLZWxseVwiLFxuICBcIktlbHNpXCIsXG4gIFwiS2Vsc2llXCIsXG4gIFwiS2VsdG9uXCIsXG4gIFwiS2VsdmluXCIsXG4gIFwiS2VuXCIsXG4gIFwiS2VuZGFsbFwiLFxuICBcIktlbmRyYVwiLFxuICBcIktlbmRyaWNrXCIsXG4gIFwiS2VubmFcIixcbiAgXCJLZW5uZWRpXCIsXG4gIFwiS2VubmVkeVwiLFxuICBcIktlbm5ldGhcIixcbiAgXCJLZW5uaXRoXCIsXG4gIFwiS2VubnlcIixcbiAgXCJLZW50b25cIixcbiAgXCJLZW55YVwiLFxuICBcIktlbnlhdHRhXCIsXG4gIFwiS2VueW9uXCIsXG4gIFwiS2VvblwiLFxuICBcIktlc2hhdW5cIixcbiAgXCJLZXNoYXduXCIsXG4gIFwiS2V2ZW5cIixcbiAgXCJLZXZpblwiLFxuICBcIktldm9uXCIsXG4gIFwiS2V5b25cIixcbiAgXCJLZXlzaGF3blwiLFxuICBcIktoYWxpZFwiLFxuICBcIktoYWxpbFwiLFxuICBcIktpYW5cIixcbiAgXCJLaWFuYVwiLFxuICBcIktpYW5uYVwiLFxuICBcIktpYXJhXCIsXG4gIFwiS2lhcnJhXCIsXG4gIFwiS2llbFwiLFxuICBcIktpZXJhXCIsXG4gIFwiS2llcmFuXCIsXG4gIFwiS2lsZXlcIixcbiAgXCJLaW1cIixcbiAgXCJLaW1iZXJseVwiLFxuICBcIktpbmdcIixcbiAgXCJLaXBcIixcbiAgXCJLaXJhXCIsXG4gIFwiS2lya1wiLFxuICBcIktpcnN0ZW5cIixcbiAgXCJLaXJzdGluXCIsXG4gIFwiS2l0dHlcIixcbiAgXCJLb2JlXCIsXG4gIFwiS29ieVwiLFxuICBcIktvZHlcIixcbiAgXCJLb2xieVwiLFxuICBcIktvbGVcIixcbiAgXCJLb3JiaW5cIixcbiAgXCJLb3JleVwiLFxuICBcIktvcnlcIixcbiAgXCJLcmFpZ1wiLFxuICBcIktyaXNcIixcbiAgXCJLcmlzdGFcIixcbiAgXCJLcmlzdGlhblwiLFxuICBcIktyaXN0aW5cIixcbiAgXCJLcmlzdGluYVwiLFxuICBcIktyaXN0b2ZlclwiLFxuICBcIktyaXN0b2ZmZXJcIixcbiAgXCJLcmlzdG9waGVyXCIsXG4gIFwiS3Jpc3R5XCIsXG4gIFwiS3J5c3RhbFwiLFxuICBcIktyeXN0ZWxcIixcbiAgXCJLcnlzdGluYVwiLFxuICBcIkt1cnRcIixcbiAgXCJLdXJ0aXNcIixcbiAgXCJLeWxhXCIsXG4gIFwiS3lsZVwiLFxuICBcIkt5bGVlXCIsXG4gIFwiS3lsZWlnaFwiLFxuICBcIkt5bGVyXCIsXG4gIFwiS3lsaWVcIixcbiAgXCJLeXJhXCIsXG4gIFwiTGFjZXlcIixcbiAgXCJMYWN5XCIsXG4gIFwiTGFkYXJpdXNcIixcbiAgXCJMYWZheWV0dGVcIixcbiAgXCJMYWlsYVwiLFxuICBcIkxhaXNoYVwiLFxuICBcIkxhbWFyXCIsXG4gIFwiTGFtYmVydFwiLFxuICBcIkxhbW9udFwiLFxuICBcIkxhbmNlXCIsXG4gIFwiTGFuZGVuXCIsXG4gIFwiTGFuZVwiLFxuICBcIkxhbmV5XCIsXG4gIFwiTGFyaXNzYVwiLFxuICBcIkxhcm9uXCIsXG4gIFwiTGFycnlcIixcbiAgXCJMYXJ1ZVwiLFxuICBcIkxhdXJhXCIsXG4gIFwiTGF1cmVsXCIsXG4gIFwiTGF1cmVuXCIsXG4gIFwiTGF1cmVuY2VcIixcbiAgXCJMYXVyZXR0YVwiLFxuICBcIkxhdXJpYW5lXCIsXG4gIFwiTGF1cmlhbm5lXCIsXG4gIFwiTGF1cmllXCIsXG4gIFwiTGF1cmluZVwiLFxuICBcIkxhdXJ5XCIsXG4gIFwiTGF1cnluXCIsXG4gIFwiTGF2YWRhXCIsXG4gIFwiTGF2ZXJuXCIsXG4gIFwiTGF2ZXJuYVwiLFxuICBcIkxhdmVybmVcIixcbiAgXCJMYXZpbmFcIixcbiAgXCJMYXZpbmlhXCIsXG4gIFwiTGF2b25cIixcbiAgXCJMYXZvbm5lXCIsXG4gIFwiTGF3cmVuY2VcIixcbiAgXCJMYXdzb25cIixcbiAgXCJMYXlsYVwiLFxuICBcIkxheW5lXCIsXG4gIFwiTGF6YXJvXCIsXG4gIFwiTGVhXCIsXG4gIFwiTGVhbm5cIixcbiAgXCJMZWFubmFcIixcbiAgXCJMZWFubmVcIixcbiAgXCJMZWF0aGFcIixcbiAgXCJMZWRhXCIsXG4gIFwiTGVlXCIsXG4gIFwiTGVpZlwiLFxuICBcIkxlaWxhXCIsXG4gIFwiTGVpbGFuaVwiLFxuICBcIkxlbGFcIixcbiAgXCJMZWxhaFwiLFxuICBcIkxlbGFuZFwiLFxuICBcIkxlbGlhXCIsXG4gIFwiTGVtcGlcIixcbiAgXCJMZW11ZWxcIixcbiAgXCJMZW5uYVwiLFxuICBcIkxlbm5pZVwiLFxuICBcIkxlbm55XCIsXG4gIFwiTGVub3JhXCIsXG4gIFwiTGVub3JlXCIsXG4gIFwiTGVvXCIsXG4gIFwiTGVvbGFcIixcbiAgXCJMZW9uXCIsXG4gIFwiTGVvbmFyZFwiLFxuICBcIkxlb25hcmRvXCIsXG4gIFwiTGVvbmVcIixcbiAgXCJMZW9uZWxcIixcbiAgXCJMZW9uaWVcIixcbiAgXCJMZW9ub3JcIixcbiAgXCJMZW9ub3JhXCIsXG4gIFwiTGVvcG9sZFwiLFxuICBcIkxlb3BvbGRvXCIsXG4gIFwiTGVvcmFcIixcbiAgXCJMZXJhXCIsXG4gIFwiTGVzbGV5XCIsXG4gIFwiTGVzbGllXCIsXG4gIFwiTGVzbHlcIixcbiAgXCJMZXNzaWVcIixcbiAgXCJMZXN0ZXJcIixcbiAgXCJMZXRhXCIsXG4gIFwiTGV0aGFcIixcbiAgXCJMZXRpdGlhXCIsXG4gIFwiTGV2aVwiLFxuICBcIkxld1wiLFxuICBcIkxld2lzXCIsXG4gIFwiTGV4aVwiLFxuICBcIkxleGllXCIsXG4gIFwiTGV4dXNcIixcbiAgXCJMaWFcIixcbiAgXCJMaWFtXCIsXG4gIFwiTGlhbmFcIixcbiAgXCJMaWJiaWVcIixcbiAgXCJMaWJieVwiLFxuICBcIkxpbGFcIixcbiAgXCJMaWxpYW5cIixcbiAgXCJMaWxpYW5hXCIsXG4gIFwiTGlsaWFuZVwiLFxuICBcIkxpbGxhXCIsXG4gIFwiTGlsbGlhblwiLFxuICBcIkxpbGxpYW5hXCIsXG4gIFwiTGlsbGllXCIsXG4gIFwiTGlsbHlcIixcbiAgXCJMaWx5XCIsXG4gIFwiTGlseWFuXCIsXG4gIFwiTGluYVwiLFxuICBcIkxpbmNvbG5cIixcbiAgXCJMaW5kYVwiLFxuICBcIkxpbmRzYXlcIixcbiAgXCJMaW5kc2V5XCIsXG4gIFwiTGlubmVhXCIsXG4gIFwiTGlubmllXCIsXG4gIFwiTGlud29vZFwiLFxuICBcIkxpb25lbFwiLFxuICBcIkxpc2FcIixcbiAgXCJMaXNhbmRyb1wiLFxuICBcIkxpc2V0dGVcIixcbiAgXCJMaXR6eVwiLFxuICBcIkxpemFcIixcbiAgXCJMaXpldGhcIixcbiAgXCJMaXp6aWVcIixcbiAgXCJMbGV3ZWxseW5cIixcbiAgXCJMbG95ZFwiLFxuICBcIkxvZ2FuXCIsXG4gIFwiTG9pc1wiLFxuICBcIkxvbGFcIixcbiAgXCJMb2xpdGFcIixcbiAgXCJMb21hXCIsXG4gIFwiTG9uXCIsXG4gIFwiTG9uZG9uXCIsXG4gIFwiTG9uaWVcIixcbiAgXCJMb25uaWVcIixcbiAgXCJMb25ueVwiLFxuICBcIkxvbnpvXCIsXG4gIFwiTG9yYVwiLFxuICBcIkxvcmFpbmVcIixcbiAgXCJMb3JlblwiLFxuICBcIkxvcmVuYVwiLFxuICBcIkxvcmVuelwiLFxuICBcIkxvcmVuemFcIixcbiAgXCJMb3JlbnpvXCIsXG4gIFwiTG9yaVwiLFxuICBcIkxvcmluZVwiLFxuICBcIkxvcm5hXCIsXG4gIFwiTG90dGllXCIsXG4gIFwiTG91XCIsXG4gIFwiTG91aWVcIixcbiAgXCJMb3Vpc2FcIixcbiAgXCJMb3VyZGVzXCIsXG4gIFwiTG91dmVuaWFcIixcbiAgXCJMb3dlbGxcIixcbiAgXCJMb3lcIixcbiAgXCJMb3lhbFwiLFxuICBcIkxveWNlXCIsXG4gIFwiTHVjYXNcIixcbiAgXCJMdWNpYW5vXCIsXG4gIFwiTHVjaWVcIixcbiAgXCJMdWNpZW5uZVwiLFxuICBcIkx1Y2lsZVwiLFxuICBcIkx1Y2luZGFcIixcbiAgXCJMdWNpb1wiLFxuICBcIkx1Y2lvdXNcIixcbiAgXCJMdWNpdXNcIixcbiAgXCJMdWN5XCIsXG4gIFwiTHVkaWVcIixcbiAgXCJMdWR3aWdcIixcbiAgXCJMdWVcIixcbiAgXCJMdWVsbGFcIixcbiAgXCJMdWlnaVwiLFxuICBcIkx1aXNcIixcbiAgXCJMdWlzYVwiLFxuICBcIkx1a2FzXCIsXG4gIFwiTHVsYVwiLFxuICBcIkx1bHVcIixcbiAgXCJMdW5hXCIsXG4gIFwiTHVwZVwiLFxuICBcIkx1cmFcIixcbiAgXCJMdXJsaW5lXCIsXG4gIFwiTHV0aGVyXCIsXG4gIFwiTHV6XCIsXG4gIFwiTHlkYVwiLFxuICBcIkx5ZGlhXCIsXG4gIFwiTHlsYVwiLFxuICBcIkx5bm5cIixcbiAgXCJMeXJpY1wiLFxuICBcIkx5c2FubmVcIixcbiAgXCJNYWJlbFwiLFxuICBcIk1hYmVsbGVcIixcbiAgXCJNYWJsZVwiLFxuICBcIk1hY1wiLFxuICBcIk1hY2V5XCIsXG4gIFwiTWFjaVwiLFxuICBcIk1hY2llXCIsXG4gIFwiTWFja1wiLFxuICBcIk1hY2tlbnppZVwiLFxuICBcIk1hY3lcIixcbiAgXCJNYWRhbGluZVwiLFxuICBcIk1hZGFseW5cIixcbiAgXCJNYWRkaXNvblwiLFxuICBcIk1hZGVsaW5lXCIsXG4gIFwiTWFkZWx5blwiLFxuICBcIk1hZGVseW5uXCIsXG4gIFwiTWFkZ2VcIixcbiAgXCJNYWRpZVwiLFxuICBcIk1hZGlseW5cIixcbiAgXCJNYWRpc2VuXCIsXG4gIFwiTWFkaXNvblwiLFxuICBcIk1hZGlzeW5cIixcbiAgXCJNYWRvbm5hXCIsXG4gIFwiTWFkeXNvblwiLFxuICBcIk1hZVwiLFxuICBcIk1hZWdhblwiLFxuICBcIk1hZXZlXCIsXG4gIFwiTWFmYWxkYVwiLFxuICBcIk1hZ2FsaVwiLFxuICBcIk1hZ2RhbGVuXCIsXG4gIFwiTWFnZGFsZW5hXCIsXG4gIFwiTWFnZ2llXCIsXG4gIFwiTWFnbm9saWFcIixcbiAgXCJNYWdudXNcIixcbiAgXCJNYWlhXCIsXG4gIFwiTWFpZGFcIixcbiAgXCJNYWl5YVwiLFxuICBcIk1ham9yXCIsXG4gIFwiTWFrYXlsYVwiLFxuICBcIk1ha2VubmFcIixcbiAgXCJNYWtlbnppZVwiLFxuICBcIk1hbGFjaGlcIixcbiAgXCJNYWxjb2xtXCIsXG4gIFwiTWFsaWthXCIsXG4gIFwiTWFsaW5kYVwiLFxuICBcIk1hbGxpZVwiLFxuICBcIk1hbGxvcnlcIixcbiAgXCJNYWx2aW5hXCIsXG4gIFwiTWFuZHlcIixcbiAgXCJNYW5sZXlcIixcbiAgXCJNYW51ZWxcIixcbiAgXCJNYW51ZWxhXCIsXG4gIFwiTWFyYVwiLFxuICBcIk1hcmNcIixcbiAgXCJNYXJjZWxcIixcbiAgXCJNYXJjZWxpbmFcIixcbiAgXCJNYXJjZWxpbm9cIixcbiAgXCJNYXJjZWxsYVwiLFxuICBcIk1hcmNlbGxlXCIsXG4gIFwiTWFyY2VsbHVzXCIsXG4gIFwiTWFyY2Vsb1wiLFxuICBcIk1hcmNpYVwiLFxuICBcIk1hcmNvXCIsXG4gIFwiTWFyY29zXCIsXG4gIFwiTWFyY3VzXCIsXG4gIFwiTWFyZ2FyZXRcIixcbiAgXCJNYXJnYXJldGVcIixcbiAgXCJNYXJnYXJldHRcIixcbiAgXCJNYXJnYXJldHRhXCIsXG4gIFwiTWFyZ2FyZXR0ZVwiLFxuICBcIk1hcmdhcml0YVwiLFxuICBcIk1hcmdlXCIsXG4gIFwiTWFyZ2llXCIsXG4gIFwiTWFyZ290XCIsXG4gIFwiTWFyZ3JldFwiLFxuICBcIk1hcmd1ZXJpdGVcIixcbiAgXCJNYXJpYVwiLFxuICBcIk1hcmlhaFwiLFxuICBcIk1hcmlhbVwiLFxuICBcIk1hcmlhblwiLFxuICBcIk1hcmlhbmFcIixcbiAgXCJNYXJpYW5lXCIsXG4gIFwiTWFyaWFubmFcIixcbiAgXCJNYXJpYW5uZVwiLFxuICBcIk1hcmlhbm9cIixcbiAgXCJNYXJpYmVsXCIsXG4gIFwiTWFyaWVcIixcbiAgXCJNYXJpZWxhXCIsXG4gIFwiTWFyaWVsbGVcIixcbiAgXCJNYXJpZXR0YVwiLFxuICBcIk1hcmlsaWVcIixcbiAgXCJNYXJpbG91XCIsXG4gIFwiTWFyaWx5bmVcIixcbiAgXCJNYXJpbmFcIixcbiAgXCJNYXJpb1wiLFxuICBcIk1hcmlvblwiLFxuICBcIk1hcmlzYVwiLFxuICBcIk1hcmlzb2xcIixcbiAgXCJNYXJpdHphXCIsXG4gIFwiTWFyam9sYWluZVwiLFxuICBcIk1hcmpvcmllXCIsXG4gIFwiTWFyam9yeVwiLFxuICBcIk1hcmtcIixcbiAgXCJNYXJrdXNcIixcbiAgXCJNYXJsZWVcIixcbiAgXCJNYXJsZW5cIixcbiAgXCJNYXJsZW5lXCIsXG4gIFwiTWFybGV5XCIsXG4gIFwiTWFybGluXCIsXG4gIFwiTWFybG9uXCIsXG4gIFwiTWFycXVlc1wiLFxuICBcIk1hcnF1aXNcIixcbiAgXCJNYXJxdWlzZVwiLFxuICBcIk1hcnNoYWxsXCIsXG4gIFwiTWFydGFcIixcbiAgXCJNYXJ0aW5cIixcbiAgXCJNYXJ0aW5hXCIsXG4gIFwiTWFydGluZVwiLFxuICBcIk1hcnR5XCIsXG4gIFwiTWFydmluXCIsXG4gIFwiTWFyeVwiLFxuICBcIk1hcnlhbVwiLFxuICBcIk1hcnlqYW5lXCIsXG4gIFwiTWFyeXNlXCIsXG4gIFwiTWFzb25cIixcbiAgXCJNYXRlb1wiLFxuICBcIk1hdGhld1wiLFxuICBcIk1hdGhpYXNcIixcbiAgXCJNYXRoaWxkZVwiLFxuICBcIk1hdGlsZGFcIixcbiAgXCJNYXRpbGRlXCIsXG4gIFwiTWF0dFwiLFxuICBcIk1hdHRlb1wiLFxuICBcIk1hdHRpZVwiLFxuICBcIk1hdWRcIixcbiAgXCJNYXVkZVwiLFxuICBcIk1hdWRpZVwiLFxuICBcIk1hdXJlZW5cIixcbiAgXCJNYXVyaWNlXCIsXG4gIFwiTWF1cmljaW9cIixcbiAgXCJNYXVyaW5lXCIsXG4gIFwiTWF2ZXJpY2tcIixcbiAgXCJNYXZpc1wiLFxuICBcIk1heFwiLFxuICBcIk1heGllXCIsXG4gIFwiTWF4aW1lXCIsXG4gIFwiTWF4aW1pbGlhblwiLFxuICBcIk1heGltaWxsaWFcIixcbiAgXCJNYXhpbWlsbGlhblwiLFxuICBcIk1heGltb1wiLFxuICBcIk1heGltdXNcIixcbiAgXCJNYXhpbmVcIixcbiAgXCJNYXh3ZWxsXCIsXG4gIFwiTWF5XCIsXG4gIFwiTWF5YVwiLFxuICBcIk1heWJlbGxcIixcbiAgXCJNYXliZWxsZVwiLFxuICBcIk1heWVcIixcbiAgXCJNYXltaWVcIixcbiAgXCJNYXluYXJkXCIsXG4gIFwiTWF5cmFcIixcbiAgXCJNYXppZVwiLFxuICBcIk1ja2F5bGFcIixcbiAgXCJNY2tlbm5hXCIsXG4gIFwiTWNrZW56aWVcIixcbiAgXCJNZWFnYW5cIixcbiAgXCJNZWFnaGFuXCIsXG4gIFwiTWVkYVwiLFxuICBcIk1lZ2FuZVwiLFxuICBcIk1lZ2dpZVwiLFxuICBcIk1lZ2hhblwiLFxuICBcIk1la2hpXCIsXG4gIFwiTWVsYW55XCIsXG4gIFwiTWVsYmFcIixcbiAgXCJNZWxpc2FcIixcbiAgXCJNZWxpc3NhXCIsXG4gIFwiTWVsbGllXCIsXG4gIFwiTWVsb2R5XCIsXG4gIFwiTWVsdmluXCIsXG4gIFwiTWVsdmluYVwiLFxuICBcIk1lbHluYVwiLFxuICBcIk1lbHlzc2FcIixcbiAgXCJNZXJjZWRlc1wiLFxuICBcIk1lcmVkaXRoXCIsXG4gIFwiTWVybFwiLFxuICBcIk1lcmxlXCIsXG4gIFwiTWVybGluXCIsXG4gIFwiTWVycml0dFwiLFxuICBcIk1lcnRpZVwiLFxuICBcIk1lcnZpblwiLFxuICBcIk1ldGFcIixcbiAgXCJNaWFcIixcbiAgXCJNaWNhZWxhXCIsXG4gIFwiTWljYWhcIixcbiAgXCJNaWNoYWVsXCIsXG4gIFwiTWljaGFlbGFcIixcbiAgXCJNaWNoYWxlXCIsXG4gIFwiTWljaGVhbFwiLFxuICBcIk1pY2hlbFwiLFxuICBcIk1pY2hlbGVcIixcbiAgXCJNaWNoZWxsZVwiLFxuICBcIk1pZ3VlbFwiLFxuICBcIk1pa2F5bGFcIixcbiAgXCJNaWtlXCIsXG4gIFwiTWlrZWxcIixcbiAgXCJNaWxhblwiLFxuICBcIk1pbGVzXCIsXG4gIFwiTWlsZm9yZFwiLFxuICBcIk1pbGxlclwiLFxuICBcIk1pbGxpZVwiLFxuICBcIk1pbG9cIixcbiAgXCJNaWx0b25cIixcbiAgXCJNaW5hXCIsXG4gIFwiTWluZXJ2YVwiLFxuICBcIk1pbm5pZVwiLFxuICBcIk1pcmFjbGVcIixcbiAgXCJNaXJlaWxsZVwiLFxuICBcIk1pcmV5YVwiLFxuICBcIk1pc2FlbFwiLFxuICBcIk1pc3NvdXJpXCIsXG4gIFwiTWlzdHlcIixcbiAgXCJNaXRjaGVsXCIsXG4gIFwiTWl0Y2hlbGxcIixcbiAgXCJNaXR0aWVcIixcbiAgXCJNb2Rlc3RhXCIsXG4gIFwiTW9kZXN0b1wiLFxuICBcIk1vaGFtZWRcIixcbiAgXCJNb2hhbW1hZFwiLFxuICBcIk1vaGFtbWVkXCIsXG4gIFwiTW9pc2VzXCIsXG4gIFwiTW9sbGllXCIsXG4gIFwiTW9sbHlcIixcbiAgXCJNb25hXCIsXG4gIFwiTW9uaWNhXCIsXG4gIFwiTW9uaXF1ZVwiLFxuICBcIk1vbnJvZVwiLFxuICBcIk1vbnNlcnJhdFwiLFxuICBcIk1vbnNlcnJhdGVcIixcbiAgXCJNb250YW5hXCIsXG4gIFwiTW9udGVcIixcbiAgXCJNb250eVwiLFxuICBcIk1vcmdhblwiLFxuICBcIk1vcmlhaFwiLFxuICBcIk1vcnJpc1wiLFxuICBcIk1vcnRpbWVyXCIsXG4gIFwiTW9ydG9uXCIsXG4gIFwiTW9zZVwiLFxuICBcIk1vc2VzXCIsXG4gIFwiTW9zaGVcIixcbiAgXCJNb3NzaWVcIixcbiAgXCJNb3plbGxcIixcbiAgXCJNb3plbGxlXCIsXG4gIFwiTXVoYW1tYWRcIixcbiAgXCJNdXJpZWxcIixcbiAgXCJNdXJsXCIsXG4gIFwiTXVycGh5XCIsXG4gIFwiTXVycmF5XCIsXG4gIFwiTXVzdGFmYVwiLFxuICBcIk15YVwiLFxuICBcIk15YWhcIixcbiAgXCJNeWxlbmVcIixcbiAgXCJNeWxlc1wiLFxuICBcIk15cmFcIixcbiAgXCJNeXJpYW1cIixcbiAgXCJNeXJsXCIsXG4gIFwiTXlybmFcIixcbiAgXCJNeXJvblwiLFxuICBcIk15cnRpY2VcIixcbiAgXCJNeXJ0aWVcIixcbiAgXCJNeXJ0aXNcIixcbiAgXCJNeXJ0bGVcIixcbiAgXCJOYWRpYVwiLFxuICBcIk5ha2lhXCIsXG4gIFwiTmFtZVwiLFxuICBcIk5hbm5pZVwiLFxuICBcIk5hb21pXCIsXG4gIFwiTmFvbWllXCIsXG4gIFwiTmFwb2xlb25cIixcbiAgXCJOYXJjaXNvXCIsXG4gIFwiTmFzaFwiLFxuICBcIk5hc2lyXCIsXG4gIFwiTmF0XCIsXG4gIFwiTmF0YWxpYVwiLFxuICBcIk5hdGFsaWVcIixcbiAgXCJOYXRhc2hhXCIsXG4gIFwiTmF0aGFuXCIsXG4gIFwiTmF0aGFuYWVsXCIsXG4gIFwiTmF0aGFuaWFsXCIsXG4gIFwiTmF0aGFuaWVsXCIsXG4gIFwiTmF0aGVuXCIsXG4gIFwiTmF5ZWxpXCIsXG4gIFwiTmVhbFwiLFxuICBcIk5lZFwiLFxuICBcIk5lZHJhXCIsXG4gIFwiTmVoYVwiLFxuICBcIk5laWxcIixcbiAgXCJOZWxkYVwiLFxuICBcIk5lbGxhXCIsXG4gIFwiTmVsbGVcIixcbiAgXCJOZWxsaWVcIixcbiAgXCJOZWxzXCIsXG4gIFwiTmVsc29uXCIsXG4gIFwiTmVvbWFcIixcbiAgXCJOZXN0b3JcIixcbiAgXCJOZXR0aWVcIixcbiAgXCJOZXZhXCIsXG4gIFwiTmV3ZWxsXCIsXG4gIFwiTmV3dG9uXCIsXG4gIFwiTmlhXCIsXG4gIFwiTmljaG9sYXNcIixcbiAgXCJOaWNob2xhdXNcIixcbiAgXCJOaWNob2xlXCIsXG4gIFwiTmlja1wiLFxuICBcIk5pY2tsYXVzXCIsXG4gIFwiTmlja29sYXNcIixcbiAgXCJOaWNvXCIsXG4gIFwiTmljb2xhXCIsXG4gIFwiTmljb2xhc1wiLFxuICBcIk5pY29sZVwiLFxuICBcIk5pY29sZXR0ZVwiLFxuICBcIk5pZ2VsXCIsXG4gIFwiTmlraXRhXCIsXG4gIFwiTmlra2lcIixcbiAgXCJOaWtrb1wiLFxuICBcIk5pa29cIixcbiAgXCJOaWtvbGFzXCIsXG4gIFwiTmlsc1wiLFxuICBcIk5pbmFcIixcbiAgXCJOb2FoXCIsXG4gIFwiTm9ibGVcIixcbiAgXCJOb2VcIixcbiAgXCJOb2VsXCIsXG4gIFwiTm9lbGlhXCIsXG4gIFwiTm9lbWlcIixcbiAgXCJOb2VtaWVcIixcbiAgXCJOb2VteVwiLFxuICBcIk5vbGFcIixcbiAgXCJOb2xhblwiLFxuICBcIk5vbmFcIixcbiAgXCJOb3JhXCIsXG4gIFwiTm9yYmVydFwiLFxuICBcIk5vcmJlcnRvXCIsXG4gIFwiTm9yZW5lXCIsXG4gIFwiTm9ybWFcIixcbiAgXCJOb3JyaXNcIixcbiAgXCJOb3J2YWxcIixcbiAgXCJOb3J3b29kXCIsXG4gIFwiTm92YVwiLFxuICBcIk5vdmVsbGFcIixcbiAgXCJOeWFcIixcbiAgXCJOeWFoXCIsXG4gIFwiTnlhc2lhXCIsXG4gIFwiT2JpZVwiLFxuICBcIk9jZWFuZVwiLFxuICBcIk9jaWVcIixcbiAgXCJPY3RhdmlhXCIsXG4gIFwiT2RhXCIsXG4gIFwiT2RlbGxcIixcbiAgXCJPZGVzc2FcIixcbiAgXCJPZGllXCIsXG4gIFwiT2ZlbGlhXCIsXG4gIFwiT2tleVwiLFxuICBcIk9sYVwiLFxuICBcIk9sYWZcIixcbiAgXCJPbGVcIixcbiAgXCJPbGVuXCIsXG4gIFwiT2xldGFcIixcbiAgXCJPbGdhXCIsXG4gIFwiT2xpblwiLFxuICBcIk9saXZlclwiLFxuICBcIk9sbGllXCIsXG4gIFwiT21hXCIsXG4gIFwiT21hcmlcIixcbiAgXCJPbWVyXCIsXG4gIFwiT25hXCIsXG4gIFwiT25pZVwiLFxuICBcIk9wYWxcIixcbiAgXCJPcGhlbGlhXCIsXG4gIFwiT3JhXCIsXG4gIFwiT3JhbFwiLFxuICBcIk9yYW5cIixcbiAgXCJPcmVuXCIsXG4gIFwiT3JpZVwiLFxuICBcIk9yaW5cIixcbiAgXCJPcmlvblwiLFxuICBcIk9ybGFuZFwiLFxuICBcIk9ybGFuZG9cIixcbiAgXCJPcmxvXCIsXG4gIFwiT3JwaGFcIixcbiAgXCJPcnJpblwiLFxuICBcIk9ydmFsXCIsXG4gIFwiT3J2aWxsZVwiLFxuICBcIk9zYmFsZG9cIixcbiAgXCJPc2Jvcm5lXCIsXG4gIFwiT3NjYXJcIixcbiAgXCJPc3ZhbGRvXCIsXG4gIFwiT3N3YWxkXCIsXG4gIFwiT3N3YWxkb1wiLFxuICBcIk90aGFcIixcbiAgXCJPdGhvXCIsXG4gIFwiT3RpbGlhXCIsXG4gIFwiT3Rpc1wiLFxuICBcIk90dGlsaWVcIixcbiAgXCJPdHRpc1wiLFxuICBcIk90dG9cIixcbiAgXCJPdmFcIixcbiAgXCJPd2VuXCIsXG4gIFwiT3plbGxhXCIsXG4gIFwiUGFibG9cIixcbiAgXCJQYWlnZVwiLFxuICBcIlBhbG1hXCIsXG4gIFwiUGFtZWxhXCIsXG4gIFwiUGFuc3lcIixcbiAgXCJQYW9sb1wiLFxuICBcIlBhcmlzXCIsXG4gIFwiUGFya2VyXCIsXG4gIFwiUGFzY2FsZVwiLFxuICBcIlBhc3F1YWxlXCIsXG4gIFwiUGF0XCIsXG4gIFwiUGF0aWVuY2VcIixcbiAgXCJQYXRyaWNpYVwiLFxuICBcIlBhdHJpY2tcIixcbiAgXCJQYXRzeVwiLFxuICBcIlBhdHRpZVwiLFxuICBcIlBhdWxcIixcbiAgXCJQYXVsYVwiLFxuICBcIlBhdWxpbmVcIixcbiAgXCJQYXh0b25cIixcbiAgXCJQYXl0b25cIixcbiAgXCJQZWFybFwiLFxuICBcIlBlYXJsaWVcIixcbiAgXCJQZWFybGluZVwiLFxuICBcIlBlZHJvXCIsXG4gIFwiUGVnZ2llXCIsXG4gIFwiUGVuZWxvcGVcIixcbiAgXCJQZXJjaXZhbFwiLFxuICBcIlBlcmN5XCIsXG4gIFwiUGVycnlcIixcbiAgXCJQZXRlXCIsXG4gIFwiUGV0ZXJcIixcbiAgXCJQZXRyYVwiLFxuICBcIlBleXRvblwiLFxuICBcIlBoaWxpcFwiLFxuICBcIlBob2ViZVwiLFxuICBcIlBoeWxsaXNcIixcbiAgXCJQaWVyY2VcIixcbiAgXCJQaWVycmVcIixcbiAgXCJQaWV0cm9cIixcbiAgXCJQaW5rXCIsXG4gIFwiUGlua2llXCIsXG4gIFwiUGlwZXJcIixcbiAgXCJQb2xseVwiLFxuICBcIlBvcnRlclwiLFxuICBcIlByZWNpb3VzXCIsXG4gIFwiUHJlc2xleVwiLFxuICBcIlByZXN0b25cIixcbiAgXCJQcmljZVwiLFxuICBcIlByaW5jZVwiLFxuICBcIlByaW5jZXNzXCIsXG4gIFwiUHJpc2NpbGxhXCIsXG4gIFwiUHJvdmlkZW5jaVwiLFxuICBcIlBydWRlbmNlXCIsXG4gIFwiUXVlZW5cIixcbiAgXCJRdWVlbmllXCIsXG4gIFwiUXVlbnRpblwiLFxuICBcIlF1aW5jeVwiLFxuICBcIlF1aW5uXCIsXG4gIFwiUXVpbnRlblwiLFxuICBcIlF1aW50b25cIixcbiAgXCJSYWNoYWVsXCIsXG4gIFwiUmFjaGVsXCIsXG4gIFwiUmFjaGVsbGVcIixcbiAgXCJSYWVcIixcbiAgXCJSYWVnYW5cIixcbiAgXCJSYWZhZWxcIixcbiAgXCJSYWZhZWxhXCIsXG4gIFwiUmFoZWVtXCIsXG4gIFwiUmFoc2FhblwiLFxuICBcIlJhaHVsXCIsXG4gIFwiUmFpbmFcIixcbiAgXCJSYWxlaWdoXCIsXG4gIFwiUmFscGhcIixcbiAgXCJSYW1pcm9cIixcbiAgXCJSYW1vblwiLFxuICBcIlJhbW9uYVwiLFxuICBcIlJhbmRhbFwiLFxuICBcIlJhbmRhbGxcIixcbiAgXCJSYW5kaVwiLFxuICBcIlJhbmR5XCIsXG4gIFwiUmFuc29tXCIsXG4gIFwiUmFvdWxcIixcbiAgXCJSYXBoYWVsXCIsXG4gIFwiUmFwaGFlbGxlXCIsXG4gIFwiUmFxdWVsXCIsXG4gIFwiUmFzaGFkXCIsXG4gIFwiUmFzaGF3blwiLFxuICBcIlJhc2hlZWRcIixcbiAgXCJSYXVsXCIsXG4gIFwiUmF2ZW5cIixcbiAgXCJSYXlcIixcbiAgXCJSYXltb25kXCIsXG4gIFwiUmF5bXVuZG9cIixcbiAgXCJSZWFnYW5cIixcbiAgXCJSZWFubmFcIixcbiAgXCJSZWJhXCIsXG4gIFwiUmViZWNhXCIsXG4gIFwiUmViZWNjYVwiLFxuICBcIlJlYmVrYVwiLFxuICBcIlJlYmVrYWhcIixcbiAgXCJSZWVjZVwiLFxuICBcIlJlZWRcIixcbiAgXCJSZWVzZVwiLFxuICBcIlJlZ2FuXCIsXG4gIFwiUmVnZ2llXCIsXG4gIFwiUmVnaW5hbGRcIixcbiAgXCJSZWlkXCIsXG4gIFwiUmVpbGx5XCIsXG4gIFwiUmVpbmFcIixcbiAgXCJSZWluaG9sZFwiLFxuICBcIlJlbWluZ3RvblwiLFxuICBcIlJlbmVcIixcbiAgXCJSZW5lZVwiLFxuICBcIlJlc3NpZVwiLFxuICBcIlJldGFcIixcbiAgXCJSZXRoYVwiLFxuICBcIlJldHRhXCIsXG4gIFwiUmV1YmVuXCIsXG4gIFwiUmV2YVwiLFxuICBcIlJleFwiLFxuICBcIlJleVwiLFxuICBcIlJleWVzXCIsXG4gIFwiUmV5bXVuZG9cIixcbiAgXCJSZXluYVwiLFxuICBcIlJleW5vbGRcIixcbiAgXCJSaGVhXCIsXG4gIFwiUmhldHRcIixcbiAgXCJSaGlhbm5hXCIsXG4gIFwiUmhpYW5ub25cIixcbiAgXCJSaG9kYVwiLFxuICBcIlJpY2FyZG9cIixcbiAgXCJSaWNoYXJkXCIsXG4gIFwiUmljaGllXCIsXG4gIFwiUmljaG1vbmRcIixcbiAgXCJSaWNrXCIsXG4gIFwiUmlja2V5XCIsXG4gIFwiUmlja2llXCIsXG4gIFwiUmlja3lcIixcbiAgXCJSaWNvXCIsXG4gIFwiUmlnb2JlcnRvXCIsXG4gIFwiUmlsZXlcIixcbiAgXCJSaXRhXCIsXG4gIFwiUml2ZXJcIixcbiAgXCJSb2JiXCIsXG4gIFwiUm9iYmllXCIsXG4gIFwiUm9iZXJ0XCIsXG4gIFwiUm9iZXJ0YVwiLFxuICBcIlJvYmVydG9cIixcbiAgXCJSb2JpblwiLFxuICBcIlJvYnluXCIsXG4gIFwiUm9jaW9cIixcbiAgXCJSb2NreVwiLFxuICBcIlJvZFwiLFxuICBcIlJvZGVyaWNrXCIsXG4gIFwiUm9kZ2VyXCIsXG4gIFwiUm9kb2xmb1wiLFxuICBcIlJvZHJpY2tcIixcbiAgXCJSb2RyaWdvXCIsXG4gIFwiUm9lbFwiLFxuICBcIlJvZ2VsaW9cIixcbiAgXCJSb2dlclwiLFxuICBcIlJvZ2Vyc1wiLFxuICBcIlJvbGFuZG9cIixcbiAgXCJSb2xsaW5cIixcbiAgXCJSb21hXCIsXG4gIFwiUm9tYWluZVwiLFxuICBcIlJvbWFuXCIsXG4gIFwiUm9uXCIsXG4gIFwiUm9uYWxkb1wiLFxuICBcIlJvbm55XCIsXG4gIFwiUm9vc2V2ZWx0XCIsXG4gIFwiUm9yeVwiLFxuICBcIlJvc2FcIixcbiAgXCJSb3NhbGVlXCIsXG4gIFwiUm9zYWxpYVwiLFxuICBcIlJvc2FsaW5kXCIsXG4gIFwiUm9zYWxpbmRhXCIsXG4gIFwiUm9zYWx5blwiLFxuICBcIlJvc2Ftb25kXCIsXG4gIFwiUm9zYW5uYVwiLFxuICBcIlJvc2FyaW9cIixcbiAgXCJSb3Njb2VcIixcbiAgXCJSb3NlXCIsXG4gIFwiUm9zZWxsYVwiLFxuICBcIlJvc2VseW5cIixcbiAgXCJSb3NlbWFyaWVcIixcbiAgXCJSb3NlbWFyeVwiLFxuICBcIlJvc2VuZG9cIixcbiAgXCJSb3NldHRhXCIsXG4gIFwiUm9zaWVcIixcbiAgXCJSb3NpbmFcIixcbiAgXCJSb3NseW5cIixcbiAgXCJSb3NzXCIsXG4gIFwiUm9zc2llXCIsXG4gIFwiUm93YW5cIixcbiAgXCJSb3dlbmFcIixcbiAgXCJSb3dsYW5kXCIsXG4gIFwiUm94YW5lXCIsXG4gIFwiUm94YW5uZVwiLFxuICBcIlJveVwiLFxuICBcIlJveWFsXCIsXG4gIFwiUm95Y2VcIixcbiAgXCJSb3plbGxhXCIsXG4gIFwiUnViZW5cIixcbiAgXCJSdWJpZVwiLFxuICBcIlJ1YnlcIixcbiAgXCJSdWJ5ZVwiLFxuICBcIlJ1ZG9scGhcIixcbiAgXCJSdWR5XCIsXG4gIFwiUnVwZXJ0XCIsXG4gIFwiUnVzc1wiLFxuICBcIlJ1c3NlbFwiLFxuICBcIlJ1c3NlbGxcIixcbiAgXCJSdXN0eVwiLFxuICBcIlJ1dGhcIixcbiAgXCJSdXRoZVwiLFxuICBcIlJ1dGhpZVwiLFxuICBcIlJ5YW5cIixcbiAgXCJSeWFublwiLFxuICBcIlJ5ZGVyXCIsXG4gIFwiUnlsYW5cIixcbiAgXCJSeWxlZVwiLFxuICBcIlJ5bGVpZ2hcIixcbiAgXCJSeWxleVwiLFxuICBcIlNhYmluYVwiLFxuICBcIlNhYnJpbmFcIixcbiAgXCJTYWJyeW5hXCIsXG4gIFwiU2FkaWVcIixcbiAgXCJTYWR5ZVwiLFxuICBcIlNhZ2VcIixcbiAgXCJTYWlnZVwiLFxuICBcIlNhbGxpZVwiLFxuICBcIlNhbGx5XCIsXG4gIFwiU2FsbWFcIixcbiAgXCJTYWx2YWRvclwiLFxuICBcIlNhbHZhdG9yZVwiLFxuICBcIlNhbVwiLFxuICBcIlNhbWFudGFcIixcbiAgXCJTYW1hbnRoYVwiLFxuICBcIlNhbWFyYVwiLFxuICBcIlNhbWlyXCIsXG4gIFwiU2FtbWllXCIsXG4gIFwiU2FtbXlcIixcbiAgXCJTYW1zb25cIixcbiAgXCJTYW5kcmFcIixcbiAgXCJTYW5kcmluZVwiLFxuICBcIlNhbmR5XCIsXG4gIFwiU2FuZm9yZFwiLFxuICBcIlNhbnRhXCIsXG4gIFwiU2FudGlhZ29cIixcbiAgXCJTYW50aW5hXCIsXG4gIFwiU2FudGlub1wiLFxuICBcIlNhbnRvc1wiLFxuICBcIlNhcmFoXCIsXG4gIFwiU2FyYWlcIixcbiAgXCJTYXJpbmFcIixcbiAgXCJTYXNoYVwiLFxuICBcIlNhdWxcIixcbiAgXCJTYXZhbmFoXCIsXG4gIFwiU2F2YW5uYVwiLFxuICBcIlNhdmFubmFoXCIsXG4gIFwiU2F2aW9uXCIsXG4gIFwiU2NhcmxldHRcIixcbiAgXCJTY2h1eWxlclwiLFxuICBcIlNjb3RcIixcbiAgXCJTY290dGllXCIsXG4gIFwiU2NvdHR5XCIsXG4gIFwiU2VhbXVzXCIsXG4gIFwiU2VhblwiLFxuICBcIlNlYmFzdGlhblwiLFxuICBcIlNlZHJpY2tcIixcbiAgXCJTZWxlbmFcIixcbiAgXCJTZWxpbmFcIixcbiAgXCJTZWxtZXJcIixcbiAgXCJTZXJlbmFcIixcbiAgXCJTZXJlbml0eVwiLFxuICBcIlNldGhcIixcbiAgXCJTaGFkXCIsXG4gIFwiU2hhaW5hXCIsXG4gIFwiU2hha2lyYVwiLFxuICBcIlNoYW5hXCIsXG4gIFwiU2hhbmVcIixcbiAgXCJTaGFuZWxcIixcbiAgXCJTaGFuZWxsZVwiLFxuICBcIlNoYW5pYVwiLFxuICBcIlNoYW5pZVwiLFxuICBcIlNoYW5peWFcIixcbiAgXCJTaGFubmFcIixcbiAgXCJTaGFubm9uXCIsXG4gIFwiU2hhbm55XCIsXG4gIFwiU2hhbm9uXCIsXG4gIFwiU2hhbnlcIixcbiAgXCJTaGFyb25cIixcbiAgXCJTaGF1blwiLFxuICBcIlNoYXduXCIsXG4gIFwiU2hhd25hXCIsXG4gIFwiU2hheWxlZVwiLFxuICBcIlNoYXluYVwiLFxuICBcIlNoYXluZVwiLFxuICBcIlNoZWFcIixcbiAgXCJTaGVpbGFcIixcbiAgXCJTaGVsZG9uXCIsXG4gIFwiU2hlbWFyXCIsXG4gIFwiU2hlcmlkYW5cIixcbiAgXCJTaGVybWFuXCIsXG4gIFwiU2hlcndvb2RcIixcbiAgXCJTaGlybGV5XCIsXG4gIFwiU2h5YW5uXCIsXG4gIFwiU2h5YW5uZVwiLFxuICBcIlNpYnlsXCIsXG4gIFwiU2lkXCIsXG4gIFwiU2lkbmV5XCIsXG4gIFwiU2llbm5hXCIsXG4gIFwiU2llcnJhXCIsXG4gIFwiU2lnbXVuZFwiLFxuICBcIlNpZ3JpZFwiLFxuICBcIlNpZ3VyZFwiLFxuICBcIlNpbGFzXCIsXG4gIFwiU2ltXCIsXG4gIFwiU2ltZW9uXCIsXG4gIFwiU2ltb25lXCIsXG4gIFwiU2luY2VyZVwiLFxuICBcIlNpc3RlclwiLFxuICBcIlNreWVcIixcbiAgXCJTa3lsYVwiLFxuICBcIlNreWxhclwiLFxuICBcIlNvZmlhXCIsXG4gIFwiU29sZWRhZFwiLFxuICBcIlNvbG9uXCIsXG4gIFwiU29uaWFcIixcbiAgXCJTb25ueVwiLFxuICBcIlNvbnlhXCIsXG4gIFwiU29waGlhXCIsXG4gIFwiU29waGllXCIsXG4gIFwiU3BlbmNlclwiLFxuICBcIlN0YWNleVwiLFxuICBcIlN0YWN5XCIsXG4gIFwiU3RhblwiLFxuICBcIlN0YW5mb3JkXCIsXG4gIFwiU3RhbmxleVwiLFxuICBcIlN0YW50b25cIixcbiAgXCJTdGVmYW5cIixcbiAgXCJTdGVmYW5pZVwiLFxuICBcIlN0ZWxsYVwiLFxuICBcIlN0ZXBoYW5cIixcbiAgXCJTdGVwaGFuaWFcIixcbiAgXCJTdGVwaGFuaWVcIixcbiAgXCJTdGVwaGFueVwiLFxuICBcIlN0ZXBoZW5cIixcbiAgXCJTdGVwaG9uXCIsXG4gIFwiU3RlcmxpbmdcIixcbiAgXCJTdGV2ZVwiLFxuICBcIlN0ZXZpZVwiLFxuICBcIlN0ZXdhcnRcIixcbiAgXCJTdG9uZVwiLFxuICBcIlN0dWFydFwiLFxuICBcIlN1bW1lclwiLFxuICBcIlN1bm55XCIsXG4gIFwiU3VzYW5cIixcbiAgXCJTdXNhbmFcIixcbiAgXCJTdXNhbm5hXCIsXG4gIFwiU3VzaWVcIixcbiAgXCJTdXphbm5lXCIsXG4gIFwiU3ZlblwiLFxuICBcIlN5YmxlXCIsXG4gIFwiU3lkbmVlXCIsXG4gIFwiU3lkbmV5XCIsXG4gIFwiU3lkbmlcIixcbiAgXCJTeWRuaWVcIixcbiAgXCJTeWx2YW5cIixcbiAgXCJTeWx2ZXN0ZXJcIixcbiAgXCJTeWx2aWFcIixcbiAgXCJUYWJpdGhhXCIsXG4gIFwiVGFkXCIsXG4gIFwiVGFsaWFcIixcbiAgXCJUYWxvblwiLFxuICBcIlRhbWFyYVwiLFxuICBcIlRhbWlhXCIsXG4gIFwiVGFuaWFcIixcbiAgXCJUYW5uZXJcIixcbiAgXCJUYW55YVwiLFxuICBcIlRhcmFcIixcbiAgXCJUYXJ5blwiLFxuICBcIlRhdGVcIixcbiAgXCJUYXR1bVwiLFxuICBcIlRhdHlhbmFcIixcbiAgXCJUYXVyZWFuXCIsXG4gIFwiVGF2YXJlc1wiLFxuICBcIlRheWFcIixcbiAgXCJUYXlsb3JcIixcbiAgXCJUZWFnYW5cIixcbiAgXCJUZWRcIixcbiAgXCJUZWxseVwiLFxuICBcIlRlcmVuY2VcIixcbiAgXCJUZXJlc2FcIixcbiAgXCJUZXJyYW5jZVwiLFxuICBcIlRlcnJlbGxcIixcbiAgXCJUZXJyZW5jZVwiLFxuICBcIlRlcnJpbGxcIixcbiAgXCJUZXJyeVwiLFxuICBcIlRlc3NcIixcbiAgXCJUZXNzaWVcIixcbiAgXCJUZXZpblwiLFxuICBcIlRoYWRcIixcbiAgXCJUaGFkZGV1c1wiLFxuICBcIlRoYWxpYVwiLFxuICBcIlRoZWFcIixcbiAgXCJUaGVsbWFcIixcbiAgXCJUaGVvXCIsXG4gIFwiVGhlb2RvcmFcIixcbiAgXCJUaGVvZG9yZVwiLFxuICBcIlRoZXJlc2FcIixcbiAgXCJUaGVyZXNlXCIsXG4gIFwiVGhlcmVzaWFcIixcbiAgXCJUaGVyb25cIixcbiAgXCJUaG9tYXNcIixcbiAgXCJUaG9yYVwiLFxuICBcIlRodXJtYW5cIixcbiAgXCJUaWFcIixcbiAgXCJUaWFuYVwiLFxuICBcIlRpYW5uYVwiLFxuICBcIlRpYXJhXCIsXG4gIFwiVGllcnJhXCIsXG4gIFwiVGlmZmFueVwiLFxuICBcIlRpbGxtYW5cIixcbiAgXCJUaW1tb3RoeVwiLFxuICBcIlRpbW15XCIsXG4gIFwiVGltb3RoeVwiLFxuICBcIlRpbmFcIixcbiAgXCJUaXRvXCIsXG4gIFwiVGl0dXNcIixcbiAgXCJUb2JpblwiLFxuICBcIlRvYnlcIixcbiAgXCJUb2RcIixcbiAgXCJUb21cIixcbiAgXCJUb21hc1wiLFxuICBcIlRvbWFzYVwiLFxuICBcIlRvbW1pZVwiLFxuICBcIlRvbmV5XCIsXG4gIFwiVG9uaVwiLFxuICBcIlRvbnlcIixcbiAgXCJUb3JleVwiLFxuICBcIlRvcnJhbmNlXCIsXG4gIFwiVG9ycmV5XCIsXG4gIFwiVG95XCIsXG4gIFwiVHJhY2VcIixcbiAgXCJUcmFjZXlcIixcbiAgXCJUcmFjeVwiLFxuICBcIlRyYXZpc1wiLFxuICBcIlRyYXZvblwiLFxuICBcIlRyZVwiLFxuICBcIlRyZW1haW5lXCIsXG4gIFwiVHJlbWF5bmVcIixcbiAgXCJUcmVudFwiLFxuICBcIlRyZW50b25cIixcbiAgXCJUcmVzc2FcIixcbiAgXCJUcmVzc2llXCIsXG4gIFwiVHJldmFcIixcbiAgXCJUcmV2ZXJcIixcbiAgXCJUcmV2aW9uXCIsXG4gIFwiVHJldm9yXCIsXG4gIFwiVHJleVwiLFxuICBcIlRyaW5pdHlcIixcbiAgXCJUcmlzaGFcIixcbiAgXCJUcmlzdGlhblwiLFxuICBcIlRyaXN0aW5cIixcbiAgXCJUcmlzdG9uXCIsXG4gIFwiVHJveVwiLFxuICBcIlRydWRpZVwiLFxuICBcIlRyeWNpYVwiLFxuICBcIlRyeXN0YW5cIixcbiAgXCJUdXJuZXJcIixcbiAgXCJUd2lsYVwiLFxuICBcIlR5bGVyXCIsXG4gIFwiVHlyYVwiLFxuICBcIlR5cmVlXCIsXG4gIFwiVHlyZWVrXCIsXG4gIFwiVHlyZWxcIixcbiAgXCJUeXJlbGxcIixcbiAgXCJUeXJlc2VcIixcbiAgXCJUeXJpcXVlXCIsXG4gIFwiVHlzaGF3blwiLFxuICBcIlR5c29uXCIsXG4gIFwiVWJhbGRvXCIsXG4gIFwiVWxpY2VzXCIsXG4gIFwiVWxpc2VzXCIsXG4gIFwiVW5hXCIsXG4gIFwiVW5pcXVlXCIsXG4gIFwiVXJiYW5cIixcbiAgXCJVcmlhaFwiLFxuICBcIlVyaWVsXCIsXG4gIFwiVXJzdWxhXCIsXG4gIFwiVmFkYVwiLFxuICBcIlZhbGVudGluXCIsXG4gIFwiVmFsZW50aW5hXCIsXG4gIFwiVmFsZW50aW5lXCIsXG4gIFwiVmFsZXJpZVwiLFxuICBcIlZhbGxpZVwiLFxuICBcIlZhblwiLFxuICBcIlZhbmNlXCIsXG4gIFwiVmFuZXNzYVwiLFxuICBcIlZhdWdoblwiLFxuICBcIlZlZGFcIixcbiAgXCJWZWxkYVwiLFxuICBcIlZlbGxhXCIsXG4gIFwiVmVsbWFcIixcbiAgXCJWZWx2YVwiLFxuICBcIlZlbmFcIixcbiAgXCJWZXJkYVwiLFxuICBcIlZlcmRpZVwiLFxuICBcIlZlcmdpZVwiLFxuICBcIlZlcmxhXCIsXG4gIFwiVmVybGllXCIsXG4gIFwiVmVyblwiLFxuICBcIlZlcm5hXCIsXG4gIFwiVmVybmVyXCIsXG4gIFwiVmVybmljZVwiLFxuICBcIlZlcm5pZVwiLFxuICBcIlZlcm5vblwiLFxuICBcIlZlcm9uYVwiLFxuICBcIlZlcm9uaWNhXCIsXG4gIFwiVmVzdGFcIixcbiAgXCJWaWNlbnRhXCIsXG4gIFwiVmljZW50ZVwiLFxuICBcIlZpY2tpZVwiLFxuICBcIlZpY2t5XCIsXG4gIFwiVmljdG9yXCIsXG4gIFwiVmljdG9yaWFcIixcbiAgXCJWaWRhXCIsXG4gIFwiVmlkYWxcIixcbiAgXCJWaWxtYVwiLFxuICBcIlZpbmNlXCIsXG4gIFwiVmluY2VudFwiLFxuICBcIlZpbmNlbnphXCIsXG4gIFwiVmluY2Vuem9cIixcbiAgXCJWaW5uaWVcIixcbiAgXCJWaW9sYVwiLFxuICBcIlZpb2xldFwiLFxuICBcIlZpb2xldHRlXCIsXG4gIFwiVmlyZ2llXCIsXG4gIFwiVmlyZ2lsXCIsXG4gIFwiVmlyZ2luaWFcIixcbiAgXCJWaXJnaW5pZVwiLFxuICBcIlZpdGFcIixcbiAgXCJWaXRvXCIsXG4gIFwiVml2YVwiLFxuICBcIlZpdmlhblwiLFxuICBcIlZpdmlhbmVcIixcbiAgXCJWaXZpYW5uZVwiLFxuICBcIlZpdmllblwiLFxuICBcIlZpdmllbm5lXCIsXG4gIFwiVmxhZGltaXJcIixcbiAgXCJXYWRlXCIsXG4gIFwiV2Fpbm9cIixcbiAgXCJXYWxkb1wiLFxuICBcIldhbGtlclwiLFxuICBcIldhbGxhY2VcIixcbiAgXCJXYWx0ZXJcIixcbiAgXCJXYWx0b25cIixcbiAgXCJXYW5kYVwiLFxuICBcIldhcmRcIixcbiAgXCJXYXJyZW5cIixcbiAgXCJXYXRzb25cIixcbiAgXCJXYXZhXCIsXG4gIFwiV2F5bG9uXCIsXG4gIFwiV2F5bmVcIixcbiAgXCJXZWJzdGVyXCIsXG4gIFwiV2VsZG9uXCIsXG4gIFwiV2VsbGluZ3RvblwiLFxuICBcIldlbmRlbGxcIixcbiAgXCJXZW5keVwiLFxuICBcIldlcm5lclwiLFxuICBcIldlc3RsZXlcIixcbiAgXCJXZXN0b25cIixcbiAgXCJXaGl0bmV5XCIsXG4gIFwiV2lsYmVyXCIsXG4gIFwiV2lsYmVydFwiLFxuICBcIldpbGJ1cm5cIixcbiAgXCJXaWxleVwiLFxuICBcIldpbGZvcmRcIixcbiAgXCJXaWxmcmVkXCIsXG4gIFwiV2lsZnJlZG9cIixcbiAgXCJXaWxmcmlkXCIsXG4gIFwiV2lsaGVsbVwiLFxuICBcIldpbGhlbG1pbmVcIixcbiAgXCJXaWxsXCIsXG4gIFwiV2lsbGFcIixcbiAgXCJXaWxsYXJkXCIsXG4gIFwiV2lsbGlhbVwiLFxuICBcIldpbGxpZVwiLFxuICBcIldpbGxpc1wiLFxuICBcIldpbGxvd1wiLFxuICBcIldpbGx5XCIsXG4gIFwiV2lsbWFcIixcbiAgXCJXaWxtZXJcIixcbiAgXCJXaWxzb25cIixcbiAgXCJXaWx0b25cIixcbiAgXCJXaW5maWVsZFwiLFxuICBcIldpbmlmcmVkXCIsXG4gIFwiV2lubmlmcmVkXCIsXG4gIFwiV2lub25hXCIsXG4gIFwiV2luc3RvblwiLFxuICBcIldvb2Ryb3dcIixcbiAgXCJXeWF0dFwiLFxuICBcIld5bWFuXCIsXG4gIFwiWGFuZGVyXCIsXG4gIFwiWGF2aWVyXCIsXG4gIFwiWHphdmllclwiLFxuICBcIllhZGlyYVwiLFxuICBcIllhc21lZW5cIixcbiAgXCJZYXNtaW5cIixcbiAgXCJZYXNtaW5lXCIsXG4gIFwiWWF6bWluXCIsXG4gIFwiWWVzZW5pYVwiLFxuICBcIlllc3NlbmlhXCIsXG4gIFwiWW9sYW5kYVwiLFxuICBcIllvc2hpa29cIixcbiAgXCJZdmV0dGVcIixcbiAgXCJZdm9ubmVcIixcbiAgXCJaYWNoYXJpYWhcIixcbiAgXCJaYWNoYXJ5XCIsXG4gIFwiWmFjaGVyeVwiLFxuICBcIlphY2tcIixcbiAgXCJaYWNrYXJ5XCIsXG4gIFwiWmFja2VyeVwiLFxuICBcIlpha2FyeVwiLFxuICBcIlphbmRlclwiLFxuICBcIlphbmVcIixcbiAgXCJaYXJpYVwiLFxuICBcIlplY2hhcmlhaFwiLFxuICBcIlplbGRhXCIsXG4gIFwiWmVsbGFcIixcbiAgXCJaZWxtYVwiLFxuICBcIlplbmFcIixcbiAgXCJaZXR0YVwiLFxuICBcIlppb25cIixcbiAgXCJaaXRhXCIsXG4gIFwiWm9lXCIsXG4gIFwiWm9leVwiLFxuICBcIlpvaWVcIixcbiAgXCJab2lsYVwiLFxuICBcIlpvbGFcIixcbiAgXCJab3JhXCIsXG4gIFwiWnVsYVwiXG5dO1xuIiwidmFyIG5hbWUgPSB7fTtcbm1vZHVsZVsnZXhwb3J0cyddID0gbmFtZTtcbm5hbWUuZmlyc3RfbmFtZSA9IHJlcXVpcmUoXCIuL2ZpcnN0X25hbWVcIik7XG5uYW1lLmxhc3RfbmFtZSA9IHJlcXVpcmUoXCIuL2xhc3RfbmFtZVwiKTtcbm5hbWUucHJlZml4ID0gcmVxdWlyZShcIi4vcHJlZml4XCIpO1xubmFtZS5zdWZmaXggPSByZXF1aXJlKFwiLi9zdWZmaXhcIik7XG5uYW1lLnRpdGxlID0gcmVxdWlyZShcIi4vdGl0bGVcIik7XG5uYW1lLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCJBYmJvdHRcIixcbiAgXCJBYmVybmF0aHlcIixcbiAgXCJBYnNoaXJlXCIsXG4gIFwiQWRhbXNcIixcbiAgXCJBbHRlbndlcnRoXCIsXG4gIFwiQW5kZXJzb25cIixcbiAgXCJBbmt1bmRpbmdcIixcbiAgXCJBcm1zdHJvbmdcIixcbiAgXCJBdWVyXCIsXG4gIFwiQXVmZGVyaGFyXCIsXG4gIFwiQmFocmluZ2VyXCIsXG4gIFwiQmFpbGV5XCIsXG4gIFwiQmFsaXN0cmVyaVwiLFxuICBcIkJhcnJvd3NcIixcbiAgXCJCYXJ0ZWxsXCIsXG4gIFwiQmFydG9sZXR0aVwiLFxuICBcIkJhcnRvblwiLFxuICBcIkJhc2hpcmlhblwiLFxuICBcIkJhdHpcIixcbiAgXCJCYXVjaFwiLFxuICBcIkJhdW1iYWNoXCIsXG4gIFwiQmF5ZXJcIixcbiAgXCJCZWFoYW5cIixcbiAgXCJCZWF0dHlcIixcbiAgXCJCZWNodGVsYXJcIixcbiAgXCJCZWNrZXJcIixcbiAgXCJCZWRuYXJcIixcbiAgXCJCZWVyXCIsXG4gIFwiQmVpZXJcIixcbiAgXCJCZXJnZVwiLFxuICBcIkJlcmduYXVtXCIsXG4gIFwiQmVyZ3N0cm9tXCIsXG4gIFwiQmVybmhhcmRcIixcbiAgXCJCZXJuaWVyXCIsXG4gIFwiQmluc1wiLFxuICBcIkJsYW5kYVwiLFxuICBcIkJsaWNrXCIsXG4gIFwiQmxvY2tcIixcbiAgXCJCb2RlXCIsXG4gIFwiQm9laG1cIixcbiAgXCJCb2dhblwiLFxuICBcIkJvZ2lzaWNoXCIsXG4gIFwiQm9yZXJcIixcbiAgXCJCb3Njb1wiLFxuICBcIkJvdHNmb3JkXCIsXG4gIFwiQm95ZXJcIixcbiAgXCJCb3lsZVwiLFxuICBcIkJyYWR0a2VcIixcbiAgXCJCcmFrdXNcIixcbiAgXCJCcmF1blwiLFxuICBcIkJyZWl0ZW5iZXJnXCIsXG4gIFwiQnJla2tlXCIsXG4gIFwiQnJvd25cIixcbiAgXCJCcnVlblwiLFxuICBcIkJ1Y2tyaWRnZVwiLFxuICBcIkNhcnJvbGxcIixcbiAgXCJDYXJ0ZXJcIixcbiAgXCJDYXJ0d3JpZ2h0XCIsXG4gIFwiQ2FzcGVyXCIsXG4gIFwiQ2Fzc2luXCIsXG4gIFwiQ2hhbXBsaW5cIixcbiAgXCJDaHJpc3RpYW5zZW5cIixcbiAgXCJDb2xlXCIsXG4gIFwiQ29sbGllclwiLFxuICBcIkNvbGxpbnNcIixcbiAgXCJDb25uXCIsXG4gIFwiQ29ubmVsbHlcIixcbiAgXCJDb25yb3lcIixcbiAgXCJDb25zaWRpbmVcIixcbiAgXCJDb3JrZXJ5XCIsXG4gIFwiQ29ybWllclwiLFxuICBcIkNvcndpblwiLFxuICBcIkNyZW1pblwiLFxuICBcIkNyaXN0XCIsXG4gIFwiQ3JvbmFcIixcbiAgXCJDcm9uaW5cIixcbiAgXCJDcm9va3NcIixcbiAgXCJDcnVpY2tzaGFua1wiLFxuICBcIkN1bW1lcmF0YVwiLFxuICBcIkN1bW1pbmdzXCIsXG4gIFwiRGFjaFwiLFxuICBcIkQnQW1vcmVcIixcbiAgXCJEYW5pZWxcIixcbiAgXCJEYXJlXCIsXG4gIFwiRGF1Z2hlcnR5XCIsXG4gIFwiRGF2aXNcIixcbiAgXCJEZWNrb3dcIixcbiAgXCJEZW5lc2lrXCIsXG4gIFwiRGliYmVydFwiLFxuICBcIkRpY2tlbnNcIixcbiAgXCJEaWNraVwiLFxuICBcIkRpY2tpbnNvblwiLFxuICBcIkRpZXRyaWNoXCIsXG4gIFwiRG9ubmVsbHlcIixcbiAgXCJEb29sZXlcIixcbiAgXCJEb3VnbGFzXCIsXG4gIFwiRG95bGVcIixcbiAgXCJEdUJ1cXVlXCIsXG4gIFwiRHVyZ2FuXCIsXG4gIFwiRWJlcnRcIixcbiAgXCJFZmZlcnR6XCIsXG4gIFwiRWljaG1hbm5cIixcbiAgXCJFbWFyZFwiLFxuICBcIkVtbWVyaWNoXCIsXG4gIFwiRXJkbWFuXCIsXG4gIFwiRXJuc2VyXCIsXG4gIFwiRmFkZWxcIixcbiAgXCJGYWhleVwiLFxuICBcIkZhcnJlbGxcIixcbiAgXCJGYXlcIixcbiAgXCJGZWVuZXlcIixcbiAgXCJGZWVzdFwiLFxuICBcIkZlaWxcIixcbiAgXCJGZXJyeVwiLFxuICBcIkZpc2hlclwiLFxuICBcIkZsYXRsZXlcIixcbiAgXCJGcmFtaVwiLFxuICBcIkZyYW5lY2tpXCIsXG4gIFwiRnJpZXNlblwiLFxuICBcIkZyaXRzY2hcIixcbiAgXCJGdW5rXCIsXG4gIFwiR2F5bG9yZFwiLFxuICBcIkdlcmhvbGRcIixcbiAgXCJHZXJsYWNoXCIsXG4gIFwiR2lic29uXCIsXG4gIFwiR2lzbGFzb25cIixcbiAgXCJHbGVhc29uXCIsXG4gIFwiR2xlaWNobmVyXCIsXG4gIFwiR2xvdmVyXCIsXG4gIFwiR29sZG5lclwiLFxuICBcIkdvb2R3aW5cIixcbiAgXCJHb3JjemFueVwiLFxuICBcIkdvdHRsaWViXCIsXG4gIFwiR295ZXR0ZVwiLFxuICBcIkdyYWR5XCIsXG4gIFwiR3JhaGFtXCIsXG4gIFwiR3JhbnRcIixcbiAgXCJHcmVlblwiLFxuICBcIkdyZWVuZmVsZGVyXCIsXG4gIFwiR3JlZW5ob2x0XCIsXG4gIFwiR3JpbWVzXCIsXG4gIFwiR3VsZ293c2tpXCIsXG4gIFwiR3VzaWtvd3NraVwiLFxuICBcIkd1dGtvd3NraVwiLFxuICBcIkd1dG1hbm5cIixcbiAgXCJIYWFnXCIsXG4gIFwiSGFja2V0dFwiLFxuICBcIkhhZ2VuZXNcIixcbiAgXCJIYWhuXCIsXG4gIFwiSGFsZXlcIixcbiAgXCJIYWx2b3Jzb25cIixcbiAgXCJIYW1pbGxcIixcbiAgXCJIYW1tZXNcIixcbiAgXCJIYW5kXCIsXG4gIFwiSGFuZVwiLFxuICBcIkhhbnNlblwiLFxuICBcIkhhcmJlclwiLFxuICBcIkhhcnJpc1wiLFxuICBcIkhhcnRtYW5uXCIsXG4gIFwiSGFydmV5XCIsXG4gIFwiSGF1Y2tcIixcbiAgXCJIYXllc1wiLFxuICBcIkhlYW5leVwiLFxuICBcIkhlYXRoY290ZVwiLFxuICBcIkhlZ21hbm5cIixcbiAgXCJIZWlkZW5yZWljaFwiLFxuICBcIkhlbGxlclwiLFxuICBcIkhlcm1hblwiLFxuICBcIkhlcm1hbm5cIixcbiAgXCJIZXJtaXN0b25cIixcbiAgXCJIZXJ6b2dcIixcbiAgXCJIZXNzZWxcIixcbiAgXCJIZXR0aW5nZXJcIixcbiAgXCJIaWNrbGVcIixcbiAgXCJIaWxsbFwiLFxuICBcIkhpbGxzXCIsXG4gIFwiSGlscGVydFwiLFxuICBcIkhpbnR6XCIsXG4gIFwiSGlydGhlXCIsXG4gIFwiSG9ka2lld2ljelwiLFxuICBcIkhvZWdlclwiLFxuICBcIkhvbWVuaWNrXCIsXG4gIFwiSG9wcGVcIixcbiAgXCJIb3dlXCIsXG4gIFwiSG93ZWxsXCIsXG4gIFwiSHVkc29uXCIsXG4gIFwiSHVlbFwiLFxuICBcIkh1ZWxzXCIsXG4gIFwiSHlhdHRcIixcbiAgXCJKYWNvYmlcIixcbiAgXCJKYWNvYnNcIixcbiAgXCJKYWNvYnNvblwiLFxuICBcIkpha3Vib3dza2lcIixcbiAgXCJKYXNrb2xza2lcIixcbiAgXCJKYXN0XCIsXG4gIFwiSmVua2luc1wiLFxuICBcIkplcmRlXCIsXG4gIFwiSm9obnNcIixcbiAgXCJKb2huc29uXCIsXG4gIFwiSm9obnN0b25cIixcbiAgXCJKb25lc1wiLFxuICBcIkthc3N1bGtlXCIsXG4gIFwiS2F1dHplclwiLFxuICBcIktlZWJsZXJcIixcbiAgXCJLZWVsaW5nXCIsXG4gIFwiS2VtbWVyXCIsXG4gIFwiS2VybHVrZVwiLFxuICBcIktlcnR6bWFublwiLFxuICBcIktlc3NsZXJcIixcbiAgXCJLaWVoblwiLFxuICBcIktpaG5cIixcbiAgXCJLaWxiYWNrXCIsXG4gIFwiS2luZ1wiLFxuICBcIktpcmxpblwiLFxuICBcIktsZWluXCIsXG4gIFwiS2xpbmdcIixcbiAgXCJLbG9ja29cIixcbiAgXCJLb2NoXCIsXG4gIFwiS29lbHBpblwiLFxuICBcIktvZXBwXCIsXG4gIFwiS29obGVyXCIsXG4gIFwiS29ub3BlbHNraVwiLFxuICBcIktvc3NcIixcbiAgXCJLb3ZhY2VrXCIsXG4gIFwiS296ZXlcIixcbiAgXCJLcmFqY2lrXCIsXG4gIFwiS3JlaWdlclwiLFxuICBcIktyaXNcIixcbiAgXCJLc2hsZXJpblwiLFxuICBcIkt1YlwiLFxuICBcIkt1aGljXCIsXG4gIFwiS3VobG1hblwiLFxuICBcIkt1aG5cIixcbiAgXCJLdWxhc1wiLFxuICBcIkt1bmRlXCIsXG4gIFwiS3VuemVcIixcbiAgXCJLdXBoYWxcIixcbiAgXCJLdXRjaFwiLFxuICBcIkt1dmFsaXNcIixcbiAgXCJMYWJhZGllXCIsXG4gIFwiTGFraW5cIixcbiAgXCJMYW5nXCIsXG4gIFwiTGFuZ29zaFwiLFxuICBcIkxhbmd3b3J0aFwiLFxuICBcIkxhcmtpblwiLFxuICBcIkxhcnNvblwiLFxuICBcIkxlYW5ub25cIixcbiAgXCJMZWJzYWNrXCIsXG4gIFwiTGVkbmVyXCIsXG4gIFwiTGVmZmxlclwiLFxuICBcIkxlZ3Jvc1wiLFxuICBcIkxlaG5lclwiLFxuICBcIkxlbWtlXCIsXG4gIFwiTGVzY2hcIixcbiAgXCJMZXVzY2hrZVwiLFxuICBcIkxpbmRcIixcbiAgXCJMaW5kZ3JlblwiLFxuICBcIkxpdHRlbFwiLFxuICBcIkxpdHRsZVwiLFxuICBcIkxvY2ttYW5cIixcbiAgXCJMb3dlXCIsXG4gIFwiTHVib3dpdHpcIixcbiAgXCJMdWVpbHdpdHpcIixcbiAgXCJMdWV0dGdlblwiLFxuICBcIkx5bmNoXCIsXG4gIFwiTWFjZWprb3ZpY1wiLFxuICBcIk1hY0d5dmVyXCIsXG4gIFwiTWFnZ2lvXCIsXG4gIFwiTWFublwiLFxuICBcIk1hbnRlXCIsXG4gIFwiTWFya3NcIixcbiAgXCJNYXJxdWFyZHRcIixcbiAgXCJNYXJ2aW5cIixcbiAgXCJNYXllclwiLFxuICBcIk1heWVydFwiLFxuICBcIk1jQ2x1cmVcIixcbiAgXCJNY0N1bGxvdWdoXCIsXG4gIFwiTWNEZXJtb3R0XCIsXG4gIFwiTWNHbHlublwiLFxuICBcIk1jS2VuemllXCIsXG4gIFwiTWNMYXVnaGxpblwiLFxuICBcIk1lZGh1cnN0XCIsXG4gIFwiTWVydHpcIixcbiAgXCJNZXR6XCIsXG4gIFwiTWlsbGVyXCIsXG4gIFwiTWlsbHNcIixcbiAgXCJNaXRjaGVsbFwiLFxuICBcIk1vZW5cIixcbiAgXCJNb2hyXCIsXG4gIFwiTW9uYWhhblwiLFxuICBcIk1vb3JlXCIsXG4gIFwiTW9yYXJcIixcbiAgXCJNb3Jpc3NldHRlXCIsXG4gIFwiTW9zY2lza2lcIixcbiAgXCJNcmF6XCIsXG4gIFwiTXVlbGxlclwiLFxuICBcIk11bGxlclwiLFxuICBcIk11cmF6aWtcIixcbiAgXCJNdXJwaHlcIixcbiAgXCJNdXJyYXlcIixcbiAgXCJOYWRlclwiLFxuICBcIk5pY29sYXNcIixcbiAgXCJOaWVub3dcIixcbiAgXCJOaWtvbGF1c1wiLFxuICBcIk5pdHpzY2hlXCIsXG4gIFwiTm9sYW5cIixcbiAgXCJPYmVyYnJ1bm5lclwiLFxuICBcIk8nQ29ubmVsbFwiLFxuICBcIk8nQ29ubmVyXCIsXG4gIFwiTydIYXJhXCIsXG4gIFwiTydLZWVmZVwiLFxuICBcIk8nS29uXCIsXG4gIFwiT2t1bmV2YVwiLFxuICBcIk9sc29uXCIsXG4gIFwiT25kcmlja2FcIixcbiAgXCJPJ1JlaWxseVwiLFxuICBcIk9yblwiLFxuICBcIk9ydGl6XCIsXG4gIFwiT3NpbnNraVwiLFxuICBcIlBhY29jaGFcIixcbiAgXCJQYWRiZXJnXCIsXG4gIFwiUGFnYWNcIixcbiAgXCJQYXJpc2lhblwiLFxuICBcIlBhcmtlclwiLFxuICBcIlBhdWNla1wiLFxuICBcIlBmYW5uZXJzdGlsbFwiLFxuICBcIlBmZWZmZXJcIixcbiAgXCJQb2xsaWNoXCIsXG4gIFwiUG91cm9zXCIsXG4gIFwiUG93bG93c2tpXCIsXG4gIFwiUHJlZG92aWNcIixcbiAgXCJQcmljZVwiLFxuICBcIlByb2hhc2thXCIsXG4gIFwiUHJvc2FjY29cIixcbiAgXCJQdXJkeVwiLFxuICBcIlF1aWdsZXlcIixcbiAgXCJRdWl0em9uXCIsXG4gIFwiUmF0aFwiLFxuICBcIlJhdGtlXCIsXG4gIFwiUmF1XCIsXG4gIFwiUmF5bm9yXCIsXG4gIFwiUmVpY2hlbFwiLFxuICBcIlJlaWNoZXJ0XCIsXG4gIFwiUmVpbGx5XCIsXG4gIFwiUmVpbmdlclwiLFxuICBcIlJlbXBlbFwiLFxuICBcIlJlbm5lclwiLFxuICBcIlJleW5vbGRzXCIsXG4gIFwiUmljZVwiLFxuICBcIlJpcHBpblwiLFxuICBcIlJpdGNoaWVcIixcbiAgXCJSb2JlbFwiLFxuICBcIlJvYmVydHNcIixcbiAgXCJSb2RyaWd1ZXpcIixcbiAgXCJSb2dhaG5cIixcbiAgXCJSb2hhblwiLFxuICBcIlJvbGZzb25cIixcbiAgXCJSb21hZ3VlcmFcIixcbiAgXCJSb29iXCIsXG4gIFwiUm9zZW5iYXVtXCIsXG4gIFwiUm93ZVwiLFxuICBcIlJ1ZWNrZXJcIixcbiAgXCJSdW5vbGZzZG90dGlyXCIsXG4gIFwiUnVub2xmc3NvblwiLFxuICBcIlJ1bnRlXCIsXG4gIFwiUnVzc2VsXCIsXG4gIFwiUnV0aGVyZm9yZFwiLFxuICBcIlJ5YW5cIixcbiAgXCJTYW5mb3JkXCIsXG4gIFwiU2F0dGVyZmllbGRcIixcbiAgXCJTYXVlclwiLFxuICBcIlNhd2F5blwiLFxuICBcIlNjaGFkZW5cIixcbiAgXCJTY2hhZWZlclwiLFxuICBcIlNjaGFtYmVyZ2VyXCIsXG4gIFwiU2NoaWxsZXJcIixcbiAgXCJTY2hpbW1lbFwiLFxuICBcIlNjaGlubmVyXCIsXG4gIFwiU2NobWVsZXJcIixcbiAgXCJTY2htaWR0XCIsXG4gIFwiU2NobWl0dFwiLFxuICBcIlNjaG5laWRlclwiLFxuICBcIlNjaG9lblwiLFxuICBcIlNjaG93YWx0ZXJcIixcbiAgXCJTY2hyb2VkZXJcIixcbiAgXCJTY2h1bGlzdFwiLFxuICBcIlNjaHVsdHpcIixcbiAgXCJTY2h1bW1cIixcbiAgXCJTY2h1cHBlXCIsXG4gIFwiU2NodXN0ZXJcIixcbiAgXCJTZW5nZXJcIixcbiAgXCJTaGFuYWhhblwiLFxuICBcIlNoaWVsZHNcIixcbiAgXCJTaW1vbmlzXCIsXG4gIFwiU2lwZXNcIixcbiAgXCJTa2lsZXNcIixcbiAgXCJTbWl0aFwiLFxuICBcIlNtaXRoYW1cIixcbiAgXCJTcGVuY2VyXCIsXG4gIFwiU3BpbmthXCIsXG4gIFwiU3BvcmVyXCIsXG4gIFwiU3RhbW1cIixcbiAgXCJTdGFudG9uXCIsXG4gIFwiU3RhcmtcIixcbiAgXCJTdGVoclwiLFxuICBcIlN0ZXViZXJcIixcbiAgXCJTdGllZGVtYW5uXCIsXG4gIFwiU3Rva2VzXCIsXG4gIFwiU3RvbHRlbmJlcmdcIixcbiAgXCJTdHJhY2tlXCIsXG4gIFwiU3RyZWljaFwiLFxuICBcIlN0cm9tYW5cIixcbiAgXCJTdHJvc2luXCIsXG4gIFwiU3dhbmlhd3NraVwiLFxuICBcIlN3aWZ0XCIsXG4gIFwiVGVycnlcIixcbiAgXCJUaGllbFwiLFxuICBcIlRob21wc29uXCIsXG4gIFwiVGlsbG1hblwiLFxuICBcIlRvcnBcIixcbiAgXCJUb3JwaHlcIixcbiAgXCJUb3duZVwiLFxuICBcIlRveVwiLFxuICBcIlRyYW50b3dcIixcbiAgXCJUcmVtYmxheVwiLFxuICBcIlRyZXV0ZWxcIixcbiAgXCJUcm9tcFwiLFxuICBcIlR1cmNvdHRlXCIsXG4gIFwiVHVybmVyXCIsXG4gIFwiVWxscmljaFwiLFxuICBcIlVwdG9uXCIsXG4gIFwiVmFuZGVydm9ydFwiLFxuICBcIlZldW1cIixcbiAgXCJWb2xrbWFuXCIsXG4gIFwiVm9uXCIsXG4gIFwiVm9uUnVlZGVuXCIsXG4gIFwiV2FlbGNoaVwiLFxuICBcIldhbGtlclwiLFxuICBcIldhbHNoXCIsXG4gIFwiV2FsdGVyXCIsXG4gIFwiV2FyZFwiLFxuICBcIldhdGVyc1wiLFxuICBcIldhdHNpY2FcIixcbiAgXCJXZWJlclwiLFxuICBcIldlaG5lclwiLFxuICBcIldlaW1hbm5cIixcbiAgXCJXZWlzc25hdFwiLFxuICBcIldlbGNoXCIsXG4gIFwiV2VzdFwiLFxuICBcIldoaXRlXCIsXG4gIFwiV2llZ2FuZFwiLFxuICBcIldpbGRlcm1hblwiLFxuICBcIldpbGtpbnNvblwiLFxuICBcIldpbGxcIixcbiAgXCJXaWxsaWFtc29uXCIsXG4gIFwiV2lsbG1zXCIsXG4gIFwiV2luZGxlclwiLFxuICBcIldpbnRoZWlzZXJcIixcbiAgXCJXaXNva3lcIixcbiAgXCJXaXNvemtcIixcbiAgXCJXaXR0aW5nXCIsXG4gIFwiV2l6YVwiLFxuICBcIldvbGZcIixcbiAgXCJXb2xmZlwiLFxuICBcIld1Y2tlcnRcIixcbiAgXCJXdW5zY2hcIixcbiAgXCJXeW1hblwiLFxuICBcIllvc3RcIixcbiAgXCJZdW5kdFwiLFxuICBcIlpib25jYWtcIixcbiAgXCJaZW1sYWtcIixcbiAgXCJaaWVtYW5uXCIsXG4gIFwiWmllbWVcIixcbiAgXCJadWxhdWZcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiI3twcmVmaXh9ICN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX0gI3tzdWZmaXh9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIixcbiAgXCIje2ZpcnN0X25hbWV9ICN7bGFzdF9uYW1lfVwiLFxuICBcIiN7Zmlyc3RfbmFtZX0gI3tsYXN0X25hbWV9XCIsXG4gIFwiI3tmaXJzdF9uYW1lfSAje2xhc3RfbmFtZX1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiTXIuXCIsXG4gIFwiTXJzLlwiLFxuICBcIk1zLlwiLFxuICBcIk1pc3NcIixcbiAgXCJEci5cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiSnIuXCIsXG4gIFwiU3IuXCIsXG4gIFwiSVwiLFxuICBcIklJXCIsXG4gIFwiSUlJXCIsXG4gIFwiSVZcIixcbiAgXCJWXCIsXG4gIFwiTURcIixcbiAgXCJERFNcIixcbiAgXCJQaERcIixcbiAgXCJEVk1cIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiZGVzY3JpcHRvclwiOiBbXG4gICAgXCJMZWFkXCIsXG4gICAgXCJTZW5pb3JcIixcbiAgICBcIkRpcmVjdFwiLFxuICAgIFwiQ29ycG9yYXRlXCIsXG4gICAgXCJEeW5hbWljXCIsXG4gICAgXCJGdXR1cmVcIixcbiAgICBcIlByb2R1Y3RcIixcbiAgICBcIk5hdGlvbmFsXCIsXG4gICAgXCJSZWdpb25hbFwiLFxuICAgIFwiRGlzdHJpY3RcIixcbiAgICBcIkNlbnRyYWxcIixcbiAgICBcIkdsb2JhbFwiLFxuICAgIFwiQ3VzdG9tZXJcIixcbiAgICBcIkludmVzdG9yXCIsXG4gICAgXCJEeW5hbWljXCIsXG4gICAgXCJJbnRlcm5hdGlvbmFsXCIsXG4gICAgXCJMZWdhY3lcIixcbiAgICBcIkZvcndhcmRcIixcbiAgICBcIkludGVybmFsXCIsXG4gICAgXCJIdW1hblwiLFxuICAgIFwiQ2hpZWZcIixcbiAgICBcIlByaW5jaXBhbFwiXG4gIF0sXG4gIFwibGV2ZWxcIjogW1xuICAgIFwiU29sdXRpb25zXCIsXG4gICAgXCJQcm9ncmFtXCIsXG4gICAgXCJCcmFuZFwiLFxuICAgIFwiU2VjdXJpdHlcIixcbiAgICBcIlJlc2VhcmNoXCIsXG4gICAgXCJNYXJrZXRpbmdcIixcbiAgICBcIkRpcmVjdGl2ZXNcIixcbiAgICBcIkltcGxlbWVudGF0aW9uXCIsXG4gICAgXCJJbnRlZ3JhdGlvblwiLFxuICAgIFwiRnVuY3Rpb25hbGl0eVwiLFxuICAgIFwiUmVzcG9uc2VcIixcbiAgICBcIlBhcmFkaWdtXCIsXG4gICAgXCJUYWN0aWNzXCIsXG4gICAgXCJJZGVudGl0eVwiLFxuICAgIFwiTWFya2V0c1wiLFxuICAgIFwiR3JvdXBcIixcbiAgICBcIkRpdmlzaW9uXCIsXG4gICAgXCJBcHBsaWNhdGlvbnNcIixcbiAgICBcIk9wdGltaXphdGlvblwiLFxuICAgIFwiT3BlcmF0aW9uc1wiLFxuICAgIFwiSW5mcmFzdHJ1Y3R1cmVcIixcbiAgICBcIkludHJhbmV0XCIsXG4gICAgXCJDb21tdW5pY2F0aW9uc1wiLFxuICAgIFwiV2ViXCIsXG4gICAgXCJCcmFuZGluZ1wiLFxuICAgIFwiUXVhbGl0eVwiLFxuICAgIFwiQXNzdXJhbmNlXCIsXG4gICAgXCJNb2JpbGl0eVwiLFxuICAgIFwiQWNjb3VudHNcIixcbiAgICBcIkRhdGFcIixcbiAgICBcIkNyZWF0aXZlXCIsXG4gICAgXCJDb25maWd1cmF0aW9uXCIsXG4gICAgXCJBY2NvdW50YWJpbGl0eVwiLFxuICAgIFwiSW50ZXJhY3Rpb25zXCIsXG4gICAgXCJGYWN0b3JzXCIsXG4gICAgXCJVc2FiaWxpdHlcIixcbiAgICBcIk1ldHJpY3NcIlxuICBdLFxuICBcImpvYlwiOiBbXG4gICAgXCJTdXBlcnZpc29yXCIsXG4gICAgXCJBc3NvY2lhdGVcIixcbiAgICBcIkV4ZWN1dGl2ZVwiLFxuICAgIFwiTGlhaXNvblwiLFxuICAgIFwiT2ZmaWNlclwiLFxuICAgIFwiTWFuYWdlclwiLFxuICAgIFwiRW5naW5lZXJcIixcbiAgICBcIlNwZWNpYWxpc3RcIixcbiAgICBcIkRpcmVjdG9yXCIsXG4gICAgXCJDb29yZGluYXRvclwiLFxuICAgIFwiQWRtaW5pc3RyYXRvclwiLFxuICAgIFwiQXJjaGl0ZWN0XCIsXG4gICAgXCJBbmFseXN0XCIsXG4gICAgXCJEZXNpZ25lclwiLFxuICAgIFwiUGxhbm5lclwiLFxuICAgIFwiT3JjaGVzdHJhdG9yXCIsXG4gICAgXCJUZWNobmljaWFuXCIsXG4gICAgXCJEZXZlbG9wZXJcIixcbiAgICBcIlByb2R1Y2VyXCIsXG4gICAgXCJDb25zdWx0YW50XCIsXG4gICAgXCJBc3Npc3RhbnRcIixcbiAgICBcIkZhY2lsaXRhdG9yXCIsXG4gICAgXCJBZ2VudFwiLFxuICAgIFwiUmVwcmVzZW50YXRpdmVcIixcbiAgICBcIlN0cmF0ZWdpc3RcIlxuICBdXG59O1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIjIyMtIyMjLSMjIyNcIixcbiAgXCIoIyMjKSAjIyMtIyMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjXCIsXG4gIFwiIyMjLSMjIy0jIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyNcIixcbiAgXCIxLSMjIy0jIyMtIyMjI1wiLFxuICBcIiMjIy4jIyMuIyMjI1wiLFxuICBcIiMjIy0jIyMtIyMjIyB4IyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyMgeCMjI1wiLFxuICBcIjEtIyMjLSMjIy0jIyMjIHgjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyMgeCMjI1wiLFxuICBcIiMjIy0jIyMtIyMjIyB4IyMjI1wiLFxuICBcIigjIyMpICMjIy0jIyMjIHgjIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyMgeCMjIyNcIixcbiAgXCIjIyMuIyMjLiMjIyMgeCMjIyNcIixcbiAgXCIjIyMtIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiKCMjIykgIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiMS0jIyMtIyMjLSMjIyMgeCMjIyMjXCIsXG4gIFwiIyMjLiMjIy4jIyMjIHgjIyMjI1wiXG5dO1xuIiwidmFyIHBob25lX251bWJlciA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBwaG9uZV9udW1iZXI7XG5waG9uZV9udW1iZXIuZm9ybWF0cyA9IHJlcXVpcmUoXCIuL2Zvcm1hdHNcIik7XG4iLCJ2YXIgc3lzdGVtID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHN5c3RlbTtcbnN5c3RlbS5taW1lVHlwZXMgPSByZXF1aXJlKFwiLi9taW1lVHlwZXNcIik7IiwiLypcblxuVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbkNvcHlyaWdodCAoYykgMjAxNCBKb25hdGhhbiBPbmcgbWVAam9uZ2xlYmVycnkuY29tXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cblxuRGVmaW5pdGlvbnMgZnJvbSBtaW1lLWRiIHYxLjIxLjBcbkZvciB1cGRhdGVzIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL21pbWUtZGIvYmxvYi9tYXN0ZXIvZGIuanNvblxuXG4qL1xuXG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHtcbiAgXCJhcHBsaWNhdGlvbi8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vM2dwZGFzaC1xb2UtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwLWltcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYTJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FjdGl2ZW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXBmaWx0ZXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZGlyZWN0b3J5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludGNvc3RwYXJhbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRwcm9wK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcHBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lcnJvcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1uZXR3b3JrbWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXBmaWx0ZXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FwcGxlZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdGZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWNhdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tY2F0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWRlbGV0ZWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21pY21haWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbXN2Yyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tc3ZjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXR4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXV0aC1wb2xpY3kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JhY25ldC14ZGQremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JhdGNoLXNtdHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmRvY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZWVwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxlbmRhcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsZW5kYXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbGwtY29tcGxldGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxzLTE4NDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jY21wK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jY3htbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjY3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkZngreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktZG9tYWluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1xdWV1ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RuaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2VhLTIwMTgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlbGxtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2Z3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbnJwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb2FwLWdyb3VwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb21tb25ncm91bmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29uZmVyZW5jZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jcGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzcmF0dHJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzdGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3ZtK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jdS1zZWVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jeWJlcmNhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFydFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFzaGRlbHRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhdm1vdW50XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNhLXJmdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGVjLWR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpYWxvZy1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kb2Nib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGJrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNrcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rzc2MrZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHNzY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rzc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRzc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kdmNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGktY29uc2VudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGkteDEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaWZhY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29tbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZGV2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEucHJvdmlkZXJpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zZXJ2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuc3Vic2NyaWJlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtbWEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1tYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Vtb3Rpb25tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lcHViK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVwdWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0c29hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mZHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZpdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC1zZm50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZnJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3b2ZmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC13b2ZmMlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndvZmYyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZnJhbWV3b3JrLWF0dHJpYnV0ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dweCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdweFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2d4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9oMjI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2hlbGQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2h0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUta2V5LXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1wa2ctcmVwbHkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1wcC1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lnZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW0taXNjb21wb3NpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LmNtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5vYmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgucmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgudm5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lua21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlua1wiLFwiaW5rbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pb3RwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lwZml4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBmaXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXN1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFyXCIsXCJ3YXJcIixcImVhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtdm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vam9zZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanJkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25cIixcIm1hcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb24tcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb24tc2VxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb241XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbjVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29ubWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29ubWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd2sranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3ay1zZXQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9rcG1sLXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2twbWwtcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25sZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xpbmstZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvYWQtY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsb3N0eG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdHN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2x4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHByb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3B0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjd3JpdGVpaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYWRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYm1hbmlmZXN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1yY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXJjeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFcIixcIm5iXCIsXCJtYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYXRobWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aG1sLXByZXNlbnRhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1hc3NvY2lhdGVkLXByb2NlZHVyZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1kZXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLWVudmVsb3BlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLW1zayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2stcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcHJvdGVjdGlvbi1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1yZWNlcHRpb24tcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXNjaGVkdWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXVzZXItc2VydmljZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ib3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZWRpYS1wb2xpY3ktZGF0YXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFfY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFzZXJ2ZXJjb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zY21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVyZ2UtcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YWxpbmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YTRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ldHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWlrZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9kcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zcy1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3Mtc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3NrZXktZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3Nza2V5LXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXAyMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0yMVwiLFwibXAyMVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNHNcIixcIm00cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtaW9kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWlvZC14bXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXJiLWNvbnN1bWVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcmItcHVibGlzaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLWl2cit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLW1peGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NcIixcImRvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL214ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL25hc2RhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbmV3cy1jaGVja2dyb3Vwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLWdyb3VwaW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLXRyYW5zbWlzc2lvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ubHNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbnNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jc3AtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3NwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJpblwiLFwiZG1zXCIsXCJscmZcIixcIm1hclwiLFwic29cIixcImRpc3RcIixcImRpc3R6XCIsXCJwa2dcIixcImJwa1wiLFwiZHVtcFwiLFwiZWxjXCIsXCJkZXBsb3lcIixcImV4ZVwiLFwiZGxsXCIsXCJkZWJcIixcImRtZ1wiLFwiaXNvXCIsXCJpbWdcIixcIm1zaVwiLFwibXNwXCIsXCJtc21cIixcImJ1ZmZlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29kYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29keFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9wZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9neFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL29tZG9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib21kb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbmVub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvbmV0b2NcIixcIm9uZXRvYzJcIixcIm9uZXRtcFwiLFwib25lcGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb3hwc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm94cHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wMnAtb3ZlcmxheSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBncFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhc2NcIixcInNpZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpY3MtcnVsZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDEwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LW1pbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN21cIixcInA3Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2VyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1jcmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcmxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lwYXRoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeGNtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBraVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bscyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb2Mtc2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpXCIsXCJlcHNcIixcInBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmFsdmVzdHJhbmQudGl0cmF4LXNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5jd3dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjd3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuaHB1Yit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLm5wcmVuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMucGx1Y2tlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMucmRmLXhtbC1jcnlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMueHNmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wc2tjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBza2N4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9xc2lnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZGFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVtb3RlLXByaW50aW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlcHV0b24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jpc2Nvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybG1pK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLWdob3N0YnVzdGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdiclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLXJvYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJvYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktdXBkb3duXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJzZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jzcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FtbGFzc2VydGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FtbG1ldGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNibWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY2FpcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NpbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlcC1leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vzc2lvbi1pbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXRwYXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNldHJlZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2dtbC1vcGVuLWNhdGFsb2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2hmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpZXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZS1maWx0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZS1tZXNzYWdlLXN1bW1hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2ltcGxlc3ltYm9sY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtaWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc21pbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbWlcIixcInNtaWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbXB0ZTMzNm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCtmYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zb2FwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Bpcml0cy1ldmVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NyZ3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncmFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Jncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncnhtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NydSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zc2RsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NzbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtYXBleC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWNvbW11bml0eS11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWVycm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0LWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90ZWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGVpXCIsXCJ0ZWljb3JwdXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aHJhdWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGZpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXBseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXBlZC1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHZlLXRyaWdnZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy1ncnBzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXVpc29ja2V0ZGVzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdmNhcmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjYXJkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92ZW1taVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZS1wYzNjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuYWNjZXNzLXRyYW5zZmVyLWV2ZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuYnNmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5taWQtY2FsbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LWxhcmdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB2YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1leHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnN0YXRlLWFuZC1ldmVudC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC51c3NkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuYmNtY3NpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGNhcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHduXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW1wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWN1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdGNcIixcImFjdXRjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmFpci1hcHBsaWNhdGlvbi1pbnN0YWxsZXItcGFja2FnZSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mbGFzaC5tb3ZpZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZm9ybXNjZW50cmFsLmZjZHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmY2R0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ4cFwiLFwiZnhwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5wYXJ0aWFsLXVwbG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGZkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZXRoZXIuaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haC1iYXJjb2RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haGVhZC5zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFoZWFkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhenNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhendcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1lcmljYW5keW5hbWljcy5hY2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYW1pXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtdW5kc2VuLm1hemUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFua2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1jZXJ0aWZpY2F0ZS1pc3N1ZS1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2lpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuY29tcGFjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBrZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTN1OFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa3Bhc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJhc3RyYS5zd2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFyaXN0YW5ldHdvcmtzLnN3aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN3aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcnRzcXVhcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFzdHJhZWEtc29mdHdhcmUuaW90YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlvdGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFlcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdXRvcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXZpc3Rhcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibXByXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iZWtpdHp1ci1zdGVjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJpb3BheC5yZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGguZXAub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGgubGUub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhYi1qc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYW5vbi1jcGRsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYW5vbi1saXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jZW5kaW8udGhpbmxpbmMuY2xpZW50Y29uZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2VudHVyeS1zeXN0ZW1zLnRjcF9zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNoZW1kcmF3K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1kXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpbmRlcmVsbGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2lycGFjay5pc2RuLWV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2l0YXRpb25zdHlsZXMuc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbGF5bW9yZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwOVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzRnXCIsXCJjNGRcIixcImM0ZlwiLFwiYzRwXCIsXCJjNHVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImMxMWFtY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnLXBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImMxMWFtelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2ZmZWVzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLmRvYytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ubmV4dCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbW1lcmNlLWJhdHRlbGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGJjbXNnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvc21vY2FsbGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGtrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpdGljYWx0b29scy53YnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2JzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN0Yy1wb3NtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdGN0LndzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwucGN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjdXJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5YW4uZGVhbi5yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3liYW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYXJ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRhdGEtdmlzaW9uLnJkelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJkelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWJpYW4uYmluYXJ5LXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2ZlwiLFwidXZ2ZlwiLFwidXZkXCIsXCJ1dnZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnRcIixcInV2dnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2eFwiLFwidXZ2eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2elwiLFwidXZ2elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmVfbGF1bmNoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlc211bWUtbW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRpci1iaS5wbGF0ZS1kbC1ub3N1ZmZpeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG0uZGVsZWdhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRuYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2N1bWVudCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tb2JpbGUuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9yZW1pci5zY29yZWNsb3VkLWJpbmFyeS1kb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZmFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRyaXZlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtweHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuZmxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWl0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5kdmJqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZXNnY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2RmdG5vdGlmYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ2FjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3MyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ3BkZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNyb2FtaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1iYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1lbmhhbmNlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWFnZ3JlZ2F0ZS1yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWNvbnRhaW5lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1nZW5lcmljK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLW1zZ2xpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWluaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIucGZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuc2VydmljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5keHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR5bmFnZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHpyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lYXN5a2FyYW9rZS5jZGdkb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNkaXMtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmZpbGVyZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc3JlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXN1cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVtY2xpZW50LmFjY2Vzc3JlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVucGhhc2UuZW52b3lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwcmludHMuZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2x0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcmljc3Nvbi5xdWlja2NhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzM1wiLFwiZXQzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYW9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hc2ljLWUremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtcyt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuY3VnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2Y29tbWFuZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmRpc2NvdmVyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtYmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtY29kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLW5wdnIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzZXJ2aWNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c3luYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnVlcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWNpZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWhlZzVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kub3ZlcmxvYWQtY29udHJvbC1wb2xpY3ktZGF0YXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kucHN0bit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuc2NpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zaW1zZXJ2cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudGltZXN0YW1wLXRva2VuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsLmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXVkb3JhLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXoyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LXBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlejNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZi1zZWN1cmUubW9iaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mYXN0Y29weS1kaXNrLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZWVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlZWRcIixcImRhdGFsZXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZmc25zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maWxtaXQuemZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maW50c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmlyZW1vbmtleXMuY2xvdWRjZWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3BoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZsdXh0aW1lLmNsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZm9udC1mb250Zm9yZ2Utc2ZkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZm1cIixcImZyYW1lXCIsXCJtYWtlclwiLFwiYm9va1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmx0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mc2Mud2VibGF1bmNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c2dwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmc1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNwcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiaDJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydC1leFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmhicGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1dC1taXNuZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1enp5c2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmenNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9jdWJlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdnYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2V4XCIsXCJncmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvbmV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd4dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzJ3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzN3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlcmJlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ214XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ214XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLmRvY3VtZW50XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2xpZGVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3NoZWV0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2suZS1mb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay54bWxkYXRhY29udGFpbmVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3FmXCIsXCJncXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3JpZG1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtYWNjb3VudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaGVscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdoZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdpbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncnZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhhbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInptbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYmNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGJjaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oY2wtYmlyZXBvcnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oZXJva3UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBpZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpsdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNseGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2x4bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5odHRwaG9uZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlkcm9zdGF0aXguc29mLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZmQtaGRzdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlwZXJkcml2ZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh6bi0zZC1jcm9zc3dvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5hZnBsaW5lZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLmVsZWN0cm9uaWMtbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXB5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZnBcIixcImxpc3RhZnBcIixcImxpc3QzODIwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uc2VjdXJlLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2NcIixcImljbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pZWVlLjE5MDVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlnbG9hZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIml2cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdnVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmxpcy52Mi5yZXN1bHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xjb25zdW1lcnByb2ZpbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHByb3h5LmlkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3MranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncy5zaW1wbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvcm1lZGNvbnRyb2wucm1zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtaXgtdmlzaW9uYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5ub3BhdGgud2FtcC5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluc29ycy5pZ21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwd1wiLFwieHB4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaTJnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3QuZGlnaWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJ0cnVzdC5ubmNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFib1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFmeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNhdGFsb2dpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5jb25jZXB0aXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIua25vd2xlZGdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLm5ld3NtZXNzYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wYWNrYWdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGxhbm5pbmdpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmNwcm9maWxlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXJwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlzLXhwclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pc2FjLmZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZjc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtZGlyZWN0b3J5LXNlcnZpY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWpwbnN0b3JlLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcGF5bWVudC13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXJlZ2lzdHJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcmVnaXN0cmF0aW9uLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtc2V0c3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC12ZXJpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXZlcmlmaWNhdGlvbi13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qaXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamlzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqb2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpzay5pc2RuLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2Fob290elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0elwiLFwia3RyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rYXJib25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrYXJib25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtjaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNocnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtmb3JtdWxhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2ZvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5raXZpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua29udG91clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtvblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtwclwiLFwia3B0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rc3ByZWFkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3NwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt3ZFwiLFwia3d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodGtlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtpZHNwaXJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtpYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5raW5hclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtuZVwiLFwia25wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtvYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJza3BcIixcInNrZFwiLFwic2t0XCIsXCJza21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua29kYWstZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhc3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5saWJlcnR5LXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGJkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxiZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjEyM1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1mcmVlbGFuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtb3JnYW5pemVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3JnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXNjcmVlbmNhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHdwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3J0cGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5hY3Rpb250b2tlbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uY29uZnRva2VuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5saWNlbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5tZGNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXNvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1heG1pbmQubWF4bWluZC1kYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGNhbGNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWMxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNka2V5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lcmlkaWFuLXNsaW5nc2hvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm13ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbG9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LnBvcnRhYmxlLWV4ZWN1dGFibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pZWxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pbmlzb2Z0LWhwMzAwMC1zYXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taXRzdWJpc2hpLm1pc3R5LWd1YXJkLnRydXN0d2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGFmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkaXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1ia1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ia1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXF5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXF5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMudHhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHhmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuYWRzaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmZpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmdvdGFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUua21yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUudHRjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUud2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5pcHJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh1bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy0zbWZkb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtYXJ0Z2FscnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtYXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1jb2xvci5pY2Nwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzXCIsXCJ4bG1cIixcInhsYVwiLFwieGxjXCIsXCJ4bHRcIixcInhsd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsc21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGx0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlb3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtaHRtbGhlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtaW1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW1zXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWxybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZleCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGhteFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBhY2thZ2Uub2JmdXNjYXRlZC1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBsYXlyZWFkeS5pbml0aWF0b3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0XCIsXCJwcHNcIixcInBvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRkZXZpY2VjYXBhYmlsaXRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludGluZy5wcmludHRpY2tldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJvamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wcFwiLFwibXB0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXRuZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5ud3ByaW50aW5nLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5wcmludGVycGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy53c2Qub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5saWMtY2hsZy1yZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5tZXRlci1jaGxnLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG90bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndwc1wiLFwid2tzXCIsXCJ3Y21cIixcIndkYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNhLWRpc2staW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2VxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zaWduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11bHRpYWQuY3JlYXRvci5jaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljLW5pZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXN0eVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5teW5mY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRhZ2xldFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uY2QuY29udHJvbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmNkLnJlZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmVydmFuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmV0ZnB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5sdVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaW50ZW5kby5uaXRyby5yb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLnNuZXMucm9tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnRmXCIsXCJuaXRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5uZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm53XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNhdGFsb2dzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY29ubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pcHR2LmNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmlzZHMtcmFkaW8tcHJlc2V0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmsrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmtjb2xsZWN0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmFjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuZ2RhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2Uuc3ltYmlhbi5pbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibi1nYWdlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm5jZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycHN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycHNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXh0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5jb250ZW50LXNoYXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuZmlsZS10cmFuc2ZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLm9nd19yZW1vdGUtYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuc2lwLXRhX3JlbW90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV90Y3Bfc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYS10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbi10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2R0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LW1hc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2JuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vZnRuLmwxMG4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3Nkb3dubG9hZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY29udGVudGFjY2Vzc3N0cmVhbWluZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY3NwZy1oZXhiaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnN2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnhodG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5taXBwdmNvbnRyb2xtZXNzYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5wYWUuZ2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGlzY292ZXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5zcGRsaXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi51ZXByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVzZXJwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtaHR0cC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuYXNzb2NpYXRlZC1wcm9jZWR1cmUtcGFyYW1ldGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmRybS10cmlnZ2VyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmltZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5sdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Qubm90aWZpY2F0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnByb3Zpc2lvbmluZ3RyaWdnZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2Jvb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2RkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zaW1wbGUtc3ltYm9sLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNtYXJ0Y2FyZC10cmlnZ2VyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNwcm92K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnN0a21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItYWRkcmVzcy1ib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1mZWF0dXJlLWhhbmRsZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXBjYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItc3Vicy1pbnZpdGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXVzZXItcHJlZnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRkMit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZDJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmRybS5yaXNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmdyb3VwLXVzYWdlLWxpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucGFsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5kZXRhaWxlZC1wcm9ncmVzcy1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmZpbmFsLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZ3JvdXBzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5pbnZvY2F0aW9uLWRlc2NyaXB0b3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLm9wdGltaXplZC1wcm9ncmVzcy1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucHVzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnNjaWRtLm1lc3NhZ2VzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnhjYXAtZGlyZWN0b3J5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZW1haWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWFkcy1maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZm9sZGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hbG9jLXN1cGwtaW5pdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUtYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuZXllLm9lYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm94dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbXhtbHByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1jb2xvcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWxheW91dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRhdXRob3JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5oYW5kb3V0bWFzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNtYXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5ub3Rlc3NsaWRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24ubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNwcm9wcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xkeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbGF5b3V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVtYXN0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcHN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdy5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGV1cGRhdGVpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFibGVzdHlsZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnZpZXdwcm9wcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY2NoYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbGxpbmsreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Y2FjaGVkZWZpbml0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdGNhY2hlcmVjb3Jkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3R0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucXVlcnl0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25oZWFkZXJzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkc3RyaW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVzaW5nbGVjZWxscyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC51c2VybmFtZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlZGVwZW5kZW5jaWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lb3ZlcnJpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxkcmF3aW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5nbG9zc2FyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZW5kbm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvbnR0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9vdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290bm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLm51bWJlcmluZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC53ZWJzZXR0aW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5kaWdpdGFsLXNpZ25hdHVyZS14bWxzaWduYXR1cmUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcmFjbGUucmVzb3VyY2UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcmFuZ2UuaW5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2EubmV0ZGVwbG95XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWdwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuYnVuZGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5zdWJzeXN0ZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlc2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Rwcy5jdC1raXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5veGxpLmNvdW50Z3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhZ2VyZHV0eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGJcIixcInBxYVwiLFwib3ByY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW5vcGx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW9zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFvcy54bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGF3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBjb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0clwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlaTZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGlhY2Nlc3MuYXBwbGljYXRpb24tbGljZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGljc2VsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWZpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wbWkud2lkZ2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG9jLmdyb3VwLWFkdmVydGlzZW1lbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb2NrZXRsZWFyblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGJkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjYtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyN1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNy1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3NVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzUtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJlbWluZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcm90ZXVzLm1hZ2F6aW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWd6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB1Ymxpc2hhcmUtZGVsdGEtdHJlZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFwc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdGlkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB3Zy1tdWx0aXBsZXhlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVhbGNvbW0uYnJldy1hcHAtcmVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInF4ZFwiLFwicXh0XCIsXCJxd2RcIixcInF3dFwiLFwicXhsXCIsXCJxeGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVvYmplY3QtcXVveGRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1vbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1jb25uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWRpYWxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1zdHJlYW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWJhc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1kZXRlY3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1zZW5kcmVjdit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZ3JvdXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXNwZWVjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctdHJhbnNmb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFpbnN0b3IuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFwaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlYWx2bmMuYmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzaWN4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVubGVhcm4ucmxwcmludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnlwdG9ub3RlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJpbS5jb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNvZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYS12YnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtdmJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucm91dGU2Ni5saW5rNjYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGluazY2XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJzLTI3NHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJ1Y2t1cy5kb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuczNzbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNhaWxpbmd0cmFja2VyLnRyYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2JtLmNpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2JtLm1pZDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNjcmlidXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC4zZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5jc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5kb2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5lbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5taHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5uZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5wcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC50aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQueGxzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlZW1haWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmludGVyY2hhbmdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpcGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHdkXCIsXCJ0d2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNpcmVuK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1tZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC5ub3RlYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hcnQudGVhY2hlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlYWNoZXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2Z0d2FyZTYwMi5maWxsZXIuZm9ybS14bWwtemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2xlbnQuc2RrbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGttXCIsXCJzZGtkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWR0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLW50ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHdcIixcInZvclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic216aXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0cmVldC1zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi53YWRsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3R3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1c1wiLFwic3VzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3dpZnR2aWV3LWljc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXNcIixcInNpc3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0rd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0ubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZHMubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjYXBcIixcImNhcFwiLFwiZG1wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtZC5tZWRpYWZsZXguYXBpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRtb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cmlkLnRwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRwdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJ1ZWFwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRyYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cnVlZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51Ymlzb2Z0LndlYnBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWZkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVmZFwiLFwidWZkbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51aXEudGhlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW1hamluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW1qXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVuaXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW5pdHl3ZWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW9tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1b21sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnQtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYmVhcmVyLWNob2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNhY2hlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2FjaGVvcC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNoYW5uZWwtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RjbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdGNtZC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5zaWduYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVyaS1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZhbHZlLnNvdXJjZS5tYXRlcmlhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmN4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZkLXN0dWR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZWN0b3J3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVyaW1hdHJpeC52Y2FzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aWRzb2Z0LnZpZGNvbmZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNkXCIsXCJ2c3RcIixcInZzc1wiLFwidnN3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZpc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudnNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC5zaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC5zbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndieG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbHNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3RiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS5wMnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS53c2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud21jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWYuYm9vdHN0cmFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmJwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndxZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndxZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53cnEtaHAzMDAwLWxhYmVsbGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3YuY3NwK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5jc3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5zc3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54YWNtbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhhcmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGZkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhmZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGZkbC53ZWJmb3JtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5jcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5kcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS54bGltXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtZGljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NmcHZnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5yZW1vdGUtc2V0dXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLWF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2FmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLXBocmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEudGhyb3VnaC1uZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50dW5uZWwtdWRwZW5jYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhb3dlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnllbGxvd3JpdmVyLWN1c3RvbS1tZW51XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnp1bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppclwiLFwiemlyelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInphelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZvaWNleG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92cS1ydGNweHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dob2lzcHAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2hvaXNwcC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aW5obHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhscFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dpdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd29yZHBlcmZlY3Q1LjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd3NkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3c2RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3Nwb2xpY3lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjd6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hYml3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYndcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXBwbGUtZGlza2ltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkbWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWJcIixcIngzMlwiLFwidTMyXCIsXCJ2b3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYmRvY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRvcnJlbnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibGJcIixcImJsb3JiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1iemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJielwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYnppcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ6MlwiLFwiYm96XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jYnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNiclwiLFwiY2JhXCIsXCJjYnRcIixcImNielwiLFwiY2I3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jZGxpbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNmc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2hhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb25cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvY29hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29tcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5zY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3NoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc2hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZWJcIixcInVkZWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZ2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkaXJcIixcImRjclwiLFwiZHhyXCIsXCJjc3RcIixcImNjdFwiLFwiY3h0XCIsXCJ3M2RcIixcImZnZFwiLFwic3dhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kb29tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5jeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJyZXNvdXJjZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHZpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWVudm95XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldnlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWV2YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXZhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWJkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWRvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1mcmFtZW1ha2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWdob3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtbGliZ3J4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LW90ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtcGNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc25mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc3BlZWRvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXN1bm9zLW5ld3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtdHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR0ZlwiLFwidHRjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXR5cGUxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZmFcIixcInBmYlwiLFwicGZtXCIsXCJhZm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtdmZvbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZyZWVhcmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFyY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZnV0dXJlc3BsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnY2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdsdWx4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdudW1lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbnVtZXJpY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3JhbXBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ndGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1oZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwaHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWluc3RhbGwtaW5zdHJ1Y3Rpb25zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbnN0YWxsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpc29cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphcmRpZmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbmxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1sYXRleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGF0ZXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx1YWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWx6aC1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsemhcIixcImxoYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbWFrZXNlbGZcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnVuXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1taWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJjXCIsXCJtb2JpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcGVndXJsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtYXBwbGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGxpY2F0aW9uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy1zaG9ydGN1dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibG5rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy13bWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtd216XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXhiYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG9zLXByb2dyYW1cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4ZVwiLFwiZGxsXCIsXCJjb21cIixcImJhdFwiLFwibXNpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21lZGlhdmlld1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXZiXCIsXCJtMTNcIixcIm0xNFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21mXCIsXCJ3bXpcIixcImVtZlwiLFwiZW16XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21vbmV5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbnlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3dyaXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW5ldGNkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmNcIixcImNkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1uemJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm56YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGVybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbFwiLFwicG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBpbG90XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByY1wiLFwicGRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMlwiLFwicGZ4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0aWZpY2F0ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3YlwiLFwic3BjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmVzZWFyY2gtaW5mby1zeXN0ZW1zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNlYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN3ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNxbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3FsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdHVmZml0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN0dWZmaXR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdWJyaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNydFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3Y0Y3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3Y0Y3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3Y0Y3JjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdjRjcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXQzdm0taW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInQzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10YWRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRjbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGNsXCIsXCJ0a1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRleC10Zm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRmbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4aW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGV4aW5mb1wiLFwidGV4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGdpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JqXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC11c3RhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXN0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvblwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2ViYXBwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRlclwiLFwiY3J0XCIsXCJwZW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhmaWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZpZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteGxpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6MVwiLFwiejJcIixcInozXCIsXCJ6NFwiLFwiejVcIixcIno2XCIsXCJ6N1wiLFwiejhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94NDAwLWJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hhY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtYXR0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVycm9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y29uLWNvbmZlcmVuY2UtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8tZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGVuYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZW5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGh0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aHRtbFwiLFwieGh0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGh0bWwtdm9pY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIixcInhzbFwiLFwieHNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLWR0ZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLXBhdGNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94b3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4b3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94cHJvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hzbHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNsdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hzcGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhtbFwiLFwieGh2bWxcIixcInh2bWxcIixcInh2bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3lhbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5YW5nXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlpblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3psaWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzMya2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvLzNncHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vM2dwcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYWMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZHBcIl1cbiAgfSxcbiAgXCJhdWRpby9hbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYW1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Ftci13YitcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXB0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hc2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXRyYWMtYWR2YW5jZWQtbG9zc2xlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYXRyYWMteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYzNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYmFzaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdVwiLFwic25kXCJdXG4gIH0sXG4gIFwiYXVkaW8vYnYxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9idjMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2NsZWFybW9kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9jblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kYXQxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kbHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAxMTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjA1MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIyMTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2aTRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZWFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMtcWNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjYjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNudzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY3diMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2IxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9md2RyZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcxMS0wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MTlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIyMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtMTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi0yNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtNDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjkxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nc20tZWZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbS1oci0wOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9pbGJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2lwLW1yX3YyLjVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vaXNhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL2wxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9sMjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbDI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL2w4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2xwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWRcIixcIm1pZGlcIixcImthclwiLFwicm1pXCJdXG4gIH0sXG4gIFwiYXVkaW8vbW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRhXCIsXCJtNGFcIl1cbiAgfSxcbiAgXCJhdWRpby9tcDRhLWxhdG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wYS1yb2J1c3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wZ2FcIixcIm1wMlwiLFwibXAyYVwiLFwibXAzXCIsXCJtMmFcIixcIm0zYVwiXVxuICB9LFxuICBcImF1ZGlvL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXVzZXBhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhdWRpby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ2FcIixcIm9nZ1wiLFwic3B4XCJdXG4gIH0sXG4gIFwiYXVkaW8vb3B1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY21hLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbXVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtdS13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wcnMuc2lkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3FjZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9yZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHAtbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vczNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzM21cIl1cbiAgfSxcbiAgXCJhdWRpby9zaWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaWxcIl1cbiAgfSxcbiAgXCJhdWRpby9zbXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc212LXFjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zbXYwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3NwLW1pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc3BlZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDE0MGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3RlbGVwaG9uZS1ldmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90b25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3VlbWNsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZkdmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC4zZ3BwLml1ZnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLjRzYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuYXVkaW9rb3pcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNpc2NvLm5zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY21sZXMucmFkaW8tZXZlbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbnMuYW5wMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY25zLmluZjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRlY2UuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmFcIixcInV2dmFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZGlnaXRhbC13aW5kc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVvbFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kbG5hLmFkdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LmhlYWFjLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LmhlYWFjLjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkubXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnB1bHNlLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRyYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRyYVwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5kdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdHNcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzLmhkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRzaGRcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHZiLmZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmV2ZXJhZC5wbGpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmhucy5hdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubHVjZW50LnZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHZwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJweWFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubm9raWEubW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubm9ydGVsLnZia1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA0ODAwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNzQ3MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwNzQ3MFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDk2MDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDk2MDBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQub2N0ZWwuc2JjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5xY2VscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucmhldG9yZXguMzJrYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJpcFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5ybi1yZWFsYXVkaW9cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnZteC5jdnNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC53YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL3ZvcmJpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby92b3JiaXMtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3dhdlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhdlwiXVxuICB9LFxuICBcImF1ZGlvL3dhdmVcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby93ZWJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1hYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtYWlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWlmXCIsXCJhaWZmXCIsXCJhaWZjXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1jYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhZlwiXVxuICB9LFxuICBcImF1ZGlvL3gtZmxhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxhY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtbTRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTN1XCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tcy13YXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndheFwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXMtd21hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFtXCIsXCJyYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm1wXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1yZWFsYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXR0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL3gtd2F2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby94bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG1cIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2R4XCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNpZlwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY21kZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21kZlwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWxcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNzbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzbWxcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LXBkYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImNoZW1pY2FsL3gteHl6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4eXpcIl1cbiAgfSxcbiAgXCJmb250L29wZW50eXBlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGZcIl1cbiAgfSxcbiAgXCJpbWFnZS9ibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1wXCJdXG4gIH0sXG4gIFwiaW1hZ2UvY2dtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2dtXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZml0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9nM2ZheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImczXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZ2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2lmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvaWVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWVmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvanAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL2pwZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcGVnXCIsXCJqcGdcIixcImpwZVwiXVxuICB9LFxuICBcImltYWdlL2pwbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9qcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uva3R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3R4XCJdXG4gIH0sXG4gIFwiaW1hZ2UvbmFwbHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3BqcGVnXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImltYWdlL3BuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBuZ1wiXVxuICB9LFxuICBcImltYWdlL3Bycy5idGlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnRpZlwiXVxuICB9LFxuICBcImltYWdlL3Bycy5wdGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvcHdnLXJhc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS9zZ2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnaVwiXVxuICB9LFxuICBcImltYWdlL3N2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Z1wiLFwic3ZnelwiXVxuICB9LFxuICBcImltYWdlL3QzOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS90aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGlmZlwiLFwidGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvdGlmZi1meFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuYWRvYmUucGhvdG9zaG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2RcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuY25zLmluZjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aVwiLFwidXZ2aVwiLFwidXZnXCIsXCJ1dnZnXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRqdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkanZ1XCIsXCJkanZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR3Z1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR3Z1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5keGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkeGZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZmFzdGJpZHNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmJzXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZweFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmc3RcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbXJcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1ybGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybGNcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZ2xvYmFsZ3JhcGhpY3MucGdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubWl4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5tb3ppbGxhLmFwbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1zLW1vZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGlcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtcGhvdG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndkcFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5uZXQtZnB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnB4XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnJhZGlhbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWQucG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5naWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmpwZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc3ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC50ZW5jZW50LnRhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQudmFsdmUuc291cmNlLnRleHR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLndhcC53Ym1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2JtcFwiXVxuICB9LFxuICBcImltYWdlL3ZuZC54aWZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnpicnVzaC5wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvd2VicFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2VicFwiXVxuICB9LFxuICBcImltYWdlL3gtM2RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZHNcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWNtdS1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhc1wiXVxuICB9LFxuICBcImltYWdlL3gtY214XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbXhcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWZyZWVoYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaFwiLFwiZmhjXCIsXCJmaDRcIixcImZoNVwiLFwiZmg3XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1pY29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljb1wiXVxuICB9LFxuICBcImltYWdlL3gtam5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpuZ1wiXVxuICB9LFxuICBcImltYWdlL3gtbXJzaWQtaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpZFwiXVxuICB9LFxuICBcImltYWdlL3gtbXMtYm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1wXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjeFwiXVxuICB9LFxuICBcImltYWdlL3gtcGljdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGljXCIsXCJwY3RcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWFueW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5tXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBibVwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGdtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwbVwiXVxuICB9LFxuICBcImltYWdlL3gtcmdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZ2JcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXRnYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGdhXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC14Yml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Ym1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXhjZlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJpbWFnZS94LXhwaXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbVwiXVxuICB9LFxuICBcImltYWdlL3gteHdpbmRvd2R1bXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh3ZFwiXVxuICB9LFxuICBcIm1lc3NhZ2UvY3BpbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2V4dGVybmFsLWJvZHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9mZWVkYmFjay1yZXBvcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbC1oZWFkZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvaHR0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtZXNzYWdlL2ltZG4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwibWVzc2FnZS9uZXdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvcGFydGlhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtZXNzYWdlL3JmYzgyMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1sXCIsXCJtaW1lXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9zLWh0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBmcmFnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvdHJhY2tpbmctc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvdm5kLnNpLnNpbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS92bmQud2ZhLndzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC9pZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdzXCIsXCJpZ2VzXCJdXG4gIH0sXG4gIFwibW9kZWwvbWVzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zaFwiLFwibWVzaFwiLFwic2lsb1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5jb2xsYWRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhZVwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5kd2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2ZcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuZmxhdGxhbmQuM2RtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RsXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdzLWdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5ncy5nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLmd0d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0d1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5tb21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQubXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXRzXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLm9wZW5nZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC50ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC52YWx2ZS5zb3VyY2UuY29tcGlsZWQtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC52dHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2dHVcIl1cbiAgfSxcbiAgXCJtb2RlbC92cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3JsXCIsXCJ2cm1sXCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK2JpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkYlwiLFwieDNkYnpcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QrZmFzdGluZm9zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwveDNkK3ZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIngzZHZcIixcIngzZHZ6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkXCIsXCJ4M2R6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkLXZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2FsdGVybmF0aXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9hcHBsZWRvdWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYnl0ZXJhbmdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvZGlnZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvaGVhZGVyLXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvbWl4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3BhcmFsbGVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9yZWxhdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9yZXBvcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3NpZ25lZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvdm9pY2UtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvY2FjaGUtbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGNhY2hlXCIsXCJtYW5pZmVzdFwiXVxuICB9LFxuICBcInRleHQvY2FsZW5kYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY3NcIixcImlmYlwiXVxuICB9LFxuICBcInRleHQvY2FsZW5kZXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L2NtZFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQvY29mZmVlc2NyaXB0XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY29mZmVlXCIsXCJsaXRjb2ZmZWVcIl1cbiAgfSxcbiAgXCJ0ZXh0L2Nzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NzXCJdXG4gIH0sXG4gIFwidGV4dC9jc3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzdlwiXVxuICB9LFxuICBcInRleHQvY3N2LXNjaGVtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2RpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VjbWFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VucmljaGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZndkcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZ3JhbW1hci1yZWYtbGlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2hqc29uXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGpzb25cIl1cbiAgfSxcbiAgXCJ0ZXh0L2h0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0bWxcIixcImh0bVwiLFwic2h0bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L2phZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYWRlXCJdXG4gIH0sXG4gIFwidGV4dC9qYXZhc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9qY3ItY25kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvanN4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc3hcIl1cbiAgfSxcbiAgXCJ0ZXh0L2xlc3NcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsZXNzXCJdXG4gIH0sXG4gIFwidGV4dC9tYXJrZG93blwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L21hdGhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L21pemFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvbjNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm4zXCJdXG4gIH0sXG4gIFwidGV4dC9wYXJhbWV0ZXJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcGxhaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4dFwiLFwidGV4dFwiLFwiY29uZlwiLFwiZGVmXCIsXCJsaXN0XCIsXCJsb2dcIixcImluXCIsXCJpbmlcIl1cbiAgfSxcbiAgXCJ0ZXh0L3Byb3ZlbmFuY2Utbm90YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9wcnMuZmFsbGVuc3RlaW4ucnN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcHJzLmxpbmVzLnRhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRzY1wiXVxuICB9LFxuICBcInRleHQvcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcmZjODIyLWhlYWRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yaWNodGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnR4XCJdXG4gIH0sXG4gIFwidGV4dC9ydGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0ZlwiXVxuICB9LFxuICBcInRleHQvcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvc2dtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnbWxcIixcInNnbVwiXVxuICB9LFxuICBcInRleHQvc3R5bHVzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3R5bHVzXCIsXCJzdHlsXCJdXG4gIH0sXG4gIFwidGV4dC90MTQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzdlwiXVxuICB9LFxuICBcInRleHQvdHJvZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0XCIsXCJ0clwiLFwicm9mZlwiLFwibWFuXCIsXCJtZVwiLFwibXNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3R1cnRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR0bFwiXVxuICB9LFxuICBcInRleHQvdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdXJpLWxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVyaVwiLFwidXJpc1wiLFwidXJsc1wiXVxuICB9LFxuICBcInRleHQvdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjYXJkXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsLmRjdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmN1cmwubWN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1jdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5zY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2N1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kZWJpYW4uY29weXJpZ2h0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmRtY2xpZW50c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmR2Yi5zdWJ0aXRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1YlwiXVxuICB9LFxuICBcInRleHQvdm5kLmVzbWVydGVjLnRoZW1lLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuZmx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx5XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZm1pLmZsZXhzdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx4XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZ3JhcGh2aXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndlwiXVxuICB9LFxuICBcInRleHQvdm5kLmluM2QuM2RtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNkbWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pbjNkLnNwb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcG90XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuaXB0Yy5uZXdzbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuaXB0Yy5uaXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmxhdGV4LXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubW90b3JvbGEucmVmbGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLm1zLW1lZGlhcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5uZXQycGhvbmUuY29tbWNlbnRlci5jb21tYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnJhZGlzeXMubXNtbC1iYXNpYy1sYXlvdXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuc2kudXJpY2F0YWxvZ3VlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFkXCJdXG4gIH0sXG4gIFwidGV4dC92bmQudHJvbGx0ZWNoLmxpbmd1aXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLndhcC5zaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAuc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLndtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbFwiXVxuICB9LFxuICBcInRleHQvdm5kLndhcC53bWxzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzXCJdXG4gIH0sXG4gIFwidGV4dC92dHRcIjoge1xuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnR0XCJdXG4gIH0sXG4gIFwidGV4dC94LWFzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic1wiLFwiYXNtXCJdXG4gIH0sXG4gIFwidGV4dC94LWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNcIixcImNjXCIsXCJjeHhcIixcImNwcFwiLFwiaFwiLFwiaGhcIixcImRpY1wiXVxuICB9LFxuICBcInRleHQveC1jb21wb25lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHRjXCJdXG4gIH0sXG4gIFwidGV4dC94LWZvcnRyYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZcIixcImZvclwiLFwiZjc3XCIsXCJmOTBcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtZ3d0LXJwY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGJzXCJdXG4gIH0sXG4gIFwidGV4dC94LWphdmEtc291cmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYXZhXCJdXG4gIH0sXG4gIFwidGV4dC94LWpxdWVyeS10bXBsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC94LWx1YVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx1YVwiXVxuICB9LFxuICBcInRleHQveC1tYXJrZG93blwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFya2Rvd25cIixcIm1kXCIsXCJta2RcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuZm9cIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtb3BtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3BtbFwiXVxuICB9LFxuICBcInRleHQveC1wYXNjYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBcIixcInBhc1wiXVxuICB9LFxuICBcInRleHQveC1wcm9jZXNzaW5nXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Fzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNhc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Nzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2V0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Z2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc3VzZS15bXBcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInltcFwiXVxuICB9LFxuICBcInRleHQveC11dWVuY29kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZlwiXVxuICB9LFxuICBcInRleHQveG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3htbC1leHRlcm5hbC1wYXJzZWQtZW50aXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQveWFtbFwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlhbWxcIixcInltbFwiXVxuICB9LFxuICBcInZpZGVvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvLzNncHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNncFwiLFwiM2dwcFwiXVxuICB9LFxuICBcInZpZGVvLzNncHAtdHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby8zZ3BwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2cyXCJdXG4gIH0sXG4gIFwidmlkZW8vYm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9idDY1NlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2NlbGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9kdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjFcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjYzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoMjYzXCJdXG4gIH0sXG4gIFwidmlkZW8vaDI2My0xOTk4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2My0yMDAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2NFwiXVxuICB9LFxuICBcInZpZGVvL2gyNjQtcmNkb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL2gyNjQtc3ZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vanBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBndlwiXVxuICB9LFxuICBcInZpZGVvL2pwZWcyMDAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vanBtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcG1cIixcImpwZ21cIl1cbiAgfSxcbiAgXCJ2aWRlby9tajJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1qMlwiLFwibWpwMlwiXVxuICB9LFxuICBcInZpZGVvL21wMXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcDJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXAydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHNcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNFwiLFwibXA0dlwiLFwibXBnNFwiXVxuICB9LFxuICBcInZpZGVvL21wNHYtZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGVnXCIsXCJtcGdcIixcIm1wZVwiLFwibTF2XCIsXCJtMnZcIl1cbiAgfSxcbiAgXCJ2aWRlby9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbXB2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vbnZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9ndlwiXVxuICB9LFxuICBcInZpZGVvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3BvaW50ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9xdWlja3RpbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInF0XCIsXCJtb3ZcIl1cbiAgfSxcbiAgXCJ2aWRlby9yYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vcnR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vc21wdGUyOTJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmNjdHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5oZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZoXCIsXCJ1dnZoXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UubW9iaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dm1cIixcInV2dm1cIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5wZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZwXCIsXCJ1dnZwXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2Uuc2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2c1wiLFwidXZ2c1wiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnZcIixcInV2dnZcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGlyZWN0di5tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGxuYS5tcGVnLXR0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kdmIuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHZiXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmZ2dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnZ0XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmhucy52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMTAxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMmRwYXJpdHlmZWMtMTAxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMmRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzYXZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS50dHNtcGVnMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXh1XCIsXCJtNHVcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHl2XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLm5va2lhLmludGVybGVhdmVkLW11bHRpbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubm9raWEudmlkZW92b2lwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm9iamVjdHZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZC5tcGVnMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWQubXBlZzRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLnN3ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tb3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQudXZ2dS5tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dVwiLFwidXZ2dVwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC52aXZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aXZcIl1cbiAgfSxcbiAgXCJ2aWRlby93ZWJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJtXCJdXG4gIH0sXG4gIFwidmlkZW8veC1mNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImY0dlwiXVxuICB9LFxuICBcInZpZGVvL3gtZmxpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbGlcIl1cbiAgfSxcbiAgXCJ2aWRlby94LWZsdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx2XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00dlwiXVxuICB9LFxuICBcInZpZGVvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rdlwiLFwibWszZFwiLFwibWtzXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1uZ1wiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtYXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhc2ZcIixcImFzeFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtdm9iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2b2JcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bVwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid214XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13dnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInd2eFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXN2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXZpXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zZ2ktbW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1vdmllXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zbXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtdlwiXVxuICB9LFxuICBcIngtY29uZmVyZW5jZS94LWNvb2x0YWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2VcIl1cbiAgfSxcbiAgXCJ4LXNoYWRlci94LWZyYWdtZW50XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwieC1zaGFkZXIveC12ZXJ0ZXhcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfVxufSIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiYW50c1wiLFxuICBcImJhdHNcIixcbiAgXCJiZWFyc1wiLFxuICBcImJlZXNcIixcbiAgXCJiaXJkc1wiLFxuICBcImJ1ZmZhbG9cIixcbiAgXCJjYXRzXCIsXG4gIFwiY2hpY2tlbnNcIixcbiAgXCJjYXR0bGVcIixcbiAgXCJkb2dzXCIsXG4gIFwiZG9scGhpbnNcIixcbiAgXCJkdWNrc1wiLFxuICBcImVsZXBoYW50c1wiLFxuICBcImZpc2hlc1wiLFxuICBcImZveGVzXCIsXG4gIFwiZnJvZ3NcIixcbiAgXCJnZWVzZVwiLFxuICBcImdvYXRzXCIsXG4gIFwiaG9yc2VzXCIsXG4gIFwia2FuZ2Fyb29zXCIsXG4gIFwibGlvbnNcIixcbiAgXCJtb25rZXlzXCIsXG4gIFwib3dsc1wiLFxuICBcIm94ZW5cIixcbiAgXCJwZW5ndWluc1wiLFxuICBcInBlb3BsZVwiLFxuICBcInBpZ3NcIixcbiAgXCJyYWJiaXRzXCIsXG4gIFwic2hlZXBcIixcbiAgXCJ0aWdlcnNcIixcbiAgXCJ3aGFsZXNcIixcbiAgXCJ3b2x2ZXNcIixcbiAgXCJ6ZWJyYXNcIixcbiAgXCJiYW5zaGVlc1wiLFxuICBcImNyb3dzXCIsXG4gIFwiYmxhY2sgY2F0c1wiLFxuICBcImNoaW1lcmFzXCIsXG4gIFwiZ2hvc3RzXCIsXG4gIFwiY29uc3BpcmF0b3JzXCIsXG4gIFwiZHJhZ29uc1wiLFxuICBcImR3YXJ2ZXNcIixcbiAgXCJlbHZlc1wiLFxuICBcImVuY2hhbnRlcnNcIixcbiAgXCJleG9yY2lzdHNcIixcbiAgXCJzb25zXCIsXG4gIFwiZm9lc1wiLFxuICBcImdpYW50c1wiLFxuICBcImdub21lc1wiLFxuICBcImdvYmxpbnNcIixcbiAgXCJnb29zZXNcIixcbiAgXCJncmlmZmluc1wiLFxuICBcImx5Y2FudGhyb3Blc1wiLFxuICBcIm5lbWVzaXNcIixcbiAgXCJvZ3Jlc1wiLFxuICBcIm9yYWNsZXNcIixcbiAgXCJwcm9waGV0c1wiLFxuICBcInNvcmNlcm9yc1wiLFxuICBcInNwaWRlcnNcIixcbiAgXCJzcGlyaXRzXCIsXG4gIFwidmFtcGlyZXNcIixcbiAgXCJ3YXJsb2Nrc1wiLFxuICBcInZpeGVuc1wiLFxuICBcIndlcmV3b2x2ZXNcIixcbiAgXCJ3aXRjaGVzXCIsXG4gIFwid29yc2hpcGVyc1wiLFxuICBcInpvbWJpZXNcIixcbiAgXCJkcnVpZHNcIlxuXTtcbiIsInZhciB0ZWFtID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHRlYW07XG50ZWFtLmNyZWF0dXJlID0gcmVxdWlyZShcIi4vY3JlYXR1cmVcIik7XG50ZWFtLm5hbWUgPSByZXF1aXJlKFwiLi9uYW1lXCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIje0FkZHJlc3Muc3RhdGV9ICN7Y3JlYXR1cmV9XCJcbl07XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcIlVuaXRlZCBTdGF0ZXNcIixcbiAgXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIixcbiAgXCJVU0FcIlxuXTtcbiIsInZhciBhZGRyZXNzID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGFkZHJlc3M7XG5hZGRyZXNzLmRlZmF1bHRfY291bnRyeSA9IHJlcXVpcmUoXCIuL2RlZmF1bHRfY291bnRyeVwiKTtcbmFkZHJlc3MucG9zdGNvZGVfYnlfc3RhdGUgPSByZXF1aXJlKFwiLi9wb3N0Y29kZV9ieV9zdGF0ZVwiKTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSB7XG4gIFwiQUxcIjogXCIzNTAjI1wiLFxuICBcIkFLXCI6IFwiOTk1IyNcIixcbiAgXCJBU1wiOiBcIjk2NyMjXCIsXG4gIFwiQVpcIjogXCI4NTAjI1wiLFxuICBcIkFSXCI6IFwiNzE3IyNcIixcbiAgXCJDQVwiOiBcIjkwMCMjXCIsXG4gIFwiQ09cIjogXCI4MDAjI1wiLFxuICBcIkNUXCI6IFwiMDYxIyNcIixcbiAgXCJEQ1wiOiBcIjIwNCMjXCIsXG4gIFwiREVcIjogXCIxOTgjI1wiLFxuICBcIkZMXCI6IFwiMzIyIyNcIixcbiAgXCJHQVwiOiBcIjMwMSMjXCIsXG4gIFwiSElcIjogXCI5NjcjI1wiLFxuICBcIklEXCI6IFwiODMyIyNcIixcbiAgXCJJTFwiOiBcIjYwMCMjXCIsXG4gIFwiSU5cIjogXCI0NjMjI1wiLFxuICBcIklBXCI6IFwiNTEwIyNcIixcbiAgXCJLU1wiOiBcIjY2NiMjXCIsXG4gIFwiS1lcIjogXCI0MDQjI1wiLFxuICBcIkxBXCI6IFwiNzAxIyNcIixcbiAgXCJNRVwiOiBcIjA0MiMjXCIsXG4gIFwiTURcIjogXCIyMTAjI1wiLFxuICBcIk1BXCI6IFwiMDI2IyNcIixcbiAgXCJNSVwiOiBcIjQ4MCMjXCIsXG4gIFwiTU5cIjogXCI1NTUjI1wiLFxuICBcIk1TXCI6IFwiMzg3IyNcIixcbiAgXCJNT1wiOiBcIjY1MCMjXCIsXG4gIFwiTVRcIjogXCI1OTAjI1wiLFxuICBcIk5FXCI6IFwiNjg4IyNcIixcbiAgXCJOVlwiOiBcIjg5OCMjXCIsXG4gIFwiTkhcIjogXCIwMzYjI1wiLFxuICBcIk5KXCI6IFwiMDc2IyNcIixcbiAgXCJOTVwiOiBcIjg4MCMjXCIsXG4gIFwiTllcIjogXCIxMjIjI1wiLFxuICBcIk5DXCI6IFwiMjg4IyNcIixcbiAgXCJORFwiOiBcIjU4NiMjXCIsXG4gIFwiT0hcIjogXCI0NDQjI1wiLFxuICBcIk9LXCI6IFwiNzMwIyNcIixcbiAgXCJPUlwiOiBcIjk3OSMjXCIsXG4gIFwiUEFcIjogXCIxODYjI1wiLFxuICBcIlJJXCI6IFwiMDI5IyNcIixcbiAgXCJTQ1wiOiBcIjI5OSMjXCIsXG4gIFwiU0RcIjogXCI1NzcjI1wiLFxuICBcIlROXCI6IFwiMzgzIyNcIixcbiAgXCJUWFwiOiBcIjc5OCMjXCIsXG4gIFwiVVRcIjogXCI4NDcjI1wiLFxuICBcIlZUXCI6IFwiMDUwIyNcIixcbiAgXCJWQVwiOiBcIjIyMiMjXCIsXG4gIFwiV0FcIjogXCI5OTAjI1wiLFxuICBcIldWXCI6IFwiMjQ3IyNcIixcbiAgXCJXSVwiOiBcIjU0OSMjXCIsXG4gIFwiV1lcIjogXCI4MzEjI1wiXG59O1xuIiwidmFyIGVuX1VTID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IGVuX1VTO1xuZW5fVVMudGl0bGUgPSBcIlVuaXRlZCBTdGF0ZXMgKEVuZ2xpc2gpXCI7XG5lbl9VUy5pbnRlcm5ldCA9IHJlcXVpcmUoXCIuL2ludGVybmV0XCIpO1xuZW5fVVMuYWRkcmVzcyA9IHJlcXVpcmUoXCIuL2FkZHJlc3NcIik7XG5lbl9VUy5waG9uZV9udW1iZXIgPSByZXF1aXJlKFwiLi9waG9uZV9udW1iZXJcIik7XG4iLCJtb2R1bGVbXCJleHBvcnRzXCJdID0gW1xuICBcImNvbVwiLFxuICBcInVzXCIsXG4gIFwiYml6XCIsXG4gIFwiaW5mb1wiLFxuICBcIm5hbWVcIixcbiAgXCJuZXRcIixcbiAgXCJvcmdcIlxuXTtcbiIsInZhciBpbnRlcm5ldCA9IHt9O1xubW9kdWxlWydleHBvcnRzJ10gPSBpbnRlcm5ldDtcbmludGVybmV0LmRvbWFpbl9zdWZmaXggPSByZXF1aXJlKFwiLi9kb21haW5fc3VmZml4XCIpO1xuIiwibW9kdWxlW1wiZXhwb3J0c1wiXSA9IFtcbiAgXCIyMDFcIixcbiAgXCIyMDJcIixcbiAgXCIyMDNcIixcbiAgXCIyMDVcIixcbiAgXCIyMDZcIixcbiAgXCIyMDdcIixcbiAgXCIyMDhcIixcbiAgXCIyMDlcIixcbiAgXCIyMTBcIixcbiAgXCIyMTJcIixcbiAgXCIyMTNcIixcbiAgXCIyMTRcIixcbiAgXCIyMTVcIixcbiAgXCIyMTZcIixcbiAgXCIyMTdcIixcbiAgXCIyMThcIixcbiAgXCIyMTlcIixcbiAgXCIyMjRcIixcbiAgXCIyMjVcIixcbiAgXCIyMjdcIixcbiAgXCIyMjhcIixcbiAgXCIyMjlcIixcbiAgXCIyMzFcIixcbiAgXCIyMzRcIixcbiAgXCIyMzlcIixcbiAgXCIyNDBcIixcbiAgXCIyNDhcIixcbiAgXCIyNTFcIixcbiAgXCIyNTJcIixcbiAgXCIyNTNcIixcbiAgXCIyNTRcIixcbiAgXCIyNTZcIixcbiAgXCIyNjBcIixcbiAgXCIyNjJcIixcbiAgXCIyNjdcIixcbiAgXCIyNjlcIixcbiAgXCIyNzBcIixcbiAgXCIyNzZcIixcbiAgXCIyODFcIixcbiAgXCIyODNcIixcbiAgXCIzMDFcIixcbiAgXCIzMDJcIixcbiAgXCIzMDNcIixcbiAgXCIzMDRcIixcbiAgXCIzMDVcIixcbiAgXCIzMDdcIixcbiAgXCIzMDhcIixcbiAgXCIzMDlcIixcbiAgXCIzMTBcIixcbiAgXCIzMTJcIixcbiAgXCIzMTNcIixcbiAgXCIzMTRcIixcbiAgXCIzMTVcIixcbiAgXCIzMTZcIixcbiAgXCIzMTdcIixcbiAgXCIzMThcIixcbiAgXCIzMTlcIixcbiAgXCIzMjBcIixcbiAgXCIzMjFcIixcbiAgXCIzMjNcIixcbiAgXCIzMzBcIixcbiAgXCIzMzFcIixcbiAgXCIzMzRcIixcbiAgXCIzMzZcIixcbiAgXCIzMzdcIixcbiAgXCIzMzlcIixcbiAgXCIzNDdcIixcbiAgXCIzNTFcIixcbiAgXCIzNTJcIixcbiAgXCIzNjBcIixcbiAgXCIzNjFcIixcbiAgXCIzODZcIixcbiAgXCI0MDFcIixcbiAgXCI0MDJcIixcbiAgXCI0MDRcIixcbiAgXCI0MDVcIixcbiAgXCI0MDZcIixcbiAgXCI0MDdcIixcbiAgXCI0MDhcIixcbiAgXCI0MDlcIixcbiAgXCI0MTBcIixcbiAgXCI0MTJcIixcbiAgXCI0MTNcIixcbiAgXCI0MTRcIixcbiAgXCI0MTVcIixcbiAgXCI0MTdcIixcbiAgXCI0MTlcIixcbiAgXCI0MjNcIixcbiAgXCI0MjRcIixcbiAgXCI0MjVcIixcbiAgXCI0MzRcIixcbiAgXCI0MzVcIixcbiAgXCI0NDBcIixcbiAgXCI0NDNcIixcbiAgXCI0NDVcIixcbiAgXCI0NjRcIixcbiAgXCI0NjlcIixcbiAgXCI0NzBcIixcbiAgXCI0NzVcIixcbiAgXCI0NzhcIixcbiAgXCI0NzlcIixcbiAgXCI0ODBcIixcbiAgXCI0ODRcIixcbiAgXCI1MDFcIixcbiAgXCI1MDJcIixcbiAgXCI1MDNcIixcbiAgXCI1MDRcIixcbiAgXCI1MDVcIixcbiAgXCI1MDdcIixcbiAgXCI1MDhcIixcbiAgXCI1MDlcIixcbiAgXCI1MTBcIixcbiAgXCI1MTJcIixcbiAgXCI1MTNcIixcbiAgXCI1MTVcIixcbiAgXCI1MTZcIixcbiAgXCI1MTdcIixcbiAgXCI1MThcIixcbiAgXCI1MjBcIixcbiAgXCI1MzBcIixcbiAgXCI1NDBcIixcbiAgXCI1NDFcIixcbiAgXCI1NTFcIixcbiAgXCI1NTdcIixcbiAgXCI1NTlcIixcbiAgXCI1NjFcIixcbiAgXCI1NjJcIixcbiAgXCI1NjNcIixcbiAgXCI1NjRcIixcbiAgXCI1NjdcIixcbiAgXCI1NzBcIixcbiAgXCI1NzFcIixcbiAgXCI1NzNcIixcbiAgXCI1NzRcIixcbiAgXCI1ODBcIixcbiAgXCI1ODVcIixcbiAgXCI1ODZcIixcbiAgXCI2MDFcIixcbiAgXCI2MDJcIixcbiAgXCI2MDNcIixcbiAgXCI2MDVcIixcbiAgXCI2MDZcIixcbiAgXCI2MDdcIixcbiAgXCI2MDhcIixcbiAgXCI2MDlcIixcbiAgXCI2MTBcIixcbiAgXCI2MTJcIixcbiAgXCI2MTRcIixcbiAgXCI2MTVcIixcbiAgXCI2MTZcIixcbiAgXCI2MTdcIixcbiAgXCI2MThcIixcbiAgXCI2MTlcIixcbiAgXCI2MjBcIixcbiAgXCI2MjNcIixcbiAgXCI2MjZcIixcbiAgXCI2MzBcIixcbiAgXCI2MzFcIixcbiAgXCI2MzZcIixcbiAgXCI2NDFcIixcbiAgXCI2NDZcIixcbiAgXCI2NTBcIixcbiAgXCI2NTFcIixcbiAgXCI2NjBcIixcbiAgXCI2NjFcIixcbiAgXCI2NjJcIixcbiAgXCI2NjdcIixcbiAgXCI2NzhcIixcbiAgXCI2ODJcIixcbiAgXCI3MDFcIixcbiAgXCI3MDJcIixcbiAgXCI3MDNcIixcbiAgXCI3MDRcIixcbiAgXCI3MDZcIixcbiAgXCI3MDdcIixcbiAgXCI3MDhcIixcbiAgXCI3MTJcIixcbiAgXCI3MTNcIixcbiAgXCI3MTRcIixcbiAgXCI3MTVcIixcbiAgXCI3MTZcIixcbiAgXCI3MTdcIixcbiAgXCI3MThcIixcbiAgXCI3MTlcIixcbiAgXCI3MjBcIixcbiAgXCI3MjRcIixcbiAgXCI3MjdcIixcbiAgXCI3MzFcIixcbiAgXCI3MzJcIixcbiAgXCI3MzRcIixcbiAgXCI3MzdcIixcbiAgXCI3NDBcIixcbiAgXCI3NTRcIixcbiAgXCI3NTdcIixcbiAgXCI3NjBcIixcbiAgXCI3NjNcIixcbiAgXCI3NjVcIixcbiAgXCI3NzBcIixcbiAgXCI3NzJcIixcbiAgXCI3NzNcIixcbiAgXCI3NzRcIixcbiAgXCI3NzVcIixcbiAgXCI3ODFcIixcbiAgXCI3ODVcIixcbiAgXCI3ODZcIixcbiAgXCI4MDFcIixcbiAgXCI4MDJcIixcbiAgXCI4MDNcIixcbiAgXCI4MDRcIixcbiAgXCI4MDVcIixcbiAgXCI4MDZcIixcbiAgXCI4MDhcIixcbiAgXCI4MTBcIixcbiAgXCI4MTJcIixcbiAgXCI4MTNcIixcbiAgXCI4MTRcIixcbiAgXCI4MTVcIixcbiAgXCI4MTZcIixcbiAgXCI4MTdcIixcbiAgXCI4MThcIixcbiAgXCI4MjhcIixcbiAgXCI4MzBcIixcbiAgXCI4MzFcIixcbiAgXCI4MzJcIixcbiAgXCI4MzVcIixcbiAgXCI4NDNcIixcbiAgXCI4NDVcIixcbiAgXCI4NDdcIixcbiAgXCI4NDhcIixcbiAgXCI4NTBcIixcbiAgXCI4NTZcIixcbiAgXCI4NTdcIixcbiAgXCI4NThcIixcbiAgXCI4NTlcIixcbiAgXCI4NjBcIixcbiAgXCI4NjJcIixcbiAgXCI4NjNcIixcbiAgXCI4NjRcIixcbiAgXCI4NjVcIixcbiAgXCI4NzBcIixcbiAgXCI4NzJcIixcbiAgXCI4NzhcIixcbiAgXCI5MDFcIixcbiAgXCI5MDNcIixcbiAgXCI5MDRcIixcbiAgXCI5MDZcIixcbiAgXCI5MDdcIixcbiAgXCI5MDhcIixcbiAgXCI5MDlcIixcbiAgXCI5MTBcIixcbiAgXCI5MTJcIixcbiAgXCI5MTNcIixcbiAgXCI5MTRcIixcbiAgXCI5MTVcIixcbiAgXCI5MTZcIixcbiAgXCI5MTdcIixcbiAgXCI5MThcIixcbiAgXCI5MTlcIixcbiAgXCI5MjBcIixcbiAgXCI5MjVcIixcbiAgXCI5MjhcIixcbiAgXCI5MzFcIixcbiAgXCI5MzZcIixcbiAgXCI5MzdcIixcbiAgXCI5NDBcIixcbiAgXCI5NDFcIixcbiAgXCI5NDdcIixcbiAgXCI5NDlcIixcbiAgXCI5NTJcIixcbiAgXCI5NTRcIixcbiAgXCI5NTZcIixcbiAgXCI5NTlcIixcbiAgXCI5NzBcIixcbiAgXCI5NzFcIixcbiAgXCI5NzJcIixcbiAgXCI5NzNcIixcbiAgXCI5NzVcIixcbiAgXCI5NzhcIixcbiAgXCI5NzlcIixcbiAgXCI5ODBcIixcbiAgXCI5ODRcIixcbiAgXCI5ODVcIixcbiAgXCI5ODlcIlxuXTtcbiIsIm1vZHVsZVtcImV4cG9ydHNcIl0gPSBbXG4gIFwiMjAxXCIsXG4gIFwiMjAyXCIsXG4gIFwiMjAzXCIsXG4gIFwiMjA1XCIsXG4gIFwiMjA2XCIsXG4gIFwiMjA3XCIsXG4gIFwiMjA4XCIsXG4gIFwiMjA5XCIsXG4gIFwiMjEwXCIsXG4gIFwiMjEyXCIsXG4gIFwiMjEzXCIsXG4gIFwiMjE0XCIsXG4gIFwiMjE1XCIsXG4gIFwiMjE2XCIsXG4gIFwiMjE3XCIsXG4gIFwiMjE4XCIsXG4gIFwiMjE5XCIsXG4gIFwiMjI0XCIsXG4gIFwiMjI1XCIsXG4gIFwiMjI3XCIsXG4gIFwiMjI4XCIsXG4gIFwiMjI5XCIsXG4gIFwiMjMxXCIsXG4gIFwiMjM0XCIsXG4gIFwiMjM5XCIsXG4gIFwiMjQwXCIsXG4gIFwiMjQ4XCIsXG4gIFwiMjUxXCIsXG4gIFwiMjUyXCIsXG4gIFwiMjUzXCIsXG4gIFwiMjU0XCIsXG4gIFwiMjU2XCIsXG4gIFwiMjYwXCIsXG4gIFwiMjYyXCIsXG4gIFwiMjY3XCIsXG4gIFwiMjY5XCIsXG4gIFwiMjcwXCIsXG4gIFwiMjc2XCIsXG4gIFwiMjgxXCIsXG4gIFwiMjgzXCIsXG4gIFwiMzAxXCIsXG4gIFwiMzAyXCIsXG4gIFwiMzAzXCIsXG4gIFwiMzA0XCIsXG4gIFwiMzA1XCIsXG4gIFwiMzA3XCIsXG4gIFwiMzA4XCIsXG4gIFwiMzA5XCIsXG4gIFwiMzEwXCIsXG4gIFwiMzEyXCIsXG4gIFwiMzEzXCIsXG4gIFwiMzE0XCIsXG4gIFwiMzE1XCIsXG4gIFwiMzE2XCIsXG4gIFwiMzE3XCIsXG4gIFwiMzE4XCIsXG4gIFwiMzE5XCIsXG4gIFwiMzIwXCIsXG4gIFwiMzIxXCIsXG4gIFwiMzIzXCIsXG4gIFwiMzMwXCIsXG4gIFwiMzMxXCIsXG4gIFwiMzM0XCIsXG4gIFwiMzM2XCIsXG4gIFwiMzM3XCIsXG4gIFwiMzM5XCIsXG4gIFwiMzQ3XCIsXG4gIFwiMzUxXCIsXG4gIFwiMzUyXCIsXG4gIFwiMzYwXCIsXG4gIFwiMzYxXCIsXG4gIFwiMzg2XCIsXG4gIFwiNDAxXCIsXG4gIFwiNDAyXCIsXG4gIFwiNDA0XCIsXG4gIFwiNDA1XCIsXG4gIFwiNDA2XCIsXG4gIFwiNDA3XCIsXG4gIFwiNDA4XCIsXG4gIFwiNDA5XCIsXG4gIFwiNDEwXCIsXG4gIFwiNDEyXCIsXG4gIFwiNDEzXCIsXG4gIFwiNDE0XCIsXG4gIFwiNDE1XCIsXG4gIFwiNDE3XCIsXG4gIFwiNDE5XCIsXG4gIFwiNDIzXCIsXG4gIFwiNDI0XCIsXG4gIFwiNDI1XCIsXG4gIFwiNDM0XCIsXG4gIFwiNDM1XCIsXG4gIFwiNDQwXCIsXG4gIFwiNDQzXCIsXG4gIFwiNDQ1XCIsXG4gIFwiNDY0XCIsXG4gIFwiNDY5XCIsXG4gIFwiNDcwXCIsXG4gIFwiNDc1XCIsXG4gIFwiNDc4XCIsXG4gIFwiNDc5XCIsXG4gIFwiNDgwXCIsXG4gIFwiNDg0XCIsXG4gIFwiNTAxXCIsXG4gIFwiNTAyXCIsXG4gIFwiNTAzXCIsXG4gIFwiNTA0XCIsXG4gIFwiNTA1XCIsXG4gIFwiNTA3XCIsXG4gIFwiNTA4XCIsXG4gIFwiNTA5XCIsXG4gIFwiNTEwXCIsXG4gIFwiNTEyXCIsXG4gIFwiNTEzXCIsXG4gIFwiNTE1XCIsXG4gIFwiNTE2XCIsXG4gIFwiNTE3XCIsXG4gIFwiNTE4XCIsXG4gIFwiNTIwXCIsXG4gIFwiNTMwXCIsXG4gIFwiNTQwXCIsXG4gIFwiNTQxXCIsXG4gIFwiNTUxXCIsXG4gIFwiNTU3XCIsXG4gIFwiNTU5XCIsXG4gIFwiNTYxXCIsXG4gIFwiNTYyXCIsXG4gIFwiNTYzXCIsXG4gIFwiNTY0XCIsXG4gIFwiNTY3XCIsXG4gIFwiNTcwXCIsXG4gIFwiNTcxXCIsXG4gIFwiNTczXCIsXG4gIFwiNTc0XCIsXG4gIFwiNTgwXCIsXG4gIFwiNTg1XCIsXG4gIFwiNTg2XCIsXG4gIFwiNjAxXCIsXG4gIFwiNjAyXCIsXG4gIFwiNjAzXCIsXG4gIFwiNjA1XCIsXG4gIFwiNjA2XCIsXG4gIFwiNjA3XCIsXG4gIFwiNjA4XCIsXG4gIFwiNjA5XCIsXG4gIFwiNjEwXCIsXG4gIFwiNjEyXCIsXG4gIFwiNjE0XCIsXG4gIFwiNjE1XCIsXG4gIFwiNjE2XCIsXG4gIFwiNjE3XCIsXG4gIFwiNjE4XCIsXG4gIFwiNjE5XCIsXG4gIFwiNjIwXCIsXG4gIFwiNjIzXCIsXG4gIFwiNjI2XCIsXG4gIFwiNjMwXCIsXG4gIFwiNjMxXCIsXG4gIFwiNjM2XCIsXG4gIFwiNjQxXCIsXG4gIFwiNjQ2XCIsXG4gIFwiNjUwXCIsXG4gIFwiNjUxXCIsXG4gIFwiNjYwXCIsXG4gIFwiNjYxXCIsXG4gIFwiNjYyXCIsXG4gIFwiNjY3XCIsXG4gIFwiNjc4XCIsXG4gIFwiNjgyXCIsXG4gIFwiNzAxXCIsXG4gIFwiNzAyXCIsXG4gIFwiNzAzXCIsXG4gIFwiNzA0XCIsXG4gIFwiNzA2XCIsXG4gIFwiNzA3XCIsXG4gIFwiNzA4XCIsXG4gIFwiNzEyXCIsXG4gIFwiNzEzXCIsXG4gIFwiNzE0XCIsXG4gIFwiNzE1XCIsXG4gIFwiNzE2XCIsXG4gIFwiNzE3XCIsXG4gIFwiNzE4XCIsXG4gIFwiNzE5XCIsXG4gIFwiNzIwXCIsXG4gIFwiNzI0XCIsXG4gIFwiNzI3XCIsXG4gIFwiNzMxXCIsXG4gIFwiNzMyXCIsXG4gIFwiNzM0XCIsXG4gIFwiNzM3XCIsXG4gIFwiNzQwXCIsXG4gIFwiNzU0XCIsXG4gIFwiNzU3XCIsXG4gIFwiNzYwXCIsXG4gIFwiNzYzXCIsXG4gIFwiNzY1XCIsXG4gIFwiNzcwXCIsXG4gIFwiNzcyXCIsXG4gIFwiNzczXCIsXG4gIFwiNzc0XCIsXG4gIFwiNzc1XCIsXG4gIFwiNzgxXCIsXG4gIFwiNzg1XCIsXG4gIFwiNzg2XCIsXG4gIFwiODAxXCIsXG4gIFwiODAyXCIsXG4gIFwiODAzXCIsXG4gIFwiODA0XCIsXG4gIFwiODA1XCIsXG4gIFwiODA2XCIsXG4gIFwiODA4XCIsXG4gIFwiODEwXCIsXG4gIFwiODEyXCIsXG4gIFwiODEzXCIsXG4gIFwiODE0XCIsXG4gIFwiODE1XCIsXG4gIFwiODE2XCIsXG4gIFwiODE3XCIsXG4gIFwiODE4XCIsXG4gIFwiODI4XCIsXG4gIFwiODMwXCIsXG4gIFwiODMxXCIsXG4gIFwiODMyXCIsXG4gIFwiODM1XCIsXG4gIFwiODQzXCIsXG4gIFwiODQ1XCIsXG4gIFwiODQ3XCIsXG4gIFwiODQ4XCIsXG4gIFwiODUwXCIsXG4gIFwiODU2XCIsXG4gIFwiODU3XCIsXG4gIFwiODU4XCIsXG4gIFwiODU5XCIsXG4gIFwiODYwXCIsXG4gIFwiODYyXCIsXG4gIFwiODYzXCIsXG4gIFwiODY0XCIsXG4gIFwiODY1XCIsXG4gIFwiODcwXCIsXG4gIFwiODcyXCIsXG4gIFwiODc4XCIsXG4gIFwiOTAxXCIsXG4gIFwiOTAzXCIsXG4gIFwiOTA0XCIsXG4gIFwiOTA2XCIsXG4gIFwiOTA3XCIsXG4gIFwiOTA4XCIsXG4gIFwiOTA5XCIsXG4gIFwiOTEwXCIsXG4gIFwiOTEyXCIsXG4gIFwiOTEzXCIsXG4gIFwiOTE0XCIsXG4gIFwiOTE1XCIsXG4gIFwiOTE2XCIsXG4gIFwiOTE3XCIsXG4gIFwiOTE4XCIsXG4gIFwiOTE5XCIsXG4gIFwiOTIwXCIsXG4gIFwiOTI1XCIsXG4gIFwiOTI4XCIsXG4gIFwiOTMxXCIsXG4gIFwiOTM2XCIsXG4gIFwiOTM3XCIsXG4gIFwiOTQwXCIsXG4gIFwiOTQxXCIsXG4gIFwiOTQ3XCIsXG4gIFwiOTQ5XCIsXG4gIFwiOTUyXCIsXG4gIFwiOTU0XCIsXG4gIFwiOTU2XCIsXG4gIFwiOTU5XCIsXG4gIFwiOTcwXCIsXG4gIFwiOTcxXCIsXG4gIFwiOTcyXCIsXG4gIFwiOTczXCIsXG4gIFwiOTc1XCIsXG4gIFwiOTc4XCIsXG4gIFwiOTc5XCIsXG4gIFwiOTgwXCIsXG4gIFwiOTg0XCIsXG4gIFwiOTg1XCIsXG4gIFwiOTg5XCJcbl07XG4iLCJ2YXIgcGhvbmVfbnVtYmVyID0ge307XG5tb2R1bGVbJ2V4cG9ydHMnXSA9IHBob25lX251bWJlcjtcbnBob25lX251bWJlci5hcmVhX2NvZGUgPSByZXF1aXJlKFwiLi9hcmVhX2NvZGVcIik7XG5waG9uZV9udW1iZXIuZXhjaGFuZ2VfY29kZSA9IHJlcXVpcmUoXCIuL2V4Y2hhbmdlX2NvZGVcIik7XG4iLCJcbi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIubG9yZW1cbiAqL1xudmFyIExvcmVtID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIEhlbHBlcnMgPSBmYWtlci5oZWxwZXJzO1xuXG4gIC8qKlxuICAgKiB3b3JkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ud29yZFxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtXG4gICAqL1xuICBzZWxmLndvcmQgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubG9yZW0ud29yZHMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiB3b3Jkc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLndvcmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gbnVtYmVyIG9mIHdvcmRzLCBkZWZhdWx0cyB0byAzXG4gICAqL1xuICBzZWxmLndvcmRzID0gZnVuY3Rpb24gKG51bSkge1xuICAgICAgaWYgKHR5cGVvZiBudW0gPT0gJ3VuZGVmaW5lZCcpIHsgbnVtID0gMzsgfVxuICAgICAgdmFyIHdvcmRzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgICAgIHdvcmRzLnB1c2goZmFrZXIubG9yZW0ud29yZCgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3b3Jkcy5qb2luKCcgJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNlbnRlbmNlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0uc2VudGVuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdvcmRDb3VudCBkZWZhdWx0cyB0byBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAzIGFuZCAxMFxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFuZ2VcbiAgICovXG4gIHNlbGYuc2VudGVuY2UgPSBmdW5jdGlvbiAod29yZENvdW50LCByYW5nZSkge1xuICAgICAgaWYgKHR5cGVvZiB3b3JkQ291bnQgPT0gJ3VuZGVmaW5lZCcpIHsgd29yZENvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMywgbWF4OiAxMCB9KTsgfVxuICAgICAgLy8gaWYgKHR5cGVvZiByYW5nZSA9PSAndW5kZWZpbmVkJykgeyByYW5nZSA9IDc7IH1cblxuICAgICAgLy8gc3RyYW5nZSBpc3N1ZSB3aXRoIHRoZSBub2RlX21pbl90ZXN0IGZhaWxpbmcgZm9yIGNhcHRpYWxpemUsIHBsZWFzZSBmaXggYW5kIGFkZCBmYWtlci5sb3JlbS5iYWNrXG4gICAgICAvL3JldHVybiAgZmFrZXIubG9yZW0ud29yZHMod29yZENvdW50ICsgSGVscGVycy5yYW5kb21OdW1iZXIocmFuZ2UpKS5qb2luKCcgJykuY2FwaXRhbGl6ZSgpO1xuXG4gICAgICB2YXIgc2VudGVuY2UgPSBmYWtlci5sb3JlbS53b3Jkcyh3b3JkQ291bnQpO1xuICAgICAgcmV0dXJuIHNlbnRlbmNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VudGVuY2Uuc2xpY2UoMSkgKyAnLic7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNsdWdcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5zbHVnXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3b3JkQ291bnQgbnVtYmVyIG9mIHdvcmRzLCBkZWZhdWx0cyB0byAzXG4gICAqL1xuICBzZWxmLnNsdWcgPSBmdW5jdGlvbiAod29yZENvdW50KSB7XG4gICAgICB2YXIgd29yZHMgPSBmYWtlci5sb3JlbS53b3Jkcyh3b3JkQ291bnQpO1xuICAgICAgcmV0dXJuIEhlbHBlcnMuc2x1Z2lmeSh3b3Jkcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNlbnRlbmNlc1xuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnNlbnRlbmNlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gc2VudGVuY2VDb3VudCBkZWZhdXRscyB0byBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAyIGFuZCA2XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgICovXG4gIHNlbGYuc2VudGVuY2VzID0gZnVuY3Rpb24gKHNlbnRlbmNlQ291bnQsIHNlcGFyYXRvcikge1xuICAgICAgaWYgKHR5cGVvZiBzZW50ZW5jZUNvdW50ID09PSAndW5kZWZpbmVkJykgeyBzZW50ZW5jZUNvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7IG1pbjogMiwgbWF4OiA2IH0pO31cbiAgICAgIGlmICh0eXBlb2Ygc2VwYXJhdG9yID09ICd1bmRlZmluZWQnKSB7IHNlcGFyYXRvciA9IFwiIFwiOyB9XG4gICAgICB2YXIgc2VudGVuY2VzID0gW107XG4gICAgICBmb3IgKHNlbnRlbmNlQ291bnQ7IHNlbnRlbmNlQ291bnQgPiAwOyBzZW50ZW5jZUNvdW50LS0pIHtcbiAgICAgICAgc2VudGVuY2VzLnB1c2goZmFrZXIubG9yZW0uc2VudGVuY2UoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VudGVuY2VzLmpvaW4oc2VwYXJhdG9yKTtcbiAgfTtcblxuICAvKipcbiAgICogcGFyYWdyYXBoXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIubG9yZW0ucGFyYWdyYXBoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZW50ZW5jZUNvdW50IGRlZmF1bHRzIHRvIDNcbiAgICovXG4gIHNlbGYucGFyYWdyYXBoID0gZnVuY3Rpb24gKHNlbnRlbmNlQ291bnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VudGVuY2VDb3VudCA9PSAndW5kZWZpbmVkJykgeyBzZW50ZW5jZUNvdW50ID0gMzsgfVxuICAgICAgcmV0dXJuIGZha2VyLmxvcmVtLnNlbnRlbmNlcyhzZW50ZW5jZUNvdW50ICsgZmFrZXIucmFuZG9tLm51bWJlcigzKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhcmFncmFwaHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5wYXJhZ3JhcGhzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYXJhZ3JhcGhDb3VudCBkZWZhdWx0cyB0byAzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYCdcXG4gXFxyJ2BcbiAgICovXG4gIHNlbGYucGFyYWdyYXBocyA9IGZ1bmN0aW9uIChwYXJhZ3JhcGhDb3VudCwgc2VwYXJhdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBzZXBhcmF0b3IgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHNlcGFyYXRvciA9IFwiXFxuIFxcclwiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBhcmFncmFwaENvdW50ID09ICd1bmRlZmluZWQnKSB7IHBhcmFncmFwaENvdW50ID0gMzsgfVxuICAgIHZhciBwYXJhZ3JhcGhzID0gW107XG4gICAgZm9yIChwYXJhZ3JhcGhDb3VudDsgcGFyYWdyYXBoQ291bnQgPiAwOyBwYXJhZ3JhcGhDb3VudC0tKSB7XG4gICAgICAgIHBhcmFncmFwaHMucHVzaChmYWtlci5sb3JlbS5wYXJhZ3JhcGgoKSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhZ3JhcGhzLmpvaW4oc2VwYXJhdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHJhbmRvbSB0ZXh0IGJhc2VkIG9uIGEgcmFuZG9tIGxvcmVtIG1ldGhvZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLmxvcmVtLnRleHRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVzXG4gICAqL1xuICBzZWxmLnRleHQgPSBmdW5jdGlvbiBsb3JlbVRleHQgKHRpbWVzKSB7XG4gICAgdmFyIGxvcmVtTWV0aG9kcyA9IFsnbG9yZW0ud29yZCcsICdsb3JlbS53b3JkcycsICdsb3JlbS5zZW50ZW5jZScsICdsb3JlbS5zZW50ZW5jZXMnLCAnbG9yZW0ucGFyYWdyYXBoJywgJ2xvcmVtLnBhcmFncmFwaHMnLCAnbG9yZW0ubGluZXMnXTtcbiAgICB2YXIgcmFuZG9tTG9yZW1NZXRob2QgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGxvcmVtTWV0aG9kcyk7XG4gICAgcmV0dXJuIGZha2VyLmZha2UoJ3t7JyArIHJhbmRvbUxvcmVtTWV0aG9kICsgJ319Jyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgbGluZXMgb2YgbG9yZW0gc2VwYXJhdGVkIGJ5IGAnXFxuJ2BcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5sb3JlbS5saW5lc1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGluZUNvdW50IGRlZmF1bHRzIHRvIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIDEgYW5kIDVcbiAgICovXG4gIHNlbGYubGluZXMgPSBmdW5jdGlvbiBsaW5lcyAobGluZUNvdW50KSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lQ291bnQgPT09ICd1bmRlZmluZWQnKSB7IGxpbmVDb3VudCA9IGZha2VyLnJhbmRvbS5udW1iZXIoeyBtaW46IDEsIG1heDogNSB9KTt9XG4gICAgcmV0dXJuIGZha2VyLmxvcmVtLnNlbnRlbmNlcyhsaW5lQ291bnQsICdcXG4nKVxuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufTtcblxuXG5tb2R1bGVbXCJleHBvcnRzXCJdID0gTG9yZW07XG4iLCIvKipcbiAqXG4gKiBAbmFtZXNwYWNlIGZha2VyLm5hbWVcbiAqL1xuZnVuY3Rpb24gTmFtZSAoZmFrZXIpIHtcblxuICAvKipcbiAgICogZmlyc3ROYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5maXJzdE5hbWUgPSBmdW5jdGlvbiAoZ2VuZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLm1hbGVfZmlyc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5mZW1hbGVfZmlyc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgLy8gc29tZSBsb2NhbGUgZGF0YXNldHMgKCBsaWtlIHJ1ICkgaGF2ZSBmaXJzdF9uYW1lIHNwbGl0IGJ5IGdlbmRlci4gc2luY2UgdGhlIG5hbWUuZmlyc3RfbmFtZSBmaWVsZCBkb2VzIG5vdCBleGlzdCBpbiB0aGVzZSBkYXRhc2V0cyxcbiAgICAgIC8vIHdlIG11c3QgcmFuZG9tbHkgcGljayBhIG5hbWUgZnJvbSBlaXRoZXIgZ2VuZGVyIGFycmF5IHNvIGZha2VyLm5hbWUuZmlyc3ROYW1lIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGxvY2FsZSBkYXRhICggYW5kIG5vdCBmYWxsYmFjayApXG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGlmIChnZW5kZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUubWFsZV9maXJzdF9uYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUuZmVtYWxlX2ZpcnN0X25hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZpcnN0X25hbWUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBsYXN0TmFtZVxuICAgKlxuICAgKiBAbWV0aG9kIGxhc3ROYW1lXG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5sYXN0TmFtZSA9IGZ1bmN0aW9uIChnZW5kZXIpIHtcbiAgICBpZiAodHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUubWFsZV9sYXN0X25hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGZha2VyLmRlZmluaXRpb25zLm5hbWUuZmVtYWxlX2xhc3RfbmFtZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgLy8gc29tZSBsb2NhbGUgZGF0YXNldHMgKCBsaWtlIHJ1ICkgaGF2ZSBsYXN0X25hbWUgc3BsaXQgYnkgZ2VuZGVyLiBpIGhhdmUgbm8gaWRlYSBob3cgbGFzdCBuYW1lcyBjYW4gaGF2ZSBnZW5kZXJzLCBidXQgYWxzbyBpIGRvIG5vdCBzcGVhayBydXNzaWFuXG4gICAgICAvLyBzZWUgYWJvdmUgY29tbWVudCBvZiBmaXJzdE5hbWUgbWV0aG9kXG4gICAgICBpZiAodHlwZW9mIGdlbmRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZ2VuZGVyID0gZmFrZXIucmFuZG9tLm51bWJlcigxKTtcbiAgICAgIH1cbiAgICAgIGlmIChnZW5kZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUubWFsZV9sYXN0X25hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIubG9jYWxlc1tmYWtlci5sb2NhbGVdLm5hbWUuZmVtYWxlX2xhc3RfbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUubGFzdF9uYW1lKTtcbiAgfTtcblxuICAvKipcbiAgICogZmluZE5hbWVcbiAgICpcbiAgICogQG1ldGhvZCBmaW5kTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlyc3ROYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYXN0TmFtZVxuICAgKiBAcGFyYW0ge21peGVkfSBnZW5kZXJcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuZmluZE5hbWUgPSBmdW5jdGlvbiAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZ2VuZGVyKSB7XG4gICAgICB2YXIgciA9IGZha2VyLnJhbmRvbS5udW1iZXIoOCk7XG4gICAgICB2YXIgcHJlZml4LCBzdWZmaXg7XG4gICAgICAvLyBpbiBwYXJ0aWN1bGFyIGxvY2FsZXMgZmlyc3QgYW5kIGxhc3QgbmFtZXMgc3BsaXQgYnkgZ2VuZGVyLFxuICAgICAgLy8gdGh1cyB3ZSBrZWVwIGNvbnNpc3RlbmN5IGJ5IHBhc3NpbmcgMCBhcyBtYWxlIGFuZCAxIGFzIGZlbWFsZVxuICAgICAgaWYgKHR5cGVvZiBnZW5kZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGdlbmRlciA9IGZha2VyLnJhbmRvbS5udW1iZXIoMSk7XG4gICAgICB9XG4gICAgICBmaXJzdE5hbWUgPSBmaXJzdE5hbWUgfHwgZmFrZXIubmFtZS5maXJzdE5hbWUoZ2VuZGVyKTtcbiAgICAgIGxhc3ROYW1lID0gbGFzdE5hbWUgfHwgZmFrZXIubmFtZS5sYXN0TmFtZShnZW5kZXIpO1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgICAgcHJlZml4ID0gZmFrZXIubmFtZS5wcmVmaXgoZ2VuZGVyKTtcbiAgICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBcIiBcIiArIGZpcnN0TmFtZSArIFwiIFwiICsgbGFzdE5hbWU7XG4gICAgICAgICAgfVxuICAgICAgY2FzZSAxOlxuICAgICAgICAgIHN1ZmZpeCA9IGZha2VyLm5hbWUuc3VmZml4KGdlbmRlcik7XG4gICAgICAgICAgaWYgKHN1ZmZpeCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmlyc3ROYW1lICsgXCIgXCIgKyBsYXN0TmFtZSArIFwiIFwiICsgc3VmZml4O1xuICAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpcnN0TmFtZSArIFwiIFwiICsgbGFzdE5hbWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYlRpdGxlXG4gICAqXG4gICAqIEBtZXRob2Qgam9iVGl0bGVcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuam9iVGl0bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICBmYWtlci5uYW1lLmpvYkRlc2NyaXB0b3IoKSArIFwiIFwiICtcbiAgICAgIGZha2VyLm5hbWUuam9iQXJlYSgpICsgXCIgXCIgK1xuICAgICAgZmFrZXIubmFtZS5qb2JUeXBlKCk7XG4gIH07XG4gIFxuICAvKipcbiAgICogcHJlZml4XG4gICAqXG4gICAqIEBtZXRob2QgcHJlZml4XG4gICAqIEBwYXJhbSB7bWl4ZWR9IGdlbmRlclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5wcmVmaXggPSBmdW5jdGlvbiAoZ2VuZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLm1hbGVfcHJlZml4ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBmYWtlci5kZWZpbml0aW9ucy5uYW1lLmZlbWFsZV9wcmVmaXggIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2VuZGVyICE9PSAnbnVtYmVyJykge1xuICAgICAgICBnZW5kZXIgPSBmYWtlci5yYW5kb20ubnVtYmVyKDEpO1xuICAgICAgfVxuICAgICAgaWYgKGdlbmRlciA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5tYWxlX3ByZWZpeCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5sb2NhbGVzW2Zha2VyLmxvY2FsZV0ubmFtZS5mZW1hbGVfcHJlZml4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5wcmVmaXgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzdWZmaXhcbiAgICpcbiAgICogQG1ldGhvZCBzdWZmaXhcbiAgICogQG1lbWJlcm9mIGZha2VyLm5hbWVcbiAgICovXG4gIHRoaXMuc3VmZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS5zdWZmaXgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiB0aXRsZVxuICAgKlxuICAgKiBAbWV0aG9kIHRpdGxlXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLnRpdGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciAgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuZGVzY3JpcHRvciksXG4gICAgICAgICAgbGV2ZWwgICAgICAgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUubGV2ZWwpLFxuICAgICAgICAgIGpvYiAgICAgICAgID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5uYW1lLnRpdGxlLmpvYik7XG5cbiAgICAgIHJldHVybiBkZXNjcmlwdG9yICsgXCIgXCIgKyBsZXZlbCArIFwiIFwiICsgam9iO1xuICB9O1xuXG4gIC8qKlxuICAgKiBqb2JEZXNjcmlwdG9yXG4gICAqXG4gICAqIEBtZXRob2Qgam9iRGVzY3JpcHRvclxuICAgKiBAbWVtYmVyb2YgZmFrZXIubmFtZVxuICAgKi9cbiAgdGhpcy5qb2JEZXNjcmlwdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KGZha2VyLmRlZmluaXRpb25zLm5hbWUudGl0bGUuZGVzY3JpcHRvcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYkFyZWFcbiAgICpcbiAgICogQG1ldGhvZCBqb2JBcmVhXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYkFyZWEgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5sZXZlbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGpvYlR5cGVcbiAgICpcbiAgICogQG1ldGhvZCBqb2JUeXBlXG4gICAqIEBtZW1iZXJvZiBmYWtlci5uYW1lXG4gICAqL1xuICB0aGlzLmpvYlR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoZmFrZXIuZGVmaW5pdGlvbnMubmFtZS50aXRsZS5qb2IpO1xuICB9O1xuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gTmFtZTtcbiIsIi8qKlxuICpcbiAqIEBuYW1lc3BhY2UgZmFrZXIucGhvbmVcbiAqL1xudmFyIFBob25lID0gZnVuY3Rpb24gKGZha2VyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvKipcbiAgICogcGhvbmVOdW1iZXJcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5waG9uZS5waG9uZU51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0XG4gICAqL1xuICBzZWxmLnBob25lTnVtYmVyID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8IGZha2VyLnBob25lLnBob25lRm9ybWF0cygpO1xuICAgICAgcmV0dXJuIGZha2VyLmhlbHBlcnMucmVwbGFjZVN5bWJvbFdpdGhOdW1iZXIoZm9ybWF0KTtcbiAgfTtcblxuICAvLyBGSVhNRTogdGhpcyBpcyBzdHJhbmdlIHBhc3NpbmcgaW4gYW4gYXJyYXkgaW5kZXguXG4gIC8qKlxuICAgKiBwaG9uZU51bWJlckZvcm1hdFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnBob25lLnBob25lRm9ybWF0c0FycmF5SW5kZXhcbiAgICogQHBhcmFtIHBob25lRm9ybWF0c0FycmF5SW5kZXhcbiAgICovXG4gIHNlbGYucGhvbmVOdW1iZXJGb3JtYXQgPSBmdW5jdGlvbiAocGhvbmVGb3JtYXRzQXJyYXlJbmRleCkge1xuICAgICAgcGhvbmVGb3JtYXRzQXJyYXlJbmRleCA9IHBob25lRm9ybWF0c0FycmF5SW5kZXggfHwgMDtcbiAgICAgIHJldHVybiBmYWtlci5oZWxwZXJzLnJlcGxhY2VTeW1ib2xXaXRoTnVtYmVyKGZha2VyLmRlZmluaXRpb25zLnBob25lX251bWJlci5mb3JtYXRzW3Bob25lRm9ybWF0c0FycmF5SW5kZXhdKTtcbiAgfTtcblxuICAvKipcbiAgICogcGhvbmVGb3JtYXRzXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucGhvbmUucGhvbmVGb3JtYXRzXG4gICAqL1xuICBzZWxmLnBob25lRm9ybWF0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChmYWtlci5kZWZpbml0aW9ucy5waG9uZV9udW1iZXIuZm9ybWF0cyk7XG4gIH07XG4gIFxuICByZXR1cm4gc2VsZjtcblxufTtcblxubW9kdWxlWydleHBvcnRzJ10gPSBQaG9uZTsiLCJ2YXIgbWVyc2VubmUgPSByZXF1aXJlKCcuLi92ZW5kb3IvbWVyc2VubmUnKTtcblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5yYW5kb21cbiAqL1xuZnVuY3Rpb24gUmFuZG9tIChmYWtlciwgc2VlZCkge1xuICAvLyBVc2UgYSB1c2VyIHByb3ZpZGVkIHNlZWQgaWYgaXQgZXhpc3RzXG4gIGlmIChzZWVkKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VlZCkgJiYgc2VlZC5sZW5ndGgpIHtcbiAgICAgIG1lcnNlbm5lLnNlZWRfYXJyYXkoc2VlZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbWVyc2VubmUuc2VlZChzZWVkKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIHJldHVybnMgYSBzaW5nbGUgcmFuZG9tIG51bWJlciBiYXNlZCBvbiBhIG1heCBudW1iZXIgb3IgcmFuZ2VcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ubnVtYmVyXG4gICAqIEBwYXJhbSB7bWl4ZWR9IG9wdGlvbnNcbiAgICovXG4gIHRoaXMubnVtYmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgbWF4OiBvcHRpb25zXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1pbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgb3B0aW9ucy5taW4gPSAwO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXggPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG9wdGlvbnMubWF4ID0gOTk5OTk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG9wdGlvbnMucHJlY2lzaW9uID0gMTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHRoZSByYW5nZSBpbmNsdXNpdmUgb2YgdGhlIG1heCB2YWx1ZVxuICAgIHZhciBtYXggPSBvcHRpb25zLm1heDtcbiAgICBpZiAobWF4ID49IDApIHtcbiAgICAgIG1heCArPSBvcHRpb25zLnByZWNpc2lvbjtcbiAgICB9XG5cbiAgICB2YXIgcmFuZG9tTnVtYmVyID0gb3B0aW9ucy5wcmVjaXNpb24gKiBNYXRoLmZsb29yKFxuICAgICAgbWVyc2VubmUucmFuZChtYXggLyBvcHRpb25zLnByZWNpc2lvbiwgb3B0aW9ucy5taW4gLyBvcHRpb25zLnByZWNpc2lvbikpO1xuXG4gICAgcmV0dXJuIHJhbmRvbU51bWJlcjtcblxuICB9XG5cbiAgLyoqXG4gICAqIHRha2VzIGFuIGFycmF5IGFuZCByZXR1cm5zIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhlIGFycmF5XG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudFxuICAgKiBAcGFyYW0ge2FycmF5fSBhcnJheVxuICAgKi9cbiAgdGhpcy5hcnJheUVsZW1lbnQgPSBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgIGFycmF5ID0gYXJyYXkgfHwgW1wiYVwiLCBcImJcIiwgXCJjXCJdO1xuICAgICAgdmFyIHIgPSBmYWtlci5yYW5kb20ubnVtYmVyKHsgbWF4OiBhcnJheS5sZW5ndGggLSAxIH0pO1xuICAgICAgcmV0dXJuIGFycmF5W3JdO1xuICB9XG5cbiAgLyoqXG4gICAqIHRha2VzIGFuIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmFuZG9tbHkga2V5IG9yIHZhbHVlXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIucmFuZG9tLm9iamVjdEVsZW1lbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge21peGVkfSBmaWVsZFxuICAgKi9cbiAgdGhpcy5vYmplY3RFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCwgZmllbGQpIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdCB8fCB7IFwiZm9vXCI6IFwiYmFyXCIsIFwidG9vXCI6IFwiY2FyXCIgfTtcbiAgICAgIHZhciBhcnJheSA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgICB2YXIga2V5ID0gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChhcnJheSk7XG5cbiAgICAgIHJldHVybiBmaWVsZCA9PT0gXCJrZXlcIiA/IGtleSA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIHV1aWRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20udXVpZFxuICAgKi9cbiAgdGhpcy51dWlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIFJGQzQxMjJfVEVNUExBVEUgPSAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4JztcbiAgICAgIHZhciByZXBsYWNlUGxhY2Vob2xkZXJzID0gZnVuY3Rpb24gKHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgdmFyIHJhbmRvbSA9IHNlbGYubnVtYmVyKHsgbWluOiAwLCBtYXg6IDE1IH0pO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHBsYWNlaG9sZGVyID09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJjB4MyB8IDB4OCk7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gUkZDNDEyMl9URU1QTEFURS5yZXBsYWNlKC9beHldL2csIHJlcGxhY2VQbGFjZWhvbGRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGJvb2xlYW5cbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uYm9vbGVhblxuICAgKi9cbiAgdGhpcy5ib29sZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICEhZmFrZXIucmFuZG9tLm51bWJlcigxKVxuICB9XG5cbiAgLy8gVE9ETzogaGF2ZSBhYmlsaXR5IHRvIHJldHVybiBzcGVjaWZpYyB0eXBlIG9mIHdvcmQ/IEFzIGluOiBub3VuLCBhZGplY3RpdmUsIHZlcmIsIGV0Y1xuICAvKipcbiAgICogd29yZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS53b3JkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLndvcmQgPSBmdW5jdGlvbiByYW5kb21Xb3JkICh0eXBlKSB7XG5cbiAgICB2YXIgd29yZE1ldGhvZHMgPSBbXG4gICAgJ2NvbW1lcmNlLmRlcGFydG1lbnQnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0TmFtZScsXG4gICAgJ2NvbW1lcmNlLnByb2R1Y3RBZGplY3RpdmUnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0TWF0ZXJpYWwnLFxuICAgICdjb21tZXJjZS5wcm9kdWN0JyxcbiAgICAnY29tbWVyY2UuY29sb3InLFxuXG4gICAgJ2NvbXBhbnkuY2F0Y2hQaHJhc2VBZGplY3RpdmUnLFxuICAgICdjb21wYW55LmNhdGNoUGhyYXNlRGVzY3JpcHRvcicsXG4gICAgJ2NvbXBhbnkuY2F0Y2hQaHJhc2VOb3VuJyxcbiAgICAnY29tcGFueS5ic0FkamVjdGl2ZScsXG4gICAgJ2NvbXBhbnkuYnNCdXp6JyxcbiAgICAnY29tcGFueS5ic05vdW4nLFxuICAgICdhZGRyZXNzLnN0cmVldFN1ZmZpeCcsXG4gICAgJ2FkZHJlc3MuY291bnR5JyxcbiAgICAnYWRkcmVzcy5jb3VudHJ5JyxcbiAgICAnYWRkcmVzcy5zdGF0ZScsXG5cbiAgICAnZmluYW5jZS5hY2NvdW50TmFtZScsXG4gICAgJ2ZpbmFuY2UudHJhbnNhY3Rpb25UeXBlJyxcbiAgICAnZmluYW5jZS5jdXJyZW5jeU5hbWUnLFxuXG4gICAgJ2hhY2tlci5ub3VuJyxcbiAgICAnaGFja2VyLnZlcmInLFxuICAgICdoYWNrZXIuYWRqZWN0aXZlJyxcbiAgICAnaGFja2VyLmluZ3ZlcmInLFxuICAgICdoYWNrZXIuYWJicmV2aWF0aW9uJyxcblxuICAgICduYW1lLmpvYkRlc2NyaXB0b3InLFxuICAgICduYW1lLmpvYkFyZWEnLFxuICAgICduYW1lLmpvYlR5cGUnXTtcblxuICAgIC8vIHJhbmRvbWx5IHBpY2sgZnJvbSB0aGUgbWFueSBmYWtlciBtZXRob2RzIHRoYXQgY2FuIGdlbmVyYXRlIHdvcmRzXG4gICAgdmFyIHJhbmRvbVdvcmRNZXRob2QgPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KHdvcmRNZXRob2RzKTtcbiAgICByZXR1cm4gZmFrZXIuZmFrZSgne3snICsgcmFuZG9tV29yZE1ldGhvZCArICd9fScpO1xuXG4gIH1cblxuICAvKipcbiAgICogcmFuZG9tV29yZHNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ud29yZHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IGRlZmF1bHRzIHRvIGEgcmFuZG9tIHZhbHVlIGJldHdlZW4gMSBhbmQgM1xuICAgKi9cbiAgdGhpcy53b3JkcyA9IGZ1bmN0aW9uIHJhbmRvbVdvcmRzIChjb3VudCkge1xuICAgIHZhciB3b3JkcyA9IFtdO1xuICAgIGlmICh0eXBlb2YgY291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvdW50ID0gZmFrZXIucmFuZG9tLm51bWJlcih7bWluOjEsIG1heDogM30pO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaTxjb3VudDsgaSsrKSB7XG4gICAgICB3b3Jkcy5wdXNoKGZha2VyLnJhbmRvbS53b3JkKCkpO1xuICAgIH1cbiAgICByZXR1cm4gd29yZHMuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxvY2FsZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnJhbmRvbS5pbWFnZVxuICAgKi9cbiAgdGhpcy5pbWFnZSA9IGZ1bmN0aW9uIHJhbmRvbUltYWdlICgpIHtcbiAgICByZXR1cm4gZmFrZXIuaW1hZ2UuaW1hZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb2NhbGVcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20ubG9jYWxlXG4gICAqL1xuICB0aGlzLmxvY2FsZSA9IGZ1bmN0aW9uIHJhbmRvbUxvY2FsZSAoKSB7XG4gICAgcmV0dXJuIGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQoT2JqZWN0LmtleXMoZmFrZXIubG9jYWxlcykpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBhbHBoYU51bWVyaWNcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5yYW5kb20uYWxwaGFOdW1lcmljXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBkZWZhdWx0cyB0byAxXG4gICAqL1xuICB0aGlzLmFscGhhTnVtZXJpYyA9IGZ1bmN0aW9uIGFscGhhTnVtZXJpYyhjb3VudCkge1xuICAgIGlmICh0eXBlb2YgY291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvdW50ID0gMTtcbiAgICB9XG5cbiAgICB2YXIgd2hvbGVTdHJpbmcgPSBcIlwiO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICB3aG9sZVN0cmluZyArPSBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KFtcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCJhXCIsIFwiYlwiLCBcImNcIiwgXCJkXCIsIFwiZVwiLCBcImZcIiwgXCJnXCIsIFwiaFwiLCBcImlcIiwgXCJqXCIsIFwia1wiLCBcImxcIiwgXCJtXCIsIFwiblwiLCBcIm9cIiwgXCJwXCIsIFwicVwiLCBcInJcIiwgXCJzXCIsIFwidFwiLCBcInVcIiwgXCJ2XCIsIFwid1wiLCBcInhcIiwgXCJ5XCIsIFwielwiXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdob2xlU3RyaW5nO1xuICB9O1xuXG4gIHJldHVybiB0aGlzO1xuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gUmFuZG9tO1xuIiwiLy8gZ2VuZXJhdGVzIGZha2UgZGF0YSBmb3IgbWFueSBjb21wdXRlciBzeXN0ZW1zIHByb3BlcnRpZXNcblxuLyoqXG4gKlxuICogQG5hbWVzcGFjZSBmYWtlci5zeXN0ZW1cbiAqL1xuZnVuY3Rpb24gU3lzdGVtIChmYWtlcikge1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBmaWxlIG5hbWUgd2l0aCBleHRlbnNpb24gb3Igb3B0aW9uYWwgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLmZpbGVOYW1lID0gZnVuY3Rpb24gKGV4dCwgdHlwZSkge1xuICAgIHZhciBzdHIgPSBmYWtlci5mYWtlKFwie3tyYW5kb20ud29yZHN9fS57e3N5c3RlbS5maWxlRXh0fX1cIik7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyAvZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFwsL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLS9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXFxcL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbW1vbkZpbGVOYW1lXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmNvbW1vbkZpbGVOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICovXG4gIHRoaXMuY29tbW9uRmlsZU5hbWUgPSBmdW5jdGlvbiAoZXh0LCB0eXBlKSB7XG4gICAgdmFyIHN0ciA9IGZha2VyLnJhbmRvbS53b3JkcygpICsgXCIuXCIgKyAoZXh0IHx8IGZha2VyLnN5c3RlbS5jb21tb25GaWxlRXh0KCkpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8gL2csICdfJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcLC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC0vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxcXC9nLCAnXycpO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC8vZywgJ18nKTtcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBtaW1lVHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5taW1lVHlwZVxuICAgKi9cbiAgdGhpcy5taW1lVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChPYmplY3Qua2V5cyhmYWtlci5kZWZpbml0aW9ucy5zeXN0ZW0ubWltZVR5cGVzKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBjb21tb25seSB1c2VkIGZpbGUgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5jb21tb25GaWxlVHlwZVxuICAgKi9cbiAgdGhpcy5jb21tb25GaWxlVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZXMgPSBbJ3ZpZGVvJywgJ2F1ZGlvJywgJ2ltYWdlJywgJ3RleHQnLCAnYXBwbGljYXRpb24nXTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh0eXBlcylcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBhIGNvbW1vbmx5IHVzZWQgZmlsZSBleHRlbnNpb24gYmFzZWQgb24gb3B0aW9uYWwgdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5jb21tb25GaWxlRXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqL1xuICB0aGlzLmNvbW1vbkZpbGVFeHQgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHZhciB0eXBlcyA9IFtcbiAgICAgICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgJ2F1ZGlvL21wZWcnLFxuICAgICAgJ2F1ZGlvL3dhdicsXG4gICAgICAnaW1hZ2UvcG5nJyxcbiAgICAgICdpbWFnZS9qcGVnJyxcbiAgICAgICdpbWFnZS9naWYnLFxuICAgICAgJ3ZpZGVvL21wNCcsXG4gICAgICAndmlkZW8vbXBlZycsXG4gICAgICAndGV4dC9odG1sJ1xuICAgIF07XG4gICAgcmV0dXJuIGZha2VyLnN5c3RlbS5maWxlRXh0KGZha2VyLnJhbmRvbS5hcnJheUVsZW1lbnQodHlwZXMpKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGFueSBmaWxlIHR5cGUgYXZhaWxhYmxlIGFzIG1pbWUtdHlwZVxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5maWxlVHlwZVxuICAgKi9cbiAgdGhpcy5maWxlVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZXMgPSBbXTtcbiAgICB2YXIgbWltZXMgPSBmYWtlci5kZWZpbml0aW9ucy5zeXN0ZW0ubWltZVR5cGVzO1xuICAgIE9iamVjdC5rZXlzKG1pbWVzKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe1xuICAgICAgdmFyIHBhcnRzID0gbS5zcGxpdCgnLycpO1xuICAgICAgaWYgKHR5cGVzLmluZGV4T2YocGFydHNbMF0pID09PSAtMSkge1xuICAgICAgICB0eXBlcy5wdXNoKHBhcnRzWzBdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudCh0eXBlcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZpbGVFeHRcbiAgICpcbiAgICogQG1ldGhvZCBmYWtlci5zeXN0ZW0uZmlsZUV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGVcbiAgICovXG4gIHRoaXMuZmlsZUV4dCA9IGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIHZhciBleHRzID0gW107XG4gICAgdmFyIG1pbWVzID0gZmFrZXIuZGVmaW5pdGlvbnMuc3lzdGVtLm1pbWVUeXBlcztcblxuICAgIC8vIGdldCBzcGVjaWZpYyBleHQgYnkgbWltZS10eXBlXG4gICAgaWYgKHR5cGVvZiBtaW1lc1ttaW1lVHlwZV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBmYWtlci5yYW5kb20uYXJyYXlFbGVtZW50KG1pbWVzW21pbWVUeXBlXS5leHRlbnNpb25zKTtcbiAgICB9XG5cbiAgICAvLyByZWR1Y2UgbWltZS10eXBlcyB0byB0aG9zZSB3aXRoIGZpbGUtZXh0ZW5zaW9uc1xuICAgIE9iamVjdC5rZXlzKG1pbWVzKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe1xuICAgICAgaWYgKG1pbWVzW21dLmV4dGVuc2lvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBtaW1lc1ttXS5leHRlbnNpb25zLmZvckVhY2goZnVuY3Rpb24oZXh0KXtcbiAgICAgICAgICBleHRzLnB1c2goZXh0KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmFrZXIucmFuZG9tLmFycmF5RWxlbWVudChleHRzKTtcbiAgfTtcblxuICAvKipcbiAgICogbm90IHlldCBpbXBsZW1lbnRlZFxuICAgKlxuICAgKiBAbWV0aG9kIGZha2VyLnN5c3RlbS5kaXJlY3RvcnlQYXRoXG4gICAqL1xuICB0aGlzLmRpcmVjdG9yeVBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gVE9ET1xuICB9O1xuXG4gIC8qKlxuICAgKiBub3QgeWV0IGltcGxlbWVudGVkXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLmZpbGVQYXRoXG4gICAqL1xuICB0aGlzLmZpbGVQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE9cbiAgfTtcblxuICAvKipcbiAgICogc2VtdmVyXG4gICAqXG4gICAqIEBtZXRob2QgZmFrZXIuc3lzdGVtLnNlbXZlclxuICAgKi9cbiAgdGhpcy5zZW12ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gW2Zha2VyLnJhbmRvbS5udW1iZXIoOSksXG4gICAgICAgICAgICAgIGZha2VyLnJhbmRvbS5udW1iZXIoOSksXG4gICAgICAgICAgICAgIGZha2VyLnJhbmRvbS5udW1iZXIoOSldLmpvaW4oJy4nKTtcbiAgfVxuXG59XG5cbm1vZHVsZVsnZXhwb3J0cyddID0gU3lzdGVtO1xuIiwidmFyIEZha2VyID0gcmVxdWlyZSgnLi4vbGliJyk7XG52YXIgZmFrZXIgPSBuZXcgRmFrZXIoeyBsb2NhbGU6ICdlbl9VUycsIGxvY2FsZUZhbGxiYWNrOiAnZW4nIH0pO1xuZmFrZXIubG9jYWxlc1snZW5fVVMnXSA9IHJlcXVpcmUoJy4uL2xpYi9sb2NhbGVzL2VuX1VTJyk7XG5mYWtlci5sb2NhbGVzWydlbiddID0gcmVxdWlyZSgnLi4vbGliL2xvY2FsZXMvZW4nKTtcbm1vZHVsZVsnZXhwb3J0cyddID0gZmFrZXI7XG4iLCIvLyB0aGlzIHByb2dyYW0gaXMgYSBKYXZhU2NyaXB0IHZlcnNpb24gb2YgTWVyc2VubmUgVHdpc3Rlciwgd2l0aCBjb25jZWFsbWVudCBhbmQgZW5jYXBzdWxhdGlvbiBpbiBjbGFzcyxcbi8vIGFuIGFsbW9zdCBzdHJhaWdodCBjb252ZXJzaW9uIGZyb20gdGhlIG9yaWdpbmFsIHByb2dyYW0sIG10MTk5Mzdhci5jLFxuLy8gdHJhbnNsYXRlZCBieSB5LiBva2FkYSBvbiBKdWx5IDE3LCAyMDA2LlxuLy8gYW5kIG1vZGlmaWVkIGEgbGl0dGxlIGF0IGp1bHkgMjAsIDIwMDYsIGJ1dCB0aGVyZSBhcmUgbm90IGFueSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlcy5cbi8vIGluIHRoaXMgcHJvZ3JhbSwgcHJvY2VkdXJlIGRlc2NyaXB0aW9ucyBhbmQgY29tbWVudHMgb2Ygb3JpZ2luYWwgc291cmNlIGNvZGUgd2VyZSBub3QgcmVtb3ZlZC5cbi8vIGxpbmVzIGNvbW1lbnRlZCB3aXRoIC8vYy8vIHdlcmUgb3JpZ2luYWxseSBkZXNjcmlwdGlvbnMgb2YgYyBwcm9jZWR1cmUuIGFuZCBhIGZldyBmb2xsb3dpbmcgbGluZXMgYXJlIGFwcHJvcHJpYXRlIEphdmFTY3JpcHQgZGVzY3JpcHRpb25zLlxuLy8gbGluZXMgY29tbWVudGVkIHdpdGggLyogYW5kICovIGFyZSBvcmlnaW5hbCBjb21tZW50cy5cbi8vIGxpbmVzIGNvbW1lbnRlZCB3aXRoIC8vIGFyZSBhZGRpdGlvbmFsIGNvbW1lbnRzIGluIHRoaXMgSmF2YVNjcmlwdCB2ZXJzaW9uLlxuLy8gYmVmb3JlIHVzaW5nIHRoaXMgdmVyc2lvbiwgY3JlYXRlIGF0IGxlYXN0IG9uZSBpbnN0YW5jZSBvZiBNZXJzZW5uZVR3aXN0ZXIxOTkzNyBjbGFzcywgYW5kIGluaXRpYWxpemUgdGhlIGVhY2ggc3RhdGUsIGdpdmVuIGJlbG93IGluIGMgY29tbWVudHMsIG9mIGFsbCB0aGUgaW5zdGFuY2VzLlxuLypcbiAgIEEgQy1wcm9ncmFtIGZvciBNVDE5OTM3LCB3aXRoIGluaXRpYWxpemF0aW9uIGltcHJvdmVkIDIwMDIvMS8yNi5cbiAgIENvZGVkIGJ5IFRha3VqaSBOaXNoaW11cmEgYW5kIE1ha290byBNYXRzdW1vdG8uXG5cbiAgIEJlZm9yZSB1c2luZywgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgYnkgdXNpbmcgaW5pdF9nZW5yYW5kKHNlZWQpXG4gICBvciBpbml0X2J5X2FycmF5KGluaXRfa2V5LCBrZXlfbGVuZ3RoKS5cblxuICAgQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAwMiwgTWFrb3RvIE1hdHN1bW90byBhbmQgVGFrdWppIE5pc2hpbXVyYSxcbiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICBhcmUgbWV0OlxuXG4gICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAgMy4gVGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZVxuICAgICAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW5cbiAgICAgICAgcGVybWlzc2lvbi5cblxuICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICAgXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1JcbiAgIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLFxuICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cblxuXG4gICBBbnkgZmVlZGJhY2sgaXMgdmVyeSB3ZWxjb21lLlxuICAgaHR0cDovL3d3dy5tYXRoLnNjaS5oaXJvc2hpbWEtdS5hYy5qcC9+bS1tYXQvTVQvZW10Lmh0bWxcbiAgIGVtYWlsOiBtLW1hdCBAIG1hdGguc2NpLmhpcm9zaGltYS11LmFjLmpwIChyZW1vdmUgc3BhY2UpXG4qL1xuXG5mdW5jdGlvbiBNZXJzZW5uZVR3aXN0ZXIxOTkzNygpXG57XG5cdC8qIGNvbnN0YW50cyBzaG91bGQgYmUgc2NvcGVkIGluc2lkZSB0aGUgY2xhc3MgKi9cblx0dmFyIE4sIE0sIE1BVFJJWF9BLCBVUFBFUl9NQVNLLCBMT1dFUl9NQVNLO1xuXHQvKiBQZXJpb2QgcGFyYW1ldGVycyAqL1xuXHQvL2MvLyNkZWZpbmUgTiA2MjRcblx0Ly9jLy8jZGVmaW5lIE0gMzk3XG5cdC8vYy8vI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqL1xuXHQvL2MvLyNkZWZpbmUgVVBQRVJfTUFTSyAweDgwMDAwMDAwVUwgLyogbW9zdCBzaWduaWZpY2FudCB3LXIgYml0cyAqL1xuXHQvL2MvLyNkZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZmZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovXG5cdE4gPSA2MjQ7XG5cdE0gPSAzOTc7XG5cdE1BVFJJWF9BID0gMHg5OTA4YjBkZjsgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqL1xuXHRVUFBFUl9NQVNLID0gMHg4MDAwMDAwMDsgLyogbW9zdCBzaWduaWZpY2FudCB3LXIgYml0cyAqL1xuXHRMT1dFUl9NQVNLID0gMHg3ZmZmZmZmZjsgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovXG5cdC8vYy8vc3RhdGljIHVuc2lnbmVkIGxvbmcgbXRbTl07IC8qIHRoZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZlY3RvciAgKi9cblx0Ly9jLy9zdGF0aWMgaW50IG10aT1OKzE7IC8qIG10aT09TisxIG1lYW5zIG10W05dIGlzIG5vdCBpbml0aWFsaXplZCAqL1xuXHR2YXIgbXQgPSBuZXcgQXJyYXkoTik7ICAgLyogdGhlIGFycmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqL1xuXHR2YXIgbXRpID0gTisxOyAgICAgICAgICAgLyogbXRpPT1OKzEgbWVhbnMgbXRbTl0gaXMgbm90IGluaXRpYWxpemVkICovXG5cblx0ZnVuY3Rpb24gdW5zaWduZWQzMiAobjEpIC8vIHJldHVybnMgYSAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciBmcm9tIGFuIG9wZXJhbmQgdG8gd2hpY2ggYXBwbGllZCBhIGJpdCBvcGVyYXRvci5cblx0e1xuXHRcdHJldHVybiBuMSA8IDAgPyAobjEgXiBVUFBFUl9NQVNLKSArIFVQUEVSX01BU0sgOiBuMTtcblx0fVxuXG5cdGZ1bmN0aW9uIHN1YnRyYWN0aW9uMzIgKG4xLCBuMikgLy8gZW11bGF0ZXMgbG93ZXJmbG93IG9mIGEgYyAzMi1iaXRzIHVuc2lnZWQgaW50ZWdlciB2YXJpYWJsZSwgaW5zdGVhZCBvZiB0aGUgb3BlcmF0b3IgLS4gdGhlc2UgYm90aCBhcmd1bWVudHMgbXVzdCBiZSBub24tbmVnYXRpdmUgaW50ZWdlcnMgZXhwcmVzc2libGUgdXNpbmcgdW5zaWduZWQgMzIgYml0cy5cblx0e1xuXHRcdHJldHVybiBuMSA8IG4yID8gdW5zaWduZWQzMigoMHgxMDAwMDAwMDAgLSAobjIgLSBuMSkpICYgMHhmZmZmZmZmZikgOiBuMSAtIG4yO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkaXRpb24zMiAobjEsIG4yKSAvLyBlbXVsYXRlcyBvdmVyZmxvdyBvZiBhIGMgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgdmFyaWFibGUsIGluc3RlYWQgb2YgdGhlIG9wZXJhdG9yICsuIHRoZXNlIGJvdGggYXJndW1lbnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGV4cHJlc3NpYmxlIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMuXG5cdHtcblx0XHRyZXR1cm4gdW5zaWduZWQzMigobjEgKyBuMikgJiAweGZmZmZmZmZmKVxuXHR9XG5cblx0ZnVuY3Rpb24gbXVsdGlwbGljYXRpb24zMiAobjEsIG4yKSAvLyBlbXVsYXRlcyBvdmVyZmxvdyBvZiBhIGMgMzItYml0cyB1bnNpZ2VkIGludGVnZXIgdmFyaWFibGUsIGluc3RlYWQgb2YgdGhlIG9wZXJhdG9yICouIHRoZXNlIGJvdGggYXJndW1lbnRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGV4cHJlc3NpYmxlIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMuXG5cdHtcblx0XHR2YXIgc3VtID0gMDtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDMyOyArK2kpe1xuXHRcdFx0aWYgKChuMSA+Pj4gaSkgJiAweDEpe1xuXHRcdFx0XHRzdW0gPSBhZGRpdGlvbjMyKHN1bSwgdW5zaWduZWQzMihuMiA8PCBpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdW07XG5cdH1cblxuXHQvKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEgc2VlZCAqL1xuXHQvL2MvL3ZvaWQgaW5pdF9nZW5yYW5kKHVuc2lnbmVkIGxvbmcgcylcblx0dGhpcy5pbml0X2dlbnJhbmQgPSBmdW5jdGlvbiAocylcblx0e1xuXHRcdC8vYy8vbXRbMF09IHMgJiAweGZmZmZmZmZmO1xuXHRcdG10WzBdPSB1bnNpZ25lZDMyKHMgJiAweGZmZmZmZmZmKTtcblx0XHRmb3IgKG10aT0xOyBtdGk8TjsgbXRpKyspIHtcblx0XHRcdG10W210aV0gPVxuXHRcdFx0Ly9jLy8oMTgxMjQzMzI1MyAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkpO1xuXHRcdFx0YWRkaXRpb24zMihtdWx0aXBsaWNhdGlvbjMyKDE4MTI0MzMyNTMsIHVuc2lnbmVkMzIobXRbbXRpLTFdIF4gKG10W210aS0xXSA+Pj4gMzApKSksIG10aSk7XG5cdFx0XHQvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVsdGlwbGllci4gKi9cblx0XHRcdC8qIEluIHRoZSBwcmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAqL1xuXHRcdFx0Lyogb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtdLiAgICAgICAgICAgICAgICAgICAgICAgICovXG5cdFx0XHQvKiAyMDAyLzAxLzA5IG1vZGlmaWVkIGJ5IE1ha290byBNYXRzdW1vdG8gICAgICAgICAgICAgKi9cblx0XHRcdC8vYy8vbXRbbXRpXSAmPSAweGZmZmZmZmZmO1xuXHRcdFx0bXRbbXRpXSA9IHVuc2lnbmVkMzIobXRbbXRpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0LyogZm9yID4zMiBiaXQgbWFjaGluZXMgKi9cblx0XHR9XG5cdH1cblxuXHQvKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICovXG5cdC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi9cblx0Lyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovXG5cdC8qIHNsaWdodCBjaGFuZ2UgZm9yIEMrKywgMjAwNC8yLzI2ICovXG5cdC8vYy8vdm9pZCBpbml0X2J5X2FycmF5KHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSwgaW50IGtleV9sZW5ndGgpXG5cdHRoaXMuaW5pdF9ieV9hcnJheSA9IGZ1bmN0aW9uIChpbml0X2tleSwga2V5X2xlbmd0aClcblx0e1xuXHRcdC8vYy8vaW50IGksIGosIGs7XG5cdFx0dmFyIGksIGosIGs7XG5cdFx0Ly9jLy9pbml0X2dlbnJhbmQoMTk2NTAyMTgpO1xuXHRcdHRoaXMuaW5pdF9nZW5yYW5kKDE5NjUwMjE4KTtcblx0XHRpPTE7IGo9MDtcblx0XHRrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTtcblx0XHRmb3IgKDsgazsgay0tKSB7XG5cdFx0XHQvL2MvL210W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjUpKVxuXHRcdFx0Ly9jLy9cdCsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICovXG5cdFx0XHRtdFtpXSA9IGFkZGl0aW9uMzIoYWRkaXRpb24zMih1bnNpZ25lZDMyKG10W2ldIF4gbXVsdGlwbGljYXRpb24zMih1bnNpZ25lZDMyKG10W2ktMV0gXiAobXRbaS0xXSA+Pj4gMzApKSwgMTY2NDUyNSkpLCBpbml0X2tleVtqXSksIGopO1xuXHRcdFx0bXRbaV0gPVxuXHRcdFx0Ly9jLy9tdFtpXSAmPSAweGZmZmZmZmZmOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqL1xuXHRcdFx0dW5zaWduZWQzMihtdFtpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0aSsrOyBqKys7XG5cdFx0XHRpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfVxuXHRcdFx0aWYgKGo+PWtleV9sZW5ndGgpIGo9MDtcblx0XHR9XG5cdFx0Zm9yIChrPU4tMTsgazsgay0tKSB7XG5cdFx0XHQvL2MvL210W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE1NjYwODM5NDEpKVxuXHRcdFx0Ly9jLy8tIGk7IC8qIG5vbiBsaW5lYXIgKi9cblx0XHRcdG10W2ldID0gc3VidHJhY3Rpb24zMih1bnNpZ25lZDMyKChkYmc9bXRbaV0pIF4gbXVsdGlwbGljYXRpb24zMih1bnNpZ25lZDMyKG10W2ktMV0gXiAobXRbaS0xXSA+Pj4gMzApKSwgMTU2NjA4Mzk0MSkpLCBpKTtcblx0XHRcdC8vYy8vbXRbaV0gJj0gMHhmZmZmZmZmZjsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi9cblx0XHRcdG10W2ldID0gdW5zaWduZWQzMihtdFtpXSAmIDB4ZmZmZmZmZmYpO1xuXHRcdFx0aSsrO1xuXHRcdFx0aWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH1cblx0XHR9XG5cdFx0bXRbMF0gPSAweDgwMDAwMDAwOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqL1xuXHR9XG5cbiAgICAvKiBtb3ZlZCBvdXRzaWRlIG9mIGdlbnJhbmRfaW50MzIoKSBieSBqd2F0dGUgMjAxMC0xMS0xNzsgZ2VuZXJhdGUgbGVzcyBnYXJiYWdlICovXG4gICAgdmFyIG1hZzAxID0gWzB4MCwgTUFUUklYX0FdO1xuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50ZXJ2YWwgKi9cblx0Ly9jLy91bnNpZ25lZCBsb25nIGdlbnJhbmRfaW50MzIodm9pZClcblx0dGhpcy5nZW5yYW5kX2ludDMyID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vdW5zaWduZWQgbG9uZyB5O1xuXHRcdC8vYy8vc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07XG5cdFx0dmFyIHk7XG5cdFx0LyogbWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqL1xuXG5cdFx0aWYgKG10aSA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi9cblx0XHRcdC8vYy8vaW50IGtrO1xuXHRcdFx0dmFyIGtrO1xuXG5cdFx0XHRpZiAobXRpID09IE4rMSkgICAvKiBpZiBpbml0X2dlbnJhbmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqL1xuXHRcdFx0XHQvL2MvL2luaXRfZ2VucmFuZCg1NDg5KTsgLyogYSBkZWZhdWx0IGluaXRpYWwgc2VlZCBpcyB1c2VkICovXG5cdFx0XHRcdHRoaXMuaW5pdF9nZW5yYW5kKDU0ODkpOyAvKiBhIGRlZmF1bHQgaW5pdGlhbCBzZWVkIGlzIHVzZWQgKi9cblxuXHRcdFx0Zm9yIChraz0wO2trPE4tTTtraysrKSB7XG5cdFx0XHRcdC8vYy8veSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spO1xuXHRcdFx0XHQvL2MvL210W2trXSA9IG10W2trK01dIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxXTtcblx0XHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSykpO1xuXHRcdFx0XHRtdFtra10gPSB1bnNpZ25lZDMyKG10W2trK01dIF4gKHkgPj4+IDEpIF4gbWFnMDFbeSAmIDB4MV0pO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICg7a2s8Ti0xO2trKyspIHtcblx0XHRcdFx0Ly9jLy95ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7XG5cdFx0XHRcdC8vYy8vbXRba2tdID0gbXRba2srKE0tTildIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxXTtcblx0XHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSykpO1xuXHRcdFx0XHRtdFtra10gPSB1bnNpZ25lZDMyKG10W2trKyhNLU4pXSBeICh5ID4+PiAxKSBeIG1hZzAxW3kgJiAweDFdKTtcblx0XHRcdH1cblx0XHRcdC8vYy8veSA9IChtdFtOLTFdJlVQUEVSX01BU0spfChtdFswXSZMT1dFUl9NQVNLKTtcblx0XHRcdC8vYy8vbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFdO1xuXHRcdFx0eSA9IHVuc2lnbmVkMzIoKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spKTtcblx0XHRcdG10W04tMV0gPSB1bnNpZ25lZDMyKG10W00tMV0gXiAoeSA+Pj4gMSkgXiBtYWcwMVt5ICYgMHgxXSk7XG5cdFx0XHRtdGkgPSAwO1xuXHRcdH1cblxuXHRcdHkgPSBtdFttdGkrK107XG5cblx0XHQvKiBUZW1wZXJpbmcgKi9cblx0XHQvL2MvL3kgXj0gKHkgPj4gMTEpO1xuXHRcdC8vYy8veSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODA7XG5cdFx0Ly9jLy95IF49ICh5IDw8IDE1KSAmIDB4ZWZjNjAwMDA7XG5cdFx0Ly9jLy95IF49ICh5ID4+IDE4KTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKHkgPj4+IDExKSk7XG5cdFx0eSA9IHVuc2lnbmVkMzIoeSBeICgoeSA8PCA3KSAmIDB4OWQyYzU2ODApKTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKCh5IDw8IDE1KSAmIDB4ZWZjNjAwMDApKTtcblx0XHR5ID0gdW5zaWduZWQzMih5IF4gKHkgPj4+IDE4KSk7XG5cblx0XHRyZXR1cm4geTtcblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHg3ZmZmZmZmZl0taW50ZXJ2YWwgKi9cblx0Ly9jLy9sb25nIGdlbnJhbmRfaW50MzEodm9pZClcblx0dGhpcy5nZW5yYW5kX2ludDMxID0gZnVuY3Rpb24gKClcblx0e1xuXHRcdC8vYy8vcmV0dXJuIChnZW5yYW5kX2ludDMyKCk+PjEpO1xuXHRcdHJldHVybiAodGhpcy5nZW5yYW5kX2ludDMyKCk+Pj4xKTtcblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMV0tcmVhbC1pbnRlcnZhbCAqL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlYWwxKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZWFsMSA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApO1xuXHRcdHJldHVybiB0aGlzLmdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTUuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyLTEgKi9cblx0fVxuXG5cdC8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlYWwyKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZWFsMiA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3JldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApO1xuXHRcdHJldHVybiB0aGlzLmdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyICovXG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uICgwLDEpLXJlYWwtaW50ZXJ2YWwgKi9cblx0Ly9jLy9kb3VibGUgZ2VucmFuZF9yZWFsMyh2b2lkKVxuXHR0aGlzLmdlbnJhbmRfcmVhbDMgPSBmdW5jdGlvbiAoKVxuXHR7XG5cdFx0Ly9jLy9yZXR1cm4gKChnZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0cmV0dXJuICgodGhpcy5nZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7XG5cdFx0LyogZGl2aWRlZCBieSAyXjMyICovXG5cdH1cblxuXHQvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDEpIHdpdGggNTMtYml0IHJlc29sdXRpb24qL1xuXHQvL2MvL2RvdWJsZSBnZW5yYW5kX3JlczUzKHZvaWQpXG5cdHRoaXMuZ2VucmFuZF9yZXM1MyA9IGZ1bmN0aW9uICgpXG5cdHtcblx0XHQvL2MvL3Vuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKCk+PjUsIGI9Z2VucmFuZF9pbnQzMigpPj42O1xuXHRcdHZhciBhPXRoaXMuZ2VucmFuZF9pbnQzMigpPj4+NSwgYj10aGlzLmdlbnJhbmRfaW50MzIoKT4+PjY7XG5cdFx0cmV0dXJuKGEqNjcxMDg4NjQuMCtiKSooMS4wLzkwMDcxOTkyNTQ3NDA5OTIuMCk7XG5cdH1cblx0LyogVGhlc2UgcmVhbCB2ZXJzaW9ucyBhcmUgZHVlIHRvIElzYWt1IFdhZGEsIDIwMDIvMDEvMDkgYWRkZWQgKi9cbn1cblxuLy8gIEV4cG9ydHM6IFB1YmxpYyBBUElcblxuLy8gIEV4cG9ydCB0aGUgdHdpc3RlciBjbGFzc1xuZXhwb3J0cy5NZXJzZW5uZVR3aXN0ZXIxOTkzNyA9IE1lcnNlbm5lVHdpc3RlcjE5OTM3O1xuXG4vLyAgRXhwb3J0IGEgc2ltcGxpZmllZCBmdW5jdGlvbiB0byBnZW5lcmF0ZSByYW5kb20gbnVtYmVyc1xudmFyIGdlbiA9IG5ldyBNZXJzZW5uZVR3aXN0ZXIxOTkzNztcbmdlbi5pbml0X2dlbnJhbmQoKG5ldyBEYXRlKS5nZXRUaW1lKCkgJSAxMDAwMDAwMDAwKTtcblxuLy8gQWRkZWQgbWF4LCBtaW4gcmFuZ2UgZnVuY3Rpb25hbGl0eSwgTWFyYWsgU3F1aXJlcyBTZXB0IDExIDIwMTRcbmV4cG9ydHMucmFuZCA9IGZ1bmN0aW9uKG1heCwgbWluKSB7XG4gICAgaWYgKG1heCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgIG1pbiA9IDA7XG4gICAgICAgIG1heCA9IDMyNzY4O1xuICAgICAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZ2VuLmdlbnJhbmRfcmVhbDIoKSAqIChtYXggLSBtaW4pICsgbWluKTtcbn1cbmV4cG9ydHMuc2VlZCA9IGZ1bmN0aW9uKFMpIHtcbiAgICBpZiAodHlwZW9mKFMpICE9ICdudW1iZXInKVxuICAgICAgICB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNlZWQoUykgbXVzdCB0YWtlIG51bWVyaWMgYXJndW1lbnQ7IGlzIFwiICsgdHlwZW9mKFMpKTtcbiAgICAgICAgfVxuICAgIGdlbi5pbml0X2dlbnJhbmQoUyk7XG59XG5leHBvcnRzLnNlZWRfYXJyYXkgPSBmdW5jdGlvbihBKSB7XG4gICAgaWYgKHR5cGVvZihBKSAhPSAnb2JqZWN0JylcbiAgICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZWVkX2FycmF5KEEpIG11c3QgdGFrZSBhcnJheSBvZiBudW1iZXJzOyBpcyBcIiArIHR5cGVvZihBKSk7XG4gICAgICAgIH1cbiAgICBnZW4uaW5pdF9ieV9hcnJheShBKTtcbn1cbiIsIi8qXG5cbkNvcHlyaWdodCAoYykgMjAxMi0yMDE0IEplZmZyZXkgTWVhbG9cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkXG5kb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxudGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZFxudG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGVcblNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG5XQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbkNPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbk9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkJhc2VkIGxvb3NlbHkgb24gTHVrYSBQdXNpYydzIFBIUCBTY3JpcHQ6IGh0dHA6Ly8zNjBwZXJjZW50cy5jb20vcG9zdHMvcGhwLXJhbmRvbS11c2VyLWFnZW50LWdlbmVyYXRvci9cblxuVGhlIGxpY2Vuc2UgZm9yIHRoYXQgc2NyaXB0IGlzIGFzIGZvbGxvd3M6XG5cblwiVEhFIEJFRVItV0FSRSBMSUNFTlNFXCIgKFJldmlzaW9uIDQyKTpcblxuPHB1c2ljOTNAZ21haWwuY29tPiB3cm90ZSB0aGlzIGZpbGUuIEFzIGxvbmcgYXMgeW91IHJldGFpbiB0aGlzIG5vdGljZSB5b3UgY2FuIGRvIHdoYXRldmVyIHlvdSB3YW50IHdpdGggdGhpcyBzdHVmZi5cbklmIHdlIG1lZXQgc29tZSBkYXksIGFuZCB5b3UgdGhpbmsgdGhpcyBzdHVmZiBpcyB3b3J0aCBpdCwgeW91IGNhbiBidXkgbWUgYSBiZWVyIGluIHJldHVybi4gTHVrYSBQdXNpY1xuKi9cblxuZnVuY3Rpb24gcm5kKGEsIGIpIHtcbiAgICAvL2NhbGxpbmcgcm5kKCkgd2l0aCBubyBhcmd1bWVudHMgaXMgaWRlbnRpY2FsIHRvIHJuZCgwLCAxMDApXG4gICAgYSA9IGEgfHwgMDtcbiAgICBiID0gYiB8fCAxMDA7XG5cbiAgICBpZiAodHlwZW9mIGIgPT09ICdudW1iZXInICYmIHR5cGVvZiBhID09PSAnbnVtYmVyJykge1xuICAgICAgICAvL3JuZChpbnQgbWluLCBpbnQgbWF4KSByZXR1cm5zIGludGVnZXIgYmV0d2VlbiBtaW4sIG1heFxuICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIChtaW4sIG1heCkge1xuICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBlY3RlZCBtaW4gPD0gbWF4OyBnb3QgbWluID0gJyArIG1pbiArICcsIG1heCA9ICcgKyBtYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG4gICAgICAgIH0oYSwgYikpO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkgPT09IFwiW29iamVjdCBBcnJheV1cIikge1xuICAgICAgICAvL3JldHVybnMgYSByYW5kb20gZWxlbWVudCBmcm9tIGFycmF5IChhKSwgZXZlbiB3ZWlnaHRpbmdcbiAgICAgICAgcmV0dXJuIGFbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYS5sZW5ndGgpXTtcbiAgICB9XG5cbiAgICBpZiAoYSAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy9yZXR1cm5zIGEgcmFuZG9tIGtleSBmcm9tIHRoZSBwYXNzZWQgb2JqZWN0OyBrZXlzIGFyZSB3ZWlnaHRlZCBieSB0aGUgZGVjaW1hbCBwcm9iYWJpbGl0eSBpbiB0aGVpciB2YWx1ZVxuICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciByYW5kID0gcm5kKDAsIDEwMCkgLyAxMDAsIG1pbiA9IDAsIG1heCA9IDAsIGtleSwgcmV0dXJuX3ZhbDtcblxuICAgICAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heCA9IG9ialtrZXldICsgbWluO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFuZCA+PSBtaW4gJiYgcmFuZCA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IG1pbiArIG9ialtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJldHVybl92YWw7XG4gICAgICAgIH0oYSkpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBybmQuICgnICsgKGIgPyBhICsgJywgJyArIGIgOiBhKSArICcpJyk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbUxhbmcoKSB7XG4gICAgcmV0dXJuIHJuZChbJ0FCJywgJ0FGJywgJ0FOJywgJ0FSJywgJ0FTJywgJ0FaJywgJ0JFJywgJ0JHJywgJ0JOJywgJ0JPJywgJ0JSJywgJ0JTJywgJ0NBJywgJ0NFJywgJ0NPJywgJ0NTJyxcbiAgICAgICAgICAgICAgICAnQ1UnLCAnQ1knLCAnREEnLCAnREUnLCAnRUwnLCAnRU4nLCAnRU8nLCAnRVMnLCAnRVQnLCAnRVUnLCAnRkEnLCAnRkknLCAnRkonLCAnRk8nLCAnRlInLCAnRlknLFxuICAgICAgICAgICAgICAgICdHQScsICdHRCcsICdHTCcsICdHVicsICdIRScsICdISScsICdIUicsICdIVCcsICdIVScsICdIWScsICdJRCcsICdJUycsICdJVCcsICdKQScsICdKVicsICdLQScsXG4gICAgICAgICAgICAgICAgJ0tHJywgJ0tPJywgJ0tVJywgJ0tXJywgJ0tZJywgJ0xBJywgJ0xCJywgJ0xJJywgJ0xOJywgJ0xUJywgJ0xWJywgJ01HJywgJ01LJywgJ01OJywgJ01PJywgJ01TJyxcbiAgICAgICAgICAgICAgICAnTVQnLCAnTVknLCAnTkInLCAnTkUnLCAnTkwnLCAnTk4nLCAnTk8nLCAnT0MnLCAnUEwnLCAnUFQnLCAnUk0nLCAnUk8nLCAnUlUnLCAnU0MnLCAnU0UnLCAnU0snLFxuICAgICAgICAgICAgICAgICdTTCcsICdTTycsICdTUScsICdTUicsICdTVicsICdTVycsICdUSycsICdUUicsICdUWScsICdVSycsICdVUicsICdVWicsICdWSScsICdWTycsICdZSScsICdaSCddKTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnJvd3NlckFuZE9TKCkge1xuICAgIHZhciBicm93c2VyID0gcm5kKHtcbiAgICAgICAgY2hyb21lOiAgICAuNDUxMzI4MTA1NjYsXG4gICAgICAgIGlleHBsb3JlcjogLjI3NDc3MDYxODM2LFxuICAgICAgICBmaXJlZm94OiAgIC4xOTM4NDE3MDYwOCxcbiAgICAgICAgc2FmYXJpOiAgICAuMDYxODY3ODExMTgsXG4gICAgICAgIG9wZXJhOiAgICAgLjAxNTc0MjM2OTU1XG4gICAgfSksXG4gICAgb3MgPSB7XG4gICAgICAgIGNocm9tZTogIHt3aW46IC44OSwgIG1hYzogLjA5ICwgbGluOiAuMDJ9LFxuICAgICAgICBmaXJlZm94OiB7d2luOiAuODMsICBtYWM6IC4xNiwgIGxpbjogLjAxfSxcbiAgICAgICAgb3BlcmE6ICAge3dpbjogLjkxLCAgbWFjOiAuMDMgLCBsaW46IC4wNn0sXG4gICAgICAgIHNhZmFyaTogIHt3aW46IC4wNCAsIG1hYzogLjk2ICB9LFxuICAgICAgICBpZXhwbG9yZXI6IFsnd2luJ11cbiAgICB9O1xuXG4gICAgcmV0dXJuIFticm93c2VyLCBybmQob3NbYnJvd3Nlcl0pXTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tUHJvYyhhcmNoKSB7XG4gICAgdmFyIHByb2NzID0ge1xuICAgICAgICBsaW46WydpNjg2JywgJ3g4Nl82NCddLFxuICAgICAgICBtYWM6IHsnSW50ZWwnIDogLjQ4LCAnUFBDJzogLjAxLCAnVTsgSW50ZWwnOi40OCwgJ1U7IFBQQycgOi4wMX0sXG4gICAgICAgIHdpbjpbJycsICdXT1c2NCcsICdXaW42NDsgeDY0J11cbiAgICB9O1xuICAgIHJldHVybiBybmQocHJvY3NbYXJjaF0pO1xufVxuXG5mdW5jdGlvbiByYW5kb21SZXZpc2lvbihkb3RzKSB7XG4gICAgdmFyIHJldHVybl92YWwgPSAnJztcbiAgICAvL2dlbmVyYXRlIGEgcmFuZG9tIHJldmlzaW9uXG4gICAgLy9kb3RzID0gMiByZXR1cm5zIC54Lnkgd2hlcmUgeCAmIHkgYXJlIGJldHdlZW4gMCBhbmQgOVxuICAgIGZvciAodmFyIHggPSAwOyB4IDwgZG90czsgeCsrKSB7XG4gICAgICAgIHJldHVybl92YWwgKz0gJy4nICsgcm5kKDAsIDkpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuX3ZhbDtcbn1cblxudmFyIHZlcnNpb25fc3RyaW5nID0ge1xuICAgIG5ldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3JuZCgxLCA0KSwgcm5kKDAsIDkpLCBybmQoMTAwMDAsIDk5OTk5KSwgcm5kKDAsIDkpXS5qb2luKCcuJyk7XG4gICAgfSxcbiAgICBudDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcm5kKDUsIDYpICsgJy4nICsgcm5kKDAsIDMpO1xuICAgIH0sXG4gICAgaWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJuZCg3LCAxMSk7XG4gICAgfSxcbiAgICB0cmlkZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoMywgNykgKyAnLicgKyBybmQoMCwgMSk7XG4gICAgfSxcbiAgICBvc3g6IGZ1bmN0aW9uIChkZWxpbSkge1xuICAgICAgICByZXR1cm4gWzEwLCBybmQoNSwgMTApLCBybmQoMCwgOSldLmpvaW4oZGVsaW0gfHwgJy4nKTtcbiAgICB9LFxuICAgIGNocm9tZTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3JuZCgxMywgMzkpLCAwLCBybmQoODAwLCA4OTkpLCAwXS5qb2luKCcuJyk7XG4gICAgfSxcbiAgICBwcmVzdG86IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcyLjkuJyArIHJuZCgxNjAsIDE5MCk7XG4gICAgfSxcbiAgICBwcmVzdG8yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoMTAsIDEyKSArICcuMDAnO1xuICAgIH0sXG4gICAgc2FmYXJpOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBybmQoNTMxLCA1MzgpICsgJy4nICsgcm5kKDAsIDIpICsgJy4nICsgcm5kKDAsMik7XG4gICAgfVxufTtcblxudmFyIGJyb3dzZXIgPSB7XG4gICAgZmlyZWZveDogZnVuY3Rpb24gZmlyZWZveChhcmNoKSB7XG4gICAgICAgIC8vaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HZWNrb191c2VyX2FnZW50X3N0cmluZ19yZWZlcmVuY2VcbiAgICAgICAgdmFyIGZpcmVmb3hfdmVyID0gcm5kKDUsIDE1KSArIHJhbmRvbVJldmlzaW9uKDIpLFxuICAgICAgICAgICAgZ2Vja29fdmVyID0gJ0dlY2tvLzIwMTAwMTAxIEZpcmVmb3gvJyArIGZpcmVmb3hfdmVyLFxuICAgICAgICAgICAgcHJvYyA9IHJhbmRvbVByb2MoYXJjaCksXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ3dpbicpID8gJyhXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgKChwcm9jKSA/ICc7ICcgKyBwcm9jIDogJycpXG4gICAgICAgICAgICA6IChhcmNoID09PSAnbWFjJykgPyAnKE1hY2ludG9zaDsgJyArIHByb2MgKyAnIE1hYyBPUyBYICcgKyB2ZXJzaW9uX3N0cmluZy5vc3goKVxuICAgICAgICAgICAgOiAnKFgxMTsgTGludXggJyArIHByb2M7XG5cbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAnICsgb3NfdmVyICsgJzsgcnY6JyArIGZpcmVmb3hfdmVyLnNsaWNlKDAsIC0yKSArICcpICcgKyBnZWNrb192ZXI7XG4gICAgfSxcblxuICAgIGlleHBsb3JlcjogZnVuY3Rpb24gaWV4cGxvcmVyKCkge1xuICAgICAgICB2YXIgdmVyID0gdmVyc2lvbl9zdHJpbmcuaWUoKTtcblxuICAgICAgICBpZiAodmVyID49IDExKSB7XG4gICAgICAgICAgICAvL2h0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDg2OTMwMSh2PXZzLjg1KS5hc3B4XG4gICAgICAgICAgICByZXR1cm4gJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDYuJyArIHJuZCgxLDMpICsgJzsgVHJpZGVudC83LjA7ICcgKyBybmQoWydUb3VjaDsgJywgJyddKSArICdydjoxMS4wKSBsaWtlIEdlY2tvJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL21zNTM3NTAzKHY9dnMuODUpLmFzcHhcbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSAnICsgdmVyICsgJy4wOyBXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJzsgVHJpZGVudC8nICtcbiAgICAgICAgICAgIHZlcnNpb25fc3RyaW5nLnRyaWRlbnQoKSArICgocm5kKDAsIDEpID09PSAxKSA/ICc7IC5ORVQgQ0xSICcgKyB2ZXJzaW9uX3N0cmluZy5uZXQoKSA6ICcnKSArICcpJztcbiAgICB9LFxuXG4gICAgb3BlcmE6IGZ1bmN0aW9uIG9wZXJhKGFyY2gpIHtcbiAgICAgICAgLy9odHRwOi8vd3d3Lm9wZXJhLmNvbS9kb2NzL2hpc3RvcnkvXG4gICAgICAgIHZhciBwcmVzdG9fdmVyID0gJyBQcmVzdG8vJyArIHZlcnNpb25fc3RyaW5nLnByZXN0bygpICsgJyBWZXJzaW9uLycgKyB2ZXJzaW9uX3N0cmluZy5wcmVzdG8yKCkgKyAnKScsXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ3dpbicpID8gJyhXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJzsgVTsgJyArIHJhbmRvbUxhbmcoKSArIHByZXN0b192ZXJcbiAgICAgICAgICAgIDogKGFyY2ggPT09ICdsaW4nKSA/ICcoWDExOyBMaW51eCAnICsgcmFuZG9tUHJvYyhhcmNoKSArICc7IFU7ICcgKyByYW5kb21MYW5nKCkgKyBwcmVzdG9fdmVyXG4gICAgICAgICAgICA6ICcoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAnICsgdmVyc2lvbl9zdHJpbmcub3N4KCkgKyAnIFU7ICcgKyByYW5kb21MYW5nKCkgKyAnIFByZXN0by8nICtcbiAgICAgICAgICAgIHZlcnNpb25fc3RyaW5nLnByZXN0bygpICsgJyBWZXJzaW9uLycgKyB2ZXJzaW9uX3N0cmluZy5wcmVzdG8yKCkgKyAnKSc7XG5cbiAgICAgICAgcmV0dXJuICdPcGVyYS8nICsgcm5kKDksIDE0KSArICcuJyArIHJuZCgwLCA5OSkgKyAnICcgKyBvc192ZXI7XG4gICAgfSxcblxuICAgIHNhZmFyaTogZnVuY3Rpb24gc2FmYXJpKGFyY2gpIHtcbiAgICAgICAgdmFyIHNhZmFyaSA9IHZlcnNpb25fc3RyaW5nLnNhZmFyaSgpLFxuICAgICAgICAgICAgdmVyID0gcm5kKDQsIDcpICsgJy4nICsgcm5kKDAsMSkgKyAnLicgKyBybmQoMCwxMCksXG4gICAgICAgICAgICBvc192ZXIgPSAoYXJjaCA9PT0gJ21hYycpID8gJyhNYWNpbnRvc2g7ICcgKyByYW5kb21Qcm9jKCdtYWMnKSArICcgTWFjIE9TIFggJysgdmVyc2lvbl9zdHJpbmcub3N4KCdfJykgKyAnIHJ2OicgKyBybmQoMiwgNikgKyAnLjA7ICcrIHJhbmRvbUxhbmcoKSArICcpICdcbiAgICAgICAgICAgIDogJyhXaW5kb3dzOyBVOyBXaW5kb3dzIE5UICcgKyB2ZXJzaW9uX3N0cmluZy5udCgpICsgJyknO1xuXG4gICAgICAgIHJldHVybiAnTW96aWxsYS81LjAgJyArIG9zX3ZlciArICdBcHBsZVdlYktpdC8nICsgc2FmYXJpICsgJyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vJyArIHZlciArICcgU2FmYXJpLycgKyBzYWZhcmk7XG4gICAgfSxcblxuICAgIGNocm9tZTogZnVuY3Rpb24gY2hyb21lKGFyY2gpIHtcbiAgICAgICAgdmFyIHNhZmFyaSA9IHZlcnNpb25fc3RyaW5nLnNhZmFyaSgpLFxuICAgICAgICAgICAgb3NfdmVyID0gKGFyY2ggPT09ICdtYWMnKSA/ICcoTWFjaW50b3NoOyAnICsgcmFuZG9tUHJvYygnbWFjJykgKyAnIE1hYyBPUyBYICcgKyB2ZXJzaW9uX3N0cmluZy5vc3goJ18nKSArICcpICdcbiAgICAgICAgICAgIDogKGFyY2ggPT09ICd3aW4nKSA/ICcoV2luZG93czsgVTsgV2luZG93cyBOVCAnICsgdmVyc2lvbl9zdHJpbmcubnQoKSArICcpJ1xuICAgICAgICAgICAgOiAnKFgxMTsgTGludXggJyArIHJhbmRvbVByb2MoYXJjaCk7XG5cbiAgICAgICAgcmV0dXJuICdNb3ppbGxhLzUuMCAnICsgb3NfdmVyICsgJyBBcHBsZVdlYktpdC8nICsgc2FmYXJpICsgJyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8nICsgdmVyc2lvbl9zdHJpbmcuY2hyb21lKCkgKyAnIFNhZmFyaS8nICsgc2FmYXJpO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZSgpIHtcbiAgICB2YXIgcmFuZG9tID0gcmFuZG9tQnJvd3NlckFuZE9TKCk7XG4gICAgcmV0dXJuIGJyb3dzZXJbcmFuZG9tWzBdXShyYW5kb21bMV0pO1xufTtcbiIsImZ1bmN0aW9uIGZvcm1hdChmbXQpIHtcbiAgdmFyIHJlID0gLyglPykoJShbamRzXSkpL2dcbiAgICAsIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICBpZihhcmdzLmxlbmd0aCkge1xuICAgIGZtdCA9IGZtdC5yZXBsYWNlKHJlLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlZCwgcHRuLCBmbGFnKSB7XG4gICAgICB2YXIgYXJnID0gYXJncy5zaGlmdCgpO1xuICAgICAgc3dpdGNoKGZsYWcpIHtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgYXJnID0gJycgKyBhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgIGFyZyA9IE51bWJlcihhcmcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICBhcmcgPSBKU09OLnN0cmluZ2lmeShhcmcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYoIWVzY2FwZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyZzsgXG4gICAgICB9XG4gICAgICBhcmdzLnVuc2hpZnQoYXJnKTtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KVxuICB9XG5cbiAgLy8gYXJndW1lbnRzIHJlbWFpbiBhZnRlciBmb3JtYXR0aW5nXG4gIGlmKGFyZ3MubGVuZ3RoKSB7XG4gICAgZm10ICs9ICcgJyArIGFyZ3Muam9pbignICcpO1xuICB9XG5cbiAgLy8gdXBkYXRlIGVzY2FwZWQgJSUgdmFsdWVzXG4gIGZtdCA9IGZtdC5yZXBsYWNlKC8lezIsMn0vZywgJyUnKTtcblxuICByZXR1cm4gJycgKyBmbXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9ybWF0O1xuIiwidmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJylcbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxuXG52YXIgaHR0cHMgPSBtb2R1bGUuZXhwb3J0c1xuXG5mb3IgKHZhciBrZXkgaW4gaHR0cCkge1xuICBpZiAoaHR0cC5oYXNPd25Qcm9wZXJ0eShrZXkpKSBodHRwc1trZXldID0gaHR0cFtrZXldXG59XG5cbmh0dHBzLnJlcXVlc3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLnJlcXVlc3QuY2FsbCh0aGlzLCBwYXJhbXMsIGNiKVxufVxuXG5odHRwcy5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLmdldC5jYWxsKHRoaXMsIHBhcmFtcywgY2IpXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyYW1zIChwYXJhbXMpIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcGFyYW1zID0gdXJsLnBhcnNlKHBhcmFtcylcbiAgfVxuICBpZiAoIXBhcmFtcy5wcm90b2NvbCkge1xuICAgIHBhcmFtcy5wcm90b2NvbCA9ICdodHRwczonXG4gIH1cbiAgaWYgKHBhcmFtcy5wcm90b2NvbCAhPT0gJ2h0dHBzOicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3RvY29sIFwiJyArIHBhcmFtcy5wcm90b2NvbCArICdcIiBub3Qgc3VwcG9ydGVkLiBFeHBlY3RlZCBcImh0dHBzOlwiJylcbiAgfVxuICByZXR1cm4gcGFyYW1zXG59XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciB5YW1sID0gcmVxdWlyZSgnLi9saWIvanMteWFtbC5qcycpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0geWFtbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgbG9hZGVyID0gcmVxdWlyZSgnLi9qcy15YW1sL2xvYWRlcicpO1xudmFyIGR1bXBlciA9IHJlcXVpcmUoJy4vanMteWFtbC9kdW1wZXInKTtcblxuXG5mdW5jdGlvbiBkZXByZWNhdGVkKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uICcgKyBuYW1lICsgJyBpcyBkZXByZWNhdGVkIGFuZCBjYW5ub3QgYmUgdXNlZC4nKTtcbiAgfTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5UeXBlICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3R5cGUnKTtcbm1vZHVsZS5leHBvcnRzLlNjaGVtYSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hJyk7XG5tb2R1bGUuZXhwb3J0cy5GQUlMU0FGRV9TQ0hFTUEgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuSlNPTl9TQ0hFTUEgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvanNvbicpO1xubW9kdWxlLmV4cG9ydHMuQ09SRV9TQ0hFTUEgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvY29yZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9TQUZFX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG5tb2R1bGUuZXhwb3J0cy5ERUZBVUxUX0ZVTExfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcbm1vZHVsZS5leHBvcnRzLmxvYWQgICAgICAgICAgICAgICAgPSBsb2FkZXIubG9hZDtcbm1vZHVsZS5leHBvcnRzLmxvYWRBbGwgICAgICAgICAgICAgPSBsb2FkZXIubG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkICAgICAgICAgICAgPSBsb2FkZXIuc2FmZUxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZEFsbCAgICAgICAgID0gbG9hZGVyLnNhZmVMb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuZHVtcCAgICAgICAgICAgICAgICA9IGR1bXBlci5kdW1wO1xubW9kdWxlLmV4cG9ydHMuc2FmZUR1bXAgICAgICAgICAgICA9IGR1bXBlci5zYWZlRHVtcDtcbm1vZHVsZS5leHBvcnRzLllBTUxFeGNlcHRpb24gICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvZXhjZXB0aW9uJyk7XG5cbi8vIERlcHJlY2F0ZWQgc2NoZW1hIG5hbWVzIGZyb20gSlMtWUFNTCAyLjAueFxubW9kdWxlLmV4cG9ydHMuTUlOSU1BTF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlJyk7XG5tb2R1bGUuZXhwb3J0cy5TQUZFX1NDSEVNQSAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG5tb2R1bGUuZXhwb3J0cy5ERUZBVUxUX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5cbi8vIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGZyb20gSlMtWUFNTCAxLngueFxubW9kdWxlLmV4cG9ydHMuc2NhbiAgICAgICAgICAgPSBkZXByZWNhdGVkKCdzY2FuJyk7XG5tb2R1bGUuZXhwb3J0cy5wYXJzZSAgICAgICAgICA9IGRlcHJlY2F0ZWQoJ3BhcnNlJyk7XG5tb2R1bGUuZXhwb3J0cy5jb21wb3NlICAgICAgICA9IGRlcHJlY2F0ZWQoJ2NvbXBvc2UnKTtcbm1vZHVsZS5leHBvcnRzLmFkZENvbnN0cnVjdG9yID0gZGVwcmVjYXRlZCgnYWRkQ29uc3RydWN0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBpc05vdGhpbmcoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAndW5kZWZpbmVkJykgfHwgKHN1YmplY3QgPT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ29iamVjdCcpICYmIChzdWJqZWN0ICE9PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiB0b0FycmF5KHNlcXVlbmNlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNlcXVlbmNlKSkgcmV0dXJuIHNlcXVlbmNlO1xuICBlbHNlIGlmIChpc05vdGhpbmcoc2VxdWVuY2UpKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIFsgc2VxdWVuY2UgXTtcbn1cblxuXG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIGtleSwgc291cmNlS2V5cztcblxuICBpZiAoc291cmNlKSB7XG4gICAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG5mdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBjb3VudCkge1xuICB2YXIgcmVzdWx0ID0gJycsIGN5Y2xlO1xuXG4gIGZvciAoY3ljbGUgPSAwOyBjeWNsZSA8IGNvdW50OyBjeWNsZSArPSAxKSB7XG4gICAgcmVzdWx0ICs9IHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZVplcm8obnVtYmVyKSB7XG4gIHJldHVybiAobnVtYmVyID09PSAwKSAmJiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSAxIC8gbnVtYmVyKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5pc05vdGhpbmcgICAgICA9IGlzTm90aGluZztcbm1vZHVsZS5leHBvcnRzLmlzT2JqZWN0ICAgICAgID0gaXNPYmplY3Q7XG5tb2R1bGUuZXhwb3J0cy50b0FycmF5ICAgICAgICA9IHRvQXJyYXk7XG5tb2R1bGUuZXhwb3J0cy5yZXBlYXQgICAgICAgICA9IHJlcGVhdDtcbm1vZHVsZS5leHBvcnRzLmlzTmVnYXRpdmVaZXJvID0gaXNOZWdhdGl2ZVplcm87XG5tb2R1bGUuZXhwb3J0cy5leHRlbmQgICAgICAgICA9IGV4dGVuZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSovXG5cbnZhciBjb21tb24gICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcbnZhciBERUZBVUxUX0ZVTExfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG52YXIgREVGQVVMVF9TQUZFX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xuXG52YXIgX3RvU3RyaW5nICAgICAgID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgQ0hBUl9UQUIgICAgICAgICAgICAgICAgICA9IDB4MDk7IC8qIFRhYiAqL1xudmFyIENIQVJfTElORV9GRUVEICAgICAgICAgICAgPSAweDBBOyAvKiBMRiAqL1xudmFyIENIQVJfU1BBQ0UgICAgICAgICAgICAgICAgPSAweDIwOyAvKiBTcGFjZSAqL1xudmFyIENIQVJfRVhDTEFNQVRJT04gICAgICAgICAgPSAweDIxOyAvKiAhICovXG52YXIgQ0hBUl9ET1VCTEVfUVVPVEUgICAgICAgICA9IDB4MjI7IC8qIFwiICovXG52YXIgQ0hBUl9TSEFSUCAgICAgICAgICAgICAgICA9IDB4MjM7IC8qICMgKi9cbnZhciBDSEFSX1BFUkNFTlQgICAgICAgICAgICAgID0gMHgyNTsgLyogJSAqL1xudmFyIENIQVJfQU1QRVJTQU5EICAgICAgICAgICAgPSAweDI2OyAvKiAmICovXG52YXIgQ0hBUl9TSU5HTEVfUVVPVEUgICAgICAgICA9IDB4Mjc7IC8qICcgKi9cbnZhciBDSEFSX0FTVEVSSVNLICAgICAgICAgICAgID0gMHgyQTsgLyogKiAqL1xudmFyIENIQVJfQ09NTUEgICAgICAgICAgICAgICAgPSAweDJDOyAvKiAsICovXG52YXIgQ0hBUl9NSU5VUyAgICAgICAgICAgICAgICA9IDB4MkQ7IC8qIC0gKi9cbnZhciBDSEFSX0NPTE9OICAgICAgICAgICAgICAgID0gMHgzQTsgLyogOiAqL1xudmFyIENIQVJfR1JFQVRFUl9USEFOICAgICAgICAgPSAweDNFOyAvKiA+ICovXG52YXIgQ0hBUl9RVUVTVElPTiAgICAgICAgICAgICA9IDB4M0Y7IC8qID8gKi9cbnZhciBDSEFSX0NPTU1FUkNJQUxfQVQgICAgICAgID0gMHg0MDsgLyogQCAqL1xudmFyIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCAgPSAweDVCOyAvKiBbICovXG52YXIgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCA9IDB4NUQ7IC8qIF0gKi9cbnZhciBDSEFSX0dSQVZFX0FDQ0VOVCAgICAgICAgID0gMHg2MDsgLyogYCAqL1xudmFyIENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUICAgPSAweDdCOyAvKiB7ICovXG52YXIgQ0hBUl9WRVJUSUNBTF9MSU5FICAgICAgICA9IDB4N0M7IC8qIHwgKi9cbnZhciBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVQgID0gMHg3RDsgLyogfSAqL1xuXG52YXIgRVNDQVBFX1NFUVVFTkNFUyA9IHt9O1xuXG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDBdICAgPSAnXFxcXDAnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA3XSAgID0gJ1xcXFxhJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwOF0gICA9ICdcXFxcYic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDldICAgPSAnXFxcXHQnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBBXSAgID0gJ1xcXFxuJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQl0gICA9ICdcXFxcdic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MENdICAgPSAnXFxcXGYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBEXSAgID0gJ1xcXFxyJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgxQl0gICA9ICdcXFxcZSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjJdICAgPSAnXFxcXFwiJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHg1Q10gICA9ICdcXFxcXFxcXCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4ODVdICAgPSAnXFxcXE4nO1xuRVNDQVBFX1NFUVVFTkNFU1sweEEwXSAgID0gJ1xcXFxfJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMDI4XSA9ICdcXFxcTCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOV0gPSAnXFxcXFAnO1xuXG52YXIgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVggPSBbXG4gICd5JywgJ1knLCAneWVzJywgJ1llcycsICdZRVMnLCAnb24nLCAnT24nLCAnT04nLFxuICAnbicsICdOJywgJ25vJywgJ05vJywgJ05PJywgJ29mZicsICdPZmYnLCAnT0ZGJ1xuXTtcblxuZnVuY3Rpb24gY29tcGlsZVN0eWxlTWFwKHNjaGVtYSwgbWFwKSB7XG4gIHZhciByZXN1bHQsIGtleXMsIGluZGV4LCBsZW5ndGgsIHRhZywgc3R5bGUsIHR5cGU7XG5cbiAgaWYgKG1hcCA9PT0gbnVsbCkgcmV0dXJuIHt9O1xuXG4gIHJlc3VsdCA9IHt9O1xuICBrZXlzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdGFnID0ga2V5c1tpbmRleF07XG4gICAgc3R5bGUgPSBTdHJpbmcobWFwW3RhZ10pO1xuXG4gICAgaWYgKHRhZy5zbGljZSgwLCAyKSA9PT0gJyEhJykge1xuICAgICAgdGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWcuc2xpY2UoMik7XG4gICAgfVxuICAgIHR5cGUgPSBzY2hlbWEuY29tcGlsZWRUeXBlTWFwWydmYWxsYmFjayddW3RhZ107XG5cbiAgICBpZiAodHlwZSAmJiBfaGFzT3duUHJvcGVydHkuY2FsbCh0eXBlLnN0eWxlQWxpYXNlcywgc3R5bGUpKSB7XG4gICAgICBzdHlsZSA9IHR5cGUuc3R5bGVBbGlhc2VzW3N0eWxlXTtcbiAgICB9XG5cbiAgICByZXN1bHRbdGFnXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlSGV4KGNoYXJhY3Rlcikge1xuICB2YXIgc3RyaW5nLCBoYW5kbGUsIGxlbmd0aDtcblxuICBzdHJpbmcgPSBjaGFyYWN0ZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cbiAgaWYgKGNoYXJhY3RlciA8PSAweEZGKSB7XG4gICAgaGFuZGxlID0gJ3gnO1xuICAgIGxlbmd0aCA9IDI7XG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyIDw9IDB4RkZGRikge1xuICAgIGhhbmRsZSA9ICd1JztcbiAgICBsZW5ndGggPSA0O1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkZGRkZGKSB7XG4gICAgaGFuZGxlID0gJ1UnO1xuICAgIGxlbmd0aCA9IDg7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2NvZGUgcG9pbnQgd2l0aGluIGEgc3RyaW5nIG1heSBub3QgYmUgZ3JlYXRlciB0aGFuIDB4RkZGRkZGRkYnKTtcbiAgfVxuXG4gIHJldHVybiAnXFxcXCcgKyBoYW5kbGUgKyBjb21tb24ucmVwZWF0KCcwJywgbGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIFN0YXRlKG9wdGlvbnMpIHtcbiAgdGhpcy5zY2hlbWEgICAgICAgPSBvcHRpb25zWydzY2hlbWEnXSB8fCBERUZBVUxUX0ZVTExfU0NIRU1BO1xuICB0aGlzLmluZGVudCAgICAgICA9IE1hdGgubWF4KDEsIChvcHRpb25zWydpbmRlbnQnXSB8fCAyKSk7XG4gIHRoaXMuc2tpcEludmFsaWQgID0gb3B0aW9uc1snc2tpcEludmFsaWQnXSB8fCBmYWxzZTtcbiAgdGhpcy5mbG93TGV2ZWwgICAgPSAoY29tbW9uLmlzTm90aGluZyhvcHRpb25zWydmbG93TGV2ZWwnXSkgPyAtMSA6IG9wdGlvbnNbJ2Zsb3dMZXZlbCddKTtcbiAgdGhpcy5zdHlsZU1hcCAgICAgPSBjb21waWxlU3R5bGVNYXAodGhpcy5zY2hlbWEsIG9wdGlvbnNbJ3N0eWxlcyddIHx8IG51bGwpO1xuICB0aGlzLnNvcnRLZXlzICAgICA9IG9wdGlvbnNbJ3NvcnRLZXlzJ10gfHwgZmFsc2U7XG4gIHRoaXMubGluZVdpZHRoICAgID0gb3B0aW9uc1snbGluZVdpZHRoJ10gfHwgODA7XG4gIHRoaXMubm9SZWZzICAgICAgID0gb3B0aW9uc1snbm9SZWZzJ10gfHwgZmFsc2U7XG4gIHRoaXMubm9Db21wYXRNb2RlID0gb3B0aW9uc1snbm9Db21wYXRNb2RlJ10gfHwgZmFsc2U7XG4gIHRoaXMuY29uZGVuc2VGbG93ID0gb3B0aW9uc1snY29uZGVuc2VGbG93J10gfHwgZmFsc2U7XG5cbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy5leHBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRFeHBsaWNpdDtcblxuICB0aGlzLnRhZyA9IG51bGw7XG4gIHRoaXMucmVzdWx0ID0gJyc7XG5cbiAgdGhpcy5kdXBsaWNhdGVzID0gW107XG4gIHRoaXMudXNlZER1cGxpY2F0ZXMgPSBudWxsO1xufVxuXG4vLyBJbmRlbnRzIGV2ZXJ5IGxpbmUgaW4gYSBzdHJpbmcuIEVtcHR5IGxpbmVzIChcXG4gb25seSkgYXJlIG5vdCBpbmRlbnRlZC5cbmZ1bmN0aW9uIGluZGVudFN0cmluZyhzdHJpbmcsIHNwYWNlcykge1xuICB2YXIgaW5kID0gY29tbW9uLnJlcGVhdCgnICcsIHNwYWNlcyksXG4gICAgICBwb3NpdGlvbiA9IDAsXG4gICAgICBuZXh0ID0gLTEsXG4gICAgICByZXN1bHQgPSAnJyxcbiAgICAgIGxpbmUsXG4gICAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgIG5leHQgPSBzdHJpbmcuaW5kZXhPZignXFxuJywgcG9zaXRpb24pO1xuICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgbGluZSA9IHN0cmluZy5zbGljZShwb3NpdGlvbik7XG4gICAgICBwb3NpdGlvbiA9IGxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZSA9IHN0cmluZy5zbGljZShwb3NpdGlvbiwgbmV4dCArIDEpO1xuICAgICAgcG9zaXRpb24gPSBuZXh0ICsgMTtcbiAgICB9XG5cbiAgICBpZiAobGluZS5sZW5ndGggJiYgbGluZSAhPT0gJ1xcbicpIHJlc3VsdCArPSBpbmQ7XG5cbiAgICByZXN1bHQgKz0gbGluZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKSB7XG4gIHJldHVybiAnXFxuJyArIGNvbW1vbi5yZXBlYXQoJyAnLCBzdGF0ZS5pbmRlbnQgKiBsZXZlbCk7XG59XG5cbmZ1bmN0aW9uIHRlc3RJbXBsaWNpdFJlc29sdmluZyhzdGF0ZSwgc3RyKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCB0eXBlO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzdGF0ZS5pbXBsaWNpdFR5cGVzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0eXBlID0gc3RhdGUuaW1wbGljaXRUeXBlc1tpbmRleF07XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlKHN0cikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gWzMzXSBzLXdoaXRlIDo6PSBzLXNwYWNlIHwgcy10YWJcbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjKSB7XG4gIHJldHVybiBjID09PSBDSEFSX1NQQUNFIHx8IGMgPT09IENIQVJfVEFCO1xufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNoYXJhY3RlciBjYW4gYmUgcHJpbnRlZCB3aXRob3V0IGVzY2FwaW5nLlxuLy8gRnJvbSBZQU1MIDEuMjogXCJhbnkgYWxsb3dlZCBjaGFyYWN0ZXJzIGtub3duIHRvIGJlIG5vbi1wcmludGFibGVcbi8vIHNob3VsZCBhbHNvIGJlIGVzY2FwZWQuIFtIb3dldmVyLF0gVGhpcyBpc27igJl0IG1hbmRhdG9yeVwiXG4vLyBEZXJpdmVkIGZyb20gbmItY2hhciAtIFxcdCAtICN4ODUgLSAjeEEwIC0gI3gyMDI4IC0gI3gyMDI5LlxuZnVuY3Rpb24gaXNQcmludGFibGUoYykge1xuICByZXR1cm4gICgweDAwMDIwIDw9IGMgJiYgYyA8PSAweDAwMDA3RSlcbiAgICAgIHx8ICgoMHgwMDBBMSA8PSBjICYmIGMgPD0gMHgwMEQ3RkYpICYmIGMgIT09IDB4MjAyOCAmJiBjICE9PSAweDIwMjkpXG4gICAgICB8fCAoKDB4MEUwMDAgPD0gYyAmJiBjIDw9IDB4MDBGRkZEKSAmJiBjICE9PSAweEZFRkYgLyogQk9NICovKVxuICAgICAgfHwgICgweDEwMDAwIDw9IGMgJiYgYyA8PSAweDEwRkZGRik7XG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlKGMpIHtcbiAgLy8gVXNlcyBhIHN1YnNldCBvZiBuYi1jaGFyIC0gYy1mbG93LWluZGljYXRvciAtIFwiOlwiIC0gXCIjXCJcbiAgLy8gd2hlcmUgbmItY2hhciA6Oj0gYy1wcmludGFibGUgLSBiLWNoYXIgLSBjLWJ5dGUtb3JkZXItbWFyay5cbiAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpICYmIGMgIT09IDB4RkVGRlxuICAgIC8vIC0gYy1mbG93LWluZGljYXRvclxuICAgICYmIGMgIT09IENIQVJfQ09NTUFcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVRcbiAgICAvLyAtIFwiOlwiIC0gXCIjXCJcbiAgICAmJiBjICE9PSBDSEFSX0NPTE9OXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUDtcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLlxuZnVuY3Rpb24gaXNQbGFpblNhZmVGaXJzdChjKSB7XG4gIC8vIFVzZXMgYSBzdWJzZXQgb2YgbnMtY2hhciAtIGMtaW5kaWNhdG9yXG4gIC8vIHdoZXJlIG5zLWNoYXIgPSBuYi1jaGFyIC0gcy13aGl0ZS5cbiAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpICYmIGMgIT09IDB4RkVGRlxuICAgICYmICFpc1doaXRlc3BhY2UoYykgLy8gLSBzLXdoaXRlXG4gICAgLy8gLSAoYy1pbmRpY2F0b3IgOjo9XG4gICAgLy8g4oCcLeKAnSB8IOKAnD/igJ0gfCDigJw64oCdIHwg4oCcLOKAnSB8IOKAnFvigJ0gfCDigJxd4oCdIHwg4oCce+KAnSB8IOKAnH3igJ1cbiAgICAmJiBjICE9PSBDSEFSX01JTlVTXG4gICAgJiYgYyAhPT0gQ0hBUl9RVUVTVElPTlxuICAgICYmIGMgIT09IENIQVJfQ09MT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTU1BXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gICAgLy8gfCDigJwj4oCdIHwg4oCcJuKAnSB8IOKAnCrigJ0gfCDigJwh4oCdIHwg4oCcfOKAnSB8IOKAnD7igJ0gfCDigJwn4oCdIHwg4oCcXCLigJ1cbiAgICAmJiBjICE9PSBDSEFSX1NIQVJQXG4gICAgJiYgYyAhPT0gQ0hBUl9BTVBFUlNBTkRcbiAgICAmJiBjICE9PSBDSEFSX0FTVEVSSVNLXG4gICAgJiYgYyAhPT0gQ0hBUl9FWENMQU1BVElPTlxuICAgICYmIGMgIT09IENIQVJfVkVSVElDQUxfTElORVxuICAgICYmIGMgIT09IENIQVJfR1JFQVRFUl9USEFOXG4gICAgJiYgYyAhPT0gQ0hBUl9TSU5HTEVfUVVPVEVcbiAgICAmJiBjICE9PSBDSEFSX0RPVUJMRV9RVU9URVxuICAgIC8vIHwg4oCcJeKAnSB8IOKAnEDigJ0gfCDigJxg4oCdKVxuICAgICYmIGMgIT09IENIQVJfUEVSQ0VOVFxuICAgICYmIGMgIT09IENIQVJfQ09NTUVSQ0lBTF9BVFxuICAgICYmIGMgIT09IENIQVJfR1JBVkVfQUNDRU5UO1xufVxuXG4vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGlzIHJlcXVpcmVkLlxuZnVuY3Rpb24gbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpIHtcbiAgdmFyIGxlYWRpbmdTcGFjZVJlID0gL15cXG4qIC87XG4gIHJldHVybiBsZWFkaW5nU3BhY2VSZS50ZXN0KHN0cmluZyk7XG59XG5cbnZhciBTVFlMRV9QTEFJTiAgID0gMSxcbiAgICBTVFlMRV9TSU5HTEUgID0gMixcbiAgICBTVFlMRV9MSVRFUkFMID0gMyxcbiAgICBTVFlMRV9GT0xERUQgID0gNCxcbiAgICBTVFlMRV9ET1VCTEUgID0gNTtcblxuLy8gRGV0ZXJtaW5lcyB3aGljaCBzY2FsYXIgc3R5bGVzIGFyZSBwb3NzaWJsZSBhbmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIHN0eWxlLlxuLy8gbGluZVdpZHRoID0gLTEgPT4gbm8gbGltaXQuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyLmxlbmd0aCA+IDAuXG4vLyBQb3N0LWNvbmRpdGlvbnM6XG4vLyAgICBTVFlMRV9QTEFJTiBvciBTVFlMRV9TSU5HTEUgPT4gbm8gXFxuIGFyZSBpbiB0aGUgc3RyaW5nLlxuLy8gICAgU1RZTEVfTElURVJBTCA9PiBubyBsaW5lcyBhcmUgc3VpdGFibGUgZm9yIGZvbGRpbmcgKG9yIGxpbmVXaWR0aCBpcyAtMSkuXG4vLyAgICBTVFlMRV9GT0xERUQgPT4gYSBsaW5lID4gbGluZVdpZHRoIGFuZCBjYW4gYmUgZm9sZGVkIChhbmQgbGluZVdpZHRoICE9IC0xKS5cbmZ1bmN0aW9uIGNob29zZVNjYWxhclN0eWxlKHN0cmluZywgc2luZ2xlTGluZU9ubHksIGluZGVudFBlckxldmVsLCBsaW5lV2lkdGgsIHRlc3RBbWJpZ3VvdXNUeXBlKSB7XG4gIHZhciBpO1xuICB2YXIgY2hhcjtcbiAgdmFyIGhhc0xpbmVCcmVhayA9IGZhbHNlO1xuICB2YXIgaGFzRm9sZGFibGVMaW5lID0gZmFsc2U7IC8vIG9ubHkgY2hlY2tlZCBpZiBzaG91bGRUcmFja1dpZHRoXG4gIHZhciBzaG91bGRUcmFja1dpZHRoID0gbGluZVdpZHRoICE9PSAtMTtcbiAgdmFyIHByZXZpb3VzTGluZUJyZWFrID0gLTE7IC8vIGNvdW50IHRoZSBmaXJzdCBsaW5lIGNvcnJlY3RseVxuICB2YXIgcGxhaW4gPSBpc1BsYWluU2FmZUZpcnN0KHN0cmluZy5jaGFyQ29kZUF0KDApKVxuICAgICAgICAgICYmICFpc1doaXRlc3BhY2Uoc3RyaW5nLmNoYXJDb2RlQXQoc3RyaW5nLmxlbmd0aCAtIDEpKTtcblxuICBpZiAoc2luZ2xlTGluZU9ubHkpIHtcbiAgICAvLyBDYXNlOiBubyBibG9jayBzdHlsZXMuXG4gICAgLy8gQ2hlY2sgZm9yIGRpc2FsbG93ZWQgY2hhcmFjdGVycyB0byBydWxlIG91dCBwbGFpbiBhbmQgc2luZ2xlLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhcik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIENhc2U6IGJsb2NrIHN0eWxlcyBwZXJtaXR0ZWQuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGNoYXIgPT09IENIQVJfTElORV9GRUVEKSB7XG4gICAgICAgIGhhc0xpbmVCcmVhayA9IHRydWU7XG4gICAgICAgIC8vIENoZWNrIGlmIGFueSBsaW5lIGNhbiBiZSBmb2xkZWQuXG4gICAgICAgIGlmIChzaG91bGRUcmFja1dpZHRoKSB7XG4gICAgICAgICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8XG4gICAgICAgICAgICAvLyBGb2xkYWJsZSBsaW5lID0gdG9vIGxvbmcsIGFuZCBub3QgbW9yZS1pbmRlbnRlZC5cbiAgICAgICAgICAgIChpIC0gcHJldmlvdXNMaW5lQnJlYWsgLSAxID4gbGluZVdpZHRoICYmXG4gICAgICAgICAgICAgc3RyaW5nW3ByZXZpb3VzTGluZUJyZWFrICsgMV0gIT09ICcgJyk7XG4gICAgICAgICAgcHJldmlvdXNMaW5lQnJlYWsgPSBpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFpc1ByaW50YWJsZShjaGFyKSkge1xuICAgICAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICAgICAgfVxuICAgICAgcGxhaW4gPSBwbGFpbiAmJiBpc1BsYWluU2FmZShjaGFyKTtcbiAgICB9XG4gICAgLy8gaW4gY2FzZSB0aGUgZW5kIGlzIG1pc3NpbmcgYSBcXG5cbiAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHwgKHNob3VsZFRyYWNrV2lkdGggJiZcbiAgICAgIChpIC0gcHJldmlvdXNMaW5lQnJlYWsgLSAxID4gbGluZVdpZHRoICYmXG4gICAgICAgc3RyaW5nW3ByZXZpb3VzTGluZUJyZWFrICsgMV0gIT09ICcgJykpO1xuICB9XG4gIC8vIEFsdGhvdWdoIGV2ZXJ5IHN0eWxlIGNhbiByZXByZXNlbnQgXFxuIHdpdGhvdXQgZXNjYXBpbmcsIHByZWZlciBibG9jayBzdHlsZXNcbiAgLy8gZm9yIG11bHRpbGluZSwgc2luY2UgdGhleSdyZSBtb3JlIHJlYWRhYmxlIGFuZCB0aGV5IGRvbid0IGFkZCBlbXB0eSBsaW5lcy5cbiAgLy8gQWxzbyBwcmVmZXIgZm9sZGluZyBhIHN1cGVyLWxvbmcgbGluZS5cbiAgaWYgKCFoYXNMaW5lQnJlYWsgJiYgIWhhc0ZvbGRhYmxlTGluZSkge1xuICAgIC8vIFN0cmluZ3MgaW50ZXJwcmV0YWJsZSBhcyBhbm90aGVyIHR5cGUgaGF2ZSB0byBiZSBxdW90ZWQ7XG4gICAgLy8gZS5nLiB0aGUgc3RyaW5nICd0cnVlJyB2cy4gdGhlIGJvb2xlYW4gdHJ1ZS5cbiAgICByZXR1cm4gcGxhaW4gJiYgIXRlc3RBbWJpZ3VvdXNUeXBlKHN0cmluZylcbiAgICAgID8gU1RZTEVfUExBSU4gOiBTVFlMRV9TSU5HTEU7XG4gIH1cbiAgLy8gRWRnZSBjYXNlOiBibG9jayBpbmRlbnRhdGlvbiBpbmRpY2F0b3IgY2FuIG9ubHkgaGF2ZSBvbmUgZGlnaXQuXG4gIGlmIChpbmRlbnRQZXJMZXZlbCA+IDkgJiYgbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgfVxuICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgYmxvY2sgc3R5bGVzIGFyZSB2YWxpZC5cbiAgLy8gUHJlZmVyIGxpdGVyYWwgc3R5bGUgdW5sZXNzIHdlIHdhbnQgdG8gZm9sZC5cbiAgcmV0dXJuIGhhc0ZvbGRhYmxlTGluZSA/IFNUWUxFX0ZPTERFRCA6IFNUWUxFX0xJVEVSQUw7XG59XG5cbi8vIE5vdGU6IGxpbmUgYnJlYWtpbmcvZm9sZGluZyBpcyBpbXBsZW1lbnRlZCBmb3Igb25seSB0aGUgZm9sZGVkIHN0eWxlLlxuLy8gTkIuIFdlIGRyb3AgdGhlIGxhc3QgdHJhaWxpbmcgbmV3bGluZSAoaWYgYW55KSBvZiBhIHJldHVybmVkIGJsb2NrIHNjYWxhclxuLy8gIHNpbmNlIHRoZSBkdW1wZXIgYWRkcyBpdHMgb3duIG5ld2xpbmUuIFRoaXMgYWx3YXlzIHdvcmtzOlxuLy8gICAg4oCiIE5vIGVuZGluZyBuZXdsaW5lID0+IHVuYWZmZWN0ZWQ7IGFscmVhZHkgdXNpbmcgc3RyaXAgXCItXCIgY2hvbXBpbmcuXG4vLyAgICDigKIgRW5kaW5nIG5ld2xpbmUgICAgPT4gcmVtb3ZlZCB0aGVuIHJlc3RvcmVkLlxuLy8gIEltcG9ydGFudGx5LCB0aGlzIGtlZXBzIHRoZSBcIitcIiBjaG9tcCBpbmRpY2F0b3IgZnJvbSBnYWluaW5nIGFuIGV4dHJhIGxpbmUuXG5mdW5jdGlvbiB3cml0ZVNjYWxhcihzdGF0ZSwgc3RyaW5nLCBsZXZlbCwgaXNrZXkpIHtcbiAgc3RhdGUuZHVtcCA9IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIicnXCI7XG4gICAgfVxuICAgIGlmICghc3RhdGUubm9Db21wYXRNb2RlICYmXG4gICAgICAgIERFUFJFQ0FURURfQk9PTEVBTlNfU1lOVEFYLmluZGV4T2Yoc3RyaW5nKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBcIidcIiArIHN0cmluZyArIFwiJ1wiO1xuICAgIH1cblxuICAgIHZhciBpbmRlbnQgPSBzdGF0ZS5pbmRlbnQgKiBNYXRoLm1heCgxLCBsZXZlbCk7IC8vIG5vIDAtaW5kZW50IHNjYWxhcnNcbiAgICAvLyBBcyBpbmRlbnRhdGlvbiBnZXRzIGRlZXBlciwgbGV0IHRoZSB3aWR0aCBkZWNyZWFzZSBtb25vdG9uaWNhbGx5XG4gICAgLy8gdG8gdGhlIGxvd2VyIGJvdW5kIG1pbihzdGF0ZS5saW5lV2lkdGgsIDQwKS5cbiAgICAvLyBOb3RlIHRoYXQgdGhpcyBpbXBsaWVzXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCDiiaQgNDAgKyBzdGF0ZS5pbmRlbnQ6IHdpZHRoIGlzIGZpeGVkIGF0IHRoZSBsb3dlciBib3VuZC5cbiAgICAvLyAgc3RhdGUubGluZVdpZHRoID4gNDAgKyBzdGF0ZS5pbmRlbnQ6IHdpZHRoIGRlY3JlYXNlcyB1bnRpbCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gVGhpcyBiZWhhdmVzIGJldHRlciB0aGFuIGEgY29uc3RhbnQgbWluaW11bSB3aWR0aCB3aGljaCBkaXNhbGxvd3MgbmFycm93ZXIgb3B0aW9ucyxcbiAgICAvLyBvciBhbiBpbmRlbnQgdGhyZXNob2xkIHdoaWNoIGNhdXNlcyB0aGUgd2lkdGggdG8gc3VkZGVubHkgaW5jcmVhc2UuXG4gICAgdmFyIGxpbmVXaWR0aCA9IHN0YXRlLmxpbmVXaWR0aCA9PT0gLTFcbiAgICAgID8gLTEgOiBNYXRoLm1heChNYXRoLm1pbihzdGF0ZS5saW5lV2lkdGgsIDQwKSwgc3RhdGUubGluZVdpZHRoIC0gaW5kZW50KTtcblxuICAgIC8vIFdpdGhvdXQga25vd2luZyBpZiBrZXlzIGFyZSBpbXBsaWNpdC9leHBsaWNpdCwgYXNzdW1lIGltcGxpY2l0IGZvciBzYWZldHkuXG4gICAgdmFyIHNpbmdsZUxpbmVPbmx5ID0gaXNrZXlcbiAgICAgIC8vIE5vIGJsb2NrIHN0eWxlcyBpbiBmbG93IG1vZGUuXG4gICAgICB8fCAoc3RhdGUuZmxvd0xldmVsID4gLTEgJiYgbGV2ZWwgPj0gc3RhdGUuZmxvd0xldmVsKTtcbiAgICBmdW5jdGlvbiB0ZXN0QW1iaWd1aXR5KHN0cmluZykge1xuICAgICAgcmV0dXJuIHRlc3RJbXBsaWNpdFJlc29sdmluZyhzdGF0ZSwgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNob29zZVNjYWxhclN0eWxlKHN0cmluZywgc2luZ2xlTGluZU9ubHksIHN0YXRlLmluZGVudCwgbGluZVdpZHRoLCB0ZXN0QW1iaWd1aXR5KSkge1xuICAgICAgY2FzZSBTVFlMRV9QTEFJTjpcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIGNhc2UgU1RZTEVfU0lOR0xFOlxuICAgICAgICByZXR1cm4gXCInXCIgKyBzdHJpbmcucmVwbGFjZSgvJy9nLCBcIicnXCIpICsgXCInXCI7XG4gICAgICBjYXNlIFNUWUxFX0xJVEVSQUw6XG4gICAgICAgIHJldHVybiAnfCcgKyBibG9ja0hlYWRlcihzdHJpbmcsIHN0YXRlLmluZGVudClcbiAgICAgICAgICArIGRyb3BFbmRpbmdOZXdsaW5lKGluZGVudFN0cmluZyhzdHJpbmcsIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9GT0xERUQ6XG4gICAgICAgIHJldHVybiAnPicgKyBibG9ja0hlYWRlcihzdHJpbmcsIHN0YXRlLmluZGVudClcbiAgICAgICAgICArIGRyb3BFbmRpbmdOZXdsaW5lKGluZGVudFN0cmluZyhmb2xkU3RyaW5nKHN0cmluZywgbGluZVdpZHRoKSwgaW5kZW50KSk7XG4gICAgICBjYXNlIFNUWUxFX0RPVUJMRTpcbiAgICAgICAgcmV0dXJuICdcIicgKyBlc2NhcGVTdHJpbmcoc3RyaW5nLCBsaW5lV2lkdGgpICsgJ1wiJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdpbXBvc3NpYmxlIGVycm9yOiBpbnZhbGlkIHNjYWxhciBzdHlsZScpO1xuICAgIH1cbiAgfSgpKTtcbn1cblxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0cmluZyBpcyB2YWxpZCBmb3IgYSBibG9jayBzY2FsYXIsIDEgPD0gaW5kZW50UGVyTGV2ZWwgPD0gOS5cbmZ1bmN0aW9uIGJsb2NrSGVhZGVyKHN0cmluZywgaW5kZW50UGVyTGV2ZWwpIHtcbiAgdmFyIGluZGVudEluZGljYXRvciA9IG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSA/IFN0cmluZyhpbmRlbnRQZXJMZXZlbCkgOiAnJztcblxuICAvLyBub3RlIHRoZSBzcGVjaWFsIGNhc2U6IHRoZSBzdHJpbmcgJ1xcbicgY291bnRzIGFzIGEgXCJ0cmFpbGluZ1wiIGVtcHR5IGxpbmUuXG4gIHZhciBjbGlwID0gICAgICAgICAgc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbic7XG4gIHZhciBrZWVwID0gY2xpcCAmJiAoc3RyaW5nW3N0cmluZy5sZW5ndGggLSAyXSA9PT0gJ1xcbicgfHwgc3RyaW5nID09PSAnXFxuJyk7XG4gIHZhciBjaG9tcCA9IGtlZXAgPyAnKycgOiAoY2xpcCA/ICcnIDogJy0nKTtcblxuICByZXR1cm4gaW5kZW50SW5kaWNhdG9yICsgY2hvbXAgKyAnXFxuJztcbn1cblxuLy8gKFNlZSB0aGUgbm90ZSBmb3Igd3JpdGVTY2FsYXIuKVxuZnVuY3Rpb24gZHJvcEVuZGluZ05ld2xpbmUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDFdID09PSAnXFxuJyA/IHN0cmluZy5zbGljZSgwLCAtMSkgOiBzdHJpbmc7XG59XG5cbi8vIE5vdGU6IGEgbG9uZyBsaW5lIHdpdGhvdXQgYSBzdWl0YWJsZSBicmVhayBwb2ludCB3aWxsIGV4Y2VlZCB0aGUgd2lkdGggbGltaXQuXG4vLyBQcmUtY29uZGl0aW9uczogZXZlcnkgY2hhciBpbiBzdHIgaXNQcmludGFibGUsIHN0ci5sZW5ndGggPiAwLCB3aWR0aCA+IDAuXG5mdW5jdGlvbiBmb2xkU3RyaW5nKHN0cmluZywgd2lkdGgpIHtcbiAgLy8gSW4gZm9sZGVkIHN0eWxlLCAkayQgY29uc2VjdXRpdmUgbmV3bGluZXMgb3V0cHV0IGFzICRrKzEkIG5ld2xpbmVz4oCUXG4gIC8vIHVubGVzcyB0aGV5J3JlIGJlZm9yZSBvciBhZnRlciBhIG1vcmUtaW5kZW50ZWQgbGluZSwgb3IgYXQgdGhlIHZlcnlcbiAgLy8gYmVnaW5uaW5nIG9yIGVuZCwgaW4gd2hpY2ggY2FzZSAkayQgbWFwcyB0byAkayQuXG4gIC8vIFRoZXJlZm9yZSwgcGFyc2UgZWFjaCBjaHVuayBhcyBuZXdsaW5lKHMpIGZvbGxvd2VkIGJ5IGEgY29udGVudCBsaW5lLlxuICB2YXIgbGluZVJlID0gLyhcXG4rKShbXlxcbl0qKS9nO1xuXG4gIC8vIGZpcnN0IGxpbmUgKHBvc3NpYmx5IGFuIGVtcHR5IGxpbmUpXG4gIHZhciByZXN1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXh0TEYgPSBzdHJpbmcuaW5kZXhPZignXFxuJyk7XG4gICAgbmV4dExGID0gbmV4dExGICE9PSAtMSA/IG5leHRMRiA6IHN0cmluZy5sZW5ndGg7XG4gICAgbGluZVJlLmxhc3RJbmRleCA9IG5leHRMRjtcbiAgICByZXR1cm4gZm9sZExpbmUoc3RyaW5nLnNsaWNlKDAsIG5leHRMRiksIHdpZHRoKTtcbiAgfSgpKTtcbiAgLy8gSWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBmaXJzdCBjb250ZW50IGxpbmUgeWV0LCBkb24ndCBhZGQgYW4gZXh0cmEgXFxuLlxuICB2YXIgcHJldk1vcmVJbmRlbnRlZCA9IHN0cmluZ1swXSA9PT0gJ1xcbicgfHwgc3RyaW5nWzBdID09PSAnICc7XG4gIHZhciBtb3JlSW5kZW50ZWQ7XG5cbiAgLy8gcmVzdCBvZiB0aGUgbGluZXNcbiAgdmFyIG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gbGluZVJlLmV4ZWMoc3RyaW5nKSkpIHtcbiAgICB2YXIgcHJlZml4ID0gbWF0Y2hbMV0sIGxpbmUgPSBtYXRjaFsyXTtcbiAgICBtb3JlSW5kZW50ZWQgPSAobGluZVswXSA9PT0gJyAnKTtcbiAgICByZXN1bHQgKz0gcHJlZml4XG4gICAgICArICghcHJldk1vcmVJbmRlbnRlZCAmJiAhbW9yZUluZGVudGVkICYmIGxpbmUgIT09ICcnXG4gICAgICAgID8gJ1xcbicgOiAnJylcbiAgICAgICsgZm9sZExpbmUobGluZSwgd2lkdGgpO1xuICAgIHByZXZNb3JlSW5kZW50ZWQgPSBtb3JlSW5kZW50ZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHcmVlZHkgbGluZSBicmVha2luZy5cbi8vIFBpY2tzIHRoZSBsb25nZXN0IGxpbmUgdW5kZXIgdGhlIGxpbWl0IGVhY2ggdGltZSxcbi8vIG90aGVyd2lzZSBzZXR0bGVzIGZvciB0aGUgc2hvcnRlc3QgbGluZSBvdmVyIHRoZSBsaW1pdC5cbi8vIE5CLiBNb3JlLWluZGVudGVkIGxpbmVzICpjYW5ub3QqIGJlIGZvbGRlZCwgYXMgdGhhdCB3b3VsZCBhZGQgYW4gZXh0cmEgXFxuLlxuZnVuY3Rpb24gZm9sZExpbmUobGluZSwgd2lkdGgpIHtcbiAgaWYgKGxpbmUgPT09ICcnIHx8IGxpbmVbMF0gPT09ICcgJykgcmV0dXJuIGxpbmU7XG5cbiAgLy8gU2luY2UgYSBtb3JlLWluZGVudGVkIGxpbmUgYWRkcyBhIFxcbiwgYnJlYWtzIGNhbid0IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2UuXG4gIHZhciBicmVha1JlID0gLyBbXiBdL2c7IC8vIG5vdGU6IHRoZSBtYXRjaCBpbmRleCB3aWxsIGFsd2F5cyBiZSA8PSBsZW5ndGgtMi5cbiAgdmFyIG1hdGNoO1xuICAvLyBzdGFydCBpcyBhbiBpbmNsdXNpdmUgaW5kZXguIGVuZCwgY3VyciwgYW5kIG5leHQgYXJlIGV4Y2x1c2l2ZS5cbiAgdmFyIHN0YXJ0ID0gMCwgZW5kLCBjdXJyID0gMCwgbmV4dCA9IDA7XG4gIHZhciByZXN1bHQgPSAnJztcblxuICAvLyBJbnZhcmlhbnRzOiAwIDw9IHN0YXJ0IDw9IGxlbmd0aC0xLlxuICAvLyAgIDAgPD0gY3VyciA8PSBuZXh0IDw9IG1heCgwLCBsZW5ndGgtMikuIGN1cnIgLSBzdGFydCA8PSB3aWR0aC5cbiAgLy8gSW5zaWRlIHRoZSBsb29wOlxuICAvLyAgIEEgbWF0Y2ggaW1wbGllcyBsZW5ndGggPj0gMiwgc28gY3VyciBhbmQgbmV4dCBhcmUgPD0gbGVuZ3RoLTIuXG4gIHdoaWxlICgobWF0Y2ggPSBicmVha1JlLmV4ZWMobGluZSkpKSB7XG4gICAgbmV4dCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIG1haW50YWluIGludmFyaWFudDogY3VyciAtIHN0YXJ0IDw9IHdpZHRoXG4gICAgaWYgKG5leHQgLSBzdGFydCA+IHdpZHRoKSB7XG4gICAgICBlbmQgPSAoY3VyciA+IHN0YXJ0KSA/IGN1cnIgOiBuZXh0OyAvLyBkZXJpdmUgZW5kIDw9IGxlbmd0aC0yXG4gICAgICByZXN1bHQgKz0gJ1xcbicgKyBsaW5lLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgLy8gc2tpcCB0aGUgc3BhY2UgdGhhdCB3YXMgb3V0cHV0IGFzIFxcblxuICAgICAgc3RhcnQgPSBlbmQgKyAxOyAgICAgICAgICAgICAgICAgICAgLy8gZGVyaXZlIHN0YXJ0IDw9IGxlbmd0aC0xXG4gICAgfVxuICAgIGN1cnIgPSBuZXh0O1xuICB9XG5cbiAgLy8gQnkgdGhlIGludmFyaWFudHMsIHN0YXJ0IDw9IGxlbmd0aC0xLCBzbyB0aGVyZSBpcyBzb21ldGhpbmcgbGVmdCBvdmVyLlxuICAvLyBJdCBpcyBlaXRoZXIgdGhlIHdob2xlIHN0cmluZyBvciBhIHBhcnQgc3RhcnRpbmcgZnJvbSBub24td2hpdGVzcGFjZS5cbiAgcmVzdWx0ICs9ICdcXG4nO1xuICAvLyBJbnNlcnQgYSBicmVhayBpZiB0aGUgcmVtYWluZGVyIGlzIHRvbyBsb25nIGFuZCB0aGVyZSBpcyBhIGJyZWFrIGF2YWlsYWJsZS5cbiAgaWYgKGxpbmUubGVuZ3RoIC0gc3RhcnQgPiB3aWR0aCAmJiBjdXJyID4gc3RhcnQpIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCwgY3VycikgKyAnXFxuJyArIGxpbmUuc2xpY2UoY3VyciArIDEpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCArPSBsaW5lLnNsaWNlKHN0YXJ0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuc2xpY2UoMSk7IC8vIGRyb3AgZXh0cmEgXFxuIGpvaW5lclxufVxuXG4vLyBFc2NhcGVzIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcuXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGNoYXIsIG5leHRDaGFyO1xuICB2YXIgZXNjYXBlU2VxO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIENoZWNrIGZvciBzdXJyb2dhdGUgcGFpcnMgKHJlZmVyZW5jZSBVbmljb2RlIDMuMCBzZWN0aW9uIFwiMy43IFN1cnJvZ2F0ZXNcIikuXG4gICAgaWYgKGNoYXIgPj0gMHhEODAwICYmIGNoYXIgPD0gMHhEQkZGLyogaGlnaCBzdXJyb2dhdGUgKi8pIHtcbiAgICAgIG5leHRDaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpO1xuICAgICAgaWYgKG5leHRDaGFyID49IDB4REMwMCAmJiBuZXh0Q2hhciA8PSAweERGRkYvKiBsb3cgc3Vycm9nYXRlICovKSB7XG4gICAgICAgIC8vIENvbWJpbmUgdGhlIHN1cnJvZ2F0ZSBwYWlyIGFuZCBzdG9yZSBpdCBlc2NhcGVkLlxuICAgICAgICByZXN1bHQgKz0gZW5jb2RlSGV4KChjaGFyIC0gMHhEODAwKSAqIDB4NDAwICsgbmV4dENoYXIgLSAweERDMDAgKyAweDEwMDAwKTtcbiAgICAgICAgLy8gQWR2YW5jZSBpbmRleCBvbmUgZXh0cmEgc2luY2Ugd2UgYWxyZWFkeSB1c2VkIHRoYXQgY2hhciBoZXJlLlxuICAgICAgICBpKys7IGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBlc2NhcGVTZXEgPSBFU0NBUEVfU0VRVUVOQ0VTW2NoYXJdO1xuICAgIHJlc3VsdCArPSAhZXNjYXBlU2VxICYmIGlzUHJpbnRhYmxlKGNoYXIpXG4gICAgICA/IHN0cmluZ1tpXVxuICAgICAgOiBlc2NhcGVTZXEgfHwgZW5jb2RlSGV4KGNoYXIpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RbaW5kZXhdLCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBpZiAoaW5kZXggIT09IDApIF9yZXN1bHQgKz0gJywnICsgKCFzdGF0ZS5jb25kZW5zZUZsb3cgPyAnICcgOiAnJyk7XG4gICAgICBfcmVzdWx0ICs9IHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9ICdbJyArIF9yZXN1bHQgKyAnXSc7XG59XG5cbmZ1bmN0aW9uIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgY29tcGFjdCkge1xuICB2YXIgX3Jlc3VsdCA9ICcnLFxuICAgICAgX3RhZyAgICA9IHN0YXRlLnRhZyxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMuXG4gICAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RbaW5kZXhdLCB0cnVlLCB0cnVlKSkge1xuICAgICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7XG4gICAgICAgIF9yZXN1bHQgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3Jlc3VsdCArPSAnLSAnO1xuICAgICAgfVxuXG4gICAgICBfcmVzdWx0ICs9IHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9IF9yZXN1bHQgfHwgJ1tdJzsgLy8gRW1wdHkgc2VxdWVuY2UgaWYgbm8gdmFsaWQgdmFsdWVzLlxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7XG4gIHZhciBfcmVzdWx0ICAgICAgID0gJycsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIG9iamVjdEtleSxcbiAgICAgIG9iamVjdFZhbHVlLFxuICAgICAgcGFpckJ1ZmZlcjtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpckJ1ZmZlciA9IHN0YXRlLmNvbmRlbnNlRmxvdyA/ICdcIicgOiAnJztcblxuICAgIGlmIChpbmRleCAhPT0gMCkgcGFpckJ1ZmZlciArPSAnLCAnO1xuXG4gICAgb2JqZWN0S2V5ID0gb2JqZWN0S2V5TGlzdFtpbmRleF07XG4gICAgb2JqZWN0VmFsdWUgPSBvYmplY3Rbb2JqZWN0S2V5XTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0S2V5LCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KSBwYWlyQnVmZmVyICs9ICc/ICc7XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXAgKyAoc3RhdGUuY29uZGVuc2VGbG93ID8gJ1wiJyA6ICcnKSArICc6JyArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnJyA6ICcgJyk7XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdFZhbHVlLCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuXG4gICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyO1xuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9ICd7JyArIF9yZXN1bHQgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBjb21wYWN0KSB7XG4gIHZhciBfcmVzdWx0ICAgICAgID0gJycsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIG9iamVjdEtleSxcbiAgICAgIG9iamVjdFZhbHVlLFxuICAgICAgZXhwbGljaXRQYWlyLFxuICAgICAgcGFpckJ1ZmZlcjtcblxuICAvLyBBbGxvdyBzb3J0aW5nIGtleXMgc28gdGhhdCB0aGUgb3V0cHV0IGZpbGUgaXMgZGV0ZXJtaW5pc3RpY1xuICBpZiAoc3RhdGUuc29ydEtleXMgPT09IHRydWUpIHtcbiAgICAvLyBEZWZhdWx0IHNvcnRpbmdcbiAgICBvYmplY3RLZXlMaXN0LnNvcnQoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhdGUuc29ydEtleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBDdXN0b20gc29ydCBmdW5jdGlvblxuICAgIG9iamVjdEtleUxpc3Quc29ydChzdGF0ZS5zb3J0S2V5cyk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuc29ydEtleXMpIHtcbiAgICAvLyBTb21ldGhpbmcgaXMgd3JvbmdcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignc29ydEtleXMgbXVzdCBiZSBhIGJvb2xlYW4gb3IgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXJCdWZmZXIgPSAnJztcblxuICAgIGlmICghY29tcGFjdCB8fCBpbmRleCAhPT0gMCkge1xuICAgICAgcGFpckJ1ZmZlciArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgb2JqZWN0S2V5ID0gb2JqZWN0S2V5TGlzdFtpbmRleF07XG4gICAgb2JqZWN0VmFsdWUgPSBvYmplY3Rbb2JqZWN0S2V5XTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdEtleSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5LlxuICAgIH1cblxuICAgIGV4cGxpY2l0UGFpciA9IChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8XG4gICAgICAgICAgICAgICAgICAgKHN0YXRlLmR1bXAgJiYgc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KTtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWlyQnVmZmVyICs9ICc/ICc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgcGFpckJ1ZmZlciArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0VmFsdWUsIHRydWUsIGV4cGxpY2l0UGFpcikpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgcGFpckJ1ZmZlciArPSAnOic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzogJztcbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICAvLyBCb3RoIGtleSBhbmQgdmFsdWUgYXJlIHZhbGlkLlxuICAgIF9yZXN1bHQgKz0gcGFpckJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICd7fSc7IC8vIEVtcHR5IG1hcHBpbmcgaWYgbm8gdmFsaWQgcGFpcnMuXG59XG5cbmZ1bmN0aW9uIGRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZXhwbGljaXQpIHtcbiAgdmFyIF9yZXN1bHQsIHR5cGVMaXN0LCBpbmRleCwgbGVuZ3RoLCB0eXBlLCBzdHlsZTtcblxuICB0eXBlTGlzdCA9IGV4cGxpY2l0ID8gc3RhdGUuZXhwbGljaXRUeXBlcyA6IHN0YXRlLmltcGxpY2l0VHlwZXM7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHR5cGVMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0eXBlID0gdHlwZUxpc3RbaW5kZXhdO1xuXG4gICAgaWYgKCh0eXBlLmluc3RhbmNlT2YgIHx8IHR5cGUucHJlZGljYXRlKSAmJlxuICAgICAgICAoIXR5cGUuaW5zdGFuY2VPZiB8fCAoKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSAmJiAob2JqZWN0IGluc3RhbmNlb2YgdHlwZS5pbnN0YW5jZU9mKSkpICYmXG4gICAgICAgICghdHlwZS5wcmVkaWNhdGUgIHx8IHR5cGUucHJlZGljYXRlKG9iamVjdCkpKSB7XG5cbiAgICAgIHN0YXRlLnRhZyA9IGV4cGxpY2l0ID8gdHlwZS50YWcgOiAnPyc7XG5cbiAgICAgIGlmICh0eXBlLnJlcHJlc2VudCkge1xuICAgICAgICBzdHlsZSA9IHN0YXRlLnN0eWxlTWFwW3R5cGUudGFnXSB8fCB0eXBlLmRlZmF1bHRTdHlsZTtcblxuICAgICAgICBpZiAoX3RvU3RyaW5nLmNhbGwodHlwZS5yZXByZXNlbnQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nKSB7XG4gICAgICAgICAgX3Jlc3VsdCA9IHR5cGUucmVwcmVzZW50KG9iamVjdCwgc3R5bGUpO1xuICAgICAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHR5cGUucmVwcmVzZW50LCBzdHlsZSkpIHtcbiAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnRbc3R5bGVdKG9iamVjdCwgc3R5bGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCchPCcgKyB0eXBlLnRhZyArICc+IHRhZyByZXNvbHZlciBhY2NlcHRzIG5vdCBcIicgKyBzdHlsZSArICdcIiBzdHlsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuZHVtcCA9IF9yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gU2VyaWFsaXplcyBgb2JqZWN0YCBhbmQgd3JpdGVzIGl0IHRvIGdsb2JhbCBgcmVzdWx0YC5cbi8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSBvbiBpbnZhbGlkIG9iamVjdC5cbi8vXG5mdW5jdGlvbiB3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3QsIGJsb2NrLCBjb21wYWN0LCBpc2tleSkge1xuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5kdW1wID0gb2JqZWN0O1xuXG4gIGlmICghZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBmYWxzZSkpIHtcbiAgICBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIHRydWUpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBfdG9TdHJpbmcuY2FsbChzdGF0ZS5kdW1wKTtcblxuICBpZiAoYmxvY2spIHtcbiAgICBibG9jayA9IChzdGF0ZS5mbG93TGV2ZWwgPCAwIHx8IHN0YXRlLmZsb3dMZXZlbCA+IGxldmVsKTtcbiAgfVxuXG4gIHZhciBvYmplY3RPckFycmF5ID0gdHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgfHwgdHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGR1cGxpY2F0ZUluZGV4LFxuICAgICAgZHVwbGljYXRlO1xuXG4gIGlmIChvYmplY3RPckFycmF5KSB7XG4gICAgZHVwbGljYXRlSW5kZXggPSBzdGF0ZS5kdXBsaWNhdGVzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGVJbmRleCAhPT0gLTE7XG4gIH1cblxuICBpZiAoKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHwgZHVwbGljYXRlIHx8IChzdGF0ZS5pbmRlbnQgIT09IDIgJiYgbGV2ZWwgPiAwKSkge1xuICAgIGNvbXBhY3QgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChkdXBsaWNhdGUgJiYgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7XG4gICAgc3RhdGUuZHVtcCA9ICcqcmVmXycgKyBkdXBsaWNhdGVJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBpZiAob2JqZWN0T3JBcnJheSAmJiBkdXBsaWNhdGUgJiYgIXN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgICAgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICBpZiAoYmxvY2sgJiYgKE9iamVjdC5rZXlzKHN0YXRlLmR1bXApLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgaWYgKGJsb2NrICYmIChzdGF0ZS5kdW1wLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wKTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyAnICcgKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBTdHJpbmddJykge1xuICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gJz8nKSB7XG4gICAgICAgIHdyaXRlU2NhbGFyKHN0YXRlLCBzdGF0ZS5kdW1wLCBsZXZlbCwgaXNrZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhdGUuc2tpcEludmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCd1bmFjY2VwdGFibGUga2luZCBvZiBhbiBvYmplY3QgdG8gZHVtcCAnICsgdHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgc3RhdGUuZHVtcCA9ICchPCcgKyBzdGF0ZS50YWcgKyAnPiAnICsgc3RhdGUuZHVtcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhvYmplY3QsIHN0YXRlKSB7XG4gIHZhciBvYmplY3RzID0gW10sXG4gICAgICBkdXBsaWNhdGVzSW5kZXhlcyA9IFtdLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGR1cGxpY2F0ZXNJbmRleGVzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBzdGF0ZS5kdXBsaWNhdGVzLnB1c2gob2JqZWN0c1tkdXBsaWNhdGVzSW5kZXhlc1tpbmRleF1dKTtcbiAgfVxuICBzdGF0ZS51c2VkRHVwbGljYXRlcyA9IG5ldyBBcnJheShsZW5ndGgpO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0Tm9kZShvYmplY3QsIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKSB7XG4gIHZhciBvYmplY3RLZXlMaXN0LFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgaWYgKG9iamVjdCAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgIGluZGV4ID0gb2JqZWN0cy5pbmRleE9mKG9iamVjdCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgaWYgKGR1cGxpY2F0ZXNJbmRleGVzLmluZGV4T2YoaW5kZXgpID09PSAtMSkge1xuICAgICAgICBkdXBsaWNhdGVzSW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0cy5wdXNoKG9iamVjdCk7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgICAgaW5zcGVjdE5vZGUob2JqZWN0W2luZGV4XSwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgICAgaW5zcGVjdE5vZGUob2JqZWN0W29iamVjdEtleUxpc3RbaW5kZXhdXSwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGR1bXAoaW5wdXQsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKG9wdGlvbnMpO1xuXG4gIGlmICghc3RhdGUubm9SZWZzKSBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKGlucHV0LCBzdGF0ZSk7XG5cbiAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgMCwgaW5wdXQsIHRydWUsIHRydWUpKSByZXR1cm4gc3RhdGUuZHVtcCArICdcXG4nO1xuXG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gc2FmZUR1bXAoaW5wdXQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGR1bXAoaW5wdXQsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5kdW1wICAgICA9IGR1bXA7XG5tb2R1bGUuZXhwb3J0cy5zYWZlRHVtcCA9IHNhZmVEdW1wO1xuIiwiLy8gWUFNTCBlcnJvciBjbGFzcy4gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy84NDU4OTg0XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBZQU1MRXhjZXB0aW9uKHJlYXNvbiwgbWFyaykge1xuICAvLyBTdXBlciBjb25zdHJ1Y3RvclxuICBFcnJvci5jYWxsKHRoaXMpO1xuXG4gIHRoaXMubmFtZSA9ICdZQU1MRXhjZXB0aW9uJztcbiAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gIHRoaXMubWFyayA9IG1hcms7XG4gIHRoaXMubWVzc2FnZSA9ICh0aGlzLnJlYXNvbiB8fCAnKHVua25vd24gcmVhc29uKScpICsgKHRoaXMubWFyayA/ICcgJyArIHRoaXMubWFyay50b1N0cmluZygpIDogJycpO1xuXG4gIC8vIEluY2x1ZGUgc3RhY2sgdHJhY2UgaW4gZXJyb3Igb2JqZWN0XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIC8vIENocm9tZSBhbmQgTm9kZUpTXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gRkYsIElFIDEwKyBhbmQgU2FmYXJpIDYrLiBGYWxsYmFjayBmb3Igb3RoZXJzXG4gICAgdGhpcy5zdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2sgfHwgJyc7XG4gIH1cbn1cblxuXG4vLyBJbmhlcml0IGZyb20gRXJyb3JcbllBTUxFeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuWUFNTEV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBZQU1MRXhjZXB0aW9uO1xuXG5cbllBTUxFeGNlcHRpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5uYW1lICsgJzogJztcblxuICByZXN1bHQgKz0gdGhpcy5yZWFzb24gfHwgJyh1bmtub3duIHJlYXNvbiknO1xuXG4gIGlmICghY29tcGFjdCAmJiB0aGlzLm1hcmspIHtcbiAgICByZXN1bHQgKz0gJyAnICsgdGhpcy5tYXJrLnRvU3RyaW5nKCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFlBTUxFeGNlcHRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbixuby11c2UtYmVmb3JlLWRlZmluZSovXG5cbnZhciBjb21tb24gICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcbnZhciBNYXJrICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9tYXJrJyk7XG52YXIgREVGQVVMVF9TQUZFX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xudmFyIERFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcblxuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuXG52YXIgQ09OVEVYVF9GTE9XX0lOICAgPSAxO1xudmFyIENPTlRFWFRfRkxPV19PVVQgID0gMjtcbnZhciBDT05URVhUX0JMT0NLX0lOICA9IDM7XG52YXIgQ09OVEVYVF9CTE9DS19PVVQgPSA0O1xuXG5cbnZhciBDSE9NUElOR19DTElQICA9IDE7XG52YXIgQ0hPTVBJTkdfU1RSSVAgPSAyO1xudmFyIENIT01QSU5HX0tFRVAgID0gMztcblxuXG52YXIgUEFUVEVSTl9OT05fUFJJTlRBQkxFICAgICAgICAgPSAvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0YtXFx4ODRcXHg4Ni1cXHg5RlxcdUZGRkVcXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXS87XG52YXIgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MgPSAvW1xceDg1XFx1MjAyOFxcdTIwMjldLztcbnZhciBQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUyAgICAgICA9IC9bLFxcW1xcXVxce1xcfV0vO1xudmFyIFBBVFRFUk5fVEFHX0hBTkRMRSAgICAgICAgICAgID0gL14oPzohfCEhfCFbYS16XFwtXSshKSQvaTtcbnZhciBQQVRURVJOX1RBR19VUkkgICAgICAgICAgICAgICA9IC9eKD86IXxbXixcXFtcXF1cXHtcXH1dKSg/OiVbMC05YS1mXXsyfXxbMC05YS16XFwtIztcXC9cXD86QCY9XFwrXFwkLF9cXC4hflxcKidcXChcXClcXFtcXF1dKSokL2k7XG5cblxuZnVuY3Rpb24gaXNfRU9MKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDBBLyogTEYgKi8pIHx8IChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XSElURV9TUEFDRShjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwOS8qIFRhYiAqLykgfHwgKGMgPT09IDB4MjAvKiBTcGFjZSAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX1dTX09SX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwOS8qIFRhYiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgwQS8qIExGICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEQvKiBDUiAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX0ZMT1dfSU5ESUNBVE9SKGMpIHtcbiAgcmV0dXJuIGMgPT09IDB4MkMvKiAsICovIHx8XG4gICAgICAgICBjID09PSAweDVCLyogWyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1RC8qIF0gKi8gfHxcbiAgICAgICAgIGMgPT09IDB4N0IvKiB7ICovIHx8XG4gICAgICAgICBjID09PSAweDdELyogfSAqLztcbn1cblxuZnVuY3Rpb24gZnJvbUhleENvZGUoYykge1xuICB2YXIgbGM7XG5cbiAgaWYgKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHtcbiAgICByZXR1cm4gYyAtIDB4MzA7XG4gIH1cblxuICAvKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuICBsYyA9IGMgfCAweDIwO1xuXG4gIGlmICgoMHg2MS8qIGEgKi8gPD0gbGMpICYmIChsYyA8PSAweDY2LyogZiAqLykpIHtcbiAgICByZXR1cm4gbGMgLSAweDYxICsgMTA7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZWRIZXhMZW4oYykge1xuICBpZiAoYyA9PT0gMHg3OC8qIHggKi8pIHsgcmV0dXJuIDI7IH1cbiAgaWYgKGMgPT09IDB4NzUvKiB1ICovKSB7IHJldHVybiA0OyB9XG4gIGlmIChjID09PSAweDU1LyogVSAqLykgeyByZXR1cm4gODsgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gZnJvbURlY2ltYWxDb2RlKGMpIHtcbiAgaWYgKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHtcbiAgICByZXR1cm4gYyAtIDB4MzA7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVzY2FwZVNlcXVlbmNlKGMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXG4gIHJldHVybiAoYyA9PT0gMHgzMC8qIDAgKi8pID8gJ1xceDAwJyA6XG4gICAgICAgIChjID09PSAweDYxLyogYSAqLykgPyAnXFx4MDcnIDpcbiAgICAgICAgKGMgPT09IDB4NjIvKiBiICovKSA/ICdcXHgwOCcgOlxuICAgICAgICAoYyA9PT0gMHg3NC8qIHQgKi8pID8gJ1xceDA5JyA6XG4gICAgICAgIChjID09PSAweDA5LyogVGFiICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHg2RS8qIG4gKi8pID8gJ1xceDBBJyA6XG4gICAgICAgIChjID09PSAweDc2LyogdiAqLykgPyAnXFx4MEInIDpcbiAgICAgICAgKGMgPT09IDB4NjYvKiBmICovKSA/ICdcXHgwQycgOlxuICAgICAgICAoYyA9PT0gMHg3Mi8qIHIgKi8pID8gJ1xceDBEJyA6XG4gICAgICAgIChjID09PSAweDY1LyogZSAqLykgPyAnXFx4MUInIDpcbiAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgPyAnICcgOlxuICAgICAgICAoYyA9PT0gMHgyMi8qIFwiICovKSA/ICdcXHgyMicgOlxuICAgICAgICAoYyA9PT0gMHgyRi8qIC8gKi8pID8gJy8nIDpcbiAgICAgICAgKGMgPT09IDB4NUMvKiBcXCAqLykgPyAnXFx4NUMnIDpcbiAgICAgICAgKGMgPT09IDB4NEUvKiBOICovKSA/ICdcXHg4NScgOlxuICAgICAgICAoYyA9PT0gMHg1Ri8qIF8gKi8pID8gJ1xceEEwJyA6XG4gICAgICAgIChjID09PSAweDRDLyogTCAqLykgPyAnXFx1MjAyOCcgOlxuICAgICAgICAoYyA9PT0gMHg1MC8qIFAgKi8pID8gJ1xcdTIwMjknIDogJyc7XG59XG5cbmZ1bmN0aW9uIGNoYXJGcm9tQ29kZXBvaW50KGMpIHtcbiAgaWYgKGMgPD0gMHhGRkZGKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG4gIH1cbiAgLy8gRW5jb2RlIFVURi0xNiBzdXJyb2dhdGUgcGFpclxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYjQ29kZV9wb2ludHNfVS4yQjAxMDAwMF90b19VLjJCMTBGRkZGXG4gIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFxuICAgICgoYyAtIDB4MDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsXG4gICAgKChjIC0gMHgwMTAwMDApICYgMHgwM0ZGKSArIDB4REMwMFxuICApO1xufVxuXG52YXIgc2ltcGxlRXNjYXBlQ2hlY2sgPSBuZXcgQXJyYXkoMjU2KTsgLy8gaW50ZWdlciwgZm9yIGZhc3QgYWNjZXNzXG52YXIgc2ltcGxlRXNjYXBlTWFwID0gbmV3IEFycmF5KDI1Nik7XG5mb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gIHNpbXBsZUVzY2FwZUNoZWNrW2ldID0gc2ltcGxlRXNjYXBlU2VxdWVuY2UoaSkgPyAxIDogMDtcbiAgc2ltcGxlRXNjYXBlTWFwW2ldID0gc2ltcGxlRXNjYXBlU2VxdWVuY2UoaSk7XG59XG5cblxuZnVuY3Rpb24gU3RhdGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdGhpcy5pbnB1dCA9IGlucHV0O1xuXG4gIHRoaXMuZmlsZW5hbWUgID0gb3B0aW9uc1snZmlsZW5hbWUnXSAgfHwgbnVsbDtcbiAgdGhpcy5zY2hlbWEgICAgPSBvcHRpb25zWydzY2hlbWEnXSAgICB8fCBERUZBVUxUX0ZVTExfU0NIRU1BO1xuICB0aGlzLm9uV2FybmluZyA9IG9wdGlvbnNbJ29uV2FybmluZyddIHx8IG51bGw7XG4gIHRoaXMubGVnYWN5ICAgID0gb3B0aW9uc1snbGVnYWN5J10gICAgfHwgZmFsc2U7XG4gIHRoaXMuanNvbiAgICAgID0gb3B0aW9uc1snanNvbiddICAgICAgfHwgZmFsc2U7XG4gIHRoaXMubGlzdGVuZXIgID0gb3B0aW9uc1snbGlzdGVuZXInXSAgfHwgbnVsbDtcblxuICB0aGlzLmltcGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0O1xuICB0aGlzLnR5cGVNYXAgICAgICAgPSB0aGlzLnNjaGVtYS5jb21waWxlZFR5cGVNYXA7XG5cbiAgdGhpcy5sZW5ndGggICAgID0gaW5wdXQubGVuZ3RoO1xuICB0aGlzLnBvc2l0aW9uICAgPSAwO1xuICB0aGlzLmxpbmUgICAgICAgPSAwO1xuICB0aGlzLmxpbmVTdGFydCAgPSAwO1xuICB0aGlzLmxpbmVJbmRlbnQgPSAwO1xuXG4gIHRoaXMuZG9jdW1lbnRzID0gW107XG5cbiAgLypcbiAgdGhpcy52ZXJzaW9uO1xuICB0aGlzLmNoZWNrTGluZUJyZWFrcztcbiAgdGhpcy50YWdNYXA7XG4gIHRoaXMuYW5jaG9yTWFwO1xuICB0aGlzLnRhZztcbiAgdGhpcy5hbmNob3I7XG4gIHRoaXMua2luZDtcbiAgdGhpcy5yZXN1bHQ7Ki9cblxufVxuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlRXJyb3Ioc3RhdGUsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBZQU1MRXhjZXB0aW9uKFxuICAgIG1lc3NhZ2UsXG4gICAgbmV3IE1hcmsoc3RhdGUuZmlsZW5hbWUsIHN0YXRlLmlucHV0LCBzdGF0ZS5wb3NpdGlvbiwgc3RhdGUubGluZSwgKHN0YXRlLnBvc2l0aW9uIC0gc3RhdGUubGluZVN0YXJ0KSkpO1xufVxuXG5mdW5jdGlvbiB0aHJvd0Vycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHRocm93IGdlbmVyYXRlRXJyb3Ioc3RhdGUsIG1lc3NhZ2UpO1xufVxuXG5mdW5jdGlvbiB0aHJvd1dhcm5pbmcoc3RhdGUsIG1lc3NhZ2UpIHtcbiAgaWYgKHN0YXRlLm9uV2FybmluZykge1xuICAgIHN0YXRlLm9uV2FybmluZy5jYWxsKG51bGwsIGdlbmVyYXRlRXJyb3Ioc3RhdGUsIG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5cbnZhciBkaXJlY3RpdmVIYW5kbGVycyA9IHtcblxuICBZQU1MOiBmdW5jdGlvbiBoYW5kbGVZYW1sRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgbWF0Y2gsIG1ham9yLCBtaW5vcjtcblxuICAgIGlmIChzdGF0ZS52ZXJzaW9uICE9PSBudWxsKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgJVlBTUwgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIG1hdGNoID0gL14oWzAtOV0rKVxcLihbMC05XSspJC8uZXhlYyhhcmdzWzBdKTtcblxuICAgIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgYXJndW1lbnQgb2YgdGhlIFlBTUwgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgbWFqb3IgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICAgIG1pbm9yID0gcGFyc2VJbnQobWF0Y2hbMl0sIDEwKTtcblxuICAgIGlmIChtYWpvciAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuXG4gICAgc3RhdGUudmVyc2lvbiA9IGFyZ3NbMF07XG4gICAgc3RhdGUuY2hlY2tMaW5lQnJlYWtzID0gKG1pbm9yIDwgMik7XG5cbiAgICBpZiAobWlub3IgIT09IDEgJiYgbWlub3IgIT09IDIpIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQnKTtcbiAgICB9XG4gIH0sXG5cbiAgVEFHOiBmdW5jdGlvbiBoYW5kbGVUYWdEaXJlY3RpdmUoc3RhdGUsIG5hbWUsIGFyZ3MpIHtcblxuICAgIHZhciBoYW5kbGUsIHByZWZpeDtcblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1RBRyBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IHR3byBhcmd1bWVudHMnKTtcbiAgICB9XG5cbiAgICBoYW5kbGUgPSBhcmdzWzBdO1xuICAgIHByZWZpeCA9IGFyZ3NbMV07XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KGhhbmRsZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS50YWdNYXAsIGhhbmRsZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciBcIicgKyBoYW5kbGUgKyAnXCIgdGFnIGhhbmRsZScpO1xuICAgIH1cblxuICAgIGlmICghUEFUVEVSTl9UQUdfVVJJLnRlc3QocHJlZml4KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIHN0YXRlLnRhZ01hcFtoYW5kbGVdID0gcHJlZml4O1xuICB9XG59O1xuXG5cbmZ1bmN0aW9uIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBzdGFydCwgZW5kLCBjaGVja0pzb24pIHtcbiAgdmFyIF9wb3NpdGlvbiwgX2xlbmd0aCwgX2NoYXJhY3RlciwgX3Jlc3VsdDtcblxuICBpZiAoc3RhcnQgPCBlbmQpIHtcbiAgICBfcmVzdWx0ID0gc3RhdGUuaW5wdXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICBpZiAoY2hlY2tKc29uKSB7XG4gICAgICBmb3IgKF9wb3NpdGlvbiA9IDAsIF9sZW5ndGggPSBfcmVzdWx0Lmxlbmd0aDsgX3Bvc2l0aW9uIDwgX2xlbmd0aDsgX3Bvc2l0aW9uICs9IDEpIHtcbiAgICAgICAgX2NoYXJhY3RlciA9IF9yZXN1bHQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuICAgICAgICBpZiAoIShfY2hhcmFjdGVyID09PSAweDA5IHx8XG4gICAgICAgICAgICAgICgweDIwIDw9IF9jaGFyYWN0ZXIgJiYgX2NoYXJhY3RlciA8PSAweDEwRkZGRikpKSB7XG4gICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2V4cGVjdGVkIHZhbGlkIEpTT04gY2hhcmFjdGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFBBVFRFUk5fTk9OX1BSSU5UQUJMRS50ZXN0KF9yZXN1bHQpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGhlIHN0cmVhbSBjb250YWlucyBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5yZXN1bHQgKz0gX3Jlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1hcHBpbmdzKHN0YXRlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvdmVycmlkYWJsZUtleXMpIHtcbiAgdmFyIHNvdXJjZUtleXMsIGtleSwgaW5kZXgsIHF1YW50aXR5O1xuXG4gIGlmICghY29tbW9uLmlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2Fubm90IG1lcmdlIG1hcHBpbmdzOyB0aGUgcHJvdmlkZWQgc291cmNlIG9iamVjdCBpcyB1bmFjY2VwdGFibGUnKTtcbiAgfVxuXG4gIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBxdWFudGl0eSA9IHNvdXJjZUtleXMubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpbmRleF07XG5cbiAgICBpZiAoIV9oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3RpbmF0aW9uLCBrZXkpKSB7XG4gICAgICBkZXN0aW5hdGlvbltrZXldID0gc291cmNlW2tleV07XG4gICAgICBvdmVycmlkYWJsZUtleXNba2V5XSA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUsIHN0YXJ0TGluZSwgc3RhcnRQb3MpIHtcbiAgdmFyIGluZGV4LCBxdWFudGl0eTtcblxuICBrZXlOb2RlID0gU3RyaW5nKGtleU5vZGUpO1xuXG4gIGlmIChfcmVzdWx0ID09PSBudWxsKSB7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9XG5cbiAgaWYgKGtleVRhZyA9PT0gJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlTm9kZSkpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBxdWFudGl0eSA9IHZhbHVlTm9kZS5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgX3Jlc3VsdCwgdmFsdWVOb2RlW2luZGV4XSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgX3Jlc3VsdCwgdmFsdWVOb2RlLCBvdmVycmlkYWJsZUtleXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoIXN0YXRlLmpzb24gJiZcbiAgICAgICAgIV9oYXNPd25Qcm9wZXJ0eS5jYWxsKG92ZXJyaWRhYmxlS2V5cywga2V5Tm9kZSkgJiZcbiAgICAgICAgX2hhc093blByb3BlcnR5LmNhbGwoX3Jlc3VsdCwga2V5Tm9kZSkpIHtcbiAgICAgIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgfHwgc3RhdGUubGluZTtcbiAgICAgIHN0YXRlLnBvc2l0aW9uID0gc3RhcnRQb3MgfHwgc3RhdGUucG9zaXRpb247XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRlZCBtYXBwaW5nIGtleScpO1xuICAgIH1cbiAgICBfcmVzdWx0W2tleU5vZGVdID0gdmFsdWVOb2RlO1xuICAgIGRlbGV0ZSBvdmVycmlkYWJsZUtleXNba2V5Tm9kZV07XG4gIH1cblxuICByZXR1cm4gX3Jlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVhZExpbmVCcmVhayhzdGF0ZSkge1xuICB2YXIgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4MEEvKiBMRiAqLykge1xuICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4MEQvKiBDUiAqLykge1xuICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgaWYgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDBBLyogTEYgKi8pIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdhIGxpbmUgYnJlYWsgaXMgZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIHN0YXRlLmxpbmUgKz0gMTtcbiAgc3RhdGUubGluZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247XG59XG5cbmZ1bmN0aW9uIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGFsbG93Q29tbWVudHMsIGNoZWNrSW5kZW50KSB7XG4gIHZhciBsaW5lQnJlYWtzID0gMCxcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmIChhbGxvd0NvbW1lbnRzICYmIGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgZG8ge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9IHdoaWxlIChjaCAhPT0gMHgwQS8qIExGICovICYmIGNoICE9PSAweDBELyogQ1IgKi8gJiYgY2ggIT09IDApO1xuICAgIH1cblxuICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICByZWFkTGluZUJyZWFrKHN0YXRlKTtcblxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgIGxpbmVCcmVha3MrKztcbiAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSAwO1xuXG4gICAgICB3aGlsZSAoY2ggPT09IDB4MjAvKiBTcGFjZSAqLykge1xuICAgICAgICBzdGF0ZS5saW5lSW5kZW50Kys7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrSW5kZW50ICE9PSAtMSAmJiBsaW5lQnJlYWtzICE9PSAwICYmIHN0YXRlLmxpbmVJbmRlbnQgPCBjaGVja0luZGVudCkge1xuICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ2RlZmljaWVudCBpbmRlbnRhdGlvbicpO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVCcmVha3M7XG59XG5cbmZ1bmN0aW9uIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24sXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcblxuICAvLyBDb25kaXRpb24gc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCBpcyB0ZXN0ZWRcbiAgLy8gaW4gcGFyZW50IG9uIGVhY2ggY2FsbCwgZm9yIGVmZmljaWVuY3kuIE5vIG5lZWRzIHRvIHRlc3QgaGVyZSBhZ2Fpbi5cbiAgaWYgKChjaCA9PT0gMHgyRC8qIC0gKi8gfHwgY2ggPT09IDB4MkUvKiAuICovKSAmJlxuICAgICAgY2ggPT09IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMSkgJiZcbiAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDIpKSB7XG5cbiAgICBfcG9zaXRpb24gKz0gMztcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAwIHx8IGlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgY291bnQpIHtcbiAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgc3RhdGUucmVzdWx0ICs9ICcgJztcbiAgfSBlbHNlIGlmIChjb3VudCA+IDEpIHtcbiAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgY291bnQgLSAxKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHJlYWRQbGFpblNjYWxhcihzdGF0ZSwgbm9kZUluZGVudCwgd2l0aGluRmxvd0NvbGxlY3Rpb24pIHtcbiAgdmFyIHByZWNlZGluZyxcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIGNhcHR1cmVTdGFydCxcbiAgICAgIGNhcHR1cmVFbmQsXG4gICAgICBoYXNQZW5kaW5nQ29udGVudCxcbiAgICAgIF9saW5lLFxuICAgICAgX2xpbmVTdGFydCxcbiAgICAgIF9saW5lSW5kZW50LFxuICAgICAgX2tpbmQgPSBzdGF0ZS5raW5kLFxuICAgICAgX3Jlc3VsdCA9IHN0YXRlLnJlc3VsdCxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGlzX1dTX09SX0VPTChjaCkgICAgICB8fFxuICAgICAgaXNfRkxPV19JTkRJQ0FUT1IoY2gpIHx8XG4gICAgICBjaCA9PT0gMHgyMy8qICMgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDI2LyogJiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MkEvKiAqICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyMS8qICEgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDdDLyogfCAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4M0UvKiA+ICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNy8qICcgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDIyLyogXCIgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDI1LyogJSAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4NDAvKiBAICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg2MC8qIGAgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoY2ggPT09IDB4M0YvKiA/ICovIHx8IGNoID09PSAweDJELyogLSAqLykge1xuICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fFxuICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihmb2xsb3dpbmcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICBoYXNQZW5kaW5nQ29udGVudCA9IGZhbHNlO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGlmIChjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpIHx8XG4gICAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICBwcmVjZWRpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uIC0gMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0wocHJlY2VkaW5nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkgfHxcbiAgICAgICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgICAgYnJlYWs7XG5cbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIF9saW5lID0gc3RhdGUubGluZTtcbiAgICAgIF9saW5lU3RhcnQgPSBzdGF0ZS5saW5lU3RhcnQ7XG4gICAgICBfbGluZUluZGVudCA9IHN0YXRlLmxpbmVJbmRlbnQ7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgLTEpO1xuXG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+PSBub2RlSW5kZW50KSB7XG4gICAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGNhcHR1cmVFbmQ7XG4gICAgICAgIHN0YXRlLmxpbmUgPSBfbGluZTtcbiAgICAgICAgc3RhdGUubGluZVN0YXJ0ID0gX2xpbmVTdGFydDtcbiAgICAgICAgc3RhdGUubGluZUluZGVudCA9IF9saW5lSW5kZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzUGVuZGluZ0NvbnRlbnQpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIGZhbHNlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHN0YXRlLmxpbmUgLSBfbGluZSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgICBoYXNQZW5kaW5nQ29udGVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb24gKyAxO1xuICAgIH1cblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIGZhbHNlKTtcblxuICBpZiAoc3RhdGUucmVzdWx0KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gX2tpbmQ7XG4gIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVhZFNpbmdsZVF1b3RlZFNjYWxhcihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgY2gsXG4gICAgICBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQ7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjcvKiAnICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgc3RhdGUucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyNy8qICcgKi8pIHtcbiAgICAgICAgY2FwdHVyZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhcicpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTtcbn1cblxuZnVuY3Rpb24gcmVhZERvdWJsZVF1b3RlZFNjYWxhcihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgY2FwdHVyZVN0YXJ0LFxuICAgICAgY2FwdHVyZUVuZCxcbiAgICAgIGhleExlbmd0aCxcbiAgICAgIGhleFJlc3VsdCxcbiAgICAgIHRtcCxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDIyLyogXCIgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBzdGF0ZS5wb3NpdGlvbisrO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKChjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pKSAhPT0gMCkge1xuICAgIGlmIChjaCA9PT0gMHgyMi8qIFwiICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDVDLyogXFwgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpO1xuXG4gICAgICAgIC8vIFRPRE86IHJld29yayB0byBpbmxpbmUgZm4gd2l0aCBubyB0eXBlIGNhc3Q/XG4gICAgICB9IGVsc2UgaWYgKGNoIDwgMjU2ICYmIHNpbXBsZUVzY2FwZUNoZWNrW2NoXSkge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gc2ltcGxlRXNjYXBlTWFwW2NoXTtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgICAgfSBlbHNlIGlmICgodG1wID0gZXNjYXBlZEhleExlbihjaCkpID4gMCkge1xuICAgICAgICBoZXhMZW5ndGggPSB0bXA7XG4gICAgICAgIGhleFJlc3VsdCA9IDA7XG5cbiAgICAgICAgZm9yICg7IGhleExlbmd0aCA+IDA7IGhleExlbmd0aC0tKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKCh0bXAgPSBmcm9tSGV4Q29kZShjaCkpID49IDApIHtcbiAgICAgICAgICAgIGhleFJlc3VsdCA9IChoZXhSZXN1bHQgPDwgNCkgKyB0bXA7XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2V4cGVjdGVkIGhleGFkZWNpbWFsIGNoYXJhY3RlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjaGFyRnJvbUNvZGVwb2ludChoZXhSZXN1bHQpO1xuXG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIGVzY2FwZSBzZXF1ZW5jZScpO1xuICAgICAgfVxuXG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyJyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpO1xufVxuXG5mdW5jdGlvbiByZWFkRmxvd0NvbGxlY3Rpb24oc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIHJlYWROZXh0ID0gdHJ1ZSxcbiAgICAgIF9saW5lLFxuICAgICAgX3RhZyAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfcmVzdWx0LFxuICAgICAgX2FuY2hvciAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICB0ZXJtaW5hdG9yLFxuICAgICAgaXNQYWlyLFxuICAgICAgaXNFeHBsaWNpdFBhaXIsXG4gICAgICBpc01hcHBpbmcsXG4gICAgICBvdmVycmlkYWJsZUtleXMgPSB7fSxcbiAgICAgIGtleU5vZGUsXG4gICAgICBrZXlUYWcsXG4gICAgICB2YWx1ZU5vZGUsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICB0ZXJtaW5hdG9yID0gMHg1RDsvKiBdICovXG4gICAgaXNNYXBwaW5nID0gZmFsc2U7XG4gICAgX3Jlc3VsdCA9IFtdO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDdCLyogeyAqLykge1xuICAgIHRlcm1pbmF0b3IgPSAweDdEOy8qIH0gKi9cbiAgICBpc01hcHBpbmcgPSB0cnVlO1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gdGVybWluYXRvcikge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgc3RhdGUua2luZCA9IGlzTWFwcGluZyA/ICdtYXBwaW5nJyA6ICdzZXF1ZW5jZSc7XG4gICAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghcmVhZE5leHQpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdtaXNzZWQgY29tbWEgYmV0d2VlbiBmbG93IGNvbGxlY3Rpb24gZW50cmllcycpO1xuICAgIH1cblxuICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gZmFsc2U7XG5cbiAgICBpZiAoY2ggPT09IDB4M0YvKiA/ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuICAgICAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IHRydWU7XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9saW5lID0gc3RhdGUubGluZTtcbiAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChpc0V4cGxpY2l0UGFpciB8fCBzdGF0ZS5saW5lID09PSBfbGluZSkgJiYgY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBpc1BhaXIgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB2YWx1ZU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKGlzTWFwcGluZykge1xuICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSk7XG4gICAgfSBlbHNlIGlmIChpc1BhaXIpIHtcbiAgICAgIF9yZXN1bHQucHVzaChzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBudWxsLCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9yZXN1bHQucHVzaChrZXlOb2RlKTtcbiAgICB9XG5cbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDB4MkMvKiAsICovKSB7XG4gICAgICByZWFkTmV4dCA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlYWROZXh0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZmxvdyBjb2xsZWN0aW9uJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9ja1NjYWxhcihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgY2FwdHVyZVN0YXJ0LFxuICAgICAgZm9sZGluZyxcbiAgICAgIGNob21waW5nICAgICAgID0gQ0hPTVBJTkdfQ0xJUCxcbiAgICAgIGRpZFJlYWRDb250ZW50ID0gZmFsc2UsXG4gICAgICBkZXRlY3RlZEluZGVudCA9IGZhbHNlLFxuICAgICAgdGV4dEluZGVudCAgICAgPSBub2RlSW5kZW50LFxuICAgICAgZW1wdHlMaW5lcyAgICAgPSAwLFxuICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZSxcbiAgICAgIHRtcCxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDdDLyogfCAqLykge1xuICAgIGZvbGRpbmcgPSBmYWxzZTtcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgzRS8qID4gKi8pIHtcbiAgICBmb2xkaW5nID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMHgyQi8qICsgKi8gfHwgY2ggPT09IDB4MkQvKiAtICovKSB7XG4gICAgICBpZiAoQ0hPTVBJTkdfQ0xJUCA9PT0gY2hvbXBpbmcpIHtcbiAgICAgICAgY2hvbXBpbmcgPSAoY2ggPT09IDB4MkIvKiArICovKSA/IENIT01QSU5HX0tFRVAgOiBDSE9NUElOR19TVFJJUDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYSBjaG9tcGluZyBtb2RlIGlkZW50aWZpZXInKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoKHRtcCA9IGZyb21EZWNpbWFsQ29kZShjaCkpID49IDApIHtcbiAgICAgIGlmICh0bXAgPT09IDApIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBleHBsaWNpdCBpbmRlbnRhdGlvbiB3aWR0aCBvZiBhIGJsb2NrIHNjYWxhcjsgaXQgY2Fubm90IGJlIGxlc3MgdGhhbiBvbmUnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWRldGVjdGVkSW5kZW50KSB7XG4gICAgICAgIHRleHRJbmRlbnQgPSBub2RlSW5kZW50ICsgdG1wIC0gMTtcbiAgICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3JlcGVhdCBvZiBhbiBpbmRlbnRhdGlvbiB3aWR0aCBpZGVudGlmaWVyJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSk7XG5cbiAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgICAgd2hpbGUgKCFpc19FT0woY2gpICYmIChjaCAhPT0gMCkpO1xuICAgIH1cbiAgfVxuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuICAgIHN0YXRlLmxpbmVJbmRlbnQgPSAwO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIHdoaWxlICgoIWRldGVjdGVkSW5kZW50IHx8IHN0YXRlLmxpbmVJbmRlbnQgPCB0ZXh0SW5kZW50KSAmJlxuICAgICAgICAgICAoY2ggPT09IDB4MjAvKiBTcGFjZSAqLykpIHtcbiAgICAgIHN0YXRlLmxpbmVJbmRlbnQrKztcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoIWRldGVjdGVkSW5kZW50ICYmIHN0YXRlLmxpbmVJbmRlbnQgPiB0ZXh0SW5kZW50KSB7XG4gICAgICB0ZXh0SW5kZW50ID0gc3RhdGUubGluZUluZGVudDtcbiAgICB9XG5cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgZW1wdHlMaW5lcysrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gRW5kIG9mIHRoZSBzY2FsYXIuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCB0ZXh0SW5kZW50KSB7XG5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIGNob21waW5nLlxuICAgICAgaWYgKGNob21waW5nID09PSBDSE9NUElOR19LRUVQKSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgICB9IGVsc2UgaWYgKGNob21waW5nID09PSBDSE9NUElOR19DTElQKSB7XG4gICAgICAgIGlmIChkaWRSZWFkQ29udGVudCkgeyAvLyBpLmUuIG9ubHkgaWYgdGhlIHNjYWxhciBpcyBub3QgZW1wdHkuXG4gICAgICAgICAgc3RhdGUucmVzdWx0ICs9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEJyZWFrIHRoaXMgYHdoaWxlYCBjeWNsZSBhbmQgZ28gdG8gdGhlIGZ1bmNpdG9uJ3MgZXBpbG9ndWUuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBGb2xkZWQgc3R5bGU6IHVzZSBmYW5jeSBydWxlcyB0byBoYW5kbGUgbGluZSBicmVha3MuXG4gICAgaWYgKGZvbGRpbmcpIHtcblxuICAgICAgLy8gTGluZXMgc3RhcnRpbmcgd2l0aCB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIChtb3JlLWluZGVudGVkIGxpbmVzKSBhcmUgbm90IGZvbGRlZC5cbiAgICAgIGlmIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSB0cnVlO1xuICAgICAgICAvLyBleGNlcHQgZm9yIHRoZSBmaXJzdCBjb250ZW50IGxpbmUgKGNmLiBFeGFtcGxlIDguMSlcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTtcblxuICAgICAgLy8gRW5kIG9mIG1vcmUtaW5kZW50ZWQgYmxvY2suXG4gICAgICB9IGVsc2UgaWYgKGF0TW9yZUluZGVudGVkKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBlbXB0eUxpbmVzICsgMSk7XG5cbiAgICAgIC8vIEp1c3Qgb25lIGxpbmUgYnJlYWsgLSBwZXJjZWl2ZSBhcyB0aGUgc2FtZSBsaW5lLlxuICAgICAgfSBlbHNlIGlmIChlbXB0eUxpbmVzID09PSAwKSB7XG4gICAgICAgIGlmIChkaWRSZWFkQ29udGVudCkgeyAvLyBpLmUuIG9ubHkgaWYgd2UgaGF2ZSBhbHJlYWR5IHJlYWQgc29tZSBzY2FsYXIgY29udGVudC5cbiAgICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gJyAnO1xuICAgICAgICB9XG5cbiAgICAgIC8vIFNldmVyYWwgbGluZSBicmVha3MgLSBwZXJjZWl2ZSBhcyBkaWZmZXJlbnQgbGluZXMuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZW1wdHlMaW5lcyk7XG4gICAgICB9XG5cbiAgICAvLyBMaXRlcmFsIHN0eWxlOiBqdXN0IGFkZCBleGFjdCBudW1iZXIgb2YgbGluZSBicmVha3MgYmV0d2VlbiBjb250ZW50IGxpbmVzLlxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBLZWVwIGFsbCBsaW5lIGJyZWFrcyBleGNlcHQgdGhlIGhlYWRlciBsaW5lIGJyZWFrLlxuICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTtcbiAgICB9XG5cbiAgICBkaWRSZWFkQ29udGVudCA9IHRydWU7XG4gICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlO1xuICAgIGVtcHR5TGluZXMgPSAwO1xuICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgd2hpbGUgKCFpc19FT0woY2gpICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgZmFsc2UpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBfbGluZSxcbiAgICAgIF90YWcgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9hbmNob3IgICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIF9yZXN1bHQgICA9IFtdLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgZGV0ZWN0ZWQgID0gZmFsc2UsXG4gICAgICBjaDtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcblxuICAgIGlmIChjaCAhPT0gMHgyRC8qIC0gKi8pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgIGlmICghaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPD0gbm9kZUluZGVudCkge1xuICAgICAgICBfcmVzdWx0LnB1c2gobnVsbCk7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9saW5lID0gc3RhdGUubGluZTtcbiAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19JTiwgZmFsc2UsIHRydWUpO1xuICAgIF9yZXN1bHQucHVzaChzdGF0ZS5yZXN1bHQpO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSAmJiAoY2ggIT09IDApKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgc2VxdWVuY2UgZW50cnknKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoZGV0ZWN0ZWQpIHtcbiAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgc3RhdGUua2luZCA9ICdzZXF1ZW5jZSc7XG4gICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9ja01hcHBpbmcoc3RhdGUsIG5vZGVJbmRlbnQsIGZsb3dJbmRlbnQpIHtcbiAgdmFyIGZvbGxvd2luZyxcbiAgICAgIGFsbG93Q29tcGFjdCxcbiAgICAgIF9saW5lLFxuICAgICAgX3BvcyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfYW5jaG9yICAgICAgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgX3Jlc3VsdCAgICAgICA9IHt9LFxuICAgICAgb3ZlcnJpZGFibGVLZXlzID0ge30sXG4gICAgICBrZXlUYWcgICAgICAgID0gbnVsbCxcbiAgICAgIGtleU5vZGUgICAgICAgPSBudWxsLFxuICAgICAgdmFsdWVOb2RlICAgICA9IG51bGwsXG4gICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2UsXG4gICAgICBkZXRlY3RlZCAgICAgID0gZmFsc2UsXG4gICAgICBjaDtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lOyAvLyBTYXZlIHRoZSBjdXJyZW50IGxpbmUuXG4gICAgX3BvcyA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgLy9cbiAgICAvLyBFeHBsaWNpdCBub3RhdGlvbiBjYXNlLiBUaGVyZSBhcmUgdHdvIHNlcGFyYXRlIGJsb2NrczpcbiAgICAvLyBmaXJzdCBmb3IgdGhlIGtleSAoZGVub3RlZCBieSBcIj9cIikgYW5kIHNlY29uZCBmb3IgdGhlIHZhbHVlIChkZW5vdGVkIGJ5IFwiOlwiKVxuICAgIC8vXG4gICAgaWYgKChjaCA9PT0gMHgzRi8qID8gKi8gfHwgY2ggPT09IDB4M0EvKiA6ICovKSAmJiBpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuXG4gICAgICBpZiAoY2ggPT09IDB4M0YvKiA/ICovKSB7XG4gICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpO1xuICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICBhdEV4cGxpY2l0S2V5ID0gdHJ1ZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcblxuICAgICAgfSBlbHNlIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgIC8vIGkuZS4gMHgzQS8qIDogKi8gPT09IGNoYXJhY3RlciBhZnRlciB0aGUgZXhwbGljaXQga2V5LlxuICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbmNvbXBsZXRlIGV4cGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBrZXkgbm9kZSBpcyBtaXNzZWQ7IG9yIGZvbGxvd2VkIGJ5IGEgbm9uLXRhYnVsYXRlZCBlbXB0eSBsaW5lJyk7XG4gICAgICB9XG5cbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDE7XG4gICAgICBjaCA9IGZvbGxvd2luZztcblxuICAgIC8vXG4gICAgLy8gSW1wbGljaXQgbm90YXRpb24gY2FzZS4gRmxvdy1zdHlsZSBub2RlIGFzIHRoZSBrZXkgZmlyc3QsIHRoZW4gXCI6XCIsIGFuZCB0aGUgdmFsdWUuXG4gICAgLy9cbiAgICB9IGVsc2UgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfT1VULCBmYWxzZSwgdHJ1ZSkpIHtcblxuICAgICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzIGV4cGVjdGVkIGFmdGVyIHRoZSBrZXktdmFsdWUgc2VwYXJhdG9yIHdpdGhpbiBhIGJsb2NrIG1hcHBpbmcnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpO1xuICAgICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgICBhbGxvd0NvbXBhY3QgPSBmYWxzZTtcbiAgICAgICAgICBrZXlUYWcgPSBzdGF0ZS50YWc7XG4gICAgICAgICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDtcblxuICAgICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2NhbiBub3QgcmVhZCBhbiBpbXBsaWNpdCBtYXBwaW5nIHBhaXI7IGEgY29sb24gaXMgbWlzc2VkJyk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgICAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLlxuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2NhbiBub3QgcmVhZCBhIGJsb2NrIG1hcHBpbmcgZW50cnk7IGEgbXVsdGlsaW5lIGtleSBtYXkgbm90IGJlIGFuIGltcGxpY2l0IGtleScpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7IC8vIFJlYWRpbmcgaXMgZG9uZS4gR28gdG8gdGhlIGVwaWxvZ3VlLlxuICAgIH1cblxuICAgIC8vXG4gICAgLy8gQ29tbW9uIHJlYWRpbmcgY29kZSBmb3IgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQgbm90YXRpb25zLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSB7XG4gICAgICBpZiAoY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfT1VULCB0cnVlLCBhbGxvd0NvbXBhY3QpKSB7XG4gICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUsIF9saW5lLCBfcG9zKTtcbiAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50ICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgaW5kZW50YXRpb24gb2YgYSBtYXBwaW5nIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gRXBpbG9ndWUuXG4gIC8vXG5cbiAgLy8gU3BlY2lhbCBjYXNlOiBsYXN0IG1hcHBpbmcncyBub2RlIGNvbnRhaW5zIG9ubHkgdGhlIGtleSBpbiBleHBsaWNpdCBub3RhdGlvbi5cbiAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCk7XG4gIH1cblxuICAvLyBFeHBvc2UgdGhlIHJlc3VsdGluZyBtYXBwaW5nLlxuICBpZiAoZGV0ZWN0ZWQpIHtcbiAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgc3RhdGUua2luZCA9ICdtYXBwaW5nJztcbiAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIGRldGVjdGVkO1xufVxuXG5mdW5jdGlvbiByZWFkVGFnUHJvcGVydHkoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbixcbiAgICAgIGlzVmVyYmF0aW0gPSBmYWxzZSxcbiAgICAgIGlzTmFtZWQgICAgPSBmYWxzZSxcbiAgICAgIHRhZ0hhbmRsZSxcbiAgICAgIHRhZ05hbWUsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyMS8qICEgKi8pIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUudGFnICE9PSBudWxsKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mIGEgdGFnIHByb3BlcnR5Jyk7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDNDLyogPCAqLykge1xuICAgIGlzVmVyYmF0aW0gPSB0cnVlO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB9IGVsc2UgaWYgKGNoID09PSAweDIxLyogISAqLykge1xuICAgIGlzTmFtZWQgPSB0cnVlO1xuICAgIHRhZ0hhbmRsZSA9ICchISc7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIH0gZWxzZSB7XG4gICAgdGFnSGFuZGxlID0gJyEnO1xuICB9XG5cbiAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgIHdoaWxlIChjaCAhPT0gMCAmJiBjaCAhPT0gMHgzRS8qID4gKi8pO1xuXG4gICAgaWYgKHN0YXRlLnBvc2l0aW9uIDwgc3RhdGUubGVuZ3RoKSB7XG4gICAgICB0YWdOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIHZlcmJhdGltIHRhZycpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcblxuICAgICAgaWYgKGNoID09PSAweDIxLyogISAqLykge1xuICAgICAgICBpZiAoIWlzTmFtZWQpIHtcbiAgICAgICAgICB0YWdIYW5kbGUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24gLSAxLCBzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICAgICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdCh0YWdIYW5kbGUpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZWQgdGFnIGhhbmRsZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICAgICAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbiArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZXhjbGFtYXRpb24gbWFya3MnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgdGFnTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKFBBVFRFUk5fRkxPV19JTkRJQ0FUT1JTLnRlc3QodGFnTmFtZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGZsb3cgaW5kaWNhdG9yIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFnTmFtZSAmJiAhUEFUVEVSTl9UQUdfVVJJLnRlc3QodGFnTmFtZSkpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIG5hbWUgY2Fubm90IGNvbnRhaW4gc3VjaCBjaGFyYWN0ZXJzOiAnICsgdGFnTmFtZSk7XG4gIH1cblxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIHN0YXRlLnRhZyA9IHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS50YWdNYXAsIHRhZ0hhbmRsZSkpIHtcbiAgICBzdGF0ZS50YWcgPSBzdGF0ZS50YWdNYXBbdGFnSGFuZGxlXSArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09ICchJykge1xuICAgIHN0YXRlLnRhZyA9ICchJyArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09ICchIScpIHtcbiAgICBzdGF0ZS50YWcgPSAndGFnOnlhbWwub3JnLDIwMDI6JyArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5kZWNsYXJlZCB0YWcgaGFuZGxlIFwiJyArIHRhZ0hhbmRsZSArICdcIicpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjYvKiAmICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhbiBhbmNob3IgcHJvcGVydHknKTtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFuY2hvciBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7XG4gIH1cblxuICBzdGF0ZS5hbmNob3IgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRBbGlhcyhzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLCBhbGlhcyxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDJBLyogKiAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFsaWFzIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIGFsaWFzID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKCFzdGF0ZS5hbmNob3JNYXAuaGFzT3duUHJvcGVydHkoYWxpYXMpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuaWRlbnRpZmllZCBhbGlhcyBcIicgKyBhbGlhcyArICdcIicpO1xuICB9XG5cbiAgc3RhdGUucmVzdWx0ID0gc3RhdGUuYW5jaG9yTWFwW2FsaWFzXTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29tcG9zZU5vZGUoc3RhdGUsIHBhcmVudEluZGVudCwgbm9kZUNvbnRleHQsIGFsbG93VG9TZWVrLCBhbGxvd0NvbXBhY3QpIHtcbiAgdmFyIGFsbG93QmxvY2tTdHlsZXMsXG4gICAgICBhbGxvd0Jsb2NrU2NhbGFycyxcbiAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyxcbiAgICAgIGluZGVudFN0YXR1cyA9IDEsIC8vIDE6IHRoaXM+cGFyZW50LCAwOiB0aGlzPXBhcmVudCwgLTE6IHRoaXM8cGFyZW50XG4gICAgICBhdE5ld0xpbmUgID0gZmFsc2UsXG4gICAgICBoYXNDb250ZW50ID0gZmFsc2UsXG4gICAgICB0eXBlSW5kZXgsXG4gICAgICB0eXBlUXVhbnRpdHksXG4gICAgICB0eXBlLFxuICAgICAgZmxvd0luZGVudCxcbiAgICAgIGJsb2NrSW5kZW50O1xuXG4gIGlmIChzdGF0ZS5saXN0ZW5lciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmxpc3RlbmVyKCdvcGVuJywgc3RhdGUpO1xuICB9XG5cbiAgc3RhdGUudGFnICAgID0gbnVsbDtcbiAgc3RhdGUuYW5jaG9yID0gbnVsbDtcbiAgc3RhdGUua2luZCAgID0gbnVsbDtcbiAgc3RhdGUucmVzdWx0ID0gbnVsbDtcblxuICBhbGxvd0Jsb2NrU3R5bGVzID0gYWxsb3dCbG9ja1NjYWxhcnMgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPVxuICAgIENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCB8fFxuICAgIENPTlRFWFRfQkxPQ0tfSU4gID09PSBub2RlQ29udGV4dDtcblxuICBpZiAoYWxsb3dUb1NlZWspIHtcbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICBhdE5ld0xpbmUgPSB0cnVlO1xuXG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgd2hpbGUgKHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkgfHwgcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlKSkge1xuICAgICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgICBhdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhbGxvd0Jsb2NrU3R5bGVzO1xuXG4gICAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAtMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFsbG93QmxvY2tDb2xsZWN0aW9ucykge1xuICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGF0TmV3TGluZSB8fCBhbGxvd0NvbXBhY3Q7XG4gIH1cblxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxIHx8IENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgIGlmIChDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0IHx8IENPTlRFWFRfRkxPV19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50ICsgMTtcbiAgICB9XG5cbiAgICBibG9ja0luZGVudCA9IHN0YXRlLnBvc2l0aW9uIC0gc3RhdGUubGluZVN0YXJ0O1xuXG4gICAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgICAgaWYgKGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJlxuICAgICAgICAgIChyZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgYmxvY2tJbmRlbnQpIHx8XG4gICAgICAgICAgIHJlYWRCbG9ja01hcHBpbmcoc3RhdGUsIGJsb2NrSW5kZW50LCBmbG93SW5kZW50KSkgfHxcbiAgICAgICAgICByZWFkRmxvd0NvbGxlY3Rpb24oc3RhdGUsIGZsb3dJbmRlbnQpKSB7XG4gICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKChhbGxvd0Jsb2NrU2NhbGFycyAmJiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgICAgcmVhZFNpbmdsZVF1b3RlZFNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkgfHxcbiAgICAgICAgICAgIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkQWxpYXMoc3RhdGUpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc3RhdGUudGFnICE9PSBudWxsIHx8IHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2FsaWFzIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAocmVhZFBsYWluU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLnRhZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGUudGFnID0gJz8nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5kZW50U3RhdHVzID09PSAwKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2U6IGJsb2NrIHNlcXVlbmNlcyBhcmUgYWxsb3dlZCB0byBoYXZlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwgYXMgdGhlIHBhcmVudC5cbiAgICAgIC8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjc5OTc4NFxuICAgICAgaGFzQ29udGVudCA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgYmxvY2tJbmRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnIScpIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnPycpIHtcbiAgICAgIGZvciAodHlwZUluZGV4ID0gMCwgdHlwZVF1YW50aXR5ID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbdHlwZUluZGV4XTtcblxuICAgICAgICAvLyBJbXBsaWNpdCByZXNvbHZpbmcgaXMgbm90IGFsbG93ZWQgZm9yIG5vbi1zY2FsYXIgdHlwZXMsIGFuZCAnPydcbiAgICAgICAgLy8gbm9uLXNwZWNpZmljIHRhZyBpcyBvbmx5IGFzc2lnbmVkIHRvIHBsYWluIHNjYWxhcnMuIFNvLCBpdCBpc24ndFxuICAgICAgICAvLyBuZWVkZWQgdG8gY2hlY2sgZm9yICdraW5kJyBjb25mb3JtaXR5LlxuXG4gICAgICAgIGlmICh0eXBlLnJlc29sdmUoc3RhdGUucmVzdWx0KSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgICBzdGF0ZS5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgICAgIHN0YXRlLnRhZyA9IHR5cGUudGFnO1xuICAgICAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudHlwZU1hcFtzdGF0ZS5raW5kIHx8ICdmYWxsYmFjayddLCBzdGF0ZS50YWcpKSB7XG4gICAgICB0eXBlID0gc3RhdGUudHlwZU1hcFtzdGF0ZS5raW5kIHx8ICdmYWxsYmFjayddW3N0YXRlLnRhZ107XG5cbiAgICAgIGlmIChzdGF0ZS5yZXN1bHQgIT09IG51bGwgJiYgdHlwZS5raW5kICE9PSBzdGF0ZS5raW5kKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgbm9kZSBraW5kIGZvciAhPCcgKyBzdGF0ZS50YWcgKyAnPiB0YWc7IGl0IHNob3VsZCBiZSBcIicgKyB0eXBlLmtpbmQgKyAnXCIsIG5vdCBcIicgKyBzdGF0ZS5raW5kICsgJ1wiJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCkpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkXG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW5ub3QgcmVzb2x2ZSBhIG5vZGUgd2l0aCAhPCcgKyBzdGF0ZS50YWcgKyAnPiBleHBsaWNpdCB0YWcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCA9IHR5cGUuY29uc3RydWN0KHN0YXRlLnJlc3VsdCk7XG4gICAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biB0YWcgITwnICsgc3RhdGUudGFnICsgJz4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5saXN0ZW5lcignY2xvc2UnLCBzdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLnRhZyAhPT0gbnVsbCB8fCAgc3RhdGUuYW5jaG9yICE9PSBudWxsIHx8IGhhc0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHJlYWREb2N1bWVudChzdGF0ZSkge1xuICB2YXIgZG9jdW1lbnRTdGFydCA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgX3Bvc2l0aW9uLFxuICAgICAgZGlyZWN0aXZlTmFtZSxcbiAgICAgIGRpcmVjdGl2ZUFyZ3MsXG4gICAgICBoYXNEaXJlY3RpdmVzID0gZmFsc2UsXG4gICAgICBjaDtcblxuICBzdGF0ZS52ZXJzaW9uID0gbnVsbDtcbiAgc3RhdGUuY2hlY2tMaW5lQnJlYWtzID0gc3RhdGUubGVnYWN5O1xuICBzdGF0ZS50YWdNYXAgPSB7fTtcbiAgc3RhdGUuYW5jaG9yTWFwID0ge307XG5cbiAgd2hpbGUgKChjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pKSAhPT0gMCkge1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IDAgfHwgY2ggIT09IDB4MjUvKiAlICovKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBkaXJlY3RpdmVOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG4gICAgZGlyZWN0aXZlQXJncyA9IFtdO1xuXG4gICAgaWYgKGRpcmVjdGl2ZU5hbWUubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2RpcmVjdGl2ZSBuYW1lIG11c3Qgbm90IGJlIGxlc3MgdGhhbiBvbmUgY2hhcmFjdGVyIGluIGxlbmd0aCcpO1xuICAgIH1cblxuICAgIHdoaWxlIChjaCAhPT0gMCkge1xuICAgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19FT0woY2gpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc19FT0woY2gpKSBicmVhaztcblxuICAgICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGRpcmVjdGl2ZUFyZ3MucHVzaChzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKGNoICE9PSAwKSByZWFkTGluZUJyZWFrKHN0YXRlKTtcblxuICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChkaXJlY3RpdmVIYW5kbGVycywgZGlyZWN0aXZlTmFtZSkpIHtcbiAgICAgIGRpcmVjdGl2ZUhhbmRsZXJzW2RpcmVjdGl2ZU5hbWVdKHN0YXRlLCBkaXJlY3RpdmVOYW1lLCBkaXJlY3RpdmVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAndW5rbm93biBkb2N1bWVudCBkaXJlY3RpdmUgXCInICsgZGlyZWN0aXZlTmFtZSArICdcIicpO1xuICAgIH1cbiAgfVxuXG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gMCAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgICAgID09PSAweDJELyogLSAqLyAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpID09PSAweDJELyogLSAqLyAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDIpID09PSAweDJELyogLSAqLykge1xuICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIH0gZWxzZSBpZiAoaGFzRGlyZWN0aXZlcykge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmVzIGVuZCBtYXJrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBjb21wb3NlTm9kZShzdGF0ZSwgc3RhdGUubGluZUluZGVudCAtIDEsIENPTlRFWFRfQkxPQ0tfT1VULCBmYWxzZSwgdHJ1ZSk7XG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICBpZiAoc3RhdGUuY2hlY2tMaW5lQnJlYWtzICYmXG4gICAgICBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUy50ZXN0KHN0YXRlLmlucHV0LnNsaWNlKGRvY3VtZW50U3RhcnQsIHN0YXRlLnBvc2l0aW9uKSkpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdub24tQVNDSUkgbGluZSBicmVha3MgYXJlIGludGVycHJldGVkIGFzIGNvbnRlbnQnKTtcbiAgfVxuXG4gIHN0YXRlLmRvY3VtZW50cy5wdXNoKHN0YXRlLnJlc3VsdCk7XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuXG4gICAgaWYgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDJFLyogLiAqLykge1xuICAgICAgc3RhdGUucG9zaXRpb24gKz0gMztcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2VuZCBvZiB0aGUgc3RyZWFtIG9yIGEgZG9jdW1lbnQgc2VwYXJhdG9yIGlzIGV4cGVjdGVkJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5cblxuZnVuY3Rpb24gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucykge1xuICBpbnB1dCA9IFN0cmluZyhpbnB1dCk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChpbnB1dC5sZW5ndGggIT09IDApIHtcblxuICAgIC8vIEFkZCB0YWlsaW5nIGBcXG5gIGlmIG5vdCBleGlzdHNcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMHgwQS8qIExGICovICYmXG4gICAgICAgIGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEQvKiBDUiAqLykge1xuICAgICAgaW5wdXQgKz0gJ1xcbic7XG4gICAgfVxuXG4gICAgLy8gU3RyaXAgQk9NXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICB9XG4gIH1cblxuICB2YXIgc3RhdGUgPSBuZXcgU3RhdGUoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIC8vIFVzZSAwIGFzIHN0cmluZyB0ZXJtaW5hdG9yLiBUaGF0IHNpZ25pZmljYW50bHkgc2ltcGxpZmllcyBib3VuZHMgY2hlY2suXG4gIHN0YXRlLmlucHV0ICs9ICdcXDAnO1xuXG4gIHdoaWxlIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyMC8qIFNwYWNlICovKSB7XG4gICAgc3RhdGUubGluZUluZGVudCArPSAxO1xuICAgIHN0YXRlLnBvc2l0aW9uICs9IDE7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUucG9zaXRpb24gPCAoc3RhdGUubGVuZ3RoIC0gMSkpIHtcbiAgICByZWFkRG9jdW1lbnQoc3RhdGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlLmRvY3VtZW50cztcbn1cblxuXG5mdW5jdGlvbiBsb2FkQWxsKGlucHV0LCBpdGVyYXRvciwgb3B0aW9ucykge1xuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyksIGluZGV4LCBsZW5ndGg7XG5cbiAgaWYgKHR5cGVvZiBpdGVyYXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBkb2N1bWVudHM7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gZG9jdW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpdGVyYXRvcihkb2N1bWVudHNbaW5kZXhdKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWQoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50cyA9IGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBkb2N1bWVudHNbMF07XG4gIH1cbiAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2V4cGVjdGVkIGEgc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzdHJlYW0sIGJ1dCBmb3VuZCBtb3JlJyk7XG59XG5cblxuZnVuY3Rpb24gc2FmZUxvYWRBbGwoaW5wdXQsIG91dHB1dCwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIG91dHB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGxvYWRBbGwoaW5wdXQsIG91dHB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxvYWRBbGwoaW5wdXQsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2FmZUxvYWQoaW5wdXQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGxvYWQoaW5wdXQsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzLmxvYWRBbGwgICAgID0gbG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLmxvYWQgICAgICAgID0gbG9hZDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkQWxsID0gc2FmZUxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZCAgICA9IHNhZmVMb2FkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbicpO1xuXG5cbmZ1bmN0aW9uIE1hcmsobmFtZSwgYnVmZmVyLCBwb3NpdGlvbiwgbGluZSwgY29sdW1uKSB7XG4gIHRoaXMubmFtZSAgICAgPSBuYW1lO1xuICB0aGlzLmJ1ZmZlciAgID0gYnVmZmVyO1xuICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG4gIHRoaXMubGluZSAgICAgPSBsaW5lO1xuICB0aGlzLmNvbHVtbiAgID0gY29sdW1uO1xufVxuXG5cbk1hcmsucHJvdG90eXBlLmdldFNuaXBwZXQgPSBmdW5jdGlvbiBnZXRTbmlwcGV0KGluZGVudCwgbWF4TGVuZ3RoKSB7XG4gIHZhciBoZWFkLCBzdGFydCwgdGFpbCwgZW5kLCBzbmlwcGV0O1xuXG4gIGlmICghdGhpcy5idWZmZXIpIHJldHVybiBudWxsO1xuXG4gIGluZGVudCA9IGluZGVudCB8fCA0O1xuICBtYXhMZW5ndGggPSBtYXhMZW5ndGggfHwgNzU7XG5cbiAgaGVhZCA9ICcnO1xuICBzdGFydCA9IHRoaXMucG9zaXRpb247XG5cbiAgd2hpbGUgKHN0YXJ0ID4gMCAmJiAnXFx4MDBcXHJcXG5cXHg4NVxcdTIwMjhcXHUyMDI5Jy5pbmRleE9mKHRoaXMuYnVmZmVyLmNoYXJBdChzdGFydCAtIDEpKSA9PT0gLTEpIHtcbiAgICBzdGFydCAtPSAxO1xuICAgIGlmICh0aGlzLnBvc2l0aW9uIC0gc3RhcnQgPiAobWF4TGVuZ3RoIC8gMiAtIDEpKSB7XG4gICAgICBoZWFkID0gJyAuLi4gJztcbiAgICAgIHN0YXJ0ICs9IDU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0YWlsID0gJyc7XG4gIGVuZCA9IHRoaXMucG9zaXRpb247XG5cbiAgd2hpbGUgKGVuZCA8IHRoaXMuYnVmZmVyLmxlbmd0aCAmJiAnXFx4MDBcXHJcXG5cXHg4NVxcdTIwMjhcXHUyMDI5Jy5pbmRleE9mKHRoaXMuYnVmZmVyLmNoYXJBdChlbmQpKSA9PT0gLTEpIHtcbiAgICBlbmQgKz0gMTtcbiAgICBpZiAoZW5kIC0gdGhpcy5wb3NpdGlvbiA+IChtYXhMZW5ndGggLyAyIC0gMSkpIHtcbiAgICAgIHRhaWwgPSAnIC4uLiAnO1xuICAgICAgZW5kIC09IDU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzbmlwcGV0ID0gdGhpcy5idWZmZXIuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgcmV0dXJuIGNvbW1vbi5yZXBlYXQoJyAnLCBpbmRlbnQpICsgaGVhZCArIHNuaXBwZXQgKyB0YWlsICsgJ1xcbicgK1xuICAgICAgICAgY29tbW9uLnJlcGVhdCgnICcsIGluZGVudCArIHRoaXMucG9zaXRpb24gLSBzdGFydCArIGhlYWQubGVuZ3RoKSArICdeJztcbn07XG5cblxuTWFyay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhjb21wYWN0KSB7XG4gIHZhciBzbmlwcGV0LCB3aGVyZSA9ICcnO1xuXG4gIGlmICh0aGlzLm5hbWUpIHtcbiAgICB3aGVyZSArPSAnaW4gXCInICsgdGhpcy5uYW1lICsgJ1wiICc7XG4gIH1cblxuICB3aGVyZSArPSAnYXQgbGluZSAnICsgKHRoaXMubGluZSArIDEpICsgJywgY29sdW1uICcgKyAodGhpcy5jb2x1bW4gKyAxKTtcblxuICBpZiAoIWNvbXBhY3QpIHtcbiAgICBzbmlwcGV0ID0gdGhpcy5nZXRTbmlwcGV0KCk7XG5cbiAgICBpZiAoc25pcHBldCkge1xuICAgICAgd2hlcmUgKz0gJzpcXG4nICsgc25pcHBldDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2hlcmU7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTWFyaztcbiIsIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuKi9cblxudmFyIGNvbW1vbiAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIFR5cGUgICAgICAgICAgPSByZXF1aXJlKCcuL3R5cGUnKTtcblxuXG5mdW5jdGlvbiBjb21waWxlTGlzdChzY2hlbWEsIG5hbWUsIHJlc3VsdCkge1xuICB2YXIgZXhjbHVkZSA9IFtdO1xuXG4gIHNjaGVtYS5pbmNsdWRlLmZvckVhY2goZnVuY3Rpb24gKGluY2x1ZGVkU2NoZW1hKSB7XG4gICAgcmVzdWx0ID0gY29tcGlsZUxpc3QoaW5jbHVkZWRTY2hlbWEsIG5hbWUsIHJlc3VsdCk7XG4gIH0pO1xuXG4gIHNjaGVtYVtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50VHlwZSkge1xuICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uIChwcmV2aW91c1R5cGUsIHByZXZpb3VzSW5kZXgpIHtcbiAgICAgIGlmIChwcmV2aW91c1R5cGUudGFnID09PSBjdXJyZW50VHlwZS50YWcgJiYgcHJldmlvdXNUeXBlLmtpbmQgPT09IGN1cnJlbnRUeXBlLmtpbmQpIHtcbiAgICAgICAgZXhjbHVkZS5wdXNoKHByZXZpb3VzSW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVzdWx0LnB1c2goY3VycmVudFR5cGUpO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICByZXR1cm4gZXhjbHVkZS5pbmRleE9mKGluZGV4KSA9PT0gLTE7XG4gIH0pO1xufVxuXG5cbmZ1bmN0aW9uIGNvbXBpbGVNYXAoLyogbGlzdHMuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgc2NhbGFyOiB7fSxcbiAgICAgICAgc2VxdWVuY2U6IHt9LFxuICAgICAgICBtYXBwaW5nOiB7fSxcbiAgICAgICAgZmFsbGJhY2s6IHt9XG4gICAgICB9LCBpbmRleCwgbGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3RUeXBlKHR5cGUpIHtcbiAgICByZXN1bHRbdHlwZS5raW5kXVt0eXBlLnRhZ10gPSByZXN1bHRbJ2ZhbGxiYWNrJ11bdHlwZS50YWddID0gdHlwZTtcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGFyZ3VtZW50c1tpbmRleF0uZm9yRWFjaChjb2xsZWN0VHlwZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBTY2hlbWEoZGVmaW5pdGlvbikge1xuICB0aGlzLmluY2x1ZGUgID0gZGVmaW5pdGlvbi5pbmNsdWRlICB8fCBbXTtcbiAgdGhpcy5pbXBsaWNpdCA9IGRlZmluaXRpb24uaW1wbGljaXQgfHwgW107XG4gIHRoaXMuZXhwbGljaXQgPSBkZWZpbml0aW9uLmV4cGxpY2l0IHx8IFtdO1xuXG4gIHRoaXMuaW1wbGljaXQuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIGlmICh0eXBlLmxvYWRLaW5kICYmIHR5cGUubG9hZEtpbmQgIT09ICdzY2FsYXInKSB7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVGhlcmUgaXMgYSBub24tc2NhbGFyIHR5cGUgaW4gdGhlIGltcGxpY2l0IGxpc3Qgb2YgYSBzY2hlbWEuIEltcGxpY2l0IHJlc29sdmluZyBvZiBzdWNoIHR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuICB9KTtcblxuICB0aGlzLmNvbXBpbGVkSW1wbGljaXQgPSBjb21waWxlTGlzdCh0aGlzLCAnaW1wbGljaXQnLCBbXSk7XG4gIHRoaXMuY29tcGlsZWRFeHBsaWNpdCA9IGNvbXBpbGVMaXN0KHRoaXMsICdleHBsaWNpdCcsIFtdKTtcbiAgdGhpcy5jb21waWxlZFR5cGVNYXAgID0gY29tcGlsZU1hcCh0aGlzLmNvbXBpbGVkSW1wbGljaXQsIHRoaXMuY29tcGlsZWRFeHBsaWNpdCk7XG59XG5cblxuU2NoZW1hLkRFRkFVTFQgPSBudWxsO1xuXG5cblNjaGVtYS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGVTY2hlbWEoKSB7XG4gIHZhciBzY2hlbWFzLCB0eXBlcztcblxuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzY2hlbWFzID0gU2NoZW1hLkRFRkFVTFQ7XG4gICAgICB0eXBlcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAyOlxuICAgICAgc2NoZW1hcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHR5cGVzID0gYXJndW1lbnRzWzFdO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1dyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIFNjaGVtYS5jcmVhdGUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHNjaGVtYXMgPSBjb21tb24udG9BcnJheShzY2hlbWFzKTtcbiAgdHlwZXMgPSBjb21tb24udG9BcnJheSh0eXBlcyk7XG5cbiAgaWYgKCFzY2hlbWFzLmV2ZXJ5KGZ1bmN0aW9uIChzY2hlbWEpIHsgcmV0dXJuIHNjaGVtYSBpbnN0YW5jZW9mIFNjaGVtYTsgfSkpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignU3BlY2lmaWVkIGxpc3Qgb2Ygc3VwZXIgc2NoZW1hcyAob3IgYSBzaW5nbGUgU2NoZW1hIG9iamVjdCkgY29udGFpbnMgYSBub24tU2NoZW1hIG9iamVjdC4nKTtcbiAgfVxuXG4gIGlmICghdHlwZXMuZXZlcnkoZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBUeXBlOyB9KSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBZQU1MIHR5cGVzIChvciBhIHNpbmdsZSBUeXBlIG9iamVjdCkgY29udGFpbnMgYSBub24tVHlwZSBvYmplY3QuJyk7XG4gIH1cblxuICByZXR1cm4gbmV3IFNjaGVtYSh7XG4gICAgaW5jbHVkZTogc2NoZW1hcyxcbiAgICBleHBsaWNpdDogdHlwZXNcbiAgfSk7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU2NoZW1hO1xuIiwiLy8gU3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODA0OTIzXG4vL1xuLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuXG4vLyBTbywgQ29yZSBzY2hlbWEgaGFzIG5vIGRpc3RpbmN0aW9ucyBmcm9tIEpTT04gc2NoZW1hIGlzIEpTLVlBTUwuXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9qc29uJylcbiAgXVxufSk7XG4iLCIvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBsb2FkYCBmdW5jdGlvbi5cbi8vIEl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGlzIHNjaGVtYSBpcyBiYXNlZCBvbiBKUy1ZQU1MJ3MgZGVmYXVsdCBzYWZlIHNjaGVtYSBhbmQgaW5jbHVkZXNcbi8vIEphdmFTY3JpcHQtc3BlY2lmaWMgdHlwZXM6ICEhanMvdW5kZWZpbmVkLCAhIWpzL3JlZ2V4cCBhbmQgISFqcy9mdW5jdGlvbi5cbi8vXG4vLyBBbHNvIHRoaXMgc2NoZW1hIGlzIHVzZWQgYXMgZGVmYXVsdCBiYXNlIHNjaGVtYSBhdCBgU2NoZW1hLmNyZWF0ZWAgZnVuY3Rpb24uXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYS5ERUZBVUxUID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2RlZmF1bHRfc2FmZScpXG4gIF0sXG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy91bmRlZmluZWQnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL3JlZ2V4cCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvZnVuY3Rpb24nKVxuICBdXG59KTtcbiIsIi8vIEpTLVlBTUwncyBkZWZhdWx0IHNjaGVtYSBmb3IgYHNhZmVMb2FkYCBmdW5jdGlvbi5cbi8vIEl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGlzIHNjaGVtYSBpcyBiYXNlZCBvbiBzdGFuZGFyZCBZQU1MJ3MgQ29yZSBzY2hlbWEgYW5kIGluY2x1ZGVzIG1vc3Qgb2Zcbi8vIGV4dHJhIHR5cGVzIGRlc2NyaWJlZCBhdCBZQU1MIHRhZyByZXBvc2l0b3J5LiAoaHR0cDovL3lhbWwub3JnL3R5cGUvKVxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vY29yZScpXG4gIF0sXG4gIGltcGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS90aW1lc3RhbXAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL21lcmdlJylcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL2JpbmFyeScpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvb21hcCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvcGFpcnMnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3NldCcpXG4gIF1cbn0pO1xuIiwiLy8gU3RhbmRhcmQgWUFNTCdzIEZhaWxzYWZlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMjM0NlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL3N0cicpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvc2VxJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tYXAnKVxuICBdXG59KTtcbiIsIi8vIFN0YW5kYXJkIFlBTUwncyBKU09OIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMzIzMVxuLy9cbi8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLlxuLy8gU28sIHRoaXMgc2NoZW1hIGlzIG5vdCBzdWNoIHN0cmljdCBhcyBkZWZpbmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vLyBJdCBhbGxvd3MgbnVtYmVycyBpbiBiaW5hcnkgbm90YWlvbiwgdXNlIGBOdWxsYCBhbmQgYE5VTExgIGFzIGBudWxsYCwgZXRjLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vZmFpbHNhZmUnKVxuICBdLFxuICBpbXBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvbnVsbCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvYm9vbCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvaW50JyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9mbG9hdCcpXG4gIF1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgWUFNTEV4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG5cbnZhciBUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMgPSBbXG4gICdraW5kJyxcbiAgJ3Jlc29sdmUnLFxuICAnY29uc3RydWN0JyxcbiAgJ2luc3RhbmNlT2YnLFxuICAncHJlZGljYXRlJyxcbiAgJ3JlcHJlc2VudCcsXG4gICdkZWZhdWx0U3R5bGUnLFxuICAnc3R5bGVBbGlhc2VzJ1xuXTtcblxudmFyIFlBTUxfTk9ERV9LSU5EUyA9IFtcbiAgJ3NjYWxhcicsXG4gICdzZXF1ZW5jZScsXG4gICdtYXBwaW5nJ1xuXTtcblxuZnVuY3Rpb24gY29tcGlsZVN0eWxlQWxpYXNlcyhtYXApIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGlmIChtYXAgIT09IG51bGwpIHtcbiAgICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICBtYXBbc3R5bGVdLmZvckVhY2goZnVuY3Rpb24gKGFsaWFzKSB7XG4gICAgICAgIHJlc3VsdFtTdHJpbmcoYWxpYXMpXSA9IHN0eWxlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBUeXBlKHRhZywgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1Vua25vd24gb3B0aW9uIFwiJyArIG5hbWUgKyAnXCIgaXMgbWV0IGluIGRlZmluaXRpb24gb2YgXCInICsgdGFnICsgJ1wiIFlBTUwgdHlwZS4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IEFkZCB0YWcgZm9ybWF0IGNoZWNrLlxuICB0aGlzLnRhZyAgICAgICAgICA9IHRhZztcbiAgdGhpcy5raW5kICAgICAgICAgPSBvcHRpb25zWydraW5kJ10gICAgICAgICB8fCBudWxsO1xuICB0aGlzLnJlc29sdmUgICAgICA9IG9wdGlvbnNbJ3Jlc29sdmUnXSAgICAgIHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07XG4gIHRoaXMuY29uc3RydWN0ICAgID0gb3B0aW9uc1snY29uc3RydWN0J10gICAgfHwgZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGE7IH07XG4gIHRoaXMuaW5zdGFuY2VPZiAgID0gb3B0aW9uc1snaW5zdGFuY2VPZiddICAgfHwgbnVsbDtcbiAgdGhpcy5wcmVkaWNhdGUgICAgPSBvcHRpb25zWydwcmVkaWNhdGUnXSAgICB8fCBudWxsO1xuICB0aGlzLnJlcHJlc2VudCAgICA9IG9wdGlvbnNbJ3JlcHJlc2VudCddICAgIHx8IG51bGw7XG4gIHRoaXMuZGVmYXVsdFN0eWxlID0gb3B0aW9uc1snZGVmYXVsdFN0eWxlJ10gfHwgbnVsbDtcbiAgdGhpcy5zdHlsZUFsaWFzZXMgPSBjb21waWxlU3R5bGVBbGlhc2VzKG9wdGlvbnNbJ3N0eWxlQWxpYXNlcyddIHx8IG51bGwpO1xuXG4gIGlmIChZQU1MX05PREVfS0lORFMuaW5kZXhPZih0aGlzLmtpbmQpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIGtpbmQgXCInICsgdGhpcy5raW5kICsgJ1wiIGlzIHNwZWNpZmllZCBmb3IgXCInICsgdGFnICsgJ1wiIFlBTUwgdHlwZS4nKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFR5cGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSovXG5cbnZhciBOb2RlQnVmZmVyO1xuXG50cnkge1xuICAvLyBBIHRyaWNrIGZvciBicm93c2VyaWZpZWQgdmVyc2lvbiwgdG8gbm90IGluY2x1ZGUgYEJ1ZmZlcmAgc2hpbVxuICB2YXIgX3JlcXVpcmUgPSByZXF1aXJlO1xuICBOb2RlQnVmZmVyID0gX3JlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbn0gY2F0Y2ggKF9fKSB7fVxuXG52YXIgVHlwZSAgICAgICA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuXG4vLyBbIDY0LCA2NSwgNjYgXSAtPiBbIHBhZGRpbmcsIENSLCBMRiBdXG52YXIgQkFTRTY0X01BUCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVxcblxccic7XG5cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCaW5hcnkoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBjb2RlLCBpZHgsIGJpdGxlbiA9IDAsIG1heCA9IGRhdGEubGVuZ3RoLCBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgb25lIGJ5IG9uZS5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgY29kZSA9IG1hcC5pbmRleE9mKGRhdGEuY2hhckF0KGlkeCkpO1xuXG4gICAgLy8gU2tpcCBDUi9MRlxuICAgIGlmIChjb2RlID4gNjQpIGNvbnRpbnVlO1xuXG4gICAgLy8gRmFpbCBvbiBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDApIHJldHVybiBmYWxzZTtcblxuICAgIGJpdGxlbiArPSA2O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSBiaXRzIGxlZnQsIHNvdXJjZSB3YXMgY29ycnVwdGVkXG4gIHJldHVybiAoYml0bGVuICUgOCkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxCaW5hcnkoZGF0YSkge1xuICB2YXIgaWR4LCB0YWlsYml0cyxcbiAgICAgIGlucHV0ID0gZGF0YS5yZXBsYWNlKC9bXFxyXFxuPV0vZywgJycpLCAvLyByZW1vdmUgQ1IvTEYgJiBwYWRkaW5nIHRvIHNpbXBsaWZ5IHNjYW5cbiAgICAgIG1heCA9IGlucHV0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVAsXG4gICAgICBiaXRzID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIC8vIENvbGxlY3QgYnkgNio0IGJpdHMgKDMgYnl0ZXMpXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSA0ID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweEZGKTtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgNikgfCBtYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaWR4KSk7XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsYml0cyA9IChtYXggJSA0KSAqIDY7XG5cbiAgaWYgKHRhaWxiaXRzID09PSAwKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDE4KSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTApICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMikgJiAweEZGKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTIpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA0KSAmIDB4RkYpO1xuICB9XG5cbiAgLy8gV3JhcCBpbnRvIEJ1ZmZlciBmb3IgTm9kZUpTIGFuZCBsZWF2ZSBBcnJheSBmb3IgYnJvd3NlclxuICBpZiAoTm9kZUJ1ZmZlcikge1xuICAgIC8vIFN1cHBvcnQgbm9kZSA2LisgQnVmZmVyIEFQSSB3aGVuIGF2YWlsYWJsZVxuICAgIHJldHVybiBOb2RlQnVmZmVyLmZyb20gPyBOb2RlQnVmZmVyLmZyb20ocmVzdWx0KSA6IG5ldyBOb2RlQnVmZmVyKHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sQmluYXJ5KG9iamVjdCAvKiwgc3R5bGUqLykge1xuICB2YXIgcmVzdWx0ID0gJycsIGJpdHMgPSAwLCBpZHgsIHRhaWwsXG4gICAgICBtYXggPSBvYmplY3QubGVuZ3RoLFxuICAgICAgbWFwID0gQkFTRTY0X01BUDtcblxuICAvLyBDb252ZXJ0IGV2ZXJ5IHRocmVlIGJ5dGVzIHRvIDQgQVNDSUkgY2hhcmFjdGVycy5cblxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoKGlkeCAlIDMgPT09IDApICYmIGlkeCkge1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxOCkgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwW2JpdHMgJiAweDNGXTtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgOCkgKyBvYmplY3RbaWR4XTtcbiAgfVxuXG4gIC8vIER1bXAgdGFpbFxuXG4gIHRhaWwgPSBtYXggJSAzO1xuXG4gIGlmICh0YWlsID09PSAwKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxOCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwW2JpdHMgJiAweDNGXTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAyKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDQpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA8PCAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDEpIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA8PCA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaXNCaW5hcnkob2JqZWN0KSB7XG4gIHJldHVybiBOb2RlQnVmZmVyICYmIE5vZGVCdWZmZXIuaXNCdWZmZXIob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCaW5hcnksXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJpbmFyeSxcbiAgcHJlZGljYXRlOiBpc0JpbmFyeSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sQmluYXJ5XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQm9vbGVhbihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSA0ICYmIChkYXRhID09PSAndHJ1ZScgfHwgZGF0YSA9PT0gJ1RydWUnIHx8IGRhdGEgPT09ICdUUlVFJykpIHx8XG4gICAgICAgICAobWF4ID09PSA1ICYmIChkYXRhID09PSAnZmFsc2UnIHx8IGRhdGEgPT09ICdGYWxzZScgfHwgZGF0YSA9PT0gJ0ZBTFNFJykpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQm9vbGVhbihkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAndHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUcnVlJyB8fFxuICAgICAgICAgZGF0YSA9PT0gJ1RSVUUnO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpib29sJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCb29sZWFuLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCb29sZWFuLFxuICBwcmVkaWNhdGU6IGlzQm9vbGVhbixcbiAgcmVwcmVzZW50OiB7XG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAndHJ1ZScgOiAnZmFsc2UnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ1RSVUUnIDogJ0ZBTFNFJzsgfSxcbiAgICBjYW1lbGNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUcnVlJyA6ICdGYWxzZSc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBZQU1MX0ZMT0FUX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICAvLyAyLjVlNCwgMi41IGFuZCBpbnRlZ2Vyc1xuICAnXig/OlstK10/KD86MHxbMS05XVswLTlfXSopKD86XFxcXC5bMC05X10qKT8oPzpbZUVdWy0rXT9bMC05XSspPycgK1xuICAvLyAuMmU0LCAuMlxuICAvLyBzcGVjaWFsIGNhc2UsIHNlZW1zIG5vdCBmcm9tIHNwZWNcbiAgJ3xcXFxcLlswLTlfXSsoPzpbZUVdWy0rXT9bMC05XSspPycgK1xuICAvLyAyMDo1OVxuICAnfFstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXFxcLlswLTlfXSonICtcbiAgLy8gLmluZlxuICAnfFstK10/XFxcXC4oPzppbmZ8SW5mfElORiknICtcbiAgLy8gLm5hblxuICAnfFxcXFwuKD86bmFufE5hTnxOQU4pKSQnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxGbG9hdChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKCFZQU1MX0ZMT0FUX1BBVFRFUk4udGVzdChkYXRhKSB8fFxuICAgICAgLy8gUXVpY2sgaGFjayB0byBub3QgYWxsb3cgaW50ZWdlcnMgZW5kIHdpdGggYF9gXG4gICAgICAvLyBQcm9iYWJseSBzaG91bGQgdXBkYXRlIHJlZ2V4cCAmIGNoZWNrIHNwZWVkXG4gICAgICBkYXRhW2RhdGEubGVuZ3RoIC0gMV0gPT09ICdfJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sRmxvYXQoZGF0YSkge1xuICB2YXIgdmFsdWUsIHNpZ24sIGJhc2UsIGRpZ2l0cztcblxuICB2YWx1ZSAgPSBkYXRhLnJlcGxhY2UoL18vZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIHNpZ24gICA9IHZhbHVlWzBdID09PSAnLScgPyAtMSA6IDE7XG4gIGRpZ2l0cyA9IFtdO1xuXG4gIGlmICgnKy0nLmluZGV4T2YodmFsdWVbMF0pID49IDApIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnLmluZicpIHtcbiAgICByZXR1cm4gKHNpZ24gPT09IDEpID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUgPT09ICcubmFuJykge1xuICAgIHJldHVybiBOYU47XG5cbiAgfSBlbHNlIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgPj0gMCkge1xuICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VGbG9hdCh2LCAxMCkpO1xuICAgIH0pO1xuXG4gICAgdmFsdWUgPSAwLjA7XG4gICAgYmFzZSA9IDE7XG5cbiAgICBkaWdpdHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgdmFsdWUgKz0gZCAqIGJhc2U7XG4gICAgICBiYXNlICo9IDYwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTtcblxuICB9XG4gIHJldHVybiBzaWduICogcGFyc2VGbG9hdCh2YWx1ZSwgMTApO1xufVxuXG5cbnZhciBTQ0lFTlRJRklDX1dJVEhPVVRfRE9UID0gL15bLStdP1swLTldK2UvO1xuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sRmxvYXQob2JqZWN0LCBzdHlsZSkge1xuICB2YXIgcmVzO1xuXG4gIGlmIChpc05hTihvYmplY3QpKSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcubmFuJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLk5BTic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5OYU4nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy0uaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLS5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICctLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKSB7XG4gICAgcmV0dXJuICctMC4wJztcbiAgfVxuXG4gIHJlcyA9IG9iamVjdC50b1N0cmluZygxMCk7XG5cbiAgLy8gSlMgc3RyaW5naWZpZXIgY2FuIGJ1aWxkIHNjaWVudGlmaWMgZm9ybWF0IHdpdGhvdXQgZG90czogNWUtMTAwLFxuICAvLyB3aGlsZSBZQU1MIHJlcXVyZXMgZG90OiA1LmUtMTAwLiBGaXggaXQgd2l0aCBzaW1wbGUgaGFja1xuXG4gIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKCdlJywgJy5lJykgOiByZXM7XG59XG5cbmZ1bmN0aW9uIGlzRmxvYXQob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE51bWJlcl0nKSAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgIT09IDAgfHwgY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sRmxvYXQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEZsb2F0LFxuICBwcmVkaWNhdGU6IGlzRmxvYXQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEZsb2F0LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIFR5cGUgICA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gaXNIZXhDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB8fFxuICAgICAgICAgKCgweDQxLyogQSAqLyA8PSBjKSAmJiAoYyA8PSAweDQ2LyogRiAqLykpIHx8XG4gICAgICAgICAoKDB4NjEvKiBhICovIDw9IGMpICYmIChjIDw9IDB4NjYvKiBmICovKSk7XG59XG5cbmZ1bmN0aW9uIGlzT2N0Q29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzcvKiA3ICovKSk7XG59XG5cbmZ1bmN0aW9uIGlzRGVjQ29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sSW50ZWdlcihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoLFxuICAgICAgaW5kZXggPSAwLFxuICAgICAgaGFzRGlnaXRzID0gZmFsc2UsXG4gICAgICBjaDtcblxuICBpZiAoIW1heCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNoID0gZGF0YVtpbmRleF07XG5cbiAgLy8gc2lnblxuICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuICB9XG5cbiAgaWYgKGNoID09PSAnMCcpIHtcbiAgICAvLyAwXG4gICAgaWYgKGluZGV4ICsgMSA9PT0gbWF4KSByZXR1cm4gdHJ1ZTtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG5cbiAgICAvLyBiYXNlIDIsIGJhc2UgOCwgYmFzZSAxNlxuXG4gICAgaWYgKGNoID09PSAnYicpIHtcbiAgICAgIC8vIGJhc2UgMlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgICAgaWYgKGNoICE9PSAnMCcgJiYgY2ggIT09ICcxJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICAgIH1cblxuXG4gICAgaWYgKGNoID09PSAneCcpIHtcbiAgICAgIC8vIGJhc2UgMTZcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmICghaXNIZXhDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gICAgfVxuXG4gICAgLy8gYmFzZSA4XG4gICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgaWYgKCFpc09jdENvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgfVxuXG4gIC8vIGJhc2UgMTAgKGV4Y2VwdCAwKSBvciBiYXNlIDYwXG5cbiAgLy8gdmFsdWUgc2hvdWxkIG5vdCBzdGFydCB3aXRoIGBfYDtcbiAgaWYgKGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICBpZiAoY2ggPT09ICc6JykgYnJlYWs7XG4gICAgaWYgKCFpc0RlY0NvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNob3VsZCBoYXZlIGRpZ2l0cyBhbmQgc2hvdWxkIG5vdCBlbmQgd2l0aCBgX2BcbiAgaWYgKCFoYXNEaWdpdHMgfHwgY2ggPT09ICdfJykgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIGlmICFiYXNlNjAgLSBkb25lO1xuICBpZiAoY2ggIT09ICc6JykgcmV0dXJuIHRydWU7XG5cbiAgLy8gYmFzZTYwIGFsbW9zdCBub3QgdXNlZCwgbm8gbmVlZHMgdG8gb3B0aW1pemVcbiAgcmV0dXJuIC9eKDpbMC01XT9bMC05XSkrJC8udGVzdChkYXRhLnNsaWNlKGluZGV4KSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgdmFyIHZhbHVlID0gZGF0YSwgc2lnbiA9IDEsIGNoLCBiYXNlLCBkaWdpdHMgPSBbXTtcblxuICBpZiAodmFsdWUuaW5kZXhPZignXycpICE9PSAtMSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXy9nLCAnJyk7XG4gIH1cblxuICBjaCA9IHZhbHVlWzBdO1xuXG4gIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICBpZiAoY2ggPT09ICctJykgc2lnbiA9IC0xO1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gICAgY2ggPSB2YWx1ZVswXTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJzAnKSByZXR1cm4gMDtcblxuICBpZiAoY2ggPT09ICcwJykge1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gJ2InKSByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAyKTtcbiAgICBpZiAodmFsdWVbMV0gPT09ICd4JykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTYpO1xuICAgIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDgpO1xuICB9XG5cbiAgaWYgKHZhbHVlLmluZGV4T2YoJzonKSAhPT0gLTEpIHtcbiAgICB2YWx1ZS5zcGxpdCgnOicpLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIGRpZ2l0cy51bnNoaWZ0KHBhcnNlSW50KHYsIDEwKSk7XG4gICAgfSk7XG5cbiAgICB2YWx1ZSA9IDA7XG4gICAgYmFzZSA9IDE7XG5cbiAgICBkaWdpdHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgdmFsdWUgKz0gKGQgKiBiYXNlKTtcbiAgICAgIGJhc2UgKj0gNjA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbiAqIHZhbHVlO1xuXG4gIH1cblxuICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZWdlcihvYmplY3QpIHtcbiAgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSkgPT09ICdbb2JqZWN0IE51bWJlcl0nICYmXG4gICAgICAgICAob2JqZWN0ICUgMSA9PT0gMCAmJiAhY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEludGVnZXIsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEludGVnZXIsXG4gIHByZWRpY2F0ZTogaXNJbnRlZ2VyLFxuICByZXByZXNlbnQ6IHtcbiAgICBiaW5hcnk6ICAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMGInICsgb2JqLnRvU3RyaW5nKDIpIDogJy0wYicgKyBvYmoudG9TdHJpbmcoMikuc2xpY2UoMSk7IH0sXG4gICAgb2N0YWw6ICAgICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzAnICArIG9iai50b1N0cmluZyg4KSA6ICctMCcgICsgb2JqLnRvU3RyaW5nKDgpLnNsaWNlKDEpOyB9LFxuICAgIGRlY2ltYWw6ICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmoudG9TdHJpbmcoMTApOyB9LFxuICAgIC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbiAgICBoZXhhZGVjaW1hbDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMHgnICsgb2JqLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpIDogICctMHgnICsgb2JqLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLnNsaWNlKDEpOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2RlY2ltYWwnLFxuICBzdHlsZUFsaWFzZXM6IHtcbiAgICBiaW5hcnk6ICAgICAgWyAyLCAgJ2JpbicgXSxcbiAgICBvY3RhbDogICAgICAgWyA4LCAgJ29jdCcgXSxcbiAgICBkZWNpbWFsOiAgICAgWyAxMCwgJ2RlYycgXSxcbiAgICBoZXhhZGVjaW1hbDogWyAxNiwgJ2hleCcgXVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVzcHJpbWE7XG5cbi8vIEJyb3dzZXJpZmllZCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgZXNwcmltYVxuLy9cbi8vIDEuIEZvciBub2RlLmpzIGp1c3QgcmVxdWlyZSBtb2R1bGUgYXMgZGVwc1xuLy8gMi4gRm9yIGJyb3dzZXIgdHJ5IHRvIHJlcXVpcmUgbXVkdWxlIHZpYSBleHRlcm5hbCBBTUQgc3lzdGVtLlxuLy8gICAgSWYgbm90IGZvdW5kIC0gdHJ5IHRvIGZhbGxiYWNrIHRvIHdpbmRvdy5lc3ByaW1hLiBJZiBub3Rcbi8vICAgIGZvdW5kIHRvbyAtIHRoZW4gZmFpbCB0byBwYXJzZS5cbi8vXG50cnkge1xuICAvLyB3b3JrYXJvdW5kIHRvIGV4Y2x1ZGUgcGFja2FnZSBmcm9tIGJyb3dzZXJpZnkgbGlzdC5cbiAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTtcbiAgZXNwcmltYSA9IF9yZXF1aXJlKCdlc3ByaW1hJyk7XG59IGNhdGNoIChfKSB7XG4gIC8qZ2xvYmFsIHdpbmRvdyAqL1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIGVzcHJpbWEgPSB3aW5kb3cuZXNwcmltYTtcbn1cblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0RnVuY3Rpb24oZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsXG4gICAgICAgIGFzdCAgICA9IGVzcHJpbWEucGFyc2Uoc291cmNlLCB7IHJhbmdlOiB0cnVlIH0pO1xuXG4gICAgaWYgKGFzdC50eXBlICAgICAgICAgICAgICAgICAgICAhPT0gJ1Byb2dyYW0nICAgICAgICAgICAgIHx8XG4gICAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgIGFzdC5ib2R5WzBdLnR5cGUgICAgICAgICAgICAhPT0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnIHx8XG4gICAgICAgIChhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbicgJiZcbiAgICAgICAgICBhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdEZ1bmN0aW9uKGRhdGEpIHtcbiAgLypqc2xpbnQgZXZpbDp0cnVlKi9cblxuICB2YXIgc291cmNlID0gJygnICsgZGF0YSArICcpJyxcbiAgICAgIGFzdCAgICA9IGVzcHJpbWEucGFyc2Uoc291cmNlLCB7IHJhbmdlOiB0cnVlIH0pLFxuICAgICAgcGFyYW1zID0gW10sXG4gICAgICBib2R5O1xuXG4gIGlmIChhc3QudHlwZSAgICAgICAgICAgICAgICAgICAgIT09ICdQcm9ncmFtJyAgICAgICAgICAgICB8fFxuICAgICAgYXN0LmJvZHkubGVuZ3RoICAgICAgICAgICAgICE9PSAxICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgIGFzdC5ib2R5WzBdLnR5cGUgICAgICAgICAgICAhPT0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnIHx8XG4gICAgICAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nICYmXG4gICAgICAgIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Z1bmN0aW9uRXhwcmVzc2lvbicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBmdW5jdGlvbicpO1xuICB9XG5cbiAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi5wYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAocGFyYW0pIHtcbiAgICBwYXJhbXMucHVzaChwYXJhbS5uYW1lKTtcbiAgfSk7XG5cbiAgYm9keSA9IGFzdC5ib2R5WzBdLmV4cHJlc3Npb24uYm9keS5yYW5nZTtcblxuICAvLyBFc3ByaW1hJ3MgcmFuZ2VzIGluY2x1ZGUgdGhlIGZpcnN0ICd7JyBhbmQgdGhlIGxhc3QgJ30nIGNoYXJhY3RlcnMgb25cbiAgLy8gZnVuY3Rpb24gZXhwcmVzc2lvbnMuIFNvIGN1dCB0aGVtIG91dC5cbiAgaWYgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24uYm9keS50eXBlID09PSAnQmxvY2tTdGF0ZW1lbnQnKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBuby1uZXctZnVuYyovXG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihwYXJhbXMsIHNvdXJjZS5zbGljZShib2R5WzBdICsgMSwgYm9keVsxXSAtIDEpKTtcbiAgfVxuICAvLyBFUzYgYXJyb3cgZnVuY3Rpb25zIGNhbiBvbWl0IHRoZSBCbG9ja1N0YXRlbWVudC4gSW4gdGhhdCBjYXNlLCBqdXN0IHJldHVyblxuICAvLyB0aGUgYm9keS5cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1uZXctZnVuYyovXG4gIHJldHVybiBuZXcgRnVuY3Rpb24ocGFyYW1zLCAncmV0dXJuICcgKyBzb3VyY2Uuc2xpY2UoYm9keVswXSwgYm9keVsxXSkpO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0RnVuY3Rpb24ob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHJldHVybiBvYmplY3QudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gaXNGdW5jdGlvbihvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy9mdW5jdGlvbicsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0RnVuY3Rpb24sXG4gIGNvbnN0cnVjdDogY29uc3RydWN0SmF2YXNjcmlwdEZ1bmN0aW9uLFxuICBwcmVkaWNhdGU6IGlzRnVuY3Rpb24sXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdEZ1bmN0aW9uXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0UmVnRXhwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHJlZ2V4cCA9IGRhdGEsXG4gICAgICB0YWlsICAgPSAvXFwvKFtnaW1dKikkLy5leGVjKGRhdGEpLFxuICAgICAgbW9kaWZpZXJzID0gJyc7XG5cbiAgLy8gaWYgcmVnZXhwIHN0YXJ0cyB3aXRoICcvJyBpdCBjYW4gaGF2ZSBtb2RpZmllcnMgYW5kIG11c3QgYmUgcHJvcGVybHkgY2xvc2VkXG4gIC8vIGAvZm9vL2dpbWAgLSBtb2RpZmllcnMgdGFpbCBjYW4gYmUgbWF4aW11bSAzIGNoYXJzXG4gIGlmIChyZWdleHBbMF0gPT09ICcvJykge1xuICAgIGlmICh0YWlsKSBtb2RpZmllcnMgPSB0YWlsWzFdO1xuXG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPiAzKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gaWYgZXhwcmVzc2lvbiBzdGFydHMgd2l0aCAvLCBpcyBzaG91bGQgYmUgcHJvcGVybHkgdGVybWluYXRlZFxuICAgIGlmIChyZWdleHBbcmVnZXhwLmxlbmd0aCAtIG1vZGlmaWVycy5sZW5ndGggLSAxXSAhPT0gJy8nKSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdFJlZ0V4cChkYXRhKSB7XG4gIHZhciByZWdleHAgPSBkYXRhLFxuICAgICAgdGFpbCAgID0gL1xcLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSxcbiAgICAgIG1vZGlmaWVycyA9ICcnO1xuXG4gIC8vIGAvZm9vL2dpbWAgLSB0YWlsIGNhbiBiZSBtYXhpbXVtIDQgY2hhcnNcbiAgaWYgKHJlZ2V4cFswXSA9PT0gJy8nKSB7XG4gICAgaWYgKHRhaWwpIG1vZGlmaWVycyA9IHRhaWxbMV07XG4gICAgcmVnZXhwID0gcmVnZXhwLnNsaWNlKDEsIHJlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleHAsIG1vZGlmaWVycyk7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHAob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHZhciByZXN1bHQgPSAnLycgKyBvYmplY3Quc291cmNlICsgJy8nO1xuXG4gIGlmIChvYmplY3QuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAob2JqZWN0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKG9iamVjdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHAnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFJlZ0V4cCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0UmVnRXhwLFxuICBwcmVkaWNhdGU6IGlzUmVnRXhwLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHBcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRVbmRlZmluZWQoKSB7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXVuZGVmaW5lZCovXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRVbmRlZmluZWQoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAndW5kZWZpbmVkJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvdW5kZWZpbmVkJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZUphdmFzY3JpcHRVbmRlZmluZWQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0SmF2YXNjcmlwdFVuZGVmaW5lZCxcbiAgcHJlZGljYXRlOiBpc1VuZGVmaW5lZCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRKYXZhc2NyaXB0VW5kZWZpbmVkXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm1hcCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IHt9OyB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sTWVyZ2UoZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gJzw8JyB8fCBkYXRhID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTWVyZ2Vcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxOdWxsKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gKG1heCA9PT0gMSAmJiBkYXRhID09PSAnficpIHx8XG4gICAgICAgICAobWF4ID09PSA0ICYmIChkYXRhID09PSAnbnVsbCcgfHwgZGF0YSA9PT0gJ051bGwnIHx8IGRhdGEgPT09ICdOVUxMJykpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bnVsbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTnVsbCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sTnVsbCxcbiAgcHJlZGljYXRlOiBpc051bGwsXG4gIHJlcHJlc2VudDoge1xuICAgIGNhbm9uaWNhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ34nOyAgICB9LFxuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ251bGwnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ05VTEwnOyB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ051bGwnOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX3RvU3RyaW5nICAgICAgID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxPbWFwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBvYmplY3RLZXlzID0gW10sIGluZGV4LCBsZW5ndGgsIHBhaXIsIHBhaXJLZXksIHBhaXJIYXNLZXksXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuICAgIHBhaXJIYXNLZXkgPSBmYWxzZTtcblxuICAgIGlmIChfdG9TdHJpbmcuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAocGFpcktleSBpbiBwYWlyKSB7XG4gICAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwocGFpciwgcGFpcktleSkpIHtcbiAgICAgICAgaWYgKCFwYWlySGFzS2V5KSBwYWlySGFzS2V5ID0gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYWlySGFzS2V5KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqZWN0S2V5cy5pbmRleE9mKHBhaXJLZXkpID09PSAtMSkgb2JqZWN0S2V5cy5wdXNoKHBhaXJLZXkpO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxPbWFwKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm9tYXAnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sT21hcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sT21hcFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxQYWlycyhkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBmYWxzZTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFBhaXJzLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxQYWlyc1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzZXEnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107IH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sU2V0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBrZXksIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgaWYgKG9iamVjdFtrZXldICE9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxTZXQoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2V0Jywge1xuICBraW5kOiAnbWFwcGluZycsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sU2V0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxTZXRcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c3RyJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiAnJzsgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgWUFNTF9EQVRFX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhclxuICAnLShbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoXG4gICctKFswLTldWzAtOV0pJCcpOyAgICAgICAgICAgICAgICAgICAvLyBbM10gZGF5XG5cbnZhciBZQU1MX1RJTUVTVEFNUF9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICAnXihbMC05XVswLTldWzAtOV1bMC05XSknICAgICAgICAgICsgLy8gWzFdIHllYXJcbiAgJy0oWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICArIC8vIFsyXSBtb250aFxuICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzNdIGRheVxuICAnKD86W1R0XXxbIFxcXFx0XSspJyAgICAgICAgICAgICAgICAgKyAvLyAuLi5cbiAgJyhbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICArIC8vIFs0XSBob3VyXG4gICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNV0gbWludXRlXG4gICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNl0gc2Vjb25kXG4gICcoPzpcXFxcLihbMC05XSopKT8nICAgICAgICAgICAgICAgICArIC8vIFs3XSBmcmFjdGlvblxuICAnKD86WyBcXFxcdF0qKFp8KFstK10pKFswLTldWzAtOV0/KScgKyAvLyBbOF0gdHogWzldIHR6X3NpZ24gWzEwXSB0el9ob3VyXG4gICcoPzo6KFswLTldWzAtOV0pKT8pKT8kJyk7ICAgICAgICAgICAvLyBbMTFdIHR6X21pbnV0ZVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFRpbWVzdGFtcChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSkgIT09IG51bGwpIHJldHVybiB0cnVlO1xuICBpZiAoWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSkgIT09IG51bGwpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICB2YXIgbWF0Y2gsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbiA9IDAsXG4gICAgICBkZWx0YSA9IG51bGwsIHR6X2hvdXIsIHR6X21pbnV0ZSwgZGF0ZTtcblxuICBtYXRjaCA9IFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKTtcbiAgaWYgKG1hdGNoID09PSBudWxsKSBtYXRjaCA9IFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpO1xuXG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdEYXRlIHJlc29sdmUgZXJyb3InKTtcblxuICAvLyBtYXRjaDogWzFdIHllYXIgWzJdIG1vbnRoIFszXSBkYXlcblxuICB5ZWFyID0gKyhtYXRjaFsxXSk7XG4gIG1vbnRoID0gKyhtYXRjaFsyXSkgLSAxOyAvLyBKUyBtb250aCBzdGFydHMgd2l0aCAwXG4gIGRheSA9ICsobWF0Y2hbM10pO1xuXG4gIGlmICghbWF0Y2hbNF0pIHsgLy8gbm8gaG91clxuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5KSk7XG4gIH1cblxuICAvLyBtYXRjaDogWzRdIGhvdXIgWzVdIG1pbnV0ZSBbNl0gc2Vjb25kIFs3XSBmcmFjdGlvblxuXG4gIGhvdXIgPSArKG1hdGNoWzRdKTtcbiAgbWludXRlID0gKyhtYXRjaFs1XSk7XG4gIHNlY29uZCA9ICsobWF0Y2hbNl0pO1xuXG4gIGlmIChtYXRjaFs3XSkge1xuICAgIGZyYWN0aW9uID0gbWF0Y2hbN10uc2xpY2UoMCwgMyk7XG4gICAgd2hpbGUgKGZyYWN0aW9uLmxlbmd0aCA8IDMpIHsgLy8gbWlsbGktc2Vjb25kc1xuICAgICAgZnJhY3Rpb24gKz0gJzAnO1xuICAgIH1cbiAgICBmcmFjdGlvbiA9ICtmcmFjdGlvbjtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbOF0gdHogWzldIHR6X3NpZ24gWzEwXSB0el9ob3VyIFsxMV0gdHpfbWludXRlXG5cbiAgaWYgKG1hdGNoWzldKSB7XG4gICAgdHpfaG91ciA9ICsobWF0Y2hbMTBdKTtcbiAgICB0el9taW51dGUgPSArKG1hdGNoWzExXSB8fCAwKTtcbiAgICBkZWx0YSA9ICh0el9ob3VyICogNjAgKyB0el9taW51dGUpICogNjAwMDA7IC8vIGRlbHRhIGluIG1pbGktc2Vjb25kc1xuICAgIGlmIChtYXRjaFs5XSA9PT0gJy0nKSBkZWx0YSA9IC1kZWx0YTtcbiAgfVxuXG4gIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24pKTtcblxuICBpZiAoZGVsdGEpIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSAtIGRlbHRhKTtcblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbFRpbWVzdGFtcChvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgcmV0dXJuIG9iamVjdC50b0lTT1N0cmluZygpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFRpbWVzdGFtcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wLFxuICBpbnN0YW5jZU9mOiBEYXRlLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxUaW1lc3RhbXBcbn0pO1xuIiwiZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9XG5cbnZhciB0c2xpYl8xID0gcmVxdWlyZSgndHNsaWInKTtcbnZhciBSYW5kRXhwID0gX2ludGVyb3BEZWZhdWx0KHJlcXVpcmUoJ3JhbmRleHAnKSk7XG52YXIgZGVyZWYgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnZGVyZWYnKSk7XG52YXIganNvbnBhdGggPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgnanNvbnBhdGgnKSk7XG52YXIgJFJlZlBhcnNlciA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdqc29uLXNjaGVtYS1yZWYtcGFyc2VyJykpO1xuXG5mdW5jdGlvbiB0ZW1wbGF0ZSh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHRlbXBsYXRlKHgsIHNjaGVtYSk7IH0pO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyNcXHsoW1xcdy4tXSspXFx9L2csIGZ1bmN0aW9uIChfLCAkMSkgeyByZXR1cm4gc2NoZW1hWyQxXTsgfSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbi8vIGR5bmFtaWMgcHJveHkgZm9yIGN1c3RvbSBnZW5lcmF0b3JzXG5mdW5jdGlvbiBwcm94eShnZW4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBzY2hlbWEsIHByb3BlcnR5LCByb290U2NoZW1hKSB7XG4gICAgICAgIHZhciBmbiA9IHZhbHVlO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAvLyBzdXBwb3J0IGZvciBuZXN0ZWQgb2JqZWN0LCBmaXJzdC1rZXkgaXMgdGhlIGdlbmVyYXRvclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm4gPSBPYmplY3Qua2V5cyh2YWx1ZSlbMF07XG4gICAgICAgICAgICAvLyB0cmVhdCB0aGUgZ2l2ZW4gYXJyYXkgYXMgYXJndW1lbnRzLFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVbZm5dKSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBnZW5lcmF0b3IgaXMgZXhwZWN0aW5nIGFycmF5cyB0aGV5IHNob3VsZCBiZSBuZXN0ZWQsIGUuZy4gYFtbMSwgMiwgM10sIHRydWUsIC4uLl1gXG4gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlW2ZuXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh2YWx1ZVtmbl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHN1cHBvcnQgZm9yIGtleXBhdGhzLCBlLmcuIFwiaW50ZXJuZXQuZW1haWxcIlxuICAgICAgICB2YXIgcHJvcHMgPSBmbi5zcGxpdCgnLicpO1xuICAgICAgICAvLyByZXRyaWV2ZSBhIGZyZXNoIGRlcGVuZGVuY3lcbiAgICAgICAgdmFyIGN0eCA9IGdlbigpO1xuICAgICAgICB3aGlsZSAocHJvcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY3R4ID0gY3R4W3Byb3BzLnNoaWZ0KCldO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHJpZXZlIGxhc3QgdmFsdWUgZnJvbSBjb250ZXh0IG9iamVjdFxuICAgICAgICB2YWx1ZSA9IHR5cGVvZiBjdHggPT09ICdvYmplY3QnID8gY3R4W3Byb3BzWzBdXSA6IGN0eDtcbiAgICAgICAgLy8gaW52b2tlIGR5bmFtaWMgZ2VuZXJhdG9yc1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmFwcGx5KGN0eCwgYXJncy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHRlbXBsYXRlKHgsIHJvb3RTY2hlbWEpOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGVzdCBmb3IgcGVuZGluZyBjYWxsYmFja3NcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzb2x2ZSB2YWx1ZSBmb3IgXCInICsgcHJvcGVydHkgKyAnOiAnICsgZm4gKyAnXCIsIGdpdmVuOiAnICsgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbn1cbi8qKlxuICogQ29udGFpbmVyIGlzIHVzZWQgdG8gd3JhcCBleHRlcm5hbCBnZW5lcmF0b3JzIChmYWtlciwgY2hhbmNlLCBjYXN1YWwsIGV0Yy4pIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICpcbiAqIC0gYGpzZi5leHRlbmQoJ2Zha2VyJylgIHdpbGwgZW5oYW5jZSBvciBkZWZpbmUgdGhlIGdpdmVuIGRlcGVuZGVuY3kuXG4gKiAtIGBqc2YuZGVmaW5lKCdmYWtlcicpYCB3aWxsIHByb3ZpZGUgdGhlIFwiZmFrZXJcIiBrZXl3b3JkIHN1cHBvcnQuXG4gKlxuICogUmFuZEV4cCBpcyBub3QgbG9uZ2VyIGNvbnNpZGVyZWQgYW4gXCJleHRlbnNpb25cIi5cbiAqL1xudmFyIENvbnRhaW5lciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250YWluZXIoKSB7XG4gICAgICAgIC8vIGR5bmFtaWMgcmVxdWlyZXMgLSBoYW5kbGUgYWxsIGRlcGVuZGVuY2llc1xuICAgICAgICAvLyB0aGV5IHdpbGwgTk9UIGJlIGluY2x1ZGVkIG9uIHRoZSBidW5kbGVcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHt9O1xuICAgICAgICB0aGlzLnN1cHBvcnQgPSB7fTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVwZW5kZW5jeSBnaXZlbiBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5W25hbWVdID0gY2FsbGJhY2sodGhpcy5yZWdpc3RyeVtuYW1lXSk7XG4gICAgICAgIC8vIGJ1aWx0LWluIHByb3h5IChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICAgICAgaWYgKCF0aGlzLnN1cHBvcnRbbmFtZV0pIHtcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydFtuYW1lXSA9IHByb3h5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnJlZ2lzdHJ5W25hbWVdOyB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0IGtleXdvcmQgc3VwcG9ydCBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnN1cHBvcnRbbmFtZV0gPSBjYWxsYmFjaztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGVwZW5kZW5jeSBnaXZlbiBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcmV0dXJucyB7RGVwZW5kZW5jeX1cbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWdpc3RyeVtuYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcignXCInICsgbmFtZSArICdcIiBkZXBlbmRlbmN5IGRvZXNuXFwndCBleGlzdC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeVtuYW1lXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGEgY3VzdG9tIGtleXdvcmRcbiAgICAgKiBAcGFyYW0gc2NoZW1hXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgICB2YXIgZm4gPSBrZXlzW2xlbmd0aF0ucmVwbGFjZSgvXngtLywgJycpO1xuICAgICAgICAgICAgdmFyIGdlbiA9IHRoaXMuc3VwcG9ydFtmbl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGdlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzY2hlbWEsICdnZW5lcmF0ZScsIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIChyb290U2NoZW1hKSB7IHJldHVybiBnZW4uY2FsbChjb250ZXh0LCBzY2hlbWFba2V5c1tsZW5ndGhdXSwgc2NoZW1hLCBrZXlzW2xlbmd0aF0sIHJvb3RTY2hlbWEpOyB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyO1xufSgpKTtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGRlZmluZXMgYSByZWdpc3RyeSBmb3IgY3VzdG9tIGZvcm1hdHMgdXNlZCB3aXRoaW4gSlNGLlxuICovXG52YXIgUmVnaXN0cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVnaXN0cnkoKSB7XG4gICAgICAgIC8vIGVtcHR5IGJ5IGRlZmF1bHRcbiAgICAgICAgdGhpcy5kYXRhID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBjdXN0b20gZm9ybWF0XG4gICAgICovXG4gICAgUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IGNhbGxiYWNrO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgbWFueSBmb3JtYXRzIGF0IG9uZSBzaG90XG4gICAgICovXG4gICAgUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyTWFueSA9IGZ1bmN0aW9uIChmb3JtYXRzKSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gZm9ybWF0cykge1xuICAgICAgICAgICAgdGhpcy5kYXRhW25hbWVdID0gZm9ybWF0c1tuYW1lXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBlbGVtZW50IGJ5IHJlZ2lzdHJ5IGtleVxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5kYXRhW25hbWVdO1xuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgd2hvbGUgcmVnaXN0cnkgY29udGVudFxuICAgICAqL1xuICAgIFJlZ2lzdHJ5LnByb3RvdHlwZS5saXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH07XG4gICAgcmV0dXJuIFJlZ2lzdHJ5O1xufSgpKTtcblxuLy8gaW5zdGFudGlhdGVcbnZhciByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpO1xuLyoqXG4gKiBDdXN0b20gZm9ybWF0IEFQSVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLWZha2VyL2pzb24tc2NoZW1hLWZha2VyI2N1c3RvbS1mb3JtYXRzXG4gKiBAcGFyYW0gbmFtZU9yRm9ybWF0TWFwXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFQSShuYW1lT3JGb3JtYXRNYXAsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JGb3JtYXRNYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeS5saXN0KCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBuYW1lT3JGb3JtYXRNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKG5hbWVPckZvcm1hdE1hcCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldChuYW1lT3JGb3JtYXRNYXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZWdpc3RyeS5yZWdpc3Rlck1hbnkobmFtZU9yRm9ybWF0TWFwKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcmVnaXN0cnkgZm9yIGN1c3RvbSBzZXR0aW5ncyB1c2VkIHdpdGhpbiBKU0YuXG4gKi9cbnZhciBPcHRpb25SZWdpc3RyeSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICB0c2xpYl8xLl9fZXh0ZW5kcyhPcHRpb25SZWdpc3RyeSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcHRpb25SZWdpc3RyeSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGF0YSA9IF90aGlzLmRlZmF1bHRzO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPcHRpb25SZWdpc3RyeS5wcm90b3R5cGUsIFwiZGVmYXVsdHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhID0ge307XG4gICAgICAgICAgICBkYXRhWydkZWZhdWx0SW52YWxpZFR5cGVQcm9kdWN0J10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsnZGVmYXVsdFJhbmRFeHBNYXgnXSA9IDEwO1xuICAgICAgICAgICAgZGF0YVsnaWdub3JlUHJvcGVydGllcyddID0gW107XG4gICAgICAgICAgICBkYXRhWydpZ25vcmVNaXNzaW5nUmVmcyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydmYWlsT25JbnZhbGlkVHlwZXMnXSA9IHRydWU7XG4gICAgICAgICAgICBkYXRhWydmYWlsT25JbnZhbGlkRm9ybWF0J10gPSB0cnVlO1xuICAgICAgICAgICAgZGF0YVsnYWx3YXlzRmFrZU9wdGlvbmFscyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydvcHRpb25hbHNQcm9iYWJpbGl0eSddID0gMC4wO1xuICAgICAgICAgICAgZGF0YVsndXNlRGVmYXVsdFZhbHVlJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGFbJ3JlcXVpcmVkT25seSddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydtaW5JdGVtcyddID0gMDtcbiAgICAgICAgICAgIGRhdGFbJ21heEl0ZW1zJ10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsnbWF4TGVuZ3RoJ10gPSBudWxsO1xuICAgICAgICAgICAgZGF0YVsncmVzb2x2ZUpzb25QYXRoJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGFbJ3JldXNlUHJvcGVydGllcyddID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRhWydmaWxsUHJvcGVydGllcyddID0gdHJ1ZTtcbiAgICAgICAgICAgIGRhdGFbJ3JhbmRvbSddID0gTWF0aC5yYW5kb207XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIE9wdGlvblJlZ2lzdHJ5O1xufShSZWdpc3RyeSkpO1xuXG4vLyBpbnN0YW50aWF0ZVxudmFyIHJlZ2lzdHJ5JDEgPSBuZXcgT3B0aW9uUmVnaXN0cnkoKTtcbi8qKlxuICogQ3VzdG9tIG9wdGlvbiBBUElcbiAqXG4gKiBAcGFyYW0gbmFtZU9yT3B0aW9uTWFwXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBvcHRpb25BUEkobmFtZU9yT3B0aW9uTWFwKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JPcHRpb25NYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeSQxLmdldChuYW1lT3JPcHRpb25NYXApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5JDEucmVnaXN0ZXJNYW55KG5hbWVPck9wdGlvbk1hcCk7XG4gICAgfVxufVxub3B0aW9uQVBJLmdldERlZmF1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVnaXN0cnkkMS5kZWZhdWx0czsgfTtcblxudmFyIEFMTF9UWVBFUyA9IFsnYXJyYXknLCAnb2JqZWN0JywgJ2ludGVnZXInLCAnbnVtYmVyJywgJ3N0cmluZycsICdib29sZWFuJywgJ251bGwnXTtcbnZhciBNT1NUX05FQVJfREFURVRJTUUgPSAyNTI0NjA4MDAwMDAwO1xudmFyIE1JTl9JTlRFR0VSID0gLTEwMDAwMDAwMDtcbnZhciBNQVhfSU5URUdFUiA9IDEwMDAwMDAwMDtcbnZhciBNSU5fTlVNQkVSID0gLTEwMDtcbnZhciBNQVhfTlVNQkVSID0gMTAwO1xudmFyIGVudiA9IHtcbiAgICBBTExfVFlQRVM6IEFMTF9UWVBFUyxcbiAgICBNSU5fTlVNQkVSOiBNSU5fTlVNQkVSLFxuICAgIE1BWF9OVU1CRVI6IE1BWF9OVU1CRVIsXG4gICAgTUlOX0lOVEVHRVI6IE1JTl9JTlRFR0VSLFxuICAgIE1BWF9JTlRFR0VSOiBNQVhfSU5URUdFUixcbiAgICBNT1NUX05FQVJfREFURVRJTUU6IE1PU1RfTkVBUl9EQVRFVElNRSxcbn07XG5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9pbmRleC5kLnRzXCIgLz5cbmZ1bmN0aW9uIF9yYW5kZXhwKHZhbHVlKSB7XG4gICAgLy8gc2V0IG1heGltdW0gZGVmYXVsdCwgc2VlICMxOTNcbiAgICBSYW5kRXhwLnByb3RvdHlwZS5tYXggPSBvcHRpb25BUEkoJ2RlZmF1bHRSYW5kRXhwTWF4Jyk7XG4gICAgLy8gc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgb3JpZ2luYWwgZXhjZXB0IHVzaW5nIG91ciByYW5kb21cbiAgICBSYW5kRXhwLnByb3RvdHlwZS5yYW5kSW50ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgKyBNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqICgxICsgYiAtIGEpKTtcbiAgICB9O1xuICAgIHZhciByZSA9IG5ldyBSYW5kRXhwKHZhbHVlKTtcbiAgICByZXR1cm4gcmUuZ2VuKCk7XG59XG4vKipcbiAqIFJldHVybnMgcmFuZG9tIGVsZW1lbnQgb2YgYSBjb2xsZWN0aW9uXG4gKlxuICogQHBhcmFtIGNvbGxlY3Rpb25cbiAqIEByZXR1cm5zIHtUfVxuICovXG5mdW5jdGlvbiBwaWNrKGNvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbltNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIGNvbGxlY3Rpb24ubGVuZ3RoKV07XG59XG4vKipcbiAqIFJldHVybnMgc2h1ZmZsZWQgY29sbGVjdGlvbiBvZiBlbGVtZW50c1xuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJucyB7VFtdfVxuICovXG5mdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgdG1wLCBrZXksIGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKCksIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgIGZvciAoOyBsZW5ndGggPiAwOykge1xuICAgICAgICBrZXkgPSBNYXRoLmZsb29yKG9wdGlvbkFQSSgncmFuZG9tJykoKSAqIGxlbmd0aCk7XG4gICAgICAgIC8vIHN3YXBcbiAgICAgICAgdG1wID0gY29weVstLWxlbmd0aF07XG4gICAgICAgIGNvcHlbbGVuZ3RoXSA9IGNvcHlba2V5XTtcbiAgICAgICAgY29weVtrZXldID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn1cbi8qKlxuICogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIChpbmNsdXNpdmUpIGFuZCBtYXggKGluY2x1c2l2ZSlcbiAqIFVzaW5nIE1hdGgucm91bmQoKSB3aWxsIGdpdmUgeW91IGEgbm9uLXVuaWZvcm0gZGlzdHJpYnV0aW9uIVxuICogQHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNTI3ODIwLzc2OTM4NFxuICovXG5mdW5jdGlvbiBnZXRSYW5kb20obWluLCBtYXgpIHtcbiAgICByZXR1cm4gb3B0aW9uQVBJKCdyYW5kb20nKSgpICogKG1heCAtIG1pbikgKyBtaW47XG59XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb20gbnVtYmVyIGFjY29yZGluZyB0byBwYXJhbWV0ZXJzIHBhc3NlZFxuICpcbiAqIEBwYXJhbSBtaW5cbiAqIEBwYXJhbSBtYXhcbiAqIEBwYXJhbSBkZWZNaW5cbiAqIEBwYXJhbSBkZWZNYXhcbiAqIEBwYXJhbSBoYXNQcmVjaXNpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIG51bWJlcihtaW4sIG1heCwgZGVmTWluLCBkZWZNYXgsIGhhc1ByZWNpc2lvbikge1xuICAgIGlmIChoYXNQcmVjaXNpb24gPT09IHZvaWQgMCkgeyBoYXNQcmVjaXNpb24gPSBmYWxzZTsgfVxuICAgIGRlZk1pbiA9IHR5cGVvZiBkZWZNaW4gPT09ICd1bmRlZmluZWQnID8gZW52Lk1JTl9OVU1CRVIgOiBkZWZNaW47XG4gICAgZGVmTWF4ID0gdHlwZW9mIGRlZk1heCA9PT0gJ3VuZGVmaW5lZCcgPyBlbnYuTUFYX05VTUJFUiA6IGRlZk1heDtcbiAgICBtaW4gPSB0eXBlb2YgbWluID09PSAndW5kZWZpbmVkJyA/IGRlZk1pbiA6IG1pbjtcbiAgICBtYXggPSB0eXBlb2YgbWF4ID09PSAndW5kZWZpbmVkJyA/IGRlZk1heCA6IG1heDtcbiAgICBpZiAobWF4IDwgbWluKSB7XG4gICAgICAgIG1heCArPSBtaW47XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBnZXRSYW5kb20obWluLCBtYXgpO1xuICAgIGlmICghaGFzUHJlY2lzaW9uKSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBieSh0eXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigwLCA2MCkgKiA2MDtcbiAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDE1LCA1MCkgKiA2MTI7XG4gICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoMTIsIDcyKSAqIDM2MTIzO1xuICAgICAgICBjYXNlICdkYXlzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoNywgMzApICogODY0MTIzNDU7XG4gICAgICAgIGNhc2UgJ3dlZWtzJzpcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIoNCwgNTIpICogNjA0ODEyMzQ1O1xuICAgICAgICBjYXNlICdtb250aHMnOlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlcigyLCAxMykgKiAyNTkyMDEyMzQ1O1xuICAgICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyKDEsIDIwKSAqIDMxMTA0MDEyMzQ1O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRhdGUoc3RlcCkge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICAgIHJldHVybiBieShzdGVwKTtcbiAgICB9XG4gICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgdmFyIGRheXMgPSBudW1iZXIoLTEwMDAsIGVudi5NT1NUX05FQVJfREFURVRJTUUpO1xuICAgIG5vdy5zZXRUaW1lKG5vdy5nZXRUaW1lKCkgLSBkYXlzKTtcbiAgICByZXR1cm4gbm93O1xufVxudmFyIHJhbmRvbSA9IHtcbiAgICBwaWNrOiBwaWNrLFxuICAgIGRhdGU6IGRhdGUsXG4gICAgcmFuZGV4cDogX3JhbmRleHAsXG4gICAgc2h1ZmZsZTogc2h1ZmZsZSxcbiAgICBudW1iZXI6IG51bWJlcixcbn07XG5cbmZ1bmN0aW9uIGdldFN1YkF0dHJpYnV0ZShvYmosIGRvdFNlcGFyYXRlZEtleSkge1xuICAgIHZhciBrZXlFbGVtZW50cyA9IGRvdFNlcGFyYXRlZEtleS5zcGxpdCgnLicpO1xuICAgIHdoaWxlIChrZXlFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHByb3AgPSBrZXlFbGVtZW50cy5zaGlmdCgpO1xuICAgICAgICBpZiAoIW9ialtwcm9wXSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgb2JqID0gb2JqW3Byb3BdO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUvZmFsc2Ugd2hldGhlciB0aGUgb2JqZWN0IHBhcmFtZXRlciBoYXMgaXRzIG93biBwcm9wZXJ0aWVzIGRlZmluZWRcbiAqXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gcHJvcGVydGllc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGhhc1Byb3BlcnRpZXMob2JqKSB7XG4gICAgdmFyIHByb3BlcnRpZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBwcm9wZXJ0aWVzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9ialtrZXldICE9PSAndW5kZWZpbmVkJztcbiAgICB9KS5sZW5ndGggPiAwO1xufVxuLyoqXG4gKiBSZXR1cm5zIHR5cGVjYXN0ZWQgdmFsdWUuXG4gKiBFeHRlcm5hbCBnZW5lcmF0b3JzIChmYWtlciwgY2hhbmNlLCBjYXN1YWwpIG1heSByZXR1cm4gZGF0YSBpbiBub24tZXhwZWN0ZWQgZm9ybWF0cywgc3VjaCBhcyBzdHJpbmcsIHdoZW4geW91IG1pZ2h0IGV4cGVjdCBhblxuICogaW50ZWdlci4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZvcmNlIHRoZSB0eXBlY2FzdC4gVGhpcyBpcyB0aGUgYmFzZSBmb3JtYXR0ZXIgZm9yIGFsbCByZXN1bHQgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBzY2hlbWFcbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gdHlwZWNhc3Qoc2NoZW1hLCBjYWxsYmFjaykge1xuICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICAvLyBub3JtYWxpemUgY29uc3RyYWludHNcbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWluaW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWluaW11bSA9IHNjaGVtYS5taW5pbXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWF4aW11bSA9IHNjaGVtYS5tYXhpbXVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGgubWF4KHBhcmFtcy5taW5pbXVtIHx8IDAsIDApO1xuICAgICAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1pbihwYXJhbXMubWF4aW11bSB8fCBJbmZpbml0eSwgSW5maW5pdHkpO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAmJiBtaW4gPT09IHNjaGVtYS5taW5pbXVtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiArPSBzY2hlbWEubXVsdGlwbGVPZiB8fCAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gJiYgbWF4ID09PSBzY2hlbWEubWF4aW11bSkge1xuICAgICAgICAgICAgICAgICAgICBtYXggLT0gc2NoZW1hLm11bHRpcGxlT2YgfHwgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCBvdXQtb2YtYm91bmRzIGVudW1lcmF0aW9uc1xuICAgICAgICAgICAgICAgIHNjaGVtYS5lbnVtID0gc2NoZW1hLmVudW0uZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4ID49IG1pbiAmJiB4IDw9IG1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5MZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1pbkxlbmd0aCA9IHNjaGVtYS5taW5MZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhMZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1heExlbmd0aCA9IHNjaGVtYS5tYXhMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX21heExlbmd0aCA9IG9wdGlvbkFQSSgnbWF4TGVuZ3RoJyk7XG4gICAgICAgICAgICB2YXIgX21pbkxlbmd0aCA9IG9wdGlvbkFQSSgnbWluTGVuZ3RoJyk7XG4gICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB1c2VyIHRvIHNldCBtYXggbGVuZ3RoIGFib3ZlIG91ciBtYXhpbXVtXG4gICAgICAgICAgICBpZiAoX21heExlbmd0aCAmJiBwYXJhbXMubWF4TGVuZ3RoID4gX21heExlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXhMZW5ndGggPSBfbWF4TGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdXNlciB0byBzZXQgbWluIGxlbmd0aCBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICAgICAgaWYgKF9taW5MZW5ndGggJiYgcGFyYW1zLm1pbkxlbmd0aCA8IF9taW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWluTGVuZ3RoID0gX21pbkxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBleGVjdXRlIGdlbmVyYXRvclxuICAgIHZhciB2YWx1ZSA9IGNhbGxiYWNrKHBhcmFtcyk7XG4gICAgLy8gbm9ybWFsaXplIG91dHB1dCB2YWx1ZVxuICAgIHN3aXRjaCAoc2NoZW1hLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICB2YWx1ZSA9ICEhdmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1heChwYXJhbXMubWluTGVuZ3RoIHx8IDAsIDApO1xuICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWluKHBhcmFtcy5tYXhMZW5ndGggfHwgSW5maW5pdHksIEluZmluaXR5KTtcbiAgICAgICAgICAgIHdoaWxlICh2YWx1ZS5sZW5ndGggPCBtaW4pIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnICcgKyB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiBtYXgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCBtYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gYikge1xuICAgICAgICBpZiAodHlwZW9mIGJba2V5XSAhPT0gJ29iamVjdCcgfHwgYltrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBhW2tleV0gPSBiW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShiW2tleV0pKSB7XG4gICAgICAgICAgICBhW2tleV0gPSBhW2tleV0gfHwgW107XG4gICAgICAgICAgICAvLyBmaXggIzI5MiAtIHNraXAgZHVwbGljYXRlZCB2YWx1ZXMgZnJvbSBtZXJnZSBvYmplY3QgKGIpXG4gICAgICAgICAgICBiW2tleV0uZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoYVtrZXldLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBhW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGFba2V5XSAhPT0gJ29iamVjdCcgfHwgYVtrZXldID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoYVtrZXldKSkge1xuICAgICAgICAgICAgYVtrZXldID0gbWVyZ2Uoe30sIGJba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhW2tleV0gPSBtZXJnZShhW2tleV0sIGJba2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG59XG5mdW5jdGlvbiBjbGVhbihvYmosIGlzQXJyYXksIHJlcXVpcmVkUHJvcHMpIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iaiA9IG9ialxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGNsZWFuKHZhbHVlLCB0cnVlLCByZXF1aXJlZFByb3BzKTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnOyB9KTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIGlmICghcmVxdWlyZWRQcm9wcyB8fCByZXF1aXJlZFByb3BzLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba10pICYmICFvYmpba10ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9ialtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9ialtrXSA9IGNsZWFuKG9ialtrXSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIU9iamVjdC5rZXlzKG9iaikubGVuZ3RoICYmIGlzQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cbmZ1bmN0aW9uIHNob3J0KHNjaGVtYSkge1xuICAgIHZhciBzID0gSlNPTi5zdHJpbmdpZnkoc2NoZW1hKTtcbiAgICB2YXIgbCA9IEpTT04uc3RyaW5naWZ5KHNjaGVtYSwgbnVsbCwgMik7XG4gICAgcmV0dXJuIHMubGVuZ3RoID4gNDAwID8gbC5zdWJzdHIoMCwgNDAwKSArICcuLi4nIDogbDtcbn1cbmZ1bmN0aW9uIGFueVZhbHVlKCkge1xuICAgIHJldHVybiByYW5kb20ucGljayhbXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICBudWxsLFxuICAgICAgICAtMSxcbiAgICAgICAgTmFOLFxuICAgICAgICBNYXRoLlBJLFxuICAgICAgICBJbmZpbml0eSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBbXSxcbiAgICAgICAge30sXG4gICAgICAgIE1hdGgucmFuZG9tKCksXG4gICAgICAgIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKSxcbiAgICBdKTtcbn1cbmZ1bmN0aW9uIG5vdFZhbHVlKHNjaGVtYSwgcGFyZW50KSB7XG4gICAgdmFyIGNvcHkgPSBtZXJnZSh7fSwgcGFyZW50KTtcbiAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5pbXVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb3B5Lm1heGltdW0gPSBzY2hlbWEubWluaW11bTtcbiAgICAgICAgY29weS5leGNsdXNpdmVNYXhpbXVtID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4aW11bSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5taW5pbXVtID0gc2NoZW1hLm1heGltdW0gPiBjb3B5Lm1heGltdW0gPyAwIDogc2NoZW1hLm1heGltdW07XG4gICAgICAgIGNvcHkuZXhjbHVzaXZlTWluaW11bSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1pbkxlbmd0aCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29weS5tYXhMZW5ndGggPSBzY2hlbWEubWluTGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhMZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvcHkubWluTGVuZ3RoID0gc2NoZW1hLm1heExlbmd0aCA+IGNvcHkubWF4TGVuZ3RoID8gMCA6IHNjaGVtYS5tYXhMZW5ndGg7XG4gICAgfVxuICAgIGlmIChzY2hlbWEudHlwZSkge1xuICAgICAgICBjb3B5LnR5cGUgPSByYW5kb20ucGljayhlbnYuQUxMX1RZUEVTLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgLy8gdHJlYXQgYm90aCB0eXBlcyBhcyBfc2ltaWxhciBlbm91Z2hfIHRvIGJlIHNraXBwZWQgZXF1YWxcbiAgICAgICAgICAgIGlmICh4ID09PSAnbnVtYmVyJyB8fCB4ID09PSAnaW50ZWdlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hLnR5cGUgIT09ICdudW1iZXInICYmIHNjaGVtYS50eXBlICE9PSAnaW50ZWdlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gc2NoZW1hLnR5cGU7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2NoZW1hLmVudW0pIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gYW55VmFsdWUoKTtcbiAgICAgICAgfSB3aGlsZSAoc2NoZW1hLmVudW0uaW5kZXhPZih2YWx1ZSkgIT09IC0xKTtcbiAgICAgICAgY29weS5lbnVtID0gW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5yZXF1aXJlZCAmJiBjb3B5LnByb3BlcnRpZXMpIHtcbiAgICAgICAgc2NoZW1hLnJlcXVpcmVkLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb3B5LnByb3BlcnRpZXNbcHJvcF07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBUT0RPOiBleHBsb3JlIG1vcmUgc2NlbmFyaW9zXG4gICAgcmV0dXJuIGNvcHk7XG59XG4vLyBGSVhNRTogZXZhbHVhdGUgbW9yZSBjb25zdHJhaW50cz9cbmZ1bmN0aW9uIHZhbGlkYXRlKHZhbHVlLCBzY2hlbWFzKSB7XG4gICAgcmV0dXJuICFzY2hlbWFzLmV2ZXJ5KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIGlmICh0eXBlb2YgeC5taW5pbXVtICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA+PSB4Lm1pbmltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgeC5tYXhpbXVtICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA8PSB4Lm1heGltdW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0tleShwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AgPT09ICdlbnVtJyB8fCBwcm9wID09PSAnZGVmYXVsdCcgfHwgcHJvcCA9PT0gJ3JlcXVpcmVkJyB8fCBwcm9wID09PSAnZGVmaW5pdGlvbnMnO1xufVxuZnVuY3Rpb24gb21pdFByb3BzKG9iaiwgcHJvcHMpIHtcbiAgICB2YXIgY29weSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAocHJvcHMuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgICAgICAgICBjb3B5W2tdID0gb2JqW2tdLnNsaWNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb3B5W2tdID0gdHlwZW9mIG9ialtrXSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgPyBtZXJnZSh7fSwgb2JqW2tdKVxuICAgICAgICAgICAgICAgICAgICA6IG9ialtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3B5O1xufVxudmFyIHV0aWxzID0ge1xuICAgIGdldFN1YkF0dHJpYnV0ZTogZ2V0U3ViQXR0cmlidXRlLFxuICAgIGhhc1Byb3BlcnRpZXM6IGhhc1Byb3BlcnRpZXMsXG4gICAgb21pdFByb3BzOiBvbWl0UHJvcHMsXG4gICAgdHlwZWNhc3Q6IHR5cGVjYXN0LFxuICAgIG1lcmdlOiBtZXJnZSxcbiAgICBjbGVhbjogY2xlYW4sXG4gICAgc2hvcnQ6IHNob3J0LFxuICAgIG5vdFZhbHVlOiBub3RWYWx1ZSxcbiAgICBhbnlWYWx1ZTogYW55VmFsdWUsXG4gICAgdmFsaWRhdGU6IHZhbGlkYXRlLFxuICAgIGlzS2V5OiBpc0tleSxcbn07XG5cbnZhciBQYXJzZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHRzbGliXzEuX19leHRlbmRzKFBhcnNlRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGFyc2VFcnJvcihtZXNzYWdlLCBwYXRoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKF90aGlzLCBfdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMubmFtZSA9ICdQYXJzZUVycm9yJztcbiAgICAgICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIF90aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBQYXJzZUVycm9yO1xufShFcnJvcikpO1xuXG52YXIgaW5mZXJyZWRQcm9wZXJ0aWVzID0ge1xuICAgIGFycmF5OiBbXG4gICAgICAgICdhZGRpdGlvbmFsSXRlbXMnLFxuICAgICAgICAnaXRlbXMnLFxuICAgICAgICAnbWF4SXRlbXMnLFxuICAgICAgICAnbWluSXRlbXMnLFxuICAgICAgICAndW5pcXVlSXRlbXMnXG4gICAgXSxcbiAgICBpbnRlZ2VyOiBbXG4gICAgICAgICdleGNsdXNpdmVNYXhpbXVtJyxcbiAgICAgICAgJ2V4Y2x1c2l2ZU1pbmltdW0nLFxuICAgICAgICAnbWF4aW11bScsXG4gICAgICAgICdtaW5pbXVtJyxcbiAgICAgICAgJ211bHRpcGxlT2YnXG4gICAgXSxcbiAgICBvYmplY3Q6IFtcbiAgICAgICAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJyxcbiAgICAgICAgJ2RlcGVuZGVuY2llcycsXG4gICAgICAgICdtYXhQcm9wZXJ0aWVzJyxcbiAgICAgICAgJ21pblByb3BlcnRpZXMnLFxuICAgICAgICAncGF0dGVyblByb3BlcnRpZXMnLFxuICAgICAgICAncHJvcGVydGllcycsXG4gICAgICAgICdyZXF1aXJlZCdcbiAgICBdLFxuICAgIHN0cmluZzogW1xuICAgICAgICAnbWF4TGVuZ3RoJyxcbiAgICAgICAgJ21pbkxlbmd0aCcsXG4gICAgICAgICdwYXR0ZXJuJ1xuICAgIF1cbn07XG5pbmZlcnJlZFByb3BlcnRpZXMubnVtYmVyID0gaW5mZXJyZWRQcm9wZXJ0aWVzLmludGVnZXI7XG52YXIgc3Vic2NoZW1hUHJvcGVydGllcyA9IFtcbiAgICAnYWRkaXRpb25hbEl0ZW1zJyxcbiAgICAnaXRlbXMnLFxuICAgICdhZGRpdGlvbmFsUHJvcGVydGllcycsXG4gICAgJ2RlcGVuZGVuY2llcycsXG4gICAgJ3BhdHRlcm5Qcm9wZXJ0aWVzJyxcbiAgICAncHJvcGVydGllcydcbl07XG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIGtleXMgb2YgYG9iamAgYW5kOlxuICogLSBjaGVja3Mgd2hldGhlciB0aG9zZSBrZXlzIG1hdGNoIHByb3BlcnRpZXMgb2YgYSBnaXZlbiBpbmZlcnJlZCB0eXBlXG4gKiAtIG1ha2VzIHN1cmUgdGhhdCBgb2JqYCBpcyBub3QgYSBzdWJzY2hlbWE7IF9EbyBub3QgYXR0ZW1wdCB0byBpbmZlciBwcm9wZXJ0aWVzIG5hbWVkIGFzIHN1YnNjaGVtYSBjb250YWluZXJzLiBUaGVcbiAqIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGFueSBwcm9wZXJ0eSBuYW1lIHdpdGhpbiB0aG9zZSBjb250YWluZXJzIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlIHByb3BlcnRpZXMgdXNlZCBmb3JcbiAqIGluZmVycmluZyBtaXNzaW5nIHR5cGUgdmFsdWVzIGNhdXNlcyB0aGUgY29udGFpbmVyIGl0c2VsZiB0byBnZXQgcHJvY2Vzc2VkIHdoaWNoIGxlYWRzIHRvIGludmFsaWQgb3V0cHV0LiAoSXNzdWUgNjIpX1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBtYXRjaGVzVHlwZShvYmosIGxhc3RFbGVtZW50SW5QYXRoLCBpbmZlcnJlZFR5cGVQcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIHZhciBpc1N1YnNjaGVtYSA9IHN1YnNjaGVtYVByb3BlcnRpZXMuaW5kZXhPZihsYXN0RWxlbWVudEluUGF0aCkgPiAtMSwgaW5mZXJyZWRQcm9wZXJ0eUZvdW5kID0gaW5mZXJyZWRUeXBlUHJvcGVydGllcy5pbmRleE9mKHByb3ApID4gLTE7XG4gICAgICAgIGlmIChpbmZlcnJlZFByb3BlcnR5Rm91bmQgJiYgIWlzU3Vic2NoZW1hKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pLmxlbmd0aCA+IDA7XG59XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIGBvYmpgIHR5cGUgbWlnaHQgYmUgaW5mZXJyZWQuIFRoZSBtZWNoYW5pc20gaXRlcmF0ZXMgdGhyb3VnaCBhbGwgaW5mZXJyZWQgdHlwZXMgZGVmaW5pdGlvbnMsXG4gKiB0cmllcyB0byBtYXRjaCBhbGxvd2VkIHByb3BlcnRpZXMgd2l0aCBwcm9wZXJ0aWVzIG9mIGdpdmVuIGBvYmpgLiBSZXR1cm5zIHR5cGUgbmFtZSwgaWYgaW5mZXJyZWQsIG9yIG51bGwuXG4gKlxuICogQHJldHVybnMge3N0cmluZ3xudWxsfVxuICovXG5mdW5jdGlvbiBpbmZlclR5cGUob2JqLCBzY2hlbWFQYXRoKSB7XG4gICAgZm9yICh2YXIgdHlwZU5hbWUgaW4gaW5mZXJyZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhciBsYXN0RWxlbWVudEluUGF0aCA9IHNjaGVtYVBhdGhbc2NoZW1hUGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKG1hdGNoZXNUeXBlKG9iaiwgbGFzdEVsZW1lbnRJblBhdGgsIGluZmVycmVkUHJvcGVydGllc1t0eXBlTmFtZV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgYm9vbGVhbiB2YWx1ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gYm9vbGVhbkdlbmVyYXRvcigpIHtcbiAgICByZXR1cm4gb3B0aW9uQVBJKCdyYW5kb20nKSgpID4gMC41O1xufVxuXG52YXIgYm9vbGVhblR5cGUgPSBib29sZWFuR2VuZXJhdG9yO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBudWxsIHZhbHVlLlxuICpcbiAqIEByZXR1cm5zIHtudWxsfVxuICovXG5mdW5jdGlvbiBudWxsR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBudWxsO1xufVxuXG52YXIgbnVsbFR5cGUgPSBudWxsR2VuZXJhdG9yO1xuXG4vLyBUT0RPIHByb3ZpZGUgdHlwZXNcbmZ1bmN0aW9uIHVuaXF1ZShwYXRoLCBpdGVtcywgdmFsdWUsIHNhbXBsZSwgcmVzb2x2ZSwgdHJhdmVyc2VDYWxsYmFjaykge1xuICAgIHZhciB0bXAgPSBbXSwgc2VlbiA9IFtdO1xuICAgIGZ1bmN0aW9uIHdhbGsob2JqKSB7XG4gICAgICAgIHZhciBqc29uID0gSlNPTi5zdHJpbmdpZnkob2JqKTtcbiAgICAgICAgaWYgKHNlZW4uaW5kZXhPZihqc29uKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChqc29uKTtcbiAgICAgICAgICAgIHRtcC5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXRlbXMuZm9yRWFjaCh3YWxrKTtcbiAgICAvLyBUT0RPOiBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uP1xuICAgIHZhciBsaW1pdCA9IDEwMDtcbiAgICB3aGlsZSAodG1wLmxlbmd0aCAhPT0gaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHdhbGsodHJhdmVyc2VDYWxsYmFjayh2YWx1ZS5pdGVtcyB8fCBzYW1wbGUsIHBhdGgsIHJlc29sdmUpKTtcbiAgICAgICAgaWYgKCFsaW1pdC0tKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG1wO1xufVxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG52YXIgYXJyYXlUeXBlID0gZnVuY3Rpb24gYXJyYXlUeXBlKHZhbHVlLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZUNhbGxiYWNrKSB7XG4gICAgdmFyIGl0ZW1zID0gW107XG4gICAgaWYgKCEodmFsdWUuaXRlbXMgfHwgdmFsdWUuYWRkaXRpb25hbEl0ZW1zKSkge1xuICAgICAgICBpZiAodXRpbHMuaGFzUHJvcGVydGllcyh2YWx1ZSwgJ21pbkl0ZW1zJywgJ21heEl0ZW1zJywgJ3VuaXF1ZUl0ZW1zJykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdtaXNzaW5nIGl0ZW1zIGZvciAnICsgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIC8vIHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zODM1NTIyOC83NjkzODRcbiAgICAvLyBhZnRlciB0eXBlIGd1YXJkcyBzdXBwb3J0IHN1YnByb3BlcnRpZXMgKGluIFRTIDIuMCkgd2UgY2FuIHNpbXBsaWZ5IGJlbG93IHRvICh2YWx1ZS5pdGVtcyBpbnN0YW5jZW9mIEFycmF5KVxuICAgIC8vIHNvIHRoYXQgdmFsdWUuaXRlbXMubWFwIGJlY29tZXMgcmVjb2duaXplZCBmb3IgdHlwZXNjcmlwdCBjb21waWxlclxuICAgIHZhciB0bXBJdGVtcyA9IHZhbHVlLml0ZW1zO1xuICAgIGlmICh0bXBJdGVtcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoaXRlbXMsIHRtcEl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSwga2V5KSB7XG4gICAgICAgICAgICB2YXIgaXRlbVN1YnBhdGggPSBwYXRoLmNvbmNhdChbJ2l0ZW1zJywga2V5ICsgJyddKTtcbiAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUNhbGxiYWNrKGl0ZW0sIGl0ZW1TdWJwYXRoLCByZXNvbHZlKTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICB2YXIgbWluSXRlbXMgPSB2YWx1ZS5taW5JdGVtcztcbiAgICB2YXIgbWF4SXRlbXMgPSB2YWx1ZS5tYXhJdGVtcztcbiAgICBpZiAob3B0aW9uQVBJKCdtaW5JdGVtcycpICYmIG1pbkl0ZW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZml4IGJvdW5kYXJpZXNcbiAgICAgICAgbWluSXRlbXMgPSAhbWF4SXRlbXNcbiAgICAgICAgICAgID8gb3B0aW9uQVBJKCdtaW5JdGVtcycpXG4gICAgICAgICAgICA6IE1hdGgubWluKG9wdGlvbkFQSSgnbWluSXRlbXMnKSwgbWF4SXRlbXMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uQVBJKCdtYXhJdGVtcycpKSB7XG4gICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1heCBpdGVtcyBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICBpZiAobWF4SXRlbXMgJiYgbWF4SXRlbXMgPiBvcHRpb25BUEkoJ21heEl0ZW1zJykpIHtcbiAgICAgICAgICAgIG1heEl0ZW1zID0gb3B0aW9uQVBJKCdtYXhJdGVtcycpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IG1pbiBpdGVtcyBhYm92ZSBvdXIgbWF4aW11bVxuICAgICAgICBpZiAobWluSXRlbXMgJiYgbWluSXRlbXMgPiBvcHRpb25BUEkoJ21heEl0ZW1zJykpIHtcbiAgICAgICAgICAgIG1pbkl0ZW1zID0gbWF4SXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9wdGlvbmFsc1Byb2JhYmlsaXR5ID0gb3B0aW9uQVBJKCdhbHdheXNGYWtlT3B0aW9uYWxzJykgPT09IHRydWUgPyAxLjAgOiBvcHRpb25BUEkoJ29wdGlvbmFsc1Byb2JhYmlsaXR5Jyk7XG4gICAgdmFyIGxlbmd0aCA9IChtYXhJdGVtcyAhPSBudWxsICYmIG9wdGlvbmFsc1Byb2JhYmlsaXR5KVxuICAgICAgICA/IE1hdGgucm91bmQobWF4SXRlbXMgKiBvcHRpb25hbHNQcm9iYWJpbGl0eSlcbiAgICAgICAgOiByYW5kb20ubnVtYmVyKG1pbkl0ZW1zLCBtYXhJdGVtcywgMSwgNSksIFxuICAgIC8vIFRPRE8gYmVsb3cgbG9va3MgYmFkLiBTaG91bGQgYWRkaXRpb25hbEl0ZW1zIGJlIGNvcGllZCBhcy1pcz9cbiAgICBzYW1wbGUgPSB0eXBlb2YgdmFsdWUuYWRkaXRpb25hbEl0ZW1zID09PSAnb2JqZWN0JyA/IHZhbHVlLmFkZGl0aW9uYWxJdGVtcyA6IHt9O1xuICAgIGZvciAodmFyIGN1cnJlbnQgPSBpdGVtcy5sZW5ndGg7IGN1cnJlbnQgPCBsZW5ndGg7IGN1cnJlbnQrKykge1xuICAgICAgICB2YXIgaXRlbVN1YnBhdGggPSBwYXRoLmNvbmNhdChbJ2l0ZW1zJywgY3VycmVudCArICcnXSk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdHJhdmVyc2VDYWxsYmFjayh2YWx1ZS5pdGVtcyB8fCBzYW1wbGUsIGl0ZW1TdWJwYXRoLCByZXNvbHZlKTtcbiAgICAgICAgaXRlbXMucHVzaChlbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnVuaXF1ZUl0ZW1zKSB7XG4gICAgICAgIHJldHVybiB1bmlxdWUocGF0aC5jb25jYXQoWydpdGVtcyddKSwgaXRlbXMsIHZhbHVlLCBzYW1wbGUsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG59O1xuXG52YXIgbnVtYmVyVHlwZSA9IGZ1bmN0aW9uIG51bWJlclR5cGUodmFsdWUpIHtcbiAgICB2YXIgbWluID0gdHlwZW9mIHZhbHVlLm1pbmltdW0gPT09ICd1bmRlZmluZWQnID8gZW52Lk1JTl9JTlRFR0VSIDogdmFsdWUubWluaW11bSwgbWF4ID0gdHlwZW9mIHZhbHVlLm1heGltdW0gPT09ICd1bmRlZmluZWQnID8gZW52Lk1BWF9JTlRFR0VSIDogdmFsdWUubWF4aW11bSwgbXVsdGlwbGVPZiA9IHZhbHVlLm11bHRpcGxlT2Y7XG4gICAgaWYgKG11bHRpcGxlT2YpIHtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXggLyBtdWx0aXBsZU9mKSAqIG11bHRpcGxlT2Y7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4gLyBtdWx0aXBsZU9mKSAqIG11bHRpcGxlT2Y7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5leGNsdXNpdmVNaW5pbXVtICYmIG1pbiA9PT0gdmFsdWUubWluaW11bSkge1xuICAgICAgICBtaW4gKz0gbXVsdGlwbGVPZiB8fCAxO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZXhjbHVzaXZlTWF4aW11bSAmJiBtYXggPT09IHZhbHVlLm1heGltdW0pIHtcbiAgICAgICAgbWF4IC09IG11bHRpcGxlT2YgfHwgMTtcbiAgICB9XG4gICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBpZiAobXVsdGlwbGVPZikge1xuICAgICAgICBpZiAoU3RyaW5nKG11bHRpcGxlT2YpLmluZGV4T2YoJy4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHZhciBiYXNlID0gcmFuZG9tLm51bWJlcihNYXRoLmZsb29yKG1pbiAvIG11bHRpcGxlT2YpLCBNYXRoLmZsb29yKG1heCAvIG11bHRpcGxlT2YpKSAqIG11bHRpcGxlT2Y7XG4gICAgICAgICAgICB3aGlsZSAoYmFzZSA8IG1pbikge1xuICAgICAgICAgICAgICAgIGJhc2UgKz0gdmFsdWUubXVsdGlwbGVPZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBib3VuZGFyeSA9IChtYXggLSBtaW4pIC8gbXVsdGlwbGVPZjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyIG51bSA9IHJhbmRvbS5udW1iZXIoMCwgYm91bmRhcnkpICogbXVsdGlwbGVPZjtcbiAgICAgICAgICAgIHZhciBmaXggPSAobnVtIC8gbXVsdGlwbGVPZikgJSAxO1xuICAgICAgICB9IHdoaWxlIChmaXggIT09IDApO1xuICAgICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZG9tLm51bWJlcihtaW4sIG1heCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpO1xufTtcblxuLy8gVGhlIGBpbnRlZ2VyYCB0eXBlIGlzIGp1c3QgYSB3cmFwcGVyIGZvciB0aGUgYG51bWJlcmAgdHlwZS4gVGhlIGBudW1iZXJgIHR5cGVcbi8vIHJldHVybnMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kIGBpbnRlZ2VyYCB0eXBlIHRydW5jYXRlcyB0aGUgZnJhY3Rpb25cbi8vIHBhcnQsIGxlYXZpbmcgdGhlIHJlc3VsdCBhcyBhbiBpbnRlZ2VyLlxudmFyIGludGVnZXJUeXBlID0gZnVuY3Rpb24gaW50ZWdlclR5cGUodmFsdWUpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gbnVtYmVyVHlwZSh2YWx1ZSk7XG4gICAgLy8gd2hldGhlciB0aGUgZ2VuZXJhdGVkIG51bWJlciBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSwgbmVlZCB0byB1c2UgZWl0aGVyXG4gICAgLy8gZmxvb3IgKHBvc2l0aXZlKSBvciBjZWlsIChuZWdhdGl2ZSkgZnVuY3Rpb24gdG8gZ2V0IHJpZCBvZiB0aGUgZnJhY3Rpb25cbiAgICByZXR1cm4gZ2VuZXJhdGVkID4gMCA/IE1hdGguZmxvb3IoZ2VuZXJhdGVkKSA6IE1hdGguY2VpbChnZW5lcmF0ZWQpO1xufTtcblxudmFyIExJUFNVTV9XT1JEUyA9ICgnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUnXG4gICAgKyAnIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEgVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0gcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhJ1xuICAgICsgJyBjb21tb2RvIGNvbnNlcXVhdCBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSdcbiAgICArICcgcGFyaWF0dXIgRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCdcbiAgICArICcgbGFib3J1bScpLnNwbGl0KCcgJyk7XG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGFycmF5IG9mIHNpbmdsZSBsb3JlbSBpcHN1bSB3b3Jkcy5cbiAqXG4gKiBAcGFyYW0gbGVuZ3RoXG4gKiBAcmV0dXJucyB7QXJyYXkuPHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIHdvcmRzR2VuZXJhdG9yKGxlbmd0aCkge1xuICAgIHZhciB3b3JkcyA9IHJhbmRvbS5zaHVmZmxlKExJUFNVTV9XT1JEUyk7XG4gICAgcmV0dXJuIHdvcmRzLnNsaWNlKDAsIGxlbmd0aCk7XG59XG5cbi8vIGZhbGxiYWNrIGdlbmVyYXRvclxudmFyIGFueVR5cGUgPSB7IHR5cGU6IFsnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nXSB9O1xuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG52YXIgb2JqZWN0VHlwZSA9IGZ1bmN0aW9uIG9iamVjdFR5cGUodmFsdWUsIHBhdGgsIHJlc29sdmUsIHRyYXZlcnNlQ2FsbGJhY2spIHtcbiAgICB2YXIgcHJvcHMgPSB7fTtcbiAgICB2YXIgcHJvcGVydGllcyA9IHZhbHVlLnByb3BlcnRpZXMgfHwge307XG4gICAgdmFyIHBhdHRlcm5Qcm9wZXJ0aWVzID0gdmFsdWUucGF0dGVyblByb3BlcnRpZXMgfHwge307XG4gICAgdmFyIHJlcXVpcmVkUHJvcGVydGllcyA9ICh2YWx1ZS5yZXF1aXJlZCB8fCBbXSkuc2xpY2UoKTtcbiAgICB2YXIgYWxsb3dzQWRkaXRpb25hbCA9IHZhbHVlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICB2YXIgcHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcyk7XG4gICAgdmFyIHBhdHRlcm5Qcm9wZXJ0eUtleXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJuUHJvcGVydGllcyk7XG4gICAgdmFyIG9wdGlvbmFsUHJvcGVydGllcyA9IHByb3BlcnR5S2V5cy5jb25jYXQocGF0dGVyblByb3BlcnR5S2V5cykucmVkdWNlKGZ1bmN0aW9uIChfcmVzcG9uc2UsIF9rZXkpIHtcbiAgICAgICAgaWYgKHJlcXVpcmVkUHJvcGVydGllcy5pbmRleE9mKF9rZXkpID09PSAtMSlcbiAgICAgICAgICAgIF9yZXNwb25zZS5wdXNoKF9rZXkpO1xuICAgICAgICByZXR1cm4gX3Jlc3BvbnNlO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgYWxsUHJvcGVydGllcyA9IHJlcXVpcmVkUHJvcGVydGllcy5jb25jYXQob3B0aW9uYWxQcm9wZXJ0aWVzKTtcbiAgICB2YXIgYWRkaXRpb25hbFByb3BlcnRpZXMgPSBhbGxvd3NBZGRpdGlvbmFsXG4gICAgICAgID8gKHZhbHVlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSB0cnVlID8ge30gOiB2YWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllcylcbiAgICAgICAgOiBudWxsO1xuICAgIGlmICghYWxsb3dzQWRkaXRpb25hbCAmJlxuICAgICAgICBwcm9wZXJ0eUtleXMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHBhdHRlcm5Qcm9wZXJ0eUtleXMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHV0aWxzLmhhc1Byb3BlcnRpZXModmFsdWUsICdtaW5Qcm9wZXJ0aWVzJywgJ21heFByb3BlcnRpZXMnLCAnZGVwZW5kZW5jaWVzJywgJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgLy8ganVzdCBub3RoaW5nXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbkFQSSgncmVxdWlyZWRPbmx5JykgPT09IHRydWUpIHtcbiAgICAgICAgcmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNba2V5XSkge1xuICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSBwcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJhdmVyc2VDYWxsYmFjayhwcm9wcywgcGF0aC5jb25jYXQoWydwcm9wZXJ0aWVzJ10pLCByZXNvbHZlKTtcbiAgICB9XG4gICAgdmFyIG9wdGlvbmFsc1Byb2JhYmlsaXR5ID0gb3B0aW9uQVBJKCdhbHdheXNGYWtlT3B0aW9uYWxzJykgPT09IHRydWUgPyAxLjAgOiBvcHRpb25BUEkoJ29wdGlvbmFsc1Byb2JhYmlsaXR5Jyk7XG4gICAgdmFyIGlnbm9yZVByb3BlcnRpZXMgPSBvcHRpb25BUEkoJ2lnbm9yZVByb3BlcnRpZXMnKSB8fCBbXTtcbiAgICB2YXIgbWluID0gTWF0aC5tYXgodmFsdWUubWluUHJvcGVydGllcyB8fCAwLCByZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKTtcbiAgICB2YXIgbWF4ID0gTWF0aC5tYXgodmFsdWUubWF4UHJvcGVydGllcyB8fCBhbGxQcm9wZXJ0aWVzLmxlbmd0aCk7XG4gICAgdmFyIG5lZWRlZEV4dHJhcyA9IE1hdGgucm91bmQoKG1pbiAtIHJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGgpICsgb3B0aW9uYWxzUHJvYmFiaWxpdHkgKiAobWF4IC0gbWluKSk7XG4gICAgdmFyIGV4dHJhUHJvcGVydGllc1JhbmRvbU9yZGVyID0gcmFuZG9tLnNodWZmbGUob3B0aW9uYWxQcm9wZXJ0aWVzKS5zbGljZSgwLCBuZWVkZWRFeHRyYXMpO1xuICAgIHZhciBleHRyYVByb3BlcnRpZXMgPSBvcHRpb25hbFByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChfaXRlbSkge1xuICAgICAgICByZXR1cm4gZXh0cmFQcm9wZXJ0aWVzUmFuZG9tT3JkZXIuaW5kZXhPZihfaXRlbSkgIT09IC0xO1xuICAgIH0pO1xuICAgIC8vIHByb3BlcnRpZXMgYXJlIHJlYWQgZnJvbSByaWdodC10by1sZWZ0XG4gICAgdmFyIF9wcm9wcyA9IHJlcXVpcmVkUHJvcGVydGllcy5jb25jYXQoZXh0cmFQcm9wZXJ0aWVzKS5zbGljZSgwLCBtYXgpO1xuICAgIHZhciBza2lwcGVkID0gW107XG4gICAgdmFyIG1pc3NpbmcgPSBbXTtcbiAgICBfcHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWdub3JlUHJvcGVydGllcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKChpZ25vcmVQcm9wZXJ0aWVzW2ldIGluc3RhbmNlb2YgUmVnRXhwICYmIGlnbm9yZVByb3BlcnRpZXNbaV0udGVzdChrZXkpKVxuICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgaWdub3JlUHJvcGVydGllc1tpXSA9PT0gJ3N0cmluZycgJiYgaWdub3JlUHJvcGVydGllc1tpXSA9PT0ga2V5KVxuICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgaWdub3JlUHJvcGVydGllc1tpXSA9PT0gJ2Z1bmN0aW9uJyAmJiBpZ25vcmVQcm9wZXJ0aWVzW2ldKHByb3BlcnRpZXNba2V5XSwga2V5KSkpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlyc3Qgb25lcyBhcmUgdGhlIHJlcXVpcmVkIHByb3Blcmllc1xuICAgICAgICBpZiAocHJvcGVydGllc1trZXldKSB7XG4gICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGZvdW5kO1xuICAgICAgICAgICAgLy8gdGhlbiB0cnkgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgICAgICAgIHBhdHRlcm5Qcm9wZXJ0eUtleXMuZm9yRWFjaChmdW5jdGlvbiAoX2tleSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkubWF0Y2gobmV3IFJlZ0V4cChfa2V5KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1tyYW5kb20ucmFuZGV4cChrZXkpXSA9IHBhdHRlcm5Qcm9wZXJ0aWVzW19rZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIHRyeSBwYXR0ZXJuUHJvcGVydGllcyBhZ2FpbixcbiAgICAgICAgICAgICAgICB2YXIgc3Vic2NoZW1hID0gcGF0dGVyblByb3BlcnRpZXNba2V5XSB8fCBhZGRpdGlvbmFsUHJvcGVydGllcztcbiAgICAgICAgICAgICAgICAvLyBGSVhNRTogYWxsb3cgYW55VHlwZSBhcyBmYWxsYmFjayB3aGVuIG5vIHN1YnNjaGVtYSBpcyBnaXZlbj9cbiAgICAgICAgICAgICAgICBpZiAoc3Vic2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB3ZSBjYW4gdXNlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzP1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twYXR0ZXJuUHJvcGVydGllc1trZXldID8gcmFuZG9tLnJhbmRleHAoa2V5KSA6IGtleV0gPSBzdWJzY2hlbWE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZmlsbFByb3BzID0gb3B0aW9uQVBJKCdmaWxsUHJvcGVydGllcycpO1xuICAgIHZhciByZXVzZVByb3BzID0gb3B0aW9uQVBJKCdyZXVzZVByb3BlcnRpZXMnKTtcbiAgICAvLyBkaXNjYXJkIGFscmVhZHkgaWdub3JlZCBwcm9wcyBpZiB0aGV5J3JlIG5vdCByZXF1aXJlZCB0byBiZSBmaWxsZWQuLi5cbiAgICB2YXIgY3VycmVudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggKyAoZmlsbFByb3BzID8gMCA6IHNraXBwZWQubGVuZ3RoKTtcbiAgICB3aGlsZSAoZmlsbFByb3BzKSB7XG4gICAgICAgIGlmICghKHBhdHRlcm5Qcm9wZXJ0eUtleXMubGVuZ3RoIHx8IGFsbG93c0FkZGl0aW9uYWwpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudCA+PSBtaW4pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd3NBZGRpdGlvbmFsKSB7XG4gICAgICAgICAgICBpZiAocmV1c2VQcm9wcyAmJiAoKHByb3BlcnR5S2V5cy5sZW5ndGggLSBjdXJyZW50KSA+IG1pbikpIHtcbiAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBsYXJnZSBvYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByYW5kb20ucGljayhwcm9wZXJ0eUtleXMpO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHR5cGVvZiBwcm9wc1trZXldICE9PSAndW5kZWZpbmVkJyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1trZXldID0gcHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHdvcmQgPSB3b3Jkc0dlbmVyYXRvcigxKSArIHJhbmRvbS5yYW5kZXhwKCdbYS1mXFxcXGRdezEsM30nKTtcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BzW3dvcmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3dvcmRdID0gYWRkaXRpb25hbFByb3BlcnRpZXMgfHwgYW55VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuUHJvcGVydHlLZXlzLmZvckVhY2goZnVuY3Rpb24gKF9rZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkID0gcmFuZG9tLnJhbmRleHAoX2tleSk7XG4gICAgICAgICAgICBpZiAoIXByb3BzW3dvcmRdKSB7XG4gICAgICAgICAgICAgICAgcHJvcHNbd29yZF0gPSBwYXR0ZXJuUHJvcGVydGllc1tfa2V5XTtcbiAgICAgICAgICAgICAgICBjdXJyZW50ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWFsbG93c0FkZGl0aW9uYWwgJiYgY3VycmVudCA8IG1pbikge1xuICAgICAgICBpZiAobWlzc2luZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdwcm9wZXJ0aWVzIFwiJyArIG1pc3Npbmcuam9pbignLCAnKSArICdcIiB3ZXJlIG5vdCBmb3VuZCB3aGlsZSBhZGRpdGlvbmFsUHJvcGVydGllcyBpcyBmYWxzZTpcXG4nICtcbiAgICAgICAgICAgICAgICB1dGlscy5zaG9ydCh2YWx1ZSksIHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdwcm9wZXJ0aWVzIGNvbnN0cmFpbnRzIHdlcmUgdG9vIHN0cm9uZyB0byBzdWNjZXNzZnVsbHkgZ2VuZXJhdGUgYSB2YWxpZCBvYmplY3QgZm9yOlxcbicgK1xuICAgICAgICAgICAgdXRpbHMuc2hvcnQodmFsdWUpLCBwYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYXZlcnNlQ2FsbGJhY2socHJvcHMsIHBhdGguY29uY2F0KFsncHJvcGVydGllcyddKSwgcmVzb2x2ZSk7XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRodW5rR2VuZXJhdG9yIHRvIHByb2R1Y2Ugc29tZSB3b3JkcyBmb3IgdGhlIGZpbmFsIHJlc3VsdC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBwcm9kdWNlKCkge1xuICAgIHZhciBsZW5ndGggPSByYW5kb20ubnVtYmVyKDEsIDUpO1xuICAgIHJldHVybiB3b3Jkc0dlbmVyYXRvcihsZW5ndGgpLmpvaW4oJyAnKTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgY29uY2F0ZW5hdGVkIHN0cmluZyBiYXNlZCBvbiB3b3JkcyBnZW5lcmF0b3IuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdGh1bmtHZW5lcmF0b3IobWluLCBtYXgpIHtcbiAgICBpZiAobWluID09PSB2b2lkIDApIHsgbWluID0gMDsgfVxuICAgIGlmIChtYXggPT09IHZvaWQgMCkgeyBtYXggPSAxNDA7IH1cbiAgICB2YXIgbWluID0gTWF0aC5tYXgoMCwgbWluKSwgbWF4ID0gcmFuZG9tLm51bWJlcihtaW4sIG1heCksIHJlc3VsdCA9IHByb2R1Y2UoKTtcbiAgICAvLyBhcHBlbmQgdW50aWwgbGVuZ3RoIGlzIHJlYWNoZWRcbiAgICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA8IG1pbikge1xuICAgICAgICByZXN1bHQgKz0gcHJvZHVjZSgpO1xuICAgIH1cbiAgICAvLyBjdXQgaWYgbmVlZGVkXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBtYXgpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cigwLCBtYXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIGlwdjQgYWRkcmVzcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBpcHY0R2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMF0ubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbS5udW1iZXIoMCwgMjU1KTtcbiAgICB9KS5qb2luKCcuJyk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgZGF0ZSB0aW1lIElTTyBmb3JtYXQgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRhdGVUaW1lR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiByYW5kb20uZGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHJhbmRvbWl6ZWQgZGF0ZSBmb3JtYXQgc3RyaW5nLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRhdGVHZW5lcmF0b3IoKSB7XG4gICAgcmV0dXJuIGRhdGVUaW1lR2VuZXJhdG9yKCkuc2xpY2UoMCwgMTApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb21pemVkIHRpbWUgZm9ybWF0IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB0aW1lR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpLnNsaWNlKDExKTtcbn1cblxuLyoqXG4gKiBQcmVkZWZpbmVkIGNvcmUgZm9ybWF0c1xuICogQHR5cGUge1trZXk6IHN0cmluZ106IHN0cmluZ31cbiAqL1xudmFyIHJlZ2V4cHMgPSB7XG4gICAgZW1haWw6ICdbYS16QS1aXFxcXGRdW2EtekEtWlxcXFxkLV17MSwxM31bYS16QS1aXFxcXGRdQHtob3N0bmFtZX0nLFxuICAgIGhvc3RuYW1lOiAnW2EtekEtWl17MSwzM31cXFxcLlthLXpdezIsNH0nLFxuICAgIGlwdjY6ICdbYS1mXFxcXGRdezR9KDpbYS1mXFxcXGRdezR9KXs3fScsXG4gICAgdXJpOiAnaHR0cHM/Oi8vW2EtekEtWl1bYS16QS1aMC05Ky0uXSonLFxuICAgICd1cmktcmVmZXJlbmNlJzogJyhodHRwcz86Ly98I3wvfClbYS16QS1aXVthLXpBLVowLTkrLS5dKicsXG59O1xuLyoqXG4gKiBHZW5lcmF0ZXMgcmFuZG9taXplZCBzdHJpbmcgYmFzaW5nIG9uIGEgYnVpbHQtaW4gcmVnZXggZm9ybWF0XG4gKlxuICogQHBhcmFtIGNvcmVGb3JtYXRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNvcmVGb3JtYXRHZW5lcmF0b3IoY29yZUZvcm1hdCkge1xuICAgIHJldHVybiByYW5kb20ucmFuZGV4cChyZWdleHBzW2NvcmVGb3JtYXRdKS5yZXBsYWNlKC9cXHsoXFx3KylcXH0vLCBmdW5jdGlvbiAobWF0Y2gsIGtleSkge1xuICAgICAgICByZXR1cm4gcmFuZG9tLnJhbmRleHAocmVnZXhwc1trZXldKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVGb3JtYXQodmFsdWUsIGludmFsaWQpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBmb3JtYXRBUEkodmFsdWUuZm9ybWF0KTtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayh2YWx1ZSk7XG4gICAgfVxuICAgIHN3aXRjaCAodmFsdWUuZm9ybWF0KSB7XG4gICAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgICAgIHJldHVybiBkYXRlVGltZUdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIHJldHVybiBkYXRlR2VuZXJhdG9yKCk7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgICAgcmV0dXJuIHRpbWVHZW5lcmF0b3IoKTtcbiAgICAgICAgY2FzZSAnaXB2NCc6XG4gICAgICAgICAgICByZXR1cm4gaXB2NEdlbmVyYXRvcigpO1xuICAgICAgICBjYXNlICdyZWdleCc6XG4gICAgICAgICAgICAvLyBUT0RPOiBkaXNjdXNzXG4gICAgICAgICAgICByZXR1cm4gJy4rPyc7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgY2FzZSAnaG9zdG5hbWUnOlxuICAgICAgICBjYXNlICdpcHY2JzpcbiAgICAgICAgY2FzZSAndXJpJzpcbiAgICAgICAgY2FzZSAndXJpLXJlZmVyZW5jZSc6XG4gICAgICAgICAgICByZXR1cm4gY29yZUZvcm1hdEdlbmVyYXRvcih2YWx1ZS5mb3JtYXQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uQVBJKCdmYWlsT25JbnZhbGlkRm9ybWF0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHJlZ2lzdHJ5IGtleSAnICsgdXRpbHMuc2hvcnQodmFsdWUuZm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgZm9ybWF0IFwiJyArIHZhbHVlLmZvcm1hdCArICdcIicpO1xuICAgIH1cbn1cbnZhciBzdHJpbmdUeXBlID0gZnVuY3Rpb24gc3RyaW5nVHlwZSh2YWx1ZSkge1xuICAgIHZhciBvdXRwdXQ7XG4gICAgb3V0cHV0ID0gdXRpbHMudHlwZWNhc3QodmFsdWUsIGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgICAgIGlmICh2YWx1ZS5mb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm1hdCh2YWx1ZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGh1bmtHZW5lcmF0b3Iob3B0cy5taW5MZW5ndGgsIG9wdHMubWF4TGVuZ3RoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLnBhdHRlcm4pIHtcbiAgICAgICAgICAgIHJldHVybiByYW5kb20ucmFuZGV4cCh2YWx1ZS5wYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGh1bmtHZW5lcmF0b3Iob3B0cy5taW5MZW5ndGgsIG9wdHMubWF4TGVuZ3RoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0cHV0O1xufTtcblxudmFyIHR5cGVNYXAgPSB7XG4gICAgYm9vbGVhbjogYm9vbGVhblR5cGUsXG4gICAgbnVsbDogbnVsbFR5cGUsXG4gICAgYXJyYXk6IGFycmF5VHlwZSxcbiAgICBpbnRlZ2VyOiBpbnRlZ2VyVHlwZSxcbiAgICBudW1iZXI6IG51bWJlclR5cGUsXG4gICAgb2JqZWN0OiBvYmplY3RUeXBlLFxuICAgIHN0cmluZzogc3RyaW5nVHlwZVxufTtcblxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiB0cmF2ZXJzZShzY2hlbWEsIHBhdGgsIHJlc29sdmUsIHJvb3RTY2hlbWEpIHtcbiAgICBzY2hlbWEgPSByZXNvbHZlKHNjaGVtYSk7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBkZWZhdWx0IHZhbHVlcyBoYXMgaGlnaGVyIHByZWNlZGVuY2VcbiAgICBpZiAob3B0aW9uQVBJKCd1c2VEZWZhdWx0VmFsdWUnKSAmJiAnZGVmYXVsdCcgaW4gc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuZGVmYXVsdDtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5ub3QgJiYgdHlwZW9mIHNjaGVtYS5ub3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHNjaGVtYSA9IHV0aWxzLm5vdFZhbHVlKHNjaGVtYS5ub3QsIHV0aWxzLm9taXRQcm9wcyhzY2hlbWEsIFsnbm90J10pKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLmVudW0pKSB7XG4gICAgICAgIHJldHVybiB1dGlscy50eXBlY2FzdChzY2hlbWEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJhbmRvbS5waWNrKHNjaGVtYS5lbnVtKTsgfSk7XG4gICAgfVxuICAgIC8vIHRodW5rcyBjYW4gcmV0dXJuIHN1Yi1zY2hlbWFzXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEudGh1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRyYXZlcnNlKHNjaGVtYS50aHVuaygpLCBwYXRoLCByZXNvbHZlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzY2hlbWEuZ2VuZXJhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnR5cGVjYXN0KHNjaGVtYSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gc2NoZW1hLmdlbmVyYXRlKHJvb3RTY2hlbWEpOyB9KTtcbiAgICB9XG4gICAgLy8gVE9ETyByZW1vdmUgdGhlIHVnbHkgb3ZlcmNvbWVcbiAgICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGUgPSByYW5kb20ucGljayh0eXBlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gaW5mZXIgdGhlIHR5cGVcbiAgICAgICAgdHlwZSA9IGluZmVyVHlwZShzY2hlbWEsIHBhdGgpIHx8IHR5cGU7XG4gICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgICBzY2hlbWEudHlwZSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoIXR5cGVNYXBbdHlwZV0pIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25BUEkoJ2ZhaWxPbkludmFsaWRUeXBlcycpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoJ3Vua25vd24gcHJpbWl0aXZlICcgKyB1dGlscy5zaG9ydCh0eXBlKSwgcGF0aC5jb25jYXQoWyd0eXBlJ10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25BUEkoJ2RlZmF1bHRJbnZhbGlkVHlwZVByb2R1Y3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHR5cGVNYXBbdHlwZV0oc2NoZW1hLCBwYXRoLCByZXNvbHZlLCB0cmF2ZXJzZSk7XG4gICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkID0gc2NoZW1hLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hLml0ZW1zLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDogc2NoZW1hLnJlcXVpcmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy5jbGVhbihyZXN1bHQsIG51bGwsIHJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlLnBhdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGUubWVzc2FnZSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGNvcHkgPSB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKSB7XG4gICAgICAgIGNvcHkgPSBbXTtcbiAgICB9XG4gICAgZm9yICh2YXIgcHJvcCBpbiBzY2hlbWEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWFbcHJvcF0gPT09ICdvYmplY3QnICYmIHByb3AgIT09ICdkZWZpbml0aW9ucycpIHtcbiAgICAgICAgICAgIGNvcHlbcHJvcF0gPSB0cmF2ZXJzZShzY2hlbWFbcHJvcF0sIHBhdGguY29uY2F0KFtwcm9wXSksIHJlc29sdmUsIGNvcHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29weVtwcm9wXSA9IHNjaGVtYVtwcm9wXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gcGljayQxKGRhdGEpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKVxuICAgICAgICA/IHJhbmRvbS5waWNrKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbn1cbmZ1bmN0aW9uIGN5Y2xlKGRhdGEsIHJldmVyc2UpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHZhciB2YWx1ZSA9IHJldmVyc2VcbiAgICAgICAgPyBkYXRhLnBvcCgpXG4gICAgICAgIDogZGF0YS5zaGlmdCgpO1xuICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgIGRhdGEudW5zaGlmdCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiByZXNvbHZlKG9iaiwgZGF0YSwgdmFsdWVzLCBwcm9wZXJ0eSkge1xuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgIHZhbHVlcyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgZGF0YSA9IG9iajtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICByZXR1cm4gb2JqLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gcmVzb2x2ZSh4LCBkYXRhLCB2YWx1ZXMsIHByb3BlcnR5KTsgfSk7XG4gICAgfVxuICAgIGlmIChvYmouanNvblBhdGgpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHR5cGVvZiBvYmouanNvblBhdGggIT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IHsgcGF0aDogb2JqLmpzb25QYXRoIH1cbiAgICAgICAgICAgIDogb2JqLmpzb25QYXRoO1xuICAgICAgICBwYXJhbXMuZ3JvdXAgPSBvYmouZ3JvdXAgfHwgcGFyYW1zLmdyb3VwIHx8IHByb3BlcnR5O1xuICAgICAgICBwYXJhbXMuY3ljbGUgPSBvYmouY3ljbGUgfHwgcGFyYW1zLmN5Y2xlIHx8IGZhbHNlO1xuICAgICAgICBwYXJhbXMucmV2ZXJzZSA9IG9iai5yZXZlcnNlIHx8IHBhcmFtcy5yZXZlcnNlIHx8IGZhbHNlO1xuICAgICAgICBwYXJhbXMuY291bnQgPSBvYmouY291bnQgfHwgcGFyYW1zLmNvdW50IHx8IDE7XG4gICAgICAgIHZhciBrZXkgPSBwYXJhbXMuZ3JvdXAgKyBcIl9fXCIgKyBwYXJhbXMucGF0aDtcbiAgICAgICAgaWYgKCF2YWx1ZXNba2V5XSkge1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IGpzb25wYXRoLnF1ZXJ5KGRhdGEsIHBhcmFtcy5wYXRoLCBwYXJhbXMuY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBqc29ucGF0aC52YWx1ZShkYXRhLCBwYXJhbXMucGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5jeWNsZSB8fCBwYXJhbXMucmV2ZXJzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGN5Y2xlKHZhbHVlc1trZXldLCBwYXJhbXMucmV2ZXJzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpY2skMSh2YWx1ZXNba2V5XSk7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBvYmpba10gPSByZXNvbHZlKG9ialtrXSwgZGF0YSwgdmFsdWVzLCBrKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xufVxuLy8gVE9ETyBwcm92aWRlIHR5cGVzXG5mdW5jdGlvbiBydW4ocmVmcywgc2NoZW1hLCBjb250YWluZXIpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2Uoc2NoZW1hLCBbXSwgZnVuY3Rpb24gcmVkdWNlKHN1YiwgbWF4UmVkdWNlRGVwdGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4UmVkdWNlRGVwdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgbWF4UmVkdWNlRGVwdGggPSByYW5kb20ubnVtYmVyKDEsIDMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViLmdlbmVyYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNsZWFudXBcbiAgICAgICAgICAgIGlmIChzdWIuaWQgJiYgdHlwZW9mIHN1Yi5pZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLmlkO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWIuJHNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViLiRyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Yi4kcmVmID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi4kcmVmO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3ViLiRyZWYuaW5kZXhPZignIy8nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IGRlcmVmLnV0aWwuZmluZEJ5UmVmKHN1Yi4kcmVmLCByZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVmZXJlbmNlIG5vdCBmb3VuZDogJyArIHN1Yi4kcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBqdXN0IHJlbW92ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi4kcmVmO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdWIuYWxsT2YpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjaGVtYXMgPSBzdWIuYWxsT2Y7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5hbGxPZjtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hlcmUgYWxsIHN1Yi1zY2hlbWFzXG4gICAgICAgICAgICAgICAgLy8gbXVzdCBiZSByZXNvbHZlZCBiZWZvcmUgYW55IG1lcmdlXG4gICAgICAgICAgICAgICAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChzdWJTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9zdWIgPSByZWR1Y2Uoc3ViU2NoZW1hLCBtYXhSZWR1Y2VEZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIGdpdmVuIHRodW5rcyBpZiBwcmVzZW50XG4gICAgICAgICAgICAgICAgICAgIHV0aWxzLm1lcmdlKHN1YiwgdHlwZW9mIF9zdWIudGh1bmsgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX3N1Yi50aHVuaygpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9zdWIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViLm9uZU9mIHx8IHN1Yi5hbnlPZikpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWl4ID0gc3ViLm9uZU9mIHx8IHN1Yi5hbnlPZjtcbiAgICAgICAgICAgICAgICAvLyB0ZXN0IGV2ZXJ5IHZhbHVlIGZyb20gdGhlIGVudW0gYWdhaW5zdCBlYWNoLW9uZU9mXG4gICAgICAgICAgICAgICAgLy8gc2NoZW1hLCBvbmx5IHZhbHVlcyB0aGF0IHZhbGlkYXRlIG9uY2UgYXJlIGtlcHRcbiAgICAgICAgICAgICAgICBpZiAoc3ViLmVudW0gJiYgc3ViLm9uZU9mKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yi5lbnVtID0gc3ViLmVudW0uZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB1dGlscy52YWxpZGF0ZSh4LCBtaXgpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1Yi5hbnlPZjtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViLm9uZU9mO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRodW5rOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29weSA9IHV0aWxzLm1lcmdlKHt9LCBzdWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMubWVyZ2UoY29weSwgcmFuZG9tLnBpY2sobWl4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBzdWIpIHtcbiAgICAgICAgICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoc3ViW3Byb3BdKSB8fCB0eXBlb2Ygc3ViW3Byb3BdID09PSAnb2JqZWN0JykgJiYgIXV0aWxzLmlzS2V5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yltwcm9wXSA9IHJlZHVjZShzdWJbcHJvcF0sIG1heFJlZHVjZURlcHRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLndyYXAoc3ViKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcHRpb25BUEkoJ3Jlc29sdmVKc29uUGF0aCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLnBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UgKyAnIGluICcgKyAnLycgKyBlLnBhdGguam9pbignLycpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnZhciBjb250YWluZXIgPSBuZXcgQ29udGFpbmVyKCk7XG5mdW5jdGlvbiBnZXRSZWZzKHJlZnMpIHtcbiAgICB2YXIgJHJlZnMgPSB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgICByZWZzLm1hcChkZXJlZi51dGlsLm5vcm1hbGl6ZVNjaGVtYSkuZm9yRWFjaChmdW5jdGlvbiAoc2NoZW1hKSB7XG4gICAgICAgICAgICAkcmVmc1tzY2hlbWEuaWRdID0gc2NoZW1hO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgICRyZWZzID0gcmVmcyB8fCB7fTtcbiAgICB9XG4gICAgcmV0dXJuICRyZWZzO1xufVxuZnVuY3Rpb24gd2FsayhvYmosIGNiKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciByZXR2YWw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHJldHZhbCA9IGNiKG9ialtrZXlzW2ldXSwga2V5c1tpXSwgb2JqKTtcbiAgICAgICAgaWYgKCFyZXR2YWwgJiYgb2JqW2tleXNbaV1dICYmICFBcnJheS5pc0FycmF5KG9ialtrZXlzW2ldXSkgJiYgdHlwZW9mIG9ialtrZXlzW2ldXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHZhbCA9IHdhbGsob2JqW2tleXNbaV1dLCBjYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiByZXR2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgICAgICB9XG4gICAgfVxufVxudmFyIGpzZiA9IGZ1bmN0aW9uIChzY2hlbWEsIHJlZnMpIHtcbiAgICB2YXIgaWdub3JlID0gb3B0aW9uQVBJKCdpZ25vcmVNaXNzaW5nUmVmcycpO1xuICAgIHZhciAkID0gZGVyZWYoZnVuY3Rpb24gKGlkLCByZWZzKSB7XG4gICAgICAgIC8vIEZJWE1FOiBhbGxvdyBjdXN0b20gY2FsbGJhY2s/XG4gICAgICAgIGlmIChpZ25vcmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciAkcmVmcyA9IGdldFJlZnMocmVmcyk7XG4gICAgcmV0dXJuIHJ1bigkcmVmcywgJChzY2hlbWEsICRyZWZzLCB0cnVlKSwgY29udGFpbmVyKTtcbn07XG5qc2YucmVzb2x2ZSA9IGZ1bmN0aW9uIChzY2hlbWEsIHJlZnMsIGN3ZCkge1xuICAgIGlmICh0eXBlb2YgcmVmcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY3dkID0gcmVmcztcbiAgICAgICAgcmVmcyA9IHt9O1xuICAgIH1cbiAgICAvLyBub3JtYWxpemUgYmFzZWRpciAoYnJvd3NlciBhd2FyZSlcbiAgICBjd2QgPSBjd2QgfHwgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyA/IHByb2Nlc3MuY3dkKCkgOiAnJyk7XG4gICAgY3dkID0gY3dkLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nO1xuICAgIHZhciAkcmVmcyA9IGdldFJlZnMocmVmcyk7XG4gICAgLy8gaWRlbnRpY2FsIHNldHVwIGFzIGpzb24tc2NoZW1hLXNlcXVlbGl6ZXJcbiAgICB2YXIgZml4ZWRSZWZzID0ge1xuICAgICAgICBvcmRlcjogMzAwLFxuICAgICAgICBjYW5SZWFkOiB0cnVlLFxuICAgICAgICByZWFkOiBmdW5jdGlvbiAoZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGN3ZCAhPT0gJy8nXG4gICAgICAgICAgICAgICAgPyBmaWxlLnVybC5yZXBsYWNlKGN3ZCwgJycpXG4gICAgICAgICAgICAgICAgOiBmaWxlLnVybDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZGVyZWYudXRpbC5maW5kQnlSZWYoaWQsICRyZWZzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB3YWxrKHNjaGVtYSwgZnVuY3Rpb24gKHYsIGssIHN1Yikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoayA9PT0gJ2lkJyAmJiB2ID09PSBpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiAkUmVmUGFyc2VyXG4gICAgICAgIC5kZXJlZmVyZW5jZShjd2QsIHNjaGVtYSwge1xuICAgICAgICByZXNvbHZlOiB7IGZpeGVkUmVmczogZml4ZWRSZWZzIH0sXG4gICAgICAgIGRlcmVmZXJlbmNlOiB7XG4gICAgICAgICAgICBjaXJjdWxhcjogJ2lnbm9yZScsXG4gICAgICAgIH0sXG4gICAgfSkudGhlbihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBydW4oJHJlZnMsIHN1YiwgY29udGFpbmVyKTsgfSk7XG59O1xuanNmLmZvcm1hdCA9IGZvcm1hdEFQSTtcbmpzZi5vcHRpb24gPSBvcHRpb25BUEk7XG5qc2YucmFuZG9tID0gcmFuZG9tO1xuLy8gYnVpbHQtaW4gc3VwcG9ydFxuY29udGFpbmVyLmRlZmluZSgncGF0dGVybicsIHJhbmRvbS5yYW5kZXhwKTtcbi8vIHNraXAgZGVmYXVsdCBnZW5lcmF0b3JzXG5jb250YWluZXIuZGVmaW5lKCdqc29uUGF0aCcsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgZGVsZXRlIHNjaGVtYS50eXBlO1xuICAgIHJldHVybiBzY2hlbWE7XG59KTtcbi8vIHNhZmUgYXV0by1pbmNyZW1lbnQgdmFsdWVzXG5jb250YWluZXIuZGVmaW5lKCdhdXRvSW5jcmVtZW50JywgZnVuY3Rpb24gKHZhbHVlLCBzY2hlbWEpIHtcbiAgICBpZiAoIXRoaXMub2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaW4gPSBzY2hlbWEubWluaW11bSB8fCAxO1xuICAgICAgICB2YXIgbWF4ID0gbWluICsgZW52Lk1BWF9OVU1CRVI7XG4gICAgICAgIHZhciBvZmZzZXQgPSB2YWx1ZS5pbml0aWFsT2Zmc2V0IHx8IHNjaGVtYS5pbml0aWFsT2Zmc2V0O1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldCB8fCByYW5kb20ubnVtYmVyKG1pbiwgbWF4KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mZnNldCsrO1xuICAgIH1cbiAgICByZXR1cm4gc2NoZW1hO1xufSk7XG4vLyBzYWZlLWFuZC1zZXF1ZW50aWFsIGRhdGVzXG5jb250YWluZXIuZGVmaW5lKCdzZXF1ZW50aWFsRGF0ZScsIGZ1bmN0aW9uICh2YWx1ZSwgc2NoZW1hKSB7XG4gICAgaWYgKCF0aGlzLm5vdykge1xuICAgICAgICB0aGlzLm5vdyA9IHJhbmRvbS5kYXRlKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBzY2hlbWEgPSB0aGlzLm5vdy50b0lTT1N0cmluZygpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSB0cnVlXG4gICAgICAgICAgICA/ICdkYXlzJ1xuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgaWYgKFsnc2Vjb25kcycsICdtaW51dGVzJywgJ2hvdXJzJywgJ2RheXMnLCAnd2Vla3MnLCAnbW9udGhzJywgJ3llYXJzJ10uaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBpbmNyZW1lbnQgYnkgXCIgKyB1dGlscy5zaG9ydCh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm93LnNldFRpbWUodGhpcy5ub3cuZ2V0VGltZSgpICsgcmFuZG9tLmRhdGUodmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYTtcbn0pO1xuLy8gcmV0dXJucyBpdHNlbGYgZm9yIGNoYWluaW5nXG5qc2YuZXh0ZW5kID0gZnVuY3Rpb24gKG5hbWUsIGNiKSB7XG4gICAgY29udGFpbmVyLmV4dGVuZChuYW1lLCBjYik7XG4gICAgcmV0dXJuIGpzZjtcbn07XG5qc2YuZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGNiKSB7XG4gICAgY29udGFpbmVyLmRlZmluZShuYW1lLCBjYik7XG4gICAgcmV0dXJuIGpzZjtcbn07XG5qc2YubG9jYXRlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmdldChuYW1lKTtcbn07XG52YXIgVkVSU0lPTj1cIjAuNS4wLXJjMTVcIjtcbmpzZi52ZXJzaW9uID0gVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBqc2Y7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcbiAgICBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYnVuZGxlO1xuXG4vKipcbiAqIEJ1bmRsZXMgYWxsIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlcyBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLCB0aHVzIHJlc3VsdGluZyBpbiBhIHNjaGVtYSB0aGF0XG4gKiBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsIG5vdCBhbnkgKmV4dGVybmFsKiByZWZlcmVuY2VzLlxuICogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgSlNPTiBzY2hlbWEgb2JqZWN0LCBhZGRpbmcgbmV3IHJlZmVyZW5jZXMgYW5kIHJlLW1hcHBpbmcgZXhpc3Rpbmcgb25lcy5cbiAqXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJ9IHBhcnNlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBidW5kbGUgKHBhcnNlciwgb3B0aW9ucykge1xuICBkZWJ1ZygnQnVuZGxpbmcgJHJlZiBwb2ludGVycyBpbiAlcycsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCk7XG5cbiAgLy8gQnVpbGQgYW4gaW52ZW50b3J5IG9mIGFsbCAkcmVmIHBvaW50ZXJzIGluIHRoZSBKU09OIFNjaGVtYVxuICB2YXIgaW52ZW50b3J5ID0gW107XG4gIGNyYXdsKHBhcnNlciwgJ3NjaGVtYScsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCArICcjJywgJyMnLCAwLCBpbnZlbnRvcnksIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XG5cbiAgLy8gUmVtYXAgYWxsICRyZWYgcG9pbnRlcnNcbiAgcmVtYXAoaW52ZW50b3J5KTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjcmF3bHMgdGhlIGdpdmVuIHZhbHVlLCBhbmQgaW52ZW50b3JpZXMgYWxsIEpTT04gcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyZW50IC0gVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBjcmF3bC4gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IG9mIGBwYXJlbnRgIHRvIGJlIGNyYXdsZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiB0aGUgcHJvcGVydHkgYmVpbmcgY3Jhd2xlZCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhGcm9tUm9vdCAtIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSBiZWluZyBjcmF3bGVkLCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxuICogQHBhcmFtIHtvYmplY3RbXX0gaW52ZW50b3J5IC0gQW4gYXJyYXkgb2YgYWxyZWFkeS1pbnZlbnRvcmllZCAkcmVmIHBvaW50ZXJzXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBjcmF3bCAocGFyZW50LCBrZXksIHBhdGgsIHBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciBvYmogPSBrZXkgPT09IG51bGwgPyBwYXJlbnQgOiBwYXJlbnRba2V5XTtcblxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZihvYmopKSB7XG4gICAgICBpbnZlbnRvcnkkUmVmKHBhcmVudCwga2V5LCBwYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQ3Jhd2wgdGhlIG9iamVjdCBpbiBhIHNwZWNpZmljIG9yZGVyIHRoYXQncyBvcHRpbWl6ZWQgZm9yIGJ1bmRsaW5nLlxuICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBkZXRlcm1pbmVzIGhvdyBgcGF0aEZyb21Sb290YCBnZXRzIGJ1aWx0LFxuICAgICAgLy8gd2hpY2ggbGF0ZXIgZGV0ZXJtaW5lcyB3aGljaCBrZXlzIGdldCBkZXJlZmVyZW5jZWQgYW5kIHdoaWNoIG9uZXMgZ2V0IHJlbWFwcGVkXG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iailcbiAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAvLyBNb3N0IHBlb3BsZSB3aWxsIGV4cGVjdCByZWZlcmVuY2VzIHRvIGJlIGJ1bmRsZWQgaW50byB0aGUgdGhlIFwiZGVmaW5pdGlvbnNcIiBwcm9wZXJ0eSxcbiAgICAgICAgICAvLyBzbyB3ZSBhbHdheXMgY3Jhd2wgdGhhdCBwcm9wZXJ0eSBmaXJzdCwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgIGlmIChhID09PSAnZGVmaW5pdGlvbnMnKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGIgPT09ICdkZWZpbml0aW9ucycpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY3Jhd2wgdGhlIGtleXMgYmFzZWQgb24gdGhlaXIgbGVuZ3RoLlxuICAgICAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgc2hvcnRlc3QgcG9zc2libGUgYnVuZGxlZCByZWZlcmVuY2VzXG4gICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xuICAgICAgICB2YXIga2V5UGF0aEZyb21Sb290ID0gUG9pbnRlci5qb2luKHBhdGhGcm9tUm9vdCwga2V5KTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKCRSZWYuaXNBbGxvd2VkJFJlZih2YWx1ZSkpIHtcbiAgICAgICAgICBpbnZlbnRvcnkkUmVmKG9iaiwga2V5LCBwYXRoLCBrZXlQYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucywgaW52ZW50b3J5LCAkcmVmcywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY3Jhd2wob2JqLCBrZXksIGtleVBhdGgsIGtleVBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW52ZW50b3JpZXMgdGhlIGdpdmVuIEpTT04gUmVmZXJlbmNlIChpLmUuIHJlY29yZHMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgaXQgc28gd2UgY2FuXG4gKiBvcHRpbWl6ZSBhbGwgJHJlZnMgaW4gdGhlIHNjaGVtYSksIGFuZCB0aGVuIGNyYXdscyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICRyZWZQYXJlbnQgLSBUaGUgb2JqZWN0IHRoYXQgY29udGFpbnMgYSBKU09OIFJlZmVyZW5jZSBhcyBvbmUgb2YgaXRzIGtleXNcbiAqIEBwYXJhbSB7c3RyaW5nfSAkcmVmS2V5IC0gVGhlIGtleSBpbiBgJHJlZlBhcmVudGAgdGhhdCBpcyBhIEpTT04gUmVmZXJlbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIEpTT04gUmVmZXJlbmNlIGF0IGAkcmVmS2V5YCwgcG9zc2libHkgd2l0aCBhIEpTT04gUG9pbnRlciBpbiB0aGUgaGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhGcm9tUm9vdCAtIFRoZSBwYXRoIG9mIHRoZSBKU09OIFJlZmVyZW5jZSBhdCBgJHJlZktleWAsIGZyb20gdGhlIHNjaGVtYSByb290XG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbnZlbnRvcnkgLSBBbiBhcnJheSBvZiBhbHJlYWR5LWludmVudG9yaWVkICRyZWYgcG9pbnRlcnNcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGludmVudG9yeSRSZWYgKCRyZWZQYXJlbnQsICRyZWZLZXksIHBhdGgsIHBhdGhGcm9tUm9vdCwgaW5kaXJlY3Rpb25zLCBpbnZlbnRvcnksICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciAkcmVmID0gJHJlZktleSA9PT0gbnVsbCA/ICRyZWZQYXJlbnQgOiAkcmVmUGFyZW50WyRyZWZLZXldO1xuICB2YXIgJHJlZlBhdGggPSB1cmwucmVzb2x2ZShwYXRoLCAkcmVmLiRyZWYpO1xuICB2YXIgcG9pbnRlciA9ICRyZWZzLl9yZXNvbHZlKCRyZWZQYXRoLCBvcHRpb25zKTtcbiAgdmFyIGRlcHRoID0gUG9pbnRlci5wYXJzZShwYXRoRnJvbVJvb3QpLmxlbmd0aDtcbiAgdmFyIGZpbGUgPSB1cmwuc3RyaXBIYXNoKHBvaW50ZXIucGF0aCk7XG4gIHZhciBoYXNoID0gdXJsLmdldEhhc2gocG9pbnRlci5wYXRoKTtcbiAgdmFyIGV4dGVybmFsID0gZmlsZSAhPT0gJHJlZnMuX3Jvb3QkUmVmLnBhdGg7XG4gIHZhciBleHRlbmRlZCA9ICRSZWYuaXNFeHRlbmRlZCRSZWYoJHJlZik7XG4gIGluZGlyZWN0aW9ucyArPSBwb2ludGVyLmluZGlyZWN0aW9ucztcblxuICB2YXIgZXhpc3RpbmdFbnRyeSA9IGZpbmRJbkludmVudG9yeShpbnZlbnRvcnksICRyZWZQYXJlbnQsICRyZWZLZXkpO1xuICBpZiAoZXhpc3RpbmdFbnRyeSkge1xuICAgIC8vIFRoaXMgJFJlZiBoYXMgYWxyZWFkeSBiZWVuIGludmVudG9yaWVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3MgaXQgYWdhaW5cbiAgICBpZiAoZGVwdGggPCBleGlzdGluZ0VudHJ5LmRlcHRoIHx8IGluZGlyZWN0aW9ucyA8IGV4aXN0aW5nRW50cnkuaW5kaXJlY3Rpb25zKSB7XG4gICAgICByZW1vdmVGcm9tSW52ZW50b3J5KGludmVudG9yeSwgZXhpc3RpbmdFbnRyeSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGludmVudG9yeS5wdXNoKHtcbiAgICAkcmVmOiAkcmVmLCAgICAgICAgICAgICAgICAgICAvLyBUaGUgSlNPTiBSZWZlcmVuY2UgKGUuZy4geyRyZWY6IHN0cmluZ30pXG4gICAgcGFyZW50OiAkcmVmUGFyZW50LCAgICAgICAgICAgLy8gVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoaXMgJHJlZiBwb2ludGVyXG4gICAga2V5OiAkcmVmS2V5LCAgICAgICAgICAgICAgICAgLy8gVGhlIGtleSBpbiBgcGFyZW50YCB0aGF0IGlzIHRoZSAkcmVmIHBvaW50ZXJcbiAgICBwYXRoRnJvbVJvb3Q6IHBhdGhGcm9tUm9vdCwgICAvLyBUaGUgcGF0aCB0byB0aGUgJHJlZiBwb2ludGVyLCBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290XG4gICAgZGVwdGg6IGRlcHRoLCAgICAgICAgICAgICAgICAgLy8gSG93IGZhciBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290IGlzIHRoaXMgJHJlZiBwb2ludGVyP1xuICAgIGZpbGU6IGZpbGUsICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaWxlIHRoYXQgdGhlICRyZWYgcG9pbnRlciByZXNvbHZlcyB0b1xuICAgIGhhc2g6IGhhc2gsICAgICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIHdpdGhpbiBgZmlsZWAgdGhhdCB0aGUgJHJlZiBwb2ludGVyIHJlc29sdmVzIHRvXG4gICAgdmFsdWU6IHBvaW50ZXIudmFsdWUsICAgICAgICAgLy8gVGhlIHJlc29sdmVkIHZhbHVlIG9mIHRoZSAkcmVmIHBvaW50ZXJcbiAgICBjaXJjdWxhcjogcG9pbnRlci5jaXJjdWxhciwgICAvLyBJcyB0aGlzICRyZWYgcG9pbnRlciBESVJFQ1RMWSBjaXJjdWxhcj8gKGkuZS4gaXQgcmVmZXJlbmNlcyBpdHNlbGYpXG4gICAgZXh0ZW5kZWQ6IGV4dGVuZGVkLCAgICAgICAgICAgLy8gRG9lcyB0aGlzICRyZWYgZXh0ZW5kIGl0cyByZXNvbHZlZCB2YWx1ZT8gKGkuZS4gaXQgaGFzIGV4dHJhIHByb3BlcnRpZXMsIGluIGFkZGl0aW9uIHRvIFwiJHJlZlwiKVxuICAgIGV4dGVybmFsOiBleHRlcm5hbCwgICAgICAgICAgIC8vIERvZXMgdGhpcyAkcmVmIHBvaW50ZXIgcG9pbnQgdG8gYSBmaWxlIG90aGVyIHRoYW4gdGhlIG1haW4gSlNPTiBTY2hlbWEgZmlsZT9cbiAgICBpbmRpcmVjdGlvbnM6IGluZGlyZWN0aW9ucywgICAvLyBUaGUgbnVtYmVyIG9mIGluZGlyZWN0IHJlZmVyZW5jZXMgdGhhdCB3ZXJlIHRyYXZlcnNlZCB0byByZXNvbHZlIHRoZSB2YWx1ZVxuICB9KTtcblxuICAvLyBSZWN1cnNpdmVseSBjcmF3bCB0aGUgcmVzb2x2ZWQgdmFsdWVcbiAgY3Jhd2wocG9pbnRlci52YWx1ZSwgbnVsbCwgcG9pbnRlci5wYXRoLCBwYXRoRnJvbVJvb3QsIGluZGlyZWN0aW9ucyArIDEsIGludmVudG9yeSwgJHJlZnMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlLW1hcHMgZXZlcnkgJHJlZiBwb2ludGVyLCBzbyB0aGF0IHRoZXkncmUgYWxsIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSBKU09OIFNjaGVtYS5cbiAqIEVhY2ggcmVmZXJlbmNlZCB2YWx1ZSBpcyBkZXJlZmVyZW5jZWQgRVhBQ1RMWSBPTkNFLiAgQWxsIHN1YnNlcXVlbnQgcmVmZXJlbmNlcyB0byB0aGUgc2FtZVxuICogdmFsdWUgYXJlIHJlLW1hcHBlZCB0byBwb2ludCB0byB0aGUgZmlyc3QgcmVmZXJlbmNlLlxuICpcbiAqIEBleGFtcGxlOlxuICogIHtcbiAqICAgIGZpcnN0OiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL3NvbWUvcGFydCB9LFxuICogICAgc2Vjb25kOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL2Fub3RoZXIvcGFydCB9LFxuICogICAgdGhpcmQ6IHsgJHJlZjogc29tZWZpbGUuanNvbiB9LFxuICogICAgZm91cnRoOiB7ICRyZWY6IHNvbWVmaWxlLmpzb24jL3NvbWUvcGFydC9zdWIvcGFydCB9XG4gKiAgfVxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgdGhlcmUgYXJlIGZvdXIgcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBmaWxlLCBidXQgc2luY2UgdGhlIHRoaXJkIHJlZmVyZW5jZSBwb2ludHNcbiAqIHRvIHRoZSBFTlRJUkUgZmlsZSwgdGhhdCdzIHRoZSBvbmx5IG9uZSB3ZSBuZWVkIHRvIGRlcmVmZXJlbmNlLiAgVGhlIG90aGVyIHRocmVlIGNhbiBqdXN0IGJlXG4gKiByZW1hcHBlZCB0byBwb2ludCBpbnNpZGUgdGhlIHRoaXJkIG9uZS5cbiAqXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIHRoaXJkIHJlZmVyZW5jZSBESUROJ1QgZXhpc3QsIHRoZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgd291bGQgYm90aCBuZWVkXG4gKiB0byBiZSBkZXJlZmVyZW5jZWQsIHNpbmNlIHRoZXkgcG9pbnQgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBmaWxlLiBUaGUgZm91cnRoIHJlZmVyZW5jZSBkb2VzIE5PVFxuICogbmVlZCB0byBiZSBkZXJlZmVyZW5jZWQsIGJlY2F1c2UgaXQgY2FuIGJlIHJlbWFwcGVkIHRvIHBvaW50IGluc2lkZSB0aGUgZmlyc3Qgb25lLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119IGludmVudG9yeVxuICovXG5mdW5jdGlvbiByZW1hcCAoaW52ZW50b3J5KSB7XG4gIC8vIEdyb3VwICYgc29ydCBhbGwgdGhlICRyZWYgcG9pbnRlcnMsIHNvIHRoZXkncmUgaW4gdGhlIG9yZGVyIHRoYXQgd2UgbmVlZCB0byBkZXJlZmVyZW5jZS9yZW1hcCB0aGVtXG4gIGludmVudG9yeS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgaWYgKGEuZmlsZSAhPT0gYi5maWxlKSB7XG4gICAgICAvLyBHcm91cCBhbGwgdGhlICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgZmlsZVxuICAgICAgcmV0dXJuIGEuZmlsZSA8IGIuZmlsZSA/IC0xIDogKzE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuaGFzaCAhPT0gYi5oYXNoKSB7XG4gICAgICAvLyBHcm91cCBhbGwgdGhlICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgcGFydCBvZiB0aGUgZmlsZVxuICAgICAgcmV0dXJuIGEuaGFzaCA8IGIuaGFzaCA/IC0xIDogKzE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuY2lyY3VsYXIgIT09IGIuY2lyY3VsYXIpIHtcbiAgICAgIC8vIElmIHRoZSAkcmVmIHBvaW50cyB0byBpdHNlbGYsIHRoZW4gc29ydCBpdCBoaWdoZXIgdGhhbiBvdGhlciAkcmVmcyB0aGF0IHBvaW50IHRvIHRoaXMgJHJlZlxuICAgICAgcmV0dXJuIGEuY2lyY3VsYXIgPyAtMSA6ICsxO1xuICAgIH1cbiAgICBlbHNlIGlmIChhLmV4dGVuZGVkICE9PSBiLmV4dGVuZGVkKSB7XG4gICAgICAvLyBJZiB0aGUgJHJlZiBleHRlbmRzIHRoZSByZXNvbHZlZCB2YWx1ZSwgdGhlbiBzb3J0IGl0IGxvd2VyIHRoYW4gb3RoZXIgJHJlZnMgdGhhdCBkb24ndCBleHRlbmQgdGhlIHZhbHVlXG4gICAgICByZXR1cm4gYS5leHRlbmRlZCA/ICsxIDogLTE7XG4gICAgfVxuICAgIGVsc2UgaWYgKGEuaW5kaXJlY3Rpb25zICE9PSBiLmluZGlyZWN0aW9ucykge1xuICAgICAgLy8gU29ydCBkaXJlY3QgcmVmZXJlbmNlcyBoaWdoZXIgdGhhbiBpbmRpcmVjdCByZWZlcmVuY2VzXG4gICAgICByZXR1cm4gYS5pbmRpcmVjdGlvbnMgLSBiLmluZGlyZWN0aW9ucztcbiAgICB9XG4gICAgZWxzZSBpZiAoYS5kZXB0aCAhPT0gYi5kZXB0aCkge1xuICAgICAgLy8gU29ydCAkcmVmcyBieSBob3cgY2xvc2UgdGhleSBhcmUgdG8gdGhlIEpTT04gU2NoZW1hIHJvb3RcbiAgICAgIHJldHVybiBhLmRlcHRoIC0gYi5kZXB0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaG93IGZhciBlYWNoICRyZWYgaXMgZnJvbSB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5LlxuICAgICAgLy8gTW9zdCBwZW9wbGUgd2lsbCBleHBlY3QgcmVmZXJlbmNlcyB0byBiZSBidW5kbGVkIGludG8gdGhlIHRoZSBcImRlZmluaXRpb25zXCIgcHJvcGVydHkgaWYgcG9zc2libGUuXG4gICAgICB2YXIgYURlZmluaXRpb25zSW5kZXggPSBhLnBhdGhGcm9tUm9vdC5sYXN0SW5kZXhPZignL2RlZmluaXRpb25zJyk7XG4gICAgICB2YXIgYkRlZmluaXRpb25zSW5kZXggPSBiLnBhdGhGcm9tUm9vdC5sYXN0SW5kZXhPZignL2RlZmluaXRpb25zJyk7XG5cbiAgICAgIGlmIChhRGVmaW5pdGlvbnNJbmRleCAhPT0gYkRlZmluaXRpb25zSW5kZXgpIHtcbiAgICAgICAgLy8gR2l2ZSBoaWdoZXIgcHJpb3JpdHkgdG8gdGhlICRyZWYgdGhhdCdzIGNsb3NlciB0byB0aGUgXCJkZWZpbml0aW9uc1wiIHByb3BlcnR5XG4gICAgICAgIHJldHVybiBiRGVmaW5pdGlvbnNJbmRleCAtIGFEZWZpbml0aW9uc0luZGV4O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEFsbCBlbHNlIGlzIGVxdWFsLCBzbyB1c2UgdGhlIHNob3J0ZXIgcGF0aCwgd2hpY2ggd2lsbCBwcm9kdWNlIHRoZSBzaG9ydGVzdCBwb3NzaWJsZSByZWZlcmVuY2VcbiAgICAgICAgcmV0dXJuIGEucGF0aEZyb21Sb290Lmxlbmd0aCAtIGIucGF0aEZyb21Sb290Lmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHZhciBmaWxlLCBoYXNoLCBwYXRoRnJvbVJvb3Q7XG4gIGludmVudG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGRlYnVnKCdSZS1tYXBwaW5nICRyZWYgcG9pbnRlciBcIiVzXCIgYXQgJXMnLCBlbnRyeS4kcmVmLiRyZWYsIGVudHJ5LnBhdGhGcm9tUm9vdCk7XG5cbiAgICBpZiAoIWVudHJ5LmV4dGVybmFsKSB7XG4gICAgICAvLyBUaGlzICRyZWYgYWxyZWFkeSByZXNvbHZlcyB0byB0aGUgbWFpbiBKU09OIFNjaGVtYSBmaWxlXG4gICAgICBlbnRyeS4kcmVmLiRyZWYgPSBlbnRyeS5oYXNoO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbnRyeS5maWxlID09PSBmaWxlICYmIGVudHJ5Lmhhc2ggPT09IGhhc2gpIHtcbiAgICAgIC8vIFRoaXMgJHJlZiBwb2ludHMgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHByZXZvdXMgJHJlZiwgc28gcmVtYXAgaXQgdG8gdGhlIHNhbWUgcGF0aFxuICAgICAgZW50cnkuJHJlZi4kcmVmID0gcGF0aEZyb21Sb290O1xuICAgIH1cbiAgICBlbHNlIGlmIChlbnRyeS5maWxlID09PSBmaWxlICYmIGVudHJ5Lmhhc2guaW5kZXhPZihoYXNoICsgJy8nKSA9PT0gMCkge1xuICAgICAgLy8gVGhpcyAkcmVmIHBvaW50cyB0byB0aGUgYSBzdWItdmFsdWUgYXMgdGhlIHByZXZvdXMgJHJlZiwgc28gcmVtYXAgaXQgYmVuZWF0aCB0aGF0IHBhdGhcbiAgICAgIGVudHJ5LiRyZWYuJHJlZiA9IFBvaW50ZXIuam9pbihwYXRoRnJvbVJvb3QsIFBvaW50ZXIucGFyc2UoZW50cnkuaGFzaCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFdlJ3ZlIG1vdmVkIHRvIGEgbmV3IGZpbGUgb3IgbmV3IGhhc2hcbiAgICAgIGZpbGUgPSBlbnRyeS5maWxlO1xuICAgICAgaGFzaCA9IGVudHJ5Lmhhc2g7XG4gICAgICBwYXRoRnJvbVJvb3QgPSBlbnRyeS5wYXRoRnJvbVJvb3Q7XG5cbiAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0ICRyZWYgdG8gcG9pbnQgdG8gdGhpcyB2YWx1ZSwgc28gZGVyZWZlcmVuY2UgdGhlIHZhbHVlLlxuICAgICAgLy8gQW55IG90aGVyICRyZWZzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUgdmFsdWUgd2lsbCBwb2ludCB0byB0aGlzICRyZWYgaW5zdGVhZFxuICAgICAgZW50cnkuJHJlZiA9IGVudHJ5LnBhcmVudFtlbnRyeS5rZXldID0gJFJlZi5kZXJlZmVyZW5jZShlbnRyeS4kcmVmLCBlbnRyeS52YWx1ZSk7XG5cbiAgICAgIGlmIChlbnRyeS5jaXJjdWxhcikge1xuICAgICAgICAvLyBUaGlzICRyZWYgcG9pbnRzIHRvIGl0c2VsZlxuICAgICAgICBlbnRyeS4kcmVmLiRyZWYgPSBlbnRyeS5wYXRoRnJvbVJvb3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVidWcoJyAgICBuZXcgdmFsdWU6ICVzJywgKGVudHJ5LiRyZWYgJiYgZW50cnkuJHJlZi4kcmVmKSA/IGVudHJ5LiRyZWYuJHJlZiA6ICdbb2JqZWN0IE9iamVjdF0nKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBmaW5kSW5JbnZlbnRvcnkgKGludmVudG9yeSwgJHJlZlBhcmVudCwgJHJlZktleSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGludmVudG9yeS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBleGlzdGluZ0VudHJ5ID0gaW52ZW50b3J5W2ldO1xuICAgIGlmIChleGlzdGluZ0VudHJ5LnBhcmVudCA9PT0gJHJlZlBhcmVudCAmJiBleGlzdGluZ0VudHJ5LmtleSA9PT0gJHJlZktleSkge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nRW50cnk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUZyb21JbnZlbnRvcnkgKGludmVudG9yeSwgZW50cnkpIHtcbiAgdmFyIGluZGV4ID0gaW52ZW50b3J5LmluZGV4T2YoZW50cnkpO1xuICBpbnZlbnRvcnkuc3BsaWNlKGluZGV4LCAxKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcclxuICAgIFBvaW50ZXIgPSByZXF1aXJlKCcuL3BvaW50ZXInKSxcclxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxyXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcclxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZGVyZWZlcmVuY2U7XHJcblxyXG4vKipcclxuICogQ3Jhd2xzIHRoZSBKU09OIHNjaGVtYSwgZmluZHMgYWxsIEpTT04gcmVmZXJlbmNlcywgYW5kIGRlcmVmZXJlbmNlcyB0aGVtLlxyXG4gKiBUaGlzIG1ldGhvZCBtdXRhdGVzIHRoZSBKU09OIHNjaGVtYSBvYmplY3QsIHJlcGxhY2luZyBKU09OIHJlZmVyZW5jZXMgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZS5cclxuICpcclxuICogQHBhcmFtIHskUmVmUGFyc2VyfSBwYXJzZXJcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xyXG4gKi9cclxuZnVuY3Rpb24gZGVyZWZlcmVuY2UgKHBhcnNlciwgb3B0aW9ucykge1xyXG4gIGRlYnVnKCdEZXJlZmVyZW5jaW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xyXG4gIHZhciBkZXJlZmVyZW5jZWQgPSBjcmF3bChwYXJzZXIuc2NoZW1hLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgsICcjJywgW10sIHBhcnNlci4kcmVmcywgb3B0aW9ucyk7XHJcbiAgcGFyc2VyLiRyZWZzLmNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gIHBhcnNlci5zY2hlbWEgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWN1cnNpdmVseSBjcmF3bHMgdGhlIGdpdmVuIHZhbHVlLCBhbmQgZGVyZWZlcmVuY2VzIGFueSBKU09OIHJlZmVyZW5jZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Kn0gb2JqIC0gVGhlIHZhbHVlIHRvIGNyYXdsLiBJZiBpdCdzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIGl0IHdpbGwgYmUgaWdub3JlZC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGBvYmpgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiBgb2JqYCBmcm9tIHRoZSBzY2hlbWEgcm9vdFxyXG4gKiBAcGFyYW0ge29iamVjdFtdfSBwYXJlbnRzIC0gQW4gYXJyYXkgb2YgdGhlIHBhcmVudCBvYmplY3RzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGVyZWZlcmVuY2VkXHJcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcclxuICogQHJldHVybnMge3t2YWx1ZTogb2JqZWN0LCBjaXJjdWxhcjogYm9vbGVhbn19XHJcbiAqL1xyXG5mdW5jdGlvbiBjcmF3bCAob2JqLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKSB7XHJcbiAgdmFyIGRlcmVmZXJlbmNlZDtcclxuICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgdmFsdWU6IG9iaixcclxuICAgIGNpcmN1bGFyOiBmYWxzZVxyXG4gIH07XHJcblxyXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcclxuICAgIHBhcmVudHMucHVzaChvYmopO1xyXG5cclxuICAgIGlmICgkUmVmLmlzQWxsb3dlZCRSZWYob2JqLCBvcHRpb25zKSkge1xyXG4gICAgICBkZXJlZmVyZW5jZWQgPSBkZXJlZmVyZW5jZSRSZWYob2JqLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgcmVzdWx0LmNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICByZXN1bHQudmFsdWUgPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xyXG4gICAgICAgIHZhciBrZXlQYXRoRnJvbVJvb3QgPSBQb2ludGVyLmpvaW4ocGF0aEZyb21Sb290LCBrZXkpO1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xyXG4gICAgICAgIHZhciBjaXJjdWxhciA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKHZhbHVlLCBvcHRpb25zKSkge1xyXG4gICAgICAgICAgZGVyZWZlcmVuY2VkID0gZGVyZWZlcmVuY2UkUmVmKHZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgICAgIGNpcmN1bGFyID0gZGVyZWZlcmVuY2VkLmNpcmN1bGFyO1xyXG4gICAgICAgICAgb2JqW2tleV0gPSBkZXJlZmVyZW5jZWQudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHBhcmVudHMuaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlZCA9IGNyYXdsKHZhbHVlLCBrZXlQYXRoLCBrZXlQYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgY2lyY3VsYXIgPSBkZXJlZmVyZW5jZWQuY2lyY3VsYXI7XHJcbiAgICAgICAgICAgIG9ialtrZXldID0gZGVyZWZlcmVuY2VkLnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNpcmN1bGFyID0gZm91bmRDaXJjdWxhclJlZmVyZW5jZShrZXlQYXRoLCAkcmVmcywgb3B0aW9ucyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIFwiaXNDaXJjdWxhclwiIGZsYWcgaWYgdGhpcyBvciBhbnkgb3RoZXIgcHJvcGVydHkgaXMgY2lyY3VsYXJcclxuICAgICAgICByZXN1bHQuY2lyY3VsYXIgPSByZXN1bHQuY2lyY3VsYXIgfHwgY2lyY3VsYXI7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmVudHMucG9wKCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG4vKipcclxuICogRGVyZWZlcmVuY2VzIHRoZSBnaXZlbiBKU09OIFJlZmVyZW5jZSwgYW5kIHRoZW4gY3Jhd2xzIHRoZSByZXN1bHRpbmcgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7eyRyZWY6IHN0cmluZ319ICRyZWYgLSBUaGUgSlNPTiBSZWZlcmVuY2UgdG8gcmVzb2x2ZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgYCRyZWZgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoRnJvbVJvb3QgLSBUaGUgcGF0aCBvZiBgJHJlZmAgZnJvbSB0aGUgc2NoZW1hIHJvb3RcclxuICogQHBhcmFtIHtvYmplY3RbXX0gcGFyZW50cyAtIEFuIGFycmF5IG9mIHRoZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRlcmVmZXJlbmNlZFxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHt7dmFsdWU6IG9iamVjdCwgY2lyY3VsYXI6IGJvb2xlYW59fVxyXG4gKi9cclxuZnVuY3Rpb24gZGVyZWZlcmVuY2UkUmVmICgkcmVmLCBwYXRoLCBwYXRoRnJvbVJvb3QsIHBhcmVudHMsICRyZWZzLCBvcHRpb25zKSB7XHJcbiAgZGVidWcoJ0RlcmVmZXJlbmNpbmcgJHJlZiBwb2ludGVyIFwiJXNcIiBhdCAlcycsICRyZWYuJHJlZiwgcGF0aCk7XHJcblxyXG4gIHZhciAkcmVmUGF0aCA9IHVybC5yZXNvbHZlKHBhdGgsICRyZWYuJHJlZik7XHJcbiAgdmFyIHBvaW50ZXIgPSAkcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XHJcblxyXG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzXHJcbiAgdmFyIGRpcmVjdENpcmN1bGFyID0gcG9pbnRlci5jaXJjdWxhcjtcclxuICB2YXIgY2lyY3VsYXIgPSBkaXJlY3RDaXJjdWxhciB8fCBwYXJlbnRzLmluZGV4T2YocG9pbnRlci52YWx1ZSkgIT09IC0xO1xyXG4gIGNpcmN1bGFyICYmIGZvdW5kQ2lyY3VsYXJSZWZlcmVuY2UocGF0aCwgJHJlZnMsIG9wdGlvbnMpO1xyXG5cclxuICAvLyBEZXJlZmVyZW5jZSB0aGUgSlNPTiByZWZlcmVuY2VcclxuICB2YXIgZGVyZWZlcmVuY2VkVmFsdWUgPSAkUmVmLmRlcmVmZXJlbmNlKCRyZWYsIHBvaW50ZXIudmFsdWUpO1xyXG5cclxuICAvLyBDcmF3bCB0aGUgZGVyZWZlcmVuY2VkIHZhbHVlICh1bmxlc3MgaXQncyBjaXJjdWxhcilcclxuICBpZiAoIWNpcmN1bGFyKSB7XHJcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZSBpcyBjaXJjdWxhclxyXG4gICAgdmFyIGRlcmVmZXJlbmNlZCA9IGNyYXdsKGRlcmVmZXJlbmNlZFZhbHVlLCBwb2ludGVyLnBhdGgsIHBhdGhGcm9tUm9vdCwgcGFyZW50cywgJHJlZnMsIG9wdGlvbnMpO1xyXG4gICAgY2lyY3VsYXIgPSBkZXJlZmVyZW5jZWQuY2lyY3VsYXI7XHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZSA9IGRlcmVmZXJlbmNlZC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGlmIChjaXJjdWxhciAmJiAhZGlyZWN0Q2lyY3VsYXIgJiYgb3B0aW9ucy5kZXJlZmVyZW5jZS5jaXJjdWxhciA9PT0gJ2lnbm9yZScpIHtcclxuICAgIC8vIFRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gXCJpZ25vcmVcIiBjaXJjdWxhciByZWZlcmVuY2VzLCBzbyBkb24ndCBjaGFuZ2UgdGhlIHZhbHVlXHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZSA9ICRyZWY7XHJcbiAgfVxyXG5cclxuICBpZiAoZGlyZWN0Q2lyY3VsYXIpIHtcclxuICAgIC8vIFRoZSBwb2ludGVyIGlzIGEgRElSRUNUIGNpcmN1bGFyIHJlZmVyZW5jZSAoaS5lLiBpdCByZWZlcmVuY2VzIGl0c2VsZikuXHJcbiAgICAvLyBTbyByZXBsYWNlIHRoZSAkcmVmIHBhdGggd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBmcm9tIHRoZSBKU09OIFNjaGVtYSByb290XHJcbiAgICBkZXJlZmVyZW5jZWRWYWx1ZS4kcmVmID0gcGF0aEZyb21Sb290O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNpcmN1bGFyOiBjaXJjdWxhcixcclxuICAgIHZhbHVlOiBkZXJlZmVyZW5jZWRWYWx1ZVxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDYWxsZWQgd2hlbiBhIGNpcmN1bGFyIHJlZmVyZW5jZSBpcyBmb3VuZC5cclxuICogSXQgc2V0cyB0aGUge0BsaW5rICRSZWZzI2NpcmN1bGFyfSBmbGFnLCBhbmQgdGhyb3dzIGFuIGVycm9yIGlmIG9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIgaXMgZmFsc2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlQYXRoIC0gVGhlIEpTT04gUmVmZXJlbmNlIHBhdGggb2YgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZVxyXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXHJcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIGFsd2F5cyByZXR1cm5zIHRydWUsIHRvIGluZGljYXRlIHRoYXQgYSBjaXJjdWxhciByZWZlcmVuY2Ugd2FzIGZvdW5kXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3VuZENpcmN1bGFyUmVmZXJlbmNlIChrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykge1xyXG4gICRyZWZzLmNpcmN1bGFyID0gdHJ1ZTtcclxuICBpZiAoIW9wdGlvbnMuZGVyZWZlcmVuY2UuY2lyY3VsYXIpIHtcclxuICAgIHRocm93IG9uby5yZWZlcmVuY2UoJ0NpcmN1bGFyICRyZWYgcG9pbnRlciBmb3VuZCBhdCAlcycsIGtleVBhdGgpO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBPcHRpb25zID0gcmVxdWlyZSgnLi9vcHRpb25zJyksXG4gICAgJFJlZnMgPSByZXF1aXJlKCcuL3JlZnMnKSxcbiAgICBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKSxcbiAgICBub3JtYWxpemVBcmdzID0gcmVxdWlyZSgnLi9ub3JtYWxpemUtYXJncycpLFxuICAgIHJlc29sdmVFeHRlcm5hbCA9IHJlcXVpcmUoJy4vcmVzb2x2ZS1leHRlcm5hbCcpLFxuICAgIGJ1bmRsZSA9IHJlcXVpcmUoJy4vYnVuZGxlJyksXG4gICAgZGVyZWZlcmVuY2UgPSByZXF1aXJlKCcuL2RlcmVmZXJlbmNlJyksXG4gICAgdXJsID0gcmVxdWlyZSgnLi91dGlsL3VybCcpLFxuICAgIG1heWJlID0gcmVxdWlyZSgnY2FsbC1tZS1tYXliZScpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cy5ZQU1MID0gcmVxdWlyZSgnLi91dGlsL3lhbWwnKTtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIHBhcnNlcyBhIEpTT04gc2NoZW1hLCBidWlsZHMgYSBtYXAgb2YgaXRzIEpTT04gcmVmZXJlbmNlcyBhbmQgdGhlaXIgcmVzb2x2ZWQgdmFsdWVzLFxuICogYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHRyYXZlcnNpbmcsIG1hbmlwdWxhdGluZywgYW5kIGRlcmVmZXJlbmNpbmcgdGhvc2UgcmVmZXJlbmNlcy5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gJFJlZlBhcnNlciAoKSB7XG4gIC8qKlxuICAgKiBUaGUgcGFyc2VkIChhbmQgcG9zc2libHkgZGVyZWZlcmVuY2VkKSBKU09OIHNjaGVtYSBvYmplY3RcbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHJlYWRvbmx5XG4gICAqL1xuICB0aGlzLnNjaGVtYSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAgICpcbiAgICogQHR5cGUgeyRSZWZzfVxuICAgKiBAcmVhZG9ubHlcbiAgICovXG4gIHRoaXMuJHJlZnMgPSBuZXcgJFJlZnMoKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIEpTT04gc2NoZW1hLlxuICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmVzb2x2ZSBhbnkgSlNPTiByZWZlcmVuY2VzLlxuICogSXQganVzdCByZWFkcyBhIHNpbmdsZSBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQsIGFuZCBwYXJzZSBpdCBhcyBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHBhcnNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIENsYXNzID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXRoaXNcbiAgdmFyIGluc3RhbmNlID0gbmV3IENsYXNzKCk7XG4gIHJldHVybiBpbnN0YW5jZS5wYXJzZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYS5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJlc29sdmUgYW55IEpTT04gcmVmZXJlbmNlcy5cbiAqIEl0IGp1c3QgcmVhZHMgYSBzaW5nbGUgZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LCBhbmQgcGFyc2UgaXQgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBwYXJzZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFhcmdzLnBhdGggJiYgIWFyZ3Muc2NoZW1hKSB7XG4gICAgdmFyIGVyciA9IG9ubygnRXhwZWN0ZWQgYSBmaWxlIHBhdGgsIFVSTCwgb3Igb2JqZWN0LiBHb3QgJXMnLCBhcmdzLnBhdGggfHwgYXJncy5zY2hlbWEpO1xuICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgfVxuXG4gIC8vIFJlc2V0IGV2ZXJ5dGhpbmdcbiAgdGhpcy5zY2hlbWEgPSBudWxsO1xuICB0aGlzLiRyZWZzID0gbmV3ICRSZWZzKCk7XG5cbiAgLy8gSWYgdGhlIHBhdGggaXMgYSBmaWxlc3lzdGVtIHBhdGgsIHRoZW4gY29udmVydCBpdCB0byBhIFVSTC5cbiAgLy8gTk9URTogQWNjb3JkaW5nIHRvIHRoZSBKU09OIFJlZmVyZW5jZSBzcGVjLCB0aGVzZSBzaG91bGQgYWxyZWFkeSBiZSBVUkxzLFxuICAvLyBidXQsIGluIHByYWN0aWNlLCBtYW55IHBlb3BsZSB1c2UgbG9jYWwgZmlsZXN5c3RlbSBwYXRocyBpbnN0ZWFkLlxuICAvLyBTbyB3ZSdyZSBiZWluZyBnZW5lcm91cyBoZXJlIGFuZCBkb2luZyB0aGUgY29udmVyc2lvbiBhdXRvbWF0aWNhbGx5LlxuICAvLyBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBhIDEwMCUgYnVsbGV0cHJvb2Ygc29sdXRpb24uXG4gIC8vIElmIGl0IGRvZXNuJ3Qgd29yayBmb3IgeW91ciB1c2UtY2FzZSwgdGhlbiB1c2UgYSBVUkwgaW5zdGVhZC5cbiAgdmFyIHBhdGhUeXBlID0gJ2h0dHAnO1xuICBpZiAodXJsLmlzRmlsZVN5c3RlbVBhdGgoYXJncy5wYXRoKSkge1xuICAgIGFyZ3MucGF0aCA9IHVybC5mcm9tRmlsZVN5c3RlbVBhdGgoYXJncy5wYXRoKTtcbiAgICBwYXRoVHlwZSA9ICdmaWxlJztcbiAgfVxuXG4gIC8vIFJlc29sdmUgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHNjaGVtYVxuICBhcmdzLnBhdGggPSB1cmwucmVzb2x2ZSh1cmwuY3dkKCksIGFyZ3MucGF0aCk7XG5cbiAgaWYgKGFyZ3Muc2NoZW1hICYmIHR5cGVvZiBhcmdzLnNjaGVtYSA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBBIHNjaGVtYSBvYmplY3Qgd2FzIHBhc3NlZC1pbi5cbiAgICAvLyBTbyBpbW1lZGlhdGVseSBhZGQgYSBuZXcgJFJlZiB3aXRoIHRoZSBzY2hlbWEgb2JqZWN0IGFzIGl0cyB2YWx1ZVxuICAgIHZhciAkcmVmID0gdGhpcy4kcmVmcy5fYWRkKGFyZ3MucGF0aCk7XG4gICAgJHJlZi52YWx1ZSA9IGFyZ3Muc2NoZW1hO1xuICAgICRyZWYucGF0aFR5cGUgPSBwYXRoVHlwZTtcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGFyZ3Muc2NoZW1hKTtcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBQYXJzZSB0aGUgc2NoZW1hIGZpbGUvdXJsXG4gICAgcHJvbWlzZSA9IHBhcnNlKGFyZ3MucGF0aCwgdGhpcy4kcmVmcywgYXJncy5vcHRpb25zKTtcbiAgfVxuXG4gIHZhciBtZSA9IHRoaXM7XG4gIHJldHVybiBwcm9taXNlXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgaWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcgfHwgQnVmZmVyLmlzQnVmZmVyKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgb25vLnN5bnRheCgnXCIlc1wiIGlzIG5vdCBhIHZhbGlkIEpTT04gU2NoZW1hJywgbWUuJHJlZnMuX3Jvb3QkUmVmLnBhdGggfHwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtZS5zY2hlbWEgPSByZXN1bHQ7XG4gICAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlc29sdmUobWUuc2NoZW1hKSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlKSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEgYW5kIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGluY2x1ZGluZyByZWZlcmVuY2VzIGluXG4gKiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCBhbmQgcmVzb2x2ZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja11cbiAqIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGEge0BsaW5rICRSZWZzfSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgSlNPTiByZWZlcmVuY2VzXG4gKi9cbiRSZWZQYXJzZXIucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UucmVzb2x2ZS5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSBhbmQgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgaW5jbHVkaW5nIHJlZmVyZW5jZXMgaW5cbiAqIGV4dGVybmFsbHktcmVmZXJlbmNlZCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkIGFuZCByZXNvbHZlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXVxuICogLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSB7QGxpbmsgJFJlZnN9IG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggYSB7QGxpbmsgJFJlZnN9IG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHZlZCBKU09OIHJlZmVyZW5jZXNcbiAqL1xuJFJlZlBhcnNlci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBtZSA9IHRoaXM7XG4gIHZhciBhcmdzID0gbm9ybWFsaXplQXJncyhhcmd1bWVudHMpO1xuXG4gIHJldHVybiB0aGlzLnBhcnNlKGFyZ3MucGF0aCwgYXJncy5zY2hlbWEsIGFyZ3Mub3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZUV4dGVybmFsKG1lLCBhcmdzLm9wdGlvbnMpO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG1heWJlKGFyZ3MuY2FsbGJhY2ssIFByb21pc2UucmVzb2x2ZShtZS4kcmVmcykpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSwgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgYW5kIGJ1bmRsZXMgYWxsIGV4dGVybmFsIHJlZmVyZW5jZXNcbiAqIGludG8gdGhlIG1haW4gSlNPTiBzY2hlbWEuIFRoaXMgcHJvZHVjZXMgYSBKU09OIHNjaGVtYSB0aGF0IG9ubHkgaGFzICppbnRlcm5hbCogcmVmZXJlbmNlcyxcbiAqIG5vdCBhbnkgKmV4dGVybmFsKiByZWZlcmVuY2VzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aF0gLSBUaGUgZmlsZSBwYXRoIG9yIFVSTCBvZiB0aGUgSlNPTiBzY2hlbWFcbiAqIEBwYXJhbSB7b2JqZWN0fSBbc2NoZW1hXSAtIEEgSlNPTiBzY2hlbWEgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkaW5nIGZyb20gYHBhdGhgLlxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3B0aW9ucyB0aGF0IGRldGVybWluZSBob3cgdGhlIHNjaGVtYSBpcyBwYXJzZWQsIHJlc29sdmVkLCBhbmQgZGVyZWZlcmVuY2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBidW5kbGVkIEpTT04gc2NoZW1hIG9iamVjdFxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIuYnVuZGxlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIENsYXNzID0gdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXRoaXNcbiAgdmFyIGluc3RhbmNlID0gbmV3IENsYXNzKCk7XG4gIHJldHVybiBpbnN0YW5jZS5idW5kbGUuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBidW5kbGVzIGFsbCBleHRlcm5hbCByZWZlcmVuY2VzXG4gKiBpbnRvIHRoZSBtYWluIEpTT04gc2NoZW1hLiBUaGlzIHByb2R1Y2VzIGEgSlNPTiBzY2hlbWEgdGhhdCBvbmx5IGhhcyAqaW50ZXJuYWwqIHJlZmVyZW5jZXMsXG4gKiBub3QgYW55ICpleHRlcm5hbCogcmVmZXJlbmNlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgYnVuZGxlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGJ1bmRsZWQgSlNPTiBzY2hlbWEgb2JqZWN0LlxuICovXG4kUmVmUGFyc2VyLnByb3RvdHlwZS5idW5kbGUgPSBmdW5jdGlvbiAocGF0aCwgc2NoZW1hLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgYXJncyA9IG5vcm1hbGl6ZUFyZ3MoYXJndW1lbnRzKTtcblxuICByZXR1cm4gdGhpcy5yZXNvbHZlKGFyZ3MucGF0aCwgYXJncy5zY2hlbWEsIGFyZ3Mub3B0aW9ucylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBidW5kbGUobWUsIGFyZ3Mub3B0aW9ucyk7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBKU09OIHNjaGVtYSwgcmVzb2x2ZXMgYW55IEpTT04gcmVmZXJlbmNlcywgYW5kIGRlcmVmZXJlbmNlcyB0aGUgSlNPTiBzY2hlbWEuXG4gKiBUaGF0IGlzLCBhbGwgSlNPTiByZWZlcmVuY2VzIGFyZSByZXBsYWNlZCB3aXRoIHRoZWlyIHJlc29sdmVkIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGhdIC0gVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0ge29iamVjdH0gW3NjaGVtYV0gLSBBIEpTT04gc2NoZW1hIG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGBwYXRoYC5cbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXSAtIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBzY2hlbWEgaXMgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIGVycm9yLWZpcnN0IGNhbGxiYWNrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgZGVyZWZlcmVuY2VkIEpTT04gc2NoZW1hIG9iamVjdFxuICogQHJldHVybnMge1Byb21pc2V9IC0gVGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgZGVyZWZlcmVuY2VkIEpTT04gc2NoZW1hIG9iamVjdC5cbiAqL1xuJFJlZlBhcnNlci5kZXJlZmVyZW5jZSA9IGZ1bmN0aW9uIChwYXRoLCBzY2hlbWEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBDbGFzcyA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC10aGlzXG4gIHZhciBpbnN0YW5jZSA9IG5ldyBDbGFzcygpO1xuICByZXR1cm4gaW5zdGFuY2UuZGVyZWZlcmVuY2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgZ2l2ZW4gSlNPTiBzY2hlbWEsIHJlc29sdmVzIGFueSBKU09OIHJlZmVyZW5jZXMsIGFuZCBkZXJlZmVyZW5jZXMgdGhlIEpTT04gc2NoZW1hLlxuICogVGhhdCBpcywgYWxsIEpTT04gcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtwYXRoXSAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBKU09OIHNjaGVtYVxuICogQHBhcmFtIHtvYmplY3R9IFtzY2hlbWFdIC0gQSBKU09OIHNjaGVtYSBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBgcGF0aGAuXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc10gLSBPcHRpb25zIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgc2NoZW1hIGlzIHBhcnNlZCwgcmVzb2x2ZWQsIGFuZCBkZXJlZmVyZW5jZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBlcnJvci1maXJzdCBjYWxsYmFjay4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSAtIFRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIGRlcmVmZXJlbmNlZCBKU09OIHNjaGVtYSBvYmplY3QuXG4gKi9cbiRSZWZQYXJzZXIucHJvdG90eXBlLmRlcmVmZXJlbmNlID0gZnVuY3Rpb24gKHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBub3JtYWxpemVBcmdzKGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHRoaXMucmVzb2x2ZShhcmdzLnBhdGgsIGFyZ3Muc2NoZW1hLCBhcmdzLm9wdGlvbnMpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgZGVyZWZlcmVuY2UobWUsIGFyZ3Mub3B0aW9ucyk7XG4gICAgICByZXR1cm4gbWF5YmUoYXJncy5jYWxsYmFjaywgUHJvbWlzZS5yZXNvbHZlKG1lLnNjaGVtYSkpO1xuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBtYXliZShhcmdzLmNhbGxiYWNrLCBQcm9taXNlLnJlamVjdChlcnIpKTtcbiAgICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBPcHRpb25zID0gcmVxdWlyZSgnLi9vcHRpb25zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplQXJncztcblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFjY291bnRpbmcgZm9yIG9wdGlvbmFsIGFyZ3MuXG4gKlxuICogQHBhcmFtIHtBcmd1bWVudHN9IGFyZ3NcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFyZ3MgKGFyZ3MpIHtcbiAgdmFyIHBhdGgsIHNjaGVtYSwgb3B0aW9ucywgY2FsbGJhY2s7XG4gIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKTtcblxuICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRoZSBsYXN0IHBhcmFtZXRlciBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgIC8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHBhdGhcbiAgICBwYXRoID0gYXJnc1swXTtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMl0gPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgc2NoZW1hLCBhbmQgdGhlIHRoaXJkIHBhcmFtZXRlciBpcyB0aGUgb3B0aW9uc1xuICAgICAgc2NoZW1hID0gYXJnc1sxXTtcbiAgICAgIG9wdGlvbnMgPSBhcmdzWzJdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBvcHRpb25zXG4gICAgICBzY2hlbWEgPSB1bmRlZmluZWQ7XG4gICAgICBvcHRpb25zID0gYXJnc1sxXTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgc2NoZW1hXG4gICAgcGF0aCA9ICcnO1xuICAgIHNjaGVtYSA9IGFyZ3NbMF07XG4gICAgb3B0aW9ucyA9IGFyZ3NbMV07XG4gIH1cblxuICBpZiAoIShvcHRpb25zIGluc3RhbmNlb2YgT3B0aW9ucykpIHtcbiAgICBvcHRpb25zID0gbmV3IE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICBjYWxsYmFjazogY2FsbGJhY2tcbiAgfTtcbn1cbiIsIi8qIGVzbGludCBsaW5lcy1hcm91bmQtY29tbWVudDogWzIsIHtiZWZvcmVCbG9ja0NvbW1lbnQ6IGZhbHNlfV0gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIGpzb25QYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvanNvbicpLFxuICAgIHlhbWxQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMveWFtbCcpLFxuICAgIHRleHRQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcnMvdGV4dCcpLFxuICAgIGJpbmFyeVBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2Vycy9iaW5hcnknKSxcbiAgICBmaWxlUmVzb2x2ZXIgPSByZXF1aXJlKCcuL3Jlc29sdmVycy9maWxlJyksXG4gICAgaHR0cFJlc29sdmVyID0gcmVxdWlyZSgnLi9yZXNvbHZlcnMvaHR0cCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWZQYXJzZXJPcHRpb25zO1xuXG4vKipcbiAqIE9wdGlvbnMgdGhhdCBkZXRlcm1pbmUgaG93IEpTT04gc2NoZW1hcyBhcmUgcGFyc2VkLCByZXNvbHZlZCwgYW5kIGRlcmVmZXJlbmNlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHwkUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdIC0gT3ZlcnJpZGRlbiBvcHRpb25zXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gJFJlZlBhcnNlck9wdGlvbnMgKG9wdGlvbnMpIHtcbiAgbWVyZ2UodGhpcywgJFJlZlBhcnNlck9wdGlvbnMuZGVmYXVsdHMpO1xuICBtZXJnZSh0aGlzLCBvcHRpb25zKTtcbn1cblxuJFJlZlBhcnNlck9wdGlvbnMuZGVmYXVsdHMgPSB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBkaWZmZXJlbnQgdHlwZXMgb2YgZmlsZXMgd2lsbCBiZSBwYXJzZWQuXG4gICAqXG4gICAqIFlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgcGFyc2VycyBvZiB5b3VyIG93biwgcmVwbGFjZSBhbiBleGlzdGluZyBvbmUgd2l0aFxuICAgKiB5b3VyIG93biBpbXBsZW1lbmF0aW9uLCBvciBkaXNhYmxlIGFueSBwYXJzZXIgYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cbiAgICovXG4gIHBhcnNlOiB7XG4gICAganNvbjoganNvblBhcnNlcixcbiAgICB5YW1sOiB5YW1sUGFyc2VyLFxuICAgIHRleHQ6IHRleHRQYXJzZXIsXG4gICAgYmluYXJ5OiBiaW5hcnlQYXJzZXIsXG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IEpTT04gUmVmZXJlbmNlcyB3aWxsIGJlIHJlc29sdmVkLlxuICAgKlxuICAgKiBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIHJlc29sdmVycyBvZiB5b3VyIG93biwgcmVwbGFjZSBhbiBleGlzdGluZyBvbmUgd2l0aFxuICAgKiB5b3VyIG93biBpbXBsZW1lbmF0aW9uLCBvciBkaXNhYmxlIGFueSByZXNvbHZlciBieSBzZXR0aW5nIGl0IHRvIGZhbHNlLlxuICAgKi9cbiAgcmVzb2x2ZToge1xuICAgIGZpbGU6IGZpbGVSZXNvbHZlcixcbiAgICBodHRwOiBodHRwUmVzb2x2ZXIsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXh0ZXJuYWwgJHJlZiBwb2ludGVycyB3aWxsIGJlIHJlc29sdmVkLlxuICAgICAqIElmIHRoaXMgb3B0aW9uIGlzIGRpc2FibGVkLCB0aGVuIG5vbmUgb2YgYWJvdmUgcmVzb2x2ZXJzIHdpbGwgYmUgY2FsbGVkLlxuICAgICAqIEluc3RlYWQsIGV4dGVybmFsICRyZWYgcG9pbnRlcnMgd2lsbCBzaW1wbHkgYmUgaWdub3JlZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIGV4dGVybmFsOiB0cnVlLFxuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSB0eXBlcyBvZiBKU09OIHJlZmVyZW5jZXMgdGhhdCBhcmUgYWxsb3dlZC5cbiAgICovXG4gIGRlcmVmZXJlbmNlOiB7XG4gICAgLyoqXG4gICAgICogRGVyZWZlcmVuY2UgY2lyY3VsYXIgKHJlY3Vyc2l2ZSkgSlNPTiByZWZlcmVuY2VzP1xuICAgICAqIElmIGZhbHNlLCB0aGVuIGEge0BsaW5rIFJlZmVyZW5jZUVycm9yfSB3aWxsIGJlIHRocm93biBpZiBhIGNpcmN1bGFyIHJlZmVyZW5jZSBpcyBmb3VuZC5cbiAgICAgKiBJZiBcImlnbm9yZVwiLCB0aGVuIGNpcmN1bGFyIHJlZmVyZW5jZXMgd2lsbCBub3QgYmUgZGVyZWZlcmVuY2VkLlxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW58c3RyaW5nfVxuICAgICAqL1xuICAgIGNpcmN1bGFyOiB0cnVlXG4gIH0sXG59O1xuXG4vKipcbiAqIE1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc291cmNlIG9iamVjdCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgLSBUaGUgb2JqZWN0IHRoYXQgd2UncmUgcG9wdWxhdGluZ1xuICogQHBhcmFtIHs/b2JqZWN0fSBzb3VyY2UgLSBUaGUgb3B0aW9ucyB0aGF0IGFyZSBiZWluZyBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG1lcmdlICh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoaXNNZXJnZWFibGUoc291cmNlKSkge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHNvdXJjZVNldHRpbmcgPSBzb3VyY2Vba2V5XTtcbiAgICAgIHZhciB0YXJnZXRTZXR0aW5nID0gdGFyZ2V0W2tleV07XG5cbiAgICAgIGlmIChpc01lcmdlYWJsZShzb3VyY2VTZXR0aW5nKSkge1xuICAgICAgICAvLyBJdCdzIGEgbmVzdGVkIG9iamVjdCwgc28gbWVyZ2UgaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBtZXJnZSh0YXJnZXRTZXR0aW5nIHx8IHt9LCBzb3VyY2VTZXR0aW5nKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHNvdXJjZVNldHRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBJdCdzIGEgc2NhbGFyIHZhbHVlLCBmdW5jdGlvbiwgb3IgYXJyYXkuIE5vIG1lcmdpbmcgbmVjZXNzYXJ5LiBKdXN0IG92ZXJ3cml0ZSB0aGUgdGFyZ2V0IHZhbHVlLlxuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVNldHRpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBjYW4gYmUgbWVyZ2VkLFxuICogb3IgaWYgaXQgaXMgYSBzY2FsYXIgdmFsdWUgdGhhdCBzaG91bGQganVzdCBvdmVycmlkZSB0aGUgdGFyZ2V0IHZhbHVlLlxuICpcbiAqIEBwYXJhbSAgIHsqfSAgdmFsXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNZXJnZWFibGUgKHZhbCkge1xuICByZXR1cm4gdmFsICYmXG4gICAgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSAmJlxuICAgICFBcnJheS5pc0FycmF5KHZhbCkgJiZcbiAgICAhKHZhbCBpbnN0YW5jZW9mIFJlZ0V4cCkgJiZcbiAgICAhKHZhbCBpbnN0YW5jZW9mIERhdGUpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgb25vID0gcmVxdWlyZSgnb25vJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuL3V0aWwvZGVidWcnKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuL3V0aWwvdXJsJyksXG4gICAgcGx1Z2lucyA9IHJlcXVpcmUoJy4vdXRpbC9wbHVnaW5zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aCBvciBVUkwuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGlzIHBhdGggTVVTVCBhbHJlYWR5IGJlIHJlc29sdmVkLCBzaW5jZSBgcmVhZGAgZG9lc24ndCBrbm93IHRoZSByZXNvbHV0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSBwYXJzZWQgZmlsZSBjb250ZW50cywgTk9UIHRoZSByYXcgKEJ1ZmZlcikgY29udGVudHMuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChwYXRoLCAkcmVmcywgb3B0aW9ucykge1xuICB0cnkge1xuICAgIC8vIFJlbW92ZSB0aGUgVVJMIGZyYWdtZW50LCBpZiBhbnlcbiAgICBwYXRoID0gdXJsLnN0cmlwSGFzaChwYXRoKTtcblxuICAgIC8vIEFkZCBhIG5ldyAkUmVmIGZvciB0aGlzIGZpbGUsIGV2ZW4gdGhvdWdoIHdlIGRvbid0IGhhdmUgdGhlIHZhbHVlIHlldC5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBzaW11bHRhbmVvdXNseSByZWFkICYgcGFyc2UgdGhlIHNhbWUgZmlsZSBtdWx0aXBsZSB0aW1lc1xuICAgIHZhciAkcmVmID0gJHJlZnMuX2FkZChwYXRoKTtcblxuICAgIC8vIFRoaXMgXCJmaWxlIG9iamVjdFwiIHdpbGwgYmUgcGFzc2VkIHRvIGFsbCByZXNvbHZlcnMgYW5kIHBhcnNlcnMuXG4gICAgdmFyIGZpbGUgPSB7XG4gICAgICB1cmw6IHBhdGgsXG4gICAgICBleHRlbnNpb246IHVybC5nZXRFeHRlbnNpb24ocGF0aCksXG4gICAgfTtcblxuICAgIC8vIFJlYWQgdGhlIGZpbGUgYW5kIHRoZW4gcGFyc2UgdGhlIGRhdGFcbiAgICByZXR1cm4gcmVhZEZpbGUoZmlsZSwgb3B0aW9ucylcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNvbHZlcikge1xuICAgICAgICAkcmVmLnBhdGhUeXBlID0gcmVzb2x2ZXIucGx1Z2luLm5hbWU7XG4gICAgICAgIGZpbGUuZGF0YSA9IHJlc29sdmVyLnJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmlsZShmaWxlLCBvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgICRyZWYudmFsdWUgPSBwYXJzZXIucmVzdWx0O1xuICAgICAgICByZXR1cm4gcGFyc2VyLnJlc3VsdDtcbiAgICAgIH0pO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGdpdmVuIGZpbGUsIHVzaW5nIHRoZSBjb25maWd1cmVkIHJlc29sdmVyIHBsdWdpbnNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIFRoZSBwcm9taXNlIHJlc29sdmVzIHdpdGggdGhlIHJhdyBmaWxlIGNvbnRlbnRzIGFuZCB0aGUgcmVzb2x2ZXIgdGhhdCB3YXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gcmVhZEZpbGUgKGZpbGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBkZWJ1ZygnUmVhZGluZyAlcycsIGZpbGUudXJsKTtcblxuICAgIC8vIEZpbmQgdGhlIHJlc29sdmVycyB0aGF0IGNhbiByZWFkIHRoaXMgZmlsZVxuICAgIHZhciByZXNvbHZlcnMgPSBwbHVnaW5zLmFsbChvcHRpb25zLnJlc29sdmUpO1xuICAgIHJlc29sdmVycyA9IHBsdWdpbnMuZmlsdGVyKHJlc29sdmVycywgJ2NhblJlYWQnLCBmaWxlKTtcblxuICAgIC8vIFJ1biB0aGUgcmVzb2x2ZXJzLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gc3VjY2VlZHNcbiAgICBwbHVnaW5zLnNvcnQocmVzb2x2ZXJzKTtcbiAgICBwbHVnaW5zLnJ1bihyZXNvbHZlcnMsICdyZWFkJywgZmlsZSlcbiAgICAgIC50aGVuKHJlc29sdmUsIG9uRXJyb3IpO1xuXG4gICAgZnVuY3Rpb24gb25FcnJvciAoZXJyKSB7XG4gICAgICAvLyBUaHJvdyB0aGUgb3JpZ2luYWwgZXJyb3IsIGlmIGl0J3Mgb25lIG9mIG91ciBvd24gKHVzZXItZnJpZW5kbHkpIGVycm9ycy5cbiAgICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYSBnZW5lcmljLCBmcmllbmRseSBlcnJvci5cbiAgICAgIGlmIChlcnIgJiYgIShlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ1VuYWJsZSB0byByZXNvbHZlICRyZWYgcG9pbnRlciBcIiVzXCInLCBmaWxlLnVybCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBnaXZlbiBmaWxlJ3MgY29udGVudHMsIHVzaW5nIHRoZSBjb25maWd1cmVkIHBhcnNlciBwbHVnaW5zLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgcGFyc2VkIGZpbGUgY29udGVudHMgYW5kIHRoZSBwYXJzZXIgdGhhdCB3YXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VGaWxlIChmaWxlLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVidWcoJ1BhcnNpbmcgJXMnLCBmaWxlLnVybCk7XG5cbiAgICAvLyBGaW5kIHRoZSBwYXJzZXJzIHRoYXQgY2FuIHJlYWQgdGhpcyBmaWxlIHR5cGUuXG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgcGFyc2VycyBhcmUgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoaXMgZmlsZSwgdGhlbiB3ZSdsbCB0cnkgQUxMIG9mIHRoZW0uXG4gICAgLy8gVGhpcyBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGZpbGUgSVMgYSBzdXBwb3J0ZWQgdHlwZSwganVzdCB3aXRoIGFuIHVua25vd24gZXh0ZW5zaW9uLlxuICAgIHZhciBhbGxQYXJzZXJzID0gcGx1Z2lucy5hbGwob3B0aW9ucy5wYXJzZSk7XG4gICAgdmFyIGZpbHRlcmVkUGFyc2VycyA9IHBsdWdpbnMuZmlsdGVyKGFsbFBhcnNlcnMsICdjYW5QYXJzZScsIGZpbGUpO1xuICAgIHZhciBwYXJzZXJzID0gZmlsdGVyZWRQYXJzZXJzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZFBhcnNlcnMgOiBhbGxQYXJzZXJzO1xuXG4gICAgLy8gUnVuIHRoZSBwYXJzZXJzLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gc3VjY2VlZHNcbiAgICBwbHVnaW5zLnNvcnQocGFyc2Vycyk7XG4gICAgcGx1Z2lucy5ydW4ocGFyc2VycywgJ3BhcnNlJywgZmlsZSlcbiAgICAgIC50aGVuKG9uUGFyc2VkLCBvbkVycm9yKTtcblxuICAgIGZ1bmN0aW9uIG9uUGFyc2VkIChwYXJzZXIpIHtcbiAgICAgIGlmICghcGFyc2VyLnBsdWdpbi5hbGxvd0VtcHR5ICYmIGlzRW1wdHkocGFyc2VyLnJlc3VsdCkpIHtcbiAgICAgICAgcmVqZWN0KG9uby5zeW50YXgoJ0Vycm9yIHBhcnNpbmcgXCIlc1wiIGFzICVzLiBcXG5QYXJzZWQgdmFsdWUgaXMgZW1wdHknLCBmaWxlLnVybCwgcGFyc2VyLnBsdWdpbi5uYW1lKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShwYXJzZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBlcnIgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihlcnIpO1xuICAgICAgICByZWplY3Qob25vLnN5bnRheChlcnIsICdFcnJvciBwYXJzaW5nICVzJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZWplY3Qob25vLnN5bnRheCgnVW5hYmxlIHRvIHBhcnNlICVzJywgZmlsZS51cmwpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGFyc2VkIHZhbHVlIGlzIFwiZW1wdHlcIi5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHx8XG4gICAgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJJTkFSWV9SRUdFWFAgPSAvXFwuKGpwZWd8anBnfGdpZnxwbmd8Ym1wfGljbykkL2k7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyBwYXJzZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHBhcnNlcnMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBvcmRlcjogNDAwLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IFwiZW1wdHlcIiBmaWxlcyAoemVybyBieXRlcykuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgcmV0dXJuIHRydWUgd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgcmV0dXJuIGZhbHNlIHdpbGwgYmUgc2tpcHBlZCwgVU5MRVNTIGFsbCBwYXJzZXJzIHJldHVybmVkIGZhbHNlLCBpbiB3aGljaCBjYXNlXG4gICAqIGV2ZXJ5IHBhcnNlciB3aWxsIGJlIHRyaWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBjYW5QYXJzZTogZnVuY3Rpb24gaXNCaW5hcnkgKGZpbGUpIHtcbiAgICAvLyBVc2UgdGhpcyBwYXJzZXIgaWYgdGhlIGZpbGUgaXMgYSBCdWZmZXIsIGFuZCBoYXMgYSBrbm93biBiaW5hcnkgZXh0ZW5zaW9uXG4gICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpICYmIEJJTkFSWV9SRUdFWFAudGVzdChmaWxlLnVybCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgZ2l2ZW4gZGF0YSBhcyBhIEJ1ZmZlciAoYnl0ZSBhcnJheSkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHBhcmFtIHsqfSAgICAgIGZpbGUuZGF0YSAgICAgIC0gVGhlIGZpbGUgY29udGVudHMuIFRoaXMgd2lsbCBiZSB3aGF0ZXZlciBkYXRhIHR5cGUgd2FzIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICAgKi9cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlQmluYXJ5IChmaWxlKSB7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFRoaXMgd2lsbCByZWplY3QgaWYgZGF0YSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGEgc3RyaW5nIG9yIHR5cGVkIGFycmF5XG4gICAgICByZXR1cm4gbmV3IEJ1ZmZlcihmaWxlLmRhdGEpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAxMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzLiBUaGlzIGluY2x1ZGVzIHplcm8tYnl0ZSBmaWxlcywgYXMgd2VsbCBhcyBlbXB0eSBKU09OIG9iamVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgbWF0Y2ggd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgZG9uJ3QgbWF0Y2ggd2lsbCBiZSBza2lwcGVkLCBVTkxFU1Mgbm9uZSBvZiB0aGUgcGFyc2VycyBtYXRjaCwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHR5cGUge1JlZ0V4cHxzdHJpbmdbXXxmdW5jdGlvbn1cbiAgICovXG4gIGNhblBhcnNlOiAnLmpzb24nLFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgSlNPTlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VKU09OIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gZmlsZS5kYXRhO1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICBkYXRhID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChkYXRhLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7ICAvLyBUaGlzIG1pcnJvcnMgdGhlIFlBTUwgYmVoYXZpb3JcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoZGF0YSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gZGF0YSBpcyBhbHJlYWR5IGEgSmF2YVNjcmlwdCB2YWx1ZSAob2JqZWN0LCBhcnJheSwgbnVtYmVyLCBudWxsLCBOYU4sIGV0Yy4pXG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBURVhUX1JFR0VYUCA9IC9cXC4odHh0fGh0bXxodG1sfG1kfHhtbHxqc3xtaW58bWFwfGNzc3xzY3NzfGxlc3N8c3ZnKSQvaTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAzMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzICh6ZXJvIGJ5dGVzKS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBhbGxvd0VtcHR5OiB0cnVlLFxuXG4gIC8qKlxuICAgKiBUaGUgZW5jb2RpbmcgdGhhdCB0aGUgdGV4dCBpcyBleHBlY3RlZCB0byBiZSBpbi5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGVuY29kaW5nOiAndXRmOCcsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHBhcnNlciBjYW4gcGFyc2UgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQsIGluIG9yZGVyLCB1bnRpbCBvbmUgc3VjY2Vzc2Z1bGx5IHBhcnNlcyB0aGUgZmlsZS5cbiAgICogUGFyc2VycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIGJlIHNraXBwZWQsIFVOTEVTUyBhbGwgcGFyc2VycyByZXR1cm5lZCBmYWxzZSwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcGFyYW0geyp9ICAgICAgZmlsZS5kYXRhICAgICAgLSBUaGUgZmlsZSBjb250ZW50cy4gVGhpcyB3aWxsIGJlIHdoYXRldmVyIGRhdGEgdHlwZSB3YXMgcmV0dXJuZWQgYnkgdGhlIHJlc29sdmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGlzVGV4dCAoZmlsZSkge1xuICAgIC8vIFVzZSB0aGlzIHBhcnNlciBpZiB0aGUgZmlsZSBpcyBhIHN0cmluZyBvciBCdWZmZXIsIGFuZCBoYXMgYSBrbm93biB0ZXh0LWJhc2VkIGV4dGVuc2lvblxuICAgIHJldHVybiAodHlwZW9mIGZpbGUuZGF0YSA9PT0gJ3N0cmluZycgfHwgQnVmZmVyLmlzQnVmZmVyKGZpbGUuZGF0YSkpICYmIFRFWFRfUkVHRVhQLnRlc3QoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgdGV4dFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZVRleHQgKGZpbGUpIHtcbiAgICBpZiAodHlwZW9mIGZpbGUuZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmaWxlLmRhdGE7XG4gICAgfVxuICAgIGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZmlsZS5kYXRhLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBpcyBub3QgdGV4dCcpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFlBTUwgPSByZXF1aXJlKCcuLi91dGlsL3lhbWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgdGhhdCB0aGlzIHBhcnNlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcGFyc2Vycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAyMDAsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJlbXB0eVwiIGZpbGVzLiBUaGlzIGluY2x1ZGVzIHplcm8tYnl0ZSBmaWxlcywgYXMgd2VsbCBhcyBlbXB0eSBKU09OIG9iamVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgYWxsb3dFbXB0eTogdHJ1ZSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcGFyc2VyIGNhbiBwYXJzZSBhIGdpdmVuIGZpbGUgcmVmZXJlbmNlLlxuICAgKiBQYXJzZXJzIHRoYXQgbWF0Y2ggd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcGFyc2VzIHRoZSBmaWxlLlxuICAgKiBQYXJzZXJzIHRoYXQgZG9uJ3QgbWF0Y2ggd2lsbCBiZSBza2lwcGVkLCBVTkxFU1Mgbm9uZSBvZiB0aGUgcGFyc2VycyBtYXRjaCwgaW4gd2hpY2ggY2FzZVxuICAgKiBldmVyeSBwYXJzZXIgd2lsbCBiZSB0cmllZC5cbiAgICpcbiAgICogQHR5cGUge1JlZ0V4cHxzdHJpbmdbXXxmdW5jdGlvbn1cbiAgICovXG4gIGNhblBhcnNlOiBbJy55YW1sJywgJy55bWwnLCAnLmpzb24nXSwgIC8vIEpTT04gaXMgdmFsaWQgWUFNTFxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGZpbGUgYXMgWUFNTFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEBwYXJhbSB7Kn0gICAgICBmaWxlLmRhdGEgICAgICAtIFRoZSBmaWxlIGNvbnRlbnRzLiBUaGlzIHdpbGwgYmUgd2hhdGV2ZXIgZGF0YSB0eXBlIHdhcyByZXR1cm5lZCBieSB0aGUgcmVzb2x2ZXJcbiAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAqL1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2VZQU1MIChmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gZmlsZS5kYXRhO1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICBkYXRhID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmUoWUFNTC5wYXJzZShkYXRhKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gZGF0YSBpcyBhbHJlYWR5IGEgSmF2YVNjcmlwdCB2YWx1ZSAob2JqZWN0LCBhcnJheSwgbnVtYmVyLCBudWxsLCBOYU4sIGV0Yy4pXG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnRlcjtcblxudmFyICRSZWYgPSByZXF1aXJlKCcuL3JlZicpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICBzbGFzaGVzID0gL1xcLy9nLFxuICAgIHRpbGRlcyA9IC9+L2csXG4gICAgZXNjYXBlZFNsYXNoID0gL34xL2csXG4gICAgZXNjYXBlZFRpbGRlID0gL34wL2c7XG5cbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIEpTT04gcG9pbnRlciBhbmQgaXRzIHJlc29sdmVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7JFJlZn0gJHJlZlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZnJpZW5kbHlQYXRoXSAtIFRoZSBvcmlnaW5hbCB1c2VyLXNwZWNpZmllZCBwYXRoICh1c2VkIGZvciBlcnJvciBtZXNzYWdlcylcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBQb2ludGVyICgkcmVmLCBwYXRoLCBmcmllbmRseVBhdGgpIHtcbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgJFJlZn0gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhpcyB7QGxpbmsgUG9pbnRlcn0gb2JqZWN0LlxuICAgKiBAdHlwZSB7JFJlZn1cbiAgICovXG4gIHRoaXMuJHJlZiA9ICRyZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggb3IgVVJMLCBjb250YWluaW5nIHRoZSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2guXG4gICAqIFRoaXMgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGF0aCBvZiB0aGUgbWFpbiBKU09OIHNjaGVtYSBmaWxlLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5wYXRoID0gcGF0aDtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIHBhdGggb3IgVVJMLCB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHRoaXMub3JpZ2luYWxQYXRoID0gZnJpZW5kbHlQYXRoIHx8IHBhdGg7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgSlNPTiBwb2ludGVyLlxuICAgKiBDYW4gYmUgYW55IEpTT04gdHlwZSwgbm90IGp1c3Qgb2JqZWN0cy4gVW5rbm93biBmaWxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBhcyBCdWZmZXJzIChieXRlIGFycmF5cykuXG4gICAqIEB0eXBlIHs/Kn1cbiAgICovXG4gIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwb2ludGVyIHJlZmVyZW5jZXMgaXRzZWxmLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHRoaXMuY2lyY3VsYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpbmRpcmVjdCByZWZlcmVuY2VzIHRoYXQgd2VyZSB0cmF2ZXJzZWQgdG8gcmVzb2x2ZSB0aGUgdmFsdWUuXG4gICAqIFJlc29sdmluZyBhIHNpbmdsZSBwb2ludGVyIG1heSByZXF1aXJlIHJlc29sdmluZyBtdWx0aXBsZSAkUmVmcy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHRoaXMuaW5kaXJlY3Rpb25zID0gMDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgd2l0aGluIHRoZSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBjcmF3bGVkXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1BvaW50ZXJ9XG4gKiBSZXR1cm5zIGEgSlNPTiBwb2ludGVyIHdob3NlIHtAbGluayBQb2ludGVyI3ZhbHVlfSBpcyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBJZiByZXNvbHZpbmcgdGhpcyB2YWx1ZSByZXF1aXJlZCByZXNvbHZpbmcgb3RoZXIgSlNPTiByZWZlcmVuY2VzLCB0aGVuXG4gKiB0aGUge0BsaW5rIFBvaW50ZXIjJHJlZn0gYW5kIHtAbGluayBQb2ludGVyI3BhdGh9IHdpbGwgcmVmbGVjdCB0aGUgcmVzb2x1dGlvbiBwYXRoXG4gKiBvZiB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cblBvaW50ZXIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAob2JqLCBvcHRpb25zKSB7XG4gIHZhciB0b2tlbnMgPSBQb2ludGVyLnBhcnNlKHRoaXMucGF0aCk7XG5cbiAgLy8gQ3Jhd2wgdGhlIG9iamVjdCwgb25lIHRva2VuIGF0IGEgdGltZVxuICB0aGlzLnZhbHVlID0gb2JqO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpKSB7XG4gICAgICAvLyBUaGUgJHJlZiBwYXRoIGhhcyBjaGFuZ2VkLCBzbyBhcHBlbmQgdGhlIHJlbWFpbmluZyB0b2tlbnMgdG8gdGhlIHBhdGhcbiAgICAgIHRoaXMucGF0aCA9IFBvaW50ZXIuam9pbih0aGlzLnBhdGgsIHRva2Vucy5zbGljZShpKSk7XG4gICAgfVxuXG4gICAgdmFyIHRva2VuID0gdG9rZW5zW2ldO1xuICAgIGlmICh0aGlzLnZhbHVlW3Rva2VuXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBvbm8uc3ludGF4KCdFcnJvciByZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuVG9rZW4gXCIlc1wiIGRvZXMgbm90IGV4aXN0LicsIHRoaXMub3JpZ2luYWxQYXRoLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWVbdG9rZW5dO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc29sdmUgdGhlIGZpbmFsIHZhbHVlXG4gIHJlc29sdmVJZiRSZWYodGhpcywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhlIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0geyp9IG9iaiAtIFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGNyYXdsZWRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gYXNzaWduXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMgeyp9XG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllZCBvYmplY3QsIG9yIGFuIGVudGlyZWx5IG5ldyBvYmplY3QgaWYgdGhlIGVudGlyZSBvYmplY3QgaXMgb3ZlcndyaXR0ZW4uXG4gKi9cblBvaW50ZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvYmosIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB0b2tlbnMgPSBQb2ludGVyLnBhcnNlKHRoaXMucGF0aCk7XG4gIHZhciB0b2tlbjtcblxuICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFRoZXJlIGFyZSBubyB0b2tlbnMsIHJlcGxhY2UgdGhlIGVudGlyZSBvYmplY3Qgd2l0aCB0aGUgbmV3IHZhbHVlXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIENyYXdsIHRoZSBvYmplY3QsIG9uZSB0b2tlbiBhdCBhIHRpbWVcbiAgdGhpcy52YWx1ZSA9IG9iajtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgcmVzb2x2ZUlmJFJlZih0aGlzLCBvcHRpb25zKTtcblxuICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWVbdG9rZW5dICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFRoZSB0b2tlbiBleGlzdHNcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlW3Rva2VuXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUaGUgdG9rZW4gZG9lc24ndCBleGlzdCwgc28gY3JlYXRlIGl0XG4gICAgICB0aGlzLnZhbHVlID0gc2V0VmFsdWUodGhpcywgdG9rZW4sIHt9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBmaW5hbCB0b2tlblxuICByZXNvbHZlSWYkUmVmKHRoaXMsIG9wdGlvbnMpO1xuICB0b2tlbiA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV07XG4gIHNldFZhbHVlKHRoaXMsIHRva2VuLCB2YWx1ZSk7XG5cbiAgLy8gUmV0dXJuIHRoZSB1cGRhdGVkIG9iamVjdFxuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYSBKU09OIHBvaW50ZXIgKG9yIGEgcGF0aCBjb250YWluaW5nIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoKVxuICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHBvaW50ZXIncyB0b2tlbnMuXG4gKiAoZS5nLiBcInNjaGVtYS5qc29uIy9kZWZpbml0aW9ucy9wZXJzb24vbmFtZVwiID0+IFtcImRlZmluaXRpb25zXCIsIFwicGVyc29uXCIsIFwibmFtZVwiXSlcbiAqXG4gKiBUaGUgcG9pbnRlciBpcyBwYXJzZWQgYWNjb3JkaW5nIHRvIFJGQyA2OTAxXG4gKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5MDEjc2VjdGlvbi0zfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nW119XG4gKi9cblBvaW50ZXIucGFyc2UgPSBmdW5jdGlvbiAocGF0aCkge1xuICAvLyBHZXQgdGhlIEpTT04gcG9pbnRlciBmcm9tIHRoZSBwYXRoJ3MgaGFzaFxuICB2YXIgcG9pbnRlciA9IHVybC5nZXRIYXNoKHBhdGgpLnN1YnN0cigxKTtcblxuICAvLyBJZiB0aGVyZSdzIG5vIHBvaW50ZXIsIHRoZW4gdGhlcmUgYXJlIG5vIHRva2VucyxcbiAgLy8gc28gcmV0dXJuIGFuIGVtcHR5IGFycmF5XG4gIGlmICghcG9pbnRlcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFNwbGl0IGludG8gYW4gYXJyYXlcbiAgcG9pbnRlciA9IHBvaW50ZXIuc3BsaXQoJy8nKTtcblxuICAvLyBEZWNvZGUgZWFjaCBwYXJ0LCBhY2NvcmRpbmcgdG8gUkZDIDY5MDFcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgcG9pbnRlcltpXSA9IGRlY29kZVVSSUNvbXBvbmVudChwb2ludGVyW2ldLnJlcGxhY2UoZXNjYXBlZFNsYXNoLCAnLycpLnJlcGxhY2UoZXNjYXBlZFRpbGRlLCAnficpKTtcbiAgfVxuXG4gIGlmIChwb2ludGVyWzBdICE9PSAnJykge1xuICAgIHRocm93IG9uby5zeW50YXgoJ0ludmFsaWQgJHJlZiBwb2ludGVyIFwiJXNcIi4gUG9pbnRlcnMgbXVzdCBiZWdpbiB3aXRoIFwiIy9cIicsIHBvaW50ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHBvaW50ZXIuc2xpY2UoMSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBKU09OIHBvaW50ZXIgcGF0aCwgYnkgam9pbmluZyBvbmUgb3IgbW9yZSB0b2tlbnMgdG8gYSBiYXNlIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2UgLSBUaGUgYmFzZSBwYXRoIChlLmcuIFwic2NoZW1hLmpzb24jL2RlZmluaXRpb25zL3BlcnNvblwiKVxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IHRva2VucyAtIFRoZSB0b2tlbihzKSB0byBhcHBlbmQgKGUuZy4gW1wibmFtZVwiLCBcImZpcnN0XCJdKVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuUG9pbnRlci5qb2luID0gZnVuY3Rpb24gKGJhc2UsIHRva2Vucykge1xuICAvLyBFbnN1cmUgdGhhdCB0aGUgYmFzZSBwYXRoIGNvbnRhaW5zIGEgaGFzaFxuICBpZiAoYmFzZS5pbmRleE9mKCcjJykgPT09IC0xKSB7XG4gICAgYmFzZSArPSAnIyc7XG4gIH1cblxuICAvLyBBcHBlbmQgZWFjaCB0b2tlbiB0byB0aGUgYmFzZSBwYXRoXG4gIHRva2VucyA9IEFycmF5LmlzQXJyYXkodG9rZW5zKSA/IHRva2VucyA6IFt0b2tlbnNdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAvLyBFbmNvZGUgdGhlIHRva2VuLCBhY2NvcmRpbmcgdG8gUkZDIDY5MDFcbiAgICBiYXNlICs9ICcvJyArIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbi5yZXBsYWNlKHRpbGRlcywgJ34wJykucmVwbGFjZShzbGFzaGVzLCAnfjEnKSk7XG4gIH1cblxuICByZXR1cm4gYmFzZTtcbn07XG5cbi8qKlxuICogSWYgdGhlIGdpdmVuIHBvaW50ZXIncyB7QGxpbmsgUG9pbnRlciN2YWx1ZX0gaXMgYSBKU09OIHJlZmVyZW5jZSxcbiAqIHRoZW4gdGhlIHJlZmVyZW5jZSBpcyByZXNvbHZlZCBhbmQge0BsaW5rIFBvaW50ZXIjdmFsdWV9IGlzIHJlcGxhY2VkIHdpdGggdGhlIHJlc29sdmVkIHZhbHVlLlxuICogSW4gYWRkaXRpb24sIHtAbGluayBQb2ludGVyI3BhdGh9IGFuZCB7QGxpbmsgUG9pbnRlciMkcmVmfSBhcmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZVxuICogcmVzb2x1dGlvbiBwYXRoIG9mIHRoZSBuZXcgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtQb2ludGVyfSBwb2ludGVyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVzb2x1dGlvbiBwYXRoIGNoYW5nZWRcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUlmJFJlZiAocG9pbnRlciwgb3B0aW9ucykge1xuICAvLyBJcyB0aGUgdmFsdWUgYSBKU09OIHJlZmVyZW5jZT8gKGFuZCBhbGxvd2VkPylcblxuICBpZiAoJFJlZi5pc0FsbG93ZWQkUmVmKHBvaW50ZXIudmFsdWUsIG9wdGlvbnMpKSB7XG4gICAgdmFyICRyZWZQYXRoID0gdXJsLnJlc29sdmUocG9pbnRlci5wYXRoLCBwb2ludGVyLnZhbHVlLiRyZWYpO1xuXG4gICAgaWYgKCRyZWZQYXRoID09PSBwb2ludGVyLnBhdGgpIHtcbiAgICAgIC8vIFRoZSB2YWx1ZSBpcyBhIHJlZmVyZW5jZSB0byBpdHNlbGYsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkby5cbiAgICAgIHBvaW50ZXIuY2lyY3VsYXIgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciByZXNvbHZlZCA9IHBvaW50ZXIuJHJlZi4kcmVmcy5fcmVzb2x2ZSgkcmVmUGF0aCwgb3B0aW9ucyk7XG4gICAgICBwb2ludGVyLmluZGlyZWN0aW9ucyArPSByZXNvbHZlZC5pbmRpcmVjdGlvbnMgKyAxO1xuXG4gICAgICBpZiAoJFJlZi5pc0V4dGVuZGVkJFJlZihwb2ludGVyLnZhbHVlKSkge1xuICAgICAgICAvLyBUaGlzIEpTT04gcmVmZXJlbmNlIFwiZXh0ZW5kc1wiIHRoZSByZXNvbHZlZCB2YWx1ZSwgcmF0aGVyIHRoYW4gc2ltcGx5IHBvaW50aW5nIHRvIGl0LlxuICAgICAgICAvLyBTbyB0aGUgcmVzb2x2ZWQgcGF0aCBkb2VzIE5PVCBjaGFuZ2UuICBKdXN0IHRoZSB2YWx1ZSBkb2VzLlxuICAgICAgICBwb2ludGVyLnZhbHVlID0gJFJlZi5kZXJlZmVyZW5jZShwb2ludGVyLnZhbHVlLCByZXNvbHZlZC52YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSByZWZlcmVuY2VcbiAgICAgICAgcG9pbnRlci4kcmVmID0gcmVzb2x2ZWQuJHJlZjtcbiAgICAgICAgcG9pbnRlci5wYXRoID0gcmVzb2x2ZWQucGF0aDtcbiAgICAgICAgcG9pbnRlci52YWx1ZSA9IHJlc29sdmVkLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzcGVjaWZpZWQgdG9rZW4gdmFsdWUgb2YgdGhlIHtAbGluayBQb2ludGVyI3ZhbHVlfS5cbiAqXG4gKiBUaGUgdG9rZW4gaXMgZXZhbHVhdGVkIGFjY29yZGluZyB0byBSRkMgNjkwMS5cbiAqIHtAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjkwMSNzZWN0aW9uLTR9XG4gKlxuICogQHBhcmFtIHtQb2ludGVyfSBwb2ludGVyIC0gVGhlIEpTT04gUG9pbnRlciB3aG9zZSB2YWx1ZSB3aWxsIGJlIG1vZGlmaWVkXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSBBIEpTT04gUG9pbnRlciB0b2tlbiB0aGF0IGluZGljYXRlcyBob3cgdG8gbW9kaWZ5IGBvYmpgXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFzc2lnblxuICogQHJldHVybnMgeyp9IC0gUmV0dXJucyB0aGUgYXNzaWduZWQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gc2V0VmFsdWUgKHBvaW50ZXIsIHRva2VuLCB2YWx1ZSkge1xuICBpZiAocG9pbnRlci52YWx1ZSAmJiB0eXBlb2YgcG9pbnRlci52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAodG9rZW4gPT09ICctJyAmJiBBcnJheS5pc0FycmF5KHBvaW50ZXIudmFsdWUpKSB7XG4gICAgICBwb2ludGVyLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHBvaW50ZXIudmFsdWVbdG9rZW5dID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG9uby5zeW50YXgoJ0Vycm9yIGFzc2lnbmluZyAkcmVmIHBvaW50ZXIgXCIlc1wiLiBcXG5DYW5ub3Qgc2V0IFwiJXNcIiBvZiBhIG5vbi1vYmplY3QuJywgcG9pbnRlci5wYXRoLCB0b2tlbik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRSZWY7XG5cbnZhciBQb2ludGVyID0gcmVxdWlyZSgnLi9wb2ludGVyJyk7XG5cbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIEpTT04gcmVmZXJlbmNlIGFuZCBpdHMgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uICRSZWYgKCkge1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZS5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXRoIG9mIHRoZSBtYWluIEpTT04gc2NoZW1hIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgcGF0aCBkb2VzIE5PVCBjb250YWluIGRvY3VtZW50IGZyYWdtZW50cyAoSlNPTiBwb2ludGVycykuIEl0IGFsd2F5cyByZWZlcmVuY2VzIGFuIEVOVElSRSBmaWxlLlxuICAgKiBVc2UgbWV0aG9kcyBzdWNoIGFzIHtAbGluayAkUmVmI2dldH0sIHtAbGluayAkUmVmI3Jlc29sdmV9LCBhbmQge0BsaW5rICRSZWYjZXhpc3RzfSB0byBnZXRcbiAgICogc3BlY2lmaWMgSlNPTiBwb2ludGVycyB3aXRoaW4gdGhlIGZpbGUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLnBhdGggPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCB2YWx1ZSBvZiB0aGUgSlNPTiByZWZlcmVuY2UuXG4gICAqIENhbiBiZSBhbnkgSlNPTiB0eXBlLCBub3QganVzdCBvYmplY3RzLiBVbmtub3duIGZpbGUgdHlwZXMgYXJlIHJlcHJlc2VudGVkIGFzIEJ1ZmZlcnMgKGJ5dGUgYXJyYXlzKS5cbiAgICogQHR5cGUgez8qfVxuICAgKi9cbiAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHtAbGluayAkUmVmc30gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhpcyB7QGxpbmsgJFJlZn0gb2JqZWN0LlxuICAgKiBAdHlwZSB7JFJlZnN9XG4gICAqL1xuICB0aGlzLiRyZWZzID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2Yge0BsaW5rICRSZWYjcGF0aH0gKGUuZy4gXCJmaWxlXCIsIFwiaHR0cFwiLCBldGMuKVxuICAgKiBAdHlwZSB7P3N0cmluZ31cbiAgICovXG4gIHRoaXMucGF0aFR5cGUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBleGlzdHMgd2l0aGluIHRoaXMge0BsaW5rICRSZWYjdmFsdWV9LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLnJlc29sdmUocGF0aCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlIHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfSBhbmQgcmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlXG4gKi9cbiRSZWYucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmUocGF0aCwgb3B0aW9ucykudmFsdWU7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IG9wdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZnJpZW5kbHlQYXRoXSAtIFRoZSBvcmlnaW5hbCB1c2VyLXNwZWNpZmllZCBwYXRoICh1c2VkIGZvciBlcnJvciBtZXNzYWdlcylcbiAqIEByZXR1cm5zIHtQb2ludGVyfVxuICovXG4kUmVmLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMsIGZyaWVuZGx5UGF0aCkge1xuICB2YXIgcG9pbnRlciA9IG5ldyBQb2ludGVyKHRoaXMsIHBhdGgsIGZyaWVuZGx5UGF0aCk7XG4gIHJldHVybiBwb2ludGVyLnJlc29sdmUodGhpcy52YWx1ZSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IHdpdGhpbiB0aGlzIHtAbGluayAkUmVmI3ZhbHVlfS5cbiAqIElmIHRoZSBwcm9wZXJ0eSwgb3IgYW55IG9mIGl0cyBwYXJlbnRzIGRvbid0IGV4aXN0LCB0aGV5IHdpbGwgYmUgY3JlYXRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBmdWxsIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFzc2lnblxuICovXG4kUmVmLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocGF0aCwgdmFsdWUpIHtcbiAgdmFyIHBvaW50ZXIgPSBuZXcgUG9pbnRlcih0aGlzLCBwYXRoKTtcbiAgdGhpcy52YWx1ZSA9IHBvaW50ZXIuc2V0KHRoaXMudmFsdWUsIHZhbHVlKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEpTT04gcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXMkUmVmID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS4kcmVmID09PSAnc3RyaW5nJyAmJiB2YWx1ZS4kcmVmLmxlbmd0aCA+IDA7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gZXh0ZXJuYWwgSlNPTiByZWZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBpbnNwZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuJFJlZi5pc0V4dGVybmFsJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gJFJlZi5pcyRSZWYodmFsdWUpICYmIHZhbHVlLiRyZWZbMF0gIT09ICcjJztcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEpTT04gcmVmZXJlbmNlLCBhbmQgd2hldGhlciBpdCBpcyBhbGxvd2VkIGJ5IHRoZSBvcHRpb25zLlxuICogRm9yIGV4YW1wbGUsIGlmIGl0IHJlZmVyZW5jZXMgYW4gZXh0ZXJuYWwgZmlsZSwgdGhlbiBvcHRpb25zLnJlc29sdmUuZXh0ZXJuYWwgbXVzdCBiZSB0cnVlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gaW5zcGVjdFxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbiRSZWYuaXNBbGxvd2VkJFJlZiA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoJFJlZi5pcyRSZWYodmFsdWUpKSB7XG4gICAgaWYgKHZhbHVlLiRyZWYuc3Vic3RyKDAsIDIpID09PSAnIy8nIHx8IHZhbHVlLiRyZWYgPT09ICcjJykge1xuICAgICAgLy8gSXQncyBhIEpTT04gUG9pbnRlciByZWZlcmVuY2UsIHdoaWNoIGlzIGFsd2F5cyBhbGxvd2VkXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUuJHJlZlswXSAhPT0gJyMnICYmICghb3B0aW9ucyB8fCBvcHRpb25zLnJlc29sdmUuZXh0ZXJuYWwpKSB7XG4gICAgICAvLyBJdCdzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSwgd2hpY2ggaXMgYWxsb3dlZCBieSB0aGUgb3B0aW9uc1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBKU09OIHJlZmVyZW5jZSB0aGF0IFwiZXh0ZW5kc1wiIGl0cyByZXNvbHZlZCB2YWx1ZS5cbiAqIFRoYXQgaXMsIGl0IGhhcyBleHRyYSBwcm9wZXJ0aWVzIChpbiBhZGRpdGlvbiB0byBcIiRyZWZcIiksIHNvIHJhdGhlciB0aGFuIHNpbXBseSBwb2ludGluZyB0b1xuICogYW4gZXhpc3RpbmcgdmFsdWUsIHRoaXMgJHJlZiBhY3R1YWxseSBjcmVhdGVzIGEgTkVXIHZhbHVlIHRoYXQgaXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHJlc29sdmVkXG4gKiB2YWx1ZSwgcGx1cyB0aGUgZXh0cmEgcHJvcGVydGllcy5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqICB7XG4gKiAgICBwZXJzb246IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICAgIGVtcGxveWVlOiB7XG4gKiAgICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgICAkcmVmOiAjL3BlcnNvbi9wcm9wZXJ0aWVzXG4gKiAgICAgICAgc2FsYXJ5OiB7IHR5cGU6IG51bWJlciB9XG4gKiAgICAgIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogIEluIHRoaXMgZXhhbXBsZSwgXCJlbXBsb3llZVwiIGlzIGFuIGV4dGVuZGVkICRyZWYsIHNpbmNlIGl0IGV4dGVuZHMgXCJwZXJzb25cIiB3aXRoIGFuIGFkZGl0aW9uYWxcbiAqICBwcm9wZXJ0eSAoc2FsYXJ5KS4gIFRoZSByZXN1bHQgaXMgYSBORVcgdmFsdWUgdGhhdCBsb29rcyBsaWtlIHRoaXM6XG4gKlxuICogIHtcbiAqICAgIHByb3BlcnRpZXM6IHtcbiAqICAgICAgZmlyc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIGxhc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgIHNhbGFyeTogeyB0eXBlOiBudW1iZXIgfVxuICogICAgfVxuICogIH1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGluc3BlY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG4kUmVmLmlzRXh0ZW5kZWQkUmVmID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiAkUmVmLmlzJFJlZih2YWx1ZSkgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDE7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlIG9mIGEgSlNPTiBSZWZlcmVuY2UuXG4gKiBJZiBuZWNlc3NhcnksIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBtZXJnZWQgd2l0aCB0aGUgSlNPTiBSZWZlcmVuY2UgdG8gY3JlYXRlIGEgbmV3IG9iamVjdFxuICpcbiAqIEBleGFtcGxlOlxuICogIHtcbiAqICAgIHBlcnNvbjoge1xuICogICAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgICAgZmlyc3ROYW1lOiB7IHR5cGU6IHN0cmluZyB9XG4gKiAgICAgICAgbGFzdE5hbWU6IHsgdHlwZTogc3RyaW5nIH1cbiAqICAgICAgfVxuICogICAgfVxuICogICAgZW1wbG95ZWU6IHtcbiAqICAgICAgcHJvcGVydGllczoge1xuICogICAgICAgICRyZWY6ICMvcGVyc29uL3Byb3BlcnRpZXNcbiAqICAgICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgICAgfVxuICogICAgfVxuICogIH1cbiAqXG4gKiAgV2hlbiBcInBlcnNvblwiIGFuZCBcImVtcGxveWVlXCIgYXJlIG1lcmdlZCwgeW91IGVuZCB1cCB3aXRoIHRoZSBmb2xsb3dpbmcgb2JqZWN0OlxuICpcbiAqICB7XG4gKiAgICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgIGZpcnN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBsYXN0TmFtZTogeyB0eXBlOiBzdHJpbmcgfVxuICogICAgICBzYWxhcnk6IHsgdHlwZTogbnVtYmVyIH1cbiAqICAgIH1cbiAqICB9XG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICRyZWYgLSBUaGUgSlNPTiByZWZlcmVuY2Ugb2JqZWN0ICh0aGUgb25lIHdpdGggdGhlIFwiJHJlZlwiIHByb3BlcnR5KVxuICogQHBhcmFtIHsqfSByZXNvbHZlZFZhbHVlIC0gVGhlIHJlc29sdmVkIHZhbHVlLCB3aGljaCBjYW4gYmUgYW55IHR5cGVcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZVxuICovXG4kUmVmLmRlcmVmZXJlbmNlID0gZnVuY3Rpb24gKCRyZWYsIHJlc29sdmVkVmFsdWUpIHtcbiAgaWYgKHJlc29sdmVkVmFsdWUgJiYgdHlwZW9mIHJlc29sdmVkVmFsdWUgPT09ICdvYmplY3QnICYmICRSZWYuaXNFeHRlbmRlZCRSZWYoJHJlZikpIHtcbiAgICB2YXIgbWVyZ2VkID0ge307XG4gICAgT2JqZWN0LmtleXMoJHJlZikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoa2V5ICE9PSAnJHJlZicpIHtcbiAgICAgICAgbWVyZ2VkW2tleV0gPSAkcmVmW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXMocmVzb2x2ZWRWYWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoIShrZXkgaW4gbWVyZ2VkKSkge1xuICAgICAgICBtZXJnZWRba2V5XSA9IHJlc29sdmVkVmFsdWVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9XG4gIGVsc2Uge1xuICAgIC8vIENvbXBsZXRlbHkgcmVwbGFjZSB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIHdpdGggdGhlIHJlc29sdmVkIHZhbHVlXG4gICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgb25vID0gcmVxdWlyZSgnb25vJyksXHJcbiAgICAkUmVmID0gcmVxdWlyZSgnLi9yZWYnKSxcclxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gJFJlZnM7XHJcblxyXG4vKipcclxuICogVGhpcyBjbGFzcyBpcyBhIG1hcCBvZiBKU09OIHJlZmVyZW5jZXMgYW5kIHRoZWlyIHJlc29sdmVkIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uICRSZWZzICgpIHtcclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc2NoZW1hIGNvbnRhaW5zIGFueSBjaXJjdWxhciByZWZlcmVuY2VzLlxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICovXHJcbiAgdGhpcy5jaXJjdWxhciA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBIG1hcCBvZiBwYXRocy91cmxzIHRvIHtAbGluayAkUmVmfSBvYmplY3RzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7b2JqZWN0fVxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICB0aGlzLl8kcmVmcyA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUge0BsaW5rICRSZWZ9IG9iamVjdCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBKU09OIHNjaGVtYS5cclxuICAgKlxyXG4gICAqIEB0eXBlIHskUmVmfVxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKi9cclxuICB0aGlzLl9yb290JFJlZiA9IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBwYXRocyBvZiBhbGwgdGhlIGZpbGVzL1VSTHMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSB0aGUgSlNPTiBzY2hlbWEsXHJcbiAqIGluY2x1ZGluZyB0aGUgc2NoZW1hIGl0c2VsZi5cclxuICpcclxuICogQHBhcmFtIHsuLi5zdHJpbmd8c3RyaW5nW119IFt0eXBlc10gLSBPbmx5IHJldHVybiBwYXRocyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge3N0cmluZ1tdfVxyXG4gKi9cclxuJFJlZnMucHJvdG90eXBlLnBhdGhzID0gZnVuY3Rpb24gKHR5cGVzKSB7XHJcbiAgdmFyIHBhdGhzID0gZ2V0UGF0aHModGhpcy5fJHJlZnMsIGFyZ3VtZW50cyk7XHJcbiAgcmV0dXJuIHBhdGhzLm1hcChmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgcmV0dXJuIHBhdGguZGVjb2RlZDtcclxuICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBtYXAgb2YgSlNPTiByZWZlcmVuY2VzIGFuZCB0aGVpciByZXNvbHZlZCB2YWx1ZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfHN0cmluZ1tdfSBbdHlwZXNdIC0gT25seSByZXR1cm4gcmVmZXJlbmNlcyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge29iamVjdH1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAodHlwZXMpIHtcclxuICB2YXIgJHJlZnMgPSB0aGlzLl8kcmVmcztcclxuICB2YXIgcGF0aHMgPSBnZXRQYXRocygkcmVmcywgYXJndW1lbnRzKTtcclxuICByZXR1cm4gcGF0aHMucmVkdWNlKGZ1bmN0aW9uIChvYmosIHBhdGgpIHtcclxuICAgIG9ialtwYXRoLmRlY29kZWRdID0gJHJlZnNbcGF0aC5lbmNvZGVkXS52YWx1ZTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBQT0pPIChwbGFpbiBvbGQgSmF2YVNjcmlwdCBvYmplY3QpIGZvciBzZXJpYWxpemF0aW9uIGFzIEpTT04uXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtvYmplY3R9XHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUudG9KU09OID0gJFJlZnMucHJvdG90eXBlLnZhbHVlcztcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIEpTT04gcmVmZXJlbmNlIGV4aXN0cy5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBiZWluZyByZXNvbHZlZCwgb3B0aW9uYWxseSB3aXRoIGEgSlNPTiBwb2ludGVyIGluIHRoZSBoYXNoXHJcbiAqIEBwYXJhbSB7JFJlZlBhcnNlck9wdGlvbnN9IFtvcHRpb25zXVxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbiAocGF0aCwgb3B0aW9ucykge1xyXG4gIHRyeSB7XHJcbiAgICB0aGlzLl9yZXNvbHZlKHBhdGgsIG9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGNhdGNoIChlKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlc29sdmVzIHRoZSBnaXZlbiBKU09OIHJlZmVyZW5jZSBhbmQgcmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gW29wdGlvbnNdXHJcbiAqIEByZXR1cm5zIHsqfSAtIFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMpIHtcclxuICByZXR1cm4gdGhpcy5fcmVzb2x2ZShwYXRoLCBvcHRpb25zKS52YWx1ZTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSB3aXRoaW4gdGhpcyB7QGxpbmsgJFJlZiN2YWx1ZX0uXHJcbiAqIElmIHRoZSBwcm9wZXJ0eSwgb3IgYW55IG9mIGl0cyBwYXJlbnRzIGRvbid0IGV4aXN0LCB0aGV5IHdpbGwgYmUgY3JlYXRlZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ25cclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocGF0aCwgdmFsdWUpIHtcclxuICB2YXIgYWJzUGF0aCA9IHVybC5yZXNvbHZlKHRoaXMuX3Jvb3QkUmVmLnBhdGgsIHBhdGgpO1xyXG4gIHZhciB3aXRob3V0SGFzaCA9IHVybC5zdHJpcEhhc2goYWJzUGF0aCk7XHJcbiAgdmFyICRyZWYgPSB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF07XHJcblxyXG4gIGlmICghJHJlZikge1xyXG4gICAgdGhyb3cgb25vKCdFcnJvciByZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIi4gXFxuXCIlc1wiIG5vdCBmb3VuZC4nLCBwYXRoLCB3aXRob3V0SGFzaCk7XHJcbiAgfVxyXG5cclxuICAkcmVmLnNldChhYnNQYXRoLCB2YWx1ZSk7XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgJFJlZn0gb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoaXMge0BsaW5rICRSZWZzfSBvYmplY3QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoICAtIFRoZSBmaWxlIHBhdGggb3IgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24gKHBhdGgpIHtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHBhdGgpO1xyXG5cclxuICB2YXIgJHJlZiA9IG5ldyAkUmVmKCk7XHJcbiAgJHJlZi5wYXRoID0gd2l0aG91dEhhc2g7XHJcbiAgJHJlZi4kcmVmcyA9IHRoaXM7XHJcblxyXG4gIHRoaXMuXyRyZWZzW3dpdGhvdXRIYXNoXSA9ICRyZWY7XHJcbiAgdGhpcy5fcm9vdCRSZWYgPSB0aGlzLl9yb290JFJlZiB8fCAkcmVmO1xyXG5cclxuICByZXR1cm4gJHJlZjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB0aGUgZ2l2ZW4gSlNPTiByZWZlcmVuY2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggYmVpbmcgcmVzb2x2ZWQsIG9wdGlvbmFsbHkgd2l0aCBhIEpTT04gcG9pbnRlciBpbiB0aGUgaGFzaFxyXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBbb3B0aW9uc11cclxuICogQHJldHVybnMge1BvaW50ZXJ9XHJcbiAqIEBwcm90ZWN0ZWRcclxuICovXHJcbiRSZWZzLnByb3RvdHlwZS5fcmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zKSB7XHJcbiAgdmFyIGFic1BhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKGFic1BhdGgpO1xyXG4gIHZhciAkcmVmID0gdGhpcy5fJHJlZnNbd2l0aG91dEhhc2hdO1xyXG5cclxuICBpZiAoISRyZWYpIHtcclxuICAgIHRocm93IG9ubygnRXJyb3IgcmVzb2x2aW5nICRyZWYgcG9pbnRlciBcIiVzXCIuIFxcblwiJXNcIiBub3QgZm91bmQuJywgcGF0aCwgd2l0aG91dEhhc2gpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuICRyZWYucmVzb2x2ZShhYnNQYXRoLCBvcHRpb25zLCBwYXRoKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQge0BsaW5rICRSZWZ9IG9iamVjdCwgb3IgdW5kZWZpbmVkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGJlaW5nIHJlc29sdmVkLCBvcHRpb25hbGx5IHdpdGggYSBKU09OIHBvaW50ZXIgaW4gdGhlIGhhc2hcclxuICogQHJldHVybnMgeyRSZWZ8dW5kZWZpbmVkfVxyXG4gKiBAcHJvdGVjdGVkXHJcbiAqL1xyXG4kUmVmcy5wcm90b3R5cGUuX2dldCRSZWYgPSBmdW5jdGlvbiAocGF0aCkge1xyXG4gIHBhdGggPSB1cmwucmVzb2x2ZSh0aGlzLl9yb290JFJlZi5wYXRoLCBwYXRoKTtcclxuICB2YXIgd2l0aG91dEhhc2ggPSB1cmwuc3RyaXBIYXNoKHBhdGgpO1xyXG4gIHJldHVybiB0aGlzLl8kcmVmc1t3aXRob3V0SGFzaF07XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRocyBrZXlzIG9mIHRoZSBnaXZlbiBvYmplY3QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSAkcmVmcyAtIFRoZSBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgVVJMLWVuY29kZWQgcGF0aHNcclxuICogQHBhcmFtIHsuLi5zdHJpbmd8c3RyaW5nW119IFt0eXBlc10gLSBPbmx5IHJldHVybiBwYXRocyBvZiB0aGUgZ2l2ZW4gdHlwZXMgKFwiZmlsZVwiLCBcImh0dHBcIiwgZXRjLilcclxuICogQHJldHVybnMge29iamVjdFtdfVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0aHMgKCRyZWZzLCB0eXBlcykge1xyXG4gIHZhciBwYXRocyA9IE9iamVjdC5rZXlzKCRyZWZzKTtcclxuXHJcbiAgLy8gRmlsdGVyIHRoZSBwYXRocyBieSB0eXBlXHJcbiAgdHlwZXMgPSBBcnJheS5pc0FycmF5KHR5cGVzWzBdKSA/IHR5cGVzWzBdIDogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodHlwZXMpO1xyXG4gIGlmICh0eXBlcy5sZW5ndGggPiAwICYmIHR5cGVzWzBdKSB7XHJcbiAgICBwYXRocyA9IHBhdGhzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgIHJldHVybiB0eXBlcy5pbmRleE9mKCRyZWZzW2tleV0ucGF0aFR5cGUpICE9PSAtMTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gRGVjb2RlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHNcclxuICByZXR1cm4gcGF0aHMubWFwKGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbmNvZGVkOiBwYXRoLFxyXG4gICAgICBkZWNvZGVkOiAkcmVmc1twYXRoXS5wYXRoVHlwZSA9PT0gJ2ZpbGUnID8gdXJsLnRvRmlsZVN5c3RlbVBhdGgocGF0aCwgdHJ1ZSkgOiBwYXRoXHJcbiAgICB9O1xyXG4gIH0pO1xyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICRSZWYgPSByZXF1aXJlKCcuL3JlZicpLFxuICAgIFBvaW50ZXIgPSByZXF1aXJlKCcuL3BvaW50ZXInKSxcbiAgICBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKSxcbiAgICBkZWJ1ZyA9IHJlcXVpcmUoJy4vdXRpbC9kZWJ1ZycpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4vdXRpbC91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlRXh0ZXJuYWw7XG5cbi8qKlxuICogQ3Jhd2xzIHRoZSBKU09OIHNjaGVtYSwgZmluZHMgYWxsIGV4dGVybmFsIEpTT04gcmVmZXJlbmNlcywgYW5kIHJlc29sdmVzIHRoZWlyIHZhbHVlcy5cbiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IG11dGF0ZSB0aGUgSlNPTiBzY2hlbWEuIFRoZSByZXNvbHZlZCB2YWx1ZXMgYXJlIGFkZGVkIHRvIHtAbGluayAkUmVmUGFyc2VyIyRyZWZzfS5cbiAqXG4gKiBOT1RFOiBXZSBvbmx5IGNhcmUgYWJvdXQgRVhURVJOQUwgcmVmZXJlbmNlcyBoZXJlLiBJTlRFUk5BTCByZWZlcmVuY2VzIGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gZGVyZWZlcmVuY2luZy5cbiAqXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJ9IHBhcnNlclxuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgb25jZSBhbGwgSlNPTiByZWZlcmVuY2VzIGluIHRoZSBzY2hlbWEgaGF2ZSBiZWVuIHJlc29sdmVkLFxuICogaW5jbHVkaW5nIG5lc3RlZCByZWZlcmVuY2VzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBleHRlcm5hbGx5LXJlZmVyZW5jZWQgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVFeHRlcm5hbCAocGFyc2VyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5yZXNvbHZlLmV4dGVybmFsKSB7XG4gICAgLy8gTm90aGluZyB0byByZXNvbHZlLCBzbyBleGl0IGVhcmx5XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBkZWJ1ZygnUmVzb2x2aW5nICRyZWYgcG9pbnRlcnMgaW4gJXMnLCBwYXJzZXIuJHJlZnMuX3Jvb3QkUmVmLnBhdGgpO1xuICAgIHZhciBwcm9taXNlcyA9IGNyYXdsKHBhcnNlci5zY2hlbWEsIHBhcnNlci4kcmVmcy5fcm9vdCRSZWYucGF0aCArICcjJywgcGFyc2VyLiRyZWZzLCBvcHRpb25zKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY3Jhd2xzIHRoZSBnaXZlbiB2YWx1ZSwgYW5kIHJlc29sdmVzIGFueSBleHRlcm5hbCBKU09OIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogLSBUaGUgdmFsdWUgdG8gY3Jhd2wuIElmIGl0J3Mgbm90IGFuIG9iamVjdCBvciBhcnJheSwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgZnVsbCBwYXRoIG9mIGBvYmpgLCBwb3NzaWJseSB3aXRoIGEgSlNPTiBQb2ludGVyIGluIHRoZSBoYXNoXG4gKiBAcGFyYW0geyRSZWZzfSAkcmVmc1xuICogQHBhcmFtIHskUmVmUGFyc2VyT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlW119XG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIHByb21pc2VzLiBUaGVyZSB3aWxsIGJlIG9uZSBwcm9taXNlIGZvciBlYWNoIEpTT04gcmVmZXJlbmNlIGluIGBvYmpgLlxuICogSWYgYG9iamAgZG9lcyBub3QgY29udGFpbiBhbnkgSlNPTiByZWZlcmVuY2VzLCB0aGVuIHRoZSBhcnJheSB3aWxsIGJlIGVtcHR5LlxuICogSWYgYW55IG9mIHRoZSBKU09OIHJlZmVyZW5jZXMgcG9pbnQgdG8gZmlsZXMgdGhhdCBjb250YWluIGFkZGl0aW9uYWwgSlNPTiByZWZlcmVuY2VzLFxuICogdGhlbiB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlIHdpbGwgaW50ZXJuYWxseSByZWZlcmVuY2UgYW4gYXJyYXkgb2YgcHJvbWlzZXMuXG4gKi9cbmZ1bmN0aW9uIGNyYXdsIChvYmosIHBhdGgsICRyZWZzLCBvcHRpb25zKSB7XG4gIHZhciBwcm9taXNlcyA9IFtdO1xuXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoJFJlZi5pc0V4dGVybmFsJFJlZihvYmopKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKHJlc29sdmUkUmVmKG9iaiwgcGF0aCwgJHJlZnMsIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIga2V5UGF0aCA9IFBvaW50ZXIuam9pbihwYXRoLCBrZXkpO1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgICAgICBpZiAoJFJlZi5pc0V4dGVybmFsJFJlZih2YWx1ZSkpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlc29sdmUkUmVmKHZhbHVlLCBrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHByb21pc2VzID0gcHJvbWlzZXMuY29uY2F0KGNyYXdsKHZhbHVlLCBrZXlQYXRoLCAkcmVmcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZXM7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGdpdmVuIEpTT04gUmVmZXJlbmNlLCBhbmQgdGhlbiBjcmF3bHMgdGhlIHJlc3VsdGluZyB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge3skcmVmOiBzdHJpbmd9fSAkcmVmIC0gVGhlIEpTT04gUmVmZXJlbmNlIHRvIHJlc29sdmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgcGF0aCBvZiBgJHJlZmAsIHBvc3NpYmx5IHdpdGggYSBKU09OIFBvaW50ZXIgaW4gdGhlIGhhc2hcbiAqIEBwYXJhbSB7JFJlZnN9ICRyZWZzXG4gKiBAcGFyYW0geyRSZWZQYXJzZXJPcHRpb25zfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyBvbmNlIGFsbCBKU09OIHJlZmVyZW5jZXMgaW4gdGhlIG9iamVjdCBoYXZlIGJlZW4gcmVzb2x2ZWQsXG4gKiBpbmNsdWRpbmcgbmVzdGVkIHJlZmVyZW5jZXMgdGhhdCBhcmUgY29udGFpbmVkIGluIGV4dGVybmFsbHktcmVmZXJlbmNlZCBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZSRSZWYgKCRyZWYsIHBhdGgsICRyZWZzLCBvcHRpb25zKSB7XG4gIGRlYnVnKCdSZXNvbHZpbmcgJHJlZiBwb2ludGVyIFwiJXNcIiBhdCAlcycsICRyZWYuJHJlZiwgcGF0aCk7XG5cbiAgdmFyIHJlc29sdmVkUGF0aCA9IHVybC5yZXNvbHZlKHBhdGgsICRyZWYuJHJlZik7XG4gIHZhciB3aXRob3V0SGFzaCA9IHVybC5zdHJpcEhhc2gocmVzb2x2ZWRQYXRoKTtcblxuICAvLyBEbyB3ZSBhbHJlYWR5IGhhdmUgdGhpcyAkcmVmP1xuICAkcmVmID0gJHJlZnMuXyRyZWZzW3dpdGhvdXRIYXNoXTtcbiAgaWYgKCRyZWYpIHtcbiAgICAvLyBXZSd2ZSBhbHJlYWR5IHBhcnNlZCB0aGlzICRyZWYsIHNvIHVzZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCRyZWYudmFsdWUpO1xuICB9XG5cbiAgLy8gUGFyc2UgdGhlICRyZWZlcmVuY2VkIGZpbGUvdXJsXG4gIHJldHVybiBwYXJzZShyZXNvbHZlZFBhdGgsICRyZWZzLCBvcHRpb25zKVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIC8vIENyYXdsIHRoZSBwYXJzZWQgdmFsdWVcbiAgICAgIGRlYnVnKCdSZXNvbHZpbmcgJHJlZiBwb2ludGVycyBpbiAlcycsIHdpdGhvdXRIYXNoKTtcbiAgICAgIHZhciBwcm9taXNlcyA9IGNyYXdsKHJlc3VsdCwgd2l0aG91dEhhc2ggKyAnIycsICRyZWZzLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpLFxuICAgIG9ubyA9IHJlcXVpcmUoJ29ubycpLFxuICAgIHVybCA9IHJlcXVpcmUoJy4uL3V0aWwvdXJsJyksXG4gICAgZGVidWcgPSByZXF1aXJlKCcuLi91dGlsL2RlYnVnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogVGhlIG9yZGVyIHRoYXQgdGhpcyByZXNvbHZlciB3aWxsIHJ1biwgaW4gcmVsYXRpb24gdG8gb3RoZXIgcmVzb2x2ZXJzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgb3JkZXI6IDEwMCxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgcmVzb2x2ZXIgY2FuIHJlYWQgYSBnaXZlbiBmaWxlIHJlZmVyZW5jZS5cbiAgICogUmVzb2x2ZXJzIHRoYXQgcmV0dXJuIHRydWUgd2lsbCBiZSB0cmllZCwgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZXMgdGhlIGZpbGUuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIG5vdCBiZSBnaXZlbiBhIGNoYW5jZSB0byByZXNvbHZlIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUmVhZDogZnVuY3Rpb24gaXNGaWxlIChmaWxlKSB7XG4gICAgcmV0dXJuIHVybC5pc0ZpbGVTeXN0ZW1QYXRoKGZpbGUudXJsKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIGdpdmVuIGZpbGUgYW5kIHJldHVybnMgaXRzIHJhdyBjb250ZW50cyBhcyBhIEJ1ZmZlci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbGUgICAgICAgICAgIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS51cmwgICAgICAgLSBUaGUgZnVsbCBVUkwgb2YgdGhlIHJlZmVyZW5jZWQgZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZS5leHRlbnNpb24gLSBUaGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBcIi50eHRcIiwgXCIuaHRtbFwiLCBldGMuKVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCdWZmZXI+fVxuICAgKi9cbiAgcmVhZDogZnVuY3Rpb24gcmVhZEZpbGUgKGZpbGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICBwYXRoID0gdXJsLnRvRmlsZVN5c3RlbVBhdGgoZmlsZS51cmwpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3Qob25vLnVyaShlcnIsICdNYWxmb3JtZWQgVVJJOiAlcycsIGZpbGUudXJsKSk7XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKCdPcGVuaW5nIGZpbGU6ICVzJywgcGF0aCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZzLnJlYWRGaWxlKHBhdGgsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIG9wZW5pbmcgZmlsZSBcIiVzXCInLCBwYXRoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIG9wZW5pbmcgZmlsZSBcIiVzXCInLCBwYXRoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpLFxuICAgIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKSxcbiAgICBvbm8gPSByZXF1aXJlKCdvbm8nKSxcbiAgICB1cmwgPSByZXF1aXJlKCcuLi91dGlsL3VybCcpLFxuICAgIGRlYnVnID0gcmVxdWlyZSgnLi4vdXRpbC9kZWJ1ZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBvcmRlciB0aGF0IHRoaXMgcmVzb2x2ZXIgd2lsbCBydW4sIGluIHJlbGF0aW9uIHRvIG90aGVyIHJlc29sdmVycy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIG9yZGVyOiAyMDAsXG5cbiAgLyoqXG4gICAqIEhUVFAgaGVhZGVycyB0byBzZW5kIHdoZW4gZG93bmxvYWRpbmcgZmlsZXMuXG4gICAqXG4gICAqIEBleGFtcGxlOlxuICAgKiB7XG4gICAqICAgXCJVc2VyLUFnZW50XCI6IFwiSlNPTiBTY2hlbWEgJFJlZiBQYXJzZXJcIixcbiAgICogICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAqIH1cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICovXG4gIGhlYWRlcnM6IG51bGwsXG5cbiAgLyoqXG4gICAqIEhUVFAgcmVxdWVzdCB0aW1lb3V0IChpbiBtaWxsaXNlY29uZHMpLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgdGltZW91dDogNTAwMCwgLy8gNSBzZWNvbmRzXG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBIVFRQIHJlZGlyZWN0cyB0byBmb2xsb3cuXG4gICAqIFRvIGRpc2FibGUgYXV0b21hdGljIGZvbGxvd2luZyBvZiByZWRpcmVjdHMsIHNldCB0aGlzIHRvIHplcm8uXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICByZWRpcmVjdHM6IDUsXG5cbiAgLyoqXG4gICAqIFRoZSBgd2l0aENyZWRlbnRpYWxzYCBvcHRpb24gb2YgWE1MSHR0cFJlcXVlc3QuXG4gICAqIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UncmUgZG93bmxvYWRpbmcgZmlsZXMgZnJvbSBhIENPUlMtZW5hYmxlZCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvblxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIHJlc29sdmVyIGNhbiByZWFkIGEgZ2l2ZW4gZmlsZSByZWZlcmVuY2UuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiB0cnVlIHdpbGwgYmUgdHJpZWQgaW4gb3JkZXIsIHVudGlsIG9uZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZXMgdGhlIGZpbGUuXG4gICAqIFJlc29sdmVycyB0aGF0IHJldHVybiBmYWxzZSB3aWxsIG5vdCBiZSBnaXZlbiBhIGNoYW5jZSB0byByZXNvbHZlIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZmlsZSAgICAgICAgICAgLSBBbiBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLnVybCAgICAgICAtIFRoZSBmdWxsIFVSTCBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlLmV4dGVuc2lvbiAtIFRoZSBsb3dlcmNhc2VkIGZpbGUgZXh0ZW5zaW9uIChlLmcuIFwiLnR4dFwiLCBcIi5odG1sXCIsIGV0Yy4pXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY2FuUmVhZDogZnVuY3Rpb24gaXNIdHRwIChmaWxlKSB7XG4gICAgcmV0dXJuIHVybC5pc0h0dHAoZmlsZS51cmwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgZ2l2ZW4gVVJMIGFuZCByZXR1cm5zIGl0cyByYXcgY29udGVudHMgYXMgYSBCdWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWxlICAgICAgICAgICAtIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUudXJsICAgICAgIC0gVGhlIGZ1bGwgVVJMIG9mIHRoZSByZWZlcmVuY2VkIGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUuZXh0ZW5zaW9uIC0gVGhlIGxvd2VyY2FzZWQgZmlsZSBleHRlbnNpb24gKGUuZy4gXCIudHh0XCIsIFwiLmh0bWxcIiwgZXRjLilcbiAgICogQHJldHVybnMge1Byb21pc2U8QnVmZmVyPn1cbiAgICovXG4gIHJlYWQ6IGZ1bmN0aW9uIHJlYWRIdHRwIChmaWxlKSB7XG4gICAgdmFyIHUgPSB1cmwucGFyc2UoZmlsZS51cmwpO1xuXG4gICAgaWYgKHByb2Nlc3MuYnJvd3NlciAmJiAhdS5wcm90b2NvbCkge1xuICAgICAgLy8gVXNlIHRoZSBwcm90b2NvbCBvZiB0aGUgY3VycmVudCBwYWdlXG4gICAgICB1LnByb3RvY29sID0gdXJsLnBhcnNlKGxvY2F0aW9uLmhyZWYpLnByb3RvY29sO1xuICAgIH1cblxuICAgIHJldHVybiBkb3dubG9hZCh1LCB0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEb3dubG9hZHMgdGhlIGdpdmVuIGZpbGUuXG4gKlxuICogQHBhcmFtIHtVcmx8c3RyaW5nfSB1ICAgICAgICAtIFRoZSB1cmwgdG8gZG93bmxvYWQgKGNhbiBiZSBhIHBhcnNlZCB7QGxpbmsgVXJsfSBvYmplY3QpXG4gKiBAcGFyYW0ge29iamVjdH0gaHR0cE9wdGlvbnMgIC0gVGhlIGBvcHRpb25zLnJlc29sdmUuaHR0cGAgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW3JlZGlyZWN0c10gIC0gVGhlIHJlZGlyZWN0IFVSTHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBmb2xsb3dlZFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59XG4gKiBUaGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIHRoZSByYXcgZG93bmxvYWRlZCBkYXRhLCBvciByZWplY3RzIGlmIHRoZXJlIGlzIGFuIEhUVFAgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIGRvd25sb2FkICh1LCBodHRwT3B0aW9ucywgcmVkaXJlY3RzKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdSA9IHVybC5wYXJzZSh1KTtcbiAgICByZWRpcmVjdHMgPSByZWRpcmVjdHMgfHwgW107XG4gICAgcmVkaXJlY3RzLnB1c2godS5ocmVmKTtcblxuICAgIGdldCh1LCBodHRwT3B0aW9ucylcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDQwMCkge1xuICAgICAgICAgIHRocm93IG9ubyh7IHN0YXR1czogcmVzLnN0YXR1c0NvZGUgfSwgJ0hUVFAgRVJST1IgJWQnLCByZXMuc3RhdHVzQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVzLnN0YXR1c0NvZGUgPj0gMzAwKSB7XG4gICAgICAgICAgaWYgKHJlZGlyZWN0cy5sZW5ndGggPiBodHRwT3B0aW9ucy5yZWRpcmVjdHMpIHtcbiAgICAgICAgICAgIHJlamVjdChvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdFcnJvciBkb3dubG9hZGluZyAlcy4gXFxuVG9vIG1hbnkgcmVkaXJlY3RzOiBcXG4gICVzJyxcbiAgICAgICAgICAgICAgcmVkaXJlY3RzWzBdLCByZWRpcmVjdHMuam9pbignIFxcbiAgJykpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIXJlcy5oZWFkZXJzLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBvbm8oeyBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIH0sICdIVFRQICVkIHJlZGlyZWN0IHdpdGggbm8gbG9jYXRpb24gaGVhZGVyJywgcmVzLnN0YXR1c0NvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnKCdIVFRQICVkIHJlZGlyZWN0ICVzIC0+ICVzJywgcmVzLnN0YXR1c0NvZGUsIHUuaHJlZiwgcmVzLmhlYWRlcnMubG9jYXRpb24pO1xuICAgICAgICAgICAgdmFyIHJlZGlyZWN0VG8gPSB1cmwucmVzb2x2ZSh1LCByZXMuaGVhZGVycy5sb2NhdGlvbik7XG4gICAgICAgICAgICBkb3dubG9hZChyZWRpcmVjdFRvLCBodHRwT3B0aW9ucywgcmVkaXJlY3RzKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzLmJvZHkgfHwgbmV3IEJ1ZmZlcigwKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZWplY3Qob25vKGVyciwgJ0Vycm9yIGRvd25sb2FkaW5nJywgdS5ocmVmKSk7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSFRUUCBHRVQgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0ge1VybH0gdSAtIEEgcGFyc2VkIHtAbGluayBVcmx9IG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9IGh0dHBPcHRpb25zIC0gVGhlIGBvcHRpb25zLnJlc29sdmUuaHR0cGAgb2JqZWN0XG4gKlxuICogQHJldHVybnMge1Byb21pc2U8UmVzcG9uc2U+fVxuICogVGhlIHByb21pc2UgcmVzb2x2ZXMgd2l0aCB0aGUgSFRUUCBSZXNwb25zZSBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGdldCAodSwgaHR0cE9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBkZWJ1ZygnR0VUJywgdS5ocmVmKTtcblxuICAgIHZhciBwcm90b2NvbCA9IHUucHJvdG9jb2wgPT09ICdodHRwczonID8gaHR0cHMgOiBodHRwO1xuICAgIHZhciByZXEgPSBwcm90b2NvbC5nZXQoe1xuICAgICAgaG9zdG5hbWU6IHUuaG9zdG5hbWUsXG4gICAgICBwb3J0OiB1LnBvcnQsXG4gICAgICBwYXRoOiB1LnBhdGgsXG4gICAgICBhdXRoOiB1LmF1dGgsXG4gICAgICBwcm90b2NvbDogdS5wcm90b2NvbCxcbiAgICAgIGhlYWRlcnM6IGh0dHBPcHRpb25zLmhlYWRlcnMgfHwge30sXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGh0dHBPcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiByZXEuc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxLnNldFRpbWVvdXQoaHR0cE9wdGlvbnMudGltZW91dCk7XG4gICAgfVxuXG4gICAgcmVxLm9uKCd0aW1lb3V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVxLmFib3J0KCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgIHJlcS5vbmNlKCdyZXNwb25zZScsIGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHJlcy5ib2R5ID0gbmV3IEJ1ZmZlcigwKTtcblxuICAgICAgcmVzLm9uKCdkYXRhJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmVzLmJvZHkgPSBCdWZmZXIuY29uY2F0KFtyZXMuYm9keSwgbmV3IEJ1ZmZlcihkYXRhKV0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlcy5vbignZXJyb3InLCByZWplY3QpO1xuXG4gICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpO1xuXG4vKipcbiAqIFdyaXRlcyBtZXNzYWdlcyB0byBzdGRvdXQuXG4gKiBMb2cgbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBlbmFibGVkIGJ5IHNldHRpbmcgdGhlIERFQlVHIHZhcmlhYmxlLlxuICogQHR5cGUge2Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGRlYnVnKCdqc29uLXNjaGVtYS1yZWYtcGFyc2VyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJy4vZGVidWcnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBwbHVnaW5zIGFzIGFuIGFycmF5LCByYXRoZXIgdGhhbiBhbiBvYmplY3QgbWFwLlxuICogQWxsIG90aGVyIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgZXhwZWN0IGFuIGFycmF5IG9mIHBsdWdpbnMgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IG1hcC5cbiAqXG4gKiBAcGFyYW0gIHtvYmplY3R9IHBsdWdpbnMgLSBBIG1hcCBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydHMuYWxsID0gZnVuY3Rpb24gKHBsdWdpbnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHBsdWdpbnMpXG4gICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHBsdWdpbnNba2V5XSA9PT0gJ29iamVjdCc7XG4gICAgfSlcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHBsdWdpbnNba2V5XS5uYW1lID0ga2V5O1xuICAgICAgcmV0dXJuIHBsdWdpbnNba2V5XTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRmlsdGVycyB0aGUgZ2l2ZW4gcGx1Z2lucywgcmV0dXJuaW5nIG9ubHkgdGhlIG9uZXMgcmV0dXJuIGB0cnVlYCBmb3IgdGhlIGdpdmVuIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0gIHtvYmplY3RbXX0gcGx1Z2lucyAtIEFuIGFycmF5IG9mIHBsdWdpbiBvYmplY3RzXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgbWV0aG9kICAtIFRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgbWV0aG9kIHRvIGludm9rZSBmb3IgZWFjaCBwbHVnaW5cbiAqIEBwYXJhbSAge29iamVjdH0gICBmaWxlICAgIC0gQSBmaWxlIGluZm8gb2JqZWN0LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBlYWNoIG1ldGhvZFxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydHMuZmlsdGVyID0gZnVuY3Rpb24gKHBsdWdpbnMsIG1ldGhvZCwgZmlsZSkge1xuICByZXR1cm4gcGx1Z2luc1xuICAgIC5maWx0ZXIoZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgcmV0dXJuICEhZ2V0UmVzdWx0KHBsdWdpbiwgbWV0aG9kLCBmaWxlKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogU29ydHMgdGhlIGdpdmVuIHBsdWdpbnMsIGluIHBsYWNlLCBieSB0aGVpciBgb3JkZXJgIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119IHBsdWdpbnMgLSBBbiBhcnJheSBvZiBwbHVnaW4gb2JqZWN0c1xuICogQHJldHVybnMge29iamVjdFtdfVxuICovXG5leHBvcnRzLnNvcnQgPSBmdW5jdGlvbiAocGx1Z2lucykge1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHBsdWdpbi5vcmRlciA9IHBsdWdpbi5vcmRlciB8fCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBsdWdpbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7IH0pO1xufTtcblxuLyoqXG4gKiBSdW5zIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG9mIHRoZSBnaXZlbiBwbHVnaW5zLCBpbiBvcmRlciwgdW50aWwgb25lIG9mIHRoZW0gcmV0dXJucyBhIHN1Y2Nlc3NmdWwgcmVzdWx0LlxuICogRWFjaCBtZXRob2QgY2FuIHJldHVybiBhIHN5bmNocm9ub3VzIHZhbHVlLCBhIFByb21pc2UsIG9yIGNhbGwgYW4gZXJyb3ItZmlyc3QgY2FsbGJhY2suXG4gKiBJZiB0aGUgcHJvbWlzZSByZXNvbHZlcyBzdWNjZXNzZnVsbHksIG9yIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aG91dCBhbiBlcnJvciwgdGhlbiB0aGUgcmVzdWx0XG4gKiBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCBhbmQgbm8gZnVydGhlciBwbHVnaW5zIGFyZSBjYWxsZWQuXG4gKiBJZiB0aGUgcHJvbWlzZSByZWplY3RzLCBvciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gZXJyb3IsIHRoZW4gdGhlIG5leHQgcGx1Z2luIGlzIGNhbGxlZC5cbiAqIElmIEFMTCBwbHVnaW5zIGZhaWwsIHRoZW4gdGhlIGxhc3QgZXJyb3IgaXMgdGhyb3duLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0W119ICBwbHVnaW5zIC0gQW4gYXJyYXkgb2YgcGx1Z2luIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICBtZXRob2QgIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0byBpbnZva2UgZm9yIGVhY2ggcGx1Z2luXG4gKiBAcGFyYW0ge29iamVjdH0gICAgZmlsZSAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZWFjaCBtZXRob2RcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnRzLnJ1biA9IGZ1bmN0aW9uIChwbHVnaW5zLCBtZXRob2QsIGZpbGUpIHtcbiAgdmFyIHBsdWdpbiwgbGFzdEVycm9yLCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBydW5OZXh0UGx1Z2luKCk7XG5cbiAgICBmdW5jdGlvbiBydW5OZXh0UGx1Z2luICgpIHtcbiAgICAgIHBsdWdpbiA9IHBsdWdpbnNbaW5kZXgrK107XG4gICAgICBpZiAoIXBsdWdpbikge1xuICAgICAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBmdW5jdGlvbnMsIHNvIHJlLXRocm93IHRoZSBsYXN0IGVycm9yXG4gICAgICAgIHJldHVybiByZWplY3QobGFzdEVycm9yKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgZGVidWcoJyAgJXMnLCBwbHVnaW4ubmFtZSk7XG4gICAgICAgIHZhciByZXN1bHQgPSBnZXRSZXN1bHQocGx1Z2luLCBtZXRob2QsIGZpbGUsIGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBBIHByb21pc2Ugd2FzIHJldHVybmVkXG4gICAgICAgICAgcmVzdWx0LnRoZW4ob25TdWNjZXNzLCBvbkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEEgc3luY2hyb25vdXMgcmVzdWx0IHdhcyByZXR1cm5lZFxuICAgICAgICAgIG9uU3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UgeyB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgfVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxsYmFjayAoZXJyLCByZXN1bHQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgb25FcnJvcihlcnIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcyhyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uU3VjY2VzcyAocmVzdWx0KSB7XG4gICAgICBkZWJ1ZygnICAgIHN1Y2Nlc3MnKTtcbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBwbHVnaW46IHBsdWdpbixcbiAgICAgICAgcmVzdWx0OiByZXN1bHRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgICAgZGVidWcoJyAgICAlcycsIGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgICBsYXN0RXJyb3IgPSBlcnI7XG4gICAgICBydW5OZXh0UGx1Z2luKCk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHByb3BlcnR5LlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIHRoZW4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuZWQuXG4gKiBJZiB0aGUgdmFsdWUgaXMgYSBSZWdFeHAsIHRoZW4gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCB0aGUgZmlsZSBVUkwuXG4gKiBJZiB0aGUgdmFsdWUgaXMgYW4gYXJheSwgdGhlbiBpdCB3aWxsIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIGZpbGUgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgb2JqICAgICAgICAtIFRoZSBvYmplY3Qgd2hvc2UgcHJvcGVydHkvbWV0aG9kIGlzIGNhbGxlZFxuICogQHBhcmFtICAge3N0cmluZ30gICBwcm9wICAgICAgIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5L21ldGhvZCB0byBpbnZva2VcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgZmlsZSAgICAgICAtIEEgZmlsZSBpbmZvIG9iamVjdCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIG1ldGhvZFxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayBmdW5jdGlvbiwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIG1ldGhvZFxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldFJlc3VsdCAob2JqLCBwcm9wLCBmaWxlLCBjYWxsYmFjaykge1xuICB2YXIgdmFsdWUgPSBvYmpbcHJvcF07XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZS5hcHBseShvYmosIFtmaWxlLCBjYWxsYmFja10pO1xuICB9XG5cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIC8vIFRoZSBzeW5jaHJvbm91cyBwbHVnaW4gZnVuY3Rpb25zIChjYW5QYXJzZSBhbmQgY2FuUmVhZClcbiAgICAvLyBhbGxvdyBhIFwic2hvcnRoYW5kXCIgc3ludGF4LCB3aGVyZSB0aGUgdXNlciBjYW4gbWF0Y2hcbiAgICAvLyBmaWxlcyBieSBSZWdFeHAgb3IgYnkgZmlsZSBleHRlbnNpb24uXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdmFsdWUudGVzdChmaWxlLnVybCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gZmlsZS5leHRlbnNpb247XG4gICAgfVxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaW5kZXhPZihmaWxlLmV4dGVuc2lvbikgIT09IC0xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzV2luZG93cyA9IC9ed2luLy50ZXN0KHByb2Nlc3MucGxhdGZvcm0pLFxuICAgIGZvcndhcmRTbGFzaFBhdHRlcm4gPSAvXFwvL2csXG4gICAgcHJvdG9jb2xQYXR0ZXJuID0gL14oXFx3ezIsfSk6XFwvXFwvL2ksXG4gICAgdXJsID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vIFJlZ0V4cCBwYXR0ZXJucyB0byBVUkwtZW5jb2RlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzXG52YXIgdXJsRW5jb2RlUGF0dGVybnMgPSBbXG4gIC9cXD8vZywgJyUzRicsXG4gIC9cXCMvZywgJyUyMycsXG5dO1xuXG4vLyBSZWdFeHAgcGF0dGVybnMgdG8gVVJMLWRlY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHNcbnZhciB1cmxEZWNvZGVQYXR0ZXJucyA9IFtcbiAgL1xcJTIzL2csICcjJyxcbiAgL1xcJTI0L2csICckJyxcbiAgL1xcJTI2L2csICcmJyxcbiAgL1xcJTJDL2csICcsJyxcbiAgL1xcJTQwL2csICdAJ1xuXTtcblxuZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xuZXhwb3J0cy5yZXNvbHZlID0gcmVxdWlyZSgndXJsJykucmVzb2x2ZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IChpbiBOb2RlKSBvciB0aGUgY3VycmVudCBwYWdlIFVSTCAoaW4gYnJvd3NlcnMpLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuY3dkID0gZnVuY3Rpb24gY3dkICgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuYnJvd3NlciA/IGxvY2F0aW9uLmhyZWYgOiBwcm9jZXNzLmN3ZCgpICsgJy8nO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm90b2NvbCBvZiB0aGUgZ2l2ZW4gVVJMLCBvciBgdW5kZWZpbmVkYCBpZiBpdCBoYXMgbm8gcHJvdG9jb2wuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMgez9zdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0UHJvdG9jb2wgPSBmdW5jdGlvbiBnZXRQcm90b2NvbCAocGF0aCkge1xuICB2YXIgbWF0Y2ggPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhwYXRoKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgcmV0dXJuIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbG93ZXJjYXNlZCBmaWxlIGV4dGVuc2lvbiBvZiB0aGUgZ2l2ZW4gVVJMLFxuICogb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGhhcyBubyBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5nZXRFeHRlbnNpb24gPSBmdW5jdGlvbiBnZXRFeHRlbnNpb24gKHBhdGgpIHtcbiAgdmFyIGxhc3REb3QgPSBwYXRoLmxhc3RJbmRleE9mKCcuJyk7XG4gIGlmIChsYXN0RG90ID49IDApIHtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHIobGFzdERvdCkudG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gJyc7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGhhc2ggKFVSTCBmcmFnbWVudCksIG9mIHRoZSBnaXZlbiBwYXRoLlxuICogSWYgdGhlcmUgaXMgbm8gaGFzaCwgdGhlbiB0aGUgcm9vdCBoYXNoIChcIiNcIikgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5nZXRIYXNoID0gZnVuY3Rpb24gZ2V0SGFzaCAocGF0aCkge1xuICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBwYXRoLnN1YnN0cihoYXNoSW5kZXgpO1xuICB9XG4gIHJldHVybiAnIyc7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGhhc2ggKFVSTCBmcmFnbWVudCksIGlmIGFueSwgZnJvbSB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gICB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnN0cmlwSGFzaCA9IGZ1bmN0aW9uIHN0cmlwSGFzaCAocGF0aCkge1xuICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoSW5kZXggPj0gMCkge1xuICAgIHBhdGggPSBwYXRoLnN1YnN0cigwLCBoYXNoSW5kZXgpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgYW4gSFRUUChTKSBVUkwuXG4gKlxuICogQHBhcmFtICAge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNIdHRwID0gZnVuY3Rpb24gaXNIdHRwIChwYXRoKSB7XG4gIHZhciBwcm90b2NvbCA9IHVybC5nZXRQcm90b2NvbChwYXRoKTtcbiAgaWYgKHByb3RvY29sID09PSAnaHR0cCcgfHwgcHJvdG9jb2wgPT09ICdodHRwcycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBlbHNlIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVGhlcmUgaXMgbm8gcHJvdG9jb2wuICBJZiB3ZSdyZSBydW5uaW5nIGluIGEgYnJvd3NlciwgdGhlbiBhc3N1bWUgaXQncyBIVFRQLlxuICAgIHJldHVybiBwcm9jZXNzLmJyb3dzZXI7XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gSXQncyBzb21lIG90aGVyIHByb3RvY29sLCBzdWNoIGFzIFwiZnRwOi8vXCIsIFwibW9uZ29kYjovL1wiLCBldGMuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBpcyBhIGZpbGVzeXN0ZW0gcGF0aC5cbiAqIFRoaXMgaW5jbHVkZXMgXCJmaWxlOi8vXCIgVVJMcy5cbiAqXG4gKiBAcGFyYW0gICB7c3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0cy5pc0ZpbGVTeXN0ZW1QYXRoID0gZnVuY3Rpb24gaXNGaWxlU3lzdGVtUGF0aCAocGF0aCkge1xuICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgLy8gV2UncmUgcnVubmluZyBpbiBhIGJyb3dzZXIsIHNvIGFzc3VtZSB0aGF0IGFsbCBwYXRocyBhcmUgVVJMcy5cbiAgICAvLyBUaGlzIHdheSwgZXZlbiByZWxhdGl2ZSBwYXRocyB3aWxsIGJlIHRyZWF0ZWQgYXMgVVJMcyByYXRoZXIgdGhhbiBhcyBmaWxlc3lzdGVtIHBhdGhzXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvY29sID0gdXJsLmdldFByb3RvY29sKHBhdGgpO1xuICByZXR1cm4gcHJvdG9jb2wgPT09IHVuZGVmaW5lZCB8fCBwcm90b2NvbCA9PT0gJ2ZpbGUnO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGVzeXN0ZW0gcGF0aCB0byBhIHByb3Blcmx5LWVuY29kZWQgVVJMLlxuICpcbiAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgSlNPTiBTY2hlbWEgJFJlZiBQYXJzZXIgaXMgY2FsbGVkXG4gKiB3aXRoIGEgZmlsZXN5c3RlbSBwYXRoIHRoYXQgY29udGFpbnMgY2hhcmFjdGVycyB3aGljaCBhcmUgbm90IGFsbG93ZWQgaW4gVVJMcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogVGhlIGZvbGxvd2luZyBmaWxlc3lzdGVtIHBhdGhzIHdvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgZm9sbG93aW5nIFVSTHM6XG4gKlxuICogICAgPFwiIUAjJCVeJiorPT8nPi5qc29uICAgICAgICAgICAgICA9PT4gICAlM0MlMjIhQCUyMyQlMjUlNUUmKis9JTNGXFwnJTNFLmpzb25cbiAqICAgIEM6XFxcXE15IERvY3VtZW50c1xcXFxGaWxlICgxKS5qc29uICAgPT0+ICAgQzovTXklMjBEb2N1bWVudHMvRmlsZSUyMCgxKS5qc29uXG4gKiAgICBmaWxlOi8vUHJvamVjdCAjNDIvZmlsZS5qc29uICAgICAgPT0+ICAgZmlsZTovL1Byb2plY3QlMjAlMjM0Mi9maWxlLmpzb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0cy5mcm9tRmlsZVN5c3RlbVBhdGggPSBmdW5jdGlvbiBmcm9tRmlsZVN5c3RlbVBhdGggKHBhdGgpIHtcbiAgLy8gU3RlcCAxOiBPbiBXaW5kb3dzLCByZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLFxuICAvLyByYXRoZXIgdGhhbiBlbmNvZGluZyB0aGVtIGFzIFwiJTVDXCJcbiAgaWYgKGlzV2luZG93cykge1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgfVxuXG4gIC8vIFN0ZXAgMjogYGVuY29kZVVSSWAgd2lsbCB0YWtlIGNhcmUgb2YgTU9TVCBjaGFyYWN0ZXJzXG4gIHBhdGggPSBlbmNvZGVVUkkocGF0aCk7XG5cbiAgLy8gU3RlcCAzOiBNYW51YWxseSBlbmNvZGUgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgZW5jb2RlZCBieSBgZW5jb2RlVVJJYC5cbiAgLy8gVGhpcyBpbmNsdWRlcyBjaGFyYWN0ZXJzIHN1Y2ggYXMgXCIjXCIgYW5kIFwiP1wiLCB3aGljaCBoYXZlIHNwZWNpYWwgbWVhbmluZyBpbiBVUkxzLFxuICAvLyBidXQgYXJlIGp1c3Qgbm9ybWFsIGNoYXJhY3RlcnMgaW4gYSBmaWxlc3lzdGVtIHBhdGguXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsRW5jb2RlUGF0dGVybnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKHVybEVuY29kZVBhdHRlcm5zW2ldLCB1cmxFbmNvZGVQYXR0ZXJuc1tpICsgMV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVVJMIHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSAgcGF0aFxuICogQHBhcmFtIHtib29sZWFufSBba2VlcEZpbGVQcm90b2NvbF0gLSBJZiB0cnVlLCB0aGVuIFwiZmlsZTovL1wiIHdpbGwgTk9UIGJlIHN0cmlwcGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnRzLnRvRmlsZVN5c3RlbVBhdGggPSBmdW5jdGlvbiB0b0ZpbGVTeXN0ZW1QYXRoIChwYXRoLCBrZWVwRmlsZVByb3RvY29sKSB7XG4gIC8vIFN0ZXAgMTogYGRlY29kZVVSSWAgd2lsbCBkZWNvZGUgY2hhcmFjdGVycyBzdWNoIGFzIEN5cmlsbGljIGNoYXJhY3RlcnMsIHNwYWNlcywgZXRjLlxuICBwYXRoID0gZGVjb2RlVVJJKHBhdGgpO1xuXG4gIC8vIFN0ZXAgMjogTWFudWFsbHkgZGVjb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGRlY29kZWQgYnkgYGRlY29kZVVSSWAuXG4gIC8vIFRoaXMgaW5jbHVkZXMgY2hhcmFjdGVycyBzdWNoIGFzIFwiI1wiIGFuZCBcIj9cIiwgd2hpY2ggaGF2ZSBzcGVjaWFsIG1lYW5pbmcgaW4gVVJMcyxcbiAgLy8gYnV0IGFyZSBqdXN0IG5vcm1hbCBjaGFyYWN0ZXJzIGluIGEgZmlsZXN5c3RlbSBwYXRoLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybERlY29kZVBhdHRlcm5zLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSh1cmxEZWNvZGVQYXR0ZXJuc1tpXSwgdXJsRGVjb2RlUGF0dGVybnNbaSArIDFdKTtcbiAgfVxuXG4gIC8vIFN0ZXAgMzogSWYgaXQncyBhIFwiZmlsZTovL1wiIFVSTCwgdGhlbiBmb3JtYXQgaXQgY29uc2lzdGVudGx5XG4gIC8vIG9yIGNvbnZlcnQgaXQgdG8gYSBsb2NhbCBmaWxlc3lzdGVtIHBhdGhcbiAgdmFyIGlzRmlsZVVybCA9IHBhdGguc3Vic3RyKDAsIDcpLnRvTG93ZXJDYXNlKCkgPT09ICdmaWxlOi8vJztcbiAgaWYgKGlzRmlsZVVybCkge1xuICAgIC8vIFN0cmlwLW9mZiB0aGUgcHJvdG9jb2wsIGFuZCB0aGUgaW5pdGlhbCBcIi9cIiwgaWYgdGhlcmUgaXMgb25lXG4gICAgcGF0aCA9IHBhdGhbN10gPT09ICcvJyA/IHBhdGguc3Vic3RyKDgpIDogcGF0aC5zdWJzdHIoNyk7XG5cbiAgICAvLyBpbnNlcnQgYSBjb2xvbiAoXCI6XCIpIGFmdGVyIHRoZSBkcml2ZSBsZXR0ZXIgb24gV2luZG93c1xuICAgIGlmIChpc1dpbmRvd3MgJiYgcGF0aFsxXSA9PT0gJy8nKSB7XG4gICAgICBwYXRoID0gcGF0aFswXSArICc6JyArIHBhdGguc3Vic3RyKDEpO1xuICAgIH1cblxuICAgIGlmIChrZWVwRmlsZVByb3RvY29sKSB7XG4gICAgICAvLyBSZXR1cm4gdGhlIGNvbnNpc3RlbnRseS1mb3JtYXR0ZWQgXCJmaWxlOi8vXCIgVVJMXG4gICAgICBwYXRoID0gJ2ZpbGU6Ly8vJyArIHBhdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQ29udmVydCB0aGUgXCJmaWxlOi8vXCIgVVJMIHRvIGEgbG9jYWwgZmlsZXN5c3RlbSBwYXRoLlxuICAgICAgLy8gT24gV2luZG93cywgaXQgd2lsbCBzdGFydCB3aXRoIHNvbWV0aGluZyBsaWtlIFwiQzovXCIuXG4gICAgICAvLyBPbiBQb3NpeCwgaXQgd2lsbCBzdGFydCB3aXRoIFwiL1wiXG4gICAgICBpc0ZpbGVVcmwgPSBmYWxzZTtcbiAgICAgIHBhdGggPSBpc1dpbmRvd3MgPyBwYXRoIDogJy8nICsgcGF0aDtcbiAgICB9XG4gIH1cblxuICAvLyBTdGVwIDQ6IE5vcm1hbGl6ZSBXaW5kb3dzIHBhdGhzICh1bmxlc3MgaXQncyBhIFwiZmlsZTovL1wiIFVSTClcbiAgaWYgKGlzV2luZG93cyAmJiAhaXNGaWxlVXJsKSB7XG4gICAgLy8gUmVwbGFjZSBmb3J3YXJkIHNsYXNoZXMgd2l0aCBiYWNrc2xhc2hlc1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoZm9yd2FyZFNsYXNoUGF0dGVybiwgJ1xcXFwnKTtcblxuICAgIC8vIENhcGl0YWxpemUgdGhlIGRyaXZlIGxldHRlclxuICAgIGlmIChwYXRoLnN1YnN0cigxLCAyKSA9PT0gJzpcXFxcJykge1xuICAgICAgcGF0aCA9IHBhdGhbMF0udG9VcHBlckNhc2UoKSArIHBhdGguc3Vic3RyKDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbiIsIi8qIGVzbGludCBsaW5lcy1hcm91bmQtY29tbWVudDogWzIsIHtiZWZvcmVCbG9ja0NvbW1lbnQ6IGZhbHNlfV0gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIHlhbWwgPSByZXF1aXJlKCdqcy15YW1sJyksXG4gICAgb25vID0gcmVxdWlyZSgnb25vJyk7XG5cbi8qKlxuICogU2ltcGxlIFlBTUwgcGFyc2luZyBmdW5jdGlvbnMsIHNpbWlsYXIgdG8ge0BsaW5rIEpTT04ucGFyc2V9IGFuZCB7QGxpbmsgSlNPTi5zdHJpbmdpZnl9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvKipcbiAgICogUGFyc2VzIGEgWUFNTCBzdHJpbmcgYW5kIHJldHVybnMgdGhlIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBZQU1MIHN0cmluZyB0byBiZSBwYXJzZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW3Jldml2ZXJdIC0gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIFByb3ZpZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHtAbGluayBKU09OLnBhcnNlfVxuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIHBhcnNlOiBmdW5jdGlvbiB5YW1sUGFyc2UgKHRleHQsIHJldml2ZXIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHlhbWwuc2FmZUxvYWQodGV4dCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2lzc3Vlcy8xNTNcbiAgICAgICAgdGhyb3cgb25vKGUsIGUubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBZQU1MIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtICAgeyp9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gWUFNTFxuICAgKiBAcGFyYW0gICB7ZnVuY3Rpb258YXJyYXl9IHJlcGxhY2VyIC0gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIFByb3ZpZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHtAbGluayBKU09OLnN0cmluZ2lmeX1cbiAgICogQHBhcmFtICAge3N0cmluZ3xudW1iZXJ9IHNwYWNlIC0gVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gdXNlIGZvciBpbmRlbnRhdGlvbiwgb3IgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHNwYWNlcy5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHN0cmluZ2lmeTogZnVuY3Rpb24geWFtbFN0cmluZ2lmeSAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaW5kZW50ID0gKHR5cGVvZiBzcGFjZSA9PT0gJ3N0cmluZycgPyBzcGFjZS5sZW5ndGggOiBzcGFjZSkgfHwgMjtcbiAgICAgIHJldHVybiB5YW1sLnNhZmVEdW1wKHZhbHVlLCB7IGluZGVudDogaW5kZW50IH0pO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9pc3N1ZXMvMTUzXG4gICAgICAgIHRocm93IG9ubyhlLCBlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMyBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEzIFRoYWRkZWUgVHlsIDx0aGFkZGVlLnR5bEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMyBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgSm9vc3QtV2ltIEJvZWtlc3RlaWpuIDxqb29zdC13aW1AYm9la2VzdGVpam4ubmw+XG4gIENvcHlyaWdodCAoQykgMjAxMiBLcmlzIEtvd2FsIDxrcmlzLmtvd2FsQGNpeGFyLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFycGFkIEJvcnNvcyA8YXJwYWQuYm9yc29zQGdvb2dsZW1haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTEgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+XG5cbiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbiAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRVxuICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG4gIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUztcbiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG4gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLypqc2xpbnQgYml0d2lzZTp0cnVlIHBsdXNwbHVzOnRydWUgKi9cbi8qZ2xvYmFsIGVzcHJpbWE6dHJ1ZSwgZGVmaW5lOnRydWUsIGV4cG9ydHM6dHJ1ZSwgd2luZG93OiB0cnVlLFxudGhyb3dFcnJvclRvbGVyYW50OiB0cnVlLFxudGhyb3dFcnJvcjogdHJ1ZSwgZ2VuZXJhdGVTdGF0ZW1lbnQ6IHRydWUsIHBlZWs6IHRydWUsXG5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uOiB0cnVlLCBwYXJzZUJsb2NrOiB0cnVlLCBwYXJzZUV4cHJlc3Npb246IHRydWUsXG5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb246IHRydWUsIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uOiB0cnVlLFxucGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzOiB0cnVlLCBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjogdHJ1ZSxcbnBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbjogdHJ1ZSxcbnBhcnNlVW5hcnlFeHByZXNzaW9uOiB0cnVlLFxucGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudDogdHJ1ZSAqL1xuXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvLyBVbml2ZXJzYWwgTW9kdWxlIERlZmluaXRpb24gKFVNRCkgdG8gc3VwcG9ydCBBTUQsIENvbW1vbkpTL05vZGUuanMsXG4gICAgLy8gUmhpbm8sIGFuZCBwbGFpbiBicm93c2VyIGxvYWRpbmcuXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmYWN0b3J5KGV4cG9ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZhY3RvcnkoKHJvb3QuZXNwcmltYSA9IHt9KSk7XG4gICAgfVxufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBUb2tlbixcbiAgICAgICAgVG9rZW5OYW1lLFxuICAgICAgICBGbkV4cHJUb2tlbnMsXG4gICAgICAgIFN5bnRheCxcbiAgICAgICAgUHJvcGVydHlLaW5kLFxuICAgICAgICBNZXNzYWdlcyxcbiAgICAgICAgUmVnZXgsXG4gICAgICAgIFN5bnRheFRyZWVEZWxlZ2F0ZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBzdHJpY3QsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsaW5lTnVtYmVyLFxuICAgICAgICBsaW5lU3RhcnQsXG4gICAgICAgIGxlbmd0aCxcbiAgICAgICAgZGVsZWdhdGUsXG4gICAgICAgIGxvb2thaGVhZCxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGV4dHJhO1xuXG4gICAgVG9rZW4gPSB7XG4gICAgICAgIEJvb2xlYW5MaXRlcmFsOiAxLFxuICAgICAgICBFT0Y6IDIsXG4gICAgICAgIElkZW50aWZpZXI6IDMsXG4gICAgICAgIEtleXdvcmQ6IDQsXG4gICAgICAgIE51bGxMaXRlcmFsOiA1LFxuICAgICAgICBOdW1lcmljTGl0ZXJhbDogNixcbiAgICAgICAgUHVuY3R1YXRvcjogNyxcbiAgICAgICAgU3RyaW5nTGl0ZXJhbDogOCxcbiAgICAgICAgUmVndWxhckV4cHJlc3Npb246IDlcbiAgICB9O1xuXG4gICAgVG9rZW5OYW1lID0ge307XG4gICAgVG9rZW5OYW1lW1Rva2VuLkJvb2xlYW5MaXRlcmFsXSA9ICdCb29sZWFuJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uRU9GXSA9ICc8ZW5kPic7XG4gICAgVG9rZW5OYW1lW1Rva2VuLklkZW50aWZpZXJdID0gJ0lkZW50aWZpZXInO1xuICAgIFRva2VuTmFtZVtUb2tlbi5LZXl3b3JkXSA9ICdLZXl3b3JkJztcbiAgICBUb2tlbk5hbWVbVG9rZW4uTnVsbExpdGVyYWxdID0gJ051bGwnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5OdW1lcmljTGl0ZXJhbF0gPSAnTnVtZXJpYyc7XG4gICAgVG9rZW5OYW1lW1Rva2VuLlB1bmN0dWF0b3JdID0gJ1B1bmN0dWF0b3InO1xuICAgIFRva2VuTmFtZVtUb2tlbi5TdHJpbmdMaXRlcmFsXSA9ICdTdHJpbmcnO1xuICAgIFRva2VuTmFtZVtUb2tlbi5SZWd1bGFyRXhwcmVzc2lvbl0gPSAnUmVndWxhckV4cHJlc3Npb24nO1xuXG4gICAgLy8gQSBmdW5jdGlvbiBmb2xsb3dpbmcgb25lIG9mIHRob3NlIHRva2VucyBpcyBhbiBleHByZXNzaW9uLlxuICAgIEZuRXhwclRva2VucyA9IFsnKCcsICd7JywgJ1snLCAnaW4nLCAndHlwZW9mJywgJ2luc3RhbmNlb2YnLCAnbmV3JyxcbiAgICAgICAgICAgICAgICAgICAgJ3JldHVybicsICdjYXNlJywgJ2RlbGV0ZScsICd0aHJvdycsICd2b2lkJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gYXNzaWdubWVudCBvcGVyYXRvcnNcbiAgICAgICAgICAgICAgICAgICAgJz0nLCAnKz0nLCAnLT0nLCAnKj0nLCAnLz0nLCAnJT0nLCAnPDw9JywgJz4+PScsICc+Pj49JyxcbiAgICAgICAgICAgICAgICAgICAgJyY9JywgJ3w9JywgJ149JywgJywnLFxuICAgICAgICAgICAgICAgICAgICAvLyBiaW5hcnkvdW5hcnkgb3BlcmF0b3JzXG4gICAgICAgICAgICAgICAgICAgICcrJywgJy0nLCAnKicsICcvJywgJyUnLCAnKysnLCAnLS0nLCAnPDwnLCAnPj4nLCAnPj4+JywgJyYnLFxuICAgICAgICAgICAgICAgICAgICAnfCcsICdeJywgJyEnLCAnficsICcmJicsICd8fCcsICc/JywgJzonLCAnPT09JywgJz09JywgJz49JyxcbiAgICAgICAgICAgICAgICAgICAgJzw9JywgJzwnLCAnPicsICchPScsICchPT0nXTtcblxuICAgIFN5bnRheCA9IHtcbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246ICdBc3NpZ25tZW50RXhwcmVzc2lvbicsXG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogJ0FycmF5RXhwcmVzc2lvbicsXG4gICAgICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgICAgICBCaW5hcnlFeHByZXNzaW9uOiAnQmluYXJ5RXhwcmVzc2lvbicsXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiAnQnJlYWtTdGF0ZW1lbnQnLFxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJyxcbiAgICAgICAgQ2F0Y2hDbGF1c2U6ICdDYXRjaENsYXVzZScsXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbicsXG4gICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiAnQ29udGludWVTdGF0ZW1lbnQnLFxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1lbnQnLFxuICAgICAgICBFbXB0eVN0YXRlbWVudDogJ0VtcHR5U3RhdGVtZW50JyxcbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogJ0V4cHJlc3Npb25TdGF0ZW1lbnQnLFxuICAgICAgICBGb3JTdGF0ZW1lbnQ6ICdGb3JTdGF0ZW1lbnQnLFxuICAgICAgICBGb3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JyxcbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogJ0Z1bmN0aW9uRGVjbGFyYXRpb24nLFxuICAgICAgICBGdW5jdGlvbkV4cHJlc3Npb246ICdGdW5jdGlvbkV4cHJlc3Npb24nLFxuICAgICAgICBJZGVudGlmaWVyOiAnSWRlbnRpZmllcicsXG4gICAgICAgIElmU3RhdGVtZW50OiAnSWZTdGF0ZW1lbnQnLFxuICAgICAgICBMaXRlcmFsOiAnTGl0ZXJhbCcsXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6ICdMYWJlbGVkU3RhdGVtZW50JyxcbiAgICAgICAgTG9naWNhbEV4cHJlc3Npb246ICdMb2dpY2FsRXhwcmVzc2lvbicsXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246ICdNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAgICAgTmV3RXhwcmVzc2lvbjogJ05ld0V4cHJlc3Npb24nLFxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiAnT2JqZWN0RXhwcmVzc2lvbicsXG4gICAgICAgIFByb2dyYW06ICdQcm9ncmFtJyxcbiAgICAgICAgUHJvcGVydHk6ICdQcm9wZXJ0eScsXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogJ1JldHVyblN0YXRlbWVudCcsXG4gICAgICAgIFNlcXVlbmNlRXhwcmVzc2lvbjogJ1NlcXVlbmNlRXhwcmVzc2lvbicsXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsXG4gICAgICAgIFN3aXRjaENhc2U6ICdTd2l0Y2hDYXNlJyxcbiAgICAgICAgVGhpc0V4cHJlc3Npb246ICdUaGlzRXhwcmVzc2lvbicsXG4gICAgICAgIFRocm93U3RhdGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLFxuICAgICAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0ZW1lbnQnLFxuICAgICAgICBVbmFyeUV4cHJlc3Npb246ICdVbmFyeUV4cHJlc3Npb24nLFxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiAnVXBkYXRlRXhwcmVzc2lvbicsXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiAnVmFyaWFibGVEZWNsYXJhdG9yJyxcbiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6ICdXaGlsZVN0YXRlbWVudCcsXG4gICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50J1xuICAgIH07XG5cbiAgICBQcm9wZXJ0eUtpbmQgPSB7XG4gICAgICAgIERhdGE6IDEsXG4gICAgICAgIEdldDogMixcbiAgICAgICAgU2V0OiA0XG4gICAgfTtcblxuICAgIC8vIEVycm9yIG1lc3NhZ2VzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gVjguXG4gICAgTWVzc2FnZXMgPSB7XG4gICAgICAgIFVuZXhwZWN0ZWRUb2tlbjogICdVbmV4cGVjdGVkIHRva2VuICUwJyxcbiAgICAgICAgVW5leHBlY3RlZE51bWJlcjogICdVbmV4cGVjdGVkIG51bWJlcicsXG4gICAgICAgIFVuZXhwZWN0ZWRTdHJpbmc6ICAnVW5leHBlY3RlZCBzdHJpbmcnLFxuICAgICAgICBVbmV4cGVjdGVkSWRlbnRpZmllcjogICdVbmV4cGVjdGVkIGlkZW50aWZpZXInLFxuICAgICAgICBVbmV4cGVjdGVkUmVzZXJ2ZWQ6ICAnVW5leHBlY3RlZCByZXNlcnZlZCB3b3JkJyxcbiAgICAgICAgVW5leHBlY3RlZEVPUzogICdVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCcsXG4gICAgICAgIE5ld2xpbmVBZnRlclRocm93OiAgJ0lsbGVnYWwgbmV3bGluZSBhZnRlciB0aHJvdycsXG4gICAgICAgIEludmFsaWRSZWdFeHA6ICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbicsXG4gICAgICAgIFVudGVybWluYXRlZFJlZ0V4cDogICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbWlzc2luZyAvJyxcbiAgICAgICAgSW52YWxpZExIU0luQXNzaWdubWVudDogICdJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGFzc2lnbm1lbnQnLFxuICAgICAgICBJbnZhbGlkTEhTSW5Gb3JJbjogICdJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGZvci1pbicsXG4gICAgICAgIE11bHRpcGxlRGVmYXVsdHNJblN3aXRjaDogJ01vcmUgdGhhbiBvbmUgZGVmYXVsdCBjbGF1c2UgaW4gc3dpdGNoIHN0YXRlbWVudCcsXG4gICAgICAgIE5vQ2F0Y2hPckZpbmFsbHk6ICAnTWlzc2luZyBjYXRjaCBvciBmaW5hbGx5IGFmdGVyIHRyeScsXG4gICAgICAgIFVua25vd25MYWJlbDogJ1VuZGVmaW5lZCBsYWJlbCBcXCclMFxcJycsXG4gICAgICAgIFJlZGVjbGFyYXRpb246ICclMCBcXCclMVxcJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkJyxcbiAgICAgICAgSWxsZWdhbENvbnRpbnVlOiAnSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1lbnQnLFxuICAgICAgICBJbGxlZ2FsQnJlYWs6ICdJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudCcsXG4gICAgICAgIElsbGVnYWxSZXR1cm46ICdJbGxlZ2FsIHJldHVybiBzdGF0ZW1lbnQnLFxuICAgICAgICBTdHJpY3RNb2RlV2l0aDogICdTdHJpY3QgbW9kZSBjb2RlIG1heSBub3QgaW5jbHVkZSBhIHdpdGggc3RhdGVtZW50JyxcbiAgICAgICAgU3RyaWN0Q2F0Y2hWYXJpYWJsZTogICdDYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0VmFyTmFtZTogICdWYXJpYWJsZSBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RQYXJhbU5hbWU6ICAnUGFyYW1ldGVyIG5hbWUgZXZhbCBvciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RQYXJhbUR1cGU6ICdTdHJpY3QgbW9kZSBmdW5jdGlvbiBtYXkgbm90IGhhdmUgZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcycsXG4gICAgICAgIFN0cmljdEZ1bmN0aW9uTmFtZTogICdGdW5jdGlvbiBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RPY3RhbExpdGVyYWw6ICAnT2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLicsXG4gICAgICAgIFN0cmljdERlbGV0ZTogICdEZWxldGUgb2YgYW4gdW5xdWFsaWZpZWQgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZS4nLFxuICAgICAgICBTdHJpY3REdXBsaWNhdGVQcm9wZXJ0eTogICdEdXBsaWNhdGUgZGF0YSBwcm9wZXJ0eSBpbiBvYmplY3QgbGl0ZXJhbCBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsXG4gICAgICAgIEFjY2Vzc29yRGF0YVByb3BlcnR5OiAgJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBkYXRhIGFuZCBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUnLFxuICAgICAgICBBY2Nlc3NvckdldFNldDogICdPYmplY3QgbGl0ZXJhbCBtYXkgbm90IGhhdmUgbXVsdGlwbGUgZ2V0L3NldCBhY2Nlc3NvcnMgd2l0aCB0aGUgc2FtZSBuYW1lJyxcbiAgICAgICAgU3RyaWN0TEhTQXNzaWdubWVudDogICdBc3NpZ25tZW50IHRvIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJyxcbiAgICAgICAgU3RyaWN0TEhTUG9zdGZpeDogICdQb3N0Zml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RMSFNQcmVmaXg6ICAnUHJlZml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuICAgICAgICBTdHJpY3RSZXNlcnZlZFdvcmQ6ICAnVXNlIG9mIGZ1dHVyZSByZXNlcnZlZCB3b3JkIGluIHN0cmljdCBtb2RlJ1xuICAgIH07XG5cbiAgICAvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4LnB5LlxuICAgIFJlZ2V4ID0ge1xuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3IFJlZ0V4cCgnW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTI3XFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwXFx1MDhBMi1cXHUwOEFDXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5NzdcXHUwOTc5LVxcdTA5N0ZcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzM1xcdTBDMzUtXFx1MEMzOVxcdTBDM0RcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjBcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUNcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5N1xcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTc5M1xcdUE3QTAtXFx1QTdBQVxcdUE3RjgtXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBODAtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXScpLFxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzMDAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MjdcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwXFx1MDhBMi1cXHUwOEFDXFx1MDhFNC1cXHUwOEZFXFx1MDkwMC1cXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk3MS1cXHUwOTc3XFx1MDk3OS1cXHUwOTdGXFx1MDk4MS1cXHUwOTgzXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCQy1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0VcXHUwOUQ3XFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTNcXHUwOUU2LVxcdTA5RjFcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDEtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzM1xcdTBDMzUtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OFxcdTBDNTlcXHUwQzYwLVxcdTBDNjNcXHUwQzY2LVxcdTBDNkZcXHUwQzgyXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMlxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU3XFx1MEQ2MC1cXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4MlxcdTBEODNcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREYyXFx1MERGM1xcdTBFMDEtXFx1MEUzQVxcdTBFNDAtXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUI5XFx1MEVCQi1cXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0UtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGNzEtXFx1MEY4NFxcdTBGODYtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDAwLVxcdTEwNDlcXHUxMDUwLVxcdTEwOURcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM1RC1cXHUxMzVGXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkYwXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzE0XFx1MTcyMC1cXHUxNzM0XFx1MTc0MC1cXHUxNzUzXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc3MlxcdTE3NzNcXHUxNzgwLVxcdTE3RDNcXHUxN0Q3XFx1MTdEQ1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODEwLVxcdTE4MTlcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUNcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxOUQwLVxcdTE5RDlcXHUxQTAwLVxcdTFBMUJcXHUxQTIwLVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUE3XFx1MUIwMC1cXHUxQjRCXFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQkYzXFx1MUMwMC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM0RC1cXHUxQzdEXFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0Y2XFx1MUQwMC1cXHUxREU2XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5XFx1MzA5QVxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZDQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTY5N1xcdUE2OUYtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTc5M1xcdUE3QTAtXFx1QTdBQVxcdUE3RjgtXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNFxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOTAwLVxcdUE5MkRcXHVBOTMwLVxcdUE5NTNcXHVBOTYwLVxcdUE5N0NcXHVBOTgwLVxcdUE5QzBcXHVBOUNGLVxcdUE5RDlcXHVBQTAwLVxcdUFBMzZcXHVBQTQwLVxcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3QlxcdUFBODAtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMjZcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdJylcbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgIC8vIFRoaXMgaXMgb25seSB0byBoYXZlIGEgYmV0dGVyIGNvbnRyYWN0IHNlbWFudGljLCBpLmUuIGFub3RoZXIgc2FmZXR5IG5ldFxuICAgIC8vIHRvIGNhdGNoIGEgbG9naWMgZXJyb3IuIFRoZSBjb25kaXRpb24gc2hhbGwgYmUgZnVsZmlsbGVkIGluIG5vcm1hbCBjYXNlLlxuICAgIC8vIERvIE5PVCB1c2UgdGhpcyB0byBlbmZvcmNlIGEgY2VydGFpbiBjb25kaXRpb24gb24gYW55IHVzZXIgaW5wdXQuXG5cbiAgICBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBU1NFUlQ6ICcgKyBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAoY2ggPj0gNDggJiYgY2ggPD0gNTcpOyAgIC8vIDAuLjlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0hleERpZ2l0KGNoKSB7XG4gICAgICAgIHJldHVybiAnMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRicuaW5kZXhPZihjaCkgPj0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc09jdGFsRGlnaXQoY2gpIHtcbiAgICAgICAgcmV0dXJuICcwMTIzNDU2NycuaW5kZXhPZihjaCkgPj0gMDtcbiAgICB9XG5cblxuICAgIC8vIDcuMiBXaGl0ZSBTcGFjZVxuXG4gICAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7XG4gICAgICAgIHJldHVybiAoY2ggPT09IDB4MjApIHx8IChjaCA9PT0gMHgwOSkgfHwgKGNoID09PSAweDBCKSB8fCAoY2ggPT09IDB4MEMpIHx8IChjaCA9PT0gMHhBMCkgfHxcbiAgICAgICAgICAgIChjaCA+PSAweDE2ODAgJiYgWzB4MTY4MCwgMHgxODBFLCAweDIwMDAsIDB4MjAwMSwgMHgyMDAyLCAweDIwMDMsIDB4MjAwNCwgMHgyMDA1LCAweDIwMDYsIDB4MjAwNywgMHgyMDA4LCAweDIwMDksIDB4MjAwQSwgMHgyMDJGLCAweDIwNUYsIDB4MzAwMCwgMHhGRUZGXS5pbmRleE9mKGNoKSA+PSAwKTtcbiAgICB9XG5cbiAgICAvLyA3LjMgTGluZSBUZXJtaW5hdG9yc1xuXG4gICAgZnVuY3Rpb24gaXNMaW5lVGVybWluYXRvcihjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDBBKSB8fCAoY2ggPT09IDB4MEQpIHx8IChjaCA9PT0gMHgyMDI4KSB8fCAoY2ggPT09IDB4MjAyOSk7XG4gICAgfVxuXG4gICAgLy8gNy42IElkZW50aWZpZXIgTmFtZXMgYW5kIElkZW50aWZpZXJzXG5cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09IDB4NDApIHx8ICAoY2ggPT09IDB4MjQpIHx8IChjaCA9PT0gMHg1RikgfHwgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2NvcmUpXG4gICAgICAgICAgICAoY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBKSB8fCAgICAgICAgIC8vIEEuLlpcbiAgICAgICAgICAgIChjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EpIHx8ICAgICAgICAgLy8gYS4uelxuICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAgICAgICAgICAgICAvLyBcXCAoYmFja3NsYXNoKVxuICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydChjaCkge1xuICAgICAgICByZXR1cm4gKGNoID09PSAweDI0KSB8fCAoY2ggPT09IDB4NUYpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKVxuICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAgICAgICAvLyBBLi5aXG4gICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAgICAgICAgIC8vIGEuLnpcbiAgICAgICAgICAgIChjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkpIHx8ICAgICAgICAgLy8gMC4uOVxuICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAgICAgICAgICAgICAvLyBcXCAoYmFja3NsYXNoKVxuICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpKTtcbiAgICB9XG5cbiAgICAvLyA3LjYuMS4yIEZ1dHVyZSBSZXNlcnZlZCBXb3Jkc1xuXG4gICAgZnVuY3Rpb24gaXNGdXR1cmVSZXNlcnZlZFdvcmQoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICBjYXNlICdleHRlbmRzJzpcbiAgICAgICAgY2FzZSAnaW1wb3J0JzpcbiAgICAgICAgY2FzZSAnc3VwZXInOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpIHtcbiAgICAgICAgc3dpdGNoIChpZCkge1xuICAgICAgICBjYXNlICdpbXBsZW1lbnRzJzpcbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQnOlxuICAgICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICBjYXNlICdzdGF0aWMnOlxuICAgICAgICBjYXNlICd5aWVsZCc6XG4gICAgICAgIGNhc2UgJ2xldCc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUmVzdHJpY3RlZFdvcmQoaWQpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSAnZXZhbCcgfHwgaWQgPT09ICdhcmd1bWVudHMnO1xuICAgIH1cblxuICAgIC8vIDcuNi4xLjEgS2V5d29yZHNcblxuICAgIGZ1bmN0aW9uIGlzS2V5d29yZChpZCkge1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZChpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2NvbnN0JyBpcyBzcGVjaWFsaXplZCBhcyBLZXl3b3JkIGluIFY4LlxuICAgICAgICAvLyAneWllbGQnIGFuZCAnbGV0JyBhcmUgZm9yIGNvbXBhdGlibGl0eSB3aXRoIFNwaWRlck1vbmtleSBhbmQgRVMubmV4dC5cbiAgICAgICAgLy8gU29tZSBvdGhlcnMgYXJlIGZyb20gZnV0dXJlIHJlc2VydmVkIHdvcmRzLlxuXG4gICAgICAgIHN3aXRjaCAoaWQubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpZicpIHx8IChpZCA9PT0gJ2luJykgfHwgKGlkID09PSAnZG8nKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3ZhcicpIHx8IChpZCA9PT0gJ2ZvcicpIHx8IChpZCA9PT0gJ25ldycpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAndHJ5JykgfHwgKGlkID09PSAnbGV0Jyk7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd0aGlzJykgfHwgKGlkID09PSAnZWxzZScpIHx8IChpZCA9PT0gJ2Nhc2UnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9PT0gJ2NhdGNoJykgfHxcbiAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fFxuICAgICAgICAgICAgICAgIChpZCA9PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8XG4gICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNoJykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2Z1bmN0aW9uJykgfHwgKGlkID09PSAnY29udGludWUnKSB8fCAoaWQgPT09ICdkZWJ1Z2dlcicpO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIDcuNCBDb21tZW50c1xuXG4gICAgZnVuY3Rpb24gYWRkQ29tbWVudCh0eXBlLCB2YWx1ZSwgc3RhcnQsIGVuZCwgbG9jKSB7XG4gICAgICAgIHZhciBjb21tZW50LCBhdHRhY2hlcjtcblxuICAgICAgICBhc3NlcnQodHlwZW9mIHN0YXJ0ID09PSAnbnVtYmVyJywgJ0NvbW1lbnQgbXVzdCBoYXZlIHZhbGlkIHBvc2l0aW9uJyk7XG5cbiAgICAgICAgLy8gQmVjYXVzZSB0aGUgd2F5IHRoZSBhY3R1YWwgdG9rZW4gaXMgc2Nhbm5lZCwgb2Z0ZW4gdGhlIGNvbW1lbnRzXG4gICAgICAgIC8vIChpZiBhbnkpIGFyZSBza2lwcGVkIHR3aWNlIGR1cmluZyB0aGUgbGV4aWNhbCBhbmFseXNpcy5cbiAgICAgICAgLy8gVGh1cywgd2UgbmVlZCB0byBza2lwIGFkZGluZyBhIGNvbW1lbnQgaWYgdGhlIGNvbW1lbnQgYXJyYXkgYWxyZWFkeVxuICAgICAgICAvLyBoYW5kbGVkIGl0LlxuICAgICAgICBpZiAoc3RhdGUubGFzdENvbW1lbnRTdGFydCA+PSBzdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxhc3RDb21tZW50U3RhcnQgPSBzdGFydDtcblxuICAgICAgICBjb21tZW50ID0ge1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZXh0cmEucmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbW1lbnQucmFuZ2UgPSBbc3RhcnQsIGVuZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgY29tbWVudC5sb2MgPSBsb2M7XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEuY29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcFNpbmdsZUxpbmVDb21tZW50KG9mZnNldCkge1xuICAgICAgICB2YXIgc3RhcnQsIGxvYywgY2gsIGNvbW1lbnQ7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleCAtIG9mZnNldDtcbiAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSBvZmZzZXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgb2Zmc2V0LCBpbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGFkZENvbW1lbnQoJ0xpbmUnLCBjb21tZW50LCBzdGFydCwgaW5kZXggLSAxLCBsb2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDEzICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHRyYS5jb21tZW50cykge1xuICAgICAgICAgICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIG9mZnNldCwgaW5kZXgpO1xuICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQsIGluZGV4LCBsb2MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcE11bHRpTGluZUNvbW1lbnQoKSB7XG4gICAgICAgIHZhciBzdGFydCwgbG9jLCBjaCwgY29tbWVudDtcblxuICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gaW5kZXggLSAyO1xuICAgICAgICAgICAgbG9jID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSAyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MEQgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgwQSkge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJBKSB7XG4gICAgICAgICAgICAgICAgLy8gQmxvY2sgY29tbWVudCBlbmRzIHdpdGggJyovJy5cbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgyRikge1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyAyLCBpbmRleCAtIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb21tZW50KCdCbG9jaycsIGNvbW1lbnQsIHN0YXJ0LCBpbmRleCwgbG9jKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2tpcENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBjaCwgc3RhcnQ7XG5cbiAgICAgICAgc3RhcnQgPSAoaW5kZXggPT09IDApO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuXG4gICAgICAgICAgICBpZiAoaXNXaGl0ZVNwYWNlKGNoKSkge1xuICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MEQgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDBBKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjtcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJGKSB7IC8vIFUrMDAyRiBpcyAnLydcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDJGKSB7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgyKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkEpIHsgIC8vIFUrMDAyQSBpcyAnKidcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgc2tpcE11bHRpTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ICYmIGNoID09PSAweDJEKSB7IC8vIFUrMDAyRCBpcyAnLSdcbiAgICAgICAgICAgICAgICAvLyBVKzAwM0UgaXMgJz4nXG4gICAgICAgICAgICAgICAgaWYgKChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpID09PSAweDJEKSAmJiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAyKSA9PT0gMHgzRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0tPicgaXMgYSBzaW5nbGUtbGluZSBjb21tZW50XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDM7XG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDNDKSB7IC8vIFUrMDAzQyBpcyAnPCdcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlLnNsaWNlKGluZGV4ICsgMSwgaW5kZXggKyA0KSA9PT0gJyEtLScpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYDxgXG4gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAhYFxuICAgICAgICAgICAgICAgICAgICArK2luZGV4OyAvLyBgLWBcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1gXG4gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCg0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbkhleEVzY2FwZShwcmVmaXgpIHtcbiAgICAgICAgdmFyIGksIGxlbiwgY2gsIGNvZGUgPSAwO1xuXG4gICAgICAgIGxlbiA9IChwcmVmaXggPT09ICd1JykgPyA0IDogMjtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogMTYgKyAnMDEyMzQ1Njc4OWFiY2RlZicuaW5kZXhPZihjaC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVzY2FwZWRJZGVudGlmaWVyKCkge1xuICAgICAgICB2YXIgY2gsIGlkO1xuXG4gICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgrKyk7XG4gICAgICAgIGlkID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG5cbiAgICAgICAgLy8gJ1xcdScgKFUrMDA1QywgVSswMDc1KSBkZW5vdGVzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHtcbiAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDB4NzUpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgY2ggPSBzY2FuSGV4RXNjYXBlKCd1Jyk7XG4gICAgICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnXFxcXCcgfHwgIWlzSWRlbnRpZmllclN0YXJ0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWQgPSBjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2gpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgaWQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG5cbiAgICAgICAgICAgIC8vICdcXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgICAgICAgIGlmIChjaCA9PT0gMHg1Qykge1xuICAgICAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDAsIGlkLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDB4NzUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgICAgIGNoID0gc2NhbkhleEVzY2FwZSgndScpO1xuICAgICAgICAgICAgICAgIGlmICghY2ggfHwgY2ggPT09ICdcXFxcJyB8fCAhaXNJZGVudGlmaWVyUGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlkICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciBzdGFydCwgY2g7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleCsrO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAweDVDKSB7XG4gICAgICAgICAgICAgICAgLy8gQmxhY2tzbGFzaCAoVSswMDVDKSBtYXJrcyBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZS5cbiAgICAgICAgICAgICAgICBpbmRleCA9IHN0YXJ0O1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRFc2NhcGVkSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclBhcnQoY2gpKSB7XG4gICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc291cmNlLnNsaWNlKHN0YXJ0LCBpbmRleCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbklkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciBzdGFydCwgaWQsIHR5cGU7XG5cbiAgICAgICAgc3RhcnQgPSBpbmRleDtcblxuICAgICAgICAvLyBCYWNrc2xhc2ggKFUrMDA1Qykgc3RhcnRzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgICAgICBpZCA9IChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4NUMpID8gZ2V0RXNjYXBlZElkZW50aWZpZXIoKSA6IGdldElkZW50aWZpZXIoKTtcblxuICAgICAgICAvLyBUaGVyZSBpcyBubyBrZXl3b3JkIG9yIGxpdGVyYWwgd2l0aCBvbmx5IG9uZSBjaGFyYWN0ZXIuXG4gICAgICAgIC8vIFRodXMsIGl0IG11c3QgYmUgYW4gaWRlbnRpZmllci5cbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLklkZW50aWZpZXI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNLZXl3b3JkKGlkKSkge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLktleXdvcmQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQgPT09ICdudWxsJykge1xuICAgICAgICAgICAgdHlwZSA9IFRva2VuLk51bGxMaXRlcmFsO1xuICAgICAgICB9IGVsc2UgaWYgKGlkID09PSAndHJ1ZScgfHwgaWQgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5Cb29sZWFuTGl0ZXJhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5JZGVudGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG5cbiAgICAvLyA3LjcgUHVuY3R1YXRvcnNcblxuICAgIGZ1bmN0aW9uIHNjYW5QdW5jdHVhdG9yKCkge1xuICAgICAgICB2YXIgc3RhcnQgPSBpbmRleCxcbiAgICAgICAgICAgIGNvZGUgPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCksXG4gICAgICAgICAgICBjb2RlMixcbiAgICAgICAgICAgIGNoMSA9IHNvdXJjZVtpbmRleF0sXG4gICAgICAgICAgICBjaDIsXG4gICAgICAgICAgICBjaDMsXG4gICAgICAgICAgICBjaDQ7XG5cbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIG1vc3QgY29tbW9uIHNpbmdsZS1jaGFyYWN0ZXIgcHVuY3R1YXRvcnMuXG4gICAgICAgIGNhc2UgMHgyRTogIC8vIC4gZG90XG4gICAgICAgIGNhc2UgMHgyODogIC8vICggb3BlbiBicmFja2V0XG4gICAgICAgIGNhc2UgMHgyOTogIC8vICkgY2xvc2UgYnJhY2tldFxuICAgICAgICBjYXNlIDB4M0I6ICAvLyA7IHNlbWljb2xvblxuICAgICAgICBjYXNlIDB4MkM6ICAvLyAsIGNvbW1hXG4gICAgICAgIGNhc2UgMHg3QjogIC8vIHsgb3BlbiBjdXJseSBicmFjZVxuICAgICAgICBjYXNlIDB4N0Q6ICAvLyB9IGNsb3NlIGN1cmx5IGJyYWNlXG4gICAgICAgIGNhc2UgMHg1QjogIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiAgLy8gXVxuICAgICAgICBjYXNlIDB4M0E6ICAvLyA6XG4gICAgICAgIGNhc2UgMHgzRjogIC8vID9cbiAgICAgICAgY2FzZSAweDdFOiAgLy8gflxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgIGlmIChleHRyYS50b2tlbml6ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAweDI4KSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5QYXJlblRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4N0IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEub3BlbkN1cmx5VG9rZW4gPSBleHRyYS50b2tlbnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjb2RlMiA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIC8vICc9JyAoVSswMDNEKSBtYXJrcyBhbiBhc3NpZ25tZW50IG9yIGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gICAgICAgICAgICBpZiAoY29kZTIgPT09IDB4M0QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDB4MkI6ICAvLyArXG4gICAgICAgICAgICAgICAgY2FzZSAweDJEOiAgLy8gLVxuICAgICAgICAgICAgICAgIGNhc2UgMHgyRjogIC8vIC9cbiAgICAgICAgICAgICAgICBjYXNlIDB4M0M6ICAvLyA8XG4gICAgICAgICAgICAgICAgY2FzZSAweDNFOiAgLy8gPlxuICAgICAgICAgICAgICAgIGNhc2UgMHg1RTogIC8vIF5cbiAgICAgICAgICAgICAgICBjYXNlIDB4N0M6ICAvLyB8XG4gICAgICAgICAgICAgICAgY2FzZSAweDI1OiAgLy8gJVxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNjogIC8vICZcbiAgICAgICAgICAgICAgICBjYXNlIDB4MkE6ICAvLyAqXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNhc2UgMHgyMTogLy8gIVxuICAgICAgICAgICAgICAgIGNhc2UgMHgzRDogLy8gPVxuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICE9PSBhbmQgPT09XG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc291cmNlLnNsaWNlKHN0YXJ0LCBpbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC1jaGFyYWN0ZXIgcHVuY3R1YXRvcjogPj4+PVxuXG4gICAgICAgIGNoNCA9IHNvdXJjZS5zdWJzdHIoaW5kZXgsIDQpO1xuXG4gICAgICAgIGlmIChjaDQgPT09ICc+Pj49Jykge1xuICAgICAgICAgICAgaW5kZXggKz0gNDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2g0LFxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPT09ICE9PSA+Pj4gPDw9ID4+PVxuXG4gICAgICAgIGNoMyA9IGNoNC5zdWJzdHIoMCwgMyk7XG5cbiAgICAgICAgaWYgKGNoMyA9PT0gJz4+PicgfHwgY2gzID09PSAnPDw9JyB8fCBjaDMgPT09ICc+Pj0nKSB7XG4gICAgICAgICAgICBpbmRleCArPSAzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDMsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyIDItY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiArKyAtLSA8PCA+PiAmJiB8fFxuICAgICAgICBjaDIgPSBjaDMuc3Vic3RyKDAsIDIpO1xuXG4gICAgICAgIGlmICgoY2gxID09PSBjaDJbMV0gJiYgKCcrLTw+JnwnLmluZGV4T2YoY2gxKSA+PSAwKSkgfHwgY2gyID09PSAnPT4nKSB7XG4gICAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaDIsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEtY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiA8ID4gPSAhICsgLSAqICUgJiB8IF4gL1xuICAgICAgICBpZiAoJzw+PSErLSolJnxeLycuaW5kZXhPZihjaDEpID49IDApIHtcbiAgICAgICAgICAgICsraW5kZXg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNoMSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgIH1cblxuICAgIC8vIDcuOC4zIE51bWVyaWMgTGl0ZXJhbHNcblxuICAgIGZ1bmN0aW9uIHNjYW5IZXhMaXRlcmFsKHN0YXJ0KSB7XG4gICAgICAgIHZhciBudW1iZXIgPSAnJztcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChudW1iZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KCcweCcgKyBudW1iZXIsIDE2KSxcbiAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgIGVuZDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KSB7XG4gICAgICAgIHZhciBudW1iZXIgPSAnMCcgKyBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKCFpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSB8fCBpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW4uTnVtZXJpY0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQobnVtYmVyLCA4KSxcbiAgICAgICAgICAgIG9jdGFsOiB0cnVlLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5OdW1lcmljTGl0ZXJhbCgpIHtcbiAgICAgICAgdmFyIG51bWJlciwgc3RhcnQsIGNoO1xuXG4gICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgYXNzZXJ0KGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpIHx8IChjaCA9PT0gJy4nKSxcbiAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgZGVjaW1hbCBkaWdpdCBvciBhIGRlY2ltYWwgcG9pbnQnKTtcblxuICAgICAgICBzdGFydCA9IGluZGV4O1xuICAgICAgICBudW1iZXIgPSAnJztcbiAgICAgICAgaWYgKGNoICE9PSAnLicpIHtcbiAgICAgICAgICAgIG51bWJlciA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcblxuICAgICAgICAgICAgLy8gSGV4IG51bWJlciBzdGFydHMgd2l0aCAnMHgnLlxuICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJy5cbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09ICcwJykge1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3gnIHx8IGNoID09PSAnWCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5IZXhMaXRlcmFsKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5PY3RhbExpdGVyYWwoc3RhcnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJyBzdWNoIGFzICcwOScgaXMgaWxsZWdhbC5cbiAgICAgICAgICAgICAgICBpZiAoY2ggJiYgaXNEZWNpbWFsRGlnaXQoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB3aGlsZSAoaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09ICdlJyB8fCBjaCA9PT0gJ0UnKSB7XG4gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJyB8fCBjaCA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW4uTnVtZXJpY0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW1iZXIpLFxuICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIDcuOC40IFN0cmluZyBMaXRlcmFsc1xuXG4gICAgZnVuY3Rpb24gc2NhblN0cmluZ0xpdGVyYWwoKSB7XG4gICAgICAgIHZhciBzdHIgPSAnJywgcXVvdGUsIHN0YXJ0LCBjaCwgY29kZSwgdW5lc2NhcGVkLCByZXN0b3JlLCBvY3RhbCA9IGZhbHNlLCBzdGFydExpbmVOdW1iZXIsIHN0YXJ0TGluZVN0YXJ0O1xuICAgICAgICBzdGFydExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyO1xuICAgICAgICBzdGFydExpbmVTdGFydCA9IGxpbmVTdGFydDtcblxuICAgICAgICBxdW90ZSA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydCgocXVvdGUgPT09ICdcXCcnIHx8IHF1b3RlID09PSAnXCInKSxcbiAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbCBtdXN0IHN0YXJ0cyB3aXRoIGEgcXVvdGUnKTtcblxuICAgICAgICBzdGFydCA9IGluZGV4O1xuICAgICAgICArK2luZGV4O1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG5cbiAgICAgICAgICAgIGlmIChjaCA9PT0gcXVvdGUpIHtcbiAgICAgICAgICAgICAgICBxdW90ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgaWYgKCFjaCB8fCAhaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZCA9IHNjYW5IZXhFc2NhcGUoY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuZXNjYXBlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xccic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcYic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcZic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xceDBCJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPY3RhbERpZ2l0KGNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnMDEyMzQ1NjcnLmluZGV4T2YoY2gpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXFwwIGlzIG5vdCBvY3RhbCBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMgZGlnaXRzIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiBzdHJpbmcgc3RhcnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggMCwgMSwgMiwgM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzAxMjMnLmluZGV4T2YoY2gpID49IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICAnXFxyJyAmJiBzb3VyY2VbaW5kZXhdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHF1b3RlICE9PSAnJykge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuLlN0cmluZ0xpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogc3RyLFxuICAgICAgICAgICAgb2N0YWw6IG9jdGFsLFxuICAgICAgICAgICAgc3RhcnRMaW5lTnVtYmVyOiBzdGFydExpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydExpbmVTdGFydDogc3RhcnRMaW5lU3RhcnQsXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGVzdFJlZ0V4cChwYXR0ZXJuLCBmbGFncykge1xuICAgICAgICB2YXIgdmFsdWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkUmVnRXhwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJlZ0V4cEJvZHkoKSB7XG4gICAgICAgIHZhciBjaCwgc3RyLCBjbGFzc01hcmtlciwgdGVybWluYXRlZCwgYm9keTtcblxuICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgIGFzc2VydChjaCA9PT0gJy8nLCAnUmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgc2xhc2gnKTtcbiAgICAgICAgc3RyID0gc291cmNlW2luZGV4KytdO1xuXG4gICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7XG4gICAgICAgIHRlcm1pbmF0ZWQgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTtcbiAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107XG4gICAgICAgICAgICAgICAgLy8gRUNNQS0yNjIgNy44LjVcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjbGFzc01hcmtlcikge1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVudGVybWluYXRlZFJlZ0V4cCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeGNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoLlxuICAgICAgICBib2R5ID0gc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogYm9keSxcbiAgICAgICAgICAgIGxpdGVyYWw6IHN0clxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBGbGFncygpIHtcbiAgICAgICAgdmFyIGNoLCBzdHIsIGZsYWdzLCByZXN0b3JlO1xuXG4gICAgICAgIHN0ciA9ICcnO1xuICAgICAgICBmbGFncyA9ICcnO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghaXNJZGVudGlmaWVyUGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICAgICAgaWYgKGNoID09PSAnXFxcXCcgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAndScpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdG9yZSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSBjaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc3RyICs9ICdcXFxcdSc7IHJlc3RvcmUgPCBpbmRleDsgKytyZXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNvdXJjZVtyZXN0b3JlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICs9ICd1JztcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXHUnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXCc7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgKz0gY2g7XG4gICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBmbGFncyxcbiAgICAgICAgICAgIGxpdGVyYWw6IHN0clxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHAoKSB7XG4gICAgICAgIHZhciBzdGFydCwgYm9keSwgZmxhZ3MsIHBhdHRlcm4sIHZhbHVlO1xuXG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIHN0YXJ0ID0gaW5kZXg7XG5cbiAgICAgICAgYm9keSA9IHNjYW5SZWdFeHBCb2R5KCk7XG4gICAgICAgIGZsYWdzID0gc2NhblJlZ0V4cEZsYWdzKCk7XG4gICAgICAgIHZhbHVlID0gdGVzdFJlZ0V4cChib2R5LnZhbHVlLCBmbGFncy52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlJlZ3VsYXJFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpdGVyYWw6IGJvZHkubGl0ZXJhbCArIGZsYWdzLmxpdGVyYWwsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IGluZGV4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29sbGVjdFJlZ2V4KCkge1xuICAgICAgICB2YXIgcG9zLCBsb2MsIHJlZ2V4LCB0b2tlbjtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsb2MgPSB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlZ2V4ID0gc2NhblJlZ0V4cCgpO1xuICAgICAgICBsb2MuZW5kID0ge1xuICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnRcbiAgICAgICAgfTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIWV4dHJhLnRva2VuaXplKSB7XG4gICAgICAgICAgICAvLyBQb3AgdGhlIHByZXZpb3VzIHRva2VuLCB3aGljaCBpcyBsaWtlbHkgJy8nIG9yICcvPSdcbiAgICAgICAgICAgIGlmIChleHRyYS50b2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4ucmFuZ2VbMF0gPT09IHBvcyAmJiB0b2tlbi50eXBlID09PSAnUHVuY3R1YXRvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnLycgfHwgdG9rZW4udmFsdWUgPT09ICcvPScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdSZWd1bGFyRXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlZ2V4LmxpdGVyYWwsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtwb3MsIGluZGV4XSxcbiAgICAgICAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZSh0b2tlbikge1xuICAgICAgICByZXR1cm4gdG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllciB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW4uS2V5d29yZCB8fFxuICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwgfHxcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkdmFuY2VTbGFzaCgpIHtcbiAgICAgICAgdmFyIHByZXZUb2tlbixcbiAgICAgICAgICAgIGNoZWNrVG9rZW47XG4gICAgICAgIC8vIFVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zd2VldC5qcy93aWtpL2Rlc2lnblxuICAgICAgICBwcmV2VG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEudG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIXByZXZUb2tlbikge1xuICAgICAgICAgICAgLy8gTm90aGluZyBiZWZvcmUgdGhhdDogaXQgY2Fubm90IGJlIGEgZGl2aXNpb24uXG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXZUb2tlbi50eXBlID09PSAnUHVuY3R1YXRvcicpIHtcbiAgICAgICAgICAgIGlmIChwcmV2VG9rZW4udmFsdWUgPT09ICddJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJyknKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1Rva2VuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnR5cGUgPT09ICdLZXl3b3JkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrVG9rZW4udmFsdWUgPT09ICdpZicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAnd2hpbGUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ2ZvcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAnd2l0aCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICAvLyBEaXZpZGluZyBhIGZ1bmN0aW9uIGJ5IGFueXRoaW5nIG1ha2VzIGxpdHRsZSBzZW5zZSxcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSB0byBjaGVjayBmb3IgdGhhdC5cbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gM10gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDNdLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbm9ueW1vdXMgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDRdLnR5cGUgPT09ICdLZXl3b3JkJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYW1lZCBmdW5jdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjaGVja1Rva2VuIGRldGVybWluZXMgd2hldGhlciB0aGUgZnVuY3Rpb24gaXNcbiAgICAgICAgICAgICAgICAvLyBhIGRlY2xhcmF0aW9uIG9yIGFuIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgaWYgKEZuRXhwclRva2Vucy5pbmRleE9mKGNoZWNrVG9rZW4udmFsdWUpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgYW4gZXhwcmVzc2lvbi5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgZGVjbGFyYXRpb24uXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ0tleXdvcmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWR2YW5jZSgpIHtcbiAgICAgICAgdmFyIGNoO1xuXG4gICAgICAgIHNraXBDb21tZW50KCk7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5FT0YsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBzdGFydDogaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiBpbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpO1xuXG4gICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjaCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FuSWRlbnRpZmllcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmVyeSBjb21tb246ICggYW5kICkgYW5kIDtcbiAgICAgICAgaWYgKGNoID09PSAweDI4IHx8IGNoID09PSAweDI5IHx8IGNoID09PSAweDNCKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmluZyBsaXRlcmFsIHN0YXJ0cyB3aXRoIHNpbmdsZSBxdW90ZSAoVSswMDI3KSBvciBkb3VibGUgcXVvdGUgKFUrMDAyMikuXG4gICAgICAgIGlmIChjaCA9PT0gMHgyNyB8fCBjaCA9PT0gMHgyMikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYW5TdHJpbmdMaXRlcmFsKCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIERvdCAoLikgVSswMDJFIGNhbiBhbHNvIHN0YXJ0IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLCBoZW5jZSB0aGUgbmVlZFxuICAgICAgICAvLyB0byBjaGVjayB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICAgIGlmIChjaCA9PT0gMHgyRSkge1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWNpbWFsRGlnaXQoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFsKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTbGFzaCAoLykgVSswMDJGIGNhbiBhbHNvIHN0YXJ0IGEgcmVnZXguXG4gICAgICAgIGlmIChleHRyYS50b2tlbml6ZSAmJiBjaCA9PT0gMHgyRikge1xuICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VTbGFzaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29sbGVjdFRva2VuKCkge1xuICAgICAgICB2YXIgbG9jLCB0b2tlbiwgcmFuZ2UsIHZhbHVlO1xuXG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGxvYyA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlcixcbiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdG9rZW4gPSBhZHZhbmNlKCk7XG4gICAgICAgIGxvYy5lbmQgPSB7XG4gICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuTmFtZVt0b2tlbi50eXBlXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFt0b2tlbi5zdGFydCwgdG9rZW4uZW5kXSxcbiAgICAgICAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGluZGV4ID0gdG9rZW4uZW5kO1xuICAgICAgICBsaW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJlcjtcbiAgICAgICAgbGluZVN0YXJ0ID0gdG9rZW4ubGluZVN0YXJ0O1xuXG4gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2UoKTtcblxuICAgICAgICBpbmRleCA9IHRva2VuLmVuZDtcbiAgICAgICAgbGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7XG4gICAgICAgIGxpbmVTdGFydCA9IHRva2VuLmxpbmVTdGFydDtcblxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGVlaygpIHtcbiAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQ7XG5cbiAgICAgICAgcG9zID0gaW5kZXg7XG4gICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyO1xuICAgICAgICBzdGFydCA9IGxpbmVTdGFydDtcbiAgICAgICAgbG9va2FoZWFkID0gKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSA/IGNvbGxlY3RUb2tlbigpIDogYWR2YW5jZSgpO1xuICAgICAgICBpbmRleCA9IHBvcztcbiAgICAgICAgbGluZU51bWJlciA9IGxpbmU7XG4gICAgICAgIGxpbmVTdGFydCA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFBvc2l0aW9uKGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IG5ldyBQb3NpdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTtcbiAgICAgICAgdGhpcy5lbmQgPSBuZXcgUG9zaXRpb24obGluZSwgY29sdW1uKTtcbiAgICB9XG5cbiAgICBTeW50YXhUcmVlRGVsZWdhdGUgPSB7XG5cbiAgICAgICAgbmFtZTogJ1N5bnRheFRyZWUnLFxuXG4gICAgICAgIHByb2Nlc3NDb21tZW50OiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGxhc3RDaGlsZCwgdHJhaWxpbmdDb21tZW50cztcblxuICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LlByb2dyYW0pIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4dHJhLnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ0NvbW1lbnRzID0gZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVhdGluZyB0aGUgc3RhY2suXG4gICAgICAgICAgICB3aGlsZSAoZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYmIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgbGFzdENoaWxkID0gZXh0cmEuYm90dG9tUmlnaHRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzICYmIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHNbbGFzdENoaWxkLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1lbnRzID0gbGFzdENoaWxkLmxlYWRpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChleHRyYS5sZWFkaW5nQ29tbWVudHMubGVuZ3RoID4gMCAmJiBleHRyYS5sZWFkaW5nQ29tbWVudHNbZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCAtIDFdLnJhbmdlWzFdIDw9IG5vZGUucmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGV4dHJhLmxlYWRpbmdDb21tZW50cztcbiAgICAgICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZiAodHJhaWxpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgIG5vZGUudHJhaWxpbmdDb21tZW50cyA9IHRyYWlsaW5nQ29tbWVudHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucHVzaChub2RlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtYXJrRW5kOiBmdW5jdGlvbiAobm9kZSwgc3RhcnRUb2tlbikge1xuICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yYW5nZSA9IFtzdGFydFRva2VuLnN0YXJ0LCBpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXh0cmEubG9jKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5sb2MgPSBuZXcgU291cmNlTG9jYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyID09PSB1bmRlZmluZWQgPyAgc3RhcnRUb2tlbi5saW5lTnVtYmVyIDogc3RhcnRUb2tlbi5zdGFydExpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnQgLSAoc3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGluZVN0YXJ0IDogc3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCksXG4gICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4IC0gbGluZVN0YXJ0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RQcm9jZXNzKG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXh0cmEuYXR0YWNoQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NvbW1lbnQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSxcblxuICAgICAgICBwb3N0UHJvY2VzczogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBub2RlLmxvYy5zb3VyY2UgPSBleHRyYS5zb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVBcnJheUV4cHJlc3Npb246IGZ1bmN0aW9uIChlbGVtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQXJyYXlFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQXNzaWdubWVudEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHtcbiAgICAgICAgICAgIHZhciB0eXBlID0gKG9wZXJhdG9yID09PSAnfHwnIHx8IG9wZXJhdG9yID09PSAnJiYnKSA/IFN5bnRheC5Mb2dpY2FsRXhwcmVzc2lvbiA6XG4gICAgICAgICAgICAgICAgICAgICAgICBTeW50YXguQmluYXJ5RXhwcmVzc2lvbjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgICAgICAgICByaWdodDogcmlnaHRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5CbG9ja1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUJyZWFrU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkJyZWFrU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2FsbEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsXG4gICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ2F0Y2hDbGF1c2U6IGZ1bmN0aW9uIChwYXJhbSwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2F0Y2hDbGF1c2UsXG4gICAgICAgICAgICAgICAgcGFyYW06IHBhcmFtLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db25kaXRpb25hbEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICBjb25zZXF1ZW50OiBjb25zZXF1ZW50LFxuICAgICAgICAgICAgICAgIGFsdGVybmF0ZTogYWx0ZXJuYXRlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNvbnRpbnVlU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVEZWJ1Z2dlclN0YXRlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRGVidWdnZXJTdGF0ZW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRG9XaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKGJvZHksIHRlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkRvV2hpbGVTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUVtcHR5U3RhdGVtZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5FbXB0eVN0YXRlbWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50OiBmdW5jdGlvbiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZvclN0YXRlbWVudDogZnVuY3Rpb24gKGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRm9yU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGluaXQ6IGluaXQsXG4gICAgICAgICAgICAgICAgdGVzdDogdGVzdCxcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUZvckluU3RhdGVtZW50OiBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZvckluU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgZWFjaDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5jdGlvbkRlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcbiAgICAgICAgICAgICAgICByZXN0OiBudWxsLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVmYXVsdHMsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZ1bmN0aW9uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXG4gICAgICAgICAgICAgICAgcmVzdDogbnVsbCxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZUlkZW50aWZpZXI6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlSWZTdGF0ZW1lbnQ6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LklmU3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudCxcbiAgICAgICAgICAgICAgICBhbHRlcm5hdGU6IGFsdGVybmF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVMYWJlbGVkU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwsIGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkxhYmVsZWRTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlTGl0ZXJhbDogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5MaXRlcmFsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICByYXc6IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVNZW1iZXJFeHByZXNzaW9uOiBmdW5jdGlvbiAoYWNjZXNzb3IsIG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk1lbWJlckV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY29tcHV0ZWQ6IGFjY2Vzc29yID09PSAnWycsXG4gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsXG4gICAgICAgICAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZU5ld0V4cHJlc3Npb246IGZ1bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk5ld0V4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsXG4gICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbjogZnVuY3Rpb24gKHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk9iamVjdEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQb3N0Zml4RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LFxuICAgICAgICAgICAgICAgIHByZWZpeDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlUHJvZ3JhbTogZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb2dyYW0sXG4gICAgICAgICAgICAgICAgYm9keTogYm9keVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcm9wZXJ0eTogZnVuY3Rpb24gKGtpbmQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb3BlcnR5LFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBraW5kOiBraW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVJldHVyblN0YXRlbWVudDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5SZXR1cm5TdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5TZXF1ZW5jZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IGV4cHJlc3Npb25zXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVN3aXRjaENhc2U6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hDYXNlLFxuICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsXG4gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29uc2VxdWVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChkaXNjcmltaW5hbnQsIGNhc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hTdGF0ZW1lbnQsXG4gICAgICAgICAgICAgICAgZGlzY3JpbWluYW50OiBkaXNjcmltaW5hbnQsXG4gICAgICAgICAgICAgICAgY2FzZXM6IGNhc2VzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVRoaXNFeHByZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UaGlzRXhwcmVzc2lvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVUaHJvd1N0YXRlbWVudDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UaHJvd1N0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVHJ5U3RhdGVtZW50OiBmdW5jdGlvbiAoYmxvY2ssIGd1YXJkZWRIYW5kbGVycywgaGFuZGxlcnMsIGZpbmFsaXplcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVHJ5U3RhdGVtZW50LFxuICAgICAgICAgICAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgICAgICAgICAgICBndWFyZGVkSGFuZGxlcnM6IGd1YXJkZWRIYW5kbGVycyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyczogaGFuZGxlcnMsXG4gICAgICAgICAgICAgICAgZmluYWxpemVyOiBmaW5hbGl6ZXJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICcrKycgfHwgb3BlcmF0b3IgPT09ICctLScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5VbmFyeUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudCxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xhcmF0aW9ucywga2luZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbnM6IGRlY2xhcmF0aW9ucyxcbiAgICAgICAgICAgICAgICBraW5kOiBraW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRvcjogZnVuY3Rpb24gKGlkLCBpbml0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0b3IsXG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIGluaXQ6IGluaXRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uICh0ZXN0LCBib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5XaGlsZVN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LFxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgY3JlYXRlV2l0aFN0YXRlbWVudDogZnVuY3Rpb24gKG9iamVjdCwgYm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguV2l0aFN0YXRlbWVudCxcbiAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdCxcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbGluZSB0ZXJtaW5hdG9yIGJlZm9yZSB0aGUgbmV4dCB0b2tlbi5cblxuICAgIGZ1bmN0aW9uIHBlZWtMaW5lVGVybWluYXRvcigpIHtcbiAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQsIGZvdW5kO1xuXG4gICAgICAgIHBvcyA9IGluZGV4O1xuICAgICAgICBsaW5lID0gbGluZU51bWJlcjtcbiAgICAgICAgc3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGZvdW5kID0gbGluZU51bWJlciAhPT0gbGluZTtcbiAgICAgICAgaW5kZXggPSBwb3M7XG4gICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDtcblxuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuXG4gICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uXG5cbiAgICBmdW5jdGlvbiB0aHJvd0Vycm9yKHRva2VuLCBtZXNzYWdlRm9ybWF0KSB7XG4gICAgICAgIHZhciBlcnJvcixcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgbXNnID0gbWVzc2FnZUZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIC8lKFxcZCkvZyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAod2hvbGUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydChpbmRleCA8IGFyZ3MubGVuZ3RoLCAnTWVzc2FnZSByZWZlcmVuY2UgbXVzdCBiZSBpbiByYW5nZScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICBpZiAodHlwZW9mIHRva2VuLmxpbmVOdW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcignTGluZSAnICsgdG9rZW4ubGluZU51bWJlciArICc6ICcgKyBtc2cpO1xuICAgICAgICAgICAgZXJyb3IuaW5kZXggPSB0b2tlbi5zdGFydDtcbiAgICAgICAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgICAgICAgZXJyb3IuY29sdW1uID0gdG9rZW4uc3RhcnQgLSBsaW5lU3RhcnQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIGxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTtcbiAgICAgICAgICAgIGVycm9yLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICBlcnJvci5saW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgICAgICAgICAgIGVycm9yLmNvbHVtbiA9IGluZGV4IC0gbGluZVN0YXJ0ICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yLmRlc2NyaXB0aW9uID0gbXNnO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0aHJvd0Vycm9yVG9sZXJhbnQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMucHVzaChlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgdGhlIHRva2VuLlxuXG4gICAgZnVuY3Rpb24gdGhyb3dVbmV4cGVjdGVkKHRva2VuKSB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRFT1MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkSWRlbnRpZmllcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgaWYgKGlzRnV0dXJlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRSZXNlcnZlZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgdG9rZW4udmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQm9vbGVhbkxpdGVyYWwsIE51bGxMaXRlcmFsLCBvciBQdW5jdHVhdG9yLlxuICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBFeHBlY3QgdGhlIG5leHQgdG9rZW4gdG8gbWF0Y2ggdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXG4gICAgZnVuY3Rpb24gZXhwZWN0KHZhbHVlKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IGxleCgpO1xuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciB8fCB0b2tlbi52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBlY3QgdGhlIG5leHQgdG9rZW4gdG8gbWF0Y2ggdGhlIHNwZWNpZmllZCBrZXl3b3JkLlxuICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXG4gICAgZnVuY3Rpb24gZXhwZWN0S2V5d29yZChrZXl3b3JkKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IGxleCgpO1xuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uS2V5d29yZCB8fCB0b2tlbi52YWx1ZSAhPT0ga2V5d29yZCkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuXG4gICAgZnVuY3Rpb24gbWF0Y2godmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGtleXdvcmRcblxuICAgIGZ1bmN0aW9uIG1hdGNoS2V5d29yZChrZXl3b3JkKSB7XG4gICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uS2V5d29yZCAmJiBsb29rYWhlYWQudmFsdWUgPT09IGtleXdvcmQ7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXNzaWdubWVudCBvcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gbWF0Y2hBc3NpZ24oKSB7XG4gICAgICAgIHZhciBvcDtcblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvcCA9IGxvb2thaGVhZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG9wID09PSAnPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnKj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJy89JyB8fFxuICAgICAgICAgICAgb3AgPT09ICclPScgfHxcbiAgICAgICAgICAgIG9wID09PSAnKz0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJy09JyB8fFxuICAgICAgICAgICAgb3AgPT09ICc8PD0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJz4+PScgfHxcbiAgICAgICAgICAgIG9wID09PSAnPj4+PScgfHxcbiAgICAgICAgICAgIG9wID09PSAnJj0nIHx8XG4gICAgICAgICAgICBvcCA9PT0gJ149JyB8fFxuICAgICAgICAgICAgb3AgPT09ICd8PSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uc3VtZVNlbWljb2xvbigpIHtcbiAgICAgICAgdmFyIGxpbmU7XG5cbiAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChVKzAwM0IpLlxuICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDNCIHx8IG1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGluZSA9IGxpbmVOdW1iZXI7XG4gICAgICAgIHNraXBDb21tZW50KCk7XG4gICAgICAgIGlmIChsaW5lTnVtYmVyICE9PSBsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRiAmJiAhbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxvb2thaGVhZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBwcm92aWRlZCBleHByZXNzaW9uIGlzIExlZnRIYW5kU2lkZUV4cHJlc3Npb25cblxuICAgIGZ1bmN0aW9uIGlzTGVmdEhhbmRTaWRlKGV4cHIpIHtcbiAgICAgICAgcmV0dXJuIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgfHwgZXhwci50eXBlID09PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjQgQXJyYXkgSW5pdGlhbGlzZXJcblxuICAgIGZ1bmN0aW9uIHBhcnNlQXJyYXlJbml0aWFsaXNlcigpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW10sIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0KCdbJyk7XG5cbiAgICAgICAgd2hpbGUgKCFtYXRjaCgnXScpKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJ10nKSkge1xuICAgICAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXgoKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVBcnJheUV4cHJlc3Npb24oZWxlbWVudHMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjUgT2JqZWN0IEluaXRpYWxpc2VyXG5cbiAgICBmdW5jdGlvbiBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFyYW0sIGZpcnN0KSB7XG4gICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwgYm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDtcbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpO1xuICAgICAgICBpZiAoZmlyc3QgJiYgc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQocGFyYW1bMF0ubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdCwgTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBwYXJzZU9iamVjdFByb3BlcnR5KCksIHdoZXJlXG4gICAgICAgIC8vIEVPRiBhbmQgUHVuY3R1YXRvciB0b2tlbnMgYXJlIGFscmVhZHkgZmlsdGVyZWQgb3V0LlxuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIHRva2VuLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0b2tlbiksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHkoKSB7XG4gICAgICAgIHZhciB0b2tlbiwga2V5LCBpZCwgdmFsdWUsIHBhcmFtLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG5cbiAgICAgICAgICAgIGlkID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuXG4gICAgICAgICAgICAvLyBQcm9wZXJ0eSBBc3NpZ25tZW50OiBHZXR0ZXIgYW5kIFNldHRlci5cblxuICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiAhbWF0Y2goJzonKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcbiAgICAgICAgICAgICAgICBleHBlY3QoJygnKTtcbiAgICAgICAgICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2dldCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ3NldCcgJiYgIW1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKFtdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IFsgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSBdO1xuICAgICAgICAgICAgICAgICAgICBleHBlY3QoJyknKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFyYW0sIHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ3NldCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCB2YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YgfHwgdG9rZW4udHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGtleSwgdmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKSB7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW10sIHByb3BlcnR5LCBuYW1lLCBrZXksIGtpbmQsIG1hcCA9IHt9LCB0b1N0cmluZyA9IFN0cmluZywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIHdoaWxlICghbWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU9iamVjdFByb3BlcnR5KCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5rZXkudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gcHJvcGVydHkua2V5Lm5hbWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eS5rZXkudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2luZCA9IChwcm9wZXJ0eS5raW5kID09PSAnaW5pdCcpID8gUHJvcGVydHlLaW5kLkRhdGEgOiAocHJvcGVydHkua2luZCA9PT0gJ2dldCcpID8gUHJvcGVydHlLaW5kLkdldCA6IFByb3BlcnR5S2luZC5TZXQ7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIG5hbWU7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChtYXBba2V5XSA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3REdXBsaWNhdGVQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCAhPT0gUHJvcGVydHlLaW5kLkRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JEYXRhUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IFByb3BlcnR5S2luZC5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXBba2V5XSAmIGtpbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JHZXRTZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcFtrZXldIHw9IGtpbmQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hcFtrZXldID0ga2luZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcblxuICAgICAgICAgICAgaWYgKCFtYXRjaCgnfScpKSB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHBlY3QoJ30nKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4xLjYgVGhlIEdyb3VwaW5nIE9wZXJhdG9yXG5cbiAgICBmdW5jdGlvbiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHI7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuXG4gICAgLy8gMTEuMSBQcmltYXJ5IEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgdHlwZSwgdG9rZW4sIGV4cHIsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgaWYgKG1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCgneycpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZSA9IGxvb2thaGVhZC50eXBlO1xuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBleHByID0gIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIobGV4KCkudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwgfHwgdHlwZSA9PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbG9va2FoZWFkLm9jdGFsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGxvb2thaGVhZCwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGxleCgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd0aGlzJykpIHtcbiAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVGhpc0V4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5Cb29sZWFuTGl0ZXJhbCkge1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIHRva2VuLnZhbHVlID0gKHRva2VuLnZhbHVlID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgdG9rZW4udmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcvJykgfHwgbWF0Y2goJy89JykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGNvbGxlY3RSZWdleCgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwoc2NhblJlZ0V4cCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZWsoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMS4yIExlZnQtSGFuZC1TaWRlIEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHBlY3QoJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpIHtcbiAgICAgICAgdmFyIHRva2VuLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHRva2VuID0gbGV4KCk7XG5cbiAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJOYW1lKHRva2VuKSkge1xuICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCkge1xuICAgICAgICBleHBlY3QoJy4nKTtcblxuICAgICAgICByZXR1cm4gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VDb21wdXRlZE1lbWJlcigpIHtcbiAgICAgICAgdmFyIGV4cHI7XG5cbiAgICAgICAgZXhwZWN0KCdbJyk7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnXScpO1xuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTmV3RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGNhbGxlZSwgYXJncywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3RLZXl3b3JkKCduZXcnKTtcbiAgICAgICAgY2FsbGVlID0gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCk7XG4gICAgICAgIGFyZ3MgPSBtYXRjaCgnKCcpID8gcGFyc2VBcmd1bWVudHMoKSA6IFtdO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZU5ld0V4cHJlc3Npb24oY2FsbGVlLCBhcmdzKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKCkge1xuICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luLCBleHByLCBhcmdzLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47XG4gICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlO1xuICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luO1xuXG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGlmIChtYXRjaCgnLicpKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgICAgICBhcmdzID0gcGFyc2VBcmd1bWVudHMoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oZXhwciwgYXJncyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1iZXIoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycsIGV4cHIsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luLCBleHByLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47XG4gICAgICAgIGV4cHIgPSBtYXRjaEtleXdvcmQoJ25ldycpID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgIHN0YXRlLmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG5cbiAgICAgICAgd2hpbGUgKG1hdGNoKCcuJykgfHwgbWF0Y2goJ1snKSkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCdbJykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1iZXIoKTtcbiAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycsIGV4cHIsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTEuMyBQb3N0Zml4IEV4cHJlc3Npb25zXG5cbiAgICBmdW5jdGlvbiBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCkge1xuICAgICAgICB2YXIgZXhwciwgdG9rZW4sIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgpO1xuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikge1xuICAgICAgICAgICAgaWYgKChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0nKSkgJiYgIXBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICAgICAgLy8gMTEuMy4xLCAxMS4zLjJcbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUG9zdGZpeCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUG9zdGZpeEV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIC8vIDExLjQgVW5hcnkgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBleHByLCBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0nKSkge1xuICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIC8vIDExLjQuNCwgMTEuNC41XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RMSFNQcmVmaXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGV4cHIpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKycpIHx8IG1hdGNoKCctJykgfHwgbWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7XG4gICAgICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTtcbiAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaEtleXdvcmQoJ2RlbGV0ZScpIHx8IG1hdGNoS2V5d29yZCgndm9pZCcpIHx8IG1hdGNoS2V5d29yZCgndHlwZW9mJykpIHtcbiAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTtcbiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLm9wZXJhdG9yID09PSAnZGVsZXRlJyAmJiBleHByLmFyZ3VtZW50LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3REZWxldGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpbmFyeVByZWNlZGVuY2UodG9rZW4sIGFsbG93SW4pIHtcbiAgICAgICAgdmFyIHByZWMgPSAwO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICd8fCc6XG4gICAgICAgICAgICBwcmVjID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJyYmJzpcbiAgICAgICAgICAgIHByZWMgPSAyO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgICAgICBwcmVjID0gMztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ14nOlxuICAgICAgICAgICAgcHJlYyA9IDQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICcmJzpcbiAgICAgICAgICAgIHByZWMgPSA1O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnPT0nOlxuICAgICAgICBjYXNlICchPSc6XG4gICAgICAgIGNhc2UgJz09PSc6XG4gICAgICAgIGNhc2UgJyE9PSc6XG4gICAgICAgICAgICBwcmVjID0gNjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgY2FzZSAnPD0nOlxuICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgIGNhc2UgJ2luc3RhbmNlb2YnOlxuICAgICAgICAgICAgcHJlYyA9IDc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdpbic6XG4gICAgICAgICAgICBwcmVjID0gYWxsb3dJbiA/IDcgOiAwO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnPDwnOlxuICAgICAgICBjYXNlICc+Pic6XG4gICAgICAgIGNhc2UgJz4+Pic6XG4gICAgICAgICAgICBwcmVjID0gODtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgIHByZWMgPSA5O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnKic6XG4gICAgICAgIGNhc2UgJy8nOlxuICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIHByZWMgPSAxMTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmVjO1xuICAgIH1cblxuICAgIC8vIDExLjUgTXVsdGlwbGljYXRpdmUgT3BlcmF0b3JzXG4gICAgLy8gMTEuNiBBZGRpdGl2ZSBPcGVyYXRvcnNcbiAgICAvLyAxMS43IEJpdHdpc2UgU2hpZnQgT3BlcmF0b3JzXG4gICAgLy8gMTEuOCBSZWxhdGlvbmFsIE9wZXJhdG9yc1xuICAgIC8vIDExLjkgRXF1YWxpdHkgT3BlcmF0b3JzXG4gICAgLy8gMTEuMTAgQmluYXJ5IEJpdHdpc2UgT3BlcmF0b3JzXG4gICAgLy8gMTEuMTEgQmluYXJ5IExvZ2ljYWwgT3BlcmF0b3JzXG5cbiAgICBmdW5jdGlvbiBwYXJzZUJpbmFyeUV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBtYXJrZXIsIG1hcmtlcnMsIGV4cHIsIHRva2VuLCBwcmVjLCBzdGFjaywgcmlnaHQsIG9wZXJhdG9yLCBsZWZ0LCBpO1xuXG4gICAgICAgIG1hcmtlciA9IGxvb2thaGVhZDtcbiAgICAgICAgbGVmdCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHByZWMgPSBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBzdGF0ZS5hbGxvd0luKTtcbiAgICAgICAgaWYgKHByZWMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIHRva2VuLnByZWMgPSBwcmVjO1xuICAgICAgICBsZXgoKTtcblxuICAgICAgICBtYXJrZXJzID0gW21hcmtlciwgbG9va2FoZWFkXTtcbiAgICAgICAgcmlnaHQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpO1xuXG4gICAgICAgIHN0YWNrID0gW2xlZnQsIHRva2VuLCByaWdodF07XG5cbiAgICAgICAgd2hpbGUgKChwcmVjID0gYmluYXJ5UHJlY2VkZW5jZShsb29rYWhlYWQsIHN0YXRlLmFsbG93SW4pKSA+IDApIHtcblxuICAgICAgICAgICAgLy8gUmVkdWNlOiBtYWtlIGEgYmluYXJ5IGV4cHJlc3Npb24gZnJvbSB0aGUgdGhyZWUgdG9wbW9zdCBlbnRyaWVzLlxuICAgICAgICAgICAgd2hpbGUgKChzdGFjay5sZW5ndGggPiAyKSAmJiAocHJlYyA8PSBzdGFja1tzdGFjay5sZW5ndGggLSAyXS5wcmVjKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBzdGFjay5wb3AoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBtYXJrZXJzLnBvcCgpO1xuICAgICAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlcnNbbWFya2Vycy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIG1hcmtlcik7XG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2hpZnQuXG4gICAgICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICAgICAgdG9rZW4ucHJlYyA9IHByZWM7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIG1hcmtlcnMucHVzaChsb29rYWhlYWQpO1xuICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGV4cHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgcmVkdWNlIHRvIGNsZWFuLXVwIHRoZSBzdGFjay5cbiAgICAgICAgaSA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGV4cHIgPSBzdGFja1tpXTtcbiAgICAgICAgbWFya2Vycy5wb3AoKTtcbiAgICAgICAgd2hpbGUgKGkgPiAxKSB7XG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihzdGFja1tpIC0gMV0udmFsdWUsIHN0YWNrW2kgLSAyXSwgZXhwcik7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJzLnBvcCgpO1xuICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBtYXJrZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG5cbiAgICAvLyAxMS4xMiBDb25kaXRpb25hbCBPcGVyYXRvclxuXG4gICAgZnVuY3Rpb24gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciBleHByLCBwcmV2aW91c0FsbG93SW4sIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cHIgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2goJz8nKSkge1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luO1xuICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG4gICAgICAgICAgICBjb25zZXF1ZW50ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcbiAgICAgICAgICAgIGV4cGVjdCgnOicpO1xuICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXG4gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGV4cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7XG4gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuXG4gICAgLy8gMTEuMTMgQXNzaWdubWVudCBPcGVyYXRvcnNcblxuICAgIGZ1bmN0aW9uIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGVmdCwgcmlnaHQsIG5vZGUsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgbm9kZSA9IGxlZnQgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGlmIChtYXRjaEFzc2lnbigpKSB7XG4gICAgICAgICAgICAvLyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uXG4gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGxlZnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gMTEuMTMuMVxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBsZWZ0LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQobGVmdC5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0TEhTQXNzaWdubWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIG5vZGUgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBsZWZ0LCByaWdodCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgLy8gMTEuMTQgQ29tbWEgT3BlcmF0b3JcblxuICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIGV4cHIsIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgZXhwciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcblxuICAgICAgICBpZiAobWF0Y2goJywnKSkge1xuICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihbIGV4cHIgXSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJywnKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICAgICAgZXhwci5leHByZXNzaW9ucy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICAvLyAxMi4xIEJsb2NrXG5cbiAgICBmdW5jdGlvbiBwYXJzZVN0YXRlbWVudExpc3QoKSB7XG4gICAgICAgIHZhciBsaXN0ID0gW10sXG4gICAgICAgICAgICBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3QucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VCbG9jaygpIHtcbiAgICAgICAgdmFyIGJsb2NrLCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIGJsb2NrID0gcGFyc2VTdGF0ZW1lbnRMaXN0KCk7XG5cbiAgICAgICAgZXhwZWN0KCd9Jyk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYmxvY2spLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMi4yIFZhcmlhYmxlIFN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihraW5kKSB7XG4gICAgICAgIHZhciBpbml0ID0gbnVsbCwgaWQsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIC8vIDEyLjIuMVxuICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQoaWQubmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0VmFyTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2luZCA9PT0gJ2NvbnN0Jykge1xuICAgICAgICAgICAgZXhwZWN0KCc9Jyk7XG4gICAgICAgICAgICBpbml0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCc9JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRvcihpZCwgaW5pdCksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qoa2luZCkge1xuICAgICAgICB2YXIgbGlzdCA9IFtdO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGxpc3QucHVzaChwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oa2luZCkpO1xuICAgICAgICAgICAgaWYgKCFtYXRjaCgnLCcpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBsZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBkZWNsYXJhdGlvbnM7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgndmFyJyk7XG5cbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgpO1xuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKTtcbiAgICB9XG5cbiAgICAvLyBraW5kIG1heSBiZSBgY29uc3RgIG9yIGBsZXRgXG4gICAgLy8gQm90aCBhcmUgZXhwZXJpbWVudGFsIGFuZCBub3QgaW4gdGhlIHNwZWNpZmljYXRpb24geWV0LlxuICAgIC8vIHNlZSBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmNvbnN0XG4gICAgLy8gYW5kIGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6bGV0XG4gICAgZnVuY3Rpb24gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGtpbmQpIHtcbiAgICAgICAgdmFyIGRlY2xhcmF0aW9ucywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoa2luZCk7XG5cbiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChraW5kKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIGtpbmQpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMi4zIEVtcHR5IFN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVudCgpIHtcbiAgICAgICAgZXhwZWN0KCc7Jyk7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVFbXB0eVN0YXRlbWVudCgpO1xuICAgIH1cblxuICAgIC8vIDEyLjQgRXhwcmVzc2lvbiBTdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKTtcbiAgICB9XG5cbiAgICAvLyAxMi41IElmIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBjb25zZXF1ZW50ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdlbHNlJykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VTdGF0ZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsdGVybmF0ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKTtcbiAgICB9XG5cbiAgICAvLyAxMi42IEl0ZXJhdGlvbiBTdGF0ZW1lbnRzXG5cbiAgICBmdW5jdGlvbiBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBib2R5LCB0ZXN0LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdkbycpO1xuXG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3doaWxlJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgdGVzdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGlmIChtYXRjaCgnOycpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0ZXN0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcblxuICAgICAgICBleHBlY3QoJyknKTtcblxuICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uO1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG5cbiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2hpbGVTdGF0ZW1lbnQodGVzdCwgYm9keSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uKCkge1xuICAgICAgICB2YXIgdG9rZW4sIGRlY2xhcmF0aW9ucywgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICBkZWNsYXJhdGlvbnMgPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGb3JTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBpbml0LCB0ZXN0LCB1cGRhdGUsIGxlZnQsIHJpZ2h0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjtcblxuICAgICAgICBpbml0ID0gdGVzdCA9IHVwZGF0ZSA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZm9yJyk7XG5cbiAgICAgICAgZXhwZWN0KCcoJyk7XG5cbiAgICAgICAgaWYgKG1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndmFyJykgfHwgbWF0Y2hLZXl3b3JkKCdsZXQnKSkge1xuICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpbml0ID0gcGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5pdC5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxICYmIG1hdGNoS2V5d29yZCgnaW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGluaXQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGVmdEhhbmRTaWRlRXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRlKGluaXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkZvckluKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaW5pdDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZXhwZWN0KCc7Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7XG5cbiAgICAgICAgICAgIGlmICghbWF0Y2goJzsnKSkge1xuICAgICAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cGVjdCgnOycpO1xuXG4gICAgICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTtcblxuICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTtcblxuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uO1xuXG4gICAgICAgIHJldHVybiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSA/XG4gICAgICAgICAgICAgICAgZGVsZWdhdGUuY3JlYXRlRm9yU3RhdGVtZW50KGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkgOlxuICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNyZWF0ZUZvckluU3RhdGVtZW50KGxlZnQsIHJpZ2h0LCBib2R5KTtcbiAgICB9XG5cbiAgICAvLyAxMi43IFRoZSBjb250aW51ZSBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWVTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdjb250aW51ZScpO1xuXG4gICAgICAgIC8vIE9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBmb3JtOiAnY29udGludWU7Jy5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQikge1xuICAgICAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGxhYmVsID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICAgICAga2V5ID0gJyQnICsgbGFiZWwubmFtZTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5rbm93bkxhYmVsLCBsYWJlbC5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICBpZiAobGFiZWwgPT09IG51bGwgJiYgIXN0YXRlLmluSXRlcmF0aW9uKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxhYmVsKTtcbiAgICB9XG5cbiAgICAvLyAxMi44IFRoZSBicmVhayBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdicmVhaycpO1xuXG4gICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWljb2xvbiAoVSswMDNCKS5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQikge1xuICAgICAgICAgICAgbGV4KCk7XG5cbiAgICAgICAgICAgIGlmICghKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkge1xuICAgICAgICAgICAgaWYgKCEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUuaW5Td2l0Y2gpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsYWJlbCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgaWYgKGxhYmVsID09PSBudWxsICYmICEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUuaW5Td2l0Y2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxhYmVsKTtcbiAgICB9XG5cbiAgICAvLyAxMi45IFRoZSByZXR1cm4gc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZVJldHVyblN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50ID0gbnVsbDtcblxuICAgICAgICBleHBlY3RLZXl3b3JkKCdyZXR1cm4nKTtcblxuICAgICAgICBpZiAoIXN0YXRlLmluRnVuY3Rpb25Cb2R5KSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLklsbGVnYWxSZXR1cm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ3JldHVybicgZm9sbG93ZWQgYnkgYSBzcGFjZSBhbmQgYW4gaWRlbnRpZmllciBpcyB2ZXJ5IGNvbW1vbi5cbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgyMCkge1xuICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7XG4gICAgICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHtcbiAgICAgICAgICAgIGlmICghbWF0Y2goJ30nKSAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7XG4gICAgICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICAvLyAxMi4xMCBUaGUgd2l0aCBzdGF0ZW1lbnRcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2l0aFN0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIG9iamVjdCwgYm9keTtcblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAvLyBUT0RPKGlrYXJpZW5hdG9yKTogU2hvdWxkIHdlIHVwZGF0ZSB0aGUgdGVzdCBjYXNlcyBpbnN0ZWFkP1xuICAgICAgICAgICAgc2tpcENvbW1lbnQoKTtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TW9kZVdpdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgnd2l0aCcpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIG9iamVjdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVXaXRoU3RhdGVtZW50KG9iamVjdCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTAgVGhlIHN3aXRoIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VTd2l0Y2hDYXNlKCkge1xuICAgICAgICB2YXIgdGVzdCwgY29uc2VxdWVudCA9IFtdLCBzdGF0ZW1lbnQsIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIHRlc3QgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwZWN0S2V5d29yZCgnY2FzZScpO1xuICAgICAgICAgICAgdGVzdCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdCgnOicpO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykgfHwgbWF0Y2hLZXl3b3JkKCdkZWZhdWx0JykgfHwgbWF0Y2hLZXl3b3JkKCdjYXNlJykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgICAgICBjb25zZXF1ZW50LnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVN3aXRjaENhc2UodGVzdCwgY29uc2VxdWVudCksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgZGlzY3JpbWluYW50LCBjYXNlcywgY2xhdXNlLCBvbGRJblN3aXRjaCwgZGVmYXVsdEZvdW5kO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3N3aXRjaCcpO1xuXG4gICAgICAgIGV4cGVjdCgnKCcpO1xuXG4gICAgICAgIGRpc2NyaW1pbmFudCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuXG4gICAgICAgIGV4cGVjdCgneycpO1xuXG4gICAgICAgIGNhc2VzID0gW107XG5cbiAgICAgICAgaWYgKG1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7XG4gICAgICAgIHN0YXRlLmluU3dpdGNoID0gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdEZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2xhdXNlID0gcGFyc2VTd2l0Y2hDYXNlKCk7XG4gICAgICAgICAgICBpZiAoY2xhdXNlLnRlc3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk11bHRpcGxlRGVmYXVsdHNJblN3aXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlcy5wdXNoKGNsYXVzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoO1xuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7XG4gICAgfVxuXG4gICAgLy8gMTIuMTMgVGhlIHRocm93IHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VUaHJvd1N0YXRlbWVudCgpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50O1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ3Rocm93Jyk7XG5cbiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5OZXdsaW5lQWZ0ZXJUaHJvdyk7XG4gICAgICAgIH1cblxuICAgICAgICBhcmd1bWVudCA9IHBhcnNlRXhwcmVzc2lvbigpO1xuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGhyb3dTdGF0ZW1lbnQoYXJndW1lbnQpO1xuICAgIH1cblxuICAgIC8vIDEyLjE0IFRoZSB0cnkgc3RhdGVtZW50XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNhdGNoQ2xhdXNlKCkge1xuICAgICAgICB2YXIgcGFyYW0sIGJvZHksIHN0YXJ0VG9rZW47XG5cbiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnY2F0Y2gnKTtcblxuICAgICAgICBleHBlY3QoJygnKTtcbiAgICAgICAgaWYgKG1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuICAgICAgICAvLyAxMi4xNC4xXG4gICAgICAgIGlmIChzdHJpY3QgJiYgaXNSZXN0cmljdGVkV29yZChwYXJhbS5uYW1lKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RDYXRjaFZhcmlhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnKScpO1xuICAgICAgICBib2R5ID0gcGFyc2VCbG9jaygpO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVDYXRjaENsYXVzZShwYXJhbSwgYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVHJ5U3RhdGVtZW50KCkge1xuICAgICAgICB2YXIgYmxvY2ssIGhhbmRsZXJzID0gW10sIGZpbmFsaXplciA9IG51bGw7XG5cbiAgICAgICAgZXhwZWN0S2V5d29yZCgndHJ5Jyk7XG5cbiAgICAgICAgYmxvY2sgPSBwYXJzZUJsb2NrKCk7XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnY2F0Y2gnKSkge1xuICAgICAgICAgICAgaGFuZGxlcnMucHVzaChwYXJzZUNhdGNoQ2xhdXNlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZmluYWxseScpKSB7XG4gICAgICAgICAgICBsZXgoKTtcbiAgICAgICAgICAgIGZpbmFsaXplciA9IHBhcnNlQmxvY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYW5kbGVycy5sZW5ndGggPT09IDAgJiYgIWZpbmFsaXplcikge1xuICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTm9DYXRjaE9yRmluYWxseSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVHJ5U3RhdGVtZW50KGJsb2NrLCBbXSwgaGFuZGxlcnMsIGZpbmFsaXplcik7XG4gICAgfVxuXG4gICAgLy8gMTIuMTUgVGhlIGRlYnVnZ2VyIHN0YXRlbWVudFxuXG4gICAgZnVuY3Rpb24gcGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpIHtcbiAgICAgICAgZXhwZWN0S2V5d29yZCgnZGVidWdnZXInKTtcblxuICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50KCk7XG4gICAgfVxuXG4gICAgLy8gMTIgU3RhdGVtZW50c1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnQoKSB7XG4gICAgICAgIHZhciB0eXBlID0gbG9va2FoZWFkLnR5cGUsXG4gICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgbGFiZWxlZEJvZHksXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBzdGFydFRva2VuO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnZhbHVlID09PSAneycpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJsb2NrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnOyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VFbXB0eVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkge1xuICAgICAgICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JyZWFrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUJyZWFrU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnY29udGludWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlQ29udGludWVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdkZWJ1Z2dlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2RvJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZURvV2hpbGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICdmb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRm9yU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ2lmJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUlmU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pO1xuICAgICAgICAgICAgY2FzZSAncmV0dXJuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVJldHVyblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd0aHJvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VUaHJvd1N0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3RyeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VUcnlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd2YXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7XG4gICAgICAgICAgICBjYXNlICd3aGlsZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VXaGlsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGNhc2UgJ3dpdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlV2l0aFN0YXRlbWVudCgpLCBzdGFydFRva2VuKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7XG5cbiAgICAgICAgLy8gMTIuMTIgTGFiZWxsZWQgU3RhdGVtZW50c1xuICAgICAgICBpZiAoKGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpICYmIG1hdGNoKCc6JykpIHtcbiAgICAgICAgICAgIGxleCgpO1xuXG4gICAgICAgICAgICBrZXkgPSAnJCcgKyBleHByLm5hbWU7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuUmVkZWNsYXJhdGlvbiwgJ0xhYmVsJywgZXhwci5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGUubGFiZWxTZXRba2V5XSA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbGVkQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7XG4gICAgICAgICAgICBkZWxldGUgc3RhdGUubGFiZWxTZXRba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUxhYmVsZWRTdGF0ZW1lbnQoZXhwciwgbGFiZWxlZEJvZHkpLCBzdGFydFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTtcblxuICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGV4cHIpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICAvLyAxMyBGdW5jdGlvbiBEZWZpbml0aW9uXG5cbiAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKSB7XG4gICAgICAgIHZhciBzb3VyY2VFbGVtZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwgZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0ZWQsXG4gICAgICAgICAgICBvbGRMYWJlbFNldCwgb2xkSW5JdGVyYXRpb24sIG9sZEluU3dpdGNoLCBvbGRJbkZ1bmN0aW9uQm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBleHBlY3QoJ3snKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG5cbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQgLSAxKTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykge1xuICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoZmlyc3RSZXN0cmljdGVkLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdFJlc3RyaWN0ZWQgJiYgdG9rZW4ub2N0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb2xkTGFiZWxTZXQgPSBzdGF0ZS5sYWJlbFNldDtcbiAgICAgICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjtcbiAgICAgICAgb2xkSW5Td2l0Y2ggPSBzdGF0ZS5pblN3aXRjaDtcbiAgICAgICAgb2xkSW5GdW5jdGlvbkJvZHkgPSBzdGF0ZS5pbkZ1bmN0aW9uQm9keTtcblxuICAgICAgICBzdGF0ZS5sYWJlbFNldCA9IHt9O1xuICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5pbkZ1bmN0aW9uQm9keSA9IHRydWU7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cGVjdCgnfScpO1xuXG4gICAgICAgIHN0YXRlLmxhYmVsU2V0ID0gb2xkTGFiZWxTZXQ7XG4gICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247XG4gICAgICAgIHN0YXRlLmluU3dpdGNoID0gb2xkSW5Td2l0Y2g7XG4gICAgICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gb2xkSW5GdW5jdGlvbkJvZHk7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgdmFyIHBhcmFtLCBwYXJhbXMgPSBbXSwgdG9rZW4sIHN0cmljdGVkLCBwYXJhbVNldCwga2V5LCBtZXNzYWdlO1xuICAgICAgICBleHBlY3QoJygnKTtcblxuICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgIHBhcmFtU2V0ID0ge307XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICAgICAga2V5ID0gJyQnICsgdG9rZW4udmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1EdXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7XG4gICAgICAgICAgICAgICAgcGFyYW1TZXRba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcpJykpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXhwZWN0KCcpJyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgc3RyaWN0ZWQ6IHN0cmljdGVkLFxuICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkOiBmaXJzdFJlc3RyaWN0ZWQsXG4gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCkge1xuICAgICAgICB2YXIgaWQsIHBhcmFtcyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQsIHRtcCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjtcblxuICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkO1xuXG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG4gICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTtcbiAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtcztcbiAgICAgICAgc3RyaWN0ZWQgPSB0bXAuc3RyaWN0ZWQ7XG4gICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7XG4gICAgICAgIGlmICh0bXAubWVzc2FnZSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5tZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7XG4gICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaWN0ICYmIHN0cmljdGVkKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oaWQsIHBhcmFtcywgW10sIGJvZHkpLCBzdGFydFRva2VuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdmFyIHRva2VuLCBpZCA9IG51bGwsIHN0cmljdGVkLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UsIHRtcCwgcGFyYW1zID0gW10sIGJvZHksIHByZXZpb3VzU3RyaWN0LCBzdGFydFRva2VuO1xuXG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIGV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCgnKCcpKSB7XG4gICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDtcbiAgICAgICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0bXAgPSBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpO1xuICAgICAgICBwYXJhbXMgPSB0bXAucGFyYW1zO1xuICAgICAgICBzdHJpY3RlZCA9IHRtcC5zdHJpY3RlZDtcbiAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG1wLmZpcnN0UmVzdHJpY3RlZDtcbiAgICAgICAgaWYgKHRtcC5tZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gdG1wLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDtcbiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpO1xuICAgICAgICBpZiAoc3RyaWN0ICYmIGZpcnN0UmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJpY3QgJiYgc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChzdHJpY3RlZCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRUb2tlbik7XG4gICAgfVxuXG4gICAgLy8gMTQgUHJvZ3JhbVxuXG4gICAgZnVuY3Rpb24gcGFyc2VTb3VyY2VFbGVtZW50KCkge1xuICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdjb25zdCc6XG4gICAgICAgICAgICBjYXNlICdsZXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbnN0TGV0RGVjbGFyYXRpb24obG9va2FoZWFkLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YXRlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VTb3VyY2VFbGVtZW50cygpIHtcbiAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZDtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkO1xuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpO1xuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VFbGVtZW50LmV4cHJlc3Npb24udHlwZSAhPT0gU3ludGF4LkxpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBkaXJlY3RpdmVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpO1xuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZSA9PT0gJ3VzZSBzdHJpY3QnKSB7XG4gICAgICAgICAgICAgICAgc3RyaWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZXN0cmljdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdFJlc3RyaWN0ZWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0UmVzdHJpY3RlZCAmJiB0b2tlbi5vY3RhbCkge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9ncmFtKCkge1xuICAgICAgICB2YXIgYm9keSwgc3RhcnRUb2tlbjtcblxuICAgICAgICBza2lwQ29tbWVudCgpO1xuICAgICAgICBwZWVrKCk7XG4gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgIHN0cmljdCA9IGZhbHNlO1xuXG4gICAgICAgIGJvZHkgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKCk7XG4gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0oYm9keSksIHN0YXJ0VG9rZW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbHRlclRva2VuTG9jYXRpb24oKSB7XG4gICAgICAgIHZhciBpLCBlbnRyeSwgdG9rZW4sIHRva2VucyA9IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHRyYS50b2tlbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGVudHJ5ID0gZXh0cmEudG9rZW5zW2ldO1xuICAgICAgICAgICAgdG9rZW4gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogZW50cnkudHlwZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZW50cnkudmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZXh0cmEucmFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0b2tlbi5yYW5nZSA9IGVudHJ5LnJhbmdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykge1xuICAgICAgICAgICAgICAgIHRva2VuLmxvYyA9IGVudHJ5LmxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4dHJhLnRva2VucyA9IHRva2VucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2tlbml6ZShjb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0b1N0cmluZyxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgdG9rZW5zO1xuXG4gICAgICAgIHRvU3RyaW5nID0gU3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnICYmICEoY29kZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlO1xuICAgICAgICBzb3VyY2UgPSBjb2RlO1xuICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIGxpbmVOdW1iZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7XG4gICAgICAgIGxpbmVTdGFydCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgYWxsb3dJbjogdHJ1ZSxcbiAgICAgICAgICAgIGxhYmVsU2V0OiB7fSxcbiAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSxcbiAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgZXh0cmEgPSB7fTtcblxuICAgICAgICAvLyBPcHRpb25zIG1hdGNoaW5nLlxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAvLyBPZiBjb3Vyc2Ugd2UgY29sbGVjdCB0b2tlbnMgaGVyZS5cbiAgICAgICAgb3B0aW9ucy50b2tlbnMgPSB0cnVlO1xuICAgICAgICBleHRyYS50b2tlbnMgPSBbXTtcbiAgICAgICAgZXh0cmEudG9rZW5pemUgPSB0cnVlO1xuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmaWVsZHMgYXJlIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBSZWdleCB0b2tlbnMuXG4gICAgICAgIGV4dHJhLm9wZW5QYXJlblRva2VuID0gLTE7XG4gICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gLTE7XG5cbiAgICAgICAgZXh0cmEucmFuZ2UgPSAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5yYW5nZTtcbiAgICAgICAgZXh0cmEubG9jID0gKHR5cGVvZiBvcHRpb25zLmxvYyA9PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLmxvYztcblxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuY29tbWVudCkge1xuICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9sZXJhbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRvbGVyYW50KSB7XG4gICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwZWVrKCk7XG4gICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHRyYS50b2tlbnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICB3aGlsZSAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAobGV4RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmVycm9ycy5wdXNoKGxleEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYnJlYWsgb24gdGhlIGZpcnN0IGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBpbmZpbml0ZSBsb29wcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbGV4RXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpbHRlclRva2VuTG9jYXRpb24oKTtcbiAgICAgICAgICAgIHRva2VucyA9IGV4dHJhLnRva2VucztcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLmNvbW1lbnRzID0gZXh0cmEuY29tbWVudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmVycm9ycyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB0b2tlbnMuZXJyb3JzID0gZXh0cmEuZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW5zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlKGNvZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHByb2dyYW0sIHRvU3RyaW5nO1xuXG4gICAgICAgIHRvU3RyaW5nID0gU3RyaW5nO1xuICAgICAgICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnICYmICEoY29kZSBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlO1xuICAgICAgICBzb3VyY2UgPSBjb2RlO1xuICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIGxpbmVOdW1iZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7XG4gICAgICAgIGxpbmVTdGFydCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIGxvb2thaGVhZCA9IG51bGw7XG4gICAgICAgIHN0YXRlID0ge1xuICAgICAgICAgICAgYWxsb3dJbjogdHJ1ZSxcbiAgICAgICAgICAgIGxhYmVsU2V0OiB7fSxcbiAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSxcbiAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xXG4gICAgICAgIH07XG5cbiAgICAgICAgZXh0cmEgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZXh0cmEucmFuZ2UgPSAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5yYW5nZTtcbiAgICAgICAgICAgIGV4dHJhLmxvYyA9ICh0eXBlb2Ygb3B0aW9ucy5sb2MgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5sb2M7XG4gICAgICAgICAgICBleHRyYS5hdHRhY2hDb21tZW50ID0gKHR5cGVvZiBvcHRpb25zLmF0dGFjaENvbW1lbnQgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5hdHRhY2hDb21tZW50O1xuXG4gICAgICAgICAgICBpZiAoZXh0cmEubG9jICYmIG9wdGlvbnMuc291cmNlICE9PSBudWxsICYmIG9wdGlvbnMuc291cmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5zb3VyY2UgPSB0b1N0cmluZyhvcHRpb25zLnNvdXJjZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2tlbnMgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRva2Vucykge1xuICAgICAgICAgICAgICAgIGV4dHJhLnRva2VucyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5jb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2xlcmFudCkge1xuICAgICAgICAgICAgICAgIGV4dHJhLmVycm9ycyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBleHRyYS5yYW5nZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrID0gW107XG4gICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2dyYW0gPSBwYXJzZVByb2dyYW0oKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbS5jb21tZW50cyA9IGV4dHJhLmNvbW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyVG9rZW5Mb2NhdGlvbigpO1xuICAgICAgICAgICAgICAgIHByb2dyYW0udG9rZW5zID0gZXh0cmEudG9rZW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5lcnJvcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcnMgPSBleHRyYS5lcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBleHRyYSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2dyYW07XG4gICAgfVxuXG4gICAgLy8gU3luYyB3aXRoICouanNvbiBtYW5pZmVzdHMuXG4gICAgZXhwb3J0cy52ZXJzaW9uID0gJzEuMi4yJztcblxuICAgIGV4cG9ydHMudG9rZW5pemUgPSB0b2tlbml6ZTtcblxuICAgIGV4cG9ydHMucGFyc2UgPSBwYXJzZTtcblxuICAgIC8vIERlZXAgY29weS5cbiAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgZXhwb3J0cy5TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmFtZSwgdHlwZXMgPSB7fTtcblxuICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobmFtZSBpbiBTeW50YXgpIHtcbiAgICAgICAgICAgIGlmIChTeW50YXguaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0eXBlc1tuYW1lXSA9IFN5bnRheFtuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmZyZWV6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgfSgpKTtcblxufSkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cblxuIiwiLyogcGFyc2VyIGdlbmVyYXRlZCBieSBqaXNvbiAwLjQuMTMgKi9cbi8qXG4gIFJldHVybnMgYSBQYXJzZXIgb2JqZWN0IG9mIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuXG4gIFBhcnNlcjoge1xuICAgIHl5OiB7fVxuICB9XG5cbiAgUGFyc2VyLnByb3RvdHlwZToge1xuICAgIHl5OiB7fSxcbiAgICB0cmFjZTogZnVuY3Rpb24oKSxcbiAgICBzeW1ib2xzXzoge2Fzc29jaWF0aXZlIGxpc3Q6IG5hbWUgPT0+IG51bWJlcn0sXG4gICAgdGVybWluYWxzXzoge2Fzc29jaWF0aXZlIGxpc3Q6IG51bWJlciA9PT4gbmFtZX0sXG4gICAgcHJvZHVjdGlvbnNfOiBbLi4uXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSxcbiAgICB0YWJsZTogWy4uLl0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsuLi59LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uKHN0ciwgaGFzaCksXG4gICAgcGFyc2U6IGZ1bmN0aW9uKGlucHV0KSxcblxuICAgIGxleGVyOiB7XG4gICAgICAgIEVPRjogMSxcbiAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24oc3RyLCBoYXNoKSxcbiAgICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0KSxcbiAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIHVucHV0OiBmdW5jdGlvbihzdHIpLFxuICAgICAgICBtb3JlOiBmdW5jdGlvbigpLFxuICAgICAgICBsZXNzOiBmdW5jdGlvbihuKSxcbiAgICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpLFxuICAgICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCksXG4gICAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKHJlZ2V4X21hdGNoX2FycmF5LCBydWxlX2luZGV4KSxcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oKSxcbiAgICAgICAgbGV4OiBmdW5jdGlvbigpLFxuICAgICAgICBiZWdpbjogZnVuY3Rpb24oY29uZGl0aW9uKSxcbiAgICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uKCksXG4gICAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uKCksXG4gICAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbigpLFxuICAgICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uKGNvbmRpdGlvbiksXG5cbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcmFuZ2VzOiBib29sZWFuICAgICAgICAgICAob3B0aW9uYWw6IHRydWUgPT0+IHRva2VuIGxvY2F0aW9uIGluZm8gd2lsbCBpbmNsdWRlIGEgLnJhbmdlW10gbWVtYmVyKVxuICAgICAgICAgICAgZmxleDogYm9vbGVhbiAgICAgICAgICAgICAob3B0aW9uYWw6IHRydWUgPT0+IGZsZXgtbGlrZSBsZXhpbmcgYmVoYXZpb3VyIHdoZXJlIHRoZSBydWxlcyBhcmUgdGVzdGVkIGV4aGF1c3RpdmVseSB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoKVxuICAgICAgICAgICAgYmFja3RyYWNrX2xleGVyOiBib29sZWFuICAob3B0aW9uYWw6IHRydWUgPT0+IGxleGVyIHJlZ2V4ZXMgYXJlIHRlc3RlZCBpbiBvcmRlciBhbmQgZm9yIGVhY2ggbWF0Y2hpbmcgcmVnZXggdGhlIGFjdGlvbiBjb2RlIGlzIGludm9rZWQ7IHRoZSBsZXhlciB0ZXJtaW5hdGVzIHRoZSBzY2FuIHdoZW4gYSB0b2tlbiBpcyByZXR1cm5lZCBieSB0aGUgYWN0aW9uIGNvZGUpXG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24oeXksIHl5XywgJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucywgWVlfU1RBUlQpLFxuICAgICAgICBydWxlczogWy4uLl0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHthc3NvY2lhdGl2ZSBsaXN0OiBuYW1lID09PiBzZXR9LFxuICAgIH1cbiAgfVxuXG5cbiAgdG9rZW4gbG9jYXRpb24gaW5mbyAoQCQsIF8kLCBldGMuKToge1xuICAgIGZpcnN0X2xpbmU6IG4sXG4gICAgbGFzdF9saW5lOiBuLFxuICAgIGZpcnN0X2NvbHVtbjogbixcbiAgICBsYXN0X2NvbHVtbjogbixcbiAgICByYW5nZTogW3N0YXJ0X251bWJlciwgZW5kX251bWJlcl0gICAgICAgKHdoZXJlIHRoZSBudW1iZXJzIGFyZSBpbmRleGVzIGludG8gdGhlIGlucHV0IHN0cmluZywgcmVndWxhciB6ZXJvLWJhc2VkKVxuICB9XG5cblxuICB0aGUgcGFyc2VFcnJvciBmdW5jdGlvbiByZWNlaXZlcyBhICdoYXNoJyBvYmplY3Qgd2l0aCB0aGVzZSBtZW1iZXJzIGZvciBsZXhlciBhbmQgcGFyc2VyIGVycm9yczoge1xuICAgIHRleHQ6ICAgICAgICAobWF0Y2hlZCB0ZXh0KVxuICAgIHRva2VuOiAgICAgICAodGhlIHByb2R1Y2VkIHRlcm1pbmFsIHRva2VuLCBpZiBhbnkpXG4gICAgbGluZTogICAgICAgICh5eWxpbmVubylcbiAgfVxuICB3aGlsZSBwYXJzZXIgKGdyYW1tYXIpIGVycm9ycyB3aWxsIGFsc28gcHJvdmlkZSB0aGVzZSBtZW1iZXJzLCBpLmUuIHBhcnNlciBlcnJvcnMgZGVsaXZlciBhIHN1cGVyc2V0IG9mIGF0dHJpYnV0ZXM6IHtcbiAgICBsb2M6ICAgICAgICAgKHl5bGxvYylcbiAgICBleHBlY3RlZDogICAgKHN0cmluZyBkZXNjcmliaW5nIHRoZSBzZXQgb2YgZXhwZWN0ZWQgdG9rZW5zKVxuICAgIHJlY292ZXJhYmxlOiAoYm9vbGVhbjogVFJVRSB3aGVuIHRoZSBwYXJzZXIgaGFzIGEgZXJyb3IgcmVjb3ZlcnkgcnVsZSBhdmFpbGFibGUgZm9yIHRoaXMgcGFydGljdWxhciBlcnJvcilcbiAgfVxuKi9cbnZhciBwYXJzZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBwYXJzZXIgPSB7dHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkgeyB9LFxueXk6IHt9LFxuc3ltYm9sc186IHtcImVycm9yXCI6MixcIkpTT05fUEFUSFwiOjMsXCJET0xMQVJcIjo0LFwiUEFUSF9DT01QT05FTlRTXCI6NSxcIkxFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT05cIjo2LFwiUEFUSF9DT01QT05FTlRcIjo3LFwiTUVNQkVSX0NPTVBPTkVOVFwiOjgsXCJTVUJTQ1JJUFRfQ09NUE9ORU5UXCI6OSxcIkNISUxEX01FTUJFUl9DT01QT05FTlRcIjoxMCxcIkRFU0NFTkRBTlRfTUVNQkVSX0NPTVBPTkVOVFwiOjExLFwiRE9UXCI6MTIsXCJNRU1CRVJfRVhQUkVTU0lPTlwiOjEzLFwiRE9UX0RPVFwiOjE0LFwiU1RBUlwiOjE1LFwiSURFTlRJRklFUlwiOjE2LFwiU0NSSVBUX0VYUFJFU1NJT05cIjoxNyxcIklOVEVHRVJcIjoxOCxcIkVORFwiOjE5LFwiQ0hJTERfU1VCU0NSSVBUX0NPTVBPTkVOVFwiOjIwLFwiREVTQ0VOREFOVF9TVUJTQ1JJUFRfQ09NUE9ORU5UXCI6MjEsXCJbXCI6MjIsXCJTVUJTQ1JJUFRcIjoyMyxcIl1cIjoyNCxcIlNVQlNDUklQVF9FWFBSRVNTSU9OXCI6MjUsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUXCI6MjYsXCJTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUQUJMRVwiOjI3LFwiLFwiOjI4LFwiU1RSSU5HX0xJVEVSQUxcIjoyOSxcIkFSUkFZX1NMSUNFXCI6MzAsXCJGSUxURVJfRVhQUkVTU0lPTlwiOjMxLFwiUVFfU1RSSU5HXCI6MzIsXCJRX1NUUklOR1wiOjMzLFwiJGFjY2VwdFwiOjAsXCIkZW5kXCI6MX0sXG50ZXJtaW5hbHNfOiB7MjpcImVycm9yXCIsNDpcIkRPTExBUlwiLDEyOlwiRE9UXCIsMTQ6XCJET1RfRE9UXCIsMTU6XCJTVEFSXCIsMTY6XCJJREVOVElGSUVSXCIsMTc6XCJTQ1JJUFRfRVhQUkVTU0lPTlwiLDE4OlwiSU5URUdFUlwiLDE5OlwiRU5EXCIsMjI6XCJbXCIsMjQ6XCJdXCIsMjg6XCIsXCIsMzA6XCJBUlJBWV9TTElDRVwiLDMxOlwiRklMVEVSX0VYUFJFU1NJT05cIiwzMjpcIlFRX1NUUklOR1wiLDMzOlwiUV9TVFJJTkdcIn0sXG5wcm9kdWN0aW9uc186IFswLFszLDFdLFszLDJdLFszLDFdLFszLDJdLFs1LDFdLFs1LDJdLFs3LDFdLFs3LDFdLFs4LDFdLFs4LDFdLFsxMCwyXSxbNiwxXSxbMTEsMl0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbOSwxXSxbOSwxXSxbMjAsM10sWzIxLDRdLFsyMywxXSxbMjMsMV0sWzI2LDFdLFsyNiwzXSxbMjcsMV0sWzI3LDFdLFsyNywxXSxbMjUsMV0sWzI1LDFdLFsyNSwxXSxbMjksMV0sWzI5LDFdXSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlIC8qIGFjdGlvblsxXSAqLywgJCQgLyogdnN0YWNrICovLCBfJCAvKiBsc3RhY2sgKi9cbi8qKi8pIHtcbi8qIHRoaXMgPT0geXl2YWwgKi9cbmlmICgheXkuYXN0KSB7XG4gICAgeXkuYXN0ID0gX2FzdDtcbiAgICBfYXN0LmluaXRpYWxpemUoKTtcbn1cblxudmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbnN3aXRjaCAoeXlzdGF0ZSkge1xuY2FzZSAxOnl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJCRbJDBdIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDI6eXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiAkJFskMC0xXSB9IH0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKClcbmJyZWFrO1xuY2FzZSAzOnl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKVxuYnJlYWs7XG5jYXNlIDQ6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiwgc2NvcGU6IFwiY2hpbGRcIiwgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQkWyQwLTFdIH19KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpXG5icmVhaztcbmNhc2UgNTpcbmJyZWFrO1xuY2FzZSA2OlxuYnJlYWs7XG5jYXNlIDc6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiB9KTsgeXkuYXN0LnB1c2goKVxuYnJlYWs7XG5jYXNlIDg6eXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJzdWJzY3JpcHRcIiB9KTsgeXkuYXN0LnB1c2goKSBcbmJyZWFrO1xuY2FzZSA5Onl5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiIH0pXG5icmVhaztcbmNhc2UgMTA6eXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KVxuYnJlYWs7XG5jYXNlIDExOlxuYnJlYWs7XG5jYXNlIDEyOnl5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiLCBvcGVyYXRpb246IFwibWVtYmVyXCIgfSlcbmJyZWFrO1xuY2FzZSAxMzpcbmJyZWFrO1xuY2FzZSAxNDp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIndpbGRjYXJkXCIsIHZhbHVlOiAkJFskMF0gfSB9KVxuYnJlYWs7XG5jYXNlIDE1Onl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwiaWRlbnRpZmllclwiLCB2YWx1ZTogJCRbJDBdIH0gfSlcbmJyZWFrO1xuY2FzZSAxNjp5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNjcmlwdF9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9KVxuYnJlYWs7XG5jYXNlIDE3Onl5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwibnVtZXJpY19saXRlcmFsXCIsIHZhbHVlOiBwYXJzZUludCgkJFskMF0pIH0gfSlcbmJyZWFrO1xuY2FzZSAxODpcbmJyZWFrO1xuY2FzZSAxOTp5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KVxuYnJlYWs7XG5jYXNlIDIwOnl5LmFzdC5zZXQoeyBzY29wZTogXCJkZXNjZW5kYW50XCIgfSlcbmJyZWFrO1xuY2FzZSAyMTpcbmJyZWFrO1xuY2FzZSAyMjpcbmJyZWFrO1xuY2FzZSAyMzpcbmJyZWFrO1xuY2FzZSAyNDokJFskMF0ubGVuZ3RoID4gMT8geXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ1bmlvblwiLCB2YWx1ZTogJCRbJDBdIH0gfSkgOiB0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xuY2FzZSAyNTp0aGlzLiQgPSBbJCRbJDBdXVxuYnJlYWs7XG5jYXNlIDI2OnRoaXMuJCA9ICQkWyQwLTJdLmNvbmNhdCgkJFskMF0pXG5icmVhaztcbmNhc2UgMjc6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwibnVtZXJpY19saXRlcmFsXCIsIHZhbHVlOiBwYXJzZUludCgkJFskMF0pIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMjg6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic3RyaW5nX2xpdGVyYWxcIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDI5OnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNsaWNlXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMDp0aGlzLiQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJCRbJDBdIH0gfTsgeXkuYXN0LnNldCh0aGlzLiQpXG5icmVhaztcbmNhc2UgMzE6dGhpcy4kID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQkWyQwXSB9IH07IHl5LmFzdC5zZXQodGhpcy4kKVxuYnJlYWs7XG5jYXNlIDMyOnRoaXMuJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImZpbHRlcl9leHByZXNzaW9uXCIsIHZhbHVlOiAkJFskMF0gfSB9OyB5eS5hc3Quc2V0KHRoaXMuJClcbmJyZWFrO1xuY2FzZSAzMzp0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xuY2FzZSAzNDp0aGlzLiQgPSAkJFskMF1cbmJyZWFrO1xufVxufSxcbnRhYmxlOiBbezM6MSw0OlsxLDJdLDY6MywxMzo0LDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldfSx7MTpbM119LHsxOlsyLDFdLDU6MTAsNzoxMSw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDNdLDU6MjEsNzoxMSw4OjEyLDk6MTMsMTA6MTQsMTE6MTUsMTI6WzEsMThdLDE0OlsxLDE5XSwyMDoxNiwyMToxNywyMjpbMSwyMF19LHsxOlsyLDEyXSwxMjpbMiwxMl0sMTQ6WzIsMTJdLDIyOlsyLDEyXX0sezE6WzIsMTRdLDEyOlsyLDE0XSwxNDpbMiwxNF0sMjI6WzIsMTRdfSx7MTpbMiwxNV0sMTI6WzIsMTVdLDE0OlsyLDE1XSwyMjpbMiwxNV19LHsxOlsyLDE2XSwxMjpbMiwxNl0sMTQ6WzIsMTZdLDIyOlsyLDE2XX0sezE6WzIsMTddLDEyOlsyLDE3XSwxNDpbMiwxN10sMjI6WzIsMTddfSx7MTpbMiwxOF0sMTI6WzIsMThdLDE0OlsyLDE4XSwyMjpbMiwxOF19LHsxOlsyLDJdLDc6MjIsODoxMiw5OjEzLDEwOjE0LDExOjE1LDEyOlsxLDE4XSwxNDpbMSwxOV0sMjA6MTYsMjE6MTcsMjI6WzEsMjBdfSx7MTpbMiw1XSwxMjpbMiw1XSwxNDpbMiw1XSwyMjpbMiw1XX0sezE6WzIsN10sMTI6WzIsN10sMTQ6WzIsN10sMjI6WzIsN119LHsxOlsyLDhdLDEyOlsyLDhdLDE0OlsyLDhdLDIyOlsyLDhdfSx7MTpbMiw5XSwxMjpbMiw5XSwxNDpbMiw5XSwyMjpbMiw5XX0sezE6WzIsMTBdLDEyOlsyLDEwXSwxNDpbMiwxMF0sMjI6WzIsMTBdfSx7MTpbMiwxOV0sMTI6WzIsMTldLDE0OlsyLDE5XSwyMjpbMiwxOV19LHsxOlsyLDIwXSwxMjpbMiwyMF0sMTQ6WzIsMjBdLDIyOlsyLDIwXX0sezEzOjIzLDE1OlsxLDVdLDE2OlsxLDZdLDE3OlsxLDddLDE4OlsxLDhdLDE5OlsxLDldfSx7MTM6MjQsMTU6WzEsNV0sMTY6WzEsNl0sMTc6WzEsN10sMTg6WzEsOF0sMTk6WzEsOV0sMjI6WzEsMjVdfSx7MTU6WzEsMjldLDE3OlsxLDMwXSwxODpbMSwzM10sMjM6MjYsMjU6MjcsMjY6MjgsMjc6MzIsMjk6MzQsMzA6WzEsMzVdLDMxOlsxLDMxXSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MTpbMiw0XSw3OjIyLDg6MTIsOToxMywxMDoxNCwxMToxNSwxMjpbMSwxOF0sMTQ6WzEsMTldLDIwOjE2LDIxOjE3LDIyOlsxLDIwXX0sezE6WzIsNl0sMTI6WzIsNl0sMTQ6WzIsNl0sMjI6WzIsNl19LHsxOlsyLDExXSwxMjpbMiwxMV0sMTQ6WzIsMTFdLDIyOlsyLDExXX0sezE6WzIsMTNdLDEyOlsyLDEzXSwxNDpbMiwxM10sMjI6WzIsMTNdfSx7MTU6WzEsMjldLDE3OlsxLDMwXSwxODpbMSwzM10sMjM6MzgsMjU6MjcsMjY6MjgsMjc6MzIsMjk6MzQsMzA6WzEsMzVdLDMxOlsxLDMxXSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MjQ6WzEsMzldfSx7MjQ6WzIsMjNdfSx7MjQ6WzIsMjRdLDI4OlsxLDQwXX0sezI0OlsyLDMwXX0sezI0OlsyLDMxXX0sezI0OlsyLDMyXX0sezI0OlsyLDI1XSwyODpbMiwyNV19LHsyNDpbMiwyN10sMjg6WzIsMjddfSx7MjQ6WzIsMjhdLDI4OlsyLDI4XX0sezI0OlsyLDI5XSwyODpbMiwyOV19LHsyNDpbMiwzM10sMjg6WzIsMzNdfSx7MjQ6WzIsMzRdLDI4OlsyLDM0XX0sezI0OlsxLDQxXX0sezE6WzIsMjFdLDEyOlsyLDIxXSwxNDpbMiwyMV0sMjI6WzIsMjFdfSx7MTg6WzEsMzNdLDI3OjQyLDI5OjM0LDMwOlsxLDM1XSwzMjpbMSwzNl0sMzM6WzEsMzddfSx7MTpbMiwyMl0sMTI6WzIsMjJdLDE0OlsyLDIyXSwyMjpbMiwyMl19LHsyNDpbMiwyNl0sMjg6WzIsMjZdfV0sXG5kZWZhdWx0QWN0aW9uczogezI3OlsyLDIzXSwyOTpbMiwzMF0sMzA6WzIsMzFdLDMxOlsyLDMyXX0sXG5wYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgIGlmIChoYXNoLnJlY292ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMudHJhY2Uoc3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICB9XG59LFxucGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSAnJywgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCByZWNvdmVyaW5nID0gMCwgVEVSUk9SID0gMiwgRU9GID0gMTtcbiAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7XG4gICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7XG4gICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7XG4gICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5sZXhlci55eWxsb2MgPSB7fTtcbiAgICB9XG4gICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7XG4gICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0aGlzLnl5LnBhcnNlRXJyb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHtcbiAgICAgICAgc3RhY2subGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47XG4gICAgICAgIHZzdGFjay5sZW5ndGggPSB2c3RhY2subGVuZ3RoIC0gbjtcbiAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cbiAgICB2YXIgc3ltYm9sLCBwcmVFcnJvclN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgYSwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5bWJvbCA9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAndW5kZWZpbmVkJyB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVyclN0ciA9ICcnO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goJ1xcJycgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyAnXFwnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICdQYXJzZSBlcnJvciBvbiBsaW5lICcgKyAoeXlsaW5lbm8gKyAxKSArICc6XFxuJyArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAnXFxuRXhwZWN0aW5nICcgKyBleHBlY3RlZC5qb2luKCcsICcpICsgJywgZ290IFxcJycgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICdcXCcnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICdQYXJzZSBlcnJvciBvbiBsaW5lICcgKyAoeXlsaW5lbm8gKyAxKSArICc6IFVuZXhwZWN0ZWQgJyArIChzeW1ib2wgPT0gRU9GID8gJ2VuZCBvZiBpbnB1dCcgOiAnXFwnJyArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgJ1xcJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubGV4ZXIubWF0Y2gsXG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGV4ZXIueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICcgKyBzdGF0ZSArICcsIHRva2VuOiAnICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh0aGlzLmxleGVyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkge1xuICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nO1xuICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0O1xuICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhlci55eWxpbmVubztcbiAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDtcbiAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICAgIHRoaXMueXksXG4gICAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59fTtcbnZhciBfYXN0ID0ge1xuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX25vZGVzID0gW107XG4gICAgdGhpcy5fbm9kZSA9IHt9O1xuICAgIHRoaXMuX3N0YXNoID0gW107XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbihwcm9wcykge1xuICAgIGZvciAodmFyIGsgaW4gcHJvcHMpIHRoaXMuX25vZGVba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfSxcblxuICBub2RlOiBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkgdGhpcy5fbm9kZSA9IG9iajtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfSxcblxuICBwdXNoOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2Rlcy5wdXNoKHRoaXMuX25vZGUpO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgfSxcblxuICB1bnNoaWZ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9ub2Rlcy51bnNoaWZ0KHRoaXMuX25vZGUpO1xuICAgIHRoaXMuX25vZGUgPSB7fTtcbiAgfSxcblxuICB5aWVsZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIF9ub2RlcyA9IHRoaXMuX25vZGVzO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHJldHVybiBfbm9kZXM7XG4gIH1cbn07XG4vKiBnZW5lcmF0ZWQgYnkgamlzb24tbGV4IDAuMi4xICovXG52YXIgbGV4ZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBsZXhlciA9IHtcblxuRU9GOjEsXG5cbnBhcnNlRXJyb3I6ZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG5zZXRJbnB1dDpmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG5pbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG5cbi8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbnVucHV0OmZ1bmN0aW9uIChjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuIC0gMSk7XG4gICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcblxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgIChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApXG4gICAgICAgICAgICAgICAgICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOlxuICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbm1vcmU6ZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbnJlamVjdDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcbicgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG5sZXNzOmZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgfSxcblxuLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xucGFzdElucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/ICcuLi4nOicnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xudXBjb21pbmdJbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwLW5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG5cbi8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbnNob3dQb3NpdGlvbjpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgfSxcblxuLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG50ZXN0X21hdGNoOmZ1bmN0aW9uIChtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbixcbiAgICAgICAgICAgIGxpbmVzLFxuICAgICAgICAgICAgYmFja3VwO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAvLyBzYXZlIGNvbnRleHRcbiAgICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgICAgICB5eWxsb2M6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgICAgICBtYXRjaDogdGhpcy5tYXRjaCxcbiAgICAgICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgICAgIHl5bGVuZzogdGhpcy55eWxlbmcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgICAgICBfaW5wdXQ6IHRoaXMuX2lucHV0LFxuICAgICAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgLy8gcmVjb3ZlciBjb250ZXh0XG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGJhY2t1cCkge1xuICAgICAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHJ1bGUgYWN0aW9uIGNhbGxlZCByZWplY3QoKSBpbXBseWluZyB0aGUgbmV4dCBydWxlIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbm5leHQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b2tlbixcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgdGVtcE1hdGNoLFxuICAgICAgICAgICAgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHJ1bGUgYWN0aW9uIGNhbGxlZCByZWplY3QoKSBpbXBseWluZyBhIHJ1bGUgTUlTbWF0Y2guXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlOiB0aGlzIGlzIGEgbGV4ZXIgcnVsZSB3aGljaCBjb25zdW1lcyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhIHRva2VuIChlLmcuIHdoaXRlc3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlOiB0aGlzIGlzIGEgbGV4ZXIgcnVsZSB3aGljaCBjb25zdW1lcyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhIHRva2VuIChlLmcuIHdoaXRlc3BhY2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdMZXhpY2FsIGVycm9yIG9uIGxpbmUgJyArICh0aGlzLnl5bGluZW5vICsgMSkgKyAnLiBVbnJlY29nbml6ZWQgdGV4dC5cXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG5sZXg6ZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG5iZWdpbjpmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgfSxcblxuLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbnBvcFN0YXRlOmZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbl9jdXJyZW50UnVsZXM6ZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG50b3BTdGF0ZTpmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG5wdXNoU3RhdGU6ZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgfSxcblxuLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbnN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgfSxcbm9wdGlvbnM6IHt9LFxucGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LHl5XywkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLFlZX1NUQVJUXG4vKiovKSB7XG5cbnZhciBZWVNUQVRFPVlZX1NUQVJUO1xuc3dpdGNoKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbmNhc2UgMDpyZXR1cm4gNFxuYnJlYWs7XG5jYXNlIDE6cmV0dXJuIDE0XG5icmVhaztcbmNhc2UgMjpyZXR1cm4gMTJcbmJyZWFrO1xuY2FzZSAzOnJldHVybiAxNVxuYnJlYWs7XG5jYXNlIDQ6cmV0dXJuIDE2XG5icmVhaztcbmNhc2UgNTpyZXR1cm4gMjJcbmJyZWFrO1xuY2FzZSA2OnJldHVybiAyNFxuYnJlYWs7XG5jYXNlIDc6cmV0dXJuIDI4XG5icmVhaztcbmNhc2UgODpyZXR1cm4gMzBcbmJyZWFrO1xuY2FzZSA5OnJldHVybiAxOFxuYnJlYWs7XG5jYXNlIDEwOnl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cigxLHl5Xy55eWxlbmctMik7IHJldHVybiAzMjtcbmJyZWFrO1xuY2FzZSAxMTp5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSx5eV8ueXlsZW5nLTIpOyByZXR1cm4gMzM7XG5icmVhaztcbmNhc2UgMTI6cmV0dXJuIDE3XG5icmVhaztcbmNhc2UgMTM6cmV0dXJuIDMxXG5icmVhaztcbn1cbn0sXG5ydWxlczogWy9eKD86XFwkKS8sL14oPzpcXC5cXC4pLywvXig/OlxcLikvLC9eKD86XFwqKS8sL14oPzpbYS16QS1aX10rW2EtekEtWjAtOV9dKikvLC9eKD86XFxbKS8sL14oPzpcXF0pLywvXig/OiwpLywvXig/OigoLT8oPzowfFsxLTldWzAtOV0qKSkpP1xcOigoLT8oPzowfFsxLTldWzAtOV0qKSkpPyhcXDooKC0/KD86MHxbMS05XVswLTldKikpKT8pPykvLC9eKD86KC0/KD86MHxbMS05XVswLTldKikpKS8sL14oPzpcIig/OlxcXFxbXCJiZm5ydC9cXFxcXXxcXFxcdVthLWZBLUYwLTldezR9fFteXCJcXFxcXSkqXCIpLywvXig/OicoPzpcXFxcWydiZm5ydC9cXFxcXXxcXFxcdVthLWZBLUYwLTldezR9fFteJ1xcXFxdKSonKS8sL14oPzpcXCguKz9cXCkoPz1cXF0pKS8sL14oPzpcXD9cXCguKz9cXCkoPz1cXF0pKS9dLFxuY29uZGl0aW9uczoge1wiSU5JVElBTFwiOntcInJ1bGVzXCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTNdLFwiaW5jbHVzaXZlXCI6dHJ1ZX19XG59O1xucmV0dXJuIGxleGVyO1xufSkoKTtcbnBhcnNlci5sZXhlciA9IGxleGVyO1xuZnVuY3Rpb24gUGFyc2VyICgpIHtcbiAgdGhpcy55eSA9IHt9O1xufVxuUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjtwYXJzZXIuUGFyc2VyID0gUGFyc2VyO1xucmV0dXJuIG5ldyBQYXJzZXI7XG59KSgpO1xuXG5cbmlmICh0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG5leHBvcnRzLnBhcnNlciA9IHBhcnNlcjtcbmV4cG9ydHMuUGFyc2VyID0gcGFyc2VyLlBhcnNlcjtcbmV4cG9ydHMucGFyc2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXJzZXIucGFyc2UuYXBwbHkocGFyc2VyLCBhcmd1bWVudHMpOyB9O1xuZXhwb3J0cy5tYWluID0gZnVuY3Rpb24gY29tbW9uanNNYWluKGFyZ3MpIHtcbiAgICBpZiAoIWFyZ3NbMV0pIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1VzYWdlOiAnK2FyZ3NbMF0rJyBGSUxFJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdmFyIHNvdXJjZSA9IHJlcXVpcmUoJ2ZzJykucmVhZEZpbGVTeW5jKHJlcXVpcmUoJ3BhdGgnKS5ub3JtYWxpemUoYXJnc1sxXSksIFwidXRmOFwiKTtcbiAgICByZXR1cm4gZXhwb3J0cy5wYXJzZXIucGFyc2Uoc291cmNlKTtcbn07XG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgcmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgZXhwb3J0cy5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSk7XG59XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2luZGV4Jyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaWRlbnRpZmllcjogXCJbYS16QS1aX10rW2EtekEtWjAtOV9dKlwiLFxuICBpbnRlZ2VyOiBcIi0/KD86MHxbMS05XVswLTldKilcIixcbiAgcXFfc3RyaW5nOiBcIlxcXCIoPzpcXFxcXFxcXFtcXFwiYmZucnQvXFxcXFxcXFxdfFxcXFxcXFxcdVthLWZBLUYwLTldezR9fFteXFxcIlxcXFxcXFxcXSkqXFxcIlwiLFxuICBxX3N0cmluZzogXCInKD86XFxcXFxcXFxbXFwnYmZucnQvXFxcXFxcXFxdfFxcXFxcXFxcdVthLWZBLUYwLTldezR9fFteXFwnXFxcXFxcXFxdKSonXCJcbn07XG4iLCJ2YXIgZGljdCA9IHJlcXVpcmUoJy4vZGljdCcpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbnZhciBncmFtbWFyID0ge1xuXG4gICAgbGV4OiB7XG5cbiAgICAgICAgbWFjcm9zOiB7XG4gICAgICAgICAgICBlc2M6IFwiXFxcXFxcXFxcIixcbiAgICAgICAgICAgIGludDogZGljdC5pbnRlZ2VyXG4gICAgICAgIH0sXG5cbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIFtcIlxcXFwkXCIsIFwicmV0dXJuICdET0xMQVInXCJdLFxuICAgICAgICAgICAgW1wiXFxcXC5cXFxcLlwiLCBcInJldHVybiAnRE9UX0RPVCdcIl0sXG4gICAgICAgICAgICBbXCJcXFxcLlwiLCBcInJldHVybiAnRE9UJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFwqXCIsIFwicmV0dXJuICdTVEFSJ1wiXSxcbiAgICAgICAgICAgIFtkaWN0LmlkZW50aWZpZXIsIFwicmV0dXJuICdJREVOVElGSUVSJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFxbXCIsIFwicmV0dXJuICdbJ1wiXSxcbiAgICAgICAgICAgIFtcIlxcXFxdXCIsIFwicmV0dXJuICddJ1wiXSxcbiAgICAgICAgICAgIFtcIixcIiwgXCJyZXR1cm4gJywnXCJdLFxuICAgICAgICAgICAgW1wiKHtpbnR9KT9cXFxcOih7aW50fSk/KFxcXFw6KHtpbnR9KT8pP1wiLCBcInJldHVybiAnQVJSQVlfU0xJQ0UnXCJdLFxuICAgICAgICAgICAgW1wie2ludH1cIiwgXCJyZXR1cm4gJ0lOVEVHRVInXCJdLFxuICAgICAgICAgICAgW2RpY3QucXFfc3RyaW5nLCBcInl5dGV4dCA9IHl5dGV4dC5zdWJzdHIoMSx5eWxlbmctMik7IHJldHVybiAnUVFfU1RSSU5HJztcIl0sXG4gICAgICAgICAgICBbZGljdC5xX3N0cmluZywgXCJ5eXRleHQgPSB5eXRleHQuc3Vic3RyKDEseXlsZW5nLTIpOyByZXR1cm4gJ1FfU1RSSU5HJztcIl0sXG4gICAgICAgICAgICBbXCJcXFxcKC4rP1xcXFwpKD89XFxcXF0pXCIsIFwicmV0dXJuICdTQ1JJUFRfRVhQUkVTU0lPTidcIl0sXG4gICAgICAgICAgICBbXCJcXFxcP1xcXFwoLis/XFxcXCkoPz1cXFxcXSlcIiwgXCJyZXR1cm4gJ0ZJTFRFUl9FWFBSRVNTSU9OJ1wiXVxuICAgICAgICBdXG4gICAgfSxcblxuICAgIHN0YXJ0OiBcIkpTT05fUEFUSFwiLFxuXG4gICAgYm5mOiB7XG5cbiAgICAgICAgSlNPTl9QQVRIOiBbXG4gICAgICAgICAgICAgICAgWyAnRE9MTEFSJywgICAgICAgICAgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInJvb3RcIiwgdmFsdWU6ICQxIH0gfSk7IHl5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdET0xMQVIgUEFUSF9DT01QT05FTlRTJywgJ3l5LmFzdC5zZXQoeyBleHByZXNzaW9uOiB7IHR5cGU6IFwicm9vdFwiLCB2YWx1ZTogJDEgfSB9KTsgeXkuYXN0LnVuc2hpZnQoKTsgcmV0dXJuIHl5LmFzdC55aWVsZCgpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ0xFQURJTkdfQ0hJTERfTUVNQkVSX0VYUFJFU1NJT04nLCAgICAgICAgICAgICAgICAgJ3l5LmFzdC51bnNoaWZ0KCk7IHJldHVybiB5eS5hc3QueWllbGQoKScgXSxcbiAgICAgICAgICAgICAgICBbICdMRUFESU5HX0NISUxEX01FTUJFUl9FWFBSRVNTSU9OIFBBVEhfQ09NUE9ORU5UUycsICd5eS5hc3Quc2V0KHsgb3BlcmF0aW9uOiBcIm1lbWJlclwiLCBzY29wZTogXCJjaGlsZFwiLCBleHByZXNzaW9uOiB7IHR5cGU6IFwiaWRlbnRpZmllclwiLCB2YWx1ZTogJDEgfX0pOyB5eS5hc3QudW5zaGlmdCgpOyByZXR1cm4geXkuYXN0LnlpZWxkKCknIF0gXSxcblxuICAgICAgICBQQVRIX0NPTVBPTkVOVFM6IFtcbiAgICAgICAgICAgICAgICBbICdQQVRIX0NPTVBPTkVOVCcsICAgICAgICAgICAgICAgICAnJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1BBVEhfQ09NUE9ORU5UUyBQQVRIX0NPTVBPTkVOVCcsICcnIF0gXSxcblxuICAgICAgICBQQVRIX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ01FTUJFUl9DT01QT05FTlQnLCAgICAneXkuYXN0LnNldCh7IG9wZXJhdGlvbjogXCJtZW1iZXJcIiB9KTsgeXkuYXN0LnB1c2goKScgXSxcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfQ09NUE9ORU5UJywgJ3l5LmFzdC5zZXQoeyBvcGVyYXRpb246IFwic3Vic2NyaXB0XCIgfSk7IHl5LmFzdC5wdXNoKCkgJyBdIF0sXG5cbiAgICAgICAgTUVNQkVSX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0NISUxEX01FTUJFUl9DT01QT05FTlQnLCAgICAgICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlQnLCAneXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KScgXSBdLFxuXG4gICAgICAgIENISUxEX01FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1QgTUVNQkVSX0VYUFJFU1NJT04nLCAnJyBdIF0sXG5cbiAgICAgICAgTEVBRElOR19DSElMRF9NRU1CRVJfRVhQUkVTU0lPTjogW1xuICAgICAgICAgICAgICAgIFsgJ01FTUJFUl9FWFBSRVNTSU9OJywgJ3l5LmFzdC5zZXQoeyBzY29wZTogXCJjaGlsZFwiLCBvcGVyYXRpb246IFwibWVtYmVyXCIgfSknIF0gXSxcblxuICAgICAgICBERVNDRU5EQU5UX01FTUJFUl9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdET1RfRE9UIE1FTUJFUl9FWFBSRVNTSU9OJywgJycgXSBdLFxuXG4gICAgICAgIE1FTUJFUl9FWFBSRVNTSU9OOiBbXG4gICAgICAgICAgICAgICAgWyAnU1RBUicsICAgICAgICAgICAgICAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJ3aWxkY2FyZFwiLCB2YWx1ZTogJDEgfSB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdJREVOVElGSUVSJywgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcImlkZW50aWZpZXJcIiwgdmFsdWU6ICQxIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnU0NSSVBUX0VYUFJFU1NJT04nLCAneXkuYXN0LnNldCh7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzY3JpcHRfZXhwcmVzc2lvblwiLCB2YWx1ZTogJDEgfSB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdJTlRFR0VSJywgICAgICAgICAgICd5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJDEpIH0gfSknIF0sXG4gICAgICAgICAgICAgICAgWyAnRU5EJywgICAgICAgICAgICAgICAnJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0NISUxEX1NVQlNDUklQVF9DT01QT05FTlQnLCAgICAgICd5eS5hc3Quc2V0KHsgc2NvcGU6IFwiY2hpbGRcIiB9KScgXSxcbiAgICAgICAgICAgICAgICBbICdERVNDRU5EQU5UX1NVQlNDUklQVF9DT01QT05FTlQnLCAneXkuYXN0LnNldCh7IHNjb3BlOiBcImRlc2NlbmRhbnRcIiB9KScgXSBdLFxuXG4gICAgICAgIENISUxEX1NVQlNDUklQVF9DT01QT05FTlQ6IFtcbiAgICAgICAgICAgICAgICBbICdbIFNVQlNDUklQVCBdJywgJycgXSBdLFxuXG4gICAgICAgIERFU0NFTkRBTlRfU1VCU0NSSVBUX0NPTVBPTkVOVDogW1xuICAgICAgICAgICAgICAgIFsgJ0RPVF9ET1QgWyBTVUJTQ1JJUFQgXScsICcnIF0gXSxcblxuICAgICAgICBTVUJTQ1JJUFQ6IFtcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTicsICcnIF0sXG4gICAgICAgICAgICAgICAgWyAnU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVCcsICckMS5sZW5ndGggPiAxPyB5eS5hc3Quc2V0KHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInVuaW9uXCIsIHZhbHVlOiAkMSB9IH0pIDogJCQgPSAkMScgXSBdLFxuXG4gICAgICAgIFNVQlNDUklQVF9FWFBSRVNTSU9OX0xJU1Q6IFtcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUQUJMRScsICckJCA9IFskMV0nXSxcbiAgICAgICAgICAgICAgICBbICdTVUJTQ1JJUFRfRVhQUkVTU0lPTl9MSVNUICwgU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEUnLCAnJCQgPSAkMS5jb25jYXQoJDMpJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0VYUFJFU1NJT05fTElTVEFCTEU6IFtcbiAgICAgICAgICAgICAgICBbICdJTlRFR0VSJywgICAgICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIm51bWVyaWNfbGl0ZXJhbFwiLCB2YWx1ZTogcGFyc2VJbnQoJDEpIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnU1RSSU5HX0xJVEVSQUwnLCAgICAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJzdHJpbmdfbGl0ZXJhbFwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSxcbiAgICAgICAgICAgICAgICBbICdBUlJBWV9TTElDRScsICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcInNsaWNlXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdIF0sXG5cbiAgICAgICAgU1VCU0NSSVBUX0VYUFJFU1NJT046IFtcbiAgICAgICAgICAgICAgICBbICdTVEFSJywgICAgICAgICAgICAgICckJCA9IHsgZXhwcmVzc2lvbjogeyB0eXBlOiBcIndpbGRjYXJkXCIsIHZhbHVlOiAkMSB9IH07IHl5LmFzdC5zZXQoJCQpJyBdLFxuICAgICAgICAgICAgICAgIFsgJ1NDUklQVF9FWFBSRVNTSU9OJywgJyQkID0geyBleHByZXNzaW9uOiB7IHR5cGU6IFwic2NyaXB0X2V4cHJlc3Npb25cIiwgdmFsdWU6ICQxIH0gfTsgeXkuYXN0LnNldCgkJCknIF0sXG4gICAgICAgICAgICAgICAgWyAnRklMVEVSX0VYUFJFU1NJT04nLCAnJCQgPSB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJmaWx0ZXJfZXhwcmVzc2lvblwiLCB2YWx1ZTogJDEgfSB9OyB5eS5hc3Quc2V0KCQkKScgXSBdLFxuXG4gICAgICAgIFNUUklOR19MSVRFUkFMOiBbXG4gICAgICAgICAgICAgICAgWyAnUVFfU1RSSU5HJywgXCIkJCA9ICQxXCIgXSxcbiAgICAgICAgICAgICAgICBbICdRX1NUUklORycsICBcIiQkID0gJDFcIiBdIF1cbiAgICB9XG59O1xuaWYgKGZzLnJlYWRGaWxlU3luYykge1xuICBncmFtbWFyLm1vZHVsZUluY2x1ZGUgPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiLi4vaW5jbHVkZS9tb2R1bGUuanNcIikpO1xuICBncmFtbWFyLmFjdGlvbkluY2x1ZGUgPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiLi4vaW5jbHVkZS9hY3Rpb24uanNcIikpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYW1tYXI7XG4iLCJ2YXIgYWVzcHJpbSA9IHJlcXVpcmUoJy4vYWVzcHJpbScpO1xudmFyIHNsaWNlID0gcmVxdWlyZSgnLi9zbGljZScpO1xudmFyIF9ldmFsdWF0ZSA9IHJlcXVpcmUoJ3N0YXRpYy1ldmFsJyk7XG52YXIgX3VuaXEgPSByZXF1aXJlKCd1bmRlcnNjb3JlJykudW5pcTtcblxudmFyIEhhbmRsZXJzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuSGFuZGxlcnMucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy50cmF2ZXJzZSA9IHRyYXZlcnNlcih0cnVlKTtcbiAgdGhpcy5kZXNjZW5kID0gdHJhdmVyc2VyKCk7XG59XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5rZXlzID0gT2JqZWN0LmtleXM7XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24oY29tcG9uZW50KSB7XG5cbiAgdmFyIGtleSA9IFsgY29tcG9uZW50Lm9wZXJhdGlvbiwgY29tcG9uZW50LnNjb3BlLCBjb21wb25lbnQuZXhwcmVzc2lvbi50eXBlIF0uam9pbignLScpO1xuICB2YXIgbWV0aG9kID0gdGhpcy5fZm5zW2tleV07XG5cbiAgaWYgKCFtZXRob2QpIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IHJlc29sdmUga2V5OiBcIiArIGtleSk7XG4gIHJldHVybiBtZXRob2QuYmluZCh0aGlzKTtcbn07XG5cbkhhbmRsZXJzLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uKGtleSwgaGFuZGxlcikge1xuXG4gIGlmICghaGFuZGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaGFuZGxlciBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICB0aGlzLl9mbnNba2V5XSA9IGhhbmRsZXI7XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUuX2ZucyA9IHtcblxuICAnbWVtYmVyLWNoaWxkLWlkZW50aWZpZXInOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIga2V5ID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWU7XG4gICAgdmFyIHZhbHVlID0gcGFydGlhbC52YWx1ZTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYga2V5IGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gWyB7IHZhbHVlOiB2YWx1ZVtrZXldLCBwYXRoOiBwYXJ0aWFsLnBhdGguY29uY2F0KGtleSkgfSBdXG4gICAgfVxuICB9LFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC1pZGVudGlmaWVyJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT0gcmVmIH0pLFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbihrZXksIHZhbHVlLCByZWYpIHsgcmV0dXJuIGtleSA9PT0gcmVmIH0pLFxuXG4gICdtZW1iZXItY2hpbGQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbihrZXksIHZhbHVlLCByZWYpIHsgcmV0dXJuIFN0cmluZyhrZXkpID09PSBTdHJpbmcocmVmKSB9KSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtbnVtZXJpY19saXRlcmFsJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oa2V5LCB2YWx1ZSwgcmVmKSB7IHJldHVybiBrZXkgPT09IHJlZiB9KSxcblxuICAnbWVtYmVyLWNoaWxkLXdpbGRjYXJkJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ21lbWJlci1kZXNjZW5kYW50LXdpbGRjYXJkJzpcbiAgICBfdHJhdmVyc2UoZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlIH0pLFxuXG4gICdzdWJzY3JpcHQtZGVzY2VuZGFudC13aWxkY2FyZCc6XG4gICAgX3RyYXZlcnNlKGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZSB9KSxcblxuICAnc3Vic2NyaXB0LWNoaWxkLXdpbGRjYXJkJzpcbiAgICBfZGVzY2VuZChmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSksXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC1zbGljZSc6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIGlmIChpc19hcnJheShwYXJ0aWFsLnZhbHVlKSkge1xuICAgICAgdmFyIGFyZ3MgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zcGxpdCgnOicpLm1hcChfcGFyc2VfbnVsbGFibGVfaW50KTtcbiAgICAgIHZhciB2YWx1ZXMgPSBwYXJ0aWFsLnZhbHVlLm1hcChmdW5jdGlvbih2LCBpKSB7IHJldHVybiB7IHZhbHVlOiB2LCBwYXRoOiBwYXJ0aWFsLnBhdGguY29uY2F0KGkpIH0gfSk7XG4gICAgICByZXR1cm4gc2xpY2UuYXBwbHkobnVsbCwgW3ZhbHVlc10uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH0sXG5cbiAgJ3N1YnNjcmlwdC1jaGlsZC11bmlvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcbiAgICAgIHZhciBfY29tcG9uZW50ID0geyBvcGVyYXRpb246ICdzdWJzY3JpcHQnLCBzY29wZTogJ2NoaWxkJywgZXhwcmVzc2lvbjogY29tcG9uZW50LmV4cHJlc3Npb24gfTtcbiAgICAgIHZhciBoYW5kbGVyID0gdGhpcy5yZXNvbHZlKF9jb21wb25lbnQpO1xuICAgICAgdmFyIF9yZXN1bHRzID0gaGFuZGxlcihfY29tcG9uZW50LCBwYXJ0aWFsKTtcbiAgICAgIGlmIChfcmVzdWx0cykge1xuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoX3Jlc3VsdHMpO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgcmV0dXJuIHVuaXF1ZShyZXN1bHRzKTtcbiAgfSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtdW5pb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICB2YXIganAgPSByZXF1aXJlKCcuLicpO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgdmFyIG5vZGVzID0ganAubm9kZXMocGFydGlhbCwgJyQuLionKS5zbGljZSgxKTtcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSByZXR1cm47XG4gICAgICBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBvbmVudCkge1xuICAgICAgICB2YXIgX2NvbXBvbmVudCA9IHsgb3BlcmF0aW9uOiAnc3Vic2NyaXB0Jywgc2NvcGU6ICdjaGlsZCcsIGV4cHJlc3Npb246IGNvbXBvbmVudC5leHByZXNzaW9uIH07XG4gICAgICAgIHZhciBoYW5kbGVyID0gc2VsZi5yZXNvbHZlKF9jb21wb25lbnQpO1xuICAgICAgICB2YXIgX3Jlc3VsdHMgPSBoYW5kbGVyKF9jb21wb25lbnQsIG5vZGUpO1xuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoX3Jlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5pcXVlKHJlc3VsdHMpO1xuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtZmlsdGVyX2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICAvLyBzbGljZSBvdXQgdGhlIGV4cHJlc3Npb24gZnJvbSA/KGV4cHJlc3Npb24pXG4gICAgdmFyIHNyYyA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDIsIC0xKTtcbiAgICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcblxuICAgIHZhciBwYXNzYWJsZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBldmFsdWF0ZShhc3QsIHsgJ0AnOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKHBhcnRpYWwsIG51bGwsIHBhc3NhYmxlLCBjb3VudCk7XG5cbiAgfSxcblxuICAnc3Vic2NyaXB0LWRlc2NlbmRhbnQtZmlsdGVyX2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG5cbiAgICAvLyBzbGljZSBvdXQgdGhlIGV4cHJlc3Npb24gZnJvbSA/KGV4cHJlc3Npb24pXG4gICAgdmFyIHNyYyA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlLnNsaWNlKDIsIC0xKTtcbiAgICB2YXIgYXN0ID0gYWVzcHJpbS5wYXJzZShzcmMpLmJvZHlbMF0uZXhwcmVzc2lvbjtcblxuICAgIHZhciBwYXNzYWJsZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBldmFsdWF0ZShhc3QsIHsgJ0AnOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmF2ZXJzZShwYXJ0aWFsLCBudWxsLCBwYXNzYWJsZSwgY291bnQpO1xuICB9LFxuXG4gICdzdWJzY3JpcHQtY2hpbGQtc2NyaXB0X2V4cHJlc3Npb24nOiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwpIHtcbiAgICB2YXIgZXhwID0gY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIHJldHVybiBldmFsX3JlY3Vyc2UocGFydGlhbCwgZXhwLCAnJFt7e3ZhbHVlfX1dJyk7XG4gIH0sXG5cbiAgJ21lbWJlci1jaGlsZC1zY3JpcHRfZXhwcmVzc2lvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciBleHAgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgxLCAtMSk7XG4gICAgcmV0dXJuIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBleHAsICckLnt7dmFsdWV9fScpO1xuICB9LFxuXG4gICdtZW1iZXItZGVzY2VuZGFudC1zY3JpcHRfZXhwcmVzc2lvbic6IGZ1bmN0aW9uKGNvbXBvbmVudCwgcGFydGlhbCkge1xuICAgIHZhciBleHAgPSBjb21wb25lbnQuZXhwcmVzc2lvbi52YWx1ZS5zbGljZSgxLCAtMSk7XG4gICAgcmV0dXJuIGV2YWxfcmVjdXJzZShwYXJ0aWFsLCBleHAsICckLi52YWx1ZScpO1xuICB9XG59O1xuXG5IYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snc3Vic2NyaXB0LWNoaWxkLXN0cmluZ19saXRlcmFsJ10gPVxuXHRIYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snbWVtYmVyLWNoaWxkLWlkZW50aWZpZXInXTtcblxuSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1kZXNjZW5kYW50LW51bWVyaWNfbGl0ZXJhbCddID1cbiAgICBIYW5kbGVycy5wcm90b3R5cGUuX2Zuc1snc3Vic2NyaXB0LWRlc2NlbmRhbnQtc3RyaW5nX2xpdGVyYWwnXSA9XG4gICAgSGFuZGxlcnMucHJvdG90eXBlLl9mbnNbJ21lbWJlci1kZXNjZW5kYW50LWlkZW50aWZpZXInXTtcblxuZnVuY3Rpb24gZXZhbF9yZWN1cnNlKHBhcnRpYWwsIHNyYywgdGVtcGxhdGUpIHtcblxuICB2YXIganAgPSByZXF1aXJlKCcuL2luZGV4Jyk7XG4gIHZhciBhc3QgPSBhZXNwcmltLnBhcnNlKHNyYykuYm9keVswXS5leHByZXNzaW9uO1xuICB2YXIgdmFsdWUgPSBldmFsdWF0ZShhc3QsIHsgJ0AnOiBwYXJ0aWFsLnZhbHVlIH0pO1xuICB2YXIgcGF0aCA9IHRlbXBsYXRlLnJlcGxhY2UoL1xce1xce1xccyp2YWx1ZVxccypcXH1cXH0vZywgdmFsdWUpO1xuXG4gIHZhciByZXN1bHRzID0ganAubm9kZXMocGFydGlhbC52YWx1ZSwgcGF0aCk7XG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihyKSB7XG4gICAgci5wYXRoID0gcGFydGlhbC5wYXRoLmNvbmNhdChyLnBhdGguc2xpY2UoMSkpO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gaXNfYXJyYXkodmFsKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG59XG5cbmZ1bmN0aW9uIGlzX29iamVjdCh2YWwpIHtcbiAgLy8gaXMgdGhpcyBhIG5vbi1hcnJheSwgbm9uLW51bGwgb2JqZWN0P1xuICByZXR1cm4gdmFsICYmICEodmFsIGluc3RhbmNlb2YgQXJyYXkpICYmIHZhbCBpbnN0YW5jZW9mIE9iamVjdDtcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2VyKHJlY3Vyc2UpIHtcblxuICByZXR1cm4gZnVuY3Rpb24ocGFydGlhbCwgcmVmLCBwYXNzYWJsZSwgY291bnQpIHtcblxuICAgIHZhciB2YWx1ZSA9IHBhcnRpYWwudmFsdWU7XG4gICAgdmFyIHBhdGggPSBwYXJ0aWFsLnBhdGg7XG5cbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuXG4gICAgdmFyIGRlc2NlbmQgPSBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuXG4gICAgICBpZiAoaXNfYXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHtcbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gY291bnQpIHsgcmV0dXJuIH1cbiAgICAgICAgICBpZiAocGFzc2FibGUoaW5kZXgsIGVsZW1lbnQsIHJlZikpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7IHBhdGg6IHBhdGguY29uY2F0KGluZGV4KSwgdmFsdWU6IGVsZW1lbnQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCkge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChyZWN1cnNlKSB7XG4gICAgICAgICAgICBkZXNjZW5kKGVsZW1lbnQsIHBhdGguY29uY2F0KGluZGV4KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNfb2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB0aGlzLmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+PSBjb3VudCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChwYXNzYWJsZShrLCB2YWx1ZVtrXSwgcmVmKSkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHsgcGF0aDogcGF0aC5jb25jYXQoayksIHZhbHVlOiB2YWx1ZVtrXSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IGNvdW50KSB7IHJldHVybiB9XG4gICAgICAgICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgICAgICAgIGRlc2NlbmQodmFsdWVba10sIHBhdGguY29uY2F0KGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0uYmluZCh0aGlzKTtcbiAgICBkZXNjZW5kKHZhbHVlLCBwYXRoKTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVzY2VuZChwYXNzYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29tcG9uZW50LCBwYXJ0aWFsLCBjb3VudCkge1xuICAgIHJldHVybiB0aGlzLmRlc2NlbmQocGFydGlhbCwgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUsIHBhc3NhYmxlLCBjb3VudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3RyYXZlcnNlKHBhc3NhYmxlKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb21wb25lbnQsIHBhcnRpYWwsIGNvdW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHJhdmVyc2UocGFydGlhbCwgY29tcG9uZW50LmV4cHJlc3Npb24udmFsdWUsIHBhc3NhYmxlLCBjb3VudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZhbHVhdGUoKSB7XG4gIHRyeSB7IHJldHVybiBfZXZhbHVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIGNhdGNoIChlKSB7IH1cbn1cblxuZnVuY3Rpb24gdW5pcXVlKHJlc3VsdHMpIHtcbiAgcmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQgfSlcbiAgcmV0dXJuIF91bmlxKFxuICAgIHJlc3VsdHMsXG4gICAgZnVuY3Rpb24ocikgeyByZXR1cm4gci5wYXRoLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBTdHJpbmcoYykucmVwbGFjZSgnLScsICctLScpIH0pLmpvaW4oJy0nKSB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIF9wYXJzZV9udWxsYWJsZV9pbnQodmFsKSB7XG4gIHZhciBzdmFsID0gU3RyaW5nKHZhbCk7XG4gIHJldHVybiBzdmFsLm1hdGNoKC9eLT9bMC05XSskLykgPyBwYXJzZUludChzdmFsKSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFuZGxlcnM7XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG52YXIgZGljdCA9IHJlcXVpcmUoJy4vZGljdCcpO1xudmFyIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG52YXIgSGFuZGxlcnMgPSByZXF1aXJlKCcuL2hhbmRsZXJzJyk7XG5cbnZhciBKU09OUGF0aCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcigpO1xuICB0aGlzLmhhbmRsZXJzID0gbmV3IEhhbmRsZXJzKCk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgYXNzZXJ0Lm9rKF9pc19zdHJpbmcoc3RyaW5nKSwgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcbiAgcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlKHN0cmluZyk7XG59O1xuXG5KU09OUGF0aC5wcm90b3R5cGUucGFyZW50ID0gZnVuY3Rpb24ob2JqLCBzdHJpbmcpIHtcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIG5vZGUgPSB0aGlzLm5vZGVzKG9iaiwgc3RyaW5nKVswXTtcbiAgdmFyIGtleSA9IG5vZGUucGF0aC5wb3AoKTsgLyoganNoaW50IHVudXNlZDpmYWxzZSAqL1xuICByZXR1cm4gdGhpcy52YWx1ZShvYmosIG5vZGUucGF0aCk7XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBmbikge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcbiAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBmbiwgXCJmdW5jdGlvblwiLCBcImZuIG5lZWRzIHRvIGJlIGZ1bmN0aW9uXCIpXG5cbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcyhvYmosIHN0cmluZykuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgLy8gc29ydCBub2RlcyBzbyB3ZSBhcHBseSBmcm9tIHRoZSBib3R0b20gdXBcbiAgICByZXR1cm4gYi5wYXRoLmxlbmd0aCAtIGEucGF0aC5sZW5ndGg7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIHZhciBrZXkgPSBub2RlLnBhdGgucG9wKCk7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMudmFsdWUob2JqLCB0aGlzLnN0cmluZ2lmeShub2RlLnBhdGgpKTtcbiAgICB2YXIgdmFsID0gbm9kZS52YWx1ZSA9IGZuLmNhbGwob2JqLCBwYXJlbnRba2V5XSk7XG4gICAgcGFyZW50W2tleV0gPSB2YWw7XG4gIH0sIHRoaXMpO1xuXG4gIHJldHVybiBub2Rlcztcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24ob2JqLCBwYXRoLCB2YWx1ZSkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlcyhvYmosIHBhdGgpLnNoaWZ0KCk7XG4gICAgaWYgKCFub2RlKSByZXR1cm4gdGhpcy5fdml2aWZ5KG9iaiwgcGF0aCwgdmFsdWUpO1xuICAgIHZhciBrZXkgPSBub2RlLnBhdGguc2xpY2UoLTEpLnNoaWZ0KCk7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50KG9iaiwgdGhpcy5zdHJpbmdpZnkobm9kZS5wYXRoKSk7XG4gICAgcGFyZW50W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5xdWVyeShvYmosIHRoaXMuc3RyaW5naWZ5KHBhdGgpLCAxKS5zaGlmdCgpO1xufVxuXG5KU09OUGF0aC5wcm90b3R5cGUuX3ZpdmlmeSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCB2YWx1ZSkge1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICBhc3NlcnQub2sob2JqIGluc3RhbmNlb2YgT2JqZWN0LCBcIm9iaiBuZWVkcyB0byBiZSBhbiBvYmplY3RcIik7XG4gIGFzc2VydC5vayhzdHJpbmcsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHBhdGggPSB0aGlzLnBhcnNlci5wYXJzZShzdHJpbmcpXG4gICAgLm1hcChmdW5jdGlvbihjb21wb25lbnQpIHsgcmV0dXJuIGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlIH0pO1xuXG4gIHZhciBzZXRWYWx1ZSA9IGZ1bmN0aW9uKHBhdGgsIHZhbHVlKSB7XG4gICAgdmFyIGtleSA9IHBhdGgucG9wKCk7XG4gICAgdmFyIG5vZGUgPSBzZWxmLnZhbHVlKG9iaiwgcGF0aCk7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICBzZXRWYWx1ZShwYXRoLmNvbmNhdCgpLCB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IHt9IDogW10pO1xuICAgICAgbm9kZSA9IHNlbGYudmFsdWUob2JqLCBwYXRoKTtcbiAgICB9XG4gICAgbm9kZVtrZXldID0gdmFsdWU7XG4gIH1cbiAgc2V0VmFsdWUocGF0aCwgdmFsdWUpO1xuICByZXR1cm4gdGhpcy5xdWVyeShvYmosIHN0cmluZylbMF07XG59XG5cbkpTT05QYXRoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKF9pc19zdHJpbmcoc3RyaW5nKSwgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICB2YXIgcmVzdWx0cyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcsIGNvdW50KVxuICAgIC5tYXAoZnVuY3Rpb24ocikgeyByZXR1cm4gci52YWx1ZSB9KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5wYXRocyA9IGZ1bmN0aW9uKG9iaiwgc3RyaW5nLCBjb3VudCkge1xuXG4gIGFzc2VydC5vayhvYmogaW5zdGFuY2VvZiBPYmplY3QsIFwib2JqIG5lZWRzIHRvIGJlIGFuIG9iamVjdFwiKTtcbiAgYXNzZXJ0Lm9rKHN0cmluZywgXCJ3ZSBuZWVkIGEgcGF0aFwiKTtcblxuICB2YXIgcmVzdWx0cyA9IHRoaXMubm9kZXMob2JqLCBzdHJpbmcsIGNvdW50KVxuICAgIC5tYXAoZnVuY3Rpb24ocikgeyByZXR1cm4gci5wYXRoIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuSlNPTlBhdGgucHJvdG90eXBlLm5vZGVzID0gZnVuY3Rpb24ob2JqLCBzdHJpbmcsIGNvdW50KSB7XG5cbiAgYXNzZXJ0Lm9rKG9iaiBpbnN0YW5jZW9mIE9iamVjdCwgXCJvYmogbmVlZHMgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICBhc3NlcnQub2soc3RyaW5nLCBcIndlIG5lZWQgYSBwYXRoXCIpO1xuXG4gIGlmIChjb3VudCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIHZhciBwYXRoID0gdGhpcy5wYXJzZXIucGFyc2Uoc3RyaW5nKTtcbiAgdmFyIGhhbmRsZXJzID0gdGhpcy5oYW5kbGVycztcblxuICB2YXIgcGFydGlhbHMgPSBbIHsgcGF0aDogWyckJ10sIHZhbHVlOiBvYmogfSBdO1xuICB2YXIgbWF0Y2hlcyA9IFtdO1xuXG4gIGlmIChwYXRoLmxlbmd0aCAmJiBwYXRoWzBdLmV4cHJlc3Npb24udHlwZSA9PSAncm9vdCcpIHBhdGguc2hpZnQoKTtcblxuICBpZiAoIXBhdGgubGVuZ3RoKSByZXR1cm4gcGFydGlhbHM7XG5cbiAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBvbmVudCwgaW5kZXgpIHtcblxuICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+PSBjb3VudCkgcmV0dXJuO1xuICAgIHZhciBoYW5kbGVyID0gaGFuZGxlcnMucmVzb2x2ZShjb21wb25lbnQpO1xuICAgIHZhciBfcGFydGlhbHMgPSBbXTtcblxuICAgIHBhcnRpYWxzLmZvckVhY2goZnVuY3Rpb24ocCkge1xuXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPj0gY291bnQpIHJldHVybjtcbiAgICAgIHZhciByZXN1bHRzID0gaGFuZGxlcihjb21wb25lbnQsIHAsIGNvdW50KTtcblxuICAgICAgaWYgKGluZGV4ID09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAvLyBpZiB3ZSdyZSB0aHJvdWdoIHRoZSBjb21wb25lbnRzIHdlJ3JlIGRvbmVcbiAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMuY29uY2F0KHJlc3VsdHMgfHwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGFjY3VtdWxhdGUgYW5kIGNhcnJ5IG9uIHRocm91Z2hcbiAgICAgICAgX3BhcnRpYWxzID0gX3BhcnRpYWxzLmNvbmNhdChyZXN1bHRzIHx8IFtdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhcnRpYWxzID0gX3BhcnRpYWxzO1xuXG4gIH0pO1xuXG4gIHJldHVybiBjb3VudCA/IG1hdGNoZXMuc2xpY2UoMCwgY291bnQpIDogbWF0Y2hlcztcbn07XG5cbkpTT05QYXRoLnByb3RvdHlwZS5zdHJpbmdpZnkgPSBmdW5jdGlvbihwYXRoKSB7XG5cbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgdmFyIHN0cmluZyA9ICckJztcblxuICB2YXIgdGVtcGxhdGVzID0ge1xuICAgICdkZXNjZW5kYW50LW1lbWJlcic6ICcuLnt7dmFsdWV9fScsXG4gICAgJ2NoaWxkLW1lbWJlcic6ICcue3t2YWx1ZX19JyxcbiAgICAnZGVzY2VuZGFudC1zdWJzY3JpcHQnOiAnLi5be3t2YWx1ZX19XScsXG4gICAgJ2NoaWxkLXN1YnNjcmlwdCc6ICdbe3t2YWx1ZX19XSdcbiAgfTtcblxuICBwYXRoID0gdGhpcy5fbm9ybWFsaXplKHBhdGgpO1xuXG4gIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHtcblxuICAgIGlmIChjb21wb25lbnQuZXhwcmVzc2lvbi50eXBlID09ICdyb290JykgcmV0dXJuO1xuXG4gICAgdmFyIGtleSA9IFtjb21wb25lbnQuc2NvcGUsIGNvbXBvbmVudC5vcGVyYXRpb25dLmpvaW4oJy0nKTtcbiAgICB2YXIgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNba2V5XTtcbiAgICB2YXIgdmFsdWU7XG5cbiAgICBpZiAoY29tcG9uZW50LmV4cHJlc3Npb24udHlwZSA9PSAnc3RyaW5nX2xpdGVyYWwnKSB7XG4gICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGNvbXBvbmVudC5leHByZXNzaW9uLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICghdGVtcGxhdGUpIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IGZpbmQgdGVtcGxhdGUgXCIgKyBrZXkpO1xuXG4gICAgc3RyaW5nICs9IHRlbXBsYXRlLnJlcGxhY2UoL3t7dmFsdWV9fS8sIHZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuSlNPTlBhdGgucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG5cbiAgYXNzZXJ0Lm9rKHBhdGgsIFwid2UgbmVlZCBhIHBhdGhcIik7XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09IFwic3RyaW5nXCIpIHtcblxuICAgIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShwYXRoKTtcblxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkgJiYgdHlwZW9mIHBhdGhbMF0gPT0gXCJzdHJpbmdcIikge1xuXG4gICAgdmFyIF9wYXRoID0gWyB7IGV4cHJlc3Npb246IHsgdHlwZTogXCJyb290XCIsIHZhbHVlOiBcIiRcIiB9IH0gXTtcblxuICAgIHBhdGguZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQsIGluZGV4KSB7XG5cbiAgICAgIGlmIChjb21wb25lbnQgPT0gJyQnICYmIGluZGV4ID09PSAwKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50ID09IFwic3RyaW5nXCIgJiYgY29tcG9uZW50Lm1hdGNoKFwiXlwiICsgZGljdC5pZGVudGlmaWVyICsgXCIkXCIpKSB7XG5cbiAgICAgICAgX3BhdGgucHVzaCh7XG4gICAgICAgICAgb3BlcmF0aW9uOiAnbWVtYmVyJyxcbiAgICAgICAgICBzY29wZTogJ2NoaWxkJyxcbiAgICAgICAgICBleHByZXNzaW9uOiB7IHZhbHVlOiBjb21wb25lbnQsIHR5cGU6ICdpZGVudGlmaWVyJyB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHZhciB0eXBlID0gdHlwZW9mIGNvbXBvbmVudCA9PSBcIm51bWJlclwiID9cbiAgICAgICAgICAnbnVtZXJpY19saXRlcmFsJyA6ICdzdHJpbmdfbGl0ZXJhbCc7XG5cbiAgICAgICAgX3BhdGgucHVzaCh7XG4gICAgICAgICAgb3BlcmF0aW9uOiAnc3Vic2NyaXB0JyxcbiAgICAgICAgICBzY29wZTogJ2NoaWxkJyxcbiAgICAgICAgICBleHByZXNzaW9uOiB7IHZhbHVlOiBjb21wb25lbnQsIHR5cGU6IHR5cGUgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfcGF0aDtcblxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkgJiYgdHlwZW9mIHBhdGhbMF0gPT0gXCJvYmplY3RcIikge1xuXG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcImNvdWxkbid0IHVuZGVyc3RhbmQgcGF0aCBcIiArIHBhdGgpO1xufVxuXG5mdW5jdGlvbiBfaXNfc3RyaW5nKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT0gJ1tvYmplY3QgU3RyaW5nXSc7XG59XG5cbkpTT05QYXRoLkhhbmRsZXJzID0gSGFuZGxlcnM7XG5KU09OUGF0aC5QYXJzZXIgPSBQYXJzZXI7XG5cbnZhciBpbnN0YW5jZSA9IG5ldyBKU09OUGF0aDtcbmluc3RhbmNlLkpTT05QYXRoID0gSlNPTlBhdGg7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFuY2U7XG4iLCJ2YXIgZ3JhbW1hciA9IHJlcXVpcmUoJy4vZ3JhbW1hcicpO1xudmFyIGdwYXJzZXIgPSByZXF1aXJlKCcuLi9nZW5lcmF0ZWQvcGFyc2VyJyk7XG5cbnZhciBQYXJzZXIgPSBmdW5jdGlvbigpIHtcblxuICB2YXIgcGFyc2VyID0gbmV3IGdwYXJzZXIuUGFyc2VyKCk7XG5cbiAgdmFyIF9wYXJzZUVycm9yID0gcGFyc2VyLnBhcnNlRXJyb3I7XG4gIHBhcnNlci55eS5wYXJzZUVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHBhcnNlci55eS5hc3QpIHtcbiAgICAgIHBhcnNlci55eS5hc3QuaW5pdGlhbGl6ZSgpO1xuICAgIH1cbiAgICBfcGFyc2VFcnJvci5hcHBseShwYXJzZXIsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VyO1xuXG59O1xuXG5QYXJzZXIuZ3JhbW1hciA9IGdyYW1tYXI7XG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlcjtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXJyLCBzdGFydCwgZW5kLCBzdGVwKSB7XG5cbiAgaWYgKHR5cGVvZiBzdGFydCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwic3RhcnQgY2Fubm90IGJlIGEgc3RyaW5nXCIpO1xuICBpZiAodHlwZW9mIGVuZCA9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwiZW5kIGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcbiAgaWYgKHR5cGVvZiBzdGVwID09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJzdGVwIGNhbm5vdCBiZSBhIHN0cmluZ1wiKTtcblxuICB2YXIgbGVuID0gYXJyLmxlbmd0aDtcblxuICBpZiAoc3RlcCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgemVyb1wiKTtcbiAgc3RlcCA9IHN0ZXAgPyBpbnRlZ2VyKHN0ZXApIDogMTtcblxuICAvLyBub3JtYWxpemUgbmVnYXRpdmUgdmFsdWVzXG4gIHN0YXJ0ID0gc3RhcnQgPCAwID8gbGVuICsgc3RhcnQgOiBzdGFydDtcbiAgZW5kID0gZW5kIDwgMCA/IGxlbiArIGVuZCA6IGVuZDtcblxuICAvLyBkZWZhdWx0IGV4dGVudHMgdG8gZXh0ZW50c1xuICBzdGFydCA9IGludGVnZXIoc3RhcnQgPT09IDAgPyAwIDogIXN0YXJ0ID8gKHN0ZXAgPiAwID8gMCA6IGxlbiAtIDEpIDogc3RhcnQpO1xuICBlbmQgPSBpbnRlZ2VyKGVuZCA9PT0gMCA/IDAgOiAhZW5kID8gKHN0ZXAgPiAwID8gbGVuIDogLTEpIDogZW5kKTtcblxuICAvLyBjbGFtcCBleHRlbnRzXG4gIHN0YXJ0ID0gc3RlcCA+IDAgPyBNYXRoLm1heCgwLCBzdGFydCkgOiBNYXRoLm1pbihsZW4sIHN0YXJ0KTtcbiAgZW5kID0gc3RlcCA+IDAgPyBNYXRoLm1pbihlbmQsIGxlbikgOiBNYXRoLm1heCgtMSwgZW5kKTtcblxuICAvLyByZXR1cm4gZW1wdHkgaWYgZXh0ZW50cyBhcmUgYmFja3dhcmRzXG4gIGlmIChzdGVwID4gMCAmJiBlbmQgPD0gc3RhcnQpIHJldHVybiBbXTtcbiAgaWYgKHN0ZXAgPCAwICYmIHN0YXJ0IDw9IGVuZCkgcmV0dXJuIFtdO1xuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgIT0gZW5kOyBpICs9IHN0ZXApIHtcbiAgICBpZiAoKHN0ZXAgPCAwICYmIGkgPD0gZW5kKSB8fCAoc3RlcCA+IDAgJiYgaSA+PSBlbmQpKSBicmVhaztcbiAgICByZXN1bHQucHVzaChhcnJbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaW50ZWdlcih2YWwpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWwpLm1hdGNoKC9eWzAtOV0rJC8pID8gcGFyc2VJbnQodmFsKSA6XG4gICAgTnVtYmVyLmlzRmluaXRlKHZhbCkgPyBwYXJzZUludCh2YWwsIDEwKSA6IDA7XG59XG4iLCIvKipcbiAqIEhlbHBlcnMuXG4gKi9cblxudmFyIHMgPSAxMDAwO1xudmFyIG0gPSBzICogNjA7XG52YXIgaCA9IG0gKiA2MDtcbnZhciBkID0gaCAqIDI0O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IHRocm93IGFuIGVycm9yIGlmIHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgbnVtYmVyXG4gKiBAcmV0dXJuIHtTdHJpbmd8TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2UodmFsKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBvcHRpb25zLmxvbmcgPyBmbXRMb25nKHZhbCkgOiBmbXRTaG9ydCh2YWwpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAndmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0nICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbClcbiAgKTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHN0ci5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG1hdGNoID0gL14oKD86XFxkKyk/XFwuP1xcZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhcbiAgICBzdHJcbiAgKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICd5ZWFycyc6XG4gICAgY2FzZSAneWVhcic6XG4gICAgY2FzZSAneXJzJzpcbiAgICBjYXNlICd5cic6XG4gICAgY2FzZSAneSc6XG4gICAgICByZXR1cm4gbiAqIHk7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRTaG9ydChtcykge1xuICBpZiAobXMgPj0gZCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gZCkgKyAnZCc7XG4gIH1cbiAgaWYgKG1zID49IGgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGgpICsgJ2gnO1xuICB9XG4gIGlmIChtcyA+PSBtKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBtKSArICdtJztcbiAgfVxuICBpZiAobXMgPj0gcykge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gcykgKyAncyc7XG4gIH1cbiAgcmV0dXJuIG1zICsgJ21zJztcbn1cblxuLyoqXG4gKiBMb25nIGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdExvbmcobXMpIHtcbiAgcmV0dXJuIHBsdXJhbChtcywgZCwgJ2RheScpIHx8XG4gICAgcGx1cmFsKG1zLCBoLCAnaG91cicpIHx8XG4gICAgcGx1cmFsKG1zLCBtLCAnbWludXRlJykgfHxcbiAgICBwbHVyYWwobXMsIHMsICdzZWNvbmQnKSB8fFxuICAgIG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBuLCBuYW1lKSB7XG4gIGlmIChtcyA8IG4pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1zIDwgbiAqIDEuNSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKG1zIC8gbikgKyAnICcgKyBuYW1lO1xuICB9XG4gIHJldHVybiBNYXRoLmNlaWwobXMgLyBuKSArICcgJyArIG5hbWUgKyAncyc7XG59XG4iLCIvKiEgTmF0aXZlIFByb21pc2UgT25seVxuICAgIHYwLjguMSAoYykgS3lsZSBTaW1wc29uXG4gICAgTUlUIExpY2Vuc2U6IGh0dHA6Ly9nZXRpZnkubWl0LWxpY2Vuc2Uub3JnXG4qL1xuXG4oZnVuY3Rpb24gVU1EKG5hbWUsY29udGV4dCxkZWZpbml0aW9uKXtcblx0Ly8gc3BlY2lhbCBmb3JtIG9mIFVNRCBmb3IgcG9seWZpbGxpbmcgYWNyb3NzIGV2aXJvbm1lbnRzXG5cdGNvbnRleHRbbmFtZV0gPSBjb250ZXh0W25hbWVdIHx8IGRlZmluaXRpb24oKTtcblx0aWYgKHR5cGVvZiBtb2R1bGUgIT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUuZXhwb3J0cykgeyBtb2R1bGUuZXhwb3J0cyA9IGNvbnRleHRbbmFtZV07IH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkgeyBkZWZpbmUoZnVuY3Rpb24gJEFNRCQoKXsgcmV0dXJuIGNvbnRleHRbbmFtZV07IH0pOyB9XG59KShcIlByb21pc2VcIix0eXBlb2YgZ2xvYmFsICE9IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0aGlzLGZ1bmN0aW9uIERFRigpe1xuXHQvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgYnVpbHRJblByb3AsIGN5Y2xlLCBzY2hlZHVsaW5nX3F1ZXVlLFxuXHRcdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxcblx0XHR0aW1lciA9ICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9IFwidW5kZWZpbmVkXCIpID9cblx0XHRcdGZ1bmN0aW9uIHRpbWVyKGZuKSB7IHJldHVybiBzZXRJbW1lZGlhdGUoZm4pOyB9IDpcblx0XHRcdHNldFRpbWVvdXRcblx0O1xuXG5cdC8vIGRhbW1pdCwgSUU4LlxuXHR0cnkge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInhcIix7fSk7XG5cdFx0YnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosbmFtZSx2YWwsY29uZmlnKSB7XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaixuYW1lLHtcblx0XHRcdFx0dmFsdWU6IHZhbCxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogY29uZmlnICE9PSBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0fTtcblx0fVxuXHRjYXRjaCAoZXJyKSB7XG5cdFx0YnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosbmFtZSx2YWwpIHtcblx0XHRcdG9ialtuYW1lXSA9IHZhbDtcblx0XHRcdHJldHVybiBvYmo7XG5cdFx0fTtcblx0fVxuXG5cdC8vIE5vdGU6IHVzaW5nIGEgcXVldWUgaW5zdGVhZCBvZiBhcnJheSBmb3IgZWZmaWNpZW5jeVxuXHRzY2hlZHVsaW5nX3F1ZXVlID0gKGZ1bmN0aW9uIFF1ZXVlKCkge1xuXHRcdHZhciBmaXJzdCwgbGFzdCwgaXRlbTtcblxuXHRcdGZ1bmN0aW9uIEl0ZW0oZm4sc2VsZikge1xuXHRcdFx0dGhpcy5mbiA9IGZuO1xuXHRcdFx0dGhpcy5zZWxmID0gc2VsZjtcblx0XHRcdHRoaXMubmV4dCA9IHZvaWQgMDtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YWRkOiBmdW5jdGlvbiBhZGQoZm4sc2VsZikge1xuXHRcdFx0XHRpdGVtID0gbmV3IEl0ZW0oZm4sc2VsZik7XG5cdFx0XHRcdGlmIChsYXN0KSB7XG5cdFx0XHRcdFx0bGFzdC5uZXh0ID0gaXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRmaXJzdCA9IGl0ZW07XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFzdCA9IGl0ZW07XG5cdFx0XHRcdGl0ZW0gPSB2b2lkIDA7XG5cdFx0XHR9LFxuXHRcdFx0ZHJhaW46IGZ1bmN0aW9uIGRyYWluKCkge1xuXHRcdFx0XHR2YXIgZiA9IGZpcnN0O1xuXHRcdFx0XHRmaXJzdCA9IGxhc3QgPSBjeWNsZSA9IHZvaWQgMDtcblxuXHRcdFx0XHR3aGlsZSAoZikge1xuXHRcdFx0XHRcdGYuZm4uY2FsbChmLnNlbGYpO1xuXHRcdFx0XHRcdGYgPSBmLm5leHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9KSgpO1xuXG5cdGZ1bmN0aW9uIHNjaGVkdWxlKGZuLHNlbGYpIHtcblx0XHRzY2hlZHVsaW5nX3F1ZXVlLmFkZChmbixzZWxmKTtcblx0XHRpZiAoIWN5Y2xlKSB7XG5cdFx0XHRjeWNsZSA9IHRpbWVyKHNjaGVkdWxpbmdfcXVldWUuZHJhaW4pO1xuXHRcdH1cblx0fVxuXG5cdC8vIHByb21pc2UgZHVjayB0eXBpbmdcblx0ZnVuY3Rpb24gaXNUaGVuYWJsZShvKSB7XG5cdFx0dmFyIF90aGVuLCBvX3R5cGUgPSB0eXBlb2YgbztcblxuXHRcdGlmIChvICE9IG51bGwgJiZcblx0XHRcdChcblx0XHRcdFx0b190eXBlID09IFwib2JqZWN0XCIgfHwgb190eXBlID09IFwiZnVuY3Rpb25cIlxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0X3RoZW4gPSBvLnRoZW47XG5cdFx0fVxuXHRcdHJldHVybiB0eXBlb2YgX3RoZW4gPT0gXCJmdW5jdGlvblwiID8gX3RoZW4gOiBmYWxzZTtcblx0fVxuXG5cdGZ1bmN0aW9uIG5vdGlmeSgpIHtcblx0XHRmb3IgKHZhciBpPTA7IGk8dGhpcy5jaGFpbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0bm90aWZ5SXNvbGF0ZWQoXG5cdFx0XHRcdHRoaXMsXG5cdFx0XHRcdCh0aGlzLnN0YXRlID09PSAxKSA/IHRoaXMuY2hhaW5baV0uc3VjY2VzcyA6IHRoaXMuY2hhaW5baV0uZmFpbHVyZSxcblx0XHRcdFx0dGhpcy5jaGFpbltpXVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5jaGFpbi5sZW5ndGggPSAwO1xuXHR9XG5cblx0Ly8gTk9URTogVGhpcyBpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGlzb2xhdGVcblx0Ly8gdGhlIGB0cnkuLmNhdGNoYCBzbyB0aGF0IG90aGVyIGNvZGUgY2FuIGJlXG5cdC8vIG9wdGltaXplZCBiZXR0ZXJcblx0ZnVuY3Rpb24gbm90aWZ5SXNvbGF0ZWQoc2VsZixjYixjaGFpbikge1xuXHRcdHZhciByZXQsIF90aGVuO1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2IgPT09IGZhbHNlKSB7XG5cdFx0XHRcdGNoYWluLnJlamVjdChzZWxmLm1zZyk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKGNiID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0cmV0ID0gc2VsZi5tc2c7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cmV0ID0gY2IuY2FsbCh2b2lkIDAsc2VsZi5tc2cpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJldCA9PT0gY2hhaW4ucHJvbWlzZSkge1xuXHRcdFx0XHRcdGNoYWluLnJlamVjdChUeXBlRXJyb3IoXCJQcm9taXNlLWNoYWluIGN5Y2xlXCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChfdGhlbiA9IGlzVGhlbmFibGUocmV0KSkge1xuXHRcdFx0XHRcdF90aGVuLmNhbGwocmV0LGNoYWluLnJlc29sdmUsY2hhaW4ucmVqZWN0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjaGFpbi5yZXNvbHZlKHJldCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0Y2hhaW4ucmVqZWN0KGVycik7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gcmVzb2x2ZShtc2cpIHtcblx0XHR2YXIgX3RoZW4sIHNlbGYgPSB0aGlzO1xuXG5cdFx0Ly8gYWxyZWFkeSB0cmlnZ2VyZWQ/XG5cdFx0aWYgKHNlbGYudHJpZ2dlcmVkKSB7IHJldHVybjsgfVxuXG5cdFx0c2VsZi50cmlnZ2VyZWQgPSB0cnVlO1xuXG5cdFx0Ly8gdW53cmFwXG5cdFx0aWYgKHNlbGYuZGVmKSB7XG5cdFx0XHRzZWxmID0gc2VsZi5kZWY7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGlmIChfdGhlbiA9IGlzVGhlbmFibGUobXNnKSkge1xuXHRcdFx0XHRzY2hlZHVsZShmdW5jdGlvbigpe1xuXHRcdFx0XHRcdHZhciBkZWZfd3JhcHBlciA9IG5ldyBNYWtlRGVmV3JhcHBlcihzZWxmKTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0X3RoZW4uY2FsbChtc2csXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICRyZXNvbHZlJCgpeyByZXNvbHZlLmFwcGx5KGRlZl93cmFwcGVyLGFyZ3VtZW50cyk7IH0sXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICRyZWplY3QkKCl7IHJlamVjdC5hcHBseShkZWZfd3JhcHBlcixhcmd1bWVudHMpOyB9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QuY2FsbChkZWZfd3JhcHBlcixlcnIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRzZWxmLm1zZyA9IG1zZztcblx0XHRcdFx0c2VsZi5zdGF0ZSA9IDE7XG5cdFx0XHRcdGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzY2hlZHVsZShub3RpZnksc2VsZik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y2F0Y2ggKGVycikge1xuXHRcdFx0cmVqZWN0LmNhbGwobmV3IE1ha2VEZWZXcmFwcGVyKHNlbGYpLGVycik7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gcmVqZWN0KG1zZykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblxuXHRcdC8vIGFscmVhZHkgdHJpZ2dlcmVkP1xuXHRcdGlmIChzZWxmLnRyaWdnZXJlZCkgeyByZXR1cm47IH1cblxuXHRcdHNlbGYudHJpZ2dlcmVkID0gdHJ1ZTtcblxuXHRcdC8vIHVud3JhcFxuXHRcdGlmIChzZWxmLmRlZikge1xuXHRcdFx0c2VsZiA9IHNlbGYuZGVmO1xuXHRcdH1cblxuXHRcdHNlbGYubXNnID0gbXNnO1xuXHRcdHNlbGYuc3RhdGUgPSAyO1xuXHRcdGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcblx0XHRcdHNjaGVkdWxlKG5vdGlmeSxzZWxmKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsYXJyLHJlc29sdmVyLHJlamVjdGVyKSB7XG5cdFx0Zm9yICh2YXIgaWR4PTA7IGlkeDxhcnIubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0KGZ1bmN0aW9uIElJRkUoaWR4KXtcblx0XHRcdFx0Q29uc3RydWN0b3IucmVzb2x2ZShhcnJbaWR4XSlcblx0XHRcdFx0LnRoZW4oXG5cdFx0XHRcdFx0ZnVuY3Rpb24gJHJlc29sdmVyJChtc2cpe1xuXHRcdFx0XHRcdFx0cmVzb2x2ZXIoaWR4LG1zZyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRyZWplY3RlclxuXHRcdFx0XHQpO1xuXHRcdFx0fSkoaWR4KTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBNYWtlRGVmV3JhcHBlcihzZWxmKSB7XG5cdFx0dGhpcy5kZWYgPSBzZWxmO1xuXHRcdHRoaXMudHJpZ2dlcmVkID0gZmFsc2U7XG5cdH1cblxuXHRmdW5jdGlvbiBNYWtlRGVmKHNlbGYpIHtcblx0XHR0aGlzLnByb21pc2UgPSBzZWxmO1xuXHRcdHRoaXMuc3RhdGUgPSAwO1xuXHRcdHRoaXMudHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0dGhpcy5jaGFpbiA9IFtdO1xuXHRcdHRoaXMubXNnID0gdm9pZCAwO1xuXHR9XG5cblx0ZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuXHRcdGlmICh0eXBlb2YgZXhlY3V0b3IgIT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fX05QT19fICE9PSAwKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBwcm9taXNlXCIpO1xuXHRcdH1cblxuXHRcdC8vIGluc3RhbmNlIHNoYWRvd2luZyB0aGUgaW5oZXJpdGVkIFwiYnJhbmRcIlxuXHRcdC8vIHRvIHNpZ25hbCBhbiBhbHJlYWR5IFwiaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cdFx0dGhpcy5fX05QT19fID0gMTtcblxuXHRcdHZhciBkZWYgPSBuZXcgTWFrZURlZih0aGlzKTtcblxuXHRcdHRoaXNbXCJ0aGVuXCJdID0gZnVuY3Rpb24gdGhlbihzdWNjZXNzLGZhaWx1cmUpIHtcblx0XHRcdHZhciBvID0ge1xuXHRcdFx0XHRzdWNjZXNzOiB0eXBlb2Ygc3VjY2VzcyA9PSBcImZ1bmN0aW9uXCIgPyBzdWNjZXNzIDogdHJ1ZSxcblx0XHRcdFx0ZmFpbHVyZTogdHlwZW9mIGZhaWx1cmUgPT0gXCJmdW5jdGlvblwiID8gZmFpbHVyZSA6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdFx0Ly8gTm90ZTogYHRoZW4oLi4pYCBpdHNlbGYgY2FuIGJlIGJvcnJvd2VkIHRvIGJlIHVzZWQgYWdhaW5zdFxuXHRcdFx0Ly8gYSBkaWZmZXJlbnQgcHJvbWlzZSBjb25zdHJ1Y3RvciBmb3IgbWFraW5nIHRoZSBjaGFpbmVkIHByb21pc2UsXG5cdFx0XHQvLyBieSBzdWJzdGl0dXRpbmcgYSBkaWZmZXJlbnQgYHRoaXNgIGJpbmRpbmcuXG5cdFx0XHRvLnByb21pc2UgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihmdW5jdGlvbiBleHRyYWN0Q2hhaW4ocmVzb2x2ZSxyZWplY3QpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRcdHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0by5yZXNvbHZlID0gcmVzb2x2ZTtcblx0XHRcdFx0by5yZWplY3QgPSByZWplY3Q7XG5cdFx0XHR9KTtcblx0XHRcdGRlZi5jaGFpbi5wdXNoKG8pO1xuXG5cdFx0XHRpZiAoZGVmLnN0YXRlICE9PSAwKSB7XG5cdFx0XHRcdHNjaGVkdWxlKG5vdGlmeSxkZWYpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gby5wcm9taXNlO1xuXHRcdH07XG5cdFx0dGhpc1tcImNhdGNoXCJdID0gZnVuY3Rpb24gJGNhdGNoJChmYWlsdXJlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxmYWlsdXJlKTtcblx0XHR9O1xuXG5cdFx0dHJ5IHtcblx0XHRcdGV4ZWN1dG9yLmNhbGwoXG5cdFx0XHRcdHZvaWQgMCxcblx0XHRcdFx0ZnVuY3Rpb24gcHVibGljUmVzb2x2ZShtc2cpe1xuXHRcdFx0XHRcdHJlc29sdmUuY2FsbChkZWYsbXNnKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZnVuY3Rpb24gcHVibGljUmVqZWN0KG1zZykge1xuXHRcdFx0XHRcdHJlamVjdC5jYWxsKGRlZixtc2cpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjYXRjaCAoZXJyKSB7XG5cdFx0XHRyZWplY3QuY2FsbChkZWYsZXJyKTtcblx0XHR9XG5cdH1cblxuXHR2YXIgUHJvbWlzZVByb3RvdHlwZSA9IGJ1aWx0SW5Qcm9wKHt9LFwiY29uc3RydWN0b3JcIixQcm9taXNlLFxuXHRcdC8qY29uZmlndXJhYmxlPSovZmFsc2Vcblx0KTtcblxuXHQvLyBOb3RlOiBBbmRyb2lkIDQgY2Fubm90IHVzZSBgT2JqZWN0LmRlZmluZVByb3BlcnR5KC4uKWAgaGVyZVxuXHRQcm9taXNlLnByb3RvdHlwZSA9IFByb21pc2VQcm90b3R5cGU7XG5cblx0Ly8gYnVpbHQtaW4gXCJicmFuZFwiIHRvIHNpZ25hbCBhbiBcInVuaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cdGJ1aWx0SW5Qcm9wKFByb21pc2VQcm90b3R5cGUsXCJfX05QT19fXCIsMCxcblx0XHQvKmNvbmZpZ3VyYWJsZT0qL2ZhbHNlXG5cdCk7XG5cblx0YnVpbHRJblByb3AoUHJvbWlzZSxcInJlc29sdmVcIixmdW5jdGlvbiBQcm9taXNlJHJlc29sdmUobXNnKSB7XG5cdFx0dmFyIENvbnN0cnVjdG9yID0gdGhpcztcblxuXHRcdC8vIHNwZWMgbWFuZGF0ZWQgY2hlY2tzXG5cdFx0Ly8gbm90ZTogYmVzdCBcImlzUHJvbWlzZVwiIGNoZWNrIHRoYXQncyBwcmFjdGljYWwgZm9yIG5vd1xuXHRcdGlmIChtc2cgJiYgdHlwZW9mIG1zZyA9PSBcIm9iamVjdFwiICYmIG1zZy5fX05QT19fID09PSAxKSB7XG5cdFx0XHRyZXR1cm4gbXNnO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzb2x2ZShtc2cpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwicmVqZWN0XCIsZnVuY3Rpb24gUHJvbWlzZSRyZWplY3QobXNnKSB7XG5cdFx0cmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdHJlamVjdChtc2cpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwiYWxsXCIsZnVuY3Rpb24gUHJvbWlzZSRhbGwoYXJyKSB7XG5cdFx0dmFyIENvbnN0cnVjdG9yID0gdGhpcztcblxuXHRcdC8vIHNwZWMgbWFuZGF0ZWQgY2hlY2tzXG5cdFx0aWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcblx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcblx0XHR9XG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvci5yZXNvbHZlKFtdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUscmVqZWN0KXtcblx0XHRcdGlmICh0eXBlb2YgcmVzb2x2ZSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHJlamVjdCAhPSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBsZW4gPSBhcnIubGVuZ3RoLCBtc2dzID0gQXJyYXkobGVuKSwgY291bnQgPSAwO1xuXG5cdFx0XHRpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsYXJyLGZ1bmN0aW9uIHJlc29sdmVyKGlkeCxtc2cpIHtcblx0XHRcdFx0bXNnc1tpZHhdID0gbXNnO1xuXHRcdFx0XHRpZiAoKytjb3VudCA9PT0gbGVuKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZShtc2dzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxyZWplY3QpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRidWlsdEluUHJvcChQcm9taXNlLFwicmFjZVwiLGZ1bmN0aW9uIFByb21pc2UkcmFjZShhcnIpIHtcblx0XHR2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG5cdFx0Ly8gc3BlYyBtYW5kYXRlZCBjaGVja3Ncblx0XHRpZiAoVG9TdHJpbmcuY2FsbChhcnIpICE9IFwiW29iamVjdCBBcnJheV1cIikge1xuXHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yLnJlamVjdChUeXBlRXJyb3IoXCJOb3QgYW4gYXJyYXlcIikpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSxyZWplY3Qpe1xuXHRcdFx0aWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcblx0XHRcdH1cblxuXHRcdFx0aXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLGFycixmdW5jdGlvbiByZXNvbHZlcihpZHgsbXNnKXtcblx0XHRcdFx0cmVzb2x2ZShtc2cpO1xuXHRcdFx0fSxyZWplY3QpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRyZXR1cm4gUHJvbWlzZTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9ybWF0ID0gcmVxdWlyZSgnZm9ybWF0LXV0aWwnKTtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBwcm90ZWN0ZWRQcm9wZXJ0aWVzID0gWyduYW1lJywgJ21lc3NhZ2UnLCAnc3RhY2snXTtcbnZhciBlcnJvclByb3RvdHlwZVByb3BlcnRpZXMgPSBbXG4gICduYW1lJywgJ21lc3NhZ2UnLCAnZGVzY3JpcHRpb24nLCAnbnVtYmVyJywgJ2NvZGUnLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdjb2x1bW5OdW1iZXInLFxuICAnc291cmNlVVJMJywgJ2xpbmUnLCAnY29sdW1uJywgJ3N0YWNrJ1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGUoRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuZXJyb3IgPSBjcmVhdGUoRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuZXZhbCA9IGNyZWF0ZShFdmFsRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMucmFuZ2UgPSBjcmVhdGUoUmFuZ2VFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5yZWZlcmVuY2UgPSBjcmVhdGUoUmVmZXJlbmNlRXJyb3IpO1xubW9kdWxlLmV4cG9ydHMuc3ludGF4ID0gY3JlYXRlKFN5bnRheEVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSBjcmVhdGUoVHlwZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLnVyaSA9IGNyZWF0ZShVUklFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5mb3JtYXR0ZXIgPSBmb3JtYXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgb25vfSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGdpdmVuIEVycm9yIGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7Q2xhc3N9IEtsYXNzIC0gVGhlIEVycm9yIHN1YmNsYXNzIHRvIGNyZWF0ZVxuICogQHJldHVybnMge29ub31cbiAqL1xuZnVuY3Rpb24gY3JlYXRlIChLbGFzcykge1xuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gICBbZXJyXSAgICAgLSBUaGUgb3JpZ2luYWwgZXJyb3IsIGlmIGFueVxuICAgKiBAcGFyYW0ge29iamVjdH0gIFtwcm9wc10gICAtIEFuIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGVycm9yIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFttZXNzYWdlXSAtIFRoZSBlcnJvciBtZXNzYWdlLiBNYXkgY29udGFpbiB7QGxpbmsgdXRpbCNmb3JtYXR9IHBsYWNlaG9sZGVyc1xuICAgKiBAcGFyYW0gey4uLip9ICAgIFtwYXJhbXNdICAtIFBhcmFtZXRlcnMgdGhhdCBtYXAgdG8gdGhlIGBtZXNzYWdlYCBwbGFjZWhvbGRlcnNcbiAgICogQHJldHVybnMge0Vycm9yfVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIG9ub0ZhY3RvcnkgKGVyciwgcHJvcHMsIG1lc3NhZ2UsIHBhcmFtcykgeyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgZm9ybWF0QXJncyA9IFtdO1xuICAgIHZhciBmb3JtYXR0ZWRNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggYXJndW1lbnRzIHdlcmUgYWN0dWFsbHkgc3BlY2lmaWVkXG4gICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtYXRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgZXJyID0gcHJvcHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdEFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICBwcm9wcyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3JtYXRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgZm9ybWF0IGFyZ3VtZW50cywgdGhlbiBmb3JtYXQgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICBpZiAoZm9ybWF0QXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JtYXR0ZWRNZXNzYWdlID0gbW9kdWxlLmV4cG9ydHMuZm9ybWF0dGVyLmFwcGx5KG51bGwsIGZvcm1hdEFyZ3MpO1xuICAgIH1cblxuICAgIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UpIHtcbiAgICAgIC8vIFRoZSBpbm5lci1lcnJvcidzIG1lc3NhZ2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgbmV3IG1lc3NhZ2VcbiAgICAgIGZvcm1hdHRlZE1lc3NhZ2UgKz0gKGZvcm1hdHRlZE1lc3NhZ2UgPyAnIFxcbicgOiAnJykgKyBlcnIubWVzc2FnZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG5ldyBlcnJvclxuICAgIC8vIE5PVEU6IERPTidUIG1vdmUgdGhpcyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uISBXZSBkb24ndCB3YW50IHRvIHBvbGx1dGUgdGhlIHN0YWNrIHRyYWNlXG4gICAgdmFyIG5ld0Vycm9yID0gbmV3IEtsYXNzKGZvcm1hdHRlZE1lc3NhZ2UpO1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBuZXcgZXJyb3Igd2l0aCB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgZXh0ZW5kRXJyb3IobmV3RXJyb3IsIGVycik7ICAgLy8gQ29weSBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBlcnJvclxuICAgIGV4dGVuZFRvSlNPTihuZXdFcnJvcik7ICAgICAgIC8vIFJlcGxhY2UgdGhlIG9yaWdpbmFsIHRvSlNPTiBtZXRob2RcbiAgICBleHRlbmQobmV3RXJyb3IsIHByb3BzKTsgICAgICAvLyBDb3B5IGN1c3RvbSBwcm9wZXJ0aWVzLCBwb3NzaWJseSBpbmNsdWRpbmcgYSBjdXN0b20gdG9KU09OIG1ldGhvZFxuXG4gICAgcmV0dXJuIG5ld0Vycm9yO1xuICB9O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgdGhlIHRhcmdldEVycm9yIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBlcnJvci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSAgIHRhcmdldEVycm9yIC0gVGhlIGVycm9yIG9iamVjdCB0byBleHRlbmRcbiAqIEBwYXJhbSB7P0Vycm9yfSAgc291cmNlRXJyb3IgLSBUaGUgc291cmNlIGVycm9yIG9iamVjdCwgaWYgYW55XG4gKi9cbmZ1bmN0aW9uIGV4dGVuZEVycm9yICh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpIHtcbiAgZXh0ZW5kU3RhY2sodGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKTtcbiAgZXh0ZW5kKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcik7XG59XG5cbi8qKlxuICogSmF2YVNjcmlwdCBlbmdpbmVzIGRpZmZlciBpbiBob3cgZXJyb3JzIGFyZSBzZXJpYWxpemVkIHRvIEpTT04gLSBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXNcbiAqIHRvIGN1c3RvbSBlcnJvciBwcm9wZXJ0aWVzIGFuZCBzdGFjayB0cmFjZXMuICBTbyB3ZSBhZGQgb3VyIG93biB0b0pTT04gbWV0aG9kIHRoYXQgQUxXQVlTXG4gKiBvdXRwdXRzIGV2ZXJ5IHByb3BlcnR5IG9mIHRoZSBlcnJvci5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5kVG9KU09OIChlcnJvcikge1xuICBlcnJvci50b0pTT04gPSBlcnJvclRvSlNPTjtcblxuICAvLyBBbHNvIGFkZCBhbiBpbnNwZWN0KCkgbWV0aG9kLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE5vZGUuanMnIGB1dGlsLmluc3BlY3QoKWAgbWV0aG9kXG4gIGVycm9yLmluc3BlY3QgPSBlcnJvclRvU3RyaW5nO1xufVxuXG4vKipcbiAqIEV4dGVuZHMgdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc291cmNlIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gIHRhcmdldCAtIFRoZSBvYmplY3QgdG8gZXh0ZW5kXG4gKiBAcGFyYW0gez9zb3VyY2V9IHNvdXJjZSAtIFRoZSBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhcmUgY29waWVkXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICAvLyBEb24ndCBjb3B5IFwicHJvdGVjdGVkXCIgcHJvcGVydGllcywgc2luY2UgdGhleSBoYXZlIHNwZWNpYWwgbWVhbmluZy9iZWhhdmlvclxuICAgICAgLy8gYW5kIGFyZSBzZXQgYnkgdGhlIG9ub0ZhY3RvcnkgZnVuY3Rpb25cbiAgICAgIGlmIChwcm90ZWN0ZWRQcm9wZXJ0aWVzLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyByZWFkLW9ubHksIHNvIGl0IGNhbid0IGJlIGNvcGllZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEN1c3RvbSBKU09OIHNlcmlhbGl6ZXIgZm9yIEVycm9yIG9iamVjdHMuXG4gKiBSZXR1cm5zIGFsbCBidWlsdC1pbiBlcnJvciBwcm9wZXJ0aWVzLCBhcyB3ZWxsIGFzIGV4dGVuZGVkIHByb3BlcnRpZXMuXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZXJyb3JUb0pTT04gKCkge1xuICB2YXIganNvbiA9IHt9O1xuXG4gIC8vIEdldCBhbGwgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBlcnJvclxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpO1xuXG4gIC8vIEFsc28gaW5jbHVkZSBwcm9wZXJ0aWVzIGZyb20gdGhlIEVycm9yIHByb3RvdHlwZVxuICBrZXlzID0ga2V5cy5jb25jYXQoZXJyb3JQcm90b3R5cGVQcm9wZXJ0aWVzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsdWUgPSB0aGlzW2tleV07XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgaWYgKHR5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGpzb25ba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqc29uO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgRXJyb3Igb2JqZWN0cyBhcyBodW1hbi1yZWFkYWJsZSBKU09OIHN0cmluZ3MgZm9yIGRlYnVnZ2luZy9sb2dnaW5nIHB1cnBvc2VzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVycm9yVG9TdHJpbmcgKCkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgbnVsbCwgMikucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEV4dGVuZCB0aGUgZXJyb3Igc3RhY2sgdG8gaW5jbHVkZSBpdHMgY2F1c2VcbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSB0YXJnZXRFcnJvclxuICogQHBhcmFtIHtFcnJvcn0gc291cmNlRXJyb3JcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kU3RhY2sgKHRhcmdldEVycm9yLCBzb3VyY2VFcnJvcikge1xuICBpZiAoaGFzTGF6eVN0YWNrKHRhcmdldEVycm9yKSkge1xuICAgIGlmIChzb3VyY2VFcnJvcikge1xuICAgICAgbGF6eUpvaW5TdGFja3ModGFyZ2V0RXJyb3IsIHNvdXJjZUVycm9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsYXp5UG9wU3RhY2sodGFyZ2V0RXJyb3IpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoc291cmNlRXJyb3IpIHtcbiAgICAgIHRhcmdldEVycm9yLnN0YWNrID0gam9pblN0YWNrcyh0YXJnZXRFcnJvci5zdGFjaywgc291cmNlRXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRhcmdldEVycm9yLnN0YWNrID0gcG9wU3RhY2sodGFyZ2V0RXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZHMgdGhlIG9yaWdpbmFsIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgdG8gdGhlIG5ldyBFcnJvcidzIHN0YWNrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RhY2tcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGpvaW5TdGFja3MgKG5ld1N0YWNrLCBvcmlnaW5hbFN0YWNrKSB7XG4gIG5ld1N0YWNrID0gcG9wU3RhY2sobmV3U3RhY2spO1xuXG4gIGlmIChuZXdTdGFjayAmJiBvcmlnaW5hbFN0YWNrKSB7XG4gICAgcmV0dXJuIG5ld1N0YWNrICsgJ1xcblxcbicgKyBvcmlnaW5hbFN0YWNrO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBuZXdTdGFjayB8fCBvcmlnaW5hbFN0YWNrO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBPbm8gZnJvbSB0aGUgc3RhY2ssIHNvIHRoYXQgdGhlIHN0YWNrIHN0YXJ0cyBhdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhY2tcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvcFN0YWNrIChzdGFjaykge1xuICBpZiAoc3RhY2spIHtcbiAgICB2YXIgbGluZXMgPSBzdGFjay5zcGxpdCgnXFxuJyk7XG5cbiAgICBpZiAobGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgLy8gVGhlIHN0YWNrIG9ubHkgaGFzIG9uZSBsaW5lLCBzbyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIHJlbW92ZVxuICAgICAgcmV0dXJuIHN0YWNrO1xuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGBvbm9GYWN0b3J5YCBjYWxsIGluIHRoZSBzdGFjaywgYW5kIHJlbW92ZSBpdFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaW5lID0gbGluZXNbaV07XG4gICAgICBpZiAobGluZS5pbmRleE9mKCdvbm9GYWN0b3J5JykgPj0gMCkge1xuICAgICAgICBsaW5lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlbiB0aGUgc3RhY2sgZG9lc24ndCBjb250YWluIGEgY2FsbCB0byBgb25vRmFjdG9yeWAuXG4gICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIG1pbmlmaWNhdGlvbiBvciBzb21lIG9wdGltaXphdGlvbiBvZiB0aGUgSlMgZW5naW5lLlxuICAgIC8vIFNvIGp1c3QgcmV0dXJuIHRoZSBzdGFjayBhcy1pcy5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2VzIGEgb25lLXRpbWUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHRoaXMgSmF2YVNjcmlwdCBlbmdpbmVcbiAqIHN1cHBvcnRzIGxhenkgYEVycm9yLnN0YWNrYCBwcm9wZXJ0aWVzLlxuICovXG52YXIgc3VwcG9ydHNMYXp5U3RhY2sgPSAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISEoXG4gICAgLy8gRVM1IHByb3BlcnR5IGRlc2NyaXB0b3JzIG11c3QgYmUgc3VwcG9ydGVkXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiZcblxuICAgIC8vIENocm9tZSBvbiBBbmRyb2lkIGRvZXNuJ3Qgc3VwcG9ydCBsYXp5IHN0YWNrcyA6KFxuICAgICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJyB8fCAhL0FuZHJvaWQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpXG4gICk7XG59KCkpO1xuXG4vKipcbiAqIERvZXMgdGhpcyBlcnJvciBoYXZlIGEgbGF6eSBzdGFjayBwcm9wZXJ0eT9cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNMYXp5U3RhY2sgKGVycikge1xuICBpZiAoIXN1cHBvcnRzTGF6eVN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVyciwgJ3N0YWNrJyk7XG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIENhbGxzIHtAbGluayBqb2luU3RhY2tzfSBsYXppbHksIHdoZW4gdGhlIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gdGFyZ2V0RXJyb3JcbiAqIEBwYXJhbSB7RXJyb3J9IHNvdXJjZUVycm9yXG4gKi9cbmZ1bmN0aW9uIGxhenlKb2luU3RhY2tzICh0YXJnZXRFcnJvciwgc291cmNlRXJyb3IpIHtcbiAgdmFyIHRhcmdldFN0YWNrID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXRFcnJvciwgJ3N0YWNrJyk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldEVycm9yLCAnc3RhY2snLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gam9pblN0YWNrcyh0YXJnZXRTdGFjay5nZXQuYXBwbHkodGFyZ2V0RXJyb3IpLCBzb3VyY2VFcnJvci5zdGFjayk7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogQ2FsbHMge0BsaW5rIHBvcFN0YWNrfSBsYXppbHksIHdoZW4gdGhlIHtAbGluayBFcnJvciNzdGFja30gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAqL1xuZnVuY3Rpb24gbGF6eVBvcFN0YWNrIChlcnJvcikge1xuICB2YXIgdGFyZ2V0U3RhY2sgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVycm9yLCAnc3RhY2snKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBwb3BTdGFjayh0YXJnZXRTdGFjay5nZXQuYXBwbHkoZXJyb3IpKTtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiIsIi8vIC5kaXJuYW1lLCAuYmFzZW5hbWUsIGFuZCAuZXh0bmFtZSBtZXRob2RzIGFyZSBleHRyYWN0ZWQgZnJvbSBOb2RlLmpzIHY4LjExLjEsXG4vLyBiYWNrcG9ydGVkIGFuZCB0cmFuc3BsaXRlZCB3aXRoIEJhYmVsLCB3aXRoIGJhY2t3YXJkcy1jb21wYXQgZml4ZXNcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIHJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCBhcnJheSB3aXRoIGRpcmVjdG9yeSBuYW1lcyB0aGVyZVxuLy8gbXVzdCBiZSBubyBzbGFzaGVzLCBlbXB0eSBlbGVtZW50cywgb3IgZGV2aWNlIG5hbWVzIChjOlxcKSBpbiB0aGUgYXJyYXlcbi8vIChzbyBhbHNvIG5vIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMgLSBpdCBkb2VzIG5vdCBkaXN0aW5ndWlzaFxuLy8gcmVsYXRpdmUgYW5kIGFic29sdXRlIHBhdGhzKVxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXkocGFydHMsIGFsbG93QWJvdmVSb290KSB7XG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBsYXN0ID0gcGFydHNbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgdmFyIGhhc1Jvb3QgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBoYXNSb290ID8gJy8nIDogJy4nO1xuICBpZiAoaGFzUm9vdCAmJiBlbmQgPT09IDEpIHtcbiAgICAvLyByZXR1cm4gJy8vJztcbiAgICAvLyBCYWNrd2FyZHMtY29tcGF0IGZpeDpcbiAgICByZXR1cm4gJy8nO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKDAsIGVuZCk7XG59O1xuXG5mdW5jdGlvbiBiYXNlbmFtZShwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG5cbiAgdmFyIHN0YXJ0ID0gMDtcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgdmFyIGk7XG5cbiAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaSkgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZCk7XG59XG5cbi8vIFVzZXMgYSBtaXhlZCBhcHByb2FjaCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIGFzIGV4dCBiZWhhdmlvciBjaGFuZ2VkXG4vLyBpbiBuZXcgTm9kZS5qcyB2ZXJzaW9ucywgc28gb25seSBiYXNlbmFtZSgpIGFib3ZlIGlzIGJhY2twb3J0ZWQgaGVyZVxuZXhwb3J0cy5iYXNlbmFtZSA9IGZ1bmN0aW9uIChwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBiYXNlbmFtZShwYXRoKTtcbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn07XG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG4gIHZhciBzdGFydERvdCA9IC0xO1xuICB2YXIgc3RhcnRQYXJ0ID0gMDtcbiAgdmFyIGVuZCA9IC0xO1xuICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpXG4gICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSlcbiAgICAgICAgICBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgcHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59O1xuXG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJ1xuICAgID8gZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9XG4gICAgOiBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCJ2YXIgaXNhcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKVxuXG4vKipcbiAqIEV4cG9zZSBgcGF0aFRvUmVnZXhwYC5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBwYXRoVG9SZWdleHBcbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gcGFyc2Vcbm1vZHVsZS5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlXG5tb2R1bGUuZXhwb3J0cy50b2tlbnNUb0Z1bmN0aW9uID0gdG9rZW5zVG9GdW5jdGlvblxubW9kdWxlLmV4cG9ydHMudG9rZW5zVG9SZWdFeHAgPSB0b2tlbnNUb1JlZ0V4cFxuXG4vKipcbiAqIFRoZSBtYWluIHBhdGggbWF0Y2hpbmcgcmVnZXhwIHV0aWxpdHkuXG4gKlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xudmFyIFBBVEhfUkVHRVhQID0gbmV3IFJlZ0V4cChbXG4gIC8vIE1hdGNoIGVzY2FwZWQgY2hhcmFjdGVycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBhcHBlYXIgaW4gZnV0dXJlIG1hdGNoZXMuXG4gIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCB3b24ndCB0cmFuc2Zvcm0uXG4gICcoXFxcXFxcXFwuKScsXG4gIC8vIE1hdGNoIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycyBhbmQgdW4tbmFtZWQgcGFyYW1ldGVycyB3aXRoIGEgcHJlZml4XG4gIC8vIGFuZCBvcHRpb25hbCBzdWZmaXhlcy4gTWF0Y2hlcyBhcHBlYXIgYXM6XG4gIC8vXG4gIC8vIFwiLzp0ZXN0KFxcXFxkKyk/XCIgPT4gW1wiL1wiLCBcInRlc3RcIiwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgXCI/XCIsIHVuZGVmaW5lZF1cbiAgLy8gXCIvcm91dGUoXFxcXGQrKVwiICA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAvLyBcIi8qXCIgICAgICAgICAgICA9PiBbXCIvXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCIqXCJdXG4gICcoW1xcXFwvLl0pPyg/Oig/OlxcXFw6KFxcXFx3KykoPzpcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKT98XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSkoWysqP10pP3woXFxcXCopKSdcbl0uam9pbignfCcpLCAnZycpXG5cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgZm9yIHRoZSByYXcgdG9rZW5zLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gIHN0clxuICogQHBhcmFtICB7T2JqZWN0PX0gb3B0aW9uc1xuICogQHJldHVybiB7IUFycmF5fVxuICovXG5mdW5jdGlvbiBwYXJzZSAoc3RyLCBvcHRpb25zKSB7XG4gIHZhciB0b2tlbnMgPSBbXVxuICB2YXIga2V5ID0gMFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBwYXRoID0gJydcbiAgdmFyIGRlZmF1bHREZWxpbWl0ZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVsaW1pdGVyIHx8ICcvJ1xuICB2YXIgcmVzXG5cbiAgd2hpbGUgKChyZXMgPSBQQVRIX1JFR0VYUC5leGVjKHN0cikpICE9IG51bGwpIHtcbiAgICB2YXIgbSA9IHJlc1swXVxuICAgIHZhciBlc2NhcGVkID0gcmVzWzFdXG4gICAgdmFyIG9mZnNldCA9IHJlcy5pbmRleFxuICAgIHBhdGggKz0gc3RyLnNsaWNlKGluZGV4LCBvZmZzZXQpXG4gICAgaW5kZXggPSBvZmZzZXQgKyBtLmxlbmd0aFxuXG4gICAgLy8gSWdub3JlIGFscmVhZHkgZXNjYXBlZCBzZXF1ZW5jZXMuXG4gICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgIHBhdGggKz0gZXNjYXBlZFsxXVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICB2YXIgbmV4dCA9IHN0cltpbmRleF1cbiAgICB2YXIgcHJlZml4ID0gcmVzWzJdXG4gICAgdmFyIG5hbWUgPSByZXNbM11cbiAgICB2YXIgY2FwdHVyZSA9IHJlc1s0XVxuICAgIHZhciBncm91cCA9IHJlc1s1XVxuICAgIHZhciBtb2RpZmllciA9IHJlc1s2XVxuICAgIHZhciBhc3RlcmlzayA9IHJlc1s3XVxuXG4gICAgLy8gUHVzaCB0aGUgY3VycmVudCBwYXRoIG9udG8gdGhlIHRva2Vucy5cbiAgICBpZiAocGF0aCkge1xuICAgICAgdG9rZW5zLnB1c2gocGF0aClcbiAgICAgIHBhdGggPSAnJ1xuICAgIH1cblxuICAgIHZhciBwYXJ0aWFsID0gcHJlZml4ICE9IG51bGwgJiYgbmV4dCAhPSBudWxsICYmIG5leHQgIT09IHByZWZpeFxuICAgIHZhciByZXBlYXQgPSBtb2RpZmllciA9PT0gJysnIHx8IG1vZGlmaWVyID09PSAnKidcbiAgICB2YXIgb3B0aW9uYWwgPSBtb2RpZmllciA9PT0gJz8nIHx8IG1vZGlmaWVyID09PSAnKidcbiAgICB2YXIgZGVsaW1pdGVyID0gcmVzWzJdIHx8IGRlZmF1bHREZWxpbWl0ZXJcbiAgICB2YXIgcGF0dGVybiA9IGNhcHR1cmUgfHwgZ3JvdXBcblxuICAgIHRva2Vucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgfHwga2V5KyssXG4gICAgICBwcmVmaXg6IHByZWZpeCB8fCAnJyxcbiAgICAgIGRlbGltaXRlcjogZGVsaW1pdGVyLFxuICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgcmVwZWF0OiByZXBlYXQsXG4gICAgICBwYXJ0aWFsOiBwYXJ0aWFsLFxuICAgICAgYXN0ZXJpc2s6ICEhYXN0ZXJpc2ssXG4gICAgICBwYXR0ZXJuOiBwYXR0ZXJuID8gZXNjYXBlR3JvdXAocGF0dGVybikgOiAoYXN0ZXJpc2sgPyAnLionIDogJ1teJyArIGVzY2FwZVN0cmluZyhkZWxpbWl0ZXIpICsgJ10rPycpXG4gICAgfSlcbiAgfVxuXG4gIC8vIE1hdGNoIGFueSBjaGFyYWN0ZXJzIHN0aWxsIHJlbWFpbmluZy5cbiAgaWYgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIHBhdGggKz0gc3RyLnN1YnN0cihpbmRleClcbiAgfVxuXG4gIC8vIElmIHRoZSBwYXRoIGV4aXN0cywgcHVzaCBpdCBvbnRvIHRoZSBlbmQuXG4gIGlmIChwYXRoKSB7XG4gICAgdG9rZW5zLnB1c2gocGF0aClcbiAgfVxuXG4gIHJldHVybiB0b2tlbnNcbn1cblxuLyoqXG4gKiBDb21waWxlIGEgc3RyaW5nIHRvIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHRoZSBwYXRoLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFmdW5jdGlvbihPYmplY3Q9LCBPYmplY3Q9KX1cbiAqL1xuZnVuY3Rpb24gY29tcGlsZSAoc3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b2tlbnNUb0Z1bmN0aW9uKHBhcnNlKHN0ciwgb3B0aW9ucykpXG59XG5cbi8qKlxuICogUHJldHRpZXIgZW5jb2Rpbmcgb2YgVVJJIHBhdGggc2VnbWVudHMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgKHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJKHN0cikucmVwbGFjZSgvW1xcLz8jXS9nLCBmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgfSlcbn1cblxuLyoqXG4gKiBFbmNvZGUgdGhlIGFzdGVyaXNrIHBhcmFtZXRlci4gU2ltaWxhciB0byBgcHJldHR5YCwgYnV0IGFsbG93cyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlQXN0ZXJpc2sgKHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJKHN0cikucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgfSlcbn1cblxuLyoqXG4gKiBFeHBvc2UgYSBtZXRob2QgZm9yIHRyYW5zZm9ybWluZyB0b2tlbnMgaW50byB0aGUgcGF0aCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdG9rZW5zVG9GdW5jdGlvbiAodG9rZW5zKSB7XG4gIC8vIENvbXBpbGUgYWxsIHRoZSB0b2tlbnMgaW50byByZWdleHBzLlxuICB2YXIgbWF0Y2hlcyA9IG5ldyBBcnJheSh0b2tlbnMubGVuZ3RoKVxuXG4gIC8vIENvbXBpbGUgYWxsIHRoZSBwYXR0ZXJucyBiZWZvcmUgY29tcGlsYXRpb24uXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHR5cGVvZiB0b2tlbnNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICBtYXRjaGVzW2ldID0gbmV3IFJlZ0V4cCgnXig/OicgKyB0b2tlbnNbaV0ucGF0dGVybiArICcpJCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcbiAgICB2YXIgcGF0aCA9ICcnXG4gICAgdmFyIGRhdGEgPSBvYmogfHwge31cbiAgICB2YXIgb3B0aW9ucyA9IG9wdHMgfHwge31cbiAgICB2YXIgZW5jb2RlID0gb3B0aW9ucy5wcmV0dHkgPyBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgOiBlbmNvZGVVUklDb21wb25lbnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV1cblxuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcGF0aCArPSB0b2tlblxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbdG9rZW4ubmFtZV1cbiAgICAgIHZhciBzZWdtZW50XG5cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICAgIC8vIFByZXBlbmQgcGFydGlhbCBzZWdtZW50IHByZWZpeGVzLlxuICAgICAgICAgIGlmICh0b2tlbi5wYXJ0aWFsKSB7XG4gICAgICAgICAgICBwYXRoICs9IHRva2VuLnByZWZpeFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBiZSBkZWZpbmVkJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNhcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCF0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCByZXBlYXQsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICdgJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IGJlIGVtcHR5JylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgc2VnbWVudCA9IGVuY29kZSh2YWx1ZVtqXSlcblxuICAgICAgICAgIGlmICghbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhbGwgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgYCcgKyBKU09OLnN0cmluZ2lmeShzZWdtZW50KSArICdgJylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoICs9IChqID09PSAwID8gdG9rZW4ucHJlZml4IDogdG9rZW4uZGVsaW1pdGVyKSArIHNlZ21lbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHNlZ21lbnQgPSB0b2tlbi5hc3RlcmlzayA/IGVuY29kZUFzdGVyaXNrKHZhbHVlKSA6IGVuY29kZSh2YWx1ZSlcblxuICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgXCInICsgc2VnbWVudCArICdcIicpXG4gICAgICB9XG5cbiAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudFxuICAgIH1cblxuICAgIHJldHVybiBwYXRoXG4gIH1cbn1cblxuLyoqXG4gKiBFc2NhcGUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVN0cmluZyAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFsuKyo/PV4hOiR7fSgpW1xcXXxcXC9cXFxcXSkvZywgJ1xcXFwkMScpXG59XG5cbi8qKlxuICogRXNjYXBlIHRoZSBjYXB0dXJpbmcgZ3JvdXAgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIGFuZCBtZWFuaW5nLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gZ3JvdXBcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZXNjYXBlR3JvdXAgKGdyb3VwKSB7XG4gIHJldHVybiBncm91cC5yZXBsYWNlKC8oWz0hOiRcXC8oKV0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEF0dGFjaCB0aGUga2V5cyBhcyBhIHByb3BlcnR5IG9mIHRoZSByZWdleHAuXG4gKlxuICogQHBhcmFtICB7IVJlZ0V4cH0gcmVcbiAqIEBwYXJhbSAge0FycmF5fSAgIGtleXNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIGF0dGFjaEtleXMgKHJlLCBrZXlzKSB7XG4gIHJlLmtleXMgPSBrZXlzXG4gIHJldHVybiByZVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmxhZ3MgZm9yIGEgcmVnZXhwIGZyb20gdGhlIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZsYWdzIChvcHRpb25zKSB7XG4gIHJldHVybiBvcHRpb25zLnNlbnNpdGl2ZSA/ICcnIDogJ2knXG59XG5cbi8qKlxuICogUHVsbCBvdXQga2V5cyBmcm9tIGEgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFSZWdFeHB9IHBhdGhcbiAqIEBwYXJhbSAgeyFBcnJheX0gIGtleXNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHJlZ2V4cFRvUmVnZXhwIChwYXRoLCBrZXlzKSB7XG4gIC8vIFVzZSBhIG5lZ2F0aXZlIGxvb2thaGVhZCB0byBtYXRjaCBvbmx5IGNhcHR1cmluZyBncm91cHMuXG4gIHZhciBncm91cHMgPSBwYXRoLnNvdXJjZS5tYXRjaCgvXFwoKD8hXFw/KS9nKVxuXG4gIGlmIChncm91cHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgbmFtZTogaSxcbiAgICAgICAgcHJlZml4OiBudWxsLFxuICAgICAgICBkZWxpbWl0ZXI6IG51bGwsXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgcmVwZWF0OiBmYWxzZSxcbiAgICAgICAgcGFydGlhbDogZmFsc2UsXG4gICAgICAgIGFzdGVyaXNrOiBmYWxzZSxcbiAgICAgICAgcGF0dGVybjogbnVsbFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXR0YWNoS2V5cyhwYXRoLCBrZXlzKVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBhcnJheSBpbnRvIGEgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFBcnJheX0gIHBhdGhcbiAqIEBwYXJhbSAge0FycmF5fSAgIGtleXNcbiAqIEBwYXJhbSAgeyFPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIGFycmF5VG9SZWdleHAgKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgdmFyIHBhcnRzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICBwYXJ0cy5wdXNoKHBhdGhUb1JlZ2V4cChwYXRoW2ldLCBrZXlzLCBvcHRpb25zKS5zb3VyY2UpXG4gIH1cblxuICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgnKD86JyArIHBhcnRzLmpvaW4oJ3wnKSArICcpJywgZmxhZ3Mob3B0aW9ucykpXG5cbiAgcmV0dXJuIGF0dGFjaEtleXMocmVnZXhwLCBrZXlzKVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhdGggcmVnZXhwIGZyb20gc3RyaW5nIGlucHV0LlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gIHBhdGhcbiAqIEBwYXJhbSAgeyFBcnJheX0gIGtleXNcbiAqIEBwYXJhbSAgeyFPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b2tlbnNUb1JlZ0V4cChwYXJzZShwYXRoLCBvcHRpb25zKSwga2V5cywgb3B0aW9ucylcbn1cblxuLyoqXG4gKiBFeHBvc2UgYSBmdW5jdGlvbiBmb3IgdGFraW5nIHRva2VucyBhbmQgcmV0dXJuaW5nIGEgUmVnRXhwLlxuICpcbiAqIEBwYXJhbSAgeyFBcnJheX0gICAgICAgICAgdG9rZW5zXG4gKiBAcGFyYW0gIHsoQXJyYXl8T2JqZWN0KT19IGtleXNcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5zVG9SZWdFeHAgKHRva2Vucywga2V5cywgb3B0aW9ucykge1xuICBpZiAoIWlzYXJyYXkoa2V5cykpIHtcbiAgICBvcHRpb25zID0gLyoqIEB0eXBlIHshT2JqZWN0fSAqLyAoa2V5cyB8fCBvcHRpb25zKVxuICAgIGtleXMgPSBbXVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICB2YXIgc3RyaWN0ID0gb3B0aW9ucy5zdHJpY3RcbiAgdmFyIGVuZCA9IG9wdGlvbnMuZW5kICE9PSBmYWxzZVxuICB2YXIgcm91dGUgPSAnJ1xuXG4gIC8vIEl0ZXJhdGUgb3ZlciB0aGUgdG9rZW5zIGFuZCBjcmVhdGUgb3VyIHJlZ2V4cCBzdHJpbmcuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgcm91dGUgKz0gZXNjYXBlU3RyaW5nKHRva2VuKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcHJlZml4ID0gZXNjYXBlU3RyaW5nKHRva2VuLnByZWZpeClcbiAgICAgIHZhciBjYXB0dXJlID0gJyg/OicgKyB0b2tlbi5wYXR0ZXJuICsgJyknXG5cbiAgICAgIGtleXMucHVzaCh0b2tlbilcblxuICAgICAgaWYgKHRva2VuLnJlcGVhdCkge1xuICAgICAgICBjYXB0dXJlICs9ICcoPzonICsgcHJlZml4ICsgY2FwdHVyZSArICcpKidcbiAgICAgIH1cblxuICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgIGlmICghdG9rZW4ucGFydGlhbCkge1xuICAgICAgICAgIGNhcHR1cmUgPSAnKD86JyArIHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKSk/J1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhcHR1cmUgPSBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJyk/J1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXB0dXJlID0gcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpJ1xuICAgICAgfVxuXG4gICAgICByb3V0ZSArPSBjYXB0dXJlXG4gICAgfVxuICB9XG5cbiAgdmFyIGRlbGltaXRlciA9IGVzY2FwZVN0cmluZyhvcHRpb25zLmRlbGltaXRlciB8fCAnLycpXG4gIHZhciBlbmRzV2l0aERlbGltaXRlciA9IHJvdXRlLnNsaWNlKC1kZWxpbWl0ZXIubGVuZ3RoKSA9PT0gZGVsaW1pdGVyXG5cbiAgLy8gSW4gbm9uLXN0cmljdCBtb2RlIHdlIGFsbG93IGEgc2xhc2ggYXQgdGhlIGVuZCBvZiBtYXRjaC4gSWYgdGhlIHBhdGggdG9cbiAgLy8gbWF0Y2ggYWxyZWFkeSBlbmRzIHdpdGggYSBzbGFzaCwgd2UgcmVtb3ZlIGl0IGZvciBjb25zaXN0ZW5jeS4gVGhlIHNsYXNoXG4gIC8vIGlzIHZhbGlkIGF0IHRoZSBlbmQgb2YgYSBwYXRoIG1hdGNoLCBub3QgaW4gdGhlIG1pZGRsZS4gVGhpcyBpcyBpbXBvcnRhbnRcbiAgLy8gaW4gbm9uLWVuZGluZyBtb2RlLCB3aGVyZSBcIi90ZXN0L1wiIHNob3VsZG4ndCBtYXRjaCBcIi90ZXN0Ly9yb3V0ZVwiLlxuICBpZiAoIXN0cmljdCkge1xuICAgIHJvdXRlID0gKGVuZHNXaXRoRGVsaW1pdGVyID8gcm91dGUuc2xpY2UoMCwgLWRlbGltaXRlci5sZW5ndGgpIDogcm91dGUpICsgJyg/OicgKyBkZWxpbWl0ZXIgKyAnKD89JCkpPydcbiAgfVxuXG4gIGlmIChlbmQpIHtcbiAgICByb3V0ZSArPSAnJCdcbiAgfSBlbHNlIHtcbiAgICAvLyBJbiBub24tZW5kaW5nIG1vZGUsIHdlIG5lZWQgdGhlIGNhcHR1cmluZyBncm91cHMgdG8gbWF0Y2ggYXMgbXVjaCBhc1xuICAgIC8vIHBvc3NpYmxlIGJ5IHVzaW5nIGEgcG9zaXRpdmUgbG9va2FoZWFkIHRvIHRoZSBlbmQgb3IgbmV4dCBwYXRoIHNlZ21lbnQuXG4gICAgcm91dGUgKz0gc3RyaWN0ICYmIGVuZHNXaXRoRGVsaW1pdGVyID8gJycgOiAnKD89JyArIGRlbGltaXRlciArICd8JCknXG4gIH1cblxuICByZXR1cm4gYXR0YWNoS2V5cyhuZXcgUmVnRXhwKCdeJyArIHJvdXRlLCBmbGFncyhvcHRpb25zKSksIGtleXMpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiBwYXRoIHN0cmluZywgcmV0dXJuaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVtcHR5IGFycmF5IGNhbiBiZSBwYXNzZWQgaW4gZm9yIHRoZSBrZXlzLCB3aGljaCB3aWxsIGhvbGQgdGhlXG4gKiBwbGFjZWhvbGRlciBrZXkgZGVzY3JpcHRpb25zLiBGb3IgZXhhbXBsZSwgdXNpbmcgYC91c2VyLzppZGAsIGBrZXlzYCB3aWxsXG4gKiBjb250YWluIGBbeyBuYW1lOiAnaWQnLCBkZWxpbWl0ZXI6ICcvJywgb3B0aW9uYWw6IGZhbHNlLCByZXBlYXQ6IGZhbHNlIH1dYC5cbiAqXG4gKiBAcGFyYW0gIHsoc3RyaW5nfFJlZ0V4cHxBcnJheSl9IHBhdGhcbiAqIEBwYXJhbSAgeyhBcnJheXxPYmplY3QpPX0gICAgICAga2V5c1xuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBwYXRoVG9SZWdleHAgKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgaWYgKCFpc2FycmF5KGtleXMpKSB7XG4gICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKGtleXMgfHwgb3B0aW9ucylcbiAgICBrZXlzID0gW11cbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgaWYgKHBhdGggaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gcmVnZXhwVG9SZWdleHAocGF0aCwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSlcbiAgfVxuXG4gIGlmIChpc2FycmF5KHBhdGgpKSB7XG4gICAgcmV0dXJuIGFycmF5VG9SZWdleHAoLyoqIEB0eXBlIHshQXJyYXl9ICovIChwYXRoKSwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSwgb3B0aW9ucylcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdUb1JlZ2V4cCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHBhdGgpLCAvKiogQHR5cGUgeyFBcnJheX0gKi8gKGtleXMpLCBvcHRpb25zKVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAoIXByb2Nlc3MudmVyc2lvbiB8fFxuICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MC4nKSA9PT0gMCB8fFxuICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS4nKSA9PT0gMCAmJiBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuOC4nKSAhPT0gMCkge1xuICBtb2R1bGUuZXhwb3J0cyA9IHsgbmV4dFRpY2s6IG5leHRUaWNrIH07XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3Ncbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuXG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gSWYgb2JqLmhhc093blByb3BlcnR5IGhhcyBiZWVuIG92ZXJyaWRkZW4sIHRoZW4gY2FsbGluZ1xuLy8gb2JqLmhhc093blByb3BlcnR5KHByb3ApIHdpbGwgYnJlYWsuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9pc3N1ZXMvMTcwN1xuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihxcywgc2VwLCBlcSwgb3B0aW9ucykge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcXMgIT09ICdzdHJpbmcnIHx8IHFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcmVnZXhwID0gL1xcKy9nO1xuICBxcyA9IHFzLnNwbGl0KHNlcCk7XG5cbiAgdmFyIG1heEtleXMgPSAxMDAwO1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5tYXhLZXlzID09PSAnbnVtYmVyJykge1xuICAgIG1heEtleXMgPSBvcHRpb25zLm1heEtleXM7XG4gIH1cblxuICB2YXIgbGVuID0gcXMubGVuZ3RoO1xuICAvLyBtYXhLZXlzIDw9IDAgbWVhbnMgdGhhdCB3ZSBzaG91bGQgbm90IGxpbWl0IGtleXMgY291bnRcbiAgaWYgKG1heEtleXMgPiAwICYmIGxlbiA+IG1heEtleXMpIHtcbiAgICBsZW4gPSBtYXhLZXlzO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciB4ID0gcXNbaV0ucmVwbGFjZShyZWdleHAsICclMjAnKSxcbiAgICAgICAgaWR4ID0geC5pbmRleE9mKGVxKSxcbiAgICAgICAga3N0ciwgdnN0ciwgaywgdjtcblxuICAgIGlmIChpZHggPj0gMCkge1xuICAgICAga3N0ciA9IHguc3Vic3RyKDAsIGlkeCk7XG4gICAgICB2c3RyID0geC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtzdHIgPSB4O1xuICAgICAgdnN0ciA9ICcnO1xuICAgIH1cblxuICAgIGsgPSBkZWNvZGVVUklDb21wb25lbnQoa3N0cik7XG4gICAgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2c3RyKTtcblxuICAgIGlmICghaGFzT3duUHJvcGVydHkob2JqLCBrKSkge1xuICAgICAgb2JqW2tdID0gdjtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgb2JqW2tdLnB1c2godik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrXSA9IFtvYmpba10sIHZdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnlQcmltaXRpdmUgPSBmdW5jdGlvbih2KSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB2ID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogJyc7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iaiwgc2VwLCBlcSwgbmFtZSkge1xuICBzZXAgPSBzZXAgfHwgJyYnO1xuICBlcSA9IGVxIHx8ICc9JztcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtYXAob2JqZWN0S2V5cyhvYmopLCBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIga3MgPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGspKSArIGVxO1xuICAgICAgaWYgKGlzQXJyYXkob2JqW2tdKSkge1xuICAgICAgICByZXR1cm4gbWFwKG9ialtrXSwgZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHhzKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeHMpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxuZnVuY3Rpb24gbWFwICh4cywgZikge1xuICBpZiAoeHMubWFwKSByZXR1cm4geHMubWFwKGYpO1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICByZXMucHVzaChmKHhzW2ldLCBpKSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSByZXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmRlY29kZSA9IGV4cG9ydHMucGFyc2UgPSByZXF1aXJlKCcuL2RlY29kZScpO1xuZXhwb3J0cy5lbmNvZGUgPSBleHBvcnRzLnN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vZW5jb2RlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHJldCAgICA9IHJlcXVpcmUoJ3JldCcpO1xuY29uc3QgRFJhbmdlID0gcmVxdWlyZSgnZHJhbmdlJyk7XG5jb25zdCB0eXBlcyAgPSByZXQudHlwZXM7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBSYW5kRXhwIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHJlZ2V4cFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbVxuICAgKi9cbiAgY29uc3RydWN0b3IocmVnZXhwLCBtKSB7XG4gICAgdGhpcy5fc2V0RGVmYXVsdHMocmVnZXhwKTtcbiAgICBpZiAocmVnZXhwIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICB0aGlzLmlnbm9yZUNhc2UgPSByZWdleHAuaWdub3JlQ2FzZTtcbiAgICAgIHRoaXMubXVsdGlsaW5lID0gcmVnZXhwLm11bHRpbGluZTtcbiAgICAgIHJlZ2V4cCA9IHJlZ2V4cC5zb3VyY2U7XG5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmlnbm9yZUNhc2UgPSBtICYmIG0uaW5kZXhPZignaScpICE9PSAtMTtcbiAgICAgIHRoaXMubXVsdGlsaW5lID0gbSAmJiBtLmluZGV4T2YoJ20nKSAhPT0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYSByZWdleHAgb3Igc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbnMgPSByZXQocmVnZXhwKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBzb21lIGN1c3RvbSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgcmVnZXhwLlxuICAgKlxuICAgKiBAcGFyYW0ge1JhbmRFeHB9IHJhbmRleHBcbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cFxuICAgKi9cbiAgX3NldERlZmF1bHRzKHJlZ2V4cCkge1xuICAgIC8vIFdoZW4gYSByZXBldGl0aW9uYWwgdG9rZW4gaGFzIGl0cyBtYXggc2V0IHRvIEluZmluaXRlLFxuICAgIC8vIHJhbmRleHAgd29uJ3QgYWN0dWFsbHkgZ2VuZXJhdGUgYSByYW5kb20gYW1vdW50IGJldHdlZW4gbWluIGFuZCBJbmZpbml0ZVxuICAgIC8vIGluc3RlYWQgaXQgd2lsbCBzZWUgSW5maW5pdGUgYXMgbWluICsgMTAwLlxuICAgIHRoaXMubWF4ID0gcmVnZXhwLm1heCAhPSBudWxsID8gcmVnZXhwLm1heCA6XG4gICAgICBSYW5kRXhwLnByb3RvdHlwZS5tYXggIT0gbnVsbCA/IFJhbmRFeHAucHJvdG90eXBlLm1heCA6IDEwMDtcblxuICAgIC8vIFRoaXMgYWxsb3dzIGV4cGFuZGluZyB0byBpbmNsdWRlIGFkZGl0aW9uYWwgY2hhcmFjdGVyc1xuICAgIC8vIGZvciBpbnN0YW5jZTogUmFuZEV4cC5kZWZhdWx0UmFuZ2UuYWRkKDAsIDY1NTM1KTtcbiAgICB0aGlzLmRlZmF1bHRSYW5nZSA9IHJlZ2V4cC5kZWZhdWx0UmFuZ2UgP1xuICAgICAgcmVnZXhwLmRlZmF1bHRSYW5nZSA6IHRoaXMuZGVmYXVsdFJhbmdlLmNsb25lKCk7XG5cbiAgICBpZiAocmVnZXhwLnJhbmRJbnQpIHtcbiAgICAgIHRoaXMucmFuZEludCA9IHJlZ2V4cC5yYW5kSW50O1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcmFuZG9tIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgZ2VuKCkge1xuICAgIHJldHVybiB0aGlzLl9nZW4odGhpcy50b2tlbnMsIFtdKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJhbmRvbSBzdHJpbmcgbW9kZWxlZCBhZnRlciBnaXZlbiB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0b2tlblxuICAgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBncm91cHNcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKi9cbiAgX2dlbih0b2tlbiwgZ3JvdXBzKSB7XG4gICAgdmFyIHN0YWNrLCBzdHIsIG4sIGksIGw7XG5cbiAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgIGNhc2UgdHlwZXMuUk9PVDpcbiAgICAgIGNhc2UgdHlwZXMuR1JPVVA6XG4gICAgICAgIC8vIElnbm9yZSBsb29rYWhlYWRzIGZvciBub3cuXG4gICAgICAgIGlmICh0b2tlbi5mb2xsb3dlZEJ5IHx8IHRva2VuLm5vdEZvbGxvd2VkQnkpIHsgcmV0dXJuICcnOyB9XG5cbiAgICAgICAgLy8gSW5zZXJ0IHBsYWNlaG9sZGVyIHVudGlsIGdyb3VwIHN0cmluZyBpcyBnZW5lcmF0ZWQuXG4gICAgICAgIGlmICh0b2tlbi5yZW1lbWJlciAmJiB0b2tlbi5ncm91cE51bWJlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdG9rZW4uZ3JvdXBOdW1iZXIgPSBncm91cHMucHVzaChudWxsKSAtIDE7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFjayA9IHRva2VuLm9wdGlvbnMgP1xuICAgICAgICAgIHRoaXMuX3JhbmRTZWxlY3QodG9rZW4ub3B0aW9ucykgOiB0b2tlbi5zdGFjaztcblxuICAgICAgICBzdHIgPSAnJztcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IHN0YWNrLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIHN0ciArPSB0aGlzLl9nZW4oc3RhY2tbaV0sIGdyb3Vwcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9rZW4ucmVtZW1iZXIpIHtcbiAgICAgICAgICBncm91cHNbdG9rZW4uZ3JvdXBOdW1iZXJdID0gc3RyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG5cbiAgICAgIGNhc2UgdHlwZXMuUE9TSVRJT046XG4gICAgICAgIC8vIERvIG5vdGhpbmcgZm9yIG5vdy5cbiAgICAgICAgcmV0dXJuICcnO1xuXG4gICAgICBjYXNlIHR5cGVzLlNFVDpcbiAgICAgICAgdmFyIGV4cGFuZGVkU2V0ID0gdGhpcy5fZXhwYW5kKHRva2VuKTtcbiAgICAgICAgaWYgKCFleHBhbmRlZFNldC5sZW5ndGgpIHsgcmV0dXJuICcnOyB9XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuX3JhbmRTZWxlY3QoZXhwYW5kZWRTZXQpKTtcblxuICAgICAgY2FzZSB0eXBlcy5SRVBFVElUSU9OOlxuICAgICAgICAvLyBSYW5kb21seSBnZW5lcmF0ZSBudW1iZXIgYmV0d2VlbiBtaW4gYW5kIG1heC5cbiAgICAgICAgbiA9IHRoaXMucmFuZEludCh0b2tlbi5taW4sXG4gICAgICAgICAgdG9rZW4ubWF4ID09PSBJbmZpbml0eSA/IHRva2VuLm1pbiArIHRoaXMubWF4IDogdG9rZW4ubWF4KTtcblxuICAgICAgICBzdHIgPSAnJztcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHN0ciArPSB0aGlzLl9nZW4odG9rZW4udmFsdWUsIGdyb3Vwcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyO1xuXG4gICAgICBjYXNlIHR5cGVzLlJFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIGdyb3Vwc1t0b2tlbi52YWx1ZSAtIDFdIHx8ICcnO1xuXG4gICAgICBjYXNlIHR5cGVzLkNIQVI6XG4gICAgICAgIHZhciBjb2RlID0gdGhpcy5pZ25vcmVDYXNlICYmIHRoaXMuX3JhbmRCb29sKCkgP1xuICAgICAgICAgIHRoaXMuX3RvT3RoZXJDYXNlKHRva2VuLnZhbHVlKSA6IHRva2VuLnZhbHVlO1xuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBJZiBjb2RlIGlzIGFscGhhYmV0aWMsIGNvbnZlcnRzIHRvIG90aGVyIGNhc2UuXG4gICAqIElmIG5vdCBhbHBoYWJldGljLCByZXR1cm5zIGJhY2sgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgX3RvT3RoZXJDYXNlKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSArICg5NyA8PSBjb2RlICYmIGNvZGUgPD0gMTIyID8gLTMyIDpcbiAgICAgIDY1IDw9IGNvZGUgJiYgY29kZSA8PSA5MCAgPyAgMzIgOiAwKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJhbmRvbWx5IHJldHVybnMgYSB0cnVlIG9yIGZhbHNlIHZhbHVlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgX3JhbmRCb29sKCkge1xuICAgIHJldHVybiAhdGhpcy5yYW5kSW50KDAsIDEpO1xuICB9XG5cblxuICAvKipcbiAgICogUmFuZG9tbHkgc2VsZWN0cyBhbmQgcmV0dXJucyBhIHZhbHVlIGZyb20gdGhlIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5LjxPYmplY3Q+fSBhcnJcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgX3JhbmRTZWxlY3QoYXJyKSB7XG4gICAgaWYgKGFyciBpbnN0YW5jZW9mIERSYW5nZSkge1xuICAgICAgcmV0dXJuIGFyci5pbmRleCh0aGlzLnJhbmRJbnQoMCwgYXJyLmxlbmd0aCAtIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyclt0aGlzLnJhbmRJbnQoMCwgYXJyLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGV4cGFuZHMgYSB0b2tlbiB0byBhIERpc2NvbnRpbnVvdXNSYW5nZSBvZiBjaGFyYWN0ZXJzIHdoaWNoIGhhcyBhXG4gICAqIGxlbmd0aCBhbmQgYW4gaW5kZXggZnVuY3Rpb24gKGZvciByYW5kb20gc2VsZWN0aW5nKVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHJldHVybiB7RGlzY29udGludW91c1JhbmdlfVxuICAgKi9cbiAgX2V4cGFuZCh0b2tlbikge1xuICAgIGlmICh0b2tlbi50eXBlID09PSByZXQudHlwZXMuQ0hBUikge1xuICAgICAgcmV0dXJuIG5ldyBEUmFuZ2UodG9rZW4udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gcmV0LnR5cGVzLlJBTkdFKSB7XG4gICAgICByZXR1cm4gbmV3IERSYW5nZSh0b2tlbi5mcm9tLCB0b2tlbi50byk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkcmFuZ2UgPSBuZXcgRFJhbmdlKCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLnNldC5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc3VicmFuZ2UgPSB0aGlzLl9leHBhbmQodG9rZW4uc2V0W2ldKTtcbiAgICAgICAgZHJhbmdlLmFkZChzdWJyYW5nZSk7XG4gICAgICAgIGlmICh0aGlzLmlnbm9yZUNhc2UpIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHN1YnJhbmdlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBsZXQgY29kZSA9IHN1YnJhbmdlLmluZGV4KGopO1xuICAgICAgICAgICAgbGV0IG90aGVyQ2FzZUNvZGUgPSB0aGlzLl90b090aGVyQ2FzZShjb2RlKTtcbiAgICAgICAgICAgIGlmIChjb2RlICE9PSBvdGhlckNhc2VDb2RlKSB7XG4gICAgICAgICAgICAgIGRyYW5nZS5hZGQob3RoZXJDYXNlQ29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4ubm90KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRSYW5nZS5jbG9uZSgpLnN1YnRyYWN0KGRyYW5nZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UmFuZ2UuY2xvbmUoKS5pbnRlcnNlY3QoZHJhbmdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSYW5kb21seSBnZW5lcmF0ZXMgYW5kIHJldHVybnMgYSBudW1iZXIgYmV0d2VlbiBhIGFuZCBiIChpbmNsdXNpdmUpLlxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge051bWJlcn0gYlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICByYW5kSW50KGEsIGIpIHtcbiAgICByZXR1cm4gYSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgxICsgYiAtIGEpKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0byBnZW5lcmF0ZSBmcm9tLlxuICAgKi9cbiAgZ2V0IGRlZmF1bHRSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UgPSB0aGlzLl9yYW5nZSB8fCBuZXcgRFJhbmdlKDMyLCAxMjYpO1xuICB9XG5cbiAgc2V0IGRlZmF1bHRSYW5nZShyYW5nZSkge1xuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XG4gIH1cblxuXG4gIC8qKlxuICAgKlxuICAgKiBFbmFibGVzIHVzZSBvZiByYW5kZXhwIHdpdGggYSBzaG9ydGVyIGNhbGwuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ3wgcmVnZXhwfVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgcmFuZGV4cChyZWdleHAsIG0pIHtcbiAgICB2YXIgcmFuZGV4cDtcbiAgICBpZih0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHAsIG0pO1xuICAgIH1cblxuICAgIGlmIChyZWdleHAuX3JhbmRleHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmFuZGV4cCA9IG5ldyBSYW5kRXhwKHJlZ2V4cCwgbSk7XG4gICAgICByZWdleHAuX3JhbmRleHAgPSByYW5kZXhwO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5kZXhwID0gcmVnZXhwLl9yYW5kZXhwO1xuICAgICAgcmFuZGV4cC5fc2V0RGVmYXVsdHMocmVnZXhwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhbmRleHAuZ2VuKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHN1Z2FyeSAvcmVnZXhwLy5nZW4gc3ludGF4LlxuICAgKi9cbiAgc3RhdGljIHN1Z2FyKCkge1xuICAgIC8qIGVzaGludCBmcmVlemU6ZmFsc2UgKi9cbiAgICBSZWdFeHAucHJvdG90eXBlLmdlbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFJhbmRFeHAucmFuZGV4cCh0aGlzKTtcbiAgICB9O1xuICB9XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBhbCBpbmhlcml0YW5jZSwgdGhpcyBjbGFzc1xuLy8gcHJvdG90eXBhbGx5IGluaGVyaXRzIGZyb20gUmVhZGFibGUsIGFuZCB0aGVuIHBhcmFzaXRpY2FsbHkgZnJvbVxuLy8gV3JpdGFibGUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gIH1yZXR1cm4ga2V5cztcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBEdXBsZXg7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3JlYWRhYmxlJyk7XG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxudXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTtcblxue1xuICAvLyBhdm9pZCBzY29wZSBjcmVlcCwgdGhlIGtleXMgYXJyYXkgY2FuIHRoZW4gYmUgY29sbGVjdGVkXG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpO1xuICBmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgICB2YXIgbWV0aG9kID0ga2V5c1t2XTtcbiAgICBpZiAoIUR1cGxleC5wcm90b3R5cGVbbWV0aG9kXSkgRHVwbGV4LnByb3RvdHlwZVttZXRob2RdID0gV3JpdGFibGUucHJvdG90eXBlW21ldGhvZF07XG4gIH1cbn1cblxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuXG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuXG4gIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcbmZ1bmN0aW9uIG9uZW5kKCkge1xuICAvLyBpZiB3ZSBhbGxvdyBoYWxmLW9wZW4gc3RhdGUsIG9yIGlmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLFxuICAvLyB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjtcblxuICAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuICBwbmEubmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuXG5EdXBsZXgucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5wdXNoKG51bGwpO1xuICB0aGlzLmVuZCgpO1xuXG4gIHBuYS5uZXh0VGljayhjYiwgZXJyKTtcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgcGFzc3Rocm91Z2ggc3RyZWFtLlxuLy8gYmFzaWNhbGx5IGp1c3QgdGhlIG1vc3QgbWluaW1hbCBzb3J0IG9mIFRyYW5zZm9ybSBzdHJlYW0uXG4vLyBFdmVyeSB3cml0dGVuIGNodW5rIGdldHMgb3V0cHV0IGFzLWlzLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUGFzc1Rocm91Z2g7XG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCcuL19zdHJlYW1fdHJhbnNmb3JtJyk7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhQYXNzVGhyb3VnaCwgVHJhbnNmb3JtKTtcblxuZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKSByZXR1cm4gbmV3IFBhc3NUaHJvdWdoKG9wdGlvbnMpO1xuXG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xufVxuXG5QYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG51bGwsIGNodW5rKTtcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gKGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcbnZhciBTdHJpbmdEZWNvZGVyO1xuXG51dGlsLmluaGVyaXRzKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggaXQgc3RvcHMgY2FsbGluZyBfcmVhZCgpIHRvIGZpbGwgdGhlIGJ1ZmZlclxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIFwiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlclwiXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIGNiKGVycik7XG59O1xuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHNraXBDaHVua0NoZWNrO1xuXG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gICAgaWYgKGVyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihjaHVuaykgIT09IEJ1ZmZlci5wcm90b3R5cGUpIHtcbiAgICAgICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZFRvRnJvbnQpIHtcbiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgYWRkVG9Gcm9udCkge1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cbiAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuaykge1xuICB2YXIgZXI7XG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgcmV0dXJuIGVyO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcblxuICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vd1xuICAgIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgICBpZiAoIXN0YXRlLmVuZGVkKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSB7XG4gICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC5cbiAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG59XG5cbi8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnN5bmMpIHBuYS5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO2Vsc2UgZW1pdFJlYWRhYmxlXyhzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7XG4gIHN0cmVhbS5lbWl0KCdyZWFkYWJsZScpO1xuICBmbG93KHN0cmVhbSk7XG59XG5cbi8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIHdoaWxlICghc3RhdGUucmVhZGluZyAmJiAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVhaztlbHNlIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgfVxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufVxuXG4vLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ19yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcG5hLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBpZiAodW5waXBlSW5mbyAmJiB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHVucGlwZUluZm8uaGFzVW5waXBlZCA9IHRydWU7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIC8vIElmIHRoZSB1c2VyIHB1c2hlcyBtb3JlIGRhdGEgd2hpbGUgd2UncmUgd3JpdGluZyB0byBkZXN0IHRoZW4gd2UnbGwgZW5kIHVwXG4gIC8vIGluIG9uZGF0YSBhZ2Fpbi4gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGluY3JlYXNlIGF3YWl0RHJhaW4gb25jZSBiZWNhdXNlXG4gIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuXG4gIC8vID0+IEludHJvZHVjZSBhIGd1YXJkIG9uIGluY3JlYXNpbmcgYXdhaXREcmFpbi5cbiAgdmFyIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQgJiYgIWluY3JlYXNlZEF3YWl0RHJhaW4pIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IHRydWU7XG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgZGVzdCBoYXMgYW4gZXJyb3IsIHRoZW4gc3RvcCBwaXBpbmcgaW50byBpdC5cbiAgLy8gaG93ZXZlciwgZG9uJ3Qgc3VwcHJlc3MgdGhlIHRocm93aW5nIGJlaGF2aW9yIGZvciB0aGlzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBkZXN0LmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfVxuXG4gIC8vIHRlbGwgdGhlIGRlc3QgdGhhdCBpdCdzIGJlaW5nIHBpcGVkIHRvXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7XG5cbiAgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9O1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcG5hLm5leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcblxuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG5cbiAgICB2YXIgcmV0ID0gX3RoaXMucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfVxuXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGNvbnN1bWUgc29tZSBtb3JlIGJ5dGVzLCBzaW1wbHkgdW5wYXVzZSB0aGVcbiAgLy8gdW5kZXJseWluZyBzdHJlYW0uXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG4gICAgaWYgKHBhdXNlZCkge1xuICAgICAgcGF1c2VkID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVzdW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHAuZGF0YS5jb3B5KHJldCk7XG4gIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gYnVmLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIElmIHdlIGdldCBoZXJlIGJlZm9yZSBjb25zdW1pbmcgYWxsIHRoZSBieXRlcywgdGhlbiB0aGF0IGlzIGFcbiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLlxuICBpZiAoc3RhdGUubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdcImVuZFJlYWRhYmxlKClcIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgc3RhdGUuZW5kRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xuXG52YXIgRHVwbGV4ID0gcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoVHJhbnNmb3JtLCBEdXBsZXgpO1xuXG5mdW5jdGlvbiBhZnRlclRyYW5zZm9ybShlciwgZGF0YSkge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG5cbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoIWNiKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3dyaXRlIGNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycpKTtcbiAgfVxuXG4gIHRzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0cy53cml0ZWNiID0gbnVsbDtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICB0aGlzLnB1c2goZGF0YSk7XG5cbiAgY2IoZXIpO1xuXG4gIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHJzLnJlYWRpbmcgPSBmYWxzZTtcbiAgaWYgKHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG5cbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUgPSB7XG4gICAgYWZ0ZXJUcmFuc2Zvcm06IGFmdGVyVHJhbnNmb3JtLmJpbmQodGhpcyksXG4gICAgbmVlZFRyYW5zZm9ybTogZmFsc2UsXG4gICAgdHJhbnNmb3JtaW5nOiBmYWxzZSxcbiAgICB3cml0ZWNiOiBudWxsLFxuICAgIHdyaXRlY2h1bms6IG51bGwsXG4gICAgd3JpdGVlbmNvZGluZzogbnVsbFxuICB9O1xuXG4gIC8vIHN0YXJ0IG91dCBhc2tpbmcgZm9yIGEgcmVhZGFibGUgZXZlbnQgb25jZSBkYXRhIGlzIHRyYW5zZm9ybWVkLlxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgLy8gd2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGUgX3JlYWQgbWV0aG9kLCBhbmQgZG9uZSB0aGUgb3RoZXIgdGhpbmdzXG4gIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGVcbiAgLy8gc3luYyBndWFyZCBmbGFnLlxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmMgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHRoaXMuX3RyYW5zZm9ybSA9IG9wdGlvbnMudHJhbnNmb3JtO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZsdXNoID09PSAnZnVuY3Rpb24nKSB0aGlzLl9mbHVzaCA9IG9wdGlvbnMuZmx1c2g7XG4gIH1cblxuICAvLyBXaGVuIHRoZSB3cml0YWJsZSBzaWRlIGZpbmlzaGVzLCB0aGVuIGZsdXNoIG91dCBhbnl0aGluZyByZW1haW5pbmcuXG4gIHRoaXMub24oJ3ByZWZpbmlzaCcsIHByZWZpbmlzaCk7XG59XG5cbmZ1bmN0aW9uIHByZWZpbmlzaCgpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICBpZiAodHlwZW9mIHRoaXMuX2ZsdXNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgICBkb25lKF90aGlzLCBlciwgZGF0YSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZG9uZSh0aGlzLCBudWxsLCBudWxsKTtcbiAgfVxufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgcmV0dXJuIER1cGxleC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZyk7XG59O1xuXG4vLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHlvdSBkbyBzdHVmZiFcbi8vIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gaW4gaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuXG4vL1xuLy8gQ2FsbCBgcHVzaChuZXdDaHVuaylgIHRvIHBhc3MgYWxvbmcgdHJhbnNmb3JtZWQgb3V0cHV0XG4vLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLlxuLy9cbi8vIENhbGwgYGNiKGVycilgIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBjaHVuay4gIElmIHlvdSBwYXNzXG4vLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91XG4vLyBuZXZlciBjYWxsIGNiKCksIHRoZW4geW91J2xsIG5ldmVyIGdldCBhbm90aGVyIGNodW5rLlxuVHJhbnNmb3JtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdHJhbnNmb3JtKCkgaXMgbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07XG5cbi8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiB0cy53cml0ZWNiICYmICF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlO1xuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHtcbiAgICBjYihlcnIyKTtcbiAgICBfdGhpczIuZW1pdCgnY2xvc2UnKTtcbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuXG4gIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYFxuICAgIHN0cmVhbS5wdXNoKGRhdGEpO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG4gIGlmIChzdHJlYW0uX3dyaXRhYmxlU3RhdGUubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCcpO1xuXG4gIGlmIChzdHJlYW0uX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZykgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gc3RpbGwgdHJhbnNmb3JtaW5nJyk7XG5cbiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyogPHJlcGxhY2VtZW50PiAqL1xuZnVuY3Rpb24gV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aGlzLmNodW5rID0gY2h1bms7XG4gIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgdGhpcy5jYWxsYmFjayA9IGNiO1xuICB0aGlzLm5leHQgPSBudWxsO1xufVxuXG4vLyBJdCBzZWVtcyBhIGxpbmtlZCBsaXN0IGJ1dCBpdCBpcyBub3Rcbi8vIHRoZXJlIHdpbGwgYmUgb25seSAyIG9mIHRoZXNlIGZvciBlYWNoIHN0cmVhbVxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICBvbkNvcmtlZEZpbmlzaChfdGhpcywgc3RhdGUpO1xuICB9O1xufVxuLyogPC9yZXBsYWNlbWVudD4gKi9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBhc3luY1dyaXRlID0gIXByb2Nlc3MuYnJvd3NlciAmJiBbJ3YwLjEwJywgJ3YwLjkuJ10uaW5kZXhPZihwcm9jZXNzLnZlcnNpb24uc2xpY2UoMCwgNSkpID4gLTEgPyBzZXRJbW1lZGlhdGUgOiBwbmEubmV4dFRpY2s7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpbnRlcm5hbFV0aWwgPSB7XG4gIGRlcHJlY2F0ZTogcmVxdWlyZSgndXRpbC1kZXByZWNhdGUnKVxufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9O1xuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG5cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpO1xuXG51dGlsLmluaGVyaXRzKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIHdyaXRlKCkgc3RhcnRzIHJldHVybmluZyBmYWxzZVxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIHRoYXQgd2UgYWx3YXlzIHJldHVybiBmYWxzZSBpZlxuICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciB3cml0YWJsZUh3bSA9IG9wdGlvbnMud3JpdGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHdyaXRhYmxlSHdtIHx8IHdyaXRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gd3JpdGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIGlmIF9maW5hbCBoYXMgYmVlbiBjYWxsZWRcbiAgdGhpcy5maW5hbENhbGxlZCA9IGZhbHNlO1xuXG4gIC8vIGRyYWluIGV2ZW50IGZsYWcuXG4gIHRoaXMubmVlZERyYWluID0gZmFsc2U7XG4gIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7XG4gIC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cbiAgdmFyIG5vRGVjb2RlID0gb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG4gIHRoaXMubGVuZ3RoID0gMDtcblxuICAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcblxuICAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG4gIHRoaXMuY29ya2VkID0gMDtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuICB0aGlzLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG4gIHRoaXMub253cml0ZSA9IGZ1bmN0aW9uIChlcikge1xuICAgIG9ud3JpdGUoc3RyZWFtLCBlcik7XG4gIH07XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG5cbiAgLy8gdGhlIGFtb3VudCB0aGF0IGlzIGJlaW5nIHdyaXR0ZW4gd2hlbiBfd3JpdGUgaXMgY2FsbGVkLlxuICB0aGlzLndyaXRlbGVuID0gMDtcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuXG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7XG4gIHZhciBjdXJyZW50ID0gdGhpcy5idWZmZXJlZFJlcXVlc3Q7XG4gIHZhciBvdXQgPSBbXTtcbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBvdXQucHVzaChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHtcbiAgICAgIGdldDogaW50ZXJuYWxVdGlsLmRlcHJlY2F0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG4vLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cbnZhciByZWFsSGFzSW5zdGFuY2U7XG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZTtcblxuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICAvLyBXcml0YWJsZSBjdG9yIGlzIGFwcGxpZWQgdG8gRHVwbGV4ZXMsIHRvby5cbiAgLy8gYHJlYWxIYXNJbnN0YW5jZWAgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdXNpbmcgcGxhaW4gYGluc3RhbmNlb2ZgXG4gIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC5cblxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgaWYgKCFyZWFsSGFzSW5zdGFuY2UuY2FsbChXcml0YWJsZSwgdGhpcykgJiYgISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkge1xuICAgIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG4gIH1cblxuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7XG5cbiAgLy8gbGVnYWN5LlxuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZGVzdHJveSA9IG9wdGlvbnMuZGVzdHJveTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsO1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlJykpO1xufTtcblxuZnVuY3Rpb24gd3JpdGVBZnRlckVuZChzdHJlYW0sIGNiKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIENoZWNrcyB0aGF0IGEgdXNlci1zdXBwbGllZCBjaHVuayBpcyB2YWxpZCwgZXNwZWNpYWxseSBmb3IgdGhlIHBhcnRpY3VsYXJcbi8vIG1vZGUgdGhlIHN0cmVhbSBpcyBpbi4gQ3VycmVudGx5IHRoaXMgbWVhbnMgdGhhdCBgbnVsbGAgaXMgbmV2ZXIgYWNjZXB0ZWRcbi8vIGFuZCB1bmRlZmluZWQvbm9uLXN0cmluZyB2YWx1ZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiBvYmplY3QgbW9kZS5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciB2YWxpZCA9IHRydWU7XG4gIHZhciBlciA9IGZhbHNlO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICBpZiAoZXIpIHtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG4gICAgdmFsaWQgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcbiAgdmFyIGlzQnVmID0gIXN0YXRlLm9iamVjdE1vZGUgJiYgX2lzVWludDhBcnJheShjaHVuayk7XG5cbiAgaWYgKGlzQnVmICYmICFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7XG4gICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0J1ZikgZW5jb2RpbmcgPSAnYnVmZmVyJztlbHNlIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuXG4gIGlmIChzdGF0ZS5lbmRlZCkgd3JpdGVBZnRlckVuZCh0aGlzLCBjYik7ZWxzZSBpZiAoaXNCdWYgfHwgdmFsaWRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGNiKSkge1xuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHJldCA9IHdyaXRlT3JCdWZmZXIodGhpcywgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBzdGF0ZS5jb3JrZWQrKztcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZC0tO1xuXG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcblxuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcbiAgICBwbmEubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY2FsbGVyIGV4cGVjdCB0aGlzIHRvIGhhcHBlbiBiZWZvcmUgaWZcbiAgICAvLyBpdCBpcyBhc3luY1xuICAgIGNiKGVyKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdFxuICAgIC8vIGFsd2F5cyBmb2xsb3cgZXJyb3JcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcblxuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuXG4gIGlmIChlcikgb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYik7ZWxzZSB7XG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXRcbiAgICB2YXIgZmluaXNoZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICAvKjxyZXBsYWNlbWVudD4qL1xuICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgICAgLyo8L3JlcGxhY2VtZW50PiovXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07XG4gICAgICAvLyBpZiB3ZSBkaWRuJ3QgY2FsbCB0aGUgb253cml0ZSBpbW1lZGlhdGVseSwgdGhlblxuICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy5cbiAgICAgIC8vIGFsc28sIHRoYXQgbWVhbnMgdGhhdCB0aGUgY2h1bmsgYW5kIGNiIGFyZSBjdXJyZW50bHlcbiAgICAgIC8vIGJlaW5nIHByb2Nlc3NlZCwgc28gbW92ZSB0aGUgYnVmZmVyIGNvdW50ZXIgcGFzdCB0aGVtLlxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ193cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xufTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RyZWFtLl9maW5hbChmdW5jdGlvbiAoZXJyKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgaWYgKGVycikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9XG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkICYmICFzdGF0ZS5maW5hbENhbGxlZCkge1xuICAgIGlmICh0eXBlb2Ygc3RyZWFtLl9maW5hbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7XG4gICAgICBwbmEubmV4dFRpY2soY2FsbEZpbmFsLCBzdHJlYW0sIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBuZWVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG4gIGlmIChuZWVkKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5lZWQ7XG59XG5cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICBpZiAoY2IpIHtcbiAgICBpZiAoc3RhdGUuZmluaXNoZWQpIHBuYS5uZXh0VGljayhjYik7ZWxzZSBzdHJlYW0ub25jZSgnZmluaXNoJywgY2IpO1xuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9uQ29ya2VkRmluaXNoKGNvcmtSZXEsIHN0YXRlLCBlcnIpIHtcbiAgdmFyIGVudHJ5ID0gY29ya1JlcS5lbnRyeTtcbiAgY29ya1JlcS5lbnRyeSA9IG51bGw7XG4gIHdoaWxlIChlbnRyeSkge1xuICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGNiKGVycik7XG4gICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICB9XG4gIGlmIChzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUpIHtcbiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gY29ya1JlcTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMuZW5kKCk7XG4gIGNiKGVycik7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbmZ1bmN0aW9uIGNvcHlCdWZmZXIoc3JjLCB0YXJnZXQsIG9mZnNldCkge1xuICBzcmMuY29weSh0YXJnZXQsIG9mZnNldCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdWZmZXJMaXN0KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWZmZXJMaXN0KTtcblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiBudWxsIH07XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeTtlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIHVuc2hpZnQodikge1xuICAgIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogdGhpcy5oZWFkIH07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICArK3RoaXMubGVuZ3RoO1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gc2hpZnQoKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIC0tdGhpcy5sZW5ndGg7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKHMpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG4gICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgIHJldCArPSBzICsgcC5kYXRhO1xuICAgIH1yZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdChuKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRoaXMuaGVhZC5kYXRhO1xuICAgIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobiA+Pj4gMCk7XG4gICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb3B5QnVmZmVyKHAuZGF0YSwgcmV0LCBpKTtcbiAgICAgIGkgKz0gcC5kYXRhLmxlbmd0aDtcbiAgICAgIHAgPSBwLm5leHQ7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgcmV0dXJuIEJ1ZmZlckxpc3Q7XG59KCk7XG5cbmlmICh1dGlsICYmIHV0aWwuaW5zcGVjdCAmJiB1dGlsLmluc3BlY3QuY3VzdG9tKSB7XG4gIG1vZHVsZS5leHBvcnRzLnByb3RvdHlwZVt1dGlsLmluc3BlY3QuY3VzdG9tXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgb2JqID0gdXRpbC5pbnNwZWN0KHsgbGVuZ3RoOiB0aGlzLmxlbmd0aCB9KTtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJyAnICsgb2JqO1xuICB9O1xufSIsIid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuZnVuY3Rpb24gZGVzdHJveShlcnIsIGNiKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHJlYWRhYmxlRGVzdHJveWVkID0gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgdmFyIHdyaXRhYmxlRGVzdHJveWVkID0gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcblxuICBpZiAocmVhZGFibGVEZXN0cm95ZWQgfHwgd3JpdGFibGVEZXN0cm95ZWQpIHtcbiAgICBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIGlmIChlcnIgJiYgKCF0aGlzLl93cml0YWJsZVN0YXRlIHx8ICF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkpIHtcbiAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB3ZSBzZXQgZGVzdHJveWVkIHRvIHRydWUgYmVmb3JlIGZpcmluZyBlcnJvciBjYWxsYmFja3MgaW4gb3JkZXJcbiAgLy8gdG8gbWFrZSBpdCByZS1lbnRyYW5jZSBzYWZlIGluIGNhc2UgZGVzdHJveSgpIGlzIGNhbGxlZCB3aXRoaW4gY2FsbGJhY2tzXG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICAvLyBpZiB0aGlzIGlzIGEgZHVwbGV4IHN0cmVhbSBtYXJrIHRoZSB3cml0YWJsZSBwYXJ0IGFzIGRlc3Ryb3llZCBhcyB3ZWxsXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgdGhpcy5fZGVzdHJveShlcnIgfHwgbnVsbCwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmICghY2IgJiYgZXJyKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpO1xuICAgICAgaWYgKF90aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVzdHJveTogZGVzdHJveSxcbiAgdW5kZXN0cm95OiB1bmRlc3Ryb3lcbn07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG4iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG5leHBvcnRzLlN0cmVhbSA9IGV4cG9ydHM7XG5leHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbmV4cG9ydHMuV3JpdGFibGUgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5leHBvcnRzLkR1cGxleCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5leHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG5leHBvcnRzLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuIiwiY29uc3QgdXRpbCAgICAgID0gcmVxdWlyZSgnLi91dGlsJyk7XG5jb25zdCB0eXBlcyAgICAgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5jb25zdCBzZXRzICAgICAgPSByZXF1aXJlKCcuL3NldHMnKTtcbmNvbnN0IHBvc2l0aW9ucyA9IHJlcXVpcmUoJy4vcG9zaXRpb25zJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSAocmVnZXhwU3RyKSA9PiB7XG4gIHZhciBpID0gMCwgbCwgYyxcbiAgICBzdGFydCA9IHsgdHlwZTogdHlwZXMuUk9PVCwgc3RhY2s6IFtdfSxcblxuICAgIC8vIEtlZXAgdHJhY2sgb2YgbGFzdCBjbGF1c2UvZ3JvdXAgYW5kIHN0YWNrLlxuICAgIGxhc3RHcm91cCA9IHN0YXJ0LFxuICAgIGxhc3QgPSBzdGFydC5zdGFjayxcbiAgICBncm91cFN0YWNrID0gW107XG5cblxuICB2YXIgcmVwZWF0RXJyID0gKGkpID0+IHtcbiAgICB1dGlsLmVycm9yKHJlZ2V4cFN0ciwgYE5vdGhpbmcgdG8gcmVwZWF0IGF0IGNvbHVtbiAke2kgLSAxfWApO1xuICB9O1xuXG4gIC8vIERlY29kZSBhIGZldyBlc2NhcGVkIGNoYXJhY3RlcnMuXG4gIHZhciBzdHIgPSB1dGlsLnN0clRvQ2hhcnMocmVnZXhwU3RyKTtcbiAgbCA9IHN0ci5sZW5ndGg7XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2ggY2hhcmFjdGVyIGluIHN0cmluZy5cbiAgd2hpbGUgKGkgPCBsKSB7XG4gICAgYyA9IHN0cltpKytdO1xuXG4gICAgc3dpdGNoIChjKSB7XG4gICAgICAvLyBIYW5kbGUgZXNjYXBlZCBjaGFyYWN0ZXJzLCBpbmNsdWVzIGEgZmV3IHNldHMuXG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgYyA9IHN0cltpKytdO1xuXG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgIGNhc2UgJ2InOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHBvc2l0aW9ucy53b3JkQm91bmRhcnkoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ0InOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHBvc2l0aW9ucy5ub25Xb3JkQm91bmRhcnkoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMud29yZHMoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMubm90V29yZHMoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMuaW50cygpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICBsYXN0LnB1c2goc2V0cy5ub3RJbnRzKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgIGxhc3QucHVzaChzZXRzLndoaXRlc3BhY2UoKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgbGFzdC5wdXNoKHNldHMubm90V2hpdGVzcGFjZSgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGMgaXMgaW50ZWdlci5cbiAgICAgICAgICAgIC8vIEluIHdoaWNoIGNhc2UgaXQncyBhIHJlZmVyZW5jZS5cbiAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgIGxhc3QucHVzaCh7IHR5cGU6IHR5cGVzLlJFRkVSRU5DRSwgdmFsdWU6IHBhcnNlSW50KGMsIDEwKSB9KTtcblxuICAgICAgICAgICAgLy8gRXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYXN0LnB1c2goeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogYy5jaGFyQ29kZUF0KDApIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gUG9zaXRpb25hbHMuXG4gICAgICBjYXNlICdeJzpcbiAgICAgICAgbGFzdC5wdXNoKHBvc2l0aW9ucy5iZWdpbigpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJyQnOlxuICAgICAgICBsYXN0LnB1c2gocG9zaXRpb25zLmVuZCgpKTtcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gSGFuZGxlIGN1c3RvbSBzZXRzLlxuICAgICAgY2FzZSAnWyc6XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgY2xhc3MgaXMgJ2FudGknIGkuZS4gW15hYmNdLlxuICAgICAgICB2YXIgbm90O1xuICAgICAgICBpZiAoc3RyW2ldID09PSAnXicpIHtcbiAgICAgICAgICBub3QgPSB0cnVlO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub3QgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gY2xhc3MuXG4gICAgICAgIHZhciBjbGFzc1Rva2VucyA9IHV0aWwudG9rZW5pemVDbGFzcyhzdHIuc2xpY2UoaSksIHJlZ2V4cFN0cik7XG5cbiAgICAgICAgLy8gSW5jcmVhc2UgaW5kZXggYnkgbGVuZ3RoIG9mIGNsYXNzLlxuICAgICAgICBpICs9IGNsYXNzVG9rZW5zWzFdO1xuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLlNFVCxcbiAgICAgICAgICBzZXQ6IGNsYXNzVG9rZW5zWzBdLFxuICAgICAgICAgIG5vdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gQ2xhc3Mgb2YgYW55IGNoYXJhY3RlciBleGNlcHQgXFxuLlxuICAgICAgY2FzZSAnLic6XG4gICAgICAgIGxhc3QucHVzaChzZXRzLmFueUNoYXIoKSk7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFB1c2ggZ3JvdXAgb250byBzdGFjay5cbiAgICAgIGNhc2UgJygnOlxuICAgICAgICAvLyBDcmVhdGUgZ3JvdXAuXG4gICAgICAgIHZhciBncm91cCA9IHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5HUk9VUCxcbiAgICAgICAgICBzdGFjazogW10sXG4gICAgICAgICAgcmVtZW1iZXI6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgYyA9IHN0cltpXTtcblxuICAgICAgICAvLyBJZiBpZiB0aGlzIGlzIGEgc3BlY2lhbCBraW5kIG9mIGdyb3VwLlxuICAgICAgICBpZiAoYyA9PT0gJz8nKSB7XG4gICAgICAgICAgYyA9IHN0cltpICsgMV07XG4gICAgICAgICAgaSArPSAyO1xuXG4gICAgICAgICAgLy8gTWF0Y2ggaWYgZm9sbG93ZWQgYnkuXG4gICAgICAgICAgaWYgKGMgPT09ICc9Jykge1xuICAgICAgICAgICAgZ3JvdXAuZm9sbG93ZWRCeSA9IHRydWU7XG5cbiAgICAgICAgICAvLyBNYXRjaCBpZiBub3QgZm9sbG93ZWQgYnkuXG4gICAgICAgICAgfSBlbHNlIGlmIChjID09PSAnIScpIHtcbiAgICAgICAgICAgIGdyb3VwLm5vdEZvbGxvd2VkQnkgPSB0cnVlO1xuXG4gICAgICAgICAgfSBlbHNlIGlmIChjICE9PSAnOicpIHtcbiAgICAgICAgICAgIHV0aWwuZXJyb3IocmVnZXhwU3RyLFxuICAgICAgICAgICAgICBgSW52YWxpZCBncm91cCwgY2hhcmFjdGVyICcke2N9J2AgK1xuICAgICAgICAgICAgICBgIGFmdGVyICc/JyBhdCBjb2x1bW4gJHtpIC0gMX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBncm91cC5yZW1lbWJlciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5zZXJ0IHN1Ymdyb3VwIGludG8gY3VycmVudCBncm91cCBzdGFjay5cbiAgICAgICAgbGFzdC5wdXNoKGdyb3VwKTtcblxuICAgICAgICAvLyBSZW1lbWJlciB0aGUgY3VycmVudCBncm91cCBmb3Igd2hlbiB0aGUgZ3JvdXAgY2xvc2VzLlxuICAgICAgICBncm91cFN0YWNrLnB1c2gobGFzdEdyb3VwKTtcblxuICAgICAgICAvLyBNYWtlIHRoaXMgbmV3IGdyb3VwIHRoZSBjdXJyZW50IGdyb3VwLlxuICAgICAgICBsYXN0R3JvdXAgPSBncm91cDtcbiAgICAgICAgbGFzdCA9IGdyb3VwLnN0YWNrO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBQb3AgZ3JvdXAgb3V0IG9mIHN0YWNrLlxuICAgICAgY2FzZSAnKSc6XG4gICAgICAgIGlmIChncm91cFN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHV0aWwuZXJyb3IocmVnZXhwU3RyLCBgVW5tYXRjaGVkICkgYXQgY29sdW1uICR7aSAtIDF9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEdyb3VwID0gZ3JvdXBTdGFjay5wb3AoKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGdyb3VwIGhhcyBhIFBJUEUuXG4gICAgICAgIC8vIFRvIGdldCBiYWNrIHRoZSBjb3JyZWN0IGxhc3Qgc3RhY2suXG4gICAgICAgIGxhc3QgPSBsYXN0R3JvdXAub3B0aW9ucyA/XG4gICAgICAgICAgbGFzdEdyb3VwLm9wdGlvbnNbbGFzdEdyb3VwLm9wdGlvbnMubGVuZ3RoIC0gMV0gOiBsYXN0R3JvdXAuc3RhY2s7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIFVzZSBwaXBlIGNoYXJhY3RlciB0byBnaXZlIG1vcmUgY2hvaWNlcy5cbiAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAvLyBDcmVhdGUgYXJyYXkgd2hlcmUgb3B0aW9ucyBhcmUgaWYgdGhpcyBpcyB0aGUgZmlyc3QgUElQRVxuICAgICAgICAvLyBpbiB0aGlzIGNsYXVzZS5cbiAgICAgICAgaWYgKCFsYXN0R3JvdXAub3B0aW9ucykge1xuICAgICAgICAgIGxhc3RHcm91cC5vcHRpb25zID0gW2xhc3RHcm91cC5zdGFja107XG4gICAgICAgICAgZGVsZXRlIGxhc3RHcm91cC5zdGFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdGFjayBhbmQgYWRkIHRvIG9wdGlvbnMgZm9yIHJlc3Qgb2YgY2xhdXNlLlxuICAgICAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICAgICAgbGFzdEdyb3VwLm9wdGlvbnMucHVzaChzdGFjayk7XG4gICAgICAgIGxhc3QgPSBzdGFjaztcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gUmVwZXRpdGlvbi5cbiAgICAgIC8vIEZvciBldmVyeSByZXBldGl0aW9uLCByZW1vdmUgbGFzdCBlbGVtZW50IGZyb20gbGFzdCBzdGFja1xuICAgICAgLy8gdGhlbiBpbnNlcnQgYmFjayBhIFJBTkdFIG9iamVjdC5cbiAgICAgIC8vIFRoaXMgZGVzaWduIGlzIGNob3NlbiBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG1vcmUgdGhhblxuICAgICAgLy8gb25lIHJlcGV0aXRpb24gc3ltYm9scyBpbiBhIHJlZ2V4IGkuZS4gYGE/K3syLDN9YC5cbiAgICAgIGNhc2UgJ3snOlxuICAgICAgICB2YXIgcnMgPSAvXihcXGQrKSgsKFxcZCspPyk/XFx9Ly5leGVjKHN0ci5zbGljZShpKSksIG1pbiwgbWF4O1xuICAgICAgICBpZiAocnMgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlcGVhdEVycihpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWluID0gcGFyc2VJbnQocnNbMV0sIDEwKTtcbiAgICAgICAgICBtYXggPSByc1syXSA/IHJzWzNdID8gcGFyc2VJbnQocnNbM10sIDEwKSA6IEluZmluaXR5IDogbWluO1xuICAgICAgICAgIGkgKz0gcnNbMF0ubGVuZ3RoO1xuXG4gICAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVzLlJFUEVUSVRJT04sXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICB2YWx1ZTogbGFzdC5wb3AoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgICAgdHlwZTogdHlwZXMuQ0hBUixcbiAgICAgICAgICAgIHZhbHVlOiAxMjMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJz8nOlxuICAgICAgICBpZiAobGFzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXBlYXRFcnIoaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdC5wdXNoKHtcbiAgICAgICAgICB0eXBlOiB0eXBlcy5SRVBFVElUSU9OLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgdmFsdWU6IGxhc3QucG9wKCksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnKyc6XG4gICAgICAgIGlmIChsYXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJlcGVhdEVycihpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLlJFUEVUSVRJT04sXG4gICAgICAgICAgbWluOiAxLFxuICAgICAgICAgIG1heDogSW5maW5pdHksXG4gICAgICAgICAgdmFsdWU6IGxhc3QucG9wKCksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnKic6XG4gICAgICAgIGlmIChsYXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJlcGVhdEVycihpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0LnB1c2goe1xuICAgICAgICAgIHR5cGU6IHR5cGVzLlJFUEVUSVRJT04sXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogSW5maW5pdHksXG4gICAgICAgICAgdmFsdWU6IGxhc3QucG9wKCksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuXG4gICAgICAvLyBEZWZhdWx0IGlzIGEgY2hhcmFjdGVyIHRoYXQgaXMgbm90IGBcXFtdKCl7fT8rKl4kYC5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxhc3QucHVzaCh7XG4gICAgICAgICAgdHlwZTogdHlwZXMuQ0hBUixcbiAgICAgICAgICB2YWx1ZTogYy5jaGFyQ29kZUF0KDApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFueSBncm91cHMgaGF2ZSBub3QgYmVlbiBjbG9zZWQuXG4gIGlmIChncm91cFN0YWNrLmxlbmd0aCAhPT0gMCkge1xuICAgIHV0aWwuZXJyb3IocmVnZXhwU3RyLCAnVW50ZXJtaW5hdGVkIGdyb3VwJyk7XG4gIH1cblxuICByZXR1cm4gc3RhcnQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy50eXBlcyA9IHR5cGVzO1xuIiwiY29uc3QgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5leHBvcnRzLndvcmRCb3VuZGFyeSA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlBPU0lUSU9OLCB2YWx1ZTogJ2InIH0pO1xuZXhwb3J0cy5ub25Xb3JkQm91bmRhcnkgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5QT1NJVElPTiwgdmFsdWU6ICdCJyB9KTtcbmV4cG9ydHMuYmVnaW4gPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5QT1NJVElPTiwgdmFsdWU6ICdeJyB9KTtcbmV4cG9ydHMuZW5kID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuUE9TSVRJT04sIHZhbHVlOiAnJCcgfSk7XG4iLCJjb25zdCB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcblxuY29uc3QgSU5UUyA9ICgpID0+IFt7IHR5cGU6IHR5cGVzLlJBTkdFICwgZnJvbTogNDgsIHRvOiA1NyB9XTtcblxuY29uc3QgV09SRFMgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogOTUgfSxcbiAgICB7IHR5cGU6IHR5cGVzLlJBTkdFLCBmcm9tOiA5NywgdG86IDEyMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuUkFOR0UsIGZyb206IDY1LCB0bzogOTAgfVxuICBdLmNvbmNhdChJTlRTKCkpO1xufTtcblxuY29uc3QgV0hJVEVTUEFDRSA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA5IH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTAgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMSB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDEyIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTMgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAzMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDE2MCB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDU3NjAgfSxcbiAgICB7IHR5cGU6IHR5cGVzLlJBTkdFLCBmcm9tOiA4MTkyLCB0bzogODIwMiB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMzIH0sXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogODIzOSB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyODcgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMjI4OCB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDY1Mjc5IH1cbiAgXTtcbn07XG5cbmNvbnN0IE5PVEFOWUNIQVIgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyB0eXBlOiB0eXBlcy5DSEFSLCB2YWx1ZTogMTAgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiAxMyB9LFxuICAgIHsgdHlwZTogdHlwZXMuQ0hBUiwgdmFsdWU6IDgyMzIgfSxcbiAgICB7IHR5cGU6IHR5cGVzLkNIQVIsIHZhbHVlOiA4MjMzIH0sXG4gIF07XG59O1xuXG4vLyBQcmVkZWZpbmVkIGNsYXNzIG9iamVjdHMuXG5leHBvcnRzLndvcmRzID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IFdPUkRTKCksIG5vdDogZmFsc2UgfSk7XG5leHBvcnRzLm5vdFdvcmRzID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IFdPUkRTKCksIG5vdDogdHJ1ZSB9KTtcbmV4cG9ydHMuaW50cyA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLlNFVCwgc2V0OiBJTlRTKCksIG5vdDogZmFsc2UgfSk7XG5leHBvcnRzLm5vdEludHMgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogSU5UUygpLCBub3Q6IHRydWUgfSk7XG5leHBvcnRzLndoaXRlc3BhY2UgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5TRVQsIHNldDogV0hJVEVTUEFDRSgpLCBub3Q6IGZhbHNlIH0pO1xuZXhwb3J0cy5ub3RXaGl0ZXNwYWNlID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IFdISVRFU1BBQ0UoKSwgbm90OiB0cnVlIH0pO1xuZXhwb3J0cy5hbnlDaGFyID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuU0VULCBzZXQ6IE5PVEFOWUNIQVIoKSwgbm90OiB0cnVlIH0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFJPT1QgICAgICAgOiAwLFxuICBHUk9VUCAgICAgIDogMSxcbiAgUE9TSVRJT04gICA6IDIsXG4gIFNFVCAgICAgICAgOiAzLFxuICBSQU5HRSAgICAgIDogNCxcbiAgUkVQRVRJVElPTiA6IDUsXG4gIFJFRkVSRU5DRSAgOiA2LFxuICBDSEFSICAgICAgIDogNyxcbn07XG4iLCJjb25zdCB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcbmNvbnN0IHNldHMgID0gcmVxdWlyZSgnLi9zZXRzJyk7XG5cblxuY29uc3QgQ1RSTCA9ICdAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxcXF1eID8nO1xuY29uc3QgU0xTSCA9IHsgJzAnOiAwLCAndCc6IDksICduJzogMTAsICd2JzogMTEsICdmJzogMTIsICdyJzogMTMgfTtcblxuLyoqXG4gKiBGaW5kcyBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb25zIGluIHN0ciBhbmQgY29udmVydCBhbGwgdG9cbiAqIHRoZWlyIHJlc3BlY3RpdmUgY2hhcmFjdGVyc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZXhwb3J0cy5zdHJUb0NoYXJzID0gZnVuY3Rpb24oc3RyKSB7XG4gIC8qIGpzaGludCBtYXhsZW46IGZhbHNlICovXG4gIHZhciBjaGFyc19yZWdleCA9IC8oXFxbXFxcXGJcXF0pfChcXFxcKT9cXFxcKD86dShbQS1GMC05XXs0fSl8eChbQS1GMC05XXsyfSl8KDA/WzAtN117Mn0pfGMoW0BBLVpbXFxcXFxcXV4/XSl8KFswdG52ZnJdKSkvZztcbiAgc3RyID0gc3RyLnJlcGxhY2UoY2hhcnNfcmVnZXgsIGZ1bmN0aW9uKHMsIGIsIGxicywgYTE2LCBiMTYsIGM4LCBkY3RybCwgZXNsc2gpIHtcbiAgICBpZiAobGJzKSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICB2YXIgY29kZSA9IGIgPyA4IDpcbiAgICAgIGExNiAgID8gcGFyc2VJbnQoYTE2LCAxNikgOlxuICAgICAgYjE2ICAgPyBwYXJzZUludChiMTYsIDE2KSA6XG4gICAgICBjOCAgICA/IHBhcnNlSW50KGM4LCAgIDgpIDpcbiAgICAgIGRjdHJsID8gQ1RSTC5pbmRleE9mKGRjdHJsKSA6XG4gICAgICBTTFNIW2VzbHNoXTtcblxuICAgIHZhciBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcblxuICAgIC8vIEVzY2FwZSBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMuXG4gICAgaWYgKC9bW1xcXXt9XiQufD8qKygpXS8udGVzdChjKSkge1xuICAgICAgYyA9ICdcXFxcJyArIGM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG4gIH0pO1xuXG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8qKlxuICogdHVybnMgY2xhc3MgaW50byB0b2tlbnNcbiAqIHJlYWRzIHN0ciB1bnRpbCBpdCBlbmNvdW50ZXJzIGEgXSBub3QgcHJlY2VlZGVkIGJ5IGEgXFxcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge1N0cmluZ30gcmVnZXhwU3RyXG4gKiBAcmV0dXJuIHtBcnJheS48QXJyYXkuPE9iamVjdD4sIE51bWJlcj59XG4gKi9cbmV4cG9ydHMudG9rZW5pemVDbGFzcyA9IChzdHIsIHJlZ2V4cFN0cikgPT4ge1xuICAvKiBqc2hpbnQgbWF4bGVuOiBmYWxzZSAqL1xuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciByZWdleHAgPSAvXFxcXCg/Oih3KXwoZCl8KHMpfChXKXwoRCl8KFMpKXwoKD86KD86XFxcXCkoLil8KFteXFxdXFxcXF0pKS0oPzpcXFxcKT8oW15cXF1dKSl8KFxcXSl8KD86XFxcXCk/KFteXSkvZztcbiAgdmFyIHJzLCBjO1xuXG5cbiAgd2hpbGUgKChycyA9IHJlZ2V4cC5leGVjKHN0cikpICE9IG51bGwpIHtcbiAgICBpZiAocnNbMV0pIHtcbiAgICAgIHRva2Vucy5wdXNoKHNldHMud29yZHMoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzJdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLmludHMoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzNdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLndoaXRlc3BhY2UoKSk7XG5cbiAgICB9IGVsc2UgaWYgKHJzWzRdKSB7XG4gICAgICB0b2tlbnMucHVzaChzZXRzLm5vdFdvcmRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1s1XSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5ub3RJbnRzKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1s2XSkge1xuICAgICAgdG9rZW5zLnB1c2goc2V0cy5ub3RXaGl0ZXNwYWNlKCkpO1xuXG4gICAgfSBlbHNlIGlmIChyc1s3XSkge1xuICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICB0eXBlOiB0eXBlcy5SQU5HRSxcbiAgICAgICAgZnJvbTogKHJzWzhdIHx8IHJzWzldKS5jaGFyQ29kZUF0KDApLFxuICAgICAgICB0bzogcnNbMTBdLmNoYXJDb2RlQXQoMCksXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSBpZiAoKGMgPSByc1sxMl0pKSB7XG4gICAgICB0b2tlbnMucHVzaCh7XG4gICAgICAgIHR5cGU6IHR5cGVzLkNIQVIsXG4gICAgICAgIHZhbHVlOiBjLmNoYXJDb2RlQXQoMCksXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Rva2VucywgcmVnZXhwLmxhc3RJbmRleF07XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0cy5lcnJvcihyZWdleHBTdHIsICdVbnRlcm1pbmF0ZWQgY2hhcmFjdGVyIGNsYXNzJyk7XG59O1xuXG5cbi8qKlxuICogU2hvcnRjdXQgdG8gdGhyb3cgZXJyb3JzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSByZWdleHBcbiAqIEBwYXJhbSB7U3RyaW5nfSBtc2dcbiAqL1xuZXhwb3J0cy5lcnJvciA9IChyZWdleHAsIG1zZykgPT4ge1xuICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0ludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAvJyArIHJlZ2V4cCArICcvOiAnICsgbXNnKTtcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwidmFyIHVucGFyc2UgPSByZXF1aXJlKCdlc2NvZGVnZW4nKS5nZW5lcmF0ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXN0LCB2YXJzKSB7XG4gICAgaWYgKCF2YXJzKSB2YXJzID0ge307XG4gICAgdmFyIEZBSUwgPSB7fTtcbiAgICBcbiAgICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uIHdhbGsgKG5vZGUsIHNjb3BlVmFycykge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSAnTGl0ZXJhbCcpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1VuYXJ5RXhwcmVzc2lvbicpe1xuICAgICAgICAgICAgdmFyIHZhbCA9IHdhbGsobm9kZS5hcmd1bWVudClcbiAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdG9yID09PSAnKycpIHJldHVybiArdmFsXG4gICAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gJy0nKSByZXR1cm4gLXZhbFxuICAgICAgICAgICAgaWYgKG5vZGUub3BlcmF0b3IgPT09ICd+JykgcmV0dXJuIH52YWxcbiAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdG9yID09PSAnIScpIHJldHVybiAhdmFsXG4gICAgICAgICAgICByZXR1cm4gRkFJTFxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0FycmF5RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciB4cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gd2Fsayhub2RlLmVsZW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoeCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICAgICAgeHMucHVzaCh4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB4cztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdPYmplY3RFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIG9iaiA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IG5vZGUucHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBwcm9wLnZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHdhbGsocHJvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgICAgICBvYmpbcHJvcC5rZXkudmFsdWUgfHwgcHJvcC5rZXkubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnQmluYXJ5RXhwcmVzc2lvbicgfHxcbiAgICAgICAgICAgICAgICAgbm9kZS50eXBlID09PSAnTG9naWNhbEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgbCA9IHdhbGsobm9kZS5sZWZ0KTtcbiAgICAgICAgICAgIGlmIChsID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIHZhciByID0gd2Fsayhub2RlLnJpZ2h0KTtcbiAgICAgICAgICAgIGlmIChyID09PSBGQUlMKSByZXR1cm4gRkFJTDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIG9wID0gbm9kZS5vcGVyYXRvcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJz09JykgcmV0dXJuIGwgPT0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJz09PScpIHJldHVybiBsID09PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnIT0nKSByZXR1cm4gbCAhPSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnIT09JykgcmV0dXJuIGwgIT09IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcrJykgcmV0dXJuIGwgKyByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnLScpIHJldHVybiBsIC0gcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyonKSByZXR1cm4gbCAqIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICcvJykgcmV0dXJuIGwgLyByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnJScpIHJldHVybiBsICUgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJzwnKSByZXR1cm4gbCA8IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc8PScpIHJldHVybiBsIDw9IHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICc+JykgcmV0dXJuIGwgPiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnPj0nKSByZXR1cm4gbCA+PSByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnfCcpIHJldHVybiBsIHwgcjtcbiAgICAgICAgICAgIGlmIChvcCA9PT0gJyYnKSByZXR1cm4gbCAmIHI7XG4gICAgICAgICAgICBpZiAob3AgPT09ICdeJykgcmV0dXJuIGwgXiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnJiYnKSByZXR1cm4gbCAmJiByO1xuICAgICAgICAgICAgaWYgKG9wID09PSAnfHwnKSByZXR1cm4gbCB8fCByO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gRkFJTDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdJZGVudGlmaWVyJykge1xuICAgICAgICAgICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFycywgbm9kZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YXJzW25vZGUubmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHJldHVybiBGQUlMO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RoaXNFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFycywgJ3RoaXMnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YXJzWyd0aGlzJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHJldHVybiBGQUlMO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0NhbGxFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIGNhbGxlZSA9IHdhbGsobm9kZS5jYWxsZWUpO1xuICAgICAgICAgICAgaWYgKGNhbGxlZSA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxlZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBjdHggPSBub2RlLmNhbGxlZS5vYmplY3QgPyB3YWxrKG5vZGUuY2FsbGVlLm9iamVjdCkgOiBGQUlMO1xuICAgICAgICAgICAgaWYgKGN0eCA9PT0gRkFJTCkgY3R4ID0gbnVsbDtcblxuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5hcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHggPSB3YWxrKG5vZGUuYXJndW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoeCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNhbGxlZS5hcHBseShjdHgsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICB2YXIgb2JqID0gd2Fsayhub2RlLm9iamVjdCk7XG4gICAgICAgICAgICAvLyBkbyBub3QgYWxsb3cgYWNjZXNzIHRvIG1ldGhvZHMgb24gRnVuY3Rpb24gXG4gICAgICAgICAgICBpZigob2JqID09PSBGQUlMKSB8fCAodHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqW25vZGUucHJvcGVydHkubmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcHJvcCA9IHdhbGsobm9kZS5wcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gRkFJTCkgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSB3YWxrKG5vZGUudGVzdClcbiAgICAgICAgICAgIGlmICh2YWwgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgcmV0dXJuIHZhbCA/IHdhbGsobm9kZS5jb25zZXF1ZW50KSA6IHdhbGsobm9kZS5hbHRlcm5hdGUpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnRXhwcmVzc2lvblN0YXRlbWVudCcpIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSB3YWxrKG5vZGUuZXhwcmVzc2lvbilcbiAgICAgICAgICAgIGlmICh2YWwgPT09IEZBSUwpIHJldHVybiBGQUlMO1xuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdSZXR1cm5TdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Fsayhub2RlLmFyZ3VtZW50KVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIGJvZGllcyA9IG5vZGUuYm9keS5ib2R5O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBcInNjb3BlXCIgZm9yIG91ciBhcmd1bWVudHNcbiAgICAgICAgICAgIHZhciBvbGRWYXJzID0ge307XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh2YXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQpe1xuICAgICAgICAgICAgICAgIG9sZFZhcnNbZWxlbWVudF0gPSB2YXJzW2VsZW1lbnRdO1xuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbm9kZS5wYXJhbXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICBpZihrZXkudHlwZSA9PSAnSWRlbnRpZmllcicpe1xuICAgICAgICAgICAgICAgICAgdmFyc1trZXkubmFtZV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yKHZhciBpIGluIGJvZGllcyl7XG4gICAgICAgICAgICAgICAgaWYod2Fsayhib2RpZXNbaV0pID09PSBGQUlMKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVzdG9yZSB0aGUgdmFycyBhbmQgc2NvcGUgYWZ0ZXIgd2Ugd2Fsa1xuICAgICAgICAgICAgdmFycyA9IG9sZFZhcnM7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModmFycyk7XG4gICAgICAgICAgICB2YXIgdmFscyA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YXJzW2tleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbihrZXlzLmpvaW4oJywgJyksICdyZXR1cm4gJyArIHVucGFyc2Uobm9kZSkpLmFwcGx5KG51bGwsIHZhbHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ1RlbXBsYXRlTGl0ZXJhbCcpIHtcbiAgICAgICAgICAgIHZhciBzdHIgPSAnJztcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5leHByZXNzaW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHN0ciArPSB3YWxrKG5vZGUucXVhc2lzW2ldKTtcbiAgICAgICAgICAgICAgICBzdHIgKz0gd2Fsayhub2RlLmV4cHJlc3Npb25zW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0ciArPSB3YWxrKG5vZGUucXVhc2lzW2ldKTtcbiAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgdmFyIHRhZyA9IHdhbGsobm9kZS50YWcpO1xuICAgICAgICAgICAgdmFyIHF1YXNpID0gbm9kZS5xdWFzaTtcbiAgICAgICAgICAgIHZhciBzdHJpbmdzID0gcXVhc2kucXVhc2lzLm1hcCh3YWxrKTtcbiAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBxdWFzaS5leHByZXNzaW9ucy5tYXAod2Fsayk7XG4gICAgICAgICAgICByZXR1cm4gdGFnLmFwcGx5KG51bGwsIFtzdHJpbmdzXS5jb25jYXQodmFsdWVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAnVGVtcGxhdGVFbGVtZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUuY29va2VkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgcmV0dXJuIEZBSUw7XG4gICAgfSkoYXN0KTtcbiAgICBcbiAgICByZXR1cm4gcmVzdWx0ID09PSBGQUlMID8gdW5kZWZpbmVkIDogcmVzdWx0O1xufTtcbiIsIi8qXG4gIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDE1IEluZ3ZhciBTdGVwYW55YW4gPG1lQHJyZXZlcnNlci5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxNCBJdmFuIE5pa3VsaW4gPGlmYWFhbkBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE1pY2hhZWwgRmljYXJyYSA8ZXNjb2RlZ2VuLmNvcHlyaWdodEBtaWNoYWVsLmZpY2FycmEubWU+XG4gIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2kuYmU+XG4gIENvcHlyaWdodCAoQykgMjAxMyBJcmFrbGkgR296YWxpc2h2aWxpIDxyZm9iaWNAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgUm9iZXJ0IEd1c3QtQmFyZG9uIDxkb25hdGVAcm9iZXJ0Lmd1c3QtYmFyZG9uLm9yZz5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEpvaG4gRnJlZW1hbiA8amZyZWVtYW4wOEBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPlxuICBDb3B5cmlnaHQgKEMpIDIwMTIgSm9vc3QtV2ltIEJvZWtlc3RlaWpuIDxqb29zdC13aW1AYm9la2VzdGVpam4ubmw+XG4gIENvcHlyaWdodCAoQykgMjAxMiBLcmlzIEtvd2FsIDxrcmlzLmtvd2FsQGNpeGFyLmNvbT5cbiAgQ29weXJpZ2h0IChDKSAyMDEyIEFycGFkIEJvcnNvcyA8YXJwYWQuYm9yc29zQGdvb2dsZW1haWwuY29tPlxuXG4gIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0VcbiAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWVxuICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG4gIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORFxuICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG5cbi8qZ2xvYmFsIGV4cG9ydHM6dHJ1ZSwgcmVxdWlyZTp0cnVlLCBnbG9iYWw6dHJ1ZSovXG4oZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBTeW50YXgsXG4gICAgICAgIFByZWNlZGVuY2UsXG4gICAgICAgIEJpbmFyeVByZWNlZGVuY2UsXG4gICAgICAgIFNvdXJjZU5vZGUsXG4gICAgICAgIGVzdHJhdmVyc2UsXG4gICAgICAgIGVzdXRpbHMsXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAganNvbixcbiAgICAgICAgcmVudW1iZXIsXG4gICAgICAgIGhleGFkZWNpbWFsLFxuICAgICAgICBxdW90ZXMsXG4gICAgICAgIGVzY2FwZWxlc3MsXG4gICAgICAgIG5ld2xpbmUsXG4gICAgICAgIHNwYWNlLFxuICAgICAgICBwYXJlbnRoZXNlcyxcbiAgICAgICAgc2VtaWNvbG9ucyxcbiAgICAgICAgc2FmZUNvbmNhdGVuYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZSxcbiAgICAgICAgZXh0cmEsXG4gICAgICAgIHBhcnNlLFxuICAgICAgICBzb3VyY2VNYXAsXG4gICAgICAgIHNvdXJjZUNvZGUsXG4gICAgICAgIHByZXNlcnZlQmxhbmtMaW5lcyxcbiAgICAgICAgRk9STUFUX01JTklGWSxcbiAgICAgICAgRk9STUFUX0RFRkFVTFRTO1xuXG4gICAgZXN0cmF2ZXJzZSA9IHJlcXVpcmUoJ2VzdHJhdmVyc2UnKTtcbiAgICBlc3V0aWxzID0gcmVxdWlyZSgnZXN1dGlscycpO1xuXG4gICAgU3ludGF4ID0gZXN0cmF2ZXJzZS5TeW50YXg7XG5cbiAgICAvLyBHZW5lcmF0aW9uIGlzIGRvbmUgYnkgZ2VuZXJhdGVFeHByZXNzaW9uLlxuICAgIGZ1bmN0aW9uIGlzRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIHJldHVybiBDb2RlR2VuZXJhdG9yLkV4cHJlc3Npb24uaGFzT3duUHJvcGVydHkobm9kZS50eXBlKTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0aW9uIGlzIGRvbmUgYnkgZ2VuZXJhdGVTdGF0ZW1lbnQuXG4gICAgZnVuY3Rpb24gaXNTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICByZXR1cm4gQ29kZUdlbmVyYXRvci5TdGF0ZW1lbnQuaGFzT3duUHJvcGVydHkobm9kZS50eXBlKTtcbiAgICB9XG5cbiAgICBQcmVjZWRlbmNlID0ge1xuICAgICAgICBTZXF1ZW5jZTogMCxcbiAgICAgICAgWWllbGQ6IDEsXG4gICAgICAgIEF3YWl0OiAxLFxuICAgICAgICBBc3NpZ25tZW50OiAxLFxuICAgICAgICBDb25kaXRpb25hbDogMixcbiAgICAgICAgQXJyb3dGdW5jdGlvbjogMixcbiAgICAgICAgTG9naWNhbE9SOiAzLFxuICAgICAgICBMb2dpY2FsQU5EOiA0LFxuICAgICAgICBCaXR3aXNlT1I6IDUsXG4gICAgICAgIEJpdHdpc2VYT1I6IDYsXG4gICAgICAgIEJpdHdpc2VBTkQ6IDcsXG4gICAgICAgIEVxdWFsaXR5OiA4LFxuICAgICAgICBSZWxhdGlvbmFsOiA5LFxuICAgICAgICBCaXR3aXNlU0hJRlQ6IDEwLFxuICAgICAgICBBZGRpdGl2ZTogMTEsXG4gICAgICAgIE11bHRpcGxpY2F0aXZlOiAxMixcbiAgICAgICAgVW5hcnk6IDEzLFxuICAgICAgICBQb3N0Zml4OiAxNCxcbiAgICAgICAgQ2FsbDogMTUsXG4gICAgICAgIE5ldzogMTYsXG4gICAgICAgIFRhZ2dlZFRlbXBsYXRlOiAxNyxcbiAgICAgICAgTWVtYmVyOiAxOCxcbiAgICAgICAgUHJpbWFyeTogMTlcbiAgICB9O1xuXG4gICAgQmluYXJ5UHJlY2VkZW5jZSA9IHtcbiAgICAgICAgJ3x8JzogUHJlY2VkZW5jZS5Mb2dpY2FsT1IsXG4gICAgICAgICcmJic6IFByZWNlZGVuY2UuTG9naWNhbEFORCxcbiAgICAgICAgJ3wnOiBQcmVjZWRlbmNlLkJpdHdpc2VPUixcbiAgICAgICAgJ14nOiBQcmVjZWRlbmNlLkJpdHdpc2VYT1IsXG4gICAgICAgICcmJzogUHJlY2VkZW5jZS5CaXR3aXNlQU5ELFxuICAgICAgICAnPT0nOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnIT0nOiBQcmVjZWRlbmNlLkVxdWFsaXR5LFxuICAgICAgICAnPT09JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJyE9PSc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICdpcyc6IFByZWNlZGVuY2UuRXF1YWxpdHksXG4gICAgICAgICdpc250JzogUHJlY2VkZW5jZS5FcXVhbGl0eSxcbiAgICAgICAgJzwnOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICc+JzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnPD0nOiBQcmVjZWRlbmNlLlJlbGF0aW9uYWwsXG4gICAgICAgICc+PSc6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJ2luJzogUHJlY2VkZW5jZS5SZWxhdGlvbmFsLFxuICAgICAgICAnaW5zdGFuY2VvZic6IFByZWNlZGVuY2UuUmVsYXRpb25hbCxcbiAgICAgICAgJzw8JzogUHJlY2VkZW5jZS5CaXR3aXNlU0hJRlQsXG4gICAgICAgICc+Pic6IFByZWNlZGVuY2UuQml0d2lzZVNISUZULFxuICAgICAgICAnPj4+JzogUHJlY2VkZW5jZS5CaXR3aXNlU0hJRlQsXG4gICAgICAgICcrJzogUHJlY2VkZW5jZS5BZGRpdGl2ZSxcbiAgICAgICAgJy0nOiBQcmVjZWRlbmNlLkFkZGl0aXZlLFxuICAgICAgICAnKic6IFByZWNlZGVuY2UuTXVsdGlwbGljYXRpdmUsXG4gICAgICAgICclJzogUHJlY2VkZW5jZS5NdWx0aXBsaWNhdGl2ZSxcbiAgICAgICAgJy8nOiBQcmVjZWRlbmNlLk11bHRpcGxpY2F0aXZlXG4gICAgfTtcblxuICAgIC8vRmxhZ3NcbiAgICB2YXIgRl9BTExPV19JTiA9IDEsXG4gICAgICAgIEZfQUxMT1dfQ0FMTCA9IDEgPDwgMSxcbiAgICAgICAgRl9BTExPV19VTlBBUkFUSF9ORVcgPSAxIDw8IDIsXG4gICAgICAgIEZfRlVOQ19CT0RZID0gMSA8PCAzLFxuICAgICAgICBGX0RJUkVDVElWRV9DVFggPSAxIDw8IDQsXG4gICAgICAgIEZfU0VNSUNPTE9OX09QVCA9IDEgPDwgNTtcblxuICAgIC8vRXhwcmVzc2lvbiBmbGFnIHNldHNcbiAgICAvL05PVEU6IEZsYWcgb3JkZXI6XG4gICAgLy8gRl9BTExPV19JTlxuICAgIC8vIEZfQUxMT1dfQ0FMTFxuICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXXG4gICAgdmFyIEVfRlRUID0gRl9BTExPV19DQUxMIHwgRl9BTExPV19VTlBBUkFUSF9ORVcsXG4gICAgICAgIEVfVFRGID0gRl9BTExPV19JTiB8IEZfQUxMT1dfQ0FMTCxcbiAgICAgICAgRV9UVFQgPSBGX0FMTE9XX0lOIHwgRl9BTExPV19DQUxMIHwgRl9BTExPV19VTlBBUkFUSF9ORVcsXG4gICAgICAgIEVfVEZGID0gRl9BTExPV19JTixcbiAgICAgICAgRV9GRlQgPSBGX0FMTE9XX1VOUEFSQVRIX05FVyxcbiAgICAgICAgRV9URlQgPSBGX0FMTE9XX0lOIHwgRl9BTExPV19VTlBBUkFUSF9ORVc7XG5cbiAgICAvL1N0YXRlbWVudCBmbGFnIHNldHNcbiAgICAvL05PVEU6IEZsYWcgb3JkZXI6XG4gICAgLy8gRl9BTExPV19JTlxuICAgIC8vIEZfRlVOQ19CT0RZXG4gICAgLy8gRl9ESVJFQ1RJVkVfQ1RYXG4gICAgLy8gRl9TRU1JQ09MT05fT1BUXG4gICAgdmFyIFNfVEZGRiA9IEZfQUxMT1dfSU4sXG4gICAgICAgIFNfVEZGVCA9IEZfQUxMT1dfSU4gfCBGX1NFTUlDT0xPTl9PUFQsXG4gICAgICAgIFNfRkZGRiA9IDB4MDAsXG4gICAgICAgIFNfVEZURiA9IEZfQUxMT1dfSU4gfCBGX0RJUkVDVElWRV9DVFgsXG4gICAgICAgIFNfVFRGRiA9IEZfQUxMT1dfSU4gfCBGX0ZVTkNfQk9EWTtcblxuICAgIGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICAgICAgICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGVudDogbnVsbCxcbiAgICAgICAgICAgIGJhc2U6IG51bGwsXG4gICAgICAgICAgICBwYXJzZTogbnVsbCxcbiAgICAgICAgICAgIGNvbW1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZm9ybWF0OiB7XG4gICAgICAgICAgICAgICAgaW5kZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnICAgICcsXG4gICAgICAgICAgICAgICAgICAgIGJhc2U6IDAsXG4gICAgICAgICAgICAgICAgICAgIGFkanVzdE11bHRpbGluZUNvbW1lbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuZXdsaW5lOiAnXFxuJyxcbiAgICAgICAgICAgICAgICBzcGFjZTogJyAnLFxuICAgICAgICAgICAgICAgIGpzb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlbnVtYmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcXVvdGVzOiAnc2luZ2xlJyxcbiAgICAgICAgICAgICAgICBlc2NhcGVsZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb21wYWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRoZXNlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZW1pY29sb25zOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNhZmVDb25jYXRlbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwcmVzZXJ2ZUJsYW5rTGluZXM6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW96OiB7XG4gICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbkV4cHJlc3Npb25TdGFydHNXaXRoQXNzaWdubWVudDogZmFsc2UsXG4gICAgICAgICAgICAgICAgc3Rhcmxlc3NHZW5lcmF0b3I6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc291cmNlTWFwOiBudWxsLFxuICAgICAgICAgICAgc291cmNlTWFwUm9vdDogbnVsbCxcbiAgICAgICAgICAgIHNvdXJjZU1hcFdpdGhDb2RlOiBmYWxzZSxcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICByYXc6IHRydWUsXG4gICAgICAgICAgICB2ZXJiYXRpbTogbnVsbCxcbiAgICAgICAgICAgIHNvdXJjZUNvZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdHJpbmdSZXBlYXQoc3RyLCBudW0pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gICAgICAgIGZvciAobnVtIHw9IDA7IG51bSA+IDA7IG51bSA+Pj49IDEsIHN0ciArPSBzdHIpIHtcbiAgICAgICAgICAgIGlmIChudW0gJiAxKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHN0cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzTGluZVRlcm1pbmF0b3Ioc3RyKSB7XG4gICAgICAgIHJldHVybiAoL1tcXHJcXG5dL2cpLnRlc3Qoc3RyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHN0cikge1xuICAgICAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGxlbiAmJiBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihzdHIuY2hhckNvZGVBdChsZW4gLSAxKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2UodGFyZ2V0LCBvdmVycmlkZSkge1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvdmVycmlkZSkge1xuICAgICAgICAgICAgaWYgKG92ZXJyaWRlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVEZWVwbHkodGFyZ2V0LCBvdmVycmlkZSkge1xuICAgICAgICB2YXIga2V5LCB2YWw7XG5cbiAgICAgICAgZnVuY3Rpb24gaXNIYXNoT2JqZWN0KHRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIFJlZ0V4cCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGtleSBpbiBvdmVycmlkZSkge1xuICAgICAgICAgICAgaWYgKG92ZXJyaWRlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBvdmVycmlkZVtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChpc0hhc2hPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIYXNoT2JqZWN0KHRhcmdldFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGVlcGx5KHRhcmdldFtrZXldLCB2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSB1cGRhdGVEZWVwbHkoe30sIHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZU51bWJlcih2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0LCBwb2ludCwgdGVtcCwgZXhwb25lbnQsIHBvcztcblxuICAgICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWVyaWMgbGl0ZXJhbCB3aG9zZSB2YWx1ZSBpcyBOYU4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOdW1lcmljIGxpdGVyYWwgd2hvc2UgdmFsdWUgaXMgbmVnYXRpdmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMSAvIDApIHtcbiAgICAgICAgICAgIHJldHVybiBqc29uID8gJ251bGwnIDogcmVudW1iZXIgPyAnMWU0MDAnIDogJzFlKzQwMCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgPSAnJyArIHZhbHVlO1xuICAgICAgICBpZiAoIXJlbnVtYmVyIHx8IHJlc3VsdC5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnQgPSByZXN1bHQuaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoIWpzb24gJiYgcmVzdWx0LmNoYXJDb2RlQXQoMCkgPT09IDB4MzAgIC8qIDAgKi8gJiYgcG9pbnQgPT09IDEpIHtcbiAgICAgICAgICAgIHBvaW50ID0gMDtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wID0gcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgnZSsnLCAnZScpO1xuICAgICAgICBleHBvbmVudCA9IDA7XG4gICAgICAgIGlmICgocG9zID0gdGVtcC5pbmRleE9mKCdlJykpID4gMCkge1xuICAgICAgICAgICAgZXhwb25lbnQgPSArdGVtcC5zbGljZShwb3MgKyAxKTtcbiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLnNsaWNlKDAsIHBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvaW50ID49IDApIHtcbiAgICAgICAgICAgIGV4cG9uZW50IC09IHRlbXAubGVuZ3RoIC0gcG9pbnQgLSAxO1xuICAgICAgICAgICAgdGVtcCA9ICsodGVtcC5zbGljZSgwLCBwb2ludCkgKyB0ZW1wLnNsaWNlKHBvaW50ICsgMSkpICsgJyc7XG4gICAgICAgIH1cbiAgICAgICAgcG9zID0gMDtcbiAgICAgICAgd2hpbGUgKHRlbXAuY2hhckNvZGVBdCh0ZW1wLmxlbmd0aCArIHBvcyAtIDEpID09PSAweDMwICAvKiAwICovKSB7XG4gICAgICAgICAgICAtLXBvcztcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zICE9PSAwKSB7XG4gICAgICAgICAgICBleHBvbmVudCAtPSBwb3M7XG4gICAgICAgICAgICB0ZW1wID0gdGVtcC5zbGljZSgwLCBwb3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHBvbmVudCAhPT0gMCkge1xuICAgICAgICAgICAgdGVtcCArPSAnZScgKyBleHBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRlbXAubGVuZ3RoIDwgcmVzdWx0Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgICAgICAoaGV4YWRlY2ltYWwgJiYgdmFsdWUgPiAxZTEyICYmIE1hdGguZmxvb3IodmFsdWUpID09PSB2YWx1ZSAmJiAodGVtcCA9ICcweCcgKyB2YWx1ZS50b1N0cmluZygxNikpLmxlbmd0aCA8IHJlc3VsdC5sZW5ndGgpKSAmJlxuICAgICAgICAgICAgICAgICt0ZW1wID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgdmFsaWQgUmVnRXhwIGV4cHJlc3Npb24uXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vQ29uc3RlbGxhdGlvbi9pdiBFbmdpbmVcblxuICAgIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cENoYXJhY3RlcihjaCwgcHJldmlvdXNJc0JhY2tzbGFzaCkge1xuICAgICAgICAvLyBub3QgaGFuZGxpbmcgJ1xcJyBhbmQgaGFuZGxpbmcgXFx1MjAyOCBvciBcXHUyMDI5IHRvIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlXG4gICAgICAgIGlmICgoY2ggJiB+MSkgPT09IDB4MjAyOCkge1xuICAgICAgICAgICAgcmV0dXJuIChwcmV2aW91c0lzQmFja3NsYXNoID8gJ3UnIDogJ1xcXFx1JykgKyAoKGNoID09PSAweDIwMjgpID8gJzIwMjgnIDogJzIwMjknKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMTAgfHwgY2ggPT09IDEzKSB7ICAvLyBcXG4sIFxcclxuICAgICAgICAgICAgcmV0dXJuIChwcmV2aW91c0lzQmFja3NsYXNoID8gJycgOiAnXFxcXCcpICsgKChjaCA9PT0gMTApID8gJ24nIDogJ3InKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVSZWdFeHAocmVnKSB7XG4gICAgICAgIHZhciBtYXRjaCwgcmVzdWx0LCBmbGFncywgaSwgaXosIGNoLCBjaGFyYWN0ZXJJbkJyYWNrLCBwcmV2aW91c0lzQmFja3NsYXNoO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlZy50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChyZWcuc291cmNlKSB7XG4gICAgICAgICAgICAvLyBleHRyYWN0IGZsYWcgZnJvbSB0b1N0cmluZyByZXN1bHRcbiAgICAgICAgICAgIG1hdGNoID0gcmVzdWx0Lm1hdGNoKC9cXC8oW14vXSopJC8pO1xuICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZsYWdzID0gbWF0Y2hbMV07XG4gICAgICAgICAgICByZXN1bHQgPSAnJztcblxuICAgICAgICAgICAgY2hhcmFjdGVySW5CcmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgcHJldmlvdXNJc0JhY2tzbGFzaCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSByZWcuc291cmNlLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICBjaCA9IHJlZy5zb3VyY2UuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNJc0JhY2tzbGFzaCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVySW5CcmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSA5MykgeyAgLy8gXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckluQnJhY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gNDcpIHsgIC8vIC9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gOTEpIHsgIC8vIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJyYWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gZXNjYXBlUmVnRXhwQ2hhcmFjdGVyKGNoLCBwcmV2aW91c0lzQmFja3NsYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJc0JhY2tzbGFzaCA9IGNoID09PSA5MjsgIC8vIFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbmV3IFJlZ0V4cChcIlxcXFxcXG4nKSBpcyBwcm92aWRlZCwgY3JlYXRlIC9cXG4vXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBlc2NhcGVSZWdFeHBDaGFyYWN0ZXIoY2gsIHByZXZpb3VzSXNCYWNrc2xhc2gpO1xuICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGxpa2UgL1xcXFxbL10vXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSXNCYWNrc2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAnLycgKyByZXN1bHQgKyAnLycgKyBmbGFncztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXNjYXBlQWxsb3dlZENoYXJhY3Rlcihjb2RlLCBuZXh0KSB7XG4gICAgICAgIHZhciBoZXg7XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MDggIC8qIFxcYiAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcYic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwQyAgLyogXFxmICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxmJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDA5ICAvKiBcXHQgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaGV4ID0gY29kZS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKGpzb24gfHwgY29kZSA+IDB4RkYpIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHUnICsgJzAwMDAnLnNsaWNlKGhleC5sZW5ndGgpICsgaGV4O1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MDAwMCAmJiAhZXN1dGlscy5jb2RlLmlzRGVjaW1hbERpZ2l0KG5leHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFwwJztcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDAwMEIgIC8qIFxcdiAqLykgeyAvLyAnXFx2J1xuICAgICAgICAgICAgcmV0dXJuICdcXFxceDBCJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHgnICsgJzAwJy5zbGljZShoZXgubGVuZ3RoKSArIGhleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVzY2FwZURpc2FsbG93ZWRDaGFyYWN0ZXIoY29kZSkge1xuICAgICAgICBpZiAoY29kZSA9PT0gMHg1QyAgLyogXFwgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXFxcXFwnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IDB4MEEgIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcbic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gMHgwRCAgLyogXFxyICovKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcXFxyJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDIwMjgpIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHUyMDI4JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSAweDIwMjkpIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxcXHUyMDI5JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0bHkgY2xhc3NpZmllZCBjaGFyYWN0ZXInKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlc2NhcGVEaXJlY3RpdmUoc3RyKSB7XG4gICAgICAgIHZhciBpLCBpeiwgY29kZSwgcXVvdGU7XG5cbiAgICAgICAgcXVvdGUgPSBxdW90ZXMgPT09ICdkb3VibGUnID8gJ1wiJyA6ICdcXCcnO1xuICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0ci5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyNyAgLyogJyAqLykge1xuICAgICAgICAgICAgICAgIHF1b3RlID0gJ1wiJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHgyMiAgLyogXCIgKi8pIHtcbiAgICAgICAgICAgICAgICBxdW90ZSA9ICdcXCcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDVDICAvKiBcXCAqLykge1xuICAgICAgICAgICAgICAgICsraTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdW90ZSArIHN0ciArIHF1b3RlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVzY2FwZVN0cmluZyhzdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnLCBpLCBsZW4sIGNvZGUsIHNpbmdsZVF1b3RlcyA9IDAsIGRvdWJsZVF1b3RlcyA9IDAsIHNpbmdsZSwgcXVvdGU7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyNyAgLyogJyAqLykge1xuICAgICAgICAgICAgICAgICsrc2luZ2xlUXVvdGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDIyICAvKiBcIiAqLykge1xuICAgICAgICAgICAgICAgICsrZG91YmxlUXVvdGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDJGICAvKiAvICovICYmIGpzb24pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihjb2RlKSB8fCBjb2RlID09PSAweDVDICAvKiBcXCAqLykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBlc2NhcGVEaXNhbGxvd2VkQ2hhcmFjdGVyKGNvZGUpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUoY29kZSkgJiYgKGpzb24gJiYgY29kZSA8IDB4MjAgIC8qIFNQICovIHx8ICFqc29uICYmICFlc2NhcGVsZXNzICYmIChjb2RlIDwgMHgyMCAgLyogU1AgKi8gfHwgY29kZSA+IDB4N0UgIC8qIH4gKi8pKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBlc2NhcGVBbGxvd2VkQ2hhcmFjdGVyKGNvZGUsIHN0ci5jaGFyQ29kZUF0KGkgKyAxKSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNpbmdsZSA9ICEocXVvdGVzID09PSAnZG91YmxlJyB8fCAocXVvdGVzID09PSAnYXV0bycgJiYgZG91YmxlUXVvdGVzIDwgc2luZ2xlUXVvdGVzKSk7XG4gICAgICAgIHF1b3RlID0gc2luZ2xlID8gJ1xcJycgOiAnXCInO1xuXG4gICAgICAgIGlmICghKHNpbmdsZSA/IHNpbmdsZVF1b3RlcyA6IGRvdWJsZVF1b3RlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBxdW90ZSArIHJlc3VsdCArIHF1b3RlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RyID0gcmVzdWx0O1xuICAgICAgICByZXN1bHQgPSBxdW90ZTtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGlmICgoY29kZSA9PT0gMHgyNyAgLyogJyAqLyAmJiBzaW5nbGUpIHx8IChjb2RlID09PSAweDIyICAvKiBcIiAqLyAmJiAhc2luZ2xlKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXFxcXCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQgKyBxdW90ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmbGF0dGVuIGFuIGFycmF5IHRvIGEgc3RyaW5nLCB3aGVyZSB0aGUgYXJyYXkgY2FuIGNvbnRhaW5cbiAgICAgKiBlaXRoZXIgc3RyaW5ncyBvciBuZXN0ZWQgYXJyYXlzXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlblRvU3RyaW5nKGFycikge1xuICAgICAgICB2YXIgaSwgaXosIGVsZW0sIHJlc3VsdCA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGFyci5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICBlbGVtID0gYXJyW2ldO1xuICAgICAgICAgICAgcmVzdWx0ICs9IEFycmF5LmlzQXJyYXkoZWxlbSkgPyBmbGF0dGVuVG9TdHJpbmcoZWxlbSkgOiBlbGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBnZW5lcmF0ZWQgdG8gYSBTb3VyY2VOb2RlIHdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChnZW5lcmF0ZWQsIG5vZGUpIHtcbiAgICAgICAgaWYgKCFzb3VyY2VNYXApIHtcbiAgICAgICAgICAgIC8vIHdpdGggbm8gc291cmNlIG1hcHMsIGdlbmVyYXRlZCBpcyBlaXRoZXIgYW5cbiAgICAgICAgICAgIC8vIGFycmF5IG9yIGEgc3RyaW5nLiAgaWYgYW4gYXJyYXksIGZsYXR0ZW4gaXQuXG4gICAgICAgICAgICAvLyBpZiBhIHN0cmluZywganVzdCByZXR1cm4gaXRcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdlbmVyYXRlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmxhdHRlblRvU3RyaW5nKGdlbmVyYXRlZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGdlbmVyYXRlZCBpbnN0YW5jZW9mIFNvdXJjZU5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUubG9jID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU291cmNlTm9kZShudWxsLCBudWxsLCBzb3VyY2VNYXAsIGdlbmVyYXRlZCwgbm9kZS5uYW1lIHx8IG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU291cmNlTm9kZShub2RlLmxvYy5zdGFydC5saW5lLCBub2RlLmxvYy5zdGFydC5jb2x1bW4sIChzb3VyY2VNYXAgPT09IHRydWUgPyBub2RlLmxvYy5zb3VyY2UgfHwgbnVsbCA6IHNvdXJjZU1hcCksIGdlbmVyYXRlZCwgbm9kZS5uYW1lIHx8IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vRW1wdHlTcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIChzcGFjZSkgPyBzcGFjZSA6ICcgJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBqb2luKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHZhciBsZWZ0U291cmNlLFxuICAgICAgICAgICAgcmlnaHRTb3VyY2UsXG4gICAgICAgICAgICBsZWZ0Q2hhckNvZGUsXG4gICAgICAgICAgICByaWdodENoYXJDb2RlO1xuXG4gICAgICAgIGxlZnRTb3VyY2UgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGxlZnQpLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChsZWZ0U291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtyaWdodF07XG4gICAgICAgIH1cblxuICAgICAgICByaWdodFNvdXJjZSA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmlnaHQpLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChyaWdodFNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbbGVmdF07XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0Q2hhckNvZGUgPSBsZWZ0U291cmNlLmNoYXJDb2RlQXQobGVmdFNvdXJjZS5sZW5ndGggLSAxKTtcbiAgICAgICAgcmlnaHRDaGFyQ29kZSA9IHJpZ2h0U291cmNlLmNoYXJDb2RlQXQoMCk7XG5cbiAgICAgICAgaWYgKChsZWZ0Q2hhckNvZGUgPT09IDB4MkIgIC8qICsgKi8gfHwgbGVmdENoYXJDb2RlID09PSAweDJEICAvKiAtICovKSAmJiBsZWZ0Q2hhckNvZGUgPT09IHJpZ2h0Q2hhckNvZGUgfHxcbiAgICAgICAgICAgIGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGxlZnRDaGFyQ29kZSkgJiYgZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUocmlnaHRDaGFyQ29kZSkgfHxcbiAgICAgICAgICAgIGxlZnRDaGFyQ29kZSA9PT0gMHgyRiAgLyogLyAqLyAmJiByaWdodENoYXJDb2RlID09PSAweDY5ICAvKiBpICovKSB7IC8vIGluZml4IHdvcmQgb3BlcmF0b3JzIGFsbCBzdGFydCB3aXRoIGBpYFxuICAgICAgICAgICAgcmV0dXJuIFtsZWZ0LCBub0VtcHR5U3BhY2UoKSwgcmlnaHRdO1xuICAgICAgICB9IGVsc2UgaWYgKGVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UobGVmdENoYXJDb2RlKSB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihsZWZ0Q2hhckNvZGUpIHx8XG4gICAgICAgICAgICAgICAgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShyaWdodENoYXJDb2RlKSB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihyaWdodENoYXJDb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtsZWZ0LCByaWdodF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtsZWZ0LCBzcGFjZSwgcmlnaHRdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEluZGVudChzdG10KSB7XG4gICAgICAgIHJldHVybiBbYmFzZSwgc3RtdF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2l0aEluZGVudChmbikge1xuICAgICAgICB2YXIgcHJldmlvdXNCYXNlO1xuICAgICAgICBwcmV2aW91c0Jhc2UgPSBiYXNlO1xuICAgICAgICBiYXNlICs9IGluZGVudDtcbiAgICAgICAgZm4oYmFzZSk7XG4gICAgICAgIGJhc2UgPSBwcmV2aW91c0Jhc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlU3BhY2VzKHN0cikge1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgZm9yIChpID0gc3RyLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICBpZiAoZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3Ioc3RyLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChzdHIubGVuZ3RoIC0gMSkgLSBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkanVzdE11bHRpbGluZUNvbW1lbnQodmFsdWUsIHNwZWNpYWxCYXNlKSB7XG4gICAgICAgIHZhciBhcnJheSwgaSwgbGVuLCBsaW5lLCBqLCBzcGFjZXMsIHByZXZpb3VzQmFzZSwgc247XG5cbiAgICAgICAgYXJyYXkgPSB2YWx1ZS5zcGxpdCgvXFxyXFxufFtcXHJcXG5dLyk7XG4gICAgICAgIHNwYWNlcyA9IE51bWJlci5NQVhfVkFMVUU7XG5cbiAgICAgICAgLy8gZmlyc3QgbGluZSBkb2Vzbid0IGhhdmUgaW5kZW50YXRpb25cbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIGxpbmUgPSBhcnJheVtpXTtcbiAgICAgICAgICAgIGogPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGogPCBsaW5lLmxlbmd0aCAmJiBlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGxpbmUuY2hhckNvZGVBdChqKSkpIHtcbiAgICAgICAgICAgICAgICArK2o7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3BhY2VzID4gaikge1xuICAgICAgICAgICAgICAgIHNwYWNlcyA9IGo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHNwZWNpYWxCYXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gcGF0dGVybiBsaWtlXG4gICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAvLyAgIHZhciB0ID0gMjA7ICAvKlxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICogdGhpcyBpcyBjb21tZW50XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHByZXZpb3VzQmFzZSA9IGJhc2U7XG4gICAgICAgICAgICBpZiAoYXJyYXlbMV1bc3BhY2VzXSA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgc3BlY2lhbEJhc2UgKz0gJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmFzZSA9IHNwZWNpYWxCYXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNwYWNlcyAmIDEpIHtcbiAgICAgICAgICAgICAgICAvLyAvKlxuICAgICAgICAgICAgICAgIC8vICAqXG4gICAgICAgICAgICAgICAgLy8gICovXG4gICAgICAgICAgICAgICAgLy8gSWYgc3BhY2VzIGFyZSBvZGQgbnVtYmVyLCBhYm92ZSBwYXR0ZXJuIGlzIGNvbnNpZGVyZWQuXG4gICAgICAgICAgICAgICAgLy8gV2Ugd2FzdGUgMSBzcGFjZS5cbiAgICAgICAgICAgICAgICAtLXNwYWNlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZpb3VzQmFzZSA9IGJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgc24gPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKGFkZEluZGVudChhcnJheVtpXS5zbGljZShzcGFjZXMpKSk7XG4gICAgICAgICAgICBhcnJheVtpXSA9IHNvdXJjZU1hcCA/IHNuLmpvaW4oJycpIDogc247XG4gICAgICAgIH1cblxuICAgICAgICBiYXNlID0gcHJldmlvdXNCYXNlO1xuXG4gICAgICAgIHJldHVybiBhcnJheS5qb2luKCdcXG4nKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCwgc3BlY2lhbEJhc2UpIHtcbiAgICAgICAgaWYgKGNvbW1lbnQudHlwZSA9PT0gJ0xpbmUnKSB7XG4gICAgICAgICAgICBpZiAoZW5kc1dpdGhMaW5lVGVybWluYXRvcihjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnLy8nICsgY29tbWVudC52YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQWx3YXlzIHVzZSBMaW5lVGVybWluYXRvclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAnLy8nICsgY29tbWVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dHJhLmZvcm1hdC5pbmRlbnQuYWRqdXN0TXVsdGlsaW5lQ29tbWVudCAmJiAvW1xcblxccl0vLnRlc3QoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhZGp1c3RNdWx0aWxpbmVDb21tZW50KCcvKicgKyBjb21tZW50LnZhbHVlICsgJyovJywgc3BlY2lhbEJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnLyonICsgY29tbWVudC52YWx1ZSArICcqLyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQ29tbWVudHMoc3RtdCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBpLCBsZW4sIGNvbW1lbnQsIHNhdmUsIHRhaWxpbmdUb1N0YXRlbWVudCwgc3BlY2lhbEJhc2UsIGZyYWdtZW50LFxuICAgICAgICAgICAgZXh0UmFuZ2UsIHJhbmdlLCBwcmV2UmFuZ2UsIHByZWZpeCwgaW5maXgsIHN1ZmZpeCwgY291bnQ7XG5cbiAgICAgICAgaWYgKHN0bXQubGVhZGluZ0NvbW1lbnRzICYmIHN0bXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNhdmUgPSByZXN1bHQ7XG5cbiAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC5sZWFkaW5nQ29tbWVudHNbMF07XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgICAgICAgICAgICBleHRSYW5nZSA9IGNvbW1lbnQuZXh0ZW5kZWRSYW5nZTtcbiAgICAgICAgICAgICAgICByYW5nZSA9IGNvbW1lbnQucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICBwcmVmaXggPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhleHRSYW5nZVswXSwgcmFuZ2VbMF0pO1xuICAgICAgICAgICAgICAgIGNvdW50ID0gKHByZWZpeC5tYXRjaCgvXFxuL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdHJpbmdSZXBlYXQoJ1xcbicsIGNvdW50KSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwcmVmaXgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZSYW5nZSA9IHJhbmdlO1xuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMSwgbGVuID0gc3RtdC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGNvbW1lbnQucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5maXggPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhwcmV2UmFuZ2VbMV0sIHJhbmdlWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgPSAoaW5maXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdHJpbmdSZXBlYXQoJ1xcbicsIGNvdW50KSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpKTtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2UmFuZ2UgPSByYW5nZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdWZmaXggPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhyYW5nZVsxXSwgZXh0UmFuZ2VbMV0pO1xuICAgICAgICAgICAgICAgIGNvdW50ID0gKHN1ZmZpeC5tYXRjaCgvXFxuL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RyaW5nUmVwZWF0KCdcXG4nLCBjb3VudCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC5sZWFkaW5nQ29tbWVudHNbMF07XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHNhZmVDb25jYXRlbmF0aW9uICYmIHN0bXQudHlwZSA9PT0gU3ludGF4LlByb2dyYW0gJiYgc3RtdC5ib2R5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlQ29tbWVudChjb21tZW50KSk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMSwgbGVuID0gc3RtdC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHN0bXQubGVhZGluZ0NvbW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IFtnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChmcmFnbWVudCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KHNhdmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdG10LnRyYWlsaW5nQ29tbWVudHMpIHtcblxuICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzdG10LnRyYWlsaW5nQ29tbWVudHNbMF07XG4gICAgICAgICAgICAgICAgZXh0UmFuZ2UgPSBjb21tZW50LmV4dGVuZGVkUmFuZ2U7XG4gICAgICAgICAgICAgICAgcmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgcHJlZml4ID0gc291cmNlQ29kZS5zdWJzdHJpbmcoZXh0UmFuZ2VbMF0sIHJhbmdlWzBdKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IChwcmVmaXgubWF0Y2goL1xcbi9nKSB8fCBbXSkubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdHJpbmdSZXBlYXQoJ1xcbicsIGNvdW50KSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwcmVmaXgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUNvbW1lbnQoY29tbWVudCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFpbGluZ1RvU3RhdGVtZW50ID0gIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIHNwZWNpYWxCYXNlID0gc3RyaW5nUmVwZWF0KCcgJywgY2FsY3VsYXRlU3BhY2VzKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoW2Jhc2UsIHJlc3VsdCwgaW5kZW50XSkudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHN0bXQudHJhaWxpbmdDb21tZW50cy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc3RtdC50cmFpbGluZ0NvbW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFpbGluZ1RvU3RhdGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUgdGFyZ2V0IGxpa2UgZm9sbG93aW5nIHNjcmlwdFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciB0ID0gMjA7ICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgKiBUaGlzIGlzIGNvbW1lbnQgb2YgdFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCBjYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgaW5kZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdCwgc3BlY2lhbEJhc2VdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQsIHNwZWNpYWxCYXNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbcmVzdWx0LCBhZGRJbmRlbnQoZ2VuZXJhdGVDb21tZW50KGNvbW1lbnQpKV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IGxlbiAtIDEgJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbcmVzdWx0LCAnXFxuJ107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlQmxhbmtMaW5lcyhzdGFydCwgZW5kLCByZXN1bHQpIHtcbiAgICAgICAgdmFyIGosIG5ld2xpbmVDb3VudCA9IDA7XG5cbiAgICAgICAgZm9yIChqID0gc3RhcnQ7IGogPCBlbmQ7IGorKykge1xuICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVbal0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgbmV3bGluZUNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGogPSAxOyBqIDwgbmV3bGluZUNvdW50OyBqKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyZW50aGVzaXplKHRleHQsIGN1cnJlbnQsIHNob3VsZCkge1xuICAgICAgICBpZiAoY3VycmVudCA8IHNob3VsZCkge1xuICAgICAgICAgICAgcmV0dXJuIFsnKCcsIHRleHQsICcpJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVWZXJiYXRpbVN0cmluZyhzdHJpbmcpIHtcbiAgICAgICAgdmFyIGksIGl6LCByZXN1bHQ7XG4gICAgICAgIHJlc3VsdCA9IHN0cmluZy5zcGxpdCgvXFxyXFxufFxcbi8pO1xuICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IHJlc3VsdC5sZW5ndGg7IGkgPCBpejsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBuZXdsaW5lICsgYmFzZSArIHJlc3VsdFtpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlVmVyYmF0aW0oZXhwciwgcHJlY2VkZW5jZSkge1xuICAgICAgICB2YXIgdmVyYmF0aW0sIHJlc3VsdCwgcHJlYztcbiAgICAgICAgdmVyYmF0aW0gPSBleHByW2V4dHJhLnZlcmJhdGltXTtcblxuICAgICAgICBpZiAodHlwZW9mIHZlcmJhdGltID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzdWx0ID0gcGFyZW50aGVzaXplKGdlbmVyYXRlVmVyYmF0aW1TdHJpbmcodmVyYmF0aW0pLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHZlcmJhdGltIGlzIG9iamVjdFxuICAgICAgICAgICAgcmVzdWx0ID0gZ2VuZXJhdGVWZXJiYXRpbVN0cmluZyh2ZXJiYXRpbS5jb250ZW50KTtcbiAgICAgICAgICAgIHByZWMgPSAodmVyYmF0aW0ucHJlY2VkZW5jZSAhPSBudWxsKSA/IHZlcmJhdGltLnByZWNlZGVuY2UgOiBQcmVjZWRlbmNlLlNlcXVlbmNlO1xuICAgICAgICAgICAgcmVzdWx0ID0gcGFyZW50aGVzaXplKHJlc3VsdCwgcHJlYywgcHJlY2VkZW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQsIGV4cHIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIENvZGVHZW5lcmF0b3IoKSB7XG4gICAgfVxuXG4gICAgLy8gSGVscGVycy5cblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLm1heWJlQmxvY2sgPSBmdW5jdGlvbihzdG10LCBmbGFncykge1xuICAgICAgICB2YXIgcmVzdWx0LCBub0xlYWRpbmdDb21tZW50LCB0aGF0ID0gdGhpcztcblxuICAgICAgICBub0xlYWRpbmdDb21tZW50ID0gIWV4dHJhLmNvbW1lbnQgfHwgIXN0bXQubGVhZGluZ0NvbW1lbnRzO1xuXG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09IFN5bnRheC5CbG9ja1N0YXRlbWVudCAmJiBub0xlYWRpbmdDb21tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW3NwYWNlLCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQsIGZsYWdzKV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RtdC50eXBlID09PSBTeW50YXguRW1wdHlTdGF0ZW1lbnQgJiYgbm9MZWFkaW5nQ29tbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuICc7JztcbiAgICAgICAgfVxuXG4gICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgIG5ld2xpbmUsXG4gICAgICAgICAgICAgICAgYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdCwgZmxhZ3MpKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUubWF5YmVCbG9ja1N1ZmZpeCA9IGZ1bmN0aW9uIChzdG10LCByZXN1bHQpIHtcbiAgICAgICAgdmFyIGVuZHMgPSBlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKTtcbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gU3ludGF4LkJsb2NrU3RhdGVtZW50ICYmICghZXh0cmEuY29tbWVudCB8fCAhc3RtdC5sZWFkaW5nQ29tbWVudHMpICYmICFlbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW3Jlc3VsdCwgc3BhY2VdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW3Jlc3VsdCwgYmFzZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtyZXN1bHQsIG5ld2xpbmUsIGJhc2VdO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUlkZW50aWZpZXIobm9kZSkge1xuICAgICAgICByZXR1cm4gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChub2RlLm5hbWUsIG5vZGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlQXN5bmNQcmVmaXgobm9kZSwgc3BhY2VSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gbm9kZS5hc3luYyA/ICdhc3luYycgKyAoc3BhY2VSZXF1aXJlZCA/IG5vRW1wdHlTcGFjZSgpIDogc3BhY2UpIDogJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVTdGFyU3VmZml4KG5vZGUpIHtcbiAgICAgICAgdmFyIGlzR2VuZXJhdG9yID0gbm9kZS5nZW5lcmF0b3IgJiYgIWV4dHJhLm1vei5zdGFybGVzc0dlbmVyYXRvcjtcbiAgICAgICAgcmV0dXJuIGlzR2VuZXJhdG9yID8gJyonICsgc3BhY2UgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZU1ldGhvZFByZWZpeChwcm9wKSB7XG4gICAgICAgIHZhciBmdW5jID0gcHJvcC52YWx1ZSwgcHJlZml4ID0gJyc7XG4gICAgICAgIGlmIChmdW5jLmFzeW5jKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gZ2VuZXJhdGVBc3luY1ByZWZpeChmdW5jLCAhcHJvcC5jb21wdXRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZ1bmMuZ2VuZXJhdG9yKSB7XG4gICAgICAgICAgICAvLyBhdm9pZCBzcGFjZSBiZWZvcmUgbWV0aG9kIG5hbWVcbiAgICAgICAgICAgIHByZWZpeCArPSBnZW5lcmF0ZVN0YXJTdWZmaXgoZnVuYykgPyAnKicgOiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgIH1cblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlUGF0dGVybiA9IGZ1bmN0aW9uIChub2RlLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikge1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlSWRlbnRpZmllcihub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24obm9kZSwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUZ1bmN0aW9uUGFyYW1zID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGksIGl6LCByZXN1bHQsIGhhc0RlZmF1bHQ7XG5cbiAgICAgICAgaGFzRGVmYXVsdCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICAgICAgICFub2RlLnJlc3QgJiYgKCFub2RlLmRlZmF1bHRzIHx8IG5vZGUuZGVmYXVsdHMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgICAgICAgIG5vZGUucGFyYW1zLmxlbmd0aCA9PT0gMSAmJiBub2RlLnBhcmFtc1swXS50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikge1xuICAgICAgICAgICAgLy8gYXJnID0+IHsgfSBjYXNlXG4gICAgICAgICAgICByZXN1bHQgPSBbZ2VuZXJhdGVBc3luY1ByZWZpeChub2RlLCB0cnVlKSwgZ2VuZXJhdGVJZGVudGlmaWVyKG5vZGUucGFyYW1zWzBdKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBub2RlLnR5cGUgPT09IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiA/IFtnZW5lcmF0ZUFzeW5jUHJlZml4KG5vZGUsIGZhbHNlKV0gOiBbXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcoJyk7XG4gICAgICAgICAgICBpZiAobm9kZS5kZWZhdWx0cykge1xuICAgICAgICAgICAgICAgIGhhc0RlZmF1bHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBub2RlLnBhcmFtcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlZmF1bHQgJiYgbm9kZS5kZWZhdWx0c1tpXSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVBc3NpZ25tZW50KG5vZGUucGFyYW1zW2ldLCBub2RlLmRlZmF1bHRzW2ldLCAnPScsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlUGF0dGVybihub2RlLnBhcmFtc1tpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5yZXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcuLi4nKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZUlkZW50aWZpZXIobm9kZS5yZXN0KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUZ1bmN0aW9uQm9keSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciByZXN1bHQsIGV4cHI7XG5cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uUGFyYW1zKG5vZGUpO1xuXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJz0+Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5leHByZXNzaW9uKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSk7XG4gICAgICAgICAgICBleHByID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24obm9kZS5ib2R5LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKTtcbiAgICAgICAgICAgIGlmIChleHByLnRvU3RyaW5nKCkuY2hhckF0KDApID09PSAneycpIHtcbiAgICAgICAgICAgICAgICBleHByID0gWycoJywgZXhwciwgJyknXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGV4cHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKG5vZGUuYm9keSwgU19UVEZGKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZUl0ZXJhdGlvbkZvclN0YXRlbWVudCA9IGZ1bmN0aW9uIChvcGVyYXRvciwgc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFsnZm9yJyArIHNwYWNlICsgKHN0bXQuYXdhaXQgPyAnYXdhaXQnICsgc3BhY2UgOiAnJykgKyAnKCddLCB0aGF0ID0gdGhpcztcbiAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoc3RtdC5sZWZ0LnR5cGUgPT09IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0bXQubGVmdC5raW5kICsgbm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQubGVmdC5kZWNsYXJhdGlvbnNbMF0sIFNfRkZGRikpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmxlZnQsIFByZWNlZGVuY2UuQ2FsbCwgRV9UVFQpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIG9wZXJhdG9yKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtqb2luKFxuICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnJpZ2h0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVClcbiAgICAgICAgICAgICksICcpJ107XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBmbGFncykpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5nZW5lcmF0ZVByb3BlcnR5S2V5ID0gZnVuY3Rpb24gKGV4cHIsIGNvbXB1dGVkKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgICBpZiAoY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdbJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuXG4gICAgICAgIGlmIChjb21wdXRlZCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJ10nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIENvZGVHZW5lcmF0b3IucHJvdG90eXBlLmdlbmVyYXRlQXNzaWdubWVudCA9IGZ1bmN0aW9uIChsZWZ0LCByaWdodCwgb3BlcmF0b3IsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgIGlmIChQcmVjZWRlbmNlLkFzc2lnbm1lbnQgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBmbGFncyB8PSBGX0FMTE9XX0lOO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihsZWZ0LCBQcmVjZWRlbmNlLkNhbGwsIGZsYWdzKSxcbiAgICAgICAgICAgICAgICBzcGFjZSArIG9wZXJhdG9yICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24ocmlnaHQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgZmxhZ3MpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LFxuICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBDb2RlR2VuZXJhdG9yLnByb3RvdHlwZS5zZW1pY29sb24gPSBmdW5jdGlvbiAoZmxhZ3MpIHtcbiAgICAgICAgaWYgKCFzZW1pY29sb25zICYmIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICc7JztcbiAgICB9O1xuXG4gICAgLy8gU3RhdGVtZW50cy5cblxuICAgIENvZGVHZW5lcmF0b3IuU3RhdGVtZW50ID0ge1xuXG4gICAgICAgIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByYW5nZSwgY29udGVudCwgcmVzdWx0ID0gWyd7JywgbmV3bGluZV0sIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgZnVuY3Rpb25zIHdpdGhvdXQgYW55IGNvZGVcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5ib2R5Lmxlbmd0aCA9PT0gMCAmJiBwcmVzZXJ2ZUJsYW5rTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBzdG10LnJhbmdlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2VbMV0gLSByYW5nZVswXSA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhyYW5nZVswXSArIDEsIHJhbmdlWzFdIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFswXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ3snXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGksIGl6LCBmcmFnbWVudCwgYm9keUZsYWdzO1xuICAgICAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX0ZVTkNfQk9EWSkge1xuICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9ESVJFQ1RJVkVfQ1RYO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5ib2R5Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBiZWZvcmUgdGhlIGZpcnN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuYm9keVswXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBzdG10LmJvZHlbMF0ubGVhZGluZ0NvbW1lbnRzWzBdLmV4dGVuZGVkUmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzb3VyY2VDb2RlLnN1YnN0cmluZyhyYW5nZVswXSwgcmFuZ2VbMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFswXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsneyddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5WzBdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUJsYW5rTGluZXMoc3RtdC5yYW5nZVswXSwgc3RtdC5ib2R5WzBdLnJhbmdlWzBdLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHNwYWNlcyBiZXR3ZWVuIGxpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpIC0gMV0udHJhaWxpbmdDb21tZW50cyAgJiYgIXN0bXQuYm9keVtpXS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQuYm9keVtpIC0gMV0ucmFuZ2VbMV0sIHN0bXQuYm9keVtpXS5yYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuYm9keVtpXS5sZWFkaW5nQ29tbWVudHMgJiYgcHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5W2ldLCBib2R5RmxhZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmJvZHlbaV0sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZUJsYW5rTGluZXMgJiYgaSA8IGl6IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGFkZCBhIG5ldyBsaW5lIGlmIHRoZXJlIGFyZSBsZWFkaW5nIGNvbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbmV4dCBzdGF0ZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpICsgMV0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGFmdGVyIHRoZSBsYXN0IGxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpXS50cmFpbGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQmxhbmtMaW5lcyhzdG10LmJvZHlbaV0ucmFuZ2VbMV0sIHN0bXQucmFuZ2VbMV0sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudCgnfScpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQnJlYWtTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgaWYgKHN0bXQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JyZWFrICcgKyBzdG10LmxhYmVsLm5hbWUgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ2JyZWFrJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDb250aW51ZVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoc3RtdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnY29udGludWUgJyArIHN0bXQubGFiZWwubmFtZSArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnY29udGludWUnICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENsYXNzQm9keTogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyAneycsIG5ld2xpbmVdLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBzdG10LmJvZHkubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmJvZHlbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChiYXNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCd9Jyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIENsYXNzRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQ7XG4gICAgICAgICAgICByZXN1bHQgID0gWydjbGFzcyddO1xuICAgICAgICAgICAgaWYgKHN0bXQuaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5pZCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdG10LnN1cGVyQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGpvaW4oJ2V4dGVuZHMnLCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnN1cGVyQ2xhc3MsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmJvZHksIFNfVEZGVCkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBEaXJlY3RpdmVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgaWYgKGV4dHJhLnJhdyAmJiBzdG10LnJhdykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG10LnJhdyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVEaXJlY3RpdmUoc3RtdC5kaXJlY3RpdmUpICsgdGhpcy5zZW1pY29sb24oZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIERvV2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgLy8gQmVjYXVzZSBgZG8gNDIgd2hpbGUgKGNvbmQpYCBpcyBTeW50YXggRXJyb3IuIFdlIG5lZWQgc2VtaWNvbG9uLlxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGpvaW4oJ2RvJywgdGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgU19URkZGKSk7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuIGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgJ3doaWxlJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICcpJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKVxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQ2F0Y2hDbGF1c2U6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZ3VhcmQ7XG5cbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICdjYXRjaCcgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5wYXJhbSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuZ3VhcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VhcmQgPSB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10Lmd1YXJkLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMiwgMCwgJyBpZiAnLCBndWFyZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICdkZWJ1Z2dlcicgKyB0aGlzLnNlbWljb2xvbihmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuICc7JztcbiAgICAgICAgfSxcblxuICAgICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgJ2V4cG9ydCcgXSwgYm9keUZsYWdzO1xuXG4gICAgICAgICAgICBib2R5RmxhZ3MgPSAoZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQpID8gU19URkZUIDogU19URkZGO1xuXG4gICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBIb2lzdGFibGVEZWNsYXJhdGlvbltEZWZhdWx0XVxuICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgQXNzaWdubWVudEV4cHJlc3Npb25bSW5dIDtcbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCAnZGVmYXVsdCcpO1xuICAgICAgICAgICAgaWYgKGlzU3RhdGVtZW50KHN0bXQuZGVjbGFyYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5kZWNsYXJhdGlvbiwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmRlY2xhcmF0aW9uLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsgJ2V4cG9ydCcgXSwgYm9keUZsYWdzLCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgYm9keUZsYWdzID0gKGZsYWdzICYgRl9TRU1JQ09MT05fT1BUKSA/IFNfVEZGVCA6IFNfVEZGRjtcblxuICAgICAgICAgICAgLy8gZXhwb3J0IFZhcmlhYmxlU3RhdGVtZW50XG4gICAgICAgICAgICAvLyBleHBvcnQgRGVjbGFyYXRpb25bRGVmYXVsdF1cbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuZGVjbGFyYXRpb24sIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBleHBvcnQgRXhwb3J0Q2xhdXNlW05vUmVmZXJlbmNlXSBGcm9tQ2xhdXNlIDtcbiAgICAgICAgICAgIC8vIGV4cG9ydCBFeHBvcnRDbGF1c2UgO1xuICAgICAgICAgICAgaWYgKHN0bXQuc3BlY2lmaWVycykge1xuICAgICAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCAneycgKyBzcGFjZSArICd9Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdG10LnNwZWNpZmllcnNbMF0udHlwZSA9PT0gU3ludGF4LkV4cG9ydEJhdGNoU3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbMF0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsICd7Jyk7XG4gICAgICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuc3BlY2lmaWVycy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYmFzZSArICd9Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnZnJvbScgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vZHVsZVNwZWNpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zb3VyY2UsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VtaWNvbG9uKGZsYWdzKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnNlbWljb2xvbihmbGFncykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgLy8gZXhwb3J0ICogRnJvbUNsYXVzZSA7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICdleHBvcnQnICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgJyonICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgJ2Zyb20nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgLy8gTW9kdWxlU3BlY2lmaWVyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zb3VyY2UsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudDtcblxuICAgICAgICAgICAgZnVuY3Rpb24gaXNDbGFzc1ByZWZpeGVkKGZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGU7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNsaWNlKDAsIDUpICE9PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29kZSA9IGZyYWdtZW50LmNoYXJDb2RlQXQoNSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IDB4N0IgIC8qICd7JyAqLyB8fCBlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGNvZGUpIHx8IGVzdXRpbHMuY29kZS5pc0xpbmVUZXJtaW5hdG9yKGNvZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uUHJlZml4ZWQoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZTtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQuc2xpY2UoMCwgOCkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2RlID0gZnJhZ21lbnQuY2hhckNvZGVBdCg4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gMHgyOCAvKiAnKCcgKi8gfHwgZXN1dGlscy5jb2RlLmlzV2hpdGVTcGFjZShjb2RlKSB8fCBjb2RlID09PSAweDJBICAvKiAnKicgKi8gfHwgZXN1dGlscy5jb2RlLmlzTGluZVRlcm1pbmF0b3IoY29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzQXN5bmNQcmVmaXhlZChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlLCBpLCBpejtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQuc2xpY2UoMCwgNSkgIT09ICdhc3luYycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWVzdXRpbHMuY29kZS5pc1doaXRlU3BhY2UoZnJhZ21lbnQuY2hhckNvZGVBdCg1KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSA2LCBpeiA9IGZyYWdtZW50Lmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGZyYWdtZW50LmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQuc2xpY2UoaSwgaSArIDgpICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29kZSA9IGZyYWdtZW50LmNoYXJDb2RlQXQoaSArIDgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlID09PSAweDI4IC8qICcoJyAqLyB8fCBlc3V0aWxzLmNvZGUuaXNXaGl0ZVNwYWNlKGNvZGUpIHx8IGNvZGUgPT09IDB4MkEgIC8qICcqJyAqLyB8fCBlc3V0aWxzLmNvZGUuaXNMaW5lVGVybWluYXRvcihjb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0ID0gW3RoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuZXhwcmVzc2lvbiwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXTtcbiAgICAgICAgICAgIC8vIDEyLjQgJ3snLCAnZnVuY3Rpb24nLCAnY2xhc3MnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgcG9zaXRpb24uXG4gICAgICAgICAgICAvLyB3cmFwIGV4cHJlc3Npb24gd2l0aCBwYXJlbnRoZXNlc1xuICAgICAgICAgICAgZnJhZ21lbnQgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChmcmFnbWVudC5jaGFyQ29kZUF0KDApID09PSAweDdCICAvKiAneycgKi8gfHwgIC8vIE9iamVjdEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgaXNDbGFzc1ByZWZpeGVkKGZyYWdtZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uUHJlZml4ZWQoZnJhZ21lbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgIGlzQXN5bmNQcmVmaXhlZChmcmFnbWVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGRpcmVjdGl2ZSAmJiAoZmxhZ3MgJiBGX0RJUkVDVElWRV9DVFgpICYmIHN0bXQuZXhwcmVzc2lvbi50eXBlID09PSBTeW50YXguTGl0ZXJhbCAmJiB0eXBlb2Ygc3RtdC5leHByZXNzaW9uLnZhbHVlID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbJygnLCByZXN1bHQsICcpJyArIHRoaXMuc2VtaWNvbG9uKGZsYWdzKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuc2VtaWNvbG9uKGZsYWdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIEltcG9ydERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIEVTNjogMTUuMi4xIHZhbGlkIGltcG9ydCBkZWNsYXJhdGlvbnM6XG4gICAgICAgICAgICAvLyAgICAgLSBpbXBvcnQgSW1wb3J0Q2xhdXNlIEZyb21DbGF1c2UgO1xuICAgICAgICAgICAgLy8gICAgIC0gaW1wb3J0IE1vZHVsZVNwZWNpZmllciA7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBjdXJzb3IsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyBJZiBubyBJbXBvcnRDbGF1c2UgaXMgcHJlc2VudCxcbiAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIGBpbXBvcnQgTW9kdWxlU3BlY2lmaWVyYCBzbyBza2lwIGBmcm9tYFxuICAgICAgICAgICAgLy8gTW9kdWxlU3BlY2lmaWVyIGlzIFN0cmluZ0xpdGVyYWwuXG4gICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIGltcG9ydCBNb2R1bGVTcGVjaWZpZXIgO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICdpbXBvcnQnLFxuICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gTW9kdWxlU3BlY2lmaWVyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuc291cmNlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VtaWNvbG9uKGZsYWdzKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGltcG9ydCBJbXBvcnRDbGF1c2UgRnJvbUNsYXVzZSA7XG4gICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgJ2ltcG9ydCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjdXJzb3IgPSAwO1xuXG4gICAgICAgICAgICAvLyBJbXBvcnRlZEJpbmRpbmdcbiAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnNbY3Vyc29yXS50eXBlID09PSBTeW50YXguSW1wb3J0RGVmYXVsdFNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbY3Vyc29yXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgKytjdXJzb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdG10LnNwZWNpZmllcnNbY3Vyc29yXSkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0udHlwZSA9PT0gU3ludGF4LkltcG9ydE5hbWVzcGFjZVNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYW1lU3BhY2VJbXBvcnRcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnNwZWNpZmllcnNbY3Vyc29yXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5hbWVkSW1wb3J0c1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSArICd7Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKChzdG10LnNwZWNpZmllcnMubGVuZ3RoIC0gY3Vyc29yKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IHsgLi4uIH0gZnJvbSBcIi4uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2N1cnNvcl0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzcGFjZSArICd9JyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcG9ydCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAuLi4sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAuLi4sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9IGZyb20gXCIuLi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBjdXJzb3IsIGl6ID0gc3RtdC5zcGVjaWZpZXJzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zcGVjaWZpZXJzW2ldLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJhc2UgKyAnfScgKyBzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCBbXG4gICAgICAgICAgICAgICAgJ2Zyb20nICsgc3BhY2UsXG4gICAgICAgICAgICAgICAgLy8gTW9kdWxlU3BlY2lmaWVyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5zb3VyY2UsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbWljb2xvbihmbGFncylcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGl0ZW1GbGFncyA9IChmbGFncyAmIEZfQUxMT1dfSU4pID8gRV9UVFQgOiBFX0ZUVDtcbiAgICAgICAgICAgIGlmIChzdG10LmluaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmlkLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGl0ZW1GbGFncyksXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICAnPScsXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmluaXQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgaXRlbUZsYWdzKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVBhdHRlcm4oc3RtdC5pZCwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBpdGVtRmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgLy8gVmFyaWFibGVEZWNsYXJhdG9yIGlzIHR5cGVkIGFzIFN0YXRlbWVudCxcbiAgICAgICAgICAgIC8vIGJ1dCBqb2luZWQgd2l0aCBjb21tYSAobm90IExpbmVUZXJtaW5hdG9yKS5cbiAgICAgICAgICAgIC8vIFNvIGlmIGNvbW1lbnQgaXMgYXR0YWNoZWQgdG8gdGFyZ2V0IG5vZGUsIHdlIHNob3VsZCBzcGVjaWFsaXplLlxuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIG5vZGUsIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IFsgc3RtdC5raW5kIF07XG5cbiAgICAgICAgICAgIGJvZHlGbGFncyA9IChmbGFncyAmIEZfQUxMT1dfSU4pID8gU19URkZGIDogU19GRkZGO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBibG9jaygpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gc3RtdC5kZWNsYXJhdGlvbnNbMF07XG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnQgJiYgbm9kZS5sZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ1xcbicpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhZGRJbmRlbnQodGhhdC5nZW5lcmF0ZVN0YXRlbWVudChub2RlLCBib2R5RmxhZ3MpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGl6ID0gc3RtdC5kZWNsYXJhdGlvbnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlID0gc3RtdC5kZWNsYXJhdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50ICYmIG5vZGUubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFkZEluZGVudCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KG5vZGUsIGJvZHlGbGFncykpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgYm9keUZsYWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmF0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgd2l0aEluZGVudChibG9jayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJsb2NrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuc2VtaWNvbG9uKGZsYWdzKSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGhyb3dTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIFtqb2luKFxuICAgICAgICAgICAgICAgICd0aHJvdycsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5hcmd1bWVudCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICApLCB0aGlzLnNlbWljb2xvbihmbGFncyldO1xuICAgICAgICB9LFxuXG4gICAgICAgIFRyeVN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpeiwgZ3VhcmRlZEhhbmRsZXJzO1xuXG4gICAgICAgICAgICByZXN1bHQgPSBbJ3RyeScsIHRoaXMubWF5YmVCbG9jayhzdG10LmJsb2NrLCBTX1RGRkYpXTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChzdG10LmJsb2NrLCByZXN1bHQpO1xuXG4gICAgICAgICAgICBpZiAoc3RtdC5oYW5kbGVycykge1xuICAgICAgICAgICAgICAgIC8vIG9sZCBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IHN0bXQuaGFuZGxlcnMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmhhbmRsZXJzW2ldLCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0bXQuZmluYWxpemVyIHx8IGkgKyAxICE9PSBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuaGFuZGxlcnNbaV0uYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3VhcmRlZEhhbmRsZXJzID0gc3RtdC5ndWFyZGVkSGFuZGxlcnMgfHwgW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGd1YXJkZWRIYW5kbGVycy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KGd1YXJkZWRIYW5kbGVyc1tpXSwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplciB8fCBpICsgMSAhPT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubWF5YmVCbG9ja1N1ZmZpeChndWFyZGVkSGFuZGxlcnNbaV0uYm9keSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIG5ldyBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBpZiAoc3RtdC5oYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0bXQuaGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5oYW5kbGVyLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgdGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmhhbmRsZXJbaV0sIFNfVEZGRikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG10LmZpbmFsaXplciB8fCBpICsgMSAhPT0gaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXliZUJsb2NrU3VmZml4KHN0bXQuaGFuZGxlcltpXS5ib2R5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuaGFuZGxlciwgU19URkZGKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5oYW5kbGVyLmJvZHksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RtdC5maW5hbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgWydmaW5hbGx5JywgdGhpcy5tYXliZUJsb2NrKHN0bXQuZmluYWxpemVyLCBTX1RGRkYpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudCwgaSwgaXosIGJvZHlGbGFncywgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQuZGlzY3JpbWluYW50LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCksXG4gICAgICAgICAgICAgICAgICAgICcpJyArIHNwYWNlICsgJ3snICsgbmV3bGluZVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzdG10LmNhc2VzKSB7XG4gICAgICAgICAgICAgICAgYm9keUZsYWdzID0gU19URkZGO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gc3RtdC5jYXNlcy5sZW5ndGg7IGkgPCBpejsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBpeiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBhZGRJbmRlbnQodGhpcy5nZW5lcmF0ZVN0YXRlbWVudChzdG10LmNhc2VzW2ldLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYWRkSW5kZW50KCd9JykpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBTd2l0Y2hDYXNlOiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGZyYWdtZW50LCBpLCBpeiwgYm9keUZsYWdzLCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChzdG10LnRlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgam9pbignY2FzZScsIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc6J1xuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsnZGVmYXVsdDonXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICBpeiA9IHN0bXQuY29uc2VxdWVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGl6ICYmIHN0bXQuY29uc2VxdWVudFswXS50eXBlID09PSBTeW50YXguQmxvY2tTdGF0ZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0Lm1heWJlQmxvY2soc3RtdC5jb25zZXF1ZW50WzBdLCBTX1RGRkYpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGkgPSAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpICE9PSBpeiAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYm9keUZsYWdzID0gU19URkZGO1xuICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxICYmIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5RmxhZ3MgfD0gRl9TRU1JQ09MT05fT1BUO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoYXQuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5jb25zZXF1ZW50W2ldLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgIT09IGl6ICYmICFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQoZnJhZ21lbnQpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBJZlN0YXRlbWVudDogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBib2R5RmxhZ3MsIHNlbWljb2xvbk9wdGlvbmFsLCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ2lmJyArIHNwYWNlICsgJygnLFxuICAgICAgICAgICAgICAgICAgICB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LnRlc3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VtaWNvbG9uT3B0aW9uYWwgPSBmbGFncyAmIEZfU0VNSUNPTE9OX09QVDtcbiAgICAgICAgICAgIGJvZHlGbGFncyA9IFNfVEZGRjtcbiAgICAgICAgICAgIGlmIChzZW1pY29sb25PcHRpb25hbCkge1xuICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RtdC5hbHRlcm5hdGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5jb25zZXF1ZW50LCBTX1RGRkYpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1heWJlQmxvY2tTdWZmaXgoc3RtdC5jb25zZXF1ZW50LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgIGlmIChzdG10LmFsdGVybmF0ZS50eXBlID09PSBTeW50YXguSWZTdGF0ZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIFsnZWxzZSAnLCB0aGlzLmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuYWx0ZXJuYXRlLCBib2R5RmxhZ3MpXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGpvaW4oJ2Vsc2UnLCB0aGlzLm1heWJlQmxvY2soc3RtdC5hbHRlcm5hdGUsIGJvZHlGbGFncykpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWF5YmVCbG9jayhzdG10LmNvbnNlcXVlbnQsIGJvZHlGbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBGb3JTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbJ2ZvcicgKyBzcGFjZSArICcoJ107XG4gICAgICAgICAgICAgICAgaWYgKHN0bXQuaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RtdC5pbml0LnR5cGUgPT09IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlU3RhdGVtZW50KHN0bXQuaW5pdCwgU19GRkZGKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGX0FMTE9XX0lOIGJlY29tZXMgZmFsc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihzdG10LmluaXQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfRlRUKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnOycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJzsnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RtdC50ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC50ZXN0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnOycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCc7Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0bXQudXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC51cGRhdGUsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRm9ySW5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVJdGVyYXRpb25Gb3JTdGF0ZW1lbnQoJ2luJywgc3RtdCwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEZvck9mU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlSXRlcmF0aW9uRm9yU3RhdGVtZW50KCdvZicsIHN0bXQsIGZsYWdzICYgRl9TRU1JQ09MT05fT1BUID8gU19URkZUIDogU19URkZGKTtcbiAgICAgICAgfSxcblxuICAgICAgICBMYWJlbGVkU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbc3RtdC5sYWJlbC5uYW1lICsgJzonLCB0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRildO1xuICAgICAgICB9LFxuXG4gICAgICAgIFByb2dyYW06IGZ1bmN0aW9uIChzdG10LCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQsIGksIGl6LCBib2R5RmxhZ3M7XG4gICAgICAgICAgICBpeiA9IHN0bXQuYm9keS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQgPSBbc2FmZUNvbmNhdGVuYXRpb24gJiYgaXogPiAwID8gJ1xcbicgOiAnJ107XG4gICAgICAgICAgICBib2R5RmxhZ3MgPSBTX1RGVEY7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICghc2FmZUNvbmNhdGVuYXRpb24gJiYgaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHlGbGFncyB8PSBGX1NFTUlDT0xPTl9PUFQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc3BhY2VzIGJlZm9yZSB0aGUgZmlyc3QgbGluZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbMF0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQucmFuZ2VbMF0sIHN0bXQuYm9keVtpXS5yYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYmV0d2VlbiBsaW5lc1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RtdC5ib2R5W2kgLSAxXS50cmFpbGluZ0NvbW1lbnRzICYmICFzdG10LmJvZHlbaV0ubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQuYm9keVtpIC0gMV0ucmFuZ2VbMV0sIHN0bXQuYm9keVtpXS5yYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gYWRkSW5kZW50KHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoc3RtdC5ib2R5W2ldLCBib2R5RmxhZ3MpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXogJiYgIWVuZHNXaXRoTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlQmxhbmtMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG10LmJvZHlbaSArIDFdLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJlc2VydmVCbGFua0xpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzcGFjZXMgYWZ0ZXIgdGhlIGxhc3QgbGluZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaXogLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0bXQuYm9keVtpXS50cmFpbGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVCbGFua0xpbmVzKHN0bXQuYm9keVtpXS5yYW5nZVsxXSwgc3RtdC5yYW5nZVsxXSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24gKHN0bXQsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXN5bmNQcmVmaXgoc3RtdCwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZVN0YXJTdWZmaXgoc3RtdCkgfHwgbm9FbXB0eVNwYWNlKCksXG4gICAgICAgICAgICAgICAgc3RtdC5pZCA/IGdlbmVyYXRlSWRlbnRpZmllcihzdG10LmlkKSA6ICcnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGdW5jdGlvbkJvZHkoc3RtdClcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgUmV0dXJuU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIGlmIChzdG10LmFyZ3VtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtqb2luKFxuICAgICAgICAgICAgICAgICAgICAncmV0dXJuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5hcmd1bWVudCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpXG4gICAgICAgICAgICAgICAgKSwgdGhpcy5zZW1pY29sb24oZmxhZ3MpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbJ3JldHVybicgKyB0aGlzLnNlbWljb2xvbihmbGFncyldO1xuICAgICAgICB9LFxuXG4gICAgICAgIFdoaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnd2hpbGUnICsgc3BhY2UgKyAnKCcsXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKHN0bXQudGVzdCwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpLFxuICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1heWJlQmxvY2soc3RtdC5ib2R5LCBmbGFncyAmIEZfU0VNSUNPTE9OX09QVCA/IFNfVEZGVCA6IFNfVEZGRikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBXaXRoU3RhdGVtZW50OiBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAnd2l0aCcgKyBzcGFjZSArICcoJyxcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW5lcmF0ZUV4cHJlc3Npb24oc3RtdC5vYmplY3QsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tYXliZUJsb2NrKHN0bXQuYm9keSwgZmxhZ3MgJiBGX1NFTUlDT0xPTl9PUFQgPyBTX1RGRlQgOiBTX1RGRkYpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBtZXJnZShDb2RlR2VuZXJhdG9yLnByb3RvdHlwZSwgQ29kZUdlbmVyYXRvci5TdGF0ZW1lbnQpO1xuXG4gICAgLy8gRXhwcmVzc2lvbnMuXG5cbiAgICBDb2RlR2VuZXJhdG9yLkV4cHJlc3Npb24gPSB7XG5cbiAgICAgICAgU2VxdWVuY2VFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6O1xuICAgICAgICAgICAgaWYgKFByZWNlZGVuY2UuU2VxdWVuY2UgPCBwcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgZmxhZ3MgfD0gRl9BTExPV19JTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgaXogPSBleHByLmV4cHJlc3Npb25zLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmV4cHJlc3Npb25zW2ldLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKSk7XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUFzc2lnbm1lbnQoZXhwci5sZWZ0LCBleHByLnJpZ2h0LCBleHByLm9wZXJhdG9yLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZSh0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIpLCBQcmVjZWRlbmNlLkFycm93RnVuY3Rpb24sIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoUHJlY2VkZW5jZS5Db25kaXRpb25hbCA8IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0FMTE9XX0lOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIudGVzdCwgUHJlY2VkZW5jZS5Mb2dpY2FsT1IsIGZsYWdzKSxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UgKyAnPycgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5jb25zZXF1ZW50LCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIGZsYWdzKSxcbiAgICAgICAgICAgICAgICAgICAgc3BhY2UgKyAnOicgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hbHRlcm5hdGUsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgZmxhZ3MpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBQcmVjZWRlbmNlLkNvbmRpdGlvbmFsLFxuICAgICAgICAgICAgICAgIHByZWNlZGVuY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTG9naWNhbEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQmluYXJ5RXhwcmVzc2lvbihleHByLCBwcmVjZWRlbmNlLCBmbGFncyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBjdXJyZW50UHJlY2VkZW5jZSwgZnJhZ21lbnQsIGxlZnRTb3VyY2U7XG4gICAgICAgICAgICBjdXJyZW50UHJlY2VkZW5jZSA9IEJpbmFyeVByZWNlZGVuY2VbZXhwci5vcGVyYXRvcl07XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50UHJlY2VkZW5jZSA8IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0FMTE9XX0lOO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIubGVmdCwgY3VycmVudFByZWNlZGVuY2UsIGZsYWdzKTtcblxuICAgICAgICAgICAgbGVmdFNvdXJjZSA9IGZyYWdtZW50LnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChsZWZ0U291cmNlLmNoYXJDb2RlQXQobGVmdFNvdXJjZS5sZW5ndGggLSAxKSA9PT0gMHgyRiAvKiAvICovICYmIGVzdXRpbHMuY29kZS5pc0lkZW50aWZpZXJQYXJ0RVM1KGV4cHIub3BlcmF0b3IuY2hhckNvZGVBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbZnJhZ21lbnQsIG5vRW1wdHlTcGFjZSgpLCBleHByLm9wZXJhdG9yXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihmcmFnbWVudCwgZXhwci5vcGVyYXRvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5yaWdodCwgY3VycmVudFByZWNlZGVuY2UgKyAxLCBmbGFncyk7XG5cbiAgICAgICAgICAgIGlmIChleHByLm9wZXJhdG9yID09PSAnLycgJiYgZnJhZ21lbnQudG9TdHJpbmcoKS5jaGFyQXQoMCkgPT09ICcvJyB8fFxuICAgICAgICAgICAgZXhwci5vcGVyYXRvci5zbGljZSgtMSkgPT09ICc8JyAmJiBmcmFnbWVudC50b1N0cmluZygpLnNsaWNlKDAsIDMpID09PSAnIS0tJykge1xuICAgICAgICAgICAgICAgIC8vIElmICcvJyBjb25jYXRzIHdpdGggJy8nIG9yIGA8YCBjb25jYXRzIHdpdGggYCEtLWAsIGl0IGlzIGludGVycHJldGVkIGFzIGNvbW1lbnQgc3RhcnRcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5vcGVyYXRvciA9PT0gJ2luJyAmJiAhKGZsYWdzICYgRl9BTExPV19JTikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWycoJywgcmVzdWx0LCAnKSddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIGN1cnJlbnRQcmVjZWRlbmNlLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpejtcbiAgICAgICAgICAgIC8vIEZfQUxMT1dfVU5QQVJBVEhfTkVXIGJlY29tZXMgZmFsc2UuXG4gICAgICAgICAgICByZXN1bHQgPSBbdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5jYWxsZWUsIFByZWNlZGVuY2UuQ2FsbCwgRV9UVEYpXTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcoJyk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHJbJ2FyZ3VtZW50cyddLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByWydhcmd1bWVudHMnXVtpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnKScpO1xuXG4gICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfQUxMT1dfQ0FMTCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWycoJywgcmVzdWx0LCAnKSddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuQ2FsbCwgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTmV3RXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBsZW5ndGgsIGksIGl6LCBpdGVtRmxhZ3M7XG4gICAgICAgICAgICBsZW5ndGggPSBleHByWydhcmd1bWVudHMnXS5sZW5ndGg7XG5cbiAgICAgICAgICAgIC8vIEZfQUxMT1dfQ0FMTCBiZWNvbWVzIGZhbHNlLlxuICAgICAgICAgICAgLy8gRl9BTExPV19VTlBBUkFUSF9ORVcgbWF5IGJlY29tZSBmYWxzZS5cbiAgICAgICAgICAgIGl0ZW1GbGFncyA9IChmbGFncyAmIEZfQUxMT1dfVU5QQVJBVEhfTkVXICYmICFwYXJlbnRoZXNlcyAmJiBsZW5ndGggPT09IDApID8gRV9URlQgOiBFX1RGRjtcblxuICAgICAgICAgICAgcmVzdWx0ID0gam9pbihcbiAgICAgICAgICAgICAgICAnbmV3JyxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmNhbGxlZSwgUHJlY2VkZW5jZS5OZXcsIGl0ZW1GbGFncylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghKGZsYWdzICYgRl9BTExPV19VTlBBUkFUSF9ORVcpIHx8IHBhcmVudGhlc2VzIHx8IGxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnKCcpO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gbGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByWydhcmd1bWVudHMnXVtpXSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcpJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLk5ldywgcHJlY2VkZW5jZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTWVtYmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudDtcblxuICAgICAgICAgICAgLy8gRl9BTExPV19VTlBBUkFUSF9ORVcgYmVjb21lcyBmYWxzZS5cbiAgICAgICAgICAgIHJlc3VsdCA9IFt0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLm9iamVjdCwgUHJlY2VkZW5jZS5DYWxsLCAoZmxhZ3MgJiBGX0FMTE9XX0NBTEwpID8gRV9UVEYgOiBFX1RGRildO1xuXG4gICAgICAgICAgICBpZiAoZXhwci5jb21wdXRlZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdbJyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5wcm9wZXJ0eSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgZmxhZ3MgJiBGX0FMTE9XX0NBTEwgPyBFX1RUVCA6IEVfVEZUKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJ10nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cHIub2JqZWN0LnR5cGUgPT09IFN5bnRheC5MaXRlcmFsICYmIHR5cGVvZiBleHByLm9iamVjdC52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFsbCB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAvLyAgIDEuIE5vIGZsb2F0aW5nIHBvaW50XG4gICAgICAgICAgICAgICAgICAgIC8vICAgMi4gRG9uJ3QgaGF2ZSBleHBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgLy8gICAzLiBUaGUgbGFzdCBjaGFyYWN0ZXIgaXMgYSBkZWNpbWFsIGRpZ2l0XG4gICAgICAgICAgICAgICAgICAgIC8vICAgNC4gTm90IGhleGFkZWNpbWFsIE9SIG9jdGFsIG51bWJlciBsaXRlcmFsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCBhZGQgYSBmbG9hdGluZyBwb2ludC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmluZGV4T2YoJy4nKSA8IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhL1tlRXhYXS8udGVzdChmcmFnbWVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3V0aWxzLmNvZGUuaXNEZWNpbWFsRGlnaXQoZnJhZ21lbnQuY2hhckNvZGVBdChmcmFnbWVudC5sZW5ndGggLSAxKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKGZyYWdtZW50Lmxlbmd0aCA+PSAyICYmIGZyYWdtZW50LmNoYXJDb2RlQXQoMCkgPT09IDQ4KSAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcuJyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2VuZXJhdGVJZGVudGlmaWVyKGV4cHIucHJvcGVydHkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuTWVtYmVyLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBNZXRhUHJvcGVydHk6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZW9mIGV4cHIubWV0YSA9PT0gXCJzdHJpbmdcIiA/IGV4cHIubWV0YSA6IGdlbmVyYXRlSWRlbnRpZmllcihleHByLm1ldGEpKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcuJyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlb2YgZXhwci5wcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIiA/IGV4cHIucHJvcGVydHkgOiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5wcm9wZXJ0eSkpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuTWVtYmVyLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBVbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgZnJhZ21lbnQsIHJpZ2h0Q2hhckNvZGUsIGxlZnRTb3VyY2UsIGxlZnRDaGFyQ29kZTtcbiAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5VbmFyeSwgRV9UVFQpO1xuXG4gICAgICAgICAgICBpZiAoc3BhY2UgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihleHByLm9wZXJhdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtleHByLm9wZXJhdG9yXTtcbiAgICAgICAgICAgICAgICBpZiAoZXhwci5vcGVyYXRvci5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSwgdm9pZCwgdHlwZW9mXG4gICAgICAgICAgICAgICAgICAgIC8vIGdldCBgdHlwZW9mIFtdYCwgbm90IGB0eXBlb2ZbXWBcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IGluc2VydGluZyBzcGFjZXMgYmV0d2VlbiBvcGVyYXRvciBhbmQgYXJndW1lbnQgaWYgaXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAgICAgLy8gbGlrZSwgYCFjb25kYFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U291cmNlID0gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGxlZnRDaGFyQ29kZSA9IGxlZnRTb3VyY2UuY2hhckNvZGVBdChsZWZ0U291cmNlLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICByaWdodENoYXJDb2RlID0gZnJhZ21lbnQudG9TdHJpbmcoKS5jaGFyQ29kZUF0KDApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgoKGxlZnRDaGFyQ29kZSA9PT0gMHgyQiAgLyogKyAqLyB8fCBsZWZ0Q2hhckNvZGUgPT09IDB4MkQgIC8qIC0gKi8pICYmIGxlZnRDaGFyQ29kZSA9PT0gcmlnaHRDaGFyQ29kZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXN1dGlscy5jb2RlLmlzSWRlbnRpZmllclBhcnRFUzUobGVmdENoYXJDb2RlKSAmJiBlc3V0aWxzLmNvZGUuaXNJZGVudGlmaWVyUGFydEVTNShyaWdodENoYXJDb2RlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLlVuYXJ5LCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBZaWVsZEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgICAgIGlmIChleHByLmRlbGVnYXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gJ3lpZWxkKic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9ICd5aWVsZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXhwci5hcmd1bWVudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4oXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5ZaWVsZCwgRV9UVFQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLllpZWxkLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBBd2FpdEV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGpvaW4oXG4gICAgICAgICAgICAgICAgZXhwci5hbGwgPyAnYXdhaXQqJyA6ICdhd2FpdCcsXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5hcmd1bWVudCwgUHJlY2VkZW5jZS5Bd2FpdCwgRV9UVFQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShyZXN1bHQsIFByZWNlZGVuY2UuQXdhaXQsIHByZWNlZGVuY2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgaWYgKGV4cHIucHJlZml4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwci5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuVW5hcnksIEVfVFRUKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBQcmVjZWRlbmNlLlVuYXJ5LFxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmFyZ3VtZW50LCBQcmVjZWRlbmNlLlBvc3RmaXgsIEVfVFRUKSxcbiAgICAgICAgICAgICAgICAgICAgZXhwci5vcGVyYXRvclxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgUHJlY2VkZW5jZS5Qb3N0Zml4LFxuICAgICAgICAgICAgICAgIHByZWNlZGVuY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVBc3luY1ByZWZpeChleHByLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAnZnVuY3Rpb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGV4cHIuaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChnZW5lcmF0ZVN0YXJTdWZmaXgoZXhwcikgfHwgbm9FbXB0eVNwYWNlKCkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlSWRlbnRpZmllcihleHByLmlkKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdlbmVyYXRlU3RhclN1ZmZpeChleHByKSB8fCBzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmdlbmVyYXRlRnVuY3Rpb25Cb2R5KGV4cHIpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXJyYXlQYXR0ZXJuOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFycmF5RXhwcmVzc2lvbihleHByLCBwcmVjZWRlbmNlLCBmbGFncywgdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQXJyYXlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MsIGlzUGF0dGVybikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgbXVsdGlsaW5lLCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghZXhwci5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tdJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG11bHRpbGluZSA9IGlzUGF0dGVybiA/IGZhbHNlIDogZXhwci5lbGVtZW50cy5sZW5ndGggPiAxO1xuICAgICAgICAgICAgcmVzdWx0ID0gWydbJywgbXVsdGlsaW5lID8gbmV3bGluZSA6ICcnXTtcbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGV4cHIuZWxlbWVudHMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4cHIuZWxlbWVudHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aWxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSBpeikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtdWx0aWxpbmUgPyBpbmRlbnQgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmVsZW1lbnRzW2ldLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcsJyArIChtdWx0aWxpbmUgPyBuZXdsaW5lIDogc3BhY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG11bHRpbGluZSAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG11bHRpbGluZSA/IGJhc2UgOiAnJyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnXScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBSZXN0RWxlbWVudDogZnVuY3Rpb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnLi4uJyArIHRoaXMuZ2VuZXJhdGVQYXR0ZXJuKGV4cHIuYXJndW1lbnQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENsYXNzRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFsnY2xhc3MnXTtcbiAgICAgICAgICAgIGlmIChleHByLmlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuaWQsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXhwci5zdXBlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBqb2luKCdleHRlbmRzJywgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5zdXBlckNsYXNzLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYWNlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoZXhwci5ib2R5LCBTX1RGRlQpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgTWV0aG9kRGVmaW5pdGlvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBmcmFnbWVudDtcbiAgICAgICAgICAgIGlmIChleHByWydzdGF0aWMnXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFsnc3RhdGljJyArIHNwYWNlXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXhwci5raW5kID09PSAnZ2V0JyB8fCBleHByLmtpbmQgPT09ICdzZXQnKSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBbXG4gICAgICAgICAgICAgICAgICAgIGpvaW4oZXhwci5raW5kLCB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByLnZhbHVlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gW1xuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZU1ldGhvZFByZWZpeChleHByKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByLnZhbHVlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBQcm9wZXJ0eTogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICBpZiAoZXhwci5raW5kID09PSAnZ2V0JyB8fCBleHByLmtpbmQgPT09ICdzZXQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5raW5kLCBub0VtcHR5U3BhY2UoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByLnZhbHVlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLnNob3J0aGFuZCkge1xuICAgICAgICAgICAgICAgIGlmIChleHByLnZhbHVlLnR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5Bc3NpZ25tZW50UGF0dGVybihleHByLnZhbHVlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlUHJvcGVydHlLZXkoZXhwci5rZXksIGV4cHIuY29tcHV0ZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXhwci5tZXRob2QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZU1ldGhvZFByZWZpeChleHByKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uQm9keShleHByLnZhbHVlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVByb3BlcnR5S2V5KGV4cHIua2V5LCBleHByLmNvbXB1dGVkKSxcbiAgICAgICAgICAgICAgICAnOicgKyBzcGFjZSxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnZhbHVlLCBQcmVjZWRlbmNlLkFzc2lnbm1lbnQsIEVfVFRUKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBPYmplY3RFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBtdWx0aWxpbmUsIHJlc3VsdCwgZnJhZ21lbnQsIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICBpZiAoIWV4cHIucHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3t9JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG11bHRpbGluZSA9IGV4cHIucHJvcGVydGllcy5sZW5ndGggPiAxO1xuXG4gICAgICAgICAgICB3aXRoSW5kZW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucHJvcGVydGllc1swXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghbXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gaXNzdWVzIDRcbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgdHJhbnNmb3JtIGZyb21cbiAgICAgICAgICAgICAgICAvLyAgIGRlamF2dS5DbGFzcy5kZWNsYXJlKHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICBtZXRob2QyOiBmdW5jdGlvbiAoKSB7fVxuICAgICAgICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gdG9cbiAgICAgICAgICAgICAgICAvLyAgIGRlamF2dS5DbGFzcy5kZWNsYXJlKHttZXRob2QyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgfX0pO1xuICAgICAgICAgICAgICAgIGlmICghaGFzTGluZVRlcm1pbmF0b3IodG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChmcmFnbWVudCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgJ3snLCBzcGFjZSwgZnJhZ21lbnQsIHNwYWNlLCAnfScgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpdGhJbmRlbnQoZnVuY3Rpb24gKGluZGVudCkge1xuICAgICAgICAgICAgICAgIHZhciBpLCBpejtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbICd7JywgbmV3bGluZSwgaW5kZW50LCBmcmFnbWVudCBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKG11bHRpbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyBuZXdsaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMSwgaXogPSBleHByLnByb3BlcnRpZXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaW5kZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoYXQuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucHJvcGVydGllc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJywnICsgbmV3bGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFlbmRzV2l0aExpbmVUZXJtaW5hdG9yKHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld2xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYmFzZSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnfScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBBc3NpZ25tZW50UGF0dGVybjogZnVuY3Rpb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQXNzaWdubWVudChleHByLmxlZnQsIGV4cHIucmlnaHQsICc9JywgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIE9iamVjdFBhdHRlcm46IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCwgaSwgaXosIG11bHRpbGluZSwgcHJvcGVydHksIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKCFleHByLnByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd7fSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG11bHRpbGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGV4cHIucHJvcGVydGllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGV4cHIucHJvcGVydGllc1swXTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkudmFsdWUudHlwZSAhPT0gU3ludGF4LklkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5wcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBleHByLnByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHkuc2hvcnRoYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBbJ3snLCBtdWx0aWxpbmUgPyBuZXdsaW5lIDogJycgXTtcblxuICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoaW5kZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIGl6O1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5wcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobXVsdGlsaW5lID8gaW5kZW50IDogJycpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnByb3BlcnRpZXNbaV0sIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGl6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgnLCcgKyAobXVsdGlsaW5lID8gbmV3bGluZSA6IHNwYWNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG11bHRpbGluZSAmJiAhZW5kc1dpdGhMaW5lVGVybWluYXRvcih0b1NvdXJjZU5vZGVXaGVuTmVlZGVkKHJlc3VsdCkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG11bHRpbGluZSA/IGJhc2UgOiAnJyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCgnfScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBUaGlzRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RoaXMnO1xuICAgICAgICB9LFxuXG4gICAgICAgIFN1cGVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiAnc3VwZXInO1xuICAgICAgICB9LFxuXG4gICAgICAgIElkZW50aWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlSWRlbnRpZmllcihleHByKTtcbiAgICAgICAgfSxcblxuICAgICAgICBJbXBvcnREZWZhdWx0U3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlkZW50aWZpZXIoZXhwci5pZCB8fCBleHByLmxvY2FsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFsnKiddO1xuICAgICAgICAgICAgdmFyIGlkID0gZXhwci5pZCB8fCBleHByLmxvY2FsO1xuICAgICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAnYXMnICsgbm9FbXB0eVNwYWNlKCkgKyBnZW5lcmF0ZUlkZW50aWZpZXIoaWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgSW1wb3J0U3BlY2lmaWVyOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciBpbXBvcnRlZCA9IGV4cHIuaW1wb3J0ZWQ7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gWyBpbXBvcnRlZC5uYW1lIF07XG4gICAgICAgICAgICB2YXIgbG9jYWwgPSBleHByLmxvY2FsO1xuICAgICAgICAgICAgaWYgKGxvY2FsICYmIGxvY2FsLm5hbWUgIT09IGltcG9ydGVkLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub0VtcHR5U3BhY2UoKSArICdhcycgKyBub0VtcHR5U3BhY2UoKSArIGdlbmVyYXRlSWRlbnRpZmllcihsb2NhbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBFeHBvcnRTcGVjaWZpZXI6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGxvY2FsID0gZXhwci5sb2NhbDtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbIGxvY2FsLm5hbWUgXTtcbiAgICAgICAgICAgIHZhciBleHBvcnRlZCA9IGV4cHIuZXhwb3J0ZWQ7XG4gICAgICAgICAgICBpZiAoZXhwb3J0ZWQgJiYgZXhwb3J0ZWQubmFtZSAhPT0gbG9jYWwubmFtZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vRW1wdHlTcGFjZSgpICsgJ2FzJyArIG5vRW1wdHlTcGFjZSgpICsgZ2VuZXJhdGVJZGVudGlmaWVyKGV4cG9ydGVkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIExpdGVyYWw6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIHJhdztcbiAgICAgICAgICAgIGlmIChleHByLmhhc093blByb3BlcnR5KCdyYXcnKSAmJiBwYXJzZSAmJiBleHRyYS5yYXcpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByYXcgPSBwYXJzZShleHByLnJhdykuYm9keVswXS5leHByZXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmF3LnR5cGUgPT09IFN5bnRheC5MaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmF3LnZhbHVlID09PSBleHByLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cHIucmF3O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBub3QgdXNlIHJhdyBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGV4cHIudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVN0cmluZyhleHByLnZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByLnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZU51bWJlcihleHByLnZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByLnZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwci52YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLnJlZ2V4KSB7XG4gICAgICAgICAgICAgIHJldHVybiAnLycgKyBleHByLnJlZ2V4LnBhdHRlcm4gKyAnLycgKyBleHByLnJlZ2V4LmZsYWdzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlUmVnRXhwKGV4cHIudmFsdWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIEdlbmVyYXRvckV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQ29tcHJlaGVuc2lvbkV4cHJlc3Npb24oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuICAgICAgICB9LFxuXG4gICAgICAgIENvbXByZWhlbnNpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIC8vIEdlbmVyYXRvckV4cHJlc3Npb24gc2hvdWxkIGJlIHBhcmVudGhlc2l6ZWQgd2l0aCAoLi4uKSwgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb24gd2l0aCBbLi4uXVxuICAgICAgICAgICAgLy8gRHVlIHRvIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4MzQ2OCBwb3NpdGlvbiBvZiBleHByLmJvZHkgY2FuIGRpZmZlciBpbiBTcGlkZXJtb25rZXkgYW5kIEVTNlxuXG4gICAgICAgICAgICB2YXIgcmVzdWx0LCBpLCBpeiwgZnJhZ21lbnQsIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgcmVzdWx0ID0gKGV4cHIudHlwZSA9PT0gU3ludGF4LkdlbmVyYXRvckV4cHJlc3Npb24pID8gWycoJ10gOiBbJ1snXTtcblxuICAgICAgICAgICAgaWYgKGV4dHJhLm1vei5jb21wcmVoZW5zaW9uRXhwcmVzc2lvblN0YXJ0c1dpdGhBc3NpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmJvZHksIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV4cHIuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgd2l0aEluZGVudChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5ibG9ja3MubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGF0LmdlbmVyYXRlRXhwcmVzc2lvbihleHByLmJsb2Nrc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwIHx8IGV4dHJhLm1vei5jb21wcmVoZW5zaW9uRXhwcmVzc2lvblN0YXJ0c1dpdGhBc3NpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gam9pbihyZXN1bHQsIGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChleHByLmZpbHRlcikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpvaW4ocmVzdWx0LCAnaWYnICsgc3BhY2UpO1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5maWx0ZXIsIFByZWNlZGVuY2UuU2VxdWVuY2UsIEVfVFRUKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgWyAnKCcsIGZyYWdtZW50LCAnKScgXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZXh0cmEubW96LmNvbXByZWhlbnNpb25FeHByZXNzaW9uU3RhcnRzV2l0aEFzc2lnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYm9keSwgUHJlY2VkZW5jZS5Bc3NpZ25tZW50LCBFX1RUVCk7XG5cbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqb2luKHJlc3VsdCwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaCgoZXhwci50eXBlID09PSBTeW50YXguR2VuZXJhdG9yRXhwcmVzc2lvbikgPyAnKScgOiAnXScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuICAgICAgICBDb21wcmVoZW5zaW9uQmxvY2s6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50O1xuICAgICAgICAgICAgaWYgKGV4cHIubGVmdC50eXBlID09PSBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gW1xuICAgICAgICAgICAgICAgICAgICBleHByLmxlZnQua2luZCwgbm9FbXB0eVNwYWNlKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVTdGF0ZW1lbnQoZXhwci5sZWZ0LmRlY2xhcmF0aW9uc1swXSwgU19GRkZGKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5sZWZ0LCBQcmVjZWRlbmNlLkNhbGwsIEVfVFRUKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnJhZ21lbnQgPSBqb2luKGZyYWdtZW50LCBleHByLm9mID8gJ29mJyA6ICdpbicpO1xuICAgICAgICAgICAgZnJhZ21lbnQgPSBqb2luKGZyYWdtZW50LCB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnJpZ2h0LCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gWyAnZm9yJyArIHNwYWNlICsgJygnLCBmcmFnbWVudCwgJyknIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgU3ByZWFkRWxlbWVudDogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICcuLi4nLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIuYXJndW1lbnQsIFByZWNlZGVuY2UuQXNzaWdubWVudCwgRV9UVFQpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICB2YXIgaXRlbUZsYWdzID0gRV9UVEY7XG4gICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfQUxMT1dfQ0FMTCkpIHtcbiAgICAgICAgICAgICAgICBpdGVtRmxhZ3MgPSBFX1RGRjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci50YWcsIFByZWNlZGVuY2UuQ2FsbCwgaXRlbUZsYWdzKSxcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXhwcmVzc2lvbihleHByLnF1YXNpLCBQcmVjZWRlbmNlLlByaW1hcnksIEVfRkZUKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUocmVzdWx0LCBQcmVjZWRlbmNlLlRhZ2dlZFRlbXBsYXRlLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBUZW1wbGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uIChleHByLCBwcmVjZWRlbmNlLCBmbGFncykge1xuICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIFwiY29va2VkXCIuIFNpbmNlIHRhZ2dlZCB0ZW1wbGF0ZSBjYW4gdXNlIHJhdyB0ZW1wbGF0ZVxuICAgICAgICAgICAgLy8gcmVwcmVzZW50YXRpb24uIFNvIGlmIHdlIGRvIHNvLCBpdCBicmVha3MgdGhlIHNjcmlwdCBzZW1hbnRpY3MuXG4gICAgICAgICAgICByZXR1cm4gZXhwci52YWx1ZS5yYXc7XG4gICAgICAgIH0sXG5cbiAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiBmdW5jdGlvbiAoZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQsIGksIGl6O1xuICAgICAgICAgICAgcmVzdWx0ID0gWyAnYCcgXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGl6ID0gZXhwci5xdWFzaXMubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uKGV4cHIucXVhc2lzW2ldLCBQcmVjZWRlbmNlLlByaW1hcnksIEVfVFRUKSk7XG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgaXopIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goJyR7JyArIHNwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5nZW5lcmF0ZUV4cHJlc3Npb24oZXhwci5leHByZXNzaW9uc1tpXSwgUHJlY2VkZW5jZS5TZXF1ZW5jZSwgRV9UVFQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BhY2UgKyAnfScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCdgJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIE1vZHVsZVNwZWNpZmllcjogZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5MaXRlcmFsKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIG1lcmdlKENvZGVHZW5lcmF0b3IucHJvdG90eXBlLCBDb2RlR2VuZXJhdG9yLkV4cHJlc3Npb24pO1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVFeHByZXNzaW9uID0gZnVuY3Rpb24gKGV4cHIsIHByZWNlZGVuY2UsIGZsYWdzKSB7XG4gICAgICAgIHZhciByZXN1bHQsIHR5cGU7XG5cbiAgICAgICAgdHlwZSA9IGV4cHIudHlwZSB8fCBTeW50YXguUHJvcGVydHk7XG5cbiAgICAgICAgaWYgKGV4dHJhLnZlcmJhdGltICYmIGV4cHIuaGFzT3duUHJvcGVydHkoZXh0cmEudmVyYmF0aW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVWZXJiYXRpbShleHByLCBwcmVjZWRlbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCA9IHRoaXNbdHlwZV0oZXhwciwgcHJlY2VkZW5jZSwgZmxhZ3MpO1xuXG5cbiAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGFkZENvbW1lbnRzKGV4cHIsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0LCBleHByKTtcbiAgICB9O1xuXG4gICAgQ29kZUdlbmVyYXRvci5wcm90b3R5cGUuZ2VuZXJhdGVTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoc3RtdCwgZmxhZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICAgIGZyYWdtZW50O1xuXG4gICAgICAgIHJlc3VsdCA9IHRoaXNbc3RtdC50eXBlXShzdG10LCBmbGFncyk7XG5cbiAgICAgICAgLy8gQXR0YWNoIGNvbW1lbnRzXG5cbiAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGFkZENvbW1lbnRzKHN0bXQsIHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICBmcmFnbWVudCA9IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS50b1N0cmluZygpO1xuICAgICAgICBpZiAoc3RtdC50eXBlID09PSBTeW50YXguUHJvZ3JhbSAmJiAhc2FmZUNvbmNhdGVuYXRpb24gJiYgbmV3bGluZSA9PT0gJycgJiYgIGZyYWdtZW50LmNoYXJBdChmcmFnbWVudC5sZW5ndGggLSAxKSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZU1hcCA/IHRvU291cmNlTm9kZVdoZW5OZWVkZWQocmVzdWx0KS5yZXBsYWNlUmlnaHQoL1xccyskLywgJycpIDogZnJhZ21lbnQucmVwbGFjZSgvXFxzKyQvLCAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3VyY2VOb2RlV2hlbk5lZWRlZChyZXN1bHQsIHN0bXQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZUludGVybmFsKG5vZGUpIHtcbiAgICAgICAgdmFyIGNvZGVnZW47XG5cbiAgICAgICAgY29kZWdlbiA9IG5ldyBDb2RlR2VuZXJhdG9yKCk7XG4gICAgICAgIGlmIChpc1N0YXRlbWVudChub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvZGVnZW4uZ2VuZXJhdGVTdGF0ZW1lbnQobm9kZSwgU19URkZGKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0V4cHJlc3Npb24obm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2RlZ2VuLmdlbmVyYXRlRXhwcmVzc2lvbihub2RlLCBQcmVjZWRlbmNlLlNlcXVlbmNlLCBFX1RUVCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlOiAnICsgbm9kZS50eXBlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZShub2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCksIHJlc3VsdCwgcGFpcjtcblxuICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBPYnNvbGV0ZSBvcHRpb25zXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICBgb3B0aW9ucy5pbmRlbnRgXG4gICAgICAgICAgICAvLyAgIGBvcHRpb25zLmJhc2VgXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGVtLCB3ZSBjYW4gdXNlIGBvcHRpb24uZm9ybWF0LmluZGVudGAuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuaW5kZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zLmZvcm1hdC5pbmRlbnQuc3R5bGUgPSBvcHRpb25zLmluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5iYXNlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zLmZvcm1hdC5pbmRlbnQuYmFzZSA9IG9wdGlvbnMuYmFzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMgPSB1cGRhdGVEZWVwbHkoZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaW5kZW50ID0gb3B0aW9ucy5mb3JtYXQuaW5kZW50LnN0eWxlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmJhc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgYmFzZSA9IG9wdGlvbnMuYmFzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYmFzZSA9IHN0cmluZ1JlcGVhdChpbmRlbnQsIG9wdGlvbnMuZm9ybWF0LmluZGVudC5iYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICAgICAgICAgIGluZGVudCA9IG9wdGlvbnMuZm9ybWF0LmluZGVudC5zdHlsZTtcbiAgICAgICAgICAgIGJhc2UgPSBzdHJpbmdSZXBlYXQoaW5kZW50LCBvcHRpb25zLmZvcm1hdC5pbmRlbnQuYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAganNvbiA9IG9wdGlvbnMuZm9ybWF0Lmpzb247XG4gICAgICAgIHJlbnVtYmVyID0gb3B0aW9ucy5mb3JtYXQucmVudW1iZXI7XG4gICAgICAgIGhleGFkZWNpbWFsID0ganNvbiA/IGZhbHNlIDogb3B0aW9ucy5mb3JtYXQuaGV4YWRlY2ltYWw7XG4gICAgICAgIHF1b3RlcyA9IGpzb24gPyAnZG91YmxlJyA6IG9wdGlvbnMuZm9ybWF0LnF1b3RlcztcbiAgICAgICAgZXNjYXBlbGVzcyA9IG9wdGlvbnMuZm9ybWF0LmVzY2FwZWxlc3M7XG4gICAgICAgIG5ld2xpbmUgPSBvcHRpb25zLmZvcm1hdC5uZXdsaW5lO1xuICAgICAgICBzcGFjZSA9IG9wdGlvbnMuZm9ybWF0LnNwYWNlO1xuICAgICAgICBpZiAob3B0aW9ucy5mb3JtYXQuY29tcGFjdCkge1xuICAgICAgICAgICAgbmV3bGluZSA9IHNwYWNlID0gaW5kZW50ID0gYmFzZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudGhlc2VzID0gb3B0aW9ucy5mb3JtYXQucGFyZW50aGVzZXM7XG4gICAgICAgIHNlbWljb2xvbnMgPSBvcHRpb25zLmZvcm1hdC5zZW1pY29sb25zO1xuICAgICAgICBzYWZlQ29uY2F0ZW5hdGlvbiA9IG9wdGlvbnMuZm9ybWF0LnNhZmVDb25jYXRlbmF0aW9uO1xuICAgICAgICBkaXJlY3RpdmUgPSBvcHRpb25zLmRpcmVjdGl2ZTtcbiAgICAgICAgcGFyc2UgPSBqc29uID8gbnVsbCA6IG9wdGlvbnMucGFyc2U7XG4gICAgICAgIHNvdXJjZU1hcCA9IG9wdGlvbnMuc291cmNlTWFwO1xuICAgICAgICBzb3VyY2VDb2RlID0gb3B0aW9ucy5zb3VyY2VDb2RlO1xuICAgICAgICBwcmVzZXJ2ZUJsYW5rTGluZXMgPSBvcHRpb25zLmZvcm1hdC5wcmVzZXJ2ZUJsYW5rTGluZXMgJiYgc291cmNlQ29kZSAhPT0gbnVsbDtcbiAgICAgICAgZXh0cmEgPSBvcHRpb25zO1xuXG4gICAgICAgIGlmIChzb3VyY2VNYXApIHtcbiAgICAgICAgICAgIGlmICghZXhwb3J0cy5icm93c2VyKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIGVudmlyb25tZW50IGlzIG5vZGUuanNcbiAgICAgICAgICAgICAgICAvLyBBbmQgcHJldmVudCBmcm9tIGluY2x1ZGluZyBzb3VyY2UtbWFwIGJ5IGJyb3dzZXJpZnlcbiAgICAgICAgICAgICAgICBTb3VyY2VOb2RlID0gcmVxdWlyZSgnc291cmNlLW1hcCcpLlNvdXJjZU5vZGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFNvdXJjZU5vZGUgPSBnbG9iYWwuc291cmNlTWFwLlNvdXJjZU5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgPSBnZW5lcmF0ZUludGVybmFsKG5vZGUpO1xuXG4gICAgICAgIGlmICghc291cmNlTWFwKSB7XG4gICAgICAgICAgICBwYWlyID0ge2NvZGU6IHJlc3VsdC50b1N0cmluZygpLCBtYXA6IG51bGx9O1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlTWFwV2l0aENvZGUgPyBwYWlyIDogcGFpci5jb2RlO1xuICAgICAgICB9XG5cblxuICAgICAgICBwYWlyID0gcmVzdWx0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7XG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICBzb3VyY2VSb290OiBvcHRpb25zLnNvdXJjZU1hcFJvb3RcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc291cmNlQ29udGVudCkge1xuICAgICAgICAgICAgcGFpci5tYXAuc2V0U291cmNlQ29udGVudChvcHRpb25zLnNvdXJjZU1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zb3VyY2VDb250ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcFdpdGhDb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFpcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYWlyLm1hcC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIEZPUk1BVF9NSU5JRlkgPSB7XG4gICAgICAgIGluZGVudDoge1xuICAgICAgICAgICAgc3R5bGU6ICcnLFxuICAgICAgICAgICAgYmFzZTogMFxuICAgICAgICB9LFxuICAgICAgICByZW51bWJlcjogdHJ1ZSxcbiAgICAgICAgaGV4YWRlY2ltYWw6IHRydWUsXG4gICAgICAgIHF1b3RlczogJ2F1dG8nLFxuICAgICAgICBlc2NhcGVsZXNzOiB0cnVlLFxuICAgICAgICBjb21wYWN0OiB0cnVlLFxuICAgICAgICBwYXJlbnRoZXNlczogZmFsc2UsXG4gICAgICAgIHNlbWljb2xvbnM6IGZhbHNlXG4gICAgfTtcblxuICAgIEZPUk1BVF9ERUZBVUxUUyA9IGdldERlZmF1bHRPcHRpb25zKCkuZm9ybWF0O1xuXG4gICAgZXhwb3J0cy52ZXJzaW9uID0gcmVxdWlyZSgnLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuICAgIGV4cG9ydHMuZ2VuZXJhdGUgPSBnZW5lcmF0ZTtcbiAgICBleHBvcnRzLmF0dGFjaENvbW1lbnRzID0gZXN0cmF2ZXJzZS5hdHRhY2hDb21tZW50cztcbiAgICBleHBvcnRzLlByZWNlZGVuY2UgPSB1cGRhdGVEZWVwbHkoe30sIFByZWNlZGVuY2UpO1xuICAgIGV4cG9ydHMuYnJvd3NlciA9IGZhbHNlO1xuICAgIGV4cG9ydHMuRk9STUFUX01JTklGWSA9IEZPUk1BVF9NSU5JRlk7XG4gICAgZXhwb3J0cy5GT1JNQVRfREVGQVVMVFMgPSBGT1JNQVRfREVGQVVMVFM7XG59KCkpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgXCJfZnJvbVwiOiBcImVzY29kZWdlbkBeMS44LjFcIixcbiAgXCJfaWRcIjogXCJlc2NvZGVnZW5AMS4xMS4wXCIsXG4gIFwiX2luQnVuZGxlXCI6IGZhbHNlLFxuICBcIl9pbnRlZ3JpdHlcIjogXCJzaGE1MTItSWVNVjQ1UmVpeEhTNTNLL09tZktBSXp0Ti9pZ0RIelRKVWhaTTNrMWpNaElaV2prNDVTTXdBdEJzRVhpSnAzdlNQbVRjdTZDWG43bUR2RkhSTjY2Znc9PVwiLFxuICBcIl9sb2NhdGlvblwiOiBcIi9zdGF0aWMtZXZhbC9lc2NvZGVnZW5cIixcbiAgXCJfcGhhbnRvbUNoaWxkcmVuXCI6IHt9LFxuICBcIl9yZXF1ZXN0ZWRcIjoge1xuICAgIFwidHlwZVwiOiBcInJhbmdlXCIsXG4gICAgXCJyZWdpc3RyeVwiOiB0cnVlLFxuICAgIFwicmF3XCI6IFwiZXNjb2RlZ2VuQF4xLjguMVwiLFxuICAgIFwibmFtZVwiOiBcImVzY29kZWdlblwiLFxuICAgIFwiZXNjYXBlZE5hbWVcIjogXCJlc2NvZGVnZW5cIixcbiAgICBcInJhd1NwZWNcIjogXCJeMS44LjFcIixcbiAgICBcInNhdmVTcGVjXCI6IG51bGwsXG4gICAgXCJmZXRjaFNwZWNcIjogXCJeMS44LjFcIlxuICB9LFxuICBcIl9yZXF1aXJlZEJ5XCI6IFtcbiAgICBcIi9zdGF0aWMtZXZhbFwiXG4gIF0sXG4gIFwiX3Jlc29sdmVkXCI6IFwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNjb2RlZ2VuLy0vZXNjb2RlZ2VuLTEuMTEuMC50Z3pcIixcbiAgXCJfc2hhc3VtXCI6IFwiYjI3YTkzODk0ODFkNWJmZDViZWM3NmY3YmIxZWIzZjhmNDU1NjU4OVwiLFxuICBcIl9zcGVjXCI6IFwiZXNjb2RlZ2VuQF4xLjguMVwiLFxuICBcIl93aGVyZVwiOiBcIi9Vc2Vycy9qY3doaXRsb2NrL2RldmVsb3BtZW50L3N3YXkvbm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsXCIsXG4gIFwiYmluXCI6IHtcbiAgICBcImVzZ2VuZXJhdGVcIjogXCIuL2Jpbi9lc2dlbmVyYXRlLmpzXCIsXG4gICAgXCJlc2NvZGVnZW5cIjogXCIuL2Jpbi9lc2NvZGVnZW4uanNcIlxuICB9LFxuICBcImJ1Z3NcIjoge1xuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2VzdG9vbHMvZXNjb2RlZ2VuL2lzc3Vlc1wiXG4gIH0sXG4gIFwiYnVuZGxlRGVwZW5kZW5jaWVzXCI6IGZhbHNlLFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJlc3ByaW1hXCI6IFwiXjMuMS4zXCIsXG4gICAgXCJlc3RyYXZlcnNlXCI6IFwiXjQuMi4wXCIsXG4gICAgXCJlc3V0aWxzXCI6IFwiXjIuMC4yXCIsXG4gICAgXCJvcHRpb25hdG9yXCI6IFwiXjAuOC4xXCIsXG4gICAgXCJzb3VyY2UtbWFwXCI6IFwifjAuNi4xXCJcbiAgfSxcbiAgXCJkZXByZWNhdGVkXCI6IGZhbHNlLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUNNQVNjcmlwdCBjb2RlIGdlbmVyYXRvclwiLFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJhY29yblwiOiBcIl40LjAuNFwiLFxuICAgIFwiYmx1ZWJpcmRcIjogXCJeMy40LjdcIixcbiAgICBcImJvd2VyLXJlZ2lzdHJ5LWNsaWVudFwiOiBcIl4xLjAuMFwiLFxuICAgIFwiY2hhaVwiOiBcIl4zLjUuMFwiLFxuICAgIFwiY29tbW9uanMtZXZlcnl3aGVyZVwiOiBcIl4wLjkuN1wiLFxuICAgIFwiZ3VscFwiOiBcIl4zLjguMTBcIixcbiAgICBcImd1bHAtZXNsaW50XCI6IFwiXjMuMC4xXCIsXG4gICAgXCJndWxwLW1vY2hhXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJzZW12ZXJcIjogXCJeNS4xLjBcIlxuICB9LFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwibm9kZVwiOiBcIj49NC4wXCJcbiAgfSxcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJMSUNFTlNFLkJTRFwiLFxuICAgIFwiUkVBRE1FLm1kXCIsXG4gICAgXCJiaW5cIixcbiAgICBcImVzY29kZWdlbi5qc1wiLFxuICAgIFwicGFja2FnZS5qc29uXCJcbiAgXSxcbiAgXCJob21lcGFnZVwiOiBcImh0dHA6Ly9naXRodWIuY29tL2VzdG9vbHMvZXNjb2RlZ2VuXCIsXG4gIFwibGljZW5zZVwiOiBcIkJTRC0yLUNsYXVzZVwiLFxuICBcIm1haW5cIjogXCJlc2NvZGVnZW4uanNcIixcbiAgXCJtYWludGFpbmVyc1wiOiBbXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiWXVzdWtlIFN1enVraVwiLFxuICAgICAgXCJlbWFpbFwiOiBcInV0YXRhbmUudGVhQGdtYWlsLmNvbVwiLFxuICAgICAgXCJ1cmxcIjogXCJodHRwOi8vZ2l0aHViLmNvbS9Db25zdGVsbGF0aW9uXCJcbiAgICB9XG4gIF0sXG4gIFwibmFtZVwiOiBcImVzY29kZWdlblwiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcInNvdXJjZS1tYXBcIjogXCJ+MC42LjFcIlxuICB9LFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2VzdG9vbHMvZXNjb2RlZ2VuLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcImNqc2lmeSAtYSBwYXRoOiB0b29scy9lbnRyeS1wb2ludC5qcyA+IGVzY29kZWdlbi5icm93c2VyLmpzXCIsXG4gICAgXCJidWlsZC1taW5cIjogXCJjanNpZnkgLW1hIHBhdGg6IHRvb2xzL2VudHJ5LXBvaW50LmpzID4gZXNjb2RlZ2VuLmJyb3dzZXIubWluLmpzXCIsXG4gICAgXCJsaW50XCI6IFwiZ3VscCBsaW50XCIsXG4gICAgXCJyZWxlYXNlXCI6IFwibm9kZSB0b29scy9yZWxlYXNlLmpzXCIsXG4gICAgXCJ0ZXN0XCI6IFwiZ3VscCB0cmF2aXNcIixcbiAgICBcInVuaXQtdGVzdFwiOiBcImd1bHAgdGVzdFwiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjEuMTEuMFwiXG59XG4iLCIvKlxuICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+XG4gIENvcHlyaWdodCAoQykgMjAxMiBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXG4gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElBQkxFIEZPUiBBTllcbiAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTO1xuICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuLypqc2xpbnQgdmFyczpmYWxzZSwgYml0d2lzZTp0cnVlKi9cbi8qanNoaW50IGluZGVudDo0Ki9cbi8qZ2xvYmFsIGV4cG9ydHM6dHJ1ZSovXG4oZnVuY3Rpb24gY2xvbmUoZXhwb3J0cykge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBTeW50YXgsXG4gICAgICAgIGlzQXJyYXksXG4gICAgICAgIFZpc2l0b3JPcHRpb24sXG4gICAgICAgIFZpc2l0b3JLZXlzLFxuICAgICAgICBvYmplY3RDcmVhdGUsXG4gICAgICAgIG9iamVjdEtleXMsXG4gICAgICAgIEJSRUFLLFxuICAgICAgICBTS0lQLFxuICAgICAgICBSRU1PVkU7XG5cbiAgICBmdW5jdGlvbiBpZ25vcmVKU0hpbnRFcnJvcigpIHsgfVxuXG4gICAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG4gICAgaWYgKCFpc0FycmF5KSB7XG4gICAgICAgIGlzQXJyYXkgPSBmdW5jdGlvbiBpc0FycmF5KGFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycmF5KSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWVwQ29weShvYmopIHtcbiAgICAgICAgdmFyIHJldCA9IHt9LCBrZXksIHZhbDtcbiAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFtrZXldID0gZGVlcENvcHkodmFsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXRba2V5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaGFsbG93Q29weShvYmopIHtcbiAgICAgICAgdmFyIHJldCA9IHt9LCBrZXk7XG4gICAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBpZ25vcmVKU0hpbnRFcnJvcihzaGFsbG93Q29weSk7XG5cbiAgICAvLyBiYXNlZCBvbiBMTFZNIGxpYmMrKyB1cHBlcl9ib3VuZCAvIGxvd2VyX2JvdW5kXG4gICAgLy8gTUlUIExpY2Vuc2VcblxuICAgIGZ1bmN0aW9uIHVwcGVyQm91bmQoYXJyYXksIGZ1bmMpIHtcbiAgICAgICAgdmFyIGRpZmYsIGxlbiwgaSwgY3VycmVudDtcblxuICAgICAgICBsZW4gPSBhcnJheS5sZW5ndGg7XG4gICAgICAgIGkgPSAwO1xuXG4gICAgICAgIHdoaWxlIChsZW4pIHtcbiAgICAgICAgICAgIGRpZmYgPSBsZW4gPj4+IDE7XG4gICAgICAgICAgICBjdXJyZW50ID0gaSArIGRpZmY7XG4gICAgICAgICAgICBpZiAoZnVuYyhhcnJheVtjdXJyZW50XSkpIHtcbiAgICAgICAgICAgICAgICBsZW4gPSBkaWZmO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpID0gY3VycmVudCArIDE7XG4gICAgICAgICAgICAgICAgbGVuIC09IGRpZmYgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvd2VyQm91bmQoYXJyYXksIGZ1bmMpIHtcbiAgICAgICAgdmFyIGRpZmYsIGxlbiwgaSwgY3VycmVudDtcblxuICAgICAgICBsZW4gPSBhcnJheS5sZW5ndGg7XG4gICAgICAgIGkgPSAwO1xuXG4gICAgICAgIHdoaWxlIChsZW4pIHtcbiAgICAgICAgICAgIGRpZmYgPSBsZW4gPj4+IDE7XG4gICAgICAgICAgICBjdXJyZW50ID0gaSArIGRpZmY7XG4gICAgICAgICAgICBpZiAoZnVuYyhhcnJheVtjdXJyZW50XSkpIHtcbiAgICAgICAgICAgICAgICBpID0gY3VycmVudCArIDE7XG4gICAgICAgICAgICAgICAgbGVuIC09IGRpZmYgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZW4gPSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgICBpZ25vcmVKU0hpbnRFcnJvcihsb3dlckJvdW5kKTtcblxuICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVuY3Rpb24gRigpIHsgfVxuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBvO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGKCk7XG4gICAgICAgIH07XG4gICAgfSkoKTtcblxuICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAobykge1xuICAgICAgICB2YXIga2V5cyA9IFtdLCBrZXk7XG4gICAgICAgIGZvciAoa2V5IGluIG8pIHtcbiAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBleHRlbmQodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGtleXMgPSBvYmplY3RLZXlzKGZyb20pLCBrZXksIGksIGxlbjtcbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0ga2V5cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIHRvW2tleV0gPSBmcm9tW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvO1xuICAgIH1cblxuICAgIFN5bnRheCA9IHtcbiAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246ICdBc3NpZ25tZW50RXhwcmVzc2lvbicsXG4gICAgICAgIEFzc2lnbm1lbnRQYXR0ZXJuOiAnQXNzaWdubWVudFBhdHRlcm4nLFxuICAgICAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24nLFxuICAgICAgICBBcnJheVBhdHRlcm46ICdBcnJheVBhdHRlcm4nLFxuICAgICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyxcbiAgICAgICAgQXdhaXRFeHByZXNzaW9uOiAnQXdhaXRFeHByZXNzaW9uJywgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgICAgICBCaW5hcnlFeHByZXNzaW9uOiAnQmluYXJ5RXhwcmVzc2lvbicsXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiAnQnJlYWtTdGF0ZW1lbnQnLFxuICAgICAgICBDYWxsRXhwcmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJyxcbiAgICAgICAgQ2F0Y2hDbGF1c2U6ICdDYXRjaENsYXVzZScsXG4gICAgICAgIENsYXNzQm9keTogJ0NsYXNzQm9keScsXG4gICAgICAgIENsYXNzRGVjbGFyYXRpb246ICdDbGFzc0RlY2xhcmF0aW9uJyxcbiAgICAgICAgQ2xhc3NFeHByZXNzaW9uOiAnQ2xhc3NFeHByZXNzaW9uJyxcbiAgICAgICAgQ29tcHJlaGVuc2lvbkJsb2NrOiAnQ29tcHJlaGVuc2lvbkJsb2NrJywgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbjogJ0NvbXByZWhlbnNpb25FeHByZXNzaW9uJywgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICdDb25kaXRpb25hbEV4cHJlc3Npb24nLFxuICAgICAgICBDb250aW51ZVN0YXRlbWVudDogJ0NvbnRpbnVlU3RhdGVtZW50JyxcbiAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnQ6ICdEZWJ1Z2dlclN0YXRlbWVudCcsXG4gICAgICAgIERpcmVjdGl2ZVN0YXRlbWVudDogJ0RpcmVjdGl2ZVN0YXRlbWVudCcsXG4gICAgICAgIERvV2hpbGVTdGF0ZW1lbnQ6ICdEb1doaWxlU3RhdGVtZW50JyxcbiAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6ICdFbXB0eVN0YXRlbWVudCcsXG4gICAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uOiAnRXhwb3J0QWxsRGVjbGFyYXRpb24nLFxuICAgICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb246ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nLFxuICAgICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uOiAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicsXG4gICAgICAgIEV4cG9ydFNwZWNpZmllcjogJ0V4cG9ydFNwZWNpZmllcicsXG4gICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6ICdFeHByZXNzaW9uU3RhdGVtZW50JyxcbiAgICAgICAgRm9yU3RhdGVtZW50OiAnRm9yU3RhdGVtZW50JyxcbiAgICAgICAgRm9ySW5TdGF0ZW1lbnQ6ICdGb3JJblN0YXRlbWVudCcsXG4gICAgICAgIEZvck9mU3RhdGVtZW50OiAnRm9yT2ZTdGF0ZW1lbnQnLFxuICAgICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiAnRnVuY3Rpb25EZWNsYXJhdGlvbicsXG4gICAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogJ0Z1bmN0aW9uRXhwcmVzc2lvbicsXG4gICAgICAgIEdlbmVyYXRvckV4cHJlc3Npb246ICdHZW5lcmF0b3JFeHByZXNzaW9uJywgIC8vIENBVVRJT046IEl0J3MgZGVmZXJyZWQgdG8gRVM3LlxuICAgICAgICBJZGVudGlmaWVyOiAnSWRlbnRpZmllcicsXG4gICAgICAgIElmU3RhdGVtZW50OiAnSWZTdGF0ZW1lbnQnLFxuICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjogJ0ltcG9ydERlY2xhcmF0aW9uJyxcbiAgICAgICAgSW1wb3J0RGVmYXVsdFNwZWNpZmllcjogJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInLFxuICAgICAgICBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInLFxuICAgICAgICBJbXBvcnRTcGVjaWZpZXI6ICdJbXBvcnRTcGVjaWZpZXInLFxuICAgICAgICBMaXRlcmFsOiAnTGl0ZXJhbCcsXG4gICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6ICdMYWJlbGVkU3RhdGVtZW50JyxcbiAgICAgICAgTG9naWNhbEV4cHJlc3Npb246ICdMb2dpY2FsRXhwcmVzc2lvbicsXG4gICAgICAgIE1lbWJlckV4cHJlc3Npb246ICdNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAgICAgTWV0YVByb3BlcnR5OiAnTWV0YVByb3BlcnR5JyxcbiAgICAgICAgTWV0aG9kRGVmaW5pdGlvbjogJ01ldGhvZERlZmluaXRpb24nLFxuICAgICAgICBNb2R1bGVTcGVjaWZpZXI6ICdNb2R1bGVTcGVjaWZpZXInLFxuICAgICAgICBOZXdFeHByZXNzaW9uOiAnTmV3RXhwcmVzc2lvbicsXG4gICAgICAgIE9iamVjdEV4cHJlc3Npb246ICdPYmplY3RFeHByZXNzaW9uJyxcbiAgICAgICAgT2JqZWN0UGF0dGVybjogJ09iamVjdFBhdHRlcm4nLFxuICAgICAgICBQcm9ncmFtOiAnUHJvZ3JhbScsXG4gICAgICAgIFByb3BlcnR5OiAnUHJvcGVydHknLFxuICAgICAgICBSZXN0RWxlbWVudDogJ1Jlc3RFbGVtZW50JyxcbiAgICAgICAgUmV0dXJuU3RhdGVtZW50OiAnUmV0dXJuU3RhdGVtZW50JyxcbiAgICAgICAgU2VxdWVuY2VFeHByZXNzaW9uOiAnU2VxdWVuY2VFeHByZXNzaW9uJyxcbiAgICAgICAgU3ByZWFkRWxlbWVudDogJ1NwcmVhZEVsZW1lbnQnLFxuICAgICAgICBTdXBlcjogJ1N1cGVyJyxcbiAgICAgICAgU3dpdGNoU3RhdGVtZW50OiAnU3dpdGNoU3RhdGVtZW50JyxcbiAgICAgICAgU3dpdGNoQ2FzZTogJ1N3aXRjaENhc2UnLFxuICAgICAgICBUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246ICdUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24nLFxuICAgICAgICBUZW1wbGF0ZUVsZW1lbnQ6ICdUZW1wbGF0ZUVsZW1lbnQnLFxuICAgICAgICBUZW1wbGF0ZUxpdGVyYWw6ICdUZW1wbGF0ZUxpdGVyYWwnLFxuICAgICAgICBUaGlzRXhwcmVzc2lvbjogJ1RoaXNFeHByZXNzaW9uJyxcbiAgICAgICAgVGhyb3dTdGF0ZW1lbnQ6ICdUaHJvd1N0YXRlbWVudCcsXG4gICAgICAgIFRyeVN0YXRlbWVudDogJ1RyeVN0YXRlbWVudCcsXG4gICAgICAgIFVuYXJ5RXhwcmVzc2lvbjogJ1VuYXJ5RXhwcmVzc2lvbicsXG4gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdVcGRhdGVFeHByZXNzaW9uJyxcbiAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogJ1ZhcmlhYmxlRGVjbGFyYXRpb24nLFxuICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6ICdWYXJpYWJsZURlY2xhcmF0b3InLFxuICAgICAgICBXaGlsZVN0YXRlbWVudDogJ1doaWxlU3RhdGVtZW50JyxcbiAgICAgICAgV2l0aFN0YXRlbWVudDogJ1dpdGhTdGF0ZW1lbnQnLFxuICAgICAgICBZaWVsZEV4cHJlc3Npb246ICdZaWVsZEV4cHJlc3Npb24nXG4gICAgfTtcblxuICAgIFZpc2l0b3JLZXlzID0ge1xuICAgICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIEFzc2lnbm1lbnRQYXR0ZXJuOiBbJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgQXJyYXlFeHByZXNzaW9uOiBbJ2VsZW1lbnRzJ10sXG4gICAgICAgIEFycmF5UGF0dGVybjogWydlbGVtZW50cyddLFxuICAgICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogWydwYXJhbXMnLCAnYm9keSddLFxuICAgICAgICBBd2FpdEV4cHJlc3Npb246IFsnYXJndW1lbnQnXSwgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIEJsb2NrU3RhdGVtZW50OiBbJ2JvZHknXSxcbiAgICAgICAgQmluYXJ5RXhwcmVzc2lvbjogWydsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIEJyZWFrU3RhdGVtZW50OiBbJ2xhYmVsJ10sXG4gICAgICAgIENhbGxFeHByZXNzaW9uOiBbJ2NhbGxlZScsICdhcmd1bWVudHMnXSxcbiAgICAgICAgQ2F0Y2hDbGF1c2U6IFsncGFyYW0nLCAnYm9keSddLFxuICAgICAgICBDbGFzc0JvZHk6IFsnYm9keSddLFxuICAgICAgICBDbGFzc0RlY2xhcmF0aW9uOiBbJ2lkJywgJ3N1cGVyQ2xhc3MnLCAnYm9keSddLFxuICAgICAgICBDbGFzc0V4cHJlc3Npb246IFsnaWQnLCAnc3VwZXJDbGFzcycsICdib2R5J10sXG4gICAgICAgIENvbXByZWhlbnNpb25CbG9jazogWydsZWZ0JywgJ3JpZ2h0J10sICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246IFsnYmxvY2tzJywgJ2ZpbHRlcicsICdib2R5J10sICAvLyBDQVVUSU9OOiBJdCdzIGRlZmVycmVkIHRvIEVTNy5cbiAgICAgICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiBbJ3Rlc3QnLCAnY29uc2VxdWVudCcsICdhbHRlcm5hdGUnXSxcbiAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6IFsnbGFiZWwnXSxcbiAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnQ6IFtdLFxuICAgICAgICBEaXJlY3RpdmVTdGF0ZW1lbnQ6IFtdLFxuICAgICAgICBEb1doaWxlU3RhdGVtZW50OiBbJ2JvZHknLCAndGVzdCddLFxuICAgICAgICBFbXB0eVN0YXRlbWVudDogW10sXG4gICAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uOiBbJ3NvdXJjZSddLFxuICAgICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb246IFsnZGVjbGFyYXRpb24nXSxcbiAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogWydkZWNsYXJhdGlvbicsICdzcGVjaWZpZXJzJywgJ3NvdXJjZSddLFxuICAgICAgICBFeHBvcnRTcGVjaWZpZXI6IFsnZXhwb3J0ZWQnLCAnbG9jYWwnXSxcbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogWydleHByZXNzaW9uJ10sXG4gICAgICAgIEZvclN0YXRlbWVudDogWydpbml0JywgJ3Rlc3QnLCAndXBkYXRlJywgJ2JvZHknXSxcbiAgICAgICAgRm9ySW5TdGF0ZW1lbnQ6IFsnbGVmdCcsICdyaWdodCcsICdib2R5J10sXG4gICAgICAgIEZvck9mU3RhdGVtZW50OiBbJ2xlZnQnLCAncmlnaHQnLCAnYm9keSddLFxuICAgICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBbJ2lkJywgJ3BhcmFtcycsICdib2R5J10sXG4gICAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogWydpZCcsICdwYXJhbXMnLCAnYm9keSddLFxuICAgICAgICBHZW5lcmF0b3JFeHByZXNzaW9uOiBbJ2Jsb2NrcycsICdmaWx0ZXInLCAnYm9keSddLCAgLy8gQ0FVVElPTjogSXQncyBkZWZlcnJlZCB0byBFUzcuXG4gICAgICAgIElkZW50aWZpZXI6IFtdLFxuICAgICAgICBJZlN0YXRlbWVudDogWyd0ZXN0JywgJ2NvbnNlcXVlbnQnLCAnYWx0ZXJuYXRlJ10sXG4gICAgICAgIEltcG9ydERlY2xhcmF0aW9uOiBbJ3NwZWNpZmllcnMnLCAnc291cmNlJ10sXG4gICAgICAgIEltcG9ydERlZmF1bHRTcGVjaWZpZXI6IFsnbG9jYWwnXSxcbiAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiBbJ2xvY2FsJ10sXG4gICAgICAgIEltcG9ydFNwZWNpZmllcjogWydpbXBvcnRlZCcsICdsb2NhbCddLFxuICAgICAgICBMaXRlcmFsOiBbXSxcbiAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogWydsYWJlbCcsICdib2R5J10sXG4gICAgICAgIExvZ2ljYWxFeHByZXNzaW9uOiBbJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgTWVtYmVyRXhwcmVzc2lvbjogWydvYmplY3QnLCAncHJvcGVydHknXSxcbiAgICAgICAgTWV0YVByb3BlcnR5OiBbJ21ldGEnLCAncHJvcGVydHknXSxcbiAgICAgICAgTWV0aG9kRGVmaW5pdGlvbjogWydrZXknLCAndmFsdWUnXSxcbiAgICAgICAgTW9kdWxlU3BlY2lmaWVyOiBbXSxcbiAgICAgICAgTmV3RXhwcmVzc2lvbjogWydjYWxsZWUnLCAnYXJndW1lbnRzJ10sXG4gICAgICAgIE9iamVjdEV4cHJlc3Npb246IFsncHJvcGVydGllcyddLFxuICAgICAgICBPYmplY3RQYXR0ZXJuOiBbJ3Byb3BlcnRpZXMnXSxcbiAgICAgICAgUHJvZ3JhbTogWydib2R5J10sXG4gICAgICAgIFByb3BlcnR5OiBbJ2tleScsICd2YWx1ZSddLFxuICAgICAgICBSZXN0RWxlbWVudDogWyAnYXJndW1lbnQnIF0sXG4gICAgICAgIFJldHVyblN0YXRlbWVudDogWydhcmd1bWVudCddLFxuICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246IFsnZXhwcmVzc2lvbnMnXSxcbiAgICAgICAgU3ByZWFkRWxlbWVudDogWydhcmd1bWVudCddLFxuICAgICAgICBTdXBlcjogW10sXG4gICAgICAgIFN3aXRjaFN0YXRlbWVudDogWydkaXNjcmltaW5hbnQnLCAnY2FzZXMnXSxcbiAgICAgICAgU3dpdGNoQ2FzZTogWyd0ZXN0JywgJ2NvbnNlcXVlbnQnXSxcbiAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOiBbJ3RhZycsICdxdWFzaSddLFxuICAgICAgICBUZW1wbGF0ZUVsZW1lbnQ6IFtdLFxuICAgICAgICBUZW1wbGF0ZUxpdGVyYWw6IFsncXVhc2lzJywgJ2V4cHJlc3Npb25zJ10sXG4gICAgICAgIFRoaXNFeHByZXNzaW9uOiBbXSxcbiAgICAgICAgVGhyb3dTdGF0ZW1lbnQ6IFsnYXJndW1lbnQnXSxcbiAgICAgICAgVHJ5U3RhdGVtZW50OiBbJ2Jsb2NrJywgJ2hhbmRsZXInLCAnZmluYWxpemVyJ10sXG4gICAgICAgIFVuYXJ5RXhwcmVzc2lvbjogWydhcmd1bWVudCddLFxuICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiBbJ2FyZ3VtZW50J10sXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRpb246IFsnZGVjbGFyYXRpb25zJ10sXG4gICAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogWydpZCcsICdpbml0J10sXG4gICAgICAgIFdoaWxlU3RhdGVtZW50OiBbJ3Rlc3QnLCAnYm9keSddLFxuICAgICAgICBXaXRoU3RhdGVtZW50OiBbJ29iamVjdCcsICdib2R5J10sXG4gICAgICAgIFlpZWxkRXhwcmVzc2lvbjogWydhcmd1bWVudCddXG4gICAgfTtcblxuICAgIC8vIHVuaXF1ZSBpZFxuICAgIEJSRUFLID0ge307XG4gICAgU0tJUCA9IHt9O1xuICAgIFJFTU9WRSA9IHt9O1xuXG4gICAgVmlzaXRvck9wdGlvbiA9IHtcbiAgICAgICAgQnJlYWs6IEJSRUFLLFxuICAgICAgICBTa2lwOiBTS0lQLFxuICAgICAgICBSZW1vdmU6IFJFTU9WRVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBSZWZlcmVuY2UocGFyZW50LCBrZXkpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIFJlZmVyZW5jZS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2Uobm9kZSkge1xuICAgICAgICB0aGlzLnBhcmVudFt0aGlzLmtleV0gPSBub2RlO1xuICAgIH07XG5cbiAgICBSZWZlcmVuY2UucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkodGhpcy5wYXJlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5zcGxpY2UodGhpcy5rZXksIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2UobnVsbCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gRWxlbWVudChub2RlLCBwYXRoLCB3cmFwLCByZWYpIHtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy53cmFwID0gd3JhcDtcbiAgICAgICAgdGhpcy5yZWYgPSByZWY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gQ29udHJvbGxlcigpIHsgfVxuXG4gICAgLy8gQVBJOlxuICAgIC8vIHJldHVybiBwcm9wZXJ0eSBwYXRoIGFycmF5IGZyb20gcm9vdCB0byBjdXJyZW50IG5vZGVcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24gcGF0aCgpIHtcbiAgICAgICAgdmFyIGksIGl6LCBqLCBqeiwgcmVzdWx0LCBlbGVtZW50O1xuXG4gICAgICAgIGZ1bmN0aW9uIGFkZFRvUGF0aChyZXN1bHQsIHBhdGgpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMCwganogPSBwYXRoLmxlbmd0aDsgaiA8IGp6OyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGF0aFtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJvb3Qgbm9kZVxuICAgICAgICBpZiAoIXRoaXMuX19jdXJyZW50LnBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmlyc3Qgbm9kZSBpcyBzZW50aW5lbCwgc2Vjb25kIG5vZGUgaXMgcm9vdCBlbGVtZW50XG4gICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAyLCBpeiA9IHRoaXMuX19sZWF2ZWxpc3QubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMuX19sZWF2ZWxpc3RbaV07XG4gICAgICAgICAgICBhZGRUb1BhdGgocmVzdWx0LCBlbGVtZW50LnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFRvUGF0aChyZXN1bHQsIHRoaXMuX19jdXJyZW50LnBhdGgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmV0dXJuIHR5cGUgb2YgY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmN1cnJlbnQoKTtcbiAgICAgICAgcmV0dXJuIG5vZGUudHlwZSB8fCB0aGlzLl9fY3VycmVudC53cmFwO1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmV0dXJuIGFycmF5IG9mIHBhcmVudCBlbGVtZW50c1xuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnBhcmVudHMgPSBmdW5jdGlvbiBwYXJlbnRzKCkge1xuICAgICAgICB2YXIgaSwgaXosIHJlc3VsdDtcblxuICAgICAgICAvLyBmaXJzdCBub2RlIGlzIHNlbnRpbmVsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IHRoaXMuX19sZWF2ZWxpc3QubGVuZ3RoOyBpIDwgaXo7ICsraSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5fX2xlYXZlbGlzdFtpXS5ub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyByZXR1cm4gY3VycmVudCBub2RlXG4gICAgQ29udHJvbGxlci5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIGN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fY3VycmVudC5ub2RlO1xuICAgIH07XG5cbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fX2V4ZWN1dGUgPSBmdW5jdGlvbiBfX2V4ZWN1dGUoY2FsbGJhY2ssIGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzLCByZXN1bHQ7XG5cbiAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHByZXZpb3VzICA9IHRoaXMuX19jdXJyZW50O1xuICAgICAgICB0aGlzLl9fY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX19zdGF0ZSA9IG51bGw7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2suY2FsbCh0aGlzLCBlbGVtZW50Lm5vZGUsIHRoaXMuX19sZWF2ZWxpc3RbdGhpcy5fX2xlYXZlbGlzdC5sZW5ndGggLSAxXS5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9fY3VycmVudCA9IHByZXZpb3VzO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8vIEFQSTpcbiAgICAvLyBub3RpZnkgY29udHJvbCBza2lwIC8gYnJlYWtcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkoZmxhZykge1xuICAgICAgICB0aGlzLl9fc3RhdGUgPSBmbGFnO1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gc2tpcCBjaGlsZCBub2RlcyBvZiBjdXJyZW50IG5vZGVcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm5vdGlmeShTS0lQKTtcbiAgICB9O1xuXG4gICAgLy8gQVBJOlxuICAgIC8vIGJyZWFrIHRyYXZlcnNhbHNcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZVsnYnJlYWsnXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoQlJFQUspO1xuICAgIH07XG5cbiAgICAvLyBBUEk6XG4gICAgLy8gcmVtb3ZlIG5vZGVcbiAgICBDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubm90aWZ5KFJFTU9WRSk7XG4gICAgfTtcblxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl9faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdGhpcy52aXNpdG9yID0gdmlzaXRvcjtcbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICAgICAgdGhpcy5fX3dvcmtsaXN0ID0gW107XG4gICAgICAgIHRoaXMuX19sZWF2ZWxpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5fX2N1cnJlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLl9fc3RhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9fZmFsbGJhY2sgPSBudWxsO1xuICAgICAgICBpZiAodmlzaXRvci5mYWxsYmFjayA9PT0gJ2l0ZXJhdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX19mYWxsYmFjayA9IG9iamVjdEtleXM7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZpc2l0b3IuZmFsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX19mYWxsYmFjayA9IHZpc2l0b3IuZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9fa2V5cyA9IFZpc2l0b3JLZXlzO1xuICAgICAgICBpZiAodmlzaXRvci5rZXlzKSB7XG4gICAgICAgICAgICB0aGlzLl9fa2V5cyA9IGV4dGVuZChvYmplY3RDcmVhdGUodGhpcy5fX2tleXMpLCB2aXNpdG9yLmtleXMpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzTm9kZShub2RlKSB7XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBub2RlLnR5cGUgPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUHJvcGVydHkobm9kZVR5cGUsIGtleSkge1xuICAgICAgICByZXR1cm4gKG5vZGVUeXBlID09PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbiB8fCBub2RlVHlwZSA9PT0gU3ludGF4Lk9iamVjdFBhdHRlcm4pICYmICdwcm9wZXJ0aWVzJyA9PT0ga2V5O1xuICAgIH1cblxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gdHJhdmVyc2Uocm9vdCwgdmlzaXRvcikge1xuICAgICAgICB2YXIgd29ya2xpc3QsXG4gICAgICAgICAgICBsZWF2ZWxpc3QsXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG5vZGVUeXBlLFxuICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgIGN1cnJlbnQyLFxuICAgICAgICAgICAgY2FuZGlkYXRlcyxcbiAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgIHNlbnRpbmVsO1xuXG4gICAgICAgIHRoaXMuX19pbml0aWFsaXplKHJvb3QsIHZpc2l0b3IpO1xuXG4gICAgICAgIHNlbnRpbmVsID0ge307XG5cbiAgICAgICAgLy8gcmVmZXJlbmNlXG4gICAgICAgIHdvcmtsaXN0ID0gdGhpcy5fX3dvcmtsaXN0O1xuICAgICAgICBsZWF2ZWxpc3QgPSB0aGlzLl9fbGVhdmVsaXN0O1xuXG4gICAgICAgIC8vIGluaXRpYWxpemVcbiAgICAgICAgd29ya2xpc3QucHVzaChuZXcgRWxlbWVudChyb290LCBudWxsLCBudWxsLCBudWxsKSk7XG4gICAgICAgIGxlYXZlbGlzdC5wdXNoKG5ldyBFbGVtZW50KG51bGwsIG51bGwsIG51bGwsIG51bGwpKTtcblxuICAgICAgICB3aGlsZSAod29ya2xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gd29ya2xpc3QucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50ID09PSBzZW50aW5lbCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBsZWF2ZWxpc3QucG9wKCk7XG5cbiAgICAgICAgICAgICAgICByZXQgPSB0aGlzLl9fZXhlY3V0ZSh2aXNpdG9yLmxlYXZlLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IEJSRUFLIHx8IHJldCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZSkge1xuXG4gICAgICAgICAgICAgICAgcmV0ID0gdGhpcy5fX2V4ZWN1dGUodmlzaXRvci5lbnRlciwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCByZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHNlbnRpbmVsKTtcbiAgICAgICAgICAgICAgICBsZWF2ZWxpc3QucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IFNLSVAgfHwgcmV0ID09PSBTS0lQKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtZW50Lm5vZGU7XG4gICAgICAgICAgICAgICAgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgZWxlbWVudC53cmFwO1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSB0aGlzLl9fa2V5c1tub2RlVHlwZV07XG4gICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSB0aGlzLl9fZmFsbGJhY2sobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlICcgKyBub2RlVHlwZSArICcuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50IC09IDEpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tjdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50MiA9IGNhbmRpZGF0ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnQyIC09IDEpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVtjdXJyZW50Ml0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb3BlcnR5KG5vZGVUeXBlLCBjYW5kaWRhdGVzW2N1cnJlbnRdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQoY2FuZGlkYXRlW2N1cnJlbnQyXSwgW2tleSwgY3VycmVudDJdLCAnUHJvcGVydHknLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9kZShjYW5kaWRhdGVbY3VycmVudDJdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQoY2FuZGlkYXRlW2N1cnJlbnQyXSwgW2tleSwgY3VycmVudDJdLCBudWxsLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChuZXcgRWxlbWVudChjYW5kaWRhdGUsIGtleSwgbnVsbCwgbnVsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdmFyIHdvcmtsaXN0LFxuICAgICAgICAgICAgbGVhdmVsaXN0LFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG5vZGVUeXBlLFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICBjdXJyZW50MixcbiAgICAgICAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICBzZW50aW5lbCxcbiAgICAgICAgICAgIG91dGVyLFxuICAgICAgICAgICAga2V5O1xuXG4gICAgICAgIGZ1bmN0aW9uIHJlbW92ZUVsZW0oZWxlbWVudCkge1xuICAgICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIG5leHRFbGVtLFxuICAgICAgICAgICAgICAgIHBhcmVudDtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQucmVmLnJlbW92ZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgcmVmZXJlbmNlIGlzIGFuIGVsZW1lbnQgb2YgYW4gYXJyYXkuXG4gICAgICAgICAgICAgICAga2V5ID0gZWxlbWVudC5yZWYua2V5O1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW1lbnQucmVmLnBhcmVudDtcblxuICAgICAgICAgICAgICAgIC8vIElmIHJlbW92ZWQgZnJvbSBhcnJheSwgdGhlbiBkZWNyZWFzZSBmb2xsb3dpbmcgaXRlbXMnIGtleXMuXG4gICAgICAgICAgICAgICAgaSA9IHdvcmtsaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRFbGVtID0gd29ya2xpc3RbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0RWxlbS5yZWYgJiYgbmV4dEVsZW0ucmVmLnBhcmVudCA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAgKG5leHRFbGVtLnJlZi5rZXkgPCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC0tbmV4dEVsZW0ucmVmLmtleTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX19pbml0aWFsaXplKHJvb3QsIHZpc2l0b3IpO1xuXG4gICAgICAgIHNlbnRpbmVsID0ge307XG5cbiAgICAgICAgLy8gcmVmZXJlbmNlXG4gICAgICAgIHdvcmtsaXN0ID0gdGhpcy5fX3dvcmtsaXN0O1xuICAgICAgICBsZWF2ZWxpc3QgPSB0aGlzLl9fbGVhdmVsaXN0O1xuXG4gICAgICAgIC8vIGluaXRpYWxpemVcbiAgICAgICAgb3V0ZXIgPSB7XG4gICAgICAgICAgICByb290OiByb290XG4gICAgICAgIH07XG4gICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChyb290LCBudWxsLCBudWxsLCBuZXcgUmVmZXJlbmNlKG91dGVyLCAncm9vdCcpKTtcbiAgICAgICAgd29ya2xpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgbGVhdmVsaXN0LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgd2hpbGUgKHdvcmtsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZWxlbWVudCA9IHdvcmtsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCA9PT0gc2VudGluZWwpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gbGVhdmVsaXN0LnBvcCgpO1xuXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5fX2V4ZWN1dGUodmlzaXRvci5sZWF2ZSwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAvLyBub2RlIG1heSBiZSByZXBsYWNlZCB3aXRoIG51bGwsXG4gICAgICAgICAgICAgICAgLy8gc28gZGlzdGluZ3Vpc2ggYmV0d2VlbiB1bmRlZmluZWQgYW5kIG51bGwgaW4gdGhpcyBwbGFjZVxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgIT09IEJSRUFLICYmIHRhcmdldCAhPT0gU0tJUCAmJiB0YXJnZXQgIT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXBsYWNlXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucmVmLnJlcGxhY2UodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBSRU1PVkUgfHwgdGFyZ2V0ID09PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRWxlbShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBCUkVBSyB8fCB0YXJnZXQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRlci5yb290O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5fX2V4ZWN1dGUodmlzaXRvci5lbnRlciwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIG5vZGUgbWF5IGJlIHJlcGxhY2VkIHdpdGggbnVsbCxcbiAgICAgICAgICAgIC8vIHNvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdW5kZWZpbmVkIGFuZCBudWxsIGluIHRoaXMgcGxhY2VcbiAgICAgICAgICAgIGlmICh0YXJnZXQgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQgIT09IEJSRUFLICYmIHRhcmdldCAhPT0gU0tJUCAmJiB0YXJnZXQgIT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2VcbiAgICAgICAgICAgICAgICBlbGVtZW50LnJlZi5yZXBsYWNlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5ub2RlID0gdGFyZ2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBSRU1PVkUgfHwgdGFyZ2V0ID09PSBSRU1PVkUpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVFbGVtKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQubm9kZSA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9fc3RhdGUgPT09IEJSRUFLIHx8IHRhcmdldCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0ZXIucm9vdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbm9kZSBtYXkgYmUgbnVsbFxuICAgICAgICAgICAgbm9kZSA9IGVsZW1lbnQubm9kZTtcbiAgICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHNlbnRpbmVsKTtcbiAgICAgICAgICAgIGxlYXZlbGlzdC5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fX3N0YXRlID09PSBTS0lQIHx8IHRhcmdldCA9PT0gU0tJUCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBlbGVtZW50LndyYXA7XG4gICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2tleXNbbm9kZVR5cGVdO1xuICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX19mYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzID0gdGhpcy5fX2ZhbGxiYWNrKG5vZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgJyArIG5vZGVUeXBlICsgJy4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGVzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlICgoY3VycmVudCAtPSAxKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tjdXJyZW50XTtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBub2RlW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50MiA9IGNhbmRpZGF0ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgoY3VycmVudDIgLT0gMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVbY3VycmVudDJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eShub2RlVHlwZSwgY2FuZGlkYXRlc1tjdXJyZW50XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQoY2FuZGlkYXRlW2N1cnJlbnQyXSwgW2tleSwgY3VycmVudDJdLCAnUHJvcGVydHknLCBuZXcgUmVmZXJlbmNlKGNhbmRpZGF0ZSwgY3VycmVudDIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKGNhbmRpZGF0ZVtjdXJyZW50Ml0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGNhbmRpZGF0ZVtjdXJyZW50Ml0sIFtrZXksIGN1cnJlbnQyXSwgbnVsbCwgbmV3IFJlZmVyZW5jZShjYW5kaWRhdGUsIGN1cnJlbnQyKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChuZXcgRWxlbWVudChjYW5kaWRhdGUsIGtleSwgbnVsbCwgbmV3IFJlZmVyZW5jZShub2RlLCBrZXkpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dGVyLnJvb3Q7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHRyYXZlcnNlKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICAgICAgICByZXR1cm4gY29udHJvbGxlci50cmF2ZXJzZShyb290LCB2aXNpdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXBsYWNlKHJvb3QsIHZpc2l0b3IpIHtcbiAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICAgICAgICByZXR1cm4gY29udHJvbGxlci5yZXBsYWNlKHJvb3QsIHZpc2l0b3IpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVuZENvbW1lbnRSYW5nZShjb21tZW50LCB0b2tlbnMpIHtcbiAgICAgICAgdmFyIHRhcmdldDtcblxuICAgICAgICB0YXJnZXQgPSB1cHBlckJvdW5kKHRva2VucywgZnVuY3Rpb24gc2VhcmNoKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4ucmFuZ2VbMF0gPiBjb21tZW50LnJhbmdlWzBdO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21tZW50LmV4dGVuZGVkUmFuZ2UgPSBbY29tbWVudC5yYW5nZVswXSwgY29tbWVudC5yYW5nZVsxXV07XG5cbiAgICAgICAgaWYgKHRhcmdldCAhPT0gdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29tbWVudC5leHRlbmRlZFJhbmdlWzFdID0gdG9rZW5zW3RhcmdldF0ucmFuZ2VbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXQgLT0gMTtcbiAgICAgICAgaWYgKHRhcmdldCA+PSAwKSB7XG4gICAgICAgICAgICBjb21tZW50LmV4dGVuZGVkUmFuZ2VbMF0gPSB0b2tlbnNbdGFyZ2V0XS5yYW5nZVsxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21tZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGF0dGFjaENvbW1lbnRzKHRyZWUsIHByb3ZpZGVkQ29tbWVudHMsIHRva2Vucykge1xuICAgICAgICAvLyBBdCBmaXJzdCwgd2Ugc2hvdWxkIGNhbGN1bGF0ZSBleHRlbmRlZCBjb21tZW50IHJhbmdlcy5cbiAgICAgICAgdmFyIGNvbW1lbnRzID0gW10sIGNvbW1lbnQsIGxlbiwgaSwgY3Vyc29yO1xuXG4gICAgICAgIGlmICghdHJlZS5yYW5nZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhdHRhY2hDb21tZW50cyBuZWVkcyByYW5nZSBpbmZvcm1hdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG9rZW5zIGFycmF5IGlzIGVtcHR5LCB3ZSBhdHRhY2ggY29tbWVudHMgdG8gdHJlZSBhcyAnbGVhZGluZ0NvbW1lbnRzJ1xuICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlZENvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHByb3ZpZGVkQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGRlZXBDb3B5KHByb3ZpZGVkQ29tbWVudHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50LmV4dGVuZGVkUmFuZ2UgPSBbMCwgdHJlZS5yYW5nZVswXV07XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyZWUubGVhZGluZ0NvbW1lbnRzID0gY29tbWVudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJlZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHByb3ZpZGVkQ29tbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbW1lbnRzLnB1c2goZXh0ZW5kQ29tbWVudFJhbmdlKGRlZXBDb3B5KHByb3ZpZGVkQ29tbWVudHNbaV0pLCB0b2tlbnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gSm9obiBGcmVlbWFuJ3MgaW1wbGVtZW50YXRpb24uXG4gICAgICAgIGN1cnNvciA9IDA7XG4gICAgICAgIHRyYXZlcnNlKHRyZWUsIHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBjb21tZW50O1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudHNbY3Vyc29yXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVsxXSA+IG5vZGUucmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVsxXSA9PT0gbm9kZS5yYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmxlYWRpbmdDb21tZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMuc3BsaWNlKGN1cnNvciwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgb3V0IG9mIG93bmVkIG5vZGVcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yID09PSBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0b3JPcHRpb24uQnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRzW2N1cnNvcl0uZXh0ZW5kZWRSYW5nZVswXSA+IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0b3JPcHRpb24uU2tpcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGN1cnNvciA9IDA7XG4gICAgICAgIHRyYXZlcnNlKHRyZWUsIHtcbiAgICAgICAgICAgIGxlYXZlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBjb21tZW50O1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudHNbY3Vyc29yXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmFuZ2VbMV0gPCBjb21tZW50LmV4dGVuZGVkUmFuZ2VbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmFuZ2VbMV0gPT09IGNvbW1lbnQuZXh0ZW5kZWRSYW5nZVswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLnRyYWlsaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudHJhaWxpbmdDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMuc3BsaWNlKGN1cnNvciwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgb3V0IG9mIG93bmVkIG5vZGVcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yID09PSBjb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0b3JPcHRpb24uQnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRzW2N1cnNvcl0uZXh0ZW5kZWRSYW5nZVswXSA+IG5vZGUucmFuZ2VbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0b3JPcHRpb24uU2tpcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0cmVlO1xuICAgIH1cblxuICAgIGV4cG9ydHMudmVyc2lvbiA9IHJlcXVpcmUoJy4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbiAgICBleHBvcnRzLlN5bnRheCA9IFN5bnRheDtcbiAgICBleHBvcnRzLnRyYXZlcnNlID0gdHJhdmVyc2U7XG4gICAgZXhwb3J0cy5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBleHBvcnRzLmF0dGFjaENvbW1lbnRzID0gYXR0YWNoQ29tbWVudHM7XG4gICAgZXhwb3J0cy5WaXNpdG9yS2V5cyA9IFZpc2l0b3JLZXlzO1xuICAgIGV4cG9ydHMuVmlzaXRvck9wdGlvbiA9IFZpc2l0b3JPcHRpb247XG4gICAgZXhwb3J0cy5Db250cm9sbGVyID0gQ29udHJvbGxlcjtcbiAgICBleHBvcnRzLmNsb25lRW52aXJvbm1lbnQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjbG9uZSh7fSk7IH07XG5cbiAgICByZXR1cm4gZXhwb3J0cztcbn0oZXhwb3J0cykpO1xuLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi9cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgXCJfZnJvbVwiOiBcImVzdHJhdmVyc2VAXjQuMi4wXCIsXG4gIFwiX2lkXCI6IFwiZXN0cmF2ZXJzZUA0LjIuMFwiLFxuICBcIl9pbkJ1bmRsZVwiOiBmYWxzZSxcbiAgXCJfaW50ZWdyaXR5XCI6IFwic2hhMS1EZTQvN1RIODFHbGhqT2MwSUpuOEd2b0wyeE09XCIsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL3N0YXRpYy1ldmFsL2VzdHJhdmVyc2VcIixcbiAgXCJfcGhhbnRvbUNoaWxkcmVuXCI6IHt9LFxuICBcIl9yZXF1ZXN0ZWRcIjoge1xuICAgIFwidHlwZVwiOiBcInJhbmdlXCIsXG4gICAgXCJyZWdpc3RyeVwiOiB0cnVlLFxuICAgIFwicmF3XCI6IFwiZXN0cmF2ZXJzZUBeNC4yLjBcIixcbiAgICBcIm5hbWVcIjogXCJlc3RyYXZlcnNlXCIsXG4gICAgXCJlc2NhcGVkTmFtZVwiOiBcImVzdHJhdmVyc2VcIixcbiAgICBcInJhd1NwZWNcIjogXCJeNC4yLjBcIixcbiAgICBcInNhdmVTcGVjXCI6IG51bGwsXG4gICAgXCJmZXRjaFNwZWNcIjogXCJeNC4yLjBcIlxuICB9LFxuICBcIl9yZXF1aXJlZEJ5XCI6IFtcbiAgICBcIi9zdGF0aWMtZXZhbC9lc2NvZGVnZW5cIlxuICBdLFxuICBcIl9yZXNvbHZlZFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQuMi4wLnRnelwiLFxuICBcIl9zaGFzdW1cIjogXCIwZGVlM2ZlZDMxZmNkNDY5NjE4Y2U3MzQyMDk5ZmMxYWZhMGJkYjEzXCIsXG4gIFwiX3NwZWNcIjogXCJlc3RyYXZlcnNlQF40LjIuMFwiLFxuICBcIl93aGVyZVwiOiBcIi9Vc2Vycy9qY3doaXRsb2NrL2RldmVsb3BtZW50L3N3YXkvbm9kZV9tb2R1bGVzL3N0YXRpYy1ldmFsL25vZGVfbW9kdWxlcy9lc2NvZGVnZW5cIixcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lc3Rvb2xzL2VzdHJhdmVyc2UvaXNzdWVzXCJcbiAgfSxcbiAgXCJidW5kbGVEZXBlbmRlbmNpZXNcIjogZmFsc2UsXG4gIFwiZGVwcmVjYXRlZFwiOiBmYWxzZSxcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkVDTUFTY3JpcHQgSlMgQVNUIHRyYXZlcnNhbCBmdW5jdGlvbnNcIixcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYmFiZWwtcHJlc2V0LWVzMjAxNVwiOiBcIl42LjMuMTNcIixcbiAgICBcImJhYmVsLXJlZ2lzdGVyXCI6IFwiXjYuMy4xM1wiLFxuICAgIFwiY2hhaVwiOiBcIl4yLjEuMVwiLFxuICAgIFwiZXNwcmVlXCI6IFwiXjEuMTEuMFwiLFxuICAgIFwiZ3VscFwiOiBcIl4zLjguMTBcIixcbiAgICBcImd1bHAtYnVtcFwiOiBcIl4wLjIuMlwiLFxuICAgIFwiZ3VscC1maWx0ZXJcIjogXCJeMi4wLjBcIixcbiAgICBcImd1bHAtZ2l0XCI6IFwiXjEuMC4xXCIsXG4gICAgXCJndWxwLXRhZy12ZXJzaW9uXCI6IFwiXjEuMi4xXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi41LjZcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJlbmdpbmVzXCI6IHtcbiAgICBcIm5vZGVcIjogXCI+PTAuMTAuMFwiXG4gIH0sXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vZXN0b29scy9lc3RyYXZlcnNlXCIsXG4gIFwibGljZW5zZVwiOiBcIkJTRC0yLUNsYXVzZVwiLFxuICBcIm1haW5cIjogXCJlc3RyYXZlcnNlLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIll1c3VrZSBTdXp1a2lcIixcbiAgICAgIFwiZW1haWxcIjogXCJ1dGF0YW5lLnRlYUBnbWFpbC5jb21cIixcbiAgICAgIFwidXJsXCI6IFwiaHR0cDovL2dpdGh1Yi5jb20vQ29uc3RlbGxhdGlvblwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlc3RyYXZlcnNlXCIsXG4gIFwicmVwb3NpdG9yeVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiZ2l0XCIsXG4gICAgXCJ1cmxcIjogXCJnaXQrc3NoOi8vZ2l0QGdpdGh1Yi5jb20vZXN0b29scy9lc3RyYXZlcnNlLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJsaW50XCI6IFwianNoaW50IGVzdHJhdmVyc2UuanNcIixcbiAgICBcInRlc3RcIjogXCJucG0gcnVuLXNjcmlwdCBsaW50ICYmIG5wbSBydW4tc2NyaXB0IHVuaXQtdGVzdFwiLFxuICAgIFwidW5pdC10ZXN0XCI6IFwibW9jaGEgLS1jb21waWxlcnMganM6YmFiZWwtcmVnaXN0ZXJcIlxuICB9LFxuICBcInZlcnNpb25cIjogXCI0LjIuMFwiXG59XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBoYXNOYXRpdmVNYXAgPSB0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiO1xuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhcnJheSBhbmQgYSBzZXQuIEFkZGluZyBhIG5ld1xuICogbWVtYmVyIGlzIE8oMSksIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAgaXMgTygxKSwgYW5kIGZpbmRpbmcgdGhlIGluZGV4IG9mIGFuXG4gKiBlbGVtZW50IGlzIE8oMSkuIFJlbW92aW5nIGVsZW1lbnRzIGZyb20gdGhlIHNldCBpcyBub3Qgc3VwcG9ydGVkLiBPbmx5XG4gKiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQgZm9yIG1lbWJlcnNoaXAuXG4gKi9cbmZ1bmN0aW9uIEFycmF5U2V0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zZXQgPSBoYXNOYXRpdmVNYXAgPyBuZXcgTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuXG4vKipcbiAqIFN0YXRpYyBtZXRob2QgZm9yIGNyZWF0aW5nIEFycmF5U2V0IGluc3RhbmNlcyBmcm9tIGFuIGV4aXN0aW5nIGFycmF5LlxuICovXG5BcnJheVNldC5mcm9tQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF9mcm9tQXJyYXkoYUFycmF5LCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzZXQgPSBuZXcgQXJyYXlTZXQoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHNldC5hZGQoYUFycmF5W2ldLCBhQWxsb3dEdXBsaWNhdGVzKTtcbiAgfVxuICByZXR1cm4gc2V0O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gaG93IG1hbnkgdW5pcXVlIGl0ZW1zIGFyZSBpbiB0aGlzIEFycmF5U2V0LiBJZiBkdXBsaWNhdGVzIGhhdmUgYmVlblxuICogYWRkZWQsIHRoYW4gdGhvc2UgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHNpemUuXG4gKlxuICogQHJldHVybnMgTnVtYmVyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gQXJyYXlTZXRfc2l6ZSgpIHtcbiAgcmV0dXJuIGhhc05hdGl2ZU1hcCA/IHRoaXMuX3NldC5zaXplIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fc2V0KS5sZW5ndGg7XG59O1xuXG4vKipcbiAqIEFkZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gQXJyYXlTZXRfYWRkKGFTdHIsIGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgdmFyIHNTdHIgPSBoYXNOYXRpdmVNYXAgPyBhU3RyIDogdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgdmFyIGlzRHVwbGljYXRlID0gaGFzTmF0aXZlTWFwID8gdGhpcy5oYXMoYVN0cikgOiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB2YXIgaWR4ID0gdGhpcy5fYXJyYXkubGVuZ3RoO1xuICBpZiAoIWlzRHVwbGljYXRlIHx8IGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgICB0aGlzLl9hcnJheS5wdXNoKGFTdHIpO1xuICB9XG4gIGlmICghaXNEdXBsaWNhdGUpIHtcbiAgICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgICB0aGlzLl9zZXQuc2V0KGFTdHIsIGlkeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldFtzU3RyXSA9IGlkeDtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIHN0cmluZyBhIG1lbWJlciBvZiB0aGlzIHNldD9cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIEFycmF5U2V0X2hhcyhhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0LmhhcyhhU3RyKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgcmV0dXJuIGhhcy5jYWxsKHRoaXMuX3NldCwgc1N0cik7XG4gIH1cbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYXJyYXk/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gQXJyYXlTZXRfaW5kZXhPZihhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICB2YXIgaWR4ID0gdGhpcy5fc2V0LmdldChhU3RyKTtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIGlmIChoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0W3NTdHJdO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignXCInICsgYVN0ciArICdcIiBpcyBub3QgaW4gdGhlIHNldC4nKTtcbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXg/XG4gKlxuICogQHBhcmFtIE51bWJlciBhSWR4XG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIEFycmF5U2V0X2F0KGFJZHgpIHtcbiAgaWYgKGFJZHggPj0gMCAmJiBhSWR4IDwgdGhpcy5fYXJyYXkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5W2FJZHhdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCBpbmRleGVkIGJ5ICcgKyBhSWR4KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzZXQgKHdoaWNoIGhhcyB0aGUgcHJvcGVyIGluZGljZXNcbiAqIGluZGljYXRlZCBieSBpbmRleE9mKS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBhcnJheSB1c2VkXG4gKiBmb3Igc3RvcmluZyB0aGUgbWVtYmVycyBzbyB0aGF0IG5vIG9uZSBjYW4gbWVzcyB3aXRoIGludGVybmFsIHN0YXRlLlxuICovXG5BcnJheVNldC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIEFycmF5U2V0X3RvQXJyYXkoKSB7XG4gIHJldHVybiB0aGlzLl9hcnJheS5zbGljZSgpO1xufTtcblxuZXhwb3J0cy5BcnJheVNldCA9IEFycmF5U2V0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqXG4gKiBCYXNlZCBvbiB0aGUgQmFzZSA2NCBWTFEgaW1wbGVtZW50YXRpb24gaW4gQ2xvc3VyZSBDb21waWxlcjpcbiAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2xvc3VyZS1jb21waWxlci9zb3VyY2UvYnJvd3NlL3RydW5rL3NyYy9jb20vZ29vZ2xlL2RlYnVnZ2luZy9zb3VyY2VtYXAvQmFzZTY0VkxRLmphdmFcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMSBUaGUgQ2xvc3VyZSBDb21waWxlciBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZFxuICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsXG4gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTllcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnLi9iYXNlNjQnKTtcblxuLy8gQSBzaW5nbGUgYmFzZSA2NCBkaWdpdCBjYW4gY29udGFpbiA2IGJpdHMgb2YgZGF0YS4gRm9yIHRoZSBiYXNlIDY0IHZhcmlhYmxlXG4vLyBsZW5ndGggcXVhbnRpdGllcyB3ZSB1c2UgaW4gdGhlIHNvdXJjZSBtYXAgc3BlYywgdGhlIGZpcnN0IGJpdCBpcyB0aGUgc2lnbixcbi8vIHRoZSBuZXh0IGZvdXIgYml0cyBhcmUgdGhlIGFjdHVhbCB2YWx1ZSwgYW5kIHRoZSA2dGggYml0IGlzIHRoZVxuLy8gY29udGludWF0aW9uIGJpdC4gVGhlIGNvbnRpbnVhdGlvbiBiaXQgdGVsbHMgdXMgd2hldGhlciB0aGVyZSBhcmUgbW9yZVxuLy8gZGlnaXRzIGluIHRoaXMgdmFsdWUgZm9sbG93aW5nIHRoaXMgZGlnaXQuXG4vL1xuLy8gICBDb250aW51YXRpb25cbi8vICAgfCAgICBTaWduXG4vLyAgIHwgICAgfFxuLy8gICBWICAgIFZcbi8vICAgMTAxMDExXG5cbnZhciBWTFFfQkFTRV9TSElGVCA9IDU7XG5cbi8vIGJpbmFyeTogMTAwMDAwXG52YXIgVkxRX0JBU0UgPSAxIDw8IFZMUV9CQVNFX1NISUZUO1xuXG4vLyBiaW5hcnk6IDAxMTExMVxudmFyIFZMUV9CQVNFX01BU0sgPSBWTFFfQkFTRSAtIDE7XG5cbi8vIGJpbmFyeTogMTAwMDAwXG52YXIgVkxRX0NPTlRJTlVBVElPTl9CSVQgPSBWTFFfQkFTRTtcblxuLyoqXG4gKiBDb252ZXJ0cyBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXNcbiAqIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOlxuICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpXG4gKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KVxuICovXG5mdW5jdGlvbiB0b1ZMUVNpZ25lZChhVmFsdWUpIHtcbiAgcmV0dXJuIGFWYWx1ZSA8IDBcbiAgICA/ICgoLWFWYWx1ZSkgPDwgMSkgKyAxXG4gICAgOiAoYVZhbHVlIDw8IDEpICsgMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0byBhIHR3by1jb21wbGVtZW50IHZhbHVlIGZyb20gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXNcbiAqIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOlxuICogICAyICgxMCBiaW5hcnkpIGJlY29tZXMgMSwgMyAoMTEgYmluYXJ5KSBiZWNvbWVzIC0xXG4gKiAgIDQgKDEwMCBiaW5hcnkpIGJlY29tZXMgMiwgNSAoMTAxIGJpbmFyeSkgYmVjb21lcyAtMlxuICovXG5mdW5jdGlvbiBmcm9tVkxRU2lnbmVkKGFWYWx1ZSkge1xuICB2YXIgaXNOZWdhdGl2ZSA9IChhVmFsdWUgJiAxKSA9PT0gMTtcbiAgdmFyIHNoaWZ0ZWQgPSBhVmFsdWUgPj4gMTtcbiAgcmV0dXJuIGlzTmVnYXRpdmVcbiAgICA/IC1zaGlmdGVkXG4gICAgOiBzaGlmdGVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2UgNjQgVkxRIGVuY29kZWQgdmFsdWUuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2VuY29kZShhVmFsdWUpIHtcbiAgdmFyIGVuY29kZWQgPSBcIlwiO1xuICB2YXIgZGlnaXQ7XG5cbiAgdmFyIHZscSA9IHRvVkxRU2lnbmVkKGFWYWx1ZSk7XG5cbiAgZG8ge1xuICAgIGRpZ2l0ID0gdmxxICYgVkxRX0JBU0VfTUFTSztcbiAgICB2bHEgPj4+PSBWTFFfQkFTRV9TSElGVDtcbiAgICBpZiAodmxxID4gMCkge1xuICAgICAgLy8gVGhlcmUgYXJlIHN0aWxsIG1vcmUgZGlnaXRzIGluIHRoaXMgdmFsdWUsIHNvIHdlIG11c3QgbWFrZSBzdXJlIHRoZVxuICAgICAgLy8gY29udGludWF0aW9uIGJpdCBpcyBtYXJrZWQuXG4gICAgICBkaWdpdCB8PSBWTFFfQ09OVElOVUFUSU9OX0JJVDtcbiAgICB9XG4gICAgZW5jb2RlZCArPSBiYXNlNjQuZW5jb2RlKGRpZ2l0KTtcbiAgfSB3aGlsZSAodmxxID4gMCk7XG5cbiAgcmV0dXJuIGVuY29kZWQ7XG59O1xuXG4vKipcbiAqIERlY29kZXMgdGhlIG5leHQgYmFzZSA2NCBWTFEgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCByZXR1cm5zIHRoZVxuICogdmFsdWUgYW5kIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgdmlhIHRoZSBvdXQgcGFyYW1ldGVyLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9kZWNvZGUoYVN0ciwgYUluZGV4LCBhT3V0UGFyYW0pIHtcbiAgdmFyIHN0ckxlbiA9IGFTdHIubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gMDtcbiAgdmFyIHNoaWZ0ID0gMDtcbiAgdmFyIGNvbnRpbnVhdGlvbiwgZGlnaXQ7XG5cbiAgZG8ge1xuICAgIGlmIChhSW5kZXggPj0gc3RyTGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBtb3JlIGRpZ2l0cyBpbiBiYXNlIDY0IFZMUSB2YWx1ZS5cIik7XG4gICAgfVxuXG4gICAgZGlnaXQgPSBiYXNlNjQuZGVjb2RlKGFTdHIuY2hhckNvZGVBdChhSW5kZXgrKykpO1xuICAgIGlmIChkaWdpdCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGRpZ2l0OiBcIiArIGFTdHIuY2hhckF0KGFJbmRleCAtIDEpKTtcbiAgICB9XG5cbiAgICBjb250aW51YXRpb24gPSAhIShkaWdpdCAmIFZMUV9DT05USU5VQVRJT05fQklUKTtcbiAgICBkaWdpdCAmPSBWTFFfQkFTRV9NQVNLO1xuICAgIHJlc3VsdCA9IHJlc3VsdCArIChkaWdpdCA8PCBzaGlmdCk7XG4gICAgc2hpZnQgKz0gVkxRX0JBU0VfU0hJRlQ7XG4gIH0gd2hpbGUgKGNvbnRpbnVhdGlvbik7XG5cbiAgYU91dFBhcmFtLnZhbHVlID0gZnJvbVZMUVNpZ25lZChyZXN1bHQpO1xuICBhT3V0UGFyYW0ucmVzdCA9IGFJbmRleDtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG5leHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EID0gMTtcbmV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoLlxuICpcbiAqIEBwYXJhbSBhTG93IEluZGljZXMgaGVyZSBhbmQgbG93ZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAqIEBwYXJhbSBhSGlnaCBJbmRpY2VzIGhlcmUgYW5kIGhpZ2hlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgYmVpbmcgc2VhcmNoZWQgZm9yLlxuICogQHBhcmFtIGFIYXlzdGFjayBUaGUgbm9uLWVtcHR5IGFycmF5IGJlaW5nIHNlYXJjaGVkLlxuICogQHBhcmFtIGFDb21wYXJlIEZ1bmN0aW9uIHdoaWNoIHRha2VzIHR3byBlbGVtZW50cyBhbmQgcmV0dXJucyAtMSwgMCwgb3IgMS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gcmVjdXJzaXZlU2VhcmNoKGFMb3csIGFIaWdoLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICAvLyBUaGlzIGZ1bmN0aW9uIHRlcm1pbmF0ZXMgd2hlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOlxuICAvL1xuICAvLyAgIDEuIFdlIGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuICAvL1xuICAvLyAgIDIuIFdlIGRpZCBub3QgZmluZCB0aGUgZXhhY3QgZWxlbWVudCwgYnV0IHdlIGNhbiByZXR1cm4gdGhlIGluZGV4IG9mXG4gIC8vICAgICAgdGhlIG5leHQtY2xvc2VzdCBlbGVtZW50LlxuICAvL1xuICAvLyAgIDMuIFdlIGRpZCBub3QgZmluZCB0aGUgZXhhY3QgZWxlbWVudCwgYW5kIHRoZXJlIGlzIG5vIG5leHQtY2xvc2VzdFxuICAvLyAgICAgIGVsZW1lbnQgdGhhbiB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLCBzbyB3ZSByZXR1cm4gLTEuXG4gIHZhciBtaWQgPSBNYXRoLmZsb29yKChhSGlnaCAtIGFMb3cpIC8gMikgKyBhTG93O1xuICB2YXIgY21wID0gYUNvbXBhcmUoYU5lZWRsZSwgYUhheXN0YWNrW21pZF0sIHRydWUpO1xuICBpZiAoY21wID09PSAwKSB7XG4gICAgLy8gRm91bmQgdGhlIGVsZW1lbnQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuICAgIHJldHVybiBtaWQ7XG4gIH1cbiAgZWxzZSBpZiAoY21wID4gMCkge1xuICAgIC8vIE91ciBuZWVkbGUgaXMgZ3JlYXRlciB0aGFuIGFIYXlzdGFja1ttaWRdLlxuICAgIGlmIChhSGlnaCAtIG1pZCA+IDEpIHtcbiAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSB1cHBlciBoYWxmLlxuICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChtaWQsIGFIaWdoLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGV4YWN0IG5lZWRsZSBlbGVtZW50IHdhcyBub3QgZm91bmQgaW4gdGhpcyBoYXlzdGFjay4gRGV0ZXJtaW5lIGlmXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIGFIaWdoIDwgYUhheXN0YWNrLmxlbmd0aCA/IGFIaWdoIDogLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtaWQ7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIC8vIE91ciBuZWVkbGUgaXMgbGVzcyB0aGFuIGFIYXlzdGFja1ttaWRdLlxuICAgIGlmIChtaWQgLSBhTG93ID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIGxvd2VyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKGFMb3csIG1pZCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgIH1cblxuICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgIHJldHVybiBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhTG93IDwgMCA/IC0xIDogYUxvdztcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2ggd2hpY2ggd2lsbCBhbHdheXMgdHJ5IGFuZCByZXR1cm5cbiAqIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBlbGVtZW50IGlmIHRoZXJlIGlzIG5vIGV4YWN0IGhpdC4gVGhpcyBpcyBiZWNhdXNlXG4gKiBtYXBwaW5ncyBiZXR3ZWVuIG9yaWdpbmFsIGFuZCBnZW5lcmF0ZWQgbGluZS9jb2wgcGFpcnMgYXJlIHNpbmdsZSBwb2ludHMsXG4gKiBhbmQgdGhlcmUgaXMgYW4gaW1wbGljaXQgcmVnaW9uIGJldHdlZW4gZWFjaCBvZiB0aGVtLCBzbyBhIG1pc3MganVzdCBtZWFuc1xuICogdGhhdCB5b3UgYXJlbid0IG9uIHRoZSB2ZXJ5IHN0YXJ0IG9mIGEgcmVnaW9uLlxuICpcbiAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IHlvdSBhcmUgbG9va2luZyBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBhcnJheSB0aGF0IGlzIGJlaW5nIHNlYXJjaGVkLlxuICogQHBhcmFtIGFDb21wYXJlIEEgZnVuY3Rpb24gd2hpY2ggdGFrZXMgdGhlIG5lZWRsZSBhbmQgYW4gZWxlbWVudCBpbiB0aGVcbiAqICAgICBhcnJheSBhbmQgcmV0dXJucyAtMSwgMCwgb3IgMSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmVlZGxlIGlzIGxlc3NcbiAqICAgICB0aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRlciB0aGFuIHRoZSBlbGVtZW50LCByZXNwZWN0aXZlbHkuXG4gKiBAcGFyYW0gYUJpYXMgRWl0aGVyICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKiAgICAgRGVmYXVsdHMgdG8gJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKi9cbmV4cG9ydHMuc2VhcmNoID0gZnVuY3Rpb24gc2VhcmNoKGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIGlmIChhSGF5c3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gcmVjdXJzaXZlU2VhcmNoKC0xLCBhSGF5c3RhY2subGVuZ3RoLCBhTmVlZGxlLCBhSGF5c3RhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ29tcGFyZSwgYUJpYXMgfHwgZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvLyBXZSBoYXZlIGZvdW5kIGVpdGhlciB0aGUgZXhhY3QgZWxlbWVudCwgb3IgdGhlIG5leHQtY2xvc2VzdCBlbGVtZW50IHRoYW5cbiAgLy8gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci4gSG93ZXZlciwgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgc3VjaFxuICAvLyBlbGVtZW50LiBNYWtlIHN1cmUgd2UgYWx3YXlzIHJldHVybiB0aGUgc21hbGxlc3Qgb2YgdGhlc2UuXG4gIHdoaWxlIChpbmRleCAtIDEgPj0gMCkge1xuICAgIGlmIChhQ29tcGFyZShhSGF5c3RhY2tbaW5kZXhdLCBhSGF5c3RhY2tbaW5kZXggLSAxXSwgdHJ1ZSkgIT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAtLWluZGV4O1xuICB9XG5cbiAgcmV0dXJuIGluZGV4O1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxNCBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBtYXBwaW5nQiBpcyBhZnRlciBtYXBwaW5nQSB3aXRoIHJlc3BlY3QgdG8gZ2VuZXJhdGVkXG4gKiBwb3NpdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVkUG9zaXRpb25BZnRlcihtYXBwaW5nQSwgbWFwcGluZ0IpIHtcbiAgLy8gT3B0aW1pemVkIGZvciBtb3N0IGNvbW1vbiBjYXNlXG4gIHZhciBsaW5lQSA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmU7XG4gIHZhciBsaW5lQiA9IG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIHZhciBjb2x1bW5BID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uO1xuICB2YXIgY29sdW1uQiA9IG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgcmV0dXJuIGxpbmVCID4gbGluZUEgfHwgbGluZUIgPT0gbGluZUEgJiYgY29sdW1uQiA+PSBjb2x1bW5BIHx8XG4gICAgICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikgPD0gMDtcbn1cblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHRvIHByb3ZpZGUgYSBzb3J0ZWQgdmlldyBvZiBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiBhXG4gKiBwZXJmb3JtYW5jZSBjb25zY2lvdXMgbWFubmVyLiBJdCB0cmFkZXMgYSBuZWdsaWJhYmxlIG92ZXJoZWFkIGluIGdlbmVyYWxcbiAqIGNhc2UgZm9yIGEgbGFyZ2Ugc3BlZWR1cCBpbiBjYXNlIG9mIG1hcHBpbmdzIGJlaW5nIGFkZGVkIGluIG9yZGVyLlxuICovXG5mdW5jdGlvbiBNYXBwaW5nTGlzdCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgLy8gU2VydmVzIGFzIGluZmltdW1cbiAgdGhpcy5fbGFzdCA9IHtnZW5lcmF0ZWRMaW5lOiAtMSwgZ2VuZXJhdGVkQ29sdW1uOiAwfTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIHRocm91Z2ggaW50ZXJuYWwgaXRlbXMuIFRoaXMgbWV0aG9kIHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyB0aGF0XG4gKiBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIHRha2VzLlxuICpcbiAqIE5PVEU6IFRoZSBvcmRlciBvZiB0aGUgbWFwcGluZ3MgaXMgTk9UIGd1YXJhbnRlZWQuXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS51bnNvcnRlZEZvckVhY2ggPVxuICBmdW5jdGlvbiBNYXBwaW5nTGlzdF9mb3JFYWNoKGFDYWxsYmFjaywgYVRoaXNBcmcpIHtcbiAgICB0aGlzLl9hcnJheS5mb3JFYWNoKGFDYWxsYmFjaywgYVRoaXNBcmcpO1xuICB9O1xuXG4vKipcbiAqIEFkZCB0aGUgZ2l2ZW4gc291cmNlIG1hcHBpbmcuXG4gKlxuICogQHBhcmFtIE9iamVjdCBhTWFwcGluZ1xuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gTWFwcGluZ0xpc3RfYWRkKGFNYXBwaW5nKSB7XG4gIGlmIChnZW5lcmF0ZWRQb3NpdGlvbkFmdGVyKHRoaXMuX2xhc3QsIGFNYXBwaW5nKSkge1xuICAgIHRoaXMuX2xhc3QgPSBhTWFwcGluZztcbiAgICB0aGlzLl9hcnJheS5wdXNoKGFNYXBwaW5nKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9zb3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9hcnJheS5wdXNoKGFNYXBwaW5nKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmbGF0LCBzb3J0ZWQgYXJyYXkgb2YgbWFwcGluZ3MuIFRoZSBtYXBwaW5ncyBhcmUgc29ydGVkIGJ5XG4gKiBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gKlxuICogV0FSTklORzogVGhpcyBtZXRob2QgcmV0dXJucyBpbnRlcm5hbCBkYXRhIHdpdGhvdXQgY29weWluZywgZm9yXG4gKiBwZXJmb3JtYW5jZS4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IE5PVCBiZSBtdXRhdGVkLCBhbmQgc2hvdWxkIGJlIHRyZWF0ZWQgYXNcbiAqIGFuIGltbXV0YWJsZSBib3Jyb3cuIElmIHlvdSB3YW50IHRvIHRha2Ugb3duZXJzaGlwLCB5b3UgbXVzdCBtYWtlIHlvdXIgb3duXG4gKiBjb3B5LlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X3RvQXJyYXkoKSB7XG4gIGlmICghdGhpcy5fc29ydGVkKSB7XG4gICAgdGhpcy5fYXJyYXkuc29ydCh1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKTtcbiAgICB0aGlzLl9zb3J0ZWQgPSB0cnVlO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJheTtcbn07XG5cbmV4cG9ydHMuTWFwcGluZ0xpc3QgPSBNYXBwaW5nTGlzdDtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLy8gSXQgdHVybnMgb3V0IHRoYXQgc29tZSAobW9zdD8pIEphdmFTY3JpcHQgZW5naW5lcyBkb24ndCBzZWxmLWhvc3Rcbi8vIGBBcnJheS5wcm90b3R5cGUuc29ydGAuIFRoaXMgbWFrZXMgc2Vuc2UgYmVjYXVzZSBDKysgd2lsbCBsaWtlbHkgcmVtYWluXG4vLyBmYXN0ZXIgdGhhbiBKUyB3aGVuIGRvaW5nIHJhdyBDUFUtaW50ZW5zaXZlIHNvcnRpbmcuIEhvd2V2ZXIsIHdoZW4gdXNpbmcgYVxuLy8gY3VzdG9tIGNvbXBhcmF0b3IgZnVuY3Rpb24sIGNhbGxpbmcgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUgVk0ncyBDKysgYW5kXG4vLyBKSVQnZCBKUyBpcyByYXRoZXIgc2xvdyAqYW5kKiBsb3NlcyBKSVQgdHlwZSBpbmZvcm1hdGlvbiwgcmVzdWx0aW5nIGluXG4vLyB3b3JzZSBnZW5lcmF0ZWQgY29kZSBmb3IgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24gdGhhbiB3b3VsZCBiZSBvcHRpbWFsLiBJblxuLy8gZmFjdCwgd2hlbiBzb3J0aW5nIHdpdGggYSBjb21wYXJhdG9yLCB0aGVzZSBjb3N0cyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgb2Zcbi8vIHNvcnRpbmcgaW4gQysrLiBCeSB1c2luZyBvdXIgb3duIEpTLWltcGxlbWVudGVkIFF1aWNrIFNvcnQgKGJlbG93KSwgd2UgZ2V0XG4vLyBhIH4zNTAwbXMgbWVhbiBzcGVlZC11cCBpbiBgYmVuY2gvYmVuY2guaHRtbGAuXG5cbi8qKlxuICogU3dhcCB0aGUgZWxlbWVudHMgaW5kZXhlZCBieSBgeGAgYW5kIGB5YCBpbiB0aGUgYXJyYXkgYGFyeWAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJ5XG4gKiAgICAgICAgVGhlIGFycmF5LlxuICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGl0ZW0uXG4gKiBAcGFyYW0ge051bWJlcn0geVxuICogICAgICAgIFRoZSBpbmRleCBvZiB0aGUgc2Vjb25kIGl0ZW0uXG4gKi9cbmZ1bmN0aW9uIHN3YXAoYXJ5LCB4LCB5KSB7XG4gIHZhciB0ZW1wID0gYXJ5W3hdO1xuICBhcnlbeF0gPSBhcnlbeV07XG4gIGFyeVt5XSA9IHRlbXA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIHdpdGhpbiB0aGUgcmFuZ2UgYGxvdyAuLiBoaWdoYCBpbmNsdXNpdmUuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGxvd1xuICogICAgICAgIFRoZSBsb3dlciBib3VuZCBvbiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge051bWJlcn0gaGlnaFxuICogICAgICAgIFRoZSB1cHBlciBib3VuZCBvbiB0aGUgcmFuZ2UuXG4gKi9cbmZ1bmN0aW9uIHJhbmRvbUludEluUmFuZ2UobG93LCBoaWdoKSB7XG4gIHJldHVybiBNYXRoLnJvdW5kKGxvdyArIChNYXRoLnJhbmRvbSgpICogKGhpZ2ggLSBsb3cpKSk7XG59XG5cbi8qKlxuICogVGhlIFF1aWNrIFNvcnQgYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICogQHBhcmFtIHtOdW1iZXJ9IHBcbiAqICAgICAgICBTdGFydCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSByXG4gKiAgICAgICAgRW5kIGluZGV4IG9mIHRoZSBhcnJheVxuICovXG5mdW5jdGlvbiBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIHAsIHIpIHtcbiAgLy8gSWYgb3VyIGxvd2VyIGJvdW5kIGlzIGxlc3MgdGhhbiBvdXIgdXBwZXIgYm91bmQsIHdlICgxKSBwYXJ0aXRpb24gdGhlXG4gIC8vIGFycmF5IGludG8gdHdvIHBpZWNlcyBhbmQgKDIpIHJlY3Vyc2Ugb24gZWFjaCBoYWxmLiBJZiBpdCBpcyBub3QsIHRoaXMgaXNcbiAgLy8gdGhlIGVtcHR5IGFycmF5IGFuZCBvdXIgYmFzZSBjYXNlLlxuXG4gIGlmIChwIDwgcikge1xuICAgIC8vICgxKSBQYXJ0aXRpb25pbmcuXG4gICAgLy9cbiAgICAvLyBUaGUgcGFydGl0aW9uaW5nIGNob29zZXMgYSBwaXZvdCBiZXR3ZWVuIGBwYCBhbmQgYHJgIGFuZCBtb3ZlcyBhbGxcbiAgICAvLyBlbGVtZW50cyB0aGF0IGFyZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHBpdm90IHRvIHRoZSBiZWZvcmUgaXQsIGFuZFxuICAgIC8vIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIGl0IGFmdGVyIGl0LiBUaGUgZWZmZWN0IGlzIHRoYXRcbiAgICAvLyBvbmNlIHBhcnRpdGlvbiBpcyBkb25lLCB0aGUgcGl2b3QgaXMgaW4gdGhlIGV4YWN0IHBsYWNlIGl0IHdpbGwgYmUgd2hlblxuICAgIC8vIHRoZSBhcnJheSBpcyBwdXQgaW4gc29ydGVkIG9yZGVyLCBhbmQgaXQgd2lsbCBub3QgbmVlZCB0byBiZSBtb3ZlZFxuICAgIC8vIGFnYWluLiBUaGlzIHJ1bnMgaW4gTyhuKSB0aW1lLlxuXG4gICAgLy8gQWx3YXlzIGNob29zZSBhIHJhbmRvbSBwaXZvdCBzbyB0aGF0IGFuIGlucHV0IGFycmF5IHdoaWNoIGlzIHJldmVyc2VcbiAgICAvLyBzb3J0ZWQgZG9lcyBub3QgY2F1c2UgTyhuXjIpIHJ1bm5pbmcgdGltZS5cbiAgICB2YXIgcGl2b3RJbmRleCA9IHJhbmRvbUludEluUmFuZ2UocCwgcik7XG4gICAgdmFyIGkgPSBwIC0gMTtcblxuICAgIHN3YXAoYXJ5LCBwaXZvdEluZGV4LCByKTtcbiAgICB2YXIgcGl2b3QgPSBhcnlbcl07XG5cbiAgICAvLyBJbW1lZGlhdGVseSBhZnRlciBgamAgaXMgaW5jcmVtZW50ZWQgaW4gdGhpcyBsb29wLCB0aGUgZm9sbG93aW5nIGhvbGRcbiAgICAvLyB0cnVlOlxuICAgIC8vXG4gICAgLy8gICAqIEV2ZXJ5IGVsZW1lbnQgaW4gYGFyeVtwIC4uIGldYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHBpdm90LlxuICAgIC8vXG4gICAgLy8gICAqIEV2ZXJ5IGVsZW1lbnQgaW4gYGFyeVtpKzEgLi4gai0xXWAgaXMgZ3JlYXRlciB0aGFuIHRoZSBwaXZvdC5cbiAgICBmb3IgKHZhciBqID0gcDsgaiA8IHI7IGorKykge1xuICAgICAgaWYgKGNvbXBhcmF0b3IoYXJ5W2pdLCBwaXZvdCkgPD0gMCkge1xuICAgICAgICBpICs9IDE7XG4gICAgICAgIHN3YXAoYXJ5LCBpLCBqKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2FwKGFyeSwgaSArIDEsIGopO1xuICAgIHZhciBxID0gaSArIDE7XG5cbiAgICAvLyAoMikgUmVjdXJzZSBvbiBlYWNoIGhhbGYuXG5cbiAgICBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIHAsIHEgLSAxKTtcbiAgICBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIHEgKyAxLCByKTtcbiAgfVxufVxuXG4vKipcbiAqIFNvcnQgdGhlIGdpdmVuIGFycmF5IGluLXBsYWNlIHdpdGggdGhlIGdpdmVuIGNvbXBhcmF0b3IgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJ5XG4gKiAgICAgICAgQW4gYXJyYXkgdG8gc29ydC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbXBhcmF0b3JcbiAqICAgICAgICBGdW5jdGlvbiB0byB1c2UgdG8gY29tcGFyZSB0d28gaXRlbXMuXG4gKi9cbmV4cG9ydHMucXVpY2tTb3J0ID0gZnVuY3Rpb24gKGFyeSwgY29tcGFyYXRvcikge1xuICBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIDAsIGFyeS5sZW5ndGggLSAxKTtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgYmluYXJ5U2VhcmNoID0gcmVxdWlyZSgnLi9iaW5hcnktc2VhcmNoJyk7XG52YXIgQXJyYXlTZXQgPSByZXF1aXJlKCcuL2FycmF5LXNldCcpLkFycmF5U2V0O1xudmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xudmFyIHF1aWNrU29ydCA9IHJlcXVpcmUoJy4vcXVpY2stc29ydCcpLnF1aWNrU29ydDtcblxuZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHJldHVybiBzb3VyY2VNYXAuc2VjdGlvbnMgIT0gbnVsbFxuICAgID8gbmV3IEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcihzb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpXG4gICAgOiBuZXcgQmFzaWNTb3VyY2VNYXBDb25zdW1lcihzb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpO1xufVxuXG5Tb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID0gZnVuY3Rpb24oYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICByZXR1cm4gQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpO1xufVxuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuLy8gYF9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZCBgX19vcmlnaW5hbE1hcHBpbmdzYCBhcmUgYXJyYXlzIHRoYXQgaG9sZCB0aGVcbi8vIHBhcnNlZCBtYXBwaW5nIGNvb3JkaW5hdGVzIGZyb20gdGhlIHNvdXJjZSBtYXAncyBcIm1hcHBpbmdzXCIgYXR0cmlidXRlLiBUaGV5XG4vLyBhcmUgbGF6aWx5IGluc3RhbnRpYXRlZCwgYWNjZXNzZWQgdmlhIHRoZSBgX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgZ2V0dGVycyByZXNwZWN0aXZlbHksIGFuZCB3ZSBvbmx5IHBhcnNlIHRoZSBtYXBwaW5nc1xuLy8gYW5kIGNyZWF0ZSB0aGVzZSBhcnJheXMgb25jZSBxdWVyaWVkIGZvciBhIHNvdXJjZSBsb2NhdGlvbi4gV2UganVtcCB0aHJvdWdoXG4vLyB0aGVzZSBob29wcyBiZWNhdXNlIHRoZXJlIGNhbiBiZSBtYW55IHRob3VzYW5kcyBvZiBtYXBwaW5ncywgYW5kIHBhcnNpbmdcbi8vIHRoZW0gaXMgZXhwZW5zaXZlLCBzbyB3ZSBvbmx5IHdhbnQgdG8gZG8gaXQgaWYgd2UgbXVzdC5cbi8vXG4vLyBFYWNoIG9iamVjdCBpbiB0aGUgYXJyYXlzIGlzIG9mIHRoZSBmb3JtOlxuLy9cbi8vICAgICB7XG4vLyAgICAgICBnZW5lcmF0ZWRMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBzb3VyY2U6IFRoZSBwYXRoIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGF0IGdlbmVyYXRlZCB0aGlzXG4vLyAgICAgICAgICAgICAgIGNodW5rIG9mIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRoYXRcbi8vICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsQ29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRoYXRcbi8vICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgbmFtZTogVGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFsIHN5bWJvbCB3aGljaCBnZW5lcmF0ZWQgdGhpcyBjaHVuayBvZlxuLy8gICAgICAgICAgICAgY29kZS5cbi8vICAgICB9XG4vL1xuLy8gQWxsIHByb3BlcnRpZXMgZXhjZXB0IGZvciBgZ2VuZXJhdGVkTGluZWAgYW5kIGBnZW5lcmF0ZWRDb2x1bW5gIGNhbiBiZVxuLy8gYG51bGxgLlxuLy9cbi8vIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMuXG4vL1xuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMuXG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX2dlbmVyYXRlZE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfZ2VuZXJhdGVkTWFwcGluZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzO1xuICB9XG59KTtcblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfY2hhcklzTWFwcGluZ1NlcGFyYXRvcihhU3RyLCBpbmRleCkge1xuICAgIHZhciBjID0gYVN0ci5jaGFyQXQoaW5kZXgpO1xuICAgIHJldHVybiBjID09PSBcIjtcIiB8fCBjID09PSBcIixcIjtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3BhcnNlTWFwcGluZ3MoYVN0ciwgYVNvdXJjZVJvb3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IF9wYXJzZU1hcHBpbmdzXCIpO1xuICB9O1xuXG5Tb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVIgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVIgPSAyO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG5Tb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGVhY2ggbWFwcGluZyBiZXR3ZWVuIGFuIG9yaWdpbmFsIHNvdXJjZS9saW5lL2NvbHVtbiBhbmQgYVxuICogZ2VuZXJhdGVkIGxpbmUvY29sdW1uIGluIHRoaXMgc291cmNlIG1hcC5cbiAqXG4gKiBAcGFyYW0gRnVuY3Rpb24gYUNhbGxiYWNrXG4gKiAgICAgICAgVGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdpdGggZWFjaCBtYXBwaW5nLlxuICogQHBhcmFtIE9iamVjdCBhQ29udGV4dFxuICogICAgICAgIE9wdGlvbmFsLiBJZiBzcGVjaWZpZWQsIHRoaXMgb2JqZWN0IHdpbGwgYmUgdGhlIHZhbHVlIG9mIGB0aGlzYCBldmVyeVxuICogICAgICAgIHRpbWUgdGhhdCBgYUNhbGxiYWNrYCBpcyBjYWxsZWQuXG4gKiBAcGFyYW0gYU9yZGVyXG4gKiAgICAgICAgRWl0aGVyIGBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVJgIG9yXG4gKiAgICAgICAgYFNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSYC4gU3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgdG9cbiAqICAgICAgICBpdGVyYXRlIG92ZXIgdGhlIG1hcHBpbmdzIHNvcnRlZCBieSB0aGUgZ2VuZXJhdGVkIGZpbGUncyBsaW5lL2NvbHVtblxuICogICAgICAgIG9yZGVyIG9yIHRoZSBvcmlnaW5hbCdzIHNvdXJjZS9saW5lL2NvbHVtbiBvcmRlciwgcmVzcGVjdGl2ZWx5LiBEZWZhdWx0cyB0b1xuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVJgLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuZWFjaE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9lYWNoTWFwcGluZyhhQ2FsbGJhY2ssIGFDb250ZXh0LCBhT3JkZXIpIHtcbiAgICB2YXIgY29udGV4dCA9IGFDb250ZXh0IHx8IG51bGw7XG4gICAgdmFyIG9yZGVyID0gYU9yZGVyIHx8IFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUjtcblxuICAgIHZhciBtYXBwaW5ncztcbiAgICBzd2l0Y2ggKG9yZGVyKSB7XG4gICAgY2FzZSBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUjpcbiAgICAgIG1hcHBpbmdzID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIG9yZGVyIG9mIGl0ZXJhdGlvbi5cIik7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZVJvb3QgPSB0aGlzLnNvdXJjZVJvb3Q7XG4gICAgbWFwcGluZ3MubWFwKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2UgPT09IG51bGwgPyBudWxsIDogdGhpcy5fc291cmNlcy5hdChtYXBwaW5nLnNvdXJjZSk7XG4gICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgc291cmNlLCB0aGlzLl9zb3VyY2VNYXBVUkwpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbixcbiAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgb3JpZ2luYWxDb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgIG5hbWU6IG1hcHBpbmcubmFtZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpXG4gICAgICB9O1xuICAgIH0sIHRoaXMpLmZvckVhY2goYUNhbGxiYWNrLCBjb250ZXh0KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwcm92aWRlZC4gSWYgbm8gY29sdW1uIGlzIHByb3ZpZGVkLCByZXR1cm5zIGFsbCBtYXBwaW5nc1xuICogY29ycmVzcG9uZGluZyB0byBhIGVpdGhlciB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciBvciB0aGUgbmV4dFxuICogY2xvc2VzdCBsaW5lIHRoYXQgaGFzIGFueSBtYXBwaW5ncy4gT3RoZXJ3aXNlLCByZXR1cm5zIGFsbCBtYXBwaW5nc1xuICogY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbGluZSBhbmQgZWl0aGVyIHRoZSBjb2x1bW4gd2UgYXJlIHNlYXJjaGluZyBmb3JcbiAqIG9yIHRoZSBuZXh0IGNsb3Nlc3QgY29sdW1uIHRoYXQgaGFzIGFueSBvZmZzZXRzLlxuICpcbiAqIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogT3B0aW9uYWwuIHRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBhcnJheSBvZiBvYmplY3RzIGlzIHJldHVybmVkLCBlYWNoIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgIFRoZSBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBuZWVkbGUuc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KG5lZWRsZS5zb3VyY2UpO1xuICAgIGlmIChuZWVkbGUuc291cmNlIDwgMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgcmF3IHNvdXJjZSBtYXAgKGVpdGhlciBhcyBhIEpTT04gc3RyaW5nLCBvclxuICogYWxyZWFkeSBwYXJzZWQgdG8gYW4gb2JqZWN0KS4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBzb3VyY2UgbWFwcyBoYXZlIHRoZVxuICogZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gc291cmNlczogQW4gYXJyYXkgb2YgVVJMcyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG5hbWVzOiBBbiBhcnJheSBvZiBpZGVudGlmaWVycyB3aGljaCBjYW4gYmUgcmVmZXJyZW5jZWQgYnkgaW5kaXZpZHVhbCBtYXBwaW5ncy5cbiAqICAgLSBzb3VyY2VSb290OiBPcHRpb25hbC4gVGhlIFVSTCByb290IGZyb20gd2hpY2ggYWxsIHNvdXJjZXMgYXJlIHJlbGF0aXZlLlxuICogICAtIHNvdXJjZXNDb250ZW50OiBPcHRpb25hbC4gQW4gYXJyYXkgb2YgY29udGVudHMgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBtYXBwaW5nczogQSBzdHJpbmcgb2YgYmFzZTY0IFZMUXMgd2hpY2ggY29udGFpbiB0aGUgYWN0dWFsIG1hcHBpbmdzLlxuICogICAtIGZpbGU6IE9wdGlvbmFsLiBUaGUgZ2VuZXJhdGVkIGZpbGUgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAqXG4gKiBIZXJlIGlzIGFuIGV4YW1wbGUgc291cmNlIG1hcCwgdGFrZW4gZnJvbSB0aGUgc291cmNlIG1hcCBzcGVjWzBdOlxuICpcbiAqICAgICB7XG4gKiAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgIGZpbGU6IFwib3V0LmpzXCIsXG4gKiAgICAgICBzb3VyY2VSb290IDogXCJcIixcbiAqICAgICAgIHNvdXJjZXM6IFtcImZvby5qc1wiLCBcImJhci5qc1wiXSxcbiAqICAgICAgIG5hbWVzOiBbXCJzcmNcIiwgXCJtYXBzXCIsIFwiYXJlXCIsIFwiZnVuXCJdLFxuICogICAgICAgbWFwcGluZ3M6IFwiQUEsQUI7O0FCQ0RFO1wiXG4gKiAgICAgfVxuICpcbiAqIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpZiBnaXZlbiwgaXMgYSBzdHJpbmcgd2hvc2UgdmFsdWUgaXMgdGhlIFVSTFxuICogYXQgd2hpY2ggdGhlIHNvdXJjZSBtYXAgd2FzIGZvdW5kLiAgVGhpcyBVUkwgaXMgdXNlZCB0byBjb21wdXRlIHRoZVxuICogc291cmNlcyBhcnJheS5cbiAqXG4gKiBbMF06IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVUxUkdBZWhRd1J5cFVUb3ZGMUtSbHBpT0Z6ZTBiLV8yZ2M2ZkFIMEtZMGsvZWRpdD9wbGk9MSNcbiAqL1xuZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcihhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKSB7XG4gIHZhciBzb3VyY2VNYXAgPSBhU291cmNlTWFwO1xuICBpZiAodHlwZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgc291cmNlTWFwID0gdXRpbC5wYXJzZVNvdXJjZU1hcElucHV0KGFTb3VyY2VNYXApO1xuICB9XG5cbiAgdmFyIHZlcnNpb24gPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICd2ZXJzaW9uJyk7XG4gIHZhciBzb3VyY2VzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlcycpO1xuICAvLyBTYXNzIDMuMyBsZWF2ZXMgb3V0IHRoZSAnbmFtZXMnIGFycmF5LCBzbyB3ZSBkZXZpYXRlIGZyb20gdGhlIHNwZWMgKHdoaWNoXG4gIC8vIHJlcXVpcmVzIHRoZSBhcnJheSkgdG8gcGxheSBuaWNlIGhlcmUuXG4gIHZhciBuYW1lcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ25hbWVzJywgW10pO1xuICB2YXIgc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgdmFyIHNvdXJjZXNDb250ZW50ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlc0NvbnRlbnQnLCBudWxsKTtcbiAgdmFyIG1hcHBpbmdzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbWFwcGluZ3MnKTtcbiAgdmFyIGZpbGUgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdmaWxlJywgbnVsbCk7XG5cbiAgLy8gT25jZSBhZ2FpbiwgU2FzcyBkZXZpYXRlcyBmcm9tIHRoZSBzcGVjIGFuZCBzdXBwbGllcyB0aGUgdmVyc2lvbiBhcyBhXG4gIC8vIHN0cmluZyByYXRoZXIgdGhhbiBhIG51bWJlciwgc28gd2UgdXNlIGxvb3NlIGVxdWFsaXR5IGNoZWNraW5nIGhlcmUuXG4gIGlmICh2ZXJzaW9uICE9IHRoaXMuX3ZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VSb290KSB7XG4gICAgc291cmNlUm9vdCA9IHV0aWwubm9ybWFsaXplKHNvdXJjZVJvb3QpO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5fYWJzb2x1dGVTb3VyY2VzID0gdGhpcy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHV0aWwuY29tcHV0ZVNvdXJjZVVSTChzb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgfSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLl9zb3VyY2VNYXBVUkwgPSBhU291cmNlTWFwVVJMO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBmaW5kIHRoZSBpbmRleCBvZiBhIHNvdXJjZS4gIFJldHVybnMgLTEgaWYgbm90XG4gKiBmb3VuZC5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRTb3VyY2VJbmRleCA9IGZ1bmN0aW9uKGFTb3VyY2UpIHtcbiAgdmFyIHJlbGF0aXZlU291cmNlID0gYVNvdXJjZTtcbiAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgcmVsYXRpdmVTb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgcmVsYXRpdmVTb3VyY2UpO1xuICB9XG5cbiAgaWYgKHRoaXMuX3NvdXJjZXMuaGFzKHJlbGF0aXZlU291cmNlKSkge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2VzLmluZGV4T2YocmVsYXRpdmVTb3VyY2UpO1xuICB9XG5cbiAgLy8gTWF5YmUgYVNvdXJjZSBpcyBhbiBhYnNvbHV0ZSBVUkwgYXMgcmV0dXJuZWQgYnkgfHNvdXJjZXN8LiAgSW5cbiAgLy8gdGhpcyBjYXNlIHdlIGNhbid0IHNpbXBseSB1bmRvIHRoZSB0cmFuc2Zvcm0uXG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5fYWJzb2x1dGVTb3VyY2VzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKHRoaXMuX2Fic29sdXRlU291cmNlc1tpXSA9PSBhU291cmNlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgZnJvbSBhIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqXG4gKiBAcGFyYW0gU291cmNlTWFwR2VuZXJhdG9yIGFTb3VyY2VNYXBcbiAqICAgICAgICBUaGUgc291cmNlIG1hcCB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG4gKiBAcGFyYW0gU3RyaW5nIGFTb3VyY2VNYXBVUkxcbiAqICAgICAgICBUaGUgVVJMIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIGNhbiBiZSBmb3VuZCAob3B0aW9uYWwpXG4gKiBAcmV0dXJucyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICAgIHZhciBzbWMgPSBPYmplY3QuY3JlYXRlKEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcblxuICAgIHZhciBuYW1lcyA9IHNtYy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fbmFtZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICB2YXIgc291cmNlcyA9IHNtYy5fc291cmNlcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9zb3VyY2VzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgc21jLnNvdXJjZVJvb3QgPSBhU291cmNlTWFwLl9zb3VyY2VSb290O1xuICAgIHNtYy5zb3VyY2VzQ29udGVudCA9IGFTb3VyY2VNYXAuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQoc21jLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYy5zb3VyY2VSb290KTtcbiAgICBzbWMuZmlsZSA9IGFTb3VyY2VNYXAuX2ZpbGU7XG4gICAgc21jLl9zb3VyY2VNYXBVUkwgPSBhU291cmNlTWFwVVJMO1xuICAgIHNtYy5fYWJzb2x1dGVTb3VyY2VzID0gc21jLl9zb3VyY2VzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc21jLnNvdXJjZVJvb3QsIHMsIGFTb3VyY2VNYXBVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gQmVjYXVzZSB3ZSBhcmUgbW9kaWZ5aW5nIHRoZSBlbnRyaWVzIChieSBjb252ZXJ0aW5nIHN0cmluZyBzb3VyY2VzIGFuZFxuICAgIC8vIG5hbWVzIHRvIGluZGljZXMgaW50byB0aGUgc291cmNlcyBhbmQgbmFtZXMgQXJyYXlTZXRzKSwgd2UgaGF2ZSB0byBtYWtlXG4gICAgLy8gYSBjb3B5IG9mIHRoZSBlbnRyeSBvciBlbHNlIGJhZCB0aGluZ3MgaGFwcGVuLiBTaGFyZWQgbXV0YWJsZSBzdGF0ZVxuICAgIC8vIHN0cmlrZXMgYWdhaW4hIFNlZSBnaXRodWIgaXNzdWUgIzE5MS5cblxuICAgIHZhciBnZW5lcmF0ZWRNYXBwaW5ncyA9IGFTb3VyY2VNYXAuX21hcHBpbmdzLnRvQXJyYXkoKS5zbGljZSgpO1xuICAgIHZhciBkZXN0R2VuZXJhdGVkTWFwcGluZ3MgPSBzbWMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHZhciBkZXN0T3JpZ2luYWxNYXBwaW5ncyA9IHNtYy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNyY01hcHBpbmcgPSBnZW5lcmF0ZWRNYXBwaW5nc1tpXTtcbiAgICAgIHZhciBkZXN0TWFwcGluZyA9IG5ldyBNYXBwaW5nO1xuICAgICAgZGVzdE1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9IHNyY01hcHBpbmcuZ2VuZXJhdGVkTGluZTtcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHNyY01hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAoc3JjTWFwcGluZy5zb3VyY2UpIHtcbiAgICAgICAgZGVzdE1hcHBpbmcuc291cmNlID0gc291cmNlcy5pbmRleE9mKHNyY01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgZGVzdE1hcHBpbmcub3JpZ2luYWxMaW5lID0gc3JjTWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gc3JjTWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICBpZiAoc3JjTWFwcGluZy5uYW1lKSB7XG4gICAgICAgICAgZGVzdE1hcHBpbmcubmFtZSA9IG5hbWVzLmluZGV4T2Yoc3JjTWFwcGluZy5uYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc3RPcmlnaW5hbE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgICAgfVxuXG4gICAgICBkZXN0R2VuZXJhdGVkTWFwcGluZ3MucHVzaChkZXN0TWFwcGluZyk7XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KHNtYy5fX29yaWdpbmFsTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMpO1xuXG4gICAgcmV0dXJuIHNtYztcbiAgfTtcblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVTb3VyY2VzLnNsaWNlKCk7XG4gIH1cbn0pO1xuXG4vKipcbiAqIFByb3ZpZGUgdGhlIEpJVCB3aXRoIGEgbmljZSBzaGFwZSAvIGhpZGRlbiBjbGFzcy5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZygpIHtcbiAgdGhpcy5nZW5lcmF0ZWRMaW5lID0gMDtcbiAgdGhpcy5nZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICB0aGlzLnNvdXJjZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdGhpcy5vcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHRoaXMubmFtZSA9IG51bGw7XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3BhcnNlTWFwcGluZ3MoYVN0ciwgYVNvdXJjZVJvb3QpIHtcbiAgICB2YXIgZ2VuZXJhdGVkTGluZSA9IDE7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBsZW5ndGggPSBhU3RyLmxlbmd0aDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjYWNoZWRTZWdtZW50cyA9IHt9O1xuICAgIHZhciB0ZW1wID0ge307XG4gICAgdmFyIG9yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgbWFwcGluZywgc3RyLCBzZWdtZW50LCBlbmQsIHZhbHVlO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnOycpIHtcbiAgICAgICAgZ2VuZXJhdGVkTGluZSsrO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChhU3RyLmNoYXJBdChpbmRleCkgPT09ICcsJykge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG1hcHBpbmcgPSBuZXcgTWFwcGluZygpO1xuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBnZW5lcmF0ZWRMaW5lO1xuXG4gICAgICAgIC8vIEJlY2F1c2UgZWFjaCBvZmZzZXQgaXMgZW5jb2RlZCByZWxhdGl2ZSB0byB0aGUgcHJldmlvdXMgb25lLFxuICAgICAgICAvLyBtYW55IHNlZ21lbnRzIG9mdGVuIGhhdmUgdGhlIHNhbWUgZW5jb2RpbmcuIFdlIGNhbiBleHBsb2l0IHRoaXNcbiAgICAgICAgLy8gZmFjdCBieSBjYWNoaW5nIHRoZSBwYXJzZWQgdmFyaWFibGUgbGVuZ3RoIGZpZWxkcyBvZiBlYWNoIHNlZ21lbnQsXG4gICAgICAgIC8vIGFsbG93aW5nIHVzIHRvIGF2b2lkIGEgc2Vjb25kIHBhcnNlIGlmIHdlIGVuY291bnRlciB0aGUgc2FtZVxuICAgICAgICAvLyBzZWdtZW50IGFnYWluLlxuICAgICAgICBmb3IgKGVuZCA9IGluZGV4OyBlbmQgPCBsZW5ndGg7IGVuZCsrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgZW5kKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0ciA9IGFTdHIuc2xpY2UoaW5kZXgsIGVuZCk7XG5cbiAgICAgICAgc2VnbWVudCA9IGNhY2hlZFNlZ21lbnRzW3N0cl07XG4gICAgICAgIGlmIChzZWdtZW50KSB7XG4gICAgICAgICAgaW5kZXggKz0gc3RyLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWdtZW50ID0gW107XG4gICAgICAgICAgd2hpbGUgKGluZGV4IDwgZW5kKSB7XG4gICAgICAgICAgICBiYXNlNjRWTFEuZGVjb2RlKGFTdHIsIGluZGV4LCB0ZW1wKTtcbiAgICAgICAgICAgIHZhbHVlID0gdGVtcC52YWx1ZTtcbiAgICAgICAgICAgIGluZGV4ID0gdGVtcC5yZXN0O1xuICAgICAgICAgICAgc2VnbWVudC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgYSBzb3VyY2UsIGJ1dCBubyBsaW5lIGFuZCBjb2x1bW4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgYSBzb3VyY2UgYW5kIGxpbmUsIGJ1dCBubyBjb2x1bW4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYWNoZWRTZWdtZW50c1tzdHJdID0gc2VnbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdlbmVyYXRlZCBjb2x1bW4uXG4gICAgICAgIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uID0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gKyBzZWdtZW50WzBdO1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvLyBPcmlnaW5hbCBzb3VyY2UuXG4gICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBwcmV2aW91c1NvdXJjZSArIHNlZ21lbnRbMV07XG4gICAgICAgICAgcHJldmlvdXNTb3VyY2UgKz0gc2VnbWVudFsxXTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGxpbmUuXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBwcmV2aW91c09yaWdpbmFsTGluZSArIHNlZ21lbnRbMl07XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcbiAgICAgICAgICAvLyBMaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWRcbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSArPSAxO1xuXG4gICAgICAgICAgLy8gT3JpZ2luYWwgY29sdW1uLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBwcmV2aW91c09yaWdpbmFsQ29sdW1uICsgc2VnbWVudFszXTtcbiAgICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDQpIHtcbiAgICAgICAgICAgIC8vIE9yaWdpbmFsIG5hbWUuXG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBwcmV2aW91c05hbWUgKyBzZWdtZW50WzRdO1xuICAgICAgICAgICAgcHJldmlvdXNOYW1lICs9IHNlZ21lbnRbNF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2VuZXJhdGVkTWFwcGluZ3MucHVzaChtYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBvcmlnaW5hbE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWlja1NvcnQoZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IGdlbmVyYXRlZE1hcHBpbmdzO1xuXG4gICAgcXVpY2tTb3J0KG9yaWdpbmFsTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMpO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gb3JpZ2luYWxNYXBwaW5ncztcbiAgfTtcblxuLyoqXG4gKiBGaW5kIHRoZSBtYXBwaW5nIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBoeXBvdGhldGljYWwgXCJuZWVkbGVcIiBtYXBwaW5nIHRoYXRcbiAqIHdlIGFyZSBzZWFyY2hpbmcgZm9yIGluIHRoZSBnaXZlbiBcImhheXN0YWNrXCIgb2YgbWFwcGluZ3MuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2ZpbmRNYXBwaW5nKGFOZWVkbGUsIGFNYXBwaW5ncywgYUxpbmVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ29sdW1uTmFtZSwgYUNvbXBhcmF0b3IsIGFCaWFzKSB7XG4gICAgLy8gVG8gcmV0dXJuIHRoZSBwb3NpdGlvbiB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgd2UgbXVzdCBmaXJzdCBmaW5kIHRoZVxuICAgIC8vIG1hcHBpbmcgZm9yIHRoZSBnaXZlbiBwb3NpdGlvbiBhbmQgdGhlbiByZXR1cm4gdGhlIG9wcG9zaXRlIHBvc2l0aW9uIGl0XG4gICAgLy8gcG9pbnRzIHRvLiBCZWNhdXNlIHRoZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB3ZSBjYW4gdXNlIGJpbmFyeSBzZWFyY2ggdG9cbiAgICAvLyBmaW5kIHRoZSBiZXN0IG1hcHBpbmcuXG5cbiAgICBpZiAoYU5lZWRsZVthTGluZU5hbWVdIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0xpbmUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMSwgZ290ICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhTmVlZGxlW2FMaW5lTmFtZV0pO1xuICAgIH1cbiAgICBpZiAoYU5lZWRsZVthQ29sdW1uTmFtZV0gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb2x1bW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgZ290ICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhTmVlZGxlW2FDb2x1bW5OYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmFyeVNlYXJjaC5zZWFyY2goYU5lZWRsZSwgYU1hcHBpbmdzLCBhQ29tcGFyYXRvciwgYUJpYXMpO1xuICB9O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIGxhc3QgY29sdW1uIGZvciBlYWNoIGdlbmVyYXRlZCBtYXBwaW5nLiBUaGUgbGFzdCBjb2x1bW4gaXNcbiAqIGluY2x1c2l2ZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29tcHV0ZUNvbHVtblNwYW5zID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfY29tcHV0ZUNvbHVtblNwYW5zKCkge1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICAvLyBNYXBwaW5ncyBkbyBub3QgY29udGFpbiBhIGZpZWxkIGZvciB0aGUgbGFzdCBnZW5lcmF0ZWQgY29sdW1udC4gV2VcbiAgICAgIC8vIGNhbiBjb21lIHVwIHdpdGggYW4gb3B0aW1pc3RpYyBlc3RpbWF0ZSwgaG93ZXZlciwgYnkgYXNzdW1pbmcgdGhhdFxuICAgICAgLy8gbWFwcGluZ3MgYXJlIGNvbnRpZ3VvdXMgKGkuZS4gZ2l2ZW4gdHdvIGNvbnNlY3V0aXZlIG1hcHBpbmdzLCB0aGVcbiAgICAgIC8vIGZpcnN0IG1hcHBpbmcgZW5kcyB3aGVyZSB0aGUgc2Vjb25kIG9uZSBzdGFydHMpLlxuICAgICAgaWYgKGluZGV4ICsgMSA8IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLmxlbmd0aCkge1xuICAgICAgICB2YXIgbmV4dE1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleCArIDFdO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5leHRNYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5nLmxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLSAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsYXN0IG1hcHBpbmcgZm9yIGVhY2ggbGluZSBzcGFucyB0aGUgZW50aXJlIGxpbmUuXG4gICAgICBtYXBwaW5nLmxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBJbmZpbml0eTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlLCBsaW5lLCBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgZ2VuZXJhdGVkXG4gKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXJcbiAqICAgICBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuICBUaGUgY29sdW1uXG4gKiAgICAgbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUub3JpZ2luYWxQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncyxcbiAgICAgIFwiZ2VuZXJhdGVkTGluZVwiLFxuICAgICAgXCJnZW5lcmF0ZWRDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZWVkbGUuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICB2YXIgc291cmNlID0gdXRpbC5nZXRBcmcobWFwcGluZywgJ3NvdXJjZScsIG51bGwpO1xuICAgICAgICBpZiAoc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5hdChzb3VyY2UpO1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuY29tcHV0ZVNvdXJjZVVSTCh0aGlzLnNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KGFTb3VyY2UpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFtpbmRleF07XG4gICAgfVxuXG4gICAgdmFyIHJlbGF0aXZlU291cmNlID0gYVNvdXJjZTtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IHJlbGF0aXZlU291cmNlLnJlcGxhY2UoL15maWxlOlxcL1xcLy8sIFwiXCIpO1xuICAgICAgaWYgKHVybC5zY2hlbWUgPT0gXCJmaWxlXCJcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhmaWxlVXJpQWJzUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGZpbGVVcmlBYnNQYXRoKV1cbiAgICAgIH1cblxuICAgICAgaWYgKCghdXJsLnBhdGggfHwgdXJsLnBhdGggPT0gXCIvXCIpXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoXCIvXCIgKyByZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyByZWxhdGl2ZVNvdXJjZSArICdcIiBpcyBub3QgaW4gdGhlIFNvdXJjZU1hcC4nKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aFxuICogdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBmaWxlbmFtZSBvZiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgY29sdW1uXG4gKiAgICAgbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAgIFRoZSBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgc291cmNlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKTtcbiAgICBzb3VyY2UgPSB0aGlzLl9maW5kU291cmNlSW5kZXgoc291cmNlKTtcbiAgICBpZiAoc291cmNlIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBsYXN0Q29sdW1uOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgIG9yaWdpbmFsTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICBcIm9yaWdpbmFsTGluZVwiLFxuICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlID09PSBuZWVkbGUuc291cmNlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGwsXG4gICAgICBsYXN0Q29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuZXhwb3J0cy5CYXNpY1NvdXJjZU1hcENvbnN1bWVyID0gQmFzaWNTb3VyY2VNYXBDb25zdW1lcjtcblxuLyoqXG4gKiBBbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIgaW5zdGFuY2UgcmVwcmVzZW50cyBhIHBhcnNlZCBzb3VyY2UgbWFwIHdoaWNoXG4gKiB3ZSBjYW4gcXVlcnkgZm9yIGluZm9ybWF0aW9uLiBJdCBkaWZmZXJzIGZyb20gQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpblxuICogdGhhdCBpdCB0YWtlcyBcImluZGV4ZWRcIiBzb3VyY2UgbWFwcyAoaS5lLiBvbmVzIHdpdGggYSBcInNlY3Rpb25zXCIgZmllbGQpIGFzXG4gKiBpbnB1dC5cbiAqXG4gKiBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIGEgcmF3IHNvdXJjZSBtYXAgKGVpdGhlciBhcyBhIEpTT04gc3RyaW5nLCBvciBhbHJlYWR5XG4gKiBwYXJzZWQgdG8gYW4gb2JqZWN0KS4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjIGZvciBpbmRleGVkIHNvdXJjZSBtYXBzLCB0aGV5XG4gKiBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKiAgIC0gc2VjdGlvbnM6IEEgbGlzdCBvZiBzZWN0aW9uIGRlZmluaXRpb25zLlxuICpcbiAqIEVhY2ggdmFsdWUgdW5kZXIgdGhlIFwic2VjdGlvbnNcIiBmaWVsZCBoYXMgdHdvIGZpZWxkczpcbiAqICAgLSBvZmZzZXQ6IFRoZSBvZmZzZXQgaW50byB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkIGF0IHdoaWNoIHRoaXMgc2VjdGlvblxuICogICAgICAgYmVnaW5zIHRvIGFwcGx5LCBkZWZpbmVkIGFzIGFuIG9iamVjdCB3aXRoIGEgXCJsaW5lXCIgYW5kIFwiY29sdW1uXCJcbiAqICAgICAgIGZpZWxkLlxuICogICAtIG1hcDogQSBzb3VyY2UgbWFwIGRlZmluaXRpb24uIFRoaXMgc291cmNlIG1hcCBjb3VsZCBhbHNvIGJlIGluZGV4ZWQsXG4gKiAgICAgICBidXQgZG9lc24ndCBoYXZlIHRvIGJlLlxuICpcbiAqIEluc3RlYWQgb2YgdGhlIFwibWFwXCIgZmllbGQsIGl0J3MgYWxzbyBwb3NzaWJsZSB0byBoYXZlIGEgXCJ1cmxcIiBmaWVsZFxuICogc3BlY2lmeWluZyBhIFVSTCB0byByZXRyaWV2ZSBhIHNvdXJjZSBtYXAgZnJvbSwgYnV0IHRoYXQncyBjdXJyZW50bHlcbiAqIHVuc3VwcG9ydGVkLlxuICpcbiAqIEhlcmUncyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXSwgYnV0XG4gKiBtb2RpZmllZCB0byBvbWl0IGEgc2VjdGlvbiB3aGljaCB1c2VzIHRoZSBcInVybFwiIGZpZWxkLlxuICpcbiAqICB7XG4gKiAgICB2ZXJzaW9uIDogMyxcbiAqICAgIGZpbGU6IFwiYXBwLmpzXCIsXG4gKiAgICBzZWN0aW9uczogW3tcbiAqICAgICAgb2Zmc2V0OiB7bGluZToxMDAsIGNvbHVtbjoxMH0sXG4gKiAgICAgIG1hcDoge1xuICogICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgIGZpbGU6IFwic2VjdGlvbi5qc1wiLFxuICogICAgICAgIHNvdXJjZXM6IFtcImZvby5qc1wiLCBcImJhci5qc1wiXSxcbiAqICAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgICBtYXBwaW5nczogXCJBQUFBLEU7O0FCQ0RFO1wiXG4gKiAgICAgIH1cbiAqICAgIH1dLFxuICogIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc2VjdGlvbnMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzZWN0aW9ucycpO1xuXG4gIGlmICh2ZXJzaW9uICE9IHRoaXMuX3ZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcblxuICB2YXIgbGFzdE9mZnNldCA9IHtcbiAgICBsaW5lOiAtMSxcbiAgICBjb2x1bW46IDBcbiAgfTtcbiAgdGhpcy5fc2VjdGlvbnMgPSBzZWN0aW9ucy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICBpZiAocy51cmwpIHtcbiAgICAgIC8vIFRoZSB1cmwgZmllbGQgd2lsbCByZXF1aXJlIHN1cHBvcnQgZm9yIGFzeW5jaHJvbmljaXR5LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvaXNzdWVzLzE2XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1cHBvcnQgZm9yIHVybCBmaWVsZCBpbiBzZWN0aW9ucyBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxuICAgIHZhciBvZmZzZXQgPSB1dGlsLmdldEFyZyhzLCAnb2Zmc2V0Jyk7XG4gICAgdmFyIG9mZnNldExpbmUgPSB1dGlsLmdldEFyZyhvZmZzZXQsICdsaW5lJyk7XG4gICAgdmFyIG9mZnNldENvbHVtbiA9IHV0aWwuZ2V0QXJnKG9mZnNldCwgJ2NvbHVtbicpO1xuXG4gICAgaWYgKG9mZnNldExpbmUgPCBsYXN0T2Zmc2V0LmxpbmUgfHxcbiAgICAgICAgKG9mZnNldExpbmUgPT09IGxhc3RPZmZzZXQubGluZSAmJiBvZmZzZXRDb2x1bW4gPCBsYXN0T2Zmc2V0LmNvbHVtbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2VjdGlvbiBvZmZzZXRzIG11c3QgYmUgb3JkZXJlZCBhbmQgbm9uLW92ZXJsYXBwaW5nLicpO1xuICAgIH1cbiAgICBsYXN0T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlbmVyYXRlZE9mZnNldDoge1xuICAgICAgICAvLyBUaGUgb2Zmc2V0IGZpZWxkcyBhcmUgMC1iYXNlZCwgYnV0IHdlIHVzZSAxLWJhc2VkIGluZGljZXMgd2hlblxuICAgICAgICAvLyBlbmNvZGluZy9kZWNvZGluZyBmcm9tIFZMUS5cbiAgICAgICAgZ2VuZXJhdGVkTGluZTogb2Zmc2V0TGluZSArIDEsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogb2Zmc2V0Q29sdW1uICsgMVxuICAgICAgfSxcbiAgICAgIGNvbnN1bWVyOiBuZXcgU291cmNlTWFwQ29uc3VtZXIodXRpbC5nZXRBcmcocywgJ21hcCcpLCBhU291cmNlTWFwVVJMKVxuICAgIH1cbiAgfSk7XG59XG5cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ3NvdXJjZXMnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBzb3VyY2VzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLl9zZWN0aW9uc1tpXS5jb25zdW1lci5zb3VyY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHNvdXJjZXMucHVzaCh0aGlzLl9zZWN0aW9uc1tpXS5jb25zdW1lci5zb3VyY2VzW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZXM7XG4gIH1cbn0pO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUub3JpZ2luYWxQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIC8vIEZpbmQgdGhlIHNlY3Rpb24gY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9uIHdlJ3JlIHRyeWluZyB0byBtYXBcbiAgICAvLyB0byBhbiBvcmlnaW5hbCBwb3NpdGlvbi5cbiAgICB2YXIgc2VjdGlvbkluZGV4ID0gYmluYXJ5U2VhcmNoLnNlYXJjaChuZWVkbGUsIHRoaXMuX3NlY3Rpb25zLFxuICAgICAgZnVuY3Rpb24obmVlZGxlLCBzZWN0aW9uKSB7XG4gICAgICAgIHZhciBjbXAgPSBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmU7XG4gICAgICAgIGlmIChjbXApIHtcbiAgICAgICAgICByZXR1cm4gY21wO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgfSk7XG4gICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xuXG4gICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbmFtZTogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VjdGlvbi5jb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHtcbiAgICAgIGxpbmU6IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgLSAxKSxcbiAgICAgIGNvbHVtbjogbmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBuZWVkbGUuZ2VuZXJhdGVkTGluZVxuICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICA6IDApLFxuICAgICAgYmlhczogYUFyZ3MuYmlhc1xuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLmV2ZXJ5KGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gcy5jb25zdW1lci5oYXNDb250ZW50c09mQWxsU291cmNlcygpO1xuICAgIH0pO1xuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50LiBUaGUgb25seSBhcmd1bWVudCBpcyB0aGUgdXJsIG9mIHRoZVxuICogb3JpZ2luYWwgc291cmNlIGZpbGUuIFJldHVybnMgbnVsbCBpZiBubyBvcmlnaW5hbCBzb3VyY2UgY29udGVudCBpc1xuICogYXZhaWxhYmxlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfc291cmNlQ29udGVudEZvcihhU291cmNlLCBudWxsT25NaXNzaW5nKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgdmFyIGNvbnRlbnQgPSBzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgdHJ1ZSk7XG4gICAgICBpZiAoY29udGVudCkge1xuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYVNvdXJjZSArICdcIiBpcyBub3QgaW4gdGhlIFNvdXJjZU1hcC4nKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aFxuICogdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBmaWxlbmFtZSBvZiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgY29sdW1uXG4gKiAgICAgbnVtYmVyIGlzIDAtYmFzZWQuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4gXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuX2ZpbmRTb3VyY2VJbmRleCh1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpKSA9PT0gLTEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgZ2VuZXJhdGVkUG9zaXRpb24gPSBzZWN0aW9uLmNvbnN1bWVyLmdlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKTtcbiAgICAgIGlmIChnZW5lcmF0ZWRQb3NpdGlvbikge1xuICAgICAgICB2YXIgcmV0ID0ge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmUgK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgLSAxKSxcbiAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZFBvc2l0aW9uLmNvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gZ2VuZXJhdGVkUG9zaXRpb24ubGluZVxuICAgICAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgICAgIDogMClcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3BhcnNlTWFwcGluZ3MoYVN0ciwgYVNvdXJjZVJvb3QpIHtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG4gICAgICB2YXIgc2VjdGlvbk1hcHBpbmdzID0gc2VjdGlvbi5jb25zdW1lci5fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlY3Rpb25NYXBwaW5ncy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbWFwcGluZyA9IHNlY3Rpb25NYXBwaW5nc1tqXTtcblxuICAgICAgICB2YXIgc291cmNlID0gc2VjdGlvbi5jb25zdW1lci5fc291cmNlcy5hdChtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHV0aWwuY29tcHV0ZVNvdXJjZVVSTChzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBudWxsO1xuICAgICAgICBpZiAobWFwcGluZy5uYW1lKSB7XG4gICAgICAgICAgbmFtZSA9IHNlY3Rpb24uY29uc3VtZXIuX25hbWVzLmF0KG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIG1hcHBpbmdzIGNvbWluZyBmcm9tIHRoZSBjb25zdW1lciBmb3IgdGhlIHNlY3Rpb24gaGF2ZVxuICAgICAgICAvLyBnZW5lcmF0ZWQgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VjdGlvbiwgc28gd2VcbiAgICAgICAgLy8gbmVlZCB0byBvZmZzZXQgdGhlbSB0byBiZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbmNhdGVuYXRlZFxuICAgICAgICAvLyBnZW5lcmF0ZWQgZmlsZS5cbiAgICAgICAgdmFyIGFkanVzdGVkTWFwcGluZyA9IHtcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUgK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgLSAxKSxcbiAgICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBtYXBwaW5nLmdlbmVyYXRlZExpbmVcbiAgICAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgICAgOiAwKSxcbiAgICAgICAgICBvcmlnaW5hbExpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MucHVzaChhZGp1c3RlZE1hcHBpbmcpO1xuICAgICAgICBpZiAodHlwZW9mIGFkanVzdGVkTWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MucHVzaChhZGp1c3RlZE1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCk7XG4gICAgcXVpY2tTb3J0KHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgfTtcblxuZXhwb3J0cy5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIgPSBJbmRleGVkU291cmNlTWFwQ29uc3VtZXI7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgQXJyYXlTZXQgPSByZXF1aXJlKCcuL2FycmF5LXNldCcpLkFycmF5U2V0O1xudmFyIE1hcHBpbmdMaXN0ID0gcmVxdWlyZSgnLi9tYXBwaW5nLWxpc3QnKS5NYXBwaW5nTGlzdDtcblxuLyoqXG4gKiBBbiBpbnN0YW5jZSBvZiB0aGUgU291cmNlTWFwR2VuZXJhdG9yIHJlcHJlc2VudHMgYSBzb3VyY2UgbWFwIHdoaWNoIGlzXG4gKiBiZWluZyBidWlsdCBpbmNyZW1lbnRhbGx5LiBZb3UgbWF5IHBhc3MgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZ1xuICogcHJvcGVydGllczpcbiAqXG4gKiAgIC0gZmlsZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIHNvdXJjZVJvb3Q6IEEgcm9vdCBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgaW4gdGhpcyBzb3VyY2UgbWFwLlxuICovXG5mdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpIHtcbiAgaWYgKCFhQXJncykge1xuICAgIGFBcmdzID0ge307XG4gIH1cbiAgdGhpcy5fZmlsZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZmlsZScsIG51bGwpO1xuICB0aGlzLl9zb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHRoaXMuX3NraXBWYWxpZGF0aW9uID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdza2lwVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgdGhpcy5fc291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICB0aGlzLl9uYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuICB0aGlzLl9tYXBwaW5ncyA9IG5ldyBNYXBwaW5nTGlzdCgpO1xuICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xufVxuXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFNvdXJjZU1hcEdlbmVyYXRvciBiYXNlZCBvbiBhIFNvdXJjZU1hcENvbnN1bWVyXG4gKlxuICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgU291cmNlTWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IuZnJvbVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXBDb25zdW1lcikge1xuICAgIHZhciBzb3VyY2VSb290ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZVJvb3Q7XG4gICAgdmFyIGdlbmVyYXRvciA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3Ioe1xuICAgICAgZmlsZTogYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUsXG4gICAgICBzb3VyY2VSb290OiBzb3VyY2VSb290XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICB2YXIgbmV3TWFwcGluZyA9IHtcbiAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKG1hcHBpbmcuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBuZXdNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXdNYXBwaW5nLm9yaWdpbmFsID0ge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5ld01hcHBpbmcubmFtZSA9IG1hcHBpbmcubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBnZW5lcmF0b3IuYWRkTWFwcGluZyhuZXdNYXBwaW5nKTtcbiAgICB9KTtcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgc291cmNlUmVsYXRpdmUgPSBzb3VyY2VGaWxlO1xuICAgICAgaWYgKHNvdXJjZVJvb3QgIT09IG51bGwpIHtcbiAgICAgICAgc291cmNlUmVsYXRpdmUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWdlbmVyYXRvci5fc291cmNlcy5oYXMoc291cmNlUmVsYXRpdmUpKSB7XG4gICAgICAgIGdlbmVyYXRvci5fc291cmNlcy5hZGQoc291cmNlUmVsYXRpdmUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBnZW5lcmF0b3Iuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9O1xuXG4vKipcbiAqIEFkZCBhIHNpbmdsZSBtYXBwaW5nIGZyb20gb3JpZ2luYWwgc291cmNlIGxpbmUgYW5kIGNvbHVtbiB0byB0aGUgZ2VuZXJhdGVkXG4gKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gZm9yIHRoaXMgc291cmNlIG1hcCBiZWluZyBjcmVhdGVkLiBUaGUgbWFwcGluZ1xuICogb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gZ2VuZXJhdGVkOiBBbiBvYmplY3Qgd2l0aCB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gKiAgIC0gb3JpZ2luYWw6IEFuIG9iamVjdCB3aXRoIHRoZSBvcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIChyZWxhdGl2ZSB0byB0aGUgc291cmNlUm9vdCkuXG4gKiAgIC0gbmFtZTogQW4gb3B0aW9uYWwgb3JpZ2luYWwgdG9rZW4gbmFtZSBmb3IgdGhpcyBtYXBwaW5nLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFkZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYWRkTWFwcGluZyhhQXJncykge1xuICAgIHZhciBnZW5lcmF0ZWQgPSB1dGlsLmdldEFyZyhhQXJncywgJ2dlbmVyYXRlZCcpO1xuICAgIHZhciBvcmlnaW5hbCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnb3JpZ2luYWwnLCBudWxsKTtcbiAgICB2YXIgc291cmNlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnLCBudWxsKTtcbiAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbmFtZScsIG51bGwpO1xuXG4gICAgaWYgKCF0aGlzLl9za2lwVmFsaWRhdGlvbikge1xuICAgICAgdGhpcy5fdmFsaWRhdGVNYXBwaW5nKGdlbmVyYXRlZCwgb3JpZ2luYWwsIHNvdXJjZSwgbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSBTdHJpbmcoc291cmNlKTtcbiAgICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzLmFkZChzb3VyY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuYW1lICE9IG51bGwpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSk7XG4gICAgICBpZiAoIXRoaXMuX25hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbWFwcGluZ3MuYWRkKHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uLFxuICAgICAgb3JpZ2luYWxMaW5lOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5jb2x1bW4sXG4gICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgIG5hbWU6IG5hbWVcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBTZXQgdGhlIHNvdXJjZSBjb250ZW50IGZvciBhIHNvdXJjZSBmaWxlLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnNldFNvdXJjZUNvbnRlbnQgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2V0U291cmNlQ29udGVudChhU291cmNlRmlsZSwgYVNvdXJjZUNvbnRlbnQpIHtcbiAgICB2YXIgc291cmNlID0gYVNvdXJjZUZpbGU7XG4gICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLl9zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgIH1cblxuICAgIGlmIChhU291cmNlQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAvLyBBZGQgdGhlIHNvdXJjZSBjb250ZW50IHRvIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBfc291cmNlc0NvbnRlbnRzIG1hcCBpZiB0aGUgcHJvcGVydHkgaXMgbnVsbC5cbiAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXSA9IGFTb3VyY2VDb250ZW50O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlIHNvdXJjZSBmaWxlIGZyb20gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgLy8gSWYgdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwIGlzIGVtcHR5LCBzZXQgdGhlIHByb3BlcnR5IHRvIG51bGwuXG4gICAgICBkZWxldGUgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV07XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fc291cmNlc0NvbnRlbnRzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQXBwbGllcyB0aGUgbWFwcGluZ3Mgb2YgYSBzdWItc291cmNlLW1hcCBmb3IgYSBzcGVjaWZpYyBzb3VyY2UgZmlsZSB0byB0aGVcbiAqIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkLiBFYWNoIG1hcHBpbmcgdG8gdGhlIHN1cHBsaWVkIHNvdXJjZSBmaWxlIGlzXG4gKiByZXdyaXR0ZW4gdXNpbmcgdGhlIHN1cHBsaWVkIHNvdXJjZSBtYXAuIE5vdGU6IFRoZSByZXNvbHV0aW9uIGZvciB0aGVcbiAqIHJlc3VsdGluZyBtYXBwaW5ncyBpcyB0aGUgbWluaW1pdW0gb2YgdGhpcyBtYXAgYW5kIHRoZSBzdXBwbGllZCBtYXAuXG4gKlxuICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGFTb3VyY2VGaWxlIE9wdGlvbmFsLiBUaGUgZmlsZW5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlLlxuICogICAgICAgIElmIG9taXR0ZWQsIFNvdXJjZU1hcENvbnN1bWVyJ3MgZmlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVzZWQuXG4gKiBAcGFyYW0gYVNvdXJjZU1hcFBhdGggT3B0aW9uYWwuIFRoZSBkaXJuYW1lIG9mIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgbWFwXG4gKiAgICAgICAgdG8gYmUgYXBwbGllZC4gSWYgcmVsYXRpdmUsIGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBTb3VyY2VNYXBDb25zdW1lci5cbiAqICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBuZWVkZWQgd2hlbiB0aGUgdHdvIHNvdXJjZSBtYXBzIGFyZW4ndCBpbiB0aGUgc2FtZVxuICogICAgICAgIGRpcmVjdG9yeSwgYW5kIHRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQgY29udGFpbnMgcmVsYXRpdmUgc291cmNlXG4gKiAgICAgICAgcGF0aHMuIElmIHNvLCB0aG9zZSByZWxhdGl2ZSBzb3VyY2UgcGF0aHMgbmVlZCB0byBiZSByZXdyaXR0ZW5cbiAqICAgICAgICByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLmFwcGx5U291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FwcGx5U291cmNlTWFwKGFTb3VyY2VNYXBDb25zdW1lciwgYVNvdXJjZUZpbGUsIGFTb3VyY2VNYXBQYXRoKSB7XG4gICAgdmFyIHNvdXJjZUZpbGUgPSBhU291cmNlRmlsZTtcbiAgICAvLyBJZiBhU291cmNlRmlsZSBpcyBvbWl0dGVkLCB3ZSB3aWxsIHVzZSB0aGUgZmlsZSBwcm9wZXJ0eSBvZiB0aGUgU291cmNlTWFwXG4gICAgaWYgKGFTb3VyY2VGaWxlID09IG51bGwpIHtcbiAgICAgIGlmIChhU291cmNlTWFwQ29uc3VtZXIuZmlsZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCByZXF1aXJlcyBlaXRoZXIgYW4gZXhwbGljaXQgc291cmNlIGZpbGUsICcgK1xuICAgICAgICAgICdvciB0aGUgc291cmNlIG1hcFxcJ3MgXCJmaWxlXCIgcHJvcGVydHkuIEJvdGggd2VyZSBvbWl0dGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHNvdXJjZUZpbGUgPSBhU291cmNlTWFwQ29uc3VtZXIuZmlsZTtcbiAgICB9XG4gICAgdmFyIHNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgIC8vIE1ha2UgXCJzb3VyY2VGaWxlXCIgcmVsYXRpdmUgaWYgYW4gYWJzb2x1dGUgVXJsIGlzIHBhc3NlZC5cbiAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICB9XG4gICAgLy8gQXBwbHlpbmcgdGhlIFNvdXJjZU1hcCBjYW4gYWRkIGFuZCByZW1vdmUgaXRlbXMgZnJvbSB0aGUgc291cmNlcyBhbmRcbiAgICAvLyB0aGUgbmFtZXMgYXJyYXkuXG4gICAgdmFyIG5ld1NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgICB2YXIgbmV3TmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcblxuICAgIC8vIEZpbmQgbWFwcGluZ3MgZm9yIHRoZSBcInNvdXJjZUZpbGVcIlxuICAgIHRoaXMuX21hcHBpbmdzLnVuc29ydGVkRm9yRWFjaChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgaWYgKG1hcHBpbmcuc291cmNlID09PSBzb3VyY2VGaWxlICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lICE9IG51bGwpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQgY2FuIGJlIG1hcHBlZCBieSB0aGUgc291cmNlIG1hcCwgdGhlbiB1cGRhdGUgdGhlIG1hcHBpbmcuXG4gICAgICAgIHZhciBvcmlnaW5hbCA9IGFTb3VyY2VNYXBDb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcmlnaW5hbC5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIENvcHkgbWFwcGluZ1xuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgbWFwcGluZy5zb3VyY2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gb3JpZ2luYWwuY29sdW1uO1xuICAgICAgICAgIGlmIChvcmlnaW5hbC5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hcHBpbmcubmFtZSA9IG9yaWdpbmFsLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBzb3VyY2UgPSBtYXBwaW5nLnNvdXJjZTtcbiAgICAgIGlmIChzb3VyY2UgIT0gbnVsbCAmJiAhbmV3U291cmNlcy5oYXMoc291cmNlKSkge1xuICAgICAgICBuZXdTb3VyY2VzLmFkZChzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmFtZSA9IG1hcHBpbmcubmFtZTtcbiAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgIW5ld05hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICBuZXdOYW1lcy5hZGQobmFtZSk7XG4gICAgICB9XG5cbiAgICB9LCB0aGlzKTtcbiAgICB0aGlzLl9zb3VyY2VzID0gbmV3U291cmNlcztcbiAgICB0aGlzLl9uYW1lcyA9IG5ld05hbWVzO1xuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudHMgb2YgYXBwbGllZCBtYXAuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEEgbWFwcGluZyBjYW4gaGF2ZSBvbmUgb2YgdGhlIHRocmVlIGxldmVscyBvZiBkYXRhOlxuICpcbiAqICAgMS4gSnVzdCB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICogICAyLiBUaGUgR2VuZXJhdGVkIHBvc2l0aW9uLCBvcmlnaW5hbCBwb3NpdGlvbiwgYW5kIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgMy4gR2VuZXJhdGVkIGFuZCBvcmlnaW5hbCBwb3NpdGlvbiwgb3JpZ2luYWwgc291cmNlLCBhcyB3ZWxsIGFzIGEgbmFtZVxuICogICAgICB0b2tlbi5cbiAqXG4gKiBUbyBtYWludGFpbiBjb25zaXN0ZW5jeSwgd2UgdmFsaWRhdGUgdGhhdCBhbnkgbmV3IG1hcHBpbmcgYmVpbmcgYWRkZWQgZmFsbHNcbiAqIGluIHRvIG9uZSBvZiB0aGVzZSBjYXRlZ29yaWVzLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0ZU1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdmFsaWRhdGVNYXBwaW5nKGFHZW5lcmF0ZWQsIGFPcmlnaW5hbCwgYVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhTmFtZSkge1xuICAgIC8vIFdoZW4gYU9yaWdpbmFsIGlzIHRydXRoeSBidXQgaGFzIGVtcHR5IHZhbHVlcyBmb3IgLmxpbmUgYW5kIC5jb2x1bW4sXG4gICAgLy8gaXQgaXMgbW9zdCBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yLiBJbiB0aGlzIGNhc2Ugd2UgdGhyb3cgYSB2ZXJ5XG4gICAgLy8gc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSB0byB0cnkgdG8gZ3VpZGUgdGhlbSB0aGUgcmlnaHQgd2F5LlxuICAgIC8vIEZvciBleGFtcGxlOiBodHRwczovL2dpdGh1Yi5jb20vUG9seW1lci9wb2x5bWVyLWJ1bmRsZXIvcHVsbC81MTlcbiAgICBpZiAoYU9yaWdpbmFsICYmIHR5cGVvZiBhT3JpZ2luYWwubGluZSAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGFPcmlnaW5hbC5jb2x1bW4gIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdvcmlnaW5hbC5saW5lIGFuZCBvcmlnaW5hbC5jb2x1bW4gYXJlIG5vdCBudW1iZXJzIC0tIHlvdSBwcm9iYWJseSBtZWFudCB0byBvbWl0ICcgK1xuICAgICAgICAgICAgJ3RoZSBvcmlnaW5hbCBtYXBwaW5nIGVudGlyZWx5IGFuZCBvbmx5IG1hcCB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9uLiBJZiBzbywgcGFzcyAnICtcbiAgICAgICAgICAgICdudWxsIGZvciB0aGUgb3JpZ2luYWwgbWFwcGluZyBpbnN0ZWFkIG9mIGFuIG9iamVjdCB3aXRoIGVtcHR5IG9yIG51bGwgdmFsdWVzLidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICYmIGFHZW5lcmF0ZWQubGluZSA+IDAgJiYgYUdlbmVyYXRlZC5jb2x1bW4gPj0gMFxuICAgICAgICAmJiAhYU9yaWdpbmFsICYmICFhU291cmNlICYmICFhTmFtZSkge1xuICAgICAgLy8gQ2FzZSAxLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgICAgICAmJiBhT3JpZ2luYWwgJiYgJ2xpbmUnIGluIGFPcmlnaW5hbCAmJiAnY29sdW1uJyBpbiBhT3JpZ2luYWxcbiAgICAgICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgICAgICAmJiBhT3JpZ2luYWwubGluZSA+IDAgJiYgYU9yaWdpbmFsLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYVNvdXJjZSkge1xuICAgICAgLy8gQ2FzZXMgMiBhbmQgMy5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWFwcGluZzogJyArIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZ2VuZXJhdGVkOiBhR2VuZXJhdGVkLFxuICAgICAgICBzb3VyY2U6IGFTb3VyY2UsXG4gICAgICAgIG9yaWdpbmFsOiBhT3JpZ2luYWwsXG4gICAgICAgIG5hbWU6IGFOYW1lXG4gICAgICB9KSk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFNlcmlhbGl6ZSB0aGUgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gdG8gdGhlIHN0cmVhbSBvZiBiYXNlIDY0IFZMUXNcbiAqIHNwZWNpZmllZCBieSB0aGUgc291cmNlIG1hcCBmb3JtYXQuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3NlcmlhbGl6ZU1hcHBpbmdzID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NlcmlhbGl6ZU1hcHBpbmdzKCkge1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkTGluZSA9IDE7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsTGluZSA9IDA7XG4gICAgdmFyIHByZXZpb3VzTmFtZSA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG5leHQ7XG4gICAgdmFyIG1hcHBpbmc7XG4gICAgdmFyIG5hbWVJZHg7XG4gICAgdmFyIHNvdXJjZUlkeDtcblxuICAgIHZhciBtYXBwaW5ncyA9IHRoaXMuX21hcHBpbmdzLnRvQXJyYXkoKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIG1hcHBpbmcgPSBtYXBwaW5nc1tpXTtcbiAgICAgIG5leHQgPSAnJ1xuXG4gICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lICE9PSBwcmV2aW91c0dlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICB3aGlsZSAobWFwcGluZy5nZW5lcmF0ZWRMaW5lICE9PSBwcmV2aW91c0dlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICBuZXh0ICs9ICc7JztcbiAgICAgICAgICBwcmV2aW91c0dlbmVyYXRlZExpbmUrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIGlmICghdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nLCBtYXBwaW5nc1tpIC0gMV0pKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCArPSAnLCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIHNvdXJjZUlkeCA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShzb3VyY2VJZHggLSBwcmV2aW91c1NvdXJjZSk7XG4gICAgICAgIHByZXZpb3VzU291cmNlID0gc291cmNlSWR4O1xuXG4gICAgICAgIC8vIGxpbmVzIGFyZSBzdG9yZWQgMC1iYXNlZCBpbiBTb3VyY2VNYXAgc3BlYyB2ZXJzaW9uIDNcbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzT3JpZ2luYWxMaW5lKTtcbiAgICAgICAgcHJldmlvdXNPcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDE7XG5cbiAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsQ29sdW1uKTtcbiAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmFtZUlkeCA9IHRoaXMuX25hbWVzLmluZGV4T2YobWFwcGluZy5uYW1lKTtcbiAgICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUobmFtZUlkeCAtIHByZXZpb3VzTmFtZSk7XG4gICAgICAgICAgcHJldmlvdXNOYW1lID0gbmFtZUlkeDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQgKz0gbmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2dlbmVyYXRlU291cmNlc0NvbnRlbnQoYVNvdXJjZXMsIGFTb3VyY2VSb290KSB7XG4gICAgcmV0dXJuIGFTb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChhU291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUoYVNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICB9XG4gICAgICB2YXIga2V5ID0gdXRpbC50b1NldFN0cmluZyhzb3VyY2UpO1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9zb3VyY2VzQ29udGVudHMsIGtleSlcbiAgICAgICAgPyB0aGlzLl9zb3VyY2VzQ29udGVudHNba2V5XVxuICAgICAgICA6IG51bGw7XG4gICAgfSwgdGhpcyk7XG4gIH07XG5cbi8qKlxuICogRXh0ZXJuYWxpemUgdGhlIHNvdXJjZSBtYXAuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9KU09OID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvSlNPTigpIHtcbiAgICB2YXIgbWFwID0ge1xuICAgICAgdmVyc2lvbjogdGhpcy5fdmVyc2lvbixcbiAgICAgIHNvdXJjZXM6IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgbmFtZXM6IHRoaXMuX25hbWVzLnRvQXJyYXkoKSxcbiAgICAgIG1hcHBpbmdzOiB0aGlzLl9zZXJpYWxpemVNYXBwaW5ncygpXG4gICAgfTtcbiAgICBpZiAodGhpcy5fZmlsZSAhPSBudWxsKSB7XG4gICAgICBtYXAuZmlsZSA9IHRoaXMuX2ZpbGU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG1hcC5zb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gdGhpcy5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChtYXAuc291cmNlcywgbWFwLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH07XG5cbi8qKlxuICogUmVuZGVyIHRoZSBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZCB0byBhIHN0cmluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b1N0cmluZyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b1N0cmluZygpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy50b0pTT04oKSk7XG4gIH07XG5cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gU291cmNlTWFwR2VuZXJhdG9yO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8vIE1hdGNoZXMgYSBXaW5kb3dzLXN0eWxlIGBcXHJcXG5gIG5ld2xpbmUgb3IgYSBgXFxuYCBuZXdsaW5lIHVzZWQgYnkgYWxsIG90aGVyXG4vLyBvcGVyYXRpbmcgc3lzdGVtcyB0aGVzZSBkYXlzIChjYXB0dXJpbmcgdGhlIHJlc3VsdCkuXG52YXIgUkVHRVhfTkVXTElORSA9IC8oXFxyP1xcbikvO1xuXG4vLyBOZXdsaW5lIGNoYXJhY3RlciBjb2RlIGZvciBjaGFyQ29kZUF0KCkgY29tcGFyaXNvbnNcbnZhciBORVdMSU5FX0NPREUgPSAxMDtcblxuLy8gUHJpdmF0ZSBzeW1ib2wgZm9yIGlkZW50aWZ5aW5nIGBTb3VyY2VOb2RlYHMgd2hlbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZlxuLy8gdGhlIHNvdXJjZS1tYXAgbGlicmFyeSBhcmUgbG9hZGVkLiBUaGlzIE1VU1QgTk9UIENIQU5HRSBhY3Jvc3Ncbi8vIHZlcnNpb25zIVxudmFyIGlzU291cmNlTm9kZSA9IFwiJCQkaXNTb3VyY2VOb2RlJCQkXCI7XG5cbi8qKlxuICogU291cmNlTm9kZXMgcHJvdmlkZSBhIHdheSB0byBhYnN0cmFjdCBvdmVyIGludGVycG9sYXRpbmcvY29uY2F0ZW5hdGluZ1xuICogc25pcHBldHMgb2YgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGNvZGUgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIGxpbmUgYW5kXG4gKiBjb2x1bW4gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcGFyYW0gYUxpbmUgVGhlIG9yaWdpbmFsIGxpbmUgbnVtYmVyLlxuICogQHBhcmFtIGFDb2x1bW4gVGhlIG9yaWdpbmFsIGNvbHVtbiBudW1iZXIuXG4gKiBAcGFyYW0gYVNvdXJjZSBUaGUgb3JpZ2luYWwgc291cmNlJ3MgZmlsZW5hbWUuXG4gKiBAcGFyYW0gYUNodW5rcyBPcHRpb25hbC4gQW4gYXJyYXkgb2Ygc3RyaW5ncyB3aGljaCBhcmUgc25pcHBldHMgb2ZcbiAqICAgICAgICBnZW5lcmF0ZWQgSlMsIG9yIG90aGVyIFNvdXJjZU5vZGVzLlxuICogQHBhcmFtIGFOYW1lIFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLlxuICovXG5mdW5jdGlvbiBTb3VyY2VOb2RlKGFMaW5lLCBhQ29sdW1uLCBhU291cmNlLCBhQ2h1bmtzLCBhTmFtZSkge1xuICB0aGlzLmNoaWxkcmVuID0gW107XG4gIHRoaXMuc291cmNlQ29udGVudHMgPSB7fTtcbiAgdGhpcy5saW5lID0gYUxpbmUgPT0gbnVsbCA/IG51bGwgOiBhTGluZTtcbiAgdGhpcy5jb2x1bW4gPSBhQ29sdW1uID09IG51bGwgPyBudWxsIDogYUNvbHVtbjtcbiAgdGhpcy5zb3VyY2UgPSBhU291cmNlID09IG51bGwgPyBudWxsIDogYVNvdXJjZTtcbiAgdGhpcy5uYW1lID0gYU5hbWUgPT0gbnVsbCA/IG51bGwgOiBhTmFtZTtcbiAgdGhpc1tpc1NvdXJjZU5vZGVdID0gdHJ1ZTtcbiAgaWYgKGFDaHVua3MgIT0gbnVsbCkgdGhpcy5hZGQoYUNodW5rcyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFNvdXJjZU5vZGUgZnJvbSBnZW5lcmF0ZWQgY29kZSBhbmQgYSBTb3VyY2VNYXBDb25zdW1lci5cbiAqXG4gKiBAcGFyYW0gYUdlbmVyYXRlZENvZGUgVGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVxuICogQHBhcmFtIGFSZWxhdGl2ZVBhdGggT3B0aW9uYWwuIFRoZSBwYXRoIHRoYXQgcmVsYXRpdmUgc291cmNlcyBpbiB0aGVcbiAqICAgICAgICBTb3VyY2VNYXBDb25zdW1lciBzaG91bGQgYmUgcmVsYXRpdmUgdG8uXG4gKi9cblNvdXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX2Zyb21TdHJpbmdXaXRoU291cmNlTWFwKGFHZW5lcmF0ZWRDb2RlLCBhU291cmNlTWFwQ29uc3VtZXIsIGFSZWxhdGl2ZVBhdGgpIHtcbiAgICAvLyBUaGUgU291cmNlTm9kZSB3ZSB3YW50IHRvIGZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAvLyBhbmQgdGhlIFNvdXJjZU1hcFxuICAgIHZhciBub2RlID0gbmV3IFNvdXJjZU5vZGUoKTtcblxuICAgIC8vIEFsbCBldmVuIGluZGljZXMgb2YgdGhpcyBhcnJheSBhcmUgb25lIGxpbmUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLFxuICAgIC8vIHdoaWxlIGFsbCBvZGQgaW5kaWNlcyBhcmUgdGhlIG5ld2xpbmVzIGJldHdlZW4gdHdvIGFkamFjZW50IGxpbmVzXG4gICAgLy8gKHNpbmNlIGBSRUdFWF9ORVdMSU5FYCBjYXB0dXJlcyBpdHMgbWF0Y2gpLlxuICAgIC8vIFByb2Nlc3NlZCBmcmFnbWVudHMgYXJlIGFjY2Vzc2VkIGJ5IGNhbGxpbmcgYHNoaWZ0TmV4dExpbmVgLlxuICAgIHZhciByZW1haW5pbmdMaW5lcyA9IGFHZW5lcmF0ZWRDb2RlLnNwbGl0KFJFR0VYX05FV0xJTkUpO1xuICAgIHZhciByZW1haW5pbmdMaW5lc0luZGV4ID0gMDtcbiAgICB2YXIgc2hpZnROZXh0TGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVDb250ZW50cyA9IGdldE5leHRMaW5lKCk7XG4gICAgICAvLyBUaGUgbGFzdCBsaW5lIG9mIGEgZmlsZSBtaWdodCBub3QgaGF2ZSBhIG5ld2xpbmUuXG4gICAgICB2YXIgbmV3TGluZSA9IGdldE5leHRMaW5lKCkgfHwgXCJcIjtcbiAgICAgIHJldHVybiBsaW5lQ29udGVudHMgKyBuZXdMaW5lO1xuXG4gICAgICBmdW5jdGlvbiBnZXROZXh0TGluZSgpIHtcbiAgICAgICAgcmV0dXJuIHJlbWFpbmluZ0xpbmVzSW5kZXggPCByZW1haW5pbmdMaW5lcy5sZW5ndGggP1xuICAgICAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleCsrXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gV2UgbmVlZCB0byByZW1lbWJlciB0aGUgcG9zaXRpb24gb2YgXCJyZW1haW5pbmdMaW5lc1wiXG4gICAgdmFyIGxhc3RHZW5lcmF0ZWRMaW5lID0gMSwgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG5cbiAgICAvLyBUaGUgZ2VuZXJhdGUgU291cmNlTm9kZXMgd2UgbmVlZCBhIGNvZGUgcmFuZ2UuXG4gICAgLy8gVG8gZXh0cmFjdCBpdCBjdXJyZW50IGFuZCBsYXN0IG1hcHBpbmcgaXMgdXNlZC5cbiAgICAvLyBIZXJlIHdlIHN0b3JlIHRoZSBsYXN0IG1hcHBpbmcuXG4gICAgdmFyIGxhc3RNYXBwaW5nID0gbnVsbDtcblxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdlIGFkZCB0aGUgY29kZSBmcm9tIFwibGFzdE1hcHBpbmdcIiB0byBcIm1hcHBpbmdcIjpcbiAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlcmUgaXMgYSBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICBpZiAobGFzdEdlbmVyYXRlZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICAvLyBBc3NvY2lhdGUgZmlyc3QgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICAgIC8vIFRoZSByZW1haW5pbmcgY29kZSBpcyBhZGRlZCB3aXRob3V0IG1hcHBpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgY29kZSBiZXR3ZWVuIFwibGFzdEdlbmVyYXRlZENvbHVtblwiIGFuZFxuICAgICAgICAgIC8vIFwibWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cIiB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICAgIHZhciBjb2RlID0gbmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgY29kZSk7XG4gICAgICAgICAgLy8gTm8gbW9yZSByZW1haW5pbmcgY29kZSwgY29udGludWVcbiAgICAgICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBXZSBhZGQgdGhlIGdlbmVyYXRlZCBjb2RlIHVudGlsIHRoZSBmaXJzdCBtYXBwaW5nXG4gICAgICAvLyB0byB0aGUgU291cmNlTm9kZSB3aXRob3V0IGFueSBtYXBwaW5nLlxuICAgICAgLy8gRWFjaCBsaW5lIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHN0cmluZy5cbiAgICAgIHdoaWxlIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICBub2RlLmFkZChzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgfVxuICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRDb2x1bW4gPCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikge1xuICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSB8fCAnJztcbiAgICAgICAgbm9kZS5hZGQobmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSk7XG4gICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgfVxuICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgIH0sIHRoaXMpO1xuICAgIC8vIFdlIGhhdmUgcHJvY2Vzc2VkIGFsbCBtYXBwaW5ncy5cbiAgICBpZiAocmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nKSB7XG4gICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVtYWluaW5nIGNvZGUgaW4gdGhlIGN1cnJlbnQgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICB9XG4gICAgICAvLyBhbmQgYWRkIHRoZSByZW1haW5pbmcgbGluZXMgd2l0aG91dCBhbnkgbWFwcGluZ1xuICAgICAgbm9kZS5hZGQocmVtYWluaW5nTGluZXMuc3BsaWNlKHJlbWFpbmluZ0xpbmVzSW5kZXgpLmpvaW4oXCJcIikpO1xuICAgIH1cblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnQgaW50byBTb3VyY2VOb2RlXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGFSZWxhdGl2ZVBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGU7XG5cbiAgICBmdW5jdGlvbiBhZGRNYXBwaW5nV2l0aENvZGUobWFwcGluZywgY29kZSkge1xuICAgICAgaWYgKG1hcHBpbmcgPT09IG51bGwgfHwgbWFwcGluZy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2RlLmFkZChjb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhUmVsYXRpdmVQYXRoXG4gICAgICAgICAgPyB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgbWFwcGluZy5zb3VyY2UpXG4gICAgICAgICAgOiBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgbm9kZS5hZGQobmV3IFNvdXJjZU5vZGUobWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5uYW1lKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGlzIHNvdXJjZSBub2RlLlxuICpcbiAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfYWRkKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgYUNodW5rLmZvckVhY2goZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICB0aGlzLmFkZChjaHVuayk7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChhQ2h1bmspIHtcbiAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChhQ2h1bmspO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcHJlcGVuZChhQ2h1bmspIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYUNodW5rKSkge1xuICAgIGZvciAodmFyIGkgPSBhQ2h1bmsubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0aGlzLnByZXBlbmQoYUNodW5rW2ldKTtcbiAgICB9XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChhQ2h1bmspO1xuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIEpTIHNuaXBwZXRzIGluIHRoaXMgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLiBUaGVcbiAqIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggc25pcHBldCBvZiBKUyBhbmQgaXMgcGFzc2VkIHRoYXRcbiAqIHNuaXBwZXQgYW5kIHRoZSBpdHMgb3JpZ2luYWwgYXNzb2NpYXRlZCBzb3VyY2UncyBsaW5lL2NvbHVtbiBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3dhbGsoYUZuKSB7XG4gIHZhciBjaHVuaztcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjaHVuayA9IHRoaXMuY2hpbGRyZW5baV07XG4gICAgaWYgKGNodW5rW2lzU291cmNlTm9kZV0pIHtcbiAgICAgIGNodW5rLndhbGsoYUZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoY2h1bmsgIT09ICcnKSB7XG4gICAgICAgIGFGbihjaHVuaywgeyBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogTGlrZSBgU3RyaW5nLnByb3RvdHlwZS5qb2luYCBleGNlcHQgZm9yIFNvdXJjZU5vZGVzLiBJbnNlcnRzIGBhU3RyYCBiZXR3ZWVuXG4gKiBlYWNoIG9mIGB0aGlzLmNoaWxkcmVuYC5cbiAqXG4gKiBAcGFyYW0gYVNlcCBUaGUgc2VwYXJhdG9yLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gU291cmNlTm9kZV9qb2luKGFTZXApIHtcbiAgdmFyIG5ld0NoaWxkcmVuO1xuICB2YXIgaTtcbiAgdmFyIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICBpZiAobGVuID4gMCkge1xuICAgIG5ld0NoaWxkcmVuID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbi0xOyBpKyspIHtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKGFTZXApO1xuICAgIH1cbiAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2FsbCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Ugb24gdGhlIHZlcnkgcmlnaHQtbW9zdCBzb3VyY2Ugc25pcHBldC4gVXNlZnVsXG4gKiBmb3IgdHJpbW1pbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBzb3VyY2Ugbm9kZSwgZXRjLlxuICpcbiAqIEBwYXJhbSBhUGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICogQHBhcmFtIGFSZXBsYWNlbWVudCBUaGUgdGhpbmcgdG8gcmVwbGFjZSB0aGUgcGF0dGVybiB3aXRoLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5yZXBsYWNlUmlnaHQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3JlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KSB7XG4gIHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0Q2hpbGRbaXNTb3VyY2VOb2RlXSkge1xuICAgIGxhc3RDaGlsZC5yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIGxhc3RDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0gPSBsYXN0Q2hpbGQucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aGlzLmNoaWxkcmVuLnB1c2goJycucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuIFRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yXG4gKiBpbiB0aGUgc291cmNlc0NvbnRlbnQgZmllbGQuXG4gKlxuICogQHBhcmFtIGFTb3VyY2VGaWxlIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGVcbiAqIEBwYXJhbSBhU291cmNlQ29udGVudCBUaGUgY29udGVudCBvZiB0aGUgc291cmNlIGZpbGVcbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfc2V0U291cmNlQ29udGVudChhU291cmNlRmlsZSwgYVNvdXJjZUNvbnRlbnQpIHtcbiAgICB0aGlzLnNvdXJjZUNvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoYVNvdXJjZUZpbGUpXSA9IGFTb3VyY2VDb250ZW50O1xuICB9O1xuXG4vKipcbiAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBTb3VyY2VOb2Rlcy4gVGhlIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoXG4gKiBzb3VyY2UgZmlsZSBjb250ZW50IGFuZCBpcyBwYXNzZWQgdGhlIGZpbGVuYW1lIGFuZCBzb3VyY2UgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGtTb3VyY2VDb250ZW50cyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2Fsa1NvdXJjZUNvbnRlbnRzKGFGbikge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jaGlsZHJlbltpXVtpc1NvdXJjZU5vZGVdKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5baV0ud2Fsa1NvdXJjZUNvbnRlbnRzKGFGbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNvdXJjZUNvbnRlbnRzKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc291cmNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgYUZuKHV0aWwuZnJvbVNldFN0cmluZyhzb3VyY2VzW2ldKSwgdGhpcy5zb3VyY2VDb250ZW50c1tzb3VyY2VzW2ldXSk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUuIFdhbGtzIG92ZXIgdGhlIHRyZWVcbiAqIGFuZCBjb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJpb3VzIHNuaXBwZXRzIHRvZ2V0aGVyIHRvIG9uZSBzdHJpbmcuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZygpIHtcbiAgdmFyIHN0ciA9IFwiXCI7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBzdHIgKz0gY2h1bms7XG4gIH0pO1xuICByZXR1cm4gc3RyO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZSBhbG9uZyB3aXRoIGEgc291cmNlXG4gKiBtYXAuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmdXaXRoU291cmNlTWFwKGFBcmdzKSB7XG4gIHZhciBnZW5lcmF0ZWQgPSB7XG4gICAgY29kZTogXCJcIixcbiAgICBsaW5lOiAxLFxuICAgIGNvbHVtbjogMFxuICB9O1xuICB2YXIgbWFwID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncyk7XG4gIHZhciBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gIHZhciBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTmFtZSA9IG51bGw7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmssIG9yaWdpbmFsKSB7XG4gICAgZ2VuZXJhdGVkLmNvZGUgKz0gY2h1bms7XG4gICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPT0gbnVsbFxuICAgICAgICAmJiBvcmlnaW5hbC5saW5lICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmNvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgaWYobGFzdE9yaWdpbmFsU291cmNlICE9PSBvcmlnaW5hbC5zb3VyY2VcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbExpbmUgIT09IG9yaWdpbmFsLmxpbmVcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbENvbHVtbiAhPT0gb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxOYW1lICE9PSBvcmlnaW5hbC5uYW1lKSB7XG4gICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgbGFzdE9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICBsYXN0T3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICBsYXN0T3JpZ2luYWxOYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpZHggPSAwLCBsZW5ndGggPSBjaHVuay5sZW5ndGg7IGlkeCA8IGxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGlmIChjaHVuay5jaGFyQ29kZUF0KGlkeCkgPT09IE5FV0xJTkVfQ09ERSkge1xuICAgICAgICBnZW5lcmF0ZWQubGluZSsrO1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uID0gMDtcbiAgICAgICAgLy8gTWFwcGluZ3MgZW5kIGF0IGVvbFxuICAgICAgICBpZiAoaWR4ICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVkLmNvbHVtbisrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHRoaXMud2Fsa1NvdXJjZUNvbnRlbnRzKGZ1bmN0aW9uIChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KSB7XG4gICAgbWFwLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgc291cmNlQ29udGVudCk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGNvZGU6IGdlbmVyYXRlZC5jb2RlLCBtYXA6IG1hcCB9O1xufTtcblxuZXhwb3J0cy5Tb3VyY2VOb2RlID0gU291cmNlTm9kZTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy4tXSopKD86OihcXGQrKSk/KC4qKSQvO1xudmFyIGRhdGFVcmxSZWdleHAgPSAvXmRhdGE6LitcXCwuKyQvO1xuXG5mdW5jdGlvbiB1cmxQYXJzZShhVXJsKSB7XG4gIHZhciBtYXRjaCA9IGFVcmwubWF0Y2godXJsUmVnZXhwKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2NoZW1lOiBtYXRjaFsxXSxcbiAgICBhdXRoOiBtYXRjaFsyXSxcbiAgICBob3N0OiBtYXRjaFszXSxcbiAgICBwb3J0OiBtYXRjaFs0XSxcbiAgICBwYXRoOiBtYXRjaFs1XVxuICB9O1xufVxuZXhwb3J0cy51cmxQYXJzZSA9IHVybFBhcnNlO1xuXG5mdW5jdGlvbiB1cmxHZW5lcmF0ZShhUGFyc2VkVXJsKSB7XG4gIHZhciB1cmwgPSAnJztcbiAgaWYgKGFQYXJzZWRVcmwuc2NoZW1lKSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwuc2NoZW1lICsgJzonO1xuICB9XG4gIHVybCArPSAnLy8nO1xuICBpZiAoYVBhcnNlZFVybC5hdXRoKSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwuYXV0aCArICdAJztcbiAgfVxuICBpZiAoYVBhcnNlZFVybC5ob3N0KSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwuaG9zdDtcbiAgfVxuICBpZiAoYVBhcnNlZFVybC5wb3J0KSB7XG4gICAgdXJsICs9IFwiOlwiICsgYVBhcnNlZFVybC5wb3J0XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucGF0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnBhdGg7XG4gIH1cbiAgcmV0dXJuIHVybDtcbn1cbmV4cG9ydHMudXJsR2VuZXJhdGUgPSB1cmxHZW5lcmF0ZTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCwgb3IgdGhlIHBhdGggcG9ydGlvbiBvZiBhIFVSTDpcbiAqXG4gKiAtIFJlcGxhY2VzIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2l0aCBvbmUgc2xhc2guXG4gKiAtIFJlbW92ZXMgdW5uZWNlc3NhcnkgJy4nIHBhcnRzLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICc8ZGlyPi8uLicgcGFydHMuXG4gKlxuICogQmFzZWQgb24gY29kZSBpbiB0aGUgTm9kZS5qcyAncGF0aCcgY29yZSBtb2R1bGUuXG4gKlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIHVybCB0byBub3JtYWxpemUuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZShhUGF0aCkge1xuICB2YXIgcGF0aCA9IGFQYXRoO1xuICB2YXIgdXJsID0gdXJsUGFyc2UoYVBhdGgpO1xuICBpZiAodXJsKSB7XG4gICAgaWYgKCF1cmwucGF0aCkge1xuICAgICAgcmV0dXJuIGFQYXRoO1xuICAgIH1cbiAgICBwYXRoID0gdXJsLnBhdGg7XG4gIH1cbiAgdmFyIGlzQWJzb2x1dGUgPSBleHBvcnRzLmlzQWJzb2x1dGUocGF0aCk7XG5cbiAgdmFyIHBhcnRzID0gcGF0aC5zcGxpdCgvXFwvKy8pO1xuICBmb3IgKHZhciBwYXJ0LCB1cCA9IDAsIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHBhcnQgPSBwYXJ0c1tpXTtcbiAgICBpZiAocGFydCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXAgPiAwKSB7XG4gICAgICBpZiAocGFydCA9PT0gJycpIHtcbiAgICAgICAgLy8gVGhlIGZpcnN0IHBhcnQgaXMgYmxhbmsgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUuIFRyeWluZyB0byBnb1xuICAgICAgICAvLyBhYm92ZSB0aGUgcm9vdCBpcyBhIG5vLW9wLiBUaGVyZWZvcmUgd2UgY2FuIHJlbW92ZSBhbGwgJy4uJyBwYXJ0c1xuICAgICAgICAvLyBkaXJlY3RseSBhZnRlciB0aGUgcm9vdC5cbiAgICAgICAgcGFydHMuc3BsaWNlKGkgKyAxLCB1cCk7XG4gICAgICAgIHVwID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRzLnNwbGljZShpLCAyKTtcbiAgICAgICAgdXAtLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcGF0aCA9IHBhcnRzLmpvaW4oJy8nKTtcblxuICBpZiAocGF0aCA9PT0gJycpIHtcbiAgICBwYXRoID0gaXNBYnNvbHV0ZSA/ICcvJyA6ICcuJztcbiAgfVxuXG4gIGlmICh1cmwpIHtcbiAgICB1cmwucGF0aCA9IHBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKHVybCk7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcblxuLyoqXG4gKiBKb2lucyB0d28gcGF0aHMvVVJMcy5cbiAqXG4gKiBAcGFyYW0gYVJvb3QgVGhlIHJvb3QgcGF0aCBvciBVUkwuXG4gKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgVVJMIHRvIGJlIGpvaW5lZCB3aXRoIHRoZSByb290LlxuICpcbiAqIC0gSWYgYVBhdGggaXMgYSBVUkwgb3IgYSBkYXRhIFVSSSwgYVBhdGggaXMgcmV0dXJuZWQsIHVubGVzcyBhUGF0aCBpcyBhXG4gKiAgIHNjaGVtZS1yZWxhdGl2ZSBVUkw6IFRoZW4gdGhlIHNjaGVtZSBvZiBhUm9vdCwgaWYgYW55LCBpcyBwcmVwZW5kZWRcbiAqICAgZmlyc3QuXG4gKiAtIE90aGVyd2lzZSBhUGF0aCBpcyBhIHBhdGguIElmIGFSb290IGlzIGEgVVJMLCB0aGVuIGl0cyBwYXRoIHBvcnRpb25cbiAqICAgaXMgdXBkYXRlZCB3aXRoIHRoZSByZXN1bHQgYW5kIGFSb290IGlzIHJldHVybmVkLiBPdGhlcndpc2UgdGhlIHJlc3VsdFxuICogICBpcyByZXR1cm5lZC5cbiAqICAgLSBJZiBhUGF0aCBpcyBhYnNvbHV0ZSwgdGhlIHJlc3VsdCBpcyBhUGF0aC5cbiAqICAgLSBPdGhlcndpc2UgdGhlIHR3byBwYXRocyBhcmUgam9pbmVkIHdpdGggYSBzbGFzaC5cbiAqIC0gSm9pbmluZyBmb3IgZXhhbXBsZSAnaHR0cDovLycgYW5kICd3d3cuZXhhbXBsZS5jb20nIGlzIGFsc28gc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBqb2luKGFSb290LCBhUGF0aCkge1xuICBpZiAoYVJvb3QgPT09IFwiXCIpIHtcbiAgICBhUm9vdCA9IFwiLlwiO1xuICB9XG4gIGlmIChhUGF0aCA9PT0gXCJcIikge1xuICAgIGFQYXRoID0gXCIuXCI7XG4gIH1cbiAgdmFyIGFQYXRoVXJsID0gdXJsUGFyc2UoYVBhdGgpO1xuICB2YXIgYVJvb3RVcmwgPSB1cmxQYXJzZShhUm9vdCk7XG4gIGlmIChhUm9vdFVybCkge1xuICAgIGFSb290ID0gYVJvb3RVcmwucGF0aCB8fCAnLyc7XG4gIH1cblxuICAvLyBgam9pbihmb28sICcvL3d3dy5leGFtcGxlLm9yZycpYFxuICBpZiAoYVBhdGhVcmwgJiYgIWFQYXRoVXJsLnNjaGVtZSkge1xuICAgIGlmIChhUm9vdFVybCkge1xuICAgICAgYVBhdGhVcmwuc2NoZW1lID0gYVJvb3RVcmwuc2NoZW1lO1xuICAgIH1cbiAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVBhdGhVcmwpO1xuICB9XG5cbiAgaWYgKGFQYXRoVXJsIHx8IGFQYXRoLm1hdGNoKGRhdGFVcmxSZWdleHApKSB7XG4gICAgcmV0dXJuIGFQYXRoO1xuICB9XG5cbiAgLy8gYGpvaW4oJ2h0dHA6Ly8nLCAnd3d3LmV4YW1wbGUuY29tJylgXG4gIGlmIChhUm9vdFVybCAmJiAhYVJvb3RVcmwuaG9zdCAmJiAhYVJvb3RVcmwucGF0aCkge1xuICAgIGFSb290VXJsLmhvc3QgPSBhUGF0aDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICB9XG5cbiAgdmFyIGpvaW5lZCA9IGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgPyBhUGF0aFxuICAgIDogbm9ybWFsaXplKGFSb290LnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgYVBhdGgpO1xuXG4gIGlmIChhUm9vdFVybCkge1xuICAgIGFSb290VXJsLnBhdGggPSBqb2luZWQ7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuICByZXR1cm4gam9pbmVkO1xufVxuZXhwb3J0cy5qb2luID0gam9pbjtcblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24gKGFQYXRoKSB7XG4gIHJldHVybiBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJyB8fCB1cmxSZWdleHAudGVzdChhUGF0aCk7XG59O1xuXG4vKipcbiAqIE1ha2UgYSBwYXRoIHJlbGF0aXZlIHRvIGEgVVJMIG9yIGFub3RoZXIgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYVJvb3QgVGhlIHJvb3QgcGF0aCBvciBVUkwuXG4gKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgVVJMIHRvIGJlIG1hZGUgcmVsYXRpdmUgdG8gYVJvb3QuXG4gKi9cbmZ1bmN0aW9uIHJlbGF0aXZlKGFSb290LCBhUGF0aCkge1xuICBpZiAoYVJvb3QgPT09IFwiXCIpIHtcbiAgICBhUm9vdCA9IFwiLlwiO1xuICB9XG5cbiAgYVJvb3QgPSBhUm9vdC5yZXBsYWNlKC9cXC8kLywgJycpO1xuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIGZvciB0aGUgcGF0aCB0byBiZSBhYm92ZSB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaW1wbHlcbiAgLy8gY2hlY2tpbmcgd2hldGhlciB0aGUgcm9vdCBpcyBhIHByZWZpeCBvZiB0aGUgcGF0aCB3b24ndCB3b3JrLiBJbnN0ZWFkLCB3ZVxuICAvLyBuZWVkIHRvIHJlbW92ZSBjb21wb25lbnRzIGZyb20gdGhlIHJvb3Qgb25lIGJ5IG9uZSwgdW50aWwgZWl0aGVyIHdlIGZpbmRcbiAgLy8gYSBwcmVmaXggdGhhdCBmaXRzLCBvciB3ZSBydW4gb3V0IG9mIGNvbXBvbmVudHMgdG8gcmVtb3ZlLlxuICB2YXIgbGV2ZWwgPSAwO1xuICB3aGlsZSAoYVBhdGguaW5kZXhPZihhUm9vdCArICcvJykgIT09IDApIHtcbiAgICB2YXIgaW5kZXggPSBhUm9vdC5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIGFQYXRoO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IHBhcnQgb2YgdGhlIHJvb3QgdGhhdCBpcyBsZWZ0IGlzIHRoZSBzY2hlbWUgKGkuZS4gaHR0cDovLyxcbiAgICAvLyBmaWxlOi8vLywgZXRjLiksIG9uZSBvciBtb3JlIHNsYXNoZXMgKC8pLCBvciBzaW1wbHkgbm90aGluZyBhdCBhbGwsIHdlXG4gICAgLy8gaGF2ZSBleGhhdXN0ZWQgYWxsIGNvbXBvbmVudHMsIHNvIHRoZSBwYXRoIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcm9vdC5cbiAgICBhUm9vdCA9IGFSb290LnNsaWNlKDAsIGluZGV4KTtcbiAgICBpZiAoYVJvb3QubWF0Y2goL14oW15cXC9dKzpcXC8pP1xcLyokLykpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICArK2xldmVsO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHdlIGFkZCBhIFwiLi4vXCIgZm9yIGVhY2ggY29tcG9uZW50IHdlIHJlbW92ZWQgZnJvbSB0aGUgcm9vdC5cbiAgcmV0dXJuIEFycmF5KGxldmVsICsgMSkuam9pbihcIi4uL1wiKSArIGFQYXRoLnN1YnN0cihhUm9vdC5sZW5ndGggKyAxKTtcbn1cbmV4cG9ydHMucmVsYXRpdmUgPSByZWxhdGl2ZTtcblxudmFyIHN1cHBvcnRzTnVsbFByb3RvID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAhKCdfX3Byb3RvX18nIGluIG9iaik7XG59KCkpO1xuXG5mdW5jdGlvbiBpZGVudGl0eSAocykge1xuICByZXR1cm4gcztcbn1cblxuLyoqXG4gKiBCZWNhdXNlIGJlaGF2aW9yIGdvZXMgd2Fja3kgd2hlbiB5b3Ugc2V0IGBfX3Byb3RvX19gIG9uIG9iamVjdHMsIHdlXG4gKiBoYXZlIHRvIHByZWZpeCBhbGwgdGhlIHN0cmluZ3MgaW4gb3VyIHNldCB3aXRoIGFuIGFyYml0cmFyeSBjaGFyYWN0ZXIuXG4gKlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvcHVsbC8zMSBhbmRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvaXNzdWVzLzMwXG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbmZ1bmN0aW9uIHRvU2V0U3RyaW5nKGFTdHIpIHtcbiAgaWYgKGlzUHJvdG9TdHJpbmcoYVN0cikpIHtcbiAgICByZXR1cm4gJyQnICsgYVN0cjtcbiAgfVxuXG4gIHJldHVybiBhU3RyO1xufVxuZXhwb3J0cy50b1NldFN0cmluZyA9IHN1cHBvcnRzTnVsbFByb3RvID8gaWRlbnRpdHkgOiB0b1NldFN0cmluZztcblxuZnVuY3Rpb24gZnJvbVNldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuIGFTdHIuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMuZnJvbVNldFN0cmluZyA9IHN1cHBvcnRzTnVsbFByb3RvID8gaWRlbnRpdHkgOiBmcm9tU2V0U3RyaW5nO1xuXG5mdW5jdGlvbiBpc1Byb3RvU3RyaW5nKHMpIHtcbiAgaWYgKCFzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IHMubGVuZ3RoO1xuXG4gIGlmIChsZW5ndGggPCA5IC8qIFwiX19wcm90b19fXCIubGVuZ3RoICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHMuY2hhckNvZGVBdChsZW5ndGggLSAxKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDIpICE9PSA5NSAgLyogJ18nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMykgIT09IDExMSAvKiAnbycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA0KSAhPT0gMTE2IC8qICd0JyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDUpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNikgIT09IDExNCAvKiAncicgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA3KSAhPT0gMTEyIC8qICdwJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDgpICE9PSA5NSAgLyogJ18nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gOSkgIT09IDk1ICAvKiAnXycgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBpID0gbGVuZ3RoIC0gMTA7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKHMuY2hhckNvZGVBdChpKSAhPT0gMzYgLyogJyQnICovKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aGVyZSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAqXG4gKiBPcHRpb25hbGx5IHBhc3MgaW4gYHRydWVgIGFzIGBvbmx5Q29tcGFyZUdlbmVyYXRlZGAgdG8gY29uc2lkZXIgdHdvXG4gKiBtYXBwaW5ncyB3aXRoIHRoZSBzYW1lIG9yaWdpbmFsIHNvdXJjZS9saW5lL2NvbHVtbiwgYnV0IGRpZmZlcmVudCBnZW5lcmF0ZWRcbiAqIGxpbmUgYW5kIGNvbHVtbiB0aGUgc2FtZS4gVXNlZnVsIHdoZW4gc2VhcmNoaW5nIGZvciBhIG1hcHBpbmcgd2l0aCBhXG4gKiBzdHViYmVkIG91dCBtYXBwaW5nLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyhtYXBwaW5nQSwgbWFwcGluZ0IsIG9ubHlDb21wYXJlT3JpZ2luYWwpIHtcbiAgdmFyIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMgPSBjb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucztcblxuLyoqXG4gKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdpdGggZGVmbGF0ZWQgc291cmNlIGFuZCBuYW1lIGluZGljZXMgd2hlcmVcbiAqIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAqXG4gKiBPcHRpb25hbGx5IHBhc3MgaW4gYHRydWVgIGFzIGBvbmx5Q29tcGFyZUdlbmVyYXRlZGAgdG8gY29uc2lkZXIgdHdvXG4gKiBtYXBwaW5ncyB3aXRoIHRoZSBzYW1lIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4sIGJ1dCBkaWZmZXJlbnRcbiAqIHNvdXJjZS9uYW1lL29yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiB0aGUgc2FtZS4gVXNlZnVsIHdoZW4gc2VhcmNoaW5nIGZvciBhXG4gKiBtYXBwaW5nIHdpdGggYSBzdHViYmVkIG91dCBtYXBwaW5nLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IsIG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAxOyAvLyBhU3RyMiAhPT0gbnVsbFxuICB9XG5cbiAgaWYgKGFTdHIyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIC0xOyAvLyBhU3RyMSAhPT0gbnVsbFxuICB9XG5cbiAgaWYgKGFTdHIxID4gYVN0cjIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdpdGggaW5mbGF0ZWQgc291cmNlIGFuZCBuYW1lIHN0cmluZ3Mgd2hlcmVcbiAqIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkO1xuXG4vKipcbiAqIFN0cmlwIGFueSBKU09OIFhTU0kgYXZvaWRhbmNlIHByZWZpeCBmcm9tIHRoZSBzdHJpbmcgKGFzIGRvY3VtZW50ZWRcbiAqIGluIHRoZSBzb3VyY2UgbWFwcyBzcGVjaWZpY2F0aW9uKSwgYW5kIHRoZW4gcGFyc2UgdGhlIHN0cmluZyBhc1xuICogSlNPTi5cbiAqL1xuZnVuY3Rpb24gcGFyc2VTb3VyY2VNYXBJbnB1dChzdHIpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyLnJlcGxhY2UoL15cXCldfSdbXlxcbl0qXFxuLywgJycpKTtcbn1cbmV4cG9ydHMucGFyc2VTb3VyY2VNYXBJbnB1dCA9IHBhcnNlU291cmNlTWFwSW5wdXQ7XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgVVJMIG9mIGEgc291cmNlIGdpdmVuIHRoZSB0aGUgc291cmNlIHJvb3QsIHRoZSBzb3VyY2Unc1xuICogVVJMLCBhbmQgdGhlIHNvdXJjZSBtYXAncyBVUkwuXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpIHtcbiAgc291cmNlVVJMID0gc291cmNlVVJMIHx8ICcnO1xuXG4gIGlmIChzb3VyY2VSb290KSB7XG4gICAgLy8gVGhpcyBmb2xsb3dzIHdoYXQgQ2hyb21lIGRvZXMuXG4gICAgaWYgKHNvdXJjZVJvb3Rbc291cmNlUm9vdC5sZW5ndGggLSAxXSAhPT0gJy8nICYmIHNvdXJjZVVSTFswXSAhPT0gJy8nKSB7XG4gICAgICBzb3VyY2VSb290ICs9ICcvJztcbiAgICB9XG4gICAgLy8gVGhlIHNwZWMgc2F5czpcbiAgICAvLyAgIExpbmUgNDogQW4gb3B0aW9uYWwgc291cmNlIHJvb3QsIHVzZWZ1bCBmb3IgcmVsb2NhdGluZyBzb3VyY2VcbiAgICAvLyAgIGZpbGVzIG9uIGEgc2VydmVyIG9yIHJlbW92aW5nIHJlcGVhdGVkIHZhbHVlcyBpbiB0aGVcbiAgICAvLyAgIOKAnHNvdXJjZXPigJ0gZW50cnkuICBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbFxuICAgIC8vICAgZW50cmllcyBpbiB0aGUg4oCcc291cmNl4oCdIGZpZWxkLlxuICAgIHNvdXJjZVVSTCA9IHNvdXJjZVJvb3QgKyBzb3VyY2VVUkw7XG4gIH1cblxuICAvLyBIaXN0b3JpY2FsbHksIFNvdXJjZU1hcENvbnN1bWVyIGRpZCBub3QgdGFrZSB0aGUgc291cmNlTWFwVVJMIGFzXG4gIC8vIGEgcGFyYW1ldGVyLiAgVGhpcyBtb2RlIGlzIHN0aWxsIHNvbWV3aGF0IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5XG4gIC8vIHRoaXMgY29kZSBibG9jayBpcyBjb25kaXRpb25hbC4gIEhvd2V2ZXIsIGl0J3MgcHJlZmVyYWJsZSB0byBwYXNzXG4gIC8vIHRoZSBzb3VyY2UgbWFwIFVSTCB0byBTb3VyY2VNYXBDb25zdW1lciwgc28gdGhhdCB0aGlzIGZ1bmN0aW9uXG4gIC8vIGNhbiBpbXBsZW1lbnQgdGhlIHNvdXJjZSBVUkwgcmVzb2x1dGlvbiBhbGdvcml0aG0gYXMgb3V0bGluZWQgaW5cbiAgLy8gdGhlIHNwZWMuICBUaGlzIGJsb2NrIGlzIGJhc2ljYWxseSB0aGUgZXF1aXZhbGVudCBvZjpcbiAgLy8gICAgbmV3IFVSTChzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCkudG9TdHJpbmcoKVxuICAvLyAuLi4gZXhjZXB0IGl0IGF2b2lkcyB1c2luZyBVUkwsIHdoaWNoIHdhc24ndCBhdmFpbGFibGUgaW4gdGhlXG4gIC8vIG9sZGVyIHJlbGVhc2VzIG9mIG5vZGUgc3RpbGwgc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeS5cbiAgLy9cbiAgLy8gVGhlIHNwZWMgc2F5czpcbiAgLy8gICBJZiB0aGUgc291cmNlcyBhcmUgbm90IGFic29sdXRlIFVSTHMgYWZ0ZXIgcHJlcGVuZGluZyBvZiB0aGVcbiAgLy8gICDigJxzb3VyY2VSb2904oCdLCB0aGUgc291cmNlcyBhcmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhlXG4gIC8vICAgU291cmNlTWFwIChsaWtlIHJlc29sdmluZyBzY3JpcHQgc3JjIGluIGEgaHRtbCBkb2N1bWVudCkuXG4gIGlmIChzb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgcGFyc2VkID0gdXJsUGFyc2Uoc291cmNlTWFwVVJMKTtcbiAgICBpZiAoIXBhcnNlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic291cmNlTWFwVVJMIGNvdWxkIG5vdCBiZSBwYXJzZWRcIik7XG4gICAgfVxuICAgIGlmIChwYXJzZWQucGF0aCkge1xuICAgICAgLy8gU3RyaXAgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQsIGJ1dCBrZWVwIHRoZSBcIi9cIi5cbiAgICAgIHZhciBpbmRleCA9IHBhcnNlZC5wYXRoLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBwYXJzZWQucGF0aCA9IHBhcnNlZC5wYXRoLnN1YnN0cmluZygwLCBpbmRleCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VVUkwgPSBqb2luKHVybEdlbmVyYXRlKHBhcnNlZCksIHNvdXJjZVVSTCk7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplKHNvdXJjZVVSTCk7XG59XG5leHBvcnRzLmNvbXB1dGVTb3VyY2VVUkwgPSBjb21wdXRlU291cmNlVVJMO1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG4iLCJ2YXIgQ2xpZW50UmVxdWVzdCA9IHJlcXVpcmUoJy4vbGliL3JlcXVlc3QnKVxudmFyIHJlc3BvbnNlID0gcmVxdWlyZSgnLi9saWIvcmVzcG9uc2UnKVxudmFyIGV4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBzdGF0dXNDb2RlcyA9IHJlcXVpcmUoJ2J1aWx0aW4tc3RhdHVzLWNvZGVzJylcbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxuXG52YXIgaHR0cCA9IGV4cG9ydHNcblxuaHR0cC5yZXF1ZXN0ID0gZnVuY3Rpb24gKG9wdHMsIGNiKSB7XG5cdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpXG5cdFx0b3B0cyA9IHVybC5wYXJzZShvcHRzKVxuXHRlbHNlXG5cdFx0b3B0cyA9IGV4dGVuZChvcHRzKVxuXG5cdC8vIE5vcm1hbGx5LCB0aGUgcGFnZSBpcyBsb2FkZWQgZnJvbSBodHRwIG9yIGh0dHBzLCBzbyBub3Qgc3BlY2lmeWluZyBhIHByb3RvY29sXG5cdC8vIHdpbGwgcmVzdWx0IGluIGEgKHZhbGlkKSBwcm90b2NvbC1yZWxhdGl2ZSB1cmwuIEhvd2V2ZXIsIHRoaXMgd29uJ3Qgd29yayBpZlxuXHQvLyB0aGUgcHJvdG9jb2wgaXMgc29tZXRoaW5nIGVsc2UsIGxpa2UgJ2ZpbGU6J1xuXHR2YXIgZGVmYXVsdFByb3RvY29sID0gZ2xvYmFsLmxvY2F0aW9uLnByb3RvY29sLnNlYXJjaCgvXmh0dHBzPzokLykgPT09IC0xID8gJ2h0dHA6JyA6ICcnXG5cblx0dmFyIHByb3RvY29sID0gb3B0cy5wcm90b2NvbCB8fCBkZWZhdWx0UHJvdG9jb2xcblx0dmFyIGhvc3QgPSBvcHRzLmhvc3RuYW1lIHx8IG9wdHMuaG9zdFxuXHR2YXIgcG9ydCA9IG9wdHMucG9ydFxuXHR2YXIgcGF0aCA9IG9wdHMucGF0aCB8fCAnLydcblxuXHQvLyBOZWNlc3NhcnkgZm9yIElQdjYgYWRkcmVzc2VzXG5cdGlmIChob3N0ICYmIGhvc3QuaW5kZXhPZignOicpICE9PSAtMSlcblx0XHRob3N0ID0gJ1snICsgaG9zdCArICddJ1xuXG5cdC8vIFRoaXMgbWF5IGJlIGEgcmVsYXRpdmUgdXJsLiBUaGUgYnJvd3NlciBzaG91bGQgYWx3YXlzIGJlIGFibGUgdG8gaW50ZXJwcmV0IGl0IGNvcnJlY3RseS5cblx0b3B0cy51cmwgPSAoaG9zdCA/IChwcm90b2NvbCArICcvLycgKyBob3N0KSA6ICcnKSArIChwb3J0ID8gJzonICsgcG9ydCA6ICcnKSArIHBhdGhcblx0b3B0cy5tZXRob2QgPSAob3B0cy5tZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKClcblx0b3B0cy5oZWFkZXJzID0gb3B0cy5oZWFkZXJzIHx8IHt9XG5cblx0Ly8gQWxzbyB2YWxpZCBvcHRzLmF1dGgsIG9wdHMubW9kZVxuXG5cdHZhciByZXEgPSBuZXcgQ2xpZW50UmVxdWVzdChvcHRzKVxuXHRpZiAoY2IpXG5cdFx0cmVxLm9uKCdyZXNwb25zZScsIGNiKVxuXHRyZXR1cm4gcmVxXG59XG5cbmh0dHAuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvcHRzLCBjYikge1xuXHR2YXIgcmVxID0gaHR0cC5yZXF1ZXN0KG9wdHMsIGNiKVxuXHRyZXEuZW5kKClcblx0cmV0dXJuIHJlcVxufVxuXG5odHRwLkNsaWVudFJlcXVlc3QgPSBDbGllbnRSZXF1ZXN0XG5odHRwLkluY29taW5nTWVzc2FnZSA9IHJlc3BvbnNlLkluY29taW5nTWVzc2FnZVxuXG5odHRwLkFnZW50ID0gZnVuY3Rpb24gKCkge31cbmh0dHAuQWdlbnQuZGVmYXVsdE1heFNvY2tldHMgPSA0XG5cbmh0dHAuZ2xvYmFsQWdlbnQgPSBuZXcgaHR0cC5BZ2VudCgpXG5cbmh0dHAuU1RBVFVTX0NPREVTID0gc3RhdHVzQ29kZXNcblxuaHR0cC5NRVRIT0RTID0gW1xuXHQnQ0hFQ0tPVVQnLFxuXHQnQ09OTkVDVCcsXG5cdCdDT1BZJyxcblx0J0RFTEVURScsXG5cdCdHRVQnLFxuXHQnSEVBRCcsXG5cdCdMT0NLJyxcblx0J00tU0VBUkNIJyxcblx0J01FUkdFJyxcblx0J01LQUNUSVZJVFknLFxuXHQnTUtDT0wnLFxuXHQnTU9WRScsXG5cdCdOT1RJRlknLFxuXHQnT1BUSU9OUycsXG5cdCdQQVRDSCcsXG5cdCdQT1NUJyxcblx0J1BST1BGSU5EJyxcblx0J1BST1BQQVRDSCcsXG5cdCdQVVJHRScsXG5cdCdQVVQnLFxuXHQnUkVQT1JUJyxcblx0J1NFQVJDSCcsXG5cdCdTVUJTQ1JJQkUnLFxuXHQnVFJBQ0UnLFxuXHQnVU5MT0NLJyxcblx0J1VOU1VCU0NSSUJFJ1xuXSIsImV4cG9ydHMuZmV0Y2ggPSBpc0Z1bmN0aW9uKGdsb2JhbC5mZXRjaCkgJiYgaXNGdW5jdGlvbihnbG9iYWwuUmVhZGFibGVTdHJlYW0pXG5cbmV4cG9ydHMud3JpdGFibGVTdHJlYW0gPSBpc0Z1bmN0aW9uKGdsb2JhbC5Xcml0YWJsZVN0cmVhbSlcblxuZXhwb3J0cy5hYm9ydENvbnRyb2xsZXIgPSBpc0Z1bmN0aW9uKGdsb2JhbC5BYm9ydENvbnRyb2xsZXIpXG5cbmV4cG9ydHMuYmxvYkNvbnN0cnVjdG9yID0gZmFsc2VcbnRyeSB7XG5cdG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMSldKVxuXHRleHBvcnRzLmJsb2JDb25zdHJ1Y3RvciA9IHRydWVcbn0gY2F0Y2ggKGUpIHt9XG5cbi8vIFRoZSB4aHIgcmVxdWVzdCB0byBleGFtcGxlLmNvbSBtYXkgdmlvbGF0ZSBzb21lIHJlc3RyaWN0aXZlIENTUCBjb25maWd1cmF0aW9ucyxcbi8vIHNvIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgYGZldGNoYCwgYXZvaWQgY2FsbGluZyBnZXRYSFIoKVxuLy8gYW5kIGFzc3VtZSBzdXBwb3J0IGZvciBjZXJ0YWluIGZlYXR1cmVzIGJlbG93LlxudmFyIHhoclxuZnVuY3Rpb24gZ2V0WEhSICgpIHtcblx0Ly8gQ2FjaGUgdGhlIHhociB2YWx1ZVxuXHRpZiAoeGhyICE9PSB1bmRlZmluZWQpIHJldHVybiB4aHJcblxuXHRpZiAoZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KSB7XG5cdFx0eGhyID0gbmV3IGdsb2JhbC5YTUxIdHRwUmVxdWVzdCgpXG5cdFx0Ly8gSWYgWERvbWFpblJlcXVlc3QgaXMgYXZhaWxhYmxlIChpZSBvbmx5LCB3aGVyZSB4aHIgbWlnaHQgbm90IHdvcmtcblx0XHQvLyBjcm9zcyBkb21haW4pLCB1c2UgdGhlIHBhZ2UgbG9jYXRpb24uIE90aGVyd2lzZSB1c2UgZXhhbXBsZS5jb21cblx0XHQvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgbWFrZSBhbiBodHRwIHJlcXVlc3QuXG5cdFx0dHJ5IHtcblx0XHRcdHhoci5vcGVuKCdHRVQnLCBnbG9iYWwuWERvbWFpblJlcXVlc3QgPyAnLycgOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScpXG5cdFx0fSBjYXRjaChlKSB7XG5cdFx0XHR4aHIgPSBudWxsXG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIFNlcnZpY2Ugd29ya2VycyBkb24ndCBoYXZlIFhIUlxuXHRcdHhociA9IG51bGxcblx0fVxuXHRyZXR1cm4geGhyXG59XG5cbmZ1bmN0aW9uIGNoZWNrVHlwZVN1cHBvcnQgKHR5cGUpIHtcblx0dmFyIHhociA9IGdldFhIUigpXG5cdGlmICgheGhyKSByZXR1cm4gZmFsc2Vcblx0dHJ5IHtcblx0XHR4aHIucmVzcG9uc2VUeXBlID0gdHlwZVxuXHRcdHJldHVybiB4aHIucmVzcG9uc2VUeXBlID09PSB0eXBlXG5cdH0gY2F0Y2ggKGUpIHt9XG5cdHJldHVybiBmYWxzZVxufVxuXG4vLyBGb3Igc29tZSBzdHJhbmdlIHJlYXNvbiwgU2FmYXJpIDcuMCByZXBvcnRzIHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgPT09ICdvYmplY3QnLlxuLy8gU2FmYXJpIDcuMSBhcHBlYXJzIHRvIGhhdmUgZml4ZWQgdGhpcyBidWcuXG52YXIgaGF2ZUFycmF5QnVmZmVyID0gdHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCdcbnZhciBoYXZlU2xpY2UgPSBoYXZlQXJyYXlCdWZmZXIgJiYgaXNGdW5jdGlvbihnbG9iYWwuQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKVxuXG4vLyBJZiBmZXRjaCBpcyBzdXBwb3J0ZWQsIHRoZW4gYXJyYXlidWZmZXIgd2lsbCBiZSBzdXBwb3J0ZWQgdG9vLiBTa2lwIGNhbGxpbmdcbi8vIGNoZWNrVHlwZVN1cHBvcnQoKSwgc2luY2UgdGhhdCBjYWxscyBnZXRYSFIoKS5cbmV4cG9ydHMuYXJyYXlidWZmZXIgPSBleHBvcnRzLmZldGNoIHx8IChoYXZlQXJyYXlCdWZmZXIgJiYgY2hlY2tUeXBlU3VwcG9ydCgnYXJyYXlidWZmZXInKSlcblxuLy8gVGhlc2UgbmV4dCB0d28gdGVzdHMgdW5hdm9pZGFibHkgc2hvdyB3YXJuaW5ncyBpbiBDaHJvbWUuIFNpbmNlIGZldGNoIHdpbGwgYWx3YXlzXG4vLyBiZSB1c2VkIGlmIGl0J3MgYXZhaWxhYmxlLCBqdXN0IHJldHVybiBmYWxzZSBmb3IgdGhlc2UgdG8gYXZvaWQgdGhlIHdhcm5pbmdzLlxuZXhwb3J0cy5tc3N0cmVhbSA9ICFleHBvcnRzLmZldGNoICYmIGhhdmVTbGljZSAmJiBjaGVja1R5cGVTdXBwb3J0KCdtcy1zdHJlYW0nKVxuZXhwb3J0cy5tb3pjaHVua2VkYXJyYXlidWZmZXIgPSAhZXhwb3J0cy5mZXRjaCAmJiBoYXZlQXJyYXlCdWZmZXIgJiZcblx0Y2hlY2tUeXBlU3VwcG9ydCgnbW96LWNodW5rZWQtYXJyYXlidWZmZXInKVxuXG4vLyBJZiBmZXRjaCBpcyBzdXBwb3J0ZWQsIHRoZW4gb3ZlcnJpZGVNaW1lVHlwZSB3aWxsIGJlIHN1cHBvcnRlZCB0b28uIFNraXAgY2FsbGluZ1xuLy8gZ2V0WEhSKCkuXG5leHBvcnRzLm92ZXJyaWRlTWltZVR5cGUgPSBleHBvcnRzLmZldGNoIHx8IChnZXRYSFIoKSA/IGlzRnVuY3Rpb24oZ2V0WEhSKCkub3ZlcnJpZGVNaW1lVHlwZSkgOiBmYWxzZSlcblxuZXhwb3J0cy52YkFycmF5ID0gaXNGdW5jdGlvbihnbG9iYWwuVkJBcnJheSlcblxuZnVuY3Rpb24gaXNGdW5jdGlvbiAodmFsdWUpIHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG54aHIgPSBudWxsIC8vIEhlbHAgZ2NcbiIsInZhciBjYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9jYXBhYmlsaXR5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciByZXNwb25zZSA9IHJlcXVpcmUoJy4vcmVzcG9uc2UnKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpXG52YXIgdG9BcnJheUJ1ZmZlciA9IHJlcXVpcmUoJ3RvLWFycmF5YnVmZmVyJylcblxudmFyIEluY29taW5nTWVzc2FnZSA9IHJlc3BvbnNlLkluY29taW5nTWVzc2FnZVxudmFyIHJTdGF0ZXMgPSByZXNwb25zZS5yZWFkeVN0YXRlc1xuXG5mdW5jdGlvbiBkZWNpZGVNb2RlIChwcmVmZXJCaW5hcnksIHVzZUZldGNoKSB7XG5cdGlmIChjYXBhYmlsaXR5LmZldGNoICYmIHVzZUZldGNoKSB7XG5cdFx0cmV0dXJuICdmZXRjaCdcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5Lm1vemNodW5rZWRhcnJheWJ1ZmZlcikge1xuXHRcdHJldHVybiAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5tc3N0cmVhbSkge1xuXHRcdHJldHVybiAnbXMtc3RyZWFtJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkuYXJyYXlidWZmZXIgJiYgcHJlZmVyQmluYXJ5KSB7XG5cdFx0cmV0dXJuICdhcnJheWJ1ZmZlcidcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5LnZiQXJyYXkgJiYgcHJlZmVyQmluYXJ5KSB7XG5cdFx0cmV0dXJuICd0ZXh0OnZiYXJyYXknXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuICd0ZXh0J1xuXHR9XG59XG5cbnZhciBDbGllbnRSZXF1ZXN0ID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0cykge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c3RyZWFtLldyaXRhYmxlLmNhbGwoc2VsZilcblxuXHRzZWxmLl9vcHRzID0gb3B0c1xuXHRzZWxmLl9ib2R5ID0gW11cblx0c2VsZi5faGVhZGVycyA9IHt9XG5cdGlmIChvcHRzLmF1dGgpXG5cdFx0c2VsZi5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIG5ldyBCdWZmZXIob3B0cy5hdXRoKS50b1N0cmluZygnYmFzZTY0JykpXG5cdE9iamVjdC5rZXlzKG9wdHMuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuXHRcdHNlbGYuc2V0SGVhZGVyKG5hbWUsIG9wdHMuaGVhZGVyc1tuYW1lXSlcblx0fSlcblxuXHR2YXIgcHJlZmVyQmluYXJ5XG5cdHZhciB1c2VGZXRjaCA9IHRydWVcblx0aWYgKG9wdHMubW9kZSA9PT0gJ2Rpc2FibGUtZmV0Y2gnIHx8ICgncmVxdWVzdFRpbWVvdXQnIGluIG9wdHMgJiYgIWNhcGFiaWxpdHkuYWJvcnRDb250cm9sbGVyKSkge1xuXHRcdC8vIElmIHRoZSB1c2Ugb2YgWEhSIHNob3VsZCBiZSBwcmVmZXJyZWQuIE5vdCB0eXBpY2FsbHkgbmVlZGVkLlxuXHRcdHVzZUZldGNoID0gZmFsc2Vcblx0XHRwcmVmZXJCaW5hcnkgPSB0cnVlXG5cdH0gZWxzZSBpZiAob3B0cy5tb2RlID09PSAncHJlZmVyLXN0cmVhbWluZycpIHtcblx0XHQvLyBJZiBzdHJlYW1pbmcgaXMgYSBoaWdoIHByaW9yaXR5IGJ1dCBiaW5hcnkgY29tcGF0aWJpbGl0eSBhbmRcblx0XHQvLyB0aGUgYWNjdXJhY3kgb2YgdGhlICdjb250ZW50LXR5cGUnIGhlYWRlciBhcmVuJ3Rcblx0XHRwcmVmZXJCaW5hcnkgPSBmYWxzZVxuXHR9IGVsc2UgaWYgKG9wdHMubW9kZSA9PT0gJ2FsbG93LXdyb25nLWNvbnRlbnQtdHlwZScpIHtcblx0XHQvLyBJZiBzdHJlYW1pbmcgaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBwcmVzZXJ2aW5nIHRoZSAnY29udGVudC10eXBlJyBoZWFkZXJcblx0XHRwcmVmZXJCaW5hcnkgPSAhY2FwYWJpbGl0eS5vdmVycmlkZU1pbWVUeXBlXG5cdH0gZWxzZSBpZiAoIW9wdHMubW9kZSB8fCBvcHRzLm1vZGUgPT09ICdkZWZhdWx0JyB8fCBvcHRzLm1vZGUgPT09ICdwcmVmZXItZmFzdCcpIHtcblx0XHQvLyBVc2UgYmluYXJ5IGlmIHRleHQgc3RyZWFtaW5nIG1heSBjb3JydXB0IGRhdGEgb3IgdGhlIGNvbnRlbnQtdHlwZSBoZWFkZXIsIG9yIGZvciBzcGVlZFxuXHRcdHByZWZlckJpbmFyeSA9IHRydWVcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIG9wdHMubW9kZScpXG5cdH1cblx0c2VsZi5fbW9kZSA9IGRlY2lkZU1vZGUocHJlZmVyQmluYXJ5LCB1c2VGZXRjaClcblx0c2VsZi5fZmV0Y2hUaW1lciA9IG51bGxcblxuXHRzZWxmLm9uKCdmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG5cdFx0c2VsZi5fb25GaW5pc2goKVxuXHR9KVxufVxuXG5pbmhlcml0cyhDbGllbnRSZXF1ZXN0LCBzdHJlYW0uV3JpdGFibGUpXG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldEhlYWRlciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0dmFyIGxvd2VyTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXHQvLyBUaGlzIGNoZWNrIGlzIG5vdCBuZWNlc3NhcnksIGJ1dCBpdCBwcmV2ZW50cyB3YXJuaW5ncyBmcm9tIGJyb3dzZXJzIGFib3V0IHNldHRpbmcgdW5zYWZlXG5cdC8vIGhlYWRlcnMuIFRvIGJlIGhvbmVzdCBJJ20gbm90IGVudGlyZWx5IHN1cmUgaGlkaW5nIHRoZXNlIHdhcm5pbmdzIGlzIGEgZ29vZCB0aGluZywgYnV0XG5cdC8vIGh0dHAtYnJvd3NlcmlmeSBkaWQgaXQsIHNvIEkgd2lsbCB0b28uXG5cdGlmICh1bnNhZmVIZWFkZXJzLmluZGV4T2YobG93ZXJOYW1lKSAhPT0gLTEpXG5cdFx0cmV0dXJuXG5cblx0c2VsZi5faGVhZGVyc1tsb3dlck5hbWVdID0ge1xuXHRcdG5hbWU6IG5hbWUsXG5cdFx0dmFsdWU6IHZhbHVlXG5cdH1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZ2V0SGVhZGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0dmFyIGhlYWRlciA9IHRoaXMuX2hlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXVxuXHRpZiAoaGVhZGVyKVxuXHRcdHJldHVybiBoZWFkZXIudmFsdWVcblx0cmV0dXJuIG51bGxcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUucmVtb3ZlSGVhZGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdGRlbGV0ZSBzZWxmLl9oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX29uRmluaXNoID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdHJldHVyblxuXHR2YXIgb3B0cyA9IHNlbGYuX29wdHNcblxuXHR2YXIgaGVhZGVyc09iaiA9IHNlbGYuX2hlYWRlcnNcblx0dmFyIGJvZHkgPSBudWxsXG5cdGlmIChvcHRzLm1ldGhvZCAhPT0gJ0dFVCcgJiYgb3B0cy5tZXRob2QgIT09ICdIRUFEJykge1xuXHRcdGlmIChjYXBhYmlsaXR5LmFycmF5YnVmZmVyKSB7XG5cdFx0XHRib2R5ID0gdG9BcnJheUJ1ZmZlcihCdWZmZXIuY29uY2F0KHNlbGYuX2JvZHkpKVxuXHRcdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5ibG9iQ29uc3RydWN0b3IpIHtcblx0XHRcdGJvZHkgPSBuZXcgZ2xvYmFsLkJsb2Ioc2VsZi5fYm9keS5tYXAoZnVuY3Rpb24gKGJ1ZmZlcikge1xuXHRcdFx0XHRyZXR1cm4gdG9BcnJheUJ1ZmZlcihidWZmZXIpXG5cdFx0XHR9KSwge1xuXHRcdFx0XHR0eXBlOiAoaGVhZGVyc09ialsnY29udGVudC10eXBlJ10gfHwge30pLnZhbHVlIHx8ICcnXG5cdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBnZXQgdXRmOCBzdHJpbmdcblx0XHRcdGJvZHkgPSBCdWZmZXIuY29uY2F0KHNlbGYuX2JvZHkpLnRvU3RyaW5nKClcblx0XHR9XG5cdH1cblxuXHQvLyBjcmVhdGUgZmxhdHRlbmVkIGxpc3Qgb2YgaGVhZGVyc1xuXHR2YXIgaGVhZGVyc0xpc3QgPSBbXVxuXHRPYmplY3Qua2V5cyhoZWFkZXJzT2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlOYW1lKSB7XG5cdFx0dmFyIG5hbWUgPSBoZWFkZXJzT2JqW2tleU5hbWVdLm5hbWVcblx0XHR2YXIgdmFsdWUgPSBoZWFkZXJzT2JqW2tleU5hbWVdLnZhbHVlXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG5cdFx0XHRcdGhlYWRlcnNMaXN0LnB1c2goW25hbWUsIHZdKVxuXHRcdFx0fSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGVhZGVyc0xpc3QucHVzaChbbmFtZSwgdmFsdWVdKVxuXHRcdH1cblx0fSlcblxuXHRpZiAoc2VsZi5fbW9kZSA9PT0gJ2ZldGNoJykge1xuXHRcdHZhciBzaWduYWwgPSBudWxsXG5cdFx0dmFyIGZldGNoVGltZXIgPSBudWxsXG5cdFx0aWYgKGNhcGFiaWxpdHkuYWJvcnRDb250cm9sbGVyKSB7XG5cdFx0XHR2YXIgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXHRcdFx0c2lnbmFsID0gY29udHJvbGxlci5zaWduYWxcblx0XHRcdHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyID0gY29udHJvbGxlclxuXG5cdFx0XHRpZiAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzICYmIG9wdHMucmVxdWVzdFRpbWVvdXQgIT09IDApIHtcblx0XHRcdFx0c2VsZi5fZmV0Y2hUaW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRzZWxmLmVtaXQoJ3JlcXVlc3RUaW1lb3V0Jylcblx0XHRcdFx0XHRpZiAoc2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIpXG5cdFx0XHRcdFx0XHRzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlci5hYm9ydCgpXG5cdFx0XHRcdH0sIG9wdHMucmVxdWVzdFRpbWVvdXQpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Z2xvYmFsLmZldGNoKHNlbGYuX29wdHMudXJsLCB7XG5cdFx0XHRtZXRob2Q6IHNlbGYuX29wdHMubWV0aG9kLFxuXHRcdFx0aGVhZGVyczogaGVhZGVyc0xpc3QsXG5cdFx0XHRib2R5OiBib2R5IHx8IHVuZGVmaW5lZCxcblx0XHRcdG1vZGU6ICdjb3JzJyxcblx0XHRcdGNyZWRlbnRpYWxzOiBvcHRzLndpdGhDcmVkZW50aWFscyA/ICdpbmNsdWRlJyA6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRzaWduYWw6IHNpZ25hbFxuXHRcdH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdFx0XHRzZWxmLl9mZXRjaFJlc3BvbnNlID0gcmVzcG9uc2Vcblx0XHRcdHNlbGYuX2Nvbm5lY3QoKVxuXHRcdH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcblx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoc2VsZi5fZmV0Y2hUaW1lcilcblx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgcmVhc29uKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0dmFyIHhociA9IHNlbGYuX3hociA9IG5ldyBnbG9iYWwuWE1MSHR0cFJlcXVlc3QoKVxuXHRcdHRyeSB7XG5cdFx0XHR4aHIub3BlbihzZWxmLl9vcHRzLm1ldGhvZCwgc2VsZi5fb3B0cy51cmwsIHRydWUpXG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHQvLyBDYW4ndCBzZXQgcmVzcG9uc2VUeXBlIG9uIHJlYWxseSBvbGQgYnJvd3NlcnNcblx0XHRpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKVxuXHRcdFx0eGhyLnJlc3BvbnNlVHlwZSA9IHNlbGYuX21vZGUuc3BsaXQoJzonKVswXVxuXG5cdFx0aWYgKCd3aXRoQ3JlZGVudGlhbHMnIGluIHhocilcblx0XHRcdHhoci53aXRoQ3JlZGVudGlhbHMgPSAhIW9wdHMud2l0aENyZWRlbnRpYWxzXG5cblx0XHRpZiAoc2VsZi5fbW9kZSA9PT0gJ3RleHQnICYmICdvdmVycmlkZU1pbWVUeXBlJyBpbiB4aHIpXG5cdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCcpXG5cblx0XHRpZiAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzKSB7XG5cdFx0XHR4aHIudGltZW91dCA9IG9wdHMucmVxdWVzdFRpbWVvdXRcblx0XHRcdHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgncmVxdWVzdFRpbWVvdXQnKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhlYWRlcnNMaXN0LmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikge1xuXHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG5cdFx0fSlcblxuXHRcdHNlbGYuX3Jlc3BvbnNlID0gbnVsbFxuXHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRzd2l0Y2ggKHhoci5yZWFkeVN0YXRlKSB7XG5cdFx0XHRcdGNhc2UgclN0YXRlcy5MT0FESU5HOlxuXHRcdFx0XHRjYXNlIHJTdGF0ZXMuRE9ORTpcblx0XHRcdFx0XHRzZWxmLl9vblhIUlByb2dyZXNzKClcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBOZWNlc3NhcnkgZm9yIHN0cmVhbWluZyBpbiBGaXJlZm94LCBzaW5jZSB4aHIucmVzcG9uc2UgaXMgT05MWSBkZWZpbmVkXG5cdFx0Ly8gaW4gb25wcm9ncmVzcywgbm90IGluIG9ucmVhZHlzdGF0ZWNoYW5nZSB3aXRoIHhoci5yZWFkeVN0YXRlID0gM1xuXHRcdGlmIChzZWxmLl9tb2RlID09PSAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInKSB7XG5cdFx0XHR4aHIub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5fb25YSFJQcm9ncmVzcygpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0eGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ1hIUiBlcnJvcicpKVxuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHR4aHIuc2VuZChib2R5KVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHhoci5zdGF0dXMgaXMgcmVhZGFibGUgYW5kIG5vbi16ZXJvLCBpbmRpY2F0aW5nIG5vIGVycm9yLlxuICogRXZlbiB0aG91Z2ggdGhlIHNwZWMgc2F5cyBpdCBzaG91bGQgYmUgYXZhaWxhYmxlIGluIHJlYWR5U3RhdGUgMyxcbiAqIGFjY2Vzc2luZyBpdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIElFOFxuICovXG5mdW5jdGlvbiBzdGF0dXNWYWxpZCAoeGhyKSB7XG5cdHRyeSB7XG5cdFx0dmFyIHN0YXR1cyA9IHhoci5zdGF0dXNcblx0XHRyZXR1cm4gKHN0YXR1cyAhPT0gbnVsbCAmJiBzdGF0dXMgIT09IDApXG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fb25YSFJQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0aWYgKCFzdGF0dXNWYWxpZChzZWxmLl94aHIpIHx8IHNlbGYuX2Rlc3Ryb3llZClcblx0XHRyZXR1cm5cblxuXHRpZiAoIXNlbGYuX3Jlc3BvbnNlKVxuXHRcdHNlbGYuX2Nvbm5lY3QoKVxuXG5cdHNlbGYuX3Jlc3BvbnNlLl9vblhIUlByb2dyZXNzKClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX2Nvbm5lY3QgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0cmV0dXJuXG5cblx0c2VsZi5fcmVzcG9uc2UgPSBuZXcgSW5jb21pbmdNZXNzYWdlKHNlbGYuX3hociwgc2VsZi5fZmV0Y2hSZXNwb25zZSwgc2VsZi5fbW9kZSwgc2VsZi5fZmV0Y2hUaW1lcilcblx0c2VsZi5fcmVzcG9uc2Uub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG5cdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0fSlcblxuXHRzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgc2VsZi5fcmVzcG9uc2UpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHNlbGYuX2JvZHkucHVzaChjaHVuaylcblx0Y2IoKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5hYm9ydCA9IENsaWVudFJlcXVlc3QucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRzZWxmLl9kZXN0cm95ZWQgPSB0cnVlXG5cdGdsb2JhbC5jbGVhclRpbWVvdXQoc2VsZi5fZmV0Y2hUaW1lcilcblx0aWYgKHNlbGYuX3Jlc3BvbnNlKVxuXHRcdHNlbGYuX3Jlc3BvbnNlLl9kZXN0cm95ZWQgPSB0cnVlXG5cdGlmIChzZWxmLl94aHIpXG5cdFx0c2VsZi5feGhyLmFib3J0KClcblx0ZWxzZSBpZiAoc2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIpXG5cdFx0c2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcsIGNiKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRjYiA9IGRhdGFcblx0XHRkYXRhID0gdW5kZWZpbmVkXG5cdH1cblxuXHRzdHJlYW0uV3JpdGFibGUucHJvdG90eXBlLmVuZC5jYWxsKHNlbGYsIGRhdGEsIGVuY29kaW5nLCBjYilcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZmx1c2hIZWFkZXJzID0gZnVuY3Rpb24gKCkge31cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldFRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7fVxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0Tm9EZWxheSA9IGZ1bmN0aW9uICgpIHt9XG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRTb2NrZXRLZWVwQWxpdmUgPSBmdW5jdGlvbiAoKSB7fVxuXG4vLyBUYWtlbiBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1hNTEh0dHBSZXF1ZXN0LyN0aGUtc2V0cmVxdWVzdGhlYWRlciUyOCUyOS1tZXRob2RcbnZhciB1bnNhZmVIZWFkZXJzID0gW1xuXHQnYWNjZXB0LWNoYXJzZXQnLFxuXHQnYWNjZXB0LWVuY29kaW5nJyxcblx0J2FjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycycsXG5cdCdhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LW1ldGhvZCcsXG5cdCdjb25uZWN0aW9uJyxcblx0J2NvbnRlbnQtbGVuZ3RoJyxcblx0J2Nvb2tpZScsXG5cdCdjb29raWUyJyxcblx0J2RhdGUnLFxuXHQnZG50Jyxcblx0J2V4cGVjdCcsXG5cdCdob3N0Jyxcblx0J2tlZXAtYWxpdmUnLFxuXHQnb3JpZ2luJyxcblx0J3JlZmVyZXInLFxuXHQndGUnLFxuXHQndHJhaWxlcicsXG5cdCd0cmFuc2Zlci1lbmNvZGluZycsXG5cdCd1cGdyYWRlJyxcblx0J3ZpYSdcbl1cbiIsInZhciBjYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9jYXBhYmlsaXR5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxuXG52YXIgclN0YXRlcyA9IGV4cG9ydHMucmVhZHlTdGF0ZXMgPSB7XG5cdFVOU0VOVDogMCxcblx0T1BFTkVEOiAxLFxuXHRIRUFERVJTX1JFQ0VJVkVEOiAyLFxuXHRMT0FESU5HOiAzLFxuXHRET05FOiA0XG59XG5cbnZhciBJbmNvbWluZ01lc3NhZ2UgPSBleHBvcnRzLkluY29taW5nTWVzc2FnZSA9IGZ1bmN0aW9uICh4aHIsIHJlc3BvbnNlLCBtb2RlLCBmZXRjaFRpbWVyKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRzdHJlYW0uUmVhZGFibGUuY2FsbChzZWxmKVxuXG5cdHNlbGYuX21vZGUgPSBtb2RlXG5cdHNlbGYuaGVhZGVycyA9IHt9XG5cdHNlbGYucmF3SGVhZGVycyA9IFtdXG5cdHNlbGYudHJhaWxlcnMgPSB7fVxuXHRzZWxmLnJhd1RyYWlsZXJzID0gW11cblxuXHQvLyBGYWtlIHRoZSAnY2xvc2UnIGV2ZW50LCBidXQgb25seSBvbmNlICdlbmQnIGZpcmVzXG5cdHNlbGYub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcblx0XHQvLyBUaGUgbmV4dFRpY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgdGhlICdyZXF1ZXN0JyBtb2R1bGUgZnJvbSBjYXVzaW5nIGFuIGluZmluaXRlIGxvb3Bcblx0XHRwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdHNlbGYuZW1pdCgnY2xvc2UnKVxuXHRcdH0pXG5cdH0pXG5cblx0aWYgKG1vZGUgPT09ICdmZXRjaCcpIHtcblx0XHRzZWxmLl9mZXRjaFJlc3BvbnNlID0gcmVzcG9uc2VcblxuXHRcdHNlbGYudXJsID0gcmVzcG9uc2UudXJsXG5cdFx0c2VsZi5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzXG5cdFx0c2VsZi5zdGF0dXNNZXNzYWdlID0gcmVzcG9uc2Uuc3RhdHVzVGV4dFxuXHRcdFxuXHRcdHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyLCBrZXkpe1xuXHRcdFx0c2VsZi5oZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXSA9IGhlYWRlclxuXHRcdFx0c2VsZi5yYXdIZWFkZXJzLnB1c2goa2V5LCBoZWFkZXIpXG5cdFx0fSlcblxuXHRcdGlmIChjYXBhYmlsaXR5LndyaXRhYmxlU3RyZWFtKSB7XG5cdFx0XHR2YXIgd3JpdGFibGUgPSBuZXcgV3JpdGFibGVTdHJlYW0oe1xuXHRcdFx0XHR3cml0ZTogZnVuY3Rpb24gKGNodW5rKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHRcdFx0XHRcdGlmIChzZWxmLl9kZXN0cm95ZWQpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KClcblx0XHRcdFx0XHRcdH0gZWxzZSBpZihzZWxmLnB1c2gobmV3IEJ1ZmZlcihjaHVuaykpKSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0c2VsZi5fcmVzdW1lRmV0Y2ggPSByZXNvbHZlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSxcblx0XHRcdFx0Y2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0XHRzZWxmLnB1c2gobnVsbClcblx0XHRcdFx0fSxcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJlc3BvbnNlLmJvZHkucGlwZVRvKHdyaXRhYmxlKS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9IGNhdGNoIChlKSB7fSAvLyBwaXBlVG8gbWV0aG9kIGlzbid0IGRlZmluZWQuIENhbid0IGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGZlYXR1cmUgdGVzdCB0aGlzXG5cdFx0fVxuXHRcdC8vIGZhbGxiYWNrIGZvciB3aGVuIHdyaXRhYmxlU3RyZWFtIG9yIHBpcGVUbyBhcmVuJ3QgYXZhaWxhYmxlXG5cdFx0dmFyIHJlYWRlciA9IHJlc3BvbnNlLmJvZHkuZ2V0UmVhZGVyKClcblx0XHRmdW5jdGlvbiByZWFkICgpIHtcblx0XHRcdHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG5cdFx0XHRcdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGlmIChyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0XHRzZWxmLnB1c2gobnVsbClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihyZXN1bHQudmFsdWUpKVxuXHRcdFx0XHRyZWFkKClcblx0XHRcdH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0fSlcblx0XHR9XG5cdFx0cmVhZCgpXG5cdH0gZWxzZSB7XG5cdFx0c2VsZi5feGhyID0geGhyXG5cdFx0c2VsZi5fcG9zID0gMFxuXG5cdFx0c2VsZi51cmwgPSB4aHIucmVzcG9uc2VVUkxcblx0XHRzZWxmLnN0YXR1c0NvZGUgPSB4aHIuc3RhdHVzXG5cdFx0c2VsZi5zdGF0dXNNZXNzYWdlID0geGhyLnN0YXR1c1RleHRcblx0XHR2YXIgaGVhZGVycyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5zcGxpdCgvXFxyP1xcbi8pXG5cdFx0aGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcblx0XHRcdHZhciBtYXRjaGVzID0gaGVhZGVyLm1hdGNoKC9eKFteOl0rKTpcXHMqKC4qKS8pXG5cdFx0XHRpZiAobWF0Y2hlcykge1xuXHRcdFx0XHR2YXIga2V5ID0gbWF0Y2hlc1sxXS50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuXHRcdFx0XHRcdGlmIChzZWxmLmhlYWRlcnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XSA9IFtdXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldLnB1c2gobWF0Y2hlc1syXSlcblx0XHRcdFx0fSBlbHNlIGlmIChzZWxmLmhlYWRlcnNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gKz0gJywgJyArIG1hdGNoZXNbMl1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XSA9IG1hdGNoZXNbMl1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLnJhd0hlYWRlcnMucHVzaChtYXRjaGVzWzFdLCBtYXRjaGVzWzJdKVxuXHRcdFx0fVxuXHRcdH0pXG5cblx0XHRzZWxmLl9jaGFyc2V0ID0gJ3gtdXNlci1kZWZpbmVkJ1xuXHRcdGlmICghY2FwYWJpbGl0eS5vdmVycmlkZU1pbWVUeXBlKSB7XG5cdFx0XHR2YXIgbWltZVR5cGUgPSBzZWxmLnJhd0hlYWRlcnNbJ21pbWUtdHlwZSddXG5cdFx0XHRpZiAobWltZVR5cGUpIHtcblx0XHRcdFx0dmFyIGNoYXJzZXRNYXRjaCA9IG1pbWVUeXBlLm1hdGNoKC87XFxzKmNoYXJzZXQ9KFteO10pKDt8JCkvKVxuXHRcdFx0XHRpZiAoY2hhcnNldE1hdGNoKSB7XG5cdFx0XHRcdFx0c2VsZi5fY2hhcnNldCA9IGNoYXJzZXRNYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghc2VsZi5fY2hhcnNldClcblx0XHRcdFx0c2VsZi5fY2hhcnNldCA9ICd1dGYtOCcgLy8gYmVzdCBndWVzc1xuXHRcdH1cblx0fVxufVxuXG5pbmhlcml0cyhJbmNvbWluZ01lc3NhZ2UsIHN0cmVhbS5SZWFkYWJsZSlcblxuSW5jb21pbmdNZXNzYWdlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0dmFyIHJlc29sdmUgPSBzZWxmLl9yZXN1bWVGZXRjaFxuXHRpZiAocmVzb2x2ZSkge1xuXHRcdHNlbGYuX3Jlc3VtZUZldGNoID0gbnVsbFxuXHRcdHJlc29sdmUoKVxuXHR9XG59XG5cbkluY29taW5nTWVzc2FnZS5wcm90b3R5cGUuX29uWEhSUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHZhciB4aHIgPSBzZWxmLl94aHJcblxuXHR2YXIgcmVzcG9uc2UgPSBudWxsXG5cdHN3aXRjaCAoc2VsZi5fbW9kZSkge1xuXHRcdGNhc2UgJ3RleHQ6dmJhcnJheSc6IC8vIEZvciBJRTlcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5ET05FKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Ly8gVGhpcyBmYWlscyBpbiBJRThcblx0XHRcdFx0cmVzcG9uc2UgPSBuZXcgZ2xvYmFsLlZCQXJyYXkoeGhyLnJlc3BvbnNlQm9keSkudG9BcnJheSgpXG5cdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdFx0aWYgKHJlc3BvbnNlICE9PSBudWxsKSB7XG5cdFx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKHJlc3BvbnNlKSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHRcdC8vIEZhbGxzIHRocm91Z2ggaW4gSUU4XHRcblx0XHRjYXNlICd0ZXh0Jzpcblx0XHRcdHRyeSB7IC8vIFRoaXMgd2lsbCBmYWlsIHdoZW4gcmVhZHlTdGF0ZSA9IDMgaW4gSUU5LiBTd2l0Y2ggbW9kZSBhbmQgd2FpdCBmb3IgcmVhZHlTdGF0ZSA9IDRcblx0XHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2VUZXh0XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHNlbGYuX21vZGUgPSAndGV4dDp2YmFycmF5J1xuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3BvbnNlLmxlbmd0aCA+IHNlbGYuX3Bvcykge1xuXHRcdFx0XHR2YXIgbmV3RGF0YSA9IHJlc3BvbnNlLnN1YnN0cihzZWxmLl9wb3MpXG5cdFx0XHRcdGlmIChzZWxmLl9jaGFyc2V0ID09PSAneC11c2VyLWRlZmluZWQnKSB7XG5cdFx0XHRcdFx0dmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobmV3RGF0YS5sZW5ndGgpXG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBuZXdEYXRhLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdFx0YnVmZmVyW2ldID0gbmV3RGF0YS5jaGFyQ29kZUF0KGkpICYgMHhmZlxuXG5cdFx0XHRcdFx0c2VsZi5wdXNoKGJ1ZmZlcilcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLnB1c2gobmV3RGF0YSwgc2VsZi5fY2hhcnNldClcblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLl9wb3MgPSByZXNwb25zZS5sZW5ndGhcblx0XHRcdH1cblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnYXJyYXlidWZmZXInOlxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkRPTkUgfHwgIXhoci5yZXNwb25zZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZXNwb25zZSkpKVxuXHRcdFx0YnJlYWtcblx0XHRjYXNlICdtb3otY2h1bmtlZC1hcnJheWJ1ZmZlcic6IC8vIHRha2Ugd2hvbGVcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuTE9BRElORyB8fCAhcmVzcG9uc2UpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZXNwb25zZSkpKVxuXHRcdFx0YnJlYWtcblx0XHRjYXNlICdtcy1zdHJlYW0nOlxuXHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2Vcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5MT0FESU5HKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0dmFyIHJlYWRlciA9IG5ldyBnbG9iYWwuTVNTdHJlYW1SZWFkZXIoKVxuXHRcdFx0cmVhZGVyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmIChyZWFkZXIucmVzdWx0LmJ5dGVMZW5ndGggPiBzZWxmLl9wb3MpIHtcblx0XHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZWFkZXIucmVzdWx0LnNsaWNlKHNlbGYuX3BvcykpKSlcblx0XHRcdFx0XHRzZWxmLl9wb3MgPSByZWFkZXIucmVzdWx0LmJ5dGVMZW5ndGhcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHR9XG5cdFx0XHQvLyByZWFkZXIub25lcnJvciA9ID8/PyAvLyBUT0RPOiB0aGlzXG5cdFx0XHRyZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIocmVzcG9uc2UpXG5cdFx0XHRicmVha1xuXHR9XG5cblx0Ly8gVGhlIG1zLXN0cmVhbSBjYXNlIGhhbmRsZXMgZW5kIHNlcGFyYXRlbHkgaW4gcmVhZGVyLm9ubG9hZCgpXG5cdGlmIChzZWxmLl94aHIucmVhZHlTdGF0ZSA9PT0gclN0YXRlcy5ET05FICYmIHNlbGYuX21vZGUgIT09ICdtcy1zdHJlYW0nKSB7XG5cdFx0c2VsZi5wdXNoKG51bGwpXG5cdH1cbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgaXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nIHx8IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7XG4gIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6Y2FzZSAndXRmOCc6Y2FzZSAndXRmLTgnOmNhc2UgJ2FzY2lpJzpjYXNlICdiaW5hcnknOmNhc2UgJ2Jhc2U2NCc6Y2FzZSAndWNzMic6Y2FzZSAndWNzLTInOmNhc2UgJ3V0ZjE2bGUnOmNhc2UgJ3V0Zi0xNmxlJzpjYXNlICdyYXcnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICBpZiAoIWVuYykgcmV0dXJuICd1dGY4JztcbiAgdmFyIHJldHJpZWQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmMpIHtcbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gJ3V0ZjgnO1xuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuICd1dGYxNmxlJztcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gJ2xhdGluMSc7XG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGVuYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZFxuICAgICAgICBlbmMgPSAoJycgKyBlbmMpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHJpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRG8gbm90IGNhY2hlIGBCdWZmZXIuaXNFbmNvZGluZ2Agd2hlbiBjaGVja2luZyBlbmNvZGluZyBuYW1lcyBhcyBzb21lXG4vLyBtb2R1bGVzIG1vbmtleS1wYXRjaCBpdCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgZW5jb2RpbmdzXG5mdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgdmFyIG5lbmMgPSBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKTtcbiAgaWYgKHR5cGVvZiBuZW5jICE9PSAnc3RyaW5nJyAmJiAoQnVmZmVyLmlzRW5jb2RpbmcgPT09IGlzRW5jb2RpbmcgfHwgIWlzRW5jb2RpbmcoZW5jKSkpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuYyk7XG4gIHJldHVybiBuZW5jIHx8IGVuYztcbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLlxuZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjtcbmZ1bmN0aW9uIFN0cmluZ0RlY29kZXIoZW5jb2RpbmcpIHtcbiAgdGhpcy5lbmNvZGluZyA9IG5vcm1hbGl6ZUVuY29kaW5nKGVuY29kaW5nKTtcbiAgdmFyIG5iO1xuICBzd2l0Y2ggKHRoaXMuZW5jb2RpbmcpIHtcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gdXRmMTZFbmQ7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1dGY4JzpcbiAgICAgIHRoaXMuZmlsbExhc3QgPSB1dGY4RmlsbExhc3Q7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gYmFzZTY0RW5kO1xuICAgICAgbmIgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBzaW1wbGVXcml0ZTtcbiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kO1xuICAgICAgcmV0dXJuO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAwO1xuICB0aGlzLmxhc3RUb3RhbCA9IDA7XG4gIHRoaXMubGFzdENoYXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobmIpO1xufVxuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgdmFyIHI7XG4gIHZhciBpO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHIgPSB0aGlzLmZpbGxMYXN0KGJ1Zik7XG4gICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIGkgPSB0aGlzLmxhc3ROZWVkO1xuICAgIHRoaXMubGFzdE5lZWQgPSAwO1xuICB9IGVsc2Uge1xuICAgIGkgPSAwO1xuICB9XG4gIGlmIChpIDwgYnVmLmxlbmd0aCkgcmV0dXJuIHIgPyByICsgdGhpcy50ZXh0KGJ1ZiwgaSkgOiB0aGlzLnRleHQoYnVmLCBpKTtcbiAgcmV0dXJuIHIgfHwgJyc7XG59O1xuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSB1dGY4RW5kO1xuXG4vLyBSZXR1cm5zIG9ubHkgY29tcGxldGUgY2hhcmFjdGVycyBpbiBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUudGV4dCA9IHV0ZjhUZXh0O1xuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIHBhcnRpYWwgbm9uLVVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5maWxsTGFzdCA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn07XG5cbi8vIENoZWNrcyB0aGUgdHlwZSBvZiBhIFVURi04IGJ5dGUsIHdoZXRoZXIgaXQncyBBU0NJSSwgYSBsZWFkaW5nIGJ5dGUsIG9yIGFcbi8vIGNvbnRpbnVhdGlvbiBieXRlLiBJZiBhbiBpbnZhbGlkIGJ5dGUgaXMgZGV0ZWN0ZWQsIC0yIGlzIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrQnl0ZShieXRlKSB7XG4gIGlmIChieXRlIDw9IDB4N0YpIHJldHVybiAwO2Vsc2UgaWYgKGJ5dGUgPj4gNSA9PT0gMHgwNikgcmV0dXJuIDI7ZWxzZSBpZiAoYnl0ZSA+PiA0ID09PSAweDBFKSByZXR1cm4gMztlbHNlIGlmIChieXRlID4+IDMgPT09IDB4MUUpIHJldHVybiA0O1xuICByZXR1cm4gYnl0ZSA+PiA2ID09PSAweDAyID8gLTEgOiAtMjtcbn1cblxuLy8gQ2hlY2tzIGF0IG1vc3QgMyBieXRlcyBhdCB0aGUgZW5kIG9mIGEgQnVmZmVyIGluIG9yZGVyIHRvIGRldGVjdCBhblxuLy8gaW5jb21wbGV0ZSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3Rlci4gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyAoMiwgMywgb3IgNClcbi8vIG5lZWRlZCB0byBjb21wbGV0ZSB0aGUgVVRGLTggY2hhcmFjdGVyIChpZiBhcHBsaWNhYmxlKSBhcmUgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKHNlbGYsIGJ1ZiwgaSkge1xuICB2YXIgaiA9IGJ1Zi5sZW5ndGggLSAxO1xuICBpZiAoaiA8IGkpIHJldHVybiAwO1xuICB2YXIgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMTtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMjtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkge1xuICAgICAgaWYgKG5iID09PSAyKSBuYiA9IDA7ZWxzZSBzZWxmLmxhc3ROZWVkID0gbmIgLSAzO1xuICAgIH1cbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhc1xuLy8gbmVlZGVkIG9yIGFyZSBhdmFpbGFibGUuIElmIHdlIHNlZSBhIG5vbi1jb250aW51YXRpb24gYnl0ZSB3aGVyZSB3ZSBleHBlY3Rcbi8vIG9uZSwgd2UgXCJyZXBsYWNlXCIgdGhlIHZhbGlkYXRlZCBjb250aW51YXRpb24gYnl0ZXMgd2UndmUgc2VlbiBzbyBmYXIgd2l0aFxuLy8gYSBzaW5nbGUgVVRGLTggcmVwbGFjZW1lbnQgY2hhcmFjdGVyICgnXFx1ZmZmZCcpLCB0byBtYXRjaCB2OCdzIFVURi04IGRlY29kaW5nXG4vLyBiZWhhdmlvci4gVGhlIGNvbnRpbnVhdGlvbiBieXRlIGNoZWNrIGlzIGluY2x1ZGVkIHRocmVlIHRpbWVzIGluIHRoZSBjYXNlXG4vLyB3aGVyZSBhbGwgb2YgdGhlIGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBjaGFyYWN0ZXIgZXhpc3QgaW4gdGhlIHNhbWUgYnVmZmVyLlxuLy8gSXQgaXMgYWxzbyBkb25lIHRoaXMgd2F5IGFzIGEgc2xpZ2h0IHBlcmZvcm1hbmNlIGluY3JlYXNlIGluc3RlYWQgb2YgdXNpbmcgYVxuLy8gbG9vcC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0V4dHJhQnl0ZXMoc2VsZiwgYnVmLCBwKSB7XG4gIGlmICgoYnVmWzBdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICBzZWxmLmxhc3ROZWVkID0gMDtcbiAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICB9XG4gIGlmIChzZWxmLmxhc3ROZWVkID4gMSAmJiBidWYubGVuZ3RoID4gMSkge1xuICAgIGlmICgoYnVmWzFdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgIHNlbGYubGFzdE5lZWQgPSAxO1xuICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICB9XG4gICAgaWYgKHNlbGYubGFzdE5lZWQgPiAyICYmIGJ1Zi5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAoKGJ1ZlsyXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICAgIHNlbGYubGFzdE5lZWQgPSAyO1xuICAgICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuXG5mdW5jdGlvbiB1dGY4RmlsbExhc3QoYnVmKSB7XG4gIHZhciBwID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHI7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn1cblxuLy8gUmV0dXJucyBhbGwgY29tcGxldGUgVVRGLTggY2hhcmFjdGVycyBpbiBhIEJ1ZmZlci4gSWYgdGhlIEJ1ZmZlciBlbmRlZCBvbiBhXG4vLyBwYXJ0aWFsIGNoYXJhY3RlciwgdGhlIGNoYXJhY3RlcidzIGJ5dGVzIGFyZSBidWZmZXJlZCB1bnRpbCB0aGUgcmVxdWlyZWRcbi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gdXRmOFRleHQoYnVmLCBpKSB7XG4gIHZhciB0b3RhbCA9IHV0ZjhDaGVja0luY29tcGxldGUodGhpcywgYnVmLCBpKTtcbiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7XG4gIHRoaXMubGFzdFRvdGFsID0gdG90YWw7XG4gIHZhciBlbmQgPSBidWYubGVuZ3RoIC0gKHRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpLCBlbmQpO1xufVxuXG4vLyBGb3IgVVRGLTgsIGEgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGlzIGFkZGVkIHdoZW4gZW5kaW5nIG9uIGEgcGFydGlhbFxuLy8gY2hhcmFjdGVyLlxuZnVuY3Rpb24gdXRmOEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyAnXFx1ZmZmZCc7XG4gIHJldHVybiByO1xufVxuXG4vLyBVVEYtMTZMRSB0eXBpY2FsbHkgbmVlZHMgdHdvIGJ5dGVzIHBlciBjaGFyYWN0ZXIsIGJ1dCBldmVuIGlmIHdlIGhhdmUgYW4gZXZlblxuLy8gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSwgd2UgbmVlZCB0byBjaGVjayBpZiB3ZSBlbmQgb24gYSBsZWFkaW5nL2hpZ2hcbi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0b1xuLy8gZGVjb2RlIHRoZSBsYXN0IGNoYXJhY3RlciBwcm9wZXJseS5cbmZ1bmN0aW9uIHV0ZjE2VGV4dChidWYsIGkpIHtcbiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7XG4gICAgdmFyIHIgPSBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpKTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTtcbiAgICAgIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICB0aGlzLmxhc3ROZWVkID0gMjtcbiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0O1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDE7XG4gIHRoaXMubGFzdFRvdGFsID0gMjtcbiAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpLCBidWYubGVuZ3RoIC0gMSk7XG59XG5cbi8vIEZvciBVVEYtMTZMRSB3ZSBkbyBub3QgZXhwbGljaXRseSBhcHBlbmQgc3BlY2lhbCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGlmIHdlXG4vLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC5cbmZ1bmN0aW9uIHV0ZjE2RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgdmFyIGVuZCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgICByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ3V0ZjE2bGUnLCAwLCBlbmQpO1xuICB9XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRUZXh0KGJ1ZiwgaSkge1xuICB2YXIgbiA9IChidWYubGVuZ3RoIC0gaSkgJSAzO1xuICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7XG4gIHRoaXMubGFzdE5lZWQgPSAzIC0gbjtcbiAgdGhpcy5sYXN0VG90YWwgPSAzO1xuICBpZiAobiA9PT0gMSkge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ2Jhc2U2NCcsIDAsIDMgLSB0aGlzLmxhc3ROZWVkKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleClcbmZ1bmN0aW9uIHNpbXBsZVdyaXRlKGJ1Zikge1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmQoYnVmKSB7XG4gIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xufSIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdnZXQnLCAncHV0JywgJ3Bvc3QnLCAnZGVsZXRlJywgJ29wdGlvbnMnLCAnaGVhZCcsICdwYXRjaCdcbl07XG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwidGl0bGVcIjogXCJBIEpTT04gU2NoZW1hIGZvciBTd2FnZ2VyIDIuMCBBUEkuXCIsXG4gIFwiaWRcIjogXCJodHRwOi8vc3dhZ2dlci5pby92Mi9zY2hlbWEuanNvbiNcIixcbiAgXCIkc2NoZW1hXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCIsXG4gIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICBcInJlcXVpcmVkXCI6IFtcbiAgICBcInN3YWdnZXJcIixcbiAgICBcImluZm9cIixcbiAgICBcInBhdGhzXCJcbiAgXSxcbiAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgXCJeeC1cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgIH1cbiAgfSxcbiAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICBcInN3YWdnZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImVudW1cIjogW1xuICAgICAgICBcIjIuMFwiXG4gICAgICBdLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRoZSBTd2FnZ2VyIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudC5cIlxuICAgIH0sXG4gICAgXCJpbmZvXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaW5mb1wiXG4gICAgfSxcbiAgICBcImhvc3RcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcInBhdHRlcm5cIjogXCJeW157fS8gOlxcXFxcXFxcXSsoPzo6XFxcXGQrKT8kXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIGhvc3QgKG5hbWUgb3IgaXApIG9mIHRoZSBBUEkuIEV4YW1wbGU6ICdzd2FnZ2VyLmlvJ1wiXG4gICAgfSxcbiAgICBcImJhc2VQYXRoXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgXCJwYXR0ZXJuXCI6IFwiXi9cIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgYmFzZSBwYXRoIHRvIHRoZSBBUEkuIEV4YW1wbGU6ICcvYXBpJy5cIlxuICAgIH0sXG4gICAgXCJzY2hlbWVzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1lc0xpc3RcIlxuICAgIH0sXG4gICAgXCJjb25zdW1lc1wiOiB7XG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgYWNjZXB0ZWQgYnkgdGhlIEFQSS5cIixcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWVkaWFUeXBlTGlzdFwiXG4gICAgfSxcbiAgICBcInByb2R1Y2VzXCI6IHtcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGxpc3Qgb2YgTUlNRSB0eXBlcyB0aGUgQVBJIGNhbiBwcm9kdWNlLlwiLFxuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tZWRpYVR5cGVMaXN0XCJcbiAgICB9LFxuICAgIFwicGF0aHNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXRoc1wiXG4gICAgfSxcbiAgICBcImRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyRGVmaW5pdGlvbnNcIlxuICAgIH0sXG4gICAgXCJyZXNwb25zZXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZURlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwic2VjdXJpdHlcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eVwiXG4gICAgfSxcbiAgICBcInNlY3VyaXR5RGVmaW5pdGlvbnNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eURlZmluaXRpb25zXCJcbiAgICB9LFxuICAgIFwidGFnc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdGFnXCJcbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICB9XG4gIH0sXG4gIFwiZGVmaW5pdGlvbnNcIjoge1xuICAgIFwiaW5mb1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBUEkuXCIsXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJ2ZXJzaW9uXCIsXG4gICAgICAgIFwidGl0bGVcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIHVuaXF1ZSBhbmQgcHJlY2lzZSB0aXRsZSBvZiB0aGUgQVBJLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidmVyc2lvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIgb2YgdGhlIEFQSS5cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIEFQSS4gU2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSB0aXRsZS4gIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93biBpcyBhbGxvd2VkLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGVybXNPZlNlcnZpY2VcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgdGVybXMgb2Ygc2VydmljZSBmb3IgdGhlIEFQSS5cIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbnRhY3RcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29udGFjdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibGljZW5zZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9saWNlbnNlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJjb250YWN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIHRoZSBvd25lcnMgb2YgdGhlIEFQSS5cIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgaWRlbnRpZnlpbmcgbmFtZSBvZiB0aGUgY29udGFjdCBwZXJzb24vb3JnYW5pemF0aW9uLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIFVSTCBwb2ludGluZyB0byB0aGUgY29udGFjdCBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW1haWxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY29udGFjdCBwZXJzb24vb3JnYW5pemF0aW9uLlwiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwiZW1haWxcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwibGljZW5zZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIlxuICAgICAgXSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgbGljZW5zZSB0eXBlLiBJdCdzIGVuY291cmFnZWQgdG8gdXNlIGFuIE9TSSBjb21wYXRpYmxlIGxpY2Vuc2UuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1cmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgVVJMIHBvaW50aW5nIHRvIHRoZSBsaWNlbnNlLlwiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcInBhdGhzXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlJlbGF0aXZlIHBhdGhzIHRvIHRoZSBpbmRpdmlkdWFsIGVuZHBvaW50cy4gVGhleSBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSAnYmFzZVBhdGgnLlwiLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiXi9cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0aEl0ZW1cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJkZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICB9LFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIk9uZSBvciBtb3JlIEpTT04gb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBzY2hlbWFzIGJlaW5nIGNvbnN1bWVkIGFuZCBwcm9kdWNlZCBieSB0aGUgQVBJLlwiXG4gICAgfSxcbiAgICBcInBhcmFtZXRlckRlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyXCJcbiAgICAgIH0sXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiT25lIG9yIG1vcmUgSlNPTiByZXByZXNlbnRhdGlvbnMgZm9yIHBhcmFtZXRlcnNcIlxuICAgIH0sXG4gICAgXCJyZXNwb25zZURlZmluaXRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VcIlxuICAgICAgfSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJPbmUgb3IgbW9yZSBKU09OIHJlcHJlc2VudGF0aW9ucyBmb3IgcGFyYW1ldGVyc1wiXG4gICAgfSxcbiAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiaW5mb3JtYXRpb24gYWJvdXQgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvblwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiZXhhbXBsZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHRydWVcbiAgICB9LFxuICAgIFwibWltZVR5cGVcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIE1JTUUgdHlwZSBvZiB0aGUgSFRUUCBtZXNzYWdlLlwiXG4gICAgfSxcbiAgICBcIm9wZXJhdGlvblwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInJlc3BvbnNlc1wiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0YWdzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidW5pcXVlSXRlbXNcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInN1bW1hcnlcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIHN1bW1hcnkgb2YgdGhlIG9wZXJhdGlvbi5cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIG9wZXJhdGlvbiwgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlcm5hbERvY3NcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXh0ZXJuYWxEb2NzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcGVyYXRpb25JZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkEgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbi5cIlxuICAgICAgICB9LFxuICAgICAgICBcInByb2R1Y2VzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhlIEFQSSBjYW4gcHJvZHVjZS5cIixcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbnN1bWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBsaXN0IG9mIE1JTUUgdHlwZXMgdGhlIEFQSSBjYW4gY29uc3VtZS5cIixcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21lZGlhVHlwZUxpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhcmFtZXRlcnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyc0xpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlc3BvbnNlc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInNjaGVtZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1lc0xpc3RcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlcHJlY2F0ZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWN1cml0eVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zZWN1cml0eVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGF0aEl0ZW1cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIiRyZWZcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicHV0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicG9zdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlbGV0ZVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vcGVyYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJoZWFkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29wZXJhdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0Y2hcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb3BlcmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXJhbWV0ZXJzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhcmFtZXRlcnNMaXN0XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJyZXNwb25zZXNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiUmVzcG9uc2Ugb2JqZWN0cyBuYW1lcyBjYW4gZWl0aGVyIGJlIGFueSB2YWxpZCBIVFRQIHN0YXR1cyBjb2RlIG9yICdkZWZhdWx0Jy5cIixcbiAgICAgIFwibWluUHJvcGVydGllc1wiOiAxLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl4oWzAtOV17M30pJHxeKGRlZmF1bHQpJFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9yZXNwb25zZVZhbHVlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwibm90XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicmVzcG9uc2VWYWx1ZVwiOiB7XG4gICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcmVzcG9uc2VcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9qc29uUmVmZXJlbmNlXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJyZXNwb25zZVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcImRlc2NyaXB0aW9uXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInNjaGVtYVwiOiB7XG4gICAgICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZmlsZVNjaGVtYVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImhlYWRlcnNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvaGVhZGVyc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhhbXBsZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhhbXBsZXNcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImhlYWRlcnNcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9oZWFkZXJcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJoZWFkZXJcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJhcnJheVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1hdFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wcmltaXRpdmVzSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbGxlY3Rpb25Gb3JtYXRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvY29sbGVjdGlvbkZvcm1hdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9kZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhMZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5MZW5ndGhcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGF0dGVyblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4SXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbkl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy91bmlxdWVJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9lbnVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL211bHRpcGxlT2ZcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwidmVuZG9yRXh0ZW5zaW9uXCI6IHtcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBbnkgcHJvcGVydHkgc3RhcnRpbmcgd2l0aCB4LSBpcyB2YWxpZC5cIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogdHJ1ZSxcbiAgICAgIFwiYWRkaXRpb25hbEl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiYm9keVBhcmFtZXRlclwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgXCJpblwiLFxuICAgICAgICBcInNjaGVtYVwiXG4gICAgICBdLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJib2R5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY2hlbWFcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiaGVhZGVyUGFyYW1ldGVyU3ViU2NoZW1hXCI6IHtcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiaGVhZGVyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJxdWVyeVBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInF1ZXJ5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxsb3dFbXB0eVZhbHVlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJhbGxvd3Mgc2VuZGluZyBhIHBhcmFtZXRlciBieSBuYW1lIG9ubHkgb3Igd2l0aCBhbiBlbXB0eSB2YWx1ZS5cIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0V2l0aE11bHRpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiZm9ybURhdGFQYXJhbWV0ZXJTdWJTY2hlbWFcIjoge1xuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIG9yIG9wdGlvbmFsLlwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJmb3JtRGF0YVwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVyLiBUaGlzIGNvdWxkIGNvbnRhaW4gZXhhbXBsZXMgb2YgdXNlLiAgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIGlzIGFsbG93ZWQuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFsbG93RW1wdHlWYWx1ZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiYWxsb3dzIHNlbmRpbmcgYSBwYXJhbWV0ZXIgYnkgbmFtZSBvbmx5IG9yIHdpdGggYW4gZW1wdHkgdmFsdWUuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibnVtYmVyXCIsXG4gICAgICAgICAgICBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJhcnJheVwiLFxuICAgICAgICAgICAgXCJmaWxlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0V2l0aE11bHRpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGF0aFBhcmFtZXRlclN1YlNjaGVtYVwiOiB7XG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJyZXF1aXJlZFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJyZXF1aXJlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBvciBvcHRpb25hbC5cIlxuICAgICAgICB9LFxuICAgICAgICBcImluXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGV0ZXJtaW5lcyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlci5cIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJwYXRoXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZiB1c2UuICBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gaXMgYWxsb3dlZC5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLlwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgICAgIFwiYXJyYXlcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcHJpbWl0aXZlc0l0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xsZWN0aW9uRm9ybWF0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2NvbGxlY3Rpb25Gb3JtYXRcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWluaW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNaW5pbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4TGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5MZW5ndGhcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluTGVuZ3RoXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heEl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW5JdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImVudW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlwbGVPZlwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tdWx0aXBsZU9mXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJub25Cb2R5UGFyYW1ldGVyXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiLFxuICAgICAgICBcImluXCIsXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2hlYWRlclBhcmFtZXRlclN1YlNjaGVtYVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2Zvcm1EYXRhUGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcXVlcnlQYXJhbWV0ZXJTdWJTY2hlbWFcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXRoUGFyYW1ldGVyU3ViU2NoZW1hXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJwYXJhbWV0ZXJcIjoge1xuICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2JvZHlQYXJhbWV0ZXJcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9ub25Cb2R5UGFyYW1ldGVyXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgXCJzY2hlbWFcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQSBkZXRlcm1pbmlzdGljIHZlcnNpb24gb2YgYSBKU09OIFNjaGVtYSBvYmplY3QuXCIsXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL211bHRpcGxlT2ZcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heExlbmd0aFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgICAgICB9LFxuICAgICAgICBcInBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3BhdHRlcm5cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heEl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5JdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdW5pcXVlSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1pblByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9wb3NpdGl2ZUludGVnZXJEZWZhdWx0MFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicmVxdWlyZWRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9kZWZpbml0aW9ucy9zdHJpbmdBcnJheVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW51bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZW51bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiYW55T2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3R5cGVcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcImFueU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9zY2hlbWFcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiB7fVxuICAgICAgICB9LFxuICAgICAgICBcImFsbE9mXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwibWluSXRlbXNcIjogMSxcbiAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2NoZW1hXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3NjaGVtYVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRlZmF1bHRcIjoge31cbiAgICAgICAgfSxcbiAgICAgICAgXCJkaXNjcmltaW5hdG9yXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlYWRPbmx5XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwieG1sXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3htbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXh0ZXJuYWxEb2NzXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2V4dGVybmFsRG9jc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhhbXBsZVwiOiB7fVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiZmlsZVNjaGVtYVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJBIGRldGVybWluaXN0aWMgdmVyc2lvbiBvZiBhIEpTT04gU2NoZW1hIG9iamVjdC5cIixcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJmb3JtYXRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInJlcXVpcmVkXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvc3RyaW5nQXJyYXlcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImZpbGVcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJyZWFkT25seVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4YW1wbGVcIjoge31cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcInByaW1pdGl2ZXNJdGVtc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImFycmF5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9ybWF0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ByaW1pdGl2ZXNJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9jb2xsZWN0aW9uRm9ybWF0XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2RlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heGltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWF4aW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZXhjbHVzaXZlTWF4aW11bVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leGNsdXNpdmVNYXhpbXVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbmltdW1cIlxuICAgICAgICB9LFxuICAgICAgICBcImV4Y2x1c2l2ZU1pbmltdW1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvZXhjbHVzaXZlTWluaW11bVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4TGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21heExlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluTGVuZ3RoXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL21pbkxlbmd0aFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGF0dGVyblwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9wYXR0ZXJuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9tYXhJdGVtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbWluSXRlbXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInVuaXF1ZUl0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3VuaXF1ZUl0ZW1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2VudW1cIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpcGxlT2ZcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvbXVsdGlwbGVPZlwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJzZWN1cml0eVwiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvc2VjdXJpdHlSZXF1aXJlbWVudFwiXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInNlY3VyaXR5UmVxdWlyZW1lbnRcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgICB9XG4gICAgfSxcbiAgICBcInhtbFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm5hbWVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZXNwYWNlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInByZWZpeFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhdHRyaWJ1dGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJ3cmFwcGVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJ0YWdcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwibmFtZVwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJuYW1lXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVybmFsRG9jc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9leHRlcm5hbERvY3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwic2VjdXJpdHlEZWZpbml0aW9uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2Jhc2ljQXV0aGVudGljYXRpb25TZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL2FwaUtleVNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgySW1wbGljaXRTZWN1cml0eVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL29hdXRoMlBhc3N3b3JkU2VjdXJpdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJBcHBsaWNhdGlvblNlY3VyaXR5XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyQWNjZXNzQ29kZVNlY3VyaXR5XCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiYmFzaWNBdXRoZW50aWNhdGlvblNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYmFzaWNcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcImFwaUtleVNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICAgIFwiaW5cIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYXBpS2V5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwibmFtZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJpblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiaGVhZGVyXCIsXG4gICAgICAgICAgICBcInF1ZXJ5XCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJJbXBsaWNpdFNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJpbXBsaWNpdFwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcImF1dGhvcml6YXRpb25VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMlBhc3N3b3JkU2VjdXJpdHlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImZsb3dcIixcbiAgICAgICAgXCJ0b2tlblVybFwiXG4gICAgICBdLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJvYXV0aDJcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmbG93XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1xuICAgICAgICAgICAgXCJwYXNzd29yZFwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcInNjb3Blc1wiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9vYXV0aDJTY29wZXNcIlxuICAgICAgICB9LFxuICAgICAgICBcInRva2VuVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJeeC1cIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvdmVuZG9yRXh0ZW5zaW9uXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgXCJvYXV0aDJBcHBsaWNhdGlvblNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwidG9rZW5VcmxcIlxuICAgICAgXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwidHlwZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwib2F1dGgyXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmxvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb25cIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b2tlblVybFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJmb3JtYXRcIjogXCJ1cmlcIlxuICAgICAgICB9LFxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwYXR0ZXJuUHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiXngtXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL3ZlbmRvckV4dGVuc2lvblwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwib2F1dGgyQWNjZXNzQ29kZVNlY3VyaXR5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicmVxdWlyZWRcIjogW1xuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJmbG93XCIsXG4gICAgICAgIFwiYXV0aG9yaXphdGlvblVybFwiLFxuICAgICAgICBcInRva2VuVXJsXCJcbiAgICAgIF0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcIm9hdXRoMlwiXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImZsb3dcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgICBcImFjY2Vzc0NvZGVcIlxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzY29wZXNcIjoge1xuICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvb2F1dGgyU2NvcGVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhdXRob3JpemF0aW9uVXJsXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImZvcm1hdFwiOiBcInVyaVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG9rZW5VcmxcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZm9ybWF0XCI6IFwidXJpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwicGF0dGVyblByb3BlcnRpZXNcIjoge1xuICAgICAgICBcIl54LVwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy92ZW5kb3JFeHRlbnNpb25cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBcIm9hdXRoMlNjb3Blc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJtZWRpYVR5cGVMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9taW1lVHlwZVwiXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInBhcmFtZXRlcnNMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHBhcmFtZXRlcnMgbmVlZGVkIHRvIHNlbmQgYSB2YWxpZCBBUEkgY2FsbC5cIixcbiAgICAgIFwiYWRkaXRpb25hbEl0ZW1zXCI6IGZhbHNlLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvcGFyYW1ldGVyXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvanNvblJlZmVyZW5jZVwiXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgXCJ1bmlxdWVJdGVtc1wiOiB0cnVlXG4gICAgfSxcbiAgICBcInNjaGVtZXNMaXN0XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHRyYW5zZmVyIHByb3RvY29sIG9mIHRoZSBBUEkuXCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgICAgXCJodHRwXCIsXG4gICAgICAgICAgXCJodHRwc1wiLFxuICAgICAgICAgIFwid3NcIixcbiAgICAgICAgICBcIndzc1wiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBcInVuaXF1ZUl0ZW1zXCI6IHRydWVcbiAgICB9LFxuICAgIFwiY29sbGVjdGlvbkZvcm1hdFwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgIFwiZW51bVwiOiBbXG4gICAgICAgIFwiY3N2XCIsXG4gICAgICAgIFwic3N2XCIsXG4gICAgICAgIFwidHN2XCIsXG4gICAgICAgIFwicGlwZXNcIlxuICAgICAgXSxcbiAgICAgIFwiZGVmYXVsdFwiOiBcImNzdlwiXG4gICAgfSxcbiAgICBcImNvbGxlY3Rpb25Gb3JtYXRXaXRoTXVsdGlcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICBcImVudW1cIjogW1xuICAgICAgICBcImNzdlwiLFxuICAgICAgICBcInNzdlwiLFxuICAgICAgICBcInRzdlwiLFxuICAgICAgICBcInBpcGVzXCIsXG4gICAgICAgIFwibXVsdGlcIlxuICAgICAgXSxcbiAgICAgIFwiZGVmYXVsdFwiOiBcImNzdlwiXG4gICAgfSxcbiAgICBcInRpdGxlXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3RpdGxlXCJcbiAgICB9LFxuICAgIFwiZGVzY3JpcHRpb25cIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvZGVzY3JpcHRpb25cIlxuICAgIH0sXG4gICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2RlZmF1bHRcIlxuICAgIH0sXG4gICAgXCJtdWx0aXBsZU9mXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL211bHRpcGxlT2ZcIlxuICAgIH0sXG4gICAgXCJtYXhpbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21heGltdW1cIlxuICAgIH0sXG4gICAgXCJleGNsdXNpdmVNYXhpbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1heGltdW1cIlxuICAgIH0sXG4gICAgXCJtaW5pbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL21pbmltdW1cIlxuICAgIH0sXG4gICAgXCJleGNsdXNpdmVNaW5pbXVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2V4Y2x1c2l2ZU1pbmltdW1cIlxuICAgIH0sXG4gICAgXCJtYXhMZW5ndGhcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlclwiXG4gICAgfSxcbiAgICBcIm1pbkxlbmd0aFwiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyRGVmYXVsdDBcIlxuICAgIH0sXG4gICAgXCJwYXR0ZXJuXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL3BhdHRlcm5cIlxuICAgIH0sXG4gICAgXCJtYXhJdGVtc1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMvZGVmaW5pdGlvbnMvcG9zaXRpdmVJbnRlZ2VyXCJcbiAgICB9LFxuICAgIFwibWluSXRlbXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL2RlZmluaXRpb25zL3Bvc2l0aXZlSW50ZWdlckRlZmF1bHQwXCJcbiAgICB9LFxuICAgIFwidW5pcXVlSXRlbXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjL3Byb3BlcnRpZXMvdW5pcXVlSXRlbXNcIlxuICAgIH0sXG4gICAgXCJlbnVtXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIy9wcm9wZXJ0aWVzL2VudW1cIlxuICAgIH0sXG4gICAgXCJqc29uUmVmZXJlbmNlXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXG4gICAgICAgIFwiJHJlZlwiXG4gICAgICBdLFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsInZhciBuZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MvYnJvd3Nlci5qcycpLm5leHRUaWNrO1xudmFyIGFwcGx5ID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIGltbWVkaWF0ZUlkcyA9IHt9O1xudmFyIG5leHRJbW1lZGlhdGVJZCA9IDA7XG5cbi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzXG5cbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7XG59O1xuZXhwb3J0cy5zZXRJbnRlcnZhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgd2luZG93LCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTtcbn07XG5leHBvcnRzLmNsZWFyVGltZW91dCA9XG5leHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7IHRpbWVvdXQuY2xvc2UoKTsgfTtcblxuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICB0aGlzLl9pZCA9IGlkO1xuICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjtcbn1cblRpbWVvdXQucHJvdG90eXBlLnVucmVmID0gVGltZW91dC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oKSB7fTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NsZWFyRm4uY2FsbCh3aW5kb3csIHRoaXMuX2lkKTtcbn07XG5cbi8vIERvZXMgbm90IHN0YXJ0IHRoZSB0aW1lLCBqdXN0IHNldHMgdXAgdGhlIG1lbWJlcnMgbmVlZGVkLlxuZXhwb3J0cy5lbnJvbGwgPSBmdW5jdGlvbihpdGVtLCBtc2Vjcykge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gbXNlY3M7XG59O1xuXG5leHBvcnRzLnVuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7XG59O1xuXG5leHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG5cbiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7XG4gIGlmIChtc2VjcyA+PSAwKSB7XG4gICAgaXRlbS5faWRsZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gb25UaW1lb3V0KCkge1xuICAgICAgaWYgKGl0ZW0uX29uVGltZW91dClcbiAgICAgICAgaXRlbS5fb25UaW1lb3V0KCk7XG4gICAgfSwgbXNlY3MpO1xuICB9XG59O1xuXG4vLyBUaGF0J3Mgbm90IGhvdyBub2RlLmpzIGltcGxlbWVudHMgaXQgYnV0IHRoZSBleHBvc2VkIGFwaSBpcyB0aGUgc2FtZS5cbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gXCJmdW5jdGlvblwiID8gc2V0SW1tZWRpYXRlIDogZnVuY3Rpb24oZm4pIHtcbiAgdmFyIGlkID0gbmV4dEltbWVkaWF0ZUlkKys7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBmYWxzZSA6IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICBpbW1lZGlhdGVJZHNbaWRdID0gdHJ1ZTtcblxuICBuZXh0VGljayhmdW5jdGlvbiBvbk5leHRUaWNrKCkge1xuICAgIGlmIChpbW1lZGlhdGVJZHNbaWRdKSB7XG4gICAgICAvLyBmbi5jYWxsKCkgaXMgZmFzdGVyIHNvIHdlIG9wdGltaXplIGZvciB0aGUgY29tbW9uIHVzZS1jYXNlXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2NhbGwtYXBwbHktc2VndVxuICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbi5jYWxsKG51bGwpO1xuICAgICAgfVxuICAgICAgLy8gUHJldmVudCBpZHMgZnJvbSBsZWFraW5nXG4gICAgICBleHBvcnRzLmNsZWFySW1tZWRpYXRlKGlkKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpZDtcbn07XG5cbmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSB0eXBlb2YgY2xlYXJJbW1lZGlhdGUgPT09IFwiZnVuY3Rpb25cIiA/IGNsZWFySW1tZWRpYXRlIDogZnVuY3Rpb24oaWQpIHtcbiAgZGVsZXRlIGltbWVkaWF0ZUlkc1tpZF07XG59OyIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYnVmKSB7XG5cdC8vIElmIHRoZSBidWZmZXIgaXMgYmFja2VkIGJ5IGEgVWludDhBcnJheSwgYSBmYXN0ZXIgdmVyc2lvbiB3aWxsIHdvcmtcblx0aWYgKGJ1ZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0XHQvLyBJZiB0aGUgYnVmZmVyIGlzbid0IGEgc3ViYXJyYXksIHJldHVybiB0aGUgdW5kZXJseWluZyBBcnJheUJ1ZmZlclxuXHRcdGlmIChidWYuYnl0ZU9mZnNldCA9PT0gMCAmJiBidWYuYnl0ZUxlbmd0aCA9PT0gYnVmLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlclxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGJ1Zi5idWZmZXIuc2xpY2UgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGdldCBhIHByb3BlciBjb3B5XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlci5zbGljZShidWYuYnl0ZU9mZnNldCwgYnVmLmJ5dGVPZmZzZXQgKyBidWYuYnl0ZUxlbmd0aClcblx0XHR9XG5cdH1cblxuXHRpZiAoQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcblx0XHQvLyBUaGlzIGlzIHRoZSBzbG93IHZlcnNpb24gdGhhdCB3aWxsIHdvcmsgd2l0aCBhbnkgQnVmZmVyXG5cdFx0Ly8gaW1wbGVtZW50YXRpb24gKGV2ZW4gaW4gb2xkIGJyb3dzZXJzKVxuXHRcdHZhciBhcnJheUNvcHkgPSBuZXcgVWludDhBcnJheShidWYubGVuZ3RoKVxuXHRcdHZhciBsZW4gPSBidWYubGVuZ3RoXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0YXJyYXlDb3B5W2ldID0gYnVmW2ldXG5cdFx0fVxuXHRcdHJldHVybiBhcnJheUNvcHkuYnVmZmVyXG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcblx0fVxufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIGdsb2JhbCwgZGVmaW5lLCBTeXN0ZW0sIFJlZmxlY3QsIFByb21pc2UgKi9cclxudmFyIF9fZXh0ZW5kcztcclxudmFyIF9fYXNzaWduO1xyXG52YXIgX19yZXN0O1xyXG52YXIgX19kZWNvcmF0ZTtcclxudmFyIF9fcGFyYW07XHJcbnZhciBfX21ldGFkYXRhO1xyXG52YXIgX19hd2FpdGVyO1xyXG52YXIgX19nZW5lcmF0b3I7XHJcbnZhciBfX2V4cG9ydFN0YXI7XHJcbnZhciBfX3ZhbHVlcztcclxudmFyIF9fcmVhZDtcclxudmFyIF9fc3ByZWFkO1xyXG52YXIgX19hd2FpdDtcclxudmFyIF9fYXN5bmNHZW5lcmF0b3I7XHJcbnZhciBfX2FzeW5jRGVsZWdhdG9yO1xyXG52YXIgX19hc3luY1ZhbHVlcztcclxudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0O1xyXG52YXIgX19pbXBvcnRTdGFyO1xyXG52YXIgX19pbXBvcnREZWZhdWx0O1xyXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcclxuICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHR5cGVvZiB0aGlzID09PSBcIm9iamVjdFwiID8gdGhpcyA6IHt9O1xyXG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XHJcbiAgICAgICAgZGVmaW5lKFwidHNsaWJcIiwgW1wiZXhwb3J0c1wiXSwgZnVuY3Rpb24gKGV4cG9ydHMpIHsgZmFjdG9yeShjcmVhdGVFeHBvcnRlcihyb290LCBjcmVhdGVFeHBvcnRlcihleHBvcnRzKSkpOyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgZmFjdG9yeShjcmVhdGVFeHBvcnRlcihyb290LCBjcmVhdGVFeHBvcnRlcihtb2R1bGUuZXhwb3J0cykpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCkpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY3JlYXRlRXhwb3J0ZXIoZXhwb3J0cywgcHJldmlvdXMpIHtcclxuICAgICAgICBpZiAoZXhwb3J0cyAhPT0gcm9vdCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGlkLCB2KSB7IHJldHVybiBleHBvcnRzW2lkXSA9IHByZXZpb3VzID8gcHJldmlvdXMoaWQsIHYpIDogdjsgfTtcclxuICAgIH1cclxufSlcclxuKGZ1bmN0aW9uIChleHBvcnRlcikge1xyXG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcblxyXG4gICAgX19leHRlbmRzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxuICAgIH07XHJcblxyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX3Jlc3QgPSBmdW5jdGlvbiAocywgZSkge1xyXG4gICAgICAgIHZhciB0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcblxyXG4gICAgX19kZWNvcmF0ZSA9IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgICAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcGFyYW0gPSBmdW5jdGlvbiAocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fbWV0YWRhdGEgPSBmdW5jdGlvbiAobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2F3YWl0ZXIgPSBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgX19nZW5lcmF0b3IgPSBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xyXG4gICAgICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICAgICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX2V4cG9ydFN0YXIgPSBmdW5jdGlvbiAobSwgZXhwb3J0cykge1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxuICAgIH07XHJcblxyXG4gICAgX192YWx1ZXMgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICAgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcmVhZCA9IGZ1bmN0aW9uIChvLCBuKSB7XHJcbiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcblxyXG4gICAgX19zcHJlYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgICAgICByZXR1cm4gYXI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXdhaXQgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yID0gZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgICAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgIH1cclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19hc3luY0RlbGVnYXRvciA9IGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgdmFyIGksIHA7XHJcbiAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXN5bmNWYWx1ZXMgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgICAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19tYWtlVGVtcGxhdGVPYmplY3QgPSBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgICAgIHJldHVybiBjb29rZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIF9faW1wb3J0U3RhciA9IGZ1bmN0aW9uIChtb2QpIHtcclxuICAgICAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgICAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgX19pbXBvcnREZWZhdWx0ID0gZnVuY3Rpb24gKG1vZCkge1xyXG4gICAgICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBleHBvcnRlcihcIl9fZXh0ZW5kc1wiLCBfX2V4dGVuZHMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2Fzc2lnblwiLCBfX2Fzc2lnbik7XHJcbiAgICBleHBvcnRlcihcIl9fcmVzdFwiLCBfX3Jlc3QpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2RlY29yYXRlXCIsIF9fZGVjb3JhdGUpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3BhcmFtXCIsIF9fcGFyYW0pO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ldGFkYXRhXCIsIF9fbWV0YWRhdGEpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0ZXJcIiwgX19hd2FpdGVyKTtcclxuICAgIGV4cG9ydGVyKFwiX19nZW5lcmF0b3JcIiwgX19nZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2V4cG9ydFN0YXJcIiwgX19leHBvcnRTdGFyKTtcclxuICAgIGV4cG9ydGVyKFwiX192YWx1ZXNcIiwgX192YWx1ZXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3JlYWRcIiwgX19yZWFkKTtcclxuICAgIGV4cG9ydGVyKFwiX19zcHJlYWRcIiwgX19zcHJlYWQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0XCIsIF9fYXdhaXQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jR2VuZXJhdG9yXCIsIF9fYXN5bmNHZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jRGVsZWdhdG9yXCIsIF9fYXN5bmNEZWxlZ2F0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jVmFsdWVzXCIsIF9fYXN5bmNWYWx1ZXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ha2VUZW1wbGF0ZU9iamVjdFwiLCBfX21ha2VUZW1wbGF0ZU9iamVjdCk7XHJcbiAgICBleHBvcnRlcihcIl9faW1wb3J0U3RhclwiLCBfX2ltcG9ydFN0YXIpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2ltcG9ydERlZmF1bHRcIiwgX19pbXBvcnREZWZhdWx0KTtcclxufSk7XHJcbiIsIi8vICAgICBVbmRlcnNjb3JlLmpzIDEuNy4wXG4vLyAgICAgaHR0cDovL3VuZGVyc2NvcmVqcy5vcmdcbi8vICAgICAoYykgMjAwOS0yMDE0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4vLyAgICAgVW5kZXJzY29yZSBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cblxuKGZ1bmN0aW9uKCkge1xuXG4gIC8vIEJhc2VsaW5lIHNldHVwXG4gIC8vIC0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gRXN0YWJsaXNoIHRoZSByb290IG9iamVjdCwgYHdpbmRvd2AgaW4gdGhlIGJyb3dzZXIsIG9yIGBleHBvcnRzYCBvbiB0aGUgc2VydmVyLlxuICB2YXIgcm9vdCA9IHRoaXM7XG5cbiAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGBfYCB2YXJpYWJsZS5cbiAgdmFyIHByZXZpb3VzVW5kZXJzY29yZSA9IHJvb3QuXztcblxuICAvLyBTYXZlIGJ5dGVzIGluIHRoZSBtaW5pZmllZCAoYnV0IG5vdCBnemlwcGVkKSB2ZXJzaW9uOlxuICB2YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSwgT2JqUHJvdG8gPSBPYmplY3QucHJvdG90eXBlLCBGdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgLy8gQ3JlYXRlIHF1aWNrIHJlZmVyZW5jZSB2YXJpYWJsZXMgZm9yIHNwZWVkIGFjY2VzcyB0byBjb3JlIHByb3RvdHlwZXMuXG4gIHZhclxuICAgIHB1c2ggICAgICAgICAgICAgPSBBcnJheVByb3RvLnB1c2gsXG4gICAgc2xpY2UgICAgICAgICAgICA9IEFycmF5UHJvdG8uc2xpY2UsXG4gICAgY29uY2F0ICAgICAgICAgICA9IEFycmF5UHJvdG8uY29uY2F0LFxuICAgIHRvU3RyaW5nICAgICAgICAgPSBPYmpQcm90by50b1N0cmluZyxcbiAgICBoYXNPd25Qcm9wZXJ0eSAgID0gT2JqUHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgLy8gQWxsICoqRUNNQVNjcmlwdCA1KiogbmF0aXZlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0IHdlIGhvcGUgdG8gdXNlXG4gIC8vIGFyZSBkZWNsYXJlZCBoZXJlLlxuICB2YXJcbiAgICBuYXRpdmVJc0FycmF5ICAgICAgPSBBcnJheS5pc0FycmF5LFxuICAgIG5hdGl2ZUtleXMgICAgICAgICA9IE9iamVjdC5rZXlzLFxuICAgIG5hdGl2ZUJpbmQgICAgICAgICA9IEZ1bmNQcm90by5iaW5kO1xuXG4gIC8vIENyZWF0ZSBhIHNhZmUgcmVmZXJlbmNlIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdCBmb3IgdXNlIGJlbG93LlxuICB2YXIgXyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBfKSByZXR1cm4gb2JqO1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBfKSkgcmV0dXJuIG5ldyBfKG9iaik7XG4gICAgdGhpcy5fd3JhcHBlZCA9IG9iajtcbiAgfTtcblxuICAvLyBFeHBvcnQgdGhlIFVuZGVyc2NvcmUgb2JqZWN0IGZvciAqKk5vZGUuanMqKiwgd2l0aFxuICAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgdGhlIG9sZCBgcmVxdWlyZSgpYCBBUEkuIElmIHdlJ3JlIGluXG4gIC8vIHRoZSBicm93c2VyLCBhZGQgYF9gIGFzIGEgZ2xvYmFsIG9iamVjdC5cbiAgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gXztcbiAgICB9XG4gICAgZXhwb3J0cy5fID0gXztcbiAgfSBlbHNlIHtcbiAgICByb290Ll8gPSBfO1xuICB9XG5cbiAgLy8gQ3VycmVudCB2ZXJzaW9uLlxuICBfLlZFUlNJT04gPSAnMS43LjAnO1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlZmZpY2llbnQgKGZvciBjdXJyZW50IGVuZ2luZXMpIHZlcnNpb25cbiAgLy8gb2YgdGhlIHBhc3NlZC1pbiBjYWxsYmFjaywgdG8gYmUgcmVwZWF0ZWRseSBhcHBsaWVkIGluIG90aGVyIFVuZGVyc2NvcmVcbiAgLy8gZnVuY3Rpb25zLlxuICB2YXIgY3JlYXRlQ2FsbGJhY2sgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jO1xuICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVsbCA/IDMgOiBhcmdDb3VudCkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgdmFsdWUsIG90aGVyKTtcbiAgICAgIH07XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICAvLyBBIG1vc3RseS1pbnRlcm5hbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSBjYWxsYmFja3MgdGhhdCBjYW4gYmUgYXBwbGllZFxuICAvLyB0byBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uLCByZXR1cm5pbmcgdGhlIGRlc2lyZWQgcmVzdWx0IOKAlCBlaXRoZXJcbiAgLy8gaWRlbnRpdHksIGFuIGFyYml0cmFyeSBjYWxsYmFjaywgYSBwcm9wZXJ0eSBtYXRjaGVyLCBvciBhIHByb3BlcnR5IGFjY2Vzc29yLlxuICBfLml0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBfLmlkZW50aXR5O1xuICAgIGlmIChfLmlzRnVuY3Rpb24odmFsdWUpKSByZXR1cm4gY3JlYXRlQ2FsbGJhY2sodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgICBpZiAoXy5pc09iamVjdCh2YWx1ZSkpIHJldHVybiBfLm1hdGNoZXModmFsdWUpO1xuICAgIHJldHVybiBfLnByb3BlcnR5KHZhbHVlKTtcbiAgfTtcblxuICAvLyBDb2xsZWN0aW9uIEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFRoZSBjb3JuZXJzdG9uZSwgYW4gYGVhY2hgIGltcGxlbWVudGF0aW9uLCBha2EgYGZvckVhY2hgLlxuICAvLyBIYW5kbGVzIHJhdyBvYmplY3RzIGluIGFkZGl0aW9uIHRvIGFycmF5LWxpa2VzLiBUcmVhdHMgYWxsXG4gIC8vIHNwYXJzZSBhcnJheS1saWtlcyBhcyBpZiB0aGV5IHdlcmUgZGVuc2UuXG4gIF8uZWFjaCA9IF8uZm9yRWFjaCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGksIGxlbmd0aCA9IG9iai5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCA9PT0gK2xlbmd0aCkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtpXSwgaSwgb2JqKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW2tleXNbaV1dLCBrZXlzW2ldLCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgaXRlcmF0ZWUgdG8gZWFjaCBlbGVtZW50LlxuICBfLm1hcCA9IF8uY29sbGVjdCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBbXTtcbiAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gK29iai5sZW5ndGggJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICByZXN1bHRzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgY3VycmVudEtleTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICByZXN1bHRzW2luZGV4XSA9IGl0ZXJhdGVlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgdmFyIHJlZHVjZUVycm9yID0gJ1JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnO1xuXG4gIC8vICoqUmVkdWNlKiogYnVpbGRzIHVwIGEgc2luZ2xlIHJlc3VsdCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGFrYSBgaW5qZWN0YCxcbiAgLy8gb3IgYGZvbGRsYC5cbiAgXy5yZWR1Y2UgPSBfLmZvbGRsID0gXy5pbmplY3QgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBjb250ZXh0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSBbXTtcbiAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0LCA0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwLCBjdXJyZW50S2V5O1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICAgaWYgKCFsZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IocmVkdWNlRXJyb3IpO1xuICAgICAgbWVtbyA9IG9ialtrZXlzID8ga2V5c1tpbmRleCsrXSA6IGluZGV4KytdO1xuICAgIH1cbiAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIG1lbW8gPSBpdGVyYXRlZShtZW1vLCBvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBtZW1vO1xuICB9O1xuXG4gIC8vIFRoZSByaWdodC1hc3NvY2lhdGl2ZSB2ZXJzaW9uIG9mIHJlZHVjZSwgYWxzbyBrbm93biBhcyBgZm9sZHJgLlxuICBfLnJlZHVjZVJpZ2h0ID0gXy5mb2xkciA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIG1lbW8sIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIG9iaiA9IFtdO1xuICAgIGl0ZXJhdGVlID0gY3JlYXRlQ2FsbGJhY2soaXRlcmF0ZWUsIGNvbnRleHQsIDQpO1xuICAgIHZhciBrZXlzID0gb2JqLmxlbmd0aCAhPT0gKyBvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBpbmRleCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICBjdXJyZW50S2V5O1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICAgaWYgKCFpbmRleCkgdGhyb3cgbmV3IFR5cGVFcnJvcihyZWR1Y2VFcnJvcik7XG4gICAgICBtZW1vID0gb2JqW2tleXMgPyBrZXlzWy0taW5kZXhdIDogLS1pbmRleF07XG4gICAgfVxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3QuIEFsaWFzZWQgYXMgYGRldGVjdGAuXG4gIF8uZmluZCA9IF8uZGV0ZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICBfLnNvbWUob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBsaXN0KSkge1xuICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyB0aGF0IHBhc3MgYSB0cnV0aCB0ZXN0LlxuICAvLyBBbGlhc2VkIGFzIGBzZWxlY3RgLlxuICBfLmZpbHRlciA9IF8uc2VsZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGxpc3QpKSByZXN1bHRzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuXG4gIF8ucmVqZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIob2JqLCBfLm5lZ2F0ZShfLml0ZXJhdGVlKHByZWRpY2F0ZSkpLCBjb250ZXh0KTtcbiAgfTtcblxuICAvLyBEZXRlcm1pbmUgd2hldGhlciBhbGwgb2YgdGhlIGVsZW1lbnRzIG1hdGNoIGEgdHJ1dGggdGVzdC5cbiAgLy8gQWxpYXNlZCBhcyBgYWxsYC5cbiAgXy5ldmVyeSA9IF8uYWxsID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB0cnVlO1xuICAgIHByZWRpY2F0ZSA9IF8uaXRlcmF0ZWUocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9IG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgaW5kZXgsIGN1cnJlbnRLZXk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAoIXByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSBvYmplY3QgbWF0Y2hlcyBhIHRydXRoIHRlc3QuXG4gIC8vIEFsaWFzZWQgYXMgYGFueWAuXG4gIF8uc29tZSA9IF8uYW55ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBwcmVkaWNhdGUgPSBfLml0ZXJhdGVlKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBvYmoubGVuZ3RoICE9PSArb2JqLmxlbmd0aCAmJiBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIGluZGV4LCBjdXJyZW50S2V5O1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJheSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiB2YWx1ZSAodXNpbmcgYD09PWApLlxuICAvLyBBbGlhc2VkIGFzIGBpbmNsdWRlYC5cbiAgXy5jb250YWlucyA9IF8uaW5jbHVkZSA9IGZ1bmN0aW9uKG9iaiwgdGFyZ2V0KSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoKSBvYmogPSBfLnZhbHVlcyhvYmopO1xuICAgIHJldHVybiBfLmluZGV4T2Yob2JqLCB0YXJnZXQpID49IDA7XG4gIH07XG5cbiAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uXG4gIF8uaW52b2tlID0gZnVuY3Rpb24ob2JqLCBtZXRob2QpIHtcbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICB2YXIgaXNGdW5jID0gXy5pc0Z1bmN0aW9uKG1ldGhvZCk7XG4gICAgcmV0dXJuIF8ubWFwKG9iaiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiAoaXNGdW5jID8gbWV0aG9kIDogdmFsdWVbbWV0aG9kXSkuYXBwbHkodmFsdWUsIGFyZ3MpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYG1hcGA6IGZldGNoaW5nIGEgcHJvcGVydHkuXG4gIF8ucGx1Y2sgPSBmdW5jdGlvbihvYmosIGtleSkge1xuICAgIHJldHVybiBfLm1hcChvYmosIF8ucHJvcGVydHkoa2V5KSk7XG4gIH07XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgZmlsdGVyYDogc2VsZWN0aW5nIG9ubHkgb2JqZWN0c1xuICAvLyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBfLndoZXJlID0gZnVuY3Rpb24ob2JqLCBhdHRycykge1xuICAgIHJldHVybiBfLmZpbHRlcihvYmosIF8ubWF0Y2hlcyhhdHRycykpO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYGZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdCBvYmplY3RcbiAgLy8gY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5maW5kV2hlcmUgPSBmdW5jdGlvbihvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIF8uZmluZChvYmosIF8ubWF0Y2hlcyhhdHRycykpO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbWF4aW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgXy5tYXggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IC1JbmZpbml0eSwgbGFzdENvbXB1dGVkID0gLUluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IG9iai5sZW5ndGggPT09ICtvYmoubGVuZ3RoID8gb2JqIDogXy52YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSA+IHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5pdGVyYXRlZShpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPiBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IC1JbmZpbml0eSAmJiByZXN1bHQgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIG1pbmltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIF8ubWluID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHQgPSBJbmZpbml0eSwgbGFzdENvbXB1dGVkID0gSW5maW5pdHksXG4gICAgICAgIHZhbHVlLCBjb21wdXRlZDtcbiAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCAmJiBvYmogIT0gbnVsbCkge1xuICAgICAgb2JqID0gb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlIDwgcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA8IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gSW5maW5pdHkgJiYgcmVzdWx0ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBTaHVmZmxlIGEgY29sbGVjdGlvbiwgdXNpbmcgdGhlIG1vZGVybiB2ZXJzaW9uIG9mIHRoZVxuICAvLyBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVy4oCTWWF0ZXNfc2h1ZmZsZSkuXG4gIF8uc2h1ZmZsZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBzZXQgPSBvYmogJiYgb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBzZXQubGVuZ3RoO1xuICAgIHZhciBzaHVmZmxlZCA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwLCByYW5kOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgcmFuZCA9IF8ucmFuZG9tKDAsIGluZGV4KTtcbiAgICAgIGlmIChyYW5kICE9PSBpbmRleCkgc2h1ZmZsZWRbaW5kZXhdID0gc2h1ZmZsZWRbcmFuZF07XG4gICAgICBzaHVmZmxlZFtyYW5kXSA9IHNldFtpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBzaHVmZmxlZDtcbiAgfTtcblxuICAvLyBTYW1wbGUgKipuKiogcmFuZG9tIHZhbHVlcyBmcm9tIGEgY29sbGVjdGlvbi5cbiAgLy8gSWYgKipuKiogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC5cbiAgLy8gVGhlIGludGVybmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgbWFwYC5cbiAgXy5zYW1wbGUgPSBmdW5jdGlvbihvYmosIG4sIGd1YXJkKSB7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkge1xuICAgICAgaWYgKG9iai5sZW5ndGggIT09ICtvYmoubGVuZ3RoKSBvYmogPSBfLnZhbHVlcyhvYmopO1xuICAgICAgcmV0dXJuIG9ialtfLnJhbmRvbShvYmoubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICByZXR1cm4gXy5zaHVmZmxlKG9iaikuc2xpY2UoMCwgTWF0aC5tYXgoMCwgbikpO1xuICB9O1xuXG4gIC8vIFNvcnQgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiBwcm9kdWNlZCBieSBhbiBpdGVyYXRlZS5cbiAgXy5zb3J0QnkgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gXy5wbHVjayhfLm1hcChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGNyaXRlcmlhOiBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGxpc3QpXG4gICAgICB9O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYTtcbiAgICAgIHZhciBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAoYSA+IGIgfHwgYSA9PT0gdm9pZCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgPCBiIHx8IGIgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlZnQuaW5kZXggLSByaWdodC5pbmRleDtcbiAgICB9KSwgJ3ZhbHVlJyk7XG4gIH07XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3IgYWdncmVnYXRlIFwiZ3JvdXAgYnlcIiBvcGVyYXRpb25zLlxuICB2YXIgZ3JvdXAgPSBmdW5jdGlvbihiZWhhdmlvcikge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIG9iaik7XG4gICAgICAgIGJlaGF2aW9yKHJlc3VsdCwgdmFsdWUsIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBHcm91cHMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbi4gUGFzcyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlXG4gIC8vIHRvIGdyb3VwIGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgY3JpdGVyaW9uLlxuICBfLmdyb3VwQnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoXy5oYXMocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTsgZWxzZSByZXN1bHRba2V5XSA9IFt2YWx1ZV07XG4gIH0pO1xuXG4gIC8vIEluZGV4ZXMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiwgc2ltaWxhciB0byBgZ3JvdXBCeWAsIGJ1dCBmb3JcbiAgLy8gd2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5kZXggdmFsdWVzIHdpbGwgYmUgdW5pcXVlLlxuICBfLmluZGV4QnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICB9KTtcblxuICAvLyBDb3VudHMgaW5zdGFuY2VzIG9mIGFuIG9iamVjdCB0aGF0IGdyb3VwIGJ5IGEgY2VydGFpbiBjcml0ZXJpb24uIFBhc3NcbiAgLy8gZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZSB0byBjb3VudCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlXG4gIC8vIGNyaXRlcmlvbi5cbiAgXy5jb3VudEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKF8uaGFzKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0rKzsgZWxzZSByZXN1bHRba2V5XSA9IDE7XG4gIH0pO1xuXG4gIC8vIFVzZSBhIGNvbXBhcmF0b3IgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB0aGUgc21hbGxlc3QgaW5kZXggYXQgd2hpY2hcbiAgLy8gYW4gb2JqZWN0IHNob3VsZCBiZSBpbnNlcnRlZCBzbyBhcyB0byBtYWludGFpbiBvcmRlci4gVXNlcyBiaW5hcnkgc2VhcmNoLlxuICBfLnNvcnRlZEluZGV4ID0gZnVuY3Rpb24oYXJyYXksIG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IF8uaXRlcmF0ZWUoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIHZhciB2YWx1ZSA9IGl0ZXJhdGVlKG9iaik7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+PiAxO1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W21pZF0pIDwgdmFsdWUpIGxvdyA9IG1pZCArIDE7IGVsc2UgaGlnaCA9IG1pZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbiAgfTtcblxuICAvLyBTYWZlbHkgY3JlYXRlIGEgcmVhbCwgbGl2ZSBhcnJheSBmcm9tIGFueXRoaW5nIGl0ZXJhYmxlLlxuICBfLnRvQXJyYXkgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICAgIGlmIChfLmlzQXJyYXkob2JqKSkgcmV0dXJuIHNsaWNlLmNhbGwob2JqKTtcbiAgICBpZiAob2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGgpIHJldHVybiBfLm1hcChvYmosIF8uaWRlbnRpdHkpO1xuICAgIHJldHVybiBfLnZhbHVlcyhvYmopO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIG9iamVjdC5cbiAgXy5zaXplID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gMDtcbiAgICByZXR1cm4gb2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGggPyBvYmoubGVuZ3RoIDogXy5rZXlzKG9iaikubGVuZ3RoO1xuICB9O1xuXG4gIC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgc2F0aXNmeSB0aGUgZ2l2ZW5cbiAgLy8gcHJlZGljYXRlLCBhbmQgb25lIHdob3NlIGVsZW1lbnRzIGFsbCBkbyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLlxuICBfLnBhcnRpdGlvbiA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gXy5pdGVyYXRlZShwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBwYXNzID0gW10sIGZhaWwgPSBbXTtcbiAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmopIHtcbiAgICAgIChwcmVkaWNhdGUodmFsdWUsIGtleSwgb2JqKSA/IHBhc3MgOiBmYWlsKS5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW3Bhc3MsIGZhaWxdO1xuICB9O1xuXG4gIC8vIEFycmF5IEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS1cblxuICAvLyBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYXJyYXkuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gdGhlIGZpcnN0IE5cbiAgLy8gdmFsdWVzIGluIHRoZSBhcnJheS4gQWxpYXNlZCBhcyBgaGVhZGAgYW5kIGB0YWtlYC4gVGhlICoqZ3VhcmQqKiBjaGVja1xuICAvLyBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIF8uZmlyc3QgPSBfLmhlYWQgPSBfLnRha2UgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbMF07XG4gICAgaWYgKG4gPCAwKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIG4pO1xuICB9O1xuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgZW50cnkgb2YgdGhlIGFycmF5LiBFc3BlY2lhbGx5IHVzZWZ1bCBvblxuICAvLyB0aGUgYXJndW1lbnRzIG9iamVjdC4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiBhbGwgdGhlIHZhbHVlcyBpblxuICAvLyB0aGUgYXJyYXksIGV4Y2x1ZGluZyB0aGUgbGFzdCBOLiBUaGUgKipndWFyZCoqIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGhcbiAgLy8gYF8ubWFwYC5cbiAgXy5pbml0aWFsID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIChuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbikpKTtcbiAgfTtcblxuICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgbGFzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBfLmxhc3QgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIE1hdGgubWF4KGFycmF5Lmxlbmd0aCAtIG4sIDApKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYHRhaWxgIGFuZCBgZHJvcGAuXG4gIC8vIEVzcGVjaWFsbHkgdXNlZnVsIG9uIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQYXNzaW5nIGFuICoqbioqIHdpbGwgcmV0dXJuXG4gIC8vIHRoZSByZXN0IE4gdmFsdWVzIGluIHRoZSBhcnJheS4gVGhlICoqZ3VhcmQqKlxuICAvLyBjaGVjayBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIF8ucmVzdCA9IF8udGFpbCA9IF8uZHJvcCA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCBuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbik7XG4gIH07XG5cbiAgLy8gVHJpbSBvdXQgYWxsIGZhbHN5IHZhbHVlcyBmcm9tIGFuIGFycmF5LlxuICBfLmNvbXBhY3QgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIHJldHVybiBfLmZpbHRlcihhcnJheSwgXy5pZGVudGl0eSk7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYSByZWN1cnNpdmUgYGZsYXR0ZW5gIGZ1bmN0aW9uLlxuICB2YXIgZmxhdHRlbiA9IGZ1bmN0aW9uKGlucHV0LCBzaGFsbG93LCBzdHJpY3QsIG91dHB1dCkge1xuICAgIGlmIChzaGFsbG93ICYmIF8uZXZlcnkoaW5wdXQsIF8uaXNBcnJheSkpIHtcbiAgICAgIHJldHVybiBjb25jYXQuYXBwbHkob3V0cHV0LCBpbnB1dCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoIV8uaXNBcnJheSh2YWx1ZSkgJiYgIV8uaXNBcmd1bWVudHModmFsdWUpKSB7XG4gICAgICAgIGlmICghc3RyaWN0KSBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNoYWxsb3cpIHtcbiAgICAgICAgcHVzaC5hcHBseShvdXRwdXQsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW4odmFsdWUsIHNoYWxsb3csIHN0cmljdCwgb3V0cHV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICAvLyBGbGF0dGVuIG91dCBhbiBhcnJheSwgZWl0aGVyIHJlY3Vyc2l2ZWx5IChieSBkZWZhdWx0KSwgb3IganVzdCBvbmUgbGV2ZWwuXG4gIF8uZmxhdHRlbiA9IGZ1bmN0aW9uKGFycmF5LCBzaGFsbG93KSB7XG4gICAgcmV0dXJuIGZsYXR0ZW4oYXJyYXksIHNoYWxsb3csIGZhbHNlLCBbXSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgdmFsdWUocykuXG4gIF8ud2l0aG91dCA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgcmV0dXJuIF8uZGlmZmVyZW5jZShhcnJheSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgfTtcblxuICAvLyBQcm9kdWNlIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiB0aGUgYXJyYXkuIElmIHRoZSBhcnJheSBoYXMgYWxyZWFkeVxuICAvLyBiZWVuIHNvcnRlZCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhIGZhc3RlciBhbGdvcml0aG0uXG4gIC8vIEFsaWFzZWQgYXMgYHVuaXF1ZWAuXG4gIF8udW5pcSA9IF8udW5pcXVlID0gZnVuY3Rpb24oYXJyYXksIGlzU29ydGVkLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gW107XG4gICAgaWYgKCFfLmlzQm9vbGVhbihpc1NvcnRlZCkpIHtcbiAgICAgIGNvbnRleHQgPSBpdGVyYXRlZTtcbiAgICAgIGl0ZXJhdGVlID0gaXNTb3J0ZWQ7XG4gICAgICBpc1NvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlcmF0ZWUgIT0gbnVsbCkgaXRlcmF0ZWUgPSBfLml0ZXJhdGVlKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldO1xuICAgICAgaWYgKGlzU29ydGVkKSB7XG4gICAgICAgIGlmICghaSB8fCBzZWVuICE9PSB2YWx1ZSkgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICBzZWVuID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhciBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlLCBpLCBhcnJheSk7XG4gICAgICAgIGlmIChfLmluZGV4T2Yoc2VlbiwgY29tcHV0ZWQpIDwgMCkge1xuICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaW5kZXhPZihyZXN1bHQsIHZhbHVlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgdW5pb246IGVhY2ggZGlzdGluY3QgZWxlbWVudCBmcm9tIGFsbCBvZlxuICAvLyB0aGUgcGFzc2VkLWluIGFycmF5cy5cbiAgXy51bmlvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfLnVuaXEoZmxhdHRlbihhcmd1bWVudHMsIHRydWUsIHRydWUsIFtdKSk7XG4gIH07XG5cbiAgLy8gUHJvZHVjZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGV2ZXJ5IGl0ZW0gc2hhcmVkIGJldHdlZW4gYWxsIHRoZVxuICAvLyBwYXNzZWQtaW4gYXJyYXlzLlxuICBfLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiBbXTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBhcnJheVtpXTtcbiAgICAgIGlmIChfLmNvbnRhaW5zKHJlc3VsdCwgaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKCFfLmNvbnRhaW5zKGFyZ3VtZW50c1tqXSwgaXRlbSkpIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGogPT09IGFyZ3NMZW5ndGgpIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy5cbiAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi5cbiAgXy5kaWZmZXJlbmNlID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICB2YXIgcmVzdCA9IGZsYXR0ZW4oc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCB0cnVlLCB0cnVlLCBbXSk7XG4gICAgcmV0dXJuIF8uZmlsdGVyKGFycmF5LCBmdW5jdGlvbih2YWx1ZSl7XG4gICAgICByZXR1cm4gIV8uY29udGFpbnMocmVzdCwgdmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIFppcCB0b2dldGhlciBtdWx0aXBsZSBsaXN0cyBpbnRvIGEgc2luZ2xlIGFycmF5IC0tIGVsZW1lbnRzIHRoYXQgc2hhcmVcbiAgLy8gYW4gaW5kZXggZ28gdG9nZXRoZXIuXG4gIF8uemlwID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIHZhciBsZW5ndGggPSBfLm1heChhcmd1bWVudHMsICdsZW5ndGgnKS5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdHMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdHNbaV0gPSBfLnBsdWNrKGFyZ3VtZW50cywgaSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy4gUGFzcyBlaXRoZXIgYSBzaW5nbGUgYXJyYXkgb2YgYFtrZXksIHZhbHVlXWBcbiAgLy8gcGFpcnMsIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgXy5vYmplY3QgPSBmdW5jdGlvbihsaXN0LCB2YWx1ZXMpIHtcbiAgICBpZiAobGlzdCA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBsaXN0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldXSA9IHZhbHVlc1tpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhbiBpdGVtIGluIGFuIGFycmF5LFxuICAvLyBvciAtMSBpZiB0aGUgaXRlbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFycmF5LlxuICAvLyBJZiB0aGUgYXJyYXkgaXMgbGFyZ2UgYW5kIGFscmVhZHkgaW4gc29ydCBvcmRlciwgcGFzcyBgdHJ1ZWBcbiAgLy8gZm9yICoqaXNTb3J0ZWQqKiB0byB1c2UgYmluYXJ5IHNlYXJjaC5cbiAgXy5pbmRleE9mID0gZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGlzU29ydGVkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiAtMTtcbiAgICB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAoaXNTb3J0ZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgaXNTb3J0ZWQgPT0gJ251bWJlcicpIHtcbiAgICAgICAgaSA9IGlzU29ydGVkIDwgMCA/IE1hdGgubWF4KDAsIGxlbmd0aCArIGlzU29ydGVkKSA6IGlzU29ydGVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSA9IF8uc29ydGVkSW5kZXgoYXJyYXksIGl0ZW0pO1xuICAgICAgICByZXR1cm4gYXJyYXlbaV0gPT09IGl0ZW0gPyBpIDogLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoOyBpIDwgbGVuZ3RoOyBpKyspIGlmIChhcnJheVtpXSA9PT0gaXRlbSkgcmV0dXJuIGk7XG4gICAgcmV0dXJuIC0xO1xuICB9O1xuXG4gIF8ubGFzdEluZGV4T2YgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgZnJvbSkge1xuICAgIGlmIChhcnJheSA9PSBudWxsKSByZXR1cm4gLTE7XG4gICAgdmFyIGlkeCA9IGFycmF5Lmxlbmd0aDtcbiAgICBpZiAodHlwZW9mIGZyb20gPT0gJ251bWJlcicpIHtcbiAgICAgIGlkeCA9IGZyb20gPCAwID8gaWR4ICsgZnJvbSArIDEgOiBNYXRoLm1pbihpZHgsIGZyb20gKyAxKTtcbiAgICB9XG4gICAgd2hpbGUgKC0taWR4ID49IDApIGlmIChhcnJheVtpZHhdID09PSBpdGVtKSByZXR1cm4gaWR4O1xuICAgIHJldHVybiAtMTtcbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIEFycmF5IGNvbnRhaW5pbmcgYW4gYXJpdGhtZXRpYyBwcm9ncmVzc2lvbi4gQSBwb3J0IG9mXG4gIC8vIHRoZSBuYXRpdmUgUHl0aG9uIGByYW5nZSgpYCBmdW5jdGlvbi4gU2VlXG4gIC8vIFt0aGUgUHl0aG9uIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS9mdW5jdGlvbnMuaHRtbCNyYW5nZSkuXG4gIF8ucmFuZ2UgPSBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHN0b3AgPSBzdGFydCB8fCAwO1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cbiAgICBzdGVwID0gc3RlcCB8fCAxO1xuXG4gICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApLCAwKTtcbiAgICB2YXIgcmFuZ2UgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbGVuZ3RoOyBpZHgrKywgc3RhcnQgKz0gc3RlcCkge1xuICAgICAgcmFuZ2VbaWR4XSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZTtcbiAgfTtcblxuICAvLyBGdW5jdGlvbiAoYWhlbSkgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFJldXNhYmxlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBwcm90b3R5cGUgc2V0dGluZy5cbiAgdmFyIEN0b3IgPSBmdW5jdGlvbigpe307XG5cbiAgLy8gQ3JlYXRlIGEgZnVuY3Rpb24gYm91bmQgdG8gYSBnaXZlbiBvYmplY3QgKGFzc2lnbmluZyBgdGhpc2AsIGFuZCBhcmd1bWVudHMsXG4gIC8vIG9wdGlvbmFsbHkpLiBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgRnVuY3Rpb24uYmluZGAgaWZcbiAgLy8gYXZhaWxhYmxlLlxuICBfLmJpbmQgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0KSB7XG4gICAgdmFyIGFyZ3MsIGJvdW5kO1xuICAgIGlmIChuYXRpdmVCaW5kICYmIGZ1bmMuYmluZCA9PT0gbmF0aXZlQmluZCkgcmV0dXJuIG5hdGl2ZUJpbmQuYXBwbHkoZnVuYywgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbihmdW5jKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1bmN0aW9uJyk7XG4gICAgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICBib3VuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSkgcmV0dXJuIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgICBDdG9yLnByb3RvdHlwZSA9IGZ1bmMucHJvdG90eXBlO1xuICAgICAgdmFyIHNlbGYgPSBuZXcgQ3RvcjtcbiAgICAgIEN0b3IucHJvdG90eXBlID0gbnVsbDtcbiAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHNlbGYsIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgICAgaWYgKF8uaXNPYmplY3QocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH07XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9O1xuXG4gIC8vIFBhcnRpYWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQgc29tZSBvZiBpdHNcbiAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcgaXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuIF8gYWN0c1xuICAvLyBhcyBhIHBsYWNlaG9sZGVyLCBhbGxvd2luZyBhbnkgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIHRvIGJlIHByZS1maWxsZWQuXG4gIF8ucGFydGlhbCA9IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICB2YXIgYm91bmRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IDA7XG4gICAgICB2YXIgYXJncyA9IGJvdW5kQXJncy5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGFyZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFyZ3NbaV0gPT09IF8pIGFyZ3NbaV0gPSBhcmd1bWVudHNbcG9zaXRpb24rK107XG4gICAgICB9XG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBhcmd1bWVudHMubGVuZ3RoKSBhcmdzLnB1c2goYXJndW1lbnRzW3Bvc2l0aW9uKytdKTtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gQmluZCBhIG51bWJlciBvZiBhbiBvYmplY3QncyBtZXRob2RzIHRvIHRoYXQgb2JqZWN0LiBSZW1haW5pbmcgYXJndW1lbnRzXG4gIC8vIGFyZSB0aGUgbWV0aG9kIG5hbWVzIHRvIGJlIGJvdW5kLiBVc2VmdWwgZm9yIGVuc3VyaW5nIHRoYXQgYWxsIGNhbGxiYWNrc1xuICAvLyBkZWZpbmVkIG9uIGFuIG9iamVjdCBiZWxvbmcgdG8gaXQuXG4gIF8uYmluZEFsbCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBpLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLCBrZXk7XG4gICAgaWYgKGxlbmd0aCA8PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMnKTtcbiAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIG9ialtrZXldID0gXy5iaW5kKG9ialtrZXldLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9O1xuXG4gIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0b3JpbmcgaXRzIHJlc3VsdHMuXG4gIF8ubWVtb2l6ZSA9IGZ1bmN0aW9uKGZ1bmMsIGhhc2hlcikge1xuICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2YXIgY2FjaGUgPSBtZW1vaXplLmNhY2hlO1xuICAgICAgdmFyIGFkZHJlc3MgPSBoYXNoZXIgPyBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleTtcbiAgICAgIGlmICghXy5oYXMoY2FjaGUsIGFkZHJlc3MpKSBjYWNoZVthZGRyZXNzXSA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjYWNoZVthZGRyZXNzXTtcbiAgICB9O1xuICAgIG1lbW9pemUuY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gbWVtb2l6ZTtcbiAgfTtcblxuICAvLyBEZWxheXMgYSBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIGFuZCB0aGVuIGNhbGxzXG4gIC8vIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC5cbiAgXy5kZWxheSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSwgd2FpdCk7XG4gIH07XG5cbiAgLy8gRGVmZXJzIGEgZnVuY3Rpb24sIHNjaGVkdWxpbmcgaXQgdG8gcnVuIGFmdGVyIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzXG4gIC8vIGNsZWFyZWQuXG4gIF8uZGVmZXIgPSBmdW5jdGlvbihmdW5jKSB7XG4gICAgcmV0dXJuIF8uZGVsYXkuYXBwbHkoXywgW2Z1bmMsIDFdLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tlZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2VcbiAgLy8gZHVyaW5nIGEgZ2l2ZW4gd2luZG93IG9mIHRpbWUuIE5vcm1hbGx5LCB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHdpbGwgcnVuXG4gIC8vIGFzIG11Y2ggYXMgaXQgY2FuLCB3aXRob3V0IGV2ZXIgZ29pbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGB3YWl0YCBkdXJhdGlvbjtcbiAgLy8gYnV0IGlmIHlvdSdkIGxpa2UgdG8gZGlzYWJsZSB0aGUgZXhlY3V0aW9uIG9uIHRoZSBsZWFkaW5nIGVkZ2UsIHBhc3NcbiAgLy8gYHtsZWFkaW5nOiBmYWxzZX1gLiBUbyBkaXNhYmxlIGV4ZWN1dGlvbiBvbiB0aGUgdHJhaWxpbmcgZWRnZSwgZGl0dG8uXG4gIF8udGhyb3R0bGUgPSBmdW5jdGlvbihmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgdGltZW91dCA9IG51bGw7XG4gICAgdmFyIHByZXZpb3VzID0gMDtcbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiBfLm5vdygpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbm93ID0gXy5ub3coKTtcbiAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBub3c7XG4gICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgICBjb250ZXh0ID0gdGhpcztcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gd2FpdCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgYXMgbG9uZyBhcyBpdCBjb250aW51ZXMgdG8gYmUgaW52b2tlZCwgd2lsbCBub3RcbiAgLy8gYmUgdHJpZ2dlcmVkLiBUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgaXQgc3RvcHMgYmVpbmcgY2FsbGVkIGZvclxuICAvLyBOIG1pbGxpc2Vjb25kcy4gSWYgYGltbWVkaWF0ZWAgaXMgcGFzc2VkLCB0cmlnZ2VyIHRoZSBmdW5jdGlvbiBvbiB0aGVcbiAgLy8gbGVhZGluZyBlZGdlLCBpbnN0ZWFkIG9mIHRoZSB0cmFpbGluZy5cbiAgXy5kZWJvdW5jZSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgIHZhciB0aW1lb3V0LCBhcmdzLCBjb250ZXh0LCB0aW1lc3RhbXAsIHJlc3VsdDtcblxuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxhc3QgPSBfLm5vdygpIC0gdGltZXN0YW1wO1xuXG4gICAgICBpZiAobGFzdCA8IHdhaXQgJiYgbGFzdCA+IDApIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgLSBsYXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgdGltZXN0YW1wID0gXy5ub3coKTtcbiAgICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgICAgaWYgKCF0aW1lb3V0KSB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgICBpZiAoY2FsbE5vdykge1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBmdW5jdGlvbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIHNlY29uZCxcbiAgLy8gYWxsb3dpbmcgeW91IHRvIGFkanVzdCBhcmd1bWVudHMsIHJ1biBjb2RlIGJlZm9yZSBhbmQgYWZ0ZXIsIGFuZFxuICAvLyBjb25kaXRpb25hbGx5IGV4ZWN1dGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLlxuICBfLndyYXAgPSBmdW5jdGlvbihmdW5jLCB3cmFwcGVyKSB7XG4gICAgcmV0dXJuIF8ucGFydGlhbCh3cmFwcGVyLCBmdW5jKTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgbmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBwYXNzZWQtaW4gcHJlZGljYXRlLlxuICBfLm5lZ2F0ZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgYSBsaXN0IG9mIGZ1bmN0aW9ucywgZWFjaFxuICAvLyBjb25zdW1pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBmb2xsb3dzLlxuICBfLmNvbXBvc2UgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgc3RhcnQgPSBhcmdzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGkgPSBzdGFydDtcbiAgICAgIHZhciByZXN1bHQgPSBhcmdzW3N0YXJ0XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgd2hpbGUgKGktLSkgcmVzdWx0ID0gYXJnc1tpXS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIGFmdGVyIGJlaW5nIGNhbGxlZCBOIHRpbWVzLlxuICBfLmFmdGVyID0gZnVuY3Rpb24odGltZXMsIGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA8IDEpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgb25seSBiZSBleGVjdXRlZCBiZWZvcmUgYmVpbmcgY2FsbGVkIE4gdGltZXMuXG4gIF8uYmVmb3JlID0gZnVuY3Rpb24odGltZXMsIGZ1bmMpIHtcbiAgICB2YXIgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA+IDApIHtcbiAgICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZ1bmMgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGF0IG1vc3Qgb25lIHRpbWUsIG5vIG1hdHRlciBob3dcbiAgLy8gb2Z0ZW4geW91IGNhbGwgaXQuIFVzZWZ1bCBmb3IgbGF6eSBpbml0aWFsaXphdGlvbi5cbiAgXy5vbmNlID0gXy5wYXJ0aWFsKF8uYmVmb3JlLCAyKTtcblxuICAvLyBPYmplY3QgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBSZXRyaWV2ZSB0aGUgbmFtZXMgb2YgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgLy8gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYE9iamVjdC5rZXlzYFxuICBfLmtleXMgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIFtdO1xuICAgIGlmIChuYXRpdmVLZXlzKSByZXR1cm4gbmF0aXZlS2V5cyhvYmopO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikgaWYgKF8uaGFzKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH07XG5cbiAgLy8gUmV0cmlldmUgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLlxuICBfLnZhbHVlcyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciB2YWx1ZXMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlc1tpXSA9IG9ialtrZXlzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfTtcblxuICAvLyBDb252ZXJ0IGFuIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBgW2tleSwgdmFsdWVdYCBwYWlycy5cbiAgXy5wYWlycyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBwYWlycyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcGFpcnNbaV0gPSBba2V5c1tpXSwgb2JqW2tleXNbaV1dXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xuICB9O1xuXG4gIC8vIEludmVydCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGFuIG9iamVjdC4gVGhlIHZhbHVlcyBtdXN0IGJlIHNlcmlhbGl6YWJsZS5cbiAgXy5pbnZlcnQgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W29ialtrZXlzW2ldXV0gPSBrZXlzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lcyBhdmFpbGFibGUgb24gdGhlIG9iamVjdC5cbiAgLy8gQWxpYXNlZCBhcyBgbWV0aG9kc2BcbiAgXy5mdW5jdGlvbnMgPSBfLm1ldGhvZHMgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKG9ialtrZXldKSkgbmFtZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZXMuc29ydCgpO1xuICB9O1xuXG4gIC8vIEV4dGVuZCBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgcHJvcGVydGllcyBpbiBwYXNzZWQtaW4gb2JqZWN0KHMpLlxuICBfLmV4dGVuZCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIHZhciBzb3VyY2UsIHByb3A7XG4gICAgZm9yICh2YXIgaSA9IDEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yIChwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIHByb3ApKSB7XG4gICAgICAgICAgICBvYmpbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgb25seSBjb250YWluaW5nIHRoZSB3aGl0ZWxpc3RlZCBwcm9wZXJ0aWVzLlxuICBfLnBpY2sgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9LCBrZXk7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gcmVzdWx0O1xuICAgIGlmIChfLmlzRnVuY3Rpb24oaXRlcmF0ZWUpKSB7XG4gICAgICBpdGVyYXRlZSA9IGNyZWF0ZUNhbGxiYWNrKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgaWYgKGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iaikpIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBrZXlzID0gY29uY2F0LmFwcGx5KFtdLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICAgICAgb2JqID0gbmV3IE9iamVjdChvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmopIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBibGFja2xpc3RlZCBwcm9wZXJ0aWVzLlxuICBfLm9taXQgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5uZWdhdGUoaXRlcmF0ZWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IF8ubWFwKGNvbmNhdC5hcHBseShbXSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKSwgU3RyaW5nKTtcbiAgICAgIGl0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICByZXR1cm4gIV8uY29udGFpbnMoa2V5cywga2V5KTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBfLnBpY2sob2JqLCBpdGVyYXRlZSwgY29udGV4dCk7XG4gIH07XG5cbiAgLy8gRmlsbCBpbiBhIGdpdmVuIG9iamVjdCB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIGZvciAodmFyIGkgPSAxLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAob2JqW3Byb3BdID09PSB2b2lkIDApIG9ialtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICAvLyBDcmVhdGUgYSAoc2hhbGxvdy1jbG9uZWQpIGR1cGxpY2F0ZSBvZiBhbiBvYmplY3QuXG4gIF8uY2xvbmUgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gXy5pc0FycmF5KG9iaikgPyBvYmouc2xpY2UoKSA6IF8uZXh0ZW5kKHt9LCBvYmopO1xuICB9O1xuXG4gIC8vIEludm9rZXMgaW50ZXJjZXB0b3Igd2l0aCB0aGUgb2JqLCBhbmQgdGhlbiByZXR1cm5zIG9iai5cbiAgLy8gVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4sIGluXG4gIC8vIG9yZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4gdGhlIGNoYWluLlxuICBfLnRhcCA9IGZ1bmN0aW9uKG9iaiwgaW50ZXJjZXB0b3IpIHtcbiAgICBpbnRlcmNlcHRvcihvYmopO1xuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgcmVjdXJzaXZlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGBpc0VxdWFsYC5cbiAgdmFyIGVxID0gZnVuY3Rpb24oYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBJZGVudGljYWwgb2JqZWN0cyBhcmUgZXF1YWwuIGAwID09PSAtMGAsIGJ1dCB0aGV5IGFyZW4ndCBpZGVudGljYWwuXG4gICAgLy8gU2VlIHRoZSBbSGFybW9ueSBgZWdhbGAgcHJvcG9zYWxdKGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6ZWdhbCkuXG4gICAgaWYgKGEgPT09IGIpIHJldHVybiBhICE9PSAwIHx8IDEgLyBhID09PSAxIC8gYjtcbiAgICAvLyBBIHN0cmljdCBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGBudWxsID09IHVuZGVmaW5lZGAuXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiBhID09PSBiO1xuICAgIC8vIFVud3JhcCBhbnkgd3JhcHBlZCBvYmplY3RzLlxuICAgIGlmIChhIGluc3RhbmNlb2YgXykgYSA9IGEuX3dyYXBwZWQ7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBfKSBiID0gYi5fd3JhcHBlZDtcbiAgICAvLyBDb21wYXJlIGBbW0NsYXNzXV1gIG5hbWVzLlxuICAgIHZhciBjbGFzc05hbWUgPSB0b1N0cmluZy5jYWxsKGEpO1xuICAgIGlmIChjbGFzc05hbWUgIT09IHRvU3RyaW5nLmNhbGwoYikpIHJldHVybiBmYWxzZTtcbiAgICBzd2l0Y2ggKGNsYXNzTmFtZSkge1xuICAgICAgLy8gU3RyaW5ncywgbnVtYmVycywgcmVndWxhciBleHByZXNzaW9ucywgZGF0ZXMsIGFuZCBib29sZWFucyBhcmUgY29tcGFyZWQgYnkgdmFsdWUuXG4gICAgICBjYXNlICdbb2JqZWN0IFJlZ0V4cF0nOlxuICAgICAgLy8gUmVnRXhwcyBhcmUgY29lcmNlZCB0byBzdHJpbmdzIGZvciBjb21wYXJpc29uIChOb3RlOiAnJyArIC9hL2kgPT09ICcvYS9pJylcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3RyaW5nXSc6XG4gICAgICAgIC8vIFByaW1pdGl2ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHdyYXBwZXJzIGFyZSBlcXVpdmFsZW50OyB0aHVzLCBgXCI1XCJgIGlzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gYG5ldyBTdHJpbmcoXCI1XCIpYC5cbiAgICAgICAgcmV0dXJuICcnICsgYSA9PT0gJycgKyBiO1xuICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcbiAgICAgICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICAgICAgLy8gT2JqZWN0KE5hTikgaXMgZXF1aXZhbGVudCB0byBOYU5cbiAgICAgICAgaWYgKCthICE9PSArYSkgcmV0dXJuICtiICE9PSArYjtcbiAgICAgICAgLy8gQW4gYGVnYWxgIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGZvciBvdGhlciBudW1lcmljIHZhbHVlcy5cbiAgICAgICAgcmV0dXJuICthID09PSAwID8gMSAvICthID09PSAxIC8gYiA6ICthID09PSArYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgRGF0ZV0nOlxuICAgICAgY2FzZSAnW29iamVjdCBCb29sZWFuXSc6XG4gICAgICAgIC8vIENvZXJjZSBkYXRlcyBhbmQgYm9vbGVhbnMgdG8gbnVtZXJpYyBwcmltaXRpdmUgdmFsdWVzLiBEYXRlcyBhcmUgY29tcGFyZWQgYnkgdGhlaXJcbiAgICAgICAgLy8gbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zLiBOb3RlIHRoYXQgaW52YWxpZCBkYXRlcyB3aXRoIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9uc1xuICAgICAgICAvLyBvZiBgTmFOYCBhcmUgbm90IGVxdWl2YWxlbnQuXG4gICAgICAgIHJldHVybiArYSA9PT0gK2I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYSAhPSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3IgY3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWNcbiAgICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBhYnN0cmFjdCBvcGVyYXRpb24gYEpPYC5cbiAgICB2YXIgbGVuZ3RoID0gYVN0YWNrLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIC8vIExpbmVhciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZlxuICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuICAgICAgaWYgKGFTdGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7XG4gICAgfVxuICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3Rgc1xuICAgIC8vIGZyb20gZGlmZmVyZW50IGZyYW1lcyBhcmUuXG4gICAgdmFyIGFDdG9yID0gYS5jb25zdHJ1Y3RvciwgYkN0b3IgPSBiLmNvbnN0cnVjdG9yO1xuICAgIGlmIChcbiAgICAgIGFDdG9yICE9PSBiQ3RvciAmJlxuICAgICAgLy8gSGFuZGxlIE9iamVjdC5jcmVhdGUoeCkgY2FzZXNcbiAgICAgICdjb25zdHJ1Y3RvcicgaW4gYSAmJiAnY29uc3RydWN0b3InIGluIGIgJiZcbiAgICAgICEoXy5pc0Z1bmN0aW9uKGFDdG9yKSAmJiBhQ3RvciBpbnN0YW5jZW9mIGFDdG9yICYmXG4gICAgICAgIF8uaXNGdW5jdGlvbihiQ3RvcikgJiYgYkN0b3IgaW5zdGFuY2VvZiBiQ3RvcilcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wdXNoKGEpO1xuICAgIGJTdGFjay5wdXNoKGIpO1xuICAgIHZhciBzaXplLCByZXN1bHQ7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBhIGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuXG4gICAgICBzaXplID0gYS5sZW5ndGg7XG4gICAgICByZXN1bHQgPSBzaXplID09PSBiLmxlbmd0aDtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgLy8gRGVlcCBjb21wYXJlIHRoZSBjb250ZW50cywgaWdub3Jpbmcgbm9uLW51bWVyaWMgcHJvcGVydGllcy5cbiAgICAgICAgd2hpbGUgKHNpemUtLSkge1xuICAgICAgICAgIGlmICghKHJlc3VsdCA9IGVxKGFbc2l6ZV0sIGJbc2l6ZV0sIGFTdGFjaywgYlN0YWNrKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZXAgY29tcGFyZSBvYmplY3RzLlxuICAgICAgdmFyIGtleXMgPSBfLmtleXMoYSksIGtleTtcbiAgICAgIHNpemUgPSBrZXlzLmxlbmd0aDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS5cbiAgICAgIHJlc3VsdCA9IF8ua2V5cyhiKS5sZW5ndGggPT09IHNpemU7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHdoaWxlIChzaXplLS0pIHtcbiAgICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXJcbiAgICAgICAgICBrZXkgPSBrZXlzW3NpemVdO1xuICAgICAgICAgIGlmICghKHJlc3VsdCA9IF8uaGFzKGIsIGtleSkgJiYgZXEoYVtrZXldLCBiW2tleV0sIGFTdGFjaywgYlN0YWNrKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlbW92ZSB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wb3AoKTtcbiAgICBiU3RhY2sucG9wKCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBQZXJmb3JtIGEgZGVlcCBjb21wYXJpc29uIHRvIGNoZWNrIGlmIHR3byBvYmplY3RzIGFyZSBlcXVhbC5cbiAgXy5pc0VxdWFsID0gZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBlcShhLCBiLCBbXSwgW10pO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0IGVtcHR5P1xuICAvLyBBbiBcImVtcHR5XCIgb2JqZWN0IGhhcyBubyBlbnVtZXJhYmxlIG93bi1wcm9wZXJ0aWVzLlxuICBfLmlzRW1wdHkgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB0cnVlO1xuICAgIGlmIChfLmlzQXJyYXkob2JqKSB8fCBfLmlzU3RyaW5nKG9iaikgfHwgXy5pc0FyZ3VtZW50cyhvYmopKSByZXR1cm4gb2JqLmxlbmd0aCA9PT0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoXy5oYXMob2JqLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIERPTSBlbGVtZW50P1xuICBfLmlzRWxlbWVudCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiAhIShvYmogJiYgb2JqLm5vZGVUeXBlID09PSAxKTtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGFuIGFycmF5P1xuICAvLyBEZWxlZ2F0ZXMgdG8gRUNNQTUncyBuYXRpdmUgQXJyYXkuaXNBcnJheVxuICBfLmlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YXJpYWJsZSBhbiBvYmplY3Q/XG4gIF8uaXNPYmplY3QgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgISFvYmo7XG4gIH07XG5cbiAgLy8gQWRkIHNvbWUgaXNUeXBlIG1ldGhvZHM6IGlzQXJndW1lbnRzLCBpc0Z1bmN0aW9uLCBpc1N0cmluZywgaXNOdW1iZXIsIGlzRGF0ZSwgaXNSZWdFeHAuXG4gIF8uZWFjaChbJ0FyZ3VtZW50cycsICdGdW5jdGlvbicsICdTdHJpbmcnLCAnTnVtYmVyJywgJ0RhdGUnLCAnUmVnRXhwJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBfWydpcycgKyBuYW1lXSA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIG5hbWUgKyAnXSc7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gRGVmaW5lIGEgZmFsbGJhY2sgdmVyc2lvbiBvZiB0aGUgbWV0aG9kIGluIGJyb3dzZXJzIChhaGVtLCBJRSksIHdoZXJlXG4gIC8vIHRoZXJlIGlzbid0IGFueSBpbnNwZWN0YWJsZSBcIkFyZ3VtZW50c1wiIHR5cGUuXG4gIGlmICghXy5pc0FyZ3VtZW50cyhhcmd1bWVudHMpKSB7XG4gICAgXy5pc0FyZ3VtZW50cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIF8uaGFzKG9iaiwgJ2NhbGxlZScpO1xuICAgIH07XG4gIH1cblxuICAvLyBPcHRpbWl6ZSBgaXNGdW5jdGlvbmAgaWYgYXBwcm9wcmlhdGUuIFdvcmsgYXJvdW5kIGFuIElFIDExIGJ1Zy5cbiAgaWYgKHR5cGVvZiAvLi8gIT09ICdmdW5jdGlvbicpIHtcbiAgICBfLmlzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gb2JqZWN0IGEgZmluaXRlIG51bWJlcj9cbiAgXy5pc0Zpbml0ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBpc0Zpbml0ZShvYmopICYmICFpc05hTihwYXJzZUZsb2F0KG9iaikpO1xuICB9O1xuXG4gIC8vIElzIHRoZSBnaXZlbiB2YWx1ZSBgTmFOYD8gKE5hTiBpcyB0aGUgb25seSBudW1iZXIgd2hpY2ggZG9lcyBub3QgZXF1YWwgaXRzZWxmKS5cbiAgXy5pc05hTiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBfLmlzTnVtYmVyKG9iaikgJiYgb2JqICE9PSArb2JqO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBib29sZWFuP1xuICBfLmlzQm9vbGVhbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSB8fCB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/XG4gIF8uaXNOdWxsID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIHVuZGVmaW5lZD9cbiAgXy5pc1VuZGVmaW5lZCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHZvaWQgMDtcbiAgfTtcblxuICAvLyBTaG9ydGN1dCBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IGRpcmVjdGx5XG4gIC8vIG9uIGl0c2VsZiAoaW4gb3RoZXIgd29yZHMsIG5vdCBvbiBhIHByb3RvdHlwZSkuXG4gIF8uaGFzID0gZnVuY3Rpb24ob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gb2JqICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gIH07XG5cbiAgLy8gVXRpbGl0eSBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBSdW4gVW5kZXJzY29yZS5qcyBpbiAqbm9Db25mbGljdCogbW9kZSwgcmV0dXJuaW5nIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzXG4gIC8vIHByZXZpb3VzIG93bmVyLiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdC5cbiAgXy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgcm9vdC5fID0gcHJldmlvdXNVbmRlcnNjb3JlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEtlZXAgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGFyb3VuZCBmb3IgZGVmYXVsdCBpdGVyYXRlZXMuXG4gIF8uaWRlbnRpdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcblxuICBfLmNvbnN0YW50ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfTtcblxuICBfLm5vb3AgPSBmdW5jdGlvbigpe307XG5cbiAgXy5wcm9wZXJ0eSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmpba2V5XTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBwcmVkaWNhdGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZiBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5tYXRjaGVzID0gZnVuY3Rpb24oYXR0cnMpIHtcbiAgICB2YXIgcGFpcnMgPSBfLnBhaXJzKGF0dHJzKSwgbGVuZ3RoID0gcGFpcnMubGVuZ3RoO1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuICFsZW5ndGg7XG4gICAgICBvYmogPSBuZXcgT2JqZWN0KG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYWlyID0gcGFpcnNbaV0sIGtleSA9IHBhaXJbMF07XG4gICAgICAgIGlmIChwYWlyWzFdICE9PSBvYmpba2V5XSB8fCAhKGtleSBpbiBvYmopKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICBfLnRpbWVzID0gZnVuY3Rpb24obiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgYWNjdW0gPSBBcnJheShNYXRoLm1heCgwLCBuKSk7XG4gICAgaXRlcmF0ZWUgPSBjcmVhdGVDYWxsYmFjayhpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIGFjY3VtW2ldID0gaXRlcmF0ZWUoaSk7XG4gICAgcmV0dXJuIGFjY3VtO1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIGFuZCBtYXggKGluY2x1c2l2ZSkuXG4gIF8ucmFuZG9tID0gZnVuY3Rpb24obWluLCBtYXgpIHtcbiAgICBpZiAobWF4ID09IG51bGwpIHtcbiAgICAgIG1heCA9IG1pbjtcbiAgICAgIG1pbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBtaW4gKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpO1xuICB9O1xuXG4gIC8vIEEgKHBvc3NpYmx5IGZhc3Rlcikgd2F5IHRvIGdldCB0aGUgY3VycmVudCB0aW1lc3RhbXAgYXMgYW4gaW50ZWdlci5cbiAgXy5ub3cgPSBEYXRlLm5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH07XG5cbiAgIC8vIExpc3Qgb2YgSFRNTCBlbnRpdGllcyBmb3IgZXNjYXBpbmcuXG4gIHZhciBlc2NhcGVNYXAgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiN4Mjc7JyxcbiAgICAnYCc6ICcmI3g2MDsnXG4gIH07XG4gIHZhciB1bmVzY2FwZU1hcCA9IF8uaW52ZXJ0KGVzY2FwZU1hcCk7XG5cbiAgLy8gRnVuY3Rpb25zIGZvciBlc2NhcGluZyBhbmQgdW5lc2NhcGluZyBzdHJpbmdzIHRvL2Zyb20gSFRNTCBpbnRlcnBvbGF0aW9uLlxuICB2YXIgY3JlYXRlRXNjYXBlciA9IGZ1bmN0aW9uKG1hcCkge1xuICAgIHZhciBlc2NhcGVyID0gZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXBbbWF0Y2hdO1xuICAgIH07XG4gICAgLy8gUmVnZXhlcyBmb3IgaWRlbnRpZnlpbmcgYSBrZXkgdGhhdCBuZWVkcyB0byBiZSBlc2NhcGVkXG4gICAgdmFyIHNvdXJjZSA9ICcoPzonICsgXy5rZXlzKG1hcCkuam9pbignfCcpICsgJyknO1xuICAgIHZhciB0ZXN0UmVnZXhwID0gUmVnRXhwKHNvdXJjZSk7XG4gICAgdmFyIHJlcGxhY2VSZWdleHAgPSBSZWdFeHAoc291cmNlLCAnZycpO1xuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyA9PSBudWxsID8gJycgOiAnJyArIHN0cmluZztcbiAgICAgIHJldHVybiB0ZXN0UmVnZXhwLnRlc3Qoc3RyaW5nKSA/IHN0cmluZy5yZXBsYWNlKHJlcGxhY2VSZWdleHAsIGVzY2FwZXIpIDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIF8uZXNjYXBlID0gY3JlYXRlRXNjYXBlcihlc2NhcGVNYXApO1xuICBfLnVuZXNjYXBlID0gY3JlYXRlRXNjYXBlcih1bmVzY2FwZU1hcCk7XG5cbiAgLy8gSWYgdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBgcHJvcGVydHlgIGlzIGEgZnVuY3Rpb24gdGhlbiBpbnZva2UgaXQgd2l0aCB0aGVcbiAgLy8gYG9iamVjdGAgYXMgY29udGV4dDsgb3RoZXJ3aXNlLCByZXR1cm4gaXQuXG4gIF8ucmVzdWx0ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICB2YXIgdmFsdWUgPSBvYmplY3RbcHJvcGVydHldO1xuICAgIHJldHVybiBfLmlzRnVuY3Rpb24odmFsdWUpID8gb2JqZWN0W3Byb3BlcnR5XSgpIDogdmFsdWU7XG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgYSB1bmlxdWUgaW50ZWdlciBpZCAodW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIGNsaWVudCBzZXNzaW9uKS5cbiAgLy8gVXNlZnVsIGZvciB0ZW1wb3JhcnkgRE9NIGlkcy5cbiAgdmFyIGlkQ291bnRlciA9IDA7XG4gIF8udW5pcXVlSWQgPSBmdW5jdGlvbihwcmVmaXgpIHtcbiAgICB2YXIgaWQgPSArK2lkQ291bnRlciArICcnO1xuICAgIHJldHVybiBwcmVmaXggPyBwcmVmaXggKyBpZCA6IGlkO1xuICB9O1xuXG4gIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZVxuICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gIF8udGVtcGxhdGVTZXR0aW5ncyA9IHtcbiAgICBldmFsdWF0ZSAgICA6IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcXHNcXFNdKz8pJT4vZyxcbiAgICBlc2NhcGUgICAgICA6IC88JS0oW1xcc1xcU10rPyklPi9nXG4gIH07XG5cbiAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhblxuICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzXG4gIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLlxuICB2YXIgbm9NYXRjaCA9IC8oLileLztcblxuICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYVxuICAvLyBzdHJpbmcgbGl0ZXJhbC5cbiAgdmFyIGVzY2FwZXMgPSB7XG4gICAgXCInXCI6ICAgICAgXCInXCIsXG4gICAgJ1xcXFwnOiAgICAgJ1xcXFwnLFxuICAgICdcXHInOiAgICAgJ3InLFxuICAgICdcXG4nOiAgICAgJ24nLFxuICAgICdcXHUyMDI4JzogJ3UyMDI4JyxcbiAgICAnXFx1MjAyOSc6ICd1MjAyOSdcbiAgfTtcblxuICB2YXIgZXNjYXBlciA9IC9cXFxcfCd8XFxyfFxcbnxcXHUyMDI4fFxcdTIwMjkvZztcblxuICB2YXIgZXNjYXBlQ2hhciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIGVzY2FwZXNbbWF0Y2hdO1xuICB9O1xuXG4gIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uXG4gIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSxcbiAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUuXG4gIC8vIE5COiBgb2xkU2V0dGluZ3NgIG9ubHkgZXhpc3RzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIHNldHRpbmdzLCBvbGRTZXR0aW5ncykge1xuICAgIGlmICghc2V0dGluZ3MgJiYgb2xkU2V0dGluZ3MpIHNldHRpbmdzID0gb2xkU2V0dGluZ3M7XG4gICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTtcblxuICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLlxuICAgIHZhciBtYXRjaGVyID0gUmVnRXhwKFtcbiAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLFxuICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2VcbiAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7XG5cbiAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LlxuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHNvdXJjZSA9IFwiX19wKz0nXCI7XG4gICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7XG4gICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKGVzY2FwZXIsIGVzY2FwZUNoYXIpO1xuICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBlc2NhcGUgKyBcIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBpbnRlcnBvbGF0ZSArIFwiKSk9PW51bGw/Jyc6X190KStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZSArIFwiXFxuX19wKz0nXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCByZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZmVzdC5cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcbiAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS5cbiAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcXG4nICsgc291cmNlICsgJ31cXG4nO1xuXG4gICAgc291cmNlID0gXCJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sXCIgK1xuICAgICAgXCJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xcblwiICtcbiAgICAgIHNvdXJjZSArICdyZXR1cm4gX19wO1xcbic7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGUuc291cmNlID0gc291cmNlO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7XG4gICAgfTtcblxuICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi5cbiAgICB2YXIgYXJndW1lbnQgPSBzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJztcbiAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIGFyZ3VtZW50ICsgJyl7XFxuJyArIHNvdXJjZSArICd9JztcblxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfTtcblxuICAvLyBBZGQgYSBcImNoYWluXCIgZnVuY3Rpb24uIFN0YXJ0IGNoYWluaW5nIGEgd3JhcHBlZCBVbmRlcnNjb3JlIG9iamVjdC5cbiAgXy5jaGFpbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBpbnN0YW5jZSA9IF8ob2JqKTtcbiAgICBpbnN0YW5jZS5fY2hhaW4gPSB0cnVlO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcblxuICAvLyBPT1BcbiAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gIC8vIElmIFVuZGVyc2NvcmUgaXMgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGl0IHJldHVybnMgYSB3cmFwcGVkIG9iamVjdCB0aGF0XG4gIC8vIGNhbiBiZSB1c2VkIE9PLXN0eWxlLiBUaGlzIHdyYXBwZXIgaG9sZHMgYWx0ZXJlZCB2ZXJzaW9ucyBvZiBhbGwgdGhlXG4gIC8vIHVuZGVyc2NvcmUgZnVuY3Rpb25zLiBXcmFwcGVkIG9iamVjdHMgbWF5IGJlIGNoYWluZWQuXG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIGNoYWluaW5nIGludGVybWVkaWF0ZSByZXN1bHRzLlxuICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYWluID8gXyhvYmopLmNoYWluKCkgOiBvYmo7XG4gIH07XG5cbiAgLy8gQWRkIHlvdXIgb3duIGN1c3RvbSBmdW5jdGlvbnMgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBfLm1peGluID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgXy5lYWNoKF8uZnVuY3Rpb25zKG9iaiksIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gX1tuYW1lXSA9IG9ialtuYW1lXTtcbiAgICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW3RoaXMuX3dyYXBwZWRdO1xuICAgICAgICBwdXNoLmFwcGx5KGFyZ3MsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBmdW5jLmFwcGx5KF8sIGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQWRkIGFsbCBvZiB0aGUgVW5kZXJzY29yZSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIgb2JqZWN0LlxuICBfLm1peGluKF8pO1xuXG4gIC8vIEFkZCBhbGwgbXV0YXRvciBBcnJheSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIuXG4gIF8uZWFjaChbJ3BvcCcsICdwdXNoJywgJ3JldmVyc2UnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvYmogPSB0aGlzLl93cmFwcGVkO1xuICAgICAgbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgIGlmICgobmFtZSA9PT0gJ3NoaWZ0JyB8fCBuYW1lID09PSAnc3BsaWNlJykgJiYgb2JqLmxlbmd0aCA9PT0gMCkgZGVsZXRlIG9ialswXTtcbiAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBvYmopO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIEFkZCBhbGwgYWNjZXNzb3IgQXJyYXkgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBfLmVhY2goWydjb25jYXQnLCAnam9pbicsICdzbGljZSddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0aGlzLCBtZXRob2QuYXBwbHkodGhpcy5fd3JhcHBlZCwgYXJndW1lbnRzKSk7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmplY3QuXG4gIF8ucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyYXBwZWQ7XG4gIH07XG5cbiAgLy8gQU1EIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGF0IHRoZSBlbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBTUQgbG9hZGVyc1xuICAvLyB0aGF0IG1heSBub3QgZW5mb3JjZSBuZXh0LXR1cm4gc2VtYW50aWNzIG9uIG1vZHVsZXMuIEV2ZW4gdGhvdWdoIGdlbmVyYWxcbiAgLy8gcHJhY3RpY2UgZm9yIEFNRCByZWdpc3RyYXRpb24gaXMgdG8gYmUgYW5vbnltb3VzLCB1bmRlcnNjb3JlIHJlZ2lzdGVyc1xuICAvLyBhcyBhIG5hbWVkIG1vZHVsZSBiZWNhdXNlLCBsaWtlIGpRdWVyeSwgaXQgaXMgYSBiYXNlIGxpYnJhcnkgdGhhdCBpc1xuICAvLyBwb3B1bGFyIGVub3VnaCB0byBiZSBidW5kbGVkIGluIGEgdGhpcmQgcGFydHkgbGliLCBidXQgbm90IGJlIHBhcnQgb2ZcbiAgLy8gYW4gQU1EIGxvYWQgcmVxdWVzdC4gVGhvc2UgY2FzZXMgY291bGQgZ2VuZXJhdGUgYW4gZXJyb3Igd2hlbiBhblxuICAvLyBhbm9ueW1vdXMgZGVmaW5lKCkgaXMgY2FsbGVkIG91dHNpZGUgb2YgYSBsb2FkZXIgcmVxdWVzdC5cbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZSgndW5kZXJzY29yZScsIFtdLCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG59LmNhbGwodGhpcykpO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHB1bnljb2RlID0gcmVxdWlyZSgncHVueWNvZGUnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbmV4cG9ydHMucGFyc2UgPSB1cmxQYXJzZTtcbmV4cG9ydHMucmVzb2x2ZSA9IHVybFJlc29sdmU7XG5leHBvcnRzLnJlc29sdmVPYmplY3QgPSB1cmxSZXNvbHZlT2JqZWN0O1xuZXhwb3J0cy5mb3JtYXQgPSB1cmxGb3JtYXQ7XG5cbmV4cG9ydHMuVXJsID0gVXJsO1xuXG5mdW5jdGlvbiBVcmwoKSB7XG4gIHRoaXMucHJvdG9jb2wgPSBudWxsO1xuICB0aGlzLnNsYXNoZXMgPSBudWxsO1xuICB0aGlzLmF1dGggPSBudWxsO1xuICB0aGlzLmhvc3QgPSBudWxsO1xuICB0aGlzLnBvcnQgPSBudWxsO1xuICB0aGlzLmhvc3RuYW1lID0gbnVsbDtcbiAgdGhpcy5oYXNoID0gbnVsbDtcbiAgdGhpcy5zZWFyY2ggPSBudWxsO1xuICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgdGhpcy5wYXRobmFtZSA9IG51bGw7XG4gIHRoaXMucGF0aCA9IG51bGw7XG4gIHRoaXMuaHJlZiA9IG51bGw7XG59XG5cbi8vIFJlZmVyZW5jZTogUkZDIDM5ODYsIFJGQyAxODA4LCBSRkMgMjM5NlxuXG4vLyBkZWZpbmUgdGhlc2UgaGVyZSBzbyBhdCBsZWFzdCB0aGV5IG9ubHkgaGF2ZSB0byBiZVxuLy8gY29tcGlsZWQgb25jZSBvbiB0aGUgZmlyc3QgbW9kdWxlIGxvYWQuXG52YXIgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaSxcbiAgICBwb3J0UGF0dGVybiA9IC86WzAtOV0qJC8sXG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gICAgc2ltcGxlUGF0aFBhdHRlcm4gPSAvXihcXC9cXC8/KD8hXFwvKVteXFw/XFxzXSopKFxcP1teXFxzXSopPyQvLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgcmVzZXJ2ZWQgZm9yIGRlbGltaXRpbmcgVVJMcy5cbiAgICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICAgIGRlbGltcyA9IFsnPCcsICc+JywgJ1wiJywgJ2AnLCAnICcsICdcXHInLCAnXFxuJywgJ1xcdCddLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbiAgICB1bndpc2UgPSBbJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJ10uY29uY2F0KGRlbGltcyksXG5cbiAgICAvLyBBbGxvd2VkIGJ5IFJGQ3MsIGJ1dCBjYXVzZSBvZiBYU1MgYXR0YWNrcy4gIEFsd2F5cyBlc2NhcGUgdGhlc2UuXG4gICAgYXV0b0VzY2FwZSA9IFsnXFwnJ10uY29uY2F0KHVud2lzZSksXG4gICAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgICAvLyBOb3RlIHRoYXQgYW55IGludmFsaWQgY2hhcnMgYXJlIGFsc28gaGFuZGxlZCwgYnV0IHRoZXNlXG4gICAgLy8gYXJlIHRoZSBvbmVzIHRoYXQgYXJlICpleHBlY3RlZCogdG8gYmUgc2Vlbiwgc28gd2UgZmFzdC1wYXRoXG4gICAgLy8gdGhlbS5cbiAgICBub25Ib3N0Q2hhcnMgPSBbJyUnLCAnLycsICc/JywgJzsnLCAnIyddLmNvbmNhdChhdXRvRXNjYXBlKSxcbiAgICBob3N0RW5kaW5nQ2hhcnMgPSBbJy8nLCAnPycsICcjJ10sXG4gICAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gICAgaG9zdG5hbWVQYXJ0UGF0dGVybiA9IC9eWythLXowLTlBLVpfLV17MCw2M30kLyxcbiAgICBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLyxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgICB1bnNhZmVQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IG5ldmVyIGhhdmUgYSBob3N0bmFtZS5cbiAgICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICAgIH0sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgYWx3YXlzIGNvbnRhaW4gYSAvLyBiaXQuXG4gICAgc2xhc2hlZFByb3RvY29sID0ge1xuICAgICAgJ2h0dHAnOiB0cnVlLFxuICAgICAgJ2h0dHBzJzogdHJ1ZSxcbiAgICAgICdmdHAnOiB0cnVlLFxuICAgICAgJ2dvcGhlcic6IHRydWUsXG4gICAgICAnZmlsZSc6IHRydWUsXG4gICAgICAnaHR0cDonOiB0cnVlLFxuICAgICAgJ2h0dHBzOic6IHRydWUsXG4gICAgICAnZnRwOic6IHRydWUsXG4gICAgICAnZ29waGVyOic6IHRydWUsXG4gICAgICAnZmlsZTonOiB0cnVlXG4gICAgfSxcbiAgICBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJyk7XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1dGlsLmlzT2JqZWN0KHVybCkgJiYgdXJsIGluc3RhbmNlb2YgVXJsKSByZXR1cm4gdXJsO1xuXG4gIHZhciB1ID0gbmV3IFVybDtcbiAgdS5wYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KTtcbiAgcmV0dXJuIHU7XG59XG5cblVybC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbih1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICghdXRpbC5pc1N0cmluZyh1cmwpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlBhcmFtZXRlciAndXJsJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgXCIgKyB0eXBlb2YgdXJsKTtcbiAgfVxuXG4gIC8vIENvcHkgY2hyb21lLCBJRSwgb3BlcmEgYmFja3NsYXNoLWhhbmRsaW5nIGJlaGF2aW9yLlxuICAvLyBCYWNrIHNsYXNoZXMgYmVmb3JlIHRoZSBxdWVyeSBzdHJpbmcgZ2V0IGNvbnZlcnRlZCB0byBmb3J3YXJkIHNsYXNoZXNcbiAgLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjU5MTZcbiAgdmFyIHF1ZXJ5SW5kZXggPSB1cmwuaW5kZXhPZignPycpLFxuICAgICAgc3BsaXR0ZXIgPVxuICAgICAgICAgIChxdWVyeUluZGV4ICE9PSAtMSAmJiBxdWVyeUluZGV4IDwgdXJsLmluZGV4T2YoJyMnKSkgPyAnPycgOiAnIycsXG4gICAgICB1U3BsaXQgPSB1cmwuc3BsaXQoc3BsaXR0ZXIpLFxuICAgICAgc2xhc2hSZWdleCA9IC9cXFxcL2c7XG4gIHVTcGxpdFswXSA9IHVTcGxpdFswXS5yZXBsYWNlKHNsYXNoUmVnZXgsICcvJyk7XG4gIHVybCA9IHVTcGxpdC5qb2luKHNwbGl0dGVyKTtcblxuICB2YXIgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICB0aGlzLnBhdGggPSByZXN0O1xuICAgICAgdGhpcy5ocmVmID0gcmVzdDtcbiAgICAgIHRoaXMucGF0aG5hbWUgPSBzaW1wbGVQYXRoWzFdO1xuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdO1xuICAgICAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnNlYXJjaC5zdWJzdHIoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaC5zdWJzdHIoMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICB2YXIgbG93ZXJQcm90byA9IHByb3RvLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wcm90b2NvbCA9IGxvd2VyUHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHZhciBzbGFzaGVzID0gcmVzdC5zdWJzdHIoMCwgMikgPT09ICcvLyc7XG4gICAgaWYgKHNsYXNoZXMgJiYgIShwcm90byAmJiBob3N0bGVzc1Byb3RvY29sW3Byb3RvXSkpIHtcbiAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgIHRoaXMuc2xhc2hlcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgICAgKHNsYXNoZXMgfHwgKHByb3RvICYmICFzbGFzaGVkUHJvdG9jb2xbcHJvdG9dKSkpIHtcblxuICAgIC8vIHRoZXJlJ3MgYSBob3N0bmFtZS5cbiAgICAvLyB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgLywgPywgOywgb3IgIyBlbmRzIHRoZSBob3N0LlxuICAgIC8vXG4gICAgLy8gSWYgdGhlcmUgaXMgYW4gQCBpbiB0aGUgaG9zdG5hbWUsIHRoZW4gbm9uLWhvc3QgY2hhcnMgKmFyZSogYWxsb3dlZFxuICAgIC8vIHRvIHRoZSBsZWZ0IG9mIHRoZSBsYXN0IEAgc2lnbiwgdW5sZXNzIHNvbWUgaG9zdC1lbmRpbmcgY2hhcmFjdGVyXG4gICAgLy8gY29tZXMgKmJlZm9yZSogdGhlIEAtc2lnbi5cbiAgICAvLyBVUkxzIGFyZSBvYm5veGlvdXMuXG4gICAgLy9cbiAgICAvLyBleDpcbiAgICAvLyBodHRwOi8vYUBiQGMvID0+IHVzZXI6YUBiIGhvc3Q6Y1xuICAgIC8vIGh0dHA6Ly9hQGI/QGMgPT4gdXNlcjphIGhvc3Q6YyBwYXRoOi8/QGNcblxuICAgIC8vIHYwLjEyIFRPRE8oaXNhYWNzKTogVGhpcyBpcyBub3QgcXVpdGUgaG93IENocm9tZSBkb2VzIHRoaW5ncy5cbiAgICAvLyBSZXZpZXcgb3VyIHRlc3QgY2FzZSBhZ2FpbnN0IGJyb3dzZXJzIG1vcmUgY29tcHJlaGVuc2l2ZWx5LlxuXG4gICAgLy8gZmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgYW55IGhvc3RFbmRpbmdDaGFyc1xuICAgIHZhciBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG5cbiAgICAvLyBhdCB0aGlzIHBvaW50LCBlaXRoZXIgd2UgaGF2ZSBhbiBleHBsaWNpdCBwb2ludCB3aGVyZSB0aGVcbiAgICAvLyBhdXRoIHBvcnRpb24gY2Fubm90IGdvIHBhc3QsIG9yIHRoZSBsYXN0IEAgY2hhciBpcyB0aGUgZGVjaWRlci5cbiAgICB2YXIgYXV0aCwgYXRTaWduO1xuICAgIGlmIChob3N0RW5kID09PSAtMSkge1xuICAgICAgLy8gYXRTaWduIGNhbiBiZSBhbnl3aGVyZS5cbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYXRTaWduIG11c3QgYmUgaW4gYXV0aCBwb3J0aW9uLlxuICAgICAgLy8gaHR0cDovL2FAYi9jQGQgPT4gaG9zdDpiIGF1dGg6YSBwYXRoOi9jQGRcbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnLCBob3N0RW5kKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgd2UgaGF2ZSBhIHBvcnRpb24gd2hpY2ggaXMgZGVmaW5pdGVseSB0aGUgYXV0aC5cbiAgICAvLyBQdWxsIHRoYXQgb2ZmLlxuICAgIGlmIChhdFNpZ24gIT09IC0xKSB7XG4gICAgICBhdXRoID0gcmVzdC5zbGljZSgwLCBhdFNpZ24pO1xuICAgICAgcmVzdCA9IHJlc3Quc2xpY2UoYXRTaWduICsgMSk7XG4gICAgICB0aGlzLmF1dGggPSBkZWNvZGVVUklDb21wb25lbnQoYXV0aCk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vbkhvc3RDaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKVxuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKVxuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgdGhpcy5ob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZShob3N0RW5kKTtcblxuICAgIC8vIHB1bGwgb3V0IHBvcnQuXG4gICAgdGhpcy5wYXJzZUhvc3QoKTtcblxuICAgIC8vIHdlJ3ZlIGluZGljYXRlZCB0aGF0IHRoZXJlIGlzIGEgaG9zdG5hbWUsXG4gICAgLy8gc28gZXZlbiBpZiBpdCdzIGVtcHR5LCBpdCBoYXMgdG8gYmUgcHJlc2VudC5cbiAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHRoaXMuaG9zdG5hbWVbMF0gPT09ICdbJyAmJlxuICAgICAgICB0aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGhvc3RwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcnQgPSBob3N0cGFydHNbaV07XG4gICAgICAgIGlmICghcGFydCkgY29udGludWU7XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gJyc7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGsgPSBwYXJ0Lmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2hhckNvZGVBdChqKSA+IDEyNykge1xuICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIG5vbi1BU0NJSSBjaGFyIHdpdGggYSB0ZW1wb3JhcnkgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIG1ha2Ugc3VyZSBzaXplIG9mIGhvc3RuYW1lIGlzIG5vdFxuICAgICAgICAgICAgICAvLyBicm9rZW4gYnkgcmVwbGFjaW5nIG5vbi1BU0NJSSBieSBub3RoaW5nXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSAnLycgKyBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBob3N0bmFtZXMgYXJlIGFsd2F5cyBsb3dlciBjYXNlLlxuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgLy8gSUROQSBTdXBwb3J0OiBSZXR1cm5zIGEgcHVueWNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIFwiZG9tYWluXCIuXG4gICAgICAvLyBJdCBvbmx5IGNvbnZlcnRzIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB0aGF0XG4gICAgICAvLyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4gICAgICAvLyB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQgYWxyZWFkeSBpcyBBU0NJSS1vbmx5LlxuICAgICAgdGhpcy5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkodGhpcy5ob3N0bmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIHAgPSB0aGlzLnBvcnQgPyAnOicgKyB0aGlzLnBvcnQgOiAnJztcbiAgICB2YXIgaCA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG4gICAgdGhpcy5ob3N0ID0gaCArIHA7XG4gICAgdGhpcy5ocmVmICs9IHRoaXMuaG9zdDtcblxuICAgIC8vIHN0cmlwIFsgYW5kIF0gZnJvbSB0aGUgaG9zdG5hbWVcbiAgICAvLyB0aGUgaG9zdCBmaWVsZCBzdGlsbCByZXRhaW5zIHRoZW0sIHRob3VnaFxuICAgIGlmIChpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnN1YnN0cigxLCB0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgaWYgKHJlc3RbMF0gIT09ICcvJykge1xuICAgICAgICByZXN0ID0gJy8nICsgcmVzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBub3cgcmVzdCBpcyBzZXQgdG8gdGhlIHBvc3QtaG9zdCBzdHVmZi5cbiAgLy8gY2hvcCBvZmYgYW55IGRlbGltIGNoYXJzLlxuICBpZiAoIXVuc2FmZVByb3RvY29sW2xvd2VyUHJvdG9dKSB7XG5cbiAgICAvLyBGaXJzdCwgbWFrZSAxMDAlIHN1cmUgdGhhdCBhbnkgXCJhdXRvRXNjYXBlXCIgY2hhcnMgZ2V0XG4gICAgLy8gZXNjYXBlZCwgZXZlbiBpZiBlbmNvZGVVUklDb21wb25lbnQgZG9lc24ndCB0aGluayB0aGV5XG4gICAgLy8gbmVlZCB0byBiZS5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGF1dG9Fc2NhcGUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYWUgPSBhdXRvRXNjYXBlW2ldO1xuICAgICAgaWYgKHJlc3QuaW5kZXhPZihhZSkgPT09IC0xKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIHZhciBlc2MgPSBlbmNvZGVVUklDb21wb25lbnQoYWUpO1xuICAgICAgaWYgKGVzYyA9PT0gYWUpIHtcbiAgICAgICAgZXNjID0gZXNjYXBlKGFlKTtcbiAgICAgIH1cbiAgICAgIHJlc3QgPSByZXN0LnNwbGl0KGFlKS5qb2luKGVzYyk7XG4gICAgfVxuICB9XG5cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgdGhpcy5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICB0aGlzLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5c3RyaW5nLnBhcnNlKHRoaXMucXVlcnkpO1xuICAgIH1cbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBxbSk7XG4gIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgIC8vIG5vIHF1ZXJ5IHN0cmluZywgYnV0IHBhcnNlUXVlcnlTdHJpbmcgc3RpbGwgcmVxdWVzdGVkXG4gICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICB0aGlzLnF1ZXJ5ID0ge307XG4gIH1cbiAgaWYgKHJlc3QpIHRoaXMucGF0aG5hbWUgPSByZXN0O1xuICBpZiAoc2xhc2hlZFByb3RvY29sW2xvd2VyUHJvdG9dICYmXG4gICAgICB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgaWYgKHRoaXMucGF0aG5hbWUgfHwgdGhpcy5zZWFyY2gpIHtcbiAgICB2YXIgcCA9IHRoaXMucGF0aG5hbWUgfHwgJyc7XG4gICAgdmFyIHMgPSB0aGlzLnNlYXJjaCB8fCAnJztcbiAgICB0aGlzLnBhdGggPSBwICsgcztcbiAgfVxuXG4gIC8vIGZpbmFsbHksIHJlY29uc3RydWN0IHRoZSBocmVmIGJhc2VkIG9uIHdoYXQgaGFzIGJlZW4gdmFsaWRhdGVkLlxuICB0aGlzLmhyZWYgPSB0aGlzLmZvcm1hdCgpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIGZvcm1hdCBhIHBhcnNlZCBvYmplY3QgaW50byBhIHVybCBzdHJpbmdcbmZ1bmN0aW9uIHVybEZvcm1hdChvYmopIHtcbiAgLy8gZW5zdXJlIGl0J3MgYW4gb2JqZWN0LCBhbmQgbm90IGEgc3RyaW5nIHVybC5cbiAgLy8gSWYgaXQncyBhbiBvYmosIHRoaXMgaXMgYSBuby1vcC5cbiAgLy8gdGhpcyB3YXksIHlvdSBjYW4gY2FsbCB1cmxfZm9ybWF0KCkgb24gc3RyaW5nc1xuICAvLyB0byBjbGVhbiB1cCBwb3RlbnRpYWxseSB3b25reSB1cmxzLlxuICBpZiAodXRpbC5pc1N0cmluZyhvYmopKSBvYmogPSB1cmxQYXJzZShvYmopO1xuICBpZiAoIShvYmogaW5zdGFuY2VvZiBVcmwpKSByZXR1cm4gVXJsLnByb3RvdHlwZS5mb3JtYXQuY2FsbChvYmopO1xuICByZXR1cm4gb2JqLmZvcm1hdCgpO1xufVxuXG5VcmwucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgYXV0aCA9IHRoaXMuYXV0aCB8fCAnJztcbiAgaWYgKGF1dGgpIHtcbiAgICBhdXRoID0gZW5jb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIGF1dGggPSBhdXRoLnJlcGxhY2UoLyUzQS9pLCAnOicpO1xuICAgIGF1dGggKz0gJ0AnO1xuICB9XG5cbiAgdmFyIHByb3RvY29sID0gdGhpcy5wcm90b2NvbCB8fCAnJyxcbiAgICAgIHBhdGhuYW1lID0gdGhpcy5wYXRobmFtZSB8fCAnJyxcbiAgICAgIGhhc2ggPSB0aGlzLmhhc2ggfHwgJycsXG4gICAgICBob3N0ID0gZmFsc2UsXG4gICAgICBxdWVyeSA9ICcnO1xuXG4gIGlmICh0aGlzLmhvc3QpIHtcbiAgICBob3N0ID0gYXV0aCArIHRoaXMuaG9zdDtcbiAgfSBlbHNlIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgaG9zdCA9IGF1dGggKyAodGhpcy5ob3N0bmFtZS5pbmRleE9mKCc6JykgPT09IC0xID9cbiAgICAgICAgdGhpcy5ob3N0bmFtZSA6XG4gICAgICAgICdbJyArIHRoaXMuaG9zdG5hbWUgKyAnXScpO1xuICAgIGlmICh0aGlzLnBvcnQpIHtcbiAgICAgIGhvc3QgKz0gJzonICsgdGhpcy5wb3J0O1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLnF1ZXJ5ICYmXG4gICAgICB1dGlsLmlzT2JqZWN0KHRoaXMucXVlcnkpICYmXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5KS5sZW5ndGgpIHtcbiAgICBxdWVyeSA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5KTtcbiAgfVxuXG4gIHZhciBzZWFyY2ggPSB0aGlzLnNlYXJjaCB8fCAocXVlcnkgJiYgKCc/JyArIHF1ZXJ5KSkgfHwgJyc7XG5cbiAgaWYgKHByb3RvY29sICYmIHByb3RvY29sLnN1YnN0cigtMSkgIT09ICc6JykgcHJvdG9jb2wgKz0gJzonO1xuXG4gIC8vIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAvLyB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICBpZiAodGhpcy5zbGFzaGVzIHx8XG4gICAgICAoIXByb3RvY29sIHx8IHNsYXNoZWRQcm90b2NvbFtwcm90b2NvbF0pICYmIGhvc3QgIT09IGZhbHNlKSB7XG4gICAgaG9zdCA9ICcvLycgKyAoaG9zdCB8fCAnJyk7XG4gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSBwYXRobmFtZSA9ICcvJyArIHBhdGhuYW1lO1xuICB9IGVsc2UgaWYgKCFob3N0KSB7XG4gICAgaG9zdCA9ICcnO1xuICB9XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5jaGFyQXQoMCkgIT09ICcjJykgaGFzaCA9ICcjJyArIGhhc2g7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoLmNoYXJBdCgwKSAhPT0gJz8nKSBzZWFyY2ggPSAnPycgKyBzZWFyY2g7XG5cbiAgcGF0aG5hbWUgPSBwYXRobmFtZS5yZXBsYWNlKC9bPyNdL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChtYXRjaCk7XG4gIH0pO1xuICBzZWFyY2ggPSBzZWFyY2gucmVwbGFjZSgnIycsICclMjMnKTtcblxuICByZXR1cm4gcHJvdG9jb2wgKyBob3N0ICsgcGF0aG5hbWUgKyBzZWFyY2ggKyBoYXNoO1xufTtcblxuZnVuY3Rpb24gdXJsUmVzb2x2ZShzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIHJldHVybiB1cmxQYXJzZShzb3VyY2UsIGZhbHNlLCB0cnVlKS5yZXNvbHZlKHJlbGF0aXZlKTtcbn1cblxuVXJsLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocmVsYXRpdmUpIHtcbiAgcmV0dXJuIHRoaXMucmVzb2x2ZU9iamVjdCh1cmxQYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpKS5mb3JtYXQoKTtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmVPYmplY3Qoc291cmNlLCByZWxhdGl2ZSkge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHJlbGF0aXZlO1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIGlmICh1dGlsLmlzU3RyaW5nKHJlbGF0aXZlKSkge1xuICAgIHZhciByZWwgPSBuZXcgVXJsKCk7XG4gICAgcmVsLnBhcnNlKHJlbGF0aXZlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgcmVsYXRpdmUgPSByZWw7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gbmV3IFVybCgpO1xuICB2YXIgdGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgZm9yICh2YXIgdGsgPSAwOyB0ayA8IHRrZXlzLmxlbmd0aDsgdGsrKykge1xuICAgIHZhciB0a2V5ID0gdGtleXNbdGtdO1xuICAgIHJlc3VsdFt0a2V5XSA9IHRoaXNbdGtleV07XG4gIH1cblxuICAvLyBoYXNoIGlzIGFsd2F5cyBvdmVycmlkZGVuLCBubyBtYXR0ZXIgd2hhdC5cbiAgLy8gZXZlbiBocmVmPVwiXCIgd2lsbCByZW1vdmUgaXQuXG4gIHJlc3VsdC5oYXNoID0gcmVsYXRpdmUuaGFzaDtcblxuICAvLyBpZiB0aGUgcmVsYXRpdmUgdXJsIGlzIGVtcHR5LCB0aGVuIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIGRvIGhlcmUuXG4gIGlmIChyZWxhdGl2ZS5ocmVmID09PSAnJykge1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBocmVmcyBsaWtlIC8vZm9vL2JhciBhbHdheXMgY3V0IHRvIHRoZSBwcm90b2NvbC5cbiAgaWYgKHJlbGF0aXZlLnNsYXNoZXMgJiYgIXJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgLy8gdGFrZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgcHJvdG9jb2wgZnJvbSByZWxhdGl2ZVxuICAgIHZhciBya2V5cyA9IE9iamVjdC5rZXlzKHJlbGF0aXZlKTtcbiAgICBmb3IgKHZhciByayA9IDA7IHJrIDwgcmtleXMubGVuZ3RoOyByaysrKSB7XG4gICAgICB2YXIgcmtleSA9IHJrZXlzW3JrXTtcbiAgICAgIGlmIChya2V5ICE9PSAncHJvdG9jb2wnKVxuICAgICAgICByZXN1bHRbcmtleV0gPSByZWxhdGl2ZVtya2V5XTtcbiAgICB9XG5cbiAgICAvL3VybFBhcnNlIGFwcGVuZHMgdHJhaWxpbmcgLyB0byB1cmxzIGxpa2UgaHR0cDovL3d3dy5leGFtcGxlLmNvbVxuICAgIGlmIChzbGFzaGVkUHJvdG9jb2xbcmVzdWx0LnByb3RvY29sXSAmJlxuICAgICAgICByZXN1bHQuaG9zdG5hbWUgJiYgIXJlc3VsdC5wYXRobmFtZSkge1xuICAgICAgcmVzdWx0LnBhdGggPSByZXN1bHQucGF0aG5hbWUgPSAnLyc7XG4gICAgfVxuXG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmIChyZWxhdGl2ZS5wcm90b2NvbCAmJiByZWxhdGl2ZS5wcm90b2NvbCAhPT0gcmVzdWx0LnByb3RvY29sKSB7XG4gICAgLy8gaWYgaXQncyBhIGtub3duIHVybCBwcm90b2NvbCwgdGhlbiBjaGFuZ2luZ1xuICAgIC8vIHRoZSBwcm90b2NvbCBkb2VzIHdlaXJkIHRoaW5nc1xuICAgIC8vIGZpcnN0LCBpZiBpdCdzIG5vdCBmaWxlOiwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBob3N0LFxuICAgIC8vIGFuZCBpZiB0aGVyZSB3YXMgYSBwYXRoXG4gICAgLy8gdG8gYmVnaW4gd2l0aCwgdGhlbiB3ZSBNVVNUIGhhdmUgYSBwYXRoLlxuICAgIC8vIGlmIGl0IGlzIGZpbGU6LCB0aGVuIHRoZSBob3N0IGlzIGRyb3BwZWQsXG4gICAgLy8gYmVjYXVzZSB0aGF0J3Mga25vd24gdG8gYmUgaG9zdGxlc3MuXG4gICAgLy8gYW55dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGFic29sdXRlLlxuICAgIGlmICghc2xhc2hlZFByb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgICBmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW3ZdO1xuICAgICAgICByZXN1bHRba10gPSByZWxhdGl2ZVtrXTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHQucHJvdG9jb2wgPSByZWxhdGl2ZS5wcm90b2NvbDtcbiAgICBpZiAoIXJlbGF0aXZlLmhvc3QgJiYgIWhvc3RsZXNzUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIgcmVsUGF0aCA9IChyZWxhdGl2ZS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICAgIHdoaWxlIChyZWxQYXRoLmxlbmd0aCAmJiAhKHJlbGF0aXZlLmhvc3QgPSByZWxQYXRoLnNoaWZ0KCkpKTtcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdCkgcmVsYXRpdmUuaG9zdCA9ICcnO1xuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgcmVsYXRpdmUuaG9zdG5hbWUgPSAnJztcbiAgICAgIGlmIChyZWxQYXRoWzBdICE9PSAnJykgcmVsUGF0aC51bnNoaWZ0KCcnKTtcbiAgICAgIGlmIChyZWxQYXRoLmxlbmd0aCA8IDIpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IChyZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSxcbiAgICAgIGlzUmVsQWJzID0gKFxuICAgICAgICAgIHJlbGF0aXZlLmhvc3QgfHxcbiAgICAgICAgICByZWxhdGl2ZS5wYXRobmFtZSAmJiByZWxhdGl2ZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJ1xuICAgICAgKSxcbiAgICAgIG11c3RFbmRBYnMgPSAoaXNSZWxBYnMgfHwgaXNTb3VyY2VBYnMgfHxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5ob3N0ICYmIHJlbGF0aXZlLnBhdGhuYW1lKSksXG4gICAgICByZW1vdmVBbGxEb3RzID0gbXVzdEVuZEFicyxcbiAgICAgIHNyY1BhdGggPSByZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICByZWxQYXRoID0gcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuc3BsaXQoJy8nKSB8fCBbXSxcbiAgICAgIHBzeWNob3RpYyA9IHJlc3VsdC5wcm90b2NvbCAmJiAhc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF07XG5cbiAgLy8gaWYgdGhlIHVybCBpcyBhIG5vbi1zbGFzaGVkIHVybCwgdGhlbiByZWxhdGl2ZVxuICAvLyBsaW5rcyBsaWtlIC4uLy4uIHNob3VsZCBiZSBhYmxlXG4gIC8vIHRvIGNyYXdsIHVwIHRvIHRoZSBob3N0bmFtZSwgYXMgd2VsbC4gIFRoaXMgaXMgc3RyYW5nZS5cbiAgLy8gcmVzdWx0LnByb3RvY29sIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGJ5IG5vdy5cbiAgLy8gTGF0ZXIgb24sIHB1dCB0aGUgZmlyc3QgcGF0aCBwYXJ0IGludG8gdGhlIGhvc3QgZmllbGQuXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAnJztcbiAgICByZXN1bHQucG9ydCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5ob3N0KSB7XG4gICAgICBpZiAoc3JjUGF0aFswXSA9PT0gJycpIHNyY1BhdGhbMF0gPSByZXN1bHQuaG9zdDtcbiAgICAgIGVsc2Ugc3JjUGF0aC51bnNoaWZ0KHJlc3VsdC5ob3N0KTtcbiAgICB9XG4gICAgcmVzdWx0Lmhvc3QgPSAnJztcbiAgICBpZiAocmVsYXRpdmUucHJvdG9jb2wpIHtcbiAgICAgIHJlbGF0aXZlLmhvc3RuYW1lID0gbnVsbDtcbiAgICAgIHJlbGF0aXZlLnBvcnQgPSBudWxsO1xuICAgICAgaWYgKHJlbGF0aXZlLmhvc3QpIHtcbiAgICAgICAgaWYgKHJlbFBhdGhbMF0gPT09ICcnKSByZWxQYXRoWzBdID0gcmVsYXRpdmUuaG9zdDtcbiAgICAgICAgZWxzZSByZWxQYXRoLnVuc2hpZnQocmVsYXRpdmUuaG9zdCk7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZS5ob3N0ID0gbnVsbDtcbiAgICB9XG4gICAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgJiYgKHJlbFBhdGhbMF0gPT09ICcnIHx8IHNyY1BhdGhbMF0gPT09ICcnKTtcbiAgfVxuXG4gIGlmIChpc1JlbEFicykge1xuICAgIC8vIGl0J3MgYWJzb2x1dGUuXG4gICAgcmVzdWx0Lmhvc3QgPSAocmVsYXRpdmUuaG9zdCB8fCByZWxhdGl2ZS5ob3N0ID09PSAnJykgP1xuICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdCA6IHJlc3VsdC5ob3N0O1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IChyZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0bmFtZSA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZS5ob3N0bmFtZSA6IHJlc3VsdC5ob3N0bmFtZTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHNyY1BhdGggPSByZWxQYXRoO1xuICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgZG90LWhhbmRsaW5nIGJlbG93LlxuICB9IGVsc2UgaWYgKHJlbFBhdGgubGVuZ3RoKSB7XG4gICAgLy8gaXQncyByZWxhdGl2ZVxuICAgIC8vIHRocm93IGF3YXkgdGhlIGV4aXN0aW5nIGZpbGUsIGFuZCB0YWtlIHRoZSBuZXcgcGF0aCBpbnN0ZWFkLlxuICAgIGlmICghc3JjUGF0aCkgc3JjUGF0aCA9IFtdO1xuICAgIHNyY1BhdGgucG9wKCk7XG4gICAgc3JjUGF0aCA9IHNyY1BhdGguY29uY2F0KHJlbFBhdGgpO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gIH0gZWxzZSBpZiAoIXV0aWwuaXNOdWxsT3JVbmRlZmluZWQocmVsYXRpdmUuc2VhcmNoKSkge1xuICAgIC8vIGp1c3QgcHVsbCBvdXQgdGhlIHNlYXJjaC5cbiAgICAvLyBsaWtlIGhyZWY9Jz9mb28nLlxuICAgIC8vIFB1dCB0aGlzIGFmdGVyIHRoZSBvdGhlciB0d28gY2FzZXMgYmVjYXVzZSBpdCBzaW1wbGlmaWVzIHRoZSBib29sZWFuc1xuICAgIGlmIChwc3ljaG90aWMpIHtcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gc3JjUGF0aC5zaGlmdCgpO1xuICAgICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgICAgLy90aGlzIGVzcGVjaWFsbHkgaGFwcGVucyBpbiBjYXNlcyBsaWtlXG4gICAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgICAgdmFyIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAoIXV0aWwuaXNOdWxsKHJlc3VsdC5wYXRobmFtZSkgfHwgIXV0aWwuaXNOdWxsKHJlc3VsdC5zZWFyY2gpKSB7XG4gICAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgLy8gbm8gcGF0aCBhdCBhbGwuICBlYXN5LlxuICAgIC8vIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgb3RoZXIgc3R1ZmYgYWJvdmUuXG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gJy8nICsgcmVzdWx0LnNlYXJjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaWYgYSB1cmwgRU5EcyBpbiAuIG9yIC4uLCB0aGVuIGl0IG11c3QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gIC8vIGhvd2V2ZXIsIGlmIGl0IGVuZHMgaW4gYW55dGhpbmcgZWxzZSBub24tc2xhc2h5LFxuICAvLyB0aGVuIGl0IG11c3QgTk9UIGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICB2YXIgbGFzdCA9IHNyY1BhdGguc2xpY2UoLTEpWzBdO1xuICB2YXIgaGFzVHJhaWxpbmdTbGFzaCA9IChcbiAgICAgIChyZXN1bHQuaG9zdCB8fCByZWxhdGl2ZS5ob3N0IHx8IHNyY1BhdGgubGVuZ3RoID4gMSkgJiZcbiAgICAgIChsYXN0ID09PSAnLicgfHwgbGFzdCA9PT0gJy4uJykgfHwgbGFzdCA9PT0gJycpO1xuXG4gIC8vIHN0cmlwIHNpbmdsZSBkb3RzLCByZXNvbHZlIGRvdWJsZSBkb3RzIHRvIHBhcmVudCBkaXJcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHNyY1BhdGgubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgIGxhc3QgPSBzcmNQYXRoW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmICghbXVzdEVuZEFicyAmJiAhcmVtb3ZlQWxsRG90cykge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgc3JjUGF0aC51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtdXN0RW5kQWJzICYmIHNyY1BhdGhbMF0gIT09ICcnICYmXG4gICAgICAoIXNyY1BhdGhbMF0gfHwgc3JjUGF0aFswXS5jaGFyQXQoMCkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2xhc2ggJiYgKHNyY1BhdGguam9pbignLycpLnN1YnN0cigtMSkgIT09ICcvJykpIHtcbiAgICBzcmNQYXRoLnB1c2goJycpO1xuICB9XG5cbiAgdmFyIGlzQWJzb2x1dGUgPSBzcmNQYXRoWzBdID09PSAnJyB8fFxuICAgICAgKHNyY1BhdGhbMF0gJiYgc3JjUGF0aFswXS5jaGFyQXQoMCkgPT09ICcvJyk7XG5cbiAgLy8gcHV0IHRoZSBob3N0IGJhY2tcbiAgaWYgKHBzeWNob3RpYykge1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlc3VsdC5ob3N0ID0gaXNBYnNvbHV0ZSA/ICcnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BhdGgubGVuZ3RoID8gc3JjUGF0aC5zaGlmdCgpIDogJyc7XG4gICAgLy9vY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgIC8vdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgdmFyIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID9cbiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICBpZiAoYXV0aEluSG9zdCkge1xuICAgICAgcmVzdWx0LmF1dGggPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICB9XG4gIH1cblxuICBtdXN0RW5kQWJzID0gbXVzdEVuZEFicyB8fCAocmVzdWx0Lmhvc3QgJiYgc3JjUGF0aC5sZW5ndGgpO1xuXG4gIGlmIChtdXN0RW5kQWJzICYmICFpc0Fic29sdXRlKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmICghc3JjUGF0aC5sZW5ndGgpIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucGF0aG5hbWUgPSBzcmNQYXRoLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8vdG8gc3VwcG9ydCByZXF1ZXN0Lmh0dHBcbiAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgIHJlc3VsdC5wYXRoID0gKHJlc3VsdC5wYXRobmFtZSA/IHJlc3VsdC5wYXRobmFtZSA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gIH1cbiAgcmVzdWx0LmF1dGggPSByZWxhdGl2ZS5hdXRoIHx8IHJlc3VsdC5hdXRoO1xuICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuVXJsLnByb3RvdHlwZS5wYXJzZUhvc3QgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gIHZhciBwb3J0ID0gcG9ydFBhdHRlcm4uZXhlYyhob3N0KTtcbiAgaWYgKHBvcnQpIHtcbiAgICBwb3J0ID0gcG9ydFswXTtcbiAgICBpZiAocG9ydCAhPT0gJzonKSB7XG4gICAgICB0aGlzLnBvcnQgPSBwb3J0LnN1YnN0cigxKTtcbiAgICB9XG4gICAgaG9zdCA9IGhvc3Quc3Vic3RyKDAsIGhvc3QubGVuZ3RoIC0gcG9ydC5sZW5ndGgpO1xuICB9XG4gIGlmIChob3N0KSB0aGlzLmhvc3RuYW1lID0gaG9zdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1N0cmluZzogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZihhcmcpID09PSAnc3RyaW5nJztcbiAgfSxcbiAgaXNPYmplY3Q6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xuICB9LFxuICBpc051bGw6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgPT09IG51bGw7XG4gIH0sXG4gIGlzTnVsbE9yVW5kZWZpbmVkOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09IG51bGw7XG4gIH1cbn07XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGV4dGVuZFxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBleHRlbmQoKSB7XG4gICAgdmFyIHRhcmdldCA9IHt9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldXG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldFxufVxuIl19 diff --git a/docs/API.md b/docs/API.md index 0123a73f..d7b11f2b 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1,10 +1,23 @@ ## sway -A library for simpler [Swagger](http://swagger.io/) integrations. +A library that simplifies [OpenAPI](https://www.openapis.org/) integrations. * [sway](#module_sway) + * [.ApiDefinition](#module_sway.ApiDefinition) + * [new ApiDefinition(definition, definitionRemotesResolved, definitionFullyResolved, references, options)](#new_module_sway.ApiDefinition_new) + * [.getOperation(idOrPathOrReq, [method])](#module_sway.ApiDefinition+getOperation) ⇒ [Operation](#module_sway.Operation) + * [.getOperations([path])](#module_sway.ApiDefinition+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) + * [.getOperationsByTag([tag])](#module_sway.ApiDefinition+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) + * [.getPath(pathOrReq)](#module_sway.ApiDefinition+getPath) ⇒ [Path](#module_sway.Path) + * [.getPaths()](#module_sway.ApiDefinition+getPaths) ⇒ [Array.<Path>](#module_sway.Path) + * [.registerFormat(name, validator)](#module_sway.ApiDefinition+registerFormat) + * [.registerFormatGenerator(name, formatGenerator)](#module_sway.ApiDefinition+registerFormatGenerator) + * [.registerValidator(validator)](#module_sway.ApiDefinition+registerValidator) + * [.unregisterFormat(name)](#module_sway.ApiDefinition+unregisterFormat) + * [.unregisterFormatGenerator(name)](#module_sway.ApiDefinition+unregisterFormatGenerator) + * [.validate()](#module_sway.ApiDefinition+validate) ⇒ [ValidationResults](#module_sway.ValidationResults) * [.CreateOptions](#module_sway.CreateOptions) : object * [.DocumentValidationFunction](#module_sway.DocumentValidationFunction) ⇒ [ValidationResults](#module_sway.ValidationResults) * [.Operation](#module_sway.Operation) @@ -23,7 +36,7 @@ A library for simpler [Swagger](http://swagger.io/) integrations. * [.ParameterValue](#module_sway.ParameterValue) * [new ParameterValue(parameterObject, raw)](#new_module_sway.ParameterValue_new) * [.Path](#module_sway.Path) - * [new Path(api, path, definition, definitionFullyResolved, pathToDefinition)](#new_module_sway.Path_new) + * [new Path(apiDefinition, path, definition, definitionFullyResolved, pathToDefinition)](#new_module_sway.Path_new) * [.getOperation(idOrMethod)](#module_sway.Path+getOperation) ⇒ [Array.<Operation>](#module_sway.Operation) * [.getOperations()](#module_sway.Path+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) * [.getOperationsByTag(tag)](#module_sway.Path+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) @@ -38,34 +51,215 @@ A library for simpler [Swagger](http://swagger.io/) integrations. * [.ResponseValidationFunction](#module_sway.ResponseValidationFunction) ⇒ [ValidationResults](#module_sway.ValidationResults) * [.ResponseValidationOptions](#module_sway.ResponseValidationOptions) : object * [.ServerResponseWrapper](#module_sway.ServerResponseWrapper) : object - * [.SwaggerApi](#module_sway.SwaggerApi) - * [new SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolved, references, options)](#new_module_sway.SwaggerApi_new) - * [.getOperation(idOrPathOrReq, [method])](#module_sway.SwaggerApi+getOperation) ⇒ [Operation](#module_sway.Operation) - * [.getOperations([path])](#module_sway.SwaggerApi+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) - * [.getOperationsByTag([tag])](#module_sway.SwaggerApi+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) - * [.getPath(pathOrReq)](#module_sway.SwaggerApi+getPath) ⇒ [Path](#module_sway.Path) - * [.getPaths()](#module_sway.SwaggerApi+getPaths) ⇒ [Array.<Path>](#module_sway.Path) - * [.registerFormat(name, validator)](#module_sway.SwaggerApi+registerFormat) - * [.registerFormatGenerator(name, formatGenerator)](#module_sway.SwaggerApi+registerFormatGenerator) - * [.registerValidator(validator)](#module_sway.SwaggerApi+registerValidator) - * [.unregisterFormat(name)](#module_sway.SwaggerApi+unregisterFormat) - * [.unregisterFormatGenerator(name)](#module_sway.SwaggerApi+unregisterFormatGenerator) - * [.validate()](#module_sway.SwaggerApi+validate) ⇒ [ValidationResults](#module_sway.ValidationResults) * [.ValidationEntry](#module_sway.ValidationEntry) : object * [.ValidationResults](#module_sway.ValidationResults) : object - * [.create(options)](#module_sway.create) ⇒ [Promise.<SwaggerApi>](#module_sway.SwaggerApi) + * [.create(options)](#module_sway.create) ⇒ [Promise.<ApiDefinition>](#module_sway.ApiDefinition) + + +### sway.ApiDefinition +**Kind**: static class of [sway](#module_sway) +**Properties** + +| Name | Type | Description | +| --- | --- | --- | +| customFormats | object | The key/value pair of custom formats *(The keys are the format name and the values are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* | +| customFormatGenerators | object | The key/value pair of custom format generators *(The keys are the format name and the values are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* | +| customValidators | [Array.<DocumentValidationFunction>](#module_sway.DocumentValidationFunction) | The array of custom validators | +| definition | object | The original OpenAPI definition | +| definitionRemotesResolved | object | The OpenAPI definition with only its remote references resolved *(This means all references to external/remote documents are replaced with its dereferenced value but all local references are left unresolved.)* | +| definitionFullyResolved | object | The OpenAPI definition with all of its resolvable references resolved *(This means that all resolvable references are replaced with their dereferenced value.)* | +| documentationUrl | string | The URL to the OpenAPI documentation | +| pathObjects | [Array.<Path>](#module_sway.Path) | The unique `Path` objects | +| options | object | The options passed to the constructor | +| references | object | The reference metadata *(See [JsonRefs~ResolvedRefDetails](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..ResolvedRefDetails))* | +| version | string | The OpenAPI version | + + +* [.ApiDefinition](#module_sway.ApiDefinition) + * [new ApiDefinition(definition, definitionRemotesResolved, definitionFullyResolved, references, options)](#new_module_sway.ApiDefinition_new) + * [.getOperation(idOrPathOrReq, [method])](#module_sway.ApiDefinition+getOperation) ⇒ [Operation](#module_sway.Operation) + * [.getOperations([path])](#module_sway.ApiDefinition+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) + * [.getOperationsByTag([tag])](#module_sway.ApiDefinition+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) + * [.getPath(pathOrReq)](#module_sway.ApiDefinition+getPath) ⇒ [Path](#module_sway.Path) + * [.getPaths()](#module_sway.ApiDefinition+getPaths) ⇒ [Array.<Path>](#module_sway.Path) + * [.registerFormat(name, validator)](#module_sway.ApiDefinition+registerFormat) + * [.registerFormatGenerator(name, formatGenerator)](#module_sway.ApiDefinition+registerFormatGenerator) + * [.registerValidator(validator)](#module_sway.ApiDefinition+registerValidator) + * [.unregisterFormat(name)](#module_sway.ApiDefinition+unregisterFormat) + * [.unregisterFormatGenerator(name)](#module_sway.ApiDefinition+unregisterFormatGenerator) + * [.validate()](#module_sway.ApiDefinition+validate) ⇒ [ValidationResults](#module_sway.ValidationResults) + + + +#### new ApiDefinition(definition, definitionRemotesResolved, definitionFullyResolved, references, options) +The OpenAPI Definition object. + +**Note:** Do not use directly. + +**Extra Properties:** Other than the documented properties, this object also exposes all properties of the +[OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object). + + +| Param | Type | Description | +| --- | --- | --- | +| definition | object | The original OpenAPI definition | +| definitionRemotesResolved | object | The OpenAPI definition with all of its remote references resolved | +| definitionFullyResolved | object | The OpenAPI definition with all of its references resolved | +| references | object | The location and resolution of the resolved references in the OpenAPI definition | +| options | object | The options passed to ApiDefinition.create | + + + +#### apiDefinition.getOperation(idOrPathOrReq, [method]) ⇒ [Operation](#module_sway.Operation) +Returns the operation for the given path and operation. + +**Note:** Below is the list of properties used when `reqOrPath` is an `http.ClientRequest` *(or equivalent)*: + + * `method` + * `originalUrl` + * `url` + +*(See: [https://nodejs.org/api/http.html#http_class_http_clientrequest](https://nodejs.org/api/http.html#http_class_http_clientrequest))* + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [Operation](#module_sway.Operation) - The `Operation` for the provided operation id, or path and method or `undefined` if +there is no operation for that operation id, or path and method combination + +| Param | Type | Description | +| --- | --- | --- | +| idOrPathOrReq | string | object | The OpenAPI opeartion id, path string or the http client request *(or equivalent)* | +| [method] | string | The OpenAPI operation method _(not used when providing an operation id)_ | + + + +#### apiDefinition.getOperations([path]) ⇒ [Array.<Operation>](#module_sway.Operation) +Returns all operations for the provided path or all operations in the API. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [Array.<Operation>](#module_sway.Operation) - All `Operation` objects for the provided path or all API operations + +| Param | Type | Description | +| --- | --- | --- | +| [path] | string | The OpenAPI path | + + + +#### apiDefinition.getOperationsByTag([tag]) ⇒ [Array.<Operation>](#module_sway.Operation) +Returns all operations for the provided tag. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [Array.<Operation>](#module_sway.Operation) - All `Operation` objects for the provided tag + +| Param | Type | Description | +| --- | --- | --- | +| [tag] | string | The OpenAPI tag | + + + +#### apiDefinition.getPath(pathOrReq) ⇒ [Path](#module_sway.Path) +Returns the path object for the given path or request. + +**Note:** Below is the list of properties used when `reqOrPath` is an `http.ClientRequest` *(or equivalent)*: + + * `originalUrl` + * `url` + +*(See: [https://nodejs.org/api/http.html#http_class_http_clientrequest](https://nodejs.org/api/http.html#http_class_http_clientrequest))* + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [Path](#module_sway.Path) - The corresponding `Path` object for the requested path or request + +| Param | Type | Description | +| --- | --- | --- | +| pathOrReq | string | object | The OpenAPI path string or the http client request *(or equivalent)* | + + + +#### apiDefinition.getPaths() ⇒ [Array.<Path>](#module_sway.Path) +Returns all path objects for the OpenAPI definition. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [Array.<Path>](#module_sway.Path) - The `Path` objects + + +#### apiDefinition.registerFormat(name, validator) +Registers a custom format. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) + +| Param | Type | Description | +| --- | --- | --- | +| name | string | The name of the format | +| validator | function | The format validator *(See [ZSchema Custom Format](https://github.com/zaggino/z-schema#register-a-custom-format))* | + + + +#### apiDefinition.registerFormatGenerator(name, formatGenerator) +Registers a custom format generator. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) + +| Param | Type | Description | +| --- | --- | --- | +| name | string | The name of the format | +| formatGenerator | function | The format generator *(See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* | + + + +#### apiDefinition.registerValidator(validator) +Registers a custom validator. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Throws**: + +- TypeError If the validator is not a function + + +| Param | Type | Description | +| --- | --- | --- | +| validator | [DocumentValidationFunction](#module_sway.DocumentValidationFunction) | The validator | + + + +#### apiDefinition.unregisterFormat(name) +Unregisters a custom format. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) + +| Param | Type | Description | +| --- | --- | --- | +| name | string | The name of the format | + + + +#### apiDefinition.unregisterFormatGenerator(name) +Unregisters a custom format generator. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) + +| Param | Type | Description | +| --- | --- | --- | +| name | string | The name of the format generator | + + + +#### apiDefinition.validate() ⇒ [ValidationResults](#module_sway.ValidationResults) +Performs validation of the OpenAPI definition. + +**Kind**: instance method of [ApiDefinition](#module_sway.ApiDefinition) +**Returns**: [ValidationResults](#module_sway.ValidationResults) - The validation results ### sway.CreateOptions : object -Options used when creating the `SwaggerApi`. +Options used when creating the `ApiDefinition`. **Kind**: static typedef of [sway](#module_sway) **Properties** | Name | Type | Description | | --- | --- | --- | -| definition | object | string | The Swagger definition location or structure | +| definition | object | string | The OpenAPI definition location or structure | | jsonRefs | object | *(See [JsonRefs~JsonRefsOptions](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..JsonRefsOptions))* | | customFormats | object | The key/value pair of custom formats *(The keys are the format name and the values are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* | | customFormatGenerators | object | The key/value pair of custom format generators *(The keys are the format name and the values are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* | @@ -74,14 +268,14 @@ Options used when creating the `SwaggerApi`. ### sway.DocumentValidationFunction ⇒ [ValidationResults](#module_sway.ValidationResults) -Function used for custom validation of Swagger documents +Function used for custom validation of OpenAPI documents **Kind**: static typedef of [sway](#module_sway) **Returns**: [ValidationResults](#module_sway.ValidationResults) - The validation results | Param | Type | Description | | --- | --- | --- | -| api | [SwaggerApi](#module_sway.SwaggerApi) | The Swagger API object | +| apiDefinition | [ApiDefinition](#module_sway.ApiDefinition) | The `ApiDefinition` object | @@ -114,12 +308,12 @@ Function used for custom validation of Swagger documents #### new Operation(pathObject, method, definition, definitionFullyResolved, pathToDefinition) -The Swagger Operation object. +The OpenAPI Operation object. **Note:** Do not use directly. -**Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - object. +**Extra Properties:** Other than the documented properties, this object also exposes all properties of the +[OpenAPI Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject). | Param | Type | Description | @@ -246,12 +440,12 @@ Validates the response. #### new Parameter(opOrPathObject, definition, definitionFullyResolved, pathToDefinition) -The Swagger Parameter object. +The OpenAPI Parameter object. **Note:** Do not use directly. -**Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition -object. +**Extra Properties:** Other than the documented properties, this object also exposes all properties of the +[OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject). | Param | Type | Description | @@ -334,7 +528,7 @@ Object representing a parameter value. | Name | Type | Description | | --- | --- | --- | -| api | [SwaggerApi](#module_sway.SwaggerApi) | The `SwaggerApi` object | +| apiDefinition | [ApiDefinition](#module_sway.ApiDefinition) | The `ApiDefinition` object | | definition | object | The path definition *(The raw path definition __after__ remote references were resolved)* | | definitionFullyResolved | object | The path definition with all of its resolvable references resolved | | operationObjects | [Array.<Operation>](#module_sway.Operation) | The `Operation` objects | @@ -346,7 +540,7 @@ Object representing a parameter value. * [.Path](#module_sway.Path) - * [new Path(api, path, definition, definitionFullyResolved, pathToDefinition)](#new_module_sway.Path_new) + * [new Path(apiDefinition, path, definition, definitionFullyResolved, pathToDefinition)](#new_module_sway.Path_new) * [.getOperation(idOrMethod)](#module_sway.Path+getOperation) ⇒ [Array.<Operation>](#module_sway.Operation) * [.getOperations()](#module_sway.Path+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) * [.getOperationsByTag(tag)](#module_sway.Path+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) @@ -354,18 +548,18 @@ Object representing a parameter value. -#### new Path(api, path, definition, definitionFullyResolved, pathToDefinition) +#### new Path(apiDefinition, path, definition, definitionFullyResolved, pathToDefinition) The Path object. **Note:** Do not use directly. **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - definition object. +[OpenAPI Path Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject). | Param | Type | Description | | --- | --- | --- | -| api | [SwaggerApi](#module_sway.SwaggerApi) | The `SwaggerApi` object | +| apiDefinition | [ApiDefinition](#module_sway.ApiDefinition) | The `ApiDefinition` object | | path | string | The path string | | definition | object | The path definition *(The raw path definition __after__ remote references were resolved)* | | definitionFullyResolved | object | The path definition with all of its resolvable references resolved | @@ -433,7 +627,7 @@ Request validation options. | Name | Type | Default | Description | | --- | --- | --- | --- | -| strictMode | boolean | object | false | Enablement of strict mode validation. If `strictMode` is a `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the key. Valid keys are `formData`, `header` and `query`. _(`body` and `path` are not necessary since `body` strict mode is possible via its schema and `path` is **always** required.)_ | +| strictMode | boolean | object | false | Enablement of strict mode validation. If `strictMode` is a `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI document for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject) and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the key. Valid keys are `formData`, `header` and `query`. _(`body` and `path` are not necessary since `body` strict mode is possible via its schema and `path` is **always** required.)_ | | customValidators | [RequestValidationFunction](#module_sway.RequestValidationFunction) | | The custom validators | @@ -461,12 +655,12 @@ Request validation options. #### new Response(operationObject, statusCode, definition, definitionFullyResolved, pathToDefinition) -The Swagger Response object. +The OpenAPI Response object. **Note:** Do not use directly. **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - definition object. +[OpenAPI Response Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject). | Param | Type | Description | @@ -532,7 +726,7 @@ Response validation options. | Name | Type | Default | Description | | --- | --- | --- | --- | -| strictMode | boolean | object | false | Enablement of strict mode validation. If `strictMode` is a `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the key. Valid keys are `header`. _(`body`, `query` and `path` are not necessary since `body` strict mode is possible via its schema and `path`, `query` do not matter for responses.)_ | +| strictMode | boolean | object | false | Enablement of strict mode validation. If `strictMode` is a `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI definition for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the key. Valid keys are `header`. _(`body`, `query` and `path` are not necessary since `body` strict mode is possible via its schema and `path`, `query` do not matter for responses.)_ | | customValidators | [RequestValidationFunction](#module_sway.RequestValidationFunction) | | The custom validators | @@ -554,200 +748,6 @@ information to perform response validation. | headers | object | | The response headers | | statusCode | number | string | default | The response status code | - - -### sway.SwaggerApi -**Kind**: static class of [sway](#module_sway) -**Properties** - -| Name | Type | Description | -| --- | --- | --- | -| customFormats | object | The key/value pair of custom formats *(The keys are the format name and the values are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* | -| customFormatGenerators | object | The key/value pair of custom format generators *(The keys are the format name and the values are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* | -| customValidators | [Array.<DocumentValidationFunction>](#module_sway.DocumentValidationFunction) | The array of custom validators | -| definition | object | The original Swagger definition | -| definitionRemotesResolved | object | The Swagger definition with only its remote references resolved *(This means all references to external/remote documents are replaced with its dereferenced value but all local references are left unresolved.)* | -| definitionFullyResolved | object | The Swagger definition with all of its resolvable references resolved *(This means that all resolvable references are replaced with their dereferenced value.)* | -| documentationUrl | string | The URL to the Swagger documentation | -| pathObjects | [Array.<Path>](#module_sway.Path) | The unique `Path` objects | -| options | object | The options passed to the constructor | -| references | object | The reference metadata *(See [JsonRefs~ResolvedRefDetails](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..ResolvedRefDetails))* | -| version | string | The Swagger API version | - - -* [.SwaggerApi](#module_sway.SwaggerApi) - * [new SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolved, references, options)](#new_module_sway.SwaggerApi_new) - * [.getOperation(idOrPathOrReq, [method])](#module_sway.SwaggerApi+getOperation) ⇒ [Operation](#module_sway.Operation) - * [.getOperations([path])](#module_sway.SwaggerApi+getOperations) ⇒ [Array.<Operation>](#module_sway.Operation) - * [.getOperationsByTag([tag])](#module_sway.SwaggerApi+getOperationsByTag) ⇒ [Array.<Operation>](#module_sway.Operation) - * [.getPath(pathOrReq)](#module_sway.SwaggerApi+getPath) ⇒ [Path](#module_sway.Path) - * [.getPaths()](#module_sway.SwaggerApi+getPaths) ⇒ [Array.<Path>](#module_sway.Path) - * [.registerFormat(name, validator)](#module_sway.SwaggerApi+registerFormat) - * [.registerFormatGenerator(name, formatGenerator)](#module_sway.SwaggerApi+registerFormatGenerator) - * [.registerValidator(validator)](#module_sway.SwaggerApi+registerValidator) - * [.unregisterFormat(name)](#module_sway.SwaggerApi+unregisterFormat) - * [.unregisterFormatGenerator(name)](#module_sway.SwaggerApi+unregisterFormatGenerator) - * [.validate()](#module_sway.SwaggerApi+validate) ⇒ [ValidationResults](#module_sway.ValidationResults) - - - -#### new SwaggerApi(definition, definitionRemotesResolved, definitionFullyResolved, references, options) -The Swagger API object. - -**Note:** Do not use directly. - -**Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition -object. - - -| Param | Type | Description | -| --- | --- | --- | -| definition | object | The original Swagger definition | -| definitionRemotesResolved | object | The Swagger definition with all of its remote references resolved | -| definitionFullyResolved | object | The Swagger definition with all of its references resolved | -| references | object | The location and resolution of the resolved references in the Swagger definition | -| options | object | The options passed to swaggerApi.create | - - - -#### swaggerApi.getOperation(idOrPathOrReq, [method]) ⇒ [Operation](#module_sway.Operation) -Returns the operation for the given path and operation. - -**Note:** Below is the list of properties used when `reqOrPath` is an `http.ClientRequest` *(or equivalent)*: - - * `method` - * `originalUrl` - * `url` - -*(See: [https://nodejs.org/api/http.html#http_class_http_clientrequest](https://nodejs.org/api/http.html#http_class_http_clientrequest))* - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [Operation](#module_sway.Operation) - The `Operation` for the provided operation id, or path and method or `undefined` if -there is no operation for that operation id, or path and method combination - -| Param | Type | Description | -| --- | --- | --- | -| idOrPathOrReq | string | object | The Swagger opeartion id, path string or the http client request *(or equivalent)* | -| [method] | string | The Swagger operation method _(not used when providing an operation id)_ | - - - -#### swaggerApi.getOperations([path]) ⇒ [Array.<Operation>](#module_sway.Operation) -Returns all operations for the provided path or all operations in the API. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [Array.<Operation>](#module_sway.Operation) - All `Operation` objects for the provided path or all API operations - -| Param | Type | Description | -| --- | --- | --- | -| [path] | string | The Swagger path | - - - -#### swaggerApi.getOperationsByTag([tag]) ⇒ [Array.<Operation>](#module_sway.Operation) -Returns all operations for the provided tag. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [Array.<Operation>](#module_sway.Operation) - All `Operation` objects for the provided tag - -| Param | Type | Description | -| --- | --- | --- | -| [tag] | string | The Swagger tag | - - - -#### swaggerApi.getPath(pathOrReq) ⇒ [Path](#module_sway.Path) -Returns the path object for the given path or request. - -**Note:** Below is the list of properties used when `reqOrPath` is an `http.ClientRequest` *(or equivalent)*: - - * `originalUrl` - * `url` - -*(See: [https://nodejs.org/api/http.html#http_class_http_clientrequest](https://nodejs.org/api/http.html#http_class_http_clientrequest))* - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [Path](#module_sway.Path) - The corresponding `Path` object for the requested path or request - -| Param | Type | Description | -| --- | --- | --- | -| pathOrReq | string | object | The Swagger path string or the http client request *(or equivalent)* | - - - -#### swaggerApi.getPaths() ⇒ [Array.<Path>](#module_sway.Path) -Returns all path objects for the Swagger API. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [Array.<Path>](#module_sway.Path) - The `Path` objects - - -#### swaggerApi.registerFormat(name, validator) -Registers a custom format. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) - -| Param | Type | Description | -| --- | --- | --- | -| name | string | The name of the format | -| validator | function | The format validator *(See [ZSchema Custom Format](https://github.com/zaggino/z-schema#register-a-custom-format))* | - - - -#### swaggerApi.registerFormatGenerator(name, formatGenerator) -Registers a custom format generator. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) - -| Param | Type | Description | -| --- | --- | --- | -| name | string | The name of the format | -| formatGenerator | function | The format generator *(See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* | - - - -#### swaggerApi.registerValidator(validator) -Registers a custom validator. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Throws**: - -- TypeError If the validator is not a function - - -| Param | Type | Description | -| --- | --- | --- | -| validator | [DocumentValidationFunction](#module_sway.DocumentValidationFunction) | The validator | - - - -#### swaggerApi.unregisterFormat(name) -Unregisters a custom format. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) - -| Param | Type | Description | -| --- | --- | --- | -| name | string | The name of the format | - - - -#### swaggerApi.unregisterFormatGenerator(name) -Unregisters a custom format generator. - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) - -| Param | Type | Description | -| --- | --- | --- | -| name | string | The name of the format generator | - - - -#### swaggerApi.validate() ⇒ [ValidationResults](#module_sway.ValidationResults) -Performs validation of the Swagger API document(s). - -**Kind**: instance method of [SwaggerApi](#module_sway.SwaggerApi) -**Returns**: [ValidationResults](#module_sway.ValidationResults) - The validation results ### sway.ValidationEntry : object @@ -787,11 +787,11 @@ Validation results object. -### sway.create(options) ⇒ [Promise.<SwaggerApi>](#module_sway.SwaggerApi) -Creates a SwaggerApi object from its Swagger definition(s). +### sway.create(options) ⇒ [Promise.<ApiDefinition>](#module_sway.ApiDefinition) +Creates an ApiDefinition object from the provided OpenAPI definition. **Kind**: static method of [sway](#module_sway) -**Returns**: [Promise.<SwaggerApi>](#module_sway.SwaggerApi) - The promise +**Returns**: [Promise.<ApiDefinition>](#module_sway.ApiDefinition) - The promise | Param | Type | Description | | --- | --- | --- | @@ -799,10 +799,12 @@ Creates a SwaggerApi object from its Swagger definition(s). **Example** ```js -SwaggerApi.create({definition: 'http://petstore.swagger.io/v2/swagger.yaml'}) - .then(function (api) { - console.log('Documentation URL: ', api.documentationUrl); - }, function (err) { - console.error(err.stack); - }); +Sway.create({ + definition: 'https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml' +}) +.then(function (apiDefinition) { + console.log('Documentation URL: ', api.documentationUrl); +}, function (err) { + console.error(err.stack); +}); ``` diff --git a/index.d.ts b/index.d.ts index d7afccc0..66d069b6 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,20 +1,20 @@ /** - * A library for simpler [Swagger](http://swagger.io/) integrations. + * A library that simplifies [OpenAPI](https://www.openapis.org/) integrations. */ declare module 'sway' { /** - * Creates a SwaggerApi object from its Swagger definition(s). + * Creates an ApiDefinition object from the provided OpenAPI definition. * @param options - The options for loading the definition(s) * @returns The promise */ - export function create(options: CreateOptions): Promise; + export function create(options: CreateOptions): Promise; /** - * Options used when creating the `SwaggerApi`. + * Options used when creating the `ApiDefinition`. */ interface CreateOptions { /** - * The Swagger definition location or structure + * The OpenAPI definition location or structure */ definition: object | string; /** @@ -38,11 +38,11 @@ declare module 'sway' { } /** - * Function used for custom validation of Swagger documents - * @param api - The Swagger API object + * Function used for custom validation of OpenAPI documents + * @param apiDefinition - The `ApiDefinition` object * @returns The validation results */ - export type DocumentValidationFunction = (api: SwaggerApi)=>ValidationResults; + export type DocumentValidationFunction = (apiDefinition: ApiDefinition)=>ValidationResults; /** * Request validation function. @@ -60,9 +60,9 @@ declare module 'sway' { interface RequestValidationOptions { /** * Enablement of strict mode validation. If `strictMode` is a - * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document + * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI document * for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the - * [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject) * and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the * key. Valid keys are `formData`, `header` and `query`. _(`body` and `path` are not necessary since `body` strict * mode is possible via its schema and `path` is **always** required.)_ @@ -88,9 +88,9 @@ declare module 'sway' { interface ResponseValidationOptions { /** * Enablement of strict mode validation. If `strictMode` is a - * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document + * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI definition * for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the - * [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) * and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the * key. Valid keys are `header`. _(`body`, `query` and `path` are not necessary since `body` strict mode is possible * via its schema and `path`, `query` do not matter for responses.)_ @@ -190,19 +190,19 @@ declare module 'sway' { warnings: any[]; } - class SwaggerApi { + class ApiDefinition { /** - * The Swagger API object. + * The OpenAPI Definition object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. - * @param definition - The original Swagger definition - * @param definitionRemotesResolved - The Swagger definition with all of its remote references resolved - * @param definitionFullyResolved - The Swagger definition with all of its references resolved - * @param references - The location and resolution of the resolved references in the Swagger definition - * @param options - The options passed to swaggerApi.create + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object). + * @param definition - The original OpenAPI definition + * @param definitionRemotesResolved - The OpenAPI definition with all of its remote references resolved + * @param definitionFullyResolved - The OpenAPI definition with all of its references resolved + * @param references - The location and resolution of the resolved references in the OpenAPI definition + * @param options - The options passed to ApiDefinition.create */ constructor(definition: object, definitionRemotesResolved: object, definitionFullyResolved: object, references: object, options: object); @@ -216,9 +216,9 @@ declare module 'sway' { * * `url` * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* - * @param idOrPathOrReq - The Swagger opeartion id, path string or the http client request *(or + * @param idOrPathOrReq - The OpenAPI opeartion id, path string or the http client request *(or * equivalent)* - * @param method - The Swagger operation method _(not used when providing an operation id)_ + * @param method - The OpenAPI operation method _(not used when providing an operation id)_ * @returns The `Operation` for the provided operation id, or path and method or `undefined` if * there is no operation for that operation id, or path and method combination */ @@ -226,14 +226,14 @@ declare module 'sway' { /** * Returns all operations for the provided path or all operations in the API. - * @param path - The Swagger path + * @param path - The OpenAPI path * @returns All `Operation` objects for the provided path or all API operations */ getOperations(path?: string): any[]; /** * Returns all operations for the provided tag. - * @param tag - The Swagger tag + * @param tag - The OpenAPI tag * @returns All `Operation` objects for the provided tag */ getOperationsByTag(tag?: string): any[]; @@ -247,13 +247,13 @@ declare module 'sway' { * * `url` * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* - * @param pathOrReq - The Swagger path string or the http client request *(or equivalent)* + * @param pathOrReq - The OpenAPI path string or the http client request *(or equivalent)* * @returns The corresponding `Path` object for the requested path or request */ getPath(pathOrReq: string | object): Path; /** - * Returns all path objects for the Swagger API. + * Returns all path objects for the OpenAPI definition. * @returns The `Path` objects */ getPaths(): any[]; @@ -292,7 +292,7 @@ declare module 'sway' { registerValidator(validator: DocumentValidationFunction): void; /** - * Performs validation of the Swagger API document(s). + * Performs validation of the OpenAPI definition. * @returns The validation results */ validate(): ValidationResults; @@ -301,12 +301,12 @@ declare module 'sway' { class Operation { /** - * The Swagger Operation object. + * The OpenAPI Operation object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject). * @param pathObject - The Path object * @param method - The operation method * @param definition - The operation definition *(The raw operation definition __after__ remote references were @@ -400,12 +400,12 @@ declare module 'sway' { class Parameter { /** - * The Swagger Parameter object. + * The OpenAPI Parameter object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject). * @param opOrPathObject - The `Operation` or `Path` object * @param definition - The parameter definition *(The raw parameter definition __after__ remote references were * resolved)* @@ -452,15 +452,15 @@ declare module 'sway' { * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. - * @param api - The `SwaggerApi` object + * [OpenAPI Path Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject). + * @param apiDefinition - The `ApiDefinition` object * @param path - The path string * @param definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @param definitionFullyResolved - The path definition with all of its resolvable references resolved * @param pathToDefinition - The path segments to the path definition */ - constructor(api: SwaggerApi, path: string, definition: object, definitionFullyResolved: object, pathToDefinition: string[]); + constructor(apiDefinition: ApiDefinition, path: string, definition: object, definitionFullyResolved: object, pathToDefinition: string[]); /** * Return the operation for this path and operation id or method. @@ -493,12 +493,12 @@ declare module 'sway' { class Response { /** - * The Swagger Response object. + * The OpenAPI Response object. * * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Response Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject). * @param operationObject - The `Operation` object * @param statusCode - The status code * @param definition - The response definition *(The raw response definition __after__ remote references were diff --git a/index.js b/index.js index d8762fae..0505686b 100644 --- a/index.js +++ b/index.js @@ -27,7 +27,7 @@ var _ = require('lodash'); var helpers = require('./lib/helpers'); var JsonRefs = require('json-refs'); -var SwaggerApi = require('./lib/types/api'); +var ApiDefinition = require('./lib/types/api-definition'); var YAML = require('js-yaml'); // Load promises polyfill if necessary @@ -37,25 +37,27 @@ if (typeof Promise === 'undefined') { } /** - * A library for simpler [Swagger](http://swagger.io/) integrations. + * A library that simplifies [OpenAPI](https://www.openapis.org/) integrations. * * @module sway */ /** - * Creates a SwaggerApi object from its Swagger definition(s). + * Creates an ApiDefinition object from the provided OpenAPI definition. * * @param {module:sway.CreateOptions} options - The options for loading the definition(s) * - * @returns {Promise} The promise + * @returns {Promise} The promise * * @example - * SwaggerApi.create({definition: 'http://petstore.swagger.io/v2/swagger.yaml'}) - * .then(function (api) { - * console.log('Documentation URL: ', api.documentationUrl); - * }, function (err) { - * console.error(err.stack); - * }); + * Sway.create({ + * definition: 'https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml' + * }) + * .then(function (apiDefinition) { + * console.log('Documentation URL: ', api.documentationUrl); + * }, function (err) { + * console.error(err.stack); + * }); */ module.exports.create = function (options) { var allTasks = Promise.resolve(); @@ -138,18 +140,18 @@ module.exports.create = function (options) { }); return { - // The original Swagger definition + // The original OpenAPI definition definition: _.isString(cOptions.definition) ? remoteResults.value : cOptions.definition, - // The original Swagger definition with its remote references resolved + // The original OpenAPI definition with its remote references resolved definitionRemotesResolved: remoteResults.resolved, - // The original Swagger definition with all its references resolved + // The original OpenAPI definition with all its references resolved definitionFullyResolved: results.resolved, // Merge the local reference details with the remote reference details refs: results.refs } }); }) - // Process the Swagger document and return the API + // Process the OpenAPI document and return an ApiDefinition .then(function (results) { // We need to remove all circular objects as z-schema does not work with them: // https://github.com/zaggino/z-schema/issues/137 @@ -158,7 +160,7 @@ module.exports.create = function (options) { helpers.removeCirculars(results.definitionFullyResolved); // Create object model - return new SwaggerApi(results.definition, + return new ApiDefinition(results.definition, results.definitionRemotesResolved, results.definitionFullyResolved, results.refs, diff --git a/lib/helpers.js b/lib/helpers.js index 80bd2f9b..32c585cb 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -60,7 +60,7 @@ var dateTimeRegExp = new RegExp( var collectionFormats = [undefined, 'csv', 'multi', 'pipes', 'ssv', 'tsv']; var jsonMocker; var jsonSchemaValidator = createJSONValidator(); -// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#parameter-object +// https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject var parameterSchemaProperties = [ 'allowEmptyValue', 'default', @@ -181,9 +181,9 @@ function normalizeError (obj) { } /** - * Helper method to take a Swagger parameter definition and compute its schema. + * Helper method to take an OpenAPI Parameter Object definition and compute its schema. * - * For non-body Swagger parameters, the definition itself is not suitable as a JSON Schema so we must compute it. + * For non-body OpenAPI parameters, the definition itself is not suitable as a JSON Schema so we must compute it. * * @param {object} paramDef - The parameter definition * @@ -462,7 +462,7 @@ module.exports.parameterLocations = ['body', 'formData', 'header', 'path', 'quer * Process validators. * * @param {object|module:Sway~ServerResponseWrapper} target - The thing being validated - * @param {module:Sway~SwaggerApi|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ + * @param {module:Sway~ApiDefinition|module:Sway~Operation|module:Sway~Response} caller - The object requesting validation _(can be `undefined`)_ * @param {module:Sway~DocumentValidationFunction[]|module:Sway~RequestValidationFunction[]|module:Sway~ResposeValidationFunction[]} validators - The validators * @param {module:Sway~ValidationResults} results - The cumulative validation results */ diff --git a/lib/typedefs.js b/lib/typedefs.js index 9e57a9e7..bbb2630e 100644 --- a/lib/typedefs.js +++ b/lib/typedefs.js @@ -3,11 +3,11 @@ */ /** - * Options used when creating the `SwaggerApi`. + * Options used when creating the `ApiDefinition`. * * @typedef {object} CreateOptions * - * @property {object|string} definition - The Swagger definition location or structure + * @property {object|string} definition - The OpenAPI definition location or structure * @property {object} [jsonRefs] - *(See [JsonRefs~JsonRefsOptions](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..JsonRefsOptions))* * @property {object} [customFormats] - The key/value pair of custom formats *(The keys are the format name and the * values are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* @@ -19,11 +19,11 @@ */ /** - * Function used for custom validation of Swagger documents + * Function used for custom validation of OpenAPI documents * * @typedef {function} DocumentValidationFunction * - * @param {module:sway.SwaggerApi} api - The Swagger API object + * @param {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {module:sway.ValidationResults} The validation results * @@ -51,9 +51,9 @@ * @typedef {object} RequestValidationOptions * * @property {boolean|object} [strictMode=false] - Enablement of strict mode validation. If `strictMode` is a - * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document + * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI document * for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the - * [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject) * and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the * key. Valid keys are `formData`, `header` and `query`. _(`body` and `path` are not necessary since `body` strict * mode is possible via its schema and `path` is **always** required.)_ @@ -81,9 +81,9 @@ * @typedef {object} ResponseValidationOptions * * @property {boolean|object} [strictMode=false] - Enablement of strict mode validation. If `strictMode` is a - * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the Swagger document + * `boolean` and is `true`, all form fields, headers and query parameters **must** be defined in the OpenAPI definition * for this operation. If `strictMode` is an `object`, the keys correspond to the `in` property values of the - * [Swagger Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject) * and its value is a `boolean` that when `true` turns on strict mode validation for the request location matching the * key. Valid keys are `header`. _(`body`, `query` and `path` are not necessary since `body` strict mode is possible * via its schema and `path`, `query` do not matter for responses.)_ diff --git a/lib/types/api.js b/lib/types/api-definition.js similarity index 81% rename from lib/types/api.js rename to lib/types/api-definition.js index dca973f7..de6f76df 100644 --- a/lib/types/api.js +++ b/lib/types/api-definition.js @@ -32,45 +32,45 @@ var Path = require('./path'); var validators = require('../validation/validators'); /** - * The Swagger API object. + * The OpenAPI Definition object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object). * - * @param {object} definition - The original Swagger definition - * @param {object} definitionRemotesResolved - The Swagger definition with all of its remote references resolved - * @param {object} definitionFullyResolved - The Swagger definition with all of its references resolved - * @param {object} references - The location and resolution of the resolved references in the Swagger definition - * @param {object} options - The options passed to swaggerApi.create + * @param {object} definition - The original OpenAPI definition + * @param {object} definitionRemotesResolved - The OpenAPI definition with all of its remote references resolved + * @param {object} definitionFullyResolved - The OpenAPI definition with all of its references resolved + * @param {object} references - The location and resolution of the resolved references in the OpenAPI definition + * @param {object} options - The options passed to ApiDefinition.create * * @property {object} customFormats - The key/value pair of custom formats *(The keys are the format name and the values * are async functions. See [ZSchema Custom Formats](https://github.com/zaggino/z-schema#register-a-custom-format))* * @property {object} customFormatGenerators - The key/value pair of custom format generators *(The keys are the format name and the values * are functions. See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* * @property {module:sway.DocumentValidationFunction[]} customValidators - The array of custom validators - * @property {object} definition - The original Swagger definition - * @property {object} definitionRemotesResolved - The Swagger definition with only its remote references resolved *(This + * @property {object} definition - The original OpenAPI definition + * @property {object} definitionRemotesResolved - The OpenAPI definition with only its remote references resolved *(This * means all references to external/remote documents are replaced with its dereferenced value but all local references * are left unresolved.)* - * @property {object} definitionFullyResolved - The Swagger definition with all of its resolvable references resolved + * @property {object} definitionFullyResolved - The OpenAPI definition with all of its resolvable references resolved * *(This means that all resolvable references are replaced with their dereferenced value.)* - * @property {string} documentationUrl - The URL to the Swagger documentation + * @property {string} documentationUrl - The URL to the OpenAPI documentation * @property {module:sway.Path[]} pathObjects - The unique `Path` objects * @property {object} options - The options passed to the constructor * @property {object} references - The reference metadata *(See [JsonRefs~ResolvedRefDetails](https://github.com/whitlockjc/json-refs/blob/master/docs/API.md#module_JsonRefs..ResolvedRefDetails))* - * - * @property {string} version - The Swagger API version + * @property {string} version - The OpenAPI version * * @constructor * * @memberof module:sway */ -function SwaggerApi (definition, definitionRemotesResolved, definitionFullyResolved, references, options) { +function ApiDefinition (definition, definitionRemotesResolved, definitionFullyResolved, references, options) { var that = this; - debug('Creating SwaggerApi from %s', _.isString(options.definition) ? options.definition : 'the provided document'); + debug('Creating ApiDefinition from %s', + _.isString(options.definition) ? options.definition : 'the provided OpenAPI definition'); // Assign this so other object can use it this._debug = debug; @@ -87,17 +87,17 @@ function SwaggerApi (definition, definitionRemotesResolved, definitionFullyResol this.references = references; this.version = '2.0'; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Object definition _.assign(this, definition); // Register custom formats - _.each(options.customFormats, _.bind(SwaggerApi.prototype.registerFormat, this)); + _.each(options.customFormats, _.bind(ApiDefinition.prototype.registerFormat, this)); // Register custom formats - _.each(options.customFormatGenerators, _.bind(SwaggerApi.prototype.registerFormatGenerator, this)); + _.each(options.customFormatGenerators, _.bind(ApiDefinition.prototype.registerFormatGenerator, this)); // Register custom validators - _.each(options.customValidators, _.bind(SwaggerApi.prototype.registerValidator, this)); + _.each(options.customValidators, _.bind(ApiDefinition.prototype.registerValidator, this)); debug(' Paths:'); @@ -122,14 +122,14 @@ function SwaggerApi (definition, definitionRemotesResolved, definitionFullyResol * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} idOrPathOrReq - The Swagger opeartion id, path string or the http client request *(or + * @param {string|object} idOrPathOrReq - The OpenAPI opeartion id, path string or the http client request *(or * equivalent)* - * @param {string} [method] - The Swagger operation method _(not used when providing an operation id)_ + * @param {string} [method] - The OpenAPI operation method _(not used when providing an operation id)_ * * @returns {module:sway.Operation} The `Operation` for the provided operation id, or path and method or `undefined` if * there is no operation for that operation id, or path and method combination */ -SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { +ApiDefinition.prototype.getOperation = function (idOrPathOrReq, method) { var pathObject; var operation; @@ -157,11 +157,11 @@ SwaggerApi.prototype.getOperation = function (idOrPathOrReq, method) { /** * Returns all operations for the provided path or all operations in the API. * - * @param {string} [path] - The Swagger path + * @param {string} [path] - The OpenAPI path * * @returns {module:sway.Operation[]} All `Operation` objects for the provided path or all API operations */ -SwaggerApi.prototype.getOperations = function (path) { +ApiDefinition.prototype.getOperations = function (path) { var operations = []; var pathObject; @@ -183,11 +183,11 @@ SwaggerApi.prototype.getOperations = function (path) { /** * Returns all operations for the provided tag. * - * @param {string} [tag] - The Swagger tag + * @param {string} [tag] - The OpenAPI tag * * @returns {module:sway.Operation[]} All `Operation` objects for the provided tag */ -SwaggerApi.prototype.getOperationsByTag = function (tag) { +ApiDefinition.prototype.getOperationsByTag = function (tag) { return _.reduce(this.pathObjects, function (operations, pathObject) { operations.push.apply(operations, pathObject.getOperationsByTag(tag)); @@ -205,11 +205,11 @@ SwaggerApi.prototype.getOperationsByTag = function (tag) { * * *(See: {@link https://nodejs.org/api/http.html#http_class_http_clientrequest})* * - * @param {string|object} pathOrReq - The Swagger path string or the http client request *(or equivalent)* + * @param {string|object} pathOrReq - The OpenAPI path string or the http client request *(or equivalent)* * * @returns {module:sway.Path} The corresponding `Path` object for the requested path or request */ -SwaggerApi.prototype.getPath = function (pathOrReq) { +ApiDefinition.prototype.getPath = function (pathOrReq) { var lastIndex = -1; var nextIndex = -1; var matches; @@ -275,11 +275,11 @@ SwaggerApi.prototype.getPath = function (pathOrReq) { }; /** - * Returns all path objects for the Swagger API. + * Returns all path objects for the OpenAPI definition. * * @returns {module:sway.Path[]} The `Path` objects */ -SwaggerApi.prototype.getPaths = function () { +ApiDefinition.prototype.getPaths = function () { return this.pathObjects; }; @@ -289,7 +289,7 @@ SwaggerApi.prototype.getPaths = function () { * @param {string} name - The name of the format * @param {function} validator - The format validator *(See [ZSchema Custom Format](https://github.com/zaggino/z-schema#register-a-custom-format))* */ -SwaggerApi.prototype.registerFormat = function (name, validator) { +ApiDefinition.prototype.registerFormat = function (name, validator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -311,7 +311,7 @@ SwaggerApi.prototype.registerFormat = function (name, validator) { * @param {string} name - The name of the format * @param {function} formatGenerator - The format generator *(See [json-schema-mocker Custom Format](https://github.com/json-schema-faker/json-schema-faker#custom-formats))* */ -SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) { +ApiDefinition.prototype.registerFormatGenerator = function (name, formatGenerator) { if (_.isUndefined(name)) { throw new TypeError('name is required'); } else if (!_.isString(name)) { @@ -332,7 +332,7 @@ SwaggerApi.prototype.registerFormatGenerator = function (name, formatGenerator) * * @param {string} name - The name of the format */ -SwaggerApi.prototype.unregisterFormat = function (name) { +ApiDefinition.prototype.unregisterFormat = function (name) { if (_.isString(name)) { delete this.customFormats[name]; @@ -345,7 +345,7 @@ SwaggerApi.prototype.unregisterFormat = function (name) { * * @param {string} name - The name of the format generator */ -SwaggerApi.prototype.unregisterFormatGenerator = function (name) { +ApiDefinition.prototype.unregisterFormatGenerator = function (name) { if (_.isString(name)) { delete this.customFormatGenerators[name]; @@ -360,7 +360,7 @@ SwaggerApi.prototype.unregisterFormatGenerator = function (name) { * * @throws {TypeError} If the validator is not a function */ -SwaggerApi.prototype.registerValidator = function (validator) { +ApiDefinition.prototype.registerValidator = function (validator) { if (_.isUndefined(validator)) { throw new TypeError('validator is required'); } else if (!_.isFunction(validator)) { @@ -371,11 +371,11 @@ SwaggerApi.prototype.registerValidator = function (validator) { }; /** - * Performs validation of the Swagger API document(s). + * Performs validation of the OpenAPI definition. * * @returns {module:sway.ValidationResults} The validation results */ -SwaggerApi.prototype.validate = function () { +ApiDefinition.prototype.validate = function () { var results = { errors: [], warnings: [] @@ -396,4 +396,4 @@ SwaggerApi.prototype.validate = function () { return results; }; -module.exports = SwaggerApi; +module.exports = ApiDefinition; diff --git a/lib/types/operation.js b/lib/types/operation.js index 646b53f0..14ebaaaa 100644 --- a/lib/types/operation.js +++ b/lib/types/operation.js @@ -31,12 +31,12 @@ var Response = require('./response'); var helpers = require('../helpers'); /** - * The Swagger Operation object. + * The OpenAPI Operation object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject). * * @param {module:sway.Path} pathObject - The Path object * @param {string} method - The operation method @@ -64,20 +64,20 @@ function Operation (pathObject, method, definition, definitionFullyResolved, pat var that = this; // Assign local properties - this.consumes = definitionFullyResolved.consumes || pathObject.api.consumes || []; + this.consumes = definitionFullyResolved.consumes || pathObject.apiDefinition.consumes || []; this.definition = _.cloneDeep(definition); // Clone so we do not alter the original this.definitionFullyResolved = _.cloneDeep(definitionFullyResolved); // Clone so we do not alter the original this.method = method; this.parameterObjects = []; // Computed below this.pathObject = pathObject; this.pathToDefinition = pathToDefinition; - this.produces = definitionFullyResolved.produces || pathObject.api.produces || []; + this.produces = definitionFullyResolved.produces || pathObject.apiDefinition.produces || []; this.ptr = JsonRefs.pathToPtr(pathToDefinition); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Operation Object definition _.assign(this, definitionFullyResolved); - this._debug = this.pathObject.api._debug; + this._debug = this.pathObject.apiDefinition._debug; // Add the Parameter objects from the Path object that were not redefined in the operation definition this.parameterObjects = _.map(pathObject.parameterObjects, function (parameterObject) { @@ -100,7 +100,10 @@ function Operation (pathObject, method, definition, definitionFullyResolved, pat var key = paramDef.in + ':' + paramDef.name; var seenIndex = seenParameters.indexOf(key); var pPath = pathToDefinition.concat(['parameters', index.toString()]); - var parameterObject = new Parameter(that, _.get(pathObject.api.definitionRemotesResolved, pPath), paramDef, pPath); + var parameterObject = new Parameter(that, + _.get(pathObject.apiDefinition.definitionRemotesResolved, pPath), + paramDef, + pPath); if (seenIndex > -1) { that.parameterObjects[seenIndex] = parameterObject; @@ -125,7 +128,7 @@ function Operation (pathObject, method, definition, definitionFullyResolved, pat return new Response(that, code, - _.get(that.pathObject.api.definitionRemotesResolved, rPath), + _.get(that.pathObject.apiDefinition.definitionRemotesResolved, rPath), responseDef, rPath); }); @@ -135,12 +138,12 @@ function Operation (pathObject, method, definition, definitionFullyResolved, pat // Bring in the security definitions for easier access // Override global security with locally defined - var security = this.security || pathObject.api.definitionFullyResolved.security; + var security = this.security || pathObject.apiDefinition.definitionFullyResolved.security; this.securityDefinitions = _.reduce(security, function (defs, reqs) { _.each(reqs, function (req, name) { - var def = pathObject.api.definitionFullyResolved.securityDefinitions ? - pathObject.api.definitionFullyResolved.securityDefinitions[name] : + var def = pathObject.apiDefinition.definitionFullyResolved.securityDefinitions ? + pathObject.apiDefinition.definitionFullyResolved.securityDefinitions[name] : undefined; if (!_.isUndefined(def)) { @@ -216,7 +219,7 @@ Operation.prototype.getResponses = function () { * @returns {object[]} The security for this operation */ Operation.prototype.getSecurity = function () { - return this.definitionFullyResolved.security || this.pathObject.api.definitionFullyResolved.security; + return this.definitionFullyResolved.security || this.pathObject.apiDefinition.definitionFullyResolved.security; } /** @@ -333,7 +336,7 @@ Operation.prototype.validateResponse = function (res, options) { response = this.getResponse(realStatusCode); if (_.isUndefined(response)) { - // If there is no response for the requested status, use the default if there is one (This is Swagger's approach) + // If there is no response for the requested status, use the default if there is one (This is OpenAPI's approach) response = this.getResponse('default'); if (_.isUndefined(response)) { diff --git a/lib/types/parameter.js b/lib/types/parameter.js index d1042c5b..dd31dbcf 100644 --- a/lib/types/parameter.js +++ b/lib/types/parameter.js @@ -31,12 +31,12 @@ var ParameterValue = require('./parameter-value'); var parseUrl = require('url').parse; /** - * The Swagger Parameter object. + * The OpenAPI Parameter object. * * **Note:** Do not use directly. * - * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the definition - * object. + * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the + * [OpenAPI Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject). * * @param {module:sway.Operation|module:sway.Path} opOrPathObject - The `Operation` or `Path` object * @param {object} definition - The parameter definition *(The raw parameter definition __after__ remote references were @@ -73,18 +73,18 @@ function Parameter (opOrPathObject, definition, definitionFullyResolved, pathToD this.pathObject = opOrPathObject; } - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Parameter Object definition _.assign(this, definitionFullyResolved); if (_.isUndefined(this.schema)) { this.schema = helpers.computeParameterSchema(definitionFullyResolved); } - this.pathObject.api._debug(' %s%s (in: %s) at %s', - _.isUndefined(this.operationObject) ? '' : ' ', - definitionFullyResolved.name, - definitionFullyResolved.in, - this.ptr); + this.pathObject.apiDefinition._debug(' %s%s (in: %s) at %s', + _.isUndefined(this.operationObject) ? '' : ' ', + definitionFullyResolved.name, + definitionFullyResolved.in, + this.ptr); } /** diff --git a/lib/types/path.js b/lib/types/path.js index f0d613a1..da8ab3cd 100644 --- a/lib/types/path.js +++ b/lib/types/path.js @@ -37,16 +37,16 @@ var supportedHttpMethods = require('swagger-methods'); * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Path Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject). * - * @param {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @param {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @param {string} path - The path string * @param {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @param {object} definitionFullyResolved - The path definition with all of its resolvable references resolved * @param {string[]} pathToDefinition - The path segments to the path definition * - * @property {module:sway.SwaggerApi} api - The `SwaggerApi` object + * @property {module:sway.ApiDefinition} apiDefinition - The `ApiDefinition` object * @property {object} definition - The path definition *(The raw path definition __after__ remote references were * resolved)* * @property {object} definitionFullyResolved - The path definition with all of its resolvable references resolved @@ -61,8 +61,8 @@ var supportedHttpMethods = require('swagger-methods'); * * @memberof module:sway */ -function Path (api, path, definition, definitionFullyResolved, pathToDefinition) { - var basePathPrefix = api.definitionFullyResolved.basePath || '/'; +function Path (apiDefinition, path, definition, definitionFullyResolved, pathToDefinition) { + var basePathPrefix = apiDefinition.definitionFullyResolved.basePath || '/'; var that = this; var sanitizedPath; @@ -73,7 +73,7 @@ function Path (api, path, definition, definitionFullyResolved, pathToDefinition) basePathPrefix = basePathPrefix.substring(0, basePathPrefix.length - 1); } - // Converts Swagger parameters to Express-style parameters, and also escapes all path-to-regexp special characters + // Converts OpenAPI parameters to Express-style parameters, and also escapes all path-to-regexp special characters // // @see: https://github.com/pillarjs/path-to-regexp/issues/76#issuecomment-219085357 sanitizedPath = basePathPrefix + path.replace('(', '\\(') // path-to-regexp @@ -82,11 +82,11 @@ function Path (api, path, definition, definitionFullyResolved, pathToDefinition) .replace('*', '\\*') // path-to-regexp .replace('+', '\\+') // path-to-regexp .replace('?', '\\?') // path-to-regexp - .replace(/\{/g, ':') // Swagger -> Express-style - .replace(/\}/g, ''); // Swagger -> Express-style + .replace(/\{/g, ':') // OpenAPI -> Express-style + .replace(/\}/g, ''); // OpenAPI -> Express-style // Assign local properties - this.api = api; + this.apiDefinition = apiDefinition; this.definition = definition; this.definitionFullyResolved = definitionFullyResolved; this.path = path; @@ -94,10 +94,10 @@ function Path (api, path, definition, definitionFullyResolved, pathToDefinition) this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.regexp = pathToRegexp(sanitizedPath, {sensitive: true}); - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Path Object definition _.assign(this, definitionFullyResolved); - this._debug = this.api._debug; + this._debug = this.apiDefinition._debug; this._debug(' %s', this.path); @@ -105,7 +105,7 @@ function Path (api, path, definition, definitionFullyResolved, pathToDefinition) var pPath = pathToDefinition.concat(['parameters', index.toString()]); return new Parameter(that, - _.get(api.definitionRemotesResolved, pPath), + _.get(apiDefinition.definitionRemotesResolved, pPath), paramDef, pPath); }); @@ -116,7 +116,7 @@ function Path (api, path, definition, definitionFullyResolved, pathToDefinition) var oPath = pathToDefinition.concat(method); if (supportedHttpMethods.indexOf(method) > -1) { - operations.push(new Operation(that, method, _.get(api.definitionRemotesResolved, oPath), operationDef, oPath)); + operations.push(new Operation(that, method, _.get(apiDefinition.definitionRemotesResolved, oPath), operationDef, oPath)); } return operations; diff --git a/lib/types/response.js b/lib/types/response.js index a77cbb0b..077f17a7 100644 --- a/lib/types/response.js +++ b/lib/types/response.js @@ -31,12 +31,12 @@ var JsonRefs = require('json-refs'); var YAML = require('js-yaml'); /** - * The Swagger Response object. + * The OpenAPI Response object. * * **Note:** Do not use directly. * * **Extra Properties:** Other than the documented properties, this object also exposes all properties of the - * definition object. + * [OpenAPI Response Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject). * * @param {module:sway.Operation} operationObject - The `Operation` object * @param {string} statusCode - The status code @@ -66,10 +66,10 @@ function Response (operationObject, statusCode, definition, definitionFullyResol this.ptr = JsonRefs.pathToPtr(pathToDefinition); this.statusCode = statusCode; - // Assign local properties from the Swagger definition properties + // Assign local properties from the OpenAPI Response Object definition _.assign(this, definitionFullyResolved); - this.operationObject.pathObject.api._debug(' %s at %s', statusCode, this.ptr); + this.operationObject.pathObject.apiDefinition._debug(' %s at %s', statusCode, this.ptr); } /** diff --git a/lib/validation/validators.js b/lib/validation/validators.js index 5d3eacc2..7e4da4e5 100644 --- a/lib/validation/validators.js +++ b/lib/validation/validators.js @@ -98,14 +98,16 @@ function walkSchema (api, blacklist, schema, path, handlers, response) { } /** - * Validates the resolved Swagger document against the Swagger 2.0 JSON Schema. + * Validates the resolved OpenAPI Definition against the OpenAPI 3.x JSON Schema. * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateStructure (api) { - var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), swaggerSchema, api.definitionFullyResolved); +function validateStructure (apiDefinition) { + var results = helpers.validateAgainstSchema(helpers.getJSONSchemaValidator(), + swaggerSchema, + apiDefinition.definitionFullyResolved); // Make complex JSON Schema validation errors easier to understand (Issue 15) results.errors = results.errors.map(function (error) { @@ -136,7 +138,7 @@ function validateStructure (api) { }); // Treat invalid/missing references as structural errors - _.each(api.references, function (refDetails, refPtr) { + _.each(apiDefinition.references, function (refDetails, refPtr) { var refPath = JsonRefs.pathFromPtr(refPtr); var err; @@ -220,11 +222,11 @@ function validateSchemaProperties (api, response, schema, path) { * * Identifies unreferenced referenceable definitions * * Identifies unresolvable references * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateReferences (api) { +function validateReferences (apiDefinition) { var docReferences = {}; var inheritanceDetails = {}; var referenceable = []; @@ -313,19 +315,19 @@ function validateReferences (api) { } // Identify referenceable definitions - _.forEach(api.definitionFullyResolved.definitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['definitions', name])); }); - _.forEach(api.definitionFullyResolved.parameters, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.parameters, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['parameters', name])); }); - _.forEach(api.definitionFullyResolved.responses, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.responses, function (def, name) { referenceable.push(JsonRefs.pathToPtr(['responses', name])); }); - _.forEach(api.definitionFullyResolved.securityDefinitions, function (def, name) { + _.forEach(apiDefinition.definitionFullyResolved.securityDefinitions, function (def, name) { var sPath = ['securityDefinitions', name]; referenceable.push(JsonRefs.pathToPtr(sPath)); @@ -340,7 +342,7 @@ function validateReferences (api) { }); // Identify references and build inheritance model - _.forEach(api.references, function (metadata, ptr) { + _.forEach(apiDefinition.references, function (metadata, ptr) { var ptrPath = JsonRefs.pathFromPtr(ptr); if (!_.has(metadata, 'missing')) { @@ -395,9 +397,9 @@ function validateReferences (api) { }); // Identify references and validate missing references for non-JSON References (security) - _.forEach(api.definitionFullyResolved.security, createSecurityProcessor(['security'])); + _.forEach(apiDefinition.definitionFullyResolved.security, createSecurityProcessor(['security'])); - _.forEach(api.definitionFullyResolved.paths, function (pathDef, name) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, name) { var pPath = ['paths', name]; _.forEach(pathDef.security, createSecurityProcessor(pPath.concat('security'))); @@ -433,13 +435,13 @@ function validateReferences (api) { * (@see {@link https://github.com/swagger-api/swagger-spec/issues/174}) * * Validates that all default values are valid based on its respective schema * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validateSchemaObjects (api) { +function validateSchemaObjects (apiDefinition) { // Build a blacklist to avoid cascading errors/warnings - var blacklist = _.reduce(api.references, function (list, metadata, ptr) { + var blacklist = _.reduce(apiDefinition.references, function (list, metadata, ptr) { var refPath = JsonRefs.pathFromPtr(ptr); list.push(JsonRefs.pathToPtr(refPath)); @@ -471,7 +473,7 @@ function validateSchemaObjects (api) { parameterDef = helpers.computeParameterSchema(parameterDef); } - walkSchema(api, blacklist, parameterDef, pPath, validators, response); + walkSchema(apiDefinition, blacklist, parameterDef, pPath, validators, response); }); } @@ -480,28 +482,28 @@ function validateSchemaObjects (api) { var rPath = path.concat(name); _.forEach(responseDef.headers, function (header, hName) { - walkSchema(api, blacklist, header, rPath.concat(['headers', hName]), validators, response); + walkSchema(apiDefinition, blacklist, header, rPath.concat(['headers', hName]), validators, response); }); if (!_.isUndefined(responseDef.schema)) { - walkSchema(api, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); + walkSchema(apiDefinition, blacklist, responseDef.schema, rPath.concat('schema'), validators, response); } }); } // Validate definitions - _.forEach(api.definitionFullyResolved.definitions, function (definitionDef, name) { - walkSchema(api, blacklist, definitionDef, ['definitions', name], validators, response); + _.forEach(apiDefinition.definitionFullyResolved.definitions, function (definitionDef, name) { + walkSchema(apiDefinition, blacklist, definitionDef, ['definitions', name], validators, response); }); // Validate global parameter definitions - validateParameters(api.definitionFullyResolved.parameters, ['parameters']); + validateParameters(apiDefinition.definitionFullyResolved.parameters, ['parameters']); // Validate global response definitions - validateResponses(api.definitionFullyResolved.responses, ['responses']); + validateResponses(apiDefinition.definitionFullyResolved.responses, ['responses']); // Validate paths and operations - _.forEach(api.definitionFullyResolved.paths, function (pathDef, path) { + _.forEach(apiDefinition.definitionFullyResolved.paths, function (pathDef, path) { var pPath = ['paths', path]; // Validate path-level parameter definitions @@ -538,11 +540,11 @@ function validateSchemaObjects (api) { * * Ensure that all operation ids are unique * * Ensure that path parameters have a name * - * @param {SwaggerApi} api - The SwaggerApi object + * @param {ApiDefinition} apiDefinition - The `ApiDefinition` object * * @returns {object} Object containing the errors and warnings of the validation */ -function validatePathsAndOperations (api) { +function validatePathsAndOperations (apiDefinition) { var response = { errors: [], warnings: [] @@ -565,7 +567,7 @@ function validatePathsAndOperations (api) { return seenParameters; } - _.reduce(api.definitionFullyResolved.paths, function (metadata, pathDef, path) { + _.reduce(apiDefinition.definitionFullyResolved.paths, function (metadata, pathDef, path) { var declaredPathParameters = []; var normalizedPath = path; var pPath = ['paths', path]; @@ -598,7 +600,7 @@ function validatePathsAndOperations (api) { metadata.paths.push(normalizedPath); } - // Identify duplicate path-level parameters (We do this manually since SwaggerApi#getOperation consolidates them) + // Identify duplicate path-level parameters (We do this manually since ApiDefinition#getOperation consolidates them) _.reduce(pathDef.parameters, function (seenParameters, parameter, index) { return validateDuplicateParameter(seenParameters, parameter, pPath.concat(['parameters', index.toString()])); }, []); @@ -633,8 +635,8 @@ function validatePathsAndOperations (api) { return validateDuplicateParameter(seenParameters, parameter, oPath.concat(['parameters', index.toString()])); }, []); - // Use SwaggerApi#getOperation to avoid having to consolidate parameters - parameters = api.getOperation(path, method).getParameters(); + // Use ApiDefinition#getOperation to avoid having to consolidate parameters + parameters = apiDefinition.getOperation(path, method).getParameters(); pathMetadata = _.reduce(parameters, function (pMetadata, parameter) { // Record path parameters diff --git a/test/helpers.js b/test/helpers.js index cde9e654..85f65e64 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -35,17 +35,17 @@ var YAML = require('js-yaml'); var documentBase = path.join(__dirname, 'browser', 'documents'); var relativeBase = typeof window === 'undefined' ? documentBase : 'base/documents'; -var swaggerDoc = YAML.safeLoad(fs.readFileSync(path.join(__dirname, './browser/documents/2.0/swagger.yaml'), 'utf8')); -var swaggerDocCircular = YAML.safeLoad(fs.readFileSync(path.join(__dirname, - './browser/documents/2.0/swagger-circular.yaml'), +var oaiDoc = YAML.safeLoad(fs.readFileSync(path.join(__dirname, './browser/documents/2.0/swagger.yaml'), 'utf8')); +var oaiDocCircular = YAML.safeLoad(fs.readFileSync(path.join(__dirname, + './browser/documents/2.0/swagger-circular.yaml'), + 'utf8')); +var oaiDocRelativeRefs = YAML.safeLoad(fs.readFileSync(path.join(__dirname, + './browser/documents/2.0/swagger-relative-refs.yaml'), 'utf8')); -var swaggerDocRelativeRefs = YAML.safeLoad(fs.readFileSync(path.join(__dirname, - './browser/documents/2.0/swagger-relative-refs.yaml'), - 'utf8')); -var swaggerDocValidator = helpers.getJSONSchemaValidator(); -var swaggerApi; -var swaggerApiCircular; -var swaggerApiRelativeRefs; +var oaiDocValidator = helpers.getJSONSchemaValidator(); +var apiDefinition; +var apiDefinitionCircular; +var apiDefinitionRelativeRefs; function fail (msg) { assert.fail(msg); @@ -59,55 +59,55 @@ module.exports.documentBase = documentBase; module.exports.fail = fail; -module.exports.getSwaggerApi = function (callback) { - if (swaggerApi) { - callback(swaggerApi); +module.exports.getApiDefinition = function (callback) { + if (apiDefinition) { + callback(apiDefinition); } else { Sway.create({ - definition: swaggerDoc + definition: oaiDoc }) .then(function (obj) { - swaggerApi = obj; + apiDefinition = obj; - callback(swaggerApi); + callback(apiDefinition); }, function (err) { callback(err); }); } }; -module.exports.getSwaggerApiCircular = function (callback) { - if (swaggerApiCircular) { - callback(swaggerApiCircular); +module.exports.getApiDefinitionCircular = function (callback) { + if (apiDefinitionCircular) { + callback(apiDefinitionCircular); } else { Sway.create({ - definition: swaggerDocCircular, + definition: oaiDocCircular, jsonRefs: { resolveCirculars: true } }) .then(function (obj) { - swaggerApiCircular = obj; + apiDefinitionCircular = obj; - callback(swaggerApiCircular); + callback(apiDefinitionCircular); }, function (err) { callback(err); }); } }; -module.exports.getSwaggerApiRelativeRefs = function (callback) { - if (swaggerApiRelativeRefs) { - callback(swaggerApiRelativeRefs); +module.exports.getApiDefinitionRelativeRefs = function (callback) { + if (apiDefinitionRelativeRefs) { + callback(apiDefinitionRelativeRefs); } else { Sway.create({ - definition: swaggerDocRelativeRefs, + definition: oaiDocRelativeRefs, jsonRefs: {location: path.join(relativeBase, './2.0/swagger-relative-refs.yaml')} }) .then(function (obj) { - swaggerApiRelativeRefs = obj; + apiDefinitionRelativeRefs = obj; - callback(swaggerApiRelativeRefs); + callback(apiDefinitionRelativeRefs); }, function (err) { callback(err); }); @@ -128,14 +128,14 @@ module.exports.shouldNotHadFailed = function (err) { fail('The code above should not had thrown an error'); }; -module.exports.swaggerDoc = swaggerDoc; +module.exports.oaiDoc = oaiDoc; -module.exports.swaggerDocPath = path.join(relativeBase, './2.0/swagger.yaml'); +module.exports.oaiDocPath = path.join(relativeBase, './2.0/swagger.yaml'); -module.exports.swaggerDocCircular = swaggerDocCircular; +module.exports.oaiDocCircular = oaiDocCircular; -module.exports.swaggerDocCircularPath = path.join(relativeBase, './2.0/swagger-circular.yaml'); +module.exports.oaiDocCircularPath = path.join(relativeBase, './2.0/swagger-circular.yaml'); -module.exports.swaggerDocRelativeRefsPath = path.join(relativeBase, './2.0/swagger-relative-refs.yaml'); +module.exports.oaiDocRelativeRefsPath = path.join(relativeBase, './2.0/swagger-relative-refs.yaml'); -module.exports.swaggerDocValidator = swaggerDocValidator; +module.exports.oaiDocValidator = oaiDocValidator; diff --git a/test/test-api.js b/test/test-api-definition.js similarity index 69% rename from test/test-api.js rename to test/test-api-definition.js index cfdaa1f2..36f2c49e 100644 --- a/test/test-api.js +++ b/test/test-api-definition.js @@ -47,38 +47,38 @@ function getOperationCount (pathDef) { function runTests (mode) { var label = mode === 'with-refs' ? 'with' : 'without'; - var swaggerApi; + var apiDefinition; before(function (done) { - function callback (api) { - swaggerApi = api; + function callback (apiDef) { + apiDefinition = apiDef; done(); } if (mode === 'with-refs') { - tHelpers.getSwaggerApiRelativeRefs(callback); + tHelpers.getApiDefinitionRelativeRefs(callback); } else { - tHelpers.getSwaggerApi(callback); + tHelpers.getApiDefinition(callback); } }); beforeEach(function () { - swaggerApi.customValidators = []; - swaggerApi.customFormats = {}; - swaggerApi.customFormatGenerators = {}; + apiDefinition.customValidators = []; + apiDefinition.customFormats = {}; + apiDefinition.customFormatGenerators = {}; - // When we test SwaggerApi#registerFormat, it registers globally in ZSchema and it has to be unregistered - swaggerApi.unregisterFormat('alwaysFails'); - swaggerApi.unregisterFormatGenerator('sway'); + // When we test ApiDefinition#registerFormat, it registers globally in ZSchema and it has to be unregistered + apiDefinition.unregisterFormat('alwaysFails'); + apiDefinition.unregisterFormatGenerator('sway'); }); - describe('should handle Swagger document ' + label + ' relative references', function () { + describe('should handle OpenAPI document ' + label + ' relative references', function () { describe('#getOperations', function () { it('should return all operations', function () { - var operations = swaggerApi.getOperations(); + var operations = apiDefinition.getOperations(); - assert.equal(operations.length, _.reduce(swaggerApi.definitionFullyResolved.paths, function (count, path) { + assert.equal(operations.length, _.reduce(apiDefinition.definitionFullyResolved.paths, function (count, path) { count += getOperationCount(path); return count; @@ -88,62 +88,62 @@ function runTests (mode) { }); it('should return return all operations for the given path', function () { - var operations = swaggerApi.getOperations('/pet/{petId}'); + var operations = apiDefinition.getOperations('/pet/{petId}'); - assert.ok(swaggerApi.getOperations().length > operations.length); - assert.equal(operations.length, getOperationCount(swaggerApi.definitionFullyResolved.paths['/pet/{petId}'])); + assert.ok(apiDefinition.getOperations().length > operations.length); + assert.equal(operations.length, getOperationCount(apiDefinition.definitionFullyResolved.paths['/pet/{petId}'])); }); it('should return return no operations for a missing path', function () { - assert.equal(swaggerApi.getOperations('/some/fake/path').length, 0); + assert.equal(apiDefinition.getOperations('/some/fake/path').length, 0); }); }); describe('#getOperation', function () { it('should return the expected operation by id', function () { - tHelpers.checkType(swaggerApi.getOperation('addPet'), 'Operation'); + tHelpers.checkType(apiDefinition.getOperation('addPet'), 'Operation'); }); describe('path + method', function () { it('should return the expected operation', function () { - tHelpers.checkType(swaggerApi.getOperation('/pet/{petId}', 'get'), 'Operation'); + tHelpers.checkType(apiDefinition.getOperation('/pet/{petId}', 'get'), 'Operation'); }); it('should return no operation for missing path', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation('/petz/{petId}', 'get'))); + assert.ok(_.isUndefined(apiDefinition.getOperation('/petz/{petId}', 'get'))); }); it('should return no operation for missing method', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation('/pet/{petId}', 'head'))); + assert.ok(_.isUndefined(apiDefinition.getOperation('/pet/{petId}', 'head'))); }); }); describe('http.ClientRequest (or similar)', function () { it('should return the expected operation', function () { - tHelpers.checkType(swaggerApi.getOperation({ + tHelpers.checkType(apiDefinition.getOperation({ method: 'GET', - url: swaggerApi.basePath + '/pet/1' + url: apiDefinition.basePath + '/pet/1' }), 'Operation'); }); it('should return the expected operation (req.originalUrl)', function () { - tHelpers.checkType((swaggerApi.getOperation({ + tHelpers.checkType((apiDefinition.getOperation({ method: 'GET', - originalUrl: swaggerApi.basePath + '/pet/1' + originalUrl: apiDefinition.basePath + '/pet/1' })), 'Operation'); }); it('should return no operation for missing path', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation({ + assert.ok(_.isUndefined(apiDefinition.getOperation({ method: 'GET', - url: swaggerApi.basePath + '/petz/1' + url: apiDefinition.basePath + '/petz/1' }))); }); it('should return no operation for missing method', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation({ + assert.ok(_.isUndefined(apiDefinition.getOperation({ method: 'HEAD', - url: swaggerApi.basePath + '/pet/1' + url: apiDefinition.basePath + '/pet/1' }))); }); }); @@ -151,18 +151,18 @@ function runTests (mode) { describe('#getOperationsByTag', function () { it('should return no operation for incorrect tag', function () { - var operations = swaggerApi.getOperationsByTag('incorrect tag'); + var operations = apiDefinition.getOperationsByTag('incorrect tag'); assert.equal(operations.length, 0); }); it('should return all operations for the given tag', function () { - var operations = swaggerApi.getOperationsByTag('store'); + var operations = apiDefinition.getOperationsByTag('store'); assert.equal(operations.length, - getOperationCount(swaggerApi.definitionFullyResolved.paths['/store/inventory']) + - getOperationCount(swaggerApi.definitionFullyResolved.paths['/store/order']) + - getOperationCount(swaggerApi.definitionFullyResolved.paths['/store/order/{orderId}'])); + getOperationCount(apiDefinition.definitionFullyResolved.paths['/store/inventory']) + + getOperationCount(apiDefinition.definitionFullyResolved.paths['/store/order']) + + getOperationCount(apiDefinition.definitionFullyResolved.paths['/store/order/{orderId}'])); }); }); @@ -172,54 +172,54 @@ function runTests (mode) { // This test is likely superfluous but while working on Issue 76 this was broken (pre-commit) and so this test // is here just to be sure. it('match identical', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var matches = [ '/foo/{0}/baz', '/foo/{1}/baz' ]; _.forEach(matches, function (newPath) { - cSwagger.paths[newPath] = {}; + cOAIDoc.paths[newPath] = {}; }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.equal(api.getPath('/foo/{1}/baz').path, matches[1]); + .then(function (apiDef) { + assert.equal(apiDef.getPath('/foo/{1}/baz').path, matches[1]); }) .then(done, done); }); }); it('should handle regex characters in path', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var path = '/foo/({bar})'; - cSwagger.paths[path] = {}; + cOAIDoc.paths[path] = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - tHelpers.checkType(api.getPath(path), 'Path'); + .then(function (apiDef) { + tHelpers.checkType(apiDef.getPath(path), 'Path'); }) .then(done, done); }); it('should return the expected path object', function () { - tHelpers.checkType(swaggerApi.getPath('/pet/{petId}'), 'Path'); + tHelpers.checkType(apiDefinition.getPath('/pet/{petId}'), 'Path'); }); it('should return no path object', function () { - assert.ok(_.isUndefined(swaggerApi.getPath('/petz/{petId}'))); + assert.ok(_.isUndefined(apiDefinition.getPath('/petz/{petId}'))); }); }); describe('http.ClientRequest (or similar)', function () { describe('multiple matches', function () { it('complete static match', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var lesserMatches = [ '/foo/bar/{baz}', '/foo/{bar}/baz', @@ -228,45 +228,45 @@ function runTests (mode) { var match = '/foo/bar/baz'; _.forEach(lesserMatches.concat(match), function (newPath) { - cSwagger.paths[newPath] = {}; + cOAIDoc.paths[newPath] = {}; }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.equal(api.getPath({ - url: swaggerApi.basePath + match + .then(function (apiDef) { + assert.equal(apiDef.getPath({ + url: apiDefinition.basePath + match }).path, match); }) .then(done, done); }); - // While this scenario should never happen in a valid Swagger document, we handle it anyways + // While this scenario should never happen in a valid OpenAPI document, we handle it anyways it('match multiple levels deep', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var lesserMatches = [ '/foo/{bar}/baz/{qux}' ]; var match = '/foo/{bar}/baz/qux'; _.forEach(lesserMatches.concat(match), function (newPath) { - cSwagger.paths[newPath] = {}; + cOAIDoc.paths[newPath] = {}; }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.equal(api.getPath({ - url: swaggerApi.basePath + match + .then(function (apiDef) { + assert.equal(apiDef.getPath({ + url: apiDefinition.basePath + match }).path, match); }) .then(done, done); }); it('match single level deep', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var lesserMatches = [ '/foo/{bar}/baz', '/{foo}/bar/baz' @@ -274,38 +274,38 @@ function runTests (mode) { var match = '/foo/bar/{baz}'; _.forEach(lesserMatches.concat(match), function (newPath) { - cSwagger.paths[newPath] = {}; + cOAIDoc.paths[newPath] = {}; }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.equal(api.getPath({ - url: swaggerApi.basePath + match + .then(function (apiDef) { + assert.equal(apiDef.getPath({ + url: apiDefinition.basePath + match }).path, match); }) .then(done, done); }); - // While this scenario should never happen in a valid Swagger document, we handle it anyways + // While this scenario should never happen in a valid OpenAPI document, we handle it anyways it('match identical', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var matches = [ '/foo/{0}/baz', '/foo/{1}/baz' ]; _.forEach(matches, function (newPath) { - cSwagger.paths[newPath] = {}; + cOAIDoc.paths[newPath] = {}; }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - tHelpers.checkType(api.getPath({ - url: swaggerApi.basePath + '/foo/bar/baz' + .then(function (apiDef) { + tHelpers.checkType(apiDef.getPath({ + url: apiDefinition.basePath + '/foo/bar/baz' }), 'Path'); }) .then(done, done); @@ -313,31 +313,31 @@ function runTests (mode) { }); it('should handle regex characters in path', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var path = '/foo/({bar})'; - cSwagger.paths[path] = {}; + cOAIDoc.paths[path] = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - tHelpers.checkType(api.getPath({ - url: swaggerApi.basePath + '/foo/(bar)' + .then(function (apiDef) { + tHelpers.checkType(apiDef.getPath({ + url: apiDefinition.basePath + '/foo/(bar)' }), 'Path'); }) .then(done, done); }); it('should return the expected path object', function () { - tHelpers.checkType(swaggerApi.getPath({ - url: swaggerApi.basePath + '/pet/1' + tHelpers.checkType(apiDefinition.getPath({ + url: apiDefinition.basePath + '/pet/1' }), 'Path'); }); it('should return no path object', function () { - assert.ok(_.isUndefined(swaggerApi.getPath({ - url: swaggerApi.basePath + '/petz/1' + assert.ok(_.isUndefined(apiDefinition.getPath({ + url: apiDefinition.basePath + '/petz/1' }))); }); }); @@ -345,7 +345,7 @@ function runTests (mode) { describe('#getPaths', function () { it('should return the expected path objects', function () { - assert.equal(swaggerApi.getPaths().length, Object.keys(swaggerApi.definitionFullyResolved.paths).length); + assert.equal(apiDefinition.getPaths().length, Object.keys(apiDefinition.definitionFullyResolved.paths).length); }); }); @@ -360,7 +360,7 @@ function runTests (mode) { _.forEach(scenarios, function (scenario) { try { - swaggerApi.registerFormat.apply(swaggerApi, scenario[0]); + apiDefinition.registerFormat.apply(apiDefinition, scenario[0]); tHelpers.shouldHadFailed(); } catch (err) { @@ -370,17 +370,17 @@ function runTests (mode) { }); it('should add validator to list of validators', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet.properties.customFormat = { + cOAIDoc.definitions.Pet.properties.customFormat = { format: 'alwaysFails', type: 'string' }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var req = { body: { customFormat: 'shouldFail', @@ -388,18 +388,18 @@ function runTests (mode) { photoUrls: [] } }; - var paramValue = api.getOperation('/pet', 'post').getParameter('body').getValue(req); + var paramValue = apiDef.getOperation('/pet', 'post').getParameter('body').getValue(req); assert.ok(_.isUndefined(paramValue.error)); assert.deepEqual(req.body, paramValue.raw); assert.deepEqual(req.body, paramValue.value); // Register the custom format - api.registerFormat('alwaysFails', function () { + apiDef.registerFormat('alwaysFails', function () { return false; }); - paramValue = api.getOperation('/pet', 'post').getParameter('body').getValue(req); + paramValue = apiDef.getOperation('/pet', 'post').getParameter('body').getValue(req); assert.equal(paramValue.error.message, 'Value failed JSON Schema validation'); assert.equal(paramValue.error.code, 'SCHEMA_VALIDATION_FAILED'); @@ -431,7 +431,7 @@ function runTests (mode) { _.forEach(scenarios, function (scenario) { try { - swaggerApi.registerFormatGenerator.apply(swaggerApi, scenario[0]); + apiDefinition.registerFormatGenerator.apply(apiDefinition, scenario[0]); tHelpers.shouldHadFailed(); } catch (err) { @@ -441,15 +441,15 @@ function runTests (mode) { }); it('should add validator to list of format generators', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/user/{username}'].get.parameters[0].format = 'sway'; + cOAIDoc.paths['/user/{username}'].get.parameters[0].format = 'sway'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var param = api.getOperation('/user/{username}', 'get').getParameter('username'); + .then(function (apiDef) { + var param = apiDef.getOperation('/user/{username}', 'get').getParameter('username'); try { param.getSample(); @@ -460,7 +460,7 @@ function runTests (mode) { } // Register the custom format - api.registerFormatGenerator('sway', function () { + apiDef.registerFormatGenerator('sway', function () { return 'sway'; }); @@ -479,7 +479,7 @@ function runTests (mode) { _.forEach(scenarios, function (scenario) { try { - swaggerApi.registerValidator.apply(swaggerApi, scenario[0]); + apiDefinition.registerValidator.apply(apiDefinition, scenario[0]); tHelpers.shouldHadFailed(); } catch (err) { @@ -489,7 +489,7 @@ function runTests (mode) { }); it('should add validator to list of validators', function () { - var results = swaggerApi.validate(); + var results = apiDefinition.validate(); var expectedErrors = [ 'error' ]; @@ -500,8 +500,8 @@ function runTests (mode) { assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, []); - swaggerApi.registerValidator(function (api) { - tHelpers.checkType(api, 'SwaggerApi'); + apiDefinition.registerValidator(function (apiDef) { + tHelpers.checkType(apiDef, 'ApiDefinition'); return { errors: expectedErrors, @@ -509,7 +509,7 @@ function runTests (mode) { }; }); - results = swaggerApi.validate(); + results = apiDefinition.validate(); assert.deepEqual(results.errors, expectedErrors); assert.deepEqual(results.warnings, expectedWarnings); @@ -518,7 +518,7 @@ function runTests (mode) { describe('#validate', function () { it('should return zero errors/warnings for a valid document', function () { - var results = swaggerApi.validate(); + var results = apiDefinition.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, []); @@ -526,15 +526,15 @@ function runTests (mode) { describe('should return errors for an invalid document', function () { it('does not validate against JSON Schema', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths; + delete cOAIDoc.paths; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -552,12 +552,12 @@ function runTests (mode) { }); describe('array type missing required items property', function () { - function validateBrokenArray (cSwagger, path, done) { + function validateBrokenArray (cOAIDoc, path, done) { Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); // Validate that all warnings are unused definitions _.forEach(results.warnings, function (warning) { @@ -578,32 +578,32 @@ function runTests (mode) { describe('schema definitions', function () { describe('array', function () { it('no items', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'array' }; - validateBrokenArray(cSwagger, ['definitions', 'Pet'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet'], done); }); it('items object', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'array', items: { type: 'array' } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'items'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'items'], done); }); it('items array', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'array', items: [ { @@ -612,29 +612,29 @@ function runTests (mode) { ] }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'items', '0'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'items', '0'], done); }); }); describe('object', function () { describe('additionalProperties', function () { it('no items', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', additionalProperties: { type: 'array' } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'additionalProperties'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'additionalProperties'], done); }); it('items object', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', additionalProperties: { type: 'array', @@ -644,13 +644,13 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'additionalProperties', 'items'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'additionalProperties', 'items'], done); }); it('items array', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', additionalProperties: { type: 'array', @@ -662,7 +662,7 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'additionalProperties', 'items', '0'], done); }); @@ -670,9 +670,9 @@ function runTests (mode) { describe('properties', function () { it('no items', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', properties: { aliases: { @@ -681,13 +681,13 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'properties', 'aliases'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'properties', 'aliases'], done); }); it('items object', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', properties: { aliases: { @@ -699,13 +699,13 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'properties', 'aliases', 'items'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'properties', 'aliases', 'items'], done); }); it('items array', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', properties: { aliases: { @@ -719,15 +719,15 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'properties', 'aliases', 'items', '0'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'properties', 'aliases', 'items', '0'], done); }); }); describe('allOf', function () { it('no items', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', allOf: [ { @@ -736,13 +736,13 @@ function runTests (mode) { ] }; - validateBrokenArray(cSwagger, ['definitions', 'Pet', 'allOf', '0'], done); + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'allOf', '0'], done); }); it('items object', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', allOf: [ { @@ -759,15 +759,15 @@ function runTests (mode) { ] }; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'allOf', '0', 'properties', 'aliases', 'items'], done); }); it('items array', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { type: 'object', allOf: [ { @@ -786,7 +786,7 @@ function runTests (mode) { ] }; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['definitions', 'Pet', 'allOf', '0', 'properties', 'aliases', 'items', '0'], done); }); @@ -794,7 +794,7 @@ function runTests (mode) { }); it('recursive', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var errorSchema = { type: 'object', allOf: [ @@ -812,7 +812,7 @@ function runTests (mode) { } }; - cSwagger.definitions.Pet = { + cOAIDoc.definitions.Pet = { allOf: [ errorSchema ], @@ -823,10 +823,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); // Validate that all warnings are unused definitions _.forEach(results.warnings, function (warning) { @@ -888,9 +888,9 @@ function runTests (mode) { describe('parameter definitions', function () { describe('global', function () { it('body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.parameters = { + cOAIDoc.parameters = { petInBody: { in: 'body', name: 'body', @@ -906,27 +906,27 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['parameters', 'petInBody', 'schema', 'properties', 'aliases'], done); + validateBrokenArray(cOAIDoc, ['parameters', 'petInBody', 'schema', 'properties', 'aliases'], done); }); it('non-body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.parameters = { - petStatus: _.cloneDeep(cSwagger.paths['/pet/findByStatus'].get.parameters[0]) + cOAIDoc.parameters = { + petStatus: _.cloneDeep(cOAIDoc.paths['/pet/findByStatus'].get.parameters[0]) }; - delete cSwagger.parameters.petStatus.items; + delete cOAIDoc.parameters.petStatus.items; - validateBrokenArray(cSwagger, ['parameters', 'petStatus'], done); + validateBrokenArray(cOAIDoc, ['parameters', 'petStatus'], done); }); }); describe('path-level', function () { it('body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].parameters = [ + cOAIDoc.paths['/pet'].parameters = [ { in: 'body', name: 'body', @@ -942,41 +942,41 @@ function runTests (mode) { } ]; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['paths', '/pet', 'parameters', '0', 'schema', 'properties', 'aliases'], done); }); it('non-body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].parameters = [ - _.cloneDeep(cSwagger.paths['/pet/findByStatus'].get.parameters[0]) + cOAIDoc.paths['/pet'].parameters = [ + _.cloneDeep(cOAIDoc.paths['/pet/findByStatus'].get.parameters[0]) ]; - delete cSwagger.paths['/pet'].parameters[0].items; + delete cOAIDoc.paths['/pet'].parameters[0].items; - validateBrokenArray(cSwagger, ['paths', '/pet', 'parameters', '0'], done); + validateBrokenArray(cOAIDoc, ['paths', '/pet', 'parameters', '0'], done); }); }); describe('operation', function () { it('body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths['/user/createWithArray'].post.parameters[0].schema.items; + delete cOAIDoc.paths['/user/createWithArray'].post.parameters[0].schema.items; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['paths', '/user/createWithArray', 'post', 'parameters', '0', 'schema'], done); }); it('non-body parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths['/pet/findByStatus'].get.parameters[0].items; + delete cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items; - validateBrokenArray(cSwagger, ['paths', '/pet/findByStatus', 'get', 'parameters', '0'], done); + validateBrokenArray(cOAIDoc, ['paths', '/pet/findByStatus', 'get', 'parameters', '0'], done); }); }); }); @@ -984,9 +984,9 @@ function runTests (mode) { describe('responses', function () { describe('global', function () { it('headers', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.responses = { + cOAIDoc.responses = { success: { description: 'A response indicative of a successful request', headers: { @@ -997,13 +997,13 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['responses', 'success', 'headers', 'X-Broken-Array'], done); + validateBrokenArray(cOAIDoc, ['responses', 'success', 'headers', 'X-Broken-Array'], done); }); it('schema definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.responses = { + cOAIDoc.responses = { success: { description: 'A response indicative of a successful request', schema: { @@ -1012,21 +1012,21 @@ function runTests (mode) { } }; - validateBrokenArray(cSwagger, ['responses', 'success', 'schema'], done); + validateBrokenArray(cOAIDoc, ['responses', 'success', 'schema'], done); }); }); describe('operation', function () { it('headers', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.responses['200'].headers = { + cOAIDoc.paths['/pet/findByStatus'].get.responses['200'].headers = { 'X-Broken-Array': { type: 'array' } }; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, [ 'paths', '/pet/findByStatus', @@ -1040,11 +1040,11 @@ function runTests (mode) { }); it('schema definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths['/pet/findByStatus'].get.responses['200'].schema.items; + delete cOAIDoc.paths['/pet/findByStatus'].get.responses['200'].schema.items; - validateBrokenArray(cSwagger, + validateBrokenArray(cOAIDoc, ['paths', '/pet/findByStatus', 'get', 'responses', '200', 'schema'], done); }); @@ -1064,16 +1064,16 @@ function runTests (mode) { } it('definition (direct)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.A = { + cOAIDoc.definitions.A = { allOf: [ { $ref: '#/definitions/B' } ] }; - cSwagger.definitions.B = { + cOAIDoc.definitions.B = { allOf: [ { $ref: '#/definitions/A' @@ -1082,10 +1082,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); @@ -1108,23 +1108,23 @@ function runTests (mode) { }); it('definition (indirect)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.A = { + cOAIDoc.definitions.A = { allOf: [ { $ref: '#/definitions/B' } ] }; - cSwagger.definitions.B = { + cOAIDoc.definitions.B = { allOf: [ { $ref: '#/definitions/C' } ] }; - cSwagger.definitions.C = { + cOAIDoc.definitions.C = { allOf: [ { $ref: '#/definitions/A' @@ -1133,10 +1133,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); validateErrors(results.errors, [ @@ -1164,9 +1164,9 @@ function runTests (mode) { }); it('inline schema', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.A = { + cOAIDoc.definitions.A = { allOf: [ { allOf: [ @@ -1179,10 +1179,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1198,9 +1198,9 @@ function runTests (mode) { }); it('not composition/inheritance', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet.properties.friends = { + cOAIDoc.definitions.Pet.properties.friends = { type: 'array', items: { $ref: '#/definitions/Pet' @@ -1208,10 +1208,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, []); @@ -1222,9 +1222,9 @@ function runTests (mode) { describe('default values fail JSON Schema validation', function () { it('schema-like object (non-body parameter)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters.push({ + cOAIDoc.paths['/pet'].post.parameters.push({ in: 'query', name: 'status', description: 'The Pet status', @@ -1234,10 +1234,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1254,15 +1254,15 @@ function runTests (mode) { }); it('schema object', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Pet.properties.name.default = 123; + cOAIDoc.definitions.Pet.properties.name.default = 123; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1280,19 +1280,19 @@ function runTests (mode) { describe('duplicate operation parameter', function () { it('operation-level', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); - var cParam = _.cloneDeep(cSwagger.paths['/pet/findByStatus'].get.parameters[0]); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); + var cParam = _.cloneDeep(cOAIDoc.paths['/pet/findByStatus'].get.parameters[0]); // Alter the parameter so that it is not identical as that will create a JSON Schema uniqueness error cParam.description = 'Duplicate'; - cSwagger.paths['/pet/findByStatus'].get.parameters.push(cParam); + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push(cParam); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1307,19 +1307,19 @@ function runTests (mode) { }); it('path-level', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); - var cParam = _.cloneDeep(cSwagger.paths['/pet/{petId}'].parameters[0]); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); + var cParam = _.cloneDeep(cOAIDoc.paths['/pet/{petId}'].parameters[0]); // Alter the parameter so that it is not identical as that will create a JSON Schema uniqueness error cParam.description = 'Duplicate'; - cSwagger.paths['/pet/{petId}'].parameters.push(cParam); + cOAIDoc.paths['/pet/{petId}'].parameters.push(cParam); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1335,17 +1335,17 @@ function runTests (mode) { }); it('invalid JSON Reference', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/something'] = { + cOAIDoc.paths['/something'] = { $ref: 'http://:8080' }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1360,15 +1360,15 @@ function runTests (mode) { }); it('path parameter in pattern is empty', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/invalid/{}'] = {}; + cOAIDoc.paths['/invalid/{}'] = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1383,9 +1383,9 @@ function runTests (mode) { }); it('missing path parameter declaration', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].get.parameters = [ + cOAIDoc.paths['/pet/{petId}'].get.parameters = [ { description: 'Superfluous path parameter', in: 'path', @@ -1396,10 +1396,10 @@ function runTests (mode) { ]; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1414,15 +1414,15 @@ function runTests (mode) { }); it('missing path parameter definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].parameters = []; + cOAIDoc.paths['/pet/{petId}'].parameters = []; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1447,15 +1447,15 @@ function runTests (mode) { }); it('multiple equivalent paths', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{notPetId}'] = {}; + cOAIDoc.paths['/pet/{notPetId}'] = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1470,16 +1470,16 @@ function runTests (mode) { }); it('multiple operations with the same operationId', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); - var operationId = cSwagger.paths['/pet'].post.operationId; + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); + var operationId = cOAIDoc.paths['/pet'].post.operationId; - cSwagger.paths['/pet'].put.operationId = operationId; + cOAIDoc.paths['/pet'].put.operationId = operationId; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1494,18 +1494,18 @@ function runTests (mode) { }); it('operation has multiple body parameters', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); - var dBodyParam = _.cloneDeep(cSwagger.paths['/pet'].post.parameters[0]); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); + var dBodyParam = _.cloneDeep(cOAIDoc.paths['/pet'].post.parameters[0]); dBodyParam.name = dBodyParam.name + 'Duplicate'; - cSwagger.paths['/pet'].post.parameters.push(dBodyParam); + cOAIDoc.paths['/pet'].post.parameters.push(dBodyParam); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1520,9 +1520,9 @@ function runTests (mode) { }); it('operation can have body or form parameter but not both', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters.push({ + cOAIDoc.paths['/pet'].post.parameters.push({ name: 'name', in: 'formData', description: 'The Pet name', @@ -1531,10 +1531,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1550,25 +1550,25 @@ function runTests (mode) { describe('missing required property definition', function () { it('allOf', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.definitions.Pet.properties.name; + delete cOAIDoc.definitions.Pet.properties.name; - cSwagger.definitions.Pet.allOf = [ + cOAIDoc.definitions.Pet.allOf = [ { type: 'object', - properties: _.cloneDeep(cSwagger.definitions.Pet.properties) + properties: _.cloneDeep(cOAIDoc.definitions.Pet.properties) } ]; - delete cSwagger.definitions.Pet.properties; + delete cOAIDoc.definitions.Pet.properties; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1583,15 +1583,15 @@ function runTests (mode) { }); it('properties', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.definitions.Pet.properties.name; + delete cOAIDoc.definitions.Pet.properties.name; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1608,15 +1608,15 @@ function runTests (mode) { describe('unused definitions', function () { it('definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Missing = {}; + cOAIDoc.definitions.Missing = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, [ @@ -1631,9 +1631,9 @@ function runTests (mode) { }); it('parameter', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.parameters = { + cOAIDoc.parameters = { missing: { name: 'missing', in: 'query', @@ -1642,10 +1642,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, [ @@ -1660,19 +1660,19 @@ function runTests (mode) { }); it('response', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.responses = { + cOAIDoc.responses = { Missing: { description: 'I am missing' } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, [ @@ -1687,19 +1687,19 @@ function runTests (mode) { }); it('securityDefinition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.securityDefinitions.missing = { + cOAIDoc.securityDefinitions.missing = { type: 'apiKey', name: 'api_key', in: 'header' }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, [ @@ -1714,15 +1714,15 @@ function runTests (mode) { }); it('security scope', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.securityDefinitions.petstore_auth.scopes.missing = 'I am missing'; + cOAIDoc.securityDefinitions.petstore_auth.scopes.missing = 'I am missing'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.errors, []); assert.deepEqual(results.warnings, [ @@ -1740,15 +1740,15 @@ function runTests (mode) { describe('unresolvable references', function () { describe('json reference', function () { it('local', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema.$ref = '#/definitions/Missing'; + cOAIDoc.paths['/pet'].post.parameters[0].schema.$ref = '#/definitions/Missing'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1764,15 +1764,15 @@ function runTests (mode) { }); it('remote', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema.$ref = 'fake.json'; + cOAIDoc.paths['/pet'].post.parameters[0].schema.$ref = 'fake.json'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); var error; assert.deepEqual(results.warnings, []); @@ -1791,17 +1791,17 @@ function runTests (mode) { describe('security definition', function () { it('global', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.security.push({ + cOAIDoc.security.push({ missing: [] }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1816,17 +1816,17 @@ function runTests (mode) { }); it('operation-level', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/store/inventory'].get.security.push({ + cOAIDoc.paths['/store/inventory'].get.security.push({ missing: [] }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1843,15 +1843,15 @@ function runTests (mode) { describe('security scope definition', function () { it('global', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.security[0].petstore_auth.push('missing'); + cOAIDoc.security[0].petstore_auth.push('missing'); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1866,19 +1866,19 @@ function runTests (mode) { }); it('operation-level', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/store/inventory'].get.security.push({ + cOAIDoc.paths['/store/inventory'].get.security.push({ 'petstore_auth': [ 'missing' ] }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results.warnings, []); assert.deepEqual(results.errors, [ @@ -1896,15 +1896,15 @@ function runTests (mode) { }); it('should return errors for JsonRefs errors', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema.$ref = '#definitions/Pet'; + cOAIDoc.paths['/pet'].post.parameters[0].schema.$ref = '#definitions/Pet'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.validate(), { + .then(function (apiDef) { + assert.deepEqual(apiDef.validate(), { errors: [ { code: 'INVALID_REFERENCE', @@ -1919,15 +1919,15 @@ function runTests (mode) { }); it('should return warnings for JsonRefs warnings', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema.extraField = 'This is an extra field'; + cOAIDoc.paths['/pet'].post.parameters[0].schema.extraField = 'This is an extra field'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var results = api.validate(); + .then(function (apiDef) { + var results = apiDef.validate(); assert.deepEqual(results, { errors: [], @@ -1944,8 +1944,8 @@ function runTests (mode) { }); describe('human readable errors for invalid schema', function () { - function validateError (api, defType) { - var results = api.validate(); + function validateError (apiDef, defType) { + var results = apiDef.validate(); assert.equal(results.errors.length, 1); assert.equal(results.warnings.length, 0); @@ -1953,87 +1953,87 @@ function runTests (mode) { } it('should handle parameter definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0] = {}; + cOAIDoc.paths['/pet'].post.parameters[0] = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'parameter'); + .then(function (apiDef) { + validateError(apiDef, 'parameter'); }) .then(done, done); }); it('should handle global parameter definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.parameters = { + cOAIDoc.parameters = { broken: {} }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'parameter'); + .then(function (apiDef) { + validateError(apiDef, 'parameter'); }) .then(done, done); }); it('should handle response definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.responses.default = {}; + cOAIDoc.paths['/pet'].post.responses.default = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'response'); + .then(function (apiDef) { + validateError(apiDef, 'response'); }) .then(done, done); }); it('should handle response schema definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.responses.default = { + cOAIDoc.paths['/pet'].post.responses.default = { description: 'A broken response', schema: [] }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'response'); + .then(function (apiDef) { + validateError(apiDef, 'response'); }) .then(done, done); }); it('should handle schema additionalProperties definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Broken = { + cOAIDoc.definitions.Broken = { type: 'object', additionalProperties: [] }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'schema additionalProperties'); + .then(function (apiDef) { + validateError(apiDef, 'schema additionalProperties'); }) .then(done, done); }); it('should handle schema items definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Broken = { + cOAIDoc.definitions.Broken = { type: 'object', properties: { urls: { @@ -2044,32 +2044,32 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'schema items'); + .then(function (apiDef) { + validateError(apiDef, 'schema items'); }) .then(done, done); }); it('should handle securityDefinitions definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.securityDefinitions.broken = {}; + cOAIDoc.securityDefinitions.broken = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'securityDefinitions'); + .then(function (apiDef) { + validateError(apiDef, 'securityDefinitions'); }) .then(done, done); }); it('should handle schema items definition', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.definitions.Broken = { + cOAIDoc.definitions.Broken = { type: 'object', properties: { urls: { @@ -2080,10 +2080,10 @@ function runTests (mode) { }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - validateError(api, 'schema items'); + .then(function (apiDef) { + validateError(apiDef, 'schema items'); }) .then(done, done); }); @@ -2092,9 +2092,9 @@ function runTests (mode) { }); } -describe('SwaggerApi', function () { - // Swagger document without references +describe('ApiDefinition', function () { + // OpenAPI document without references runTests('no-refs'); - // Swagger document with references + // OpenAPI document with references runTests('with-refs'); }); diff --git a/test/test-format-generators.js b/test/test-format-generators.js index 50a000de..4b7c7979 100644 --- a/test/test-format-generators.js +++ b/test/test-format-generators.js @@ -33,9 +33,9 @@ var Sway = helpers.getSway(); describe('format generators', function () { it('byte', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'byte', in: 'query', type: 'string', @@ -43,18 +43,18 @@ describe('format generators', function () { }); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isString(api.getOperation('/pet/findByStatus', 'get').getParameter('byte').getSample())); - }) - .then(done, done); + .then(function (apiDef) { + assert.ok(_.isString(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('byte').getSample())); + }) + .then(done, done); }); it('password', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'byte', in: 'query', type: 'string', @@ -62,11 +62,11 @@ describe('format generators', function () { }); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc + }) + .then(function (apiDef) { + assert.ok(_.isString(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('byte').getSample())); }) - .then(function (api) { - assert.ok(_.isString(api.getOperation('/pet/findByStatus', 'get').getParameter('byte').getSample())); - }) - .then(done, done); + .then(done, done); }); }); diff --git a/test/test-format-validators.js b/test/test-format-validators.js index 26220728..010cb85f 100644 --- a/test/test-format-validators.js +++ b/test/test-format-validators.js @@ -33,9 +33,9 @@ var Sway = helpers.getSway(); describe('format validators', function () { it('always truthy', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'byte', in: 'query', type: 'string', @@ -43,7 +43,7 @@ describe('format validators', function () { default: 'pretendThisIsABase64EncodedString' }); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'double', in: 'query', type: 'number', @@ -51,7 +51,7 @@ describe('format validators', function () { default: 1.1 }); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'float', in: 'query', type: 'number', @@ -59,7 +59,7 @@ describe('format validators', function () { default: 1.1 }); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'password', in: 'query', type: 'string', @@ -67,9 +67,9 @@ describe('format validators', function () { default: 'somepassword' }); - Sway.create({definition: cSwaggerDoc}) - .then(function (api) { - assert.ok(api.validate()); + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + assert.ok(apiDef.validate()); }) .then(done, done); }); @@ -79,9 +79,9 @@ describe('format validators', function () { var goodParamValue; before(function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'int32', in: 'query', type: 'integer', @@ -89,14 +89,14 @@ describe('format validators', function () { }); // Test the format validator using parameter validation - Sway.create({definition: cSwaggerDoc}) - .then(function (api) { - badParamValue = api.getOperation('/pet/findByStatus', 'get').getParameter('int32').getValue({ + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + badParamValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('int32').getValue({ query: { int32: 1.1 } }); - goodParamValue = api.getOperation('/pet/findByStatus', 'get').getParameter('int32').getValue({ + goodParamValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('int32').getValue({ query: { int32: 1 } @@ -143,9 +143,9 @@ describe('format validators', function () { var goodParamValue; before(function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'int64', in: 'query', type: 'integer', @@ -153,14 +153,14 @@ describe('format validators', function () { }); // Test the format validator using parameter validation - Sway.create({definition: cSwaggerDoc}) - .then(function (api) { - badParamValue = api.getOperation('/pet/findByStatus', 'get').getParameter('int64').getValue({ + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + badParamValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('int64').getValue({ query: { int64: 1.1 } }); - goodParamValue = api.getOperation('/pet/findByStatus', 'get').getParameter('int64').getValue({ + goodParamValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('int64').getValue({ query: { int64: 1 } diff --git a/test/test-issues.js b/test/test-issues.js index 7cfdc740..4dc89124 100644 --- a/test/test-issues.js +++ b/test/test-issues.js @@ -34,23 +34,23 @@ var Sway = helpers.getSway(); // TODO: Move these to their respective test-*.js files describe('issues', function () { - var swaggerApi; + var apiDefinition; before(function (done) { - helpers.getSwaggerApi(function (api) { - swaggerApi = api; + helpers.getApiDefinition(function (apiDef) { + apiDefinition = apiDef; done(); }); }); it('should trap document processing errors (Issue 16)', function (done) { - var cSwagger = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].get = null; + cOAIDoc.paths['/pet/{petId}'].get = null; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) .then(function () { helpers.shouldHadFailed(); @@ -67,15 +67,15 @@ describe('issues', function () { }); it('should support relative references (and to YAML files) (Issue 17)', function (done) { - helpers.getSwaggerApiRelativeRefs(function (swaggerApiRelativeRefs) { - assert.ok(_.isUndefined(swaggerApiRelativeRefs.definitionFullyResolved.info.$ref)); - assert.ok(Object.keys(swaggerApiRelativeRefs.definitionFullyResolved.definitions).length > 1); - assert.ok(Object.keys(swaggerApiRelativeRefs.definitionFullyResolved.paths).length > 1); - assert.equal(swaggerApiRelativeRefs.definitionFullyResolved.info.title, 'Swagger Petstore'); - assert.ok(_.isPlainObject(swaggerApiRelativeRefs.definitionFullyResolved.definitions.Pet)); - assert.ok(_.isPlainObject(swaggerApiRelativeRefs.definitionFullyResolved.paths['/pet/{petId}'].get)); - - _.each(swaggerApiRelativeRefs.references, function (entry) { + helpers.getApiDefinitionRelativeRefs(function (apiDefinitionRelativeRefs) { + assert.ok(_.isUndefined(apiDefinitionRelativeRefs.definitionFullyResolved.info.$ref)); + assert.ok(Object.keys(apiDefinitionRelativeRefs.definitionFullyResolved.definitions).length > 1); + assert.ok(Object.keys(apiDefinitionRelativeRefs.definitionFullyResolved.paths).length > 1); + assert.equal(apiDefinitionRelativeRefs.definitionFullyResolved.info.title, 'Swagger Petstore'); + assert.ok(_.isPlainObject(apiDefinitionRelativeRefs.definitionFullyResolved.definitions.Pet)); + assert.ok(_.isPlainObject(apiDefinitionRelativeRefs.definitionFullyResolved.paths['/pet/{petId}'].get)); + + _.each(apiDefinitionRelativeRefs.references, function (entry) { assert.ok(typeof entry.missing === 'undefined'); }); @@ -84,29 +84,29 @@ describe('issues', function () { }); it('should not throw an error for unknown formats (Issue 20)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.definitions.Pet.properties.name.format = 'unknown'; + cOAIDoc.definitions.Pet.properties.name.format = 'unknown'; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.ok(api.validate()); + .then(function (apiDef) { + assert.ok(apiDef.validate()); }) .then(done, done); }); it('should handle default and id fields (Issue 29)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.definitions.Pet.properties.default = {type: 'string'}; + cOAIDoc.definitions.Pet.properties.default = {type: 'string'}; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.ok(api.validate()); + .then(function (apiDef) { + assert.ok(apiDef.validate()); }) .then(done, done); }); @@ -117,7 +117,7 @@ describe('issues', function () { mockReq.url = '/pet/1'; try { - swaggerApi.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue(mockReq); + apiDefinition.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue(mockReq); } catch (err) { helpers.shouldNotHadFailed(); } @@ -128,7 +128,7 @@ describe('issues', function () { originalname: 'swagger.yaml', mimetype: 'application/x-yaml' }; - var paramValue = swaggerApi.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('file').getValue({ + var paramValue = apiDefinition.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('file').getValue({ url: '/pet/1/uploadImage', files: { file: mockFile @@ -142,9 +142,9 @@ describe('issues', function () { }); it('should handle allOf $ref to a definition with circular reference (Issue 38)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.definitions.A = { + cOAIDoc.definitions.A = { allOf: [ { $ref: '#/definitions/B' @@ -157,7 +157,7 @@ describe('issues', function () { } }; - cSwaggerDoc.definitions.B = { + cOAIDoc.definitions.B = { properties: { a: { $ref: '#/definitions/A' @@ -165,7 +165,7 @@ describe('issues', function () { } }; - cSwaggerDoc.definitions.C = { + cOAIDoc.definitions.C = { allOf: [ { $ref: '#/definitions/A' @@ -174,18 +174,18 @@ describe('issues', function () { }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.ok(api.validate()); + .then(function (apiDef) { + assert.ok(apiDef.validate()); }) .then(done, done); }); it('string value for object type (Issue #46)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/user/login'].get.responses['200'].schema = { + cOAIDoc.paths['/user/login'].get.responses['200'].schema = { properties: { message: { type: 'string' @@ -195,12 +195,12 @@ describe('issues', function () { }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var results; - results = api.getOperation('/user/login', 'get').validateResponse({ + results = apiDef.getOperation('/user/login', 'get').validateResponse({ body: 'If-Match header required', encoding: 'utf-8', headers: { @@ -233,9 +233,9 @@ describe('issues', function () { }); it('Buffer value for object type (Issue #46)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/user/login'].get.responses['200'].schema = { + cOAIDoc.paths['/user/login'].get.responses['200'].schema = { properties: { message: { type: 'string' @@ -245,9 +245,9 @@ describe('issues', function () { }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var rawValue = 'If-Match header required'; var results; var value; @@ -259,7 +259,7 @@ describe('issues', function () { value = rawValue; } - results = api.getOperation('/user/login', 'get').validateResponse({ + results = apiDef.getOperation('/user/login', 'get').validateResponse({ body: value, encoding: 'utf-8', headers: { @@ -292,15 +292,15 @@ describe('issues', function () { }); it('should handle hierchical query parameters (Issue 39)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'page[limit]', in: 'query', description: 'The maximum number of records to return', type: 'integer' }); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'page[nested][offset]', in: 'query', description: 'The page', @@ -308,9 +308,9 @@ describe('issues', function () { }); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var req = { query: { page: { @@ -321,9 +321,9 @@ describe('issues', function () { } } }; - var pageLimitParam = api.getOperation('/pet/findByStatus', 'get').getParameter('page[limit]'); + var pageLimitParam = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('page[limit]'); var pageLimitParamValue = pageLimitParam.getValue(req); - var pageOffsetParam = api.getOperation('/pet/findByStatus', 'get').getParameter('page[nested][offset]'); + var pageOffsetParam = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('page[nested][offset]'); var pageOffsetParamValue = pageOffsetParam.getValue(req); assert.equal(pageLimitParamValue.raw, req.query.page.limit) @@ -336,9 +336,9 @@ describe('issues', function () { }); it('should not validate optional parameters that are undefined (Issue 60)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'alive', in: 'query', description: 'Whether the animal is alive or not', @@ -346,10 +346,10 @@ describe('issues', function () { }); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').validateRequest({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').validateRequest({ query: {} }), { errors: [], @@ -360,9 +360,9 @@ describe('issues', function () { }); it('should not throw an error for optional strings that are undefined (Issue 60)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'nickname', in: 'query', description: 'The pet\' nickname', @@ -370,10 +370,10 @@ describe('issues', function () { }); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').validateRequest({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').validateRequest({ query: {} }), { errors: [], @@ -385,7 +385,7 @@ describe('issues', function () { describe('should handle mixed-case headers for validation (Issue 67)', function () { it('parameter processing', function () { - var parameterValue = swaggerApi.getOperation('/pet/{petId}', 'DELETE').getParameter('api_key').getValue({ + var parameterValue = apiDefinition.getOperation('/pet/{petId}', 'DELETE').getParameter('api_key').getValue({ headers: { 'ApI_KeY': 'Testing' } @@ -395,7 +395,7 @@ describe('issues', function () { }); it('request validation', function () { - var results = swaggerApi.getOperation('/pet', 'POST').validateRequest({ + var results = apiDefinition.getOperation('/pet', 'POST').validateRequest({ url: '/pet', body: { name: 'Test Pet', @@ -411,7 +411,7 @@ describe('issues', function () { }); it('response validation', function () { - var results = swaggerApi.getOperation('/pet/findByStatus', 'GET').validateResponse({ + var results = apiDefinition.getOperation('/pet/findByStatus', 'GET').validateResponse({ headers: { 'CoNtEnT-TyPe': 'application/json' }, @@ -430,19 +430,19 @@ describe('issues', function () { }); describe('should handle circular documents and inputs', function () { - var swaggerApiCircular; + var apiDefinitionCircular; before(function (done) { - helpers.getSwaggerApiCircular(function (api) { - swaggerApiCircular = api; + helpers.getApiDefinitionCircular(function (apiDef) { + apiDefinitionCircular = apiDef; done(); }); }); - it('SwaggerApi#validate', function () { - var circularDef = swaggerApiCircular.definitionFullyResolved.definitions.CircularReference; - var results = swaggerApiCircular.validate(); + it('ApiDefinition#validate', function () { + var circularDef = apiDefinitionCircular.definitionFullyResolved.definitions.CircularReference; + var results = apiDefinitionCircular.validate(); assert.equal(results.warnings.length, 0); assert.equal(results.errors.length, 0); diff --git a/test/test-operation.js b/test/test-operation.js index 02d3ef6c..ee82a85f 100644 --- a/test/test-operation.js +++ b/test/test-operation.js @@ -33,29 +33,29 @@ var Sway = helpers.getSway(); function runTests (mode) { var label = mode === 'with-refs' ? 'with' : 'without'; - var swaggerApi; + var apiDefinition; before(function (done) { - function callback (api) { - swaggerApi = api; + function callback (apiDef) { + apiDefinition = apiDef; done(); } if (mode === 'with-refs') { - helpers.getSwaggerApiRelativeRefs(callback); + helpers.getApiDefinitionRelativeRefs(callback); } else { - helpers.getSwaggerApi(callback); + helpers.getApiDefinition(callback); } }); - describe('should handle Swagger document ' + label + ' relative references', function () { + describe('should handle OpenAPI document ' + label + ' relative references', function () { it('should handle composite parameters', function () { var method = 'post'; var path = '/pet/{petId}'; - var operation = swaggerApi.getOperation(path, method); - var pathDef = swaggerApi.definitionFullyResolved.paths['/pet/{petId}']; + var operation = apiDefinition.getOperation(path, method); + var pathDef = apiDefinition.definitionFullyResolved.paths['/pet/{petId}']; assert.equal(operation.pathObject.path, path); assert.equal(operation.method, method); @@ -71,9 +71,9 @@ function runTests (mode) { it('should handle explicit parameters', function () { var method = 'post'; var path = '/pet/{petId}/uploadImage'; - var operation = swaggerApi.getOperation(path, method); - var pathDef = swaggerApi.definitionRemotesResolved.paths[path]; - var pathDefFullyResolved = swaggerApi.definitionFullyResolved.paths[path]; + var operation = apiDefinition.getOperation(path, method); + var pathDef = apiDefinition.definitionRemotesResolved.paths[path]; + var pathDefFullyResolved = apiDefinition.definitionFullyResolved.paths[path]; assert.equal(operation.pathObject.path, path); assert.equal(operation.method, method); @@ -113,15 +113,15 @@ function runTests (mode) { it('should take global security definitions', function () { var method = 'post'; var path = '/pet/{petId}/uploadImage'; - var operation = swaggerApi.getOperation(path, method); + var operation = apiDefinition.getOperation(path, method); assert.ok(typeof operation.securityDefinitions !== 'undefined', 'Should define securityDefinitions'); assert.ok(typeof operation.securityDefinitions['petstore_auth'] !== 'undefined', 'Should take \'petstore_auth\' from global security'); - assert.deepEqual(operation.securityDefinitions['petstore_auth'], swaggerApi.securityDefinitions['petstore_auth']); + assert.deepEqual(operation.securityDefinitions['petstore_auth'], apiDefinition.securityDefinitions['petstore_auth']); }); it('should handle explicit parameters', function () { - assert.deepEqual(swaggerApi.getOperation('/user/{username}', 'get').security, [ + assert.deepEqual(apiDefinition.getOperation('/user/{username}', 'get').security, [ { 'api_key': [] } @@ -149,38 +149,38 @@ function runTests (mode) { } it('should create proper regexp (with basePath)', function () { - validateRegExps(swaggerApi, swaggerApi.basePath); + validateRegExps(apiDefinition, apiDefinition.basePath); }); it('should create proper regexp (with basePath ending in slash)', function (done) { - var cSwagger = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwagger.basePath = '/'; + cOAIDoc.basePath = '/'; - Sway.create({definition: cSwagger}) - .then(function (api) { - validateRegExps(api, ''); + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + validateRegExps(apiDef, ''); }) .then(done, done); }); it('should create proper regexp (without basePath)', function (done) { - var cSwagger = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - delete cSwagger.basePath; + delete cOAIDoc.basePath; - Sway.create({definition: cSwagger}) - .then(function (api) { - validateRegExps(api, ''); + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + validateRegExps(apiDef, ''); }) .then(done, done); }); describe('#getParameter', function () { it('should return the proper response', function (done) { - var cSwagger = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].get.parameters = [ + cOAIDoc.paths['/pet/{petId}'].get.parameters = [ { description: 'This is a duplicate name but different location', name: 'petId', @@ -189,17 +189,17 @@ function runTests (mode) { } ]; - Sway.create({definition: cSwagger}) - .then(function (api) { - var operation = api.getOperation('/pet/{petId}', 'get'); + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { + var operation = apiDef.getOperation('/pet/{petId}', 'get'); assert.ok(_.isUndefined(operation.getParameter())); assert.ok(_.isUndefined(operation.getParameter('missing'))); assert.ok(_.isUndefined(operation.getParameter('petId', 'header'))); assert.deepEqual(operation.getParameter('petId', 'path').definition, - cSwagger.paths['/pet/{petId}'].parameters[0]); + cOAIDoc.paths['/pet/{petId}'].parameters[0]); assert.deepEqual(operation.getParameter('petId', 'query').definition, - cSwagger.paths['/pet/{petId}'].get.parameters[0]); + cOAIDoc.paths['/pet/{petId}'].get.parameters[0]); }) .then(done, done); }); @@ -208,7 +208,7 @@ function runTests (mode) { // More vigorous testing of the Parameter object itself and the parameter composition are done elsewhere describe('#getParameters', function () { it('should return the proper parameter objects', function () { - var operation = swaggerApi.getOperation('/pet/{petId}', 'post'); + var operation = apiDefinition.getOperation('/pet/{petId}', 'post'); assert.deepEqual(operation.getParameters(), operation.parameterObjects); }); @@ -216,11 +216,11 @@ function runTests (mode) { describe('#getSecurity', function () { it('should return the proper parameter objects', function () { - var op1 = swaggerApi.getOperation('/pet/{petId}', 'post'); - var op2 = swaggerApi.getOperation('/store/inventory', 'get'); + var op1 = apiDefinition.getOperation('/pet/{petId}', 'post'); + var op2 = apiDefinition.getOperation('/store/inventory', 'get'); assert.notDeepEqual(op1.getSecurity, op1.security); - assert.deepEqual(op1.getSecurity(), swaggerApi.definition.security); + assert.deepEqual(op1.getSecurity(), apiDefinition.definition.security); assert.deepEqual(op2.getSecurity(), op2.security); }); @@ -239,7 +239,7 @@ function runTests (mode) { [[{}, {strictMode: {header: 'test'}}], 'options.strictMode.header must be a boolean'], [[{}, {strictMode: {query: 'test'}}], 'options.strictMode.query must be a boolean'] ]; - var operation = swaggerApi.getOperation('/pet', 'post'); + var operation = apiDefinition.getOperation('/pet', 'post'); _.forEach(scenarios, function (scenario) { try { @@ -266,7 +266,7 @@ function runTests (mode) { before(function () { // this path+op doesn't specify 'consumes' - operation = swaggerApi.getOperation('/pet/findByStatus', 'get'); + operation = apiDefinition.getOperation('/pet/findByStatus', 'get'); }); it('should not return an unsupported content-type error', function () { @@ -290,7 +290,7 @@ function runTests (mode) { var operation; before(function () { - operation = swaggerApi.getOperation('/pet', 'post'); + operation = apiDefinition.getOperation('/pet', 'post'); }); it('should return an error for an unsupported value', function () { @@ -344,17 +344,17 @@ function runTests (mode) { // We only need one test to make sure that we're using the global consumes it('should handle global level consumes', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.consumes = cSwaggerDoc.paths['/pet'].post.consumes; + cOAIDoc.consumes = cOAIDoc.paths['/pet'].post.consumes; - delete cSwaggerDoc.paths['/pet'].post.consumes; + delete cOAIDoc.paths['/pet'].post.consumes; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var operation = api.getOperation('/pet', 'post'); + .then(function (apiDef) { + var operation = apiDef.getOperation('/pet', 'post'); var request = _.cloneDeep(baseRequest); var results; @@ -378,15 +378,15 @@ function runTests (mode) { }); it('should handle mime-type parameters (exact match)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); var mimeType = 'application/x-yaml; charset=utf-8'; - cSwaggerDoc.paths['/pet'].post.consumes.push(mimeType); + cOAIDoc.paths['/pet'].post.consumes.push(mimeType); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var request = _.cloneDeep(baseRequest); var results; @@ -394,7 +394,7 @@ function runTests (mode) { 'content-type': mimeType }; - results = api.getOperation('/pet', 'post').validateRequest(request); + results = apiDef.getOperation('/pet', 'post').validateRequest(request); assert.equal(results.warnings.length, 0); assert.equal(results.errors.length, 0); @@ -403,16 +403,16 @@ function runTests (mode) { }); it('should not return an INVALID_CONENT_TYPE error for empty body (Issue 164)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/user'].post.parameters[0].required = false; - cSwaggerDoc.paths['/user'].post.consumes = ['application/json']; + cOAIDoc.paths['/user'].post.parameters[0].required = false; + cOAIDoc.paths['/user'].post.consumes = ['application/json']; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/user', 'post').validateRequest({}); + .then(function (apiDef) { + var results = apiDef.getOperation('/user', 'post').validateRequest({}); assert.equal(results.warnings.length, 0); assert.equal(results.errors.length, 0); @@ -426,7 +426,7 @@ function runTests (mode) { // ParameterValue's validation and which is heavily tested elsewhere. it('should return an error for invalid non-primitive parameters', function () { - var operation = swaggerApi.getOperation('/pet', 'post'); + var operation = apiDefinition.getOperation('/pet', 'post'); var results = operation.validateRequest({ url: '/v2/pet', headers: { @@ -463,7 +463,7 @@ function runTests (mode) { }); it('should return an error for invalid primitive parameters', function () { - var operation = swaggerApi.getOperation('/pet/{petId}/uploadImage', 'post'); + var operation = apiDefinition.getOperation('/pet/{petId}/uploadImage', 'post'); var results = operation.validateRequest({ url: '/v2/pet/notANumber/uploadImage', headers: { @@ -495,7 +495,7 @@ function runTests (mode) { }); it('should not return an error for valid parameters', function () { - var operation = swaggerApi.getOperation('/pet/{petId}', 'post'); + var operation = apiDefinition.getOperation('/pet/{petId}', 'post'); var results = operation.validateRequest({ url: '/v2/pet/1', headers: { @@ -555,7 +555,7 @@ function runTests (mode) { } }], ['header']] ]; - var operation = swaggerApi.getOperation('/pet/{petId}', 'post'); + var operation = apiDefinition.getOperation('/pet/{petId}', 'post'); _.forEach(scenarios, function (scenario) { var results = operation.validateRequest.apply(operation, [invalidRequest].concat(scenario[0])); @@ -599,7 +599,7 @@ function runTests (mode) { message: 'This is a fake error!', path: [] }; - var operation = swaggerApi.getOperation('/pet/findByStatus', 'get'); + var operation = apiDefinition.getOperation('/pet/findByStatus', 'get'); var req = { query: { status: 'sold' @@ -659,7 +659,7 @@ function runTests (mode) { [[res, {strictMode: {header: 'test'}}], 'options.strictMode.header must be a boolean'], [[res, {strictMode: {query: 'test'}}], 'options.strictMode.query must be a boolean'] ]; - var operation = swaggerApi.getOperation('/pet/findByStatus', 'get'); + var operation = apiDefinition.getOperation('/pet/findByStatus', 'get'); _.forEach(scenarios, function (scenario) { try { @@ -673,18 +673,18 @@ function runTests (mode) { }); it('should not return an INVALID_CONENT_TYPE error for empty body (Issue 164)', function (done) { - var cSwaggerDoc = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwaggerDoc.paths['/user'].post.produces = ['application/xml']; - cSwaggerDoc.paths['/user'].post.responses.default.schema = { + cOAIDoc.paths['/user'].post.produces = ['application/xml']; + cOAIDoc.paths['/user'].post.responses.default.schema = { type: 'object' }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/user', 'post').validateResponse({ + .then(function (apiDef) { + var results = apiDef.getOperation('/user', 'post').validateResponse({ headers: { 'Content-Type': 'application/json' } @@ -713,7 +713,7 @@ function runTests (mode) { // We only test that Operation#validateResponse handles missing responses because the testing of the remainder // is in test-response.js. it('should return an error for undefined response', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'post').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'post').validateResponse({ statusCode: 201 }); @@ -728,7 +728,7 @@ function runTests (mode) { }); it('should use the \'default\' response for undefined response status code', function () { - var results = swaggerApi.getOperation('/user', 'post').validateResponse({ + var results = apiDefinition.getOperation('/user', 'post').validateResponse({ statusCode: 201 }); @@ -753,7 +753,7 @@ function runTests (mode) { 'Content-Type': 'application/json' } }; - var resObj = swaggerApi.getOperation('/pet/findByStatus', 'get').getResponse(200); + var resObj = apiDefinition.getOperation('/pet/findByStatus', 'get').getResponse(200); var warning = { code: 'FAKE_WARNING', message: 'This is a fake warning!', @@ -838,19 +838,19 @@ function runTests (mode) { } }], ['header']] ]; - var cSwagger = _.cloneDeep(helpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(helpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].post.responses['default'] = { + cOAIDoc.paths['/pet/{petId}'].post.responses['default'] = { description: 'successful operation', schema: { $ref: '#/definitions/Pet' } }; - Sway.create({definition: cSwagger}) - .then(function (api) { + Sway.create({definition: cOAIDoc}) + .then(function (apiDef) { _.forEach(scenarios, function (scenario) { - var operation = api.getOperation('/pet/{petId}', 'post'); + var operation = apiDef.getOperation('/pet/{petId}', 'post'); var results = operation.validateResponse.apply(operation, [invalidRequest].concat(scenario[0])); assert.equal(results.warnings.length, 0); @@ -873,8 +873,8 @@ function runTests (mode) { } describe('Operation', function () { - // Swagger document without references + // OpenAPI document without references runTests('no-refs'); - // Swagger document with references + // OpenAPI document with references runTests('with-refs'); }); diff --git a/test/test-parameter.js b/test/test-parameter.js index 27f0f9a5..4709ccd3 100644 --- a/test/test-parameter.js +++ b/test/test-parameter.js @@ -34,28 +34,28 @@ var Sway = tHelpers.getSway(); function runTests (mode) { var label = mode === 'with-refs' ? 'with' : 'without'; - var swaggerApi; + var apiDefinition; before(function (done) { - function callback (api) { - swaggerApi = api; + function callback (apiDef) { + apiDefinition = apiDef; done(); } if (mode === 'with-refs') { - tHelpers.getSwaggerApiRelativeRefs(callback); + tHelpers.getApiDefinitionRelativeRefs(callback); } else { - tHelpers.getSwaggerApi(callback); + tHelpers.getApiDefinition(callback); } }); - describe('should handle Swagger document ' + label + ' relative references', function () { + describe('should handle OpenAPI document ' + label + ' relative references', function () { it('should have proper structure', function () { var path = '/pet/{petId}'; - var pathDef = swaggerApi.definitionFullyResolved.paths[path]; + var pathDef = apiDefinition.definitionFullyResolved.paths[path]; - _.each(swaggerApi.getOperation(path, 'post').getParameters(), function (parameter, index) { + _.each(apiDefinition.getOperation(path, 'post').getParameters(), function (parameter, index) { var ptr = '#/paths/~1pet~1{petId}/'; var def; @@ -74,14 +74,14 @@ function runTests (mode) { describe('#getSchema', function () { it('should handle parameter with explicit schema definition (body parameter)', function () { - var schema = swaggerApi.getOperation('/pet', 'post').getParameter('body').schema; + var schema = apiDefinition.getOperation('/pet', 'post').getParameter('body').schema; // Make sure the generated JSON Schema is identical to its referenced schema - assert.deepEqual(schema, swaggerApi.definitionFullyResolved.definitions.Pet); + assert.deepEqual(schema, apiDefinition.definitionFullyResolved.definitions.Pet); // Make sure the generated JSON Schema validates an invalid object properly try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, schema, {}); + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, schema, {}); } catch (err) { assert.equal(err.code, 'SCHEMA_VALIDATION_FAILED'); assert.equal(err.message, 'JSON Schema validation failed'); @@ -102,7 +102,7 @@ function runTests (mode) { // Make sure the generated JSON Schema validates a valid object properly try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, schema, { + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, schema, { photoUrls: [], name: 'Test Pet' }); @@ -112,7 +112,7 @@ function runTests (mode) { }); it('should handle parameter with schema-like definition (non-body parameter)', function () { - var schema = swaggerApi.getOperation('/pet/findByTags', 'get').getParameter('tags').schema; + var schema = apiDefinition.getOperation('/pet/findByTags', 'get').getParameter('tags').schema; // Make sure the generated JSON Schema is as expected assert.deepEqual(schema, { @@ -125,7 +125,7 @@ function runTests (mode) { // Make sure the generated JSON Schema validates an invalid object properly try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, schema, 1); + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, schema, 1); } catch (err) { assert.equal(err.code, 'SCHEMA_VALIDATION_FAILED'); assert.equal(err.message, 'JSON Schema validation failed'); @@ -142,7 +142,7 @@ function runTests (mode) { // Make sure the generated JSON Schema validates a valid object properly try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, schema, [ + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, schema, [ 'tag1', 'tag2', 'tag3' @@ -155,10 +155,10 @@ function runTests (mode) { describe('#getSample', function () { it('should handle parameter with explicit schema definition (body parameter)', function () { - var parameter = swaggerApi.getOperation('/pet', 'post').getParameter('body'); + var parameter = apiDefinition.getOperation('/pet', 'post').getParameter('body'); try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, parameter.schema, parameter.getSample()); } catch (err) { @@ -167,10 +167,10 @@ function runTests (mode) { }); it('should handle parameter with schema-like definition (non-body parameter)', function () { - var parameter = swaggerApi.getOperation('/pet/findByTags', 'get').getParameter('tags'); + var parameter = apiDefinition.getOperation('/pet/findByTags', 'get').getParameter('tags'); try { - helpers.validateAgainstSchema(tHelpers.swaggerDocValidator, + helpers.validateAgainstSchema(tHelpers.oaiDocValidator, parameter.schema, parameter.getSample()); } catch (err) { @@ -179,9 +179,9 @@ function runTests (mode) { }); it('should handle parameter with date format (Issue 99)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters.push({ + cOAIDoc.paths['/pet'].post.parameters.push({ in: 'query', name: 'availableDate', description: 'The date the Pet is available', @@ -191,16 +191,16 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isString(api.getOperation('/pet', 'post').getParameter('availableDate').getSample())); + .then(function (apiDef) { + assert.ok(_.isString(apiDef.getOperation('/pet', 'post').getParameter('availableDate').getSample())); }) .then(done, done); }); it('should handle parameter with file type (Issue 159)', function () { - assert.ok(_.isString(swaggerApi.getOperation('/pet/{petId}/uploadImage', + assert.ok(_.isString(apiDefinition.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('file').getSample())); }); }); @@ -211,7 +211,7 @@ function runTests (mode) { [[], 'req is required'], [[true], 'req must be an object'] ]; - var param = swaggerApi.getOperation('/pet', 'post').getParameter('body'); + var param = apiDefinition.getOperation('/pet', 'post').getParameter('body'); _.forEach(scenarios, function (scenario) { try { @@ -229,7 +229,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet', 'post').getParameter('body'); + parameter = apiDefinition.getOperation('/pet', 'post').getParameter('body'); }); it('missing value', function () { @@ -251,7 +251,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('file'); + parameter = apiDefinition.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('file'); }); it('missing req.files', function () { @@ -283,7 +283,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('optionalFile'); + parameter = apiDefinition.getOperation('/pet/{petId}/uploadImage', 'post').getParameter('optionalFile'); }); it('missing req.files', function () { @@ -299,7 +299,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'post').getParameter('name'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'post').getParameter('name'); }); it('missing req.body', function () { @@ -332,7 +332,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'post').getParameter('status'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'post').getParameter('status'); }); it('missing req.body', function () { @@ -348,7 +348,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'delete').getParameter('api_key'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'delete').getParameter('api_key'); }); it('missing req.headers', function () { @@ -394,7 +394,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'delete').getParameter('optional_header'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'delete').getParameter('optional_header'); }); it('missing req.headers', function () { @@ -410,7 +410,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'post').getParameter('petId'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'post').getParameter('petId'); }); it('missing req.url', function () { @@ -442,9 +442,9 @@ function runTests (mode) { }); it('provided value (multiple)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}/family/{memberId}'] = { + cOAIDoc.paths['/pet/{petId}/family/{memberId}'] = { parameters: [ { name: 'petId', @@ -464,15 +464,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - _.each(api.getOperation('/pet/{petId}/family/{memberId}', 'get').getParameters(), function (param) { + .then(function (apiDef) { + _.each(apiDef.getOperation('/pet/{petId}/family/{memberId}', 'get').getParameters(), function (param) { var expected; switch (param.name) { @@ -511,7 +511,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status'); + parameter = apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status'); }); it('missing req.query', function () { @@ -542,16 +542,16 @@ function runTests (mode) { }); it('invalid \'in\' value', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].parameters[0].in = 'invalid'; + cOAIDoc.paths['/pet/{petId}'].parameters[0].in = 'invalid'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { try { - api.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue({}); + apiDef.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue({}); tHelpers.shouldHadFailed(); } catch (err) { @@ -563,7 +563,7 @@ function runTests (mode) { it('missing request', function () { try { - swaggerApi.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue(); + apiDefinition.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue(); tHelpers.shouldHadFailed(); } catch (err) { @@ -577,7 +577,7 @@ function runTests (mode) { var parameter; before(function () { - parameter = swaggerApi.getOperation('/pet/{petId}', 'get').getParameter('petId'); + parameter = apiDefinition.getOperation('/pet/{petId}', 'get').getParameter('petId'); }); it('never processed', function () { @@ -601,9 +601,9 @@ function runTests (mode) { describe('default values', function () { it('provided (array items array)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].items = [ + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items = [ { type: 'string', default: 'available' @@ -614,10 +614,10 @@ function runTests (mode) { ]; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value, ['available', undefined]); }) @@ -625,13 +625,13 @@ function runTests (mode) { }); it('provided (array items object)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value, ['available']); }) @@ -639,13 +639,13 @@ function runTests (mode) { }); it('provided (non-array)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.equal(api.getOperation('/pet/{petId}', 'delete').getParameter('api_key').getValue({ + .then(function (apiDef) { + assert.equal(apiDef.getOperation('/pet/{petId}', 'delete').getParameter('api_key').getValue({ headers: {} }).value, ''); }) @@ -653,20 +653,20 @@ function runTests (mode) { }); it('provided (global array default)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].items = [ + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items = [ { type: 'string', } ]; - cSwagger.paths['/pet/findByStatus'].get.parameters[0].default = ['available', 'pending']; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].default = ['available', 'pending']; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value, ['available', 'pending']); }) @@ -674,15 +674,15 @@ function runTests (mode) { }); it('provided (global array default + items default) : should take the items default', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].default = ['available', 'pending']; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].default = ['available', 'pending']; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value, ['available']); }) @@ -690,9 +690,9 @@ function runTests (mode) { }); it('missing (array items array)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].items = [ + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items = [ { type: 'string' }, @@ -702,10 +702,10 @@ function runTests (mode) { ]; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isUndefined(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.ok(_.isUndefined(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value)); }) @@ -713,15 +713,15 @@ function runTests (mode) { }); it('missing (array items object)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths['/pet/findByStatus'].get.parameters[0].items.default; + delete cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items.default; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isUndefined(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.ok(_.isUndefined(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }).value)); }) @@ -729,13 +729,13 @@ function runTests (mode) { }); it('missing (non-array)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isUndefined(api.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue({ + .then(function (apiDef) { + assert.ok(_.isUndefined(apiDef.getOperation('/pet/{petId}', 'get').getParameter('petId').getValue({ url: '/v2/pet' }).value)); }) @@ -744,9 +744,9 @@ function runTests (mode) { }); it('optional value', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters.push({ + cOAIDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'age', type: 'integer', in: 'query', @@ -754,10 +754,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var optionalValue = api.getOperation('/pet/findByStatus', 'get').getParameter('age').getValue({ + .then(function (apiDef) { + var optionalValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('age').getValue({ query: {} }); @@ -781,9 +781,9 @@ function runTests (mode) { var singleStrBooleanLikeValue; before(function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ name: 'versions', in: 'query', type: 'array', @@ -794,9 +794,9 @@ function runTests (mode) { // Test primitive values, because req.query.PARAM will return a primitive // if only one is passed to the query param. - Sway.create({definition: cSwaggerDoc}) - .then(function (api) { - var parameter = api.getOperation('/pet/findByStatus', 'get').getParameter('versions'); + Sway.create({definition: coaiDoc}) + .then(function (apiDef) { + var parameter = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('versions'); // Test a string value that JSON.parse would coerse to Number singleNumParamValue = parameter.getValue({ @@ -828,9 +828,9 @@ function runTests (mode) { describe('array', function () { it('items array', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].items = [ + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].items = [ { type: 'string' }, @@ -840,10 +840,10 @@ function runTests (mode) { ]; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: [ 'one', 'two' @@ -855,7 +855,7 @@ function runTests (mode) { }); it('items object', function () { - assert.deepEqual(swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + assert.deepEqual(apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: [ 'available', 'pending' @@ -865,7 +865,7 @@ function runTests (mode) { }); it('non-array JSON string request value', function () { - assert.deepEqual(swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + assert.deepEqual(apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: '["pending"]' } @@ -873,7 +873,7 @@ function runTests (mode) { }); it('non-array string request value', function () { - assert.deepEqual(swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + assert.deepEqual(apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'pending' } @@ -885,7 +885,7 @@ function runTests (mode) { }); it('array request value', function () { - assert.deepEqual(swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + assert.deepEqual(apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: ['available', 'pending'] } @@ -906,15 +906,15 @@ function runTests (mode) { describe('collectionFormat', function () { it('default (csv)', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - delete cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat; + delete cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available,pending' } @@ -924,15 +924,15 @@ function runTests (mode) { }); it('csv', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'csv'; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'csv'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available,pending' } @@ -943,13 +943,13 @@ function runTests (mode) { describe('multi', function () { it('multiple values', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: [ 'available', 'pending' @@ -963,13 +963,13 @@ function runTests (mode) { // This test is required to make sure that when the query string parser only sees one item that an // array is still returned. it('single value', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available' } @@ -980,15 +980,15 @@ function runTests (mode) { }); it('pipes', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'pipes'; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'pipes'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available|pending' } @@ -998,15 +998,15 @@ function runTests (mode) { }); it('ssv', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'ssv'; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'ssv'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available pending' } @@ -1016,15 +1016,15 @@ function runTests (mode) { }); it('tsv', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'tsv'; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'tsv'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - assert.deepEqual(api.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + .then(function (apiDef) { + assert.deepEqual(apiDef.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: { status: 'available\tpending' } @@ -1034,15 +1034,15 @@ function runTests (mode) { }); it('invalid', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'invalid'; + cOAIDoc.paths['/pet/findByStatus'].get.parameters[0].collectionFormat = 'invalid'; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get') + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get') .getParameter('status') .getValue({ query: { @@ -1062,9 +1062,9 @@ function runTests (mode) { var cParam; before(function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/available'] = { + cOAIDoc.paths['/pet/available'] = { parameters: [ { name: 'status', @@ -1075,15 +1075,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - cParam = api.getOperation('/pet/available', 'get').getParameter('status'); + .then(function (apiDef) { + cParam = apiDef.getOperation('/pet/available', 'get').getParameter('status'); }) .then(done, done); }); @@ -1126,11 +1126,11 @@ function runTests (mode) { var cParam; before(function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}/friends'] = { + cOAIDoc.paths['/pet/{petId}/friends'] = { parameters: [ - cSwagger.paths['/pet/{petId}'].parameters[0], + cOAIDoc.paths['/pet/{petId}'].parameters[0], { name: 'limit', in: 'query', @@ -1139,15 +1139,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - cParam = api.getOperation('/pet/{petId}/friends', 'get').getParameter('limit'); + .then(function (apiDef) { + cParam = apiDef.getOperation('/pet/{petId}/friends', 'get').getParameter('limit'); }) .then(done, done); }); @@ -1169,11 +1169,11 @@ function runTests (mode) { }); it('invalid request value', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}/friends'] = { + cOAIDoc.paths['/pet/{petId}/friends'] = { parameters: [ - cSwagger.paths['/pet/{petId}'].parameters[0], + cOAIDoc.paths['/pet/{petId}'].parameters[0], { name: 'limit', in: 'query', @@ -1182,15 +1182,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var paramValue = api + .then(function (apiDef) { + var paramValue = apiDef .getOperation('/pet/{petId}/friends', 'get') .getParameter('limit') .getValue({ @@ -1213,7 +1213,7 @@ function runTests (mode) { var cParam; before(function () { - cParam = swaggerApi.getOperation('/pet', 'post').getParameter('body'); + cParam = apiDefinition.getOperation('/pet', 'post').getParameter('body'); }); it('object request value', function () { @@ -1285,11 +1285,11 @@ function runTests (mode) { var cParam; before(function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}/friends'] = { + cOAIDoc.paths['/pet/{petId}/friends'] = { parameters: [ - cSwagger.paths['/pet/{petId}'].parameters[0], + cOAIDoc.paths['/pet/{petId}'].parameters[0], { name: 'limit', in: 'query', @@ -1298,15 +1298,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - cParam = api.getOperation('/pet/{petId}/friends', 'get').getParameter('limit'); + .then(function (apiDef) { + cParam = apiDef.getOperation('/pet/{petId}/friends', 'get').getParameter('limit'); }) .then(done, done); }); @@ -1327,11 +1327,11 @@ function runTests (mode) { }).value, 5.5); }); it('invalid request value', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}/friends'] = { + cOAIDoc.paths['/pet/{petId}/friends'] = { parameters: [ - cSwagger.paths['/pet/{petId}'].parameters[0], + cOAIDoc.paths['/pet/{petId}'].parameters[0], { name: 'limit', in: 'query', @@ -1340,15 +1340,15 @@ function runTests (mode) { } ], get: { - responses: cSwagger.paths['/pet/{petId}'].get.responses + responses: cOAIDoc.paths['/pet/{petId}'].get.responses } }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var paramValue = api + .then(function (apiDef) { + var paramValue = apiDef .getOperation('/pet/{petId}/friends', 'get') .getParameter('limit') .getValue({ @@ -1368,7 +1368,7 @@ function runTests (mode) { var cParam; before(function () { - cParam = swaggerApi.getOperation('/pet/{petId}', 'post').getParameter('name'); + cParam = apiDefinition.getOperation('/pet/{petId}', 'post').getParameter('name'); }); it('string request value', function () { @@ -1397,9 +1397,9 @@ function runTests (mode) { '2015-00-09', '2015-13-09', '2015-04-00', '2015-04-32', '10000-01-01']; before(function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].parameters.push({ + cOAIDoc.paths['/pet/{petId}'].parameters.push({ name: 'createdBefore', in: 'query', description: 'Find pets created before', @@ -1408,10 +1408,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - cParam = api.getOperation('/pet/{petId}', 'get').getParameter('createdBefore'); + .then(function (apiDef) { + cParam = apiDef.getOperation('/pet/{petId}', 'get').getParameter('createdBefore'); }) .then(done, done); }); @@ -1465,9 +1465,9 @@ function runTests (mode) { '2015-04-09T14:07:61-06:00', '2015-04-09T14:07:26-25:00', '2015-04-09T14:07:26+25:00']; before(function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet/{petId}'].parameters.push({ + cOAIDoc.paths['/pet/{petId}'].parameters.push({ name: 'createdBefore', in: 'query', description: 'Find pets created before', @@ -1476,10 +1476,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - cParam = api.getOperation('/pet/{petId}', 'get').getParameter('createdBefore'); + .then(function (apiDef) { + cParam = apiDef.getOperation('/pet/{petId}', 'get').getParameter('createdBefore'); }) .then(done, done); }); @@ -1525,17 +1525,17 @@ function runTests (mode) { }); it('invalid type', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema = { + cOAIDoc.paths['/pet'].post.parameters[0].schema = { type: 'invalid' }; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet', 'post').getParameter('body').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet', 'post').getParameter('body').getValue({ body: {} }); @@ -1548,15 +1548,15 @@ function runTests (mode) { }); it('missing type', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwagger.paths['/pet'].post.parameters[0].schema = {}; + cOAIDoc.paths['/pet'].post.parameters[0].schema = {}; Sway.create({ - definition: cSwagger + definition: cOAIDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet', 'post').getParameter('body').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet', 'post').getParameter('body').getValue({ body: {} }); @@ -1571,7 +1571,7 @@ function runTests (mode) { describe('validation', function () { it('missing required value (with default)', function () { - var paramValue = swaggerApi.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ + var paramValue = apiDefinition.getOperation('/pet/findByStatus', 'get').getParameter('status').getValue({ query: {} }); @@ -1581,7 +1581,7 @@ function runTests (mode) { }); it('missing required value (without default)', function () { - var paramValue = swaggerApi.getOperation('/pet/findByTags', 'get').getParameter('tags').getValue({ + var paramValue = apiDefinition.getOperation('/pet/findByTags', 'get').getParameter('tags').getValue({ query: {} }); var error = paramValue.error; @@ -1596,9 +1596,9 @@ function runTests (mode) { describe('provided empty value', function () { describe('integer', function () { it('allowEmptyValue false', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ allowEmptyValue: false, type: 'integer', format: 'int32', @@ -1607,10 +1607,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1625,9 +1625,9 @@ function runTests (mode) { }); it('allowEmptyValue true', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ type: 'integer', format: 'int32', name: 'limit', @@ -1636,10 +1636,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1655,9 +1655,9 @@ function runTests (mode) { describe('number', function () { it('allowEmptyValue false', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ allowEmptyValue: false, type: 'number', format: 'int32', @@ -1666,10 +1666,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1684,9 +1684,9 @@ function runTests (mode) { }); it('allowEmptyValue true', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ type: 'number', format: 'int32', name: 'limit', @@ -1695,10 +1695,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1714,9 +1714,9 @@ function runTests (mode) { describe('string', function () { it('allowEmptyValue false', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ allowEmptyValue: false, type: 'string', name: 'limit', @@ -1724,10 +1724,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1742,9 +1742,9 @@ function runTests (mode) { }); it('allowEmptyValue true', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var coaiDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/pet/findByStatus'].get.parameters.push({ + coaiDoc.paths['/pet/findByStatus'].get.parameters.push({ type: 'string', name: 'limit', in: 'query', @@ -1752,10 +1752,10 @@ function runTests (mode) { }); Sway.create({ - definition: cSwaggerDoc + definition: coaiDoc }) - .then(function (api) { - var paramValue = api.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ + .then(function (apiDef) { + var paramValue = apiDef.getOperation('/pet/findByStatus', 'get').getParameter('limit').getValue({ query: { limit: '' } @@ -1775,7 +1775,7 @@ function runTests (mode) { name: 'Sparky', photoUrls: [] }; - var paramValue = swaggerApi.getOperation('/pet', 'post').getParameter('body').getValue({ + var paramValue = apiDefinition.getOperation('/pet', 'post').getParameter('body').getValue({ body: pet }); @@ -1785,7 +1785,7 @@ function runTests (mode) { }); it('provided value fails JSON Schema validation', function () { - var paramValue = swaggerApi.getOperation('/pet', 'post').getParameter('body').getValue({ + var paramValue = apiDefinition.getOperation('/pet', 'post').getParameter('body').getValue({ body: {} }); var error = paramValue.error; diff --git a/test/test-path.js b/test/test-path.js index e3444742..e0815a4f 100644 --- a/test/test-path.js +++ b/test/test-path.js @@ -34,32 +34,32 @@ var Sway = tHelpers.getSway(); function runTests (mode) { var label = mode === 'with-refs' ? 'with' : 'without'; - var swaggerApi; + var apiDefinition; before(function (done) { - function callback (api) { - swaggerApi = api; + function callback (apiDef) { + apiDefinition = apiDef; done(); } if (mode === 'with-refs') { - tHelpers.getSwaggerApiRelativeRefs(callback); + tHelpers.getApiDefinitionRelativeRefs(callback); } else { - tHelpers.getSwaggerApi(callback); + tHelpers.getApiDefinition(callback); } }); - describe('should handle Swagger document ' + label + ' relative references', function () { + describe('should handle OpenAPI document ' + label + ' relative references', function () { it('should have proper structure', function () { var path = '/pet/{petId}'; - var pathObject = swaggerApi.getOperation(path, 'get').pathObject; + var pathObject = apiDefinition.getOperation(path, 'get').pathObject; - assert.deepEqual(pathObject.api, swaggerApi); + assert.deepEqual(pathObject.apiDefinition, apiDefinition); assert.equal(pathObject.path, path); assert.equal(pathObject.ptr, JsonRefs.pathToPtr(['paths', path])); - assert.deepEqual(pathObject.definition, swaggerApi.definitionRemotesResolved.paths[path]); - assert.deepEqual(pathObject.definitionFullyResolved, swaggerApi.definitionFullyResolved.paths[path]); + assert.deepEqual(pathObject.definition, apiDefinition.definitionRemotesResolved.paths[path]); + assert.deepEqual(pathObject.definitionFullyResolved, apiDefinition.definitionFullyResolved.paths[path]); // Make sure they are of the proper type assert.ok(pathObject.regexp instanceof RegExp); @@ -69,70 +69,70 @@ function runTests (mode) { assert.equal('petId', pathObject.regexp.keys[0].name); // Make sure they match the expected URLs - assert.ok(_.isArray(pathObject.regexp.exec(swaggerApi.definitionFullyResolved.basePath + '/pet/1'))); - assert.ok(!_.isArray(pathObject.regexp.exec(swaggerApi.definitionFullyResolved.basePath + '/pets/1'))); - assert.ok(!_.isArray(pathObject.regexp.exec(swaggerApi.definitionFullyResolved.basePath + '/Pet/1'))); + assert.ok(_.isArray(pathObject.regexp.exec(apiDefinition.definitionFullyResolved.basePath + '/pet/1'))); + assert.ok(!_.isArray(pathObject.regexp.exec(apiDefinition.definitionFullyResolved.basePath + '/pets/1'))); + assert.ok(!_.isArray(pathObject.regexp.exec(apiDefinition.definitionFullyResolved.basePath + '/Pet/1'))); }); describe('#getOperation', function () { it('should return the expected operation', function () { // By method - tHelpers.checkType(swaggerApi.getPath('/pet/{petId}').getOperation('get'), 'Operation'); + tHelpers.checkType(apiDefinition.getPath('/pet/{petId}').getOperation('get'), 'Operation'); // By operationId - tHelpers.checkType(swaggerApi.getPath('/pet').getOperation('addPet'), 'Operation'); + tHelpers.checkType(apiDefinition.getPath('/pet').getOperation('addPet'), 'Operation'); }); it('should return no operation for the missing method', function () { - assert.ok(_.isUndefined(swaggerApi.getPath('/pet/{petId}').getOperation('head'))); + assert.ok(_.isUndefined(apiDefinition.getPath('/pet/{petId}').getOperation('head'))); }); }); describe('#getOperations', function () { it('should return the expected operations', function () { - assert.equal(swaggerApi.getPath('/pet/{petId}').getOperations().length, 3); + assert.equal(apiDefinition.getPath('/pet/{petId}').getOperations().length, 3); }); it('should return no operations', function (done) { - var cSwagger = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var path = '/petz'; - cSwagger.paths[path] = {}; + cOAIDoc.paths[path] = {}; Sway.create({ - definition: cSwagger - }).then(function (api) { - assert.equal(api.getPath(path).getOperations().length, 0); + definition: cOAIDoc + }).then(function (apiDef) { + assert.equal(apiDef.getPath(path).getOperations().length, 0); }).then(done, done); }); }); describe('#getOperationsByTag', function () { it('should return the expected operations', function () { - assert.equal(swaggerApi.getPath('/pet/{petId}').getOperationsByTag('pet').length, 3); + assert.equal(apiDefinition.getPath('/pet/{petId}').getOperationsByTag('pet').length, 3); }); it('should return no operations', function () { - assert.equal(swaggerApi.getPath('/pet/{petId}').getOperationsByTag('petz').length, 0); + assert.equal(apiDefinition.getPath('/pet/{petId}').getOperationsByTag('petz').length, 0); }); }); describe('#getParameters', function () { it('should return the expected parameters', function () { - var parameters = swaggerApi.getPath('/pet/{petId}').getParameters(); + var parameters = apiDefinition.getPath('/pet/{petId}').getParameters(); assert.equal(parameters.length, 1); }); it('should return no parameters', function () { - assert.equal(swaggerApi.getPath('/pet').getParameters().length, 0); + assert.equal(apiDefinition.getPath('/pet').getParameters().length, 0); }); }); }); } describe('Path', function () { - // Swagger document without references + // OpenAPI document without references runTests('no-refs'); - // Swagger document with references + // OpenAPI document with references runTests('with-refs'); }); diff --git a/test/test-response.js b/test/test-response.js index c7818b5f..33d2c067 100644 --- a/test/test-response.js +++ b/test/test-response.js @@ -35,23 +35,23 @@ var YAML = require('js-yaml'); function runTests (mode) { var label = mode === 'with-refs' ? 'with' : 'without'; - var swaggerApi; + var apiDefinition; before(function (done) { - function callback (api) { - swaggerApi = api; + function callback (apiDef) { + apiDefinition = apiDef; done(); } if (mode === 'with-refs') { - tHelpers.getSwaggerApiRelativeRefs(callback); + tHelpers.getApiDefinitionRelativeRefs(callback); } else { - tHelpers.getSwaggerApi(callback); + tHelpers.getApiDefinition(callback); } }); - describe('should handle Swagger document ' + label + ' relative references', function () { + describe('should handle OpenAPI document ' + label + ' relative references', function () { describe('#getExample', function () { var example = { name: 'Sparky', @@ -66,27 +66,27 @@ function runTests (mode) { var operation; before(function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var examples = { 'application/json': example, 'application/x-yaml': example, 'application/xml': exampleXML }; - cSwaggerDoc.paths['/pet/{petId}'].get.responses.default = { + cOAIDoc.paths['/pet/{petId}'].get.responses.default = { description: 'Some description', schema: { $ref: '#/definitions/Pet' }, examples: examples }; - cSwaggerDoc.paths['/pet/{petId}'].get.responses['200'].examples = examples; + cOAIDoc.paths['/pet/{petId}'].get.responses['200'].examples = examples; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - operation = api.getOperation('/pet/{petId}', 'get'); + .then(function (apiDef) { + operation = apiDef.getOperation('/pet/{petId}', 'get'); }) .then(done, done); }); @@ -111,14 +111,14 @@ function runTests (mode) { describe('#getSample', function () { it('should return sample for default response when no code is provided', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation('/user', 'post').getResponse().getSample())); + assert.ok(_.isUndefined(apiDefinition.getOperation('/user', 'post').getResponse().getSample())); }); it('should return sample for the requested response code', function () { - var operation = swaggerApi.getOperation('/pet/{petId}', 'get'); + var operation = apiDefinition.getOperation('/pet/{petId}', 'get'); try { - sHelpers.validateAgainstSchema(tHelpers.swaggerDocValidator, + sHelpers.validateAgainstSchema(tHelpers.oaiDocValidator, operation.getResponse(200).definition.schema, operation.getResponse(200).getSample()); } catch (err) { @@ -127,22 +127,22 @@ function runTests (mode) { }); it('should return undefined for void response', function () { - assert.ok(_.isUndefined(swaggerApi.getOperation('/pet', 'post').getResponse(405).getSample())); + assert.ok(_.isUndefined(apiDefinition.getOperation('/pet', 'post').getResponse(405).getSample())); }); it('should handle parameter with file type (Issue 159)', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var cPath = '/pet/{petId}/uploadImage'; - cSwaggerDoc.paths[cPath].post.responses['200'].schema = { + cOAIDoc.paths[cPath].post.responses['200'].schema = { type: 'file' }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - assert.ok(_.isString(api.getOperation(cPath,'post').getResponse(200).getSample())); + .then(function (apiDef) { + assert.ok(_.isString(apiDef.getOperation(cPath,'post').getResponse(200).getSample())); }) .then(done, done); }); @@ -159,16 +159,16 @@ function runTests (mode) { var cSway; before(function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); // Schemas are added so they don't get recognized as void responses - cSwaggerDoc.paths['/pet/{petId}'].delete.responses['204'] = { + cOAIDoc.paths['/pet/{petId}'].delete.responses['204'] = { description: 'Successfully deleted', schema: { type: 'string' } }; - cSwaggerDoc.paths['/pet/{petId}'].get.responses['304'] = { + cOAIDoc.paths['/pet/{petId}'].get.responses['304'] = { description: 'Cached response', schema: { type: 'string' @@ -176,17 +176,17 @@ function runTests (mode) { }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - cSway = api; + .then(function (apiDef) { + cSway = apiDef; }) .then(done, done); }); describe('unsupported value', function () { it('should return an error for a provided value', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'get').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'get').validateResponse({ body: validPet, headers: { 'content-type': 'application/x-yaml' @@ -206,7 +206,7 @@ function runTests (mode) { }); it('should not return an error for a void response', function () { - var results = swaggerApi.getOperation('/user', 'post').validateResponse({ + var results = apiDefinition.getOperation('/user', 'post').validateResponse({ headers: { 'content-type': 'application/x-yaml' } @@ -244,7 +244,7 @@ function runTests (mode) { }); it('should not return an error for a supported value', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'get').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'get').validateResponse({ body: validPet, headers: { 'content-type': 'application/json' @@ -258,7 +258,7 @@ function runTests (mode) { describe('undefined value', function () { it('should return an error when not a void/204/304 response', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'get').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'get').validateResponse({ body: validPet, statusCode: 200 }); @@ -303,18 +303,18 @@ function runTests (mode) { }); it('should not return an INVALID_CONENT_TYPE error for empty body (Issue 164)', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/user'].post.produces = ['application/xml']; - cSwaggerDoc.paths['/user'].post.responses.default.schema = { + cOAIDoc.paths['/user'].post.produces = ['application/xml']; + cOAIDoc.paths['/user'].post.responses.default.schema = { type: 'object' }; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/user', 'post').validateResponse({ + .then(function (apiDef) { + var results = apiDef.getOperation('/user', 'post').validateResponse({ headers: { 'Content-Type': 'application/json' } @@ -344,20 +344,20 @@ function runTests (mode) { // We only need one test to make sure that we're using the global produces it('should handle global level produces', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.produces = [ + cOAIDoc.produces = [ 'application/json', 'application/xml' ]; - delete cSwaggerDoc.paths['/pet/{petId}'].get.produces; + delete cOAIDoc.paths['/pet/{petId}'].get.produces; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/pet/{petId}', 'get').validateResponse({ + .then(function (apiDef) { + var results = apiDef.getOperation('/pet/{petId}', 'get').validateResponse({ body: validPet, headers: { 'content-type': 'application/x-yaml' @@ -379,16 +379,16 @@ function runTests (mode) { }); it('should handle mime-type parameters (exact match)', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); var mimeType = 'application/x-yaml; charset=utf-8'; - cSwaggerDoc.paths['/pet/{petId}'].get.produces.push(mimeType); + cOAIDoc.paths['/pet/{petId}'].get.produces.push(mimeType); Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/pet/{petId}', 'get').validateResponse({ + .then(function (apiDef) { + var results = apiDef.getOperation('/pet/{petId}', 'get').validateResponse({ body: validPet, headers: { 'content-type': mimeType @@ -405,15 +405,15 @@ function runTests (mode) { describe('validate headers', function () { it('should return errors for invalid headers (schema)', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/user/login'].get.responses['200'].headers['X-Rate-Limit'].maximum = 5; + cOAIDoc.paths['/user/login'].get.responses['200'].headers['X-Rate-Limit'].maximum = 5; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { - var results = api.getOperation('/user/login', 'get').validateResponse({ + .then(function (apiDef) { + var results = apiDef.getOperation('/user/login', 'get').validateResponse({ body: 'OK', headers: { 'content-type': 'application/json', @@ -445,7 +445,7 @@ function runTests (mode) { }); it('should return errors for invalid headers (type)', function () { - var results = swaggerApi.getOperation('/user/login', 'get').validateResponse({ + var results = apiDefinition.getOperation('/user/login', 'get').validateResponse({ body: 'OK', headers: { 'content-type': 'application/json', @@ -487,7 +487,7 @@ function runTests (mode) { }); it('should not return errors for valid headers', function () { - var results = swaggerApi.getOperation('/user/login', 'get').validateResponse({ + var results = apiDefinition.getOperation('/user/login', 'get').validateResponse({ body: 'OK', headers: { 'content-type': 'application/json', @@ -505,7 +505,7 @@ function runTests (mode) { describe('validate body', function () { describe('should not return an error for a valid response body', function () { it('empty body for void response', function () { - var results = swaggerApi.getOperation('/pet', 'post').validateResponse({ + var results = apiDefinition.getOperation('/pet', 'post').validateResponse({ statusCode: 405 }); @@ -514,7 +514,7 @@ function runTests (mode) { }); it('non-empty body for void response', function () { - var results = swaggerApi.getOperation('/pet', 'post').validateResponse({ + var results = apiDefinition.getOperation('/pet', 'post').validateResponse({ body: 'Bad Request', statusCode: 405 }); @@ -524,7 +524,7 @@ function runTests (mode) { }); it('primitive body', function () { - var results = swaggerApi.getOperation('/user/login', 'get').validateResponse({ + var results = apiDefinition.getOperation('/user/login', 'get').validateResponse({ body: 'OK', headers: { 'content-type': 'application/json', @@ -539,7 +539,7 @@ function runTests (mode) { }); it('complex body', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'get').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'get').validateResponse({ body: { name: 'First Pet', photoUrls: [] @@ -565,7 +565,7 @@ function runTests (mode) { value = 'OK'; } - results = swaggerApi.getOperation('/user/login', 'get').validateResponse({ + results = apiDefinition.getOperation('/user/login', 'get').validateResponse({ body: value, headers: { 'content-type': 'application/json' @@ -580,7 +580,7 @@ function runTests (mode) { describe('should return an error for an invalid response body', function () { it('primitive body', function () { - var results = swaggerApi.getOperation('/user/login', 'get').validateResponse({ + var results = apiDefinition.getOperation('/user/login', 'get').validateResponse({ body: {}, headers: { 'content-type': 'application/json', @@ -608,7 +608,7 @@ function runTests (mode) { }); it('complex body', function () { - var results = swaggerApi.getOperation('/pet/{petId}', 'get').validateResponse({ + var results = apiDefinition.getOperation('/pet/{petId}', 'get').validateResponse({ body: {}, headers: { 'content-type': 'application/json' @@ -641,14 +641,14 @@ function runTests (mode) { }); it('Buffer body', function (done) { - var cSwaggerDoc = _.cloneDeep(tHelpers.swaggerDoc); + var cOAIDoc = _.cloneDeep(tHelpers.oaiDoc); - cSwaggerDoc.paths['/user/login'].get.responses['200'].schema.minLength = 3; + cOAIDoc.paths['/user/login'].get.responses['200'].schema.minLength = 3; Sway.create({ - definition: cSwaggerDoc + definition: cOAIDoc }) - .then(function (api) { + .then(function (apiDef) { var results; var value; @@ -659,7 +659,7 @@ function runTests (mode) { value = 'OK'; } - results = api.getOperation('/user/login', 'get').validateResponse({ + results = apiDef.getOperation('/user/login', 'get').validateResponse({ body: value, encoding: 'utf-8', headers: { @@ -694,8 +694,8 @@ function runTests (mode) { } describe('Response', function () { - // Swagger document without references + // OpenAPI document without references runTests('no-refs'); - // Swagger document with references + // OpenAPI document with references runTests('with-refs'); }); diff --git a/test/test-sway.js b/test/test-sway.js index 4ec0fe78..7ba1871b 100644 --- a/test/test-sway.js +++ b/test/test-sway.js @@ -48,9 +48,9 @@ var invalidCreateScenarios = [ describe('sway', function () { describe('sway#create', function () { - function validateCreateSwaggerApi (options) { + function validateCreateApiDefinition (options) { return function (theApi) { - assert.deepEqual(theApi.definition, helpers.swaggerDoc); + assert.deepEqual(theApi.definition, helpers.oaiDoc); assert.equal(theApi.documentationUrl, 'https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md'); assert.deepEqual(theApi.options, options); @@ -61,8 +61,8 @@ describe('sway', function () { assert.ok(!_.has(details, 'missing')); }); - // Validate the merging of the Swagger definition properties and the SwaggerApi properties - _.forEach(helpers.swaggerDoc, function (val, key) { + // Validate the merging of the OpenAPI definition properties and the OpenAPI properties + _.forEach(helpers.oaiDoc, function (val, key) { assert.deepEqual(theApi[key], val); }); @@ -70,17 +70,17 @@ describe('sway', function () { assert.ok(_.isArray(theApi.pathObjects)); assert.ok(theApi.pathObjects.length > 0); - // Validate the registration of customValidator on SwaggerApi + // Validate the registration of customValidator on ApiDefinition assert.deepEqual(theApi.customValidators, options.customValidators || []) }; } it('should always return a promise', function () { assert.ok(Sway.create({ - definition: helpers.swaggerDoc + definition: helpers.oaiDoc }) instanceof Promise); assert.ok(Sway.create({ - definition: helpers.swaggerDoc + definition: helpers.oaiDoc }, function () {}) instanceof Promise); }); @@ -113,27 +113,27 @@ describe('sway', function () { it('should handle definition object', function (done) { var options = { - definition: helpers.swaggerDoc + definition: helpers.oaiDoc }; Sway.create(options) - .then(validateCreateSwaggerApi(options)) + .then(validateCreateApiDefinition(options)) .then(done, done); }); it('should handle definition file location', function (done) { var options = { - definition: helpers.swaggerDocPath + definition: helpers.oaiDocPath }; Sway.create(options) - .then(validateCreateSwaggerApi(options)) + .then(validateCreateApiDefinition(options)) .then(done, done); }); it('should register customValidators', function (done) { var options = { - definition: helpers.swaggerDoc, + definition: helpers.oaiDoc, customValidators: [ function validator1 () { return { @@ -145,7 +145,7 @@ describe('sway', function () { }; Sway.create(options) - .then(validateCreateSwaggerApi(options)) + .then(validateCreateApiDefinition(options)) .then(done, done); });